hof 21.0.20-axios-beta → 21.1.0-deindex-toggle-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/codeReviewChecklist.md +22 -0
- package/config/hof-defaults.js +9 -1
- package/frontend/govuk-template/build/govuk_template.html +3 -4
- package/frontend/govuk-template/govuk_template_generated.html +3 -4
- package/frontend/template-mixins/mixins/template-mixins.js +1 -0
- package/frontend/template-mixins/partials/forms/checkbox.html +5 -0
- package/frontend/template-mixins/partials/forms/input-text-group.html +1 -1
- package/frontend/template-mixins/partials/forms/select.html +6 -6
- package/frontend/template-mixins/partials/forms/textarea-group.html +1 -1
- package/frontend/template-partials/views/partials/head.html +8 -10
- package/index.js +2 -0
- package/lib/deindex.js +19 -0
- package/lib/ga-tag.js +22 -13
- package/model/apis/axios-settings.js +17 -5
- package/model/apis/html-to-pdf-converter.js +10 -8
- package/model/index.js +93 -79
- package/package.json +6 -8
- package/pull_request.md +16 -0
- package/sandbox/package.json +1 -1
- package/sandbox/public/css/app.css +10 -0
- package/sandbox/public/js/bundle.js +1130 -965
- package/sandbox/yarn.lock +14 -9
- package/.nyc_output/9651d42a-59d8-48e6-949c-655d9fa6db21.json +0 -1
- package/.nyc_output/processinfo/9651d42a-59d8-48e6-949c-655d9fa6db21.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
| @@ -21222,14 +21222,17 @@ $('.typeahead').each(function applyTypeahead() { | |
| 21222 21222 |  | 
| 21223 21223 | 
             
            },{"../../../frontend/themes/gov-uk/client-js":3,"jquery":17,"typeahead-aria":20}],17:[function(require,module,exports){
         | 
| 21224 21224 | 
             
            /*!
         | 
| 21225 | 
            -
             * jQuery JavaScript Library v3. | 
| 21225 | 
            +
             * jQuery JavaScript Library v3.6.0
         | 
| 21226 21226 | 
             
             * https://jquery.com/
         | 
| 21227 21227 | 
             
             *
         | 
| 21228 | 
            +
             * Includes Sizzle.js
         | 
| 21229 | 
            +
             * https://sizzlejs.com/
         | 
| 21230 | 
            +
             *
         | 
| 21228 21231 | 
             
             * Copyright OpenJS Foundation and other contributors
         | 
| 21229 21232 | 
             
             * Released under the MIT license
         | 
| 21230 21233 | 
             
             * https://jquery.org/license
         | 
| 21231 21234 | 
             
             *
         | 
| 21232 | 
            -
             * Date:  | 
| 21235 | 
            +
             * Date: 2021-03-02T17:08Z
         | 
| 21233 21236 | 
             
             */
         | 
| 21234 21237 | 
             
            ( function( global, factory ) {
         | 
| 21235 21238 |  | 
| @@ -21243,7 +21246,7 @@ $('.typeahead').each(function applyTypeahead() { | |
| 21243 21246 | 
             
            		// (such as Node.js), expose a factory as module.exports.
         | 
| 21244 21247 | 
             
            		// This accentuates the need for the creation of a real `window`.
         | 
| 21245 21248 | 
             
            		// e.g. var jQuery = require("jquery")(window);
         | 
| 21246 | 
            -
            		// See ticket  | 
| 21249 | 
            +
            		// See ticket #14549 for more info.
         | 
| 21247 21250 | 
             
            		module.exports = global.document ?
         | 
| 21248 21251 | 
             
            			factory( global, true ) :
         | 
| 21249 21252 | 
             
            			function( w ) {
         | 
| @@ -21370,9 +21373,8 @@ function toType( obj ) { | |
| 21370 21373 |  | 
| 21371 21374 |  | 
| 21372 21375 |  | 
| 21373 | 
            -
            var | 
| 21374 | 
            -
             | 
| 21375 | 
            -
            	rhtmlSuffix = /HTML$/i,
         | 
| 21376 | 
            +
            var
         | 
| 21377 | 
            +
            	version = "3.6.0",
         | 
| 21376 21378 |  | 
| 21377 21379 | 
             
            	// Define a local copy of jQuery
         | 
| 21378 21380 | 
             
            	jQuery = function( selector, context ) {
         | 
| @@ -21618,38 +21620,6 @@ jQuery.extend( { | |
| 21618 21620 | 
             
            		return obj;
         | 
| 21619 21621 | 
             
            	},
         | 
| 21620 21622 |  | 
| 21621 | 
            -
             | 
| 21622 | 
            -
            	// Retrieve the text value of an array of DOM nodes
         | 
| 21623 | 
            -
            	text: function( elem ) {
         | 
| 21624 | 
            -
            		var node,
         | 
| 21625 | 
            -
            			ret = "",
         | 
| 21626 | 
            -
            			i = 0,
         | 
| 21627 | 
            -
            			nodeType = elem.nodeType;
         | 
| 21628 | 
            -
             | 
| 21629 | 
            -
            		if ( !nodeType ) {
         | 
| 21630 | 
            -
             | 
| 21631 | 
            -
            			// If no nodeType, this is expected to be an array
         | 
| 21632 | 
            -
            			while ( ( node = elem[ i++ ] ) ) {
         | 
| 21633 | 
            -
             | 
| 21634 | 
            -
            				// Do not traverse comment nodes
         | 
| 21635 | 
            -
            				ret += jQuery.text( node );
         | 
| 21636 | 
            -
            			}
         | 
| 21637 | 
            -
            		}
         | 
| 21638 | 
            -
            		if ( nodeType === 1 || nodeType === 11 ) {
         | 
| 21639 | 
            -
            			return elem.textContent;
         | 
| 21640 | 
            -
            		}
         | 
| 21641 | 
            -
            		if ( nodeType === 9 ) {
         | 
| 21642 | 
            -
            			return elem.documentElement.textContent;
         | 
| 21643 | 
            -
            		}
         | 
| 21644 | 
            -
            		if ( nodeType === 3 || nodeType === 4 ) {
         | 
| 21645 | 
            -
            			return elem.nodeValue;
         | 
| 21646 | 
            -
            		}
         | 
| 21647 | 
            -
             | 
| 21648 | 
            -
            		// Do not include comment or processing instruction nodes
         | 
| 21649 | 
            -
             | 
| 21650 | 
            -
            		return ret;
         | 
| 21651 | 
            -
            	},
         | 
| 21652 | 
            -
             | 
| 21653 21623 | 
             
            	// results is for internal usage only
         | 
| 21654 21624 | 
             
            	makeArray: function( arr, results ) {
         | 
| 21655 21625 | 
             
            		var ret = results || [];
         | 
| @@ -21672,15 +21642,6 @@ jQuery.extend( { | |
| 21672 21642 | 
             
            		return arr == null ? -1 : indexOf.call( arr, elem, i );
         | 
| 21673 21643 | 
             
            	},
         | 
| 21674 21644 |  | 
| 21675 | 
            -
            	isXMLDoc: function( elem ) {
         | 
| 21676 | 
            -
            		var namespace = elem && elem.namespaceURI,
         | 
| 21677 | 
            -
            			docElem = elem && ( elem.ownerDocument || elem ).documentElement;
         | 
| 21678 | 
            -
             | 
| 21679 | 
            -
            		// Assume HTML when documentElement doesn't yet exist, such as inside
         | 
| 21680 | 
            -
            		// document fragments.
         | 
| 21681 | 
            -
            		return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
         | 
| 21682 | 
            -
            	},
         | 
| 21683 | 
            -
             | 
| 21684 21645 | 
             
            	// Support: Android <=4.0 only, PhantomJS 1 only
         | 
| 21685 21646 | 
             
            	// push.apply(_, arraylike) throws on ancient WebKit
         | 
| 21686 21647 | 
             
            	merge: function( first, second ) {
         | 
| @@ -21782,98 +21743,43 @@ function isArrayLike( obj ) { | |
| 21782 21743 | 
             
            	return type === "array" || length === 0 ||
         | 
| 21783 21744 | 
             
            		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
         | 
| 21784 21745 | 
             
            }
         | 
| 21785 | 
            -
             | 
| 21786 | 
            -
             | 
| 21787 | 
            -
             | 
| 21788 | 
            -
             | 
| 21789 | 
            -
             | 
| 21790 | 
            -
             | 
| 21791 | 
            -
             | 
| 21792 | 
            -
             | 
| 21793 | 
            -
             | 
| 21794 | 
            -
             | 
| 21795 | 
            -
             | 
| 21796 | 
            -
             | 
| 21797 | 
            -
             | 
| 21798 | 
            -
            var splice = arr.splice;
         | 
| 21799 | 
            -
             | 
| 21800 | 
            -
             | 
| 21801 | 
            -
            var whitespace = "[\\x20\\t\\r\\n\\f]";
         | 
| 21802 | 
            -
             | 
| 21803 | 
            -
             | 
| 21804 | 
            -
            var rtrimCSS = new RegExp(
         | 
| 21805 | 
            -
            	"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
         | 
| 21806 | 
            -
            	"g"
         | 
| 21807 | 
            -
            );
         | 
| 21808 | 
            -
             | 
| 21809 | 
            -
             | 
| 21810 | 
            -
             | 
| 21811 | 
            -
             | 
| 21812 | 
            -
            // Note: an element does not contain itself
         | 
| 21813 | 
            -
            jQuery.contains = function( a, b ) {
         | 
| 21814 | 
            -
            	var bup = b && b.parentNode;
         | 
| 21815 | 
            -
             | 
| 21816 | 
            -
            	return a === bup || !!( bup && bup.nodeType === 1 && (
         | 
| 21817 | 
            -
             | 
| 21818 | 
            -
            		// Support: IE 9 - 11+
         | 
| 21819 | 
            -
            		// IE doesn't have `contains` on SVG.
         | 
| 21820 | 
            -
            		a.contains ?
         | 
| 21821 | 
            -
            			a.contains( bup ) :
         | 
| 21822 | 
            -
            			a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
         | 
| 21823 | 
            -
            	) );
         | 
| 21824 | 
            -
            };
         | 
| 21825 | 
            -
             | 
| 21826 | 
            -
             | 
| 21827 | 
            -
             | 
| 21828 | 
            -
             | 
| 21829 | 
            -
            // CSS string/identifier serialization
         | 
| 21830 | 
            -
            // https://drafts.csswg.org/cssom/#common-serializing-idioms
         | 
| 21831 | 
            -
            var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
         | 
| 21832 | 
            -
             | 
| 21833 | 
            -
            function fcssescape( ch, asCodePoint ) {
         | 
| 21834 | 
            -
            	if ( asCodePoint ) {
         | 
| 21835 | 
            -
             | 
| 21836 | 
            -
            		// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
         | 
| 21837 | 
            -
            		if ( ch === "\0" ) {
         | 
| 21838 | 
            -
            			return "\uFFFD";
         | 
| 21839 | 
            -
            		}
         | 
| 21840 | 
            -
             | 
| 21841 | 
            -
            		// Control characters and (dependent upon position) numbers get escaped as code points
         | 
| 21842 | 
            -
            		return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
         | 
| 21843 | 
            -
            	}
         | 
| 21844 | 
            -
             | 
| 21845 | 
            -
            	// Other potentially-special ASCII characters get backslash-escaped
         | 
| 21846 | 
            -
            	return "\\" + ch;
         | 
| 21847 | 
            -
            }
         | 
| 21848 | 
            -
             | 
| 21849 | 
            -
            jQuery.escapeSelector = function( sel ) {
         | 
| 21850 | 
            -
            	return ( sel + "" ).replace( rcssescape, fcssescape );
         | 
| 21851 | 
            -
            };
         | 
| 21852 | 
            -
             | 
| 21853 | 
            -
             | 
| 21854 | 
            -
             | 
| 21855 | 
            -
             | 
| 21856 | 
            -
            var preferredDoc = document,
         | 
| 21857 | 
            -
            	pushNative = push;
         | 
| 21858 | 
            -
             | 
| 21859 | 
            -
            ( function() {
         | 
| 21860 | 
            -
             | 
| 21746 | 
            +
            var Sizzle =
         | 
| 21747 | 
            +
            /*!
         | 
| 21748 | 
            +
             * Sizzle CSS Selector Engine v2.3.6
         | 
| 21749 | 
            +
             * https://sizzlejs.com/
         | 
| 21750 | 
            +
             *
         | 
| 21751 | 
            +
             * Copyright JS Foundation and other contributors
         | 
| 21752 | 
            +
             * Released under the MIT license
         | 
| 21753 | 
            +
             * https://js.foundation/
         | 
| 21754 | 
            +
             *
         | 
| 21755 | 
            +
             * Date: 2021-02-16
         | 
| 21756 | 
            +
             */
         | 
| 21757 | 
            +
            ( function( window ) {
         | 
| 21861 21758 | 
             
            var i,
         | 
| 21759 | 
            +
            	support,
         | 
| 21862 21760 | 
             
            	Expr,
         | 
| 21761 | 
            +
            	getText,
         | 
| 21762 | 
            +
            	isXML,
         | 
| 21763 | 
            +
            	tokenize,
         | 
| 21764 | 
            +
            	compile,
         | 
| 21765 | 
            +
            	select,
         | 
| 21863 21766 | 
             
            	outermostContext,
         | 
| 21864 21767 | 
             
            	sortInput,
         | 
| 21865 21768 | 
             
            	hasDuplicate,
         | 
| 21866 | 
            -
            	push = pushNative,
         | 
| 21867 21769 |  | 
| 21868 21770 | 
             
            	// Local document vars
         | 
| 21771 | 
            +
            	setDocument,
         | 
| 21869 21772 | 
             
            	document,
         | 
| 21870 | 
            -
            	 | 
| 21773 | 
            +
            	docElem,
         | 
| 21871 21774 | 
             
            	documentIsHTML,
         | 
| 21872 21775 | 
             
            	rbuggyQSA,
         | 
| 21776 | 
            +
            	rbuggyMatches,
         | 
| 21873 21777 | 
             
            	matches,
         | 
| 21778 | 
            +
            	contains,
         | 
| 21874 21779 |  | 
| 21875 21780 | 
             
            	// Instance-specific data
         | 
| 21876 | 
            -
            	expando =  | 
| 21781 | 
            +
            	expando = "sizzle" + 1 * new Date(),
         | 
| 21782 | 
            +
            	preferredDoc = window.document,
         | 
| 21877 21783 | 
             
            	dirruns = 0,
         | 
| 21878 21784 | 
             
            	done = 0,
         | 
| 21879 21785 | 
             
            	classCache = createCache(),
         | 
| @@ -21887,22 +21793,47 @@ var i, | |
| 21887 21793 | 
             
            		return 0;
         | 
| 21888 21794 | 
             
            	},
         | 
| 21889 21795 |  | 
| 21890 | 
            -
            	 | 
| 21891 | 
            -
             | 
| 21796 | 
            +
            	// Instance methods
         | 
| 21797 | 
            +
            	hasOwn = ( {} ).hasOwnProperty,
         | 
| 21798 | 
            +
            	arr = [],
         | 
| 21799 | 
            +
            	pop = arr.pop,
         | 
| 21800 | 
            +
            	pushNative = arr.push,
         | 
| 21801 | 
            +
            	push = arr.push,
         | 
| 21802 | 
            +
            	slice = arr.slice,
         | 
| 21803 | 
            +
             | 
| 21804 | 
            +
            	// Use a stripped-down indexOf as it's faster than native
         | 
| 21805 | 
            +
            	// https://jsperf.com/thor-indexof-vs-for/5
         | 
| 21806 | 
            +
            	indexOf = function( list, elem ) {
         | 
| 21807 | 
            +
            		var i = 0,
         | 
| 21808 | 
            +
            			len = list.length;
         | 
| 21809 | 
            +
            		for ( ; i < len; i++ ) {
         | 
| 21810 | 
            +
            			if ( list[ i ] === elem ) {
         | 
| 21811 | 
            +
            				return i;
         | 
| 21812 | 
            +
            			}
         | 
| 21813 | 
            +
            		}
         | 
| 21814 | 
            +
            		return -1;
         | 
| 21815 | 
            +
            	},
         | 
| 21816 | 
            +
             | 
| 21817 | 
            +
            	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
         | 
| 21818 | 
            +
            		"ismap|loop|multiple|open|readonly|required|scoped",
         | 
| 21892 21819 |  | 
| 21893 21820 | 
             
            	// Regular expressions
         | 
| 21894 21821 |  | 
| 21822 | 
            +
            	// http://www.w3.org/TR/css3-selectors/#whitespace
         | 
| 21823 | 
            +
            	whitespace = "[\\x20\\t\\r\\n\\f]",
         | 
| 21824 | 
            +
             | 
| 21895 21825 | 
             
            	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
         | 
| 21896 21826 | 
             
            	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
         | 
| 21897 21827 | 
             
            		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
         | 
| 21898 21828 |  | 
| 21899 | 
            -
            	// Attribute selectors:  | 
| 21829 | 
            +
            	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
         | 
| 21900 21830 | 
             
            	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
         | 
| 21901 21831 |  | 
| 21902 21832 | 
             
            		// Operator (capture 2)
         | 
| 21903 21833 | 
             
            		"*([*^$|!~]?=)" + whitespace +
         | 
| 21904 21834 |  | 
| 21905 | 
            -
            		// "Attribute values must be CSS identifiers [capture 5] | 
| 21835 | 
            +
            		// "Attribute values must be CSS identifiers [capture 5]
         | 
| 21836 | 
            +
            		// or strings [capture 3 or capture 4]"
         | 
| 21906 21837 | 
             
            		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
         | 
| 21907 21838 | 
             
            		whitespace + "*\\]",
         | 
| 21908 21839 |  | 
| @@ -21921,88 +21852,101 @@ var i, | |
| 21921 21852 |  | 
| 21922 21853 | 
             
            	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
         | 
| 21923 21854 | 
             
            	rwhitespace = new RegExp( whitespace + "+", "g" ),
         | 
| 21855 | 
            +
            	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
         | 
| 21856 | 
            +
            		whitespace + "+$", "g" ),
         | 
| 21924 21857 |  | 
| 21925 21858 | 
             
            	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
         | 
| 21926 | 
            -
            	 | 
| 21927 | 
            -
            		 | 
| 21859 | 
            +
            	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
         | 
| 21860 | 
            +
            		"*" ),
         | 
| 21928 21861 | 
             
            	rdescend = new RegExp( whitespace + "|>" ),
         | 
| 21929 21862 |  | 
| 21930 21863 | 
             
            	rpseudo = new RegExp( pseudos ),
         | 
| 21931 21864 | 
             
            	ridentifier = new RegExp( "^" + identifier + "$" ),
         | 
| 21932 21865 |  | 
| 21933 21866 | 
             
            	matchExpr = {
         | 
| 21934 | 
            -
            		ID: new RegExp( "^#(" + identifier + ")" ),
         | 
| 21935 | 
            -
            		CLASS: new RegExp( "^\\.(" + identifier + ")" ),
         | 
| 21936 | 
            -
            		TAG: new RegExp( "^(" + identifier + "|[*])" ),
         | 
| 21937 | 
            -
            		ATTR: new RegExp( "^" + attributes ),
         | 
| 21938 | 
            -
            		PSEUDO: new RegExp( "^" + pseudos ),
         | 
| 21939 | 
            -
            		CHILD: new RegExp(
         | 
| 21940 | 
            -
            			" | 
| 21941 | 
            -
             | 
| 21942 | 
            -
             | 
| 21943 | 
            -
            		bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
         | 
| 21867 | 
            +
            		"ID": new RegExp( "^#(" + identifier + ")" ),
         | 
| 21868 | 
            +
            		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
         | 
| 21869 | 
            +
            		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
         | 
| 21870 | 
            +
            		"ATTR": new RegExp( "^" + attributes ),
         | 
| 21871 | 
            +
            		"PSEUDO": new RegExp( "^" + pseudos ),
         | 
| 21872 | 
            +
            		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
         | 
| 21873 | 
            +
            			whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
         | 
| 21874 | 
            +
            			whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
         | 
| 21875 | 
            +
            		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
         | 
| 21944 21876 |  | 
| 21945 21877 | 
             
            		// For use in libraries implementing .is()
         | 
| 21946 21878 | 
             
            		// We use this for POS matching in `select`
         | 
| 21947 | 
            -
            		needsContext: new RegExp( "^" + whitespace +
         | 
| 21879 | 
            +
            		"needsContext": new RegExp( "^" + whitespace +
         | 
| 21948 21880 | 
             
            			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
         | 
| 21949 21881 | 
             
            			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
         | 
| 21950 21882 | 
             
            	},
         | 
| 21951 21883 |  | 
| 21884 | 
            +
            	rhtml = /HTML$/i,
         | 
| 21952 21885 | 
             
            	rinputs = /^(?:input|select|textarea|button)$/i,
         | 
| 21953 21886 | 
             
            	rheader = /^h\d$/i,
         | 
| 21954 21887 |  | 
| 21888 | 
            +
            	rnative = /^[^{]+\{\s*\[native \w/,
         | 
| 21889 | 
            +
             | 
| 21955 21890 | 
             
            	// Easily-parseable/retrievable ID or TAG or CLASS selectors
         | 
| 21956 21891 | 
             
            	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
         | 
| 21957 21892 |  | 
| 21958 21893 | 
             
            	rsibling = /[+~]/,
         | 
| 21959 21894 |  | 
| 21960 21895 | 
             
            	// CSS escapes
         | 
| 21961 | 
            -
            	//  | 
| 21962 | 
            -
            	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
         | 
| 21963 | 
            -
            		"?|\\\\([^\\r\\n\\f])", "g" ),
         | 
| 21896 | 
            +
            	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
         | 
| 21897 | 
            +
            	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
         | 
| 21964 21898 | 
             
            	funescape = function( escape, nonHex ) {
         | 
| 21965 21899 | 
             
            		var high = "0x" + escape.slice( 1 ) - 0x10000;
         | 
| 21966 21900 |  | 
| 21967 | 
            -
            		 | 
| 21901 | 
            +
            		return nonHex ?
         | 
| 21968 21902 |  | 
| 21969 21903 | 
             
            			// Strip the backslash prefix from a non-hex escape sequence
         | 
| 21970 | 
            -
            			 | 
| 21904 | 
            +
            			nonHex :
         | 
| 21905 | 
            +
             | 
| 21906 | 
            +
            			// Replace a hexadecimal escape sequence with the encoded Unicode code point
         | 
| 21907 | 
            +
            			// Support: IE <=11+
         | 
| 21908 | 
            +
            			// For values outside the Basic Multilingual Plane (BMP), manually construct a
         | 
| 21909 | 
            +
            			// surrogate pair
         | 
| 21910 | 
            +
            			high < 0 ?
         | 
| 21911 | 
            +
            				String.fromCharCode( high + 0x10000 ) :
         | 
| 21912 | 
            +
            				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
         | 
| 21913 | 
            +
            	},
         | 
| 21914 | 
            +
             | 
| 21915 | 
            +
            	// CSS string/identifier serialization
         | 
| 21916 | 
            +
            	// https://drafts.csswg.org/cssom/#common-serializing-idioms
         | 
| 21917 | 
            +
            	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
         | 
| 21918 | 
            +
            	fcssescape = function( ch, asCodePoint ) {
         | 
| 21919 | 
            +
            		if ( asCodePoint ) {
         | 
| 21920 | 
            +
             | 
| 21921 | 
            +
            			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
         | 
| 21922 | 
            +
            			if ( ch === "\0" ) {
         | 
| 21923 | 
            +
            				return "\uFFFD";
         | 
| 21924 | 
            +
            			}
         | 
| 21925 | 
            +
             | 
| 21926 | 
            +
            			// Control characters and (dependent upon position) numbers get escaped as code points
         | 
| 21927 | 
            +
            			return ch.slice( 0, -1 ) + "\\" +
         | 
| 21928 | 
            +
            				ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
         | 
| 21971 21929 | 
             
            		}
         | 
| 21972 21930 |  | 
| 21973 | 
            -
            		//  | 
| 21974 | 
            -
            		 | 
| 21975 | 
            -
            		// For values outside the Basic Multilingual Plane (BMP), manually construct a
         | 
| 21976 | 
            -
            		// surrogate pair
         | 
| 21977 | 
            -
            		return high < 0 ?
         | 
| 21978 | 
            -
            			String.fromCharCode( high + 0x10000 ) :
         | 
| 21979 | 
            -
            			String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
         | 
| 21931 | 
            +
            		// Other potentially-special ASCII characters get backslash-escaped
         | 
| 21932 | 
            +
            		return "\\" + ch;
         | 
| 21980 21933 | 
             
            	},
         | 
| 21981 21934 |  | 
| 21982 | 
            -
            	// Used for iframes | 
| 21983 | 
            -
            	//  | 
| 21935 | 
            +
            	// Used for iframes
         | 
| 21936 | 
            +
            	// See setDocument()
         | 
| 21984 21937 | 
             
            	// Removing the function wrapper causes a "Permission Denied"
         | 
| 21985 | 
            -
            	// error in IE | 
| 21938 | 
            +
            	// error in IE
         | 
| 21986 21939 | 
             
            	unloadHandler = function() {
         | 
| 21987 21940 | 
             
            		setDocument();
         | 
| 21988 21941 | 
             
            	},
         | 
| 21989 21942 |  | 
| 21990 21943 | 
             
            	inDisabledFieldset = addCombinator(
         | 
| 21991 21944 | 
             
            		function( elem ) {
         | 
| 21992 | 
            -
            			return elem.disabled === true && nodeName(  | 
| 21945 | 
            +
            			return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
         | 
| 21993 21946 | 
             
            		},
         | 
| 21994 21947 | 
             
            		{ dir: "parentNode", next: "legend" }
         | 
| 21995 21948 | 
             
            	);
         | 
| 21996 21949 |  | 
| 21997 | 
            -
            // Support: IE <=9 only
         | 
| 21998 | 
            -
            // Accessing document.activeElement can throw unexpectedly
         | 
| 21999 | 
            -
            // https://bugs.jquery.com/ticket/13393
         | 
| 22000 | 
            -
            function safeActiveElement() {
         | 
| 22001 | 
            -
            	try {
         | 
| 22002 | 
            -
            		return document.activeElement;
         | 
| 22003 | 
            -
            	} catch ( err ) { }
         | 
| 22004 | 
            -
            }
         | 
| 22005 | 
            -
             | 
| 22006 21950 | 
             
            // Optimize for push.apply( _, NodeList )
         | 
| 22007 21951 | 
             
            try {
         | 
| 22008 21952 | 
             
            	push.apply(
         | 
| @@ -22010,22 +21954,32 @@ try { | |
| 22010 21954 | 
             
            		preferredDoc.childNodes
         | 
| 22011 21955 | 
             
            	);
         | 
| 22012 21956 |  | 
| 22013 | 
            -
            	// Support: Android | 
| 21957 | 
            +
            	// Support: Android<4.0
         | 
| 22014 21958 | 
             
            	// Detect silently failing push.apply
         | 
| 22015 21959 | 
             
            	// eslint-disable-next-line no-unused-expressions
         | 
| 22016 21960 | 
             
            	arr[ preferredDoc.childNodes.length ].nodeType;
         | 
| 22017 21961 | 
             
            } catch ( e ) {
         | 
| 22018 | 
            -
            	push = {
         | 
| 22019 | 
            -
             | 
| 21962 | 
            +
            	push = { apply: arr.length ?
         | 
| 21963 | 
            +
             | 
| 21964 | 
            +
            		// Leverage slice if possible
         | 
| 21965 | 
            +
            		function( target, els ) {
         | 
| 22020 21966 | 
             
            			pushNative.apply( target, slice.call( els ) );
         | 
| 22021 | 
            -
            		} | 
| 22022 | 
            -
             | 
| 22023 | 
            -
             | 
| 21967 | 
            +
            		} :
         | 
| 21968 | 
            +
             | 
| 21969 | 
            +
            		// Support: IE<9
         | 
| 21970 | 
            +
            		// Otherwise append directly
         | 
| 21971 | 
            +
            		function( target, els ) {
         | 
| 21972 | 
            +
            			var j = target.length,
         | 
| 21973 | 
            +
            				i = 0;
         | 
| 21974 | 
            +
             | 
| 21975 | 
            +
            			// Can't trust NodeList.length
         | 
| 21976 | 
            +
            			while ( ( target[ j++ ] = els[ i++ ] ) ) {}
         | 
| 21977 | 
            +
            			target.length = j - 1;
         | 
| 22024 21978 | 
             
            		}
         | 
| 22025 21979 | 
             
            	};
         | 
| 22026 21980 | 
             
            }
         | 
| 22027 21981 |  | 
| 22028 | 
            -
            function  | 
| 21982 | 
            +
            function Sizzle( selector, context, results, seed ) {
         | 
| 22029 21983 | 
             
            	var m, i, elem, nid, match, groups, newSelector,
         | 
| 22030 21984 | 
             
            		newContext = context && context.ownerDocument,
         | 
| 22031 21985 |  | 
| @@ -22059,10 +22013,11 @@ function find( selector, context, results, seed ) { | |
| 22059 22013 | 
             
            					if ( nodeType === 9 ) {
         | 
| 22060 22014 | 
             
            						if ( ( elem = context.getElementById( m ) ) ) {
         | 
| 22061 22015 |  | 
| 22062 | 
            -
            							// Support: IE  | 
| 22016 | 
            +
            							// Support: IE, Opera, Webkit
         | 
| 22017 | 
            +
            							// TODO: identify versions
         | 
| 22063 22018 | 
             
            							// getElementById can match elements by name instead of ID
         | 
| 22064 22019 | 
             
            							if ( elem.id === m ) {
         | 
| 22065 | 
            -
            								push | 
| 22020 | 
            +
            								results.push( elem );
         | 
| 22066 22021 | 
             
            								return results;
         | 
| 22067 22022 | 
             
            							}
         | 
| 22068 22023 | 
             
            						} else {
         | 
| @@ -22072,13 +22027,14 @@ function find( selector, context, results, seed ) { | |
| 22072 22027 | 
             
            					// Element context
         | 
| 22073 22028 | 
             
            					} else {
         | 
| 22074 22029 |  | 
| 22075 | 
            -
            						// Support: IE  | 
| 22030 | 
            +
            						// Support: IE, Opera, Webkit
         | 
| 22031 | 
            +
            						// TODO: identify versions
         | 
| 22076 22032 | 
             
            						// getElementById can match elements by name instead of ID
         | 
| 22077 22033 | 
             
            						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
         | 
| 22078 | 
            -
            							 | 
| 22034 | 
            +
            							contains( context, elem ) &&
         | 
| 22079 22035 | 
             
            							elem.id === m ) {
         | 
| 22080 22036 |  | 
| 22081 | 
            -
            							push | 
| 22037 | 
            +
            							results.push( elem );
         | 
| 22082 22038 | 
             
            							return results;
         | 
| 22083 22039 | 
             
            						}
         | 
| 22084 22040 | 
             
            					}
         | 
| @@ -22089,15 +22045,22 @@ function find( selector, context, results, seed ) { | |
| 22089 22045 | 
             
            					return results;
         | 
| 22090 22046 |  | 
| 22091 22047 | 
             
            				// Class selector
         | 
| 22092 | 
            -
            				} else if ( ( m = match[ 3 ] ) &&  | 
| 22048 | 
            +
            				} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
         | 
| 22049 | 
            +
            					context.getElementsByClassName ) {
         | 
| 22050 | 
            +
             | 
| 22093 22051 | 
             
            					push.apply( results, context.getElementsByClassName( m ) );
         | 
| 22094 22052 | 
             
            					return results;
         | 
| 22095 22053 | 
             
            				}
         | 
| 22096 22054 | 
             
            			}
         | 
| 22097 22055 |  | 
| 22098 22056 | 
             
            			// Take advantage of querySelectorAll
         | 
| 22099 | 
            -
            			if (  | 
| 22100 | 
            -
            				 | 
| 22057 | 
            +
            			if ( support.qsa &&
         | 
| 22058 | 
            +
            				!nonnativeSelectorCache[ selector + " " ] &&
         | 
| 22059 | 
            +
            				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
         | 
| 22060 | 
            +
             | 
| 22061 | 
            +
            				// Support: IE 8 only
         | 
| 22062 | 
            +
            				// Exclude object elements
         | 
| 22063 | 
            +
            				( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
         | 
| 22101 22064 |  | 
| 22102 22065 | 
             
            				newSelector = selector;
         | 
| 22103 22066 | 
             
            				newContext = context;
         | 
| @@ -22110,7 +22073,7 @@ function find( selector, context, results, seed ) { | |
| 22110 22073 | 
             
            				// as such selectors are not recognized by querySelectorAll.
         | 
| 22111 22074 | 
             
            				// Thanks to Andrew Dupont for this technique.
         | 
| 22112 22075 | 
             
            				if ( nodeType === 1 &&
         | 
| 22113 | 
            -
            					( rdescend.test( selector ) ||  | 
| 22076 | 
            +
            					( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
         | 
| 22114 22077 |  | 
| 22115 22078 | 
             
            					// Expand context for sibling selectors
         | 
| 22116 22079 | 
             
            					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
         | 
| @@ -22118,15 +22081,11 @@ function find( selector, context, results, seed ) { | |
| 22118 22081 |  | 
| 22119 22082 | 
             
            					// We can use :scope instead of the ID hack if the browser
         | 
| 22120 22083 | 
             
            					// supports it & if we're not changing the context.
         | 
| 22121 | 
            -
            					 | 
| 22122 | 
            -
            					// IE/Edge sometimes throw a "Permission denied" error when
         | 
| 22123 | 
            -
            					// strict-comparing two documents; shallow comparisons work.
         | 
| 22124 | 
            -
            					// eslint-disable-next-line eqeqeq
         | 
| 22125 | 
            -
            					if ( newContext != context || !support.scope ) {
         | 
| 22084 | 
            +
            					if ( newContext !== context || !support.scope ) {
         | 
| 22126 22085 |  | 
| 22127 22086 | 
             
            						// Capture the context ID, setting it first if necessary
         | 
| 22128 22087 | 
             
            						if ( ( nid = context.getAttribute( "id" ) ) ) {
         | 
| 22129 | 
            -
            							nid =  | 
| 22088 | 
            +
            							nid = nid.replace( rcssescape, fcssescape );
         | 
| 22130 22089 | 
             
            						} else {
         | 
| 22131 22090 | 
             
            							context.setAttribute( "id", ( nid = expando ) );
         | 
| 22132 22091 | 
             
            						}
         | 
| @@ -22159,7 +22118,7 @@ function find( selector, context, results, seed ) { | |
| 22159 22118 | 
             
            	}
         | 
| 22160 22119 |  | 
| 22161 22120 | 
             
            	// All others
         | 
| 22162 | 
            -
            	return select( selector.replace(  | 
| 22121 | 
            +
            	return select( selector.replace( rtrim, "$1" ), context, results, seed );
         | 
| 22163 22122 | 
             
            }
         | 
| 22164 22123 |  | 
| 22165 22124 | 
             
            /**
         | 
| @@ -22173,8 +22132,7 @@ function createCache() { | |
| 22173 22132 |  | 
| 22174 22133 | 
             
            	function cache( key, value ) {
         | 
| 22175 22134 |  | 
| 22176 | 
            -
            		// Use (key + " ") to avoid collision with native prototype properties
         | 
| 22177 | 
            -
            		// (see https://github.com/jquery/sizzle/issues/157)
         | 
| 22135 | 
            +
            		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
         | 
| 22178 22136 | 
             
            		if ( keys.push( key + " " ) > Expr.cacheLength ) {
         | 
| 22179 22137 |  | 
| 22180 22138 | 
             
            			// Only keep the most recent entries
         | 
| @@ -22186,7 +22144,7 @@ function createCache() { | |
| 22186 22144 | 
             
            }
         | 
| 22187 22145 |  | 
| 22188 22146 | 
             
            /**
         | 
| 22189 | 
            -
             * Mark a function for special use by  | 
| 22147 | 
            +
             * Mark a function for special use by Sizzle
         | 
| 22190 22148 | 
             
             * @param {Function} fn The function to mark
         | 
| 22191 22149 | 
             
             */
         | 
| 22192 22150 | 
             
            function markFunction( fn ) {
         | 
| @@ -22217,13 +22175,56 @@ function assert( fn ) { | |
| 22217 22175 | 
             
            	}
         | 
| 22218 22176 | 
             
            }
         | 
| 22219 22177 |  | 
| 22178 | 
            +
            /**
         | 
| 22179 | 
            +
             * Adds the same handler for all of the specified attrs
         | 
| 22180 | 
            +
             * @param {String} attrs Pipe-separated list of attributes
         | 
| 22181 | 
            +
             * @param {Function} handler The method that will be applied
         | 
| 22182 | 
            +
             */
         | 
| 22183 | 
            +
            function addHandle( attrs, handler ) {
         | 
| 22184 | 
            +
            	var arr = attrs.split( "|" ),
         | 
| 22185 | 
            +
            		i = arr.length;
         | 
| 22186 | 
            +
             | 
| 22187 | 
            +
            	while ( i-- ) {
         | 
| 22188 | 
            +
            		Expr.attrHandle[ arr[ i ] ] = handler;
         | 
| 22189 | 
            +
            	}
         | 
| 22190 | 
            +
            }
         | 
| 22191 | 
            +
             | 
| 22192 | 
            +
            /**
         | 
| 22193 | 
            +
             * Checks document order of two siblings
         | 
| 22194 | 
            +
             * @param {Element} a
         | 
| 22195 | 
            +
             * @param {Element} b
         | 
| 22196 | 
            +
             * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
         | 
| 22197 | 
            +
             */
         | 
| 22198 | 
            +
            function siblingCheck( a, b ) {
         | 
| 22199 | 
            +
            	var cur = b && a,
         | 
| 22200 | 
            +
            		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
         | 
| 22201 | 
            +
            			a.sourceIndex - b.sourceIndex;
         | 
| 22202 | 
            +
             | 
| 22203 | 
            +
            	// Use IE sourceIndex if available on both nodes
         | 
| 22204 | 
            +
            	if ( diff ) {
         | 
| 22205 | 
            +
            		return diff;
         | 
| 22206 | 
            +
            	}
         | 
| 22207 | 
            +
             | 
| 22208 | 
            +
            	// Check if b follows a
         | 
| 22209 | 
            +
            	if ( cur ) {
         | 
| 22210 | 
            +
            		while ( ( cur = cur.nextSibling ) ) {
         | 
| 22211 | 
            +
            			if ( cur === b ) {
         | 
| 22212 | 
            +
            				return -1;
         | 
| 22213 | 
            +
            			}
         | 
| 22214 | 
            +
            		}
         | 
| 22215 | 
            +
            	}
         | 
| 22216 | 
            +
             | 
| 22217 | 
            +
            	return a ? 1 : -1;
         | 
| 22218 | 
            +
            }
         | 
| 22219 | 
            +
             | 
| 22220 22220 | 
             
            /**
         | 
| 22221 22221 | 
             
             * Returns a function to use in pseudos for input types
         | 
| 22222 22222 | 
             
             * @param {String} type
         | 
| 22223 22223 | 
             
             */
         | 
| 22224 22224 | 
             
            function createInputPseudo( type ) {
         | 
| 22225 22225 | 
             
            	return function( elem ) {
         | 
| 22226 | 
            -
            		 | 
| 22226 | 
            +
            		var name = elem.nodeName.toLowerCase();
         | 
| 22227 | 
            +
            		return name === "input" && elem.type === type;
         | 
| 22227 22228 | 
             
            	};
         | 
| 22228 22229 | 
             
            }
         | 
| 22229 22230 |  | 
| @@ -22233,8 +22234,8 @@ function createInputPseudo( type ) { | |
| 22233 22234 | 
             
             */
         | 
| 22234 22235 | 
             
            function createButtonPseudo( type ) {
         | 
| 22235 22236 | 
             
            	return function( elem ) {
         | 
| 22236 | 
            -
            		 | 
| 22237 | 
            -
             | 
| 22237 | 
            +
            		var name = elem.nodeName.toLowerCase();
         | 
| 22238 | 
            +
            		return ( name === "input" || name === "button" ) && elem.type === type;
         | 
| 22238 22239 | 
             
            	};
         | 
| 22239 22240 | 
             
            }
         | 
| 22240 22241 |  | 
| @@ -22270,13 +22271,14 @@ function createDisabledPseudo( disabled ) { | |
| 22270 22271 | 
             
            					}
         | 
| 22271 22272 | 
             
            				}
         | 
| 22272 22273 |  | 
| 22273 | 
            -
            				// Support: IE 6 - 11 | 
| 22274 | 
            +
            				// Support: IE 6 - 11
         | 
| 22274 22275 | 
             
            				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
         | 
| 22275 22276 | 
             
            				return elem.isDisabled === disabled ||
         | 
| 22276 22277 |  | 
| 22277 22278 | 
             
            					// Where there is no isDisabled, check manually
         | 
| 22279 | 
            +
            					/* jshint -W018 */
         | 
| 22278 22280 | 
             
            					elem.isDisabled !== !disabled &&
         | 
| 22279 | 
            -
             | 
| 22281 | 
            +
            					inDisabledFieldset( elem ) === disabled;
         | 
| 22280 22282 | 
             
            			}
         | 
| 22281 22283 |  | 
| 22282 22284 | 
             
            			return elem.disabled === disabled;
         | 
| @@ -22316,7 +22318,7 @@ function createPositionalPseudo( fn ) { | |
| 22316 22318 | 
             
            }
         | 
| 22317 22319 |  | 
| 22318 22320 | 
             
            /**
         | 
| 22319 | 
            -
             * Checks a node for validity as a  | 
| 22321 | 
            +
             * Checks a node for validity as a Sizzle context
         | 
| 22320 22322 | 
             
             * @param {Element|Object=} context
         | 
| 22321 22323 | 
             
             * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
         | 
| 22322 22324 | 
             
             */
         | 
| @@ -22324,13 +22326,31 @@ function testContext( context ) { | |
| 22324 22326 | 
             
            	return context && typeof context.getElementsByTagName !== "undefined" && context;
         | 
| 22325 22327 | 
             
            }
         | 
| 22326 22328 |  | 
| 22329 | 
            +
            // Expose support vars for convenience
         | 
| 22330 | 
            +
            support = Sizzle.support = {};
         | 
| 22331 | 
            +
             | 
| 22332 | 
            +
            /**
         | 
| 22333 | 
            +
             * Detects XML nodes
         | 
| 22334 | 
            +
             * @param {Element|Object} elem An element or a document
         | 
| 22335 | 
            +
             * @returns {Boolean} True iff elem is a non-HTML XML node
         | 
| 22336 | 
            +
             */
         | 
| 22337 | 
            +
            isXML = Sizzle.isXML = function( elem ) {
         | 
| 22338 | 
            +
            	var namespace = elem && elem.namespaceURI,
         | 
| 22339 | 
            +
            		docElem = elem && ( elem.ownerDocument || elem ).documentElement;
         | 
| 22340 | 
            +
             | 
| 22341 | 
            +
            	// Support: IE <=8
         | 
| 22342 | 
            +
            	// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
         | 
| 22343 | 
            +
            	// https://bugs.jquery.com/ticket/4833
         | 
| 22344 | 
            +
            	return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
         | 
| 22345 | 
            +
            };
         | 
| 22346 | 
            +
             | 
| 22327 22347 | 
             
            /**
         | 
| 22328 22348 | 
             
             * Sets document-related variables once based on the current document
         | 
| 22329 | 
            -
             * @param {Element|Object} [ | 
| 22349 | 
            +
             * @param {Element|Object} [doc] An element or document object to use to set the document
         | 
| 22330 22350 | 
             
             * @returns {Object} Returns the current document
         | 
| 22331 22351 | 
             
             */
         | 
| 22332 | 
            -
             | 
| 22333 | 
            -
            	var subWindow,
         | 
| 22352 | 
            +
            setDocument = Sizzle.setDocument = function( node ) {
         | 
| 22353 | 
            +
            	var hasCompare, subWindow,
         | 
| 22334 22354 | 
             
            		doc = node ? node.ownerDocument || node : preferredDoc;
         | 
| 22335 22355 |  | 
| 22336 22356 | 
             
            	// Return early if doc is invalid or already selected
         | 
| @@ -22344,90 +22364,87 @@ function setDocument( node ) { | |
| 22344 22364 |  | 
| 22345 22365 | 
             
            	// Update global variables
         | 
| 22346 22366 | 
             
            	document = doc;
         | 
| 22347 | 
            -
            	 | 
| 22348 | 
            -
            	documentIsHTML = ! | 
| 22349 | 
            -
             | 
| 22350 | 
            -
            	// Support: iOS 7 only, IE 9 - 11+
         | 
| 22351 | 
            -
            	// Older browsers didn't support unprefixed `matches`.
         | 
| 22352 | 
            -
            	matches = documentElement.matches ||
         | 
| 22353 | 
            -
            		documentElement.webkitMatchesSelector ||
         | 
| 22354 | 
            -
            		documentElement.msMatchesSelector;
         | 
| 22367 | 
            +
            	docElem = document.documentElement;
         | 
| 22368 | 
            +
            	documentIsHTML = !isXML( document );
         | 
| 22355 22369 |  | 
| 22356 22370 | 
             
            	// Support: IE 9 - 11+, Edge 12 - 18+
         | 
| 22357 | 
            -
            	// Accessing iframe documents after unload throws "permission denied" errors
         | 
| 22358 | 
            -
            	//  | 
| 22359 | 
            -
            	//  | 
| 22360 | 
            -
            	//  | 
| 22361 | 
            -
            	 | 
| 22362 | 
            -
             | 
| 22363 | 
            -
            		// Support: IE 11+, Edge 17 - 18+
         | 
| 22364 | 
            -
            		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 22365 | 
            -
            		// two documents; shallow comparisons work.
         | 
| 22366 | 
            -
            		// eslint-disable-next-line eqeqeq
         | 
| 22367 | 
            -
            		preferredDoc != document &&
         | 
| 22371 | 
            +
            	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
         | 
| 22372 | 
            +
            	// Support: IE 11+, Edge 17 - 18+
         | 
| 22373 | 
            +
            	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 22374 | 
            +
            	// two documents; shallow comparisons work.
         | 
| 22375 | 
            +
            	// eslint-disable-next-line eqeqeq
         | 
| 22376 | 
            +
            	if ( preferredDoc != document &&
         | 
| 22368 22377 | 
             
            		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
         | 
| 22369 22378 |  | 
| 22370 | 
            -
            		// Support: IE  | 
| 22371 | 
            -
            		subWindow.addEventListener | 
| 22379 | 
            +
            		// Support: IE 11, Edge
         | 
| 22380 | 
            +
            		if ( subWindow.addEventListener ) {
         | 
| 22381 | 
            +
            			subWindow.addEventListener( "unload", unloadHandler, false );
         | 
| 22382 | 
            +
             | 
| 22383 | 
            +
            		// Support: IE 9 - 10 only
         | 
| 22384 | 
            +
            		} else if ( subWindow.attachEvent ) {
         | 
| 22385 | 
            +
            			subWindow.attachEvent( "onunload", unloadHandler );
         | 
| 22386 | 
            +
            		}
         | 
| 22372 22387 | 
             
            	}
         | 
| 22373 22388 |  | 
| 22374 | 
            -
            	// Support: IE  | 
| 22375 | 
            -
            	//  | 
| 22376 | 
            -
            	//  | 
| 22377 | 
            -
            	//  | 
| 22378 | 
            -
            	 | 
| 22379 | 
            -
             | 
| 22380 | 
            -
            		 | 
| 22381 | 
            -
             | 
| 22389 | 
            +
            	// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
         | 
| 22390 | 
            +
            	// Safari 4 - 5 only, Opera <=11.6 - 12.x only
         | 
| 22391 | 
            +
            	// IE/Edge & older browsers don't support the :scope pseudo-class.
         | 
| 22392 | 
            +
            	// Support: Safari 6.0 only
         | 
| 22393 | 
            +
            	// Safari 6.0 supports :scope but it's an alias of :root there.
         | 
| 22394 | 
            +
            	support.scope = assert( function( el ) {
         | 
| 22395 | 
            +
            		docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
         | 
| 22396 | 
            +
            		return typeof el.querySelectorAll !== "undefined" &&
         | 
| 22397 | 
            +
            			!el.querySelectorAll( ":scope fieldset div" ).length;
         | 
| 22382 22398 | 
             
            	} );
         | 
| 22383 22399 |  | 
| 22384 | 
            -
            	 | 
| 22385 | 
            -
            	 | 
| 22386 | 
            -
             | 
| 22387 | 
            -
            	 | 
| 22388 | 
            -
             | 
| 22400 | 
            +
            	/* Attributes
         | 
| 22401 | 
            +
            	---------------------------------------------------------------------- */
         | 
| 22402 | 
            +
             | 
| 22403 | 
            +
            	// Support: IE<8
         | 
| 22404 | 
            +
            	// Verify that getAttribute really returns attributes and not properties
         | 
| 22405 | 
            +
            	// (excepting IE8 booleans)
         | 
| 22406 | 
            +
            	support.attributes = assert( function( el ) {
         | 
| 22407 | 
            +
            		el.className = "i";
         | 
| 22408 | 
            +
            		return !el.getAttribute( "className" );
         | 
| 22389 22409 | 
             
            	} );
         | 
| 22390 22410 |  | 
| 22391 | 
            -
            	 | 
| 22392 | 
            -
            	 | 
| 22393 | 
            -
             | 
| 22394 | 
            -
             | 
| 22411 | 
            +
            	/* getElement(s)By*
         | 
| 22412 | 
            +
            	---------------------------------------------------------------------- */
         | 
| 22413 | 
            +
             | 
| 22414 | 
            +
            	// Check if getElementsByTagName("*") returns only elements
         | 
| 22415 | 
            +
            	support.getElementsByTagName = assert( function( el ) {
         | 
| 22416 | 
            +
            		el.appendChild( document.createComment( "" ) );
         | 
| 22417 | 
            +
            		return !el.getElementsByTagName( "*" ).length;
         | 
| 22395 22418 | 
             
            	} );
         | 
| 22396 22419 |  | 
| 22397 | 
            -
            	// Support:  | 
| 22398 | 
            -
            	 | 
| 22399 | 
            -
             | 
| 22400 | 
            -
            	//  | 
| 22401 | 
            -
            	//  | 
| 22402 | 
            -
            	//  | 
| 22403 | 
            -
            	//  | 
| 22404 | 
            -
            	 | 
| 22405 | 
            -
             | 
| 22406 | 
            -
             | 
| 22407 | 
            -
            		try {
         | 
| 22408 | 
            -
            			document.querySelector( ":has(*,:jqfake)" );
         | 
| 22409 | 
            -
            			return false;
         | 
| 22410 | 
            -
            		} catch ( e ) {
         | 
| 22411 | 
            -
            			return true;
         | 
| 22412 | 
            -
            		}
         | 
| 22420 | 
            +
            	// Support: IE<9
         | 
| 22421 | 
            +
            	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
         | 
| 22422 | 
            +
             | 
| 22423 | 
            +
            	// Support: IE<10
         | 
| 22424 | 
            +
            	// Check if getElementById returns elements by name
         | 
| 22425 | 
            +
            	// The broken getElementById methods don't pick up programmatically-set names,
         | 
| 22426 | 
            +
            	// so use a roundabout getElementsByName test
         | 
| 22427 | 
            +
            	support.getById = assert( function( el ) {
         | 
| 22428 | 
            +
            		docElem.appendChild( el ).id = expando;
         | 
| 22429 | 
            +
            		return !document.getElementsByName || !document.getElementsByName( expando ).length;
         | 
| 22413 22430 | 
             
            	} );
         | 
| 22414 22431 |  | 
| 22415 22432 | 
             
            	// ID filter and find
         | 
| 22416 22433 | 
             
            	if ( support.getById ) {
         | 
| 22417 | 
            -
            		Expr.filter | 
| 22434 | 
            +
            		Expr.filter[ "ID" ] = function( id ) {
         | 
| 22418 22435 | 
             
            			var attrId = id.replace( runescape, funescape );
         | 
| 22419 22436 | 
             
            			return function( elem ) {
         | 
| 22420 22437 | 
             
            				return elem.getAttribute( "id" ) === attrId;
         | 
| 22421 22438 | 
             
            			};
         | 
| 22422 22439 | 
             
            		};
         | 
| 22423 | 
            -
            		Expr.find | 
| 22440 | 
            +
            		Expr.find[ "ID" ] = function( id, context ) {
         | 
| 22424 22441 | 
             
            			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
         | 
| 22425 22442 | 
             
            				var elem = context.getElementById( id );
         | 
| 22426 22443 | 
             
            				return elem ? [ elem ] : [];
         | 
| 22427 22444 | 
             
            			}
         | 
| 22428 22445 | 
             
            		};
         | 
| 22429 22446 | 
             
            	} else {
         | 
| 22430 | 
            -
            		Expr.filter | 
| 22447 | 
            +
            		Expr.filter[ "ID" ] =  function( id ) {
         | 
| 22431 22448 | 
             
            			var attrId = id.replace( runescape, funescape );
         | 
| 22432 22449 | 
             
            			return function( elem ) {
         | 
| 22433 22450 | 
             
            				var node = typeof elem.getAttributeNode !== "undefined" &&
         | 
| @@ -22438,7 +22455,7 @@ function setDocument( node ) { | |
| 22438 22455 |  | 
| 22439 22456 | 
             
            		// Support: IE 6 - 7 only
         | 
| 22440 22457 | 
             
            		// getElementById is not reliable as a find shortcut
         | 
| 22441 | 
            -
            		Expr.find | 
| 22458 | 
            +
            		Expr.find[ "ID" ] = function( id, context ) {
         | 
| 22442 22459 | 
             
            			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
         | 
| 22443 22460 | 
             
            				var node, i, elems,
         | 
| 22444 22461 | 
             
            					elem = context.getElementById( id );
         | 
| @@ -22468,18 +22485,40 @@ function setDocument( node ) { | |
| 22468 22485 | 
             
            	}
         | 
| 22469 22486 |  | 
| 22470 22487 | 
             
            	// Tag
         | 
| 22471 | 
            -
            	Expr.find | 
| 22472 | 
            -
            		 | 
| 22473 | 
            -
            			 | 
| 22488 | 
            +
            	Expr.find[ "TAG" ] = support.getElementsByTagName ?
         | 
| 22489 | 
            +
            		function( tag, context ) {
         | 
| 22490 | 
            +
            			if ( typeof context.getElementsByTagName !== "undefined" ) {
         | 
| 22491 | 
            +
            				return context.getElementsByTagName( tag );
         | 
| 22492 | 
            +
             | 
| 22493 | 
            +
            			// DocumentFragment nodes don't have gEBTN
         | 
| 22494 | 
            +
            			} else if ( support.qsa ) {
         | 
| 22495 | 
            +
            				return context.querySelectorAll( tag );
         | 
| 22496 | 
            +
            			}
         | 
| 22497 | 
            +
            		} :
         | 
| 22474 22498 |  | 
| 22475 | 
            -
            		 | 
| 22476 | 
            -
             | 
| 22477 | 
            -
             | 
| 22478 | 
            -
             | 
| 22479 | 
            -
             | 
| 22499 | 
            +
            		function( tag, context ) {
         | 
| 22500 | 
            +
            			var elem,
         | 
| 22501 | 
            +
            				tmp = [],
         | 
| 22502 | 
            +
            				i = 0,
         | 
| 22503 | 
            +
             | 
| 22504 | 
            +
            				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
         | 
| 22505 | 
            +
            				results = context.getElementsByTagName( tag );
         | 
| 22506 | 
            +
             | 
| 22507 | 
            +
            			// Filter out possible comments
         | 
| 22508 | 
            +
            			if ( tag === "*" ) {
         | 
| 22509 | 
            +
            				while ( ( elem = results[ i++ ] ) ) {
         | 
| 22510 | 
            +
            					if ( elem.nodeType === 1 ) {
         | 
| 22511 | 
            +
            						tmp.push( elem );
         | 
| 22512 | 
            +
            					}
         | 
| 22513 | 
            +
            				}
         | 
| 22514 | 
            +
             | 
| 22515 | 
            +
            				return tmp;
         | 
| 22516 | 
            +
            			}
         | 
| 22517 | 
            +
            			return results;
         | 
| 22518 | 
            +
            		};
         | 
| 22480 22519 |  | 
| 22481 22520 | 
             
            	// Class
         | 
| 22482 | 
            -
            	Expr.find | 
| 22521 | 
            +
            	Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
         | 
| 22483 22522 | 
             
            		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
         | 
| 22484 22523 | 
             
            			return context.getElementsByClassName( className );
         | 
| 22485 22524 | 
             
            		}
         | 
| @@ -22490,94 +22529,177 @@ function setDocument( node ) { | |
| 22490 22529 |  | 
| 22491 22530 | 
             
            	// QSA and matchesSelector support
         | 
| 22492 22531 |  | 
| 22532 | 
            +
            	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
         | 
| 22533 | 
            +
            	rbuggyMatches = [];
         | 
| 22534 | 
            +
             | 
| 22535 | 
            +
            	// qSa(:focus) reports false when true (Chrome 21)
         | 
| 22536 | 
            +
            	// We allow this because of a bug in IE8/9 that throws an error
         | 
| 22537 | 
            +
            	// whenever `document.activeElement` is accessed on an iframe
         | 
| 22538 | 
            +
            	// So, we allow :focus to pass through QSA all the time to avoid the IE error
         | 
| 22539 | 
            +
            	// See https://bugs.jquery.com/ticket/13378
         | 
| 22493 22540 | 
             
            	rbuggyQSA = [];
         | 
| 22494 22541 |  | 
| 22495 | 
            -
            	 | 
| 22496 | 
            -
             | 
| 22497 | 
            -
             | 
| 22542 | 
            +
            	if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
         | 
| 22543 | 
            +
             | 
| 22544 | 
            +
            		// Build QSA regex
         | 
| 22545 | 
            +
            		// Regex strategy adopted from Diego Perini
         | 
| 22546 | 
            +
            		assert( function( el ) {
         | 
| 22547 | 
            +
             | 
| 22548 | 
            +
            			var input;
         | 
| 22549 | 
            +
             | 
| 22550 | 
            +
            			// Select is set to empty string on purpose
         | 
| 22551 | 
            +
            			// This is to test IE's treatment of not explicitly
         | 
| 22552 | 
            +
            			// setting a boolean content attribute,
         | 
| 22553 | 
            +
            			// since its presence should be enough
         | 
| 22554 | 
            +
            			// https://bugs.jquery.com/ticket/12359
         | 
| 22555 | 
            +
            			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
         | 
| 22556 | 
            +
            				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
         | 
| 22557 | 
            +
            				"<option selected=''></option></select>";
         | 
| 22558 | 
            +
             | 
| 22559 | 
            +
            			// Support: IE8, Opera 11-12.16
         | 
| 22560 | 
            +
            			// Nothing should be selected when empty strings follow ^= or $= or *=
         | 
| 22561 | 
            +
            			// The test attribute must be unknown in Opera but "safe" for WinRT
         | 
| 22562 | 
            +
            			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
         | 
| 22563 | 
            +
            			if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
         | 
| 22564 | 
            +
            				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
         | 
| 22565 | 
            +
            			}
         | 
| 22566 | 
            +
             | 
| 22567 | 
            +
            			// Support: IE8
         | 
| 22568 | 
            +
            			// Boolean attributes and "value" are not treated correctly
         | 
| 22569 | 
            +
            			if ( !el.querySelectorAll( "[selected]" ).length ) {
         | 
| 22570 | 
            +
            				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
         | 
| 22571 | 
            +
            			}
         | 
| 22572 | 
            +
             | 
| 22573 | 
            +
            			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
         | 
| 22574 | 
            +
            			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
         | 
| 22575 | 
            +
            				rbuggyQSA.push( "~=" );
         | 
| 22576 | 
            +
            			}
         | 
| 22498 22577 |  | 
| 22499 | 
            -
             | 
| 22578 | 
            +
            			// Support: IE 11+, Edge 15 - 18+
         | 
| 22579 | 
            +
            			// IE 11/Edge don't find elements on a `[name='']` query in some cases.
         | 
| 22580 | 
            +
            			// Adding a temporary attribute to the document before the selection works
         | 
| 22581 | 
            +
            			// around the issue.
         | 
| 22582 | 
            +
            			// Interestingly, IE 10 & older don't seem to have the issue.
         | 
| 22583 | 
            +
            			input = document.createElement( "input" );
         | 
| 22584 | 
            +
            			input.setAttribute( "name", "" );
         | 
| 22585 | 
            +
            			el.appendChild( input );
         | 
| 22586 | 
            +
            			if ( !el.querySelectorAll( "[name='']" ).length ) {
         | 
| 22587 | 
            +
            				rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
         | 
| 22588 | 
            +
            					whitespace + "*(?:''|\"\")" );
         | 
| 22589 | 
            +
            			}
         | 
| 22500 22590 |  | 
| 22501 | 
            -
             | 
| 22502 | 
            -
            			 | 
| 22503 | 
            -
            			 | 
| 22504 | 
            -
            			" | 
| 22591 | 
            +
            			// Webkit/Opera - :checked should return selected option elements
         | 
| 22592 | 
            +
            			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
         | 
| 22593 | 
            +
            			// IE8 throws error here and will not see later tests
         | 
| 22594 | 
            +
            			if ( !el.querySelectorAll( ":checked" ).length ) {
         | 
| 22595 | 
            +
            				rbuggyQSA.push( ":checked" );
         | 
| 22596 | 
            +
            			}
         | 
| 22505 22597 |  | 
| 22506 | 
            -
             | 
| 22507 | 
            -
             | 
| 22508 | 
            -
             | 
| 22509 | 
            -
            			 | 
| 22510 | 
            -
             | 
| 22598 | 
            +
            			// Support: Safari 8+, iOS 8+
         | 
| 22599 | 
            +
            			// https://bugs.webkit.org/show_bug.cgi?id=136851
         | 
| 22600 | 
            +
            			// In-page `selector#id sibling-combinator selector` fails
         | 
| 22601 | 
            +
            			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
         | 
| 22602 | 
            +
            				rbuggyQSA.push( ".#.+[+~]" );
         | 
| 22603 | 
            +
            			}
         | 
| 22511 22604 |  | 
| 22512 | 
            -
             | 
| 22513 | 
            -
             | 
| 22514 | 
            -
            			 | 
| 22515 | 
            -
             | 
| 22605 | 
            +
            			// Support: Firefox <=3.6 - 5 only
         | 
| 22606 | 
            +
            			// Old Firefox doesn't throw on a badly-escaped identifier.
         | 
| 22607 | 
            +
            			el.querySelectorAll( "\\\f" );
         | 
| 22608 | 
            +
            			rbuggyQSA.push( "[\\r\\n\\f]" );
         | 
| 22609 | 
            +
            		} );
         | 
| 22516 22610 |  | 
| 22517 | 
            -
            		 | 
| 22518 | 
            -
             | 
| 22519 | 
            -
             | 
| 22520 | 
            -
            		if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
         | 
| 22521 | 
            -
            			rbuggyQSA.push( ".#.+[+~]" );
         | 
| 22522 | 
            -
            		}
         | 
| 22611 | 
            +
            		assert( function( el ) {
         | 
| 22612 | 
            +
            			el.innerHTML = "<a href='' disabled='disabled'></a>" +
         | 
| 22613 | 
            +
            				"<select disabled='disabled'><option/></select>";
         | 
| 22523 22614 |  | 
| 22524 | 
            -
             | 
| 22525 | 
            -
             | 
| 22526 | 
            -
             | 
| 22527 | 
            -
             | 
| 22528 | 
            -
             | 
| 22529 | 
            -
            			rbuggyQSA.push( ":checked" );
         | 
| 22530 | 
            -
            		}
         | 
| 22615 | 
            +
            			// Support: Windows 8 Native Apps
         | 
| 22616 | 
            +
            			// The type and name attributes are restricted during .innerHTML assignment
         | 
| 22617 | 
            +
            			var input = document.createElement( "input" );
         | 
| 22618 | 
            +
            			input.setAttribute( "type", "hidden" );
         | 
| 22619 | 
            +
            			el.appendChild( input ).setAttribute( "name", "D" );
         | 
| 22531 22620 |  | 
| 22532 | 
            -
             | 
| 22533 | 
            -
             | 
| 22534 | 
            -
             | 
| 22535 | 
            -
             | 
| 22536 | 
            -
             | 
| 22537 | 
            -
             | 
| 22538 | 
            -
            		// Support: IE 9 - 11+
         | 
| 22539 | 
            -
            		// IE's :disabled selector does not pick up the children of disabled fieldsets
         | 
| 22540 | 
            -
            		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
         | 
| 22541 | 
            -
            		// In some of the document kinds, these selectors wouldn't work natively.
         | 
| 22542 | 
            -
            		// This is probably OK but for backwards compatibility we want to maintain
         | 
| 22543 | 
            -
            		// handling them through jQuery traversal in jQuery 3.x.
         | 
| 22544 | 
            -
            		documentElement.appendChild( el ).disabled = true;
         | 
| 22545 | 
            -
            		if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
         | 
| 22546 | 
            -
            			rbuggyQSA.push( ":enabled", ":disabled" );
         | 
| 22547 | 
            -
            		}
         | 
| 22548 | 
            -
             | 
| 22549 | 
            -
            		// Support: IE 11+, Edge 15 - 18+
         | 
| 22550 | 
            -
            		// IE 11/Edge don't find elements on a `[name='']` query in some cases.
         | 
| 22551 | 
            -
            		// Adding a temporary attribute to the document before the selection works
         | 
| 22552 | 
            -
            		// around the issue.
         | 
| 22553 | 
            -
            		// Interestingly, IE 10 & older don't seem to have the issue.
         | 
| 22554 | 
            -
            		input = document.createElement( "input" );
         | 
| 22555 | 
            -
            		input.setAttribute( "name", "" );
         | 
| 22556 | 
            -
            		el.appendChild( input );
         | 
| 22557 | 
            -
            		if ( !el.querySelectorAll( "[name='']" ).length ) {
         | 
| 22558 | 
            -
            			rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
         | 
| 22559 | 
            -
            				whitespace + "*(?:''|\"\")" );
         | 
| 22560 | 
            -
            		}
         | 
| 22561 | 
            -
            	} );
         | 
| 22621 | 
            +
            			// Support: IE8
         | 
| 22622 | 
            +
            			// Enforce case-sensitivity of name attribute
         | 
| 22623 | 
            +
            			if ( el.querySelectorAll( "[name=d]" ).length ) {
         | 
| 22624 | 
            +
            				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
         | 
| 22625 | 
            +
            			}
         | 
| 22562 22626 |  | 
| 22563 | 
            -
             | 
| 22627 | 
            +
            			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
         | 
| 22628 | 
            +
            			// IE8 throws error here and will not see later tests
         | 
| 22629 | 
            +
            			if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
         | 
| 22630 | 
            +
            				rbuggyQSA.push( ":enabled", ":disabled" );
         | 
| 22631 | 
            +
            			}
         | 
| 22564 22632 |  | 
| 22565 | 
            -
             | 
| 22566 | 
            -
             | 
| 22567 | 
            -
             | 
| 22568 | 
            -
             | 
| 22569 | 
            -
             | 
| 22570 | 
            -
             | 
| 22571 | 
            -
             | 
| 22633 | 
            +
            			// Support: IE9-11+
         | 
| 22634 | 
            +
            			// IE's :disabled selector does not pick up the children of disabled fieldsets
         | 
| 22635 | 
            +
            			docElem.appendChild( el ).disabled = true;
         | 
| 22636 | 
            +
            			if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
         | 
| 22637 | 
            +
            				rbuggyQSA.push( ":enabled", ":disabled" );
         | 
| 22638 | 
            +
            			}
         | 
| 22639 | 
            +
             | 
| 22640 | 
            +
            			// Support: Opera 10 - 11 only
         | 
| 22641 | 
            +
            			// Opera 10-11 does not throw on post-comma invalid pseudos
         | 
| 22642 | 
            +
            			el.querySelectorAll( "*,:x" );
         | 
| 22643 | 
            +
            			rbuggyQSA.push( ",.*:" );
         | 
| 22644 | 
            +
            		} );
         | 
| 22645 | 
            +
            	}
         | 
| 22646 | 
            +
             | 
| 22647 | 
            +
            	if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
         | 
| 22648 | 
            +
            		docElem.webkitMatchesSelector ||
         | 
| 22649 | 
            +
            		docElem.mozMatchesSelector ||
         | 
| 22650 | 
            +
            		docElem.oMatchesSelector ||
         | 
| 22651 | 
            +
            		docElem.msMatchesSelector ) ) ) ) {
         | 
| 22652 | 
            +
             | 
| 22653 | 
            +
            		assert( function( el ) {
         | 
| 22654 | 
            +
             | 
| 22655 | 
            +
            			// Check to see if it's possible to do matchesSelector
         | 
| 22656 | 
            +
            			// on a disconnected node (IE 9)
         | 
| 22657 | 
            +
            			support.disconnectedMatch = matches.call( el, "*" );
         | 
| 22658 | 
            +
             | 
| 22659 | 
            +
            			// This should fail with an exception
         | 
| 22660 | 
            +
            			// Gecko does not error, returns false instead
         | 
| 22661 | 
            +
            			matches.call( el, "[s!='']:x" );
         | 
| 22662 | 
            +
            			rbuggyMatches.push( "!=", pseudos );
         | 
| 22663 | 
            +
            		} );
         | 
| 22572 22664 | 
             
            	}
         | 
| 22573 22665 |  | 
| 22574 22666 | 
             
            	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
         | 
| 22667 | 
            +
            	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
         | 
| 22668 | 
            +
             | 
| 22669 | 
            +
            	/* Contains
         | 
| 22670 | 
            +
            	---------------------------------------------------------------------- */
         | 
| 22671 | 
            +
            	hasCompare = rnative.test( docElem.compareDocumentPosition );
         | 
| 22672 | 
            +
             | 
| 22673 | 
            +
            	// Element contains another
         | 
| 22674 | 
            +
            	// Purposefully self-exclusive
         | 
| 22675 | 
            +
            	// As in, an element does not contain itself
         | 
| 22676 | 
            +
            	contains = hasCompare || rnative.test( docElem.contains ) ?
         | 
| 22677 | 
            +
            		function( a, b ) {
         | 
| 22678 | 
            +
            			var adown = a.nodeType === 9 ? a.documentElement : a,
         | 
| 22679 | 
            +
            				bup = b && b.parentNode;
         | 
| 22680 | 
            +
            			return a === bup || !!( bup && bup.nodeType === 1 && (
         | 
| 22681 | 
            +
            				adown.contains ?
         | 
| 22682 | 
            +
            					adown.contains( bup ) :
         | 
| 22683 | 
            +
            					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
         | 
| 22684 | 
            +
            			) );
         | 
| 22685 | 
            +
            		} :
         | 
| 22686 | 
            +
            		function( a, b ) {
         | 
| 22687 | 
            +
            			if ( b ) {
         | 
| 22688 | 
            +
            				while ( ( b = b.parentNode ) ) {
         | 
| 22689 | 
            +
            					if ( b === a ) {
         | 
| 22690 | 
            +
            						return true;
         | 
| 22691 | 
            +
            					}
         | 
| 22692 | 
            +
            				}
         | 
| 22693 | 
            +
            			}
         | 
| 22694 | 
            +
            			return false;
         | 
| 22695 | 
            +
            		};
         | 
| 22575 22696 |  | 
| 22576 22697 | 
             
            	/* Sorting
         | 
| 22577 22698 | 
             
            	---------------------------------------------------------------------- */
         | 
| 22578 22699 |  | 
| 22579 22700 | 
             
            	// Document order sorting
         | 
| 22580 | 
            -
            	sortOrder =  | 
| 22701 | 
            +
            	sortOrder = hasCompare ?
         | 
| 22702 | 
            +
            	function( a, b ) {
         | 
| 22581 22703 |  | 
| 22582 22704 | 
             
            		// Flag for duplicate removal
         | 
| 22583 22705 | 
             
            		if ( a === b ) {
         | 
| @@ -22611,8 +22733,8 @@ function setDocument( node ) { | |
| 22611 22733 | 
             
            			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 22612 22734 | 
             
            			// two documents; shallow comparisons work.
         | 
| 22613 22735 | 
             
            			// eslint-disable-next-line eqeqeq
         | 
| 22614 | 
            -
            			if ( a  | 
| 22615 | 
            -
            				 | 
| 22736 | 
            +
            			if ( a == document || a.ownerDocument == preferredDoc &&
         | 
| 22737 | 
            +
            				contains( preferredDoc, a ) ) {
         | 
| 22616 22738 | 
             
            				return -1;
         | 
| 22617 22739 | 
             
            			}
         | 
| 22618 22740 |  | 
| @@ -22620,33 +22742,100 @@ function setDocument( node ) { | |
| 22620 22742 | 
             
            			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 22621 22743 | 
             
            			// two documents; shallow comparisons work.
         | 
| 22622 22744 | 
             
            			// eslint-disable-next-line eqeqeq
         | 
| 22623 | 
            -
            			if ( b  | 
| 22624 | 
            -
            				 | 
| 22745 | 
            +
            			if ( b == document || b.ownerDocument == preferredDoc &&
         | 
| 22746 | 
            +
            				contains( preferredDoc, b ) ) {
         | 
| 22625 22747 | 
             
            				return 1;
         | 
| 22626 22748 | 
             
            			}
         | 
| 22627 22749 |  | 
| 22628 22750 | 
             
            			// Maintain original order
         | 
| 22629 22751 | 
             
            			return sortInput ?
         | 
| 22630 | 
            -
            				( indexOf | 
| 22752 | 
            +
            				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
         | 
| 22631 22753 | 
             
            				0;
         | 
| 22632 22754 | 
             
            		}
         | 
| 22633 22755 |  | 
| 22634 22756 | 
             
            		return compare & 4 ? -1 : 1;
         | 
| 22757 | 
            +
            	} :
         | 
| 22758 | 
            +
            	function( a, b ) {
         | 
| 22759 | 
            +
             | 
| 22760 | 
            +
            		// Exit early if the nodes are identical
         | 
| 22761 | 
            +
            		if ( a === b ) {
         | 
| 22762 | 
            +
            			hasDuplicate = true;
         | 
| 22763 | 
            +
            			return 0;
         | 
| 22764 | 
            +
            		}
         | 
| 22765 | 
            +
             | 
| 22766 | 
            +
            		var cur,
         | 
| 22767 | 
            +
            			i = 0,
         | 
| 22768 | 
            +
            			aup = a.parentNode,
         | 
| 22769 | 
            +
            			bup = b.parentNode,
         | 
| 22770 | 
            +
            			ap = [ a ],
         | 
| 22771 | 
            +
            			bp = [ b ];
         | 
| 22772 | 
            +
             | 
| 22773 | 
            +
            		// Parentless nodes are either documents or disconnected
         | 
| 22774 | 
            +
            		if ( !aup || !bup ) {
         | 
| 22775 | 
            +
             | 
| 22776 | 
            +
            			// Support: IE 11+, Edge 17 - 18+
         | 
| 22777 | 
            +
            			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 22778 | 
            +
            			// two documents; shallow comparisons work.
         | 
| 22779 | 
            +
            			/* eslint-disable eqeqeq */
         | 
| 22780 | 
            +
            			return a == document ? -1 :
         | 
| 22781 | 
            +
            				b == document ? 1 :
         | 
| 22782 | 
            +
            				/* eslint-enable eqeqeq */
         | 
| 22783 | 
            +
            				aup ? -1 :
         | 
| 22784 | 
            +
            				bup ? 1 :
         | 
| 22785 | 
            +
            				sortInput ?
         | 
| 22786 | 
            +
            				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
         | 
| 22787 | 
            +
            				0;
         | 
| 22788 | 
            +
             | 
| 22789 | 
            +
            		// If the nodes are siblings, we can do a quick check
         | 
| 22790 | 
            +
            		} else if ( aup === bup ) {
         | 
| 22791 | 
            +
            			return siblingCheck( a, b );
         | 
| 22792 | 
            +
            		}
         | 
| 22793 | 
            +
             | 
| 22794 | 
            +
            		// Otherwise we need full lists of their ancestors for comparison
         | 
| 22795 | 
            +
            		cur = a;
         | 
| 22796 | 
            +
            		while ( ( cur = cur.parentNode ) ) {
         | 
| 22797 | 
            +
            			ap.unshift( cur );
         | 
| 22798 | 
            +
            		}
         | 
| 22799 | 
            +
            		cur = b;
         | 
| 22800 | 
            +
            		while ( ( cur = cur.parentNode ) ) {
         | 
| 22801 | 
            +
            			bp.unshift( cur );
         | 
| 22802 | 
            +
            		}
         | 
| 22803 | 
            +
             | 
| 22804 | 
            +
            		// Walk down the tree looking for a discrepancy
         | 
| 22805 | 
            +
            		while ( ap[ i ] === bp[ i ] ) {
         | 
| 22806 | 
            +
            			i++;
         | 
| 22807 | 
            +
            		}
         | 
| 22808 | 
            +
             | 
| 22809 | 
            +
            		return i ?
         | 
| 22810 | 
            +
             | 
| 22811 | 
            +
            			// Do a sibling check if the nodes have a common ancestor
         | 
| 22812 | 
            +
            			siblingCheck( ap[ i ], bp[ i ] ) :
         | 
| 22813 | 
            +
             | 
| 22814 | 
            +
            			// Otherwise nodes in our document sort first
         | 
| 22815 | 
            +
            			// Support: IE 11+, Edge 17 - 18+
         | 
| 22816 | 
            +
            			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 22817 | 
            +
            			// two documents; shallow comparisons work.
         | 
| 22818 | 
            +
            			/* eslint-disable eqeqeq */
         | 
| 22819 | 
            +
            			ap[ i ] == preferredDoc ? -1 :
         | 
| 22820 | 
            +
            			bp[ i ] == preferredDoc ? 1 :
         | 
| 22821 | 
            +
            			/* eslint-enable eqeqeq */
         | 
| 22822 | 
            +
            			0;
         | 
| 22635 22823 | 
             
            	};
         | 
| 22636 22824 |  | 
| 22637 22825 | 
             
            	return document;
         | 
| 22638 | 
            -
            }
         | 
| 22826 | 
            +
            };
         | 
| 22639 22827 |  | 
| 22640 | 
            -
             | 
| 22641 | 
            -
            	return  | 
| 22828 | 
            +
            Sizzle.matches = function( expr, elements ) {
         | 
| 22829 | 
            +
            	return Sizzle( expr, null, null, elements );
         | 
| 22642 22830 | 
             
            };
         | 
| 22643 22831 |  | 
| 22644 | 
            -
             | 
| 22832 | 
            +
            Sizzle.matchesSelector = function( elem, expr ) {
         | 
| 22645 22833 | 
             
            	setDocument( elem );
         | 
| 22646 22834 |  | 
| 22647 | 
            -
            	if ( documentIsHTML &&
         | 
| 22835 | 
            +
            	if ( support.matchesSelector && documentIsHTML &&
         | 
| 22648 22836 | 
             
            		!nonnativeSelectorCache[ expr + " " ] &&
         | 
| 22649 | 
            -
            		( ! | 
| 22837 | 
            +
            		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
         | 
| 22838 | 
            +
            		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
         | 
| 22650 22839 |  | 
| 22651 22840 | 
             
            		try {
         | 
| 22652 22841 | 
             
            			var ret = matches.call( elem, expr );
         | 
| @@ -22654,9 +22843,9 @@ find.matchesSelector = function( elem, expr ) { | |
| 22654 22843 | 
             
            			// IE 9's matchesSelector returns false on disconnected nodes
         | 
| 22655 22844 | 
             
            			if ( ret || support.disconnectedMatch ||
         | 
| 22656 22845 |  | 
| 22657 | 
            -
             | 
| 22658 | 
            -
             | 
| 22659 | 
            -
             | 
| 22846 | 
            +
            				// As well, disconnected nodes are said to be in a document
         | 
| 22847 | 
            +
            				// fragment in IE 9
         | 
| 22848 | 
            +
            				elem.document && elem.document.nodeType !== 11 ) {
         | 
| 22660 22849 | 
             
            				return ret;
         | 
| 22661 22850 | 
             
            			}
         | 
| 22662 22851 | 
             
            		} catch ( e ) {
         | 
| @@ -22664,10 +22853,10 @@ find.matchesSelector = function( elem, expr ) { | |
| 22664 22853 | 
             
            		}
         | 
| 22665 22854 | 
             
            	}
         | 
| 22666 22855 |  | 
| 22667 | 
            -
            	return  | 
| 22856 | 
            +
            	return Sizzle( expr, document, null, [ elem ] ).length > 0;
         | 
| 22668 22857 | 
             
            };
         | 
| 22669 22858 |  | 
| 22670 | 
            -
             | 
| 22859 | 
            +
            Sizzle.contains = function( context, elem ) {
         | 
| 22671 22860 |  | 
| 22672 22861 | 
             
            	// Set document vars if needed
         | 
| 22673 22862 | 
             
            	// Support: IE 11+, Edge 17 - 18+
         | 
| @@ -22677,11 +22866,10 @@ find.contains = function( context, elem ) { | |
| 22677 22866 | 
             
            	if ( ( context.ownerDocument || context ) != document ) {
         | 
| 22678 22867 | 
             
            		setDocument( context );
         | 
| 22679 22868 | 
             
            	}
         | 
| 22680 | 
            -
            	return  | 
| 22869 | 
            +
            	return contains( context, elem );
         | 
| 22681 22870 | 
             
            };
         | 
| 22682 22871 |  | 
| 22683 | 
            -
             | 
| 22684 | 
            -
            find.attr = function( elem, name ) {
         | 
| 22872 | 
            +
            Sizzle.attr = function( elem, name ) {
         | 
| 22685 22873 |  | 
| 22686 22874 | 
             
            	// Set document vars if needed
         | 
| 22687 22875 | 
             
            	// Support: IE 11+, Edge 17 - 18+
         | 
| @@ -22694,19 +22882,25 @@ find.attr = function( elem, name ) { | |
| 22694 22882 |  | 
| 22695 22883 | 
             
            	var fn = Expr.attrHandle[ name.toLowerCase() ],
         | 
| 22696 22884 |  | 
| 22697 | 
            -
            		// Don't get fooled by Object.prototype properties ( | 
| 22885 | 
            +
            		// Don't get fooled by Object.prototype properties (jQuery #13807)
         | 
| 22698 22886 | 
             
            		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
         | 
| 22699 22887 | 
             
            			fn( elem, name, !documentIsHTML ) :
         | 
| 22700 22888 | 
             
            			undefined;
         | 
| 22701 22889 |  | 
| 22702 | 
            -
            	 | 
| 22703 | 
            -
            		 | 
| 22704 | 
            -
             | 
| 22890 | 
            +
            	return val !== undefined ?
         | 
| 22891 | 
            +
            		val :
         | 
| 22892 | 
            +
            		support.attributes || !documentIsHTML ?
         | 
| 22893 | 
            +
            			elem.getAttribute( name ) :
         | 
| 22894 | 
            +
            			( val = elem.getAttributeNode( name ) ) && val.specified ?
         | 
| 22895 | 
            +
            				val.value :
         | 
| 22896 | 
            +
            				null;
         | 
| 22897 | 
            +
            };
         | 
| 22705 22898 |  | 
| 22706 | 
            -
             | 
| 22899 | 
            +
            Sizzle.escape = function( sel ) {
         | 
| 22900 | 
            +
            	return ( sel + "" ).replace( rcssescape, fcssescape );
         | 
| 22707 22901 | 
             
            };
         | 
| 22708 22902 |  | 
| 22709 | 
            -
             | 
| 22903 | 
            +
            Sizzle.error = function( msg ) {
         | 
| 22710 22904 | 
             
            	throw new Error( "Syntax error, unrecognized expression: " + msg );
         | 
| 22711 22905 | 
             
            };
         | 
| 22712 22906 |  | 
| @@ -22714,20 +22908,16 @@ find.error = function( msg ) { | |
| 22714 22908 | 
             
             * Document sorting and removing duplicates
         | 
| 22715 22909 | 
             
             * @param {ArrayLike} results
         | 
| 22716 22910 | 
             
             */
         | 
| 22717 | 
            -
             | 
| 22911 | 
            +
            Sizzle.uniqueSort = function( results ) {
         | 
| 22718 22912 | 
             
            	var elem,
         | 
| 22719 22913 | 
             
            		duplicates = [],
         | 
| 22720 22914 | 
             
            		j = 0,
         | 
| 22721 22915 | 
             
            		i = 0;
         | 
| 22722 22916 |  | 
| 22723 22917 | 
             
            	// Unless we *know* we can detect duplicates, assume their presence
         | 
| 22724 | 
            -
            	 | 
| 22725 | 
            -
            	 | 
| 22726 | 
            -
            	 | 
| 22727 | 
            -
            	// depend on duplicate detection in all browsers without a stable sort.
         | 
| 22728 | 
            -
            	hasDuplicate = !support.sortStable;
         | 
| 22729 | 
            -
            	sortInput = !support.sortStable && slice.call( results, 0 );
         | 
| 22730 | 
            -
            	sort.call( results, sortOrder );
         | 
| 22918 | 
            +
            	hasDuplicate = !support.detectDuplicates;
         | 
| 22919 | 
            +
            	sortInput = !support.sortStable && results.slice( 0 );
         | 
| 22920 | 
            +
            	results.sort( sortOrder );
         | 
| 22731 22921 |  | 
| 22732 22922 | 
             
            	if ( hasDuplicate ) {
         | 
| 22733 22923 | 
             
            		while ( ( elem = results[ i++ ] ) ) {
         | 
| @@ -22736,7 +22926,7 @@ jQuery.uniqueSort = function( results ) { | |
| 22736 22926 | 
             
            			}
         | 
| 22737 22927 | 
             
            		}
         | 
| 22738 22928 | 
             
            		while ( j-- ) {
         | 
| 22739 | 
            -
            			splice | 
| 22929 | 
            +
            			results.splice( duplicates[ j ], 1 );
         | 
| 22740 22930 | 
             
            		}
         | 
| 22741 22931 | 
             
            	}
         | 
| 22742 22932 |  | 
| @@ -22747,11 +22937,47 @@ jQuery.uniqueSort = function( results ) { | |
| 22747 22937 | 
             
            	return results;
         | 
| 22748 22938 | 
             
            };
         | 
| 22749 22939 |  | 
| 22750 | 
            -
             | 
| 22751 | 
            -
             | 
| 22940 | 
            +
            /**
         | 
| 22941 | 
            +
             * Utility function for retrieving the text value of an array of DOM nodes
         | 
| 22942 | 
            +
             * @param {Array|Element} elem
         | 
| 22943 | 
            +
             */
         | 
| 22944 | 
            +
            getText = Sizzle.getText = function( elem ) {
         | 
| 22945 | 
            +
            	var node,
         | 
| 22946 | 
            +
            		ret = "",
         | 
| 22947 | 
            +
            		i = 0,
         | 
| 22948 | 
            +
            		nodeType = elem.nodeType;
         | 
| 22949 | 
            +
             | 
| 22950 | 
            +
            	if ( !nodeType ) {
         | 
| 22951 | 
            +
             | 
| 22952 | 
            +
            		// If no nodeType, this is expected to be an array
         | 
| 22953 | 
            +
            		while ( ( node = elem[ i++ ] ) ) {
         | 
| 22954 | 
            +
             | 
| 22955 | 
            +
            			// Do not traverse comment nodes
         | 
| 22956 | 
            +
            			ret += getText( node );
         | 
| 22957 | 
            +
            		}
         | 
| 22958 | 
            +
            	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
         | 
| 22959 | 
            +
             | 
| 22960 | 
            +
            		// Use textContent for elements
         | 
| 22961 | 
            +
            		// innerText usage removed for consistency of new lines (jQuery #11153)
         | 
| 22962 | 
            +
            		if ( typeof elem.textContent === "string" ) {
         | 
| 22963 | 
            +
            			return elem.textContent;
         | 
| 22964 | 
            +
            		} else {
         | 
| 22965 | 
            +
             | 
| 22966 | 
            +
            			// Traverse its children
         | 
| 22967 | 
            +
            			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
         | 
| 22968 | 
            +
            				ret += getText( elem );
         | 
| 22969 | 
            +
            			}
         | 
| 22970 | 
            +
            		}
         | 
| 22971 | 
            +
            	} else if ( nodeType === 3 || nodeType === 4 ) {
         | 
| 22972 | 
            +
            		return elem.nodeValue;
         | 
| 22973 | 
            +
            	}
         | 
| 22974 | 
            +
             | 
| 22975 | 
            +
            	// Do not include comment or processing instruction nodes
         | 
| 22976 | 
            +
             | 
| 22977 | 
            +
            	return ret;
         | 
| 22752 22978 | 
             
            };
         | 
| 22753 22979 |  | 
| 22754 | 
            -
            Expr =  | 
| 22980 | 
            +
            Expr = Sizzle.selectors = {
         | 
| 22755 22981 |  | 
| 22756 22982 | 
             
            	// Can be adjusted by the user
         | 
| 22757 22983 | 
             
            	cacheLength: 50,
         | 
| @@ -22772,12 +22998,12 @@ Expr = jQuery.expr = { | |
| 22772 22998 | 
             
            	},
         | 
| 22773 22999 |  | 
| 22774 23000 | 
             
            	preFilter: {
         | 
| 22775 | 
            -
            		ATTR: function( match ) {
         | 
| 23001 | 
            +
            		"ATTR": function( match ) {
         | 
| 22776 23002 | 
             
            			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
         | 
| 22777 23003 |  | 
| 22778 23004 | 
             
            			// Move the given value to match[3] whether quoted or unquoted
         | 
| 22779 | 
            -
            			match[ 3 ] = ( match[ 3 ] || match[ 4 ] || | 
| 22780 | 
            -
            				.replace( runescape, funescape );
         | 
| 23005 | 
            +
            			match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
         | 
| 23006 | 
            +
            				match[ 5 ] || "" ).replace( runescape, funescape );
         | 
| 22781 23007 |  | 
| 22782 23008 | 
             
            			if ( match[ 2 ] === "~=" ) {
         | 
| 22783 23009 | 
             
            				match[ 3 ] = " " + match[ 3 ] + " ";
         | 
| @@ -22786,7 +23012,7 @@ Expr = jQuery.expr = { | |
| 22786 23012 | 
             
            			return match.slice( 0, 4 );
         | 
| 22787 23013 | 
             
            		},
         | 
| 22788 23014 |  | 
| 22789 | 
            -
            		CHILD: function( match ) {
         | 
| 23015 | 
            +
            		"CHILD": function( match ) {
         | 
| 22790 23016 |  | 
| 22791 23017 | 
             
            			/* matches from matchExpr["CHILD"]
         | 
| 22792 23018 | 
             
            				1 type (only|nth|...)
         | 
| @@ -22804,30 +23030,29 @@ Expr = jQuery.expr = { | |
| 22804 23030 |  | 
| 22805 23031 | 
             
            				// nth-* requires argument
         | 
| 22806 23032 | 
             
            				if ( !match[ 3 ] ) {
         | 
| 22807 | 
            -
            					 | 
| 23033 | 
            +
            					Sizzle.error( match[ 0 ] );
         | 
| 22808 23034 | 
             
            				}
         | 
| 22809 23035 |  | 
| 22810 23036 | 
             
            				// numeric x and y parameters for Expr.filter.CHILD
         | 
| 22811 23037 | 
             
            				// remember that false/true cast respectively to 0/1
         | 
| 22812 23038 | 
             
            				match[ 4 ] = +( match[ 4 ] ?
         | 
| 22813 23039 | 
             
            					match[ 5 ] + ( match[ 6 ] || 1 ) :
         | 
| 22814 | 
            -
            					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
         | 
| 22815 | 
            -
            				);
         | 
| 23040 | 
            +
            					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
         | 
| 22816 23041 | 
             
            				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
         | 
| 22817 23042 |  | 
| 22818 | 
            -
             | 
| 23043 | 
            +
            				// other types prohibit arguments
         | 
| 22819 23044 | 
             
            			} else if ( match[ 3 ] ) {
         | 
| 22820 | 
            -
            				 | 
| 23045 | 
            +
            				Sizzle.error( match[ 0 ] );
         | 
| 22821 23046 | 
             
            			}
         | 
| 22822 23047 |  | 
| 22823 23048 | 
             
            			return match;
         | 
| 22824 23049 | 
             
            		},
         | 
| 22825 23050 |  | 
| 22826 | 
            -
            		PSEUDO: function( match ) {
         | 
| 23051 | 
            +
            		"PSEUDO": function( match ) {
         | 
| 22827 23052 | 
             
            			var excess,
         | 
| 22828 23053 | 
             
            				unquoted = !match[ 6 ] && match[ 2 ];
         | 
| 22829 23054 |  | 
| 22830 | 
            -
            			if ( matchExpr | 
| 23055 | 
            +
            			if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
         | 
| 22831 23056 | 
             
            				return null;
         | 
| 22832 23057 | 
             
            			}
         | 
| 22833 23058 |  | 
| @@ -22856,36 +23081,36 @@ Expr = jQuery.expr = { | |
| 22856 23081 |  | 
| 22857 23082 | 
             
            	filter: {
         | 
| 22858 23083 |  | 
| 22859 | 
            -
            		TAG: function( nodeNameSelector ) {
         | 
| 22860 | 
            -
            			var  | 
| 23084 | 
            +
            		"TAG": function( nodeNameSelector ) {
         | 
| 23085 | 
            +
            			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
         | 
| 22861 23086 | 
             
            			return nodeNameSelector === "*" ?
         | 
| 22862 23087 | 
             
            				function() {
         | 
| 22863 23088 | 
             
            					return true;
         | 
| 22864 23089 | 
             
            				} :
         | 
| 22865 23090 | 
             
            				function( elem ) {
         | 
| 22866 | 
            -
            					return nodeName | 
| 23091 | 
            +
            					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
         | 
| 22867 23092 | 
             
            				};
         | 
| 22868 23093 | 
             
            		},
         | 
| 22869 23094 |  | 
| 22870 | 
            -
            		CLASS: function( className ) {
         | 
| 23095 | 
            +
            		"CLASS": function( className ) {
         | 
| 22871 23096 | 
             
            			var pattern = classCache[ className + " " ];
         | 
| 22872 23097 |  | 
| 22873 23098 | 
             
            			return pattern ||
         | 
| 22874 | 
            -
            				( pattern = new RegExp( "(^|" + whitespace + | 
| 22875 | 
            -
            					"(" + whitespace + "|$)" ) ) &&
         | 
| 22876 | 
            -
             | 
| 22877 | 
            -
             | 
| 22878 | 
            -
             | 
| 22879 | 
            -
             | 
| 22880 | 
            -
             | 
| 22881 | 
            -
             | 
| 22882 | 
            -
             | 
| 23099 | 
            +
            				( pattern = new RegExp( "(^|" + whitespace +
         | 
| 23100 | 
            +
            					")" + className + "(" + whitespace + "|$)" ) ) && classCache(
         | 
| 23101 | 
            +
            						className, function( elem ) {
         | 
| 23102 | 
            +
            							return pattern.test(
         | 
| 23103 | 
            +
            								typeof elem.className === "string" && elem.className ||
         | 
| 23104 | 
            +
            								typeof elem.getAttribute !== "undefined" &&
         | 
| 23105 | 
            +
            									elem.getAttribute( "class" ) ||
         | 
| 23106 | 
            +
            								""
         | 
| 23107 | 
            +
            							);
         | 
| 22883 23108 | 
             
            				} );
         | 
| 22884 23109 | 
             
            		},
         | 
| 22885 23110 |  | 
| 22886 | 
            -
            		ATTR: function( name, operator, check ) {
         | 
| 23111 | 
            +
            		"ATTR": function( name, operator, check ) {
         | 
| 22887 23112 | 
             
            			return function( elem ) {
         | 
| 22888 | 
            -
            				var result =  | 
| 23113 | 
            +
            				var result = Sizzle.attr( elem, name );
         | 
| 22889 23114 |  | 
| 22890 23115 | 
             
            				if ( result == null ) {
         | 
| 22891 23116 | 
             
            					return operator === "!=";
         | 
| @@ -22896,34 +23121,22 @@ Expr = jQuery.expr = { | |
| 22896 23121 |  | 
| 22897 23122 | 
             
            				result += "";
         | 
| 22898 23123 |  | 
| 22899 | 
            -
            				 | 
| 22900 | 
            -
             | 
| 22901 | 
            -
            				 | 
| 22902 | 
            -
             | 
| 22903 | 
            -
            					 | 
| 22904 | 
            -
             | 
| 22905 | 
            -
             | 
| 22906 | 
            -
            					 | 
| 22907 | 
            -
             | 
| 22908 | 
            -
             | 
| 22909 | 
            -
             | 
| 22910 | 
            -
            				}
         | 
| 22911 | 
            -
            				if ( operator === "$=" ) {
         | 
| 22912 | 
            -
            					return check && result.slice( -check.length ) === check;
         | 
| 22913 | 
            -
            				}
         | 
| 22914 | 
            -
            				if ( operator === "~=" ) {
         | 
| 22915 | 
            -
            					return ( " " + result.replace( rwhitespace, " " ) + " " )
         | 
| 22916 | 
            -
            						.indexOf( check ) > -1;
         | 
| 22917 | 
            -
            				}
         | 
| 22918 | 
            -
            				if ( operator === "|=" ) {
         | 
| 22919 | 
            -
            					return result === check || result.slice( 0, check.length + 1 ) === check + "-";
         | 
| 22920 | 
            -
            				}
         | 
| 23124 | 
            +
            				/* eslint-disable max-len */
         | 
| 23125 | 
            +
             | 
| 23126 | 
            +
            				return operator === "=" ? result === check :
         | 
| 23127 | 
            +
            					operator === "!=" ? result !== check :
         | 
| 23128 | 
            +
            					operator === "^=" ? check && result.indexOf( check ) === 0 :
         | 
| 23129 | 
            +
            					operator === "*=" ? check && result.indexOf( check ) > -1 :
         | 
| 23130 | 
            +
            					operator === "$=" ? check && result.slice( -check.length ) === check :
         | 
| 23131 | 
            +
            					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
         | 
| 23132 | 
            +
            					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
         | 
| 23133 | 
            +
            					false;
         | 
| 23134 | 
            +
            				/* eslint-enable max-len */
         | 
| 22921 23135 |  | 
| 22922 | 
            -
            				return false;
         | 
| 22923 23136 | 
             
            			};
         | 
| 22924 23137 | 
             
            		},
         | 
| 22925 23138 |  | 
| 22926 | 
            -
            		CHILD: function( type, what, _argument, first, last ) {
         | 
| 23139 | 
            +
            		"CHILD": function( type, what, _argument, first, last ) {
         | 
| 22927 23140 | 
             
            			var simple = type.slice( 0, 3 ) !== "nth",
         | 
| 22928 23141 | 
             
            				forward = type.slice( -4 ) !== "last",
         | 
| 22929 23142 | 
             
            				ofType = what === "of-type";
         | 
| @@ -22936,7 +23149,7 @@ Expr = jQuery.expr = { | |
| 22936 23149 | 
             
            				} :
         | 
| 22937 23150 |  | 
| 22938 23151 | 
             
            				function( elem, _context, xml ) {
         | 
| 22939 | 
            -
            					var cache, outerCache, node, nodeIndex, start,
         | 
| 23152 | 
            +
            					var cache, uniqueCache, outerCache, node, nodeIndex, start,
         | 
| 22940 23153 | 
             
            						dir = simple !== forward ? "nextSibling" : "previousSibling",
         | 
| 22941 23154 | 
             
            						parent = elem.parentNode,
         | 
| 22942 23155 | 
             
            						name = ofType && elem.nodeName.toLowerCase(),
         | 
| @@ -22951,7 +23164,7 @@ Expr = jQuery.expr = { | |
| 22951 23164 | 
             
            								node = elem;
         | 
| 22952 23165 | 
             
            								while ( ( node = node[ dir ] ) ) {
         | 
| 22953 23166 | 
             
            									if ( ofType ?
         | 
| 22954 | 
            -
            										nodeName(  | 
| 23167 | 
            +
            										node.nodeName.toLowerCase() === name :
         | 
| 22955 23168 | 
             
            										node.nodeType === 1 ) {
         | 
| 22956 23169 |  | 
| 22957 23170 | 
             
            										return false;
         | 
| @@ -22970,8 +23183,17 @@ Expr = jQuery.expr = { | |
| 22970 23183 | 
             
            						if ( forward && useCache ) {
         | 
| 22971 23184 |  | 
| 22972 23185 | 
             
            							// Seek `elem` from a previously-cached index
         | 
| 22973 | 
            -
             | 
| 22974 | 
            -
            							 | 
| 23186 | 
            +
             | 
| 23187 | 
            +
            							// ...in a gzip-friendly way
         | 
| 23188 | 
            +
            							node = parent;
         | 
| 23189 | 
            +
            							outerCache = node[ expando ] || ( node[ expando ] = {} );
         | 
| 23190 | 
            +
             | 
| 23191 | 
            +
            							// Support: IE <9 only
         | 
| 23192 | 
            +
            							// Defend against cloned attroperties (jQuery gh-1709)
         | 
| 23193 | 
            +
            							uniqueCache = outerCache[ node.uniqueID ] ||
         | 
| 23194 | 
            +
            								( outerCache[ node.uniqueID ] = {} );
         | 
| 23195 | 
            +
             | 
| 23196 | 
            +
            							cache = uniqueCache[ type ] || [];
         | 
| 22975 23197 | 
             
            							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
         | 
| 22976 23198 | 
             
            							diff = nodeIndex && cache[ 2 ];
         | 
| 22977 23199 | 
             
            							node = nodeIndex && parent.childNodes[ nodeIndex ];
         | 
| @@ -22983,7 +23205,7 @@ Expr = jQuery.expr = { | |
| 22983 23205 |  | 
| 22984 23206 | 
             
            								// When found, cache indexes on `parent` and break
         | 
| 22985 23207 | 
             
            								if ( node.nodeType === 1 && ++diff && node === elem ) {
         | 
| 22986 | 
            -
            									 | 
| 23208 | 
            +
            									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
         | 
| 22987 23209 | 
             
            									break;
         | 
| 22988 23210 | 
             
            								}
         | 
| 22989 23211 | 
             
            							}
         | 
| @@ -22992,8 +23214,17 @@ Expr = jQuery.expr = { | |
| 22992 23214 |  | 
| 22993 23215 | 
             
            							// Use previously-cached element index if available
         | 
| 22994 23216 | 
             
            							if ( useCache ) {
         | 
| 22995 | 
            -
             | 
| 22996 | 
            -
            								 | 
| 23217 | 
            +
             | 
| 23218 | 
            +
            								// ...in a gzip-friendly way
         | 
| 23219 | 
            +
            								node = elem;
         | 
| 23220 | 
            +
            								outerCache = node[ expando ] || ( node[ expando ] = {} );
         | 
| 23221 | 
            +
             | 
| 23222 | 
            +
            								// Support: IE <9 only
         | 
| 23223 | 
            +
            								// Defend against cloned attroperties (jQuery gh-1709)
         | 
| 23224 | 
            +
            								uniqueCache = outerCache[ node.uniqueID ] ||
         | 
| 23225 | 
            +
            									( outerCache[ node.uniqueID ] = {} );
         | 
| 23226 | 
            +
             | 
| 23227 | 
            +
            								cache = uniqueCache[ type ] || [];
         | 
| 22997 23228 | 
             
            								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
         | 
| 22998 23229 | 
             
            								diff = nodeIndex;
         | 
| 22999 23230 | 
             
            							}
         | 
| @@ -23007,7 +23238,7 @@ Expr = jQuery.expr = { | |
| 23007 23238 | 
             
            									( diff = nodeIndex = 0 ) || start.pop() ) ) {
         | 
| 23008 23239 |  | 
| 23009 23240 | 
             
            									if ( ( ofType ?
         | 
| 23010 | 
            -
            										nodeName(  | 
| 23241 | 
            +
            										node.nodeName.toLowerCase() === name :
         | 
| 23011 23242 | 
             
            										node.nodeType === 1 ) &&
         | 
| 23012 23243 | 
             
            										++diff ) {
         | 
| 23013 23244 |  | 
| @@ -23015,7 +23246,13 @@ Expr = jQuery.expr = { | |
| 23015 23246 | 
             
            										if ( useCache ) {
         | 
| 23016 23247 | 
             
            											outerCache = node[ expando ] ||
         | 
| 23017 23248 | 
             
            												( node[ expando ] = {} );
         | 
| 23018 | 
            -
             | 
| 23249 | 
            +
             | 
| 23250 | 
            +
            											// Support: IE <9 only
         | 
| 23251 | 
            +
            											// Defend against cloned attroperties (jQuery gh-1709)
         | 
| 23252 | 
            +
            											uniqueCache = outerCache[ node.uniqueID ] ||
         | 
| 23253 | 
            +
            												( outerCache[ node.uniqueID ] = {} );
         | 
| 23254 | 
            +
             | 
| 23255 | 
            +
            											uniqueCache[ type ] = [ dirruns, diff ];
         | 
| 23019 23256 | 
             
            										}
         | 
| 23020 23257 |  | 
| 23021 23258 | 
             
            										if ( node === elem ) {
         | 
| @@ -23033,19 +23270,19 @@ Expr = jQuery.expr = { | |
| 23033 23270 | 
             
            				};
         | 
| 23034 23271 | 
             
            		},
         | 
| 23035 23272 |  | 
| 23036 | 
            -
            		PSEUDO: function( pseudo, argument ) {
         | 
| 23273 | 
            +
            		"PSEUDO": function( pseudo, argument ) {
         | 
| 23037 23274 |  | 
| 23038 23275 | 
             
            			// pseudo-class names are case-insensitive
         | 
| 23039 | 
            -
            			//  | 
| 23276 | 
            +
            			// http://www.w3.org/TR/selectors/#pseudo-classes
         | 
| 23040 23277 | 
             
            			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
         | 
| 23041 23278 | 
             
            			// Remember that setFilters inherits from pseudos
         | 
| 23042 23279 | 
             
            			var args,
         | 
| 23043 23280 | 
             
            				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
         | 
| 23044 | 
            -
            					 | 
| 23281 | 
            +
            					Sizzle.error( "unsupported pseudo: " + pseudo );
         | 
| 23045 23282 |  | 
| 23046 23283 | 
             
            			// The user may use createPseudo to indicate that
         | 
| 23047 23284 | 
             
            			// arguments are needed to create the filter function
         | 
| 23048 | 
            -
            			// just as  | 
| 23285 | 
            +
            			// just as Sizzle does
         | 
| 23049 23286 | 
             
            			if ( fn[ expando ] ) {
         | 
| 23050 23287 | 
             
            				return fn( argument );
         | 
| 23051 23288 | 
             
            			}
         | 
| @@ -23059,7 +23296,7 @@ Expr = jQuery.expr = { | |
| 23059 23296 | 
             
            							matched = fn( seed, argument ),
         | 
| 23060 23297 | 
             
            							i = matched.length;
         | 
| 23061 23298 | 
             
            						while ( i-- ) {
         | 
| 23062 | 
            -
            							idx = indexOf | 
| 23299 | 
            +
            							idx = indexOf( seed, matched[ i ] );
         | 
| 23063 23300 | 
             
            							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
         | 
| 23064 23301 | 
             
            						}
         | 
| 23065 23302 | 
             
            					} ) :
         | 
| @@ -23075,14 +23312,14 @@ Expr = jQuery.expr = { | |
| 23075 23312 | 
             
            	pseudos: {
         | 
| 23076 23313 |  | 
| 23077 23314 | 
             
            		// Potentially complex pseudos
         | 
| 23078 | 
            -
            		not: markFunction( function( selector ) {
         | 
| 23315 | 
            +
            		"not": markFunction( function( selector ) {
         | 
| 23079 23316 |  | 
| 23080 23317 | 
             
            			// Trim the selector passed to compile
         | 
| 23081 23318 | 
             
            			// to avoid treating leading and trailing
         | 
| 23082 23319 | 
             
            			// spaces as combinators
         | 
| 23083 23320 | 
             
            			var input = [],
         | 
| 23084 23321 | 
             
            				results = [],
         | 
| 23085 | 
            -
            				matcher = compile( selector.replace(  | 
| 23322 | 
            +
            				matcher = compile( selector.replace( rtrim, "$1" ) );
         | 
| 23086 23323 |  | 
| 23087 23324 | 
             
            			return matcher[ expando ] ?
         | 
| 23088 23325 | 
             
            				markFunction( function( seed, matches, _context, xml ) {
         | 
| @@ -23101,23 +23338,22 @@ Expr = jQuery.expr = { | |
| 23101 23338 | 
             
            					input[ 0 ] = elem;
         | 
| 23102 23339 | 
             
            					matcher( input, null, xml, results );
         | 
| 23103 23340 |  | 
| 23104 | 
            -
            					// Don't keep the element
         | 
| 23105 | 
            -
            					// (see https://github.com/jquery/sizzle/issues/299)
         | 
| 23341 | 
            +
            					// Don't keep the element (issue #299)
         | 
| 23106 23342 | 
             
            					input[ 0 ] = null;
         | 
| 23107 23343 | 
             
            					return !results.pop();
         | 
| 23108 23344 | 
             
            				};
         | 
| 23109 23345 | 
             
            		} ),
         | 
| 23110 23346 |  | 
| 23111 | 
            -
            		has: markFunction( function( selector ) {
         | 
| 23347 | 
            +
            		"has": markFunction( function( selector ) {
         | 
| 23112 23348 | 
             
            			return function( elem ) {
         | 
| 23113 | 
            -
            				return  | 
| 23349 | 
            +
            				return Sizzle( selector, elem ).length > 0;
         | 
| 23114 23350 | 
             
            			};
         | 
| 23115 23351 | 
             
            		} ),
         | 
| 23116 23352 |  | 
| 23117 | 
            -
            		contains: markFunction( function( text ) {
         | 
| 23353 | 
            +
            		"contains": markFunction( function( text ) {
         | 
| 23118 23354 | 
             
            			text = text.replace( runescape, funescape );
         | 
| 23119 23355 | 
             
            			return function( elem ) {
         | 
| 23120 | 
            -
            				return ( elem.textContent ||  | 
| 23356 | 
            +
            				return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
         | 
| 23121 23357 | 
             
            			};
         | 
| 23122 23358 | 
             
            		} ),
         | 
| 23123 23359 |  | 
| @@ -23127,12 +23363,12 @@ Expr = jQuery.expr = { | |
| 23127 23363 | 
             
            		// or beginning with the identifier C immediately followed by "-".
         | 
| 23128 23364 | 
             
            		// The matching of C against the element's language value is performed case-insensitively.
         | 
| 23129 23365 | 
             
            		// The identifier C does not have to be a valid language name."
         | 
| 23130 | 
            -
            		//  | 
| 23131 | 
            -
            		lang: markFunction( function( lang ) {
         | 
| 23366 | 
            +
            		// http://www.w3.org/TR/selectors/#lang-pseudo
         | 
| 23367 | 
            +
            		"lang": markFunction( function( lang ) {
         | 
| 23132 23368 |  | 
| 23133 23369 | 
             
            			// lang value must be a valid identifier
         | 
| 23134 23370 | 
             
            			if ( !ridentifier.test( lang || "" ) ) {
         | 
| 23135 | 
            -
            				 | 
| 23371 | 
            +
            				Sizzle.error( "unsupported lang: " + lang );
         | 
| 23136 23372 | 
             
            			}
         | 
| 23137 23373 | 
             
            			lang = lang.replace( runescape, funescape ).toLowerCase();
         | 
| 23138 23374 | 
             
            			return function( elem ) {
         | 
| @@ -23151,39 +23387,38 @@ Expr = jQuery.expr = { | |
| 23151 23387 | 
             
            		} ),
         | 
| 23152 23388 |  | 
| 23153 23389 | 
             
            		// Miscellaneous
         | 
| 23154 | 
            -
            		target: function( elem ) {
         | 
| 23390 | 
            +
            		"target": function( elem ) {
         | 
| 23155 23391 | 
             
            			var hash = window.location && window.location.hash;
         | 
| 23156 23392 | 
             
            			return hash && hash.slice( 1 ) === elem.id;
         | 
| 23157 23393 | 
             
            		},
         | 
| 23158 23394 |  | 
| 23159 | 
            -
            		root: function( elem ) {
         | 
| 23160 | 
            -
            			return elem ===  | 
| 23395 | 
            +
            		"root": function( elem ) {
         | 
| 23396 | 
            +
            			return elem === docElem;
         | 
| 23161 23397 | 
             
            		},
         | 
| 23162 23398 |  | 
| 23163 | 
            -
            		focus: function( elem ) {
         | 
| 23164 | 
            -
            			return elem ===  | 
| 23165 | 
            -
            				document.hasFocus() &&
         | 
| 23399 | 
            +
            		"focus": function( elem ) {
         | 
| 23400 | 
            +
            			return elem === document.activeElement &&
         | 
| 23401 | 
            +
            				( !document.hasFocus || document.hasFocus() ) &&
         | 
| 23166 23402 | 
             
            				!!( elem.type || elem.href || ~elem.tabIndex );
         | 
| 23167 23403 | 
             
            		},
         | 
| 23168 23404 |  | 
| 23169 23405 | 
             
            		// Boolean properties
         | 
| 23170 | 
            -
            		enabled: createDisabledPseudo( false ),
         | 
| 23171 | 
            -
            		disabled: createDisabledPseudo( true ),
         | 
| 23406 | 
            +
            		"enabled": createDisabledPseudo( false ),
         | 
| 23407 | 
            +
            		"disabled": createDisabledPseudo( true ),
         | 
| 23172 23408 |  | 
| 23173 | 
            -
            		checked: function( elem ) {
         | 
| 23409 | 
            +
            		"checked": function( elem ) {
         | 
| 23174 23410 |  | 
| 23175 23411 | 
             
            			// In CSS3, :checked should return both checked and selected elements
         | 
| 23176 | 
            -
            			//  | 
| 23177 | 
            -
            			 | 
| 23178 | 
            -
             | 
| 23412 | 
            +
            			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
         | 
| 23413 | 
            +
            			var nodeName = elem.nodeName.toLowerCase();
         | 
| 23414 | 
            +
            			return ( nodeName === "input" && !!elem.checked ) ||
         | 
| 23415 | 
            +
            				( nodeName === "option" && !!elem.selected );
         | 
| 23179 23416 | 
             
            		},
         | 
| 23180 23417 |  | 
| 23181 | 
            -
            		selected: function( elem ) {
         | 
| 23418 | 
            +
            		"selected": function( elem ) {
         | 
| 23182 23419 |  | 
| 23183 | 
            -
            			//  | 
| 23184 | 
            -
            			//  | 
| 23185 | 
            -
            			// forces the browser to treat the default option as
         | 
| 23186 | 
            -
            			// selected when in an optgroup.
         | 
| 23420 | 
            +
            			// Accessing this property makes selected-by-default
         | 
| 23421 | 
            +
            			// options in Safari work properly
         | 
| 23187 23422 | 
             
            			if ( elem.parentNode ) {
         | 
| 23188 23423 | 
             
            				// eslint-disable-next-line no-unused-expressions
         | 
| 23189 23424 | 
             
            				elem.parentNode.selectedIndex;
         | 
| @@ -23193,9 +23428,9 @@ Expr = jQuery.expr = { | |
| 23193 23428 | 
             
            		},
         | 
| 23194 23429 |  | 
| 23195 23430 | 
             
            		// Contents
         | 
| 23196 | 
            -
            		empty: function( elem ) {
         | 
| 23431 | 
            +
            		"empty": function( elem ) {
         | 
| 23197 23432 |  | 
| 23198 | 
            -
            			//  | 
| 23433 | 
            +
            			// http://www.w3.org/TR/selectors/#empty-pseudo
         | 
| 23199 23434 | 
             
            			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
         | 
| 23200 23435 | 
             
            			//   but not by others (comment: 8; processing instruction: 7; etc.)
         | 
| 23201 23436 | 
             
            			// nodeType < 6 works because attributes (2) do not appear as children
         | 
| @@ -23207,49 +23442,49 @@ Expr = jQuery.expr = { | |
| 23207 23442 | 
             
            			return true;
         | 
| 23208 23443 | 
             
            		},
         | 
| 23209 23444 |  | 
| 23210 | 
            -
            		parent: function( elem ) {
         | 
| 23211 | 
            -
            			return !Expr.pseudos | 
| 23445 | 
            +
            		"parent": function( elem ) {
         | 
| 23446 | 
            +
            			return !Expr.pseudos[ "empty" ]( elem );
         | 
| 23212 23447 | 
             
            		},
         | 
| 23213 23448 |  | 
| 23214 23449 | 
             
            		// Element/input types
         | 
| 23215 | 
            -
            		header: function( elem ) {
         | 
| 23450 | 
            +
            		"header": function( elem ) {
         | 
| 23216 23451 | 
             
            			return rheader.test( elem.nodeName );
         | 
| 23217 23452 | 
             
            		},
         | 
| 23218 23453 |  | 
| 23219 | 
            -
            		input: function( elem ) {
         | 
| 23454 | 
            +
            		"input": function( elem ) {
         | 
| 23220 23455 | 
             
            			return rinputs.test( elem.nodeName );
         | 
| 23221 23456 | 
             
            		},
         | 
| 23222 23457 |  | 
| 23223 | 
            -
            		button: function( elem ) {
         | 
| 23224 | 
            -
            			 | 
| 23225 | 
            -
             | 
| 23458 | 
            +
            		"button": function( elem ) {
         | 
| 23459 | 
            +
            			var name = elem.nodeName.toLowerCase();
         | 
| 23460 | 
            +
            			return name === "input" && elem.type === "button" || name === "button";
         | 
| 23226 23461 | 
             
            		},
         | 
| 23227 23462 |  | 
| 23228 | 
            -
            		text: function( elem ) {
         | 
| 23463 | 
            +
            		"text": function( elem ) {
         | 
| 23229 23464 | 
             
            			var attr;
         | 
| 23230 | 
            -
            			return nodeName( | 
| 23465 | 
            +
            			return elem.nodeName.toLowerCase() === "input" &&
         | 
| 23466 | 
            +
            				elem.type === "text" &&
         | 
| 23231 23467 |  | 
| 23232 | 
            -
            				// Support: IE | 
| 23233 | 
            -
            				// New HTML5 attribute values (e.g., "search") appear
         | 
| 23234 | 
            -
            				// with elem.type === "text"
         | 
| 23468 | 
            +
            				// Support: IE<8
         | 
| 23469 | 
            +
            				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
         | 
| 23235 23470 | 
             
            				( ( attr = elem.getAttribute( "type" ) ) == null ||
         | 
| 23236 23471 | 
             
            					attr.toLowerCase() === "text" );
         | 
| 23237 23472 | 
             
            		},
         | 
| 23238 23473 |  | 
| 23239 23474 | 
             
            		// Position-in-collection
         | 
| 23240 | 
            -
            		first: createPositionalPseudo( function() {
         | 
| 23475 | 
            +
            		"first": createPositionalPseudo( function() {
         | 
| 23241 23476 | 
             
            			return [ 0 ];
         | 
| 23242 23477 | 
             
            		} ),
         | 
| 23243 23478 |  | 
| 23244 | 
            -
            		last: createPositionalPseudo( function( _matchIndexes, length ) {
         | 
| 23479 | 
            +
            		"last": createPositionalPseudo( function( _matchIndexes, length ) {
         | 
| 23245 23480 | 
             
            			return [ length - 1 ];
         | 
| 23246 23481 | 
             
            		} ),
         | 
| 23247 23482 |  | 
| 23248 | 
            -
            		eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
         | 
| 23483 | 
            +
            		"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
         | 
| 23249 23484 | 
             
            			return [ argument < 0 ? argument + length : argument ];
         | 
| 23250 23485 | 
             
            		} ),
         | 
| 23251 23486 |  | 
| 23252 | 
            -
            		even: createPositionalPseudo( function( matchIndexes, length ) {
         | 
| 23487 | 
            +
            		"even": createPositionalPseudo( function( matchIndexes, length ) {
         | 
| 23253 23488 | 
             
            			var i = 0;
         | 
| 23254 23489 | 
             
            			for ( ; i < length; i += 2 ) {
         | 
| 23255 23490 | 
             
            				matchIndexes.push( i );
         | 
| @@ -23257,7 +23492,7 @@ Expr = jQuery.expr = { | |
| 23257 23492 | 
             
            			return matchIndexes;
         | 
| 23258 23493 | 
             
            		} ),
         | 
| 23259 23494 |  | 
| 23260 | 
            -
            		odd: createPositionalPseudo( function( matchIndexes, length ) {
         | 
| 23495 | 
            +
            		"odd": createPositionalPseudo( function( matchIndexes, length ) {
         | 
| 23261 23496 | 
             
            			var i = 1;
         | 
| 23262 23497 | 
             
            			for ( ; i < length; i += 2 ) {
         | 
| 23263 23498 | 
             
            				matchIndexes.push( i );
         | 
| @@ -23265,24 +23500,19 @@ Expr = jQuery.expr = { | |
| 23265 23500 | 
             
            			return matchIndexes;
         | 
| 23266 23501 | 
             
            		} ),
         | 
| 23267 23502 |  | 
| 23268 | 
            -
            		lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
         | 
| 23269 | 
            -
            			var i | 
| 23270 | 
            -
             | 
| 23271 | 
            -
             | 
| 23272 | 
            -
             | 
| 23273 | 
            -
             | 
| 23274 | 
            -
            				i = length;
         | 
| 23275 | 
            -
            			} else {
         | 
| 23276 | 
            -
            				i = argument;
         | 
| 23277 | 
            -
            			}
         | 
| 23278 | 
            -
             | 
| 23503 | 
            +
            		"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
         | 
| 23504 | 
            +
            			var i = argument < 0 ?
         | 
| 23505 | 
            +
            				argument + length :
         | 
| 23506 | 
            +
            				argument > length ?
         | 
| 23507 | 
            +
            					length :
         | 
| 23508 | 
            +
            					argument;
         | 
| 23279 23509 | 
             
            			for ( ; --i >= 0; ) {
         | 
| 23280 23510 | 
             
            				matchIndexes.push( i );
         | 
| 23281 23511 | 
             
            			}
         | 
| 23282 23512 | 
             
            			return matchIndexes;
         | 
| 23283 23513 | 
             
            		} ),
         | 
| 23284 23514 |  | 
| 23285 | 
            -
            		gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
         | 
| 23515 | 
            +
            		"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
         | 
| 23286 23516 | 
             
            			var i = argument < 0 ? argument + length : argument;
         | 
| 23287 23517 | 
             
            			for ( ; ++i < length; ) {
         | 
| 23288 23518 | 
             
            				matchIndexes.push( i );
         | 
| @@ -23292,7 +23522,7 @@ Expr = jQuery.expr = { | |
| 23292 23522 | 
             
            	}
         | 
| 23293 23523 | 
             
            };
         | 
| 23294 23524 |  | 
| 23295 | 
            -
            Expr.pseudos | 
| 23525 | 
            +
            Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
         | 
| 23296 23526 |  | 
| 23297 23527 | 
             
            // Add button/input type pseudos
         | 
| 23298 23528 | 
             
            for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
         | 
| @@ -23307,7 +23537,7 @@ function setFilters() {} | |
| 23307 23537 | 
             
            setFilters.prototype = Expr.filters = Expr.pseudos;
         | 
| 23308 23538 | 
             
            Expr.setFilters = new setFilters();
         | 
| 23309 23539 |  | 
| 23310 | 
            -
             | 
| 23540 | 
            +
            tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
         | 
| 23311 23541 | 
             
            	var matched, match, tokens, type,
         | 
| 23312 23542 | 
             
            		soFar, groups, preFilters,
         | 
| 23313 23543 | 
             
            		cached = tokenCache[ selector + " " ];
         | 
| @@ -23335,13 +23565,13 @@ function tokenize( selector, parseOnly ) { | |
| 23335 23565 | 
             
            		matched = false;
         | 
| 23336 23566 |  | 
| 23337 23567 | 
             
            		// Combinators
         | 
| 23338 | 
            -
            		if ( ( match =  | 
| 23568 | 
            +
            		if ( ( match = rcombinators.exec( soFar ) ) ) {
         | 
| 23339 23569 | 
             
            			matched = match.shift();
         | 
| 23340 23570 | 
             
            			tokens.push( {
         | 
| 23341 23571 | 
             
            				value: matched,
         | 
| 23342 23572 |  | 
| 23343 23573 | 
             
            				// Cast descendant combinators to space
         | 
| 23344 | 
            -
            				type: match[ 0 ].replace(  | 
| 23574 | 
            +
            				type: match[ 0 ].replace( rtrim, " " )
         | 
| 23345 23575 | 
             
            			} );
         | 
| 23346 23576 | 
             
            			soFar = soFar.slice( matched.length );
         | 
| 23347 23577 | 
             
            		}
         | 
| @@ -23368,16 +23598,14 @@ function tokenize( selector, parseOnly ) { | |
| 23368 23598 | 
             
            	// Return the length of the invalid excess
         | 
| 23369 23599 | 
             
            	// if we're just parsing
         | 
| 23370 23600 | 
             
            	// Otherwise, throw an error or return tokens
         | 
| 23371 | 
            -
            	 | 
| 23372 | 
            -
            		 | 
| 23373 | 
            -
             | 
| 23374 | 
            -
             | 
| 23375 | 
            -
            	return soFar ?
         | 
| 23376 | 
            -
            		find.error( selector ) :
         | 
| 23601 | 
            +
            	return parseOnly ?
         | 
| 23602 | 
            +
            		soFar.length :
         | 
| 23603 | 
            +
            		soFar ?
         | 
| 23604 | 
            +
            			Sizzle.error( selector ) :
         | 
| 23377 23605 |  | 
| 23378 | 
            -
             | 
| 23379 | 
            -
             | 
| 23380 | 
            -
            }
         | 
| 23606 | 
            +
            			// Cache the tokens
         | 
| 23607 | 
            +
            			tokenCache( selector, groups ).slice( 0 );
         | 
| 23608 | 
            +
            };
         | 
| 23381 23609 |  | 
| 23382 23610 | 
             
            function toSelector( tokens ) {
         | 
| 23383 23611 | 
             
            	var i = 0,
         | 
| @@ -23410,7 +23638,7 @@ function addCombinator( matcher, combinator, base ) { | |
| 23410 23638 |  | 
| 23411 23639 | 
             
            		// Check against all ancestor/preceding elements
         | 
| 23412 23640 | 
             
            		function( elem, context, xml ) {
         | 
| 23413 | 
            -
            			var oldCache, outerCache,
         | 
| 23641 | 
            +
            			var oldCache, uniqueCache, outerCache,
         | 
| 23414 23642 | 
             
            				newCache = [ dirruns, doneName ];
         | 
| 23415 23643 |  | 
| 23416 23644 | 
             
            			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
         | 
| @@ -23427,9 +23655,14 @@ function addCombinator( matcher, combinator, base ) { | |
| 23427 23655 | 
             
            					if ( elem.nodeType === 1 || checkNonElements ) {
         | 
| 23428 23656 | 
             
            						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
         | 
| 23429 23657 |  | 
| 23430 | 
            -
            						 | 
| 23658 | 
            +
            						// Support: IE <9 only
         | 
| 23659 | 
            +
            						// Defend against cloned attroperties (jQuery gh-1709)
         | 
| 23660 | 
            +
            						uniqueCache = outerCache[ elem.uniqueID ] ||
         | 
| 23661 | 
            +
            							( outerCache[ elem.uniqueID ] = {} );
         | 
| 23662 | 
            +
             | 
| 23663 | 
            +
            						if ( skip && skip === elem.nodeName.toLowerCase() ) {
         | 
| 23431 23664 | 
             
            							elem = elem[ dir ] || elem;
         | 
| 23432 | 
            -
            						} else if ( ( oldCache =  | 
| 23665 | 
            +
            						} else if ( ( oldCache = uniqueCache[ key ] ) &&
         | 
| 23433 23666 | 
             
            							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
         | 
| 23434 23667 |  | 
| 23435 23668 | 
             
            							// Assign to newCache so results back-propagate to previous elements
         | 
| @@ -23437,7 +23670,7 @@ function addCombinator( matcher, combinator, base ) { | |
| 23437 23670 | 
             
            						} else {
         | 
| 23438 23671 |  | 
| 23439 23672 | 
             
            							// Reuse newcache so results back-propagate to previous elements
         | 
| 23440 | 
            -
            							 | 
| 23673 | 
            +
            							uniqueCache[ key ] = newCache;
         | 
| 23441 23674 |  | 
| 23442 23675 | 
             
            							// A match means we're done; a fail means we have to keep checking
         | 
| 23443 23676 | 
             
            							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
         | 
| @@ -23469,7 +23702,7 @@ function multipleContexts( selector, contexts, results ) { | |
| 23469 23702 | 
             
            	var i = 0,
         | 
| 23470 23703 | 
             
            		len = contexts.length;
         | 
| 23471 23704 | 
             
            	for ( ; i < len; i++ ) {
         | 
| 23472 | 
            -
            		 | 
| 23705 | 
            +
            		Sizzle( selector, contexts[ i ], results );
         | 
| 23473 23706 | 
             
            	}
         | 
| 23474 23707 | 
             
            	return results;
         | 
| 23475 23708 | 
             
            }
         | 
| @@ -23503,37 +23736,38 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS | |
| 23503 23736 | 
             
            		postFinder = setMatcher( postFinder, postSelector );
         | 
| 23504 23737 | 
             
            	}
         | 
| 23505 23738 | 
             
            	return markFunction( function( seed, results, context, xml ) {
         | 
| 23506 | 
            -
            		var temp, i, elem, | 
| 23739 | 
            +
            		var temp, i, elem,
         | 
| 23507 23740 | 
             
            			preMap = [],
         | 
| 23508 23741 | 
             
            			postMap = [],
         | 
| 23509 23742 | 
             
            			preexisting = results.length,
         | 
| 23510 23743 |  | 
| 23511 23744 | 
             
            			// Get initial elements from seed or context
         | 
| 23512 | 
            -
            			elems = seed ||
         | 
| 23513 | 
            -
            				 | 
| 23514 | 
            -
             | 
| 23745 | 
            +
            			elems = seed || multipleContexts(
         | 
| 23746 | 
            +
            				selector || "*",
         | 
| 23747 | 
            +
            				context.nodeType ? [ context ] : context,
         | 
| 23748 | 
            +
            				[]
         | 
| 23749 | 
            +
            			),
         | 
| 23515 23750 |  | 
| 23516 23751 | 
             
            			// Prefilter to get matcher input, preserving a map for seed-results synchronization
         | 
| 23517 23752 | 
             
            			matcherIn = preFilter && ( seed || !selector ) ?
         | 
| 23518 23753 | 
             
            				condense( elems, preMap, preFilter, context, xml ) :
         | 
| 23519 | 
            -
            				elems | 
| 23754 | 
            +
            				elems,
         | 
| 23520 23755 |  | 
| 23521 | 
            -
             | 
| 23756 | 
            +
            			matcherOut = matcher ?
         | 
| 23522 23757 |  | 
| 23523 | 
            -
             | 
| 23524 | 
            -
             | 
| 23525 | 
            -
            			matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
         | 
| 23758 | 
            +
            				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
         | 
| 23759 | 
            +
            				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
         | 
| 23526 23760 |  | 
| 23527 | 
            -
             | 
| 23528 | 
            -
             | 
| 23761 | 
            +
            					// ...intermediate processing is necessary
         | 
| 23762 | 
            +
            					[] :
         | 
| 23529 23763 |  | 
| 23530 | 
            -
             | 
| 23531 | 
            -
             | 
| 23764 | 
            +
            					// ...otherwise use results directly
         | 
| 23765 | 
            +
            					results :
         | 
| 23766 | 
            +
            				matcherIn;
         | 
| 23532 23767 |  | 
| 23533 | 
            -
             | 
| 23768 | 
            +
            		// Find primary matches
         | 
| 23769 | 
            +
            		if ( matcher ) {
         | 
| 23534 23770 | 
             
            			matcher( matcherIn, matcherOut, context, xml );
         | 
| 23535 | 
            -
            		} else {
         | 
| 23536 | 
            -
            			matcherOut = matcherIn;
         | 
| 23537 23771 | 
             
            		}
         | 
| 23538 23772 |  | 
| 23539 23773 | 
             
            		// Apply postFilter
         | 
| @@ -23571,7 +23805,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS | |
| 23571 23805 | 
             
            				i = matcherOut.length;
         | 
| 23572 23806 | 
             
            				while ( i-- ) {
         | 
| 23573 23807 | 
             
            					if ( ( elem = matcherOut[ i ] ) &&
         | 
| 23574 | 
            -
            						( temp = postFinder ? indexOf | 
| 23808 | 
            +
            						( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
         | 
| 23575 23809 |  | 
| 23576 23810 | 
             
            						seed[ temp ] = !( results[ temp ] = elem );
         | 
| 23577 23811 | 
             
            					}
         | 
| @@ -23606,21 +23840,15 @@ function matcherFromTokens( tokens ) { | |
| 23606 23840 | 
             
            			return elem === checkContext;
         | 
| 23607 23841 | 
             
            		}, implicitRelative, true ),
         | 
| 23608 23842 | 
             
            		matchAnyContext = addCombinator( function( elem ) {
         | 
| 23609 | 
            -
            			return indexOf | 
| 23843 | 
            +
            			return indexOf( checkContext, elem ) > -1;
         | 
| 23610 23844 | 
             
            		}, implicitRelative, true ),
         | 
| 23611 23845 | 
             
            		matchers = [ function( elem, context, xml ) {
         | 
| 23612 | 
            -
             | 
| 23613 | 
            -
            			// Support: IE 11+, Edge 17 - 18+
         | 
| 23614 | 
            -
            			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
         | 
| 23615 | 
            -
            			// two documents; shallow comparisons work.
         | 
| 23616 | 
            -
            			// eslint-disable-next-line eqeqeq
         | 
| 23617 | 
            -
            			var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
         | 
| 23846 | 
            +
            			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
         | 
| 23618 23847 | 
             
            				( checkContext = context ).nodeType ?
         | 
| 23619 23848 | 
             
            					matchContext( elem, context, xml ) :
         | 
| 23620 23849 | 
             
            					matchAnyContext( elem, context, xml ) );
         | 
| 23621 23850 |  | 
| 23622 | 
            -
            			// Avoid hanging onto element
         | 
| 23623 | 
            -
            			// (see https://github.com/jquery/sizzle/issues/299)
         | 
| 23851 | 
            +
            			// Avoid hanging onto element (issue #299)
         | 
| 23624 23852 | 
             
            			checkContext = null;
         | 
| 23625 23853 | 
             
            			return ret;
         | 
| 23626 23854 | 
             
            		} ];
         | 
| @@ -23645,10 +23873,11 @@ function matcherFromTokens( tokens ) { | |
| 23645 23873 | 
             
            					i > 1 && elementMatcher( matchers ),
         | 
| 23646 23874 | 
             
            					i > 1 && toSelector(
         | 
| 23647 23875 |  | 
| 23648 | 
            -
             | 
| 23649 | 
            -
             | 
| 23650 | 
            -
             | 
| 23651 | 
            -
             | 
| 23876 | 
            +
            					// If the preceding token was a descendant combinator, insert an implicit any-element `*`
         | 
| 23877 | 
            +
            					tokens
         | 
| 23878 | 
            +
            						.slice( 0, i - 1 )
         | 
| 23879 | 
            +
            						.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
         | 
| 23880 | 
            +
            					).replace( rtrim, "$1" ),
         | 
| 23652 23881 | 
             
            					matcher,
         | 
| 23653 23882 | 
             
            					i < j && matcherFromTokens( tokens.slice( i, j ) ),
         | 
| 23654 23883 | 
             
            					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
         | 
| @@ -23674,7 +23903,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { | |
| 23674 23903 | 
             
            				contextBackup = outermostContext,
         | 
| 23675 23904 |  | 
| 23676 23905 | 
             
            				// We must always have either seed elements or outermost context
         | 
| 23677 | 
            -
            				elems = seed || byElement && Expr.find | 
| 23906 | 
            +
            				elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
         | 
| 23678 23907 |  | 
| 23679 23908 | 
             
            				// Use integer dirruns iff this is the outermost matcher
         | 
| 23680 23909 | 
             
            				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
         | 
| @@ -23690,9 +23919,8 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { | |
| 23690 23919 | 
             
            			}
         | 
| 23691 23920 |  | 
| 23692 23921 | 
             
            			// Add elements passing elementMatchers directly to results
         | 
| 23693 | 
            -
            			// Support:  | 
| 23694 | 
            -
            			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
         | 
| 23695 | 
            -
            			// elements by id. (see trac-14142)
         | 
| 23922 | 
            +
            			// Support: IE<9, Safari
         | 
| 23923 | 
            +
            			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
         | 
| 23696 23924 | 
             
            			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
         | 
| 23697 23925 | 
             
            				if ( byElement && elem ) {
         | 
| 23698 23926 | 
             
            					j = 0;
         | 
| @@ -23707,7 +23935,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { | |
| 23707 23935 | 
             
            					}
         | 
| 23708 23936 | 
             
            					while ( ( matcher = elementMatchers[ j++ ] ) ) {
         | 
| 23709 23937 | 
             
            						if ( matcher( elem, context || document, xml ) ) {
         | 
| 23710 | 
            -
            							push | 
| 23938 | 
            +
            							results.push( elem );
         | 
| 23711 23939 | 
             
            							break;
         | 
| 23712 23940 | 
             
            						}
         | 
| 23713 23941 | 
             
            					}
         | 
| @@ -23770,7 +23998,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { | |
| 23770 23998 | 
             
            				if ( outermost && !seed && setMatched.length > 0 &&
         | 
| 23771 23999 | 
             
            					( matchedCount + setMatchers.length ) > 1 ) {
         | 
| 23772 24000 |  | 
| 23773 | 
            -
            					 | 
| 24001 | 
            +
            					Sizzle.uniqueSort( results );
         | 
| 23774 24002 | 
             
            				}
         | 
| 23775 24003 | 
             
            			}
         | 
| 23776 24004 |  | 
| @@ -23788,7 +24016,7 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { | |
| 23788 24016 | 
             
            		superMatcher;
         | 
| 23789 24017 | 
             
            }
         | 
| 23790 24018 |  | 
| 23791 | 
            -
             | 
| 24019 | 
            +
            compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
         | 
| 23792 24020 | 
             
            	var i,
         | 
| 23793 24021 | 
             
            		setMatchers = [],
         | 
| 23794 24022 | 
             
            		elementMatchers = [],
         | 
| @@ -23811,25 +24039,27 @@ function compile( selector, match /* Internal Use Only */ ) { | |
| 23811 24039 | 
             
            		}
         | 
| 23812 24040 |  | 
| 23813 24041 | 
             
            		// Cache the compiled function
         | 
| 23814 | 
            -
            		cached = compilerCache( | 
| 23815 | 
            -
            			 | 
| 24042 | 
            +
            		cached = compilerCache(
         | 
| 24043 | 
            +
            			selector,
         | 
| 24044 | 
            +
            			matcherFromGroupMatchers( elementMatchers, setMatchers )
         | 
| 24045 | 
            +
            		);
         | 
| 23816 24046 |  | 
| 23817 24047 | 
             
            		// Save selector and tokenization
         | 
| 23818 24048 | 
             
            		cached.selector = selector;
         | 
| 23819 24049 | 
             
            	}
         | 
| 23820 24050 | 
             
            	return cached;
         | 
| 23821 | 
            -
            }
         | 
| 24051 | 
            +
            };
         | 
| 23822 24052 |  | 
| 23823 24053 | 
             
            /**
         | 
| 23824 | 
            -
             * A low-level selection function that works with  | 
| 24054 | 
            +
             * A low-level selection function that works with Sizzle's compiled
         | 
| 23825 24055 | 
             
             *  selector functions
         | 
| 23826 24056 | 
             
             * @param {String|Function} selector A selector or a pre-compiled
         | 
| 23827 | 
            -
             *  selector function built with  | 
| 24057 | 
            +
             *  selector function built with Sizzle.compile
         | 
| 23828 24058 | 
             
             * @param {Element} context
         | 
| 23829 24059 | 
             
             * @param {Array} [results]
         | 
| 23830 24060 | 
             
             * @param {Array} [seed] A set of elements to match against
         | 
| 23831 24061 | 
             
             */
         | 
| 23832 | 
            -
             | 
| 24062 | 
            +
            select = Sizzle.select = function( selector, context, results, seed ) {
         | 
| 23833 24063 | 
             
            	var i, tokens, token, type, find,
         | 
| 23834 24064 | 
             
            		compiled = typeof selector === "function" && selector,
         | 
| 23835 24065 | 
             
            		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
         | 
| @@ -23843,12 +24073,10 @@ function select( selector, context, results, seed ) { | |
| 23843 24073 | 
             
            		// Reduce context if the leading compound selector is an ID
         | 
| 23844 24074 | 
             
            		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
         | 
| 23845 24075 | 
             
            		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
         | 
| 23846 | 
            -
             | 
| 24076 | 
            +
            			context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
         | 
| 23847 24077 |  | 
| 23848 | 
            -
            			context = ( Expr.find | 
| 23849 | 
            -
            				 | 
| 23850 | 
            -
            				context
         | 
| 23851 | 
            -
            			) || [] )[ 0 ];
         | 
| 24078 | 
            +
            			context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
         | 
| 24079 | 
            +
            				.replace( runescape, funescape ), context ) || [] )[ 0 ];
         | 
| 23852 24080 | 
             
            			if ( !context ) {
         | 
| 23853 24081 | 
             
            				return results;
         | 
| 23854 24082 |  | 
| @@ -23861,7 +24089,7 @@ function select( selector, context, results, seed ) { | |
| 23861 24089 | 
             
            		}
         | 
| 23862 24090 |  | 
| 23863 24091 | 
             
            		// Fetch a seed set for right-to-left matching
         | 
| 23864 | 
            -
            		i = matchExpr | 
| 24092 | 
            +
            		i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
         | 
| 23865 24093 | 
             
            		while ( i-- ) {
         | 
| 23866 24094 | 
             
            			token = tokens[ i ];
         | 
| 23867 24095 |  | 
| @@ -23874,8 +24102,8 @@ function select( selector, context, results, seed ) { | |
| 23874 24102 | 
             
            				// Search, expanding context for leading sibling combinators
         | 
| 23875 24103 | 
             
            				if ( ( seed = find(
         | 
| 23876 24104 | 
             
            					token.matches[ 0 ].replace( runescape, funescape ),
         | 
| 23877 | 
            -
            					rsibling.test( tokens[ 0 ].type ) &&
         | 
| 23878 | 
            -
            						 | 
| 24105 | 
            +
            					rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
         | 
| 24106 | 
            +
            						context
         | 
| 23879 24107 | 
             
            				) ) ) {
         | 
| 23880 24108 |  | 
| 23881 24109 | 
             
            					// If seed is empty or no tokens remain, we can return early
         | 
| @@ -23902,18 +24130,21 @@ function select( selector, context, results, seed ) { | |
| 23902 24130 | 
             
            		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
         | 
| 23903 24131 | 
             
            	);
         | 
| 23904 24132 | 
             
            	return results;
         | 
| 23905 | 
            -
            }
         | 
| 24133 | 
            +
            };
         | 
| 23906 24134 |  | 
| 23907 24135 | 
             
            // One-time assignments
         | 
| 23908 24136 |  | 
| 23909 | 
            -
            // Support: Android <=4.0 - 4.1+
         | 
| 23910 24137 | 
             
            // Sort stability
         | 
| 23911 24138 | 
             
            support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
         | 
| 23912 24139 |  | 
| 24140 | 
            +
            // Support: Chrome 14-35+
         | 
| 24141 | 
            +
            // Always assume duplicates if they aren't passed to the comparison function
         | 
| 24142 | 
            +
            support.detectDuplicates = !!hasDuplicate;
         | 
| 24143 | 
            +
             | 
| 23913 24144 | 
             
            // Initialize against the default document
         | 
| 23914 24145 | 
             
            setDocument();
         | 
| 23915 24146 |  | 
| 23916 | 
            -
            // Support:  | 
| 24147 | 
            +
            // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
         | 
| 23917 24148 | 
             
            // Detached nodes confoundingly follow *each other*
         | 
| 23918 24149 | 
             
            support.sortDetached = assert( function( el ) {
         | 
| 23919 24150 |  | 
| @@ -23921,29 +24152,68 @@ support.sortDetached = assert( function( el ) { | |
| 23921 24152 | 
             
            	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
         | 
| 23922 24153 | 
             
            } );
         | 
| 23923 24154 |  | 
| 23924 | 
            -
             | 
| 24155 | 
            +
            // Support: IE<8
         | 
| 24156 | 
            +
            // Prevent attribute/property "interpolation"
         | 
| 24157 | 
            +
            // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
         | 
| 24158 | 
            +
            if ( !assert( function( el ) {
         | 
| 24159 | 
            +
            	el.innerHTML = "<a href='#'></a>";
         | 
| 24160 | 
            +
            	return el.firstChild.getAttribute( "href" ) === "#";
         | 
| 24161 | 
            +
            } ) ) {
         | 
| 24162 | 
            +
            	addHandle( "type|href|height|width", function( elem, name, isXML ) {
         | 
| 24163 | 
            +
            		if ( !isXML ) {
         | 
| 24164 | 
            +
            			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
         | 
| 24165 | 
            +
            		}
         | 
| 24166 | 
            +
            	} );
         | 
| 24167 | 
            +
            }
         | 
| 23925 24168 |  | 
| 23926 | 
            -
            //  | 
| 23927 | 
            -
             | 
| 23928 | 
            -
             | 
| 24169 | 
            +
            // Support: IE<9
         | 
| 24170 | 
            +
            // Use defaultValue in place of getAttribute("value")
         | 
| 24171 | 
            +
            if ( !support.attributes || !assert( function( el ) {
         | 
| 24172 | 
            +
            	el.innerHTML = "<input/>";
         | 
| 24173 | 
            +
            	el.firstChild.setAttribute( "value", "" );
         | 
| 24174 | 
            +
            	return el.firstChild.getAttribute( "value" ) === "";
         | 
| 24175 | 
            +
            } ) ) {
         | 
| 24176 | 
            +
            	addHandle( "value", function( elem, _name, isXML ) {
         | 
| 24177 | 
            +
            		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
         | 
| 24178 | 
            +
            			return elem.defaultValue;
         | 
| 24179 | 
            +
            		}
         | 
| 24180 | 
            +
            	} );
         | 
| 24181 | 
            +
            }
         | 
| 23929 24182 |  | 
| 23930 | 
            -
            //  | 
| 23931 | 
            -
            //  | 
| 23932 | 
            -
             | 
| 23933 | 
            -
             | 
| 23934 | 
            -
             | 
| 23935 | 
            -
             | 
| 24183 | 
            +
            // Support: IE<9
         | 
| 24184 | 
            +
            // Use getAttributeNode to fetch booleans when getAttribute lies
         | 
| 24185 | 
            +
            if ( !assert( function( el ) {
         | 
| 24186 | 
            +
            	return el.getAttribute( "disabled" ) == null;
         | 
| 24187 | 
            +
            } ) ) {
         | 
| 24188 | 
            +
            	addHandle( booleans, function( elem, name, isXML ) {
         | 
| 24189 | 
            +
            		var val;
         | 
| 24190 | 
            +
            		if ( !isXML ) {
         | 
| 24191 | 
            +
            			return elem[ name ] === true ? name.toLowerCase() :
         | 
| 24192 | 
            +
            				( val = elem.getAttributeNode( name ) ) && val.specified ?
         | 
| 24193 | 
            +
            					val.value :
         | 
| 24194 | 
            +
            					null;
         | 
| 24195 | 
            +
            		}
         | 
| 24196 | 
            +
            	} );
         | 
| 24197 | 
            +
            }
         | 
| 23936 24198 |  | 
| 23937 | 
            -
             | 
| 23938 | 
            -
             | 
| 23939 | 
            -
             | 
| 23940 | 
            -
             | 
| 23941 | 
            -
             | 
| 23942 | 
            -
             | 
| 24199 | 
            +
            return Sizzle;
         | 
| 24200 | 
            +
             | 
| 24201 | 
            +
            } )( window );
         | 
| 24202 | 
            +
             | 
| 24203 | 
            +
             | 
| 24204 | 
            +
             | 
| 24205 | 
            +
            jQuery.find = Sizzle;
         | 
| 24206 | 
            +
            jQuery.expr = Sizzle.selectors;
         | 
| 24207 | 
            +
             | 
| 24208 | 
            +
            // Deprecated
         | 
| 24209 | 
            +
            jQuery.expr[ ":" ] = jQuery.expr.pseudos;
         | 
| 24210 | 
            +
            jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
         | 
| 24211 | 
            +
            jQuery.text = Sizzle.getText;
         | 
| 24212 | 
            +
            jQuery.isXMLDoc = Sizzle.isXML;
         | 
| 24213 | 
            +
            jQuery.contains = Sizzle.contains;
         | 
| 24214 | 
            +
            jQuery.escapeSelector = Sizzle.escape;
         | 
| 23943 24215 |  | 
| 23944 | 
            -
            	/* eslint-enable */
         | 
| 23945 24216 |  | 
| 23946 | 
            -
            } )();
         | 
| 23947 24217 |  | 
| 23948 24218 |  | 
| 23949 24219 | 
             
            var dir = function( elem, dir, until ) {
         | 
| @@ -23977,6 +24247,13 @@ var siblings = function( n, elem ) { | |
| 23977 24247 |  | 
| 23978 24248 | 
             
            var rneedsContext = jQuery.expr.match.needsContext;
         | 
| 23979 24249 |  | 
| 24250 | 
            +
             | 
| 24251 | 
            +
             | 
| 24252 | 
            +
            function nodeName( elem, name ) {
         | 
| 24253 | 
            +
             | 
| 24254 | 
            +
            	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
         | 
| 24255 | 
            +
             | 
| 24256 | 
            +
            }
         | 
| 23980 24257 | 
             
            var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
         | 
| 23981 24258 |  | 
| 23982 24259 |  | 
| @@ -24075,8 +24352,8 @@ jQuery.fn.extend( { | |
| 24075 24352 | 
             
            var rootjQuery,
         | 
| 24076 24353 |  | 
| 24077 24354 | 
             
            	// A simple way to check for HTML strings
         | 
| 24078 | 
            -
            	// Prioritize #id over <tag> to avoid XSS via location.hash ( | 
| 24079 | 
            -
            	// Strict HTML recognition ( | 
| 24355 | 
            +
            	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
         | 
| 24356 | 
            +
            	// Strict HTML recognition (#11290: must start with <)
         | 
| 24080 24357 | 
             
            	// Shortcut simple #id case for speed
         | 
| 24081 24358 | 
             
            	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
         | 
| 24082 24359 |  | 
| @@ -24227,7 +24504,7 @@ jQuery.fn.extend( { | |
| 24227 24504 | 
             
            					if ( cur.nodeType < 11 && ( targets ?
         | 
| 24228 24505 | 
             
            						targets.index( cur ) > -1 :
         | 
| 24229 24506 |  | 
| 24230 | 
            -
            						// Don't pass non-elements to  | 
| 24507 | 
            +
            						// Don't pass non-elements to Sizzle
         | 
| 24231 24508 | 
             
            						cur.nodeType === 1 &&
         | 
| 24232 24509 | 
             
            							jQuery.find.matchesSelector( cur, selectors ) ) ) {
         | 
| 24233 24510 |  | 
| @@ -24782,7 +25059,7 @@ jQuery.extend( { | |
| 24782 25059 |  | 
| 24783 25060 | 
             
            											if ( jQuery.Deferred.exceptionHook ) {
         | 
| 24784 25061 | 
             
            												jQuery.Deferred.exceptionHook( e,
         | 
| 24785 | 
            -
            													process. | 
| 25062 | 
            +
            													process.stackTrace );
         | 
| 24786 25063 | 
             
            											}
         | 
| 24787 25064 |  | 
| 24788 25065 | 
             
            											// Support: Promises/A+ section 2.3.3.3.4.1
         | 
| @@ -24810,17 +25087,10 @@ jQuery.extend( { | |
| 24810 25087 | 
             
            								process();
         | 
| 24811 25088 | 
             
            							} else {
         | 
| 24812 25089 |  | 
| 24813 | 
            -
            								// Call an optional hook to record the  | 
| 25090 | 
            +
            								// Call an optional hook to record the stack, in case of exception
         | 
| 24814 25091 | 
             
            								// since it's otherwise lost when execution goes async
         | 
| 24815 | 
            -
            								if ( jQuery.Deferred. | 
| 24816 | 
            -
            									process. | 
| 24817 | 
            -
             | 
| 24818 | 
            -
            								// The deprecated alias of the above. While the name suggests
         | 
| 24819 | 
            -
            								// returning the stack, not an error instance, jQuery just passes
         | 
| 24820 | 
            -
            								// it directly to `console.warn` so both will work; an instance
         | 
| 24821 | 
            -
            								// just better cooperates with source maps.
         | 
| 24822 | 
            -
            								} else if ( jQuery.Deferred.getStackHook ) {
         | 
| 24823 | 
            -
            									process.error = jQuery.Deferred.getStackHook();
         | 
| 25092 | 
            +
            								if ( jQuery.Deferred.getStackHook ) {
         | 
| 25093 | 
            +
            									process.stackTrace = jQuery.Deferred.getStackHook();
         | 
| 24824 25094 | 
             
            								}
         | 
| 24825 25095 | 
             
            								window.setTimeout( process );
         | 
| 24826 25096 | 
             
            							}
         | 
| @@ -24995,16 +25265,12 @@ jQuery.extend( { | |
| 24995 25265 | 
             
            // warn about them ASAP rather than swallowing them by default.
         | 
| 24996 25266 | 
             
            var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
         | 
| 24997 25267 |  | 
| 24998 | 
            -
             | 
| 24999 | 
            -
            // captured before the async barrier to get the original error cause
         | 
| 25000 | 
            -
            // which may otherwise be hidden.
         | 
| 25001 | 
            -
            jQuery.Deferred.exceptionHook = function( error, asyncError ) {
         | 
| 25268 | 
            +
            jQuery.Deferred.exceptionHook = function( error, stack ) {
         | 
| 25002 25269 |  | 
| 25003 25270 | 
             
            	// Support: IE 8 - 9 only
         | 
| 25004 25271 | 
             
            	// Console exists when dev tools are open, which can happen at any time
         | 
| 25005 25272 | 
             
            	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
         | 
| 25006 | 
            -
            		window.console.warn( "jQuery.Deferred exception: " + error.message,
         | 
| 25007 | 
            -
            			error.stack, asyncError );
         | 
| 25273 | 
            +
            		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
         | 
| 25008 25274 | 
             
            	}
         | 
| 25009 25275 | 
             
            };
         | 
| 25010 25276 |  | 
| @@ -25044,7 +25310,7 @@ jQuery.extend( { | |
| 25044 25310 | 
             
            	isReady: false,
         | 
| 25045 25311 |  | 
| 25046 25312 | 
             
            	// A counter to track how many items to wait for before
         | 
| 25047 | 
            -
            	// the ready event fires. See  | 
| 25313 | 
            +
            	// the ready event fires. See #6781
         | 
| 25048 25314 | 
             
            	readyWait: 1,
         | 
| 25049 25315 |  | 
| 25050 25316 | 
             
            	// Handle when the DOM is ready
         | 
| @@ -25172,7 +25438,7 @@ function fcamelCase( _all, letter ) { | |
| 25172 25438 |  | 
| 25173 25439 | 
             
            // Convert dashed to camelCase; used by the css and data modules
         | 
| 25174 25440 | 
             
            // Support: IE <=9 - 11, Edge 12 - 15
         | 
| 25175 | 
            -
            // Microsoft forgot to hump their vendor prefix ( | 
| 25441 | 
            +
            // Microsoft forgot to hump their vendor prefix (#9572)
         | 
| 25176 25442 | 
             
            function camelCase( string ) {
         | 
| 25177 25443 | 
             
            	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
         | 
| 25178 25444 | 
             
            }
         | 
| @@ -25208,7 +25474,7 @@ Data.prototype = { | |
| 25208 25474 | 
             
            			value = {};
         | 
| 25209 25475 |  | 
| 25210 25476 | 
             
            			// We can accept data for non-element nodes in modern browsers,
         | 
| 25211 | 
            -
            			// but we should not, see  | 
| 25477 | 
            +
            			// but we should not, see #8335.
         | 
| 25212 25478 | 
             
            			// Always return an empty object.
         | 
| 25213 25479 | 
             
            			if ( acceptData( owner ) ) {
         | 
| 25214 25480 |  | 
| @@ -25447,7 +25713,7 @@ jQuery.fn.extend( { | |
| 25447 25713 | 
             
            					while ( i-- ) {
         | 
| 25448 25714 |  | 
| 25449 25715 | 
             
            						// Support: IE 11 only
         | 
| 25450 | 
            -
            						// The attrs elements can be null ( | 
| 25716 | 
            +
            						// The attrs elements can be null (#14894)
         | 
| 25451 25717 | 
             
            						if ( attrs[ i ] ) {
         | 
| 25452 25718 | 
             
            							name = attrs[ i ].name;
         | 
| 25453 25719 | 
             
            							if ( name.indexOf( "data-" ) === 0 ) {
         | 
| @@ -25870,9 +26136,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); | |
| 25870 26136 | 
             
            		input = document.createElement( "input" );
         | 
| 25871 26137 |  | 
| 25872 26138 | 
             
            	// Support: Android 4.0 - 4.3 only
         | 
| 25873 | 
            -
            	// Check state lost if the name is set ( | 
| 26139 | 
            +
            	// Check state lost if the name is set (#11217)
         | 
| 25874 26140 | 
             
            	// Support: Windows Web Apps (WWA)
         | 
| 25875 | 
            -
            	// `name` and `type` must use .setAttribute for WWA ( | 
| 26141 | 
            +
            	// `name` and `type` must use .setAttribute for WWA (#14901)
         | 
| 25876 26142 | 
             
            	input.setAttribute( "type", "radio" );
         | 
| 25877 26143 | 
             
            	input.setAttribute( "checked", "checked" );
         | 
| 25878 26144 | 
             
            	input.setAttribute( "name", "t" );
         | 
| @@ -25896,7 +26162,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); | |
| 25896 26162 | 
             
            } )();
         | 
| 25897 26163 |  | 
| 25898 26164 |  | 
| 25899 | 
            -
            // We have to close these tags to support XHTML ( | 
| 26165 | 
            +
            // We have to close these tags to support XHTML (#13200)
         | 
| 25900 26166 | 
             
            var wrapMap = {
         | 
| 25901 26167 |  | 
| 25902 26168 | 
             
            	// XHTML parsers do not magically insert elements in the
         | 
| @@ -25922,7 +26188,7 @@ if ( !support.option ) { | |
| 25922 26188 | 
             
            function getAll( context, tag ) {
         | 
| 25923 26189 |  | 
| 25924 26190 | 
             
            	// Support: IE <=9 - 11 only
         | 
| 25925 | 
            -
            	// Use typeof to avoid zero-argument method invocation on host objects ( | 
| 26191 | 
            +
            	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
         | 
| 25926 26192 | 
             
            	var ret;
         | 
| 25927 26193 |  | 
| 25928 26194 | 
             
            	if ( typeof context.getElementsByTagName !== "undefined" ) {
         | 
| @@ -26005,7 +26271,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { | |
| 26005 26271 | 
             
            				// Remember the top-level container
         | 
| 26006 26272 | 
             
            				tmp = fragment.firstChild;
         | 
| 26007 26273 |  | 
| 26008 | 
            -
            				// Ensure the created nodes are orphaned ( | 
| 26274 | 
            +
            				// Ensure the created nodes are orphaned (#12392)
         | 
| 26009 26275 | 
             
            				tmp.textContent = "";
         | 
| 26010 26276 | 
             
            			}
         | 
| 26011 26277 | 
             
            		}
         | 
| @@ -26060,6 +26326,25 @@ function returnFalse() { | |
| 26060 26326 | 
             
            	return false;
         | 
| 26061 26327 | 
             
            }
         | 
| 26062 26328 |  | 
| 26329 | 
            +
            // Support: IE <=9 - 11+
         | 
| 26330 | 
            +
            // focus() and blur() are asynchronous, except when they are no-op.
         | 
| 26331 | 
            +
            // So expect focus to be synchronous when the element is already active,
         | 
| 26332 | 
            +
            // and blur to be synchronous when the element is not already active.
         | 
| 26333 | 
            +
            // (focus and blur are always synchronous in other supported browsers,
         | 
| 26334 | 
            +
            // this just defines when we can count on it).
         | 
| 26335 | 
            +
            function expectSync( elem, type ) {
         | 
| 26336 | 
            +
            	return ( elem === safeActiveElement() ) === ( type === "focus" );
         | 
| 26337 | 
            +
            }
         | 
| 26338 | 
            +
             | 
| 26339 | 
            +
            // Support: IE <=9 only
         | 
| 26340 | 
            +
            // Accessing document.activeElement can throw unexpectedly
         | 
| 26341 | 
            +
            // https://bugs.jquery.com/ticket/13393
         | 
| 26342 | 
            +
            function safeActiveElement() {
         | 
| 26343 | 
            +
            	try {
         | 
| 26344 | 
            +
            		return document.activeElement;
         | 
| 26345 | 
            +
            	} catch ( err ) { }
         | 
| 26346 | 
            +
            }
         | 
| 26347 | 
            +
             | 
| 26063 26348 | 
             
            function on( elem, types, selector, data, fn, one ) {
         | 
| 26064 26349 | 
             
            	var origFn, type;
         | 
| 26065 26350 |  | 
| @@ -26407,15 +26692,15 @@ jQuery.event = { | |
| 26407 26692 |  | 
| 26408 26693 | 
             
            			for ( ; cur !== this; cur = cur.parentNode || this ) {
         | 
| 26409 26694 |  | 
| 26410 | 
            -
            				// Don't check non-elements ( | 
| 26411 | 
            -
            				// Don't process clicks on disabled elements ( | 
| 26695 | 
            +
            				// Don't check non-elements (#13208)
         | 
| 26696 | 
            +
            				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
         | 
| 26412 26697 | 
             
            				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
         | 
| 26413 26698 | 
             
            					matchedHandlers = [];
         | 
| 26414 26699 | 
             
            					matchedSelectors = {};
         | 
| 26415 26700 | 
             
            					for ( i = 0; i < delegateCount; i++ ) {
         | 
| 26416 26701 | 
             
            						handleObj = handlers[ i ];
         | 
| 26417 26702 |  | 
| 26418 | 
            -
            						// Don't conflict with Object.prototype properties ( | 
| 26703 | 
            +
            						// Don't conflict with Object.prototype properties (#13203)
         | 
| 26419 26704 | 
             
            						sel = handleObj.selector + " ";
         | 
| 26420 26705 |  | 
| 26421 26706 | 
             
            						if ( matchedSelectors[ sel ] === undefined ) {
         | 
| @@ -26497,7 +26782,7 @@ jQuery.event = { | |
| 26497 26782 | 
             
            					el.click && nodeName( el, "input" ) ) {
         | 
| 26498 26783 |  | 
| 26499 26784 | 
             
            					// dataPriv.set( el, "click", ... )
         | 
| 26500 | 
            -
            					leverageNative( el, "click",  | 
| 26785 | 
            +
            					leverageNative( el, "click", returnTrue );
         | 
| 26501 26786 | 
             
            				}
         | 
| 26502 26787 |  | 
| 26503 26788 | 
             
            				// Return false to allow normal processing in the caller
         | 
| @@ -26548,10 +26833,10 @@ jQuery.event = { | |
| 26548 26833 | 
             
            // synthetic events by interrupting progress until reinvoked in response to
         | 
| 26549 26834 | 
             
            // *native* events that it fires directly, ensuring that state changes have
         | 
| 26550 26835 | 
             
            // already occurred before other listeners are invoked.
         | 
| 26551 | 
            -
            function leverageNative( el, type,  | 
| 26836 | 
            +
            function leverageNative( el, type, expectSync ) {
         | 
| 26552 26837 |  | 
| 26553 | 
            -
            	// Missing  | 
| 26554 | 
            -
            	if ( ! | 
| 26838 | 
            +
            	// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
         | 
| 26839 | 
            +
            	if ( !expectSync ) {
         | 
| 26555 26840 | 
             
            		if ( dataPriv.get( el, type ) === undefined ) {
         | 
| 26556 26841 | 
             
            			jQuery.event.add( el, type, returnTrue );
         | 
| 26557 26842 | 
             
            		}
         | 
| @@ -26563,13 +26848,15 @@ function leverageNative( el, type, isSetup ) { | |
| 26563 26848 | 
             
            	jQuery.event.add( el, type, {
         | 
| 26564 26849 | 
             
            		namespace: false,
         | 
| 26565 26850 | 
             
            		handler: function( event ) {
         | 
| 26566 | 
            -
            			var result,
         | 
| 26851 | 
            +
            			var notAsync, result,
         | 
| 26567 26852 | 
             
            				saved = dataPriv.get( this, type );
         | 
| 26568 26853 |  | 
| 26569 26854 | 
             
            			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
         | 
| 26570 26855 |  | 
| 26571 26856 | 
             
            				// Interrupt processing of the outer synthetic .trigger()ed event
         | 
| 26572 | 
            -
            				 | 
| 26857 | 
            +
            				// Saved data should be false in such cases, but might be a leftover capture object
         | 
| 26858 | 
            +
            				// from an async native handler (gh-4350)
         | 
| 26859 | 
            +
            				if ( !saved.length ) {
         | 
| 26573 26860 |  | 
| 26574 26861 | 
             
            					// Store arguments for use when handling the inner native event
         | 
| 26575 26862 | 
             
            					// There will always be at least one argument (an event object), so this array
         | 
| @@ -26578,22 +26865,33 @@ function leverageNative( el, type, isSetup ) { | |
| 26578 26865 | 
             
            					dataPriv.set( this, type, saved );
         | 
| 26579 26866 |  | 
| 26580 26867 | 
             
            					// Trigger the native event and capture its result
         | 
| 26868 | 
            +
            					// Support: IE <=9 - 11+
         | 
| 26869 | 
            +
            					// focus() and blur() are asynchronous
         | 
| 26870 | 
            +
            					notAsync = expectSync( this, type );
         | 
| 26581 26871 | 
             
            					this[ type ]();
         | 
| 26582 26872 | 
             
            					result = dataPriv.get( this, type );
         | 
| 26583 | 
            -
            					 | 
| 26584 | 
            -
             | 
| 26873 | 
            +
            					if ( saved !== result || notAsync ) {
         | 
| 26874 | 
            +
            						dataPriv.set( this, type, false );
         | 
| 26875 | 
            +
            					} else {
         | 
| 26876 | 
            +
            						result = {};
         | 
| 26877 | 
            +
            					}
         | 
| 26585 26878 | 
             
            					if ( saved !== result ) {
         | 
| 26586 26879 |  | 
| 26587 26880 | 
             
            						// Cancel the outer synthetic event
         | 
| 26588 26881 | 
             
            						event.stopImmediatePropagation();
         | 
| 26589 26882 | 
             
            						event.preventDefault();
         | 
| 26590 26883 |  | 
| 26591 | 
            -
            						 | 
| 26884 | 
            +
            						// Support: Chrome 86+
         | 
| 26885 | 
            +
            						// In Chrome, if an element having a focusout handler is blurred by
         | 
| 26886 | 
            +
            						// clicking outside of it, it invokes the handler synchronously. If
         | 
| 26887 | 
            +
            						// that handler calls `.remove()` on the element, the data is cleared,
         | 
| 26888 | 
            +
            						// leaving `result` undefined. We need to guard against this.
         | 
| 26889 | 
            +
            						return result && result.value;
         | 
| 26592 26890 | 
             
            					}
         | 
| 26593 26891 |  | 
| 26594 26892 | 
             
            				// If this is an inner synthetic event for an event with a bubbling surrogate
         | 
| 26595 | 
            -
            				// (focus or blur), assume that the surrogate already propagated from triggering
         | 
| 26596 | 
            -
            				//  | 
| 26893 | 
            +
            				// (focus or blur), assume that the surrogate already propagated from triggering the
         | 
| 26894 | 
            +
            				// native event and prevent that from happening again here.
         | 
| 26597 26895 | 
             
            				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
         | 
| 26598 26896 | 
             
            				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
         | 
| 26599 26897 | 
             
            				// less bad than duplication.
         | 
| @@ -26603,25 +26901,22 @@ function leverageNative( el, type, isSetup ) { | |
| 26603 26901 |  | 
| 26604 26902 | 
             
            			// If this is a native event triggered above, everything is now in order
         | 
| 26605 26903 | 
             
            			// Fire an inner synthetic event with the original arguments
         | 
| 26606 | 
            -
            			} else if ( saved ) {
         | 
| 26904 | 
            +
            			} else if ( saved.length ) {
         | 
| 26607 26905 |  | 
| 26608 26906 | 
             
            				// ...and capture the result
         | 
| 26609 | 
            -
            				dataPriv.set( this, type,  | 
| 26610 | 
            -
            					 | 
| 26611 | 
            -
             | 
| 26612 | 
            -
             | 
| 26613 | 
            -
             | 
| 26614 | 
            -
             | 
| 26615 | 
            -
             | 
| 26616 | 
            -
             | 
| 26617 | 
            -
             | 
| 26618 | 
            -
            				 | 
| 26619 | 
            -
             | 
| 26620 | 
            -
            				//  | 
| 26621 | 
            -
            				 | 
| 26622 | 
            -
            				// and radios. We accept this limitation.
         | 
| 26623 | 
            -
            				event.stopPropagation();
         | 
| 26624 | 
            -
            				event.isImmediatePropagationStopped = returnTrue;
         | 
| 26907 | 
            +
            				dataPriv.set( this, type, {
         | 
| 26908 | 
            +
            					value: jQuery.event.trigger(
         | 
| 26909 | 
            +
             | 
| 26910 | 
            +
            						// Support: IE <=9 - 11+
         | 
| 26911 | 
            +
            						// Extend with the prototype to reset the above stopImmediatePropagation()
         | 
| 26912 | 
            +
            						jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
         | 
| 26913 | 
            +
            						saved.slice( 1 ),
         | 
| 26914 | 
            +
            						this
         | 
| 26915 | 
            +
            					)
         | 
| 26916 | 
            +
            				} );
         | 
| 26917 | 
            +
             | 
| 26918 | 
            +
            				// Abort handling of the native event
         | 
| 26919 | 
            +
            				event.stopImmediatePropagation();
         | 
| 26625 26920 | 
             
            			}
         | 
| 26626 26921 | 
             
            		}
         | 
| 26627 26922 | 
             
            	} );
         | 
| @@ -26659,7 +26954,7 @@ jQuery.Event = function( src, props ) { | |
| 26659 26954 |  | 
| 26660 26955 | 
             
            		// Create target properties
         | 
| 26661 26956 | 
             
            		// Support: Safari <=6 - 7 only
         | 
| 26662 | 
            -
            		// Target should not be a text node ( | 
| 26957 | 
            +
            		// Target should not be a text node (#504, #13143)
         | 
| 26663 26958 | 
             
            		this.target = ( src.target && src.target.nodeType === 3 ) ?
         | 
| 26664 26959 | 
             
            			src.target.parentNode :
         | 
| 26665 26960 | 
             
            			src.target;
         | 
| @@ -26760,73 +27055,18 @@ jQuery.each( { | |
| 26760 27055 | 
             
            }, jQuery.event.addProp );
         | 
| 26761 27056 |  | 
| 26762 27057 | 
             
            jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
         | 
| 26763 | 
            -
             | 
| 26764 | 
            -
            	function focusMappedHandler( nativeEvent ) {
         | 
| 26765 | 
            -
            		if ( document.documentMode ) {
         | 
| 26766 | 
            -
             | 
| 26767 | 
            -
            			// Support: IE 11+
         | 
| 26768 | 
            -
            			// Attach a single focusin/focusout handler on the document while someone wants
         | 
| 26769 | 
            -
            			// focus/blur. This is because the former are synchronous in IE while the latter
         | 
| 26770 | 
            -
            			// are async. In other browsers, all those handlers are invoked synchronously.
         | 
| 26771 | 
            -
             | 
| 26772 | 
            -
            			// `handle` from private data would already wrap the event, but we need
         | 
| 26773 | 
            -
            			// to change the `type` here.
         | 
| 26774 | 
            -
            			var handle = dataPriv.get( this, "handle" ),
         | 
| 26775 | 
            -
            				event = jQuery.event.fix( nativeEvent );
         | 
| 26776 | 
            -
            			event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
         | 
| 26777 | 
            -
            			event.isSimulated = true;
         | 
| 26778 | 
            -
             | 
| 26779 | 
            -
            			// First, handle focusin/focusout
         | 
| 26780 | 
            -
            			handle( nativeEvent );
         | 
| 26781 | 
            -
             | 
| 26782 | 
            -
            			// ...then, handle focus/blur
         | 
| 26783 | 
            -
            			//
         | 
| 26784 | 
            -
            			// focus/blur don't bubble while focusin/focusout do; simulate the former by only
         | 
| 26785 | 
            -
            			// invoking the handler at the lower level.
         | 
| 26786 | 
            -
            			if ( event.target === event.currentTarget ) {
         | 
| 26787 | 
            -
             | 
| 26788 | 
            -
            				// The setup part calls `leverageNative`, which, in turn, calls
         | 
| 26789 | 
            -
            				// `jQuery.event.add`, so event handle will already have been set
         | 
| 26790 | 
            -
            				// by this point.
         | 
| 26791 | 
            -
            				handle( event );
         | 
| 26792 | 
            -
            			}
         | 
| 26793 | 
            -
            		} else {
         | 
| 26794 | 
            -
             | 
| 26795 | 
            -
            			// For non-IE browsers, attach a single capturing handler on the document
         | 
| 26796 | 
            -
            			// while someone wants focusin/focusout.
         | 
| 26797 | 
            -
            			jQuery.event.simulate( delegateType, nativeEvent.target,
         | 
| 26798 | 
            -
            				jQuery.event.fix( nativeEvent ) );
         | 
| 26799 | 
            -
            		}
         | 
| 26800 | 
            -
            	}
         | 
| 26801 | 
            -
             | 
| 26802 27058 | 
             
            	jQuery.event.special[ type ] = {
         | 
| 26803 27059 |  | 
| 26804 27060 | 
             
            		// Utilize native event if possible so blur/focus sequence is correct
         | 
| 26805 27061 | 
             
            		setup: function() {
         | 
| 26806 27062 |  | 
| 26807 | 
            -
            			var attaches;
         | 
| 26808 | 
            -
             | 
| 26809 27063 | 
             
            			// Claim the first handler
         | 
| 26810 27064 | 
             
            			// dataPriv.set( this, "focus", ... )
         | 
| 26811 27065 | 
             
            			// dataPriv.set( this, "blur", ... )
         | 
| 26812 | 
            -
            			leverageNative( this, type,  | 
| 26813 | 
            -
             | 
| 26814 | 
            -
            			if ( document.documentMode ) {
         | 
| 26815 | 
            -
             | 
| 26816 | 
            -
            				// Support: IE 9 - 11+
         | 
| 26817 | 
            -
            				// We use the same native handler for focusin & focus (and focusout & blur)
         | 
| 26818 | 
            -
            				// so we need to coordinate setup & teardown parts between those events.
         | 
| 26819 | 
            -
            				// Use `delegateType` as the key as `type` is already used by `leverageNative`.
         | 
| 26820 | 
            -
            				attaches = dataPriv.get( this, delegateType );
         | 
| 26821 | 
            -
            				if ( !attaches ) {
         | 
| 26822 | 
            -
            					this.addEventListener( delegateType, focusMappedHandler );
         | 
| 26823 | 
            -
            				}
         | 
| 26824 | 
            -
            				dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
         | 
| 26825 | 
            -
            			} else {
         | 
| 27066 | 
            +
            			leverageNative( this, type, expectSync );
         | 
| 26826 27067 |  | 
| 26827 | 
            -
             | 
| 26828 | 
            -
             | 
| 26829 | 
            -
            			}
         | 
| 27068 | 
            +
            			// Return false to allow normal processing in the caller
         | 
| 27069 | 
            +
            			return false;
         | 
| 26830 27070 | 
             
            		},
         | 
| 26831 27071 | 
             
            		trigger: function() {
         | 
| 26832 27072 |  | 
| @@ -26837,84 +27077,14 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp | |
| 26837 27077 | 
             
            			return true;
         | 
| 26838 27078 | 
             
            		},
         | 
| 26839 27079 |  | 
| 26840 | 
            -
            		 | 
| 26841 | 
            -
             | 
| 26842 | 
            -
             | 
| 26843 | 
            -
            			 | 
| 26844 | 
            -
            				attaches = dataPriv.get( this, delegateType ) - 1;
         | 
| 26845 | 
            -
            				if ( !attaches ) {
         | 
| 26846 | 
            -
            					this.removeEventListener( delegateType, focusMappedHandler );
         | 
| 26847 | 
            -
            					dataPriv.remove( this, delegateType );
         | 
| 26848 | 
            -
            				} else {
         | 
| 26849 | 
            -
            					dataPriv.set( this, delegateType, attaches );
         | 
| 26850 | 
            -
            				}
         | 
| 26851 | 
            -
            			} else {
         | 
| 26852 | 
            -
             | 
| 26853 | 
            -
            				// Return false to indicate standard teardown should be applied
         | 
| 26854 | 
            -
            				return false;
         | 
| 26855 | 
            -
            			}
         | 
| 26856 | 
            -
            		},
         | 
| 26857 | 
            -
             | 
| 26858 | 
            -
            		// Suppress native focus or blur if we're currently inside
         | 
| 26859 | 
            -
            		// a leveraged native-event stack
         | 
| 26860 | 
            -
            		_default: function( event ) {
         | 
| 26861 | 
            -
            			return dataPriv.get( event.target, type );
         | 
| 27080 | 
            +
            		// Suppress native focus or blur as it's already being fired
         | 
| 27081 | 
            +
            		// in leverageNative.
         | 
| 27082 | 
            +
            		_default: function() {
         | 
| 27083 | 
            +
            			return true;
         | 
| 26862 27084 | 
             
            		},
         | 
| 26863 27085 |  | 
| 26864 27086 | 
             
            		delegateType: delegateType
         | 
| 26865 27087 | 
             
            	};
         | 
| 26866 | 
            -
             | 
| 26867 | 
            -
            	// Support: Firefox <=44
         | 
| 26868 | 
            -
            	// Firefox doesn't have focus(in | out) events
         | 
| 26869 | 
            -
            	// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
         | 
| 26870 | 
            -
            	//
         | 
| 26871 | 
            -
            	// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
         | 
| 26872 | 
            -
            	// focus(in | out) events fire after focus & blur events,
         | 
| 26873 | 
            -
            	// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
         | 
| 26874 | 
            -
            	// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
         | 
| 26875 | 
            -
            	//
         | 
| 26876 | 
            -
            	// Support: IE 9 - 11+
         | 
| 26877 | 
            -
            	// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
         | 
| 26878 | 
            -
            	// attach a single handler for both events in IE.
         | 
| 26879 | 
            -
            	jQuery.event.special[ delegateType ] = {
         | 
| 26880 | 
            -
            		setup: function() {
         | 
| 26881 | 
            -
             | 
| 26882 | 
            -
            			// Handle: regular nodes (via `this.ownerDocument`), window
         | 
| 26883 | 
            -
            			// (via `this.document`) & document (via `this`).
         | 
| 26884 | 
            -
            			var doc = this.ownerDocument || this.document || this,
         | 
| 26885 | 
            -
            				dataHolder = document.documentMode ? this : doc,
         | 
| 26886 | 
            -
            				attaches = dataPriv.get( dataHolder, delegateType );
         | 
| 26887 | 
            -
             | 
| 26888 | 
            -
            			// Support: IE 9 - 11+
         | 
| 26889 | 
            -
            			// We use the same native handler for focusin & focus (and focusout & blur)
         | 
| 26890 | 
            -
            			// so we need to coordinate setup & teardown parts between those events.
         | 
| 26891 | 
            -
            			// Use `delegateType` as the key as `type` is already used by `leverageNative`.
         | 
| 26892 | 
            -
            			if ( !attaches ) {
         | 
| 26893 | 
            -
            				if ( document.documentMode ) {
         | 
| 26894 | 
            -
            					this.addEventListener( delegateType, focusMappedHandler );
         | 
| 26895 | 
            -
            				} else {
         | 
| 26896 | 
            -
            					doc.addEventListener( type, focusMappedHandler, true );
         | 
| 26897 | 
            -
            				}
         | 
| 26898 | 
            -
            			}
         | 
| 26899 | 
            -
            			dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
         | 
| 26900 | 
            -
            		},
         | 
| 26901 | 
            -
            		teardown: function() {
         | 
| 26902 | 
            -
            			var doc = this.ownerDocument || this.document || this,
         | 
| 26903 | 
            -
            				dataHolder = document.documentMode ? this : doc,
         | 
| 26904 | 
            -
            				attaches = dataPriv.get( dataHolder, delegateType ) - 1;
         | 
| 26905 | 
            -
             | 
| 26906 | 
            -
            			if ( !attaches ) {
         | 
| 26907 | 
            -
            				if ( document.documentMode ) {
         | 
| 26908 | 
            -
            					this.removeEventListener( delegateType, focusMappedHandler );
         | 
| 26909 | 
            -
            				} else {
         | 
| 26910 | 
            -
            					doc.removeEventListener( type, focusMappedHandler, true );
         | 
| 26911 | 
            -
            				}
         | 
| 26912 | 
            -
            				dataPriv.remove( dataHolder, delegateType );
         | 
| 26913 | 
            -
            			} else {
         | 
| 26914 | 
            -
            				dataPriv.set( dataHolder, delegateType, attaches );
         | 
| 26915 | 
            -
            			}
         | 
| 26916 | 
            -
            		}
         | 
| 26917 | 
            -
            	};
         | 
| 26918 27088 | 
             
            } );
         | 
| 26919 27089 |  | 
| 26920 27090 | 
             
            // Create mouseenter/leave events using mouseover/out and event-time checks
         | 
| @@ -27009,8 +27179,7 @@ var | |
| 27009 27179 |  | 
| 27010 27180 | 
             
            	// checked="checked" or checked
         | 
| 27011 27181 | 
             
            	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
         | 
| 27012 | 
            -
             | 
| 27013 | 
            -
            	rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
         | 
| 27182 | 
            +
            	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
         | 
| 27014 27183 |  | 
| 27015 27184 | 
             
            // Prefer a tbody over its parent table for containing new rows
         | 
| 27016 27185 | 
             
            function manipulationTarget( elem, content ) {
         | 
| @@ -27124,7 +27293,7 @@ function domManip( collection, args, callback, ignored ) { | |
| 27124 27293 |  | 
| 27125 27294 | 
             
            			// Use the original fragment for the last item
         | 
| 27126 27295 | 
             
            			// instead of the first because it can end up
         | 
| 27127 | 
            -
            			// being emptied incorrectly in certain situations ( | 
| 27296 | 
            +
            			// being emptied incorrectly in certain situations (#8070).
         | 
| 27128 27297 | 
             
            			for ( ; i < l; i++ ) {
         | 
| 27129 27298 | 
             
            				node = fragment;
         | 
| 27130 27299 |  | 
| @@ -27146,7 +27315,7 @@ function domManip( collection, args, callback, ignored ) { | |
| 27146 27315 | 
             
            			if ( hasScripts ) {
         | 
| 27147 27316 | 
             
            				doc = scripts[ scripts.length - 1 ].ownerDocument;
         | 
| 27148 27317 |  | 
| 27149 | 
            -
            				//  | 
| 27318 | 
            +
            				// Reenable scripts
         | 
| 27150 27319 | 
             
            				jQuery.map( scripts, restoreScript );
         | 
| 27151 27320 |  | 
| 27152 27321 | 
             
            				// Evaluate executable scripts on first document insertion
         | 
| @@ -27165,12 +27334,6 @@ function domManip( collection, args, callback, ignored ) { | |
| 27165 27334 | 
             
            								}, doc );
         | 
| 27166 27335 | 
             
            							}
         | 
| 27167 27336 | 
             
            						} else {
         | 
| 27168 | 
            -
             | 
| 27169 | 
            -
            							// Unwrap a CDATA section containing script contents. This shouldn't be
         | 
| 27170 | 
            -
            							// needed as in XML documents they're already not visible when
         | 
| 27171 | 
            -
            							// inspecting element contents and in HTML documents they have no
         | 
| 27172 | 
            -
            							// meaning but we're preserving that logic for backwards compatibility.
         | 
| 27173 | 
            -
            							// This will be removed completely in 4.0. See gh-4904.
         | 
| 27174 27337 | 
             
            							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
         | 
| 27175 27338 | 
             
            						}
         | 
| 27176 27339 | 
             
            					}
         | 
| @@ -27217,8 +27380,7 @@ jQuery.extend( { | |
| 27217 27380 | 
             
            		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
         | 
| 27218 27381 | 
             
            				!jQuery.isXMLDoc( elem ) ) {
         | 
| 27219 27382 |  | 
| 27220 | 
            -
            			// We eschew  | 
| 27221 | 
            -
            			// https://jsperf.com/getall-vs-sizzle/2
         | 
| 27383 | 
            +
            			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
         | 
| 27222 27384 | 
             
            			destElements = getAll( clone );
         | 
| 27223 27385 | 
             
            			srcElements = getAll( elem );
         | 
| 27224 27386 |  | 
| @@ -27454,12 +27616,9 @@ jQuery.each( { | |
| 27454 27616 | 
             
            } );
         | 
| 27455 27617 | 
             
            var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
         | 
| 27456 27618 |  | 
| 27457 | 
            -
            var rcustomProp = /^--/;
         | 
| 27458 | 
            -
             | 
| 27459 | 
            -
             | 
| 27460 27619 | 
             
            var getStyles = function( elem ) {
         | 
| 27461 27620 |  | 
| 27462 | 
            -
            		// Support: IE <=11 only, Firefox <=30 ( | 
| 27621 | 
            +
            		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
         | 
| 27463 27622 | 
             
            		// IE throws on elements created in popups
         | 
| 27464 27623 | 
             
            		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
         | 
| 27465 27624 | 
             
            		var view = elem.ownerDocument.defaultView;
         | 
| @@ -27559,7 +27718,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | |
| 27559 27718 | 
             
            	}
         | 
| 27560 27719 |  | 
| 27561 27720 | 
             
            	// Support: IE <=9 - 11 only
         | 
| 27562 | 
            -
            	// Style of cloned element affects source element cloned ( | 
| 27721 | 
            +
            	// Style of cloned element affects source element cloned (#8908)
         | 
| 27563 27722 | 
             
            	div.style.backgroundClip = "content-box";
         | 
| 27564 27723 | 
             
            	div.cloneNode( true ).style.backgroundClip = "";
         | 
| 27565 27724 | 
             
            	support.clearCloneStyle = div.style.backgroundClip === "content-box";
         | 
| @@ -27603,7 +27762,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | |
| 27603 27762 | 
             
            				trChild = document.createElement( "div" );
         | 
| 27604 27763 |  | 
| 27605 27764 | 
             
            				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
         | 
| 27606 | 
            -
            				tr.style.cssText = " | 
| 27765 | 
            +
            				tr.style.cssText = "border:1px solid";
         | 
| 27607 27766 |  | 
| 27608 27767 | 
             
            				// Support: Chrome 86+
         | 
| 27609 27768 | 
             
            				// Height set through cssText does not get applied.
         | 
| @@ -27615,7 +27774,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | |
| 27615 27774 | 
             
            				// In our bodyBackground.html iframe,
         | 
| 27616 27775 | 
             
            				// display for all div elements is set to "inline",
         | 
| 27617 27776 | 
             
            				// which causes a problem only in Android 8 Chrome 86.
         | 
| 27618 | 
            -
            				// Ensuring the div is  | 
| 27777 | 
            +
            				// Ensuring the div is display: block
         | 
| 27619 27778 | 
             
            				// gets around this issue.
         | 
| 27620 27779 | 
             
            				trChild.style.display = "block";
         | 
| 27621 27780 |  | 
| @@ -27639,7 +27798,6 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); | |
| 27639 27798 |  | 
| 27640 27799 | 
             
            function curCSS( elem, name, computed ) {
         | 
| 27641 27800 | 
             
            	var width, minWidth, maxWidth, ret,
         | 
| 27642 | 
            -
            		isCustomProp = rcustomProp.test( name ),
         | 
| 27643 27801 |  | 
| 27644 27802 | 
             
            		// Support: Firefox 51+
         | 
| 27645 27803 | 
             
            		// Retrieving style before computed somehow
         | 
| @@ -27650,42 +27808,11 @@ function curCSS( elem, name, computed ) { | |
| 27650 27808 | 
             
            	computed = computed || getStyles( elem );
         | 
| 27651 27809 |  | 
| 27652 27810 | 
             
            	// getPropertyValue is needed for:
         | 
| 27653 | 
            -
            	//   .css('filter') (IE 9 only,  | 
| 27654 | 
            -
            	//   .css('--customProperty) ( | 
| 27811 | 
            +
            	//   .css('filter') (IE 9 only, #12537)
         | 
| 27812 | 
            +
            	//   .css('--customProperty) (#3144)
         | 
| 27655 27813 | 
             
            	if ( computed ) {
         | 
| 27656 | 
            -
             | 
| 27657 | 
            -
            		// Support: IE <=9 - 11+
         | 
| 27658 | 
            -
            		// IE only supports `"float"` in `getPropertyValue`; in computed styles
         | 
| 27659 | 
            -
            		// it's only available as `"cssFloat"`. We no longer modify properties
         | 
| 27660 | 
            -
            		// sent to `.css()` apart from camelCasing, so we need to check both.
         | 
| 27661 | 
            -
            		// Normally, this would create difference in behavior: if
         | 
| 27662 | 
            -
            		// `getPropertyValue` returns an empty string, the value returned
         | 
| 27663 | 
            -
            		// by `.css()` would be `undefined`. This is usually the case for
         | 
| 27664 | 
            -
            		// disconnected elements. However, in IE even disconnected elements
         | 
| 27665 | 
            -
            		// with no styles return `"none"` for `getPropertyValue( "float" )`
         | 
| 27666 27814 | 
             
            		ret = computed.getPropertyValue( name ) || computed[ name ];
         | 
| 27667 27815 |  | 
| 27668 | 
            -
            		if ( isCustomProp && ret ) {
         | 
| 27669 | 
            -
             | 
| 27670 | 
            -
            			// Support: Firefox 105+, Chrome <=105+
         | 
| 27671 | 
            -
            			// Spec requires trimming whitespace for custom properties (gh-4926).
         | 
| 27672 | 
            -
            			// Firefox only trims leading whitespace. Chrome just collapses
         | 
| 27673 | 
            -
            			// both leading & trailing whitespace to a single space.
         | 
| 27674 | 
            -
            			//
         | 
| 27675 | 
            -
            			// Fall back to `undefined` if empty string returned.
         | 
| 27676 | 
            -
            			// This collapses a missing definition with property defined
         | 
| 27677 | 
            -
            			// and set to an empty string but there's no standard API
         | 
| 27678 | 
            -
            			// allowing us to differentiate them without a performance penalty
         | 
| 27679 | 
            -
            			// and returning `undefined` aligns with older jQuery.
         | 
| 27680 | 
            -
            			//
         | 
| 27681 | 
            -
            			// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
         | 
| 27682 | 
            -
            			// as whitespace while CSS does not, but this is not a problem
         | 
| 27683 | 
            -
            			// because CSS preprocessing replaces them with U+000A LINE FEED
         | 
| 27684 | 
            -
            			// (which *is* CSS whitespace)
         | 
| 27685 | 
            -
            			// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
         | 
| 27686 | 
            -
            			ret = ret.replace( rtrimCSS, "$1" ) || undefined;
         | 
| 27687 | 
            -
            		}
         | 
| 27688 | 
            -
             | 
| 27689 27816 | 
             
            		if ( ret === "" && !isAttached( elem ) ) {
         | 
| 27690 27817 | 
             
            			ret = jQuery.style( elem, name );
         | 
| 27691 27818 | 
             
            		}
         | 
| @@ -27781,6 +27908,7 @@ var | |
| 27781 27908 | 
             
            	// except "table", "table-cell", or "table-caption"
         | 
| 27782 27909 | 
             
            	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
         | 
| 27783 27910 | 
             
            	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
         | 
| 27911 | 
            +
            	rcustomProp = /^--/,
         | 
| 27784 27912 | 
             
            	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
         | 
| 27785 27913 | 
             
            	cssNormalTransform = {
         | 
| 27786 27914 | 
             
            		letterSpacing: "0",
         | 
| @@ -27802,8 +27930,7 @@ function setPositiveNumber( _elem, value, subtract ) { | |
| 27802 27930 | 
             
            function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
         | 
| 27803 27931 | 
             
            	var i = dimension === "width" ? 1 : 0,
         | 
| 27804 27932 | 
             
            		extra = 0,
         | 
| 27805 | 
            -
            		delta = 0 | 
| 27806 | 
            -
            		marginDelta = 0;
         | 
| 27933 | 
            +
            		delta = 0;
         | 
| 27807 27934 |  | 
| 27808 27935 | 
             
            	// Adjustment may not be necessary
         | 
| 27809 27936 | 
             
            	if ( box === ( isBorderBox ? "border" : "content" ) ) {
         | 
| @@ -27813,10 +27940,8 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed | |
| 27813 27940 | 
             
            	for ( ; i < 4; i += 2 ) {
         | 
| 27814 27941 |  | 
| 27815 27942 | 
             
            		// Both box models exclude margin
         | 
| 27816 | 
            -
            		// Count margin delta separately to only add it after scroll gutter adjustment.
         | 
| 27817 | 
            -
            		// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
         | 
| 27818 27943 | 
             
            		if ( box === "margin" ) {
         | 
| 27819 | 
            -
            			 | 
| 27944 | 
            +
            			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
         | 
| 27820 27945 | 
             
            		}
         | 
| 27821 27946 |  | 
| 27822 27947 | 
             
            		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
         | 
| @@ -27867,7 +27992,7 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed | |
| 27867 27992 | 
             
            		) ) || 0;
         | 
| 27868 27993 | 
             
            	}
         | 
| 27869 27994 |  | 
| 27870 | 
            -
            	return delta | 
| 27995 | 
            +
            	return delta;
         | 
| 27871 27996 | 
             
            }
         | 
| 27872 27997 |  | 
| 27873 27998 | 
             
            function getWidthOrHeight( elem, dimension, extra ) {
         | 
| @@ -27965,35 +28090,26 @@ jQuery.extend( { | |
| 27965 28090 |  | 
| 27966 28091 | 
             
            	// Don't automatically add "px" to these possibly-unitless properties
         | 
| 27967 28092 | 
             
            	cssNumber: {
         | 
| 27968 | 
            -
            		animationIterationCount: true,
         | 
| 27969 | 
            -
            		 | 
| 27970 | 
            -
            		 | 
| 27971 | 
            -
            		 | 
| 27972 | 
            -
            		 | 
| 27973 | 
            -
            		 | 
| 27974 | 
            -
            		 | 
| 27975 | 
            -
            		 | 
| 27976 | 
            -
            		 | 
| 27977 | 
            -
            		 | 
| 27978 | 
            -
            		 | 
| 27979 | 
            -
            		 | 
| 27980 | 
            -
            		 | 
| 27981 | 
            -
            		 | 
| 27982 | 
            -
            		 | 
| 27983 | 
            -
            		 | 
| 27984 | 
            -
            		 | 
| 27985 | 
            -
            		 | 
| 27986 | 
            -
            		 | 
| 27987 | 
            -
            		 | 
| 27988 | 
            -
            		zIndex: true,
         | 
| 27989 | 
            -
            		zoom: true,
         | 
| 27990 | 
            -
             | 
| 27991 | 
            -
            		// SVG-related
         | 
| 27992 | 
            -
            		fillOpacity: true,
         | 
| 27993 | 
            -
            		floodOpacity: true,
         | 
| 27994 | 
            -
            		stopOpacity: true,
         | 
| 27995 | 
            -
            		strokeMiterlimit: true,
         | 
| 27996 | 
            -
            		strokeOpacity: true
         | 
| 28093 | 
            +
            		"animationIterationCount": true,
         | 
| 28094 | 
            +
            		"columnCount": true,
         | 
| 28095 | 
            +
            		"fillOpacity": true,
         | 
| 28096 | 
            +
            		"flexGrow": true,
         | 
| 28097 | 
            +
            		"flexShrink": true,
         | 
| 28098 | 
            +
            		"fontWeight": true,
         | 
| 28099 | 
            +
            		"gridArea": true,
         | 
| 28100 | 
            +
            		"gridColumn": true,
         | 
| 28101 | 
            +
            		"gridColumnEnd": true,
         | 
| 28102 | 
            +
            		"gridColumnStart": true,
         | 
| 28103 | 
            +
            		"gridRow": true,
         | 
| 28104 | 
            +
            		"gridRowEnd": true,
         | 
| 28105 | 
            +
            		"gridRowStart": true,
         | 
| 28106 | 
            +
            		"lineHeight": true,
         | 
| 28107 | 
            +
            		"opacity": true,
         | 
| 28108 | 
            +
            		"order": true,
         | 
| 28109 | 
            +
            		"orphans": true,
         | 
| 28110 | 
            +
            		"widows": true,
         | 
| 28111 | 
            +
            		"zIndex": true,
         | 
| 28112 | 
            +
            		"zoom": true
         | 
| 27997 28113 | 
             
            	},
         | 
| 27998 28114 |  | 
| 27999 28115 | 
             
            	// Add in properties whose names you wish to fix before
         | 
| @@ -28028,15 +28144,15 @@ jQuery.extend( { | |
| 28028 28144 | 
             
            		if ( value !== undefined ) {
         | 
| 28029 28145 | 
             
            			type = typeof value;
         | 
| 28030 28146 |  | 
| 28031 | 
            -
            			// Convert "+=" or "-=" to relative numbers ( | 
| 28147 | 
            +
            			// Convert "+=" or "-=" to relative numbers (#7345)
         | 
| 28032 28148 | 
             
            			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
         | 
| 28033 28149 | 
             
            				value = adjustCSS( elem, name, ret );
         | 
| 28034 28150 |  | 
| 28035 | 
            -
            				// Fixes bug  | 
| 28151 | 
            +
            				// Fixes bug #9237
         | 
| 28036 28152 | 
             
            				type = "number";
         | 
| 28037 28153 | 
             
            			}
         | 
| 28038 28154 |  | 
| 28039 | 
            -
            			// Make sure that null and NaN values aren't set ( | 
| 28155 | 
            +
            			// Make sure that null and NaN values aren't set (#7116)
         | 
| 28040 28156 | 
             
            			if ( value == null || value !== value ) {
         | 
| 28041 28157 | 
             
            				return;
         | 
| 28042 28158 | 
             
            			}
         | 
| @@ -28660,7 +28776,7 @@ function Animation( elem, properties, options ) { | |
| 28660 28776 | 
             
            				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
         | 
| 28661 28777 |  | 
| 28662 28778 | 
             
            				// Support: Android 2.3 only
         | 
| 28663 | 
            -
            				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` ( | 
| 28779 | 
            +
            				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
         | 
| 28664 28780 | 
             
            				temp = remaining / animation.duration || 0,
         | 
| 28665 28781 | 
             
            				percent = 1 - temp,
         | 
| 28666 28782 | 
             
            				index = 0,
         | 
| @@ -29050,6 +29166,7 @@ jQuery.fx.speeds = { | |
| 29050 29166 |  | 
| 29051 29167 |  | 
| 29052 29168 | 
             
            // Based off of the plugin by Clint Helfers, with permission.
         | 
| 29169 | 
            +
            // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
         | 
| 29053 29170 | 
             
            jQuery.fn.delay = function( time, type ) {
         | 
| 29054 29171 | 
             
            	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
         | 
| 29055 29172 | 
             
            	type = type || "fx";
         | 
| @@ -29274,7 +29391,8 @@ jQuery.extend( { | |
| 29274 29391 | 
             
            				// Support: IE <=9 - 11 only
         | 
| 29275 29392 | 
             
            				// elem.tabIndex doesn't always return the
         | 
| 29276 29393 | 
             
            				// correct value when it hasn't been explicitly set
         | 
| 29277 | 
            -
            				//  | 
| 29394 | 
            +
            				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
         | 
| 29395 | 
            +
            				// Use proper attribute retrieval(#12072)
         | 
| 29278 29396 | 
             
            				var tabindex = jQuery.find.attr( elem, "tabindex" );
         | 
| 29279 29397 |  | 
| 29280 29398 | 
             
            				if ( tabindex ) {
         | 
| @@ -29378,7 +29496,8 @@ function classesToArray( value ) { | |
| 29378 29496 |  | 
| 29379 29497 | 
             
            jQuery.fn.extend( {
         | 
| 29380 29498 | 
             
            	addClass: function( value ) {
         | 
| 29381 | 
            -
            		var  | 
| 29499 | 
            +
            		var classes, elem, cur, curValue, clazz, j, finalValue,
         | 
| 29500 | 
            +
            			i = 0;
         | 
| 29382 29501 |  | 
| 29383 29502 | 
             
            		if ( isFunction( value ) ) {
         | 
| 29384 29503 | 
             
            			return this.each( function( j ) {
         | 
| @@ -29386,35 +29505,36 @@ jQuery.fn.extend( { | |
| 29386 29505 | 
             
            			} );
         | 
| 29387 29506 | 
             
            		}
         | 
| 29388 29507 |  | 
| 29389 | 
            -
            		 | 
| 29508 | 
            +
            		classes = classesToArray( value );
         | 
| 29390 29509 |  | 
| 29391 | 
            -
            		if (  | 
| 29392 | 
            -
            			 | 
| 29393 | 
            -
            				curValue = getClass(  | 
| 29394 | 
            -
            				cur =  | 
| 29510 | 
            +
            		if ( classes.length ) {
         | 
| 29511 | 
            +
            			while ( ( elem = this[ i++ ] ) ) {
         | 
| 29512 | 
            +
            				curValue = getClass( elem );
         | 
| 29513 | 
            +
            				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
         | 
| 29395 29514 |  | 
| 29396 29515 | 
             
            				if ( cur ) {
         | 
| 29397 | 
            -
            					 | 
| 29398 | 
            -
             | 
| 29399 | 
            -
            						if ( cur.indexOf( " " +  | 
| 29400 | 
            -
            							cur +=  | 
| 29516 | 
            +
            					j = 0;
         | 
| 29517 | 
            +
            					while ( ( clazz = classes[ j++ ] ) ) {
         | 
| 29518 | 
            +
            						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
         | 
| 29519 | 
            +
            							cur += clazz + " ";
         | 
| 29401 29520 | 
             
            						}
         | 
| 29402 29521 | 
             
            					}
         | 
| 29403 29522 |  | 
| 29404 29523 | 
             
            					// Only assign if different to avoid unneeded rendering.
         | 
| 29405 29524 | 
             
            					finalValue = stripAndCollapse( cur );
         | 
| 29406 29525 | 
             
            					if ( curValue !== finalValue ) {
         | 
| 29407 | 
            -
            						 | 
| 29526 | 
            +
            						elem.setAttribute( "class", finalValue );
         | 
| 29408 29527 | 
             
            					}
         | 
| 29409 29528 | 
             
            				}
         | 
| 29410 | 
            -
            			} | 
| 29529 | 
            +
            			}
         | 
| 29411 29530 | 
             
            		}
         | 
| 29412 29531 |  | 
| 29413 29532 | 
             
            		return this;
         | 
| 29414 29533 | 
             
            	},
         | 
| 29415 29534 |  | 
| 29416 29535 | 
             
            	removeClass: function( value ) {
         | 
| 29417 | 
            -
            		var  | 
| 29536 | 
            +
            		var classes, elem, cur, curValue, clazz, j, finalValue,
         | 
| 29537 | 
            +
            			i = 0;
         | 
| 29418 29538 |  | 
| 29419 29539 | 
             
            		if ( isFunction( value ) ) {
         | 
| 29420 29540 | 
             
            			return this.each( function( j ) {
         | 
| @@ -29426,42 +29546,45 @@ jQuery.fn.extend( { | |
| 29426 29546 | 
             
            			return this.attr( "class", "" );
         | 
| 29427 29547 | 
             
            		}
         | 
| 29428 29548 |  | 
| 29429 | 
            -
            		 | 
| 29549 | 
            +
            		classes = classesToArray( value );
         | 
| 29430 29550 |  | 
| 29431 | 
            -
            		if (  | 
| 29432 | 
            -
            			 | 
| 29433 | 
            -
            				curValue = getClass(  | 
| 29551 | 
            +
            		if ( classes.length ) {
         | 
| 29552 | 
            +
            			while ( ( elem = this[ i++ ] ) ) {
         | 
| 29553 | 
            +
            				curValue = getClass( elem );
         | 
| 29434 29554 |  | 
| 29435 29555 | 
             
            				// This expression is here for better compressibility (see addClass)
         | 
| 29436 | 
            -
            				cur =  | 
| 29556 | 
            +
            				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
         | 
| 29437 29557 |  | 
| 29438 29558 | 
             
            				if ( cur ) {
         | 
| 29439 | 
            -
            					 | 
| 29440 | 
            -
             | 
| 29559 | 
            +
            					j = 0;
         | 
| 29560 | 
            +
            					while ( ( clazz = classes[ j++ ] ) ) {
         | 
| 29441 29561 |  | 
| 29442 29562 | 
             
            						// Remove *all* instances
         | 
| 29443 | 
            -
            						while ( cur.indexOf( " " +  | 
| 29444 | 
            -
            							cur = cur.replace( " " +  | 
| 29563 | 
            +
            						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
         | 
| 29564 | 
            +
            							cur = cur.replace( " " + clazz + " ", " " );
         | 
| 29445 29565 | 
             
            						}
         | 
| 29446 29566 | 
             
            					}
         | 
| 29447 29567 |  | 
| 29448 29568 | 
             
            					// Only assign if different to avoid unneeded rendering.
         | 
| 29449 29569 | 
             
            					finalValue = stripAndCollapse( cur );
         | 
| 29450 29570 | 
             
            					if ( curValue !== finalValue ) {
         | 
| 29451 | 
            -
            						 | 
| 29571 | 
            +
            						elem.setAttribute( "class", finalValue );
         | 
| 29452 29572 | 
             
            					}
         | 
| 29453 29573 | 
             
            				}
         | 
| 29454 | 
            -
            			} | 
| 29574 | 
            +
            			}
         | 
| 29455 29575 | 
             
            		}
         | 
| 29456 29576 |  | 
| 29457 29577 | 
             
            		return this;
         | 
| 29458 29578 | 
             
            	},
         | 
| 29459 29579 |  | 
| 29460 29580 | 
             
            	toggleClass: function( value, stateVal ) {
         | 
| 29461 | 
            -
            		var  | 
| 29462 | 
            -
            			type = typeof value,
         | 
| 29581 | 
            +
            		var type = typeof value,
         | 
| 29463 29582 | 
             
            			isValidValue = type === "string" || Array.isArray( value );
         | 
| 29464 29583 |  | 
| 29584 | 
            +
            		if ( typeof stateVal === "boolean" && isValidValue ) {
         | 
| 29585 | 
            +
            			return stateVal ? this.addClass( value ) : this.removeClass( value );
         | 
| 29586 | 
            +
            		}
         | 
| 29587 | 
            +
             | 
| 29465 29588 | 
             
            		if ( isFunction( value ) ) {
         | 
| 29466 29589 | 
             
            			return this.each( function( i ) {
         | 
| 29467 29590 | 
             
            				jQuery( this ).toggleClass(
         | 
| @@ -29471,20 +29594,17 @@ jQuery.fn.extend( { | |
| 29471 29594 | 
             
            			} );
         | 
| 29472 29595 | 
             
            		}
         | 
| 29473 29596 |  | 
| 29474 | 
            -
            		if ( typeof stateVal === "boolean" && isValidValue ) {
         | 
| 29475 | 
            -
            			return stateVal ? this.addClass( value ) : this.removeClass( value );
         | 
| 29476 | 
            -
            		}
         | 
| 29477 | 
            -
             | 
| 29478 | 
            -
            		classNames = classesToArray( value );
         | 
| 29479 | 
            -
             | 
| 29480 29597 | 
             
            		return this.each( function() {
         | 
| 29598 | 
            +
            			var className, i, self, classNames;
         | 
| 29599 | 
            +
             | 
| 29481 29600 | 
             
            			if ( isValidValue ) {
         | 
| 29482 29601 |  | 
| 29483 29602 | 
             
            				// Toggle individual class names
         | 
| 29603 | 
            +
            				i = 0;
         | 
| 29484 29604 | 
             
            				self = jQuery( this );
         | 
| 29605 | 
            +
            				classNames = classesToArray( value );
         | 
| 29485 29606 |  | 
| 29486 | 
            -
            				 | 
| 29487 | 
            -
            					className = classNames[ i ];
         | 
| 29607 | 
            +
            				while ( ( className = classNames[ i++ ] ) ) {
         | 
| 29488 29608 |  | 
| 29489 29609 | 
             
            					// Check each className given, space separated list
         | 
| 29490 29610 | 
             
            					if ( self.hasClass( className ) ) {
         | 
| @@ -29618,7 +29738,7 @@ jQuery.extend( { | |
| 29618 29738 | 
             
            					val :
         | 
| 29619 29739 |  | 
| 29620 29740 | 
             
            					// Support: IE <=10 - 11 only
         | 
| 29621 | 
            -
            					// option.text throws exceptions ( | 
| 29741 | 
            +
            					// option.text throws exceptions (#14686, #14858)
         | 
| 29622 29742 | 
             
            					// Strip and collapse whitespace
         | 
| 29623 29743 | 
             
            					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
         | 
| 29624 29744 | 
             
            					stripAndCollapse( jQuery.text( elem ) );
         | 
| @@ -29645,7 +29765,7 @@ jQuery.extend( { | |
| 29645 29765 | 
             
            					option = options[ i ];
         | 
| 29646 29766 |  | 
| 29647 29767 | 
             
            					// Support: IE <=9 only
         | 
| 29648 | 
            -
            					// IE8-9 doesn't update selected after form reset ( | 
| 29768 | 
            +
            					// IE8-9 doesn't update selected after form reset (#2551)
         | 
| 29649 29769 | 
             
            					if ( ( option.selected || i === index ) &&
         | 
| 29650 29770 |  | 
| 29651 29771 | 
             
            							// Don't return options that are disabled or in a disabled optgroup
         | 
| @@ -29719,39 +29839,9 @@ jQuery.each( [ "radio", "checkbox" ], function() { | |
| 29719 29839 |  | 
| 29720 29840 |  | 
| 29721 29841 | 
             
            // Return jQuery for attributes-only inclusion
         | 
| 29722 | 
            -
            var location = window.location;
         | 
| 29723 | 
            -
             | 
| 29724 | 
            -
            var nonce = { guid: Date.now() };
         | 
| 29725 | 
            -
             | 
| 29726 | 
            -
            var rquery = ( /\?/ );
         | 
| 29727 | 
            -
             | 
| 29728 29842 |  | 
| 29729 29843 |  | 
| 29730 | 
            -
             | 
| 29731 | 
            -
            jQuery.parseXML = function( data ) {
         | 
| 29732 | 
            -
            	var xml, parserErrorElem;
         | 
| 29733 | 
            -
            	if ( !data || typeof data !== "string" ) {
         | 
| 29734 | 
            -
            		return null;
         | 
| 29735 | 
            -
            	}
         | 
| 29736 | 
            -
             | 
| 29737 | 
            -
            	// Support: IE 9 - 11 only
         | 
| 29738 | 
            -
            	// IE throws on parseFromString with invalid input.
         | 
| 29739 | 
            -
            	try {
         | 
| 29740 | 
            -
            		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
         | 
| 29741 | 
            -
            	} catch ( e ) {}
         | 
| 29742 | 
            -
             | 
| 29743 | 
            -
            	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
         | 
| 29744 | 
            -
            	if ( !xml || parserErrorElem ) {
         | 
| 29745 | 
            -
            		jQuery.error( "Invalid XML: " + (
         | 
| 29746 | 
            -
            			parserErrorElem ?
         | 
| 29747 | 
            -
            				jQuery.map( parserErrorElem.childNodes, function( el ) {
         | 
| 29748 | 
            -
            					return el.textContent;
         | 
| 29749 | 
            -
            				} ).join( "\n" ) :
         | 
| 29750 | 
            -
            				data
         | 
| 29751 | 
            -
            		) );
         | 
| 29752 | 
            -
            	}
         | 
| 29753 | 
            -
            	return xml;
         | 
| 29754 | 
            -
            };
         | 
| 29844 | 
            +
            support.focusin = "onfocusin" in window;
         | 
| 29755 29845 |  | 
| 29756 29846 |  | 
| 29757 29847 | 
             
            var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
         | 
| @@ -29818,8 +29908,8 @@ jQuery.extend( jQuery.event, { | |
| 29818 29908 | 
             
            			return;
         | 
| 29819 29909 | 
             
            		}
         | 
| 29820 29910 |  | 
| 29821 | 
            -
            		// Determine event propagation path in advance, per W3C events spec ( | 
| 29822 | 
            -
            		// Bubble up to document, then to window; watch for a global ownerDocument var ( | 
| 29911 | 
            +
            		// Determine event propagation path in advance, per W3C events spec (#9951)
         | 
| 29912 | 
            +
            		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
         | 
| 29823 29913 | 
             
            		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
         | 
| 29824 29914 |  | 
| 29825 29915 | 
             
            			bubbleType = special.delegateType || type;
         | 
| @@ -29871,7 +29961,7 @@ jQuery.extend( jQuery.event, { | |
| 29871 29961 | 
             
            				acceptData( elem ) ) {
         | 
| 29872 29962 |  | 
| 29873 29963 | 
             
            				// Call a native DOM method on the target with the same name as the event.
         | 
| 29874 | 
            -
            				// Don't do default actions on window, that's where global variables be ( | 
| 29964 | 
            +
            				// Don't do default actions on window, that's where global variables be (#6170)
         | 
| 29875 29965 | 
             
            				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
         | 
| 29876 29966 |  | 
| 29877 29967 | 
             
            					// Don't re-trigger an onFOO event when we call its FOO() method
         | 
| @@ -29939,6 +30029,85 @@ jQuery.fn.extend( { | |
| 29939 30029 | 
             
            } );
         | 
| 29940 30030 |  | 
| 29941 30031 |  | 
| 30032 | 
            +
            // Support: Firefox <=44
         | 
| 30033 | 
            +
            // Firefox doesn't have focus(in | out) events
         | 
| 30034 | 
            +
            // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
         | 
| 30035 | 
            +
            //
         | 
| 30036 | 
            +
            // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
         | 
| 30037 | 
            +
            // focus(in | out) events fire after focus & blur events,
         | 
| 30038 | 
            +
            // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
         | 
| 30039 | 
            +
            // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
         | 
| 30040 | 
            +
            if ( !support.focusin ) {
         | 
| 30041 | 
            +
            	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
         | 
| 30042 | 
            +
             | 
| 30043 | 
            +
            		// Attach a single capturing handler on the document while someone wants focusin/focusout
         | 
| 30044 | 
            +
            		var handler = function( event ) {
         | 
| 30045 | 
            +
            			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
         | 
| 30046 | 
            +
            		};
         | 
| 30047 | 
            +
             | 
| 30048 | 
            +
            		jQuery.event.special[ fix ] = {
         | 
| 30049 | 
            +
            			setup: function() {
         | 
| 30050 | 
            +
             | 
| 30051 | 
            +
            				// Handle: regular nodes (via `this.ownerDocument`), window
         | 
| 30052 | 
            +
            				// (via `this.document`) & document (via `this`).
         | 
| 30053 | 
            +
            				var doc = this.ownerDocument || this.document || this,
         | 
| 30054 | 
            +
            					attaches = dataPriv.access( doc, fix );
         | 
| 30055 | 
            +
             | 
| 30056 | 
            +
            				if ( !attaches ) {
         | 
| 30057 | 
            +
            					doc.addEventListener( orig, handler, true );
         | 
| 30058 | 
            +
            				}
         | 
| 30059 | 
            +
            				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
         | 
| 30060 | 
            +
            			},
         | 
| 30061 | 
            +
            			teardown: function() {
         | 
| 30062 | 
            +
            				var doc = this.ownerDocument || this.document || this,
         | 
| 30063 | 
            +
            					attaches = dataPriv.access( doc, fix ) - 1;
         | 
| 30064 | 
            +
             | 
| 30065 | 
            +
            				if ( !attaches ) {
         | 
| 30066 | 
            +
            					doc.removeEventListener( orig, handler, true );
         | 
| 30067 | 
            +
            					dataPriv.remove( doc, fix );
         | 
| 30068 | 
            +
             | 
| 30069 | 
            +
            				} else {
         | 
| 30070 | 
            +
            					dataPriv.access( doc, fix, attaches );
         | 
| 30071 | 
            +
            				}
         | 
| 30072 | 
            +
            			}
         | 
| 30073 | 
            +
            		};
         | 
| 30074 | 
            +
            	} );
         | 
| 30075 | 
            +
            }
         | 
| 30076 | 
            +
            var location = window.location;
         | 
| 30077 | 
            +
             | 
| 30078 | 
            +
            var nonce = { guid: Date.now() };
         | 
| 30079 | 
            +
             | 
| 30080 | 
            +
            var rquery = ( /\?/ );
         | 
| 30081 | 
            +
             | 
| 30082 | 
            +
             | 
| 30083 | 
            +
             | 
| 30084 | 
            +
            // Cross-browser xml parsing
         | 
| 30085 | 
            +
            jQuery.parseXML = function( data ) {
         | 
| 30086 | 
            +
            	var xml, parserErrorElem;
         | 
| 30087 | 
            +
            	if ( !data || typeof data !== "string" ) {
         | 
| 30088 | 
            +
            		return null;
         | 
| 30089 | 
            +
            	}
         | 
| 30090 | 
            +
             | 
| 30091 | 
            +
            	// Support: IE 9 - 11 only
         | 
| 30092 | 
            +
            	// IE throws on parseFromString with invalid input.
         | 
| 30093 | 
            +
            	try {
         | 
| 30094 | 
            +
            		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
         | 
| 30095 | 
            +
            	} catch ( e ) {}
         | 
| 30096 | 
            +
             | 
| 30097 | 
            +
            	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
         | 
| 30098 | 
            +
            	if ( !xml || parserErrorElem ) {
         | 
| 30099 | 
            +
            		jQuery.error( "Invalid XML: " + (
         | 
| 30100 | 
            +
            			parserErrorElem ?
         | 
| 30101 | 
            +
            				jQuery.map( parserErrorElem.childNodes, function( el ) {
         | 
| 30102 | 
            +
            					return el.textContent;
         | 
| 30103 | 
            +
            				} ).join( "\n" ) :
         | 
| 30104 | 
            +
            				data
         | 
| 30105 | 
            +
            		) );
         | 
| 30106 | 
            +
            	}
         | 
| 30107 | 
            +
            	return xml;
         | 
| 30108 | 
            +
            };
         | 
| 30109 | 
            +
             | 
| 30110 | 
            +
             | 
| 29942 30111 | 
             
            var
         | 
| 29943 30112 | 
             
            	rbracket = /\[\]$/,
         | 
| 29944 30113 | 
             
            	rCRLF = /\r?\n/g,
         | 
| @@ -30066,7 +30235,7 @@ var | |
| 30066 30235 | 
             
            	rantiCache = /([?&])_=[^&]*/,
         | 
| 30067 30236 | 
             
            	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
         | 
| 30068 30237 |  | 
| 30069 | 
            -
            	//  | 
| 30238 | 
            +
            	// #7653, #8125, #8152: local protocol detection
         | 
| 30070 30239 | 
             
            	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
         | 
| 30071 30240 | 
             
            	rnoContent = /^(?:GET|HEAD)$/,
         | 
| 30072 30241 | 
             
            	rprotocol = /^\/\//,
         | 
| @@ -30089,7 +30258,7 @@ var | |
| 30089 30258 | 
             
            	 */
         | 
| 30090 30259 | 
             
            	transports = {},
         | 
| 30091 30260 |  | 
| 30092 | 
            -
            	// Avoid comment-prolog char sequence ( | 
| 30261 | 
            +
            	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
         | 
| 30093 30262 | 
             
            	allTypes = "*/".concat( "*" ),
         | 
| 30094 30263 |  | 
| 30095 30264 | 
             
            	// Anchor tag for parsing the document origin
         | 
| @@ -30160,7 +30329,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX | |
| 30160 30329 |  | 
| 30161 30330 | 
             
            // A special extend for ajax options
         | 
| 30162 30331 | 
             
            // that takes "flat" options (not to be deep extended)
         | 
| 30163 | 
            -
            // Fixes  | 
| 30332 | 
            +
            // Fixes #9887
         | 
| 30164 30333 | 
             
            function ajaxExtend( target, src ) {
         | 
| 30165 30334 | 
             
            	var key, deep,
         | 
| 30166 30335 | 
             
            		flatOptions = jQuery.ajaxSettings.flatOptions || {};
         | 
| @@ -30571,12 +30740,12 @@ jQuery.extend( { | |
| 30571 30740 | 
             
            		deferred.promise( jqXHR );
         | 
| 30572 30741 |  | 
| 30573 30742 | 
             
            		// Add protocol if not provided (prefilters might expect it)
         | 
| 30574 | 
            -
            		// Handle falsy url in the settings object ( | 
| 30743 | 
            +
            		// Handle falsy url in the settings object (#10093: consistency with old signature)
         | 
| 30575 30744 | 
             
            		// We also use the url parameter if available
         | 
| 30576 30745 | 
             
            		s.url = ( ( url || s.url || location.href ) + "" )
         | 
| 30577 30746 | 
             
            			.replace( rprotocol, location.protocol + "//" );
         | 
| 30578 30747 |  | 
| 30579 | 
            -
            		// Alias method option to type as per ticket  | 
| 30748 | 
            +
            		// Alias method option to type as per ticket #12004
         | 
| 30580 30749 | 
             
            		s.type = options.method || options.type || s.method || s.type;
         | 
| 30581 30750 |  | 
| 30582 30751 | 
             
            		// Extract dataTypes list
         | 
| @@ -30619,7 +30788,7 @@ jQuery.extend( { | |
| 30619 30788 | 
             
            		}
         | 
| 30620 30789 |  | 
| 30621 30790 | 
             
            		// We can fire global events as of now if asked to
         | 
| 30622 | 
            -
            		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario ( | 
| 30791 | 
            +
            		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
         | 
| 30623 30792 | 
             
            		fireGlobals = jQuery.event && s.global;
         | 
| 30624 30793 |  | 
| 30625 30794 | 
             
            		// Watch for a new set of requests
         | 
| @@ -30648,7 +30817,7 @@ jQuery.extend( { | |
| 30648 30817 | 
             
            			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
         | 
| 30649 30818 | 
             
            				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
         | 
| 30650 30819 |  | 
| 30651 | 
            -
            				//  | 
| 30820 | 
            +
            				// #9682: remove data so that it's not used in an eventual retry
         | 
| 30652 30821 | 
             
            				delete s.data;
         | 
| 30653 30822 | 
             
            			}
         | 
| 30654 30823 |  | 
| @@ -30921,7 +31090,7 @@ jQuery._evalUrl = function( url, options, doc ) { | |
| 30921 31090 | 
             
            	return jQuery.ajax( {
         | 
| 30922 31091 | 
             
            		url: url,
         | 
| 30923 31092 |  | 
| 30924 | 
            -
            		// Make this explicit, since user can override this through ajaxSetup ( | 
| 31093 | 
            +
            		// Make this explicit, since user can override this through ajaxSetup (#11264)
         | 
| 30925 31094 | 
             
            		type: "GET",
         | 
| 30926 31095 | 
             
            		dataType: "script",
         | 
| 30927 31096 | 
             
            		cache: true,
         | 
| @@ -31030,7 +31199,7 @@ var xhrSuccessStatus = { | |
| 31030 31199 | 
             
            		0: 200,
         | 
| 31031 31200 |  | 
| 31032 31201 | 
             
            		// Support: IE <=9 only
         | 
| 31033 | 
            -
            		//  | 
| 31202 | 
            +
            		// #1450: sometimes IE returns 1223 when it should be 204
         | 
| 31034 31203 | 
             
            		1223: 204
         | 
| 31035 31204 | 
             
            	},
         | 
| 31036 31205 | 
             
            	xhrSupported = jQuery.ajaxSettings.xhr();
         | 
| @@ -31102,7 +31271,7 @@ jQuery.ajaxTransport( function( options ) { | |
| 31102 31271 | 
             
            								} else {
         | 
| 31103 31272 | 
             
            									complete(
         | 
| 31104 31273 |  | 
| 31105 | 
            -
            										// File: protocol always yields status 0; see  | 
| 31274 | 
            +
            										// File: protocol always yields status 0; see #8605, #14207
         | 
| 31106 31275 | 
             
            										xhr.status,
         | 
| 31107 31276 | 
             
            										xhr.statusText
         | 
| 31108 31277 | 
             
            									);
         | 
| @@ -31163,7 +31332,7 @@ jQuery.ajaxTransport( function( options ) { | |
| 31163 31332 | 
             
            					xhr.send( options.hasContent && options.data || null );
         | 
| 31164 31333 | 
             
            				} catch ( e ) {
         | 
| 31165 31334 |  | 
| 31166 | 
            -
            					//  | 
| 31335 | 
            +
            					// #14683: Only rethrow if this hasn't been notified as an error yet
         | 
| 31167 31336 | 
             
            					if ( callback ) {
         | 
| 31168 31337 | 
             
            						throw e;
         | 
| 31169 31338 | 
             
            					}
         | 
| @@ -31783,9 +31952,7 @@ jQuery.fn.extend( { | |
| 31783 31952 | 
             
            	},
         | 
| 31784 31953 |  | 
| 31785 31954 | 
             
            	hover: function( fnOver, fnOut ) {
         | 
| 31786 | 
            -
            		return this
         | 
| 31787 | 
            -
            			.on( "mouseenter", fnOver )
         | 
| 31788 | 
            -
            			.on( "mouseleave", fnOut || fnOver );
         | 
| 31955 | 
            +
            		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
         | 
| 31789 31956 | 
             
            	}
         | 
| 31790 31957 | 
             
            } );
         | 
| 31791 31958 |  | 
| @@ -31809,9 +31976,7 @@ jQuery.each( | |
| 31809 31976 |  | 
| 31810 31977 | 
             
            // Support: Android <=4.0 only
         | 
| 31811 31978 | 
             
            // Make sure we trim BOM and NBSP
         | 
| 31812 | 
            -
             | 
| 31813 | 
            -
            // to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
         | 
| 31814 | 
            -
            var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
         | 
| 31979 | 
            +
            var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
         | 
| 31815 31980 |  | 
| 31816 31981 | 
             
            // Bind a function to a context, optionally partially applying any
         | 
| 31817 31982 | 
             
            // arguments.
         | 
| @@ -31878,7 +32043,7 @@ jQuery.isNumeric = function( obj ) { | |
| 31878 32043 | 
             
            jQuery.trim = function( text ) {
         | 
| 31879 32044 | 
             
            	return text == null ?
         | 
| 31880 32045 | 
             
            		"" :
         | 
| 31881 | 
            -
            		( text + "" ).replace( rtrim, " | 
| 32046 | 
            +
            		( text + "" ).replace( rtrim, "" );
         | 
| 31882 32047 | 
             
            };
         | 
| 31883 32048 |  | 
| 31884 32049 |  | 
| @@ -31926,8 +32091,8 @@ jQuery.noConflict = function( deep ) { | |
| 31926 32091 | 
             
            };
         | 
| 31927 32092 |  | 
| 31928 32093 | 
             
            // Expose jQuery and $ identifiers, even in AMD
         | 
| 31929 | 
            -
            // ( | 
| 31930 | 
            -
            // and CommonJS for browser emulators ( | 
| 32094 | 
            +
            // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
         | 
| 32095 | 
            +
            // and CommonJS for browser emulators (#13566)
         | 
| 31931 32096 | 
             
            if ( typeof noGlobal === "undefined" ) {
         | 
| 31932 32097 | 
             
            	window.jQuery = window.$ = jQuery;
         | 
| 31933 32098 | 
             
            }
         |