From 7888f4259e04769c2c6a6f48c33bc0157bf64ffc Mon Sep 17 00:00:00 2001 From: sathish Date: Mon, 12 Dec 2022 10:57:21 +0100 Subject: [PATCH 1/8] adding mars --- mars.txt | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mars.txt diff --git a/mars.txt b/mars.txt new file mode 100644 index 0000000..2c0e702 --- /dev/null +++ b/mars.txt @@ -0,0 +1,2 @@ +Men try to settle in Mars. +Elon Musk is trying to setup a base there. From 7bc415f0df1b0f12e63fe62233fb75ea2089d56f Mon Sep 17 00:00:00 2001 From: sathish Date: Mon, 12 Dec 2022 11:30:02 +0100 Subject: [PATCH 2/8] compare with EARTH --- mars.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mars.txt b/mars.txt index 2c0e702..2bd8b0d 100644 --- a/mars.txt +++ b/mars.txt @@ -1,2 +1,5 @@ Men try to settle in Mars. Elon Musk is trying to setup a base there. +He relies on his space startup. +Mars may be good for human civilization but won't be habitable same as Earth. + From a51bdb00cd87f8e0213a3cd6c84fd8a1f551e1d8 Mon Sep 17 00:00:00 2001 From: sathish Date: Mon, 12 Dec 2022 12:03:17 +0100 Subject: [PATCH 3/8] revert changes using checkout --- mars.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/mars.txt b/mars.txt index 2bd8b0d..2c0e702 100644 --- a/mars.txt +++ b/mars.txt @@ -1,5 +1,2 @@ Men try to settle in Mars. Elon Musk is trying to setup a base there. -He relies on his space startup. -Mars may be good for human civilization but won't be habitable same as Earth. - From bc2b6ac7c552792ba683eb6d95c60a88727379a5 Mon Sep 17 00:00:00 2001 From: sathish Date: Mon, 12 Dec 2022 12:04:41 +0100 Subject: [PATCH 4/8] Revert "revert changes using checkout" This reverts commit a51bdb00cd87f8e0213a3cd6c84fd8a1f551e1d8. --- mars.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mars.txt b/mars.txt index 2c0e702..2bd8b0d 100644 --- a/mars.txt +++ b/mars.txt @@ -1,2 +1,5 @@ Men try to settle in Mars. Elon Musk is trying to setup a base there. +He relies on his space startup. +Mars may be good for human civilization but won't be habitable same as Earth. + From 0d51b7b1a35358f52835e9ad68dc07ef2131ea55 Mon Sep 17 00:00:00 2001 From: sathish Date: Mon, 12 Dec 2022 12:08:19 +0100 Subject: [PATCH 5/8] ignore data files and results folder --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f451386 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.dat +results/ From ea3f90bfe9c3ef1a753a7a1bd878c7b97ee38264 Mon Sep 17 00:00:00 2001 From: sathish Date: Wed, 14 Dec 2022 11:08:13 +0100 Subject: [PATCH 6/8] plot temperature files to learn modular approach --- plot_demo.ipynb | 70 +++++ plot_demo.py | 26 ++ temperatures.csv | 722 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 818 insertions(+) create mode 100644 plot_demo.ipynb create mode 100644 plot_demo.py create mode 100644 temperatures.csv diff --git a/plot_demo.ipynb b/plot_demo.ipynb new file mode 100644 index 0000000..480adc9 --- /dev/null +++ b/plot_demo.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "source": [ + "import pandas as pd\n", + "from matplotlib import pyplot as plt\n", + "\n", + "def plot_temperatures(temperatures, mean):\n", + "\n", + " plt.plot(temperatures, \"r-\")\n", + " plt.xlabel('measurements')\n", + " plt.ylabel('Air temperature (degC)');\n", + "\n", + " # plot results\n", + " plt.axhline(y=mean, color=\"b\", linestyle=\"--\")\n", + " plt.savefig(str(len(temperatures))+\".png\", format='png')\n", + " plt.show()\n", + " # plt.clf()\n", + "\n", + "for num_measurements in [25, 100, 500]:\n", + " # read data from file\n", + " data = pd.read_csv(\"temperatures.csv\", nrows=num_measurements)\n", + " temperatures = data[\"Air temperature (degC)\"]\n", + "\n", + " # compute statistics\n", + " mean = sum(temperatures) / num_measurements\n", + "\n", + " plot_temperatures(temperatures, mean)\n" + ], + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {} + } + ], + "metadata": {} + } + ], + "metadata": { + "orig_nbformat": 4, + "language_info": { + "name": "python", + "version": "3.6.8", + "mimetype": "text/x-python", + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "pygments_lexer": "ipython3", + "nbconvert_exporter": "python", + "file_extension": ".py" + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3.6.8 64-bit ('base': conda)" + }, + "interpreter": { + "hash": "c9590d7032ea884dfefbafe07253313ce5154fbe651f8bce5ea637ccc15b006b" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/plot_demo.py b/plot_demo.py new file mode 100644 index 0000000..e76b915 --- /dev/null +++ b/plot_demo.py @@ -0,0 +1,26 @@ +import pandas as pd +from matplotlib import pyplot as plt + +def plot_temperatures(temperatures, mean): + + plt.plot(temperatures, "r-") + plt.xlabel('measurements') + plt.ylabel('Air temperature (degC)'); + + # plot results + plt.axhline(y=mean, color="b", linestyle="--") + plt.savefig(str(len(temperatures))+".png", format='png') + plt.show() + # plt.clf() + +for num_measurements in [25, 100, 500]: + # read data from file + data = pd.read_csv("temperatures.csv", nrows=num_measurements) + temperatures = data["Air temperature (degC)"] + + # compute statistics + mean = sum(temperatures) / num_measurements + + plot_temperatures(temperatures, mean) + + diff --git a/temperatures.csv b/temperatures.csv new file mode 100644 index 0000000..b678d3c --- /dev/null +++ b/temperatures.csv @@ -0,0 +1,722 @@ +Year,m,d,Time,Time zone,Air temperature (degC) +2019,11,1,00:00,UTC,-0.2 +2019,11,1,01:00,UTC,-0.3 +2019,11,1,02:00,UTC,-0.7 +2019,11,1,03:00,UTC,-0.8 +2019,11,1,04:00,UTC,-0.8 +2019,11,1,05:00,UTC,-1.3 +2019,11,1,06:00,UTC,-1 +2019,11,1,07:00,UTC,-0.7 +2019,11,1,08:00,UTC,0.5 +2019,11,1,09:00,UTC,1.5 +2019,11,1,10:00,UTC,2.7 +2019,11,1,11:00,UTC,3.2 +2019,11,1,12:00,UTC,3.2 +2019,11,1,13:00,UTC,3.2 +2019,11,1,14:00,UTC,2.5 +2019,11,1,15:00,UTC,1.4 +2019,11,1,16:00,UTC,0.7 +2019,11,1,17:00,UTC,-0.2 +2019,11,1,18:00,UTC,-1.1 +2019,11,1,19:00,UTC,-2.4 +2019,11,1,20:00,UTC,-2.6 +2019,11,1,21:00,UTC,-1.9 +2019,11,1,22:00,UTC,-1.9 +2019,11,1,23:00,UTC,-2.6 +2019,11,2,00:00,UTC,-1.7 +2019,11,2,01:00,UTC,0.1 +2019,11,2,02:00,UTC,0.5 +2019,11,2,03:00,UTC,0.9 +2019,11,2,04:00,UTC,2.2 +2019,11,2,05:00,UTC,3 +2019,11,2,06:00,UTC,3.4 +2019,11,2,07:00,UTC,4.5 +2019,11,2,08:00,UTC,4.7 +2019,11,2,09:00,UTC,5 +2019,11,2,10:00,UTC,5.2 +2019,11,2,11:00,UTC,4.9 +2019,11,2,12:00,UTC,5.1 +2019,11,2,13:00,UTC,5.4 +2019,11,2,14:00,UTC,5.4 +2019,11,2,15:00,UTC,5.3 +2019,11,2,16:00,UTC,5 +2019,11,2,17:00,UTC,3.9 +2019,11,2,18:00,UTC,3.8 +2019,11,2,19:00,UTC,3.7 +2019,11,2,20:00,UTC,3.5 +2019,11,2,21:00,UTC,3.5 +2019,11,2,22:00,UTC,3.5 +2019,11,2,23:00,UTC,3.4 +2019,11,3,00:00,UTC,3.5 +2019,11,3,01:00,UTC,3.4 +2019,11,3,02:00,UTC,3 +2019,11,3,03:00,UTC,3.1 +2019,11,3,04:00,UTC,3.1 +2019,11,3,05:00,UTC,2.8 +2019,11,3,06:00,UTC,2.1 +2019,11,3,07:00,UTC,1.3 +2019,11,3,08:00,UTC,1.4 +2019,11,3,09:00,UTC,1.8 +2019,11,3,10:00,UTC,2.1 +2019,11,3,11:00,UTC,2.3 +2019,11,3,12:00,UTC,2.7 +2019,11,3,13:00,UTC,3.1 +2019,11,3,14:00,UTC,3.1 +2019,11,3,15:00,UTC,2.5 +2019,11,3,16:00,UTC,1.3 +2019,11,3,17:00,UTC,0.6 +2019,11,3,18:00,UTC,0.9 +2019,11,3,19:00,UTC,0.8 +2019,11,3,20:00,UTC,0 +2019,11,3,21:00,UTC,-0.5 +2019,11,3,22:00,UTC,-0.6 +2019,11,3,23:00,UTC,-0.3 +2019,11,4,00:00,UTC,-0.7 +2019,11,4,01:00,UTC,-1.1 +2019,11,4,02:00,UTC,-1.3 +2019,11,4,03:00,UTC,-1.4 +2019,11,4,04:00,UTC,-1.7 +2019,11,4,05:00,UTC,-1.9 +2019,11,4,06:00,UTC,-1.9 +2019,11,4,07:00,UTC,-1.9 +2019,11,4,08:00,UTC,-1.7 +2019,11,4,09:00,UTC,-1.2 +2019,11,4,10:00,UTC,-0.9 +2019,11,4,11:00,UTC,-0.3 +2019,11,4,12:00,UTC,-0.2 +2019,11,4,13:00,UTC,-0.4 +2019,11,4,14:00,UTC,-0.7 +2019,11,4,15:00,UTC,-1.2 +2019,11,4,16:00,UTC,-1.9 +2019,11,4,17:00,UTC,-2.3 +2019,11,4,18:00,UTC,-2.6 +2019,11,4,19:00,UTC,-2.7 +2019,11,4,20:00,UTC,-2.9 +2019,11,4,21:00,UTC,-3.2 +2019,11,4,22:00,UTC,-3.2 +2019,11,4,23:00,UTC,-3.4 +2019,11,5,00:00,UTC,-3.5 +2019,11,5,01:00,UTC,-3.4 +2019,11,5,02:00,UTC,-3.2 +2019,11,5,03:00,UTC,-3 +2019,11,5,04:00,UTC,-2.9 +2019,11,5,05:00,UTC,-2.9 +2019,11,5,06:00,UTC,-2.8 +2019,11,5,07:00,UTC,-2.8 +2019,11,5,08:00,UTC,-2.5 +2019,11,5,09:00,UTC,-2.1 +2019,11,5,10:00,UTC,-1.4 +2019,11,5,11:00,UTC,-0.8 +2019,11,5,12:00,UTC,-0.2 +2019,11,5,13:00,UTC,-0.5 +2019,11,5,14:00,UTC,-0.9 +2019,11,5,15:00,UTC,-1.3 +2019,11,5,16:00,UTC,-1.6 +2019,11,5,17:00,UTC,-1.8 +2019,11,5,18:00,UTC,-2.1 +2019,11,5,19:00,UTC,-2.3 +2019,11,5,20:00,UTC,-2.1 +2019,11,5,21:00,UTC,-2.4 +2019,11,5,22:00,UTC,-2.8 +2019,11,5,23:00,UTC,-3.2 +2019,11,6,00:00,UTC,-3.5 +2019,11,6,01:00,UTC,-3.9 +2019,11,6,02:00,UTC,-4.3 +2019,11,6,03:00,UTC,-4.3 +2019,11,6,04:00,UTC,-5.2 +2019,11,6,05:00,UTC,-5.4 +2019,11,6,06:00,UTC,-5.7 +2019,11,6,07:00,UTC,-5.6 +2019,11,6,08:00,UTC,-5.2 +2019,11,6,09:00,UTC,-4 +2019,11,6,10:00,UTC,-2.6 +2019,11,6,11:00,UTC,-1.9 +2019,11,6,12:00,UTC,-1.9 +2019,11,6,13:00,UTC,-2.2 +2019,11,6,14:00,UTC,-2.7 +2019,11,6,15:00,UTC,-3.2 +2019,11,6,16:00,UTC,-4 +2019,11,6,17:00,UTC,-4.5 +2019,11,6,18:00,UTC,-5 +2019,11,6,19:00,UTC,-5.3 +2019,11,6,20:00,UTC,-5 +2019,11,6,21:00,UTC,-4.5 +2019,11,6,22:00,UTC,-4.4 +2019,11,6,23:00,UTC,-3.8 +2019,11,7,00:00,UTC,-3.7 +2019,11,7,01:00,UTC,-4 +2019,11,7,02:00,UTC,-4 +2019,11,7,03:00,UTC,-3.8 +2019,11,7,04:00,UTC,-3.7 +2019,11,7,05:00,UTC,-3.5 +2019,11,7,06:00,UTC,-3.2 +2019,11,7,07:00,UTC,-3.2 +2019,11,7,08:00,UTC,-2.9 +2019,11,7,09:00,UTC,-2.7 +2019,11,7,10:00,UTC,-2.3 +2019,11,7,11:00,UTC,-2.1 +2019,11,7,12:00,UTC,-1.8 +2019,11,7,13:00,UTC,-1.6 +2019,11,7,14:00,UTC,-1.3 +2019,11,7,15:00,UTC,-1.3 +2019,11,7,16:00,UTC,-1.2 +2019,11,7,17:00,UTC,-1.3 +2019,11,7,18:00,UTC,-1.3 +2019,11,7,19:00,UTC,-1.4 +2019,11,7,20:00,UTC,-1.4 +2019,11,7,21:00,UTC,-1.5 +2019,11,7,22:00,UTC,-1.4 +2019,11,7,23:00,UTC,-1.5 +2019,11,8,00:00,UTC,-1.6 +2019,11,8,01:00,UTC,-1.8 +2019,11,8,02:00,UTC,-1.9 +2019,11,8,03:00,UTC,-2 +2019,11,8,04:00,UTC,-2 +2019,11,8,05:00,UTC,-1.9 +2019,11,8,06:00,UTC,-1.6 +2019,11,8,07:00,UTC,-1.4 +2019,11,8,08:00,UTC,-1 +2019,11,8,09:00,UTC,-0.7 +2019,11,8,10:00,UTC,-0.3 +2019,11,8,11:00,UTC,-0.2 +2019,11,8,12:00,UTC,0 +2019,11,8,13:00,UTC,0 +2019,11,8,14:00,UTC,0.1 +2019,11,8,15:00,UTC,0.3 +2019,11,8,16:00,UTC,0.5 +2019,11,8,17:00,UTC,1.1 +2019,11,8,18:00,UTC,1.8 +2019,11,8,19:00,UTC,2.4 +2019,11,8,20:00,UTC,3.7 +2019,11,8,21:00,UTC,4.8 +2019,11,8,22:00,UTC,4.9 +2019,11,8,23:00,UTC,4.9 +2019,11,9,00:00,UTC,4.9 +2019,11,9,01:00,UTC,5.2 +2019,11,9,02:00,UTC,5.1 +2019,11,9,03:00,UTC,5.1 +2019,11,9,04:00,UTC,4.4 +2019,11,9,05:00,UTC,4.7 +2019,11,9,06:00,UTC,4.8 +2019,11,9,07:00,UTC,5 +2019,11,9,08:00,UTC,5.6 +2019,11,9,09:00,UTC,5.9 +2019,11,9,10:00,UTC,5.9 +2019,11,9,11:00,UTC,5.8 +2019,11,9,12:00,UTC,5.7 +2019,11,9,13:00,UTC,5.2 +2019,11,9,14:00,UTC,5.3 +2019,11,9,15:00,UTC,5.3 +2019,11,9,16:00,UTC,5.4 +2019,11,9,17:00,UTC,4.6 +2019,11,9,18:00,UTC,4.8 +2019,11,9,19:00,UTC,5 +2019,11,9,20:00,UTC,4.5 +2019,11,9,21:00,UTC,4.6 +2019,11,9,22:00,UTC,4.5 +2019,11,9,23:00,UTC,4.7 +2019,11,10,00:00,UTC,4.4 +2019,11,10,01:00,UTC,4.6 +2019,11,10,02:00,UTC,4.6 +2019,11,10,03:00,UTC,4.8 +2019,11,10,04:00,UTC,4.7 +2019,11,10,05:00,UTC,4.9 +2019,11,10,06:00,UTC,5.3 +2019,11,10,07:00,UTC,5.5 +2019,11,10,08:00,UTC,6 +2019,11,10,09:00,UTC,6.7 +2019,11,10,10:00,UTC,7.6 +2019,11,10,11:00,UTC,8.2 +2019,11,10,12:00,UTC,8.4 +2019,11,10,13:00,UTC,8.4 +2019,11,10,14:00,UTC,8 +2019,11,10,15:00,UTC,8 +2019,11,10,16:00,UTC,7.7 +2019,11,10,17:00,UTC,7.6 +2019,11,10,18:00,UTC,7.4 +2019,11,10,19:00,UTC,6.8 +2019,11,10,20:00,UTC,6.2 +2019,11,10,21:00,UTC,4.6 +2019,11,10,22:00,UTC,3.5 +2019,11,10,23:00,UTC,2.5 +2019,11,11,00:00,UTC,1.6 +2019,11,11,01:00,UTC,1.2 +2019,11,11,02:00,UTC,1.2 +2019,11,11,03:00,UTC,1.2 +2019,11,11,04:00,UTC,1 +2019,11,11,05:00,UTC,0.8 +2019,11,11,06:00,UTC,0.3 +2019,11,11,07:00,UTC,0.1 +2019,11,11,08:00,UTC,0 +2019,11,11,09:00,UTC,0.1 +2019,11,11,10:00,UTC,0 +2019,11,11,11:00,UTC,0 +2019,11,11,12:00,UTC,-0.2 +2019,11,11,13:00,UTC,-0.4 +2019,11,11,14:00,UTC,-0.7 +2019,11,11,15:00,UTC,-0.5 +2019,11,11,16:00,UTC,-0.8 +2019,11,11,17:00,UTC,-1 +2019,11,11,18:00,UTC,-1.2 +2019,11,11,19:00,UTC,-1.2 +2019,11,11,20:00,UTC,-1.2 +2019,11,11,21:00,UTC,-1.1 +2019,11,11,22:00,UTC,-1.1 +2019,11,11,23:00,UTC,-1.1 +2019,11,12,00:00,UTC,-1.1 +2019,11,12,01:00,UTC,-0.8 +2019,11,12,02:00,UTC,-0.9 +2019,11,12,03:00,UTC,-2 +2019,11,12,04:00,UTC,-2.5 +2019,11,12,05:00,UTC,-2.4 +2019,11,12,06:00,UTC,-2.3 +2019,11,12,07:00,UTC,-2.3 +2019,11,12,08:00,UTC,-1 +2019,11,12,09:00,UTC,0.2 +2019,11,12,10:00,UTC,0.5 +2019,11,12,11:00,UTC,1.2 +2019,11,12,12:00,UTC,1.4 +2019,11,12,13:00,UTC,2.1 +2019,11,12,14:00,UTC,2.3 +2019,11,12,15:00,UTC,4.5 +2019,11,12,16:00,UTC,4.9 +2019,11,12,17:00,UTC,5.3 +2019,11,12,18:00,UTC,4.6 +2019,11,12,19:00,UTC,4.5 +2019,11,12,20:00,UTC,4.5 +2019,11,12,21:00,UTC,4.6 +2019,11,12,22:00,UTC,5.2 +2019,11,12,23:00,UTC,5.5 +2019,11,13,00:00,UTC,5.8 +2019,11,13,01:00,UTC,6 +2019,11,13,02:00,UTC,6 +2019,11,13,03:00,UTC,5.8 +2019,11,13,04:00,UTC,5.8 +2019,11,13,05:00,UTC,5.7 +2019,11,13,06:00,UTC,5.9 +2019,11,13,07:00,UTC,5.9 +2019,11,13,08:00,UTC,5.8 +2019,11,13,09:00,UTC,5.7 +2019,11,13,10:00,UTC,5.7 +2019,11,13,11:00,UTC,5.8 +2019,11,13,12:00,UTC,5.9 +2019,11,13,13:00,UTC,6.2 +2019,11,13,14:00,UTC,6.7 +2019,11,13,15:00,UTC,7 +2019,11,13,16:00,UTC,7.2 +2019,11,13,17:00,UTC,7.3 +2019,11,13,18:00,UTC,7.3 +2019,11,13,19:00,UTC,7.4 +2019,11,13,20:00,UTC,7.3 +2019,11,13,21:00,UTC,7.9 +2019,11,13,22:00,UTC,8.4 +2019,11,13,23:00,UTC,8.4 +2019,11,14,00:00,UTC,8.3 +2019,11,14,01:00,UTC,8.3 +2019,11,14,02:00,UTC,8.4 +2019,11,14,03:00,UTC,8.6 +2019,11,14,04:00,UTC,8.3 +2019,11,14,05:00,UTC,8.8 +2019,11,14,06:00,UTC,9 +2019,11,14,07:00,UTC,9 +2019,11,14,08:00,UTC,8.8 +2019,11,14,09:00,UTC,8.8 +2019,11,14,10:00,UTC,9 +2019,11,14,11:00,UTC,9.2 +2019,11,14,12:00,UTC,9.9 +2019,11,14,13:00,UTC,10 +2019,11,14,14:00,UTC,10.5 +2019,11,14,15:00,UTC,9.5 +2019,11,14,16:00,UTC,7.9 +2019,11,14,17:00,UTC,6.5 +2019,11,14,18:00,UTC,5.8 +2019,11,14,19:00,UTC,4.8 +2019,11,14,20:00,UTC,4.6 +2019,11,14,21:00,UTC,4.4 +2019,11,14,22:00,UTC,4.1 +2019,11,14,23:00,UTC,3.8 +2019,11,15,00:00,UTC,4.3 +2019,11,15,01:00,UTC,4.3 +2019,11,15,02:00,UTC,4 +2019,11,15,03:00,UTC,3.9 +2019,11,15,04:00,UTC,3.5 +2019,11,15,05:00,UTC,2.2 +2019,11,15,06:00,UTC,1.7 +2019,11,15,07:00,UTC,0.1 +2019,11,15,08:00,UTC,0.7 +2019,11,15,09:00,UTC,2.9 +2019,11,15,10:00,UTC,3 +2019,11,15,11:00,UTC,3.5 +2019,11,15,12:00,UTC,3.7 +2019,11,15,13:00,UTC,2.9 +2019,11,15,14:00,UTC,2 +2019,11,15,15:00,UTC,0.5 +2019,11,15,16:00,UTC,-0.1 +2019,11,15,17:00,UTC,-1.5 +2019,11,15,18:00,UTC,-0.6 +2019,11,15,19:00,UTC,-0.7 +2019,11,15,20:00,UTC,-0.9 +2019,11,15,21:00,UTC,-1.2 +2019,11,15,22:00,UTC,-1.3 +2019,11,15,23:00,UTC,-1.7 +2019,11,16,00:00,UTC,-1.4 +2019,11,16,01:00,UTC,-1.1 +2019,11,16,02:00,UTC,-0.6 +2019,11,16,03:00,UTC,-0.5 +2019,11,16,04:00,UTC,-0.5 +2019,11,16,05:00,UTC,-0.2 +2019,11,16,06:00,UTC,-0.2 +2019,11,16,07:00,UTC,-0.1 +2019,11,16,08:00,UTC,-0.2 +2019,11,16,09:00,UTC,-0.1 +2019,11,16,10:00,UTC,0.1 +2019,11,16,11:00,UTC,0.2 +2019,11,16,12:00,UTC,0.3 +2019,11,16,13:00,UTC,0.3 +2019,11,16,14:00,UTC,0.3 +2019,11,16,15:00,UTC,0.4 +2019,11,16,16:00,UTC,0.5 +2019,11,16,17:00,UTC,0.6 +2019,11,16,18:00,UTC,0.9 +2019,11,16,19:00,UTC,1.3 +2019,11,16,20:00,UTC,1.6 +2019,11,16,21:00,UTC,1.8 +2019,11,16,22:00,UTC,2.6 +2019,11,16,23:00,UTC,4 +2019,11,17,00:00,UTC,3.8 +2019,11,17,01:00,UTC,4 +2019,11,17,02:00,UTC,4.4 +2019,11,17,03:00,UTC,4.8 +2019,11,17,04:00,UTC,5.1 +2019,11,17,05:00,UTC,5.5 +2019,11,17,06:00,UTC,5.9 +2019,11,17,07:00,UTC,6.9 +2019,11,17,08:00,UTC,7.5 +2019,11,17,09:00,UTC,7.8 +2019,11,17,10:00,UTC,7.6 +2019,11,17,11:00,UTC,7.8 +2019,11,17,12:00,UTC,7.9 +2019,11,17,13:00,UTC,7.6 +2019,11,17,14:00,UTC,7.6 +2019,11,17,15:00,UTC,7.8 +2019,11,17,16:00,UTC,7.8 +2019,11,17,17:00,UTC,7.5 +2019,11,17,18:00,UTC,7.4 +2019,11,17,19:00,UTC,7.3 +2019,11,17,20:00,UTC,7.4 +2019,11,17,21:00,UTC,7.6 +2019,11,17,22:00,UTC,7.4 +2019,11,17,23:00,UTC,7.4 +2019,11,18,00:00,UTC,7.2 +2019,11,18,01:00,UTC,7.3 +2019,11,18,02:00,UTC,6.8 +2019,11,18,03:00,UTC,6.2 +2019,11,18,04:00,UTC,4.2 +2019,11,18,05:00,UTC,4.5 +2019,11,18,06:00,UTC,2.8 +2019,11,18,07:00,UTC,1.4 +2019,11,18,08:00,UTC,2.3 +2019,11,18,09:00,UTC,4.9 +2019,11,18,10:00,UTC,5.2 +2019,11,18,11:00,UTC,5.6 +2019,11,18,12:00,UTC,5.4 +2019,11,18,13:00,UTC,5.3 +2019,11,18,14:00,UTC,5.3 +2019,11,18,15:00,UTC,5.3 +2019,11,18,16:00,UTC,5.4 +2019,11,18,17:00,UTC,5.5 +2019,11,18,18:00,UTC,5.4 +2019,11,18,19:00,UTC,5.5 +2019,11,18,20:00,UTC,5.4 +2019,11,18,21:00,UTC,5.9 +2019,11,18,22:00,UTC,6.5 +2019,11,18,23:00,UTC,6.6 +2019,11,19,00:00,UTC,6.4 +2019,11,19,01:00,UTC,6.3 +2019,11,19,02:00,UTC,6.4 +2019,11,19,03:00,UTC,6.5 +2019,11,19,04:00,UTC,6.5 +2019,11,19,05:00,UTC,6.7 +2019,11,19,06:00,UTC,6.9 +2019,11,19,07:00,UTC,6.5 +2019,11,19,08:00,UTC,6.6 +2019,11,19,09:00,UTC,6.6 +2019,11,19,10:00,UTC,6.7 +2019,11,19,11:00,UTC,6.8 +2019,11,19,12:00,UTC,6.1 +2019,11,19,13:00,UTC,6.2 +2019,11,19,14:00,UTC,6.2 +2019,11,19,15:00,UTC,6.2 +2019,11,19,16:00,UTC,5.9 +2019,11,19,17:00,UTC,6.1 +2019,11,19,18:00,UTC,6.1 +2019,11,19,19:00,UTC,5.9 +2019,11,19,20:00,UTC,5.9 +2019,11,19,21:00,UTC,5.9 +2019,11,19,22:00,UTC,5.7 +2019,11,19,23:00,UTC,5.3 +2019,11,20,00:00,UTC,5.2 +2019,11,20,01:00,UTC,4.9 +2019,11,20,02:00,UTC,5.1 +2019,11,20,03:00,UTC,5.2 +2019,11,20,04:00,UTC,5.4 +2019,11,20,05:00,UTC,5.4 +2019,11,20,06:00,UTC,5.6 +2019,11,20,07:00,UTC,5.7 +2019,11,20,08:00,UTC,5.8 +2019,11,20,09:00,UTC,6 +2019,11,20,10:00,UTC,6.1 +2019,11,20,11:00,UTC,6.2 +2019,11,20,12:00,UTC,6.3 +2019,11,20,13:00,UTC,6.3 +2019,11,20,14:00,UTC,5.9 +2019,11,20,15:00,UTC,5.7 +2019,11,20,16:00,UTC,5.6 +2019,11,20,17:00,UTC,5.3 +2019,11,20,18:00,UTC,5.1 +2019,11,20,19:00,UTC,5 +2019,11,20,20:00,UTC,4.8 +2019,11,20,21:00,UTC,4.7 +2019,11,20,22:00,UTC,4.5 +2019,11,20,23:00,UTC,4.7 +2019,11,21,00:00,UTC,4.7 +2019,11,21,01:00,UTC,4.4 +2019,11,21,02:00,UTC,4.9 +2019,11,21,03:00,UTC,4.9 +2019,11,21,04:00,UTC,5.2 +2019,11,21,05:00,UTC,4.6 +2019,11,21,06:00,UTC,3.9 +2019,11,21,07:00,UTC,3.4 +2019,11,21,08:00,UTC,3.6 +2019,11,21,09:00,UTC,2.8 +2019,11,21,10:00,UTC,3.2 +2019,11,21,11:00,UTC,3.6 +2019,11,21,12:00,UTC,3.9 +2019,11,21,13:00,UTC,4 +2019,11,21,14:00,UTC,4 +2019,11,21,15:00,UTC,4.5 +2019,11,21,16:00,UTC,4.7 +2019,11,21,17:00,UTC,4.9 +2019,11,21,18:00,UTC,5 +2019,11,21,19:00,UTC,4.3 +2019,11,21,20:00,UTC,3.7 +2019,11,21,21:00,UTC,4.1 +2019,11,21,22:00,UTC,4.2 +2019,11,21,23:00,UTC,4 +2019,11,22,00:00,UTC,3.6 +2019,11,22,01:00,UTC,3.2 +2019,11,22,02:00,UTC,3.5 +2019,11,22,03:00,UTC,3.3 +2019,11,22,04:00,UTC,3.1 +2019,11,22,05:00,UTC,2.8 +2019,11,22,06:00,UTC,2.4 +2019,11,22,07:00,UTC,1.9 +2019,11,22,08:00,UTC,1.5 +2019,11,22,09:00,UTC,1.3 +2019,11,22,10:00,UTC,1 +2019,11,22,11:00,UTC,0.8 +2019,11,22,12:00,UTC,0.7 +2019,11,22,13:00,UTC,0.6 +2019,11,22,14:00,UTC,0.1 +2019,11,22,15:00,UTC,-0.1 +2019,11,22,16:00,UTC,-0.3 +2019,11,22,17:00,UTC,-0.4 +2019,11,22,18:00,UTC,-0.4 +2019,11,22,19:00,UTC,-0.5 +2019,11,22,20:00,UTC,-0.6 +2019,11,22,21:00,UTC,-0.4 +2019,11,22,22:00,UTC,-0.2 +2019,11,22,23:00,UTC,-0.1 +2019,11,23,00:00,UTC,0.2 +2019,11,23,01:00,UTC,0.2 +2019,11,23,02:00,UTC,0.2 +2019,11,23,03:00,UTC,0.2 +2019,11,23,04:00,UTC,0.4 +2019,11,23,05:00,UTC,0.3 +2019,11,23,06:00,UTC,0.3 +2019,11,23,07:00,UTC,0.3 +2019,11,23,08:00,UTC,0.4 +2019,11,23,09:00,UTC,0.4 +2019,11,23,10:00,UTC,0.5 +2019,11,23,11:00,UTC,0.6 +2019,11,23,12:00,UTC,0.5 +2019,11,23,13:00,UTC,0.3 +2019,11,23,14:00,UTC,-0.4 +2019,11,23,15:00,UTC,-0.6 +2019,11,23,16:00,UTC,-0.8 +2019,11,23,17:00,UTC,-1 +2019,11,23,18:00,UTC,-0.9 +2019,11,23,19:00,UTC,-1.3 +2019,11,23,20:00,UTC,-1.6 +2019,11,23,21:00,UTC,-1.4 +2019,11,23,22:00,UTC,-2 +2019,11,23,23:00,UTC,-2.2 +2019,11,24,00:00,UTC,-2.3 +2019,11,24,01:00,UTC,-2.1 +2019,11,24,02:00,UTC,-2.1 +2019,11,24,03:00,UTC,-2.1 +2019,11,24,04:00,UTC,-3 +2019,11,24,05:00,UTC,-2.8 +2019,11,24,06:00,UTC,-3 +2019,11,24,07:00,UTC,-3.3 +2019,11,24,08:00,UTC,-2.2 +2019,11,24,09:00,UTC,-1.5 +2019,11,24,10:00,UTC,-0.6 +2019,11,24,11:00,UTC,-0.5 +2019,11,24,12:00,UTC,-0.5 +2019,11,24,13:00,UTC,-0.7 +2019,11,24,14:00,UTC,-1.4 +2019,11,24,15:00,UTC,-1.4 +2019,11,24,16:00,UTC,-1.7 +2019,11,24,17:00,UTC,-2 +2019,11,24,18:00,UTC,-1.8 +2019,11,24,19:00,UTC,-2.2 +2019,11,24,20:00,UTC,-2.8 +2019,11,24,21:00,UTC,-3 +2019,11,24,22:00,UTC,-3.4 +2019,11,24,23:00,UTC,-4.3 +2019,11,25,00:00,UTC,-4.3 +2019,11,25,01:00,UTC,-4 +2019,11,25,02:00,UTC,-4.6 +2019,11,25,03:00,UTC,-3.7 +2019,11,25,04:00,UTC,-3.8 +2019,11,25,05:00,UTC,-4.5 +2019,11,25,06:00,UTC,-4.2 +2019,11,25,07:00,UTC,-3.6 +2019,11,25,08:00,UTC,-1.8 +2019,11,25,09:00,UTC,-1 +2019,11,25,10:00,UTC,-1.3 +2019,11,25,11:00,UTC,-0.6 +2019,11,25,12:00,UTC,-0.6 +2019,11,25,13:00,UTC,-0.7 +2019,11,25,14:00,UTC,-0.8 +2019,11,25,15:00,UTC,-0.7 +2019,11,25,16:00,UTC,-0.6 +2019,11,25,17:00,UTC,-0.4 +2019,11,25,18:00,UTC,0 +2019,11,25,19:00,UTC,0.1 +2019,11,25,20:00,UTC,-0.1 +2019,11,25,21:00,UTC,0.2 +2019,11,25,22:00,UTC,0.8 +2019,11,25,23:00,UTC,0 +2019,11,26,00:00,UTC,0.5 +2019,11,26,01:00,UTC,0.4 +2019,11,26,02:00,UTC,0.5 +2019,11,26,03:00,UTC,0.3 +2019,11,26,04:00,UTC,0.2 +2019,11,26,05:00,UTC,0.3 +2019,11,26,06:00,UTC,0.6 +2019,11,26,07:00,UTC,0.6 +2019,11,26,08:00,UTC,0.4 +2019,11,26,09:00,UTC,0.3 +2019,11,26,10:00,UTC,0.6 +2019,11,26,11:00,UTC,0.6 +2019,11,26,12:00,UTC,0.7 +2019,11,26,13:00,UTC,0.7 +2019,11,26,14:00,UTC,0.6 +2019,11,26,15:00,UTC,0.8 +2019,11,26,16:00,UTC,1 +2019,11,26,17:00,UTC,0.9 +2019,11,26,18:00,UTC,1 +2019,11,26,19:00,UTC,0.9 +2019,11,26,20:00,UTC,1.2 +2019,11,26,21:00,UTC,1.4 +2019,11,26,22:00,UTC,1.4 +2019,11,26,23:00,UTC,1.3 +2019,11,27,00:00,UTC,1.4 +2019,11,27,01:00,UTC,1.3 +2019,11,27,02:00,UTC,1.3 +2019,11,27,03:00,UTC,1.3 +2019,11,27,04:00,UTC,1.2 +2019,11,27,05:00,UTC,1.1 +2019,11,27,06:00,UTC,1.2 +2019,11,27,07:00,UTC,1 +2019,11,27,08:00,UTC,1.1 +2019,11,27,09:00,UTC,1.1 +2019,11,27,10:00,UTC,1.3 +2019,11,27,11:00,UTC,1.3 +2019,11,27,12:00,UTC,1.1 +2019,11,27,13:00,UTC,0.8 +2019,11,27,14:00,UTC,1.1 +2019,11,27,15:00,UTC,1.6 +2019,11,27,16:00,UTC,1.4 +2019,11,27,17:00,UTC,1.7 +2019,11,27,18:00,UTC,1.7 +2019,11,27,19:00,UTC,2 +2019,11,27,20:00,UTC,2.4 +2019,11,27,21:00,UTC,3.3 +2019,11,27,22:00,UTC,3.4 +2019,11,27,23:00,UTC,3.1 +2019,11,28,00:00,UTC,3 +2019,11,28,01:00,UTC,2.9 +2019,11,28,02:00,UTC,2.8 +2019,11,28,03:00,UTC,2.7 +2019,11,28,04:00,UTC,2.5 +2019,11,28,05:00,UTC,2.3 +2019,11,28,06:00,UTC,2.5 +2019,11,28,07:00,UTC,2.4 +2019,11,28,08:00,UTC,2.7 +2019,11,28,09:00,UTC,3 +2019,11,28,10:00,UTC,3.2 +2019,11,28,11:00,UTC,2.8 +2019,11,28,12:00,UTC,2.5 +2019,11,28,13:00,UTC,2.7 +2019,11,28,14:00,UTC,2.5 +2019,11,28,15:00,UTC,2.9 +2019,11,28,16:00,UTC,3.2 +2019,11,28,17:00,UTC,3.3 +2019,11,28,18:00,UTC,3.6 +2019,11,28,19:00,UTC,3.8 +2019,11,28,20:00,UTC,3.8 +2019,11,28,21:00,UTC,3.9 +2019,11,28,22:00,UTC,4.1 +2019,11,28,23:00,UTC,4.3 +2019,11,29,00:00,UTC,4.3 +2019,11,29,01:00,UTC,4.5 +2019,11,29,02:00,UTC,4.4 +2019,11,29,03:00,UTC,4.4 +2019,11,29,04:00,UTC,4.3 +2019,11,29,05:00,UTC,4.3 +2019,11,29,06:00,UTC,4.4 +2019,11,29,07:00,UTC,4.2 +2019,11,29,08:00,UTC,4.6 +2019,11,29,09:00,UTC,4.6 +2019,11,29,10:00,UTC,4.7 +2019,11,29,11:00,UTC,4.4 +2019,11,29,12:00,UTC,4.4 +2019,11,29,13:00,UTC,4.7 +2019,11,29,14:00,UTC,4.4 +2019,11,29,15:00,UTC,4.5 +2019,11,29,16:00,UTC,0.4 +2019,11,29,17:00,UTC,-0.5 +2019,11,29,18:00,UTC,-1.1 +2019,11,29,19:00,UTC,-1.1 +2019,11,29,20:00,UTC,-1.3 +2019,11,29,21:00,UTC,-1.9 +2019,11,29,22:00,UTC,-2.6 +2019,11,29,23:00,UTC,-3.7 +2019,11,30,00:00,UTC,-4.7 +2019,11,30,01:00,UTC,-5.2 +2019,11,30,02:00,UTC,-5.4 +2019,11,30,03:00,UTC,-5.5 +2019,11,30,04:00,UTC,-5.9 +2019,11,30,05:00,UTC,-6.5 +2019,11,30,06:00,UTC,-6.6 +2019,11,30,07:00,UTC,-6.7 +2019,11,30,08:00,UTC,-5.4 +2019,11,30,09:00,UTC,-4.5 +2019,11,30,10:00,UTC,-3.7 +2019,11,30,11:00,UTC,-3 +2019,11,30,12:00,UTC,-3.1 +2019,11,30,13:00,UTC,-4.2 +2019,11,30,14:00,UTC,-4.9 +2019,11,30,15:00,UTC,-5.1 +2019,11,30,16:00,UTC,-4 +2019,11,30,17:00,UTC,-5.8 +2019,11,30,18:00,UTC,-4.1 +2019,11,30,19:00,UTC,-4.3 +2019,11,30,20:00,UTC,-3.7 +2019,11,30,21:00,UTC,-4.1 +2019,11,30,22:00,UTC,-5.2 +2019,11,30,23:00,UTC,-6 +2019,12,1,00:00,UTC,-6.5 \ No newline at end of file From e216e784697752125c052e142e044dac1f741dc9 Mon Sep 17 00:00:00 2001 From: sathish Date: Wed, 14 Dec 2022 12:35:08 +0100 Subject: [PATCH 7/8] add sphinx documentation --- .gitignore | 1 + Makefile | 19 + build/.buildinfo | 4 + build/.doctrees/environment.pickle | Bin 0 -> 1993034 bytes build/.doctrees/index.doctree | Bin 0 -> 4997 bytes build/.nojekyll | 0 build/_sources/index.rst.txt | 20 + build/_static/alabaster.css | 701 ++ build/_static/basic.css | 906 ++ build/_static/custom.css | 1 + build/_static/doctools.js | 358 + build/_static/documentation_options.js | 14 + build/_static/jquery-3.5.1.js | 10872 +++++++++++++++++++++++ build/_static/jquery.js | 2 + build/_static/language_data.js | 297 + build/_static/pygments.css | 77 + build/_static/searchtools.js | 525 ++ build/_static/underscore-1.13.1.js | 2042 +++++ build/_static/underscore.js | 6 + build/genindex.html | 100 + build/index.html | 111 + build/objects.inv | 6 + build/search.html | 119 + build/searchindex.js | 1 + feature-a.md | 9 + plot_demo.ipynb | 31 + plot_demo.py | 4 +- source/conf.py | 196 + source/index.rst | 20 + 29 files changed, 16439 insertions(+), 3 deletions(-) create mode 100644 Makefile create mode 100644 build/.buildinfo create mode 100644 build/.doctrees/environment.pickle create mode 100644 build/.doctrees/index.doctree create mode 100644 build/.nojekyll create mode 100644 build/_sources/index.rst.txt create mode 100644 build/_static/alabaster.css create mode 100644 build/_static/basic.css create mode 100644 build/_static/custom.css create mode 100644 build/_static/doctools.js create mode 100644 build/_static/documentation_options.js create mode 100644 build/_static/jquery-3.5.1.js create mode 100644 build/_static/jquery.js create mode 100644 build/_static/language_data.js create mode 100644 build/_static/pygments.css create mode 100644 build/_static/searchtools.js create mode 100644 build/_static/underscore-1.13.1.js create mode 100644 build/_static/underscore.js create mode 100644 build/genindex.html create mode 100644 build/index.html create mode 100644 build/objects.inv create mode 100644 build/search.html create mode 100644 build/searchindex.js create mode 100644 feature-a.md create mode 100644 source/conf.py create mode 100644 source/index.rst diff --git a/.gitignore b/.gitignore index f451386..2d50b81 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.dat +*.png results/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..69fe55e --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/build/.buildinfo b/build/.buildinfo new file mode 100644 index 0000000..fb43421 --- /dev/null +++ b/build/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 716789b5473fae3e4d2e72f98ec4536c +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/build/.doctrees/environment.pickle b/build/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..a67970f8fd69a170edb2ec7bb6014737bbcac79e GIT binary patch literal 1993034 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%0A3W=m%dw_hnmvI9yVvH& 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

