diff --git a/examples/Multiple turbine and multiple local conditions implementations developement .ipynb b/examples/Multiple turbine and multiple local conditions implementations developement .ipynb new file mode 100644 index 0000000..aa899a2 --- /dev/null +++ b/examples/Multiple turbine and multiple local conditions implementations developement .ipynb @@ -0,0 +1,375 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "import numpy as np\n", + "from IPython.display import HTML, Latex, Markdown, Pretty\n", + "\n", + "from windIO.Plant import WTLayout\n", + "from fusedwake.WindFarm import WindFarm\n", + "\n", + "from fusedwake.gcl import GCL\n", + "import fusedwake.gcl.fortran as fgcl\n", + "\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#filename = 'middelgrunden.yml'\n", + "#filename = 'lillgrund.yml'\n", + "filename = 'hornsrev.yml'\n", + "#filename = 'test_WF.yml'\n", + "\n", + "#wtl = WTLayout(filename)\n", + "wf = WindFarm(yml=filename)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "gcl = GCL(WF=wf, TI=0.1, z0=1e-10)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Inputs\n", + "WS=10.0*np.ones([wf.nWT])\n", + "WD=270*np.ones([wf.nWT])\n", + "TI=0.1*np.ones([wf.nWT])\n", + "version = 'fort_gclm_s' # \n", + "\n", + "# Run the models\n", + "gcl(WS=WS, WD=WD, TI=TI, version='fort_gclm_s')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "53223432.296349496" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gcl(WS=WS, WD=WD, TI=TI).p_wt.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Inputs\n", + "WS=10.0+np.random.normal(loc=0.0, scale=0.25, size=[wf.nWT])#np.ones([wf.nWT])\n", + "WD=270+np.random.normal(loc=0.0, scale=5, size=[wf.nWT])#np.ones([wf.nWT])\n", + "TI=0.1+np.random.normal(loc=0.0, scale=0.01, size=[wf.nWT])#*np.ones([wf.nWT])\n", + "version = 'fort_gclm_s' # \n", + "\n", + "# Run the models\n", + "fort_gclm_s = gcl(WS=WS, WD=WD, TI=TI, version='fort_gclm_s')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "70132996.399100527" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fort_gclm_s.p_wt.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nwNHnr6vhxHEmjBmBPXo7Q+n3jjSI2UeMHDEMU9Mp6mtO90hrrKvB0FDFmFH244Pz58/n2WefZfz4\n8d3md/v4+DA8IYljWTlYrdZuZSwmM+Xb9zJp+CiH5y5PunocTeVH0LU090g7faIcZ0sH8+bNZfHi\nxYiiaHtlZWUB2MT2888/Z8CAARw5coSoqChCgjwoO3qwx+CXwdBJ2dFcpk2dYDeWq9FoLhrjnT51\nAuWl+ej1Hd3SRFHk2NFDBPq7Ojw9LzUlBbc2E6dLj/VIa29uoWl/CZPH2t2r5KJoNBomjR3D0bw9\nmE2mbmlWq5XSgn1kJMZ3G+O4FEaNHI6pvpoGe35VewZTbTWjR3YXRZlMRmRkJIWFheTm5tLe3k5N\nTQ27du1i7Nix+Pj4MCR5ACX5e3v6ldnM0bzdTBwz2u4NLDMzE51OR1FREZ999hn333+/LTQ1+epx\nNJUW2fer48dwNnaSmmr/pvpbc6UOYkrTCPuQ48eP884HizAqnPHw7WrdtdSfQm5s4747bnOopXwO\no9HIoiWfk3+yHKfwYDSuLnS2tKIvr2RMUgo3XDu7V4sk9u/fz0dLvkLm7oObbwAWs5nWM9W4yy08\ndM+dtlksP2XTpk22xUQuLi64uroSFxeHXC6nra2N9977iMrqZjw8g1GrNbS2NqJrPcXMGVczfvzV\nDk8hE0WRH3/8kW9WbULrHoibmzdGo4GmhkqC/F259547cHd3/2VDP6Gmpoa3Fn1Io9KKS3gQcoWC\nttO1iNX1zP3DHNIGD3bYptVqZcU337B1bx5a/xCc3TzQd+jQnakkKSqUebfdivpsiM0RysvLeeej\nTzCqXXDz65qf3VpbjdKg4/55f3JosPkcBoOBTz77gv1HK3DtF4JG60J7WzMdZ6rIzEhhzuxrezVn\nOz+/gI+XfYXMyxdXvwAsFjO6U9V4yKw8dNed+Pv7O2zzl+iLaYR3LHB8GuFH83/7aYSSgPcxBoOB\n/fv3U1RyFFEUiY+JJiUl5aLd8UtBFEVOnjxJdn4eTW2t+Hl6MSQtnX79+l1WXXU6Hbl5eRyrOIlC\nLmdg4gASEhJ6vTAEukTs6NGj5OUfoLOjk6CgADIy0i87ttnY2Eh2dg7Vp87gpNGQmjqQmJiYy1oY\nYjabKSoqoqDwMEazieiQMNLT0nBxcbmsup45c4Z92bnUNjbg4epC+uDBhIWFXdb8Z71ez/79+zly\n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\nKxQKRRfl/wFtSmlMSkC8fwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "plt.scatter(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=2.*np.array(wf.R),\n", + " c=WS,\n", + " alpha=0.5,\n", + " cmap=plt.cm.viridis,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " #ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i])\n", + " ax.arrow(x=wf.xyz[0,i],\n", + " y=wf.xyz[1,i],\n", + " dx=wf.R[1]*WS[i]*np.cos(np.deg2rad(270-WD[i])),\n", + " dy=wf.R[1]*WS[i]*np.sin(np.deg2rad(270-WD[i])),\n", + " head_length=3*wf.R[1],head_width=wf.R[1],\n", + " length_includes_head=True,\n", + " fc='k',ec='k',\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n+DBxcXFMnjyZuLg4AgICWLly5Tnn60svvcTEiROJiYlh4cKFNDc3O+VdrVixgujoaKeVq3PC0oOj\nC0TEDDwMfA0cAt4XkWyl1P1KqUW2NDnAV8ABIBlYLSJZZ/RPRFzusLr188VsNkt4eLjk5eVJc3Oz\nxMbGSlZWlsydO1e++uorERHZtGmTzJw50yG7O3bskPT0dImOjm4NO1ebJSUlkp6eLiIiNTU1Mm7c\nOKf4WldXJyIiJpNJkpKSJDk5+ZxtiogsX75cFi5cKNdee62InPvnFxEJCwuT8vLydmHOsHvXXXfJ\nG2+8ISIiRqNRKisrnWJXxFrGhg8fLgUFBedks6ioSMLCwqSpqUlERG6++WZZu3btOfuZmZkp0dHR\n0tjYKCaTSebMmSO5ubk9smvTi3PSmyfvWePwca7PdeTQbdR9hIhQUVGB0WgkJyeHsWPHtu7EvWDB\nAj777DMMBgNVVVUAVFZWEhTUsbO4Mw0NDVRXV+Pp6cmMGTPIz28/cL8nNi0WC+Xl5VgsFgYNGtS6\ncayvry/jx4+nuLi4R3Zra2upra3Fx8cHPz8/wFq7NplMGAyGHtk0mUyUl5ejlKK+vp5Nmzbxxz/+\nkeXLl/f484O1ttvQ0IC/vz8igsXSvgrVE7vNzc1UVFTg7u6Ou7s7O3bsYO3atQC4u7sTEBDgsN22\n5SogIKB14+AtW7YQHh5OcHBwj8tVVVUVVVVVmM1m6urqMBgM1NfXExQUdM7l6uDBgyQlJeHl5QXA\nxRdfzMcff9zj93XOuPhaH3ZtxdXX/Ny24jpw4ADbt39GbW0B3t4GUlLyKC018fHHn+Ln58e7775L\namoqixcv5vLLL2/9Fd21axfBwcFd2qysrOTzr75kd2Y6eHtibmombPBwpkRG88QTT3DgwAEAcnJy\n7LYpIuxK3s2X32+lwliHcnPDo9nCZYkzmHPZbEpKSpg5cyaZmZmcOHHCbrslJSV8vmkz6Yd+wODh\nhbm5kQljR/P3VSspLCzkoYceYsmSJQ75ajKZ2Prtt2z57l80GgUEvtn0Mb954nHGjAnnpZdeYsOG\nDQ7ZBDh69Cifb9jMkcN5uLt7YbY08/4Haxk+fBheXl4sWrSI++67zyG79fX1fLX5a3Z8n4yY3DBb\nTJgsDWzf+S0JCQlkZGQQHx/PihUryM/Pt9tuRkYGX3y6iZK8k7gZ3BB3CxdeOo0rr76Sxx57jClT\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "plt.scatter(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=2.*np.array(wf.R),\n", + " c=fort_gclm_s.p_wt/1e6,\n", + " alpha=0.5,\n", + " cmap=plt.cm.viridis,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nPzK0c9doNNc8V+NTNdq5azSaa56j5T/O1Swvh3buGo3mmsdyFXbdtXPXaDTXPNf8HqoajUZzNaKX\nH9BoNJqrkKtxKqTerEOj0VzzWK7gaAsRmSgiJ0QkXUSeaiV/kIikiEidiPz2krz3RCRfRA63of07\nEbGISLs7uWjnrtFornmUEruP1hARB+B14BYgGrhbRAZfUqwYeAx4tRWJxda6rWmHAOOBTFuuSTt3\njUZzzdOJ2+wNB04ppTKVUvXAR8DUpgWUUkVKqf1Ai41plVI7gdI2tOcDv7f1mnTMXaPRXPN0Ysw9\nGLjQ5H0WDQ6/Q4jIFOCCUuqIrTuK6Z57J7Bx40YGDx5MREQEc+fOBeC5555jyJAhxMfHM3HiRPLy\n8uzSnD17NgEBAcTFxTWmdVQzKyuLsWPHEh0dTWxsLK+99lqHdQ0GA8nJycTHxxMbG8sLL7zQKbZC\nwz6j8fHxTJkypdM0w8LCGjWGDx/eabrl5eVMnz6dyMhIoqOj2bNnT4d009PTiY+PJyEhgfj4eHx9\nfVm4cGGHbZ0/fz4xMTHExcVxzz33YDAYOuX6FyxYQGxsLLGxsSxcuBDonM/1v4VF2X/8txARd+AZ\n4Pmmye1WVEp1uaPBrB8HZrNZhYeHq4yMDGU0GtWQIUPU8ePHVWVlZWOZhQsXql/+8pd26e7YsUOl\npqaq2NjYxrSOaubm5qrU1NRGrYiIiE6xtbq6WimllMlkUsnJyWrPnj0d1lRKqXnz5ql77rlHTZ48\nudHmjmr269dPlZSUNEvrDN37779fLVq0SCmlVH19vSovL+8UXaUa2ljv3r3V+fPnO6SZnZ2t+vXr\npwwGg1JKqZ/+9Kfq/fff77CdR48eVbGxsaqurk6ZTCY1fvx4debMmU67/vaw+osO+ZvHvn2j3WPa\nP59Qwx+a1Hi0dl5gBLCxyfungafaOO/zwG9bSe8LHG7yPgbIA84C54B6IAPodbnr0mGZK8BisZCT\nk4PJZOLs2bMMHDiQvn37AjBjxgzWrFnDU099N0heXV1t00bSZWVllJaW4u7uzg033MD58+eb5Xt5\nedmtWV9fT25uLkopAgICCAwMbNSKjIwkOzubwYO/G++xVbewsJCqqiq8vb3x9/cHGnrxJpMJEbki\nW2traykoKEBEMJvNbNiwgWeffZZ58+Zd8fUrpcjLy6Ouro5u3bqhlMJiaT7X4Up0KysrKS4uxtnZ\n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\nsosAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "plt.scatter(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=2.*np.array(wf.R),\n", + " c=TI,\n", + " alpha=0.5,\n", + " cmap=plt.cm.viridis,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i])" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "WD = np.arange(-50,50)+270\n", + "WS = 8." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "P_rat_py_v0 = []\n", + "P_rat_py_v1 = []\n", + "P_rat_fgcl = []\n", + "P_rat_fgclm = []\n", + "P_rat_fgclm_rdn = []\n", + "for wd in WD:\n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='py_gcl_v0')\n", + " P_rat_py_v0 = np.append(P_rat_py_v0,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='py_gcl_v1')\n", + " P_rat_py_v1 = np.append(P_rat_py_v1,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS, WD=wd, TI=0.1, version='fort_gcl')\n", + " P_rat_fgcl = np.append(P_rat_fgcl,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1**np.ones([wf.nWT]), version='fort_gclm_s')\n", + " P_rat_fgclm = np.append(P_rat_fgclm,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd+np.random.normal(loc=0.0, scale=2, size=[wf.nWT]), \n", + " TI=0.1**np.ones([wf.nWT]), version='fort_gclm_s')\n", + " P_rat_fgclm_rdn = np.append(P_rat_fgclm_rdn,out.p_wt[1]/out.p_wt[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nna2XX35ZknTkyBHdc8896tu3r1JSUnTWWWdp69attapzzZo1SktLOyacPfPMMzrjjDOir3vVVVfp\ntNNOU0pKin71q19p0aJFdV2OmFGbI11DJW1y9yJ3PyhphaQfHNdngKSXJcndN0jqZWZdzCxZ0nB3\nXxTZd8jdP2u88gEAiE3Lli3T6tWrVVhYqA0bNuiuu+7SlClTtHTp0mifF154Qenp6RoyZEiV86xf\nv17Tp0/X8uXLtX37du3bt0/btm2L7v/d736nJ554Qi+++KL27dunRx55RG3btq1VjUOHDlX79u2j\nAU6Sli9friuuuEKSVFBQcExtQ4YM0a5du/Tpp5/Weh1iSW1CVw9JxRW2SyJtFb0jaawkmdlQST0l\nZUjKlvSJmS0ys7+b2UNmltjwsgEAiG3XXnut0tPT1aFDB82aNUsrVqzQpEmTtGrVKpWWlkqSHnvs\nMf30pz+tdp6nn35al112mc4991zFx8frzjvvPGb/woULdffdd6tv376SpMGDB6tjx461rnP8+PFa\ntmyZJGn//v1atWqVJkyYIEkqLS1VSkpKtG9ycrLcXfv376/1/LGksS6kny2po5n9XdJ0SWslHVb5\nzwx9S9J/uPu3JH0u6eZGek0AAJqMWcMfDZGRkRF9npWVpW3btql79+4aNmyYnn76ae3bt09//OMf\no0eVqrJt2zZlZmZGtxMTE5WamhrdLi4uVu/evetd58SJE/XMM8/o4MGDWrlypb797W9Ha2/fvr0+\n++zrE1z79u2TmSkpKaner9ea1ea3F7eq/MjVURmRtih33y/pyqPbZvahpA8ktZNU7O5vRXY9Jekb\nF+IflZeXF32ek5OjnJycWpQHAEDja+5fCSou/vokU1FRkdLT0yVJU6ZM0cMPP6yDBw/qvPPOU1pa\nWrXzpKWlaePGjdHtsrIy7d69O7qdmZmpwsJCDRgwoLLhNerfv7+ysrK0atUqLV++XBMnTozuGzhw\noN555x395Cc/kSS9/fbb6tatW52OpLUU+fn5ys/Pb9gk7l7tQ9JJkjZLypKUIOltSf2P65Mi6eTI\n83+W9GiFfX+W1C/y/HZJv6nidRwAgBBa+t+cXr16+emnn+4lJSW+e/duP//88/3WW291d/eysjLv\n2LGjDx482JcuXVrjXAUFBZ6cnOyvv/66f/XVV37jjTd6QkKCv/TSS+7uPnfuXB8yZIhv2rTJ3d3X\n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\nLVumpKQkJScnRx9JSUkaPHiwJOnZZ59Venq6MjIyVFhYqBUrVtSpnkGDBn1j7uTkZC1fvrz+b/IE\nxOlFAMB8aO6DAAAVyUlEQVQJp6WfXkTLwelFAACAVobQBQAAEAChCwAAIABCFwAAQACELgAAgAAI\nXQAAtDAbN27UmWeeqZSUFC1YsKC5y/mGO+64Qz/96U+bu4xWh9AFAEALM2fOHI0YMUL79u3TNddc\nU6exixcv1vDhw5uosq/V9ieC8DVCFwAALUxRUZEGDhxY53GHDx+WuxOIWihCFwAAlcnPb5bxI0eO\n1CuvvKLp06crOTlZ69at0+TJk9W1a1dlZ2fr7rvvjvZdvHixzj//fM2YMUOdO3fW+PHjNW3aNL3+\n+utKSko65senK7Nnzx6NGTNGKSkpOvvss3Xbbbcdc5SsoKBAo0aNUmpqqtLS0jR79ux6vSeUI3QB\nAFCZZgpdL730koYPH677779fn332mX77299q//792rJli/Lz87VkyRItWrQo2v+NN95Q3759tWvX\nLj322GN64IEHdO6552r//v3as2dPta+Vm5urpKQk7dq1S48++qgWL14cPUpWWlqqiy66SJdccom2\nb9+uzZs3a+TIkfV6TygX39wFAACAb3J3HTlyRE888YTWrVuntm3bKisrSzfccIOWLl2qqVOnSpJ6\n9Oih3NxcSVKbNm1qPf+RI0e0cuVKrV+/Xm3atFH//v01ZcoU/fnPf5ZU/iPZaWlpuv766yVJCQkJ\nOuussxr5XZ5YCF0AAByVn//1Eao77ih/HO/226W8vG+25+VV3l+ScnLKH3X0ySef6NChQ+rZs2e0\nLSsrS1u3bo1uZ2Zm1nleSfr44491+PBhZWRkVDpXcXGx+vTpU6+5UTlCFwAARx0fjioLV1XJyzu2\n//Hb9dC5c2fFx8erqKhIp512mqTyi+x79OgR7XP8RfO1vYi+S5cuio+PV0lJifr27SupPGgdlZmZ\nqRUrVjSofhyLa7oAAGih4uLiNG7cOM2aNUulpaUqKirSvffeW+09srp166aSkhIdPHiwxrnHjh2r\nvLw8lZWV6f3339eSJUui+7///e9rx44dmjdvnr766iuVlpZqzZo1jfbeTkSELgAAKlOP04GNNb7i\n0ar58+erbdu26t27ty644AJNmjQpej1XZUaMGKGBAweqe/fu6tq1a7WvM3/+fO3du1dpaWmaMmWK\nJk6cGL0urH379lq9erWee+45de/eXf369VN+Q79ccIIzd2/uGiRJZuYtpRYAQGwzM/E355tuvvlm\n7dy585hvR57oqvqsRNrrdEM0jnQBAHCC2rBhg959911J0po1a7Rw4UKNHTu2mauKXVxIDwBADBs0\naJA++uij6PbRO9Y/+OCDOvXUUzVhwgRt375d3bp108yZMzVmzJhmrDa2cXoRAHDC4fQiaovTiwAA\nAK0MoQsAACAAQhcAAEAAhC4AAIAACF0AAAABELoAAGhhNm7cqDPPPFMpKSlasGBBc5fzDXfccUe1\nP0WEyhG6AABoYebMmaMRI0Zo3759uuaaa+o0dvHixRo+fHgTVfa12v6wNr5G6AIAoIUpKirSwIED\n6zzu8OHD0ZufouUhdAEA0IKMHDlSr7zyiqZPn67k5GStW7dOkydPVteuXZWdna2777472nfx4sU6\n//zzNWPGDHXu3Fnjx4/XtGnT9PrrryspKUmdOnWq9rX27NmjMWPGKCUlRWeffbZuu+22Y46SFRQU\naNSoUUpNTVVaWppmz579jTmKiooUFxenRx99VD179lRqaqoefPBBvfXWWxoyZIg6deqka6+9tsb3\nXVhYqJycHHXo0EFdu3bVhAkT6rBqrQM/AwQAwHH2Hzqkfxw4oEHt2ikpvu5/Khsy/qWXXtKFF16o\nyZMna+rUqZo8ebL279+vLVu26OOPP9aoUaOUnp6uqVOnSpLeeOMNTZw4Ubt27dLBgwe1YsUKLVy4\nUK+++mqNr5Wbm6ukpCTt2rVLH3zwgUaPHq1evXpJkkpLS3XRRRfpxhtv1PPPP6+DBw9q/fr1Vc61\nZs0abd68Wa+++qrGjBmj733ve3r55Zf15Zdf6swzz9S4ceOqPe152223afTo0crPz9dXX32lt956\nq07r1hpwpAsAgAr2Hzqk4WvX6oK1azV87VrtP3Qo6Pij3F1HjhzRE088odmzZ6tt27bKysrSDTfc\noKVLl0b79ejRQ7m5uYqLi1ObNm1qPf+RI0e0cuVK3XnnnWrTpo369++vKVOmRPc///zzSktL0/XX\nX6+EhAS1a9dOZ511VqVzmZl+9atfKSEhQd/97nfVrl07TZgwQampqUpPT9fw4cO1du3aaus5+eST\nVVRUpK1btyohIUHnnXderd9La8GRLgAAKvjHgQMqOHBAhyS9c+CAkv/613rPtf7zz1Vw4IDOSUmp\n1/hPPvlEhw4dUs+ePaNtWVlZ2rp1a3Q7MzOzXnN//PHHOnz4sDIyMiqdq7i4WH369Kn1fF27do0+\nT0xMVLdu3Y7ZLi0trXb83Llzdeutt2ro0KHq1KmTZsyYET2aFysIXQAAVDCoXTsNbNdO6z//XAPa\nttVfzjyzTqcIjx7pOjp+YLt29a6lc+fOio+PV1FRkU477TRJ5ddQ9ejRI9rn+Ivma3sRfZcuXRQf\nH6+SkhL17dtXUnnQOiozM1MrVqyod+111bVrVz300EOSpNdee03f/e539Z3vfEe9e/cOVkNT4/Qi\nAAAVJMXH6y9nnqlXzzijzoGrMcZXFBcXp3HjxmnWrFkqLS1VUVGR7r333mrvkdWtWzeVlJTo4MGD\nNc49duxY5eXlqaysTO+//76WLFkS3f/9739fO3bs0Lx58/TVV1+ptLRUa9asqXQud6/fG6zgqaee\nih7B69Chg+Li4hQXF1sxJbbeDQAAjSApPl7npKTUOzA1dHzFo1Xz589X27Zt1bt3b11wwQWaNGlS\ntafdRowYoYEDB6p79+7HnPKrzPz587V3716lpaVpypQpmjhxYvS6sPbt22v16tV67rnn1L17d/Xr\n10/5+fk11lub7cq8+eabOvvss5WcnKwf/vCHmjdvXvSi/lhhjZFOG4OZeUupBQAQ28ysUY7OxJqb\nb75ZO3fu1KJFi5q7lBajqs9KpL1ON0TjSBcAACeoDRs26N1335VUfsuHhQsXauzYsc1cVewidAEA\nEMMGDRqk5OTk6CMpKUnJyclavny59u/fr7Fjx6p9+/aaMGGCZs6cqTFjxjRZLdOmTYu+fsVacnNz\nm+w1WxJOLwIATjicXkRtcXoRAACglSF0AQAABEDoAgAACIDQBQAAEAChCwAAIABCFwAALczGjRt1\n5plnKiUlRQsWLGjucr7hjjvuqPaniFqSCy+8UI888khzlyGJ0AUAQIszZ84cjRgxQvv27dM111xT\np7GLFy/W8OHDm6iyr9X2h7XxNUIXAAAtTFFRkQYOHFjncYcPH5a7n5CB6PDhw81dQo0IXQAAVLDl\nwy26adJNuu7C63TTpJu05cMtQcePHDlSr7zyiqZPn67k5GStW7dOkydPVteuXZWdna2777472nfx\n4sU6//zzNWPGDHXu3Fnjx4/XtGnT9PrrryspKUmdOnWq9rX27NmjMWPGKCUlRWeffbZuu+22Y46S\nFRQUaNSoUUpNTVVaWppmz579jTmKiooUFxenRx99VD179lRqaqoefPBBvfXWWxoyZIg6deqka6+9\ntsb3XVhYqJycHHXo0EFdu3bVhAkTahwTFxen+++/X/369VO/fv0kSatXr1b//v3VsWNHXXvttcfc\n2PToUcCZM2eqU6dO6tOnj1588cUaX6exELoAAIjY8uEW3X7R7cp5PEc/yv+Rch7P0e0X3V7r4NTQ\n8ZL00ksvafjw4br//vv12Wef6be//a3279+vLVu2KD8/X0uWLDnmB6nfeOMN9e3bV7t27dJjjz2m\nBx54QOeee67279+vPXv2VPtaubm5SkpK0q5du/Too49q8eLF0aNkpaWluuiii3TJJZdo+/bt2rx5\ns0aOHFnlXGvWrNHmzZv1xBNP6Prrr9c999yjl19+Wf/4xz/0+9//Xn/5y1+qreW2227T6NGjtXfv\nXpWUlNQqqEnSs88+qzfffFPr16/X7t279eMf/1j33HOPPvnkE/Xp00evvfbaN+rs37+/du/erZkz\nZ+qqq66q1es0BkIXAAAR/3nbf2p84XglKlGSlKhEjS8cr/+87T+DjK/I3XXkyBE98cQTmj17ttq2\nbausrCzdcMMNWrp0abRfjx49lJubq7i4OLVp06bW8x85ckQrV67UnXfeqTZt2qh///6aMmVKdP/z\nzz+vtLQ0XX/99UpISFC7du101llnVTqXmelXv/qVEhIS9N3vflft2rXThAkTlJqaqvT0dA0fPlxr\n166ttp6TTz5ZRUVF2rp1qxISEnTeeefV6n3ccsstSklJUZs2bbRq1SoNGjRIP/rRj3TSSSfp+uuv\nV/fu3Y/pn5WVpSuvvFJmpilTpmjHjh3atWtXrV6roQhdAABEfLH1i2hgOipRifpi2xdBxh/vk08+\n0aFDh9SzZ89oW1ZWlrZu3RrdzszMrNfcH3/8sQ4fPqyMjIxK5youLlafPn1qPV/Xrl2jzxMTE9Wt\nW7djtktLS6sdP3fuXB05ckRDhw7V4MGDjzmaV52K9W/btu0b63H8dsUQlpiYKHevsbbGQugCACDi\nlB6nqExlx7SVqUynpJ8SZPzxOnfurPj4eBUVFUXbioqK1KNHj+j28RfN1/Yi+i5duig+Pl4lJSXR\ntuLi4ujzzMxMFRYW1qvu+ujataseeughbd26VQ888IByc3P1wQcf1Diu4vtNS0vTRx99dMz+iu+p\nuRG6AACImPbraVrRZ0U0OJWpTCv6rNC0X08LMv54cXFxGjdunGbNmqXS0lIVFRXp3nvvrfYeWd26\ndVNJSYkOHjxY49xjx45VXl6eysrK9P7772vJkiXR/d///ve1Y8cOzZs3T1999ZVKS0u1Zs2aSueq\neLF6fT311FPRI3gdOnRQXFyc4uLqFlMuvfRSrV+/Xv/1X/+lw4cP67777tOOHTsaXFtjIXQBABDR\nK7uX7lh9h/KvyNczFz6j/CvydcfqO9Qru1eQ8UdVPHozf/58tW3bVr1799YFF1ygSZMmaerUqVWO\nHTFihAYOHKju3bsfc8qvMvPnz9fevXuVlpamKVOmaOLEidHrwtq3b6/Vq1frueeeU/fu3dWvXz/l\n5+fXWG9ttivz5ptv6uyzz1ZycrJ++MMfat68eerVq1e1Y46fNzU1VU8++aRuuukmde7cWYWFhTr/\n/PPrNEdTssZIp43BzLyl1AIAiG1m1ihHZ2LNzTffrJ07d9b6eqoTQVWflUh7nRIbR7oAADhBbdiw\nQe+++66k8lspLFy4UGPHjm3mqmIXoQsAgBg2aNAgJScnRx9JSUlKTk7W8uXLtX//fo0dO1bt27fX\nhAkTNHPmTI0ZM6bJapk2bVr09SvWkpubW2n/v/71r8f0rzimNeL0IgDghMPpRdQWpxcBAABaGUIX\nAABAAIQuAACAAAhdAAAAAcQ3dwEAAISWlZUV9KaYaL2ysrIaba5afXvRzC6W9O8qPzK20N1/c9z+\nDpIekdRHUpmkK919fYX9cZLeklTi7pdV8Rp8exEAALQKTfLtxUhgWiBptKSBkiaY2WnHdbtF0lp3\nHyJpiqR5x+2/TtJ6oUWp6ucc0HRY8/BY8/BY8/BY89ahNtd0DZW0yd2L3P2gpBWSfnBcnwGSXpYk\nd98gqZeZdZEkM8uQdImkhxutajQK/k8aHmseHmseHmseHmveOtQmdPWQVFxhuyTSVtE7ksZKkpkN\nldRTUkZk372SZkri3CEAADhhNda3F2dL6mhmf5c0XdJaSYfN7FJJO939bUkWeQAAAJxwaryQ3szO\nkZTn7hdHtm+W5MdfTH/cmA8kna7ya70mSTokKVFSkqSV7j65kjEcCQMAAK1GXS+kr03oOknSBkkj\nJW2XtEbSBHd/r0KfFEmfu/tBM/tnScPc/WfHzfMdSTdU9e1FAACAWFbjfbrc/bCZXSPpT/r6lhHv\nmdnV5bv9IUn9JS02syOSCiRd1ZRFAwAAtDa1uk8XAAAAGqbZfwbIzK41s/fM7F0zm12h/Zdmtimy\nb1Rz1hiLzOwGMztiZp0qtLHmTcDM5kTW9G0ze9rMkivsY82biJldbGbvm9lGM7upueuJRWaWYWYv\nm1lB5N/wX0TaO5rZn8xsg5n9d+QSFDQiM4szs7+b2XORbda8CZlZipk9Gfm3usDMzq7Pmjdr6DKz\nHEljJA1298GSfhtp7y9pnMpPW35P0v3G7zU0msi90y6SVFShjTVvOn+SNNDdz5C0SdIvJcnMBog1\nbxK1vKkzGu6QpBnuPlDSuZKmR9b5Zkn/4+7/pPJ7OP6yGWuMVcffdJw1b1r3SVrl7v0lDZH0vuqx\n5s19pGuapNnufkiS3P2TSPsPJK1w90PuvkXlf6iGNk+JMenovdMqYs2biLv/j7sfiWz+TV/fw+4y\nseZNpTY3dUYDufuOyC2B5O6lkt5T+ef7B5IWR7otlvTD5qkwNlVx03HWvIlEzk4Md/dFkhT5N3uf\n6rHmzR26+km6wMz+ZmavmNm3I+3H35B1q755Q1bUg5ldJqnY3d89bhdrHsaVklZFnrPmTac2N3VG\nIzKzXpLOUPl/WHRz951SeTCT1LX5KotJld10nDVvOtmSPjGzRZFTug+ZWVvVY81r/PZiQ5nZaknd\nKjap/INya+T1O7r7OWZ2lqQnJfVu6ppiXQ1rfovKTy2iEVWz5rPc/Q+RPrMkHXT35c1QItBkzKy9\npKckXefupZXcd5FvbDWSijcdj1yiUxXWvPHES/qWpOnu/paZ3avyU4t1/pw3eehy9yr/wJvZ/5W0\nMtLvTTM7bGapKv8v/p4VumZE2lALVa25mQ2S1EvSO5FrhzIk/T3y002seQNU9zmXJDP7mcpPB4yo\n0LxVUmaFbda88fB5DsTM4lUeuJa6+7OR5p1m1s3dd5pZd0m7mq/CmDNM0mVmdokiNx03s6WSdrDm\nTaZE5WeI3opsP63y0FXnz3lzn178L0X+CJlZP0kJ7r5b0nOSLjezBDPLltRX5TdlRQO4+z/cvbu7\n93b3bJV/kM50911izZuMmV2s8lMBl7n7lxV2PSdpPGveJN6U1NfMsswsQdJ4la83Gt8jkta7+30V\n2p6T9LPI8ymSnj1+EOrH3W9x957u3lvln+uX3f2nkv4g1rxJRE4hFkdyilR+s/gC1eNz3uRHumqw\nSNIjZvaupC8lTZYkd19vZr9X+TczDkrKdW4o1hRckd/DZM2b1HxJCZJWR76c+Dd3z2XNm05VN3Vu\n5rJijpkNk3SFpHfNbK3K/025RdJvJP3ezK5U+bekxzVflSeM2WLNm9IvJD1uZidL+kDSVEknqY5r\nzs1RAQAAAmju04sAAAAnBEIXAABAAIQuAACAAAhdAAAAARC6AAAAAiB0AQAABEDoAgAACIDQBQAA\nEMD/B6AU5AzigdpkAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[10,10])\n", + "ax = fig.add_subplot(111)\n", + "\n", + "plt.plot(WD-270,P_rat_py_v0,'-',label ='py_gcl_v0')\n", + "#plt.plot(270-WD,P_rat_py_v0,'-',label ='py_gcl_v0_inv')\n", + "\n", + "plt.plot(WD-270,P_rat_py_v1,'x--',label ='py_gcl_v1')\n", + "#plt.plot(270-WD,P_rat_py_v1,'x--',label ='py_gcl_v1_inv')\n", + "\n", + "plt.plot(WD-270,P_rat_fgcl,'+--',label ='fort_gcl')\n", + "#plt.plot(270-WD,P_rat_fgcl,'+--',label ='fort_gcl')\n", + "\n", + "plt.plot(WD-270,P_rat_fgclm,'.-',label ='fort_gclm_s')\n", + "#plt.plot(270-WD,P_rat_fgclm,'.-',label ='fort_gclm_s')\n", + "\n", + "plt.plot(WD-270,P_rat_fgclm_rdn,'o',label ='fort_gclm_s_rdn')\n", + "\n", + "plt.legend(loc=4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/Multiple turbines development .ipynb b/examples/Multiple turbines development .ipynb new file mode 100644 index 0000000..8c2069c --- /dev/null +++ b/examples/Multiple turbines development .ipynb @@ -0,0 +1,412 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "import numpy as np\n", + "from IPython.display import HTML, Latex, Markdown, Pretty\n", + "\n", + "from windIO.Plant import WTLayout\n", + "from fusedwake.WindFarm import WindFarm\n", + "\n", + "from fusedwake.gcl import GCL\n", + "import fusedwake.gcl.fortran as fgcl\n", + "\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#filename = 'middelgrunden.yml'\n", + "#filename = 'lillgrund.yml'\n", + "#filename = 'hornsrev.yml'\n", + "#filename = 'test_WF.yml'\n", + "filename = 'test_WF_2Turbines.yml'\n", + "\n", + "#wtl = WTLayout(filename)\n", + "wf = WindFarm(yml=filename)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "gcl = GCL(WF=wf, TI=0.1, z0=1e-10, alpha=1.)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Inputs\n", + "WS=10.0*np.ones([wf.nWT])\n", + "WD=270*np.ones([wf.nWT])\n", + "TI=0.1*np.ones([wf.nWT])\n", + "version = 'fort_gclm_s' # \n", + "\n", + "# Run the models\n", + "gcl(WS=WS, WD=WD, TI=TI, version='fort_gclm_s')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2233421.0030666208" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "gcl(WS=WS, WD=WD, TI=TI).p_wt.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Inputs\n", + "WS=10.0+np.random.normal(loc=0.0, scale=0.25, size=[wf.nWT])#np.ones([wf.nWT])\n", + "WD=270+np.random.normal(loc=0.0, scale=5, size=[wf.nWT])#np.ones([wf.nWT])\n", + "TI=0.1+np.random.normal(loc=0.0, scale=0.01, size=[wf.nWT])#*np.ones([wf.nWT])\n", + "version = 'fort_gclm_s' # \n", + "\n", + "# Run the models\n", + "fort_gclm_s = gcl(WS=WS, WD=WD, TI=TI, version='fort_gclm_s')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2250556.7678174935" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fort_gclm_s.p_wt.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-500, 500)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n5iBvZpZh/x+ovJQU5lnu8gAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "plt.scatter(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=2.*np.array(wf.R),\n", + " c=WS,\n", + " alpha=0.5,\n", + " cmap=plt.cm.viridis,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " #ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i])\n", + " ax.arrow(x=wf.xyz[0,i],\n", + " y=wf.xyz[1,i],\n", + " dx=wf.R[1]*WS[i]*np.cos(np.deg2rad(270-WD[i])),\n", + " dy=wf.R[1]*WS[i]*np.sin(np.deg2rad(270-WD[i])),\n", + " head_length=3*wf.R[1],head_width=wf.R[1],\n", + " length_includes_head=True,\n", + " fc='k',ec='k',\n", + " )\n", + "ax.set_xlim([-40, 960])\n", + "ax.set_ylim([-500, 500])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-500, 500)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nX0hlewAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "plt.scatter(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=2.*np.array(wf.R),\n", + " c=fort_gclm_s.p_wt/1e6,\n", + " alpha=0.5,\n", + " cmap=plt.cm.viridis,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i])\n", + "ax.set_xlim([-40, 960])\n", + "ax.set_ylim([-500, 500]) " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-500, 500)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n3Lk8+uij1aq2VVqORoerFfxbW/difEcKrlq1igPiQPr0eee96hEfGMmWlzfzxlvbaHod7rzzTu6/\n//535PG4v5Wybt06Rh62F/369X1H+kc/Moxnnn2J5uZg59ub+PGPf8O9997LvHnz+O53v8uvfvUr\n9t133yrV2qzzevwN3+nTp+96XVdXx5tvvMneffZ5V74+ffrwhUnn890fX8Nbb7/FF8/7AmPGjOHn\nP/85l1xyCS+99BKf+cxnGDduHA899FA3tsBqwdtvv03/fu++2bfXXn24/nufY+KZN7H1T9s597xp\njBkzhtNPP523336bT33qU0B20/fGG2/s7mrnWn19PfX19ZW9aI76h1V5yCs9yjw9Ik5L51eRPfU2\no0W+dz3k9bvf/Y67f/hTjj3suFavHREsWb+QK/7xqwwdWv7NG8unhoYGfjn/+/ztF8e0+v7bb+/k\nBzc9xYWXXMuBBx7YzbWzjqjEQ15/M3tW2eXuOXuKH/Iqw651LyT1JVv3Yk5HCh599NFEv5289kbr\nD9VseqmR939wEEOGDKlcba3XO/zww9n21kE8+/uXWn1/ydKNDDvseAd+6zWqEvzTBgWFdS9WAbMi\nYk1Hyu677758/oKprNmyghde2bJrHL+5uZnnt6xn885GPn/uVKSa+yK2KurTpw+Tz7yAnz34R5Yu\n38COHdkKum+88TaP/foZFi7bh9MmnlXlWtqepij/qFU1u7bP6tWruX/2A2xev4W+ffZle/NbHPGh\nkZx19pnu9Vunbdy4kfpf/oIN65ez/37ize19OHL0iXzik5N473vfW+3qWRsqMewzZVb5wz6zptTm\nsE/NBn/Ixve3bNnCm2++yYABAzjooIO6sXbWm73xxhu89dZb9O/f37N5akRFgv9POhH8p9Zm8O/x\ns33aIolDDz202tWwXqhfv37069ev2tUw22NqOvibmVWSaq8D32kO/mZmyQmdmB5e/g4APYODv5lZ\nsuh5r+1jZpY/PXf+S8U5+JuZJfkZ8XfwNzPbzT1/M7MccvA3M8shB38zs/zxmL+ZWR7lqOdfrSWd\nzcysihz8zcwKohNHCZJOk7RW0lOSriyR53pJDZKWSxpXlH6ZpBXpuLQo/XOSVkpqknRcUfpfSloi\n6QlJiyX9RXtNdfA3M0sqtZ6/pD7ADcCpwFhgqqTRLfJMBA6PiFHANOCmlD4WuAA4HhgH/JWkEanY\n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\n5oN3zgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "plt.scatter(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=2.*np.array(wf.R),\n", + " c=TI,\n", + " alpha=0.5,\n", + " cmap=plt.cm.viridis,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i])\n", + "ax.set_xlim([-40, 960])\n", + "ax.set_ylim([-500, 500])" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "WD = np.linspace(-30,30,100)+270.\n", + "WS = 8." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "P_rat_py_v0 = []\n", + "P_rat_py_v1 = []\n", + "P_rat_fgcl = []\n", + "P_rat_fgclm = []\n", + "P_rat_fgclm_rdn = []\n", + "for wd in WD:\n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='py_gcl_v0')\n", + " P_rat_py_v0 = np.append(P_rat_py_v0,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='py_gcl_v1')\n", + " P_rat_py_v1 = np.append(P_rat_py_v1,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS, WD=wd, TI=0.1, version='fort_gcl')\n", + " P_rat_fgcl = np.append(P_rat_fgcl,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1**np.ones([wf.nWT]), version='fort_gclm_s')\n", + " P_rat_fgclm = np.append(P_rat_fgclm,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd+np.random.normal(loc=0.0, scale=2, size=[wf.nWT]), \n", + " TI=0.1**np.ones([wf.nWT]), version='fort_gclm_s')\n", + " P_rat_fgclm_rdn = np.append(P_rat_fgclm_rdn,out.p_wt[1]/out.p_wt[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nu2XLFnvkyBFrbf1uL1pr7auvvmpvuukm265dO3v48OHTtpWXl9vt27dbY4wtLy+3J06cqHc/nM+5\n6hMacXtRA+lFRET8bO3+taddlYpsG8nUoVNZu3+tX9uAmtt2w4YNIzk5mUsuuYS0tDQA2rZty913\n383evXsZOXLkBdvp27cvM2fO5N577yU2Npbw8HCio6Np06YNAE888QSjRo1i2LBhRERE8OCDD1JW\nVgbUf56u0aNHs3r1aoYOHUrHjh0963NzcwkJCSElJQVjDCEhIfTu3btB/eAPxl7k3BjeYoyxgZJF\nRETEW4wxFz0Pla8kJSWRnp7OkCFDzrr95ZdfZvfu3cyePbvBbR8/fpzIyEiys7NJTEy82KiOOdfP\nr3Z9g2Z11ZUuERER+Z4jR46Qnp7OQw89VO/PLFmyhLKyMo4fP86TTz7JgAEDmnTB5W0qukRERFqo\nc93WmzVrFgkJCdx2222kpn4379fcuXMJCwsjPDzc8woLCyMlJQWADz74gNjYWOLi4sjJyWH+/PkN\nytO/f//vtR0eHs68efMaf5IBRLcXRUREfCiQby/Khen2ooiIiEgTo6JLRERExA9UdImIiIj4gYou\nERERET9Q0SUiIiLiByq6REREWqisrCwuv/xyIiIieP31152O8z0vvvgi999/v9MxvEZFl4iISAv1\n6quvMmTIEIqLi3n00Ucb9Nl3332X66+/3kfJvlPfRwQ1BSq6REREWqjc3Fz69evX4M9VVVVhrW1W\nBZE/qOgSERFpgYYOHcrKlSt55JFHCA8PZ8uWLYwbN47o6GiSkpKYOnWqZ993332X6667jieeeILO\nnTszevRoHn74YdatW0dYWNhpD58+myNHjnDHHXcQERHBVVddxXPPPXfaVbLt27czbNgwOnXqRExM\nDNOmTfteG7m5ubhcLv785z+TkJBAp06dePPNN9m4cSMDBw6kY8eOPPbYYxc875ycHAYPHkxkZCTR\n0dGMGTOmAb12cYL8diQRERE5XUkJbNsG/ftDWJhf21i+fDk33XQT48aNY8KECYwbN46SkhL27dtH\nUVERw4YNIzY2lgkTJgCwYcMGxo4dy8GDB6moqGD+/Pmkp6ezevXqCx5r0qRJhIWFcfDgQfbs2cMt\nt9xC9+7dASgtLeXmm2/m6aefZsmSJVRUVLBjx45ztpWZmUl2djarV6/mjjvu4NZbb2XFihWcOHGC\n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\nr18ltSEoAAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[10,10])\n", + "ax = fig.add_subplot(111)\n", + "\n", + "plt.plot(WD-270,P_rat_py_v0,'-',label ='py_gcl_v0')\n", + "#plt.plot(270-WD,P_rat_py_v0,'-',label ='py_gcl_v0_inv')\n", + "\n", + "plt.plot(WD-270,P_rat_py_v1,'x--',label ='py_gcl_v1')\n", + "#plt.plot(270-WD,P_rat_py_v1,'x--',label ='py_gcl_v1_inv')\n", + "\n", + "#plt.plot(WD-270,P_rat_fgcl,'+--',label ='fort_gcl')\n", + "#plt.plot(270-WD,P_rat_fgcl,'+--',label ='fort_gcl')\n", + "\n", + "plt.plot(WD-270,P_rat_fgclm,'.-',label ='fort_gclm_s')\n", + "#plt.plot(270-WD,P_rat_fgclm,'.-',label ='fort_gclm_s')\n", + "\n", + "#plt.plot(WD-270,P_rat_fgclm_rdn,'o',label ='fort_gclm_s_rdn')\n", + "\n", + "plt.legend(loc=4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/Problem_yml_wf_description.yml b/examples/Problem_yml_wf_description.yml new file mode 100644 index 0000000..424a41c --- /dev/null +++ b/examples/Problem_yml_wf_description.yml @@ -0,0 +1,215 @@ +layout: + - name: WT01 + row: 1 + position: [0, 0] + turbine_type: B76 + - name: WT02 + row: 2 + position: [560, 0] + turbine_type: v80 + +plant_data: + utm: + code: 32 + letter: U + name: Test WF + owner: DTU + +turbine_types: + # Sources: + # [1] https://windbench.net/system/files/hornsrev_v80_0.pdf + # [2] http://www.thewindpower.net/turbine_en_30_vestas_2000.php + # [3] http://en.wind-turbine-models.com/turbines/668-vestas-v-80-offshore + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: V80 + hub_height: 90.0 # [1] + rotor_diameter: 80.0 # [1] + rated_power: 2000.0 # [1] + cut_in_wind_speed: 4.0 # [1] + cut_out_wind_speed: 25.0 # [1] + rated_wind_speed: 16.0 # [1] + wind_class: IEC Ia (DIBt III) # [2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:100,5 # [2] + type: spur/planetary # [3] + nacelle: # [2] + weight: 68000.0 # kg [2], 69000.0 kg according to [3] + rotor: # [2, 3] + weight: 37000.0 # kg [2] + tip_speed: 80.0 # m/s [3] + min_speed: 9 # rd/min [2] + max_speed: 19 # rd/min [2] + manufacturer: Vestas + hub: + weight: 18000 # kg [3] + tower: # [2] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + material: steel + manufacturer: Welcon + control: # [1] + type: Active Pitch, Variable Speed + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1909 #rounds/minute + output_voltage: 690 #V + grid_frequency: 50/60 # Hz + power_curve: # [1] + - [3.0, 0.0] + - [4.0, 66.6] + - [5.0, 154.0] + - [6.0, 282.0] + - [7.0, 460.0] + - [8.0, 696.0] + - [9.0, 996.0] + - [10.0, 1341.0] + - [11.0, 1661.0] + - [12.0, 1866.0] + - [13.0, 1958.0] + - [14.0, 1988.0] + - [15.0, 1997.0] + - [16.0, 1999.0] + - [17.0, 2000.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: + - [3.0, 0.00] + - [4.0, 0.818] + - [5.0, 0.806] + - [6.0, 0.804] + - [7.0, 0.805] + - [8.0, 0.806] + - [9.0, 0.807] + - [10.0, 0.793] + - [11.0, 0.739] + - [12.0, 0.709] + - [13.0, 0.409] + - [14.0, 0.314] + - [15.0, 0.249] + - [16.0, 0.202] + - [17.0, 0.167] + - [18.0, 0.140] + - [19.0, 0.119] + - [20.0, 0.102] + - [21.0, 0.088] + - [22.0, 0.077] + - [23.0, 0.067] + - [24.0, 0.060] + - [25.0, 0.053] + c_t_idle: 0.053 # [4] + blade: + geometry: # [1] + # [radius [m], c [m], twist [deg], airfoil ] + - [2.563, 2.004, 9.50, 'Cylinder 1'] + - [4.389, 2.523, 9.50, 'Cylinder 1'] + - [6.216, 3.015, 9.50, 'FFA W3-301'] + - [8.042, 3.278, 9.50, 'FFA W3-301'] + - [9.868, 3.309, 9.50, 'FFA W3-301'] + - [11.694, 3.195, 9.50, 'FFA W3-301'] + - [13.520, 3.039, 9.22, 'FFA W3-241'] + - [15.346, 2.863, 7.81, 'FFA W3-211'] + - [17.173, 2.687, 6.40, 'FFA W3-211'] + - [18.999, 2.511, 5.11, 'FFA W3-211'] + - [20.825, 2.334, 3.83, 'FFA W3-211'] + - [22.651, 2.158, 2.61, 'NACA 63-221'] + - [24.477, 1.982, 1.48, 'NACA 63-221'] + - [26.304, 1.806, 0.42, 'NACA 63-221'] + - [28.130, 1.630, 0.49, 'NACA 63-221'] + - [29.956, 1.454, 1.23, 'NACA 63-218'] + - [31.782, 1.278, 1.79, 'NACA 63-218'] + - [33.608, 1.102, 2.24, 'NACA 63-218'] + - [35.435, 0.926, 2.61, 'NACA 63-218'] + - [37.261, 0.749, 2.84, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] + + # Sources: + # [1] http://www.middelgrunden.dk/middelgrunden/sites/default/files/public/file/Location.pdf + # [2] http://www.thewindpower.net/turbine_en_229_bonus_2000.php + # [3] http://en.wind-turbine-models.com/turbines/121-bonus-b76-2000 + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: B76 + hub_height: 64.0 #[1] + rotor_diameter: 76.0 #[1] + rated_power: 2000.0 #[1] + cut_in_wind_speed: 3.0 #[2] + cut_out_wind_speed: 25.0 #[2] + rated_wind_speed: 15.0 #[2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:89 # [2], or [3]: 1:93 + manufacturer: Flender + nacelle: # [2] + weight: 65000.0 #kg [2], or [3]: 82500 kg + rotor: # [2, 3] + weight: 38000.0 #kg [2], or [3]: 52000.0 kg + max_speed: 17 #rd/min [2], or [3]: 16 + tip_speed: 63.7 #m/s [3] + manufacturer: LM Glasfiber, Bonus + tower: # [2] + weight: 162000.0 #kg [2] + control: # [2] + type: Stall + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1500 #rounds/minute + output_voltage: 690 #V + manufacturer: ABB + power_curve: # [4] + - [3.0, 0.0] + - [4.0, 43.0] + - [5.0, 133.0] + - [6.0, 237.0] + - [7.0, 401.0] + - [8.0, 623.0] + - [9.0, 886.0] + - [10.0, 1190.0] + - [11.0, 1502.0] + - [12.0, 1740.0] + - [13.0, 1891.0] + - [14.0, 1962.0] + - [15.0, 1988.0] + - [16.0, 1996.0] + - [17.0, 1999.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: # [4] + - [3.0, 0.00] + - [4.0, 0.857] + - [5.0, 0.858] + - [6.0, 0.810] + - [7.0, 0.853] + - [8.0, 0.870] + - [9.0, 0.811] + - [10.0, 0.756] + - [11.0, 0.679] + - [12.0, 0.584] + - [13.0, 0.511] + - [14.0, 0.439] + - [15.0, 0.383] + - [16.0, 0.338] + - [17.0, 0.301] + - [18.0, 0.271] + - [19.0, 0.246] + - [20.0, 0.225] + - [21.0, 0.207] + - [22.0, 0.192] + - [23.0, 0.179] + - [24.0, 0.168] + - [25.0, 0.158] + c_t_idle: 0.158 # [4] diff --git a/examples/Script.ipynb b/examples/Script.ipynb index 7bd938e..e995fb6 100644 --- a/examples/Script.ipynb +++ b/examples/Script.ipynb @@ -58,14 +58,25 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 9, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "wf.WindFarm?" + ] + }, + { + "cell_type": "code", + "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [], "source": [ "v80 = wt.WindTurbine('Vestas v80 2MW offshore','V80_2MW_offshore.dat',70,40)\n", - "HR1 = wf.WindFarm('Horns Rev 1','HR_coordinates.dat',v80)\n", + "HR1 = wf.WindFarm(name='Horns Rev 1',yml='hornsrev.yml')#,v80)\n", "WD = range(0,360,1)" ] }, @@ -78,7 +89,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -89,7 +100,7 @@ "\"\\n##Fused inputs\\ninputs = dict(\\n wind_speed=8.0,\\n roughness=0.0001,\\n TI=0.05,\\n NG=4,\\n sup='lin',\\n wt_layout = fused_gcl.generate_GenericWindFarmTurbineLayout(HR1))\\n\\nfgcl = fused_gcl.FGCLarsen()\\n# Setting the inputs\\nfor k,v in inputs.iteritems():\\n setattr(fgcl, k, v)\\n\\nfP_WF = np.zeros([len(WD)])\\nfor iwd, wd in enumerate(WD):\\n fgcl.wind_direction = wd\\n fgcl.run()\\n fP_WF[iwd] = fgcl.power\\n\"" ] }, - "execution_count": 4, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -127,11 +138,23 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'GCLarsen' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mP_WF_v0\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzeros\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mWD\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0miwd\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwd\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mWD\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mP_WT\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mU_WT\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mCT_WT\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGCLarsen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mWS\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m8.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mz0\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.0001\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mTI\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.05\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mWD\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mWF\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mHR1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mNG\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msup\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'lin'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mP_WF\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0miwd\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mP_WT\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mP_WT\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mU_WT\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mCT_WT\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGCLarsen_v0\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mWS\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m8.0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mz0\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.0001\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mTI\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.05\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mWD\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwd\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mWF\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mHR1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mNG\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msup\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'lin'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'GCLarsen' is not defined" + ] + } + ], "source": [ "P_WF = np.zeros([len(WD)])\n", "P_WF_v0 = np.zeros([len(WD)])\n", @@ -524,7 +547,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.11" } }, "nbformat": 4, diff --git a/examples/Test_for_agreement_between implementations.ipynb b/examples/Test_for_agreement_between implementations.ipynb new file mode 100644 index 0000000..4d57e93 --- /dev/null +++ b/examples/Test_for_agreement_between implementations.ipynb @@ -0,0 +1,672 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "import numpy as np\n", + "from IPython.display import HTML, Latex, Markdown, Pretty\n", + "\n", + "from windIO.Plant import WTLayout\n", + "from fusedwake.WindFarm import WindFarm\n", + "\n", + "from fusedwake.gcl import GCL\n", + "import fusedwake.gcl.fortran as fgcl\n", + "import fusedwake.gcl.python as pygcl\n", + "\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def circles(x, y, s, c='b', vmin=None, vmax=None,**kwargs):\n", + " \"\"\"\n", + " Make a scatter of circles plot of x vs y, where x and y are sequence \n", + " like objects of the same lengths. The size of circles are in data scale.\n", + "\n", + " Parameters\n", + " ----------\n", + " x,y : scalar or array_like, shape (n, )\n", + " Input data\n", + " s : scalar or array_like, shape (n, ) \n", + " Radius of circle in data unit.\n", + " c : color or sequence of color, optional, default : 'b'\n", + " `c` can be a single color format string, or a sequence of color\n", + " specifications of length `N`, or a sequence of `N` numbers to be\n", + " mapped to colors using the `cmap` and `norm` specified via kwargs.\n", + " Note that `c` should not be a single numeric RGB or RGBA sequence \n", + " because that is indistinguishable from an array of values\n", + " to be colormapped. (If you insist, use `color` instead.) \n", + " `c` can be a 2-D array in which the rows are RGB or RGBA, however. \n", + " vmin, vmax : scalar, optional, default: None\n", + " `vmin` and `vmax` are used in conjunction with `norm` to normalize\n", + " luminance data. If either are `None`, the min and max of the\n", + " color array is used.\n", + " kwargs : `~matplotlib.collections.Collection` properties\n", + " Eg. alpha, edgecolor(ec), facecolor(fc), linewidth(lw), linestyle(ls), \n", + " norm, cmap, transform, etc.\n", + "\n", + " Returns\n", + " -------\n", + " paths : `~matplotlib.collections.PathCollection`\n", + "\n", + " Examples\n", + " --------\n", + " a = np.arange(11)\n", + " circles(a, a, a*0.2, c=a, alpha=0.5, edgecolor='none')\n", + " plt.colorbar()\n", + "\n", + " License\n", + " --------\n", + " This code is under [The BSD 3-Clause License]\n", + " (http://opensource.org/licenses/BSD-3-Clause)\n", + " \n", + " (http://stackoverflow.com/questions/9081553/python-scatter-plot-size-and-style-of-the-marker/24567352#24567352)\n", + " \"\"\"\n", + " import numpy as np\n", + " import matplotlib.pyplot as plt\n", + " from matplotlib.patches import Circle\n", + " from matplotlib.collections import PatchCollection\n", + "\n", + " if np.isscalar(c):\n", + " kwargs.setdefault('color', c)\n", + " c = None\n", + " if 'fc' in kwargs: kwargs.setdefault('facecolor', kwargs.pop('fc'))\n", + " if 'ec' in kwargs: kwargs.setdefault('edgecolor', kwargs.pop('ec'))\n", + " if 'ls' in kwargs: kwargs.setdefault('linestyle', kwargs.pop('ls'))\n", + " if 'lw' in kwargs: kwargs.setdefault('linewidth', kwargs.pop('lw'))\n", + "\n", + " patches = [Circle((x_, y_), s_) for x_, y_, s_ in np.broadcast(x, y, s)]\n", + " collection = PatchCollection(patches, **kwargs)\n", + " if c is not None:\n", + " collection.set_array(np.asarray(c))\n", + " collection.set_clim(vmin, vmax)\n", + "\n", + " ax = plt.gca()\n", + " ax.add_collection(collection)\n", + " ax.autoscale_view()\n", + " if c is not None:\n", + " plt.sci(collection)\n", + " return collection" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "#filename = 'middelgrunden.yml'\n", + "#filename = 'lillgrund.yml'\n", + "#filename = 'hornsrev.yml'\n", + "\n", + "#filename = 'test_WF.yml'\n", + "#filename = 'test_WF_4.yml'\n", + "filename = 'test_WF_4Turbines.yml'\n", + "\n", + "#wtl = WTLayout(filename)\n", + "wf = WindFarm(yml=filename)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "[True, True, True]\n", + "True\n", + "[True, True, True]\n", + "True\n", + "True\n", + "True\n", + "True\n" + ] + } + ], + "source": [ + "# Fixed parameters\n", + "a1 = 0.435449861\n", + "a2 = 0.797853685\n", + "a3 = -0.124807893\n", + "a4 = 0.136821858\n", + "b1 = 15.6298\n", + "b2 = 1.0\n", + "\n", + "# Variables\n", + "D = 80.0\n", + "CT = 0.98\n", + "TI = 0.10\n", + "\n", + "\n", + "print np.allclose(fgcl.get_r96(D, CT, TI, a1, a2, a3, a4, b1, b2),\n", + " pygcl.get_r96(D, CT, TI, pars=[a1, a2, a3, a4, b1, b2]))\n", + "\n", + "R = D/2.\n", + "x=4.*D\n", + "r=0.*R\n", + "\n", + "print [np.allclose(fgcl.get_rw(x, D, CT, TI, a1, a2, a3, a4, b1, b2)[i],\n", + " pygcl.get_Rw(x, R, TI, CT, pars=[a1, a2, a3, a4, b1, b2])[i]) for i in range(3)]\n", + "\n", + "print np.allclose(fgcl.get_du(x,r,D,CT, TI, a1, a2, a3, a4, b1, b2),\n", + " pygcl.get_dU(x,r,R, CT, TI, pars=[a1, a2, a3, a4, b1, b2]))\n", + "\n", + "R = D/2.\n", + "x=D*np.linspace(0.,10.,100)\n", + "r=0.*R*np.ones_like(x)\n", + "\n", + "print [np.allclose(fgcl.get_rw(x, D, CT, TI, a1, a2, a3, a4, b1, b2)[i],\n", + " pygcl.get_Rw(x, R, TI, CT, pars=[a1, a2, a3, a4, b1, b2])[i]) for i in range(3)]\n", + "\n", + "print np.allclose(fgcl.get_du(x,r,D,CT, TI, a1, a2, a3, a4, b1, b2),\n", + " pygcl.get_dU(x,r,R, CT, TI, pars=[a1, a2, a3, a4, b1, b2]))\n", + "\n", + "\n", + "R = D/2.\n", + "x=D*np.linspace(0.,10.,100)\n", + "r=D*np.linspace(0.,2.,100) \n", + "\n", + "print np.allclose(fgcl.get_du(x,r,D,CT, TI, a1, a2, a3, a4, b1, b2),\n", + " pygcl.get_dU(x,r,R, CT, TI, pars=[a1, a2, a3, a4, b1, b2]))\n", + "\n", + "\n", + "dx = 7.*D\n", + "dy = 6.*D\n", + "dz = -2.*D\n", + "# Wake operating turbine\n", + "RT = 2.*R\n", + "DT = 2.*RT\n", + "\n", + "print np.allclose(fgcl.get_dueq(dx,dy,dz,DT,D,CT,TI,a1,a2,a3,a4,b1,b2),\n", + " pygcl.get_dUeq(dx,dy,dz,RT,R,CT,TI,pars=[a1, a2, a3, a4, b1, b2]))\n", + "\n", + "\n", + "dx = np.array([6.,10.,15.])*D\n", + "dy = np.array([1.,-5.,0.])*D\n", + "dz = np.array([-2,2.,1.])*D\n", + "\n", + "# Wake operating turbines\n", + "Rop = np.array([1.,2.,.5])*D \n", + "Dop = 2.*Rop\n", + "\n", + "print np.allclose(fgcl.get_dueq(dx,dy,dz,Dop,D,CT,TI,a1,a2,a3,a4,b1,b2),\n", + " pygcl.get_dUeq(dx,dy,dz,Rop,R,CT,TI,pars=[a1, a2, a3, a4, b1, b2]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gcl = GCL(WF=wf)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "271.0\n" + ] + } + ], + "source": [ + "# Inputs\n", + "WS=10.0*np.ones([wf.nWT])\n", + "WD=271.*np.ones([wf.nWT])#np.random.normal(270.,30.)*np.ones([wf.nWT])#\n", + "TI=0.1*np.ones([wf.nWT])\n", + "\n", + "print np.mean(WD)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-50, 1000)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\nKZGLiETc/wcdQw2MMPc3ogAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "circles(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=np.array(wf.R),\n", + " c=WS, \n", + " cmap=plt.cm.viridis,lw=0,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i]+0.7*np.array([wf.R[i],wf.R[i]]))\n", + " ax.arrow(x=wf.xyz[0,i],\n", + " y=wf.xyz[1,i],\n", + " dx=0.5*wf.R[1]*WS[i]*np.cos(np.deg2rad(270-WD[i])),\n", + " dy=0.5*wf.R[1]*WS[i]*np.sin(np.deg2rad(270-WD[i])),\n", + " head_length=2*wf.R[1],head_width=wf.R[1],\n", + " length_includes_head=True,\n", + " fc='k',ec='k',\n", + " )\n", + "ax.axis('equal')\n", + "ax.set_xlim([-50, 1000])\n", + "#ax.set_ylim([-400, 400])\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "fort_gclm_s : 4768476.6996 \n", + "\n", + "py_gcl_v0 : 4768476.69851 \n", + "\n", + "True\n", + "True \n", + "\n", + "py_gcl_v1 : 4768476.69851 \n", + "\n", + "True\n", + "True \n", + "\n" + ] + } + ], + "source": [ + "gcl = GCL(WF=wf,WS=WS, WD=WD, TI=TI)\n", + "# Run the models\n", + "out_fort_gclm_s=gcl(version='fort_gclm_s')\n", + "#print gcl._get_kwargs(version='fort_gclm_s'),'\\n'\n", + "print gcl.version, ':', out_fort_gclm_s.p_wt.sum(),'\\n'\n", + "\n", + "# Run the models\n", + "out_py_gcl_v0=gcl(version='py_gcl_v0')\n", + "#print gcl._get_kwargs(version='py_gcl_v0'),'\\n'\n", + "print gcl.version, ':', out_py_gcl_v0.p_wt.sum(),'\\n'\n", + "\n", + "print np.allclose(out_fort_gclm_s.p_wt,out_py_gcl_v0.p_wt)\n", + "print np.allclose(out_fort_gclm_s.u_wt,out_py_gcl_v0.u_wt),'\\n'\n", + "\n", + "# Run the models\n", + "out_py_gcl_v1=gcl(version='py_gcl_v1')\n", + "#print gcl._get_kwargs(version='py_gcl_v1'),'\\n'\n", + "print gcl.version, ':', out_py_gcl_v1.p_wt.sum(),'\\n'\n", + "print np.allclose(out_fort_gclm_s.p_wt,out_py_gcl_v1.p_wt)\n", + "print np.allclose(out_fort_gclm_s.u_wt,out_py_gcl_v1.u_wt),'\\n'\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-100, 1000)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "varout=out_py_gcl_v0.u_wt#p_wt/1e6\n", + " \n", + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "circles(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=np.array(wf.R),\n", + " c=varout,\n", + " cmap=plt.cm.viridis,lw=0,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i]+0.7*np.array([wf.R[i],wf.R[i]]))\n", + "ax.axis('equal')\n", + "ax.set_xlim([-100, 1000])\n", + "#ax.set_ylim([-500, 500])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4984990.3598591276" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Inputs\n", + "WS=10.0*np.ones([wf.nWT])+np.random.normal(loc=0.0, scale=0.25, size=[wf.nWT])\n", + "WD=285*np.ones([wf.nWT])+np.random.normal(loc=0.0, scale=3., size=[wf.nWT])\n", + "TI=0.1*np.ones([wf.nWT])+np.random.normal(loc=0.0, scale=0.02, size=[wf.nWT])\n", + "version = 'py_gcl_v0' #'fort_gclm_s' # \n", + "\n", + "# Run the models\n", + "results=gcl(WS=WS, WD=WD, TI=TI, version=version)\n", + "results.p_wt.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-50, 1000)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAEzCAYAAADZ3gNwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VNX5wPHvG8hCCESkgkAgrIGAKCJSrFtaAXFX9FGs\ndaXWFm2x+rOKtQIVRbTaatEWASnYClVRQaVsYrSiLAoCsi8aSJAdCVkIycz7+2Nu0iFMkpnJwGRy\n38/z3Me5555z7zkC75w599xzRVUxxhjjLnHRroAxxpiTz4K/Mca4kAV/Y4xxIQv+xhjjQhb8jTHG\nhSz4G2OMCzWMdgWqIyI2D9UYEzRVlXDLtm8brzm5ZeEUzVHV9uFeN1rqfM9fVYPeRo4cGVL+urxZ\nW+ruVp/aU5/aUls5uWWUftcp5A1Ir/XFo6BO9/yNMeZk8qg32lU4aep8z98YY0zk1auef1ZWVrSr\nEDHWlrqrPrWnPrUlEry45zajRGKs7EQREa3L9TPG1B0igtbihq+IaMHOdiGXS2m9vVbXjZZ61fM3\nxpja8Lios2nB3xhjHG4a9rHgb4wxDo8Ff2OMcR/r+RtjjAvZmL8xxriQex7xsuBvjDEVbMzfGGNc\nyOOe2G/B3xhjyrlp2MfW9jHGGBeynr8xxjg8xNwqDWGz4G+MMQ6vi8b8bdjHGGMcHiTkLRARmSwi\nu0VktV9aMxGZLyIbRWSeiKRWUXaQiGwQkU0i8rBf+gwRWeFs34jICic9XUSK/I69HExbLfgbY4wj\nUsEfmAJcWintEWChqnYFFgEjKhcSkThgvFO2B3CziHQDUNUhqtpbVXsDM4G3/YpuKT+mqsOCaasF\nf2OMcXhVQt4CUdVPgYOVkq8BpjqfpwLXBijaF9isqjmqWgrMcMpVdiMw3W8/5JsVFvyNMcYRwZ5/\nIC1UdTeAqu4CWgTI0wbY4bef66RVEJELgV2qutUvub0z5PORiFwQTGXshq8xxjg8QfSHv/z8CF8u\nORKJy4V7e/lmju317wTaqepBEekNvCsi3VW1oLqTWPA3xhhHVcM4/s7u14iz+zWq2J/0l0PBnn63\niLRU1d0icjqwJ0CePMD/dWJpThoAItIAGAz0Lk9zhocOOp9XiMhWIANYUV1lbNjHGGMcER72EY4d\ni58N3OF8vh2YFaDMcqCzM4MnARjilCs3AFivqjsrLiLyA+dGMSLSEegMbKuprdbzN8YYh0cj0x8W\nkdeBLKC5iGwHRgJPA2+KyF1ADr6btohIK2Ciql6pqh4RuQ+Yj69zPllV1/ud+iaOHfIBuAj4o4gc\nxbdCxT2q+n2NdazLL0i3F7gbY4IViRe4Z3/TJeRyWR02x+QL3G3YxxhjXMiGfYwxxmFr+xhjjAtF\nasw/FljwN8YYh9d6/sYY4z7BPORVX1jwN8YYh5uGfSLWUhGJc9aWmO3sV7l8qYiMEJHNIrJeRAZG\nqg7GGFMbXuJC3mJVJGs+HFjntx9w+VIR6Y7v4YZM4DLgZRFxz0CbMabO8qiEvMWqiAR/EUkDLgcm\n+SVXtXzp1cAMVS1T1W+BzfiWMTXGmKjyEBfyFqsiNeb/Z+AhwP/NNC39ly8VkfLlS9sAn/vly6PS\nkqXGGBMNXheN+dc6+IvIFcBuVf1KRLKqyRrWOg2jRo2q+JyVlUVWVnWXMMa4RXZ2NtnZ2RE9Zyz3\n5ENV67V9ROQp4GdAGdAIaAK8A/QBsvyWL/1IVTNF5BFAVXWcU34uMFJVlwY4t63tY4wJSiTW9pm2\n6Ychl7stY6k71/ZR1UdVtZ2qdsS3/OgiVb0VeI/Ay5fOBoaISIKIdMC3/Oiy2tbDGGNM8E7kPP+n\ngTcqL1+qqutE5A18M4NKgWHWvTfG1AWxPHUzVLakszGmXojEsM/kjeeHXG5o18UxOexjT/gaY4zD\n1vYxxhgXctPyDhb8jTHG4aapnhb8jTHG4Y29ofuwWfA3xhiH9fyNMcaFbHkHY4xxIXuHrzHGuJCb\nev7uaakxxtTAg4S8BSIik0Vkt4is9kur8gVXlcoOEpENIrJJRB72Sx8pIrnOS7NWiMggv2MhvyDL\ngr8xxkTeFODSSmkBX3DlT0TigPFO2R7AzSLSzS/L86ra29nmOmUyCeMFWRb8jTHG4dW4kLdAVPVT\n4GCl5KpecOWvL7BZVXNUtRSY4ZQrFyioX0MYL8iy4G+MMQ6PxoW8haCF/wuugBYB8rQBdvjt53Ls\ny67uE5GvRGSS37BR5TJBvSDLbvgaY4wjmLV9vl2+j2+X74vE5UJdtfJl4I+qqiIyBngO+Hm4F7fg\nb4wxjmB68m37tKBtn/912j/+26ZgT79bRFr6veBqT4A8eUA7v/00Jw1V3euXPhHfO1PKy7QNVKY6\nNuxjjDEOr0rIWzWEY8foZxP4BVf+lgOdRSRdRBLwvSBrNoDzhVFuMPC133lDfkGW9fyNMcYRqeUd\nROR1IAtoLiLbgZH4XnD1ZuUXXIlIK2Ciql6pqh4RuQ+Yj69zPllV1zunfUZEegFe4FvgHgj/BVn2\nMhdjTL0QiZe5PPTVDSGXe7bXW/YyF2OMiWVueo2jBX9jjHF4Yq8DHzYL/sYY47D1/I0xxoVsYTdj\njDH1mvX8jTHGYev5G2OMC9mYvzHGuJCbxvwt+BtjjCOYhd3qCwv+xhjjsHn+xhjjQjbsY4wxLmQ3\nfI0xxoVszN8YY1zIev7GGONCbhrzd09L66G5c+fSrVs3MjIyeOaZZwB4/PHHOeusszj77LMZNGgQ\nu3btinItjYkdEX6TV51mL3OJUV6vl4yMDD788ENat27Nueeey4wZM0hLSyMlJQWAv/71r6xbt46/\n/e1vUa6tMSdeJF7mMnjxr0Iu9/b5f4vJl7lYzz9GLVu2jC5dupCenk58fDxDhgxh1qxZFYEfoLCw\nkLg4+yM2xhzPxvxjVF5eHm3btq3YT0tLY9ky3zubH3vsMaZNm8Ypp5zCRx99FK0qGhNzYnkYJ1TW\nLawj1LMbLZiA9+Av8e79Cd49/fDuvQTvwWFo4WTUsz/oc40ZM4bt27dzyy238Ne//vUE1tqY+sVN\nY/4W/KNMvfl4Dz2K7v0xWvAclCwCTy54D4BnB5QsRA+PQ/dehDd/NOotBKBNmzZs37694jy5ubm0\nadPmmHP/9Kc/ZebMmSe1PcbEMgv+5qTQo6vQfZdD8VtAWQ25S6HoX+j+q9DSjZx77rls2bKFnJwc\njh49yowZM7j66qvZsmVLRYl3332XzMzME9oGY+oTNwV/G/OPEi1dix68E7QgtIKeXPTArcQ1f53x\n48czcOBAvF4vQ4cOJTMzkxtuuIFNmzYRFxdHeno6f//7309MA4yph9z0hK9N9YwC1WJ039XgyQn/\nJA27Ic1nIhIfuYoZE8MiMdVzYPbwkMvNz3rhuOuKyGTgSmC3qp7ppDUD/g2kA98CN6rqoQD1GAT8\nBd/IzGRVHeekPwNcBZQAW4E7VTVfRNKB9cAG5xRLVHVYTfW2YZ8o0IKXahf4Aco2QOGrkamQMQaI\n6LDPFODSSmmPAAtVtSuwCBhRuZCIxAHjnbI9gJtFpJtzeD7QQ1V7AZsrld+iqr2drcbADxEI/iKS\nJiKLRGStiKwRkd846c1EZL6IbBSReSKS6ldmhIhsFpH1IjKwtnWIJarFUDQjMucqeg3Vmu4VGGOC\nFangr6qfAgcrJV8DTHU+TwWuDVC0L7BZVXNUtRSY4ZRDVReqqtfJtwRI8ysX8i+eSPT8y4AHVLUH\ncB5wr/NNFfBbTkS6AzcCmcBlwMsi4p6BtpJs0PzInMu7B45+HplzGWNO9A3fFqq6G0BVdwEtAuRp\nA+zw28910iq7C/iP3357EVkhIh+JyAXBVKbWN3ydRuxyPheIyHp830jXABc72aYC2fi+EK4GZqiv\ny/qtiGzG9223tLZ1iQV6dHVkT1i6BhIvjOw5jXGpYG4ZfP/VDr5ftaPGfMFcLpxCIvJ7oFRVX3eS\ndgLtVPWgiPQG3hWR7qrVzyaJ6GwfEWkP9ML3k6Sl/7eciJR/y7UB/LureQT+ZqufPNuCyrYtp5S0\nVg1JSKj+L6OWbXPR/ARjTqxgZvs07dWOpr3aVeznvBb0r+/dItJSVXeLyOnAngB58oB2fvtpThoA\nInIHcDnwk/I0Z3jooPN5hYhsBTKAFdVVJmLBX0RSgLeA4c4vgMrfamF9y40aNaric1ZWFllZWeFW\nsW4IYoxeVTnj4hxKSnz/y64Y0JjnR/+Azh0SAuQujXAFjYkN2dnZZGdnR7sa1RGOHYufDdwBjANu\nB2YFKLMc6OzM4PkOGALcDBWzgB4CLlLVkoqLiPwAOKCqXhHpCHQGauxlRmSqp4g0BN4H/qOqLzhp\n64Esv2+5j1Q1U0QeAdRv+tJcYKSqHjfsUx+nenq/fwCOvB9U3qUrjvCbR/fwxaqKP2eaNolj/NjT\n+OngJogINLqZuNTRJ6q6xsSMSEz1PH/BQyGXWzzg2UBTPV8HsoDmwG5gJPAu8CbQFsjBN9XzexFp\nBUxU1SudsoOAF/jfVM+nnfTNQAJQvtbLElUdJiKDgT8CRwEv8LiqzqmxvREK/tOAfar6gF/aOHzf\nRuNE5GGgmao+4tzw/RfwQ3zDPQuALoGifH0M/lo4CT38TMjlDuV7eOL5A/x5wvfHpN991yU8+fR0\nTjvttEhV0ZiYFIng/6P5vwu53GcDn3Hnks4icj5wC/ATEVnp3HEehO+nzQAR2QhcAjwNoKrrgDeA\ndcAcYFi9i/DVSTgvrGKpTRvwp1Gn4fmuC2U7O/P2lFa0Pr0BE1/9kBYtWiAiZGZm1moVz927dzNt\n2jSOHj0a9jmMiWVuWt6h1sFfVReragNV7aWqZzsPGcxV1QOq2l9Vu6rqQFX93q/MWFXtrKqZqjq/\ntnWIJRLfA+J71u4cIlwzKIUda3+GqrJ9+3aGDBnChg0b+MlPfoKIICKMHj2a4uLioM/73HPPMXTo\nUDp16sS8efNqVUdjYpGqhLzFKnvCNwok5bcROEsckuJ7FL1t27ZMnz4dVaW0tJTx48cDvpvlycnJ\niAiXXHIJa9eurfaMb731FmVlZeTm5jJ48GD69+/P1q1bI1BXY2KD9fzNCSWJF0Cjm2p3ksZ3IQln\nH5fcsGFD7r33XlQVVWXFihVccMEFLFq0iDPOOAMRIT4+nokTJ+LxeCrK5ebmsnPnzor9oqIisrOz\n6dmzJw899BAFBSEuQGdMDFINfYtVFvyjRJo+Dok/Dq9w0hVIyv8FlfXss8/mv//9L6rK4cOHefTR\nRykrK+MXv/gFDRs2RES49dZbmTx5Mg0aNDimrMfjobi4mJdeeon09HRef/113HR7xriPFwl5i1W2\nqmcUqZaiBX+FwomAp8b8EI+k3AuNf4lv/afamTt3Lvfeey/btgX34Fnjxo3JyMjg1VdfpVevXrW+\nvjGRFInZPmd/8PuQy6284kl3zvYx4ROJJ67JA0jzmZB0FVDV8syJ0Ggw8oNZSMqwiAR+gEGDBrF1\n61aKi4uJj695aejCwkJWrlzJj370I+666y727w/+1ZLGxAI3jflbz78OUe9hKP0ayjaBFoMkQ3w3\naNgdiUs5YdedN28eN954I/n5wS84l5CQQEJCAk899RS/+tWvaNjQ3gtkoisSPf8z33ss5HKrrxpj\nPX9TOxLXBEk8D2l8O5LyS6TxbUhC3xMa+AHefvttDh8+HFKZo0ePUlBQwIgRI+jatSsff/zxCaqd\nMSePTfU0rqGqvPvuu2HfyC0sLGTbtm1cfvnlXH311ezYEZHVDo0xJ5gFf8MFF1xA165dadeuHS1a\ntKBp06YkJiYiIsTFxZGQkEBycjIpKSk0bdqU1NRUUlNTadq0KU2aNCE5OZmysjLee+89OnXqxKRJ\nk6LdJGPC4qaevw3UupyIMHPmzIDHyh8aKywspKioqGKrbr+wsJD27duf3EYYEyGxfAM3VBb8TZVE\npOLGbrNmzaJdHWNOOBfNL7Hgb4wx5WJ5GCdUFvyNMcZhwd8YY1zIRaM+FvyNMaac9fyNMcaNXNT1\nt+BvjDEO6/kbY4wL2VRPY4xxITf1/G15B2OMcSHr+RtjTDnr+RtjjPtE6h2+IjJZRHaLyGq/tGYi\nMl9ENorIPBFJraLsIBHZICKbROThYMqLyAgR2Swi60VkYDBtteBvjDHlNIwtsCnApZXSHgEWqmpX\nYBEwonIh8b2mb7xTtgdws4h0q668iHQHbgQygcuAl0Wkxp8wFvyNMcYRqSWdVfVT4GCl5GuAqc7n\nqcC1AYr2BTarao6qlgIznHLVlb8amKGqZar6LbDZOU+1LPgbY0y5yPX8A2mhqrsBVHUX0CJAnjaA\n/xuRcp00gJZVlK9cJs+vTJXshq8xxjiCmep5ZP02jqzfFpHLRbO8BX9jjCkXRDhN6taRpG4dK/YP\nvfthsGffLSItVXW3iJwO7AmQJw9o57ef5qQB7KqifB7QtooyVbJhH2OMqSBhbDWerNxs4A7n8+3A\nrABllgOdRSRdRBKAIU656srPBoaISIKIdAA6A8tqaqkFf2OMKRehMX8ReR34DMgQke0icifwNDBA\nRDYClzj7iEgrEXkfQFU9wH3AfGAtvhu5653TjgtUXlXXAW8A64A5wDDVmheqkCDyRI2IBNMGY4xB\nRNBarM8gIpo+5emQy+Xc+UitrhstNuZvjDHlYi+Gh82GfYwxxoVcF/znzp1Lt27dyMjI4JlnngHg\nrbfe4owzzqBBgwasWLEiyjU0dVWgvzu/+93vyMzMpFevXlx//fXk5+dHuZamNiK1vEMscFXw93q9\n3HfffcybN4+1a9fy+uuvs2HDBnr27Mk777zDxRdfHO0qmjqqqr87AwcOZO3atXz11Vd06dKFsWPH\nRruqpjZO7ENedYqrgv+yZcvo0qUL6enpxMfHM2TIEGbNmkXXrl3p0qULdnPZVKWqvzv9+/cnLs73\nz6hfv37k5uZGuaamVlRC32KUq4J/Xl4ebdv+71mItLQ08vJqfBbCmKD+7rz66qtcdtllJ7tqJoJE\nQ99iVUzP9jmw6yALX/uEdZ9v5Juvd1BSVEJyk0Z0ODOdnhdkcsnPLqRJs5RoV9PUUV71sLt4NcWe\nA3i8JSQ0SKFZQkeaJqSFfK4nn3yS+Ph4fvrTn56AmpqTJoaDeahiMvgXfF/IKw+9xoJp2ZSVeo45\ntp+D7Ni4k0/e/JxJj/yTq351KXc8cROJjRJp06YN27dvr8ibm5tLmzY1rn9k6pnisgNsPDSbjYdm\nU1hW+Ql7oVVybzJTB9Mu5QLipAFAtX93/vGPfzBnzhwWLVp0sppgTpQYHsYJVcwF/43LtzBq8LPs\nyztQY96S4qO89fx7fP7eFzwx+2HOPfdctmzZQk5ODq1atWLGjBlMnz79mDI27l+/rTrwGiv3TcZL\nWRU5lO+KvuS7oi9JiW9F/9ZjOTWxc5V/d+bOncuzzz7LJ598QmJi4kltizkBXPTPP6bG/Dd9uZXf\n9f9jUIHfX97m73gwayS7vtnD+PHjGThwID169GDIkCFkZmby7rvv0rZtW5YsWcKVV15p47b11JI9\nf+HLfROqCfzHKij9jg923Mvu4tU0aNAg4N+dX//61xQUFDBgwAB69+7NsGHDTnArzAnlotk+MbO8\nw5GiEu4560F2bt0d9vky+nTixc+fpEGDBpGqookRqw68xpf7JoRVNjGuKVe2+zupCe1qzmyiJiLL\nO7z0bMjlcu59KCaXd4iZnv9ro9+sVeAH2PTFVt598T8RqpGJFcVlB1i5b3LY5Uu8+Xy575UI1sjU\nWTbV88Sr6iXFgRQXHuGDVxZE5LrvvDgHr9cbkXOZ2LDx0Oygh3qqklPwX4rK9kWoRqauctNUz6gE\n/xpeUnycz2d/QeGhoohce3fOXtZ8sr7mjKZe8KqHjYdm15yxBoqHDd8HWn7dmNgUrZ5/dS8pPs7G\nZVsievH1SzdH9Hym7tpTvCbAdM7wbDu8MCLnMXWYi274Riv4V/eS4uPs2BjcU7jFWohXax7SCfZ8\nJvYVefYHle/g7pIa8xzxHKxtdYypM+r8PP9Ro0aRvSGbXbqHZpzGqRLohfe++fmLcW7mKrQgjS70\npJE0Pi5v2dHajf+a2OHxHq0xT0mxh/+76AsAWrZP4r6XM2ndKfm4fGVa8xeEOXmys7PJzs6O6Dlj\neQw/VNEK/tW9pPgYo0aNIm7dc/z32yXVnlBE6M8NHNA9bGAle8hlD7mgkEAiXTmbFrRBRGzJBxdJ\naFDzn3ViowZMWHMeM/+cw/xXd/KHy1cC8MMrf8CtozvRKMX3zyQhzv7e1CVZWVlkZWVV7I8ePbr2\nJ43h2Tuhilbwr3hJMfAdvpcU31xV5s69OvDft6oP/uVOlRb8iEsBOKolbGUteWxjDU55heT1Hm45\nOJhmzZrVrhWmzmuW0AHfO7Sr79I1TIjjpoc7cNPDHTi4u4SJ/7eJpe/vY+n7vhk+Q0Z04NZf9j7x\nFTbR5aKef1TG/Gt4SfFxev3kjLCukyCJZEpv+ssNXML1nEFfGhLP7A/f4dRTT0VEOOuss/j000/D\nOv/ixYu54oorWLt2bVjlzYnXNCGN1snnhFSmWctEfvdaTyZvPJ+H/3UGiclxzBj7DVek/5WkpCQ+\n/vjjE1RbE3V2w/fEU9W5qtpVVbuoarVvTe7eL4OOZ6bX6noiwunSjv8b9DiqytatW7n22mtZvXo1\nF154ISKCiPDkk09y5MiRoM75/PPPM2fOHPr06cM999zDwYN2Q7Au6pZ6XdhlM/qk8vLK8/jX5qt4\n8cW/UFJSQlZWFiLCBRdcYOv31zM2z78OuuOJIbU+R1yccOvIGwHo2LEj77zzDqrK0aNH+fOf/wzA\nY489RqNGjRARLr30UtavD/yDxOPxMH/+fACOHDnC1KlTad++PRMmTMDj8QQsY6KjXcoFpMS3qtU5\nujcbzK9/PRxVJT8/n1tvvZXFixfTtm1bRIT777+fkpLgbwirKi+99BLffPNNreplIsx6/nXPeVf1\nYcBttXvN4g0PXk33fhnHpcfHx3P//fejqqgqy5cvp1+/fsyfP5/u3bsjIiQmJjJ58uSKp4OXL1+O\nyP9uDpWUlJCfn8+DDz5IZmYmixcvrlVdTeTESQP6tx5LfNzxM7+CkZbcjzNP/VnFfpMmTZg2bRqq\nyoYNG8jMzOSFF14gKSkJEeH111+v8ZxLly7lgQceoGfPnkyYMMFWk60rLPjXTff//Rf0HnBmWGWz\nhpzP0LHBvWijT58+fP755xW9vEceeYSjR4/y85//nAYNGiAiXHjhhRQXFx9XtrCwkM2bNzNw4EAG\nDx5sbwqrI05N7MzANn8iMS41pHJpyf34cesniJPAcyO6du3KunXrUFXeeecdAG655RZEhHbt2rFq\n1aqA5V555RXKysooLCzkwQcfJCsri507d4bWKBNxkRz2EZHhIrLG2X4T4PgpIvK2iKwSkSUi0t1J\nzxCRlSKywvnvofLyIjJSRHKdYytEZFC4bY2p4J+QlMATsx/h+vuvIC4uuClZDeMbcPvomxjxz99U\nvGs1FE2aNGHs2LEVvwrmzJlDhw4dKCsro6ys6ucFioqKeP/998nIyOCJJ54IaUjAnBgtG/XkynZ/\np31KFkL1K7s2atCc3s1/Tv8244iPaxTU+a+99lpUldLSUv7whz+wY8cOevXqhYgwePDgintCJSUl\nvPHGGxW/IgsLC/nss8/o2rUr//znP+1XQDRFaGE3EekBDAX6AL2AK0WkY6VsjwIrVfUs4HbgRQBV\n3aSqZ6tqb+AcoBB426/c86ra29nmhtvUmFnSubL1Szfz5p9m8dmsL/CUHT/GHp8Yz8U3nseND11D\nhzMiuxTvd999R4cOHYIO6MnJyTRt2pQJEyZw1VVXHTNcZKKjqGwfGw/NZlv+Qt9rHPUo8XGNaZbQ\nkW6nXEN6ykVV9vZDsWfPHm677TbmzZtXkda/f3+WLl3K4cOHj8ufnJzMRRddxLRp0zjttNNqfX03\nicSSzp3GPR9yua0PP3DcdUXkBuBSVb3b2X8MOKKqf/LL8z4wVlUXO/tbgPNUda9fnoHAH1T1Qmd/\nJFCgqs+FXNFKYjb4l8vff5iNX2zl2zXbOeK8w7fjWelk9OlE46bHP6UZCZMmTeL++++nsLAwpHKN\nGzemd+/eTJw4ka5du56Qupm6a9myZVx++eXs31/9khPx8fEkJyczZcoUrrsu/JlKbhOR4P90GMH/\nkYDBvxvwLnAeUAIsBJar6nC/PE8CSar6oIj0BT4FfqiqK/3yTAa+VNWXnf2RwB3AIeAL4EFVPRRy\npakHwT8aBgwYwMKF4S3yFRcXR0JCAnfffTdjxoyhadOmEa6dqcv27dtHWlpaUL8ak5OTueyyy5g0\naRKnnHLKSahdbItE8O88tubgX7RtC8Xb/rfY5MEP5we8rojcCdwLFOB7nqlEVR/wO94EeAHfsNAa\noBtwt6qudo7HAzuB7uW/BkTkNGCfqqqIjAFaqerQcNobU2P+dYHH4+HTTz8Ne+jG6/Vy5MgRJk6c\nSLt27Xj11Vft/QIuMn369KDvPZXfN+rUqRNz54Y9tGtCEcTsnuQOnWl+yaCKrcpTqU5R1T6qmgV8\nD2yqdPywqt7ljN3fDrQAtvlluQxfr3+vX5m9fj3iicC54Ta1zi/sVtc0aNCAKVOmsGXLFg4fPkx+\nfj6HDx/m8OHDFBQUUFhYSFFREcXFxRQXF3PkyBFKSko4evQopaWlxMXF0bBhQ+Li4igoKGDo0KFs\n2bKFp556KtpNMyfBSy+9FHCWWFVKSkooKSnh+uuv54YbbuCll14iJcXWGDpRIvnQloicpqp7RaQd\ncB3Qr9LxVKBIVUtF5G7gY1Ut8MtyMzC9UpnTVXWXszsY+Drs+tXFYZVydXXYJ1yqypEjRygqKjpm\na926NS1btox29cwJtmXLFjIyMsKezZOUlERqaipvvPEGF110UYRrF/siMezTZUzoY/6bHzt+zN85\n3yfAqUAp8FtVzRaRewBV1VdEpB8wFfDiGxYaWj5+LyLJQA7QUVUP+51zGr5hIi/wLXCPqob1flsL\n/sacJKVT/VrcAAAXY0lEQVSlpYwePZoNGzaQk5PDzp072b9/P16vl6SkJOLi4igrK6O4uLjaocBG\njRpx55138qc//YlGjYKbhuoGEQn+T4QR/P8QOPjXdRb8jYmy/Px8cnNzycvLIzc3l9zcXLZs2cI3\n33xDbm4ue/fupbi4mKSkJBo2bEhpaSlFRUW0bduW7OxsOnasPH3cnSIR/DP+GHrw3/R4bAZ/G/M3\nJsqaNm1K9+7d6d69e5V5SkpK2LlzZ8WXQ25uLtu2bbPxfxM2C/7GxIDExEQ6dOhAhw4dol2V+s1F\nAw0W/I0xxhHLSzSHyoK/McaUc1Hwt4e8jDHGhaznb4wx5VzU87fgb4wxDhvzN8YYN7Lgb4wx7mM9\nf2OMcSML/sYY40IW/I0xxn1s2McYY9zIgr8xxriQBX9jjHEfG/Yxxhg3suBvjDHu46aevy3sZowx\nLmQ9f2OMKeeinr8Ff2OMKeei4G/DPjFs7ty5dOvWjYyMDMaNG3fMseeee464uDgOHDgQpdoZE3sk\njC1WWfCPUV6vl/vuu4958+axdu1apk+fzoYNGwDIzc1lwYIFpKenR7mWxsQYDWOLURb8Y9SyZcvo\n0qUL6enpxMfHM2TIEGbNmgXAb3/7W5599tko19CY2CMa+lbluUSGi8gaZ/tNgOOniMjbIrJKRJaI\nSHe/Y9866StFZJlfejMRmS8iG0VknoikhttWC/4xKi8vj7Zt21bsp6WlkZeXx+zZs0lLS6Nnz55R\nrJ0xMSpCPX8R6QEMBfoAvYArRaRjpWyPAitV9SzgduBFv2NeIEtVz1bVvn7pjwALVbUrsAgYEW5T\n7YZvHbN+xx6+O5hPUUkpjRMTSPtBKl1a/yCosoWFhTz11FMsWLCgIk01hn+XGnOyRe6fSyawVFVL\nAETkE2Aw8Ce/PN2BsQCqulFE2ovIaaq6F9/thECd82uAi53PU4FsfF8IIbPgXwcUlZQy54v1vPHp\najbm7T3ueI92LbnpwrMY1LsrifG+P7I2bdqwffv2ijy5ubl07NiRDz74gLPOOgtVJTc3l3POOYdl\ny5bRokWLk9YeY2JVBB/y+hoYIyLNgBLgcmB5pTyr8H0hLBaRvkA7IA3Yi+9raIGIeIBXVHWiU6aF\nqu4GUNVdIhL2P2ypyz1DEdG6XL9IWLhqM6NeX8Dh4pIa857SOImxt13OjzLT8Xg8dO3alQ8//JBW\nrVrRt29fpk+fTmZmZkX+Dh06sGLFCpo1a3Yim2BMnSAiqGrYE3BERM+69/ka8xXkbaEgb0vF/u7l\n8wNeV0TuBO4FCoC1QImqPuB3vAnwAr5hoTVAN+BuVV0tIq1U9TsROQ1YANynqp+KyAFVPdXvHPtV\ntXk47bWefxTN/GwNY/79Id4gv+C+LzzCrye8y5hbB3HZOV0ZP348AwcOxOv1MnTo0GMCP1T8YzgR\nVTemXgqm59+kdWeatO5csb97+fyA+VR1CjAFQESeBHZUOn4YuKvi2iLfANucY985/90rIu8AfYFP\ngd0i0lJVd4vI6cCe4Ft3LAv+UZK9ZitPvhF84C9X5vXyh3/Oo3mTZAYNGsTGjRurzLtt27baVtMY\nd4lgX6l8/F5E2gHXAf0qHU8FilS1VETuBj5W1QIRSQbinM+NgYHAaKfYbOAOYBy+m8Szwq2fzfaJ\nAo/Xy9NvfYTHG97ftFKPh6dnfhThWhljImymiHyNL0APU9V8EblHRH7hHM8EvhaR9cClwHAnvSXw\nqYisBJYA76lq+c+LccAAEdkIXAI8HW7latXzF5FngKvw3dDYCtypqvnOsRH4ftKUAcPLKy8ivYF/\nAEnAHFW9vzZ1iEWffP0N3x08XKtzbP1uP19szqVPl7QI1coYE8lVPVX1ogBpE/w+LwG6BsjzDb77\nAIHOeQDoH4n61bbnPx/ooaq9gM04c06dhxVuxPfNdhnwsoiU3xD5GzBUVTOADBG5tJZ1iDn//nRV\nnTqPMcZhT/gGR1UXqqrX2V2Cb5oSwNXADFUtU9Vv8X0x9HVuUDRR1fIpT9OAa2tTh1hzsKCYJRtz\nInKuRau3UFJaFpFzGWOw4B+mu4A5zuc2HHtnO89JawPk+qXnOmmusf9wIcHc4z2afwBv6dFq85R5\nvHxfeCRCNTPGRHJ5h7quxjF/EVmA7wZERRK+77vfq+p7Tp7fA6WqOj3SFRw1alTF56ysLLKysiJ9\niZMqmJ66qrLxX8+gZf8L/smtOtD8jPNI7XwmcQ0TQjpfsPLz80lMTCQxMTFi5zTmRMnOziY7Ozuy\nJ43hYB6qWj/kJSJ3AHcDP/F7lPkRQFV1nLM/FxgJ5AAfqWqmkz4EuFhVf1XFuevdQ145ew5y9Zh/\nBJW3tDCfg+uXs3/t55TmH780c+PWHXlu9O+5/Wc/JSkpqdZ1S09PJz8/nxEjRjBs2DBSUlJqfU5j\nTpZIPOR1ztDnQi735eQHa3XdaKlV8BeRQcBzwEWqut8vvTvwL+CH+IZ1FgBdVFVFZAnwG3yPOn8A\nvKiqc6s4f70L/iWlZVzy2CtBPdEbSGnBIQ6sX8aBrz+ntOD7445nZWVxzz33cN1114XUg//+++9p\n0aIFpaWlJCcnIyIMHz6cBx54gObNw3qA0JiTKiLB/64wgv+rsRn8azvm/1cgBd8aFCtE5GUAVV0H\nvAGsw3cfYJhfFL8XmAxsAjZXFfjrq8T4hlx5bmbNGasQn5JKy3MHkHnn44x/f3HFGj6jR4+mdevW\nZGdnc/PNN5OUlISIICJccsklvPHGGxw9WvU9hBUrVtCoUSMAioqKKCws5Pnnn6dt27bcd9995OXl\nhV1nY2KFm8b8azvbp4uqpqtqb2cb5ndsrKp2VtVMvwcUUNUvVbWnU3Z44DPXbzddeFatz9EwLo4b\nzj8T8C3y9vjjj5OXl4eqoqps376dkSNHcvrpp7No0SJuuukmEhMTK74QBg4cyMyZMyktLQVg+fLl\nFBcXH3ONI0eOUFxczMSJE+ncuTO33norW7ZsOa4uxtQbLprtYwu7RckvX36bzzeEP+VzYK8uPHvX\nlSGVycnJYdKkSUyYMIG9e49fPbQmDRo0ID4+ngEDBjBmzBjOPPPMkM9hzIkSiWGfc28Pfdhn+VR3\nDvuYMI352aW0PrVpWGU7tDyVPwwJ/SG/9PR0nnjiCfbs2VPxC2Hbtm08+uijQZX3eDwcOXKEDz74\ngH79+pGVlcVnn30Wcj2MqbNc1PO34B8lP2jamAn3Xk/bH4T2FrZOrZrz92GDaZpc+9k94Fv2+cEH\nHyQhIaHmzA6v10txcTEff/wxAwYM4JxzzmHevHm2gqgxMcSCfxS1O+0Upv12CNf1O4Ok+OofuUhO\njOfGC85k6v03cXqzJhGth//N3lAVFRWxYsUKrr/+erp168abb76Jx+OJaP2MOVncdMPXlnSOslOb\nJDPqpwN44NoLmbV0He8u+ZpdBw/7XuOYlECb5qlc168HV/XtTuOk4HvnoVi+fDlFRUW1OkdxcTFb\ntmzhxhtv5Mwzz2TVKlt3yMSgGA7mobLgX0c0TU7i1h/35tYf9z7p1/76669p0KABSUlJeL1ePB4P\npaWleL1eEhMTSUpKolGjRiQnJ9O4cWOaNGlCkyZNSE1NJTU1lVNOOYXU1FRSUlJISUmhTRtXrdhh\n6pFY7smHyoK/4cUXX+TXv/41KSkpNG7cuCKIlz8rYIxruOi+lQV/Q/Pmze0pXmOwnr8xxriTBX9j\njHEf8dacp76w4G+MMeWs52+MMe5jY/7GGONGNtvHGGPcx009f1vewRhjXMiCvzHGlIvgqp4iMlxE\n1jjbbwIcP0VE3haRVSKyxHkDIiKSJiKLRGRt5bIiMlJEcp2XZ61w3qYYFhv2McYYR6SGfUSkBzAU\n6AOUAf8RkfdVdZtftkeBlao6WES6Ai8B/Z38D6jqVyKSAnwpIvNVdYNT7nlVfb62dbSevzHGlFMN\nfQssE1iqqiWq6gE+AQZXytMdWOS7rG4E2ovIaaq6S1W/ctILgPX43oVeLiJrrljwN8YYRwSXdP4a\nuFBEmolIMnA50LZSnlU4Xwgi0hdoB6QdUx+R9kAvYKlf8n0i8pWITBKR0F4I4seGfYwxplwQwz7f\n79vKof1bqz+N6gYRGQcsAAqAlUDlF108DbwgIiuANZXzOEM+bwHDnV8AAC8Df1RVFZExwPP4hpdC\nZsHfGGMcwYz5N2veiWbNO1Xsb9+0MGA+VZ0CTAEQkSeBHZWOHwbuqri2yDfANudzQ3yB/zVVneVX\nxv/l2xOB92qucWAW/I0xppw3chP9nfH7vSLSDrgO6FfpeCpQpKqlInI38LFfD/9VYJ2qvlCpzOmq\nusvZHYxveCksFvyNMaZcZB/ymikipwKlwDBVzReRewBV1Vfw3RSeKiJeYC3O8I2InA/cAqwRkZVO\nrR5V1bnAMyLSC/AC3wL3hFs5C/7GGOOI5BO+qnpRgLQJfp+XAF0D5FkMNKjinLdFqn4W/I0xppyt\n7WOMMe5ja/sYY4yp16znb4wx5VzU87fgb4wxDrExf2OMcSF7h68xxriP9fyNMcaN3BP7LfgbY0wF\n6/kbY4z7uGmevwV/Y4wpZz1/Y4xxH7HZPsYY40LW8zfGGBdyT+y3tX2MMcaNrOdvjDEOe8jLGGPc\nyIK/Mca4kItm+0RkzF9EHhQRr/O+yvK0ESKyWUTWi8hAv/TeIrJaRDaJyF8icX1jjIkEUQ15i1W1\nDv4ikgYMAHL80jKBG/G9oPgy4GUREefw34ChqpoBZIjIpbWtgzHGRIRq6FuMikTP/8/AQ5XSrgFm\nqGqZqn4LbAb6isjpQBNVXe7kmwZcG4E6GGNM7bko+NdqzF9ErgZ2qOqa/3XsAWgDfO63n+eklQG5\nfum5TroxxkSfi8b8awz+IrIAaOmfhO9RiMeAR/EN+Zwwo0aNqviclZVFVlbWibycMSZGZGdnk52d\nHdFzxvIYfqhEw2ysiJwBLASK8H0hpOHr4fcF7gJQ1aedvHOBkfjuC3ykqplO+hDgYlX9VRXX0HDr\nZ4xxFxFBVaXmnFWW10vPfCzkcvNWjwl4XREZDvzc2Z2oqi9WOn4K8CrQCSgG7lLVdc6xQcBf8A3N\nT1bVcU56M+DfQDrwLXCjqh4KudLUYsxfVb9W1dNVtaOqdsA3hHO2qu4BZgM3iUiCiHQAOgPLVHUX\ncEhE+jo3gG8DZoVbB2OMiagIjfmLSA9gKNAH6AVcKSIdK2V7FFipqmcBtwMvOmXjgPHApUAP4GYR\n6eaUeQRYqKpdgUXAiHCbGsnlHRTfLwCcb683gHXAHGCYXxf+XmAysAnYrKpzI1gHY4wJX+Ru+GYC\nS1W1RFU9wCfA4Ep5uuML4KjqRqC9iJyGb/Rks6rmqGopMAPfJBqc/051Pk+lFhNmIvaQl6p2rLQ/\nFhgbIN+XQM9IXdcYY+qgr4ExzjBNCXA5sLxSnlX4vhAWi0hfoB2+4fM2wA6/fLn4vhAAWqrqbgBV\n3SUiLcKtoD3ha4wx5YKY7XOgMIcDhTnV5lHVDSIyDlgAFAArAU+lbE8DL4jICmBNFXlqEvZNUQv+\nxhjjCGa2T/PkdjRPblexv3XfpwHzqeoUYAqAiDzJsb15VPUwzuQYJ883wDYgGd+vgHLlk2kAdolI\nS1Xd7Tw3tafGClfBlnQ2xphyEXzIyxm/R0TaAdcBr1c6nioi8c7nu4GPVbUA3/BQZxFJF5EEYAi+\nSTQ4/73D+Xw7tZgwYz1/Y4wp543o1PKZznpnpfgmveSLyD2Aquor+G4KTxURL7AW3+wgVNUjIvcB\n8/nfVM/1zjnHAW+IyF34ps7fGG7lLPgbY0y5CD5XpKoXBUib4Pd5CdC1irJzAx1T1QNA/0jUz4K/\nMcaUc9FDpRb8jTGmnAV/Y4xxociO+ddpFvyNMaacumdZTwv+xhhTzoZ9jDHGhVw07GMPeRljjAtZ\nz98YY8rZsI8xxriQBX9jjHEhC/7GGONCXpvqaYwx7mM9f2OMcSEL/sYY40Iumudvwd8YYxxqyzsY\nY4wLWc/fGGNcyMb8jTHGhWyqpzHGuJCLev62sJsxxriQ9fyNMcahNuxjjDEu5KJhHwv+xhhTzkVT\nPW3M3xhjyqk39K0KIjJcRNY4228CHG8qIrNF5Csnzx1OeoaIrBSRFc5/D5WXF5GRIpLrHFshIoPC\nbWq9Cv7Z2dnRrkLEWFvqrvrUnvrUlkhQr4a8BSIiPYChQB+gF3CliHSslO1eYK2q9gJ+DDwnIg1V\ndZOqnq2qvYFzgELgbb9yz6tqb2ebG25bLfjXUdaWuqs+tac+tSUiItfzzwSWqmqJqnqAT4DBla8G\nNHE+NwH2q2pZpTz9ga2qmuuXJrVrpE+9Cv7GGFMbker5A18DF4pIMxFJBi4H2lbKMx7oLiI7gVXA\n8ADnuQmYXintPmeoaJKIpIbbVgv+xhhTLoie/gHvLrZ611RsAU+jugEYBywA5gArAU+lbJcCK1W1\nNXA28JKIpJQfFJF44GrgTb8yLwMdnaGiXcDz4bdVtc5u+H4W2WabbbYFtdUy3nwb5nW/DeLcTwK/\nrJT2PnC+3/6HQB+//auBudWcMx1YHW576/RUT1WNyNiWMcbURFXbR/J8InKaqu4VkXbAdUC/Slly\n8I3pLxaRlkAGsM3v+M1UGvIRkdNVdZezOxjf8FJ49VMXPdRgjDEni4h8ApwKlAK/VdVsEbkH3y+U\nV0SkFfAPoJVTZKyqTnfKJuP7cuioqof9zjkN3+whL75fKveo6u6w6mfB3xhj3Kfe3PAVkUEiskFE\nNonIw9GuT01EJE1EFonIWv+HQJzZAfNFZKOIzPO/my8iI0Rks4isF5GB0av98UQkznnoZLazH5Pt\nABCRVBF506nfWhH5Yay2R0R+KyJfi8hqEfmXiCTESltEZLKI7BaR1X5pIdddRHo77d8kIn852e2o\ns6J9UzdCN4bjgC34boDEA18B3aJdrxrqfDrQy/mcAmwEuuGbIfA7J/1h4Gnnc3d8MwYaAu2d9kq0\n2+HXnt8C/wRmO/sx2Q6njv8A7nQ+NwRSY7E9QGt8Y8gJzv6/gdtjpS3ABfiGOFb7pYVcd2ApcK7z\neQ5wabT/bOrCVl96/n2Bzaqao6qlwAzgmijXqVqquktVv3I+FwDrgTR89Z7qZJsKXOt8vhqYoapl\nqvotsBlfu6NORNLwzWOe5Jccc+0A3yP3wIWqOgXAqechYrQ9QAOgsYg0BBoBecRIW1T1U+BgpeSQ\n6i4ipwNNVHW5k2+aXxlXqy/Bvw2ww28/10mLCSLSHl8PZwnQUp0bOOq7q9/CyVa5jXnUnTb+GXgI\n37S3crHYDoAOwD4RmeIMY73i3HyLufao6k7gOWA7vnodUtWFxGBb/LQIse5t8MWDcjEVG06k+hL8\nY5bzUMdbwHDnF0DlO/B1+o68iFwB7HZ+xVQ3NbdOt8NPQ6A38JL61lYpBB4hxv5cAETkFHw95XR8\nQ0CNReQWYrAt1YjlukdVfQn+eUA7v/00J61Oc36KvwW8pqqznOTdzpxfnJ+se5z0PI59PLyutPF8\n4GoR2YZvTvJPROQ1YFeMtaNcLrBDVb9w9mfi+zKItT8X8M0h36aqB9S3vsw7wI+IzbaUC7XusdCm\nqKgvwX850FlE0kUkARgCzI5ynYLxKrBOVV/wS5sN3OF8vh2Y5Zc+xJmt0QHoDCw7WRWtiqo+qqrt\nVLUjvv/vi1T1VuA9Yqgd5ZwhhR0ikuEkXQKsJcb+XBzbgX4ikiQigq8t64ittgjH/qIMqe7O0NAh\nEenr/D+4za+Mu0X7jnOkNmAQvhkzm4FHol2fIOp7Pr61Pr7CN0thhdOGU4GFTlvmA6f4lRmBbxbD\nemBgtNsQoE0X87/ZPrHcjrPwdSi+wreUbmqstgcY6dRrNb4bpPGx0hbgdWAnUILvi+xOoFmodce3\nLPIaJza8EO0/k7qy2UNexhjjQvVl2McYY0wILPgbY4wLWfA3xhgXsuBvjDEuZMHfGGNcyIK/Mca4\nkAV/Y4xxIQv+xhjjQv8PZw0R6oP3QUgAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "circles(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=np.array(wf.R),\n", + " c=WS,\n", + " cmap=plt.cm.viridis,lw=0,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i]+0.7*np.array([wf.R[i],wf.R[i]]))\n", + " ax.arrow(x=wf.xyz[0,i],\n", + " y=wf.xyz[1,i],\n", + " dx=0.5*wf.R[1]*WS[i]*np.cos(np.deg2rad(270-WD[i])),\n", + " dy=0.5*wf.R[1]*WS[i]*np.sin(np.deg2rad(270-WD[i])),\n", + " head_length=2*wf.R[1],head_width=wf.R[1],\n", + " length_includes_head=True,\n", + " fc='k',ec='k',\n", + " )\n", + "ax.axis('equal')\n", + "ax.set_xlim([-50, 1000])\n", + "#ax.set_ylim([-400, 400])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(-100, 1000)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "varout=results.u_wt#p_wt/1e6\n", + "\n", + "fig = plt.figure(figsize=[6,5])\n", + "ax = fig.add_subplot(111)\n", + "circles(x=wf.xyz[0,:],\n", + " y=wf.xyz[1,:],\n", + " s=np.array(wf.R),\n", + " c=varout,\n", + " cmap=plt.cm.viridis,lw=0,\n", + " )\n", + "plt.colorbar()\n", + "for i in range(wf.nWT):\n", + " ax.annotate(str(wf.__getattr__('name')[i][-2:]).zfill(2),wf.xyz[[0,1],i]+0.7*np.array([wf.R[i],wf.R[i]]))\n", + "ax.axis('equal')\n", + "ax.set_xlim([-100, 1000])\n", + "#ax.set_ylim([-500, 500])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "WD = (np.arange(-50,50)+270.)#np.linspace(-50,50,200)+270\n", + "WS = 10." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "P_rat_py_v0 = []\n", + "P_rat_py_v1 = []\n", + "P_rat_fgcl = []\n", + "P_rat_fgclm_s = []\n", + "P_rat_fgclm = []\n", + "P_rat_fgclm_rdn = []\n", + "for wd in WD: \n", + " out = gcl(WF=wf, WS=WS, WD=wd, TI=0.1, version='fort_gcl')\n", + " P_rat_fgcl = np.append(P_rat_fgcl,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WF=wf, WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='fort_gclm_s')\n", + " P_rat_fgclm_s = np.append(P_rat_fgclm_s,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " #out = gcl(WF=wf, WS=WS*np.ones([wf.nWT]), WD=wd+np.random.normal(loc=0.0, scale=2, size=[wf.nWT]), \n", + " # TI=0.1*np.ones([wf.nWT]), version='fort_gclm_s')\n", + " #P_rat_fgclm_rdn = np.append(P_rat_fgclm_rdn,out.p_wt[1]/out.p_wt[0])\n", + " \n", + " out = gcl(WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='py_gcl_v1')\n", + " P_rat_py_v1 = np.append(P_rat_py_v1,out.p_wt[1]/out.p_wt[0])\n", + "\n", + " out = gcl(WF=wf, WS=WS*np.ones([wf.nWT]), WD=wd*np.ones([wf.nWT]), TI=0.1*np.ones([wf.nWT]), version='py_gcl_v0')\n", + " P_rat_py_v0 = np.append(P_rat_py_v0,out.p_wt[1]/out.p_wt[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "WDm = WD.reshape([-1,1])*np.ones([1,wf.nWT])\n", + "out = gcl(WF=wf, WS=WS*np.ones_like(WDm), WD=WDm, TI=0.1*np.ones_like(WDm), version='fort_gclm')\n", + "P_rat_fgclm = out.p_wt[:,1]/out.p_wt[:,0]\n", + "\n", + "out = gcl(WF=wf, WS=WS*np.ones_like(WDm), WD=WDm, TI=0.1*np.ones_like(WDm), version='fort_gclm_av')\n", + "P_rat_fgclm_av = out.p_wt[:,1]/out.p_wt[:,0]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3cAAAE4CAYAAAD4ogqGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XdcVfX/wPHXwcG4gggqIuoFR+5suVILF5ajyMzBry9K\nmeXASMWZeTE1EtMSywXiylGpDXNvrUQtzUFpil5x4krlKrLO7w/kBspSxrnA+/l4+Hhwzzmfw/vC\nxXPe5/P5vD+KqqoIIYQQQgghhCjarLQOQAghhBBCCCFE3klyJ4QQQgghhBDFgCR3QgghhBBCCFEM\nSHInhBBCCCGEEMWAJHdCCCGEEEIIUQxIcieEEEIIIYQQxUCukjtFUV5SFOVvRVFOKIoyKpP9joqi\nrFYU5U9FUfYqitIgt22FEEIIIYQQQuSdktM6d4qiWAEngPbABWA/0FtV1b/THTMVuK2q6seKotQF\nvlRVtUNu2gohhBBCCCGEyLvc9Nw1A/5RVdWoqmoisAJ49YFjGgDbAFRVPQ64K4pSKZdthRBCCCGE\nEELkUW6SOzcgJt3rc/e3pfcn0B1AUZRmQA2gWi7bCiGEEEIIIYTIo/wqqBIMVFAU5Q9gMHAQSM6n\ncwshhBBCCCGEyEHpXBxzntSeuDTV7m8zU1X1NvBW2mtFUU4D0YBdTm3Ttcl+8p8QQgghhBBCFHOq\nqiqP2zY3yd1+oLaiKHrgItAb6JP+AEVRygN3VFVNVBTlHWCnqqpxiqLk2Da9nIq7CKEFg8GAwWDQ\nOgwhHiKfTWHJ5PMpLJV8NoUlU5THzuuAXCR3qqomK4oyBNhE6jDOcFVV/1IU5d3U3eo8oD6wSFGU\nFOAY8HZ2bfMUsRBCCCGEEEKIh+Sm5w5VVTcAdR/YNjfd13sf3J9dWyGEEEIIIYQQ+Su/CqoIUWx5\nenpqHYIQmZLPprBk8vkUlko+m6I4y3ER88KiKIpqKbEIIYQQQgghRGFTFKXAC6oIIYQQQgghCom7\nuztGo1HrMEQB0uv1nDlzJt/PKz13QgghhBBCWJD7vTdahyEKUFa/42LVc5e+LO2xY8ewt7enRo0a\nmR6b034AGxsbRo8end9hCiGEEEIIIUSeGAyGfM9XLK6gioeHBzqdjoYNG7JgwQL8/PxQFAX96dOP\ntN9gMBAfH6/lWxFCCCGEEEKITBVEvmJRPXeBgYEEBgZStmxZHB0dMRqNhIaGEhQUhC4kBNMj7IfU\n3r2cFqmU3j0hhBBCCCFEcWBRPXdJzuWo98dsVpT+grCbkxg8+MXUxO2HH+CXX9DpdISEhHAhahdH\nDq7jqwEv8dq9aKJnB3H2QhS2NtaEhIQQExMDYO7Bk949IYQQQgghihcrKyuio6O1DsOiWFTPnfru\nAPooKdw4dIR/PZpSIf4gupAQMJlgyxYwGNABtZLvcrgU6O5GU+aHfyAhhcVPqJje/pVP3PvT6Opt\nQkPhbrQLR3YfZtEPizPt3QsODubMmTPZ9u5Jz54QQgghhNBacHBwjp0S2d235rW9JVKUx647AqSO\n8hs+fDi///47169fJzk5OZ8i045FJXeOX8zFZDJx2NeXxm7OpLh1wBQYiE6nA50ODAZMJhMnjhyh\naePGpAAN7+9vbDCQMv5DTPH32Bfpi/4YPHEAVvUcS/l379LjQ3e8bjjz2ukOhISE4Ovri6OjIwsX\nLsRoNLJw4UJqREdj9PDAw8OD2NhYAgMDcxzWKYQQQgghREGLj4/P8b40u/15bW+J8lpRtEyZMvTq\n1YvBgwfj7e2dT1Fpy6KGZZpMJkaMGEH16tUB8PPzY8KECZhMplztvxt/jxEjRlC3bnXmzIGYnpex\naZLE23G1GXD7CY7dOE6zxW1Y/qI9/xe1jjKHLnDm9BlCQ0MZMWIEfh4eBAYGEhkZyfnz57X5IQgh\nhBBCCGHBPDw8CA4OpmHDhjg7O/P2229z7949GjduzM8//2w+LikpiUqVKvHnn39me77Fixfj7u5O\npUqVmDRpEh4eHmzbtg2AlJQUpkyZQu3atSlfvjxNmzbN9X36vn37cHV1zZAErlmzhiZNmgDwxBNP\n4OfnR4MGDR71R2CxLCq5CwkJoWXLlri5uQGpi/v5+/szbdo0Ik6ffuT9APEtWlA+aDqvhf1C2NMT\nuDj5Hk96D6JUUgp91/7AsC7TUods6nQA5nl9afP2hBBCCCGEEBktW7aMzZs3c+rUKY4fP86kSZPo\n27cvS5YsMR/z888/U7VqVXMylZmoqCgGDx7M8uXLuXjxIjdv3uTChQvm/Z999hkrV65kw4YN3Lx5\nkwULFmBnZ5erGJs1a0a5cuXMiSLA8uXLefPNNx/jHRcNFjUsM31XcNrXer2eCRMmZHlsVvvTpPXu\nBQUFoQPiExKJOJ+MdZeB/OFQnmd+2Zs6rw8gKAg1JRk74Nnbt/PnTQkhhBBCCFEIduzYkeU8tBdf\nfDFfv5e/vz9Vq1YFYNy4cQwdOpTdu3czceJE4uLiKFeuHEuXLuV///tftudZtWoVr7zyCi1btgRg\n4sSJzJw507w/PDycadOmUbt2bQAaN278SHH27t2bZcuW0b59e27fvs26dev47LPPHukcRYnFJnfH\njh3jrbfeynYR8+z2Q2oFnfS9ezVOn8Z4v3fv8uXLmEwmktq0/G9eH3BIucSFbxZwzL2xFFwRQggh\nhBBFhqenJzt27Mh0X37Pp6tWrZr5a71ez4ULF6hSpQqtWrVi1apVeHt7s379+gyJWmYuXLhgnnIF\nYGtri7Ozs/l1TEwMNWvWfOw4fXx8aNWqFXPmzGH16tU8++yzGb6fltIWMc9PFpvc5ef5suv9e7Bn\nr9aQSSz/fTPb6xwk5vB5Pvb5GvfGtaXgihBCCCGEEPeln8JkNBrNvXh9+/YlLCyMxMREnn/+eVxd\nXbM9j6urKydOnDC/vnv3LteuXTO/rl69OqdOnXrseXH169dHr9ezbt06li9fjo+Pz2OdpyAURB5h\nUcldfrOxscn2h3bmzJmHe/ZCZ9GoxwQGRZ/ij5M/0313R9osr8jsCdtwXfbdQwulCyGEEEIIUdJ8\n+eWXdOnSBVtbW6ZMmULv3r0B8Pb2ZtCgQcTGxjJy5Mgcz9OjRw9atmzJ3r17efbZZx+6d+/fvz/j\nx4+nfv361K5dmyNHjlCtWjUqVKiQ61h9fHz44osviIyMZNmyZRn23bt3j3v37qGqKvfu3UNRlCJ9\nn1+sk7uchkvm3LOnUPff5pR1jcSlXSeoVx/d+PHmpRSEEEIIIYQoiXx8fPDy8uLixYt4e3szbtw4\nILVz5fXXX2fFihV07949x/M0aNCA0NBQevXqxZ07dwgICKBy5cpYW1sDMGzYMBISEvDy8uLatWvU\nq1ePNWvWUKFChVyvc9e7d2/GjBlD586dcXJyMm83Go14eHigKAqKomBra4u7u3uRXhi9WCd3OclN\nz169S5cY3aIrdL8OoaHQsiW6zp2l4IoQQgghhCg0Od23ph1TUO0f1LRpU0aNGpXpvho1avDaa6/l\nuqqlr6+vuePEZDJhMBjMc/qsrKwYO3YsY8eOfahdbhcdr169OklJSQ9t1+v1pKSk5OocRUWJTu5y\n07MX7+7+X8EVR0cYOBCTgwN7+0jPnRBCCCGEKBx5LeBXWAUAr1+/Tnh4OF9//XWu26xdu5b27duT\nkpLC8OHDefLJJ9Hr9QUYZfFlUevcWaIMC6VbWWFycGDEiBHcvlaBT8eO1zo8IYQQQgghClVWwyHD\nwsKoUaMGXbp0oVWrVubty5Ytw97eHgcHB/M/e3t787IGP/zwA1WrVqVatWqcOnWKFStWPFI8jRo1\neujcDg4OLF++/PHfZBGlpF+xXUuKoqiWEksag8GAwWDAaDRmqJZZs2ZNjvyykxV2i2hzpDq1mvah\nlHXWEy9luQQhhBBCCJFbiqJgaffFIn9l9Tu+vz13kwkzUaKHZeZWpgVXfH155/BIono0ZkepWbwx\nci1b9myX5RKEEEIIIYQQmpDkLhu5mXh6pllvbqt/8H9r2/JNl8U0U1VZLkGIEig4OJj4+Phsj5Fe\nfCGEEEIUJEnuspGbm7DU5K8mXZ0v8O32z2lWpgs6nU6WSxCimMkpeTtz5gwLFy58aBi39OILIYQQ\norBIcpcPbPbuxa9FCyhTFYKC4N9/0Tk6ynIJQhQj8fHxmc7BTUve3N3dMRqNhIaGEhQUhC4kRHrx\nhRBCCFGoJLnLB/EtWvy3XMLly7B8OXd++onfjxzROjQhRD7KLnlzdHQkbN5cer38LGuXjeXu2d28\nZnorQy/+sWPHcrXGkAzdFEIIIcTjkOQuH6QtlxAUFITOxYX44GDutWtHHe9eWocmhMhHERERqX/n\nOh2AeQh2UOtO2J14ntPNl/M/0wUaxtmRcieO0730dDhflpcc9KgpKjqdLtvePxm6KUT2ZG6rECI9\nKysrTp48Sc2aNbUOxWLIOnf5QK/X4+/vz7Rp04g4fZpgo5GI1gPZeciBYweOah2eECKf2Ozdy6mh\nvRjerypqUBAYDOhCQnDRlcLUzY6Krd7m98m3WBV2mzX1JjDk0+0kuuvpEmVkcM11HDniyZ9/pvb+\njRgxAj8PDwIDA4mMjOT8+fNavz0hLF7a8Gg/Pz8URUF/+jQAHh4e5ocnOSV/QojiI6v19h7FjBkz\ncHV1xdHRkf79+5OYmJgPkWlHeu7ySWbLJZz0e4MeC5rSpdQgjaISQuSX5HsJ1Di/n4q/XKf5x++g\nuFcFgwGTycSvR47QuB70T9+LD9g1bMq3tdpTtl5Zer76Emv9fqNPnwj273+4908KMAmRu8JF2Q2P\nDg4O5syZM9n2gEvPnihOVFVl48aNHDlyhMDAwEJvr7W8rgW4ceNGpk6dyvbt23F1dcXb25sJEyYw\nZcqUfIqw8Elyl0fZLZfgXK0ebof3s6XiPEYPL42NvW2W55ALjRDayu6m8srpS7Q6sIC611OY37kb\nI96ZASEhmEwmRowYQfXq1YGMvfg1Tp/GGBJCy5YtuXz5Mp7tS9GuXRhPXLiELiSE6FMHOLv7ZzwB\nHUgBJiHIXeGiebO+oFldhfXdanHZJgmPHxQ+Gj2MwR+MwtHRUarWihIhLSnbuHEjL730EnFxcYXa\n3sPDg3fffZclS5Zw6dIlvL29+eqrr3juuecIDg6mS5cuACQlJeHq6sqWLVto0qRJludbvHgxH330\nESaTiffff5/w8HDCw8Np164dKSkpBAcHs2DBAq5cucITTzzB999/j5ubW45x7tu3j1dffZULFy6Y\ne/nWrFlDUFAQhw4dYvHixbz99tvUq1cPgI8++ggfHx9J7kqynJKyj8YrRBqXcvXvOVR7ciD6Cxfl\nQiOEBcrqpvLaqYusdJ2HqfpT9Nj3KxWvxmaavJlMJiDzXvz0Ep5PLcBkf2w/q26sZ6eykxEj1vK7\n9NwJAWRSuGjECMZ8MIzLt+zYv38ozz35NJG3EnjLpiL3blwmZNcn7D9mYPC1+mzdGsBzZTew++J6\nPgqeIlVrRbHzYFI2ffp0FEXht99+K5T26S1btozNmzdjZ2dH165dmTRpEn379mXJkiXm5O7nn3+m\natWq2SZ2UVFRDB48mE2bNtG0aVPGjBnDhQsXzPs/++wzVq5cyYYNG6hduzZHjhzBzs4uVzE2a9aM\ncuXKsW3bNtq3bw/A8uXL+b//+z8gtdCZt7e3+fgmTZoQGxvLjRs3qFChwiP/TCyBJHcFzKqUFZ+P\n+plTrzVmZ8XF9HXvz1250AhhkTIb7jUi4H16nu9M5RZNKauzRa/LPHkLDg6mX79+uLu7Z3l+Kyur\nDAWYPqw/gHY3F3D8nTpUr96zAN+ZEEVHREQEhgkTuLX1R3Rr16JbuJBp3bvT5YyR5s0jqVXrA8aM\nuV+h2mBgmMHA1UsxvPXnEJRbKThMCyA44RzKnwehRQsZ+iyKlZCQEC5evGhOytLs2AG5mX7m6BhC\n9+4XCQubnuf5av7+/lStWhWAcePGMXToUHbv3s3EiROJi4ujXLlyLF26lP/973/ZnmfVqlW88sor\ntGzZEoCJEycyc+ZM8/7w8HCmTZtG7dq1AWjcuPEjxdm7d2+WLVtG+/btuX37NuvWrWP69OkAxMXF\nUb58efOxDg4OqKrK7du3JbkTWVv57UoG7zjF2eWj4JbMsRHCUpmrYe7fD+fPo9PpmPb5F/j6+lLD\nxibH5K1evXrZ9uYbDIaMQzdj79Ct/FuscgqjyfkfUdXPC+BdCVG0lP31F8YYZ2Pzr4mQ300wcCBl\n7e1pq9wmoe7xjBWqAZPJxPigKdSs7YGj43Z+tXPnhWe6Q0wMfy0I4aPrc5jn7CdDn0WxEBgYyKZN\nmxg2bBidOnWiU6dOKIqCp2dqgpcTVc28/eOoVq2a+Wu9Xs+FCxeoUqUKrVq1YtWqVXh7e7N+/foM\niVpmLly4YJ7eAGBra4uzs7P5dUxMTJ6qYfr4+NCqVSvmzJnD6tWrefbZZ82xlytXjlu3bpmPvXnz\nJoqiYG9v/9jfT2uS3BUCm717qQQMoh5MDALFSubYCGGBbPbuRRcSAidOwPLl4OZm/lsdPXo0BoMh\nX4ZRPzh00/f3IXgveIZFXd4n5dny2bQUongz3YhjU9Vf0ZW35rtPo6DJAnPhot99fWlM9nNbTSZT\nhrVna4+vjlvSepomfEXTMk9r/faEyDNFUejUqRNeXl4ZkrTcFhbJa/v0YmJizF8bjUZzL17fvn0J\nCwsjMTGR559/HldX12zP4+rqyokTJ8yv7969y7Vr18yvq1evzqlTp2jQoMEjxwhQv3599Ho969at\nY/ny5fj4+Jj3NWzYkD///JMePXoAcOjQIVxcXIpsrx1IclcoMixyDhkuVEIIy3FF78Lpnl3waGCA\nJ57I97/V7Aowed8bSrMNP3JnX2M+4iOsSmW+Uo0UYBLF1abVP/NTwixqJblRly6U1qU+uX+wcBFk\nPbc1bZkEc89eqbJMHr2HO/2bs7rBfsJ6ekODpwrtPQlRUB5M0sqVK1eo7QG+/PJLunTpgq2tLVOm\nTKF3794AeHt7M2jQIGJjYxk5cmSO5+nRowctW7Zk7969PPvssw9dJ/v378/48eOpX7++ec5dtWrV\nHikB8/Hx4YsvviAyMpJly5aZt/v6+uLn54ePjw9VqlRh0qRJ+Pn55fq8lkiSu0Lw0BCSmBi2e79G\ntVattA5NCHFf3LXbrLFezs2gQ3yx4FfzcK8HbyrzIqekbJxSmn5LfmL3gXacbX4F/Wmp9CeKj+wq\n0sYejePNyM+oX78Rq9b/Scy5mEx75pKTk7MdHn3mzJlMe/ZavzwS160/4/bHt6yKO8q4cQplymTd\nUyEPUURRkZakderUqdDb+/j44OXlxcWLF/H29mbcuHFA6t/P66+/zooVK+jevXuO52nQoAGhoaH0\n6tWLO3fuEBAQQOXKlbG2tgZg2LBhJCQk4OXlxbVr16hXrx5r1qyhQoUKuR5S2rt3b8aMGUPnzp1x\ncnIyb+/UqRMjR46kbdu2xMfH06NHjyJ/nZXkrhA8dKGZM4/uUTd4Vj2ldWhCCCDuxk323AjjGaUB\n46f+kOlNZWEo42bNnfVfs+nLRYQHfiyV/kSxklVF2rg4DzYejMWz50zKX/sdq1JW2VadzW54dNr2\nTNv7+nL2ZAim7l+w/d8JzJhhZMMGWS5BiMfVtGlTRo0alem+GjVq8Nprr+W6qqWvr6+5FoXJZMJg\nMJjnxVlZWTF27FjGjh37ULvk5ORcnb969eokJSVlui8gIICAgIBcnacokOSukDx4oTnVujcvv96I\njbMXaBiVEAJgU1N33tLdw/e3vdjY2WS7lEFBW7NzDeGLPkan0xGfFC8FmESxkllF2uHDA/H0LEvP\nzz7n2zfeyDGxsrGxyXZfTu1rPnODSpWMhISEsmjRwwuhCyHy5vr164SHh/P111/nus3atWtp3749\nKSkpDB8+nCeffBK9Xl+AURZfuUruFEV5CfgcsALCVVX99IH9DsBSoAZQCvhMVdWF9/edAW4CKUCi\nqqrN8iv4oiC7C42xZUv2HB1In/KZP/UQQhS8BU0b0/bqvyzuOITgqcHZHpvdTWV+SSvqkpCcwJO3\nPuX7oUYaONWVAkyiWDBXpLW1BVVFp9Px2Wf/Pbxo2LBhnnrNcjOUMvX8EamJ3d9/w+nT8hBFiEeU\n1XDIsLAwAgIC6Nu3L63STT9atmwZ7777boZ2qqri7u7OkSNH+OGHH8xLJjz33HOsWLHikeJp1KgR\nZ8+ezXBuRVGYO3cuffr0eaRzFXU5JneKolgBs4D2wAVgv6IoP6iq+ne6wwYDx1RVfUVRlIrAcUVR\nlqqqmkRqUuepquqNAojf4mV3oUlOGo/nm1XZe3EpMLHwghKihMlqrk9UlBNeV01EtH4NO72bRcyx\nSV+AaZjfT3x5+3s+mRDD70eOaB2aEHmW9vDi3safsd57ABRFk+rR5sq4Z87A4sUkO9ijc64oD1GE\nyKXo6OhMt/fv35/+/fs/tN3HxydDlcoHzZ8/n/nz5z92PEePHn3stsVNbnrumgH/qKpqBFAUZQXw\nKpA+uVOBtAUh7IFr9xM7AIXUHj/xgFKlS/HViM28/PUz/F/XLtR5rmmWx8rkbiEeX2ZzfaIqe7Bn\nT3kqvTaQL7+0nDk26QswDajuzfrVnzLBrwnVa76hdWhC5Fl8ixbsS7mA+5EDOA8LoJRG1aPTP0S5\ncOoQF76fjT4yWh6iCCGKvNwkXW5ATLrX5+5vS28W0EBRlAvAn8D76fapwGZFUfYrivJOXoItjho/\n9yTto73ZUWc9Lz3XDkVR0J8+DYCHhwc6nQ6DwZBlhTEhRO6kzfUZMWIEfh4eGAyBvPpqJGXKnNc6\ntAzSF2BaZDzL9lY+LKl3EZuEOK1DEyLPvF7sQNSP8zn1Tk9K2ZfP94q0uZX2EMVkMuHathvhL7vi\nO7Yxbm4P3t4IIUTRkl8FVToBB1VVbacoSi1Sk7knVVWNA1qpqnpRUZRK97f/parqnsxOkv7Juaen\nJ56envkUnmXzeLoRn22tzOVNgYzYt00mdwtRAMxzfe6vN6nT6Zg2zTLn2DxYgCnx3Ti2JK8iOTlM\nw6iEyDtDxJvYNqzLM44N+Ds6utAr0qbJUMXaeBZnVx+23/oc5wvbCzUOIYTYsWMHO3bsyLfz5Sa5\nO09qoZQ01e5vS88P+ARAVdVTiqKcBuoBB1RVvXh/+xVFUdaQOswzx+SupPn7xYoEjtyc4cZTJncL\nkX/S5tik7IvEav0GAE3m+mQnqwJM5Ss3IOlrT1q1Wo63d8EXdRGiIPwVuYvo2hfZO/Y8FV0rah3O\nQw9RXlrfmde2tWPB9FANoxJClDQPdmgFBQXl6Xy5Se72A7UVRdEDF4HewINlZ4xAB+AXRVFcgCeA\naEVR7AArVVXjFEXRAV5A3iIupmwO7EM3fXrqi/u/VEu78RSiKItv0YJTr3ei/4VP2DD4Paw1muuT\nnezm1bZ54QwDva7ywtDCHb4mRH7YvukwuxrspLOxN7PmzsryuEKpSJtNFetOf3cl9MZwuqQMK/A4\nhBCiIOSY3KmqmqwoyhBgE/8thfCXoijvpu5W5wGTgIWKohy+32ykqqrXFUXxANYoiqLe/15fq6q6\nqWDeStGWfnI3ABZ44ylEUebn58eA8U/StNpTWJd10Wyuz+Pq2NGdMQ1DSPGNJKnHXkqXlWVKRdGQ\ncDeB6d0jadZqIeEb/6d1ODkWJ5ta9Q2u/luGsVWCKFtWzfQYKXImSroTJ07Qq1cvoqOjmTx5MkOG\nDNE6pAyCgoI4efIkS5Ys0TqUQperuwNVVTcAdR/YNjfd1xdJnXf3YLvTwFN5jLFESF8hTwdcPfMP\n4z+dXmRuPIWwdFtX/cjRiiaaJr9AxOnTms31yYtLPavSeGIyX9Trz21f90yPkZtOYWnefvl7+iT8\nRI8fV2sdSq7EvV2fk8cmYnfWSJ06qdV1jR4eeHh4EBsbS2Cg5VTXFUIrU6dOpV27dhw8ePCR2y5a\ntIiwsDB2795dAJH9J6u1+Io7efRrIdJP7nbbvJpWs4JoNnkOV2/d0jo0IYq8hPgEPr0SyKBy7zPu\n0xCtw3lsiSmJOP+0kp97HeeZm7/S8PoFuekUFiOz9SRPnnTgm1/9sO9/ihOfTCoSDx+sSlkxcaKR\niRNDGTEiSIqcCYuTtqxPSkoKVlZW9OvXD71eX2jt087xOIuDJycnmxcYFwVDkjsLkja5O2Xchxys\nbk25ZeH47dyndVhCFHkuPy/Ds2pp4pvZZZn8FMZcn/xQuoE1tV/+hEPq34S4D+GO3HQKC/HgepLV\nTkbz018evPvuj9SoUZrAwDFF5uHDd99FEBERJEXOhMVJW9YnrfqzyWRiwoQJ+Pv75ypBy2t7gPbt\n27Nz50727NlDQEAAe/bsYdq0aWzYsAGdTkf//v0ZN24ckNpLN3/+fJo1a8bixYtp27Yta9euJSkp\nCXt7e8qUKcP169ez/F7Xr1+nb9++7Nq1i3r16uHl5cWOHTvMvX7Hjh3jgw8+4Pfff6ds2bK8//77\nFv8AqaBJcmcBMpvcrTTyotbl9YzwH045Z/sic+MphKU5uvkwvlFX2P36eF4xFP3/8CMiIgiZ8xMd\nJtYg7Oz3vKObKDedwmKkv3E8NdqPXbtSHz6cP1+0Hj6Yq+umJPPrwkk0T7iLrqytFDkTmlu4cOFD\ny/oEBQUxbdq0DNVfC6o9wNatW2nbti2+vr74+fnh6+vL7du3OXPmDFeuXMHLy4uqVavi5+cHQGRk\nJD4+PsTGxpKYmMiKFSsIDw9n165dOX6vQYMGYW9vT2xsLNHR0XTq1Al3d3cA4uLi6NixIyNHjmTt\n2rUkJiYSFRWVq/dQnElyZwGyesLQvkcNrM+tZV3o8UKOSIji49DrE/ijije+xSCxg9SbzvJARFJX\n2lb6hjdGB+Bo4yg3ncIipK0nefhTf0aZvmVj8pwi+fAhrciZnY0Ntgum8MufP9P0m0gpciY0l5KS\n8l/xvft0Oh0pKSmF0j49VVVJSUlh5cqVHD58GDs7O/R6PcOHD2fJkiXm5M7NzY1BgwYBYG1tnevz\np6SksHqg8JEBAAAgAElEQVT1aqKiorC2tqZ+/fr07duXnTt3ArB27VpcXV0JCAgAoGzZsjRt2vSR\n30dxY6V1ACJrhgFLiHziH5bPW6R1KEIUSV98cYj3TZN5ac8MrUPJN2k3nY1CV/LOSQe2ndiIKTCQ\n3+3ttQ5NCGz27qX0xxOo/nkEX6wD2+kz0YWEFLmHD2lFzu7Ex+PUrguNtx9jcr83pMiZ0JyVlRUm\nkynDNpPJhJVV7m7p89r+QVevXiUpKYkaNf5bEluv13P+/H9LYj/u382VK1dITk6mWrVqmZ4rJiaG\nWrVqPda5izNJ7ixYG68X8TrcnwmTdDkfLITI4M6dREaN0tEv4CaVPSprHU6+SbvpNJlMvOfYgU2J\nfxM49B256RQWIb5FC349tokLFcvy9HsTUpf1KYIPH9IXOduhVOCLppU4UHovbm5uWocmSrh+/fqZ\nrwGAec5cv379CqX9gypWrEjp0qUxGo3mbUajMcPfyoPFU3JbTKVSpUqULl2ac+fOmbfFxMSYv65e\nvTqnTp16rLiLMxmWaeHmrgzF2fkSnwftJGDCi1qHI4RFyqxK3/r19XBwqIdOtwGDYWORqNKXG+lv\nOmskl+NmcitSrjfjuXqJWocmBK+83I2R0UFMGzsFzt0rcutJppdW5Azgeux1npriwqsJSRpHJUq6\n9NeAtGqXj1IMJa/tH2RlZUXPnj0ZN24cixYt4tq1a8yYMYORI0dm2cbFxYVz586RmJhImTJlsj13\n9+7dMRgMzJ8/H6PRyOLFi82xdu3aleHDhzNz5kzee+89EhISiIqKolmzZo/1XooLSe4snIODNZ+/\nsQH9xG+IH7URGxv5lQnxoAer9Dkd3Y9z5XBef30SilKu2C0RkP6ms+0ZePZZ+HK+tjEJATB/3sek\n4MoP5xM4WETXk8ysyBlA63+8WH5uNufHJuDgIEXOhHbSXwO0aA8Ze99CQ0Px9/enZs2a2NraMmDA\nAPN8u8y0a9eOhg0bUqVKFUqVKkVsbGyWx4aGhtKvXz9cXV2pW7cuPj4+HDhwAIBy5cqxefNmhg4d\nisFgwMbGhoCAAEnutA5A5Oxmw2sMqBCCR/sVdOx4MtNjikuvhBCPK32Vvj3NnOC52vx1JrJYLRGQ\n1U2nk1NrPD3j6dHjgFTWFZqJiyvNT2sXsGrlRZp7NtQ6nMeW3bW0SpXfsPn3Hlu2eBZeQEJYoG3b\ntpm/dnR0ZMmSJZke17dvX/r27ZthW5kyZfjpp59y9X0qVqzI2rVrza9Hjx6dYQ5egwYN2LJly0Pt\n8pq8FmWS3BUBCYkJrNvyDB07OuPpeYra56Jl4WIhHpBWpe/AljCmP5vA6slroULlIlelLztZ3XR2\n6nSebs/fpde8utR/vk4hRyVEqrVr61FW9yfrd+xk/Y5vMz2mqD98WLWqOmtaL2DfyjI069VK63CE\nKPaOHz9OQkICjRs3Zt++fYSHh7NgwQKtw7JoktwVERUqGHm1XQCVyoGfRxNMsnCxEBnY7N2L3dRP\n+eDaJ4z+A3RhqVVmi1qVvsfRsqUbnzv34ED30tS/tELrcEQJ9Pfuv6hw3J5pe+rQqlVbrcMpMK1a\nVWNLE4UBg69zqJfW0QhRPDRq1IizZ8+aX6uqiqIozJ07lzp16tCnTx8uXryIi4sLgYGBdOvWTcNo\nLZ8kd0VEREQEYz8aQ7MlLeh8V8cTOl2RXDtIiIIS36IFq2vcJflWad54fUxqlT6TqcSsS9V48Vj0\n3Vrz6/LVPN+nu9bhiBImuP92fFx+p1WrcK1DKXDD94xiinMM48ZFMnlyc63DEaLIO3r0aLb7//nn\nn0KKpHiQ5K6IsNm7l5rAFwerEPPP1zxRoTY6SkavhBC50a+fH6MCX2BMx/dQLlgV6Sp9j6NJ52eY\n18COw/MCJLkThSoy8gKL/+nNsEM9tA6lUMyaNZ0uXcqxaHYjkuNHYWNv+9AxMg9eCKEVWeeuiEhb\nuLjrl5t46hIYn61dJNcOEqKgXPrhEsmRX/D3BUciTp8m5H6VvpK0LlWd4JV83fwcW3/apHUoogSZ\naOhG59bTefLJ4rOeZHbi4+NZvXoIjV9+ixNnl6M/fRoADw8PdDodBoPhoaVZhBCisEjPXRGRtnBx\nUFAQB+s4cHvK+6xb90uJ6ZUQIjspySnYjR/GB75DaGUouRWy2nZpT8uwOkw9MYj23TKvrCtEfvom\n/Gv2PnmQLd4lay0Oo9FIPV0rziUu5UX1Oi6BX8k8eCGERZDkrohIv+ikS+0X+Mx1HYPcm5CkyrBM\nIdh+A5u4S3xX/i82Z1E5tqhX6cutMQPn8erWtmxcvY5O3TtrHY4o5sLWjeCF5Kd4uuUzWodSqCIi\nIpg0Yw4H+vzJjV/XUVPmwQshLIQkd0VI+kUn/xmWxNnzpZkxQ+OghLAA3x95CbuuDZg4eaDWoWju\nlz9+o/lfdZh9OIDfDu/L9BiZDyQeVXBw8MNDDX/7na/2X2Lemz7mBYRLyufKZu9edCEhtHqyKzG7\nj3Cw63M8/VxXmQcvhNCcJHdFQGYLF99LKMvcuUNQ1VAcHRNLTK+EEA+a+Xkkf91pzNAVXlqHYhHi\n4+OZM3k9yU+1ZUHdBGrdOC/rYoo8i4+Px2AwYDQaWbhwITWio6n913r21nCjUvUqJe5zlTYPXqfT\ncfzID8xy+ZuVgTtLTHVeIU6cOEGvXr2Ijo5m8uTJDBkyROuQMggKCuLkyZNZLq5enElyVwRk9SR0\n27Zd7N/fil9+8SzcgISwIEv/eIm+r/bGzm621qFYDodSfOLzGp9PHocuJETWxRT5wmg0EhoaSlBQ\nECnjR3EChcin21Hq/HmtQyt06efBd2zyGpXaPlmiqvMKMXXqVNq1a8fBgwcfue2iRYsICwtj9+7d\nBRDZfxRFKdDzWyqpllmEzZntTvdfv+XskbM5HyxEMRTy4UQuON9m6uzJWodiUSIiIvh8zmR0Oh0A\nuvvzgWJiYjSOTBRlERERBAUFodPpsHeoyLNnEwmeNbtEfq7Sz4NfbIzhyyVR7NjRkqpVS051XmEB\nduzQrL3RaKRhw4aP3C45Odm8SLkoGJLcFWEvvFiDM5VdeH/oYa1DEUITfx+YhqexDU6VnLQOxaKk\nzQfCYICgIDAY0IWEyHwgkSfyucoobR6836JFhIUZsLHx5YknArUOS5QkGiV37du3Z/v27QwePBgH\nBwcOHz6Mr68vlStXxsPDg8mT/3vgumjRIlq3bs2wYcOoWLEivXv3ZuDAgfz222/Y29vj5JT99fv6\n9et069aN8uXL07x5c8aPH0+bNm3M+48dO4aXlxfOzs64uroSHBz80DmMRiNWVlapQ8pr1MDZ2Zm5\nc+dy4MABmjRpgpOTE/7+/jm+71OnTuHp6YmjoyOVK1emT58+j/BTKzwyLLOIazerC0Hr2nH6xCE8\nnvDQOhwhCs1X4yfzf8dv02BzhNahWJz084EAMBgwmUwyH0jkiXyuUmU2Dx7AzbUy3/WBgyMuY6t7\neGFzIYqLrVu30rZtW3x9ffHz88PX15fbt29z5swZrly5gpeXF1WrVsXPzw+AyMhIfHx8iI2NJTEx\nkRUrVhAeHs6uXbty/F6DBg3C3t6e2NhYoqOj6dSpE+7u7gDExcXRsWNHRo4cydq1a0lMTCQqKirL\nc+3bt4+TJ0+ya9cuunXrxssvv8y2bdu4d+8eTz/9ND179syQOD5o/PjxdOrUiR07dpCQkMCBAwce\n7QdXSCS5K+Jee+NZpq0py5hRvqxYU7Bjl4WwJEtPfY7+6dYsr+2udSgWJ/18oOP7f8T0TiTLSrvL\nfCCRJ35+fowdO4EpU4LQASaTqUTOM8tqHnxKcgrhNj6cjf0fo+d2KeSoRImxY8d/PW5BQan/HjRh\nQmoP+4PSet0z4+mZ+u8RqKpKSkoKK1eu5PDhw9jZ2aHX6xk+fDhLliwxJ3dubm4MGjQIAGtr61yf\nPyUlhdWrVxMVFYW1tTX169enb9++7Ny5E4C1a9fi6upKQEAAAGXLlqVp06aZnktRFD766CPKli1L\nhw4d0Ol09OnTB2dnZwDatGnDwYMHs03uypQpg9Fo5Pz587i5ufH888/n+r0UJknuioGe9UYQfHMs\nVy5doVKVSlqHI0SB+2ZlFGUv1+TT+V9rHYpFSj8fSP/vXV74dQNNp87n2r83tA5NFGF6vZ4OexKZ\n9aIflRvaYgwJoWXLlly+fFnr0CyCVSkrrnw4gD2/fsBdUzvpvRMF48Ek7FGq1BoMGY9/8PVjuHr1\nKklJSdSoUcO8Ta/Xcz5doaXHfQB05coVkpOTqVatWqbniomJoVatWrk+X+XKlc1f29ra4uLikuF1\nXFxctu1DQkL48MMPadasGU5OTgwbNsycwFoSSe6Kgfc/GsWKNz8hpJ83Uzf8onU4QuSrzNbXCg/3\nokqV4SxYvACQddsykzYfKGXchxx3LYPTzp28tbTklYQW+edSzCUmPzmHRb5/ULftoxdSKAlGjXuR\nle+eYujbvZm/4getwxGiwFWsWJHSpUtjNBqpV68ekDrHzc3tv+JCDxZPyW0xlUqVKlG6dGnOnTtH\n7dq1ATIUcKpevTorVqzI61vItcqVKzNv3jwAfvnlFzp06MCLL75IzZo1Cy2G3JDkrph4N+UV2v62\nhLjr/1LOyVHrcITINw+ur1X52CkcHTfRv78Ht27pStz6WjnJbD7QzbpPcyjpRw7d3y7rYopHZWNj\nw8AB3pRyLM/ynd/Czm8zPaakK1W6FN0dBhJe7nNuXr9JeafyWockirNHHEaZ7+0BKysrevbsybhx\n41i0aBHXrl1jxowZjBw5Mss2Li4unDt3jsTERMqUKZPtubt3747BYGD+/PkYjUYWL16MXq8HoGvX\nrgwfPpyZM2fy3nvvkZCQQFRUFM2aNXvoXKqq5vm9fvfdd7Rs2RI3NzccHR2xsrLCysryalNKclcM\nBAcHE/9ETf7dZM2qNm9y643nHjpGejZEUZZ+fS1d69b4BXkzbMsWWbctE5n9nV/q/x6Nv6iKX6Xq\n+A5+W4OoRFE37INh1L0wnv7WgYyThynZmjAjhB/7zWXk268zd80WrcMRxZmGyV363rfQ0FD8/f2p\nWbMmtra2DBgwINvhiu3ataNhw4ZUqVKFUqVKERsbm+WxoaGh9OvXD1dXV+rWrYuPj4+5kEm5cuXY\nvHkzQ4cOxWAwYGNjQ0BAQKbJXU69h7npTdy/fz8BAQHcunULFxcXZs6caS7uYkmU/Mhk84OiKKql\nxFLUGAwGDAYDG8csJ3L5Cqq94MjZmh54eHgQGxtr7tmQ3g1RFKV9bgMDA9HFxkLDhnDpEqZSpfD1\n9WXVqlXy+c6FV7yfJDnJip/XHtI6FFEEDevfn41WX3P4qzhKlS6ldTgWb+57Q3h5+ZfYHo6hkr5a\nzg2EeICiKPnS21TcjB49msuXLxMRUfQrZWf1O76//bEXApSeu2LCaDSyKeF3Jh5bhi4kBFNgIIGB\ngdKzIYqFtPW1/t25kfJ376JMn44OSuz6Wo9j7Ihvef4FZ06f/hcPDxm6LR5NgnEZbZw6SWKXSzfc\nq3FOV4YjHV7n4v+9nOkxMqJGiJwdP36chIQEGjduzL59+wgPD2fBggVah2XRLG+gqHgsERERTJwY\nZF5/SKfTERISkmHiqRBFVXyLFlwZ4Eed5pGcG+qXur5WYCC/29trHVqR0aJ1XepVO8j0ft9pHYoo\nYtZNWsqEPfeYMn2O1qEUGfHx8TgG/4LufE2SkxX0p08D4OHhgU6nw2AwPFQoSoiSqlGjRjg4OJj/\n2dvb4+DgwPLly7l9+zbdu3enXLly9OnTh8DAQLp161ZgsQwcOND8/dPHkraUQ1EgPXfFRFrPBmBe\nw0R6NkRx4efnx6gPOtPctSLVK9Qosetr5dWnfa9hnPwLCQl+lC0rPTAid+5OXcZP1fx4y62K1qEU\nKboXK7P+NTfmjR4hI2qEyMbRo0ez3f/PP/8UUiQwe/ZsZs+eXWjfryBIcldMxLdogSkw0NxzlzJu\nLHcTEvnd11fjyITIu+rVqvObczQvXn6eiBunZX2tx9Tt497Yf96QmPH7+fTTFlqHI4qAw4dj2Xu7\nJe9t6aN1KEVOREQE8+Y9PKLGV67LQogCJMldMeHn58eECRMICgqibMJdzlax5suXu0vPhigWFs+a\nw73SycxavJHSZeS/rbzw87vN3Ll2fPqp1pGIomDo0Chi679ISLPaWodS5MiIGiGEFuQuqZjQ6/X4\n+/szbdo0apy/xLoXylMm4SRPu8nTeVG02djYcG3xKDwdGjJp8qQsjxG5ExzclD/3vsHsT9sxcNRQ\nrcMRFuzff+PZvbsBP/wgycjjeHBEjTp+PHfi42VEjRCiQElyV4zo9XomTJgAgO2cCEYeH8BC//c1\njkqIvPHy6seeOUsZ+cVc6rV+eO0a8Wjs7MpQseo5vj0QwkAkuRNZG/bBbzg5laNr16Zah1IkpR9R\ns3/1dDi9k5V29WREjRCiQElyVwzY2NhkusaX/Z0y+PV4jTrPNZWeDVFkffDB31y3/5Khktjli+Dg\nYPRVWuG3bSbj+g6gjEfVh46REu0lT3BwcIbqjclJSRxSptOheV8Mhp8B+Vw8qvQjauwqV2ex7S6G\nN+vLlatXtA5NCFGMSXJXDGR1sT3b6wBHnX7h6/sXZiGKmri4BPbsqc+aNTIsLL/Ex8czfc4XbKy1\ngEa/f0c83TB6eODh4UFsbCyBgYGyIHwJFB8fj8FgwGg0snDhQqrtWs2X0Xf5e2Izrl67Kp+Lx5Q2\noiYleTxhQ3XcOneOwPEfah2WEHl24sQJevXqRXR0NJMnT2bIkCFah5RBUFAQJ0+eZMmSJVqHUuhy\nldwpivIS8Dmp6+KFq6r66QP7HYClQA2gFPCZqqoLc9NWFJyPp87lY78n2blwMy/266h1OEI8slGj\n9lO+vC2vvPKM1qEUK0ajkYMNn+XNnTtx8a5KgpRoF6R+LkJDQwkKCqL3uRCUl3pw6MB++Vw8hsxG\n1DSJbsHCO1O5bkgyHyNEUTV16lTatWvHwYMHH7ntokWLCAsLY/fu3QUQ2X8URSnQ81uqHJM7RVGs\ngFlAe+ACsF9RlB9UVf073WGDgWOqqr6iKEpF4LiiKEuBlFy0FQXETe9Gq786EjNqPkhyJ4qglYus\nedc/Ueswip2IiAgCl//Mmx9U5b3YSDpJiXZB6uciKCiI83/tIbKCiW+GzOX/SlnL5+IxZDai5ub1\nmzSY5Ex5rPnAMEaDqITIP0ajkT59Hn2JlOTkZFRVLbGJV2GwysUxzYB/VFU1qqqaCKwAXn3gGBWw\nv/+1PXBNVdWkXLYVBaju5/68FLuVq2evah2KEI/khzFfsdnUj6Cg57QOpdhJK9H+daV36TR/OxgM\n6EJCpER7CZf2ufhyVl/6/wG202fK5yIflXcqz0vHPYlbulbrUITIk/bt27N9+3YGDx6Mg4MDhw8f\nxtfXl8qVK+Ph4cHkyZPNxy5atIjWrVszbNgwKlasSO/evRk4cCC//fYb9vb2ODk5Zfu9rl+/Trdu\n3ShfvjzNmzdn/PjxtGnTxrz/2LFjeHl54ezsjKurK8HBwQ+dw2g0YmVlxcKFC6lRowbOzs7MnTuX\nAwcO0KRJE5ycnPD398+/H5DGcjMs0w2ISff6HKlJW3qzgB8VRbkAlAN6PUJbUYCa9WpF4DvvcGfk\nXr5c0VXrcITINevlgUTVr8zTZUtpHUqxk6FEexk7MBgwmUxSor2ES/tcJE1cxQCnzvK5KABTZi7F\nqnYjflu6i5ZvvqB1OEI8lq1bt9K2bVt8fX3x8/PD19eX27dvc+bMGa5cuYKXlxdVq1bFz88PgMjI\nSHx8fIiNjSUxMZEVK1YQHh7Orl27cvxegwYNwt7entjYWKKjo+nUqRPu7u4AxMXF0bFjR0aOHMna\ntWtJTEwkKioqy3Pt27ePkydPsmvXLrp168bLL7/Mtm3buHfvHk8//TQ9e/bMkDgWVbnpucuNTsBB\nVVWrAk8DXyqKUi6fzi3yyH7E60T8WIuUFFXrUITIlb1bduFy7w71g2drHUqxlFai3WQyAWAymRgx\nYoSUaC/h/Pz8mNP7LaZ1+RJ3hxryuSgALrWqsK7ayxjfn651KKIYMOwwoAQpD/0z7DDk6visjsst\nVVVJSUlh5cqVBAcHY2dnh16vZ/jw4RkKmbi5uTFo0CCsrKywtrbO9flTUlJYvXo1EydOxNramvr1\n69O3b1/z/rVr1+Lq6kpAQABly5ZFp9PRtGnmS7coisJHH31E2bJl6dChAzqdjj59+uDs7EzVqlVp\n06bNY80ftES56bk7T2qhlDTV7m9Lzw/4BEBV1VOKopwG6uWyrVn6yceenp54enrmIjyRk7Fjn+Xj\nj2MICzvKgAGNtQ5HiBxNmzWC662qsu2Vl7QOpVhKX6Ld5e/TRNV/m2ajO3DVdEPr0ISG9Ho9Hbaf\nIjx+NrqqZTGGhNCyZUsuX76sdWjFSrMlo/mo7X6a/HWV+vUrah2OKMIMngYMnoYCOz43rl69SlJS\nEjVq/He7r9frOX/+v9v9x31AdOXKFZKTk6lWrVqm54qJiaFWrVq5Pl/lypXNX9va2uLi4pLhdVxc\n3GPFmVc7duxgx44d+Xa+3CR3+4HaiqLogYtAb+DBGZRGoAPwi6IoLsATQDRwMxdtzaTMcsEoXdqK\nnl5TWLl+EwMGnNY6HCEyeGh9rcQk9nr8QaeYXub/E2R9rfyXVqId4BuPUZS51wG/QHdtgxKa+mfN\nUSrfvch7P+2ltI2slFRQ6ns25Gi9a7z33lF27vTUOhwh8qRixYqULl0ao9FIvXr1gNQ5bm5ubuZj\nHiyekttiKpUqVaJ06dKcO3eO2rVrA6kJXZrq1auzYsWKvL4FzT3YoRUUFJSn8+X4v7eqqsmKogwB\nNvHfcgZ/KYrybupudR4wCVioKMrh+81Gqqp6HSCztnmKWDyWwPED8Vwzj1/XbeX5zu21DkcIswfX\n10o6/D0VXUvxQjcvWXetAGRWov33Oo7cXfM2f95sYz5GlCw2Njb0H36IBvq3cQmelOUxIn98/nl1\nXnrJjgvnrlG1mrPW4Qjx2KysrOjZsyfjxo1j0aJFXLt2jRkzZjBy5Mgs27i4uHDu3DkSExMpU6ZM\ntufu3r07BoOB+fPnYzQaWbx4MXq9HoCuXbsyfPhwZs6cyXvvvUdCQgJRUVE0a/ZweQ9VLTlTk3L1\naE5V1Q1A3Qe2zU339UVS593lqq0ofE+1eIqv+tlzdMNbPN/ZqHU4QmSQfn2tXz/YTasX3mDdr5Gy\nvlYByKpE+xNTPuR/zn3o699fg6iE1vr3H8rYsfFM2e1Jq1bVcm4g8qRTJw86dKnHiKFVWLZ6h9bh\nCPHI0ve+hYaG4u/vT82aNbG1tWXAgAHmYiqZadeuHQ0bNqRKlSqUKlWK2NjYLI8NDQ2lX79+uLq6\nUrduXXx8fDhw4AAA5cqVY/PmzQwdOhSDwYCNjQ0BAQGZJnc59R4Wp6UZFEvJZBVFUS0lluIoODgY\n495D/OjxLW/ZjaFUmYfzehn6JrSQ1osUGBiIzmgEf3/YuhWTyYSvry+rVq3CYDBI710B6+bdkGQl\niXVrjmsditBA/17eGK+dZ/OW/VqHUiIEBwdzfN8h/qz4Ld2cR6FYP/wgS67JJZuiKCWqtym3Ro8e\nzeXLl4mIiNA6lDzL6nd8f/tjZ5v5VS1TWLj4+Hhmf7+CiiZbLp3cgf506tw7Dw8PdDodBoMhw7wn\nIQpT2vpahIXBtm2y7poG+r02gX11/uHSuUtahyI0sM9+M41qNNQ6jBIjPj6eiNUrmL7RilIHfpRr\nshBZOH78OEeOHAFSlzIIDw+ne/fuGkdl2WTGdAliNBppfusJ9A1s8VM9MAUGEhgYKEPfhOYyrLvm\n4CDra2ng9b49ufCMLz/++goD9uzTOhxRiBZMmsZVh7t8bJildSglitFoZOXzz7G3yiH+cOjOHbkm\nixKqUaNGnD171vxaVVUURWHu3LnUqVOHPn36cPHiRVxcXAgMDKRbt24aRmv5JLkrQSIiIpgRvjv1\nBtpgQKfTERISgq/cQAuN+fn5MXz4BD77LAgdsu6aVmztn+Op43u1DkMUMqtlk5lsVYVy02V52sIU\nERHB1LkbaGlwYcvFX+ko12RRQh09ejTb/f/8808hRVI8SHJXgpiHvt24ATNnAqADGfomNKfX6zn+\n19sMGTKNF1JOy/paGum+7DuSqjdgx8JdePZ7QetwRCE4G32WD7r9y9dPhmkdSoljs3cv9tNnMPlW\nU+J3b0196Ipck4UQeSPJXQliHvp25gxERMD48Zji42Xom9Dc/vU7OPNkB9Z+Eo+unPy3pBUntyp0\nejqCa7NSONBP62hEYZg89isaJ7vS+dPXtQ6lxEm7Jr+qM4DBIMPRhRD5Qu6iShA/Pz8mTJhAUFAQ\nOgcH4n/8kRGbNsnQN6EpGxsbjr/fi2B0hDjL+lpaGzn1KTp2tOPWrXs4OFhrHY4oYF+vfZMPPpDi\nBFrIcE0+f56ESZMYcf68XJOFEHkiyV0Jotfr8ff3Z9q0adRza8CW4E20GSxD34S2hr0fwKVPxvBL\n7yGy3IEFaN9ej6PjH3z4YTwzZz6vdTiiAH3zzXHi450YN66e1qGUSOmvybWu/Eu3BUtpOm0G15Jk\nWKYQ4vFJclfC6PV6JkyYwA3/FGYNqM2oZ4ZRu1EdrcMSJdhXAwfRzF6h56wZWoci7uvbN56FC23T\npuaKYurA8K/p/lxDbGx6aR1KiZV2TQb4xd2Hmjvjeev7QI2jEkIUZZLclRA2NjYP9Yoope4SGPh/\nNGne2XyMEIVtzd31RDZrzfNl5L8jS/Hxx89x5evhrJ3WkK4j3tM6HFEAYk/HMurcLGJmb9Y6lBIp\ns2vylSZ1+X7Ti7z14UeUKm0l12Rh0U6cOEGvXr2Ijo5m8uTJDBkyROuQMggKCuLkyZMsWbJE61AK\nnaMNb5sAACAASURBVNxNlRCjR49+aFvSkBt8V2EuawyyppXQhvHMDRKTy/BBwFStQxH3BQcHEx8f\nTyuXlexYY82BuIcXNbexscn0/xRhudJ+r2lsl8fwlHUjfjvwE98f+AmQ32thyuznnJKicuB/lTBd\n8mZ6mFQvFZZt6tSptGvXjoMHDz5y20WLFhEWFsbu3bsLILL/KIpSoOe3VFZaByC089FnIcTZJjF7\n0jStQxEl1JixR4iJXEmzF1poHYq4Lz4+HoPBQMUPprP4+XO4/XMcAA8PD3Q6HQaDIUOSIIqGtN+r\nn58fiqJwufo3HGhXSX6vFsTKSqFJSmt2JX6rdShC5MhoNNKwYcNHbpecnGxepFwUDEnuSrCy1mUZ\nt60KTksmax2KKKF+/NGZd98to3UY4gFGo5HIqEM0SnSkvM1pAgMDiYyM5Pz581qHJvLAaDQSGhpK\npxbufNfEhP+yMPm9WpjJM+YTUymOBZ/P1ToUIbLUvn17tm/fzuDBg3FwcODw4cP4+vpSuXJlPDw8\nmDz5v/vKRYsW0bp1a4YNG0bFihXp3bs3AwcO5LfffsPe3h4nJ6dsv9f169fp1q0b5cuXp3nz5owf\nP542bdqY9x87dgwvLy+cnZ1xdXUlODj4oXMYjUasrKxYuHAhNWrUwNnZmblz53LgwAGaNGmCk5MT\n/v7+Ob7v6Oho2rdvT8WKFalcuTJvvvkmt27dAlJ7Mt94440Mx7///vsEBATkeN78JsldCVd1yBTG\neN3m5r93tQ5FlDCbvljP/+78zMiRT2sdinhAREQEQUFBvNvQl3ml/0Sn0xESEkJMTIzWoYk8SPu9\nLt4WQv9rehwcK8jv1cJUqlKJF/9uyLHVE7QORYgsbd26lTZt2vDVV19x69Ytpk2bxu3btzlz5gw7\nduxg8eLFREREmI+PjIykdu3axMbGsnTpUubMmUPLli25ffs2169fz/Z7DRo0CHt7e2JjY1m4cCGL\nFi0y9/rFxcXRsWNHOnfuzMWLFzl58iTt27fP8lz79u3j5MmTrPx/9u49Puf6/+P447OTa65hzofh\nMudzzibFClE55BgSpiinIrtKDu2a47iQmhJiIyEqXxJFSQ6Zczkkx+1qxJwPu7jMts/vD7bfzMaw\n7XMdXvfbrVvtuj7X9tx1yXW93qfXN98wbNgwJk2axMaNGzl48CDLly9/6DJRVVUZNWoUZ8+e5fDh\nw5w6dSp172z37t1Zt24dVqsVgOTkZFasWMFrr72Wlac0W0lx5+I69O9N/JLfGDf+T62jCBcza95l\nClRJwMvLXesoIh1dVBR6s5lXLN7sL2DjxLA+6M1m6l+XI9odmS4qCmVSKMuUQ/RbGQMmk7yudmhY\nj4+ofzmO/TvkfVk8hMkEinLnn4xaCZlMmd+e2WMegaqqJCcn88033xAWFkbevHkxGAyMGDHinoNM\n/Pz8GDRoEG5ubuTJk/X+qcnJyXz//feMGzeOPHnyUK1aNfr06ZN6/5o1ayhZsiTDhg3Dy8sLvV5P\nw4YNM/xeiqLw0Ucf4eXlRcuWLdHr9fTo0YPChQtTqlQpnn322YfuH6xQoQItWrTAw8ODwoULM3z4\ncH7//XcAypYtS7169Vi5ciVwpwB+UJ6cJMWdoFNXha++krN1RO6Jj09gzd+taDXrda2jiAzYAgKw\nGo3kmRDG73/WxS+fH1ajkT358mkdTTwBW0AAKwqcocmtopQeHgImk7yudujp17rwVakGTBr3k9ZR\nhL0zmUBV7/zzqMVdZo95RBcuXCAxMZGyZcum3mYwGO5Z7l2mTJnH+t7nz58nKSmJ0qVLZ/i9YmNj\nqVChQpa/X7FixVL/29vbm+LFi9/zdXx8/AMff+7cOXr06EHp0qXx9fWlV69eXLhwIfX+Hj16sHTp\nUgCWLl1Kz549s5wtO0lxJ5gwoR4XLlRi9+4zWkcRLmL0kAE837w9LVoYtI4iMhAUFERISAhWq5Vq\nFRrjtWAhxvfee+w3aGEfgoKCKPf5UoLVZwCwWq0EBwfL62qHuvdcyHfrXyMhIUnrKEI8UJEiRfDw\n8MBisaTeZrFY8PPzS/06/eEpWT1MpWjRonh4eHDq1KnU29IuIy9TpgwnTpx43OiPbNSoUbi5uXHo\n0CGuXLnC4sWLUVU19f6uXbuyadMmTp8+zcqVK6W4E9opUiQvz5TfyNLBckKXyB1RSaspV7zYwy8U\nmjAYDAwdOpRp06YRceMGh68q1Lnse8+btXA8CQkGXo0/yG95qxERHY3ZbKZJkybyutqhPn2qo9Nd\nISRkt9ZRhHggNzc3unXrxujRo4mPj8disfDxxx/z+uuZr8wpXrw4p06d4vbt2w/93p06dcJkMnHz\n5k3++ecfFi1alHp/27ZtOXv2LJ9++ikJCQnEx8ezc2fG7b3SFmGP6/r16/j4+JAvXz5Onz6N2Wy+\n5/4iRYrQvHlzgoKCKF++PFWqVHnin/k4ZC2eAOC9zjeoPnUmyUlDcHOXml/knA3f/cjRUpdZ8Va4\n1lHEAxgMBkJC7hzqsLDmOdZHFeVboxxd7cgiIuC1PlUZN0lOSHYEffte54svvJk8WeskQtwv7exb\neHg4Q4cOpXz58nh7ezNgwACCgoIyfezzzz9PjRo1KFGiBO7u7pw7dy7Ta8PDw+nbty8lS5akSpUq\n9OzZk9277wx6+Pj4sGHDBt555x1MJhM6nY5hw4bRqFGjB+bNytcZCQkJoXfv3vj6+lKxYkVef/11\nPv7443uu6dmzJ3369Lmv8MtNSnZUstlBURTVXrK4ouSkZGLzFmZr9568tvAzreMIJ5K+eXL5pXNQ\n3W4Q/erw1NukebL9SP96AcTHu/PJJ8MZPPgTfH1vy+vlgMaPn8zEif3p0SMCg8Ga4TXyutqX+PgE\nVuXrQbHpfWn1Xjut44hcpihKtsw2OZuRI0cSFxd3z2mcjiqz1/ju7Y89miozdwIAN3c3lj9VhOjY\nb3kNKe5E9klpnmyxWFgwfz7N4s7yXZNn8Pf359y5cxiNxtSjhIX2Mvtwv3rlL8Qd1zNzTe737BFP\n7vbtFnh6niEiwqh1FJEFKYMsxUp44WH6DNO1PfddI8W4cAVHjhwhISGBWrVqsXPnTubPn8+CBQu0\njmXXZP2dSNUg5AuWNDpH9NForaMIJ5PSPLl71RJY8yi89c2P0jzZwbzWYQO7DB+QlCgHPDiiS5+u\npddLlodfKOxCyqBYw9kDaJn4M6UO3FmG5u/vj16vx2Qy3TfDLoSjqlmzJvnz50/9J1++fOTPn5+l\nS5dy/fp1OnXqhI+PDz169MBoNNKuXc7NZA8cODD156fNMmjQoBz7mdlNZu4E8P+jhFVPF+T9d/tS\no/Fz910jo4TicaU0T9br9ST/cwa3/Pkxm8307t1b62gii8ZMncTmvtNZ8O4I+n82U+s44hHsWL6K\nyfGTuGY6qXUU8QgsFgvfbP2Ra0EGKlqPYDR+g9FoxMvLS+toQmSrgwcPPvD+Y8eO5VISmD17NrNn\nz861n5cTZOZOAP8/StiqYBei/XZgiL4zeyejhCI7pDTFxmTCbfwEaZ7sgNw93Ol6sDSx+77WOop4\nREfHvcO20p74VSv98IuF3UgZFHu780Q+K3yCPJ7umM3me46CF0KI9GTmTqSyWCzccNNhKZJAs5sq\nJYxGGSUU2SKlKbZer79zg8mE1Wplj8zcOZRK4+cycltrgo5G41/ZX+s4IguSEpP4ueJpmvv21TqK\neEQpg2L1AL+rKj8OakWH0i1kUEwI8UAycydSRUREMG7iZP5S36bcXxb0er2MEopsERQURP/+d5pi\ngzRPdlQt2r1A1VMFmTB2qNZRRBaZx47jjzJu9PtyjtZRxCNKGRTDZGJQcn0+9zmM1WhkT758WkcT\nQtgxmbkTqVJGCfWqD/y++c7SOZBRQvHE8l7XkW9lKcIqTKP8v9FY7jZPjouL0zqaeERN87zB9r0P\nbjwr7MeGYxHUS6yLu4e71lHEIwoKCiIkJITQ0FC6lGrJ2UMLmfzmGzIo5iIMBkOWeq8Jx2UwGHLk\n+0pxJ1Lds3Qub15ZOieyzaIp42hW7QqvjZf9Wo5ufPgk8uW7zM8/R9O6tSzNtGcnj5xkT8VYVgUu\n0jqKeAwGg4GhQ4cybdo0ysaeQRfdEGuB6vjV89Y6msgFMTExOfJ9U1oP9evZkaci6nIsaRBFps7C\narXSu3dvvvvuO0wmk7QocmBS3IlUaUcJ9cjSOZE9dDod8/MuoJ7fCxzL5M1Cp9Plbijx2PLm9WRQ\nhUiODIihteVzreOIB5g4MZry22fSPCxQ6yjiMRkMBkJCQgCIjoaGDeHfdRqHEg4vKCiI0R88z8ul\nDBTJX0Q+7zkZKe5EqrSjhMX/iWZWYzPvvdeEixdl6Zx4fCX1hbmUL4F5y5bhrZcRZ2fQefhTVB40\nA1v8DHQ+Upjbq1eXmGjYU1ZeOCKdTpfhzImnZ1teeukQgYHRMigmHptfiZIkJsRQ9PxLRFyUrRLO\nRoo7cY+0o4S/BERR8LSFfmONGqcSjuy7jZ9Qj4pS2DmRwIGt2TGkBL+++TmvL3tP6zgiA2vXnqRb\n8iLOzSqhdRTxGDLrKasou5g6tSGbNvXJ5UTCmfz0xW/02+tNi+P/w0324zodKe4EkPEoYavri8g/\n7z9MSYdTrxHiUSTcSmBvuX8YVcysdRSRzZZ3HM3/Nufnda2DiAyZTP9SoyHkzS/7Ip3Jhx/WY8KE\n00QuOEDffrW0jiMckE6nY8CUglSq9DnbJozP9BrhuBRVVbXOAICiKKq9ZBF37P9pI4ZXWhC3cSeV\nn26odRzhgCK790K3fyld9yfIaX1OJCwsjIvnrSxRJ9PVOhjfkgXvu0an02U6+yCyV1hYGDabLfXr\n27dh2rR3eP31+ZQufaf9iLwezmNG/WZUvrSXttHxWkcRDmj79tM0berN2bN5KFZMr3UckQFFUVBV\n9bGPSpU+dyJTtds8z/8qehM5XpZlisej//kit2+3kcLOydhsNszTx1P7XBniLq7DEB0NgL+/P3q9\nHpPJdE+xIXKWzWbDZDIRFBSEoijo//qdwAbBPPtsMXk9nFDzj0byzBkr+37coHUU4YCMxmPUrn1A\nCjsnJsWdeKBd9Trwc/F9WscQDujKhXiaX9lNzekmraOIHGCxWKhABfaVjaFvOQNGo5EdO3Zw+vRp\nraO5JIvFQnh4OMHBwai3tvNqu5vyejip+h1eYmdxb7aEDNI6inAw8fEJbN9enUmT5FRMZybFnXig\nMZM+5mSJ66z/309aRxEOZtLUgzTOv4K67WVJrzOKiIggbPZKisfDnuNb0Ov1mM1mYmNjtY7mkiIi\nIggNDSV+/x8M3nKLbj0nyOvhxPZ3f4/pTWNIuJWgdRThQJZ1m8bIPFN46aXyWkcROUiKO/FAJUqX\noMn2tsybc0zrKMLBLF4MzTvKckxnpYuKwmf6dMbs9+XPw5vAZEJvNlP/+nWto7kkXVQUerOZw0Ne\nZX9x8FnwlbweTmz4xFDy3nLno2HDtI4iHEiD3SYqN5V2B85OijvxUC07hPLj7620jiEcyIkTlzlz\nphqhobW1jiJyiC0gAKvRSO2lG/mjTiEwmbAajezJl0/raC7JFhBA/IgRLPe7SsGA5vJ6ODl3D3ea\nXGzD3oPHtY4iHMTyD8ZQ/MZtXlk8U+soIodlqbhTFKWNoij/KIpyVFGUDzK4P1hRlH2KouxVFOWA\noiiJiqL43r0vRlGUv+7evzO7fwGR89555ynG2T7ll0/Wah1FOIiJH3xJZcNvGAwFtI4ickhQUBAh\nISH4FPNnQdmhWK1WgoODKVNG9nJoISgoiJED27O1gic1qzaT18MFhH32Nb9sW8a2bae0jiIcwLxj\nixnVtAYFihfROorIYQ8t7hRFcQNmAa2BGkAPRVGqpr1GVdVpqqrWVVW1HvAhsElV1St3704GAu/e\n3yh744vc4OHhxpGq1TAvTtQ6inAQ7vEf0Tbwe61jiBxkMBgYOnQo06ZN45O/omnRwkyTJk3w8/PT\nOppLMhgMXLw6lAaWFkTGWDCb5fVwdsWK6Wlf5Ud+CpqrdRRh544dOsruyv/SY+A0raOIXJCVJuaN\ngGOqqloAFEVZBnQA/snk+h7A0jRfK8jyT4fXZnxrXn1VT2JiMh4e8nKKzK1asIxXTtpoMn+q1lFE\nDjMYDISEhJCUBNPKQZ06UFtW4mri8mVYt6UTJ050onBhrdOI3BAWFkb1mpf4b2U5Ro0Kxcvr/l7B\n0t9QAIR+NJDqXoV5IayN1lFELshKcecHpD1u6xR3Cr77KIriDbQBBqe5WQU2KIqSBMxVVXXeY2YV\nGurcuTKenkcI/3Qvw99roHUcYccWrp7G9VrleNmvhNZRRA7R6XSYTKZ7bmuex5u1LY7z/WC/1GtE\n7tDpdLR9aTH58/sTHp5x7zN5PZyPzWZj0oqpPPOMheQzkTRLjsbi74+/vz/nzp3DaDTe9/+pcD3J\nySqnbp2ihV8vraOIXJKV4u5RtAO2plmSCdBUVdUziqIU5U6Rd1hV1a0ZPTjtX0KBgYEEBgZmczzx\nJF5p8QE/bvuT4e/FaB1F2ImwsLB7miMnJSXxV+n9PHuqY+r/zzJy7Hwyej131diOf7epeLx9At8S\nvhqkcl3vv/8BTUYHcHyYkTfkw7xLsVgs1KwZzvTpoejNZqxGI0ajES8vL62jCY2kf1++GpXAzc2z\noN5WeV+2U5s2bWLTpk3Z9v2yUtydBsqm+br03dsy0p17l2SiquqZu/8+ryjKSu7M+j20uBP2p3ff\nN3njj3acjY6lhL9s0hd3Ro5NJhMWi4XIyEjy7t9Ion8Szdu34cLFCzJy7EIadm3CnoKJ/NW5Df22\nRWkdx6UsXnyY95W5nJpcQ+soIpdFREQwfXoob31UE+OtBjx1t99k7969tY4mNJL+fbnhqSgq1j6M\nT4VXZEbXTqWf0AoNDX2i75eVzVO7gIqKohgURfHiTgG3Ov1FiqIUAJoDq9LclldRFJ+7/60HXgAO\nPlFioZkXu7TlmxXurAl6Tesowo5YLBbCw8MJDg6mg6EsU6q/w67duzh9OrMxIOGsVjd7hkjDIa1j\nuJwvpm+lZuBlPLyyezGOsHcp/Q0rX4Q50d9Kv0kB3Pu+3LNLM/r+upgdO3bI+7KLeOg7gaqqSYqi\nDAHWc6cYnK+q6mFFUd66c7eackzTK8DPqqreTPPw4sBKRVHUuz/ra1VV12fvryByQ8o0fzFff6qf\n2JHhqI9M87umiIgIQkND0efJQ/Ut/1B92kLa3b4tI8cuaMgXkXw2ozjfRi6jS9/uWsdxCdFHozn8\n4tssb5LxXjvh3FL6TfY/3orbzZ7hWviruBcvyx75+9elpb4v6/UA6GVG16VkaZhPVdWfgCrpbpuT\n7uuFwMJ0t0UDdZ4wo7ADKdP8uxo+jfubrSl+aB9xNerKxm2ROnLM8ePw558waRJ6kJFjF1S0RFEa\nHq/AomMTpLjLJRPGvkMVT19adWihdRShgZR+k6Ghoewv5MGJ93qyvGSA9Dd0canvywB3l/jJ+7Lr\nkDPtRZZZLBa++W09X75enTpFkjEajTLNL1JHjnF3h9atwWTCajSyJ18+raMJDXR5djg7yx8m/lq8\n1lFcgvflDTR1e0nrGEIjaftNHi1RjtsH/qRxo8bS39DF2QICWF0+mSmeOyAkRN6XXYwUdyLLUqb5\nP596iCbF66dO88fGxj78wcJpBQUFMXZsCDeGDoXatbFarQQHB8vIsYt6Y/ggqpzOx+eDx2sdxemt\nCpnE2D9u8ZF5ptZRhIZS+k2+vuUfRjbPT+G8NTAajVrHEhoKCgrCc/wkKl/yBJD3ZRcju69Flsk0\nv8iIwWCgvP9AWg9fTL/ycVjMZpo0aUJcXJzW0YRGXjs1iLP75e+FnHZ7yXQ2lyxM1+JFtI4iNJBR\nv0mvv+cw5Fcbew6bUq8Rrufcr9toeDqJWVTkSnS0vC+7GCnuRJalLL9L2aCLyYTVapWN24LvdwfS\nJqA/QeaFD79YOL32346iVKlEXtl/jtq1i2kdxynFxycQk1CWKv2lMbGryugAsz59rlC+vELXrlWp\nUaOoBqmEPYj59H3O+hfHNH2G1lGEBqS4E1mWduO2/tYtEiZOJPjUKZnmd2E6nY7goSPYU+oU9eKv\nZnqKqnAtJUr4ULnyZj74IJl166S4ywnjxu1l7tUIroyRM8vE//P396VSpS2MGJHETz8Fah1HaCEJ\nhrQ8TY/Y3uzJ5KA7eV92blLciSxLu3G7bOwprv/yH+Xf7QUeF7SOJjQycuRI3unQipp5CzFt6XSt\n4wg7YjQWYuBAH5KTVdzcFK3jOJ3ISHe6d5dDa8T9xr6fj9gBC0iwNcVL56l1HJHLLkRfoxyFmPmN\nrKRxVVLciUeSsnEb4N0+4SQd3cysiAiNUwktBR7+nZolG2odQ9iRsLAwbty4SZ48QXTrNouaNS/e\nd430xcy6lD6jKc6dy8Ply4Px9Z2JyfQLIM+n+H+vv1mH4YPyYx4fxeiJz2odR+SyRav7MnhQZ61j\nCA1JcSeyJKON29fjj7DR71sKji2Nu7u7TPO7oN9/2kRQ59sceHOJ1lGEHbHZbIwbF0rB4xMo8udM\nEvUvY/H3l76Yjymlz6jFYiEyMpIyxw/TqtUMqlWT51NkzNopPwf+6s9o/tE6ishF3357lBs3ihBi\nqq51FKEhKe5ElmQ0IpyUmET5Ed9S2CMvw0I+1CCV0Nr82StoREXKVjBoHUXYGYvFwiWvQ/Q7eRG1\nlQ5PoxGj0YiXl5fW0RySxWIhPDyckLFj8Jlbg3c3hxA8fbo8nyJDYyZ1p86ckaxe8j3te3bSOo7I\nJb8PX0G7gBrodK9oHUVoSPrcicfm7uFOHUs1fv5TlmW6qpUb3+bZ+jJrJ+4XERHByM++5G+DN3/t\nWC19MZ9QSp/RqPVf8Gazy+StUEGeT5GpsuXL0uhoBeYtH6t1FJFLTp26RvFTVxg3tpzWUYTGZOZO\nPJHuAf2o8slwbl6Lxzu/j9ZxRC7atOlfrNYSBAf7ah1F2KGUvpjJ9eoy3vMPmoV8hF5xk76Yjynl\n+Zx7agbPnbgJJpP0GRUP1LPlSEaeeJNLZ85RqKScWuvsgoP3sdWvE2Naywm6rk5m7sQT6TFyGN63\nFZb3e1PrKCKX/fzeMl6ssJ68eeU0NnG/lL6YTRb/TmwhN7Y39sNqNLInXz6tozkkW0AAxzu24Nei\n8fRqMfxOn1F5PsUD9B78BpErPVjZpb3WUUQOS0pM4uz1t3jnrUtaRxF2QIo78cR2Fe6E268JWscQ\nuazXn1/yRrvbWscQdiqlL+ZN2y0GXqnEwt9mEhwcLH0xH1NQUBBjwnrSLbEq+fPkx2q1yvMpHurf\nso2of3Sf1jFEDps0cgz/lj/JiA/baB1F2AFZlimeWJUvwnj2eR86xifg4yOb+13Bhhk/UFm9Qfuw\nXlpHEXYqbV/MErfqsn2tPwMGVuXmzTitozmkovl8URJO432pKxHnorGYzTRp0oS4OHk+RcbCwsKw\nBgRSb3M8Q3qOo0jl5PuukRYazmFDbASNbwfg7uGudRRhB6S4E0+s8XMV8c7/F1On/su4cY20jiNy\nwcqVUyldtT6jvOSvEJG5tH0x9wYl4HniJEM+rqpxKse0wxjOh5u9qX3+G62jCAdhs9kYP2Ui797s\nT8zJhdSPjpaWJE5ox/L/MWNLHHn+95PWUYSdkE9mIlu8+OIVFi3yYNw4rZOInJaUmMQP9bczqsQ0\nraMIO5VRX8wicdfwWRTLWJ8auLsjfTEfgU6nw+Or7/mhai++z+TDuDyfIiMWiwXFbRbffBOK3mzG\nKi1JnM7x0CEUzJOXlxrJQSriDinuRLYICalB9eqenDtnpVgxvdZxRA4yjx2HV6IbA4KHah1F2KnM\nlnnly3eAd5JvMH5841xO5NiqV+nIptvnGL5pHD6F5FRikXURERFMnBiKXn/nfTmlJUnv3r01TiYe\nR1hYGDabLfXrpCToEfcf3z7Vip13B35kqa2QA1VEtqhWrQjNS87ny/5jtI4icthvRxbz1KlasrZf\nPLLXXrvKnDny5+ZRjQk5y/pn2kthJx5ZSgsNTCYIDb3TQsNslhYaDspms2EymQgKCkJRFAofiGZI\n+Xcx9O6JXq/HZDLdU/wJ1yTFncg23fyX4H5mrtYxRA6Kv3qdvRWi6d7uPa2jCAcUFtaAqmVmsnzB\nUq2jOIyzZ+M5eLA2M2ZU0TqKcEApLUkwmdjcpBSHCiVJCw0HZ7FYCA8PJzg4mGF1/Pnhtwns2LGD\n06dPax1N2AlZlimyzfOzv6Lx0uq8sH0vdZvU0zqOyAbpl4Dk+Wk98y658af+WOqeKlkCIrLK11dH\nAcNeIn/YRbd+PbSO4xDee28vJUp40bBhgNZRhANKaUkSGhrK+XzufLdvPgnBF6SFhgOLiIggNFSW\n2orMycydyDZVa1ejVkxRZs74UOsoIpukXwJyy8vAxkrd8ff3lyUg4rH07xhC72NHiT10ROsodi/p\ndiJHPNsyuPefWkcRDiptS5I434YsKn6GCiVL4efnp3U08Zhkqa14GCnuRLaql6c1B3y2ax1DZKO0\nS0BMz1dh8vI5sgREPLZX+rxK6cuebOjbVesodi+yX3+mb4rn/XFvah1FOLCUliSDvvmOZqercSj6\nN4xGo9axxGOyBQRgHTIECheGjz4Ck0mW2op7yLJMkW3CwsLwKVaaaLd43nljMIXKFL3vGlnC53hk\nCYjIbkdqPU/jPetRk5NR3GSMMTMLb62las3GBEo/SfEYMmpJUuxWA34o9jWjRo7CS+clLTQcUFBQ\nEKY3WvNGvuJUrdgIq9VKcHCwLLUVqeQdQ2Qbm83GpKmTKfz0HnSJR8ibGC8NU51A6hIQuLMEBNCD\nLAERj63n8m95eUgB2o0zM9z0gdZx7NKW9b+zv/w5PuuyQesowkFlNpBat+/3qLazmJYtyOVE0Knf\n4gAAIABJREFUIjuUKV2GNX5/E3+5AI2io7GYzTRp0oS4uDitowk7IcWdyFYWiwXPwvl5+79o3P2f\nkYapTsAWEIB14ED0V6/eucFkwmq1skdm7sRj8s7vg++52czaVpXhJq3T2KePPx9BfY8y1GpQW+so\nwskMumik+rrVWscQj+mrWXOweSQRvmg9Hp7yMV7cT/5UiGwVERGBcfF83KtUgYsXZQmfEwgKCuLb\nV9rQJW8B9M8GyhIQkS0mf9KZatXcOXbsEpUqFdI6jl2x2RK5oF6hW92hWkcRTui1xUYu+37Bhhk/\n0Oq9dlrHEY9Ap9Mxf3soT117igkTJ2R6jXBtUtyJbKWLikL/8cfQrh3MmgWFC8sSPgdnMBio+u9B\nFpX1RydLQEQ2qVKlMP7+Wxk+PJE1awK1jmNXvhz4Nbc2TGHIqs5aRxFOKG+BvCys0JGT03dKcedg\nGlevR9iVOLZ0WS+z+iJTUtyJbJXSMFWv14OfnyzhcwIHt+/D4pvIq8t+o5BBjs8W2SMsLIxGDfNw\ncWVZQsaGoLgr913jKgcwpe8n2XzJz7xSsRYm04HU21zluRC5o+n3JgbX8WKI5SoGQwGt44gsijP2\nY5qnL7XCpLATmZPiTmSrtA1T9cDVyxcZOWqMLOFzUDqdjrHjBnCpRkn+jpiX6TVCPCqbzcaSJR/w\nY6FObDnpT1WPiy57AFNKP0mLxcKS0Ok0SP6Tze1buORzIXJH7drFKFPmD4YPv8333zfXOo7IgvhL\n8TQ7epu/JszQOoqwc1LciWx1T8PUPRGcfmsunduGyRI+BzVy5EhqnRjHS+595MOlyHb/xv7Lmo7F\naFT3KkGX/F36AKaUfpLjhvcn7/UzBI/50GWfC5E73n8vmW9XG0m4tRWvPPLnzN7Ne3sJtTwq8OLo\nIK2jCDsnDYZEtktpmNr+9XCOFD1L985dpWGqg/pu4XLOFLQxalKY1lGEE4qIiGD8xFG8/18Ex6+c\nTD2AKTY2VutouS6ln2TeWrWgRg2Xfi5E7nh7cBPOVNrPR8OGaR1FZEHITwGsf9esdQzhAGTmTmSb\njBqmfrUSQv5uR57mz6ReIxzHoq/O0+R2FwoUkj0ZIvvpoqIoCgw8Wxrzxa+YYyrvsgcw6aKimD+k\nAd540j/yzl47V30uRO5w93CnY3QDalsWAJ9rHUc8wNKl/3DjRhHGTaiudRThAKS4E9kmo83+3f5c\nx0WPo/xq+kWDROJJJCcl0/63zbhPlePYRc5IOYDpnYuvUuXz6oS81p4Cpaq45AFM1np1CE/cwI8v\nLwHDYTmMSuSKQTPmM3R8Vby/WsErr3fVOo7IhMl0nueeO4tOV0rrKMIBSHEnclRQr7G8tqs958+e\np2iJolrHEY/g2xVH+IkWfDOsqdZRhJNKewDTtB0FOLj5JVY+1dElD2BK/Hc/5fPkoVKDtvDbYekn\nKXLF1z+s5ObNisxZMZo/TxzK8Bo5qVVb+7bvpUSBGcycOVfrKMJByJ47kaNe7NKWmsf8mD7ua62j\niEc0/eM4TjeujJu7/DUhckbaA5hUXV0a7oujrl9Z/Pxcq+VG0u1EXtzyEwO9+jJt2jQioqMx3+0n\n6WrPhchdNpuNUf3nsLfyCZJuJ2KIjgbA398fvV6PyWS6p02HyH2/D32VWj5bqFFDBshF1sjMnchx\nZby/ZskaD8JkSb/DSExMZs+eSqxYcUPrKMLJpRzABCFsrfAKflG+DFgzUOtYuerI3j9Y19KH3bPl\nL0mR+8rVqkDrRX0ZGfEherPZpU+t1Vr6npeJtxM5UfYkFa+9kHqmgcykioeR4k7kOJOpJqGVv+XM\nEQMlq8gotCOY/dkePDx86dixktZRhJPK6ACmuGcaMn/Jqwz/YBze3skucQBTcrLKhZsJVDnb/IHt\nRlzhuRDaiIiIYHbEp+jPnAFVTT2ptbfs98x1aXteRkZGwv7VHPRzp02H7tLzUmRZloo7RVHaADO5\ns4xzvqqqU9LdHwy8BqiAJ1ANKKKq6pWHPVY4v0qVCtHbaxE/DfyXoI0TtI4jsmDdb13o0LIGsFbr\nKMJJZTby/MOv2zl6tDkrV7pGY+Vx43azfcd8rNbKuLkpWscRLkgXFYV+6lSYNQsuXQJFkZNaNZTS\n8zI0NJRO701hWLVe7NixQ2ZSRZY9tLhTFMUNmAW0AP4DdimKskpV1X9SrlFVdRow7e71bYFhdwu7\nhz5WuIb/nmtF2Y0/ax1DZMHVuAss+OVf9k4Zq3UU4YLCwnzp27cA8fEJ+Pg4/4eZGTPy0L//RSns\nhGZSTq3VFy0Kn38uJ7VqLKXnZdzxXewrcJNVb8ygu+IpM6kiy7JyUkIj4JiqqhZVVW8Dy4AOD7i+\nB7D0MR8rnNRLswey+nZ7Dh06r3UU8RDf9unFGb0bLw1+U+sowgX16lWNAgXOMHToDq2j5Lhv31vI\nW9YVTJ3aSOsowoWlnFpr7dYNvLywXrsmJ7VqSBcVhd5sxn/JWvbOAd20mejNZplJFVmWleLOD4hN\n8/Wpu7fdR1EUb6AN8N2jPlY4t2L+xTjc6BBTxryldRTxEMqpbfxVsoLWMYQLGzvsAi9s6szNa/Fa\nR8lRvp/NpWqDm+h0sv1daCf11NrZszEVKcabvZrLSa0asgUEYH3jDZQFEZQe+MGdmVSjkT358mkd\nTTiI7D7jvB2wVVXVK9n8fYUTeOopb/4sLEsz7Vn00WiGt4unkvlLraMIFzZ0ZAuOlL7KyIH9tI6S\nY9aGfUe1hJN0XfOR1lGESD21tr1pEj9V/4tmjZ7FaDRqHcslBQUF8VPHntxu3Rp0Oul5KR5ZVoYL\nTwNl03xd+u5tGenO/y/JfNTH3nMCUGBgIIGBgVmIJxzFmDAzEWFfsnLRcjr27qZ1HJGBmZO/pu6V\nsjSd3EzrKMKFuXt6cKVSD9Z7LSMpMQl3D3etI2W7KfsGUee5BnxSNL/WUYQLy+jU2tonS/DOiE7U\na9gh9RqRe0qUMJB4qBgzquSjWHQ0lrs9L+Pi4rSOJnLIpk2b2LRpU7Z9P0VV1QdfoCjuwBHuHIpy\nBtgJ9FBV9XC66woAJ4HSqqrefJTH3r1WfVgW4fhadfYnf2Ihvlu1R+sogvt76syZ8zLVqh2kWTNL\n6m3SU0doIeFWAjXey0fn5DcIc7L+b8vmfcWQY33Y3ucfKtWorHUcIe4xa+I0Jl76gMMfnse3SCGt\n47gUk8mEwWBi2TL4OZOFTiaTSdohODlFUVBV9bFP2XrozJ2qqkmKogwB1vP/7QwOK4ry1p271bl3\nL30F+DmlsHvQYx83rHB8HQu1ocHaOU47Gu9o0vbUmTMnkleLz8LnaX/8/f2lp47Q1IyPZ1D35NP8\nXPIrdKZiGV7jCAMP6QdQALYcWEDjW1X5esUSWOEYv4dwHUNGB5Ov1ihWbG9D/z92ah3HpXh6eLI4\n4nkK+L6EyZTxnmOZSRUPk6Vd3Kqq/gRUSXfbnHRfLwQWZuWxwnW9+enHNFXnMuCTL+k/Qg5XsQcp\nPXXGP/883hdOY/3QiNFolJ46QlM2m41F362jbnA+Eg//TQWdNxZ/xxt4SN+UuODBneytFIup4GQS\n3Nwd5vcQrsVSszOrvX7gjWRV2nTkouunTxNbcxvrP90gA+DisckRXSLXpIxgKzs/45MoP05fN913\njYxg576Unjrev/wCt2+j1+sxm83SU0doLu58HB/uf5ae+ePxqFYdq9ExBx7SNiVe0bY0g4tV48i1\nfx3u9xCuY2TkQj4pspPwen/x7rt1tI7jMn658TXP2l6Qwk48kew+LVOITKWMYI83v4iHxx7KnowG\nwN/fH71ej8lkum/5ksh5KT112LcPIiPBZJKeOsIuRERE0Pl/y/HYtw/i4lIHHmJjYx/+YDuSMoCi\n1+spd1VhUOcwh/w9hOvwyuNFm/bJhIXd0jqKy/jm3fd5d981zLPuWwQnxCORmTuRqywWCxs2hLNt\nWyh6s9lhR+KdiS0ggHkFoilXuhqtQkLu9NSxWtkjM3dCY7qoKPQA9evDF19A8eLoweEGHlIHUIDA\nfZdh817YvNfhfg/hWj75pAHFiln5+edoWrf21zqO01twajE1C9fg9aJyiI14MlLciVyVOoLt5XXP\nSLwsAdROn959eGFmReb5zwRs0lNH2A1bQABWoxG9Xg8mk8MOPNzze4DD/h7CtRQpkpcXG//C6gGH\naG35UOs4Tu33n6PYXfEsUzqu1TqKcAJS3IlclTqCffXqnZH4woXRe3jICLaGdmzYzG3Fjd/2XSA6\nJkZ66gi7ERQUREhIyJ0BIbgz8DDiPYcbeOjbN4g33wzhyy/T/B4ygCIcgHlieUq26M2JnV2p0Kii\n1nGc1gchNirfWkSdKbK/UTw5Ke5Erko7gn3j22Wc87pB0RHjZQRbQ17hRt4rXo13fg3VOooQ9zAY\nDAwdOpRp06ZRNjqaNT3q4K7zoGHDflpHeyQHV9zg8F9vMXXqNMrFSFNi4TiqP1+TdYUMXO3VjgpH\npZNVTjh7Np6dO2uxcWN5raMIJyHFnchVaUfid1b2Zu+2Lzl+5qaMYGvELSGRZifP80ml5zM9jl16\n6ggtGQwGQkJCAKixcTvdVj9NsJ/jzCAkxl2m8fwAvpq9gVpvhGgdR4hHEhYWxo1G5Tjp/QN/vf8h\nefLmue8aOeX6yczo+TXVSpQjMLC11lGEk5DiTuSqtCPxxYvWZ7z/t3zkU5okOVBFEyV278WS343x\nK5dpHUWIe+h0ugwHHMb8XJJNf/Ri7VGjQww81Fm/kN2lEtkRu5bvTBnvp3GE30O4JpvNxrh1qwjo\nVxDP6PU0y1vTIftN2itbvI2Bv02k6cjJWkcRTkSKO5Hr0o7Er+pdgZN5djFr3v80TuWaQvaPpsuz\nnamvdRAh0slsJuD8W4NoNNmPLv/9h2nu3FxO9WgWzJzDP/5X6Tzgf5i6ddA6jhCPxWKxUM9Wg22l\n97Ag/8vckFOuH1tKv98UHivP0Mq9CPvyHGPf3SJZZkLFk5LiTuSajEbii1ypzS9+61JvlxHs3HPs\n2CXOxtXEOL2m1lGEyLKiJYvRLeFNlnl/yYhT4yhRuoTWkTKUlJjEZ38aqZy/OY2lsBMOLCIigqlz\n1hEQUpRfz26npZxy/dhS+v1aLBYWLFiATrecrc89JzOhIltJcSdyTUYjUQm3EvD/MC8lvAvy9gfv\napDKdY0de4CyZT0pW/ZpraMI8UimfDGbvQHn6NNnNz//2lbrOBl6J6gn8T4JzPt0jdZRhHgiuqgo\nfKZPx3ilOivO/0JLk8kh+03aC4vFQnh4OC89XZoB166xN2Q+I0eNlplQkW3ctA4gXJtXHi/e/PUl\nmLVF6yguZ82awrzxhqfWMYR4LCHTPmHDxgCiNvyjdZT7nD0bz1bPdfTSD8cnv4/WcYR4IimnXL82\nexuz95aEfv2wGo3syZdP62gOKaXfb/iWqQy/UpX8vgUxm83ExsZqHU04CZm5E5prHjyS4X0S6GtL\nRKeTP5K5YeNXf1D5xk3ef7+51lGEeCxbty4mpMy/XGr/N6YPAjO8Jjf2rqTfQwNwJkIhSV1MUr+9\nmEwm2UMjHNo9/Sbf7I+1cGHp0/gEdFFRnBgZxHbvsyz++gwYZCZUZC+ZuROae/71pzmpL8yUKfu0\njuIyNs2YTH+/2VJMC4dls9n4YP8MqifGUGjXCQzR0QD4+/uj1+sxmUz3FV05lcNkMhEUFISiKBT/\n+yTPXV/Du29G52oOIXJK2lOu55+M4ZlnzBQp0gQ/Pz+tozkkW0AAUxM3Yyz4MvpRIWAyyUyoyFby\nyU7YhbZtLzN/vgch0gYqxyXcSmBB4DpGF5+mdRQhnkjc1TjWtKrHW81rkefGDawaneKXsocmNDQU\nvdmMNWK2nCYonEraU67VL2H5cli/XuNQDqpeoar0DI+j4F+fwpcLsVqtMhMqspUUd8IuTJhQi4oV\n3YiOvoK/v6/WcZza5JGj0ds8GDhymNZRhHgiERERGFd8xd7NX3Nw+WL6602anOKXsodGr9cDoJfT\nBIWTyOiU69u3FbZseZtXX11KtWpX5JTrRxS5qTu136yKMn8RZaOjsZjNNGnShLi4OK2jCSchxZ2w\nCxUqFKRUya1MG36Az/43UOs4Tu33U8t4KrGe1jGEeGK6qCj0ZjPFr8bwSpED+A0I5KVSgbm+d0UX\nFUXsqAGU1pfEZ/J0ANlDI5xCZntF1d0jaLJjLu2+kT/jj+LkyfxERcHXX9fB27uO1nGEk5LiTtgN\n01NTaLB9LSDFXU759+S/7K1wiu+aRmgdRYgnlnKKX3m9nlWDLtG+4Bq+qvYiew7k8t6VfB58fmwp\n7YIm0Srk7h4aq5U9MnMnnFTwAiM3q81gcVB/ekXM0zqOw1i3rhEVKixlypQjmV4jM6HiSUlxJ+xG\nt8gIbpUvypoJZtqOMWodxymtCerOiARvWoS11DqKEE8s7Sl+AcXqsbBKALs/G0kD70a5liHpwDFe\n3/AjP1crzdMvDYVDZtlDI5xeIb8SRFaojN9vCwEp7rLi668Pc+lSBY4cqU+hQt5axxFOTE7LFHaj\nQPEibChTkL9+mKV1FKdVa+c1yni8rHUMIbJF2lP8IqKj2XEkgfzeT7O4/E52bjuX4z9/45oNNN6/\nlO216tBi+dbUHOa7e2jkNEHhzF5etZFBbROZPnaC1lEcQvyAcQxq8YsUdiLHycydsCtX+4xl9jkj\nxlsJeOWRk+aeRPr+W7f/tRFsO836Rq+kbpCX/lvC0aU9xe8OE/lnH6Rjt2K8+GLeHPu5u7bsZsC6\nttSuWJPv191p4xIix/0KF1K0rB+NzzRnxZUZjGCM1nHs2tK3h9IxeQWvLvxc6yjCBSiqqmqdAQBF\nUVR7ySK0VWWgjp66oYR8bNY6ikMzmUyYTCYsFguRkZHoth3npDUfTw9ozLlz5zAajanXCOFoMmoe\nntZvv/kTFdWKN95YSLFitzK97kEDHJn9jPh4dyLmt6dJ7bH4lMxL1apVH5hVBlGEszr3Xxwvv1+d\ngc98T7+3m2sdx279YsjDKd+y9P3rmNZRhANQFAVVVZXHfbzM3Am7kfJBqvrRQLZcvZph0SEfkh7N\nPf23VLNmfcCEyG4P+3vAZIKAgKUcX9uZ/rOvsnrnWsqePInF3x9/f/97Bjgyk9KgPGWApOzJk5wo\n48/69WVpFLCeH9auJjRUBkiE6ypWqjjlbn3PKJOOfm9rncY+fWyazNyXb/PbiF+0jiJchBR3wm6k\nfJDatctC376RlDlxktgKWf8gJu4n/beEK2vT5gj1Nx2icPc5jPhrFz6RkY88wHHPAMnUqdw+eQK1\n1nHiixRBeexxVSGcQ1hYGJUqJVDwf76Memk5Xo3uP6nW1Qdllx03U+9mc0pUMGgdRbgIKe6EXbFY\nLHzzTTh7QhqhW3VUZpqeUEofsJhr/1Lu4zvtD6T/lnAle5q706hkU449WxH3Dh2p5e2dOsARFhZG\nTExMpoNGMTExqQMkJFhBUfDs359RTz1F7379cvcXEcIO2Ww2Jk0ysTgmkg0nEwiMjn6k2XFnN33s\nBGKLXWXN+8u1jiJciBR3wq6kfJDSHTwIer3MND0hW0AAlhea8spXofz2/jsUlP5bwsXoduygWKOG\nrLy1lzDPb9G950m3K6WpcdWXGzdqEBkZec+yy7QfTP2SPDi15zOafzCJ/InubJxzZ/+dfuNGGSAR\n4i6LxcLeEgf5fF4YerPrLv/PaI/ulp+O0aRgcz774jNAZjFF7pDiTtiVlJkmAObNg1KlZKbpCQQF\nBfFV3waExRek4MsFpf+WcDm2gABuGI28rR/PWyEfsaupP8s2hrO80J98tNCNWYdrcLTkLiZPDkVv\nNnN18EDWvlCVNv9dId8tGNy6MOOeDuGFLiOgRJg0KBcinYiICMaPv7P8Pz4hHh8XHZRNv0e36uZd\n3Dino8rbfbh0SWYxRe6R4k7YFVtAAFajMXWPWPLYMdy03ZIPUo+pgL4Anza4SK/Lr3ImOhrL3f5b\ncXFxWkcTIlekbXSuV9yo0bQbN1fupLPnM8TV1nH88g4+jxyf+ndO/kJFKJ43L2sMBbjV8jU+f2sA\n4eHhNO+QhAfIAIkQ6aQdlG0dN53RA3bzUqlAlxyUvWeP7tlgOgxuxXu//OJys5hCW1LcCbuS9oOY\nV1ICTxn1PHflFfkg9ZimhA6norUwMxYs1TqKEJpI2+i8bLoBDmshK9XSrhYIDUUBnm/Vn6g//gAv\nzwc+Xghx76DsuLe28cXVjdQfNpM9Bw5oHS3X3XOIWfHi6Dp1wty6tcvNYgptSXEn7Mo9H6T+PY3h\nVn5u3NxD9WpvaR3N4Xh6eLIkaQmNz7fJdCmITqfL3VBCaOD+Rud3mEym+1YLpF12WeshjxdC3Dso\n26JkU7y2RrGrUxPKtHG9921dusEikEPMRO6T4k7YnbQfpCp9uZgq774O07tonMrxeLgFUmpPFJHb\nvsfdw13rOELkOp1O98A9LjExMYSGhv7/sk3uXXap0+no27cv5cqVe+DPEMKVpZ/dPvXsqwxYPJ/j\nx/ZrHS3X2QIC+L1uUZq1G4gCskdXaEKKO2E3MvsgllTIk6Ptn+N0t77yQeoRlBg/nadbdZHCTris\nhzc6Nz1w2WXKAQhyCIIQD5Z+djvi8iW+917L2zcTNUyV+6qeOsXEE6FUeqoFpZA9ukIbUtwJu5HZ\nB7FFJ/4l6e9IPjB+gLfeO5dTOabf52ygjW0L7WZ/qXUUIeyeLLsU4vFkOihbuQY3vmnC001X0a2b\nawzKJl26RsC381Gbvci8hd/IHl2hGSnuhN3r/dUCnmu7jaMjljPjiz5ax3EIMaPmEV32Jfr6FdI6\nihB262HLNlOuEUJk7EGz423anOLZZ72ZPLleLibSzlNrF3CyYF56rF6rdRTh4hRVVbXOAICiKKq9\nZBH258MPdxAe7sO1a9Vxc1O0jmPXjh27xFOVb7E7ykb1xv5axxFCCOGiOnX6nY0bC3DhQm08PNy0\njpNjJhpHsfpyGC2T+uNpKJnpddLEXGSFoiioqvrYH3aluBMOITExmbx5LZjNV3n33Tpax7FrnVrN\n4GBMXY4ee07rKEIIIVxYQkISrxRYyMsNLAzeEqp1nBxx4cIN2g2qQMO8Lfk08iut4wgnIMWdcBm9\nem1mwwYdcXGNtI5ity6dv0T1sKKMK/kpA4IHax1HCCGEixvdwcj2HwOp8fYeChdJzvAaR57RatBg\nExfOQ4wlUOsowkk8aXEne+6Ew5g1qxG/FOzGxlkDeX7Ii1rHsUsfvBOEXx4fBkyXwk4IIYT2POvq\nqVN4B39e+5LmRd+i7MmTWPz98ff359y5c6mn0tq7sLAwbDbbPbcdPlyQAwd6MWjQF5hMmxy6SBXO\nI0sLoBVFaaMoyj+KohxVFOWDTK4JVBRln6IoBxVF+S3N7TGKovx1976d2RVcuB5fXx1rAzrz7ieu\ndbRyViXdTqTkf2tp5S49AYUQQtiPoKFdiCkYR3W/eIL8/TEajezYsYPTp09rHS3LbDYbJpOJoKAg\nFEWh7LETDP3pM4KDllGqlBcmk+m+4k8ILTx05k5RFDdgFtAC+A/YpSjKKlVV/0lzTQHgM+AFVVVP\nK4pSJM23SAYCVVW9nL3RhSsaMfc5Xogozy+rf6Rl+9Zax9FU+lHE07v20vB6MqdLlkodBZVRRCGE\nEFr7btX3fNF0Mm/sGkVLt8EU1Osxm830drDm3haLhfDwcEJDQ9Gbzdz8oT9Lli3DetpL62hCpMrK\nzF0j4JiqqhZVVW8Dy4AO6a7pCXynquppAFVVL6S5T8nizxHioWrUKkvNmHLMjBimdRTNpR9FPFF4\nA1vLV6d8pYro9XoZRRRCCGEXdFFRvPD3DfqcKsJvqz/l1shg9GYz9a9f1zraI4mIiCA0NJTYQ79z\n+eZlvJs1w2w2Exsbq3U0IVJlZc+dH5D2T+0p7hR8aVUGPO8ux/QBPlVVNeXIIBXYoChKEjBXVdV5\nT5hZuLCwsDAq+DzPspJfYnx3BPqC+e67xpVmq9KOIlYY+gOtP/2OkAlT8PKSUUQhhBD2wRYQgNVo\nJNT9A3ZVy8ehHxZQJcrCngMHtI72SHRRUZwfO5SWbpF8vkalvXdB9OBwRapwbtl1oIoHUA94HtAD\n2xVF2a6q6nGgqaqqZxRFKcqdIu+wqqpbM/omaTfUBgYGEhgYmE3xhLOw2Wx8vmgu57quJt+55ZQp\n97xDbszOLimjiHq9nl5l20Ipg0MudRFCCOG8goKCCAkJITQ0lKe6DkX5bTMze/ehjKGs1tEeyU2D\nH61ZxPvFOtK+ey0wmbBareyR91zxBDZt2sSmTZuy7ftlpbg7DaT9v6/03dvSOgVcUFXVBtgURdkM\nPAUcV1X1DICqqucVRVnJnVm/hxZ3QmTGYrHQ+EYFeu77g2JNS5BgNGI0Gl1ytkoXFYV+4kTw9IRx\n4wBkFFEIIYRdMRgMDB06lGnTplE27hLHWrRl6TcVaKqP0zpaliWevUiP7yPwrVyQN9YvArMZq9VK\ncHAwZcqU0TqecGDpJ7RCQ5+sJ2RWirtdQEVFUQzAGaA70CPdNauAcEVR3IE8QGNghqIoeQE3VVXj\nFUXRAy8AztnFUuSaiIgIjMvXc65maWx7d5HPQTdmZwdbQACJe/bg0bUrhITIKKIQQgi7ZDAYCAkJ\nSf36zQHwzDOwapWGobIoLjqWDqtmE1uwAK8s2nWnSI2OxmI206RJE+LiHKdIFc7vocWdqqpJiqIM\nAdZz52CU+aqqHlYU5a07d6tzVVX9R1GUn4H9QMreur8VRfEHViqKot79WV+rqro+534d4Qp0UVHo\nzWb8X+gGc+eCyeSys1XNkqpwaePH6CMj0YeHyyiiEEIIu6LT6TJdmfXccwXo2rUvnTr55m6oR5CQ\nkETDpscZ5lOdIft24KX3vqdIFcLeZGnPnaqqPwFV0t02J93X04Bp6W6LBuo8YUYh7pFJumsNAAAR\n7ElEQVSyMVuv10PJki47W5V4O5ETKz7h1qsT2DlrlowiCiGEsDsPO+Ds8uXPaLdjKmM7/IF73eoZ\nXpMbB6Vl1KQ8OVnl66+bY0ssxJaa1Tk4dDBly2a+T1Cn0+VoRiGyIrsOVBEi16TdmK0Hl52tOrJ3\nM2sCD7F39mBedJduI0IIIRxPo0bnsSlVWFnye9pdKUbly9c1OSgtpb2QxWIhMjKSsidPsuqqP3ny\nxNKv3x5Gj16GyWSS8yGE3ZPiTjicezZmR0eztq+Z06eb0LGj68xWRR+NZmv1bbSJ7sq48eMyvU5G\nEYUQQti7lp9Hsn5kU37VRTK29CBUjQ5Ku6dJ+ahRdPvcSHCwkfPnXe/ANuG4pLgTDintxuweNuhe\ncwnVzt/SOFXuGf5+RyrnKUbE98u0jiKEEEI8kYiICObPPcyQ0Lq0uDyTRf+00uSgtJT2Qr9/9REt\nVyxDP2UK06a55oFtwnFJcSccSmYbs5v6rmbL7v3sGG1Dn88n94Plol8Wf8vWSn+xsIEDHDEmhBBC\nPIQuKgqf6dNZoO/JrK3j+TK2PVMSA6mfmJirOTy3bSTY8hmrC1/klwSVamFhLntgm3BcUtwJh5LZ\nhuqkMWNp9GZBqv3zB4u/25jLqXLX6dB3CdMV52Vze62jCCGEEE8s7UFp7yhuqD16kNS7Ny8ejWbS\nwInE3Ix54F63Jz1wJSkxicM7trK59lbau1XhUPBufH0iXPbANuHYpLgTTsHdw50B1Scy5vy77Nu+\nl7pN6mkdKUcsWvQ3Qcd3EX0kWesoQgghRLZIf1DajdKlMdapQxObF5GRXXg/vAotW1pYuPDOQSeP\neuBKRidhpkg8ep3m22YR87zK6IITiLlyCU+fIoDrHtgmHJsUd8JpvPX+UL7tPIOR5m78/P1xreNk\nu+RklXfeSaDX68cxVG6mdRwhhBAiW6Q/KM1iNhPQtClnK1akZfSvzJypY8v6EMaOfoOKK1Ws6Q5c\nOXTo0AMLvJiYGCIjI+85CTPa4E+ZDbF03rmMXY1aUtWanyFjRmGxWKRJuXBoUtwJpzLx3aX0+LYp\nqz5ZTod3u2kd57FlNMoYFVWK5ORWGAz/w2TamCt9f4QQQojckPagtLRMJhOdOkVQuYSep5c0J/xE\nVV74r/M9B67o9fr72hiknd0rV67cvSdhms1YjUZmHXidGd26MmFpJEv79n1gDiEchRR3wqls/GMT\nb63pSYFTH/PRhYO4ZdD/zRGKovT9dkofP8nqczB48Gby59fnWt8fIYQQIidldlBaipiYGKqePUuv\ngACqWzty7s/v6TK+NnG+7lR2z8Pcj3dw7VohYmIszJp1b/FmNBrxSE4g+aKVdV2aQquS6PV64E5B\nOGTxV6kFotVqfej7qrQXEo5AijvhVGw2G6MPLsDiW51iO46hL+mlSTPU7JB2lFHXsQO9utdgeMwO\nbt6UfjtCCCGcw8MGW00mE7Zy5bAajdTT68FkosXI99nx69d8OjeETZt9WbtuDKPX1yWsTUM85s8n\nKek2QWOrss87jv90t6mQpOPlS4kk/1cANeQjlHHjAe45CbNGjRoO8/lAiAeR4k44nf/O/8eaNnV5\nu8uL6E6evG9tvqNI6bdzdc8mbFt/xeujDzEPHiz9doQQQriU9AeuJCSpfL1mL6X8uzFzZhV69+5D\n1AkD9ZOSYNEi3PfsoccbT2PK+wwr95/jdtNn2fE6GI1GFL0eFDc5CVM4rfvXrAnh4CIiIui/NAJd\nmrX4ZrOZ2NhYjZM9Gl1UFHmmTOYHYwcOFIN8v2xBbzZLvx0hhBAuJe2BKxHR0ZjvHnTi5+cHgJub\nwvlWz2NdvBh274aQEDp+uQ3D5C/Zm98X+P8C0Wq1AnISpnBeMnMnnI4uKgq92QyAGhrKOWscxfXF\nHa4osgUEMOb2T+wNyM9PBQbLKKMQQgiX9bCDTtLP7qUv3jI6kVNOwhTOSIo74XTSNkPddW4f3dR5\n/N5jF3sOHNA62iPJY7MyN3En297agdvyH2WUUQghhMt52IErAG5ubg8s3lJm6+QkTOEKpLgTTift\n6F2jYnXpHh/L2tcbUrrhAK2jZdmFOJVVeWZiLDCWRSvWyiijEEIIl5SV061Tir/MirewsDD69u1L\nuXLlMv0echKmcBZS3Amnk370Tle6Dbc4yNkza7WOliW2eBvnFpdkwDt/Mzy0ktZxhBBCCLuWldm9\nqlWr2n0bJCGygxR3wimlH7071LEnU5fUYfpHH4GbfZ8j1D3wBzokrCfa7Qwmk5LpdTLKKIQQQmRt\ndk8IVyHFnXAqDxq9e+FkZ5bkD6eB94e5G+oRTJy4mx/2PcPE/YEE1SiqdRwhhBBCCOFAFFVVtc4A\ngKIoqr1kEc6rS5ff+PHHUsTGlqFIkbya5QgLC8Nms91z24ULeZg3bwDt2i2hZs2L6HQ6GY0UQggh\nhHAhiqKgqmrmS7ceQmbuhEtZvjyQrkVmsN7/d/4ZVgc394yXaOZ0YWWz2TCZTFgsFiIjI/E7dpT9\n//1Hx46lqF/fhtFoeuj+ASGEEEIIIdKy781HQmQzNzeFan0u0/B2NE3250FRFAzR0QD4+/uj1+sx\nmUz3zarlBIvFQnh4OMHBwRQ7vo7/a+9ug6MqzzCO/++YhsiqCIpGhLyopbWKVakKvmDVaZs6Flod\nUWmNkSl0tEVbZa1i22ymw5gSFKq0Uy2FMo4VLDhKi284AjN1CFJAjAIaxUDMKKBoxbXSSO5+2BNY\nwm4SZHOS2b1+n3bPPmfz7Mw1u7n3OfvcRxSv5eijV9Lc3Nztf1tEREREso9W7iTn5PfLZ+fsBzjx\nthuY/HA9kfvuIx6NEo1GKSgoCG0ec+fOpbq6mlei4zjntQ8ZOWsFfU8dToWalIuIiIjIF6CVO8lJ\nT7+5nLKG9Uy5ZxRvfPgmkUiE2tpampqaQptDn5UrmTd+GEWPLuajQhj4zxeI1NYyfNeu0OYgIiIi\nItlDK3eSkwrr6jhyxkxOf6+VCwc+wp9/vIUxgy8LrbBqaTHWH7GRxkE7+N6Kf3Hq40shFiMej7NG\nK3ciIiIi8gWouJOc9NmIEcSjUSZEYpxx82iu7v8Um3bsYl3f0m7/2w0NO3nwwasYdfZQLmlZwYCT\nzwSWEo/HmTx5MkOGDOn2OYiIiIhI9lFxJznpxhtvpKqqiurqas477mxWjP01G8eMYPPQjfwqGuOd\nHY0d7lbZ2W6aqVodAOx+7b88tGQiA4vfYuEz19HUdD7Tp0+n+O232VJby8iRI9m2bVsmXqKIiIiI\n5BgVd5KTSkpKmDRp0r7C6rElFN/xJ/6zZBYLZ0/k2aWDGDgw0aagePNmtpSVUVZWxvbt24lGo522\nKWjf6qB482ZWHV7GOUvWEL1oGp+NPIG8vDGUlJRQVVUVzosWERERkaym4k5yVqrCavyECYwdu4Dy\n8hFceeUDzJhRTaS2dr/dNGtqamhs7Hhlb+vWrXtbHVRXV7Nu8ljGTv8jk207ffoUUFRYSGVlJaWl\npWmfo7CwMEOvVERERERygbl7T88BADPz3jIXyW7pLpls09jYyIABpfy2+nYi8+bBu+/C1KnE43Eq\nKioYNmzYAaty7Vf2KisrKSk6ngtPO5JH1v+VVS2N1N29mfzIMVRUVLBo0SJiMTUqFxEREZF9zAx3\nty96vlbuJOd09Fs5gFgsRmFdHZGaGli8mNZXX2XF/BqWXTSYUz4u4H+fDN1vVS55ZS8vr4D54yby\noxfnM3z7bmouPoyyosHMXLCHfv3nAKjVgYiIiIh0CxV3Iim07aYZmTqV3bffSsGxLez+ZC1LC9bw\nRp8a/nHPvUw6ahSRVasA9vbJKy+v4KTd+XwQGUTdtefzm1kPEolEoDSmVgciIiIi0q3UxFwkhbbd\nNOPxOIcf2Z8zb6nl451nMarvT/n5nilc8dbJDGv4CGproboaYjEitbWUF+7itpcWsPrcUVwfm7r3\nOQC1OhARERGRbqWVO5EUDthNM6lNQTweJ/+CazgjGoVIBGKxvatya+sruvQcIiIiIiKZpuJOJI10\nbQpisdh+ffIipF+VU6sDEREREQmLijuRdgoLCzvcxbKxsbHTVbl4PN7pTphqdSAiIiIimaRWCCIH\nqSstDNTmQEREREQOllohiISss5W9tjEiIiIiImHq0sqdmZUDM0nsrvkXd/9dijHfBGYAXwJ2uPsl\nXT03GKeVOxERERERyVmHunLXaSsEM8sDZgHfAU4DrjOzr7Yb0w/4A3CFu58OXN3Vc0V6u+XLl/f0\nFERSUjalN1M+pbdSNiWbdaXP3blAg7tvcfcWYD4wpt2YccAid28GcPf3D+JckV5NHwLSWymb0psp\nn9JbKZuSzbpS3J0INCXdfyc4lmwoMMDMlpnZajO7/iDOFRERERERkUOUqQ1V8oGzgUuBCLDSzFZm\n6LlFRERERESkE51uqGJmI4CYu5cH9+8EPHljFDP7JVDo7tXB/dnA00BzZ+cmPYd2UxERERERkZzW\n3a0QVgOnmFkJ8C5wLXBduzFPAg+Y2WFAH+A84D7g9S6cCxzaixAREREREcl1nRZ37r7HzH4GPMe+\ndgYbzewniYf9IXffZGbPAq8Ae4CH3H0DQKpzu+vFiIiIiIiI5Kou9bkTERERERGR3q0ru2UeMjMb\nbGYvmNlrZlZvZpOC49PMbKOZvWxmi8zsqKRz7jKzhuDxb4cxT8k9KbJ5S7vHbzezVjMbkHRM2ZRQ\ndJRPM5sUZLDezGqSjiuf0u3SZdPMvm5mK81snZm9ZGbfSDpH2ZRuZ2Z9zGxVkMF6M6sKjvc3s+fM\n7HUzezbo0dx2jrIpoeggnxmriUJZuTOzIqDI3V82syOANST63Q0GXnD31uCfE3f3u8zsa8AjwDnB\nmOeBL7uWGSXD0mUzuNR4MDAb+Aow3N13mtmpwN9QNiUEHbx3FgFTgMvd/XMzO9bd31c+JSwpsvlv\n4AfATOBed3/OzL4L3OHul+hzXcJkZn3d/dNgL4gXgVuAq4AP3H1asBFgf3e/U9mUsKXJ51FkqCYK\nZeXO3d9z95eD258AG4ET3f15d28NhtWRmDTAaGC+u3/u7o1AA4mG6CIZlS6bwcMzgGi7U8agbEpI\nOsjnTUCNu38ePPZ+cIryKaFIkc1NwCCgFWhbETmaxK7ZoM91CZG7fxrc7ENifwkn8f44Lzg+D/h+\ncFvZlFClymcma6JQirtkZlYKnAmsavfQeOCp4Hb75ufNqPm5dLPkbJrZaKDJ3evbDVM2pUe0e+8c\nCowyszozW2Zmw4NhyqeErl02fwFMN7OtwDTgrmCYsimhMbM8M1sHvAcsdffVwPHuvg0SX04AxwXD\nlU0JVZp8JjukmijU4i64dGMhcGvwTV/b8buBFnd/NMz5iLRJziaJHV+nAFU9OimRQIr3znwSlxSN\nAO4A/t6T85PclSKbNwW3i0kUenN6cn6Sm9y91d3PIrH6ca6ZnUZi9W6/YeHPTOSAfJ4XXHoJZKYm\nCq24M7N8Eh8AD7v7k0nHK4HLgXFJw5uBIUn3B7Pv0g6RjEqRzZOBUmC9mb1NIn9rzew4EjksTjpd\n2ZRulea9swl4HCD4xm+PmR2D8ikhSpPNG9z9CQB3X0jidyKgz3XpAe7+MbAcKAe2mdnxsPc3o9uD\nYcqm9Iggn8tI5DNjNVGYK3dzgA3u/vu2A2ZWTuI3TaPdfXfS2MXAtWZWYGZlwCnASyHOVXLLftl0\n91fdvcjdT3L3MuAd4Cx3304im9comxKiA947gSeASwHMbChQ4O4foHxKuFJls9nMLgYws8tI/D4E\n9LkuITGzY9t2wjSzw4Fvkfi98mKgMhh2A9D2hYSyKaFJk89NmayJOm1inglmdgHwQ6A+uMbUgbuB\n+4ECYKmZAdS5+83uvsHMHgM2AC3Azdq1SLpDmmxOcfdnkoY5YADKpoQpXT6BucAcM6sHdgMVoHxK\neDrI5gTg/mAXuM+AiaBsSqhOAOaZWR6JRYwF7v6UmdUBj5nZeGALMBaUTQldunw2kKGaSE3MRURE\nREREskDou2WKiIiIiIhI5qm4ExERERERyQIq7kRERERERLKAijsREREREZEsoOJOREREREQkC6i4\nExERERERyQIq7kRERERERLKAijsREREREZEs8H/FPGzB+BOpwQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=[15,5])\n", + "ax = fig.add_subplot(111)\n", + "\n", + "plt.plot(WD,P_rat_py_v1,'-sk',ms=9,mfc='w',label ='py_gcl_v1')\n", + "#plt.plot(-WD,P_rat_py_v1,'x--',label ='py_gcl_v1_inv')\n", + "\n", + "plt.plot(WD,P_rat_py_v0,'-define('plotly', function(require, exports, module) {/**\n", - "* plotly.js v1.8.0\n", + "" + "!function(t){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=t();else if(\"function\"==typeof define&&define.amd)define([],t);else{var e;e=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,e.Plotly=t()}}(function(){var t;return function e(t,r,n){function i(o,s){if(!r[o]){if(!t[o]){var l=\"function\"==typeof require&&require;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error(\"Cannot find module '\"+o+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var u=r[o]={exports:{}};t[o][0].call(u.exports,function(e){var r=t[o][1][e];return i(r?r:e)},u,u.exports,e,t,r,n)}return r[o].exports}for(var a=\"function\"==typeof require&&require,o=0;or;++r)e[r]=0;return e}function o(t,e,r){switch(arguments.length){case 0:return new i([0],[0],0);case 1:if(\"number\"==typeof t){var n=a(t);return new i(n,n,0)}return new i(t,a(t.length),0);case 2:if(\"number\"==typeof e){var n=a(t.length);return new i(t,n,+e)}r=0;case 3:if(t.length!==e.length)throw new Error(\"state and velocity lengths must match\");return new i(t,e,r)}}e.exports=o;var s=t(\"cubic-hermite\"),l=t(\"binary-search-bounds\"),c=i.prototype;c.flush=function(t){var e=l.gt(this._time,t)-1;0>=e||(this._time.splice(0,e),this._state.splice(0,e*this.dimension),this._velocity.splice(0,e*this.dimension))},c.curve=function(t){var e=this._time,r=e.length,i=l.le(e,t),a=this._scratch[0],o=this._state,c=this._velocity,u=this.dimension,f=this.bounds;if(0>i)for(var h=u-1,d=0;u>d;++d,--h)a[d]=o[h];else if(i>=r-1)for(var h=o.length-1,p=t-e[r-1],d=0;u>d;++d,--h)a[d]=o[h]+p*c[h];else{for(var h=u*(i+1)-1,g=e[i],v=e[i+1],m=v-g||1,y=this._scratch[1],b=this._scratch[2],x=this._scratch[3],_=this._scratch[4],w=!0,d=0;u>d;++d,--h)y[d]=o[h],x[d]=c[h]*m,b[d]=o[h+u],_[d]=c[h+u]*m,w=w&&y[d]===b[d]&&x[d]===_[d]&&0===x[d];if(w)for(var d=0;u>d;++d)a[d]=y[d];else s(y,x,b,_,(t-g)/m,a)}for(var k=f[0],A=f[1],d=0;u>d;++d)a[d]=n(k[d],A[d],a[d]);return a},c.dcurve=function(t){var e=this._time,r=e.length,n=l.le(e,t),i=this._scratch[0],a=this._state,o=this._velocity,c=this.dimension;if(n>=r-1)for(var u=a.length-1,f=(t-e[r-1],0);c>f;++f,--u)i[f]=o[u];else{for(var u=c*(n+1)-1,h=e[n],d=e[n+1],p=d-h||1,g=this._scratch[1],v=this._scratch[2],m=this._scratch[3],y=this._scratch[4],b=!0,f=0;c>f;++f,--u)g[f]=a[u],m[f]=o[u]*p,v[f]=a[u+c],y[f]=o[u+c]*p,b=b&&g[f]===v[f]&&m[f]===y[f]&&0===m[f];if(b)for(var f=0;c>f;++f)i[f]=0;else{s.derivative(g,m,v,y,(t-h)/p,i);for(var f=0;c>f;++f)i[f]/=p}}return i},c.lastT=function(){var t=this._time;return t[t.length-1]},c.stable=function(){for(var t=this._velocity,e=t.length,r=this.dimension-1;r>=0;--r)if(t[--e])return!1;return!0},c.jump=function(t){var e=this.lastT(),r=this.dimension;if(!(e>t||arguments.length!==r+1)){var i=this._state,a=this._velocity,o=i.length-this.dimension,s=this.bounds,l=s[0],c=s[1];this._time.push(e,t);for(var u=0;2>u;++u)for(var f=0;r>f;++f)i.push(i[o++]),a.push(0);this._time.push(t);for(var f=r;f>0;--f)i.push(n(l[f-1],c[f-1],arguments[f])),a.push(0)}},c.push=function(t){var e=this.lastT(),r=this.dimension;if(!(e>t||arguments.length!==r+1)){var i=this._state,a=this._velocity,o=i.length-this.dimension,s=t-e,l=this.bounds,c=l[0],u=l[1],f=s>1e-6?1/s:0;this._time.push(t);for(var h=r;h>0;--h){var d=n(c[h-1],u[h-1],arguments[h]);i.push(d),a.push((d-i[o++])*f)}}},c.set=function(t){var e=this.dimension;if(!(t0;--l)r.push(n(o[l-1],s[l-1],arguments[l])),i.push(0)}},c.move=function(t){var e=this.lastT(),r=this.dimension;if(!(e>=t||arguments.length!==r+1)){var i=this._state,a=this._velocity,o=i.length-this.dimension,s=this.bounds,l=s[0],c=s[1],u=t-e,f=u>1e-6?1/u:0;this._time.push(t);for(var h=r;h>0;--h){var d=arguments[h];i.push(n(l[h-1],c[h-1],i[o++]+d)),a.push(d*f)}}},c.idle=function(t){var e=this.lastT();if(!(e>t)){var r=this.dimension,i=this._state,a=this._velocity,o=i.length-r,s=this.bounds,l=s[0],c=s[1],u=t-e;this._time.push(t);for(var f=r-1;f>=0;--f)i.push(n(l[f],c[f],i[o]+u*a[o])),a.push(0),o+=1}}},{\"binary-search-bounds\":21,\"cubic-hermite\":22}],21:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){var o=[\"function \",t,\"(a,l,h,\",n.join(\",\"),\"){\",a?\"\":\"var i=\",r?\"l-1\":\"h+1\",\";while(l<=h){var m=(l+h)>>>1,x=a\",i?\".get(m)\":\"[m]\"];return a?e.indexOf(\"c\")<0?o.push(\";if(x===y){return m}else if(x<=y){\"):o.push(\";var p=c(x,y);if(p===0){return m}else if(p<=0){\"):o.push(\";if(\",e,\"){i=m;\"),r?o.push(\"l=m+1}else{h=m-1}\"):o.push(\"h=m-1}else{l=m+1}\"),o.push(\"}\"),a?o.push(\"return -1};\"):o.push(\"return i};\"),o.join(\"\")}function i(t,e,r,i){var a=new Function([n(\"A\",\"x\"+t+\"y\",e,[\"y\"],!1,i),n(\"B\",\"x\"+t+\"y\",e,[\"y\"],!0,i),n(\"P\",\"c(x,y)\"+t+\"0\",e,[\"y\",\"c\"],!1,i),n(\"Q\",\"c(x,y)\"+t+\"0\",e,[\"y\",\"c\"],!0,i),\"function dispatchBsearch\",r,\"(a,y,c,l,h){if(a.shape){if(typeof(c)==='function'){return Q(a,(l===undefined)?0:l|0,(h===undefined)?a.shape[0]-1:h|0,y,c)}else{return B(a,(c===undefined)?0:c|0,(l===undefined)?a.shape[0]-1:l|0,y)}}else{if(typeof(c)==='function'){return P(a,(l===undefined)?0:l|0,(h===undefined)?a.length-1:h|0,y,c)}else{return A(a,(c===undefined)?0:c|0,(l===undefined)?a.length-1:l|0,y)}}}return dispatchBsearch\",r].join(\"\"));return a()}e.exports={ge:i(\">=\",!1,\"GE\"),gt:i(\">\",!1,\"GT\"),lt:i(\"<\",!0,\"LT\"),le:i(\"<=\",!0,\"LE\"),eq:i(\"-\",!0,\"EQ\",!0)}},{}],22:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){var o=6*i*i-6*i,s=3*i*i-4*i+1,l=-6*i*i+6*i,c=3*i*i-2*i;if(t.length){a||(a=new Array(t.length));for(var u=t.length-1;u>=0;--u)a[u]=o*t[u]+s*e[u]+l*r[u]+c*n[u];return a}return o*t+s*e+l*r[u]+c*n}function i(t,e,r,n,i,a){var o=i-1,s=i*i,l=o*o,c=(1+2*i)*l,u=i*l,f=s*(3-2*i),h=s*o;if(t.length){a||(a=new Array(t.length));for(var d=t.length-1;d>=0;--d)a[d]=c*t[d]+u*e[d]+f*r[d]+h*n[d];return a}return c*t+u*e+f*r+h*n}e.exports=i,e.exports.derivative=n},{}],23:[function(t,e,r){function n(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t}e.exports=n},{}],24:[function(t,e,r){function n(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}e.exports=n},{}],25:[function(t,e,r){function n(t){var e=t[0],r=t[1],n=t[2];return Math.sqrt(e*e+r*r+n*n)}e.exports=n},{}],26:[function(t,e,r){function n(t,e,r,n){var i=e[0],a=e[1],o=e[2];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t}e.exports=n},{}],27:[function(t,e,r){function n(t,e){var r=e[0],n=e[1],i=e[2],a=r*r+n*n+i*i;return a>0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a),t}e.exports=n},{}],28:[function(t,e,r){\"use strict\";function n(t){this._components=t.slice(),this._time=[0],this.prevMatrix=t.slice(),this.nextMatrix=t.slice(),this.computedMatrix=t.slice(),this.computedInverse=t.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-(1/0),1/0]}function i(t){t=t||{};var e=t.matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return new n(e)}var a=t(\"binary-search-bounds\"),o=t(\"mat4-interpolate\"),s=t(\"gl-mat4/invert\"),l=t(\"gl-mat4/rotateX\"),c=t(\"gl-mat4/rotateY\"),u=t(\"gl-mat4/rotateZ\"),f=t(\"gl-mat4/lookAt\"),h=t(\"gl-mat4/translate\"),d=(t(\"gl-mat4/scale\"),t(\"gl-vec3/normalize\")),p=[0,0,0];e.exports=i;var g=n.prototype;g.recalcMatrix=function(t){var e=this._time,r=a.le(e,t),n=this.computedMatrix;if(!(0>r)){var i=this._components;if(r===e.length-1)for(var l=16*r,c=0;16>c;++c)n[c]=i[l++];else{for(var u=e[r+1]-e[r],l=16*r,f=this.prevMatrix,h=!0,c=0;16>c;++c)f[c]=i[l++];for(var p=this.nextMatrix,c=0;16>c;++c)p[c]=i[l++],h=h&&f[c]===p[c];if(1e-6>u||h)for(var c=0;16>c;++c)n[c]=f[c];else o(n,f,p,(t-e[r])/u)}var g=this.computedUp;g[0]=n[1],g[1]=n[5],g[2]=n[6],d(g,g);var v=this.computedInverse;s(v,n);var m=this.computedEye,y=v[15];m[0]=v[12]/y,m[1]=v[13]/y,m[2]=v[14]/y;for(var b=this.computedCenter,x=Math.exp(this.computedRadius[0]),c=0;3>c;++c)b[c]=m[c]-n[2+4*c]*x}},g.idle=function(t){if(!(tn;++n)e.push(e[r++]);this._time.push(t)}},g.flush=function(t){var e=a.gt(this._time,t)-2;0>e||(this._time.slice(0,e),this._components.slice(0,16*e))},g.lastT=function(){return this._time[this._time.length-1]},g.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||p,n=n||this.computedUp,this.setMatrix(t,f(this.computedMatrix,e,r,n));for(var i=0,a=0;3>a;++a)i+=Math.pow(r[a]-e[a],2);i=Math.log(Math.sqrt(i)),this.computedRadius[0]=i},g.rotate=function(t,e,r,n){this.recalcMatrix(t);var i=this.computedInverse;e&&c(i,i,e),r&&l(i,i,r),n&&u(i,i,n),this.setMatrix(t,s(this.computedMatrix,i))};var v=[0,0,0];g.pan=function(t,e,r,n){v[0]=-(e||0),v[1]=-(r||0),v[2]=-(n||0),this.recalcMatrix(t);var i=this.computedInverse;h(i,i,v),this.setMatrix(t,s(i,i))},g.translate=function(t,e,r,n){v[0]=e||0,v[1]=r||0,v[2]=n||0,this.recalcMatrix(t);var i=this.computedMatrix;h(i,i,v),this.setMatrix(t,i)},g.setMatrix=function(t,e){if(!(tr;++r)this._components.push(e[r])}},g.setDistance=function(t,e){this.computedRadius[0]=e},g.setDistanceLimits=function(t,e){var r=this._limits;r[0]=t,r[1]=e},g.getDistanceLimits=function(t){var e=this._limits;return t?(t[0]=e[0],t[1]=e[1],t):e}},{\"binary-search-bounds\":29,\"gl-mat4/invert\":137,\"gl-mat4/lookAt\":138,\"gl-mat4/rotateX\":142,\"gl-mat4/rotateY\":143,\"gl-mat4/rotateZ\":144,\"gl-mat4/scale\":145,\"gl-mat4/translate\":146,\"gl-vec3/normalize\":27,\"mat4-interpolate\":30}],29:[function(t,e,r){arguments[4][21][0].apply(r,arguments)},{dup:21}],30:[function(t,e,r){function n(t,e,r,n){if(0===u(e)||0===u(r))return!1;var i=c(e,h.translate,h.scale,h.skew,h.perspective,h.quaternion),a=c(r,d.translate,d.scale,d.skew,d.perspective,d.quaternion);return i&&a?(s(p.translate,h.translate,d.translate,n),s(p.skew,h.skew,d.skew,n),s(p.scale,h.scale,d.scale,n),s(p.perspective,h.perspective,d.perspective,n),f(p.quaternion,h.quaternion,d.quaternion,n),l(t,p.translate,p.scale,p.skew,p.perspective,p.quaternion),!0):!1}function i(){return{translate:a(),scale:a(1),skew:a(),perspective:o(),quaternion:o()}}function a(t){return[t||0,t||0,t||0]}function o(){return[0,0,0,1]}var s=t(\"gl-vec3/lerp\"),l=t(\"mat4-recompose\"),c=t(\"mat4-decompose\"),u=t(\"gl-mat4/determinant\"),f=t(\"quat-slerp\"),h=i(),d=i(),p=i();e.exports=n},{\"gl-mat4/determinant\":133,\"gl-vec3/lerp\":26,\"mat4-decompose\":31,\"mat4-recompose\":33,\"quat-slerp\":34}],31:[function(t,e,r){function n(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}function i(t,e){t[0][0]=e[0],t[0][1]=e[1],t[0][2]=e[2],t[1][0]=e[4],t[1][1]=e[5],t[1][2]=e[6],t[2][0]=e[8],t[2][1]=e[9],t[2][2]=e[10]}function a(t,e,r,n,i){t[0]=e[0]*n+r[0]*i,t[1]=e[1]*n+r[1]*i,t[2]=e[2]*n+r[2]*i}var o=t(\"./normalize\"),s=t(\"gl-mat4/create\"),l=t(\"gl-mat4/clone\"),c=t(\"gl-mat4/determinant\"),u=t(\"gl-mat4/invert\"),f=t(\"gl-mat4/transpose\"),h={length:t(\"gl-vec3/length\"),normalize:t(\"gl-vec3/normalize\"),dot:t(\"gl-vec3/dot\"),cross:t(\"gl-vec3/cross\")},d=s(),p=s(),g=[0,0,0,0],v=[[0,0,0],[0,0,0],[0,0,0]],m=[0,0,0];e.exports=function(t,e,r,s,y,b){if(e||(e=[0,0,0]),r||(r=[0,0,0]),s||(s=[0,0,0]),y||(y=[0,0,0,1]),b||(b=[0,0,0,1]),!o(d,t))return!1;if(l(p,d),p[3]=0,p[7]=0,p[11]=0,p[15]=1,Math.abs(c(p)<1e-8))return!1;var x=d[3],_=d[7],w=d[11],k=d[12],A=d[13],M=d[14],T=d[15];if(0!==x||0!==_||0!==w){g[0]=x,g[1]=_,g[2]=w,g[3]=T;var E=u(p,p);if(!E)return!1;f(p,p),n(y,g,p)}else y[0]=y[1]=y[2]=0,y[3]=1;if(e[0]=k,e[1]=A,e[2]=M,i(v,d),r[0]=h.length(v[0]),h.normalize(v[0],v[0]),s[0]=h.dot(v[0],v[1]),a(v[1],v[1],v[0],1,-s[0]),r[1]=h.length(v[1]),h.normalize(v[1],v[1]),s[0]/=r[1],s[1]=h.dot(v[0],v[2]),a(v[2],v[2],v[0],1,-s[1]),s[2]=h.dot(v[1],v[2]),a(v[2],v[2],v[1],1,-s[2]),r[2]=h.length(v[2]),h.normalize(v[2],v[2]),s[1]/=r[2],s[2]/=r[2],h.cross(m,v[1],v[2]),h.dot(v[0],m)<0)for(var L=0;3>L;L++)r[L]*=-1,v[L][0]*=-1,v[L][1]*=-1,v[L][2]*=-1;return b[0]=.5*Math.sqrt(Math.max(1+v[0][0]-v[1][1]-v[2][2],0)),b[1]=.5*Math.sqrt(Math.max(1-v[0][0]+v[1][1]-v[2][2],0)),b[2]=.5*Math.sqrt(Math.max(1-v[0][0]-v[1][1]+v[2][2],0)),b[3]=.5*Math.sqrt(Math.max(1+v[0][0]+v[1][1]+v[2][2],0)),v[2][1]>v[1][2]&&(b[0]=-b[0]),v[0][2]>v[2][0]&&(b[1]=-b[1]),v[1][0]>v[0][1]&&(b[2]=-b[2]),!0}},{\"./normalize\":32,\"gl-mat4/clone\":131,\"gl-mat4/create\":132,\"gl-mat4/determinant\":133,\"gl-mat4/invert\":137,\"gl-mat4/transpose\":147,\"gl-vec3/cross\":23,\"gl-vec3/dot\":24,\"gl-vec3/length\":25,\"gl-vec3/normalize\":27}],32:[function(t,e,r){e.exports=function(t,e){var r=e[15];if(0===r)return!1;for(var n=1/r,i=0;16>i;i++)t[i]=e[i]*n;return!0}},{}],33:[function(t,e,r){var n={identity:t(\"gl-mat4/identity\"),translate:t(\"gl-mat4/translate\"),multiply:t(\"gl-mat4/multiply\"),create:t(\"gl-mat4/create\"),scale:t(\"gl-mat4/scale\"),fromRotationTranslation:t(\"gl-mat4/fromRotationTranslation\")},i=(n.create(),n.create());e.exports=function(t,e,r,a,o,s){return n.identity(t),n.fromRotationTranslation(t,s,e),t[3]=o[0],t[7]=o[1],t[11]=o[2],t[15]=o[3],n.identity(i),0!==a[2]&&(i[9]=a[2],n.multiply(t,t,i)),0!==a[1]&&(i[9]=0,i[8]=a[1],n.multiply(t,t,i)),0!==a[0]&&(i[8]=0,i[4]=a[0],n.multiply(t,t,i)),n.scale(t,t,r),t}},{\"gl-mat4/create\":132,\"gl-mat4/fromRotationTranslation\":135,\"gl-mat4/identity\":136,\"gl-mat4/multiply\":139,\"gl-mat4/scale\":145,\"gl-mat4/translate\":146}],34:[function(t,e,r){e.exports=t(\"gl-quat/slerp\")},{\"gl-quat/slerp\":35}],35:[function(t,e,r){function n(t,e,r,n){var i,a,o,s,l,c=e[0],u=e[1],f=e[2],h=e[3],d=r[0],p=r[1],g=r[2],v=r[3];return a=c*d+u*p+f*g+h*v,0>a&&(a=-a,d=-d,p=-p,g=-g,v=-v),1-a>1e-6?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,l=Math.sin(n*i)/o):(s=1-n,l=n),t[0]=s*c+l*d,t[1]=s*u+l*p,t[2]=s*f+l*g,t[3]=s*h+l*v,t}e.exports=n},{}],36:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a,o,s,l,c){var u=e+a+c;if(f>0){var f=Math.sqrt(u+1);t[0]=.5*(o-l)/f,t[1]=.5*(s-n)/f,t[2]=.5*(r-a)/f,t[3]=.5*f}else{var h=Math.max(e,a,c),f=Math.sqrt(2*h-u+1);e>=h?(t[0]=.5*f,t[1]=.5*(i+r)/f,t[2]=.5*(s+n)/f,t[3]=.5*(o-l)/f):a>=h?(t[0]=.5*(r+i)/f,t[1]=.5*f,t[2]=.5*(l+o)/f,t[3]=.5*(s-n)/f):(t[0]=.5*(n+s)/f,t[1]=.5*(o+l)/f,t[2]=.5*f,t[3]=.5*(r-i)/f)}return t}e.exports=n},{}],37:[function(t,e,r){\"use strict\";function n(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function i(t,e,r,n){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2)+Math.pow(n,2))}function a(t,e){var r=e[0],n=e[1],a=e[2],o=e[3],s=i(r,n,a,o);s>1e-6?(t[0]=r/s,t[1]=n/s,t[2]=a/s,t[3]=o/s):(t[0]=t[1]=t[2]=0,t[3]=1)}function o(t,e,r){this.radius=l([r]),this.center=l(e),this.rotation=l(t),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}function s(t){t=t||{};var e=t.center||[0,0,0],r=t.rotation||[0,0,0,1],n=t.radius||1;e=[].slice.call(e,0,3),r=[].slice.call(r,0,4),a(r,r);var i=new o(r,e,Math.log(n));return i.setDistanceLimits(t.zoomMin,t.zoomMax),(\"eye\"in t||\"up\"in t)&&i.lookAt(0,t.eye,t.center,t.up),i}e.exports=s;var l=t(\"filtered-vector\"),c=t(\"gl-mat4/lookAt\"),u=t(\"gl-mat4/fromQuat\"),f=t(\"gl-mat4/invert\"),h=t(\"./lib/quatFromFrame\"),d=o.prototype;d.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},d.recalcMatrix=function(t){this.radius.curve(t),this.center.curve(t),this.rotation.curve(t);var e=this.computedRotation;a(e,e);var r=this.computedMatrix;u(r,e);var n=this.computedCenter,i=this.computedEye,o=this.computedUp,s=Math.exp(this.computedRadius[0]);i[0]=n[0]+s*r[2],i[1]=n[1]+s*r[6],i[2]=n[2]+s*r[10],o[0]=r[1],o[1]=r[5],o[2]=r[9];for(var l=0;3>l;++l){for(var c=0,f=0;3>f;++f)c+=r[l+4*f]*i[f];r[12+l]=-c}},d.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;16>n;++n)e[n]=r[n];return e}return r},d.idle=function(t){this.center.idle(t),this.radius.idle(t),this.rotation.idle(t)},d.flush=function(t){this.center.flush(t),this.radius.flush(t),this.rotation.flush(t)},d.pan=function(t,e,r,i){e=e||0,r=r||0,i=i||0,this.recalcMatrix(t);var a=this.computedMatrix,o=a[1],s=a[5],l=a[9],c=n(o,s,l);o/=c,s/=c,l/=c;var u=a[0],f=a[4],h=a[8],d=u*o+f*s+h*l;u-=o*d,f-=s*d,h-=l*d;var p=n(u,f,h);u/=p,f/=p,h/=p;var g=a[2],v=a[6],m=a[10],y=g*o+v*s+m*l,b=g*u+v*f+m*h;g-=y*o+b*u,v-=y*s+b*f,m-=y*l+b*h;var x=n(g,v,m);g/=x,v/=x,m/=x;var _=u*e+o*r,w=f*e+s*r,k=h*e+l*r;this.center.move(t,_,w,k);var A=Math.exp(this.computedRadius[0]);A=Math.max(1e-4,A+i),this.radius.set(t,Math.log(A))},d.rotate=function(t,e,r,a){this.recalcMatrix(t),e=e||0,r=r||0;var o=this.computedMatrix,s=o[0],l=o[4],c=o[8],u=o[1],f=o[5],h=o[9],d=o[2],p=o[6],g=o[10],v=e*s+r*u,m=e*l+r*f,y=e*c+r*h,b=-(p*y-g*m),x=-(g*v-d*y),_=-(d*m-p*v),w=Math.sqrt(Math.max(0,1-Math.pow(b,2)-Math.pow(x,2)-Math.pow(_,2))),k=i(b,x,_,w);k>1e-6?(b/=k,x/=k,_/=k,w/=k):(b=x=_=0,w=1);var A=this.computedRotation,M=A[0],T=A[1],E=A[2],L=A[3],S=M*w+L*b+T*_-E*x,C=T*w+L*x+E*b-M*_,z=E*w+L*_+M*x-T*b,P=L*w-M*b-T*x-E*_;if(a){b=d,x=p,_=g;var R=Math.sin(a)/n(b,x,_);b*=R,x*=R,_*=R,w=Math.cos(e),S=S*w+P*b+C*_-z*x,C=C*w+P*x+z*b-S*_,z=z*w+P*_+S*x-C*b,P=P*w-S*b-C*x-z*_}var O=i(S,C,z,P);O>1e-6?(S/=O,C/=O,z/=O,P/=O):(S=C=z=0,P=1),this.rotation.set(t,S,C,z,P)},d.lookAt=function(t,e,r,n){this.recalcMatrix(t),r=r||this.computedCenter,e=e||this.computedEye,n=n||this.computedUp;var i=this.computedMatrix;c(i,e,r,n);var o=this.computedRotation;h(o,i[0],i[1],i[2],i[4],i[5],i[6],i[8],i[9],i[10]),a(o,o),this.rotation.set(t,o[0],o[1],o[2],o[3]);for(var s=0,l=0;3>l;++l)s+=Math.pow(r[l]-e[l],2);this.radius.set(t,.5*Math.log(Math.max(s,1e-6))),this.center.set(t,r[0],r[1],r[2])},d.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},d.setMatrix=function(t,e){var r=this.computedRotation;h(r,e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]),a(r,r),this.rotation.set(t,r[0],r[1],r[2],r[3]);var n=this.computedMatrix;f(n,e);var i=n[15];if(Math.abs(i)>1e-6){var o=n[12]/i,s=n[13]/i,l=n[14]/i;this.recalcMatrix(t);var c=Math.exp(this.computedRadius[0]);this.center.set(t,o-n[2]*c,s-n[6]*c,l-n[10]*c),this.radius.idle(t)}else this.center.idle(t),this.radius.idle(t)},d.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},d.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-(1/0),e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},d.getDistanceLimits=function(t){var e=this.radius.bounds;\n", + "return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},d.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},d.fromJSON=function(t){var e=this.lastT(),r=t.center;r&&this.center.set(e,r[0],r[1],r[2]);var n=t.rotation;n&&this.rotation.set(e,n[0],n[1],n[2],n[3]);var i=t.distance;i&&i>0&&this.radius.set(e,Math.log(i)),this.setDistanceLimits(t.zoomMin,t.zoomMax)}},{\"./lib/quatFromFrame\":36,\"filtered-vector\":20,\"gl-mat4/fromQuat\":134,\"gl-mat4/invert\":137,\"gl-mat4/lookAt\":138}],38:[function(t,e,r){\"use strict\";function n(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function i(t){return Math.min(1,Math.max(-1,t))}function a(t){var e=Math.abs(t[0]),r=Math.abs(t[1]),n=Math.abs(t[2]),i=[0,0,0];e>Math.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,s=0;3>s;++s)a+=t[s]*t[s],o+=i[s]*t[s];for(var s=0;3>s;++s)i[s]-=o/a*t[s];return h(i,i),i}function o(t,e,r,n,i,a,o,s){this.center=l(r),this.up=l(n),this.right=l(i),this.radius=l([a]),this.angle=l([o,s]),this.angle.bounds=[[-(1/0),-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;16>c;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}function s(t){t=t||{};var e=t.center||[0,0,0],r=t.up||[0,1,0],i=t.right||a(r),s=t.radius||1,l=t.theta||0,c=t.phi||0;if(e=[].slice.call(e,0,3),r=[].slice.call(r,0,3),h(r,r),i=[].slice.call(i,0,3),h(i,i),\"eye\"in t){var u=t.eye,p=[u[0]-e[0],u[1]-e[1],u[2]-e[2]];f(i,p,r),n(i[0],i[1],i[2])<1e-6?i=a(r):h(i,i),s=n(p[0],p[1],p[2]);var g=d(r,p)/s,v=d(i,p)/s;c=Math.acos(g),l=Math.acos(v)}return s=Math.log(s),new o(t.zoomMin,t.zoomMax,e,r,i,s,l,c)}e.exports=s;var l=t(\"filtered-vector\"),c=t(\"gl-mat4/invert\"),u=t(\"gl-mat4/rotate\"),f=t(\"gl-vec3/cross\"),h=t(\"gl-vec3/normalize\"),d=t(\"gl-vec3/dot\"),p=o.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-(1/0),e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,i=0,a=0,o=0;3>o;++o)a+=e[o]*r[o],i+=e[o]*e[o];for(var s=Math.sqrt(i),l=0,o=0;3>o;++o)r[o]-=e[o]*a/i,l+=r[o]*r[o],e[o]/=s;for(var c=Math.sqrt(l),o=0;3>o;++o)r[o]/=c;var u=this.computedToward;f(u,e,r),h(u,u);for(var d=Math.exp(this.computedRadius[0]),p=this.computedAngle[0],g=this.computedAngle[1],v=Math.cos(p),m=Math.sin(p),y=Math.cos(g),b=Math.sin(g),x=this.computedCenter,_=v*y,w=m*y,k=b,A=-v*b,M=-m*b,T=y,E=this.computedEye,L=this.computedMatrix,o=0;3>o;++o){var S=_*r[o]+w*u[o]+k*e[o];L[4*o+1]=A*r[o]+M*u[o]+T*e[o],L[4*o+2]=S,L[4*o+3]=0}var C=L[1],z=L[5],P=L[9],R=L[2],O=L[6],I=L[10],N=z*I-P*O,j=P*R-C*I,F=C*O-z*R,D=n(N,j,F);N/=D,j/=D,F/=D,L[0]=N,L[4]=j,L[8]=F;for(var o=0;3>o;++o)E[o]=x[o]+L[2+4*o]*d;for(var o=0;3>o;++o){for(var l=0,B=0;3>B;++B)l+=L[o+4*B]*E[B];L[12+o]=-l}L[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;16>n;++n)e[n]=r[n];return e}return r};var g=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;g[0]=i[2],g[1]=i[6],g[2]=i[10];for(var a=this.computedUp,o=this.computedRight,s=this.computedToward,l=0;3>l;++l)i[4*l]=a[l],i[4*l+1]=o[l],i[4*l+2]=s[l];u(i,i,n,g);for(var l=0;3>l;++l)a[l]=i[4*l],o[l]=i[4*l+1];this.up.set(t,a[0],a[1],a[2]),this.right.set(t,o[0],o[1],o[2])}},p.pan=function(t,e,r,i){e=e||0,r=r||0,i=i||0,this.recalcMatrix(t);var a=this.computedMatrix,o=(Math.exp(this.computedRadius[0]),a[1]),s=a[5],l=a[9],c=n(o,s,l);o/=c,s/=c,l/=c;var u=a[0],f=a[4],h=a[8],d=u*o+f*s+h*l;u-=o*d,f-=s*d,h-=l*d;var p=n(u,f,h);u/=p,f/=p,h/=p;var g=u*e+o*r,v=f*e+s*r,m=h*e+l*r;this.center.move(t,g,v,m);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+i),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,a){var o=1;\"number\"==typeof r&&(o=0|r),(0>o||o>3)&&(o=1);var s=(o+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var l=e[o],u=e[o+4],f=e[o+8];if(a){var h=Math.abs(l),d=Math.abs(u),p=Math.abs(f),g=Math.max(h,d,p);h===g?(l=0>l?-1:1,u=f=0):p===g?(f=0>f?-1:1,l=u=0):(u=0>u?-1:1,l=f=0)}else{var v=n(l,u,f);l/=v,u/=v,f/=v}var m=e[s],y=e[s+4],b=e[s+8],x=m*l+y*u+b*f;m-=l*x,y-=u*x,b-=f*x;var _=n(m,y,b);m/=_,y/=_,b/=_;var w=u*b-f*y,k=f*m-l*b,A=l*y-u*m,M=n(w,k,A);w/=M,k/=M,A/=M,this.center.jump(t,H,G,Y),this.radius.idle(t),this.up.jump(t,l,u,f),this.right.jump(t,m,y,b);var T,E;if(2===o){var L=e[1],S=e[5],C=e[9],z=L*m+S*y+C*b,P=L*w+S*k+C*A;T=0>N?-Math.PI/2:Math.PI/2,E=Math.atan2(P,z)}else{var R=e[2],O=e[6],I=e[10],N=R*l+O*u+I*f,j=R*m+O*y+I*b,F=R*w+O*k+I*A;T=Math.asin(i(N)),E=Math.atan2(F,j)}this.angle.jump(t,E,T),this.recalcMatrix(t);var D=e[2],B=e[6],U=e[10],V=this.computedMatrix;c(V,e);var q=V[15],H=V[12]/q,G=V[13]/q,Y=V[14]/q,X=Math.exp(this.computedRadius[0]);this.center.jump(t,H-D*X,G-B*X,Y-U*X)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,a){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter,a=a||this.computedUp;var o=a[0],s=a[1],l=a[2],c=n(o,s,l);if(!(1e-6>c)){o/=c,s/=c,l/=c;var u=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],d=n(u,f,h);if(!(1e-6>d)){u/=d,f/=d,h/=d;var p=this.computedRight,g=p[0],v=p[1],m=p[2],y=o*g+s*v+l*m;g-=y*o,v-=y*s,m-=y*l;var b=n(g,v,m);if(!(.01>b&&(g=s*h-l*f,v=l*u-o*h,m=o*f-s*u,b=n(g,v,m),1e-6>b))){g/=b,v/=b,m/=b,this.up.set(t,o,s,l),this.right.set(t,g,v,m),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(d));var x=s*m-l*v,_=l*g-o*m,w=o*v-s*g,k=n(x,_,w);x/=k,_/=k,w/=k;var A=o*u+s*f+l*h,M=g*u+v*f+m*h,T=x*u+_*f+w*h,E=Math.asin(i(A)),L=Math.atan2(T,M),S=this.angle._state,C=S[S.length-1],z=S[S.length-2];C%=2*Math.PI;var P=Math.abs(C+2*Math.PI-L),R=Math.abs(C-L),O=Math.abs(C-2*Math.PI-L);R>P&&(C+=2*Math.PI),R>O&&(C-=2*Math.PI),this.angle.jump(this.angle.lastT(),C,z),this.angle.set(t,L,E)}}}}},{\"filtered-vector\":20,\"gl-mat4/invert\":137,\"gl-mat4/rotate\":141,\"gl-vec3/cross\":23,\"gl-vec3/dot\":24,\"gl-vec3/normalize\":27}],39:[function(t,e,r){\"use strict\";function n(t,e){this._controllerNames=Object.keys(t),this._controllerList=this._controllerNames.map(function(e){return t[e]}),this._mode=e,this._active=t[e],this._active||(this._mode=\"turntable\",this._active=t.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}function i(t){t=t||{};var e=t.eye||[0,0,1],r=t.center||[0,0,0],i=t.up||[0,1,0],l=t.distanceLimits||[0,1/0],c=t.mode||\"turntable\",u=a(),f=o(),h=s();return u.setDistanceLimits(l[0],l[1]),u.lookAt(0,e,r,i),f.setDistanceLimits(l[0],l[1]),f.lookAt(0,e,r,i),h.setDistanceLimits(l[0],l[1]),h.lookAt(0,e,r,i),new n({turntable:u,orbit:f,matrix:h},c)}e.exports=i;var a=t(\"turntable-camera-controller\"),o=t(\"orbit-camera-controller\"),s=t(\"matrix-camera-controller\"),l=n.prototype,c=[[\"flush\",1],[\"idle\",1],[\"lookAt\",4],[\"rotate\",4],[\"pan\",4],[\"translate\",4],[\"setMatrix\",2],[\"setDistanceLimits\",2],[\"setDistance\",2]];c.forEach(function(t){for(var e=t[0],r=[],n=0;ne)){var r=this._active,n=this._controllerList[e],i=Math.max(r.lastT(),n.lastT());r.recalcMatrix(i),n.setMatrix(i,r.computedMatrix),this._active=n,this._mode=t,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}}},l.getMode=function(){return this._mode}},{\"matrix-camera-controller\":28,\"orbit-camera-controller\":37,\"turntable-camera-controller\":38}],40:[function(t,e,r){function n(t,e){return a(i(t,e))}e.exports=n;var i=t(\"alpha-complex\"),a=t(\"simplicial-complex-boundary\")},{\"alpha-complex\":41,\"simplicial-complex-boundary\":44}],41:[function(t,e,r){\"use strict\";function n(t,e){return i(e).filter(function(r){for(var n=new Array(r.length),i=0;ii;++i)r+=t[i]*e[i];return r}function i(t){var e=t.length;if(0===e)return[];var r=(t[0].length,o([t.length+1,t.length+1],1)),i=o([t.length+1],1);r[e][e]=0;for(var a=0;e>a;++a){for(var l=0;a>=l;++l)r[l][a]=r[a][l]=2*n(t[a],t[l]);i[a]=n(t[a],t[a])}for(var c=s(r,i),u=0,f=c[e+1],a=0;aa;++a){for(var f=c[a],d=0,l=0;ls;++s)r[s]+=t[a][s]*n[a];return r}var o=t(\"dup\"),s=t(\"robust-linear-solve\");a.barycenetric=i,e.exports=a},{dup:115,\"robust-linear-solve\":256}],44:[function(t,e,r){\"use strict\";function n(t){return a(i(t))}e.exports=n;var i=t(\"boundary-cells\"),a=t(\"reduce-simplicial-complex\")},{\"boundary-cells\":45,\"reduce-simplicial-complex\":48}],45:[function(t,e,r){\"use strict\";function n(t){for(var e=t.length,r=0,n=0;e>n;++n)r+=t[n].length;for(var i=new Array(r),a=0,n=0;e>n;++n)for(var o=t[n],s=o.length,l=0;s>l;++l)for(var c=i[a++]=new Array(s-1),u=1;s>u;++u)c[u-1]=o[(l+u)%s];return i}e.exports=n},{}],46:[function(t,e,r){\"use strict\";function n(t){for(var e=1,r=1;rn;++n)if(t[r]n;++n){var s=t[n],l=o(s);if(0!==l){if(r>0){var c=t[r-1];if(0===i(s,c)&&o(c)!==l){r-=1;continue}}t[r++]=s}}return t.length=r,t}var i=t(\"compare-cell\"),a=t(\"compare-oriented-cell\"),o=t(\"cell-orientation\");e.exports=n},{\"cell-orientation\":46,\"compare-cell\":101,\"compare-oriented-cell\":47}],49:[function(t,e,r){\"use strict\";var n=function(){function t(t){return!Array.isArray(t)&&null!==t&&\"object\"==typeof t}function e(t,e,r){for(var n=(e-t)/Math.max(r-1,1),i=[],a=0;r>a;a++)i.push(t+a*n);return i}function r(){for(var t=[].slice.call(arguments),e=t.map(function(t){return t.length}),r=Math.min.apply(null,e),n=[],i=0;r>i;i++){n[i]=[];for(var a=0;aa;a++)i.push([t[a],e[a],r[a]]);return i}function i(t){function e(t){for(var n=0;n>16&255,r[1]=n>>8&255,r[2]=255&n):f.test(t)&&(n=t.match(h),r[0]=parseInt(n[1]),r[1]=parseInt(n[2]),r[2]=parseInt(n[3])),!e)for(var i=0;3>i;++i)r[i]=r[i]/255;return r}function c(t,e){var r,n;if(\"string\"!=typeof t)return t;if(r=[],\"#\"===t[0]?(t=t.substr(1),3===t.length&&(t+=t),n=parseInt(t,16),r[0]=n>>16&255,r[1]=n>>8&255,r[2]=255&n):f.test(t)&&(n=t.match(h),r[0]=parseInt(n[1]),r[1]=parseInt(n[2]),r[2]=parseInt(n[3]),n[4]?r[3]=parseFloat(n[4]):r[3]=1),!e)for(var i=0;3>i;++i)r[i]=r[i]/255;return r}var u={},f=/^rgba?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*,\\s*\\d{1,3}\\s*(,.*)?\\)$/,h=/^rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,?\\s*(.*)?\\)$/;return u.isPlainObject=t,u.linspace=e,u.zip3=n,u.sum=i,u.zip=r,u.isEqual=s,u.copy2D=a,u.copy1D=o,u.str2RgbArray=l,u.str2RgbaArray=c,u};e.exports=n()},{}],50:[function(t,e,r){\"use strict\";\"use restrict\";function n(t){var e=32;return t&=-t,t&&e--,65535&t&&(e-=16),16711935&t&&(e-=8),252645135&t&&(e-=4),858993459&t&&(e-=2),1431655765&t&&(e-=1),e}var i=32;r.INT_BITS=i,r.INT_MAX=2147483647,r.INT_MIN=-1<0)-(0>t)},r.abs=function(t){var e=t>>i-1;return(t^e)-e},r.min=function(t,e){return e^(t^e)&-(e>t)},r.max=function(t,e){return t^(t^e)&-(e>t)},r.isPow2=function(t){return!(t&t-1||!t)},r.log2=function(t){var e,r;return e=(t>65535)<<4,t>>>=e,r=(t>255)<<3,t>>>=r,e|=r,r=(t>15)<<2,t>>>=r,e|=r,r=(t>3)<<1,t>>>=r,e|=r,e|t>>1},r.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},r.popCount=function(t){return t-=t>>>1&1431655765,t=(858993459&t)+(t>>>2&858993459),16843009*(t+(t>>>4)&252645135)>>>24},r.countTrailingZeros=n,r.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t+1},r.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t-(t>>>1)},r.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,t&=15,27030>>>t&1};var a=new Array(256);!function(t){for(var e=0;256>e;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|a[t>>>16&255]<<8|a[t>>>24&255]},r.interleave2=function(t,e){return t&=65535,t=16711935&(t|t<<8),t=252645135&(t|t<<4),t=858993459&(t|t<<2),t=1431655765&(t|t<<1),e&=65535,e=16711935&(e|e<<8),e=252645135&(e|e<<4),e=858993459&(e|e<<2),e=1431655765&(e|e<<1),t|e<<1},r.deinterleave2=function(t,e){return t=t>>>e&1431655765,t=858993459&(t|t>>>1),t=252645135&(t|t>>>2),t=16711935&(t|t>>>4),t=65535&(t|t>>>16),t<<16>>16},r.interleave3=function(t,e,r){return t&=1023,t=4278190335&(t|t<<16),t=251719695&(t|t<<8),t=3272356035&(t|t<<4),t=1227133513&(t|t<<2),e&=1023,e=4278190335&(e|e<<16),e=251719695&(e|e<<8),e=3272356035&(e|e<<4),e=1227133513&(e|e<<2),t|=e<<1,r&=1023,r=4278190335&(r|r<<16),r=251719695&(r|r<<8),r=3272356035&(r|r<<4),r=1227133513&(r|r<<2),t|r<<2},r.deinterleave3=function(t,e){return t=t>>>e&1227133513,t=3272356035&(t|t>>>2),t=251719695&(t|t>>>4),t=4278190335&(t|t>>>8),t=1023&(t|t>>>16),t<<22>>22},r.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>n(t)+1}},{}],51:[function(t,e,r){(function(e){\"use strict\";function n(){try{var t=new Uint8Array(1);return t.foo=function(){return 42},42===t.foo()&&\"function\"==typeof t.subarray&&0===t.subarray(1,1).byteLength}catch(e){return!1}}function i(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(t){return this instanceof a?(a.TYPED_ARRAY_SUPPORT||(this.length=0,this.parent=void 0),\"number\"==typeof t?o(this,t):\"string\"==typeof t?s(this,t,arguments.length>1?arguments[1]:\"utf8\"):l(this,t)):arguments.length>1?new a(t,arguments[1]):new a(t)}function o(t,e){if(t=g(t,0>e?0:0|v(e)),!a.TYPED_ARRAY_SUPPORT)for(var r=0;e>r;r++)t[r]=0;return t}function s(t,e,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");var n=0|y(e,r);return t=g(t,n),t.write(e,r),t}function l(t,e){if(a.isBuffer(e))return c(t,e);if(K(e))return u(t,e);if(null==e)throw new TypeError(\"must start with number, buffer, array or string\");if(\"undefined\"!=typeof ArrayBuffer){if(e.buffer instanceof ArrayBuffer)return f(t,e);if(e instanceof ArrayBuffer)return h(t,e)}return e.length?d(t,e):p(t,e)}function c(t,e){var r=0|v(e.length);return t=g(t,r),e.copy(t,0,0,r),t}function u(t,e){var r=0|v(e.length);t=g(t,r);for(var n=0;r>n;n+=1)t[n]=255&e[n];return t}function f(t,e){var r=0|v(e.length);t=g(t,r);for(var n=0;r>n;n+=1)t[n]=255&e[n];return t}function h(t,e){return e.byteLength,a.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=a.prototype):t=f(t,new Uint8Array(e)),t}function d(t,e){var r=0|v(e.length);t=g(t,r);for(var n=0;r>n;n+=1)t[n]=255&e[n];return t}function p(t,e){var r,n=0;\"Buffer\"===e.type&&K(e.data)&&(r=e.data,n=0|v(r.length)),t=g(t,n);for(var i=0;n>i;i+=1)t[i]=255&r[i];return t}function g(t,e){a.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=a.prototype):t.length=e;var r=0!==e&&e<=a.poolSize>>>1;return r&&(t.parent=$),t}function v(t){if(t>=i())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+i().toString(16)+\" bytes\");return 0|t}function m(t,e){if(!(this instanceof m))return new m(t,e);var r=new a(t,e);return delete r.parent,r}function y(t,e){\"string\"!=typeof t&&(t=\"\"+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case\"ascii\":case\"binary\":case\"raw\":case\"raws\":return r;case\"utf8\":case\"utf-8\":return q(t).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*r;case\"hex\":return r>>>1;case\"base64\":return Y(t).length;default:if(n)return q(t).length;e=(\"\"+e).toLowerCase(),n=!0}}function b(t,e,r){var n=!1;if(e=0|e,r=void 0===r||r===1/0?this.length:0|r,t||(t=\"utf8\"),0>e&&(e=0),r>this.length&&(r=this.length),e>=r)return\"\";for(;;)switch(t){case\"hex\":return z(this,e,r);case\"utf8\":case\"utf-8\":return E(this,e,r);case\"ascii\":return S(this,e,r);case\"binary\":return C(this,e,r);case\"base64\":return T(this,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return P(this,e,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+t);t=(t+\"\").toLowerCase(),n=!0}}function x(t,e,r,n){r=Number(r)||0;var i=t.length-r;n?(n=Number(n),n>i&&(n=i)):n=i;var a=e.length;if(a%2!==0)throw new Error(\"Invalid hex string\");n>a/2&&(n=a/2);for(var o=0;n>o;o++){var s=parseInt(e.substr(2*o,2),16);if(isNaN(s))throw new Error(\"Invalid hex string\");t[r+o]=s}return o}function _(t,e,r,n){return X(q(e,t.length-r),t,r,n)}function w(t,e,r,n){return X(H(e),t,r,n)}function k(t,e,r,n){return w(t,e,r,n)}function A(t,e,r,n){return X(Y(e),t,r,n)}function M(t,e,r,n){return X(G(e,t.length-r),t,r,n)}function T(t,e,r){return 0===e&&r===t.length?W.fromByteArray(t):W.fromByteArray(t.slice(e,r))}function E(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;r>i;){var a=t[i],o=null,s=a>239?4:a>223?3:a>191?2:1;if(r>=i+s){var l,c,u,f;switch(s){case 1:128>a&&(o=a);break;case 2:l=t[i+1],128===(192&l)&&(f=(31&a)<<6|63&l,f>127&&(o=f));break;case 3:l=t[i+1],c=t[i+2],128===(192&l)&&128===(192&c)&&(f=(15&a)<<12|(63&l)<<6|63&c,f>2047&&(55296>f||f>57343)&&(o=f));break;case 4:l=t[i+1],c=t[i+2],u=t[i+3],128===(192&l)&&128===(192&c)&&128===(192&u)&&(f=(15&a)<<18|(63&l)<<12|(63&c)<<6|63&u,f>65535&&1114112>f&&(o=f))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=s}return L(n)}function L(t){var e=t.length;if(Q>=e)return String.fromCharCode.apply(String,t);for(var r=\"\",n=0;e>n;)r+=String.fromCharCode.apply(String,t.slice(n,n+=Q));return r}function S(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;r>i;i++)n+=String.fromCharCode(127&t[i]);return n}function C(t,e,r){var n=\"\";r=Math.min(t.length,r);for(var i=e;r>i;i++)n+=String.fromCharCode(t[i]);return n}function z(t,e,r){var n=t.length;(!e||0>e)&&(e=0),(!r||0>r||r>n)&&(r=n);for(var i=\"\",a=e;r>a;a++)i+=V(t[a]);return i}function P(t,e,r){for(var n=t.slice(e,r),i=\"\",a=0;at)throw new RangeError(\"offset is not uint\");if(t+e>r)throw new RangeError(\"Trying to access beyond buffer length\")}function O(t,e,r,n,i,o){if(!a.isBuffer(t))throw new TypeError(\"buffer must be a Buffer instance\");if(e>i||o>e)throw new RangeError(\"value is out of bounds\");if(r+n>t.length)throw new RangeError(\"index out of range\")}function I(t,e,r,n){0>e&&(e=65535+e+1);for(var i=0,a=Math.min(t.length-r,2);a>i;i++)t[r+i]=(e&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function N(t,e,r,n){0>e&&(e=4294967295+e+1);for(var i=0,a=Math.min(t.length-r,4);a>i;i++)t[r+i]=e>>>8*(n?i:3-i)&255}function j(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError(\"index out of range\");if(0>r)throw new RangeError(\"index out of range\")}function F(t,e,r,n,i){return i||j(t,e,r,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,i){return i||j(t,e,r,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(t,e,r,n,52,8),r+8}function B(t){if(t=U(t).replace(J,\"\"),t.length<2)return\"\";for(;t.length%4!==0;)t+=\"=\";return t}function U(t){return t.trim?t.trim():t.replace(/^\\s+|\\s+$/g,\"\")}function V(t){return 16>t?\"0\"+t.toString(16):t.toString(16)}function q(t,e){e=e||1/0;for(var r,n=t.length,i=null,a=[],o=0;n>o;o++){if(r=t.charCodeAt(o),r>55295&&57344>r){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(56320>r){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,128>r){if((e-=1)<0)break;a.push(r)}else if(2048>r){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(65536>r){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(1114112>r))throw new Error(\"Invalid code point\");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function H(t){for(var e=[],r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function Y(t){return W.toByteArray(B(t))}function X(t,e,r,n){for(var i=0;n>i&&!(i+r>=e.length||i>=t.length);i++)e[i+r]=t[i];return i}var W=t(\"base64-js\"),Z=t(\"ieee754\"),K=t(\"isarray\");r.Buffer=a,r.SlowBuffer=m,r.INSPECT_MAX_BYTES=50,a.poolSize=8192;var $={};a.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:n(),a._augment=function(t){return t.__proto__=a.prototype,t},a.TYPED_ARRAY_SUPPORT?(a.prototype.__proto__=Uint8Array.prototype,a.__proto__=Uint8Array,\"undefined\"!=typeof Symbol&&Symbol.species&&a[Symbol.species]===a&&Object.defineProperty(a,Symbol.species,{value:null,configurable:!0})):(a.prototype.length=void 0,a.prototype.parent=void 0),a.isBuffer=function(t){return!(null==t||!t._isBuffer)},a.compare=function(t,e){if(!a.isBuffer(t)||!a.isBuffer(e))throw new TypeError(\"Arguments must be Buffers\");if(t===e)return 0;for(var r=t.length,n=e.length,i=0,o=Math.min(r,n);o>i&&t[i]===e[i];)++i;return i!==o&&(r=t[i],n=e[i]),n>r?-1:r>n?1:0},a.isEncoding=function(t){switch(String(t).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"raw\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},a.concat=function(t,e){if(!K(t))throw new TypeError(\"list argument must be an Array of Buffers.\");if(0===t.length)return new a(0);var r;if(void 0===e)for(e=0,r=0;r0&&(t=this.toString(\"hex\",0,e).match(/.{2}/g).join(\" \"),this.length>e&&(t+=\" ... \")),\"\"},a.prototype.compare=function(t){if(!a.isBuffer(t))throw new TypeError(\"Argument must be a Buffer\");return this===t?0:a.compare(this,t)},a.prototype.indexOf=function(t,e){function r(t,e,r){for(var n=-1,i=0;r+i2147483647?e=2147483647:-2147483648>e&&(e=-2147483648),e>>=0,0===this.length)return-1;if(e>=this.length)return-1;if(0>e&&(e=Math.max(this.length+e,0)),\"string\"==typeof t)return 0===t.length?-1:String.prototype.indexOf.call(this,t,e);if(a.isBuffer(t))return r(this,t,e);if(\"number\"==typeof t)return a.TYPED_ARRAY_SUPPORT&&\"function\"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,t,e):r(this,[t],e);throw new TypeError(\"val must be string, number or Buffer\")},a.prototype.write=function(t,e,r,n){if(void 0===e)n=\"utf8\",r=this.length,e=0;else if(void 0===r&&\"string\"==typeof e)n=e,r=this.length,e=0;else if(isFinite(e))e=0|e,isFinite(r)?(r=0|r,void 0===n&&(n=\"utf8\")):(n=r,r=void 0);else{var i=n;n=e,e=0|r,r=i}var a=this.length-e;if((void 0===r||r>a)&&(r=a),t.length>0&&(0>r||0>e)||e>this.length)throw new RangeError(\"attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var o=!1;;)switch(n){case\"hex\":return x(this,t,e,r);case\"utf8\":case\"utf-8\":return _(this,t,e,r);case\"ascii\":return w(this,t,e,r);case\"binary\":return k(this,t,e,r);case\"base64\":return A(this,t,e,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return M(this,t,e,r);default:if(o)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;a.prototype.slice=function(t,e){var r=this.length;t=~~t,e=void 0===e?r:~~e,0>t?(t+=r,0>t&&(t=0)):t>r&&(t=r),0>e?(e+=r,0>e&&(e=0)):e>r&&(e=r),t>e&&(e=t);var n;if(a.TYPED_ARRAY_SUPPORT)n=this.subarray(t,e),n.__proto__=a.prototype;else{var i=e-t;n=new a(i,void 0);for(var o=0;i>o;o++)n[o]=this[o+t]}return n.length&&(n.parent=this.parent||this),n},a.prototype.readUIntLE=function(t,e,r){t=0|t,e=0|e,r||R(t,e,this.length);for(var n=this[t],i=1,a=0;++a0&&(i*=256);)n+=this[t+--e]*i;return n},a.prototype.readUInt8=function(t,e){return e||R(t,1,this.length),this[t]},a.prototype.readUInt16LE=function(t,e){return e||R(t,2,this.length),this[t]|this[t+1]<<8},a.prototype.readUInt16BE=function(t,e){return e||R(t,2,this.length),this[t]<<8|this[t+1]},a.prototype.readUInt32LE=function(t,e){return e||R(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},a.prototype.readUInt32BE=function(t,e){return e||R(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},a.prototype.readIntLE=function(t,e,r){t=0|t,e=0|e,r||R(t,e,this.length);for(var n=this[t],i=1,a=0;++a=i&&(n-=Math.pow(2,8*e)),n},a.prototype.readIntBE=function(t,e,r){t=0|t,e=0|e,r||R(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*e)),a},a.prototype.readInt8=function(t,e){return e||R(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},a.prototype.readInt16LE=function(t,e){e||R(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(t,e){e||R(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(t,e){return e||R(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},a.prototype.readInt32BE=function(t,e){return e||R(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},a.prototype.readFloatLE=function(t,e){return e||R(t,4,this.length),Z.read(this,t,!0,23,4)},a.prototype.readFloatBE=function(t,e){return e||R(t,4,this.length),Z.read(this,t,!1,23,4)},a.prototype.readDoubleLE=function(t,e){return e||R(t,8,this.length),Z.read(this,t,!0,52,8)},a.prototype.readDoubleBE=function(t,e){return e||R(t,8,this.length),Z.read(this,t,!1,52,8)},a.prototype.writeUIntLE=function(t,e,r,n){t=+t,e=0|e,r=0|r,n||O(this,t,e,r,Math.pow(2,8*r),0);var i=1,a=0;for(this[e]=255&t;++a=0&&(a*=256);)this[e+i]=t/a&255;return e+r},a.prototype.writeUInt8=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,1,255,0),a.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},a.prototype.writeUInt16LE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},a.prototype.writeUInt16BE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},a.prototype.writeUInt32LE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):N(this,t,e,!0),e+4},a.prototype.writeUInt32BE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},a.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e=0|e,!n){var i=Math.pow(2,8*r-1);O(this,t,e,r,i-1,-i)}var a=0,o=1,s=0>t?1:0;for(this[e]=255&t;++a>0)-s&255;return e+r},a.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e=0|e,!n){var i=Math.pow(2,8*r-1);O(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0>t?1:0;for(this[e+a]=255&t;--a>=0&&(o*=256);)this[e+a]=(t/o>>0)-s&255;return e+r},a.prototype.writeInt8=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,1,127,-128),a.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),0>t&&(t=255+t+1),this[e]=255&t,e+1},a.prototype.writeInt16LE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):I(this,t,e,!0),e+2},a.prototype.writeInt16BE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):I(this,t,e,!1),e+2},a.prototype.writeInt32LE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):N(this,t,e,!0),e+4},a.prototype.writeInt32BE=function(t,e,r){return t=+t,e=0|e,r||O(this,t,e,4,2147483647,-2147483648),0>t&&(t=4294967295+t+1),a.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},a.prototype.writeFloatLE=function(t,e,r){return F(this,t,e,!0,r)},a.prototype.writeFloatBE=function(t,e,r){return F(this,t,e,!1,r)},a.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},a.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},a.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&r>n&&(n=r),n===r)return 0;if(0===t.length||0===this.length)return 0;if(0>e)throw new RangeError(\"targetStart out of bounds\");if(0>r||r>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(0>n)throw new RangeError(\"sourceEnd out of bounds\");n>this.length&&(n=this.length),\n", + "t.length-er&&n>e)for(i=o-1;i>=0;i--)t[i+e]=this[i+r];else if(1e3>o||!a.TYPED_ARRAY_SUPPORT)for(i=0;o>i;i++)t[i+e]=this[i+r];else Uint8Array.prototype.set.call(t,this.subarray(r,r+o),e);return o},a.prototype.fill=function(t,e,r){if(t||(t=0),e||(e=0),r||(r=this.length),e>r)throw new RangeError(\"end < start\");if(r!==e&&0!==this.length){if(0>e||e>=this.length)throw new RangeError(\"start out of bounds\");if(0>r||r>this.length)throw new RangeError(\"end out of bounds\");var n;if(\"number\"==typeof t)for(n=e;r>n;n++)this[n]=t;else{var i=q(t.toString()),a=i.length;for(n=e;r>n;n++)this[n]=i[n%a]}return this}};var J=/[^+\\/0-9A-Za-z-_]/g}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"base64-js\":52,ieee754:53,isarray:54}],52:[function(t,e,r){\"use strict\";function n(){var t,e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",r=e.length;for(t=0;r>t;t++)l[t]=e[t];for(t=0;r>t;++t)c[e.charCodeAt(t)]=t;c[\"-\".charCodeAt(0)]=62,c[\"_\".charCodeAt(0)]=63}function i(t){var e,r,n,i,a,o,s=t.length;if(s%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");a=\"=\"===t[s-2]?2:\"=\"===t[s-1]?1:0,o=new u(3*s/4-a),n=a>0?s-4:s;var l=0;for(e=0,r=0;n>e;e+=4,r+=3)i=c[t.charCodeAt(e)]<<18|c[t.charCodeAt(e+1)]<<12|c[t.charCodeAt(e+2)]<<6|c[t.charCodeAt(e+3)],o[l++]=(16711680&i)>>16,o[l++]=(65280&i)>>8,o[l++]=255&i;return 2===a?(i=c[t.charCodeAt(e)]<<2|c[t.charCodeAt(e+1)]>>4,o[l++]=255&i):1===a&&(i=c[t.charCodeAt(e)]<<10|c[t.charCodeAt(e+1)]<<4|c[t.charCodeAt(e+2)]>>2,o[l++]=i>>8&255,o[l++]=255&i),o}function a(t){return l[t>>18&63]+l[t>>12&63]+l[t>>6&63]+l[63&t]}function o(t,e,r){for(var n,i=[],o=e;r>o;o+=3)n=(t[o]<<16)+(t[o+1]<<8)+t[o+2],i.push(a(n));return i.join(\"\")}function s(t){for(var e,r=t.length,n=r%3,i=\"\",a=[],s=16383,c=0,u=r-n;u>c;c+=s)a.push(o(t,c,c+s>u?u:c+s));return 1===n?(e=t[r-1],i+=l[e>>2],i+=l[e<<4&63],i+=\"==\"):2===n&&(e=(t[r-2]<<8)+t[r-1],i+=l[e>>10],i+=l[e>>4&63],i+=l[e<<2&63],i+=\"=\"),a.push(i),a.join(\"\")}r.toByteArray=i,r.fromByteArray=s;var l=[],c=[],u=\"undefined\"!=typeof Uint8Array?Uint8Array:Array;n()},{}],53:[function(t,e,r){r.read=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,f=r?i-1:0,h=r?-1:1,d=t[e+f];for(f+=h,a=d&(1<<-u)-1,d>>=-u,u+=s;u>0;a=256*a+t[e+f],f+=h,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+f],f+=h,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o+=Math.pow(2,n),a-=c}return(d?-1:1)*o*Math.pow(2,a-n)},r.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,p=n?1:-1,g=0>e||0===e&&0>1/e?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),e+=o+f>=1?h/l:h*Math.pow(2,1-f),e*l>=2&&(o++,l/=2),o+f>=u?(s=0,o=u):o+f>=1?(s=(e*l-1)*Math.pow(2,i),o+=f):(s=e*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;t[r+d]=255&s,d+=p,s/=256,i-=8);for(o=o<0;t[r+d]=255&o,d+=p,o/=256,c-=8);t[r+d-p]|=128*g}},{}],54:[function(t,e,r){var n={}.toString;e.exports=Array.isArray||function(t){return\"[object Array]\"==n.call(t)}},{}],55:[function(t,e,r){function n(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(t){return\"function\"==typeof t}function a(t){return\"number\"==typeof t}function o(t){return\"object\"==typeof t&&null!==t}function s(t){return void 0===t}e.exports=n,n.EventEmitter=n,n.prototype._events=void 0,n.prototype._maxListeners=void 0,n.defaultMaxListeners=10,n.prototype.setMaxListeners=function(t){if(!a(t)||0>t||isNaN(t))throw TypeError(\"n must be a positive number\");return this._maxListeners=t,this},n.prototype.emit=function(t){var e,r,n,a,l,c;if(this._events||(this._events={}),\"error\"===t&&(!this._events.error||o(this._events.error)&&!this._events.error.length)){if(e=arguments[1],e instanceof Error)throw e;throw TypeError('Uncaught, unspecified \"error\" event.')}if(r=this._events[t],s(r))return!1;if(i(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),r.apply(this,a)}else if(o(r))for(a=Array.prototype.slice.call(arguments,1),c=r.slice(),n=c.length,l=0;n>l;l++)c[l].apply(this,a);return!0},n.prototype.addListener=function(t,e){var r;if(!i(e))throw TypeError(\"listener must be a function\");return this._events||(this._events={}),this._events.newListener&&this.emit(\"newListener\",t,i(e.listener)?e.listener:e),this._events[t]?o(this._events[t])?this._events[t].push(e):this._events[t]=[this._events[t],e]:this._events[t]=e,o(this._events[t])&&!this._events[t].warned&&(r=s(this._maxListeners)?n.defaultMaxListeners:this._maxListeners,r&&r>0&&this._events[t].length>r&&(this._events[t].warned=!0,console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\",this._events[t].length),\"function\"==typeof console.trace&&console.trace())),this},n.prototype.on=n.prototype.addListener,n.prototype.once=function(t,e){function r(){this.removeListener(t,r),n||(n=!0,e.apply(this,arguments))}if(!i(e))throw TypeError(\"listener must be a function\");var n=!1;return r.listener=e,this.on(t,r),this},n.prototype.removeListener=function(t,e){var r,n,a,s;if(!i(e))throw TypeError(\"listener must be a function\");if(!this._events||!this._events[t])return this;if(r=this._events[t],a=r.length,n=-1,r===e||i(r.listener)&&r.listener===e)delete this._events[t],this._events.removeListener&&this.emit(\"removeListener\",t,e);else if(o(r)){for(s=a;s-- >0;)if(r[s]===e||r[s].listener&&r[s].listener===e){n=s;break}if(0>n)return this;1===r.length?(r.length=0,delete this._events[t]):r.splice(n,1),this._events.removeListener&&this.emit(\"removeListener\",t,e)}return this},n.prototype.removeAllListeners=function(t){var e,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[t]&&delete this._events[t],this;if(0===arguments.length){for(e in this._events)\"removeListener\"!==e&&this.removeAllListeners(e);return this.removeAllListeners(\"removeListener\"),this._events={},this}if(r=this._events[t],i(r))this.removeListener(t,r);else if(r)for(;r.length;)this.removeListener(t,r[r.length-1]);return delete this._events[t],this},n.prototype.listeners=function(t){var e;return e=this._events&&this._events[t]?i(this._events[t])?[this._events[t]]:this._events[t].slice():[]},n.prototype.listenerCount=function(t){if(this._events){var e=this._events[t];if(i(e))return 1;if(e)return e.length}return 0},n.listenerCount=function(t,e){return t.listenerCount(e)}},{}],56:[function(t,e,r){function n(){u=!1,s.length?c=s.concat(c):f=-1,c.length&&i()}function i(){if(!u){var t=setTimeout(n);u=!0;for(var e=c.length;e;){for(s=c,c=[];++f1)for(var r=1;rs)){if(n>i){var l=n;n=i,i=l,l=o,o=s,s=l}e.isConstraint(n,i)||a(t[n],t[i],t[o],t[s])<0&&r.push(n,i)}}function i(t,e){for(var r=[],i=t.length,o=e.stars,s=0;i>s;++s)for(var l=o[s],c=1;cu||e.isConstraint(s,u))){for(var f=l[c-1],h=-1,d=1;dh||a(t[s],t[u],t[f],t[h])<0&&r.push(s,u)}}for(;r.length>0;){for(var u=r.pop(),s=r.pop(),f=-1,h=-1,l=o[s],p=1;pf||0>h||a(t[s],t[u],t[f],t[h])>=0||(e.flip(s,u),n(t,e,r,f,s,h),n(t,e,r,s,h,f),n(t,e,r,h,u,f),n(t,e,r,u,f,h))}}var a=t(\"robust-in-sphere\")[4];t(\"binary-search-bounds\");e.exports=i},{\"binary-search-bounds\":62,\"robust-in-sphere\":63}],59:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a,o){this.cells=t,this.neighbor=e,this.flags=n,this.constraint=r,this.active=i,this.next=a,this.boundary=o}function i(t,e){return t[0]-e[0]||t[1]-e[1]||t[2]-e[2]}function a(t,e){for(var r=t.cells(),a=r.length,o=0;a>o;++o){var s=r[o],l=s[0],c=s[1],u=s[2];u>c?l>c&&(s[0]=c,s[1]=u,s[2]=l):l>u&&(s[0]=u,s[1]=l,s[2]=c)}r.sort(i);for(var f=new Array(a),o=0;oo;++o)for(var s=r[o],y=0;3>y;++y){var l=s[y],c=s[(y+1)%3],b=p[3*o+y]=m.locate(c,l,t.opposite(c,l)),x=g[3*o+y]=t.isConstraint(l,c);0>b&&(x?d.push(o):(h.push(o),f[o]=1),e&&v.push([c,l,-1]))}return m}function o(t,e,r){for(var n=0,i=0;i0||l.length>0;){for(;s.length>0;){var d=s.pop();if(c[d]!==-i){c[d]=i;for(var p=(u[d],0);3>p;++p){var g=h[3*d+p];g>=0&&0===c[g]&&(f[3*d+p]?l.push(g):(s.push(g),c[g]=i))}}}var v=l;l=s,s=v,l.length=0,i=-i}var m=o(u,c,e);return r?m.concat(n.boundary):m}var l=t(\"binary-search-bounds\");e.exports=s;var c=n.prototype;c.locate=function(){var t=[0,0,0];return function(e,r,n){var a=e,o=r,s=n;return n>r?e>r&&(a=r,o=n,s=e):e>n&&(a=n,o=e,s=r),0>a?-1:(t[0]=a,t[1]=o,t[2]=s,l.eq(this.cells,t,i))}}()},{\"binary-search-bounds\":62}],60:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){this.a=t,this.b=e,this.idx=r,this.lowerIds=n,this.upperIds=i}function i(t,e,r,n){this.a=t,this.b=e,this.type=r,this.idx=n}function a(t,e){var r=t.a[0]-e.a[0]||t.a[1]-e.a[1]||t.type-e.type;return r?r:t.type!==p&&(r=d(t.a,t.b,e.b))?r:t.idx-e.idx}function o(t,e){return d(t.a,t.b,e)}function s(t,e,r,n,i){for(var a=h.lt(e,n,o),s=h.gt(e,n,o),l=a;s>l;++l){for(var c=e[l],u=c.lowerIds,f=u.length;f>1&&d(r[u[f-2]],r[u[f-1]],n)>0;)t.push([u[f-1],u[f-2],i]),f-=1;u.length=f,u.push(i);for(var p=c.upperIds,f=p.length;f>1&&d(r[p[f-2]],r[p[f-1]],n)<0;)t.push([p[f-2],p[f-1],i]),f-=1;p.length=f,p.push(i)}}function l(t,e){var r;return(r=t.a[0]f;++f)l.push(new i(t[f],null,p,f));for(var f=0;o>f;++f){var h=e[f],d=t[h[0]],m=t[h[1]];d[0]m[0]&&l.push(new i(m,d,v,f),new i(d,m,g,f))}l.sort(a);for(var y=l[0].a[0]-(1+Math.abs(l[0].a[0]))*Math.pow(2,-52),b=[new n([y,1],[y,0],-1,[],[],[],[])],x=[],f=0,_=l.length;_>f;++f){var w=l[f],k=w.type;k===p?s(x,b,t,w.a,w.idx):k===v?c(b,t,w):u(b,t,w)}return x}var h=t(\"binary-search-bounds\"),d=t(\"robust-orientation\")[3],p=0,g=1,v=2;e.exports=f},{\"binary-search-bounds\":62,\"robust-orientation\":259}],61:[function(t,e,r){\"use strict\";function n(t,e){this.stars=t,this.edges=e}function i(t,e,r){for(var n=1,i=t.length;i>n;n+=2)if(t[n-1]===e&&t[n]===r)return t[n-1]=t[i-2],t[n]=t[i-1],void(t.length=i-2)}function a(t,e){for(var r=new Array(t),i=0;t>i;++i)r[i]=[];return new n(r,e)}var o=t(\"binary-search-bounds\");e.exports=a;var s=n.prototype;s.isConstraint=function(){function t(t,e){return t[0]-e[0]||t[1]-e[1]}var e=[0,0];return function(r,n){return e[0]=Math.min(r,n),e[1]=Math.max(r,n),o.eq(this.edges,e,t)>=0}}(),s.removeTriangle=function(t,e,r){var n=this.stars;i(n[t],e,r),i(n[e],r,t),i(n[r],t,e)},s.addTriangle=function(t,e,r){var n=this.stars;n[t].push(e,r),n[e].push(r,t),n[r].push(t,e)},s.opposite=function(t,e){for(var r=this.stars[e],n=1,i=r.length;i>n;n+=2)if(r[n]===t)return r[n-1];return-1},s.flip=function(t,e){var r=this.opposite(t,e),n=this.opposite(e,t);this.removeTriangle(t,e,r),this.removeTriangle(e,t,n),this.addTriangle(t,n,r),this.addTriangle(e,r,n)},s.edges=function(){for(var t=this.stars,e=[],r=0,n=t.length;n>r;++r)for(var i=t[r],a=0,o=i.length;o>a;a+=2)e.push([i[a],i[a+1]]);return e},s.cells=function(){for(var t=this.stars,e=[],r=0,n=t.length;n>r;++r)for(var i=t[r],a=0,o=i.length;o>a;a+=2){var s=i[a],l=i[a+1];r>>1,x=a[m]\"];return i?e.indexOf(\"c\")<0?a.push(\";if(x===y){return m}else if(x<=y){\"):a.push(\";var p=c(x,y);if(p===0){return m}else if(p<=0){\"):a.push(\";if(\",e,\"){i=m;\"),r?a.push(\"l=m+1}else{h=m-1}\"):a.push(\"h=m-1}else{l=m+1}\"),a.push(\"}\"),i?a.push(\"return -1};\"):a.push(\"return i};\"),a.join(\"\")}function i(t,e,r,i){var a=new Function([n(\"A\",\"x\"+t+\"y\",e,[\"y\"],i),n(\"P\",\"c(x,y)\"+t+\"0\",e,[\"y\",\"c\"],i),\"function dispatchBsearch\",r,\"(a,y,c,l,h){if(typeof(c)==='function'){return P(a,(l===void 0)?0:l|0,(h===void 0)?a.length-1:h|0,y,c)}else{return A(a,(c===void 0)?0:c|0,(l===void 0)?a.length-1:l|0,y)}}return dispatchBsearch\",r].join(\"\"));return a()}e.exports={ge:i(\">=\",!1,\"GE\"),gt:i(\">\",!1,\"GT\"),lt:i(\"<\",!0,\"LT\"),le:i(\"<=\",!0,\"LE\"),eq:i(\"-\",!0,\"EQ\",!0)}},{}],63:[function(t,e,r){\"use strict\";function n(t,e){for(var r=new Array(t.length-1),n=1;nr;++r){e[r]=new Array(t);for(var n=0;t>n;++n)e[r][n]=[\"m\",n,\"[\",t-r-2,\"]\"].join(\"\")}return e}function a(t){if(1===t.length)return t[0];if(2===t.length)return[\"sum(\",t[0],\",\",t[1],\")\"].join(\"\");var e=t.length>>1;return[\"sum(\",a(t.slice(0,e)),\",\",a(t.slice(e)),\")\"].join(\"\")}function o(t,e){if(\"m\"===t.charAt(0)){if(\"w\"===e.charAt(0)){var r=t.split(\"[\");return[\"w\",e.substr(1),\"m\",r[0].substr(1)].join(\"\")}return[\"prod(\",t,\",\",e,\")\"].join(\"\")}return o(e,t)}function s(t){return t&!0?\"-\":\"\"}function l(t){if(2===t.length)return[[\"diff(\",o(t[0][0],t[1][1]),\",\",o(t[1][0],t[0][1]),\")\"].join(\"\")];for(var e=[],r=0;rn;++n)r.push([\"prod(m\",t,\"[\",n,\"],m\",t,\"[\",n,\"])\"].join(\"\"));return a(r)}function u(t){for(var e=[],r=[],o=i(t),s=0;t>s;++s)o[0][s]=\"1\",o[t-1][s]=\"w\"+s;for(var s=0;t>s;++s)0===(1&s)?e.push.apply(e,l(n(o,s))):r.push.apply(r,l(n(o,s)));for(var u=a(e),f=a(r),h=\"exactInSphere\"+t,d=[],s=0;t>s;++s)d.push(\"m\"+s);for(var p=[\"function \",h,\"(\",d.join(),\"){\"],s=0;t>s;++s){p.push(\"var w\",s,\"=\",c(s,t),\";\");for(var g=0;t>g;++g)g!==s&&p.push(\"var w\",s,\"m\",g,\"=scale(w\",s,\",m\",g,\"[0]);\")}p.push(\"var p=\",u,\",n=\",f,\",d=diff(p,n);return d[d.length-1];}return \",h);var x=new Function(\"sum\",\"diff\",\"prod\",\"scale\",p.join(\"\"));return x(m,y,v,b)}function f(){return 0}function h(){return 0}function d(){return 0}function p(t){var e=_[t.length];return e||(e=_[t.length]=u(t.length)),e.apply(void 0,t)}function g(){for(;_.length<=x;)_.push(u(_.length));for(var t=[],r=[\"slow\"],n=0;x>=n;++n)t.push(\"a\"+n),r.push(\"o\"+n);for(var i=[\"function testInSphere(\",t.join(),\"){switch(arguments.length){case 0:case 1:return 0;\"],n=2;x>=n;++n)i.push(\"case \",n,\":return o\",n,\"(\",t.slice(0,n).join(),\");\");i.push(\"}var s=new Array(arguments.length);for(var i=0;i=n;++n)e.exports[n]=_[n]}var v=t(\"two-product\"),m=t(\"robust-sum\"),y=t(\"robust-subtract\"),b=t(\"robust-scale\"),x=6,_=[f,h,d];g()},{\"robust-scale\":260,\"robust-subtract\":261,\"robust-sum\":262,\"two-product\":276}],64:[function(t,e,r){\"use strict\";function n(t){var e=x(t),r=b(y(e),t);return 0>r?[e,w(e,1/0)]:r>0?[w(e,-(1/0)),e]:[e,e]}function i(t,e){for(var r=new Array(e.length),n=0;n=t.length)return o[e-t.length];var r=t[e];return[y(r[0]),y(r[1])]}for(var o=[],s=0;s=0;--s){var g=n[s],c=g[0],v=e[c],m=v[0],x=v[1],w=t[m],A=t[x];if((w[0]-A[0]||w[1]-A[1])<0){var M=m;m=x,x=M}v[0]=m;var T,E=v[1]=g[1];for(i&&(T=v[2]);s>0&&n[s-1][0]===c;){var g=n[--s],L=g[1];i?e.push([E,L,T]):e.push([E,L]),E=L}i?e.push([E,x,T]):e.push([E,x])}return o}function c(t,e,r){for(var i=t.length+e.length,a=new g(i),o=r,s=0;ss;++s){var p=a.find(s);p===s?(d[s]=f,t[f++]=t[s]):(h=!1,d[s]=-1)}if(t.length=f,h)return null;for(var s=0;i>s;++s)d[s]<0&&(d[s]=d[a.find(s)]);return d}function u(t,e){return t[0]-e[0]||t[1]-e[1]}function f(t,e){var r=t[0]-e[0]||t[1]-e[1];return r?r:t[2]e[2]?1:0}function h(t,e,r){if(0!==t.length){if(e)for(var n=0;n0||d.length>0}function p(t,e,r){var n,i=!1;if(r){n=e;for(var a=new Array(e.length),o=0;o0?r=r.shln(f):0>f&&(u=u.shln(-f)),l(r,u)}var i=t(\"./is-rat\"),a=t(\"./lib/is-bn\"),o=t(\"./lib/num-to-bn\"),s=t(\"./lib/str-to-bn\"),l=t(\"./lib/rationalize\"),c=t(\"./div\");e.exports=n},{\"./div\":68,\"./is-rat\":70,\"./lib/is-bn\":74,\"./lib/num-to-bn\":75,\"./lib/rationalize\":76,\"./lib/str-to-bn\":77}],70:[function(t,e,r){\"use strict\";function n(t){return Array.isArray(t)&&2===t.length&&i(t[0])&&i(t[1])}var i=t(\"./lib/is-bn\");e.exports=n},{\"./lib/is-bn\":74}],71:[function(t,e,r){\"use strict\";function n(t){return t.cmp(new i(0))}var i=t(\"bn.js\");e.exports=n},{\"bn.js\":79}],72:[function(t,e,r){\"use strict\";function n(t){var e=t.length,r=t.words,n=0;if(1===e)n=r[0];else if(2===e)n=r[0]+67108864*r[1];else for(var n=0,i=0;e>i;i++){var a=r[i];n+=a*Math.pow(67108864,i)}return t.sign?-n:n}e.exports=n},{}],73:[function(t,e,r){\"use strict\";function n(t){var e=a(i.lo(t));if(32>e)return e;var r=a(i.hi(t));return r>20?52:r+32}var i=t(\"double-bits\"),a=t(\"bit-twiddle\").countTrailingZeros;e.exports=n},{\"bit-twiddle\":50,\"double-bits\":90}],74:[function(t,e,r){\"use strict\";function n(t){return t&&\"object\"==typeof t&&Boolean(t.words)}t(\"bn.js\");e.exports=n},{\"bn.js\":79}],75:[function(t,e,r){\"use strict\";function n(t){var e=a.exponent(t);return 52>e?new i(t):new i(t*Math.pow(2,52-e)).shln(e-52)}var i=t(\"bn.js\"),a=t(\"double-bits\");e.exports=n},{\"bn.js\":79,\"double-bits\":90}],76:[function(t,e,r){\"use strict\";function n(t,e){var r=a(t),n=a(e);if(0===r)return[i(0),i(1)];if(0===n)return[i(0),i(0)];0>n&&(t=t.neg(),e=e.neg());var o=t.gcd(e);return o.cmpn(1)?[t.div(o),e.div(o)]:[t,e]}var i=t(\"./num-to-bn\"),a=t(\"./bn-sign\");e.exports=n},{\"./bn-sign\":71,\"./num-to-bn\":75}],77:[function(t,e,r){\"use strict\";function n(t){return new i(t)}var i=t(\"bn.js\");e.exports=n},{\"bn.js\":79}],78:[function(t,e,r){\"use strict\";function n(t,e){return i(t[0].mul(e[0]),t[1].mul(e[1]))}var i=t(\"./lib/rationalize\");e.exports=n},{\"./lib/rationalize\":76}],79:[function(t,e,r){!function(t,e){\"use strict\";function r(t,e){if(!t)throw new Error(e||\"Assertion failed\")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function i(t,e,r){return null!==t&&\"object\"==typeof t&&Array.isArray(t.words)?t:(this.sign=!1,this.words=null,this.length=0,this.red=null,\"le\"!==e&&\"be\"!==e||(r=e,e=10),void(null!==t&&this._init(t||0,e||10,r||\"be\")))}function a(t,e,r){for(var n=0,i=Math.min(t.length,r),a=e;i>a;a++){var o=t.charCodeAt(a)-48;n<<=4,n|=o>=49&&54>=o?o-49+10:o>=17&&22>=o?o-17+10:15&o}return n}function o(t,e,r,n){for(var i=0,a=Math.min(t.length,r),o=e;a>o;o++){var s=t.charCodeAt(o)-48;i*=n,i+=s>=49?s-49+10:s>=17?s-17+10:s}return i}function s(t,e){this.name=t,this.p=new i(e,16),this.n=this.p.bitLength(),this.k=new i(1).ishln(this.n).isub(this.p),this.tmp=this._tmp()}function l(){s.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function c(){s.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function u(){s.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function f(){s.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function h(t){if(\"string\"==typeof t){var e=i._prime(t);this.m=e.p,this.prime=e}else this.m=t,this.prime=null}function d(t){h.call(this,t),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).ishln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv.sign=!0,this.minv=this.minv.mod(this.r)}\"object\"==typeof t?t.exports=i:e.BN=i,i.BN=i,i.wordSize=26,i.prototype._init=function(t,e,n){if(\"number\"==typeof t)return this._initNumber(t,e,n);if(\"object\"==typeof t)return this._initArray(t,e,n);\"hex\"===e&&(e=16),r(e===(0|e)&&e>=2&&36>=e),t=t.toString().replace(/\\s+/g,\"\");var i=0;\"-\"===t[0]&&i++,16===e?this._parseHex(t,i):this._parseBase(t,e,i),\"-\"===t[0]&&(this.sign=!0),this.strip(),\"le\"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initNumber=function(t,e,n){0>t&&(this.sign=!0,t=-t),67108864>t?(this.words=[67108863&t],this.length=1):4503599627370496>t?(this.words=[67108863&t,t/67108864&67108863],this.length=2):(r(9007199254740992>t),this.words=[67108863&t,t/67108864&67108863,1],this.length=3),\"le\"===n&&this._initArray(this.toArray(),e,n)},i.prototype._initArray=function(t,e,n){if(r(\"number\"==typeof t.length),t.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(t.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3){var s=t[i]|t[i-1]<<8|t[i-2]<<16;this.words[o]|=s<>>26-a&67108863,a+=24,a>=26&&(a-=26,o++)}else if(\"le\"===n)for(var i=0,o=0;i>>26-a&67108863,a+=24,a>=26&&(a-=26,o++)}return this.strip()},i.prototype._parseHex=function(t,e){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var r=0;r=e;r-=6){var o=a(t,r,r+6);this.words[i]|=o<>>26-n&4194303,n+=24,n>=26&&(n-=26,i++)}if(r+6!==e){var o=a(t,e,r+6);this.words[i]|=o<>>26-n&4194303}this.strip()},i.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;67108863>=i;i*=e)n++;n--,i=i/e|0;for(var a=t.length-r,s=a%n,l=Math.min(a,a-s)+r,c=0,u=r;l>u;u+=n)c=o(t,u,u+n,e),this.imuln(i),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c);if(0!==s){for(var f=1,c=o(t,u,t.length,e),u=0;s>u;u++)f*=e;this.imuln(f),this.words[0]+c<67108864?this.words[0]+=c:this._iaddn(c)}},i.prototype.copy=function(t){t.words=new Array(this.length);for(var e=0;e1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.sign=!1),this},i.prototype.inspect=function(){return(this.red?\"\"};var p=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],g=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],v=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(t,e){if(t=t||10,16===t||\"hex\"===t){for(var n=\"\",i=0,e=0|e||1,a=0,o=0;o>>24-i&16777215,n=0!==a||o!==this.length-1?p[6-l.length]+l+n:l+n,i+=2,i>=26&&(i-=26,o--)}for(0!==a&&(n=a.toString(16)+n);n.length%e!==0;)n=\"0\"+n;return this.sign&&(n=\"-\"+n),n}if(t===(0|t)&&t>=2&&36>=t){var c=g[t],u=v[t],n=\"\",f=this.clone();for(f.sign=!1;0!==f.cmpn(0);){var h=f.modn(u).toString(t);f=f.idivn(u),n=0!==f.cmpn(0)?p[c-h.length]+h+n:h+n}return 0===this.cmpn(0)&&(n=\"0\"+n),this.sign&&(n=\"-\"+n),n}r(!1,\"Base should be between 2 and 36\")},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toArray=function(t){this.strip();var e=new Array(this.byteLength());e[0]=0;var r=this.clone();if(\"le\"!==t)for(var n=0;0!==r.cmpn(0);n++){var i=r.andln(255);r.ishrn(8),e[e.length-n-1]=i}else for(var n=0;0!==r.cmpn(0);n++){var i=r.andln(255);r.ishrn(8),e[n]=i}return e},Math.clz32?i.prototype._countBits=function(t){return 32-Math.clz32(t)}:i.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},i.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0===(8191&e)&&(r+=13,e>>>=13),0===(127&e)&&(r+=7,e>>>=7),0===(15&e)&&(r+=4,e>>>=4),0===(3&e)&&(r+=2,e>>>=2),0===(1&e)&&r++,r},i.prototype.bitLength=function(){var t=0,e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(0===this.cmpn(0))return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},i.prototype.iand=function(t){this.sign=this.sign&&t.sign;var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},i.prototype.ixor=function(t){this.sign=this.sign||t.sign;var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},i.prototype.setn=function(t,e){r(\"number\"==typeof t&&t>=0);for(var n=t/26|0,i=t%26;this.length<=n;)this.words[this.length++]=0;return e?this.words[n]=this.words[n]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,a=0;a>>26}for(;0!==i&&a>>26}if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;at.length?this.clone().iadd(t):t.clone().iadd(this)},i.prototype.isub=function(t){if(t.sign){t.sign=!1;var e=this.iadd(t);return t.sign=!0,e._normSign()}if(this.sign)return this.sign=!1,this.iadd(t),this.sign=!0,this._normSign();var r=this.cmp(t);if(0===r)return this.sign=!1,this.length=1,this.words[0]=0,this;var n,i;r>0?(n=this,i=t):(n=t,i=this);for(var a=0,o=0;o>26,this.words[o]=67108863&e}for(;0!==a&&o>26,this.words[o]=67108863&e}if(0===a&&o>>26,a=67108863&r,o=Math.min(n,t.length-1),s=Math.max(0,n-this.length+1);o>=s;s++){var l=n-s,c=0|this.words[l],u=0|t.words[s],f=c*u,h=67108863&f;i=i+(f/67108864|0)|0,h=h+a|0,a=67108863&h,i=i+(h>>>26)|0}e.words[n]=a,r=i}return 0!==r?e.words[n]=r:e.length--,e.strip()},i.prototype._bigMulTo=function(t,e){e.sign=t.sign!==this.sign,e.length=this.length+t.length;for(var r=0,n=0,i=0;i=l;l++){var c=i-l,u=0|this.words[c],f=0|t.words[l],h=u*f,d=67108863&h;a=a+(h/67108864|0)|0,d=d+o|0,o=67108863&d,a=a+(d>>>26)|0,n+=a>>>26,a&=67108863}e.words[i]=o,r=a,a=n}return 0!==r?e.words[i]=r:e.length--,e.strip()},i.prototype.mulTo=function(t,e){var r;return r=this.length+t.length<63?this._smallMulTo(t,e):this._bigMulTo(t,e)},i.prototype.mul=function(t){var e=new i(null);return e.words=new Array(this.length+t.length),this.mulTo(t,e)},i.prototype.imul=function(t){if(0===this.cmpn(0)||0===t.cmpn(0))return this.words[0]=0,this.length=1,this;var e=this.length,r=t.length;this.sign=t.sign!==this.sign,this.length=this.length+t.length,this.words[this.length-1]=0;for(var n=this.length-2;n>=0;n--){for(var i=0,a=0,o=Math.min(n,r-1),s=Math.max(0,n-e+1);o>=s;s++){var l=n-s,c=this.words[l],u=t.words[s],f=c*u,h=67108863&f;i+=f/67108864|0,h+=a,a=67108863&h,i+=h>>>26}this.words[n]=a,this.words[n+1]+=i,i=0}for(var i=0,l=1;l>>26}return this.strip()},i.prototype.imuln=function(t){r(\"number\"==typeof t);for(var e=0,n=0;n>=26,e+=i/67108864|0,e+=a>>>26,this.words[n]=67108863&a}return 0!==e&&(this.words[n]=e,this.length++),this},i.prototype.muln=function(t){return this.clone().imuln(t)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.mul(this)},i.prototype.ishln=function(t){r(\"number\"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=67108863>>>26-e<<26-e;if(0!==e){for(var a=0,o=0;o>>26-e}a&&(this.words[o]=a,this.length++)}if(0!==n){for(var o=this.length-1;o>=0;o--)this.words[o+n]=this.words[o];for(var o=0;n>o;o++)this.words[o]=0;this.length+=n}return this.strip()},i.prototype.ishrn=function(t,e,n){r(\"number\"==typeof t&&t>=0);var i;i=e?(e-e%26)/26:0;var a=t%26,o=Math.min((t-a)/26,this.length),s=67108863^67108863>>>a<c;c++)l.words[c]=this.words[c];l.length=o}if(0===o);else if(this.length>o){this.length-=o;for(var c=0;c=0&&(0!==u||c>=i);c--){var f=this.words[c];this.words[c]=u<<26-a|f>>>a,u=f&s}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip(),this},i.prototype.shln=function(t){return this.clone().ishln(t)},i.prototype.shrn=function(t){return this.clone().ishrn(t)},i.prototype.testn=function(t){r(\"number\"==typeof t&&t>=0);var e=t%26,n=(t-e)/26,i=1<=0);var e=t%26,n=(t-e)/26;if(r(!this.sign,\"imaskn works only with positive numbers\"),0!==e&&n++,this.length=Math.min(n,this.length),0!==e){var i=67108863^67108863>>>e<t?this.isubn(-t):this.sign?1===this.length&&this.words[0]=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},i.prototype.isubn=function(t){if(r(\"number\"==typeof t),0>t)return this.iaddn(-t);if(this.sign)return this.sign=!1,this.iaddn(t),this.sign=!0,this;this.words[0]-=t;for(var e=0;e>26)-(c/67108864|0),this.words[i+n]=67108863&l}for(;i>26,this.words[i+n]=67108863&l}if(0===s)return this.strip();r(-1===s),s=0;for(var i=0;i>26,this.words[i]=67108863&l}return this.sign=!0,this.strip()},i.prototype._wordDiv=function(t,e){var r=this.length-t.length,n=this.clone(),a=t,o=a.words[a.length-1],s=this._countBits(o);r=26-s,0!==r&&(a=a.shln(r),n.ishln(r),o=a.words[a.length-1]);var l,c=n.length-a.length;if(\"mod\"!==e){l=new i(null),l.length=c+1,l.words=new Array(l.length);for(var u=0;u=0;h--){var d=67108864*n.words[a.length+h]+n.words[a.length+h-1];for(d=Math.min(d/o|0,67108863),n._ishlnsubmul(a,d,h);n.sign;)d--,n.sign=!1,n._ishlnsubmul(a,1,h),0!==n.cmpn(0)&&(n.sign=!n.sign);l&&(l.words[h]=d)}return l&&l.strip(),n.strip(),\"div\"!==e&&0!==r&&n.ishrn(r),{div:l?l:null,mod:n}},i.prototype.divmod=function(t,e){if(r(0!==t.cmpn(0)),this.sign&&!t.sign){var n,a,o=this.neg().divmod(t,e);return\"mod\"!==e&&(n=o.div.neg()),\"div\"!==e&&(a=0===o.mod.cmpn(0)?o.mod:t.sub(o.mod)),{div:n,mod:a}}if(!this.sign&&t.sign){var n,o=this.divmod(t.neg(),e);return\"mod\"!==e&&(n=o.div.neg()),{div:n,mod:o.mod}}return this.sign&&t.sign?this.neg().divmod(t.neg(),e):t.length>this.length||this.cmp(t)<0?{div:new i(0),mod:this}:1===t.length?\"div\"===e?{div:this.divn(t.words[0]),mod:null}:\"mod\"===e?{div:null,mod:new i(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new i(this.modn(t.words[0]))}:this._wordDiv(t,e)},i.prototype.div=function(t){return this.divmod(t,\"div\").div},i.prototype.mod=function(t){return this.divmod(t,\"mod\").mod},i.prototype.divRound=function(t){var e=this.divmod(t);if(0===e.mod.cmpn(0))return e.div;var r=e.div.sign?e.mod.isub(t):e.mod,n=t.shrn(1),i=t.andln(1),a=r.cmp(n);return 0>a||1===i&&0===a?e.div:e.div.sign?e.div.isubn(1):e.div.iaddn(1)},i.prototype.modn=function(t){r(67108863>=t);for(var e=(1<<26)%t,n=0,i=this.length-1;i>=0;i--)n=(e*n+this.words[i])%t;return n},i.prototype.idivn=function(t){r(67108863>=t);for(var e=0,n=this.length-1;n>=0;n--){var i=this.words[n]+67108864*e;this.words[n]=i/t|0,e=i%t}return this.strip()},i.prototype.divn=function(t){return this.clone().idivn(t)},i.prototype.egcd=function(t){r(!t.sign),r(0!==t.cmpn(0));var e=this,n=t.clone();e=e.sign?e.mod(t):e.clone();for(var a=new i(1),o=new i(0),s=new i(0),l=new i(1),c=0;e.isEven()&&n.isEven();)e.ishrn(1),n.ishrn(1),++c;for(var u=n.clone(),f=e.clone();0!==e.cmpn(0);){for(;e.isEven();)e.ishrn(1),a.isEven()&&o.isEven()?(a.ishrn(1),o.ishrn(1)):(a.iadd(u).ishrn(1),o.isub(f).ishrn(1));for(;n.isEven();)n.ishrn(1),s.isEven()&&l.isEven()?(s.ishrn(1),l.ishrn(1)):(s.iadd(u).ishrn(1),l.isub(f).ishrn(1));e.cmp(n)>=0?(e.isub(n),a.isub(s),o.isub(l)):(n.isub(e),s.isub(a),l.isub(o))}return{a:s,b:l,gcd:n.ishln(c)}},i.prototype._invmp=function(t){r(!t.sign),r(0!==t.cmpn(0));var e=this,n=t.clone();e=e.sign?e.mod(t):e.clone();for(var a=new i(1),o=new i(0),s=n.clone();e.cmpn(1)>0&&n.cmpn(1)>0;){for(;e.isEven();)e.ishrn(1),a.isEven()?a.ishrn(1):a.iadd(s).ishrn(1);for(;n.isEven();)n.ishrn(1),o.isEven()?o.ishrn(1):o.iadd(s).ishrn(1);e.cmp(n)>=0?(e.isub(n),a.isub(o)):(n.isub(e),o.isub(a))}return 0===e.cmpn(1)?a:o},i.prototype.gcd=function(t){if(0===this.cmpn(0))return t.clone();if(0===t.cmpn(0))return this.clone();var e=this.clone(),r=t.clone();e.sign=!1,r.sign=!1;for(var n=0;e.isEven()&&r.isEven();n++)e.ishrn(1),r.ishrn(1);for(;;){for(;e.isEven();)e.ishrn(1);for(;r.isEven();)r.ishrn(1);var i=e.cmp(r);if(0>i){var a=e;e=r,r=a}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.ishln(n)},i.prototype.invm=function(t){return this.egcd(t).a.mod(t)},i.prototype.isEven=function(){return 0===(1&this.words[0])},i.prototype.isOdd=function(){return 1===(1&this.words[0])},i.prototype.andln=function(t){return this.words[0]&t},i.prototype.bincn=function(t){r(\"number\"==typeof t);var e=t%26,n=(t-e)/26,i=1<a;a++)this.words[a]=0;return this.words[n]|=i,this.length=n+1,this}for(var o=i,a=n;0!==o&&a>>26,s&=67108863,this.words[a]=s}return 0!==o&&(this.words[a]=o,this.length++),this},i.prototype.cmpn=function(t){var e=0>t;if(e&&(t=-t),this.sign&&!e)return-1;if(!this.sign&&e)return 1;t&=67108863,this.strip();var r;if(this.length>1)r=1;else{var n=this.words[0];r=n===t?0:t>n?-1:1}return this.sign&&(r=-r),r},i.prototype.cmp=function(t){if(this.sign&&!t.sign)return-1;if(!this.sign&&t.sign)return 1;var e=this.ucmp(t);return this.sign?-e:e},i.prototype.ucmp=function(t){if(this.length>t.length)return 1;if(this.length=0;r--){var n=this.words[r],i=t.words[r];if(n!==i){i>n?e=-1:n>i&&(e=1);break}}return e},i.red=function(t){return new h(t)},i.prototype.toRed=function(t){return r(!this.red,\"Already a number in reduction context\"),r(!this.sign,\"red works only with positives\"),t.convertTo(this)._forceRed(t)},i.prototype.fromRed=function(){return r(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},i.prototype._forceRed=function(t){return this.red=t,this},i.prototype.forceRed=function(t){return r(!this.red,\"Already a number in reduction context\"),this._forceRed(t)},i.prototype.redAdd=function(t){return r(this.red,\"redAdd works only with red numbers\"),this.red.add(this,t)},i.prototype.redIAdd=function(t){return r(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,t)},i.prototype.redSub=function(t){return r(this.red,\"redSub works only with red numbers\"),this.red.sub(this,t)},i.prototype.redISub=function(t){return r(this.red,\"redISub works only with red numbers\"),this.red.isub(this,t)},i.prototype.redShl=function(t){return r(this.red,\"redShl works only with red numbers\"),this.red.shl(this,t)},i.prototype.redMul=function(t){return r(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.mul(this,t)},i.prototype.redIMul=function(t){return r(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,t),this.red.imul(this,t)},i.prototype.redSqr=function(){return r(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return r(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return r(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return r(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return r(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(t){return r(this.red&&!t.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,t)};var m={k256:null,p224:null,p192:null,p25519:null};s.prototype._tmp=function(){var t=new i(null);return t.words=new Array(Math.ceil(this.n/13)),t},s.prototype.ireduce=function(t){var e,r=t;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),e=r.bitLength();while(e>this.n);var n=e0?r.isub(this.p):r.strip(),r},s.prototype.split=function(t,e){t.ishrn(this.n,0,e)},s.prototype.imulK=function(t){return t.imul(this.k)},n(l,s),l.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;n>i;i++)e.words[i]=t.words[i];if(e.length=n,t.length<=9)return t.words[0]=0,void(t.length=1);var a=t.words[9];e.words[e.length++]=a&r;for(var i=10;i>>22,a=o}t.words[i-10]=a>>>22,t.length-=9},l.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e,r=0,n=0;n>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},i._prime=function y(t){if(m[t])return m[t];var y;if(\"k256\"===t)y=new l;else if(\"p224\"===t)y=new c;else if(\"p192\"===t)y=new u;else{if(\"p25519\"!==t)throw new Error(\"Unknown prime \"+t);y=new f}return m[t]=y,y},h.prototype._verify1=function(t){r(!t.sign,\"red works only with positives\"),r(t.red,\"red works only with red numbers\")},h.prototype._verify2=function(t,e){r(!t.sign&&!e.sign,\"red works only with positives\"),r(t.red&&t.red===e.red,\"red works only with red numbers\")},h.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.mod(this.m)._forceRed(this)},h.prototype.neg=function(t){var e=t.clone();return e.sign=!e.sign,e.iadd(this.m)._forceRed(this)},h.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},h.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},h.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},h.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},h.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.shln(e))},h.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},h.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},h.prototype.isqr=function(t){return this.imul(t,t)},h.prototype.sqr=function(t){return this.mul(t,t)},h.prototype.sqrt=function(t){if(0===t.cmpn(0))return t.clone();var e=this.m.andln(3);if(r(e%2===1),3===e){var n=this.m.add(new i(1)).ishrn(2),a=this.pow(t,n);return a}for(var o=this.m.subn(1),s=0;0!==o.cmpn(0)&&0===o.andln(1);)s++,o.ishrn(1);r(0!==o.cmpn(0));var l=new i(1).toRed(this),c=l.redNeg(),u=this.m.subn(1).ishrn(1),f=this.m.bitLength();for(f=new i(2*f*f).toRed(this);0!==this.pow(f,u).cmp(c);)f.redIAdd(c);for(var h=this.pow(f,o),a=this.pow(t,o.addn(1).ishrn(1)),d=this.pow(t,o),p=s;0!==d.cmp(l);){for(var g=d,v=0;0!==g.cmp(l);v++)g=g.redSqr();r(p>v);var m=this.pow(h,new i(1).ishln(p-v-1));a=a.redMul(m),h=m.redSqr(),d=d.redMul(h),p=v}return a},h.prototype.invm=function(t){var e=t._invmp(this.m);return e.sign?(e.sign=!1,this.imod(e).redNeg()):this.imod(e)},h.prototype.pow=function(t,e){var r=[];if(0===e.cmpn(0))return new i(1);for(var n=e.clone();0!==n.cmpn(0);)r.push(n.andln(1)),n.ishrn(1);for(var a=t,o=0;o=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},d.prototype.mul=function(t,e){if(0===t.cmpn(0)||0===e.cmpn(0))return new i(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),a=r.isub(n).ishrn(this.shift),o=a;return a.cmp(this.m)>=0?o=a.isub(this.m):a.cmpn(0)<0&&(o=a.iadd(this.m)),o._forceRed(this)},d.prototype.invm=function(t){var e=this.imod(t._invmp(this.m).mul(this.r2));return e._forceRed(this)}}(\"undefined\"==typeof e||e,this)},{}],80:[function(t,e,r){\"use strict\";function n(t){return i(t[0])*i(t[1])}var i=t(\"./lib/bn-sign\");e.exports=n},{\"./lib/bn-sign\":71}],81:[function(t,e,r){\"use strict\";function n(t,e){return i(t[0].mul(e[1]).sub(t[1].mul(e[0])),t[1].mul(e[1]))}var i=t(\"./lib/rationalize\");e.exports=n},{\"./lib/rationalize\":76}],82:[function(t,e,r){\"use strict\";function n(t){var e=t[0],r=t[1];if(0===e.cmpn(0))return 0;var n=e.divmod(r),o=n.div,s=i(o),l=n.mod;if(0===l.cmpn(0))return s;if(s){var c=a(s)+4,u=i(l.shln(c).divRound(r));return 0>s&&(u=-u),s+u*Math.pow(2,-c)}var f=r.bitLength()-l.bitLength()+53,u=i(l.shln(f).divRound(r));return 1023>f?u*Math.pow(2,-f):(u*=Math.pow(2,-1023),u*Math.pow(2,1023-f))}var i=t(\"./lib/bn-to-num\"),a=t(\"./lib/ctz\");e.exports=n},{\"./lib/bn-to-num\":72,\"./lib/ctz\":73}],83:[function(t,e,r){\"use strict\";function n(t,e){for(var r=0;t>r;++r)if(!(e[r]<=e[r+t]))return!0;return!1}function i(t,e,r,i){for(var a=0,o=0,s=0,l=t.length;l>s;++s){var c=t[s];if(!n(e,c)){for(var u=0;2*e>u;++u)r[a++]=c[u];i[o++]=s}}return o}function a(t,e,r,n){var a=t.length,o=e.length;if(!(0>=a||0>=o)){var s=t[0].length>>>1;if(!(0>=s)){var l,c=f.mallocDouble(2*s*a),u=f.mallocInt32(a);if(a=i(t,s,c,u),a>0){if(1===s&&n)h.init(a),l=h.sweepComplete(s,r,0,a,c,u,0,a,c,u);else{var p=f.mallocDouble(2*s*o),g=f.mallocInt32(o);o=i(e,s,p,g),o>0&&(h.init(a+o),l=1===s?h.sweepBipartite(s,r,0,a,c,u,0,o,p,g):d(s,r,n,a,c,u,o,p,g),f.free(p),f.free(g))}f.free(c),f.free(u)}return l}}}function o(t,e){u.push([t,e])}function s(t){return u=[],a(t,t,o,!0),u}function l(t,e){return u=[],a(t,e,o,!1),u}function c(t,e,r){switch(arguments.length){case 1:return s(t);case 2:return\"function\"==typeof e?a(t,t,e,!0):l(t,e);case 3:return a(t,e,r,!1);default:throw new Error(\"box-intersect: Invalid arguments\")}}e.exports=c;var u,f=t(\"typedarray-pool\"),h=t(\"./lib/sweep\"),d=t(\"./lib/intersect\")},{\"./lib/intersect\":85,\"./lib/sweep\":89,\"typedarray-pool\":278}],84:[function(t,e,r){\"use strict\";function n(t,e,r){var n=\"bruteForce\"+(t?\"Red\":\"Blue\")+(e?\"Flip\":\"\")+(r?\"Full\":\"\"),i=[\"function \",n,\"(\",w.join(),\"){\",\"var \",c,\"=2*\",a,\";\"],l=\"for(var i=\"+u+\",\"+p+\"=\"+c+\"*\"+u+\";i<\"+f+\";++i,\"+p+\"+=\"+c+\"){var x0=\"+h+\"[\"+o+\"+\"+p+\"],x1=\"+h+\"[\"+o+\"+\"+p+\"+\"+a+\"],xi=\"+d+\"[i];\",k=\"for(var j=\"+g+\",\"+b+\"=\"+c+\"*\"+g+\";j<\"+v+\";++j,\"+b+\"+=\"+c+\"){var y0=\"+m+\"[\"+o+\"+\"+b+\"],\"+(r?\"y1=\"+m+\"[\"+o+\"+\"+b+\"+\"+a+\"],\":\"\")+\"yi=\"+y+\"[j];\";return t?i.push(l,_,\":\",k):i.push(k,_,\":\",l),r?i.push(\"if(y1\"+v+\"-\"+g+\"){\"),t?(e(!0,!1),o.push(\"}else{\"),e(!1,!1)):(o.push(\"if(\"+l+\"){\"),e(!0,!0),o.push(\"}else{\"),e(!0,!1),o.push(\"}}else{if(\"+l+\"){\"),e(!1,!0),o.push(\"}else{\"),e(!1,!1),o.push(\"}\")),o.push(\"}}return \"+r);var s=i.join(\"\")+o.join(\"\"),c=new Function(s);return c()}var a=\"d\",o=\"ax\",s=\"vv\",l=\"fp\",c=\"es\",u=\"rs\",f=\"re\",h=\"rb\",d=\"ri\",p=\"rp\",g=\"bs\",v=\"be\",m=\"bb\",y=\"bi\",b=\"bp\",x=\"rv\",_=\"Q\",w=[a,o,s,u,f,h,d,g,v,m,y];r.partial=i(!1),r.full=i(!0)},{}],85:[function(t,e,r){\"use strict\";function n(t,e){var r=8*c.log2(e+1)*(t+1)|0,n=c.nextPow2(M*r);L.lengthS&&(l.free(S),S=l.mallocDouble(i))}function i(t,e,r,n,i,a,o,s,l){var c=M*t;L[c]=e,L[c+1]=r,L[c+2]=n,L[c+3]=i,L[c+4]=a,L[c+5]=o;var u=T*t;S[u]=s,S[u+1]=l}function a(t,e,r,n,i,a,o,s,l,c,u){var f=2*t,h=l*f,d=c[h+e];t:for(var p=i,g=i*f;a>p;++p,g+=f){var v=o[g+e],m=o[g+e+t];if(!(v>d||d>m||n&&d===v)){for(var y=s[p],b=e+1;t>b;++b){var v=o[g+b],m=o[g+b+t],x=c[h+b],_=c[h+b+t];if(x>m||v>_)continue t}var w;if(w=n?r(u,y):r(y,u),void 0!==w)return w}}}function o(t,e,r,n,i,a,o,s,l,c){var u=2*t,f=s*u,h=l[f+e];t:for(var d=n,p=n*u;i>d;++d,p+=u){var g=o[d];if(g!==c){var v=a[p+e],m=a[p+e+t];if(!(v>h||h>m)){for(var y=e+1;t>y;++y){var v=a[p+y],m=a[p+y+t],b=l[f+y],x=l[f+y+t];if(b>m||v>x)continue t}var _=r(g,c);if(void 0!==_)return _}}}}function s(t,e,r,s,l,c,u,g,E){n(t,s+u);var C,z=0,P=2*t;for(i(z++,0,0,s,0,u,r?16:0,-(1/0),1/0),r||i(z++,0,0,u,0,s,1,-(1/0),1/0);z>0;){z-=1;var R=z*M,O=L[R],I=L[R+1],N=L[R+2],j=L[R+3],F=L[R+4],D=L[R+5],B=z*T,U=S[B],V=S[B+1],q=1&D,H=!!(16&D),G=l,Y=c,X=g,W=E;if(q&&(G=g,Y=E,X=l,W=c),!(2&D&&(N=_(t,O,I,N,G,Y,V),I>=N)||4&D&&(I=w(t,O,I,N,G,Y,U),I>=N))){var Z=N-I,K=F-j;if(H){if(y>t*Z*(Z+K)){if(C=d.scanComplete(t,O,e,I,N,G,Y,j,F,X,W),void 0!==C)return C;continue}}else{if(t*Math.min(Z,K)t*Z*K){if(C=d.scanBipartite(t,O,e,q,I,N,G,Y,j,F,X,W),void 0!==C)return C;continue}}var $=b(t,O,I,N,G,Y,U,V);if($>I)if(v>t*($-I)){if(C=h(t,O+1,e,I,$,G,Y,j,F,X,W),void 0!==C)return C}else if(O===t-2){if(C=q?d.sweepBipartite(t,e,j,F,X,W,I,$,G,Y):d.sweepBipartite(t,e,I,$,G,Y,j,F,X,W),void 0!==C)return C}else i(z++,O+1,I,$,j,F,q,-(1/0),1/0),i(z++,O+1,j,F,I,$,1^q,-(1/0),1/0);if(N>$){var Q=p(t,O,j,F,X,W),J=X[P*Q+O],tt=x(t,O,Q,F,X,W,J);if(F>tt&&i(z++,O,$,N,tt,F,(4|q)+(H?16:0),J,V),Q>j&&i(z++,O,$,N,j,Q,(2|q)+(H?16:0),U,J),Q+1===tt){if(C=H?o(t,O,e,$,N,G,Y,Q,X,W[Q]):a(t,O,e,q,$,N,G,Y,Q,X,W[Q]),void 0!==C)return C}else if(tt>Q){var et;if(H){if(et=k(t,O,$,N,G,Y,J),et>$){var rt=x(t,O,$,et,G,Y,J);if(O===t-2){if(rt>$&&(C=d.sweepComplete(t,e,$,rt,G,Y,Q,tt,X,W),void 0!==C))return C;if(et>rt&&(C=d.sweepBipartite(t,e,rt,et,G,Y,Q,tt,X,W),void 0!==C))return C}else rt>$&&i(z++,O+1,$,rt,Q,tt,16,-(1/0),1/0),et>rt&&(i(z++,O+1,rt,et,Q,tt,0,-(1/0),1/0),i(z++,O+1,Q,tt,rt,et,1,-(1/0),1/0))}}else et=q?A(t,O,$,N,G,Y,J):k(t,O,$,N,G,Y,J),et>$&&(O===t-2?C=q?d.sweepBipartite(t,e,Q,tt,X,W,$,et,G,Y):d.sweepBipartite(t,e,$,et,G,Y,Q,tt,X,W):(i(z++,O+1,$,et,Q,tt,q,-(1/0),1/0),i(z++,O+1,Q,tt,$,et,1^q,-(1/0),1/0)))}}}}}e.exports=s;var l=t(\"typedarray-pool\"),c=t(\"bit-twiddle\"),u=t(\"./brute\"),f=u.partial,h=u.full,d=t(\"./sweep\"),p=t(\"./median\"),g=t(\"./partition\"),v=128,m=1<<22,y=1<<22,b=g(\"!(lo>=p0)&&!(p1>=hi)\",[\"p0\",\"p1\"]),x=g(\"lo===p0\",[\"p0\"]),_=g(\"lol;++l,s+=o)for(var c=i[s],u=l,f=o*(l-1);u>r&&i[f+e]>c;--u,f-=o){for(var h=f,d=f+o,p=0;o>p;++p,++h,++d){var g=i[h];i[h]=i[d],i[d]=g}var v=a[u];a[u]=a[u-1],a[u-1]=v}}function i(t,e,r,i,a,l){if(r+1>=i)return r;for(var c=r,u=i,f=i+r>>>1,h=2*t,d=f,p=a[h*f+e];u>c;){if(s>u-c){n(t,e,c,u,a,l),p=a[h*f+e];break}var g=u-c,v=Math.random()*g+c|0,m=a[h*v+e],y=Math.random()*g+c|0,b=a[h*y+e],x=Math.random()*g+c|0,_=a[h*x+e];b>=m?_>=b?(d=y,p=b):m>=_?(d=v,p=m):(d=x,p=_):b>=_?(d=y,p=b):_>=m?(d=v,p=m):(d=x,p=_);for(var w=h*(u-1),k=h*d,A=0;h>A;++A,++w,++k){var M=a[w];a[w]=a[k],a[k]=M}var T=l[u-1];l[u-1]=l[d],l[d]=T,d=o(t,e,c,u-1,a,l,p);for(var w=h*(u-1),k=h*d,A=0;h>A;++A,++w,++k){var M=a[w];a[w]=a[k],a[k]=M}var T=l[u-1];if(l[u-1]=l[d],l[d]=T,d>f){for(u=d-1;u>c&&a[h*(u-1)+e]===p;)u-=1;u+=1}else{if(!(f>d))break;for(c=d+1;u>c&&a[h*c+e]===p;)c+=1}}return o(t,e,r,f,a,l,a[h*f+e])}e.exports=i;var a=t(\"./partition\"),o=a(\"lo=0&&n.push(\"lo=e[k+n]\"),t.indexOf(\"hi\")>=0&&n.push(\"hi=e[k+o]\"),r.push(i.replace(\"_\",n.join()).replace(\"$\",t)),Function.apply(void 0,r)}e.exports=n;var i=\"for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m\"},{}],88:[function(t,e,r){\"use strict\";function n(t,e){4*h>=e?i(0,e-1,t):f(0,e-1,t)}function i(t,e,r){for(var n=2*(t+1),i=t+1;e>=i;++i){for(var a=r[n++],o=r[n++],s=i,l=n-2;s-- >t;){var c=r[l-2],u=r[l-1];if(a>c)break;if(c===a&&o>u)break;r[l]=c,r[l+1]=u,l-=2}r[l]=a,r[l+1]=o}}function a(t,e,r){t*=2,e*=2;var n=r[t],i=r[t+1];r[t]=r[e],r[t+1]=r[e+1],r[e]=n,r[e+1]=i}function o(t,e,r){t*=2,e*=2,r[t]=r[e],r[t+1]=r[e+1]}function s(t,e,r,n){t*=2,e*=2,r*=2;var i=n[t],a=n[t+1];n[t]=n[e],n[t+1]=n[e+1],n[e]=n[r],n[e+1]=n[r+1],n[r]=i,n[r+1]=a}function l(t,e,r,n,i){t*=2,e*=2,i[t]=i[e],i[e]=r,i[t+1]=i[e+1],i[e+1]=n}function c(t,e,r){t*=2,e*=2;var n=r[t],i=r[e];return i>n?!1:n===i?r[t+1]>r[e+1]:!0}function u(t,e,r,n){t*=2;var i=n[t];return e>i?!0:i===e?n[t+1]>1,v=g-n,m=g+n,y=d,b=v,x=g,_=m,w=p,k=t+1,A=e-1,M=0;c(y,b,r)&&(M=y,y=b,b=M),c(_,w,r)&&(M=_,_=w,w=M),c(y,x,r)&&(M=y,y=x,x=M),c(b,x,r)&&(M=b,b=x,x=M),c(y,_,r)&&(M=y,y=_,_=M),c(x,_,r)&&(M=x,x=_,_=M),c(b,w,r)&&(M=b,b=w,w=M),c(b,x,r)&&(M=b,b=x,x=M),c(_,w,r)&&(M=_,_=w,w=M);for(var T=r[2*b],E=r[2*b+1],L=r[2*_],S=r[2*_+1],C=2*y,z=2*x,P=2*w,R=2*d,O=2*g,I=2*p,N=0;2>N;++N){var j=r[C+N],F=r[z+N],D=r[P+N];r[R+N]=j,r[O+N]=F,r[I+N]=D}o(v,t,r),o(m,e,r);for(var B=k;A>=B;++B)if(u(B,T,E,r))B!==k&&a(B,k,r),++k;else if(!u(B,L,S,r))for(;;){if(u(A,L,S,r)){u(A,T,E,r)?(s(B,k,A,r),++k,--A):(a(B,A,r),--A);break}if(--A=k-2-t?i(t,k-2,r):f(t,k-2,r),h>=e-(A+2)?i(A+2,e,r):f(A+2,e,r),h>=A-k?i(k,A,r):f(k,A,r)}e.exports=n;var h=32},{}],89:[function(t,e,r){\"use strict\";function n(t){var e=f.nextPow2(t);g.lengthk;++k){var A=s[k],M=b*k;_[p++]=o[M+x],_[p++]=-(A+1),_[p++]=o[M+w],_[p++]=A}for(var k=l;c>k;++k){var A=f[k]+d,T=b*k;_[p++]=u[T+x],_[p++]=-A,_[p++]=u[T+w],_[p++]=A}var E=p>>>1;h(_,E);for(var L=0,S=0,k=0;E>k;++k){var C=0|_[2*k+1];if(C>=d)C=C-d|0,i(m,y,S--,C);else if(C>=0)i(g,v,L--,C);else if(-d>=C){C=-C-d|0;for(var z=0;L>z;++z){var P=e(g[z],C);if(void 0!==P)return P}a(m,y,S++,C)}else{C=-C-1|0;for(var z=0;S>z;++z){var P=e(C,m[z]);if(void 0!==P)return P}a(g,v,L++,C)}}}function s(t,e,r,n,o,s,l,c,u,f){for(var d=0,p=2*t,w=t-1,k=p-1,A=r;n>A;++A){var M=s[A]+1<<1,T=p*A;_[d++]=o[T+w],_[d++]=-M,_[d++]=o[T+k],_[d++]=M}for(var A=l;c>A;++A){var M=f[A]+1<<1,E=p*A;_[d++]=u[E+w],_[d++]=1|-M,_[d++]=u[E+k],_[d++]=1|M}var L=d>>>1;h(_,L);for(var S=0,C=0,z=0,A=0;L>A;++A){var P=0|_[2*A+1],R=1&P;if(L-1>A&&P>>1===_[2*A+3]>>1&&(R=2,A+=1),0>P){for(var O=-(P>>1)-1,I=0;z>I;++I){var N=e(b[I],O);if(void 0!==N)return N}if(0!==R)for(var I=0;S>I;++I){var N=e(g[I],O);if(void 0!==N)return N}if(1!==R)for(var I=0;C>I;++I){var N=e(m[I],O);if(void 0!==N)return N}0===R?a(g,v,S++,O):1===R?a(m,y,C++,O):2===R&&a(b,x,z++,O)}else{var O=(P>>1)-1;0===R?i(g,v,S--,O):1===R?i(m,y,C--,O):2===R&&i(b,x,z--,O)}}}function l(t,e,r,n,o,s,l,c,u,f,p,m){var y=0,b=2*t,x=e,w=e+t,k=1,A=1;n?A=d:k=d;for(var M=o;s>M;++M){var T=M+k,E=b*M;_[y++]=l[E+x],_[y++]=-T,_[y++]=l[E+w],_[y++]=T}for(var M=u;f>M;++M){var T=M+A,L=b*M;_[y++]=p[L+x],_[y++]=-T}var S=y>>>1;h(_,S);for(var C=0,M=0;S>M;++M){var z=0|_[2*M+1];if(0>z){var T=-z,P=!1;if(T>=d?(P=!n,T-=d):(P=!!n,T-=1),P)a(g,v,C++,T);else{var R=m[T],O=b*T,I=p[O+e+1],N=p[O+e+1+t];t:for(var j=0;C>j;++j){var F=g[j],D=b*F;if(!(NB;++B)if(p[O+B+t]y;++y){var b=y+d,x=p*y;_[f++]=a[x+v],_[f++]=-b,_[f++]=a[x+m],_[f++]=b}for(var y=s;l>y;++y){var b=y+1,w=p*y;_[f++]=c[w+v],_[f++]=-b}var k=f>>>1;h(_,k);for(var A=0,y=0;k>y;++y){var M=0|_[2*y+1];if(0>M){var b=-M;if(b>=d)g[A++]=b-d;else{b-=1;var T=u[b],E=p*b,L=c[E+e+1],S=c[E+e+1+t];t:for(var C=0;A>C;++C){var z=g[C],P=o[z];if(P===T)break;var R=p*z;if(!(SO;++O)if(c[E+O+t]=0;--C)if(g[C]===b){for(var O=C+1;A>O;++O)g[O-1]=g[O];break}--A}}}e.exports={init:n,sweepBipartite:o,sweepComplete:s,scanBipartite:l,scanComplete:c};var u=t(\"typedarray-pool\"),f=t(\"bit-twiddle\"),h=t(\"./sort\"),d=1<<28,p=1024,g=u.mallocInt32(p),v=u.mallocInt32(p),m=u.mallocInt32(p),y=u.mallocInt32(p),b=u.mallocInt32(p),x=u.mallocInt32(p),_=u.mallocDouble(8*p)},{\"./sort\":88,\"bit-twiddle\":50,\"typedarray-pool\":278}],90:[function(t,e,r){(function(t){function r(t,e){return d[0]=t,d[1]=e,h[0]}function n(t){return h[0]=t,d[0]}function i(t){return h[0]=t,d[1]}function a(t,e){return d[1]=t,d[0]=e,h[0]}function o(t){return h[0]=t,d[1]}function s(t){return h[0]=t,d[0]}function l(t,e){return p.writeUInt32LE(t,0,!0),p.writeUInt32LE(e,4,!0),p.readDoubleLE(0,!0)}function c(t){return p.writeDoubleLE(t,0,!0),p.readUInt32LE(0,!0)}function u(t){return p.writeDoubleLE(t,0,!0),p.readUInt32LE(4,!0)}var f=!1;if(\"undefined\"!=typeof Float64Array){var h=new Float64Array(1),d=new Uint32Array(h.buffer);h[0]=1,f=!0,1072693248===d[1]?(e.exports=function(t){return h[0]=t,[d[0],d[1]]},e.exports.pack=r,e.exports.lo=n,e.exports.hi=i):1072693248===d[0]?(e.exports=function(t){return h[0]=t,\n", + "[d[1],d[0]]},e.exports.pack=a,e.exports.lo=o,e.exports.hi=s):f=!1}if(!f){var p=new t(8);e.exports=function(t){return p.writeDoubleLE(t,0,!0),[p.readUInt32LE(0,!0),p.readUInt32LE(4,!0)]},e.exports.pack=l,e.exports.lo=c,e.exports.hi=u}e.exports.sign=function(t){return e.exports.hi(t)>>>31},e.exports.exponent=function(t){var r=e.exports.hi(t);return(r<<1>>>21)-1023},e.exports.fraction=function(t){var r=e.exports.lo(t),n=e.exports.hi(t),i=1048575&n;return 2146435072&n&&(i+=1<<20),[r,i]},e.exports.denormalized=function(t){var r=e.exports.hi(t);return!(2146435072&r)}}).call(this,t(\"buffer\").Buffer)},{buffer:51}],91:[function(t,e,r){\"use strict\";function n(t,e){if(isNaN(t)||isNaN(e))return NaN;if(t===e)return t;if(0===t)return 0>e?-a:a;var r=i.hi(t),n=i.lo(t);return e>t==t>0?n===o?(r+=1,n=0):n+=1:0===n?(n=o,r-=1):n-=1,i.pack(n,r)}var i=t(\"double-bits\"),a=Math.pow(2,-1074),o=-1>>>0;e.exports=n},{\"double-bits\":90}],92:[function(t,e,r){\"use strict\";function n(t,e){for(var r=t.length,n=new Array(r),a=0;r>a;++a)n[a]=i(t[a],e[a]);return n}var i=t(\"big-rat/add\");e.exports=n},{\"big-rat/add\":66}],93:[function(t,e,r){\"use strict\";function n(t){for(var e=new Array(t.length),r=0;rs;++s)o[s]=a(t[s],r);return o}var i=t(\"big-rat\"),a=t(\"big-rat/mul\");e.exports=n},{\"big-rat\":69,\"big-rat/mul\":78}],95:[function(t,e,r){\"use strict\";function n(t,e){for(var r=t.length,n=new Array(r),a=0;r>a;++a)n[a]=i(t[a],e[a]);return n}var i=t(\"big-rat/sub\");e.exports=n},{\"big-rat/sub\":81}],96:[function(t,e,r){\"use strict\";function n(t,e,r,n){for(var i=0;2>i;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u),h=Math.max(c,u);if(s>h||f>l)return!1}return!0}function i(t,e,r,i){var o=a(t,r,i),s=a(e,r,i);if(o>0&&s>0||0>o&&0>s)return!1;var l=a(r,t,e),c=a(i,t,e);return l>0&&c>0||0>l&&0>c?!1:0===o&&0===s&&0===l&&0===c?n(t,e,r,i):!0}e.exports=i;var a=t(\"robust-orientation\")[3]},{\"robust-orientation\":259}],97:[function(t,e,r){\"use strict\";\"use restrict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;t>e;++e)this.roots[e]=e,this.ranks[e]=0}e.exports=n;var i=n.prototype;Object.defineProperty(i,\"length\",{get:function(){return this.roots.length}}),i.makeSet=function(){var t=this.roots.length;return this.roots.push(t),this.ranks.push(0),t},i.find=function(t){for(var e=t,r=this.roots;r[t]!==t;)t=r[t];for(;r[e]!==t;){var n=r[e];r[e]=t,e=n}return t},i.link=function(t,e){var r=this.find(t),n=this.find(e);if(r!==n){var i=this.ranks,a=this.roots,o=i[r],s=i[n];s>o?a[r]=n:o>s?a[n]=r:(a[n]=r,++i[r])}}},{}],98:[function(t,e,r){(function(t){var r=function(){\"use strict\";function e(r,n,i,a){function s(r,i){if(null===r)return null;if(0==i)return r;var l,h;if(\"object\"!=typeof r)return r;if(e.__isArray(r))l=[];else if(e.__isRegExp(r))l=new RegExp(r.source,o(r)),r.lastIndex&&(l.lastIndex=r.lastIndex);else if(e.__isDate(r))l=new Date(r.getTime());else{if(f&&t.isBuffer(r))return l=new t(r.length),r.copy(l),l;\"undefined\"==typeof a?(h=Object.getPrototypeOf(r),l=Object.create(h)):(l=Object.create(a),h=a)}if(n){var d=c.indexOf(r);if(-1!=d)return u[d];c.push(r),u.push(l)}for(var p in r){var g;h&&(g=Object.getOwnPropertyDescriptor(h,p)),g&&null==g.set||(l[p]=s(r[p],i-1))}return l}var l;\"object\"==typeof n&&(i=n.depth,a=n.prototype,l=n.filter,n=n.circular);var c=[],u=[],f=\"undefined\"!=typeof t;return\"undefined\"==typeof n&&(n=!0),\"undefined\"==typeof i&&(i=1/0),s(r,i)}function r(t){return Object.prototype.toString.call(t)}function n(t){return\"object\"==typeof t&&\"[object Date]\"===r(t)}function i(t){return\"object\"==typeof t&&\"[object Array]\"===r(t)}function a(t){return\"object\"==typeof t&&\"[object RegExp]\"===r(t)}function o(t){var e=\"\";return t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),e}return e.clonePrototype=function(t){if(null===t)return null;var e=function(){};return e.prototype=t,new e},e.__objToStr=r,e.__isDate=n,e.__isArray=i,e.__isRegExp=a,e.__getRegExpFlags=o,e}();\"object\"==typeof e&&e.exports&&(e.exports=r)}).call(this,t(\"buffer\").Buffer)},{buffer:51}],99:[function(t,e,r){e.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],cool:[{index:0,rgb:[0,255,255]},{index:1,rgb:[255,0,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:0,rgb:[255,255,255,1]}]}},{}],100:[function(t,e,r){\"use strict\";function n(t){for(var e,r=\"#\",n=0;3>n;++n)e=t[n],e=e.toString(16),r+=(\"00\"+e).substr(e.length);return r}function i(t){return\"rgba(\"+t.join(\",\")+\")\"}var a=t(\"arraytools\"),o=t(\"clone\"),s=t(\"./colorScales\");e.exports=function(t){var e,r,l,c,u,f,h,d,p,g,v,m,y,b=[],x=[],_=[],w=[];if(a.isPlainObject(t)||(t={}),p=t.nshades||72,d=t.format||\"hex\",h=t.colormap,h||(h=\"jet\"),\"string\"==typeof h){if(h=h.toLowerCase(),!s[h])throw Error(h+\" not a supported colorscale\");f=o(s[h])}else{if(!Array.isArray(h))throw Error(\"unsupported colormap option\",h);f=o(h)}if(f.length>p)throw new Error(h+\" map requires nshades to be at least size \"+f.length);for(v=Array.isArray(t.alpha)?2!==t.alpha.length?[1,1]:o(t.alpha):\"number\"==typeof t.alpha?[t.alpha,t.alpha]:[1,1],e=f.map(function(t){return Math.round(t.index*p)}),v[0]<0&&(v[0]=0),v[1]<0&&(v[0]=0),v[0]>1&&(v[0]=1),v[1]>1&&(v[0]=1),y=0;y=0&&r[3]<=1||(r[3]=v[0]+(v[1]-v[0])*m);for(y=0;yx;++x)if(i=y[x]-b[x])return i;return 0}}e.exports=i;var a=Math.min},{}],102:[function(t,e,r){\"use strict\";function n(t){var e=t.length;if(0===e)return[];if(1===e)return[[0]];var r=t[0].length;return 0===r?[]:1===r?i(t):2===r?a(t):o(t,r)}var i=t(\"./lib/ch1d\"),a=t(\"./lib/ch2d\"),o=t(\"./lib/chnd\");e.exports=n},{\"./lib/ch1d\":103,\"./lib/ch2d\":104,\"./lib/chnd\":105}],103:[function(t,e,r){\"use strict\";function n(t){for(var e=0,r=0,n=1;nt[r][0]&&(r=n);return r>e?[[e],[r]]:e>r?[[r],[e]]:[[e]]}e.exports=n},{}],104:[function(t,e,r){\"use strict\";function n(t){var e=i(t),r=e.length;if(2>=r)return[];for(var n=new Array(r),a=e[r-1],o=0;r>o;++o){var s=e[o];n[o]=[a,s],a=s}return n}e.exports=n;var i=t(\"monotone-convex-hull-2d\")},{\"monotone-convex-hull-2d\":107}],105:[function(t,e,r){\"use strict\";function n(t,e){for(var r=t.length,n=new Array(r),i=0;ii;++i)e.indexOf(i)<0&&(n[a++]=t[i]);return n}function i(t,e){for(var r=t.length,n=e.length,i=0;r>i;++i)for(var a=t[i],o=0;os)a[o]=e[s];else{s-=n;for(var l=0;n>l;++l)s>=e[l]&&(s+=1);a[o]=s}}return t}function a(t,e){try{return o(t,!0)}catch(r){var a=s(t);if(a.length<=e)return[];var l=n(t,a),c=o(l,!0);return i(c,a)}}e.exports=a;var o=t(\"incremental-convex-hull\"),s=t(\"affine-hull\")},{\"affine-hull\":106,\"incremental-convex-hull\":235}],106:[function(t,e,r){\"use strict\";function n(t,e){for(var r=new Array(e+1),n=0;n=i;++i){for(var o=new Array(e),s=0;e>s;++s)o[s]=Math.pow(i+1-n,s);r[i]=o}var l=a.apply(void 0,r);if(l)return!0}return!1}function i(t){var e=t.length;if(0===e)return[];if(1===e)return[0];for(var r=t[0].length,i=[t[0]],a=[0],o=1;e>o;++o)if(i.push(t[o]),n(i,r)){if(a.push(o),a.length===r+1)return a}else i.pop();return a}e.exports=i;var a=t(\"robust-orientation\")},{\"robust-orientation\":259}],107:[function(t,e,r){\"use strict\";function n(t){var e=t.length;if(3>e){for(var r=new Array(e),n=0;e>n;++n)r[n]=n;return 2===e&&t[0][0]===t[1][0]&&t[0][1]===t[1][1]?[0]:r}for(var a=new Array(e),n=0;e>n;++n)a[n]=n;a.sort(function(e,r){var n=t[e][0]-t[r][0];return n?n:t[e][1]-t[r][1]});for(var o=[a[0],a[1]],s=[a[0],a[1]],n=2;e>n;++n){for(var l=a[n],c=t[l],u=o.length;u>1&&i(t[o[u-2]],t[o[u-1]],c)<=0;)u-=1,o.pop();for(o.push(l),u=s.length;u>1&&i(t[s[u-2]],t[s[u-1]],c)>=0;)u-=1,s.pop();s.push(l)}for(var r=new Array(s.length+o.length-2),f=0,n=0,h=o.length;h>n;++n)r[f++]=o[n];for(var d=s.length-2;d>0;--d)r[f++]=s[d];return r}e.exports=n;var i=t(\"robust-orientation\")[3]},{\"robust-orientation\":259}],108:[function(t,e,r){e.exports={AFG:\"afghan\",ALA:\"\\\\b\\\\wland\",ALB:\"albania\",DZA:\"algeria\",ASM:\"^(?=.*americ).*samoa\",AND:\"andorra\",AGO:\"angola\",AIA:\"anguill?a\",ATA:\"antarctica\",ATG:\"antigua\",ARG:\"argentin\",ARM:\"armenia\",ABW:\"^(?!.*bonaire).*\\\\baruba\",AUS:\"australia\",AUT:\"^(?!.*hungary).*austria|\\\\baustri.*\\\\bemp\",AZE:\"azerbaijan\",BHS:\"bahamas\",BHR:\"bahrain\",BGD:\"bangladesh|^(?=.*east).*paki?stan\",BRB:\"barbados\",BLR:\"belarus|byelo\",BEL:\"^(?!.*luxem).*belgium\",BLZ:\"belize|^(?=.*british).*honduras\",BEN:\"benin|dahome\",BMU:\"bermuda\",BTN:\"bhutan\",BOL:\"bolivia\",BES:\"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\\\bbes.?islands\",BIH:\"herzegovina|bosnia\",BWA:\"botswana|bechuana\",BVT:\"bouvet\",BRA:\"brazil\",IOT:\"british.?indian.?ocean\",BRN:\"brunei\",BGR:\"bulgaria\",BFA:\"burkina|\\\\bfaso|upper.?volta\",BDI:\"burundi\",KHM:\"cambodia|kampuchea|khmer\",CMR:\"cameroon\",CAN:\"canada\",CPV:\"verde\",CYM:\"cayman\",CAF:\"\\\\bcentral.african.republic\",TCD:\"\\\\bchad\",CHL:\"\\\\bchile\",CHN:\"^(?!.*\\\\bmac)(?!.*\\\\bhong)(?!.*\\\\btai).*china\",CXR:\"christmas\",CCK:\"\\\\bcocos|keeling\",COL:\"colombia\",COM:\"comoro\",COD:\"\\\\bdem.*congo|congo.*\\\\bdem|congo.*\\\\bdr|\\\\bdr.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc\",COG:\"^(?!.*\\\\bdem)(?!.*\\\\bdr)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\\\bcongo\",COK:\"\\\\bcook\",CRI:\"costa.?rica\",CIV:\"ivoire|ivory\",HRV:\"croatia\",CUB:\"\\\\bcuba\",CUW:\"^(?!.*bonaire).*\\\\bcura(c|\\xe7)ao\",CYP:\"cyprus\",CZE:\"^(?=.*rep).*czech|czechia|bohemia\",CSK:\"czechoslovakia\",DNK:\"denmark\",DJI:\"djibouti\",DMA:\"dominica(?!n)\",DOM:\"dominican.rep\",ECU:\"ecuador\",EGY:\"egypt\",SLV:\"el.?salvador\",GNQ:\"guine.*eq|eq.*guine|^(?=.*span).*guinea\",ERI:\"eritrea\",EST:\"estonia\",ETH:\"ethiopia|abyssinia\",FLK:\"falkland|malvinas\",FRO:\"faroe|faeroe\",FJI:\"fiji\",FIN:\"finland\",FRA:\"^(?!.*\\\\bdep)(?!.*martinique).*france|french.?republic|\\\\bgaul\",GUF:\"^(?=.*french).*guiana\",PYF:\"french.?polynesia|tahiti\",ATF:\"french.?southern\",GAB:\"gabon\",GMB:\"gambia\",GEO:\"^(?!.*south).*georgia\",DDR:\"german.?democratic.?republic|democratic.?republic.*germany|east.germany\",DEU:\"^(?!.*east).*germany|^(?=.*\\\\bfed.*\\\\brep).*german\",GHA:\"ghana|gold.?coast\",GIB:\"gibraltar\",GRC:\"greece|hellenic|hellas\",GRL:\"greenland\",GRD:\"grenada\",GLP:\"guadeloupe\",GUM:\"\\\\bguam\",GTM:\"guatemala\",GGY:\"guernsey\",GIN:\"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea\",GNB:\"bissau|^(?=.*portu).*guinea\",GUY:\"guyana|british.?guiana\",HTI:\"haiti\",HMD:\"heard.*mcdonald\",VAT:\"holy.?see|vatican|papal.?st\",HND:\"^(?!.*brit).*honduras\",HKG:\"hong.?kong\",HUN:\"^(?!.*austr).*hungary\",ISL:\"iceland\",IND:\"india(?!.*ocea)\",IDN:\"indonesia\",IRN:\"\\\\biran|persia\",IRQ:\"\\\\biraq|mesopotamia\",IRL:\"ireland\",IMN:\"^(?=.*isle).*\\\\bman\",ISR:\"israel\",ITA:\"italy\",JAM:\"jamaica\",JPN:\"japan\",JEY:\"jersey\",JOR:\"jordan\",KAZ:\"kazak\",KEN:\"kenya|british.?east.?africa|east.?africa.?prot\",KIR:\"kiribati\",PRK:\"^(?=.*democrat).*\\\\bkorea|^(?=.*people).*\\\\bkorea|^(?=.*north).*\\\\bkorea|dprk\",KOR:\"^(?!.*democrat)(?!.*people)(?!.*north).*\\\\bkorea\",KWT:\"kuwait\",KGZ:\"kyrgyz|kirghiz\",LAO:\"\\\\blaos?\\\\b\",LVA:\"latvia\",LBN:\"lebanon\",LSO:\"lesotho|basuto\",LBR:\"liberia\",LBY:\"libya\",LIE:\"liechtenstein\",LTU:\"lithuania\",LUX:\"^(?!.*belg).*luxem\",MAC:\"maca(o|u)\",MKD:\"macedonia|fyrom\",MDG:\"madagascar|malagasy\",MWI:\"malawi|nyasa\",MYS:\"malaysia\",MDV:\"maldive\",MLI:\"\\\\bmali\\\\b\",MLT:\"\\\\bmalta\",MHL:\"marshall\",MTQ:\"martinique\",MRT:\"mauritania\",MUS:\"mauritius\",MYT:\"\\\\bmayotte\",MEX:\"\\\\bmexic\",FSM:\"micronesia\",MDA:\"moldov|b(a|e)ssarabia\",MCO:\"monaco\",MNG:\"mongolia\",MNE:\"^(?!.*serbia).*montenegro\",MSR:\"montserrat\",MAR:\"morocco|\\\\bmaroc\",MOZ:\"mozambique\",MMR:\"myanmar|burma\",NAM:\"namibia\",NRU:\"nauru\",NPL:\"nepal\",NLD:\"^(?!.*\\\\bant)(?!.*\\\\bcarib).*netherlands\",ANT:\"^(?=.*\\\\bant).*(nether|dutch)\",NCL:\"new.?caledonia\",NZL:\"new.?zealand\",NIC:\"nicaragua\",NER:\"\\\\bniger(?!ia)\",NGA:\"nigeria\",NIU:\"niue\",NFK:\"norfolk\",MNP:\"mariana\",NOR:\"norway\",OMN:\"\\\\boman|trucial\",PAK:\"^(?!.*east).*paki?stan\",PLW:\"palau\",PSE:\"palestin|\\\\bgaza|west.?bank\",PAN:\"panama\",PNG:\"papua|new.?guinea\",PRY:\"paraguay\",PER:\"peru\",PHL:\"philippines\",PCN:\"pitcairn\",POL:\"poland\",PRT:\"portugal\",PRI:\"puerto.?rico\",QAT:\"qatar\",REU:\"r(e|\\xe9)union\",ROU:\"r(o|u|ou)mania\",RUS:\"\\\\brussia|soviet.?union|u\\\\.?s\\\\.?s\\\\.?r|socialist.?republics\",RWA:\"rwanda\",BLM:\"barth(e|\\xe9)lemy\",SHN:\"helena\",KNA:\"kitts|\\\\bnevis\",LCA:\"\\\\blucia\",MAF:\"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)\",SPM:\"miquelon\",VCT:\"vincent\",WSM:\"^(?!.*amer).*samoa\",SMR:\"san.?marino\",STP:\"\\\\bs(a|\\xe3)o.?tom(e|\\xe9)\",SAU:\"\\\\bsa\\\\w*.?arabia\",SEN:\"senegal\",SRB:\"^(?!.*monte).*serbia\",SYC:\"seychell\",SLE:\"sierra\",SGP:\"singapore\",SXM:\"^(?!.*martin)(?!.*saba).*maarten\",SVK:\"^(?!.*cze).*slovak\",SVN:\"slovenia\",SLB:\"solomon\",SOM:\"somali\",ZAF:\"\\\\bs\\\\w*.?africa\",SGS:\"south.?georgia|sandwich\",SSD:\"\\\\bs\\\\w*.?sudan\",ESP:\"spain\",LKA:\"sri.?lanka|ceylon\",SDN:\"^(?!.*\\\\bs(?!u)).*sudan\",SUR:\"surinam|dutch.?guiana\",SJM:\"svalbard\",SWZ:\"swaziland\",SWE:\"sweden\",CHE:\"switz|swiss\",SYR:\"syria\",TWN:\"taiwan|taipei|formosa\",TJK:\"tajik\",TZA:\"tanzania\",THA:\"thailand|\\\\bsiam\",TLS:\"^(?=.*leste).*timor|^(?=.*east).*timor\",TGO:\"togo\",TKL:\"tokelau\",TON:\"tonga\",TTO:\"trinidad|tobago\",TUN:\"tunisia\",TUR:\"turkey\",TKM:\"turkmen\",TCA:\"turks\",TUV:\"tuvalu\",UGA:\"uganda\",UKR:\"ukrain\",ARE:\"emirates|^u\\\\.?a\\\\.?e\\\\.?$|united.?arab.?em\",GBR:\"united.?kingdom|britain|^u\\\\.?k\\\\.?$\",USA:\"united.?states|\\\\bu\\\\.?s\\\\.?a\\\\.?\\\\b|\\\\bu\\\\.?s\\\\.?\\\\b(?!.*islands)\",UMI:\"minor.?outlying.?is\",URY:\"uruguay\",UZB:\"uzbek\",VUT:\"vanuatu|new.?hebrides\",VEN:\"venezuela\",VNM:\"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam\",VGB:\"^(?=.*\\\\bu\\\\.?\\\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin\",VIR:\"^(?=.*\\\\bu\\\\.?\\\\s?s).*virgin|^(?=.*states).*virgin\",WLF:\"futuna|wallis\",ESH:\"western.sahara\",YEM:\"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YMD:\"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\\\bp\\\\.?d\\\\.?r).*yemen\",YUG:\"yugoslavia\",ZMB:\"zambia|northern.?rhodesia\",EAZ:\"zanzibar\",ZWE:\"zimbabwe|^(?!.*northern).*rhodesia\"}},{}],109:[function(t,e,r){\"use strict\";function n(){this.argTypes=[],this.shimArgs=[],this.arrayArgs=[],this.arrayBlockIndices=[],this.scalarArgs=[],this.offsetArgs=[],this.offsetArgIndex=[],this.indexArgs=[],this.shapeArgs=[],this.funcName=\"\",this.pre=null,this.body=null,this.post=null,this.debug=!1}function i(t){var e=new n;e.pre=t.pre,e.body=t.body,e.post=t.post;var r=t.args.slice(0);e.argTypes=r;for(var i=0;i0)throw new Error(\"cwise: pre() block may not reference array args\");if(i0)throw new Error(\"cwise: post() block may not reference array args\")}else if(\"scalar\"===o)e.scalarArgs.push(i),e.shimArgs.push(\"scalar\"+i);else if(\"index\"===o){if(e.indexArgs.push(i),i0)throw new Error(\"cwise: pre() block may not reference array index\");if(i0)throw new Error(\"cwise: post() block may not reference array index\")}else if(\"shape\"===o){if(e.shapeArgs.push(i),ir.length)throw new Error(\"cwise: Too many arguments in pre() block\");if(e.body.args.length>r.length)throw new Error(\"cwise: Too many arguments in body() block\");if(e.post.args.length>r.length)throw new Error(\"cwise: Too many arguments in post() block\");return e.debug=!!t.printCode||!!t.debug,e.funcName=t.funcName||\"cwise\",e.blockSize=t.blockSize||64,a(e)}var a=t(\"./lib/thunk.js\");e.exports=i},{\"./lib/thunk.js\":111}],110:[function(t,e,r){\"use strict\";function n(t,e,r){var n,i,a=t.length,o=e.arrayArgs.length,s=e.indexArgs.length>0,l=[],c=[],u=0,f=0;for(n=0;a>n;++n)c.push([\"i\",n,\"=0\"].join(\"\"));for(i=0;o>i;++i)for(n=0;a>n;++n)f=u,u=t[n],0===n?c.push([\"d\",i,\"s\",n,\"=t\",i,\"p\",u].join(\"\")):c.push([\"d\",i,\"s\",n,\"=(t\",i,\"p\",u,\"-s\",f,\"*t\",i,\"p\",f,\")\"].join(\"\"));for(l.push(\"var \"+c.join(\",\")),n=a-1;n>=0;--n)u=t[n],l.push([\"for(i\",n,\"=0;i\",n,\"n;++n){for(f=u,u=t[n],i=0;o>i;++i)l.push([\"p\",i,\"+=d\",i,\"s\",n].join(\"\"));s&&(n>0&&l.push([\"index[\",f,\"]-=s\",f].join(\"\")),l.push([\"++index[\",u,\"]\"].join(\"\"))),l.push(\"}\")}return l.join(\"\\n\")}function i(t,e,r,i){for(var a=e.length,o=r.arrayArgs.length,s=r.blockSize,l=r.indexArgs.length>0,c=[],u=0;o>u;++u)c.push([\"var offset\",u,\"=p\",u].join(\"\"));for(var u=t;a>u;++u)c.push([\"for(var j\"+u+\"=SS[\",e[u],\"]|0;j\",u,\">0;){\"].join(\"\")),c.push([\"if(j\",u,\"<\",s,\"){\"].join(\"\")),c.push([\"s\",e[u],\"=j\",u].join(\"\")),c.push([\"j\",u,\"=0\"].join(\"\")),c.push([\"}else{s\",e[u],\"=\",s].join(\"\")),c.push([\"j\",u,\"-=\",s,\"}\"].join(\"\")),l&&c.push([\"index[\",e[u],\"]=j\",u].join(\"\"));for(var u=0;o>u;++u){for(var f=[\"offset\"+u],h=t;a>h;++h)f.push([\"j\",h,\"*t\",u,\"p\",e[h]].join(\"\"));c.push([\"p\",u,\"=(\",f.join(\"+\"),\")\"].join(\"\"))}c.push(n(e,r,i));for(var u=t;a>u;++u)c.push(\"}\");return c.join(\"\\n\")}function a(t){for(var e=0,r=t[0].length;r>e;){for(var n=1;n0&&(r=r&&e[n]===e[n-1])}return r?e[0]:e.join(\"\")}function l(t,e){for(var r=e[1].length-Math.abs(t.arrayBlockIndices[0])|0,l=new Array(t.arrayArgs.length),u=new Array(t.arrayArgs.length),f=0;fy;++y)_.push([\"s\",y,\"=SS[\",y,\"]\"].join(\"\"));for(var f=0;fy;++y)_.push([\"t\",f,\"p\",y,\"=t\",f,\"[\",p[f]+y,\"]\"].join(\"\"));for(var y=0;y0&&_.push(\"shape=SS.slice(0)\"),t.indexArgs.length>0){for(var w=new Array(r),f=0;r>f;++f)w[f]=\"0\";_.push([\"index=[\",w.join(\",\"),\"]\"].join(\"\"))}for(var f=0;f3&&x.push(o(t.pre,t,u));var T=o(t.body,t,u),E=a(v);r>E?x.push(i(E,v[0],t,T)):x.push(n(v[0],t,T)),t.post.body.length>3&&x.push(o(t.post,t,u)),t.debug&&console.log(\"-----Generated cwise routine for \",e,\":\\n\"+x.join(\"\\n\")+\"\\n----------\");var L=[t.funcName||\"unnamed\",\"_cwise_loop_\",l[0].join(\"s\"),\"m\",E,s(u)].join(\"\"),S=new Function([\"function \",L,\"(\",b.join(\",\"),\"){\",x.join(\"\\n\"),\"} return \",L].join(\"\"));return S()}var c=t(\"uniq\");e.exports=l},{uniq:279}],111:[function(t,e,r){\"use strict\";function n(t){var e=[\"'use strict'\",\"var CACHED={}\"],r=[],n=t.funcName+\"_cwise_thunk\";e.push([\"return function \",n,\"(\",t.shimArgs.join(\",\"),\"){\"].join(\"\"));for(var a=[],o=[],s=[[\"array\",t.arrayArgs[0],\".shape.slice(\",Math.max(0,t.arrayBlockIndices[0]),t.arrayBlockIndices[0]<0?\",\"+t.arrayBlockIndices[0]+\")\":\")\"].join(\"\")],l=[],c=[],u=0;u0&&(l.push(\"array\"+t.arrayArgs[0]+\".shape.length===array\"+f+\".shape.length+\"+(Math.abs(t.arrayBlockIndices[0])-Math.abs(t.arrayBlockIndices[u]))),c.push(\"array\"+t.arrayArgs[0]+\".shape[shapeIndex+\"+Math.max(0,t.arrayBlockIndices[0])+\"]===array\"+f+\".shape[shapeIndex+\"+Math.max(0,t.arrayBlockIndices[u])+\"]\"))}t.arrayArgs.length>1&&(e.push(\"if (!(\"+l.join(\" && \")+\")) throw new Error('cwise: Arrays do not all have the same dimensionality!')\"),e.push(\"for(var shapeIndex=array\"+t.arrayArgs[0]+\".shape.length-\"+Math.abs(t.arrayBlockIndices[0])+\"; shapeIndex-->0;) {\"),e.push(\"if (!(\"+c.join(\" && \")+\")) throw new Error('cwise: Arrays do not all have the same shape!')\"),e.push(\"}\"));for(var u=0;ut?-1:t>e?1:t>=e?0:NaN}function a(t){return null===t?NaN:+t}function o(t){return!isNaN(t)}function s(t){return{left:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);i>n;){var a=n+i>>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);i>n;){var a=n+i>>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}function l(t){return t.length}function c(t){for(var e=1;t*e%1;)e*=10;return e}function u(t,e){for(var r in e)Object.defineProperty(t.prototype,r,{value:e[r],enumerable:!1})}function f(){this._=Object.create(null)}function h(t){return(t+=\"\")===ko||t[0]===Ao?Ao+t:t}function d(t){return(t+=\"\")[0]===Ao?t.slice(1):t}function p(t){return h(t)in this._}function g(t){return(t=h(t))in this._&&delete this._[t]}function v(){var t=[];for(var e in this._)t.push(d(e));return t}function m(){var t=0;for(var e in this._)++t;return t}function y(){for(var t in this._)return!1;return!0}function b(){this._=Object.create(null)}function x(t){return t}function _(t,e,r){return function(){var n=r.apply(e,arguments);return n===e?t:n}}function w(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var r=0,n=Mo.length;n>r;++r){var i=Mo[r]+e;if(i in t)return i}}function k(){}function A(){}function M(t){function e(){for(var e,n=r,i=-1,a=n.length;++ir;r++)for(var i,a=t[r],o=0,s=a.length;s>o;o++)(i=a[o])&&e(i,o,r);return t}function Y(t){return Eo(t,Oo),t}function X(t){var e,r;return function(n,i,a){var o,s=t[a].update,l=s.length;for(a!=r&&(r=a,e=0),i>=e&&(e=i+1);!(o=s[e])&&++e0&&(t=t.slice(0,s));var c=Io.get(t);return c&&(t=c,l=K),s?e?i:n:e?k:a}function Z(t,e){return function(r){var n=co.event;co.event=r,e[0]=this.__data__;try{t.apply(this,e)}finally{co.event=n}}}function K(t,e){var r=Z(t,e);return function(t){var e=this,n=t.relatedTarget;n&&(n===e||8&n.compareDocumentPosition(e))||r.call(e,t)}}function $(t){var r=\".dragsuppress-\"+ ++jo,i=\"click\"+r,a=co.select(n(t)).on(\"touchmove\"+r,T).on(\"dragstart\"+r,T).on(\"selectstart\"+r,T);if(null==No&&(No=\"onselectstart\"in t?!1:w(t.style,\"userSelect\")),No){var o=e(t).style,s=o[No];o[No]=\"none\"}return function(t){if(a.on(r,null),No&&(o[No]=s),t){var e=function(){a.on(i,null)};a.on(i,function(){T(),e()},!0),setTimeout(e,0)}}}function Q(t,e){e.changedTouches&&(e=e.changedTouches[0]);var r=t.ownerSVGElement||t;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Fo){var a=n(t);if(a.scrollX||a.scrollY){r=co.select(\"body\").append(\"svg\").style({position:\"absolute\",top:0,left:0,margin:0,padding:0,border:\"none\"},\"important\");var o=r[0][0].getScreenCTM();Fo=!(o.f||o.e),r.remove()}}return Fo?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(t.getScreenCTM().inverse()),[i.x,i.y]}var s=t.getBoundingClientRect();return[e.clientX-s.left-t.clientLeft,e.clientY-s.top-t.clientTop]}function J(){return co.event.changedTouches[0].identifier}function tt(t){return t>0?1:0>t?-1:0}function et(t,e,r){return(e[0]-t[0])*(r[1]-t[1])-(e[1]-t[1])*(r[0]-t[0])}function rt(t){return t>1?0:-1>t?Uo:Math.acos(t)}function nt(t){return t>1?Ho:-1>t?-Ho:Math.asin(t)}function it(t){return((t=Math.exp(t))-1/t)/2}function at(t){return((t=Math.exp(t))+1/t)/2}function ot(t){return((t=Math.exp(2*t))-1)/(t+1)}function st(t){return(t=Math.sin(t/2))*t}function lt(){}function ct(t,e,r){return this instanceof ct?(this.h=+t,this.s=+e,void(this.l=+r)):arguments.length<2?t instanceof ct?new ct(t.h,t.s,t.l):kt(\"\"+t,At,ct):new ct(t,e,r)}function ut(t,e,r){function n(t){return t>360?t-=360:0>t&&(t+=360),60>t?a+(o-a)*t/60:180>t?o:240>t?a+(o-a)*(240-t)/60:a}function i(t){return Math.round(255*n(t))}var a,o;return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)?0:0>e?0:e>1?1:e,r=0>r?0:r>1?1:r,o=.5>=r?r*(1+e):r+e-r*e,a=2*r-o,new bt(i(t+120),i(t),i(t-120))}function ft(t,e,r){return this instanceof ft?(this.h=+t,this.c=+e,void(this.l=+r)):arguments.length<2?t instanceof ft?new ft(t.h,t.c,t.l):t instanceof dt?gt(t.l,t.a,t.b):gt((t=Mt((t=co.rgb(t)).r,t.g,t.b)).l,t.a,t.b):new ft(t,e,r)}function ht(t,e,r){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new dt(r,Math.cos(t*=Go)*e,Math.sin(t)*e)}function dt(t,e,r){return this instanceof dt?(this.l=+t,this.a=+e,void(this.b=+r)):arguments.length<2?t instanceof dt?new dt(t.l,t.a,t.b):t instanceof ft?ht(t.h,t.c,t.l):Mt((t=bt(t)).r,t.g,t.b):new dt(t,e,r)}function pt(t,e,r){var n=(t+16)/116,i=n+e/500,a=n-r/200;return i=vt(i)*rs,n=vt(n)*ns,a=vt(a)*is,new bt(yt(3.2404542*i-1.5371385*n-.4985314*a),yt(-.969266*i+1.8760108*n+.041556*a),yt(.0556434*i-.2040259*n+1.0572252*a))}function gt(t,e,r){return t>0?new ft(Math.atan2(r,e)*Yo,Math.sqrt(e*e+r*r),t):new ft(NaN,NaN,t)}function vt(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function mt(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function yt(t){return Math.round(255*(.00304>=t?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function bt(t,e,r){return this instanceof bt?(this.r=~~t,this.g=~~e,void(this.b=~~r)):arguments.length<2?t instanceof bt?new bt(t.r,t.g,t.b):kt(\"\"+t,bt,ut):new bt(t,e,r)}function xt(t){return new bt(t>>16,t>>8&255,255&t)}function _t(t){return xt(t)+\"\"}function wt(t){return 16>t?\"0\"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function kt(t,e,r){var n,i,a,o=0,s=0,l=0;if(n=/([a-z]+)\\((.*)\\)/.exec(t=t.toLowerCase()))switch(i=n[2].split(\",\"),n[1]){case\"hsl\":return r(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case\"rgb\":return e(Et(i[0]),Et(i[1]),Et(i[2]))}return(a=ss.get(t))?e(a.r,a.g,a.b):(null==t||\"#\"!==t.charAt(0)||isNaN(a=parseInt(t.slice(1),16))||(4===t.length?(o=(3840&a)>>4,o=o>>4|o,s=240&a,s=s>>4|s,l=15&a,l=l<<4|l):7===t.length&&(o=(16711680&a)>>16,s=(65280&a)>>8,l=255&a)),e(o,s,l))}function At(t,e,r){var n,i,a=Math.min(t/=255,e/=255,r/=255),o=Math.max(t,e,r),s=o-a,l=(o+a)/2;return s?(i=.5>l?s/(o+a):s/(2-o-a),n=t==o?(e-r)/s+(r>e?6:0):e==o?(r-t)/s+2:(t-e)/s+4,n*=60):(n=NaN,i=l>0&&1>l?0:n),new ct(n,i,l)}function Mt(t,e,r){t=Tt(t),e=Tt(e),r=Tt(r);var n=mt((.4124564*t+.3575761*e+.1804375*r)/rs),i=mt((.2126729*t+.7151522*e+.072175*r)/ns),a=mt((.0193339*t+.119192*e+.9503041*r)/is);return dt(116*i-16,500*(n-i),200*(i-a))}function Tt(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Et(t){var e=parseFloat(t);return\"%\"===t.charAt(t.length-1)?Math.round(2.55*e):e}function Lt(t){return\"function\"==typeof t?t:function(){return t}}function St(t){return function(e,r,n){return 2===arguments.length&&\"function\"==typeof r&&(n=r,r=null),Ct(e,r,t,n)}}function Ct(t,e,r,n){function i(){var t,e=l.status;if(!e&&Pt(l)||e>=200&&300>e||304===e){try{t=r.call(a,l)}catch(n){return void o.error.call(a,n)}o.load.call(a,t)}else o.error.call(a,l)}var a={},o=co.dispatch(\"beforesend\",\"progress\",\"load\",\"error\"),s={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||\"withCredentials\"in l||!/^(http(s)?:)?\\/\\//.test(t)||(l=new XDomainRequest),\"onload\"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(t){var e=co.event;co.event=t;try{o.progress.call(a,l)}finally{co.event=e}},a.header=function(t,e){return t=(t+\"\").toLowerCase(),arguments.length<2?s[t]:(null==e?delete s[t]:s[t]=e+\"\",a)},a.mimeType=function(t){return arguments.length?(e=null==t?null:t+\"\",a):e},a.responseType=function(t){return arguments.length?(c=t,a):c},a.response=function(t){return r=t,a},[\"get\",\"post\"].forEach(function(t){a[t]=function(){return a.send.apply(a,[t].concat(fo(arguments)))}}),a.send=function(r,n,i){if(2===arguments.length&&\"function\"==typeof n&&(i=n,n=null),l.open(r,t,!0),null==e||\"accept\"in s||(s.accept=e+\",*/*\"),l.setRequestHeader)for(var u in s)l.setRequestHeader(u,s[u]);return null!=e&&l.overrideMimeType&&l.overrideMimeType(e),null!=c&&(l.responseType=c),null!=i&&a.on(\"error\",i).on(\"load\",function(t){i(null,t)}),o.beforesend.call(a,l),l.send(null==n?null:n),a},a.abort=function(){return l.abort(),a},co.rebind(a,o,\"on\"),null==n?a:a.get(zt(n))}function zt(t){return 1===t.length?function(e,r){t(null==e?r:null)}:t}function Pt(t){var e=t.responseType;return e&&\"text\"!==e?t.response:t.responseText}function Rt(t,e,r){var n=arguments.length;2>n&&(e=0),3>n&&(r=Date.now());var i=r+e,a={c:t,t:i,n:null};return cs?cs.n=a:ls=a,cs=a,us||(fs=clearTimeout(fs),us=1,hs(Ot)),a}function Ot(){var t=It(),e=Nt()-t;e>24?(isFinite(e)&&(clearTimeout(fs),fs=setTimeout(Ot,e)),us=0):(us=1,hs(Ot))}function It(){for(var t=Date.now(),e=ls;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function Nt(){for(var t,e=ls,r=1/0;e;)e.c?(e.t8?function(t){return t/r}:function(t){return t*r},symbol:t}}function Dt(t){var e=t.decimal,r=t.thousands,n=t.grouping,i=t.currency,a=n&&r?function(t,e){for(var i=t.length,a=[],o=0,s=n[0],l=0;i>0&&s>0&&(l+s+1>e&&(s=Math.max(1,e-l)),a.push(t.substring(i-=s,i+s)),!((l+=s+1)>e));)s=n[o=(o+1)%n.length];return a.reverse().join(r)}:x;return function(t){var r=ps.exec(t),n=r[1]||\" \",o=r[2]||\">\",s=r[3]||\"-\",l=r[4]||\"\",c=r[5],u=+r[6],f=r[7],h=r[8],d=r[9],p=1,g=\"\",v=\"\",m=!1,y=!0;switch(h&&(h=+h.substring(1)),(c||\"0\"===n&&\"=\"===o)&&(c=n=\"0\",o=\"=\"),d){case\"n\":f=!0,d=\"g\";break;case\"%\":p=100,v=\"%\",d=\"f\";break;case\"p\":p=100,v=\"%\",d=\"r\";break;case\"b\":case\"o\":case\"x\":case\"X\":\"#\"===l&&(g=\"0\"+d.toLowerCase());case\"c\":y=!1;case\"d\":m=!0,h=0;break;case\"s\":p=-1,d=\"r\"}\"$\"===l&&(g=i[0],v=i[1]),\"r\"!=d||h||(d=\"g\"),null!=h&&(\"g\"==d?h=Math.max(1,Math.min(21,h)):\"e\"!=d&&\"f\"!=d||(h=Math.max(0,Math.min(20,h)))),d=gs.get(d)||Bt;var b=c&&f;return function(t){var r=v;if(m&&t%1)return\"\";var i=0>t||0===t&&0>1/t?(t=-t,\"-\"):\"-\"===s?\"\":s;if(0>p){var l=co.formatPrefix(t,h);t=l.scale(t),r=l.symbol+v}else t*=p;t=d(t,h);var x,_,w=t.lastIndexOf(\".\");if(0>w){var k=y?t.lastIndexOf(\"e\"):-1;0>k?(x=t,_=\"\"):(x=t.substring(0,k),_=t.substring(k))}else x=t.substring(0,w),_=e+t.substring(w+1);!c&&f&&(x=a(x,1/0));var A=g.length+x.length+_.length+(b?0:i.length),M=u>A?new Array(A=u-A+1).join(n):\"\";return b&&(x=a(M+x,M.length?u-_.length:1/0)),i+=g,t=x+_,(\"<\"===o?i+t+M:\">\"===o?M+i+t:\"^\"===o?M.substring(0,A>>=1)+i+t+M.substring(A):i+(b?t:M+t))+r}}}function Bt(t){return t+\"\"}function Ut(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Vt(t,e,r){function n(e){var r=t(e),n=a(r,1);return n-e>e-r?r:n}function i(r){return e(r=t(new ms(r-1)),1),r}function a(t,r){return e(t=new ms(+t),r),t}function o(t,n,a){var o=i(t),s=[];if(a>1)for(;n>o;)r(o)%a||s.push(new Date(+o)),e(o,1);else for(;n>o;)s.push(new Date(+o)),e(o,1);return s}function s(t,e,r){try{ms=Ut;var n=new Ut;return n._=t,o(n,e,r)}finally{ms=Date}}t.floor=t,t.round=n,t.ceil=i,t.offset=a,t.range=o;var l=t.utc=qt(t);return l.floor=l,l.round=qt(n),l.ceil=qt(i),l.offset=qt(a),l.range=s,t}function qt(t){return function(e,r){try{ms=Ut;var n=new Ut;return n._=e,t(n,r)._}finally{ms=Date}}}function Ht(t){function e(t){function e(e){for(var r,i,a,o=[],s=-1,l=0;++ss;){if(n>=c)return-1;if(i=e.charCodeAt(s++),37===i){if(o=e.charAt(s++),a=S[o in bs?e.charAt(s++):o],!a||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}function n(t,e,r){w.lastIndex=0;var n=w.exec(e.slice(r));return n?(t.w=k.get(n[0].toLowerCase()),r+n[0].length):-1}function i(t,e,r){x.lastIndex=0;var n=x.exec(e.slice(r));return n?(t.w=_.get(n[0].toLowerCase()),r+n[0].length):-1}function a(t,e,r){T.lastIndex=0;var n=T.exec(e.slice(r));return n?(t.m=E.get(n[0].toLowerCase()),r+n[0].length):-1}function o(t,e,r){A.lastIndex=0;var n=A.exec(e.slice(r));return n?(t.m=M.get(n[0].toLowerCase()),r+n[0].length):-1}function s(t,e,n){return r(t,L.c.toString(),e,n)}function l(t,e,n){return r(t,L.x.toString(),e,n)}function c(t,e,n){return r(t,L.X.toString(),e,n)}function u(t,e,r){var n=b.get(e.slice(r,r+=2).toLowerCase());return null==n?-1:(t.p=n,r)}var f=t.dateTime,h=t.date,d=t.time,p=t.periods,g=t.days,v=t.shortDays,m=t.months,y=t.shortMonths;e.utc=function(t){function r(t){try{ms=Ut;var e=new ms;return e._=t,n(e)}finally{ms=Date}}var n=e(t);return r.parse=function(t){try{ms=Ut;var e=n.parse(t);return e&&e._}finally{ms=Date}},r.toString=n.toString,r},e.multi=e.utc.multi=ue;var b=co.map(),x=Yt(g),_=Xt(g),w=Yt(v),k=Xt(v),A=Yt(m),M=Xt(m),T=Yt(y),E=Xt(y);p.forEach(function(t,e){b.set(t.toLowerCase(),e)});var L={a:function(t){return v[t.getDay()]},A:function(t){return g[t.getDay()]},b:function(t){return y[t.getMonth()]},B:function(t){return m[t.getMonth()]},c:e(f),d:function(t,e){return Gt(t.getDate(),e,2)},e:function(t,e){return Gt(t.getDate(),e,2)},H:function(t,e){return Gt(t.getHours(),e,2)},I:function(t,e){return Gt(t.getHours()%12||12,e,2)},j:function(t,e){return Gt(1+vs.dayOfYear(t),e,3)},L:function(t,e){return Gt(t.getMilliseconds(),e,3)},m:function(t,e){return Gt(t.getMonth()+1,e,2)},M:function(t,e){return Gt(t.getMinutes(),e,2)},p:function(t){return p[+(t.getHours()>=12)]},S:function(t,e){return Gt(t.getSeconds(),e,2)},U:function(t,e){return Gt(vs.sundayOfYear(t),e,2)},w:function(t){return t.getDay()},W:function(t,e){return Gt(vs.mondayOfYear(t),e,2)},x:e(h),X:e(d),y:function(t,e){return Gt(t.getFullYear()%100,e,2)},Y:function(t,e){return Gt(t.getFullYear()%1e4,e,4)},Z:le,\"%\":function(){return\"%\"}},S={a:n,A:i,b:a,B:o,c:s,d:re,e:re,H:ie,I:ie,j:ne,L:se,m:ee,M:ae,p:u,S:oe,U:Zt,w:Wt,W:Kt,x:l,X:c,y:Qt,Y:$t,Z:Jt,\"%\":ce};return e}function Gt(t,e,r){var n=0>t?\"-\":\"\",i=(n?-t:t)+\"\",a=i.length;return n+(r>a?new Array(r-a+1).join(e)+i:i)}function Yt(t){return new RegExp(\"^(?:\"+t.map(co.requote).join(\"|\")+\")\",\"i\")}function Xt(t){for(var e=new f,r=-1,n=t.length;++r68?1900:2e3)}function ee(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function re(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function ne(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+3));return n?(t.j=+n[0],r+n[0].length):-1}function ie(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function ae(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function oe(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function se(t,e,r){xs.lastIndex=0;var n=xs.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function le(t){var e=t.getTimezoneOffset(),r=e>0?\"-\":\"+\",n=wo(e)/60|0,i=wo(e)%60;return r+Gt(n,\"0\",2)+Gt(i,\"0\",2)}function ce(t,e,r){_s.lastIndex=0;var n=_s.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function ue(t){for(var e=t.length,r=-1;++r=0?1:-1,s=o*r,l=Math.cos(e),c=Math.sin(e),u=a*c,f=i*l+u*Math.cos(s),h=u*o*Math.sin(s);Es.add(Math.atan2(h,f)),n=t,i=l,a=c}var e,r,n,i,a;Ls.point=function(o,s){Ls.point=t,n=(e=o)*Go,i=Math.cos(s=(r=s)*Go/2+Uo/4),a=Math.sin(s)},Ls.lineEnd=function(){t(e,r)}}function me(t){var e=t[0],r=t[1],n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}function ye(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function be(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function xe(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function _e(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function we(t){var e=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}function ke(t){return[Math.atan2(t[1],t[0]),nt(t[2])]}function Ae(t,e){return wo(t[0]-e[0])s;++s)i.point((r=t[s])[0],r[1]);return void i.lineEnd()}var l=new Oe(r,t,null,!0),c=new Oe(r,null,l,!1);l.o=c,a.push(l),o.push(c),l=new Oe(n,t,null,!1),c=new Oe(n,null,l,!0),l.o=c,a.push(l),o.push(c)}}),o.sort(e),Re(a),Re(o),a.length){for(var s=0,l=r,c=o.length;c>s;++s)o[s].e=l=!l;for(var u,f,h=a[0];;){for(var d=h,p=!0;d.v;)if((d=d.n)===h)return;u=d.z,i.lineStart();do{if(d.v=d.o.v=!0,d.e){if(p)for(var s=0,c=u.length;c>s;++s)i.point((f=u[s])[0],f[1]);else n(d.x,d.n.x,1,i);d=d.n}else{if(p){u=d.p.z;for(var s=u.length-1;s>=0;--s)i.point((f=u[s])[0],f[1])}else n(d.x,d.p.x,-1,i);d=d.p}d=d.o,u=d.z,p=!p}while(!d.v);i.lineEnd()}}}function Re(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n0){for(_||(a.polygonStart(),_=!0),a.lineStart();++o1&&2&e&&r.push(r.pop().concat(r.shift())),d.push(r.filter(Ne))}var d,p,g,v=e(a),m=i.invert(n[0],n[1]),y={point:o,lineStart:l,lineEnd:c,polygonStart:function(){y.point=u,y.lineStart=f,y.lineEnd=h,d=[],p=[]},polygonEnd:function(){y.point=o,y.lineStart=l,y.lineEnd=c,d=co.merge(d);var t=Ve(m,p);d.length?(_||(a.polygonStart(),_=!0),Pe(d,Fe,t,r,a)):t&&(_||(a.polygonStart(),_=!0),a.lineStart(),r(null,null,1,a),a.lineEnd()),_&&(a.polygonEnd(),_=!1),d=p=null},sphere:function(){a.polygonStart(),a.lineStart(),r(null,null,1,a),a.lineEnd(),a.polygonEnd()}},b=je(),x=e(b),_=!1;return y}}function Ne(t){return t.length>1}function je(){var t,e=[];return{lineStart:function(){e.push(t=[])},point:function(e,r){t.push([e,r])},lineEnd:k,buffer:function(){var r=e;return e=[],t=null,r},rejoin:function(){e.length>1&&e.push(e.pop().concat(e.shift()))}}}function Fe(t,e){return((t=t.x)[0]<0?t[1]-Ho-Do:Ho-t[1])-((e=e.x)[0]<0?e[1]-Ho-Do:Ho-e[1])}function De(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,o){var s=a>0?Uo:-Uo,l=wo(a-r);wo(l-Uo)0?Ho:-Ho),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(s,n),t.point(a,n),e=0):i!==s&&l>=Uo&&(wo(r-i)Do?Math.atan((Math.sin(e)*(a=Math.cos(n))*Math.sin(r)-Math.sin(n)*(i=Math.cos(e))*Math.sin(t))/(i*a*o)):(e+n)/2}function Ue(t,e,r,n){var i;if(null==t)i=r*Ho,n.point(-Uo,i),n.point(0,i),n.point(Uo,i),n.point(Uo,0),n.point(Uo,-i),n.point(0,-i),n.point(-Uo,-i),n.point(-Uo,0),n.point(-Uo,i);else if(wo(t[0]-e[0])>Do){var a=t[0]s;++s){var c=e[s],u=c.length;if(u)for(var f=c[0],h=f[0],d=f[1]/2+Uo/4,p=Math.sin(d),g=Math.cos(d),v=1;;){v===u&&(v=0),t=c[v];var m=t[0],y=t[1]/2+Uo/4,b=Math.sin(y),x=Math.cos(y),_=m-h,w=_>=0?1:-1,k=w*_,A=k>Uo,M=p*b;if(Es.add(Math.atan2(M*w*Math.sin(k),g*x+M*Math.cos(k))),a+=A?_+w*Vo:_,A^h>=r^m>=r){var T=be(me(f),me(t));we(T);var E=be(i,T);we(E);var L=(A^_>=0?-1:1)*nt(E[2]);(n>L||n===L&&(T[0]||T[1]))&&(o+=A^_>=0?1:-1)}if(!v++)break;h=m,p=b,g=x,f=t}}return(-Do>a||Do>a&&0>Es)^1&o}function qe(t){function e(t,e){return Math.cos(t)*Math.cos(e)>a}function r(t){var r,a,l,c,u;return{lineStart:function(){c=l=!1,u=1},point:function(f,h){var d,p=[f,h],g=e(f,h),v=o?g?0:i(f,h):g?i(f+(0>f?Uo:-Uo),h):0;if(!r&&(c=l=g)&&t.lineStart(),g!==l&&(d=n(r,p),(Ae(r,d)||Ae(p,d))&&(p[0]+=Do,p[1]+=Do,g=e(p[0],p[1]))),g!==l)u=0,g?(t.lineStart(),d=n(p,r),t.point(d[0],d[1])):(d=n(r,p),t.point(d[0],d[1]),t.lineEnd()),r=d;else if(s&&r&&o^g){var m;v&a||!(m=n(p,r,!0))||(u=0,o?(t.lineStart(),t.point(m[0][0],m[0][1]),t.point(m[1][0],m[1][1]),t.lineEnd()):(t.point(m[1][0],m[1][1]),t.lineEnd(),t.lineStart(),t.point(m[0][0],m[0][1])))}!g||r&&Ae(r,p)||t.point(p[0],p[1]),r=p,l=g,a=v},lineEnd:function(){l&&t.lineEnd(),r=null},clean:function(){return u|(c&&l)<<1}}}function n(t,e,r){var n=me(t),i=me(e),o=[1,0,0],s=be(n,i),l=ye(s,s),c=s[0],u=l-c*c;if(!u)return!r&&t;var f=a*l/u,h=-a*c/u,d=be(o,s),p=_e(o,f),g=_e(s,h);xe(p,g);var v=d,m=ye(p,v),y=ye(v,v),b=m*m-y*(ye(p,p)-1);if(!(0>b)){var x=Math.sqrt(b),_=_e(v,(-m-x)/y);if(xe(_,p),_=ke(_),!r)return _;var w,k=t[0],A=e[0],M=t[1],T=e[1];k>A&&(w=k,k=A,A=w);var E=A-k,L=wo(E-Uo)E;if(!L&&M>T&&(w=M,M=T,T=w),S?L?M+T>0^_[1]<(wo(_[0]-k)Uo^(k<=_[0]&&_[0]<=A)){var C=_e(v,(-m+x)/y);return xe(C,p),[_,ke(C)]}}}function i(e,r){var n=o?t:Uo-t,i=0;return-n>e?i|=1:e>n&&(i|=2),-n>r?i|=4:r>n&&(i|=8),i}var a=Math.cos(t),o=a>0,s=wo(a)>Do,l=vr(t,6*Go);return Ie(e,r,l,o?[0,-t]:[-Uo,t-Uo])}function He(t,e,r,n){return function(i){var a,o=i.a,s=i.b,l=o.x,c=o.y,u=s.x,f=s.y,h=0,d=1,p=u-l,g=f-c;if(a=t-l,p||!(a>0)){if(a/=p,0>p){if(h>a)return;d>a&&(d=a)}else if(p>0){if(a>d)return;a>h&&(h=a)}if(a=r-l,p||!(0>a)){if(a/=p,0>p){if(a>d)return;a>h&&(h=a)}else if(p>0){if(h>a)return;d>a&&(d=a)}if(a=e-c,g||!(a>0)){if(a/=g,0>g){if(h>a)return;d>a&&(d=a)}else if(g>0){if(a>d)return;a>h&&(h=a)}if(a=n-c,g||!(0>a)){if(a/=g,0>g){if(a>d)return;a>h&&(h=a)}else if(g>0){if(h>a)return;d>a&&(d=a)}return h>0&&(i.a={x:l+h*p,y:c+h*g}),1>d&&(i.b={x:l+d*p,y:c+d*g}),i}}}}}}function Ge(t,e,r,n){function i(n,i){return wo(n[0]-t)0?0:3:wo(n[0]-r)0?2:1:wo(n[1]-e)0?1:0:i>0?3:2}function a(t,e){return o(t.x,e.x)}function o(t,e){var r=i(t,1),n=i(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(s){function l(t){for(var e=0,r=v.length,n=t[1],i=0;r>i;++i)for(var a,o=1,s=v[i],l=s.length,c=s[0];l>o;++o)a=s[o],c[1]<=n?a[1]>n&&et(c,a,t)>0&&++e:a[1]<=n&&et(c,a,t)<0&&--e,c=a;return 0!==e}function c(a,s,l,c){var u=0,f=0;if(null==a||(u=i(a,l))!==(f=i(s,l))||o(a,s)<0^l>0){do c.point(0===u||3===u?t:r,u>1?n:e);while((u=(u+l+4)%4)!==f)}else c.point(s[0],s[1])}function u(i,a){return i>=t&&r>=i&&a>=e&&n>=a}function f(t,e){u(t,e)&&s.point(t,e)}function h(){S.point=p,v&&v.push(m=[]),A=!0,k=!1,_=w=NaN}function d(){g&&(p(y,b),x&&k&&E.rejoin(),g.push(E.buffer())),S.point=f,k&&s.lineEnd()}function p(t,e){t=Math.max(-Vs,Math.min(Vs,t)),e=Math.max(-Vs,Math.min(Vs,e));var r=u(t,e);if(v&&m.push([t,e]),A)y=t,b=e,x=r,A=!1,r&&(s.lineStart(),s.point(t,e));else if(r&&k)s.point(t,e);else{var n={a:{x:_,y:w},b:{x:t,y:e}};L(n)?(k||(s.lineStart(),s.point(n.a.x,n.a.y)),s.point(n.b.x,n.b.y),r||s.lineEnd(),M=!1):r&&(s.lineStart(),s.point(t,e),M=!1)}_=t,w=e,k=r}var g,v,m,y,b,x,_,w,k,A,M,T=s,E=je(),L=He(t,e,r,n),S={point:f,lineStart:h,lineEnd:d,polygonStart:function(){s=E,g=[],v=[],M=!0},polygonEnd:function(){s=T,g=co.merge(g);var e=l([t,n]),r=M&&e,i=g.length;(r||i)&&(s.polygonStart(),r&&(s.lineStart(),c(null,null,1,s),s.lineEnd()),i&&Pe(g,a,e,c,s),s.polygonEnd()),g=v=m=null}};return S}}function Ye(t){var e=0,r=Uo/3,n=lr(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*Uo/180,r=t[1]*Uo/180):[e/Uo*180,r/Uo*180]},i}function Xe(t,e){function r(t,e){var r=Math.sqrt(a-2*i*Math.sin(e))/i;return[r*Math.sin(t*=i),o-r*Math.cos(t)]}var n=Math.sin(t),i=(n+Math.sin(e))/2,a=1+n*(2*i-n),o=Math.sqrt(a)/i;return r.invert=function(t,e){var r=o-e;return[Math.atan2(t,r)/i,nt((a-(t*t+r*r)*i*i)/(2*i))]},r}function We(){function t(t,e){Hs+=i*t-n*e,n=t,i=e}var e,r,n,i;Zs.point=function(a,o){Zs.point=t,e=n=a,r=i=o},Zs.lineEnd=function(){t(e,r)}}function Ze(t,e){Gs>t&&(Gs=t),t>Xs&&(Xs=t),Ys>e&&(Ys=e),e>Ws&&(Ws=e)}function Ke(){function t(t,e){o.push(\"M\",t,\",\",e,a)}function e(t,e){o.push(\"M\",t,\",\",e),s.point=r}function r(t,e){o.push(\"L\",t,\",\",e)}function n(){s.point=t}function i(){o.push(\"Z\")}var a=$e(4.5),o=[],s={point:t,lineStart:function(){s.point=e},lineEnd:n,polygonStart:function(){s.lineEnd=i},polygonEnd:function(){s.lineEnd=n,s.point=t},pointRadius:function(t){return a=$e(t),s},result:function(){if(o.length){var t=o.join(\"\");return o=[],t}}};return s}function $e(t){return\"m0,\"+t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+-2*t+\"a\"+t+\",\"+t+\" 0 1,1 0,\"+2*t+\"z\"}function Qe(t,e){zs+=t,Ps+=e,++Rs}function Je(){function t(t,n){var i=t-e,a=n-r,o=Math.sqrt(i*i+a*a);Os+=o*(e+t)/2,Is+=o*(r+n)/2,Ns+=o,Qe(e=t,r=n)}var e,r;$s.point=function(n,i){$s.point=t,Qe(e=n,r=i)}}function tr(){$s.point=Qe}function er(){function t(t,e){var r=t-n,a=e-i,o=Math.sqrt(r*r+a*a);Os+=o*(n+t)/2,Is+=o*(i+e)/2,Ns+=o,o=i*t-n*e,js+=o*(n+t),Fs+=o*(i+e),Ds+=3*o,Qe(n=t,i=e)}var e,r,n,i;$s.point=function(a,o){$s.point=t,Qe(e=n=a,r=i=o)},$s.lineEnd=function(){t(e,r)}}function rr(t){function e(e,r){t.moveTo(e+o,r),t.arc(e,r,o,0,Vo)}function r(e,r){t.moveTo(e,r),s.point=n}function n(e,r){t.lineTo(e,r)}function i(){s.point=e}function a(){t.closePath()}var o=4.5,s={point:e,lineStart:function(){s.point=r},lineEnd:i,polygonStart:function(){s.lineEnd=a},polygonEnd:function(){s.lineEnd=i,s.point=e},pointRadius:function(t){return o=t,s},result:k};return s}function nr(t){function e(t){return(s?n:r)(t)}function r(e){return or(e,function(r,n){r=t(r,n),e.point(r[0],r[1])})}function n(e){function r(r,n){r=t(r,n),e.point(r[0],r[1])}function n(){b=NaN,A.point=a,e.lineStart()}function a(r,n){var a=me([r,n]),o=t(r,n);i(b,x,y,_,w,k,b=o[0],x=o[1],y=r,_=a[0],w=a[1],k=a[2],s,e),e.point(b,x)}function o(){A.point=r,e.lineEnd()}function l(){n(),A.point=c,A.lineEnd=u}function c(t,e){a(f=t,h=e),d=b,p=x,g=_,v=w,m=k,A.point=a}function u(){i(b,x,y,_,w,k,d,p,f,g,v,m,s,e),A.lineEnd=o,o()}var f,h,d,p,g,v,m,y,b,x,_,w,k,A={point:r,lineStart:n,lineEnd:o,polygonStart:function(){e.polygonStart(),A.lineStart=l},polygonEnd:function(){e.polygonEnd(),A.lineStart=n}};return A}function i(e,r,n,s,l,c,u,f,h,d,p,g,v,m){var y=u-e,b=f-r,x=y*y+b*b;if(x>4*a&&v--){var _=s+d,w=l+p,k=c+g,A=Math.sqrt(_*_+w*w+k*k),M=Math.asin(k/=A),T=wo(wo(k)-1)a||wo((y*C+b*z)/x-.5)>.3||o>s*d+l*p+c*g)&&(i(e,r,n,s,l,c,L,S,T,_/=A,w/=A,k,v,m),m.point(L,S),i(L,S,T,_,w,k,u,f,h,d,p,g,v,m))}}var a=.5,o=Math.cos(30*Go),s=16;return e.precision=function(t){return arguments.length?(s=(a=t*t)>0&&16,e):Math.sqrt(a)},e}function ir(t){var e=nr(function(e,r){return t([e*Yo,r*Yo])});return function(t){return cr(e(t))}}function ar(t){this.stream=t}function or(t,e){return{point:e,sphere:function(){t.sphere()},lineStart:function(){t.lineStart()},lineEnd:function(){t.lineEnd()},polygonStart:function(){t.polygonStart()},polygonEnd:function(){t.polygonEnd()}}}function sr(t){return lr(function(){return t})()}function lr(t){function e(t){return t=s(t[0]*Go,t[1]*Go),[t[0]*h+l,c-t[1]*h]}function r(t){return t=s.invert((t[0]-l)/h,(c-t[1])/h),t&&[t[0]*Yo,t[1]*Yo]}function n(){s=Ce(o=hr(m,y,b),a);var t=a(g,v);return l=d-t[0]*h,c=p+t[1]*h,i()}function i(){return u&&(u.valid=!1,u=null),e}var a,o,s,l,c,u,f=nr(function(t,e){return t=a(t,e),[t[0]*h+l,c-t[1]*h]}),h=150,d=480,p=250,g=0,v=0,m=0,y=0,b=0,_=Us,w=x,k=null,A=null;return e.stream=function(t){return u&&(u.valid=!1),u=cr(_(o,f(w(t)))),u.valid=!0,u},e.clipAngle=function(t){return arguments.length?(_=null==t?(k=t,Us):qe((k=+t)*Go),i()):k},e.clipExtent=function(t){return arguments.length?(A=t,w=t?Ge(t[0][0],t[0][1],t[1][0],t[1][1]):x,i()):A},e.scale=function(t){return arguments.length?(h=+t,n()):h},e.translate=function(t){return arguments.length?(d=+t[0],p=+t[1],n()):[d,p]},e.center=function(t){return arguments.length?(g=t[0]%360*Go,v=t[1]%360*Go,n()):[g*Yo,v*Yo]},e.rotate=function(t){return arguments.length?(m=t[0]%360*Go,y=t[1]%360*Go,b=t.length>2?t[2]%360*Go:0,n()):[m*Yo,y*Yo,b*Yo]},co.rebind(e,f,\"precision\"),function(){return a=t.apply(this,arguments),e.invert=a.invert&&r,n()}}function cr(t){return or(t,function(e,r){t.point(e*Go,r*Go)})}function ur(t,e){return[t,e]}function fr(t,e){return[t>Uo?t-Vo:-Uo>t?t+Vo:t,e]}function hr(t,e,r){return t?e||r?Ce(pr(t),gr(e,r)):pr(t):e||r?gr(e,r):fr}function dr(t){return function(e,r){return e+=t,[e>Uo?e-Vo:-Uo>e?e+Vo:e,r]}}function pr(t){var e=dr(t);return e.invert=dr(-t),e}function gr(t,e){function r(t,e){var r=Math.cos(e),s=Math.cos(t)*r,l=Math.sin(t)*r,c=Math.sin(e),u=c*n+s*i;return[Math.atan2(l*a-u*o,s*n-c*i),nt(u*a+l*o)]}var n=Math.cos(t),i=Math.sin(t),a=Math.cos(e),o=Math.sin(e);return r.invert=function(t,e){var r=Math.cos(e),s=Math.cos(t)*r,l=Math.sin(t)*r,c=Math.sin(e),u=c*a-l*o;return[Math.atan2(l*a+c*o,s*n+u*i),nt(u*n-s*i)]},r}function vr(t,e){var r=Math.cos(t),n=Math.sin(t);return function(i,a,o,s){var l=o*e;null!=i?(i=mr(r,i),a=mr(r,a),(o>0?a>i:i>a)&&(i+=o*Vo)):(i=t+o*Vo,a=t-.5*l);for(var c,u=i;o>0?u>a:a>u;u-=l)s.point((c=ke([r,-n*Math.cos(u),-n*Math.sin(u)]))[0],c[1])}}function mr(t,e){var r=me(e);r[0]-=t,we(r);var n=rt(-r[1]);return((-r[2]<0?-n:n)+2*Math.PI-Do)%(2*Math.PI)}function yr(t,e,r){var n=co.range(t,e-Do,r).concat(e);return function(t){return n.map(function(e){return[t,e]})}}function br(t,e,r){var n=co.range(t,e-Do,r).concat(e);return function(t){return n.map(function(e){return[e,t]})}}function xr(t){return t.source}function _r(t){return t.target}function wr(t,e,r,n){var i=Math.cos(e),a=Math.sin(e),o=Math.cos(n),s=Math.sin(n),l=i*Math.cos(t),c=i*Math.sin(t),u=o*Math.cos(r),f=o*Math.sin(r),h=2*Math.asin(Math.sqrt(st(n-e)+i*o*st(r-t))),d=1/Math.sin(h),p=h?function(t){var e=Math.sin(t*=h)*d,r=Math.sin(h-t)*d,n=r*l+e*u,i=r*c+e*f,o=r*a+e*s;return[Math.atan2(i,n)*Yo,Math.atan2(o,Math.sqrt(n*n+i*i))*Yo]}:function(){return[t*Yo,e*Yo]};return p.distance=h,p}function kr(){function t(t,i){var a=Math.sin(i*=Go),o=Math.cos(i),s=wo((t*=Go)-e),l=Math.cos(s);\n", + "Qs+=Math.atan2(Math.sqrt((s=o*Math.sin(s))*s+(s=n*a-r*o*l)*s),r*a+n*o*l),e=t,r=a,n=o}var e,r,n;Js.point=function(i,a){e=i*Go,r=Math.sin(a*=Go),n=Math.cos(a),Js.point=t},Js.lineEnd=function(){Js.point=Js.lineEnd=k}}function Ar(t,e){function r(e,r){var n=Math.cos(e),i=Math.cos(r),a=t(n*i);return[a*i*Math.sin(e),a*Math.sin(r)]}return r.invert=function(t,r){var n=Math.sqrt(t*t+r*r),i=e(n),a=Math.sin(i),o=Math.cos(i);return[Math.atan2(t*a,n*o),Math.asin(n&&r*a/n)]},r}function Mr(t,e){function r(t,e){o>0?-Ho+Do>e&&(e=-Ho+Do):e>Ho-Do&&(e=Ho-Do);var r=o/Math.pow(i(e),a);return[r*Math.sin(a*t),o-r*Math.cos(a*t)]}var n=Math.cos(t),i=function(t){return Math.tan(Uo/4+t/2)},a=t===e?Math.sin(t):Math.log(n/Math.cos(e))/Math.log(i(e)/i(t)),o=n*Math.pow(i(t),a)/a;return a?(r.invert=function(t,e){var r=o-e,n=tt(a)*Math.sqrt(t*t+r*r);return[Math.atan2(t,r)/a,2*Math.atan(Math.pow(o/n,1/a))-Ho]},r):Er}function Tr(t,e){function r(t,e){var r=a-e;return[r*Math.sin(i*t),a-r*Math.cos(i*t)]}var n=Math.cos(t),i=t===e?Math.sin(t):(n-Math.cos(e))/(e-t),a=n/i+t;return wo(i)i;i++){for(;n>1&&et(t[r[n-2]],t[r[n-1]],t[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function Rr(t,e){return t[0]-e[0]||t[1]-e[1]}function Or(t,e,r){return(r[0]-e[0])*(t[1]-e[1])<(r[1]-e[1])*(t[0]-e[0])}function Ir(t,e,r,n){var i=t[0],a=r[0],o=e[0]-i,s=n[0]-a,l=t[1],c=r[1],u=e[1]-l,f=n[1]-c,h=(s*(l-c)-f*(i-a))/(f*o-s*u);return[i+h*o,l+h*u]}function Nr(t){var e=t[0],r=t[t.length-1];return!(e[0]-r[0]||e[1]-r[1])}function jr(){an(this),this.edge=this.site=this.circle=null}function Fr(t){var e=fl.pop()||new jr;return e.site=t,e}function Dr(t){Zr(t),ll.remove(t),fl.push(t),an(t)}function Br(t){var e=t.circle,r=e.x,n=e.cy,i={x:r,y:n},a=t.P,o=t.N,s=[t];Dr(t);for(var l=a;l.circle&&wo(r-l.circle.x)u;++u)c=s[u],l=s[u-1],en(c.edge,l.site,c.site,i);l=s[0],c=s[f-1],c.edge=Jr(l.site,c.site,null,i),Wr(l),Wr(c)}function Ur(t){for(var e,r,n,i,a=t.x,o=t.y,s=ll._;s;)if(n=Vr(s,o)-a,n>Do)s=s.L;else{if(i=a-qr(s,o),!(i>Do)){n>-Do?(e=s.P,r=s):i>-Do?(e=s,r=s.N):e=r=s;break}if(!s.R){e=s;break}s=s.R}var l=Fr(t);if(ll.insert(e,l),e||r){if(e===r)return Zr(e),r=Fr(e.site),ll.insert(l,r),l.edge=r.edge=Jr(e.site,l.site),Wr(e),void Wr(r);if(!r)return void(l.edge=Jr(e.site,l.site));Zr(e),Zr(r);var c=e.site,u=c.x,f=c.y,h=t.x-u,d=t.y-f,p=r.site,g=p.x-u,v=p.y-f,m=2*(h*v-d*g),y=h*h+d*d,b=g*g+v*v,x={x:(v*y-d*b)/m+u,y:(h*b-g*y)/m+f};en(r.edge,c,p,x),l.edge=Jr(c,t,null,x),r.edge=Jr(t,p,null,x),Wr(e),Wr(r)}}function Vr(t,e){var r=t.site,n=r.x,i=r.y,a=i-e;if(!a)return n;var o=t.P;if(!o)return-(1/0);r=o.site;var s=r.x,l=r.y,c=l-e;if(!c)return s;var u=s-n,f=1/a-1/c,h=u/c;return f?(-h+Math.sqrt(h*h-2*f*(u*u/(-2*c)-l+c/2+i-a/2)))/f+n:(n+s)/2}function qr(t,e){var r=t.N;if(r)return Vr(r,e);var n=t.site;return n.y===e?n.x:1/0}function Hr(t){this.site=t,this.edges=[]}function Gr(t){for(var e,r,n,i,a,o,s,l,c,u,f=t[0][0],h=t[1][0],d=t[0][1],p=t[1][1],g=sl,v=g.length;v--;)if(a=g[v],a&&a.prepare())for(s=a.edges,l=s.length,o=0;l>o;)u=s[o].end(),n=u.x,i=u.y,c=s[++o%l].start(),e=c.x,r=c.y,(wo(n-e)>Do||wo(i-r)>Do)&&(s.splice(o,0,new rn(tn(a.site,u,wo(n-f)Do?{x:f,y:wo(e-f)Do?{x:wo(r-p)Do?{x:h,y:wo(e-h)Do?{x:wo(r-d)=-Bo)){var d=l*l+c*c,p=u*u+f*f,g=(f*d-c*p)/h,v=(l*p-u*d)/h,f=v+s,m=hl.pop()||new Xr;m.arc=t,m.site=i,m.x=g+o,m.y=f+Math.sqrt(g*g+v*v),m.cy=f,t.circle=m;for(var y=null,b=ul._;b;)if(m.yv||v>=s)return;if(h>p){if(a){if(a.y>=c)return}else a={x:v,y:l};r={x:v,y:c}}else{if(a){if(a.yn||n>1)if(h>p){if(a){if(a.y>=c)return}else a={x:(l-i)/n,y:l};r={x:(c-i)/n,y:c}}else{if(a){if(a.yd){if(a){if(a.x>=s)return}else a={x:o,y:n*o+i};r={x:s,y:n*s+i}}else{if(a){if(a.xa||f>o||n>h||i>d)){if(p=t.point){var p,g=e-t.x,v=r-t.y,m=g*g+v*v;if(l>m){var y=Math.sqrt(l=m);n=e-y,i=r-y,a=e+y,o=r+y,s=p}}for(var b=t.nodes,x=.5*(u+h),_=.5*(f+d),w=e>=x,k=r>=_,A=k<<1|w,M=A+4;M>A;++A)if(t=b[3&A])switch(3&A){case 0:c(t,u,f,x,_);break;case 1:c(t,x,f,h,_);break;case 2:c(t,u,_,x,d);break;case 3:c(t,x,_,h,d)}}}(t,n,i,a,o),s}function mn(t,e){t=co.rgb(t),e=co.rgb(e);var r=t.r,n=t.g,i=t.b,a=e.r-r,o=e.g-n,s=e.b-i;return function(t){return\"#\"+wt(Math.round(r+a*t))+wt(Math.round(n+o*t))+wt(Math.round(i+s*t))}}function yn(t,e){var r,n={},i={};for(r in t)r in e?n[r]=_n(t[r],e[r]):i[r]=t[r];for(r in e)r in t||(i[r]=e[r]);return function(t){for(r in n)i[r]=n[r](t);return i}}function bn(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}function xn(t,e){var r,n,i,a=pl.lastIndex=gl.lastIndex=0,o=-1,s=[],l=[];for(t+=\"\",e+=\"\";(r=pl.exec(t))&&(n=gl.exec(e));)(i=n.index)>a&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:bn(r,n)})),a=gl.lastIndex;return an;++n)s[(r=l[n]).i]=r.x(t);return s.join(\"\")})}function _n(t,e){for(var r,n=co.interpolators.length;--n>=0&&!(r=co.interpolators[n](t,e)););return r}function wn(t,e){var r,n=[],i=[],a=t.length,o=e.length,s=Math.min(t.length,e.length);for(r=0;s>r;++r)n.push(_n(t[r],e[r]));for(;a>r;++r)i[r]=t[r];for(;o>r;++r)i[r]=e[r];return function(t){for(r=0;s>r;++r)i[r]=n[r](t);return i}}function kn(t){return function(e){return 0>=e?0:e>=1?1:t(e)}}function An(t){return function(e){return 1-t(1-e)}}function Mn(t){return function(e){return.5*(.5>e?t(2*e):2-t(2-2*e))}}function Tn(t){return t*t}function En(t){return t*t*t}function Ln(t){if(0>=t)return 0;if(t>=1)return 1;var e=t*t,r=e*t;return 4*(.5>t?r:3*(t-e)+r-.75)}function Sn(t){return function(e){return Math.pow(e,t)}}function Cn(t){return 1-Math.cos(t*Ho)}function zn(t){return Math.pow(2,10*(t-1))}function Pn(t){return 1-Math.sqrt(1-t*t)}function Rn(t,e){var r;return arguments.length<2&&(e=.45),arguments.length?r=e/Vo*Math.asin(1/t):(t=1,r=e/4),function(n){return 1+t*Math.pow(2,-10*n)*Math.sin((n-r)*Vo/e)}}function On(t){return t||(t=1.70158),function(e){return e*e*((t+1)*e-t)}}function In(t){return 1/2.75>t?7.5625*t*t:2/2.75>t?7.5625*(t-=1.5/2.75)*t+.75:2.5/2.75>t?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function Nn(t,e){t=co.hcl(t),e=co.hcl(e);var r=t.h,n=t.c,i=t.l,a=e.h-r,o=e.c-n,s=e.l-i;return isNaN(o)&&(o=0,n=isNaN(n)?e.c:n),isNaN(a)?(a=0,r=isNaN(r)?e.h:r):a>180?a-=360:-180>a&&(a+=360),function(t){return ht(r+a*t,n+o*t,i+s*t)+\"\"}}function jn(t,e){t=co.hsl(t),e=co.hsl(e);var r=t.h,n=t.s,i=t.l,a=e.h-r,o=e.s-n,s=e.l-i;return isNaN(o)&&(o=0,n=isNaN(n)?e.s:n),isNaN(a)?(a=0,r=isNaN(r)?e.h:r):a>180?a-=360:-180>a&&(a+=360),function(t){return ut(r+a*t,n+o*t,i+s*t)+\"\"}}function Fn(t,e){t=co.lab(t),e=co.lab(e);var r=t.l,n=t.a,i=t.b,a=e.l-r,o=e.a-n,s=e.b-i;return function(t){return pt(r+a*t,n+o*t,i+s*t)+\"\"}}function Dn(t,e){return e-=t,function(r){return Math.round(t+e*r)}}function Bn(t){var e=[t.a,t.b],r=[t.c,t.d],n=Vn(e),i=Un(e,r),a=Vn(qn(r,e,-i))||0;e[0]*r[1]180?e+=360:e-t>180&&(t+=360),n.push({i:r.push(Hn(r)+\"rotate(\",null,\")\")-2,x:bn(t,e)})):e&&r.push(Hn(r)+\"rotate(\"+e+\")\")}function Xn(t,e,r,n){t!==e?n.push({i:r.push(Hn(r)+\"skewX(\",null,\")\")-2,x:bn(t,e)}):e&&r.push(Hn(r)+\"skewX(\"+e+\")\")}function Wn(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push(Hn(r)+\"scale(\",null,\",\",null,\")\");n.push({i:i-4,x:bn(t[0],e[0])},{i:i-2,x:bn(t[1],e[1])})}else 1===e[0]&&1===e[1]||r.push(Hn(r)+\"scale(\"+e+\")\")}function Zn(t,e){var r=[],n=[];return t=co.transform(t),e=co.transform(e),Gn(t.translate,e.translate,r,n),Yn(t.rotate,e.rotate,r,n),Xn(t.skew,e.skew,r,n),Wn(t.scale,e.scale,r,n),t=e=null,function(t){for(var e,i=-1,a=n.length;++i=0;)r.push(i[n])}function li(t,e){for(var r=[t],n=[];null!=(t=r.pop());)if(n.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++or;++r)(e=t[r][1])>i&&(n=r,i=e);return n}function bi(t){return t.reduce(xi,0)}function xi(t,e){return t+e[1]}function _i(t,e){return wi(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function wi(t,e){for(var r=-1,n=+t[0],i=(t[1]-n)/e,a=[];++r<=e;)a[r]=i*r+n;return a}function ki(t){return[co.min(t),co.max(t)]}function Ai(t,e){return t.value-e.value}function Mi(t,e){var r=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=r,r._pack_prev=e}function Ti(t,e){t._pack_next=e,e._pack_prev=t}function Ei(t,e){var r=e.x-t.x,n=e.y-t.y,i=t.r+e.r;return.999*i*i>r*r+n*n}function Li(t){function e(t){u=Math.min(t.x-t.r,u),f=Math.max(t.x+t.r,f),h=Math.min(t.y-t.r,h),d=Math.max(t.y+t.r,d)}if((r=t.children)&&(c=r.length)){var r,n,i,a,o,s,l,c,u=1/0,f=-(1/0),h=1/0,d=-(1/0);if(r.forEach(Si),n=r[0],n.x=-n.r,n.y=0,e(n),c>1&&(i=r[1],i.x=i.r,i.y=0,e(i),c>2))for(a=r[2],Pi(n,i,a),e(a),Mi(n,a),n._pack_prev=a,Mi(a,i),i=n._pack_next,o=3;c>o;o++){Pi(n,i,a=r[o]);var p=0,g=1,v=1;for(s=i._pack_next;s!==i;s=s._pack_next,g++)if(Ei(s,a)){p=1;break}if(1==p)for(l=n._pack_prev;l!==s._pack_prev&&!Ei(l,a);l=l._pack_prev,v++);p?(v>g||g==v&&i.ro;o++)a=r[o],a.x-=m,a.y-=y,b=Math.max(b,a.r+Math.sqrt(a.x*a.x+a.y*a.y));t.r=b,r.forEach(Ci)}}function Si(t){t._pack_next=t._pack_prev=t}function Ci(t){delete t._pack_next,delete t._pack_prev}function zi(t,e,r,n){var i=t.children;if(t.x=e+=n*t.x,t.y=r+=n*t.y,t.r*=n,i)for(var a=-1,o=i.length;++a=0;)e=i[a],e.z+=r,e.m+=r,r+=e.s+(n+=e.c)}function Fi(t,e,r){return t.a.parent===e.parent?t.a:r}function Di(t){return 1+co.max(t,function(t){return t.y})}function Bi(t){return t.reduce(function(t,e){return t+e.x},0)/t.length}function Ui(t){var e=t.children;return e&&e.length?Ui(e[0]):t}function Vi(t){var e,r=t.children;return r&&(e=r.length)?Vi(r[e-1]):t}function qi(t){return{x:t.x,y:t.y,dx:t.dx,dy:t.dy}}function Hi(t,e){var r=t.x+e[3],n=t.y+e[0],i=t.dx-e[1]-e[3],a=t.dy-e[0]-e[2];return 0>i&&(r+=i/2,i=0),0>a&&(n+=a/2,a=0),{x:r,y:n,dx:i,dy:a}}function Gi(t){var e=t[0],r=t[t.length-1];return r>e?[e,r]:[r,e]}function Yi(t){return t.rangeExtent?t.rangeExtent():Gi(t.range())}function Xi(t,e,r,n){var i=r(t[0],t[1]),a=n(e[0],e[1]);return function(t){return a(i(t))}}function Wi(t,e){var r,n=0,i=t.length-1,a=t[n],o=t[i];return a>o&&(r=n,n=i,i=r,r=a,a=o,o=r),t[n]=e.floor(a),t[i]=e.ceil(o),t}function Zi(t){return t?{floor:function(e){return Math.floor(e/t)*t},ceil:function(e){return Math.ceil(e/t)*t}}:Tl}function Ki(t,e,r,n){var i=[],a=[],o=0,s=Math.min(t.length,e.length)-1;for(t[s]2?Ki:Xi,l=n?$n:Kn;return o=i(t,e,l,r),s=i(e,t,l,_n),a}function a(t){return o(t)}var o,s;return a.invert=function(t){return s(t)},a.domain=function(e){return arguments.length?(t=e.map(Number),i()):t},a.range=function(t){return arguments.length?(e=t,i()):e},a.rangeRound=function(t){return a.range(t).interpolate(Dn)},a.clamp=function(t){return arguments.length?(n=t,i()):n},a.interpolate=function(t){return arguments.length?(r=t,i()):r},a.ticks=function(e){return ea(t,e)},a.tickFormat=function(e,r){return ra(t,e,r)},a.nice=function(e){return Ji(t,e),i()},a.copy=function(){return $i(t,e,r,n)},i()}function Qi(t,e){return co.rebind(t,e,\"range\",\"rangeRound\",\"interpolate\",\"clamp\")}function Ji(t,e){return Wi(t,Zi(ta(t,e)[2])),Wi(t,Zi(ta(t,e)[2])),t}function ta(t,e){null==e&&(e=10);var r=Gi(t),n=r[1]-r[0],i=Math.pow(10,Math.floor(Math.log(n/e)/Math.LN10)),a=e/n*i;return.15>=a?i*=10:.35>=a?i*=5:.75>=a&&(i*=2),r[0]=Math.ceil(r[0]/i)*i,r[1]=Math.floor(r[1]/i)*i+.5*i,r[2]=i,r}function ea(t,e){return co.range.apply(co,ta(t,e))}function ra(t,e,r){var n=ta(t,e);if(r){var i=ps.exec(r);if(i.shift(),\"s\"===i[8]){var a=co.formatPrefix(Math.max(wo(n[0]),wo(n[1])));return i[7]||(i[7]=\".\"+na(a.scale(n[2]))),i[8]=\"f\",r=co.format(i.join(\"\")),function(t){return r(a.scale(t))+a.symbol}}i[7]||(i[7]=\".\"+ia(i[8],n)),r=i.join(\"\")}else r=\",.\"+na(n[2])+\"f\";return co.format(r)}function na(t){return-Math.floor(Math.log(t)/Math.LN10+.01)}function ia(t,e){var r=na(e[2]);return t in El?Math.abs(r-na(Math.max(wo(e[0]),wo(e[1]))))+ +(\"e\"!==t):r-2*(\"%\"===t)}function aa(t,e,r,n){function i(t){return(r?Math.log(0>t?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return r?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(r=e[0]>=0,t.domain((n=e.map(Number)).map(i)),o):n},o.base=function(r){return arguments.length?(e=+r,t.domain(n.map(i)),o):e},o.nice=function(){var e=Wi(n.map(i),r?Math:Sl);return t.domain(e),n=e.map(a),o},o.ticks=function(){var t=Gi(n),o=[],s=t[0],l=t[1],c=Math.floor(i(s)),u=Math.ceil(i(l)),f=e%1?2:e;if(isFinite(u-c)){if(r){for(;u>c;c++)for(var h=1;f>h;h++)o.push(a(c)*h);o.push(a(c))}else for(o.push(a(c));c++0;h--)o.push(a(c)*h);for(c=0;o[c]l;u--);o=o.slice(c,u)}return o},o.tickFormat=function(t,r){if(!arguments.length)return Ll;arguments.length<2?r=Ll:\"function\"!=typeof r&&(r=co.format(r));var n=Math.max(1,e*t/o.ticks().length);return function(t){var o=t/a(Math.round(i(t)));return e-.5>o*e&&(o*=e),n>=o?r(t):\"\"}},o.copy=function(){return aa(t.copy(),e,r,n)},Qi(o,t)}function oa(t,e,r){function n(e){return t(i(e))}var i=sa(e),a=sa(1/e);return n.invert=function(e){return a(t.invert(e))},n.domain=function(e){return arguments.length?(t.domain((r=e.map(Number)).map(i)),n):r},n.ticks=function(t){return ea(r,t)},n.tickFormat=function(t,e){return ra(r,t,e)},n.nice=function(t){return n.domain(Ji(r,t))},n.exponent=function(o){return arguments.length?(i=sa(e=o),a=sa(1/e),t.domain(r.map(i)),n):e},n.copy=function(){return oa(t.copy(),e,r)},Qi(n,t)}function sa(t){return function(e){return 0>e?-Math.pow(-e,t):Math.pow(e,t)}}function la(t,e){function r(r){return a[((i.get(r)||(\"range\"===e.t?i.set(r,t.push(r)):NaN))-1)%a.length]}function n(e,r){return co.range(t.length).map(function(t){return e+r*t})}var i,a,o;return r.domain=function(n){if(!arguments.length)return t;t=[],i=new f;for(var a,o=-1,s=n.length;++or?[NaN,NaN]:[r>0?s[r-1]:t[0],re?NaN:e/a+t,[e,e+1/a]},n.copy=function(){return ua(t,e,r)},i()}function fa(t,e){function r(r){return r>=r?e[co.bisect(t,r)]:void 0}return r.domain=function(e){return arguments.length?(t=e,r):t},r.range=function(t){return arguments.length?(e=t,r):e},r.invertExtent=function(r){return r=e.indexOf(r),[t[r-1],t[r]]},r.copy=function(){return fa(t,e)},r}function ha(t){function e(t){return+t}return e.invert=e,e.domain=e.range=function(r){return arguments.length?(t=r.map(e),e):t},e.ticks=function(e){return ea(t,e)},e.tickFormat=function(e,r){return ra(t,e,r)},e.copy=function(){return ha(t)},e}function da(){return 0}function pa(t){return t.innerRadius}function ga(t){return t.outerRadius}function va(t){return t.startAngle}function ma(t){return t.endAngle}function ya(t){return t&&t.padAngle}function ba(t,e,r,n){return(t-r)*e-(e-n)*t>0?0:1}function xa(t,e,r,n,i){var a=t[0]-e[0],o=t[1]-e[1],s=(i?n:-n)/Math.sqrt(a*a+o*o),l=s*o,c=-s*a,u=t[0]+l,f=t[1]+c,h=e[0]+l,d=e[1]+c,p=(u+h)/2,g=(f+d)/2,v=h-u,m=d-f,y=v*v+m*m,b=r-n,x=u*d-h*f,_=(0>m?-1:1)*Math.sqrt(Math.max(0,b*b*y-x*x)),w=(x*m-v*_)/y,k=(-x*v-m*_)/y,A=(x*m+v*_)/y,M=(-x*v+m*_)/y,T=w-p,E=k-g,L=A-p,S=M-g;return T*T+E*E>L*L+S*S&&(w=A,k=M),[[w-l,k-c],[w*r/b,k*r/b]]}function _a(t){function e(e){function o(){c.push(\"M\",a(t(u),s))}for(var l,c=[],u=[],f=-1,h=e.length,d=Lt(r),p=Lt(n);++f1?t.join(\"L\"):t+\"Z\"}function ka(t){return t.join(\"L\")+\"Z\"}function Aa(t){for(var e=0,r=t.length,n=t[0],i=[n[0],\",\",n[1]];++e1&&i.push(\"H\",n[0]),i.join(\"\")}function Ma(t){for(var e=0,r=t.length,n=t[0],i=[n[0],\",\",n[1]];++e1){s=e[1],a=t[l],l++,n+=\"C\"+(i[0]+o[0])+\",\"+(i[1]+o[1])+\",\"+(a[0]-s[0])+\",\"+(a[1]-s[1])+\",\"+a[0]+\",\"+a[1];for(var c=2;c9&&(i=3*e/Math.sqrt(i),o[s]=i*r,o[s+1]=i*n));for(s=-1;++s<=l;)i=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+o[s]*o[s])),a.push([i||0,o[s]*i||0]);return a}function Ua(t){return t.length<3?wa(t):t[0]+Ca(t,Ba(t))}function Va(t){for(var e,r,n,i=-1,a=t.length;++i=e?o(t-e):void(c.c=o)}function o(r){var i=p.active,a=p[i];a&&(a.timer.c=null,a.timer.t=NaN,--p.count,delete p[i],a.event&&a.event.interrupt.call(t,t.__data__,a.index));for(var o in p)if(n>+o){var f=p[o];f.timer.c=null,f.timer.t=NaN,--p.count,delete p[o]}c.c=s,Rt(function(){return c.c&&s(r||1)&&(c.c=null,c.t=NaN),1},0,l),p.active=n,g.event&&g.event.start.call(t,t.__data__,e),d=[],g.tween.forEach(function(r,n){(n=n.call(t,t.__data__,e))&&d.push(n)}),h=g.ease,u=g.duration}function s(i){for(var a=i/u,o=h(a),s=d.length;s>0;)d[--s].call(t,o);return a>=1?(g.event&&g.event.end.call(t,t.__data__,e),--p.count?delete p[n]:delete t[r],1):void 0}var l,c,u,h,d,p=t[r]||(t[r]={active:0,count:0}),g=p[n];g||(l=i.time,c=Rt(a,0,l),g=p[n]={tween:new f,time:l,timer:c,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++p.count)}function ro(t,e,r){t.attr(\"transform\",function(t){var n=e(t);return\"translate(\"+(isFinite(n)?n:r(t))+\",0)\"})}function no(t,e,r){t.attr(\"transform\",function(t){var n=e(t);return\"translate(0,\"+(isFinite(n)?n:r(t))+\")\"})}function io(t){return t.toISOString()}function ao(t,e,r){function n(e){return t(e)}function i(t,r){var n=t[1]-t[0],i=n/r,a=co.bisect(tc,i);return a==tc.length?[e.year,ta(t.map(function(t){return t/31536e6}),r)[2]]:a?e[i/tc[a-1]1?{floor:function(e){for(;r(e=t.floor(e));)e=oo(e-1);return e},ceil:function(e){for(;r(e=t.ceil(e));)e=oo(+e+1);return e}}:t))},n.ticks=function(t,e){var r=Gi(n.domain()),a=null==t?i(r,10):\"number\"==typeof t?i(r,t):!t.range&&[{range:t},e];return a&&(t=a[0],e=a[1]),t.range(r[0],oo(+r[1]+1),1>e?1:e)},n.tickFormat=function(){return r},n.copy=function(){return ao(t.copy(),e,r)},Qi(n,t)}function oo(t){return new Date(t)}function so(t){return JSON.parse(t.responseText)}function lo(t){var e=ho.createRange();return e.selectNode(ho.body),e.createContextualFragment(t.responseText)}var co={version:\"3.5.16\"},uo=[].slice,fo=function(t){return uo.call(t);\n", + "},ho=this.document;if(ho)try{fo(ho.documentElement.childNodes)[0].nodeType}catch(po){fo=function(t){for(var e=t.length,r=new Array(e);e--;)r[e]=t[e];return r}}if(Date.now||(Date.now=function(){return+new Date}),ho)try{ho.createElement(\"DIV\").style.setProperty(\"opacity\",0,\"\")}catch(go){var vo=this.Element.prototype,mo=vo.setAttribute,yo=vo.setAttributeNS,bo=this.CSSStyleDeclaration.prototype,xo=bo.setProperty;vo.setAttribute=function(t,e){mo.call(this,t,e+\"\")},vo.setAttributeNS=function(t,e,r){yo.call(this,t,e,r+\"\")},bo.setProperty=function(t,e,r){xo.call(this,t,e+\"\",r)}}co.ascending=i,co.descending=function(t,e){return t>e?-1:e>t?1:e>=t?0:NaN},co.min=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++in&&(r=n)}else{for(;++i=n){r=n;break}for(;++in&&(r=n)}return r},co.max=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++ir&&(r=n)}else{for(;++i=n){r=n;break}for(;++ir&&(r=n)}return r},co.extent=function(t,e){var r,n,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=n){r=i=n;break}for(;++an&&(r=n),n>i&&(i=n))}else{for(;++a=n){r=i=n;break}for(;++an&&(r=n),n>i&&(i=n))}return[r,i]},co.sum=function(t,e){var r,n=0,i=t.length,a=-1;if(1===arguments.length)for(;++a1?l/(u-1):void 0},co.deviation=function(){var t=co.variance.apply(this,arguments);return t?Math.sqrt(t):t};var _o=s(i);co.bisectLeft=_o.left,co.bisect=co.bisectRight=_o.right,co.bisector=function(t){return s(1===t.length?function(e,r){return i(t(e),r)}:t)},co.shuffle=function(t,e,r){(a=arguments.length)<3&&(r=t.length,2>a&&(e=0));for(var n,i,a=r-e;a;)i=Math.random()*a--|0,n=t[a+e],t[a+e]=t[i+e],t[i+e]=n;return t},co.permute=function(t,e){for(var r=e.length,n=new Array(r);r--;)n[r]=t[e[r]];return n},co.pairs=function(t){for(var e,r=0,n=t.length-1,i=t[0],a=new Array(0>n?0:n);n>r;)a[r]=[e=i,i=t[++r]];return a},co.transpose=function(t){if(!(i=t.length))return[];for(var e=-1,r=co.min(t,l),n=new Array(r);++e=0;)for(n=t[i],e=n.length;--e>=0;)r[--o]=n[e];return r};var wo=Math.abs;co.range=function(t,e,r){if(arguments.length<3&&(r=1,arguments.length<2&&(e=t,t=0)),(e-t)/r===1/0)throw new Error(\"infinite range\");var n,i=[],a=c(wo(r)),o=-1;if(t*=a,e*=a,r*=a,0>r)for(;(n=t+r*++o)>e;)i.push(n/a);else for(;(n=t+r*++o)=a.length)return n?n.call(i,o):r?o.sort(r):o;for(var l,c,u,h,d=-1,p=o.length,g=a[s++],v=new f;++d=a.length)return t;var n=[],i=o[r++];return t.forEach(function(t,i){n.push({key:t,values:e(i,r)})}),i?n.sort(function(t,e){return i(t.key,e.key)}):n}var r,n,i={},a=[],o=[];return i.map=function(e,r){return t(r,e,0)},i.entries=function(r){return e(t(co.map,r,0),0)},i.key=function(t){return a.push(t),i},i.sortKeys=function(t){return o[a.length-1]=t,i},i.sortValues=function(t){return r=t,i},i.rollup=function(t){return n=t,i},i},co.set=function(t){var e=new b;if(t)for(var r=0,n=t.length;n>r;++r)e.add(t[r]);return e},u(b,{has:p,add:function(t){return this._[h(t+=\"\")]=!0,t},remove:g,values:v,size:m,empty:y,forEach:function(t){for(var e in this._)t.call(this,d(e))}}),co.behavior={},co.rebind=function(t,e){for(var r,n=1,i=arguments.length;++n=0&&(n=t.slice(r+1),t=t.slice(0,r)),t)return arguments.length<2?this[t].on(n):this[t].on(n,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(n,null);return this}},co.event=null,co.requote=function(t){return t.replace(To,\"\\\\$&\")};var To=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g,Eo={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var r in e)t[r]=e[r]},Lo=function(t,e){return e.querySelector(t)},So=function(t,e){return e.querySelectorAll(t)},Co=function(t,e){var r=t.matches||t[w(t,\"matchesSelector\")];return(Co=function(t,e){return r.call(t,e)})(t,e)};\"function\"==typeof Sizzle&&(Lo=function(t,e){return Sizzle(t,e)[0]||null},So=Sizzle,Co=Sizzle.matchesSelector),co.selection=function(){return co.select(ho.documentElement)};var zo=co.selection.prototype=[];zo.select=function(t){var e,r,n,i,a=[];t=C(t);for(var o=-1,s=this.length;++o=0&&\"xmlns\"!==(r=t.slice(0,e))&&(t=t.slice(e+1)),Ro.hasOwnProperty(r)?{space:Ro[r],local:t}:t}},zo.attr=function(t,e){if(arguments.length<2){if(\"string\"==typeof t){var r=this.node();return t=co.ns.qualify(t),t.local?r.getAttributeNS(t.space,t.local):r.getAttribute(t)}for(e in t)this.each(P(e,t[e]));return this}return this.each(P(t,e))},zo.classed=function(t,e){if(arguments.length<2){if(\"string\"==typeof t){var r=this.node(),n=(t=I(t)).length,i=-1;if(e=r.classList){for(;++ii){if(\"string\"!=typeof t){2>i&&(e=\"\");for(r in t)this.each(F(r,t[r],e));return this}if(2>i){var a=this.node();return n(a).getComputedStyle(a,null).getPropertyValue(t)}r=\"\"}return this.each(F(t,e,r))},zo.property=function(t,e){if(arguments.length<2){if(\"string\"==typeof t)return this.node()[t];for(e in t)this.each(D(e,t[e]));return this}return this.each(D(t,e))},zo.text=function(t){return arguments.length?this.each(\"function\"==typeof t?function(){var e=t.apply(this,arguments);this.textContent=null==e?\"\":e}:null==t?function(){this.textContent=\"\"}:function(){this.textContent=t}):this.node().textContent},zo.html=function(t){return arguments.length?this.each(\"function\"==typeof t?function(){var e=t.apply(this,arguments);this.innerHTML=null==e?\"\":e}:null==t?function(){this.innerHTML=\"\"}:function(){this.innerHTML=t}):this.node().innerHTML},zo.append=function(t){return t=B(t),this.select(function(){return this.appendChild(t.apply(this,arguments))})},zo.insert=function(t,e){return t=B(t),e=C(e),this.select(function(){return this.insertBefore(t.apply(this,arguments),e.apply(this,arguments)||null)})},zo.remove=function(){return this.each(U)},zo.data=function(t,e){function r(t,r){var n,i,a,o=t.length,u=r.length,h=Math.min(o,u),d=new Array(u),p=new Array(u),g=new Array(o);if(e){var v,m=new f,y=new Array(o);for(n=-1;++nn;++n)p[n]=V(r[n]);for(;o>n;++n)g[n]=t[n]}p.update=d,p.parentNode=d.parentNode=g.parentNode=t.parentNode,s.push(p),l.push(d),c.push(g)}var n,i,a=-1,o=this.length;if(!arguments.length){for(t=new Array(o=(n=this[0]).length);++aa;a++){i.push(e=[]),e.parentNode=(r=this[a]).parentNode;for(var s=0,l=r.length;l>s;s++)(n=r[s])&&t.call(n,n.__data__,s,a)&&e.push(n)}return S(i)},zo.order=function(){for(var t=-1,e=this.length;++t=0;)(r=n[i])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},zo.sort=function(t){t=H.apply(this,arguments);for(var e=-1,r=this.length;++et;t++)for(var r=this[t],n=0,i=r.length;i>n;n++){var a=r[n];if(a)return a}return null},zo.size=function(){var t=0;return G(this,function(){++t}),t};var Oo=[];co.selection.enter=Y,co.selection.enter.prototype=Oo,Oo.append=zo.append,Oo.empty=zo.empty,Oo.node=zo.node,Oo.call=zo.call,Oo.size=zo.size,Oo.select=function(t){for(var e,r,n,i,a,o=[],s=-1,l=this.length;++sn){if(\"string\"!=typeof t){2>n&&(e=!1);for(r in t)this.each(W(r,t[r],e));return this}if(2>n)return(n=this.node()[\"__on\"+t])&&n._;r=!1}return this.each(W(t,e,r))};var Io=co.map({mouseenter:\"mouseover\",mouseleave:\"mouseout\"});ho&&Io.forEach(function(t){\"on\"+t in ho&&Io.remove(t)});var No,jo=0;co.mouse=function(t){return Q(t,E())};var Fo=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;co.touch=function(t,e,r){if(arguments.length<3&&(r=e,e=E().changedTouches),e)for(var n,i=0,a=e.length;a>i;++i)if((n=e[i]).identifier===r)return Q(t,n)},co.behavior.drag=function(){function t(){this.on(\"mousedown.drag\",a).on(\"touchstart.drag\",o)}function e(t,e,n,a,o){return function(){function s(){var t,r,n=e(h,g);n&&(t=n[0]-b[0],r=n[1]-b[1],p|=t|r,b=n,d({type:\"drag\",x:n[0]+c[0],y:n[1]+c[1],dx:t,dy:r}))}function l(){e(h,g)&&(m.on(a+v,null).on(o+v,null),y(p),d({type:\"dragend\"}))}var c,u=this,f=co.event.target.correspondingElement||co.event.target,h=u.parentNode,d=r.of(u,arguments),p=0,g=t(),v=\".drag\"+(null==g?\"\":\"-\"+g),m=co.select(n(f)).on(a+v,s).on(o+v,l),y=$(f),b=e(h,g);i?(c=i.apply(u,arguments),c=[c.x-b[0],c.y-b[1]]):c=[0,0],d({type:\"dragstart\"})}}var r=L(t,\"drag\",\"dragstart\",\"dragend\"),i=null,a=e(k,co.mouse,n,\"mousemove\",\"mouseup\"),o=e(J,co.touch,x,\"touchmove\",\"touchend\");return t.origin=function(e){return arguments.length?(i=e,t):i},co.rebind(t,r,\"on\")},co.touches=function(t,e){return arguments.length<2&&(e=E().touches),e?fo(e).map(function(e){var r=Q(t,e);return r.identifier=e.identifier,r}):[]};var Do=1e-6,Bo=Do*Do,Uo=Math.PI,Vo=2*Uo,qo=Vo-Do,Ho=Uo/2,Go=Uo/180,Yo=180/Uo,Xo=Math.SQRT2,Wo=2,Zo=4;co.interpolateZoom=function(t,e){var r,n,i=t[0],a=t[1],o=t[2],s=e[0],l=e[1],c=e[2],u=s-i,f=l-a,h=u*u+f*f;if(Bo>h)n=Math.log(c/o)/Xo,r=function(t){return[i+t*u,a+t*f,o*Math.exp(Xo*t*n)]};else{var d=Math.sqrt(h),p=(c*c-o*o+Zo*h)/(2*o*Wo*d),g=(c*c-o*o-Zo*h)/(2*c*Wo*d),v=Math.log(Math.sqrt(p*p+1)-p),m=Math.log(Math.sqrt(g*g+1)-g);n=(m-v)/Xo,r=function(t){var e=t*n,r=at(v),s=o/(Wo*d)*(r*ot(Xo*e+v)-it(v));return[i+s*u,a+s*f,o*r/at(Xo*e+v)]}}return r.duration=1e3*n,r},co.behavior.zoom=function(){function t(t){t.on(z,f).on($o+\".zoom\",d).on(\"dblclick.zoom\",p).on(O,h)}function e(t){return[(t[0]-A.x)/A.k,(t[1]-A.y)/A.k]}function r(t){return[t[0]*A.k+A.x,t[1]*A.k+A.y]}function i(t){A.k=Math.max(E[0],Math.min(E[1],t))}function a(t,e){e=r(e),A.x+=t[0]-e[0],A.y+=t[1]-e[1]}function o(e,r,n,o){e.__chart__={x:A.x,y:A.y,k:A.k},i(Math.pow(2,o)),a(v=r,n),e=co.select(e),S>0&&(e=e.transition().duration(S)),e.call(t.event)}function s(){_&&_.domain(x.range().map(function(t){return(t-A.x)/A.k}).map(x.invert)),k&&k.domain(w.range().map(function(t){return(t-A.y)/A.k}).map(w.invert))}function l(t){C++||t({type:\"zoomstart\"})}function c(t){s(),t({type:\"zoom\",scale:A.k,translate:[A.x,A.y]})}function u(t){--C||(t({type:\"zoomend\"}),v=null)}function f(){function t(){s=1,a(co.mouse(i),h),c(o)}function r(){f.on(P,null).on(R,null),d(s),u(o)}var i=this,o=I.of(i,arguments),s=0,f=co.select(n(i)).on(P,t).on(R,r),h=e(co.mouse(i)),d=$(i);Hl.call(i),l(o)}function h(){function t(){var t=co.touches(p);return d=A.k,t.forEach(function(t){t.identifier in v&&(v[t.identifier]=e(t))}),t}function r(){var e=co.event.target;co.select(e).on(x,n).on(_,s),w.push(e);for(var r=co.event.changedTouches,i=0,a=r.length;a>i;++i)v[r[i].identifier]=null;var l=t(),c=Date.now();if(1===l.length){if(500>c-b){var u=l[0];o(p,u,v[u.identifier],Math.floor(Math.log(A.k)/Math.LN2)+1),T()}b=c}else if(l.length>1){var u=l[0],f=l[1],h=u[0]-f[0],d=u[1]-f[1];m=h*h+d*d}}function n(){var t,e,r,n,o=co.touches(p);Hl.call(p);for(var s=0,l=o.length;l>s;++s,n=null)if(r=o[s],n=v[r.identifier]){if(e)break;t=r,e=n}if(n){var u=(u=r[0]-t[0])*u+(u=r[1]-t[1])*u,f=m&&Math.sqrt(u/m);t=[(t[0]+r[0])/2,(t[1]+r[1])/2],e=[(e[0]+n[0])/2,(e[1]+n[1])/2],i(f*d)}b=null,a(t,e),c(g)}function s(){if(co.event.touches.length){for(var e=co.event.changedTouches,r=0,n=e.length;n>r;++r)delete v[e[r].identifier];for(var i in v)return void t()}co.selectAll(w).on(y,null),k.on(z,f).on(O,h),M(),u(g)}var d,p=this,g=I.of(p,arguments),v={},m=0,y=\".zoom-\"+co.event.changedTouches[0].identifier,x=\"touchmove\"+y,_=\"touchend\"+y,w=[],k=co.select(p),M=$(p);r(),l(g),k.on(z,null).on(O,r)}function d(){var t=I.of(this,arguments);y?clearTimeout(y):(Hl.call(this),g=e(v=m||co.mouse(this)),l(t)),y=setTimeout(function(){y=null,u(t)},50),T(),i(Math.pow(2,.002*Ko())*A.k),a(v,g),c(t)}function p(){var t=co.mouse(this),r=Math.log(A.k)/Math.LN2;o(this,t,e(t),co.event.shiftKey?Math.ceil(r)-1:Math.floor(r)+1)}var g,v,m,y,b,x,_,w,k,A={x:0,y:0,k:1},M=[960,500],E=Qo,S=250,C=0,z=\"mousedown.zoom\",P=\"mousemove.zoom\",R=\"mouseup.zoom\",O=\"touchstart.zoom\",I=L(t,\"zoomstart\",\"zoom\",\"zoomend\");return $o||($o=\"onwheel\"in ho?(Ko=function(){return-co.event.deltaY*(co.event.deltaMode?120:1)},\"wheel\"):\"onmousewheel\"in ho?(Ko=function(){return co.event.wheelDelta},\"mousewheel\"):(Ko=function(){return-co.event.detail},\"MozMousePixelScroll\")),t.event=function(t){t.each(function(){var t=I.of(this,arguments),e=A;Vl?co.select(this).transition().each(\"start.zoom\",function(){A=this.__chart__||{x:0,y:0,k:1},l(t)}).tween(\"zoom:zoom\",function(){var r=M[0],n=M[1],i=v?v[0]:r/2,a=v?v[1]:n/2,o=co.interpolateZoom([(i-A.x)/A.k,(a-A.y)/A.k,r/A.k],[(i-e.x)/e.k,(a-e.y)/e.k,r/e.k]);return function(e){var n=o(e),s=r/n[2];this.__chart__=A={x:i-n[0]*s,y:a-n[1]*s,k:s},c(t)}}).each(\"interrupt.zoom\",function(){u(t)}).each(\"end.zoom\",function(){u(t)}):(this.__chart__=A,l(t),c(t),u(t))})},t.translate=function(e){return arguments.length?(A={x:+e[0],y:+e[1],k:A.k},s(),t):[A.x,A.y]},t.scale=function(e){return arguments.length?(A={x:A.x,y:A.y,k:null},i(+e),s(),t):A.k},t.scaleExtent=function(e){return arguments.length?(E=null==e?Qo:[+e[0],+e[1]],t):E},t.center=function(e){return arguments.length?(m=e&&[+e[0],+e[1]],t):m},t.size=function(e){return arguments.length?(M=e&&[+e[0],+e[1]],t):M},t.duration=function(e){return arguments.length?(S=+e,t):S},t.x=function(e){return arguments.length?(_=e,x=e.copy(),A={x:0,y:0,k:1},t):_},t.y=function(e){return arguments.length?(k=e,w=e.copy(),A={x:0,y:0,k:1},t):k},co.rebind(t,I,\"on\")};var Ko,$o,Qo=[0,1/0];co.color=lt,lt.prototype.toString=function(){return this.rgb()+\"\"},co.hsl=ct;var Jo=ct.prototype=new lt;Jo.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new ct(this.h,this.s,this.l/t)},Jo.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new ct(this.h,this.s,t*this.l)},Jo.rgb=function(){return ut(this.h,this.s,this.l)},co.hcl=ft;var ts=ft.prototype=new lt;ts.brighter=function(t){return new ft(this.h,this.c,Math.min(100,this.l+es*(arguments.length?t:1)))},ts.darker=function(t){return new ft(this.h,this.c,Math.max(0,this.l-es*(arguments.length?t:1)))},ts.rgb=function(){return ht(this.h,this.c,this.l).rgb()},co.lab=dt;var es=18,rs=.95047,ns=1,is=1.08883,as=dt.prototype=new lt;as.brighter=function(t){return new dt(Math.min(100,this.l+es*(arguments.length?t:1)),this.a,this.b)},as.darker=function(t){return new dt(Math.max(0,this.l-es*(arguments.length?t:1)),this.a,this.b)},as.rgb=function(){return pt(this.l,this.a,this.b)},co.rgb=bt;var os=bt.prototype=new lt;os.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,r=this.g,n=this.b,i=30;return e||r||n?(e&&i>e&&(e=i),r&&i>r&&(r=i),n&&i>n&&(n=i),new bt(Math.min(255,e/t),Math.min(255,r/t),Math.min(255,n/t))):new bt(i,i,i)},os.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new bt(t*this.r,t*this.g,t*this.b)},os.hsl=function(){return At(this.r,this.g,this.b)},os.toString=function(){return\"#\"+wt(this.r)+wt(this.g)+wt(this.b)};var ss=co.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ss.forEach(function(t,e){ss.set(t,xt(e))}),co.functor=Lt,co.xhr=St(x),co.dsv=function(t,e){function r(t,r,a){arguments.length<3&&(a=r,r=null);var o=Ct(t,e,null==r?n:i(r),a);return o.row=function(t){return arguments.length?o.response(null==(r=t)?n:i(t)):r},o}function n(t){return r.parse(t.responseText)}function i(t){return function(e){return r.parse(e.responseText,t)}}function a(e){return e.map(o).join(t)}function o(t){return s.test(t)?'\"'+t.replace(/\\\"/g,'\"\"')+'\"':t}var s=new RegExp('[\"'+t+\"\\n]\"),l=t.charCodeAt(0);return r.parse=function(t,e){var n;return r.parseRows(t,function(t,r){if(n)return n(t,r-1);var i=new Function(\"d\",\"return {\"+t.map(function(t,e){return JSON.stringify(t)+\": d[\"+e+\"]\"}).join(\",\")+\"}\");n=e?function(t,r){return e(i(t),r)}:i})},r.parseRows=function(t,e){function r(){if(u>=c)return o;if(i)return i=!1,a;var e=u;if(34===t.charCodeAt(e)){for(var r=e;r++u;){var n=t.charCodeAt(u++),s=1;if(10===n)i=!0;else if(13===n)i=!0,10===t.charCodeAt(u)&&(++u,++s);else if(n!==l)continue;return t.slice(e,u-s)}return t.slice(e)}for(var n,i,a={},o={},s=[],c=t.length,u=0,f=0;(n=r())!==o;){for(var h=[];n!==a&&n!==o;)h.push(n),n=r();e&&null==(h=e(h,f++))||s.push(h)}return s},r.format=function(e){if(Array.isArray(e[0]))return r.formatRows(e);var n=new b,i=[];return e.forEach(function(t){for(var e in t)n.has(e)||i.push(n.add(e))}),[i.map(o).join(t)].concat(e.map(function(e){return i.map(function(t){return o(e[t])}).join(t)})).join(\"\\n\")},r.formatRows=function(t){return t.map(a).join(\"\\n\")},r},co.csv=co.dsv(\",\",\"text/csv\"),co.tsv=co.dsv(\"\t\",\"text/tab-separated-values\");var ls,cs,us,fs,hs=this[w(this,\"requestAnimationFrame\")]||function(t){setTimeout(t,17)};co.timer=function(){Rt.apply(this,arguments)},co.timer.flush=function(){It(),Nt()},co.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)};var ds=[\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"\\xb5\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"].map(Ft);co.formatPrefix=function(t,e){var r=0;return(t=+t)&&(0>t&&(t*=-1),e&&(t=co.round(t,jt(t,e))),r=1+Math.floor(1e-12+Math.log(t)/Math.LN10),r=Math.max(-24,Math.min(24,3*Math.floor((r-1)/3)))),ds[8+r/3]};var ps=/(?:([^{])?([<>=^]))?([+\\- ])?([$#])?(0)?(\\d+)?(,)?(\\.-?\\d+)?([a-z%])?/i,gs=co.map({b:function(t){return t.toString(2)},c:function(t){return String.fromCharCode(t)},o:function(t){return t.toString(8)},x:function(t){return t.toString(16)},X:function(t){return t.toString(16).toUpperCase()},g:function(t,e){return t.toPrecision(e)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},r:function(t,e){return(t=co.round(t,jt(t,e))).toFixed(Math.max(0,Math.min(20,jt(t*(1+1e-15),e))))}}),vs=co.time={},ms=Date;Ut.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ys.setUTCDate.apply(this._,arguments)},setDay:function(){ys.setUTCDay.apply(this._,arguments)},setFullYear:function(){ys.setUTCFullYear.apply(this._,arguments)},setHours:function(){ys.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ys.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ys.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ys.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ys.setUTCSeconds.apply(this._,arguments)},setTime:function(){ys.setTime.apply(this._,arguments)}};var ys=Date.prototype;vs.year=Vt(function(t){return t=vs.day(t),t.setMonth(0,1),t},function(t,e){t.setFullYear(t.getFullYear()+e)},function(t){return t.getFullYear()}),vs.years=vs.year.range,vs.years.utc=vs.year.utc.range,vs.day=Vt(function(t){var e=new ms(2e3,0);return e.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),e},function(t,e){t.setDate(t.getDate()+e)},function(t){return t.getDate()-1}),vs.days=vs.day.range,vs.days.utc=vs.day.utc.range,vs.dayOfYear=function(t){var e=vs.year(t);return Math.floor((t-e-6e4*(t.getTimezoneOffset()-e.getTimezoneOffset()))/864e5)},[\"sunday\",\"monday\",\"tuesday\",\"wednesday\",\"thursday\",\"friday\",\"saturday\"].forEach(function(t,e){e=7-e;var r=vs[t]=Vt(function(t){return(t=vs.day(t)).setDate(t.getDate()-(t.getDay()+e)%7),t},function(t,e){t.setDate(t.getDate()+7*Math.floor(e))},function(t){var r=vs.year(t).getDay();return Math.floor((vs.dayOfYear(t)+(r+e)%7)/7)-(r!==e)});vs[t+\"s\"]=r.range,vs[t+\"s\"].utc=r.utc.range,vs[t+\"OfYear\"]=function(t){var r=vs.year(t).getDay();return Math.floor((vs.dayOfYear(t)+(r+e)%7)/7)}}),vs.week=vs.sunday,vs.weeks=vs.sunday.range,vs.weeks.utc=vs.sunday.utc.range,vs.weekOfYear=vs.sundayOfYear;var bs={\"-\":\"\",_:\" \",0:\"0\"},xs=/^\\s*\\d+/,_s=/^%/;co.locale=function(t){return{numberFormat:Dt(t),timeFormat:Ht(t)}};var ws=co.locale({decimal:\".\",thousands:\",\",grouping:[3],currency:[\"$\",\"\"],dateTime:\"%a %b %e %X %Y\",date:\"%m/%d/%Y\",time:\"%H:%M:%S\",periods:[\"AM\",\"PM\"],days:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],shortDays:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],months:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],shortMonths:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"]});co.format=ws.numberFormat,co.geo={},fe.prototype={s:0,t:0,add:function(t){he(t,this.t,ks),he(ks.s,this.s,this),this.s?this.t+=ks.t:this.s=ks.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ks=new fe;co.geo.stream=function(t,e){t&&As.hasOwnProperty(t.type)?As[t.type](t,e):de(t,e)};var As={Feature:function(t,e){de(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++nt?4*Uo+t:t,Ls.lineStart=Ls.lineEnd=Ls.point=k}};co.geo.bounds=function(){function t(t,e){b.push(x=[u=t,h=t]),f>e&&(f=e),e>d&&(d=e)}function e(e,r){var n=me([e*Go,r*Go]);if(m){var i=be(m,n),a=[i[1],-i[0],0],o=be(a,i);we(o),o=ke(o);var l=e-p,c=l>0?1:-1,g=o[0]*Yo*c,v=wo(l)>180;if(v^(g>c*p&&c*e>g)){var y=o[1]*Yo;y>d&&(d=y)}else if(g=(g+360)%360-180,v^(g>c*p&&c*e>g)){var y=-o[1]*Yo;f>y&&(f=y)}else f>r&&(f=r),r>d&&(d=r);v?p>e?s(u,e)>s(u,h)&&(h=e):s(e,h)>s(u,h)&&(u=e):h>=u?(u>e&&(u=e),e>h&&(h=e)):e>p?s(u,e)>s(u,h)&&(h=e):s(e,h)>s(u,h)&&(u=e)}else t(e,r);m=n,p=e}function r(){_.point=e}function n(){x[0]=u,x[1]=h,_.point=t,m=null}function i(t,r){if(m){var n=t-p;y+=wo(n)>180?n+(n>0?360:-360):n}else g=t,v=r;Ls.point(t,r),e(t,r)}function a(){Ls.lineStart()}function o(){i(g,v),Ls.lineEnd(),wo(y)>Do&&(u=-(h=180)),x[0]=u,x[1]=h,m=null}function s(t,e){return(e-=t)<0?e+360:e}function l(t,e){return t[0]-e[0]}function c(t,e){return e[0]<=e[1]?e[0]<=t&&t<=e[1]:tEs?(u=-(h=180),f=-(d=90)):y>Do?d=90:-Do>y&&(f=-90),x[0]=u,x[1]=h}};return function(t){d=h=-(u=f=1/0),b=[],co.geo.stream(t,_);var e=b.length;if(e){b.sort(l);for(var r,n=1,i=b[0],a=[i];e>n;++n)r=b[n],c(r[0],i)||c(r[1],i)?(s(i[0],r[1])>s(i[0],i[1])&&(i[1]=r[1]),s(r[0],i[1])>s(i[0],i[1])&&(i[0]=r[0])):a.push(i=r);for(var o,r,p=-(1/0),e=a.length-1,n=0,i=a[e];e>=n;i=r,++n)r=a[n],(o=s(i[1],r[0]))>p&&(p=o,u=r[0],h=i[1])}return b=x=null,u===1/0||f===1/0?[[NaN,NaN],[NaN,NaN]]:[[u,f],[h,d]]}}(),co.geo.centroid=function(t){Ss=Cs=zs=Ps=Rs=Os=Is=Ns=js=Fs=Ds=0,co.geo.stream(t,Bs);var e=js,r=Fs,n=Ds,i=e*e+r*r+n*n;return Bo>i&&(e=Os,r=Is,n=Ns,Do>Cs&&(e=zs,r=Ps,n=Rs),i=e*e+r*r+n*n,Bo>i)?[NaN,NaN]:[Math.atan2(r,e)*Yo,nt(n/Math.sqrt(i))*Yo]};var Ss,Cs,zs,Ps,Rs,Os,Is,Ns,js,Fs,Ds,Bs={sphere:k,point:Me,lineStart:Ee,lineEnd:Le,polygonStart:function(){Bs.lineStart=Se},polygonEnd:function(){Bs.lineStart=Ee}},Us=Ie(ze,De,Ue,[-Uo,-Uo/2]),Vs=1e9;co.geo.clipExtent=function(){var t,e,r,n,i,a,o={stream:function(t){return i&&(i.valid=!1),i=a(t),i.valid=!0,i},extent:function(s){return arguments.length?(a=Ge(t=+s[0][0],e=+s[0][1],r=+s[1][0],n=+s[1][1]),i&&(i.valid=!1,i=null),o):[[t,e],[r,n]]}};return o.extent([[0,0],[960,500]])},(co.geo.conicEqualArea=function(){return Ye(Xe)}).raw=Xe,co.geo.albers=function(){return co.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},co.geo.albersUsa=function(){\n", + "function t(t){var a=t[0],o=t[1];return e=null,r(a,o),e||(n(a,o),e)||i(a,o),e}var e,r,n,i,a=co.geo.albers(),o=co.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),s=co.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(t,r){e=[t,r]}};return t.invert=function(t){var e=a.scale(),r=a.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&.234>i&&n>=-.425&&-.214>n?o:i>=.166&&.234>i&&n>=-.214&&-.115>n?s:a).invert(t)},t.stream=function(t){var e=a.stream(t),r=o.stream(t),n=s.stream(t);return{point:function(t,i){e.point(t,i),r.point(t,i),n.point(t,i)},sphere:function(){e.sphere(),r.sphere(),n.sphere()},lineStart:function(){e.lineStart(),r.lineStart(),n.lineStart()},lineEnd:function(){e.lineEnd(),r.lineEnd(),n.lineEnd()},polygonStart:function(){e.polygonStart(),r.polygonStart(),n.polygonStart()},polygonEnd:function(){e.polygonEnd(),r.polygonEnd(),n.polygonEnd()}}},t.precision=function(e){return arguments.length?(a.precision(e),o.precision(e),s.precision(e),t):a.precision()},t.scale=function(e){return arguments.length?(a.scale(e),o.scale(.35*e),s.scale(e),t.translate(a.translate())):a.scale()},t.translate=function(e){if(!arguments.length)return a.translate();var c=a.scale(),u=+e[0],f=+e[1];return r=a.translate(e).clipExtent([[u-.455*c,f-.238*c],[u+.455*c,f+.238*c]]).stream(l).point,n=o.translate([u-.307*c,f+.201*c]).clipExtent([[u-.425*c+Do,f+.12*c+Do],[u-.214*c-Do,f+.234*c-Do]]).stream(l).point,i=s.translate([u-.205*c,f+.212*c]).clipExtent([[u-.214*c+Do,f+.166*c+Do],[u-.115*c-Do,f+.234*c-Do]]).stream(l).point,t},t.scale(1070)};var qs,Hs,Gs,Ys,Xs,Ws,Zs={point:k,lineStart:k,lineEnd:k,polygonStart:function(){Hs=0,Zs.lineStart=We},polygonEnd:function(){Zs.lineStart=Zs.lineEnd=Zs.point=k,qs+=wo(Hs/2)}},Ks={point:Ze,lineStart:k,lineEnd:k,polygonStart:k,polygonEnd:k},$s={point:Qe,lineStart:Je,lineEnd:tr,polygonStart:function(){$s.lineStart=er},polygonEnd:function(){$s.point=Qe,$s.lineStart=Je,$s.lineEnd=tr}};co.geo.path=function(){function t(t){return t&&(\"function\"==typeof s&&a.pointRadius(+s.apply(this,arguments)),o&&o.valid||(o=i(a)),co.geo.stream(t,o)),a.result()}function e(){return o=null,t}var r,n,i,a,o,s=4.5;return t.area=function(t){return qs=0,co.geo.stream(t,i(Zs)),qs},t.centroid=function(t){return zs=Ps=Rs=Os=Is=Ns=js=Fs=Ds=0,co.geo.stream(t,i($s)),Ds?[js/Ds,Fs/Ds]:Ns?[Os/Ns,Is/Ns]:Rs?[zs/Rs,Ps/Rs]:[NaN,NaN]},t.bounds=function(t){return Xs=Ws=-(Gs=Ys=1/0),co.geo.stream(t,i(Ks)),[[Gs,Ys],[Xs,Ws]]},t.projection=function(t){return arguments.length?(i=(r=t)?t.stream||ir(t):x,e()):r},t.context=function(t){return arguments.length?(a=null==(n=t)?new Ke:new rr(t),\"function\"!=typeof s&&a.pointRadius(s),e()):n},t.pointRadius=function(e){return arguments.length?(s=\"function\"==typeof e?e:(a.pointRadius(+e),+e),t):s},t.projection(co.geo.albersUsa()).context(null)},co.geo.transform=function(t){return{stream:function(e){var r=new ar(e);for(var n in t)r[n]=t[n];return r}}},ar.prototype={point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},co.geo.projection=sr,co.geo.projectionMutator=lr,(co.geo.equirectangular=function(){return sr(ur)}).raw=ur.invert=ur,co.geo.rotation=function(t){function e(e){return e=t(e[0]*Go,e[1]*Go),e[0]*=Yo,e[1]*=Yo,e}return t=hr(t[0]%360*Go,t[1]*Go,t.length>2?t[2]*Go:0),e.invert=function(e){return e=t.invert(e[0]*Go,e[1]*Go),e[0]*=Yo,e[1]*=Yo,e},e},fr.invert=ur,co.geo.circle=function(){function t(){var t=\"function\"==typeof n?n.apply(this,arguments):n,e=hr(-t[0]*Go,-t[1]*Go,0).invert,i=[];return r(null,null,1,{point:function(t,r){i.push(t=e(t,r)),t[0]*=Yo,t[1]*=Yo}}),{type:\"Polygon\",coordinates:[i]}}var e,r,n=[0,0],i=6;return t.origin=function(e){return arguments.length?(n=e,t):n},t.angle=function(n){return arguments.length?(r=vr((e=+n)*Go,i*Go),t):e},t.precision=function(n){return arguments.length?(r=vr(e*Go,(i=+n)*Go),t):i},t.angle(90)},co.geo.distance=function(t,e){var r,n=(e[0]-t[0])*Go,i=t[1]*Go,a=e[1]*Go,o=Math.sin(n),s=Math.cos(n),l=Math.sin(i),c=Math.cos(i),u=Math.sin(a),f=Math.cos(a);return Math.atan2(Math.sqrt((r=f*o)*r+(r=c*u-l*f*s)*r),l*u+c*f*s)},co.geo.graticule=function(){function t(){return{type:\"MultiLineString\",coordinates:e()}}function e(){return co.range(Math.ceil(a/v)*v,i,v).map(h).concat(co.range(Math.ceil(c/m)*m,l,m).map(d)).concat(co.range(Math.ceil(n/p)*p,r,p).filter(function(t){return wo(t%v)>Do}).map(u)).concat(co.range(Math.ceil(s/g)*g,o,g).filter(function(t){return wo(t%m)>Do}).map(f))}var r,n,i,a,o,s,l,c,u,f,h,d,p=10,g=p,v=90,m=360,y=2.5;return t.lines=function(){return e().map(function(t){return{type:\"LineString\",coordinates:t}})},t.outline=function(){return{type:\"Polygon\",coordinates:[h(a).concat(d(l).slice(1),h(i).reverse().slice(1),d(c).reverse().slice(1))]}},t.extent=function(e){return arguments.length?t.majorExtent(e).minorExtent(e):t.minorExtent()},t.majorExtent=function(e){return arguments.length?(a=+e[0][0],i=+e[1][0],c=+e[0][1],l=+e[1][1],a>i&&(e=a,a=i,i=e),c>l&&(e=c,c=l,l=e),t.precision(y)):[[a,c],[i,l]]},t.minorExtent=function(e){return arguments.length?(n=+e[0][0],r=+e[1][0],s=+e[0][1],o=+e[1][1],n>r&&(e=n,n=r,r=e),s>o&&(e=s,s=o,o=e),t.precision(y)):[[n,s],[r,o]]},t.step=function(e){return arguments.length?t.majorStep(e).minorStep(e):t.minorStep()},t.majorStep=function(e){return arguments.length?(v=+e[0],m=+e[1],t):[v,m]},t.minorStep=function(e){return arguments.length?(p=+e[0],g=+e[1],t):[p,g]},t.precision=function(e){return arguments.length?(y=+e,u=yr(s,o,90),f=br(n,r,y),h=yr(c,l,90),d=br(a,i,y),t):y},t.majorExtent([[-180,-90+Do],[180,90-Do]]).minorExtent([[-180,-80-Do],[180,80+Do]])},co.geo.greatArc=function(){function t(){return{type:\"LineString\",coordinates:[e||n.apply(this,arguments),r||i.apply(this,arguments)]}}var e,r,n=xr,i=_r;return t.distance=function(){return co.geo.distance(e||n.apply(this,arguments),r||i.apply(this,arguments))},t.source=function(r){return arguments.length?(n=r,e=\"function\"==typeof r?null:r,t):n},t.target=function(e){return arguments.length?(i=e,r=\"function\"==typeof e?null:e,t):i},t.precision=function(){return arguments.length?t:0},t},co.geo.interpolate=function(t,e){return wr(t[0]*Go,t[1]*Go,e[0]*Go,e[1]*Go)},co.geo.length=function(t){return Qs=0,co.geo.stream(t,Js),Qs};var Qs,Js={sphere:k,point:k,lineStart:kr,lineEnd:k,polygonStart:k,polygonEnd:k},tl=Ar(function(t){return Math.sqrt(2/(1+t))},function(t){return 2*Math.asin(t/2)});(co.geo.azimuthalEqualArea=function(){return sr(tl)}).raw=tl;var el=Ar(function(t){var e=Math.acos(t);return e&&e/Math.sin(e)},x);(co.geo.azimuthalEquidistant=function(){return sr(el)}).raw=el,(co.geo.conicConformal=function(){return Ye(Mr)}).raw=Mr,(co.geo.conicEquidistant=function(){return Ye(Tr)}).raw=Tr;var rl=Ar(function(t){return 1/t},Math.atan);(co.geo.gnomonic=function(){return sr(rl)}).raw=rl,Er.invert=function(t,e){return[t,2*Math.atan(Math.exp(e))-Ho]},(co.geo.mercator=function(){return Lr(Er)}).raw=Er;var nl=Ar(function(){return 1},Math.asin);(co.geo.orthographic=function(){return sr(nl)}).raw=nl;var il=Ar(function(t){return 1/(1+t)},function(t){return 2*Math.atan(t)});(co.geo.stereographic=function(){return sr(il)}).raw=il,Sr.invert=function(t,e){return[-e,2*Math.atan(Math.exp(t))-Ho]},(co.geo.transverseMercator=function(){var t=Lr(Sr),e=t.center,r=t.rotate;return t.center=function(t){return t?e([-t[1],t[0]]):(t=e(),[t[1],-t[0]])},t.rotate=function(t){return t?r([t[0],t[1],t.length>2?t[2]+90:90]):(t=r(),[t[0],t[1],t[2]-90])},r([0,0,90])}).raw=Sr,co.geom={},co.geom.hull=function(t){function e(t){if(t.length<3)return[];var e,i=Lt(r),a=Lt(n),o=t.length,s=[],l=[];for(e=0;o>e;e++)s.push([+i.call(this,t[e],e),+a.call(this,t[e],e),e]);for(s.sort(Rr),e=0;o>e;e++)l.push([s[e][0],-s[e][1]]);var c=Pr(s),u=Pr(l),f=u[0]===c[0],h=u[u.length-1]===c[c.length-1],d=[];for(e=c.length-1;e>=0;--e)d.push(t[s[c[e]][2]]);for(e=+f;e=n&&c.x<=a&&c.y>=i&&c.y<=o?[[n,o],[a,o],[a,i],[n,i]]:[];u.point=t[s]}),e}function r(t){return t.map(function(t,e){return{x:Math.round(a(t,e)/Do)*Do,y:Math.round(o(t,e)/Do)*Do,i:e}})}var n=Cr,i=zr,a=n,o=i,s=dl;return t?e(t):(e.links=function(t){return cn(r(t)).edges.filter(function(t){return t.l&&t.r}).map(function(e){return{source:t[e.l.i],target:t[e.r.i]}})},e.triangles=function(t){var e=[];return cn(r(t)).cells.forEach(function(r,n){for(var i,a,o=r.site,s=r.edges.sort(Yr),l=-1,c=s.length,u=s[c-1].edge,f=u.l===o?u.r:u.l;++l=c,h=n>=u,d=h<<1|f;t.leaf=!1,t=t.nodes[d]||(t.nodes[d]=pn()),f?i=c:s=c,h?o=u:l=u,a(t,e,r,n,i,o,s,l)}var u,f,h,d,p,g,v,m,y,b=Lt(s),x=Lt(l);if(null!=e)g=e,v=r,m=n,y=i;else if(m=y=-(g=v=1/0),f=[],h=[],p=t.length,o)for(d=0;p>d;++d)u=t[d],u.xm&&(m=u.x),u.y>y&&(y=u.y),f.push(u.x),h.push(u.y);else for(d=0;p>d;++d){var _=+b(u=t[d],d),w=+x(u,d);g>_&&(g=_),v>w&&(v=w),_>m&&(m=_),w>y&&(y=w),f.push(_),h.push(w)}var k=m-g,A=y-v;k>A?y=v+k:m=g+A;var M=pn();if(M.add=function(t){a(M,t,+b(t,++d),+x(t,d),g,v,m,y)},M.visit=function(t){gn(t,M,g,v,m,y)},M.find=function(t){return vn(M,t[0],t[1],g,v,m,y)},d=-1,null==e){for(;++d=0?t.slice(0,e):t,n=e>=0?t.slice(e+1):\"in\";return r=ml.get(r)||vl,n=yl.get(n)||x,kn(n(r.apply(null,uo.call(arguments,1))))},co.interpolateHcl=Nn,co.interpolateHsl=jn,co.interpolateLab=Fn,co.interpolateRound=Dn,co.transform=function(t){var e=ho.createElementNS(co.ns.prefix.svg,\"g\");return(co.transform=function(t){if(null!=t){e.setAttribute(\"transform\",t);var r=e.transform.baseVal.consolidate()}return new Bn(r?r.matrix:bl)})(t)},Bn.prototype.toString=function(){return\"translate(\"+this.translate+\")rotate(\"+this.rotate+\")skewX(\"+this.skew+\")scale(\"+this.scale+\")\"};var bl={a:1,b:0,c:0,d:1,e:0,f:0};co.interpolateTransform=Zn,co.layout={},co.layout.bundle=function(){return function(t){for(var e=[],r=-1,n=t.length;++rs*s/m){if(g>l){var c=e.charge/l;t.px-=a*c,t.py-=o*c}return!0}if(e.point&&l&&g>l){var c=e.pointCharge/l;t.px-=a*c,t.py-=o*c}}return!e.charge}}function e(t){t.px=co.event.x,t.py=co.event.y,l.resume()}var r,n,i,a,o,s,l={},c=co.dispatch(\"start\",\"tick\",\"end\"),u=[1,1],f=.9,h=xl,d=_l,p=-30,g=wl,v=.1,m=.64,y=[],b=[];return l.tick=function(){if((i*=.99)<.005)return r=null,c.end({type:\"end\",alpha:i=0}),!0;var e,n,l,h,d,g,m,x,_,w=y.length,k=b.length;for(n=0;k>n;++n)l=b[n],h=l.source,d=l.target,x=d.x-h.x,_=d.y-h.y,(g=x*x+_*_)&&(g=i*o[n]*((g=Math.sqrt(g))-a[n])/g,x*=g,_*=g,d.x-=x*(m=h.weight+d.weight?h.weight/(h.weight+d.weight):.5),d.y-=_*m,h.x+=x*(m=1-m),h.y+=_*m);if((m=i*v)&&(x=u[0]/2,_=u[1]/2,n=-1,m))for(;++n0?i=t:(r.c=null,r.t=NaN,r=null,c.end({type:\"end\",alpha:i=0})):t>0&&(c.start({type:\"start\",alpha:i=t}),r=Rt(l.tick)),l):i},l.start=function(){function t(t,n){if(!r){for(r=new Array(i),l=0;i>l;++l)r[l]=[];for(l=0;c>l;++l){var a=b[l];r[a.source.index].push(a.target),r[a.target.index].push(a.source)}}for(var o,s=r[e],l=-1,u=s.length;++le;++e)(n=y[e]).index=e,n.weight=0;for(e=0;c>e;++e)n=b[e],\"number\"==typeof n.source&&(n.source=y[n.source]),\"number\"==typeof n.target&&(n.target=y[n.target]),++n.source.weight,++n.target.weight;for(e=0;i>e;++e)n=y[e],isNaN(n.x)&&(n.x=t(\"x\",f)),isNaN(n.y)&&(n.y=t(\"y\",g)),isNaN(n.px)&&(n.px=n.x),isNaN(n.py)&&(n.py=n.y);if(a=[],\"function\"==typeof h)for(e=0;c>e;++e)a[e]=+h.call(this,b[e],e);else for(e=0;c>e;++e)a[e]=h;if(o=[],\"function\"==typeof d)for(e=0;c>e;++e)o[e]=+d.call(this,b[e],e);else for(e=0;c>e;++e)o[e]=d;if(s=[],\"function\"==typeof p)for(e=0;i>e;++e)s[e]=+p.call(this,y[e],e);else for(e=0;i>e;++e)s[e]=p;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return n||(n=co.behavior.drag().origin(x).on(\"dragstart.force\",ei).on(\"drag.force\",e).on(\"dragend.force\",ri)),arguments.length?void this.on(\"mouseover.force\",ni).on(\"mouseout.force\",ii).call(n):n},co.rebind(l,c,\"on\")};var xl=20,_l=1,wl=1/0;co.layout.hierarchy=function(){function t(i){var a,o=[i],s=[];for(i.depth=0;null!=(a=o.pop());)if(s.push(a),(c=r.call(t,a,a.depth))&&(l=c.length)){for(var l,c,u;--l>=0;)o.push(u=c[l]),u.parent=a,u.depth=a.depth+1;n&&(a.value=0),a.children=c}else n&&(a.value=+n.call(t,a,a.depth)||0),delete a.children;return li(i,function(t){var r,i;e&&(r=t.children)&&r.sort(e),n&&(i=t.parent)&&(i.value+=t.value)}),s}var e=fi,r=ci,n=ui;return t.sort=function(r){return arguments.length?(e=r,t):e},t.children=function(e){return arguments.length?(r=e,t):r},t.value=function(e){return arguments.length?(n=e,t):n},t.revalue=function(e){return n&&(si(e,function(t){t.children&&(t.value=0)}),li(e,function(e){var r;e.children||(e.value=+n.call(t,e,e.depth)||0),(r=e.parent)&&(r.value+=e.value)})),e},t},co.layout.partition=function(){function t(e,r,n,i){var a=e.children;if(e.x=r,e.y=e.depth*i,e.dx=n,e.dy=i,a&&(o=a.length)){var o,s,l,c=-1;for(n=e.value?n/e.value:0;++cf?-1:1),p=co.sum(c),g=p?(f-l*d)/p:0,v=co.range(l),m=[];return null!=r&&v.sort(r===kl?function(t,e){return c[e]-c[t]}:function(t,e){return r(o[t],o[e])}),v.forEach(function(t){m[t]={data:o[t],value:s=c[t],startAngle:u,endAngle:u+=s*g+d,padAngle:h}}),m}var e=Number,r=kl,n=0,i=Vo,a=0;return t.value=function(r){return arguments.length?(e=r,t):e},t.sort=function(e){return arguments.length?(r=e,t):r},t.startAngle=function(e){return arguments.length?(n=e,t):n},t.endAngle=function(e){return arguments.length?(i=e,t):i},t.padAngle=function(e){return arguments.length?(a=e,t):a},t};var kl={};co.layout.stack=function(){function t(s,l){if(!(h=s.length))return s;var c=s.map(function(r,n){return e.call(t,r,n)}),u=c.map(function(e){return e.map(function(e,r){return[a.call(t,e,r),o.call(t,e,r)]})}),f=r.call(t,u,l);c=co.permute(c,f),u=co.permute(u,f);var h,d,p,g,v=n.call(t,u,l),m=c[0].length;for(p=0;m>p;++p)for(i.call(t,c[0][p],g=v[p],u[0][p][1]),d=1;h>d;++d)i.call(t,c[d][p],g+=u[d-1][p][1],u[d][p][1]);return s}var e=x,r=vi,n=mi,i=gi,a=di,o=pi;return t.values=function(r){return arguments.length?(e=r,t):e},t.order=function(e){return arguments.length?(r=\"function\"==typeof e?e:Al.get(e)||vi,t):r},t.offset=function(e){return arguments.length?(n=\"function\"==typeof e?e:Ml.get(e)||mi,t):n},t.x=function(e){return arguments.length?(a=e,t):a},t.y=function(e){return arguments.length?(o=e,t):o},t.out=function(e){return arguments.length?(i=e,t):i},t};var Al=co.map({\"inside-out\":function(t){var e,r,n=t.length,i=t.map(yi),a=t.map(bi),o=co.range(n).sort(function(t,e){return i[t]-i[e]}),s=0,l=0,c=[],u=[];for(e=0;n>e;++e)r=o[e],l>s?(s+=a[r],c.push(r)):(l+=a[r],u.push(r));return u.reverse().concat(c)},reverse:function(t){return co.range(t.length).reverse()},\"default\":vi}),Ml=co.map({silhouette:function(t){var e,r,n,i=t.length,a=t[0].length,o=[],s=0,l=[];for(r=0;a>r;++r){for(e=0,n=0;i>e;e++)n+=t[e][r][1];n>s&&(s=n),o.push(n)}for(r=0;a>r;++r)l[r]=(s-o[r])/2;return l},wiggle:function(t){var e,r,n,i,a,o,s,l,c,u=t.length,f=t[0],h=f.length,d=[];for(d[0]=l=c=0,r=1;h>r;++r){for(e=0,i=0;u>e;++e)i+=t[e][r][1];for(e=0,a=0,s=f[r][0]-f[r-1][0];u>e;++e){for(n=0,o=(t[e][r][1]-t[e][r-1][1])/(2*s);e>n;++n)o+=(t[n][r][1]-t[n][r-1][1])/s;a+=o*t[e][r][1]}d[r]=l-=i?a/i*s:0,c>l&&(c=l)}for(r=0;h>r;++r)d[r]-=c;return d},expand:function(t){var e,r,n,i=t.length,a=t[0].length,o=1/i,s=[];for(r=0;a>r;++r){for(e=0,n=0;i>e;e++)n+=t[e][r][1];if(n)for(e=0;i>e;e++)t[e][r][1]/=n;else for(e=0;i>e;e++)t[e][r][1]=o}for(r=0;a>r;++r)s[r]=0;return s},zero:mi});co.layout.histogram=function(){function t(t,a){for(var o,s,l=[],c=t.map(r,this),u=n.call(this,c,a),f=i.call(this,u,c,a),a=-1,h=c.length,d=f.length-1,p=e?1:1/h;++a0)for(a=-1;++a=u[0]&&s<=u[1]&&(o=l[co.bisect(f,s,1,d)-1],o.y+=p,o.push(t[a]));return l}var e=!0,r=Number,n=ki,i=_i;return t.value=function(e){return arguments.length?(r=e,t):r},t.range=function(e){return arguments.length?(n=Lt(e),t):n},t.bins=function(e){return arguments.length?(i=\"number\"==typeof e?function(t){return wi(t,e)}:Lt(e),t):i},t.frequency=function(r){return arguments.length?(e=!!r,t):e},t},co.layout.pack=function(){function t(t,a){var o=r.call(this,t,a),s=o[0],l=i[0],c=i[1],u=null==e?Math.sqrt:\"function\"==typeof e?e:function(){return e};if(s.x=s.y=0,li(s,function(t){t.r=+u(t.value)}),li(s,Li),n){var f=n*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;li(s,function(t){t.r+=f}),li(s,Li),li(s,function(t){t.r-=f})}return zi(s,l/2,c/2,e?1:1/Math.max(2*s.r/l,2*s.r/c)),o}var e,r=co.layout.hierarchy().sort(Ai),n=0,i=[1,1];return t.size=function(e){return arguments.length?(i=e,t):i},t.radius=function(r){return arguments.length?(e=null==r||\"function\"==typeof r?r:+r,t):e},t.padding=function(e){return arguments.length?(n=+e,t):n},oi(t,r)},co.layout.tree=function(){function t(t,i){var u=o.call(this,t,i),f=u[0],h=e(f);if(li(h,r),h.parent.m=-h.z,si(h,n),c)si(f,a);else{var d=f,p=f,g=f;si(f,function(t){t.xp.x&&(p=t),t.depth>g.depth&&(g=t)});var v=s(d,p)/2-d.x,m=l[0]/(p.x+s(p,d)/2+v),y=l[1]/(g.depth||1);si(f,function(t){t.x=(t.x+v)*m,t.y=t.depth*y})}return u}function e(t){for(var e,r={A:null,children:[t]},n=[r];null!=(e=n.pop());)for(var i,a=e.children,o=0,s=a.length;s>o;++o)n.push((a[o]=i={_:a[o],parent:e,children:(i=a[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return r.children[0]}function r(t){var e=t.children,r=t.parent.children,n=t.i?r[t.i-1]:null;if(e.length){ji(t);var a=(e[0].z+e[e.length-1].z)/2;n?(t.z=n.z+s(t._,n._),t.m=t.z-a):t.z=a}else n&&(t.z=n.z+s(t._,n._));t.parent.A=i(t,n,t.parent.A||r[0])}function n(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function i(t,e,r){if(e){for(var n,i=t,a=t,o=e,l=i.parent.children[0],c=i.m,u=a.m,f=o.m,h=l.m;o=Ii(o),i=Oi(i),o&&i;)l=Oi(l),a=Ii(a),a.a=t,n=o.z+f-i.z-c+s(o._,i._),n>0&&(Ni(Fi(o,t,r),t,n),c+=n,u+=n),f+=o.m,c+=i.m,h+=l.m,u+=a.m;o&&!Ii(a)&&(a.t=o,a.m+=f-u),i&&!Oi(l)&&(l.t=i,l.m+=c-h,r=t)}return r}function a(t){t.x*=l[0],t.y=t.depth*l[1]}var o=co.layout.hierarchy().sort(null).value(null),s=Ri,l=[1,1],c=null;return t.separation=function(e){return arguments.length?(s=e,t):s},t.size=function(e){return arguments.length?(c=null==(l=e)?a:null,t):c?null:l},t.nodeSize=function(e){return arguments.length?(c=null==(l=e)?null:a,t):c?l:null},oi(t,o)},co.layout.cluster=function(){function t(t,a){var o,s=e.call(this,t,a),l=s[0],c=0;li(l,function(t){var e=t.children;e&&e.length?(t.x=Bi(e),t.y=Di(e)):(t.x=o?c+=r(t,o):0,t.y=0,o=t)});var u=Ui(l),f=Vi(l),h=u.x-r(u,f)/2,d=f.x+r(f,u)/2;return li(l,i?function(t){t.x=(t.x-l.x)*n[0],t.y=(l.y-t.y)*n[1]}:function(t){t.x=(t.x-h)/(d-h)*n[0],t.y=(1-(l.y?t.y/l.y:1))*n[1]}),s}var e=co.layout.hierarchy().sort(null).value(null),r=Ri,n=[1,1],i=!1;return t.separation=function(e){return arguments.length?(r=e,t):r},t.size=function(e){return arguments.length?(i=null==(n=e),t):i?null:n},t.nodeSize=function(e){return arguments.length?(i=null!=(n=e),t):i?n:null},oi(t,e)},co.layout.treemap=function(){function t(t,e){for(var r,n,i=-1,a=t.length;++ie?0:e),r.area=isNaN(n)||0>=n?0:n}function e(r){var a=r.children;if(a&&a.length){var o,s,l,c=f(r),u=[],h=a.slice(),p=1/0,g=\"slice\"===d?c.dx:\"dice\"===d?c.dy:\"slice-dice\"===d?1&r.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(t(h,c.dx*c.dy/r.value),u.area=0;(l=h.length)>0;)u.push(o=h[l-1]),u.area+=o.area,\"squarify\"!==d||(s=n(u,g))<=p?(h.pop(),p=s):(u.area-=u.pop().area,i(u,g,c,!1),g=Math.min(c.dx,c.dy),u.length=u.area=0,p=1/0);u.length&&(i(u,g,c,!0),u.length=u.area=0),a.forEach(e)}}function r(e){var n=e.children;if(n&&n.length){var a,o=f(e),s=n.slice(),l=[];for(t(s,o.dx*o.dy/e.value),l.area=0;a=s.pop();)l.push(a),l.area+=a.area,null!=a.z&&(i(l,a.z?o.dx:o.dy,o,!s.length),l.length=l.area=0);n.forEach(r)}}function n(t,e){for(var r,n=t.area,i=0,a=1/0,o=-1,s=t.length;++or&&(a=r),r>i&&(i=r));return n*=n,e*=e,n?Math.max(e*i*p/n,n/(e*a*p)):1/0}function i(t,e,r,n){var i,a=-1,o=t.length,s=r.x,c=r.y,u=e?l(t.area/e):0;if(e==r.dx){for((n||u>r.dy)&&(u=r.dy);++ar.dx)&&(u=r.dx);++ar&&(e=1),1>r&&(t=0),function(){var r,n,i;do r=2*Math.random()-1,n=2*Math.random()-1,i=r*r+n*n;while(!i||i>1);return t+e*r*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var t=co.random.normal.apply(co,arguments);return function(){return Math.exp(t())}},bates:function(t){var e=co.random.irwinHall(t);return function(){return e()/t}},irwinHall:function(t){return function(){for(var e=0,r=0;t>r;r++)e+=Math.random();return e}}},co.scale={};var Tl={floor:x,ceil:x};co.scale.linear=function(){return $i([0,1],[0,1],_n,!1)};var El={s:1,g:1,p:1,r:1,e:1};co.scale.log=function(){return aa(co.scale.linear().domain([0,1]),10,!0,[1,10])};var Ll=co.format(\".0e\"),Sl={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};co.scale.pow=function(){return oa(co.scale.linear(),1,[0,1])},co.scale.sqrt=function(){return co.scale.pow().exponent(.5)},co.scale.ordinal=function(){return la([],{t:\"range\",a:[[]]})},co.scale.category10=function(){return co.scale.ordinal().range(Cl)},co.scale.category20=function(){return co.scale.ordinal().range(zl)},co.scale.category20b=function(){return co.scale.ordinal().range(Pl)},co.scale.category20c=function(){return co.scale.ordinal().range(Rl)};var Cl=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(_t),zl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(_t),Pl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(_t),Rl=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(_t);co.scale.quantile=function(){return ca([],[])},co.scale.quantize=function(){return ua(0,1,[0,1])},co.scale.threshold=function(){return fa([.5],[0,1])},co.scale.identity=function(){return ha([0,1])},co.svg={},co.svg.arc=function(){function t(){var t=Math.max(0,+r.apply(this,arguments)),c=Math.max(0,+n.apply(this,arguments)),u=o.apply(this,arguments)-Ho,f=s.apply(this,arguments)-Ho,h=Math.abs(f-u),d=u>f?0:1;if(t>c&&(p=c,c=t,t=p),h>=qo)return e(c,d)+(t?e(t,1-d):\"\")+\"Z\";var p,g,v,m,y,b,x,_,w,k,A,M,T=0,E=0,L=[];if((m=(+l.apply(this,arguments)||0)/2)&&(v=a===Ol?Math.sqrt(t*t+c*c):+a.apply(this,arguments),d||(E*=-1),c&&(E=nt(v/c*Math.sin(m))),t&&(T=nt(v/t*Math.sin(m)))),c){y=c*Math.cos(u+E),b=c*Math.sin(u+E),x=c*Math.cos(f-E),_=c*Math.sin(f-E);var S=Math.abs(f-u-2*E)<=Uo?0:1;if(E&&ba(y,b,x,_)===d^S){var C=(u+f)/2;y=c*Math.cos(C),b=c*Math.sin(C),x=_=null}}else y=b=0;if(t){w=t*Math.cos(f-T),k=t*Math.sin(f-T),A=t*Math.cos(u+T),M=t*Math.sin(u+T);var z=Math.abs(u-f+2*T)<=Uo?0:1;if(T&&ba(w,k,A,M)===1-d^z){\n", + "var P=(u+f)/2;w=t*Math.cos(P),k=t*Math.sin(P),A=M=null}}else w=k=0;if(h>Do&&(p=Math.min(Math.abs(c-t)/2,+i.apply(this,arguments)))>.001){g=c>t^d?0:1;var R=p,O=p;if(Uo>h){var I=null==A?[w,k]:null==x?[y,b]:Ir([y,b],[A,M],[x,_],[w,k]),N=y-I[0],j=b-I[1],F=x-I[0],D=_-I[1],B=1/Math.sin(Math.acos((N*F+j*D)/(Math.sqrt(N*N+j*j)*Math.sqrt(F*F+D*D)))/2),U=Math.sqrt(I[0]*I[0]+I[1]*I[1]);O=Math.min(p,(t-U)/(B-1)),R=Math.min(p,(c-U)/(B+1))}if(null!=x){var V=xa(null==A?[w,k]:[A,M],[y,b],c,R,d),q=xa([x,_],[w,k],c,R,d);p===R?L.push(\"M\",V[0],\"A\",R,\",\",R,\" 0 0,\",g,\" \",V[1],\"A\",c,\",\",c,\" 0 \",1-d^ba(V[1][0],V[1][1],q[1][0],q[1][1]),\",\",d,\" \",q[1],\"A\",R,\",\",R,\" 0 0,\",g,\" \",q[0]):L.push(\"M\",V[0],\"A\",R,\",\",R,\" 0 1,\",g,\" \",q[0])}else L.push(\"M\",y,\",\",b);if(null!=A){var H=xa([y,b],[A,M],t,-O,d),G=xa([w,k],null==x?[y,b]:[x,_],t,-O,d);p===O?L.push(\"L\",G[0],\"A\",O,\",\",O,\" 0 0,\",g,\" \",G[1],\"A\",t,\",\",t,\" 0 \",d^ba(G[1][0],G[1][1],H[1][0],H[1][1]),\",\",1-d,\" \",H[1],\"A\",O,\",\",O,\" 0 0,\",g,\" \",H[0]):L.push(\"L\",G[0],\"A\",O,\",\",O,\" 0 0,\",g,\" \",H[0])}else L.push(\"L\",w,\",\",k)}else L.push(\"M\",y,\",\",b),null!=x&&L.push(\"A\",c,\",\",c,\" 0 \",S,\",\",d,\" \",x,\",\",_),L.push(\"L\",w,\",\",k),null!=A&&L.push(\"A\",t,\",\",t,\" 0 \",z,\",\",1-d,\" \",A,\",\",M);return L.push(\"Z\"),L.join(\"\")}function e(t,e){return\"M0,\"+t+\"A\"+t+\",\"+t+\" 0 1,\"+e+\" 0,\"+-t+\"A\"+t+\",\"+t+\" 0 1,\"+e+\" 0,\"+t}var r=pa,n=ga,i=da,a=Ol,o=va,s=ma,l=ya;return t.innerRadius=function(e){return arguments.length?(r=Lt(e),t):r},t.outerRadius=function(e){return arguments.length?(n=Lt(e),t):n},t.cornerRadius=function(e){return arguments.length?(i=Lt(e),t):i},t.padRadius=function(e){return arguments.length?(a=e==Ol?Ol:Lt(e),t):a},t.startAngle=function(e){return arguments.length?(o=Lt(e),t):o},t.endAngle=function(e){return arguments.length?(s=Lt(e),t):s},t.padAngle=function(e){return arguments.length?(l=Lt(e),t):l},t.centroid=function(){var t=(+r.apply(this,arguments)+ +n.apply(this,arguments))/2,e=(+o.apply(this,arguments)+ +s.apply(this,arguments))/2-Ho;return[Math.cos(e)*t,Math.sin(e)*t]},t};var Ol=\"auto\";co.svg.line=function(){return _a(x)};var Il=co.map({linear:wa,\"linear-closed\":ka,step:Aa,\"step-before\":Ma,\"step-after\":Ta,basis:Pa,\"basis-open\":Ra,\"basis-closed\":Oa,bundle:Ia,cardinal:Sa,\"cardinal-open\":Ea,\"cardinal-closed\":La,monotone:Ua});Il.forEach(function(t,e){e.key=t,e.closed=/-closed$/.test(t)});var Nl=[0,2/3,1/3,0],jl=[0,1/3,2/3,0],Fl=[0,1/6,2/3,1/6];co.svg.line.radial=function(){var t=_a(Va);return t.radius=t.x,delete t.x,t.angle=t.y,delete t.y,t},Ma.reverse=Ta,Ta.reverse=Ma,co.svg.area=function(){return qa(x)},co.svg.area.radial=function(){var t=qa(Va);return t.radius=t.x,delete t.x,t.innerRadius=t.x0,delete t.x0,t.outerRadius=t.x1,delete t.x1,t.angle=t.y,delete t.y,t.startAngle=t.y0,delete t.y0,t.endAngle=t.y1,delete t.y1,t},co.svg.chord=function(){function t(t,s){var l=e(this,a,t,s),c=e(this,o,t,s);return\"M\"+l.p0+n(l.r,l.p1,l.a1-l.a0)+(r(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+n(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+\"Z\"}function e(t,e,r,n){var i=e.call(t,r,n),a=s.call(t,i,n),o=l.call(t,i,n)-Ho,u=c.call(t,i,n)-Ho;return{r:a,a0:o,a1:u,p0:[a*Math.cos(o),a*Math.sin(o)],p1:[a*Math.cos(u),a*Math.sin(u)]}}function r(t,e){return t.a0==e.a0&&t.a1==e.a1}function n(t,e,r){return\"A\"+t+\",\"+t+\" 0 \"+ +(r>Uo)+\",1 \"+e}function i(t,e,r,n){return\"Q 0,0 \"+n}var a=xr,o=_r,s=Ha,l=va,c=ma;return t.radius=function(e){return arguments.length?(s=Lt(e),t):s},t.source=function(e){return arguments.length?(a=Lt(e),t):a},t.target=function(e){return arguments.length?(o=Lt(e),t):o},t.startAngle=function(e){return arguments.length?(l=Lt(e),t):l},t.endAngle=function(e){return arguments.length?(c=Lt(e),t):c},t},co.svg.diagonal=function(){function t(t,i){var a=e.call(this,t,i),o=r.call(this,t,i),s=(a.y+o.y)/2,l=[a,{x:a.x,y:s},{x:o.x,y:s},o];return l=l.map(n),\"M\"+l[0]+\"C\"+l[1]+\" \"+l[2]+\" \"+l[3]}var e=xr,r=_r,n=Ga;return t.source=function(r){return arguments.length?(e=Lt(r),t):e},t.target=function(e){return arguments.length?(r=Lt(e),t):r},t.projection=function(e){return arguments.length?(n=e,t):n},t},co.svg.diagonal.radial=function(){var t=co.svg.diagonal(),e=Ga,r=t.projection;return t.projection=function(t){return arguments.length?r(Ya(e=t)):e},t},co.svg.symbol=function(){function t(t,n){return(Dl.get(e.call(this,t,n))||Za)(r.call(this,t,n))}var e=Wa,r=Xa;return t.type=function(r){return arguments.length?(e=Lt(r),t):e},t.size=function(e){return arguments.length?(r=Lt(e),t):r},t};var Dl=co.map({circle:Za,cross:function(t){var e=Math.sqrt(t/5)/2;return\"M\"+-3*e+\",\"+-e+\"H\"+-e+\"V\"+-3*e+\"H\"+e+\"V\"+-e+\"H\"+3*e+\"V\"+e+\"H\"+e+\"V\"+3*e+\"H\"+-e+\"V\"+e+\"H\"+-3*e+\"Z\"},diamond:function(t){var e=Math.sqrt(t/(2*Ul)),r=e*Ul;return\"M0,\"+-e+\"L\"+r+\",0 0,\"+e+\" \"+-r+\",0Z\"},square:function(t){var e=Math.sqrt(t)/2;return\"M\"+-e+\",\"+-e+\"L\"+e+\",\"+-e+\" \"+e+\",\"+e+\" \"+-e+\",\"+e+\"Z\"},\"triangle-down\":function(t){var e=Math.sqrt(t/Bl),r=e*Bl/2;return\"M0,\"+r+\"L\"+e+\",\"+-r+\" \"+-e+\",\"+-r+\"Z\"},\"triangle-up\":function(t){var e=Math.sqrt(t/Bl),r=e*Bl/2;return\"M0,\"+-r+\"L\"+e+\",\"+r+\" \"+-e+\",\"+r+\"Z\"}});co.svg.symbolTypes=Dl.keys();var Bl=Math.sqrt(3),Ul=Math.tan(30*Go);zo.transition=function(t){for(var e,r,n=Vl||++Yl,i=to(t),a=[],o=ql||{time:Date.now(),ease:Ln,delay:0,duration:250},s=-1,l=this.length;++sa;a++){i.push(e=[]);for(var r=this[a],s=0,l=r.length;l>s;s++)(n=r[s])&&t.call(n,n.__data__,s,a)&&e.push(n)}return $a(i,this.namespace,this.id)},Gl.tween=function(t,e){var r=this.id,n=this.namespace;return arguments.length<2?this.node()[n][r].tween.get(t):G(this,null==e?function(e){e[n][r].tween.remove(t)}:function(i){i[n][r].tween.set(t,e)})},Gl.attr=function(t,e){function r(){this.removeAttribute(s)}function n(){this.removeAttributeNS(s.space,s.local)}function i(t){return null==t?r:(t+=\"\",function(){var e,r=this.getAttribute(s);return r!==t&&(e=o(r,t),function(t){this.setAttribute(s,e(t))})})}function a(t){return null==t?n:(t+=\"\",function(){var e,r=this.getAttributeNS(s.space,s.local);return r!==t&&(e=o(r,t),function(t){this.setAttributeNS(s.space,s.local,e(t))})})}if(arguments.length<2){for(e in t)this.attr(e,t[e]);return this}var o=\"transform\"==t?Zn:_n,s=co.ns.qualify(t);return Qa(this,\"attr.\"+t,e,s.local?a:i)},Gl.attrTween=function(t,e){function r(t,r){var n=e.call(this,t,r,this.getAttribute(i));return n&&function(t){this.setAttribute(i,n(t))}}function n(t,r){var n=e.call(this,t,r,this.getAttributeNS(i.space,i.local));return n&&function(t){this.setAttributeNS(i.space,i.local,n(t))}}var i=co.ns.qualify(t);return this.tween(\"attr.\"+t,i.local?n:r)},Gl.style=function(t,e,r){function i(){this.style.removeProperty(t)}function a(e){return null==e?i:(e+=\"\",function(){var i,a=n(this).getComputedStyle(this,null).getPropertyValue(t);return a!==e&&(i=_n(a,e),function(e){this.style.setProperty(t,i(e),r)})})}var o=arguments.length;if(3>o){if(\"string\"!=typeof t){2>o&&(e=\"\");for(r in t)this.style(r,t[r],e);return this}r=\"\"}return Qa(this,\"style.\"+t,e,a)},Gl.styleTween=function(t,e,r){function i(i,a){var o=e.call(this,i,a,n(this).getComputedStyle(this,null).getPropertyValue(t));return o&&function(e){this.style.setProperty(t,o(e),r)}}return arguments.length<3&&(r=\"\"),this.tween(\"style.\"+t,i)},Gl.text=function(t){return Qa(this,\"text\",t,Ja)},Gl.remove=function(){var t=this.namespace;return this.each(\"end.transition\",function(){var e;this[t].count<2&&(e=this.parentNode)&&e.removeChild(this)})},Gl.ease=function(t){var e=this.id,r=this.namespace;return arguments.length<1?this.node()[r][e].ease:(\"function\"!=typeof t&&(t=co.ease.apply(co,arguments)),G(this,function(n){n[r][e].ease=t}))},Gl.delay=function(t){var e=this.id,r=this.namespace;return arguments.length<1?this.node()[r][e].delay:G(this,\"function\"==typeof t?function(n,i,a){n[r][e].delay=+t.call(n,n.__data__,i,a)}:(t=+t,function(n){n[r][e].delay=t}))},Gl.duration=function(t){var e=this.id,r=this.namespace;return arguments.length<1?this.node()[r][e].duration:G(this,\"function\"==typeof t?function(n,i,a){n[r][e].duration=Math.max(1,t.call(n,n.__data__,i,a))}:(t=Math.max(1,t),function(n){n[r][e].duration=t}))},Gl.each=function(t,e){var r=this.id,n=this.namespace;if(arguments.length<2){var i=ql,a=Vl;try{Vl=r,G(this,function(e,i,a){ql=e[n][r],t.call(e,e.__data__,i,a)})}finally{ql=i,Vl=a}}else G(this,function(i){var a=i[n][r];(a.event||(a.event=co.dispatch(\"start\",\"end\",\"interrupt\"))).on(t,e)});return this},Gl.transition=function(){for(var t,e,r,n,i=this.id,a=++Yl,o=this.namespace,s=[],l=0,c=this.length;c>l;l++){s.push(t=[]);for(var e=this[l],u=0,f=e.length;f>u;u++)(r=e[u])&&(n=r[o][i],eo(r,u,o,a,{time:n.time,ease:n.ease,delay:n.delay+n.duration,duration:n.duration})),t.push(r)}return $a(s,o,a)},co.svg.axis=function(){function t(t){t.each(function(){var t,c=co.select(this),u=this.__chart__||r,f=this.__chart__=r.copy(),h=null==l?f.ticks?f.ticks.apply(f,s):f.domain():l,d=null==e?f.tickFormat?f.tickFormat.apply(f,s):x:e,p=c.selectAll(\".tick\").data(h,f),g=p.enter().insert(\"g\",\".domain\").attr(\"class\",\"tick\").style(\"opacity\",Do),v=co.transition(p.exit()).style(\"opacity\",Do).remove(),m=co.transition(p.order()).style(\"opacity\",1),y=Math.max(i,0)+o,b=Yi(f),_=c.selectAll(\".domain\").data([0]),w=(_.enter().append(\"path\").attr(\"class\",\"domain\"),co.transition(_));g.append(\"line\"),g.append(\"text\");var k,A,M,T,E=g.select(\"line\"),L=m.select(\"line\"),S=p.select(\"text\").text(d),C=g.select(\"text\"),z=m.select(\"text\"),P=\"top\"===n||\"left\"===n?-1:1;if(\"bottom\"===n||\"top\"===n?(t=ro,k=\"x\",M=\"y\",A=\"x2\",T=\"y2\",S.attr(\"dy\",0>P?\"0em\":\".71em\").style(\"text-anchor\",\"middle\"),w.attr(\"d\",\"M\"+b[0]+\",\"+P*a+\"V0H\"+b[1]+\"V\"+P*a)):(t=no,k=\"y\",M=\"x\",A=\"y2\",T=\"x2\",S.attr(\"dy\",\".32em\").style(\"text-anchor\",0>P?\"end\":\"start\"),w.attr(\"d\",\"M\"+P*a+\",\"+b[0]+\"H0V\"+b[1]+\"H\"+P*a)),E.attr(T,P*i),C.attr(M,P*y),L.attr(A,0).attr(T,P*i),z.attr(k,0).attr(M,P*y),f.rangeBand){var R=f,O=R.rangeBand()/2;u=f=function(t){return R(t)+O}}else u.rangeBand?u=f:v.call(t,f,u);g.call(t,u,f),m.call(t,f,f)})}var e,r=co.scale.linear(),n=Xl,i=6,a=6,o=3,s=[10],l=null;return t.scale=function(e){return arguments.length?(r=e,t):r},t.orient=function(e){return arguments.length?(n=e in Wl?e+\"\":Xl,t):n},t.ticks=function(){return arguments.length?(s=fo(arguments),t):s},t.tickValues=function(e){return arguments.length?(l=e,t):l},t.tickFormat=function(r){return arguments.length?(e=r,t):e},t.tickSize=function(e){var r=arguments.length;return r?(i=+e,a=+arguments[r-1],t):i},t.innerTickSize=function(e){return arguments.length?(i=+e,t):i},t.outerTickSize=function(e){return arguments.length?(a=+e,t):a},t.tickPadding=function(e){return arguments.length?(o=+e,t):o},t.tickSubdivide=function(){return arguments.length&&t},t};var Xl=\"bottom\",Wl={top:1,right:1,bottom:1,left:1};co.svg.brush=function(){function t(n){n.each(function(){var n=co.select(this).style(\"pointer-events\",\"all\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\").on(\"mousedown.brush\",a).on(\"touchstart.brush\",a),o=n.selectAll(\".background\").data([0]);o.enter().append(\"rect\").attr(\"class\",\"background\").style(\"visibility\",\"hidden\").style(\"cursor\",\"crosshair\"),n.selectAll(\".extent\").data([0]).enter().append(\"rect\").attr(\"class\",\"extent\").style(\"cursor\",\"move\");var s=n.selectAll(\".resize\").data(g,x);s.exit().remove(),s.enter().append(\"g\").attr(\"class\",function(t){return\"resize \"+t}).style(\"cursor\",function(t){return Zl[t]}).append(\"rect\").attr(\"x\",function(t){return/[ew]$/.test(t)?-3:null}).attr(\"y\",function(t){return/^[ns]/.test(t)?-3:null}).attr(\"width\",6).attr(\"height\",6).style(\"visibility\",\"hidden\"),s.style(\"display\",t.empty()?\"none\":null);var l,f=co.transition(n),h=co.transition(o);c&&(l=Yi(c),h.attr(\"x\",l[0]).attr(\"width\",l[1]-l[0]),r(f)),u&&(l=Yi(u),h.attr(\"y\",l[0]).attr(\"height\",l[1]-l[0]),i(f)),e(f)})}function e(t){t.selectAll(\".resize\").attr(\"transform\",function(t){return\"translate(\"+f[+/e$/.test(t)]+\",\"+h[+/^s/.test(t)]+\")\"})}function r(t){t.select(\".extent\").attr(\"x\",f[0]),t.selectAll(\".extent,.n>rect,.s>rect\").attr(\"width\",f[1]-f[0])}function i(t){t.select(\".extent\").attr(\"y\",h[0]),t.selectAll(\".extent,.e>rect,.w>rect\").attr(\"height\",h[1]-h[0])}function a(){function a(){32==co.event.keyCode&&(S||(b=null,z[0]-=f[1],z[1]-=h[1],S=2),T())}function g(){32==co.event.keyCode&&2==S&&(z[0]+=f[1],z[1]+=h[1],S=0,T())}function v(){var t=co.mouse(_),n=!1;x&&(t[0]+=x[0],t[1]+=x[1]),S||(co.event.altKey?(b||(b=[(f[0]+f[1])/2,(h[0]+h[1])/2]),z[0]=f[+(t[0]u?(i=n,n=u):i=u),g[0]!=n||g[1]!=i?(r?s=null:o=null,g[0]=n,g[1]=i,!0):void 0}function y(){v(),A.style(\"pointer-events\",\"all\").selectAll(\".resize\").style(\"display\",t.empty()?\"none\":null),co.select(\"body\").style(\"cursor\",null),P.on(\"mousemove.brush\",null).on(\"mouseup.brush\",null).on(\"touchmove.brush\",null).on(\"touchend.brush\",null).on(\"keydown.brush\",null).on(\"keyup.brush\",null),C(),k({type:\"brushend\"})}var b,x,_=this,w=co.select(co.event.target),k=l.of(_,arguments),A=co.select(_),M=w.datum(),E=!/^(n|s)$/.test(M)&&c,L=!/^(e|w)$/.test(M)&&u,S=w.classed(\"extent\"),C=$(_),z=co.mouse(_),P=co.select(n(_)).on(\"keydown.brush\",a).on(\"keyup.brush\",g);if(co.event.changedTouches?P.on(\"touchmove.brush\",v).on(\"touchend.brush\",y):P.on(\"mousemove.brush\",v).on(\"mouseup.brush\",y),A.interrupt().selectAll(\"*\").interrupt(),S)z[0]=f[0]-z[0],z[1]=h[0]-z[1];else if(M){var R=+/w$/.test(M),O=+/^n/.test(M);x=[f[1-R]-z[0],h[1-O]-z[1]],z[0]=f[R],z[1]=h[O]}else co.event.altKey&&(b=z.slice());A.style(\"pointer-events\",\"none\").selectAll(\".resize\").style(\"display\",null),co.select(\"body\").style(\"cursor\",w.style(\"cursor\")),k({type:\"brushstart\"}),v()}var o,s,l=L(t,\"brushstart\",\"brush\",\"brushend\"),c=null,u=null,f=[0,0],h=[0,0],d=!0,p=!0,g=Kl[0];return t.event=function(t){t.each(function(){var t=l.of(this,arguments),e={x:f,y:h,i:o,j:s},r=this.__chart__||e;this.__chart__=e,Vl?co.select(this).transition().each(\"start.brush\",function(){o=r.i,s=r.j,f=r.x,h=r.y,t({type:\"brushstart\"})}).tween(\"brush:brush\",function(){var r=wn(f,e.x),n=wn(h,e.y);return o=s=null,function(i){f=e.x=r(i),h=e.y=n(i),t({type:\"brush\",mode:\"resize\"})}}).each(\"end.brush\",function(){o=e.i,s=e.j,t({type:\"brush\",mode:\"resize\"}),t({type:\"brushend\"})}):(t({type:\"brushstart\"}),t({type:\"brush\",mode:\"resize\"}),t({type:\"brushend\"}))})},t.x=function(e){return arguments.length?(c=e,g=Kl[!c<<1|!u],t):c},t.y=function(e){return arguments.length?(u=e,g=Kl[!c<<1|!u],t):u},t.clamp=function(e){return arguments.length?(c&&u?(d=!!e[0],p=!!e[1]):c?d=!!e:u&&(p=!!e),t):c&&u?[d,p]:c?d:u?p:null},t.extent=function(e){var r,n,i,a,l;return arguments.length?(c&&(r=e[0],n=e[1],u&&(r=r[0],n=n[0]),o=[r,n],c.invert&&(r=c(r),n=c(n)),r>n&&(l=r,r=n,n=l),r==f[0]&&n==f[1]||(f=[r,n])),u&&(i=e[0],a=e[1],c&&(i=i[1],a=a[1]),s=[i,a],u.invert&&(i=u(i),a=u(a)),i>a&&(l=i,i=a,a=l),i==h[0]&&a==h[1]||(h=[i,a])),t):(c&&(o?(r=o[0],n=o[1]):(r=f[0],n=f[1],c.invert&&(r=c.invert(r),n=c.invert(n)),r>n&&(l=r,r=n,n=l))),u&&(s?(i=s[0],a=s[1]):(i=h[0],a=h[1],u.invert&&(i=u.invert(i),a=u.invert(a)),i>a&&(l=i,i=a,a=l))),c&&u?[[r,i],[n,a]]:c?[r,n]:u&&[i,a])},t.clear=function(){return t.empty()||(f=[0,0],h=[0,0],o=s=null),t},t.empty=function(){return!!c&&f[0]==f[1]||!!u&&h[0]==h[1]},co.rebind(t,l,\"on\")};var Zl={n:\"ns-resize\",e:\"ew-resize\",s:\"ns-resize\",w:\"ew-resize\",nw:\"nwse-resize\",ne:\"nesw-resize\",se:\"nwse-resize\",sw:\"nesw-resize\"},Kl=[[\"n\",\"e\",\"s\",\"w\",\"nw\",\"ne\",\"se\",\"sw\"],[\"e\",\"w\"],[\"n\",\"s\"],[]],$l=vs.format=ws.timeFormat,Ql=$l.utc,Jl=Ql(\"%Y-%m-%dT%H:%M:%S.%LZ\");$l.iso=Date.prototype.toISOString&&+new Date(\"2000-01-01T00:00:00.000Z\")?io:Jl,io.parse=function(t){var e=new Date(t);return isNaN(e)?null:e},io.toString=Jl.toString,vs.second=Vt(function(t){return new ms(1e3*Math.floor(t/1e3))},function(t,e){t.setTime(t.getTime()+1e3*Math.floor(e))},function(t){return t.getSeconds()}),vs.seconds=vs.second.range,vs.seconds.utc=vs.second.utc.range,vs.minute=Vt(function(t){return new ms(6e4*Math.floor(t/6e4))},function(t,e){t.setTime(t.getTime()+6e4*Math.floor(e))},function(t){return t.getMinutes()}),vs.minutes=vs.minute.range,vs.minutes.utc=vs.minute.utc.range,vs.hour=Vt(function(t){var e=t.getTimezoneOffset()/60;return new ms(36e5*(Math.floor(t/36e5-e)+e))},function(t,e){t.setTime(t.getTime()+36e5*Math.floor(e))},function(t){return t.getHours()}),vs.hours=vs.hour.range,vs.hours.utc=vs.hour.utc.range,vs.month=Vt(function(t){return t=vs.day(t),t.setDate(1),t},function(t,e){t.setMonth(t.getMonth()+e)},function(t){return t.getMonth()}),vs.months=vs.month.range,vs.months.utc=vs.month.utc.range;var tc=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],ec=[[vs.second,1],[vs.second,5],[vs.second,15],[vs.second,30],[vs.minute,1],[vs.minute,5],[vs.minute,15],[vs.minute,30],[vs.hour,1],[vs.hour,3],[vs.hour,6],[vs.hour,12],[vs.day,1],[vs.day,2],[vs.week,1],[vs.month,1],[vs.month,3],[vs.year,1]],rc=$l.multi([[\".%L\",function(t){return t.getMilliseconds()}],[\":%S\",function(t){return t.getSeconds()}],[\"%I:%M\",function(t){return t.getMinutes()}],[\"%I %p\",function(t){return t.getHours()}],[\"%a %d\",function(t){return t.getDay()&&1!=t.getDate()}],[\"%b %d\",function(t){return 1!=t.getDate()}],[\"%B\",function(t){return t.getMonth()}],[\"%Y\",ze]]),nc={range:function(t,e,r){return co.range(Math.ceil(t/r)*r,+e,r).map(oo)},floor:x,ceil:x};ec.year=vs.year,vs.scale=function(){return ao(co.scale.linear(),ec,rc)};var ic=ec.map(function(t){return[t[0].utc,t[1]]}),ac=Ql.multi([[\".%L\",function(t){return t.getUTCMilliseconds()}],[\":%S\",function(t){return t.getUTCSeconds()}],[\"%I:%M\",function(t){return t.getUTCMinutes()}],[\"%I %p\",function(t){return t.getUTCHours()}],[\"%a %d\",function(t){return t.getUTCDay()&&1!=t.getUTCDate()}],[\"%b %d\",function(t){return 1!=t.getUTCDate()}],[\"%B\",function(t){return t.getUTCMonth()}],[\"%Y\",ze]]);ic.year=vs.year.utc,vs.scale.utc=function(){return ao(co.scale.linear(),ic,ac)},co.text=St(function(t){return t.responseText}),co.json=function(t,e){return Ct(t,\"application/json\",so,e)},co.html=function(t,e){return Ct(t,\"text/html\",lo,e)},co.xml=St(function(t){return t.responseXML}),\"function\"==typeof t&&t.amd?(this.d3=co,t(co)):\"object\"==typeof r&&r.exports?r.exports=co:this.d3=co}()},{}],114:[function(t,e,r){\"use strict\";function n(t,e){this.point=t,this.index=e}function i(t,e){for(var r=t.point,n=e.point,i=r.length,a=0;i>a;++a){var o=n[a]-r[a];if(o)return o}return 0}function a(t,e,r){if(1===t)return r?[[-1,0]]:[];var n=e.map(function(t,e){return[t[0],e]});n.sort(function(t,e){return t[0]-e[0]});for(var i=new Array(t-1),a=1;t>a;++a){var o=n[a-1],s=n[a];i[a-1]=[o[1],s[1]]}return r&&i.push([-1,i[0][1]],[i[t-1][1],-1]),i}function o(t,e){var r=t.length;if(0===r)return[];var o=t[0].length;if(1>o)return[];if(1===o)return a(r,t,e);for(var c=new Array(r),u=1,f=0;r>f;++f){for(var h=t[f],d=new Array(o+1),p=0,g=0;o>g;++g){var v=h[g];d[g]=v,p+=v*v}d[o]=p,c[f]=new n(d,f),u=Math.max(p,u)}l(c,i),r=c.length;for(var m=new Array(r+o+1),y=new Array(r+o+1),b=(o+1)*(o+1)*u,x=new Array(o+1),f=0;o>=f;++f)x[f]=0;x[o]=b,m[0]=x.slice(),y[0]=-1;for(var f=0;o>=f;++f){var d=x.slice();d[f]=1,m[f+1]=d,y[f+1]=-1}for(var f=0;r>f;++f){var _=c[f];m[f+o+1]=_.point,y[f+o+1]=_.index}var w=s(m,!1);if(w=e?w.filter(function(t){for(var e=0,r=0;o>=r;++r){var n=y[t[r]];if(0>n&&++e>=2)return!1;t[r]=n}return!0}):w.filter(function(t){for(var e=0;o>=e;++e){var r=y[t[e]];if(0>r)return!1;t[e]=r}return!0}),1&o)for(var f=0;f=i)return[];var a,o=new Array(i);if(r===t.length-1)for(a=0;i>a;++a)o[a]=e;else for(a=0;i>a;++a)o[a]=n(t,e,r+1);return o}function i(t,e){var r,n;for(r=new Array(t),n=0;t>n;++n)r[n]=e;return r}function a(t,e){switch(\"undefined\"==typeof e&&(e=0),typeof t){case\"number\":if(t>0)return i(0|t,e);break;case\"object\":if(\"number\"==typeof t.length)return n(t,e,0)}return[]}e.exports=a},{}],116:[function(e,r,n){(function(n,i){(function(){\"use strict\";function a(t){return\"function\"==typeof t||\"object\"==typeof t&&null!==t}function o(t){return\"function\"==typeof t}function s(t){Y=t}function l(t){K=t}function c(){return function(){n.nextTick(p)}}function u(){return function(){G(p)}}function f(){var t=0,e=new J(p),r=document.createTextNode(\"\");return e.observe(r,{characterData:!0}),function(){r.data=t=++t%2}}function h(){var t=new MessageChannel;return t.port1.onmessage=p,function(){t.port2.postMessage(0)}}function d(){return function(){setTimeout(p,1)}}function p(){for(var t=0;Z>t;t+=2){var e=rt[t],r=rt[t+1];e(r),rt[t]=void 0,rt[t+1]=void 0}Z=0}function g(){try{var t=e,r=t(\"vertx\");return G=r.runOnLoop||r.runOnContext,u()}catch(n){return d()}}function v(t,e){var r=this,n=r._state;if(n===ot&&!t||n===st&&!e)return this;var i=new this.constructor(y),a=r._result;if(n){var o=arguments[n-1];K(function(){O(n,i,o,a)})}else C(r,i,t,e);return i}function m(t){var e=this;if(t&&\"object\"==typeof t&&t.constructor===e)return t;var r=new e(y);return T(r,t),r}function y(){}function b(){return new TypeError(\"You cannot resolve a promise with itself\")}function x(){return new TypeError(\"A promises callback cannot return that same promise.\")}function _(t){try{return t.then}catch(e){return lt.error=e,lt}}function w(t,e,r,n){try{t.call(e,r,n)}catch(i){return i}}function k(t,e,r){K(function(t){var n=!1,i=w(r,e,function(r){n||(n=!0,e!==r?T(t,r):L(t,r))},function(e){n||(n=!0,S(t,e))},\"Settle: \"+(t._label||\" unknown promise\"));!n&&i&&(n=!0,S(t,i))},t)}function A(t,e){e._state===ot?L(t,e._result):e._state===st?S(t,e._result):C(e,void 0,function(e){T(t,e)},function(e){S(t,e)})}function M(t,e,r){e.constructor===t.constructor&&r===nt&&constructor.resolve===it?A(t,e):r===lt?S(t,lt.error):void 0===r?L(t,e):o(r)?k(t,e,r):L(t,e)}function T(t,e){t===e?S(t,b()):a(e)?M(t,e,_(e)):L(t,e)}function E(t){t._onerror&&t._onerror(t._result),z(t)}function L(t,e){t._state===at&&(t._result=e,t._state=ot,0!==t._subscribers.length&&K(z,t))}function S(t,e){t._state===at&&(t._state=st,t._result=e,K(E,t))}function C(t,e,r,n){var i=t._subscribers,a=i.length;t._onerror=null,i[a]=e,i[a+ot]=r,i[a+st]=n,0===a&&t._state&&K(z,t)}function z(t){var e=t._subscribers,r=t._state;if(0!==e.length){for(var n,i,a=t._result,o=0;oo;o++)C(n.resolve(t[o]),void 0,e,r);return i}function F(t){var e=this,r=new e(y);return S(r,t),r}function D(){throw new TypeError(\"You must pass a resolver function as the first argument to the promise constructor\")}function B(){throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\")}function U(t){this._id=dt++,this._state=void 0,this._result=void 0,this._subscribers=[],y!==t&&(\"function\"!=typeof t&&D(),this instanceof U?I(this,t):B())}function V(t,e){this._instanceConstructor=t,this.promise=new t(y),Array.isArray(e)?(this._input=e,this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0===this.length?L(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&L(this.promise,this._result))):S(this.promise,this._validationError())}function q(){var t;if(\"undefined\"!=typeof i)t=i;else if(\"undefined\"!=typeof self)t=self;else try{t=Function(\"return this\")()}catch(e){throw new Error(\"polyfill failed because global object is unavailable in this environment\")}var r=t.Promise;r&&\"[object Promise]\"===Object.prototype.toString.call(r.resolve())&&!r.cast||(t.Promise=pt)}var H;H=Array.isArray?Array.isArray:function(t){return\"[object Array]\"===Object.prototype.toString.call(t)};var G,Y,X,W=H,Z=0,K=function(t,e){rt[Z]=t,rt[Z+1]=e,Z+=2,2===Z&&(Y?Y(p):X())},$=\"undefined\"!=typeof window?window:void 0,Q=$||{},J=Q.MutationObserver||Q.WebKitMutationObserver,tt=\"undefined\"!=typeof n&&\"[object process]\"==={}.toString.call(n),et=\"undefined\"!=typeof Uint8ClampedArray&&\"undefined\"!=typeof importScripts&&\"undefined\"!=typeof MessageChannel,rt=new Array(1e3);X=tt?c():J?f():et?h():void 0===$&&\"function\"==typeof e?g():d();var nt=v,it=m,at=void 0,ot=1,st=2,lt=new P,ct=new P,ut=N,ft=j,ht=F,dt=0,pt=U;U.all=ut,U.race=ft,U.resolve=it,U.reject=ht,U._setScheduler=s,U._setAsap=l,U._asap=K,U.prototype={constructor:U,then:nt,\"catch\":function(t){return this.then(null,t)}};var gt=V;V.prototype._validationError=function(){return new Error(\"Array Methods must be provided an Array\")},V.prototype._enumerate=function(){for(var t=this.length,e=this._input,r=0;this._state===at&&t>r;r++)this._eachEntry(e[r],r)},V.prototype._eachEntry=function(t,e){var r=this._instanceConstructor,n=r.resolve;if(n===it){var i=_(t);if(i===nt&&t._state!==at)this._settledAt(t._state,e,t._result);else if(\"function\"!=typeof i)this._remaining--,this._result[e]=t;else if(r===pt){var a=new r(y);M(a,t,i),this._willSettleAt(a,e)}else this._willSettleAt(new r(function(e){e(t)}),e)}else this._willSettleAt(n(t),e)},V.prototype._settledAt=function(t,e,r){var n=this.promise;n._state===at&&(this._remaining--,t===st?S(n,r):this._result[e]=r),0===this._remaining&&L(n,this._result)},V.prototype._willSettleAt=function(t,e){var r=this;C(t,void 0,function(t){r._settledAt(ot,e,t)},function(t){r._settledAt(st,e,t)})};var vt=q,mt={Promise:pt,polyfill:vt};\"function\"==typeof t&&t.amd?t(function(){return mt}):\"undefined\"!=typeof r&&r.exports?r.exports=mt:\"undefined\"!=typeof this&&(this.ES6Promise=mt),vt()}).call(this)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{_process:56}],117:[function(t,e,r){\"use strict\";function n(t){for(var e,r=t.length,n=0;r>n;n++)if(e=t.charCodeAt(n),(9>e||e>13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(8192>e||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}e.exports=function(t){var e=typeof t;if(\"string\"===e){var r=t;if(t=+t,0===t&&n(r))return!1}else if(\"number\"!==e)return!1;return 1>t-t}},{}],118:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){this.gl=t,this.type=e,this.handle=r,this.length=n,this.usage=i}function i(t,e,r,n,i,a){var o=i.length*i.BYTES_PER_ELEMENT;if(0>a)return t.bufferData(e,i,n),o;if(o+a>r)throw new Error(\"gl-buffer: If resizing buffer, must not specify offset\");return t.bufferSubData(e,a,i),r}function a(t,e){for(var r=l.malloc(t.length,e),n=t.length,i=0;n>i;++i)r[i]=t[i];return r}function o(t,e){for(var r=1,n=e.length-1;n>=0;--n){if(e[n]!==r)return!1;r*=t[n]}return!0}function s(t,e,r,i){if(r=r||t.ARRAY_BUFFER,i=i||t.DYNAMIC_DRAW,r!==t.ARRAY_BUFFER&&r!==t.ELEMENT_ARRAY_BUFFER)throw new Error(\"gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER\");if(i!==t.DYNAMIC_DRAW&&i!==t.STATIC_DRAW&&i!==t.STREAM_DRAW)throw new Error(\"gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW\");var a=t.createBuffer(),o=new n(t,r,a,0,i);return o.update(e),o}var l=t(\"typedarray-pool\"),c=t(\"ndarray-ops\"),u=t(\"ndarray\"),f=[\"uint8\",\"uint8_clamped\",\"uint16\",\"uint32\",\"int8\",\"int16\",\"int32\",\"float32\"],h=n.prototype;h.bind=function(){this.gl.bindBuffer(this.type,this.handle)},h.unbind=function(){this.gl.bindBuffer(this.type,null)},h.dispose=function(){this.gl.deleteBuffer(this.handle)},h.update=function(t,e){if(\"number\"!=typeof e&&(e=-1),this.bind(),\"object\"==typeof t&&\"undefined\"!=typeof t.shape){var r=t.dtype;if(f.indexOf(r)<0&&(r=\"float32\"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var n=gl.getExtension(\"OES_element_index_uint\");r=n&&\"uint16\"!==r?\"uint32\":\"uint16\"}if(r===t.dtype&&o(t.shape,t.stride))0===t.offset&&t.data.length===t.shape[0]?this.length=i(this.gl,this.type,this.length,this.usage,t.data,e):this.length=i(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),e);else{var s=l.malloc(t.size,r),h=u(s,t.shape);c.assign(h,t),0>e?this.length=i(this.gl,this.type,this.length,this.usage,s,e):this.length=i(this.gl,this.type,this.length,this.usage,s.subarray(0,t.size),e),l.free(s)}}else if(Array.isArray(t)){var d;d=this.type===this.gl.ELEMENT_ARRAY_BUFFER?a(t,\"uint16\"):a(t,\"float32\"),0>e?this.length=i(this.gl,this.type,this.length,this.usage,d,e):this.length=i(this.gl,this.type,this.length,this.usage,d.subarray(0,t.length),e),l.free(d)}else if(\"object\"==typeof t&&\"number\"==typeof t.length)this.length=i(this.gl,this.type,this.length,this.usage,t,e);else{if(\"number\"!=typeof t&&void 0!==t)throw new Error(\"gl-buffer: Invalid data type\");if(e>=0)throw new Error(\"gl-buffer: Cannot specify offset when resizing buffer\");t=0|t,0>=t&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},e.exports=s},{ndarray:253,\"ndarray-ops\":252,\"typedarray-pool\":278}],119:[function(t,e,r){\"use strict\";function n(t,e,r){this.plot=t,this.shader=e,this.buffer=r,this.bounds=[1/0,1/0,-(1/0),-(1/0)],this.numPoints=0,this.color=[0,0,0,1]}function i(t,e){var r=a(t.gl,l.vertex,l.fragment),i=o(t.gl),s=new n(t,r,i);return s.update(e),t.addObject(s),s}var a=t(\"gl-shader\"),o=t(\"gl-buffer\"),s=t(\"typedarray-pool\"),l=t(\"./lib/shaders\");e.exports=i;var c=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]],u=n.prototype;u.draw=function(){var t=[1,0,0,0,1,0,0,0,1],e=[1,1];return function(){var r=this.plot,n=this.shader,i=this.buffer,a=this.bounds,o=this.numPoints;if(o){var s=r.gl,l=r.dataBox,u=r.viewBox,f=r.pixelRatio,h=a[2]-a[0],d=a[3]-a[1],p=l[2]-l[0],g=l[3]-l[1];t[0]=2*h/p,t[4]=2*d/g,t[6]=2*(a[0]-l[0])/p-1,t[7]=2*(a[1]-l[1])/g-1;var v=u[2]-u[0],m=u[3]-u[1];e[0]=2*f/v,e[1]=2*f/m,i.bind(),n.bind(),n.uniforms.viewTransform=t,\n", + "n.uniforms.pixelScale=e,n.uniforms.color=this.color,n.attributes.position.pointer(s.FLOAT,!1,16,0),n.attributes.pixelOffset.pointer(s.FLOAT,!1,16,8),s.drawArrays(s.TRIANGLES,0,o*c.length)}}}(),u.drawPick=function(t){return t},u.pick=function(t,e){return null},u.update=function(t){t=t||{};var e,r,n,i=t.positions||[],a=t.errors||[],o=1;\"lineWidth\"in t&&(o=+t.lineWidth);var l=5;\"capSize\"in t&&(l=+t.capSize),this.color=(t.color||[0,0,0,1]).slice();var u=this.bounds=[1/0,1/0,-(1/0),-(1/0)],f=this.numPoints=i.length>>1;for(e=0;f>e;++e)r=i[2*e],n=i[2*e+1],u[0]=Math.min(r,u[0]),u[1]=Math.min(n,u[1]),u[2]=Math.max(r,u[2]),u[3]=Math.max(n,u[3]);u[2]===u[0]&&(u[2]+=1),u[3]===u[1]&&(u[3]+=1);var h=1/(u[2]-u[0]),d=1/(u[3]-u[1]),p=u[0],g=u[1],v=s.mallocFloat32(f*c.length*4),m=0;for(e=0;f>e;++e){r=i[2*e],n=i[2*e+1];for(var y=a[4*e],b=a[4*e+1],x=a[4*e+2],_=a[4*e+3],w=0;wA?A*=y:A>0&&(A*=b),0>M?M*=x:M>0&&(M*=_),v[m++]=h*(r-p+A),v[m++]=d*(n-g+M),v[m++]=o*k[2]+(l+o)*k[4],v[m++]=o*k[3]+(l+o)*k[5]}}this.buffer.update(v),s.free(v)},u.dispose=function(){this.plot.removeObject(this),this.shader.dispose(),this.buffer.dispose()}},{\"./lib/shaders\":120,\"gl-buffer\":118,\"gl-shader\":197,\"typedarray-pool\":278}],120:[function(t,e,r){e.exports={vertex:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec2 pixelOffset;\\n\\nuniform mat3 viewTransform;\\nuniform vec2 pixelScale;\\n\\nvoid main() {\\n vec3 scrPosition = viewTransform * vec3(position, 1);\\n gl_Position = vec4(\\n scrPosition.xy + scrPosition.z * pixelScale * pixelOffset,\\n 0,\\n scrPosition.z);\\n}\\n\",fragment:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\n\\nvoid main() {\\n gl_FragColor = vec4(color.rgb * color.a, color.a);\\n}\\n\"}},{}],121:[function(t,e,r){\"use strict\";function n(t,e,r,n){this.gl=t,this.shader=n,this.buffer=e,this.vao=r,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]],this.clipBounds=[[-(1/0),-(1/0),-(1/0)],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1}function i(t,e){for(var r=0;3>r;++r)t[0][r]=Math.min(t[0][r],e[r]),t[1][r]=Math.max(t[1][r],e[r])}function a(t,e,r,n){for(var i=h[n],a=0;a=1},f.isTransparent=function(){return this.opacity<1},f.drawTransparent=f.draw=function(t){var e=this.gl,r=this.shader.uniforms;this.shader.bind();var n=r.view=t.view||u,i=r.projection=t.projection||u;r.model=t.model||u,r.clipBounds=this.clipBounds,r.opacity=this.opacity;var a=n[12],o=n[13],s=n[14],l=n[15],c=this.pixelRatio*(i[3]*a+i[7]*o+i[11]*s+i[15]*l)/e.drawingBufferHeight;this.vao.bind();for(var f=0;3>f;++f)e.lineWidth(this.lineWidth[f]),r.capSize=this.capSize[f]*c,e.drawArrays(e.LINES,this.lineOffset[f],this.lineCount[f]);this.vao.unbind()};var h=function(){for(var t=new Array(3),e=0;3>e;++e){for(var r=[],n=1;2>=n;++n)for(var i=-1;1>=i;i+=2){var a=(n+e)%3,o=[0,0,0];o[a]=i,r.push(o)}t[e]=r}return t}();f.update=function(t){t=t||{},\"lineWidth\"in t&&(this.lineWidth=t.lineWidth,Array.isArray(this.lineWidth)||(this.lineWidth=[this.lineWidth,this.lineWidth,this.lineWidth])),\"capSize\"in t&&(this.capSize=t.capSize,Array.isArray(this.capSize)||(this.capSize=[this.capSize,this.capSize,this.capSize])),\"opacity\"in t&&(this.opacity=t.opacity);var e=t.color||[[0,0,0],[0,0,0],[0,0,0]],r=t.position,n=t.error;if(Array.isArray(e[0])||(e=[e,e,e]),r&&n){var o=[],s=r.length,l=0;this.bounds=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]],this.lineCount=[0,0,0];for(var c=0;3>c;++c){this.lineOffset[c]=l;t:for(var u=0;s>u;++u){for(var f=r[u],h=0;3>h;++h)if(isNaN(f[h])||!isFinite(f[h]))continue t;var d=n[u],p=e[c];if(Array.isArray(p[0])&&(p=e[u]),3===p.length&&(p=[p[0],p[1],p[2],1]),!isNaN(d[0][c])&&!isNaN(d[1][c])){if(d[0][c]<0){var g=f.slice();g[c]+=d[0][c],o.push(f[0],f[1],f[2],p[0],p[1],p[2],p[3],0,0,0,g[0],g[1],g[2],p[0],p[1],p[2],p[3],0,0,0),i(this.bounds,g),l+=2+a(o,g,p,c)}if(d[1][c]>0){var g=f.slice();g[c]+=d[1][c],o.push(f[0],f[1],f[2],p[0],p[1],p[2],p[3],0,0,0,g[0],g[1],g[2],p[0],p[1],p[2],p[3],0,0,0),i(this.bounds,g),l+=2+a(o,g,p,c)}}}this.lineCount[c]=l-this.lineOffset[c]}this.buffer.update(o)}},f.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},{\"./shaders/index\":122,\"gl-buffer\":118,\"gl-vao\":226}],122:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, offset;\\nattribute vec4 color;\\nuniform mat4 model, view, projection;\\nuniform float capSize;\\nvarying vec4 fragColor;\\nvarying vec3 fragPosition;\\n\\nvoid main() {\\n vec4 worldPosition = model * vec4(position, 1.0);\\n worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);\\n gl_Position = projection * view * worldPosition;\\n fragColor = color;\\n fragPosition = position;\\n}\",a=\"precision mediump float;\\n#define GLSLIFY 1\\nuniform vec3 clipBounds[2];\\nuniform float opacity;\\nvarying vec3 fragPosition;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n if(any(lessThan(fragPosition, clipBounds[0])) || any(greaterThan(fragPosition, clipBounds[1]))) {\\n discard;\\n }\\n gl_FragColor = opacity * fragColor;\\n}\";e.exports=function(t){return n(t,i,a,null,[{name:\"position\",type:\"vec3\"},{name:\"offset\",type:\"vec3\"},{name:\"color\",type:\"vec4\"}])}},{\"gl-shader\":197}],123:[function(t,e,r){\"use strict\";function n(t){var e=t.getParameter(t.FRAMEBUFFER_BINDING),r=t.getParameter(t.RENDERBUFFER_BINDING),n=t.getParameter(t.TEXTURE_BINDING_2D);return[e,r,n]}function i(t,e){t.bindFramebuffer(t.FRAMEBUFFER,e[0]),t.bindRenderbuffer(t.RENDERBUFFER,e[1]),t.bindTexture(t.TEXTURE_2D,e[2])}function a(t,e){var r=t.getParameter(e.MAX_COLOR_ATTACHMENTS_WEBGL);y=new Array(r+1);for(var n=0;r>=n;++n){for(var i=new Array(r),a=0;n>a;++a)i[a]=t.COLOR_ATTACHMENT0+a;for(var a=n;r>a;++a)i[a]=t.NONE;y[n]=i}}function o(t){switch(t){case p:throw new Error(\"gl-fbo: Framebuffer unsupported\");case g:throw new Error(\"gl-fbo: Framebuffer incomplete attachment\");case v:throw new Error(\"gl-fbo: Framebuffer incomplete dimensions\");case m:throw new Error(\"gl-fbo: Framebuffer incomplete missing attachment\");default:throw new Error(\"gl-fbo: Framebuffer failed for unspecified reason\")}}function s(t,e,r,n,i,a){if(!n)return null;var o=d(t,e,r,i,n);return o.magFilter=t.NEAREST,o.minFilter=t.NEAREST,o.mipSamples=1,o.bind(),t.framebufferTexture2D(t.FRAMEBUFFER,a,t.TEXTURE_2D,o.handle,0),o}function l(t,e,r,n,i){var a=t.createRenderbuffer();return t.bindRenderbuffer(t.RENDERBUFFER,a),t.renderbufferStorage(t.RENDERBUFFER,n,e,r),t.framebufferRenderbuffer(t.FRAMEBUFFER,i,t.RENDERBUFFER,a),a}function c(t){var e=n(t.gl),r=t.gl,a=t.handle=r.createFramebuffer(),c=t._shape[0],u=t._shape[1],f=t.color.length,h=t._ext,d=t._useStencil,p=t._useDepth,g=t._colorType;r.bindFramebuffer(r.FRAMEBUFFER,a);for(var v=0;f>v;++v)t.color[v]=s(r,c,u,g,r.RGBA,r.COLOR_ATTACHMENT0+v);0===f?(t._color_rb=l(r,c,u,r.RGBA4,r.COLOR_ATTACHMENT0),h&&h.drawBuffersWEBGL(y[0])):f>1&&h.drawBuffersWEBGL(y[f]);var m=r.getExtension(\"WEBGL_depth_texture\");m?d?t.depth=s(r,c,u,m.UNSIGNED_INT_24_8_WEBGL,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):p&&(t.depth=s(r,c,u,r.UNSIGNED_SHORT,r.DEPTH_COMPONENT,r.DEPTH_ATTACHMENT)):p&&d?t._depth_rb=l(r,c,u,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):p?t._depth_rb=l(r,c,u,r.DEPTH_COMPONENT16,r.DEPTH_ATTACHMENT):d&&(t._depth_rb=l(r,c,u,r.STENCIL_INDEX,r.STENCIL_ATTACHMENT));var b=r.checkFramebufferStatus(r.FRAMEBUFFER);if(b!==r.FRAMEBUFFER_COMPLETE){t._destroyed=!0,r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteFramebuffer(t.handle),t.handle=null,t.depth&&(t.depth.dispose(),t.depth=null),t._depth_rb&&(r.deleteRenderbuffer(t._depth_rb),t._depth_rb=null);for(var v=0;vl;++l)this.color[l]=null;this._color_rb=null,this.depth=null,this._depth_rb=null,this._colorType=n,this._useDepth=a,this._useStencil=o;var u=this,f=[0|e,0|r];Object.defineProperties(f,{0:{get:function(){return u._shape[0]},set:function(t){return u.width=t}},1:{get:function(){return u._shape[1]},set:function(t){return u.height=t}}}),this._shapeVector=f,c(this)}function f(t,e,r){if(t._destroyed)throw new Error(\"gl-fbo: Can't resize destroyed FBO\");if(t._shape[0]!==e||t._shape[1]!==r){var a=t.gl,s=a.getParameter(a.MAX_RENDERBUFFER_SIZE);if(0>e||e>s||0>r||r>s)throw new Error(\"gl-fbo: Can't resize FBO, invalid dimensions\");t._shape[0]=e,t._shape[1]=r;for(var l=n(a),c=0;ce||e>o||0>r||r>o)throw new Error(\"gl-fbo: Parameters are too large for FBO\");n=n||{};var s=1;if(\"color\"in n){if(s=Math.max(0|n.color,0),0>s)throw new Error(\"gl-fbo: Must specify a nonnegative number of colors\");if(s>1){if(!i)throw new Error(\"gl-fbo: Multiple draw buffer extension not supported\");if(s>t.getParameter(i.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error(\"gl-fbo: Context does not support \"+s+\" draw buffers\")}}var l=t.UNSIGNED_BYTE,c=t.getExtension(\"OES_texture_float\");if(n.float&&s>0){if(!c)throw new Error(\"gl-fbo: Context does not support floating point textures\");l=t.FLOAT}else n.preferFloat&&s>0&&c&&(l=t.FLOAT);var f=!0;\"depth\"in n&&(f=!!n.depth);var h=!1;return\"stencil\"in n&&(h=!!n.stencil),new u(t,e,r,l,s,f,h,i)}var d=t(\"gl-texture2d\");e.exports=h;var p,g,v,m,y=null,b=u.prototype;Object.defineProperties(b,{shape:{get:function(){return this._destroyed?[0,0]:this._shapeVector},set:function(t){if(Array.isArray(t)||(t=[0|t,0|t]),2!==t.length)throw new Error(\"gl-fbo: Shape vector must be length 2\");var e=0|t[0],r=0|t[1];return f(this,e,r),[e,r]},enumerable:!1},width:{get:function(){return this._destroyed?0:this._shape[0]},set:function(t){return t=0|t,f(this,t,this._shape[1]),t},enumerable:!1},height:{get:function(){return this._destroyed?0:this._shape[1]},set:function(t){return t=0|t,f(this,this._shape[0],t),t},enumerable:!1}}),b.bind=function(){if(!this._destroyed){var t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,this.handle),t.viewport(0,0,this._shape[0],this._shape[1])}},b.dispose=function(){if(!this._destroyed){this._destroyed=!0;var t=this.gl;t.deleteFramebuffer(this.handle),this.handle=null,this.depth&&(this.depth.dispose(),this.depth=null),this._depth_rb&&(t.deleteRenderbuffer(this._depth_rb),this._depth_rb=null);for(var e=0;e 0.25) {\\n discard;\\n }\\n gl_FragColor = vec4(color.rgb, color.a);\\n}\\n\",r.pickVertex=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 a, d;\\nattribute vec4 pick0, pick1;\\n\\nuniform mat3 matrix;\\nuniform vec2 screenShape;\\nuniform float width;\\n\\nvarying vec4 pickA, pickB;\\n\\nfloat inverse_1_0(float m) {\\n return 1.0 / m;\\n}\\n\\nmat2 inverse_1_0(mat2 m) {\\n return mat2(m[1][1],-m[0][1],\\n -m[1][0], m[0][0]) / (m[0][0]*m[1][1] - m[0][1]*m[1][0]);\\n}\\n\\nmat3 inverse_1_0(mat3 m) {\\n float a00 = m[0][0], a01 = m[0][1], a02 = m[0][2];\\n float a10 = m[1][0], a11 = m[1][1], a12 = m[1][2];\\n float a20 = m[2][0], a21 = m[2][1], a22 = m[2][2];\\n\\n float b01 = a22 * a11 - a12 * a21;\\n float b11 = -a22 * a10 + a12 * a20;\\n float b21 = a21 * a10 - a11 * a20;\\n\\n float det = a00 * b01 + a01 * b11 + a02 * b21;\\n\\n return mat3(b01, (-a22 * a01 + a02 * a21), (a12 * a01 - a02 * a11),\\n b11, (a22 * a00 - a02 * a20), (-a12 * a00 + a02 * a10),\\n b21, (-a21 * a00 + a01 * a20), (a11 * a00 - a01 * a10)) / det;\\n}\\n\\nmat4 inverse_1_0(mat4 m) {\\n float\\n a00 = m[0][0], a01 = m[0][1], a02 = m[0][2], a03 = m[0][3],\\n a10 = m[1][0], a11 = m[1][1], a12 = m[1][2], a13 = m[1][3],\\n a20 = m[2][0], a21 = m[2][1], a22 = m[2][2], a23 = m[2][3],\\n a30 = m[3][0], a31 = m[3][1], a32 = m[3][2], a33 = m[3][3],\\n\\n b00 = a00 * a11 - a01 * a10,\\n b01 = a00 * a12 - a02 * a10,\\n b02 = a00 * a13 - a03 * a10,\\n b03 = a01 * a12 - a02 * a11,\\n b04 = a01 * a13 - a03 * a11,\\n b05 = a02 * a13 - a03 * a12,\\n b06 = a20 * a31 - a21 * a30,\\n b07 = a20 * a32 - a22 * a30,\\n b08 = a20 * a33 - a23 * a30,\\n b09 = a21 * a32 - a22 * a31,\\n b10 = a21 * a33 - a23 * a31,\\n b11 = a22 * a33 - a23 * a32,\\n\\n det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\\n\\n return mat4(\\n a11 * b11 - a12 * b10 + a13 * b09,\\n a02 * b10 - a01 * b11 - a03 * b09,\\n a31 * b05 - a32 * b04 + a33 * b03,\\n a22 * b04 - a21 * b05 - a23 * b03,\\n a12 * b08 - a10 * b11 - a13 * b07,\\n a00 * b11 - a02 * b08 + a03 * b07,\\n a32 * b02 - a30 * b05 - a33 * b01,\\n a20 * b05 - a22 * b02 + a23 * b01,\\n a10 * b10 - a11 * b08 + a13 * b06,\\n a01 * b08 - a00 * b10 - a03 * b06,\\n a30 * b04 - a31 * b02 + a33 * b00,\\n a21 * b02 - a20 * b04 - a23 * b00,\\n a11 * b07 - a10 * b09 - a12 * b06,\\n a00 * b09 - a01 * b07 + a02 * b06,\\n a31 * b01 - a30 * b03 - a32 * b00,\\n a20 * b03 - a21 * b01 + a22 * b00) / det;\\n}\\n\\n\\n\\nvoid main() {\\n vec3 base = matrix * vec3(a, 1);\\n vec2 n = width *\\n normalize(screenShape.yx * vec2(d.y, -d.x)) / screenShape.xy;\\n gl_Position = vec4(base.xy/base.z + n, 0, 1);\\n pickA = pick0;\\n pickB = pick1;\\n}\\n\",r.pickFragment=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 pickOffset;\\n\\nvarying vec4 pickA, pickB;\\n\\nvoid main() {\\n vec4 fragId = vec4(pickA.xyz, 0.0);\\n if(pickB.w > pickA.w) {\\n fragId.xyz = pickB.xyz;\\n }\\n\\n fragId += pickOffset;\\n\\n fragId.y += floor(fragId.x / 256.0);\\n fragId.x -= floor(fragId.x / 256.0) * 256.0;\\n\\n fragId.z += floor(fragId.y / 256.0);\\n fragId.y -= floor(fragId.y / 256.0) * 256.0;\\n\\n fragId.w += floor(fragId.z / 256.0);\\n fragId.z -= floor(fragId.z / 256.0) * 256.0;\\n\\n gl_FragColor = fragId / 255.0;\\n}\\n\",r.fillVertex=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 a, d;\\n\\nuniform mat3 matrix;\\nuniform vec2 projectAxis;\\nuniform float projectValue;\\nuniform float depth;\\n\\nvoid main() {\\n vec3 base = matrix * vec3(a, 1);\\n vec2 p = base.xy / base.z;\\n if(d.y < 0.0 || (d.y == 0.0 && d.x < 0.0)) {\\n if(dot(p, projectAxis) < projectValue) {\\n p = p * (1.0 - abs(projectAxis)) + projectAxis * projectValue;\\n }\\n }\\n gl_Position = vec4(p, depth, 1);\\n}\\n\",r.fillFragment=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\n\\nvoid main() {\\n gl_FragColor = vec4(color.rgb * color.a, color.a);\\n}\\n\"},{}],125:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a,o,s){this.plot=t,this.dashPattern=e,this.lineBuffer=r,this.pickBuffer=n,this.lineShader=i,this.mitreShader=a,this.fillShader=o,this.pickShader=s,this.usingDashes=!1,this.bounds=[1/0,1/0,-(1/0),-(1/0)],this.width=1,this.color=[0,0,1,1],this.fill=[!1,!1,!1,!1],this.fillColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.data=null,this.numPoints=0,this.vertCount=0,this.pickOffset=0,this.lodBuffer=[]}function i(t){return t.map(function(t){return t.slice()})}function a(t,e){var r=t.gl,i=s(r),a=s(r),c=l(r,[1,1]),u=o(r,f.lineVertex,f.lineFragment),h=o(r,f.mitreVertex,f.mitreFragment),d=o(r,f.fillVertex,f.fillFragment),p=o(r,f.pickVertex,f.pickFragment),g=new n(t,c,i,a,u,h,d,p);return t.addObject(g),g.update(e),g}e.exports=a;var o=t(\"gl-shader\"),s=t(\"gl-buffer\"),l=t(\"gl-texture2d\"),c=t(\"ndarray\"),u=t(\"typedarray-pool\"),f=t(\"./lib/shaders\"),h=n.prototype;h.draw=function(){var t=[1,0,0,0,1,0,0,0,1],e=[0,0],r=[1,0],n=[-1,0],i=[0,1],a=[0,-1];return function(){var o=this.plot,s=this.color,l=this.width,c=(this.numPoints,this.bounds),u=this.vertCount;if(u){var f=o.gl,h=o.viewBox,d=o.dataBox,p=o.pixelRatio,g=c[2]-c[0],v=c[3]-c[1],m=d[2]-d[0],y=d[3]-d[1],b=h[2]-h[0],x=h[3]-h[1];t[0]=2*g/m,t[4]=2*v/y,t[6]=2*(c[0]-d[0])/m-1,t[7]=2*(c[1]-d[1])/y-1,e[0]=b,e[1]=x;var _=this.lineBuffer;_.bind();var w=this.fill;if(w[0]||w[1]||w[2]||w[3]){var k=this.fillShader;k.bind();var A=k.uniforms;A.matrix=t,A.depth=o.nextDepthValue();var M=k.attributes;M.a.pointer(f.FLOAT,!1,16,0),M.d.pointer(f.FLOAT,!1,16,8),f.depthMask(!0),f.enable(f.DEPTH_TEST);var T=this.fillColor;w[0]&&(A.color=T[0],A.projectAxis=n,A.projectValue=1,f.drawArrays(f.TRIANGLES,0,u)),w[1]&&(A.color=T[1],A.projectAxis=a,A.projectValue=1,f.drawArrays(f.TRIANGLES,0,u)),w[2]&&(A.color=T[2],A.projectAxis=r,A.projectValue=1,f.drawArrays(f.TRIANGLES,0,u)),w[3]&&(A.color=T[3],A.projectAxis=i,A.projectValue=1,f.drawArrays(f.TRIANGLES,0,u)),f.depthMask(!1),f.disable(f.DEPTH_TEST)}var E=this.lineShader;E.bind();var L=E.uniforms;L.matrix=t,L.color=s,L.width=l*p,L.screenShape=e,L.dashPattern=this.dashPattern.bind(),L.dashLength=this.dashLength*p;var S=E.attributes;if(S.a.pointer(f.FLOAT,!1,16,0),S.d.pointer(f.FLOAT,!1,16,8),f.drawArrays(f.TRIANGLES,0,u),l>2&&!this.usingDashes){var C=this.mitreShader;C.bind();var z=C.uniforms;z.matrix=t,z.color=s,z.screenShape=e,z.radius=l*p,C.attributes.p.pointer(f.FLOAT,!1,48,0),f.drawArrays(f.POINTS,0,u/3|0)}}}}(),h.drawPick=function(){var t=[1,0,0,0,1,0,0,0,1],e=[0,0],r=[0,0,0,0];return function(n){var i=this.plot,a=this.pickShader,o=this.lineBuffer,s=this.pickBuffer,l=this.width,c=this.numPoints,u=this.bounds,f=this.vertCount,h=i.gl,d=i.viewBox,p=i.dataBox,g=i.pickPixelRatio,v=u[2]-u[0],m=u[3]-u[1],y=p[2]-p[0],b=p[3]-p[1],x=d[2]-d[0],_=d[3]-d[1];if(this.pickOffset=n,!f)return n+c;t[0]=2*v/y,t[4]=2*m/b,t[6]=2*(u[0]-p[0])/y-1,t[7]=2*(u[1]-p[1])/b-1,e[0]=x,e[1]=_,r[0]=255&n,r[1]=n>>>8&255,r[2]=n>>>16&255,r[3]=n>>>24,a.bind();var w=a.uniforms;w.matrix=t,w.width=l*g,w.pickOffset=r,w.screenShape=e;var k=a.attributes;return o.bind(),k.a.pointer(h.FLOAT,!1,16,0),k.d.pointer(h.FLOAT,!1,16,8),s.bind(),k.pick0.pointer(h.UNSIGNED_BYTE,!1,8,0),k.pick1.pointer(h.UNSIGNED_BYTE,!1,8,4),h.drawArrays(h.TRIANGLES,0,f),n+c}}(),h.pick=function(t,e,r){var n=this.pickOffset,i=this.numPoints;if(n>r||r>=n+i)return null;var a=r-n,o=this.data;return{object:this,pointId:a,dataCoord:[o[2*a],o[2*a+1]]}},h.update=function(t){t=t||{};var e=this.plot.gl;!!t.connectGaps;this.color=(t.color||[0,0,1,1]).slice(),this.width=+(t.width||1),this.fill=(t.fill||[!1,!1,!1,!1]).slice(),this.fillColor=i(t.fillColor||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]);for(var r=t.dashes||[1],n=0,a=0;a1,this.dashPattern=l(e,c(o,[n,1,4],[1,0,0])),this.dashPattern.minFilter=e.NEAREST,this.dashPattern.magFilter=e.NEAREST,this.dashLength=n,u.free(o);var d=t.positions;this.data=d;var p=this.bounds;p[0]=p[1]=1/0,p[2]=p[3]=-(1/0);var g=this.numPoints=d.length>>>1;if(0!==g){for(var a=0;g>a;++a){var v=d[2*a],m=d[2*a+1];isNaN(v)||isNaN(m)||(p[0]=Math.min(p[0],v),p[1]=Math.min(p[1],m),p[2]=Math.max(p[2],v),p[3]=Math.max(p[3],m))}p[0]===p[2]&&(p[2]+=1),p[3]===p[1]&&(p[3]+=1);for(var y=u.mallocFloat32(24*(g-1)),b=u.mallocUint32(12*(g-1)),x=y.length,_=b.length,s=g,w=0;s>1;){var k=--s,v=d[2*s],m=d[2*s+1],A=k-1,M=d[2*A],T=d[2*A+1];if(!(isNaN(v)||isNaN(m)||isNaN(M)||isNaN(T))){w+=1,v=(v-p[0])/(p[2]-p[0]),m=(m-p[1])/(p[3]-p[1]),M=(M-p[0])/(p[2]-p[0]),T=(T-p[1])/(p[3]-p[1]);var E=M-v,L=T-m,S=k|1<<24,C=k-1,z=k,P=k-1|1<<24;y[--x]=-L,y[--x]=-E,y[--x]=m,y[--x]=v,b[--_]=S,b[--_]=C,y[--x]=L,y[--x]=E,y[--x]=T,y[--x]=M,b[--_]=z,b[--_]=P,y[--x]=-L,y[--x]=-E,y[--x]=T,y[--x]=M,b[--_]=z,b[--_]=P,y[--x]=L,y[--x]=E,y[--x]=T,y[--x]=M,b[--_]=z,b[--_]=P,y[--x]=-L,y[--x]=-E,y[--x]=m,y[--x]=v,b[--_]=S,b[--_]=C,y[--x]=L,y[--x]=E,y[--x]=m,y[--x]=v,b[--_]=S,b[--_]=C}}this.vertCount=6*w,this.lineBuffer.update(y.subarray(x)),this.pickBuffer.update(b.subarray(_)),u.free(y),u.free(b)}},h.dispose=function(){this.plot.removeObject(this),this.lineBuffer.dispose(),this.pickBuffer.dispose(),this.lineShader.dispose(),this.mitreShader.dispose(),this.fillShader.dispose(),this.pickShader.dispose(),this.dashPattern.dispose()}},{\"./lib/shaders\":124,\"gl-buffer\":118,\"gl-shader\":197,\"gl-texture2d\":222,ndarray:253,\"typedarray-pool\":278}],126:[function(t,e,r){var n=t(\"gl-shader\"),i=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, nextPosition;\\nattribute float arcLength, lineWidth;\\nattribute vec4 color;\\n\\nuniform vec2 screenShape;\\nuniform float pixelRatio;\\nuniform mat4 model, view, projection;\\n\\nvarying vec4 fragColor;\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\n\\nvoid main() {\\n vec4 projected = projection * view * model * vec4(position, 1.0);\\n vec4 tangentClip = projection * view * model * vec4(nextPosition - position, 0.0);\\n vec2 tangent = normalize(screenShape * tangentClip.xy);\\n vec2 offset = 0.5 * pixelRatio * lineWidth * vec2(tangent.y, -tangent.x) / screenShape;\\n\\n gl_Position = vec4(projected.xy + projected.w * offset, projected.zw);\\n\\n worldPosition = position;\\n pixelArcLength = arcLength;\\n fragColor = color;\\n}\\n\",a=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 clipBounds[2];\\nuniform sampler2D dashTexture;\\nuniform float dashScale;\\nuniform float opacity;\\n\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n if(any(lessThan(worldPosition, clipBounds[0])) || any(greaterThan(worldPosition, clipBounds[1]))) {\\n discard;\\n }\\n float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;\\n if(dashWeight < 0.5) {\\n discard;\\n }\\n gl_FragColor = fragColor * opacity;\\n}\\n\",o=\"precision mediump float;\\n#define GLSLIFY 1\\n\\n#define FLOAT_MAX 1.70141184e38\\n#define FLOAT_MIN 1.17549435e-38\\n\\nlowp vec4 encode_float_1_0(highp float v) {\\n highp float av = abs(v);\\n\\n //Handle special cases\\n if(av < FLOAT_MIN) {\\n return vec4(0.0, 0.0, 0.0, 0.0);\\n } else if(v > FLOAT_MAX) {\\n return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\\n } else if(v < -FLOAT_MAX) {\\n return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\\n }\\n\\n highp vec4 c = vec4(0,0,0,0);\\n\\n //Compute exponent and mantissa\\n highp float e = floor(log2(av));\\n highp float m = av * pow(2.0, -e) - 1.0;\\n \\n //Unpack mantissa\\n c[1] = floor(128.0 * m);\\n m -= c[1] / 128.0;\\n c[2] = floor(32768.0 * m);\\n m -= c[2] / 32768.0;\\n c[3] = floor(8388608.0 * m);\\n \\n //Unpack exponent\\n highp float ebias = e + 127.0;\\n c[0] = floor(ebias / 2.0);\\n ebias -= c[0] * 2.0;\\n c[1] += floor(ebias) * 128.0; \\n\\n //Unpack sign bit\\n c[0] += 128.0 * step(0.0, -v);\\n\\n //Scale back to range\\n return c / 255.0;\\n}\\n\\n\\n\\nuniform float pickId;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec3 worldPosition;\\nvarying float pixelArcLength;\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n if(any(lessThan(worldPosition, clipBounds[0])) || any(greaterThan(worldPosition, clipBounds[1]))) {\\n discard;\\n }\\n gl_FragColor = vec4(pickId/255.0, encode_float_1_0(pixelArcLength).xyz);\\n}\",s=[{name:\"position\",type:\"vec3\"},{name:\"nextPosition\",type:\"vec3\"},{name:\"arcLength\",type:\"float\"},{name:\"lineWidth\",type:\"float\"},{name:\"color\",type:\"vec4\"}];r.createShader=function(t){return n(t,i,a,null,s)},r.createPickShader=function(t){return n(t,i,o,null,s)}},{\"gl-shader\":197}],127:[function(t,e,r){\"use strict\";function n(t,e){for(var r=0,n=0;3>n;++n){var i=t[n]-e[n];r+=i*i}return Math.sqrt(r)}function i(t){for(var e=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],r=0;3>r;++r)e[0][r]=Math.max(t[0][r],e[0][r]),e[1][r]=Math.min(t[1][r],e[1][r]);return e}function a(t,e,r,n){this.arcLength=t,this.position=e,this.index=r,this.dataCoordinate=n}function o(t,e,r,n,i,a){this.gl=t,this.shader=e,this.pickShader=r,this.buffer=n,this.vao=i,this.clipBounds=[[-(1/0),-(1/0),-(1/0)],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=a,this.dashScale=1,this.opacity=1,this.dirty=!0,this.pixelRatio=1}function s(t){var e=t.gl||t.scene&&t.scene.gl,r=g(e);r.attributes.position.location=0,r.attributes.nextPosition.location=1,r.attributes.arcLength.location=2,r.attributes.lineWidth.location=3,r.attributes.color.location=4;var n=v(e);n.attributes.position.location=0,n.attributes.nextPosition.location=1,n.attributes.arcLength.location=2,n.attributes.lineWidth.location=3,n.attributes.color.location=4;for(var i=l(e),a=c(e,[{buffer:i,size:3,offset:0,stride:48},{buffer:i,size:3,offset:12,stride:48},{buffer:i,size:1,offset:24,stride:48},{buffer:i,size:1,offset:28,stride:48},{buffer:i,size:4,offset:32,stride:48}]),s=d(new Array(1024),[256,1,4]),f=0;1024>f;++f)s.data[f]=255;var h=u(e,s);h.wrap=e.REPEAT;var p=new o(e,r,n,i,a,h);return p.update(t),p}e.exports=s;var l=t(\"gl-buffer\"),c=t(\"gl-vao\"),u=t(\"gl-texture2d\"),f=t(\"glsl-read-float\"),h=t(\"binary-search-bounds\"),d=t(\"ndarray\"),p=t(\"./lib/shaders\"),g=p.createShader,v=p.createPickShader,m=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],y=o.prototype;y.isTransparent=function(){return this.opacity<1},y.isOpaque=function(){return this.opacity>=1},y.pickSlots=1,y.setPickBase=function(t){this.pickId=t},y.drawTransparent=y.draw=function(t){var e=this.gl,r=this.shader,n=this.vao;r.bind(),r.uniforms={model:t.model||m,view:t.view||m,projection:t.projection||m,clipBounds:i(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount)},y.drawPick=function(t){var e=this.gl,r=this.pickShader,n=this.vao;r.bind(),r.uniforms={model:t.model||m,view:t.view||m,projection:t.projection||m,pickId:this.pickId,clipBounds:i(this.clipBounds),screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount)},y.update=function(t){var e,r;this.dirty=!0;var i=!!t.connectGaps;\"dashScale\"in t&&(this.dashScale=t.dashScale),\"opacity\"in t&&(this.opacity=+t.opacity);var a=t.position||t.positions;if(a){var o=t.color||t.colors||[0,0,0,1],s=t.lineWidth||1,l=[],c=[],u=[],f=0,p=0,g=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]],v=!1;t:for(e=1;er;++r){if(isNaN(m[r])||isNaN(y[r])||!isFinite(m[r])||!isFinite(y[r])){if(!i&&l.length>0){for(var b=0;24>b;++b)l.push(l[l.length-12]);p+=2,v=!0}continue t}g[0][r]=Math.min(g[0][r],m[r],y[r]),g[1][r]=Math.max(g[1][r],m[r],y[r])}\n", + "var x,_;Array.isArray(o[0])?(x=o[e-1],_=o[e]):x=_=o,3===x.length&&(x=[x[0],x[1],x[2],1]),3===_.length&&(_=[_[0],_[1],_[2],1]);var w;w=Array.isArray(s)?s[e-1]:s;var k=f;if(f+=n(m,y),v){for(r=0;2>r;++r)l.push(m[0],m[1],m[2],y[0],y[1],y[2],k,w,x[0],x[1],x[2],x[3]);p+=2,v=!1}l.push(m[0],m[1],m[2],y[0],y[1],y[2],k,w,x[0],x[1],x[2],x[3],m[0],m[1],m[2],y[0],y[1],y[2],k,-w,x[0],x[1],x[2],x[3],y[0],y[1],y[2],m[0],m[1],m[2],f,-w,_[0],_[1],_[2],_[3],y[0],y[1],y[2],m[0],m[1],m[2],f,w,_[0],_[1],_[2],_[3]),p+=4}if(this.buffer.update(l),c.push(f),u.push(a[a.length-1].slice()),this.bounds=g,this.vertexCount=p,this.points=u,this.arcLength=c,\"dashes\"in t){var A=t.dashes,M=A.slice();for(M.unshift(0),e=1;ee;++e){for(r=0;4>r;++r)T.set(e,0,r,0);1&h.le(M,M[M.length-1]*e/255)?T.set(e,0,0,0):T.set(e,0,0,255)}this.texture.setPixels(T)}}},y.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()},y.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=f(t.value[0],t.value[1],t.value[2],0),r=h.le(this.arcLength,e);if(0>r)return null;if(r===this.arcLength.length-1)return new a(this.arcLength[this.arcLength.length-1],this.points[this.points.length-1].slice(),r);for(var n=this.points[r],i=this.points[Math.min(r+1,this.points.length-1)],o=(e-this.arcLength[r])/(this.arcLength[r+1]-this.arcLength[r]),s=1-o,l=[0,0,0],c=0;3>c;++c)l[c]=s*n[c]+o*i[c];var u=Math.min(.5>o?r:r+1,this.points.length-1);return new a(e,l,u,this.points[u])}},{\"./lib/shaders\":126,\"binary-search-bounds\":128,\"gl-buffer\":118,\"gl-texture2d\":222,\"gl-vao\":226,\"glsl-read-float\":129,ndarray:253}],128:[function(t,e,r){arguments[4][21][0].apply(r,arguments)},{dup:21}],129:[function(t,e,r){function n(t,e,r,n){return i[0]=n,i[1]=r,i[2]=e,i[3]=t,a[0]}e.exports=n;var i=new Uint8Array(4),a=new Float32Array(i.buffer)},{}],130:[function(t,e,r){function n(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],c=e[7],u=e[8],f=u*o-s*c,h=-u*a+s*l,d=c*a-o*l,p=r*f+n*h+i*d;return p?(p=1/p,t[0]=f*p,t[1]=(-u*n+i*c)*p,t[2]=(s*n-i*o)*p,t[3]=h*p,t[4]=(u*r-i*l)*p,t[5]=(-s*r+i*a)*p,t[6]=d*p,t[7]=(-c*r+n*l)*p,t[8]=(o*r-n*a)*p,t):null}e.exports=n},{}],131:[function(t,e,r){function n(t){var e=new Float32Array(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}e.exports=n},{}],132:[function(t,e,r){function n(){var t=new Float32Array(16);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}e.exports=n},{}],133:[function(t,e,r){function n(t){var e=t[0],r=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],l=t[7],c=t[8],u=t[9],f=t[10],h=t[11],d=t[12],p=t[13],g=t[14],v=t[15],m=e*o-r*a,y=e*s-n*a,b=e*l-i*a,x=r*s-n*o,_=r*l-i*o,w=n*l-i*s,k=c*p-u*d,A=c*g-f*d,M=c*v-h*d,T=u*g-f*p,E=u*v-h*p,L=f*v-h*g;return m*L-y*E+b*T+x*M-_*A+w*k}e.exports=n},{}],134:[function(t,e,r){function n(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r+r,s=n+n,l=i+i,c=r*o,u=n*o,f=n*s,h=i*o,d=i*s,p=i*l,g=a*o,v=a*s,m=a*l;return t[0]=1-f-p,t[1]=u+m,t[2]=h-v,t[3]=0,t[4]=u-m,t[5]=1-c-p,t[6]=d+g,t[7]=0,t[8]=h+v,t[9]=d-g,t[10]=1-c-f,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}e.exports=n},{}],135:[function(t,e,r){function n(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=n+n,l=i+i,c=a+a,u=n*s,f=n*l,h=n*c,d=i*l,p=i*c,g=a*c,v=o*s,m=o*l,y=o*c;return t[0]=1-(d+g),t[1]=f+y,t[2]=h-m,t[3]=0,t[4]=f-y,t[5]=1-(u+g),t[6]=p+v,t[7]=0,t[8]=h+m,t[9]=p-v,t[10]=1-(u+d),t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}e.exports=n},{}],136:[function(t,e,r){function n(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}e.exports=n},{}],137:[function(t,e,r){function n(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],c=e[7],u=e[8],f=e[9],h=e[10],d=e[11],p=e[12],g=e[13],v=e[14],m=e[15],y=r*s-n*o,b=r*l-i*o,x=r*c-a*o,_=n*l-i*s,w=n*c-a*s,k=i*c-a*l,A=u*g-f*p,M=u*v-h*p,T=u*m-d*p,E=f*v-h*g,L=f*m-d*g,S=h*m-d*v,C=y*S-b*L+x*E+_*T-w*M+k*A;return C?(C=1/C,t[0]=(s*S-l*L+c*E)*C,t[1]=(i*L-n*S-a*E)*C,t[2]=(g*k-v*w+m*_)*C,t[3]=(h*w-f*k-d*_)*C,t[4]=(l*T-o*S-c*M)*C,t[5]=(r*S-i*T+a*M)*C,t[6]=(v*x-p*k-m*b)*C,t[7]=(u*k-h*x+d*b)*C,t[8]=(o*L-s*T+c*A)*C,t[9]=(n*T-r*L-a*A)*C,t[10]=(p*w-g*x+m*y)*C,t[11]=(f*x-u*w-d*y)*C,t[12]=(s*M-o*E-l*A)*C,t[13]=(r*E-n*M+i*A)*C,t[14]=(g*b-p*_-v*y)*C,t[15]=(u*_-f*b+h*y)*C,t):null}e.exports=n},{}],138:[function(t,e,r){function n(t,e,r,n){var a,o,s,l,c,u,f,h,d,p,g=e[0],v=e[1],m=e[2],y=n[0],b=n[1],x=n[2],_=r[0],w=r[1],k=r[2];return Math.abs(g-_)<1e-6&&Math.abs(v-w)<1e-6&&Math.abs(m-k)<1e-6?i(t):(f=g-_,h=v-w,d=m-k,p=1/Math.sqrt(f*f+h*h+d*d),f*=p,h*=p,d*=p,a=b*d-x*h,o=x*f-y*d,s=y*h-b*f,p=Math.sqrt(a*a+o*o+s*s),p?(p=1/p,a*=p,o*=p,s*=p):(a=0,o=0,s=0),l=h*s-d*o,c=d*a-f*s,u=f*o-h*a,p=Math.sqrt(l*l+c*c+u*u),p?(p=1/p,l*=p,c*=p,u*=p):(l=0,c=0,u=0),t[0]=a,t[1]=l,t[2]=f,t[3]=0,t[4]=o,t[5]=c,t[6]=h,t[7]=0,t[8]=s,t[9]=u,t[10]=d,t[11]=0,t[12]=-(a*g+o*v+s*m),t[13]=-(l*g+c*v+u*m),t[14]=-(f*g+h*v+d*m),t[15]=1,t)}var i=t(\"./identity\");e.exports=n},{\"./identity\":136}],139:[function(t,e,r){function n(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],d=e[10],p=e[11],g=e[12],v=e[13],m=e[14],y=e[15],b=r[0],x=r[1],_=r[2],w=r[3];return t[0]=b*n+x*s+_*f+w*g,t[1]=b*i+x*l+_*h+w*v,t[2]=b*a+x*c+_*d+w*m,t[3]=b*o+x*u+_*p+w*y,b=r[4],x=r[5],_=r[6],w=r[7],t[4]=b*n+x*s+_*f+w*g,t[5]=b*i+x*l+_*h+w*v,t[6]=b*a+x*c+_*d+w*m,t[7]=b*o+x*u+_*p+w*y,b=r[8],x=r[9],_=r[10],w=r[11],t[8]=b*n+x*s+_*f+w*g,t[9]=b*i+x*l+_*h+w*v,t[10]=b*a+x*c+_*d+w*m,t[11]=b*o+x*u+_*p+w*y,b=r[12],x=r[13],_=r[14],w=r[15],t[12]=b*n+x*s+_*f+w*g,t[13]=b*i+x*l+_*h+w*v,t[14]=b*a+x*c+_*d+w*m,t[15]=b*o+x*u+_*p+w*y,t}e.exports=n},{}],140:[function(t,e,r){function n(t,e,r,n,i){var a=1/Math.tan(e/2),o=1/(n-i);return t[0]=a/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=a,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=(i+n)*o,t[11]=-1,t[12]=0,t[13]=0,t[14]=2*i*n*o,t[15]=0,t}e.exports=n},{}],141:[function(t,e,r){function n(t,e,r,n){var i,a,o,s,l,c,u,f,h,d,p,g,v,m,y,b,x,_,w,k,A,M,T,E,L=n[0],S=n[1],C=n[2],z=Math.sqrt(L*L+S*S+C*C);return Math.abs(z)<1e-6?null:(z=1/z,L*=z,S*=z,C*=z,i=Math.sin(r),a=Math.cos(r),o=1-a,s=e[0],l=e[1],c=e[2],u=e[3],f=e[4],h=e[5],d=e[6],p=e[7],g=e[8],v=e[9],m=e[10],y=e[11],b=L*L*o+a,x=S*L*o+C*i,_=C*L*o-S*i,w=L*S*o-C*i,k=S*S*o+a,A=C*S*o+L*i,M=L*C*o+S*i,T=S*C*o-L*i,E=C*C*o+a,t[0]=s*b+f*x+g*_,t[1]=l*b+h*x+v*_,t[2]=c*b+d*x+m*_,t[3]=u*b+p*x+y*_,t[4]=s*w+f*k+g*A,t[5]=l*w+h*k+v*A,t[6]=c*w+d*k+m*A,t[7]=u*w+p*k+y*A,t[8]=s*M+f*T+g*E,t[9]=l*M+h*T+v*E,t[10]=c*M+d*T+m*E,t[11]=u*M+p*T+y*E,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}e.exports=n},{}],142:[function(t,e,r){function n(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[4],o=e[5],s=e[6],l=e[7],c=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=a*i+c*n,t[5]=o*i+u*n,t[6]=s*i+f*n,t[7]=l*i+h*n,t[8]=c*i-a*n,t[9]=u*i-o*n,t[10]=f*i-s*n,t[11]=h*i-l*n,t}e.exports=n},{}],143:[function(t,e,r){function n(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],c=e[8],u=e[9],f=e[10],h=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i-c*n,t[1]=o*i-u*n,t[2]=s*i-f*n,t[3]=l*i-h*n,t[8]=a*n+c*i,t[9]=o*n+u*i,t[10]=s*n+f*i,t[11]=l*n+h*i,t}e.exports=n},{}],144:[function(t,e,r){function n(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],c=e[4],u=e[5],f=e[6],h=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+c*n,t[1]=o*i+u*n,t[2]=s*i+f*n,t[3]=l*i+h*n,t[4]=c*i-a*n,t[5]=u*i-o*n,t[6]=f*i-s*n,t[7]=h*i-l*n,t}e.exports=n},{}],145:[function(t,e,r){function n(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}e.exports=n},{}],146:[function(t,e,r){function n(t,e,r){var n,i,a,o,s,l,c,u,f,h,d,p,g=r[0],v=r[1],m=r[2];return e===t?(t[12]=e[0]*g+e[4]*v+e[8]*m+e[12],t[13]=e[1]*g+e[5]*v+e[9]*m+e[13],t[14]=e[2]*g+e[6]*v+e[10]*m+e[14],t[15]=e[3]*g+e[7]*v+e[11]*m+e[15]):(n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],f=e[8],h=e[9],d=e[10],p=e[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=c,t[7]=u,t[8]=f,t[9]=h,t[10]=d,t[11]=p,t[12]=n*g+s*v+f*m+e[12],t[13]=i*g+l*v+h*m+e[13],t[14]=a*g+c*v+d*m+e[14],t[15]=o*g+u*v+p*m+e[15]),t}e.exports=n},{}],147:[function(t,e,r){function n(t,e){if(t===e){var r=e[1],n=e[2],i=e[3],a=e[6],o=e[7],s=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=a,t[11]=e[14],t[12]=i,t[13]=o,t[14]=s}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}e.exports=n},{}],148:[function(t,e,r){\"use strict\";function n(t,e){for(var r=[0,0,0,0],n=0;4>n;++n)for(var i=0;4>i;++i)r[i]+=t[4*n+i]*e[n];return r}function i(t,e,r,i,a){for(var o=n(i,n(r,n(e,[t[0],t[1],t[2],1]))),s=0;3>s;++s)o[s]/=o[3];return[.5*a[0]*(1+o[0]),.5*a[1]*(1-o[1])]}function a(t,e){if(2===t.length){for(var r=0,n=0,i=0;2>i;++i)r+=Math.pow(e[i]-t[0][i],2),n+=Math.pow(e[i]-t[1][i],2);return r=Math.sqrt(r),n=Math.sqrt(n),1e-6>r+n?[1,0]:[n/(r+n),r/(n+r)]}if(3===t.length){var a=[0,0];return c(t[0],t[1],t[2],e,a),l(t,a)}return[]}function o(t,e){for(var r=[0,0,0],n=0;no;++o)r[o]+=a*i[o];return r}function s(t,e,r,n,s,l){if(1===t.length)return[0,t[0].slice()];for(var c=new Array(t.length),u=0;up;++p)d+=Math.pow(c[u][p]-e[p],2);h>d&&(h=d,f=u)}for(var g=a(c,e),v=0,u=0;3>u;++u){if(g[u]<-.001||g[u]>1.0001)return null;v+=g[u]}return Math.abs(v-1)>.001?null:[f,o(t,g),g]}var l=t(\"barycentric\"),c=t(\"polytope-closest-point/lib/closest_point_2d.js\");e.exports=s},{barycentric:151,\"polytope-closest-point/lib/closest_point_2d.js\":153}],149:[function(t,e,r){var n=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, normal;\\nattribute vec4 color;\\nattribute vec2 uv;\\n\\nuniform mat4 model\\n , view\\n , projection;\\nuniform vec3 eyePosition\\n , lightPosition;\\n\\nvarying vec3 f_normal\\n , f_lightDirection\\n , f_eyeDirection\\n , f_data;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n vec4 m_position = model * vec4(position, 1.0);\\n vec4 t_position = view * m_position;\\n gl_Position = projection * t_position;\\n f_color = color;\\n f_normal = normal;\\n f_data = position;\\n f_eyeDirection = eyePosition - position;\\n f_lightDirection = lightPosition - position;\\n f_uv = uv;\\n}\",i=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution_2_0(float x, float roughness) {\\n float NdotH = max(x, 0.0001);\\n float cos2Alpha = NdotH * NdotH;\\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n float roughness2 = roughness * roughness;\\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\n\\n\\nfloat cookTorranceSpecular_1_1(\\n vec3 lightDirection,\\n vec3 viewDirection,\\n vec3 surfaceNormal,\\n float roughness,\\n float fresnel) {\\n\\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\\n\\n //Half angle vector\\n vec3 H = normalize(lightDirection + viewDirection);\\n\\n //Geometric term\\n float NdotH = max(dot(surfaceNormal, H), 0.0);\\n float VdotH = max(dot(viewDirection, H), 0.000001);\\n float LdotH = max(dot(lightDirection, H), 0.000001);\\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\\n float G = min(1.0, min(G1, G2));\\n \\n //Distribution term\\n float D = beckmannDistribution_2_0(NdotH, roughness);\\n\\n //Fresnel term\\n float F = pow(1.0 - VdotN, fresnel);\\n\\n //Multiply terms and done\\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\\n}\\n\\n\\n\\nuniform vec3 clipBounds[2];\\nuniform float roughness\\n , fresnel\\n , kambient\\n , kdiffuse\\n , kspecular\\n , opacity;\\nuniform sampler2D texture;\\n\\nvarying vec3 f_normal\\n , f_lightDirection\\n , f_eyeDirection\\n , f_data;\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n if(any(lessThan(f_data, clipBounds[0])) || \\n any(greaterThan(f_data, clipBounds[1]))) {\\n discard;\\n }\\n\\n vec3 N = normalize(f_normal);\\n vec3 L = normalize(f_lightDirection);\\n vec3 V = normalize(f_eyeDirection);\\n \\n if(!gl_FrontFacing) {\\n N = -N;\\n }\\n\\n float specular = cookTorranceSpecular_1_1(L, V, N, roughness, fresnel);\\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\\n\\n gl_FragColor = litColor * opacity;\\n}\",a=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 uv;\\n\\nuniform mat4 model, view, projection;\\n\\nvarying vec4 f_color;\\nvarying vec3 f_data;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n gl_Position = projection * view * model * vec4(position, 1.0);\\n f_color = color;\\n f_data = position;\\n f_uv = uv;\\n}\",o=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 clipBounds[2];\\nuniform sampler2D texture;\\nuniform float opacity;\\n\\nvarying vec4 f_color;\\nvarying vec3 f_data;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n if(any(lessThan(f_data, clipBounds[0])) || \\n any(greaterThan(f_data, clipBounds[1]))) {\\n discard;\\n }\\n\\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\\n}\",s=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 uv;\\nattribute float pointSize;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n if(any(lessThan(position, clipBounds[0])) || \\n any(greaterThan(position, clipBounds[1]))) {\\n gl_Position = vec4(0,0,0,0);\\n } else {\\n gl_Position = projection * view * model * vec4(position, 1.0);\\n }\\n gl_PointSize = pointSize;\\n f_color = color;\\n f_uv = uv;\\n}\",l=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform sampler2D texture;\\nuniform float opacity;\\n\\nvarying vec4 f_color;\\nvarying vec2 f_uv;\\n\\nvoid main() {\\n vec2 pointR = gl_PointCoord.xy - vec2(0.5,0.5);\\n if(dot(pointR, pointR) > 0.25) {\\n discard;\\n }\\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\\n}\",c=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n gl_Position = projection * view * model * vec4(position, 1.0);\\n f_id = id;\\n f_position = position;\\n}\",u=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 clipBounds[2];\\nuniform float pickId;\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n if(any(lessThan(f_position, clipBounds[0])) || \\n any(greaterThan(f_position, clipBounds[1]))) {\\n discard;\\n }\\n gl_FragColor = vec4(pickId, f_id.xyz);\\n}\",f=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute float pointSize;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec3 f_position;\\nvarying vec4 f_id;\\n\\nvoid main() {\\n if(any(lessThan(position, clipBounds[0])) || \\n any(greaterThan(position, clipBounds[1]))) {\\n gl_Position = vec4(0,0,0,0);\\n } else {\\n gl_Position = projection * view * model * vec4(position, 1.0);\\n gl_PointSize = pointSize;\\n }\\n f_id = id;\\n f_position = position;\\n}\",h=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\n\\nuniform mat4 model, view, projection;\\n\\nvoid main() {\\n gl_Position = projection * view * model * vec4(position, 1.0);\\n}\",d=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 contourColor;\\n\\nvoid main() {\\n gl_FragColor = vec4(contourColor,1);\\n}\\n\";r.meshShader={vertex:n,fragment:i,attributes:[{name:\"position\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"}]},r.wireShader={vertex:a,fragment:o,attributes:[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"}]},r.pointShader={vertex:s,fragment:l,attributes:[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"uv\",type:\"vec2\"},{name:\"pointSize\",type:\"float\"}]},r.pickShader={vertex:c,fragment:u,attributes:[{name:\"position\",type:\"vec3\"},{name:\"id\",type:\"vec4\"}]},r.pointPickShader={vertex:f,fragment:u,attributes:[{name:\"position\",type:\"vec3\"},{name:\"pointSize\",type:\"float\"},{name:\"id\",type:\"vec4\"}]},r.contourShader={vertex:h,fragment:d,attributes:[{name:\"position\",type:\"vec3\"}]}},{}],150:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a,o,s,l,c,u,f,h,d,p,g,v,m,y,b,x,_,w,k,A,M,T){this.gl=t,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleColors=u,this.triangleNormals=h,this.triangleUVs=f,this.triangleIds=c,this.triangleVAO=d,this.triangleCount=0,this.lineWidth=1,this.edgePositions=p,this.edgeColors=v,this.edgeUVs=m,this.edgeIds=g,this.edgeVAO=y,this.edgeCount=0,this.pointPositions=b,this.pointColors=_,this.pointUVs=w,this.pointSizes=k,this.pointIds=x,this.pointVAO=A,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=M,this.contourVAO=T,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]],this.clipBounds=[[-(1/0),-(1/0),-(1/0)],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this._model=I,this._view=I,this._projection=I,this._resolution=[1,1]}function i(t){for(var e=A({colormap:t,nshades:256,format:\"rgba\"}),r=new Uint8Array(1024),n=0;256>n;++n){for(var i=e[n],a=0;3>a;++a)r[4*n+a]=i[a];r[4*n+3]=255*i[3]}return k(r,[256,256,4],[4,0,1])}function a(t,e,r){for(var n=new Array(e),i=0;e>i;++i)n[i]=0;for(var a=t.length,i=0;a>i;++i)for(var o=t[i],s=0;sn;++n)r[n]=t[n][2];return r}function s(t){var e=v(t,S);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.normal.location=4,e}function l(t){var e=v(t,C);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e}function c(t){var e=v(t,z);return e.attributes.position.location=0,e.attributes.color.location=2,e.attributes.uv.location=3,e.attributes.pointSize.location=4,e}function u(t){var e=v(t,P);return e.attributes.position.location=0,e.attributes.id.location=1,e}function f(t){var e=v(t,R);return e.attributes.position.location=0,e.attributes.id.location=1,e.attributes.pointSize.location=4,e}function h(t){var e=v(t,O);return e.attributes.position.location=0,e}function d(t){var e=t.gl,r=s(e),i=l(e),a=c(e),o=u(e),d=f(e),p=h(e),g=b(e,k(new Uint8Array([255,255,255,255]),[1,1,4]));g.generateMipmap(),g.minFilter=e.LINEAR_MIPMAP_LINEAR,g.magFilter=e.LINEAR;var v=m(e),x=m(e),_=m(e),w=m(e),A=m(e),M=y(e,[{buffer:v,type:e.FLOAT,size:3},{buffer:A,type:e.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:x,type:e.FLOAT,size:4},{buffer:_,type:e.FLOAT,size:2},{buffer:w,type:e.FLOAT,size:3}]),T=m(e),E=m(e),L=m(e),S=m(e),C=y(e,[{buffer:T,type:e.FLOAT,size:3},{buffer:S,type:e.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:E,type:e.FLOAT,size:4},{buffer:L,type:e.FLOAT,size:2}]),z=m(e),P=m(e),R=m(e),O=m(e),I=m(e),N=y(e,[{buffer:z,type:e.FLOAT,size:3},{buffer:I,type:e.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:P,type:e.FLOAT,size:4},{buffer:R,type:e.FLOAT,size:2},{buffer:O,type:e.FLOAT,size:1}]),j=m(e),F=y(e,[{buffer:j,type:e.FLOAT,size:3}]),D=new n(e,g,r,i,a,o,d,p,v,A,x,_,w,M,T,S,E,L,C,z,I,P,R,O,N,j,F);return D.update(t),D}var p=1e-6,g=1e-6,v=t(\"gl-shader\"),m=t(\"gl-buffer\"),y=t(\"gl-vao\"),b=t(\"gl-texture2d\"),x=t(\"normals\"),_=t(\"gl-mat4/multiply\"),w=t(\"gl-mat4/invert\"),k=t(\"ndarray\"),A=t(\"colormap\"),M=t(\"simplicial-complex-contour\"),T=t(\"typedarray-pool\"),E=t(\"./lib/shaders\"),L=t(\"./lib/closest-point\"),S=E.meshShader,C=E.wireShader,z=E.pointShader,P=E.pickShader,R=E.pointPickShader,O=E.contourShader,I=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],N=n.prototype;N.isOpaque=function(){return this.opacity>=1},N.isTransparent=function(){return this.opacity<1},N.pickSlots=1,N.setPickBase=function(t){this.pickId=t},N.highlight=function(t){if(!t||!this.contourEnable)return void(this.contourCount=0);for(var e=M(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=T.mallocFloat32(6*a),s=0,l=0;a>l;++l)for(var c=r[l],u=0;2>u;++u){var f=c[0];2===c.length&&(f=c[u]);for(var h=n[f][0],d=n[f][1],p=i[f],g=1-p,v=this.positions[h],m=this.positions[d],y=0;3>y;++y)o[s++]=p*v[y]+g*m[y]}this.contourCount=s/3|0,this.contourPositions.update(o.subarray(0,s)),T.free(o)},N.update=function(t){t=t||{};var e=this.gl;this.dirty=!0,\"contourEnable\"in t&&(this.contourEnable=t.contourEnable),\"contourColor\"in t&&(this.contourColor=t.contourColor),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"lightPosition\"in t&&(this.lightPosition=t.lightPosition),\"opacity\"in t&&(this.opacity=t.opacity),\"ambient\"in t&&(this.ambientLight=t.ambient),\"diffuse\"in t&&(this.diffuseLight=t.diffuse),\"specular\"in t&&(this.specularLight=t.specular),\"roughness\"in t&&(this.roughness=t.roughness),\"fresnel\"in t&&(this.fresnel=t.fresnel),t.texture?(this.texture.dispose(),this.texture=b(e,t.texture)):t.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=e.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=e.LINEAR,this.texture.setPixels(i(t.colormap)),this.texture.generateMipmap());var r=t.cells,n=t.positions;if(n&&r){var s=[],l=[],c=[],u=[],f=[],h=[],d=[],v=[],m=[],y=[],_=[],w=[],k=[],A=[];this.cells=r,this.positions=n;var M=t.vertexNormals,T=t.cellNormals,E=void 0===t.vertexNormalsEpsilon?p:t.vertexNormalsEpsilon,L=void 0===t.faceNormalsEpsilon?g:t.faceNormalsEpsilon;t.useFacetNormals&&!T&&(T=x.faceNormals(r,n,L)),T||M||(M=x.vertexNormals(r,n,E));var S=t.vertexColors,C=t.cellColors,z=t.meshColor||[1,1,1,1],P=t.vertexUVs,R=t.vertexIntensity,O=t.cellUVs,I=t.cellIntensity,N=1/0,j=-(1/0);if(!P&&!O)if(R)for(var F=0;Fq;++q)!isNaN(V[q])&&isFinite(V[q])&&(this.bounds[0][q]=Math.min(this.bounds[0][q],V[q]),this.bounds[1][q]=Math.max(this.bounds[1][q],V[q]));var H=0,G=0,Y=0;t:for(var F=0;Fq;++q)if(isNaN(V[q])||!isFinite(V[q]))continue t;y.push(V[0],V[1],V[2]);var Z;Z=S?S[W]:C?C[F]:z,3===Z.length?_.push(Z[0],Z[1],Z[2],1):_.push(Z[0],Z[1],Z[2],Z[3]);var K;K=P?P[W]:R?[(R[W]-N)/(j-N),0]:O?O[F]:I?[(I[F]-N)/(j-N),0]:[(V[2]-N)/(j-N),0],w.push(K[0],K[1]),B?k.push(B[W]):k.push(U),A.push(F),Y+=1;break;case 2:for(var q=0;2>q;++q)for(var W=X[q],V=n[W],$=0;3>$;++$)if(isNaN(V[$])||!isFinite(V[$]))continue t;for(var q=0;2>q;++q){var W=X[q],V=n[W];h.push(V[0],V[1],V[2]);var Z;Z=S?S[W]:C?C[F]:z,3===Z.length?d.push(Z[0],Z[1],Z[2],1):d.push(Z[0],Z[1],Z[2],Z[3]);var K;K=P?P[W]:R?[(R[W]-N)/(j-N),0]:O?O[F]:I?[(I[F]-N)/(j-N),0]:[(V[2]-N)/(j-N),0],v.push(K[0],K[1]),m.push(F)}G+=1;break;case 3:for(var q=0;3>q;++q)for(var W=X[q],V=n[W],$=0;3>$;++$)if(isNaN(V[$])||!isFinite(V[$]))continue t;for(var q=0;3>q;++q){var W=X[q],V=n[W];s.push(V[0],V[1],V[2]);var Z;Z=S?S[W]:C?C[F]:z,3===Z.length?l.push(Z[0],Z[1],Z[2],1):l.push(Z[0],Z[1],Z[2],Z[3]);var K;K=P?P[W]:R?[(R[W]-N)/(j-N),0]:O?O[F]:I?[(I[F]-N)/(j-N),0]:[(V[2]-N)/(j-N),0],u.push(K[0],K[1]);var Q;Q=M?M[W]:T[F],c.push(Q[0],Q[1],Q[2]),f.push(F)}H+=1}}this.pointCount=Y,this.edgeCount=G,this.triangleCount=H,this.pointPositions.update(y),this.pointColors.update(_),this.pointUVs.update(w),this.pointSizes.update(k),this.pointIds.update(new Uint32Array(A)),this.edgePositions.update(h),this.edgeColors.update(d),this.edgeUVs.update(v),this.edgeIds.update(new Uint32Array(m)),this.trianglePositions.update(s),this.triangleColors.update(l),this.triangleUVs.update(u),this.triangleNormals.update(c),this.triangleIds.update(new Uint32Array(f))}},N.drawTransparent=N.draw=function(t){t=t||{};for(var e=this.gl,r=t.model||I,n=t.view||I,i=t.projection||I,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;3>o;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);var s={model:r,view:n,projection:i,clipBounds:a,kambient:this.ambientLight,kdiffuse:this.diffuseLight,kspecular:this.specularLight,roughness:this.roughness,fresnel:this.fresnel,eyePosition:[0,0,0],lightPosition:[0,0,0],opacity:this.opacity,contourColor:this.contourColor,texture:0};this.texture.bind(0);var l=new Array(16);_(l,s.view,s.model),_(l,s.projection,l),w(l,l);for(var o=0;3>o;++o)s.eyePosition[o]=l[12+o]/l[15];for(var c=l[15],o=0;3>o;++o)c+=this.lightPosition[o]*l[4*o+3];for(var o=0;3>o;++o){for(var u=l[12+o],f=0;3>f;++f)u+=l[4*f+o]*this.lightPosition[f];s.lightPosition[o]=u/c}if(this.triangleCount>0){var h=this.triShader;h.bind(),h.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var h=this.lineShader;h.bind(),h.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()}if(this.pointCount>0){var h=this.pointShader;h.bind(),h.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var h=this.contourShader;h.bind(),h.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind()}},N.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||I,n=t.view||I,i=t.projection||I,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;3>o;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s={model:r,view:n,projection:i,clipBounds:a,pickId:this.pickId/255},l=this.pickShader;if(l.bind(),l.uniforms=s,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0){var l=this.pointPickShader;l.bind(),l.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind()}},N.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;for(var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions,i=new Array(r.length),a=0;ao;++o){for(var s=new Array(r+1),l=0;r>=l;++l)s[l]=t[l][o];i[o]=s}i[r]=new Array(r+1);for(var o=0;r>=o;++o)i[r][o]=1;for(var c=new Array(r+1),o=0;r>o;++o)c[o]=e[o];c[r]=1;var u=a(i,c),f=n(u[r+1]);0===f&&(f=1);for(var h=new Array(r+1),o=0;r>=o;++o)h[o]=n(u[o])/f;return h}e.exports=i;var a=t(\"robust-linear-solve\")},{\"robust-linear-solve\":256}],152:[function(t,e,r){var n=1e-6,i=1e-6;r.vertexNormals=function(t,e,r){for(var i=e.length,a=new Array(i),o=void 0===r?n:r,s=0;i>s;++s)a[s]=[0,0,0];for(var s=0;sx;++x)v[x]=d[x]-p[x],m+=v[x]*v[x],y[x]=g[x]-p[x],b+=y[x]*y[x];if(m*b>o)for(var _=a[u],w=1/Math.sqrt(m*b),x=0;3>x;++x){var k=(x+1)%3,A=(x+2)%3;_[x]+=w*(y[k]*v[A]-y[A]*v[k])}}for(var s=0;i>s;++s){for(var _=a[s],M=0,x=0;3>x;++x)M+=_[x]*_[x];if(M>o)for(var w=1/Math.sqrt(M),x=0;3>x;++x)_[x]*=w;else for(var x=0;3>x;++x)_[x]=0}return a},r.faceNormals=function(t,e,r){for(var n=t.length,a=new Array(n),o=void 0===r?i:r,s=0;n>s;++s){for(var l=t[s],c=new Array(3),u=0;3>u;++u)c[u]=e[l[u]];for(var f=new Array(3),h=new Array(3),u=0;3>u;++u)f[u]=c[1][u]-c[0][u],h[u]=c[2][u]-c[0][u];for(var d=new Array(3),p=0,u=0;3>u;++u){var g=(u+1)%3,v=(u+2)%3;d[u]=f[g]*h[v]-f[v]*h[g],p+=d[u]*d[u]}p=p>o?1/Math.sqrt(p):0;for(var u=0;3>u;++u)d[u]*=p;a[s]=d}return a}},{}],153:[function(t,e,r){\"use strict\";function n(t,e,r,n,s){i.length=x+_)if(0>x)0>_&&0>h?(_=0,-h>=c?(x=1,y=c+2*h+p):(x=-h/c,y=h*x+p)):(x=0,d>=0?(_=0,y=p):-d>=f?(_=1,y=f+2*d+p):(_=-d/f,y=d*_+p));else if(0>_)_=0,h>=0?(x=0,y=p):-h>=c?(x=1,y=c+2*h+p):(x=-h/c,y=h*x+p);else{var w=1/b;x*=w,_*=w,y=x*(c*x+u*_+2*h)+_*(u*x+f*_+2*d)+p}else{var k,A,M,T;0>x?(k=u+h,A=f+d,A>k?(M=A-k,T=c-2*u+f,M>=T?(x=1,_=0,y=c+2*h+p):(x=M/T,_=1-x,y=x*(c*x+u*_+2*h)+_*(u*x+f*_+2*d)+p)):(x=0,0>=A?(_=1,y=f+2*d+p):d>=0?(_=0,y=p):(_=-d/f,y=d*_+p))):0>_?(k=u+d,A=c+h,A>k?(M=A-k,T=c-2*u+f,M>=T?(_=1,x=0,y=f+2*d+p):(_=M/T,x=1-_,y=x*(c*x+u*_+2*h)+_*(u*x+f*_+2*d)+p)):(_=0,0>=A?(x=1,y=c+2*h+p):h>=0?(x=0,y=p):(x=-h/c,y=h*x+p))):(M=f+d-u-h,0>=M?(x=0,_=1,y=f+2*d+p):(T=c-2*u+f,M>=T?(x=1,_=0,y=c+2*h+p):(x=M/T,_=1-x,y=x*(c*x+u*_+2*h)+_*(u*x+f*_+2*d)+p)))}for(var E=1-x-_,l=0;ly?0:y}var i=new Float64Array(4),a=new Float64Array(4),o=new Float64Array(4);e.exports=n},{}],154:[function(t,e,r){\"use strict\";function n(t){for(var e=t.length,r=0,n=0;e>n;++n)r=0|Math.max(r,t[n].length);return r-1}function i(t,e){for(var r=t.length,n=f.mallocUint8(r),i=0;r>i;++i)n[i]=t[i]o;++o)for(var s=t[o],e=s.length,l=0;e>l;++l)for(var c=0;l>c;++c){var d=s[c],p=s[l];i[a++]=0|Math.min(d,p),i[a++]=0|Math.max(d,p)}var g=a/2|0;h(u(i,[g,2]));for(var v=2,o=2;a>o;o+=2)i[o-2]===i[o]&&i[o-1]===i[o+1]||(i[v++]=i[o],i[v++]=i[o+1]);return u(i,[v/2|0,2])}function o(t,e,r,n){for(var i=t.data,a=t.shape[0],o=f.mallocDouble(a),s=0,l=0;a>l;++l){var c=i[2*l],h=i[2*l+1];if(r[c]!==r[h]){var d=e[c],p=e[h];i[2*s]=c,i[2*s+1]=h,o[s++]=(p-n)/(p-d)}}return t.shape[0]=s,u(o,[s])}function s(t,e){var r=f.mallocInt32(2*e),n=t.shape[0],i=t.data;r[0]=0;for(var a=0,o=0;n>o;++o){var s=i[2*o];if(s!==a){for(r[2*a+1]=o;++ai;++i)n[i]=[r[2*i],r[2*i+1]];return n}function c(t,e,r,c){r=r||0,\"undefined\"==typeof c&&(c=n(t));var u=t.length;if(0===u||1>c)return{cells:[],vertexIds:[],vertexWeights:[]};var h=i(e,+r),p=a(t,c),g=o(p,e,h,+r),v=s(p,0|e.length),m=d(c)(t,p.data,v,h),y=l(p),b=[].slice.call(g.data,0,g.shape[0]);return f.free(h),f.free(p.data),f.free(g.data),f.free(v),{cells:m,vertexIds:y,vertexWeights:b}}e.exports=c;var u=t(\"ndarray\"),f=t(\"typedarray-pool\"),h=t(\"ndarray-sort\"),d=t(\"./lib/codegen\")},{\"./lib/codegen\":155,ndarray:253,\"ndarray-sort\":158,\"typedarray-pool\":278}],155:[function(t,e,r){\"use strict\";function n(t){function e(t){if(!(t.length<=0)){c.push(\"R.push(\");for(var e=0;e0&&c.push(\",\"),c.push(\"[\");for(var n=0;n0&&c.push(\",\"),c.push(\"B(C,E,c[\",i[0],\"],c[\",i[1],\"])\")}c.push(\"]\")}c.push(\");\")}}var r=0,n=new Array(t+1);n[0]=[[]];for(var i=1;t>=i;++i)for(var s=n[i]=o(i),l=0;l>1,v=E[2*m+1];\",\"if(v===b){return m}\",\"if(b1;--i){t+1>i&&c.push(\"else \"),c.push(\"if(l===\",i,\"){\");for(var u=[],l=0;i>l;++l)u.push(\"(S[c[\"+l+\"]]<<\"+l+\")\");c.push(\"var M=\",u.join(\"+\"),\";if(M===0||M===\",(1<i;++i)n[i]=0,i===e&&(n[i]+=.5),i===r&&(n[i]+=.5);return n}function i(t,e){if(0===e||e===(1<=a;++a)if(e&1<=s;++s)~e&1<n;++n)r[n]=i(t,n);return r}e.exports=a;var o=t(\"convex-hull\")},{\"convex-hull\":102}],157:[function(t,e,r){\"use strict\";function n(t){switch(t){case\"uint8\":return[l.mallocUint8,l.freeUint8];case\"uint16\":return[l.mallocUint16,l.freeUint16];case\"uint32\":return[l.mallocUint32,l.freeUint32];case\"int8\":return[l.mallocInt8,l.freeInt8];case\"int16\":return[l.mallocInt16,l.freeInt16];case\"int32\":return[l.mallocInt32,l.freeInt32];case\"float32\":return[l.mallocFloat,l.freeFloat];case\"float64\":return[l.mallocDouble,l.freeDouble];default:return null}}function i(t){for(var e=[],r=0;t>r;++r)e.push(\"s\"+r);for(var r=0;t>r;++r)e.push(\"n\"+r);for(var r=1;t>r;++r)e.push(\"d\"+r);for(var r=1;t>r;++r)e.push(\"e\"+r);for(var r=1;t>r;++r)e.push(\"f\"+r);return e}function a(t,e){function r(t){return\"generic\"===e?[\"data.get(\",t,\")\"].join(\"\"):[\"data[\",t,\"]\"].join(\"\")}function a(t,r){return\"generic\"===e?[\"data.set(\",t,\",\",r,\")\"].join(\"\"):[\"data[\",t,\"]=\",r].join(\"\")}var o=[\"'use strict'\"],s=[\"ndarrayInsertionSort\",t.join(\"d\"),e].join(\"\"),l=[\"left\",\"right\",\"data\",\"offset\"].concat(i(t.length)),c=n(e),u=[\"i,j,cptr,ptr=left*s0+offset\"];if(t.length>1){for(var f=[],h=1;h1){o.push(\"dptr=0;sptr=ptr\");for(var h=t.length-1;h>=0;--h){var d=t[h];0!==d&&o.push([\"for(i\",d,\"=0;i\",d,\"left){\",\"dptr=0\",\"sptr=cptr-s0\");for(var h=1;hb){break __l}\"].join(\"\"));for(var h=t.length-1;h>=1;--h)o.push(\"sptr+=e\"+h,\"dptr+=f\"+h,\"}\");o.push(\"dptr=cptr;sptr=cptr-s0\");for(var h=t.length-1;h>=0;--h){var d=t[h];0!==d&&o.push([\"for(i\",d,\"=0;i\",d,\"=0;--h){var d=t[h];0!==d&&o.push([\"for(i\",d,\"=0;i\",d,\"left)&&(\"+r(\"cptr-s0\")+\">scratch)){\",a(\"cptr\",r(\"cptr-s0\")),\"cptr-=s0\",\"}\",a(\"cptr\",\"scratch\"));if(o.push(\"}\"),t.length>1&&c&&o.push(\"free(scratch)\"),o.push(\"} return \"+s),c){var p=new Function(\"malloc\",\"free\",o.join(\"\\n\"));return p(c[0],c[1])}var p=new Function(o.join(\"\\n\"));return p()}function o(t,e,r){function a(t){return[\"(offset+\",t,\"*s0)\"].join(\"\")}function o(t){return\"generic\"===e?[\"data.get(\",t,\")\"].join(\"\"):[\"data[\",t,\"]\"].join(\"\")}function s(t,r){return\"generic\"===e?[\"data.set(\",t,\",\",r,\")\"].join(\"\"):[\"data[\",t,\"]=\",r].join(\"\")}function l(e,r,n){if(1===e.length)_.push(\"ptr0=\"+a(e[0]));else for(var i=0;i=0;--i){var o=t[i];0!==o&&_.push([\"for(i\",o,\"=0;i\",o,\"1)for(var i=0;i1?_.push(\"ptr_shift+=d\"+o):_.push(\"ptr0+=d\"+o),_.push(\"}\"))}}function u(e,r,n,i){if(1===r.length)_.push(\"ptr0=\"+a(r[0]));else{for(var o=0;o1)for(var o=0;o=1;--o)n&&_.push(\"pivot_ptr+=f\"+o),r.length>1?_.push(\"ptr_shift+=e\"+o):_.push(\"ptr0+=e\"+o),_.push(\"}\")}function f(){t.length>1&&A&&_.push(\"free(pivot1)\",\"free(pivot2)\")}function h(e,r){var n=\"el\"+e,i=\"el\"+r;if(t.length>1){var s=\"__l\"+ ++M;u(s,[n,i],!1,[\"comp=\",o(\"ptr0\"),\"-\",o(\"ptr1\"),\"\\n\",\"if(comp>0){tmp0=\",n,\";\",n,\"=\",i,\";\",i,\"=tmp0;break \",s,\"}\\n\",\"if(comp<0){break \",s,\"}\"].join(\"\"))}else _.push([\"if(\",o(a(n)),\">\",o(a(i)),\"){tmp0=\",n,\";\",n,\"=\",i,\";\",i,\"=tmp0}\"].join(\"\"))}function d(e,r){t.length>1?l([e,r],!1,s(\"ptr0\",o(\"ptr1\"))):_.push(s(a(e),o(a(r))))}function p(e,r,n){if(t.length>1){var i=\"__l\"+ ++M;u(i,[r],!0,[e,\"=\",o(\"ptr0\"),\"-pivot\",n,\"[pivot_ptr]\\n\",\"if(\",e,\"!==0){break \",i,\"}\"].join(\"\"))}else _.push([e,\"=\",o(a(r)),\"-pivot\",n].join(\"\"))}function g(e,r){t.length>1?l([e,r],!1,[\"tmp=\",o(\"ptr0\"),\"\\n\",s(\"ptr0\",o(\"ptr1\")),\"\\n\",s(\"ptr1\",\"tmp\")].join(\"\")):_.push([\"ptr0=\",a(e),\"\\n\",\"ptr1=\",a(r),\"\\n\",\"tmp=\",o(\"ptr0\"),\"\\n\",s(\"ptr0\",o(\"ptr1\")),\"\\n\",s(\"ptr1\",\"tmp\")].join(\"\"))}function v(e,r,n){t.length>1?(l([e,r,n],!1,[\"tmp=\",o(\"ptr0\"),\"\\n\",s(\"ptr0\",o(\"ptr1\")),\"\\n\",s(\"ptr1\",o(\"ptr2\")),\"\\n\",s(\"ptr2\",\"tmp\")].join(\"\")),_.push(\"++\"+r,\"--\"+n)):_.push([\"ptr0=\",a(e),\"\\n\",\"ptr1=\",a(r),\"\\n\",\"ptr2=\",a(n),\"\\n\",\"++\",r,\"\\n\",\"--\",n,\"\\n\",\"tmp=\",o(\"ptr0\"),\"\\n\",s(\"ptr0\",o(\"ptr1\")),\"\\n\",s(\"ptr1\",o(\"ptr2\")),\"\\n\",s(\"ptr2\",\"tmp\")].join(\"\"))}function m(t,e){g(t,e),_.push(\"--\"+e)}function y(e,r,n){t.length>1?l([e,r],!0,[s(\"ptr0\",o(\"ptr1\")),\"\\n\",s(\"ptr1\",[\"pivot\",n,\"[pivot_ptr]\"].join(\"\"))].join(\"\")):_.push(s(a(e),o(a(r))),s(a(r),\"pivot\"+n))}function b(e,r){_.push([\"if((\",r,\"-\",e,\")<=\",c,\"){\\n\",\"insertionSort(\",e,\",\",r,\",data,offset,\",i(t.length).join(\",\"),\")\\n\",\"}else{\\n\",w,\"(\",e,\",\",r,\",data,offset,\",i(t.length).join(\",\"),\")\\n\",\"}\"].join(\"\"))}function x(e,r,n){t.length>1?(_.push([\"__l\",++M,\":while(true){\"].join(\"\")),l([e],!0,[\"if(\",o(\"ptr0\"),\"!==pivot\",r,\"[pivot_ptr]){break __l\",M,\"}\"].join(\"\")),_.push(n,\"}\")):_.push([\"while(\",o(a(e)),\"===pivot\",r,\"){\",n,\"}\"].join(\"\"))}var _=[\"'use strict'\"],w=[\"ndarrayQuickSort\",t.join(\"d\"),e].join(\"\"),k=[\"left\",\"right\",\"data\",\"offset\"].concat(i(t.length)),A=n(e),M=0;_.push([\"function \",w,\"(\",k.join(\",\"),\"){\"].join(\"\"));var T=[\"sixth=((right-left+1)/6)|0\",\"index1=left+sixth\",\"index5=right-sixth\",\"index3=(left+right)>>1\",\"index2=index3-sixth\",\"index4=index3+sixth\",\"el1=index1\",\"el2=index2\",\"el3=index3\",\"el4=index4\",\"el5=index5\",\"less=left+1\",\"great=right-1\",\"pivots_are_equal=true\",\"tmp\",\"tmp0\",\"x\",\"y\",\"z\",\"k\",\"ptr0\",\"ptr1\",\"ptr2\",\"comp_pivot1=0\",\"comp_pivot2=0\",\"comp=0\"];if(t.length>1){for(var E=[],L=1;LL;++L)T.push(\"b_ptr\"+L);T.push(\"ptr3\",\"ptr4\",\"ptr5\",\"ptr6\",\"ptr7\",\"pivot_ptr\",\"ptr_shift\",\"elementSize=\"+E.join(\"*\")),A?T.push(\"pivot1=malloc(elementSize)\",\"pivot2=malloc(elementSize)\"):T.push(\"pivot1=new Array(elementSize),pivot2=new Array(elementSize)\")}else T.push(\"pivot1\",\"pivot2\");if(_.push(\"var \"+T.join(\",\")),h(1,2),h(4,5),h(1,3),h(2,3),h(1,4),h(3,4),h(2,5),h(2,3),h(4,5),t.length>1?l([\"el1\",\"el2\",\"el3\",\"el4\",\"el5\",\"index1\",\"index3\",\"index5\"],!0,[\"pivot1[pivot_ptr]=\",o(\"ptr1\"),\"\\n\",\"pivot2[pivot_ptr]=\",o(\"ptr3\"),\"\\n\",\"pivots_are_equal=pivots_are_equal&&(pivot1[pivot_ptr]===pivot2[pivot_ptr])\\n\",\"x=\",o(\"ptr0\"),\"\\n\",\"y=\",o(\"ptr2\"),\"\\n\",\"z=\",o(\"ptr4\"),\"\\n\",s(\"ptr5\",\"x\"),\"\\n\",s(\"ptr6\",\"y\"),\"\\n\",s(\"ptr7\",\"z\")].join(\"\")):_.push([\"pivot1=\",o(a(\"el2\")),\"\\n\",\"pivot2=\",o(a(\"el4\")),\"\\n\",\"pivots_are_equal=pivot1===pivot2\\n\",\"x=\",o(a(\"el1\")),\"\\n\",\"y=\",o(a(\"el3\")),\"\\n\",\"z=\",o(a(\"el5\")),\"\\n\",s(a(\"index1\"),\"x\"),\"\\n\",s(a(\"index3\"),\"y\"),\"\\n\",s(a(\"index5\"),\"z\")].join(\"\")),d(\"index2\",\"left\"),d(\"index4\",\"right\"),_.push(\"if(pivots_are_equal){\"),_.push(\"for(k=less;k<=great;++k){\"),p(\"comp\",\"k\",1),_.push(\"if(comp===0){continue}\"),_.push(\"if(comp<0){\"),_.push(\"if(k!==less){\"),g(\"k\",\"less\"),_.push(\"}\"),_.push(\"++less\"),_.push(\"}else{\"),_.push(\"while(true){\"),p(\"comp\",\"great\",1),_.push(\"if(comp>0){\"),_.push(\"great--\"),_.push(\"}else if(comp<0){\"),v(\"k\",\"less\",\"great\"),_.push(\"break\"),_.push(\"}else{\"),m(\"k\",\"great\"),_.push(\"break\"),_.push(\"}\"),_.push(\"}\"),_.push(\"}\"),_.push(\"}\"),_.push(\"}else{\"),_.push(\"for(k=less;k<=great;++k){\"),p(\"comp_pivot1\",\"k\",1),_.push(\"if(comp_pivot1<0){\"),_.push(\"if(k!==less){\"),g(\"k\",\"less\"),_.push(\"}\"),_.push(\"++less\"),_.push(\"}else{\"),p(\"comp_pivot2\",\"k\",2),_.push(\"if(comp_pivot2>0){\"),_.push(\"while(true){\"),p(\"comp\",\"great\",2),_.push(\"if(comp>0){\"),_.push(\"if(--greatindex5){\"),x(\"less\",1,\"++less\"),x(\"great\",2,\"--great\"),_.push(\"for(k=less;k<=great;++k){\"),p(\"comp_pivot1\",\"k\",1),_.push(\"if(comp_pivot1===0){\"),_.push(\"if(k!==less){\"),g(\"k\",\"less\"),_.push(\"}\"),_.push(\"++less\"),_.push(\"}else{\"),p(\"comp_pivot2\",\"k\",2),_.push(\"if(comp_pivot2===0){\"),_.push(\"while(true){\"),p(\"comp\",\"great\",2),_.push(\"if(comp===0){\"),_.push(\"if(--great1&&A){var S=new Function(\"insertionSort\",\"malloc\",\"free\",_.join(\"\\n\"));return S(r,A[0],A[1])}var S=new Function(\"insertionSort\",_.join(\"\\n\"));return S(r)}function s(t,e){var r=[\"'use strict'\"],n=[\"ndarraySortWrapper\",t.join(\"d\"),e].join(\"\"),s=[\"array\"];r.push([\"function \",n,\"(\",s.join(\",\"),\"){\"].join(\"\"));for(var l=[\"data=array.data,offset=array.offset|0,shape=array.shape,stride=array.stride\"],u=0;u0?l.push([\"d\",v,\"=s\",v,\"-d\",p,\"*n\",p].join(\"\")):l.push([\"d\",v,\"=s\",v].join(\"\")),p=v);var d=t.length-1-u;0!==d&&(g>0?l.push([\"e\",d,\"=s\",d,\"-e\",g,\"*n\",g,\",f\",d,\"=\",f[d],\"-f\",g,\"*n\",g].join(\"\")):l.push([\"e\",d,\"=s\",d,\",f\",d,\"=\",f[d]].join(\"\")),g=d)}r.push(\"var \"+l.join(\",\"));var m=[\"0\",\"n0-1\",\"data\",\"offset\"].concat(i(t.length));r.push([\"if(n0<=\",c,\"){\",\"insertionSort(\",m.join(\",\"),\")}else{\",\"quickSort(\",m.join(\",\"),\")}\"].join(\"\")),r.push(\"}return \"+n);var y=new Function(\"insertionSort\",\"quickSort\",r.join(\"\\n\")),b=a(t,e),x=o(t,e,b);return y(b,x)}var l=t(\"typedarray-pool\"),c=32;e.exports=s},{\"typedarray-pool\":278}],158:[function(t,e,r){\"use strict\";function n(t){var e=t.order,r=t.dtype,n=[e,r],o=n.join(\":\"),s=a[o];return s||(a[o]=s=i(e,r)),s(t),t}var i=t(\"./lib/compile_sort.js\"),a={};e.exports=n},{\"./lib/compile_sort.js\":157}],159:[function(t,e,r){\"use strict\";function n(t,e,r){this.plot=t,this.vbo=e,this.shader=r}function i(t){var e=t.gl,r=a(e,[0,0,0,1,1,0,1,1]),i=o(e,s.boxVert,s.lineFrag);return new n(t,r,i)}e.exports=i;var a=t(\"gl-buffer\"),o=t(\"gl-shader\"),s=t(\"./shaders\"),l=n.prototype;l.bind=function(){var t=this.shader;this.vbo.bind(),this.shader.bind(),t.attributes.coord.pointer(),t.uniforms.screenBox=this.plot.screenBox},l.drawBox=function(){var t=[0,0],e=[0,0];return function(r,n,i,a,o){var s=this.plot,l=this.shader,c=s.gl;t[0]=r,t[1]=n,e[0]=i,e[1]=a,l.uniforms.lo=t,l.uniforms.hi=e,l.uniforms.color=o,c.drawArrays(c.TRIANGLE_STRIP,0,4)}}(),l.dispose=function(){this.vbo.dispose(),this.shader.dispose()}},{\"./shaders\":162,\"gl-buffer\":118,\"gl-shader\":197}],160:[function(t,e,r){\"use strict\";function n(t,e,r,n){this.plot=t,this.vbo=e,this.shader=r,this.tickShader=n,this.ticks=[[],[]]}function i(t,e){return t-e}function a(t){var e=t.gl,r=o(e),i=s(e,c.gridVert,c.gridFrag),a=s(e,c.tickVert,c.gridFrag),l=new n(t,r,i,a);return l}e.exports=a;var o=t(\"gl-buffer\"),s=t(\"gl-shader\"),l=t(\"binary-search-bounds\"),c=t(\"./shaders\"),u=n.prototype;u.draw=function(){var t=[0,0],e=[0,0],r=[0,0];return function(){for(var n=this.plot,i=this.vbo,a=this.shader,o=this.ticks,s=n.gl,l=n._tickBounds,c=n.dataBox,u=n.viewBox,f=n.gridLineWidth,h=n.gridLineColor,d=n.gridLineEnable,p=n.pixelRatio,g=0;2>g;++g){var v=l[g],m=l[g+2],y=m-v,b=.5*(c[g+2]+c[g]),x=c[g+2]-c[g];e[g]=2*y/x,t[g]=2*(v-b)/x}a.bind(),i.bind(),a.attributes.dataCoord.pointer(),a.uniforms.dataShift=t,a.uniforms.dataScale=e;for(var _=0,g=0;2>g;++g){r[0]=r[1]=0,r[g]=1,a.uniforms.dataAxis=r,a.uniforms.lineWidth=f[g]/(u[g+2]-u[g])*p,a.uniforms.color=h[g];var w=6*o[g].length;d[g]&&w&&s.drawArrays(s.TRIANGLES,_,w),_+=w}}}(),u.drawTickMarks=function(){var t=[0,0],e=[0,0],r=[1,0],n=[0,1],a=[0,0],o=[0,0];return function(){for(var s=this.plot,c=this.vbo,u=this.tickShader,f=this.ticks,h=s.gl,d=s._tickBounds,p=s.dataBox,g=s.viewBox,v=s.pixelRatio,m=s.screenBox,y=m[2]-m[0],b=m[3]-m[1],x=g[2]-g[0],_=g[3]-g[1],w=0;2>w;++w){var k=d[w],A=d[w+2],M=A-k,T=.5*(p[w+2]+p[w]),E=p[w+2]-p[w];e[w]=2*M/E,t[w]=2*(k-T)/E}e[0]*=x/y,t[0]*=x/y,e[1]*=_/b,t[1]*=_/b,u.bind(),c.bind(),u.attributes.dataCoord.pointer();var L=u.uniforms;L.dataShift=t,L.dataScale=e;var S=s.tickMarkLength,C=s.tickMarkWidth,z=s.tickMarkColor,P=0,R=6*f[0].length,O=Math.min(l.ge(f[0],(p[0]-d[0])/(d[2]-d[0]),i),f[0].length),I=Math.min(l.gt(f[0],(p[2]-d[0])/(d[2]-d[0]),i),f[0].length),N=P+6*O,j=6*Math.max(0,I-O),F=Math.min(l.ge(f[1],(p[1]-d[1])/(d[3]-d[1]),i),f[1].length),D=Math.min(l.gt(f[1],(p[3]-d[1])/(d[3]-d[1]),i),f[1].length),B=R+6*F,U=6*Math.max(0,D-F);a[0]=2*(g[0]-S[1])/y-1,a[1]=(g[3]+g[1])/b-1,o[0]=S[1]*v/y,o[1]=C[1]*v/b,U&&(L.color=z[1],L.tickScale=o,L.dataAxis=n,L.screenOffset=a,h.drawArrays(h.TRIANGLES,B,U)),a[0]=(g[2]+g[0])/y-1,a[1]=2*(g[1]-S[0])/b-1,o[0]=C[0]*v/y,o[1]=S[0]*v/b,j&&(L.color=z[0],L.tickScale=o,L.dataAxis=r,L.screenOffset=a,h.drawArrays(h.TRIANGLES,N,j)),a[0]=2*(g[2]+S[3])/y-1,a[1]=(g[3]+g[1])/b-1,o[0]=S[3]*v/y,o[1]=C[3]*v/b,U&&(L.color=z[3],L.tickScale=o,L.dataAxis=n,L.screenOffset=a,h.drawArrays(h.TRIANGLES,B,U)),a[0]=(g[2]+g[0])/y-1,a[1]=2*(g[3]+S[2])/b-1,o[0]=C[2]*v/y,o[1]=S[2]*v/b,j&&(L.color=z[2],L.tickScale=o,L.dataAxis=r,L.screenOffset=a,h.drawArrays(h.TRIANGLES,N,j))}}(),u.update=function(){var t=[1,1,-1,-1,1,-1],e=[1,-1,1,1,-1,-1];return function(r){for(var n=r.ticks,i=r.bounds,a=new Float32Array(18*(n[0].length+n[1].length)),o=(this.plot.zeroLineEnable,0),s=[[],[]],l=0;2>l;++l)for(var c=s[l],u=n[l],f=i[l],h=i[l+2],d=0;dg;++g)a[o++]=p,a[o++]=t[g],a[o++]=e[g]}this.ticks=s,this.vbo.update(a)}}(),u.dispose=function(){this.vbo.dispose(),this.shader.dispose(),this.tickShader.dispose()}},{\"./shaders\":162,\"binary-search-bounds\":164,\"gl-buffer\":118,\"gl-shader\":197}],161:[function(t,e,r){\"use strict\";function n(t,e,r){this.plot=t,this.vbo=e,this.shader=r}function i(t){var e=t.gl,r=a(e,[-1,-1,-1,1,1,-1,1,1]),i=o(e,s.lineVert,s.lineFrag),l=new n(t,r,i);return l}e.exports=i;var a=t(\"gl-buffer\"),o=t(\"gl-shader\"),s=t(\"./shaders\"),l=n.prototype;l.bind=function(){var t=this.shader;this.vbo.bind(),this.shader.bind(),t.attributes.coord.pointer(),t.uniforms.screenBox=this.plot.screenBox},l.drawLine=function(){var t=[0,0],e=[0,0];return function(r,n,i,a,o,s){var l=this.plot,c=this.shader,u=l.gl;t[0]=r,t[1]=n,e[0]=i,e[1]=a,c.uniforms.start=t,c.uniforms.end=e,c.uniforms.width=o*l.pixelRatio,c.uniforms.color=s,u.drawArrays(u.TRIANGLE_STRIP,0,4)}}(),l.dispose=function(){this.vbo.dispose(),this.shader.dispose()}},{\"./shaders\":162,\"gl-buffer\":118,\"gl-shader\":197}],162:[function(t,e,r){\"use strict\";var n=\"precision lowp float;\\n#define GLSLIFY 1\\nuniform vec4 color;\\nvoid main() {\\n gl_FragColor = vec4(color.xyz * color.w, color.w);\\n}\\n\";e.exports={lineVert:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 coord;\\n\\nuniform vec4 screenBox;\\nuniform vec2 start, end;\\nuniform float width;\\n\\nvec2 perp(vec2 v) {\\n return vec2(v.y, -v.x);\\n}\\n\\nvec2 screen(vec2 v) {\\n return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\\n}\\n\\nvoid main() {\\n vec2 delta = normalize(perp(start - end));\\n vec2 offset = mix(start, end, 0.5 * (coord.y+1.0));\\n gl_Position = vec4(screen(offset + 0.5 * width * delta * coord.x), 0, 1);\\n}\\n\",lineFrag:n,textVert:\"#define GLSLIFY 1\\nattribute vec3 textCoordinate;\\n\\nuniform vec2 dataScale, dataShift, dataAxis, screenOffset, textScale;\\nuniform float angle;\\n\\nvoid main() {\\n float dataOffset = textCoordinate.z;\\n vec2 glyphOffset = textCoordinate.xy;\\n mat2 glyphMatrix = mat2(cos(angle), sin(angle), -sin(angle), cos(angle));\\n vec2 screenCoordinate = dataAxis * (dataScale * dataOffset + dataShift) +\\n glyphMatrix * glyphOffset * textScale + screenOffset;\\n gl_Position = vec4(screenCoordinate, 0, 1);\\n}\\n\",textFrag:n,gridVert:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 dataCoord;\\n\\nuniform vec2 dataAxis, dataShift, dataScale;\\nuniform float lineWidth;\\n\\nvoid main() {\\n vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\\n pos += 10.0 * dataCoord.y * vec2(dataAxis.y, -dataAxis.x) + dataCoord.z * lineWidth;\\n gl_Position = vec4(pos, 0, 1);\\n}\\n\",gridFrag:n,boxVert:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 coord;\\n\\nuniform vec4 screenBox;\\nuniform vec2 lo, hi;\\n\\nvec2 screen(vec2 v) {\\n return 2.0 * (v - screenBox.xy) / (screenBox.zw - screenBox.xy) - 1.0;\\n}\\n\\nvoid main() {\\n gl_Position = vec4(screen(mix(lo, hi, coord)), 0, 1);\\n}\\n\",tickVert:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 dataCoord;\\n\\nuniform vec2 dataAxis, dataShift, dataScale, screenOffset, tickScale;\\n\\nvoid main() {\\n vec2 pos = dataAxis * (dataScale * dataCoord.x + dataShift);\\n gl_Position = vec4(pos + tickScale*dataCoord.yz + screenOffset, 0, 1);\\n}\\n\"}},{}],163:[function(t,e,r){\"use strict\";function n(t,e,r){this.plot=t,this.vbo=e,this.shader=r,this.tickOffset=[[],[]],this.tickX=[[],[]],this.labelOffset=[0,0],this.labelCount=[0,0]}function i(t){var e=t.gl,r=a(e),i=o(e,c.textVert,c.textFrag),s=new n(t,r,i);return s}e.exports=i;var a=t(\"gl-buffer\"),o=t(\"gl-shader\"),s=t(\"text-cache\"),l=t(\"binary-search-bounds\"),c=t(\"./shaders\"),u=n.prototype;u.drawTicks=function(){var t=[0,0],e=[0,0],r=[0,0];return function(n){var i=this.plot,a=this.shader,o=this.tickX[n],s=this.tickOffset[n],c=i.gl,u=i.viewBox,f=i.dataBox,h=i.screenBox,d=i.pixelRatio,p=i.tickEnable,g=i.tickPad,v=i.tickColor,m=i.tickAngle,y=(i.tickMarkLength,i.labelEnable),b=i.labelPad,x=i.labelColor,_=i.labelAngle,w=this.labelOffset[n],k=this.labelCount[n],A=l.lt(o,f[n]),M=l.le(o,f[n+2]);t[0]=t[1]=0,t[n]=1,e[n]=(u[2+n]+u[n])/(h[2+n]-h[n])-1;var T=2/h[2+(1^n)]-h[1^n];e[1^n]=T*u[1^n]-1,p[n]&&(e[1^n]-=T*d*g[n],M>A&&s[M]>s[A]&&(a.uniforms.dataAxis=t,a.uniforms.screenOffset=e,a.uniforms.color=v[n],a.uniforms.angle=m[n],c.drawArrays(c.TRIANGLES,s[A],s[M]-s[A]))),y[n]&&k&&(e[1^n]-=T*d*b[n],a.uniforms.dataAxis=r,a.uniforms.screenOffset=e,a.uniforms.color=x[n],a.uniforms.angle=_[n],c.drawArrays(c.TRIANGLES,w,k)),e[1^n]=T*u[2+(1^n)]-1,p[n+2]&&(e[1^n]+=T*d*g[n+2],M>A&&s[M]>s[A]&&(a.uniforms.dataAxis=t,a.uniforms.screenOffset=e,a.uniforms.color=v[n+2],a.uniforms.angle=m[n+2],c.drawArrays(c.TRIANGLES,s[A],s[M]-s[A]))),y[n+2]&&k&&(e[1^n]+=T*d*b[n+2],a.uniforms.dataAxis=r,a.uniforms.screenOffset=e,a.uniforms.color=x[n+2],a.uniforms.angle=_[n+2],c.drawArrays(c.TRIANGLES,w,k))}}(),u.drawTitle=function(){var t=[0,0],e=[0,0];return function(){var r=this.plot,n=this.shader,i=r.gl,a=r.screenBox,o=r.titleCenter,s=r.titleAngle,l=r.titleColor,o=r.titleCenter,c=r.pixelRatio;if(this.titleCount){for(var u=0;2>u;++u)e[u]=2*(o[u]*c-a[u])/(a[2+u]-a[u])-1;n.bind(),n.uniforms.dataAxis=t,n.uniforms.screenOffset=e,n.uniforms.angle=s,n.uniforms.color=l,i.drawArrays(i.TRIANGLES,this.titleOffset,this.titleCount)}}}(),u.bind=function(){var t=[0,0],e=[0,0],r=[0,0];return function(){var n=this.plot,i=this.shader,a=n._tickBounds,o=n.dataBox,s=n.screenBox,l=n.viewBox;i.bind();for(var c=0;2>c;++c){var u=a[c],f=a[c+2],h=f-u,d=.5*(o[c+2]+o[c]),p=o[c+2]-o[c],g=l[c],v=l[c+2],m=v-g,y=s[c],b=s[c+2],x=b-y;e[c]=2*h/p*m/x,t[c]=2*(u-d)/p*m/x}r[1]=2*n.pixelRatio/(s[3]-s[1]),r[0]=r[1]*(s[3]-s[1])/(s[2]-s[0]),i.uniforms.dataScale=e,i.uniforms.dataShift=t,i.uniforms.textScale=r,this.vbo.bind(),i.attributes.textCoordinate.pointer()}}(),u.update=function(t){for(var e=[],r=t.ticks,n=t.bounds,i=0;2>i;++i){for(var a=[Math.floor(e.length/3)],o=[-(1/0)],l=r[i],c=0;ci;++i){this.labelOffset[i]=Math.floor(e.length/3);for(var g=s(t.labelFont[i],t.labels[i]).data,p=t.labelSize[i],c=0;cp;++p)if(f[p]&&n[p]<=0&&n[p+2]>=0){var g=e[p]-n[p]*(e[p+2]-e[p])/(n[p+2]-n[p]);0===p?o.drawLine(g,e[1],g,e[3],d[p],h[p]):o.drawLine(e[0],g,e[2],g,d[p],h[p])}}for(var p=0;pp;++p)s.drawTicks(p);this.titleEnable&&s.drawTitle();for(var b=this.overlays,p=0;pc;++c){var u=s[c].slice(0);0!==u.length&&(u.sort(a),l[c]=Math.min(l[c],u[0].x),l[c+2]=Math.max(l[c+2],u[u.length-1].x))}this.grid.update({bounds:l,ticks:s}),this.text.update({bounds:l,ticks:s,labels:t.labels||[\"x\",\"y\"],labelSize:t.labelSize||[12,12],labelFont:t.labelFont||[\"sans-serif\",\"sans-serif\"],title:t.title||\"\",titleSize:t.titleSize||18,titleFont:t.titleFont||\"sans-serif\"}),this.setDirty()},h.dispose=function(){this.box.dispose(),this.grid.dispose(),this.text.dispose(),this.line.dispose();for(var t=this.objects.length-1;t>=0;--t)this.objects[t].dispose();this.objects.length=0;for(var t=this.overlays.length-1;t>=0;--t)this.overlays[t].dispose();this.overlays.length=0,this.gl=null},h.addObject=function(t){this.objects.indexOf(t)<0&&(this.objects.push(t),this.setDirty())},h.removeObject=function(t){for(var e=this.objects,r=0;rh;++h)o=o&&l[h]===s[h],l[h]=s[h];var d=t.clientWidth===u&&t.clientHeight===f;return u=t.clientWidth,f=t.clientHeight,o?!d:(c=Math.exp(n.computedRadius[0]),!0)},lookAt:function(t,e,r){n.lookAt(n.lastT(),t,e,r)},rotate:function(t,e,r){n.rotate(n.lastT(),t,e,r)},pan:function(t,e,r){n.pan(n.lastT(),t,e,r)},translate:function(t,e,r){n.translate(n.lastT(),t,e,r)}};Object.defineProperties(h,{matrix:{get:function(){return n.computedMatrix},set:function(t){return n.setMatrix(n.lastT(),t),n.computedMatrix},enumerable:!0},mode:{get:function(){return n.getMode()},set:function(t){return n.setMode(t),n.getMode()},enumerable:!0},center:{get:function(){return n.computedCenter},set:function(t){return n.lookAt(n.lastT(),t),n.computedCenter},enumerable:!0},eye:{get:function(){return n.computedEye},set:function(t){return n.lookAt(n.lastT(),null,t),n.computedEye},enumerable:!0},up:{get:function(){return n.computedUp},set:function(t){return n.lookAt(n.lastT(),null,null,t),n.computedUp},enumerable:!0},distance:{get:function(){return c},set:function(t){return n.setDistance(n.lastT(),t),t},enumerable:!0},distanceLimits:{get:function(){return n.getDistanceLimits(r)},set:function(t){return n.setDistanceLimits(t),t},enumerable:!0}}),t.addEventListener(\"contextmenu\",function(t){return t.preventDefault(),!1});var d=0,p=0;return o(t,function(e,r,a,o){var s=1/t.clientHeight,l=s*(r-d),u=s*(a-p),f=h.flipX?1:-1,g=h.flipY?1:-1,v=Math.PI*h.rotateSpeed,m=i();if(1&e)o.shift?n.rotate(m,0,0,-l*v):n.rotate(m,f*v*l,-g*v*u,0);else if(2&e)n.pan(m,-h.translateSpeed*l*c,h.translateSpeed*u*c,0);else if(4&e){var y=h.zoomSpeed*u/window.innerHeight*(m-n.lastT())*50;n.pan(m,0,0,c*(Math.exp(y)-1))}d=r,p=a}),s(t,function(t,e,r){var a=h.flipX?1:-1,o=h.flipY?1:-1,s=i();if(Math.abs(t)>Math.abs(e))n.rotate(s,0,0,-t*a*Math.PI*h.rotateSpeed/window.innerWidth);else{var l=h.zoomSpeed*o*e/window.innerHeight*(s-n.lastT())/100;n.pan(s,0,0,c*(Math.exp(l)-1))}},!0),h}e.exports=n;var i=t(\"right-now\"),a=t(\"3d-view\"),o=t(\"mouse-change\"),s=t(\"mouse-wheel\")},{\"3d-view\":39,\"mouse-change\":241,\"mouse-wheel\":245,\"right-now\":255}],168:[function(t,e,r){!function(){\"use strict\";function t(e){e.permitHostObjects___&&e.permitHostObjects___(t)}function r(t){return!(t.substr(0,d.length)==d&&\"___\"===t.substr(t.length-3))}function n(t){if(t!==Object(t))throw new TypeError(\"Not an object: \"+t);var e=t[p];if(e&&e.key===t)return e;if(h(t)){e={key:t};try{return f(t,p,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(r){return}}}function i(t){return t.prototype=null,Object.freeze(t)}function a(){y||\"undefined\"==typeof console||(y=!0,console.warn(\"WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future.\"))}if(\"undefined\"==typeof ses||!ses.ok||ses.ok()){\"undefined\"!=typeof ses&&(ses.weakMapPermitHostObjects=t);var o=!1;if(\"function\"==typeof WeakMap){var s=WeakMap;if(\"undefined\"!=typeof navigator&&/Firefox/.test(navigator.userAgent));else{var l=new s,c=Object.freeze({});if(l.set(c,1),1===l.get(c))return void(e.exports=WeakMap);o=!0}}var u=(Object.prototype.hasOwnProperty,Object.getOwnPropertyNames),f=Object.defineProperty,h=Object.isExtensible,d=\"weakmap:\",p=d+\"ident:\"+Math.random()+\"___\";if(\"undefined\"!=typeof crypto&&\"function\"==typeof crypto.getRandomValues&&\"function\"==typeof ArrayBuffer&&\"function\"==typeof Uint8Array){var g=new ArrayBuffer(25),v=new Uint8Array(g);crypto.getRandomValues(v),p=d+\"rand:\"+Array.prototype.map.call(v,function(t){return(t%36).toString(36)}).join(\"\")+\"___\"}if(f(Object,\"getOwnPropertyNames\",{value:function(t){return u(t).filter(r)}}),\"getPropertyNames\"in Object){var m=Object.getPropertyNames;f(Object,\"getPropertyNames\",{value:function(t){return m(t).filter(r)}})}!function(){var t=Object.freeze;f(Object,\"freeze\",{value:function(e){return n(e),t(e)}});var e=Object.seal;f(Object,\"seal\",{value:function(t){return n(t),e(t)}});var r=Object.preventExtensions;f(Object,\"preventExtensions\",{value:function(t){return n(t),r(t)}})}();var y=!1,b=0,x=function(){function t(t,e){var r,i=n(t);return i?c in i?i[c]:e:(r=s.indexOf(t),r>=0?l[r]:e)}function e(t){var e=n(t);return e?c in e:s.indexOf(t)>=0}function r(t,e){var r,i=n(t);return i?i[c]=e:(r=s.indexOf(t),r>=0?l[r]=e:(r=s.length,l[r]=e,s[r]=t)),this}function o(t){var e,r,i=n(t);return i?c in i&&delete i[c]:(e=s.indexOf(t),0>e?!1:(r=s.length-1,s[e]=void 0,l[e]=l[r],s[e]=s[r],s.length=r,l.length=r,!0))}this instanceof x||a();var s=[],l=[],c=b++;return Object.create(x.prototype,{get___:{value:i(t)},has___:{value:i(e)},set___:{value:i(r)},delete___:{value:i(o)}})};x.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},\"delete\":{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),\"function\"==typeof s?!function(){function r(){function e(t,e){return u?c.has(t)?c.get(t):u.get___(t,e):c.get(t,e)}function r(t){return c.has(t)||(u?u.has___(t):!1)}function n(t){var e=!!c.delete(t);return u?u.delete___(t)||e:e}this instanceof x||a();var l,c=new s,u=void 0,f=!1;return l=o?function(t,e){return c.set(t,e),c.has(t)||(u||(u=new x),u.set(t,e)),this}:function(t,e){if(f)try{c.set(t,e)}catch(r){u||(u=new x),u.set___(t,e)}else c.set(t,e);return this},Object.create(x.prototype,{get___:{value:i(e)},has___:{value:i(r)},set___:{value:i(l)},delete___:{value:i(n)},permitHostObjects___:{value:i(function(e){if(e!==t)throw new Error(\"bogus call to permitHostObjects___\");f=!0})}})}o&&\"undefined\"!=typeof Proxy&&(Proxy=void 0),r.prototype=x.prototype,e.exports=r,Object.defineProperty(WeakMap.prototype,\"constructor\",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(\"undefined\"!=typeof Proxy&&(Proxy=void 0),e.exports=x)}}()},{}],169:[function(t,e,r){\"use strict\";function n(t){var e=s.get(t);if(!e||!t.isBuffer(e._triangleBuffer.buffer)){var r=a(t,new Float32Array([-1,-1,-1,4,4,-1]));e=o(t,[{buffer:r,type:t.FLOAT,size:2}]),e._triangleBuffer=r,s.set(t,e)}e.bind(),t.drawArrays(t.TRIANGLES,0,3),e.unbind()}var i=\"undefined\"==typeof WeakMap?t(\"weak-map\"):WeakMap,a=t(\"gl-buffer\"),o=t(\"gl-vao\"),s=new i;e.exports=n},{\"gl-buffer\":118,\"gl-vao\":226,\"weak-map\":168}],170:[function(t,e,r){\"use strict\";function n(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function i(t){this.gl=t,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=[\"sans-serif\",\"sans-serif\",\"sans-serif\"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=[\"x\",\"y\",\"z\"],this.labelEnable=[!0,!0,!0],this.labelFont=\"sans-serif\",this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(t)}function a(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}function o(t,e,r,n,i){for(var a=t.primalOffset,o=t.primalMinor,s=t.mirrorOffset,l=t.mirrorMinor,c=n[e],u=0;3>u;++u)if(e!==u){var f=a,h=s,d=o,p=l;c&1<0?(d[u]=-1,p[u]=0):(d[u]=0,p[u]=1)}}function s(t,e){var r=new i(t);return r.update(e),r}e.exports=s;var l=t(\"./lib/text.js\"),c=t(\"./lib/lines.js\"),u=t(\"./lib/background.js\"),f=t(\"./lib/cube.js\"),h=t(\"./lib/ticks.js\"),d=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),p=i.prototype;p.update=function(t){function e(e,r,n){if(n in t){var i,a=t[n],o=this[n];(e?Array.isArray(a)&&Array.isArray(a[0]):Array.isArray(a))?this[n]=i=[r(a[0]),r(a[1]),r(a[2])]:this[n]=i=[r(a),r(a),r(a)];for(var s=0;3>s;++s)if(i[s]!==o[s])return!0}return!1}t=t||{};var r,n=e.bind(this,!1,Number),i=e.bind(this,!1,Boolean),a=e.bind(this,!1,String),o=e.bind(this,!0,function(t){if(Array.isArray(t)){if(3===t.length)return[+t[0],+t[1],+t[2],1];if(4===t.length)return[+t[0],+t[1],+t[2],+t[3]]}return[0,0,0,1]}),s=!1,u=!1;if(\"bounds\"in t)for(var f=t.bounds,d=0;2>d;++d)for(var p=0;3>p;++p)f[d][p]!==this.bounds[d][p]&&(u=!0),this.bounds[d][p]=f[d][p];if(\"ticks\"in t){r=t.ticks,s=!0,this.autoTicks=!1;for(var d=0;3>d;++d)this.tickSpacing[d]=0}else n(\"tickSpacing\")&&(this.autoTicks=!0,u=!0);if(this._firstInit&&(\"ticks\"in t||\"tickSpacing\"in t||(this.autoTicks=!0),u=!0,s=!0,this._firstInit=!1),u&&this.autoTicks&&(r=h.create(this.bounds,this.tickSpacing),s=!0),s){for(var d=0;3>d;++d)r[d].sort(function(t,e){return t.x-e.x});h.equal(r,this.ticks)?s=!1:this.ticks=r}i(\"tickEnable\"),a(\"tickFont\")&&(s=!0),n(\"tickSize\"),n(\"tickAngle\"),n(\"tickPad\"),o(\"tickColor\");var g=a(\"labels\");a(\"labelFont\")&&(g=!0),i(\"labelEnable\"),n(\"labelSize\"),n(\"labelPad\"),o(\"labelColor\"),i(\"lineEnable\"),i(\"lineMirror\"),n(\"lineWidth\"),o(\"lineColor\"),i(\"lineTickEnable\"),i(\"lineTickMirror\"),n(\"lineTickLength\"),n(\"lineTickWidth\"),o(\"lineTickColor\"),i(\"gridEnable\"),n(\"gridWidth\"),o(\"gridColor\"),i(\"zeroEnable\"),o(\"zeroLineColor\"),n(\"zeroLineWidth\"),i(\"backgroundEnable\"),o(\"backgroundColor\"),this._text?this._text&&(g||s)&&this._text.update(this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont):this._text=l(this.gl,this.bounds,this.labels,this.labelFont,this.ticks,this.tickFont),this._lines&&s&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=c(this.gl,this.bounds,this.ticks))};var g=[new a,new a,new a],v=[0,0,0],m={model:d,view:d,projection:d};p.isOpaque=function(){return!0},p.isTransparent=function(){return!1},p.drawTransparent=function(t){};var y=[0,0,0],b=[0,0,0],x=[0,0,0];p.draw=function(t){t=t||m;for(var e=this.gl,r=t.model||d,i=t.view||d,a=t.projection||d,s=this.bounds,l=f(r,i,a,s),c=l.cubeEdges,u=l.axis,h=i[12],p=i[13],_=i[14],w=i[15],k=this.pixelRatio*(a[3]*h+a[7]*p+a[11]*_+a[15]*w)/e.drawingBufferHeight,A=0;3>A;++A)this.lastCubeProps.cubeEdges[A]=c[A],this.lastCubeProps.axis[A]=u[A];for(var M=g,A=0;3>A;++A)o(g[A],A,this.bounds,c,u);for(var e=this.gl,T=v,A=0;3>A;++A)this.backgroundEnable[A]?T[A]=u[A]:T[A]=0;this._background.draw(r,i,a,s,T,this.backgroundColor),this._lines.bind(r,i,a,this);for(var A=0;3>A;++A){var E=[0,0,0];u[A]>0?E[A]=s[1][A]:E[A]=s[0][A];for(var L=0;2>L;++L){var S=(A+1+L)%3,C=(A+1+(1^L))%3;this.gridEnable[S]&&this._lines.drawGrid(S,C,this.bounds,E,this.gridColor[S],this.gridWidth[S]*this.pixelRatio)}for(var L=0;2>L;++L){var S=(A+1+L)%3,C=(A+1+(1^L))%3;this.zeroEnable[C]&&s[0][C]<=0&&s[1][C]>=0&&this._lines.drawZero(S,C,this.bounds,E,this.zeroLineColor[C],this.zeroLineWidth[C]*this.pixelRatio)}}for(var A=0;3>A;++A){this.lineEnable[A]&&this._lines.drawAxisLine(A,this.bounds,M[A].primalOffset,this.lineColor[A],this.lineWidth[A]*this.pixelRatio),this.lineMirror[A]&&this._lines.drawAxisLine(A,this.bounds,M[A].mirrorOffset,this.lineColor[A],this.lineWidth[A]*this.pixelRatio);for(var z=n(y,M[A].primalMinor),P=n(b,M[A].mirrorMinor),R=this.lineTickLength,L=0;3>L;++L){var O=k/r[5*L];z[L]*=R[L]*O,P[L]*=R[L]*O}this.lineTickEnable[A]&&this._lines.drawAxisTicks(A,M[A].primalOffset,z,this.lineTickColor[A],this.lineTickWidth[A]*this.pixelRatio),this.lineTickMirror[A]&&this._lines.drawAxisTicks(A,M[A].mirrorOffset,P,this.lineTickColor[A],this.lineTickWidth[A]*this.pixelRatio)}this._text.bind(r,i,a,this.pixelRatio);for(var A=0;3>A;++A){for(var I=M[A].primalMinor,N=n(x,M[A].primalOffset),L=0;3>L;++L)this.lineTickEnable[A]&&(N[L]+=k*I[L]*Math.max(this.lineTickLength[L],0)/r[5*L]);if(this.tickEnable[A]){for(var L=0;3>L;++L)N[L]+=k*I[L]*this.tickPad[L]/r[5*L];this._text.drawTicks(A,this.tickSize[A],this.tickAngle[A],N,this.tickColor[A])}if(this.labelEnable[A]){for(var L=0;3>L;++L)N[L]+=k*I[L]*this.labelPad[L]/r[5*L];N[A]+=.5*(s[0][A]+s[1][A]),this._text.drawLabel(A,this.labelSize[A],this.labelAngle[A],N,this.labelColor[A])}}},p.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},{\"./lib/background.js\":171,\"./lib/cube.js\":172,\"./lib/lines.js\":173,\"./lib/text.js\":175,\"./lib/ticks.js\":176}],171:[function(t,e,r){\"use strict\";function n(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n}function i(t){for(var e=[],r=[],i=0,l=0;3>l;++l)for(var c=(l+1)%3,u=(l+2)%3,f=[0,0,0],h=[0,0,0],d=-1;1>=d;d+=2){r.push(i,i+2,i+1,i+1,i+2,i+3),f[l]=d,h[l]=d;for(var p=-1;1>=p;p+=2){f[c]=p;for(var g=-1;1>=g;g+=2)f[u]=g,e.push(f[0],f[1],f[2],h[0],h[1],h[2]),i+=1}var v=c;c=u,u=v}var m=a(t,new Float32Array(e)),y=a(t,new Uint16Array(r),t.ELEMENT_ARRAY_BUFFER),b=o(t,[{buffer:m,type:t.FLOAT,size:3,offset:0,stride:24},{buffer:m,type:t.FLOAT,size:3,offset:12,stride:24}],y),x=s(t);return x.attributes.position.location=0,x.attributes.normal.location=1,new n(t,m,b,x)}e.exports=i;var a=t(\"gl-buffer\"),o=t(\"gl-vao\"),s=t(\"./shaders\").bg,l=n.prototype;l.draw=function(t,e,r,n,i,a){for(var o=!1,s=0;3>s;++s)o=o||i[s];if(o){var l=this.gl;l.enable(l.POLYGON_OFFSET_FILL),l.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:t,view:e,projection:r,bounds:n,enable:i,colors:a},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),l.disable(l.POLYGON_OFFSET_FILL)}},l.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},{\"./shaders\":174,\"gl-buffer\":118,\"gl-vao\":226}],172:[function(t,e,r){\"use strict\";function n(t,e,r){for(var n=0;4>n;++n){t[n]=r[12+n];for(var i=0;3>i;++i)t[n]+=e[i]*r[4*i+n]}}function i(t){for(var e=0;eg;++g){d[2]=a[g][2];for(var b=0;2>b;++b){d[1]=a[b][1];for(var x=0;2>x;++x)d[0]=a[x][0],n(f[l],d,u),l+=1}}for(var _=-1,g=0;8>g;++g){for(var w=f[g][3],k=0;3>k;++k)h[g][k]=f[g][k]/w;0>w&&(0>_?_=g:h[g][2]_){_=0;for(var A=0;3>A;++A){for(var M=(A+2)%3,T=(A+1)%3,E=-1,L=-1,S=0;2>S;++S){var C=S<E||0>L)L>E&&(_|=1<S;++S){var C=S<E&&(_|=1<g;++g)g!==_&&g!==O&&(0>I?I=g:h[I][1]>h[g][1]&&(I=g));for(var N=-1,g=0;3>g;++g){var j=I^1<N&&(N=j);var T=h[j];T[0]g;++g){var j=I^1<F&&(F=j);var T=h[j];T[0]>h[F][0]&&(F=j)}}var D=v;D[0]=D[1]=D[2]=0,D[o.log2(N^I)]=I&N,D[o.log2(I^F)]=I&F;var B=7^F;B===_||B===O?(B=7^N,D[o.log2(F^B)]=B&F):D[o.log2(N^B)]=B&N;for(var U=m,V=_,A=0;3>A;++A)V&1<t;++t)f[t]=[1,1,1,1],h[t]=[1,1,1]}();var g=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]],v=[1,1,1],m=[0,0,0],y={cubeEdges:v,axis:m}},{\"bit-twiddle\":50,\"gl-mat4/invert\":137,\"gl-mat4/multiply\":139,\"robust-orientation\":259,\"split-polygon\":178}],173:[function(t,e,r){\"use strict\";function n(t){return t[0]=t[1]=t[2]=0,t}function i(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function a(t,e,r,n,i,a,o,s){this.gl=t,this.vertBuffer=e,this.vao=r,this.shader=n,this.tickCount=i,this.tickOffset=a,this.gridCount=o,this.gridOffset=s}function o(t,e,r){var n=[],i=[0,0,0],o=[0,0,0],u=[0,0,0],f=[0,0,0];n.push(0,0,1,0,1,1,0,0,-1,0,0,-1,0,1,1,0,1,-1);for(var h=0;3>h;++h){for(var d=n.length/3|0,p=0;p 0.0) {\\n vec3 nPosition = mix(bounds[0], bounds[1], 0.5 * (position + 1.0));\\n gl_Position = projection * view * model * vec4(nPosition, 1.0);\\n } else {\\n gl_Position = vec4(0,0,0,0);\\n }\\n colorChannel = abs(normal);\\n}\",c=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 colors[3];\\n\\nvarying vec3 colorChannel;\\n\\nvoid main() {\\n gl_FragColor = colorChannel.x * colors[0] + \\n colorChannel.y * colors[1] +\\n colorChannel.z * colors[2];\\n}\";r.bg=function(t){return n(t,l,c,null,[{name:\"position\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"}])}},{\"gl-shader\":197}],175:[function(t,e,r){(function(r){\"use strict\";function n(t,e,r,n){this.gl=t,this.shader=e,this.buffer=r,this.vao=n,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}function i(t,e){try{return l(t,e)}catch(r){return console.warn(\"error vectorizing text:\",r),{cells:[],positions:[]}}}function a(t,e,r,i,a,l){var u=o(t),f=s(t,[{buffer:u,size:3}]),h=c(t);h.attributes.position.location=0;var d=new n(t,h,u,f);return d.update(e,r,i,a,l),d}e.exports=a;var o=t(\"gl-buffer\"),s=t(\"gl-vao\"),l=t(\"vectorize-text\"),c=t(\"./shaders\").text,u=window||r.global||{},f=u.__TEXT_CACHE||{};u.__TEXT_CACHE={};var h=3,d=n.prototype,p=[0,0];d.bind=function(t,e,r,n){this.vao.bind(),this.shader.bind();var i=this.shader.uniforms;i.model=t,i.view=e,i.projection=r,i.pixelScale=n,p[0]=this.gl.drawingBufferWidth,p[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=p},d.update=function(t,e,r,n,a){function o(t,e,r,n){var a=f[r];a||(a=f[r]={});var o=a[e];o||(o=a[e]=i(e,{triangles:!0,font:r,textAlign:\"center\",textBaseline:\"middle\"}));for(var l=(n||12)/12,c=o.positions,u=o.cells,h=0,d=u.length;d>h;++h)for(var p=u[h],g=2;g>=0;--g){var v=c[p[g]];s.push(l*v[0],-l*v[1],t)}}for(var s=(this.gl,[]),l=[0,0,0],c=[0,0,0],u=[0,0,0],d=[0,0,0],p=0;3>p;++p){u[p]=s.length/h|0,o(.5*(t[0][p]+t[1][p]),e[p],r),d[p]=(s.length/h|0)-u[p],l[p]=s.length/h|0;for(var g=0;g=0&&(i=r.length-n-1);var a=Math.pow(10,i),o=Math.round(t*e*a),s=o+\"\";if(s.indexOf(\"e\")>=0)return s;var l=o/a,c=o%a;0>o?(l=0|-Math.ceil(l),c=0|-c):(l=0|Math.floor(l),c=0|c);var u=\"\"+l;if(0>o&&(u=\"-\"+u),i){for(var f=\"\"+c;f.lengthi;++i){for(var a=[],o=(.5*(t[0][i]+t[1][i]),0);o*e[i]<=t[1][i];++o)a.push({x:o*e[i],text:n(e[i],o)});for(var o=-1;o*e[i]>=t[0][i];--o)a.push({x:o*e[i],text:n(e[i],o)});r.push(a)}return r}function a(t,e){for(var r=0;3>r;++r){if(t[r].length!==e[r].length)return!1;for(var n=0;na?a=0:a>1&&(a=1);for(var o=1-a,s=t.length,l=new Array(s),c=0;s>c;++c)l[c]=a*t[c]+o*r[c];return l}function a(t,e){for(var r=[],a=[],o=n(t[t.length-1],e),s=t[t.length-1],l=t[0],c=0;co&&u>0||o>0&&0>u){var f=i(s,u,l,o);r.push(f),a.push(f.slice())}0>u?a.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),a.push(l.slice())),o=u}return{positive:r,negative:a}}function o(t,e){for(var r=[],a=n(t[t.length-1],e),o=t[t.length-1],s=t[0],l=0;la&&c>0||a>0&&0>c)&&r.push(i(o,c,s,a)),c>=0&&r.push(s.slice()),a=c}return r}function s(t,e){for(var r=[],a=n(t[t.length-1],e),o=t[t.length-1],s=t[0],l=0;la&&c>0||a>0&&0>c)&&r.push(i(o,c,s,a)),0>=c&&r.push(s.slice()),a=c}return r}var l=t(\"robust-dot-product\"),c=t(\"robust-sum\");e.exports=a,e.exports.positive=o,e.exports.negative=s},{\"robust-dot-product\":179,\"robust-sum\":262}],179:[function(t,e,r){\"use strict\";function n(t,e){for(var r=i(t[0],e[0]),n=1;na;++a){for(var o=p,s=g,l=0;3>l;++l)s[l]=o[l]=r[l];s[3]=o[3]=1,s[a]+=1,f(s,s,e),s[3]<0&&(t[a]=1/0),o[a]-=1,f(o,o,e),o[3]<0&&(t[a]=1/0);var c=(o[0]/o[3]-s[0]/s[3])*n,u=(o[1]/o[3]-s[1]/s[3])*i;t[a]=.25*Math.sqrt(c*c+u*u)}return t}function a(t,e,r,n,a){var f=e.model||h,p=e.view||h,g=e.projection||h,y=t.bounds,a=a||l(f,p,g,y),b=a.axis;a.edges;c(d,p,f),c(d,g,d);for(var x=v,_=0;3>_;++_)x[_].lo=1/0,x[_].hi=-(1/0),x[_].pixelsPerDataUnit=1/0;var w=o(u(d,d));u(d,d);for(var k=0;3>k;++k){var A=(k+1)%3,M=(k+2)%3,T=m;t:for(var _=0;2>_;++_){var E=[];if(b[k]<0!=!!_){T[k]=y[_][k];for(var L=0;2>L;++L){T[A]=y[L^_][A];for(var S=0;2>S;++S)T[M]=y[S^L^_][M],E.push(T.slice())}for(var L=0;LS;++S)x[S].lo=Math.min(x[S].lo,M[S]),x[S].hi=Math.max(x[S].hi,M[S]),S!==k&&(x[S].pixelsPerDataUnit=Math.min(x[S].pixelsPerDataUnit,Math.abs(C[S])))}}}return x}e.exports=a;var o=t(\"extract-frustum-planes\"),s=t(\"split-polygon\"),l=t(\"./lib/cube.js\"),c=t(\"gl-mat4/multiply\"),u=t(\"gl-mat4/transpose\"),f=t(\"gl-vec4/transformMat4\"),h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),d=new Float32Array(16),p=[0,0,0,1],g=[0,0,0,1],v=[new n(1/0,-(1/0),1/0),new n(1/0,-(1/0),1/0),new n(1/0,-(1/0),1/0)],m=[0,0,0]},{\"./lib/cube.js\":172,\"extract-frustum-planes\":177,\"gl-mat4/multiply\":139,\"gl-mat4/transpose\":147,\"gl-vec4/transformMat4\":227,\"split-polygon\":178}],181:[function(t,e,r){\"use strict\";var n=t(\"gl-shader\"),i=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position, color;\\nattribute float weight;\\n\\nuniform mat4 model, view, projection;\\nuniform vec3 coordinates[3];\\nuniform vec4 colors[3];\\nuniform vec2 screenShape;\\nuniform float lineWidth;\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n vec3 vertexPosition = mix(coordinates[0],\\n mix(coordinates[2], coordinates[1], 0.5 * (position + 1.0)), abs(position));\\n\\n vec4 clipPos = projection * view * model * vec4(vertexPosition, 1.0);\\n vec2 clipOffset = (projection * view * model * vec4(color, 0.0)).xy;\\n vec2 delta = weight * clipOffset * screenShape;\\n vec2 lineOffset = normalize(vec2(delta.y, -delta.x)) / screenShape;\\n\\n gl_Position = vec4(clipPos.xy + clipPos.w * 0.5 * lineWidth * lineOffset, clipPos.z, clipPos.w);\\n fragColor = color.x * colors[0] + color.y * colors[1] + color.z * colors[2];\\n}\\n\",a=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragColor;\\n\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\";\n", + "e.exports=function(t){return n(t,i,a,null,[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec3\"},{name:\"weight\",type:\"float\"}])}},{\"gl-shader\":197}],182:[function(t,e,r){\"use strict\";function n(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n,this.pixelRatio=1,this.bounds=[[-1e3,-1e3,-1e3],[1e3,1e3,1e3]],this.position=[0,0,0],this.lineWidth=[2,2,2],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.enabled=[!0,!0,!0],this.drawSides=[!0,!0,!0],this.axes=null}function i(t,e){function r(t,e,r,n,a,o){var s=[t,e,r,0,0,0,1];s[n+3]=1,s[n]=a,i.push.apply(i,s),s[6]=-1,i.push.apply(i,s),s[n]=o,i.push.apply(i,s),i.push.apply(i,s),s[6]=1,i.push.apply(i,s),s[n]=a,i.push.apply(i,s)}var i=[];r(0,0,0,0,0,1),r(0,0,0,1,0,1),r(0,0,0,2,0,1),r(1,0,0,1,-1,1),r(1,0,0,2,-1,1),r(0,1,0,0,-1,1),r(0,1,0,2,-1,1),r(0,0,1,0,-1,1),r(0,0,1,1,-1,1);var l=a(t,i),c=o(t,[{type:t.FLOAT,buffer:l,size:3,offset:0,stride:28},{type:t.FLOAT,buffer:l,size:3,offset:12,stride:28},{type:t.FLOAT,buffer:l,size:1,offset:24,stride:28}]),u=s(t);u.attributes.position.location=0,u.attributes.color.location=1,u.attributes.weight.location=2;var f=new n(t,l,c,u);return f.update(e),f}var a=t(\"gl-buffer\"),o=t(\"gl-vao\"),s=t(\"./shaders/index\");e.exports=i;var l=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],c=n.prototype,u=[0,0,0],f=[0,0,0],h=[0,0];c.isTransparent=function(){return!1},c.drawTransparent=function(t){},c.draw=function(t){var e=this.gl,r=this.vao,n=this.shader;r.bind(),n.bind();var i,a=t.model||l,o=t.view||l,s=t.projection||l;this.axes&&(i=this.axes.lastCubeProps.axis);for(var c=u,d=f,p=0;3>p;++p)i&&i[p]<0?(c[p]=this.bounds[0][p],d[p]=this.bounds[1][p]):(c[p]=this.bounds[1][p],d[p]=this.bounds[0][p]);h[0]=e.drawingBufferWidth,h[1]=e.drawingBufferHeight,n.uniforms.model=a,n.uniforms.view=o,n.uniforms.projection=s,n.uniforms.coordinates=[this.position,c,d],n.uniforms.colors=this.colors,n.uniforms.screenShape=h;for(var p=0;3>p;++p)n.uniforms.lineWidth=this.lineWidth[p]*this.pixelRatio,this.enabled[p]&&(r.draw(e.TRIANGLES,6,6*p),this.drawSides[p]&&r.draw(e.TRIANGLES,12,18+12*p));r.unbind()},c.update=function(t){t&&(\"bounds\"in t&&(this.bounds=t.bounds),\"position\"in t&&(this.position=t.position),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"colors\"in t&&(this.colors=t.colors),\"enabled\"in t&&(this.enabled=t.enabled),\"drawSides\"in t&&(this.drawSides=t.drawSides))},c.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},{\"./shaders/index\":181,\"gl-buffer\":118,\"gl-vao\":226}],183:[function(t,e,r){\"use strict\";function n(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function i(t,e){var r=null;try{r=t.getContext(\"webgl\",e),r||(r=t.getContext(\"experimental-webgl\",e))}catch(n){return null}return r}function a(t){var e=Math.round(Math.log(Math.abs(t))/Math.log(10));if(0>e){var r=Math.round(Math.pow(10,-e));return Math.ceil(t*r)/r}if(e>0){var r=Math.round(Math.pow(10,e));return Math.ceil(t/r)*r}return Math.ceil(t)}function o(t){return\"boolean\"==typeof t?t:!0}function s(t){function e(){if(!_&&H.autoResize){var t=w.parentNode,e=1,r=1;t&&t!==document.body?(e=t.clientWidth,r=t.clientHeight):(e=window.innerWidth,r=window.innerHeight);var n=0|Math.ceil(e*H.pixelRatio),i=0|Math.ceil(r*H.pixelRatio);if(n!==w.width||i!==w.height){w.width=n,w.height=i;var a=w.style;a.position=a.position||\"absolute\",a.left=\"0px\",a.top=\"0px\",a.width=e+\"px\",a.height=r+\"px\",F=!0}}}function r(){for(var t=O.length,e=j.length,r=0;e>r;++r)N[r]=0;t:for(var r=0;t>r;++r){var n=O[r],i=n.pickSlots;if(i){for(var a=0;e>a;++a)if(N[a]+i<255){I[r]=a,n.setPickBase(N[a]+1),N[a]+=i;continue t}var o=h(A,q);I[r]=e,j.push(o),N.push(i),n.setPickBase(1),e+=1}else I[r]=-1}for(;e>0&&0===N[e-1];)N.pop(),j.pop().dispose()}function s(){return H.contextLost?!0:void(A.isContextLost()&&(H.contextLost=!0,H.mouseListener.enabled=!1,H.selection.object=null,H.oncontextloss&&H.oncontextloss()))}function y(){if(!s()){A.colorMask(!0,!0,!0,!0),A.depthMask(!0),A.disable(A.BLEND),A.enable(A.DEPTH_TEST);for(var t=O.length,e=j.length,r=0;e>r;++r){var n=j[r];n.shape=G,n.begin();for(var i=0;t>i;++i)if(I[i]===r){var a=O[i];a.drawPick&&(a.pixelRatio=1,a.drawPick(V))}n.end()}}}function b(){if(!s()){e();var t=H.camera.tick();V.view=H.camera.matrix,F=F||t,D=D||t,z.pixelRatio=H.pixelRatio,R.pixelRatio=H.pixelRatio;var r=O.length,n=W[0],i=W[1];n[0]=n[1]=n[2]=1/0,i[0]=i[1]=i[2]=-(1/0);for(var o=0;r>o;++o){var l=O[o];l.pixelRatio=H.pixelRatio,l.axes=H.axes,F=F||!!l.dirty,D=D||!!l.dirty;var c=l.bounds;if(c)for(var f=c[0],h=c[1],d=0;3>d;++d)n[d]=Math.min(n[d],f[d]),i[d]=Math.max(i[d],h[d])}var g=H.bounds;if(H.autoBounds)for(var d=0;3>d;++d){if(i[d]d;++d)b=b||Z[0][d]!==g[0][d]||Z[1][d]!==g[1][d],Z[0][d]=g[0][d],Z[1][d]=g[1][d];if(b){for(var x=[0,0,0],o=0;3>o;++o)x[o]=a((g[1][o]-g[0][o])/10);z.autoTicks?z.update({bounds:g,tickSpacing:x}):z.update({bounds:g})}D=D||b,F=F||b;var _=A.drawingBufferWidth,w=A.drawingBufferHeight;q[0]=_,q[1]=w,G[0]=0|Math.max(_/H.pixelRatio,1),G[1]=0|Math.max(w/H.pixelRatio,1),v(B,H.fovy,_/w,H.zNear,H.zFar);for(var o=0;16>o;++o)U[o]=0;U[15]=1;for(var k=0,o=0;3>o;++o)k=Math.max(k,g[1][o]-g[0][o]);for(var o=0;3>o;++o)H.autoScale?U[5*o]=H.aspect[o]/(g[1][o]-g[0][o]):U[5*o]=1/k,H.autoCenter&&(U[12+o]=.5*-U[5*o]*(g[0][o]+g[1][o]));for(var o=0;r>o;++o){var l=O[o];l.axesBounds=g,H.clipToBounds&&(l.clipBounds=g)}if(T.object&&(H.snapToData?R.position=T.dataCoordinate:R.position=T.dataPosition,R.bounds=g),D&&(D=!1,y()),F){H.axesPixels=u(H.axes,V,_,w),H.onrender&&H.onrender(),A.bindFramebuffer(A.FRAMEBUFFER,null),A.viewport(0,0,_,w);var M=H.clearColor;A.clearColor(M[0],M[1],M[2],M[3]),A.clear(A.COLOR_BUFFER_BIT|A.DEPTH_BUFFER_BIT),A.depthMask(!0),A.colorMask(!0,!0,!0,!0),A.enable(A.DEPTH_TEST),A.depthFunc(A.LEQUAL),A.disable(A.BLEND),A.disable(A.CULL_FACE);var S=!1;z.enable&&(S=S||z.isTransparent(),z.draw(V)),R.axes=z,T.object&&R.draw(V),A.disable(A.CULL_FACE);for(var o=0;r>o;++o){var l=O[o];l.axes=z,l.pixelRatio=H.pixelRatio,l.isOpaque&&l.isOpaque()&&l.draw(V),l.isTransparent&&l.isTransparent()&&(S=!0)}if(S){E.shape=q,E.bind(),A.clear(A.DEPTH_BUFFER_BIT),A.colorMask(!1,!1,!1,!1),A.depthMask(!0),A.depthFunc(A.LESS),z.enable&&z.isTransparent()&&z.drawTransparent(V);for(var o=0;r>o;++o){var l=O[o];l.isOpaque&&l.isOpaque()&&l.draw(V)}A.enable(A.BLEND),A.blendEquation(A.FUNC_ADD),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.colorMask(!0,!0,!0,!0),A.depthMask(!1),A.clearColor(0,0,0,0),A.clear(A.COLOR_BUFFER_BIT),z.isTransparent()&&z.drawTransparent(V);for(var o=0;r>o;++o){var l=O[o];l.isTransparent&&l.isTransparent()&&l.drawTransparent(V)}A.bindFramebuffer(A.FRAMEBUFFER,null),A.blendFunc(A.ONE,A.ONE_MINUS_SRC_ALPHA),A.disable(A.DEPTH_TEST),L.bind(),E.color[0].bind(0),L.uniforms.accumBuffer=0,p(A),A.disable(A.BLEND)}F=!1;for(var o=0;r>o;++o)O[o].dirty=!1}}}function x(){_||H.contextLost||(requestAnimationFrame(x),b())}t=t||{};var _=!1,w=(t.pixelRatio||parseFloat(window.devicePixelRatio),t.canvas);if(!w)if(w=document.createElement(\"canvas\"),t.container){var k=t.container;k.appendChild(w)}else document.body.appendChild(w);var A=t.gl;if(A||(A=i(w,t.glOptions||{premultipliedAlpha:!0,antialias:!0})),!A)throw new Error(\"webgl not supported\");var M=t.bounds||[[-10,-10,-10],[10,10,10]],T=new n,E=d(A,[A.drawingBufferWidth,A.drawingBufferHeight],{preferFloat:!0}),L=m(A),S=t.camera||{eye:[2,0,0],center:[0,0,0],up:[0,1,0],zoomMin:.1,zoomMax:100,mode:\"turntable\"},C=t.axes||{},z=c(A,C);z.enable=!C.disable;var P=t.spikes||{},R=f(A,P),O=[],I=[],N=[],j=[],F=!0,D=!0,B=new Array(16),U=new Array(16),V={view:null,projection:B,model:U},D=!0,q=[A.drawingBufferWidth,A.drawingBufferHeight],H={gl:A,contextLost:!1,pixelRatio:t.pixelRatio||parseFloat(window.devicePixelRatio),canvas:w,selection:T,camera:l(w,S),axes:z,axesPixels:null,spikes:R,bounds:M,objects:O,shape:q,aspect:t.aspectRatio||[1,1,1],pickRadius:t.pickRadius||10,zNear:t.zNear||.01,zFar:t.zFar||1e3,fovy:t.fovy||Math.PI/4,clearColor:t.clearColor||[0,0,0,0],autoResize:o(t.autoResize),autoBounds:o(t.autoBounds),autoScale:!!t.autoScale,autoCenter:o(t.autoCenter),clipToBounds:o(t.clipToBounds),snapToData:!!t.snapToData,onselect:t.onselect||null,onrender:t.onrender||null,onclick:t.onclick||null,cameraParams:V,oncontextloss:null,mouseListener:null},G=[A.drawingBufferWidth/H.pixelRatio|0,A.drawingBufferHeight/H.pixelRatio|0];H.autoResize&&e(),window.addEventListener(\"resize\",e),H.update=function(t){_||(t=t||{},F=!0,D=!0)},H.add=function(t){_||(t.axes=z,O.push(t),I.push(-1),F=!0,D=!0,r())},H.remove=function(t){if(!_){var e=O.indexOf(t);0>e||(O.splice(e,1),I.pop(),F=!0,D=!0,r())}},H.dispose=function(){if(!_&&(_=!0,window.removeEventListener(\"resize\",e),w.removeEventListener(\"webglcontextlost\",s),H.mouseListener.enabled=!1,!H.contextLost)){z.dispose(),R.dispose();for(var t=0;ts;++s){var l=j[s].query(e,G[1]-r-1,H.pickRadius);if(l){if(l.distance>T.distance)continue;for(var c=0;i>c;++c){var u=O[c];if(I[c]===s){var f=u.pick(l);f&&(T.buttons=t,T.screen=l.coord,T.distance=l.distance,T.object=u,T.index=f.distance,T.dataPosition=f.position,T.dataCoordinate=f.dataCoordinate,T.data=f,o=!0)}}}}}a&&a!==T.object&&(a.highlight&&a.highlight(null),F=!0),T.object&&(T.object.highlight&&T.object.highlight(T.data),F=!0),o=o||T.object!==a,o&&H.onselect&&H.onselect(T),1&t&&!(1&X)&&H.onclick&&H.onclick(T),X=t}}),w.addEventListener(\"webglcontextlost\",s);var W=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]],Z=[W[0].slice(),W[1].slice()];return x(),H.redraw=function(){_||(F=!0,b())},H}e.exports=s;var l=t(\"3d-view-controls\"),c=t(\"gl-axes3d\"),u=t(\"gl-axes3d/properties\"),f=t(\"gl-spikes3d\"),h=t(\"gl-select-static\"),d=t(\"gl-fbo\"),p=t(\"a-big-triangle\"),g=t(\"mouse-change\"),v=t(\"gl-mat4/perspective\"),m=t(\"./lib/shader\")},{\"./lib/shader\":166,\"3d-view-controls\":167,\"a-big-triangle\":169,\"gl-axes3d\":170,\"gl-axes3d/properties\":180,\"gl-fbo\":123,\"gl-mat4/perspective\":140,\"gl-select-static\":196,\"gl-spikes3d\":182,\"mouse-change\":241}],184:[function(t,e,r){\"use strict\";e.exports={vertex:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec2 offset;\\nattribute vec4 color;\\n\\nuniform mat3 viewTransform;\\nuniform vec2 pixelScale;\\n\\nvarying vec4 fragColor;\\n\\nvec4 computePosition_1_0(vec2 position, vec2 offset, mat3 view, vec2 scale) {\\n vec3 xposition = view * vec3(position, 1.0);\\n return vec4(\\n xposition.xy + scale * offset * xposition.z,\\n 0,\\n xposition.z);\\n}\\n\\n\\n\\n\\nvoid main() {\\n fragColor = color;\\n\\n gl_Position = computePosition_1_0(\\n position,\\n offset,\\n viewTransform,\\n pixelScale);\\n}\\n\",fragment:\"precision lowp float;\\n#define GLSLIFY 1\\nvarying vec4 fragColor;\\nvoid main() {\\n gl_FragColor = vec4(fragColor.rgb * fragColor.a, fragColor.a);\\n}\\n\",pickVertex:\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec2 offset;\\nattribute vec4 id;\\n\\nuniform mat3 viewTransform;\\nuniform vec2 pixelScale;\\nuniform vec4 pickOffset;\\n\\nvarying vec4 fragColor;\\n\\nvec4 computePosition_1_0(vec2 position, vec2 offset, mat3 view, vec2 scale) {\\n vec3 xposition = view * vec3(position, 1.0);\\n return vec4(\\n xposition.xy + scale * offset * xposition.z,\\n 0,\\n xposition.z);\\n}\\n\\n\\n\\n\\nvoid main() {\\n vec4 fragId = id + pickOffset;\\n\\n fragId.y += floor(fragId.x / 256.0);\\n fragId.x -= floor(fragId.x / 256.0) * 256.0;\\n\\n fragId.z += floor(fragId.y / 256.0);\\n fragId.y -= floor(fragId.y / 256.0) * 256.0;\\n\\n fragId.w += floor(fragId.z / 256.0);\\n fragId.z -= floor(fragId.z / 256.0) * 256.0;\\n\\n fragColor = fragId / 255.0;\\n\\n gl_Position = computePosition_1_0(\\n position,\\n offset,\\n viewTransform,\\n pixelScale);\\n}\\n\",pickFragment:\"precision lowp float;\\n#define GLSLIFY 1\\nvarying vec4 fragColor;\\nvoid main() {\\n gl_FragColor = fragColor;\\n}\\n\"}},{}],185:[function(t,e,r){\"use strict\";function n(t){if(t in h)return h[t];var e=u(t,{polygons:!0,font:\"sans-serif\",textAlign:\"left\",textBaseline:\"alphabetic\"}),r=[],n=[];e.forEach(function(t){t.forEach(function(t){for(var e=0;eo;++o)i[o]=Math.min(i[o],r[a+o]),i[2+o]=Math.max(i[2+o],r[a+o]);return h[t]={coords:r,normals:n,bounds:i}}function i(t,e,r,n,i,a,o){this.plot=t,this.shader=e,this.pickShader=r,this.positionBuffer=n,this.offsetBuffer=i,this.colorBuffer=a,this.idBuffer=o,this.bounds=[1/0,1/0,-(1/0),-(1/0)],this.numPoints=0,this.numVertices=0,this.pickOffset=0,this.points=null}function a(t,e){var r=t.gl,n=o(r,f.vertex,f.fragment),a=o(r,f.pickVertex,f.pickFragment),l=s(r),c=s(r),u=s(r),h=s(r),d=new i(t,n,a,l,c,u,h);return d.update(e),t.addObject(d),d}e.exports=a;var o=t(\"gl-shader\"),s=t(\"gl-buffer\"),l=t(\"text-cache\"),c=t(\"typedarray-pool\"),u=t(\"vectorize-text\"),f=t(\"./lib/shaders\"),h={},d=i.prototype;!function(){function t(){var t=this.plot,n=this.bounds,i=t.viewBox,a=t.dataBox,o=t.pixelRatio,s=n[2]-n[0],l=n[3]-n[1],c=a[2]-a[0],u=a[3]-a[1];e[0]=2*s/c,e[4]=2*l/u,e[6]=2*(n[0]-a[0])/c-1,e[7]=2*(n[1]-a[1])/u-1;var f=i[2]-i[0],h=i[3]-i[1];r[0]=2*o/f,r[1]=2*o/h}var e=[1,0,0,0,1,0,0,0,1],r=[1,1];d.draw=function(){var n=this.plot,i=this.shader,a=this.numVertices;if(a){var o=n.gl;t.call(this),i.bind(),i.uniforms.pixelScale=r,i.uniforms.viewTransform=e,this.positionBuffer.bind(),i.attributes.position.pointer(),this.offsetBuffer.bind(),i.attributes.offset.pointer(),this.colorBuffer.bind(),i.attributes.color.pointer(o.UNSIGNED_BYTE,!0),o.drawArrays(o.TRIANGLES,0,a)}};var n=[0,0,0,0];d.drawPick=function(i){var a=this.plot,o=this.pickShader,s=this.numVertices,l=a.gl;if(this.pickOffset=i,!s)return i;for(var c=0;4>c;++c)n[c]=i>>8*c&255;return t.call(this),o.bind(),o.uniforms.pixelScale=r,o.uniforms.viewTransform=e,o.uniforms.pickOffset=n,this.positionBuffer.bind(),o.attributes.position.pointer(),this.offsetBuffer.bind(),o.attributes.offset.pointer(),this.idBuffer.bind(),o.attributes.id.pointer(l.UNSIGNED_BYTE,!1),l.drawArrays(l.TRIANGLES,0,s),i+this.numPoints}}(),d.pick=function(t,e,r){var n=this.pickOffset,i=this.numPoints;if(n>r||r>=n+i)return null;var a=r-n,o=this.points;return{object:this,pointId:a,dataCoord:[o[2*a],o[2*a+1]]}},d.update=function(t){t=t||{};var e=t.positions||[],r=t.colors||[],i=t.glyphs||[],a=t.sizes||[],o=t.borderWidths||[],s=t.borderColors||[];this.points=e;for(var u=this.bounds=[1/0,1/0,-(1/0),-(1/0)],f=0,h=0;h>1;for(var d=0;2>d;++d)u[d]=Math.min(u[d],e[2*h+d]),u[2+d]=Math.max(u[2+d],e[2*h+d])}u[0]===u[2]&&(u[2]+=1),u[3]===u[1]&&(u[3]+=1);for(var p=1/(u[2]-u[0]),g=1/(u[3]-u[1]),v=u[0],m=u[1],y=c.mallocFloat32(2*f),b=c.mallocFloat32(2*f),x=c.mallocUint8(4*f),_=c.mallocUint32(f),w=0,h=0;h 1.0) {\\n discard;\\n }\\n vec4 baseColor = mix(borderColor, color, smoothStep(radius, centerFraction));\\n float alpha = 1.0 - pow(1.0 - baseColor.a, fragWeight);\\n gl_FragColor = vec4(baseColor.rgb * alpha, alpha);\\n}\\n\",r.pickVertex=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 position;\\nattribute vec4 pickId;\\n\\nuniform mat3 matrix;\\nuniform float pointSize;\\nuniform vec4 pickOffset;\\n\\nvarying vec4 fragId;\\n\\nvoid main() {\\n vec3 hgPosition = matrix * vec3(position, 1);\\n gl_Position = vec4(hgPosition.xy, 0, hgPosition.z);\\n gl_PointSize = pointSize;\\n\\n vec4 id = pickId + pickOffset;\\n id.y += floor(id.x / 256.0);\\n id.x -= floor(id.x / 256.0) * 256.0;\\n\\n id.z += floor(id.y / 256.0);\\n id.y -= floor(id.y / 256.0) * 256.0;\\n\\n id.w += floor(id.z / 256.0);\\n id.z -= floor(id.z / 256.0) * 256.0;\\n\\n fragId = id;\\n}\\n\",r.pickFragment=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nvarying vec4 fragId;\\n\\nvoid main() {\\n float radius = length(2.0*gl_PointCoord.xy-1.0);\\n if(radius > 1.0) {\\n discard;\\n }\\n gl_FragColor = fragId / 255.0;\\n}\\n\"},{}],187:[function(t,e,r){arguments[4][62][0].apply(r,arguments)},{dup:62}],188:[function(t,e,r){\"use strict\";function n(t,e,r,n,a){4*h>=a?i(0,a-1,t,e,r,n):f(0,a-1,t,e,r,n)}function i(t,e,r,n,i,a){for(var o=t+1;e>=o;++o){for(var s=r[o],l=n[2*o],c=n[2*o+1],u=i[o],f=a[o],h=o;h>t;){var d=r[h-1],p=n[2*(h-1)];if((d-s||l-p)>=0)break;r[h]=d,n[2*h]=p,n[2*h+1]=n[2*h-1],i[h]=i[h-1],a[h]=a[h-1],h-=1}r[h]=s,n[2*h]=l,n[2*h+1]=c,i[h]=u,a[h]=f}}function a(t,e,r,n,i,a){var o=r[t],s=n[2*t],l=n[2*t+1],c=i[t],u=a[t];r[t]=r[e],n[2*t]=n[2*e],n[2*t+1]=n[2*e+1],i[t]=i[e],a[t]=a[e],r[e]=o,n[2*e]=s,n[2*e+1]=l,i[e]=c,a[e]=u}function o(t,e,r,n,i,a){r[t]=r[e],n[2*t]=n[2*e],n[2*t+1]=n[2*e+1],i[t]=i[e],a[t]=a[e]}function s(t,e,r,n,i,a,o){var s=n[t],l=i[2*t],c=i[2*t+1],u=a[t],f=o[t];n[t]=n[e],i[2*t]=i[2*e],i[2*t+1]=i[2*e+1],a[t]=a[e],o[t]=o[e],n[e]=n[r],i[2*e]=i[2*r],i[2*e+1]=i[2*r+1],a[e]=a[r],o[e]=o[r],n[r]=s,i[2*r]=l,i[2*r+1]=c,a[r]=u,o[r]=f}function l(t,e,r,n,i,a,o,s,l,c,u){s[t]=s[e],l[2*t]=l[2*e],l[2*t+1]=l[2*e+1],c[t]=c[e],u[t]=u[e],s[e]=r,l[2*e]=n,l[2*e+1]=i,c[e]=a,u[e]=o}function c(t,e,r,n,i){return(r[t]-r[e]||n[2*e]-n[2*t]||i[t]-i[e])<0}function u(t,e,r,n,i,a,o,s){return(e-a[t]||o[2*t]-r||i-s[t])<0}function f(t,e,r,n,d,p){var g=(e-t+1)/6|0,v=t+g,m=e-g,y=t+e>>1,b=y-g,x=y+g,_=v,w=b,k=y,A=x,M=m,T=t+1,E=e-1,L=0;c(_,w,r,n,d,p)&&(L=_,_=w,w=L),c(A,M,r,n,d,p)&&(L=A,A=M,M=L),c(_,k,r,n,d,p)&&(L=_,_=k,k=L),c(w,k,r,n,d,p)&&(L=w,w=k,k=L),c(_,A,r,n,d,p)&&(L=_,_=A,A=L),c(k,A,r,n,d,p)&&(L=k,k=A,A=L),c(w,M,r,n,d,p)&&(L=w,w=M,M=L),c(w,k,r,n,d,p)&&(L=w,w=k,k=L),c(A,M,r,n,d,p)&&(L=A,A=M,M=L);var S=r[w],C=n[2*w],z=n[2*w+1],P=d[w],R=p[w],O=r[A],I=n[2*A],N=n[2*A+1],j=d[A],F=p[A],D=_,B=k,U=M,V=v,q=y,H=m,G=r[D],Y=r[B],X=r[U];r[V]=G,r[q]=Y,r[H]=X;for(var W=0;2>W;++W){var Z=n[2*D+W],K=n[2*B+W],$=n[2*U+W];n[2*V+W]=Z,n[2*q+W]=K,n[2*H+W]=$}var Q=d[D],J=d[B],tt=d[U];d[V]=Q,d[q]=J,d[H]=tt;var et=p[D],rt=p[B],nt=p[U];p[V]=et,p[q]=rt,p[H]=nt,o(b,t,r,n,d,p),o(x,e,r,n,d,p);for(var it=T;E>=it;++it)if(u(it,S,C,z,P,r,n,d))it!==T&&a(it,T,r,n,d,p),++T;else if(!u(it,O,I,N,j,r,n,d))for(;;){if(u(E,O,I,N,j,r,n,d)){u(E,S,C,z,P,r,n,d)?(s(it,T,E,r,n,d,p),++T,--E):(a(it,E,r,n,d,p),--E);break}if(--E=T-2-t?i(t,T-2,r,n,d,p):f(t,T-2,r,n,d,p),h>=e-(E+2)?i(E+2,e,r,n,d,p):f(E+2,e,r,n,d,p),h>=E-T?i(T,E,r,n,d,p):f(T,E,r,n,d,p)}e.exports=n;var h=32},{}],189:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a,o,s){for(var l=r,c=r;n>c;++c){var u=t[2*c],f=t[2*c+1],h=e[c];u>=i&&o>=u&&f>=a&&s>=f&&(c===l?l+=1:(t[2*c]=t[2*l],t[2*c+1]=t[2*l+1],e[c]=e[l],t[2*l]=u,t[2*l+1]=f,e[l]=h,l+=1))}return l}function i(t,e,r){this.pixelSize=t,this.offset=e,this.count=r}function a(t,e,r,a){function l(i,a,o,s,c,u){var f=.5*o,h=s+1,d=c-s;r[_]=d,x[_++]=u;for(var p=0;2>p;++p)for(var g=0;2>g;++g){var v=i+p*f,m=a+g*f,y=n(t,e,h,c,v,m,v+f,m+f);if(y!==h){if(y-h>=Math.max(.9*d,32)){var b=c+s>>>1;l(v,m,f,h,b,u+1),h=b}l(v,m,f,h,y,u+1),h=y}}}var c=t.length>>>1;if(1>c)return[];for(var u=1/0,f=1/0,h=-(1/0),d=-(1/0),p=0;c>p;++p){var g=t[2*p],v=t[2*p+1];u=Math.min(u,g),h=Math.max(h,g),f=Math.min(f,v),d=Math.max(d,v),e[p]=p}u===h&&(h+=1+Math.abs(h)),f===d&&(d+=1+Math.abs(h));var m=1/(h-u),y=1/(d-f),b=Math.max(h-u,d-f);a=a||[0,0,0,0],a[0]=u,a[1]=f,a[2]=h,a[3]=d;var x=o.mallocInt32(c),_=0;l(u,f,b,0,c,0),s(x,t,e,r,c);for(var w=[],k=0,A=c,_=c-1;_>=0;--_){t[2*_]=(t[2*_]-u)*m,t[2*_+1]=(t[2*_+1]-f)*y;var M=x[_];M!==k&&(w.push(new i(b*Math.pow(.5,M),_+1,A-(_+1))),A=_+1,k=M)}return w.push(new i(b*Math.pow(.5,M+1),0,A)),o.free(x),w}var o=t(\"typedarray-pool\"),s=t(\"./lib/sort\");e.exports=a},{\"./lib/sort\":188,\"typedarray-pool\":278}],190:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){this.plot=t,this.offsetBuffer=e,this.pickBuffer=r,this.weightBuffer=n,this.shader=i,this.pickShader=a,this.scales=[],this.size=12,this.borderSize=1,this.pointCount=0,this.color=[1,0,0,1],this.borderColor=[0,0,0,1],this.bounds=[1/0,1/0,-(1/0),-(1/0)],this.pickOffset=0,this.points=null,this.xCoords=null}function i(t,e){var r=t.gl,i=o(r),s=o(r),l=o(r),c=a(r,u.pointVertex,u.pointFragment),f=a(r,u.pickVertex,u.pickFragment),h=new n(t,i,s,l,c,f);return h.update(e),t.addObject(h),h}var a=t(\"gl-shader\"),o=t(\"gl-buffer\"),s=t(\"binary-search-bounds\"),l=t(\"snap-points-2d\"),c=t(\"typedarray-pool\"),u=t(\"./lib/shader\");e.exports=i;var f=n.prototype;f.dispose=function(){this.shader.dispose(),this.pickShader.dispose(),this.offsetBuffer.dispose(),this.pickBuffer.dispose(),this.xCoords&&c.free(this.xCoords),this.plot.removeObject(this)},f.update=function(t){function e(e,r){return e in t?t[e]:r}t=t||{},this.size=e(\"size\",12),this.color=e(\"color\",[1,0,0,1]).slice(),this.borderSize=e(\"borderSize\",1),this.borderColor=e(\"borderColor\",[0,0,0,1]).slice(),this.xCoords&&c.free(this.xCoords);var r=t.positions,n=c.mallocFloat32(r.length),i=c.mallocInt32(r.length>>>1);n.set(r);var a=c.mallocFloat32(r.length);this.points=r,this.scales=l(n,i,a,this.bounds),this.offsetBuffer.update(n),this.pickBuffer.update(i),this.weightBuffer.update(a);for(var o=c.mallocFloat32(r.length>>>1),s=0,u=0;s>>1,this.pickOffset=0},f.drawPick=function(){var t=[1,0,0,0,1,0,0,0,1],e=[0,0,0,0];return function(r){var n=this.plot,i=this.pickShader,a=this.scales,o=this.offsetBuffer,l=this.pickBuffer,c=this.bounds,u=this.size,f=this.borderSize,h=n.gl,d=n.pickPixelRatio,p=n.viewBox,g=n.dataBox;if(0===this.pointCount)return r;var v=c[2]-c[0],m=c[3]-c[1],y=g[2]-g[0],b=g[3]-g[1],x=(p[2]-p[0])*d/n.pixelRatio,_=(p[3]-p[1])*d/n.pixelRatio,w=Math.min(y/x,b/_);t[0]=2*v/y,t[4]=2*m/b,t[6]=2*(c[0]-g[0])/y-1,t[7]=2*(c[1]-g[1])/b-1,this.pickOffset=r,e[0]=255&r,e[1]=r>>8&255,e[2]=r>>16&255,e[3]=r>>24&255,i.bind(),i.uniforms.matrix=t,i.uniforms.color=this.color,i.uniforms.borderColor=this.borderColor,i.uniforms.pointSize=d*(u+f),i.uniforms.pickOffset=e,0===this.borderSize?i.uniforms.centerFraction=2:i.uniforms.centerFraction=u/(u+f+1.25),o.bind(),i.attributes.position.pointer(),l.bind(),i.attributes.pickId.pointer(h.UNSIGNED_BYTE);for(var k=this.xCoords,A=(g[0]-c[0]-w*u*d)/v,M=(g[2]-c[0]+w*u*d)/v,T=a.length-1;T>=0;--T){var E=a[T];if(!(E.pixelSize1)){var L=E.offset,S=E.count+L,C=s.ge(k,A,L,S-1),z=s.lt(k,M,C,S-1)+1;z>C&&h.drawArrays(h.POINTS,C,z-C)}}return r+this.pointCount}}(),f.draw=function(){var t=[1,0,0,0,1,0,0,0,1];return function(){var e=this.plot,r=this.shader,n=this.scales,i=this.offsetBuffer,a=this.bounds,o=this.size,l=this.borderSize,c=e.gl,u=e.pixelRatio,f=e.viewBox,h=e.dataBox;if(0!==this.pointCount){var d=a[2]-a[0],p=a[3]-a[1],g=h[2]-h[0],v=h[3]-h[1],m=f[2]-f[0],y=f[3]-f[1],b=Math.min(g/m,v/y);t[0]=2*d/g,t[4]=2*p/v,t[6]=2*(a[0]-h[0])/g-1,t[7]=2*(a[1]-h[1])/v-1,r.bind(),r.uniforms.matrix=t,r.uniforms.color=this.color,r.uniforms.borderColor=this.borderColor,r.uniforms.pointSize=u*(o+l),r.uniforms.useWeight=1,0===this.borderSize?r.uniforms.centerFraction=2:r.uniforms.centerFraction=o/(o+l+1.25),i.bind(),r.attributes.position.pointer(),this.weightBuffer.bind(),r.attributes.weight.pointer();for(var x=this.xCoords,_=(h[0]-a[0]-b*o*u)/d,w=(h[2]-a[0]+b*o*u)/d,k=!0,A=n.length-1;A>=0;--A){var M=n[A];if(!(M.pixelSize1)){var T=M.offset,E=M.count+T,L=s.ge(x,_,T,E-1),S=s.lt(x,w,L,E-1)+1;S>L&&c.drawArrays(c.POINTS,L,S-L),k&&(k=!1,r.uniforms.useWeight=0)}}}}}(),f.pick=function(t,e,r){var n=this.pickOffset,i=this.pointCount;if(n>r||r>=n+i)return null;var a=r-n,o=this.points;return{object:this,pointId:a,dataCoord:[o[2*a],o[2*a+1]]}}},{\"./lib/shader\":186,\"binary-search-bounds\":187,\"gl-buffer\":118,\"gl-shader\":197,\"snap-points-2d\":189,\"typedarray-pool\":278}],191:[function(t,e,r){\"use strict\";function n(t,e){var r=a[e];if(r||(r=a[e]={}),t in r)return r[t];for(var n=i(t,{textAlign:\"center\",textBaseline:\"middle\",lineHeight:1,font:e}),o=i(t,{triangles:!0,textAlign:\"center\",textBaseline:\"middle\",lineHeight:1,font:e}),s=[[1/0,1/0],[-(1/0),-(1/0)]],l=0;lu;++u)s[0][u]=Math.min(s[0][u],c[u]),s[1][u]=Math.max(s[1][u],c[u]);return r[t]=[o,n,s]}var i=t(\"vectorize-text\");e.exports=n;var a={}},{\"vectorize-text\":280}],192:[function(t,e,r){function n(t,e){var r=i(t,e),n=r.attributes;return n.position.location=0,n.color.location=1,n.glyph.location=2,n.id.location=3,r}var i=t(\"gl-shader\"),a=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\n\\nuniform vec4 highlightId;\\nuniform float highlightScale;\\nuniform mat4 model, view, projection;\\nuniform vec3 clipBounds[2];\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n if(any(lessThan(position, clipBounds[0])) || \\n any(greaterThan(position, clipBounds[1])) ) {\\n gl_Position = vec4(0,0,0,0);\\n } else {\\n float scale = 1.0;\\n if(distance(highlightId, id) < 0.0001) {\\n scale = highlightScale;\\n }\\n\\n vec4 worldPosition = model * vec4(position, 1);\\n vec4 viewPosition = view * worldPosition;\\n viewPosition = viewPosition / viewPosition.w;\\n vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));\\n \\n gl_Position = clipPosition;\\n interpColor = color;\\n pickId = id;\\n dataCoordinate = position;\\n }\\n}\",o=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform mat4 model, view, projection;\\nuniform vec2 screenSize;\\nuniform vec3 clipBounds[2];\\nuniform float highlightScale, pixelRatio;\\nuniform vec4 highlightId;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n if(any(lessThan(position, clipBounds[0])) || any(greaterThan(position, clipBounds[1]))) {\\n gl_Position = vec4(0,0,0,0);\\n } else {\\n float scale = pixelRatio;\\n if(distance(highlightId.bgr, id.bgr) < 0.001) {\\n scale *= highlightScale;\\n }\\n\\n vec4 worldPosition = model * vec4(position, 1.0);\\n vec4 viewPosition = view * worldPosition;\\n vec4 clipPosition = projection * viewPosition;\\n clipPosition /= clipPosition.w;\\n \\n gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);\\n interpColor = color;\\n pickId = id;\\n dataCoordinate = position;\\n }\\n}\",s=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec3 position;\\nattribute vec4 color;\\nattribute vec2 glyph;\\nattribute vec4 id;\\n\\nuniform float highlightScale;\\nuniform vec4 highlightId;\\nuniform vec3 axes[2];\\nuniform mat4 model, view, projection;\\nuniform vec2 screenSize;\\nuniform vec3 clipBounds[2];\\nuniform float scale, pixelRatio;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n if(any(lessThan(position, clipBounds[0])) ||\\n any(greaterThan(position, clipBounds[1])) ) {\\n gl_Position = vec4(0,0,0,0);\\n } else {\\n float lscale = pixelRatio * scale;\\n if(distance(highlightId, id) < 0.0001) {\\n lscale *= highlightScale;\\n }\\n\\n vec4 clipCenter = projection * view * model * vec4(position, 1);\\n vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;\\n vec4 clipPosition = projection * view * model * vec4(dataPosition, 1);\\n\\n gl_Position = clipPosition;\\n interpColor = color;\\n pickId = id;\\n dataCoordinate = dataPosition;\\n }\\n}\\n\",l=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 fragClipBounds[2];\\nuniform float opacity;\\n\\nvarying vec4 interpColor;\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n if(any(lessThan(dataCoordinate, fragClipBounds[0])) ||\\n any(greaterThan(dataCoordinate, fragClipBounds[1])) ) {\\n discard;\\n } else {\\n gl_FragColor = interpColor * opacity;\\n }\\n}\\n\",c=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec3 fragClipBounds[2];\\nuniform float pickGroup;\\n\\nvarying vec4 pickId;\\nvarying vec3 dataCoordinate;\\n\\nvoid main() {\\n if(any(lessThan(dataCoordinate, fragClipBounds[0])) || \\n any(greaterThan(dataCoordinate, fragClipBounds[1])) ) {\\n discard;\\n } else {\\n gl_FragColor = vec4(pickGroup, pickId.bgr);\\n }\\n}\",u=[{name:\"position\",type:\"vec3\"},{name:\"color\",type:\"vec4\"},{name:\"glyph\",type:\"vec2\"},{name:\"id\",type:\"vec4\"}],f={vertex:a,fragment:l,attributes:u},h={vertex:o,fragment:l,attributes:u},d={vertex:s,fragment:l,attributes:u},p={vertex:a,fragment:c,attributes:u},g={vertex:o,fragment:c,attributes:u},v={vertex:s,fragment:c,attributes:u};r.createPerspective=function(t){return n(t,f)},r.createOrtho=function(t){return n(t,h)},r.createProject=function(t){return n(t,d)},r.createPickPerspective=function(t){return n(t,p)},r.createPickOrtho=function(t){return n(t,g)},r.createPickProject=function(t){return n(t,v)}},{\"gl-shader\":197}],193:[function(t,e,r){\"use strict\";function n(t,e){var r=t[0],n=t[1],i=t[2],a=t[3];return t[0]=e[0]*r+e[4]*n+e[8]*i+e[12]*a,t[1]=e[1]*r+e[5]*n+e[9]*i+e[13]*a,t[2]=e[2]*r+e[6]*n+e[10]*i+e[14]*a,t[3]=e[3]*r+e[7]*n+e[11]*i+e[15]*a,\n", + "t}function i(t,e,r,i){return n(i,i,r),n(i,i,e),n(i,i,t)}function a(t,e){this.index=t,this.dataCoordinate=this.position=e}function o(t,e,r,n,i,o,s,l,c,u,f,h){this.gl=t,this.pixelRatio=1,this.shader=e,this.orthoShader=r,this.projectShader=n,this.pointBuffer=i,this.colorBuffer=o,this.glyphBuffer=s,this.idBuffer=l,this.vao=c,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.lineWidth=0,this.projectScale=[2/3,2/3,2/3],this.projectOpacity=[1,1,1],this.pickId=0,this.pickPerspectiveShader=u,this.pickOrthoShader=f,this.pickProjectShader=h,this.points=[],this._selectResult=new a(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-(1/0),-(1/0),-(1/0)],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-(1/0),-(1/0),-(1/0)],[1/0,1/0,1/0]],this.dirty=!0}function s(t){return t[0]=t[1]=t[2]=0,t}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=1,t}function c(t,e,r,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[r]=n,t}function u(t){for(var e=S,r=0;2>r;++r)for(var n=0;3>n;++n)e[r][n]=Math.max(Math.min(t[r][n],1e8),-1e8);return e}function f(t,e,r,n,a){var o,f=e.axesProject,h=e.gl,d=t.uniforms,p=r.model||x,g=r.view||x,v=r.projection||x,y=e.axesBounds,b=u(e.clipBounds);o=e.axes?e.axes.lastCubeProps.axis:[1,1,1],w[0]=2/h.drawingBufferWidth,w[1]=2/h.drawingBufferHeight,t.bind(),d.view=g,d.projection=v,d.screenSize=w,d.highlightId=e.highlightId,d.highlightScale=e.highlightScale,d.clipBounds=b,d.pickGroup=e.pickId/255,d.pixelRatio=e.pixelRatio;for(var _=0;3>_;++_)if(f[_]&&e.projectOpacity[_]<1===n){d.scale=e.projectScale[_],d.opacity=e.projectOpacity[_];for(var S=E,C=0;16>C;++C)S[C]=0;for(var C=0;4>C;++C)S[5*C]=1;S[5*_]=0,o[_]<0?S[12+_]=y[0][_]:S[12+_]=y[1][_],m(S,p,S),d.model=S;var z=(_+1)%3,P=(_+2)%3,R=s(k),O=s(A);R[z]=1,O[P]=1;var I=i(v,g,p,l(M,R)),N=i(v,g,p,l(T,O));if(Math.abs(I[1])>Math.abs(N[1])){var j=I;I=N,N=j,j=R,R=O,O=j;var F=z;z=P,P=F}I[0]<0&&(R[z]=-1),N[1]>0&&(O[P]=-1);for(var D=0,B=0,C=0;4>C;++C)D+=Math.pow(p[4*z+C],2),B+=Math.pow(p[4*P+C],2);R[z]/=Math.sqrt(D),O[P]/=Math.sqrt(B),d.axes[0]=R,d.axes[1]=O,d.fragClipBounds[0]=c(L,b[0],_,-1e8),d.fragClipBounds[1]=c(L,b[1],_,1e8),e.vao.draw(h.TRIANGLES,e.vertexCount),e.lineWidth>0&&(h.lineWidth(e.lineWidth),e.vao.draw(h.LINES,e.lineVertexCount,e.vertexCount))}}function h(t,e,r,n,i,a){var o=r.gl;if(r.vao.bind(),i===r.opacity<1||a){t.bind();var s=t.uniforms;s.model=n.model||x,s.view=n.view||x,s.projection=n.projection||x,w[0]=2/o.drawingBufferWidth,w[1]=2/o.drawingBufferHeight,s.screenSize=w,s.highlightId=r.highlightId,s.highlightScale=r.highlightScale,s.fragClipBounds=P,s.clipBounds=r.axes.bounds,s.opacity=r.opacity,s.pickGroup=r.pickId/255,s.pixelRatio=r.pixelRatio,r.vao.draw(o.TRIANGLES,r.vertexCount),r.lineWidth>0&&(o.lineWidth(r.lineWidth),r.vao.draw(o.LINES,r.lineVertexCount,r.vertexCount))}f(e,r,n,i,a),r.vao.unbind()}function d(t){var e=t.gl,r=y.createPerspective(e),n=y.createOrtho(e),i=y.createProject(e),a=y.createPickPerspective(e),s=y.createPickOrtho(e),l=y.createPickProject(e),c=p(e),u=p(e),f=p(e),h=p(e),d=g(e,[{buffer:c,size:3,type:e.FLOAT},{buffer:u,size:4,type:e.FLOAT},{buffer:f,size:2,type:e.FLOAT},{buffer:h,size:4,type:e.UNSIGNED_BYTE,normalized:!0}]),v=new o(e,r,n,i,c,u,f,h,d,a,s,l);return v.update(t),v}var p=t(\"gl-buffer\"),g=t(\"gl-vao\"),v=t(\"typedarray-pool\"),m=t(\"gl-mat4/multiply\"),y=t(\"./lib/shaders\"),b=t(\"./lib/glyphs\"),x=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];e.exports=d;var _=o.prototype;_.pickSlots=1,_.setPickBase=function(t){this.pickId=t},_.isTransparent=function(){if(this.opacity<1)return!0;for(var t=0;3>t;++t)if(this.axesProject[t]&&this.projectOpacity[t]<1)return!0;return!1},_.isOpaque=function(){if(this.opacity>=1)return!0;for(var t=0;3>t;++t)if(this.axesProject[t]&&this.projectOpacity[t]>=1)return!0;return!1};var w=[0,0],k=[0,0,0],A=[0,0,0],M=[0,0,0,1],T=[0,0,0,1],E=x.slice(),L=[0,0,0],S=[[0,0,0],[0,0,0]],C=[-1e8,-1e8,-1e8],z=[1e8,1e8,1e8],P=[C,z];_.draw=function(t){var e=this.useOrtho?this.orthoShader:this.shader;h(e,this.projectShader,this,t,!1,!1)},_.drawTransparent=function(t){var e=this.useOrtho?this.orthoShader:this.shader;h(e,this.projectShader,this,t,!0,!1)},_.drawPick=function(t){var e=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;h(e,this.pickProjectShader,this,t,!1,!0)},_.pick=function(t){if(!t)return null;if(t.id!==this.pickId)return null;var e=t.value[2]+(t.value[1]<<8)+(t.value[0]<<16);if(e>=this.pointCount||0>e)return null;var r=this.points[e],n=this._selectResult;n.index=e;for(var i=0;3>i;++i)n.position[i]=n.dataCoordinate[i]=r[i];return n},_.highlight=function(t){if(t){var e=t.index,r=255&e,n=e>>8&255,i=e>>16&255;this.highlightId=[r/255,n/255,i/255,0]}else this.highlightId=[1,1,1,1]},_.update=function(t){if(t=t||{},\"perspective\"in t&&(this.useOrtho=!t.perspective),\"orthographic\"in t&&(this.useOrtho=!!t.orthographic),\"lineWidth\"in t&&(this.lineWidth=t.lineWidth),\"project\"in t)if(Array.isArray(t.project))this.axesProject=t.project;else{var e=!!t.project;this.axesProject=[e,e,e]}if(\"projectScale\"in t)if(Array.isArray(t.projectScale))this.projectScale=t.projectScale.slice();else{var r=+t.projectScale;this.projectScale=[r,r,r]}if(\"projectOpacity\"in t)if(Array.isArray(t.projectOpacity))this.projectOpacity=t.projectOpacity.slice();else{var r=+t.projectOpacity;this.projectOpacity=[r,r,r]}\"opacity\"in t&&(this.opacity=t.opacity),this.dirty=!0;var n=t.position;if(n){var i=t.font||\"normal\",a=t.alignment||[0,0],o=[1/0,1/0,1/0],s=[-(1/0),-(1/0),-(1/0)],l=t.glyph,c=t.color,u=t.size,f=t.angle,h=t.lineColor,d=0,p=0,g=0,m=n.length;t:for(var y=0;m>y;++y){for(var x=n[y],_=0;3>_;++_)if(isNaN(x[_])||!isFinite(x[_]))continue t;var w;w=Array.isArray(l)?b(l[y],i):l?b(l,i):b(\"\\u25cf\",i);var k=w[0],A=w[1],M=w[2];p+=3*k.cells.length,g+=2*A.edges.length}var T=p+g,E=v.mallocFloat(3*T),L=v.mallocFloat(4*T),S=v.mallocFloat(2*T),C=v.mallocUint32(T),z=[0,a[1]],P=0,R=p,O=[0,0,0,1],I=[0,0,0,1],N=Array.isArray(c)&&Array.isArray(c[0]),j=Array.isArray(h)&&Array.isArray(h[0]);t:for(var y=0;m>y;++y){for(var x=n[y],_=0;3>_;++_){if(isNaN(x[_])||!isFinite(x[_])){d+=1;continue t}s[_]=Math.max(s[_],x[_]),o[_]=Math.min(o[_],x[_])}var w;w=Array.isArray(l)?b(l[y],i):l?b(l,i):b(\"\\u25cf\",i);var k=w[0],A=w[1],M=w[2];if(Array.isArray(c)){var F;if(F=N?c[y]:c,3===F.length){for(var _=0;3>_;++_)O[_]=F[_];O[3]=1}else if(4===F.length)for(var _=0;4>_;++_)O[_]=F[_]}else O[0]=O[1]=O[2]=0,O[3]=1;if(Array.isArray(h)){var F;if(F=j?h[y]:h,3===F.length){for(var _=0;3>_;++_)I[_]=F[_];I[_]=1}else if(4===F.length)for(var _=0;4>_;++_)I[_]=F[_]}else I[0]=I[1]=I[2]=0,I[3]=1;var D=.5;Array.isArray(u)?D=+u[y]:u?D=+u:this.useOrtho&&(D=12);var B=0;Array.isArray(f)?B=+f[y]:f&&(B=+f);for(var U=Math.cos(B),V=Math.sin(B),x=n[y],_=0;3>_;++_)s[_]=Math.max(s[_],x[_]),o[_]=Math.min(o[_],x[_]);a[0]<0?z[0]=a[0]*(1+M[1][0]):a[0]>0&&(z[0]=-a[0]*(1+M[0][0]));for(var q=k.cells,H=k.positions,_=0;_Y;++Y){for(var X=0;3>X;++X)E[3*P+X]=x[X];for(var X=0;4>X;++X)L[4*P+X]=O[X];C[P]=d;var W=H[G[Y]];S[2*P]=D*(U*W[0]-V*W[1]+z[0]),S[2*P+1]=D*(V*W[0]+U*W[1]+z[1]),P+=1}for(var q=A.edges,H=A.positions,_=0;_Y;++Y){for(var X=0;3>X;++X)E[3*R+X]=x[X];for(var X=0;4>X;++X)L[4*R+X]=I[X];C[R]=d;var W=H[G[Y]];S[2*R]=D*(U*W[0]-V*W[1]+z[0]),S[2*R+1]=D*(V*W[0]+U*W[1]+z[1]),R+=1}d+=1}this.vertexCount=p,this.lineVertexCount=g,this.pointBuffer.update(E),this.colorBuffer.update(L),this.glyphBuffer.update(S),this.idBuffer.update(new Uint32Array(C)),v.free(E),v.free(L),v.free(S),v.free(C),this.bounds=[o,s],this.points=n,this.pointCount=n.length}},_.dispose=function(){this.shader.dispose(),this.orthoShader.dispose(),this.pickPerspectiveShader.dispose(),this.pickOrthoShader.dispose(),this.vao.dispose(),this.pointBuffer.dispose(),this.colorBuffer.dispose(),this.glyphBuffer.dispose(),this.idBuffer.dispose()}},{\"./lib/glyphs\":191,\"./lib/shaders\":192,\"gl-buffer\":118,\"gl-mat4/multiply\":139,\"gl-vao\":226,\"typedarray-pool\":278}],194:[function(t,e,r){\"use strict\";r.boxVertex=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec2 vertex;\\n\\nuniform vec2 cornerA, cornerB;\\n\\nvoid main() {\\n gl_Position = vec4(mix(cornerA, cornerB, vertex), 0, 1);\\n}\\n\",r.boxFragment=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec4 color;\\n\\nvoid main() {\\n gl_FragColor = color;\\n}\\n\"},{}],195:[function(t,e,r){\"use strict\";function n(t,e,r){this.plot=t,this.boxBuffer=e,this.boxShader=r,this.enabled=!0,this.selectBox=[1/0,1/0,-(1/0),-(1/0)],this.borderColor=[0,0,0,1],this.innerFill=!1,this.innerColor=[0,0,0,.25],this.outerFill=!0,this.outerColor=[0,0,0,.5],this.borderWidth=10}function i(t,e){var r=t.gl,i=o(r,[0,0,0,1,1,0,1,1]),l=a(r,s.boxVertex,s.boxFragment),c=new n(t,i,l);return c.update(e),t.addOverlay(c),c}var a=t(\"gl-shader\"),o=t(\"gl-buffer\"),s=t(\"./lib/shaders\");e.exports=i;var l=n.prototype;l.draw=function(){if(this.enabled){var t=this.plot,e=this.selectBox,r=this.borderWidth,n=(this.innerFill,this.innerColor),i=(this.outerFill,this.outerColor),a=this.borderColor,o=t.box,s=t.screenBox,l=t.dataBox,c=t.viewBox,u=t.pixelRatio,f=(e[0]-l[0])*(c[2]-c[0])/(l[2]-l[0])+c[0],h=(e[1]-l[1])*(c[3]-c[1])/(l[3]-l[1])+c[1],d=(e[2]-l[0])*(c[2]-c[0])/(l[2]-l[0])+c[0],p=(e[3]-l[1])*(c[3]-c[1])/(l[3]-l[1])+c[1];if(f=Math.max(f,c[0]),h=Math.max(h,c[1]),d=Math.min(d,c[2]),p=Math.min(p,c[3]),!(f>d||h>p)){o.bind();var g=s[2]-s[0],v=s[3]-s[1];if(this.outerFill&&(o.drawBox(0,0,g,h,i),o.drawBox(0,h,f,p,i),o.drawBox(0,p,g,v,i),o.drawBox(d,h,g,p,i)),this.innerFill&&o.drawBox(f,h,d,p,n),r>0){var m=r*u;o.drawBox(f-m,h-m,d+m,h+m,a),o.drawBox(f-m,p-m,d+m,p+m,a),o.drawBox(f-m,h-m,f+m,p+m,a),o.drawBox(d-m,h-m,d+m,p+m,a)}}}},l.update=function(t){t=t||{},this.innerFill=!!t.innerFill,this.outerFill=!!t.outerFill,this.innerColor=(t.innerColor||[0,0,0,.5]).slice(),this.outerColor=(t.outerColor||[0,0,0,.5]).slice(),this.borderColor=(t.borderColor||[0,0,0,1]).slice(),this.borderWidth=t.borderWidth||0,this.selectBox=(t.selectBox||this.selectBox).slice()},l.dispose=function(){this.boxBuffer.dispose(),this.boxShader.dispose(),this.plot.removeOverlay(this)}},{\"./lib/shaders\":194,\"gl-buffer\":118,\"gl-shader\":197}],196:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){this.coord=[t,e],this.id=r,this.value=n,this.distance=i}function i(t,e,r){this.gl=t,this.fbo=e,this.buffer=r,this._readTimeout=null;var n=this;this._readCallback=function(){n.gl&&(e.bind(),t.readPixels(0,0,e.shape[0],e.shape[1],t.RGBA,t.UNSIGNED_BYTE,n.buffer),n._readTimeout=null)}}function a(t,e){var r=o(t,e),n=s.mallocUint8(e[0]*e[1]*4);return new i(t,r,n)}e.exports=a;var o=t(\"gl-fbo\"),s=t(\"typedarray-pool\"),l=t(\"ndarray\"),c=t(\"bit-twiddle\").nextPow2,u=t(\"cwise/lib/wrapper\")({args:[\"array\",{offset:[0,0,1],array:0},{offset:[0,0,2],array:0},{offset:[0,0,3],array:0},\"scalar\",\"scalar\",\"index\"],pre:{body:\"{this_closestD2=1e8,this_closestX=-1,this_closestY=-1}\",args:[],thisVars:[\"this_closestD2\",\"this_closestX\",\"this_closestY\"],localVars:[]},body:{body:\"{if(255>_inline_31_arg0_||255>_inline_31_arg1_||255>_inline_31_arg2_||255>_inline_31_arg3_){var _inline_31_l=_inline_31_arg4_-_inline_31_arg6_[0],_inline_31_a=_inline_31_arg5_-_inline_31_arg6_[1],_inline_31_f=_inline_31_l*_inline_31_l+_inline_31_a*_inline_31_a;_inline_31_fthis.buffer.length){s.free(this.buffer);for(var n=this.buffer=s.mallocUint8(c(r*e*4)),i=0;r*e*4>i;++i)n[i]=255}return t}}}),f.begin=function(){var t=this.gl;this.shape;t&&(this.fbo.bind(),t.clearColor(1,1,1,1),t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT))},f.end=function(){var t=this.gl;t&&(t.bindFramebuffer(t.FRAMEBUFFER,null),this._readTimeout||clearTimeout(this._readTimeout),this._readTimeout=setTimeout(this._readCallback,1))},f.query=function(t,e,r){if(!this.gl)return null;var i=this.fbo.shape.slice();t=0|t,e=0|e,\"number\"!=typeof r&&(r=1);var a=0|Math.min(Math.max(t-r,0),i[0]),o=0|Math.min(Math.max(t+r,0),i[0]),s=0|Math.min(Math.max(e-r,0),i[1]),c=0|Math.min(Math.max(e+r,0),i[1]);if(a>=o||s>=c)return null;var f=[o-a,c-s],h=l(this.buffer,[f[0],f[1],4],[4,4*i[0],1],4*(a+i[0]*s)),d=u(h.hi(f[0],f[1],1),r,r),p=d[0],g=d[1];if(0>p||Math.pow(this.radius,2)=0){for(var A=0|k.type.charAt(k.type.length-1),M=new Array(A),T=0;A>T;++T)M[T]=_.length,x.push(k.name+\"[\"+T+\"]\"),\"number\"==typeof k.location?_.push(k.location+T):Array.isArray(k.location)&&k.location.length===A&&\"number\"==typeof k.location[T]?_.push(0|k.location[T]):_.push(-1);b.push({name:k.name,type:k.type,locations:M})}else b.push({name:k.name,type:k.type,locations:[_.length]}),x.push(k.name),\"number\"==typeof k.location?_.push(0|k.location):_.push(-1)}for(var E=0,w=0;w<_.length;++w)if(_[w]<0){for(;_.indexOf(E)>=0;)E+=1;_[w]=E}var L=new Array(r.length);a(),d._relink=a,d.types={uniforms:l(r),attributes:l(n)},d.attributes=s(p,d,b,_),Object.defineProperty(d,\"uniforms\",o(p,d,r,L))},e.exports=a},{\"./lib/GLError\":198,\"./lib/create-attributes\":199,\"./lib/create-uniforms\":200,\"./lib/reflect\":201,\"./lib/runtime-reflect\":202,\"./lib/shader-cache\":203}],198:[function(t,e,r){function n(t,e,r){this.shortMessage=e||\"\",this.longMessage=r||\"\",this.rawError=t||\"\",this.message=\"gl-shader: \"+(e||t||\"\")+(r?\"\\n\"+r:\"\"),this.stack=(new Error).stack}n.prototype=new Error,n.prototype.name=\"GLError\",n.prototype.constructor=n,e.exports=n},{}],199:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){this._gl=t,this._wrapper=e,this._index=r,this._locations=n,this._dimension=i,this._constFunc=a}function i(t,e,r,i,a,o,s){for(var l=[\"gl\",\"v\"],c=[],u=0;a>u;++u)l.push(\"x\"+u),c.push(\"x\"+u);l.push(\"if(x0.length===void 0){return gl.vertexAttrib\"+a+\"f(v,\"+c.join()+\")}else{return gl.vertexAttrib\"+a+\"fv(v,x0)}\");var f=Function.apply(null,l),h=new n(t,e,r,i,a,f);Object.defineProperty(o,s,{set:function(e){return t.disableVertexAttribArray(i[r]),f(t,i[r],e),e},get:function(){return h},enumerable:!0})}function a(t,e,r,n,a,o,s){for(var l=new Array(a),c=new Array(a),u=0;a>u;++u)i(t,e,r[u],n,a,l,u),c[u]=l[u];Object.defineProperty(l,\"location\",{set:function(t){if(Array.isArray(t))for(var e=0;a>e;++e)c[e].location=t[e];else for(var e=0;a>e;++e)c[e].location=t+e;return t},get:function(){for(var t=new Array(a),e=0;a>e;++e)t[e]=n[r[e]];return t},enumerable:!0}),l.pointer=function(e,i,o,s){e=e||t.FLOAT,i=!!i,o=o||a*a,s=s||0;for(var l=0;a>l;++l){var c=n[r[l]];t.vertexAttribPointer(c,a,e,i,o,s+l*a),t.enableVertexAttribArray(c)}};var f=new Array(a),h=t[\"vertexAttrib\"+a+\"fv\"];Object.defineProperty(o,s,{set:function(e){for(var i=0;a>i;++i){var o=n[r[i]];if(t.disableVertexAttribArray(o),Array.isArray(e[0]))h.call(t,o,e[i]);else{for(var s=0;a>s;++s)f[s]=e[a*i+s];h.call(t,o,f)}}return e},get:function(){return l},enumerable:!0})}function o(t,e,r,n){for(var o={},l=0,c=r.length;c>l;++l){var u=r[l],f=u.name,h=u.type,d=u.locations;switch(h){case\"bool\":case\"int\":case\"float\":i(t,e,d[0],n,1,o,f);break;default:if(h.indexOf(\"vec\")>=0){var p=h.charCodeAt(h.length-1)-48;if(2>p||p>4)throw new s(\"\",\"Invalid data type for attribute \"+f+\": \"+h);i(t,e,d[0],n,p,o,f)}else{if(!(h.indexOf(\"mat\")>=0))throw new s(\"\",\"Unknown data type for attribute \"+f+\": \"+h);var p=h.charCodeAt(h.length-1)-48;if(2>p||p>4)throw new s(\"\",\"Invalid data type for attribute \"+f+\": \"+h);a(t,e,d,n,p,o,f)}}}return o}e.exports=o;var s=t(\"./GLError\"),l=n.prototype;l.pointer=function(t,e,r,n){var i=this,a=i._gl,o=i._locations[i._index];a.vertexAttribPointer(o,i._dimension,t||a.FLOAT,!!e,r||0,n||0),a.enableVertexAttribArray(o)},l.set=function(t,e,r,n){return this._constFunc(this._locations[this._index],t,e,r,n)},Object.defineProperty(l,\"location\",{get:function(){return this._locations[this._index]},set:function(t){return t!==this._locations[this._index]&&(this._locations[this._index]=0|t,this._wrapper.program=null),0|t}})},{\"./GLError\":198}],200:[function(t,e,r){\"use strict\";function n(t){var e=new Function(\"y\",\"return function(){return y}\");return e(t)}function i(t,e){for(var r=new Array(t),n=0;t>n;++n)r[n]=e;return r}function a(t,e,r,a){function l(r){var n=new Function(\"gl\",\"wrapper\",\"locations\",\"return function(){return gl.getUniform(wrapper.program,locations[\"+r+\"])}\");return n(t,e,a)}function c(t,e,r){switch(r){case\"bool\":case\"int\":case\"sampler2D\":case\"samplerCube\":return\"gl.uniform1i(locations[\"+e+\"],obj\"+t+\")\";case\"float\":return\"gl.uniform1f(locations[\"+e+\"],obj\"+t+\")\";default:var n=r.indexOf(\"vec\");if(!(n>=0&&1>=n&&r.length===4+n)){if(0===r.indexOf(\"mat\")&&4===r.length){var i=r.charCodeAt(r.length-1)-48;if(2>i||i>4)throw new s(\"\",\"Invalid uniform dimension type for matrix \"+name+\": \"+r);return\"gl.uniformMatrix\"+i+\"fv(locations[\"+e+\"],false,obj\"+t+\")\"}throw new s(\"\",\"Unknown uniform data type for \"+name+\": \"+r)}var i=r.charCodeAt(r.length-1)-48;if(2>i||i>4)throw new s(\"\",\"Invalid data type\");switch(r.charAt(0)){case\"b\":case\"i\":return\"gl.uniform\"+i+\"iv(locations[\"+e+\"],obj\"+t+\")\";case\"v\":return\"gl.uniform\"+i+\"fv(locations[\"+e+\"],obj\"+t+\")\";default:throw new s(\"\",\"Unrecognized data type for vector \"+name+\": \"+r)}}}function u(t,e){if(\"object\"!=typeof e)return[[t,e]];var r=[];for(var n in e){var i=e[n],a=t;a+=parseInt(n)+\"\"===n?\"[\"+n+\"]\":\".\"+n,\"object\"==typeof i?r.push.apply(r,u(a,i)):r.push([a,i])}return r}function f(e){for(var n=[\"return function updateProperty(obj){\"],i=u(\"\",e),o=0;o=0&&1>=e&&t.length===4+e){var r=t.charCodeAt(t.length-1)-48;if(2>r||r>4)throw new s(\"\",\"Invalid data type\");return\"b\"===t.charAt(0)?i(r,!1):i(r,0)}if(0===t.indexOf(\"mat\")&&4===t.length){var r=t.charCodeAt(t.length-1)-48;if(2>r||r>4)throw new s(\"\",\"Invalid uniform dimension type for matrix \"+name+\": \"+t);return i(r*r,0)}throw new s(\"\",\"Unknown uniform data type for \"+name+\": \"+t)}}function d(t,e,i){if(\"object\"==typeof i){var o=p(i);Object.defineProperty(t,e,{get:n(o),set:f(i),enumerable:!0,configurable:!1})}else a[i]?Object.defineProperty(t,e,{get:l(i),set:f(i),enumerable:!0,configurable:!1}):t[e]=h(r[i].type)}function p(t){var e;if(Array.isArray(t)){e=new Array(t.length);for(var r=0;r1){l[0]in o||(o[l[0]]=[]),o=o[l[0]];for(var c=1;ca;++a){var o=t.getActiveUniform(e,a);if(o){var s=n(t,o.type);if(o.size>1)for(var l=0;la;++a){var o=t.getActiveAttrib(e,a);o&&i.push({name:o.name,type:n(t,o.type)})}return i}r.uniforms=i,r.attributes=a;var o={FLOAT:\"float\",FLOAT_VEC2:\"vec2\",FLOAT_VEC3:\"vec3\",FLOAT_VEC4:\"vec4\",INT:\"int\",INT_VEC2:\"ivec2\",INT_VEC3:\"ivec3\",INT_VEC4:\"ivec4\",BOOL:\"bool\",BOOL_VEC2:\"bvec2\",BOOL_VEC3:\"bvec3\",BOOL_VEC4:\"bvec4\",FLOAT_MAT2:\"mat2\",FLOAT_MAT3:\"mat3\",FLOAT_MAT4:\"mat4\",SAMPLER_2D:\"sampler2D\",SAMPLER_CUBE:\"samplerCube\"},s=null},{}],203:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a,o){this.id=t,this.src=e,this.type=r,this.shader=n,this.count=a,this.programs=[],this.cache=o}function i(t){this.gl=t,this.shaders=[{},{}],this.programs={}}function a(t,e,r){var n=t.createShader(e);if(t.shaderSource(n,r),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS)){var i=t.getShaderInfoLog(n);try{var a=f(i,r,e)}catch(o){throw console.warn(\"Failed to format compiler error: \"+o),new u(i,\"Error compiling shader:\\n\"+i)}throw new u(i,a.short,a.long)}return n}function o(t,e,r,n,i){var a=t.createProgram();t.attachShader(a,e),t.attachShader(a,r);for(var o=0;on;++n){var a=t.programs[r[n]];a&&(delete t.programs[n],e.deleteProgram(a))}e.deleteShader(this.shader),delete t.shaders[this.type===e.FRAGMENT_SHADER|0][this.src]}};var g=i.prototype;g.getShaderReference=function(t,e){var r=this.gl,i=this.shaders[t===r.FRAGMENT_SHADER|0],o=i[e];if(o&&r.isShader(o.shader))o.count+=1;else{var s=a(r,t,e);o=i[e]=new n(p++,e,t,s,[],1,this)}return o},g.getProgram=function(t,e,r,n){var i=[t.id,e.id,r.join(\":\"),n.join(\":\")].join(\"@\"),a=this.programs[i];return a&&this.gl.isProgram(a)||(this.programs[i]=a=o(this.gl,t.shader,e.shader,r,n),t.programs.push(i),e.programs.push(i)),a}},{\"./GLError\":198,\"gl-format-compiler-error\":204,\"weakmap-shim\":214}],204:[function(t,e,r){function n(t,e,r){\"use strict\";var n=o(e)||\"of unknown name (see npm glsl-shader-name)\",l=\"unknown type\";void 0!==r&&(l=r===a.FRAGMENT_SHADER?\"fragment\":\"vertex\");for(var c=i(\"Error compiling %s shader %s:\\n\",l,n),u=i(\"%s%s\",c,t),f=t.split(\"\\n\"),h={},d=0;ds;s++)if(g=i(t[s]),\"string\"===g)v[v.length]=t[s];else if(\"array\"===g){if(c=t[s],c[2])for(n=e[d],l=0;l=0),c[8]){case\"b\":n=n.toString(2);break;case\"c\":n=String.fromCharCode(n);break;case\"d\":case\"i\":n=parseInt(n,10);break;case\"j\":n=JSON.stringify(n,null,c[6]?parseInt(c[6]):0);break;case\"e\":n=c[7]?n.toExponential(c[7]):n.toExponential();break;case\"f\":n=c[7]?parseFloat(n).toFixed(c[7]):parseFloat(n);break;case\"g\":n=c[7]?parseFloat(n).toPrecision(c[7]):parseFloat(n);break;case\"o\":n=n.toString(8);break;case\"s\":n=(n=String(n))&&c[7]?n.substring(0,c[7]):n;break;case\"u\":n>>>=0;break;case\"x\":n=n.toString(16);break;case\"X\":n=n.toString(16).toUpperCase()}o.json.test(c[8])?v[v.length]=n:(!o.number.test(c[8])||m&&!c[3]?y=\"\":(y=m?\"+\":\"-\",n=n.toString().replace(o.sign,\"\")),f=c[4]?\"0\"===c[4]?\"0\":c[4].charAt(1):\" \",h=c[6]-(y+n).length,u=c[6]&&h>0?a(f,h):\"\",v[v.length]=c[5]?y+n+u:\"0\"===f?y+u+n:u+y+n)}return v.join(\"\")},r.cache={},r.parse=function(t){for(var e=t,r=[],n=[],i=0;e;){if(null!==(r=o.text.exec(e)))n[n.length]=r[0];else if(null!==(r=o.modulo.exec(e)))n[n.length]=\"%\";else{if(null===(r=o.placeholder.exec(e)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(r[2]){i|=1;var a=[],s=r[2],l=[];if(null===(l=o.key.exec(s)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(a[a.length]=l[1];\"\"!==(s=s.substring(l[0].length));)if(null!==(l=o.key_access.exec(s)))a[a.length]=l[1];else{if(null===(l=o.index_access.exec(s)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");a[a.length]=l[1]}r[2]=a}else i|=2;if(3===i)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");n[n.length]=r}e=e.substring(r[0].length)}return n};var s=function(t,e,n){return n=(e||[]).slice(0),n.splice(0,0,t),r.apply(null,n)};\"undefined\"!=typeof n?(n.sprintf=r,n.vsprintf=s):(e.sprintf=r,e.vsprintf=s,\"function\"==typeof t&&t.amd&&t(function(){return{sprintf:r,vsprintf:s}}))}(\"undefined\"==typeof window?this:window)},{}],212:[function(t,e,r){function n(){var t={};return function(e){if((\"object\"!=typeof e||null===e)&&\"function\"!=typeof e)throw new Error(\"Weakmap-shim: Key must be object\");var r=e.valueOf(t);return r&&r.identity===t?r:i(e,t)}}var i=t(\"./hidden-store.js\");e.exports=n},{\"./hidden-store.js\":213}],213:[function(t,e,r){function n(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,\"valueOf\",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}e.exports=n},{}],214:[function(t,e,r){function n(){var t=i();return{get:function(e,r){var n=t(e);return n.hasOwnProperty(\"value\")?n.value:r},set:function(e,r){t(e).value=r},has:function(e){return\"value\"in t(e)},\"delete\":function(e){return delete t(e).value}}}var i=t(\"./create-store.js\");e.exports=n},{\"./create-store.js\":212}],215:[function(t,e,r){\"use strict\";function n(t){this.plot=t,this.enable=[!0,!0,!1,!1],this.width=[1,1,1,1],this.color=[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.center=[1/0,1/0]}function i(t,e){var r=new n(t);return r.update(e),t.addOverlay(r),r}e.exports=i;var a=n.prototype;a.update=function(t){t=t||{},this.enable=(t.enable||[!0,!0,!1,!1]).slice(),this.width=(t.width||[1,1,1,1]).slice(),this.color=(t.color||[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]]).map(function(t){return t.slice()}),this.center=(t.center||[1/0,1/0]).slice(),this.plot.setOverlayDirty()},a.draw=function(){var t=this.enable,e=this.width,r=this.color,n=this.center,i=this.plot,a=i.line,o=i.dataBox,s=i.viewBox;if(a.bind(),o[0]<=n[0]&&n[0]<=o[2]&&o[1]<=n[1]&&n[1]<=o[3]){var l=s[0]+(n[0]-o[0])/(o[2]-o[0])*(s[2]-s[0]),c=s[1]+(n[1]-o[1])/(o[3]-o[1])*(s[3]-s[1]);t[0]&&a.drawLine(l,c,s[0],c,e[0],r[0]),t[1]&&a.drawLine(l,c,l,s[1],e[1],r[1]),t[2]&&a.drawLine(l,c,s[2],c,e[2],r[2]),t[3]&&a.drawLine(l,c,l,s[3],e[3],r[3])}},a.dispose=function(){this.plot.removeOverlay(this)}},{}],216:[function(t,e,r){var n=t(\"gl-shader\"),i=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec4 uv;\\nattribute vec3 f;\\nattribute vec3 normal;\\n\\nuniform mat4 model, view, projection, inverseModel;\\nuniform vec3 lightPosition, eyePosition;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\n\\nvoid main() {\\n worldCoordinate = vec3(uv.zw, f.x);\\n vec4 worldPosition = model * vec4(worldCoordinate, 1.0);\\n vec4 clipPosition = projection * view * worldPosition;\\n gl_Position = clipPosition;\\n kill = f.y;\\n value = f.z;\\n planeCoordinate = uv.xy;\\n\\n //Lighting geometry parameters\\n vec4 cameraCoordinate = view * worldPosition;\\n cameraCoordinate.xyz /= cameraCoordinate.w;\\n lightDirection = lightPosition - cameraCoordinate.xyz;\\n eyeDirection = eyePosition - cameraCoordinate.xyz;\\n surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz);\\n}\\n\",a=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nfloat beckmannDistribution_2_0(float x, float roughness) {\\n float NdotH = max(x, 0.0001);\\n float cos2Alpha = NdotH * NdotH;\\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\\n float roughness2 = roughness * roughness;\\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\\n return exp(tan2Alpha / roughness2) / denom;\\n}\\n\\n\\n\\nfloat beckmannSpecular_1_1(\\n vec3 lightDirection,\\n vec3 viewDirection,\\n vec3 surfaceNormal,\\n float roughness) {\\n return beckmannDistribution_2_0(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness);\\n}\\n\\n\\n\\nuniform vec3 lowerBound, upperBound;\\nuniform float contourTint;\\nuniform vec4 contourColor;\\nuniform sampler2D colormap;\\nuniform vec3 clipBounds[2];\\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\n\\nvoid main() {\\n if(kill > 0.0 ||\\n any(lessThan(worldCoordinate, clipBounds[0])) || any(greaterThan(worldCoordinate, clipBounds[1]))) {\\n discard;\\n }\\n\\n vec3 N = normalize(surfaceNormal);\\n vec3 V = normalize(eyeDirection);\\n vec3 L = normalize(lightDirection);\\n\\n if(gl_FrontFacing) {\\n N = -N;\\n }\\n\\n float specular = beckmannSpecular_1_1(L, V, N, roughness);\\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\\n\\n vec4 surfaceColor = texture2D(colormap, vec2(value, value));\\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\\n\\n gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\\n}\\n\",o=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nattribute vec4 uv;\\nattribute float f;\\n\\nuniform mat3 permutation;\\nuniform mat4 model, view, projection;\\nuniform float height, zOffset;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\\n\\nvoid main() {\\n vec3 dataCoordinate = permutation * vec3(uv.xy, height);\\n vec4 worldPosition = model * vec4(dataCoordinate, 1.0);\\n\\n vec4 clipPosition = projection * view * worldPosition;\\n clipPosition.z = clipPosition.z + zOffset;\\n\\n gl_Position = clipPosition;\\n value = f;\\n kill = -1.0;\\n worldCoordinate = dataCoordinate;\\n planeCoordinate = uv.zw;\\n\\n //Don't do lighting for contours\\n surfaceNormal = vec3(1,0,0);\\n eyeDirection = vec3(0,1,0);\\n lightDirection = vec3(0,0,1);\\n}\\n\",s=\"precision mediump float;\\n#define GLSLIFY 1\\n\\nuniform vec2 shape;\\nuniform vec3 clipBounds[2];\\nuniform float pickId;\\n\\nvarying float value, kill;\\nvarying vec3 worldCoordinate;\\nvarying vec2 planeCoordinate;\\nvarying vec3 surfaceNormal;\\n\\nvec2 splitFloat(float v) {\\n float vh = 255.0 * v;\\n float upper = floor(vh);\\n float lower = fract(vh);\\n return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\\n}\\n\\nvoid main() {\\n if(kill > 0.0 ||\\n any(lessThan(worldCoordinate, clipBounds[0])) || any(greaterThan(worldCoordinate, clipBounds[1]))) {\\n discard;\\n }\\n vec2 ux = splitFloat(planeCoordinate.x / shape.x);\\n vec2 uy = splitFloat(planeCoordinate.y / shape.y);\\n gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\\n}\\n\";r.createShader=function(t){var e=n(t,i,a,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},r.createPickShader=function(t){var e=n(t,i,s,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"vec3\"},{name:\"normal\",type:\"vec3\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},r.createContourShader=function(t){var e=n(t,o,a,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"float\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e},r.createPickContourShader=function(t){var e=n(t,o,s,null,[{name:\"uv\",type:\"vec4\"},{name:\"f\",type:\"float\"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e}},{\"gl-shader\":197}],217:[function(t,e,r){arguments[4][21][0].apply(r,arguments)},{dup:21}],218:[function(t,e,r){\"use strict\";function n(t){if(t in l)return l[t];for(var e=[],r=0;t>r;++r)e.push(\"out\",r,\"s=0.5*(inp\",r,\"l-inp\",r,\"r);\");for(var n=[\"array\"],i=[\"junk\"],r=0;t>r;++r){n.push(\"array\"),i.push(\"out\"+r+\"s\");var a=o(t);a[r]=-1,n.push({array:0,offset:a.slice()}),a[r]=1,n.push({array:0,offset:a.slice()}),i.push(\"inp\"+r+\"l\",\"inp\"+r+\"r\")}return l[t]=s({args:n,pre:u,post:u,body:{body:e.join(\"\"),args:i.map(function(t){return{name:t,lvalue:0===t.indexOf(\"out\"),rvalue:0===t.indexOf(\"inp\"),count:\"junk\"!==t|0}}),thisVars:[],localVars:[]},funcName:\"fdTemplate\"+t})}function i(t){function e(e){for(var r=a-e.length,n=[],i=[],s=[],l=0;a>l;++l)e.indexOf(l+1)>=0?s.push(\"0\"):e.indexOf(-(l+1))>=0?s.push(\"s[\"+l+\"]-1\"):(s.push(\"-1\"),n.push(\"1\"),i.push(\"s[\"+l+\"]-2\"));var c=\".lo(\"+n.join()+\").hi(\"+i.join()+\")\";if(0===n.length&&(c=\"\"),r>0){o.push(\"if(1\");for(var l=0;a>l;++l)e.indexOf(l+1)>=0||e.indexOf(-(l+1))>=0||o.push(\"&&s[\",l,\"]>2\");o.push(\"){grad\",r,\"(src.pick(\",s.join(),\")\",c);for(var l=0;a>l;++l)e.indexOf(l+1)>=0||e.indexOf(-(l+1))>=0||o.push(\",dst.pick(\",s.join(),\",\",l,\")\",c);o.push(\");\")}for(var l=0;l1){dst.set(\",s.join(),\",\",u,\",0.5*(src.get(\",h.join(),\")-src.get(\",d.join(),\")))}else{dst.set(\",s.join(),\",\",u,\",0)};\"):o.push(\"if(s[\",u,\"]>1){diff(\",f,\",src.pick(\",h.join(),\")\",c,\",src.pick(\",d.join(),\")\",c,\");}else{zero(\",f,\");};\");break;case\"mirror\":0===r?o.push(\"dst.set(\",s.join(),\",\",u,\",0);\"):o.push(\"zero(\",f,\");\");break;case\"wrap\":var p=s.slice(),g=s.slice();e[l]<0?(p[u]=\"s[\"+u+\"]-2\",g[u]=\"0\"):(p[u]=\"s[\"+u+\"]-1\",g[u]=\"1\"),0===r?o.push(\"if(s[\",u,\"]>2){dst.set(\",s.join(),\",\",u,\",0.5*(src.get(\",p.join(),\")-src.get(\",g.join(),\")))}else{dst.set(\",s.join(),\",\",u,\",0)};\"):o.push(\"if(s[\",u,\"]>2){diff(\",f,\",src.pick(\",p.join(),\")\",c,\",src.pick(\",g.join(),\")\",c,\");}else{zero(\",f,\");};\");break;default:throw new Error(\"ndarray-gradient: Invalid boundary condition\")}}r>0&&o.push(\"};\")}var r=t.join(),i=c[r];if(i)return i;for(var a=t.length,o=[\"function gradient(dst,src){var s=src.shape.slice();\"],s=0;1<s;++s){for(var u=[],d=0;a>d;++d)s&1<=s;++s)v.push(\"grad\"+s),m.push(n(s));v.push(o.join(\"\"));var y=Function.apply(void 0,v),i=y.apply(void 0,m);return l[r]=i,i}function a(t,e,r){if(Array.isArray(r)){if(r.length!==e.dimension)throw new Error(\"ndarray-gradient: invalid boundary conditions\")}else r=\"string\"==typeof r?o(e.dimension,r):o(e.dimension,\"clamp\");if(t.dimension!==e.dimension+1)throw new Error(\"ndarray-gradient: output dimension must be +1 input dimension\");if(t.shape[e.dimension]!==e.dimension)throw new Error(\"ndarray-gradient: output shape must match input shape\");for(var n=0;nr;++r)for(o=o||e.surfaceProject[r],n=0;3>n;++n)s=s||e.contourProject[r][n];for(r=0;3>r;++r){var l=D.projections[r];for(n=0;16>n;++n)l[n]=0;for(n=0;4>n;++n)l[5*n]=1;l[5*r]=0,l[12+r]=e.axesBounds[+(a[r]>0)][r],k(l,t.model,l);var c=D.clipBounds[r];for(i=0;2>i;++i)for(n=0;3>n;++n)c[i][n]=t.clipBounds[i][n];c[0][r]=-1e8,c[1][r]=1e8}return D.showSurface=o,D.showContour=s,D}function s(t,e){t=t||{};var r=this.gl;r.disable(r.CULL_FACE),this._colorMap.bind(0);var n=B;n.model=t.model||R,n.view=t.view||R,n.projection=t.projection||R,n.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],n.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],n.contourColor=this.contourColor[0],n.inverseModel=A(n.inverseModel,n.model);for(var i=0;2>i;++i)for(var a=n.clipBounds[i],s=0;3>s;++s)a[s]=Math.min(Math.max(this.clipBounds[i][s],-1e8),1e8);n.kambient=this.ambientLight,n.kdiffuse=this.diffuseLight,n.kspecular=this.specularLight,n.roughness=this.roughness,n.fresnel=this.fresnel,n.opacity=this.opacity,n.height=0,n.permutation=V;var l=U;for(k(l,n.view,n.model),k(l,n.projection,l),A(l,l),i=0;3>i;++i)n.eyePosition[i]=l[12+i]/l[15];var c=l[15];for(i=0;3>i;++i)c+=this.lightPosition[i]*l[4*i+3];for(i=0;3>i;++i){var u=l[12+i];for(s=0;3>s;++s)u+=l[4*s+i]*this.lightPosition[s];n.lightPosition[i]=u/c}var f=o(n,this);if(f.showSurface&&e===this.opacity<1){for(this._shader.bind(),this._shader.uniforms=n,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(r.TRIANGLES,this._vertexCount),i=0;3>i;++i)this.surfaceProject[i]&&this.vertexCount&&(this._shader.uniforms.model=f.projections[i],this._shader.uniforms.clipBounds=f.clipBounds[i],this._vao.draw(r.TRIANGLES,this._vertexCount));this._vao.unbind()}if(f.showContour&&!e){var h=this._contourShader;n.kambient=1,n.kdiffuse=0,n.kspecular=0,n.opacity=1,h.bind(),h.uniforms=n;var d=this._contourVAO;for(d.bind(),i=0;3>i;++i)for(h.uniforms.permutation=I[i],r.lineWidth(this.contourWidth[i]),s=0;si;++i)for(h.uniforms.model=f.projections[i],h.uniforms.clipBounds=f.clipBounds[i],s=0;3>s;++s)if(this.contourProject[i][s]){h.uniforms.permutation=I[s],r.lineWidth(this.contourWidth[s]);for(var p=0;pi;++i)if(0!==this._dynamicCounts[i])for(h.uniforms.model=n.model,h.uniforms.clipBounds=n.clipBounds,h.uniforms.permutation=I[i],r.lineWidth(this.dynamicWidth[i]),h.uniforms.contourColor=this.dynamicColor[i],h.uniforms.contourTint=this.dynamicTint[i],h.uniforms.height=this.dynamicLevel[i],d.draw(r.LINES,this._dynamicCounts[i],this._dynamicOffsets[i]),s=0;3>s;++s)this.contourProject[s][i]&&(h.uniforms.model=f.projections[s],h.uniforms.clipBounds=f.clipBounds[s],d.draw(r.LINES,this._dynamicCounts[i],this._dynamicOffsets[i]));d.unbind()}}function l(t,e){var r=e.shape.slice(),n=t.shape.slice();b.assign(t.lo(1,1).hi(r[0],r[1]),e),b.assign(t.lo(1).hi(r[0],1),e.hi(r[0],1)),b.assign(t.lo(1,n[1]-1).hi(r[0],1),e.lo(0,r[1]-1).hi(r[0],1)),b.assign(t.lo(0,1).hi(1,r[1]),e.hi(1)),b.assign(t.lo(n[0]-1,1).hi(1,r[1]),e.lo(r[0]-1)),t.set(0,0,e.get(0,0)),t.set(0,n[1]-1,e.get(0,r[1]-1)),t.set(n[0]-1,0,e.get(r[0]-1,0)),t.set(n[0]-1,n[1]-1,e.get(r[0]-1,r[1]-1))}function c(t,e){return Array.isArray(t)?[e(t[0]),e(t[1]),e(t[2])]:[e(t),e(t),e(t)]}function u(t){return Array.isArray(t)?3===t.length?[t[0],t[1],t[2],1]:[t[0],t[1],t[2],t[3]]:[0,0,0,1]}function f(t){if(Array.isArray(t)){if(Array.isArray(t))return[u(t[0]),u(t[1]),u(t[2])];var e=u(t);return[e.slice(),e.slice(),e.slice()]}}function h(t){var e=t.gl,r=L(e),n=C(e),i=S(e),o=z(e),s=p(e),l=g(e,[{buffer:s,size:4,stride:P,offset:0},{buffer:s,size:3,stride:P,offset:16},{buffer:s,size:3,stride:P,offset:28}]),c=p(e),u=g(e,[{buffer:c,size:4,stride:20,offset:0},{buffer:c,size:1,stride:20,offset:16}]),f=p(e),h=g(e,[{buffer:f,size:2,type:e.FLOAT}]),d=v(e,1,N,e.RGBA,e.UNSIGNED_BYTE);d.minFilter=e.LINEAR,d.magFilter=e.LINEAR;var m=new a(e,[0,0],[[0,0,0],[0,0,0]],r,n,s,l,d,i,o,c,u,f,h),y={levels:[[],[],[]]};for(var b in t)y[b]=t[b];return y.colormap=y.colormap||\"jet\",m.update(y),m}e.exports=h;var d=t(\"bit-twiddle\"),p=t(\"gl-buffer\"),g=t(\"gl-vao\"),v=t(\"gl-texture2d\"),m=t(\"typedarray-pool\"),y=t(\"colormap\"),b=t(\"ndarray-ops\"),x=t(\"ndarray-pack\"),_=t(\"ndarray\"),w=t(\"surface-nets\"),k=t(\"gl-mat4/multiply\"),A=t(\"gl-mat4/invert\"),M=t(\"binary-search-bounds\"),T=t(\"ndarray-gradient\"),E=t(\"./lib/shaders\"),L=E.createShader,S=E.createContourShader,C=E.createPickShader,z=E.createPickContourShader,P=40,R=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],O=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],I=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];!function(){for(var t=0;3>t;++t){var e=I[t],r=(t+1)%3,n=(t+2)%3;e[r+0]=1,e[n+3]=1,e[t+6]=1}}();var N=265,j=a.prototype;j.isTransparent=function(){return this.opacity<1},j.isOpaque=function(){if(this.opacity>=1)return!0;for(var t=0;3>t;++t)if(this._contourCounts[t].length>0||this._dynamicCounts[t]>0)return!0;return!1},j.pickSlots=1,j.setPickBase=function(t){this.pickId=t};var F=[0,0,0],D={showSurface:!1,showContour:!1,projections:[R.slice(),R.slice(),R.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]},B={model:R,view:R,projection:R,inverseModel:R.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1},U=R.slice(),V=[1,0,0,0,1,0,0,0,1];j.draw=function(t){return s.call(this,t,!1)},j.drawTransparent=function(t){return s.call(this,t,!0)};var q={model:R,view:R,projection:R,inverseModel:R,clipBounds:[[0,0,0],[0,0,0]],height:0,shape:[0,0],pickId:0,lowerBound:[0,0,0],upperBound:[0,0,0],zOffset:0,permutation:[1,0,0,0,1,0,0,0,1],lightPosition:[0,0,0],eyePosition:[0,0,0]};j.drawPick=function(t){t=t||{};var e=this.gl;e.disable(e.CULL_FACE);var r=q;r.model=t.model||R,r.view=t.view||R,r.projection=t.projection||R,r.shape=this._field[2].shape,r.pickId=this.pickId/255,r.lowerBound=this.bounds[0],r.upperBound=this.bounds[1],r.permutation=V;for(var n=0;2>n;++n)for(var i=r.clipBounds[n],a=0;3>a;++a)i[a]=Math.min(Math.max(this.clipBounds[n][a],-1e8),1e8);var s=o(r,this);if(s.showSurface){for(this._pickShader.bind(),this._pickShader.uniforms=r,this._vao.bind(),this._vao.draw(e.TRIANGLES,this._vertexCount),n=0;3>n;++n)this.surfaceProject[n]&&(this._pickShader.uniforms.model=s.projections[n],this._pickShader.uniforms.clipBounds=s.clipBounds[n],this._vao.draw(e.TRIANGLES,this._vertexCount));this._vao.unbind()}if(s.showContour){var l=this._contourPickShader;l.bind(),l.uniforms=r;var c=this._contourVAO;for(c.bind(),a=0;3>a;++a)for(e.lineWidth(this.contourWidth[a]),l.uniforms.permutation=I[a],n=0;nn;++n)for(l.uniforms.model=s.projections[n],l.uniforms.clipBounds=s.clipBounds[n],a=0;3>a;++a)if(this.contourProject[n][a]){l.uniforms.permutation=I[a],e.lineWidth(this.contourWidth[a]);for(var u=0;u>4)/16)/255,i=Math.floor(n),a=n-i,o=e[1]*(t.value[1]+(15&t.value[2])/16)/255,s=Math.floor(o),l=o-s;i+=1,s+=1;var c=r.position;c[0]=c[1]=c[2]=0;for(var u=0;2>u;++u)for(var f=u?a:1-a,h=0;2>h;++h)for(var d=h?l:1-l,p=i+u,g=s+h,v=f*d,m=0;3>m;++m)c[m]+=this._field[m].get(p,g)*v;for(var y=this._pickResult.level,b=0;3>b;++b)if(y[b]=M.le(this.contourLevels[b],c[b]),y[b]<0)this.contourLevels[b].length>0&&(y[b]=0);else if(y[b]Math.abs(_-c[b])&&(y[b]+=1)}for(r.index[0]=.5>a?i:i+1,r.index[1]=.5>l?s:s+1,r.uv[0]=n/e[0],r.uv[1]=o/e[1],m=0;3>m;++m)r.dataCoordinate[m]=this._field[m].get(r.index[0],r.index[1]);return r},j.update=function(t){t=t||{},this.dirty=!0,\"contourWidth\"in t&&(this.contourWidth=c(t.contourWidth,Number)),\"showContour\"in t&&(this.showContour=c(t.showContour,Boolean)),\"showSurface\"in t&&(this.showSurface=!!t.showSurface),\"contourTint\"in t&&(this.contourTint=c(t.contourTint,Boolean)),\"contourColor\"in t&&(this.contourColor=f(t.contourColor)),\"contourProject\"in t&&(this.contourProject=c(t.contourProject,function(t){return c(t,Boolean)})),\"surfaceProject\"in t&&(this.surfaceProject=t.surfaceProject),\"dynamicColor\"in t&&(this.dynamicColor=f(t.dynamicColor)),\"dynamicTint\"in t&&(this.dynamicTint=c(t.dynamicTint,Number)),\"dynamicWidth\"in t&&(this.dynamicWidth=c(t.dynamicWidth,Number)),\"opacity\"in t&&(this.opacity=t.opacity),\"colorBounds\"in t&&(this.colorBounds=t.colorBounds);var e=t.field||t.coords&&t.coords[2]||null,r=!1;if(e||(e=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),\"field\"in t||\"coords\"in t){var n=(e.shape[0]+2)*(e.shape[1]+2);n>this._field[2].data.length&&(m.freeFloat(this._field[2].data),this._field[2].data=m.mallocFloat(d.nextPow2(n))),this._field[2]=_(this._field[2].data,[e.shape[0]+2,e.shape[1]+2]),l(this._field[2],e),this.shape=e.shape.slice();for(var a=this.shape,o=0;2>o;++o)this._field[2].size>this._field[o].data.length&&(m.freeFloat(this._field[o].data),this._field[o].data=m.mallocFloat(this._field[2].size)),this._field[o]=_(this._field[o].data,[a[0]+2,a[1]+2]);if(t.coords){var s=t.coords;if(!Array.isArray(s)||3!==s.length)throw new Error(\"gl-surface: invalid coordinates for x/y\");for(o=0;2>o;++o){var u=s[o];for(y=0;2>y;++y)if(u.shape[y]!==a[y])throw new Error(\"gl-surface: coords have incorrect shape\");l(this._field[o],u)}}else if(t.ticks){var h=t.ticks;if(!Array.isArray(h)||2!==h.length)throw new Error(\"gl-surface: invalid ticks\");for(o=0;2>o;++o){var p=h[o];if((Array.isArray(p)||p.length)&&(p=_(p)),p.shape[0]!==a[o])throw new Error(\"gl-surface: invalid tick length\");var g=_(p.data,a);g.stride[o]=p.stride[0],g.stride[1^o]=0,l(this._field[o],g)}}else{for(o=0;2>o;++o){var v=[0,0];v[o]=1,this._field[o]=_(this._field[o].data,[a[0]+2,a[1]+2],v,0)}this._field[0].set(0,0,0);for(var y=0;yo;++o)T(x.pick(o),b[o],\"mirror\");var k=_(m.mallocFloat(3*b[2].size),[a[0]+2,a[1]+2,3]);for(o=0;oI?(I=Math.max(Math.abs(z),Math.abs(P),Math.abs(R)),1e-8>I?(R=1,P=z=0,I=1):I=1/I):I=1/Math.sqrt(I),k.set(o,y,0,z*I),k.set(o,y,1,P*I),k.set(o,y,2,R*I)}m.free(x.data);var N=[1/0,1/0,1/0],j=[-(1/0),-(1/0),-(1/0)],F=1/0,D=-(1/0),B=(a[0]-1)*(a[1]-1)*6,U=m.mallocFloat(d.nextPow2(10*B)),V=0,q=0;for(o=0;oH;++H)for(var G=0;2>G;++G)for(var Y=0;3>Y;++Y){var X=this._field[Y].get(1+o+H,1+y+G);if(isNaN(X)||!isFinite(X))continue t}for(Y=0;6>Y;++Y){var W=o+O[Y][0],Z=y+O[Y][1],K=this._field[0].get(W+1,Z+1),$=this._field[1].get(W+1,Z+1);X=this._field[2].get(W+1,Z+1);var Q=X;z=k.get(W+1,Z+1,0),P=k.get(W+1,Z+1,1),R=k.get(W+1,Z+1,2),t.intensity&&(Q=t.intensity.get(W,Z)),U[V++]=W,U[V++]=Z,U[V++]=K,U[V++]=$,U[V++]=X,U[V++]=0,U[V++]=Q,U[V++]=z,U[V++]=P,U[V++]=R,N[0]=Math.min(N[0],K),N[1]=Math.min(N[1],$),N[2]=Math.min(N[2],X),F=Math.min(F,Q),j[0]=Math.max(j[0],K),j[1]=Math.max(j[1],$),j[2]=Math.max(j[2],X),D=Math.max(D,Q),q+=1}}for(t.intensityBounds&&(F=+t.intensityBounds[0],D=+t.intensityBounds[1]),o=6;V>o;o+=10)U[o]=(U[o]-F)/(D-F);this._vertexCount=q,this._coordinateBuffer.update(U.subarray(0,V)),m.freeFloat(U),m.free(k.data),this.bounds=[N,j],this.intensity=t.intensity||this._field[2],this.intensityBounds[0]===F&&this.intensityBounds[1]===D||(r=!0),this.intensityBounds=[F,D]}if(\"levels\"in t){var J=t.levels;for(J=Array.isArray(J[0])?J.slice():[[],[],J],o=0;3>o;++o)J[o]=J[o].slice(),J.sort(function(t,e){return t-e});t:for(o=0;3>o;++o){if(J[o].length!==this.contourLevels[o].length){r=!0;break}for(y=0;yet;++et){J=this.contourLevels[et];var rt=[],nt=[],it=[0,0,0];for(o=0;oY;++Y){var st=at.positions[ot[Y]],lt=st[0],ct=0|Math.floor(lt),ut=lt-ct,ft=st[1],ht=0|Math.floor(ft),dt=ft-ht,pt=!1;\n", + "e:for(var gt=0;3>gt;++gt){it[gt]=0;var vt=(et+gt+1)%3;for(H=0;2>H;++H){var mt=H?ut:1-ut;for(W=0|Math.min(Math.max(ct+H,0),a[0]),G=0;2>G;++G){var yt=G?dt:1-dt;if(Z=0|Math.min(Math.max(ht+G,0),a[1]),X=2>gt?this._field[vt].get(W,Z):(this.intensity.get(W,Z)-this.intensityBounds[0])/(this.intensityBounds[1]-this.intensityBounds[0]),!isFinite(X)||isNaN(X)){pt=!0;break e}var bt=mt*yt;it[gt]+=bt*X}}}if(pt){if(Y>0){for(var xt=0;5>xt;++xt)tt.pop();q-=1}continue t}tt.push(it[0],it[1],st[0],st[1],it[2]),q+=1}}nt.push(q)}this._contourOffsets[et]=rt,this._contourCounts[et]=nt}var _t=m.mallocFloat(tt.length);for(o=0;ot;++t)m.freeFloat(this._field[t].data)},j.highlight=function(t){if(!t)return this._dynamicCounts=[0,0,0],this.dyanamicLevel=[NaN,NaN,NaN],void(this.highlightLevel=[-1,-1,-1]);for(var e=0;3>e;++e)this.enableHighlight[e]?this.highlightLevel[e]=t.level[e]:this.highlightLevel[e]=-1;var r;if(r=this.snapToData?t.dataCoordinate:t.position,this.enableDynamic[0]&&r[0]!==this.dynamicLevel[0]||this.enableDynamic[1]&&r[1]!==this.dynamicLevel[1]||this.enableDynamic[2]&&r[2]!==this.dynamicLevel[2]){for(var n=0,i=this.shape,a=m.mallocFloat(12*i[0]*i[1]),o=0;3>o;++o)if(this.enableDynamic[o]){this.dynamicLevel[o]=r[o];var s=(o+1)%3,l=(o+2)%3,c=this._field[o],u=this._field[s],f=this._field[l],h=(this.intensity,w(c,r[o])),d=h.cells,p=h.positions;for(this._dynamicOffsets[o]=n,e=0;ev;++v){var y=p[g[v]],b=+y[0],x=0|b,_=0|Math.min(x+1,i[0]),k=b-x,A=1-k,M=+y[1],T=0|M,E=0|Math.min(T+1,i[1]),L=M-T,S=1-L,C=A*S,z=A*L,P=k*S,R=k*L,O=C*u.get(x,T)+z*u.get(x,E)+P*u.get(_,T)+R*u.get(_,E),I=C*f.get(x,T)+z*f.get(x,E)+P*f.get(_,T)+R*f.get(_,E);if(isNaN(O)||isNaN(I)){v&&(n-=1);break}a[2*n+0]=O,a[2*n+1]=I,n+=1}this._dynamicCounts[o]=n-this._dynamicOffsets[o]}else this.dynamicLevel[o]=NaN,this._dynamicCounts[o]=0;this._dynamicBuffer.update(a.subarray(0,2*n)),m.freeFloat(a)}}},{\"./lib/shaders\":216,\"binary-search-bounds\":217,\"bit-twiddle\":50,colormap:100,\"gl-buffer\":118,\"gl-mat4/invert\":137,\"gl-mat4/multiply\":139,\"gl-texture2d\":222,\"gl-vao\":226,ndarray:253,\"ndarray-gradient\":218,\"ndarray-ops\":252,\"ndarray-pack\":219,\"surface-nets\":272,\"typedarray-pool\":278}],222:[function(t,e,r){\"use strict\";function n(t){v=[t.LINEAR,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_NEAREST],m=[t.NEAREST,t.LINEAR,t.NEAREST_MIPMAP_NEAREST,t.NEAREST_MIPMAP_LINEAR,t.LINEAR_MIPMAP_NEAREST,t.LINEAR_MIPMAP_LINEAR],y=[t.REPEAT,t.CLAMP_TO_EDGE,t.MIRRORED_REPEAT]}function i(t,e,r){var n=t.gl,i=n.getParameter(n.MAX_TEXTURE_SIZE);if(0>e||e>i||0>r||r>i)throw new Error(\"gl-texture2d: Invalid texture size\");return t._shape=[e,r],t.bind(),n.texImage2D(n.TEXTURE_2D,0,t.format,e,r,0,t.format,t.type,null),t._mipLevels=[0],t}function a(t,e,r,n,i,a){this.gl=t,this.handle=e,this.format=i,this.type=a,this._shape=[r,n],this._mipLevels=[0],this._magFilter=t.NEAREST,this._minFilter=t.NEAREST,this._wrapS=t.CLAMP_TO_EDGE,this._wrapT=t.CLAMP_TO_EDGE,this._anisoSamples=1;var o=this,s=[this._wrapS,this._wrapT];Object.defineProperties(s,[{get:function(){return o._wrapS},set:function(t){return o.wrapS=t}},{get:function(){return o._wrapT},set:function(t){return o.wrapT=t}}]),this._wrapVector=s;var l=[this._shape[0],this._shape[1]];Object.defineProperties(l,[{get:function(){return o._shape[0]},set:function(t){return o.width=t}},{get:function(){return o._shape[1]},set:function(t){return o.height=t}}]),this._shapeVector=l}function o(t,e){return 3===t.length?1===e[2]&&e[1]===t[0]*t[2]&&e[0]===t[2]:1===e[0]&&e[1]===t[0]}function s(t,e,r,n,i,a,s,l){var c=l.dtype,u=l.shape.slice();if(u.length<2||u.length>3)throw new Error(\"gl-texture2d: Invalid ndarray, must be 2d or 3d\");var f=0,h=0,v=o(u,l.stride.slice());\"float32\"===c?f=t.FLOAT:\"float64\"===c?(f=t.FLOAT,v=!1,c=\"float32\"):\"uint8\"===c?f=t.UNSIGNED_BYTE:(f=t.UNSIGNED_BYTE,v=!1,c=\"uint8\");var m=1;if(2===u.length)h=t.LUMINANCE,u=[u[0],u[1],1],l=d(l.data,u,[l.stride[0],l.stride[1],1],l.offset);else{if(3!==u.length)throw new Error(\"gl-texture2d: Invalid shape for texture\");if(1===u[2])h=t.ALPHA;else if(2===u[2])h=t.LUMINANCE_ALPHA;else if(3===u[2])h=t.RGB;else{if(4!==u[2])throw new Error(\"gl-texture2d: Invalid shape for pixel coords\");h=t.RGBA}m=u[2]}if(h!==t.LUMINANCE&&h!==t.ALPHA||i!==t.LUMINANCE&&i!==t.ALPHA||(h=i),h!==i)throw new Error(\"gl-texture2d: Incompatible texture format for setPixels\");var y=l.size,x=s.indexOf(n)<0;if(x&&s.push(n),f===a&&v)0===l.offset&&l.data.length===y?x?t.texImage2D(t.TEXTURE_2D,n,i,u[0],u[1],0,i,a,l.data):t.texSubImage2D(t.TEXTURE_2D,n,e,r,u[0],u[1],i,a,l.data):x?t.texImage2D(t.TEXTURE_2D,n,i,u[0],u[1],0,i,a,l.data.subarray(l.offset,l.offset+y)):t.texSubImage2D(t.TEXTURE_2D,n,e,r,u[0],u[1],i,a,l.data.subarray(l.offset,l.offset+y));else{var _;_=a===t.FLOAT?g.mallocFloat32(y):g.mallocUint8(y);var w=d(_,u,[u[2],u[2]*u[0],1]);f===t.FLOAT&&a===t.UNSIGNED_BYTE?b(w,l):p.assign(w,l),x?t.texImage2D(t.TEXTURE_2D,n,i,u[0],u[1],0,i,a,_.subarray(0,y)):t.texSubImage2D(t.TEXTURE_2D,n,e,r,u[0],u[1],i,a,_.subarray(0,y)),a===t.FLOAT?g.freeFloat32(_):g.freeUint8(_)}}function l(t){var e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}function c(t,e,r,n,i){var o=t.getParameter(t.MAX_TEXTURE_SIZE);if(0>e||e>o||0>r||r>o)throw new Error(\"gl-texture2d: Invalid texture shape\");if(i===t.FLOAT&&!t.getExtension(\"OES_texture_float\"))throw new Error(\"gl-texture2d: Floating point textures not supported on this platform\");var s=l(t);return t.texImage2D(t.TEXTURE_2D,0,n,e,r,0,n,i,null),new a(t,s,e,r,n,i)}function u(t,e,r,n){var i=l(t);return t.texImage2D(t.TEXTURE_2D,0,r,r,n,e),new a(t,i,0|e.width,0|e.height,r,n)}function f(t,e){var r=e.dtype,n=e.shape.slice(),i=t.getParameter(t.MAX_TEXTURE_SIZE);if(n[0]<0||n[0]>i||n[1]<0||n[1]>i)throw new Error(\"gl-texture2d: Invalid texture size\");var s=o(n,e.stride.slice()),c=0;\"float32\"===r?c=t.FLOAT:\"float64\"===r?(c=t.FLOAT,s=!1,r=\"float32\"):\"uint8\"===r?c=t.UNSIGNED_BYTE:(c=t.UNSIGNED_BYTE,s=!1,r=\"uint8\");var u=0;if(2===n.length)u=t.LUMINANCE,n=[n[0],n[1],1],e=d(e.data,n,[e.stride[0],e.stride[1],1],e.offset);else{if(3!==n.length)throw new Error(\"gl-texture2d: Invalid shape for texture\");if(1===n[2])u=t.ALPHA;else if(2===n[2])u=t.LUMINANCE_ALPHA;else if(3===n[2])u=t.RGB;else{if(4!==n[2])throw new Error(\"gl-texture2d: Invalid shape for pixel coords\");u=t.RGBA}}c!==t.FLOAT||t.getExtension(\"OES_texture_float\")||(c=t.UNSIGNED_BYTE,s=!1);var f,h,v=e.size;if(s)f=0===e.offset&&e.data.length===v?e.data:e.data.subarray(e.offset,e.offset+v);else{var m=[n[2],n[2]*n[0],1];h=g.malloc(v,r);var y=d(h,n,m,0);\"float32\"!==r&&\"float64\"!==r||c!==t.UNSIGNED_BYTE?p.assign(y,e):b(y,e),f=h.subarray(0,v)}var x=l(t);return t.texImage2D(t.TEXTURE_2D,0,u,n[0],n[1],0,u,c,f),s||g.free(h),new a(t,x,n[0],n[1],u,c)}function h(t){if(arguments.length<=1)throw new Error(\"gl-texture2d: Missing arguments for texture2d constructor\");if(v||n(t),\"number\"==typeof arguments[1])return c(t,arguments[1],arguments[2],arguments[3]||t.RGBA,arguments[4]||t.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return c(t,0|arguments[1][0],0|arguments[1][1],arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if(\"object\"==typeof arguments[1]){var e=arguments[1];if(e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof HTMLVideoElement||e instanceof ImageData)return u(t,e,arguments[2]||t.RGBA,arguments[3]||t.UNSIGNED_BYTE);if(e.shape&&e.data&&e.stride)return f(t,e)}throw new Error(\"gl-texture2d: Invalid arguments for texture2d constructor\")}var d=t(\"ndarray\"),p=t(\"ndarray-ops\"),g=t(\"typedarray-pool\");e.exports=h;var v=null,m=null,y=null,b=function(t,e){p.muls(t,e,255)},x=a.prototype;Object.defineProperties(x,{minFilter:{get:function(){return this._minFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&v.indexOf(t)>=0&&(e.getExtension(\"OES_texture_float_linear\")||(t=e.NEAREST)),m.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown filter mode \"+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),this._minFilter=t}},magFilter:{get:function(){return this._magFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&v.indexOf(t)>=0&&(e.getExtension(\"OES_texture_float_linear\")||(t=e.NEAREST)),m.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown filter mode \"+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),this._magFilter=t}},mipSamples:{get:function(){return this._anisoSamples},set:function(t){var e=this._anisoSamples;if(this._anisoSamples=0|Math.max(t,1),e!==this._anisoSamples){var r=gl.getExtension(\"EXT_texture_filter_anisotropic\");r&&this.gl.texParameterf(this.gl.TEXTURE_2D,r.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(t){if(this.bind(),y.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown wrap mode \"+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}},wrapT:{get:function(){return this._wrapT},set:function(t){if(this.bind(),y.indexOf(t)<0)throw new Error(\"gl-texture2d: Unknown wrap mode \"+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}},wrap:{get:function(){return this._wrapVector},set:function(t){if(Array.isArray(t)||(t=[t,t]),2!==t.length)throw new Error(\"gl-texture2d: Must specify wrap mode for rows and columns\");for(var e=0;2>e;++e)if(y.indexOf(t[e])<0)throw new Error(\"gl-texture2d: Unknown wrap mode \"+t);this._wrapS=t[0],this._wrapT=t[1];var r=this.gl;return this.bind(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,this._wrapS),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,this._wrapT),t}},shape:{get:function(){return this._shapeVector},set:function(t){if(Array.isArray(t)){if(2!==t.length)throw new Error(\"gl-texture2d: Invalid texture shape\")}else t=[0|t,0|t];return i(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return t=0|t,i(this,t,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t=0|t,i(this,this._shape[0],t),t}}}),x.bind=function(t){var e=this.gl;return void 0!==t&&e.activeTexture(e.TEXTURE0+(0|t)),e.bindTexture(e.TEXTURE_2D,this.handle),void 0!==t?0|t:e.getParameter(e.ACTIVE_TEXTURE)-e.TEXTURE0},x.dispose=function(){this.gl.deleteTexture(this.handle)},x.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var t=Math.min(this._shape[0],this._shape[1]),e=0;t>0;++e,t>>>=1)this._mipLevels.indexOf(e)<0&&this._mipLevels.push(e)},x.setPixels=function(t,e,r,n){var i=this.gl;if(this.bind(),Array.isArray(e)?(n=r,r=0|e[1],e=0|e[0]):(e=e||0,r=r||0),n=n||0,t instanceof HTMLCanvasElement||t instanceof ImageData||t instanceof HTMLImageElement||t instanceof HTMLVideoElement){var a=this._mipLevels.indexOf(n)<0;a?(i.texImage2D(i.TEXTURE_2D,0,this.format,this.format,this.type,t),this._mipLevels.push(n)):i.texSubImage2D(i.TEXTURE_2D,n,e,r,this.format,this.type,t)}else{if(!(t.shape&&t.stride&&t.data))throw new Error(\"gl-texture2d: Unsupported data type\");if(t.shape.length<2||e+t.shape[1]>this._shape[1]>>>n||r+t.shape[0]>this._shape[0]>>>n||0>e||0>r)throw new Error(\"gl-texture2d: Texture dimensions are out of bounds\");s(i,e,r,n,this.format,this.type,this._mipLevels,t)}}},{ndarray:253,\"ndarray-ops\":252,\"typedarray-pool\":278}],223:[function(t,e,r){\"use strict\";function n(t,e,r){e?e.bind():t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null);var n=0|t.getParameter(t.MAX_VERTEX_ATTRIBS);if(r){if(r.length>n)throw new Error(\"gl-vao: Too many vertex attributes\");for(var i=0;ii;++i)t.disableVertexAttribArray(i)}else{t.bindBuffer(t.ARRAY_BUFFER,null);for(var i=0;n>i;++i)t.disableVertexAttribArray(i)}}e.exports=n},{}],224:[function(t,e,r){\"use strict\";function n(t){this.gl=t,this._elements=null,this._attributes=null,this._elementsType=t.UNSIGNED_SHORT}function i(t){return new n(t)}var a=t(\"./do-bind.js\");n.prototype.bind=function(){a(this.gl,this._elements,this._attributes)},n.prototype.update=function(t,e,r){this._elements=e,this._attributes=t,this._elementsType=r||this.gl.UNSIGNED_SHORT},n.prototype.dispose=function(){},n.prototype.unbind=function(){},n.prototype.draw=function(t,e,r){r=r||0;var n=this.gl;this._elements?n.drawElements(t,e,this._elementsType,r):n.drawArrays(t,r,e)},e.exports=i},{\"./do-bind.js\":223}],225:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){this.location=t,this.dimension=e,this.a=r,this.b=n,this.c=i,this.d=a}function i(t,e,r){this.gl=t,this._ext=e,this.handle=r,this._attribs=[],this._useElements=!1,this._elementsType=t.UNSIGNED_SHORT}function a(t,e){return new i(t,e,e.createVertexArrayOES())}var o=t(\"./do-bind.js\");n.prototype.bind=function(t){switch(this.dimension){case 1:t.vertexAttrib1f(this.location,this.a);break;case 2:t.vertexAttrib2f(this.location,this.a,this.b);break;case 3:t.vertexAttrib3f(this.location,this.a,this.b,this.c);break;case 4:t.vertexAttrib4f(this.location,this.a,this.b,this.c,this.d)}},i.prototype.bind=function(){this._ext.bindVertexArrayOES(this.handle);for(var t=0;tF;){switch(e=F,B){case f:F=L();break;case h:F=E();break;case d:F=T();break;case p:F=S();break;case g:F=P();break;case w:F=z();break;case v:F=R();break;case u:F=O();break;case x:F=M();break;case c:F=A()}if(e!==F)switch(W[e]){case\"\\n\":H=0,++q;break;default:++H}}return D+=F,W=W.slice(F),V}function n(t){return U.length&&e(U.join(\"\")),B=_,e(\"(eof)\"),V}function A(){return U=U.length?[]:U,\"/\"===N&&\"*\"===I?(G=D+F-1,B=f,N=I,F+1):\"/\"===N&&\"/\"===I?(G=D+F-1,B=h,N=I,F+1):\"#\"===I?(B=d,G=D+F,F):/\\s/.test(I)?(B=x,G=D+F,F):(Y=/\\d/.test(I),X=/[^\\w_]/.test(I),G=D+F,B=Y?g:X?p:u,F)}function M(){return/[^\\s]/g.test(I)?(e(U.join(\"\")),B=c,F):(U.push(I),N=I,F+1)}function T(){return\"\\n\"===I&&\"\\\\\"!==N?(e(U.join(\"\")),B=c,F):(U.push(I),N=I,F+1)}function E(){return T()}function L(){return\"/\"===I&&\"*\"===N?(U.push(I),e(U.join(\"\")),B=c,F+1):(U.push(I),N=I,F+1)}function S(){if(\".\"===N&&/\\d/.test(I))return B=v,F;if(\"/\"===N&&\"*\"===I)return B=f,F;if(\"/\"===N&&\"/\"===I)return B=h,F;if(\".\"===I&&U.length){for(;C(U););return B=v,F}if(\";\"===I||\")\"===I||\"(\"===I){if(U.length)for(;C(U););return e(I),B=c,F+1}var t=2===U.length&&\"=\"!==I;if(/[\\w_\\d\\s]/.test(I)||t){for(;C(U););return B=c,F}return U.push(I),N=I,F+1}function C(t){for(var r,n,i=0;;){if(r=a.indexOf(t.slice(0,t.length+i).join(\"\")),n=a[r],-1===r){if(i--+t.length>0)continue;n=t.slice(0,1).join(\"\")}return e(n),G+=n.length,U=U.slice(n.length),U.length}}function z(){return/[^a-fA-F0-9]/.test(I)?(e(U.join(\"\")),B=c,F):(U.push(I),N=I,F+1)}function P(){return\".\"===I?(U.push(I),B=v,N=I,F+1):/[eE]/.test(I)?(U.push(I),B=v,N=I,F+1):\"x\"===I&&1===U.length&&\"0\"===U[0]?(B=w,U.push(I),N=I,F+1):/[^\\d]/.test(I)?(e(U.join(\"\")),B=c,F):(U.push(I),N=I,F+1)}function R(){return\"f\"===I&&(U.push(I),N=I,F+=1),/[eE]/.test(I)?(U.push(I),N=I,F+1):\"-\"===I&&/[eE]/.test(N)?(U.push(I),N=I,F+1):/[^\\d]/.test(I)?(e(U.join(\"\")),B=c,F):(U.push(I),N=I,F+1)}function O(){if(/[^\\d\\w_]/.test(I)){var t=U.join(\"\");return B=K.indexOf(t)>-1?b:Z.indexOf(t)>-1?y:m,e(U.join(\"\")),B=c,F}return U.push(I),N=I,F+1}var I,N,j,F=0,D=0,B=c,U=[],V=[],q=1,H=0,G=0,Y=!1,X=!1,W=\"\";t=t||{};var Z=o,K=i;return\"300 es\"===t.version&&(Z=l,K=s),function(t){return V=[],null!==t?r(t):n()}}e.exports=n;var i=t(\"./lib/literals\"),a=t(\"./lib/operators\"),o=t(\"./lib/builtins\"),s=t(\"./lib/literals-300es\"),l=t(\"./lib/builtins-300es\"),c=999,u=9999,f=0,h=1,d=2,p=3,g=4,v=5,m=6,y=7,b=8,x=9,_=10,w=11,k=[\"block-comment\",\"line-comment\",\"preprocessor\",\"operator\",\"integer\",\"float\",\"ident\",\"builtin\",\"keyword\",\"whitespace\",\"eof\",\"integer\"]},{\"./lib/builtins\":230,\"./lib/builtins-300es\":229,\"./lib/literals\":232,\"./lib/literals-300es\":231,\"./lib/operators\":233}],229:[function(t,e,r){var n=t(\"./builtins\");n=n.slice().filter(function(t){return!/^(gl\\_|texture)/.test(t)}),e.exports=n.concat([\"gl_VertexID\",\"gl_InstanceID\",\"gl_Position\",\"gl_PointSize\",\"gl_FragCoord\",\"gl_FrontFacing\",\"gl_FragDepth\",\"gl_PointCoord\",\"gl_MaxVertexAttribs\",\"gl_MaxVertexUniformVectors\",\"gl_MaxVertexOutputVectors\",\"gl_MaxFragmentInputVectors\",\"gl_MaxVertexTextureImageUnits\",\"gl_MaxCombinedTextureImageUnits\",\"gl_MaxTextureImageUnits\",\"gl_MaxFragmentUniformVectors\",\"gl_MaxDrawBuffers\",\"gl_MinProgramTexelOffset\",\"gl_MaxProgramTexelOffset\",\"gl_DepthRangeParameters\",\"gl_DepthRange\",\"trunc\",\"round\",\"roundEven\",\"isnan\",\"isinf\",\"floatBitsToInt\",\"floatBitsToUint\",\"intBitsToFloat\",\"uintBitsToFloat\",\"packSnorm2x16\",\"unpackSnorm2x16\",\"packUnorm2x16\",\"unpackUnorm2x16\",\"packHalf2x16\",\"unpackHalf2x16\",\"outerProduct\",\"transpose\",\"determinant\",\"inverse\",\"texture\",\"textureSize\",\"textureProj\",\"textureLod\",\"textureOffset\",\"texelFetch\",\"texelFetchOffset\",\"textureProjOffset\",\"textureLodOffset\",\"textureProjLod\",\"textureProjLodOffset\",\"textureGrad\",\"textureGradOffset\",\"textureProjGrad\",\"textureProjGradOffset\"])},{\"./builtins\":230}],230:[function(t,e,r){e.exports=[\"abs\",\"acos\",\"all\",\"any\",\"asin\",\"atan\",\"ceil\",\"clamp\",\"cos\",\"cross\",\"dFdx\",\"dFdy\",\"degrees\",\"distance\",\"dot\",\"equal\",\"exp\",\"exp2\",\"faceforward\",\"floor\",\"fract\",\"gl_BackColor\",\"gl_BackLightModelProduct\",\"gl_BackLightProduct\",\"gl_BackMaterial\",\"gl_BackSecondaryColor\",\"gl_ClipPlane\",\"gl_ClipVertex\",\"gl_Color\",\"gl_DepthRange\",\"gl_DepthRangeParameters\",\"gl_EyePlaneQ\",\"gl_EyePlaneR\",\"gl_EyePlaneS\",\"gl_EyePlaneT\",\"gl_Fog\",\"gl_FogCoord\",\"gl_FogFragCoord\",\"gl_FogParameters\",\"gl_FragColor\",\"gl_FragCoord\",\"gl_FragData\",\"gl_FragDepth\",\"gl_FragDepthEXT\",\"gl_FrontColor\",\"gl_FrontFacing\",\"gl_FrontLightModelProduct\",\"gl_FrontLightProduct\",\"gl_FrontMaterial\",\"gl_FrontSecondaryColor\",\"gl_LightModel\",\"gl_LightModelParameters\",\"gl_LightModelProducts\",\"gl_LightProducts\",\"gl_LightSource\",\"gl_LightSourceParameters\",\"gl_MaterialParameters\",\"gl_MaxClipPlanes\",\"gl_MaxCombinedTextureImageUnits\",\"gl_MaxDrawBuffers\",\"gl_MaxFragmentUniformComponents\",\"gl_MaxLights\",\"gl_MaxTextureCoords\",\"gl_MaxTextureImageUnits\",\"gl_MaxTextureUnits\",\"gl_MaxVaryingFloats\",\"gl_MaxVertexAttribs\",\"gl_MaxVertexTextureImageUnits\",\"gl_MaxVertexUniformComponents\",\"gl_ModelViewMatrix\",\"gl_ModelViewMatrixInverse\",\"gl_ModelViewMatrixInverseTranspose\",\"gl_ModelViewMatrixTranspose\",\"gl_ModelViewProjectionMatrix\",\"gl_ModelViewProjectionMatrixInverse\",\"gl_ModelViewProjectionMatrixInverseTranspose\",\"gl_ModelViewProjectionMatrixTranspose\",\"gl_MultiTexCoord0\",\"gl_MultiTexCoord1\",\"gl_MultiTexCoord2\",\"gl_MultiTexCoord3\",\"gl_MultiTexCoord4\",\"gl_MultiTexCoord5\",\"gl_MultiTexCoord6\",\"gl_MultiTexCoord7\",\"gl_Normal\",\"gl_NormalMatrix\",\"gl_NormalScale\",\"gl_ObjectPlaneQ\",\"gl_ObjectPlaneR\",\"gl_ObjectPlaneS\",\"gl_ObjectPlaneT\",\"gl_Point\",\"gl_PointCoord\",\"gl_PointParameters\",\"gl_PointSize\",\"gl_Position\",\"gl_ProjectionMatrix\",\"gl_ProjectionMatrixInverse\",\"gl_ProjectionMatrixInverseTranspose\",\"gl_ProjectionMatrixTranspose\",\"gl_SecondaryColor\",\"gl_TexCoord\",\"gl_TextureEnvColor\",\"gl_TextureMatrix\",\"gl_TextureMatrixInverse\",\"gl_TextureMatrixInverseTranspose\",\"gl_TextureMatrixTranspose\",\"gl_Vertex\",\"greaterThan\",\"greaterThanEqual\",\"inversesqrt\",\"length\",\"lessThan\",\"lessThanEqual\",\"log\",\"log2\",\"matrixCompMult\",\"max\",\"min\",\"mix\",\"mod\",\"normalize\",\"not\",\"notEqual\",\"pow\",\"radians\",\"reflect\",\"refract\",\"sign\",\"sin\",\"smoothstep\",\"sqrt\",\"step\",\"tan\",\"texture2D\",\"texture2DLod\",\"texture2DProj\",\"texture2DProjLod\",\"textureCube\",\"textureCubeLod\",\"texture2DLodEXT\",\"texture2DProjLodEXT\",\"textureCubeLodEXT\",\"texture2DGradEXT\",\"texture2DProjGradEXT\",\"textureCubeGradEXT\"]},{}],231:[function(t,e,r){var n=t(\"./literals\");e.exports=n.slice().concat([\"layout\",\"centroid\",\"smooth\",\"case\",\"mat2x2\",\"mat2x3\",\"mat2x4\",\"mat3x2\",\"mat3x3\",\"mat3x4\",\"mat4x2\",\"mat4x3\",\"mat4x4\",\"uint\",\"uvec2\",\"uvec3\",\"uvec4\",\"samplerCubeShadow\",\"sampler2DArray\",\"sampler2DArrayShadow\",\"isampler2D\",\"isampler3D\",\"isamplerCube\",\"isampler2DArray\",\"usampler2D\",\"usampler3D\",\"usamplerCube\",\"usampler2DArray\",\"coherent\",\"restrict\",\"readonly\",\"writeonly\",\"resource\",\"atomic_uint\",\"noperspective\",\"patch\",\"sample\",\"subroutine\",\"common\",\"partition\",\"active\",\"filter\",\"image1D\",\"image2D\",\"image3D\",\"imageCube\",\"iimage1D\",\"iimage2D\",\"iimage3D\",\"iimageCube\",\"uimage1D\",\"uimage2D\",\"uimage3D\",\"uimageCube\",\"image1DArray\",\"image2DArray\",\"iimage1DArray\",\"iimage2DArray\",\"uimage1DArray\",\"uimage2DArray\",\"image1DShadow\",\"image2DShadow\",\"image1DArrayShadow\",\"image2DArrayShadow\",\"imageBuffer\",\"iimageBuffer\",\"uimageBuffer\",\"sampler1DArray\",\"sampler1DArrayShadow\",\"isampler1D\",\"isampler1DArray\",\"usampler1D\",\"usampler1DArray\",\"isampler2DRect\",\"usampler2DRect\",\"samplerBuffer\",\"isamplerBuffer\",\"usamplerBuffer\",\"sampler2DMS\",\"isampler2DMS\",\"usampler2DMS\",\"sampler2DMSArray\",\"isampler2DMSArray\",\"usampler2DMSArray\"])},{\"./literals\":232}],232:[function(t,e,r){e.exports=[\"precision\",\"highp\",\"mediump\",\"lowp\",\"attribute\",\"const\",\"uniform\",\"varying\",\"break\",\"continue\",\"do\",\"for\",\"while\",\"if\",\"else\",\"in\",\"out\",\"inout\",\"float\",\"int\",\"void\",\"bool\",\"true\",\"false\",\"discard\",\"return\",\"mat2\",\"mat3\",\"mat4\",\"vec2\",\"vec3\",\"vec4\",\"ivec2\",\"ivec3\",\"ivec4\",\"bvec2\",\"bvec3\",\"bvec4\",\"sampler1D\",\"sampler2D\",\"sampler3D\",\"samplerCube\",\"sampler1DShadow\",\"sampler2DShadow\",\"struct\",\"asm\",\"class\",\"union\",\"enum\",\"typedef\",\"template\",\"this\",\"packed\",\"goto\",\"switch\",\"default\",\"inline\",\"noinline\",\"volatile\",\"public\",\"static\",\"extern\",\"external\",\"interface\",\"long\",\"short\",\"double\",\"half\",\"fixed\",\"unsigned\",\"input\",\"output\",\"hvec2\",\"hvec3\",\"hvec4\",\"dvec2\",\"dvec3\",\"dvec4\",\"fvec2\",\"fvec3\",\"fvec4\",\"sampler2DRect\",\"sampler3DRect\",\"sampler2DRectShadow\",\"sizeof\",\"cast\",\"namespace\",\"using\"]},{}],233:[function(t,e,r){e.exports=[\"<<=\",\">>=\",\"++\",\"--\",\"<<\",\">>\",\"<=\",\">=\",\"==\",\"!=\",\"&&\",\"||\",\"+=\",\"-=\",\"*=\",\"/=\",\"%=\",\"&=\",\"^^\",\"^=\",\"|=\",\"(\",\")\",\"[\",\"]\",\".\",\"!\",\"~\",\"*\",\"/\",\"%\",\"+\",\"-\",\"<\",\">\",\"&\",\"^\",\"|\",\"?\",\":\",\"=\",\",\",\";\",\"{\",\"}\"]},{}],234:[function(t,e,r){function n(t,e){var r=i(e),n=[];return n=n.concat(r(t)),n=n.concat(r(null))}var i=t(\"./index\");e.exports=n},{\"./index\":228}],235:[function(t,e,r){\"use strict\";function n(t,e,r){this.vertices=t,this.adjacent=e,this.boundary=r,this.lastVisited=-1}function i(t,e,r){this.vertices=t,this.cell=e,this.index=r}function a(t,e){return u(t.vertices,e.vertices)}function o(t){for(var e=[\"function orient(){var tuple=this.tuple;return test(\"],r=0;t>=r;++r)r>0&&e.push(\",\"),e.push(\"tuple[\",r,\"]\");e.push(\")}return orient\");var n=new Function(\"test\",e.join(\"\")),i=c[t+1];return i||(i=c),n(i)}function s(t,e,r){this.dimension=t,this.vertices=e,this.simplices=r,this.interior=r.filter(function(t){return!t.boundary}),this.tuple=new Array(t+1);for(var n=0;t>=n;++n)this.tuple[n]=this.vertices[n];var i=f[t];i||(i=f[t]=o(t)),this.orient=i}function l(t,e){var r=t.length;if(0===r)throw new Error(\"Must have at least d+1 points\");var i=t[0].length;if(i>=r)throw new Error(\"Must input at least d+1 points\");var a=t.slice(0,i+1),o=c.apply(void 0,a);if(0===o)throw new Error(\"Input not in general position\");for(var l=new Array(i+1),u=0;i>=u;++u)l[u]=u;0>o&&(l[0]=1,l[1]=0);for(var f=new n(l,new Array(i+1),!1),h=f.adjacent,d=new Array(i+2),u=0;i>=u;++u){for(var p=l.slice(),g=0;i>=g;++g)g===u&&(p[g]=-1);var v=p[0];p[0]=p[1],p[1]=v;var m=new n(p,new Array(i+1),!0);h[u]=m,d[u]=m}d[i+1]=f;for(var u=0;i>=u;++u)for(var p=h[u].vertices,y=h[u].adjacent,g=0;i>=g;++g){var b=p[g];if(0>b)y[g]=f;else for(var x=0;i>=x;++x)h[x].vertices.indexOf(b)<0&&(y[g]=h[x])}for(var _=new s(i,a,d),w=!!e,u=i+1;r>u;++u)_.insert(t[u],w);return _.boundary()}e.exports=l;var c=t(\"robust-orientation\"),u=t(\"simplicial-complex\").compareCells;n.prototype.flip=function(){var t=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=t;var e=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=e};var f=[],h=s.prototype;h.handleBoundaryDegeneracy=function(t,e){var r=this.dimension,n=this.vertices.length-1,i=this.tuple,a=this.vertices,o=[t];for(t.lastVisited=-n;o.length>0;){t=o.pop();for(var s=(t.vertices,t.adjacent),l=0;r>=l;++l){var c=s[l];if(c.boundary&&!(c.lastVisited<=-n)){for(var u=c.vertices,f=0;r>=f;++f){var h=u[f];0>h?i[f]=e:i[f]=a[h]}var d=this.orient();if(d>0)return c;c.lastVisited=-n,0===d&&o.push(c)}}}return null},h.walk=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,a=this.tuple,o=e?this.interior.length*Math.random()|0:this.interior.length-1,s=this.interior[o];t:for(;!s.boundary;){for(var l=s.vertices,c=s.adjacent,u=0;n>=u;++u)a[u]=i[l[u]];s.lastVisited=r;for(var u=0;n>=u;++u){var f=c[u];if(!(f.lastVisited>=r)){var h=a[u];a[u]=t;var d=this.orient();if(a[u]=h,0>d){s=f;continue t}f.boundary?f.lastVisited=-r:f.lastVisited=r}}return}return s},h.addPeaks=function(t,e){var r=this.vertices.length-1,o=this.dimension,s=this.vertices,l=this.tuple,c=this.interior,u=this.simplices,f=[e];e.lastVisited=r,e.vertices[e.vertices.indexOf(-1)]=r,e.boundary=!1,c.push(e);for(var h=[];f.length>0;){var e=f.pop(),d=e.vertices,p=e.adjacent,g=d.indexOf(r);if(!(0>g))for(var v=0;o>=v;++v)if(v!==g){var m=p[v];if(m.boundary&&!(m.lastVisited>=r)){var y=m.vertices;if(m.lastVisited!==-r){for(var b=0,x=0;o>=x;++x)y[x]<0?(b=x,l[x]=t):l[x]=s[y[x]];var _=this.orient();if(_>0){y[b]=r,m.boundary=!1,c.push(m),f.push(m),m.lastVisited=r;continue}m.lastVisited=-r}var w=m.adjacent,k=d.slice(),A=p.slice(),M=new n(k,A,!0);u.push(M);var T=w.indexOf(e);if(!(0>T)){w[T]=M,A[g]=m,k[v]=-1,A[v]=e,p[v]=M,M.flip();for(var x=0;o>=x;++x){var E=k[x];if(!(0>E||E===r)){for(var L=new Array(o-1),S=0,C=0;o>=C;++C){var z=k[C];0>z||C===x||(L[S++]=z)}h.push(new i(L,M,x))}}}}}}h.sort(a);for(var v=0;v+1O||0>I||(P.cell.adjacent[P.index]=R.cell,R.cell.adjacent[R.index]=P.cell)}},h.insert=function(t,e){var r=this.vertices;r.push(t);var n=this.walk(t,e);if(n){for(var i=this.dimension,a=this.tuple,o=0;i>=o;++o){var s=n.vertices[o];0>s?a[o]=t:a[o]=r[s]}var l=this.orient(a);0>l||(0!==l||(n=this.handleBoundaryDegeneracy(n,t)))&&this.addPeaks(t,n)}},h.boundary=function(){for(var t=this.dimension,e=[],r=this.simplices,n=r.length,i=0;n>i;++i){var a=r[i];if(a.boundary){for(var o=new Array(t),s=a.vertices,l=0,c=0,u=0;t>=u;++u)s[u]>=0?o[l++]=s[u]:c=1&u;if(c===(1&t)){var f=o[0];o[0]=o[1],o[1]=f}e.push(o)}}return e}},{\"robust-orientation\":259,\"simplicial-complex\":238}],236:[function(t,e,r){arguments[4][50][0].apply(r,arguments)},{dup:50}],237:[function(t,e,r){arguments[4][97][0].apply(r,arguments)},{dup:97}],238:[function(t,e,r){\"use strict\";\"use restrict\";function n(t){for(var e=0,r=Math.max,n=0,i=t.length;i>n;++n)e=r(e,t[n].length);return e-1}function i(t){for(var e=-1,r=Math.max,n=0,i=t.length;i>n;++n)for(var a=t[n],o=0,s=a.length;s>o;++o)e=r(e,a[o]);return e+1}function a(t){for(var e=new Array(t.length),r=0,n=t.length;n>r;++r)e[r]=t[r].slice(0);return e}function o(t,e){var r=t.length,n=t.length-e.length,i=Math.min;if(n)return n;switch(r){case 0:return 0;case 1:return t[0]-e[0];case 2:var a=t[0]+t[1]-e[0]-e[1];return a?a:i(t[0],t[1])-i(e[0],e[1]);case 3:var o=t[0]+t[1],s=e[0]+e[1];if(a=o+t[2]-(s+e[2]))return a;var l=i(t[0],t[1]),c=i(e[0],e[1]),a=i(l,t[2])-i(c,e[2]);return a?a:i(l+t[2],o)-i(c+e[2],s);default:var u=t.slice(0);u.sort();var f=e.slice(0);f.sort();for(var h=0;r>h;++h)if(n=u[h]-f[h])return n;return 0}}function s(t,e){return o(t[0],e[0])}function l(t,e){if(e){for(var r=t.length,n=new Array(r),i=0;r>i;++i)n[i]=[t[i],e[i]];n.sort(s);for(var i=0;r>i;++i)t[i]=n[i][0],e[i]=n[i][1];return t}return t.sort(o),t}function c(t){if(0===t.length)return[];for(var e=1,r=t.length,n=1;r>n;++n){var i=t[n];if(o(i,t[n-1])){if(n===e){e++;continue}t[e++]=i}}return t.length=e,t}function u(t,e){for(var r=0,n=t.length-1,i=-1;n>=r;){var a=r+n>>1,s=o(t[a],e);0>=s?(0===s&&(i=a),r=a+1):s>0&&(n=a-1)}return i}function f(t,e){for(var r=new Array(t.length),n=0,i=r.length;i>n;++n)r[n]=[];for(var a=[],n=0,s=e.length;s>n;++n)for(var l=e[n],c=l.length,f=1,h=1<f;++f){a.length=b.popCount(f);for(var d=0,p=0;c>p;++p)f&1<g))for(;;)if(r[g++].push(n),g>=t.length||0!==o(t[g],a))break}return r}function h(t,e){if(!e)return f(c(p(t,0)),t,0);for(var r=new Array(e),n=0;e>n;++n)r[n]=[];for(var n=0,i=t.length;i>n;++n)for(var a=t[n],o=0,s=a.length;s>o;++o)r[a[o]].push(n);return r}function d(t){for(var e=[],r=0,n=t.length;n>r;++r)for(var i=t[r],a=0|i.length,o=1,s=1<o;++o){for(var c=[],u=0;a>u;++u)o>>>u&1&&c.push(i[u]);e.push(c)}return l(e)}function p(t,e){if(0>e)return[];for(var r=[],n=(1<r;++r)for(var i=t[r],a=0,o=i.length;o>a;++a){for(var s=new Array(i.length-1),c=0,u=0;o>c;++c)c!==a&&(s[u++]=i[c]);e.push(s)}return l(e)}function v(t,e){for(var r=new x(e),n=0;nr;++r)e[r]=r;return e}e.exports=n},{}],240:[function(t,e,r){e.exports=function(t){return!(null==t||!(t._isBuffer||t.constructor&&\"function\"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)))}},{}],241:[function(t,e,r){\"use strict\";function n(t,e){function r(t){var e=!1;return\"altKey\"in t&&(e=e||t.altKey!==g.alt,g.alt=!!t.altKey),\"shiftKey\"in t&&(e=e||t.shiftKey!==g.shift,g.shift=!!t.shiftKey),\"ctrlKey\"in t&&(e=e||t.ctrlKey!==g.control,g.control=!!t.ctrlKey),\"metaKey\"in t&&(e=e||t.metaKey!==g.meta,g.meta=!!t.metaKey),e}function n(t,n){var a=i.x(n),o=i.y(n);\"buttons\"in n&&(t=0|n.buttons),(t!==h||a!==d||o!==p||r(n))&&(h=0|t,d=a||0,p=o||0,e(h,d,p,g))}function a(t){n(0,t)}function o(){(h||d||p||g.shift||g.alt||g.meta||g.control)&&(d=p=0,h=0,g.shift=g.alt=g.control=g.meta=!1,e(0,0,0,g))}function s(t){r(t)&&e(h,d,p,g)}function l(t){0===i.buttons(t)?n(0,t):n(h,t)}function c(t){n(h|i.buttons(t),t)}function u(t){n(h&~i.buttons(t),t)}function f(){v||(v=!0,t.addEventListener(\"mousemove\",l),t.addEventListener(\"mousedown\",c),t.addEventListener(\"mouseup\",u),t.addEventListener(\"mouseleave\",a),t.addEventListener(\"mouseenter\",a),t.addEventListener(\"mouseout\",a),t.addEventListener(\"mouseover\",a),t.addEventListener(\"blur\",o),t.addEventListener(\"keyup\",s),t.addEventListener(\"keydown\",s),t.addEventListener(\"keypress\",s),t!==window&&(window.addEventListener(\"blur\",o),window.addEventListener(\"keyup\",s),window.addEventListener(\"keydown\",s),window.addEventListener(\"keypress\",s)))}e||(e=t,t=window);var h=0,d=0,p=0,g={shift:!1,alt:!1,control:!1,meta:!1},v=!1;f();var m={element:t};return Object.defineProperties(m,{enabled:{get:function(){return v},set:function(t){t&&f()},enumerable:!0},buttons:{get:function(){return h},enumerable:!0},x:{get:function(){return d},enumerable:!0},y:{get:function(){return p},enumerable:!0},mods:{get:function(){return g},enumerable:!0}}),m}e.exports=n;var i=t(\"mouse-event\")},{\"mouse-event\":242}],242:[function(t,e,r){\"use strict\";function n(t){if(\"object\"==typeof t){if(\"buttons\"in t)return t.buttons;if(\"which\"in t){var e=t.which;if(2===e)return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1<=0&&r=0&&r+1=0&&n=0&&n+1=0&&s=0&&s+1=0&&i=0&&i+1=0&&l=0&&l+1=0&&h=0&&h+1e;++e)r=+arguments[e+1],i[e]=Math.floor(r),a[e]=r-i[e],o[e]=0<=i[e]&&i[e]e;++e){for(c=1,u=t.offset,l=0;n>l;++l)if(e&1<r;++r){t[r]=o[(n+1)*n+r];for(var i=0;n>i;++i)t[r]+=o[(n+1)*i+r]*e[i]}for(var a=o[(n+1)*(n+1)-1],i=0;n>i;++i)a+=o[(n+1)*i+n]*e[i];for(var s=1/a,r=0;n>r;++r)t[r]*=s;return t}),t}var i=t(\"ndarray-warp\"),a=t(\"gl-matrix-invert\");e.exports=n},{\"gl-matrix-invert\":247,\"ndarray-warp\":250}],252:[function(t,e,r){\"use strict\";function n(t){if(!t)return s;for(var e=0;e>\",rrshift:\">>>\"};!function(){for(var t in l){var e=l[t];r[t]=a({args:[\"array\",\"array\",\"array\"],body:{args:[\"a\",\"b\",\"c\"],body:\"a=b\"+e+\"c\"},funcName:t}),r[t+\"eq\"]=a({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a\"+e+\"=b\"},rvalue:!0,funcName:t+\"eq\"}),r[t+\"s\"]=a({args:[\"array\",\"array\",\"scalar\"],body:{args:[\"a\",\"b\",\"s\"],body:\"a=b\"+e+\"s\"},funcName:t+\"s\"}),r[t+\"seq\"]=a({args:[\"array\",\"scalar\"],body:{args:[\"a\",\"s\"],body:\"a\"+e+\"=s\"},rvalue:!0,funcName:t+\"seq\"})}}();var c={not:\"!\",bnot:\"~\",neg:\"-\",recip:\"1.0/\"};!function(){for(var t in c){var e=c[t];r[t]=a({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a=\"+e+\"b\"},funcName:t}),r[t+\"eq\"]=a({args:[\"array\"],body:{args:[\"a\"],body:\"a=\"+e+\"a\"},rvalue:!0,count:2,funcName:t+\"eq\"})}}();var u={and:\"&&\",or:\"||\",eq:\"===\",neq:\"!==\",lt:\"<\",gt:\">\",leq:\"<=\",geq:\">=\"};!function(){for(var t in u){var e=u[t];r[t]=a({args:[\"array\",\"array\",\"array\"],body:{args:[\"a\",\"b\",\"c\"],body:\"a=b\"+e+\"c\"},funcName:t}),r[t+\"s\"]=a({args:[\"array\",\"array\",\"scalar\"],body:{args:[\"a\",\"b\",\"s\"],body:\"a=b\"+e+\"s\"},funcName:t+\"s\"}),r[t+\"eq\"]=a({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a=a\"+e+\"b\"},rvalue:!0,count:2,funcName:t+\"eq\"}),r[t+\"seq\"]=a({args:[\"array\",\"scalar\"],body:{args:[\"a\",\"s\"],body:\"a=a\"+e+\"s\"},rvalue:!0,count:2,funcName:t+\"seq\"})}}();var f=[\"abs\",\"acos\",\"asin\",\"atan\",\"ceil\",\"cos\",\"exp\",\"floor\",\"log\",\"round\",\"sin\",\"sqrt\",\"tan\"];!function(){for(var t=0;tthis_s){this_s=-a}else if(a>this_s){this_s=a}\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"norminf\"}),r.norm1=o({args:[\"array\"],pre:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"this_s=0\"},body:{args:[{name:\"a\",lvalue:!1,rvalue:!0,count:3}],body:\"this_s+=a<0?-a:a\",localVars:[],thisVars:[\"this_s\"]},post:{args:[],localVars:[],thisVars:[\"this_s\"],body:\"return this_s\"},funcName:\"norm1\"}),r.sup=o({args:[\"array\"],pre:{body:\"this_h=-Infinity\",args:[],thisVars:[\"this_h\"],localVars:[]},body:{body:\"if(_inline_1_arg0_>this_h)this_h=_inline_1_arg0_\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:2}],thisVars:[\"this_h\"],localVars:[]},post:{body:\"return this_h\",args:[],thisVars:[\"this_h\"],localVars:[]}}),r.inf=o({args:[\"array\"],pre:{body:\"this_h=Infinity\",args:[],thisVars:[\"this_h\"],localVars:[]},body:{body:\"if(_inline_1_arg0_this_v){this_v=_inline_1_arg1_;for(var _inline_1_k=0;_inline_1_k<_inline_1_arg0_.length;++_inline_1_k){this_i[_inline_1_k]=_inline_1_arg0_[_inline_1_k]}}}\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:2},{name:\"_inline_1_arg1_\",lvalue:!1,rvalue:!0,count:2}],thisVars:[\"this_i\",\"this_v\"],localVars:[\"_inline_1_k\"]},post:{body:\"{return this_i}\",args:[],thisVars:[\"this_i\"],localVars:[]}}),r.random=a({args:[\"array\"],pre:{args:[],body:\"this_f=Math.random\",thisVars:[\"this_f\"]},body:{args:[\"a\"],body:\"a=this_f()\",thisVars:[\"this_f\"]},funcName:\"random\"}),r.assign=a({args:[\"array\",\"array\"],body:{args:[\"a\",\"b\"],body:\"a=b\"},funcName:\"assign\"}),r.assigns=a({args:[\"array\",\"scalar\"],body:{args:[\"a\",\"b\"],body:\"a=b\"},funcName:\"assigns\"}),r.equals=o({args:[\"array\",\"array\"],pre:s,body:{args:[{name:\"x\",lvalue:!1,rvalue:!0,count:1},{name:\"y\",lvalue:!1,rvalue:!0,count:1}],body:\"if(x!==y){return false}\",localVars:[],thisVars:[]},post:{args:[],localVars:[],thisVars:[],body:\"return true\"},funcName:\"equals\"})},{\"cwise-compiler\":109}],253:[function(t,e,r){function n(t,e){return t[0]-e[0]}function i(){var t,e=this.stride,r=new Array(e.length);for(t=0;te&&(r=\"View_Nil\"+t);var n=\"generic\"===t;if(-1===e){var a=\"function \"+r+\"(a){this.data=a;};var proto=\"+r+\".prototype;proto.dtype='\"+t+\"';proto.index=function(){return -1};proto.size=0;proto.dimension=-1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function(){return new \"+r+\"(this.data);};proto.get=proto.set=function(){};proto.pick=function(){return null};return function construct_\"+r+\"(a){return new \"+r+\"(a);}\",o=new Function(a);return o()}if(0===e){var a=\"function \"+r+\"(a,d) {this.data = a;this.offset = d};var proto=\"+r+\".prototype;proto.dtype='\"+t+\"';proto.index=function(){return this.offset};proto.dimension=0;proto.size=1;proto.shape=proto.stride=proto.order=[];proto.lo=proto.hi=proto.transpose=proto.step=function \"+r+\"_copy() {return new \"+r+\"(this.data,this.offset)};proto.pick=function \"+r+\"_pick(){return TrivialArray(this.data);};proto.valueOf=proto.get=function \"+r+\"_get(){return \"+(n?\"this.data.get(this.offset)\":\"this.data[this.offset]\")+\"};proto.set=function \"+r+\"_set(v){return \"+(n?\"this.data.set(this.offset,v)\":\"this.data[this.offset]=v\")+\"};return function construct_\"+r+\"(a,b,c,d){return new \"+r+\"(a,d)}\",o=new Function(\"TrivialArray\",a);return o(f[t][0])}var a=[\"'use strict'\"],s=l(e),c=s.map(function(t){return\"i\"+t}),u=\"this.offset+\"+s.map(function(t){return\"this.stride[\"+t+\"]*i\"+t}).join(\"+\"),h=s.map(function(t){return\"b\"+t}).join(\",\"),d=s.map(function(t){return\"c\"+t}).join(\",\");a.push(\"function \"+r+\"(a,\"+h+\",\"+d+\",d){this.data=a\",\"this.shape=[\"+h+\"]\",\"this.stride=[\"+d+\"]\",\"this.offset=d|0}\",\"var proto=\"+r+\".prototype\",\"proto.dtype='\"+t+\"'\",\"proto.dimension=\"+e),a.push(\"Object.defineProperty(proto,'size',{get:function \"+r+\"_size(){return \"+s.map(function(t){return\"this.shape[\"+t+\"]\"}).join(\"*\"),\"}})\"),1===e?a.push(\"proto.order=[0]\"):(a.push(\"Object.defineProperty(proto,'order',{get:\"),4>e?(a.push(\"function \"+r+\"_order(){\"),2===e?a.push(\"return (Math.abs(this.stride[0])>Math.abs(this.stride[1]))?[1,0]:[0,1]}})\"):3===e&&a.push(\"var s0=Math.abs(this.stride[0]),s1=Math.abs(this.stride[1]),s2=Math.abs(this.stride[2]);if(s0>s1){if(s1>s2){return [2,1,0];}else if(s0>s2){return [1,2,0];}else{return [1,0,2];}}else if(s0>s2){return [2,0,1];}else if(s2>s1){return [0,1,2];}else{return [0,2,1];}}})\")):a.push(\"ORDER})\")),a.push(\"proto.set=function \"+r+\"_set(\"+c.join(\",\")+\",v){\"),n?a.push(\"return this.data.set(\"+u+\",v)}\"):a.push(\"return this.data[\"+u+\"]=v}\"),a.push(\"proto.get=function \"+r+\"_get(\"+c.join(\",\")+\"){\"),n?a.push(\"return this.data.get(\"+u+\")}\"):a.push(\"return this.data[\"+u+\"]}\"),a.push(\"proto.index=function \"+r+\"_index(\",c.join(),\"){return \"+u+\"}\"),a.push(\"proto.hi=function \"+r+\"_hi(\"+c.join(\",\")+\"){return new \"+r+\"(this.data,\"+s.map(function(t){return[\"(typeof i\",t,\"!=='number'||i\",t,\"<0)?this.shape[\",t,\"]:i\",t,\"|0\"].join(\"\")}).join(\",\")+\",\"+s.map(function(t){return\"this.stride[\"+t+\"]\"}).join(\",\")+\",this.offset)}\");var p=s.map(function(t){return\"a\"+t+\"=this.shape[\"+t+\"]\"}),g=s.map(function(t){return\"c\"+t+\"=this.stride[\"+t+\"]\"});a.push(\"proto.lo=function \"+r+\"_lo(\"+c.join(\",\")+\"){var b=this.offset,d=0,\"+p.join(\",\")+\",\"+g.join(\",\"));for(var v=0;e>v;++v)a.push(\"if(typeof i\"+v+\"==='number'&&i\"+v+\">=0){d=i\"+v+\"|0;b+=c\"+v+\"*d;a\"+v+\"-=d}\");a.push(\"return new \"+r+\"(this.data,\"+s.map(function(t){return\"a\"+t}).join(\",\")+\",\"+s.map(function(t){return\"c\"+t}).join(\",\")+\",b)}\"),a.push(\"proto.step=function \"+r+\"_step(\"+c.join(\",\")+\"){var \"+s.map(function(t){return\"a\"+t+\"=this.shape[\"+t+\"]\"}).join(\",\")+\",\"+s.map(function(t){return\"b\"+t+\"=this.stride[\"+t+\"]\"}).join(\",\")+\",c=this.offset,d=0,ceil=Math.ceil\");for(var v=0;e>v;++v)a.push(\"if(typeof i\"+v+\"==='number'){d=i\"+v+\"|0;if(d<0){c+=b\"+v+\"*(a\"+v+\"-1);a\"+v+\"=ceil(-a\"+v+\"/d)}else{a\"+v+\"=ceil(a\"+v+\"/d)}b\"+v+\"*=d}\");a.push(\"return new \"+r+\"(this.data,\"+s.map(function(t){return\"a\"+t}).join(\",\")+\",\"+s.map(function(t){return\"b\"+t}).join(\",\")+\",c)}\");for(var m=new Array(e),y=new Array(e),v=0;e>v;++v)m[v]=\"a[i\"+v+\"]\",y[v]=\"b[i\"+v+\"]\";a.push(\"proto.transpose=function \"+r+\"_transpose(\"+c+\"){\"+c.map(function(t,e){return t+\"=(\"+t+\"===undefined?\"+e+\":\"+t+\"|0)\"}).join(\";\"),\"var a=this.shape,b=this.stride;return new \"+r+\"(this.data,\"+m.join(\",\")+\",\"+y.join(\",\")+\",this.offset)}\"),a.push(\"proto.pick=function \"+r+\"_pick(\"+c+\"){var a=[],b=[],c=this.offset\");for(var v=0;e>v;++v)a.push(\"if(typeof i\"+v+\"==='number'&&i\"+v+\">=0){c=(c+this.stride[\"+v+\"]*i\"+v+\")|0}else{a.push(this.shape[\"+v+\"]);b.push(this.stride[\"+v+\"])}\");a.push(\"var ctor=CTOR_LIST[a.length+1];return ctor(this.data,a,b,c)}\"),a.push(\"return function construct_\"+r+\"(data,shape,stride,offset){return new \"+r+\"(data,\"+s.map(function(t){return\"shape[\"+t+\"]\"}).join(\",\")+\",\"+s.map(function(t){return\"stride[\"+t+\"]\"}).join(\",\")+\",offset)}\");var o=new Function(\"CTOR_LIST\",\"ORDER\",a.join(\"\\n\"));return o(f[t],i)}function o(t){if(c(t))return\"buffer\";if(u)switch(Object.prototype.toString.call(t)){case\"[object Float64Array]\":return\"float64\";case\"[object Float32Array]\":return\"float32\";case\"[object Int8Array]\":return\"int8\";case\"[object Int16Array]\":return\"int16\";case\"[object Int32Array]\":return\"int32\";case\"[object Uint8Array]\":return\"uint8\";case\"[object Uint16Array]\":return\"uint16\";case\"[object Uint32Array]\":return\"uint32\";case\"[object Uint8ClampedArray]\":return\"uint8_clamped\"}return Array.isArray(t)?\"array\":\"generic\"}function s(t,e,r,n){if(void 0===t){var i=f.array[0];return i([])}\"number\"==typeof t&&(t=[t]),void 0===e&&(e=[t.length]);var s=e.length;if(void 0===r){r=new Array(s);for(var l=s-1,c=1;l>=0;--l)r[l]=c,c*=e[l]}if(void 0===n){n=0;for(var l=0;s>l;++l)r[l]<0&&(n-=(e[l]-1)*r[l])}for(var u=o(t),h=f[u];h.length<=s+1;)h.push(a(u,h.length-1));var i=h[s+1];return i(t,e,r,n)}var l=t(\"iota-array\"),c=t(\"is-buffer\"),u=\"undefined\"!=typeof Float64Array,f={float32:[],float64:[],int8:[],int16:[],int32:[],uint8:[],uint16:[],uint32:[],array:[],uint8_clamped:[],buffer:[],generic:[]};e.exports=s},{\"iota-array\":239,\"is-buffer\":240}],254:[function(t,e,r){\"use strict\";function n(t,e){if(\"string\"!=typeof t)throw new TypeError(\"repeat-string expects a string.\");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;for(i===t&&\"undefined\"!=typeof i||(i=t,a=\"\");r>a.length&&e>0&&(1&e&&(a+=t),e>>=1);)t+=t;return a.substr(0,r)}var i,a=\"\";e.exports=n},{}],255:[function(t,e,r){(function(t){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],256:[function(t,e,r){\"use strict\";function n(t){for(var e=\"robustLinearSolve\"+t+\"d\",r=[\"function \",e,\"(A,b){return [\"],n=0;t>n;++n){r.push(\"det([\");for(var i=0;t>i;++i){i>0&&r.push(\",\"),r.push(\"[\");for(var a=0;t>a;++a)a>0&&r.push(\",\"),a===n?r.push(\"+b[\",i,\"]\"):r.push(\"+A[\",i,\"][\",a,\"]\");r.push(\"]\")}r.push(\"]),\")}r.push(\"det(A)]}return \",e);var o=new Function(\"det\",r.join(\"\"));return o(6>t?s[t]:s)}function i(){return[0]}function a(t,e){return[[e[0]],[t[0][0]]]}function o(){for(;c.lengthi;++i)t.push(\"s\"+i),r.push(\"case \",i,\":return s\",i,\"(A,b);\");r.push(\"}var s=CACHE[A.length];if(!s)s=CACHE[A.length]=g(A.length);return s(A,b)}return dispatchLinearSolve\"),t.push(\"CACHE\",\"g\",r.join(\"\"));var a=Function.apply(void 0,t);e.exports=a.apply(void 0,c.concat([c,n]));for(var i=0;l>i;++i)e.exports[i]=c[i]}var s=t(\"robust-determinant\"),l=6,c=[i,a];o()},{\"robust-determinant\":258}],257:[function(t,e,r){\"use strict\";function n(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];r=a+o;var s=r-a,l=o-s;l&&(t[--n]=r,r=l)}for(var c=0,i=n;e>i;++i){var a=t[i],o=r;r=a+o;var s=r-a,l=o-s;l&&(t[c++]=l)}return t[c++]=r,t.length=c,t}e.exports=n},{}],258:[function(t,e,r){\"use strict\";function n(t,e){for(var r=new Array(t.length-1),n=1;nr;++r){e[r]=new Array(t);for(var n=0;t>n;++n)e[r][n]=[\"m[\",r,\"][\",n,\"]\"].join(\"\")}return e}function a(t){return 1&t?\"-\":\"\"}function o(t){if(1===t.length)return t[0];if(2===t.length)return[\"sum(\",t[0],\",\",t[1],\")\"].join(\"\");var e=t.length>>1;return[\"sum(\",o(t.slice(0,e)),\",\",o(t.slice(e)),\")\"].join(\"\")}function s(t){if(2===t.length)return[\"sum(prod(\",t[0][0],\",\",t[1][1],\"),prod(-\",t[0][1],\",\",t[1][0],\"))\"].join(\"\");for(var e=[],r=0;rn;++n)t.push(\"det\"+n),r.push(\"case \",n,\":return det\",n,\"(m);\");r.push(\"}var det=CACHE[m.length];if(!det)det=CACHE[m.length]=gen(m.length);return det(m);}return robustDeterminant\"),t.push(\"CACHE\",\"gen\",r.join(\"\"));var i=Function.apply(void 0,t);e.exports=i.apply(void 0,g.concat([g,l]));for(var n=0;nr;++r){e[r]=new Array(t);for(var n=0;t>n;++n)e[r][n]=[\"m\",n,\"[\",t-r-1,\"]\"].join(\"\")}return e}function a(t){return 1&t?\"-\":\"\"}function o(t){if(1===t.length)return t[0];if(2===t.length)return[\"sum(\",t[0],\",\",t[1],\")\"].join(\"\");var e=t.length>>1;return[\"sum(\",o(t.slice(0,e)),\",\",o(t.slice(e)),\")\"].join(\"\")}function s(t){if(2===t.length)return[[\"sum(prod(\",t[0][0],\",\",t[1][1],\"),prod(-\",t[0][1],\",\",t[1][0],\"))\"].join(\"\")];for(var e=[],r=0;rc;++c)0===(1&c)?e.push.apply(e,s(n(a,c))):r.push.apply(r,s(n(a,c))),l.push(\"m\"+c);var u=o(e),g=o(r),v=\"orientation\"+t+\"Exact\",m=[\"function \",v,\"(\",l.join(),\"){var p=\",u,\",n=\",g,\",d=sub(p,n);return d[d.length-1];};return \",v].join(\"\"),y=new Function(\"sum\",\"prod\",\"scale\",\"sub\",m);return y(h,f,d,p)}function c(t){var e=_[t.length];return e||(e=_[t.length]=l(t.length)),e.apply(void 0,t)}function u(){for(;_.length<=g;)_.push(l(_.length));for(var t=[],r=[\"slow\"],n=0;g>=n;++n)t.push(\"a\"+n),r.push(\"o\"+n);for(var i=[\"function getOrientation(\",t.join(),\"){switch(arguments.length){case 0:case 1:return 0;\"],n=2;g>=n;++n)i.push(\"case \",n,\":return o\",n,\"(\",t.slice(0,n).join(),\");\");i.push(\"}var s=new Array(arguments.length);for(var i=0;i=n;++n)e.exports[n]=_[n]}var f=t(\"two-product\"),h=t(\"robust-sum\"),d=t(\"robust-scale\"),p=t(\"robust-subtract\"),g=5,v=1.1102230246251565e-16,m=(3+16*v)*v,y=(7+56*v)*v,b=l(3),x=l(4),_=[function(){return 0},function(){return 0},function(t,e){return e[0]-t[0]},function(t,e,r){var n,i=(t[1]-r[1])*(e[0]-r[0]),a=(t[0]-r[0])*(e[1]-r[1]),o=i-a;if(i>0){if(0>=a)return o;n=i+a}else{if(!(0>i))return o;if(a>=0)return o;n=-(i+a)}var s=m*n;return o>=s||-s>=o?o:b(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],h=r[2]-n[2],d=a*c,p=o*l,g=o*s,v=i*c,m=i*l,b=a*s,_=u*(d-p)+f*(g-v)+h*(m-b),w=(Math.abs(d)+Math.abs(p))*Math.abs(u)+(Math.abs(g)+Math.abs(v))*Math.abs(f)+(Math.abs(m)+Math.abs(b))*Math.abs(h),k=y*w;\n", + "return _>k||-_>k?_:x(t,e,r,n)}];u()},{\"robust-scale\":260,\"robust-subtract\":261,\"robust-sum\":262,\"two-product\":276}],260:[function(t,e,r){\"use strict\";function n(t,e){var r=t.length;if(1===r){var n=i(t[0],e);return n[0]?n:[n[1]]}var o=new Array(2*r),s=[.1,.1],l=[.1,.1],c=0;i(t[0],e,s),s[0]&&(o[c++]=s[0]);for(var u=1;r>u;++u){i(t[u],e,l);var f=s[1];a(f,l[0],s),s[0]&&(o[c++]=s[0]);var h=l[1],d=s[1],p=h+d,g=p-h,v=d-g;s[1]=p,v&&(o[c++]=v)}return s[1]&&(o[c++]=s[1]),0===c&&(o[c++]=0),o.length=c,o}var i=t(\"two-product\"),a=t(\"two-sum\");e.exports=n},{\"two-product\":276,\"two-sum\":277}],261:[function(t,e,r){\"use strict\";function n(t,e){var r=t+e,n=r-t,i=r-n,a=e-n,o=t-i,s=o+a;return s?[s,r]:[r]}function i(t,e){var r=0|t.length,i=0|e.length;if(1===r&&1===i)return n(t[0],-e[0]);var a,o,s=r+i,l=new Array(s),c=0,u=0,f=0,h=Math.abs,d=t[u],p=h(d),g=-e[f],v=h(g);v>p?(o=d,u+=1,r>u&&(d=t[u],p=h(d))):(o=g,f+=1,i>f&&(g=-e[f],v=h(g))),r>u&&v>p||f>=i?(a=d,u+=1,r>u&&(d=t[u],p=h(d))):(a=g,f+=1,i>f&&(g=-e[f],v=h(g)));for(var m,y,b,x,_,w=a+o,k=w-a,A=o-k,M=A,T=w;r>u&&i>f;)v>p?(a=d,u+=1,r>u&&(d=t[u],p=h(d))):(a=g,f+=1,i>f&&(g=-e[f],v=h(g))),o=M,w=a+o,k=w-a,A=o-k,A&&(l[c++]=A),m=T+w,y=m-T,b=m-y,x=w-y,_=T-b,M=_+x,T=m;for(;r>u;)a=d,o=M,w=a+o,k=w-a,A=o-k,A&&(l[c++]=A),m=T+w,y=m-T,b=m-y,x=w-y,_=T-b,M=_+x,T=m,u+=1,r>u&&(d=t[u]);for(;i>f;)a=g,o=M,w=a+o,k=w-a,A=o-k,A&&(l[c++]=A),m=T+w,y=m-T,b=m-y,x=w-y,_=T-b,M=_+x,T=m,f+=1,i>f&&(g=-e[f]);return M&&(l[c++]=M),T&&(l[c++]=T),c||(l[c++]=0),l.length=c,l}e.exports=i},{}],262:[function(t,e,r){\"use strict\";function n(t,e){var r=t+e,n=r-t,i=r-n,a=e-n,o=t-i,s=o+a;return s?[s,r]:[r]}function i(t,e){var r=0|t.length,i=0|e.length;if(1===r&&1===i)return n(t[0],e[0]);var a,o,s=r+i,l=new Array(s),c=0,u=0,f=0,h=Math.abs,d=t[u],p=h(d),g=e[f],v=h(g);v>p?(o=d,u+=1,r>u&&(d=t[u],p=h(d))):(o=g,f+=1,i>f&&(g=e[f],v=h(g))),r>u&&v>p||f>=i?(a=d,u+=1,r>u&&(d=t[u],p=h(d))):(a=g,f+=1,i>f&&(g=e[f],v=h(g)));for(var m,y,b,x,_,w=a+o,k=w-a,A=o-k,M=A,T=w;r>u&&i>f;)v>p?(a=d,u+=1,r>u&&(d=t[u],p=h(d))):(a=g,f+=1,i>f&&(g=e[f],v=h(g))),o=M,w=a+o,k=w-a,A=o-k,A&&(l[c++]=A),m=T+w,y=m-T,b=m-y,x=w-y,_=T-b,M=_+x,T=m;for(;r>u;)a=d,o=M,w=a+o,k=w-a,A=o-k,A&&(l[c++]=A),m=T+w,y=m-T,b=m-y,x=w-y,_=T-b,M=_+x,T=m,u+=1,r>u&&(d=t[u]);for(;i>f;)a=g,o=M,w=a+o,k=w-a,A=o-k,A&&(l[c++]=A),m=T+w,y=m-T,b=m-y,x=w-y,_=T-b,M=_+x,T=m,f+=1,i>f&&(g=e[f]);return M&&(l[c++]=M),T&&(l[c++]=T),c||(l[c++]=0),l.length=c,l}e.exports=i},{}],263:[function(t,e,r){\"use strict\";function n(t){return t.split(\"\").map(function(t){return t in i?i[t]:\"\"}).join(\"\")}e.exports=n;var i={\" \":\" \",0:\"\\u2070\",1:\"\\xb9\",2:\"\\xb2\",3:\"\\xb3\",4:\"\\u2074\",5:\"\\u2075\",6:\"\\u2076\",7:\"\\u2077\",8:\"\\u2078\",9:\"\\u2079\",\"+\":\"\\u207a\",\"-\":\"\\u207b\",a:\"\\u1d43\",b:\"\\u1d47\",c:\"\\u1d9c\",d:\"\\u1d48\",e:\"\\u1d49\",f:\"\\u1da0\",g:\"\\u1d4d\",h:\"\\u02b0\",i:\"\\u2071\",j:\"\\u02b2\",k:\"\\u1d4f\",l:\"\\u02e1\",m:\"\\u1d50\",n:\"\\u207f\",o:\"\\u1d52\",p:\"\\u1d56\",r:\"\\u02b3\",s:\"\\u02e2\",t:\"\\u1d57\",u:\"\\u1d58\",v:\"\\u1d5b\",w:\"\\u02b7\",x:\"\\u02e3\",y:\"\\u02b8\",z:\"\\u1dbb\"}},{}],264:[function(t,e,r){\"use strict\";function n(t){return\"a\"+t}function i(t){return\"d\"+t}function a(t,e){return\"c\"+t+\"_\"+e}function o(t){return\"s\"+t}function s(t,e){return\"t\"+t+\"_\"+e}function l(t){return\"o\"+t}function c(t){return\"x\"+t}function u(t){return\"p\"+t}function f(t,e){return\"d\"+t+\"_\"+e}function h(t){return\"i\"+t}function d(t,e){return\"u\"+t+\"_\"+e}function p(t){return\"b\"+t}function g(t){return\"y\"+t}function v(t){return\"e\"+t}function m(t){return\"v\"+t}function y(t,e,r){for(var n=0,i=0;t>i;++i)e&1<e;++e)F.push(u(e),\"+=\",d(e,x[t]),\";\");F.push(\"}\")}function z(t){for(var e=t-1;e>=0;--e)S(e,0);for(var r=[],e=0;I>e;++e)L[e]?r.push(i(e)+\".get(\"+u(e)+\")\"):r.push(i(e)+\"[\"+u(e)+\"]\");for(var e=0;b>e;++e)r.push(c(e));F.push(k,\"[\",T,\"++]=phase(\",r.join(),\");\");for(var e=0;t>e;++e)C(e);for(var n=0;I>n;++n)F.push(u(n),\"+=\",d(n,x[t]),\";\")}function P(t){for(var e=0;I>e;++e)L[e]?F.push(a(e,0),\"=\",i(e),\".get(\",u(e),\");\"):F.push(a(e,0),\"=\",i(e),\"[\",u(e),\"];\");for(var r=[],e=0;I>e;++e)r.push(a(e,0));for(var e=0;b>e;++e)r.push(c(e));F.push(p(0),\"=\",k,\"[\",T,\"]=phase(\",r.join(),\");\");for(var n=1;1<n;++n)F.push(p(n),\"=\",k,\"[\",T,\"+\",v(n),\"];\");for(var o=[],n=1;1<n;++n)o.push(\"(\"+p(0)+\"!==\"+p(n)+\")\");F.push(\"if(\",o.join(\"||\"),\"){\");for(var s=[],e=0;N>e;++e)s.push(h(e));for(var e=0;I>e;++e){s.push(a(e,0));for(var n=1;1<n;++n)L[e]?F.push(a(e,n),\"=\",i(e),\".get(\",u(e),\"+\",f(e,n),\");\"):F.push(a(e,n),\"=\",i(e),\"[\",u(e),\"+\",f(e,n),\"];\"),s.push(a(e,n))}for(var e=0;1<e;++e)s.push(p(e));for(var e=0;b>e;++e)s.push(c(e));F.push(\"vertex(\",s.join(),\");\",m(0),\"=\",w,\"[\",T,\"]=\",A,\"++;\");for(var l=(1<n;++n)if(0===(t&~(1<0;_=_-1&g)x.push(w+\"[\"+T+\"+\"+v(_)+\"]\");x.push(m(0));for(var _=0;I>_;++_)1&n?x.push(a(_,l),a(_,g)):x.push(a(_,g),a(_,l));1&n?x.push(d,y):x.push(y,d);for(var _=0;b>_;++_)x.push(c(_));F.push(\"if(\",d,\"!==\",y,\"){\",\"face(\",x.join(),\")}\")}F.push(\"}\",T,\"+=1;\")}function R(){for(var t=1;1<t;++t)F.push(E,\"=\",v(t),\";\",v(t),\"=\",g(t),\";\",g(t),\"=\",E,\";\")}function O(t,e){if(0>t)return void P(e);z(t),F.push(\"if(\",o(x[t]),\">0){\",h(x[t]),\"=1;\"),O(t-1,e|1<r;++r)F.push(u(r),\"+=\",d(r,x[t]),\";\");t===N-1&&(F.push(T,\"=0;\"),R()),S(t,2),O(t-1,e),t===N-1&&(F.push(\"if(\",h(x[N-1]),\"&1){\",T,\"=0;}\"),R()),C(t),F.push(\"}\")}var I=L.length,N=x.length;if(2>N)throw new Error(\"ndarray-extract-contour: Dimension must be at least 2\");for(var j=\"extractContour\"+x.join(\"_\"),F=[],D=[],B=[],U=0;I>U;++U)B.push(n(U));for(var U=0;b>U;++U)B.push(c(U));for(var U=0;N>U;++U)D.push(o(U)+\"=\"+n(0)+\".shape[\"+U+\"]|0\");for(var U=0;I>U;++U){D.push(i(U)+\"=\"+n(U)+\".data\",l(U)+\"=\"+n(U)+\".offset|0\");for(var V=0;N>V;++V)D.push(s(U,V)+\"=\"+n(U)+\".stride[\"+V+\"]|0\")}for(var U=0;I>U;++U){D.push(u(U)+\"=\"+l(U)),D.push(a(U,0));for(var V=1;1<V;++V){for(var q=[],H=0;N>H;++H)V&1<U;++U)for(var V=0;N>V;++V){var G=[s(U,x[V])];V>0&&G.push(s(U,x[V-1])+\"*\"+o(x[V-1])),D.push(d(U,x[V])+\"=(\"+G.join(\"-\")+\")|0\")}for(var U=0;N>U;++U)D.push(h(U)+\"=0\");D.push(A+\"=0\");for(var Y=[\"2\"],U=N-2;U>=0;--U)Y.push(o(x[U]));D.push(M+\"=(\"+Y.join(\"*\")+\")|0\",k+\"=mallocUint32(\"+M+\")\",w+\"=mallocUint32(\"+M+\")\",T+\"=0\"),D.push(p(0)+\"=0\");for(var V=1;1<V;++V){for(var X=[],W=[],H=0;N>H;++H)V&1<n&&e(\"Must have at least one array argument\");var i=t.scalarArguments||0;0>i&&e(\"Scalar arg count must be > 0\"),\"function\"!=typeof t.vertex&&e(\"Must specify vertex creation function\"),\"function\"!=typeof t.cell&&e(\"Must specify cell creation function\"),\"function\"!=typeof t.phase&&e(\"Must specify phase function\");for(var a=t.getters||[],o=new Array(n),s=0;n>s;++s)a.indexOf(s)>=0?o[s]=!0:o[s]=!1;return b(t.vertex,t.cell,t.phase,i,r,o)}var _=t(\"typedarray-pool\");e.exports=x;var w=\"V\",k=\"P\",A=\"N\",M=\"Q\",T=\"X\",E=\"T\"},{\"typedarray-pool\":278}],265:[function(t,e,r){function n(t){if(0>t)return Number(\"0/0\");for(var e=s[0],r=s.length-1;r>0;--r)e+=s[r]/(t+r);var n=t+o+.5;return.5*Math.log(2*Math.PI)+(t+.5)*Math.log(n)-n+Math.log(e)-Math.log(t)}var i=7,a=[.9999999999998099,676.5203681218851,-1259.1392167224028,771.3234287776531,-176.6150291621406,12.507343278686905,-.13857109526572012,9984369578019572e-21,1.5056327351493116e-7],o=607/128,s=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];e.exports=function l(t){if(.5>t)return Math.PI/(Math.sin(Math.PI*t)*l(1-t));if(t>100)return Math.exp(n(t));t-=1;for(var e=a[0],r=1;i+2>r;r++)e+=a[r]/(t+r);var o=t+i+.5;return Math.sqrt(2*Math.PI)*Math.pow(o,t+.5)*Math.exp(-o)*e},e.exports.log=n},{}],266:[function(t,e,r){\"use strict\";function n(t){var e=t.length;if(i>e){for(var r=1,n=0;e>n;++n)for(var o=0;n>o;++o)if(t[n]n;++n)s[n]=0;for(var r=1,n=0;e>n;++n)if(!s[n]){var l=1;s[n]=1;for(var o=t[n];o!==n;o=t[o]){if(s[o])return a.freeUint8(s),0;l+=1,s[o]=1}1&l||(r=-r)}return a.freeUint8(s),r}e.exports=n;var i=32,a=t(\"typedarray-pool\")},{\"typedarray-pool\":278}],267:[function(t,e,r){\"use strict\";function n(t){var e=t.length;switch(e){case 0:case 1:return 0;case 2:return t[1]}var r,n,i,s=a.mallocUint32(e),l=a.mallocUint32(e),c=0;for(o(t,l),i=0;e>i;++i)s[i]=t[i];for(i=e-1;i>0;--i)n=l[i],r=s[i],s[i]=s[n],s[n]=r,l[i]=l[r],l[r]=n,c=(c+r)*i;return a.freeUint32(l),a.freeUint32(s),c}function i(t,e,r){switch(t){case 0:return r?r:[];case 1:return r?(r[0]=0,r):[0];case 2:return r?(e?(r[0]=0,r[1]=1):(r[0]=1,r[1]=0),r):e?[0,1]:[1,0]}r=r||new Array(t);var n,i,a,o=1;for(r[0]=0,a=1;t>a;++a)r[a]=a,o=o*a|0;for(a=t-1;a>0;--a)n=e/o|0,e=e-n*o|0,o=o/a|0,i=0|r[a],r[a]=0|r[n],r[n]=0|i;return r}var a=t(\"typedarray-pool\"),o=t(\"invert-permutation\");r.rank=n,r.unrank=i},{\"invert-permutation\":268,\"typedarray-pool\":278}],268:[function(t,e,r){\"use strict\";function n(t,e){e=e||new Array(t.length);for(var r=0;rt)return[];if(0===t)return[[0]];for(var e=0|Math.round(o(t+1)),r=[],n=0;e>n;++n){for(var s=i.unrank(t,n),l=[0],c=0,u=0;u= 0) !== (_inline_1_db >= 0)) {\\n _inline_1_arg2_.push(_inline_1_arg4_[0] + 0.5 + 0.5 * (_inline_1_da + _inline_1_db) / (_inline_1_da - _inline_1_db))\\n }\\n }\",args:[{name:\"_inline_1_arg0_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg1_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg2_\",lvalue:!1,rvalue:!0,count:1},{name:\"_inline_1_arg3_\",lvalue:!1,rvalue:!0,count:2},{name:\"_inline_1_arg4_\",lvalue:!1,rvalue:!0,count:1}],thisVars:[],localVars:[\"_inline_1_da\",\"_inline_1_db\"]},funcName:\"zeroCrossings\"})},{\"cwise-compiler\":109}],271:[function(t,e,r){\"use strict\";function n(t,e){var r=[];return e=+e||0,i(t.hi(t.shape[0]-1),r,e),r}e.exports=n;var i=t(\"./lib/zc-core\")},{\"./lib/zc-core\":270}],272:[function(t,e,r){\"use strict\";function n(t,e){var r=t.length,n=[\"'use strict';\"],i=\"surfaceNets\"+t.join(\"_\")+\"d\"+e;n.push(\"var contour=genContour({\",\"order:[\",t.join(),\"],\",\"scalarArguments: 3,\",\"phase:function phaseFunc(p,a,b,c) { return (p > c)|0 },\"),\"generic\"===e&&n.push(\"getters:[0],\");for(var a=[],l=[],c=0;r>c;++c)a.push(\"d\"+c),l.push(\"d\"+c);for(var c=0;1<c;++c)a.push(\"v\"+c),l.push(\"v\"+c);for(var c=0;1<c;++c)a.push(\"p\"+c),l.push(\"p\"+c);a.push(\"a\",\"b\",\"c\"),l.push(\"a\",\"c\"),n.push(\"vertex:function vertexFunc(\",a.join(),\"){\");for(var u=[],c=0;1<c;++c)u.push(\"(p\"+c+\"<<\"+c+\")\");n.push(\"var m=(\",u.join(\"+\"),\")|0;if(m===0||m===\",(1<<(1<=1<<(1<>>7){\");for(var c=0;1<<(1<c;++c){if(1<<(1<128&&c%128===0){f.length>0&&h.push(\"}}\");var d=\"vExtra\"+f.length;n.push(\"case \",c>>>7,\":\",d,\"(m&0x7f,\",l.join(),\");break;\"),h=[\"function \",d,\"(m,\",l.join(),\"){switch(m){\"],f.push(h)}h.push(\"case \",127&c,\":\");for(var p=new Array(r),g=new Array(r),v=new Array(r),m=new Array(r),y=0,b=0;r>b;++b)p[b]=[],g[b]=[],v[b]=0,m[b]=0;for(var b=0;1<b;++b)for(var x=0;r>x;++x){var _=b^1<b)&&!(c&1<<_)!=!(c&1<w?(p[x].push(\"-v\"+b+\"-v\"+_),v[x]+=2):(p[x].push(\"v\"+b+\"+v\"+_),v[x]-=2),y+=1;for(var k=0;r>k;++k)k!==x&&(_&1<x;++x)if(0===p[x].length)A.push(\"d\"+x+\"-0.5\");else{var M=\"\";v[x]<0?M=v[x]+\"*c\":v[x]>0&&(M=\"+\"+v[x]+\"*c\");var T=.5*(p[x].length/y),E=.5+.5*(m[x]/y);A.push(\"d\"+x+\"-\"+E+\"-\"+T+\"*(\"+p[x].join(\"+\")+M+\")/(\"+g[x].join(\"+\")+\")\")}h.push(\"a.push([\",A.join(),\"]);\",\"break;\")}n.push(\"}},\"),f.length>0&&h.push(\"}}\");for(var L=[],c=0;1<c;++c)L.push(\"v\"+c);L.push(\"c0\",\"c1\",\"p0\",\"p1\",\"a\",\"b\",\"c\"),n.push(\"cell:function cellFunc(\",L.join(),\"){\");var S=s(r-1);n.push(\"if(p0){b.push(\",S.map(function(t){return\"[\"+t.map(function(t){return\"v\"+t})+\"]\"}).join(),\")}else{b.push(\",S.map(function(t){var e=t.slice();return e.reverse(),\"[\"+e.map(function(t){return\"v\"+t})+\"]\"}).join(),\")}}});function \",i,\"(array,level){var verts=[],cells=[];contour(array,verts,cells,level);return {positions:verts,cells:cells};} return \",i,\";\");for(var c=0;co;++o)i[o]=[r[o]],a[o]=[o];return{positions:i,cells:a}}function a(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return i(t,e);var r=t.order.join()+\"-\"+t.dtype,a=c[r],e=+e||0;return a||(a=c[r]=n(t.order,t.dtype)),a(t,e)}e.exports=a;var o=t(\"ndarray-extract-contour\"),s=t(\"triangulate-hypercube\"),l=t(\"zero-crossings\"),c={}},{\"ndarray-extract-contour\":264,\"triangulate-hypercube\":269,\"zero-crossings\":271}],273:[function(t,e,r){(function(r){\"use strict\";function n(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;ol;++l){var c=r[s[l]];n[i++]=c[0],n[i++]=c[1]+1.4,a=Math.max(c[0],a)}return{data:n,shape:a}}function i(t,e){var r=s[t];r||(r=s[t]={\" \":{data:new Float32Array(0),shape:.2}});var o=r[e];if(!o)if(e.length<=1||!/\\d/.test(e))o=r[e]=n(a(e,{triangles:!0,font:t,textAlign:\"left\",textBaseline:\"alphabetic\"}));else{for(var l=e.split(/(\\d|\\s)/),c=new Array(l.length),u=0,f=0,h=0;h0&&(f+=.02);for(var d=new Float32Array(u),p=0,g=-.5*f,h=0;h.5?l/(2-a-o):l/(a+o),a){case t:n=(e-r)/l+(r>e?6:0);break;case e:n=(r-t)/l+2;break;case r:n=(t-e)/l+4}n/=6}return{h:n,s:i,l:s}}function o(t,e,r){function n(t,e,r){return 0>r&&(r+=1),r>1&&(r-=1),1/6>r?t+6*(e-t)*r:.5>r?e:2/3>r?t+(e-t)*(2/3-r)*6:t}var i,a,o;if(t=T(t,360),e=T(e,100),r=T(r,100),0===e)i=a=o=r;else{var s=.5>r?r*(1+e):r+e-r*e,l=2*r-s;i=n(l,s,t+1/3),a=n(l,s,t),o=n(l,s,t-1/3)}return{r:255*i,g:255*a,b:255*o}}function s(t,e,r){t=T(t,255),e=T(e,255),r=T(r,255);var n,i,a=q(t,e,r),o=V(t,e,r),s=a,l=a-o;if(i=0===a?0:l/a,a==o)n=0;else{switch(a){case t:n=(e-r)/l+(r>e?6:0);break;case e:n=(r-t)/l+2;break;case r:n=(t-e)/l+4}n/=6}return{h:n,s:i,v:s}}function l(t,e,r){t=6*T(t,360),e=T(e,100),r=T(r,100);var n=B.floor(t),i=t-n,a=r*(1-e),o=r*(1-i*e),s=r*(1-(1-i)*e),l=n%6,c=[r,o,a,a,s,r][l],u=[s,r,r,o,a,a][l],f=[a,a,s,r,r,o][l];return{r:255*c,g:255*u,b:255*f}}function c(t,e,r,n){var i=[z(U(t).toString(16)),z(U(e).toString(16)),z(U(r).toString(16))];return n&&i[0].charAt(0)==i[0].charAt(1)&&i[1].charAt(0)==i[1].charAt(1)&&i[2].charAt(0)==i[2].charAt(1)?i[0].charAt(0)+i[1].charAt(0)+i[2].charAt(0):i.join(\"\")}function u(t,e,r,n){var i=[z(R(n)),z(U(t).toString(16)),z(U(e).toString(16)),z(U(r).toString(16))];return i.join(\"\")}function f(t,r){r=0===r?0:r||10;var n=e(t).toHsl();return n.s-=r/100,n.s=E(n.s),e(n)}function h(t,r){r=0===r?0:r||10;var n=e(t).toHsl();return n.s+=r/100,n.s=E(n.s),e(n)}function d(t){return e(t).desaturate(100)}function p(t,r){r=0===r?0:r||10;var n=e(t).toHsl();return n.l+=r/100,n.l=E(n.l),e(n)}function g(t,r){r=0===r?0:r||10;var n=e(t).toRgb();return n.r=q(0,V(255,n.r-U(255*-(r/100)))),n.g=q(0,V(255,n.g-U(255*-(r/100)))),n.b=q(0,V(255,n.b-U(255*-(r/100)))),e(n)}function v(t,r){r=0===r?0:r||10;var n=e(t).toHsl();return n.l-=r/100,n.l=E(n.l),e(n)}function m(t,r){var n=e(t).toHsl(),i=(U(n.h)+r)%360;return n.h=0>i?360+i:i,e(n)}function y(t){var r=e(t).toHsl();return r.h=(r.h+180)%360,e(r)}function b(t){var r=e(t).toHsl(),n=r.h;return[e(t),e({h:(n+120)%360,s:r.s,l:r.l}),e({h:(n+240)%360,s:r.s,l:r.l})]}function x(t){var r=e(t).toHsl(),n=r.h;return[e(t),e({h:(n+90)%360,s:r.s,l:r.l}),e({h:(n+180)%360,s:r.s,l:r.l}),e({h:(n+270)%360,s:r.s,l:r.l})]}function _(t){var r=e(t).toHsl(),n=r.h;return[e(t),e({h:(n+72)%360,s:r.s,l:r.l}),e({h:(n+216)%360,s:r.s,l:r.l})]}function w(t,r,n){r=r||6,n=n||30;var i=e(t).toHsl(),a=360/n,o=[e(t)];for(i.h=(i.h-(a*r>>1)+720)%360;--r;)i.h=(i.h+a)%360,o.push(e(i));return o}function k(t,r){r=r||6;for(var n=e(t).toHsv(),i=n.h,a=n.s,o=n.v,s=[],l=1/r;r--;)s.push(e({h:i,s:a,v:o})),o=(o+l)%1;return s}function A(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}function M(t){return t=parseFloat(t),(isNaN(t)||0>t||t>1)&&(t=1),t}function T(t,e){S(t)&&(t=\"100%\");var r=C(t);return t=V(e,q(0,parseFloat(t))),r&&(t=parseInt(t*e,10)/100),B.abs(t-e)<1e-6?1:t%e/parseFloat(e)}function E(t){return V(1,q(0,t))}function L(t){return parseInt(t,16)}function S(t){return\"string\"==typeof t&&-1!=t.indexOf(\".\")&&1===parseFloat(t)}function C(t){return\"string\"==typeof t&&-1!=t.indexOf(\"%\")}function z(t){return 1==t.length?\"0\"+t:\"\"+t}function P(t){return 1>=t&&(t=100*t+\"%\"),t}function R(t){return Math.round(255*parseFloat(t)).toString(16)}function O(t){return L(t)/255}function I(t){t=t.replace(j,\"\").replace(F,\"\").toLowerCase();var e=!1;if(G[t])t=G[t],e=!0;else if(\"transparent\"==t)return{r:0,g:0,b:0,a:0,format:\"name\"};var r;return(r=X.rgb.exec(t))?{r:r[1],g:r[2],b:r[3]}:(r=X.rgba.exec(t))?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=X.hsl.exec(t))?{h:r[1],s:r[2],l:r[3]}:(r=X.hsla.exec(t))?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=X.hsv.exec(t))?{h:r[1],s:r[2],v:r[3]}:(r=X.hsva.exec(t))?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=X.hex8.exec(t))?{a:O(r[1]),r:L(r[2]),g:L(r[3]),b:L(r[4]),format:e?\"name\":\"hex8\"}:(r=X.hex6.exec(t))?{r:L(r[1]),g:L(r[2]),b:L(r[3]),format:e?\"name\":\"hex\"}:(r=X.hex3.exec(t))?{r:L(r[1]+\"\"+r[1]),g:L(r[2]+\"\"+r[2]),b:L(r[3]+\"\"+r[3]),format:e?\"name\":\"hex\"}:!1}function N(t){var e,r;return t=t||{level:\"AA\",size:\"small\"},e=(t.level||\"AA\").toUpperCase(),r=(t.size||\"small\").toLowerCase(),\"AA\"!==e&&\"AAA\"!==e&&(e=\"AA\"),\"small\"!==r&&\"large\"!==r&&(r=\"small\"),{level:e,size:r}}var j=/^\\s+/,F=/\\s+$/,D=0,B=Math,U=B.round,V=B.min,q=B.max,H=B.random;e.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var t,e,r,n,i,a,o=this.toRgb();return t=o.r/255,e=o.g/255,r=o.b/255,n=.03928>=t?t/12.92:Math.pow((t+.055)/1.055,2.4),i=.03928>=e?e/12.92:Math.pow((e+.055)/1.055,2.4),a=.03928>=r?r/12.92:Math.pow((r+.055)/1.055,2.4),.2126*n+.7152*i+.0722*a},setAlpha:function(t){return this._a=M(t),this._roundA=U(100*this._a)/100,this},toHsv:function(){var t=s(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=s(this._r,this._g,this._b),e=U(360*t.h),r=U(100*t.s),n=U(100*t.v);return 1==this._a?\"hsv(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsva(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHsl:function(){var t=a(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=a(this._r,this._g,this._b),e=U(360*t.h),r=U(100*t.s),n=U(100*t.l);return 1==this._a?\"hsl(\"+e+\", \"+r+\"%, \"+n+\"%)\":\"hsla(\"+e+\", \"+r+\"%, \"+n+\"%, \"+this._roundA+\")\"},toHex:function(t){return c(this._r,this._g,this._b,t)},toHexString:function(t){return\"#\"+this.toHex(t)},toHex8:function(){return u(this._r,this._g,this._b,this._a)},toHex8String:function(){return\"#\"+this.toHex8()},toRgb:function(){return{r:U(this._r),g:U(this._g),b:U(this._b),a:this._a}},toRgbString:function(){return 1==this._a?\"rgb(\"+U(this._r)+\", \"+U(this._g)+\", \"+U(this._b)+\")\":\"rgba(\"+U(this._r)+\", \"+U(this._g)+\", \"+U(this._b)+\", \"+this._roundA+\")\"},toPercentageRgb:function(){return{r:U(100*T(this._r,255))+\"%\",g:U(100*T(this._g,255))+\"%\",b:U(100*T(this._b,255))+\"%\",a:this._a}},toPercentageRgbString:function(){return 1==this._a?\"rgb(\"+U(100*T(this._r,255))+\"%, \"+U(100*T(this._g,255))+\"%, \"+U(100*T(this._b,255))+\"%)\":\"rgba(\"+U(100*T(this._r,255))+\"%, \"+U(100*T(this._g,255))+\"%, \"+U(100*T(this._b,255))+\"%, \"+this._roundA+\")\"},toName:function(){return 0===this._a?\"transparent\":this._a<1?!1:Y[c(this._r,this._g,this._b,!0)]||!1},toFilter:function(t){var r=\"#\"+u(this._r,this._g,this._b,this._a),n=r,i=this._gradientType?\"GradientType = 1, \":\"\";if(t){var a=e(t);n=a.toHex8String()}return\"progid:DXImageTransform.Microsoft.gradient(\"+i+\"startColorstr=\"+r+\",endColorstr=\"+n+\")\"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0,i=!e&&n&&(\"hex\"===t||\"hex6\"===t||\"hex3\"===t||\"name\"===t);return i?\"name\"===t&&0===this._a?this.toName():this.toRgbString():(\"rgb\"===t&&(r=this.toRgbString()),\"prgb\"===t&&(r=this.toPercentageRgbString()),\"hex\"!==t&&\"hex6\"!==t||(r=this.toHexString()),\"hex3\"===t&&(r=this.toHexString(!0)),\"hex8\"===t&&(r=this.toHex8String()),\"name\"===t&&(r=this.toName()),\"hsl\"===t&&(r=this.toHslString()),\"hsv\"===t&&(r=this.toHsvString()),r||this.toHexString())},clone:function(){return e(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(p,arguments)},brighten:function(){return this._applyModification(g,arguments)},darken:function(){return this._applyModification(v,arguments)},desaturate:function(){return this._applyModification(f,arguments)},saturate:function(){return this._applyModification(h,arguments)},greyscale:function(){return this._applyModification(d,arguments)},spin:function(){return this._applyModification(m,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(w,arguments)},complement:function(){return this._applyCombination(y,arguments)},monochromatic:function(){return this._applyCombination(k,arguments)},splitcomplement:function(){return this._applyCombination(_,arguments)},triad:function(){return this._applyCombination(b,arguments)},tetrad:function(){return this._applyCombination(x,arguments)}},e.fromRatio=function(t,r){if(\"object\"==typeof t){var n={};for(var i in t)t.hasOwnProperty(i)&&(\"a\"===i?n[i]=t[i]:n[i]=P(t[i]));t=n}return e(t,r)},e.equals=function(t,r){return t&&r?e(t).toRgbString()==e(r).toRgbString():!1},e.random=function(){return e.fromRatio({r:H(),g:H(),b:H()})},e.mix=function(t,r,n){n=0===n?0:n||50;var i,a=e(t).toRgb(),o=e(r).toRgb(),s=n/100,l=2*s-1,c=o.a-a.a;i=l*c==-1?l:(l+c)/(1+l*c),i=(i+1)/2;var u=1-i,f={r:o.r*i+a.r*u,g:o.g*i+a.g*u,b:o.b*i+a.b*u,a:o.a*s+a.a*(1-s)};return e(f)},e.readability=function(t,r){var n=e(t),i=e(r);return(Math.max(n.getLuminance(),i.getLuminance())+.05)/(Math.min(n.getLuminance(),i.getLuminance())+.05)},e.isReadable=function(t,r,n){var i,a,o=e.readability(t,r);switch(a=!1,i=N(n),i.level+i.size){case\"AAsmall\":case\"AAAlarge\":a=o>=4.5;break;case\"AAlarge\":a=o>=3;break;case\"AAAsmall\":a=o>=7}return a},e.mostReadable=function(t,r,n){var i,a,o,s,l=null,c=0;n=n||{},a=n.includeFallbackColors,o=n.level,s=n.size;for(var u=0;uc&&(c=i,l=e(r[u]));return e.isReadable(t,l,{level:o,size:s})||!a?l:(n.includeFallbackColors=!1,e.mostReadable(t,[\"#fff\",\"#000\"],n))};var G=e.names={aliceblue:\"f0f8ff\",antiquewhite:\"faebd7\",aqua:\"0ff\",aquamarine:\"7fffd4\",azure:\"f0ffff\",beige:\"f5f5dc\",bisque:\"ffe4c4\",black:\"000\",blanchedalmond:\"ffebcd\",blue:\"00f\",blueviolet:\"8a2be2\",brown:\"a52a2a\",burlywood:\"deb887\",burntsienna:\"ea7e5d\",cadetblue:\"5f9ea0\",chartreuse:\"7fff00\",chocolate:\"d2691e\",coral:\"ff7f50\",cornflowerblue:\"6495ed\",cornsilk:\"fff8dc\",crimson:\"dc143c\",cyan:\"0ff\",darkblue:\"00008b\",darkcyan:\"008b8b\",darkgoldenrod:\"b8860b\",darkgray:\"a9a9a9\",darkgreen:\"006400\",darkgrey:\"a9a9a9\",darkkhaki:\"bdb76b\",darkmagenta:\"8b008b\",darkolivegreen:\"556b2f\",darkorange:\"ff8c00\",darkorchid:\"9932cc\",darkred:\"8b0000\",darksalmon:\"e9967a\",darkseagreen:\"8fbc8f\",darkslateblue:\"483d8b\",darkslategray:\"2f4f4f\",darkslategrey:\"2f4f4f\",darkturquoise:\"00ced1\",darkviolet:\"9400d3\",deeppink:\"ff1493\",deepskyblue:\"00bfff\",dimgray:\"696969\",dimgrey:\"696969\",dodgerblue:\"1e90ff\",firebrick:\"b22222\",floralwhite:\"fffaf0\",forestgreen:\"228b22\",fuchsia:\"f0f\",gainsboro:\"dcdcdc\",ghostwhite:\"f8f8ff\",gold:\"ffd700\",goldenrod:\"daa520\",gray:\"808080\",green:\"008000\",greenyellow:\"adff2f\",grey:\"808080\",honeydew:\"f0fff0\",hotpink:\"ff69b4\",indianred:\"cd5c5c\",indigo:\"4b0082\",ivory:\"fffff0\",khaki:\"f0e68c\",lavender:\"e6e6fa\",lavenderblush:\"fff0f5\",lawngreen:\"7cfc00\",lemonchiffon:\"fffacd\",lightblue:\"add8e6\",lightcoral:\"f08080\",lightcyan:\"e0ffff\",lightgoldenrodyellow:\"fafad2\",lightgray:\"d3d3d3\",lightgreen:\"90ee90\",lightgrey:\"d3d3d3\",lightpink:\"ffb6c1\",lightsalmon:\"ffa07a\",lightseagreen:\"20b2aa\",lightskyblue:\"87cefa\",lightslategray:\"789\",lightslategrey:\"789\",lightsteelblue:\"b0c4de\",lightyellow:\"ffffe0\",lime:\"0f0\",limegreen:\"32cd32\",linen:\"faf0e6\",magenta:\"f0f\",maroon:\"800000\",mediumaquamarine:\"66cdaa\",mediumblue:\"0000cd\",mediumorchid:\"ba55d3\",mediumpurple:\"9370db\",mediumseagreen:\"3cb371\",mediumslateblue:\"7b68ee\",mediumspringgreen:\"00fa9a\",mediumturquoise:\"48d1cc\",mediumvioletred:\"c71585\",midnightblue:\"191970\",mintcream:\"f5fffa\",mistyrose:\"ffe4e1\",moccasin:\"ffe4b5\",navajowhite:\"ffdead\",navy:\"000080\",oldlace:\"fdf5e6\",olive:\"808000\",olivedrab:\"6b8e23\",orange:\"ffa500\",orangered:\"ff4500\",orchid:\"da70d6\",palegoldenrod:\"eee8aa\",palegreen:\"98fb98\",paleturquoise:\"afeeee\",palevioletred:\"db7093\",papayawhip:\"ffefd5\",peachpuff:\"ffdab9\",peru:\"cd853f\",pink:\"ffc0cb\",plum:\"dda0dd\",powderblue:\"b0e0e6\",purple:\"800080\",rebeccapurple:\"663399\",red:\"f00\",rosybrown:\"bc8f8f\",royalblue:\"4169e1\",saddlebrown:\"8b4513\",salmon:\"fa8072\",sandybrown:\"f4a460\",seagreen:\"2e8b57\",seashell:\"fff5ee\",sienna:\"a0522d\",silver:\"c0c0c0\",skyblue:\"87ceeb\",slateblue:\"6a5acd\",slategray:\"708090\",slategrey:\"708090\",snow:\"fffafa\",springgreen:\"00ff7f\",steelblue:\"4682b4\",tan:\"d2b48c\",teal:\"008080\",thistle:\"d8bfd8\",tomato:\"ff6347\",turquoise:\"40e0d0\",violet:\"ee82ee\",wheat:\"f5deb3\",white:\"fff\",whitesmoke:\"f5f5f5\",yellow:\"ff0\",yellowgreen:\"9acd32\"},Y=e.hexNames=A(G),X=function(){var t=\"[-\\\\+]?\\\\d+%?\",e=\"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\",r=\"(?:\"+e+\")|(?:\"+t+\")\",n=\"[\\\\s|\\\\(]+(\"+r+\")[,|\\\\s]+(\"+r+\")[,|\\\\s]+(\"+r+\")\\\\s*\\\\)?\",i=\"[\\\\s|\\\\(]+(\"+r+\")[,|\\\\s]+(\"+r+\")[,|\\\\s]+(\"+r+\")[,|\\\\s]+(\"+r+\")\\\\s*\\\\)?\";return{rgb:new RegExp(\"rgb\"+n),rgba:new RegExp(\"rgba\"+i),hsl:new RegExp(\"hsl\"+n),hsla:new RegExp(\"hsla\"+i),hsv:new RegExp(\"hsv\"+n),hsva:new RegExp(\"hsva\"+i),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();\"undefined\"!=typeof r&&r.exports?r.exports=e:\"function\"==typeof t&&t.amd?t(function(){return e}):window.tinycolor=e}()},{}],275:[function(e,r,n){!function(e,i){\"object\"==typeof n&&\"undefined\"!=typeof r?i(n):\"function\"==typeof t&&t.amd?t([\"exports\"],i):i(e.topojson={})}(this,function(t){\"use strict\";function e(){}function r(t){if(!t)return e;var r,n,i=t.scale[0],a=t.scale[1],o=t.translate[0],s=t.translate[1];return function(t,e){e||(r=n=0),t[0]=(r+=t[0])*i+o,t[1]=(n+=t[1])*a+s}}function n(t){if(!t)return e;var r,n,i=t.scale[0],a=t.scale[1],o=t.translate[0],s=t.translate[1];return function(t,e){e||(r=n=0);var l=(t[0]-o)/i|0,c=(t[1]-s)/a|0;t[0]=l-r,t[1]=c-n,r=l,n=c}}function i(t,e){for(var r,n=t.length,i=n-e;i<--n;)r=t[i],t[i++]=t[n],t[n]=r}function a(t,e){for(var r=0,n=t.length;n>r;){var i=r+n>>>1;t[i]t?~t:t],a=0,o=n.length;o>a;++a)e.push(r=n[a].slice()),u(r,a);0>t&&i(e,o)}function a(t){return t=t.slice(),u(t,0),t}function o(t){for(var e=[],r=0,i=t.length;i>r;++r)n(t[r],e);return e.length<2&&e.push(e[0].slice()),e}function s(t){for(var e=o(t);e.length<4;)e.push(e[0].slice());return e}function l(t){return t.map(s)}function c(t){var e=t.type;return\"GeometryCollection\"===e?{type:e,geometries:t.geometries.map(c)}:e in h?{type:e,coordinates:h[e](t)}:null}var u=r(t.transform),f=t.arcs,h={Point:function(t){return a(t.coordinates)},MultiPoint:function(t){return t.coordinates.map(a)},LineString:function(t){return o(t.arcs)},MultiLineString:function(t){return t.arcs.map(o)},Polygon:function(t){return l(t.arcs)},MultiPolygon:function(t){return t.arcs.map(l)}};return c(e)}function c(t,e){function r(e){var r,n=t.arcs[0>e?~e:e],i=n[0];return t.transform?(r=[0,0],n.forEach(function(t){r[0]+=t[0],r[1]+=t[1]})):r=n[n.length-1],0>e?[r,i]:[i,r]}function n(t,e){for(var r in t){var n=t[r];delete e[n.start],delete n.start,delete n.end,n.forEach(function(t){i[0>t?~t:t]=1}),s.push(n)}}var i={},a={},o={},s=[],l=-1;return e.forEach(function(r,n){var i,a=t.arcs[0>r?~r:r];a.length<3&&!a[1][0]&&!a[1][1]&&(i=e[++l],e[l]=r,e[n]=i)}),e.forEach(function(t){var e,n,i=r(t),s=i[0],l=i[1];if(e=o[s])if(delete o[e.end],e.push(t),e.end=l,n=a[l]){delete a[n.start];var c=n===e?e:e.concat(n);a[c.start=e.start]=o[c.end=n.end]=c}else a[e.start]=o[e.end]=e;else if(e=a[l])if(delete a[e.start],\n", + "e.unshift(t),e.start=s,n=o[s]){delete o[n.end];var u=n===e?e:n.concat(e);a[u.start=n.start]=o[u.end=e.end]=u}else a[e.start]=o[e.end]=e;else e=[t],a[e.start=s]=o[e.end=l]=e}),n(o,a),n(a,o),e.forEach(function(t){i[0>t?~t:t]||s.push([t])}),s}function u(t){return l(t,f.apply(this,arguments))}function f(t,e,r){function n(t){var e=0>t?~t:t;(u[e]||(u[e]=[])).push({i:t,g:l})}function i(t){t.forEach(n)}function a(t){t.forEach(i)}function o(t){\"GeometryCollection\"===t.type?t.geometries.forEach(o):t.type in f&&(l=t,f[t.type](t.arcs))}var s=[];if(arguments.length>1){var l,u=[],f={LineString:i,MultiLineString:a,Polygon:a,MultiPolygon:function(t){t.forEach(a)}};o(e),u.forEach(arguments.length<3?function(t){s.push(t[0].i)}:function(t){r(t[0].g,t[t.length-1].g)&&s.push(t[0].i)})}else for(var h=0,d=t.arcs.length;d>h;++h)s.push(h);return{type:\"MultiLineString\",arcs:c(t,s)}}function h(t){var e=t[0],r=t[1],n=t[2];return Math.abs((e[0]-n[0])*(r[1]-e[1])-(e[0]-r[0])*(n[1]-e[1]))}function d(t){for(var e,r=-1,n=t.length,i=t[n-1],a=0;++re?~e:e]||(i[e]=[])).push(t)})}),a.push(t)}function n(e){return d(l(t,{type:\"Polygon\",arcs:[e]}).coordinates[0])>0}var i={},a=[],o=[];return e.forEach(function(t){\"Polygon\"===t.type?r(t.arcs):\"MultiPolygon\"===t.type&&t.arcs.forEach(r)}),a.forEach(function(t){if(!t._){var e=[],r=[t];for(t._=1,o.push(e);t=r.pop();)e.push(t),t.forEach(function(t){t.forEach(function(t){i[0>t?~t:t].forEach(function(t){t._||(t._=1,r.push(t))})})})}}),a.forEach(function(t){delete t._}),{type:\"MultiPolygon\",arcs:o.map(function(e){var r,a=[];if(e.forEach(function(t){t.forEach(function(t){t.forEach(function(t){i[0>t?~t:t].length<2&&a.push(t)})})}),a=c(t,a),(r=a.length)>1)for(var o,s=n(e[0][0]),l=0;r>l;++l)if(s===n(a[l])){o=a[0],a[0]=a[l],a[l]=o;break}return a})}}function v(t){function e(t,e){t.forEach(function(t){0>t&&(t=~t);var r=i[t];r?r.push(e):i[t]=[e]})}function r(t,r){t.forEach(function(t){e(t,r)})}function n(t,e){\"GeometryCollection\"===t.type?t.geometries.forEach(function(t){n(t,e)}):t.type in s&&s[t.type](t.arcs,e)}var i={},o=t.map(function(){return[]}),s={LineString:e,MultiLineString:r,Polygon:r,MultiPolygon:function(t,e){t.forEach(function(t){r(t,e)})}};t.forEach(n);for(var l in i)for(var c=i[l],u=c.length,f=0;u>f;++f)for(var h=f+1;u>h;++h){var d,p=c[f],g=c[h];(d=o[p])[l=a(d,g)]!==g&&d.splice(l,0,g),(d=o[g])[l=a(d,p)]!==p&&d.splice(l,0,p)}return o}function m(t,e){return t[1][2]-e[1][2]}function y(){function t(t,e){for(;e>0;){var r=(e+1>>1)-1,i=n[r];if(m(t,i)>=0)break;n[i._=e]=i,n[t._=e=r]=t}}function e(t,e){for(;;){var r=e+1<<1,a=r-1,o=e,s=n[o];if(i>a&&m(n[a],s)<0&&(s=n[o=a]),i>r&&m(n[r],s)<0&&(s=n[o=r]),o===e)break;n[s._=e]=s,n[t._=e=o]=t}}var r={},n=[],i=0;return r.push=function(e){return t(n[e._=i]=e,i++),i},r.pop=function(){if(!(0>=i)){var t,r=n[0];return--i>0&&(t=n[i],e(n[t._=0]=t,0)),r}},r.remove=function(r){var a,o=r._;if(n[o]===r)return o!==--i&&(a=n[i],(m(a,r)<0?t:e)(n[a._=o]=a,o)),o},r}function b(t,e){function i(t){s.remove(t),t[1][2]=e(t),s.push(t)}var a=r(t.transform),o=n(t.transform),s=y();return e||(e=h),t.arcs.forEach(function(t){var r,n,l,c,u=[],f=0;for(n=0,l=t.length;l>n;++n)c=t[n],a(t[n]=[c[0],c[1],1/0],n);for(n=1,l=t.length-1;l>n;++n)r=t.slice(n-1,n+2),r[1][2]=e(r),u.push(r),s.push(r);for(n=0,l=u.length;l>n;++n)r=u[n],r.previous=u[n-1],r.next=u[n+1];for(;r=s.pop();){var h=r.previous,d=r.next;r[1][2]0?r.pop():new ArrayBuffer(t)}function s(t){return new Uint8Array(o(t),0,t)}function l(t){return new Uint16Array(o(2*t),0,t)}function c(t){return new Uint32Array(o(4*t),0,t)}function u(t){return new Int8Array(o(t),0,t)}function f(t){return new Int16Array(o(2*t),0,t)}function h(t){return new Int32Array(o(4*t),0,t)}function d(t){return new Float32Array(o(4*t),0,t)}function p(t){return new Float64Array(o(8*t),0,t)}function g(t){return x?new Uint8ClampedArray(o(t),0,t):s(t)}function v(t){return new DataView(o(t),0,t)}function m(t){t=y.nextPow2(t);var e=y.log2(t),r=k[e];return r.length>0?r.pop():new n(t)}var y=t(\"bit-twiddle\"),b=t(\"dup\");e.__TYPEDARRAY_POOL||(e.__TYPEDARRAY_POOL={UINT8:b([32,0]),UINT16:b([32,0]),UINT32:b([32,0]),INT8:b([32,0]),INT16:b([32,0]),INT32:b([32,0]),FLOAT:b([32,0]),DOUBLE:b([32,0]),DATA:b([32,0]),UINT8C:b([32,0]),BUFFER:b([32,0])});var x=\"undefined\"!=typeof Uint8ClampedArray,_=e.__TYPEDARRAY_POOL;_.UINT8C||(_.UINT8C=b([32,0])),_.BUFFER||(_.BUFFER=b([32,0]));var w=_.DATA,k=_.BUFFER;r.free=function(t){if(n.isBuffer(t))k[y.log2(t.length)].push(t);else{if(\"[object ArrayBuffer]\"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|y.log2(e);w[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeInt8=r.freeInt16=r.freeInt32=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=a,r.freeArrayBuffer=i,r.freeBuffer=function(t){k[y.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||\"arraybuffer\"===e)return o(t);switch(e){case\"uint8\":return s(t);case\"uint16\":return l(t);case\"uint32\":return c(t);case\"int8\":return u(t);case\"int16\":return f(t);case\"int32\":return h(t);case\"float\":case\"float32\":return d(t);case\"double\":case\"float64\":return p(t);case\"uint8_clamped\":return g(t);case\"buffer\":return m(t);case\"data\":case\"dataview\":return v(t);default:return null}return null},r.mallocArrayBuffer=o,r.mallocUint8=s,r.mallocUint16=l,r.mallocUint32=c,r.mallocInt8=u,r.mallocInt16=f,r.mallocInt32=h,r.mallocFloat32=r.mallocFloat=d,r.mallocFloat64=r.mallocDouble=p,r.mallocUint8Clamped=g,r.mallocDataView=v,r.mallocBuffer=m,r.clearCache=function(){for(var t=0;32>t;++t)_.UINT8[t].length=0,_.UINT16[t].length=0,_.UINT32[t].length=0,_.INT8[t].length=0,_.INT16[t].length=0,_.INT32[t].length=0,_.FLOAT[t].length=0,_.DOUBLE[t].length=0,_.UINT8C[t].length=0,w[t].length=0,k[t].length=0}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},t(\"buffer\").Buffer)},{\"bit-twiddle\":50,buffer:51,dup:115}],279:[function(t,e,r){\"use strict\";function n(t,e){for(var r=1,n=t.length,i=t[0],a=t[0],o=1;n>o;++o)if(a=i,i=t[o],e(i,a)){if(o===r){r++;continue}t[r++]=i}return t.length=r,t}function i(t){for(var e=1,r=t.length,n=t[0],i=t[0],a=1;r>a;++a,i=n)if(i=n,n=t[a],n!==i){if(a===e){e++;continue}t[e++]=n}return t.length=e,t}function a(t,e,r){return 0===t.length?t:e?(r||t.sort(e),n(t,e)):(r||t.sort(),i(t))}e.exports=a},{}],280:[function(t,e,r){\"use strict\";function n(t,e){return\"object\"==typeof e&&null!==e||(e={}),i(t,e.canvas||a,e.context||o,e)}e.exports=n;var i=t(\"./lib/vtext\"),a=null,o=null;\"undefined\"!=typeof document&&(a=document.createElement(\"canvas\"),a.width=8192,a.height=1024,o=a.getContext(\"2d\"))},{\"./lib/vtext\":281}],281:[function(t,e,r){\"use strict\";function n(t,e,r){for(var n=e.textAlign||\"start\",i=e.textBaseline||\"alphabetic\",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;s>l;++l)for(var c=t[l],u=0;2>u;++u)a[u]=0|Math.min(a[u],c[u]),o[u]=0|Math.max(o[u],c[u]);var f=0;switch(n){case\"center\":f=-.5*(a[0]+o[0]);break;case\"right\":case\"end\":f=-o[0];break;case\"left\":case\"start\":f=-a[0];break;default:throw new Error(\"vectorize-text: Unrecognized textAlign: '\"+n+\"'\")}var h=0;switch(i){case\"hanging\":case\"top\":h=-a[1];break;case\"middle\":h=-.5*(a[1]+o[1]);break;case\"alphabetic\":case\"ideographic\":h=-3*r;break;case\"bottom\":h=-o[1];break;default:throw new Error(\"vectorize-text: Unrecoginized textBaseline: '\"+i+\"'\")}var d=1/r;return\"lineHeight\"in e?d*=+e.lineHeight:\"width\"in e?d=e.width/(o[0]-a[0]):\"height\"in e&&(d=e.height/(o[1]-a[1])),t.map(function(t){return[d*(t[0]+f),d*(t[1]+h)]})}function i(t,e,r,n){var i=0|Math.ceil(e.measureText(r).width+2*n);if(i>8192)throw new Error(\"vectorize-text: String too long (sorry, this will get fixed later)\");var a=3*n;t.height=l&&o.push(s)}for(;o.length>0;){var c=o.pop();n[c]=!1;for(var u=r[c],s=0;sn;++n){var a=t[n];e=Math.max(e,a[0],a[1])}e=(0|e)+1}e=0|e;for(var o=new Array(e),n=0;e>n;++n)o[n]=[];for(var n=0;r>n;++n){var a=t[n];o[a[0]].push(a[1]),o[a[1]].push(a[0])}for(var s=0;e>s;++s)i(o[s],function(t,e){return t-e});return o}e.exports=n;var i=t(\"uniq\")},{uniq:279}],284:[function(t,e,r){\"use strict\";function n(t,e){function r(t,e){var r=c[e][t[e]];r.splice(r.indexOf(t),1)}function n(t,n,a){for(var o,s,l,u=0;2>u;++u)if(c[u][n].length>0){o=c[u][n][0],l=u;break}s=o[1^l];for(var f=0;2>f;++f)for(var h=c[f][n],d=0;d0&&(o=p,s=g,l=f)}return a?s:(o&&r(o,l),s)}function a(t,a){var o=c[a][t][0],s=[t];r(o,a);for(var l=o[1^a];;){for(;l!==t;)s.push(l),l=n(s[s.length-2],l,!1);if(c[0][t].length+c[1][t].length===0)break;var u=s[s.length-1],f=t,h=s[1],d=n(u,f,!0);if(i(e[u],e[f],e[h],e[d])<0)break;s.push(t),l=n(u,f)}return s}function o(t,e){return e[1]===e[e.length-1]}for(var s=0|e.length,l=t.length,c=[new Array(s),new Array(s)],u=0;s>u;++u)c[0][u]=[],c[1][u]=[];for(var u=0;l>u;++u){var f=t[u];c[0][f[0]].push(f),c[1][f[1]].push(f)}for(var h=[],u=0;s>u;++u)c[0][u].length+c[1][u].length===0&&h.push([u]);for(var u=0;s>u;++u)for(var d=0;2>d;++d){for(var p=[];c[d][u].length>0;){var g=(c[0][u].length,a(u,d));o(p,g)?p.push.apply(p,g):(p.length>0&&h.push(p),p=g)}p.length>0&&h.push(p)}return h}e.exports=n;var i=t(\"compare-angle\")},{\"compare-angle\":285}],285:[function(t,e,r){\"use strict\";function n(t,e,r){var n=s(t[0],-e[0]),i=s(t[1],-e[1]),a=s(r[0],-e[0]),o=s(r[1],-e[1]),u=c(l(n,a),l(i,o));return u[u.length-1]>=0}function i(t,e,r,i){var s=a(e,r,i);if(0===s){var l=o(a(t,e,r)),c=o(a(t,e,i));if(l===c){if(0===l){var u=n(t,e,r),f=n(t,e,i);return u===f?0:u?1:-1}return 0}return 0===c?l>0?-1:n(t,e,i)?-1:1:0===l?c>0?1:n(t,e,r)?1:-1:o(c-l)}var h=a(t,e,r);if(h>0)return s>0&&a(t,e,i)>0?1:-1;if(0>h)return s>0||a(t,e,i)>0?1:-1;var d=a(t,e,i);return d>0?1:n(t,e,r)?1:-1}e.exports=i;var a=t(\"robust-orientation\"),o=t(\"signum\"),s=t(\"two-sum\"),l=t(\"robust-product\"),c=t(\"robust-sum\")},{\"robust-orientation\":259,\"robust-product\":286,\"robust-sum\":262,signum:287,\"two-sum\":277}],286:[function(t,e,r){\"use strict\";function n(t,e){if(1===t.length)return a(e,t[0]);if(1===e.length)return a(t,e[0]);if(0===t.length||0===e.length)return[0];var r=[0];if(t.lengtht?-1:t>0?1:0}},{}],288:[function(t,e,r){arguments[4][21][0].apply(r,arguments)},{dup:21}],289:[function(t,e,r){\"use strict\";function n(t,e,r,n,i){this.mid=t,this.left=e,this.right=r,this.leftPoints=n,this.rightPoints=i,this.count=(e?e.count:0)+(r?r.count:0)+n.length}function i(t,e){t.mid=e.mid,t.left=e.left,t.right=e.right,t.leftPoints=e.leftPoints,t.rightPoints=e.rightPoints,t.count=e.count}function a(t,e){var r=p(e);t.mid=r.mid,t.left=r.left,t.right=r.right,t.leftPoints=r.leftPoints,t.rightPoints=r.rightPoints,t.count=r.count}function o(t,e){var r=t.intervals([]);r.push(e),a(t,r)}function s(t,e){var r=t.intervals([]),n=r.indexOf(e);return 0>n?y:(r.splice(n,1),a(t,r),b)}function l(t,e,r){for(var n=0;n=0&&t[n][1]>=e;--n){var i=r(t[n]);if(i)return i}}function u(t,e){for(var r=0;r>1],a=[],o=[],s=[],r=0;r3*(e+1)?o(this,t):this.left.insert(t):this.left=p([t]);else if(t[0]>this.mid)this.right?4*(this.right.count+1)>3*(e+1)?o(this,t):this.right.insert(t):this.right=p([t]);else{var r=m.ge(this.leftPoints,t,h),n=m.ge(this.rightPoints,t,d);this.leftPoints.splice(r,0,t),this.rightPoints.splice(n,0,t)}},_.remove=function(t){var e=this.count-this.leftPoints;if(t[1]3*(e-1))return s(this,t);var n=this.left.remove(t);return n===x?(this.left=null,this.count-=1,b):(n===b&&(this.count-=1),n)}if(t[0]>this.mid){if(!this.right)return y;var a=this.left?this.left.count:0;if(4*a>3*(e-1))return s(this,t);var n=this.right.remove(t);return n===x?(this.right=null,this.count-=1,b):(n===b&&(this.count-=1),n)}if(1===this.count)return this.leftPoints[0]===t?x:y;if(1===this.leftPoints.length&&this.leftPoints[0]===t){if(this.left&&this.right){for(var o=this,l=this.left;l.right;)o=l,l=l.right;if(o===this)l.right=this.right;else{var c=this.left,n=this.right;o.count-=l.count,o.right=l.left,l.left=c,l.right=n}i(this,l),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?i(this,this.left):i(this,this.right);return b}for(var c=m.ge(this.leftPoints,t,h);cthis.mid){if(this.right){var r=this.right.queryPoint(t,e);if(r)return r}return c(this.rightPoints,t,e)}return u(this.leftPoints,e)},_.queryInterval=function(t,e,r){if(tthis.mid&&this.right){var n=this.right.queryInterval(t,e,r);if(n)return n}return ethis.mid?c(this.rightPoints,t,r):u(this.leftPoints,r)};var w=g.prototype;w.insert=function(t){this.root?this.root.insert(t):this.root=new n(t[0],null,null,[t],[t])},w.remove=function(t){if(this.root){var e=this.root.remove(t);return e===x&&(this.root=null),e!==y}return!1},w.queryPoint=function(t,e){return this.root?this.root.queryPoint(t,e):void 0},w.queryInterval=function(t,e,r){return e>=t&&this.root?this.root.queryInterval(t,e,r):void 0},Object.defineProperty(w,\"count\",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(w,\"intervals\",{get:function(){return this.root?this.root.intervals([]):[]}})},{\"binary-search-bounds\":288}],290:[function(t,e,r){\"use strict\";function n(t,e){var r,n;if(e[0][0]e[1][0])){var i=Math.min(t[0][1],t[1][1]),o=Math.max(t[0][1],t[1][1]),s=Math.min(e[0][1],e[1][1]),l=Math.max(e[0][1],e[1][1]);return s>o?o-s:i>l?i-l:o-l}r=e[1],n=e[0]}var c,u;t[0][1]e[1][0]))return n(e,t);r=e[1],i=e[0]}var o,s;if(t[0][0]t[1][0]))return-n(t,e);o=t[1],s=t[0]}var l=a(r,i,s),c=a(r,i,o);if(0>l){if(0>=c)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=a(s,o,i),c=a(s,o,r),0>l){if(0>=c)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return i[0]-s[0]}e.exports=i;var a=t(\"robust-orientation\")},{\"robust-orientation\":259}],291:[function(t,e,r){\"use strict\";function n(t,e,r,n,i,a){this._color=t,this.key=e,this.value=r,this.left=n,this.right=i,this._count=a}function i(t){return new n(t._color,t.key,t.value,t.left,t.right,t._count)}function a(t,e){return new n(t,e.key,e.value,e.left,e.right,e._count)}function o(t){t._count=1+(t.left?t.left._count:0)+(t.right?t.right._count:0)}function s(t,e){this._compare=t,this.root=e}function l(t,e){if(e.left){var r=l(t,e.left);if(r)return r}var r=t(e.key,e.value);return r?r:e.right?l(t,e.right):void 0}function c(t,e,r,n){var i=e(t,n.key);if(0>=i){if(n.left){var a=c(t,e,r,n.left);if(a)return a}var a=r(n.key,n.value);if(a)return a}return n.right?c(t,e,r,n.right):void 0}function u(t,e,r,n,i){var a,o=r(t,i.key),s=r(e,i.key);if(0>=o){if(i.left&&(a=u(t,e,r,n,i.left)))return a;if(s>0&&(a=n(i.key,i.value)))return a}return s>0&&i.right?u(t,e,r,n,i.right):void 0}function f(t,e){this.tree=t,this._stack=e}function h(t,e){t.key=e.key,t.value=e.value,t.left=e.left,t.right=e.right,t._color=e._color,t._count=e._count}function d(t){for(var e,r,n,s,l=t.length-1;l>=0;--l){if(e=t[l],0===l)return void(e._color=m);if(r=t[l-1],r.left===e){if(n=r.right,n.right&&n.right._color===v){if(n=r.right=i(n),s=n.right=i(n.right),r.right=n.left,n.left=r,n.right=s,n._color=r._color,e._color=m,r._color=m,s._color=m,o(r),o(n),l>1){var c=t[l-2];c.left===r?c.left=n:c.right=n}return void(t[l-1]=n)}if(n.left&&n.left._color===v){if(n=r.right=i(n),s=n.left=i(n.left),r.right=s.left,n.left=s.right,s.left=r,s.right=n,s._color=r._color,r._color=m,n._color=m,e._color=m,o(r),o(n),o(s),l>1){var c=t[l-2];c.left===r?c.left=s:c.right=s}return void(t[l-1]=s)}if(n._color===m){if(r._color===v)return r._color=m,void(r.right=a(v,n));r.right=a(v,n);continue}if(n=i(n),r.right=n.left,n.left=r,n._color=r._color,r._color=v,o(r),o(n),l>1){var c=t[l-2];c.left===r?c.left=n:c.right=n}t[l-1]=n,t[l]=r,l+11){var c=t[l-2];c.right===r?c.right=n:c.left=n}return void(t[l-1]=n)}if(n.right&&n.right._color===v){if(n=r.left=i(n),s=n.right=i(n.right),r.left=s.right,n.right=s.left,s.right=r,s.left=n,s._color=r._color,r._color=m,n._color=m,e._color=m,o(r),o(n),o(s),l>1){var c=t[l-2];c.right===r?c.right=s:c.left=s}return void(t[l-1]=s)}if(n._color===m){if(r._color===v)return r._color=m,void(r.left=a(v,n));r.left=a(v,n);continue}if(n=i(n),r.left=n.right,n.right=r,n._color=r._color,r._color=v,o(r),o(n),l>1){var c=t[l-2];c.right===r?c.right=n:c.left=n}t[l-1]=n,t[l]=r,l+1t?-1:t>e?1:0}function g(t){return new s(t||p,null)}e.exports=g;var v=0,m=1,y=s.prototype;Object.defineProperty(y,\"keys\",{get:function(){var t=[];return this.forEach(function(e,r){t.push(e)}),t}}),Object.defineProperty(y,\"values\",{get:function(){var t=[];return this.forEach(function(e,r){t.push(r)}),t}}),Object.defineProperty(y,\"length\",{get:function(){return this.root?this.root._count:0}}),y.insert=function(t,e){for(var r=this._compare,i=this.root,l=[],c=[];i;){var u=r(t,i.key);l.push(i),c.push(u),i=0>=u?i.left:i.right}l.push(new n(v,t,e,null,null,1));for(var f=l.length-2;f>=0;--f){var i=l[f];c[f]<=0?l[f]=new n(i._color,i.key,i.value,l[f+1],i.right,i._count+1):l[f]=new n(i._color,i.key,i.value,i.left,l[f+1],i._count+1)}for(var f=l.length-1;f>1;--f){var h=l[f-1],i=l[f];if(h._color===m||i._color===m)break;var d=l[f-2];if(d.left===h)if(h.left===i){var p=d.right;if(!p||p._color!==v){if(d._color=v,d.left=h.right,h._color=m,h.right=d,l[f-2]=h,l[f-1]=i,o(d),o(h),f>=3){var g=l[f-3];g.left===d?g.left=h:g.right=h}break}h._color=m,d.right=a(m,p),d._color=v,f-=1}else{var p=d.right;if(!p||p._color!==v){if(h.right=i.left,d._color=v,d.left=i.right,i._color=m,i.left=h,i.right=d,l[f-2]=i,l[f-1]=h,o(d),o(h),o(i),f>=3){var g=l[f-3];g.left===d?g.left=i:g.right=i}break}h._color=m,d.right=a(m,p),d._color=v,f-=1}else if(h.right===i){var p=d.left;if(!p||p._color!==v){if(d._color=v,d.right=h.left,h._color=m,h.left=d,l[f-2]=h,l[f-1]=i,o(d),o(h),f>=3){var g=l[f-3];g.right===d?g.right=h:g.left=h}break}h._color=m,d.left=a(m,p),d._color=v,f-=1}else{var p=d.left;if(!p||p._color!==v){if(h.left=i.right,d._color=v,d.right=i.left,i._color=m,i.right=h,i.left=d,l[f-2]=i,l[f-1]=h,o(d),o(h),o(i),f>=3){var g=l[f-3];g.right===d?g.right=i:g.left=i}break}h._color=m,d.left=a(m,p),d._color=v,f-=1}}return l[0]._color=m,new s(r,l[0])},y.forEach=function(t,e,r){if(this.root)switch(arguments.length){case 1:return l(t,this.root);case 2:return c(e,this._compare,t,this.root);case 3:if(this._compare(e,r)>=0)return;return u(e,r,this._compare,t,this.root)}},Object.defineProperty(y,\"begin\",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.left;return new f(this,t)}}),Object.defineProperty(y,\"end\",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.right;return new f(this,t)}}),y.at=function(t){if(0>t)return new f(this,[]);for(var e=this.root,r=[];;){if(r.push(e),e.left){if(t=e.right._count)break;e=e.right}return new f(this,[])},y.ge=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),0>=a&&(i=n.length),r=0>=a?r.left:r.right}return n.length=i,new f(this,n)},y.gt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),0>a&&(i=n.length),r=0>a?r.left:r.right}return n.length=i,new f(this,n)},y.lt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>0&&(i=n.length),r=0>=a?r.left:r.right}return n.length=i,new f(this,n)},y.le=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>=0&&(i=n.length),r=0>a?r.left:r.right}return n.length=i,new f(this,n)},y.find=function(t){for(var e=this._compare,r=this.root,n=[];r;){var i=e(t,r.key);if(n.push(r),0===i)return new f(this,n);r=0>=i?r.left:r.right}return new f(this,[])},y.remove=function(t){var e=this.find(t);return e?e.remove():this},y.get=function(t){for(var e=this._compare,r=this.root;r;){var n=e(t,r.key);if(0===n)return r.value;r=0>=n?r.left:r.right}};var b=f.prototype;Object.defineProperty(b,\"valid\",{get:function(){return this._stack.length>0}}),Object.defineProperty(b,\"node\",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),b.clone=function(){return new f(this.tree,this._stack.slice())},b.remove=function(){var t=this._stack;if(0===t.length)return this.tree;var e=new Array(t.length),r=t[t.length-1];e[e.length-1]=new n(r._color,r.key,r.value,r.left,r.right,r._count);for(var i=t.length-2;i>=0;--i){var r=t[i];r.left===t[i+1]?e[i]=new n(r._color,r.key,r.value,e[i+1],r.right,r._count):e[i]=new n(r._color,r.key,r.value,r.left,e[i+1],r._count)}if(r=e[e.length-1],r.left&&r.right){var a=e.length;for(r=r.left;r.right;)e.push(r),r=r.right;var o=e[a-1];e.push(new n(r._color,o.key,o.value,r.left,r.right,r._count)),e[a-1].key=r.key,e[a-1].value=r.value;for(var i=e.length-2;i>=a;--i)r=e[i],e[i]=new n(r._color,r.key,r.value,r.left,e[i+1],r._count);e[a-1].left=e[a]}if(r=e[e.length-1],r._color===v){var l=e[e.length-2];l.left===r?l.left=null:l.right===r&&(l.right=null),e.pop();for(var i=0;i0?this._stack[this._stack.length-1].key:void 0},enumerable:!0}),Object.defineProperty(b,\"value\",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1].value:void 0},enumerable:!0}),Object.defineProperty(b,\"index\",{get:function(){var t=0,e=this._stack;if(0===e.length){var r=this.tree.root;return r?r._count:0}e[e.length-1].left&&(t=e[e.length-1].left._count);for(var n=e.length-2;n>=0;--n)e[n+1]===e[n].right&&(++t,e[n].left&&(t+=e[n].left._count));return t},enumerable:!0}),b.next=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.right)for(e=e.right;e;)t.push(e),e=e.left;else for(t.pop();t.length>0&&t[t.length-1].right===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(b,\"hasNext\",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].right)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].left===t[e])return!0;return!1}}),b.update=function(t){var e=this._stack;if(0===e.length)throw new Error(\"Can't update empty node!\");var r=new Array(e.length),i=e[e.length-1];r[r.length-1]=new n(i._color,i.key,t,i.left,i.right,i._count);for(var a=e.length-2;a>=0;--a)i=e[a],i.left===e[a+1]?r[a]=new n(i._color,i.key,i.value,r[a+1],i.right,i._count):r[a]=new n(i._color,i.key,i.value,i.left,r[a+1],i._count);return new s(this.tree._compare,r[0])},b.prev=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.left)for(e=e.left;e;)t.push(e),e=e.right;else for(t.pop();t.length>0&&t[t.length-1].left===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(b,\"hasPrev\",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].left)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].right===t[e])return!0;return!1}})},{}],292:[function(t,e,r){\"use strict\";function n(t,e,r){this.slabs=t,this.coordinates=e,this.horizontal=r}function i(t,e){return t.y-e}function a(t,e){for(var r=null;t;){var n,i,o=t.key;o[0][0]s)t=t.left;else if(s>0)if(e[0]!==o[1][0])r=t,t=t.right;else{var l=a(t.right,e);if(l)return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l=a(t.right,e);if(l)return l;t=t.left}}return r}function o(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function s(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}function l(t){for(var e=t.length,r=2*e,i=new Array(r),a=0;e>a;++a){var l=t[a],c=l[0][0]a;){for(var v=i[a].x,m=[];r>a;){var y=i[a];if(y.x!==v)break;a+=1,y.segment[0][0]===y.x&&y.segment[1][0]===y.x?y.create&&(y.segment[0][1]e)return-1;var r=(this.slabs[e],a(this.slabs[e],t)),n=-1;if(r&&(n=r.value),this.coordinates[e]===t[0]){var o=null;if(r&&(o=r.key),e>0){var s=a(this.slabs[e-1],t);s&&(o?h(s.key,o)>0&&(o=s.key,n=s.value):(n=s.value,o=s.key))}var l=this.horizontal[e];if(l.length>0){var u=c.ge(l,t[1],i);if(u=l.length)return n;d=l[u]}}if(d.start)if(o){var p=f(o[0],o[1],[t[0],d.y]);o[0][0]>o[1][0]&&(p=-p),p>0&&(n=d.index)}else n=d.index;else d.y!==t[1]&&(n=d.index)}}}return n}},{\"./lib/order-segments\":290,\"binary-search-bounds\":288,\"functional-red-black-tree\":291,\"robust-orientation\":259}],293:[function(t,e,r){function n(){return!0}function i(t){return function(e,r){var i=t[e];return i?!!i.queryPoint(r,n):!1}}function a(t){for(var e={},r=0;rn)return 1;var i=t[n];if(!i){if(!(n>0&&e[n]===r[0]))return 1;i=t[n-1]}for(var a=1;i;){var o=i.key,s=f(r,o[0],o[1]);if(o[0][0]s)i=i.left;else{if(!(s>0))return 0;a=-1,i=i.right}else if(s>0)i=i.left;else{if(!(0>s))return 0;a=1,i=i.right}}return a}}function s(t){return 1}function l(t){return function(e){return t(e[0],e[1])?0:1}}function c(t,e){return function(r){return t(r[0],r[1])?0:e(r)}}function u(t){for(var e=t.length,r=[],n=[],i=0;e>i;++i)for(var u=t[i],f=u.length,d=f-1,p=0;f>p;d=p++){var g=u[d],v=u[p];g[0]===v[0]?n.push([g,v]):r.push([g,v])}if(0===r.length)return 0===n.length?s:l(a(n));var m=h(r),y=o(m.slabs,m.coordinates);return 0===n.length?y:c(a(n),y)}e.exports=u;var f=t(\"robust-orientation\")[3],h=t(\"slab-decomposition\"),d=t(\"interval-tree-1d\"),p=t(\"binary-search-bounds\")},{\"binary-search-bounds\":288,\"interval-tree-1d\":289,\"robust-orientation\":259,\"slab-decomposition\":292\n", + "}],294:[function(t,e,r){\"use strict\";function n(t,e){for(var r=new Array(t),n=0;t>n;++n)r[n]=e;return r}function i(t){for(var e=new Array(t),r=0;t>r;++r)e[r]=[];return e}function a(t,e){function r(t){for(var r=t.length,n=[0],i=0;r>i;++i){var a=e[t[i]],o=e[t[(i+1)%r]],s=c(-a[0],a[1]),l=c(-a[0],o[1]),f=c(o[0],a[1]),h=c(o[0],o[1]);n=u(n,u(u(s,l),u(f,h)))}return n[n.length-1]>0}function a(t){for(var e=t.length,r=0;e>r;++r)if(!O[t[r]])return!1;return!0}var d=h(t,e);t=d[0],e=d[1];for(var p=e.length,g=(t.length,o(t,e.length)),v=0;p>v;++v)if(g[v].length%2===1)throw new Error(\"planar-graph-to-polyline: graph must be manifold\");var m=s(t,e);m=m.filter(r);for(var y=m.length,b=new Array(y),x=new Array(y),v=0;y>v;++v){b[v]=v;var _=new Array(y),w=m[v].map(function(t){return e[t]}),k=l([w]),A=0;t:for(var M=0;y>M;++M)if(_[M]=0,v!==M){for(var T=m[M],E=T.length,L=0;E>L;++L){var S=k(e[T[L]]);if(0!==S){0>S&&(_[M]=1,A+=1);continue t}}_[M]=1,A+=1}x[v]=[A,v,_]}x.sort(function(t,e){return e[0]-t[0]});for(var v=0;y>v;++v)for(var _=x[v],C=_[1],z=_[2],M=0;y>M;++M)z[M]&&(b[M]=C);for(var P=i(y),v=0;y>v;++v)P[v].push(b[v]),P[b[v]].push(v);for(var R={},O=n(p,!1),v=0;y>v;++v)for(var T=m[v],E=T.length,M=0;E>M;++M){var I=T[M],N=T[(M+1)%E],j=Math.min(I,N)+\":\"+Math.max(I,N);if(j in R){var F=R[j];P[F].push(v),P[v].push(F),O[I]=O[N]=!0}else R[j]=v}for(var D=[],B=n(y,-1),v=0;y>v;++v)b[v]!==v||a(m[v])?B[v]=-1:(D.push(v),B[v]=0);for(var d=[];D.length>0;){var U=D.pop(),V=P[U];f(V,function(t,e){return t-e});var q,H=V.length,G=B[U];if(0===G){var T=m[U];q=[T]}for(var v=0;H>v;++v){var Y=V[v];if(!(B[Y]>=0)&&(B[Y]=1^G,D.push(Y),0===G)){var T=m[Y];a(T)||(T.reverse(),q.push(T))}}0===G&&d.push(q)}return d}e.exports=a;var o=t(\"edges-to-adjacency-list\"),s=t(\"planar-dual\"),l=t(\"point-in-big-polygon\"),c=t(\"two-product\"),u=t(\"robust-sum\"),f=t(\"uniq\"),h=t(\"./lib/trim-leaves\")},{\"./lib/trim-leaves\":282,\"edges-to-adjacency-list\":283,\"planar-dual\":284,\"point-in-big-polygon\":293,\"robust-sum\":262,\"two-product\":276,uniq:279}],295:[function(t,e,r){arguments[4][50][0].apply(r,arguments)},{dup:50}],296:[function(t,e,r){\"use strict\";\"use restrict\";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;t>e;++e)this.roots[e]=e,this.ranks[e]=0}e.exports=n,n.prototype.length=function(){return this.roots.length},n.prototype.makeSet=function(){var t=this.roots.length;return this.roots.push(t),this.ranks.push(0),t},n.prototype.find=function(t){for(var e=this.roots;e[t]!==t;){var r=e[t];e[t]=e[r],t=r}return t},n.prototype.link=function(t,e){var r=this.find(t),n=this.find(e);if(r!==n){var i=this.ranks,a=this.roots,o=i[r],s=i[n];s>o?a[r]=n:o>s?a[n]=r:(a[n]=r,++i[r])}}},{}],297:[function(t,e,r){arguments[4][238][0].apply(r,arguments)},{\"bit-twiddle\":295,dup:238,\"union-find\":296}],298:[function(t,e,r){\"use strict\";function n(t,e,r){var n=Math.abs(a(t,e,r)),i=Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2));return n/i}function i(t,e,r){function i(t){if(x[t])return 1/0;var r=m[t],i=y[t];return 0>r||0>i?1/0:n(e[t],e[r],e[i])}function a(t,e){var r=M[t],n=M[e];M[t]=n,M[e]=r,T[r]=e,T[n]=t}function s(t){return b[M[t]]}function l(t){return 1&t?t-1>>1:(t>>1)-1}function c(t){for(var e=s(t);;){var r=e,n=2*t+1,i=2*(t+1),o=t;if(L>n){var l=s(n);r>l&&(o=n,r=l)}if(L>i){var c=s(i);r>c&&(o=i)}if(o===t)return t;a(t,o),t=o}}function u(t){for(var e=s(t);t>0;){var r=l(t);if(r>=0){var n=s(r);if(n>e){a(t,r),t=r;continue}}return t}}function f(){if(L>0){var t=M[0];return a(0,L-1),L-=1,c(0),t}return-1}function h(t,e){var r=M[t];return b[r]===e?t:(b[r]=-(1/0),u(t),f(),b[r]=e,L+=1,u(L-1))}function d(t){if(!x[t]){x[t]=!0;var e=m[t],r=y[t];m[r]>=0&&(m[r]=e),y[e]>=0&&(y[e]=r),T[e]>=0&&h(T[e],i(e)),T[r]>=0&&h(T[r],i(r))}}function p(t,e){if(t[e]<0)return e;var r=e,n=e;do{var i=t[n];if(!x[n]||0>i||i===n)break;if(n=i,i=t[n],!x[n]||0>i||i===n)break;n=i,r=t[r]}while(r!==n);for(var a=e;a!==n;a=t[a])t[a]=n;return n}for(var g=e.length,v=t.length,m=new Array(g),y=new Array(g),b=new Array(g),x=new Array(g),_=0;g>_;++_)m[_]=y[_]=-1,b[_]=1/0,x[_]=!1;for(var _=0;v>_;++_){var w=t[_];if(2!==w.length)throw new Error(\"Input must be a graph\");var k=w[1],A=w[0];-1!==y[A]?y[A]=-2:y[A]=k,-1!==m[k]?m[k]=-2:m[k]=A}for(var M=[],T=new Array(g),_=0;g>_;++_){var E=b[_]=i(_);1/0>E?(T[_]=M.length,M.push(_)):T[_]=-1}for(var L=M.length,_=L>>1;_>=0;--_)c(_);for(;;){var S=f();if(0>S||b[S]>r)break;d(S)}for(var C=[],_=0;g>_;++_)x[_]||(T[_]=C.length,C.push(e[_].slice()));var z=(C.length,[]);return t.forEach(function(t){var e=p(m,t[0]),r=p(y,t[1]);if(e>=0&&r>=0&&e!==r){var n=T[e],i=T[r];n!==i&&z.push([n,i])}}),o.unique(o.normalize(z)),{positions:C,edges:z}}e.exports=i;var a=t(\"robust-orientation\"),o=t(\"simplicial-complex\")},{\"robust-orientation\":259,\"simplicial-complex\":297}],299:[function(t,e,r){\"use strict\";e.exports=[\"\",{path:\"M-2.4,-3V3L0.6,0Z\",backoff:.6},{path:\"M-3.7,-2.5V2.5L1.3,0Z\",backoff:1.3},{path:\"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z\",backoff:1.55},{path:\"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z\",backoff:1.6},{path:\"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z\",backoff:2},{path:\"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z\",backoff:0},{path:\"M2,2V-2H-2V2Z\",backoff:0}]},{}],300:[function(t,e,r){\"use strict\";var n=t(\"./arrow_paths\"),i=t(\"../../plots/font_attributes\"),a=t(\"../../plots/cartesian/constants\"),o=t(\"../../lib/extend\").extendFlat;e.exports={_isLinkedToArray:!0,text:{valType:\"string\"},textangle:{valType:\"angle\",dflt:0},font:o({},i,{}),opacity:{valType:\"number\",min:0,max:1,dflt:1},align:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"center\"},bgcolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\"},bordercolor:{valType:\"color\",dflt:\"rgba(0,0,0,0)\"},borderpad:{valType:\"number\",min:0,dflt:1},borderwidth:{valType:\"number\",min:0,dflt:1},showarrow:{valType:\"boolean\",dflt:!0},arrowcolor:{valType:\"color\"},arrowhead:{valType:\"integer\",min:0,max:n.length,dflt:1},arrowsize:{valType:\"number\",min:.3,dflt:1},arrowwidth:{valType:\"number\",min:.1},ax:{valType:\"number\",dflt:-10},ay:{valType:\"number\",dflt:-30},xref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.x.toString()]},x:{valType:\"number\"},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"auto\"},yref:{valType:\"enumerated\",values:[\"paper\",a.idRegex.y.toString()]},y:{valType:\"number\"},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\"},_deprecated:{ref:{valType:\"string\"}}}},{\"../../lib/extend\":376,\"../../plots/cartesian/constants\":408,\"../../plots/font_attributes\":421,\"./arrow_paths\":299}],301:[function(t,e,r){\"use strict\";function n(t,e){function r(e,r){return c.coerce(t,n,v.layoutAttributes,e,r)}var n={};r(\"opacity\"),r(\"align\"),r(\"bgcolor\");var i=r(\"bordercolor\"),a=f.opacity(i);r(\"borderpad\");var o=r(\"borderwidth\"),s=r(\"showarrow\");s&&(r(\"arrowcolor\",a?n.bordercolor:f.defaultLine),r(\"arrowhead\"),r(\"arrowsize\"),r(\"arrowwidth\",2*(a&&o||1)),r(\"ax\"),r(\"ay\"),c.noneOrAll(t,n,[\"ax\",\"ay\"])),r(\"text\",s?\" \":\"new text\"),r(\"textangle\"),c.coerceFont(r,\"font\",e.font);for(var l=[\"x\",\"y\"],h=0;2>h;h++){var d=l[h],p={_fullLayout:e},g=u.coerceRef(t,n,p,d),m=.5;if(\"paper\"!==g){var y=u.getFromId(p,g);if(m=y.range[0]+m*(y.range[1]-y.range[0]),-1!==[\"date\",\"category\"].indexOf(y.type)&&\"string\"==typeof t[d]){var b;\"date\"===y.type?(b=c.dateTime2ms(t[d]),b!==!1&&(t[d]=b)):(y._categories||[]).length&&(b=y._categories.indexOf(t[d]),-1!==b&&(t[d]=b))}}r(d,m),s||r(d+\"anchor\")}return c.noneOrAll(t,n,[\"x\",\"y\"]),n}function i(t){var e=t._fullLayout;e.annotations.forEach(function(e){var r=u.getFromId(t,e.xref),n=u.getFromId(t,e.yref);if(r||n){var i=(e._xsize||0)/2,a=e._xshift||0,o=(e._ysize||0)/2,s=e._yshift||0,l=i-a,c=i+a,f=o-s,h=o+s;if(e.showarrow){var d=3*e.arrowsize*e.arrowwidth;l=Math.max(l,d),c=Math.max(c,d),f=Math.max(f,d),h=Math.max(h,d)}r&&r.autorange&&u.expand(r,[r.l2c(e.x)],{ppadplus:c,ppadminus:l}),n&&n.autorange&&u.expand(n,[n.l2c(e.y)],{ppadplus:h,ppadminus:f})}})}function a(t,e,r,n,i,a,o,s){var l=r-t,c=i-t,u=o-i,f=n-e,h=a-e,d=s-a,p=l*d-u*f;if(0===p)return null;var g=(c*d-u*h)/p,v=(c*f-l*h)/p;return 0>v||v>1||0>g||g>1?null:{x:t+l*g,y:e+f*g}}var o=t(\"d3\"),s=t(\"fast-isnumeric\"),l=t(\"../../plotly\"),c=t(\"../../lib\"),u=t(\"../../plots/cartesian/axes\"),f=t(\"../color\"),h=t(\"../drawing\"),d=t(\"../../lib/svg_text_utils\"),p=t(\"../../lib/setcursor\"),g=t(\"../dragelement\"),v=e.exports={};v.ARROWPATHS=t(\"./arrow_paths\"),v.layoutAttributes=t(\"./attributes\"),v.supplyLayoutDefaults=function(t,e){for(var r=t.annotations||[],i=e.annotations=[],a=0;at?\"left\":t>2/3?\"right\":\"center\"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}tt.selectAll(\"tspan.line\").attr({y:0,x:0});var n=W.select(\".annotation-math-group\"),i=!n.empty(),s=h.bBox((i?n:tt).node()),d=s.width,m=s.height,y=Math.round(d+2*$),b=Math.round(m+2*$);U._w=d,U._h=m;var x=!1;if([\"x\",\"y\"].forEach(function(e){var n,i=u.getFromId(t,U[e+\"ref\"]||e),a=(G+(\"x\"===e?0:90))*Math.PI/180,o=y*Math.abs(Math.cos(a))+b*Math.abs(Math.sin(a)),s=U[e+\"anchor\"];if(i){if(!i.autorange&&(U[e]-i.range[0])*(U[e]-i.range[1])>0)return void(x=!0);H[e]=i._offset+i.l2p(U[e]),n=.5}else n=U[e],\"y\"===e&&(n=1-n),H[e]=\"x\"===e?S.l+S.w*n:S.t+S.h*n;var l=0;l=U.showarrow?U[\"a\"+e]:o*r(n,s),H[e]+=l,U[\"_\"+e+\"type\"]=i&&i.type,U[\"_\"+e+\"size\"]=o,U[\"_\"+e+\"shift\"]=l}),x)return void W.remove();var w,k;U.showarrow&&(w=c.constrain(H.x-U.ax,1,_.width-1),k=c.constrain(H.y-U.ay,1,_.height-1)),H.x=c.constrain(H.x,1,_.width-1),H.y=c.constrain(H.y,1,_.height-1);var A=$-s.top,M=$-s.left;i?n.select(\"svg\").attr({x:$-1,y:$}):(tt.attr({x:M,y:A}),tt.selectAll(\"tspan.line\").attr({y:A,x:M})),Q.call(h.setRect,Z/2,Z/2,y-Z,b-Z);var T=Math.round(H.x-y/2),E=Math.round(H.y-b/2);W.call(c.setTranslate,T,E);var L=\"annotations[\"+e+\"]\",C=function(r,n){o.select(t).selectAll('.annotation-arrow-g[data-index=\"'+e+'\"]').remove();var i=H.x+r,s=H.y+n,u=c.rotationXYMatrix(G,i,s),h=c.apply2DTransform(u),d=c.apply2DTransform2(u),p=Q.attr(\"width\")/2,m=Q.attr(\"height\")/2,y=[[i-p,s-m,i-p,s+m],[i-p,s+m,i+p,s+m],[i+p,s+m,i+p,s-m],[i+p,s-m,i-p,s-m]].map(d);if(!y.reduce(function(t,e){return t^!!a(w,k,w+1e6,k+1e6,e[0],e[1],e[2],e[3])},!1)){y.forEach(function(t){var e=a(i,s,w,k,t[0],t[1],t[2],t[3]);e&&(i=e.x,s=e.y)});var b=U.arrowwidth,x=U.arrowcolor,_=Y.append(\"g\").style({opacity:f.opacity(x)}).classed(\"annotation-arrow-g\",!0).attr(\"data-index\",String(e)),A=_.append(\"path\").attr(\"d\",\"M\"+i+\",\"+s+\"L\"+w+\",\"+k).style(\"stroke-width\",b+\"px\").call(f.stroke,f.rgb(x));v.arrowhead(A,U.arrowhead,\"end\",U.arrowsize);var M=_.append(\"path\").classed(\"annotation\",!0).classed(\"anndrag\",!0).attr({\"data-index\":String(e),d:\"M3,3H-3V-3H3ZM0,0L\"+(i-w)+\",\"+(s-k),transform:\"translate(\"+w+\",\"+k+\")\"}).style(\"stroke-width\",b+6+\"px\").call(f.stroke,\"rgba(0,0,0,0)\").call(f.fill,\"rgba(0,0,0,0)\");if(t._context.editable){var T,E,C;g.init({element:M.node(),prepFn:function(){var t=c.getTranslate(W);E=t.x,C=t.y,T={},V&&V.autorange&&(T[V._name+\".autorange\"]=!0),q&&q.autorange&&(T[q._name+\".autorange\"]=!0)},moveFn:function(t,e){_.attr(\"transform\",\"translate(\"+t+\",\"+e+\")\");var r=h(E,C),n=r[0]+t,i=r[1]+e;W.call(c.setTranslate,n,i),T[L+\".x\"]=V?U.x+t/V._m:(w+t-S.l)/S.w,T[L+\".y\"]=q?U.y+e/q._m:1-(k+e-S.t)/S.h,X.attr({transform:\"rotate(\"+G+\",\"+n+\",\"+i+\")\"})},doneFn:function(e){if(e){l.relayout(t,T);var r=document.querySelector(\".js-notes-box-panel\");r&&r.redraw(r.selectedObj)}}})}}};U.showarrow&&C(0,0);var z=c.rotationXYMatrix(G,H.x,H.y),P=c.apply2DTransform(z);if(t._context.editable){var R,O,I;g.init({element:W.node(),prepFn:function(){var t=c.getTranslate(W);R=t.x,O=t.y,I={}},moveFn:function(t,e){W.call(c.setTranslate,R+t,O+e);var r=\"pointer\";if(U.showarrow)I[L+\".ax\"]=U.ax+t,I[L+\".ay\"]=U.ay+e,C(t,e);else{if(V)I[L+\".x\"]=U.x+t/V._m;else{var n=U._xsize/S.w,i=U.x+U._xshift/S.w-n/2;I[L+\".x\"]=g.align(i+t/S.w,n,0,1,U.xanchor)}if(q)I[L+\".y\"]=U.y+e/q._m;else{var a=U._ysize/S.h,o=U.y-U._yshift/S.h-a/2;I[L+\".y\"]=g.align(o-e/S.h,a,0,1,U.yanchor)}V&&q||(r=g.getCursor(V?.5:I[L+\".x\"],q?.5:I[L+\".y\"],U.xanchor,U.yanchor))}var s=P(R,O),l=s[0]+t,u=s[1]+e;W.call(c.setTranslate,R+t,O+e),X.attr({transform:\"rotate(\"+G+\",\"+l+\",\"+u+\")\"}),p(W,r)},doneFn:function(e){if(p(W),e){l.relayout(t,I);var r=document.querySelector(\".js-notes-box-panel\");r&&r.redraw(r.selectedObj)}}})}}var b,x=t.layout,_=t._fullLayout;if(!s(e)||-1===e){if(!e&&Array.isArray(i))return x.annotations=i,v.supplyLayoutDefaults(x,_),void v.drawAll(t);if(\"remove\"===i)return delete x.annotations,_.annotations=[],void v.drawAll(t);if(r&&\"add\"!==i){for(b=0;b<_.annotations.length;b++)v.draw(t,b,r,i);return}e=_.annotations.length,_.annotations.push({})}if(!r&&i){if(\"remove\"===i){for(_._infolayer.selectAll('.annotation[data-index=\"'+e+'\"]').remove(),_.annotations.splice(e,1),x.annotations.splice(e,1),b=e;b<_.annotations.length;b++)_._infolayer.selectAll('.annotation[data-index=\"'+(b+1)+'\"]').attr(\"data-index\",String(b)),v.draw(t,b);return}if(\"add\"===i||c.isPlainObject(i)){_.annotations.splice(e,0,{});var w=c.isPlainObject(i)?c.extendFlat({},i):{text:\"New text\"};for(x.annotations?x.annotations.splice(e,0,w):x.annotations=[w],b=_.annotations.length-1;b>e;b--)_._infolayer.selectAll('.annotation[data-index=\"'+(b-1)+'\"]').attr(\"data-index\",String(b)),v.draw(t,b)}}_._infolayer.selectAll('.annotation[data-index=\"'+e+'\"]').remove();var k=x.annotations[e],A=_.annotations[e];if(k){var M={xref:k.xref,yref:k.yref},T={};\"string\"==typeof r&&r?T[r]=i:c.isPlainObject(r)&&(T=r);var E=Object.keys(T);for(b=0;bb;b++){var z=C[b];if(void 0===T[z]&&void 0!==k[z]){var P=u.getFromId(t,u.coerceRef(M,{},t,z)),R=u.getFromId(t,u.coerceRef(k,{},t,z)),O=k[z],I=A[\"_\"+z+\"type\"];if(void 0!==T[z+\"ref\"]){var N=\"auto\"===k[z+\"anchor\"],j=\"x\"===z?S.w:S.h,F=(A[\"_\"+z+\"size\"]||0)/(2*j);if(P&&R)O=(O-P.range[0])/(P.range[1]-P.range[0]),O=R.range[0]+O*(R.range[1]-R.range[0]);else if(P){if(O=(O-P.range[0])/(P.range[1]-P.range[0]),O=P.domain[0]+O*(P.domain[1]-P.domain[0]),N){var D=O+F,B=O-F;2/3>O+B?O=B:O+D>4/3&&(O=D)}}else R&&(N&&(1/3>O?O+=F:O>2/3&&(O-=F)),O=(O-R.domain[0])/(R.domain[1]-R.domain[0]),O=R.range[0]+O*(R.range[1]-R.range[0]))}R&&R===P&&I&&(\"log\"===I&&\"log\"!==R.type?O=Math.pow(10,O):\"log\"!==I&&\"log\"===R.type&&(O=O>0?Math.log(O)/Math.LN10:void 0)),k[z]=O}}var U=n(k,_);_.annotations[e]=U;var V=u.getFromId(t,U.xref),q=u.getFromId(t,U.yref),H={x:0,y:0},G=+U.textangle||0,Y=_._infolayer.append(\"g\").classed(\"annotation\",!0).attr(\"data-index\",String(e)).style(\"opacity\",U.opacity).on(\"click\",function(){t._dragging=!1,t.emit(\"plotly_clickannotation\",{index:e,annotation:k,fullAnnotation:U})}),X=Y.append(\"g\").classed(\"annotation-text-g\",!0).attr(\"data-index\",String(e)),W=X.append(\"g\"),Z=U.borderwidth,K=U.borderpad,$=Z+K,Q=W.append(\"rect\").attr(\"class\",\"bg\").style(\"stroke-width\",Z+\"px\").call(f.stroke,U.bordercolor).call(f.fill,U.bgcolor),J=U.font,tt=W.append(\"text\").classed(\"annotation\",!0).attr(\"data-unformatted\",U.text).text(U.text);t._context.editable?tt.call(d.makeEditable,W).call(m).on(\"edit\",function(r){U.text=r,this.attr({\"data-unformatted\":U.text}),this.call(m);var n={};n[\"annotations[\"+e+\"].text\"]=U.text,V&&V.autorange&&(n[V._name+\".autorange\"]=!0),q&&q.autorange&&(n[q._name+\".autorange\"]=!0),l.relayout(t,n)}):tt.call(m),X.attr({transform:\"rotate(\"+G+\",\"+H.x+\",\"+H.y+\")\"}).call(h.setPosition,H.x,H.y)}},v.arrowhead=function(t,e,r,n){s(n)||(n=1);var i=t.node(),a=v.ARROWPATHS[e||0];if(a){\"string\"==typeof r&&r||(r=\"end\");var l,c,u,d,p=(h.getPx(t,\"stroke-width\")||1)*n,g=t.style(\"stroke\")||f.defaultLine,m=t.style(\"stroke-opacity\")||1,y=r.indexOf(\"start\")>=0,b=r.indexOf(\"end\")>=0,x=a.backoff*p;if(\"line\"===i.nodeName){if(l={x:+t.attr(\"x1\"),y:+t.attr(\"y1\")},c={x:+t.attr(\"x2\"),y:+t.attr(\"y2\")},u=Math.atan2(l.y-c.y,l.x-c.x),d=u+Math.PI,x){var _=x*Math.cos(u),w=x*Math.sin(u);y&&(l.x-=_,l.y-=w,t.attr({x1:l.x,y1:l.y})),b&&(c.x+=_,c.y+=w,t.attr({x2:c.x,y2:c.y}))}}else if(\"path\"===i.nodeName){var k=i.getTotalLength(),A=\"\";if(y){var M=i.getPointAtLength(0),T=i.getPointAtLength(.1);u=Math.atan2(M.y-T.y,M.x-T.x),l=i.getPointAtLength(Math.min(x,k)),x&&(A=\"0px,\"+x+\"px,\")}if(b){var E=i.getPointAtLength(k),L=i.getPointAtLength(k-.1);if(d=Math.atan2(E.y-L.y,E.x-L.x),c=i.getPointAtLength(Math.max(0,k-x)),x){var S=A?2*x:x;A+=k-S+\"px,\"+k+\"px\"}}else A&&(A+=k+\"px\");A&&t.style(\"stroke-dasharray\",A)}var C=function(r,n){e>5&&(n=0),o.select(i.parentElement).append(\"path\").attr({\"class\":t.attr(\"class\"),d:a.path,transform:\"translate(\"+r.x+\",\"+r.y+\")rotate(\"+180*n/Math.PI+\")scale(\"+p+\")\"}).style({fill:g,opacity:m,\"stroke-width\":0})};y&&C(l,u),b&&C(c,d)}},v.calcAutorange=function(t){var e=t._fullLayout,r=e.annotations;if(r.length&&t._fullData.length){var n={};r.forEach(function(t){n[t.xref]=!0,n[t.yref]=!0});var a=u.list(t).filter(function(t){return t.autorange&&n[t._id]});if(a.length)return c.syncOrAsync([v.drawAll,i],t)}}},{\"../../lib\":381,\"../../lib/setcursor\":389,\"../../lib/svg_text_utils\":393,\"../../plotly\":400,\"../../plots/cartesian/axes\":403,\"../color\":303,\"../dragelement\":323,\"../drawing\":325,\"./arrow_paths\":299,\"./attributes\":300,d3:113,\"fast-isnumeric\":117}],302:[function(t,e,r){\"use strict\";r.defaults=[\"#1f77b4\",\"#ff7f0e\",\"#2ca02c\",\"#d62728\",\"#9467bd\",\"#8c564b\",\"#e377c2\",\"#7f7f7f\",\"#bcbd22\",\"#17becf\"],r.defaultLine=\"#444\",r.lightLine=\"#eee\",r.background=\"#fff\",r.lightFraction=1e3/11},{}],303:[function(t,e,r){\"use strict\";function n(t){if(a(t)||\"string\"!=typeof t)return t;var e=t.trim();if(\"rgb\"!==e.substr(0,3))return t;var r=e.match(/^rgba?\\s*\\(([^()]*)\\)$/);if(!r)return t;var n=r[1].trim().split(/\\s*[\\s,]\\s*/),i=\"a\"===e.charAt(3)&&4===n.length;if(!i&&3!==n.length)return t;for(var o=0;o=0))return t;if(3===o)n[o]>1&&(n[o]=1);else if(n[o]>=1)return t}var s=Math.round(255*n[0])+\", \"+Math.round(255*n[1])+\", \"+Math.round(255*n[2]);return i?\"rgba(\"+s+\", \"+n[3]+\")\":\"rgb(\"+s+\")\"}var i=t(\"tinycolor2\"),a=t(\"fast-isnumeric\"),o=e.exports={},s=t(\"./attributes\");o.defaults=s.defaults,o.defaultLine=s.defaultLine,o.lightLine=s.lightLine,o.background=s.background,o.tinyRGB=function(t){var e=t.toRgb();return\"rgb(\"+Math.round(e.r)+\", \"+Math.round(e.g)+\", \"+Math.round(e.b)+\")\"},o.rgb=function(t){return o.tinyRGB(i(t))},o.opacity=function(t){return t?i(t).getAlpha():0},o.addOpacity=function(t,e){var r=i(t).toRgb();return\"rgba(\"+Math.round(r.r)+\", \"+Math.round(r.g)+\", \"+Math.round(r.b)+\", \"+e+\")\"},o.combine=function(t,e){var r=i(t).toRgb();if(1===r.a)return i(t).toRgbString();var n=i(e||o.background).toRgb(),a=1===n.a?n:{r:255*(1-n.a)+n.r*n.a,g:255*(1-n.a)+n.g*n.a,b:255*(1-n.a)+n.b*n.a},s={r:a.r*(1-r.a)+r.r*r.a,g:a.g*(1-r.a)+r.g*r.a,b:a.b*(1-r.a)+r.b*r.a};return i(s).toRgbString()},o.stroke=function(t,e){var r=i(e);t.style({stroke:o.tinyRGB(r),\"stroke-opacity\":r.getAlpha()})},o.fill=function(t,e){var r=i(e);t.style({fill:o.tinyRGB(r),\"fill-opacity\":r.getAlpha()})},o.clean=function(t){if(t&&\"object\"==typeof t){var e,r,i,a,s=Object.keys(t);for(e=0;el&&(a[1]-=(ot-l)/2)):r.node()&&!r.classed(\"js-placeholder\")&&(ot=h.bBox(e.node()).height),ot){if(ot+=5,\"top\"===x.titleside)Q.domain[1]-=ot/M.h,a[1]*=-1;else{Q.domain[0]+=ot/M.h;var u=Math.max(1,r.selectAll(\"tspan.line\").size());a[1]+=(1-u)*l}e.attr(\"transform\",\"translate(\"+a+\")\"),Q.setScale()}}it.selectAll(\".cbfills,.cblines,.cbaxis\").attr(\"transform\",\"translate(0,\"+Math.round(M.h*(1-Q.domain[1]))+\")\");var f=it.select(\".cbfills\").selectAll(\"rect.cbfill\").data(S);f.enter().append(\"rect\").classed(\"cbfill\",!0).style(\"stroke\",\"none\"),f.exit().remove(),f.each(function(t,e){var r=[0===e?E[0]:(S[e]+S[e-1])/2,e===S.length-1?E[1]:(S[e]+S[e+1])/2].map(Q.c2p).map(Math.round);e!==S.length-1&&(r[1]+=r[1]>r[0]?1:-1);var a=z(t).replace(\"e-\",\"\"),o=i(a).toHexString();n.select(this).attr({x:Y,width:Math.max(D,2),y:n.min(r),height:Math.max(n.max(r)-n.min(r),2),fill:o})});var d=it.select(\".cblines\").selectAll(\"path.cbline\").data(x.line.color&&x.line.width?L:[]);return d.enter().append(\"path\").classed(\"cbline\",!0),d.exit().remove(),d.each(function(t){n.select(this).attr(\"d\",\"M\"+Y+\",\"+(Math.round(Q.c2p(t))+x.line.width/2%1)+\"h\"+D).call(h.lineGroupStyle,x.line.width,C(t),x.line.dash)}),Q._axislayer.selectAll(\"g.\"+Q._id+\"tick,path\").remove(),Q._pos=Y+D+(x.outlinewidth||0)/2-(\"outside\"===x.ticks?1:0),Q.side=\"right\",c.syncOrAsync([function(){return s.doTicks(t,Q,!0)},function(){if(-1===[\"top\",\"bottom\"].indexOf(x.titleside)){var e=Q.titlefont.size,r=Q._offset+Q._length/2,i=M.l+(Q.position||0)*M.w+(\"right\"===Q.side?10+e*(Q.showticklabels?1:.5):-10-e*(Q.showticklabels?.5:0));w(\"h\"+Q._id+\"title\",{avoid:{selection:n.select(t).selectAll(\"g.\"+Q._id+\"tick\"),side:x.titleside,offsetLeft:M.l,offsetTop:M.t,maxShift:A.width},attributes:{x:i,y:r,\"text-anchor\":\"middle\"},transform:{rotate:\"-90\",offset:0}})}}])}function w(e,r){var n,i=b();n=o.traceIs(i,\"markerColorscale\")?\"marker.colorbar.title\":\"colorbar.title\";var a={propContainer:Q,propName:n,traceIndex:i.index,dfltName:\"colorscale\",containerGroup:it.select(\".cbtitle\")},s=\"h\"===e.charAt(0)?e.substr(1):\"h\"+e;it.selectAll(\".\"+s+\",.\"+s+\"-math-group\").remove(),p.draw(t,e,u(a,r||{}))}function k(){var r=D+x.outlinewidth/2+h.bBox(Q._axislayer.node()).width;if(N=at.select(\"text\"),N.node()&&!N.classed(\"js-placeholder\")){var n,i=at.select(\".h\"+Q._id+\"title-math-group\").node();n=i&&-1!==[\"top\",\"bottom\"].indexOf(x.titleside)?h.bBox(i).width:h.bBox(at.node()).right-Y-M.l,r=Math.max(r,n)}var a=2*x.xpad+r+x.borderwidth+x.outlinewidth/2,s=Z-K;it.select(\".cbbg\").attr({x:Y-x.xpad-(x.borderwidth+x.outlinewidth)/2,y:K-H,width:Math.max(a,2),height:Math.max(s+2*H,2)}).call(d.fill,x.bgcolor).call(d.stroke,x.bordercolor).style({\"stroke-width\":x.borderwidth}),it.selectAll(\".cboutline\").attr({x:Y,y:K+x.ypad+(\"top\"===x.titleside?ot:0),width:Math.max(D,2),height:Math.max(s-2*x.ypad-ot,2)}).call(d.stroke,x.outlinecolor).style({fill:\"None\",\"stroke-width\":x.outlinewidth});var l=({center:.5,right:1}[x.xanchor]||0)*a;it.attr(\"transform\",\"translate(\"+(M.l-l)+\",\"+M.t+\")\"),o.autoMargin(t,e,{x:x.x,y:x.y,l:a*({right:1,center:.5}[x.xanchor]||0),r:a*({left:1,center:.5}[x.xanchor]||0),t:s*({bottom:1,middle:.5}[x.yanchor]||0),b:s*({top:1,middle:.5}[x.yanchor]||0)})}var A=t._fullLayout,M=A._size;if(\"function\"!=typeof x.fillcolor&&\"function\"!=typeof x.line.color)return void A._infolayer.selectAll(\"g.\"+e).remove();var T,E=n.extent((\"function\"==typeof x.fillcolor?x.fillcolor:x.line.color).domain()),L=[],S=[],C=\"function\"==typeof x.line.color?x.line.color:function(){return x.line.color},z=\"function\"==typeof x.fillcolor?x.fillcolor:function(){return x.fillcolor},P=x.levels.end+x.levels.size/100,R=x.levels.size,O=1.001*E[0]-.001*E[1],I=1.001*E[1]-.001*E[0];for(T=x.levels.start;0>(T-P)*R;T+=R)T>O&&I>T&&L.push(T);if(\"function\"==typeof x.fillcolor)if(x.filllevels)for(P=x.filllevels.end+x.filllevels.size/100,R=x.filllevels.size,T=x.filllevels.start;0>(T-P)*R;T+=R)T>E[0]&&T1){var nt=Math.pow(10,Math.floor(Math.log(rt)/Math.LN10));tt*=nt*c.roundUp(rt/nt,[2,5,10]),(Math.abs(x.levels.start)/x.levels.size+1e-6)%1<2e-6&&(Q.tick0=0)}Q.dtick=tt}Q.domain=[W+G,W+V-G],Q.setScale();var it=A._infolayer.selectAll(\"g.\"+e).data([0]);it.enter().append(\"g\").classed(e,!0).each(function(){var t=n.select(this);t.append(\"rect\").classed(\"cbbg\",!0),t.append(\"g\").classed(\"cbfills\",!0),t.append(\"g\").classed(\"cblines\",!0),t.append(\"g\").classed(\"cbaxis\",!0).classed(\"crisp\",!0),t.append(\"g\").classed(\"cbtitleunshift\",!0).append(\"g\").classed(\"cbtitle\",!0),t.append(\"rect\").classed(\"cboutline\",!0),t.select(\".cbtitle\").datum(0)}),it.attr(\"transform\",\"translate(\"+Math.round(M.l)+\",\"+Math.round(M.t)+\")\");var at=it.select(\".cbtitleunshift\").attr(\"transform\",\"translate(-\"+Math.round(M.l)+\",-\"+Math.round(M.t)+\")\");Q._axislayer=it.select(\".cbaxis\");var ot=0;if(-1!==[\"top\",\"bottom\"].indexOf(x.titleside)){var st,lt=M.l+(x.x+q)*M.w,ct=Q.titlefont.size;st=\"top\"===x.titleside?(1-(W+V-G))*M.h+M.t+3+.75*ct:(1-(W+G))*M.h+M.t-3-.25*ct,w(Q._id+\"title\",{attributes:{x:lt,y:st,\"text-anchor\":\"start\"}})}var ut=c.syncOrAsync([o.previousPromises,_,o.previousPromises,k],t);if(ut&&ut.then&&(t._promises||[]).push(ut),t._context.editable){var ft,ht,dt;l.init({element:it.node(),prepFn:function(){ft=it.attr(\"transform\"),f(it)},moveFn:function(t,e){it.attr(\"transform\",ft+\" translate(\"+t+\",\"+e+\")\"),ht=l.align(X+t/M.w,B,0,1,x.xanchor),dt=l.align(W-e/M.h,V,0,1,x.yanchor);var r=l.getCursor(ht,dt,x.xanchor,x.yanchor);f(it,r)},doneFn:function(e){f(it),e&&void 0!==ht&&void 0!==dt&&a.restyle(t,{\"colorbar.x\":ht,\"colorbar.y\":dt},b().index)}})}return ut}function b(){var r,n,i=e.substr(2);for(r=0;ru*f?i.RdBu:u>=0?i.Reds:i.Blues,l.colorscale=h,s.reversescale&&(h=a(h)),s.colorscale=h)}},{\"../../lib\":381,\"./flip_scale\":313,\"./scales\":320}],311:[function(t,e,r){\"use strict\";var n=t(\"./scales\");e.exports=n.RdBu},{\"./scales\":320}],312:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../colorbar/has_colorbar\"),o=t(\"../colorbar/defaults\"),s=t(\"./is_valid_scale\"),l=t(\"./flip_scale\");e.exports=function(t,e,r,c,u){var f=u.prefix,h=u.cLetter,d=f.slice(0,f.length-1),p=f?i.nestedProperty(t,d).get()||{}:t,g=f?i.nestedProperty(e,d).get()||{}:e,v=p[h+\"min\"],m=p[h+\"max\"],y=p.colorscale,b=n(v)&&n(m)&&m>v;c(f+h+\"auto\",!b),c(f+h+\"min\"),c(f+h+\"max\");var x;void 0!==y&&(x=!s(y)),c(f+\"autocolorscale\",x);var _=c(f+\"colorscale\"),w=c(f+\"reversescale\");if(w&&(g.colorscale=l(_)),\"marker.line.\"!==f){var k;f&&(k=a(p));var A=c(f+\"showscale\",k);A&&o(p,g,r)}}},{\"../../lib\":381,\"../colorbar/defaults\":305,\"../colorbar/has_colorbar\":307,\"./flip_scale\":313,\"./is_valid_scale\":317,\"fast-isnumeric\":117}],313:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e,r=t.length,n=new Array(r),i=r-1,a=0;i>=0;i--,a++)e=t[i],n[a]=[1-e[0],e[1]];return n}},{}],314:[function(t,e,r){\"use strict\";var n=t(\"./scales\"),i=t(\"./default_scale\"),a=t(\"./is_valid_scale_array\");e.exports=function(t,e){function r(){try{t=n[t]||JSON.parse(t)}catch(r){t=e}}return e||(e=i),t?(\"string\"==typeof t&&(r(),\"string\"==typeof t&&r()),a(t)?t:e):e}},{\"./default_scale\":311,\"./is_valid_scale_array\":318,\"./scales\":320}],315:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"./is_valid_scale\");e.exports=function(t,e){var r=e?i.nestedProperty(t,e).get()||{}:t,o=r.color,s=!1;if(Array.isArray(o))for(var l=0;lh;h++)l=t[h],u[h]=e+l[0]*(r-e),f[h]=i(l[1]).toRgb();var d=n.scale.linear().domain(u).interpolate(n.interpolateObject).range(f);return function(t){if(a(t)){var n=o.constrain(t,e,r),l=d(n);return i(l).toRgbString()}return i(t).isValid()?t:s.defaultLine}}},{\"../../lib\":381,\"../color\":303,d3:113,\"fast-isnumeric\":117,tinycolor2:274}],320:[function(t,e,r){\"use strict\";e.exports={Greys:[[0,\"rgb(0,0,0)\"],[1,\"rgb(255,255,255)\"]],YlGnBu:[[0,\"rgb(8,29,88)\"],[.125,\"rgb(37,52,148)\"],[.25,\"rgb(34,94,168)\"],[.375,\"rgb(29,145,192)\"],[.5,\"rgb(65,182,196)\"],[.625,\"rgb(127,205,187)\"],[.75,\"rgb(199,233,180)\"],[.875,\"rgb(237,248,217)\"],[1,\"rgb(255,255,217)\"]],Greens:[[0,\"rgb(0,68,27)\"],[.125,\"rgb(0,109,44)\"],[.25,\"rgb(35,139,69)\"],[.375,\"rgb(65,171,93)\"],[.5,\"rgb(116,196,118)\"],[.625,\"rgb(161,217,155)\"],[.75,\"rgb(199,233,192)\"],[.875,\"rgb(229,245,224)\"],[1,\"rgb(247,252,245)\"]],YlOrRd:[[0,\"rgb(128,0,38)\"],[.125,\"rgb(189,0,38)\"],[.25,\"rgb(227,26,28)\"],[.375,\"rgb(252,78,42)\"],[.5,\"rgb(253,141,60)\"],[.625,\"rgb(254,178,76)\"],[.75,\"rgb(254,217,118)\"],[.875,\"rgb(255,237,160)\"],[1,\"rgb(255,255,204)\"]],Bluered:[[0,\"rgb(0,0,255)\"],[1,\"rgb(255,0,0)\"]],RdBu:[[0,\"rgb(5,10,172)\"],[.35,\"rgb(106,137,247)\"],[.5,\"rgb(190,190,190)\"],[.6,\"rgb(220,170,132)\"],[.7,\"rgb(230,145,90)\"],[1,\"rgb(178,10,28)\"]],Reds:[[0,\"rgb(220,220,220)\"],[.2,\"rgb(245,195,157)\"],[.4,\"rgb(245,160,105)\"],[1,\"rgb(178,10,28)\"]],Blues:[[0,\"rgb(5,10,172)\"],[.35,\"rgb(40,60,190)\"],[.5,\"rgb(70,100,245)\"],[.6,\"rgb(90,120,245)\"],[.7,\"rgb(106,137,247)\"],[1,\"rgb(220,220,220)\"]],Picnic:[[0,\"rgb(0,0,255)\"],[.1,\"rgb(51,153,255)\"],[.2,\"rgb(102,204,255)\"],[.3,\"rgb(153,204,255)\"],[.4,\"rgb(204,204,255)\"],[.5,\"rgb(255,255,255)\"],[.6,\"rgb(255,204,255)\"],[.7,\"rgb(255,153,255)\"],[.8,\"rgb(255,102,204)\"],[.9,\"rgb(255,102,102)\"],[1,\"rgb(255,0,0)\"]],Rainbow:[[0,\"rgb(150,0,90)\"],[.125,\"rgb(0,0,200)\"],[.25,\"rgb(0,25,255)\"],[.375,\"rgb(0,152,255)\"],[.5,\"rgb(44,255,150)\"],[.625,\"rgb(151,255,0)\"],[.75,\"rgb(255,234,0)\"],[.875,\"rgb(255,111,0)\"],[1,\"rgb(255,0,0)\"]],Portland:[[0,\"rgb(12,51,131)\"],[.25,\"rgb(10,136,186)\"],[.5,\"rgb(242,211,56)\"],[.75,\"rgb(242,143,56)\"],[1,\"rgb(217,30,30)\"]],Jet:[[0,\"rgb(0,0,131)\"],[.125,\"rgb(0,60,170)\"],[.375,\"rgb(5,255,255)\"],[.625,\"rgb(255,255,0)\"],[.875,\"rgb(250,0,0)\"],[1,\"rgb(128,0,0)\"]],Hot:[[0,\"rgb(0,0,0)\"],[.3,\"rgb(230,0,0)\"],[.6,\"rgb(255,210,0)\"],[1,\"rgb(255,255,255)\"]],Blackbody:[[0,\"rgb(0,0,0)\"],[.2,\"rgb(230,0,0)\"],[.4,\"rgb(230,210,0)\"],[.7,\"rgb(255,255,255)\"],[1,\"rgb(160,200,255)\"]],Earth:[[0,\"rgb(0,0,130)\"],[.1,\"rgb(0,180,180)\"],[.2,\"rgb(40,210,40)\"],[.4,\"rgb(230,230,50)\"],[.6,\"rgb(120,70,20)\"],[1,\"rgb(255,255,255)\"]],Electric:[[0,\"rgb(0,0,0)\"],[.15,\"rgb(30,0,100)\"],[.4,\"rgb(120,0,100)\"],[.6,\"rgb(160,90,0)\"],[.8,\"rgb(230,200,0)\"],[1,\"rgb(255,250,220)\"]],Viridis:[[0,\"#440154\"],[.06274509803921569,\"#48186a\"],[.12549019607843137,\"#472d7b\"],[.18823529411764706,\"#424086\"],[.25098039215686274,\"#3b528b\"],[.3137254901960784,\"#33638d\"],[.3764705882352941,\"#2c728e\"],[.4392156862745098,\"#26828e\"],[.5019607843137255,\"#21918c\"],[.5647058823529412,\"#1fa088\"],[.6274509803921569,\"#28ae80\"],[.6901960784313725,\"#3fbc73\"],[.7529411764705882,\"#5ec962\"],[.8156862745098039,\"#84d44b\"],[.8784313725490196,\"#addc30\"],[.9411764705882353,\"#d8e219\"],[1,\"#fde725\"]]}},{}],321:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n,i){var a=(t-r)/(n-r),o=a+e/(n-r),s=(a+o)/2;return\"left\"===i||\"bottom\"===i?a:\"center\"===i||\"middle\"===i?s:\"right\"===i||\"top\"===i?o:2/3-s>a?a:o>4/3-s?o:s}},{}],322:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=[[\"sw-resize\",\"s-resize\",\"se-resize\"],[\"w-resize\",\"move\",\"e-resize\"],[\"nw-resize\",\"n-resize\",\"ne-resize\"]];e.exports=function(t,e,r,a){return t=\"left\"===r?0:\"center\"===r?1:\"right\"===r?2:n.constrain(Math.floor(3*t),0,2),e=\"bottom\"===a?0:\"middle\"===a?1:\"top\"===a?2:n.constrain(Math.floor(3*e),0,2),i[e][t]}},{\"../../lib\":381}],323:[function(t,e,r){\"use strict\";function n(){var t=document.createElement(\"div\");t.className=\"dragcover\";var e=t.style;return e.position=\"fixed\",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background=\"none\",document.body.appendChild(t),t}function i(t){t._dragging=!1,t._replotPending&&a.plot(t)}var a=t(\"../../plotly\"),o=t(\"../../lib\"),s=t(\"../../plots/cartesian/constants\"),l=e.exports={};l.align=t(\"./align\"),l.getCursor=t(\"./cursor\");var c=t(\"./unhover\");l.unhover=c.wrapped,l.unhoverRaw=c.raw,l.init=function(t){function e(e){return p._dragged=!1,p._dragging=!0,c=e.clientX,u=e.clientY,d=e.target,f=(new Date).getTime(),f-p._mouseDownTimev&&(g=Math.max(g-1,1)),t.doneFn&&t.doneFn(p._dragged,g),!p._dragged){var r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!0,!0),d.dispatchEvent(r)}return i(p),p._dragged=!1,o.pauseEvent(e)}var c,u,f,h,d,p=o.getPlotDiv(t.element)||{},g=1,v=s.DBLCLICKDELAY;p._mouseDownTime||(p._mouseDownTime=0),t.element.onmousedown=e,t.element.style.pointerEvents=\"all\"}},{\"../../lib\":381,\"../../plotly\":400,\"../../plots/cartesian/constants\":408,\"./align\":321,\"./cursor\":322,\"./unhover\":324}],324:[function(t,e,r){\"use strict\";var n=t(\"../../lib/events\"),i=e.exports={};i.wrapped=function(t,e,r){\"string\"==typeof t&&(t=document.getElementById(t)),t._hoverTimer&&(clearTimeout(t._hoverTimer),t._hoverTimer=void 0),i.raw(t,e,r)},i.raw=function(t,e){var r=t._fullLayout;e||(e={}),e.target&&n.triggerHandler(t,\"plotly_beforehover\",e)===!1||(r._hoverlayer.selectAll(\"g\").remove(),e.target&&t._hoverdata&&t.emit(\"plotly_unhover\",{points:t._hoverdata}),t._hoverdata=void 0)}},{\"../../lib/events\":375}],325:[function(t,e,r){\"use strict\";function n(t,e,r,n){var a=t[0]-e[0],o=t[1]-e[1],s=r[0]-e[0],l=r[1]-e[1],c=Math.pow(a*a+o*o,x/2),u=Math.pow(s*s+l*l,x/2),f=(u*u*a-c*c*s)*n,h=(u*u*o-c*c*l)*n,d=3*u*(c+u),p=3*c*(c+u);return[[i.round(e[0]+(d&&f/d),2),i.round(e[1]+(d&&h/d),2)],[i.round(e[0]-(p&&f/p),2),i.round(e[1]-(p&&h/p),2)]]}var i=t(\"d3\"),a=t(\"fast-isnumeric\"),o=t(\"../../plots/plots\"),s=t(\"../color\"),l=t(\"../colorscale\"),c=t(\"../../lib\"),u=t(\"../../lib/svg_text_utils\"),f=t(\"../../constants/xmlns_namespaces\"),h=t(\"../../traces/scatter/subtypes\"),d=t(\"../../traces/scatter/make_bubble_size_func\"),p=e.exports={};p.font=function(t,e,r,n){e&&e.family&&(n=e.color,r=e.size,e=e.family),e&&t.style(\"font-family\",e),r+1&&t.style(\"font-size\",r+\"px\"),n&&t.call(s.fill,n)},p.setPosition=function(t,e,r){t.attr(\"x\",e).attr(\"y\",r)},p.setSize=function(t,e,r){t.attr(\"width\",e).attr(\"height\",r)},p.setRect=function(t,e,r,n,i){t.call(p.setPosition,e,r).call(p.setSize,n,i)},p.translatePoints=function(t,e,r){t.each(function(t){var n=t.xp||e.c2p(t.x),o=t.yp||r.c2p(t.y),s=i.select(this);a(n)&&a(o)?\"text\"===this.nodeName?s.attr(\"x\",n).attr(\"y\",o):s.attr(\"transform\",\"translate(\"+n+\",\"+o+\")\"):s.remove()})},p.getPx=function(t,e){return Number(t.style(e).replace(/px$/,\"\"))},p.crispRound=function(t,e,r){return e&&a(e)?t._context.staticPlot?e:1>e?1:Math.round(e):r||0},p.lineGroupStyle=function(t,e,r,n){t.style(\"fill\",\"none\").each(function(t){var a=(((t||[])[0]||{}).trace||{}).line||{},o=e||a.width||0,l=n||a.dash||\"\";i.select(this).call(s.stroke,r||a.color).call(p.dashLine,l,o)})},p.dashLine=function(t,e,r){var n=Math.max(r,3);\"solid\"===e?e=\"\":\"dot\"===e?e=n+\"px,\"+n+\"px\":\"dash\"===e?e=3*n+\"px,\"+3*n+\"px\":\"longdash\"===e?e=5*n+\"px,\"+5*n+\"px\":\"dashdot\"===e?e=3*n+\"px,\"+n+\"px,\"+n+\"px,\"+n+\"px\":\"longdashdot\"===e&&(e=5*n+\"px,\"+2*n+\"px,\"+n+\"px,\"+2*n+\"px\"),t.style({\"stroke-dasharray\":e,\"stroke-width\":r+\"px\"})},p.fillGroupStyle=function(t){t.style(\"stroke-width\",0).each(function(e){var r=i.select(this);try{r.call(s.fill,e[0].trace.fillcolor)}catch(n){console.log(n,t),r.remove()}})};var g=t(\"./symbol_defs\");p.symbolNames=[],p.symbolFuncs=[],p.symbolNeedLines={},p.symbolNoDot={},p.symbolList=[],Object.keys(g).forEach(function(t){var e=g[t];p.symbolList=p.symbolList.concat([e.n,t,e.n+100,t+\"-open\"]),p.symbolNames[e.n]=t,p.symbolFuncs[e.n]=e.f,e.needLine&&(p.symbolNeedLines[e.n]=!0),e.noDot?p.symbolNoDot[e.n]=!0:p.symbolList=p.symbolList.concat([e.n+200,t+\"-dot\",e.n+300,t+\"-open-dot\"])});var v=p.symbolNames.length,m=\"M0,0.5L0.5,0L0,-0.5L-0.5,0Z\";p.symbolNumber=function(t){if(\"string\"==typeof t){var e=0;t.indexOf(\"-open\")>0&&(e=100,t=t.replace(\"-open\",\"\")),t.indexOf(\"-dot\")>0&&(e+=200,t=t.replace(\"-dot\",\"\")),t=p.symbolNames.indexOf(t),t>=0&&(t+=e)}return t%100>=v||t>=400?0:Math.floor(Math.max(t,0))},p.pointStyle=function(t,e){if(t.size()){var r=e.marker,n=r.line;if(o.traceIs(e,\"symbols\")){var a=d(e);t.attr(\"d\",function(t){var n;n=\"various\"===t.ms||\"various\"===r.size?3:h.isBubble(e)?a(t.ms):(r.size||6)/2,t.mrc=n;var i=p.symbolNumber(t.mx||r.symbol)||0,o=i%100;return t.om=i%200>=100,p.symbolFuncs[o](n)+(i>=200?m:\"\")}).style(\"opacity\",function(t){return(t.mo+1||r.opacity+1)-1})}var l=(e._input||{}).marker||{},c=p.tryColorscale(r,l,\"\"),u=p.tryColorscale(r,l,\"line.\");t.each(function(t){var e,a,o;t.so?(o=n.outlierwidth,a=n.outliercolor,e=r.outliercolor):(o=(t.mlw+1||n.width+1||(t.trace?t.trace.marker.line.width:0)+1)-1,a=\"mlc\"in t?t.mlcc=u(t.mlc):Array.isArray(n.color)?s.defaultLine:n.color,e=\"mc\"in t?t.mcc=c(t.mc):Array.isArray(r.color)?s.defaultLine:r.color||\"rgba(0,0,0,0)\");var l=i.select(this);t.om?l.call(s.stroke,e).style({\"stroke-width\":(o||1)+\"px\",fill:\"none\"}):(l.style(\"stroke-width\",o+\"px\").call(s.fill,e),o&&l.call(s.stroke,a))})}},p.tryColorscale=function(t,e,r){var n=c.nestedProperty(t,r+\"color\").get(),i=c.nestedProperty(t,r+\"colorscale\").get(),o=c.nestedProperty(t,r+\"cauto\").get(),s=c.nestedProperty(t,r+\"cmin\"),u=c.nestedProperty(t,r+\"cmax\"),f=s.get(),h=u.get();return i&&Array.isArray(n)?(!o&&a(f)&&a(h)||(f=1/0,h=-(1/0),n.forEach(function(t){a(t)&&(f>t&&(f=+t),t>h&&(h=+t))}),f>h&&(f=0,h=1),s.set(f),u.set(h),c.nestedProperty(e,r+\"cmin\").set(f),c.nestedProperty(e,r+\"cmax\").set(h)),l.makeScaleFunction(i,f,h)):c.identity};var y={start:1,end:-1,middle:0,bottom:1,top:-1},b=1.3;p.textPointStyle=function(t,e){t.each(function(t){var r=i.select(this),n=t.tx||e.text;if(!n||Array.isArray(n))return void r.remove();var o=t.tp||e.textposition,s=-1!==o.indexOf(\"top\")?\"top\":-1!==o.indexOf(\"bottom\")?\"bottom\":\"middle\",l=-1!==o.indexOf(\"left\")?\"end\":-1!==o.indexOf(\"right\")?\"start\":\"middle\",c=t.ts||e.textfont.size,f=t.mrc?t.mrc/.8+1:0;c=a(c)&&c>0?c:0,r.call(p.font,t.tf||e.textfont.family,c,t.tc||e.textfont.color).attr(\"text-anchor\",l).text(n).call(u.convertToTspans);var h=i.select(this.parentNode),d=r.selectAll(\"tspan.line\"),g=((d[0].length||1)-1)*b+1,v=y[l]*f,m=.75*c+y[s]*f+(y[s]-1)*g*c/2;h.attr(\"transform\",\"translate(\"+v+\",\"+m+\")\"),g>1&&d.attr({x:r.attr(\"x\"),y:r.attr(\"y\")})})};var x=.5;p.smoothopen=function(t,e){if(t.length<3)return\"M\"+t.join(\"L\");var r,i=\"M\"+t[0],a=[];for(r=1;rr;r++)o.push(n(t[r-1],t[r],t[r+1],e));for(o.push(n(t[a-1],t[a],t[0],e)),r=1;a>=r;r++)i+=\"C\"+o[r-1][1]+\" \"+o[r][0]+\" \"+t[r];return i+=\"C\"+o[a][1]+\" \"+o[0][0]+\" \"+t[0]+\"Z\"};var _={hv:function(t,e){return\"H\"+i.round(e[0],2)+\"V\"+i.round(e[1],2)},vh:function(t,e){return\"V\"+i.round(e[1],2)+\"H\"+i.round(e[0],2)},hvh:function(t,e){return\"H\"+i.round((t[0]+e[0])/2,2)+\"V\"+i.round(e[1],2)+\"H\"+i.round(e[0],2)},vhv:function(t,e){return\"V\"+i.round((t[1]+e[1])/2,2)+\"H\"+i.round(e[0],2)+\"V\"+i.round(e[1],2)}},w=function(t,e){return\"L\"+i.round(e[0],2)+\",\"+i.round(e[1],2)};p.steps=function(t){var e=_[t]||w;return function(t){for(var r=\"M\"+i.round(t[0][0],2)+\",\"+i.round(t[0][1],2),n=1;n=A&&(i.selectAll(\"[data-bb]\").attr(\"data-bb\",null),k=[]),t.setAttribute(\"data-bb\",k.length),k.push(l),c.extendFlat({},l)},p.setClipUrl=function(t,e){if(!e)return void t.attr(\"clip-path\",null);var r=\"#\"+e,n=i.select(\"base\");n.size()&&n.attr(\"href\")&&(r=window.location.href+r),t.attr(\"clip-path\",\"url(\"+r+\")\")}},{\"../../constants/xmlns_namespaces\":369,\"../../lib\":381,\"../../lib/svg_text_utils\":393,\"../../plots/plots\":452,\"../../traces/scatter/make_bubble_size_func\":567,\"../../traces/scatter/subtypes\":573,\"../color\":303,\"../colorscale\":316,\"./symbol_defs\":326,d3:113,\"fast-isnumeric\":117}],326:[function(t,e,r){\"use strict\";var n=t(\"d3\");e.exports={circle:{n:0,f:function(t){var e=n.round(t,2);return\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"}},square:{n:1,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"}},diamond:{n:2,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"Z\"}},cross:{n:3,f:function(t){var e=n.round(.4*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H\"+e+\"V\"+r+\"H-\"+e+\"V\"+e+\"H-\"+r+\"V-\"+e+\"H-\"+e+\"V-\"+r+\"H\"+e+\"V-\"+e+\"H\"+r+\"Z\"}},x:{n:4,f:function(t){var e=n.round(.8*t/Math.sqrt(2),2),r=\"l\"+e+\",\"+e,i=\"l\"+e+\",-\"+e,a=\"l-\"+e+\",-\"+e,o=\"l-\"+e+\",\"+e;return\"M0,\"+e+r+i+a+i+a+o+a+o+r+o+r+\"Z\"}},\"triangle-up\":{n:5,f:function(t){var e=n.round(2*t/Math.sqrt(3),2),r=n.round(t/2,2),i=n.round(t,2);return\"M-\"+e+\",\"+r+\"H\"+e+\"L0,-\"+i+\"Z\"}},\"triangle-down\":{n:6,f:function(t){var e=n.round(2*t/Math.sqrt(3),2),r=n.round(t/2,2),i=n.round(t,2);return\"M-\"+e+\",-\"+r+\"H\"+e+\"L0,\"+i+\"Z\"}},\"triangle-left\":{n:7,f:function(t){var e=n.round(2*t/Math.sqrt(3),2),r=n.round(t/2,2),i=n.round(t,2);return\"M\"+r+\",-\"+e+\"V\"+e+\"L-\"+i+\",0Z\"}},\"triangle-right\":{n:8,f:function(t){var e=n.round(2*t/Math.sqrt(3),2),r=n.round(t/2,2),i=n.round(t,2);return\"M-\"+r+\",-\"+e+\"V\"+e+\"L\"+i+\",0Z\"}},\"triangle-ne\":{n:9,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+r+\",-\"+e+\"H\"+e+\"V\"+r+\"Z\"}},\"triangle-se\":{n:10,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+e+\",-\"+r+\"V\"+e+\"H-\"+r+\"Z\"}},\"triangle-sw\":{n:11,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M\"+r+\",\"+e+\"H-\"+e+\"V-\"+r+\"Z\"}},\"triangle-nw\":{n:12,f:function(t){var e=n.round(.6*t,2),r=n.round(1.2*t,2);return\"M-\"+e+\",\"+r+\"V-\"+e+\"H\"+r+\"Z\"}},pentagon:{n:13,f:function(t){var e=n.round(.951*t,2),r=n.round(.588*t,2),i=n.round(-t,2),a=n.round(t*-.309,2),o=n.round(.809*t,2);return\"M\"+e+\",\"+a+\"L\"+r+\",\"+o+\"H-\"+r+\"L-\"+e+\",\"+a+\"L0,\"+i+\"Z\"}},hexagon:{n:14,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M\"+i+\",-\"+r+\"V\"+r+\"L0,\"+e+\"L-\"+i+\",\"+r+\"V-\"+r+\"L0,-\"+e+\"Z\"}},hexagon2:{n:15,f:function(t){var e=n.round(t,2),r=n.round(t/2,2),i=n.round(t*Math.sqrt(3)/2,2);return\"M-\"+r+\",\"+i+\"H\"+r+\"L\"+e+\",0L\"+r+\",-\"+i+\"H-\"+r+\"L-\"+e+\",0Z\"}},octagon:{n:16,f:function(t){var e=n.round(.924*t,2),r=n.round(.383*t,2);return\"M-\"+r+\",-\"+e+\"H\"+r+\"L\"+e+\",-\"+r+\"V\"+r+\"L\"+r+\",\"+e+\"H-\"+r+\"L-\"+e+\",\"+r+\"V-\"+r+\"Z\"}},star:{n:17,f:function(t){var e=1.4*t,r=n.round(.225*e,2),i=n.round(.951*e,2),a=n.round(.363*e,2),o=n.round(.588*e,2),s=n.round(-e,2),l=n.round(e*-.309,2),c=n.round(.118*e,2),u=n.round(.809*e,2),f=n.round(.382*e,2);return\"M\"+r+\",\"+l+\"H\"+i+\"L\"+a+\",\"+c+\"L\"+o+\",\"+u+\"L0,\"+f+\"L-\"+o+\",\"+u+\"L-\"+a+\",\"+c+\"L-\"+i+\",\"+l+\"H-\"+r+\"L0,\"+s+\"Z\"}},hexagram:{n:18,f:function(t){var e=n.round(.66*t,2),r=n.round(.38*t,2),i=n.round(.76*t,2);return\"M-\"+i+\",0l-\"+r+\",-\"+e+\"h\"+i+\"l\"+r+\",-\"+e+\"l\"+r+\",\"+e+\"h\"+i+\"l-\"+r+\",\"+e+\"l\"+r+\",\"+e+\"h-\"+i+\"l-\"+r+\",\"+e+\"l-\"+r+\",-\"+e+\"h-\"+i+\"Z\"}},\"star-triangle-up\":{n:19,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M-\"+e+\",\"+r+o+e+\",\"+r+o+\"0,-\"+i+o+\"-\"+e+\",\"+r+\"Z\"}},\"star-triangle-down\":{n:20,f:function(t){var e=n.round(t*Math.sqrt(3)*.8,2),r=n.round(.8*t,2),i=n.round(1.6*t,2),a=n.round(4*t,2),o=\"A \"+a+\",\"+a+\" 0 0 1 \";return\"M\"+e+\",-\"+r+o+\"-\"+e+\",-\"+r+o+\"0,\"+i+o+e+\",-\"+r+\"Z\"}},\"star-square\":{n:21,f:function(t){var e=n.round(1.1*t,2),r=n.round(2*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",-\"+e+i+\"-\"+e+\",\"+e+i+e+\",\"+e+i+e+\",-\"+e+i+\"-\"+e+\",-\"+e+\"Z\"}},\"star-diamond\":{n:22,f:function(t){var e=n.round(1.4*t,2),r=n.round(1.9*t,2),i=\"A \"+r+\",\"+r+\" 0 0 1 \";return\"M-\"+e+\",0\"+i+\"0,\"+e+i+e+\",0\"+i+\"0,-\"+e+i+\"-\"+e+\",0Z\"}},\"diamond-tall\":{n:23,f:function(t){var e=n.round(.7*t,2),r=n.round(1.4*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},\"diamond-wide\":{n:24,f:function(t){var e=n.round(1.4*t,2),r=n.round(.7*t,2);return\"M0,\"+r+\"L\"+e+\",0L0,-\"+r+\"L-\"+e+\",0Z\"}},hourglass:{n:25,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"H-\"+e+\"L\"+e+\",-\"+e+\"H-\"+e+\"Z\"},noDot:!0},bowtie:{n:26,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"V-\"+e+\"L-\"+e+\",\"+e+\"V-\"+e+\"Z\"},noDot:!0},\"circle-cross\":{n:27,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"circle-x\":{n:28,f:function(t){var e=n.round(t,2),r=n.round(t/Math.sqrt(2),2);return\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r+\"M\"+e+\",0A\"+e+\",\"+e+\" 0 1,1 0,-\"+e+\"A\"+e+\",\"+e+\" 0 0,1 \"+e+\",0Z\"},needLine:!0,noDot:!0},\"square-cross\":{n:29,f:function(t){var e=n.round(t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"square-x\":{n:30,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e+\"M\"+e+\",\"+e+\"H-\"+e+\"V-\"+e+\"H\"+e+\"Z\"},needLine:!0,noDot:!0},\"diamond-cross\":{n:31,f:function(t){var e=n.round(1.3*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM0,-\"+e+\"V\"+e+\"M-\"+e+\",0H\"+e},needLine:!0,noDot:!0},\"diamond-x\":{n:32,f:function(t){var e=n.round(1.3*t,2),r=n.round(.65*t,2);return\"M\"+e+\",0L0,\"+e+\"L-\"+e+\",0L0,-\"+e+\"ZM-\"+r+\",-\"+r+\"L\"+r+\",\"+r+\"M-\"+r+\",\"+r+\"L\"+r+\",-\"+r},needLine:!0,noDot:!0},\"cross-thin\":{n:33,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0},\"x-thin\":{n:34,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e+\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0},asterisk:{n:35,f:function(t){var e=n.round(1.2*t,2),r=n.round(.85*t,2);return\"M0,\"+e+\"V-\"+e+\"M\"+e+\",0H-\"+e+\"M\"+r+\",\"+r+\"L-\"+r+\",-\"+r+\"M\"+r+\",-\"+r+\"L-\"+r+\",\"+r},needLine:!0,noDot:!0},hash:{n:36,f:function(t){var e=n.round(t/2,2),r=n.round(t,2);return\"M\"+e+\",\"+r+\"V-\"+r+\"m-\"+r+\",0V\"+r+\"M\"+r+\",\"+e+\"H-\"+r+\"m0,-\"+r+\"H\"+r},needLine:!0},\"y-up\":{n:37,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",\"+i+\"L0,0M\"+e+\",\"+i+\"L0,0M0,-\"+r+\"L0,0\"},needLine:!0,noDot:!0},\"y-down\":{n:38,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+e+\",-\"+i+\"L0,0M\"+e+\",-\"+i+\"L0,0M0,\"+r+\"L0,0\"},needLine:!0,noDot:!0},\"y-left\":{n:39,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M\"+i+\",\"+e+\"L0,0M\"+i+\",-\"+e+\"L0,0M-\"+r+\",0L0,0\"},needLine:!0,noDot:!0},\"y-right\":{n:40,f:function(t){var e=n.round(1.2*t,2),r=n.round(1.6*t,2),i=n.round(.8*t,2);return\"M-\"+i+\",\"+e+\"L0,0M-\"+i+\",-\"+e+\"L0,0M\"+r+\",0L0,0\"},needLine:!0,noDot:!0},\"line-ew\":{n:41,f:function(t){var e=n.round(1.4*t,2);return\"M\"+e+\",0H-\"+e},needLine:!0,noDot:!0},\"line-ns\":{n:42,f:function(t){var e=n.round(1.4*t,2);return\"M0,\"+e+\"V-\"+e},needLine:!0,noDot:!0},\"line-ne\":{n:43,f:function(t){var e=n.round(t,2);return\"M\"+e+\",-\"+e+\"L-\"+e+\",\"+e},needLine:!0,noDot:!0},\"line-nw\":{n:44,f:function(t){var e=n.round(t,2);return\"M\"+e+\",\"+e+\"L-\"+e+\",-\"+e},needLine:!0,noDot:!0}}},{d3:113}],327:[function(t,e,r){\"use strict\";e.exports={visible:{valType:\"boolean\"},type:{valType:\"enumerated\",values:[\"percent\",\"constant\",\"sqrt\",\"data\"]},symmetric:{valType:\"boolean\"},array:{valType:\"data_array\"},arrayminus:{valType:\"data_array\"},value:{valType:\"number\",min:0,dflt:10},valueminus:{valType:\"number\",min:0,dflt:10},traceref:{valType:\"integer\",min:0,dflt:0},tracerefminus:{valType:\"integer\",min:0,dflt:0},copy_ystyle:{valType:\"boolean\"},copy_zstyle:{valType:\"boolean\"},color:{valType:\"color\"},thickness:{valType:\"number\",min:0,dflt:2},width:{valType:\"number\",min:0},_deprecated:{opacity:{valType:\"number\"}}}},{}],328:[function(t,e,r){\"use strict\";function n(t,e,r,n){var a=e[\"error_\"+n]||{},l=a.visible&&-1!==[\"linear\",\"log\"].indexOf(r.type),c=[];if(l){for(var u=s(a),f=0;fs;s++)o[s]={x:r[s],y:i[s]};return o[0].trace=t,n.calc({calcdata:[o],_fullLayout:e}),o},n.plot=t(\"./plot\"),n.style=t(\"./style\"),n.hoverInfo=function(t,e,r){(e.error_y||{}).visible&&(r.yerr=t.yh-t.y,e.error_y.symmetric||(r.yerrneg=t.y-t.ys)),(e.error_x||{}).visible&&(r.xerr=t.xh-t.x,e.error_x.symmetric||(r.xerrneg=t.x-t.xs))}},{\"./attributes\":327,\"./calc\":328,\"./defaults\":330,\"./plot\":332,\"./style\":333}],332:[function(t,e,r){\"use strict\";function n(t,e,r){var n={x:e.c2p(t.x),y:r.c2p(t.y)};return void 0!==t.yh&&(n.yh=r.c2p(t.yh),n.ys=r.c2p(t.ys),a(n.ys)||(n.noYS=!0,n.ys=r.c2p(t.ys,!0))),void 0!==t.xh&&(n.xh=e.c2p(t.xh),n.xs=e.c2p(t.xs),a(n.xs)||(n.noXS=!0,n.xs=e.c2p(t.xs,!0))),n}var i=t(\"d3\"),a=t(\"fast-isnumeric\"),o=t(\"../../lib\"),s=t(\"../../traces/scatter/subtypes\");e.exports=function(t,e){var r=e.x(),l=e.y();t.each(function(t){var e=t[0].trace,c=e.error_x||{},u=e.error_y||{},f=s.hasMarkers(e)&&e.marker.maxdisplayed>0;if(u.visible||c.visible){var h=i.select(this).selectAll(\"g.errorbar\").data(o.identity);h.enter().append(\"g\").classed(\"errorbar\",!0),h.each(function(t){var e=i.select(this),o=n(t,r,l);if(!f||t.vis){var s;if(u.visible&&a(o.x)&&a(o.yh)&&a(o.ys)){var h=u.width;s=\"M\"+(o.x-h)+\",\"+o.yh+\"h\"+2*h+\"m-\"+h+\",0V\"+o.ys,o.noYS||(s+=\"m-\"+h+\",0h\"+2*h),e.append(\"path\").classed(\"yerror\",!0).attr(\"d\",s)}if(c.visible&&a(o.y)&&a(o.xh)&&a(o.xs)){var d=(c.copy_ystyle?u:c).width;s=\"M\"+o.xh+\",\"+(o.y-d)+\"v\"+2*d+\"m0,-\"+d+\"H\"+o.xs,o.noXS||(s+=\"m0,-\"+d+\"v\"+2*d),e.append(\"path\").classed(\"xerror\",!0).attr(\"d\",s)}}})}})}},{\"../../lib\":381,\"../../traces/scatter/subtypes\":573,d3:113,\"fast-isnumeric\":117}],333:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"../color\");e.exports=function(t){t.each(function(t){var e=t[0].trace,r=e.error_y||{},a=e.error_x||{},o=n.select(this);o.selectAll(\"path.yerror\").style(\"stroke-width\",r.thickness+\"px\").call(i.stroke,r.color),a.copy_ystyle&&(a=r),o.selectAll(\"path.xerror\").style(\"stroke-width\",a.thickness+\"px\").call(i.stroke,a.color)})}},{\"../color\":303,d3:113}],334:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/constants\");e.exports={_isLinkedToArray:!0,source:{valType:\"string\"},layer:{valType:\"enumerated\",values:[\"below\",\"above\"],dflt:\"above\"},sizex:{valType:\"number\",dflt:0},sizey:{valType:\"number\",dflt:0},sizing:{valType:\"enumerated\",values:[\"fill\",\"contain\",\"stretch\"],dflt:\"contain\"},opacity:{valType:\"number\",min:0,max:1,dflt:1},x:{valType:\"number\",dflt:0},y:{valType:\"number\",dflt:0},xanchor:{valType:\"enumerated\",values:[\"left\",\"center\",\"right\"],dflt:\"left\"},yanchor:{valType:\"enumerated\",values:[\"top\",\"middle\",\"bottom\"],dflt:\"top\"},xref:{valType:\"enumerated\",values:[\"paper\",n.idRegex.x.toString()],dflt:\"paper\"},yref:{valType:\"enumerated\",values:[\"paper\",n.idRegex.y.toString()],dflt:\"paper\"}}},{\"../../plots/cartesian/constants\":408}],335:[function(t,e,r){\"use strict\";function n(t,e,r){function n(r,n){return a.coerce(t,e,o,r,n)}e=e||{},n(\"source\"),n(\"layer\"),n(\"x\"),n(\"y\"),n(\"xanchor\"),n(\"yanchor\"),n(\"sizex\"),n(\"sizey\"),n(\"sizing\"),n(\"opacity\");for(var s=0;2>s;s++){var l={_fullLayout:r},c=[\"x\",\"y\"][s];i.coerceRef(t,e,l,c,\"paper\")}return e}var i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./attributes\");e.exports=function(t,e){if(t.images&&Array.isArray(t.images))for(var r=t.images,i=e.images=[],a=0;a=2/3},r.isCenterAnchor=function(t){return\"center\"===t.xanchor||\"auto\"===t.xanchor&&t.x>1/3&&t.x<2/3},r.isBottomAnchor=function(t){return\"bottom\"===t.yanchor||\"auto\"===t.yanchor&&t.y<=1/3},r.isMiddleAnchor=function(t){return\"middle\"===t.yanchor||\"auto\"===t.yanchor&&t.y>1/3&&t.y<2/3}},{}],339:[function(t,e,r){\"use strict\";var n=t(\"../../plots/font_attributes\"),i=t(\"../color/attributes\"),a=t(\"../../lib/extend\").extendFlat;e.exports={bgcolor:{valType:\"color\"},bordercolor:{valType:\"color\",dflt:i.defaultLine},borderwidth:{valType:\"number\",min:0,dflt:0},font:a({},n,{}),orientation:{valType:\"enumerated\",values:[\"v\",\"h\"],dflt:\"v\"},traceorder:{valType:\"flaglist\",flags:[\"reversed\",\"grouped\"],extras:[\"normal\"]},tracegroupgap:{valType:\"number\",min:0,dflt:10},x:{valType:\"number\",min:-2,max:3,dflt:1.02},xanchor:{valType:\"enumerated\",values:[\"auto\",\"left\",\"center\",\"right\"],dflt:\"left\"},y:{valType:\"number\",min:-2,max:3,dflt:1},yanchor:{valType:\"enumerated\",values:[\"auto\",\"top\",\"middle\",\"bottom\"],dflt:\"auto\"}}},{\"../../lib/extend\":376,\"../../plots/font_attributes\":421,\"../color/attributes\":302}],340:[function(t,e,r){\"use strict\";e.exports={scrollBarWidth:4,scrollBarHeight:20,scrollBarColor:\"#808BA4\",scrollBarMargin:4}},{}],341:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/plots\"),a=t(\"./attributes\"),o=t(\"./helpers\");e.exports=function(t,e,r){function s(t,e){return n.coerce(h,d,a,t,e)}for(var l,c,u,f,h=t.legend||{},d=e.legend={},p=0,g=\"normal\",v=0;v1);if(y!==!1){if(s(\"bgcolor\",e.paper_bgcolor),s(\"bordercolor\"),s(\"borderwidth\"),n.coerceFont(s,\"font\",e.font),s(\"orientation\"),\"h\"===d.orientation){var b=t.xaxis;b&&b.rangeslider&&b.rangeslider.visible?(l=0,u=\"left\",c=1.1,f=\"bottom\"):(l=0,u=\"left\",c=-.1,f=\"top\")}s(\"traceorder\",g),o.isGrouped(e.legend)&&s(\"tracegroupgap\"),s(\"x\",l),s(\"xanchor\",u),s(\"y\",c),s(\"yanchor\",f),n.noneOrAll(h,d,[\"x\",\"y\"])}}},{\"../../lib\":381,\"../../plots/plots\":452,\"./attributes\":339,\"./helpers\":344}],342:[function(t,e,r){\"use strict\";function n(t,e){function r(r){u.util.convertToTspans(r,function(){r.selectAll(\"tspan.line\").attr({x:r.attr(\"x\")}),t.call(a,e)})}var n=t.data()[0][0],i=e._fullLayout,o=n.trace,s=h.traceIs(o,\"pie\"),l=o.index,c=s?n.label:o.name,f=t.selectAll(\"text.legendtext\").data([0]);f.enter().append(\"text\").classed(\"legendtext\",!0),f.attr({x:40,y:0,\"data-unformatted\":c}).style(\"text-anchor\",\"start\").classed(\"user-select-none\",!0).call(p.font,i.legend.font).text(c),e._context.editable&&!s?f.call(u.util.makeEditable).call(r).on(\"edit\",function(t){this.attr({\"data-unformatted\":t}),this.text(t).call(r),this.text()||(t=\" \"),u.restyle(e,\"name\",t,l)}):f.call(r)}function i(t,e){var r=e._fullLayout.hiddenlabels?e._fullLayout.hiddenlabels.slice():[],n=t.selectAll(\"rect\").data([0]);n.enter().append(\"rect\").classed(\"legendtoggle\",!0).style(\"cursor\",\"pointer\").attr(\"pointer-events\",\"all\").call(g.fill,\"rgba(0,0,0,0)\"),n.on(\"click\",function(){if(!e._dragged){var n,i,a=t.data()[0][0],o=e._fullData,s=a.trace,l=s.legendgroup,c=[];if(h.traceIs(s,\"pie\")){var f=a.label,d=r.indexOf(f);-1===d?r.push(f):r.splice(d,1),u.relayout(e,\"hiddenlabels\",r)}else{if(\"\"===l)c=[s.index];else for(var p=0;ptspan\"),d=h[0].length||1;r=l*d,n=u.node()&&p.bBox(u.node()).width;var g=l*(.3+(1-d)/2);u.attr(\"y\",g),h.attr(\"y\",g)}r=Math.max(r,16)+3,a.attr({x:0,y:-r/2,height:r}),i.height=r,i.width=n}function o(t,e,r){var n=t._fullLayout,i=n.legend,a=i.borderwidth,o=b.isGrouped(i);if(b.isVertical(i))o&&e.each(function(t,e){f.setTranslate(this,0,e*i.tracegroupgap)}),i.width=0,i.height=0,r.each(function(t){var e=t[0],r=e.height,n=e.width;f.setTranslate(this,a,5+a+i.height+r/2),i.height+=r,i.width=Math.max(i.width,n)}),i.width+=45+2*a,i.height+=10+2*a,o&&(i.height+=(i._lgroupsLength-1)*i.tracegroupgap),r.selectAll(\".legendtoggle\").attr(\"width\",(t._context.editable?0:i.width)+40),i.width=Math.ceil(i.width),i.height=Math.ceil(i.height);else if(o){i.width=0,i.height=0;for(var s=[i.width],l=e.data(),u=0,h=l.length;h>u;u++){var d=l[u].map(function(t){return t[0].width}),p=40+Math.max.apply(null,d);i.width+=i.tracegroupgap+p,s.push(i.width)}e.each(function(t,e){f.setTranslate(this,s[e],0)}),e.each(function(){var t=c.select(this),e=t.selectAll(\"g.traces\"),r=0;e.each(function(t){var e=t[0],n=e.height;f.setTranslate(this,0,5+a+r+n/2),r+=n}),i.height=Math.max(i.height,r)}),i.height+=10+2*a,i.width+=2*a,i.width=Math.ceil(i.width),i.height=Math.ceil(i.height),r.selectAll(\".legendtoggle\").attr(\"width\",t._context.editable?0:i.width)}else i.width=0,i.height=0,r.each(function(t){var e=t[0],r=40+e.width,n=i.tracegroupgap||5;f.setTranslate(this,a+i.width,5+a+e.height/2),i.width+=n+r,i.height=Math.max(i.height,e.height)}),i.width+=2*a,i.height+=10+2*a,i.width=Math.ceil(i.width),i.height=Math.ceil(i.height),r.selectAll(\".legendtoggle\").attr(\"width\",t._context.editable?0:i.width)}function s(t){var e=t._fullLayout,r=e.legend,n=\"left\";x.isRightAnchor(r)?n=\"right\":x.isCenterAnchor(r)&&(n=\"center\");var i=\"top\";x.isBottomAnchor(r)?i=\"bottom\":x.isMiddleAnchor(r)&&(i=\"middle\"),h.autoMargin(t,\"legend\",{x:r.x,y:r.y,l:r.width*({right:1,center:.5}[n]||0),r:r.width*({left:1,center:.5}[n]||0),b:r.height*({top:1,middle:.5}[i]||0),t:r.height*({bottom:1,middle:.5}[i]||0)})}function l(t){var e=t._fullLayout,r=e.legend,n=\"left\";x.isRightAnchor(r)?n=\"right\":x.isCenterAnchor(r)&&(n=\"center\"),h.autoMargin(t,\"legend\",{x:r.x,y:.5,l:r.width*({right:1,center:.5}[n]||0),r:r.width*({left:1,center:.5}[n]||0),b:0,t:0})}var c=t(\"d3\"),u=t(\"../../plotly\"),f=t(\"../../lib\"),h=t(\"../../plots/plots\"),d=t(\"../dragelement\"),p=t(\"../drawing\"),g=t(\"../color\"),v=t(\"./constants\"),m=t(\"./get_legend_data\"),y=t(\"./style\"),b=t(\"./helpers\"),x=t(\"./anchor_utils\");e.exports=function(t){function e(t,e){T.attr(\"data-scroll\",e).call(f.setTranslate,0,e),E.call(p.setRect,j,t,v.scrollBarWidth,v.scrollBarHeight),A.select(\"rect\").attr({y:b.borderwidth-e})}var r=t._fullLayout,a=\"legend\"+r._uid;if(r._infolayer&&t.calcdata){var b=r.legend,_=r.showlegend&&m(t.calcdata,b),w=r.hiddenlabels||[];if(!r.showlegend||!_.length)return r._infolayer.selectAll(\".legend\").remove(),r._topdefs.select(\"#\"+a).remove(),void h.autoMargin(t,\"legend\");\"undefined\"==typeof t.firstRender?t.firstRender=!0:t.firstRender&&(t.firstRender=!1);var k=r._infolayer.selectAll(\"g.legend\").data([0]);k.enter().append(\"g\").attr({\"class\":\"legend\",\"pointer-events\":\"all\"});var A=r._topdefs.selectAll(\"#\"+a).data([0]);A.enter().append(\"clipPath\").attr(\"id\",a).append(\"rect\");var M=k.selectAll(\"rect.bg\").data([0]);M.enter().append(\"rect\").attr({\"class\":\"bg\",\"shape-rendering\":\"crispEdges\"}).call(g.stroke,b.bordercolor).call(g.fill,b.bgcolor).style(\"stroke-width\",b.borderwidth+\"px\");var T=k.selectAll(\"g.scrollbox\").data([0]);T.enter().append(\"g\").attr(\"class\",\"scrollbox\");var E=k.selectAll(\"rect.scrollbar\").data([0]);E.enter().append(\"rect\").attr({\"class\":\"scrollbar\",rx:20,ry:2,width:0,height:0}).call(g.fill,\"#808BA4\");var L=T.selectAll(\"g.groups\").data(_);L.enter().append(\"g\").attr(\"class\",\"groups\"),L.exit().remove();var S=L.selectAll(\"g.traces\").data(f.identity);S.enter().append(\"g\").attr(\"class\",\"traces\"),S.exit().remove(),S.call(y).style(\"opacity\",function(t){var e=t[0].trace;return h.traceIs(e,\"pie\")?-1!==w.indexOf(t[0].label)?.5:1:\"legendonly\"===e.visible?.5:1}).each(function(){c.select(this).call(n,t).call(i,t)}),t.firstRender&&(o(t,L,S),s(t));var C=0,z=r.width,P=0,R=r.height;o(t,L,S),b.height>R?l(t):s(t);var O=r._size,I=O.l+O.w*b.x,N=O.t+O.h*(1-b.y);x.isRightAnchor(b)?I-=b.width:x.isCenterAnchor(b)&&(I-=b.width/2),x.isBottomAnchor(b)?N-=b.height:x.isMiddleAnchor(b)&&(N-=b.height/2);var j=b.width,F=O.w;j>F?(I=O.l,j=F):(I+j>z&&(I=z-j),C>I&&(I=C),j=Math.min(z-I,b.width));var D=b.height,B=O.h;D>B?(N=O.t,D=B):(N+D>R&&(N=R-D),P>N&&(N=P),D=Math.min(R-N,b.height)),f.setTranslate(k,I,N),M.attr({width:j-b.borderwidth,height:D-b.borderwidth,x:b.borderwidth/2,y:b.borderwidth/2});var U=T.attr(\"data-scroll\")||0;if(f.setTranslate(T,0,U),A.select(\"rect\").attr({width:j-2*b.borderwidth,height:D-2*b.borderwidth,x:b.borderwidth-U,y:b.borderwidth}),T.call(p.setClipUrl,a),b.height-D>0&&!t._context.staticPlot){M.attr({width:j-2*b.borderwidth+v.scrollBarWidth+v.scrollBarMargin}),A.select(\"rect\").attr({width:j-2*b.borderwidth+v.scrollBarWidth+v.scrollBarMargin}),t.firstRender&&e(v.scrollBarMargin,0);var V=D-v.scrollBarHeight-2*v.scrollBarMargin,q=b.height-D,H=v.scrollBarMargin,G=0;e(H,G),k.on(\"wheel\",null),k.on(\"wheel\",function(){G=f.constrain(T.attr(\"data-scroll\")-c.event.deltaY/V*q,-q,0),H=v.scrollBarMargin-G/q*V,e(H,G),c.event.preventDefault()}),E.on(\".drag\",null),T.on(\".drag\",null);var Y=c.behavior.drag().on(\"drag\",function(){H=f.constrain(c.event.y-v.scrollBarHeight/2,v.scrollBarMargin,v.scrollBarMargin+V),G=-(H-v.scrollBarMargin)/V*q,e(H,G)});E.call(Y),T.call(Y)}if(t._context.editable){var X,W,Z,K;k.classed(\"cursor-move\",!0),d.init({element:k.node(),prepFn:function(){var t=f.getTranslate(k);Z=t.x,K=t.y},moveFn:function(t,e){var r=Z+t,n=K+e;f.setTranslate(k,r,n),X=d.align(r,0,O.l,O.l+O.w,b.xanchor),W=d.align(n,0,O.t+O.h,O.t,b.yanchor)},doneFn:function(e){e&&void 0!==X&&void 0!==W&&u.relayout(t,{\"legend.x\":X,\"legend.y\":W})}})}}}},{\"../../lib\":381,\"../../plotly\":400,\"../../plots/plots\":452,\"../color\":303,\"../dragelement\":323,\"../drawing\":325,\"./anchor_utils\":338,\"./constants\":340,\"./get_legend_data\":343,\"./helpers\":344,\"./style\":346,d3:113}],343:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\"),i=t(\"./helpers\");e.exports=function(t,e){function r(t,r){if(\"\"!==t&&i.isGrouped(e))-1===l.indexOf(t)?(l.push(t),c=!0,s[t]=[[r]]):s[t].push([r]);else{var n=\"~~i\"+f;l.push(n),s[n]=[[r]],f++}}var a,o,s={},l=[],c=!1,u={},f=0;for(a=0;aa;a++)m=s[l[a]],y[a]=i.isReversed(e)?m.reverse():m;else{for(y=[new Array(b)],a=0;b>a;a++)m=s[l[a]][0],y[0][i.isReversed(e)?b-a-1:a]=m;b=1}return e._lgroupsLength=b,y}},{\"../../plots/plots\":452,\"./helpers\":344}],344:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\");r.legendGetsTrace=function(t){return t.visible&&n.traceIs(t,\"showLegend\")},r.isGrouped=function(t){return-1!==(t.traceorder||\"\").indexOf(\"grouped\")},r.isVertical=function(t){return\"h\"!==t.orientation},r.isReversed=function(t){return-1!==(t.traceorder||\"\").indexOf(\"reversed\")}},{\"../../plots/plots\":452}],345:[function(t,e,r){\"use strict\";var n=e.exports={};n.layoutAttributes=t(\"./attributes\"),n.supplyLayoutDefaults=t(\"./defaults\"),n.draw=t(\"./draw\"),n.style=t(\"./style\")},{\"./attributes\":339,\"./defaults\":341,\"./draw\":342,\"./style\":346}],346:[function(t,e,r){\"use strict\";function n(t){var e=t[0].trace,r=e.visible&&e.fill&&\"none\"!==e.fill,n=d.hasLines(e),i=l.select(this).select(\".legendfill\").selectAll(\"path\").data(r?[t]:[]);i.enter().append(\"path\").classed(\"js-fill\",!0),i.exit().remove(),i.attr(\"d\",\"M5,0h30v6h-30z\").call(f.fillGroupStyle);var a=l.select(this).select(\".legendlines\").selectAll(\"path\").data(n?[t]:[]);a.enter().append(\"path\").classed(\"js-line\",!0).attr(\"d\",\"M5,0h30\"),a.exit().remove(),a.call(f.lineGroupStyle)}function i(t){function e(t,e,r){var n=c.nestedProperty(o,t).get(),i=Array.isArray(n)&&e?e(n):n;if(r){if(ir[1])return r[1]}return i}function r(t){return t[0]}var n,i,a=t[0],o=a.trace,s=d.hasMarkers(o),u=d.hasText(o),h=d.hasLines(o);if(s||u||h){var p={},g={};s&&(p.mc=e(\"marker.color\",r),p.mo=e(\"marker.opacity\",c.mean,[.2,1]),p.ms=e(\"marker.size\",c.mean,[2,16]),p.mlc=e(\"marker.line.color\",r),p.mlw=e(\"marker.line.width\",c.mean,[0,5]),g.marker={sizeref:1,sizemin:1,sizemode:\"diameter\"}),h&&(g.line={width:e(\"line.width\",r,[0,10])}),u&&(p.tx=\"Aa\",p.tp=e(\"textposition\",r),p.ts=10,p.tc=e(\"textfont.color\",r),p.tf=e(\"textfont.family\",r)),n=[c.minExtend(a,p)],i=c.minExtend(o,g)}var v=l.select(this).select(\"g.legendpoints\"),m=v.selectAll(\"path.scatterpts\").data(s?n:[]);m.enter().append(\"path\").classed(\"scatterpts\",!0).attr(\"transform\",\"translate(20,0)\"),m.exit().remove(),m.call(f.pointStyle,i),s&&(n[0].mrc=3);var y=v.selectAll(\"g.pointtext\").data(u?n:[]);y.enter().append(\"g\").classed(\"pointtext\",!0).append(\"text\").attr(\"transform\",\"translate(20,0)\"),y.exit().remove(),y.selectAll(\"text\").call(f.textPointStyle,i)}function a(t){var e=t[0].trace,r=e.marker||{},n=r.line||{},i=l.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbar\").data(u.traceIs(e,\"bar\")?[t]:[]);i.enter().append(\"path\").classed(\"legendbar\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",\"translate(20,0)\"),i.exit().remove(),i.each(function(t){var e=(t.mlw+1||n.width+1)-1,i=l.select(this);i.style(\"stroke-width\",e+\"px\").call(h.fill,t.mc||r.color),e&&i.call(h.stroke,t.mlc||n.color)})}function o(t){var e=t[0].trace,r=l.select(this).select(\"g.legendpoints\").selectAll(\"path.legendbox\").data(u.traceIs(e,\"box\")&&e.visible?[t]:[]);r.enter().append(\"path\").classed(\"legendbox\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",\"translate(20,0)\"),r.exit().remove(),r.each(function(t){var r=(t.lw+1||e.line.width+1)-1,n=l.select(this);n.style(\"stroke-width\",r+\"px\").call(h.fill,t.fc||e.fillcolor),r&&n.call(h.stroke,t.lc||e.line.color)})}function s(t){var e=t[0].trace,r=l.select(this).select(\"g.legendpoints\").selectAll(\"path.legendpie\").data(u.traceIs(e,\"pie\")&&e.visible?[t]:[]);r.enter().append(\"path\").classed(\"legendpie\",!0).attr(\"d\",\"M6,6H-6V-6H6Z\").attr(\"transform\",\"translate(20,0)\"),r.exit().remove(),r.size()&&r.call(p,t[0],e)}var l=t(\"d3\"),c=t(\"../../lib\"),u=t(\"../../plots/plots\"),f=t(\"../drawing\"),h=t(\"../color\"),d=t(\"../../traces/scatter/subtypes\"),p=t(\"../../traces/pie/style_one\");e.exports=function(t){t.each(function(t){var e=l.select(this),r=e.selectAll(\"g.legendfill\").data([t]);r.enter().append(\"g\").classed(\"legendfill\",!0);var n=e.selectAll(\"g.legendlines\").data([t]);n.enter().append(\"g\").classed(\"legendlines\",!0);var i=e.selectAll(\"g.legendsymbols\").data([t]);i.enter().append(\"g\").classed(\"legendsymbols\",!0),i.style(\"opacity\",t[0].trace.opacity),i.selectAll(\"g.legendpoints\").data([t]).enter().append(\"g\").classed(\"legendpoints\",!0)}).each(a).each(o).each(s).each(n).each(i)}},{\"../../lib\":381,\"../../plots/plots\":452,\"../../traces/pie/style_one\":552,\"../../traces/scatter/subtypes\":573,\"../color\":303,\"../drawing\":325,d3:113}],347:[function(t,e,r){\"use strict\";function n(t,e){var r=e.currentTarget,n=r.getAttribute(\"data-attr\"),i=r.getAttribute(\"data-val\")||!0,a=t._fullLayout,o={};if(\"zoom\"===n){for(var s,l,u=\"in\"===i?.5:2,h=(1+u)/2,d=(1-u)/2,p=c.Axes.list(t,null,!0),v=0;vy;y++){var b=s[y];h=m[b]={};for(var x=0;x1)return n([\"resetViews\",\"toggleHover\"]),o(v,r);u&&(n([\"zoom3d\",\"pan3d\",\"orbitRotation\",\"tableRotation\"]),n([\"resetCameraDefault3d\",\"resetCameraLastSave3d\"]),n([\"hoverClosest3d\"])),h&&(n([\"zoomInGeo\",\"zoomOutGeo\",\"resetGeo\"]),n([\"hoverClosestGeo\"]));var m=i(s),y=[];return((c||p)&&!m||g)&&(y=[\"zoom2d\",\"pan2d\"]),(c||g)&&a(l)&&(y.push(\"select2d\"),y.push(\"lasso2d\")),y.length&&n(y),!c&&!p||m||g||n([\"zoomIn2d\",\"zoomOut2d\",\"autoScale2d\",\"resetScale2d\"]),c&&d?n([\"toggleHover\"]):p?n([\"hoverClosestGl2d\"]):c?n([\"hoverClosestCartesian\",\"hoverCompareCartesian\"]):d&&n([\"hoverClosestPie\"]),o(v,r)}function i(t){for(var e=l.Axes.list({_fullLayout:t},null,!0),r=!0,n=0;n0);if(h){var d=i(e,r,s);l(\"x\",d[0]),l(\"y\",d[1]),a.noneOrAll(t,e,[\"x\",\"y\"]),l(\"xanchor\"),l(\"yanchor\"),a.coerceFont(l,\"font\",r.font),l(\"bgcolor\"),l(\"bordercolor\"),l(\"borderwidth\")}}},{\"../../lib\":381,\"./attributes\":350,\"./button_attributes\":351,\"./constants\":352}],354:[function(t,e,r){\"use strict\";function n(t){for(var e=m.list(t,\"x\",!0),r=[],n=0;ne){var r=e;e=t,t=r}s.setAttributes(w,{\"data-min\":t,\"data-max\":e}),s.setAttributes(R,{x:t,width:e-t}),s.setAttributes(M,{width:t}),s.setAttributes(T,{x:e,width:p-e}),s.setAttributes(E,{transform:\"translate(\"+(t-v-1)+\")\"}),s.setAttributes(C,{transform:\"translate(\"+e+\")\"})}var f=t._fullLayout,h=f._infolayer.selectAll(\"g.range-slider\"),d=f.xaxis.rangeslider,p=f._size.w,g=(f.height-f.margin.b-f.margin.t)*d.thickness,v=2,m=Math.floor(d.borderwidth/2),y=f.margin.l,b=f.height-g-f.margin.b,x=0,_=p,w=document.createElementNS(o,\"g\");s.setAttributes(w,{\"class\":\"range-slider\",\"data-min\":x,\"data-max\":_,\"pointer-events\":\"all\",transform:\"translate(\"+y+\",\"+b+\")\"});var k=document.createElementNS(o,\"rect\"),A=d.borderwidth%2===0?d.borderwidth:d.borderwidth-1;s.setAttributes(k,{fill:d.bgcolor,stroke:d.bordercolor,\"stroke-width\":d.borderwidth,height:g+A,width:p+A,transform:\"translate(-\"+m+\", -\"+m+\")\",\"shape-rendering\":\"crispEdges\"});var M=document.createElementNS(o,\"rect\");s.setAttributes(M,{x:0,width:x,height:g,fill:\"rgba(0,0,0,0.4)\"});var T=document.createElementNS(o,\"rect\");s.setAttributes(T,{x:_,width:p-_,height:g,fill:\"rgba(0,0,0,0.4)\"});var E=document.createElementNS(o,\"g\"),L=document.createElementNS(o,\"rect\"),S=document.createElementNS(o,\"rect\");s.setAttributes(E,{transform:\"translate(\"+(x-v-1)+\")\"}),s.setAttributes(L,{width:10,height:g,x:-6,fill:\"transparent\",cursor:\"col-resize\"}),s.setAttributes(S,{width:v,height:g/2,y:g/4,rx:1,fill:\"white\",stroke:\"#666\",\"shape-rendering\":\"crispEdges\"}),s.appendChildren(E,[S,L]);var C=document.createElementNS(o,\"g\"),z=document.createElementNS(o,\"rect\"),P=document.createElementNS(o,\"rect\");s.setAttributes(C,{transform:\"translate(\"+_+\")\"}),s.setAttributes(z,{width:10,height:g,x:-2,fill:\"transparent\",cursor:\"col-resize\"}),s.setAttributes(P,{width:v,height:g/2,y:g/4,rx:1,fill:\"white\",stroke:\"#666\",\"shape-rendering\":\"crispEdges\"}),s.appendChildren(C,[P,z]);var R=document.createElementNS(o,\"rect\");s.setAttributes(R,{x:x,width:_-x,height:g,cursor:\"ew-resize\",fill:\"transparent\"}),w.addEventListener(\"mousedown\",function(t){function r(t){var r,n,f=+t.clientX-a;switch(i){case R:w.style.cursor=\"ew-resize\",r=+s+f,n=+l+f,u(r,n),c(e(r),e(n));break;case L:w.style.cursor=\"col-resize\",r=+s+f,n=+l,u(r,n),c(e(r),e(n));break;case z:w.style.cursor=\"col-resize\",r=+s,n=+l+f,u(r,n),c(e(r),e(n));break;default:w.style.cursor=\"ew-resize\",r=o,n=o+f,u(r,n),c(e(r),e(n))}}function n(){window.removeEventListener(\"mousemove\",r),window.removeEventListener(\"mouseup\",n),w.style.cursor=\"auto\"}var i=t.target,a=t.clientX,o=a-w.getBoundingClientRect().left,s=w.getAttribute(\"data-min\"),l=w.getAttribute(\"data-max\");window.addEventListener(\"mousemove\",r),window.addEventListener(\"mouseup\",n)}),d.range||(d.range=i.getAutoRange(f.xaxis));var O=l(t,p,g);s.appendChildren(w,[k,O,M,T,R,E,C]),r(f.xaxis.range[0],f.xaxis.range[1]),h.data([0]).enter().append(function(){return d.setRange=r,w})}},{\"../../constants/xmlns_namespaces\":369,\"../../lib\":381,\"../../plotly\":400,\"../../plots/cartesian/axes\":403,\"./helpers\":360,\"./range_plot\":362}],359:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r,a){function o(t,e){return n.coerce(s,l,i,t,e)}if(t[r].rangeslider){var s=\"object\"==typeof t[r].rangeslider?t[r].rangeslider:{},l=e[r].rangeslider={};if(o(\"bgcolor\"),o(\"bordercolor\"),o(\"borderwidth\"),o(\"thickness\"),o(\"visible\"),o(\"range\"),l.range&&!e[r].autorange){var c=l.range,u=e[r].range;c[0]=Math.min(c[0],u[0]),c[1]=Math.max(c[1],u[1])}else e[r]._needsExpand=!0;l.visible&&a.forEach(function(t){var r=e[t]||{};r.fixedrange=!0,e[t]=r})}}},{\"../../lib\":381,\"./attributes\":357}],360:[function(t,e,r){\"use strict\";r.setAttributes=function(t,e){for(var r in e)t.setAttribute(r,e[r])},r.appendChildren=function(t,e){for(var r=0;rl;l++){var c=s[l],u={_fullLayout:e},f=x.coerceRef(t,n,u,c);if(\"path\"!==o){var h=.25,d=.75;if(\"paper\"!==f){var p=x.getFromId(u,f),g=a(p);h=g(p.range[0]+h*(p.range[1]-p.range[0])),d=g(p.range[0]+d*(p.range[1]-p.range[0]))}r(c+\"0\",h),r(c+\"1\",d)}}return\"path\"===o?r(\"path\"):b.noneOrAll(t,n,[\"x0\",\"x1\",\"y0\",\"y1\"]),n}function i(t){return\"category\"===t.type?t.c2l:t.d2l}function a(t){return\"category\"===t.type?t.l2c:t.l2d}function o(t,e){t.layout.shapes=e,k.supplyLayoutDefaults(t.layout,t._fullLayout),k.drawAll(t)}function s(t){delete t.layout.shapes,t._fullLayout.shapes=[],k.drawAll(t)}function l(t,e,r){for(var n=0;ne;i--)h(t,i).selectAll('[data-index=\"'+(i-1)+'\"]').attr(\"data-index\",i),k.draw(t,i)}function f(t,e,r,o){function s(e){var r=e.append(\"path\").attr(z).style(\"opacity\",S.opacity).call(_.stroke,P).call(_.fill,S.fillcolor).call(w.dashLine,S.line.dash,S.line.width);C&&r.call(w.setClipUrl,\"clip\"+t._fullLayout._uid+C)}var l,c;h(t,e).selectAll('[data-index=\"'+e+'\"]').remove();var u=t.layout.shapes[e];if(u){var f={xref:u.xref,yref:u.yref},p={};\"string\"==typeof r&&r?p[r]=o:b.isPlainObject(r)&&(p=r);var v=Object.keys(p);for(l=0;ll;l++){var k=y[l];if(void 0===p[k]&&void 0!==u[k]){var A,M=k.charAt(0),T=x.getFromId(t,x.coerceRef(f,{},t,M)),E=x.getFromId(t,x.coerceRef(u,{},t,M)),L=u[k];void 0!==p[M+\"ref\"]&&(T?(A=i(T)(L),L=(A-T.range[0])/(T.range[1]-T.range[0])):L=(L-E.domain[0])/(E.domain[1]-E.domain[0]),E?(A=E.range[0]+L*(E.range[1]-E.range[0]),L=a(E)(A)):L=T.domain[0]+L*(T.domain[1]-T.domain[0])),u[k]=L}}var S=n(u,t._fullLayout);t._fullLayout.shapes[e]=S;var C,z={\"data-index\":e,\"fill-rule\":\"evenodd\",d:g(t,S)},P=S.line.width?S.line.color:\"rgba(0,0,0,0)\";if(\"below\"!==S.layer)C=(S.xref+S.yref).replace(/paper/g,\"\"),s(t._fullLayout._shapeUpperLayer);else if(\"paper\"===S.xref&&\"paper\"===S.yref)C=\"\",s(t._fullLayout._shapeLowerLayer);else{var R,O=t._fullLayout._plots||{},I=Object.keys(O);for(l=0,c=I.length;c>l;l++)R=O[I[l]],C=I[l],d(t,S,R.id)&&s(R.shapelayer)}}}function h(t,e){var r=t._fullLayout.shapes[e],n=t._fullLayout._shapeUpperLayer;return r?\"below\"===r.layer&&(n=\"paper\"===r.xref&&\"paper\"===r.yref?t._fullLayout._shapeLowerLayer:t._fullLayout._shapeSubplotLayer):console.log(\"getShapeLayer: undefined shape: index\",e),n}function d(t,e,r){var n=y.Axes.getFromId(t,r,\"x\")._id,i=y.Axes.getFromId(t,r,\"y\")._id;return\"below\"===e.layer&&(n===e.xref||i===e.yref)}function p(t){return function(e){return t(e.replace(\"_\",\" \"))}}function g(t,e){var r,n,a,o,s=e.type,l=x.getFromId(t,e.xref),c=x.getFromId(t,e.yref),u=t._fullLayout._size;if(l?(r=i(l),n=function(t){return l._offset+l.l2p(r(t,!0))}):n=function(t){return u.l+u.w*t},c?(a=i(c),o=function(t){return c._offset+c.l2p(a(t,!0))}):o=function(t){return u.t+u.h*(1-t)},\"path\"===s)return l&&\"date\"===l.type&&(n=p(n)),c&&\"date\"===c.type&&(o=p(o)),k.convertPath(e.path,n,o);var f=n(e.x0),h=n(e.x1),d=o(e.y0),g=o(e.y1);if(\"line\"===s)return\"M\"+f+\",\"+d+\"L\"+h+\",\"+g;if(\"rect\"===s)return\"M\"+f+\",\"+d+\"H\"+h+\"V\"+g+\"H\"+f+\"Z\";var v=(f+h)/2,m=(d+g)/2,y=Math.abs(v-f),b=Math.abs(m-d),_=\"A\"+y+\",\"+b,w=v+y+\",\"+m,A=v+\",\"+(m-b);return\"M\"+w+_+\" 0 1,1 \"+A+_+\" 0 0,1 \"+w+\"Z\"}function v(t,e,r,n,i){var a=\"category\"===t.type?Number:t.d2c;if(void 0!==e)return[a(e),a(r)];if(n){var o,s,l,c,u,f=1/0,h=-(1/0),d=n.match(A);for(\"date\"===t.type&&(a=p(a)),o=0;ou&&(f=u),u>h&&(h=u)));return h>=f?[f,h]:void 0}}var m=t(\"fast-isnumeric\"),y=t(\"../../plotly\"),b=t(\"../../lib\"),x=t(\"../../plots/cartesian/axes\"),_=t(\"../color\"),w=t(\"../drawing\"),k=e.exports={};k.layoutAttributes=t(\"./attributes\"),k.supplyLayoutDefaults=function(t,e){for(var r=t.shapes||[],i=e.shapes=[],a=0;as&&(t=\"X\"),t});return n>s&&(l=l.replace(/[\\s,]*X.*/,\"\"),console.log(\"ignoring extra params in segment \"+t)),i+l})},k.calcAutorange=function(t){var e,r,n,i,a,o=t._fullLayout,s=o.shapes;if(s.length&&t._fullData.length)for(e=0;eh?r=h:(u.left-=b.offsetLeft,u.right-=b.offsetLeft,u.top-=b.offsetTop,u.bottom-=b.offsetTop,b.selection.each(function(){var t=l.bBox(this);s.bBoxIntersect(u,t,c)&&(r=Math.max(r,o*(t[b.side]-u[a])+c))}),r=Math.min(h,r)),r>0||0>h){var d={left:[-r,0],right:[r,0],top:[0,-r],bottom:[0,r]}[b.side];e.attr(\"transform\",\"translate(\"+d+\")\")}}}function p(){E=0,L=!0,S=z,k._infolayer.select(\".\"+e).attr({\"data-unformatted\":S}).text(S).on(\"mouseover.opacity\",function(){n.select(this).transition().duration(100).style(\"opacity\",1)}).on(\"mouseout.opacity\",function(){n.select(this).transition().duration(1e3).style(\"opacity\",0)})}var g=r.propContainer,v=r.propName,m=r.traceIndex,y=r.dfltName,b=r.avoid||{},x=r.attributes,_=r.transform,w=r.containerGroup,k=t._fullLayout,A=g.titlefont.family,M=g.titlefont.size,T=g.titlefont.color,E=1,L=!1,S=g.title.trim();\"\"===S&&(E=0),S.match(/Click to enter .+ title/)&&(E=.2,L=!0),w||(w=k._infolayer.selectAll(\".g-\"+e).data([0]),w.enter().append(\"g\").classed(\"g-\"+e,!0));var C=w.selectAll(\"text\").data([0]);C.enter().append(\"text\"),C.text(S).attr(\"class\",e),C.attr({\"data-unformatted\":S}).call(f);var z=\"Click to enter \"+y+\" title\";t._context.editable?(S||p(),C.call(u.makeEditable).on(\"edit\",function(e){void 0!==m?a.restyle(t,v,e,m):a.relayout(t,v,e)}).on(\"cancel\",function(){this.text(this.attr(\"data-unformatted\")).call(f)}).on(\"input\",function(t){this.text(t||\" \").attr(x).selectAll(\"tspan.line\").attr(x)})):S&&!S.match(/Click to enter .+ title/)||C.remove(),C.classed(\"js-placeholder\",L)}},{\"../../lib\":381,\"../../lib/svg_text_utils\":393,\"../../plotly\":400,\"../../plots/plots\":452,\"../color\":303,\"../drawing\":325,d3:113,\"fast-isnumeric\":117}],366:[function(t,e,r){\"use strict\";e.exports={solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}},{}],367:[function(t,e,r){\"use strict\";e.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}},{}],368:[function(t,e,r){\"use strict\";e.exports={circle:\"\\u25cf\",\"circle-open\":\"\\u25cb\",square:\"\\u25a0\",\"square-open\":\"\\u25a1\",diamond:\"\\u25c6\",\"diamond-open\":\"\\u25c7\",cross:\"+\",x:\"\\u274c\"}},{}],369:[function(t,e,r){\"use strict\";r.xmlns=\"http://www.w3.org/2000/xmlns/\",r.svg=\"http://www.w3.org/2000/svg\",r.xlink=\"http://www.w3.org/1999/xlink\",r.svgAttrs={xmlns:r.svg,\"xmlns:xlink\":r.xlink}},{}],370:[function(t,e,r){\"use strict\";var n=t(\"./plotly\");r.version=\"1.12.0\",r.plot=n.plot,r.newPlot=n.newPlot,r.restyle=n.restyle,r.relayout=n.relayout,r.redraw=n.redraw,r.extendTraces=n.extendTraces,r.prependTraces=n.prependTraces,r.addTraces=n.addTraces,r.deleteTraces=n.deleteTraces,r.moveTraces=n.moveTraces,r.purge=n.purge,r.setPlotConfig=t(\"./plot_api/set_plot_config\"),r.register=n.register,r.toImage=t(\"./plot_api/to_image\"),r.downloadImage=t(\"./snapshot/download\"),r.Icons=t(\"../build/ploticon\"),r.Plots=n.Plots,r.Fx=n.Fx,r.Snapshot=n.Snapshot,r.PlotSchema=n.PlotSchema,r.Queue=n.Queue,r.d3=t(\"d3\")},{\"../build/ploticon\":2,\"./plot_api/set_plot_config\":398,\"./plot_api/to_image\":399,\"./plotly\":400,\"./snapshot/download\":467,d3:113}],371:[function(t,e,r){\"use strict\";\"undefined\"!=typeof MathJax?(r.MathJax=!0,MathJax.Hub.Config({messageStyle:\"none\",skipStartupTypeset:!0,displayAlign:\"left\",tex2jax:{inlineMath:[[\"$\",\"$\"],[\"\\\\(\",\"\\\\)\"]]}}),MathJax.Hub.Configured()):r.MathJax=!1},{}],372:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){Array.isArray(t)&&(e[r]=t[n])}},{}],373:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"tinycolor2\"),a=t(\"./nested_property\"),o=t(\"../components/colorscale/get_scale\"),s=(Object.keys(t(\"../components/colorscale/scales\")),/^([2-9]|[1-9][0-9]+)$/);r.valObjects={data_array:{coerceFunction:function(t,e,r){Array.isArray(t)?e.set(t):void 0!==r&&e.set(r)}},enumerated:{coerceFunction:function(t,e,r,n){n.coerceNumber&&(t=+t),-1===n.values.indexOf(t)?e.set(r):e.set(t)}},\"boolean\":{coerceFunction:function(t,e,r){t===!0||t===!1?e.set(t):e.set(r)}},number:{coerceFunction:function(t,e,r,i){!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},integer:{coerceFunction:function(t,e,r,i){t%1||!n(t)||void 0!==i.min&&ti.max?e.set(r):e.set(+t)}},string:{coerceFunction:function(t,e,r,n){if(n.strict===!0&&\"string\"!=typeof t)return void e.set(r);var i=String(t);void 0===t||n.noBlank===!0&&!i?e.set(r):e.set(i)}},color:{coerceFunction:function(t,e,r){i(t).isValid()?e.set(t):e.set(r)}},colorscale:{coerceFunction:function(t,e,r){e.set(o(t,r))}},angle:{coerceFunction:function(t,e,r){\"auto\"===t?e.set(\"auto\"):n(t)?(Math.abs(t)>180&&(t-=360*Math.round(t/360)),e.set(+t)):e.set(r)}},subplotid:{coerceFunction:function(t,e,r){var n=r.length;return\"string\"==typeof t&&t.substr(0,n)===r&&s.test(t.substr(n))?void e.set(t):void e.set(r)}},flaglist:{coerceFunction:function(t,e,r,n){if(\"string\"!=typeof t)return void e.set(r);if(-1!==n.extras.indexOf(t))return void e.set(t);for(var i=t.split(\"+\"),a=0;a2)return!1;var l=o[0].split(\"-\");if(l.length>3||3!==l.length&&o[1])return!1;if(4===l[0].length)r=Number(l[0]);else{if(2!==l[0].length)return!1;var c=(new Date).getFullYear();r=((Number(l[0])-c+70)%100+200)%100+c-70}return s(r)?1===l.length?new Date(r,0,1).getTime():(n=Number(l[1])-1,l[1].length>2||!(n>=0&&11>=n)?!1:2===l.length?new Date(r,n,1).getTime():(i=Number(l[2]),l[2].length>2||!(i>=1&&31>=i)?!1:(i=new Date(r,n,i).getTime(),o[1]?(l=o[1].split(\":\"),l.length>3?!1:(a=Number(l[0]),l[0].length>2||!(a>=0&&23>=a)?!1:(i+=36e5*a,1===l.length?i:(n=Number(l[1]),l[1].length>2||!(n>=0&&59>=n)?!1:(i+=6e4*n,2===l.length?i:(t=Number(l[2]),t>=0&&60>t?i+1e3*t:!1)))))):i))):!1},r.isDateTime=function(t){return r.dateTime2ms(t)!==!1},r.ms2DateTime=function(t,e){if(\"undefined\"==typeof o)return void console.log(\"d3 is not defined\");e||(e=0);var r=new Date(t),i=o.time.format(\"%Y-%m-%d\")(r);return 7776e6>e?(i+=\" \"+n(r.getHours(),2),432e6>e&&(i+=\":\"+n(r.getMinutes(),2),108e5>e&&(i+=\":\"+n(r.getSeconds(),2),3e5>e&&(i+=\".\"+n(r.getMilliseconds(),3)))),i.replace(/([:\\s]00)*\\.?[0]*$/,\"\")):i};var l={H:[\"%H:%M:%S~%L\",\"%H:%M:%S\",\"%H:%M\"],I:[\"%I:%M:%S~%L%p\",\"%I:%M:%S%p\",\"%I:%M%p\"],D:[\"%H\",\"%I%p\",\"%Hh\"]},c={Y:[\"%Y~%m~%d\",\"%Y%m%d\",\"%y%m%d\",\"%m~%d~%Y\",\"%d~%m~%Y\"],Yb:[\"%b~%d~%Y\",\"%d~%b~%Y\",\"%Y~%d~%b\",\"%Y~%b~%d\"],y:[\"%m~%d~%y\",\"%d~%m~%y\",\"%y~%m~%d\"],yb:[\"%b~%d~%y\",\"%d~%b~%y\",\"%y~%d~%b\",\"%y~%b~%d\"]},u=o.time.format.utc,f={Y:{H:[\"%Y~%m~%dT%H:%M:%S\",\"%Y~%m~%dT%H:%M:%S~%L\"].map(u),I:[],D:[\"%Y%m%d%H%M%S\",\"%Y~%m\",\"%m~%Y\"].map(u)},Yb:{H:[],I:[],D:[\"%Y~%b\",\"%b~%Y\"].map(u)},y:{H:[],I:[],D:[]},yb:{H:[],I:[],D:[]}};[\"Y\",\"Yb\",\"y\",\"yb\"].forEach(function(t){c[t].forEach(function(e){f[t].D.push(u(e)),[\"H\",\"I\",\"D\"].forEach(function(r){l[r].forEach(function(n){var i=f[t][r];i.push(u(e+\"~\"+n)),i.push(u(n+\"~\"+e))})})})});var h=/[a-z]*/g,d=function(t){return t.substr(0,3)},p=/(mon|tue|wed|thu|fri|sat|sun|the|of|st|nd|rd|th)/g,g=/[\\s,\\/\\-\\.\\(\\)]+/g,v=/~?([ap])~?m(~|$)/,m=function(t,e){return e+\"m \"},y=/\\d\\d\\d\\d/,b=/(^|~)[a-z]{3}/,x=/[ap]m/,_=/:/,w=/q([1-4])/,k=[\"31~mar\",\"30~jun\",\"30~sep\",\"31~dec\"],A=function(t,e){return k[e-1]},M=/ ?([+\\-]\\d\\d:?\\d\\d|Z)$/;r.parseDate=function(t){if(t.getTime)return t;if(\"string\"!=typeof t)return!1;t=t.toLowerCase().replace(h,d).replace(p,\"\").replace(g,\"~\").replace(v,m).replace(w,A).trim().replace(M,\"\");var e,r,n=null,o=i(t),s=a(t);e=f[o][s],r=e.length;for(var l=0;r>l&&!(n=e[l].parse(t));l++);if(!(n instanceof Date))return!1;var c=n.getTimezoneOffset();return n.setTime(n.getTime()+60*c*1e3),n}},{d3:113,\"fast-isnumeric\":117}],375:[function(t,e,r){\"use strict\";var n=t(\"events\").EventEmitter,i={init:function(t){if(t._ev instanceof n)return t;var e=new n;return t._ev=e,t.on=e.on.bind(e),t.once=e.once.bind(e),t.removeListener=e.removeListener.bind(e),t.removeAllListeners=e.removeAllListeners.bind(e),t.emit=function(r,n){\"undefined\"!=typeof jQuery&&jQuery(t).trigger(r,n),e.emit(r,n)},t},triggerHandler:function(t,e,r){var n,i;\"undefined\"!=typeof jQuery&&(n=jQuery(t).triggerHandler(e,r));var a=t._ev;if(!a)return n;var o=a._events[e];if(!o)return n;\"function\"==typeof o&&(o=[o]);for(var s=o.pop(),l=0;lp;p++){o=t[p];for(s in o)l=h[s],c=o[s],e&&c&&(i(c)||(u=a(c)))?(u?(u=!1,f=l&&a(l)?l:[]):f=l&&i(l)?l:{},h[s]=n([f,c],e,r)):(\"undefined\"!=typeof c||r)&&(h[s]=c)}return h}var i=t(\"./is_plain_object.js\"),a=Array.isArray;r.extendFlat=function(){return n(arguments,!1,!1)},r.extendDeep=function(){return n(arguments,!0,!1)},r.extendDeepAll=function(){return n(arguments,!0,!0)}},{\"./is_plain_object.js\":382}],377:[function(t,e,r){\"use strict\";e.exports=function(t){for(var e=[],r=0;ry;y++)f=s(p,y),d=l(e,y),m[y]=n(f,d);else m=n(p,e);return m}var s=t(\"tinycolor2\"),l=t(\"fast-isnumeric\"),c=t(\"../components/colorscale/make_scale_function\"),u=t(\"../components/color/attributes\").defaultLine,f=t(\"./str2rgbarray\"),h=1;e.exports=o},{\"../components/color/attributes\":302,\"../components/colorscale/make_scale_function\":319,\"./str2rgbarray\":392,\"fast-isnumeric\":117,tinycolor2:274}],380:[function(t,e,r){\"use strict\";function n(t){for(var e=0;(e=t.indexOf(\"\",e))>=0;){var r=t.indexOf(\"\",e);if(e>r)break;t=t.slice(0,e)+l(t.slice(e+5,r))+t.slice(r+6)}return t}function i(t){return t.replace(/\\/g,\"\\n\")}function a(t){return t.replace(/\\<.*\\>/g,\"\")}function o(t){for(var e=0;(e=t.indexOf(\"&\",e))>=0;){var r=t.indexOf(\";\",e);if(e>r)e+=1;else{var n=c[t.slice(e+1,r)];t=n?t.slice(0,e)+n+t.slice(r+1):t.slice(0,e)+t.slice(r+1)}}return t}function s(t){return\"\"+o(a(n(i(t))))}var l=t(\"superscript-text\"),c={mu:\"\\u03bc\",amp:\"&\",lt:\"<\",gt:\">\"};e.exports=s},{\"superscript-text\":263}],381:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=e.exports={};i.nestedProperty=t(\"./nested_property\"),i.isPlainObject=t(\"./is_plain_object\");var a=t(\"./coerce\");i.valObjects=a.valObjects,i.coerce=a.coerce,i.coerce2=a.coerce2,i.coerceFont=a.coerceFont;var o=t(\"./dates\");i.dateTime2ms=o.dateTime2ms,i.isDateTime=o.isDateTime,i.ms2DateTime=o.ms2DateTime,\n", + "i.parseDate=o.parseDate;var s=t(\"./search\");i.findBin=s.findBin,i.sorterAsc=s.sorterAsc,i.sorterDes=s.sorterDes,i.distinctVals=s.distinctVals,i.roundUp=s.roundUp;var l=t(\"./stats\");i.aggNums=l.aggNums,i.len=l.len,i.mean=l.mean,i.variance=l.variance,i.stdev=l.stdev,i.interp=l.interp;var c=t(\"./matrix\");i.init2dArray=c.init2dArray,i.transposeRagged=c.transposeRagged,i.dot=c.dot,i.translationMatrix=c.translationMatrix,i.rotationMatrix=c.rotationMatrix,i.rotationXYMatrix=c.rotationXYMatrix,i.apply2DTransform=c.apply2DTransform,i.apply2DTransform2=c.apply2DTransform2;var u=t(\"./extend\");i.extendFlat=u.extendFlat,i.extendDeep=u.extendDeep,i.extendDeepAll=u.extendDeepAll,i.notifier=t(\"./notifier\"),i.swapAttrs=function(t,e,r,n){r||(r=\"x\"),n||(n=\"y\");for(var a=0;ar?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},i.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},i.identity=function(t){return t},i.randstr=function f(t,e,r){if(r||(r=16),void 0===e&&(e=24),0>=e)return\"0\";var n,i,a,o=Math.log(Math.pow(2,e))/Math.log(r),s=\"\";for(n=2;o===1/0;n*=2)o=Math.log(Math.pow(2,e/n))/Math.log(r)*n;var l=o-Math.floor(o);for(n=0;n-1||c!==1/0&&c>=Math.pow(2,e)?f(t,e,r):s},i.OptionControl=function(t,e){t||(t={}),e||(e=\"opt\");var r={};return r.optionList=[],r._newoption=function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)},r[\"_\"+e]=t,r},i.smooth=function(t,e){if(e=Math.round(e)||0,2>e)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;l>r;r++)c[r]=(1-Math.cos(Math.PI*(r+1)/e))/(2*e);for(r=0;o>r;r++){for(a=0,n=0;l>n;n++)i=r+n+1-e,-o>i?i-=s*Math.round(i/s):i>=s&&(i-=s*Math.floor(i/s)),0>i?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},i.syncOrAsync=function(t,e,r){function n(){return i.markTime(\"async done \"+o.name),i.syncOrAsync(t,e,r)}for(var a,o;t.length;){if(o=t.splice(0,1)[0],a=o(e),a&&a.then)return a.then(n).then(void 0,i.promiseError);i.markTime(\"sync done \"+o.name)}return r&&r(e)},i.stripTrailingSlash=function(t){return\"/\"===t.substr(-1)?t.substr(0,t.length-1):t},i.noneOrAll=function(t,e,r){if(t){var n,i,a=!1,o=!0;for(n=0;ni;i++)e[i][r]=t[i]},i.minExtend=function(t,e){var r={};\"object\"!=typeof e&&(e={});var n,a,o,s=3,l=Object.keys(t);for(n=0;n1?n+a[1]:\"\";if(i&&(a.length>1||o.length>4))for(;r.test(o);)o=o.replace(r,\"$1\"+i+\"$2\");return o+s}},{\"./coerce\":373,\"./dates\":374,\"./extend\":376,\"./is_plain_object\":382,\"./matrix\":383,\"./nested_property\":384,\"./notifier\":385,\"./search\":388,\"./stats\":391,d3:113}],382:[function(t,e,r){\"use strict\";e.exports=function(t){return\"[object Object]\"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t)===Object.prototype}},{}],383:[function(t,e,r){\"use strict\";r.init2dArray=function(t,e){for(var r=new Array(t),n=0;t>n;n++)r[n]=new Array(e);return r},r.transposeRagged=function(t){var e,r,n=0,i=t.length;for(e=0;i>e;e++)n=Math.max(n,t[e].length);var a=new Array(n);for(e=0;n>e;e++)for(a[e]=new Array(i),r=0;i>r;r++)a[e][r]=t[r][e];return a},r.dot=function(t,e){if(!t.length||!e.length||t.length!==e.length)return null;var n,i,a=t.length;if(t[0].length)for(n=new Array(a),i=0;a>i;i++)n[i]=r.dot(t[i],e);else if(e[0].length){var o=r.transposeRagged(e);for(n=new Array(o.length),i=0;ii;i++)n+=t[i]*e[i];return n},r.translationMatrix=function(t,e){return[[1,0,t],[0,1,e],[0,0,1]]},r.rotationMatrix=function(t){var e=t*Math.PI/180;return[[Math.cos(e),-Math.sin(e),0],[Math.sin(e),Math.cos(e),0],[0,0,1]]},r.rotationXYMatrix=function(t,e,n){return r.dot(r.dot(r.translationMatrix(e,n),r.rotationMatrix(t)),r.translationMatrix(-e,-n))},r.apply2DTransform=function(t){return function(){var e=arguments;3===e.length&&(e=e[0]);var n=1===arguments.length?e[0]:[e[0],e[1]];return r.dot(t,[n[0],n[1],1]).slice(0,2)}},r.apply2DTransform2=function(t){var e=r.apply2DTransform(t);return function(t){return e(t.slice(0,2)).concat(e(t.slice(2,4)))}}},{}],384:[function(t,e,r){\"use strict\";function n(t,e){return function(){var r,i,a,o,s,l=t;for(o=0;o=0;e--){if(n=t[e],o=!1,Array.isArray(n))for(r=n.length-1;r>=0;r--)c(n[r])?o?n[r]=void 0:n.pop():o=!0;else if(\"object\"==typeof n&&null!==n)for(a=Object.keys(n),o=!1,r=a.length-1;r>=0;r--)c(n[a[r]])&&!i(n[a[r]],a[r])?delete n[a[r]]:o=!0;if(o)return}}function c(t){return void 0===t||null===t?!0:\"object\"!=typeof t?!1:Array.isArray(t)?!t.length:!Object.keys(t).length}function u(t,e,r){return{set:function(){throw\"bad container\"},get:function(){},astr:e,parts:r,obj:t}}var f=t(\"fast-isnumeric\");e.exports=function(t,e){if(f(e))e=String(e);else if(\"string\"!=typeof e||\"[-1]\"===e.substr(e.length-4))throw\"bad property string\";for(var r,i,o,s=0,l=e.split(\".\");sr||r>a||o>n||n>s?!1:!e||!c(t)}function r(t,e){var r=t[0],l=t[1];if(i>r||r>a||o>l||l>s)return!1;var c,u,f,h,d,p=n.length,g=n[0][0],v=n[0][1],m=0;for(c=1;p>c;c++)if(u=g,f=v,g=n[c][0],v=n[c][1],h=Math.min(u,g),!(h>r||r>Math.max(u,g)||l>Math.max(f,v)))if(l=l&&r!==h&&m++}return m%2===1}var n=t.slice(),i=n[0][0],a=i,o=n[0][1],s=o;n.push(n[0]);for(var l=1;la;a++)if(o=[t[a][0]-l[0],t[a][1]-l[1]],s=n(o,c),0>s||s>u||Math.abs(n(o,h))>i)return!0;return!1};i.filter=function(t,e){function r(r){t.push(r);var s=n.length,l=i;n.splice(o+1);for(var c=l+1;c1){var s=t.pop();r(s)}return{addPt:r,raw:t,filtered:n}}},{\"./matrix\":383}],387:[function(t,e,r){\"use strict\";function n(t,e){for(var r,n=[],a=0;a=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;rt}function i(t,e){return e>=t}function a(t,e){return t>e}function o(t,e){return t>=e}var s=t(\"fast-isnumeric\");r.findBin=function(t,e,r){if(s(e.start))return r?Math.ceil((t-e.start)/e.size)-1:Math.floor((t-e.start)/e.size);var l,c,u=0,f=e.length,h=0;for(c=e[e.length-1]>=e[0]?r?n:i:r?o:a;f>u&&h++<100;)l=Math.floor((u+f)/2),c(e[l],t)?u=l+1:f=l;return h>90&&console.log(\"Long binary search...\"),u-1},r.sorterAsc=function(t,e){return t-e},r.sorterDes=function(t,e){return e-t},r.distinctVals=function(t){var e=t.slice();e.sort(r.sorterAsc);for(var n=e.length-1,i=e[n]-e[0]||1,a=i/(n||1)/1e4,o=[e[0]],s=0;n>s;s++)e[s+1]>e[s]+a&&(i=Math.min(i,e[s+1]-e[s]),o.push(e[s+1]));return{vals:o,minDiff:i}},r.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;a>i&&o++<100;)n=c((i+a)/2),e[n]<=t?i=n+s:a=n-l;return e[i]}},{\"fast-isnumeric\":117}],389:[function(t,e,r){\"use strict\";e.exports=function(t,e){(t.attr(\"class\")||\"\").split(\" \").forEach(function(e){0===e.indexOf(\"cursor-\")&&t.classed(e,!1)}),e&&t.classed(\"cursor-\"+e,!0)}},{}],390:[function(t,e,r){\"use strict\";var n=t(\"../components/color\"),i=function(){};e.exports=function(t){for(var e in t)\"function\"==typeof t[e]&&(t[e]=i);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var r=document.createElement(\"div\");return r.textContent=\"Webgl is not supported by your browser - visit http://get.webgl.org for more info\",r.style.cursor=\"pointer\",r.style.fontSize=\"24px\",r.style.color=n.defaults[0],t.container.appendChild(r),t.container.style.background=\"#FFFFFF\",t.container.onclick=function(){window.open(\"http://get.webgl.org\")},!1}},{\"../components/color\":303}],391:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");r.aggNums=function(t,e,i,a){var o,s;if(a||(a=i.length),n(e)||(e=!1),Array.isArray(i[0])){for(s=new Array(a),o=0;a>o;o++)s[o]=r.aggNums(t,e,i[o]);i=s}for(o=0;a>o;o++)n(e)?n(i[o])&&(e=t(+e,+i[o])):e=i[o];return e},r.len=function(t){return r.aggNums(function(t){return t+1},0,t)},r.mean=function(t,e){return e||(e=r.len(t)),r.aggNums(function(t,e){return t+e},0,t)/e},r.variance=function(t,e,i){return e||(e=r.len(t)),n(i)||(i=r.mean(t,e)),r.aggNums(function(t,e){return t+Math.pow(e-i,2)},0,t)/e},r.stdev=function(t,e,n){return Math.sqrt(r.variance(t,e,n))},r.interp=function(t,e){if(!n(e))throw\"n should be a finite number\";if(e=e*t.length-.5,0>e)return t[0];if(e>t.length-1)return t[t.length-1];var r=e%1;return r*t[Math.ceil(e)]+(1-r)*t[Math.floor(e)]}},{\"fast-isnumeric\":117}],392:[function(t,e,r){\"use strict\";function n(t){return t=i(t),a.str2RgbaArray(t.toRgbString())}var i=t(\"tinycolor2\"),a=t(\"arraytools\");e.exports=n},{arraytools:49,tinycolor2:274}],393:[function(t,e,r){\"use strict\";function n(t,e){return t.node().getBoundingClientRect()[e]}function i(t){return t.replace(/(<|<|<)/g,\"\\\\lt \").replace(/(>|>|>)/g,\"\\\\gt \")}function a(t,e,r){var n=\"math-output-\"+l.Lib.randstr([],64),a=c.select(\"body\").append(\"div\").attr({id:n}).style({visibility:\"hidden\",position:\"absolute\"}).style({\"font-size\":e.fontSize+\"px\"}).text(i(t));MathJax.Hub.Queue([\"Typeset\",MathJax.Hub,a.node()],function(){var e=c.select(\"body\").select(\"#MathJax_SVG_glyphs\");if(a.select(\".MathJax_SVG\").empty()||!a.select(\"svg\").node())console.log(\"There was an error in the tex syntax.\",t),r();else{var n=a.select(\"svg\").node().getBoundingClientRect();r(a.select(\".MathJax_SVG\"),e,n)}a.remove()})}function o(t){for(var e=l.util.html_entity_decode(t),r=e.split(/(<[^<>]*>)/).map(function(t){var e=t.match(/<(\\/?)([^ >]*)\\s*(.*)>/i),r=e&&e[2].toLowerCase(),n=h[r];if(void 0!==n){var i=e[1],a=e[3],o=a.match(/^style\\s*=\\s*\"([^\"]+)\"\\s*/i);if(\"a\"===r){if(i)return\"\";if(\"href\"!==a.substr(0,4).toLowerCase())return\"\";var s=document.createElement(\"a\");return s.href=a.substr(4).replace(/[\"'=]/g,\"\"),-1===d.indexOf(s.protocol)?\"\":'\"}if(\"br\"===r)return\"
\";if(i)return\"sup\"===r?'':\"sub\"===r?'':\"\";var c=\"\"}return l.util.xml_entity_encode(t).replace(/\");i>0;i=r.indexOf(\"
\",i+1))n.push(i);var a=0;n.forEach(function(t){for(var e=t+a,n=r.slice(0,e),i=\"\",o=n.length-1;o>=0;o--){var s=n[o].match(/<(\\/?).*>/i);if(s&&\"
\"!==n[o]){s[1]||(i=n[o]);break}}i&&(r.splice(e+1,0,i),r.splice(e,0,\"\"),a+=2)});var o=r.join(\"\"),s=o.split(/
/gi);return s.length>1&&(r=s.map(function(t,e){return''+t+\"\"})),r.join(\"\")}function s(t,e,r){var n,i,a,o=r.horizontalAlign,s=r.verticalAlign||\"top\",l=t.node().getBoundingClientRect(),c=e.node().getBoundingClientRect();return i=\"bottom\"===s?function(){return l.bottom-n.height}:\"middle\"===s?function(){return l.top+(l.height-n.height)/2}:function(){return l.top},a=\"right\"===o?function(){return l.right-n.width}:\"center\"===o?function(){return l.left+(l.width-n.width)/2}:function(){return l.left},function(){return n=this.node().getBoundingClientRect(),this.style({top:i()-c.top+\"px\",left:a()-c.left+\"px\",\"z-index\":1e3}),this}}var l=t(\"../plotly\"),c=t(\"d3\"),u=t(\"../constants/xmlns_namespaces\"),f=e.exports={};c.selection.prototype.appendSVG=function(t){for(var e=['',t,\"\"].join(\"\"),r=(new DOMParser).parseFromString(e,\"application/xml\"),n=r.documentElement.firstChild;n;)this.node().appendChild(this.node().ownerDocument.importNode(n,!0)),n=n.nextSibling;return r.querySelector(\"parsererror\")?(console.log(r.querySelector(\"parsererror div\").textContent),null):c.select(this.node().lastChild)},f.html_entity_decode=function(t){var e=c.select(\"body\").append(\"div\").style({display:\"none\"}).html(\"\"),r=t.replace(/(&[^;]*;)/gi,function(t){return\"<\"===t?\"<\":\"&rt;\"===t?\">\":e.html(t).text()});return e.remove(),r},f.xml_entity_encode=function(t){return t.replace(/&(?!\\w+;|\\#[0-9]+;| \\#x[0-9A-F]+;)/g,\"&\")},f.convertToTspans=function(t,e){function r(){d.empty()||(p=u.attr(\"class\")+\"-math\",d.select(\"svg.\"+p).remove()),t.text(\"\").style({visibility:\"visible\",\"white-space\":\"pre\"}),h=t.appendSVG(s),h||t.text(i),t.select(\"a\").size()&&t.style(\"pointer-events\",\"all\"),e&&e.call(u)}var i=t.text(),s=o(i),u=t,f=!u.attr(\"data-notex\")&&s.match(/([^$]*)([$]+[^$]*[$]+)([^$]*)/),h=i,d=c.select(u.node().parentNode);if(!d.empty()){var p=u.attr(\"class\")?u.attr(\"class\").split(\" \")[0]:\"text\";p+=\"-math\",d.selectAll(\"svg.\"+p).remove(),d.selectAll(\"g.\"+p+\"-group\").remove(),t.style({visibility:null});for(var g=t.node();g&&g.removeAttribute;g=g.parentNode)g.removeAttribute(\"data-bb\");if(f){var v=l.Lib.getPlotDiv(u.node());(v&&v._promises||[]).push(new Promise(function(t){u.style({visibility:\"hidden\"});var i={fontSize:parseInt(u.style(\"font-size\"),10)};a(f[2],i,function(i,a,o){d.selectAll(\"svg.\"+p).remove(),d.selectAll(\"g.\"+p+\"-group\").remove();var s=i&&i.select(\"svg\");if(!s||!s.node())return r(),void t();var l=d.append(\"g\").classed(p+\"-group\",!0).attr({\"pointer-events\":\"none\"});l.node().appendChild(s.node()),a&&a.node()&&s.node().insertBefore(a.node().cloneNode(!0),s.node().firstChild),s.attr({\"class\":p,height:o.height,preserveAspectRatio:\"xMinYMin meet\"}).style({overflow:\"visible\",\"pointer-events\":\"none\"});var c=u.style(\"fill\")||\"black\";s.select(\"g\").attr({fill:c,stroke:c});var f=n(s,\"width\"),h=n(s,\"height\"),g=+u.attr(\"x\")-f*{start:0,middle:.5,end:1}[u.attr(\"text-anchor\")||\"start\"],v=parseInt(u.style(\"font-size\"),10)||n(u,\"height\"),m=-v/4;\"y\"===p[0]?(l.attr({transform:\"rotate(\"+[-90,+u.attr(\"x\"),+u.attr(\"y\")]+\") translate(\"+[-f/2,m-h/2]+\")\"}),s.attr({x:+u.attr(\"x\"),y:+u.attr(\"y\")})):\"l\"===p[0]?s.attr({x:u.attr(\"x\"),y:m-h/2}):\"a\"===p[0]?s.attr({x:0,y:m}):s.attr({x:g,y:+u.attr(\"y\")+m-h/2}),e&&e.call(u,l),t(l)})}))}else r();return t}};var h={sup:'font-size:70%\" dy=\"-0.6em',sub:'font-size:70%\" dy=\"0.3em',b:\"font-weight:bold\",i:\"font-style:italic\",a:\"\",span:\"\",br:\"\",em:\"font-style:italic;font-weight:bold\"},d=[\"http:\",\"https:\",\"mailto:\"],p=new RegExp(\"]*)?/?>\",\"g\");f.plainText=function(t){return(t||\"\").replace(p,\" \")},f.makeEditable=function(t,e,r){function n(){a(),o.style({opacity:0});var t,e=h.attr(\"class\");t=e?\".\"+e.split(\" \")[0]+\"-math-group\":\"[class*=-math-group]\",t&&c.select(o.node().parentNode).select(t).style({opacity:0})}function i(t){var e=t.node(),r=document.createRange();r.selectNodeContents(e);var n=window.getSelection();n.removeAllRanges(),n.addRange(r),e.focus()}function a(){var t=c.select(l.Lib.getPlotDiv(o.node())),e=t.select(\".svg-container\"),n=e.append(\"div\");n.classed(\"plugin-editable editable\",!0).style({position:\"absolute\",\"font-family\":o.style(\"font-family\")||\"Arial\",\"font-size\":o.style(\"font-size\")||12,color:r.fill||o.style(\"fill\")||\"black\",opacity:1,\"background-color\":r.background||\"transparent\",outline:\"#ffffff33 1px solid\",margin:[-parseFloat(o.style(\"font-size\"))/8+1,0,0,-1].join(\"px \")+\"px\",padding:\"0\",\"box-sizing\":\"border-box\"}).attr({contenteditable:!0}).text(r.text||o.attr(\"data-unformatted\")).call(s(o,e,r)).on(\"blur\",function(){o.text(this.textContent).style({opacity:1});var t,e=c.select(this).attr(\"class\");t=e?\".\"+e.split(\" \")[0]+\"-math-group\":\"[class*=-math-group]\",t&&c.select(o.node().parentNode).select(t).style({opacity:0});var r=this.textContent;c.select(this).transition().duration(0).remove(),c.select(document).on(\"mouseup\",null),u.edit.call(o,r)}).on(\"focus\",function(){var t=this;c.select(document).on(\"mouseup\",function(){return c.event.target===t?!1:void(document.activeElement===n.node()&&n.node().blur())})}).on(\"keyup\",function(){27===c.event.which?(o.style({opacity:1}),c.select(this).style({opacity:0}).on(\"blur\",function(){return!1}).transition().remove(),u.cancel.call(o,this.textContent)):(u.input.call(o,this.textContent),c.select(this).call(s(o,e,r)))}).on(\"keydown\",function(){13===c.event.which&&this.blur()}).call(i)}r||(r={});var o=this,u=c.dispatch(\"edit\",\"input\",\"cancel\"),f=c.select(this.node()).style({\"pointer-events\":\"all\"}),h=e||f;return e&&f.style({\"pointer-events\":\"none\"}),r.immediate?n():h.on(\"click\",n),c.rebind(this,u,\"on\")}},{\"../constants/xmlns_namespaces\":369,\"../plotly\":400,d3:113}],394:[function(t,e,r){\"use strict\";var n=e.exports={},i=t(\"../plots/geo/constants\").locationmodeToLayer,a=t(\"topojson\").feature;n.getTopojsonName=function(t){return[t.scope.replace(/ /g,\"-\"),\"_\",t.resolution.toString(),\"m\"].join(\"\")},n.getTopojsonPath=function(t,e){return t+e+\".json\"},n.getTopojsonFeatures=function(t,e){var r=i[t.locationmode],n=e.objects[r];return a(e,n).features}},{\"../plots/geo/constants\":422,topojson:275}],395:[function(t,e,r){\"use strict\";function n(t){var e;if(\"string\"==typeof t){if(e=document.getElementById(t),null===e)throw new Error(\"No DOM element with id '\"+t+\"' exists on the page.\");return e}if(null===t||void 0===t)throw new Error(\"DOM element provided is null or undefined\");return t}function i(t,e){t._fullLayout._paperdiv.style(\"background\",\"white\"),P.defaultConfig.setBackground(t,e)}function a(t,e){t._context||(t._context=R.extendFlat({},P.defaultConfig));var r=t._context;e&&(Object.keys(e).forEach(function(t){t in r&&(\"setBackground\"===t&&\"opaque\"===e[t]?r[t]=i:r[t]=e[t])}),e.plot3dPixelRatio&&!r.plotGlPixelRatio&&(r.plotGlPixelRatio=r.plot3dPixelRatio)),r.staticPlot&&(r.editable=!1,r.autosizable=!1,r.scrollZoom=!1,r.doubleClick=!1,r.showTips=!1,r.showLink=!1,r.displayModeBar=!1)}function o(t,e,r){var n=S.select(t).selectAll(\".plot-container\").data([0]);n.enter().insert(\"div\",\":first-child\").classed(\"plot-container plotly\",!0);var i=n.selectAll(\".svg-container\").data([0]);i.enter().append(\"div\").classed(\"svg-container\",!0).style(\"position\",\"relative\"),i.html(\"\"),e&&(t.data=e),r&&(t.layout=r),P.micropolar.manager.fillLayout(t),\"initial\"===t._fullLayout.autosize&&t._context.autosizable&&(w(t,{}),t._fullLayout.autosize=r.autosize=!0),i.style({width:t._fullLayout.width+\"px\",height:t._fullLayout.height+\"px\"}),t.framework=P.micropolar.manager.framework(t),t.framework({data:t.data,layout:t.layout},i.node()),t.framework.setUndoPoint();var a=t.framework.svg(),o=1,s=t._fullLayout.title;\"\"!==s&&s||(o=0);var l=\"Click to enter title\",c=function(){this.call(P.util.convertToTspans)},u=a.select(\".title-group text\").call(c);if(t._context.editable){u.attr({\"data-unformatted\":s}),s&&s!==l||(o=.2,u.attr({\"data-unformatted\":l}).text(l).style({opacity:o}).on(\"mouseover.opacity\",function(){S.select(this).transition().duration(100).style(\"opacity\",1)}).on(\"mouseout.opacity\",function(){S.select(this).transition().duration(1e3).style(\"opacity\",0)}));var f=function(){this.call(P.util.makeEditable).on(\"edit\",function(e){t.framework({layout:{title:e}}),this.attr({\"data-unformatted\":e}).text(e).call(c),this.call(f)}).on(\"cancel\",function(){var t=this.attr(\"data-unformatted\");this.text(t).call(c)})};u.call(f)}return t._context.setBackground(t,t._fullLayout.paper_bgcolor),N.addLinks(t),Promise.resolve()}function s(t){var e,r;t||(t={}),t.xaxis1&&(t.xaxis||(t.xaxis=t.xaxis1),delete t.xaxis1),t.yaxis1&&(t.yaxis||(t.yaxis=t.yaxis1),delete t.yaxis1);var n=P.Axes.list({_fullLayout:t});for(e=0;ee;e++){var o=t.annotations[e];o.ref&&(\"paper\"===o.ref?(o.xref=\"paper\",o.yref=\"paper\"):\"data\"===o.ref&&(o.xref=\"x\",o.yref=\"y\"),delete o.ref),l(o,\"xref\"),l(o,\"yref\")}void 0===t.shapes||Array.isArray(t.shapes)||(console.log(\"shapes must be an array\"),delete t.shapes);var s=(t.shapes||[]).length;for(e=0;s>e;e++){var c=t.shapes[e];l(c,\"xref\"),l(c,\"yref\")}var u=t.legend;u&&(u.x>3?(u.x=1.02,u.xanchor=\"left\"):u.x<-2&&(u.x=-.02,u.xanchor=\"right\"),u.y>3?(u.y=1.02,u.yanchor=\"bottom\"):u.y<-2&&(u.y=-.02,u.yanchor=\"top\")),\"rotate\"===t.dragmode&&(t.dragmode=\"orbit\"),t.scene1&&(t.scene||(t.scene=t.scene1),delete t.scene1);var h=N.getSubplotIds(t,\"gl3d\");for(e=0;er;++r)b[r]=v[e]+m*y[2+4*r];d.camera={eye:{x:b[0],y:b[1],z:b[2]},center:{x:v[0],y:v[1],z:v[2]},up:{x:y[1],y:y[5],z:y[9]}},delete d.cameraposition}}return R.markTime(\"finished rest of cleanLayout, starting color\"),F.clean(t),R.markTime(\"finished cleanLayout color.clean\"),t}function l(t,e){var r=t[e],n=e.charAt(0);r&&\"paper\"!==r&&(t[e]=P.Axes.cleanId(r,n))}function c(t,e){for(var r=[],n=(t.concat(Array.isArray(e)?e:[]).filter(function(t){return\"uid\"in t}).map(function(t){return t.uid})),i=0;ia&&(s=R.randstr(n),-1!==r.indexOf(s));a++);o.uid=R.randstr(n),n.push(o.uid)}if(r.push(o.uid),\"histogramy\"===o.type&&\"xbins\"in o&&!(\"ybins\"in o)&&(o.ybins=o.xbins,delete o.xbins),o.error_y&&\"opacity\"in o.error_y){var l=F.defaults,c=o.error_y.color||(N.traceIs(o,\"bar\")?F.defaultLine:l[i%l.length]);o.error_y.color=F.addOpacity(F.rgb(c),F.opacity(c)*o.error_y.opacity),delete o.error_y.opacity}if(\"bardir\"in o&&(\"h\"!==o.bardir||!N.traceIs(o,\"bar\")&&\"histogram\"!==o.type.substr(0,9)||(o.orientation=\"h\",x(o)),delete o.bardir),\"histogramy\"===o.type&&x(o),\"histogramx\"!==o.type&&\"histogramy\"!==o.type||(o.type=\"histogram\"),\"scl\"in o&&(o.colorscale=o.scl,delete o.scl),\"reversescl\"in o&&(o.reversescale=o.reversescl,delete o.reversescl),o.xaxis&&(o.xaxis=P.Axes.cleanId(o.xaxis,\"x\")),o.yaxis&&(o.yaxis=P.Axes.cleanId(o.yaxis,\"y\")),N.traceIs(o,\"gl3d\")&&o.scene&&(o.scene=N.subplotsRegistry.gl3d.cleanId(o.scene)),N.traceIs(o,\"pie\")||(Array.isArray(o.textposition)?o.textposition=o.textposition.map(u):o.textposition&&(o.textposition=u(o.textposition))),N.traceIs(o,\"2dMap\")&&(\"YIGnBu\"===o.colorscale&&(o.colorscale=\"YlGnBu\"),\"YIOrRd\"===o.colorscale&&(o.colorscale=\"YlOrRd\")),N.traceIs(o,\"markerColorscale\")&&o.marker){var h=o.marker;\"YIGnBu\"===h.colorscale&&(h.colorscale=\"YlGnBu\"),\"YIOrRd\"===h.colorscale&&(h.colorscale=\"YlOrRd\")}if(\"surface\"===o.type&&R.isPlainObject(o.contours)){var d=[\"x\",\"y\",\"z\"];for(a=0;an?a.push(i+n):a.push(n);return a}function p(t,e,r){var n,i;for(n=0;n=t.data.length||i<-t.data.length)throw new Error(r+\" must be valid indices for gd.data.\");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||0>i&&e.indexOf(t.data.length+i)>-1)throw new Error(\"each index in \"+r+\" must be unique.\")}}function g(t,e,r){if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(\"undefined\"==typeof e)throw new Error(\"currentIndices is a required argument.\");if(Array.isArray(e)||(e=[e]),p(t,e,\"currentIndices\"),\"undefined\"==typeof r||Array.isArray(r)||(r=[r]),\"undefined\"!=typeof r&&p(t,r,\"newIndices\"),\"undefined\"!=typeof r&&e.length!==r.length)throw new Error(\"current and new indices must be of equal length.\")}function v(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error(\"gd.data must be an array.\");if(\"undefined\"==typeof e)throw new Error(\"traces must be defined.\");for(Array.isArray(e)||(e=[e]),n=0;n=0&&l0){var s=_(t._boundingBoxMargins),l=s.left+s.right,c=s.bottom+s.top,u=a._container.node().getBoundingClientRect(),f=1-2*o.frameMargins;i=Math.round(f*(u.width-l)),n=Math.round(f*(u.height-c))}else r=window.getComputedStyle(t),n=parseFloat(r.height)||a.height,i=parseFloat(r.width)||a.width;return Math.abs(a.width-i)>1||Math.abs(a.height-n)>1?(a.height=t.layout.height=n,a.width=t.layout.width=i):\"initial\"!==a.autosize&&(delete e.autosize,a.autosize=t.layout.autosize=!0),N.sanitizeMargins(a),e}function k(t){var e=S.select(t),r=t._fullLayout;if(r._container=e.selectAll(\".plot-container\").data([0]),r._container.enter().insert(\"div\",\":first-child\").classed(\"plot-container\",!0).classed(\"plotly\",!0),r._paperdiv=r._container.selectAll(\".svg-container\").data([0]),r._paperdiv.enter().append(\"div\").classed(\"svg-container\",!0).style(\"position\",\"relative\"),\"initial\"===r.autosize&&(w(t,{}),r.autosize=!0,t.layout.autosize=!0),r._glcontainer=r._paperdiv.selectAll(\".gl-container\").data([0]),r._glcontainer.enter().append(\"div\").classed(\"gl-container\",!0),r._geocontainer=r._paperdiv.selectAll(\".geo-container\").data([0]),r._geocontainer.enter().append(\"div\").classed(\"geo-container\",!0),r._paperdiv.selectAll(\".main-svg\").remove(),r._paper=r._paperdiv.insert(\"svg\",\":first-child\").classed(\"main-svg\",!0),r._toppaper=r._paperdiv.append(\"svg\").classed(\"main-svg\",!0),!r._uid){var n=[];S.selectAll(\"defs\").each(function(){this.id&&n.push(this.id.split(\"-\")[1])}),r._uid=R.randstr(n)}r._paperdiv.selectAll(\".main-svg\").attr(W.svgAttrs),r._defs=r._paper.append(\"defs\").attr(\"id\",\"defs-\"+r._uid),r._topdefs=r._toppaper.append(\"defs\").attr(\"id\",\"topdefs-\"+r._uid),r._draggers=r._paper.append(\"g\").classed(\"draglayer\",!0);var i=r._paper.append(\"g\").classed(\"layer-below\",!0);r._imageLowerLayer=i.append(\"g\").classed(\"imagelayer\",!0),r._shapeLowerLayer=i.append(\"g\").classed(\"shapelayer\",!0);var a=P.Axes.getSubplots(t);a.join(\"\")!==Object.keys(t._fullLayout._plots||{}).join(\"\")&&A(t,a),r._has(\"cartesian\")&&M(t,a),r._ternarylayer=r._paper.append(\"g\").classed(\"ternarylayer\",!0);var o=r._paper.selectAll(\".layer-subplot\");r._imageSubplotLayer=o.selectAll(\".imagelayer\"),r._shapeSubplotLayer=o.selectAll(\".shapelayer\");var s=r._paper.append(\"g\").classed(\"layer-above\",!0);r._imageUpperLayer=s.append(\"g\").classed(\"imagelayer\",!0),r._shapeUpperLayer=s.append(\"g\").classed(\"shapelayer\",!0),r._pielayer=r._paper.append(\"g\").classed(\"pielayer\",!0),r._glimages=r._paper.append(\"g\").classed(\"glimages\",!0),r._geoimages=r._paper.append(\"g\").classed(\"geoimages\",!0),r._infolayer=r._toppaper.append(\"g\").classed(\"infolayer\",!0),r._zoomlayer=r._toppaper.append(\"g\").classed(\"zoomlayer\",!0),r._hoverlayer=r._toppaper.append(\"g\").classed(\"hoverlayer\",!0),t.emit(\"plotly_framework\");var l=R.syncOrAsync([T,function(){return P.Axes.doTicks(t,\"redraw\")},j.init],t);return l&&l.then&&t._promises.push(l),l}function A(t,e){function r(e,r){return function(){return P.Axes.getFromId(t,e,r)}}for(var n,i,a=t._fullLayout._plots={},o=0;o0,_=P.Axes.getSubplots(t).join(\"\"),w=Object.keys(t._fullLayout._plots||{}).join(\"\"),A=w===_;x?t.framework===k&&!b&&A||(t.framework=k,k(t)):A?b&&k(t):(t.framework=k,k(t)),b&&P.Axes.saveRangeInitial(t);var M=t._fullLayout,E=!t.calcdata||t.calcdata.length!==(t.data||[]).length;E&&h(t);for(var L=0;LY.range[0]?[1,2]:[2,1]);else{var W=Y.range[0],Z=Y.range[1];\"log\"===O?(0>=W&&0>=Z&&i(q+\".autorange\",!0),0>=W?W=Z/1e6:0>=Z&&(Z=W/1e6),i(q+\".range[0]\",Math.log(W)/Math.LN10),i(q+\".range[1]\",Math.log(Z)/Math.LN10)):(i(q+\".range[0]\",Math.pow(10,W)),i(q+\".range[1]\",Math.pow(10,Z)))}else i(q+\".autorange\",!0)}if(\"reverse\"===D)H.range?H.range.reverse():(i(q+\".autorange\",!0),H.range=[1,0]),G.autorange?_=!0:x=!0;else if(\"annotations\"===z.parts[0]||\"shapes\"===z.parts[0]){var K=z.parts[1],$=z.parts[0],Q=p[$]||[],J=P[R.titleCase($)],tt=Q[K]||{};2===z.parts.length&&(\"add\"===v[C]||R.isPlainObject(v[C])?E[C]=\"remove\":\"remove\"===v[C]?-1===K?(E[$]=Q,delete E[C]):E[C]=tt:console.log(\"???\",v)),!a(tt,\"x\")&&!a(tt,\"y\")||R.containsAny(C,[\"color\",\"opacity\",\"align\",\"dash\"])||(_=!0),J.draw(t,K,z.parts.slice(2).join(\".\"),v[C]),delete v[C]}else if(\"images\"===z.parts[0]){var rt=R.objectFromPath(e,O);R.extendDeepAll(t.layout,rt),U.supplyLayoutDefaults(t.layout,t._fullLayout),U.draw(t)}else 0===z.parts[0].indexOf(\"scene\")?x=!0:0===z.parts[0].indexOf(\"geo\")?x=!0:0===z.parts[0].indexOf(\"ternary\")?x=!0:!g._has(\"gl2d\")||-1===C.indexOf(\"axis\")&&\"plot_bgcolor\"!==z.parts[0]?\"hiddenlabels\"===C?_=!0:-1!==z.parts[0].indexOf(\"legend\")?m=!0:-1!==C.indexOf(\"title\")?y=!0:-1!==z.parts[0].indexOf(\"bgcolor\")?b=!0:z.parts.length>1&&R.containsAny(z.parts[1],[\"tick\",\"exponent\",\"grid\",\"zeroline\"])?y=!0:-1!==C.indexOf(\".linewidth\")&&-1!==C.indexOf(\"axis\")?y=b=!0:z.parts.length>1&&-1!==z.parts[1].indexOf(\"line\")?b=!0:z.parts.length>1&&\"mirror\"===z.parts[1]?y=b=!0:\"margin.pad\"===C?y=b=!0:\"margin\"===z.parts[0]||\"autorange\"===z.parts[1]||\"rangemode\"===z.parts[1]||\"type\"===z.parts[1]||\"domain\"===z.parts[1]||C.match(/^(bar|box|font)/)?_=!0:-1!==[\"hovermode\",\"dragmode\"].indexOf(C)?k=!0:-1===[\"hovermode\",\"dragmode\",\"height\",\"width\",\"autosize\"].indexOf(C)&&(x=!0):x=!0,z.set(O)}I&&I.add(t,et,[t,E],et,[t,M]),v.autosize&&(v=w(t,v)),(v.height||v.width||v.autosize)&&(_=!0);var nt=Object.keys(v),it=[N.previousPromises];if(x||_)it.push(function(){return t.layout=void 0,_&&(t.calcdata=void 0),P.plot(t,\"\",p)});else if(nt.length&&(N.supplyDefaults(t),g=t._fullLayout,m&&it.push(function(){return V.draw(t),N.previousPromises(t)}),b&&it.push(T),y&&it.push(function(){return P.Axes.doTicks(t,\"redraw\"),L(t),N.previousPromises(t)}),k)){var at;for(X(t),at=N.getSubplotIds(g,\"gl3d\"),d=0;d1)};c(r.width)&&c(r.height)||s(new Error(\"Height and width should be pixel values.\"));var u=n.clone(e,{format:\"png\",height:r.height,width:r.width}),f=u.td;f.style.position=\"absolute\",f.style.left=\"-5000px\",document.body.appendChild(f);var h=n.getRedrawFunc(f);a.plot(f,u.data,u.layout,u.config).then(h).then(l).then(function(e){t(e)}).catch(function(t){s(t)})});return s}var i=t(\"fast-isnumeric\"),a=t(\"../plotly\"),o=t(\"../lib\");e.exports=n},{\"../lib\":381,\"../plotly\":400,\"../snapshot\":469,\"fast-isnumeric\":117}],400:[function(t,e,r){\"use strict\";t(\"es6-promise\").polyfill(),r.Lib=t(\"./lib\"),r.util=t(\"./lib/svg_text_utils\"),r.Queue=t(\"./lib/queue\"),t(\"../build/plotcss\"),r.MathJaxConfig=t(\"./fonts/mathjax_config\"),r.defaultConfig=t(\"./plot_api/plot_config\");var n=r.Plots=t(\"./plots/plots\");r.Axes=t(\"./plots/cartesian/axes\"),r.Fx=t(\"./plots/cartesian/graph_interact\"),r.micropolar=t(\"./plots/polar/micropolar\"),r.Color=t(\"./components/color\"),r.Drawing=t(\"./components/drawing\"),r.Colorscale=t(\"./components/colorscale\"),r.Colorbar=t(\"./components/colorbar\"),r.ErrorBars=t(\"./components/errorbars\"),r.Annotations=t(\"./components/annotations\"),r.Shapes=t(\"./components/shapes\"),r.Legend=t(\"./components/legend\"),r.Images=t(\"./components/images\"),r.ModeBar=t(\"./components/modebar\"),r.register=function(t){if(!t)throw new Error(\"No argument passed to Plotly.register.\");t&&!Array.isArray(t)&&(t=[t]);for(var e=0;ec&&u>e&&(void 0===i[r]?a[f]=T.tickText(t,e):a[f]=s(t,e,String(i[r])),f++);return f=864e5?t._tickround=\"d\":r>=36e5?t._tickround=\"H\":r>=6e4?t._tickround=\"M\":r>=1e3?t._tickround=\"S\":t._tickround=3-Math.round(Math.log(r/2)/Math.LN10);else{b(r)||(r=Number(r.substr(1))),t._tickround=2-Math.floor(Math.log(r)/Math.LN10+.01),e=\"log\"===t.type?Math.pow(10,Math.max(t.range[0],t.range[1])):Math.max(Math.abs(t.range[0]),Math.abs(t.range[1]));var n=Math.floor(Math.log(e)/Math.LN10+.01);Math.abs(n)>3&&(\"SI\"===t.exponentformat||\"B\"===t.exponentformat?t._tickexponent=3*Math.round((n-1)/3):t._tickexponent=n)}else\"M\"===r.charAt(0)?t._tickround=2===r.length?\"m\":\"y\":t._tickround=null}function o(t,e){var r=t.match(U),n=new Date(e);if(r){var i=Math.min(+r[1]||6,6),a=String(e/1e3%1+2.0000005).substr(2,i).replace(/0+$/,\"\")||\"0\";return y.time.format(t.replace(U,a))(n)}return y.time.format(t)(n)}function s(t,e,r){var n=t.tickfont||t._gd._fullLayout.font;return{x:e,dx:0,dy:0,text:r||\"\",fontSize:n.size,font:n.family,fontColor:n.color}}function l(t,e,r,n){var i,a=e.x,s=t._tickround,l=new Date(a),c=\"\";r&&t.hoverformat?i=o(t.hoverformat,a):t.tickformat?i=o(t.tickformat,a):(n&&(b(s)?s+=2:s={y:\"m\",m:\"d\",d:\"H\",H:\"M\",M:\"S\",S:2}[s]),\"y\"===s?i=I(l):\"m\"===s?i=N(l):(a!==t._tmin||r||(c=\"
\"+I(l)),\"d\"===s?i=j(l):\"H\"===s?i=F(l):(a!==t._tmin||r||(c=\"
\"+j(l)+\", \"+I(l)),i=D(l),\"M\"!==s&&(i+=B(l),\"S\"!==s&&(i+=h(m(a/1e3,1),t,\"none\",r).substr(1)))))),e.text=i+c}function c(t,e,r,n,i){var a=t.dtick,o=e.x;if(!n||\"string\"==typeof a&&\"L\"===a.charAt(0)||(a=\"L3\"),t.tickformat||\"string\"==typeof a&&\"L\"===a.charAt(0))e.text=h(Math.pow(10,o),t,i,n);else if(b(a)||\"D\"===a.charAt(0)&&m(o+.01,1)<.1)if(-1!==[\"e\",\"E\",\"power\"].indexOf(t.exponentformat)){var s=Math.round(o);0===s?e.text=1:1===s?e.text=\"10\":s>1?e.text=\"10\"+s+\"\":e.text=\"10\\u2212\"+-s+\"\",e.fontSize*=1.25}else e.text=h(Math.pow(10,o),t,\"\",\"fakehover\"),\"D1\"===a&&\"y\"===t._id.charAt(0)&&(e.dy-=e.fontSize/6);else{if(\"D\"!==a.charAt(0))throw\"unrecognized dtick \"+String(a);e.text=String(Math.round(Math.pow(10,m(o,1)))),e.fontSize*=.75}if(\"D1\"===t.dtick){var l=String(e.text).charAt(0);\"0\"!==l&&\"1\"!==l||(\"y\"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(0>o?.5:.25)))}}function u(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=\"\"),e.text=String(r)}function f(t,e,r,n,i){\"all\"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i=\"hide\"),e.text=h(e.x,t,i,n)}function h(t,e,r,n){var i=0>t,o=e._tickround,s=r||e.exponentformat||\"B\",l=e._tickexponent,c=e.tickformat;if(n){var u={exponentformat:e.exponentformat,dtick:\"none\"===e.showexponent?e.dtick:b(t)?Math.abs(t)||1:1,range:\"none\"===e.showexponent?e.range:[0,t||1]};a(u),o=(Number(u._tickround)||0)+4,l=u._tickexponent,e.hoverformat&&(c=e.hoverformat)}if(c)return y.format(c)(t).replace(/-/g,\"\\u2212\");var f=Math.pow(10,-o)/2;if(\"none\"===s&&(l=0),t=Math.abs(t),f>t)t=\"0\",i=!1;else{if(t+=f,l&&(t*=Math.pow(10,-l),o+=l),0===o)t=String(Math.floor(t));else if(0>o){t=String(Math.round(t)),t=t.substr(0,t.length+o);for(var h=o;0>h;h++)t+=\"0\"}else{t=String(t);var d=t.indexOf(\".\")+1;d&&(t=t.substr(0,d+o).replace(/\\.?0+$/,\"\"))}t=_.numSeparate(t,e._gd._fullLayout.separators)}if(l&&\"hide\"!==s){var p;p=0>l?\"\\u2212\"+-l:\"power\"!==s?\"+\"+l:String(l),\"e\"===s||(\"SI\"===s||\"B\"===s)&&(l>12||-15>l)?t+=\"e\"+p:\"E\"===s?t+=\"E\"+p:\"power\"===s?t+=\"×10\"+p+\"\":\"B\"===s&&9===l?t+=\"B\":\"SI\"!==s&&\"B\"!==s||(t+=V[l/3+5])}return i?\"\\u2212\"+t:t}function d(t,e){var r,n,i=[];for(r=0;r1)for(n=1;n2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},T.getAutoRange=function(t){var e,r=[],n=t._min[0].val,i=t._max[0].val;for(e=1;e0&&u>0&&f/u>h&&(l=o,c=s,h=f/u);return n===i?r=d?[n+1,\"normal\"!==t.rangemode?0:n-1]:[\"normal\"!==t.rangemode?0:n-1,n+1]:h&&(\"linear\"!==t.type&&\"-\"!==t.type||(\"tozero\"===t.rangemode&&l.val>=0?l={val:0,pad:0}:\"nonnegative\"===t.rangemode&&(l.val-h*l.pad<0&&(l={val:0,pad:0}),c.val<0&&(c={val:1,pad:0})),h=(c.val-l.val)/(t._length-l.pad-c.pad)),r=[l.val-h*l.pad,c.val+h*c.pad],r[0]===r[1]&&(r=[r[0]-1,r[0]+1]),d&&r.reverse()),r},T.doAutoRange=function(t){t._length||t.setScale();var e=t._min&&t._max&&t._min.length&&t._max.length;if(t.autorange&&e){t.range=T.getAutoRange(t);var r=t._gd.layout[t._name];r||(t._gd.layout[t._name]=r={}),r!==t&&(r.range=t.range.slice(),r.autorange=t.autorange)}},T.saveRangeInitial=function(t,e){for(var r=T.list(t,\"\",!0),n=!1,i=0;ip&&(p=g/10),c=t.c2l(p),u=t.c2l(g),y&&(c=Math.min(0,c),u=Math.max(0,u)),n(c)){for(d=!0,o=0;o=h?d=!1:s.val>=c&&s.pad<=h&&(t._min.splice(o,1),o--);d&&t._min.push({val:c,pad:y&&0===c?0:h})}if(n(u)){for(d=!0,o=0;o=u&&s.pad>=f?d=!1:s.val<=u&&s.pad<=f&&(t._max.splice(o,1),o--);d&&t._max.push({val:u,pad:y&&0===u?0:f})}}}if((t.autorange||t._needsExpand)&&e){t._min||(t._min=[]),t._max||(t._max=[]),r||(r={}),t._m||t.setScale();var a,o,s,l,c,u,f,h,d,p,g,v=e.length,m=r.padded?.05*t._length:0,y=r.tozero&&(\"linear\"===t.type||\"-\"===t.type),x=n((t._m>0?r.ppadplus:r.ppadminus)||r.ppad||0),_=n((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),w=n(r.vpadplus||r.vpad),k=n(r.vpadminus||r.vpad);for(a=0;6>a;a++)i(a);for(a=v-1;a>5;a--)i(a)}},T.autoBin=function(t,e,r,n){function i(t){return(1+100*(t-d)/f.dtick)%100<2}var a=_.aggNums(Math.min,null,t),o=_.aggNums(Math.max,null,t);if(\"category\"===e.type)return{start:a-.5,end:o+.5,size:1};var s;if(r)s=(o-a)/r;else{var l=_.distinctVals(t),c=Math.pow(10,Math.floor(Math.log(l.minDiff)/Math.LN10)),u=c*_.roundUp(l.minDiff/c,[.9,1.9,4.9,9.9],!0);s=Math.max(u,2*_.stdev(t)/Math.pow(t.length,n?.25:.4))}var f={type:\"log\"===e.type?\"linear\":e.type,range:[a,o]};T.autoTicks(f,s);var h,d=T.tickIncrement(T.tickFirst(f),f.dtick,\"reverse\");if(\"number\"==typeof f.dtick){for(var p=0,g=0,v=0,m=0,y=0;yg&&(p>.3*x||i(a)||i(o))){var w=f.dtick/2;d+=a>d+w?w:-w}var k=1+Math.floor((o-d)/f.dtick);h=d+k*f.dtick}else for(h=d;o>=h;)h=T.tickIncrement(h,f.dtick);return{start:d,end:h,size:f.dtick}},T.calcTicks=function(t){if(\"array\"===t.tickmode)return n(t);if(\"auto\"===t.tickmode||!t.dtick){var e,r=t.nticks;r||(\"category\"===t.type?(e=t.tickfont?1.2*(t.tickfont.size||12):15,r=t._length/e):(e=\"y\"===t._id.charAt(0)?40:80,r=_.constrain(t._length/e,4,9)+1)),T.autoTicks(t,Math.abs(t.range[1]-t.range[0])/r),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t._forceTick0)}t.tick0||(t.tick0=\"date\"===t.type?new Date(2e3,0,1).getTime():0),a(t),t._tmin=T.tickFirst(t);var i=t.range[1]=s:s>=l)&&(o.push(l),!(o.length>1e3));l=T.tickIncrement(l,t.dtick,i));t._tmax=o[o.length-1];for(var c=new Array(o.length),u=0;u157788e5?(e/=315576e5,r=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),t.dtick=\"M\"+12*i(e,r,S)):e>12096e5?(e/=26298e5,t.dtick=\"M\"+i(e,1,C)):e>432e5?(t.dtick=i(e,864e5,P),t.tick0=new Date(2e3,0,2).getTime()):e>18e5?t.dtick=i(e,36e5,C):e>3e4?t.dtick=i(e,6e4,z):e>500?t.dtick=i(e,1e3,z):(r=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),t.dtick=i(e,r,S));else if(\"log\"===t.type)if(t.tick0=0,e>.7)t.dtick=Math.ceil(e);else if(Math.abs(t.range[1]-t.range[0])<1){var n=1.5*Math.abs((t.range[1]-t.range[0])/e);e=Math.abs(Math.pow(10,t.range[1])-Math.pow(10,t.range[0]))/n,r=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),t.dtick=\"L\"+i(e,r,S)}else t.dtick=e>.3?\"D2\":\"D1\";else\"category\"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):(t.tick0=0,r=Math.pow(10,Math.floor(Math.log(e)/Math.LN10)),t.dtick=i(e,r,S));if(0===t.dtick&&(t.dtick=1),!b(t.dtick)&&\"string\"!=typeof t.dtick){var a=t.dtick;throw t.dtick=1,\"ax.dtick error: \"+String(a)}},T.tickIncrement=function(t,e,r){var n=r?-1:1;if(b(e))return t+n*e;var i=e.charAt(0),a=n*Number(e.substr(1));if(\"M\"===i){var o=new Date(t);return o.setMonth(o.getMonth()+a)}if(\"L\"===i)return Math.log(Math.pow(10,t)+a)/Math.LN10;if(\"D\"===i){var s=\"D2\"===e?O:R,l=t+.01*n,c=_.roundUp(m(l,1),s,r);return Math.floor(l)+Math.log(y.round(Math.pow(10,c),1))/Math.LN10}throw\"unrecognized dtick \"+String(e)},T.tickFirst=function(t){var e=t.range[1]n:n>c;)c=T.tickIncrement(c,i,e);return c}if(\"L\"===u)return Math.log(r((Math.pow(10,n)-a)/f)*f+a)/Math.LN10;if(\"D\"===u){var h=\"D2\"===i?O:R,d=_.roundUp(m(n,1),h,e);return Math.floor(n)+Math.log(y.round(Math.pow(10,d),1))/Math.LN10}throw\"unrecognized dtick \"+String(i)};var I=y.time.format(\"%Y\"),N=y.time.format(\"%b %Y\"),j=y.time.format(\"%b %-d\"),F=y.time.format(\"%b %-d %Hh\"),D=y.time.format(\"%H:%M\"),B=y.time.format(\":%S\"),U=/%(\\d?)f/g;T.tickText=function(t,e,r){function n(n){var i;return void 0===n?!0:r?\"none\"===n:(i={first:t._tmin,last:t._tmax}[n],\"all\"!==n&&e!==i)}var i,a,o=s(t,e),h=\"array\"===t.tickmode,d=r||h;if(h&&Array.isArray(t.ticktext)){var p=Math.abs(t.range[1]-t.range[0])/1e4;for(a=0;a1&&er&&(A=90),i(u,A)}c._lastangle=A}return o(e),e+\" done\"}function l(){c._boundingBox=r.node().getBoundingClientRect()}var u=r.selectAll(\"g.\"+C).data(L,S);if(!c.showticklabels||!b(n))return u.remove(),void o(e);var f,h,p,m,x;\"x\"===v?(x=\"bottom\"===B?1:-1,f=function(t){return t.dx+I*x},m=n+(O+R)*x,h=function(t){return t.dy+m+t.fontSize*(\"bottom\"===B?1:-.5)},p=function(t){return b(t)&&0!==t&&180!==t?0>t*x?\"end\":\"start\":\"middle\"}):(x=\"right\"===B?1:-1,h=function(t){return t.dy+t.fontSize/2-I*x},f=function(t){return t.dx+n+(O+R+(90===Math.abs(c.tickangle)?t.fontSize/2:0))*x},p=function(t){return b(t)&&90===Math.abs(t)?\"middle\":\"right\"===B?\"start\":\"end\"});var k=0,A=0,T=[];u.enter().append(\"g\").classed(C,1).append(\"text\").attr(\"text-anchor\",\"middle\").each(function(e){var r=y.select(this),n=t._promises.length;r.call(M.setPosition,f(e),h(e)).call(M.font,e.font,e.fontSize,e.fontColor).text(e.text).call(w.convertToTspans),n=t._promises[n],n?T.push(t._promises.pop().then(function(){i(r,c.tickangle)})):i(r,c.tickangle)}),u.exit().remove(),u.each(function(t){k=Math.max(k,t.fontSize)}),i(u,c._lastangle||c.tickangle);var E=_.syncOrAsync([a,s,l]);return E&&E.then&&t._promises.push(E),E}function o(e){if(!r){var n,i,a,o,s=E.getFromId(t,e),l=y.select(t).selectAll(\"g.\"+e+\"tick\"),c={selection:l,side:s.side},f=e.charAt(0),h=t._fullLayout._size,d=1.5,p=s.titlefont.size;if(l.size()){var g=y.select(l.node().parentNode).attr(\"transform\").match(/translate\\(([-\\.\\d]+),([-\\.\\d]+)\\)/);g&&(c.offsetLeft=+g[1],c.offsetTop=+g[2])}\"x\"===f?(i=\"free\"===s.anchor?{_offset:h.t+(1-(s.position||0))*h.h,_length:0}:E.getFromId(t,s.anchor),a=s._offset+s._length/2,o=i._offset+(\"top\"===s.side?-10-p*(d+(s.showticklabels?1:0)):i._length+10+p*(d+(s.showticklabels?1.5:.5))),s.rangeslider&&s.rangeslider.visible&&s._boundingBox&&(o+=(u.height-u.margin.b-u.margin.t)*s.rangeslider.thickness+s._boundingBox.height),c.side||(c.side=\"bottom\")):(i=\"free\"===s.anchor?{_offset:h.l+(s.position||0)*h.w,_length:0}:E.getFromId(t,s.anchor),o=s._offset+s._length/2,a=i._offset+(\"right\"===s.side?i._length+10+p*(d+(s.showticklabels?1:.5)):-10-p*(d+(s.showticklabels?.5:0))),n={rotate:\"-90\",offset:0},c.side||(c.side=\"left\")),k.draw(t,e+\"title\",{propContainer:s,propName:s._name+\".title\",dfltName:f.toUpperCase()+\" axis\",avoid:c,transform:n,attributes:{x:a,y:o,\"text-anchor\":\"middle\"}})}}function s(t,e){return t.visible!==!0||t.xaxis+t.yaxis!==e?!1:x.Plots.traceIs(t,\"bar\")&&t.orientation==={x:\"h\",y:\"v\"}[v]?!0:t.fill&&t.fill.charAt(t.fill.length-1)===v}function l(e,r,i){var a=e.gridlayer,o=e.zerolinelayer,l=e[\"hidegrid\"+v]?[]:V,u=c._gridpath||\"M0,0\"+(\"x\"===v?\"v\":\"h\")+r._length,f=a.selectAll(\"path.\"+z).data(c.showgrid===!1?[]:l,S);if(f.enter().append(\"path\").classed(z,1).classed(\"crisp\",1).attr(\"d\",u).each(function(t){c.zeroline&&(\"linear\"===c.type||\"-\"===c.type)&&Math.abs(t.x)g;g++){var y=c.mirrors[o._id+h[g]];\"ticks\"!==y&&\"labels\"!==y||(f[g]=!0)}return void 0!==n[2]&&(f[2]=!0),f.forEach(function(t,e){var r=n[e],i=U[e];t&&b(r)&&(d+=p(r+R*i,i*c.ticklen))}),i(r,d),l(e,o,t),a(r,n[3])}}).filter(function(t){return t&&t.then});return H.length?Promise.all(H):0},T.swap=function(t,e){for(var r=d(t,e),n=0;n2*n}function u(t){for(var e,r=Math.max(1,(t.length-1)/1e3),n=0,i=0,a=0;a2*n}var f=t(\"fast-isnumeric\"),h=t(\"tinycolor2\").mix,d=t(\"../../lib\"),p=t(\"../plots\"),g=t(\"../../components/color/attributes\").lightFraction,v=t(\"./layout_attributes\"),m=t(\"./tick_value_defaults\"),y=t(\"./tick_mark_defaults\"),b=t(\"./tick_label_defaults\"),x=t(\"./category_order_defaults\"),_=t(\"./set_convert\"),w=t(\"./ordered_categories\"),k=t(\"./clean_datum\"),A=t(\"./axis_ids\");e.exports=function(t,e,r,i){function a(r,n){return d.coerce2(t,e,v,r,n)}var o=i.letter,s=i.font||{},l=\"Click to enter \"+(i.title||o.toUpperCase()+\" axis\")+\" title\";i.name&&(e._name=i.name,e._id=A.name2id(i.name));var c=r(\"type\");\"-\"===c&&(n(e,i.data),\"-\"===e.type?e.type=\"linear\":c=t.type=e.type),_(e);var u=r(\"color\"),p=u===t.color?u:s.color;r(\"title\",l),d.coerceFont(r,\"titlefont\",{family:s.family,size:Math.round(1.2*s.size),color:p});var k=2===(t.range||[]).length&&f(t.range[0])&&f(t.range[1]),M=r(\"autorange\",!k);\n", + "M&&r(\"rangemode\");var T=r(\"range\",[-1,\"x\"===o?6:4]);T[0]===T[1]&&(e.range=[T[0]-1,T[0]+1]),d.noneOrAll(t.range,e.range,[0,1]),r(\"fixedrange\"),m(t,e,r,c),b(t,e,r,c,i),y(t,e,r,i),x(t,e,r);var E=a(\"linecolor\",u),L=a(\"linewidth\"),S=r(\"showline\",!!E||!!L);S||(delete e.linecolor,delete e.linewidth),(S||e.ticks)&&r(\"mirror\");var C=a(\"gridcolor\",h(u,i.bgColor,g).toRgbString()),z=a(\"gridwidth\"),P=r(\"showgrid\",i.showGrid||!!C||!!z);P||(delete e.gridcolor,delete e.gridwidth);var R=a(\"zerolinecolor\",u),O=a(\"zerolinewidth\"),I=r(\"zeroline\",i.showGrid||!!R||!!O);return I||(delete e.zerolinecolor,delete e.zerolinewidth),e._initialCategories=\"category\"===c?w(o,e.categoryorder,e.categoryarray,i.data):[],e}},{\"../../components/color/attributes\":302,\"../../lib\":381,\"../plots\":452,\"./axis_ids\":405,\"./category_order_defaults\":406,\"./clean_datum\":407,\"./layout_attributes\":412,\"./ordered_categories\":414,\"./set_convert\":417,\"./tick_label_defaults\":418,\"./tick_mark_defaults\":419,\"./tick_value_defaults\":420,\"fast-isnumeric\":117,tinycolor2:274}],405:[function(t,e,r){\"use strict\";function n(t,e,r){function n(t,r){for(var n=Object.keys(t),i=/^[xyz]axis[0-9]*/,a=[],o=0;o0;a&&(n=\"array\");var o=r(\"categoryorder\",n);\"array\"===o&&r(\"categoryarray\"),a||\"array\"!==o||(e.categoryorder=\"trace\")}}},{}],407:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\");e.exports=function(t){try{if(\"object\"==typeof t&&null!==t&&t.getTime)return i.ms2DateTime(t);if(\"string\"!=typeof t&&!n(t))return\"\";t=t.toString().replace(/['\"%,$# ]/g,\"\")}catch(e){console.log(e,t)}return t}},{\"../../lib\":381,\"fast-isnumeric\":117}],408:[function(t,e,r){\"use strict\";e.exports={idRegex:{x:/^x([2-9]|[1-9][0-9]+)?$/,y:/^y([2-9]|[1-9][0-9]+)?$/},attrRegex:{x:/^xaxis([2-9]|[1-9][0-9]+)?$/,y:/^yaxis([2-9]|[1-9][0-9]+)?$/},BADNUM:void 0,xAxisMatch:/^xaxis[0-9]*$/,yAxisMatch:/^yaxis[0-9]*$/,AX_ID_PATTERN:/^[xyz][0-9]*$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,DBLCLICKDELAY:300,MINDRAG:8,MINSELECT:12,MINZOOM:20,DRAGGERSIZE:20,MAXDIST:20,YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:\"Arial, sans-serif\",HOVERMINTIME:50,BENDPX:1.5,REDRAWDELAY:50}},{}],409:[function(t,e,r){\"use strict\";function n(t,e){var r,n=t.range[e],i=Math.abs(n-t.range[1-e]);return\"date\"===t.type?c.ms2DateTime(n,i):\"log\"===t.type?(r=Math.ceil(Math.max(0,-Math.log(i)/Math.LN10))+3,o.format(\".\"+r+\"g\")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(i)/Math.LN10)+4,o.format(\".\"+String(r)+\"g\")(n))}function i(t,e){return t?\"nsew\"===t?\"pan\"===e?\"move\":\"crosshair\":t.toLowerCase()+\"-resize\":\"pointer\"}function a(t){o.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}var o=t(\"d3\"),s=t(\"tinycolor2\"),l=t(\"../../plotly\"),c=t(\"../../lib\"),u=t(\"../../lib/svg_text_utils\"),f=t(\"../../components/color\"),h=t(\"../../components/drawing\"),d=t(\"../../lib/setcursor\"),p=t(\"../../components/dragelement\"),g=t(\"./axes\"),v=t(\"./select\"),m=t(\"./constants\"),y=!0;e.exports=function(t,e,r,o,b,x,_,w){function k(t,e){for(var r=0;r.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"transform\",\"translate(\"+ht+\", \"+dt+\")\").attr(\"d\",ot+\"Z\"),ut=ft.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:f.background,stroke:f.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"transform\",\"translate(\"+ht+\", \"+dt+\")\").attr(\"d\",\"M0,0Z\"),T();for(var a=0;ai?(lt=\"\",it.r=it.l,it.t=it.b,ut.attr(\"d\",\"M0,0Z\")):(it.t=0,it.b=V,lt=\"x\",ut.attr(\"d\",\"M\"+(it.l-.5)+\",\"+(nt-H-.5)+\"h-3v\"+(2*H+1)+\"h3ZM\"+(it.r+.5)+\",\"+(nt-H-.5)+\"h3v\"+(2*H+1)+\"h-3Z\")):!Z||i.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),ut.transition().style(\"opacity\",1).duration(200),st=!0)}function L(t,e,r){var n,i,a;for(n=0;nzoom back out\",\"long\"),y=!1)))}function C(e,r){var i=1===(_+w).length;if(e)I();else if(2!==r||i){if(1===r&&i){var a=_?B[0]:D[0],o=\"s\"===_||\"w\"===w?0:1,s=a._name+\".range[\"+o+\"]\",c=n(a,o),f=\"left\",h=\"middle\";if(a.fixedrange)return;_?(h=\"n\"===_?\"top\":\"bottom\",\"right\"===a.side&&(f=\"right\")):\"e\"===w&&(f=\"right\"),J.call(u.makeEditable,null,{immediate:!0,background:j.paper_bgcolor,text:String(c),fill:a.tickfont?a.tickfont.color:\"#444\",horizontalAlign:f,verticalAlign:h}).on(\"edit\",function(e){var r=\"category\"===a.type?a.c2l(e):a.d2l(e);void 0!==r&&l.relayout(t,s,r)})}}else O()}function z(e){function r(t,e,r){if(!t.fixedrange){A(t.range);var n=t.range,i=n[0]+(n[1]-n[0])*e;t.range=[i+(n[0]-i)*r,i+(n[1]-i)*r]}}if(t._context.scrollZoom||j._enablescrollzoom){var n=t.querySelector(\".plotly\");if(!(n.scrollHeight-n.clientHeight>10||n.scrollWidth-n.clientWidth>10)){clearTimeout(gt);var i=-e.deltaY;if(isFinite(i)||(i=e.wheelDelta/10),!isFinite(i))return void console.log(\"did not find wheel motion attributes\",e);var a,o=Math.exp(-Math.min(Math.max(i,-20),20)/100),s=mt.draglayer.select(\".nsewdrag\").node().getBoundingClientRect(),l=(e.clientX-s.left)/s.width,u=pt[0]+pt[2]*l,f=(s.bottom-e.clientY)/s.height,h=pt[1]+pt[3]*(1-f);if(w){for(a=0;a=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function i(t,e,r){for(var i=1-e,a=0,o=0;o0;n--)r.push(e);return r}function i(t,e){for(var r=[],n=0;nj||j>D.width||0>F||F>D.height)return _.unhoverRaw(t,e)}else j=\"xpx\"in e?e.xpx:p[0]._length/2,F=\"ypx\"in e?e.ypx:v[0]._length/2;if(x=\"xval\"in e?n(d,e.xval):i(p,j),A=\"yval\"in e?n(d,e.yval):i(v,F),!g(x[0])||!g(A[0]))return console.log(\"Plotly.Fx.hover failed\",e,t),_.unhoverRaw(t,e)}var B=1/0;for(T=0;T1||-1!==L.hoverinfo.indexOf(\"name\")?L.name:void 0,index:!1,distance:Math.min(B,k.MAXDIST),color:b.defaultLine,x0:void 0,x1:void 0,y0:void 0,y1:void 0,xLabelVal:void 0,yLabelVal:void 0,zLabelVal:void 0,text:void 0},O=I.length,\"array\"===C){var U=e[T];\"pointNumber\"in U?(R.index=U.pointNumber,C=\"closest\"):(C=\"\",\"xval\"in U&&(z=U.xval,C=\"x\"),\"yval\"in U&&(P=U.yval,C=C?\"closest\":\"y\"))}else z=x[S],P=A[S];if(L._module&&L._module.hoverPoints){var V=L._module.hoverPoints(R,z,P,C);if(V)for(var q,H=0;HO&&(I.splice(0,O),B=I[0].distance)}if(0===I.length)return _.unhoverRaw(t,e);var G=\"y\"===y&&N.length>1;I.sort(function(t,e){return t.distance-e.distance});var Y=b.combine(a.plot_bgcolor||b.background,a.paper_bgcolor),X={hovermode:y,rotateLabels:G,bgColor:Y,container:a._hoverlayer,outerContainer:a._paperdiv},W=c(I,X);u(I,G?\"xa\":\"ya\"),f(W,G);var Z=t._hoverdata,K=[];for(M=0;M128?\"#000\":b.background;if(t.name&&void 0===t.zLabelVal){var u=document.createElement(\"p\");u.innerHTML=t.name,r=u.textContent||\"\",r.length>15&&(r=r.substr(0,12)+\"...\")}void 0!==t.extraText&&(n+=t.extraText),void 0!==t.zLabel?(void 0!==t.xLabel&&(n+=\"x: \"+t.xLabel+\"
\"),void 0!==t.yLabel&&(n+=\"y: \"+t.yLabel+\"
\"),n+=(n?\"z: \":\"\")+t.zLabel):M&&t[i+\"Label\"]===g?n=t[(\"x\"===i?\"y\":\"x\")+\"Label\"]||\"\":void 0===t.xLabel?void 0!==t.yLabel&&(n=t.yLabel):n=void 0===t.yLabel?t.xLabel:\"(\"+t.xLabel+\", \"+t.yLabel+\")\",t.text&&!Array.isArray(t.text)&&(n+=(n?\"
\":\"\")+t.text),\"\"===n&&(\"\"===r&&e.remove(),n=r);var f=e.select(\"text.nums\").style(\"fill\",c).call(x.setPosition,0,0).text(n).attr(\"data-notex\",1).call(y.convertToTspans);f.selectAll(\"tspan.line\").call(x.setPosition,0,0);var h=e.select(\"text.name\"),v=0;r&&r!==n?(h.style(\"fill\",l).text(r).call(x.setPosition,0,0).attr(\"data-notex\",1).call(y.convertToTspans),h.selectAll(\"tspan.line\").call(x.setPosition,0,0),v=h.node().getBoundingClientRect().width+2*P):(h.remove(),e.select(\"rect\").remove()),e.select(\"path\").style({fill:l,stroke:c});var m,k,E=f.node().getBoundingClientRect(),L=t.xa._offset+(t.x0+t.x1)/2,S=t.ya._offset+(t.y0+t.y1)/2,C=Math.abs(t.x1-t.x0),R=Math.abs(t.y1-t.y0),O=E.width+z+P+v;t.ty0=_-E.top,t.bx=E.width+2*P,t.by=E.height+2*P,t.anchor=\"start\",t.txwidth=E.width,t.tx2width=v,t.offset=0,a?(t.pos=L,m=A>=S+R/2+O,k=S-R/2-O>=0,\"top\"!==t.idealAlign&&m||!k?m?(S+=R/2,t.anchor=\"start\"):t.anchor=\"middle\":(S-=R/2,t.anchor=\"end\")):(t.pos=S,m=w>=L+C/2+O,k=L-C/2-O>=0,\"left\"!==t.idealAlign&&m||!k?m?(L+=C/2,t.anchor=\"start\"):t.anchor=\"middle\":(L-=C/2,t.anchor=\"end\")),f.attr(\"text-anchor\",t.anchor),v&&h.attr(\"text-anchor\",t.anchor),e.attr(\"transform\",\"translate(\"+L+\",\"+S+\")\"+(a?\"rotate(\"+T+\")\":\"\"))}),S}function u(t,e){function r(t){var e=t[0],r=t[t.length-1];if(i=e.pmin-e.pos-e.dp+e.size,a=r.pos+r.dp+r.size-e.pmax,i>.01){for(s=t.length-1;s>=0;s--)t[s].dp+=i;n=!1}if(!(.01>a)){if(-.01>i){for(s=t.length-1;s>=0;s--)t[s].dp-=a;n=!1}if(n){var c=0;for(o=0;oe.pmax&&c++;for(o=t.length-1;o>=0&&!(0>=c);o--)l=t[o],l.pos>e.pmax-1&&(l.del=!0,c--);for(o=0;o=c);o++)if(l=t[o],l.pos=0;s--)t[s].dp-=a;for(o=t.length-1;o>=0&&!(0>=c);o--)l=t[o],l.pos+l.dp+l.size>e.pmax&&(l.del=!0,c--)}}}for(var n,i,a,o,s,l,c,u=0,f=t.map(function(t,r){var n=t[e];return[{i:r,dp:0,pos:t.pos,posref:t.posref,size:t.by*(\"x\"===n._id.charAt(0)?L:1)/2,pmin:n._offset,pmax:n._offset+n._length}]}).sort(function(t,e){return t[0].posref-e[0].posref});!n&&u<=t.length;){for(u++,n=!0,o=0;o.01&&p.pmin===g.pmin&&p.pmax===g.pmax){for(s=d.length-1;s>=0;s--)d[s].dp+=i;for(h.push.apply(h,d),f.splice(o+1,1),c=0,s=h.length-1;s>=0;s--)c+=h[s].dp;for(a=c/h.length,s=h.length-1;s>=0;s--)h[s].dp-=a;n=!1}else o++}f.forEach(r)}for(o=f.length-1;o>=0;o--){var v=f[o];for(s=v.length-1;s>=0;s--){var m=v[s],y=t[m.i];y.offset=m.dp,y.del=m.del}}}function f(t,e){t.each(function(t){var r=d.select(this);if(t.del)return void r.remove();var n=\"end\"===t.anchor?-1:1,i=r.select(\"text.nums\"),a={start:1,end:-1,middle:0}[t.anchor],o=a*(z+P),s=o+a*(t.txwidth+P),l=0,c=t.offset;\"middle\"===t.anchor&&(o-=t.tx2width/2,s-=t.tx2width/2),e&&(c*=-C,l=t.offset*S),r.select(\"path\").attr(\"d\",\"middle\"===t.anchor?\"M-\"+t.bx/2+\",-\"+t.by/2+\"h\"+t.bx+\"v\"+t.by+\"h-\"+t.bx+\"Z\":\"M0,0L\"+(n*z+l)+\",\"+(z+c)+\"v\"+(t.by/2-z)+\"h\"+n*t.bx+\"v-\"+t.by+\"H\"+(n*z+l)+\"V\"+(c-z)+\"Z\"),i.call(x.setPosition,o+l,c+t.ty0-t.by/2+P).selectAll(\"tspan.line\").attr({x:i.attr(\"x\"),y:i.attr(\"y\")}),t.tx2width&&(r.select(\"text.name, text.name tspan.line\").call(x.setPosition,s+a*P+l,c+t.ty0-t.by/2+P),r.select(\"rect\").call(x.setRect,s+(a-1)*t.tx2width/2+l,c-t.by/2-1,t.tx2width,t.by+2))})}function h(t,e,r){if(!e.target)return!1;if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber))return!0}return!1}var d=t(\"d3\"),p=t(\"tinycolor2\"),g=t(\"fast-isnumeric\"),v=t(\"../../lib\"),m=t(\"../../lib/events\"),y=t(\"../../lib/svg_text_utils\"),b=t(\"../../components/color\"),x=t(\"../../components/drawing\"),_=t(\"../../components/dragelement\"),w=t(\"./axes\"),k=t(\"./constants\"),A=t(\"./dragbox\"),M=e.exports={};M.unhover=_.unhover,M.layoutAttributes={dragmode:{valType:\"enumerated\",values:[\"zoom\",\"pan\",\"select\",\"lasso\",\"orbit\",\"turntable\"],dflt:\"zoom\"},hovermode:{valType:\"enumerated\",values:[\"x\",\"y\",\"closest\",!1]}},M.supplyLayoutDefaults=function(t,e,r){function n(r,n){return v.coerce(t,e,M.layoutAttributes,r,n)}n(\"dragmode\");var i;if(e._has(\"cartesian\")){var a=e._isHoriz=M.isHoriz(r);i=a?\"y\":\"x\"}else i=\"closest\";n(\"hovermode\",i)},M.isHoriz=function(t){for(var e=!0,r=0;rt._lastHoverTime+k.HOVERMINTIME?(o(t,e,r),void(t._lastHoverTime=Date.now())):void(t._hoverTimer=setTimeout(function(){o(t,e,r),t._lastHoverTime=Date.now(),t._hoverTimer=void 0},k.HOVERMINTIME))},M.getDistanceFunction=function(t,e,r,n){return\"closest\"===t?n||a(e,r):\"x\"===t?e:r},M.getClosest=function(t,e,r){if(r.index!==!1)r.index>=0&&r.indext*e||0===t?k.MAXDIST*(.6-.3/Math.max(3,Math.abs(t-e))):1/0}},{\"../../components/color\":303,\"../../components/dragelement\":323,\"../../components/drawing\":325,\"../../lib\":381,\"../../lib/events\":375,\"../../lib/svg_text_utils\":393,\"./axes\":403,\"./constants\":408,\"./dragbox\":409,d3:113,\"fast-isnumeric\":117,tinycolor2:274}],411:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../plots\"),a=t(\"./constants\");r.name=\"cartesian\",r.attr=[\"xaxis\",\"yaxis\"],r.idRoot=[\"x\",\"y\"],r.idRegex=a.idRegex,r.attrRegex=a.attrRegex,r.attributes=t(\"./attributes\"),r.plot=function(t){function e(t,e){for(var r=[],n=0;nf[1]-.01&&(e.domain=[0,1]),i.noneOrAll(t.domain,e.domain,[0,1])}return e}},{\"../../lib\":381,\"fast-isnumeric\":117}],416:[function(t,e,r){\"use strict\";function n(t){return t._id}var i=t(\"../../lib/polygon\"),a=t(\"../../components/color\"),o=t(\"./axes\"),s=t(\"./constants\"),l=i.filter,c=i.tester,u=s.MINSELECT;e.exports=function(t,e,r,i,f){function h(t){var e=\"y\"===t._id.charAt(0)?1:0;return function(r){return t.p2d(r[e])}}function d(t,e){return t-e}var p,g=i.gd._fullLayout._zoomlayer,v=i.element.getBoundingClientRect(),m=i.plotinfo.x()._offset,y=i.plotinfo.y()._offset,b=e-v.left,x=r-v.top,_=b,w=x,k=\"M\"+b+\",\"+x,A=i.xaxes[0]._length,M=i.yaxes[0]._length,T=i.xaxes.map(n),E=i.yaxes.map(n),L=i.xaxes.concat(i.yaxes);\"lasso\"===f&&(p=l([[b,x]],s.BENDPX));var S=g.selectAll(\"path.select-outline\").data([1,2]);S.enter().append(\"path\").attr(\"class\",function(t){return\"select-outline select-outline-\"+t}).attr(\"transform\",\"translate(\"+m+\", \"+y+\")\").attr(\"d\",k+\"Z\");var C,z,P,R,O,I=g.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:a.background,stroke:a.defaultLine,\"stroke-width\":1}).attr(\"transform\",\"translate(\"+m+\", \"+y+\")\").attr(\"d\",\"M0,0Z\"),N=[],j=i.gd,F=[];for(C=0;C0)return Math.log(e)/Math.LN10;if(0>=e&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-3*u*Math.abs(n-i))}return o.BADNUM}function r(t){return Math.pow(10,t)}function c(t){return i(t)?Number(t):o.BADNUM}var u=10;if(t.c2l=\"log\"===t.type?e:c,t.l2c=\"log\"===t.type?r:c,t.l2d=function(e){return t.c2d(t.l2c(e))},t.p2d=function(e){return t.l2d(t.p2l(e))},t.setScale=function(){var e,r=t._gd._fullLayout._size;if(t._categories||(t._categories=[]),t.overlaying){var n=l.getFromId(t._gd,t.overlaying);t.domain=n.domain}for(t.range&&2===t.range.length&&t.range[0]!==t.range[1]||(t.range=[-1,1]),e=0;2>e;e++)i(t.range[e])||(t.range[e]=i(t.range[1-e])?t.range[1-e]*(e?10:.1):e?1:-1),t.range[e]<-(Number.MAX_VALUE/2)?t.range[e]=-(Number.MAX_VALUE/2):t.range[e]>Number.MAX_VALUE/2&&(t.range[e]=Number.MAX_VALUE/2);if(\"y\"===t._id.charAt(0)?(t._offset=r.t+(1-t.domain[1])*r.h,t._length=r.h*(t.domain[1]-t.domain[0]),t._m=t._length/(t.range[0]-t.range[1]),t._b=-t._m*t.range[1]):(t._offset=r.l+t.domain[0]*r.w,t._length=r.w*(t.domain[1]-t.domain[0]),t._m=t._length/(t.range[1]-t.range[0]),t._b=-t._m*t.range[0]),!isFinite(t._m)||!isFinite(t._b))throw a.notifier(\"Something went wrong with axis scaling\",\"long\"),t._gd._replotting=!1,new Error(\"axis scaling\")},t.l2p=function(e){return i(e)?n.round(t._b+t._m*e,2):o.BADNUM},t.p2l=function(e){return(e-t._b)/t._m},t.c2p=function(e,r){return t.l2p(t.c2l(e,r))},t.p2c=function(e){return t.l2c(t.p2l(e))},-1!==[\"linear\",\"log\",\"-\"].indexOf(t.type))t.c2d=c,t.d2c=function(t){return t=s(t),i(t)?Number(t):o.BADNUM},t.d2l=function(e,r){return\"log\"===t.type?t.c2l(t.d2c(e),r):t.d2c(e)};else if(\"date\"===t.type){if(t.c2d=function(t){return i(t)?a.ms2DateTime(t):o.BADNUM},t.d2c=function(t){return i(t)?Number(t):a.dateTime2ms(t)},t.d2l=t.d2c,t.range&&t.range.length>1)try{var f=t.range.map(a.dateTime2ms);!i(t.range[0])&&i(f[0])&&(t.range[0]=f[0]),!i(t.range[1])&&i(f[1])&&(t.range[1]=f[1])}catch(h){console.log(h,t.range)}}else\"category\"===t.type&&(t.c2d=function(e){return t._categories[Math.round(e)]},t.d2c=function(e){null!==e&&void 0!==e&&-1===t._categories.indexOf(e)&&t._categories.push(e);var r=t._categories.indexOf(e);return-1===r?o.BADNUM:r},t.d2l=t.d2c);t.makeCalcdata=function(e,r){var n,i,a;if(r in e)for(n=e[r],i=new Array(n.length),a=0;an?\"0\":\"1.0\"}var r=this.framework,n=r.select(\"g.choroplethlayer\"),i=r.select(\"g.scattergeolayer\"),a=this.projection,o=this.path,s=this.clipAngle;r.selectAll(\"path.basepath\").attr(\"d\",o),r.selectAll(\"path.graticulepath\").attr(\"d\",o),n.selectAll(\"path.choroplethlocation\").attr(\"d\",o),n.selectAll(\"path.basepath\").attr(\"d\",o),i.selectAll(\"path.js-line\").attr(\"d\",o),null!==s?(i.selectAll(\"path.point\").style(\"opacity\",e).attr(\"transform\",t),i.selectAll(\"text\").style(\"opacity\",e).attr(\"transform\",t)):(i.selectAll(\"path.point\").attr(\"transform\",t),i.selectAll(\"text\").attr(\"transform\",t))}},{\"../../components/color\":303,\"../../components/drawing\":325,\"../../constants/xmlns_namespaces\":369,\"../../lib/filter_visible\":377,\"../../lib/topojson_utils\":394,\"../../plots/cartesian/axes\":403,\"./constants\":422,\"./projections\":430,\"./set_scale\":431,\"./zoom\":432,\"./zoom_reset\":433,d3:113,topojson:275}],424:[function(t,e,r){\"use strict\";var n=t(\"./geo\"),i=t(\"../../plots/plots\");r.name=\"geo\",r.attr=\"geo\",r.idRoot=\"geo\",r.idRegex=/^geo([2-9]|[1-9][0-9]+)?$/,r.attrRegex=/^geo([2-9]|[1-9][0-9]+)?$/,r.attributes=t(\"./layout/attributes\"),r.layoutAttributes=t(\"./layout/layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout/defaults\"),r.plot=function(t){var e=t._fullLayout,r=t._fullData,a=i.getSubplotIds(e,\"geo\");void 0===window.PlotlyGeoAssets&&(window.PlotlyGeoAssets={topojson:{}});for(var o=0;o=n}function a(t,e){for(var r=e[0],n=e[1],i=!1,a=0,o=t.length,s=o-1;o>a;s=a++){var l=t[a],c=l[0],u=l[1],f=t[s],h=f[0],d=f[1];u>n^d>n&&(h-c)*(n-u)/(d-u)+c>r&&(i=!i)}return i}function o(t){return t?t/Math.sin(t):1}function s(t){return t>1?P:-1>t?-P:Math.asin(t)}function l(t){return t>1?0:-1>t?z:Math.acos(t)}function c(t,e){var r=(2+P)*Math.sin(e);e/=2;for(var n=0,i=1/0;10>n&&Math.abs(i)>S;n++){var a=Math.cos(e);e-=i=(e+Math.sin(e)*(a+2)-r)/(2*a*(1+a))}return[2/Math.sqrt(z*(4+z))*t*(1+Math.cos(e)),2*Math.sqrt(z/(4+z))*Math.sin(e)]}function u(t,e){function r(r,n){var i=j(r/e,n);return i[0]*=t,i}return arguments.length<2&&(e=t),1===e?j:e===1/0?h:(r.invert=function(r,n){var i=j.invert(r/t,n);return i[0]*=e,i},r)}function f(){var t=2,e=N(u),r=e(t);return r.coefficient=function(r){return arguments.length?e(t=+r):t},r}function h(t,e){return[t*Math.cos(e)/Math.cos(e/=2),2*Math.sin(e)]}function d(t,e){return[3*t/(2*z)*Math.sqrt(z*z/3-e*e),e]}function p(t,e){return[t,1.25*Math.log(Math.tan(z/4+.4*e))]}function g(t){return function(e){var r,n=t*Math.sin(e),i=30;do e-=r=(e+Math.sin(e)-n)/(1+Math.cos(e));while(Math.abs(r)>S&&--i>0);return e/2}}function v(t,e,r){function n(r,n){return[t*r*Math.cos(n=i(n)),e*Math.sin(n)]}var i=g(r);return n.invert=function(n,i){var a=s(i/e);return[n/(t*Math.cos(a)),s((2*a+Math.sin(2*a))/r)]},n}function m(t,e){var r=e*e,n=r*r;return[t*(.8707-.131979*r+n*(-.013791+n*(.003971*r-.001529*n))),e*(1.007226+r*(.015085+n*(-.044475+.028874*r-.005916*n)))]}function y(t,e){var r,n=Math.min(18,36*Math.abs(e)/z),i=Math.floor(n),a=n-i,o=(r=D[i])[0],s=r[1],l=(r=D[++i])[0],c=r[1],u=(r=D[Math.min(19,++i)])[0],f=r[1];return[t*(l+a*(u-o)/2+a*a*(u-2*l+o)/2),(e>0?P:-P)*(c+a*(f-s)/2+a*a*(f-2*c+s)/2)]}function b(t,e){return[t*Math.cos(e),e]}function x(t,e){var r=Math.cos(e),n=o(l(r*Math.cos(t/=2)));return[2*r*Math.sin(t)*n,Math.sin(e)*n]}function _(t,e){var r=x(t,e);return[(r[0]+t/P)/2,(r[1]+e)/2]}t.geo.project=function(t,e){var n=e.stream;if(!n)throw new Error(\"not yet supported\");return(t&&w.hasOwnProperty(t.type)?w[t.type]:r)(t,n)};var w={Feature:e,FeatureCollection:function(t,r){return{type:\"FeatureCollection\",features:t.features.map(function(t){return e(t,r)})}}},k=[],A=[],M={point:function(t,e){k.push([t,e])},result:function(){var t=k.length?k.length<2?{type:\"Point\",coordinates:k[0]}:{type:\"MultiPoint\",coordinates:k}:null;return k=[],t}},T={lineStart:n,point:function(t,e){k.push([t,e])},lineEnd:function(){k.length&&(A.push(k),k=[])},result:function(){var t=A.length?A.length<2?{type:\"LineString\",coordinates:A[0]}:{type:\"MultiLineString\",coordinates:A}:null;return A=[],t}},E={polygonStart:n,lineStart:n,point:function(t,e){k.push([t,e])},lineEnd:function(){var t=k.length;if(t){do k.push(k[0].slice());while(++t<4);A.push(k),k=[]}},polygonEnd:n,result:function(){if(!A.length)return null;var t=[],e=[];return A.forEach(function(r){i(r)?t.push([r]):e.push(r)}),e.forEach(function(e){var r=e[0];t.some(function(t){return a(t[0],r)?(t.push(e),!0):void 0})||t.push([e])}),A=[],t.length?t.length>1?{type:\"MultiPolygon\",coordinates:t}:{type:\"Polygon\",coordinates:t[0]}:null}},L={Point:M,MultiPoint:M,LineString:T,MultiLineString:T,Polygon:E,MultiPolygon:E,Sphere:E},S=1e-6,C=S*S,z=Math.PI,P=z/2,R=(Math.sqrt(z),z/180),O=180/z,I=t.geo.projection,N=t.geo.projectionMutator;t.geo.interrupt=function(e){function r(t,r){for(var n=0>r?-1:1,i=l[+(0>r)],a=0,o=i.length-1;o>a&&t>i[a][2][0];++a);var s=e(t-i[a][1][0],r);return s[0]+=e(i[a][1][0],n*r>n*i[a][0][1]?i[a][0][1]:r)[0],s}function n(){s=l.map(function(t){return t.map(function(t){var r,n=e(t[0][0],t[0][1])[0],i=e(t[2][0],t[2][1])[0],a=e(t[1][0],t[0][1])[1],o=e(t[1][0],t[1][1])[1];return a>o&&(r=a,a=o,o=r),[[n,a],[i,o]]})})}function i(){for(var e=1e-6,r=[],n=0,i=l[0].length;i>n;++n){var o=l[0][n],s=180*o[0][0]/z,c=180*o[0][1]/z,u=180*o[1][1]/z,f=180*o[2][0]/z,h=180*o[2][1]/z;r.push(a([[s+e,c+e],[s+e,u-e],[f-e,u-e],[f-e,h+e]],30))}for(var n=l[1].length-1;n>=0;--n){var o=l[1][n],s=180*o[0][0]/z,c=180*o[0][1]/z,u=180*o[1][1]/z,f=180*o[2][0]/z,h=180*o[2][1]/z;r.push(a([[f-e,h-e],[f-e,u+e],[s+e,u+e],[s+e,c-e]],30))}return{type:\"Polygon\",coordinates:[t.merge(r)]}}function a(t,e){for(var r,n,i,a=-1,o=t.length,s=t[0],l=[];++ac;++c)l.push([s[0]+c*n,s[1]+c*i]);s=r}return l.push(r),l}function o(t,e){return Math.abs(t[0]-e[0])n)],a=l[+(0>n)],c=0,u=i.length;u>c;++c){var f=i[c];if(f[0][0]<=t&&tS&&--i>0);return[t/(.8707+(a=n*n)*(-.131979+a*(-.013791+a*a*a*(.003971-.001529*a)))),n]},(t.geo.naturalEarth=function(){return I(m)}).raw=m;var D=[[.9986,-.062],[1,0],[.9986,.062],[.9954,.124],[.99,.186],[.9822,.248],[.973,.31],[.96,.372],[.9427,.434],[.9216,.4958],[.8962,.5571],[.8679,.6176],[.835,.6769],[.7986,.7346],[.7597,.7903],[.7186,.8435],[.6732,.8936],[.6213,.9394],[.5722,.9761],[.5322,1]];D.forEach(function(t){t[1]*=1.0144}),y.invert=function(t,e){var r=e/P,n=90*r,i=Math.min(18,Math.abs(n/5)),a=Math.max(0,Math.floor(i));do{var o=D[a][1],s=D[a+1][1],l=D[Math.min(19,a+2)][1],c=l-o,u=l-2*s+o,f=2*(Math.abs(r)-s)/c,h=u/c,d=f*(1-h*f*(1-2*h*f));if(d>=0||1===a){n=(e>=0?5:-5)*(d+i);var p,g=50;do i=Math.min(18,Math.abs(n)/5),a=Math.floor(i),d=i-a,o=D[a][1],s=D[a+1][1],l=D[Math.min(19,a+2)][1],n-=(p=(e>=0?P:-P)*(s+d*(l-o)/2+d*d*(l-2*s+o)/2)-e)*O;while(Math.abs(p)>C&&--g>0);\n", + "break}}while(--a>=0);var v=D[a][0],m=D[a+1][0],y=D[Math.min(19,a+2)][0];return[t/(m+d*(y-v)/2+d*d*(y-2*m+v)/2),n*R]},(t.geo.robinson=function(){return I(y)}).raw=y,b.invert=function(t,e){return[t/Math.cos(e),e]},(t.geo.sinusoidal=function(){return I(b)}).raw=b,x.invert=function(t,e){if(!(t*t+4*e*e>z*z+S)){var r=t,n=e,i=25;do{var a,o=Math.sin(r),s=Math.sin(r/2),c=Math.cos(r/2),u=Math.sin(n),f=Math.cos(n),h=Math.sin(2*n),d=u*u,p=f*f,g=s*s,v=1-p*c*c,m=v?l(f*c)*Math.sqrt(a=1/v):a=0,y=2*m*f*s-t,b=m*u-e,x=a*(p*g+m*f*c*d),_=a*(.5*o*h-2*m*u*s),w=.25*a*(h*s-m*u*p*o),k=a*(d*c+m*g*f),A=_*w-k*x;if(!A)break;var M=(b*_-y*k)/A,T=(y*w-b*x)/A;r-=M,n-=T}while((Math.abs(M)>S||Math.abs(T)>S)&&--i>0);return[r,n]}},(t.geo.aitoff=function(){return I(x)}).raw=x,_.invert=function(t,e){var r=t,n=e,i=25;do{var a,o=Math.cos(n),s=Math.sin(n),c=Math.sin(2*n),u=s*s,f=o*o,h=Math.sin(r),d=Math.cos(r/2),p=Math.sin(r/2),g=p*p,v=1-f*d*d,m=v?l(o*d)*Math.sqrt(a=1/v):a=0,y=.5*(2*m*o*p+r/P)-t,b=.5*(m*s+n)-e,x=.5*a*(f*g+m*o*d*u)+.5/P,_=a*(h*c/4-m*s*p),w=.125*a*(c*p-m*s*f*h),k=.5*a*(u*d+m*g*o)+.5,A=_*w-k*x,M=(b*_-y*k)/A,T=(y*w-b*x)/A;r-=M,n-=T}while((Math.abs(M)>S||Math.abs(T)>S)&&--i>0);return[r,n]},(t.geo.winkel3=function(){return I(_)}).raw=_}e.exports=n},{}],431:[function(t,e,r){\"use strict\";function n(t,e){var r=t.projection,n=t.lonaxis,o=t.lataxis,l=t.domain,c=t.framewidth||0,u=e.w*(l.x[1]-l.x[0]),f=e.h*(l.y[1]-l.y[0]),h=n.range[0]+s,d=n.range[1]-s,p=o.range[0]+s,g=o.range[1]-s,v=n._fullRange[0]+s,m=n._fullRange[1]-s,y=o._fullRange[0]+s,b=o._fullRange[1]-s;r._translate0=[e.l+u/2,e.t+f/2];var x=d-h,_=g-p,w=[h+x/2,p+_/2],k=r._rotate;r._center=[w[0]+k[0],w[1]+k[1]];var A=function(e){function n(t){return Math.min(_*u/(t[1][0]-t[0][0]),_*f/(t[1][1]-t[0][1]))}var o,s,l,x,_=e.scale(),w=r._translate0,k=i(h,p,d,g),A=i(v,y,m,b);l=a(e,k),o=n(l),x=a(e,A),r._fullScale=n(x),e.scale(o),l=a(e,k),s=[w[0]-l[0][0]+c,w[1]-l[0][1]+c],r._translate=s,e.translate(s),l=a(e,k),t._isAlbersUsa||e.clipExtent(l),o=r.scale*o,r._scale=o,t._width=Math.round(l[1][0])+c,t._height=Math.round(l[1][1])+c,t._marginX=(u-Math.round(l[1][0]))/2,t._marginY=(f-Math.round(l[1][1]))/2};return A}function i(t,e,r,n){var i=(r-t)/4;return{type:\"Polygon\",coordinates:[[[t,e],[t,n],[t+i,n],[t+2*i,n],[t+3*i,n],[r,n],[r,e],[r-i,e],[r-2*i,e],[r-3*i,e],[t,e]]]}}function a(t,e){return o.geo.path().projection(t).bounds(e)}var o=t(\"d3\"),s=t(\"./constants/\").clipPad;e.exports=n},{\"./constants/\":422,d3:113}],432:[function(t,e,r){\"use strict\";function n(t,e){var r;return(r=e._isScoped?a:e._clipAngle?s:o)(t,e.projection)}function i(t,e){var r=e._fullScale;return _.behavior.zoom().translate(t.translate()).scale(t.scale()).scaleExtent([.5*r,100*r])}function a(t,e){function r(){_.select(this).style(A)}function n(){o.scale(_.event.scale).translate(_.event.translate),t.render()}function a(){_.select(this).style(M)}var o=t.projection,s=i(o,e);return s.on(\"zoomstart\",r).on(\"zoom\",n).on(\"zoomend\",a),s}function o(t,e){function r(t){return v.invert(t)}function n(t){var e=v(r(t));return Math.abs(e[0]-t[0])>y||Math.abs(e[1]-t[1])>y}function a(){_.select(this).style(A),l=_.mouse(this),c=v.rotate(),u=v.translate(),f=c,h=r(l)}function o(){return d=_.mouse(this),n(l)?(m.scale(v.scale()),void m.translate(v.translate())):(v.scale(_.event.scale),v.translate([u[0],_.event.translate[1]]),h?r(d)&&(g=r(d),p=[f[0]+(g[0]-h[0]),c[1],c[2]],v.rotate(p),f=p):(l=d,h=r(l)),void t.render())}function s(){_.select(this).style(M)}var l,c,u,f,h,d,p,g,v=t.projection,m=i(v,e),y=2;return m.on(\"zoomstart\",a).on(\"zoom\",o).on(\"zoomend\",s),m}function s(t,e){function r(t){m++||t({type:\"zoomstart\"})}function n(t){t({type:\"zoom\"})}function a(t){--m||t({type:\"zoomend\"})}var o,s=t.projection,d={r:s.rotate(),k:s.scale()},p=i(s,e),g=x(p,\"zoomstart\",\"zoom\",\"zoomend\"),m=0,y=p.on;return p.on(\"zoomstart\",function(){_.select(this).style(A);var t=_.mouse(this),e=s.rotate(),i=e,a=s.translate(),m=c(e);o=l(s,t),y.call(p,\"zoom\",function(){var r=_.mouse(this);if(s.scale(d.k=_.event.scale),o){if(l(s,r)){s.rotate(e).translate(a);var c=l(s,r),p=f(o,c),y=v(u(m,p)),b=d.r=h(y,o,i);isFinite(b[0])&&isFinite(b[1])&&isFinite(b[2])||(b=i),s.rotate(b),i=b}}else t=r,o=l(s,t);n(g.of(this,arguments))}),r(g.of(this,arguments))}).on(\"zoomend\",function(){_.select(this).style(M),y.call(p,\"zoom\",null),a(g.of(this,arguments))}).on(\"zoom.redraw\",function(){t.render()}),_.rebind(p,g,\"on\")}function l(t,e){var r=t.invert(e);return r&&isFinite(r[0])&&isFinite(r[1])&&m(r)}function c(t){var e=.5*t[0]*w,r=.5*t[1]*w,n=.5*t[2]*w,i=Math.sin(e),a=Math.cos(e),o=Math.sin(r),s=Math.cos(r),l=Math.sin(n),c=Math.cos(n);return[a*s*c+i*o*l,i*s*c-a*o*l,a*o*c+i*s*l,a*s*l-i*o*c]}function u(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],o=e[0],s=e[1],l=e[2],c=e[3];return[r*o-n*s-i*l-a*c,r*s+n*o+i*c-a*l,r*l-n*c+i*o+a*s,r*c+n*l-i*s+a*o]}function f(t,e){if(t&&e){var r=b(t,e),n=Math.sqrt(y(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,y(t,e)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}}function h(t,e,r){var n=g(e,2,t[0]);n=g(n,1,t[1]),n=g(n,0,t[2]-r[2]);var i,a,o=e[0],s=e[1],l=e[2],c=n[0],u=n[1],f=n[2],h=Math.atan2(s,o)*k,p=Math.sqrt(o*o+s*s);Math.abs(u)>p?(a=(u>0?90:-90)-h,i=0):(a=Math.asin(u/p)*k-h,i=Math.sqrt(p*p-u*u));var v=180-a-2*h,m=(Math.atan2(f,c)-Math.atan2(l,i))*k,y=(Math.atan2(f,c)-Math.atan2(l,-i))*k,b=d(r[0],r[1],a,m),x=d(r[0],r[1],v,y);return x>=b?[a,m,r[2]]:[v,y,r[2]]}function d(t,e,r,n){var i=p(r-t),a=p(n-e);return Math.sqrt(i*i+a*a)}function p(t){return(t%360+540)%360-180}function g(t,e,r){var n=r*w,i=t.slice(),a=0===e?1:0,o=2===e?1:2,s=Math.cos(n),l=Math.sin(n);return i[a]=t[a]*s-t[o]*l,i[o]=t[o]*s+t[a]*l,i}function v(t){return[Math.atan2(2*(t[0]*t[1]+t[2]*t[3]),1-2*(t[1]*t[1]+t[2]*t[2]))*k,Math.asin(Math.max(-1,Math.min(1,2*(t[0]*t[2]-t[3]*t[1]))))*k,Math.atan2(2*(t[0]*t[3]+t[1]*t[2]),1-2*(t[2]*t[2]+t[3]*t[3]))*k]}function m(t){var e=t[0]*w,r=t[1]*w,n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}function y(t,e){for(var r=0,n=0,i=t.length;i>n;++n)r+=t[n]*e[n];return r}function b(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function x(t){for(var e=0,r=arguments.length,n=[];++ed;++d){for(e=c[d],r=t[this.scene[e]._name],n=/Click to enter .+ title/.test(r.title)?\"\":r.title,p=0;2>=p;p+=2)this.labelEnable[d+p]=!1,this.labels[d+p]=o(n),this.labelColor[d+p]=s(r.titlefont.color),this.labelFont[d+p]=r.titlefont.family,this.labelSize[d+p]=r.titlefont.size,this.labelPad[d+p]=this.getLabelPad(e,r),this.tickEnable[d+p]=!1,this.tickColor[d+p]=s((r.tickfont||{}).color),this.tickAngle[d+p]=\"auto\"===r.tickangle?0:Math.PI*-r.tickangle/180,this.tickPad[d+p]=this.getTickPad(r),this.tickMarkLength[d+p]=0,this.tickMarkWidth[d+p]=r.tickwidth||0,this.tickMarkColor[d+p]=s(r.tickcolor),this.borderLineEnable[d+p]=!1,this.borderLineColor[d+p]=s(r.linecolor),this.borderLineWidth[d+p]=r.linewidth||0;u=this.hasSharedAxis(r),a=this.hasAxisInDfltPos(e,r)&&!u,l=this.hasAxisInAltrPos(e,r)&&!u,i=r.mirror||!1,f=u?-1!==String(i).indexOf(\"all\"):!!i,h=u?\"allticks\"===i:-1!==String(i).indexOf(\"ticks\"),a?this.labelEnable[d]=!0:l&&(this.labelEnable[d+2]=!0),a?this.tickEnable[d]=r.showticklabels:l&&(this.tickEnable[d+2]=r.showticklabels),(a||f)&&(this.borderLineEnable[d]=r.showline),(l||f)&&(this.borderLineEnable[d+2]=r.showline),(a||h)&&(this.tickMarkLength[d]=this.getTickMarkLength(r)),(l||h)&&(this.tickMarkLength[d+2]=this.getTickMarkLength(r)),this.gridLineEnable[d]=r.showgrid,this.gridLineColor[d]=s(r.gridcolor),this.gridLineWidth[d]=r.gridwidth,this.zeroLineEnable[d]=r.zeroline,this.zeroLineColor[d]=s(r.zerolinecolor),this.zeroLineWidth[d]=r.zerolinewidth}},l.hasSharedAxis=function(t){var e=this.scene,r=a.Plots.getSubplotIds(e.fullLayout,\"gl2d\"),n=a.Axes.findSubplotsWithAxis(r,t);return 0!==n.indexOf(e.id)},l.hasAxisInDfltPos=function(t,e){var r=e.side;return\"xaxis\"===t?\"bottom\"===r:\"yaxis\"===t?\"left\"===r:void 0},l.hasAxisInAltrPos=function(t,e){var r=e.side;return\"xaxis\"===t?\"top\"===r:\"yaxis\"===t?\"right\"===r:void 0},l.getLabelPad=function(t,e){var r=1.5,n=e.titlefont.size,i=e.showticklabels;return\"xaxis\"===t?\"top\"===e.side?-10+n*(r+(i?1:0)):-10+n*(r+(i?.5:0)):\"yaxis\"===t?\"right\"===e.side?10+n*(r+(i?1:.5)):10+n*(r+(i?.5:0)):void 0},l.getTickPad=function(t){return\"outside\"===t.ticks?10+t.ticklen:15},l.getTickMarkLength=function(t){if(!t.ticks)return 0;var e=t.ticklen;return\"inside\"===t.ticks?-e:e},e.exports=i},{\"../../lib/html2unicode\":380,\"../../lib/str2rgbarray\":392,\"../../plotly\":400}],436:[function(t,e,r){\"use strict\";var n=t(\"./scene2d\"),i=t(\"../plots\"),a=t(\"../../constants/xmlns_namespaces\");r.name=\"gl2d\",r.attr=[\"xaxis\",\"yaxis\"],r.idRoot=[\"x\",\"y\"],r.idRegex={x:/^x([2-9]|[1-9][0-9]+)?$/,y:/^y([2-9]|[1-9][0-9]+)?$/},r.attrRegex={x:/^xaxis([2-9]|[1-9][0-9]+)?$/,y:/^yaxis([2-9]|[1-9][0-9]+)?$/},r.attributes=t(\"../cartesian/attributes\"),r.plot=function(t){for(var e=t._fullLayout,r=t._fullData,a=i.getSubplotIds(e,\"gl2d\"),o=0;or;++r){var n=t[r],i=e[r];if(n.length!==i.length)return!0;for(var a=0;ao;++o,--s)for(var l=0;r>l;++l)for(var c=0;4>c;++c){var u=i[4*(r*o+l)+c];i[4*(r*o+l)+c]=i[4*(r*s+l)+c],i[4*(r*s+l)+c]=u}var f=document.createElement(\"canvas\");f.width=r,f.height=n;var h=f.getContext(\"2d\"),d=h.createImageData(r,n);d.data.set(i),h.putImageData(d,0,0);var p;switch(t){case\"jpeg\":p=f.toDataURL(\"image/jpeg\");break;case\"webp\":p=f.toDataURL(\"image/webp\");break;default:p=f.toDataURL(\"image/png\")}return this.staticPlot&&this.container.removeChild(a),p},m.computeTickMarks=function(){this.xaxis._length=this.glplot.viewBox[2]-this.glplot.viewBox[0],this.yaxis._length=this.glplot.viewBox[3]-this.glplot.viewBox[1];for(var t=[s.calcTicks(this.xaxis),s.calcTicks(this.yaxis)],e=0;2>e;++e)for(var r=0;rk;++k)w[k]=Math.min(w[k],a.bounds[k]),w[k+2]=Math.max(w[k+2],a.bounds[k+2])}var A;for(n=0;2>n;++n)w[n]>w[n+2]&&(w[n]=-1,w[n+2]=1),A=this[v[n]],A._length=y.viewBox[n+2]-y.viewBox[n],s.doAutoRange(A);y.ticks=this.computeTickMarks();var M=this.xaxis.range,T=this.yaxis.range;y.dataBox=[M[0],T[0],M[1],T[1]],y.merge(r),o.update(y),this.glplot.draw()},m.draw=function(){if(!this.stopped){requestAnimationFrame(this.redraw);var t=this.glplot,e=this.camera,r=e.mouseListener,n=this.fullLayout;this.cameraChanged();var i=r.x*t.pixelRatio,a=this.canvas.height-t.pixelRatio*r.y;if(e.boxEnabled&&\"zoom\"===n.dragmode)this.selectBox.enabled=!0,this.selectBox.selectBox=[Math.min(e.boxStart[0],e.boxEnd[0]),Math.min(e.boxStart[1],e.boxEnd[1]),Math.max(e.boxStart[0],e.boxEnd[0]),Math.max(e.boxStart[1],e.boxEnd[1])],t.setDirty();else{this.selectBox.enabled=!1;var o=n._size,s=this.xaxis.domain,c=this.yaxis.domain,u=t.pick(i/t.pixelRatio+o.l+s[0]*o.w,a/t.pixelRatio-(o.t+(1-c[1])*o.h));if(u&&n.hovermode){var f=u.object._trace.handlePick(u);if(f&&(!this.lastPickResult||this.lastPickResult.trace!==f.trace||this.lastPickResult.dataCoord[0]!==f.dataCoord[0]||this.lastPickResult.dataCoord[1]!==f.dataCoord[1])){var h=this.lastPickResult=f;this.spikes.update({center:u.dataCoord}),h.screenCoord=[((t.viewBox[2]-t.viewBox[0])*(u.dataCoord[0]-t.dataBox[0])/(t.dataBox[2]-t.dataBox[0])+t.viewBox[0])/t.pixelRatio,(this.canvas.height-(t.viewBox[3]-t.viewBox[1])*(u.dataCoord[1]-t.dataBox[1])/(t.dataBox[3]-t.dataBox[1])-t.viewBox[1])/t.pixelRatio];var d=h.hoverinfo;if(\"all\"!==d){var p=d.split(\"+\");-1===p.indexOf(\"x\")&&(h.traceCoord[0]=void 0),-1===p.indexOf(\"y\")&&(h.traceCoord[1]=void 0),-1===p.indexOf(\"z\")&&(h.traceCoord[2]=void 0),-1===p.indexOf(\"text\")&&(h.textLabel=void 0),-1===p.indexOf(\"name\")&&(h.name=void 0)}l.loneHover({x:h.screenCoord[0],y:h.screenCoord[1],xLabel:this.hoverFormatter(\"xaxis\",h.traceCoord[0]),yLabel:this.hoverFormatter(\"yaxis\",h.traceCoord[1]),zLabel:h.traceCoord[2],text:h.textLabel,name:h.name,color:h.color},{container:this.svgContainer}),this.lastPickResult={dataCoord:u.dataCoord}}}else!u&&this.lastPickResult&&(this.spikes.update({}),this.lastPickResult=null,l.loneUnhover(this.svgContainer))}t.draw()}},m.hoverFormatter=function(t,e){if(void 0!==e){var r=this[t];return s.tickText(r,r.c2l(e),\"hover\").text}}},{\"../../lib/html2unicode\":380,\"../../lib/show_no_webgl_msg\":390,\"../../plots/cartesian/axes\":403,\"../../plots/cartesian/graph_interact\":410,\"./camera\":434,\"./convert\":435,\"gl-plot2d\":165,\"gl-select-box\":195,\"gl-spikes2d\":215}],438:[function(t,e,r){\"use strict\";function n(t,e){t=t||document.body,e=e||{};var r=[.01,1/0];\"distanceLimits\"in e&&(r[0]=e.distanceLimits[0],r[1]=e.distanceLimits[1]),\"zoomMin\"in e&&(r[0]=e.zoomMin),\"zoomMax\"in e&&(r[1]=e.zoomMax);var n=a({center:e.center||[0,0,0],up:e.up||[0,1,0],eye:e.eye||[0,0,10],mode:e.mode||\"orbit\",distanceLimits:r}),l=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,u=t.clientWidth,f=t.clientHeight,h={keyBindingMode:\"rotate\",view:n,element:t,delay:e.delay||16,rotateSpeed:e.rotateSpeed||1,zoomSpeed:e.zoomSpeed||1,translateSpeed:e.translateSpeed||1,flipX:!!e.flipX,flipY:!!e.flipY,modes:n.modes,tick:function(){var e=i(),r=this.delay,a=e-2*r;n.idle(e-r),n.recalcMatrix(a),n.flush(e-(100+2*r));for(var o=!0,s=n.computedMatrix,h=0;16>h;++h)o=o&&l[h]===s[h],l[h]=s[h];var d=t.clientWidth===u&&t.clientHeight===f;return u=t.clientWidth,f=t.clientHeight,o?!d:(c=Math.exp(n.computedRadius[0]),!0)},lookAt:function(t,e,r){n.lookAt(n.lastT(),t,e,r)},rotate:function(t,e,r){n.rotate(n.lastT(),t,e,r)},pan:function(t,e,r){n.pan(n.lastT(),t,e,r)},translate:function(t,e,r){n.translate(n.lastT(),t,e,r)}};Object.defineProperties(h,{matrix:{get:function(){return n.computedMatrix},set:function(t){return n.setMatrix(n.lastT(),t),n.computedMatrix},enumerable:!0},mode:{get:function(){return n.getMode()},set:function(t){var e=n.computedUp.slice(),r=n.computedEye.slice(),a=n.computedCenter.slice();if(n.setMode(t),\"turntable\"===t){var o=i();n._active.lookAt(o,r,a,e),n._active.lookAt(o+500,r,a,[0,0,1]),n._active.flush(o)}return n.getMode()},enumerable:!0},center:{get:function(){return n.computedCenter},set:function(t){return n.lookAt(n.lastT(),null,t),n.computedCenter},enumerable:!0},eye:{get:function(){return n.computedEye},set:function(t){return n.lookAt(n.lastT(),t),n.computedEye},enumerable:!0},up:{get:function(){return n.computedUp},set:function(t){return n.lookAt(n.lastT(),null,null,t),n.computedUp},enumerable:!0},distance:{get:function(){return c},set:function(t){return n.setDistance(n.lastT(),t),t},enumerable:!0},distanceLimits:{get:function(){return n.getDistanceLimits(r)},set:function(t){return n.setDistanceLimits(t),t},enumerable:!0}}),t.addEventListener(\"contextmenu\",function(t){return t.preventDefault(),!1});var d=0,p=0;return o(t,function(e,r,a,o){var s=\"rotate\"===h.keyBindingMode,l=\"pan\"===h.keyBindingMode,u=\"zoom\"===h.keyBindingMode,f=!!o.control,g=!!o.alt,v=!!o.shift,m=!!(1&e),y=!!(2&e),b=!!(4&e),x=1/t.clientHeight,_=x*(r-d),w=x*(a-p),k=h.flipX?1:-1,A=h.flipY?1:-1,M=i(),T=Math.PI*h.rotateSpeed;if((s&&m&&!f&&!g&&!v||m&&!f&&!g&&v)&&n.rotate(M,k*T*_,-A*T*w,0),(l&&m&&!f&&!g&&!v||y||m&&f&&!g&&!v)&&n.pan(M,-h.translateSpeed*_*c,h.translateSpeed*w*c,0),u&&m&&!f&&!g&&!v||b||m&&!f&&g&&!v){var E=-h.zoomSpeed*w/window.innerHeight*(M-n.lastT())*100;n.pan(M,0,0,c*(Math.exp(E)-1))}return d=r,p=a,!0}),s(t,function(t,e){var r=h.flipX?1:-1,a=h.flipY?1:-1,o=i();if(Math.abs(t)>Math.abs(e))n.rotate(o,0,0,-t*r*Math.PI*h.rotateSpeed/window.innerWidth);else{var s=-h.zoomSpeed*a*e/window.innerHeight*(o-n.lastT())/100;n.pan(o,0,0,c*(Math.exp(s)-1))}},!0),h}e.exports=n;var i=t(\"right-now\"),a=t(\"3d-view\"),o=t(\"mouse-change\"),s=t(\"mouse-wheel\")},{\"3d-view\":39,\"mouse-change\":241,\"mouse-wheel\":245,\"right-now\":255}],439:[function(t,e,r){\"use strict\";function n(t,e){for(var r=0;3>r;++r){var n=s[r];e[n]._gd=t}}var i=t(\"./scene\"),a=t(\"../plots\"),o=t(\"../../constants/xmlns_namespaces\"),s=[\"xaxis\",\"yaxis\",\"zaxis\"];r.name=\"gl3d\",r.attr=\"scene\",r.idRoot=\"scene\",r.idRegex=/^scene([2-9]|[1-9][0-9]+)?$/,r.attrRegex=/^scene([2-9]|[1-9][0-9]+)?$/,r.attributes=t(\"./layout/attributes\"),r.layoutAttributes=t(\"./layout/layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout/defaults\"),r.plot=function(t){var e=t._fullLayout,r=t._fullData,o=a.getSubplotIds(e,\"gl3d\");e._paperdiv.style({width:e.width+\"px\",height:e.height+\"px\"}),t._context.setBackground(t,e.paper_bgcolor);for(var s=0;sr;++r){var n=t[c[r]];e.labels[r]=o(n.title),\"titlefont\"in n&&(n.titlefont.color&&(e.labelColor[r]=s(n.titlefont.color)),n.titlefont.family&&(e.labelFont[r]=n.titlefont.family),n.titlefont.size&&(e.labelSize[r]=n.titlefont.size)),\"showline\"in n&&(e.lineEnable[r]=n.showline),\"linecolor\"in n&&(e.lineColor[r]=s(n.linecolor)),\"linewidth\"in n&&(e.lineWidth[r]=n.linewidth),\"showgrid\"in n&&(e.gridEnable[r]=n.showgrid),\"gridcolor\"in n&&(e.gridColor[r]=s(n.gridcolor)),\"gridwidth\"in n&&(e.gridWidth[r]=n.gridwidth),\"log\"===n.type?e.zeroEnable[r]=!1:\"zeroline\"in n&&(e.zeroEnable[r]=n.zeroline),\"zerolinecolor\"in n&&(e.zeroLineColor[r]=s(n.zerolinecolor)),\"zerolinewidth\"in n&&(e.zeroLineWidth[r]=n.zerolinewidth),\"ticks\"in n&&n.ticks?e.lineTickEnable[r]=!0:e.lineTickEnable[r]=!1,\"ticklen\"in n&&(e.lineTickLength[r]=e._defaultLineTickLength[r]=n.ticklen),\"tickcolor\"in n&&(e.lineTickColor[r]=s(n.tickcolor)),\"tickwidth\"in n&&(e.lineTickWidth[r]=n.tickwidth),\"tickangle\"in n&&(e.tickAngle[r]=\"auto\"===n.tickangle?0:Math.PI*-n.tickangle/180),\"showticklabels\"in n&&(e.tickEnable[r]=n.showticklabels),\"tickfont\"in n&&(n.tickfont.color&&(e.tickColor[r]=s(n.tickfont.color)),n.tickfont.family&&(e.tickFont[r]=n.tickfont.family),n.tickfont.size&&(e.tickSize[r]=n.tickfont.size)),\"mirror\"in n?-1!==[\"ticks\",\"all\",\"allticks\"].indexOf(n.mirror)?(e.lineTickMirror[r]=!0,e.lineMirror[r]=!0):n.mirror===!0?(e.lineTickMirror[r]=!1,e.lineMirror[r]=!0):(e.lineTickMirror[r]=!1,e.lineMirror[r]=!1):e.lineMirror[r]=!1,\"showbackground\"in n&&n.showbackground!==!1?(e.backgroundEnable[r]=!0,\n", + "e.backgroundColor[r]=s(n.backgroundcolor)):e.backgroundEnable[r]=!1}},e.exports=i},{\"../../../lib/html2unicode\":380,\"../../../lib/str2rgbarray\":392,arraytools:49}],444:[function(t,e,r){\"use strict\";function n(t,e,r,n){for(var a=r(\"bgcolor\"),l=i.combine(a,n.paper_bgcolor),c=Object.keys(o.camera),u=0;ue;++e){var r=t[o[e]];this.enabled[e]=r.showspikes,this.colors[e]=a(r.spikecolor),this.drawSides[e]=r.spikesides,this.lineWidth[e]=r.spikethickness}},e.exports=i},{\"../../../lib/str2rgbarray\":392}],447:[function(t,e,r){\"use strict\";function n(t){for(var e=new Array(3),r=0;3>r;++r){for(var n=t[r],i=new Array(n.length),a=0;au;++u){var f=i[s[u]];if(f._length=(r[u].hi-r[u].lo)*r[u].pixelsPerDataUnit/t.dataScale[u],Math.abs(f._length)===1/0)c[u]=[];else{f.range[0]=r[u].lo/t.dataScale[u],f.range[1]=r[u].hi/t.dataScale[u],f._m=1/(t.dataScale[u]*r[u].pixelsPerDataUnit),f.range[0]===f.range[1]&&(f.range[0]-=1,f.range[1]+=1);var h=f.tickmode;if(\"auto\"===f.tickmode){f.tickmode=\"linear\";var d=f.nticks||a.Lib.constrain(f._length/40,4,9);a.Axes.autoTicks(f,Math.abs(f.range[1]-f.range[0])/d)}for(var p=a.Axes.calcTicks(f),g=0;gu;++u){l[u]=.5*(t.glplot.bounds[0][u]+t.glplot.bounds[1][u]);for(var g=0;2>g;++g)e.bounds[g][u]=t.glplot.bounds[g][u]}t.contourLevels=n(c)}e.exports=i;var a=t(\"../../../plotly\"),o=t(\"../../../lib/html2unicode\"),s=[\"xaxis\",\"yaxis\",\"zaxis\"],l=[0,0,0]},{\"../../../lib/html2unicode\":380,\"../../../plotly\":400}],448:[function(t,e,r){\"use strict\";function n(t,e){var r,n,i=[0,0,0,0];for(r=0;4>r;++r)for(n=0;4>n;++n)i[n]+=t[4*r+n]*e[r];return i}function i(t,e){var r=n(t.projection,n(t.view,n(t.model,[e[0],e[1],e[2],1])));return r}e.exports=i},{}],449:[function(t,e,r){\"use strict\";function n(t){function e(e,r){if(\"string\"==typeof r)return r;var n=t.fullSceneLayout[e];return g.tickText(n,n.c2l(r),\"hover\").text}var r,n=t.svgContainer,i=t.container.getBoundingClientRect(),a=i.width,o=i.height;n.setAttributeNS(null,\"viewBox\",\"0 0 \"+a+\" \"+o),n.setAttributeNS(null,\"width\",a),n.setAttributeNS(null,\"height\",o),A(t),t.glplot.axes.update(t.axesOptions);for(var s=Object.keys(t.traces),l=null,c=t.glplot.selection,u=0;ua;++a)l=u[T[a]],_(l);t?Array.isArray(t)||(t=[t]):t=[];var h=[[1/0,1/0,1/0],[-(1/0),-(1/0),-(1/0)]];for(a=0;ao;++o)h[0][o]>h[1][o]?d[o]=1:h[1][o]===h[0][o]?d[o]=1:d[o]=1/(h[1][o]-h[0][o]);for(this.dataScale=d,a=0;aa;++a){if(l=u[T[a]],c=l.type,c in x?(x[c].acc*=d[a],x[c].count+=1):x[c]={acc:d[a],count:1},l.autorange){for(y[0][a]=1/0,y[1][a]=-(1/0),o=0;oy[1][a])y[0][a]=-1,y[1][a]=1;else{var k=y[1][a]-y[0][a];y[0][a]-=k/32,y[1][a]+=k/32}}else{var A=u[T[a]].range;y[0][a]=A[0],y[1][a]=A[1]}y[0][a]===y[1][a]&&(y[0][a]-=1,y[1][a]+=1),b[a]=y[1][a]-y[0][a],this.glplot.bounds[0][a]=y[0][a]*d[a],this.glplot.bounds[1][a]=y[1][a]*d[a]}var M=[1,1,1];for(a=0;3>a;++a){l=u[T[a]],c=l.type;var E=x[c];M[a]=Math.pow(E.acc,1/E.count)/d[a]}var L,S=4;if(\"auto\"===u.aspectmode)L=Math.max.apply(null,M)/Math.min.apply(null,M)<=S?M:[1,1,1];else if(\"cube\"===u.aspectmode)L=[1,1,1];else if(\"data\"===u.aspectmode)L=M;else{if(\"manual\"!==u.aspectmode)throw new Error(\"scene.js aspectRatio was not one of the enumerated types\");var C=u.aspectratio;L=[C.x,C.y,C.z]}u.aspectratio.x=f.aspectratio.x=L[0],u.aspectratio.y=f.aspectratio.y=L[1],u.aspectratio.z=f.aspectratio.z=L[2],this.glplot.aspect=L;var z=u.domain||null,P=e._size||null;if(z&&P){var R=this.container.style;R.position=\"absolute\",R.left=P.l+z.x[0]*P.w+\"px\",R.top=P.t+(1-z.y[1])*P.h+\"px\",R.width=P.w*(z.x[1]-z.x[0])+\"px\",R.height=P.h*(z.y[1]-z.y[0])+\"px\"}this.glplot.redraw()}},M.destroy=function(){this.glplot.dispose(),this.container.parentNode.removeChild(this.container),this.glplot=null},M.setCameraToDefault=function(){this.setCamera({eye:{x:1.25,y:1.25,z:1.25},center:{x:0,y:0,z:0},up:{x:0,y:0,z:1}})},M.getCamera=function(){return this.glplot.camera.view.recalcMatrix(this.camera.view.lastT()),c(this.glplot.camera)},M.setCamera=function(t){var e={};e[this.id]=t,this.glplot.camera.lookAt.apply(this,l(t)),this.graphDiv.emit(\"plotly_relayout\",e)},M.saveCamera=function(t){function e(t,e,r,n){var i=[\"up\",\"center\",\"eye\"],a=[\"x\",\"y\",\"z\"];return e[i[r]]&&t[i[r]][a[n]]===e[i[r]][a[n]]}var r=this.getCamera(),n=d.nestedProperty(t,this.id+\".camera\"),i=n.get(),a=!1;if(void 0===i)a=!0;else for(var o=0;3>o;o++)for(var s=0;3>s;s++)if(!e(r,i,o,s)){a=!0;break}return a&&n.set(r),a},M.updateFx=function(t,e){var r=this.camera;r&&(\"orbit\"===t?(r.mode=\"orbit\",r.keyBindingMode=\"rotate\"):\"turntable\"===t?(r.up=[0,0,1],r.mode=\"turntable\",r.keyBindingMode=\"rotate\"):r.keyBindingMode=t),this.fullSceneLayout.hovermode=e},M.toImage=function(t){t||(t=\"png\"),this.staticMode&&this.container.appendChild(u),this.glplot.redraw();var e=this.glplot.gl,r=e.drawingBufferWidth,n=e.drawingBufferHeight;e.bindFramebuffer(e.FRAMEBUFFER,null);var i=new Uint8Array(r*n*4);e.readPixels(0,0,r,n,e.RGBA,e.UNSIGNED_BYTE,i);for(var a=0,o=n-1;o>a;++a,--o)for(var s=0;r>s;++s)for(var l=0;4>l;++l){var c=i[4*(r*a+s)+l];i[4*(r*a+s)+l]=i[4*(r*o+s)+l],i[4*(r*o+s)+l]=c}var f=document.createElement(\"canvas\");f.width=r,f.height=n;var h=f.getContext(\"2d\"),d=h.createImageData(r,n);d.data.set(i),h.putImageData(d,0,0);var p;switch(t){case\"jpeg\":p=f.toDataURL(\"image/jpeg\");break;case\"webp\":p=f.toDataURL(\"image/webp\");break;default:p=f.toDataURL(\"image/png\")}return this.staticMode&&this.container.removeChild(u),p},e.exports=a},{\"../../lib\":381,\"../../lib/show_no_webgl_msg\":390,\"../../lib/str2rgbarray\":392,\"../../plots/cartesian/axes\":403,\"../../plots/cartesian/graph_interact\":410,\"../../plots/plots\":452,\"./camera\":438,\"./layout/convert\":443,\"./layout/spikes\":446,\"./layout/tick_marks\":447,\"./project\":448,\"./set_convert\":450,\"gl-plot3d\":183}],450:[function(t,e,r){\"use strict\";var n=t(\"../cartesian/axes\"),i=function(){};e.exports=function(t){n.setConvert(t),t.setScale=i}},{\"../cartesian/axes\":403}],451:[function(t,e,r){\"use strict\";var n=t(\"../plotly\"),i=t(\"./font_attributes\"),a=t(\"../components/color/attributes\"),o=n.Lib.extendFlat;e.exports={font:{family:o({},i.family,{dflt:'\"Open Sans\", verdana, arial, sans-serif'}),size:o({},i.size,{dflt:12}),color:o({},i.color,{dflt:a.defaultLine})},title:{valType:\"string\",dflt:\"Click to enter Plot title\"},titlefont:o({},i,{}),autosize:{valType:\"enumerated\",values:[!0,!1,\"initial\"]},width:{valType:\"number\",min:10,dflt:700},height:{valType:\"number\",min:10,dflt:450},margin:{l:{valType:\"number\",min:0,dflt:80},r:{valType:\"number\",min:0,dflt:80},t:{valType:\"number\",min:0,dflt:100},b:{valType:\"number\",min:0,dflt:80},pad:{valType:\"number\",min:0,dflt:0},autoexpand:{valType:\"boolean\",dflt:!0}},paper_bgcolor:{valType:\"color\",dflt:a.background},plot_bgcolor:{valType:\"color\",dflt:a.background},separators:{valType:\"string\",dflt:\".,\"},hidesources:{valType:\"boolean\",dflt:!1},smith:{valType:\"enumerated\",values:[!1],dflt:!1},showlegend:{valType:\"boolean\"},_composedModules:{\"*\":\"Fx\"},_nestedModules:{xaxis:\"Axes\",yaxis:\"Axes\",scene:\"gl3d\",geo:\"geo\",legend:\"Legend\",annotations:\"Annotations\",shapes:\"Shapes\",images:\"Images\",ternary:\"ternary\"}}},{\"../components/color/attributes\":302,\"../plotly\":400,\"./font_attributes\":421}],452:[function(t,e,r){\"use strict\";function n(t){return\"object\"==typeof t&&(t=t.type),t}function i(t,e){e.text(\"\");var r=e.append(\"a\").attr({\"xlink:xlink:href\":\"#\",\"class\":\"link--impt link--embedview\",\"font-weight\":\"bold\"}).text(t._context.linkText+\" \"+String.fromCharCode(187));if(t._context.sendData)r.on(\"click\",function(){f.sendDataToCloud(t)});else{var n=window.location.pathname.split(\"/\"),i=window.location.search;r.attr({\"xlink:xlink:show\":\"new\",\"xlink:xlink:href\":\"/\"+n[2].split(\".\")[0]+\"/\"+n[1]+i})}}function a(t,e){for(var r,n=Object.keys(e),i=0;i=e.width-20?(a[\"text-anchor\"]=\"start\",a.x=5):(a[\"text-anchor\"]=\"end\",a.x=e._paper.attr(\"width\")-7),r.attr(a);var s=r.select(\".js-link-to-tool\"),l=r.select(\".js-link-spacer\"),c=r.select(\".js-sourcelinks\");t._context.showSources&&t._context.showSources(t),t._context.showLink&&i(t,s),l.text(s.text()&&c.text()?\" - \":\"\")},f.sendDataToCloud=function(t){t.emit(\"plotly_beforeexport\");var e=window.PLOTLYENV&&window.PLOTLYENV.BASE_URL||\"https://plot.ly\",r=o.select(t).append(\"div\").attr(\"id\",\"hiddenform\").style(\"display\",\"none\"),n=r.append(\"form\").attr({action:e+\"/external\",method:\"post\",target:\"_blank\"}),i=n.append(\"input\").attr({type:\"text\",name:\"data\"});return i.node().value=f.graphJson(t,!1,\"keepdata\"),n.node().submit(),r.remove(),t.emit(\"plotly_afterexport\"),!1},f.supplyDefaults=function(t){var e,r,n=t._fullLayout||{},i=t._fullLayout={},o=t.layout||{},s=t._fullData||[],u=t._fullData=[],h=t.data||[],d=i._modules=[],p=i._basePlotModules=[];for(f.supplyLayoutGlobalDefaults(o,i),i._dataLength=h.length,e=0;ea&&(e=(r-1)/(i.l+i.r),i.l=Math.floor(e*i.l),i.r=Math.floor(e*i.r)),0>o&&(e=(n-1)/(i.t+i.b),i.t=Math.floor(e*i.t),i.b=Math.floor(e*i.b))}},f.autoMargin=function(t,e,r){var n=t._fullLayout;if(n._pushmargin||(n._pushmargin={}),n.margin.autoexpand!==!1){if(r){var i=void 0===r.pad?12:r.pad;r.l+r.r>.5*n.width&&(r.l=r.r=0),r.b+r.t>.5*n.height&&(r.b=r.t=0),n._pushmargin[e]={l:{val:r.x,size:r.l+i},r:{val:r.x,size:r.r+i},b:{val:r.y,size:r.b+i},t:{val:r.y,size:r.t+i}}}else delete n._pushmargin[e];t._replotting||f.doAutoMargin(t)}},f.doAutoMargin=function(t){var e=t._fullLayout;e._size||(e._size={}),e._pushmargin||(e._pushmargin={});var r=e._size,n=JSON.stringify(r),i=Math.max(e.margin.l||0,0),a=Math.max(e.margin.r||0,0),o=Math.max(e.margin.t||0,0),c=Math.max(e.margin.b||0,0),u=e._pushmargin;return e.margin.autoexpand!==!1&&(u.base={l:{val:0,size:i},r:{val:1,size:a},t:{val:1,size:o},b:{val:0,size:c}},Object.keys(u).forEach(function(t){var r=u[t].l||{},n=u[t].b||{},l=r.val,f=r.size,h=n.val,d=n.size;Object.keys(u).forEach(function(t){if(s(f)&&u[t].r){var r=u[t].r.val,n=u[t].r.size;if(r>l){var p=(f*r+(n-e.width)*l)/(r-l),g=(n*(1-l)+(f-e.width)*(1-r))/(r-l);p>=0&&g>=0&&p+g>i+a&&(i=p,a=g)}}if(s(d)&&u[t].t){var v=u[t].t.val,m=u[t].t.size;if(v>h){var y=(d*v+(m-e.height)*h)/(v-h),b=(m*(1-h)+(d-e.height)*(1-v))/(v-h);y>=0&&b>=0&&y+b>c+o&&(c=y,o=b)}}})})),r.l=Math.round(i),r.r=Math.round(a),r.t=Math.round(o),r.b=Math.round(c),r.p=Math.round(e.margin.pad),r.w=Math.round(e.width)-r.l-r.r,r.h=Math.round(e.height)-r.t-r.b,t._replotting||\"{}\"===n||n===JSON.stringify(e._size)?void 0:l.plot(t)},f.graphJson=function(t,e,r,n,i){function a(t){if(\"function\"==typeof t)return null;if(c.isPlainObject(t)){var e,n,i={};for(e in t)if(\"function\"!=typeof t[e]&&-1===[\"_\",\"[\"].indexOf(e.charAt(0))){if(\"keepdata\"===r){if(\"src\"===e.substr(e.length-3))continue}else if(\"keepstream\"===r){if(n=t[e+\"src\"],\"string\"==typeof n&&n.indexOf(\":\")>0&&!c.isPlainObject(t.stream))continue}else if(\"keepall\"!==r&&(n=t[e+\"src\"],\"string\"==typeof n&&n.indexOf(\":\")>0))continue;i[e]=a(t[e])}return i}return Array.isArray(t)?t.map(a):t&&t.getTime?c.ms2DateTime(t):t}(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&f.supplyDefaults(t);var o=i?t._fullData:t.data,s=i?t._fullLayout:t.layout,l={data:(o||[]).map(function(t){var r=a(t);return e&&delete r.fit,r})};return e||(l.layout=a(s)),t.framework&&t.framework.isPolar&&(l=t.framework.getConfig()),\"object\"===n?l:JSON.stringify(l)}},{\"../components/color\":303,\"../lib\":381,\"../plotly\":400,\"./attributes\":401,\"./font_attributes\":421,\"./layout_attributes\":451,d3:113,\"fast-isnumeric\":117}],453:[function(t,e,r){\"use strict\";var n=t(\"../../traces/scatter/attributes\"),i=n.marker;e.exports={r:n.r,t:n.t,marker:{color:i.color,size:i.size,symbol:i.symbol,opacity:i.opacity}}},{\"../../traces/scatter/attributes\":554}],454:[function(t,e,r){\"use strict\";function n(t,e){var r={showline:{valType:\"boolean\"},showticklabels:{valType:\"boolean\"},tickorientation:{valType:\"enumerated\",values:[\"horizontal\",\"vertical\"]},ticklen:{valType:\"number\",min:0},tickcolor:{valType:\"color\"},ticksuffix:{valType:\"string\"},endpadding:{valType:\"number\"},visible:{valType:\"boolean\"}};return a({},e,r)}var i=t(\"../cartesian/layout_attributes\"),a=t(\"../../lib/extend\").extendFlat,o=a({},i.domain,{});e.exports={radialaxis:n(\"radial\",{range:{valType:\"info_array\",items:[{valType:\"number\"},{valType:\"number\"}]},domain:o,orientation:{valType:\"number\"}}),angularaxis:n(\"angular\",{range:{valType:\"info_array\",items:[{valType:\"number\",dflt:0},{valType:\"number\",dflt:360}]},domain:o}),layout:{direction:{valType:\"enumerated\",values:[\"clockwise\",\"counterclockwise\"]},orientation:{valType:\"angle\"}}}},{\"../../lib/extend\":376,\"../cartesian/layout_attributes\":412}],455:[function(t,e,r){var n=t(\"../../plotly\"),i=t(\"d3\"),a=e.exports={version:\"0.2.2\",manager:t(\"./micropolar_manager\")},o=n.Lib.extendDeepAll;a.Axis=function(){function t(t){r=t||r;var c=l.data,f=l.layout;return(\"string\"==typeof r||r.nodeName)&&(r=i.select(r)),r.datum(c).each(function(t,r){function l(t,e){return s(t)%360+f.orientation}var c=t.slice();u={data:a.util.cloneJson(c),layout:a.util.cloneJson(f)};var h=0;c.forEach(function(t,e){t.color||(t.color=f.defaultColorRange[h],h=(h+1)%f.defaultColorRange.length),t.strokeColor||(t.strokeColor=\"LinePlot\"===t.geometry?t.color:i.rgb(t.color).darker().toString()),u.data[e].color=t.color,u.data[e].strokeColor=t.strokeColor,u.data[e].strokeDash=t.strokeDash,u.data[e].strokeSize=t.strokeSize});var d=c.filter(function(t,e){var r=t.visible;return\"undefined\"==typeof r||r===!0}),p=!1,g=d.map(function(t,e){return p=p||\"undefined\"!=typeof t.groupId,t});if(p){var v=i.nest().key(function(t,e){return\"undefined\"!=typeof t.groupId?t.groupId:\"unstacked\"}).entries(g),m=[],y=v.map(function(t,e){if(\"unstacked\"===t.key)return t.values;var r=t.values[0].r.map(function(t,e){return 0});return t.values.forEach(function(t,e,n){t.yStack=[r],m.push(r),r=a.util.sumArrays(t.r,r)}),t.values});d=i.merge(y)}d.forEach(function(t,e){t.t=Array.isArray(t.t[0])?t.t:[t.t],t.r=Array.isArray(t.r[0])?t.r:[t.r]});var b=Math.min(f.width-f.margin.left-f.margin.right,f.height-f.margin.top-f.margin.bottom)/2;b=Math.max(10,b);var x,_=[f.margin.left+b,f.margin.top+b];if(p){var w=i.max(a.util.sumArrays(a.util.arrayLast(d).r[0],a.util.arrayLast(m)));x=[0,w]}else x=i.extent(a.util.flattenArray(d.map(function(t,e){return t.r})));f.radialAxis.domain!=a.DATAEXTENT&&(x[0]=0),n=i.scale.linear().domain(f.radialAxis.domain!=a.DATAEXTENT&&f.radialAxis.domain?f.radialAxis.domain:x).range([0,b]),u.layout.radialAxis.domain=n.domain();var k,A=a.util.flattenArray(d.map(function(t,e){return t.t})),M=\"string\"==typeof A[0];M&&(A=a.util.deduplicate(A),k=A.slice(),A=i.range(A.length),d=d.map(function(t,e){var r=t;return t.t=[A],p&&(r.yStack=t.yStack),r}));var T=d.filter(function(t,e){return\"LinePlot\"===t.geometry||\"DotPlot\"===t.geometry}).length===d.length,E=null===f.needsEndSpacing?M||!T:f.needsEndSpacing,L=f.angularAxis.domain&&f.angularAxis.domain!=a.DATAEXTENT&&!M&&f.angularAxis.domain[0]>=0,S=L?f.angularAxis.domain:i.extent(A),C=Math.abs(A[1]-A[0]);T&&!M&&(C=0);var z=S.slice();E&&M&&(z[1]+=C);var P=f.angularAxis.ticksCount||4;P>8&&(P=P/(P/8)+P%8),f.angularAxis.ticksStep&&(P=(z[1]-z[0])/P);var R=f.angularAxis.ticksStep||(z[1]-z[0])/(P*(f.minorTicks+1));k&&(R=Math.max(Math.round(R),1)),z[2]||(z[2]=R);var O=i.range.apply(this,z);if(O=O.map(function(t,e){return parseFloat(t.toPrecision(12))}),s=i.scale.linear().domain(z.slice(0,2)).range(\"clockwise\"===f.direction?[0,360]:[360,0]),u.layout.angularAxis.domain=s.domain(),u.layout.angularAxis.endPadding=E?C:0,e=i.select(this).select(\"svg.chart-root\"),\"undefined\"==typeof e||e.empty()){var I=\"' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '\",N=(new DOMParser).parseFromString(I,\"application/xml\"),j=this.appendChild(this.ownerDocument.importNode(N.documentElement,!0));e=i.select(j)}e.select(\".guides-group\").style({\"pointer-events\":\"none\"}),e.select(\".angular.axis-group\").style({\"pointer-events\":\"none\"}),e.select(\".radial.axis-group\").style({\"pointer-events\":\"none\"});var F,D=e.select(\".chart-group\"),B={fill:\"none\",stroke:f.tickColor},U={\"font-size\":f.font.size,\"font-family\":f.font.family,fill:f.font.color,\"text-shadow\":[\"-1px 0px\",\"1px -1px\",\"-1px 1px\",\"1px 1px\"].map(function(t,e){\n", + "return\" \"+t+\" 0 \"+f.font.outlineColor}).join(\",\")};if(f.showLegend){F=e.select(\".legend-group\").attr({transform:\"translate(\"+[b,f.margin.top]+\")\"}).style({display:\"block\"});var V=d.map(function(t,e){var r=a.util.cloneJson(t);return r.symbol=\"DotPlot\"===t.geometry?t.dotType||\"circle\":\"LinePlot\"!=t.geometry?\"square\":\"line\",r.visibleInLegend=\"undefined\"==typeof t.visibleInLegend||t.visibleInLegend,r.color=\"LinePlot\"===t.geometry?t.strokeColor:t.color,r});a.Legend().config({data:d.map(function(t,e){return t.name||\"Element\"+e}),legendConfig:o({},a.Legend.defaultConfig().legendConfig,{container:F,elements:V,reverseOrder:f.legend.reverseOrder})})();var q=F.node().getBBox();b=Math.min(f.width-q.width-f.margin.left-f.margin.right,f.height-f.margin.top-f.margin.bottom)/2,b=Math.max(10,b),_=[f.margin.left+b,f.margin.top+b],n.range([0,b]),u.layout.radialAxis.domain=n.domain(),F.attr(\"transform\",\"translate(\"+[_[0]+b,_[1]-b]+\")\")}else F=e.select(\".legend-group\").style({display:\"none\"});e.attr({width:f.width,height:f.height}).style({opacity:f.opacity}),D.attr(\"transform\",\"translate(\"+_+\")\").style({cursor:\"crosshair\"});var H=[(f.width-(f.margin.left+f.margin.right+2*b+(q?q.width:0)))/2,(f.height-(f.margin.top+f.margin.bottom+2*b))/2];if(H[0]=Math.max(0,H[0]),H[1]=Math.max(0,H[1]),e.select(\".outer-group\").attr(\"transform\",\"translate(\"+H+\")\"),f.title){var G=e.select(\"g.title-group text\").style(U).text(f.title),Y=G.node().getBBox();G.attr({x:_[0]-Y.width/2,y:_[1]-b-20})}var X=e.select(\".radial.axis-group\");if(f.radialAxis.gridLinesVisible){var W=X.selectAll(\"circle.grid-circle\").data(n.ticks(5));W.enter().append(\"circle\").attr({\"class\":\"grid-circle\"}).style(B),W.attr(\"r\",n),W.exit().remove()}X.select(\"circle.outside-circle\").attr({r:b}).style(B);var Z=e.select(\"circle.background-circle\").attr({r:b}).style({fill:f.backgroundColor,stroke:f.stroke});if(f.radialAxis.visible){var K=i.svg.axis().scale(n).ticks(5).tickSize(5);X.call(K).attr({transform:\"rotate(\"+f.radialAxis.orientation+\")\"}),X.selectAll(\".domain\").style(B),X.selectAll(\"g>text\").text(function(t,e){return this.textContent+f.radialAxis.ticksSuffix}).style(U).style({\"text-anchor\":\"start\"}).attr({x:0,y:0,dx:0,dy:0,transform:function(t,e){return\"horizontal\"===f.radialAxis.tickOrientation?\"rotate(\"+-f.radialAxis.orientation+\") translate(\"+[0,U[\"font-size\"]]+\")\":\"translate(\"+[0,U[\"font-size\"]]+\")\"}}),X.selectAll(\"g>line\").style({stroke:\"black\"})}var $=e.select(\".angular.axis-group\").selectAll(\"g.angular-tick\").data(O),Q=$.enter().append(\"g\").classed(\"angular-tick\",!0);$.attr({transform:function(t,e){return\"rotate(\"+l(t,e)+\")\"}}).style({display:f.angularAxis.visible?\"block\":\"none\"}),$.exit().remove(),Q.append(\"line\").classed(\"grid-line\",!0).classed(\"major\",function(t,e){return e%(f.minorTicks+1)==0}).classed(\"minor\",function(t,e){return!(e%(f.minorTicks+1)==0)}).style(B),Q.selectAll(\".minor\").style({stroke:f.minorTickColor}),$.select(\"line.grid-line\").attr({x1:f.tickLength?b-f.tickLength:0,x2:b}).style({display:f.angularAxis.gridLinesVisible?\"block\":\"none\"}),Q.append(\"text\").classed(\"axis-text\",!0).style(U);var J=$.select(\"text.axis-text\").attr({x:b+f.labelOffset,dy:\".35em\",transform:function(t,e){var r=l(t,e),n=b+f.labelOffset,i=f.angularAxis.tickOrientation;return\"horizontal\"==i?\"rotate(\"+-r+\" \"+n+\" 0)\":\"radial\"==i?270>r&&r>90?\"rotate(180 \"+n+\" 0)\":null:\"rotate(\"+(180>=r&&r>0?-90:90)+\" \"+n+\" 0)\"}}).style({\"text-anchor\":\"middle\",display:f.angularAxis.labelsVisible?\"block\":\"none\"}).text(function(t,e){return e%(f.minorTicks+1)!=0?\"\":k?k[t]+f.angularAxis.ticksSuffix:t+f.angularAxis.ticksSuffix}).style(U);f.angularAxis.rewriteTicks&&J.text(function(t,e){return e%(f.minorTicks+1)!=0?\"\":f.angularAxis.rewriteTicks(this.textContent,e)});var tt=i.max(D.selectAll(\".angular-tick text\")[0].map(function(t,e){return t.getCTM().e+t.getBBox().width}));F.attr({transform:\"translate(\"+[b+tt,f.margin.top]+\")\"});var et=e.select(\"g.geometry-group\").selectAll(\"g\").size()>0,rt=e.select(\"g.geometry-group\").selectAll(\"g.geometry\").data(d);if(rt.enter().append(\"g\").attr({\"class\":function(t,e){return\"geometry geometry\"+e}}),rt.exit().remove(),d[0]||et){var nt=[];d.forEach(function(t,e){var r={};r.radialScale=n,r.angularScale=s,r.container=rt.filter(function(t,r){return r==e}),r.geometry=t.geometry,r.orientation=f.orientation,r.direction=f.direction,r.index=e,nt.push({data:t,geometryConfig:r})});var it=i.nest().key(function(t,e){return\"undefined\"!=typeof t.data.groupId||\"unstacked\"}).entries(nt),at=[];it.forEach(function(t,e){\"unstacked\"===t.key?at=at.concat(t.values.map(function(t,e){return[t]})):at.push(t.values)}),at.forEach(function(t,e){var r;r=Array.isArray(t)?t[0].geometryConfig.geometry:t.geometryConfig.geometry;var n=t.map(function(t,e){return o(a[r].defaultConfig(),t)});a[r]().config(n)()})}var ot,st,lt=e.select(\".guides-group\"),ct=e.select(\".tooltips-group\"),ut=a.tooltipPanel().config({container:ct,fontSize:8})(),ft=a.tooltipPanel().config({container:ct,fontSize:8})(),ht=a.tooltipPanel().config({container:ct,hasTick:!0})();if(!M){var dt=lt.select(\"line\").attr({x1:0,y1:0,y2:0}).style({stroke:\"grey\",\"pointer-events\":\"none\"});D.on(\"mousemove.angular-guide\",function(t,e){var r=a.util.getMousePos(Z).angle;dt.attr({x2:-b,transform:\"rotate(\"+r+\")\"}).style({opacity:.5});var n=(r+180+360-f.orientation)%360;ot=s.invert(n);var i=a.util.convertToCartesian(b+12,r+180);ut.text(a.util.round(ot)).move([i[0]+_[0],i[1]+_[1]])}).on(\"mouseout.angular-guide\",function(t,e){lt.select(\"line\").style({opacity:0})})}var pt=lt.select(\"circle\").style({stroke:\"grey\",fill:\"none\"});D.on(\"mousemove.radial-guide\",function(t,e){var r=a.util.getMousePos(Z).radius;pt.attr({r:r}).style({opacity:.5}),st=n.invert(a.util.getMousePos(Z).radius);var i=a.util.convertToCartesian(r,f.radialAxis.orientation);ft.text(a.util.round(st)).move([i[0]+_[0],i[1]+_[1]])}).on(\"mouseout.radial-guide\",function(t,e){pt.style({opacity:0}),ht.hide(),ut.hide(),ft.hide()}),e.selectAll(\".geometry-group .mark\").on(\"mouseover.tooltip\",function(t,r){var n=i.select(this),o=n.style(\"fill\"),s=\"black\",l=n.style(\"opacity\")||1;if(n.attr({\"data-opacity\":l}),\"none\"!=o){n.attr({\"data-fill\":o}),s=i.hsl(o).darker().toString(),n.style({fill:s,opacity:1});var c={t:a.util.round(t[0]),r:a.util.round(t[1])};M&&(c.t=k[t[0]]);var u=\"t: \"+c.t+\", r: \"+c.r,f=this.getBoundingClientRect(),h=e.node().getBoundingClientRect(),d=[f.left+f.width/2-H[0]-h.left,f.top+f.height/2-H[1]-h.top];ht.config({color:s}).text(u),ht.move(d)}else o=n.style(\"stroke\"),n.attr({\"data-stroke\":o}),s=i.hsl(o).darker().toString(),n.style({stroke:s,opacity:1})}).on(\"mousemove.tooltip\",function(t,e){return 0!=i.event.which?!1:void(i.select(this).attr(\"data-fill\")&&ht.show())}).on(\"mouseout.tooltip\",function(t,e){ht.hide();var r=i.select(this),n=r.attr(\"data-fill\");n?r.style({fill:n,opacity:r.attr(\"data-opacity\")}):r.style({stroke:r.attr(\"data-stroke\"),opacity:r.attr(\"data-opacity\")})})}),h}var e,r,n,s,l={data:[],layout:{}},c={},u={},f=i.dispatch(\"hover\"),h={};return h.render=function(e){return t(e),this},h.config=function(t){if(!arguments.length)return l;var e=a.util.cloneJson(t);return e.data.forEach(function(t,e){l.data[e]||(l.data[e]={}),o(l.data[e],a.Axis.defaultConfig().data[0]),o(l.data[e],t)}),o(l.layout,a.Axis.defaultConfig().layout),o(l.layout,e.layout),this},h.getLiveConfig=function(){return u},h.getinputConfig=function(){return c},h.radialScale=function(t){return n},h.angularScale=function(t){return s},h.svg=function(){return e},i.rebind(h,f,\"on\"),h},a.Axis.defaultConfig=function(t,e){var r={data:[{t:[1,2,3,4],r:[10,11,12,13],name:\"Line1\",geometry:\"LinePlot\",color:null,strokeDash:\"solid\",strokeColor:null,strokeSize:\"1\",visibleInLegend:!0,opacity:1}],layout:{defaultColorRange:i.scale.category10().range(),title:null,height:450,width:500,margin:{top:40,right:40,bottom:40,left:40},font:{size:12,color:\"gray\",outlineColor:\"white\",family:\"Tahoma, sans-serif\"},direction:\"clockwise\",orientation:0,labelOffset:10,radialAxis:{domain:null,orientation:-45,ticksSuffix:\"\",visible:!0,gridLinesVisible:!0,tickOrientation:\"horizontal\",rewriteTicks:null},angularAxis:{domain:[0,360],ticksSuffix:\"\",visible:!0,gridLinesVisible:!0,labelsVisible:!0,tickOrientation:\"horizontal\",rewriteTicks:null,ticksCount:null,ticksStep:null},minorTicks:0,tickLength:null,tickColor:\"silver\",minorTickColor:\"#eee\",backgroundColor:\"none\",needsEndSpacing:null,showLegend:!0,legend:{reverseOrder:!1},opacity:1}};return r},a.util={},a.DATAEXTENT=\"dataExtent\",a.AREA=\"AreaChart\",a.LINE=\"LinePlot\",a.DOT=\"DotPlot\",a.BAR=\"BarChart\",a.util._override=function(t,e){for(var r in t)r in e&&(e[r]=t[r])},a.util._extend=function(t,e){for(var r in t)e[r]=t[r]},a.util._rndSnd=function(){return 2*Math.random()-1+(2*Math.random()-1)+(2*Math.random()-1)},a.util.dataFromEquation2=function(t,e){var r=e||6,n=i.range(0,360+r,r).map(function(e,r){var n=e*Math.PI/180,i=t(n);return[e,i]});return n},a.util.dataFromEquation=function(t,e,r){var n=e||6,a=[],o=[];i.range(0,360+n,n).forEach(function(e,r){var n=e*Math.PI/180,i=t(n);a.push(e),o.push(i)});var s={t:a,r:o};return r&&(s.name=r),s},a.util.ensureArray=function(t,e){if(\"undefined\"==typeof t)return null;var r=[].concat(t);return i.range(e).map(function(t,e){return r[e]||r[0]})},a.util.fillArrays=function(t,e,r){return e.forEach(function(e,n){t[e]=a.util.ensureArray(t[e],r)}),t},a.util.cloneJson=function(t){return JSON.parse(JSON.stringify(t))},a.util.validateKeys=function(t,e){\"string\"==typeof e&&(e=e.split(\".\"));var r=e.shift();return t[r]&&(!e.length||objHasKeys(t[r],e))},a.util.sumArrays=function(t,e){return i.zip(t,e).map(function(t,e){return i.sum(t)})},a.util.arrayLast=function(t){return t[t.length-1]},a.util.arrayEqual=function(t,e){for(var r=Math.max(t.length,e.length,1);r-- >=0&&t[r]===e[r];);return-2===r},a.util.flattenArray=function(t){for(var e=[];!a.util.arrayEqual(e,t);)e=t,t=[].concat.apply([],t);return t},a.util.deduplicate=function(t){return t.filter(function(t,e,r){return r.indexOf(t)==e})},a.util.convertToCartesian=function(t,e){var r=e*Math.PI/180,n=t*Math.cos(r),i=t*Math.sin(r);return[n,i]},a.util.round=function(t,e){var r=e||2,n=Math.pow(10,r);return Math.round(t*n)/n},a.util.getMousePos=function(t){var e=i.mouse(t.node()),r=e[0],n=e[1],a={};return a.x=r,a.y=n,a.pos=e,a.angle=180*(Math.atan2(n,r)+Math.PI)/Math.PI,a.radius=Math.sqrt(r*r+n*n),a},a.util.duplicatesCount=function(t){for(var e,r={},n={},i=0,a=t.length;a>i;i++)e=t[i],e in r?(r[e]++,n[e]=r[e]):r[e]=1;return n},a.util.duplicates=function(t){return Object.keys(a.util.duplicatesCount(t))},a.util.translator=function(t,e,r,n){if(n){var i=r.slice();r=e,e=i}var a=e.reduce(function(t,e){return\"undefined\"!=typeof t?t[e]:void 0},t);\"undefined\"!=typeof a&&(e.reduce(function(t,r,n){return\"undefined\"!=typeof t?(n===e.length-1&&delete t[r],t[r]):void 0},t),r.reduce(function(t,e,n){return\"undefined\"==typeof t[e]&&(t[e]={}),n===r.length-1&&(t[e]=a),t[e]},t))},a.PolyChart=function(){function t(){var t=r[0].geometryConfig,e=t.container;\"string\"==typeof e&&(e=i.select(e)),e.datum(r).each(function(e,r){function n(e,r){var n=t.radialScale(e[1]),i=(t.angularScale(e[0])+t.orientation)*Math.PI/180;return{r:n,t:i}}function a(t){var e=t.r*Math.cos(t.t),r=t.r*Math.sin(t.t);return{x:e,y:r}}var o=!!e[0].data.yStack,l=e.map(function(t,e){return o?i.zip(t.data.t[0],t.data.r[0],t.data.yStack[0]):i.zip(t.data.t[0],t.data.r[0])}),c=t.angularScale,u=t.radialScale.domain()[0],f={};f.bar=function(r,n,a){var o=e[a].data,s=t.radialScale(r[1])-t.radialScale(0),l=t.radialScale(r[2]||0),u=o.barWidth;i.select(this).attr({\"class\":\"mark bar\",d:\"M\"+[[s+l,-u/2],[s+l,u/2],[l,u/2],[l,-u/2]].join(\"L\")+\"Z\",transform:function(e,r){return\"rotate(\"+(t.orientation+c(e[0]))+\")\"}})},f.dot=function(t,r,o){var s=t[2]?[t[0],t[1]+t[2]]:t,l=i.svg.symbol().size(e[o].data.dotSize).type(e[o].data.dotType)(t,r);i.select(this).attr({\"class\":\"mark dot\",d:l,transform:function(t,e){var r=a(n(s));return\"translate(\"+[r.x,r.y]+\")\"}})};var h=i.svg.line.radial().interpolate(e[0].data.lineInterpolation).radius(function(e){return t.radialScale(e[1])}).angle(function(e){return t.angularScale(e[0])*Math.PI/180});f.line=function(r,n,a){var o=r[2]?l[a].map(function(t,e){return[t[0],t[1]+t[2]]}):l[a];if(i.select(this).each(f.dot).style({opacity:function(t,r){return+e[a].data.dotVisible},fill:v.stroke(r,n,a)}).attr({\"class\":\"mark dot\"}),!(n>0)){var s=i.select(this.parentNode).selectAll(\"path.line\").data([0]);s.enter().insert(\"path\"),s.attr({\"class\":\"line\",d:h(o),transform:function(e,r){return\"rotate(\"+(t.orientation+90)+\")\"},\"pointer-events\":\"none\"}).style({fill:function(t,e){return v.fill(r,n,a)},\"fill-opacity\":0,stroke:function(t,e){return v.stroke(r,n,a)},\"stroke-width\":function(t,e){return v[\"stroke-width\"](r,n,a)},\"stroke-dasharray\":function(t,e){return v[\"stroke-dasharray\"](r,n,a)},opacity:function(t,e){return v.opacity(r,n,a)},display:function(t,e){return v.display(r,n,a)}})}};var d=t.angularScale.range(),p=Math.abs(d[1]-d[0])/l[0].length*Math.PI/180,g=i.svg.arc().startAngle(function(t){return-p/2}).endAngle(function(t){return p/2}).innerRadius(function(e){return t.radialScale(u+(e[2]||0))}).outerRadius(function(e){return t.radialScale(u+(e[2]||0))+t.radialScale(e[1])});f.arc=function(e,r,n){i.select(this).attr({\"class\":\"mark arc\",d:g,transform:function(e,r){return\"rotate(\"+(t.orientation+c(e[0])+90)+\")\"}})};var v={fill:function(t,r,n){return e[n].data.color},stroke:function(t,r,n){return e[n].data.strokeColor},\"stroke-width\":function(t,r,n){return e[n].data.strokeSize+\"px\"},\"stroke-dasharray\":function(t,r,n){return s[e[n].data.strokeDash]},opacity:function(t,r,n){return e[n].data.opacity},display:function(t,r,n){return\"undefined\"==typeof e[n].data.visible||e[n].data.visible?\"block\":\"none\"}},m=i.select(this).selectAll(\"g.layer\").data(l);m.enter().append(\"g\").attr({\"class\":\"layer\"});var y=m.selectAll(\"path.mark\").data(function(t,e){return t});y.enter().append(\"path\").attr({\"class\":\"mark\"}),y.style(v).each(f[t.geometryType]),y.exit().remove(),m.exit().remove()})}var e,r=[a.PolyChart.defaultConfig()],n=i.dispatch(\"hover\"),s={solid:\"none\",dash:[5,2],dot:[2,5]};return t.config=function(t){return arguments.length?(t.forEach(function(t,e){r[e]||(r[e]={}),o(r[e],a.PolyChart.defaultConfig()),o(r[e],t)}),this):r},t.getColorScale=function(){return e},i.rebind(t,n,\"on\"),t},a.PolyChart.defaultConfig=function(){var t={data:{name:\"geom1\",t:[[1,2,3,4]],r:[[1,2,3,4]],dotType:\"circle\",dotSize:64,dotVisible:!1,barWidth:20,color:\"#ffa500\",strokeSize:1,strokeColor:\"silver\",strokeDash:\"solid\",opacity:1,index:0,visible:!0,visibleInLegend:!0},geometryConfig:{geometry:\"LinePlot\",geometryType:\"arc\",direction:\"clockwise\",orientation:0,container:\"body\",radialScale:null,angularScale:null,colorScale:i.scale.category20()}};return t},a.BarChart=function(){return a.PolyChart()},a.BarChart.defaultConfig=function(){var t={geometryConfig:{geometryType:\"bar\"}};return t},a.AreaChart=function(){return a.PolyChart()},a.AreaChart.defaultConfig=function(){var t={geometryConfig:{geometryType:\"arc\"}};return t},a.DotPlot=function(){return a.PolyChart()},a.DotPlot.defaultConfig=function(){var t={geometryConfig:{geometryType:\"dot\",dotType:\"circle\"}};return t},a.LinePlot=function(){return a.PolyChart()},a.LinePlot.defaultConfig=function(){var t={geometryConfig:{geometryType:\"line\"}};return t},a.Legend=function(){function t(){var r=e.legendConfig,n=e.data.map(function(t,e){return[].concat(t).map(function(t,n){var i=o({},r.elements[e]);return i.name=t,i.color=[].concat(r.elements[e].color)[n],i})}),a=i.merge(n);a=a.filter(function(t,e){return r.elements[e]&&(r.elements[e].visibleInLegend||\"undefined\"==typeof r.elements[e].visibleInLegend)}),r.reverseOrder&&(a=a.reverse());var s=r.container;(\"string\"==typeof s||s.nodeName)&&(s=i.select(s));var l=a.map(function(t,e){return t.color}),c=r.fontSize,u=null==r.isContinuous?\"number\"==typeof a[0]:r.isContinuous,f=u?r.height:c*a.length,h=s.classed(\"legend-group\",!0),d=h.selectAll(\"svg\").data([0]),p=d.enter().append(\"svg\").attr({width:300,height:f+c,xmlns:\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",version:\"1.1\"});p.append(\"g\").classed(\"legend-axis\",!0),p.append(\"g\").classed(\"legend-marks\",!0);var g=i.range(a.length),v=i.scale[u?\"linear\":\"ordinal\"]().domain(g).range(l),m=i.scale[u?\"linear\":\"ordinal\"]().domain(g)[u?\"range\":\"rangePoints\"]([0,f]),y=function(t,e){var r=3*e;return\"line\"===t?\"M\"+[[-e/2,-e/12],[e/2,-e/12],[e/2,e/12],[-e/2,e/12]]+\"Z\":-1!=i.svg.symbolTypes.indexOf(t)?i.svg.symbol().type(t).size(r)():i.svg.symbol().type(\"square\").size(r)()};if(u){var b=d.select(\".legend-marks\").append(\"defs\").append(\"linearGradient\").attr({id:\"grad1\",x1:\"0%\",y1:\"0%\",x2:\"0%\",y2:\"100%\"}).selectAll(\"stop\").data(l);b.enter().append(\"stop\"),b.attr({offset:function(t,e){return e/(l.length-1)*100+\"%\"}}).style({\"stop-color\":function(t,e){return t}}),d.append(\"rect\").classed(\"legend-mark\",!0).attr({height:r.height,width:r.colorBandWidth,fill:\"url(#grad1)\"})}else{var x=d.select(\".legend-marks\").selectAll(\"path.legend-mark\").data(a);x.enter().append(\"path\").classed(\"legend-mark\",!0),x.attr({transform:function(t,e){return\"translate(\"+[c/2,m(e)+c/2]+\")\"},d:function(t,e){var r=t.symbol;return y(r,c)},fill:function(t,e){return v(e)}}),x.exit().remove()}var _=i.svg.axis().scale(m).orient(\"right\"),w=d.select(\"g.legend-axis\").attr({transform:\"translate(\"+[u?r.colorBandWidth:c,c/2]+\")\"}).call(_);return w.selectAll(\".domain\").style({fill:\"none\",stroke:\"none\"}),w.selectAll(\"line\").style({fill:\"none\",stroke:u?r.textColor:\"none\"}),w.selectAll(\"text\").style({fill:r.textColor,\"font-size\":r.fontSize}).text(function(t,e){return a[e].name}),t}var e=a.Legend.defaultConfig(),r=i.dispatch(\"hover\");return t.config=function(t){return arguments.length?(o(e,t),this):e},i.rebind(t,r,\"on\"),t},a.Legend.defaultConfig=function(t,e){var r={data:[\"a\",\"b\",\"c\"],legendConfig:{elements:[{symbol:\"line\",color:\"red\"},{symbol:\"square\",color:\"yellow\"},{symbol:\"diamond\",color:\"limegreen\"}],height:150,colorBandWidth:30,fontSize:12,container:\"body\",isContinuous:null,textColor:\"grey\",reverseOrder:!1}};return r},a.tooltipPanel=function(){var t,e,r,n={container:null,hasTick:!1,fontSize:12,color:\"white\",padding:5},s=\"tooltip-\"+a.tooltipPanel.uid++,l=10,c=function(){t=n.container.selectAll(\"g.\"+s).data([0]);var i=t.enter().append(\"g\").classed(s,!0).style({\"pointer-events\":\"none\",display:\"none\"});return r=i.append(\"path\").style({fill:\"white\",\"fill-opacity\":.9}).attr({d:\"M0 0\"}),e=i.append(\"text\").attr({dx:n.padding+l,dy:.3*+n.fontSize}),c};return c.text=function(a){var o=i.hsl(n.color).l,s=o>=.5?\"#aaa\":\"white\",u=o>=.5?\"black\":\"white\",f=a||\"\";e.style({fill:u,\"font-size\":n.fontSize+\"px\"}).text(f);var h=n.padding,d=e.node().getBBox(),p={fill:n.color,stroke:s,\"stroke-width\":\"2px\"},g=d.width+2*h+l,v=d.height+2*h;return r.attr({d:\"M\"+[[l,-v/2],[l,-v/4],[n.hasTick?0:l,0],[l,v/4],[l,v/2],[g,v/2],[g,-v/2]].join(\"L\")+\"Z\"}).style(p),t.attr({transform:\"translate(\"+[l,-v/2+2*h]+\")\"}),t.style({display:\"block\"}),c},c.move=function(e){return t?(t.attr({transform:\"translate(\"+[e[0],e[1]]+\")\"}).style({display:\"block\"}),c):void 0},c.hide=function(){return t?(t.style({display:\"none\"}),c):void 0},c.show=function(){return t?(t.style({display:\"block\"}),c):void 0},c.config=function(t){return o(n,t),c},c},a.tooltipPanel.uid=1,a.adapter={},a.adapter.plotly=function(){var t={};return t.convert=function(t,e){var r={};if(t.data&&(r.data=t.data.map(function(t,r){var n=o({},t),i=[[n,[\"marker\",\"color\"],[\"color\"]],[n,[\"marker\",\"opacity\"],[\"opacity\"]],[n,[\"marker\",\"line\",\"color\"],[\"strokeColor\"]],[n,[\"marker\",\"line\",\"dash\"],[\"strokeDash\"]],[n,[\"marker\",\"line\",\"width\"],[\"strokeSize\"]],[n,[\"marker\",\"symbol\"],[\"dotType\"]],[n,[\"marker\",\"size\"],[\"dotSize\"]],[n,[\"marker\",\"barWidth\"],[\"barWidth\"]],[n,[\"line\",\"interpolation\"],[\"lineInterpolation\"]],[n,[\"showlegend\"],[\"visibleInLegend\"]]];return i.forEach(function(t,r){a.util.translator.apply(null,t.concat(e))}),e||delete n.marker,e&&delete n.groupId,e?(\"LinePlot\"===n.geometry?(n.type=\"scatter\",n.dotVisible===!0?(delete n.dotVisible,n.mode=\"lines+markers\"):n.mode=\"lines\"):\"DotPlot\"===n.geometry?(n.type=\"scatter\",n.mode=\"markers\"):\"AreaChart\"===n.geometry?n.type=\"area\":\"BarChart\"===n.geometry&&(n.type=\"bar\"),delete n.geometry):(\"scatter\"===n.type?\"lines\"===n.mode?n.geometry=\"LinePlot\":\"markers\"===n.mode?n.geometry=\"DotPlot\":\"lines+markers\"===n.mode&&(n.geometry=\"LinePlot\",n.dotVisible=!0):\"area\"===n.type?n.geometry=\"AreaChart\":\"bar\"===n.type&&(n.geometry=\"BarChart\"),delete n.mode,delete n.type),n}),!e&&t.layout&&\"stack\"===t.layout.barmode)){var n=a.util.duplicates(r.data.map(function(t,e){return t.geometry}));r.data.forEach(function(t,e){var i=n.indexOf(t.geometry);-1!=i&&(r.data[e].groupId=i)})}if(t.layout){var s=o({},t.layout),l=[[s,[\"plot_bgcolor\"],[\"backgroundColor\"]],[s,[\"showlegend\"],[\"showLegend\"]],[s,[\"radialaxis\"],[\"radialAxis\"]],[s,[\"angularaxis\"],[\"angularAxis\"]],[s.angularaxis,[\"showline\"],[\"gridLinesVisible\"]],[s.angularaxis,[\"showticklabels\"],[\"labelsVisible\"]],[s.angularaxis,[\"nticks\"],[\"ticksCount\"]],[s.angularaxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.angularaxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.angularaxis,[\"range\"],[\"domain\"]],[s.angularaxis,[\"endpadding\"],[\"endPadding\"]],[s.radialaxis,[\"showline\"],[\"gridLinesVisible\"]],[s.radialaxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.radialaxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.radialaxis,[\"range\"],[\"domain\"]],[s.angularAxis,[\"showline\"],[\"gridLinesVisible\"]],[s.angularAxis,[\"showticklabels\"],[\"labelsVisible\"]],[s.angularAxis,[\"nticks\"],[\"ticksCount\"]],[s.angularAxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.angularAxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.angularAxis,[\"range\"],[\"domain\"]],[s.angularAxis,[\"endpadding\"],[\"endPadding\"]],[s.radialAxis,[\"showline\"],[\"gridLinesVisible\"]],[s.radialAxis,[\"tickorientation\"],[\"tickOrientation\"]],[s.radialAxis,[\"ticksuffix\"],[\"ticksSuffix\"]],[s.radialAxis,[\"range\"],[\"domain\"]],[s.font,[\"outlinecolor\"],[\"outlineColor\"]],[s.legend,[\"traceorder\"],[\"reverseOrder\"]],[s,[\"labeloffset\"],[\"labelOffset\"]],[s,[\"defaultcolorrange\"],[\"defaultColorRange\"]]];if(l.forEach(function(t,r){a.util.translator.apply(null,t.concat(e))}),e?(\"undefined\"!=typeof s.tickLength&&(s.angularaxis.ticklen=s.tickLength,delete s.tickLength),s.tickColor&&(s.angularaxis.tickcolor=s.tickColor,delete s.tickColor)):(s.angularAxis&&\"undefined\"!=typeof s.angularAxis.ticklen&&(s.tickLength=s.angularAxis.ticklen),s.angularAxis&&\"undefined\"!=typeof s.angularAxis.tickcolor&&(s.tickColor=s.angularAxis.tickcolor)),s.legend&&\"boolean\"!=typeof s.legend.reverseOrder&&(s.legend.reverseOrder=\"normal\"!=s.legend.reverseOrder),s.legend&&\"boolean\"==typeof s.legend.traceorder&&(s.legend.traceorder=s.legend.traceorder?\"reversed\":\"normal\",delete s.legend.reverseOrder),s.margin&&\"undefined\"!=typeof s.margin.t){var c=[\"t\",\"r\",\"b\",\"l\",\"pad\"],u=[\"top\",\"right\",\"bottom\",\"left\",\"pad\"],f={};i.entries(s.margin).forEach(function(t,e){f[u[c.indexOf(t.key)]]=t.value}),s.margin=f}e&&(delete s.needsEndSpacing,delete s.minorTickColor,delete s.minorTicks,delete s.angularaxis.ticksCount,delete s.angularaxis.ticksCount,delete s.angularaxis.ticksStep,delete s.angularaxis.rewriteTicks,delete s.angularaxis.nticks,delete s.radialaxis.ticksCount,delete s.radialaxis.ticksCount,delete s.radialaxis.ticksStep,delete s.radialaxis.rewriteTicks,delete s.radialaxis.nticks),r.layout=s}return r},t}},{\"../../plotly\":400,\"./micropolar_manager\":456,d3:113}],456:[function(t,e,r){\"use strict\";var n=t(\"../../plotly\"),i=t(\"d3\"),a=t(\"./undo_manager\"),o=e.exports={},s=n.Lib.extendDeepAll;o.framework=function(t){function e(e,a){return a&&(f=a),i.select(i.select(f).node().parentNode).selectAll(\".svg-container>*:not(.chart-root)\").remove(),r=r?s(r,e):e,c||(c=n.micropolar.Axis()),u=n.micropolar.adapter.plotly().convert(r),c.config(u).render(f),t.data=r.data,t.layout=r.layout,o.fillLayout(t),r}var r,l,c,u,f,h=new a;return e.isPolar=!0,e.svg=function(){return c.svg()},e.getConfig=function(){return r},e.getLiveConfig=function(){return n.micropolar.adapter.plotly().convert(c.getLiveConfig(),!0)},e.getLiveScales=function(){return{t:c.angularScale(),r:c.radialScale()}},e.setUndoPoint=function(){var t=this,e=n.micropolar.util.cloneJson(r);!function(e,r){h.add({undo:function(){r&&t(r)},redo:function(){t(e)}})}(e,l),l=n.micropolar.util.cloneJson(e)},e.undo=function(){h.undo()},e.redo=function(){h.redo()},e},o.fillLayout=function(t){var e=i.select(t).selectAll(\".plot-container\"),r=e.selectAll(\".svg-container\"),a=t.framework&&t.framework.svg&&t.framework.svg(),o={width:800,height:600,paper_bgcolor:n.Color.background,_container:e,_paperdiv:r,_paper:a};t._fullLayout=s(o,t.layout)}},{\"../../plotly\":400,\"./undo_manager\":457,d3:113}],457:[function(t,e,r){\"use strict\";e.exports=function(){function t(t,e){return t?(i=!0,t[e](),i=!1,this):this}var e,r=[],n=-1,i=!1;return{add:function(t){return i?this:(r.splice(n+1,r.length-n),r.push(t),n=r.length-1,this)},setCallback:function(t){e=t},undo:function(){var i=r[n];return i?(t(i,\"undo\"),n-=1,e&&e(i.undo),this):this},redo:function(){var i=r[n+1];return i?(t(i,\"redo\"),n+=1,e&&e(i.redo),this):this},clear:function(){r=[],n=-1},hasUndo:function(){return-1!==n},hasRedo:function(){return ng;g++){var v=d[g];s=t[v]?t[v]:t[v]={},e[v]=l={},o(\"domain.\"+h,[g/p,(g+1)/p]),o(\"domain.\"+{x:\"y\",y:\"x\"}[h]),a.id=v,f(s,l,o,a)}}},{\"../lib\":381,\"./plots\":452}],459:[function(t,e,r){\"use strict\";var n=t(\"./ternary\"),i=t(\"../../plots/plots\");r.name=\"ternary\",r.attr=\"subplot\",r.idRoot=\"ternary\",r.idRegex=/^ternary([2-9]|[1-9][0-9]+)?$/,r.attrRegex=/^ternary([2-9]|[1-9][0-9]+)?$/,r.attributes=t(\"./layout/attributes\"),r.layoutAttributes=t(\"./layout/layout_attributes\"),r.supplyLayoutDefaults=t(\"./layout/defaults\"),r.plot=function(t){for(var e=t._fullLayout,r=t._fullData,a=i.getSubplotIds(e,\"ternary\"),o=0;o=o&&(d.min=0,p.min=0,g.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}var i=t(\"../../../components/color\"),a=t(\"../../subplot_defaults\"),o=t(\"./layout_attributes\"),s=t(\"./axis_defaults\"),l=[\"aaxis\",\"baxis\",\"caxis\"];e.exports=function(t,e,r){a(t,e,r,{type:\"ternary\",attributes:o,handleDefaults:n,font:e.font,paper_bgcolor:e.paper_bgcolor})}},{\"../../../components/color\":303,\"../../subplot_defaults\":458,\"./axis_defaults\":462,\"./layout_attributes\":464}],464:[function(t,e,r){\"use strict\";var n=t(\"../../../components/color/attributes\"),i=t(\"./axis_attributes\");e.exports={domain:{x:{valType:\"info_array\",items:[{valType:\"number\",min:0,max:1},{valType:\"number\",min:0,max:1}],dflt:[0,1]},y:{valType:\"info_array\",items:[{valType:\"number\",min:0,max:1},{valType:\"number\",min:0,max:1}],dflt:[0,1]}},bgcolor:{valType:\"color\",dflt:n.background},sum:{valType:\"number\",dflt:1,min:0},aaxis:i,baxis:i,caxis:i}},{\"../../../components/color/attributes\":302,\"./axis_attributes\":461}],465:[function(t,e,r){\"use strict\";function n(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework()}function i(t){a.select(t).selectAll(\".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners\").remove()}var a=t(\"d3\"),o=t(\"tinycolor2\"),s=t(\"../../plotly\"),l=t(\"../../lib\"),c=t(\"../../components/color\"),u=t(\"../../components/drawing\"),f=t(\"../cartesian/set_convert\"),h=t(\"../../lib/extend\").extendFlat,d=t(\"../cartesian/axes\"),p=t(\"../../lib/filter_visible\"),g=t(\"../../components/dragelement\"),v=t(\"../../components/titles\"),m=t(\"../cartesian/select\"),y=t(\"../cartesian/constants\"),b=t(\"../cartesian/graph_interact\");e.exports=n;var x=n.prototype;x.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={}},x.plot=function(t,e){var r,n=this,i=e[n.id],a=e._size;l.getPlotDiv(n.plotContainer.node())!==n.graphDiv&&(n.init(n.graphDiv._fullLayout),n.makeFramework()),n.adjustLayout(i,a);var o=n.traceHash,s={};for(r=0;r_*y?(a=y,i=a*_):(i=m,a=i/_),o=g*i/m,s=v*a/y,r=e.l+e.w*d-i/2,n=e.t+e.h*(1-p)-a/2,l.x0=r,l.y0=n,l.w=i,l.h=a,l.sum=b,l.xaxis={type:\"linear\",range:[x+2*k-b,b-x-2*w],domain:[d-o/2,d+o/2],_id:\"x\",_gd:l.graphDiv},f(l.xaxis),l.xaxis.setScale(),l.yaxis={type:\"linear\",range:[x,b-w-k],domain:[p-s/2,p+s/2],_id:\"y\",_gd:l.graphDiv},f(l.yaxis),l.yaxis.setScale();var A=l.yaxis.domain[0],M=l.aaxis=h({},t.aaxis,{range:[x,b-w-k],side:\"left\",_counterangle:30,tickangle:(+t.aaxis.tickangle||0)-30,domain:[A,A+s*_],_axislayer:l.layers.aaxis,_gridlayer:l.layers.agrid,_pos:0,_gd:l.graphDiv,_id:\"y\",_length:i,_gridpath:\"M0,0l\"+a+\",-\"+i/2});f(M);var T=l.baxis=h({},t.baxis,{range:[b-x-k,w],side:\"bottom\",_counterangle:30,domain:l.xaxis.domain,_axislayer:l.layers.baxis,_gridlayer:l.layers.bgrid,_counteraxis:l.aaxis,_pos:0,_gd:l.graphDiv,_id:\"x\",_length:i,_gridpath:\"M0,0l-\"+i/2+\",-\"+a});f(T),M._counteraxis=T;var E=l.caxis=h({},t.caxis,{range:[b-x-w,k],side:\"right\",_counterangle:30,tickangle:(+t.caxis.tickangle||0)+30,domain:[A,A+s*_],_axislayer:l.layers.caxis,_gridlayer:l.layers.cgrid,_counteraxis:l.baxis,_pos:0,_gd:l.graphDiv,_id:\"y\",_length:i,_gridpath:\"M0,0l-\"+a+\",\"+i/2});f(E);var L=\"M\"+r+\",\"+(n+a)+\"h\"+i+\"l-\"+i/2+\",-\"+a+\"Z\";l.clipDef.select(\"path\").attr(\"d\",L),l.layers.plotbg.select(\"path\").attr(\"d\",L);var S=\"translate(\"+r+\",\"+n+\")\";l.plotContainer.selectAll(\".scatterlayer,.maplayer,.zoom\").attr(\"transform\",S);var C=\"translate(\"+r+\",\"+(n+a)+\")\";l.layers.baxis.attr(\"transform\",C),l.layers.bgrid.attr(\"transform\",C);var z=\"translate(\"+(r+i/2)+\",\"+n+\")rotate(30)\";l.layers.aaxis.attr(\"transform\",z),l.layers.agrid.attr(\"transform\",z);var P=\"translate(\"+(r+i/2)+\",\"+n+\")rotate(-30)\";l.layers.caxis.attr(\"transform\",P),l.layers.cgrid.attr(\"transform\",P),l.drawAxes(!0),l.plotContainer.selectAll(\".crisp\").classed(\"crisp\",!1);var R=l.layers.axlines;R.select(\".aline\").attr(\"d\",M.showline?\"M\"+r+\",\"+(n+a)+\"l\"+i/2+\",-\"+a:\"M0,0\").call(c.stroke,M.linecolor||\"#000\").style(\"stroke-width\",(M.linewidth||0)+\"px\"),R.select(\".bline\").attr(\"d\",T.showline?\"M\"+r+\",\"+(n+a)+\"h\"+i:\"M0,0\").call(c.stroke,T.linecolor||\"#000\").style(\"stroke-width\",(T.linewidth||0)+\"px\"),R.select(\".cline\").attr(\"d\",E.showline?\"M\"+(r+i/2)+\",\"+n+\"l\"+i/2+\",\"+a:\"M0,0\").call(c.stroke,E.linecolor||\"#000\").style(\"stroke-width\",(E.linewidth||0)+\"px\")},x.drawAxes=function(t){var e=this,r=e.graphDiv,n=e.id.substr(7)+\"title\",i=e.aaxis,a=e.baxis,o=e.caxis;if(d.doTicks(r,i,!0),d.doTicks(r,a,!0),d.doTicks(r,o,!0),t){var s=Math.max(i.showticklabels?i.tickfont.size/2:0,(o.showticklabels?.75*o.tickfont.size:0)+(\"outside\"===o.ticks?.87*o.ticklen:0));v.draw(r,\"a\"+n,{propContainer:i,propName:e.id+\".aaxis.title\",dfltName:\"Component A\",attributes:{x:e.x0+e.w/2,y:e.y0-i.titlefont.size/3-s,\"text-anchor\":\"middle\"}});var l=(a.showticklabels?a.tickfont.size:0)+(\"outside\"===a.ticks?a.ticklen:0)+3;v.draw(r,\"b\"+n,{propContainer:a,propName:e.id+\".baxis.title\",dfltName:\"Component B\",attributes:{x:e.x0-l,y:e.y0+e.h+.83*a.titlefont.size+l,\"text-anchor\":\"middle\"}}),v.draw(r,\"c\"+n,{propContainer:o,propName:e.id+\".caxis.title\",dfltName:\"Component C\",attributes:{x:e.x0+e.w+l,y:e.y0+e.h+.83*o.titlefont.size+l,\"text-anchor\":\"middle\"}})}};var w=y.MINZOOM/2+.87,k=\"m-0.87,.5h\"+w+\"v3h-\"+(w+5.2)+\"l\"+(w/2+2.6)+\",-\"+(.87*w+4.5)+\"l2.6,1.5l-\"+w/2+\",\"+.87*w+\"Z\",A=\"m0.87,.5h-\"+w+\"v3h\"+(w+5.2)+\"l-\"+(w/2+2.6)+\",-\"+(.87*w+4.5)+\"l-2.6,1.5l\"+w/2+\",\"+.87*w+\"Z\",M=\"m0,1l\"+w/2+\",\"+.87*w+\"l2.6,-1.5l-\"+(w/2+2.6)+\",-\"+(.87*w+4.5)+\"l-\"+(w/2+2.6)+\",\"+(.87*w+4.5)+\"l2.6,1.5l\"+w/2+\",-\"+.87*w+\"Z\",T=\"m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z\",E=!0;x.initInteractions=function(){function t(t,e,r){var n=j.getBoundingClientRect();x=e-n.left,w=r-n.top,L={a:N.aaxis.range[0],b:N.baxis.range[1],c:N.caxis.range[1]},C=L,S=N.aaxis.range[1]-L.a,z=o(N.graphDiv._fullLayout[N.id].bgcolor).getLuminance(),P=\"M0,\"+N.h+\"L\"+N.w/2+\", 0L\"+N.w+\",\"+N.h+\"Z\",R=!1,O=D.append(\"path\").attr(\"class\",\"zoombox\").style({fill:z>.2?\"rgba(0,0,0,0)\":\"rgba(255,255,255,0)\",\"stroke-width\":0}).attr(\"d\",P),I=D.append(\"path\").attr(\"class\",\"zoombox-corners\").style({fill:c.background,stroke:c.defaultLine,\"stroke-width\":1,opacity:0}).attr(\"d\",\"M0,0Z\"),p()}function e(t,e){return 1-e/N.h}function r(t,e){return 1-(t+(N.h-e)/Math.sqrt(3))/N.w}function n(t,e){return(t-(N.h-e)/Math.sqrt(3))/N.w}function a(t,i){var a=x+t,o=w+i,s=Math.max(0,Math.min(1,e(x,w),e(a,o))),l=Math.max(0,Math.min(1,r(x,w),r(a,o))),c=Math.max(0,Math.min(1,n(x,w),n(a,o))),u=(s/2+c)*N.w,f=(1-s/2-l)*N.w,h=(u+f)/2,d=f-u,p=(1-s)*N.h,g=p-d/_;d.2?\"rgba(0,0,0,0.4)\":\"rgba(255,255,255,0.3)\").duration(200),I.transition().style(\"opacity\",1).duration(200),R=!0)}function u(t,e){if(C===L)return 2===e&&v(),i(F);i(F);var r={};r[N.id+\".aaxis.min\"]=C.a,r[N.id+\".baxis.min\"]=C.b,r[N.id+\".caxis.min\"]=C.c,s.relayout(F,r),E&&F.data&&F._context.showTips&&(l.notifier(\"Double-click to
zoom back out\",\"long\"),E=!1)}function f(){L={a:N.aaxis.range[0],b:N.baxis.range[1],c:N.caxis.range[1]},C=L}function h(t,e){var r=t/N.xaxis._m,n=e/N.yaxis._m;C={a:L.a-n,b:L.b+(r+n)/2,c:L.c-(r-n)/2};var i=[C.a,C.b,C.c].sort(),a={a:i.indexOf(C.a),b:i.indexOf(C.b),c:i.indexOf(C.c)};i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),C={a:i[a.a],b:i[a.b],c:i[a.c]},e=(L.a-C.a)*N.yaxis._m,t=(L.c-C.c-L.b+C.b)*N.xaxis._m);var o=\"translate(\"+(N.x0+t)+\",\"+(N.y0+e)+\")\";N.plotContainer.selectAll(\".scatterlayer,.maplayer\").attr(\"transform\",o),N.aaxis.range=[C.a,N.sum-C.b-C.c],N.baxis.range=[N.sum-C.a-C.c,C.b],N.caxis.range=[N.sum-C.a-C.b,C.c],N.drawAxes(!1),N.plotContainer.selectAll(\".crisp\").classed(\"crisp\",!1)}function d(t,e){if(t){var r={};r[N.id+\".aaxis.min\"]=C.a,r[N.id+\".baxis.min\"]=C.b,r[N.id+\".caxis.min\"]=C.c,s.relayout(F,r)}else 2===e&&v()}function p(){N.plotContainer.selectAll(\".select-outline\").remove()}function v(){var t={};t[N.id+\".aaxis.min\"]=0,t[N.id+\".baxis.min\"]=0,t[N.id+\".caxis.min\"]=0,F.emit(\"plotly_doubleclick\",null),s.relayout(F,t)}var x,w,L,S,C,z,P,R,O,I,N=this,j=N.layers.plotbg.select(\"path\").node(),F=N.graphDiv,D=N.layers.zoom,B={element:j,gd:F,plotinfo:{plot:D},doubleclick:v,subplot:N.id,prepFn:function(e,r,n){B.xaxes=[N.xaxis],B.yaxes=[N.yaxis];var i=F._fullLayout.dragmode;e.shiftKey&&(i=\"pan\"===i?\"zoom\":\"pan\"),\"lasso\"===i?B.minDrag=1:B.minDrag=void 0,\"zoom\"===i?(B.moveFn=a,B.doneFn=u,t(e,r,n)):\"pan\"===i?(B.moveFn=h,B.doneFn=d,f(),p()):\"select\"!==i&&\"lasso\"!==i||m(e,r,n,B,i)}};g.init(B),j.onmousemove=function(t){b.hover(F,t,N.id),F._fullLayout._lasthover=j,F._fullLayout._hoversubplot=N.id},j.onmouseout=function(t){F._dragging||g.unhover(F,t)},j.onclick=function(t){b.click(F,t)},F._fullLayout._plots||(F._fullLayout._plots={}),F._fullLayout._plots[N.id]={overlays:[],xaxis:N.xaxis,yaxis:N.yaxis,x:function(){return N.xaxis},y:function(){return N.yaxis}}}},{\"../../components/color\":303,\"../../components/dragelement\":323,\"../../components/drawing\":325,\"../../components/titles\":365,\"../../lib\":381,\"../../lib/extend\":376,\"../../lib/filter_visible\":377,\"../../plotly\":400,\"../cartesian/axes\":403,\"../cartesian/constants\":408,\"../cartesian/graph_interact\":410,\"../cartesian/select\":416,\"../cartesian/set_convert\":417,d3:113,tinycolor2:274}],466:[function(t,e,r){\"use strict\";function n(t){var e;switch(t){case\"themes__thumb\":e={autosize:!0,width:150,height:150,title:\"\",showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case\"thumbnail\":e={title:\"\",hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:\"\",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:e={}}return e}function i(t){var e=[\"xaxis\",\"yaxis\",\"zaxis\"];return e.indexOf(t.slice(0,5))>-1}var a=t(\"../plotly\"),o=a.Lib.extendFlat,s=a.Lib.extendDeep;e.exports=function(t,e){t.framework&&t.framework.isPolar&&(t=t.framework.getConfig());var r,l=t.data,c=t.layout,u=s([],l),f=s({},c,n(e.tileClass));if(e.width&&(f.width=e.width),e.height&&(f.height=e.height),\"thumbnail\"===e.tileClass||\"themes__thumb\"===e.tileClass){f.annotations=[];var h=Object.keys(f);for(r=0;rl;l++)n(r[l])&&d.push({p:r[l],s:s[l],b:0});return a(e,\"marker\")&&o(e,e.marker.color,\"marker\",\"c\"),a(e,\"marker.line\")&&o(e,e.marker.line.color,\"marker.line\",\"c\"),d}},{\"../../components/colorscale/calc\":310,\"../../components/colorscale/has_colorscale\":315,\"../../plots/cartesian/axes\":403,\"fast-isnumeric\":117}],476:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"../scatter/xy_defaults\"),o=t(\"../bar/style_defaults\"),s=t(\"../../components/errorbars/defaults\"),l=t(\"./attributes\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,l,r,i)}var f=a(t,e,u);return f?(u(\"orientation\",e.x&&!e.y?\"h\":\"v\"),u(\"text\"),o(t,e,u,r,c),s(t,e,i.defaultLine,{axis:\"y\"}),void s(t,e,i.defaultLine,{axis:\"x\",inherit:\"y\"})):void(e.visible=!1)}},{\"../../components/color\":303,\"../../components/errorbars/defaults\":330,\"../../lib\":381,\"../bar/style_defaults\":484,\"../scatter/xy_defaults\":575,\"./attributes\":474}],477:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/graph_interact\"),i=t(\"../../components/errorbars\"),a=t(\"../../components/color\");e.exports=function(t,e,r,o){var s,l=t.cd,c=l[0].trace,u=l[0].t,f=t.xa,h=t.ya,d=\"closest\"===o?u.barwidth/2:u.dbar*(1-f._gd._fullLayout.bargap)/2;s=\"closest\"!==o?function(t){return t.p}:\"h\"===c.orientation?function(t){return t.y}:function(t){return t.x};var p,g;\"h\"===c.orientation?(p=function(t){return n.inbox(t.b-e,t.x-e)+(t.x-e)/(t.x-t.b)},g=function(t){var e=s(t)-r;return n.inbox(e-d,e+d)}):(g=function(t){return n.inbox(t.b-r,t.y-r)+(t.y-r)/(t.y-t.b)},p=function(t){var r=s(t)-e;return n.inbox(r-d,r+d)});var v=n.getDistanceFunction(o,p,g);if(n.getClosest(l,v,t),t.index!==!1){var m=l[t.index],y=m.mcc||c.marker.color,b=m.mlcc||c.marker.line.color,x=m.mlw||c.marker.line.width;return a.opacity(y)?t.color=y:a.opacity(b)&&x&&(t.color=b),\"h\"===c.orientation?(t.x0=t.x1=f.c2p(m.x,!0),t.xLabelVal=m.s,t.y0=h.c2p(s(m)-d,!0),t.y1=h.c2p(s(m)+d,!0),t.yLabelVal=m.p):(t.y0=t.y1=h.c2p(m.y,!0),t.yLabelVal=m.s,t.x0=f.c2p(s(m)-d,!0),t.x1=f.c2p(s(m)+d,!0),t.xLabelVal=m.p),m.tx&&(t.text=m.tx),i.hoverInfo(m,c,t),[t]}}},{\"../../components/color\":303,\"../../components/errorbars\":331,\"../../plots/cartesian/graph_interact\":410}],478:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.layoutAttributes=t(\"./layout_attributes\"),n.supplyDefaults=t(\"./defaults\"),n.supplyLayoutDefaults=t(\"./layout_defaults\"),n.calc=t(\"./calc\"),n.setPositions=t(\"./set_positions\"),n.colorbar=t(\"../scatter/colorbar\"),n.arraysToCalcdata=t(\"./arrays_to_calcdata\"),n.plot=t(\"./plot\"),n.style=t(\"./style\"),n.hoverPoints=t(\"./hover\"),n.moduleType=\"trace\",n.name=\"bar\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"bar\",\"oriented\",\"markerColorscale\",\"errorBarsOK\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":411,\"../scatter/colorbar\":557,\"./arrays_to_calcdata\":473,\"./attributes\":474,\"./calc\":475,\"./defaults\":476,\"./hover\":477,\"./layout_attributes\":479,\"./layout_defaults\":480,\"./plot\":481,\"./set_positions\":482,\"./style\":483}],479:[function(t,e,r){\"use strict\";e.exports={barmode:{valType:\"enumerated\",values:[\"stack\",\"group\",\"overlay\",\"relative\"],dflt:\"group\"},barnorm:{valType:\"enumerated\",values:[\"\",\"fraction\",\"percent\"],dflt:\"\"},bargap:{valType:\"number\",min:0,max:1},bargroupgap:{valType:\"number\",min:0,max:1,dflt:0}}},{}],480:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./layout_attributes\");e.exports=function(t,e,r){function s(r,n){return a.coerce(t,e,o,r,n)}for(var l=!1,c=!1,u=!1,f={},h=0;h=2?a(t):t>e?Math.ceil(t):Math.floor(t)}var h,d,p,g;if(\"h\"===s.orientation?(p=u.c2p(r.poffset+e.p,!0),g=u.c2p(r.poffset+e.p+r.barwidth,!0),h=c.c2p(e.b,!0),d=c.c2p(e.s+e.b,!0)):(h=c.c2p(r.poffset+e.p,!0),d=c.c2p(r.poffset+e.p+r.barwidth,!0),g=u.c2p(e.s+e.b,!0),p=u.c2p(e.b,!0)),!(i(h)&&i(d)&&i(p)&&i(g)&&h!==d&&p!==g))return void n.select(this).remove();var v=(e.mlw+1||s.marker.line.width+1||(e.trace?e.trace.marker.line.width:0)+1)-1,m=n.round(v/2%1,2);if(!t._context.staticPlot){var y=o.opacity(e.mc||s.marker.color),b=1>y||v>.01?a:l;h=b(h,d),d=b(d,h),p=b(p,g),g=b(g,p)}n.select(this).attr(\"d\",\"M\"+h+\",\"+p+\"V\"+g+\"H\"+d+\"V\"+p+\"Z\")})}),h.call(s.plot,e)}},{\"../../components/color\":303,\"../../components/errorbars\":331,\"../../lib\":381,\"./arrays_to_calcdata\":473,d3:113,\"fast-isnumeric\":117}],482:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/plots\"),a=t(\"../../plots/cartesian/axes\"),o=t(\"../../lib\");e.exports=function(t,e){var r,s,l=t._fullLayout,c=e.x(),u=e.y();[\"v\",\"h\"].forEach(function(f){function h(e){function r(t){t[p]=t.p+h}var n=[];e.forEach(function(e){t.calcdata[e].forEach(function(t){n.push(t.p)})});var i=o.distinctVals(n),s=i.vals,c=i.minDiff,u=!1,f=[];\"group\"===l.barmode&&e.forEach(function(e){u||(t.calcdata[e].forEach(function(t){u||f.forEach(function(e){Math.abs(t.p-e)_&&(S=!0,M=_),_>A+R&&(S=!0,A=_))}a.expand(m,[M,A],{tozero:!0,padded:S})}else{var O=function(t){return t[g]=t.s,t.s};for(r=0;r1||0===s.bargap&&0===s.bargroupgap&&!t[0].trace.marker.line.width)&&n.select(this).attr(\"shape-rendering\",\"crispEdges\")}),e.selectAll(\"g.points\").each(function(t){var e=t[0].trace,r=e.marker,o=r.line,s=(e._input||{}).marker||{},l=a.tryColorscale(r,s,\"\"),c=a.tryColorscale(r,s,\"line.\");n.select(this).selectAll(\"path\").each(function(t){var e,a,s=(t.mlw+1||o.width+1)-1,u=n.select(this);e=\"mc\"in t?t.mcc=l(t.mc):Array.isArray(r.color)?i.defaultLine:r.color,u.style(\"stroke-width\",s+\"px\").call(i.fill,e),s&&(a=\"mlc\"in t?t.mlcc=c(t.mlc):Array.isArray(o.color)?i.defaultLine:o.color,u.call(i.stroke,a))})}),e.call(o.style)}},{\"../../components/color\":303,\"../../components/drawing\":325,\"../../components/errorbars\":331,d3:113}],484:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/has_colorscale\"),a=t(\"../../components/colorscale/defaults\");e.exports=function(t,e,r,o,s){r(\"marker.color\",o),i(t,\"marker\")&&a(t,e,s,r,{prefix:\"marker.\",cLetter:\"c\"}),r(\"marker.line.color\",n.defaultLine),i(t,\"marker.line\")&&a(t,e,s,r,{prefix:\"marker.line.\",cLetter:\"c\"}),r(\"marker.line.width\")}},{\"../../components/color\":303,\"../../components/colorscale/defaults\":312,\"../../components/colorscale/has_colorscale\":315}],485:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../components/color/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=n.marker,s=o.line;e.exports={y:{valType:\"data_array\"},x:{valType:\"data_array\"},x0:{valType:\"any\"},y0:{valType:\"any\"},whiskerwidth:{valType:\"number\",min:0,max:1,dflt:.5},boxpoints:{valType:\"enumerated\",values:[\"all\",\"outliers\",\"suspectedoutliers\",!1],dflt:\"outliers\"},boxmean:{valType:\"enumerated\",values:[!0,\"sd\",!1],dflt:!1},jitter:{valType:\"number\",min:0,max:1},pointpos:{valType:\"number\",min:-2,max:2},orientation:{valType:\"enumerated\",values:[\"v\",\"h\"]},marker:{outliercolor:{valType:\"color\",dflt:\"rgba(0, 0, 0, 0)\"},symbol:a({},o.symbol,{arrayOk:!1}),opacity:a({},o.opacity,{arrayOk:!1,dflt:1}),size:a({},o.size,{arrayOk:!1}),color:a({},o.color,{arrayOk:!1}),line:{color:a({},s.color,{arrayOk:!1,dflt:i.defaultLine}),width:a({},s.width,{arrayOk:!1,dflt:0}),outliercolor:{valType:\"color\"},outlierwidth:{valType:\"number\",min:0,dflt:1}}},line:{color:{valType:\"color\"},width:{valType:\"number\",min:0,dflt:2}},fillcolor:n.fillcolor}},{\"../../components/color/attributes\":302,\"../../lib/extend\":376,\"../scatter/attributes\":554}],486:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../lib\"),a=t(\"../../plots/cartesian/axes\");e.exports=function(t,e){function r(t,e,r,a,o){var s;return r in e?p=a.makeCalcdata(e,r):(s=r+\"0\"in e?e[r+\"0\"]:\"name\"in e&&(\"category\"===a.type||n(e.name)&&-1!==[\"linear\",\"log\"].indexOf(a.type)||i.isDateTime(e.name)&&\"date\"===a.type)?e.name:t.numboxes,s=a.d2c(s),p=o.map(function(){return s})),p}function o(t,e,r,a,o){var s,l,c,u,f=a.length,h=e.length,d=[],p=[];for(s=0;f>s;++s)l=a[s],t[s]={pos:l},p[s]=l-o,d[s]=[];for(p.push(a[f-1]+o),s=0;h>s;++s)u=e[s],n(u)&&(c=i.findBin(r[s],p),c>=0&&h>c&&d[c].push(u));return d}function s(t,e){var r,n,a,o;for(o=0;o1,m=r.dPos*(1-h.boxgap)*(1-h.boxgroupgap)/(v?t.numboxes:1),y=v?2*r.dPos*(-.5+(r.boxnum+.5)/t.numboxes)*(1-h.boxgap):0,b=m*g.whiskerwidth;return g.visible!==!0||r.emptybox?void a.select(this).remove():(\"h\"===g.orientation?(l=p,f=d):(l=d,f=p),r.bPos=y,r.bdPos=m,n(),a.select(this).selectAll(\"path.box\").data(o.identity).enter().append(\"path\").attr(\"class\",\"box\").each(function(t){var e=l.c2p(t.pos+y,!0),r=l.c2p(t.pos+y-m,!0),n=l.c2p(t.pos+y+m,!0),i=l.c2p(t.pos+y-b,!0),s=l.c2p(t.pos+y+b,!0),c=f.c2p(t.q1,!0),u=f.c2p(t.q3,!0),h=o.constrain(f.c2p(t.med,!0),Math.min(c,u)+1,Math.max(c,u)-1),d=f.c2p(g.boxpoints===!1?t.min:t.lf,!0),p=f.c2p(g.boxpoints===!1?t.max:t.uf,!0);\"h\"===g.orientation?a.select(this).attr(\"d\",\"M\"+h+\",\"+r+\"V\"+n+\"M\"+c+\",\"+r+\"V\"+n+\"H\"+u+\"V\"+r+\"ZM\"+c+\",\"+e+\"H\"+d+\"M\"+u+\",\"+e+\"H\"+p+(0===g.whiskerwidth?\"\":\"M\"+d+\",\"+i+\"V\"+s+\"M\"+p+\",\"+i+\"V\"+s)):a.select(this).attr(\"d\",\"M\"+r+\",\"+h+\"H\"+n+\"M\"+r+\",\"+c+\"H\"+n+\"V\"+u+\"H\"+r+\"ZM\"+e+\",\"+c+\"V\"+d+\"M\"+e+\",\"+u+\"V\"+p+(0===g.whiskerwidth?\"\":\"M\"+i+\",\"+d+\"H\"+s+\"M\"+i+\",\"+p+\"H\"+s))}),g.boxpoints&&a.select(this).selectAll(\"g.points\").data(function(t){return t.forEach(function(t){t.t=r,t.trace=g}),t}).enter().append(\"g\").attr(\"class\",\"points\").selectAll(\"path\").data(function(t){var e,r,n,a,s,l,f,h=\"all\"===g.boxpoints?t.val:t.val.filter(function(e){return et.uf}),d=(t.q3-t.q1)*u,p=[],v=0;if(g.jitter){for(e=0;et.lo&&(n.so=!0),n})}).enter().append(\"path\").call(s.translatePoints,d,p),void(g.boxmean&&a.select(this).selectAll(\"path.mean\").data(o.identity).enter().append(\"path\").attr(\"class\",\"mean\").style(\"fill\",\"none\").each(function(t){var e=l.c2p(t.pos+y,!0),r=l.c2p(t.pos+y-m,!0),n=l.c2p(t.pos+y+m,!0),i=f.c2p(t.mean,!0),o=f.c2p(t.mean-t.sd,!0),s=f.c2p(t.mean+t.sd,!0);\"h\"===g.orientation?a.select(this).attr(\"d\",\"M\"+i+\",\"+r+\"V\"+n+(\"sd\"!==g.boxmean?\"\":\"m0,0L\"+o+\",\"+e+\"L\"+i+\",\"+r+\"L\"+s+\",\"+e+\"Z\")):a.select(this).attr(\"d\",\"M\"+r+\",\"+i+\"H\"+n+(\"sd\"!==g.boxmean?\"\":\"m0,0L\"+e+\",\"+o+\"L\"+r+\",\"+i+\"L\"+e+\",\"+s+\"Z\"))})))})}},{\"../../components/drawing\":325,\"../../lib\":381,d3:113}],493:[function(t,e,r){\"use strict\";var n=t(\"../../plots/plots\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\");e.exports=function(t,e){var r,o,s,l,c=t._fullLayout,u=e.x(),f=e.y(),h=[\"v\",\"h\"];for(o=0;ol&&(e.z=u.slice(0,l)),s(\"locationmode\"),s(\"text\"),s(\"marker.line.color\"),s(\"marker.line.width\"),i(t,e,o,s,{prefix:\"\",cLetter:\"z\"}),void s(\"hoverinfo\",1===o._dataLength?\"location+z+text\":void 0)):void(e.visible=!1)}},{\"../../components/colorscale/defaults\":312,\"../../lib\":381,\"./attributes\":495}],498:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../heatmap/colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\").plot,n.moduleType=\"trace\",n.name=\"choropleth\",n.basePlotModule=t(\"../../plots/geo\"),n.categories=[\"geo\",\"noOpacity\"],n.meta={},e.exports=n},{\"../../plots/geo\":424,\"../heatmap/colorbar\":512,\"./attributes\":495,\"./calc\":496,\"./defaults\":497,\"./plot\":499}],499:[function(t,e,r){\"use strict\";function n(t,e){function r(e){var r=t.mockAxis;return o.tickText(r,r.c2l(e),\"hover\").text}var n=e.hoverinfo;if(\"none\"===n)return function(t){delete t.nameLabel,delete t.textLabel};var i=\"all\"===n?v.hoverinfo.flags:n.split(\"+\"),a=-1!==i.indexOf(\"name\"),s=-1!==i.indexOf(\"location\"),l=-1!==i.indexOf(\"z\"),c=-1!==i.indexOf(\"text\"),u=!a&&s;return function(t){var n=[];u?t.nameLabel=t.id:(a&&(t.nameLabel=e.name),s&&n.push(t.id)),l&&n.push(r(t.z)),c&&n.push(t.tx),t.textLabel=n.join(\"
\")}}function i(t){return function(e,r){return{points:[{data:t._input,fullData:t,curveNumber:t.index,pointNumber:r,location:e.id,z:e.z}]}}}var a=t(\"d3\"),o=t(\"../../plots/cartesian/axes\"),s=t(\"../../plots/cartesian/graph_interact\"),l=t(\"../../components/color\"),c=t(\"../../components/drawing\"),u=t(\"../../components/colorscale/get_scale\"),f=t(\"../../components/colorscale/make_scale_function\"),h=t(\"../../lib/topojson_utils\").getTopojsonFeatures,d=t(\"../../lib/geo_location_utils\").locationToFeature,p=t(\"../../lib/array_to_calc_item\"),g=t(\"../../plots/geo/constants\"),v=t(\"./attributes\"),m=e.exports={};m.calcGeoJSON=function(t,e){for(var r,n=[],i=t.locations,a=i.length,o=h(t,e),s=(t.marker||{}).line||{},l=0;a>l;l++)r=d(t.locationmode,i[l],o),void 0!==r&&(r.z=t.z[l],void 0!==t.text&&(r.tx=t.text[l]),p(s.color,r,\"mlc\",l),p(s.width,r,\"mlw\",l),n.push(r));return n.length>0&&(n[0].trace=t),n},m.plot=function(t,e,r){var o,l=t.framework,c=l.select(\"g.choroplethlayer\"),u=l.select(\"g.baselayer\"),f=l.select(\"g.baselayeroverchoropleth\"),h=g.baseLayersOverChoropleth,d=c.selectAll(\"g.trace.choropleth\").data(e,function(t){return t.uid});d.enter().append(\"g\").attr(\"class\",\"trace choropleth\"),d.exit().remove(),d.each(function(e){function r(e,r){if(t.showHover){var n=t.projection(e.properties.ct);c(e),s.loneHover({x:n[0],y:n[1],name:e.nameLabel,text:e.textLabel},{container:t.hoverContainer.node()}),f=u(e,r),t.graphDiv.emit(\"plotly_hover\",f)}}function o(e,r){t.graphDiv.emit(\"plotly_click\",u(e,r))}var l=m.calcGeoJSON(e,t.topojson),c=n(t,e),u=i(e),f=null,h=a.select(this).selectAll(\"path.choroplethlocation\").data(l);h.enter().append(\"path\").classed(\"choroplethlocation\",!0).on(\"mouseover\",r).on(\"click\",o).on(\"mouseout\",function(){s.loneUnhover(t.hoverContainer),t.graphDiv.emit(\"plotly_unhover\",f)}).on(\"mousedown\",function(){s.loneUnhover(t.hoverContainer)}).on(\"mouseup\",r),h.exit().remove()}),f.selectAll(\"*\").remove();for(var p=0;pr;r++)e=f[r],d[r]=e[0]*(t.zmax-t.zmin)+t.zmin,p[r]=e[1];var g=n.extent([t.zmin,t.zmax,a.start,a.start+l*(c-1)]),v=g[t.zminr;r++)e=f[r],d[r]=(e[0]*(c+u-1)-u/2)*l+o,p[r]=e[1];var y=n.scale.linear().interpolate(n.interpolateRgb).domain(d).range(p);return y}},{\"../../components/colorscale/get_scale\":314,d3:113}],507:[function(t,e,r){\"use strict\";function n(t,e,r){_.markTime(\"in Contour.plot\");var n=r[0].trace,a=r[0].x,s=r[0].y,c=n.contours,u=n.uid,f=e.x(),h=e.y(),v=t._fullLayout,b=\"contour\"+u,x=i(c,e,r[0]);if(n.visible!==!0)return v._paper.selectAll(\".\"+b+\",.hm\"+u).remove(),void v._infolayer.selectAll(\".cb\"+u).remove();\"heatmap\"===c.coloring?(n.zauto&&n.autocontour===!1&&(n._input.zmin=n.zmin=c.start-c.size/2,n._input.zmax=n.zmax=n.zmin+x.length*c.size),k(t,e,[r])):v._paper.selectAll(\".hm\"+u).remove(),o(x),l(x);var w=f.c2p(a[0],!0),A=f.c2p(a[a.length-1],!0),M=h.c2p(s[0],!0),T=h.c2p(s[s.length-1],!0),E=[[w,T],[A,T],[A,M],[w,M]],L=d(e,r,b);p(L,E,c),g(L,x,E,c),m(L,x,c),y(L,e,r[0],E),_.markTime(\"done Contour.plot\")}function i(t,e,r){for(var n=t.size||1,i=[],a=t.start;at?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);if(5===r||10===r){var n=(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4;return t>n?5===r?713:1114:5===r?104:208}return 15===r?0:r}function o(t){var e,r,n,i,o,s,l,c,u,f=t[0].z,h=f.length,d=f[0].length,p=2===h||2===d;for(r=0;h-1>r;r++)for(i=[],0===r&&(i=i.concat(A)),r===h-2&&(i=i.concat(M)),e=0;d-1>e;e++)for(n=i.slice(),0===e&&(n=n.concat(T)),e===d-2&&(n=n.concat(E)),o=e+\",\"+r,s=[[f[r][e],f[r][e+1]],[f[r+1][e],f[r+1][e+1]]],u=0;ui;i++){if(s>20?(s=S[s][(l[0]||l[1])<0?0:1],t.crossings[o]=C[s]):delete t.crossings[o],l=L[s],!l){console.log(\"found bad marching index\",s,e,t.level);break}if(d.push(h(t,e,l)),e[0]+=l[0],e[1]+=l[1],u(d[d.length-1],d[d.length-2])&&d.pop(),o=e.join(\",\"),o===a&&l.join(\",\")===p||r&&(l[0]&&(e[0]<0||e[0]>v-2)||l[1]&&(e[1]<0||e[1]>g-2)))break;s=t.crossings[o]}1e4===i&&console.log(\"Infinite loop in contour?\");var m,y,b,x,_,w,k,A=u(d[0],d[d.length-1]),M=0,T=.2*t.smoothing,E=[],z=0;for(i=1;i=z;i--)if(m=E[i],P>m){for(b=0,y=i-1;y>=z&&m+E[y]b&&m+E[b]e;)e++,r=Object.keys(i.crossings)[0].split(\",\").map(Number),s(i,r);1e4===e&&console.log(\"Infinite loop in contour?\")}}function c(t,e,r){var n=0,i=0;return t>20&&e?208===t||1114===t?n=0===r[0]?1:-1:i=0===r[1]?1:-1:-1!==A.indexOf(t)?i=1:-1!==T.indexOf(t)?n=1:-1!==M.indexOf(t)?i=-1:n=-1,[n,i]}function u(t,e){return Math.abs(t[0]-e[0])<.01&&Math.abs(t[1]-e[1])<.01}function f(t,e){var r=t[0]-e[0],n=t[1]-e[1];return Math.sqrt(r*r+n*n)}function h(t,e,r){var n=e[0]+Math.max(r[0],0),i=e[1]+Math.max(r[1],0),a=t.z[i][n],o=t.xaxis,s=t.yaxis;if(r[1]){var l=(t.level-a)/(t.z[i][n+1]-a);return[o.c2p((1-l)*t.x[n]+l*t.x[n+1],!0),s.c2p(t.y[i],!0)]}var c=(t.level-a)/(t.z[i+1][n]-a);return[o.c2p(t.x[n],!0),s.c2p((1-c)*t.y[i]+c*t.y[i+1],!0)]}function d(t,e,r){var n=t.plot.select(\".maplayer\").selectAll(\"g.contour.\"+r).data(e);return n.enter().append(\"g\").classed(\"contour\",!0).classed(r,!0),n.exit().remove(),n}function p(t,e,r){var n=t.selectAll(\"g.contourbg\").data([0]);n.enter().append(\"g\").classed(\"contourbg\",!0);var i=n.selectAll(\"path\").data(\"fill\"===r.coloring?[0]:[]);i.enter().append(\"path\"),i.exit().remove(),i.attr(\"d\",\"M\"+e.join(\"L\")+\"Z\").style(\"stroke\",\"none\")}function g(t,e,r,n){var i=t.selectAll(\"g.contourfill\").data([0]);i.enter().append(\"g\").classed(\"contourfill\",!0);var a=i.selectAll(\"path\").data(\"fill\"===n.coloring?e:[]);a.enter().append(\"path\"),a.exit().remove(),a.each(function(t){var e=v(t,r);e?x.select(this).attr(\"d\",e).style(\"stroke\",\"none\"):x.select(this).remove()})}function v(t,e){function r(t){return Math.abs(t[1]-e[0][1])<.01}function n(t){return Math.abs(t[1]-e[2][1])<.01}function i(t){return Math.abs(t[0]-e[0][0])<.01}function a(t){return Math.abs(t[0]-e[2][0])<.01}for(var o,s,l,c,u,f,h=t.edgepaths.length||t.z[0][0]l;l++){if(!o){console.log(\"missing end?\",d,t);break}for(r(o)&&!a(o)?s=e[1]:i(o)?s=e[0]:n(o)?s=e[3]:a(o)&&(s=e[2]),u=0;u=0&&(s=v,c=u):Math.abs(o[1]-s[1])<.01?Math.abs(o[1]-v[1])<.01&&(v[0]-o[0])*(s[0]-v[0])>=0&&(s=v,c=u):console.log(\"endpt to newendpt is not vert. or horz.\",o,s,v)}if(o=s,c>=0)break;h+=\"L\"+s}if(c===t.edgepaths.length){console.log(\"unclosed perimeter path\");break}d=c,g=-1===p.indexOf(d),g&&(d=p[0],h+=\"Z\")}for(d=0;de;e++)s.push(1);for(e=0;a>e;e++)i.push(s.slice());for(e=0;eo;o++)for(n=i(l,o),u[o]=new Array(n),s=0;n>s;s++)u[o][s]=e(a(l,o,s));return u}function i(t,e,r,n,i,a){var o,s,l,c=[],u=h.traceIs(t,\"contour\"),f=h.traceIs(t,\"histogram\"),d=h.traceIs(t,\"gl2d\");if(Array.isArray(e)&&!f&&\"category\"!==a.type){e=e.map(a.d2c);var p=e.length;if(!(i>=p))return u?e.slice(0,i):e.slice(0,i+1);if(u||d)c=e.slice(0,i);else if(1===i)c=[e[0]-.5,e[0]+.5];else{for(c=[1.5*e[0]-.5*e[1]],l=1;p>l;l++)c.push(.5*(e[l-1]+e[l]));c.push(1.5*e[p-1]-.5*e[p-2])}if(i>p){var g=c[c.length-1],v=g-c[c.length-2];for(l=p;i>l;l++)g+=v,c.push(g)}}else for(s=n||1,o=void 0===r?0:f||\"category\"===a.type?r:a.d2c(r),l=u||d?0:-.5;i>l;l++)c.push(o+s*l);return c}function a(t){return.5-.25*Math.min(1,.5*t)}function o(t,e,r){var n,i,o=1;if(Array.isArray(r))for(n=0;nn&&o>y;n++)o=l(t,e,a(o));return o>y&&console.log(\"interp2d didn't converge quickly\",o),t}function s(t){var e,r,n,i,a,o,s,l,c=[],u={},f=[],h=t[0],d=[],p=[0,0,0],g=m(t);for(r=0;rn;n++)void 0===d[n]&&(o=(void 0!==d[n-1]?1:0)+(void 0!==d[n+1]?1:0)+(void 0!==e[n]?1:0)+(void 0!==h[n]?1:0),o?(0===r&&o++,0===n&&o++,r===t.length-1&&o++,n===d.length-1&&o++,4>o&&(u[[r,n]]=[r,n,o]),c.push([r,n,o])):f.push([r,n]));for(;f.length;){for(s={},l=!1,a=f.length-1;a>=0;a--)i=f[a],r=i[0],n=i[1],o=((u[[r-1,n]]||p)[2]+(u[[r+1,n]]||p)[2]+(u[[r,n-1]]||p)[2]+(u[[r,n+1]]||p)[2])/20,o&&(s[i]=[r,n,o],f.splice(a,1),l=!0);if(!l)throw\"findEmpties iterated with no new neighbors\";for(i in s)u[i]=s[i],c.push(s[i])}return c.sort(function(t,e){return e[2]-t[2]})}function l(t,e,r){var n,i,a,o,s,l,c,u,f,h,d,p,g,v=0;for(o=0;os;s++)l=b[s],c=t[i+l[0]],c&&(u=c[a+l[1]],void 0!==u&&(0===h?p=g=u:(p=Math.min(p,u),g=Math.max(g,u)),f++,h+=u));if(0===f)throw\"iterateInterp2d order is wrong: no defined neighbors\";t[i][a]=h/f,void 0===d?4>f&&(v=1):(t[i][a]=(1+r)*t[i][a]-r*d,g>p&&(v=Math.max(v,Math.abs(t[i][a]-d)/(g-p))))}return v}var c=t(\"fast-isnumeric\"),u=t(\"../../lib\"),f=t(\"../../plots/cartesian/axes\"),h=t(\"../../plots/plots\"),d=t(\"../histogram2d/calc\"),p=t(\"../../components/colorscale/calc\"),g=t(\"./has_columns\"),v=t(\"./convert_column_xyz\"),m=t(\"./max_row_length\");e.exports=function(t,e){function r(t){E=e._input.zsmooth=e.zsmooth=!1,u.notifier(\"cannot fast-zsmooth: \"+t)}u.markTime(\"start convert x&y\");var a,l,c,y,b,x,_,w,k=f.getFromId(t,e.xaxis||\"x\"),A=f.getFromId(t,e.yaxis||\"y\"),M=h.traceIs(e,\"contour\"),T=h.traceIs(e,\"histogram\"),E=M?\"best\":e.zsmooth;if(k._minDtick=0,A._minDtick=0,u.markTime(\"done convert x&y\"),T){var L=d(t,e);a=L.x,l=L.x0,c=L.dx,y=L.y,b=L.y0,x=L.dy,_=L.z}else g(e)&&v(e,k,A),a=e.x?k.makeCalcdata(e,\"x\"):[],y=e.y?A.makeCalcdata(e,\"y\"):[],l=e.x0||0,c=e.dx||1,b=e.y0||0,x=e.dy||1,_=n(e),(M||e.connectgaps)&&(e._emptypoints=s(_),e._interpz=o(_,e._emptypoints,e._interpz));if(\"fast\"===E)if(\"log\"===k.type||\"log\"===A.type)r(\"log axis found\");else if(!T){if(a.length){var S=(a[a.length-1]-a[0])/(a.length-1),C=Math.abs(S/100);for(w=0;wC){r(\"x scale is not linear\");break}}if(y.length&&\"fast\"===E){var z=(y[y.length-1]-y[0])/(y.length-1),P=Math.abs(z/100);for(w=0;wP){r(\"y scale is not linear\");break}}}var R=m(_),O=\"scaled\"===e.xtype?\"\":e.x,I=i(e,O,l,c,R,k),N=\"scaled\"===e.ytype?\"\":e.y,j=i(e,N,b,x,_.length,A);f.expand(k,I),f.expand(A,j);var F={x:I,y:j,z:_};if(p(e,_,\"\",\"z\"),M&&e.contours&&\"heatmap\"===e.contours.coloring){var D=\"contour\"===e.type?\"heatmap\":\"histogram2d\";F.xfill=i(D,O,l,c,R,k),F.yfill=i(D,N,b,x,_.length,A)}return[F]};var y=.01,b=[[-1,0],[1,0],[0,-1],[0,1]]},{\"../../components/colorscale/calc\":310,\"../../lib\":381,\"../../plots/cartesian/axes\":403,\"../../plots/plots\":452,\"../histogram2d/calc\":531,\"./convert_column_xyz\":513,\"./has_columns\":515,\"./max_row_length\":518,\"fast-isnumeric\":117}],512:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../plots/plots\"),s=t(\"../../components/colorscale/get_scale\"),l=t(\"../../components/colorbar/draw\");e.exports=function(t,e){var r=e[0].trace,c=\"cb\"+r.uid,u=s(r.colorscale),f=r.zmin,h=r.zmax;if(i(f)||(f=a.aggNums(Math.min,null,r.z)),i(h)||(h=a.aggNums(Math.max,null,r.z)),t._fullLayout._infolayer.selectAll(\".\"+c).remove(),!r.showscale)return void o.autoMargin(t,c);var d=e[0].t.cb=l(t,c);d.fillcolor(n.scale.linear().domain(u.map(function(t){return f+t[0]*(h-f)})).range(u.map(function(t){return t[1]}))).filllevels({start:f,end:h,size:(h-f)/254}).options(r.colorbar)(),a.markTime(\"done colorbar\")}},{\"../../components/colorbar/draw\":306,\"../../components/colorscale/get_scale\":314,\"../../lib\":381,\"../../plots/plots\":452,d3:113,\"fast-isnumeric\":117}],513:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t,e,r){var i,a=t.x.slice(),o=t.y.slice(),s=t.z,l=t.text,c=Math.min(a.length,o.length,s.length),u=void 0!==l&&!Array.isArray(l[0]);for(ci;i++)a[i]=e.d2c(a[i]),o[i]=r.d2c(o[i]);var f,h,d,p=n.distinctVals(a),g=p.vals,v=n.distinctVals(o),m=v.vals,y=n.init2dArray(m.length,g.length);for(u&&(d=n.init2dArray(m.length,g.length)),i=0;c>i;i++)f=n.findBin(a[i]+p.minDiff/2,g),h=n.findBin(o[i]+v.minDiff/2,m),y[h][f]=s[i],u&&(d[h][f]=l[i]);t.x=g,t.y=m,t.z=y,u&&(t.text=d)}},{\"../../lib\":381}],514:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./has_columns\"),a=t(\"./xyz_defaults\"),o=t(\"../../components/colorscale/defaults\"),s=t(\"./attributes\");e.exports=function(t,e,r,l){function c(r,i){return n.coerce(t,e,s,r,i)}var u=a(t,e,c);return u?(c(\"text\"),c(\"zsmooth\"),c(\"connectgaps\",i(e)&&e.zsmooth!==!1),void o(t,e,l,c,{prefix:\"\",cLetter:\"z\"})):void(e.visible=!1)}},{\"../../components/colorscale/defaults\":312,\"../../lib\":381,\"./attributes\":510,\"./has_columns\":515,\"./xyz_defaults\":521}],515:[function(t,e,r){\"use strict\";e.exports=function(t){return!Array.isArray(t.z[0])}},{}],516:[function(t,e,r){\"use strict\";var n=t(\"../../plots/cartesian/graph_interact\"),i=t(\"../../lib\");e.exports=function(t,e,r,a,o){if(!(t.distancec||c>=m[0].length||0>u||u>m.length)return}else{if(n.inbox(e-g[0],e-g[g.length-1])>n.MAXDIST||n.inbox(r-v[0],r-v[v.length-1])>n.MAXDIST)return;if(o){var w;for(b=[2*g[0]-g[1]],w=1;w0;)_=v.c2p(C[M]),M--;for(x>_&&(w=_,_=x,x=w,N=!0),M=0;void 0===k&&M0;)A=m.c2p(z[M]),M--;if(k>A&&(w=k,k=A,A=w,j=!0),P&&(C=r[0].xfill,z=r[0].yfill),\"fast\"!==R){var F=\"best\"===R?0:.5;x=Math.max(-F*v._length,x),_=Math.min((1+F)*v._length,_),k=Math.max(-F*m._length,k),A=Math.min((1+F)*m._length,A)}var D=Math.round(_-x),B=Math.round(A-k);if(!(0>=D||0>=B)){var U,V;\"fast\"===R?(U=I,V=O):(U=D,V=B);var q=document.createElement(\"canvas\");q.width=U,q.height=V;var H,G,Y=q.getContext(\"2d\"),X=i.scale.linear().domain(S.map(function(t){return t[0]})).range(S.map(function(t){var e=a(t[1]).toRgb();return[e.r,e.g,e.b,e.a]})).clamp(!0);\"fast\"===R?(H=N?function(t){return I-1-t}:o.identity,G=j?function(t){return O-1-t}:o.identity):(H=function(t){return o.constrain(Math.round(v.c2p(C[t])-x),0,D)},G=function(t){return o.constrain(Math.round(m.c2p(z[t])-k),0,B)});var W,Z,K,$,Q,J,tt=G(0),et=[tt,tt],rt=N?0:1,nt=j?0:1,it=0,at=0,ot=0,st=0;if(o.markTime(\"done init png\"),R){var lt=0,ct=new Uint8Array(D*B*4);if(\"best\"===R){var ut,ft,ht,dt=new Array(C.length),pt=new Array(z.length),gt=new Array(D);for(M=0;MM;M++)gt[M]=n(M,dt);for(Z=0;B>Z;Z++)for(ut=n(Z,pt),ft=T[ut.bin0],ht=T[ut.bin1],M=0;D>M;M++,lt+=4)J=d(ft,ht,gt[M],ut),h(ct,lt,J)}else for(Z=0;O>Z;Z++)for(Q=T[Z],et=G(Z),M=0;D>M;M++)J=f(Q[M],1),lt=4*(et*D+H(M)),h(ct,lt,J);var vt=Y.createImageData(D,B);vt.data.set(ct),Y.putImageData(vt,0,0)}else for(Z=0;O>Z;Z++)if(Q=T[Z],et.reverse(),et[nt]=G(Z+1),et[0]!==et[1]&&void 0!==et[0]&&void 0!==et[1])for(K=H(0),W=[K,K],M=0;I>M;M++)W.reverse(),W[rt]=H(M+1),W[0]!==W[1]&&void 0!==W[0]&&void 0!==W[1]&&($=Q[M],J=f($,(W[1]-W[0])*(et[1]-et[0])),Y.fillStyle=\"rgba(\"+J.join(\",\")+\")\",Y.fillRect(W[0],et[0],W[1]-W[0],et[1]-et[0]));o.markTime(\"done filling png\"),at=Math.round(at/it),ot=Math.round(ot/it),st=Math.round(st/it);var mt=a(\"rgb(\"+at+\",\"+ot+\",\"+st+\")\");t._hmpixcount=(t._hmpixcount||0)+it,t._hmlumcount=(t._hmlumcount||0)+it*mt.getLuminance();var yt=e.plot.select(\".imagelayer\").selectAll(\"g.hm.\"+b).data([0]);yt.enter().append(\"g\").classed(\"hm\",!0).classed(b,!0),yt.exit().remove();var bt=yt.selectAll(\"image\").data(r);bt.enter().append(\"svg:image\"),bt.exit().remove(),bt.attr({xmlns:c.svg,\"xlink:href\":q.toDataURL(\"image/png\"),height:B,width:D,x:x,y:k,preserveAspectRatio:\"none\"}),o.markTime(\"done showing png\")}}var i=t(\"d3\"),a=t(\"tinycolor2\"),o=t(\"../../lib\"),s=t(\"../../plots/plots\"),l=t(\"../../components/colorscale/get_scale\"),c=t(\"../../constants/xmlns_namespaces\"),u=t(\"./max_row_length\");e.exports=function(t,e,r){for(var i=0;i0&&(n=!0);for(var s=0;si;i++)e[i]?(t[i]/=e[i],n+=t[i]):t[i]=null;return n}},{}],524:[function(t,e,r){\"use strict\";e.exports=function(t,e,r,n){return r(\"histnorm\"),n.forEach(function(t){var e=r(t+\"bins.start\"),n=r(t+\"bins.end\"),i=r(\"autobin\"+t,!(e&&n));r(i?\"nbins\"+t:t+\"bins.size\")}),e}},{}],525:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports={count:function(t,e,r){return r[t]++,1},sum:function(t,e,r,i){var a=i[e];return n(a)?(a=Number(a),r[t]+=a,a):0},avg:function(t,e,r,i,a){var o=i[e];return n(o)&&(o=Number(o),r[t]+=o,a[t]++),0},min:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]>a)return r[t]=a,a-r[t]}return 0},max:function(t,e,r,i){var a=i[e];if(n(a)){if(a=Number(a),!n(r[t]))return r[t]=a,a;if(r[t]r&&c.length<5e3;)g=a.tickIncrement(r,b.size),c.push((r+g)/2),u.push(S),x&&_.push(r),E&&w.push(1/(g-r)),P&&k.push(0),r=g;var R=u.length;for(r=0;r=0&&R>m&&(A+=C(m,r,u,y,k));P&&(A=l(u,k)),z&&z(u,A,w);var O=Math.min(c.length,u.length),I=[],N=0,j=O-1;for(r=0;O>r;r++)if(u[r]){N=r;break}for(r=O-1;r>N;r--)if(u[r]){j=r;break}for(r=N;j>=r;r++)n(c[r])&&n(u[r])&&I.push({p:c[r],s:u[r],b:0});return I}}},{\"../../lib\":381,\"../../plots/cartesian/axes\":403,\"./average\":523,\"./bin_functions\":525,\"./norm_functions\":529,\"fast-isnumeric\":117}],527:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/color\"),a=t(\"./bin_defaults\"),o=t(\"../bar/style_defaults\"),s=t(\"../../components/errorbars/defaults\"),l=t(\"./attributes\");e.exports=function(t,e,r,c){function u(r,i){return n.coerce(t,e,l,r,i)}var f=u(\"x\"),h=u(\"y\");u(\"text\");var d=u(\"orientation\",h&&!f?\"h\":\"v\"),p=e[\"v\"===d?\"x\":\"y\"];if(!p||!p.length)return void(e.visible=!1);var g=e[\"h\"===d?\"x\":\"y\"];g&&u(\"histfunc\");var v=\"h\"===d?[\"y\"]:[\"x\"];a(t,e,u,v),o(t,e,u,r,c),s(t,e,i.defaultLine,{axis:\"y\"}),s(t,e,i.defaultLine,{axis:\"x\",inherit:\"y\"})}},{\"../../components/color\":303,\"../../components/errorbars/defaults\":330,\"../../lib\":381,\"../bar/style_defaults\":484,\"./attributes\":522,\"./bin_defaults\":524}],528:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.layoutAttributes=t(\"../bar/layout_attributes\"),n.supplyDefaults=t(\"./defaults\"),n.supplyLayoutDefaults=t(\"../bar/layout_defaults\"),n.calc=t(\"./calc\"),n.setPositions=t(\"../bar/set_positions\"),n.plot=t(\"../bar/plot\"),n.style=t(\"../bar/style\"),n.colorbar=t(\"../scatter/colorbar\"),n.hoverPoints=t(\"../bar/hover\"),n.moduleType=\"trace\",n.name=\"histogram\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"bar\",\"histogram\",\"oriented\",\"errorBarsOK\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":411,\"../bar/hover\":477,\"../bar/layout_attributes\":479,\"../bar/layout_defaults\":480,\"../bar/plot\":481,\"../bar/set_positions\":482,\"../bar/style\":483,\"../scatter/colorbar\":557,\"./attributes\":522,\"./calc\":526,\"./defaults\":527}],529:[function(t,e,r){\"use strict\";e.exports={percent:function(t,e){for(var r=t.length,n=100/e,i=0;r>i;i++)t[i]*=n},probability:function(t,e){for(var r=t.length,n=0;r>n;n++)t[n]/=e},density:function(t,e,r,n){var i=t.length;n=n||1;for(var a=0;i>a;a++)t[a]*=r[a]*n},\"probability density\":function(t,e,r,n){var i=t.length;n&&(e/=n);for(var a=0;i>a;a++)t[a]*=r[a]/e}}},{}],530:[function(t,e,r){\"use strict\";var n=t(\"../histogram/attributes\"),i=t(\"../heatmap/attributes\");e.exports={x:n.x,y:n.y,z:{valType:\"data_array\"},marker:{color:{valType:\"data_array\"}},histnorm:n.histnorm,histfunc:n.histfunc,autobinx:n.autobinx,nbinsx:n.nbinsx,xbins:n.xbins,autobiny:n.autobiny,nbinsy:n.nbinsy,ybins:n.ybins,zauto:i.zauto,zmin:i.zmin,zmax:i.zmax,colorscale:i.colorscale,autocolorscale:i.autocolorscale,reversescale:i.reversescale,showscale:i.showscale,zsmooth:i.zsmooth,_nestedModules:{colorbar:\"Colorbar\"}}},{\"../heatmap/attributes\":510,\"../histogram/attributes\":522}],531:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../histogram/bin_functions\"),o=t(\"../histogram/norm_functions\"),s=t(\"../histogram/average\");e.exports=function(t,e){var r,l,c,u,f,h,d=i.getFromId(t,e.xaxis||\"x\"),p=e.x?d.makeCalcdata(e,\"x\"):[],g=i.getFromId(t,e.yaxis||\"y\"),v=e.y?g.makeCalcdata(e,\"y\"):[],m=Math.min(p.length,v.length);p.length>m&&p.splice(m,p.length-m),v.length>m&&v.splice(m,v.length-m),n.markTime(\"done convert data\"),!e.autobinx&&\"xbins\"in e||(e.xbins=i.autoBin(p,d,e.nbinsx,\"2d\"),\"histogram2dcontour\"===e.type&&(e.xbins.start-=e.xbins.size,e.xbins.end+=e.xbins.size),e._input.xbins=e.xbins),!e.autobiny&&\"ybins\"in e||(e.ybins=i.autoBin(v,g,e.nbinsy,\"2d\"),\"histogram2dcontour\"===e.type&&(e.ybins.start-=e.ybins.size,e.ybins.end+=e.ybins.size),e._input.ybins=e.ybins),n.markTime(\"done autoBin\"),f=[];var y,b,x=[],_=[],w=\"string\"==typeof e.xbins.size?[]:e.xbins,k=\"string\"==typeof e.xbins.size?[]:e.ybins,A=0,M=[],T=e.histnorm,E=e.histfunc,L=-1!==T.indexOf(\"density\"),S=\"max\"===E||\"min\"===E,C=S?null:0,z=a.count,P=o[T],R=!1,O=[],I=[],N=\"z\"in e?e.z:\"marker\"in e&&Array.isArray(e.marker.color)?e.marker.color:\"\";N&&\"count\"!==E&&(R=\"avg\"===E,z=a[E]);var j=e.xbins,F=j.end+(j.start-i.tickIncrement(j.start,j.size))/1e6;for(h=j.start;F>h;h=i.tickIncrement(h,j.size))x.push(C),Array.isArray(w)&&w.push(h),R&&_.push(0);Array.isArray(w)&&w.push(h);var D=x.length;for(r=e.xbins.start,l=(h-r)/D,r+=l/2,j=e.ybins,F=j.end+(j.start-i.tickIncrement(j.start,j.size))/1e6,h=j.start;F>h;h=i.tickIncrement(h,j.size))f.push(x.concat()),Array.isArray(k)&&k.push(h),R&&M.push(_.concat());Array.isArray(k)&&k.push(h);var B=f.length;for(c=e.ybins.start,u=(h-c)/B,c+=u/2,L&&(O=x.map(function(t,e){return Array.isArray(w)?1/(w[e+1]-w[e]):1/l}),I=f.map(function(t,e){return Array.isArray(k)?1/(k[e+1]-k[e]):1/u})),n.markTime(\"done making bins\"),h=0;m>h;h++)y=n.findBin(p[h],w),b=n.findBin(v[h],k),y>=0&&D>y&&b>=0&&B>b&&(A+=z(y,h,f[b],N,M[b]));if(R)for(b=0;B>b;b++)A+=s(f[b],M[b]);if(P)for(b=0;B>b;b++)P(f[b],A,O,I[b]);return n.markTime(\"done binning\"),{x:p,x0:r,dx:l,y:v,y0:c,dy:u,z:f}}},{\"../../lib\":381,\"../../plots/cartesian/axes\":403,\"../histogram/average\":523,\"../histogram/bin_functions\":525,\"../histogram/norm_functions\":529}],532:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./sample_defaults\"),a=t(\"../../components/colorscale/defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r){function s(r,i){return n.coerce(t,e,o,r,i)}i(t,e,s),s(\"zsmooth\"),a(t,e,r,s,{prefix:\"\",cLetter:\"z\"})}},{\"../../components/colorscale/defaults\":312,\"../../lib\":381,\"./attributes\":530,\"./sample_defaults\":534}],533:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"../heatmap/calc\"),n.plot=t(\"../heatmap/plot\"),n.colorbar=t(\"../heatmap/colorbar\"),n.style=t(\"../heatmap/style\"),n.hoverPoints=t(\"../heatmap/hover\"),n.moduleType=\"trace\",n.name=\"histogram2d\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"2dMap\",\"histogram\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":411,\"../heatmap/calc\":511,\"../heatmap/colorbar\":512,\"../heatmap/hover\":516,\"../heatmap/plot\":519,\"../heatmap/style\":520,\"./attributes\":530,\"./defaults\":532}],534:[function(t,e,r){\"use strict\";var n=t(\"../histogram/bin_defaults\");e.exports=function(t,e,r){var i=r(\"x\"),a=r(\"y\");if(!(i&&i.length&&a&&a.length))return void(e.visible=!1);var o=r(\"z\")||r(\"marker.color\");o&&r(\"histfunc\");var s=[\"x\",\"y\"];n(t,e,r,s)}},{\"../histogram/bin_defaults\":524}],535:[function(t,e,r){\"use strict\";var n=t(\"../histogram2d/attributes\"),i=t(\"../contour/attributes\");e.exports={x:n.x,y:n.y,z:n.z,marker:n.marker,histnorm:n.histnorm,histfunc:n.histfunc,autobinx:n.autobinx,nbinsx:n.nbinsx,xbins:n.xbins,autobiny:n.autobiny,nbinsy:n.nbinsy,ybins:n.ybins,zauto:i.zauto,zmin:i.zmin,zmax:i.zmax,colorscale:i.colorscale,autocolorscale:i.autocolorscale,reversescale:i.reversescale,showscale:i.showscale,autocontour:i.autocontour,ncontours:i.ncontours,contours:i.contours,line:i.line,_nestedModules:{colorbar:\"Colorbar\"}}},{\"../contour/attributes\":500,\"../histogram2d/attributes\":530}],536:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../histogram2d/sample_defaults\"),a=t(\"../contour/style_defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r,s){function l(r,i){return n.coerce(t,e,o,r,i)}i(t,e,l);var c=n.coerce2(t,e,o,\"contours.start\"),u=n.coerce2(t,e,o,\"contours.end\"),f=l(\"autocontour\",!(c&&u));l(f?\"ncontours\":\"contours.size\"),a(t,e,l,s)}},{\"../../lib\":381,\"../contour/style_defaults\":509,\"../histogram2d/sample_defaults\":534,\"./attributes\":535}],537:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.calc=t(\"../contour/calc\"),n.plot=t(\"../contour/plot\"),n.style=t(\"../contour/style\"),n.colorbar=t(\"../contour/colorbar\"),n.hoverPoints=t(\"../contour/hover\"),n.moduleType=\"trace\",n.name=\"histogram2dcontour\",n.basePlotModule=t(\"../../plots/cartesian\"),n.categories=[\"cartesian\",\"2dMap\",\"contour\",\"histogram\"],n.meta={},e.exports=n},{\"../../plots/cartesian\":411,\"../contour/calc\":501,\"../contour/colorbar\":502,\"../contour/hover\":504,\"../contour/plot\":507,\"../contour/style\":508,\"./attributes\":535,\"./defaults\":536}],538:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/attributes\"),i=t(\"../surface/attributes\"),a=t(\"../../lib/extend\").extendFlat;e.exports={x:{valType:\"data_array\"},y:{valType:\"data_array\"},z:{valType:\"data_array\"},i:{valType:\"data_array\"},j:{valType:\"data_array\"},k:{valType:\"data_array\"},delaunayaxis:{valType:\"enumerated\",values:[\"x\",\"y\",\"z\"],dflt:\"z\"},alphahull:{valType:\"number\",dflt:-1},intensity:{valType:\"data_array\"},color:{valType:\"color\"},vertexcolor:{valType:\"data_array\"},facecolor:{valType:\"data_array\"},opacity:a({},i.opacity),flatshading:{valType:\"boolean\",dflt:!1},contour:{show:a({},i.contours.x.show,{}),color:a({},i.contours.x.color),width:a({},i.contours.x.width)},colorscale:n.colorscale,reversescale:n.reversescale,showscale:n.showscale,lightposition:{x:a({},i.lightposition.x,{dflt:1e5}),y:a({},i.lightposition.y,{dflt:1e5}),z:a({},i.lightposition.z,{dflt:0})},lighting:a({},{vertexnormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-12},facenormalsepsilon:{valType:\"number\",min:0,max:1,dflt:1e-6}},i.lighting),_nestedModules:{colorbar:\"Colorbar\"}}},{\"../../components/colorscale/attributes\":309,\"../../lib/extend\":376,\"../surface/attributes\":599}],539:[function(t,e,r){\"use strict\";function n(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name=\"\",this.color=\"#fff\",this.data=null,this.showContour=!1}function i(t){return t.map(function(t){var e=t[0],r=c(t[1]),n=r.toRgb();return{index:e,rgb:[n.r,n.g,n.b,1]}})}function a(t){return t.map(d)}function o(t,e,r){for(var n=new Array(t.length),i=0;i0)s=f(t.alphahull,l);else{var c=[\"x\",\"y\",\"z\"].indexOf(t.delaunayaxis);s=u(l.map(function(t){return[t[(c+1)%3],t[(c+2)%3]]}))}var p={positions:l,cells:s,lightPosition:[t.lightposition.x,t.lightposition.y,t.lightposition.z],ambient:t.lighting.ambient,diffuse:t.lighting.diffuse,specular:t.lighting.specular,roughness:t.lighting.roughness,fresnel:t.lighting.fresnel,vertexNormalsEpsilon:t.lighting.vertexnormalsepsilon,faceNormalsEpsilon:t.lighting.facenormalsepsilon,opacity:t.opacity,contourEnable:t.contour.show,contourColor:d(t.contour.color).slice(0,3),contourWidth:t.contour.width,useFacetNormals:t.flatshading};t.intensity?(this.color=\"#fff\",p.vertexIntensity=t.intensity,p.colormap=i(t.colorscale)):t.vertexcolor?(this.color=t.vertexcolors[0],p.vertexColors=a(t.vertexcolor)):t.facecolor?(this.color=t.facecolor[0],p.cellColors=a(t.facecolor)):(this.color=t.color,p.meshColor=d(t.color)),this.mesh.update(p)},p.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=s},{\"../../lib/str2rgbarray\":392,\"alpha-shape\":40,\"convex-hull\":102,\"delaunay-triangulate\":114,\"gl-mesh3d\":150,tinycolor2:274}],540:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../../components/colorbar/defaults\"),a=t(\"./attributes\");e.exports=function(t,e,r,o){function s(r,i){return n.coerce(t,e,a,r,i)}function l(t){var e=t.map(function(t){var e=s(t);return e&&Array.isArray(e)?e:null});return e.every(function(t){return t&&t.length===e[0].length})&&e}var c=l([\"x\",\"y\",\"z\"]),u=l([\"i\",\"j\",\"k\"]);return c?(u&&u.forEach(function(t){for(var e=0;el||(c=p[r],void 0!==c&&\"\"!==c||(c=r),c=String(c),void 0===y[c]&&(y[c]=!0,u=a(e.marker.colors[r]),u.isValid()?(u=o.addOpacity(u,u.getAlpha()),m[c]||(m[c]=u)):m[c]?u=m[c]:(u=!1,b=!0),f=-1!==_.indexOf(c),f||(x+=l),g.push({v:l,label:c,color:u,i:r,hidden:f}))));if(e.sort&&g.sort(function(t,e){return e.v-t.v}),b)for(r=0;r\")}return g};var l},{\"../../components/color\":303,\"./helpers\":546,\"fast-isnumeric\":117,tinycolor2:274}],545:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\");e.exports=function(t,e,r,a){function o(r,a){return n.coerce(t,e,i,r,a)}var s=n.coerceFont,l=o(\"values\");if(!Array.isArray(l)||!l.length)return void(e.visible=!1);var c=o(\"labels\");Array.isArray(c)||(o(\"label0\"),o(\"dlabel\"));var u=o(\"marker.line.width\");u&&o(\"marker.line.color\");var f=o(\"marker.colors\");Array.isArray(f)||(e.marker.colors=[]),o(\"scalegroup\");var h=o(\"text\"),d=o(\"textinfo\",Array.isArray(h)?\"text+percent\":\"percent\");if(o(\"hoverinfo\",1===a._dataLength?\"label+text+value+percent\":void 0),d&&\"none\"!==d){var p=o(\"textposition\"),g=Array.isArray(p)||\"auto\"===p,v=g||\"inside\"===p,m=g||\"outside\"===p;if(v||m){var y=s(o,\"textfont\",a.font);v&&s(o,\"insidetextfont\",y),m&&s(o,\"outsidetextfont\",y)}}o(\"domain.x\"),o(\"domain.y\"),o(\"hole\"),o(\"sort\"),o(\"direction\"),o(\"rotation\"),o(\"pull\")}},{\"../../lib\":381,\"./attributes\":542}],546:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");r.formatPiePercent=function(t,e){var r=(100*t).toPrecision(3);return-1!==r.lastIndexOf(\".\")&&(r=r.replace(/[.]?0+$/,\"\")),n.numSeparate(r,e)+\"%\"},r.formatPieValue=function(t,e){var r=t.toPrecision(10);return-1!==r.lastIndexOf(\".\")&&(r=r.replace(/[.]?0+$/,\"\")),n.numSeparate(r,e)}},{\"../../lib\":381}],547:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.supplyLayoutDefaults=t(\"./layout_defaults\"),n.layoutAttributes=t(\"./layout_attributes\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"./style\"),n.styleOne=t(\"./style_one\"),n.moduleType=\"trace\",n.name=\"pie\",n.basePlotModule=t(\"./base_plot\"),n.categories=[\"pie\",\"showLegend\"],n.meta={},e.exports=n},{\"./attributes\":542,\"./base_plot\":543,\"./calc\":544,\"./defaults\":545,\"./layout_attributes\":548,\"./layout_defaults\":549,\"./plot\":550,\"./style\":551,\"./style_one\":552}],548:[function(t,e,r){\"use strict\";e.exports={hiddenlabels:{valType:\"data_array\"}}},{}],549:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./layout_attributes\");e.exports=function(t,e){function r(r,a){return n.coerce(t,e,i,r,a)}r(\"hiddenlabels\")}},{\"../../lib\":381,\"./layout_attributes\":548}],550:[function(t,e,r){\"use strict\";function n(t,e,r){var n=Math.sqrt(t.width*t.width+t.height*t.height),a=t.width/t.height,o=Math.PI*Math.min(e.v/r.vTotal,.5),s=1-r.trace.hole,l=i(e,r),c={scale:l*r.r*2/n,rCenter:1-l,rotate:0};if(c.scale>=1)return c;var u=a+1/(2*Math.tan(o)),f=r.r*Math.min(1/(Math.sqrt(u*u+.5)+u),s/(Math.sqrt(a*a+s/2)+a)),h={scale:2*f/t.height,rCenter:Math.cos(f/r.r)-f*a/r.r,rotate:(180/Math.PI*e.midangle+720)%180-90},d=1/a,p=d+1/(2*Math.tan(o)),g=r.r*Math.min(1/(Math.sqrt(p*p+.5)+p),s/(Math.sqrt(d*d+s/2)+d)),v={scale:2*g/t.width,rCenter:Math.cos(g/r.r)-g/a/r.r,rotate:(180/Math.PI*e.midangle+810)%180-90},m=v.scale>h.scale?v:h;return c.scale<1&&m.scale>c.scale?m:c}function i(t,e){if(t.v===e.vTotal&&!e.trace.hole)return 1;var r=Math.PI*Math.min(t.v/e.vTotal,.5);return Math.min(1/(1+1/Math.sin(r)),(1-e.trace.hole)/2)}function a(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return 0>r&&(i*=-1),0>n&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function o(t,e){function r(t,e){return t.pxmid[1]-e.pxmid[1]}function n(t,e){return e.pxmid[1]-t.pxmid[1]}function i(t,r){r||(r={});var n,i,a,s,h,d,g=r.labelExtraY+(o?r.yLabelMax:r.yLabelMin),v=o?t.yLabelMin:t.yLabelMax,m=o?t.yLabelMax:t.yLabelMin,y=t.cyFinal+c(t.px0[1],t.px1[1]),b=g-v;if(b*f>0&&(t.labelExtraY=b),Array.isArray(e.pull))for(i=0;i=e.pull[a.i]||((t.pxmid[1]-a.pxmid[1])*f>0?(s=a.cyFinal+c(a.px0[1],a.px1[1]),b=s-v-t.labelExtraY,b*f>0&&(t.labelExtraY+=b)):(m+t.labelExtraY-y)*f>0&&(n=3*u*Math.abs(i-p.indexOf(t)),h=a.cxFinal+l(a.px0[0],a.px1[0]),d=h+n-(t.cxFinal+t.pxmid[0])-t.labelExtraX,d*u>0&&(t.labelExtraX+=d)))}var a,o,s,l,c,u,f,h,d,p,g,v,m;for(o=0;2>o;o++)for(s=o?r:n,c=o?Math.max:Math.min,f=o?1:-1,a=0;2>a;a++){for(l=a?Math.max:Math.min,u=a?1:-1,h=t[o][a],h.sort(s),d=t[1-o][a],p=d.concat(h),v=[],g=0;gu&&(u=s.pull[a]);o.r=Math.min(r/c(s.tilt,Math.sin(l),s.depth),n/c(s.tilt,Math.cos(l),s.depth))/(2+2*u),o.cx=e.l+e.w*(s.domain.x[1]+s.domain.x[0])/2,o.cy=e.t+e.h*(2-s.domain.y[1]-s.domain.y[0])/2,s.scalegroup&&-1===d.indexOf(s.scalegroup)&&d.push(s.scalegroup)}for(a=0;af.vTotal/2?1:0)}function c(t,e,r){if(!t)return 1;var n=Math.sin(t*Math.PI/180);return Math.max(.01,r*n*Math.abs(e)+2*Math.sqrt(1-n*n*e*e))}var u=t(\"d3\"),f=t(\"../../plots/cartesian/graph_interact\"),h=t(\"../../components/color\"),d=t(\"../../components/drawing\"),p=t(\"../../lib/svg_text_utils\"),g=t(\"./helpers\");e.exports=function(t,e){var r=t._fullLayout;s(e,r._size);var c=r._pielayer.selectAll(\"g.trace\").data(e);c.enter().append(\"g\").attr({\"stroke-linejoin\":\"round\",\"class\":\"trace\"}),c.exit().remove(),c.order(),c.each(function(e){var s=u.select(this),c=e[0],v=c.trace,m=0,y=(v.depth||0)*c.r*Math.sin(m)/2,b=v.tiltaxis||0,x=b*Math.PI/180,_=[y*Math.sin(x),y*Math.cos(x)],w=c.r*Math.cos(m),k=s.selectAll(\"g.part\").data(v.tilt?[\"top\",\"sides\"]:[\"top\"]);k.enter().append(\"g\").attr(\"class\",function(t){return t+\" part\"}),k.exit().remove(),k.order(),l(e),s.selectAll(\".top\").each(function(){var s=u.select(this).selectAll(\"g.slice\").data(e);s.enter().append(\"g\").classed(\"slice\",!0),s.exit().remove();var l=[[[],[]],[[],[]]],m=!1;s.each(function(o){function s(e){var n=t._fullLayout,a=t._fullData[v.index],s=a.hoverinfo;if(\"all\"===s&&(s=\"label+text+value+percent+name\"),!t._dragging&&n.hovermode!==!1&&\"none\"!==s&&s){var l=i(o,c),u=k+o.pxmid[0]*(1-l),h=A+o.pxmid[1]*(1-l),d=r.separators,p=[];\n", + "-1!==s.indexOf(\"label\")&&p.push(o.label),a.text&&a.text[o.i]&&-1!==s.indexOf(\"text\")&&p.push(a.text[o.i]),-1!==s.indexOf(\"value\")&&p.push(g.formatPieValue(o.v,d)),-1!==s.indexOf(\"percent\")&&p.push(g.formatPiePercent(o.v/c.vTotal,d)),f.loneHover({x0:u-l*c.r,x1:u+l*c.r,y:h,text:p.join(\"
\"),name:-1!==s.indexOf(\"name\")?a.name:void 0,color:o.color,idealAlign:o.pxmid[0]<0?\"left\":\"right\"},{container:n._hoverlayer.node(),outerContainer:n._paper.node()}),f.hover(t,e,\"pie\"),E=!0}}function h(e){t.emit(\"plotly_unhover\",{points:[e]}),E&&(f.loneUnhover(r._hoverlayer.node()),E=!1)}function y(){t._hoverdata=[o],t._hoverdata.trace=e.trace,f.click(t,{target:!0})}function x(t,e,r,n){return\"a\"+n*c.r+\",\"+n*w+\" \"+b+\" \"+o.largeArc+(r?\" 1 \":\" 0 \")+n*(e[0]-t[0])+\",\"+n*(e[1]-t[1])}if(o.hidden)return void u.select(this).selectAll(\"path,g\").remove();l[o.pxmid[1]<0?0:1][o.pxmid[0]<0?0:1].push(o);var k=c.cx+_[0],A=c.cy+_[1],M=u.select(this),T=M.selectAll(\"path.surface\").data([o]),E=!1;if(T.enter().append(\"path\").classed(\"surface\",!0).style({\"pointer-events\":\"all\"}),M.select(\"path.textline\").remove(),M.on(\"mouseover\",s).on(\"mouseout\",h).on(\"click\",y),v.pull){var L=+(Array.isArray(v.pull)?v.pull[o.i]:v.pull)||0;L>0&&(k+=L*o.pxmid[0],A+=L*o.pxmid[1])}o.cxFinal=k,o.cyFinal=A;var S=v.hole;if(o.v===c.vTotal){var C=\"M\"+(k+o.px0[0])+\",\"+(A+o.px0[1])+x(o.px0,o.pxmid,!0,1)+x(o.pxmid,o.px0,!0,1)+\"Z\";S?T.attr(\"d\",\"M\"+(k+S*o.px0[0])+\",\"+(A+S*o.px0[1])+x(o.px0,o.pxmid,!1,S)+x(o.pxmid,o.px0,!1,S)+\"Z\"+C):T.attr(\"d\",C)}else{var z=x(o.px0,o.px1,!0,1);if(S){var P=1-S;T.attr(\"d\",\"M\"+(k+S*o.px1[0])+\",\"+(A+S*o.px1[1])+x(o.px1,o.px0,!1,S)+\"l\"+P*o.px0[0]+\",\"+P*o.px0[1]+z+\"Z\")}else T.attr(\"d\",\"M\"+k+\",\"+A+\"l\"+o.px0[0]+\",\"+o.px0[1]+z+\"Z\")}var R=Array.isArray(v.textposition)?v.textposition[o.i]:v.textposition,O=M.selectAll(\"g.slicetext\").data(o.text&&\"none\"!==R?[0]:[]);O.enter().append(\"g\").classed(\"slicetext\",!0),O.exit().remove(),O.each(function(){var t=u.select(this).selectAll(\"text\").data([0]);t.enter().append(\"text\").attr(\"data-notex\",1),t.exit().remove(),t.text(o.text).attr({\"class\":\"slicetext\",transform:\"\",\"data-bb\":\"\",\"text-anchor\":\"middle\",x:0,y:0}).call(d.font,\"outside\"===R?v.outsidetextfont:v.insidetextfont).call(p.convertToTspans),t.selectAll(\"tspan.line\").attr({x:0,y:0});var e,r=d.bBox(t.node());\"outside\"===R?e=a(r,o):(e=n(r,o,c),\"auto\"===R&&e.scale<1&&(t.call(d.font,v.outsidetextfont),v.outsidetextfont.family===v.insidetextfont.family&&v.outsidetextfont.size===v.insidetextfont.size||(t.attr({\"data-bb\":\"\"}),r=d.bBox(t.node())),e=a(r,o)));var i=k+o.pxmid[0]*e.rCenter+(e.x||0),s=A+o.pxmid[1]*e.rCenter+(e.y||0);e.outside&&(o.yLabelMin=s-r.height/2,o.yLabelMid=s,o.yLabelMax=s+r.height/2,o.labelExtraX=0,o.labelExtraY=0,m=!0),t.attr(\"transform\",\"translate(\"+i+\",\"+s+\")\"+(e.scale<1?\"scale(\"+e.scale+\")\":\"\")+(e.rotate?\"rotate(\"+e.rotate+\")\":\"\")+\"translate(\"+-(r.left+r.right)/2+\",\"+-(r.top+r.bottom)/2+\")\")})}),m&&o(l,v),s.each(function(t){if(t.labelExtraX||t.labelExtraY){var e=u.select(this),r=e.select(\"g.slicetext text\");r.attr(\"transform\",\"translate(\"+t.labelExtraX+\",\"+t.labelExtraY+\")\"+r.attr(\"transform\"));var n=t.cxFinal+t.pxmid[0],i=t.cyFinal+t.pxmid[1],a=\"M\"+n+\",\"+i,o=(t.yLabelMax-t.yLabelMin)*(t.pxmid[0]<0?-1:1)/4;if(t.labelExtraX){var s=t.labelExtraX*t.pxmid[1]/t.pxmid[0],l=t.yLabelMid+t.labelExtraY-(t.cyFinal+t.pxmid[1]);a+=Math.abs(s)>Math.abs(l)?\"l\"+l*t.pxmid[0]/t.pxmid[1]+\",\"+l+\"H\"+(n+t.labelExtraX+o):\"l\"+t.labelExtraX+\",\"+s+\"v\"+(l-s)+\"h\"+o}else a+=\"V\"+(t.yLabelMid+t.labelExtraY)+\"h\"+o;e.append(\"path\").classed(\"textline\",!0).call(h.stroke,v.outsidetextfont.color).attr({\"stroke-width\":Math.min(2,v.outsidetextfont.size/8),d:a,fill:\"none\"})}})})}),setTimeout(function(){c.selectAll(\"tspan\").each(function(){var t=u.select(this);t.attr(\"dy\")&&t.attr(\"dy\",t.attr(\"dy\"))})},0)}},{\"../../components/color\":303,\"../../components/drawing\":325,\"../../lib/svg_text_utils\":393,\"../../plots/cartesian/graph_interact\":410,\"./helpers\":546,d3:113}],551:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"./style_one\");e.exports=function(t){t._fullLayout._pielayer.selectAll(\".trace\").each(function(t){var e=t[0],r=e.trace,a=n.select(this);a.style({opacity:r.opacity}),a.selectAll(\".top path.surface\").each(function(t){n.select(this).call(i,t,r)})})}},{\"./style_one\":552,d3:113}],552:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\");e.exports=function(t,e,r){var i=r.marker.line.color;Array.isArray(i)&&(i=i[e.i]||n.defaultLine);var a=r.marker.line.width||0;Array.isArray(a)&&(a=a[e.i]||0),t.style({\"stroke-width\":a,fill:e.color}).call(n.stroke,i)}},{\"../../components/color\":303}],553:[function(t,e,r){\"use strict\";var n=t(\"../../lib\");e.exports=function(t){var e=t[0].trace,r=e.marker;if(n.mergeArray(e.text,t,\"tx\"),n.mergeArray(e.textposition,t,\"tp\"),e.textfont&&(n.mergeArray(e.textfont.size,t,\"ts\"),n.mergeArray(e.textfont.color,t,\"tc\"),n.mergeArray(e.textfont.family,t,\"tf\")),r&&r.line){var i=r.line;n.mergeArray(r.opacity,t,\"mo\"),n.mergeArray(r.symbol,t,\"mx\"),n.mergeArray(r.color,t,\"mc\"),n.mergeArray(i.color,t,\"mlc\"),n.mergeArray(i.width,t,\"mlw\")}}},{\"../../lib\":381}],554:[function(t,e,r){\"use strict\";var n=t(\"../../components/drawing\");t(\"./constants\");e.exports={x:{valType:\"data_array\"},x0:{valType:\"any\",dflt:0},dx:{valType:\"number\",dflt:1},y:{valType:\"data_array\"},y0:{valType:\"any\",dflt:0},dy:{valType:\"number\",dflt:1},text:{valType:\"string\",dflt:\"\",arrayOk:!0},mode:{valType:\"flaglist\",flags:[\"lines\",\"markers\",\"text\"],extras:[\"none\"]},line:{color:{valType:\"color\"},width:{valType:\"number\",min:0,dflt:2},shape:{valType:\"enumerated\",values:[\"linear\",\"spline\",\"hv\",\"vh\",\"hvh\",\"vhv\"],dflt:\"linear\"},smoothing:{valType:\"number\",min:0,max:1.3,dflt:1},dash:{valType:\"string\",values:[\"solid\",\"dot\",\"dash\",\"longdash\",\"dashdot\",\"longdashdot\"],dflt:\"solid\"}},connectgaps:{valType:\"boolean\",dflt:!1},fill:{valType:\"enumerated\",values:[\"none\",\"tozeroy\",\"tozerox\",\"tonexty\",\"tonextx\",\"toself\",\"tonext\"],dflt:\"none\"},fillcolor:{valType:\"color\"},marker:{symbol:{valType:\"enumerated\",values:n.symbolList,dflt:\"circle\",arrayOk:!0},opacity:{valType:\"number\",min:0,max:1,arrayOk:!0},size:{valType:\"number\",min:0,dflt:6,arrayOk:!0},color:{valType:\"color\",arrayOk:!0},maxdisplayed:{valType:\"number\",min:0,dflt:0},sizeref:{valType:\"number\",dflt:1},sizemin:{valType:\"number\",min:0,dflt:0},sizemode:{valType:\"enumerated\",values:[\"diameter\",\"area\"],dflt:\"diameter\"},colorscale:{valType:\"colorscale\"},cauto:{valType:\"boolean\",dflt:!0},cmax:{valType:\"number\",dflt:null},cmin:{valType:\"number\",dflt:null},autocolorscale:{valType:\"boolean\",dflt:!0},reversescale:{valType:\"boolean\",dflt:!1},showscale:{valType:\"boolean\",dflt:!1},line:{color:{valType:\"color\",arrayOk:!0},width:{valType:\"number\",min:0,arrayOk:!0},colorscale:{valType:\"colorscale\"},cauto:{valType:\"boolean\",dflt:!0},cmax:{valType:\"number\",dflt:null},cmin:{valType:\"number\",dflt:null},autocolorscale:{valType:\"boolean\",dflt:!0},reversescale:{valType:\"boolean\",dflt:!1}}},textposition:{valType:\"enumerated\",values:[\"top left\",\"top center\",\"top right\",\"middle left\",\"middle center\",\"middle right\",\"bottom left\",\"bottom center\",\"bottom right\"],dflt:\"middle center\",arrayOk:!0},textfont:{family:{valType:\"string\",noBlank:!0,strict:!0,arrayOk:!0},size:{valType:\"number\",min:1,arrayOk:!0},color:{valType:\"color\",arrayOk:!0}},r:{valType:\"data_array\"},t:{valType:\"data_array\"},_nestedModules:{error_y:\"ErrorBars\",error_x:\"ErrorBars\",\"marker.colorbar\":\"Colorbar\"}}},{\"../../components/drawing\":325,\"./constants\":558}],555:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\"),i=t(\"../../plots/cartesian/axes\"),a=t(\"../../lib\"),o=t(\"./subtypes\"),s=t(\"./marker_colorscale_calc\");e.exports=function(t,e){var r=i.getFromId(t,e.xaxis||\"x\"),l=i.getFromId(t,e.yaxis||\"y\");a.markTime(\"in Scatter.calc\");var c=r.makeCalcdata(e,\"x\");a.markTime(\"finished convert x\");var u=l.makeCalcdata(e,\"y\");a.markTime(\"finished convert y\");var f,h,d,p=Math.min(c.length,u.length);r._minDtick=0,l._minDtick=0,c.length>p&&c.splice(p,c.length-p),u.length>p&&u.splice(p,u.length-p);var g={padded:!0},v={padded:!0};if(o.hasMarkers(e)){if(f=e.marker,h=f.size,Array.isArray(h)){var m={type:\"linear\"};i.setConvert(m),h=m.makeCalcdata(e.marker,\"size\"),h.length>p&&h.splice(p,h.length-p)}var y,b=1.6*(e.marker.sizeref||1);y=\"area\"===e.marker.sizemode?function(t){return Math.max(Math.sqrt((t||0)/b),3)}:function(t){return Math.max((t||0)/b,3)},g.ppad=v.ppad=Array.isArray(h)?h.map(y):y(h)}s(e),!(\"tozerox\"===e.fill||\"tonextx\"===e.fill&&t.firstscatter)||c[0]===c[p-1]&&u[0]===u[p-1]?e.error_y.visible||-1===[\"tonexty\",\"tozeroy\"].indexOf(e.fill)&&(o.hasMarkers(e)||o.hasText(e))||(g.padded=!1,g.ppad=0):g.tozero=!0,!(\"tozeroy\"===e.fill||\"tonexty\"===e.fill&&t.firstscatter)||c[0]===c[p-1]&&u[0]===u[p-1]?-1!==[\"tonextx\",\"tozerox\"].indexOf(e.fill)&&(v.padded=!1):v.tozero=!0,a.markTime(\"ready for Axes.expand\"),i.expand(r,c,g),a.markTime(\"done expand x\"),i.expand(l,u,v),a.markTime(\"done expand y\");var x=new Array(p);for(d=0;p>d;d++)x[d]=n(c[d])&&n(u[d])?{x:c[d],y:u[d]}:{x:!1,y:!1};return void 0!==typeof h&&a.mergeArray(h,x,\"ms\"),t.firstscatter=!1,x}},{\"../../lib\":381,\"../../plots/cartesian/axes\":403,\"./marker_colorscale_calc\":568,\"./subtypes\":573,\"fast-isnumeric\":117}],556:[function(t,e,r){\"use strict\";e.exports=function(t){var e,r,n,i,a;for(e=0;e=0;i--)if(a=t[i],\"scatter\"===a.type&&a.xaxis===r.xaxis&&a.yaxis===r.yaxis){a.opacity=void 0;break}}},{}],557:[function(t,e,r){\"use strict\";var n=t(\"d3\"),i=t(\"fast-isnumeric\"),a=t(\"../../lib\"),o=t(\"../../plots/plots\"),s=t(\"../../components/colorscale/get_scale\"),l=t(\"../../components/colorbar/draw\");e.exports=function(t,e){var r=e[0].trace,c=r.marker,u=\"cb\"+r.uid;if(t._fullLayout._infolayer.selectAll(\".\"+u).remove(),void 0===c||!c.showscale)return void o.autoMargin(t,u);var f=s(c.colorscale),h=c.color,d=c.cmin,p=c.cmax;i(d)||(d=a.aggNums(Math.min,null,h)),i(p)||(p=a.aggNums(Math.max,null,h));var g=e[0].t.cb=l(t,u);g.fillcolor(n.scale.linear().domain(f.map(function(t){return d+t[0]*(p-d)})).range(f.map(function(t){return t[1]}))).filllevels({start:d,end:p,size:(p-d)/254}).options(c.colorbar)(),a.markTime(\"done colorbar\")}},{\"../../components/colorbar/draw\":306,\"../../components/colorscale/get_scale\":314,\"../../lib\":381,\"../../plots/plots\":452,d3:113,\"fast-isnumeric\":117}],558:[function(t,e,r){\"use strict\";e.exports={PTS_LINESONLY:20}},{}],559:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"./attributes\"),a=t(\"./constants\"),o=t(\"./subtypes\"),s=t(\"./xy_defaults\"),l=t(\"./marker_defaults\"),c=t(\"./line_defaults\"),u=t(\"./line_shape_defaults\"),f=t(\"./text_defaults\"),h=t(\"./fillcolor_defaults\"),d=t(\"../../components/errorbars/defaults\");e.exports=function(t,e,r,p){function g(r,a){return n.coerce(t,e,i,r,a)}var v=s(t,e,g),m=vi(f))break;l=f,y=g[0]*p[0]+g[1]*p[1],y>v?(v=y,c=f,d=!1):m>y&&(m=y,u=f,d=!0)}if(d?(C[z++]=c,l!==u&&(C[z++]=u)):(u!==s&&(C[z++]=u),l!==c&&(C[z++]=c)),C[z++]=l,o>=t.length||!f)break;C[z++]=f,s=f}}else C[z++]=c}E.push(C.slice(0,z))}return E}},{\"../../plots/cartesian/axes\":403}],566:[function(t,e,r){\"use strict\";e.exports=function(t,e,r){var n=r(\"line.shape\");\"spline\"===n&&r(\"line.smoothing\")}},{}],567:[function(t,e,r){\"use strict\";var n=t(\"fast-isnumeric\");e.exports=function(t){var e=t.marker,r=e.sizeref||1,i=e.sizemin||0,a=\"area\"===e.sizemode?function(t){return Math.sqrt(t/r)}:function(t){return t/r};return function(t){var e=a(t/2);return n(e)&&e>0?Math.max(e,i):0}}},{\"fast-isnumeric\":117}],568:[function(t,e,r){\"use strict\";var n=t(\"../../components/colorscale/has_colorscale\"),i=t(\"../../components/colorscale/calc\"),a=t(\"./subtypes\");e.exports=function(t){if(a.hasMarkers(t)){var e=t.marker;n(t,\"marker\")&&i(t,e.color,\"marker\",\"c\"),n(t,\"marker.line\")&&i(t,e.line.color,\"marker.line\",\"c\")}}},{\"../../components/colorscale/calc\":310,\"../../components/colorscale/has_colorscale\":315,\"./subtypes\":573}],569:[function(t,e,r){\"use strict\";var n=t(\"../../components/color\"),i=t(\"../../components/colorscale/has_colorscale\"),a=t(\"../../components/colorscale/defaults\"),o=t(\"./subtypes\");e.exports=function(t,e,r,s,l){var c,u=o.isBubble(t),f=(t.line||{}).color;f&&(r=f),l(\"marker.symbol\"),l(\"marker.opacity\",u?.7:1),l(\"marker.size\"),l(\"marker.color\",r),i(t,\"marker\")&&a(t,e,s,l,{prefix:\"marker.\",cLetter:\"c\"}),c=f&&e.marker.color!==f?f:u?n.background:n.defaultLine,l(\"marker.line.color\",c),i(t,\"marker.line\")&&a(t,e,s,l,{prefix:\"marker.line.\",cLetter:\"c\"}),l(\"marker.line.width\",u?1:0),u&&(l(\"marker.sizeref\"),l(\"marker.sizemin\"),l(\"marker.sizemode\"))}},{\"../../components/color\":303,\"../../components/colorscale/defaults\":312,\"../../components/colorscale/has_colorscale\":315,\"./subtypes\":573}],570:[function(t,e,r){\"use strict\";function n(t,e,r){var n=e.x(),a=e.y(),o=i.extent(n.range.map(n.l2c)),s=i.extent(a.range.map(a.l2c));r.forEach(function(t,e){var n=t[0].trace;if(l.hasMarkers(n)){var i=n.marker.maxdisplayed;if(0!==i){var a=t.filter(function(t){return t.x>=o[0]&&t.x<=o[1]&&t.y>=s[0]&&t.y<=s[1]}),c=Math.ceil(a.length/i),u=0;r.forEach(function(t,r){var n=t[0].trace;l.hasMarkers(n)&&n.marker.maxdisplayed>0&&e>r&&u++});var f=Math.round(u*c/3+Math.floor(u/3)*c/7.1);t.forEach(function(t){delete t.vis}),a.forEach(function(t,e){0===Math.round((e+f)%c)&&(t.vis=!0)})}}})}var i=t(\"d3\"),a=t(\"../../lib\"),o=t(\"../../components/drawing\"),s=t(\"../../components/errorbars\"),l=t(\"./subtypes\"),c=t(\"./arrays_to_calcdata\"),u=t(\"./line_points\");e.exports=function(t,e,r){function f(t){return t.filter(function(t){return t.vis})}n(t,e,r);var h=e.x(),d=e.y(),p=e.plot.select(\".scatterlayer\").selectAll(\"g.trace.scatter\").data(r);p.enter().append(\"g\").attr(\"class\",\"trace scatter\").style(\"stroke-miterlimit\",2),p.call(s.plot,e);var g,v,m,y,b=\"\";p.each(function(t){var e=t[0].trace,r=e.line,n=i.select(this);if(e.visible===!0&&(v=e.fill.charAt(e.fill.length-1),\"x\"!==v&&\"y\"!==v&&(v=\"\"),t[0].node3=n,c(t),l.hasLines(e)||\"none\"!==e.fill)){var a,s,f,p,x,_=\"\",w=\"\";g=\"tozero\"===e.fill.substr(0,6)||\"toself\"===e.fill||\"to\"===e.fill.substr(0,2)&&!b?n.append(\"path\").classed(\"js-fill\",!0):null,y&&(m=y.datum(t)),y=n.append(\"path\").classed(\"js-fill\",!0),-1!==[\"hv\",\"vh\",\"hvh\",\"vhv\"].indexOf(r.shape)?(f=o.steps(r.shape),p=o.steps(r.shape.split(\"\").reverse().join(\"\"))):f=p=\"spline\"===r.shape?function(t){var e=t[t.length-1];return t[0][0]===e[0]&&t[0][1]===e[1]?o.smoothclosed(t.slice(1),r.smoothing):o.smoothopen(t,r.smoothing)}:function(t){return\"M\"+t.join(\"L\")},x=function(t){return p(t.reverse())};var k=u(t,{xaxis:h,yaxis:d,connectGaps:e.connectgaps,baseTolerance:Math.max(r.width||1,3)/4,linear:\"linear\"===r.shape});if(k.length){for(var A=k[0][0],M=k[k.length-1],T=M[M.length-1],E=0;E1&&n.append(\"path\").classed(\"js-line\",!0).attr(\"d\",a)}g?A&&T&&(v?(\"y\"===v?A[1]=T[1]=d.c2p(0,!0):\"x\"===v&&(A[0]=T[0]=h.c2p(0,!0)),g.attr(\"d\",_+\"L\"+T+\"L\"+A+\"Z\")):g.attr(\"d\",_+\"Z\")):\"tonext\"===e.fill.substr(0,6)&&_&&b&&(\"tonext\"===e.fill?m.attr(\"d\",_+\"Z\"+b+\"Z\"):m.attr(\"d\",_+\"L\"+b.substr(1)+\"Z\")),b=w}}}),p.selectAll(\"path:not([d])\").remove(),p.append(\"g\").attr(\"class\",\"points\").each(function(t){var e=t[0].trace,r=i.select(this),n=l.hasMarkers(e),s=l.hasText(e);!n&&!s||e.visible!==!0?r.remove():(n&&r.selectAll(\"path.point\").data(e.marker.maxdisplayed?f:a.identity).enter().append(\"path\").classed(\"point\",!0).call(o.translatePoints,h,d),s&&r.selectAll(\"g\").data(e.marker.maxdisplayed?f:a.identity).enter().append(\"g\").append(\"text\").call(o.translatePoints,h,d))})}},{\"../../components/drawing\":325,\"../../components/errorbars\":331,\"../../lib\":381,\"./arrays_to_calcdata\":553,\"./line_points\":565,\"./subtypes\":573,d3:113}],571:[function(t,e,r){\"use strict\";var n=t(\"./subtypes\"),i=.2;e.exports=function(t,e){var r,a,o,s,l=t.cd,c=t.xaxis,u=t.yaxis,f=[],h=l[0].trace,d=h.index,p=h.marker;if(n.hasMarkers(h)||n.hasText(h)){var g=Array.isArray(p.opacity)?1:p.opacity;if(e===!1)for(r=0;rs;s++){for(var l=[[0,0,0],[0,0,0]],c=0;3>c;c++)if(r[c])for(var u=0;2>u;u++)l[u][c]=r[c][s][u];o[s]=l}return o}var o=t(\"../../components/errorbars/compute_error\");e.exports=a},{\"../../components/errorbars/compute_error\":329}],579:[function(t,e,r){\"use strict\";function n(t,e){this.scene=t,this.uid=e,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode=\"\",this.dataPoints=[],this.axesBounds=[[-(1/0),-(1/0),-(1/0)],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}function i(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,o=[],s=[];for(n=0;ni;i++){var a=t[i];a&&a.copy_zstyle!==!1&&(a=t[2]),a&&(e[i]=a.width/2,r[i]=b(a.color),n=a.thickness)}return{capSize:e,color:r,lineWidth:n}}function o(t){var e=[0,0];return Array.isArray(t)?[0,-1]:(t.indexOf(\"bottom\")>=0&&(e[1]+=1),t.indexOf(\"top\")>=0&&(e[1]-=1),t.indexOf(\"left\")>=0&&(e[0]-=1),t.indexOf(\"right\")>=0&&(e[0]+=1),e)}function s(t,e){return e(4*t)}function l(t){return k[t]}function c(t,e,r,n,i){var a=null;if(Array.isArray(t)){a=[];for(var o=0;e>o;o++)void 0===t[o]?a[o]=n:a[o]=r(t[o],i)}else a=r(t,y.identity);return a}function u(t,e){var r,n,i,u,f,h,d=[],p=t.fullSceneLayout,g=t.dataScale,v=p.xaxis,m=p.yaxis,w=p.zaxis,k=e.marker,M=e.line,T=e.x||[],E=e.y||[],L=e.z||[],S=T.length;for(n=0;S>n;n++)i=v.d2l(T[n])*g[0],u=m.d2l(E[n])*g[1],f=w.d2l(L[n])*g[2],d[n]=[i,u,f];if(Array.isArray(e.text))h=e.text;else if(void 0!==e.text)for(h=new Array(S),n=0;S>n;n++)h[n]=e.text;if(r={position:d,mode:e.mode,text:h},\"line\"in e&&(r.lineColor=b(M.color),r.lineWidth=M.width,r.lineDashes=M.dash),\"marker\"in e){var C=_(e);r.scatterColor=x(k,1,S),r.scatterSize=c(k.size,S,s,20,C),r.scatterMarker=c(k.symbol,S,l,\"\\u25cf\"),r.scatterLineWidth=k.line.width,r.scatterLineColor=x(k.line,1,S),r.scatterAngle=0}\"textposition\"in e&&(r.textOffset=o(e.textposition),r.textColor=x(e.textfont,1,S),r.textSize=c(e.textfont.size,S,y.identity,12),r.textFont=e.textfont.family,r.textAngle=0);var z=[\"x\",\"y\",\"z\"];for(r.project=[!1,!1,!1],r.projectScale=[1,1,1],r.projectOpacity=[1,1,1],n=0;3>n;++n){var P=e.projection[z[n]];(r.project[n]=P.show)&&(r.projectOpacity[n]=P.opacity,r.projectScale[n]=P.scale)}r.errorBounds=A(e,g);var R=a([e.error_x,e.error_y,e.error_z]);return r.errorColor=R.color,r.errorLineWidth=R.lineWidth,r.errorCapSize=R.capSize,r.delaunayAxis=e.surfaceaxis,r.delaunayColor=b(e.surfacecolor),r}function f(t){if(Array.isArray(t)){var e=t[0];return Array.isArray(e)&&(t=e),\"rgb(\"+t.slice(0,3).map(function(t){return Math.round(255*t)})+\")\"}return null}function h(t,e){var r=new n(t,e.uid);return r.update(e),r}var d=t(\"gl-line3d\"),p=t(\"gl-scatter3d\"),g=t(\"gl-error3d\"),v=t(\"gl-mesh3d\"),m=t(\"delaunay-triangulate\"),y=t(\"../../lib\"),b=t(\"../../lib/str2rgbarray\"),x=t(\"../../lib/gl_format_color\"),_=t(\"../scatter/make_bubble_size_func\"),w=t(\"../../constants/gl3d_dashes\"),k=t(\"../../constants/gl_markers\"),A=t(\"./calc_errors\"),M=n.prototype;M.handlePick=function(t){if(t.object&&(t.object===this.linePlot||t.object===this.delaunayMesh||t.object===this.textMarkers||t.object===this.scatterPlot)){t.object.highlight&&t.object.highlight(null),this.scatterPlot&&(t.object=this.scatterPlot,this.scatterPlot.highlight(t.data)),this.textLabels&&void 0!==this.textLabels[t.data.index]?t.textLabel=this.textLabels[t.data.index]:t.textLabel=\"\";var e=t.data.index;return t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]],!0}},M.update=function(t){var e,r,n,a,o=this.scene.glplot.gl,s=w.solid;this.data=t;var l=u(this.scene,t);\"mode\"in l&&(this.mode=l.mode),\"lineDashes\"in l&&l.lineDashes in w&&(s=w[l.lineDashes]),this.color=f(l.scatterColor)||f(l.lineColor),this.dataPoints=l.position,e={gl:o,position:l.position,color:l.lineColor,lineWidth:l.lineWidth||1,dashes:s[0],dashScale:s[1],opacity:t.opacity,connectGaps:t.connectgaps},-1!==this.mode.indexOf(\"lines\")?this.linePlot?this.linePlot.update(e):(this.linePlot=d(e),this.scene.glplot.add(this.linePlot)):this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose(),this.linePlot=null);var c=t.opacity;if(t.marker&&t.marker.opacity&&(c*=t.marker.opacity),r={gl:o,position:l.position,color:l.scatterColor,size:l.scatterSize,glyph:l.scatterMarker,opacity:c,orthographic:!0,lineWidth:l.scatterLineWidth,lineColor:l.scatterLineColor,project:l.project,projectScale:l.projectScale,projectOpacity:l.projectOpacity},-1!==this.mode.indexOf(\"markers\")?this.scatterPlot?this.scatterPlot.update(r):(this.scatterPlot=p(r),this.scatterPlot.highlightScale=1,this.scene.glplot.add(this.scatterPlot)):this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose(),this.scatterPlot=null),a={gl:o,position:l.position,glyph:l.text,color:l.textColor,size:l.textSize,angle:l.textAngle,alignment:l.textOffset,font:l.textFont,orthographic:!0,lineWidth:0,project:!1,opacity:t.opacity},this.textLabels=l.text,-1!==this.mode.indexOf(\"text\")?this.textMarkers?this.textMarkers.update(a):(this.textMarkers=p(a),this.textMarkers.highlightScale=1,this.scene.glplot.add(this.textMarkers)):this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose(),this.textMarkers=null),n={gl:o,position:l.position,color:l.errorColor,error:l.errorBounds,lineWidth:l.errorLineWidth,capSize:l.errorCapSize,opacity:t.opacity},this.errorBars?l.errorBounds?this.errorBars.update(n):(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose(),this.errorBars=null):l.errorBounds&&(this.errorBars=g(n),this.scene.glplot.add(this.errorBars)),l.delaunayAxis>=0){var h=i(l.position,l.delaunayColor,l.delaunayAxis);h.opacity=t.opacity,this.delaunayMesh?this.delaunayMesh.update(h):(h.gl=o,this.delaunayMesh=v(h),this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)},M.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())},e.exports=h},{\"../../constants/gl3d_dashes\":367,\"../../constants/gl_markers\":368,\"../../lib\":381,\"../../lib/gl_format_color\":379,\"../../lib/str2rgbarray\":392,\"../scatter/make_bubble_size_func\":567,\"./calc_errors\":578,\"delaunay-triangulate\":114,\"gl-error3d\":121,\"gl-line3d\":127,\"gl-mesh3d\":150,\"gl-scatter3d\":193}],580:[function(t,e,r){\"use strict\";function n(t,e,r){var n=0,i=r(\"x\"),a=r(\"y\"),o=r(\"z\");return i&&a&&o&&(n=Math.min(i.length,a.length,o.length),n=0&&h(\"surfacecolor\",p||g);for(var v=[\"x\",\"y\",\"z\"],m=0;3>m;++m){var y=\"projection.\"+v[m];h(y+\".show\")&&(h(y+\".opacity\"),h(y+\".scale\"))}c(t,e,r,{axis:\"z\"}),c(t,e,r,{axis:\"y\",inherit:\"z\"}),c(t,e,r,{axis:\"x\",inherit:\"z\"})}},{\"../../components/errorbars/defaults\":330,\"../../lib\":381,\"../scatter/line_defaults\":564,\"../scatter/marker_defaults\":569,\"../scatter/subtypes\":573,\"../scatter/text_defaults\":574,\"./attributes\":576}],581:[function(t,e,r){\"use strict\";var n={};n.plot=t(\"./convert\"),n.attributes=t(\"./attributes\"),n.markerSymbols=t(\"../../constants/gl_markers\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../scatter/colorbar\"),n.calc=t(\"./calc\"),n.moduleType=\"trace\",n.name=\"scatter3d\",n.basePlotModule=t(\"../../plots/gl3d\"),n.categories=[\"gl3d\",\"symbols\",\"markerColorscale\",\"showLegend\"],n.meta={},e.exports=n},{\"../../constants/gl_markers\":368,\"../../plots/gl3d\":439,\"../scatter/colorbar\":557,\"./attributes\":576,\"./calc\":577,\"./convert\":579,\"./defaults\":580}],582:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../plots/attributes\"),a=t(\"../../lib/extend\").extendFlat,o=n.marker,s=n.line,l=o.line;e.exports={lon:{valType:\"data_array\"},lat:{valType:\"data_array\"},locations:{valType:\"data_array\"},locationmode:{valType:\"enumerated\",values:[\"ISO-3\",\"USA-states\",\"country names\"],dflt:\"ISO-3\"},mode:a({},n.mode,{dflt:\"markers\"}),text:a({},n.text,{}),line:{color:s.color,width:s.width,dash:s.dash},marker:{symbol:o.symbol,opacity:o.opacity,size:o.size,sizeref:o.sizeref,sizemin:o.sizemin,sizemode:o.sizemode,color:o.color,colorscale:o.colorscale,cauto:o.cauto,cmax:o.cmax,cmin:o.cmin,autocolorscale:o.autocolorscale,reversescale:o.reversescale,showscale:o.showscale,line:{color:l.color,width:l.width,colorscale:l.colorscale,cauto:l.cauto,cmax:l.cmax,cmin:l.cmin,autocolorscale:l.autocolorscale,reversescale:l.reversescale}},textfont:n.textfont,textposition:n.textposition,hoverinfo:a({},i.hoverinfo,{flags:[\"lon\",\"lat\",\"location\",\"text\",\"name\"]}),_nestedModules:{\"marker.colorbar\":\"Colorbar\"}}},{\"../../lib/extend\":376,\"../../plots/attributes\":401,\"../scatter/attributes\":554}],583:[function(t,e,r){\"use strict\";var n=t(\"../scatter/marker_colorscale_calc\");e.exports=function(t,e){var r=[{x:!1,y:!1,trace:e,t:{}}];return n(e),r}},{\"../scatter/marker_colorscale_calc\":568}],584:[function(t,e,r){\"use strict\";function n(t,e,r){var n,i,a=0,o=r(\"locations\");return o?(r(\"locationmode\"),a=o.length):(n=r(\"lon\")||[],i=r(\"lat\")||[],a=Math.min(n.length,i.length),an;n++)r[n]=[t.lon[n],t.lat[n]];return{type:\"LineString\",coordinates:r,trace:t}}function a(t,e){function r(e){var r=t.mockAxis;return c.tickText(r,r.c2l(e),\"hover\").text+\"\\xb0\"}var n=e.hoverinfo;if(\"none\"===n)return function(t){delete t.textLabel};var i=\"all\"===n?v.hoverinfo.flags:n.split(\"+\"),a=-1!==i.indexOf(\"location\")&&Array.isArray(e.locations),o=-1!==i.indexOf(\"lon\"),s=-1!==i.indexOf(\"lat\"),l=-1!==i.indexOf(\"text\");return function(t){var n=[];a?n.push(t.location):o&&s?n.push(\"(\"+r(t.lon)+\", \"+r(t.lat)+\")\"):o?n.push(\"lon: \"+r(t.lon)):s&&n.push(\"lat: \"+r(t.lat)),l&&n.push(t.tx||e.text),t.textLabel=n.join(\"
\")}}function o(t){var e=Array.isArray(t.locations);return function(r,n){return{points:[{data:t._input,fullData:t,curveNumber:t.index,pointNumber:n,lon:r.lon,lat:r.lat,location:e?r.location:null}]}}}var s=t(\"d3\"),l=t(\"../../plots/cartesian/graph_interact\"),c=t(\"../../plots/cartesian/axes\"),u=t(\"../../lib/topojson_utils\").getTopojsonFeatures,f=t(\"../../lib/geo_location_utils\").locationToFeature,h=t(\"../../lib/array_to_calc_item\"),d=t(\"../../components/color\"),p=t(\"../../components/drawing\"),g=t(\"../scatter/subtypes\"),v=t(\"./attributes\"),m=e.exports={};m.calcGeoJSON=function(t,e){var r,i,a,o,s=[],l=Array.isArray(t.locations);l?(o=t.locations,r=o.length,i=u(t,e),a=function(t,e){var r=f(t.locationmode,o[e],i);return void 0!==r?r.properties.ct:void 0}):(r=t.lon.length,a=function(t,e){return[t.lon[e],t.lat[e]]});for(var c=0;r>c;c++){var h=a(t,c);if(h){var d={lon:h[0],lat:h[1],location:l?t.locations[c]:null};n(t,d,c),s.push(d)}}return s.length>0&&(s[0].trace=t),s},m.plot=function(t,e){var r=t.framework.select(\".scattergeolayer\").selectAll(\"g.trace.scattergeo\").data(e,function(t){return t.uid});r.enter().append(\"g\").attr(\"class\",\"trace scattergeo\"),r.exit().remove(),r.selectAll(\"*\").remove(),r.each(function(t){var e=s.select(this);g.hasLines(t)&&e.selectAll(\"path.js-line\").data([i(t)]).enter().append(\"path\").classed(\"js-line\",!0)}),r.each(function(e){function r(r,n){if(t.showHover){var i=t.projection([r.lon,r.lat]);h(r),l.loneHover({x:i[0],y:i[1],name:v?e.name:void 0,text:r.textLabel,color:r.mc||(e.marker||{}).color},{container:t.hoverContainer.node()}),y=d(r,n),t.graphDiv.emit(\"plotly_hover\",y)}}function n(e,r){t.graphDiv.emit(\"plotly_click\",d(e,r))}var i=s.select(this),c=g.hasMarkers(e),u=g.hasText(e);if(c||u){var f=m.calcGeoJSON(e,t.topojson),h=a(t,e),d=o(e),p=e.hoverinfo,v=\"all\"===p||-1!==p.indexOf(\"name\"),y=null;c&&i.selectAll(\"path.point\").data(f).enter().append(\"path\").classed(\"point\",!0).on(\"mouseover\",r).on(\"click\",n).on(\"mouseout\",function(){l.loneUnhover(t.hoverContainer),t.graphDiv.emit(\"plotly_unhover\",y)}).on(\"mousedown\",function(){l.loneUnhover(t.hoverContainer)}).on(\"mouseup\",r),u&&i.selectAll(\"g\").data(f).enter().append(\"g\").append(\"text\")}}),m.style(t)},m.style=function(t){var e=t.framework.selectAll(\"g.trace.scattergeo\");e.style(\"opacity\",function(t){return t.opacity}),e.each(function(t){s.select(this).selectAll(\"path.point\").call(p.pointStyle,t),s.select(this).selectAll(\"text\").call(p.textPointStyle,t)}),e.selectAll(\"path.js-line\").style(\"fill\",\"none\").each(function(t){var e=t.trace,r=e.line||{};s.select(this).call(d.stroke,r.color).call(p.dashLine,r.dash||\"\",r.width||0)})}},{\"../../components/color\":303,\"../../components/drawing\":325,\"../../lib/array_to_calc_item\":372,\"../../lib/geo_location_utils\":378,\"../../lib/topojson_utils\":394,\"../../plots/cartesian/axes\":403,\"../../plots/cartesian/graph_interact\":410,\"../scatter/subtypes\":573,\"./attributes\":582,d3:113}],587:[function(t,e,r){\"use strict\";var n=t(\"../scatter/attributes\"),i=t(\"../../constants/gl2d_dashes\"),a=t(\"../../constants/gl_markers\"),o=t(\"../../lib/extend\").extendFlat,s=n.line,l=n.marker,c=l.line;e.exports={x:n.x,x0:n.x0,dx:n.dx,y:n.y,y0:n.y0,dy:n.dy,text:o({},n.text,{}),mode:{valType:\"flaglist\",flags:[\"lines\",\"markers\"],extras:[\"none\"]},line:{color:s.color,width:s.width,dash:{valType:\"enumerated\",values:Object.keys(i),dflt:\"solid\"}},marker:{color:l.color,symbol:{valType:\"enumerated\",values:Object.keys(a),dflt:\"circle\",arrayOk:!0},size:l.size,sizeref:l.sizeref,sizemin:l.sizemin,sizemode:l.sizemode,opacity:l.opacity,colorscale:l.colorscale,cauto:l.cauto,cmax:l.cmax,cmin:l.cmin,autocolorscale:l.autocolorscale,reversescale:l.reversescale,showscale:l.showscale,line:{color:c.color,width:c.width,colorscale:c.colorscale,cauto:c.cauto,cmax:c.cmax,cmin:c.cmin,autocolorscale:c.autocolorscale,reversescale:c.reversescale}},connectgaps:n.connectgaps,fill:o({},n.fill,{values:[\"none\",\"tozeroy\",\"tozerox\"]}),fillcolor:n.fillcolor,_nestedModules:{error_x:\"ErrorBars\",error_y:\"ErrorBars\",\"marker.colorbar\":\"Colorbar\"}}},{\"../../constants/gl2d_dashes\":366,\"../../constants/gl_markers\":368,\"../../lib/extend\":376,\"../scatter/attributes\":554}],588:[function(t,e,r){\"use strict\";function n(t,e){this.scene=t,this.uid=e,this.pickXData=[],this.pickYData=[],this.xData=[],this.yData=[],this.textLabels=[],this.color=\"rgb(0, 0, 0)\",this.name=\"\",this.hoverinfo=\"all\",this.connectgaps=!0,this.idToIndex=[],this.bounds=[0,0,0,0],this.hasLines=!1,this.lineOptions={positions:new Float32Array(0),color:[0,0,0,1],width:1,fill:[!1,!1,!1,!1],fillColor:[[0,0,0,1],[0,0,0,1],[0,0,0,1],[0,0,0,1]],dashes:[1]},this.line=d(t.glplot,this.lineOptions),this.line._trace=this,this.hasErrorX=!1,this.errorXOptions={positions:new Float32Array(0),errors:new Float32Array(0),lineWidth:1,capSize:0,color:[0,0,0,1]},this.errorX=p(t.glplot,this.errorXOptions),this.errorX._trace=this,this.hasErrorY=!1,this.errorYOptions={positions:new Float32Array(0),errors:new Float32Array(0),lineWidth:1,capSize:0,color:[0,0,0,1]},this.errorY=p(t.glplot,this.errorYOptions),this.errorY._trace=this,this.hasMarkers=!1,this.scatterOptions={positions:new Float32Array(0),sizes:[],colors:[],glyphs:[],borderWidths:[],borderColors:[],size:12,color:[0,0,0,1],borderSize:1,borderColor:[0,0,0,1]},this.scatter=f(t.glplot,this.scatterOptions),this.scatter._trace=this,this.fancyScatter=h(t.glplot,this.scatterOptions),this.fancyScatter._trace=this}function i(t,e,r){return Array.isArray(e)||(e=[e]),a(t,e,r)}function a(t,e,r){for(var n=new Array(r),i=e[0],a=0;r>a;++a)n[a]=t(a>=e.length?i:e[a]);return n}function o(t,e,r){return l(S(t,r),L(e,r),r)}function s(t,e,r,n){var i=x(t,e,n);return i=Array.isArray(i[0])?i:a(v.identity,[i],n),l(i,L(r,n),n)}function l(t,e,r){for(var n=new Array(4*r),i=0;r>i;++i){for(var a=0;3>a;++a)n[4*i+a]=t[i][a];n[4*i+3]=t[i][3]*e[i]}return n}function c(t,e){if(void 0===Float32Array.slice){for(var r=new Float32Array(e),n=0;e>n;n++)r[n]=t[n];return r}return t.slice(0,e)}function u(t,e){var r=new n(t,e.uid);return r.update(e),r}var f=t(\"gl-scatter2d\"),h=t(\"gl-scatter2d-fancy\"),d=t(\"gl-line2d\"),p=t(\"gl-error2d\"),g=t(\"fast-isnumeric\"),v=t(\"../../lib\"),m=t(\"../../plots/cartesian/axes\"),y=t(\"../../components/errorbars\"),b=t(\"../../lib/str2rgbarray\"),x=t(\"../../lib/gl_format_color\"),_=t(\"../scatter/subtypes\"),w=t(\"../scatter/make_bubble_size_func\"),k=t(\"../scatter/get_trace_color\"),A=t(\"../../constants/gl_markers\"),M=t(\"../../constants/gl2d_dashes\"),T=[\"xaxis\",\"yaxis\"],E=n.prototype;E.handlePick=function(t){var e=t.pointId;return(t.object!==this.line||this.connectgaps)&&(e=this.idToIndex[t.pointId]),{trace:this,dataCoord:t.dataCoord,traceCoord:[this.pickXData[e],this.pickYData[e]],textLabel:Array.isArray(this.textLabels)?this.textLabels[e]:this.textLabels,color:Array.isArray(this.color)?this.color[e]:this.color,name:this.name,hoverinfo:this.hoverinfo}},E.isFancy=function(t){if(\"linear\"!==this.scene.xaxis.type)return!0;if(\"linear\"!==this.scene.yaxis.type)return!0;if(!t.x||!t.y)return!0;var e=t.marker||{};if(Array.isArray(e.symbol)||\"circle\"!==e.symbol||Array.isArray(e.size)||Array.isArray(e.line.width)||Array.isArray(e.opacity))return!0;var r=e.color;if(Array.isArray(r))return!0;var n=Array.isArray(e.line.color);return Array.isArray(n)?!0:this.hasErrorX?!0:!!this.hasErrorY};var L=i.bind(null,function(t){return+t}),S=i.bind(null,b),C=i.bind(null,function(t){return A[t]||\"\\u25cf\"});E.update=function(t){t.visible!==!0?(this.hasLines=!1,this.hasErrorX=!1,this.hasErrorY=!1,this.hasMarkers=!1):(this.hasLines=_.hasLines(t),this.hasErrorX=t.error_x.visible===!0,this.hasErrorY=t.error_y.visible===!0,this.hasMarkers=_.hasMarkers(t)),this.textLabels=t.text,this.name=t.name,this.hoverinfo=t.hoverinfo,this.bounds=[1/0,1/0,-(1/0),-(1/0)],this.connectgaps=!!t.connectgaps,this.isFancy(t)?this.updateFancy(t):this.updateFast(t),this.color=k(t,{})},E.updateFast=function(t){for(var e,r,n=this.xData=this.pickXData=t.x,i=this.yData=this.pickYData=t.y,a=n.length,o=new Array(a),s=new Float32Array(2*a),l=this.bounds,u=0,f=0,h=0;a>h;++h)e=n[h],r=i[h],g(e)&&g(r)&&(o[u++]=h,s[f++]=e,s[f++]=r,l[0]=Math.min(l[0],e),l[1]=Math.min(l[1],r),l[2]=Math.max(l[2],e),l[3]=Math.max(l[3],r));s=c(s,f),this.idToIndex=o,this.updateLines(t,s),this.updateError(\"X\",t),this.updateError(\"Y\",t);var d;if(this.hasMarkers){this.scatterOptions.positions=s;var p=b(t.marker.color),v=b(t.marker.line.color),m=t.opacity*t.marker.opacity;p[3]*=m,this.scatterOptions.color=p,v[3]*=m,this.scatterOptions.borderColor=v,d=t.marker.size,this.scatterOptions.size=d,this.scatterOptions.borderSize=t.marker.line.width,this.scatter.update(this.scatterOptions)}else this.scatterOptions.positions=new Float32Array(0),this.scatterOptions.glyphs=[],this.scatter.update(this.scatterOptions);this.scatterOptions.positions=new Float32Array(0),this.scatterOptions.glyphs=[],this.fancyScatter.update(this.scatterOptions),this.expandAxesFast(l,d)},E.updateFancy=function(t){var e=this.scene,r=e.xaxis,n=e.yaxis,a=this.bounds,o=this.pickXData=r.makeCalcdata(t,\"x\").slice(),l=this.pickYData=n.makeCalcdata(t,\"y\").slice();this.xData=o.slice(),this.yData=l.slice();var u,f,h,d,p,g,v,m,b=y.calcFromTrace(t,e.fullLayout),x=o.length,_=new Array(x),k=new Float32Array(2*x),A=new Float32Array(4*x),M=new Float32Array(4*x),T=0,E=0,S=0,z=0,P=\"log\"===r.type?function(t){return r.d2l(t)}:function(t){return t},R=\"log\"===n.type?function(t){return n.d2l(t)}:function(t){return t};for(u=0;x>u;++u)this.xData[u]=h=P(o[u]),this.yData[u]=d=R(l[u]),isNaN(h)||isNaN(d)||(_[T++]=u,k[E++]=h,k[E++]=d,p=A[S++]=h-b[u].xs||0,g=A[S++]=b[u].xh-h||0,A[S++]=0,A[S++]=0,M[z++]=0,M[z++]=0,v=M[z++]=d-b[u].ys||0,m=M[z++]=b[u].yh-d||0,a[0]=Math.min(a[0],h-p),a[1]=Math.min(a[1],d-v),a[2]=Math.max(a[2],h+g),a[3]=Math.max(a[3],d+m));k=c(k,E),this.idToIndex=_,this.updateLines(t,k),this.updateError(\"X\",t,k,A),this.updateError(\"Y\",t,k,M);var O;if(this.hasMarkers){this.scatterOptions.positions=k,this.scatterOptions.sizes=new Array(T),this.scatterOptions.glyphs=new Array(T),this.scatterOptions.borderWidths=new Array(T),this.scatterOptions.colors=new Array(4*T),this.scatterOptions.borderColors=new Array(4*T);var I,N=w(t),j=t.marker,F=j.opacity,D=t.opacity,B=s(j,F,D,x),U=C(j.symbol,x),V=L(j.line.width,x),q=s(j.line,F,D,x);for(O=i(N,j.size,x),u=0;T>u;++u)for(I=_[u],this.scatterOptions.sizes[u]=4*O[I],this.scatterOptions.glyphs[u]=U[I],this.scatterOptions.borderWidths[u]=.5*V[I],f=0;4>f;++f)this.scatterOptions.colors[4*u+f]=B[4*I+f],this.scatterOptions.borderColors[4*u+f]=q[4*I+f];this.fancyScatter.update(this.scatterOptions)}else this.scatterOptions.positions=new Float32Array(0),this.scatterOptions.glyphs=[],this.fancyScatter.update(this.scatterOptions);this.scatterOptions.positions=new Float32Array(0),this.scatterOptions.glyphs=[],this.scatter.update(this.scatterOptions),this.expandAxesFancy(o,l,O)},E.updateLines=function(t,e){var r;if(this.hasLines){var n=e;if(!t.connectgaps){var i=0,a=this.xData,o=this.yData;for(n=new Float32Array(2*a.length),r=0;ro;o++)r=this.scene[T[o]],n=r._min,n||(n=[]),n.push({val:t[o],pad:a}),i=r._max,i||(i=[]),i.push({val:t[o+2],pad:a})},E.expandAxesFancy=function(t,e,r){var n=this.scene,i={padded:!0,ppad:r};m.expand(n.xaxis,t,i),m.expand(n.yaxis,e,i)},E.dispose=function(){this.line.dispose(),this.errorX.dispose(),this.errorY.dispose(),this.scatter.dispose(),this.fancyScatter.dispose()},e.exports=u},{\"../../components/errorbars\":331,\"../../constants/gl2d_dashes\":366,\"../../constants/gl_markers\":368,\"../../lib\":381,\"../../lib/gl_format_color\":379,\"../../lib/str2rgbarray\":392,\"../../plots/cartesian/axes\":403,\"../scatter/get_trace_color\":561,\"../scatter/make_bubble_size_func\":567,\"../scatter/subtypes\":573,\"fast-isnumeric\":117,\"gl-error2d\":119,\"gl-line2d\":125,\"gl-scatter2d\":190,\"gl-scatter2d-fancy\":185}],589:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/constants\"),a=t(\"../scatter/subtypes\"),o=t(\"../scatter/xy_defaults\"),s=t(\"../scatter/marker_defaults\"),l=t(\"../scatter/line_defaults\"),c=t(\"../scatter/fillcolor_defaults\"),u=t(\"../../components/errorbars/defaults\"),f=t(\"./attributes\");e.exports=function(t,e,r,h){function d(r,i){return n.coerce(t,e,f,r,i)}var p=o(t,e,d);return p?(d(\"text\"),d(\"mode\",pr;r++)y=e.a[r],b=e.b[r],x=e.c[r],n(y)&&n(b)&&n(x)?(y=+y,b=+b,x=+x,_=v/(y+b+x),1!==_&&(y*=_,b*=_,x*=_),k=y,w=x-b,M[r]={x:w,y:k,a:y,b:b,c:x}):M[r]={x:!1,y:!1};var T,E;if(o.hasMarkers(e)&&(T=e.marker,E=T.size,Array.isArray(E))){var L={type:\"linear\"};i.setConvert(L),E=L.makeCalcdata(e.marker,\"size\"),E.length>A&&E.splice(A,E.length-A)}return s(e),void 0!==typeof E&&a.mergeArray(E,M,\"ms\"),M}},{\"../../lib\":381,\"../../plots/cartesian/axes\":403,\"../scatter/marker_colorscale_calc\":568,\"../scatter/subtypes\":573,\"fast-isnumeric\":117}],593:[function(t,e,r){\"use strict\";var n=t(\"../../lib\"),i=t(\"../scatter/constants\"),a=t(\"../scatter/subtypes\"),o=t(\"../scatter/marker_defaults\"),s=t(\"../scatter/line_defaults\"),l=t(\"../scatter/line_shape_defaults\"),c=t(\"../scatter/text_defaults\"),u=t(\"../scatter/fillcolor_defaults\"),f=t(\"./attributes\");e.exports=function(t,e,r,h){function d(r,i){return n.coerce(t,e,f,r,i)}var p,g=d(\"a\"),v=d(\"b\"),m=d(\"c\");if(g?(p=g.length,v?(p=Math.min(p,v.length),m&&(p=Math.min(p,m.length))):p=m?Math.min(p,m.length):0):v&&m&&(p=Math.min(v.length,m.length)),!p)return void(e.visible=!1);g&&p\"),s}}},{\"../../plots/cartesian/axes\":403,\"../scatter/hover\":562}],595:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"../scatter/colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./plot\"),n.style=t(\"./style\"),n.hoverPoints=t(\"./hover\"),n.selectPoints=t(\"./select\"),n.moduleType=\"trace\",n.name=\"scatterternary\",n.basePlotModule=t(\"../../plots/ternary\"),n.categories=[\"ternary\",\"symbols\",\"markerColorscale\",\"showLegend\"],n.meta={},e.exports=n},{\"../../plots/ternary\":459,\"../scatter/colorbar\":557,\"./attributes\":591,\"./calc\":592,\"./defaults\":593,\"./hover\":594,\"./plot\":596,\"./select\":597,\"./style\":598}],596:[function(t,e,r){\"use strict\";var n=t(\"../scatter/plot\");e.exports=function(t,e){for(var r={x:function(){return t.xaxis},y:function(){return t.yaxis},plot:t.plotContainer},i=new Array(e.length),a=t.graphDiv.calcdata,o=0;oe){for(var r=g/e,n=[0|Math.floor(t[0].shape[0]*r+1),0|Math.floor(t[0].shape[1]*r+1)],i=n[0]*n[1],o=0;or;++r)this.showContour[r]&&(e=!0,t[r]=this.scene.contourLevels[r]);e&&this.surface.update({levels:t})},v.update=function(t){var e,r=this.scene,n=r.fullSceneLayout,a=this.surface,s=t.opacity,l=i(t.colorscale,s),u=t.z,h=t.x,d=t.y,g=n.xaxis,v=n.yaxis,m=n.zaxis,y=r.dataScale,b=u[0].length,x=u.length,_=[c(new Float32Array(b*x),[b,x]),c(new Float32Array(b*x),[b,x]),c(new Float32Array(b*x),[b,x])],w=_[0],k=_[1],A=r.contourLevels;this.data=t,f(_[2],function(t,e){return m.d2l(u[e][t])*y[2]}),Array.isArray(h[0])?f(w,function(t,e){return g.d2l(h[e][t])*y[0]}):f(w,function(t){return g.d2l(h[t])*y[0]}),Array.isArray(d[0])?f(k,function(t,e){return v.d2l(d[e][t])*y[1]}):f(k,function(t,e){return v.d2l(d[e])*y[1]});var M={colormap:l,levels:[[],[],[]],showContour:[!0,!0,!0],showSurface:!t.hidesurface,contourProject:[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],contourWidth:[1,1,1],contourColor:[[1,1,1,1],[1,1,1,1],[1,1,1,1]],contourTint:[1,1,1],dynamicColor:[[1,1,1,1],[1,1,1,1],[1,1,1,1]],dynamicWidth:[1,1,1],dynamicTint:[1,1,1],opacity:1};if(M.intensityBounds=[t.cmin,t.cmax],t.surfacecolor){var T=c(new Float32Array(b*x),[b,x]);f(T,function(e,r){return t.surfacecolor[r][e]}),_.push(T)}else M.intensityBounds[0]*=y[2],M.intensityBounds[1]*=y[2];this.dataScale=o(_),t.surfacecolor&&(M.intensity=_.pop()),\"opacity\"in t&&t.opacity<1&&(M.opacity=.25*t.opacity);var E=[!0,!0,!0],L=[\"x\",\"y\",\"z\"];for(e=0;3>e;++e){var S=t.contours[L[e]];E[e]=S.highlight,M.showContour[e]=S.show||S.highlight,M.showContour[e]&&(M.contourProject[e]=[S.project.x,S.project.y,S.project.z],S.show?(this.showContour[e]=!0,M.levels[e]=A[e],a.highlightColor[e]=M.contourColor[e]=p(S.color),S.usecolormap?a.highlightTint[e]=M.contourTint[e]=0:a.highlightTint[e]=M.contourTint[e]=1,M.contourWidth[e]=S.width):this.showContour[e]=!1,S.highlight&&(M.dynamicColor[e]=p(S.highlightcolor),M.dynamicWidth[e]=S.highlightwidth))}M.coords=_,a.update(M),a.visible=t.visible,a.enableDynamic=E,a.snapToData=!0,\"lighting\"in t&&(a.ambientLight=t.lighting.ambient,a.diffuseLight=t.lighting.diffuse,a.specularLight=t.lighting.specular,a.roughness=t.lighting.roughness,a.fresnel=t.lighting.fresnel),\"lightposition\"in t&&(void 0===a.lightPosition?a.lightPosition=[t.lightposition.x,t.lightposition.y,t.lightposition.z]:(a.lightPosition.x=t.lightposition.x,a.lightPosition.y=t.lightposition.y,a.lightPosition.z=t.lightposition.z)),s&&1>s&&(a.supportsTransparency=!0)},v.dispose=function(){this.scene.glplot.remove(this.surface),this.surface.dispose()},e.exports=s},{\"../../lib/str2rgbarray\":392,\"gl-surface3d\":221,ndarray:253,\"ndarray-fill\":246,\"ndarray-homography\":251,\n", + "\"ndarray-ops\":252,tinycolor2:274}],603:[function(t,e,r){\"use strict\";function n(t,e,r){e in t&&!(r in t)&&(t[r]=t[e])}var i=t(\"../../lib\"),a=t(\"../../components/colorscale/defaults\"),o=t(\"./attributes\");e.exports=function(t,e,r,s){function l(r,n){return i.coerce(t,e,o,r,n)}var c,u,f=l(\"z\");if(!f)return void(e.visible=!1);var h=f[0].length,d=f.length;if(l(\"x\"),l(\"y\"),!Array.isArray(e.x))for(e.x=[],c=0;h>c;++c)e.x[c]=c;if(l(\"text\"),!Array.isArray(e.y))for(e.y=[],c=0;d>c;++c)e.y[c]=c;[\"lighting.ambient\",\"lighting.diffuse\",\"lighting.specular\",\"lighting.roughness\",\"lighting.fresnel\",\"lightposition.x\",\"lightposition.y\",\"lightposition.z\",\"hidesurface\",\"opacity\"].forEach(function(t){l(t)});var p=l(\"surfacecolor\");l(\"colorscale\");var g=[\"x\",\"y\",\"z\"];for(c=0;3>c;++c){var v=\"contours.\"+g[c],m=l(v+\".show\"),y=l(v+\".highlight\");if(m||y)for(u=0;3>u;++u)l(v+\".project.\"+g[u]);m&&(l(v+\".color\"),l(v+\".width\"),l(v+\".usecolormap\")),y&&(l(v+\".highlightcolor\"),l(v+\".highlightwidth\"))}p||(n(t,\"zmin\",\"cmin\"),n(t,\"zmax\",\"cmax\"),n(t,\"zauto\",\"cauto\")),a(t,e,s,l,{prefix:\"\",cLetter:\"c\"})}},{\"../../components/colorscale/defaults\":312,\"../../lib\":381,\"./attributes\":599}],604:[function(t,e,r){\"use strict\";var n={};n.attributes=t(\"./attributes\"),n.supplyDefaults=t(\"./defaults\"),n.colorbar=t(\"./colorbar\"),n.calc=t(\"./calc\"),n.plot=t(\"./convert\"),n.moduleType=\"trace\",n.name=\"surface\",n.basePlotModule=t(\"../../plots/gl3d\"),n.categories=[\"gl3d\",\"noOpacity\"],n.meta={},e.exports=n},{\"../../plots/gl3d\":439,\"./attributes\":599,\"./calc\":600,\"./colorbar\":601,\"./convert\":602,\"./defaults\":603}]},{},[12])(12)});});require(['plotly'], function(Plotly) {window.Plotly = Plotly;});}" ], "text/plain": [ "" @@ -334,7 +336,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -372,7 +374,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -462,38 +464,6 @@ "The `WindFarm` object representation returns in Jupyter notebooks a little summary of what the wind farm is about" ] }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false, - "run_control": { - "marked": false - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "Horns Rev has 80 V80 wind turbines, with a total capacity of 160.0 MW\n", - "
" - ], - "text/plain": [ - "-------------------------------------------------------------\n", - "Horns Rev has 80 V80 wind turbines, with a total capacity of 160.0 MW\n", - "-------------------------------------------------------------" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wf" - ] - }, { "cell_type": "markdown", "metadata": { @@ -519,7 +489,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -611,7 +581,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 47, "metadata": { "collapsed": false }, @@ -634,7 +604,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 48, "metadata": { "collapsed": false, "run_control": { @@ -645,10 +615,10 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 19, + "execution_count": 48, "metadata": {}, "output_type": "execute_result" } @@ -678,7 +648,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 49, "metadata": { "collapsed": false, "run_control": { @@ -692,7 +662,7 @@ "53220780.163144842" ] }, - "execution_count": 20, + "execution_count": 49, "metadata": {}, "output_type": "execute_result" } @@ -703,7 +673,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 50, "metadata": { "collapsed": false, "scrolled": false @@ -715,7 +685,7 @@ "48669770.342685707" ] }, - "execution_count": 21, + "execution_count": 50, "metadata": {}, "output_type": "execute_result" } @@ -726,7 +696,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 51, "metadata": { "collapsed": false }, @@ -737,7 +707,7 @@ "55126814.187098593" ] }, - "execution_count": 22, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -759,7 +729,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 46, "metadata": { "collapsed": false, "run_control": { @@ -770,7 +740,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -790,7 +760,7 @@ "" ] }, - "execution_count": 23, + "execution_count": 46, "metadata": {}, "output_type": "execute_result" } @@ -816,7 +786,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 39, "metadata": { "collapsed": false, "run_control": { @@ -827,7 +797,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -865,12 +835,13 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 40, "metadata": { "collapsed": false, "run_control": { "marked": false - } + }, + "scrolled": true }, "outputs": [ { @@ -882,7 +853,7 @@ "" ] }, - "execution_count": 25, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } @@ -904,7 +875,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 41, "metadata": { "collapsed": false, "run_control": { @@ -916,7 +887,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -949,7 +920,7 @@ "" ] }, - "execution_count": 26, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } @@ -971,7 +942,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 28, "metadata": { "collapsed": false }, @@ -982,7 +953,7 @@ "[39593323.445963286, 55126814.187098593]" ] }, - "execution_count": 27, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -1004,7 +975,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -1012,7 +983,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -1048,7 +1019,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 30, "metadata": { "collapsed": false }, @@ -1056,7 +1027,7 @@ { "data": { "text/html": [ - "
" + "
" ], "text/plain": [ "" @@ -1113,7 +1084,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.10" + "version": "2.7.11" } }, "nbformat": 4, diff --git a/examples/hornsrev.yml b/examples/hornsrev.yml index 4cf616d..005f7fa 100644 --- a/examples/hornsrev.yml +++ b/examples/hornsrev.yml @@ -365,7 +365,7 @@ turbine_types: hub: weight: 18000 # kg [3] tower: # [2] - weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] material: steel manufacturer: Welcon control: # [1] @@ -448,4 +448,4 @@ turbine_types: - [33.608, 1.102, 2.24, 'NACA 63-218'] - [35.435, 0.926, 2.61, 'NACA 63-218'] - [37.261, 0.749, 2.84, 'NACA 63-218'] - - [39.087, 0.573, 2.97, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] \ No newline at end of file diff --git a/examples/test_WF.yml b/examples/test_WF.yml new file mode 100644 index 0000000..6254396 --- /dev/null +++ b/examples/test_WF.yml @@ -0,0 +1,131 @@ +layout: + - name: WT01 + row: 1 + position: [0, 0] + turbine_type: V80 + - name: WT02 + row: 2 + position: [560, 0] + turbine_type: V80 + +plant_data: + utm: + code: 32 + letter: U + name: Test WF + owner: DTU + +turbine_types: + # Sources: + # [1] https://windbench.net/system/files/hornsrev_v80_0.pdf + # [2] http://www.thewindpower.net/turbine_en_30_vestas_2000.php + # [3] http://en.wind-turbine-models.com/turbines/668-vestas-v-80-offshore + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: V80 + hub_height: 70.0 # [1] + rotor_diameter: 80.0 # [1] + rated_power: 2000.0 # [1] + cut_in_wind_speed: 4.0 # [1] + cut_out_wind_speed: 25.0 # [1] + rated_wind_speed: 16.0 # [1] + wind_class: IEC Ia (DIBt III) # [2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:100,5 # [2] + type: spur/planetary # [3] + nacelle: # [2] + weight: 68000.0 # kg [2], 69000.0 kg according to [3] + rotor: # [2, 3] + weight: 37000.0 # kg [2] + tip_speed: 80.0 # m/s [3] + min_speed: 9 # rd/min [2] + max_speed: 19 # rd/min [2] + manufacturer: Vestas + hub: + weight: 18000 # kg [3] + tower: # [2] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + material: steel + manufacturer: Welcon + control: # [1] + type: Active Pitch, Variable Speed + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1909 #rounds/minute + output_voltage: 690 #V + grid_frequency: 50/60 # Hz + power_curve: # [1] + - [3.0, 0.0] + - [4.0, 66.6] + - [5.0, 154.0] + - [6.0, 282.0] + - [7.0, 460.0] + - [8.0, 696.0] + - [9.0, 996.0] + - [10.0, 1341.0] + - [11.0, 1661.0] + - [12.0, 1866.0] + - [13.0, 1958.0] + - [14.0, 1988.0] + - [15.0, 1997.0] + - [16.0, 1999.0] + - [17.0, 2000.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: + - [3.0, 0.00] + - [4.0, 0.818] + - [5.0, 0.806] + - [6.0, 0.804] + - [7.0, 0.805] + - [8.0, 0.806] + - [9.0, 0.807] + - [10.0, 0.793] + - [11.0, 0.739] + - [12.0, 0.709] + - [13.0, 0.409] + - [14.0, 0.314] + - [15.0, 0.249] + - [16.0, 0.202] + - [17.0, 0.167] + - [18.0, 0.140] + - [19.0, 0.119] + - [20.0, 0.102] + - [21.0, 0.088] + - [22.0, 0.077] + - [23.0, 0.067] + - [24.0, 0.060] + - [25.0, 0.053] + c_t_idle: 0.053 # [4] + blade: + geometry: # [1] + # [radius [m], c [m], twist [deg], airfoil ] + - [2.563, 2.004, 9.50, 'Cylinder 1'] + - [4.389, 2.523, 9.50, 'Cylinder 1'] + - [6.216, 3.015, 9.50, 'FFA W3-301'] + - [8.042, 3.278, 9.50, 'FFA W3-301'] + - [9.868, 3.309, 9.50, 'FFA W3-301'] + - [11.694, 3.195, 9.50, 'FFA W3-301'] + - [13.520, 3.039, 9.22, 'FFA W3-241'] + - [15.346, 2.863, 7.81, 'FFA W3-211'] + - [17.173, 2.687, 6.40, 'FFA W3-211'] + - [18.999, 2.511, 5.11, 'FFA W3-211'] + - [20.825, 2.334, 3.83, 'FFA W3-211'] + - [22.651, 2.158, 2.61, 'NACA 63-221'] + - [24.477, 1.982, 1.48, 'NACA 63-221'] + - [26.304, 1.806, 0.42, 'NACA 63-221'] + - [28.130, 1.630, 0.49, 'NACA 63-221'] + - [29.956, 1.454, 1.23, 'NACA 63-218'] + - [31.782, 1.278, 1.79, 'NACA 63-218'] + - [33.608, 1.102, 2.24, 'NACA 63-218'] + - [35.435, 0.926, 2.61, 'NACA 63-218'] + - [37.261, 0.749, 2.84, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] diff --git a/examples/test_WF_2Turbines.yml b/examples/test_WF_2Turbines.yml new file mode 100644 index 0000000..114a2db --- /dev/null +++ b/examples/test_WF_2Turbines.yml @@ -0,0 +1,215 @@ +layout: + - name: WT01 + row: 1 + position: [0, 0] + turbine_type: V80 + - name: WT02 + row: 2 + position: [560, 0] + turbine_type: B76 + +plant_data: + utm: + code: 32 + letter: U + name: Test WF + owner: DTU + +turbine_types: + # Sources: + # [1] https://windbench.net/system/files/hornsrev_v80_0.pdf + # [2] http://www.thewindpower.net/turbine_en_30_vestas_2000.php + # [3] http://en.wind-turbine-models.com/turbines/668-vestas-v-80-offshore + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: V80 + hub_height: 90.0 # [1] + rotor_diameter: 80.0 # [1] + rated_power: 2000.0 # [1] + cut_in_wind_speed: 4.0 # [1] + cut_out_wind_speed: 25.0 # [1] + rated_wind_speed: 16.0 # [1] + wind_class: IEC Ia (DIBt III) # [2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:100,5 # [2] + type: spur/planetary # [3] + nacelle: # [2] + weight: 68000.0 # kg [2], 69000.0 kg according to [3] + rotor: # [2, 3] + weight: 37000.0 # kg [2] + tip_speed: 80.0 # m/s [3] + min_speed: 9 # rd/min [2] + max_speed: 19 # rd/min [2] + manufacturer: Vestas + hub: + weight: 18000 # kg [3] + tower: # [2] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + material: steel + manufacturer: Welcon + control: # [1] + type: Active Pitch, Variable Speed + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1909 #rounds/minute + output_voltage: 690 #V + grid_frequency: 50/60 # Hz + power_curve: # [1] + - [3.0, 0.0] + - [4.0, 66.6] + - [5.0, 154.0] + - [6.0, 282.0] + - [7.0, 460.0] + - [8.0, 696.0] + - [9.0, 996.0] + - [10.0, 1341.0] + - [11.0, 1661.0] + - [12.0, 1866.0] + - [13.0, 1958.0] + - [14.0, 1988.0] + - [15.0, 1997.0] + - [16.0, 1999.0] + - [17.0, 2000.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: + - [3.0, 0.00] + - [4.0, 0.818] + - [5.0, 0.806] + - [6.0, 0.804] + - [7.0, 0.805] + - [8.0, 0.806] + - [9.0, 0.807] + - [10.0, 0.793] + - [11.0, 0.739] + - [12.0, 0.709] + - [13.0, 0.409] + - [14.0, 0.314] + - [15.0, 0.249] + - [16.0, 0.202] + - [17.0, 0.167] + - [18.0, 0.140] + - [19.0, 0.119] + - [20.0, 0.102] + - [21.0, 0.088] + - [22.0, 0.077] + - [23.0, 0.067] + - [24.0, 0.060] + - [25.0, 0.053] + c_t_idle: 0.053 # [4] + blade: + geometry: # [1] + # [radius [m], c [m], twist [deg], airfoil ] + - [2.563, 2.004, 9.50, 'Cylinder 1'] + - [4.389, 2.523, 9.50, 'Cylinder 1'] + - [6.216, 3.015, 9.50, 'FFA W3-301'] + - [8.042, 3.278, 9.50, 'FFA W3-301'] + - [9.868, 3.309, 9.50, 'FFA W3-301'] + - [11.694, 3.195, 9.50, 'FFA W3-301'] + - [13.520, 3.039, 9.22, 'FFA W3-241'] + - [15.346, 2.863, 7.81, 'FFA W3-211'] + - [17.173, 2.687, 6.40, 'FFA W3-211'] + - [18.999, 2.511, 5.11, 'FFA W3-211'] + - [20.825, 2.334, 3.83, 'FFA W3-211'] + - [22.651, 2.158, 2.61, 'NACA 63-221'] + - [24.477, 1.982, 1.48, 'NACA 63-221'] + - [26.304, 1.806, 0.42, 'NACA 63-221'] + - [28.130, 1.630, 0.49, 'NACA 63-221'] + - [29.956, 1.454, 1.23, 'NACA 63-218'] + - [31.782, 1.278, 1.79, 'NACA 63-218'] + - [33.608, 1.102, 2.24, 'NACA 63-218'] + - [35.435, 0.926, 2.61, 'NACA 63-218'] + - [37.261, 0.749, 2.84, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] + + # Sources: + # [1] http://www.middelgrunden.dk/middelgrunden/sites/default/files/public/file/Location.pdf + # [2] http://www.thewindpower.net/turbine_en_229_bonus_2000.php + # [3] http://en.wind-turbine-models.com/turbines/121-bonus-b76-2000 + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: B76 + hub_height: 64.0 #[1] + rotor_diameter: 76.0 #[1] + rated_power: 2000.0 #[1] + cut_in_wind_speed: 3.0 #[2] + cut_out_wind_speed: 25.0 #[2] + rated_wind_speed: 15.0 #[2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:89 # [2], or [3]: 1:93 + manufacturer: Flender + nacelle: # [2] + weight: 65000.0 #kg [2], or [3]: 82500 kg + rotor: # [2, 3] + weight: 38000.0 #kg [2], or [3]: 52000.0 kg + max_speed: 17 #rd/min [2], or [3]: 16 + tip_speed: 63.7 #m/s [3] + manufacturer: LM Glasfiber, Bonus + tower: # [2] + weight: 162000.0 #kg [2] + control: # [2] + type: Stall + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1500 #rounds/minute + output_voltage: 690 #V + manufacturer: ABB + power_curve: # [4] + - [3.0, 0.0] + - [4.0, 43.0] + - [5.0, 133.0] + - [6.0, 237.0] + - [7.0, 401.0] + - [8.0, 623.0] + - [9.0, 886.0] + - [10.0, 1190.0] + - [11.0, 1502.0] + - [12.0, 1740.0] + - [13.0, 1891.0] + - [14.0, 1962.0] + - [15.0, 1988.0] + - [16.0, 1996.0] + - [17.0, 1999.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: # [4] + - [3.0, 0.00] + - [4.0, 0.857] + - [5.0, 0.858] + - [6.0, 0.810] + - [7.0, 0.853] + - [8.0, 0.870] + - [9.0, 0.811] + - [10.0, 0.756] + - [11.0, 0.679] + - [12.0, 0.584] + - [13.0, 0.511] + - [14.0, 0.439] + - [15.0, 0.383] + - [16.0, 0.338] + - [17.0, 0.301] + - [18.0, 0.271] + - [19.0, 0.246] + - [20.0, 0.225] + - [21.0, 0.207] + - [22.0, 0.192] + - [23.0, 0.179] + - [24.0, 0.168] + - [25.0, 0.158] + c_t_idle: 0.158 # [4] diff --git a/examples/test_WF_4.yml b/examples/test_WF_4.yml new file mode 100644 index 0000000..620a955 --- /dev/null +++ b/examples/test_WF_4.yml @@ -0,0 +1,139 @@ +layout: + - name: WT01 + row: 1 + position: [0, 0] + turbine_type: V80 + - name: WT02 + row: 2 + position: [800, 0] + turbine_type: V80 + - name: WT03 + row: 1 + position: [200, 200] + turbine_type: V80 + - name: WT04 + row: 2 + position: [200, -200] + turbine_type: V80 + +plant_data: + utm: + code: 32 + letter: U + name: Test WF + owner: DTU + +turbine_types: + # Sources: + # [1] https://windbench.net/system/files/hornsrev_v80_0.pdf + # [2] http://www.thewindpower.net/turbine_en_30_vestas_2000.php + # [3] http://en.wind-turbine-models.com/turbines/668-vestas-v-80-offshore + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: V80 + hub_height: 70.0 # [1] + rotor_diameter: 80.0 # [1] + rated_power: 2000.0 # [1] + cut_in_wind_speed: 4.0 # [1] + cut_out_wind_speed: 25.0 # [1] + rated_wind_speed: 16.0 # [1] + wind_class: IEC Ia (DIBt III) # [2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:100,5 # [2] + type: spur/planetary # [3] + nacelle: # [2] + weight: 68000.0 # kg [2], 69000.0 kg according to [3] + rotor: # [2, 3] + weight: 37000.0 # kg [2] + tip_speed: 80.0 # m/s [3] + min_speed: 9 # rd/min [2] + max_speed: 19 # rd/min [2] + manufacturer: Vestas + hub: + weight: 18000 # kg [3] + tower: # [2] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + material: steel + manufacturer: Welcon + control: # [1] + type: Active Pitch, Variable Speed + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1909 #rounds/minute + output_voltage: 690 #V + grid_frequency: 50/60 # Hz + power_curve: # [1] + - [3.0, 0.0] + - [4.0, 66.6] + - [5.0, 154.0] + - [6.0, 282.0] + - [7.0, 460.0] + - [8.0, 696.0] + - [9.0, 996.0] + - [10.0, 1341.0] + - [11.0, 1661.0] + - [12.0, 1866.0] + - [13.0, 1958.0] + - [14.0, 1988.0] + - [15.0, 1997.0] + - [16.0, 1999.0] + - [17.0, 2000.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: + - [3.0, 0.00] + - [4.0, 0.818] + - [5.0, 0.806] + - [6.0, 0.804] + - [7.0, 0.805] + - [8.0, 0.806] + - [9.0, 0.807] + - [10.0, 0.793] + - [11.0, 0.739] + - [12.0, 0.709] + - [13.0, 0.409] + - [14.0, 0.314] + - [15.0, 0.249] + - [16.0, 0.202] + - [17.0, 0.167] + - [18.0, 0.140] + - [19.0, 0.119] + - [20.0, 0.102] + - [21.0, 0.088] + - [22.0, 0.077] + - [23.0, 0.067] + - [24.0, 0.060] + - [25.0, 0.053] + c_t_idle: 0.053 # [4] + blade: + geometry: # [1] + # [radius [m], c [m], twist [deg], airfoil ] + - [2.563, 2.004, 9.50, 'Cylinder 1'] + - [4.389, 2.523, 9.50, 'Cylinder 1'] + - [6.216, 3.015, 9.50, 'FFA W3-301'] + - [8.042, 3.278, 9.50, 'FFA W3-301'] + - [9.868, 3.309, 9.50, 'FFA W3-301'] + - [11.694, 3.195, 9.50, 'FFA W3-301'] + - [13.520, 3.039, 9.22, 'FFA W3-241'] + - [15.346, 2.863, 7.81, 'FFA W3-211'] + - [17.173, 2.687, 6.40, 'FFA W3-211'] + - [18.999, 2.511, 5.11, 'FFA W3-211'] + - [20.825, 2.334, 3.83, 'FFA W3-211'] + - [22.651, 2.158, 2.61, 'NACA 63-221'] + - [24.477, 1.982, 1.48, 'NACA 63-221'] + - [26.304, 1.806, 0.42, 'NACA 63-221'] + - [28.130, 1.630, 0.49, 'NACA 63-221'] + - [29.956, 1.454, 1.23, 'NACA 63-218'] + - [31.782, 1.278, 1.79, 'NACA 63-218'] + - [33.608, 1.102, 2.24, 'NACA 63-218'] + - [35.435, 0.926, 2.61, 'NACA 63-218'] + - [37.261, 0.749, 2.84, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] diff --git a/examples/test_WF_4Turbines.yml b/examples/test_WF_4Turbines.yml new file mode 100644 index 0000000..2414e4d --- /dev/null +++ b/examples/test_WF_4Turbines.yml @@ -0,0 +1,223 @@ +layout: + - name: WT01 + row: 1 + position: [0, 0] + turbine_type: V80 + - name: WT02 + row: 2 + position: [560, 0] + turbine_type: B76 + - name: WT03 + row: 1 + position: [200, 200] + turbine_type: V80 + - name: WT04 + row: 2 + position: [200, -200] + turbine_type: B76 + +plant_data: + utm: + code: 32 + letter: U + name: Test WF + owner: DTU + +turbine_types: + # Sources: + # [1] https://windbench.net/system/files/hornsrev_v80_0.pdf + # [2] http://www.thewindpower.net/turbine_en_30_vestas_2000.php + # [3] http://en.wind-turbine-models.com/turbines/668-vestas-v-80-offshore + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: V80 + hub_height: 90.0 # [1] + rotor_diameter: 80.0 # [1] + rated_power: 2000.0 # [1] + cut_in_wind_speed: 4.0 # [1] + cut_out_wind_speed: 25.0 # [1] + rated_wind_speed: 16.0 # [1] + wind_class: IEC Ia (DIBt III) # [2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:100,5 # [2] + type: spur/planetary # [3] + nacelle: # [2] + weight: 68000.0 # kg [2], 69000.0 kg according to [3] + rotor: # [2, 3] + weight: 37000.0 # kg [2] + tip_speed: 80.0 # m/s [3] + min_speed: 9 # rd/min [2] + max_speed: 19 # rd/min [2] + manufacturer: Vestas + hub: + weight: 18000 # kg [3] + tower: # [2] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + material: steel + manufacturer: Welcon + control: # [1] + type: Active Pitch, Variable Speed + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1909 #rounds/minute + output_voltage: 690 #V + grid_frequency: 50/60 # Hz + power_curve: # [1] + - [3.0, 0.0] + - [4.0, 66.6] + - [5.0, 154.0] + - [6.0, 282.0] + - [7.0, 460.0] + - [8.0, 696.0] + - [9.0, 996.0] + - [10.0, 1341.0] + - [11.0, 1661.0] + - [12.0, 1866.0] + - [13.0, 1958.0] + - [14.0, 1988.0] + - [15.0, 1997.0] + - [16.0, 1999.0] + - [17.0, 2000.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: + - [3.0, 0.00] + - [4.0, 0.818] + - [5.0, 0.806] + - [6.0, 0.804] + - [7.0, 0.805] + - [8.0, 0.806] + - [9.0, 0.807] + - [10.0, 0.793] + - [11.0, 0.739] + - [12.0, 0.709] + - [13.0, 0.409] + - [14.0, 0.314] + - [15.0, 0.249] + - [16.0, 0.202] + - [17.0, 0.167] + - [18.0, 0.140] + - [19.0, 0.119] + - [20.0, 0.102] + - [21.0, 0.088] + - [22.0, 0.077] + - [23.0, 0.067] + - [24.0, 0.060] + - [25.0, 0.053] + c_t_idle: 0.053 # [4] + blade: + geometry: # [1] + # [radius [m], c [m], twist [deg], airfoil ] + - [2.563, 2.004, 9.50, 'Cylinder 1'] + - [4.389, 2.523, 9.50, 'Cylinder 1'] + - [6.216, 3.015, 9.50, 'FFA W3-301'] + - [8.042, 3.278, 9.50, 'FFA W3-301'] + - [9.868, 3.309, 9.50, 'FFA W3-301'] + - [11.694, 3.195, 9.50, 'FFA W3-301'] + - [13.520, 3.039, 9.22, 'FFA W3-241'] + - [15.346, 2.863, 7.81, 'FFA W3-211'] + - [17.173, 2.687, 6.40, 'FFA W3-211'] + - [18.999, 2.511, 5.11, 'FFA W3-211'] + - [20.825, 2.334, 3.83, 'FFA W3-211'] + - [22.651, 2.158, 2.61, 'NACA 63-221'] + - [24.477, 1.982, 1.48, 'NACA 63-221'] + - [26.304, 1.806, 0.42, 'NACA 63-221'] + - [28.130, 1.630, 0.49, 'NACA 63-221'] + - [29.956, 1.454, 1.23, 'NACA 63-218'] + - [31.782, 1.278, 1.79, 'NACA 63-218'] + - [33.608, 1.102, 2.24, 'NACA 63-218'] + - [35.435, 0.926, 2.61, 'NACA 63-218'] + - [37.261, 0.749, 2.84, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] + + # Sources: + # [1] http://www.middelgrunden.dk/middelgrunden/sites/default/files/public/file/Location.pdf + # [2] http://www.thewindpower.net/turbine_en_229_bonus_2000.php + # [3] http://en.wind-turbine-models.com/turbines/121-bonus-b76-2000 + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: B76 + hub_height: 64.0 #[1] + rotor_diameter: 76.0 #[1] + rated_power: 2000.0 #[1] + cut_in_wind_speed: 3.0 #[2] + cut_out_wind_speed: 25.0 #[2] + rated_wind_speed: 15.0 #[2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:89 # [2], or [3]: 1:93 + manufacturer: Flender + nacelle: # [2] + weight: 65000.0 #kg [2], or [3]: 82500 kg + rotor: # [2, 3] + weight: 38000.0 #kg [2], or [3]: 52000.0 kg + max_speed: 17 #rd/min [2], or [3]: 16 + tip_speed: 63.7 #m/s [3] + manufacturer: LM Glasfiber, Bonus + tower: # [2] + weight: 162000.0 #kg [2] + control: # [2] + type: Stall + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1500 #rounds/minute + output_voltage: 690 #V + manufacturer: ABB + power_curve: # [4] + - [3.0, 0.0] + - [4.0, 43.0] + - [5.0, 133.0] + - [6.0, 237.0] + - [7.0, 401.0] + - [8.0, 623.0] + - [9.0, 886.0] + - [10.0, 1190.0] + - [11.0, 1502.0] + - [12.0, 1740.0] + - [13.0, 1891.0] + - [14.0, 1962.0] + - [15.0, 1988.0] + - [16.0, 1996.0] + - [17.0, 1999.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: # [4] + - [3.0, 0.00] + - [4.0, 0.857] + - [5.0, 0.858] + - [6.0, 0.810] + - [7.0, 0.853] + - [8.0, 0.870] + - [9.0, 0.811] + - [10.0, 0.756] + - [11.0, 0.679] + - [12.0, 0.584] + - [13.0, 0.511] + - [14.0, 0.439] + - [15.0, 0.383] + - [16.0, 0.338] + - [17.0, 0.301] + - [18.0, 0.271] + - [19.0, 0.246] + - [20.0, 0.225] + - [21.0, 0.207] + - [22.0, 0.192] + - [23.0, 0.179] + - [24.0, 0.168] + - [25.0, 0.158] + c_t_idle: 0.158 # [4] diff --git a/fusedwake/gcl/__init__.py b/fusedwake/gcl/__init__.py index 008f9cb..2a3867a 100644 --- a/fusedwake/gcl/__init__.py +++ b/fusedwake/gcl/__init__.py @@ -4,30 +4,72 @@ class GCL(object): + """GC Larsen wake model applied to flat terrain/offshore wind farms [1]. + + GCL(WF, WS, WD, TI, version, pars) + + This model is able to run with individual turbine rotor averaged WS, WD and TI. + Different turbines types can be used in the same power plant. + + A modification of the rotor averaging quadrature was done. For more + information see the jupyter notebook inside the test folder. + + This class wraps four different implementations (version): + py_gcl_v0: Python version. Double WT loop from the furthest downstream + turbine up to the upstream turbines. Inner loop estimates the + wake due to each upstream turbine. + py_gcl_v1 (Default): Python version. Single WT loop from the further upstream + turbines. The deficit each turbine produces in all the wake affected + turbines is computed in vectorized way. + fort_gcl: Fortran version. Fastest implementation. Is able to receive + multiple flowcases at the same time. + fort_gcl_av: Fortran version with individual turbine availability. + can handle non operating turbines inside the plant. + + Inputs + ---------- + WF fusedwake.WindFarm object + WS Individual rotor averaged undisturbed wind speed + WD Individual rotor averaged undisturbed wind direction + TI Individual rotor averaged ambient turbulent intensity + version py_gcl_v0, py_gcl_v1, fort_gcl, fort_gcl_av + pars GCL wake model parameters [a1, a2, a3, a4, b1, b2] + + @moduleauthor:: Pierre-Elouan Re'thore' + Juan P. Murcia + + References: + [1] Larsen GC. "A simple stationary semi-analytical wake model", 2009 + + """ # The different versions and their respective inputs inputs = { - 'py_gcl_v0': ['WF', 'WS', 'WD', 'TI', 'z0', 'NG', 'sup', 'pars'], - 'py_gcl_v1': ['WF', 'WS', 'WD', 'TI', 'z0', 'alpha', 'inflow', 'NG', 'sup', 'pars'], + 'py_gcl_v0': ['WF', 'WS', 'WD', 'TI', 'pars'], + 'py_gcl_v1': ['WF', 'WS', 'WD', 'TI', 'pars'], 'fort_gcl_av': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'ws', 'wd', 'ti', - 'av', 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'ng', 'rho', 'ws_ci', + 'av', 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'rho', 'ws_ci', 'ws_co', 'ct_idle'], 'fort_gcl': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'ws', 'wd', 'ti', - 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'ng', 'rho', 'ws_ci', + 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'rho', 'ws_ci', 'ws_co', 'ct_idle'], - 'fort_gcl_s': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'WS', 'WD', 'TI', - 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'NG', 'rho', 'ws_ci', + 'fort_gcl_s': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'ws', 'wd', 'ti', + 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'rho', 'ws_ci', + 'ws_co', 'ct_idle'], + 'fort_gclm_s': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'ws', 'wd', 'ti', + 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'rho', 'ws_ci', + 'ws_co', 'ct_idle'], + 'fort_gclm': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'ws', 'wd', 'ti', + 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'rho', 'ws_ci', + 'ws_co', 'ct_idle'], + 'fort_gclm_av': ['x_g', 'y_g', 'z_g', 'dt', 'p_c', 'ct_c', 'ws', 'wd', 'ti', + 'av', 'a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'rho', 'ws_ci', 'ws_co', 'ct_idle'], } # Default variables for running the wind farm flow model defaults = { 'rho': 1.225, 'version': 'py_gcl_v1', - 'z0': 0.0001, - 'sup': 'lin', # ['lin' | 'quad'] - 'alpha': 0.101, - 'pars': [0.435449861, 0.797853685, -0.124807893, 0.136821858, 15.6298, 1.0], - 'inflow': 'log', - 'NG': 4, + 'pars': [0.435449861, 0.797853685, -0.124807893, 0.136821858, 15.6298, 1.0], 'inflow': 'log', } def __init__(self, **kwargs): self.set(self.defaults) @@ -40,8 +82,8 @@ def versions(self): return versions def set(self, dic): - """ Set the attributes of a dictionary as instance variables. Prepares - for the different versions of the wake model + """ Set the attributes of a dictionary as instance variables. + Prepares for the different versions of the wake model Parameters ---------- @@ -54,12 +96,12 @@ def set(self, dic): # Preparing for the inputs for the fortran version if 'WF' in dic: self.x_g, self.y_g, self.z_g = self.WF.get_T2T_gl_coord2() - self.dt = self.WF.rotor_diameter - self.p_c = self.WF.power_curve - self.ct_c = self.WF.c_t_curve - self.ws_ci = self.WF.cut_in_wind_speed - self.ws_co = self.WF.cut_out_wind_speed - self.ct_idle = self.WF.c_t_idle + self.dt = np.array(self.WF.rotor_diameter) + self.p_c = np.array(self.WF.power_curve) + self.ct_c = np.array(self.WF.c_t_curve) + self.ws_ci = np.array(self.WF.cut_in_wind_speed) + self.ws_co = np.array(self.WF.cut_out_wind_speed) + self.ct_idle = np.array(self.WF.c_t_idle) def _get_kwargs(self, version): """Prepare a dictionary of inputs to be passed to the wind farm flow model @@ -75,12 +117,16 @@ def _get_kwargs(self, version): # fortran only get lowercase inputs return {(k).lower():getattr(self, k) for k in self.inputs[version] if hasattr(self, k)} - def fort_gcl_av(self): + def fortran_gcl_av(self): # Prepare the inputs if isinstance(self.WS, float) or isinstance(self.WS, int): self.ws = np.array([self.WS]) self.wd = np.array([self.WD]) self.ti = np.array([self.TI]) + else: + self.ws = self.WS + self.wd = self.WD + self.ti = self.TI if not hasattr(self, 'wt_available'): self.wt_available = np.ones([len(self.ws), self.WF.nWT]) self.av = self.wt_available @@ -100,7 +146,7 @@ def fort_gcl_av(self): try: self.p_wt, self.t_wt, self.u_wt = fgcl.gcl_av(**self._get_kwargs(self.version)) except Exception as e: - raise Exception('The fortran version {} failed with the followind inputs: {}, and the error message: {}'.format( + raise Exception('The fortran version {} failed with the following inputs: {}, and the error message: {}'.format( self.version, self._get_kwargs(self.version), e)) A = 0.25 * self.WF.WT.rotor_diameter**2.0 self.c_t = self.t_wt / (0.5 * A * self.rho * self.u_wt**2.0) @@ -116,6 +162,10 @@ def fortran_gcl(self): self.ws = np.array([self.WS]) self.wd = np.array([self.WD]) self.ti = np.array([self.TI]) + else: + self.ws = self.WS + self.wd = self.WD + self.ti = self.TI self.a1 = self.pars[0] * np.ones_like(self.ws) self.a2 = self.pars[1] * np.ones_like(self.ws) self.a3 = self.pars[2] * np.ones_like(self.ws) @@ -127,7 +177,7 @@ def fortran_gcl(self): try: self.p_wt, self.t_wt, self.u_wt = fgcl.gcl(**self._get_kwargs(self.version)) except Exception as e: - raise Exception('The fortran version {} failed with the followind inputs: {}, and the error message: {}'.format( + raise Exception('The fortran version {} failed with the following inputs: {}, and the error message: {}'.format( self.version, self._get_kwargs(self.version), e)) A = 0.25 * self.WF.WT.rotor_diameter**2.0 self.c_t = self.t_wt / (0.5 * A * self.rho * self.u_wt**2.0) @@ -139,20 +189,114 @@ def fortran_gcl(self): def fortran_gcl_s(self): + self.ws = np.array([self.WS]) + self.wd = np.array([self.WD]) + self.ti = np.array([self.TI]) self.a1, self.a2, self.a3, self.a4, self.b1, self.b2 = self.pars try: self.p_wt, self.t_wt, self.u_wt = fgcl.gcl_s(**self._get_kwargs(self.version)) except Exception as e: - raise Exception('The fortran version {} failed with the followind inputs: {}, and the error message: {}'.format( + raise Exception('The fortran version {} failed with the following inputs: {}, and the error message: {}'.format( self.version, self._get_kwargs(self.version), e)) A = 0.25 * self.WF.WT.rotor_diameter**2.0 self.c_t = self.t_wt / (0.5 * A * self.rho * self.u_wt**2.0) self.p_wt *= 1.0E3 # Scaling the power back to Watt + def fortran_gclm_s(self): + self.ws = np.array([self.WS]) + self.wd = np.array([self.WD]) + self.ti = np.array([self.TI]) + self.a1, self.a2, self.a3, self.a4, self.b1, self.b2 = self.pars + try: + self.p_wt, self.t_wt, self.u_wt = fgcl.gclm_s(**self._get_kwargs(self.version)) + except Exception as e: + raise Exception('The fortran version {} failed with the following inputs: {}, and the error message: {}'.format( + self.version, self._get_kwargs(self.version), e)) + A = 0.25 * self.WF.WT.rotor_diameter**2.0 + self.c_t = self.t_wt / (0.5 * A * self.rho * self.u_wt**2.0) + self.p_wt *= 1.0E3 # Scaling the power back to Watt + + def fortran_gclm(self): + # Prepare the inputs + if isinstance(self.WS, float) or isinstance(self.WS, int): + self.ws = self.WS*np.ones([1,self.WF.nWT]) + self.wd = self.WD*np.ones([1,self.WF.nWT]) + self.ti = self.TI*np.ones([1,self.WF.nWT]) + elif len(self.WD.shape) == 1: + self.ws = self.WS.reshape([1,self.WF.nWT]) + self.wd = self.WD.reshape([1,self.WF.nWT]) + self.ti = self.TI.reshape([1,self.WF.nWT]) + else: + self.ws = self.WS + self.wd = self.WD + self.ti = self.TI + self.a1 = self.pars[0] * np.ones(self.ws.shape[0]) + self.a2 = self.pars[1] * np.ones(self.ws.shape[0]) + self.a3 = self.pars[2] * np.ones(self.ws.shape[0]) + self.a4 = self.pars[3] * np.ones(self.ws.shape[0]) + self.b1 = self.pars[4] * np.ones(self.ws.shape[0]) + self.b2 = self.pars[5] * np.ones(self.ws.shape[0]) + # Run the fortran code + try: + self.p_wt, self.t_wt, self.u_wt = fgcl.gclm(**self._get_kwargs(self.version)) + except Exception as e: + raise Exception('The fortran version {} failed with the following inputs: {}, and the error message: {}'.format( + self.version, self._get_kwargs(self.version), e)) + A = 0.25 * self.WF.WT.rotor_diameter**2.0 + self.c_t = self.t_wt / (0.5 * A * self.rho * self.u_wt**2.0) + self.p_wt *= 1.0E3 # Scaling the power back to Watt + if len(self.ws) == 1: # We are only returning a 1D array + self.p_wt = self.p_wt[0] + self.u_wt = self.u_wt[0] + self.c_t = self.c_t[0] + + def fortran_gclm_av(self): + # Prepare the inputs + if isinstance(self.WS, float) or isinstance(self.WS, int): + self.ws = self.WS*np.ones([1,self.WF.nWT]) + self.wd = self.WD*np.ones([1,self.WF.nWT]) + self.ti = self.TI*np.ones([1,self.WF.nWT]) + elif len(self.WD.shape) == 1: + self.ws = self.WS.reshape([1,self.WF.nWT]) + self.wd = self.WD.reshape([1,self.WF.nWT]) + self.ti = self.TI.reshape([1,self.WF.nWT]) + else: + self.ws = self.WS + self.wd = self.WD + self.ti = self.TI + if not hasattr(self, 'wt_available'): + self.wt_available = np.ones([self.ws.shape[0], self.WF.nWT]) + self.av = self.wt_available + elif self.wt_available.shape == (self.ws.shape[0], self.WF.nWT): + self.av = self.wt_available + else: + # stacking up the availability vector for each flow case + self.av = np.vstack([self.wt_available for i in range(self.ws.shape[0])]) + self.a1 = self.pars[0] * np.ones(self.ws.shape[0]) + self.a2 = self.pars[1] * np.ones(self.ws.shape[0]) + self.a3 = self.pars[2] * np.ones(self.ws.shape[0]) + self.a4 = self.pars[3] * np.ones(self.ws.shape[0]) + self.b1 = self.pars[4] * np.ones(self.ws.shape[0]) + self.b2 = self.pars[5] * np.ones(self.ws.shape[0]) + + # Run the fortran code + try: + self.p_wt, self.t_wt, self.u_wt = fgcl.gclm_av(**self._get_kwargs(self.version)) + except Exception as e: + raise Exception('The fortran version {} failed with the following inputs: {}, and the error message: {}'.format( + self.version, self._get_kwargs(self.version), e)) + A = 0.25 * self.WF.WT.rotor_diameter**2.0 + self.c_t = self.t_wt / (0.5 * A * self.rho * self.u_wt**2.0) + self.p_wt *= 1.0E3 # Scaling the power back to Watt + if len(self.ws) == 1: # We are only returning a 1D array + self.p_wt = self.p_wt[0] + self.u_wt = self.u_wt[0] + self.c_t = self.c_t[0] def python_v0(self): self.p_wt, self.u_wt, self.c_t = gcl.GCLarsen_v0(**self._get_kwargs(self.version)) + def python_v1(self): self.p_wt, self.u_wt, self.c_t = gcl.GCLarsen(**self._get_kwargs(self.version)) @@ -164,11 +308,17 @@ def __call__(self, **kwargs): elif self.version == 'py_gcl_v1': self.python_v1() elif self.version == 'fort_gcl_av': - self.fort_gcl_av() + self.fortran_gcl_av() elif self.version == 'fort_gcl_s': self.fortran_gcl_s() elif self.version == 'fort_gcl': self.fortran_gcl() + elif self.version == 'fort_gclm_s': + self.fortran_gclm_s() + elif self.version == 'fort_gclm': + self.fortran_gclm() + elif self.version == 'fort_gclm_av': + self.fortran_gclm_av() elif not self.version in self.versions: raise Exception("Version %s is not valid: version=[%s]"%(self.version, '|'.join(self.versions))) else: diff --git a/fusedwake/gcl/fortran/GCL.f b/fusedwake/gcl/fortran/GCL.f index b096685..21118d0 100644 --- a/fusedwake/gcl/fortran/GCL.f +++ b/fusedwake/gcl/fortran/GCL.f @@ -186,17 +186,15 @@ end subroutine get_dU c D (float): Wake generating turbine diameter c TI (float): Ambient turbulence intensity [-] c CT (float): Outputs WindTurbine object's thrust coefficient -c Ng (int): Polynomial order for Gauss-Legendre quadrature integration -c in both radial and angular positions c c Outputs c ---------- c dUeq (float): Wake velocity deficit at a location normalized by c inflow velocity - subroutine get_dUeq(n,x,y,z,DT,D,CT,TI,a1,a2,a3,a4,b1,b2,Ng,dUeq) + subroutine get_dUeq(n,x,y,z,DT,D,CT,TI,a1,a2,a3,a4,b1,b2,dUeq) implicit none - integer :: n,Ng + integer :: n real(kind=8) :: x(n),y(n),z(n),DT(n),D,CT,TI real(kind=8) :: a1,a2,a3,a4,b1,b2,dUeq(n) cf2py integer intent(hide),depend(x) :: n = len(x) @@ -209,115 +207,190 @@ subroutine get_dUeq(n,x,y,z,DT,D,CT,TI,a1,a2,a3,a4,b1,b2,Ng,dUeq) cf2py real(kind=8) optional,intent(in) :: a4=0.136821858 cf2py real(kind=8) optional,intent(in) :: b1=15.6298 cf2py real(kind=8) optional,intent(in) :: b2=1.0 -cf2py integer optional intent(in) :: Ng = 4 cf2py real(kind=8) intent(out),depend(n),dimension(n) :: dUeq ! internal variables real(kind=8), parameter :: pi=3.1415926535897932384626433832795d0 - integer :: i,j,k - real(kind=8) :: tm1,tm2,tm3,tm4 - real(kind=8), dimension(Ng) :: root,weight,r_pr,th_pr - real(kind=8), dimension(1) :: x_e,r_e,dU - real(kind=8), dimension(n) :: RT,r_R,th_R + integer :: i,j + real(kind=8), dimension(40) :: r_node,th_node,weight + real(kind=8), dimension(1) :: x_e,y_e,z_e,r_e,dU + real(kind=8), dimension(n) :: RT RT = DT/2.0d0 - ! Gauss-Legendre quadrature points and weights - select case (ng) - case ( 4 ) - root(1) = -0.3399810435848563d0 - root(2) = 0.3399810435848563d0 - root(3) = -0.8611363115940526d0 - root(4) = 0.8611363115940526d0 - - weight(1) = 0.6521451548625461d0 - weight(2) = 0.6521451548625461d0 - weight(3) = 0.3478548451374538d0 - weight(4) = 0.3478548451374538d0 - case (5) - root(1) = 0.0000000000000000d0 - root(2) = -0.5384693101056831d0 - root(3) = 0.5384693101056831d0 - root(4) = -0.9061798459386640d0 - root(5) = 0.9061798459386640d0 - - weight(1) = 0.5688888888888889d0 - weight(2) = 0.4786286704993665d0 - weight(3) = 0.4786286704993665d0 - weight(4) = 0.2369268850561891d0 - weight(5) = 0.2369268850561891d0 - case (6) - root(1) = 0.6612093864662645d0 - root(2) = -0.6612093864662645d0 - root(3) = -0.2386191860831969d0 - root(4) = 0.2386191860831969d0 - root(5) = -0.9324695142031521d0 - root(6) = 0.9324695142031521d0 - - weight(1) = 0.3607615730481386d0 - weight(2) = 0.3607615730481386d0 - weight(3) = 0.4679139345726910d0 - weight(4) = 0.4679139345726910d0 - weight(5) = 0.1713244923791704d0 - weight(6) = 0.1713244923791704d0 - case (7) - root(1) = 0.0000000000000000d0 - root(2) = 0.4058451513773972d0 - root(3) = -0.4058451513773972d0 - root(4) = -0.7415311855993945d0 - root(5) = 0.7415311855993945d0 - root(6) = -0.9491079123427585d0 - root(7) = 0.9491079123427585d0 - - weight(1) = 0.4179591836734694d0 - weight(2) = 0.3818300505051189d0 - weight(3) = 0.3818300505051189d0 - weight(4) = 0.2797053914892766d0 - weight(5) = 0.2797053914892766d0 - weight(6) = 0.1294849661688697d0 - weight(7) = 0.1294849661688697d0 - case ( 8 ) - root(1) = -0.960289856497536d0 - root(2) = -0.796666477413627d0 - root(3) = -0.525532409916329d0 - root(4) = -0.183434642495650d0 - root(5) = 0.183434642495650d0 - root(6) = 0.525532409916329d0 - root(7) = 0.796666477413627d0 - root(8) = 0.960289856497536d0 - - weight(1) = 0.101228536290374d0 - weight(2) = 0.222381034453375d0 - weight(3) = 0.313706645877888d0 - weight(4) = 0.362683783378363d0 - weight(5) = 0.362683783378363d0 - weight(6) = 0.313706645877888d0 - weight(7) = 0.222381034453375d0 - weight(8) = 0.101228536290374d0 - end select - - ! Location of the turbines in wake coordinates - r_R = (y**(2.0d0) + z**(2.0d0))**(0.5d0) - th_R = modulo(atan2(z,y),2.0d0*pi) + ! 2D Gauss quadrature nodes and weights for polar integration + ! int_(0,R) int_(0,2pi) f(r,theta) r dtheta dr = + ! sum weight f(r_node, theta_node) + r_node(1) = 0.26349922998554242692 + th_node(1) = 4.79436403870179805864 + weight(1) = 0.00579798753740115753 + + r_node(2) = 0.26349922998554242692 + th_node(2) = 5.13630491629471475079 + weight(2) = 0.01299684397858970851 + + r_node(3) = 0.26349922998554242692 + th_node(3) = 5.71955352542765460555 + weight(3) = 0.01905256317618122044 + + r_node(4) = 0.26349922998554242692 + th_node(4) = 0.20924454049880022999 + weight(4) = 0.02341643323656225281 + + r_node(5) = 0.26349922998554242692 + th_node(5) = 1.10309379714216659885 + weight(5) = 0.02569988335562909190 + + r_node(6) = 0.26349922998554242692 + th_node(6) = 2.03849885644762496284 + weight(6) = 0.02569988335562912660 + + r_node(7) = 0.26349922998554242692 + th_node(7) = 2.93234811309099407950 + weight(7) = 0.02341643323656214179 + + r_node(8) = 0.26349922998554242692 + th_node(8) = 3.70522443534172518653 + weight(8) = 0.01905256317618119616 + + r_node(9) = 0.26349922998554242692 + th_node(9) = 4.28847304447466459720 + weight(9) = 0.01299684397858971198 + + r_node(10) = 0.26349922998554242692 + th_node(10) = 4.63041392206758217753 + weight(10) = 0.00579798753740114539 + + r_node(11) = 0.57446451431535072718 + th_node(11) = 4.79436403870179805864 + weight(11) = 0.01086984853977092380 + + r_node(12) = 0.57446451431535072718 + th_node(12) = 5.13630491629471475079 + weight(12) = 0.02436599330905551281 + + r_node(13) = 0.57446451431535072718 + th_node(13) = 5.71955352542765460555 + weight(13) = 0.03571902745281423097 + + r_node(14) = 0.57446451431535072718 + th_node(14) = 0.20924454049880022999 + weight(14) = 0.04390024659093685194 + + r_node(15) = 0.57446451431535072718 + th_node(15) = 1.10309379714216659885 + weight(15) = 0.04818117282305908744 + + r_node(16) = 0.57446451431535072718 + th_node(16) = 2.03849885644762496284 + weight(16) = 0.04818117282305915683 + + r_node(17) = 0.57446451431535072718 + th_node(17) = 2.93234811309099407950 + weight(17) = 0.04390024659093664378 + + r_node(18) = 0.57446451431535072718 + th_node(18) = 3.70522443534172518653 + weight(18) = 0.03571902745281418240 + + r_node(19) = 0.57446451431535072718 + th_node(19) = 4.28847304447466459720 + weight(19) = 0.02436599330905552321 + + r_node(20) = 0.57446451431535072718 + th_node(20) = 4.63041392206758217753 + weight(20) = 0.01086984853977089951 + + r_node(21) = 0.81852948743000586429 + th_node(21) = 4.79436403870179805864 + weight(21) = 0.01086984853977090992 + + r_node(22) = 0.81852948743000586429 + th_node(22) = 5.13630491629471475079 + weight(22) = 0.02436599330905548505 + + r_node(23) = 0.81852948743000586429 + th_node(23) = 5.71955352542765460555 + weight(23) = 0.03571902745281418934 + + r_node(24) = 0.81852948743000586429 + th_node(24) = 0.20924454049880022999 + weight(24) = 0.04390024659093679643 + + r_node(25) = 0.81852948743000586429 + th_node(25) = 1.10309379714216659885 + weight(25) = 0.04818117282305903193 + + r_node(26) = 0.81852948743000586429 + th_node(26) = 2.03849885644762496284 + weight(26) = 0.04818117282305909438 + + r_node(27) = 0.81852948743000586429 + th_node(27) = 2.93234811309099407950 + weight(27) = 0.04390024659093658826 + + r_node(28) = 0.81852948743000586429 + th_node(28) = 3.70522443534172518653 + weight(28) = 0.03571902745281413383 + + r_node(29) = 0.81852948743000586429 + th_node(29) = 4.28847304447466459720 + weight(29) = 0.02436599330905549199 + + r_node(30) = 0.81852948743000586429 + th_node(30) = 4.63041392206758217753 + weight(30) = 0.01086984853977088737 + + r_node(31) = 0.96465960618086743494 + th_node(31) = 4.79436403870179805864 + weight(31) = 0.00579798753740116100 + + r_node(32) = 0.96465960618086743494 + th_node(32) = 5.13630491629471475079 + weight(32) = 0.01299684397858971545 + + r_node(33) = 0.96465960618086743494 + th_node(33) = 5.71955352542765460555 + weight(33) = 0.01905256317618123432 + + r_node(34) = 0.96465960618086743494 + th_node(34) = 0.20924454049880022999 + weight(34) = 0.02341643323656226669 + + r_node(35) = 0.96465960618086743494 + th_node(35) = 1.10309379714216659885 + weight(35) = 0.02569988335562910925 + + r_node(36) = 0.96465960618086743494 + th_node(36) = 2.03849885644762496284 + weight(36) = 0.02569988335562914394 + + r_node(37) = 0.96465960618086743494 + th_node(37) = 2.93234811309099407950 + weight(37) = 0.02341643323656215567 + + r_node(38) = 0.96465960618086743494 + th_node(38) = 3.70522443534172518653 + weight(38) = 0.01905256317618120657 + + r_node(39) = 0.96465960618086743494 + th_node(39) = 4.28847304447466459720 + weight(39) = 0.01299684397858972065 + + r_node(40) = 0.96465960618086743494 + th_node(40) = 4.63041392206758217753 + weight(40) = 0.00579798753740114886 do i = 1, n dUeq(i) = 0.0d0 if (x(i) > 0.0) then - ! Location of evaluation points in the local rotor coordinates - r_pr = RT(i)*(root+1d0)/2.0d0!uniform distribution in [0, RT] - !th_pr = pi*(root+1d0) !uniform distribution in [0,2*pi] - th_pr = pi*(root+1d0)-pi/2.d0 !uniform distribution in [-pi/2,3/2*pi] - ! Location of evaluation points in wake coordinates ! Evaluation of wake and sum of quadrature - do j = 1, Ng - do k = 1, Ng - x_e = x(i) - tm1 = (r_R(i))**(2.0d0) - tm2 = (r_pr(k))**(2.0d0) - tm3 = 2d0*r_R(i)*r_pr(k)*cos(th_R(i) - th_pr(j)) - r_e = sqrt( tm1+tm2+tm3) - call get_dU(1,x_e,r_e,D,CT,TI,a1,a2,a3,a4,b1,b2,dU) - tm4 = weight(j)*weight(k)*dU(1)*(root(k)+1d0)/4d0 - dUeq(i)=dUeq(i)+tm4 - end do + do j = 1, 40 + ! Location of evaluation points in the local rotor coordinates + x_e = x(i) + y_e = y(i) + RT(i)*r_node(j)*cos(th_node(j)) + z_e = z(i) + RT(i)*r_node(j)*sin(th_node(j)) + r_e = (y_e**(2.0d0) + z_e**(2.0d0))**(0.5d0) + call get_dU(1,x_e,r_e,D,CT,TI,a1,a2,a3,a4,b1,b2,dU) + dUeq(i)=dUeq(i)+dU(1)*weight(j) end do end if end do @@ -359,10 +432,10 @@ end subroutine get_dUeq c U (array): Rotor averaged (equivalent) Wind speed at hub height c (nWT,1) [m/s] subroutine gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI, - &a1,a2,a3,a4,b1,b2,Ng,rho,WS_CI,WS_CO,CT_idle,P,T,U) + &a1,a2,a3,a4,b1,b2,rho,WS_CI,WS_CO,CT_idle,P,T,U) implicit none - integer :: n,nP,nCT,Ng + integer :: n,nP,nCT real(kind=8) :: x_g(n,n),y_g(n,n),z_g(n,n),DT(n),P_c(n,nP,2) real(kind=8) :: CT_c(n,nCT,2),WS,WD,TI,a1,a2,a3,a4,b1,b2 real(kind=8) :: rho,WS_CI(n),WS_CO(n),CT_idle(n),P(n),T(n),U(n) @@ -380,7 +453,6 @@ subroutine gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI, cf2py real(kind=8) optional,intent(in) :: a4=0.136821858 cf2py real(kind=8) optional,intent(in) :: b1=15.6298 cf2py real(kind=8) optional,intent(in) :: b2=1.0 -cf2py integer optional intent(in) :: Ng = 4 cf2py real(kind=8) optional,intent(in) :: rho=1.225 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CI=4.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CO=25.0 @@ -418,7 +490,7 @@ subroutine gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI, else CT = CT_idle(i) end if - call get_dUeq(n,x,y,z,DT,D,CT,TI,a1,a2,a3,a4,b1,b2,Ng,dUeq) + call get_dUeq(n,x,y,z,DT,D,CT,TI,a1,a2,a3,a4,b1,b2,dUeq) U = U + U(i)*dUeq end do ! Calculates the power and thrust @@ -469,10 +541,10 @@ end subroutine gcl_s c U (array): Rotor averaged (equivalent) Wind speed at hub height c (nWT,1) [m/s] subroutine gcl(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,a1,a2, - &a3,a4,b1,b2,Ng,rho,WS_CI,WS_CO,CT_idle,P,T,U) + &a3,a4,b1,b2,rho,WS_CI,WS_CO,CT_idle,P,T,U) implicit none - integer :: n,nP,nCT,nF,Ng + integer :: n,nP,nCT,nF real(kind=8) :: x_g(n,n),y_g(n,n),z_g(n,n),DT(n),P_c(n,nP,2) real(kind=8) :: CT_c(n,nCT,2),rho,WS_CI(n),WS_CO(n),CT_idle(n) real(kind=8),dimension(nF) :: WS,WD,TI,a1,a2,a3,a4,b1,b2 @@ -492,7 +564,6 @@ subroutine gcl(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,a1,a2, cf2py real(kind=8) optional,intent(in),dimension(nF) :: a4=0.136821858 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b1=15.6298 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b2=1.0 -cf2py integer optional intent(in) :: Ng = 4 cf2py real(kind=8) optional,intent(in) :: rho=1.225 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CI=4.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CO=25.0 @@ -503,7 +574,7 @@ subroutine gcl(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,a1,a2, do i=1,nF call gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS(i),WD(i),TI(i), - & a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),Ng,rho,WS_CI,WS_CO, + & a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),rho,WS_CI,WS_CO, & CT_idle,P(i,:),T(i,:),U(i,:)) end do @@ -544,10 +615,10 @@ end subroutine gcl c U (array): Rotor averaged (equivalent) Wind speed at hub height c (nWT,1) [m/s] subroutine gcl_av(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,AV, - &a1,a2,a3,a4,b1,b2,Ng,rho,WS_CI,WS_CO,CT_idle,P,T,U) + &a1,a2,a3,a4,b1,b2,rho,WS_CI,WS_CO,CT_idle,P,T,U) implicit none - integer :: n,nP,nCT,nF,Ng,AV(nf,n) + integer :: n,nP,nCT,nF,AV(nf,n) real(kind=8) :: x_g(n,n),y_g(n,n),z_g(n,n),DT(n),P_c(n,nP,2) real(kind=8) :: CT_c(n,nCT,2),rho,WS_CI(n),WS_CO(n),CT_idle(n) real(kind=8),dimension(nF) :: WS,WD,TI,a1,a2,a3,a4,b1,b2 @@ -568,7 +639,6 @@ subroutine gcl_av(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,AV, cf2py real(kind=8) optional,intent(in),dimension(nF) :: a4=0.136821858 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b1=15.6298 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b2=1.0 -cf2py integer optional intent(in) :: Ng = 4 cf2py real(kind=8) optional,intent(in) :: rho=1.225 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CI=4.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CO=25.0 @@ -589,19 +659,24 @@ subroutine gcl_av(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,AV, end if end do call gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c_AV,CT_c_AV,WS(i),WD(i), - & TI(i),a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),Ng,rho,WS_CI, + & TI(i),a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),rho,WS_CI, & WS_CO,CT_idle,P(i,:),T(i,:),U(i,:)) end do end subroutine gcl_av c ---------------------------------------------------------------------- -c gcl_GA(x,y,z,DT,P_c,CT_c,WS,WD,TI,STD_WD,Nga) +c New Multiple turbine types (height, P and CT curves) implementation +c ---------------------------------------------------------------------- + + +c ---------------------------------------------------------------------- +c gclm_s(x,y,z,DT,P_c,CT_c,WS,TI) c ---------------------------------------------------------------------- -c GAUSSIAN AVERAGE -c Gauss-Hermite quadrature for normally distributed wind direction -c uncertainty (inside Reynolds averaging time), for a global/unique wind -c direction uncertainty +c SINGLE FLOW CASE +c Computes the WindFarm flow and Power using G. C. Larsen model: +c Larsen, G. C., and P. E. Re'thore'. A simple stationary semi-analytical +c wake model. Technical Report Risoe, 2009. c c Inputs c ---------- @@ -612,12 +687,120 @@ end subroutine gcl_av c P_c (array): Power curves c CT_c (array): Thrust coefficient curves c WS (array): Undisturbed rotor averaged (equivalent) wind speed at hub -c height [m/s] -c WD (array): Undisturbed wind direction at hub height [deg.] +c height [m/s] for each wind turbine +c WD (array): Undisturbed wind direction at hub height [deg.] for each +c turbine. Meteorological coordinates (N=0,E=90,S=180,W=270) +c TI (array): Turbulence intensity [-] for each turbine +c +c rho (float): Air density at which the power curve is valid [kg/m^3] +c WS_CI (array): Cut in wind speed [m/s] for each turbine +c WS_CO (array): Cut out wind speed [m/s] for each turbine +c CT_idle (array): Thrust coefficient at rest [-] for each turbine +c +c Outputs +c ---------- +c P (array): Power production of the wind turbines (nWT,1) [W] +c T (array): Thrust force of the wind turbines (nWT,1) [N] +c U (array): Rotor averaged (equivalent) Wind speed at hub height +c (nWT,1) [m/s] + subroutine gclm_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI, + &a1,a2,a3,a4,b1,b2,rho,WS_CI,WS_CO,CT_idle,P,T,U) + + implicit none + integer :: n,nP,nCT + real(kind=8) :: x_g(n,n),y_g(n,n),z_g(n,n),DT(n),P_c(n,nP,2) + real(kind=8) :: CT_c(n,nCT,2),WS(n),WD(n),TI(n),a1,a2,a3,a4,b1,b2 + real(kind=8) :: rho,WS_CI(n),WS_CO(n),CT_idle(n),P(n),T(n),U(n) +cf2py integer intent(hide),depend(DT) :: n = len(DT) +cf2py integer intent(hide),depend(P_c) :: nP = size(P_c,2) +cf2py integer intent(hide),depend(CT_c) :: nCT = size(CT_c,2) +cf2py real(kind=8) intent(in),dimension(n) :: DT +cf2py real(kind=8) intent(in),depend(n),dimension(n,n) :: x_g,y_g,z_g +cf2py real(kind=8) intent(in),dimension(n,nP,2) :: P_c +cf2py real(kind=8) intent(in),dimension(n,nCT,2) :: CT_c +cf2py real(kind=8) intent(in),dimension(n) :: WS,WD,TI +cf2py real(kind=8) optional,intent(in) :: a1=0.435449861 +cf2py real(kind=8) optional,intent(in) :: a2=0.797853685 +cf2py real(kind=8) optional,intent(in) :: a3=-0.124807893 +cf2py real(kind=8) optional,intent(in) :: a4=0.136821858 +cf2py real(kind=8) optional,intent(in) :: b1=15.6298 +cf2py real(kind=8) optional,intent(in) :: b2=1.0 +cf2py real(kind=8) optional,intent(in) :: rho=1.225 +cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CI=4.0 +cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CO=25.0 +cf2py real(kind=8) optional,intent(in),dimension(n) :: CT_idle=0.053 +cf2py real(kind=8) intent(out),depend(n),dimension(n) :: P,T,U + ! internal variables + real(kind=8), parameter :: pi=3.1415926535897932384626433832795d0 + integer :: i,j,k,nDownstream(n),idT(n) + real(kind=8) :: x(n),y(n),z(n),D,CT,dUeq(n),angle + real(kind=8) :: x_l(n,n),y_l(n,n) + + ! Rotates the global coordinates to local flow coordinates + do i=1,n + angle = pi*(270.0d0-WD(i))/180.0d0 + do j=1,n + x_l(i,j) = cos(angle)*x_g(i,j)+sin(angle)*y_g(i,j) + y_l(i,j) = -sin(angle)*x_g(i,j)+cos(angle)*y_g(i,j) + end do + ! counts the number of turbines in front of turbine + nDownstream(i) = count(x_l(i,:).lt.0) + end do + ! Indexes of ordered turbines from most upstream turbine + call order_id(n,nDownstream,idT) + ! Initializes the rotor averaged (equivalent) velocity + U = WS + ! Computes the rotor averaged (equivalent) velocity deficit + do j=1,n + i=idT(j) + x = x_l(i,:) + y = y_l(i,:) + z = z_g(i,:) + D = DT(i) + if ((U(i) >= WS_CI(i)).and.(U(i) <= WS_CO(i))) then + call interp_l(CT_c(i,:,1),CT_c(i,:,2),nCT,U(i),CT) + else + CT = CT_idle(i) + end if + call get_dUeq(n,x,y,z,DT,D,CT,TI(i),a1,a2,a3,a4,b1,b2,dUeq) + U = U + U(i)*dUeq + end do + ! Calculates the power and thrust + do k=1,n + if ((U(k) >= WS_CI(k)).and.(U(k) <= WS_CO(k))) then + call interp_l(P_c(k,:,1),P_c(k,:,2),nP,U(k),P(k)) + call interp_l(CT_c(k,:,1),CT_c(k,:,2),nCT,U(k),CT) + else + P(k)=0.0d0 + CT = CT_idle(k) + end if + T(k) = CT*0.5d0*rho*U(k)*U(k)*pi*DT(k)*DT(k)/4.0d0 + end do + + end subroutine gclm_s + +c ---------------------------------------------------------------------- +c gclm(x,y,z,DT,P_c,CT_c,WS,WD,TI) +c ---------------------------------------------------------------------- +c MULTIPLE FLOW CASES +c Computes the WindFarm flow and Power using G. C. Larsen model: +c Larsen, G. C., and P. E. Re'thore'. A simple stationary semi-analytical +c wake model. Technical Report Risoe, 2009. +c +c Inputs +c ---------- +c x_g (array): Distance between turbines in the global coordinates +c y_g (array): Distance between turbines in the global coordinates +c z_g (array): Distance between turbines in the global coordinates +c DT (array): Turbines diameter +c P_c (array): Power curves +c CT_c (array): Thrust coefficient curves +c WS (array): Undisturbed rotor averaged (equivalent) wind speed at hub +c height [m/s] for each wind turbine x flow [nF,n] +c WD (array): Undisturbed wind direction at hub height [deg.] for each +c turbine x flow [nF,n] c Meteorological coordinates (N=0,E=90,S=180,W=270) -c TI (array): Ambient turbulence intensity [-] -c STD_WD(array): Standard deviation of wind direction uncertainty -c Nga (int): Number of quadrature points for Gaussian averaging +c TI (array): Turbulence intensity [-] for each turbine x flow [nF,n] c c rho (float): Air density at which the power curve is valid [kg/m^3] c WS_CI (array): Cut in wind speed [m/s] for each turbine @@ -630,143 +813,53 @@ end subroutine gcl_av c T (array): Thrust force of the wind turbines (nWT,1) [N] c U (array): Rotor averaged (equivalent) Wind speed at hub height c (nWT,1) [m/s] - subroutine gcl_GA(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD, - &TI,STD_WD,Nga,a1,a2,a3,a4,b1,b2,Ng,rho,WS_CI,WS_CO,CT_idle,P,T,U) + subroutine gclm(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI,a1, + &a2,a3,a4,b1,b2,rho,WS_CI,WS_CO,CT_idle,P,T,U) implicit none - integer :: n,nP,nCT,nF,Ng,Nga + integer :: n,nP,nCT,nF real(kind=8) :: x_g(n,n),y_g(n,n),z_g(n,n),DT(n),P_c(n,nP,2) real(kind=8) :: CT_c(n,nCT,2),rho,WS_CI(n),WS_CO(n),CT_idle(n) - real(kind=8),dimension(nF) :: WS,WD,TI,STD_WD,a1,a2,a3,a4,b1,b2 - real(kind=8) :: P(nF,n),T(nF,n),U(nF,n) + real(kind=8),dimension(nF) :: a1,a2,a3,a4,b1,b2 + real(kind=8) :: WS(nF,n),WD(nF,n),TI(nF,n),P(nF,n),T(nF,n),U(nF,n) cf2py integer intent(hide),depend(DT) :: n = len(DT) cf2py integer intent(hide),depend(P_c) :: nP = size(P_c,2) cf2py integer intent(hide),depend(CT_c) :: nCT = size(CT_c,2) -cf2py integer intent(hide),depend(WS) :: nF = len(WS) +cf2py integer intent(hide),depend(WS) :: nF = size(WS,1) cf2py real(kind=8) intent(in),dimension(n) :: DT cf2py real(kind=8) intent(in),depend(n),dimension(n,n) :: x_g,y_g,z_g cf2py real(kind=8) intent(in),dimension(n,nP,2) :: P_c cf2py real(kind=8) intent(in),dimension(n,nCT,2) :: CT_c -cf2py real(kind=8) intent(in),dimension(nF) :: WS,TI,WD,STD_WD -cf2py integer optional,intent(in) :: Nga = 4 +cf2py real(kind=8) intent(in),dimension(nF,n) :: WS,WD,TI cf2py real(kind=8) optional,intent(in),dimension(nF) :: a1=0.435449861 cf2py real(kind=8) optional,intent(in),dimension(nF) :: a2=0.797853685 cf2py real(kind=8) optional,intent(in),dimension(nF) :: a3=-0.124807893 cf2py real(kind=8) optional,intent(in),dimension(nF) :: a4=0.136821858 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b1=15.6298 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b2=1.0 -cf2py integer optional intent(in) :: Ng = 4 cf2py real(kind=8) optional,intent(in) :: rho=1.225 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CI=4.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CO=25.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: CT_idle=0.053 -cf2py real(kind=8) intent(out),depend(n),dimension(nF,n) :: P,T,U +cf2py real(kind=8) intent(out),depend(nF,nF,n),dimension(nF,n) :: P,T,U ! internal variables - real(kind=8), parameter :: pi=3.1415926535897932384626433832795d0 - integer :: i,j - real(kind=8) :: WD_aux - real(kind=8), dimension(n) :: P_aux,T_aux,U_aux - real(kind=8), dimension(Nga) :: root,weight - - ! Gauss-Hermite quadrature points and weights - select case (Nga) - case ( 1 ) - root(1) = 0.0d0 - weight(1) = sqrt(pi) - case ( 4 ) - root(1) = -1.650680123885785d0 - root(2) = -0.524647623275290d0 - root(3) = 0.524647623275290d0 - root(4) = 1.650680123885785d0 - - weight(1) = 0.081312835447245d0 - weight(2) = 0.804914090005513d0 - weight(3) = 0.804914090005513d0 - weight(4) = 0.081312835447245d0 - case ( 5 ) - root(1) = -2.020182870456086d0 - root(2) = -0.958572464613819d0 - root(3) = 0.000000000000000d0 - root(4) = 0.958572464613819d0 - root(5) = 2.020182870456086d0 - - weight(1) = 0.019953242059046d0 - weight(2) = 0.393619323152241d0 - weight(3) = 0.945308720482942d0 - weight(4) = 0.393619323152241d0 - weight(5) = 0.019953242059046d0 - case ( 6 ) - root(1) = -2.350604973674492d0 - root(2) = -1.335849074013697d0 - root(3) = -0.436077411927617d0 - root(4) = 0.436077411927617d0 - root(5) = 1.335849074013697d0 - root(6) = 2.350604973674492d0 - - weight(1) = 0.004530009905509d0 - weight(2) = 0.157067320322856d0 - weight(3) = 0.724629595224392d0 - weight(4) = 0.724629595224392d0 - weight(5) = 0.157067320322856d0 - weight(6) = 0.004530009905509d0 - case ( 7 ) - root(1) = -2.651961356835233d0 - root(2) = -1.673551628767471d0 - root(3) = -0.816287882858965d0 - root(4) = 0.000000000000000d0 - root(5) = 0.816287882858965d0 - root(6) = 1.673551628767471d0 - root(7) = 2.651961356835233d0 - - weight(1) = 0.000971781245100d0 - weight(2) = 0.054515582819127d0 - weight(3) = 0.425607252610128d0 - weight(4) = 0.810264617556807d0 - weight(5) = 0.425607252610128d0 - weight(6) = 0.054515582819127d0 - weight(7) = 0.000971781245100d0 - case ( 8 ) - root(1) = -2.930637420257244d0 - root(2) = -1.981656756695843d0 - root(3) = -1.157193712446780d0 - root(4) = -0.381186990207322d0 - root(5) = 0.381186990207322d0 - root(6) = 1.157193712446780d0 - root(7) = 1.981656756695843d0 - root(8) = 2.930637420257244d0 - - weight(1) = 0.000199604072211d0 - weight(2) = 0.017077983007413d0 - weight(3) = 0.207802325814892d0 - weight(4) = 0.661147012558241d0 - weight(5) = 0.661147012558241d0 - weight(6) = 0.207802325814892d0 - weight(7) = 0.017077983007413d0 - weight(8) = 0.000199604072211d0 - end select + integer :: i do i=1,nF - P(i,:)=0.0d0 - T(i,:)=0.0d0 - U(i,:)=0.0d0 - do j=1,Nga - WD_aux = WD(i)+sqrt(2.0d0)*STD_WD(i)*root(j) - call gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS(i),WD_aux, - & TI(i),a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),Ng,rho,WS_CI,WS_CO, - & CT_idle,P_aux,T_aux,U_aux) - P(i,:)=P(i,:)+weight(j)*P_aux*(1.0d0/sqrt(pi)) - T(i,:)=T(i,:)+weight(j)*T_aux*(1.0d0/sqrt(pi)) - U(i,:)=U(i,:)+weight(j)*U_aux*(1.0d0/sqrt(pi)) - end do + call gclm_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS(i,:),WD(i,:), + & TI(i,:),a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),rho,WS_CI, + & WS_CO,CT_idle,P(i,:),T(i,:),U(i,:)) end do - end subroutine gcl_GA + end subroutine gclm c ---------------------------------------------------------------------- -c gcl_mult_wd(x,y,z,DT,P_c,CT_c,WS,WD,TI) +c gclm_av(x,y,z,DT,P_c,CT_c,WS,WD,TI,AV) c ---------------------------------------------------------------------- -c MULTIPLE FLOW CASES with individual wind direction for each turbine -c and optional individual Gaussian averaging +c MULTIPLE FLOW CASES with wt available +c Computes the WindFarm flow and Power using G. C. Larsen model: +c Larsen, G. C., and P. E. Re'thore'. A simple stationary semi-analytical +c wake model. Technical Report Risoe, 2009. c c Inputs c ---------- @@ -777,10 +870,12 @@ end subroutine gcl_GA c P_c (array): Power curves c CT_c (array): Thrust coefficient curves c WS (array): Undisturbed rotor averaged (equivalent) wind speed at hub -c height [m/s] -c WD (array): Undisturbed wind direction at hub height [deg.] +c height [m/s] for each wind turbine x flow [nF,n] +c WD (array): Undisturbed wind direction at hub height [deg.] for each +c turbine x flow [nF,n] c Meteorological coordinates (N=0,E=90,S=180,W=270) -c TI (array): Ambient turbulence intensity [-] +c TI (array): Turbulence intensity [-] for each turbine x flow [nF,n] +c AV (array): Wind turbine available per flow [nF,n] c c rho (float): Air density at which the power curve is valid [kg/m^3] c WS_CI (array): Cut in wind speed [m/s] for each turbine @@ -793,59 +888,57 @@ end subroutine gcl_GA c T (array): Thrust force of the wind turbines (nWT,1) [N] c U (array): Rotor averaged (equivalent) Wind speed at hub height c (nWT,1) [m/s] - subroutine gcl_mult_wd(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD, - &TI,STD_WD,Nga,a1,a2,a3,a4,b1,b2,Ng,rho,WS_CI,WS_CO,CT_idle,P,T,U) + subroutine gclm_av(n,nP,nCT,nF,x_g,y_g,z_g,DT,P_c,CT_c,WS,WD,TI, + &AV,a1,a2,a3,a4,b1,b2,rho,WS_CI,WS_CO,CT_idle,P,T,U) implicit none - integer :: n,nP,nCT,nF,Ng,Nga + integer :: n,nP,nCT,nF,AV(nf,n) real(kind=8) :: x_g(n,n),y_g(n,n),z_g(n,n),DT(n),P_c(n,nP,2) real(kind=8) :: CT_c(n,nCT,2),rho,WS_CI(n),WS_CO(n),CT_idle(n) - real(kind=8),dimension(nF) :: WS,TI,a1,a2,a3,a4,b1,b2 - real(kind=8),dimension(nF,n) :: WD,STD_WD - real(kind=8) :: P(nF,n),T(nF,n),U(nF,n) + real(kind=8),dimension(nF) :: a1,a2,a3,a4,b1,b2 + real(kind=8) :: WS(nF,n),WD(nF,n),TI(nF,n),P(nF,n),T(nF,n),U(nF,n) cf2py integer intent(hide),depend(DT) :: n = len(DT) cf2py integer intent(hide),depend(P_c) :: nP = size(P_c,2) cf2py integer intent(hide),depend(CT_c) :: nCT = size(CT_c,2) -cf2py integer intent(hide),depend(WS) :: nF = len(WS) +cf2py integer intent(hide),depend(WS) :: nF = size(WS,1) cf2py real(kind=8) intent(in),dimension(n) :: DT cf2py real(kind=8) intent(in),depend(n),dimension(n,n) :: x_g,y_g,z_g cf2py real(kind=8) intent(in),dimension(n,nP,2) :: P_c cf2py real(kind=8) intent(in),dimension(n,nCT,2) :: CT_c -cf2py real(kind=8) intent(in),dimension(nF) :: WS,TI -cf2py real(kind=8) intent(in),dimension(nF,n) :: WD -cf2py real(kind=8) optional,intent(in),dimension(nF,n) :: STD_WD = 0.0 -cf2py integer optional intent(in) :: Nga = 1 +cf2py real(kind=8) intent(in),dimension(nF,n) :: WS,WD,TI +cf2py integer intent(in),dimension(nF,n) :: AV cf2py real(kind=8) optional,intent(in),dimension(nF) :: a1=0.435449861 cf2py real(kind=8) optional,intent(in),dimension(nF) :: a2=0.797853685 cf2py real(kind=8) optional,intent(in),dimension(nF) :: a3=-0.124807893 cf2py real(kind=8) optional,intent(in),dimension(nF) :: a4=0.136821858 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b1=15.6298 cf2py real(kind=8) optional,intent(in),dimension(nF) :: b2=1.0 -cf2py integer optional intent(in) :: Ng = 4 cf2py real(kind=8) optional,intent(in) :: rho=1.225 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CI=4.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: WS_CO=25.0 cf2py real(kind=8) optional,intent(in),dimension(n) :: CT_idle=0.053 -cf2py real(kind=8) intent(out),depend(n),dimension(nF,n) :: P,T,U +cf2py real(kind=8) intent(out),depend(nF,n),dimension(nF,n) :: P,T,U ! internal variables integer :: i,j - real(kind=8), dimension(n) :: P_aux,T_aux,U_aux + real(kind=8) :: CT_c_AV(n,nCT,2), P_c_AV(n,nCT,2) - do j=1,n - do i=1,nF - call gcl_GA(n,nP,nCT,1,x_g,y_g,z_g,DT,P_c,CT_c,WS(i),WD(i,j), - &TI(i),STD_WD(i,j),Nga,a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),Ng,rho, - &WS_CI,WS_CO,CT_idle,P_aux,T_aux,U_aux) -! call gcl_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c,CT_c,WS(i),WD(i,j), -! & TI(i),a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),Ng,rho,WS_CI,WS_CO, -! & CT_idle,P_aux,T_aux,U_aux) - P(i,j)=P_aux(j) - T(i,j)=T_aux(j) - U(i,j)=U_aux(j) + do i=1,nF + CT_c_AV = CT_c + P_c_AV = P_c + ! Re-defines the trust curve for non available turbines + do j=1,n + if (AV(i,j)==0) then + CT_c_AV(j,:,2) = CT_idle(j) + P_c_AV(j,:,2) = 0.0d0 + end if end do + call gclm_s(n,nP,nCT,x_g,y_g,z_g,DT,P_c_AV,CT_c_AV,WS(i,:), + & WD(i,:),TI(i,:),a1(i),a2(i),a3(i),a4(i),b1(i),b2(i),rho, + & WS_CI,WS_CO,CT_idle,P(i,:),T(i,:),U(i,:)) end do - end subroutine gcl_mult_wd + end subroutine gclm_av + c ---------------------------------------------------------------------- c Additional routines diff --git a/fusedwake/gcl/python/gcl.py b/fusedwake/gcl/python/gcl.py index 45f6f22..ec77172 100644 --- a/fusedwake/gcl/python/gcl.py +++ b/fusedwake/gcl/python/gcl.py @@ -9,97 +9,7 @@ import numpy as np import fusedwake.WindTurbine as wt import fusedwake.WindFarm as wf - -def Ua(r,te,zc,us,z0): - """Function of undisturbed inflow wind speed - log law. - - .. math:: - U_a = \\frac{u^*}{\\kappa} \\ln \\left( \\frac{ z_c + r \\sin (te)) }{ z_0 } \\right) - - Parameters - ---------- - r: np.array, float - Radial coord [m] - te: np.array, float - Angle coord where 0 is the horizontal right [rad] - zc: float - Height to hub center [m] - us: float - Friction velocity [m/s] - z0: float - Roughness height [m] - - Returns - ------- - Ua: np.array, float - Axial wind speed [m/s] - """ - kappa = 0.4 # Kappa: von karman constant - return us / kappa * np.log((zc + r * np.sin(te)) / z0) - -def Ua_shear(r,te,zc,uH,alpha): - """Function of undisturbed inflow wind speed - power law. - - .. math:: - U_a = u_H \\left(\\frac{z_c + r \\sin(te) }{ z_c } \\right)^\\alpha - - Parameters - ---------- - r: np.array, float - Radial coord [m] - te: np.array, float - Angle coord where 0 is the horizontal right [rad] - zc: float - Height to hub center [m] - uH: float - Wind Speed at Hub Height [m/s] - alpha: float - Shear Coefficient [-] - - Returns - ------- - Ua: np.array, float - Axial wind speed [m/s] - """ - - return uH * ((zc + r * np.sin(te)) / zc)**alpha - - -def gaussN(R, func, varargin, NG=4): - """Calculate numerically the gauss integration. - [1] eq. 38 - - Parameters - ---------- - R: float - Wind turbine radius [m] - func: function - Wind speed function - varargin: Other arguments for the function besides [r,te] - NG: int - Number of Ga - - Returns - ------- - Ua: float - integrated value - """ - A = np.pi*R**2 - #coefficients - if NG==4: #for speed give the full values - rt = np.array([[ -0.339981043584856, -0.861136311594053, - 0.339981043584856, 0.861136311594053]]) - te = rt.T - w = np.array([[0.652145154862546, 0.347854845137454, - 0.652145154862546, 0.347854845137454]]) - else: - rt,w = np.polynomial.legendre.leggauss(NG) - rt = np.array([rt]) - te = rt.T - w = np.array([w]) - - return (np.pi/4.0)*(R**2./A)*w*w.T*func(R*(rt+1.0)/2.0, - np.pi*(te+1.0),*varargin)*(rt+1.0) +from copy import copy def get_r96(D, CT, TI, pars=[0.435449861, 0.797853685, -0.124807893, 0.136821858, 15.6298, 1.0]): """Computes the wake radius at 9.6D downstream location of a turbine @@ -107,7 +17,7 @@ def get_r96(D, CT, TI, pars=[0.435449861, 0.797853685, -0.124807893, 0.136821858 .. math:: R_{9.6D} = a_1 \\exp (a_2 C_T^2 + a_3 C_T + a_4) (b_1 TI + b_2) D - Parameters + Inputs ---------- D: float Wind turbine diameter @@ -151,7 +61,7 @@ def get_Rw(x, R, TI, CT, pars=[0.435449861, 0.797853685, -0.124807893, 0.1368218 m = \\frac{1}{\\sqrt{1 - C_T}} - Parameters + Inputs ---------- x: float or ndarray Distance between turbines and wake location in the wind direction @@ -186,29 +96,25 @@ def get_Rw(x, R, TI, CT, pars=[0.435449861, 0.797853685, -0.124807893, 0.1368218 if type(x) == float and x+x0 <= 0.: Rw = 0 elif type(x) == np.ndarray: Rw[x + x0 * _ones <= 0.] = 0. - return Rw + return Rw, x0, c1 -def get_dU(x,r,Rw,U,R,TI,CT, +def get_dU(x,r,R,CT,TI, order=1, pars=[0.435449861,0.797853685,-0.124807893,0.136821858,15.6298,1.0]): """Computes the wake velocity deficit at a location - Parameters + Inputs ---------- x: float Distance between turbines and wake location in the wind direction r: float Radial distance between the turbine and the location - Rw: float - Wake radius at location [m] R: float Wake producing turbine's radius [m] - U: float - Undisturbed wind speed [m/s] - TI: float - Ambient turbulence intensity [-] CT: float Outputs WindTurbine object's thrust coefficient + TI: float + Ambient turbulence intensity [-] order: int, optional Returns @@ -220,23 +126,16 @@ def get_dU(x,r,Rw,U,R,TI,CT, D = 2.*R Area=np.pi*D*D/4. - m=1./(np.sqrt(1.-CT)) - k=np.sqrt((m+1.)/2.) - - R96 = get_r96(D,CT,TI,pars) + Rw, x0, c1 = get_Rw(x, R, TI, CT, pars) - x0=(9.6*D)/((2.*R96/(k*D))**3.-1.) - term1=(k*D/2.)**2.5 - term2=(105./(2.*np.pi))**-0.5 - term3=(CT*Area*x0)**(-5./6.) - c1=term1*term2*term3 - - term10=0.1111*U*_ones + term10=(1./9.)*_ones term20=(CT*Area*(x+x0)**(-2.))**(1./3.) term310=(r**(1.5)) term320=(3.*c1*c1*CT*Area*(x+x0))**(-0.5) term30=term310*term320 - term40=((35./(2.*np.pi))**(3./10.))*((3.*c1*c1)**(-0.2)) + term41=(35./(2.*np.pi))**(3./10.) + term42=(3.*c1*c1)**(-0.2) + term40=term41*term42 dU1=-term10*term20*(term30-term40)**2. dU = dU1 @@ -262,7 +161,7 @@ def get_dU(x,r,Rw,U,R,TI,CT, d_3 = d_term*d_3_const d_4 = d_term*d_4_const - dU2_const = U*((CT*Area*((x+x0)**(-2.)))**(2./3.)) + dU2_const = ((CT*Area*((x+x0)**(-2.)))**(2./3.)) dU2_term0 = d_0*(z**0.) dU2_term1 = d_1*(z**1.) dU2_term2 = d_2*(z**2.) @@ -274,46 +173,118 @@ def get_dU(x,r,Rw,U,R,TI,CT, dU=dU1 + dU2 if type(r)==np.ndarray: dU[Rw 0): + LocalDU[uWT] = uWS*get_dUeq(x,y,z,cR,uR,uCT,TI[uWT],pars) # Wake superposition - if sup == 'lin': - DU = LocalDU.sum() - elif sup == 'quad': - DU = -np.sqrt(np.sum(LocalDU**2)) + DU = LocalDU.sum() - U_WT[cWT] = max(0, WS_inf + DU) - if U_WT[cWT] > WF.WT[cWT].u_cutin: + U_WT[cWT] = U_WT[cWT] + DU + if U_WT[cWT] > WF.WT[cWT].u_cutin: Ct[cWT] = WF.WT[cWT].get_CT(U_WT[cWT]) P_WT[cWT] = WF.WT[cWT].get_P(U_WT[cWT]) else: - Ct[cWT] = 0.053 + Ct[cWT] = WF.WT[cWT].CT_idle P_WT[cWT] = 0.0 return (P_WT,U_WT,Ct) def GCLarsen(WF, WS, WD,TI, - z0=0.0001, alpha=0.101, inflow='log', NG=4, sup='lin', pars=[0.435449861,0.797853685,-0.124807893,0.136821858,15.6298,1.0]): """Computes the WindFarm flow and Power using GCLarsen [Larsen, 2009, A simple Stationary...] - Parameters + Inputs ---------- WF: WindFarm Windfarm instance @@ -400,22 +362,6 @@ def GCLarsen(WF, WS, WD,TI, Meteorological axis. North = 0 [deg], clockwise. TI: float Ambient turbulence intensity [-] - z0: float, optional - Roughness height [m] - alpha: float, optional - Shear coefficient [-] - Only used for power-law undisturbed inflow. - inflow: Str, optional - Undisturbed inflow vertical profile: - 'log': Logarithmic law (neutral case); uses z0 - 'pow': Power law profile; uses alpha - NG: int, optional - Number of points in Gaussian Quadrature for equivalent wind - speed integration over rotor distFlowCoord - sup: str, optional - Wake velocity deficit superposition method: - 'lin': Linear superposition - 'quad' Quadratic superposition Returns ------- @@ -426,262 +372,66 @@ def GCLarsen(WF, WS, WD,TI, Ct: float Thrust coefficients for each wind turbine (nWT,1) [-] """ - (distFlowCoord, nDownstream, id0) = WF.turbineDistance(WD) - - # TODO: decide how at what height the us should be defined - if inflow == 'log': - kappa = 0.4 # Kappa: von karman constant - us = WS * kappa / np.log(WF.WT[0].H / z0) # friction velocity - #eq inflow ws - WS_inf = gaussN(WF.WT[0].R, Ua, [WF.WT[0].H,us,z0]).sum() - elif inflow == 'pow': - #eq inflow ws - WS_inf = gaussN(WF.WT[0].R, Ua_shear, [WF.WT[0].H,WS,alpha]).sum() - - # Gauss quadrature points - r_Gc,w_Gc = np.polynomial.legendre.leggauss(NG) - wj,wk=np.meshgrid(w_Gc,w_Gc) - tj,rk=np.meshgrid(r_Gc,r_Gc) - wj = wj.reshape((NG**2)) - tj = tj.reshape((NG**2)) - wk = wk.reshape((NG**2)) - rk = rk.reshape((NG**2)) + distFlowCoord, nDownstream, id0 = WF.turbineDistance(np.mean(WD)) + zg = WF.vectWTtoWT[2,:,:] # Initialize arrays to NaN Ct = np.nan*np.ones([WF.nWT]) P_WT = np.nan*np.ones([WF.nWT]) # Initialize velocity to undisturbed eq ws - U_WT = WS_inf*np.ones([WF.nWT]) - U_WT0 = WS_inf*np.ones([WF.nWT]) - DU_sq = 0.*U_WT - + U_WT = copy(WS) allR = np.array([WF.WT[i].R for i in range(WF.nWT)]) # Extreme wake to define WT's in each wake, including partial wakes - ID_wake = {i:(get_Rw(x=distFlowCoord[0,i,:], # streamwise distance - R=WF.WT[i].R, # Upstream radius - TI=TI, - CT=0.9, #Maximum effect - pars=pars) - > np.abs(distFlowCoord[1,i,:]) + allR).nonzero()[0] + ID_wake = {i:((get_Rw(x=distFlowCoord[0,i,:], # streamwise distance + R=allR[i], # Upstream radius + CT=0.9, # Maximum effect + TI=0.01, + pars=pars)[0])*3. + > np.abs(distFlowCoord[1,i,:]) + allR).nonzero()[0] for i in id0} for i in range(WF.nWT): #Current wind turbine starting from the most upstream cWT = id0[i] # Current radius - cR = WF.WT[i].R - # Current hub wind speed + cR = WF.WT[cWT].R + # Current wind speed cU = U_WT[cWT] - if cU>WF.WT[i].u_cutin: - Ct[cWT] = WF.WT[i].get_CT(U_WT[cWT]) - P_WT[cWT] = WF.WT[i].get_P(U_WT[cWT]) + if cU>WF.WT[cWT].u_cutin: + Ct[cWT] = WF.WT[cWT].get_CT(U_WT[cWT]) + P_WT[cWT] = WF.WT[cWT].get_P(U_WT[cWT]) else: - Ct[cWT] = 0.053 # Drag coefficient of the idled turbine + Ct[cWT] = WF.WT[cWT].CT_idle # Drag coefficient of the idled turbine P_WT[cWT] = 0.0 - # Current turbine CT cCT=Ct[cWT] - #ID_wake = {cWT:(get_Rw(x=distFlowCoord[0,cWT,:],\ - # R=cR*1.5,TI=TI,CT=cCT)\ - # >np.abs(distFlowCoord[1,cWT,:])).nonzero()} #Radial coordinates in cWT for wake affected WT's + distFlowCoord,_,_ = WF.turbineDistance(WD[cWT]) x = distFlowCoord[0, cWT, ID_wake[cWT]] - r_Ri = np.abs(distFlowCoord[1,cWT, ID_wake[cWT]]) - th_Ri = np.pi*(np.sign(distFlowCoord[1, cWT, ID_wake[cWT]]) + 1.0) # <- what is this? [0|2pi] - - # Get all the wake radius at the position of the -in wake- downstream turbines - RW = get_Rw(x=x, R=cR, TI=TI, CT=cCT, pars=pars) - - # Meshgrids (Tensorial) extension of points of evaluation - # to perform Gaussian quadrature - r_Ri_m, rk_m = np.meshgrid(r_Ri, rk) - th_Ri_m, tj_m = np.meshgrid(th_Ri, tj) - x_m, wj_m = np.meshgrid(x, wj) - RW_m, wk_m = np.meshgrid(RW, wk) - - # downstream Radius - downR = np.array([WF.WT[j].R for j in ID_wake[cWT]]) - downR_m, dummyvar = np.meshgrid(downR, np.zeros((NG**2))) - cH = WF.WT[cWT].H - downH = np.array([WF.WT[j].H for j in ID_wake[cWT]]) - cH - downH_m, dummyvar = np.meshgrid(downH, np.zeros((NG**2))) + y = distFlowCoord[1, cWT, ID_wake[cWT]] + z = zg[cWT, ID_wake[cWT]] - # Radial points of evaluation <- probably need to add the turbine height difference here? - r_eval = np.sqrt(r_Ri_m**2.0 + - (downR_m * (rk_m + 1.) / 2.0)**2. + - r_Ri_m * downR_m * (rk_m + 1.) * np.cos(th_Ri_m - np.pi*(tj_m + 1.))) - - # Eval wake velocity deficit - DU_m = get_dU(x=x_m, r=r_eval, Rw=RW_m, - U=cU, R=downR_m, TI=TI, CT=cCT, pars=pars) - - localDU = np.sum((1./4.)*wj_m*wk_m*DU_m*(rk_m+1.0),axis=0) + # Get all the rotor average wake deficits at the position of the -in wake- + # downstream turbines + localDU = cU*get_dUeq(x,y,z,allR[ID_wake[cWT]],cR,cCT,TI[cWT],pars) # Wake superposition - if sup == 'lin': - U_WT[ID_wake[cWT]] = U_WT[ID_wake[cWT]] + localDU - U_WT[U_WT<0.]=0. - elif sup == 'quad': - DU_sq[ID_wake[cWT]] = DU_sq[ID_wake[cWT]] + localDU**2. - U_WT = U_WT0 - np.sqrt(DU_sq) - U_WT[U_WT<0.]=0. - - return (P_WT,U_WT,Ct) - -def GCL_P_GaussQ_Norm_U_WD(WF, WS, meanWD, stdWD, NG_P, TI, - z0=0.0001, alpha=0.101, inflow='log', NG=4, sup='lin', - pars=[0.435449861, 0.797853685, -0.124807893, 0.136821858, 15.6298, 1.0]): - """Computes the Gaussian quadrature average of GCLarsen - power/WS prediction under normally distributed wind direction - uncertainty inside the Reynolds averaging time + U_WT[ID_wake[cWT]] = U_WT[ID_wake[cWT]] + localDU - Parameters - ---------- - WF: WindFarm - Windfarm instance - WS: float - Undisturbed wind speed at hub height [m/s] - meanWD: float - Mean wind direction [deg] - stdWD: float - Std wind direction [deg] - NG_P: int - Number of Gaussian quadrature points for power avg. - WS: float - Undisturbed wind speed at hub height [m/s] - z0: float - Roughness height [m] - TI: float - Ambient turbulence intensity - z0: float, optional - Roughness height [m] - alpha: float, optional - Shear coefficient [-] - Only used for power-law undisturbed inflow. - inflow: Str, optional - Undisturbed inflow vertical profile: - 'log': Logarithmic law (neutral case); uses z0 - 'pow': Power law profile; uses alpha - NG: int, optional - Number of points in Gaussian Quadrature for equivalent wind - speed integration over rotor distFlowCoord - sup: str, optional - Wake velocity deficit superposition method: - 'lin': Linear superposition - 'quad' Quadratic superposition - pars: list, optional - GCL Model parameters - - Returns - ------- - P_WT: ndarray - Mean Power production of the wind turbines (nWT,1) [W] - U_WT: ndarray - Mean Wind speed at hub height (nWT,1) [m/s] - CT_WT: ndarray - Mean thrust coefficient [-] - """ - - xi, wi = np.polynomial.hermite.hermgauss(NG_P) - - meanP_WT = np.zeros([WF.nWT]) - meanU_WT = np.zeros([WF.nWT]) - meanCT_WT = np.zeros([WF.nWT]) - for i in range(NG_P): - P_WT,U_WT,CT_WT = GCLarsen( - WF=WF, - WS=WS, - WD=meanWD+np.sqrt(2.)*stdWD*xi[i], - TI=TI, - z0=z0, - alpha=alpha, - inflow=inflow, - NG=NG, - sup=sup, - pars=pars) - meanP_WT += wi[i]*P_WT*(1./np.sqrt(np.pi)) - meanU_WT += wi[i]*U_WT*(1./np.sqrt(np.pi)) - meanCT_WT += wi[i]*CT_WT*(1./np.sqrt(np.pi)) - - return meanP_WT, meanU_WT, meanCT_WT - -def GCL_P_GaussQ_Uni_U_WD(WF,WS,meanWD,U_WD,NG_P,TI, - z0=0.0001,alpha=0.101,inflow='log',NG=4,sup='lin', - pars=[0.435449861,0.797853685,-0.124807893,0.136821858,15.6298,1.0]): - """Computes the Gaussian quadrature average of GCLarsen - power/WS prediction under normally distributed wind direction - uncertainty - - Parameters - ---------- - WF: WindFarm - Windfarm instance - WS: float - Undisturbed wind speed at hub height [m/s] - meanWD: float - Mean wind direction [deg] - stdWD: float - Std wind direction [deg] - NG_P: int - Number of Gaussian quadrature points for power avg. - WS: float - Undisturbed wind speed at hub height [m/s] - z0: float - Roughness height [m] - TI: float - Ambient turbulence intensity - z0: float, optional - Roughness height [m] - alpha: float, optional - Shear coefficient [-] - Only used for power-law undisturbed inflow. - inflow: Str, optional - Undisturbed inflow vertical profile: - 'log': Logarithmic law (neutral case); uses z0 - 'pow': Power law profile; uses alpha - NG: int, optional - Number of points in Gaussian Quadrature for equivalent wind - speed integration over rotor distFlowCoord - sup: str, optional - Wake velocity deficit superposition method: - 'lin': Linear superposition - 'quad' Quadratic superposition + # Update Power and CT + cU = U_WT[cWT] + if cU>WF.WT[cWT].u_cutin: + Ct[cWT] = WF.WT[cWT].get_CT(U_WT[cWT]) + P_WT[cWT] = WF.WT[cWT].get_P(U_WT[cWT]) + else: + Ct[cWT] = WF.WT[cWT].CT_idle # Drag coefficient of the idled turbine + P_WT[cWT] = 0.0 - Returns - ------- - P_WT: ndarray - Mean Power production of the wind turbines (nWT,1) [W] - U_WT: ndarray - Mean Wind speed at hub height (nWT,1) [m/s] - CT_WT: ndarray - Mean thrust coefficient [-] - """ + return (P_WT,U_WT,Ct) - xi, wi = np.polynomial.legendre.leggauss(NG_P) - - meanP_WT = np.zeros([WF.nWT]) - meanU_WT = np.zeros([WF.nWT]) - meanCT_WT = np.zeros([WF.nWT]) - for i in range(NG_P): - P_WT,U_WT,CT_WT = GCLarsen( - WF=WF, - WS=WS, - WD=meanWD+U_WD*xi[i], - TI=TI, - z0=z0, - alpha=alpha, - inflow=inflow, - NG=NG, - sup=sup, - pars=pars) - meanP_WT += wi[i]*P_WT*1./2. - meanU_WT += wi[i]*U_WT*1./2. - meanCT_WT += wi[i]*CT_WT*1./2. - - return meanP_WT,meanU_WT,meanCT_WT ''' print get_r96(D=80.0,CT=0.5,TI=0.05) print diff --git a/fusedwake/gcl/test/test_WF_4Turbines.yml b/fusedwake/gcl/test/test_WF_4Turbines.yml new file mode 100644 index 0000000..2414e4d --- /dev/null +++ b/fusedwake/gcl/test/test_WF_4Turbines.yml @@ -0,0 +1,223 @@ +layout: + - name: WT01 + row: 1 + position: [0, 0] + turbine_type: V80 + - name: WT02 + row: 2 + position: [560, 0] + turbine_type: B76 + - name: WT03 + row: 1 + position: [200, 200] + turbine_type: V80 + - name: WT04 + row: 2 + position: [200, -200] + turbine_type: B76 + +plant_data: + utm: + code: 32 + letter: U + name: Test WF + owner: DTU + +turbine_types: + # Sources: + # [1] https://windbench.net/system/files/hornsrev_v80_0.pdf + # [2] http://www.thewindpower.net/turbine_en_30_vestas_2000.php + # [3] http://en.wind-turbine-models.com/turbines/668-vestas-v-80-offshore + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: V80 + hub_height: 90.0 # [1] + rotor_diameter: 80.0 # [1] + rated_power: 2000.0 # [1] + cut_in_wind_speed: 4.0 # [1] + cut_out_wind_speed: 25.0 # [1] + rated_wind_speed: 16.0 # [1] + wind_class: IEC Ia (DIBt III) # [2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:100,5 # [2] + type: spur/planetary # [3] + nacelle: # [2] + weight: 68000.0 # kg [2], 69000.0 kg according to [3] + rotor: # [2, 3] + weight: 37000.0 # kg [2] + tip_speed: 80.0 # m/s [3] + min_speed: 9 # rd/min [2] + max_speed: 19 # rd/min [2] + manufacturer: Vestas + hub: + weight: 18000 # kg [3] + tower: # [2] + weight: 198000.0 #kg [2], max 148000.0 kg according to [3] + material: steel + manufacturer: Welcon + control: # [1] + type: Active Pitch, Variable Speed + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1909 #rounds/minute + output_voltage: 690 #V + grid_frequency: 50/60 # Hz + power_curve: # [1] + - [3.0, 0.0] + - [4.0, 66.6] + - [5.0, 154.0] + - [6.0, 282.0] + - [7.0, 460.0] + - [8.0, 696.0] + - [9.0, 996.0] + - [10.0, 1341.0] + - [11.0, 1661.0] + - [12.0, 1866.0] + - [13.0, 1958.0] + - [14.0, 1988.0] + - [15.0, 1997.0] + - [16.0, 1999.0] + - [17.0, 2000.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: + - [3.0, 0.00] + - [4.0, 0.818] + - [5.0, 0.806] + - [6.0, 0.804] + - [7.0, 0.805] + - [8.0, 0.806] + - [9.0, 0.807] + - [10.0, 0.793] + - [11.0, 0.739] + - [12.0, 0.709] + - [13.0, 0.409] + - [14.0, 0.314] + - [15.0, 0.249] + - [16.0, 0.202] + - [17.0, 0.167] + - [18.0, 0.140] + - [19.0, 0.119] + - [20.0, 0.102] + - [21.0, 0.088] + - [22.0, 0.077] + - [23.0, 0.067] + - [24.0, 0.060] + - [25.0, 0.053] + c_t_idle: 0.053 # [4] + blade: + geometry: # [1] + # [radius [m], c [m], twist [deg], airfoil ] + - [2.563, 2.004, 9.50, 'Cylinder 1'] + - [4.389, 2.523, 9.50, 'Cylinder 1'] + - [6.216, 3.015, 9.50, 'FFA W3-301'] + - [8.042, 3.278, 9.50, 'FFA W3-301'] + - [9.868, 3.309, 9.50, 'FFA W3-301'] + - [11.694, 3.195, 9.50, 'FFA W3-301'] + - [13.520, 3.039, 9.22, 'FFA W3-241'] + - [15.346, 2.863, 7.81, 'FFA W3-211'] + - [17.173, 2.687, 6.40, 'FFA W3-211'] + - [18.999, 2.511, 5.11, 'FFA W3-211'] + - [20.825, 2.334, 3.83, 'FFA W3-211'] + - [22.651, 2.158, 2.61, 'NACA 63-221'] + - [24.477, 1.982, 1.48, 'NACA 63-221'] + - [26.304, 1.806, 0.42, 'NACA 63-221'] + - [28.130, 1.630, 0.49, 'NACA 63-221'] + - [29.956, 1.454, 1.23, 'NACA 63-218'] + - [31.782, 1.278, 1.79, 'NACA 63-218'] + - [33.608, 1.102, 2.24, 'NACA 63-218'] + - [35.435, 0.926, 2.61, 'NACA 63-218'] + - [37.261, 0.749, 2.84, 'NACA 63-218'] + - [39.087, 0.573, 2.97, 'NACA 63-218'] + + # Sources: + # [1] http://www.middelgrunden.dk/middelgrunden/sites/default/files/public/file/Location.pdf + # [2] http://www.thewindpower.net/turbine_en_229_bonus_2000.php + # [3] http://en.wind-turbine-models.com/turbines/121-bonus-b76-2000 + # [4] WAsP wind turbine library (distributed as part of the WAsP software) + - name: B76 + hub_height: 64.0 #[1] + rotor_diameter: 76.0 #[1] + rated_power: 2000.0 #[1] + cut_in_wind_speed: 3.0 #[2] + cut_out_wind_speed: 25.0 #[2] + rated_wind_speed: 15.0 #[2] + air_density: 1.225 # guess + gear_box: + speed_number: 3 + ratio: 1:89 # [2], or [3]: 1:93 + manufacturer: Flender + nacelle: # [2] + weight: 65000.0 #kg [2], or [3]: 82500 kg + rotor: # [2, 3] + weight: 38000.0 #kg [2], or [3]: 52000.0 kg + max_speed: 17 #rd/min [2], or [3]: 16 + tip_speed: 63.7 #m/s [3] + manufacturer: LM Glasfiber, Bonus + tower: # [2] + weight: 162000.0 #kg [2] + control: # [2] + type: Stall + generator: # [2] + type: ASYNC + number: 1 + max_output_speed: 1500 #rounds/minute + output_voltage: 690 #V + manufacturer: ABB + power_curve: # [4] + - [3.0, 0.0] + - [4.0, 43.0] + - [5.0, 133.0] + - [6.0, 237.0] + - [7.0, 401.0] + - [8.0, 623.0] + - [9.0, 886.0] + - [10.0, 1190.0] + - [11.0, 1502.0] + - [12.0, 1740.0] + - [13.0, 1891.0] + - [14.0, 1962.0] + - [15.0, 1988.0] + - [16.0, 1996.0] + - [17.0, 1999.0] + - [18.0, 2000.0] + - [19.0, 2000.0] + - [20.0, 2000.0] + - [21.0, 2000.0] + - [22.0, 2000.0] + - [23.0, 2000.0] + - [24.0, 2000.0] + - [25.0, 2000.0] + c_t_curve: # [4] + - [3.0, 0.00] + - [4.0, 0.857] + - [5.0, 0.858] + - [6.0, 0.810] + - [7.0, 0.853] + - [8.0, 0.870] + - [9.0, 0.811] + - [10.0, 0.756] + - [11.0, 0.679] + - [12.0, 0.584] + - [13.0, 0.511] + - [14.0, 0.439] + - [15.0, 0.383] + - [16.0, 0.338] + - [17.0, 0.301] + - [18.0, 0.271] + - [19.0, 0.246] + - [20.0, 0.225] + - [21.0, 0.207] + - [22.0, 0.192] + - [23.0, 0.179] + - [24.0, 0.168] + - [25.0, 0.158] + c_t_idle: 0.158 # [4] diff --git a/fusedwake/gcl/test/test_gcls.py b/fusedwake/gcl/test/test_gcls.py index 42d99e0..3bf6b27 100644 --- a/fusedwake/gcl/test/test_gcls.py +++ b/fusedwake/gcl/test/test_gcls.py @@ -1,10 +1,13 @@ import unittest import fusedwake.gcl.fortran as fgcl -import fusedwake.gcl.python as gcl +import fusedwake.gcl.python as pygcl import numpy as np import os +from fusedwake.WindFarm import WindFarm +from fusedwake.gcl import GCL + current_dir = os.path.dirname(os.path.realpath(__file__)) @@ -30,7 +33,135 @@ def test_r96(self): self.assertAlmostEqual(fgcl.get_r96(D, CT, TI, a1, a2, a3, a4, b1, b2), - gcl.get_r96(D, CT, TI, pars=[a1, a2, a3, a4, b1, b2])) + pygcl.get_r96(D, CT, TI, pars=[a1, a2, a3, a4, b1, b2])) + + def test_Rw(self): + """Compare the two implementations of get_Rw + """ + # Fixed parameters + a1 = 0.435449861 + a2 = 0.797853685 + a3 = -0.124807893 + a4 = 0.136821858 + b1 = 15.6298 + b2 = 1.0 + + # Variables + D = 80.0 + CT = 0.98 + TI = 0.10 + R = D/2. + x=D*np.linspace(0.,10.,100) + + self.assertTrue(np.array([np.allclose(fgcl.get_rw(x, D, CT, TI, a1, a2, a3, a4, b1, b2)[i], + pygcl.get_Rw(x, R, TI, CT, pars=[a1, a2, a3, a4, b1, b2])[i]) for i in range(3)]).all()) + + def test_dU(self): + """Compare the two implementations of get_dU + """ + # Fixed parameters + a1 = 0.435449861 + a2 = 0.797853685 + a3 = -0.124807893 + a4 = 0.136821858 + b1 = 15.6298 + b2 = 1.0 + + # Variables + D = 80.0 + CT = 0.98 + TI = 0.10 + R = D/2. + x=D*np.linspace(0.,10.,100) + r=D*np.linspace(0.,2.,100) + + self.assertTrue(np.allclose(fgcl.get_du(x,r,D,CT, TI, a1, a2, a3, a4, b1, b2), + pygcl.get_dU(x,r,R, CT, TI, pars=[a1, a2, a3, a4, b1, b2]))) + + def test_dUeq(self): + """Compare the two implementations of get_dUeq + """ + # Fixed parameters + a1 = 0.435449861 + a2 = 0.797853685 + a3 = -0.124807893 + a4 = 0.136821858 + b1 = 15.6298 + b2 = 1.0 + + # Variables + D = 80.0 + R = D/2. + CT = 0.98 + TI = 0.10 + + dx = np.array([6.,10.,15.])*D + dy = np.array([1.,-5.,0.])*D + dz = np.array([-2,2.,1.])*D + + # Wake operating turbines + Rop = np.array([1.,2.,.5])*D + Dop = 2.*Rop + + self.assertTrue(np.allclose(fgcl.get_dueq(dx,dy,dz,Dop,D,CT,TI,a1,a2,a3,a4,b1,b2), + pygcl.get_dUeq(dx,dy,dz,Rop,R,CT,TI,pars=[a1, a2, a3, a4, b1, b2]))) + + def test_gcl(self): + """Compare the two implementations of gcl + """ + # Fixed parameters + a1 = 0.435449861 + a2 = 0.797853685 + a3 = -0.124807893 + a4 = 0.136821858 + b1 = 15.6298 + b2 = 1.0 + + filename = 'test_WF_4Turbines.yml' + wf = WindFarm(yml=filename) + gcl = GCL(WF=wf) + + # Inputs + WD = np.arange(-50,50)+270. + WS = 10. + TI=0.1 + + P_rat_py_v0 = [] + P_rat_py_v1 = [] + P_rat_fgcl = [] + P_rat_fgclm_s = [] + for wd in WD: + out = gcl(WF=wf, WS=WS, WD=wd, TI=TI, version='fort_gcl') + P_rat_fgcl = np.append(P_rat_fgcl,out.p_wt[1]/out.p_wt[0]) + + out = gcl(WF=wf, WS=WS*np.ones([wf.nWT]), + WD=wd*np.ones([wf.nWT]), + TI=TI*np.ones([wf.nWT]), version='fort_gclm_s') + P_rat_fgclm_s = np.append(P_rat_fgclm_s,out.p_wt[1]/out.p_wt[0]) + + out = gcl(WF=wf, WS=WS*np.ones([wf.nWT]), + WD=wd*np.ones([wf.nWT]), + TI=TI*np.ones([wf.nWT]),version='py_gcl_v1') + P_rat_py_v1 = np.append(P_rat_py_v1,out.p_wt[1]/out.p_wt[0]) + + out = gcl(WF=wf, WS=WS*np.ones([wf.nWT]), + WD=wd*np.ones([wf.nWT]), + TI=TI*np.ones([wf.nWT]), version='py_gcl_v0') + P_rat_py_v0 = np.append(P_rat_py_v0,out.p_wt[1]/out.p_wt[0]) + + WDm = WD.reshape([-1,1])*np.ones([1,wf.nWT]) + out = gcl(WF=wf, WS=WS*np.ones_like(WDm), WD=WDm, + TI=0.1*np.ones_like(WDm), version='fort_gclm') + P_rat_fgclm = out.p_wt[:,1]/out.p_wt[:,0] + + out = gcl(WF=wf, WS=WS*np.ones_like(WDm), WD=WDm, + TI=0.1*np.ones_like(WDm), version='fort_gclm_av') + P_rat_fgclm_av = out.p_wt[:,1]/out.p_wt[:,0] + + self.assertTrue(np.allclose(P_rat_fgclm_s, P_rat_py_v0)&\ + np.allclose(P_rat_fgclm_s, P_rat_py_v1)&\ + np.allclose(P_rat_fgclm_s, P_rat_fgclm)&\ + np.allclose(P_rat_fgclm_s, P_rat_fgclm_av)) if __name__ == "__main__": unittest.main() diff --git a/fusedwake/test/NewQuadratureRule/2D-Gauss-Quadrature-over-a-circle-OLD-no_chaospy.ipynb b/fusedwake/test/NewQuadratureRule/2D-Gauss-Quadrature-over-a-circle-OLD-no_chaospy.ipynb new file mode 100644 index 0000000..98d5c72 --- /dev/null +++ b/fusedwake/test/NewQuadratureRule/2D-Gauss-Quadrature-over-a-circle-OLD-no_chaospy.ipynb @@ -0,0 +1,1840 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import scipy as sp\n", + "import pandas as pd\n", + "from scipy import interpolate\n", + "from scipy import stats\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "```python\n", + "R = 40.\n", + "H = 60\n", + "x_w = 0.\n", + "y_w = 60.\n", + "\n", + "f = lambda x,y: - 4.*np.exp( -((x-x_w)**2. + (y-y_w)**2.)/(30.**2.) ) + \\\n", + " - 4.*np.exp( -((x+70.)**2. + (y-60.)**2.)/(60.**2.) ) #+ 15.*(y/H)**0.05 \n", + "#```" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "R = 40.\n", + "H = 60\n", + "x_w = 30.\n", + "y_w = 90.\n", + "Rw = 20\n", + "seed = 1\n", + "\n", + "def f(x,y):\n", + " np.random.seed(seed)\n", + " return - 3.*np.exp( -((x-x_w)**2. + (y-y_w)**2.)/(Rw**2.) ) + \\\n", + " - 3.*np.exp( -((x-30)**2. + (y-40)**2.)/(20**2.) ) + \\\n", + " - 1.5*np.exp( -((x-np.random.uniform(-60,60))**2. + (y-np.random.uniform(40,70))**2.)/(60.**2.) ) #+ 4.*(y/H)**0.0 \n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Monte-Carlo integration" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-1.8588968000880735" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_MC = np.random.uniform(-R,R,9e6)\n", + "y_MC = np.random.uniform(-R,R,9e6) + H\n", + "\n", + "r = np.sqrt(x_MC**2. + (y_MC-H)**2.)\n", + "ind_in = np.where(r <= R)\n", + "\n", + "u_eq_MC = np.mean(f(x_MC[ind_in],y_MC[ind_in]))\n", + "u_eq_MC" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x_mesh,y_mesh = np.meshgrid(np.arange(-50.,100.,0.1),np.arange(0.,120.,0.1))\n", + "\n", + "F = f(x_mesh,y_mesh)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "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\n", + "AABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "plt.plot(x_MC[ind_in],y_MC[ind_in],'.k',alpha=0.005)\n", + "x_plot = np.arange(-50.,50.1,0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Cartessian Gausss-Legendre quadrature" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "N_x = 5\n", + "N_y = 5\n", + "root_x_1D, weight_x = np.polynomial.legendre.leggauss(N_x)\n", + "root_y_1D, weight_y = np.polynomial.legendre.leggauss(N_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "root_x,root_y = np.meshgrid(root_x_1D,root_y_1D)\n", + "root_x,root_y = root_x.flatten(), root_y.flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[-0.90617985 -0.53846931 0. 0.53846931 0.90617985 -0.90617985\n", + " -0.53846931 0. 0.53846931 0.90617985 -0.90617985 -0.53846931\n", + " 0. 0.53846931 0.90617985 -0.90617985 -0.53846931 0.\n", + " 0.53846931 0.90617985 -0.90617985 -0.53846931 0. 0.53846931\n", + " 0.90617985]\n", + "[-0.90617985 -0.90617985 -0.90617985 -0.90617985 -0.90617985 -0.53846931\n", + " -0.53846931 -0.53846931 -0.53846931 -0.53846931 0. 0. 0.\n", + " 0. 0. 0.53846931 0.53846931 0.53846931 0.53846931\n", + " 0.53846931 0.90617985 0.90617985 0.90617985 0.90617985 0.90617985]\n", + "\n", + "[-0.90617985 -0.53846931 0. 0.53846931 0.90617985]\n", + "[-0.90617985 -0.53846931 0. 0.53846931 0.90617985]\n", + "[ 0.23692689 0.47862867 0.56888889 0.47862867 0.23692689]\n", + "[ 0.23692689 0.47862867 0.56888889 0.47862867 0.23692689]\n" + ] + } + ], + "source": [ + "print root_x\n", + "print root_y\n", + "print\n", + "print root_x_1D\n", + "print root_y_1D\n", + "print weight_x\n", + "print weight_y" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "y1 = lambda x: np.sqrt(R**2. - x**2.) + H\n", + "y2 = lambda x: -np.sqrt(R**2. - x**2.) + H" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "xi_1D = R*root_x_1D\n", + "xi = R*root_x\n", + "yij = 0.5*(y1(xi) - y2(xi))*root_y + 0.5*(y1(xi) + y2(xi))\n", + "fij = f(xi,yij)" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.1431909 , -1.08737332, -1.14347377, -2.75447754, -3.35812501],\n", + " [-1.19913278, -1.30050894, -1.57218152, -3.51629652, -2.88520465],\n", + " [-1.23710927, -1.44595598, -1.60785126, -2.32505993, -2.11623796],\n", + " [-1.21881195, -1.3422547 , -1.57543575, -2.88705016, -2.05717667],\n", + " [-1.174949 , -1.14921649, -1.33259117, -3.41319145, -2.4955946 ]])" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fij.reshape(N_x,N_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-3.55581225, -4.16754714, -3.51410316, -3.69668423, -3.81144602])" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.dot(fij.reshape(N_x,N_y),weight_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "G_xi = 0.5*(y1(xi_1D) - y2(xi_1D)) * np.dot(fij.reshape(N_x,N_y),weight_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.88090881352\n", + "1.18414391972 %\n" + ] + } + ], + "source": [ + "I = np.dot(R*G_xi,weight_x)/(np.pi*R**2.)\n", + "print I\n", + "print 100*(I-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "plt.colorbar()\n", + "\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "\n", + "x_plot = np.arange(-50.,50.2,0.1)\n", + "plt.plot(x_plot,y1(x_plot))\n", + "plt.plot(x_plot,y2(x_plot))\n", + "plt.plot(xi,yij,'ok')\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## integrating before in y " + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "N_x = 5\n", + "N_y = 5\n", + "root_x_1D, weight_x = np.polynomial.legendre.leggauss(N_x)\n", + "root_y_1D, weight_y = np.polynomial.legendre.leggauss(N_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "root_x,root_y = np.meshgrid(root_x_1D,root_y_1D)\n", + "root_x,root_y = root_x.flatten(), root_y.flatten()" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x1 = lambda y: np.sqrt(R**2. - (y-H)**2.)\n", + "x2 = lambda y: -np.sqrt(R**2. - (y-H)**2.)" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "yi_1D = R*root_y_1D+H\n", + "yi = R*root_y+H\n", + "xij = 0.5*(x1(yi) - x2(yi))*root_x + 0.5*(x1(yi) + x2(yi))\n", + "fij = f(xij,yi)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-1.00846822, -1.04107245, -1.14347377, -1.43142994, -1.74884227],\n", + " [-1.14931915, -1.27775483, -1.57218152, -3.13994237, -3.80353492],\n", + " [-1.23710927, -1.44595598, -1.60785126, -2.32505993, -2.11623796],\n", + " [-1.19440144, -1.32625261, -1.57543575, -2.87260182, -3.39835154],\n", + " [-1.08228911, -1.13412714, -1.33259117, -1.88585944, -2.48931432]])" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fij.reshape(N_x,N_y)" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "G_yi = 0.5*(x1(yi_1D) - x2(yi_1D)) * np.dot(weight_x,fij.reshape(N_x,N_y))" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-1.77097460707\n", + "-4.72980495819 %\n" + ] + } + ], + "source": [ + "I = np.dot(R*G_yi,weight_y)/(np.pi*R**2.)\n", + "print I\n", + "print 100*(I-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "plt.colorbar()\n", + "\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "\n", + "y_plot = np.arange(-50.,50.2,0.1)+H\n", + "plt.plot(x1(y_plot),y_plot)\n", + "plt.plot(x2(y_plot),y_plot)\n", + "plt.plot(xij,yi,'ok')\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Radial Gauss-Leg" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "f_r = lambda r,th: f(-r*np.sin(th),r*np.cos(th)+H)" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def gaussN(R, func, varargin, NGr=4, NGth=4):\n", + " \"\"\"Calculate numerically the gauss integration.\n", + " [1] eq. 38\n", + "\n", + " Inputs\n", + " ----------\n", + " R (float): Wind turbine radius [m]\n", + " func (function): Wind speed function\n", + " varargin: Other arguments for the function besides [r,te]\n", + " NG (int): Number of Ga\n", + "\n", + " Outputs\n", + " ----------\n", + " Ua (float):\n", + " \"\"\"\n", + " A = np.pi*R**2\n", + " #coefficients\n", + " if (NGr==4)&(NGth==4): #for speed give the full values\n", + " rt = np.array([[ -0.339981043584856, -0.861136311594053,\n", + " 0.339981043584856, 0.861136311594053]])\n", + " te = rt.T\n", + " w = np.array([[0.652145154862546, 0.347854845137454,\n", + " 0.652145154862546, 0.347854845137454]])\n", + " wt=w\n", + " else:\n", + " rt,w = np.polynomial.legendre.leggauss(NGr)\n", + " rt = np.array([rt])\n", + " #te = rt.T\n", + " w = np.array([w])\n", + " te,wt = np.polynomial.legendre.leggauss(NGr)\n", + " te = np.array([te]).T\n", + " wt = np.array([wt])\n", + " \n", + " return np.sum((np.pi/4.0)*(R**2./A)*w*wt.T*func(R*(rt+1.0)/2.0,\n", + " np.pi*(te+1.0),*varargin)*(rt+1.0))" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.10872137547\n", + "13.4393999373 %\n" + ] + } + ], + "source": [ + "N_r = 4\n", + "N_th = 4\n", + "I = gaussN(R,f_r,[],N_r,N_th)\n", + "print I\n", + "print 100*(I-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "plt.colorbar()\n", + "\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "\n", + "\n", + "rt,w = np.polynomial.legendre.leggauss(N_r)\n", + "rt = np.array([rt])\n", + "te,wt = np.polynomial.legendre.leggauss(N_th)\n", + "te = np.array([te])\n", + "re = R*(rt+1.0)/2.0\n", + "te = np.pi*(te.T+1.0)\n", + "plt.plot(-re*np.sin(te),re*np.cos(te)+H,'ok')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/fusedwake/test/NewQuadratureRule/2D-Gauss-Quadrature-over-a-circle.ipynb b/fusedwake/test/NewQuadratureRule/2D-Gauss-Quadrature-over-a-circle.ipynb new file mode 100644 index 0000000..4e7c8ea --- /dev/null +++ b/fusedwake/test/NewQuadratureRule/2D-Gauss-Quadrature-over-a-circle.ipynb @@ -0,0 +1,3434 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import scipy as sp\n", + "import pandas as pd\n", + "from scipy import interpolate\n", + "from scipy import stats\n", + "import chaospy as cp\n", + "\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "R = 40.\n", + "H = 60\n", + "x_w = -40#30.\n", + "y_w = 60#90.\n", + "Rw = 40#20\n", + "seed = 3\n", + "\n", + "def f(x,y,seed):\n", + " np.random.seed(seed)\n", + " return - 3.*np.exp( -((x-x_w)**2. + (y-y_w)**2.)/(Rw**2.) ) + \\\n", + " - 3.*np.exp( -((x-30)**2. + (y-40)**2.)/(20**2.) ) + \\\n", + " - 1.5*np.exp( -((x-np.random.uniform(-60,60))**2. + (y-np.random.uniform(40,70))**2.)/(60.**2.) ) #+ 4.*(y/H)**0.0 \n", + " \n", + "def f1(x,y):\n", + " return - 3.*np.exp( -((x-x_w)**2. + (y-y_w)**2.)/(Rw**2.) )\n", + "\n", + "def f3(x,y):\n", + " return - 3.*np.exp( -((x-30)**2. + (y-40)**2.)/(20**2.) )\n", + " \n", + "def f2(x,y,seed):\n", + " np.random.seed(seed)\n", + " return - 1.5*np.exp( -((x-np.random.uniform(-60,60))**2. + (y-np.random.uniform(40,70))**2.)/(60.**2.) ) #+ 4.*(y/H)**0.0 " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "x_mesh,y_mesh = np.meshgrid(np.arange(-50.,100.,0.1),np.arange(0.,120.,0.1))\n", + "\n", + "F = f(x_mesh,y_mesh,seed)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "QmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "print" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Monte-Carlo integration" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "def MC_int(f,seed):\n", + " x_MC = np.random.uniform(-R,R,9e6)\n", + " y_MC = np.random.uniform(-R,R,9e6) + H\n", + "\n", + " r = np.sqrt(x_MC**2. + (y_MC-H)**2.)\n", + " ind_in = np.where(r <= R)\n", + "\n", + " u_eq_MC = np.mean(f(x_MC[ind_in],y_MC[ind_in],seed))\n", + " return u_eq_MC, x_MC[ind_in], y_MC[ind_in]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "u_eq_MC, x_MC, y_MC = MC_int(f,seed)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7067113\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "CbS0fyxizyEAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "plt.plot(x_MC,y_MC,'.k',alpha=0.05)\n", + "x_plot = np.arange(-50.,50.1,0.1)\n", + "print len(x_MC)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quasi Monte-Carlo integration Antithetic: Minimum variance in the estimator" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def QMC_int(f,seed):\n", + " dist_y = cp.Uniform(-R,R)\n", + " dist_x = cp.Uniform(-(R**2.-dist_y**2.)**0.5,(R**2.-dist_y**2.)**0.5)#cp.Uniform(-R,R)#\n", + " dist = cp.J(dist_y,dist_x)\n", + "\n", + " sample = dist.sample(size=40,rule='M',antithetic=[1])\n", + " y_MC = sample[0,:]+H\n", + " x_MC = sample[1,:]\n", + "\n", + " r = np.sqrt(x_MC**2. + (y_MC-H)**2.)\n", + " ind_in = np.where(r <= R)\n", + " \n", + " u_eq_QMC = np.mean(f(x_MC[ind_in],y_MC[ind_in],seed))\n", + " \n", + " return u_eq_QMC, x_MC[ind_in], y_MC[ind_in]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.60015706384\n", + "-1.49032189306 %\n" + ] + } + ], + "source": [ + "u_eq_QMC, x_MC, y_MC = QMC_int(f,seed)\n", + "\n", + "print u_eq_QMC\n", + "print 100*(u_eq_QMC-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "40\n" + ] + }, + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAWUAAAEACAYAAABrvGdSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJztnXmYFNW5uN9vemaYQVBAWURQJC6IIEHWoIbRqCHimmiM\n", + "Xvyp0RhvxOi9xut+NdEsajQxwQSjxpgQXK8aETdcxmgmIAoiooiKKLKDsqgzzHTP9/ujupmenqru\n", + "qurqruqe8z5PPzNdXXXOme7pt7/+ziaqisFgMBiiQUXYDTAYDAZDG0bKBoPBECGMlA0GgyFCGCkb\n", + "DAZDhDBSNhgMhghhpGwwGAwRIquUReTPIrJORBanHbtZRN4RkUUi8oiI7JL22BUi8p6ILBWRowvZ\n", + "cIPBYCgGIjIp6bT3ROQyh3N+l3x8kYiMzKe+XJHyPcCkjGPPAgeq6ghgGXBFslFDgVOBoclr/iAi\n", + "JhI3GAwli4jEgGlYThsKnCYiB2Sccwywj6ruC5wH/DGfOrNKU1VfBj7LODZHVVuTd+cBA5K/nwDc\n", + "p6otqroCeB8Ym0/jDAaDIWTGAu+r6gpVbQHux3JdOscD9wKo6jygh4j09VthvpHs94Enk7/3Bz5J\n", + "e+wTYI88yzcYDIYw2QNYmXbfzmt25wzAJ76lLCJXAc2qOjPLaWYOt8FgKGXcOkx8XteBSj8XichZ\n", + "wDHAN9IOrwIGpt0fkDyWea0RtcFgcI2qZgrPE16dk1FfptcG0j4jYHeOrfvc4lnKIjIJuBSYqKpN\n", + "aQ89DswUkVuxwvl9gVftytDhPlqawXXr4DrfWZuAGNX263UL4bpcfa6vF7Q17YjE85NGIdqzYnHu\n", + "c+z4LXBxoC3Jj/T21IfYjhSPASeG3YgkZwdUzj3+63sN2FdEBgGrsQYznJZxzuPAVOB+ERkPbFbV\n", + "dT6bml3KInIfMBHYTURWAtdijbaoBuaICMC/VfVHqvq2iDwIvA3EgR9pqSxBNyr3KaHWU0SZlxKD\n", + "kh/ufuUcReqIhpgNFqoaF5GpwDNADLhbVd8RkR8mH79DVZ8UkWNE5H3gC/L8LMkqZVXN/EQA+HOW\n", + "838B/CKfBhWMYom3EORqeyeXdrnJuQ4j5iihqk8BT2UcuyPj/tSg6vOVU44CdTs5PBCSfOv6hVMv\n", + "YPs3163B+rIVERxfrwBxK+fxhW+KJ+zaU0d4Yh4SUr0GCyl2hkFENIic8g5KOQIOg04UVZdD5Fwf\n", + "dgNC5myC6ejzklPOt758Kb1I2Ug4P+yevzIV9aDhpS/mOoyYOxvRl7KRcOHJfI7LSNLllm82lD/R\n", + "lLIRcbikP/9lIuhSjprrMNFyZyI6UjYijiZlFEWXctRchxFzZyFcKRsRlx5lEEWXatRchxFzZyAc\n", + "KRsZlwclLOhSjZrrMGIud6KTvjCUNilBl6CcjZjLn7qwG+ABI+UUowtQ5msFKDPqlGD0bMRsiBKd\n", + "Q8qFEG6Q9ZarvEsoei5FMRvKk/KScljyzRendpeLrEtEzqWWZ67DRMvlSOlKuVQF7IVyk3UJydmI\n", + "2RAWpSPlziBht2Q+F6Um6RLIOxsxG8Ii2lI2InZHKUt6FEbMBkMa0ZKykXAwlJqkI5zWKBUx12Gi\n", + "5XIh392sg2E0RsiFZDSl8RyPIpITiwYFudRsAakLuwGdDBHpJSJzRGSZiDwrIj0czlshIm+KyEIR\n", + "sd0iL53wpFwqoig3SuF5j6CcS0XMhqJyOTBHVfcDnk/et0OBOlUdqapjcxUajpSjLITORNQFHTE5\n", + "l4KY68JuQOfieODe5O/3kn2/WdcL50crp1wIwtz7Z26IdXslXcxRy0FHqDOwFHLMdZj8cpHom7Zr\n", + "9TrAab92BZ4TkQRwh6rema3Q8pFy1DZeA+c2RV3WKUFHSc4R6gw0Yi4f5pL97SgicwC7HTivSr+j\n", + "qioiTnvrHaKqa0SkNzBHRJaq6suOdYayR9+0PAuJooDzJeqijpKgIyBmiL6Y68NuQAAEtUef231B\n", + "ZbH7+kRkKVaueK2I7A68qKpZ950VkWuBz1X1FqdzojH6IhfjM27lSObfGLW/M0q554jkmqOeY64L\n", + "uwHlz+PAmcnfzwQeyzxBRLqKSPfk7zsBRwNZP86jm76ImpTCIPM5iEI0HaXURgRyzaWQyjAUjF8B\n", + "D4rIOcAK4LsAItIfuFNVJ2OlPh4REbB8+3dVfTZbodFKXxgRuycKgoZoyDkC6Ywoi7k+7AbkQZTT\n", + "F4Ui/EjZiNgf6c9bmIKOQuQcgU7AKEfMdZS2mDsb4eWUo5g3LVWikIeOQs455Dxz1HPMhtIgnPRF\n", + "EaKqz0bVFr6SJD1fbyxaXZ4IM4IOM3IOOZ0R1Yi5PuwG+MCkLzIQkT8Dk4H1mvyzRKQX8ACwF8nk\n", + "tqpuTj52BfB9IAH8OFdCOwiKKV8/bQhV2KnIOQw5h5nWCLkDMMqpDEP0yRopi8hhwOfAX9OkfBOw\n", + "UVVvEpHLgJ6qermIDAVmAmOAPYDngP1UtTWjzLwi5ShIOF9CFXUYgu6EUXNUpVwfdgM80hkj5Zzp\n", + "CxEZBMxKk/JSYKKqrhORfkC9qg5JRsmtqnpj8ryngetUdW5GeZ6kXA4SzkUoku5McjZibkd92A3w\n", + "QGeUsp/RF07zvfvT/q3+CVbE7JnOIOJ00v/eogk6jNRGWCmNkNIZJo1h8ENeQ+JyzPcGayEOV3Q2\n", + "ETvhJGhVWLMRVm+AVeth9cbkzw2wagNs3AzxBLTErZ8CVFVCZSXUdoHdd4M9ekP/3mk/+8DAg6Bb\n", + "V4ovZyPm0KijtKLlzoYfKa8TkX5p873XJ4+vAgamnTcgeawD193R9vuo06s5tC7moxnlzdo1ylOr\n", + "qlkwv5UFr7ayaF4rlTEY0Ke9WCeMsH7frQdUV0FlzLopSUHH4csmS+irNlgSf3t52+8r18Ge/WDM\n", + "UOs2FhixB9RUFfgPDCNqjsAMQEN2liZvgeN2uGQEPkD95JRvAjap6o0icjnQI6OjbyxtHX37aEYF\n", + "IqKfauGj4sUUZtDo8AK9ahvWK0/+I8HzTydY8KrS+KUyckwFB4+t4OAxFYwcU0HfflaqK8gURzwO\n", + "b38Iry6B+Uusn+9+BAf0gUO/AicMh6/vY4m+YBQ7ag5BzFGLlqE0ouXAcspnuTz3L+HnlHONvrgP\n", + "mAjshpU//l/gH8CDwJ50HBJ3JdaQuDhwkao+Y1NmoFIulHz94FXYH33YyhOPJpj9aCtvL27liG/G\n", + "mHRcBWO+VsGgwUJyvrwjhco/NzbBG8vgxdfg0Sfgw01w7DA4aQQcPQRqqwtQqRFz0akPuwEuMFIu\n", + "RoV5SjlKEs6FnaTXr1Nm3B3nHw8lWLNKmXR8jGNPivH1b1RQU+P/f6GQHYQr18Jjf4FH34TXP4Yj\n", + "94czxsJxwyEW9JzQYsrZiDnyYjZSLkaFHqVcShLOxrIFX/D8bUt56vEEJ5wS47tTYow7pIJYLNjX\n", + "v6CjN+bCps/h8cVwx79g/TaY+nX4/tegR9cA6yljMRspe8NIuRgVupByuYg4HldefvQz/u+2taxf\n", + "2cyJF/Tl2HN7s3OvyoLlplMUWs4A81bA7+rhqbfhtFFw4UQYYrdHgx+MmItGfdgNyIKRcjEqzCLl\n", + "cpLx7Ls2MOMXq+k3qAsnX9SXQ07oSWWl/WtdSEEXQ86rN8P0V6zoefSe8IvjYMSAgOoolpw7sZjr\n", + "w25AFoyUi1FhhpTLRcQAqsrcJ7fwx0s/ple/Kn5440AOGNPNUxmFEnTB5Jw2vrmpBe5qgOufhskH\n", + "wg3HQv8eAdRRDDF3YilDdMVspFyMCpNSLpSMCyn5bMJctvAL/viTlWxa08x/3rwn44/ZJefoiXzq\n", + "80sx5LylEX75LNz5L5g6ES49Erp1ybN8I+aCUh92AxyIspRF5BTgOmAIMEZVFzicNwn4LRAD7kot\n", + "ReFYbhhSfknH5l1OVCLsLWu+5OUr5vDqM1s469o9mHxub8c0hV+ClnMxxAzw0adw1Sx4cRn8bDKc\n", + "PR4q8hmtUWZijpKUIZpijriUhwCtwB3AJXZSFpEY8C5wJNZkuvnAaar6jlO54e884pKoSDidBQ99\n", + "yENTGxj//f244t1vUbtzNe+Qn0TfatjGnBmbaG5upbq6gqOm7AoTrL/dTbn3TG/hzmkJWlqUqirh\n", + "B1NjnH1+++l5qancmXJuWAQznoLmFmt24JRvWTMGXTOedmLeqxfMOBNe+wimPgQPLIB7psAeflMa\n", + "xZieXcRZf1Gcgm1wj6ouBXJ9Ix4LvK+qK5Ln3g+cADhKOdKRchRFDPDl5u08dOG/+ejVjZw5YyJ7\n", + "jenteK4XQb/VsI2/3rCa7Y1tq512qa3g/13dn2ETuucs857pLfzimjjxeNuxykq48vrKDmJOp+fr\n", + "jTQsghvuhsbtbcdru8DV53gUc4qMqDmegF/Ngd+/BL87GU7NZ5cQEzEXhPqwG2BDlCPltPJfxDlS\n", + "Phn4pqr+IHl/CjBOVS90Ki9ykXJURZxi2Yur+dtZ/2T4cXty+cITqe6a/SlM/3tyCXrOjE3thAyw\n", + "vbGVOTM3tZNyqszM8u6clmgnZLCmUd91eyKrlD8bVcuMXzW2EzJYgp75tE8pZ0TNlTG4ehJMOgCm\n", + "/NUa6zztu9DTz/jmMouYo0Id0RRzIalfA/VrnR8XkTlYO1JncqWqznJRheeoNzJSjrqMW7YnmHXl\n", + "a7x+/3L+4+7DGDrJ+5ivXIJubm7tcAygucn+eKacW1rsX//m5tz/F9t2iRHvrlRua19XU3POS53J\n", + "EDPA6L1gwWVw+T9gxC+tdMY39vdRdhgrzRUIk8YoAg77R9Ylbyl+OrX946p6VJ41Zy7UNhBrWWNH\n", + "QpdyoWS8kJF5XT+ShTt+/3xjE3ee9Bw77dqFK948iW671uTbPNtot7ravhesuiZ771iqrKqq+dh9\n", + "MFdX5/42Vp1czyLevaKdmGvyXefCZt3mrtXwu1Os9TSm3AtXHg0X1vkou9BiNtGywT1Ob7LXgH2T\n", + "C7utBk4FTstWUGi7WS9meCBCXshI21tQ5b74bn9+Pv4Zdjr0IEY/8pNAhJxO6nlYzHCOmrIrXWrb\n", + "vyRdais46vRdXZU1eeqeVGZ8zFZWwrkX5F7i7ZQpMWqSw8fj3a021HaB0ye5qjo3NjttH30ANPw3\n", + "/PEVuPBBK+/smULvoF2kHbLNTtilh4icJCIrsf67Z4vIU8nj/UVkNoCqxoGpwDPA28AD2UZeQEgd\n", + "fdP0HN/XByFct6x+cRkvfu8eRv/iOPY/Z4LjeelRdb4sb1jL8pnzaW5qpbrGEnJ6PjkXj09fxyO3\n", + "r6eiuZHqauHcCzqOvnBiXkOCh2cm2N4EXWrg5NNjTOqST/7CBpvF9Dd/CafcDdWVcP/Z0N3P514h\n", + "I+YiRctRSWHUh92ANALr6Jvm8typnXTyiFcpF1PEKZbd82/mX/44h993Fv2PcJ/0DFLQ+Y5PDmp8\n", + "c+Djmm3E3JKACx6AeR/BE+fDwJ4+yjViDoz6sBuQpDNKObT0RS6CTEV4QVVZcO1s3rjhGSa/dJEn\n", + "IUOw7c43xRNUiijwrbpsUhlVMbjjNDhjDHztFnjTds+aHBQylVGkNIbBECkphyXiFKrK61fP4qPH\n", + "3uS4uZfQI88lz4KUc5jXgyXmQOVsI2YR+MmRcMtJ8M3bYXHUxFwEopJbrgu7AZ2Y0EdfQGHTE26F\n", + "NEzfZMH/zubjxxfzrRd+TG1v93ncXKT/fX7TG05jk4t1fYrPRtUGl86wGTIHbRNLjr4d5kyFYf09\n", + "lluoURmdcDSGofiEKuWgZBxEJPjsLxex6ZGlDHnxj7zfu31CM8i1J1J/c5hyLhUxtyocPQ1euhj2\n", + "7RNMdXlTBDGbccudm1CknK+Mgx7bvO6Pj7Hh7ic54JVpVPXp2MOUWV8Qkg5CzuUu5tNGwxfNVsT8\n", + "8sUwwEvnXxlNLgmLOqLT4deZCGX0xTluu0LTKNQkk033P8/Hl/yBA17+PTWDvX5PDi6KzmfURj5t\n", + "yLf9gY7MsBEzwM3PwT1zLTHv6m156sKJuQhpjChEy/Uh198ZR19EIqfsRKGnXn/x+rt8dOFtDHn+\n", + "N76EDLmnTq9tWM7yGfNJNMeJVVcyeMoY+k0Y3OE8L5Hz8oa1zJ+xnHhzgsrqGMunDOaECRtyXue0\n", + "Ap1fMc9rSPDQjBiyOuFvVblMHCLmS4+EtVvhe/fA0xd43KzVRMyGEiNykXKx1sBo2bSFJaPPY8+b\n", + "zqfXKYcHXv5wFrO2YTmLbniaRGPLjuOx2ipGXD3JVswpsol5ecNanr5hES2NbdPfqmpjTLp6RFYx\n", + "51qBzquY5zUkuOWGOE3JQLlyW2t+q8qlYyPmeMJKY4wfBL843keZhRCziZYLTmCRssvXX0aHHylH\n", + "ZkhcUGNq3aCJBB+c9jN6nVJXECGD9ffMn7G8nZABEo0tLJ+Z/T8k21C6+TOWtxMyQEtjgtdmLs/6\n", + "/GVbgS7VXi88NCOxQ8hgTc3eVl3BzKc9FWOPzXC5yhg8cDb8fT48tiiAOoLAjF02FIDQ0xdBiXjx\n", + "VvfltPzsBlqbamm+/Hds2drxKRi+czDhSWtzM43sBEA3vthxPNHU4nRJOxYyskPUHG+2XyCipck6\n", + "7jQ6w80KdF46AJsdZl9v2TkG+FnEIgObVEbv7vDwuTD5j3BAP9i/r4fyTBrDUCKEKuW8Zqt5kHA6\n", + "iSdmk3jgAbrUv4Bkrt6TpWw/oq6oblti7fM0Ocdq3K1FAR1zzZXV9osLVdW0P54pWLcr0LkVc7XD\n", + "6nFdagIcmWEj5jF7wc+Pg5PuhHk/8bhORiHEXOAhcmZ4XOcjlPSF31TF4q3Dd9z80PrhCpov+i+q\n", + "//oXpLfzbiFB1b3rlKOoqG2/Y+iXtb3g9FM91Q1tch4zZTBVte0FXFlbwejTO+ao059jLyvQuXlt\n", + "0leVS1FTay1iBAFOzbZJZfzgEDhkMPzwPh/llfiMvzCoC7sBnYxQOvrG6kuuz/cr4ExUleYTv03F\n", + "EYdTddGPAykTckfQ2xreYtPMObQ2NVNRU82upx9F9wnDrGt9jHoYyUKWN6zltZnLaWlKUFUTY/Tp\n", + "gxk8wXlKeKqetxq2MWfmJtcr0OVqn92qcuMmtP/ACGzIXEbE3NRiLZJ/04lwwkEeyyrBTr+wo+X6\n", + "kOrtjB19kZVyUDJOEZ95H/Hpf6LLC3Mc0xb5kE8e2quc/Yxp9jvsLYhx2IUS80vvWYvkv3UV7OI1\n", + "MA9azEbKBcFIuRgV5pBy0DIG0PXraZpwGF0efpCKr+Y7Xis7fuXsN2oudB35XJdOocR83kxrZMYf\n", + "vGeESkrMYUsZwhGzkbKXC0WuAKYArcBirOdvJ+ABYC9gBfBdVd2ccZ2tlIOUcePcjPm4vzwNeu8J\n", + "595oe37t+M8CqzuFHzkbMbskTcybv4QDfw4PfB8O/YrHckpIyhC+mOtDqDPKUhaRU4DrgCHAGLvd\n", + "rJPnrQC2Yg1LalHVsVnL9SPl5H5TLwAHqOp2EXkAeBI4ENioqjeJyGVAT1W9POPadlLOV8YdBJzJ\n", + "vNnwx4tg+ptQ437r5KBEXQw5d3YxP/IGXDULFl4OHga2WJSQmI2U/VFAKQ/BCkrvAC7JIuUPgVGq\n", + "+qmbcv2OvtgKtABdRaQS6Iq1KeDxwL3Jc+4FTsxWiF8hN87tueOWlaYvYdqP4OI/eRKypzpy4Ge0\n", + "iNeRKV4XePI7FDFSC+anjcr49letccu/etZHOWY0hsEnqrpUVZe5PN31B4svKSeNfwvwMZaMN6vq\n", + "HKCvqq5LnrYOcBze71VUviQ563bYfyx89QhPdQVSdwZGzG0UQsy/+Q78/iXYsM1HOUGKuYCz/MJe\n", + "AL8u3OpLGQWeE5HXROQHuU72NQxBRL4CXAwMArYAD4nIlHatUFURsc2NLLhiNjAbgIpDDyV22KGO\n", + "dfkW4Zfb4KGb4aYX2x9f0gAvzICWZqiqhiOmwIHOm6I6tccpvZGYN4/EAw9ZU96qq4mdegqxceMA\n", + "S8xe0hlel9i0mwEYZPlurrMWKUqk/nxOmdJxmBz4m2DSsAhmPAXNLbQtgJR8bK9e8L1RcOMc+PW3\n", + "vf5FhqiwNHkLGqdA4JX6BK/Up892jbd7XETmAHbjTa9U1Vkuqz9EVdeISG9gjogsVdWXnU72m1M+\n", + "FThKVc9N3j8DK245AjhcVdeKyO7Ai6o6JONard2SO7WSb9qAmTfAyqVw2Yy2Y0sa4L4bYHuaDLrU\n", + "wmlXexJzOulyTsybR/zmW6Cpqe2EmhoqL71kh5hTeJFzqeSYMxcpAmtCySVXV9qKGdznmBsWwQ13\n", + "Q+P2tmM7FkBKFrF6Mwz7Bbx1JfTv4elPsQgyv1yg3HJnyysHlVP+VN19O+sljZ7rE5EXyZJTzjj3\n", + "WuBzVb3F6Ry/OeWlwHgRqRURAY4E3gZmAWcmzzkTeMxrwUHkcdn2GTx2G0y5tv3xF2a0FzJY91+c\n", + "6buq9PYmHniovZABmppIPPRwh+u8pDNKJZWRuUgRQFMjPDzTeS0Mt6mMGU+1FzJY92c+zY40Rv8e\n", + "cNY4+KWf3DKURH457BSGwRFbkYtIVxHpnvx9J+BoyB4F+c0pLwL+ihVbvJk8/CfgV8BRIrIMK2r+\n", + "lZdy85Zxit/dCoOPg5X7Wr30qduqZquLMv0G0NzkUJB7Guf2JPGJwwds03bbw4UUs1eCELPTIkXb\n", + "czy9bsTc7LCGU1OqzqSYLz8a/v4afOyqn7uAmBXkyh4ROUlEVmL9980WkaeSx/uLyOzkaf2Al0Xk\n", + "DWAe8ISqZg0bfK99oao3qeqBqjpcVc9U1RZV/VRVj1TV/VT16Mwxyk7kFR3Pzbg9vxHm/wEmXtPx\n", + "3EqbVXS2Ap/VtF2fD1XVtG6xSdPXdOl4LEmhxOxny618xZxtkaJc5BJztcNQt5r0OsdDn+5w3iHw\n", + "82dy12lLCUTLYVIXdgMihKo+qqoDVbVWVfup6reSx1er6uTk78tV9avJ2zBV/WWuckNfT9mXjNMl\n", + "nMlr0+GAk6Dn3h0fO2gKVGa8+StrYfjp7srOxRFToEstrVsq2+TcpYbYKSdnvSxKYvbLYobnXKQo\n", + "F9nEPOVbVg45ndoucPqkjBPHw6XfgAcWwHo/IzHAiNkQKqFMs0519HkWci5Rtibgtq/AqY9A/4Pt\n", + "z/m4ARbPhJYmqKqxhLyni04+m9XKbFnSYOWom5uguobqC4/t0MnnRKE6/4rV8QfwZcMbORcpyoVT\n", + "51/DIiuH3NRsRcinT3Le5eTsC2Do7tZWUr4IqtOvDDv86otYVyl09AVNaFL2JGS3Uet7T8MLV8MP\n", + "C7iauVs5p+FldmA5iDmozWTzmf337zfhzMvg3f8F8fsWC+LfyEg5LzqjlENJX7gWstc0wut3wsE5\n", + "x2bnh4/UhpcPoEIsyOSHvDYgCKhTMp9JJuOHQ3V3ayU53wSRxjAdfgaPhJ5TdsRrTnfbGvjwBRh+\n", + "WkGa04EIiDmqHX+pa8Oc/ScC530b/vRu3k0wZFAXdgPKnOhJ2W8n28K/wNCToWbngBuUBY9t7Wxi\n", + "DuJ6sMTsR85TvgVP/gs2Dsl9riMR7fQz45XLl2hJ2e+QNFVYcBeMPs+6/7KLW5AUSMxu6QxiBu9R\n", + "c69d4Pivw99m46svYAf5itmkMAweiI6U8xkj/ORC2F4JH4x2L9ygJV0AMUclvwzBiDmMdMaUY+Dh\n", + "55N38hGzwVAkQhl9wTMZdfoVckqmy6+H+Gew3635NK2Nw/K41sMb3+2oDLcjMgo5GsNPHYUsA9yN\n", + "ztjeDH2OguX/gF1T62H4/X/LdzRGwCMxOsMIjKBGX7yUfV35HUyUVzvn6It2+HmDZEa3m56EXY/x\n", + "V//K6fDvYfCv/a2fK6fnFz2HGDEXY2JJENGu26j5nuktTBjWxJj9G5kwrIl7prefa+0mau5SDXWj\n", + "4Ol/px30GzFHLL9s8srlSbhS9ipkO1k2b4Av3oGeX/de/8rp8ME1sH0VtKy3fn5wjXXcqT435Dtd\n", + "u0iEKeZUOU5l3TO9hV9cE2fNKmXjelizSvnFNXFfYp58KMx+JeOgSWUYIkp4UvYirmxy3PQ09DwC\n", + "KhwWXsjGJ9PIXD8V4vDJ7R3r94rLvy/MaDkfgsoRO5V157QE8YyXJh6Hu27vuOJcrtEZxxwCz8yF\n", + "ROalfsScT7RcRh1+dWE3oIwJP32Ri1xC3Pgk7OYzddHqsPRYq81yZxEQcyHId32MID8E0uXc0mLf\n", + "19Hc7NwH4iTmAX1hQB+Ya5eDNRGzIWKEI2W3UXIuEbbG4dNn/Uu5wmHpMaeouxDD6TxQqGg5CDEH\n", + "LefWKvul5aqrs/fBOEXNkw+F2f9yuMirmE20bCgg0Y2U3cjvy6VQtSt06e+vjgFT6bgjViUMuCD/\n", + "tqUIKVoutphTdQYl529P7QuVlSRoW8yoshLOvcDfinMTD7YWNHKkmGIOENPZV35EU8pupbdtIXTP\n", + "QyYDz4evXA9dBkBVH+vnV663jgdJgB1/hRy7HNRSn0HI+fjz+3Lu9XvQe0A13ft0odeAWq68vpKz\n", + "z3f4dmNDuphH7g9vLLPmGTliUhmGCBDOOOWfZqnTSxS67L+hui8MuizvdvnCy3hml294N2OXC7m/\n", + "H/gfwxxkG4Iur+frjQw4Bv75Jxg8IMfJXj5E/Y5dDnDMcljjleuLUEeUxymLyM3AsUAz8AFwtqpu\n", + "sTlvEvBbIAbcpao3Zis3mpGyW5wi5XkubkFQgDSGGwo90y/oxfFTkXMxhtI58dmoWkbuDwvNAkWG\n", + "4HgWOFBVRwDLgCsyTxCRGDANmAQMBU4TkQOyFRotKXuRnCpse6NNyl6FG5ScA+74Czu3nKJQu5YE\n", + "KWiv5Qypq3QnZS9pjIjklg3FR1XnqGpr8u48wO472FjgfVVdoaotwP3ACdnKjY6UvcqtaQXEdoKF\n", + "vfOTa5CRcy5CipbzEXMht5RKF3Qx1m8ecXAFr651+S9faDGbURjlxveBJ22O7wGsTLv/SfKYIza7\n", + "fJYIWxdAfCT4mDNiyzzA3a5NHXmZ/NbLyKBxbk9Pu5UUmoWMDDzPbEe6XL3mjVPXZrvuoJHC4oWt\n", + "fDaq1t2uJuMpmdmZhuw4fXAvq1/De/VrHK8TkTlYO1JncqWqzkqecxXQrKozbc7z3GkXjY4+PymA\n", + "f/4KdBOtkB/9AAAgAElEQVTU3BxIu3bgV8zgXswuorCgFyuCYDrciiHnTPy02+4aVWXATk28u76G\n", + "bt3E/XZTbsXstdPPdPblJKiOvml6jqtzp8rdnuoTkbOAHwDfUNUmm8fHA9ep6qTk/SuA1mydfaUZ\n", + "Kc8DdC1U7FWYsvMRs1+emA6PT4N4C1RW0XLx96n6/tkhNMTi7emv8M60l2htiVNRVckBUycy9PxD\n", + "26UziiVoN1Gw3TWZ54sIfXcX1q9Vuu0jO4bM5bMXYF6MomB7+BkKT3JUxaXARDshJ3kN2FdEBgGr\n", + "gVOBrNsjhS9lr1FyKv+ra0AKZM9ii/mJ6XDvNZBoW+whfu0vAQIVs52o7Hh7+issuGYWGm/dcWzB\n", + "NbMAGHr+oTuO2eWbCylqr+kNO5n36WdJefA+beflTGe4TWOMJrhdsA2lwO+xEqhzxNqd99+q+iMR\n", + "6Q/cqaqTVTUuIlOBZ7CGxN2tqu9kKzQ6HX1e0bUguxeufD+df24/YDLf4I9PaydkABJxEn+6K2dR\n", + "XofHuekUe2faS+2EDKDxVt65/aWc16Y6B51uQeGlczD9vD79YK1NCjHnanNmYokhA1XdV1X3UtWR\n", + "yduPksdXq+rktPOeUtX9VXUfVf1lrnLDj5S9kC7K1rUgdvn3EiRuvzCSttgsjFQEWlsyV85LHm+2\n", + "P+4FJzH7jbDdpjZS3xL6JdMXdgQSMXuNlk0Kw5BBuFLOZ4yvroGKAkbKULw0RqX91GGpCmpoSXty\n", + "pTEqquz/LSqqC/fvkm8qxI2cFzMc7beKdWvWeW+gwVAkSid9kR4l6xdAC1DEnavd4ueD5vipEMsQ\n", + "XqwSPfLHri73M8Mv21f/A6ZORCrb/2tIZQUHXDDRcz354Cf1kSut0atfFUvX9nB8PJA0hplQYsgD\n", + "31IWkR4i8rCIvCMib4vIOBHpJSJzRGSZiDwrIs7//fmgG0F6g4S6lVZwHHs+nHk99B4APfpYP8+8\n", + "3jpeQJzkNfT8Qzn4+uPoOqAHNX260XVADw6+/rh2nXxh4FXOdvTsU8XmDfGs4jb5ZUOY5PN99Dbg\n", + "SVU9WUQqgZ2Aq4A5qnqTiFwGXJ68BUwL0CX4Yu0oVApjLu3f3MeeX3AJ2+H0tX/o+YeGLmEn3A7L\n", + "s/vbKquFRHIB/WxpHNcTTJzwkls2eWVDGr6kLCK7AIep6pkAqhoHtojI8UDqO+69WGPLg5eytoCU\n", + "Vh9l1PEzFthLudnIp86UoHPJOVVHrFJIxNX2sUyyijlis/0GDQ93d2tDcPg1297ABhG5BxiB9Tl/\n", + "MdBXVVO9KOuAvvk3EZvhaXHC7qOMGou3Dvc0u8+xnCLt8ee2TrfCziXnVB2xyn+1k3LqsYKI2Yxb\n", + "NvjAr9kqgYOBqao6X0R+S0ZErKoqIvZjj168zvr5EdCzDnrVeay+uFPDDeGRKexcks4l5w9lMK2t\n", + "q2zrCfpbgidMCgOApclbZ8avlD8BPlHV+cn7D2OtJbpWRPqp6loR2R1Yb3v14ddZP92OVBhHRrRc\n", + "CXTc1dhQ/rid1ee0iFJrXGmq6uZYtl2ZpZTGKHWGJG8p/hFQuYVc7TBofI2+UNW1wEoR2S956Ehg\n", + "CTALODN57EzgsbxbaIdUgeY/kcEVYayDYXBFruFvdqM1EvFWKiorHK9zOp5zRIYTZnicwSP5JGYv\n", + "BP4uItUkt0LBmtv9oIicA6wAvpt3C22pxNqBxZBOUHnlQuJlTLXbvyVXJ2V61JxoaSVWKTuus7vG\n", + "cyrDRMuGAPEtZVVdBIyxeehI/81xifQCjc56w+3wu3xnxipxHD81lCFyKdZNf5x10x5BW1qQqir6\n", + "Tv02fc8/3lMZ+W5bZXd9NlFnk3NKzF9+up2uvbq0u8atgH0PkzMdfgYPhDuE4TB85pV3BppBvwTp\n", + "WoiWtdVZDGxWiePea6yf408tUiPaWDf9cVZdcxcab8vbr7rGWhwpl5gLvX9gevlOgnaS80JG8s6a\n", + "jezS77MO52ee6zm/HES0bDr7DJTSNOt0RKzFiHRt2C0JBodV4ph1eyjNWTftkXZCBtB4gvW3P2J7\n", + "/uKtw3fcikmuOu3yw41rt7Jt931cnRvG8ECDobSknB65yu7Q6ryNS6B1FRqHVeIIaZU4bbFvT2tz\n", + "++NBiLhxbk/Hm1uytSNTrI1rt9K13862vfFuxezY6Zdt+nUZdvjVh92AMqV0Z2BU9LNWiosSfvPJ\n", + "TqvE7RzLqzl+kSr79lRUV+UlYa87ddudn22brFTbMtMa6emML9dsoXb3XYDi7T1oKE9E5GbgWKxR\n", + "Bx8AZ6vqFpvzVgBbscbxtqjq2Gzlhh8pe91wNBXBFjJ9UexhcA6rxMXOO7fIDbHoO/XbSGX7DwSp\n", + "jNFyzlTPZfmJfPMtL1vU3Lh2G137ta0umBkx5x0tGzoTzwIHquoIYBnWXA07FKhLLoSfVchQqpHy\n", + "OOCfuxcmUvYr5Hx2s06Nsph1u5WyqKqG4y6g6vvF7+SDts689bc/QmtzC82x7sTOO9fT1lRBSdhN\n", + "HXbRs1PU/Pmaz6ndPfuSr3nN7svW4edmFIbp7CsZVHVO2t15wHeynO56SctoSNnLKIwU+w6Cd58I\n", + "th3FiJCd8o62q8SFN+yv7/nH0/f841m8dTg1Hq7zLeNsIxdyLJWZS84pMbds2AwVwru7jOUg3tpx\n", + "jps0hp2o815JzlBOfB+4z+ExBZ4TkQRwh6rema2gaEjZD91HQvX1NlOwfZCvjPOJkh3IljstBn5y\n", + "x66F7HXoWOb5DpJ2knNKzF8ufI+uX90HEekg2UwxFyxaNpQUIjIHsNt37kpVnZU85yqgWVVnOhRz\n", + "iKquEZHeWJusLlVVxzA0OlL2Gi13HQJNqyC+DcZ1t455lXMQkbEXIZfI4uhehVwwGecqJ4uc7cS8\n", + "68KZdB25r2OxucRsouXSxWl449b6hWytf8PxOlU9Klu5InIWcAzwjSxlrEn+3CAijwJjyWK76EgZ\n", + "vIm5ohK6HQifL4IeycXY0yXrJOgSWMvCb5QcyNKdhRByoaLGLHK2E/OaV9ez14kH7LgfyspwZnZf\n", + "pNi5biQ717V19q7+6V9cXysik4BLgYmq2uRwTlcgpqrbRGQn4Gjgp9nKDX/0RT50HwlbHXKB4xxu\n", + "QVJmUXLgQp6LNyG/7HDLhUM9me1rfXMxq/Y9pt2xzAgq12gM1xNKSuD1NuTN74FuWCmJhSLyBwAR\n", + "6S8is5Pn9ANeFpE3sELFJ1T12WyFRitSBm/RcveDYUu+CWWfFCCPDOFFyQURci7cvs6Z5zk995lb\n", + "bNEWMeu2bejq1ch++7F4a2WgCzeZFEbnRFVtc2GquhqYnPx9OfBVL+VGM1J2K7zuI2FbnoP/V06H\n", + "fw+Df+1v/Vw5Pfc1XoVcZlFT3kJ2GwE7vTbZrreJmhvn9qT1rSXIkCFIZcc4pGDRsl9GFbZ4Q7SJ\n", + "ppTBnfi6DYfG9yHeYRKNO1ZOhw+uge2roGW99fODa7KLuYBCLoUoOS8hu5UxuHttcsk5jeaHFlMx\n", + "6uAd9zP/ZrPOhTfqw25AGROOlN2KKpcAY7VWJ9+mOTlOdOCTaVj7/aUTh08cFgIqQyEHSi4he2HZ\n", + "NIi7fG2c5Jzenldnkxh4YruHs30Yed2pwnaGn9PrX4brYBiCI7xI2YuYs8lw12Ng45P+2tDqsBBQ\n", + "a8ZCQLnaUMIEFiXnI+R5NjeSr00845b52uSqZy7w+WZ4fwGMODz79Ows0XLRUxiGTkt00xeZOElx\n", + "t8mw6UnQVu9lVtgvvENFde56c9GZomS/Qt4hYDscXpum6uzX2dX3+rMw7DCo6bj2dpDRssEQBOFK\n", + "2WsHmF3E2nUwVPaEbQu81z9gKh0HoFTCgAvyi47LUMi+pk/nEnI2qhxem6oLcpeRWe/s2TB28o67\n", + "fqNlg6EYhB8p+xmZkCnM3XymMAaeD1+5HroMgKo+1s9vXg+n57ENUxkKOStOUXI+Qgbocr41jV4G\n", + "gPSxflZfbx13U1aq/tZWeP8pqJrscKL7FE4uYZuV4wxBEI1xyn7XCkiJeY/J8OgVMPh/vZcx8Pz8\n", + "JJzC44dLWQjZD26HlW9bAUyybt0HuSvTbnLQ6tega2/o2b4Muxl/dmRbrCiUGYGGsicaUob8FnHZ\n", + "81CIL4cDl0OvwUG2yh1lLmTHr/teo+RcQt62IvfxXILObMeXD8KQE6z7NpNL7AhUtmW4OFF92A3w\n", + "QbG3KsuH8NMX6YzHXzqjshpGnAEL7g66RbkpgpCH77y4vCPkbSuchezl3Mw6WrfDor/CwefkLLaU\n", + "3rSG8iZaUk7hR8yjfgAL/wwJh2FuQePjA8SvkAtJ4OV7HY/sVsZur0sX8/pHoctB0OsrbcfSolY/\n", + "nZdR7QhcUeKf2YY2oill8C693gdAr31gWcAL39vh40MjikIuGk5Rsl8hu71+1Z9gj/PyqwMzNM5Q\n", + "XEKRsidBeZHz6PPg9ayL+ueHz/RKpxZyobET8zzgy/fgiyXQ+0Tv0TvuI2LfkbOZ1WdwILRI2bOo\n", + "3Ahx6MnwyTzY/JHfZjnX63NRobIVsl3nlZ38ChUl52LVXbD7/2s/EciG9BSGySvnpj7sBnQCQh19\n", + "UTv+M+95vZQc7aRQVQsH/YcVLX/jBvvrP26AN2dAvNnqIDxoCuw5wbkeryxpgBdmEOu5DaqrScgp\n", + "xMa5W8g5LBkP33lxcELa3ABrZ1jToSuqIT4FKm2eX1+8DjyGtaN7NXAiMMoSfPqoDN0OH/8FxjuE\n", + "yC5HYfjBLONpyJfQh8SlIknfck6RkvS4C+Gur8GEn0Btj/bnfNwAL90A8bQ3zUs3wMSr4bsBiGNJ\n", + "A9x3AxU129DkwnXxm2+BSy/JKeaSiI5zsbkBPrwBWtOe3+YbgKvbi9lXlPw6MA1I3+BhGjCVDmtd\n", + "ttwJFaNhp/181GMwhEte6QsRiSVX3E9tINhLROaIyDIReVZEeuQqI0XeG4WmUgyT94VDj4ePb22f\n", + "ehgPrJsBXRthZ9puXRthvdN+h96ILbmbippt7Q82NZF46OGs10VByIG0Ye2M9kIGoBFa/D6/9Wm3\n", + "x2gvZJL3/9H+kDZC8y+hy8/aH/eRVy4oZkuokkdErheRRSLyhog8LyIDHc6bJCJLReQ9EbksV7n5\n", + "5pQvAt7G2kIb4HJgjqruBzyfvO+a2vGfBbOL839cA7Nuhy0b2x9vcVhhrNl2ey3X7Gh3s0P5Tdtt\n", + "D5f0+GO7r/+OK7j5eX7rM+47lZ18blPRd8sfITYWYmaleEPBuUlVR6jqV7GihmszTxCRGNZXuknA\n", + "UOA0ETkg87x0fEtZRAZg7eJ6FyDJw8cD9yZ/vxcr6eeZvMXcb2847BR46Ob2x6scOn2qa3xV0+FD\n", + "pNqh/JouHQ6Vkoxdvx6OnWr+nt/2bHA4nvbc6ufQfCNUZ92Xsuwo1hjl+uJUUzKoavrX4m7ARpvT\n", + "xgLvq+oKVW0B7gdOyFZuPpHyb7B2ck1fM7Ovqq5L/r4O6Ou38JTwfAv6tKvgqTvhs3Vtx46YAl0y\n", + "Fo2proXDT/fVtkxip54CNRkC6lJD7JSTd9wNKjoezuKcN89l5tuub06BisxFeWqhytvza1GXcf8C\n", + "Osq9C+3+v5t/D7HDIXaQj/qCwXTydS5E5Oci8jFwJvArm1P2AFam3f8kecwRXx19InIssF5VF4pI\n", + "nd05qqoionaP9bz1v1m/vQ8AFYceSuywQ7PW56szsM9AOPIMeOBXcP5vrGMHToDTroYXZ1opi+oa\n", + "S8gHuuvky/UBERs3Di69xMohN22Hmi7ETjl5RydfvtLzKtr084syE23PCbD31bB2JrQ2QUUNNJ3e\n", + "cfRF90EuO/vqsOKzuuT9qVg55O20CTmZpujWE764FWqjljz2wethNyA8liZvxSLx8iu0vvKK4+Mi\n", + "MgdrR+pMrlTVWap6FXCViFyOFaienXGerQOzIaqer0FEfgGcgbUXRA1Wl9kjwBigTlXXisjuwIuq\n", + "OiTjWh2rLwH5jQt1JehP18IPh8Etr8CeQ3Kfn0Eg+W2KL2MnXE+IcHhdbJ/zzKGJbscqBz1OuWoa\n", + "6Eao/UvbsfQBL5lrY6flxNNf5/TXKv15T18pLvP1SL9vGynbDd/M1tHnUcrlnL44G1BVyXliFkRE\n", + "ecal574pvuoTkT2BJ1V1WMbx8cB1qjopef8KoFVVb3Qqy1ekrKpXAlcmK5kI/ERVzxCRm7DC+BuT\n", + "Px/LVk7qDeBHzpnCtBVGr37wH/8Lt50HN9dDRfZsTVASThEVGaeXF5m1G1xHy254E+J/g65vBVSe\n", + "ezrL0p31YTcggojIvqr6XvLuCWC7xutrwL4iMghYDZwKnJat3KDGKac+hn4FPCgi5wArgO+6uTgf\n", + "OadwEqqOOZ3tR/+Vyndvo/Lss3yX74WoyTiz7FxizmsyyWF0jJbH4X4dZc+0QMW1UP1rqOjdvk4n\n", + "HKLkglDgZTvNQkSh8ksR2R9IAB8A/wkgIv2BO1V1sqrGRWQq8AwQA+5W1XeyFZq3lFX1JeCl5O+f\n", + "Akf6LSvQmWVJJBaj+ve3sf3YE4hN+iay++6Blp9OlGWcWY+fiNl2BmY+6wUHEi3fbe1MUjklz3Lc\n", + "pS4MhhSqerLD8dXA5LT7TwFPuS03cqvEpUYnBDlkrGLoUCrPOZvmn+Qct+2LfNvrd7REPuSqL6/n\n", + "325vQ6fI1cui9R34EOQuqJkOkpYGzKwrwJ3IA3mdSmziSH3YDehkRE7K6QQp58pL/ht9910Sj88K\n", + "pLwgPjzCkHFm/Vkft/nbbL/u57uOhC8xK8R+BtVXQsXe7i8r0JoXgdGJR14YLEJZ+8Lr1+d0OfhN\n", + "b0hNDVW/v43mM8+mZtTByB5ZhwrmbIdbtjW8xaYZc2htbqaiuppdpxzFhAneR7yks7ZhOctnzCfR\n", + "HCdWXcngKWPoNyH3Nlh21w2f4H243I40RnLxJVqa4dOMxZ285pa9pDK6D4Lm30DLF1D14451pJMl\n", + "SnYadeGWzA81M0bZEAS+hsTlVaGInqPTgPzHzvoRdMuvbyXx9NN0mT0L6dJxpl06+Ubp2xreYvUN\n", + "f6W10ZoK3I0viNVWMeLqSa4kasfahuUsuuFpEo1tO6y4KTPXddleC7vnufHud+C+G2B7moi+rLUW\n", + "d0pfdc/Lcp7p2Ak6FVHHX4Km70LXeVAxqO1xuxRJgEPhMh/LKWWnXHtAw+HKeShcilIZEhckoa4S\n", + "l/qn9itnJ2lmk3Xlf19M68KFtFxxFdW3/jprOfmyacYcWhu3040vdhxLNLawfOZrvqW8fMb8dmLt\n", + "xufQCNtmPsW3Jkxw3CUj87rMtmT79mLXARtbcjeJ7RkS6toIi2e2l7Lf0RhOKY3WVdB0GtT8LTAh\n", + "u6WzDH9Lpz7sBnRCQl+6E/KXc4fyckg28fcLWDLmh/R75CZ6n/WtQOq0o0fzOmJpQt5Rf5P3fQRT\n", + "EdvbzeuI83mHx1uaEu3OS5GSdKI5bltuels8pZWam6nYJU7rlox/oRaXiw/5GSan26HxZKiaCpVH\n", + "ty8rkyxCzsQpSi4IAU4aMZQnkZByiqDl7ERs553Y99EbeGfij+l60FfY6eDg1t1Nf1M3VNs/vbGa\n", + "Kldl2Q3FqqyO2Z5bVWN/PFWG27Y4iblDtOy0+NIAm8WH7KJlaJOpWzlv/y+o6AvVaYsPuhFyBm6j\n", + "5GxD4cLOJ5vxyeVLJEdf5LOojltqhw5i0B/+i/e+cw0tGzfnVZZTewdPGUOstr30KmorGXx69g3a\n", + "RrLQUQhjpgymqra9gCtrKxh9evZ0yLem7EzP2vbicGqL0/OeHlGmFl+q2CUtAk8t7mQXlR6GsyzH\n", + "kX2yB0DLXyD+PNTcC+MrnK+xq8NllJwNz/+LBZ40Ugzqw25AJyXUjj6vFCKCXnnVnWx97nWGPHcr\n", + "se5dXV/n9k26tmE5y2e+RqKphVhNFYNPH22bT/YyQWF5w1pem7mclqYEVTUxRp8+mMET7NZMcb5u\n", + "c00/x7akcHq+UxFzYt68HYsvJTbv0nFxJycxeV0zaOPT8PaZcPCL0G2o83kuhJwZJfvp4LO776qT\n", + "L9f45Ih18tUXvoqcBNbR91OXnrs2/I6+UKQ8Tc/Je9v2oAStqqz44a/Z/sFq9pv9Kyps1j6GwuUa\n", + "w5wt5uY1yCXmdFwtWJSOGzlv/hcsOglG/AN6fM35vACFDO4XIILyXYSovvBV5MRIuRgVJqWcIl85\n", + "Z+JH1ppI8MFpP6O1Oc4+D/2UEVVZp6bnTdSm7eZ6DfIWM/iT89aF8MYkOPBvsOvR9uc4pUQ8CBmK\n", + "ECVDSQ2Fqy98Fa4wUi5GhRlSThG0nL2SaI7zwsl3UVFdyeH3nU1FlX3HmV+iJuJMQhcztJfztjdg\n", + "4SQY8kfoc1L783JNm85DyBBClAxGyg50RilHpqMvW+dWMYhVV3LEQ+eQaGrhxdP/QmtLIpByw/67\n", + "3JKrjW46/1I47hiT2sDWiVRn4L6LYMkkOOkP8J2T2o5n6yx0KD/XSItsQvaFnw4+MxTOkEZkImU7\n", + "woieE9tbeP7ku9F4K4c/cDbVO2dub5SbYknYSZT55tuzPe9eImbIsRmBncCWPw8Pnw6Tb4cDbRfh\n", + "6oiD6O2EXNC0BZjURcB0xkg5UuOUM0l/kxRL0LEuVRz56A/4948f5olDbuWoJ/6T7nv1ynpNoSWc\n", + "zzZQ4F3SI1no+Hy7HsecxHa5zxQpmaZE9vrd8MJV8N0HYdDE3A3NEnV7FXJBMRNGDB6IdKTsRDEE\n", + "raosua2exTc/x5GPnUfvMXvteCxqEvaCF0H7iZjBR9Tc2gr3XAmv/B9cPxsGJCfzpEedLld3cyNj\n", + "yJ22MFFyNDCRcpHId1siOykGLWoRYdjFhzNi8BZmHvN7Tp0+gZHf8bBEpEdSb/q3GrbxmxmbaG5u\n", + "pbq6gqOm7MqwCd1dl/P49HU8Mm0dLS1KVZXw7al9Of78tk3Fs82aXN6wlvkzlhNvTlBZHWPMlLUM\n", + "ntDP9rnNVk62qBky5Nz0Jdx0BmzZAL/9N+yyW9tjHpbZdModF0LIniixtZMN7hGR64HjsXZe2gSc\n", + "paorbc5bAWzF2qGkRVXHZi03jEj5pYw2RWbfOAdWLtjIHSc8x6HnD+Hoyw+iIhZM/2jmm/2thm38\n", + "9YbVbG9s3XGsS20F/+/q/q7E/Pj0ddx1zSoS8bbXNFYpnHv9Hu3EnE7quV/esJanb1hES2NbB2dV\n", + "bYxJV49wFHNmGbaPZVkcqnXlJ2z/9jkwcH+4+C6ozr5qnx3ZOvKCELLdsTCiZDCRsl8KFSmLSHdV\n", + "3Zb8/UJghKqea3Peh8Co5M5MOYnE6IuwF3vPxcCDd+OSfx/HO898wu+OeIpNK7b5LivbFPI5Mza1\n", + "EzLA9sZW5szc5KrsR6ataydkgERceeT29TnbM3/G8nZCBmhpTPDazOVA9lEk2V4/u40AVJX4/Q+w\n", + "feLhVP7HZGr+7zZqv/5lzpESqVEd6Te3dabamY6bNFTBhOyRzijkqJMScpJuwMYsp7v+YIlUR1/6\n", + "GyBq0XPPATtx0YvH8Pwtb3HzmMc58ddjGff/9kEk93Pt9gOnubnV/niT/fFMWlrso4EWh3LT6d68\n", + "gW1s5wu6tb+2qb2o/XQCQlvU+uaKPWi+2NoFpsuj/0fFiIPanZfPRqZO61jYPf92Qg40bZEL08FX\n", + "FojIz4EzgC9xTrgp8JyIJIA7VPXObGVGSsrpRFHQFbEKjvqfgzjgm3vw1zNeYvHjH3PaHYfQbbf2\n", + "K6P5fTNXV9t/camucfeFpqrK/gOiyqFcu7p3Si4LmpKz3epzKaF5zTVvfnoeiXNuos/3jmDA/b9n\n", + "SfNBHc7xSq4FhYIUsomSy5AP62FFvePDIjIHsFtY5kpVnaWqVwFXicjlwG+wMi6ZHKKqa0SkNzBH\n", + "RJaqquMiA5HIKXshKoJuaYrzxDULeG3mB/xkWn8OO7Gnq6g5G2HklHPVfcjVh2Zd7MjNTMD4Z9v4\n", + "5Ko72Tx7LoPvuZydjzjY/lwXO8nku6pboEIGk0suMIHllI906bnn/I2+EJE9gSdVdViO864FPlfV\n", + "WxzPKTUp21FMUWe+Yd94aSu/veAjdtmtkv/89UCGjO7mcKU73mrYxpyZm2huaqW6poKjTm8bfeEm\n", + "Ar9negt33Z6guVmprhbOvSDG2edXuXqOnOp2c62dnBPNcd7548ss+vkz7HXiQex005VU9nA/ksQP\n", + "XmTsdL7rtZL9RslmGJxroixlEdlXVd9L/n4hMFZVz8g4pysQU9VtIrIT8CzwU1V91rHcMKT8qVqz\n", + "5IolU0+btPpIPcTjylP3bOCea1dx8BE7c+7PB9BvL+8jCYJoi1v8PPdu5ayqfPToIuZf9g923qc3\n", + "Y24+kV7D+udVdzZyPU9uouNsxwNNW5go2RMRl/LDwP5YQ90+AP5TVdeLSH/gTlWdLCKDgUeSl1QC\n", + "f1fVX2YtN0wpp4hKSiJfvvw8wf03r+HRaes47rw+nH757nTbxX3aPowRKEHLecW89Txyyats3lbJ\n", + "mJtPZMDRBwTeDrfPUz7RcQpPQgYTJQdMlKVcKCIh5XTKQdAbVjVz9zWf0PD4ZiadtRsnTe3L7oM6\n", + "Rs5RGwbo9blPnd/aqix5ciX1ty1h7dubOfb6UYw7c58d47mLvYaJl22cnI5BuGkLMFIGI+XiVJhD\n", + "yumUuqDXfLidR29fx1P3bOCgr+/M/1z0BYdMrMi7Q7DQuH3eP98S5+m/bOS+339GbY8uHH7RUEZ+\n", + "dzBVXZyXPS2UoH2vcmeEHGmMlItRoQcpp1OKgk694T//XHnwbwnu+F2cqio478eVnHhKjJ13ibac\n", + "oePzrqp8uKSRx+9Yz3N/38Too3bh5Iv6cuDXuvGWeBvilo+g3a4/ku3bSNGEDEbKPjFSdnuRyEDg\n", + "r0AfrIHRf1LV34lIL+ABYC9gBfBdVd2cca0vKWcSNUm7SUWoKvXPtXLXtDgvv9jKuEMqmHxSjGNO\n", + "iNGnb3QF3dqqPPjqYF5+9DNefvRTtjcqR5+xKyf+qC99Btjvah326+NHxuBDyGCi5AJipOz2IpF+\n", + "QIE8bS8AAAwHSURBVD9VfUNEumH9252I9RxuVNWbROQyoKeqXp5xbSBSdqLQMggqD7x1q/LcUwlm\n", + "P9rK808nOGBYBZNPquBbx8cYvI+EnuJobFTm/auV2Y8mePKxBN13EY49Kcb+J+3H/qN28tS+Ygna\n", + "zWvjOTqGshMyGCk7UqpS7lCIyGPAtORtoqquS4q7XlWHZJyr+hp8NqpwYi41tm9X/vl8K088muC5\n", + "pxJsb4KRYyoYOaaCUWOtn06RdFaZpJHt+Y7HlXffVhbMb2XBq60snN/Ke0uVoQcJk0+MMfmkGPvu\n", + "33FWYKGG1XnB7Yekr+gYiipkMFFyJkbKfgoQGQS8BAwDPlbVnsnjAnyaup92vmrGP7MRdHvWrFYW\n", + "zrfkuGB+K2/MbaVbLYzYDwb0gf69YY/eyZ99oP9u0GsXcApem1tg7SZYtR5Wb7Buq5I/l22pYMmi\n", + "VnbfQxg5poKDkx8Cw0YItbXFi4ZzXe/3G0qu6womZDBRcgAYKXu92EpdvARcr6qPichn6RIWkU9V\n", + "tVfGNR2knI4RdEdRqMIHn8BbHySFuh5Wb2yT7KoNsOVzqKqEypj1s1WhJQ7xuFVG313TRJ4m9D37\n", + "wcj9ITXRLojnP8r55BS+ZQxGyEXESNnLhSJVwBPAU6r62+SxpUCdqq4Vkd2BF+3SF9f+oO1+3Sio\n", + "G21fR2cQtNv0Qy4SiaSEkz8rKtpL2k+KupQE7TaSzvl8hyBkMFJOsTR5S/EPApJyd5ee21aiUk6m\n", + "Ju4FNqnqf6Udvyl57Mbkqkk97Dr6skXKTpSLoIOScLEJ6vkPUtJeUhqunncj5MgRWKTcCaR8KPBP\n", + "4E2sIXEAVwCvAg8Ce5JlSJwfKdsRdVGXqoBzEfXnPZ1AZAwlL2QwUnZFqUo5rwoDlLIdxRZGuYrX\n", + "C1GUtOvXJUQhg4mSc9EZpRzZRe79YiRZfDKf87Ak7em1D0rGYIRsCJRwpJx6Q3jYrdhQOhRL0r4+\n", + "gN3IGMpGyIbSI9xIOf0NYgSdP26Fk6JIz7kbedqJO9BvPV6emzIScn3xqjIERHTSF0bQufEq3XzK\n", + "K/JrULC0UyFkDCUhZENpEh0pp2MEHbyAg6i/VF4LP89dEYRcbOrDbkAnQUQuAW4GdlPVT20enwT8\n", + "FogBd6nqjdnKi6aU08l8g5WKGLwQtoDdEmVR+30OvY4EykPIJm1RfiRXzDwK+Mjh8RjWmkBHAquA\n", + "+SLyuKq+41Rm9KWcSZTFkItSka8XnP6mQr4mQTyPfoZlloiQDUXlVuB/sCYf2jEWeF9VVwCIyP3A\n", + "CUAZSdmOMMTgRDmK1w9RfR6KLGMovpDri1tdp0VETgA+UdU3syxluwewMu3+J8C4bOWWh5SdiKoY\n", + "DMXH74QlI+TyYNsKhwfmkk0UIjIH6Gfz0FVYs5iPTj/d5jzPs/PKW8qGzk2+M0eNkDsB42n/lfq2\n", + "do+q6lF2V4nIMGBvYFEySh4AvC4iY1V1fdqpq4CBafcHYkXLjoQj5fQ3i8MKcQaDL4KYwh/A6AqT\n", + "Qy5vVPUtoG/qvoh8CIyyGX3xGrBvct351cCpwGnZyg4/Uk69iYycDX4Jai2VgIa6hSHk+uJXaWjP\n", + "jjSFiPQH7lTVyaoaF5GpwDNYQ+LuzjbyAsJakOgsFycaSQdHvtKK0mtRqMWsjJAjSWALEvGhy7P3\n", + "NgsSOWJSHO4o4Ip7edfh53Urxt+TToATQUzKwhAE0ZVyOplv1M4m6WKLKiii3O4ykXF9eFUbCkRp\n", + "SDkTuzd7OYg6yhIrFwKeIm2EbAia0pSyHdmEFhVhG+mGQ4HWqjBCNhSC8pFyNoLMiRqxlgYFXDQo\n", + "7NxxfbjVGwpM55CyX4yAS4sirN5mhGwoNEbKhtKmiMtohi1kQ+cgHCm/DowKpWZDqRPCWsZRkXF9\n", + "2A0wFIXwIuX0N5cRtCGTiCwkb4RcLtSH3QDXRCN9YQTd+YiIdJ2IioyhlHRiCIJoSDmdzDerkXQ0\n", + "ibhU/RIlGYMRcmckelLOxEi6sJSpXL0SNRmDEXJnJfpSzsRI2htGujkxQjZEidKTciZ20ulMojbS\n", + "9U0UZQxGyJ2d0peyHdlEVUrCNsINnKiKOEV92A0whE55SjkbXkQXtMCNZEMj6jIGI2SDReBSFpFJ\n", + "wG+xVtm/S1VvDLoOgPrPoa5bIUpOw4NEi9IeD5j2WNjJeC7hbHTuxFygKexGpLEUGBJ2I0oIEbkE\n", + "uBnYzWY7KERkBbAVSAAtqjo2W3kVATcuBkwDJgFDgdNE5IAg60hR/0UhSvWPaU92itmeFYvbbnZE\n", + "bZPz+8NuQAZLw25ACSEiA4GjgI+ynKZAnaqOzCVkCD5SHgu8r6orAETkfuAEIOueVAZDvpRCesKO\n", + "+rAbYMiXW4H/Af6R4zzXW0wFGikDewAr0+5/kjxmMBSEbBFx1KkPuwGGvBCRE4BPVPXNHKcq8JyI\n", + "vCYiP8hZbpAbp4rId4BJqvqD5P0pwDhVvTDtnOLu1GowGEqaYDZO9VefiMwB+tmcdhVwJXC0qm4V\n", + "kQ+B0aq6yab+3VV1jYj0BuYAF6rqy071B52+WAUMTLs/ECta3kHYO8UaDIbORT7OUdWj7I6LyDBg\n", + "b2CRiAAMAF4XkbGquj6jjDXJnxtE5FGsNK+jlINOX7wG7Csig0SkGjgVeDzgOgwGgyFUVPUtVe2r\n", + "qnur6t5YwefBmUIWka4i0j35+07A0UDWhFugUlbVODAVeAZ4G3hAVU0nn8FgKHd2pEhEpL+IzE7e\n", + "7Qe8LCJvAPOAJ1T12WwFBZpTNhgMBkN+BJ2+KBoicomItIpIr7RjV4jIeyKyVESOLkIbbhaRd0Rk\n", + "kYg8IiK7hNWWtHonJet8T0QuK1a9afUPFJEXRWSJiLwlIj9OHu8lInNEZJmIPCsiPYrYppiILBSR\n", + "WRFoSw8ReTj5f/O2iIwLuT1XJF+rxSIyU0S6FLM9IvJnEVknIovTjjnWH9b7qpiUpJTtBmyLyFCs\n", + "HPZQrMkrfxCRQv99zwIHquoIYBlwRYhtKerknSy0AP+lqgdiTZy7INmGy4E5qrof8HzyfrG4CCud\n", + "lvpaGGZbbgOeVNUDgIOw5mqE0h4RGQT8ACsXOhxrFu73ityee7D+X9OxrT+s91WxKdU/KDVgO50T\n", + "gPtUtSU5eeV9rF7OgqGqc1S1NXl3HlYPbChtSbJj8o6qtmBNFjuhCPXuQFXXquobyd8/x5o4tAdw\n", + "PHBv8rR7gROL0R4RGQAcA9xF2wD+sNqyC3CYqv4ZrD4YVd0SVnuwpv62AF1FpBLoCqwuZnuSQ8M+\n", + "yzjsVH9Y76uiUnJSzjJguz/th98Ve+LK94EnQ25LpCbvJCOxkVgfWH1VdV3yoXVA3yI14zfApUBr\n", + "2rGw2rI3sEFE7hGRBSJyZ7JHPpT2JNdpuAX4GEvGm1V1TljtScOp/rDf40UhkqvE5RiwfQXWsJId\n", + "p2cpKu9ezCxtuVJVUznKq4BmVZ1ZyLa4IDK9tiLSDfg/4CJV3ZYcywmAqmoxJhGJyLHAelVdKCJ1\n", + "ducUqy1JKoGDgamqOl9EfktGaqCY7RGRrwAXA4OALcBDyQlfobTHDhf1R+Z/PigiKWUfA7bH0XHi\n", + "yoDksYK0Ja1NZ2F9Pf5G2uGCtMUFOSfvFAMRqcIS8t9U9bHk4XUi0k9V14rI7sB65xICYwJwvIgc\n", + "A9QAO4vI30JqC1ivxSeqOj95/2GsIGNtSO0ZDTSkZqGJyCPA10JsTwqn1yes91VRKan0RZYB2+uw\n", + "Jql8T0SqRWRvYF/g1UK2R6xlSi8FTlDV9NUXi96WJKFP3hHr0/Ju4G1V/W3aQ48DZyZ/PxN4LPPa\n", + "oFHVK1V1YPJ/5XvAC6p6RhhtSbZnLbBSRPZLHjoSWALMCqM9WJ2M40WkNvm6HYnVIRpWe1I4vT5h\n", + "va+Ki6qW7A1YDvRKu38lVvJ/KfDNItT/HtYIkIXJ2x/Caktavd8C3k3WfUUIr8mhWPnbN9Kel0lA\n", + "L+A5rFEqzwI9ityuicDjyd9DawswApgPLAIeAXYJuT3/g/XBsBirU62qmO0B7sPKZzdj9Yecna3+\n", + "sN5XxbyZySMGg8EQIUoqfWEwGAzljpGywWAwRAgjZYPBYIgQRsoGg8EQIYyUDQaDIUIYKRsMBkOE\n", + "MFI2GAyGCPH/AYGcnmluYXhxAAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "plt.plot(x_MC,y_MC,'ok',alpha=0.75)\n", + "x_plot = np.arange(-50.,50.1,0.1)\n", + "print len(x_MC)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Quasi Monte-Carlo integration Hammersley in the Polar distribution" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def QMC_int2(f,seed):\n", + " dist_r = cp.Triangle(0,R,R)\n", + " dist_th = cp.Uniform(0,360)\n", + " dist = cp.J(dist_r,dist_th)\n", + " dist_U = cp.J(cp.Uniform(),cp.Uniform())\n", + " \n", + " sample = dist.sample(size=40,rule='M')\n", + " r = sample[0,:]\n", + " th = sample[1,:]+90\n", + "\n", + " x_MC = r*np.cos(np.deg2rad(th))\n", + " y_MC = r*np.sin(np.deg2rad(th))+H\n", + "\n", + " ind_in = np.where(r <= R)\n", + " \n", + " u_eq_QMC = np.mean(f(x_MC[ind_in],y_MC[ind_in],seed))\n", + " \n", + " return u_eq_QMC, x_MC[ind_in], y_MC[ind_in]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.63934519397\n", + "-0.00563847197049 %\n" + ] + } + ], + "source": [ + "u_eq_QMC2, x_MC, y_MC = QMC_int2(f,seed)\n", + "\n", + "print u_eq_QMC2\n", + "print 100*(u_eq_QMC2-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "40\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "AAAAAElFTkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "plt.plot(x_MC,y_MC,'ok',alpha=0.75)\n", + "x_plot = np.arange(-50.,50.1,0.1)\n", + "print len(x_MC)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "## Integration using Rossenblatt transformation and Gaussian quadrature Cartessian coord" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def PCE_int_cart(f,seed):\n", + " dist_x = cp.Uniform(-40,40)\n", + " dist_y = cp.Uniform(-(R**2.-dist_x**2.)**0.5+H,(R**2.-dist_x**2.)**0.5+H)\n", + " dist = cp.J(dist_x,dist_y)\n", + " dist_U = cp.J(cp.Uniform(),cp.Uniform())\n", + " \n", + " M = 4\n", + " P = cp.orth_ttr(M,dist_U)\n", + " nodes_U, weights = cp.generate_quadrature(M, dist_U, rule='G',sparse=True)\n", + " nodes = dist.inv(dist_U.fwd(nodes_U)) \n", + "\n", + " x_MC = nodes[0,:]\n", + " y_MC = nodes[1,:]\n", + " \n", + " sample_u_train = f(x_MC,y_MC,seed)\n", + " u_hat = cp.fit_quadrature(P, nodes, weights, sample_u_train)\n", + " u_eq_PCE = cp.E(u_hat,dist_U)\n", + " \n", + " return u_eq_PCE, x_MC, y_MC, weights" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.72844356419\n", + "3.36994675408 %\n" + ] + } + ], + "source": [ + "u_eq_PCE_cart, x_MC, y_MC, weights = PCE_int_cart(f,seed)\n", + "\n", + "print u_eq_PCE_cart\n", + "print 100*(u_eq_PCE_cart-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "53\n" + ] + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "plt.plot(x_MC,y_MC,'ok',alpha=0.75)\n", + "\n", + "print len(x_MC)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Integration using Rossenblatt transformation and Gaussian quadrature Polar" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "r_lns=np.linspace(0,R,100)\n", + "plt.plot(r_lns,cp.Triangle(0,R,R).pdf(r_lns))\n", + "#```" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def PCE_int(f,seed):\n", + " dist_r = cp.Triangle(0,R,R)\n", + " dist_th = cp.Uniform(0,360)\n", + " dist = cp.J(dist_r,dist_th)\n", + " dist_U = cp.J(cp.Uniform(),cp.Uniform())\n", + " \n", + " M = 9\n", + " P = cp.orth_ttr(M,dist_U)\n", + " nodes_U, weights = cp.generate_quadrature([3,M], dist_U, rule='G')\n", + " nodes = dist.inv(dist_U.fwd(nodes_U)) \n", + "\n", + " r = nodes[0,:]\n", + " th = nodes[1,:]-90\n", + " x_MC = r*np.cos(np.deg2rad(th))\n", + " y_MC = r*np.sin(np.deg2rad(th))+H\n", + "\n", + " sample_u_train = f(x_MC,y_MC,seed)\n", + " u_hat = cp.fit_quadrature(P, nodes, weights, sample_u_train)\n", + " \n", + " u_eq_PCE = cp.E(u_hat,dist_U)\n", + " \n", + " return u_eq_PCE, x_MC, y_MC, nodes, weights " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.64018099787\n", + "0.0260268356383 %\n" + ] + } + ], + "source": [ + "u_eq_PCE, x_MC, y_MC, nodes, weights = PCE_int(f,seed)\n", + "\n", + "print u_eq_PCE\n", + "print 100*(u_eq_PCE-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "40\n" + ] + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.contourf(x_mesh,y_mesh,F,20)\n", + "cb = plt.colorbar()\n", + "circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + "ax = plt.gca()\n", + "ax.add_patch(circ)\n", + "plt.plot(x_MC,y_MC,'ok',alpha=0.75)\n", + "print len(x_MC)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 0.26349922998554242692 , 4.79436403870179805864 , 0.00579798753740115753 ], \n", + "[ 0.26349922998554242692 , 5.13630491629471475079 , 0.01299684397858970851 ], \n", + "[ 0.26349922998554242692 , 5.71955352542765460555 , 0.01905256317618122044 ], \n", + "[ 0.26349922998554242692 , 0.20924454049880022999 , 0.02341643323656225281 ], \n", + "[ 0.26349922998554242692 , 1.10309379714216659885 , 0.02569988335562909190 ], \n", + "[ 0.26349922998554242692 , 2.03849885644762496284 , 0.02569988335562912660 ], \n", + "[ 0.26349922998554242692 , 2.93234811309099407950 , 0.02341643323656214179 ], \n", + "[ 0.26349922998554242692 , 3.70522443534172518653 , 0.01905256317618119616 ], \n", + "[ 0.26349922998554242692 , 4.28847304447466459720 , 0.01299684397858971198 ], \n", + "[ 0.26349922998554242692 , 4.63041392206758217753 , 0.00579798753740114539 ], \n", + "[ 0.57446451431535072718 , 4.79436403870179805864 , 0.01086984853977092380 ], \n", + "[ 0.57446451431535072718 , 5.13630491629471475079 , 0.02436599330905551281 ], \n", + "[ 0.57446451431535072718 , 5.71955352542765460555 , 0.03571902745281423097 ], \n", + "[ 0.57446451431535072718 , 0.20924454049880022999 , 0.04390024659093685194 ], \n", + "[ 0.57446451431535072718 , 1.10309379714216659885 , 0.04818117282305908744 ], \n", + "[ 0.57446451431535072718 , 2.03849885644762496284 , 0.04818117282305915683 ], \n", + "[ 0.57446451431535072718 , 2.93234811309099407950 , 0.04390024659093664378 ], \n", + "[ 0.57446451431535072718 , 3.70522443534172518653 , 0.03571902745281418240 ], \n", + "[ 0.57446451431535072718 , 4.28847304447466459720 , 0.02436599330905552321 ], \n", + "[ 0.57446451431535072718 , 4.63041392206758217753 , 0.01086984853977089951 ], \n", + "[ 0.81852948743000586429 , 4.79436403870179805864 , 0.01086984853977090992 ], \n", + "[ 0.81852948743000586429 , 5.13630491629471475079 , 0.02436599330905548505 ], \n", + "[ 0.81852948743000586429 , 5.71955352542765460555 , 0.03571902745281418934 ], \n", + "[ 0.81852948743000586429 , 0.20924454049880022999 , 0.04390024659093679643 ], \n", + "[ 0.81852948743000586429 , 1.10309379714216659885 , 0.04818117282305903193 ], \n", + "[ 0.81852948743000586429 , 2.03849885644762496284 , 0.04818117282305909438 ], \n", + "[ 0.81852948743000586429 , 2.93234811309099407950 , 0.04390024659093658826 ], \n", + "[ 0.81852948743000586429 , 3.70522443534172518653 , 0.03571902745281413383 ], \n", + "[ 0.81852948743000586429 , 4.28847304447466459720 , 0.02436599330905549199 ], \n", + "[ 0.81852948743000586429 , 4.63041392206758217753 , 0.01086984853977088737 ], \n", + "[ 0.96465960618086743494 , 4.79436403870179805864 , 0.00579798753740116100 ], \n", + "[ 0.96465960618086743494 , 5.13630491629471475079 , 0.01299684397858971545 ], \n", + "[ 0.96465960618086743494 , 5.71955352542765460555 , 0.01905256317618123432 ], \n", + "[ 0.96465960618086743494 , 0.20924454049880022999 , 0.02341643323656226669 ], \n", + "[ 0.96465960618086743494 , 1.10309379714216659885 , 0.02569988335562910925 ], \n", + "[ 0.96465960618086743494 , 2.03849885644762496284 , 0.02569988335562914394 ], \n", + "[ 0.96465960618086743494 , 2.93234811309099407950 , 0.02341643323656215567 ], \n", + "[ 0.96465960618086743494 , 3.70522443534172518653 , 0.01905256317618120657 ], \n", + "[ 0.96465960618086743494 , 4.28847304447466459720 , 0.01299684397858972065 ], \n", + "[ 0.96465960618086743494 , 4.63041392206758217753 , 0.00579798753740114886 ], \n", + "\n", + " r_node(1) = 0.26349922998554242692\n", + " th_node(1) = 4.79436403870179805864\n", + " weight(1) = 0.00579798753740115753\n", + "\n", + " r_node(2) = 0.26349922998554242692\n", + " th_node(2) = 5.13630491629471475079\n", + " weight(2) = 0.01299684397858970851\n", + "\n", + " r_node(3) = 0.26349922998554242692\n", + " th_node(3) = 5.71955352542765460555\n", + " weight(3) = 0.01905256317618122044\n", + "\n", + " r_node(4) = 0.26349922998554242692\n", + " th_node(4) = 0.20924454049880022999\n", + " weight(4) = 0.02341643323656225281\n", + "\n", + " r_node(5) = 0.26349922998554242692\n", + " th_node(5) = 1.10309379714216659885\n", + " weight(5) = 0.02569988335562909190\n", + "\n", + " r_node(6) = 0.26349922998554242692\n", + " th_node(6) = 2.03849885644762496284\n", + " weight(6) = 0.02569988335562912660\n", + "\n", + " r_node(7) = 0.26349922998554242692\n", + " th_node(7) = 2.93234811309099407950\n", + " weight(7) = 0.02341643323656214179\n", + "\n", + " r_node(8) = 0.26349922998554242692\n", + " th_node(8) = 3.70522443534172518653\n", + " weight(8) = 0.01905256317618119616\n", + "\n", + " r_node(9) = 0.26349922998554242692\n", + " th_node(9) = 4.28847304447466459720\n", + " weight(9) = 0.01299684397858971198\n", + "\n", + " r_node(10) = 0.26349922998554242692\n", + " th_node(10) = 4.63041392206758217753\n", + " weight(10) = 0.00579798753740114539\n", + "\n", + " r_node(11) = 0.57446451431535072718\n", + " th_node(11) = 4.79436403870179805864\n", + " weight(11) = 0.01086984853977092380\n", + "\n", + " r_node(12) = 0.57446451431535072718\n", + " th_node(12) = 5.13630491629471475079\n", + " weight(12) = 0.02436599330905551281\n", + "\n", + " r_node(13) = 0.57446451431535072718\n", + " th_node(13) = 5.71955352542765460555\n", + " weight(13) = 0.03571902745281423097\n", + "\n", + " r_node(14) = 0.57446451431535072718\n", + " th_node(14) = 0.20924454049880022999\n", + " weight(14) = 0.04390024659093685194\n", + "\n", + " r_node(15) = 0.57446451431535072718\n", + " th_node(15) = 1.10309379714216659885\n", + " weight(15) = 0.04818117282305908744\n", + "\n", + " r_node(16) = 0.57446451431535072718\n", + " th_node(16) = 2.03849885644762496284\n", + " weight(16) = 0.04818117282305915683\n", + "\n", + " r_node(17) = 0.57446451431535072718\n", + " th_node(17) = 2.93234811309099407950\n", + " weight(17) = 0.04390024659093664378\n", + "\n", + " r_node(18) = 0.57446451431535072718\n", + " th_node(18) = 3.70522443534172518653\n", + " weight(18) = 0.03571902745281418240\n", + "\n", + " r_node(19) = 0.57446451431535072718\n", + " th_node(19) = 4.28847304447466459720\n", + " weight(19) = 0.02436599330905552321\n", + "\n", + " r_node(20) = 0.57446451431535072718\n", + " th_node(20) = 4.63041392206758217753\n", + " weight(20) = 0.01086984853977089951\n", + "\n", + " r_node(21) = 0.81852948743000586429\n", + " th_node(21) = 4.79436403870179805864\n", + " weight(21) = 0.01086984853977090992\n", + "\n", + " r_node(22) = 0.81852948743000586429\n", + " th_node(22) = 5.13630491629471475079\n", + " weight(22) = 0.02436599330905548505\n", + "\n", + " r_node(23) = 0.81852948743000586429\n", + " th_node(23) = 5.71955352542765460555\n", + " weight(23) = 0.03571902745281418934\n", + "\n", + " r_node(24) = 0.81852948743000586429\n", + " th_node(24) = 0.20924454049880022999\n", + " weight(24) = 0.04390024659093679643\n", + "\n", + " r_node(25) = 0.81852948743000586429\n", + " th_node(25) = 1.10309379714216659885\n", + " weight(25) = 0.04818117282305903193\n", + "\n", + " r_node(26) = 0.81852948743000586429\n", + " th_node(26) = 2.03849885644762496284\n", + " weight(26) = 0.04818117282305909438\n", + "\n", + " r_node(27) = 0.81852948743000586429\n", + " th_node(27) = 2.93234811309099407950\n", + " weight(27) = 0.04390024659093658826\n", + "\n", + " r_node(28) = 0.81852948743000586429\n", + " th_node(28) = 3.70522443534172518653\n", + " weight(28) = 0.03571902745281413383\n", + "\n", + " r_node(29) = 0.81852948743000586429\n", + " th_node(29) = 4.28847304447466459720\n", + " weight(29) = 0.02436599330905549199\n", + "\n", + " r_node(30) = 0.81852948743000586429\n", + " th_node(30) = 4.63041392206758217753\n", + " weight(30) = 0.01086984853977088737\n", + "\n", + " r_node(31) = 0.96465960618086743494\n", + " th_node(31) = 4.79436403870179805864\n", + " weight(31) = 0.00579798753740116100\n", + "\n", + " r_node(32) = 0.96465960618086743494\n", + " th_node(32) = 5.13630491629471475079\n", + " weight(32) = 0.01299684397858971545\n", + "\n", + " r_node(33) = 0.96465960618086743494\n", + " th_node(33) = 5.71955352542765460555\n", + " weight(33) = 0.01905256317618123432\n", + "\n", + " r_node(34) = 0.96465960618086743494\n", + " th_node(34) = 0.20924454049880022999\n", + " weight(34) = 0.02341643323656226669\n", + "\n", + " r_node(35) = 0.96465960618086743494\n", + " th_node(35) = 1.10309379714216659885\n", + " weight(35) = 0.02569988335562910925\n", + "\n", + " r_node(36) = 0.96465960618086743494\n", + " th_node(36) = 2.03849885644762496284\n", + " weight(36) = 0.02569988335562914394\n", + "\n", + " r_node(37) = 0.96465960618086743494\n", + " th_node(37) = 2.93234811309099407950\n", + " weight(37) = 0.02341643323656215567\n", + "\n", + " r_node(38) = 0.96465960618086743494\n", + " th_node(38) = 3.70522443534172518653\n", + " weight(38) = 0.01905256317618120657\n", + "\n", + " r_node(39) = 0.96465960618086743494\n", + " th_node(39) = 4.28847304447466459720\n", + " weight(39) = 0.01299684397858972065\n", + "\n", + " r_node(40) = 0.96465960618086743494\n", + " th_node(40) = 4.63041392206758217753\n", + " weight(40) = 0.00579798753740114886\n", + "\n" + ] + } + ], + "source": [ + "for i in range(len(weights)):\n", + " print '[', '{0:0.20f}'.format(nodes[0,i]/R), ', ', '{0:0.20f}'.format(np.mod(np.deg2rad(nodes[1,i]-90.),2.*np.pi)), ', ', '{0:0.20f}'.format(weights[i]), '], '\n", + "print \n", + "\n", + "for i in range(len(weights)):\n", + " print ' r_node('+str(i+1)+') =', '{0:0.20f}'.format(nodes[0,i]/R)\n", + " print ' th_node('+str(i+1)+') =', '{0:0.20f}'.format(np.mod(np.deg2rad(nodes[1,i]-90.),2.*np.pi))\n", + " print ' weight('+str(i+1)+') =', '{0:0.20f}'.format(weights[i])\n", + " print\n", + "\n", + "#print nodes[0,:]/R\n", + "#print nodes[1,:]\n", + "#print weights" + ] + }, + { + "cell_type": "code", + "execution_count": 446, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAQgAAAD7CAYAAACWhwr8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJztnXmYVNW1t991aq7qbqChZVBAEAFBEAEjRCPGkWjiEDAi\n", + "TlFjEjXXXIcYTeIUY2K+eJ1BM3tVVBxwjijilKtGBARxQlFBJgFBoLu65lrfH+c0NEhDQ1fV6VO1\n", + "3+epp+miau9fDefXe6+991qiqhgMBsO2sNwWYDAY2i/GIAwGQ4sYgzAYDC1iDMJgMLSIMQiDwdAi\n", + "xiAMBkOLGIMwGAwtYgzCYDC0iDEIg8HQIsYgDAZDixiDMBgMLWIMwmAwtIgxCIPB0CLGIAwGQ4sY\n", + "gzAYDC3id1uAof0hIn6gK9Ad6OH8bPp3ZyCA/d1puvmArHPLOD+TwBfASmCF87Pp3+vVJCLxBGI+\n", + "p8pERAToA4xwbvsCu2MbQWfgS7a8qJt+rgXSbDaCLJBnS8PwA1GgG1uaTNPPILZ5rAA+B+YCc4C5\n", + "qrq+qC/csFMYg6gAtmEGI4HhQCP2hTkHeAdYhn3RrlbVbBH1xNg8KunraBkBDMM2jtnNdBnTcBFj\n", + "EGWKiPQBjgO+A3yDLc1gDjBHVb9wT+HXEREfMJDNRtbcNP4PeBJ4XlUbXBNZYRiDKBNExMI2gu9h\n", + "G8NuwDPA08Dr7c0MWksz0zgM+3WNAv6NbRZPq+oyF+WVPcYgPIyIRIEjsC+c72LHB550brNUNeei\n", + "vKIgIh2Ao7Ff8zHAZ2x+zfNM8LOwGIPwGE484WDgPGxTmI19cTylqp+4qa3UiEgAOAh71HQ8dvDz\n", + "78BfVXWFm9rKBWMQHkFEqoFTgfOBEDAZuFdV17kqrJ3gGOdQ4KfABOAF7PfoZTOq2HWMQbRzRGQw\n", + "9mhhIvAS9pf+RfOlbxkRqQFOxzZTAe4E7lHVDa4K8yDGINohztD5ROwv+ADgr8BfTEBu53BGFYdg\n", + "v49HAQ8Bk1V1vqvCPIQxiHaEE7E/BbgOewPRJOBxVU27KqwMEJHuwI+An2BvzPqVqr7rrqr2jzGI\n", + "doDzl+4Y4AbsbczTgEmqutxVYWWG8z4fCvwYe0TxNHCVqi5xU1d7xhiEy4jIN4E/At18Pl/nrl27\n", + "+jp06GAtWrTIr6q/yGQyd7itsRwQkUgoFJoRDof36927t3z88ceSSqUW5/P5bsC9wPWqusZtne0N\n", + "c1jLJURkX+B67J2CV4dCoXMPO+ywvocccogFsG7dOm655ZY/iciTqvq5q2LLAJ/Pd+mee+45/Iwz\n", + "zohYlkUmk2HSpEm9V61adSkwGPhARG4DblbVepflthvMce8SIyI9RORuYCbwMnYQ8v50Oj1q9OjR\n", + "mz6P2tpa9tlnnzz2VmlDGwkGgxO+9a1vRSzLfosDgQAHH3xwLBKJfEdV/wt7F2p/4CMRucCJB1U8\n", + "xiBKhNicDszDPhnZX1VvVtUkkLMsK5NIJLZ4Tn19fQ4wS3OF4at4PL7FHQ0NDflcLrcOQFU/VdXT\n", + "gLHAScCrIjKg9DLbF8YgSoCI9MDe7fgLYKyqXtF8TV5Vc36//x+PPPJIor6+nlwux6xZs3TZsmVZ\n", + "4Cm3dJcTiUTixmeeeabxiy++QFX57LPPePnll5PpdHpS88c5S6CHAQ8Ar4nIJZU8mjBByiLiRM1P\n", + "A/4HuAv4XUtLliISCoVCd2Sz2dMBKxAIfJBMJk9T1QUllFzWBAKBn4nIdaoatSzrq0wmc0E+n3+0\n", + "pceLyF7YW7cDwNmqurBkYtsJxiCKhLPu/mdgT+CHqjq3lc8LASFV3VhEeRWLMxqoATaoar4Vj7ew\n", + "N1pdA/wBuKUcD8G1hJliFJhmsYb52PGGka01BwBVTRlzKB6qmlPVr1pjDs7j86p6B3Ag9gnSiopN\n", + "mBFEAXEyJf0D2IedGDUYvIEzmrgAuBq4RFX/12VJRccYRIEQkd7AE8DbwHnO6oShDBGRQdhB5yeA\n", + "XxYzPZ/bmClGARCRbwH/Ae7GDmYZcyhjVPV97H0T+wFPi0hHlyUVDWMQbUREzgUeAc5U1VvMMezK\n", + "wMnDMRZYCLxZrnEJM8XYRZwj2TfjpHxT1Y+K3F9TZupGr+aXLBXOSkVfYJ2qri1Bf2djH7Q7U1Wf\n", + "LXZ/pcSMIHYBEekMPId9wR5YAnMYBiwC3gUWi8hMEaktZp9eRUQOB5Zjx4KWi8hUEQkXs09V/Qd2\n", + "/o6/OxurpJj9lRIzgthJRGQgdrboR7BzChR1TdzZF7EC6ISdHQnswjUvqerYYvbtNUSkK/AJEGt2\n", + "dwL4h6r+rAT99wIeBxYAP1LVTLH7LDZmBLETiMgQ4EXso8G/LNGGmSOxT902/6sUBL5dzsGxXWQ8\n", + "W75PABHgh6Xo3Dl1ezBQCzzsmLunMQbRSkRkBDADuMgZUpaK7X3JzHH9LQlh1wndmkCpBKhqIzAO\n", + "uyTh4yISKVXfxcAYRCsQkdHAs9j7G6aWuPsZfN0I8sACVf2yxFraO49jvzfNSWPvVygZznmbCcA6\n", + "4BkRqSpl/4XEGMQOEJFR2F+wH6rqY6Xu39l2fRLQAGwE6rFraP6g1FraO6r6KXAhdtxhA/Z79iH2\n", + "WYpSa8kCZ2AX9nnGKXLkOUyQcjuIyHDskcNZqvovl7VEsTM0N2CX0mvVWYJKREQ6Ad8EVmHXIHXt\n", + "S+5sz/4ndmXz73ltE50xiBZwApIzsKcVJR85GMoHEfED9wFVwPe9lKXcGMQ2EJH+2OngLlbVB12W\n", + "YygDnI11DwE54GSvHBk3MYitcIanzwBXG3MwFApnT8QE7P0sN7gsp9WYEUQznKHgv4D3VPUit/UY\n", + "yg9nF+6bwG9V9R639ewIYxDNEJGbsVOgH1POR3gN7uLUW30JO2j5ptt6toeZYjiIyFnAsdjzQ2MO\n", + "hqKhqu8B5wCPisjubuvZHmYEwabqVo8DY1T1A7f1GCoDEbkC+5DXGFVN7OjxblDxBiEiPbHnhD9y\n", + "e6+DobJwTn3ej72ycXp7zCVS0VMMZ/PR49iZio05GEqKYwjnYOcw/YXLcrZJRY8gRORe7NN/7dK9\n", + "DZWBM4r9D3a6wufc1tOcij0NKCLjsPMK7m/MweAmqrpURM4A7haRIaq63m1NTVTkCEJE6oB3gHGq\n", + "+rrbegwGABG5E7to0tlua2miUg3iQWCZql7qthaDoQkRqcb+w3VBe4mJVVyQ0pla7A9c6bYWg6E5\n", + "qlqPHbT8c3vJFlZRI4hKmlqISBCwvHa8uCWcJcEYdlbvsj7qLiKTgXB7mGpU2gjidmBKOZuDiHQU\n", + "kWnYeSPqReQ5Eenmtq62ICLHAJ8DXwFrReS/XJZUbC7Dzjl6jNtCKmYE4Uwtfg8Ma6+71gqBiLwI\n", + "HISd2BYgg13cZagXV2tEZF/sjWzNMzLFsZP4POyOquIjIocB/wu4uqpRESMIEekC3IH9pSpnc+gJ\n", + "jGazOYCdsLUPdpk4L3IeW74esKcal7mgpWSo6ovAU9jFmVyjIgwCuAp4pJynFg4dsLMpb00OaBdB\n", + "r12gC9ver+PV17MzXAYcJSIj3RJQ9gYhIn2AU4Hr3NZSAj4AGrdxv4U9TPcij2BPKZqTcu4va1S1\n", + "Afgt8Ae3NJS9QWC/wber6mq3hRQbJ41ZUwbseudnApjo4anVo8DT2MbXiP263sOOJ1UC/wB6i8gR\n", + "bnRe1kFKERkKPA/s7awxVwQi0gH4LvbQ/OlSFLAtNiKyP/bW+I+Bl8t9qbM5IvID7OnGAaUONJe7\n", + "QTwNPK+qt7mtxWDYVZzU+W8BN5R65aZsDUJEvgXcAwxU1ZTbegyGtiAiRwKTgMGlLApcljEIZ9fd\n", + "DcBVxhwMZcILwFLgrFJ2WpYGAXwPqMbO1mMweB4n9nA5cHUpy/iVnUE487XrgV95pTiJwdAaVPUt\n", + "4HXgZ6Xqs+wMAjgMu8LzM24LMRiKwPXAz5waLkWnHA3ifGCSF88dGAw7QlXnYVd3P7YU/ZXVKoaI\n", + "7AHMB3o7u9AMhrJDRE7DzqN6dLH7KrcRxI+xj3MbczCUM48A+4vI3sXuqGxGEE6ClCXAYab4jaHc\n", + "EZEbgICqXlLMfsppBHEC8IExB0OF8GfgzGIveZaTQVwATHZbhMFQClT1M+xaGhOK2U9ZGISTdagf\n", + "8ITbWgyGEjIZuMDZOVwUysIgsLMO/bWUe9QNhnbAc0An4IBideB5gxARHzAeO3+fwVAxODuF7wV+\n", + "UKw+PG8Q2DkCVjlzMoOh0ngCOL5Y04xyMIjjsJN7GgyVyNtABBhQjMbLxSCedFuEweAGzpGCp7Cv\n", + "g4LjaYMQkb2AztjZdgyGSuVJ7BQHBcfTBoH9pjxVSfkJDYZt8BIw1CktWVC8bhBmemGoeJz6qy8A\n", + "BS/V51mDEJFOwEhgpttaygURmRiJRD4IhUJfhsPhB53TsYVs/5hIJPJ2KBRaG4lEnhGRgYVsv8Ip\n", + "ShzCs4e1RGQiMEFVixKcqTR8Pt/ZVVVVt48bNy5aW1vL7Nmzc6+//vrqTCbTT1W3VYxnpxCRsZFI\n", + "5NFx48ZFu3fvzoIFC3TmzJkbM5nMQFX9ohCvoZJxpheLgK6FrOju2REEMBaTNapgBAKBa0855ZRo\n", + "//796dKlC2PHjvX16tWrGnsTWpuJRCK/PeGEE6KDBw+mtraWMWPGyNChQ0OWZZ1TiPYrHVVdg11Q\n", + "6KBCtutlgzgA+I+IDBCRU0XkgGLuSS93MpnMbt26ddvivt133z0K9CpE+/l8vufW7ffo0SMcCAT6\n", + "FaL9SkREIiJyvIiME5Fq7PKKBd127UmDcN6MXsFg8OfhcPjtIUOG3FlTU/NSOBx+SUQibuvzIsFg\n", + "cM78+fM3zTczmQzz589PAK8VqItX5s+fvymJcD6fZ+7cufFUKvVCgdqvKETkgEAgsGLPPfe8p1+/\n", + "fv/w+/0rsWuWjihoP16MQThFcf5eV1fX4/LLL4+Fw2FyuRx33XVXYuHChTdks9nfuq3Ra4jIsEAg\n", + "8OrQoUMDdXV14VmzZsXj8fjzqVRqXCHye4rInoFAYPaAAQMiPXv2jM6bN69h3bp176RSqW+raroQ\n", + "r6FSEBErFAotOe200/YYPnw4AIsWLeL222+PZ7PZNarap1B9lSQzbhEYYVmWdfjhh8fC4TAAPp+P\n", + "o446KrJ48eKJ2AV7t4uTHv9AIAS8XulfUlWdJyL9586d+0O/3797JpN5DvhXoZL/qupiEdn7vffe\n", + "O3PhwoV7ZzKZV4Fp5gQuiEgPYAiwUFUXt+Ip/QOBQKf9999/0x39+vWjrq4ut3Llyt1EpFZV1xVC\n", + "m2cNQkRWxOPxPjSbJjU2NoJd/Xm7iMjeIjLDsqxaEdFsNpsXkeNV9dUiam73OKsJNxSx/a+AW4rV\n", + "vtcQm5uAnwYCgVQ2mw1ZlvWoqp65g5ou8Uwm48vlcvj99iWsqiQSCQtYCAzH3hfRZjwZgwBG5nK5\n", + "yTNmzEh+9pl9iHP16tU8+uij8cbGxpt29GQReay6urpnXV1ddV1dXU1tbW1H4CkRCRdbuMHQjBMs\n", + "yzq3a9eu4S5dunTYbbfdwn6//0Ts5MstoqpLRWT2tGnTMul0mkwmw/Tp03OJROIL4BXs/UEFwXMx\n", + "CCdA+QXQ0bKs7/v9/jtEJJbP53Micn06nf7j9obFItJTRD7q2rVruPmix5o1azZks9mTVfW5ErwM\n", + "gwHLsp6oqak5LhrdnFYymUyyfv36Ofl8frsXuYh0iUQiUzKZzKEAgUBgbiKROBk4BDheVU8qhEYv\n", + "TjGGAe86c9epIvIIUAesa2UcIQtsazlUgIqfDxtKSnrrv2XO7zv8Hqrql8DRItIB8GUymXUAIjKb\n", + "VsTgWosXpxgjgDlNv6hqTlW/aG2QUVVXAnPr6+uzqoqq0tjYqLlcLgUUNAYhIjUi0sfJemXwKCJS\n", + "XYzPUVX/3NDQEM9mswDkcjnq6+vjqjppJ9rYsFVA8iOgi4jUFkKjFw1iEPBuWxpQ1XGNjY1vr1q1\n", + "KrFq1ar4xo0bl6jq4aqaLYRAEfFblvUXYJWIvCsiK0Sk4AdpDMVFRHyWZU0GVjuf4xciUrCt/ar6\n", + "Qj6fv2rNmjWNq1at2rh69epkPp+/A5jShjbzwPvAPoXQ6MUYxFPA31S1zRmsRaQ39jLnx4Ws5Ski\n", + "1wQCgV/U1tZGLcsilUrx1VdfNarqIFVdUqh+DMVFRH4VCAR+3alTp6jP5yOdTrNu3bpGVd1PVRcV\n", + "sJ8Y0Bf4XFU3FKC9acD9qvpIW9vy4giiB7CiEA2p6hJV/ajQhX5F5KcdOnSIWpb99oZCISKRiB84\n", + "tZD9GIqLiJxfU1MT9fnsmUUwGCQSiQSA0wrZj6rGVXVBIczBYQX2ddJmvGgQ3YGVbovYAaGtj4U4\n", + "81ezDdxbfO1ztCzLBxS1mlUBWIl9nbQZTxmEc5HVAavc1rIDHmloaEg1DUxyuRyNjY0p4FF3ZRl2\n", + "koe2/hzj8XgSu3hue2YlBRpBeG2Zczfs5cx2vRypqr9IJpP7p1KpAX6/P59Op4PAtao6z21thtaj\n", + "qlekUqkRq1ev3tfv9+ecz/H3qjrLbW07YAUFGkF4zSC8ML1AVdeLyAGqOjKdTu+BfdajZKMeEdnL\n", + "5/Od5fP5atPp9GPAC4WOs5QSZ5nxjGAwuH8qlfoPdgCuzUlsdoSqbhSR0ao6Ip1O9wT+4yyTt3cK\n", + "NsXw1CqGiHwXOF9VzZJhC4jIEcFg8ImDDjooUFNT43/llVcaE4nEPclk8ny3te0KIlIXDAbn9u/f\n", + "v3bgwIHRd955J75kyZLlqVTqAFXd6La+9oiTXepDVe3c5rY8ZhDnAqNU1WQh2gYiIuFw+LOzzjqr\n", + "97777gtAIpHgyiuvTCQSiRGq+oHLEneaYDB44wEHHPBfp556ahDsnYZ/+ctfEu++++61uVzuj27r\n", + "a484J5WTQLWqptrSlqeClBRwibNMqc5kMj0GDx686Y5IJMKgQYPywDfdk7XrBIPBI0eOHBls+l1E\n", + "+MY3vhGJRCJHu6mrPeNslvqCAkwzvGYQnYCCnHMvUxoty0qtWbNm0x2qytKlS/PAYtdUtYF8Pr9o\n", + "+fLlWwxzly5dms1kMgvd0uQR1gFt3m7tNYMIYA5UtYizVfyGO++8M75w4UJWrFjBfffdl96wYcPn\n", + "2MVVPEcikbj+qaeeSrzxxhusWbOGV199VV988cVkOp3e4bH+CicDtPnsiNdiEH8G3lbVu9zW0l5x\n", + "kpCcGw6HL1XV6nw+/1g6nf61k6zFk4jI6EgkckM+nx9kWda8RCJxmaq+7bau9oyIvAFcrKpvtKUd\n", + "ry1z+jEjiO3iLGf+xbmVBc6XfIzbOjxGFnvE3Sa8OMUoyIlLg6HMyVKAAYDXDEIA78yJDAb3yFOA\n", + "69trBpGlAIEXg6ECKMh03IsG0eZ5lcFQAfgpwHTcawaRwXuBVYPBDSrSIMwIwmBoHQUJ6HvNIBqB\n", + "mNsiDAYPEAMSbW3EawZRsGOsBkOZ050CnFsyBmEwlBkiUoU9xWhzjksvGkRBUmkZDGVMd2BlIZIE\n", + "ec0gCpZKy2AoYwoyvQDvGcRKoLtsnWrYYDA0p2CpGT1lEE4ewiR2XghDKxCRmkAgcHVNTc3sWCw2\n", + "TUQOdFvTjnAqWv24urr69erq6pkicoLbmjxGwRIreXHTUVOg0iSO2QEiEgyHw/8ZNmxYnyOPPDK8\n", + "YsWK4ffff//RInKCqs5wW19LRCKRKT169Pju+PHjY8lkkvvuu+/AUCh0XSqVMinmWkfBRhBeNYge\n", + "wHtuC/EAJ+6xxx49L7vssrCIMHz4cOncuXN00qRJNwFD3Ba3LUSkfzQaPe7666+PhEIhAAYOHBi7\n", + "8MILrxKR21S1zWv7FUDBrg9PTTEcTKCy9QweMWJEVfOQzZAhQ0ilUv1c1LQjBu21116ZJnMA6Nat\n", + "G5FIJI9ZwWotFRukBDu3Ynv+grcn3pk1a1ZD89Wu+fPnEwqF2nM+xwWLFi0KJBKbBwrLly8nmUwC\n", + "LHdNlbfoR4FykHoq5RyAiHwfOEdVj3VbS3tHRAKRSOStgQMH9j/qqKMiK1asyD/88MPJZDJ5rKq+\n", + "7La+lohGo3fX1dWNHzduXCyZTPLAAw/E4/H4r9Pp9K1ua2vviEgX4BOgk5Pdum3tedAgegGzgO5e\n", + "rhZVKkQkZlnWebFY7LhsNrskkUj8T3svAejUdTi1qqrqTFVtjMfjk1T1Obd1eQERORq4XFW/XZD2\n", + "vHaNOXsgVgPDVNUMOQ2GZojIr4BaVb20EO15LgbhjBrmACPc1mIwtENGYF8fBcFzBuFgDMJg2DYj\n", + "MQbBbIxBFAUR2Ssajd7asWPHZyzLOl9EIgVqt180Gr3Nafe8QrVr2IwToOwILCpYm16LQcCmQOWb\n", + "qmr2QxQQERkRDodfPuWUU0L9+/cPPP74443vvvvuwng8PkpV021od2Q4HH5p4sSJoX79+gUee+yx\n", + "xvfff/+DeDw+WlVNnZMCUegAJXjXIJoClfupqinmWyBqampeufjiiw856aSTAMjn85xyyikN7733\n", + "3rmq+mDT40QkDHwHqAKeU9XVIjISGAosAGY3X2Gqqan59yWXXHLw+PHjN7U7YcKEhvfff/8cVX2o\n", + "dK+wvCl0gBI8OsVoFqgc6baWciKTyQw75JBDNv1uWRZHHXVUVTAY3HTAS0SGRCKR5aNGjbr72GOP\n", + "nRwOh5dEo9F5Xbt2fXnChAm3devW7aWamppnRWRTRe50Or3fmDFjtmj3yCOPrAoEAt8o1WurEAoa\n", + "fwCPGoTDK8ARbosoJwKBwCfz58/f4r4333wznk6nN+3rr6mpefC2227r9MYbb9Q8/fTTVbNnzw4D\n", + "+7399tuxBx54ILZkyZLYvvvu+y0R+VHTc4LB4Kfz5s37WruZTOb9Ir+kikFEAtjlCV8taMOq6skb\n", + "MBh7O6m4raVcbsCRsVgsfs011+i9996rJ510UioSiSwFYs7/10UikVQ2m9XmjB07VqdOnbrp92nT\n", + "pmltbe1rzdo9OhaLxa+99lq99957dfz48alIJPJ5U7vmVpDP7lDsqV1B2/Xiac4m3gdy2KcS33FZ\n", + "S1mgqjNE5OibbrrpSmDPdDo9PZlMXq+qcechyXw+T0NDAx06dNj0vDVr1mzx+5dffkk+n1/XrN3n\n", + "RGTsjTfeeKWI9E6n089u1a6h7RwHPFnwVt12vja65s3Ab9zWsQu6A5ZlXen3+5f5/f6VlmX9CYi6\n", + "ras1tw4dOjw0fvz4xNq1azWVSumNN96Yr6qqyr/xxhuqqjp79mzt0qVLA3C421pb+VkM9fv9z/t8\n", + "vnV+v/8tr+je6jUI9tLmsEK37clVjCZE5NvAH1XVU8GuQCBwd3V19UmDBg2KWpbFwoULk+vWrft3\n", + "JpM5ym1tO0JEYjU1NX9NJBLjAIlGo283NDQ8HA6HL8/lctU+n68hlUpdkslk7nZb644Qkd6WZb07\n", + "cODAWNeuXWX9+vUsWLCgMZvNjlXVf7utr7WIyCBgOtBbC3xBe90gAsAqYF/1yHKniHSxLGvpEUcc\n", + "EQ4E7CJh+XyeGTNmJLLZ7HBV/dBlia3CWeoMqGq987sFdAA2aAFOEZYCn8/3p169el04ePDgTSsu\n", + "S5cu5f3335+ZyWQ8EwAXkcuBnqp6QaHb9vIqBmpvspkOeOnod7dgMJhpMgewl/1isVga6OmerJ1D\n", + "VZNN5uD8nlfVr7xiDgA+n2/vmpqaYPP7qqurEZE93VG0y3yPYsQf8LhBODyJHaDxCh+n02ndsGFz\n", + "TZPGxkbq6+tDwFz3ZFUemUxm+vLlyxubj6KXL1+eyefzL7goa6cQkd2wV/ReLkr7Xp5iAIhIR+Bz\n", + "7PwQnoiKW5Y10bKsv/Xu3TtgWZa1ZMmSZC6XuzKXy93ktrZKQkQiPp/v9erq6n7du3evWrt2bXzt\n", + "2rX1uVxuuKoWJOlrsRGRs4BjVPWkorTvdYMAEJHngb+r6lS3tbQWERkkIqeLSCCfzz+oqrPd1lSJ\n", + "iEgIGO/z+Q7K5XLvAfeq6ka3dbUWEXkWmKKq9xWl/TIxiJOAC1T1ULe1GAylQkT2At7EDlAWJdt3\n", + "OcQgAB4H+ovIYLeFGAwl5CfA3cUyByiTEQSAiFwLdFbVn7mtxWAoNk4+jc+B0apasPwPW1MuIwiA\n", + "vwITRaTabSEGQwk4CZhTTHOAMjIIVV0GvASc6rYWg6EEnA9MLnYnZWMQDpOB8031b0M5IyIjsKtn\n", + "PVPsvsrNIF4EgsBBhWxURA4MBAJ3BwKBaSIy3hiQYXuISGfLsq4MBoP/8vl814hIXYG7OA/4s6rm\n", + "Ctzu1yibIGUTInIhMEpVJxaiPcuyTvP5fH/u169fOBAIWJ9++mk8mUxOzWaz5xSifUN5ISK7+Xy+\n", + "+d26detYV1cX/vLLL5MrV66sz+Vy+xVi85WIdAI+BQao6uq2K95Bf2VoEB2x38Bhqvp5G9vy+3y+\n", + "1aNHj+7UlO8gm80yc+bMRDabHaaqHxVAsqGM8Pl8f9h9990vGjp06Kbqw++++2566dKlk3O53EVt\n", + "bV9EfgkMVdWSxNrKbYqBqq4H7gSuKUBz3UQk3DwZit/vp7a2NgsML0D7hjLD5/Md0rVr11Dz+7p2\n", + "7Rr0+Xzfamvbzh+/S4HftbWt1lJ2BuHw/4DvOufk28KafD6fj8c3H/HI5/OsX7/eAtpzhWyDS+Tz\n", + "+XfWrVu3RSr/r776KpvP5wuR9ewy4ElV/aAAbbWKsptiNCEilwAHq+qJbWnH7/dfHgwGf7PPPvvE\n", + "AoEAixYtSmzYsOH/vJDcxVB6RKSPZVnz+vXrF+vSpYtv7dq1+Y8//rgxn88PV9WP29BuD+ySAsNU\n", + "dWnhFO+g3zI2iDDwEXCyqr7RhnYEODkQCFwExLLZ7H2qerOqpgql1VBeiEh/v99/tYgcoKpzs9ns\n", + "tW39qy8idwJxLWDNi1b1W64GASAiZwNnAocWOhWXwVAqRGRv4A3slYu1pey7XGMQTdwD7AaMbbpD\n", + "RLqFQqH/qampmR2NRu8WkQHuyTMY7FGqiIyvrq5+sbq6+t8i8kMnhV8T1wE3l9ocoMxHEAAiciJw\n", + "NfaqQ6dQKPTeoYce2mnUqFHBhQsX5qZNm5ZIp9OjVfVdl6UWHBE5MRKJ/C6Xy+1uWdZryWTyYlX1\n", + "THDVsqykrsuLAAAQTklEQVSJ4XD46mw229Xn873k6P/MbV2FJhwOX9uhQ4dLJk6cGAsEAkydOjW+\n", + "Zs2aBxobG891dk0+BeztRkKkSjAIwR6e3e7z+XofdNBBv7nooos2VZZ+/PHH8w8//PAT8Xj8++6p\n", + "LDwickIsFptyyimnRHv06MHbb7+dnz59+sZMJtNfVde4rW9HWJZ1RnV19Z0TJ06M1tXVMWvWrNyL\n", + "L764LpPJ9PNSQpcdISI1gUDgizvvvDPSuXNnwE5BePbZZydTqVR/4O/AY6p6pxv6yn2KgRN7uAy4\n", + "IRwOf3PYsGFblJ0fMmSIJSL7uaOueEQikd9OmDAhOnjwYDp16sRhhx1mDR06NGRZ1plua2sNoVDo\n", + "2tNPPz06YMAAamtrGTt2rG/vvfeOAhPc1lZg9uzYsWOmyRwAotEovXr1SgHnAL2Bv7klruwNAkBV\n", + "XwWejsfjXefMmbNFco158+blVbXsksXmcrke3bp12+K+3XffPeLz+fq6JGmnyGazXbfWv8cee8RE\n", + "xDOZv1vJZ+vXrw+sWbN5UBePx1m8eHEI+8zF2U72dleoCINwuAzo+uabbzbefvvtqbfeeov77rsv\n", + "+9BDD8UbGxuvcltcobEs69U5c+ZsSkGfy+WYNWtWQyaTmemmrtYSCATemDNnzqb5bzabZfbs2Q2O\n", + "2ZcNqlovItdfccUV8RdeeIFXXnmFX/7yl/FcLrcMO9fka27qK/sYRHNE5HDgHr/f/0AkEhmdyWQW\n", + "JJPJP6nqJ25rKzQi0jcQCMzaZ599Ij179ozOnj27Yf369bNSqdTRqprdhfYOrqmpuTWRSAyKRCKf\n", + "bty48RJVnb7VYwLhcPi3lmWdm8/ngz6fb1o8Hr9IVb/ahf4GBQKB14cMGRLs1q1bZNasWQ319fUz\n", + "U6nUieW4ZC0i34vFYueJSLChoeEd4LvYm6IaXRVW6Fp+7f2GfU7j727rKNFr7QT8l9/vvwU4AfDt\n", + "YjuDIpFIw6233qrz58/Xv/3tb1pVVRUHDmr+uKqqqn+OHj26ccaMGfraa6/pySefnKqqqprLLlZg\n", + "B7qIyMV+v/9m4BjAcvs9LcFn1gVYufV769atokYQAE5KugXAear6rNt6vEBVVdXffvzjH//wv//7\n", + "v31N902ZMkVvuOGGf23YsOG7ACLSIRQKrZo1a1aoY8eOgH1uZdSoUfFVq1Z9W1Xfckm+pxCRB4AV\n", + "qnqJ21qgsmIQgD3nw44O/0VEOuzo8QYIBAK9+vbt62t+X58+fcSyrN7N7uociURyTeYAdknBPffc\n", + "Mwf0KJFUTyMi38fer/Mbt7U0UXEGAaCqM4GnAVPJqhVs3Ljx6QcffLAxn7djnqrKgw8+mEokEk81\n", + "e9iSdDrd8Nprm2Nqy5YtY968eSHg9dIq9h4i0gWYBJylRUxjv7NU3BSjCWeq8Q5wqao+6rae9oyI\n", + "RKqqqv69xx57DPjOd75T9corrzQsXLhwZTweP1CbBSBFZGw4HH70+OOP91VVVfmmTp2aSafTv0ql\n", + "Ure4qb+942yrngZ80l6mFk1UrEHApuSf04HDVbUQ5/XLFhHxA8eJyP5qn0x8VLdxotXZp3AyEMHe\n", + "AVh2W9gLjVPT5TDs72HabT3NqWiDABCRU4DfA99QD2xBNpQXTtnIG4EDtAQ5JneWijcIABH5PXYm\n", + "7CPbm4MbyhcR2R94HjhKVd92W8+2MAbBpjng48ByVT3PbT2G8kdEdgNmAb9Q1Yfd1tMSFbmKsTWq\n", + "mgdOAw4REWMQhqIiIkHgUeDe9mwOYEYQWyAi/YDXgAmq+pLbegzlh5N+4C9AHfB9549Tu8WMIJqh\n", + "diHUicADIuKJU48Gz3EBMAo4vb2bAxiD+BrOJqrrgOki0t1tPYbywVmx+DVwvLOjt93jd1tAe0RV\n", + "Jzklzl4QkUPN8qehrYjI8cAd2CsWn7qtp7WYGMR2EJHfYR+7PUxV17mtx+BNRGQsdgLlY1R1ttt6\n", + "dgZjENvBCSj9CRiDvUdivcuSDB7DyUHyIPa0wnNnUkwMYjuo7Z6/wF7ZmCkinXfwlJIgIj4ROVxE\n", + "TnSmQhWPiAwWkZPaUxkDZ+TwADDei+YAZgTRKpyRxB+AY4EjVHWVi1r6BoPBVzp16lRTVVXFkiVL\n", + "Avl8/qxcLjfVLU1u4mSxelhEjuzdu3d28eLFAVWdlkqlznBzlcCJOfwVe+Swy5Xd3MYYRCtxTOIq\n", + "4BTsQzXL3dARiUT+c8QRRxxw+OGHWwArVqzg5ptvTmaz2V6VGEy1LOtnvXr1+uMFF1wQDQQCpFIp\n", + "br311vjKlSvPU9V73dAkIj8AbgOOVdU5bmgoFGaK0UrU5lrgn8BrIjKs1BpEpDqTyQwfM2bMps+t\n", + "R48e7L333hng6FLraQ9EIpHTjzjiiGggEAAgFApx+OGHx6LR6Oml1uJUyLoYuAV7tcLT5gBmmXOn\n", + "UdU/isgSYIaI/LTEuSSygKbTafz+zR9dIpFQwN3kpi6hqvFkMrnFfYlEQvP5fEn3GTjFou8ChgGj\n", + "VXVJKfsvFmYEsQuo6oPY9T5vFpFrtqqjWMx+E4FA4PFHH300lUwmyefzvPXWW7p8+fIcUJH5NROJ\n", + "xK1PP/10vKmuxMqVK5k+fXoimUxOKpUGZ0PdS0AMO9lsWZgDmBhEmxCRbtiHbr4AzlTVhhL0WR0O\n", + "h+/JZrPfsSxLRWRpKpX6garOK3bf7ZVAIHCxiFwbCASsTCaTVdVfZjKZu0rRt4iMBB7DPl/xOy2z\n", + "C8oYRBsRkRB2Kv0R2BHrxSXqtyMQBVYW+0vp/IUcBHzY2uCsE9Qdjv1X9T/FzrPhfA5dgS9KldND\n", + "RCYCtwI/VtXHStFnqTEGUQCci+FC4HLgZC2T6k8iIrFY7NZcLndu//79Ux9//HHI5/Pd09DQcN72\n", + "lhBFpHcsFptRXV3dvaqqKr9s2bJ8Mpn8frmckBURH/A77Dqhx5d1ukK3C3OU0w04ElgFXMIuFqlp\n", + "Tzfg5D59+jS88847umTJEl2wYIEOGDCgAXs61eLzqqurZ1166aXZxYsX65IlS3TKlCkaCoXqgZjb\n", + "r6kA70l34F/Ay0AXt/UU+2aClAVEVWcAo4HjgFdEpL/LktpEhw4dfnThhRfGOnSwy4fU1NTw85//\n", + "PNaxY8dzW3qOiNRlMpmhP/nJT3z2wAoOPvhgBg8enAeOKInwIuAsYZ4GzAfmYi9jfumyrKJjDKLA\n", + "qH1S79vAVOB1EbnIGZJ6kUw2u2UZz2w2i26/2nROVaWphkbz52Ev03oOJwbzOPBL4Duq+hutkNyl\n", + "xiCKgKrmVfV24EDsmpieHE1s2LDhrptvvjm+cuVKAFatWsWNN94Y37Bhw+SWnqOq64LB4Bs33nhj\n", + "xjETnnnmGT766KMc4InK4k1sNWp4BxipZbD5aWcwQcoi4+yRuAC4GrgeuE1Vc+6qaj3RaPSqfD5/\n", + "+W677ZZZvXp10Ofz3dTY2Pgb3c4XR0S6VldXP6mqQyKRSC4ej29obGw8UT1Un9MZNdwF9AV+WGnG\n", + "0IQxiBIhInsB/8DevXq2qi7cweMty7J+XFVVdQEQbGxs/Gc2m73JjaGtiNQAewGf6U4ceReRPtjL\n", + "nO+rCwenRKRfVVXVdSIyGvigvr7+St1BPgZnRepU7LKMf8be2/C1AkGVgjGIEuKMJn6GfehrKnCd\n", + "qn6xrcdWVVXd3KNHj3MvvfTSWDAYZPLkyYkPPvjg+fr6+hNKqdmriMju4XD4vXPOOafq0EMP9c2b\n", + "N09vuummRCKROKSl0YCIjAFuAMLAjyp11NAcYxAu4BRq/RVwJvYmqz+p6oZm/98hGAx+MWPGjHDn\n", + "znYKilQqxZgxYxINDQ37qerHrgj3EKFQ6A8nnnjixVdeeWWw6b4pU6boHXfc8czGjRu/1/yxzsG7\n", + "PwADgCuBB9wY8bRHTJDSBVT1S1W9GHun4e7ARyJysXPgB2CPTp06ZZrMAexTinvttVca6Fd6xd4j\n", + "EokMGTZsWLD5fUOGDBERGdj0u4j0FZEp2OdYngEGquoUYw6bMQbhIqq6RFXPwi7cegi2UZwFfLZ+\n", + "/Xr55JNPNj123bp1fPjhhyGgXZZoa280NDS89NxzzyWaj5BnzpyZzWazr4pIVxG5A7uy1YfA3qp6\n", + "R6UsXe4MZorRjhCRb2LPgTtblvVGLBY75ZxzzgmHQiH55z//2VhfX39bY2Pjr9zW6QVEpCYajc4d\n", + "OXJk9yOPPDI6Z86c5LPPPptIpVJTsGuf/C/wB63AJDs7gzGIdoYTRR8LXAwM9/l8nweDwcWJRGKy\n", + "s1PT0EpEpFpEzg6Hw+MSiURnoAcwBTvmUzZHsouJMYh2jJOA9afAGcD/AZOBGWaOvGOc065nAucB\n", + "aWAScL96pGBNe8EYhAcQkRj2ycELgBrslY+7VXVtkfutAsZjB1JfAV7b3gapbTw/6jy/J7bBvboz\n", + "z98VRGR/4Hyn32exTXWndBs2YwzCQzjTj29gXwDHAdOBJ4DpO7OBqZV97RmNRt886KCDovvtt19k\n", + "ypQpyYaGhsfq6+vPaM3FJiI9o9HorFGjRlWNGDEiev/99yc2btz4bH19/cmFHgE5I63jsE2haQfk\n", + "39XF7ONlg9vHSc1t125AF+Bc4ClgI/AC8HOgTyHa79Chw5PXXHNNVh0aGhq0Z8+e9dhVxnb4/Jqa\n", + "moeuuOKKTc9vbGzUvn371mMfdmrra/djr/rcCHwELMMeKYwF/G5/NuV0c12AuRXgQ7S3Mx8P/A07\n", + "H8UC7HMfBwLWrrQZiUTqly9frs25+uqr1efz/b41z4/FYus++eSTLZ7/+9//XkOh0C27+BprsEcI\n", + "9wBfAnOAa7D3kojbn0G53kxW6zJAVePYU40nnO3c38Aecv8dqBORN7EvqNnAHG1he3dzgsHg2k8+\n", + "+aSqR48em+774IMPGnO53MrWaAoEAl9++umnnfr27bvpvg8//DCRzWZ3mLLOOR4/EBiJncpvBDAE\n", + "u8LZk8CvVXVpa3QY2ojbDmVuxb0BvbD/8v4BeB5YCyzHvtCuxi5O3P1rfzn8/nP79OnT8Oabb+r6\n", + "9ev19ttvz0cikfVA59b0KyKn9ezZM/7666/rhg0b9K677spHIpENQNet9PmBfbFXHG7DNoEG7KnD\n", + "A8Cl2Pk1qtx+LyvxZoKUFYYT6NyTzX+Zm245bONYAawEVohIv1AoNDaTyVRHo9G59fX1P9GdyJ7t\n", + "9/svCIVCVyWTydpQKPRZIpF40vmv7th7Erpjr3Asxx7hNN3marOzKQb3MAZhaDKN5hdt8383v283\n", + "7L/uaezsUFkgA+SxRwJ+IOD8jGBv5V/BZtNZuY1/L1PVjSV4mYZdwBiEodU4sYGOfN0MfGw2i6af\n", + "KaBezRfM0xiDMBgMLWJOcxoMhhYxBmEwGFrEGITBYGgRYxAGg6FFjEEYDIYWMQZhMBhaxBiEwWBo\n", + "EWMQBoOhRYxBGAyGFjEGYTAYWsQYhMFgaBFjEAaDoUWMQRgMhhYxBmEwGFrEGITBYGgRYxAGg6FF\n", + "jEEYDIYWMQZhMBhaxBiEwWBoEWMQBoOhRYxBGAyGFjEGYTAYWsQYhMFgaBFjEAaDoUWMQRgMhhYx\n", + "BmEwGFrEGITBYGgRYxAGg6FFjEEYDIYW+f9GfHRuTH6g6AAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "r_aux = nodes[0,:]/R\n", + "th_aux = np.mod(np.deg2rad(nodes[1,:]-90.),2.*np.pi)\n", + "\n", + "fig = plt.figure(figsize=[4,4])\n", + "ax = fig.add_subplot(111)\n", + "ax.scatter(r_aux*np.cos(th_aux),r_aux*np.sin(th_aux),s=30,c=weights,cmap=plt.cm.gray_r)\n", + "circ = plt.Circle([0.,0.],1.,ec='k',fill=False)\n", + "ax.add_patch(circ)\n", + "ax.set_xlim([-1.1,1.1])\n", + "ax.set_ylim([-1.1,1.1])\n", + "ax.set_axis_off()\n", + "fig.savefig('PCE_Quad_rotor.pdf')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### sum of quadratures is equal to the quadrature of the sum" + ] + }, + { + "cell_type": "code", + "execution_count": 276, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "M = 9\n", + "P = cp.orth_ttr(M,dist_U)\n", + "nodes_U, weights = cp.generate_quadrature([3,M], dist_U, rule='G')\n", + "nodes = dist.inv(dist_U.fwd(nodes_U)) \n", + "\n", + "r = nodes[0,:]\n", + "th = nodes[1,:]+90\n", + "x_MC = r*np.cos(np.deg2rad(th))\n", + "y_MC = r*np.sin(np.deg2rad(th))+H\n", + "\n", + "sample_u_train_1 = f1(x_MC,y_MC)\n", + "u_hat = cp.fit_quadrature(P, nodes, weights, sample_u_train_1)\n", + "u_eq_PCE_1 = cp.E(u_hat,dist_U)\n", + "\n", + "sample_u_train_2 = f2(x_MC,y_MC,seed)\n", + "u_hat = cp.fit_quadrature(P, nodes, weights, sample_u_train_2)\n", + "u_eq_PCE_2 = cp.E(u_hat,dist_U)\n", + "\n", + "sample_u_train_3 = f3(x_MC,y_MC)\n", + "u_hat = cp.fit_quadrature(P, nodes, weights, sample_u_train_3)\n", + "u_eq_PCE_3 = cp.E(u_hat,dist_U)" + ] + }, + { + "cell_type": "code", + "execution_count": 277, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-2.62656050526\n", + "-0.489999815812 %\n" + ] + } + ], + "source": [ + "u_eq_PCE = u_eq_PCE_1 + u_eq_PCE_2 + u_eq_PCE_3\n", + "\n", + "print u_eq_PCE\n", + "print 100*(u_eq_PCE-u_eq_MC)/u_eq_MC, '%'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Larsen's Gaussian quadrature. Current implementation in FusedWake" + ] + }, + { + "cell_type": "code", + "execution_count": 290, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def gaussN(R, func, varargin, NGr=4, NGth=4):\n", + " \"\"\"Calculate numerically the gauss integration.\n", + " [1] eq. 38\n", + "\n", + " Inputs\n", + " ----------\n", + " R (float): Wind turbine radius [m]\n", + " func (function): Wind speed function\n", + " varargin: Other arguments for the function besides [r,te]\n", + " NG (int): Number of Ga\n", + "\n", + " Outputs\n", + " ----------\n", + " Ua (float):\n", + " \"\"\"\n", + " A = np.pi*R**2\n", + " #coefficients\n", + " if (NGr==4)&(NGth==4): #for speed give the full values\n", + " rt = np.array([[ -0.339981043584856, -0.861136311594053,\n", + " 0.339981043584856, 0.861136311594053]])\n", + " te = rt.T\n", + " w = np.array([[0.652145154862546, 0.347854845137454,\n", + " 0.652145154862546, 0.347854845137454]])\n", + " wt=w\n", + " else:\n", + " rt,w = np.polynomial.legendre.leggauss(NGr)\n", + " rt = np.array([rt])\n", + " #te = rt.T\n", + " w = np.array([w])\n", + " te,wt = np.polynomial.legendre.leggauss(NGr)\n", + " te = np.array([te])\n", + " wt = np.array([wt])\n", + " \n", + " return np.sum((np.pi/4.0)*(R**2./A)*w*wt.T*func(R*(rt+1.0)/2.0,\n", + " np.pi*(te+1.0),*varargin)*(rt+1.0))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# Convergence" + ] + }, + { + "cell_type": "code", + "execution_count": 289, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def f_test(x,y,seed):\n", + " np.random.seed(seed)\n", + " return - np.random.uniform(0.5,3.)*np.exp( -((x-np.random.uniform(-60,60))**2. + (y-np.random.uniform(40,70))**2.)/(np.random.uniform(10,80)**2.) ) + \\\n", + " - np.random.uniform(0.5,3.)*np.exp( -((x-np.random.uniform(-60,60))**2. + (y-np.random.uniform(40,70))**2.)/(np.random.uniform(10,80)**2.) ) + \\\n", + " - np.random.uniform(0.5,3.)*np.exp( -((x-np.random.uniform(-60,60))**2. + (y-np.random.uniform(40,70))**2.)/(np.random.uniform(10,80)**2.) ) \n", + " \n", + "def plot(f,seed):\n", + " x_mesh,y_mesh = np.meshgrid(np.arange(-50.,100.,0.1),np.arange(0.,120.,0.1))\n", + "\n", + " F2 = f(x_mesh,y_mesh,seed)\n", + "\n", + " plt.contourf(x_mesh,y_mesh,F2,20)\n", + " cb = plt.colorbar()\n", + " circ = plt.Circle([0.,H],R,ec='k',fill=False)\n", + " ax = plt.gca()\n", + " ax.add_patch(circ)\n", + " print \n", + " \n", + "f_r = lambda r,th,seed: f_test(-r*np.sin(th),r*np.cos(th)+H,seed)" + ] + }, + { + "cell_type": "code", + "execution_count": 315, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "rel_error_PCE = []\n", + "rel_error_QMC = []\n", + "rel_error_QMC2 = []\n", + "rel_error_GCL = []\n", + "\n", + "seeds = range(1000)\n", + "\n", + "for seed in seeds: \n", + " u_eq_MC, x_MC, y_MC = MC_int(f_test,seed)\n", + " u_eq_PCE, x_MC, y_MC, nodes, weights = PCE_int(f_test,seed)\n", + " u_eq_QMC, x_MC, y_MC = QMC_int(f_test,seed)\n", + " u_eq_QMC2, x_MC, y_MC = QMC_int2(f_test,seed)\n", + " u_eq_GCL = gaussN(R,f_r,[seed])\n", + "\n", + " rel_error_PCE = np.append(rel_error_PCE,100*(u_eq_PCE-u_eq_MC)/u_eq_MC)\n", + " rel_error_QMC = np.append(rel_error_QMC,100*(u_eq_QMC-u_eq_MC)/u_eq_MC)\n", + " rel_error_QMC2 = np.append(rel_error_QMC2,100*(u_eq_QMC2-u_eq_MC)/u_eq_MC)\n", + " rel_error_GCL = np.append(rel_error_GCL,100*(u_eq_GCL-u_eq_MC)/u_eq_MC)" + ] + }, + { + "cell_type": "code", + "execution_count": 330, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "image/png": [ + "iVBORw0KGgoAAAANSUhEUgAAAUwAAAFHCAYAAADKqXWcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n", + "AAALEgAACxIB0t1+/AAAIABJREFUeJzt3XecXVW5//HPNwUSCKELBCIgHQQEpKNGRQVUUASlKXiv\n", + "6JULcsWCWJiMen9wRbEgIEq3AAKKoCBFCSAgndBCr6GE3hJCSPL8/ljrZPacOTNnTzklk+/79ZrX\n", + "nLP32vs858ye56zdnqWIwMzM6hvR6gDMzBYWTphmZiU5YZqZleSEaWZWkhOmmVlJTphmZiU1LGFK\n", + "mijpSkl3S7pL0ldqtJkk6RVJt+Wf7zYqHjOzwRrVwHW/BXw1Im6XNA64RdLlETGtqt1VEbFrA+Mw\n", + "MxsSDethRsQzEXF7fvw6MA2YUKOpGhWDmdlQasoxTElrAJsBN1TNCmA7SVMlXSxpw2bEY2Y2EI3c\n", + "JQcg746fBxyae5pFtwITI2KWpJ2BC4B1Gx2TmdlAqJH3kksaDfwVuCQiflai/SPAFhHxYtV03/Bu\n", + "Zg0REeUPC0ZEQ35IxybPBH7aR5uV6EraWwGP9tIuGhXnAN7X5FbH0G6xtEscjsWxDCCW6E/7Ru6S\n", + "bw/sB9wh6bY87dvA23OUJwF7AF+WNBeYBezVwHjMzAalYQkzIv5FnZNKEXE8cHyjYjAzG0q+06f/\n", + "prQ6gIIprQ4gm9LqAAqmtDqAgimtDqBgSqsDKJjS6gAGqqEnfYaKpIj+HJg1Myuhv7ml4ZcVmZXl\n", + "qyGskYai0+WEaW3FexLWCEP1ZexjmGZmJTlhmpmV5IRpZlaSE6aZWUk+6WMDImksvRdKmRERzwzB\n", + "azT8rHmZk0ySHgXeBswDZgKXAAdHxExJHwG+A7wLmA3cA/wkIi6SdABwCukutgUvCaw7FJ+PNZ8T\n", + "pg3UuqRyffdVTV8ZOAk4cihepJFnzfuRkAP4WET8U9IE4FLgu5JuISXErwLnRsRrkt5LuiX4orzs\n", + "tRHx3qGO3VrDCdMG476I2LQ4QdKRDOPtKiKeknQJsDGwD/D9iDi1MP9q4OrCIr5MahjxMUyzcgRp\n", + "rCpgF9Ju9kRSrVdbRAzbnoDZEBJwQa6q9QqpxusfSNW2nq6z7DaSXio8fz4i1mlMmNZoTphm9QWw\n", + "W0T8szJB0vr54SrAY30s+++IeE8jg7Pm8S652cDcBzxB6mXaIsIJ02wAIpX5Ogz4nqQDJI2XNELS\n", + "DpJOanV81hjeJTcboIg4X9LrpOswjwPeAO4Cjqk0AbaV9FrVopMi4pbmRWpDxQnT2lo7lHyLiDX7\n", + "mHcp6brMWvPOAM5oVFzWfE6Y1rZc6s3ajY9hmpmV5IRpZlaSE6aZWUlOmGZmJTlhmpmV5IRpZlaS\n", + "E6aZWUlOmGbWNiRNkvREq+PojROmtS2JaPRP/+LRAZLulDRT0tOSTpC0dGH+ZEnzJX2larlD8/SO\n", + "wrTxkn4m6TFJr0l6UNJPJS3fy2vPl/SOqmmTJf22P+/BBscJ09paBGrUT3/ikPQ14Gjga8B4YBtg\n", + "deBySaMr4QL3A5+rWnx/UnWjyOtaDPgHsAHwkYhYCtgWeB7Yqj8fT3/eQ7uQtNDmnYU2cLNmkTQe\n", + "mEwa+OyyiJgXEY8BnwbWII3hU3ETsISkDfOyGwGLAzfTNVzF50jV2j8ZEfcCRMRzEfG/EXHJIOL8\n", + "uaTHJb0i6WZJOxTmTZZ0rqTfSnpV0h2S1pF0hKQZuaf7oUL7KZJ+IOna3AO+UNIKkn6f13+jpNUL\n", + "7deXdLmkFyTdK2nPwrzTJZ0o6eJcrGSSpF0k3ZNjmZ6/kGq9pwmSzpf0rKSHJR2Sp6+ce/rLFdpu\n", + "ntuNHOhnWI8Tpll92wFjgD8VJ0bETOBiYMc8qZIQf0tXL3P//By6eoQ7ApdERHE0yTKqe8XVz28E\n", + "NgWWJVWEPzf3Zis+BpyZ598GXJ6nTwB+QBq8rugzpC+DVYG1gOtJg74tB0wDOgAkLZnX9TtgRWAv\n", + "4ARJGxTWtTfwg4gYB1yX13NgRIwHNgL+SZXcE70oxzoB+CDwP5I+nEfdnEL60qr4LHBWRMyrXtdQ\n", + "ccI0q28F0tAS82vMewaoPu74O2BvSaNISed3VfOXo/7QFrXcKumlyg9wOIXd8oj4fUS8FBHzI+JY\n", + "Us92vcLyV0fE5TmhnJfjPjo/PwdYI/emyes9LSIeiYhXSUML3x8R/8ztzwU2y20/BjwSEWfk176d\n", + "9OWyZ+G1L4iI63Ocs4E5wEaSxkfEKxFxW433uyWwQkT8MCLmRsQjwMmkhAwp+e8HkHuVe9H15dQQ\n", + "Tphm9T0PrNDLsbdVgBmF5xERTwAPAkeRksz0qmVeIPWY+muziFi28kM6prqglynp63k39+WcUJcm\n", + "JfuKZwuP3yB9CUThOcC4Qpvi+5pdtfzsQtvVga2rkvk+wEp5fpCq0xd9ijSY3KN593+bGu93dWBC\n", + "1XqPII0RD/AXYENJawAfAl6JiJtrrGfIuLybWX3XA2+S/snPrUyUNA7YiVR5fcHk/PtM4FTggBrr\n", + "uwL4oaQlBrBbXlRMlu8BvgF8ICLuztNepOdu+0D1dYLpceCqiPhw6ZWlxPaJ3DM8BPgj8PaqZk+Q\n", + "eq7r9rKO2ZLOJfUy1yd95g3lHqZZHRHxCtAJHCfpI5JG517NH4GHSLuz1c4h9XoqCVZ0P8b5BHC+\n", + "pPXy0BbLS/q2pJ0HGOZSwFzgeUmLKY0PP77OMvWol8fV/gasK2m//NmMlrSlugaK67Zsnr+vpKXz\n", + "7v1rQK3jjjcCr0n6pqSxkkZKeqekdxfanAl8HtiVBu+OgxOmWSkRcQzwbeDHwKvAw6Re104RMbfS\n", + "LP8QEbPz8b7ZNebNIZ34uZd0suQV4AbSsc1/9xZCL9Mq0/+ef+4HHiXtYj/eS9ve1tnX816Xj4jX\n", + "gA+TjiE+STo+exSwWB/L7gc8IukV4IvAvjXWO490fPRdpM/7OeDXFL4IIuJaYD5wSz4U0lDqOoTR\n", + "viSFq2+3F0mbAmdGxKZV048ERkXEkQNYZ7e/c38vLB+I/l6PWSHpAOD/gG0j4uEhDcr6RdIVwB8i\n", + "4tQ+2tTMIf3NLT6GaW1roMmsGSLidElzga1JvR9rAUlbApsDuzXj9ZwwzQYoIqovF7ImknQGKVF+\n", + "JV8T23BOmGa2UIqI/Zv9mj7pY2ZWkhOmmVlJTphmZiU5YZqZleSEaWZWkhOmmVlJTpjWvqRo+M8i\n", + "Kt/LfWkf84d0bJ1cqPg3Q7W+VmlYwpQ0UdKVku6WdJeqxjkptPuFpAckTZW0Wa02tgiLUMN++kkt\n", + "HNMnL6Ncdfzufsa9Rn79Bf/vuXbmRwpteowZNFC1km1EHBURBw7F+lupkT3Mt4CvRsRGpPFP/ruq\n", + "AjOSdgHWjoh1SDfgn9jAeMwGTO0xps97SUWBV6yq2FP6bQxy/iKvYQkzIp7JlZeJiNdJJe2ri6bu\n", + "CpyR29wALCNpJczaiNpnTJ/9gfNJhXO73eWSi/B+X9K/lMbJubTQW706/345z9sm95avyctW5k/N\n", + "vd3ieDyHKY3581QuOFKZvrikH+ce8jNKY/aMURqu4hJS4d/X8uutoqoRLiXtIOk6pcLAj0tq+l07\n", + "A9GUY5i5duBmpBJWRavSvRLzdGC1ZsRk1g8tH9NH0hKkAsbnkOpw7lXo2VbsTSpY/DZSabWv5+nv\n", + "yb+XjojxEdGthFxEvDc/3CQiloqISg3PlUm96QnAfwLHFw5BHA2sTRpDaG3S//KR+TPZCXgqr2t8\n", + "RDxdeO8oDZ52MfBzUkX4dwG3l/0sWqnhCVOpKvV5wKG5p9mjSdXzRfZAvLWtdhjTZ3fg1Vz/sTJg\n", + "2EcL8ytj8DyYa3D+kZSIYOC72m8B38896kuA14H1JAk4EDgsIl7O/9dH0TXWTq3XK07bB7g8Is7J\n", + "634xIqYOMMamamjxjfwNeD7wu4i4oEaTJ0m7JhWr5Wm11jW58HRKREwZojDN6lkwpk+NpFlzTB9J\n", + "3cb0STlmgYGM6bM/uYcbEfMkXZCnFf+vnik8foPu4/MMxAtV73dWXueKwBLALYX3Jcp3wCbSopJ4\n", + "kiYBkwa6fMMSZv4WOgW4JyJ+1kuzC4GDgbOVBkF6OSJm1GoYEZMbEqhZfS0d00fSasAHgC0lVYaV\n", + "XQIYI2m5iHixziqGeq/teVJC3jDvbvf39R6n75NbDZM7WlMqz4tXLpTRyF3y7UkHw98v6bb8s7Ok\n", + "L0n6EkBEXAw8nL+NTwIOamA8ZgPSBmP6fJY0nMW6pGOGm+bH00m7txW97Xo/RxrGYa0+3uaMOvMX\n", + "yL3O3wA/k7QigKRVJVUGQZsBLK+uIXur/QHYUdKekkbl975pL23bSsN6mBHxL0ok5Ig4uFEx2DDQ\n", + "JheXR8Qxkl4gjemzNunM9yX0MaYPXccaq+fNkbQjKQlfDixLSjIXUHtMn88Bv4yI4jC3SPpVZV7h\n", + "NWq93ixJ/wtcm4+r7lycn00GzpA0lnR88jn67ikeDhwJ/FvSCqRDaScAl0XEvZLOInWGRgAbVcXz\n", + "eL6k8MekccZfAb4DtP1xTI/pYwOiJozp087kMX0WKr1tW/3d5lxx3WwAPKbPoskJ02yAPKbPosfF\n", + "N8zMSnLCNDMryQnTzKwkJ0wzs5KcMM3MSnLCNDMryZcVWdtSZ+Pv8omO8hctS9oL+CrpzpWZwCPA\n", + "GRFxYp6/FemOmW1JtyI+CJyYr9mcBPw2IibWWLUtJJwwra31J6H1V38Scq64/g1SvYNLI2KmpHcB\n", + "X5d0CrAFcBnwfWC/iHhR0ubAN4HThzx4awknTLM6ctHcTuCzEfHnyvQ8osB+uc0xwOkRcUxh/q10\n", + "1Yi0YcDHMM3q25ZUbOMvtWbmaujbkApl2zDmhGlWX4+K64XxaGYB7yb9L/W3irotZJwwzep7gVxx\n", + "vTIhIraLiGXzvCVJJ3lWaVF81iROmGb1VSquf6KX+bNymz2aFpG1hBOmWR0R8TLppM8Jkj4laalc\n", + "Jf1dpN5lkM6GHyDp65XhbSVtmgvpLpCHpx1T+Wn2e7HB8VlysxJyxfUnSYnxTNJ1mA/n59dHxFuS\n", + "PkBKrN+VNA94gK5q6JCGon2juFpJ67gA8cLDCdPaWjMuXi8rIv5AGo+mt/k3Abv0Mm8K3qNb6Dlh\n", + "Wttq5EXrZgPhbzwzs5KcMM3MSnLCNDMryQnTzKwkJ0wzs5J8ltzaitQ+lxGZVXPCtLYR4cuIrL15\n", + "l9zMrCQnTDOzkpwwzcxKcsI0MyvJCdPMrCQnTDOzkpwwzcxKcsI0MyvJCdPMrCQnTDOzkpwwzcxK\n", + "csI0MyvJCdPMrCQnTDOzkpwwzcxKcsI0MyvJCdPMrCQnTDOzkpwwzcxKcsI0MyupoQlT0qmSZki6\n", + "s5f5kyS9Ium2/PPdRsZjZjYYjR418jTgOODMPtpcFRG7NjgOM7NBa2gPMyKuAV6q08xDq5rZQqHV\n", + "xzAD2E7SVEkXS9qwxfGYmfWq0bvk9dwKTIyIWZJ2Bi4A1q3VUNLkwtMpETGl8eGZ2XAiaRIwaaDL\n", + "tzRhRsRrhceXSDpB0nIR8WKNtpObGpyZDTu5ozWl8lxSR3+Wb+kuuaSVJCk/3gpQrWRpZtYOGtrD\n", + "lHQW8D5gBUlPAB3AaICIOAnYA/iypLnALGCvRsZjZjYYDU2YEbF3nfnHA8c3MgYzs6HS6rPkZmYL\n", + "DSdMM7OSnDDNzEpywjQzK8kJ08ysJCdMM7OSnDDNzErq8zpMSZ8iFcjoq6LQGxFx8ZBGZWbWhupd\n", + "uP5r4MI+5gt4D+CEaWbDXr2E+feI+HxfDST9fgjjMTNrW30ew4yIfeutoEwbM7PhoN8nfST9uhGB\n", + "mJm1u4GcJd9yyKMwM1sIDCRhzhjyKMzMFgL9TpgRsVMjAjEza3d9JsyqcXQG3MbMbDiod1nRFyS9\n", + "St8Xru8NTB6yiMzM2lS9hHkysFSdNj5rbmaLhD4TpkdqNDPr4uIbZmYlOWGamZXkhGlmVlK9y4ou\n", + "Kzw+ovHhmJm1r3o9zBULjz/dyEDMzNqdd8nNzEqqdx3mOyRdSLpwfU1JFxXmRUTs2rjQzMzaS72E\n", + "uVvh8U+q5sUQx2JtSuIjwNjuU/+2Bpw4rhXxmLVKvQvXp1QeS1oxT3uuwTFZ+/k1cB8wq2vS9hPg\n", + "HRNaFZBZK9Q7Sy5JkyU9D9wP3C/peUkdzQnP2siBEXyi8gMnH9PqgMyard5Jn68C2wNbRsSyEbEs\n", + "sBWwvaTDGh6dmVkbqZcwPwfsExGPVCZExMPAvnmemdkio17CHFXrmGWeVu+EkZnZsFIvYb41wHlm\n", + "ZsNOvV7iJpJe62Xe2F6mm5kNS/UuKxrZrEDMzNpdnwlT0ljgv4C1gDuBUyJibjMCMzNrN/WOYZ4B\n", + "bAHcBexCz7t9zMwWGfWOYW4QERsDSDoZuKnxIZmZtad6PcwFu9/eFTezRV1/z5KPLTyPiBjfoLjM\n", + "zNqOz5KbmZXkAsJmZiU5YZqZleSEaWZWkhOmmVlJTphmZiU5YZqZldTQhCnpVEkzJN3ZR5tfSHpA\n", + "0lRJmzUyHjOzwWh0D/M0YKfeZkraBVg7ItYBvgic2OB4zMwGrKEJMyKuAV7qo8mupAIfRMQNwDKS\n", + "VmpkTGZmA9XqY5irAk8Unk8HVmtRLGZmfWqHcXlU9TxqNpImF55OKY6ZbmZWhqRJwKSBLt/qhPkk\n", + "MLHwfLU8rYeImNyMgMxs+ModrSmV55I6+rN8q3fJLyQP1ytpG+DliJjR2pDMzGpraA9T0lnA+4AV\n", + "JD0BdACjASLipIi4WNIukh4EZgKfb2Q8ZmaD0dCEGRF7l2hzcCNjMDMbKq3eJTczW2g4YZqZleSE\n", + "aWZWkhOmmVlJTphmZiU5YZqZleSEaWZWkhOmmVlJTphmZiU5YZqZleSEaWZWkhOmmVlJTphmZiU5\n", + "YZqZleSEaWZWkhOmmVlJTphmZiU5YZqZleSEaWZWkhOmmVlJTphmZiU5YZqZleSEaWZWkhOmmVlJ\n", + "o1odgLUPidWBt9WYtXizYzFrR06YVvR1YDdgRtX0J4A5zQ/HrL04YVq1YyI4rtVBmLUjH8M0MyvJ\n", + "CdPMrCQnTDOzkpwwzcxKcsI0MyvJCdPMrCQnTDOzkpwwzcxKcsI0MyvJCdPMrCQnTDOzkpwwzcxK\n", + "csI0MyvJCdPMrCQnTDOzklwP0wZhJBLju0+bsDjMbE04Zg3mhGkDNG8+rLIYML379MeWgD9f25KQ\n", + "zBrMu+Q2QIc/CEvdFcH44g/86apWR2bWKE6YZmYlNTRhStpJ0r2SHpB0eI35kyS9Ium2/PPdRsZj\n", + "ZjYYDTuGKWkk8EtgR+BJ4CZJF0bEtKqmV0XEro2Kw8xsqDSyh7kV8GBEPBoRbwFnk4ZwraYGxmBm\n", + "NmQamTBXJY1nXTE9TysKYDtJUyVdLGnDBsZjZjYojbysKEq0uRWYGBGzJO0MXACs28CYzMwGrJEJ\n", + "80lgYuH5RKqu2YuI1wqPL5F0gqTlIuLF6pVJmlx4OiUipgxtuGY23EmaBEwa6PKNTJg3A+tIWgN4\n", + "CvgMsHexgaSVgGcjIiRtBahWsgSIiMkNjNXMFgG5ozWl8lxSR3+Wb1jCjIi5kg4GLgVGAqdExDRJ\n", + "X8rzTwL2AL4saS4wC9irUfFYfRtwz5Ibcs8qaM931ph9PxFzmh6UWRtRRJlDja0lKSLCZ9Mb7CJ9\n", + "fOr7uXKNccx8omrWRsCvgMcrE+6ClU+G3X8WUTzsgvTHf4BGRez5viaEbDYo/c0tvtPHuvkTu19G\n", + "xDu7/cC3gFeA8ZWfZeHt/wUrtDRYsyZz8Q2rL+L/qiedLe35UdipFeGYtYp7mGZmJTlhmpmV5F3y\n", + "RZG0DNDjrqoV2XrJl1i2BQGZLRycMBdN7wbOB+4uTlyeF5Z8hpVfbU1IZu3PCXPRdRMROxYnrCuO\n", + "A+7/ZosCMmt3PoZpZlaSE6aZWUlOmGZmJfkY5nAnfYieX4ybtyIUs4WdE+bw9xfgOmBe1fSbWxCL\n", + "2ULNCXPRsCsRs1odhNnCzscwzcxKcg/ThtaWl67ERtevos5PX1Rj7mHREQ80PSazIeKEaUNr+afH\n", + "8tbi84BfV835KXCbOjW3avrT0REbNCc4s8FxwrSh9+JKs6IjuvUw1akppMr7RROAy5sVltlgOWFa\n", + "U0RH14B3FerUkq2IxWygnDCHC+k/gC1qzFms2aGYDVdOmMPHh4E36Hl95aHAW80Px2z4ccIcXi4l\n", + "4uxWB2E2XPk6TDOzkpwwzcxKcsI0MyvJxzAXQRLvBn5SY9Y6wFFl1zMORiDtXJy2/oc2W+L5kUvM\n", + "H2SIZm3JCXPRtAwwDjisxrwHy6zgaZj5ELy5GnylOH2nt6Ytfycru9CHDUtOmIuulyK4aqAL/2Q8\n", + "M34ykukcyheL07e/6W13jpkz+ODM2pETpg3MNryDrdmAVGtzgTvXnzHuPTdN7M/IkyuoU7Vuj/xr\n", + "dMTPBxWj2RBzwrSBe4nZcVxMLE76uXZ5aCTzq+8Z780LwMdqTP84cKw69X815u0WHXFpPyM1GxJO\n", + "mNYy0RGzqVF8Q526Eqg12u+F+MoOayEnTBtybxFjJG1XY9YdEfF6veWjI+YC1WXgUKeqh9kwayon\n", + "TBtSoxnx5uvMWQH4cdWsTYH34bGEbCHmhLmwkbYE/qPGnHcDFzQ5mh5WYImnV2TscxHxvuJ0SU6U\n", + "ttBzwlz4rA1sCZxSNf0O4Jbmh2O26HDCXDg9QMSJzXoxSatRXS19G1Zs1utXOVWdqr4w/q3oiPVb\n", + "Eo0tUpwwrYxrSdtK14mYxxnNVk2vs/mfwNiqaYsBd6lTn6nRfnp0xLWND8sWFU6Y7UoSsESNOWOa\n", + "HUq2XUQ8VnmiTm0KnNnMAKIjnqqepk6NAs4Ddq+aNRF4ipTszYaEE2Y7kL5POotcNBb4EFDrvuxz\n", + "Gx7TQiJfgtSjd6lO7QHs1fyIbDhzwmwP2wHXALdXTf8FEX9tQTxmVoMTZvu4logrWh3EcKdO7Qls\n", + "1o9FHo2OqB5j3RZRTpg25KaxwXslovvUAI7dgNZfuP5x0rHhW0u0XRPYHnDCNMAJ08rYmWXYhB+p\n", + "UzMLU5er1fTTnHsVcO2R8f0ji9Olu2bWat9gn1Knosb0/aMj6p6wUqfeB/xcndqhatbB1Dhumq0T\n", + "HVGqpqgtfJwwm0naC/h6jTnrNTWOD35rIzb5/XbqnP5At+mzGcf1TOMq7u82/assxZs8xNgexYVf\n", + "anCkAxYdcR6gQa7mVeB14Oga8/aJjjirOEGdcqIc5pwwm+ttwEPAMTXm3V9j2qBJbEd1hZ9tV1yP\n", + "2cvOYenpu3Sb/gwXMYplqD75NIaXmM7v4qdxTyNibFfREbcB1b1LW4Q5YTbfDCKaeRzvCmAq0FXp\n", + "5+U1l0bzX42O6NbD1D56k/E8FBG/6ja9U0ewFq3YpV4YTVWnqsc0ui864t3FCerUSsDKvazjweiI\n", + "mYW2o4CNemn7YnTEEwOO1vrFCXPR8MGIrus51fmpHYFvtTCeFIc0Hjgcqk8QAXBjRFzY5JAG6130\n", + "PAywPnBGjbb/AXwVeLpq+jrAB4HrC9OWJZ2kuquq7fLA34EvDDBe66dFO2FK25Jurav2GhFlzqKC\n", + "9D3g7UCxVzECeI6Ibw86xmHl1h9LmxROBm04Hma/DR7+XlXDrUnJYKFKmNHRs9Zn1YmyaqdERxxR\n", + "1f76Xtq+GB2xaVXbLwDb9DtQG7CGJkxJOwE/IxVuODkiegw5IOkXwM6kO1oOiIjbGhlTlfOBx4E3\n", + "C9PGk+6Z3rJbS+mbwP/UWMcqwImk3d6KNYAjkA6oajsOOH0Q8fbfsg+JPT6zhjpvmV2Yukqv7Sfy\n", + "TnXqh1VTlxl8IKtdAyevR7dtTnNgxLMRo7u9nqQvA5sM/jXbxrrq1JNV05YCju+l/ZfUqY8Wni/Z\n", + "x7r3UWf3oY6zz0dHXFacUOPvCummiUn07OkCfL36xFZ/qFPLA0v3Mnt6dMRCN1xewxKmpJHAL4Ed\n", + "gSeBmyRdGBHTCm12AdaOiHUkbU1KPEP/jSl9jFQvstpSwO5E4R7lVG/yhF7a/n4H+Pe/uu8uQepN\n", + "dhWikEYBx/USTY8ehzr1E2CLGm1nR0fs1K2tGMuCBLbdtnBdMZaXI3ij2xoO2ngMo2ZfQvEY5lwW\n", + "5yEWk6p6M+sykc25juWYTXfHAK/08n6QNCkiphQmLY+0brFNVA3HC3AaB7ztKI44D9atngWwhKRa\n", + "x/heiog3a0zvLZaWkTSJyVwLrN5Lk1rV538NrFo1bTa1x4s/C7ikxvTTSWMiPb9gyr0sw/psClT3\n", + "5v9J6jhU11L9CbVrGfTHN4AvAi93m/oIa7ImD6lT06vaPxkdse8gX7OhFFHr8NEQrDjt7nZEpH94\n", + "Sd8CiIijC21+BVwZEefk5/cC74uIGVXriuh5Oc4PgPso7ArfvArLHbsdSz+6TPczzqu8xjvWeJkX\n", + "NpnRfYTD//4oe80czZhuR50CtnwKbvxNj9sUVwWOF4yMiMl9vvdOrUE6G17LL6MjDq1qfwVpwy/W\n", + "sxwLXASc1m3pZzZdi6e2eC8j5s5h2u2j2eBdKVHPW2wsmjuPUS91T8jvvGg8R4+9gTkzi0lmWWAO\n", + "cEiN+B6NiFq9jV5JmrzgM5EOpkZyrGUuI8c8x4qrTuDpqlJxG+0Njx8Jr1dvnCuRLmW6s3pVEfHB\n", + "HrG0WKtiUac2Jh3S6HISB/AlTo+Ocl8m6tQppOOs1SewRgB/Al4ssZqtgLOiI7pdlqWV9BsO4vdV\n", + "bVcjXb716TLxZXdHR/T6Rb7g9Tq1LbWLbsNkvhARpS8/a+Qu+apA8ezddNKxqXptVgNmVLXjCx9n\n", + "t+LzmMWMfy3FC1E4YTBqKZZ8ZTlG73V392/uv621OJeuNma5me9colsVcGaPeIYb992VaZ98vDJp\n", + "tQ/tvsO0lZ756f1Et3/6yR9ZfLN/rjViTa6Ys4W+Ma5zwYwlZx4EmkOo6zWl0cCTnHxd9zObOx3y\n", + "A1a544s6fNnuFz0vPmp5Llv/UW54sSvZjR47mh02voGlx4/u1vaF5ZZn9pzXWfyEJ3mdFXn+jucA\n", + "mLXyhoxa5hXGLPZ4t/b/2HBJeKiTnkU8Xo6IqQy1iF+S9izq+okO33x/zrh5KV6tun7x+jGBznmd\n", + "pQ4uTl29RzEbAAAPkUlEQVSRs748oqr3Fcwb8QaXHrKGdBDAWNiy8ngMPPvFdI/+Ar+B7abDCq8X\n", + "e9wArLIkfPxPsFrVbuJr8+GY6h73F4FP0P1QTsXnI6J693tQ1Hvlqt48DEyLiAXl+DRZk2olS6W9\n", + "ocV7rGF5DmUiB/GJHmMr7Uft4/613Ajc1GPqszxZHYs6NZF0eKx6aJPebAu8pU49XDX9ddIhvqIt\n", + "gI3pWXT7yyVfqyvOBvYwPwXsFBEH5uf7AVtHxCGFNhcBR0ekmoWSrgC+GVUnXCQFO+3Zvec0b+6S\n", + "jBz9OsUzrPPnL85zKy/GbTtV/TN8dCQ8FXBT1S7AbnmI2Nld7SfcOZLP7QiPrdf9g1nhJTFzJZgy\n", + "F9batmv66FkwbbfgtQndv4nnjYaX1ur+cmNnjWTJB4ErqjbC3UfxykR4a1Rh+sgRMGoE/KXqkpE3\n", + "l4DbXoCjDwE+C/y2MPPO/vYOh8KAe1LSBNJeQrVxAH9jl25/x49y8UiANxhTrMOpuYwaJeYFwP/j\n", + "LX2b0RG9XLS+FG/wIuO4iY26HbqYw4pj06ZU/DOmmsliRrdtIUCjGfHm4ozoto6ZzB0/Es1V3iZ/\n", + "y/RRn2W1HoO59VfAiLnEaNW+mqBWewnmj0ILPqfeYplLjA4YUb3uvI4YhYb8OONQfC4zln6TN0fP\n", + "7/Y3fmPxeRy5z/01k/l77llu3sF/W6Pbax6709PzL//7E2P708NsZMLcBphc2CU/AphfPPGTd8mn\n", + "RMTZ+Xmvu+QNCdLMFnntskt+M7COpDVIhVw/A+xd1eZC0n25Z+cE+3J1soT+vSEzs0ZpWMKMiLlK\n", + "JwAuJe3bnBIR0yR9Kc8/KSIulrSLpAdJZ48/36h4zMwGq2G75GZmw82I+k3ag6RDJE2TdJekHhfA\n", + "tyCer0maL6lmmbMmxXBM/kymSvqTpN4uEm5kDDtJulfSA5IOb/brF+KYKOlKSXfnbaTUpU0Njmmk\n", + "pNvyyc1WxrGMpPPytnJPPvzVijiOyH+fOyX9QVLPs/ONe+1TJc2QdGdh2nKSLpd0v6TLJNW9QWOh\n", + "SJiS3g/sCmwSEe+k/KUHjYpnImm8ncfqtW2wy4CNImJTUrWjI+q0H1KFmxN2AjYE9pa0QTNjKHgL\n", + "+GpEbES6+eG/WxhLxaHAPZQ8u91APwcujogNSHdQTavTfsjlcxkHAptHxMakw3TNHHPpNNJ2WvQt\n", + "4PKIWBf4ByXqKywUCZN0vdRRke+miYjnWhzPscA3WxwDEXF5RFSug7mBdA1rM20FPBgRj+a/zdnQ\n", + "/XrZZomIZyLi9vz4dVJSmNCKWGDBWO67ACcz+Lqcg4ljaeA9EXEqpHMLEfUv9m6AV0lfakvkaz+X\n", + "IN0B2BQRcQ0967fuSldhlDNI19b2aWFJmOsA75X0b0lTJNW6zbEpJO0GTI+IO1oVQy/+A7i4ya9Z\n", + "68aD6tv6mi73ZjYjfYm0yk9JtwZW3ynTbGsCz0k6TdKtkn4jabC3PPZbRLxIut3ycdJVMy9H68ew\n", + "WqlwVc4M0p1kfWqbakWSLqd2fcDvkOJcNiK2UbrX+4/AO1oUyxHAh4vNGxVHnVi+HREX5TbfAeZE\n", + "xB8aGUsNrd7V7EHSONI45YfmnmYrYvgY8GxE3CZpUitiKBgFbA4cHBE3SfoZadfzyL4XG1qS1iIV\n", + "r1mDVJfgXEn7RkT1LZItERFR5nrvtkmYEfGh3ubl6jV/yu1uyidblo+IF5oZi6R3kr6xp6a71VgN\n", + "uEXSVhHxbDNjKcR0AGnX74ONeP06ngQmFp5PJPUyW0LpltTzgd9FRHUxiWbaDtg1F5cZA4yXdGZE\n", + "fK4FsUwn7RFVblE8j9bUQn03cF3lf1bSn0ifUysT5gxJK0fEM5JWAer+Dy8su+QXAB8AUKqCs1ij\n", + "kmVfIuKuiFgpItaMiDVJG+PmjUqW9eTyed8AdouI6vudm2HBzQmSFiPdnNCSGpb5futTgHsi4met\n", + "iKEiIr4dERPzNrIX8M8WJUsi4hngCXVVj9oRuLsFodwLbCNpbP5b7Ug6IdZKFwL758f707NiUw9t\n", + "08Os41Tg1HxJwBygJRtfDa3eJT2OVAjh8tzjvT4iDmrWi/d2c0KzXr/K9qTCEHdIqtRUPSIi/t6i\n", + "eIpavZ0cAvw+f6k9RAtuEImIqZLOJH3JzidVkG/a8MWSzgLeB6wg6QnSIYmjgT9K+k/gUUpUSvKF\n", + "62ZmJS0su+RmZi3nhGlmVpITpplZSU6YZmYlOWGamZXkhGlmVtKwTZiS5uXSWnfk0mfj6rSfLOlr\n", + "ddrsVqyAI6lTUivusBkwSR9vRBk2SatLqq6oPywUtw1JB+S7QirzflOvKpKk05XGuGp0nAdI6m14\n", + "5/6sZ41iGbQ+2h2TS+n9SNKXJH22j7YTJJ2bH28q1RxLvfIenpP06/x8e6XyhTdJWjtPW0bSpVXL\n", + "XSnpNUm1hqseMgvLhesDMSsiNoO0wQJfIt3835syF6R+kjT07TSAiOgYZIylSRoZEfN6e152uXz/\n", + "+YDqM+Y7NIjaF++uCexDGiu77PpGFUc2bGNB1/ZxAGmY36cBKoP89WP5Rmr2RdUHkmo81H3diHgK\n", + "2DM/3Yw0kmOtMdUDOCtiwaith5FGgVwT+C/ScNvfBf63av3vl3QlDf4Mhm0Ps8r1wFqQigBIukTS\n", + "zZKulrRedWNJB0q6UdLtSoVXx0raDvg4cEyu+vKOSs9B0kck/bGw/CTlorGSPizpOkm3SPqjpCVr\n", + "vF7NmPL6fyXp38CPlCrOVJ7/n6R3KVVwqhQQXiYvN0XSTyXdRNUY4cVeSF7/zyVdK+mhWr2g3Nu4\n", + "T9IZpEQxMfcs7sy998rdEUcD78m9+kMlLZ7jvSN/XpMKr3+hpH8Al9d4vT/nz+EuSZURR/9L0o96\n", + "eQ/fUypgfI1SUdoeewn5fZ4g6fr8PidJOkOpmO5phXavFx7vUZyXJulTpH/03+f3NCZ/1ptXlpd0\n", + "bI79CkkrFJfPbbbIy9ws6e+SuhVWUSo6/HB+vIzSntIO+fnVeVvZKm9Tt+a/3bpUkfTR3Gb5ktvg\n", + "Fnk7uh04qDB9ZP5735jnfzFPv5A0uuetkj6t7r3wtfP7vz2/5pp5O7pT6X7/7wOfydvKntWxVD6r\n", + "7C1gyfwzR6mIx2oRcXWN5RovIoblD/Ba/j2SVJDhoPz8H8Da+fHWwD/y4w7ga/nxcoX1/IBU6QVS\n", + "EdLdC/NOA3bPr/EYMDZPP5HU21oBuKow/XDgezVi7S2m00n3u6rwesXnd5BqHQJ0Aj/Nj68EftnL\n", + "57I/cFxh/efkxxsAD9RovwZpDO+t8vNPkQoXC3hbft8rk247u6iw3NeAk/Pj9XK7xUk9tCeAZXqJ\n", + "b9n8eywpQS+bP8cHCm0uJhVu2BK4jXR76DhSEeXDaqzzNOAP+fGupNqMG+X3cDOpMPWCbabwPk8r\n", + "bBuHFT7bzQvtFjwn3fK3d378vcLnXNlORgPXAcvn6Z8h3U5aHe8lpILMHyON7f3t/Nk9nOcvBYzM\n", + "j3cEzsuPDyDdLvtJ4Gpgacpvg3cAO+THPyIN2QxpDPbv5MeLk8YZX73G51X8jG4g1Tcg/23Gkraj\n", + "yjr3B35Rb/vMzzcldXj+QSodeBawVi/LdvvbNOJnOO+Sj1W6p3hV0n2iv1I6jrktqbRUpV2tcYw3\n", + "lvRD0gY3Dijej9yjnFtEzJP0d1KFmvNJ1YO+DryftOFfl19vMdI/TNfK+o4pgHMjbw3ZuRERSoVh\n", + "l45UGBVSAdRzC+3OqfG+eoROLjgQaYC63uoBPhYRN+bH25OSTwDPSrqKlLherVpme+AXed33SXoM\n", + "WDe/5uUR8XIvr3WopEoh14nAOhFxo6SHJW0NPAisHxHXSfof4IKImEPqfVxE7+X2Koch7gKeiYi7\n", + "ASTdTfpn7k99095eYz5dn/vvyBW2CsusR0rUV+S/9UhSbchq1wDvJe2GHkXa9b2KlKwAlgHOVDqm\n", + "F3Q/tPYBUmWgD0XE60ql5uptg8uQtqV/5Um/Je0GQypluLGkPfLz8aT6tDVHG8jb84SI+AtA/ttQ\n", + "2LYrn0WpsogRMZX0/4Gk95I+rxGSziHVlfhaNLH4zXBOmG9ExGaSxpKKQ+wGXEEqXLpZL8tUEtPp\n", + "wK4Rcaek/YFJNdpUO5s0ZPCLwE0RMTNvJJdHxD59xDmiTkyz6jyvqN4AZ/bxmkVz+lhHb+uqbtfb\n", + "Z1J2falx2m3/ILBNRMxWOiY1Js8+m1Qc4V66ElFUvUZf/4SV9zkfeLMwfT5d/wfF9zG2j3WVOU6m\n", + "XtrdHRHb1Vn2atJu8SqkIhHfIG2Dld3QH5D2Qj4paXVgSiGuh0iJdj3gljy93jZYK/aigyOix+GT\n", + "ZlL6Z/oOqfrTcaQOyZqkQ07fbVYcw/4YZkS8QfpQ/xd4HXik8m2pZJNC88qGMg54Jh9v2Y+uDf81\n", + "0jcsNZa5mlSo9UDSPzekXZPt83EXJC0paZ2q+F6tE1Nv7+sV4KXK8S3gs3T94/RlsAWPryEdfxoh\n", + "aUVST+hG0me7VFW7fWFBSb63k5JdX68/HngpJ8v1SWPzVPyZNITA3nR9vtcCH1c6XjoO+CiDO+g/\n", + "Q9L6kkaQdmsrij2iWttAxQi6TmzsQ/oMKgK4D1hReRAySaMlbVhjPTeSDjnMi4g3gamkk5aVhDme\n", + "rp5psfKQSD2/PUg90A0ptw2+DLwsafs8ad/C7EuBg5SGlUDSuuq9YrsiFW2erjQyAflvU/3l8yrd\n", + "t5UyPgf8LSJeIg1vUTmR1tTq8cM5YS74x4k01suDpB7KvsB/5oPbd5GOaVUv8z3ShvYvug8YdTbw\n", + "jXwg+x3FZSKdif4raaClv+Zpz5GOK50laSppV6jHSaaSMdV6vj/pJNRU0uBW36/1QdRYPqqe9/Za\n", + "PaZHxJ9Ju69TSceVvpF3iaYC8/KB/kOBE0i7TneQPrf9I43709cZ478DoyTdQ9oVvb7wui+T6ie+\n", + "PSJuztNuJh3TvYN0XPNOUjXvPt9DH6//LdLf7lpSQopC++Lex6/yCZcxVcvPBLZSuiRnElV/j/z+\n", + "9yCdsLuddPx12x6Bpt3Yx4F/50lXA+MionKpz4+AoyTdStqt7xZnRNxH2qbOJX35H0D9bfDzwPHq\n", + "Ko1XWefJpM/91vy+TsyvWWxD1fPPAl/Jr3ctXUM/VOZfCWzYx0mfbnKC3h84Pk86lvT3PjbH0zQu\n", + "72YLNUlL5sMfS5CO8x2YvyBbEctrEdHfnpMV5ENg746IQwaw7JWkY5q3Dn1kyXDuYdqi4de5V3QL\n", + "6WxxS5Jl5t7H4L0B7Kx84XpZOVmuSboMqWHcwzQzK8k9TDOzkpwwzcxKcsI0MyvJCdPMrCQnTDOz\n", + "kpwwzcxK+v/Vu3UGhFt1GwAAAABJRU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "bins = np.linspace(-6,10,50)\n", + "\n", + "fig=plt.figure(figsize=[5,5])\n", + "ax = fig.add_subplot(111)\n", + "ax.hist(rel_error_PCE,bins=bins,normed=True,histtype='step',label='PCE',color='k')\n", + "ax.hist(rel_error_QMC2,bins=bins,normed=True,histtype='step',label='QMC Hammersley',color='b')\n", + "ax.hist(rel_error_QMC,bins=bins,normed=True,histtype='step',label='QMC Antithetic',color='r')\n", + "ax.hist(rel_error_GCL,bins=bins,normed=True,histtype='step',label='GCL',color='g')\n", + "ax.set_xlabel('Relative error in rotor avg multiple wake deficit [%]')\n", + "ax.set_ylabel('PDF [-]')\n", + "plt.legend(loc=1)\n", + "fig.savefig('Rotor_avg_int_approx_comparison.pdf')\n", + "print" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.10" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/fusedwake/test/NewQuadratureRule/PCE_Quad_rotor.pdf b/fusedwake/test/NewQuadratureRule/PCE_Quad_rotor.pdf new file mode 100644 index 0000000..a0229fb Binary files /dev/null and b/fusedwake/test/NewQuadratureRule/PCE_Quad_rotor.pdf differ diff --git a/fusedwake/test/NewQuadratureRule/Rotor_avg_int_approx_comparison.pdf b/fusedwake/test/NewQuadratureRule/Rotor_avg_int_approx_comparison.pdf new file mode 100644 index 0000000..7047fb0 Binary files /dev/null and b/fusedwake/test/NewQuadratureRule/Rotor_avg_int_approx_comparison.pdf differ