ydvo~^CcrhCq!i1e@V6!)BS7V`e` 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 literal 0 HcmV?d00001 diff --git a/build/.doctrees/index.doctree b/build/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..1ead2adfdf3eb135722b22a3c7d4479c97fdfbe6 GIT binary patch literal 4997 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 aY@NAY&Z&Utgy6a6Q@SfN1GUK6Xz&HkO@D6y literal 0 HcmV?d00001 diff --git a/build/.nojekyll b/build/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/build/_sources/index.rst.txt b/build/_sources/index.rst.txt new file mode 100644 index 0000000..fc7fff4 --- /dev/null +++ b/build/_sources/index.rst.txt @@ -0,0 +1,20 @@ +.. Fair coding practices documentation master file, created by + sphinx-quickstart on Wed Dec 14 12:26:00 2022. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Fair coding practices's documentation! +================================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + feature-a.md + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/build/_static/alabaster.css b/build/_static/alabaster.css new file mode 100644 index 0000000..0eddaeb --- /dev/null +++ b/build/_static/alabaster.css @@ -0,0 +1,701 @@ +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +body { + font-family: Georgia, serif; + font-size: 17px; + background-color: #fff; + color: #000; + margin: 0; + padding: 0; +} + + +div.document { + width: 940px; + margin: 30px auto 0 auto; +} + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 220px; +} + +div.sphinxsidebar { + width: 220px; + font-size: 14px; + line-height: 1.5; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.body { + background-color: #fff; + color: #3E4349; + padding: 0 30px 0 30px; +} + +div.body > .section { + text-align: left; +} + +div.footer { + width: 940px; + margin: 20px auto 30px auto; + font-size: 14px; + color: #888; + text-align: right; +} + +div.footer a { + color: #888; +} + +p.caption { + font-family: inherit; + font-size: inherit; +} + + +div.relations { + display: none; +} + + +div.sphinxsidebar a { + color: #444; + text-decoration: none; + border-bottom: 1px dotted #999; +} + +div.sphinxsidebar a:hover { + border-bottom: 1px solid #999; +} + +div.sphinxsidebarwrapper { + padding: 18px 10px; +} + +div.sphinxsidebarwrapper p.logo { + padding: 0; + margin: -10px 0 0 0px; + text-align: center; +} + +div.sphinxsidebarwrapper h1.logo { + margin-top: -10px; + text-align: center; + margin-bottom: 5px; + text-align: left; +} + +div.sphinxsidebarwrapper h1.logo-name { + margin-top: 0px; +} + +div.sphinxsidebarwrapper p.blurb { + margin-top: 0; + font-style: normal; +} + +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Georgia, serif; + color: #444; + font-size: 24px; + font-weight: normal; + margin: 0 0 5px 0; + padding: 0; +} + +div.sphinxsidebar h4 { + font-size: 20px; +} + +div.sphinxsidebar h3 a { + color: #444; +} + +div.sphinxsidebar p.logo a, +div.sphinxsidebar h3 a, +div.sphinxsidebar p.logo a:hover, +div.sphinxsidebar h3 a:hover { + border: none; +} + +div.sphinxsidebar p { + color: #555; + margin: 10px 0; +} + +div.sphinxsidebar ul { + margin: 10px 0; + padding: 0; + color: #000; +} + +div.sphinxsidebar ul li.toctree-l1 > a { + font-size: 120%; +} + +div.sphinxsidebar ul li.toctree-l2 > a { + font-size: 110%; +} + +div.sphinxsidebar input { + border: 1px solid #CCC; + font-family: Georgia, serif; + font-size: 1em; +} + +div.sphinxsidebar hr { + border: none; + height: 1px; + color: #AAA; + background: #AAA; + + text-align: left; + margin-left: 0; + width: 50%; +} + +div.sphinxsidebar .badge { + border-bottom: none; +} + +div.sphinxsidebar .badge:hover { + border-bottom: none; +} + +/* To address an issue with donation coming after search */ +div.sphinxsidebar h3.donation { + margin-top: 10px; +} + +/* -- body styles ----------------------------------------------------------- */ + +a { + color: #004B6B; + text-decoration: underline; +} + +a:hover { + color: #6D4100; + text-decoration: underline; +} + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: Georgia, serif; + font-weight: normal; + margin: 30px 0px 10px 0px; + padding: 0; +} + +div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; } +div.body h2 { font-size: 180%; } +div.body h3 { font-size: 150%; } +div.body h4 { font-size: 130%; } +div.body h5 { font-size: 100%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #DDD; + padding: 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + color: #444; + background: #EAEAEA; +} + +div.body p, div.body dd, div.body li { + line-height: 1.4em; +} + +div.admonition { + margin: 20px 0px; + padding: 10px 30px; + background-color: #EEE; + border: 1px solid #CCC; +} + +div.admonition tt.xref, div.admonition code.xref, div.admonition a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fafafa; +} + +div.admonition p.admonition-title { + font-family: Georgia, serif; + font-weight: normal; + font-size: 24px; + margin: 0 0 10px 0; + padding: 0; + line-height: 1; +} + +div.admonition p.last { + margin-bottom: 0; +} + +div.highlight { + background-color: #fff; +} + +dt:target, .highlight { + background: #FAF3E8; +} + +div.warning { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.danger { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.error { + background-color: #FCC; + border: 1px solid #FAA; + -moz-box-shadow: 2px 2px 4px #D52C2C; + -webkit-box-shadow: 2px 2px 4px #D52C2C; + box-shadow: 2px 2px 4px #D52C2C; +} + +div.caution { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.attention { + background-color: #FCC; + border: 1px solid #FAA; +} + +div.important { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.note { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.tip { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.hint { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.seealso { + background-color: #EEE; + border: 1px solid #CCC; +} + +div.topic { + background-color: #EEE; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre, tt, code { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; + font-size: 0.9em; +} + +.hll { + background-color: #FFC; + margin: 0 -12px; + padding: 0 12px; + display: block; +} + +img.screenshot { +} + +tt.descname, tt.descclassname, code.descname, code.descclassname { + font-size: 0.95em; +} + +tt.descname, code.descname { + padding-right: 0.08em; +} + +img.screenshot { + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils { + border: 1px solid #888; + -moz-box-shadow: 2px 2px 4px #EEE; + -webkit-box-shadow: 2px 2px 4px #EEE; + box-shadow: 2px 2px 4px #EEE; +} + +table.docutils td, table.docutils th { + border: 1px solid #888; + padding: 0.25em 0.7em; +} + +table.field-list, table.footnote { + border: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +table.footnote { + margin: 15px 0; + width: 100%; + border: 1px solid #EEE; + background: #FDFDFD; + font-size: 0.9em; +} + +table.footnote + table.footnote { + margin-top: -15px; + border-top: none; +} + +table.field-list th { + padding: 0 0.8em 0 0; +} + +table.field-list td { + padding: 0; +} + +table.field-list p { + margin-bottom: 0.8em; +} + +/* Cloned from + * https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68 + */ +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +table.footnote td.label { + width: .1px; + padding: 0.3em 0 0.3em 0.5em; +} + +table.footnote td { + padding: 0.3em 0.5em; +} + +dl { + margin: 0; + padding: 0; +} + +dl dd { + margin-left: 30px; +} + +blockquote { + margin: 0 0 0 30px; + padding: 0; +} + +ul, ol { + /* Matches the 30px from the narrow-screen "li > ul" selector below */ + margin: 10px 0 10px 30px; + padding: 0; +} + +pre { + background: #EEE; + padding: 7px 30px; + margin: 15px 0px; + line-height: 1.3em; +} + +div.viewcode-block:target { + background: #ffd; +} + +dl pre, blockquote pre, li pre { + margin-left: 0; + padding-left: 30px; +} + +tt, code { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ +} + +tt.xref, code.xref, a tt { + background-color: #FBFBFB; + border-bottom: 1px solid #fff; +} + +a.reference { + text-decoration: none; + border-bottom: 1px dotted #004B6B; +} + +/* Don't put an underline on images */ +a.image-reference, a.image-reference:hover { + border-bottom: none; +} + +a.reference:hover { + border-bottom: 1px solid #6D4100; +} + +a.footnote-reference { + text-decoration: none; + font-size: 0.7em; + vertical-align: top; + border-bottom: 1px dotted #004B6B; +} + +a.footnote-reference:hover { + border-bottom: 1px solid #6D4100; +} + +a:hover tt, a:hover code { + background: #EEE; +} + + +@media screen and (max-width: 870px) { + + div.sphinxsidebar { + display: none; + } + + div.document { + width: 100%; + + } + + div.documentwrapper { + margin-left: 0; + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + } + + div.bodywrapper { + margin-top: 0; + margin-right: 0; + margin-bottom: 0; + margin-left: 0; + } + + ul { + margin-left: 0; + } + + li > ul { + /* Matches the 30px from the "ul, ol" selector above */ + margin-left: 30px; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .bodywrapper { + margin: 0; + } + + .footer { + width: auto; + } + + .github { + display: none; + } + + + +} + + + +@media screen and (max-width: 875px) { + + body { + margin: 0; + padding: 20px 30px; + } + + div.documentwrapper { + float: none; + background: #fff; + } + + div.sphinxsidebar { + display: block; + float: none; + width: 102.5%; + margin: 50px -30px -20px -30px; + padding: 10px 20px; + background: #333; + color: #FFF; + } + + div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p, + div.sphinxsidebar h3 a { + color: #fff; + } + + div.sphinxsidebar a { + color: #AAA; + } + + div.sphinxsidebar p.logo { + display: none; + } + + div.document { + width: 100%; + margin: 0; + } + + div.footer { + display: none; + } + + div.bodywrapper { + margin: 0; + } + + div.body { + min-height: 0; + padding: 0; + } + + .rtd_doc_footer { + display: none; + } + + .document { + width: auto; + } + + .footer { + width: auto; + } + + .footer { + width: auto; + } + + .github { + display: none; + } +} + + +/* misc. */ + +.revsys-inline { + display: none!important; +} + +/* Make nested-list/multi-paragraph items look better in Releases changelog + * pages. Without this, docutils' magical list fuckery causes inconsistent + * formatting between different release sub-lists. + */ +div#changelog > div.section > ul > li > p:only-child { + margin-bottom: 0; +} + +/* Hide fugly table cell borders in ..bibliography:: directive output */ +table.docutils.citation, table.docutils.citation td, table.docutils.citation th { + border: none; + /* Below needed in some edge cases; if not applied, bottom shadows appear */ + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + + +/* relbar */ + +.related { + line-height: 30px; + width: 100%; + font-size: 0.9rem; +} + +.related.top { + border-bottom: 1px solid #EEE; + margin-bottom: 20px; +} + +.related.bottom { + border-top: 1px solid #EEE; +} + +.related ul { + padding: 0; + margin: 0; + list-style: none; +} + +.related li { + display: inline; +} + +nav#rellinks { + float: right; +} + +nav#rellinks li+li:before { + content: "|"; +} + +nav#breadcrumbs li+li:before { + content: "\00BB"; +} + +/* Hide certain items when printing */ +@media print { + div.related { + display: none; + } +} \ No newline at end of file diff --git a/build/_static/basic.css b/build/_static/basic.css new file mode 100644 index 0000000..bf18350 --- /dev/null +++ b/build/_static/basic.css @@ -0,0 +1,906 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 450px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; + margin-right: 0.5em; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/build/_static/custom.css b/build/_static/custom.css new file mode 100644 index 0000000..2a924f1 --- /dev/null +++ b/build/_static/custom.css @@ -0,0 +1 @@ +/* This file intentionally left blank. */ diff --git a/build/_static/doctools.js b/build/_static/doctools.js new file mode 100644 index 0000000..e1bfd70 --- /dev/null +++ b/build/_static/doctools.js @@ -0,0 +1,358 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + this.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('

') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + var url = new URL(window.location); + url.searchParams.delete('highlight'); + window.history.replaceState({}, '', url); + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar : function() { + $('input[name=q]').first().focus(); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + return; + + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box, textarea, dropdown or button + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && activeElementType !== 'BUTTON') { + if (event.altKey || event.ctrlKey || event.metaKey) + return; + + if (!event.shiftKey) { + switch (event.key) { + case 'ArrowLeft': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + break; + case 'ArrowRight': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + break; + case 'Escape': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.hideSearchWords(); + return false; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case '/': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.focusSearchBar(); + return false; + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/build/_static/documentation_options.js b/build/_static/documentation_options.js new file mode 100644 index 0000000..3b5a96a --- /dev/null +++ b/build/_static/documentation_options.js @@ -0,0 +1,14 @@ +var DOCUMENTATION_OPTIONS = { + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), + VERSION: '1.0', + LANGUAGE: 'python', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/build/_static/jquery-3.5.1.js b/build/_static/jquery-3.5.1.js new file mode 100644 index 0000000..5093733 --- /dev/null +++ b/build/_static/jquery-3.5.1.js @@ -0,0 +1,10872 @@ +/*! + * jQuery JavaScript Library v3.5.1 + * https://jquery.com/ + * + * Includes Sizzle.js + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://jquery.org/license + * + * Date: 2020-05-04T22:49Z + */ +( function( global, factory ) { + + "use strict"; + + if ( typeof module === "object" && typeof module.exports === "object" ) { + + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 +// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode +// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common +// enough that all such attempts are guarded in a try block. +"use strict"; + +var arr = []; + +var getProto = Object.getPrototypeOf; + +var slice = arr.slice; + +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + + +var push = arr.push; + +var indexOf = arr.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var fnToString = hasOwn.toString; + +var ObjectFunctionString = fnToString.call( Object ); + +var support = {}; + +var isFunction = function isFunction( obj ) { + + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + return typeof obj === "function" && typeof obj.nodeType !== "number"; + }; + + +var isWindow = function isWindow( obj ) { + return obj != null && obj === obj.window; + }; + + +var document = window.document; + + + + var preservedScriptAttributes = { + type: true, + src: true, + nonce: true, + noModule: true + }; + + function DOMEval( code, node, doc ) { + doc = doc || document; + + var i, val, + script = doc.createElement( "script" ); + + script.text = code; + if ( node ) { + for ( i in preservedScriptAttributes ) { + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); + } + } + } + doc.head.appendChild( script ).parentNode.removeChild( script ); + } + + +function toType( obj ) { + if ( obj == null ) { + return obj + ""; + } + + // Support: Android <=2.3 only (functionish RegExp) + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; +} +/* global Symbol */ +// Defining this global in .eslintrc.json would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + + + +var + version = "3.5.1", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + + // Return all the elements in a clean array + if ( num == null ) { + return slice.call( this ); + } + + // Return just the one element from the set + return num < 0 ? this[ num + this.length ] : this[ num ]; + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: arr.sort, + splice: arr.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var options, name, src, copy, copyIsArray, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // Skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !isFunction( target ) ) { + target = {}; + } + + // Extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + copy = options[ name ]; + + // Prevent Object.prototype pollution + // Prevent never-ending loop + if ( name === "__proto__" || target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; + + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; + } else { + clone = src; + } + copyIsArray = false; + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + isPlainObject: function( obj ) { + var proto, Ctor; + + // Detect obvious negatives + // Use toString instead of jQuery.type to catch host objects + if ( !obj || toString.call( obj ) !== "[object Object]" ) { + return false; + } + + proto = getProto( obj ); + + // Objects with no prototype (e.g., `Object.create( null )`) are plain + if ( !proto ) { + return true; + } + + // Objects with prototype are plain iff they were constructed by a global Object function + Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; + return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; + }, + + isEmptyObject: function( obj ) { + var name; + + for ( name in obj ) { + return false; + } + return true; + }, + + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + return arr == null ? -1 : indexOf.call( arr, elem, i ); + }, + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + for ( ; j < len; j++ ) { + first[ i++ ] = second[ j ]; + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return flat( ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; +} + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: real iOS 8.2 only (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = toType( obj ); + + if ( isFunction( obj ) || isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.3.5 + * https://sizzlejs.com/ + * + * Copyright JS Foundation and other contributors + * Released under the MIT license + * https://js.foundation/ + * + * Date: 2020-03-14 + */ +( function( window ) { +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + nonnativeSelectorCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // Instance methods + hasOwn = ( {} ).hasOwnProperty, + arr = [], + pop = arr.pop, + pushNative = arr.push, + push = arr.push, + slice = arr.slice, + + // Use a stripped-down indexOf as it's faster than native + // https://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[ i ] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rhtml = /HTML$/i, + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + + // CSS escapes + // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }, + + inDisabledFieldset = addCombinator( + function( elem ) { + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; + }, + { dir: "parentNode", next: "legend" } + ); + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + ( arr = slice.call( preferredDoc.childNodes ) ), + preferredDoc.childNodes + ); + + // Support: Android<4.0 + // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + pushNative.apply( target, slice.call( els ) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + + // Can't trust NodeList.length + while ( ( target[ j++ ] = els[ i++ ] ) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + setDocument( context ); + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { + + // ID selector + if ( ( m = match[ 1 ] ) ) { + + // Document context + if ( nodeType === 9 ) { + if ( ( elem = context.getElementById( m ) ) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && ( elem = newContext.getElementById( m ) ) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[ 2 ] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && + + // Support: IE 8 only + // Exclude object elements + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { + + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + while ( i-- ) { + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); + } + newSelector = groups.join( "," ); + } + + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return ( cache[ key + " " ] = value ); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created element and returns a boolean result + */ +function assert( fn ) { + var el = document.createElement( "fieldset" ); + + try { + return !!fn( el ); + } catch ( e ) { + return false; + } finally { + + // Remove from its parent by default + if ( el.parentNode ) { + el.parentNode.removeChild( el ); + } + + // release memory in IE + el = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split( "|" ), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[ i ] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + a.sourceIndex - b.sourceIndex; + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( ( cur = cur.nextSibling ) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return ( name === "input" || name === "button" ) && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for :enabled/:disabled + * @param {Boolean} disabled true for :disabled; false for :enabled + */ +function createDisabledPseudo( disabled ) { + + // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable + return function( elem ) { + + // Only certain elements can match :enabled or :disabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled + // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled + if ( "form" in elem ) { + + // Check for inherited disabledness on relevant non-disabled elements: + // * listed form-associated elements in a disabled fieldset + // https://html.spec.whatwg.org/multipage/forms.html#category-listed + // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled + // * option elements in a disabled optgroup + // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled + // All such elements have a "form" property. + if ( elem.parentNode && elem.disabled === false ) { + + // Option elements defer to a parent optgroup if present + if ( "label" in elem ) { + if ( "label" in elem.parentNode ) { + return elem.parentNode.disabled === disabled; + } else { + return elem.disabled === disabled; + } + } + + // Support: IE 6 - 11 + // Use the isDisabled shortcut property to check for disabled fieldset ancestors + return elem.isDisabled === disabled || + + // Where there is no isDisabled, check manually + /* jshint -W018 */ + elem.isDisabled !== !disabled && + inDisabledFieldset( elem ) === disabled; + } + + return elem.disabled === disabled; + + // Try to winnow out elements that can't be disabled before trusting the disabled property. + // Some victims get caught in our net (label, legend, menu, track), but it shouldn't + // even exist on them, let alone have a boolean value. + } else if ( "label" in elem ) { + return elem.disabled === disabled; + } + + // Remaining elements are neither :enabled nor :disabled + return false; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction( function( argument ) { + argument = +argument; + return markFunction( function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); + } + } + } ); + } ); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var namespace = elem.namespaceURI, + docElem = ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, subWindow, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9 - 11+, Edge 12 - 18+ + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { + + // Support: IE 11, Edge + if ( subWindow.addEventListener ) { + subWindow.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( subWindow.attachEvent ) { + subWindow.attachEvent( "onunload", unloadHandler ); + } + } + + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert( function( el ) { + el.className = "i"; + return !el.getAttribute( "className" ); + } ); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programmatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert( function( el ) { + docElem.appendChild( el ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + } ); + + // ID filter and find + if ( support.getById ) { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute( "id" ) === attrId; + }; + }; + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var elem = context.getElementById( id ); + return elem ? [ elem ] : []; + } + }; + } else { + Expr.filter[ "ID" ] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode( "id" ); + return node && node.value === attrId; + }; + }; + + // Support: IE 6 - 7 only + // getElementById is not reliable as a find shortcut + Expr.find[ "ID" ] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var node, i, elems, + elem = context.getElementById( id ); + + if ( elem ) { + + // Verify the id attribute + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + + // Fall back on getElementsByName + elems = context.getElementsByName( id ); + i = 0; + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); + if ( node && node.value === id ) { + return [ elem ]; + } + } + } + + return []; + } + }; + } + + // Tag + Expr.find[ "TAG" ] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See https://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert( function( el ) { + + var input; + + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // https://bugs.jquery.com/ticket/12359 + docElem.appendChild( el ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !el.querySelectorAll( "[selected]" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibling-combinator selector` fails + if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push( ".#.+[+~]" ); + } + + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { + el.innerHTML = "" + + ""; + + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement( "input" ); + input.setAttribute( "type", "hidden" ); + el.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( el.querySelectorAll( "[name=d]" ).length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: IE9-11+ + // IE's :disabled selector does not pick up the children of disabled fieldsets + docElem.appendChild( el ).disabled = true; + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Support: Opera 10 - 11 only + // Opera 10-11 does not throw on post-comma invalid pseudos + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); + } + + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { + + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( el, "*" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( el, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + } ); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + ) ); + } : + function( a, b ) { + if ( b ) { + while ( ( b = b.parentNode ) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { + + // Choose the first element that is related to our preferred document + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { + return -1; + } + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( ( cur = cur.parentNode ) ) { + ap.unshift( cur ); + } + cur = b; + while ( ( cur = cur.parentNode ) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[ i ] === bp[ i ] ) { + i++; + } + + return i ? + + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[ i ], bp[ i ] ) : + + // Otherwise nodes in our document sort first + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + setDocument( elem ); + + if ( support.matchesSelector && documentIsHTML && + !nonnativeSelectorCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + + // Set document vars if needed + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; +}; + +Sizzle.escape = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( ( elem = results[ i++ ] ) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + + // If no nodeType, this is expected to be an array + while ( ( node = elem[ i++ ] ) ) { + + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); + + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { + + // nth-* requires argument + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); + + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[ 6 ] && match[ 2 ]; + + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + + // Get excess from tokenize (recursively) + ( excess = tokenize( unquoted, true ) ) && + + // advance to the next closing parenthesis + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { + + // excess is a negative index + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { + return true; + } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + /* eslint-disable max-len */ + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + /* eslint-enable max-len */ + + }; + }, + + "CHILD": function( type, what, _argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, _context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( ( node = node[ dir ] ) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( ( node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + + // Use previously-cached element index if available + if ( useCache ) { + + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + + // Use the same loop as above to seek `elem` from the start + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || + ( node[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + ( outerCache[ node.uniqueID ] = {} ); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction( function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); + } + } ) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + + // Potentially complex pseudos + "not": markFunction( function( selector ) { + + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction( function( seed, matches, _context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); + } + } + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; + matcher( input, null, xml, results ); + + // Don't keep the element (issue #299) + input[ 0 ] = null; + return !results.pop(); + }; + } ), + + "has": markFunction( function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + } ), + + "contains": markFunction( function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; + }; + } ), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + + // lang value must be a valid identifier + if ( !ridentifier.test( lang || "" ) ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( ( elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); + return false; + }; + } ), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); + }, + + // Boolean properties + "enabled": createDisabledPseudo( false ), + "disabled": createDisabledPseudo( true ), + + "checked": function( elem ) { + + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); + }, + + "selected": function( elem ) { + + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos[ "empty" ]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo( function() { + return [ 0 ]; + } ), + + "last": createPositionalPseudo( function( _matchIndexes, length ) { + return [ length - 1 ]; + } ), + + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + } ), + + "even": createPositionalPseudo( function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "odd": createPositionalPseudo( function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ), + + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + } ) + } +}; + +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { + if ( match ) { + + // Don't consume trailing commas as valid + soFar = soFar.slice( match[ 0 ].length ) || soFar; + } + groups.push( ( tokens = [] ) ); + } + + matched = false; + + // Combinators + if ( ( match = rcombinators.exec( soFar ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + + // Cast descendant combinators to space + type: match[ 0 ].replace( rtrim, " " ) + } ); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { + matched = match.shift(); + tokens.push( { + value: matched, + type: type, + matches: match + } ); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[ i ].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + skip = combinator.next, + key = skip || dir, + checkNonElements = base && key === "parentNode", + doneName = done++; + + return combinator.first ? + + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + return false; + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( ( elem = elem[ dir ] ) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); + + if ( skip && skip === elem.nodeName.toLowerCase() ) { + elem = elem[ dir ] || elem; + } else if ( ( oldCache = uniqueCache[ key ] ) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return ( newCache[ 2 ] = oldCache[ 2 ] ); + } else { + + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ key ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { + return true; + } + } + } + } + } + return false; + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[ i ]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[ 0 ]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[ i ], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( ( elem = unmatched[ i ] ) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction( function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) ) { + + // Restore matcherIn since elem is not yet a final match + temp.push( ( matcherIn[ i ] = elem ) ); + } + } + postFinder( null, ( matcherOut = [] ), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { + + seed[ temp ] = !( results[ temp ] = elem ); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + } ); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + ( checkContext = context ).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; + } else { + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[ j ].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), + len = elems.length; + + if ( outermost ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + + // They will have gone through all possible matchers + if ( ( elem = !matcher && elem ) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( ( matcher = setMatchers[ j++ ] ) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[ i ] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { + + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[ i ]; + + // Abort if we hit a combinator + if ( Expr.relative[ ( type = token.type ) ] ) { + break; + } + if ( ( find = Expr.find[ type ] ) ) { + + // Search, expanding context for leading sibling combinators + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert( function( el ) { + + // Should return 1, but returns 4 (following) + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert( function( el ) { + el.innerHTML = ""; + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + } ); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert( function( el ) { + el.innerHTML = ""; + el.firstChild.setAttribute( "value", "" ); + return el.firstChild.getAttribute( "value" ) === ""; +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + } ); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + ( val = elem.getAttributeNode( name ) ) && val.specified ? + val.value : + null; + } + } ); +} + +return Sizzle; + +} )( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; + +// Deprecated +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; +jQuery.escapeSelector = Sizzle.escape; + + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + + + +function nodeName( elem, name ) { + + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + +}; +var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); + + + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + return !!qualifier.call( elem, i, elem ) !== not; + } ); + } + + // Single element + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + } + + // Arraylike of elements (jQuery, arguments, Array) + if ( typeof qualifier !== "string" ) { + return jQuery.grep( elements, function( elem ) { + return ( indexOf.call( qualifier, elem ) > -1 ) !== not; + } ); + } + + // Filtered directly for both simple and complex selectors + return jQuery.filter( qualifier, elements, not ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + if ( elems.length === 1 && elem.nodeType === 1 ) { + return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; + } + + return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, ret, + len = this.length, + self = this; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + ret = this.pushStack( [] ); + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + return len > 1 ? jQuery.uniqueSort( ret ) : ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + // Shortcut simple #id case for speed + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Method init() accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector[ 0 ] === "<" && + selector[ selector.length - 1 ] === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // Option to run scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + if ( elem ) { + + // Inject the element directly into the jQuery object + this[ 0 ] = elem; + this.length = 1; + } + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( isFunction( selector ) ) { + return root.ready !== undefined ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // Methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var targets = jQuery( target, this ), + l = targets.length; + + return this.filter( function() { + var i = 0; + for ( ; i < l; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + targets = typeof selectors !== "string" && jQuery( selectors ); + + // Positional selectors never match, since there's no _selection_ context + if ( !rneedsContext.test( selectors ) ) { + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( targets ? + targets.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within the set + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // Index in selector + if ( typeof elem === "string" ) { + return indexOf.call( jQuery( elem ), this[ 0 ] ); + } + + // Locate the position of the desired element + return indexOf.call( this, + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem + ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, _i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, _i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, _i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + if ( elem.contentDocument != null && + + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } + + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var matched = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + matched = jQuery.filter( selector, matched ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + jQuery.uniqueSort( matched ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + matched.reverse(); + } + } + + return this.pushStack( matched ); + }; +} ); +var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = locked || options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && toType( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = queue = []; + if ( !memory && !firing ) { + list = memory = ""; + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +function Identity( v ) { + return v; +} +function Thrower( ex ) { + throw ex; +} + +function adoptValue( value, resolve, reject, noValue ) { + var method; + + try { + + // Check for promise aspect first to privilege synchronous behavior + if ( value && isFunction( ( method = value.promise ) ) ) { + method.call( value ).done( resolve ).fail( reject ); + + // Other thenables + } else if ( value && isFunction( ( method = value.then ) ) ) { + method.call( value, resolve, reject ); + + // Other non-thenables + } else { + + // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: + // * false: [ value ].slice( 0 ) => resolve( value ) + // * true: [ value ].slice( 1 ) => resolve() + resolve.apply( undefined, [ value ].slice( noValue ) ); + } + + // For Promises/A+, convert exceptions into rejections + // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in + // Deferred#then to conditionally suppress rejection. + } catch ( value ) { + + // Support: Android 4.0 only + // Strict mode functions invoked without .call/.apply get global-object context + reject.apply( undefined, [ value ] ); + } +} + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, callbacks, + // ... .then handlers, argument index, [final state] + [ "notify", "progress", jQuery.Callbacks( "memory" ), + jQuery.Callbacks( "memory" ), 2 ], + [ "resolve", "done", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 0, "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), + jQuery.Callbacks( "once memory" ), 1, "rejected" ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + "catch": function( fn ) { + return promise.then( null, fn ); + }, + + // Keep pipe for back-compat + pipe: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( _i, tuple ) { + + // Map tuples (progress, done, fail) to arguments (done, fail, progress) + var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; + + // deferred.progress(function() { bind to newDefer or newDefer.notify }) + // deferred.done(function() { bind to newDefer or newDefer.resolve }) + // deferred.fail(function() { bind to newDefer or newDefer.reject }) + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + then: function( onFulfilled, onRejected, onProgress ) { + var maxDepth = 0; + function resolve( depth, deferred, handler, special ) { + return function() { + var that = this, + args = arguments, + mightThrow = function() { + var returned, then; + + // Support: Promises/A+ section 2.3.3.3.3 + // https://promisesaplus.com/#point-59 + // Ignore double-resolution attempts + if ( depth < maxDepth ) { + return; + } + + returned = handler.apply( that, args ); + + // Support: Promises/A+ section 2.3.1 + // https://promisesaplus.com/#point-48 + if ( returned === deferred.promise() ) { + throw new TypeError( "Thenable self-resolution" ); + } + + // Support: Promises/A+ sections 2.3.3.1, 3.5 + // https://promisesaplus.com/#point-54 + // https://promisesaplus.com/#point-75 + // Retrieve `then` only once + then = returned && + + // Support: Promises/A+ section 2.3.4 + // https://promisesaplus.com/#point-64 + // Only check objects and functions for thenability + ( typeof returned === "object" || + typeof returned === "function" ) && + returned.then; + + // Handle a returned thenable + if ( isFunction( then ) ) { + + // Special processors (notify) just wait for resolution + if ( special ) { + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ) + ); + + // Normal processors (resolve) also hook into progress + } else { + + // ...and disregard older resolution values + maxDepth++; + + then.call( + returned, + resolve( maxDepth, deferred, Identity, special ), + resolve( maxDepth, deferred, Thrower, special ), + resolve( maxDepth, deferred, Identity, + deferred.notifyWith ) + ); + } + + // Handle all other returned values + } else { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Identity ) { + that = undefined; + args = [ returned ]; + } + + // Process the value(s) + // Default process is resolve + ( special || deferred.resolveWith )( that, args ); + } + }, + + // Only normal processors (resolve) catch and reject exceptions + process = special ? + mightThrow : + function() { + try { + mightThrow(); + } catch ( e ) { + + if ( jQuery.Deferred.exceptionHook ) { + jQuery.Deferred.exceptionHook( e, + process.stackTrace ); + } + + // Support: Promises/A+ section 2.3.3.3.4.1 + // https://promisesaplus.com/#point-61 + // Ignore post-resolution exceptions + if ( depth + 1 >= maxDepth ) { + + // Only substitute handlers pass on context + // and multiple values (non-spec behavior) + if ( handler !== Thrower ) { + that = undefined; + args = [ e ]; + } + + deferred.rejectWith( that, args ); + } + } + }; + + // Support: Promises/A+ section 2.3.3.3.1 + // https://promisesaplus.com/#point-57 + // Re-resolve promises immediately to dodge false rejection from + // subsequent errors + if ( depth ) { + process(); + } else { + + // Call an optional hook to record the stack, in case of exception + // since it's otherwise lost when execution goes async + if ( jQuery.Deferred.getStackHook ) { + process.stackTrace = jQuery.Deferred.getStackHook(); + } + window.setTimeout( process ); + } + }; + } + + return jQuery.Deferred( function( newDefer ) { + + // progress_handlers.add( ... ) + tuples[ 0 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onProgress ) ? + onProgress : + Identity, + newDefer.notifyWith + ) + ); + + // fulfilled_handlers.add( ... ) + tuples[ 1 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onFulfilled ) ? + onFulfilled : + Identity + ) + ); + + // rejected_handlers.add( ... ) + tuples[ 2 ][ 3 ].add( + resolve( + 0, + newDefer, + isFunction( onRejected ) ? + onRejected : + Thrower + ) + ); + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 5 ]; + + // promise.progress = list.add + // promise.done = list.add + // promise.fail = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( + function() { + + // state = "resolved" (i.e., fulfilled) + // state = "rejected" + state = stateString; + }, + + // rejected_callbacks.disable + // fulfilled_callbacks.disable + tuples[ 3 - i ][ 2 ].disable, + + // rejected_handlers.disable + // fulfilled_handlers.disable + tuples[ 3 - i ][ 3 ].disable, + + // progress_callbacks.lock + tuples[ 0 ][ 2 ].lock, + + // progress_handlers.lock + tuples[ 0 ][ 3 ].lock + ); + } + + // progress_handlers.fire + // fulfilled_handlers.fire + // rejected_handlers.fire + list.add( tuple[ 3 ].fire ); + + // deferred.notify = function() { deferred.notifyWith(...) } + // deferred.resolve = function() { deferred.resolveWith(...) } + // deferred.reject = function() { deferred.rejectWith(...) } + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); + return this; + }; + + // deferred.notifyWith = list.fireWith + // deferred.resolveWith = list.fireWith + // deferred.rejectWith = list.fireWith + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( singleValue ) { + var + + // count of uncompleted subordinates + remaining = arguments.length, + + // count of unprocessed arguments + i = remaining, + + // subordinate fulfillment data + resolveContexts = Array( i ), + resolveValues = slice.call( arguments ), + + // the master Deferred + master = jQuery.Deferred(), + + // subordinate callback factory + updateFunc = function( i ) { + return function( value ) { + resolveContexts[ i ] = this; + resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( !( --remaining ) ) { + master.resolveWith( resolveContexts, resolveValues ); + } + }; + }; + + // Single- and empty arguments are adopted like Promise.resolve + if ( remaining <= 1 ) { + adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + !remaining ); + + // Use .then() to unwrap secondary thenables (cf. gh-3000) + if ( master.state() === "pending" || + isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { + + return master.then(); + } + } + + // Multiple arguments are aggregated like Promise.all array elements + while ( i-- ) { + adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + } + + return master.promise(); + } +} ); + + +// These usually indicate a programmer mistake during development, +// warn about them ASAP rather than swallowing them by default. +var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + +jQuery.Deferred.exceptionHook = function( error, stack ) { + + // Support: IE 8 - 9 only + // Console exists when dev tools are open, which can happen at any time + if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { + window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); + } +}; + + + + +jQuery.readyException = function( error ) { + window.setTimeout( function() { + throw error; + } ); +}; + + + + +// The deferred used on DOM ready +var readyList = jQuery.Deferred(); + +jQuery.fn.ready = function( fn ) { + + readyList + .then( fn ) + + // Wrap jQuery.readyException in a function so that the lookup + // happens at the time of error handling instead of callback + // registration. + .catch( function( error ) { + jQuery.readyException( error ); + } ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + } +} ); + +jQuery.ready.then = readyList.then; + +// The ready event handler and self cleanup method +function completed() { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + jQuery.ready(); +} + +// Catch cases where $(document).ready() is called +// after the browser event has already occurred. +// Support: IE <=9 - 10 only +// Older IE sometimes signals "interactive" too soon +if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + +} else { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); +} + + + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + len = elems.length, + bulk = key == null; + + // Sets many values + if ( toType( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, _key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < len; i++ ) { + fn( + elems[ i ], key, raw ? + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + if ( chainable ) { + return elems; + } + + // Gets + if ( bulk ) { + return fn.call( elems ); + } + + return len ? fn( elems[ 0 ], key ) : emptyGet; +}; + + +// Matches dashed string for camelizing +var rmsPrefix = /^-ms-/, + rdashAlpha = /-([a-z])/g; + +// Used by camelCase as callback to replace() +function fcamelCase( _all, letter ) { + return letter.toUpperCase(); +} + +// Convert dashed to camelCase; used by the css and data modules +// Support: IE <=9 - 11, Edge 12 - 15 +// Microsoft forgot to hump their vendor prefix (#9572) +function camelCase( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); +} +var acceptData = function( owner ) { + + // Accepts only: + // - Node + // - Node.ELEMENT_NODE + // - Node.DOCUMENT_NODE + // - Object + // - Any + return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); +}; + + + + +function Data() { + this.expando = jQuery.expando + Data.uid++; +} + +Data.uid = 1; + +Data.prototype = { + + cache: function( owner ) { + + // Check if the owner object already has a cache + var value = owner[ this.expando ]; + + // If not, create one + if ( !value ) { + value = {}; + + // We can accept data for non-element nodes in modern browsers, + // but we should not, see #8335. + // Always return an empty object. + if ( acceptData( owner ) ) { + + // If it is a node unlikely to be stringify-ed or looped over + // use plain assignment + if ( owner.nodeType ) { + owner[ this.expando ] = value; + + // Otherwise secure it in a non-enumerable property + // configurable must be true to allow the property to be + // deleted when data is removed + } else { + Object.defineProperty( owner, this.expando, { + value: value, + configurable: true + } ); + } + } + } + + return value; + }, + set: function( owner, data, value ) { + var prop, + cache = this.cache( owner ); + + // Handle: [ owner, key, value ] args + // Always use camelCase key (gh-2257) + if ( typeof data === "string" ) { + cache[ camelCase( data ) ] = value; + + // Handle: [ owner, { properties } ] args + } else { + + // Copy the properties one-by-one to the cache object + for ( prop in data ) { + cache[ camelCase( prop ) ] = data[ prop ]; + } + } + return cache; + }, + get: function( owner, key ) { + return key === undefined ? + this.cache( owner ) : + + // Always use camelCase key (gh-2257) + owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; + }, + access: function( owner, key, value ) { + + // In cases where either: + // + // 1. No key was specified + // 2. A string key was specified, but no value provided + // + // Take the "read" path and allow the get method to determine + // which value to return, respectively either: + // + // 1. The entire cache object + // 2. The data stored at the key + // + if ( key === undefined || + ( ( key && typeof key === "string" ) && value === undefined ) ) { + + return this.get( owner, key ); + } + + // When the key is not a string, or both a key and value + // are specified, set or extend (existing objects) with either: + // + // 1. An object of properties + // 2. A key and value + // + this.set( owner, key, value ); + + // Since the "set" path can have two possible entry points + // return the expected data based on which path was taken[*] + return value !== undefined ? value : key; + }, + remove: function( owner, key ) { + var i, + cache = owner[ this.expando ]; + + if ( cache === undefined ) { + return; + } + + if ( key !== undefined ) { + + // Support array or space separated string of keys + if ( Array.isArray( key ) ) { + + // If key is an array of keys... + // We always set camelCase keys, so remove that. + key = key.map( camelCase ); + } else { + key = camelCase( key ); + + // If a key with the spaces exists, use it. + // Otherwise, create an array by matching non-whitespace + key = key in cache ? + [ key ] : + ( key.match( rnothtmlwhite ) || [] ); + } + + i = key.length; + + while ( i-- ) { + delete cache[ key[ i ] ]; + } + } + + // Remove the expando if there's no more data + if ( key === undefined || jQuery.isEmptyObject( cache ) ) { + + // Support: Chrome <=35 - 45 + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) + if ( owner.nodeType ) { + owner[ this.expando ] = undefined; + } else { + delete owner[ this.expando ]; + } + } + }, + hasData: function( owner ) { + var cache = owner[ this.expando ]; + return cache !== undefined && !jQuery.isEmptyObject( cache ); + } +}; +var dataPriv = new Data(); + +var dataUser = new Data(); + + + +// Implementation Summary +// +// 1. Enforce API surface and semantic compatibility with 1.9.x branch +// 2. Improve the module's maintainability by reducing the storage +// paths to a single mechanism. +// 3. Use the same single mechanism to support "private" and "user" data. +// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) +// 5. Avoid exposing implementation details on user objects (eg. expando properties) +// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /[A-Z]/g; + +function getData( data ) { + if ( data === "true" ) { + return true; + } + + if ( data === "false" ) { + return false; + } + + if ( data === "null" ) { + return null; + } + + // Only convert to a number if it doesn't change the string + if ( data === +data + "" ) { + return +data; + } + + if ( rbrace.test( data ) ) { + return JSON.parse( data ); + } + + return data; +} + +function dataAttr( elem, key, data ) { + var name; + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = getData( data ); + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + dataUser.set( elem, key, data ); + } else { + data = undefined; + } + } + return data; +} + +jQuery.extend( { + hasData: function( elem ) { + return dataUser.hasData( elem ) || dataPriv.hasData( elem ); + }, + + data: function( elem, name, data ) { + return dataUser.access( elem, name, data ); + }, + + removeData: function( elem, name ) { + dataUser.remove( elem, name ); + }, + + // TODO: Now that all calls to _data and _removeData have been replaced + // with direct calls to dataPriv methods, these can be deprecated. + _data: function( elem, name, data ) { + return dataPriv.access( elem, name, data ); + }, + + _removeData: function( elem, name ) { + dataPriv.remove( elem, name ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = dataUser.get( elem ); + + if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE 11 only + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + dataPriv.set( elem, "hasDataAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + dataUser.set( this, key ); + } ); + } + + return access( this, function( value ) { + var data; + + // The calling jQuery object (element matches) is not empty + // (and therefore has an element appears at this[ 0 ]) and the + // `value` parameter was not undefined. An empty jQuery object + // will result in `undefined` for elem = this[ 0 ] which will + // throw an exception if an attempt to read a data cache is made. + if ( elem && value === undefined ) { + + // Attempt to get data from the cache + // The key will always be camelCased in Data + data = dataUser.get( elem, key ); + if ( data !== undefined ) { + return data; + } + + // Attempt to "discover" the data in + // HTML5 custom data-* attrs + data = dataAttr( elem, key ); + if ( data !== undefined ) { + return data; + } + + // We tried really hard, but the data doesn't exist. + return; + } + + // Set the data... + this.each( function() { + + // We always store the camelCased key + dataUser.set( this, key, value ); + } ); + }, null, value, arguments.length > 1, null, true ); + }, + + removeData: function( key ) { + return this.each( function() { + dataUser.remove( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = dataPriv.get( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || Array.isArray( data ) ) { + queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // Clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // Not public - generate a queueHooks object, or return the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + dataPriv.remove( elem, [ type + "queue", key ] ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // Ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } +var isHiddenWithinTree = function( elem, el ) { + + // isHiddenWithinTree might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + + // Inline style trumps all + return elem.style.display === "none" || + elem.style.display === "" && + + // Otherwise, check computed style + // Support: Firefox <=43 - 45 + // Disconnected elements can have computed display: none, so first confirm that elem is + // in the document. + isAttached( elem ) && + + jQuery.css( elem, "display" ) === "none"; + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, scale, + maxIterations = 20, + currentValue = tween ? + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Support: Firefox <=54 + // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) + initial = initial / 2; + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + while ( maxIterations-- ) { + + // Evaluate and update our best guess (doubling guesses that zero out). + // Finish if the scale equals or crosses 1 (making the old*new product non-positive). + jQuery.style( elem, prop, initialInUnit + unit ); + if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { + maxIterations = 0; + } + initialInUnit = initialInUnit / scale; + + } + + initialInUnit = initialInUnit * 2; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +var defaultDisplayMap = {}; + +function getDefaultDisplay( elem ) { + var temp, + doc = elem.ownerDocument, + nodeName = elem.nodeName, + display = defaultDisplayMap[ nodeName ]; + + if ( display ) { + return display; + } + + temp = doc.body.appendChild( doc.createElement( nodeName ) ); + display = jQuery.css( temp, "display" ); + + temp.parentNode.removeChild( temp ); + + if ( display === "none" ) { + display = "block"; + } + defaultDisplayMap[ nodeName ] = display; + + return display; +} + +function showHide( elements, show ) { + var display, elem, + values = [], + index = 0, + length = elements.length; + + // Determine new display value for elements that need to change + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + display = elem.style.display; + if ( show ) { + + // Since we force visibility upon cascade-hidden elements, an immediate (and slow) + // check is required in this first loop unless we have a nonempty display value (either + // inline or about-to-be-restored) + if ( display === "none" ) { + values[ index ] = dataPriv.get( elem, "display" ) || null; + if ( !values[ index ] ) { + elem.style.display = ""; + } + } + if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { + values[ index ] = getDefaultDisplay( elem ); + } + } else { + if ( display !== "none" ) { + values[ index ] = "none"; + + // Remember what we're overwriting + dataPriv.set( elem, "display", display ); + } + } + } + + // Set the display of the elements in a second loop to avoid constant reflow + for ( index = 0; index < length; index++ ) { + if ( values[ index ] != null ) { + elements[ index ].style.display = values[ index ]; + } + } + + return elements; +} + +jQuery.fn.extend( { + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHiddenWithinTree( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); + +var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); + + + +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // Support: IE <=9 only + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + + // XHTML parsers do not magically insert elements in the + // same way that tag soup parsers do. So we cannot shorten + // this by omitting or other required elements. + thead: [ 1, "", "
" ], + col: [ 2, "", "
" ], + tr: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + _default: [ 0, "", "" ] +}; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + + +function getAll( context, tag ) { + + // Support: IE <=9 - 11 only + // Use typeof to avoid zero-argument method invocation on host objects (#15151) + var ret; + + if ( typeof context.getElementsByTagName !== "undefined" ) { + ret = context.getElementsByTagName( tag || "*" ); + + } else if ( typeof context.querySelectorAll !== "undefined" ) { + ret = context.querySelectorAll( tag || "*" ); + + } else { + ret = []; + } + + if ( tag === undefined || tag && nodeName( context, tag ) ) { + return jQuery.merge( [ context ], ret ); + } + + return ret; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + dataPriv.set( + elems[ i ], + "globalEval", + !refElements || dataPriv.get( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/; + +function buildFragment( elems, context, scripts, selection, ignored ) { + var elem, tmp, tag, wrap, attached, j, + fragment = context.createDocumentFragment(), + nodes = [], + i = 0, + l = elems.length; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( toType( elem ) === "object" ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( nodes, tmp.childNodes ); + + // Remember the top-level container + tmp = fragment.firstChild; + + // Ensure the created nodes are orphaned (#12392) + tmp.textContent = ""; + } + } + } + + // Remove wrapper from fragment + fragment.textContent = ""; + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + continue; + } + + attached = isAttached( elem ); + + // Append to fragment + tmp = getAll( fragment.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( attached ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + return fragment; +} + + +var + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + +// Support: IE <=9 only +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + + var handleObjIn, eventHandle, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.get( elem ); + + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Ensure that invalid selectors throw exceptions at attach time + // Evaluate against documentElement in case elem is a non-element node (e.g., document) + if ( selector ) { + jQuery.find.matchesSelector( documentElement, selector ); + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = Object.create( null ); + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? + jQuery.event.dispatch.apply( elem, arguments ) : undefined; + }; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + + var j, origCount, tmp, + events, t, handleObj, + special, handlers, type, namespaces, origType, + elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove data and the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + dataPriv.remove( elem, "handle events" ); + } + }, + + dispatch: function( nativeEvent ) { + + var i, j, ret, matched, handleObj, handlerQueue, + args = new Array( arguments.length ), + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + + for ( i = 1; i < arguments.length; i++ ) { + args[ i ] = arguments[ i ]; + } + + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, handleObj, sel, matchedHandlers, matchedSelectors, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + if ( delegateCount && + + // Support: IE <=9 + // Black-hole SVG instance trees (trac-13180) + cur.nodeType && + + // Support: Firefox <=42 + // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) + // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click + // Support: IE 11 only + // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) + !( event.type === "click" && event.button >= 1 ) ) { + + for ( ; cur !== this; cur = cur.parentNode || this ) { + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { + matchedHandlers = []; + matchedSelectors = {}; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matchedSelectors[ sel ] === undefined ) { + matchedSelectors[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matchedSelectors[ sel ] ) { + matchedHandlers.push( handleObj ); + } + } + if ( matchedHandlers.length ) { + handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + cur = this; + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + addProp: function( name, hook ) { + Object.defineProperty( jQuery.Event.prototype, name, { + enumerable: true, + configurable: true, + + get: isFunction( hook ) ? + function() { + if ( this.originalEvent ) { + return hook( this.originalEvent ); + } + } : + function() { + if ( this.originalEvent ) { + return this.originalEvent[ name ]; + } + }, + + set: function( value ) { + Object.defineProperty( this, name, { + enumerable: true, + configurable: true, + writable: true, + value: value + } ); + } + } ); + }, + + fix: function( originalEvent ) { + return originalEvent[ jQuery.expando ] ? + originalEvent : + new jQuery.Event( originalEvent ); + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + click: { + + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); + } + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); + } + + // Return non-false to allow normal event-path propagation + return true; + }, + + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack + _default: function( event ) { + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + } +}; + +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + return result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + +jQuery.removeEvent = function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } +}; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: Android <=2.3 only + src.returnValue === false ? + returnTrue : + returnFalse; + + // Create target properties + // Support: Safari <=6 - 7 only + // Target should not be a text node (#504, #13143) + this.target = ( src.target && src.target.nodeType === 3 ) ? + src.target.parentNode : + src.target; + + this.currentTarget = src.currentTarget; + this.relatedTarget = src.relatedTarget; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || Date.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + isSimulated: false, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + + if ( e && !this.isSimulated ) { + e.preventDefault(); + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && !this.isSimulated ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Includes all common event props including KeyEvent and MouseEvent specific props +jQuery.each( { + altKey: true, + bubbles: true, + cancelable: true, + changedTouches: true, + ctrlKey: true, + detail: true, + eventPhase: true, + metaKey: true, + pageX: true, + pageY: true, + shiftKey: true, + view: true, + "char": true, + code: true, + charCode: true, + key: true, + keyCode: true, + button: true, + buttons: true, + clientX: true, + clientY: true, + offsetX: true, + offsetY: true, + pointerId: true, + pointerType: true, + screenX: true, + screenY: true, + targetTouches: true, + toElement: true, + touches: true, + + which: function( event ) { + var button = event.button; + + // Add which for key events + if ( event.which == null && rkeyEvent.test( event.type ) ) { + return event.charCode != null ? event.charCode : event.keyCode; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { + if ( button & 1 ) { + return 1; + } + + if ( button & 2 ) { + return 3; + } + + if ( button & 4 ) { + return 2; + } + + return 0; + } + + return event.which; + } +}, jQuery.event.addProp ); + +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { + + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { + + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); + + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { + + // Force setup before trigger + leverageNative( this, type ); + + // Return non-false to allow normal event-path propagation + return true; + }, + + delegateType: delegateType + }; +} ); + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + } +} ); + + +var + + // Support: IE <=10 - 11, Edge 12 - 13 only + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g; + +// Prefer a tbody over its parent table for containing new rows +function manipulationTarget( elem, content ) { + if ( nodeName( elem, "table" ) && + nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { + + return jQuery( elem ).children( "tbody" )[ 0 ] || elem; + } + + return elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { + elem.type = elem.type.slice( 5 ); + } else { + elem.removeAttribute( "type" ); + } + + return elem; +} + +function cloneCopyEvent( src, dest ) { + var i, l, type, pdataOld, udataOld, udataCur, events; + + if ( dest.nodeType !== 1 ) { + return; + } + + // 1. Copy private data: events, handlers, etc. + if ( dataPriv.hasData( src ) ) { + pdataOld = dataPriv.get( src ); + events = pdataOld.events; + + if ( events ) { + dataPriv.remove( dest, "handle events" ); + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + } + + // 2. Copy user data + if ( dataUser.hasData( src ) ) { + udataOld = dataUser.access( src ); + udataCur = jQuery.extend( {}, udataOld ); + + dataUser.set( dest, udataCur ); + } +} + +// Fix IE bugs, see support tests +function fixInput( src, dest ) { + var nodeName = dest.nodeName.toLowerCase(); + + // Fails to persist the checked state of a cloned checkbox or radio button. + if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + dest.checked = src.checked; + + // Fails to return the selected option to the default selected state when cloning options + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = flat( args ); + + var fragment, first, scripts, hasScripts, node, doc, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + valueIsFunction = isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( valueIsFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( valueIsFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android <=4.0 only, PhantomJS 1 only + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !dataPriv.access( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); + } + } else { + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); + } + } + } + } + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + nodes = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = nodes[ i ] ) != null; i++ ) { + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && isAttached( node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html; + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var i, l, srcElements, destElements, + clone = elem.cloneNode( true ), + inPage = isAttached( elem ); + + // Fix IE cloning issues + if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && + !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + fixInput( srcElements[ i ], destElements[ i ] ); + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0, l = srcElements.length; i < l; i++ ) { + cloneCopyEvent( srcElements[ i ], destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + // Return the cloned set + return clone; + }, + + cleanData: function( elems ) { + var data, elem, type, + special = jQuery.event.special, + i = 0; + + for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { + if ( acceptData( elem ) ) { + if ( ( data = elem[ dataPriv.expando ] ) ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataPriv.expando ] = undefined; + } + if ( elem[ dataUser.expando ] ) { + + // Support: Chrome <=35 - 45+ + // Assign undefined instead of using delete, see Data#remove + elem[ dataUser.expando ] = undefined; + } + } + } + } +} ); + +jQuery.fn.extend( { + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().each( function() { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + this.textContent = value; + } + } ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + if ( elem.nodeType === 1 ) { + + // Prevent memory leaks + jQuery.cleanData( getAll( elem, false ) ); + + // Remove any remaining nodes + elem.textContent = ""; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined && elem.nodeType === 1 ) { + return elem.innerHTML; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + elem = this[ i ] || {}; + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1, + i = 0; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Support: Android <=4.0 only, PhantomJS 1 only + // .get() because push.apply(_, arraylike) throws on ancient WebKit + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var getStyles = function( elem ) { + + // Support: IE <=11 only, Firefox <=30 (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); + + + +( function() { + + // Executing both pixelPosition & boxSizingReliable tests require only one layout + // so they're executed at the same time to save the second computation. + function computeStyleTests() { + + // This is a singleton, we need to execute it only once + if ( !div ) { + return; + } + + container.style.cssText = "position:absolute;left:-11111px;width:60px;" + + "margin-top:1px;padding:0;border:0"; + div.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + + "margin:auto;border:1px;padding:1px;" + + "width:60%;top:1%"; + documentElement.appendChild( container ).appendChild( div ); + + var divStyle = window.getComputedStyle( div ); + pixelPositionVal = divStyle.top !== "1%"; + + // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 + reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; + + // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 + // Some styles come back with percentage values, even though they shouldn't + div.style.right = "60%"; + pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; + + // Support: IE 9 - 11 only + // Detect misreporting of content dimensions for box-sizing:border-box elements + boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; + + // Support: IE 9 only + // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) + div.style.position = "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; + + documentElement.removeChild( container ); + + // Nullify the div so it wouldn't be stored in the memory and + // it will also be a sign that checks already performed + div = null; + } + + function roundPixelMeasures( measure ) { + return Math.round( parseFloat( measure ) ); + } + + var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, + reliableTrDimensionsVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + // Support: IE <=9 - 11 only + // Style of cloned element affects source element cloned (#8908) + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + jQuery.extend( support, { + boxSizingReliable: function() { + computeStyleTests(); + return boxSizingReliableVal; + }, + pixelBoxStyles: function() { + computeStyleTests(); + return pixelBoxStylesVal; + }, + pixelPosition: function() { + computeStyleTests(); + return pixelPositionVal; + }, + reliableMarginLeft: function() { + computeStyleTests(); + return reliableMarginLeftVal; + }, + scrollboxSize: function() { + computeStyleTests(); + return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px"; + tr.style.height = "1px"; + trChild.style.height = "9px"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = parseInt( trStyle.height ) > 3; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; + } + } ); +} )(); + + +function curCSS( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + + // Support: Firefox 51+ + // Retrieving style before computed somehow + // fixes an issue with getting wrong values + // on detached elements + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is needed for: + // .css('filter') (IE 9 only, #12537) + // .css('--customProperty) (#3144) + if ( computed ) { + ret = computed.getPropertyValue( name ) || computed[ name ]; + + if ( ret === "" && !isAttached( elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Android Browser returns percentage for some values, + // but width seems to be reliably pixels. + // This is against the CSSOM draft spec: + // https://drafts.csswg.org/cssom/#resolved-values + if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret !== undefined ? + + // Support: IE <=9 - 11 only + // IE returns zIndex value as an integer. + ret + "" : + ret; +} + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; + +// Return a vendor-prefixed property or undefined +function vendorPropName( name ) { + + // Check for vendor prefixed names + var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property +function finalPropName( name ) { + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; + } + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; +} + + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { + + // Any relative (+/-) values have already been + // normalized at this point + var matches = rcssNum.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : + value; +} + +function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { + var i = dimension === "width" ? 1 : 0, + extra = 0, + delta = 0; + + // Adjustment may not be necessary + if ( box === ( isBorderBox ? "border" : "content" ) ) { + return 0; + } + + for ( ; i < 4; i += 2 ) { + + // Both box models exclude margin + if ( box === "margin" ) { + delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); + } + + // If we get here with a content-box, we're seeking "padding" or "border" or "margin" + if ( !isBorderBox ) { + + // Add padding + delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // For "border" or "margin", add border + if ( box !== "padding" ) { + delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + + // But still keep track of it otherwise + } else { + extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + + // If we get here with a border-box (content + padding + border), we're seeking "content" or + // "padding" or "margin" + } else { + + // For "content", subtract padding + if ( box === "content" ) { + delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // For "content" or "padding", subtract border + if ( box !== "margin" ) { + delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + // Account for positive content-box scroll gutter when requested by providing computedVal + if ( !isBorderBox && computedVal >= 0 ) { + + // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border + // Assuming integer scroll gutter, subtract the rest and round down + delta += Math.max( 0, Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + computedVal - + delta - + extra - + 0.5 + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; + } + + return delta; +} + +function getWidthOrHeight( elem, dimension, extra ) { + + // Start with computed style + var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + + val = curCSS( elem, dimension, styles ), + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); + + // Support: Firefox <=54 + // Return a confounding non-pixel value or feign ignorance, as appropriate. + if ( rnumnonpx.test( val ) ) { + if ( !extra ) { + return val; + } + val = "auto"; + } + + + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && + + // Make sure the element is visible & connected + elem.getClientRects().length ) { + + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } + } + + // Normalize "" and auto + val = parseFloat( val ) || 0; + + // Adjust for the element's box model + return ( val + + boxModelAdjustment( + elem, + dimension, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles, + + // Provide the current computed size to request scroll gutter calculation (gh-3589) + val + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: {}, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ), + style = elem.style; + + // Make sure that we're working with the right name. We don't + // want to query the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Gets hook for the prefixed version, then unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set (#7116) + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // background-* props affect original clone's values + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + if ( isCustomProp ) { + style.setProperty( name, value ); + } else { + style[ name ] = value; + } + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var val, num, hooks, + origName = camelCase( name ), + isCustomProp = rcustomProp.test( name ); + + // Make sure that we're working with the right name. We don't + // want to modify the value if it is a CSS custom property + // since they are user-defined. + if ( !isCustomProp ) { + name = finalPropName( origName ); + } + + // Try prefixed name followed by the unprefixed name + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + // Convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Make numeric if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( _i, dimension ) { + jQuery.cssHooks[ dimension ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // Certain elements can have dimension info if we invisibly show them + // but it must have a current display style that would benefit + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + + // Support: Safari 8+ + // Table columns in Safari have non-zero offsetWidth & zero + // getBoundingClientRect().width unless display is changed. + // Support: IE <=11 only + // Running getBoundingClientRect on a disconnected node + // in IE throws an error. + ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); + } + }, + + set: function( elem, value, extra ) { + var matches, + styles = getStyles( elem ), + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; + + // Account for unreliable border-box dimensions by comparing offset* to computed and + // faking a content-box to get border and padding (gh-3699) + if ( isBorderBox && scrollboxSizeBuggy ) { + subtract -= Math.ceil( + elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - + parseFloat( styles[ dimension ] ) - + boxModelAdjustment( elem, dimension, "border", false, styles ) - + 0.5 + ); + } + + // Convert to pixels if value adjustment is needed + if ( subtract && ( matches = rcssNum.exec( value ) ) && + ( matches[ 3 ] || "px" ) !== "px" ) { + + elem.style[ dimension ] = value; + value = jQuery.css( elem, dimension ); + } + + return setPositiveNumber( elem, value, subtract ); + } + }; +} ); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( parseFloat( curCSS( elem, "marginLeft" ) ) || + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // Assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( prefix !== "margin" ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( Array.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // Passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails. + // Simple values such as "10px" are parsed to Float; + // complex values such as "rotate(1rad)" are returned as-is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // Use step hook for back compat. + // Use cssHook if its there. + // Use .style if available and use plain properties where available. + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 only +// Panic based approach to setting things on disconnected nodes +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, inProgress, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +function schedule() { + if ( inProgress ) { + if ( document.hidden === false && window.requestAnimationFrame ) { + window.requestAnimationFrame( schedule ); + } else { + window.setTimeout( schedule, jQuery.fx.interval ); + } + + jQuery.fx.tick(); + } +} + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = Date.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + i = 0, + attrs = { height: type }; + + // If we include width, step value is 1 to do all cssExpand values, + // otherwise step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // We're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, + isBox = "width" in props || "height" in props, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHiddenWithinTree( elem ), + dataShow = dataPriv.get( elem, "fxshow" ); + + // Queue-skipping animations hijack the fx hooks + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // Ensure the complete handler is called before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // Detect show/hide animations + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.test( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // Pretend to be hidden if this is a "show" and + // there is still data from a stopped show/hide + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + + // Ignore all other no-op show/hide data + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + } + } + + // Bail out if this is a no-op like .hide().hide() + propTween = !jQuery.isEmptyObject( props ); + if ( !propTween && jQuery.isEmptyObject( orig ) ) { + return; + } + + // Restrict "overflow" and "display" styles during box animations + if ( isBox && elem.nodeType === 1 ) { + + // Support: IE <=9 - 11, Edge 12 - 15 + // Record all 3 overflow attributes because IE does not infer the shorthand + // from identically-valued overflowX and overflowY and Edge just mirrors + // the overflowX value there. + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Identify a display type, preferring old show/hide data over the CSS cascade + restoreDisplay = dataShow && dataShow.display; + if ( restoreDisplay == null ) { + restoreDisplay = dataPriv.get( elem, "display" ); + } + display = jQuery.css( elem, "display" ); + if ( display === "none" ) { + if ( restoreDisplay ) { + display = restoreDisplay; + } else { + + // Get nonempty value(s) by temporarily forcing visibility + showHide( [ elem ], true ); + restoreDisplay = elem.style.display || restoreDisplay; + display = jQuery.css( elem, "display" ); + showHide( [ elem ] ); + } + } + + // Animate inline elements as inline-block + if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { + if ( jQuery.css( elem, "float" ) === "none" ) { + + // Restore the original display value at the end of pure show/hide animations + if ( !propTween ) { + anim.done( function() { + style.display = restoreDisplay; + } ); + if ( restoreDisplay == null ) { + display = style.display; + restoreDisplay = display === "none" ? "" : display; + } + } + style.display = "inline-block"; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + + // Implement show/hide animations + propTween = false; + for ( prop in orig ) { + + // General show/hide setup for this element animation + if ( !propTween ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); + } + + // Store hidden/visible for toggle so `.stop().toggle()` "reverses" + if ( toggle ) { + dataShow.hidden = !hidden; + } + + // Show elements before animating them + if ( hidden ) { + showHide( [ elem ], true ); + } + + /* eslint-disable no-loop-func */ + + anim.done( function() { + + /* eslint-enable no-loop-func */ + + // The final step of a "hide" animation is actually hiding the element + if ( !hidden ) { + showHide( [ elem ] ); + } + dataPriv.remove( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + } + + // Per-property setup + propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = propTween.start; + if ( hidden ) { + propTween.end = propTween.start; + propTween.start = 0; + } + } + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( Array.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // Not quite $.extend, this won't overwrite existing keys. + // Reusing 'index' because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // Don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 only + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + // If there's more to do, yield + if ( percent < 1 && length ) { + return remaining; + } + + // If this was an empty animation, synthesize a final progress notification + if ( !length ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + } + + // Resolve the animation and report its conclusion + deferred.resolveWith( elem, [ animation ] ); + return false; + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // If we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // Resolve when we played the last frame; otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + result.stop.bind( result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + // Attach callbacks from options + animation + .progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + return animation; +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnothtmlwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !isFunction( easing ) && easing + }; + + // Go to the end state if fx are off + if ( jQuery.fx.off ) { + opt.duration = 0; + + } else { + if ( typeof opt.duration !== "number" ) { + if ( opt.duration in jQuery.fx.speeds ) { + opt.duration = jQuery.fx.speeds[ opt.duration ]; + + } else { + opt.duration = jQuery.fx.speeds._default; + } + } + } + + // Normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // Show any hidden elements after setting opacity to 0 + return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() + + // Animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || dataPriv.get( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = dataPriv.get( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // Start the next in the queue if the last step wasn't forced. + // Timers currently will call their complete callbacks, which + // will dequeue but only if they were gotoEnd. + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = dataPriv.get( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // Enable finishing flag on private data + data.finish = true; + + // Empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // Look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // Look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // Turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + i = 0, + timers = jQuery.timers; + + fxNow = Date.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Run the timer and safely remove it when done (allowing for external removal) + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + jQuery.fx.start(); +}; + +jQuery.fx.interval = 13; +jQuery.fx.start = function() { + if ( inProgress ) { + return; + } + + inProgress = true; + schedule(); +}; + +jQuery.fx.stop = function() { + inProgress = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var input = document.createElement( "input" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + input.type = "checkbox"; + + // Support: Android <=4.3 only + // Default value for a checkbox should be "on" + support.checkOn = input.value !== ""; + + // Support: IE <=11 only + // Must access selectedIndex to make default options select + support.optSelected = opt.selected; + + // Support: IE <=11 only + // An input loses its value after becoming a radio + input = document.createElement( "input" ); + input.value = "t"; + input.type = "radio"; + support.radioValue = input.value === "t"; +} )(); + + +var boolHook, + attrHandle = jQuery.expr.attrHandle; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // Attribute hooks are determined by the lowercase version + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + hooks = jQuery.attrHooks[ name.toLowerCase() ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + nodeName( elem, "input" ) ) { + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, + i = 0, + + // Attribute names can contain non-HTML whitespace characters + // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 + attrNames = value && value.match( rnothtmlwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + elem.removeAttribute( name ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else { + elem.setAttribute( name, name ); + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle, + lowercaseName = name.toLowerCase(); + + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ lowercaseName ]; + attrHandle[ lowercaseName ] = ret; + ret = getter( elem, name, isXML ) != null ? + lowercaseName : + null; + attrHandle[ lowercaseName ] = handle; + } + return ret; + }; +} ); + + + + +var rfocusable = /^(?:input|select|textarea|button)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + return this.each( function() { + delete this[ jQuery.propFix[ name ] || name ]; + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // Support: IE <=9 - 11 only + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + if ( tabindex ) { + return parseInt( tabindex, 10 ); + } + + if ( + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && + elem.href + ) { + return 0; + } + + return -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Support: IE <=11 only +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +// eslint rule "no-unused-expressions" is disabled for this code +// since it considers such accessions noop +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent && parent.parentNode ) { + parent.parentNode.selectedIndex; + } + return null; + }, + set: function( elem ) { + + /* eslint no-unused-expressions: "off" */ + + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + + + + + // Strip and collapse whitespace according to HTML spec + // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace + function stripAndCollapse( value ) { + var tokens = value.match( rnothtmlwhite ) || []; + return tokens.join( " " ); + } + + +function getClass( elem ) { + return elem.getAttribute && elem.getAttribute( "class" ) || ""; +} + +function classesToArray( value ) { + if ( Array.isArray( value ) ) { + return value; + } + if ( typeof value === "string" ) { + return value.match( rnothtmlwhite ) || []; + } + return []; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + classes = classesToArray( value ); + + if ( classes.length ) { + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = stripAndCollapse( cur ); + if ( curValue !== finalValue ) { + elem.setAttribute( "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value, + isValidValue = type === "string" || Array.isArray( value ); + + if ( typeof stateVal === "boolean" && isValidValue ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( isValidValue ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = classesToArray( value ); + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // Store className if set + dataPriv.set( this, "__className__", className ); + } + + // If the element has a class name or if we're passed `false`, + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + if ( this.setAttribute ) { + this.setAttribute( "class", + className || value === false ? + "" : + dataPriv.get( this, "__className__" ) || "" + ); + } + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { + return true; + } + } + + return false; + } +} ); + + + + +var rreturn = /\r/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, valueIsFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + // Handle most common string cases + if ( typeof ret === "string" ) { + return ret.replace( rreturn, "" ); + } + + // Handle cases where value is null/undef or number + return ret == null ? "" : ret; + } + + return; + } + + valueIsFunction = isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( valueIsFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + + } else if ( typeof val === "number" ) { + val += ""; + + } else if ( Array.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE <=10 - 11 only + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + stripAndCollapse( jQuery.text( elem ) ); + } + }, + select: { + get: function( elem ) { + var value, option, i, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one", + values = one ? null : [], + max = one ? index + 1 : options.length; + + if ( index < 0 ) { + i = max; + + } else { + i = one ? index : 0; + } + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // Support: IE <=9 only + // IE8-9 doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + !option.disabled && + ( !option.parentNode.disabled || + !nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + /* eslint-disable no-cond-assign */ + + if ( option.selected = + jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 + ) { + optionSet = true; + } + + /* eslint-enable no-cond-assign */ + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( Array.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +support.focusin = "onfocusin" in window; + + +var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + stopPropagationCallback = function( e ) { + e.stopPropagation(); + }; + +jQuery.extend( jQuery.event, { + + trigger: function( event, data, elem, onlyHandlers ) { + + var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = lastElement = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + lastElement = cur; + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( + dataPriv.get( cur, "events" ) || Object.create( null ) + )[ event.type ] && + dataPriv.get( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( ( !special._default || + special._default.apply( eventPath.pop(), data ) === false ) && + acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name as the event. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + + if ( event.isPropagationStopped() ) { + lastElement.addEventListener( type, stopPropagationCallback ); + } + + elem[ type ](); + + if ( event.isPropagationStopped() ) { + lastElement.removeEventListener( type, stopPropagationCallback ); + } + + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + // Piggyback on a donor event to simulate a different one + // Used only for `focus(in | out)` events + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + } + ); + + jQuery.event.trigger( e, null, elem ); + } + +} ); + +jQuery.fn.extend( { + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +// Support: Firefox <=44 +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this.document || this, + attaches = dataPriv.access( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + dataPriv.remove( doc, fix ); + + } else { + dataPriv.access( doc, fix, attaches ); + } + } + }; + } ); +} +var location = window.location; + +var nonce = { guid: Date.now() }; + +var rquery = ( /\?/ ); + + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml; + if ( !data || typeof data !== "string" ) { + return null; + } + + // Support: IE 9 - 11 only + // IE throws on parseFromString with invalid input. + try { + xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); + } catch ( e ) { + xml = undefined; + } + + if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( Array.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && toType( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, valueOrFunction ) { + + // If value is a function, invoke it and use its return value + var value = isFunction( valueOrFunction ) ? + valueOrFunction() : + valueOrFunction; + + s[ s.length ] = encodeURIComponent( key ) + "=" + + encodeURIComponent( value == null ? "" : value ); + }; + + if ( a == null ) { + return ""; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is( ":disabled" ) so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( _i, elem ) { + var val = jQuery( this ).val(); + + if ( val == null ) { + return null; + } + + if ( Array.isArray( val ) ) { + return jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ); + } + + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +var + r20 = /%20/g, + rhash = /#.*$/, + rantiCache = /([?&])_=[^&]*/, + rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Anchor tag for parsing the document origin + originAnchor = document.createElement( "a" ); + originAnchor.href = location.href; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; + + if ( isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType[ 0 ] === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var key, deep, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + + var ct, type, finalDataType, firstDataType, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s.throws ) { + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: location.href, + type: "GET", + isLocal: rlocalProtocol.test( location.protocol ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": JSON.parse, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var transport, + + // URL without anti-cache param + cacheURL, + + // Response headers + responseHeadersString, + responseHeaders, + + // timeout handle + timeoutTimer, + + // Url cleanup var + urlAnchor, + + // Request state (becomes false upon send and true upon completion) + completed, + + // To know if global events are to be dispatched + fireGlobals, + + // Loop variable + i, + + // uncached part of the url + uncached, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( completed ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); + } + } + match = responseHeaders[ key.toLowerCase() + " " ]; + } + return match == null ? null : match.join( ", " ); + }, + + // Raw string + getAllResponseHeaders: function() { + return completed ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + if ( completed == null ) { + name = requestHeadersNames[ name.toLowerCase() ] = + requestHeadersNames[ name.toLowerCase() ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( completed == null ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( completed ) { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } else { + + // Lazy-add the new callbacks in a way that preserves old ones + for ( code in map ) { + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ); + + // Add protocol if not provided (prefilters might expect it) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || location.href ) + "" ) + .replace( rprotocol, location.protocol + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; + + // A cross-domain request is in order when the origin doesn't match the current origin. + if ( s.crossDomain == null ) { + urlAnchor = document.createElement( "a" ); + + // Support: IE <=8 - 11, Edge 12 - 15 + // IE throws exception on accessing the href property if url is malformed, + // e.g. http://example.com:80x/ + try { + urlAnchor.href = s.url; + + // Support: IE <=8 - 11 only + // Anchor's host property isn't correctly set when s.url is relative + urlAnchor.href = urlAnchor.href; + s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== + urlAnchor.protocol + "//" + urlAnchor.host; + } catch ( e ) { + + // If there is an error parsing the URL, assume it is crossDomain, + // it can be rejected by the transport if it is invalid + s.crossDomain = true; + } + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( completed ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + // Remove hash to simplify url manipulation + cacheURL = s.url.replace( rhash, "" ); + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // Remember the hash so we can put it back + uncached = s.url.slice( cacheURL.length ); + + // If data is available and should be processed, append data to url + if ( s.data && ( s.processData || typeof s.data === "string" ) ) { + cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add or update anti-cache param if needed + if ( s.cache === false ) { + cacheURL = cacheURL.replace( rantiCache, "$1" ); + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; + } + + // Put hash and anti-cache on the URL that will be requested (gh-1732) + s.url = cacheURL + uncached; + + // Change '%20' to '+' if this is encoded form body content (gh-2658) + } else if ( s.data && s.processData && + ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { + s.data = s.data.replace( r20, "+" ); + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // Aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + completeDeferred.add( s.complete ); + jqXHR.done( s.success ); + jqXHR.fail( s.error ); + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( completed ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + completed = false; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Rethrow post-completion exceptions + if ( completed ) { + throw e; + } + + // Propagate others as results + done( -1, e ); + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Ignore repeat invocations + if ( completed ) { + return; + } + + completed = true; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Use a noop converter for missing script + if ( !isSuccess && jQuery.inArray( "script", s.dataTypes ) > -1 ) { + s.converters[ "text script" ] = function() {}; + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // Extract error from statusText and normalize for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( _i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // Shift arguments if data argument was omitted + if ( isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + + +jQuery._evalUrl = function( url, options, doc ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + var wrap; + + if ( this[ 0 ] ) { + if ( isFunction( html ) ) { + html = html.call( this[ 0 ] ); + } + + // The elements to wrap the target around + wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstElementChild ) { + elem = elem.firstElementChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var htmlIsFunction = isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function( selector ) { + this.parent( selector ).not( "body" ).each( function() { + jQuery( this ).replaceWith( this.childNodes ); + } ); + return this; + } +} ); + + +jQuery.expr.pseudos.hidden = function( elem ) { + return !jQuery.expr.pseudos.visible( elem ); +}; +jQuery.expr.pseudos.visible = function( elem ) { + return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); +}; + + + + +jQuery.ajaxSettings.xhr = function() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +}; + +var xhrSuccessStatus = { + + // File protocol always yields status code 0, assume 200 + 0: 200, + + // Support: IE <=9 only + // #1450: sometimes IE returns 1223 when it should be 204 + 1223: 204 + }, + xhrSupported = jQuery.ajaxSettings.xhr(); + +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +support.ajax = xhrSupported = !!xhrSupported; + +jQuery.ajaxTransport( function( options ) { + var callback, errorCallback; + + // Cross domain only allowed if supported through XMLHttpRequest + if ( support.cors || xhrSupported && !options.crossDomain ) { + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(); + + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + xhr.setRequestHeader( i, headers[ i ] ); + } + + // Callback + callback = function( type ) { + return function() { + if ( callback ) { + callback = errorCallback = xhr.onload = + xhr.onerror = xhr.onabort = xhr.ontimeout = + xhr.onreadystatechange = null; + + if ( type === "abort" ) { + xhr.abort(); + } else if ( type === "error" ) { + + // Support: IE <=9 only + // On a manual native abort, IE9 throws + // errors on any property access that is not readyState + if ( typeof xhr.status !== "number" ) { + complete( 0, "error" ); + } else { + complete( + + // File: protocol always yields status 0; see #8605, #14207 + xhr.status, + xhr.statusText + ); + } + } else { + complete( + xhrSuccessStatus[ xhr.status ] || xhr.status, + xhr.statusText, + + // Support: IE <=9 only + // IE9 has no XHR2 but throws on binary (trac-11426) + // For XHR2 non-text, let the caller handle it (gh-2498) + ( xhr.responseType || "text" ) !== "text" || + typeof xhr.responseText !== "string" ? + { binary: xhr.response } : + { text: xhr.responseText }, + xhr.getAllResponseHeaders() + ); + } + } + }; + }; + + // Listen to events + xhr.onload = callback(); + errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); + + // Support: IE 9 only + // Use onreadystatechange to replace onabort + // to handle uncaught aborts + if ( xhr.onabort !== undefined ) { + xhr.onabort = errorCallback; + } else { + xhr.onreadystatechange = function() { + + // Check readyState before timeout as it changes + if ( xhr.readyState === 4 ) { + + // Allow onerror to be called first, + // but that will not handle a native abort + // Also, save errorCallback to a variable + // as xhr.onerror cannot be accessed + window.setTimeout( function() { + if ( callback ) { + errorCallback(); + } + } ); + } + }; + } + + // Create the abort callback + callback = callback( "abort" ); + + try { + + // Do send the request (this may raise an exception) + xhr.send( options.hasContent && options.data || null ); + } catch ( e ) { + + // #14683: Only rethrow if this hasn't been notified as an error yet + if ( callback ) { + throw e; + } + } + }, + + abort: function() { + if ( callback ) { + callback(); + } + } + }; + } +} ); + + + + +// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) +jQuery.ajaxPrefilter( function( s ) { + if ( s.crossDomain ) { + s.contents.script = false; + } +} ); + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and crossDomain +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { + var script, callback; + return { + send: function( _, complete ) { + script = jQuery( " + + + + + + + + + + + + + + +
+
+
+ + +
+ + +

Index

+ +
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..d0a0243 --- /dev/null +++ b/build/index.html @@ -0,0 +1,111 @@ + + + + + + + + + Welcome to Fair coding practices's documentation! — Fair coding practices 1.0 documentation + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+

Welcome to Fair coding practices's documentation!

+
+
+
+
+

Indices and tables

+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/build/objects.inv b/build/objects.inv new file mode 100644 index 0000000..9059360 --- /dev/null +++ b/build/objects.inv @@ -0,0 +1,6 @@ +# Sphinx inventory version 2 +# Project: Fair coding practices +# Version: +# The remainder of this file is compressed using zlib. +xڅ +1 {89sMC[h́Zzn/#l E)E5EԱbVB+N%ل (61ԀTҔhu?wǹmUi`цY.d2زZ?G 7Vb \ No newline at end of file diff --git a/build/search.html b/build/search.html new file mode 100644 index 0000000..5894b08 --- /dev/null +++ b/build/search.html @@ -0,0 +1,119 @@ + + + + + + + + Search — Fair coding practices 1.0 documentation + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +

Search

+ + + + +

+ Searching for multiple words only shows matches that contain + all words. +

+ + +
+ + + +
+ + + +
+ +
+ + +
+ +
+
+ +
+
+ + + + + + + \ No newline at end of file diff --git a/build/searchindex.js b/build/searchindex.js new file mode 100644 index 0000000..4c4e4c4 --- /dev/null +++ b/build/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["index.rst"],objects:{},objnames:{},objtypes:{},terms:{index:0,modul:0,page:0,search:0},titles:["Welcome to Fair coding practices's documentation!"],titleterms:{code:0,document:0,fair:0,indic:0,practic:0,s:0,tabl:0,welcom:0}}) \ No newline at end of file diff --git a/feature-a.md b/feature-a.md new file mode 100644 index 0000000..26aa9a2 --- /dev/null +++ b/feature-a.md @@ -0,0 +1,9 @@ +# Some feature A + +## Subsection + +Some interesting documentation here. + +- item 1 + - nested item 1 +- item 2 diff --git a/plot_demo.ipynb b/plot_demo.ipynb index 480adc9..2097fa8 100644 --- a/plot_demo.ipynb +++ b/plot_demo.ipynb @@ -41,6 +41,37 @@ } ], "metadata": {} + }, + { + "cell_type": "code", + "execution_count": null, + "source": [ + "import pandas as pd\n", + "\n", + "def get_column_names(file, print_columns=False):\n", + " \"\"\"\n", + " Return the column names from a excel file\n", + "\n", + " Parameters:\n", + " -----------\n", + " file: str\n", + " Excel (.xls) file name (path)\n", + "\n", + " print_columns: bool\n", + " Whether to print the columns\n", + "\n", + " Return:\n", + " ------\n", + " columns_headers: list\n", + " \"\"\"\n", + " b = pd.read_excel(a)\n", + " column_headers = list(b.columns.values)\n", + " if print_columns:\n", + " print(\"\\n\".join(column_headers))\n", + " return column_headers" + ], + "outputs": [], + "metadata": {} } ], "metadata": { diff --git a/plot_demo.py b/plot_demo.py index e76b915..b61662b 100644 --- a/plot_demo.py +++ b/plot_demo.py @@ -21,6 +21,4 @@ def plot_temperatures(temperatures, mean): # compute statistics mean = sum(temperatures) / num_measurements - plot_temperatures(temperatures, mean) - - + plot_temperatures(temperatures, mean) \ No newline at end of file diff --git a/source/conf.py b/source/conf.py new file mode 100644 index 0000000..a6a7493 --- /dev/null +++ b/source/conf.py @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +# import os +# import sys +# sys.path.insert(0, os.path.abspath('.')) +import myst_parser + +# -- Project information ----------------------------------------------------- + +project = 'Fair coding practices' +copyright = '2022, Sathish R. Kuppuswamy' +author = 'Sathish R. Kuppuswamy' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '1.0' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'myst_parser', + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['Documentationtemplates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = ['.rst', '.md'] +# source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = 'python' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['Documentationstatic'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Faircodingpracticesdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'Faircodingpractices.tex', 'Fair coding practices Documentation', + 'Sathish R. Kuppuswamy', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'faircodingpractices', 'Fair coding practices Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'Faircodingpractices', 'Fair coding practices Documentation', + author, 'Faircodingpractices', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'https://docs.python.org/': None} + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True diff --git a/source/index.rst b/source/index.rst new file mode 100644 index 0000000..fc7fff4 --- /dev/null +++ b/source/index.rst @@ -0,0 +1,20 @@ +.. Fair coding practices documentation master file, created by + sphinx-quickstart on Wed Dec 14 12:26:00 2022. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Fair coding practices's documentation! +================================================= + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + feature-a.md + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` From a8d8e5092635aac4c13a5c5564dc0f60d7ed107d Mon Sep 17 00:00:00 2001 From: sathish Date: Wed, 14 Dec 2022 12:46:47 +0100 Subject: [PATCH 8/8] add documentation workflow --- .github/workflows/documentation.yaml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/documentation.yaml diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml new file mode 100644 index 0000000..8bed42f --- /dev/null +++ b/.github/workflows/documentation.yaml @@ -0,0 +1,22 @@ +name: Docs +on: [push, pull_request, workflow_dispatch] +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + - name: Install dependencies + run: | + pip install sphinx sphinx_rtd_theme + - name: Sphinx build + run: | + sphinx-build doc _build + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} + with: + publish_branch: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: _build/ + force_orphan: true