PageSourceSearch

https://www.bgcb.org/wp-content/themes/bgcb/blocks/vertical-counter/block.js?ver=1790851565

js bgcb.org collected 2026-10-03 22:57:27 UTC 428,793 bytes, 14,204 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 5,508 bytes, lines 4-152
4/***/ "./node_modules/jquery-inview/jquery.inview.js":
5/*!*****************************************************!*\
6  !*** ./node_modules/jquery-inview/jquery.inview.js ***!
7  \*****************************************************/
8/***/ (function(module, exports, __webpack_require__) {
9
10var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
11 * author Christopher Blum
12 *    - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/
13 *    - forked from http://github.com/zuk/jquery.inview/
14 */
15(function (factory) {
16  if (true) {
17    // AMD
18    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
19		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
20		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
21		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
22  } else {}
23}(function ($) {
24
25  var inviewObjects = [], viewportSize, viewportOffset,
26      d = document, w = window, documentElement = d.documentElement, timer;
27
28  $.event.special.inview = {
29    add: function(data) {
30      inviewObjects.push({ data: data, $element: $(this), element: this });
31      // Use setInterval in order to also make sure this captures elements within
32      // "overflow:scroll" elements or elements that appeared in the dom tree due to
33      // dom manipulation and reflow
34      // old: $(window).scroll(checkInView);
35      //
36      // By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays
37      // intervals while the user scrolls. Therefore the inview event might fire a bit late there
38      //
39      // Don't waste cycles with an interval until we get at least one element that
40      // has bound to the inview event.
41      if (!timer && inviewObjects.length) {
42         timer = setInterval(checkInView, 250);
43      }
44    },
45
46    remove: function(data) {
47      for (var i=0; i<inviewObjects.length; i++) {
48        var inviewObject = inviewObjects[i];
49        if (inviewObject.element === this && inviewObject.data.guid === data.guid) {
50          inviewObjects.splice(i, 1);
51          break;
52        }
53      }
54
55      // Clear interval when we no longer have any elements listening
56      if (!inviewObjects.length) {
57         clearInterval(timer);
58         timer = null;
59      }
60    }
61  };
62
63  function getViewportSize() {
64    var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth };
65
66    // if this is correct then return it. iPad has compat Mode, so will
67    // go into check clientHeight/clientWidth (which has the wrong value).
68    if (!size.height) {
69      mode = d.compatMode;
70      if (mode || !$.support.boxModel) { // IE, Gecko
71        domObject = mode === 'CSS1Compat' ?
72          documentElement : // Standards
73          d.body; // Quirks
74        size = {
75          height: domObject.clientHeight,
76          width:  domObject.clientWidth
77        };
78      }
79    }
80
81    return size;
82  }
83
84  function getViewportOffset() {
85    return {
86      top:  w.pageYOffset || documentElement.scrollTop   || d.body.scrollTop,
87      left: w.pageXOffset || documentElement.scrollLeft  || d.body.scrollLeft
88    };
89  }
90
91  function checkInView() {
92    if (!inviewObjects.length) {
93      return;
94    }
95
96    var i = 0, $elements = $.map(inviewObjects, function(inviewObject) {
97      var selector  = inviewObject.data.selector,
98          $element  = inviewObject.$element;
99      return selector ? $element.find(selector) : $element;
100    });
101
102    viewportSize   = viewportSize   || getViewportSize();
103    viewportOffset = viewportOffset || getViewportOffset();
104
105    for (; i<inviewObjects.length; i++) {
106      // Ignore elements that are not in the DOM tree
107      if (!$.contains(documentElement, $elements[i][0])) {
108        continue;
109      }
110
111      var $element      = $($elements[i]),
112          elementSize   = { height: $element[0].offsetHeight, width: $element[0].offsetWidth },
113          elementOffset = $element.offset(),
114          inView        = $element.data('inview');
115
116      // Don't ask me why because I haven't figured out yet:
117      // viewportOffset and viewportSize are sometimes suddenly null in Firefox 5.
118      // Even though it sounds weird:
119      // It seems that the execution of this function is interferred by the onresize/onscroll event
120      // where viewportOffset and viewportSize are unset
121      if (!viewportOffset || !viewportSize) {
122        return;
123      }
124
125      if (elementOffset.top + elementSize.height > viewportOffset.top &&
126          elementOffset.top < viewportOffset.top + viewportSize.height &&
127          elementOffset.left + elementSize.width > viewportOffset.left &&
128          elementOffset.left < viewportOffset.left + viewportSize.width) {
129        if (!inView) {
130          $element.data('inview', true).trigger('inview', [true]);
131        }
132      } else if (inView) {
133        $element.data('inview', false).trigger('inview', [false]);
134      }
135    }
136  }
137
138  $(w).bind("scroll resize scrollstop", function() {
139    viewportSize = viewportOffset = null;
140  });
141
142  // IE < 9 scrolls to focused elements without firing the "scroll" event
143  if (!documentElement.addEventListener && documentElement.attachEvent) {
144    documentElement.attachEvent("onfocusin", function() {
145      viewportOffset = null;
146    });
147  }
148}));
149
150
151/***/ }),
152
vendor: 285,755 bytes, lines 153-10879
153/***/ "./node_modules/jquery/dist/jquery.js":
154/*!********************************************!*\
155  !*** ./node_modules/jquery/dist/jquery.js ***!
156  \********************************************/
157/***/ (function(module, exports) {
158
159var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
160 * jQuery JavaScript Library v3.7.1
161 * https://jquery.com/
162 *
163 * Copyright OpenJS Foundation and other contributors
164 * Released under the MIT license
165 * https://jquery.org/license
166 *
167 * Date: 2023-08-28T13:37Z
168 */
169( function( global, factory ) {
170
171	"use strict";
172
173	if (  true && typeof module.exports === "object" ) {
174
175		// For CommonJS and CommonJS-like environments where a proper `window`
176		// is present, execute the factory and get jQuery.
177		// For environments that do not have a `window` with a `document`
178		// (such as Node.js), expose a factory as module.exports.
179		// This accentuates the need for the creation of a real `window`.
180		// e.g. var jQuery = require("jquery")(window);
181		// See ticket trac-14549 for more info.
182		module.exports = global.document ?
183			factory( global, true ) :
184			function( w ) {
185				if ( !w.document ) {
186					throw new Error( "jQuery requires a window with a document" );
187				}
188				return factory( w );
189			};
190	} else {
191		factory( global );
192	}
193
194// Pass this if window is not defined yet
195} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
196
197// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
198// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
199// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
200// enough that all such attempts are guarded in a try block.
201"use strict";
202
203var arr = [];
204
205var getProto = Object.getPrototypeOf;
206
207var slice = arr.slice;
208
209var flat = arr.flat ? function( array ) {
210	return arr.flat.call( array );
211} : function( array ) {
212	return arr.concat.apply( [], array );
213};
214
215
216var push = arr.push;
217
218var indexOf = arr.indexOf;
219
220var class2type = {};
221
222var toString = class2type.toString;
223
224var hasOwn = class2type.hasOwnProperty;
225
226var fnToString = hasOwn.toString;
227
228var ObjectFunctionString = fnToString.call( Object );
229
230var support = {};
231
232var isFunction = function isFunction( obj ) {
233
234		// Support: Chrome <=57, Firefox <=52
235		// In some browsers, typeof returns "function" for HTML <object> elements
236		// (i.e., `typeof document.createElement( "object" ) === "function"`).
237		// We don't want to classify *any* DOM node as a function.
238		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
239		// Plus for old WebKit, typeof returns "function" for HTML collections
240		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
241		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
242			typeof obj.item !== "function";
243	};
244
245
246var isWindow = function isWindow( obj ) {
247		return obj != null && obj === obj.window;
248	};
249
250
251var document = window.document;
252
253
254
255	var preservedScriptAttributes = {
256		type: true,
257		src: true,
258		nonce: true,
259		noModule: true
260	};
261
262	function DOMEval( code, node, doc ) {
263		doc = doc || document;
264
265		var i, val,
266			script = doc.createElement( "script" );
267
268		script.text = code;
269		if ( node ) {
270			for ( i in preservedScriptAttributes ) {
271
272				// Support: Firefox 64+, Edge 18+
273				// Some browsers don't support the "nonce" property on scripts.
274				// On the other hand, just using `getAttribute` is not enough as
275				// the `nonce` attribute is reset to an empty string whenever it
276				// becomes browsing-context connected.
277				// See https://github.com/whatwg/html/issues/2369
278				// See https://html.spec.whatwg.org/#nonce-attributes
279				// The `node.getAttribute` check was added for the sake of
280				// `jQuery.globalEval` so that it can fake a nonce-containing node
281				// via an object.
282				val = node[ i ] || node.getAttribute && node.getAttribute( i );
283				if ( val ) {
284					script.setAttribute( i, val );
285				}
286			}
287		}
288		doc.head.appendChild( script ).parentNode.removeChild( script );
289	}
290
291
292function toType( obj ) {
293	if ( obj == null ) {
294		return obj + "";
295	}
296
297	// Support: Android <=2.3 only (functionish RegExp)
298	return typeof obj === "object" || typeof obj === "function" ?
299		class2type[ toString.call( obj ) ] || "object" :
300		typeof obj;
301}
302/* global Symbol */
303// Defining this global in .eslintrc.json would create a danger of using the global
304// unguarded in another place, it seems safer to define global only for this module
305
306
307
308var version = "3.7.1",
309
310	rhtmlSuffix = /HTML$/i,
311
312	// Define a local copy of jQuery
313	jQuery = function( selector, context ) {
314
315		// The jQuery object is actually just the init constructor 'enhanced'
316		// Need init if jQuery is called (just allow error to be thrown if not included)
317		return new jQuery.fn.init( selector, context );
318	};
319
320jQuery.fn = jQuery.prototype = {
321
322	// The current version of jQuery being used
323	jquery: version,
324
325	constructor: jQuery,
326
327	// The default length of a jQuery object is 0
328	length: 0,
329
330	toArray: function() {
331		return slice.call( this );
332	},
333
334	// Get the Nth element in the matched element set OR
335	// Get the whole matched element set as a clean array
336	get: function( num ) {
337
338		// Return all the elements in a clean array
339		if ( num == null ) {
340			return slice.call( this );
341		}
342
343		// Return just the one element from the set
344		return num < 0 ? this[ num + this.length ] : this[ num ];
345	},
346
347	// Take an array of elements and push it onto the stack
348	// (returning the new matched element set)
349	pushStack: function( elems ) {
350
351		// Build a new jQuery matched element set
352		var ret = jQuery.merge( this.constructor(), elems );
353
354		// Add the old object onto the stack (as a reference)
355		ret.prevObject = this;
356
357		// Return the newly-formed element set
358		return ret;
359	},
360
361	// Execute a callback for every element in the matched set.
362	each: function( callback ) {
363		return jQuery.each( this, callback );
364	},
365
366	map: function( callback ) {
367		return this.pushStack( jQuery.map( this, function( elem, i ) {
368			return callback.call( elem, i, elem );
369		} ) );
370	},
371
372	slice: function() {
373		return this.pushStack( slice.apply( this, arguments ) );
374	},
375
376	first: function() {
377		return this.eq( 0 );
378	},
379
380	last: function() {
381		return this.eq( -1 );
382	},
383
384	even: function() {
385		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
386			return ( i + 1 ) % 2;
387		} ) );
388	},
389
390	odd: function() {
391		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
392			return i % 2;
393		} ) );
394	},
395
396	eq: function( i ) {
397		var len = this.length,
398			j = +i + ( i < 0 ? len : 0 );
399		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
400	},
401
402	end: function() {
403		return this.prevObject || this.constructor();
404	},
405
406	// For internal use only.
407	// Behaves like an Array's method, not like a jQuery method.
408	push: push,
409	sort: arr.sort,
410	splice: arr.splice
411};
412
413jQuery.extend = jQuery.fn.extend = function() {
414	var options, name, src, copy, copyIsArray, clone,
415		target = arguments[ 0 ] || {},
416		i = 1,
417		length = arguments.length,
418		deep = false;
419
420	// Handle a deep copy situation
421	if ( typeof target === "boolean" ) {
422		deep = target;
423
424		// Skip the boolean and the target
425		target = arguments[ i ] || {};
426		i++;
427	}
428
429	// Handle case when target is a string or something (possible in deep copy)
430	if ( typeof target !== "object" && !isFunction( target ) ) {
431		target = {};
432	}
433
434	// Extend jQuery itself if only one argument is passed
435	if ( i === length ) {
436		target = this;
437		i--;
438	}
439
440	for ( ; i < length; i++ ) {
441
442		// Only deal with non-null/undefined values
443		if ( ( options = arguments[ i ] ) != null ) {
444
445			// Extend the base object
446			for ( name in options ) {
447				copy = options[ name ];
448
449				// Prevent Object.prototype pollution
450				// Prevent never-ending loop
451				if ( name === "__proto__" || target === copy ) {
452					continue;
453				}
454
455				// Recurse if we're merging plain objects or arrays
456				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
457					( copyIsArray = Array.isArray( copy ) ) ) ) {
458					src = target[ name ];
459
460					// Ensure proper type for the source value
461					if ( copyIsArray && !Array.isArray( src ) ) {
462						clone = [];
463					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
464						clone = {};
465					} else {
466						clone = src;
467					}
468					copyIsArray = false;
469
470					// Never move original objects, clone them
471					target[ name ] = jQuery.extend( deep, clone, copy );
472
473				// Don't bring in undefined values
474				} else if ( copy !== undefined ) {
475					target[ name ] = copy;
476				}
477			}
478		}
479	}
480
481	// Return the modified object
482	return target;
483};
484
485jQuery.extend( {
486
487	// Unique for each copy of jQuery on the page
488	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
489
490	// Assume jQuery is ready without the ready module
491	isReady: true,
492
493	error: function( msg ) {
494		throw new Error( msg );
495	},
496
497	noop: function() {},
498
499	isPlainObject: function( obj ) {
500		var proto, Ctor;
501
502		// Detect obvious negatives
503		// Use toString instead of jQuery.type to catch host objects
504		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
505			return false;
506		}
507
508		proto = getProto( obj );
509
510		// Objects with no prototype (e.g., `Object.create( null )`) are plain
511		if ( !proto ) {
512			return true;
513		}
514
515		// Objects with prototype are plain iff they were constructed by a global Object function
516		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
517		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
518	},
519
520	isEmptyObject: function( obj ) {
521		var name;
522
523		for ( name in obj ) {
524			return false;
525		}
526		return true;
527	},
528
529	// Evaluates a script in a provided context; falls back to the global one
530	// if not specified.
531	globalEval: function( code, options, doc ) {
532		DOMEval( code, { nonce: options && options.nonce }, doc );
533	},
534
535	each: function( obj, callback ) {
536		var length, i = 0;
537
538		if ( isArrayLike( obj ) ) {
539			length = obj.length;
540			for ( ; i < length; i++ ) {
541				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
542					break;
543				}
544			}
545		} else {
546			for ( i in obj ) {
547				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
548					break;
549				}
550			}
551		}
552
553		return obj;
554	},
555
556
557	// Retrieve the text value of an array of DOM nodes
558	text: function( elem ) {
559		var node,
560			ret = "",
561			i = 0,
562			nodeType = elem.nodeType;
563
564		if ( !nodeType ) {
565
566			// If no nodeType, this is expected to be an array
567			while ( ( node = elem[ i++ ] ) ) {
568
569				// Do not traverse comment nodes
570				ret += jQuery.text( node );
571			}
572		}
573		if ( nodeType === 1 || nodeType === 11 ) {
574			return elem.textContent;
575		}
576		if ( nodeType === 9 ) {
577			return elem.documentElement.textContent;
578		}
579		if ( nodeType === 3 || nodeType === 4 ) {
580			return elem.nodeValue;
581		}
582
583		// Do not include comment or processing instruction nodes
584
585		return ret;
586	},
587
588	// results is for internal usage only
589	makeArray: function( arr, results ) {
590		var ret = results || [];
591
592		if ( arr != null ) {
593			if ( isArrayLike( Object( arr ) ) ) {
594				jQuery.merge( ret,
595					typeof arr === "string" ?
596						[ arr ] : arr
597				);
598			} else {
599				push.call( ret, arr );
600			}
601		}
602
603		return ret;
604	},
605
606	inArray: function( elem, arr, i ) {
607		return arr == null ? -1 : indexOf.call( arr, elem, i );
608	},
609
610	isXMLDoc: function( elem ) {
611		var namespace = elem && elem.namespaceURI,
612			docElem = elem && ( elem.ownerDocument || elem ).documentElement;
613
614		// Assume HTML when documentElement doesn't yet exist, such as inside
615		// document fragments.
616		return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
617	},
618
619	// Support: Android <=4.0 only, PhantomJS 1 only
620	// push.apply(_, arraylike) throws on ancient WebKit
621	merge: function( first, second ) {
622		var len = +second.length,
623			j = 0,
624			i = first.length;
625
626		for ( ; j < len; j++ ) {
627			first[ i++ ] = second[ j ];
628		}
629
630		first.length = i;
631
632		return first;
633	},
634
635	grep: function( elems, callback, invert ) {
636		var callbackInverse,
637			matches = [],
638			i = 0,
639			length = elems.length,
640			callbackExpect = !invert;
641
642		// Go through the array, only saving the items
643		// that pass the validator function
644		for ( ; i < length; i++ ) {
645			callbackInverse = !callback( elems[ i ], i );
646			if ( callbackInverse !== callbackExpect ) {
647				matches.push( elems[ i ] );
648			}
649		}
650
651		return matches;
652	},
653
654	// arg is for internal usage only
655	map: function( elems, callback, arg ) {
656		var length, value,
657			i = 0,
658			ret = [];
659
660		// Go through the array, translating each of the items to their new values
661		if ( isArrayLike( elems ) ) {
662			length = elems.length;
663			for ( ; i < length; i++ ) {
664				value = callback( elems[ i ], i, arg );
665
666				if ( value != null ) {
667					ret.push( value );
668				}
669			}
670
671		// Go through every key on the object,
672		} else {
673			for ( i in elems ) {
674				value = callback( elems[ i ], i, arg );
675
676				if ( value != null ) {
677					ret.push( value );
678				}
679			}
680		}
681
682		// Flatten any nested arrays
683		return flat( ret );
684	},
685
686	// A global GUID counter for objects
687	guid: 1,
688
689	// jQuery.support is not used in Core but other projects attach their
690	// properties to it so it needs to exist.
691	support: support
692} );
693
694if ( typeof Symbol === "function" ) {
695	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
696}
697
698// Populate the class2type map
699jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
700	function( _i, name ) {
701		class2type[ "[object " + name + "]" ] = name.toLowerCase();
702	} );
703
704function isArrayLike( obj ) {
705
706	// Support: real iOS 8.2 only (not reproducible in simulator)
707	// `in` check used to prevent JIT error (gh-2145)
708	// hasOwn isn't used here due to false negatives
709	// regarding Nodelist length in IE
710	var length = !!obj && "length" in obj && obj.length,
711		type = toType( obj );
712
713	if ( isFunction( obj ) || isWindow( obj ) ) {
714		return false;
715	}
716
717	return type === "array" || length === 0 ||
718		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
719}
720
721
722function nodeName( elem, name ) {
723
724	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
725
726}
727var pop = arr.pop;
728
729
730var sort = arr.sort;
731
732
733var splice = arr.splice;
734
735
736var whitespace = "[\\x20\\t\\r\\n\\f]";
737
738
739var rtrimCSS = new RegExp(
740	"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
741	"g"
742);
743
744
745
746
747// Note: an element does not contain itself
748jQuery.contains = function( a, b ) {
749	var bup = b && b.parentNode;
750
751	return a === bup || !!( bup && bup.nodeType === 1 && (
752
753		// Support: IE 9 - 11+
754		// IE doesn't have `contains` on SVG.
755		a.contains ?
756			a.contains( bup ) :
757			a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
758	) );
759};
760
761
762
763
764// CSS string/identifier serialization
765// https://drafts.csswg.org/cssom/#common-serializing-idioms
766var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
767
768function fcssescape( ch, asCodePoint ) {
769	if ( asCodePoint ) {
770
771		// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
772		if ( ch === "\0" ) {
773			return "\uFFFD";
774		}
775
776		// Control characters and (dependent upon position) numbers get escaped as code points
777		return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
778	}
779
780	// Other potentially-special ASCII characters get backslash-escaped
781	return "\\" + ch;
782}
783
784jQuery.escapeSelector = function( sel ) {
785	return ( sel + "" ).replace( rcssescape, fcssescape );
786};
787
788
789
790
791var preferredDoc = document,
792	pushNative = push;
793
794( function() {
795
796var i,
797	Expr,
798	outermostContext,
799	sortInput,
800	hasDuplicate,
801	push = pushNative,
802
803	// Local document vars
804	document,
805	documentElement,
806	documentIsHTML,
807	rbuggyQSA,
808	matches,
809
810	// Instance-specific data
811	expando = jQuery.expando,
812	dirruns = 0,
813	done = 0,
814	classCache = createCache(),
815	tokenCache = createCache(),
816	compilerCache = createCache(),
817	nonnativeSelectorCache = createCache(),
818	sortOrder = function( a, b ) {
819		if ( a === b ) {
820			hasDuplicate = true;
821		}
822		return 0;
823	},
824
825	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
826		"loop|multiple|open|readonly|required|scoped",
827
828	// Regular expressions
829
830	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
831	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
832		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
833
834	// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
835	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
836
837		// Operator (capture 2)
838		"*([*^$|!~]?=)" + whitespace +
839
840		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
841		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
842		whitespace + "*\\]",
843
844	pseudos = ":(" + identifier + ")(?:\\((" +
845
846		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
847		// 1. quoted (capture 3; capture 4 or capture 5)
848		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
849
850		// 2. simple (capture 6)
851		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
852
853		// 3. anything else (capture 2)
854		".*" +
855		")\\)|)",
856
857	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
858	rwhitespace = new RegExp( whitespace + "+", "g" ),
859
860	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
861	rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" +
862		whitespace + "*" ),
863	rdescend = new RegExp( whitespace + "|>" ),
864
865	rpseudo = new RegExp( pseudos ),
866	ridentifier = new RegExp( "^" + identifier + "$" ),
867
868	matchExpr = {
869		ID: new RegExp( "^#(" + identifier + ")" ),
870		CLASS: new RegExp( "^\\.(" + identifier + ")" ),
871		TAG: new RegExp( "^(" + identifier + "|[*])" ),
872		ATTR: new RegExp( "^" + attributes ),
873		PSEUDO: new RegExp( "^" + pseudos ),
874		CHILD: new RegExp(
875			"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
876				whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
877				whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
878		bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
879
880		// For use in libraries implementing .is()
881		// We use this for POS matching in `select`
882		needsContext: new RegExp( "^" + whitespace +
883			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
884			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
885	},
886
887	rinputs = /^(?:input|select|textarea|button)$/i,
888	rheader = /^h\d$/i,
889
890	// Easily-parseable/retrievable ID or TAG or CLASS selectors
891	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
892
893	rsibling = /[+~]/,
894
895	// CSS escapes
896	// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
897	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
898		"?|\\\\([^\\r\\n\\f])", "g" ),
899	funescape = function( escape, nonHex ) {
900		var high = "0x" + escape.slice( 1 ) - 0x10000;
901
902		if ( nonHex ) {
903
904			// Strip the backslash prefix from a non-hex escape sequence
905			return nonHex;
906		}
907
908		// Replace a hexadecimal escape sequence with the encoded Unicode code point
909		// Support: IE <=11+
910		// For values outside the Basic Multilingual Plane (BMP), manually construct a
911		// surrogate pair
912		return high < 0 ?
913			String.fromCharCode( high + 0x10000 ) :
914			String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
915	},
916
917	// Used for iframes; see `setDocument`.
918	// Support: IE 9 - 11+, Edge 12 - 18+
919	// Removing the function wrapper causes a "Permission Denied"
920	// error in IE/Edge.
921	unloadHandler = function() {
922		setDocument();
923	},
924
925	inDisabledFieldset = addCombinator(
926		function( elem ) {
927			return elem.disabled === true && nodeName( elem, "fieldset" );
928		},
929		{ dir: "parentNode", next: "legend" }
930	);
931
932// Support: IE <=9 only
933// Accessing document.activeElement can throw unexpectedly
934// https://bugs.jquery.com/ticket/13393
935function safeActiveElement() {
936	try {
937		return document.activeElement;
938	} catch ( err ) { }
939}
940
941// Optimize for push.apply( _, NodeList )
942try {
943	push.apply(
944		( arr = slice.call( preferredDoc.childNodes ) ),
945		preferredDoc.childNodes
946	);
947
948	// Support: Android <=4.0
949	// Detect silently failing push.apply
950	// eslint-disable-next-line no-unused-expressions
951	arr[ preferredDoc.childNodes.length ].nodeType;
952} catch ( e ) {
953	push = {
954		apply: function( target, els ) {
955			pushNative.apply( target, slice.call( els ) );
956		},
957		call: function( target ) {
958			pushNative.apply( target, slice.call( arguments, 1 ) );
959		}
960	};
961}
962
963function find( selector, context, results, seed ) {
964	var m, i, elem, nid, match, groups, newSelector,
965		newContext = context && context.ownerDocument,
966
967		// nodeType defaults to 9, since context defaults to document
968		nodeType = context ? context.nodeType : 9;
969
970	results = results || [];
971
972	// Return early from calls with invalid selector or context
973	if ( typeof selector !== "string" || !selector ||
974		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
975
976		return results;
977	}
978
979	// Try to shortcut find operations (as opposed to filters) in HTML documents
980	if ( !seed ) {
981		setDocument( context );
982		context = context || document;
983
984		if ( documentIsHTML ) {
985
986			// If the selector is sufficiently simple, try using a "get*By*" DOM method
987			// (excepting DocumentFragment context, where the methods don't exist)
988			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
989
990				// ID selector
991				if ( ( m = match[ 1 ] ) ) {
992
993					// Document context
994					if ( nodeType === 9 ) {
995						if ( ( elem = context.getElementById( m ) ) ) {
996
997							// Support: IE 9 only
998							// getElementById can match elements by name instead of ID
999							if ( elem.id === m ) {
1000								push.call( results, elem );
1001								return results;
1002							}
1003						} else {
1004							return results;
1005						}
1006
1007					// Element context
1008					} else {
1009
1010						// Support: IE 9 only
1011						// getElementById can match elements by name instead of ID
1012						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
1013							find.contains( context, elem ) &&
1014							elem.id === m ) {
1015
1016							push.call( results, elem );
1017							return results;
1018						}
1019					}
1020
1021				// Type selector
1022				} else if ( match[ 2 ] ) {
1023					push.apply( results, context.getElementsByTagName( selector ) );
1024					return results;
1025
1026				// Class selector
1027				} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {
1028					push.apply( results, context.getElementsByClassName( m ) );
1029					return results;
1030				}
1031			}
1032
1033			// Take advantage of querySelectorAll
1034			if ( !nonnativeSelectorCache[ selector + " " ] &&
1035				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {
1036
1037				newSelector = selector;
1038				newContext = context;
1039
1040				// qSA considers elements outside a scoping root when evaluating child or
1041				// descendant combinators, which is not what we want.
1042				// In such cases, we work around the behavior by prefixing every selector in the
1043				// list with an ID selector referencing the scope context.
1044				// The technique has to be used as well when a leading combinator is used
1045				// as such selectors are not recognized by querySelectorAll.
1046				// Thanks to Andrew Dupont for this technique.
1047				if ( nodeType === 1 &&
1048					( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {
1049
1050					// Expand context for sibling selectors
1051					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
1052						context;
1053
1054					// We can use :scope instead of the ID hack if the browser
1055					// supports it & if we're not changing the context.
1056					// Support: IE 11+, Edge 17 - 18+
1057					// IE/Edge sometimes throw a "Permission denied" error when
1058					// strict-comparing two documents; shallow comparisons work.
1059					// eslint-disable-next-line eqeqeq
1060					if ( newContext != context || !support.scope ) {
1061
1062						// Capture the context ID, setting it first if necessary
1063						if ( ( nid = context.getAttribute( "id" ) ) ) {
1064							nid = jQuery.escapeSelector( nid );
1065						} else {
1066							context.setAttribute( "id", ( nid = expando ) );
1067						}
1068					}
1069
1070					// Prefix every selector in the list
1071					groups = tokenize( selector );
1072					i = groups.length;
1073					while ( i-- ) {
1074						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
1075							toSelector( groups[ i ] );
1076					}
1077					newSelector = groups.join( "," );
1078				}
1079
1080				try {
1081					push.apply( results,
1082						newContext.querySelectorAll( newSelector )
1083					);
1084					return results;
1085				} catch ( qsaError ) {
1086					nonnativeSelectorCache( selector, true );
1087				} finally {
1088					if ( nid === expando ) {
1089						context.removeAttribute( "id" );
1090					}
1091				}
1092			}
1093		}
1094	}
1095
1096	// All others
1097	return select( selector.replace( rtrimCSS, "$1" ), context, results, seed );
1098}
1099
1100/**
1101 * Create key-value caches of limited size
1102 * @returns {function(string, object)} Returns the Object data after storing it on itself with
1103 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
1104 *	deleting the oldest entry
1105 */
1106function createCache() {
1107	var keys = [];
1108
1109	function cache( key, value ) {
1110
1111		// Use (key + " ") to avoid collision with native prototype properties
1112		// (see https://github.com/jquery/sizzle/issues/157)
1113		if ( keys.push( key + " " ) > Expr.cacheLength ) {
1114
1115			// Only keep the most recent entries
1116			delete cache[ keys.shift() ];
1117		}
1118		return ( cache[ key + " " ] = value );
1119	}
1120	return cache;
1121}
1122
1123/**
1124 * Mark a function for special use by jQuery selector module
1125 * @param {Function} fn The function to mark
1126 */
1127function markFunction( fn ) {
1128	fn[ expando ] = true;
1129	return fn;
1130}
1131
1132/**
1133 * Support testing using an element
1134 * @param {Function} fn Passed the created element and returns a boolean result
1135 */
1136function assert( fn ) {
1137	var el = document.createElement( "fieldset" );
1138
1139	try {
1140		return !!fn( el );
1141	} catch ( e ) {
1142		return false;
1143	} finally {
1144
1145		// Remove from its parent by default
1146		if ( el.parentNode ) {
1147			el.parentNode.removeChild( el );
1148		}
1149
1150		// release memory in IE
1151		el = null;
1152	}
1153}
1154
1155/**
1156 * Returns a function to use in pseudos for input types
1157 * @param {String} type
1158 */
1159function createInputPseudo( type ) {
1160	return function( elem ) {
1161		return nodeName( elem, "input" ) && elem.type === type;
1162	};
1163}
1164
1165/**
1166 * Returns a function to use in pseudos for buttons
1167 * @param {String} type
1168 */
1169function createButtonPseudo( type ) {
1170	return function( elem ) {
1171		return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) &&
1172			elem.type === type;
1173	};
1174}
1175
1176/**
1177 * Returns a function to use in pseudos for :enabled/:disabled
1178 * @param {Boolean} disabled true for :disabled; false for :enabled
1179 */
1180function createDisabledPseudo( disabled ) {
1181
1182	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1183	return function( elem ) {
1184
1185		// Only certain elements can match :enabled or :disabled
1186		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
1187		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
1188		if ( "form" in elem ) {
1189
1190			// Check for inherited disabledness on relevant non-disabled elements:
1191			// * listed form-associated elements in a disabled fieldset
1192			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
1193			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
1194			// * option elements in a disabled optgroup
1195			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
1196			// All such elements have a "form" property.
1197			if ( elem.parentNode && elem.disabled === false ) {
1198
1199				// Option elements defer to a parent optgroup if present
1200				if ( "label" in elem ) {
1201					if ( "label" in elem.parentNode ) {
1202						return elem.parentNode.disabled === disabled;
1203					} else {
1204						return elem.disabled === disabled;
1205					}
1206				}
1207
1208				// Support: IE 6 - 11+
1209				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
1210				return elem.isDisabled === disabled ||
1211
1212					// Where there is no isDisabled, check manually
1213					elem.isDisabled !== !disabled &&
1214						inDisabledFieldset( elem ) === disabled;
1215			}
1216
1217			return elem.disabled === disabled;
1218
1219		// Try to winnow out elements that can't be disabled before trusting the disabled property.
1220		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
1221		// even exist on them, let alone have a boolean value.
1222		} else if ( "label" in elem ) {
1223			return elem.disabled === disabled;
1224		}
1225
1226		// Remaining elements are neither :enabled nor :disabled
1227		return false;
1228	};
1229}
1230
1231/**
1232 * Returns a function to use in pseudos for positionals
1233 * @param {Function} fn
1234 */
1235function createPositionalPseudo( fn ) {
1236	return markFunction( function( argument ) {
1237		argument = +argument;
1238		return markFunction( function( seed, matches ) {
1239			var j,
1240				matchIndexes = fn( [], seed.length, argument ),
1241				i = matchIndexes.length;
1242
1243			// Match elements found at the specified indexes
1244			while ( i-- ) {
1245				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
1246					seed[ j ] = !( matches[ j ] = seed[ j ] );
1247				}
1248			}
1249		} );
1250	} );
1251}
1252
1253/**
1254 * Checks a node for validity as a jQuery selector context
1255 * @param {Element|Object=} context
1256 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1257 */
1258function testContext( context ) {
1259	return context && typeof context.getElementsByTagName !== "undefined" && context;
1260}
1261
1262/**
1263 * Sets document-related variables once based on the current document
1264 * @param {Element|Object} [node] An element or document object to use to set the document
1265 * @returns {Object} Returns the current document
1266 */
1267function setDocument( node ) {
1268	var subWindow,
1269		doc = node ? node.ownerDocument || node : preferredDoc;
1270
1271	// Return early if doc is invalid or already selected
1272	// Support: IE 11+, Edge 17 - 18+
1273	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1274	// two documents; shallow comparisons work.
1275	// eslint-disable-next-line eqeqeq
1276	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
1277		return document;
1278	}
1279
1280	// Update global variables
1281	document = doc;
1282	documentElement = document.documentElement;
1283	documentIsHTML = !jQuery.isXMLDoc( document );
1284
1285	// Support: iOS 7 only, IE 9 - 11+
1286	// Older browsers didn't support unprefixed `matches`.
1287	matches = documentElement.matches ||
1288		documentElement.webkitMatchesSelector ||
1289		documentElement.msMatchesSelector;
1290
1291	// Support: IE 9 - 11+, Edge 12 - 18+
1292	// Accessing iframe documents after unload throws "permission denied" errors
1293	// (see trac-13936).
1294	// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
1295	// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
1296	if ( documentElement.msMatchesSelector &&
1297
1298		// Support: IE 11+, Edge 17 - 18+
1299		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1300		// two documents; shallow comparisons work.
1301		// eslint-disable-next-line eqeqeq
1302		preferredDoc != document &&
1303		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
1304
1305		// Support: IE 9 - 11+, Edge 12 - 18+
1306		subWindow.addEventListener( "unload", unloadHandler );
1307	}
1308
1309	// Support: IE <10
1310	// Check if getElementById returns elements by name
1311	// The broken getElementById methods don't pick up programmatically-set names,
1312	// so use a roundabout getElementsByName test
1313	support.getById = assert( function( el ) {
1314		documentElement.appendChild( el ).id = jQuery.expando;
1315		return !document.getElementsByName ||
1316			!document.getElementsByName( jQuery.expando ).length;
1317	} );
1318
1319	// Support: IE 9 only
1320	// Check to see if it's possible to do matchesSelector
1321	// on a disconnected node.
1322	support.disconnectedMatch = assert( function( el ) {
1323		return matches.call( el, "*" );
1324	} );
1325
1326	// Support: IE 9 - 11+, Edge 12 - 18+
1327	// IE/Edge don't support the :scope pseudo-class.
1328	support.scope = assert( function() {
1329		return document.querySelectorAll( ":scope" );
1330	} );
1331
1332	// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
1333	// Make sure the `:has()` argument is parsed unforgivingly.
1334	// We include `*` in the test to detect buggy implementations that are
1335	// _selectively_ forgiving (specifically when the list includes at least
1336	// one valid selector).
1337	// Note that we treat complete lack of support for `:has()` as if it were
1338	// spec-compliant support, which is fine because use of `:has()` in such
1339	// environments will fail in the qSA path and fall back to jQuery traversal
1340	// anyway.
1341	support.cssHas = assert( function() {
1342		try {
1343			document.querySelector( ":has(*,:jqfake)" );
1344			return false;
1345		} catch ( e ) {
1346			return true;
1347		}
1348	} );
1349
1350	// ID filter and find
1351	if ( support.getById ) {
1352		Expr.filter.ID = function( id ) {
1353			var attrId = id.replace( runescape, funescape );
1354			return function( elem ) {
1355				return elem.getAttribute( "id" ) === attrId;
1356			};
1357		};
1358		Expr.find.ID = function( id, context ) {
1359			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1360				var elem = context.getElementById( id );
1361				return elem ? [ elem ] : [];
1362			}
1363		};
1364	} else {
1365		Expr.filter.ID =  function( id ) {
1366			var attrId = id.replace( runescape, funescape );
1367			return function( elem ) {
1368				var node = typeof elem.getAttributeNode !== "undefined" &&
1369					elem.getAttributeNode( "id" );
1370				return node && node.value === attrId;
1371			};
1372		};
1373
1374		// Support: IE 6 - 7 only
1375		// getElementById is not reliable as a find shortcut
1376		Expr.find.ID = function( id, context ) {
1377			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
1378				var node, i, elems,
1379					elem = context.getElementById( id );
1380
1381				if ( elem ) {
1382
1383					// Verify the id attribute
1384					node = elem.getAttributeNode( "id" );
1385					if ( node && node.value === id ) {
1386						return [ elem ];
1387					}
1388
1389					// Fall back on getElementsByName
1390					elems = context.getElementsByName( id );
1391					i = 0;
1392					while ( ( elem = elems[ i++ ] ) ) {
1393						node = elem.getAttributeNode( "id" );
1394						if ( node && node.value === id ) {
1395							return [ elem ];
1396						}
1397					}
1398				}
1399
1400				return [];
1401			}
1402		};
1403	}
1404
1405	// Tag
1406	Expr.find.TAG = function( tag, context ) {
1407		if ( typeof context.getElementsByTagName !== "undefined" ) {
1408			return context.getElementsByTagName( tag );
1409
1410		// DocumentFragment nodes don't have gEBTN
1411		} else {
1412			return context.querySelectorAll( tag );
1413		}
1414	};
1415
1416	// Class
1417	Expr.find.CLASS = function( className, context ) {
1418		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
1419			return context.getElementsByClassName( className );
1420		}
1421	};
1422
1423	/* QSA/matchesSelector
1424	---------------------------------------------------------------------- */
1425
1426	// QSA and matchesSelector support
1427
1428	rbuggyQSA = [];
1429
1430	// Build QSA regex
1431	// Regex strategy adopted from Diego Perini
1432	assert( function( el ) {
1433
1434		var input;
1435
1436		documentElement.appendChild( el ).innerHTML =
1437			"<a id='" + expando + "' href='' disabled='disabled'></a>" +
1438			"<select id='" + expando + "-\r\\' disabled='disabled'>" +
1439			"<option selected=''></option></select>";
1440
1441		// Support: iOS <=7 - 8 only
1442		// Boolean attributes and "value" are not treated correctly in some XML documents
1443		if ( !el.querySelectorAll( "[selected]" ).length ) {
1444			rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1445		}
1446
1447		// Support: iOS <=7 - 8 only
1448		if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
1449			rbuggyQSA.push( "~=" );
1450		}
1451
1452		// Support: iOS 8 only
1453		// https://bugs.webkit.org/show_bug.cgi?id=136851
1454		// In-page `selector#id sibling-combinator selector` fails
1455		if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
1456			rbuggyQSA.push( ".#.+[+~]" );
1457		}
1458
1459		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
1460		// In some of the document kinds, these selectors wouldn't work natively.
1461		// This is probably OK but for backwards compatibility we want to maintain
1462		// handling them through jQuery traversal in jQuery 3.x.
1463		if ( !el.querySelectorAll( ":checked" ).length ) {
1464			rbuggyQSA.push( ":checked" );
1465		}
1466
1467		// Support: Windows 8 Native Apps
1468		// The type and name attributes are restricted during .innerHTML assignment
1469		input = document.createElement( "input" );
1470		input.setAttribute( "type", "hidden" );
1471		el.appendChild( input ).setAttribute( "name", "D" );
1472
1473		// Support: IE 9 - 11+
1474		// IE's :disabled selector does not pick up the children of disabled fieldsets
1475		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
1476		// In some of the document kinds, these selectors wouldn't work natively.
1477		// This is probably OK but for backwards compatibility we want to maintain
1478		// handling them through jQuery traversal in jQuery 3.x.
1479		documentElement.appendChild( el ).disabled = true;
1480		if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
1481			rbuggyQSA.push( ":enabled", ":disabled" );
1482		}
1483
1484		// Support: IE 11+, Edge 15 - 18+
1485		// IE 11/Edge don't find elements on a `[name='']` query in some cases.
1486		// Adding a temporary attribute to the document before the selection works
1487		// around the issue.
1488		// Interestingly, IE 10 & older don't seem to have the issue.
1489		input = document.createElement( "input" );
1490		input.setAttribute( "name", "" );
1491		el.appendChild( input );
1492		if ( !el.querySelectorAll( "[name='']" ).length ) {
1493			rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
1494				whitespace + "*(?:''|\"\")" );
1495		}
1496	} );
1497
1498	if ( !support.cssHas ) {
1499
1500		// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
1501		// Our regular `try-catch` mechanism fails to detect natively-unsupported
1502		// pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`)
1503		// in browsers that parse the `:has()` argument as a forgiving selector list.
1504		// https://drafts.csswg.org/selectors/#relational now requires the argument
1505		// to be parsed unforgivingly, but browsers have not yet fully adjusted.
1506		rbuggyQSA.push( ":has" );
1507	}
1508
1509	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
1510
1511	/* Sorting
1512	---------------------------------------------------------------------- */
1513
1514	// Document order sorting
1515	sortOrder = function( a, b ) {
1516
1517		// Flag for duplicate removal
1518		if ( a === b ) {
1519			hasDuplicate = true;
1520			return 0;
1521		}
1522
1523		// Sort on method existence if only one input has compareDocumentPosition
1524		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1525		if ( compare ) {
1526			return compare;
1527		}
1528
1529		// Calculate position if both inputs belong to the same document
1530		// Support: IE 11+, Edge 17 - 18+
1531		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1532		// two documents; shallow comparisons work.
1533		// eslint-disable-next-line eqeqeq
1534		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
1535			a.compareDocumentPosition( b ) :
1536
1537			// Otherwise we know they are disconnected
1538			1;
1539
1540		// Disconnected nodes
1541		if ( compare & 1 ||
1542			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
1543
1544			// Choose the first element that is related to our preferred document
1545			// Support: IE 11+, Edge 17 - 18+
1546			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1547			// two documents; shallow comparisons work.
1548			// eslint-disable-next-line eqeqeq
1549			if ( a === document || a.ownerDocument == preferredDoc &&
1550				find.contains( preferredDoc, a ) ) {
1551				return -1;
1552			}
1553
1554			// Support: IE 11+, Edge 17 - 18+
1555			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1556			// two documents; shallow comparisons work.
1557			// eslint-disable-next-line eqeqeq
1558			if ( b === document || b.ownerDocument == preferredDoc &&
1559				find.contains( preferredDoc, b ) ) {
1560				return 1;
1561			}
1562
1563			// Maintain original order
1564			return sortInput ?
1565				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
1566				0;
1567		}
1568
1569		return compare & 4 ? -1 : 1;
1570	};
1571
1572	return document;
1573}
1574
1575find.matches = function( expr, elements ) {
1576	return find( expr, null, null, elements );
1577};
1578
1579find.matchesSelector = function( elem, expr ) {
1580	setDocument( elem );
1581
1582	if ( documentIsHTML &&
1583		!nonnativeSelectorCache[ expr + " " ] &&
1584		( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
1585
1586		try {
1587			var ret = matches.call( elem, expr );
1588
1589			// IE 9's matchesSelector returns false on disconnected nodes
1590			if ( ret || support.disconnectedMatch ||
1591
1592					// As well, disconnected nodes are said to be in a document
1593					// fragment in IE 9
1594					elem.document && elem.document.nodeType !== 11 ) {
1595				return ret;
1596			}
1597		} catch ( e ) {
1598			nonnativeSelectorCache( expr, true );
1599		}
1600	}
1601
1602	return find( expr, document, null, [ elem ] ).length > 0;
1603};
1604
1605find.contains = function( context, elem ) {
1606
1607	// Set document vars if needed
1608	// Support: IE 11+, Edge 17 - 18+
1609	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1610	// two documents; shallow comparisons work.
1611	// eslint-disable-next-line eqeqeq
1612	if ( ( context.ownerDocument || context ) != document ) {
1613		setDocument( context );
1614	}
1615	return jQuery.contains( context, elem );
1616};
1617
1618
1619find.attr = function( elem, name ) {
1620
1621	// Set document vars if needed
1622	// Support: IE 11+, Edge 17 - 18+
1623	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
1624	// two documents; shallow comparisons work.
1625	// eslint-disable-next-line eqeqeq
1626	if ( ( elem.ownerDocument || elem ) != document ) {
1627		setDocument( elem );
1628	}
1629
1630	var fn = Expr.attrHandle[ name.toLowerCase() ],
1631
1632		// Don't get fooled by Object.prototype properties (see trac-13807)
1633		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1634			fn( elem, name, !documentIsHTML ) :
1635			undefined;
1636
1637	if ( val !== undefined ) {
1638		return val;
1639	}
1640
1641	return elem.getAttribute( name );
1642};
1643
1644find.error = function( msg ) {
1645	throw new Error( "Syntax error, unrecognized expression: " + msg );
1646};
1647
1648/**
1649 * Document sorting and removing duplicates
1650 * @param {ArrayLike} results
1651 */
1652jQuery.uniqueSort = function( results ) {
1653	var elem,
1654		duplicates = [],
1655		j = 0,
1656		i = 0;
1657
1658	// Unless we *know* we can detect duplicates, assume their presence
1659	//
1660	// Support: Android <=4.0+
1661	// Testing for detecting duplicates is unpredictable so instead assume we can't
1662	// depend on duplicate detection in all browsers without a stable sort.
1663	hasDuplicate = !support.sortStable;
1664	sortInput = !support.sortStable && slice.call( results, 0 );
1665	sort.call( results, sortOrder );
1666
1667	if ( hasDuplicate ) {
1668		while ( ( elem = results[ i++ ] ) ) {
1669			if ( elem === results[ i ] ) {
1670				j = duplicates.push( i );
1671			}
1672		}
1673		while ( j-- ) {
1674			splice.call( results, duplicates[ j ], 1 );
1675		}
1676	}
1677
1678	// Clear input after sorting to release objects
1679	// See https://github.com/jquery/sizzle/pull/225
1680	sortInput = null;
1681
1682	return results;
1683};
1684
1685jQuery.fn.uniqueSort = function() {
1686	return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );
1687};
1688
1689Expr = jQuery.expr = {
1690
1691	// Can be adjusted by the user
1692	cacheLength: 50,
1693
1694	createPseudo: markFunction,
1695
1696	match: matchExpr,
1697
1698	attrHandle: {},
1699
1700	find: {},
1701
1702	relative: {
1703		">": { dir: "parentNode", first: true },
1704		" ": { dir: "parentNode" },
1705		"+": { dir: "previousSibling", first: true },
1706		"~": { dir: "previousSibling" }
1707	},
1708
1709	preFilter: {
1710		ATTR: function( match ) {
1711			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
1712
1713			// Move the given value to match[3] whether quoted or unquoted
1714			match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" )
1715				.replace( runescape, funescape );
1716
1717			if ( match[ 2 ] === "~=" ) {
1718				match[ 3 ] = " " + match[ 3 ] + " ";
1719			}
1720
1721			return match.slice( 0, 4 );
1722		},
1723
1724		CHILD: function( match ) {
1725
1726			/* matches from matchExpr["CHILD"]
1727				1 type (only|nth|...)
1728				2 what (child|of-type)
1729				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1730				4 xn-component of xn+y argument ([+-]?\d*n|)
1731				5 sign of xn-component
1732				6 x of xn-component
1733				7 sign of y-component
1734				8 y of y-component
1735			*/
1736			match[ 1 ] = match[ 1 ].toLowerCase();
1737
1738			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
1739
1740				// nth-* requires argument
1741				if ( !match[ 3 ] ) {
1742					find.error( match[ 0 ] );
1743				}
1744
1745				// numeric x and y parameters for Expr.filter.CHILD
1746				// remember that false/true cast respectively to 0/1
1747				match[ 4 ] = +( match[ 4 ] ?
1748					match[ 5 ] + ( match[ 6 ] || 1 ) :
1749					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
1750				);
1751				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
1752
1753			// other types prohibit arguments
1754			} else if ( match[ 3 ] ) {
1755				find.error( match[ 0 ] );
1756			}
1757
1758			return match;
1759		},
1760
1761		PSEUDO: function( match ) {
1762			var excess,
1763				unquoted = !match[ 6 ] && match[ 2 ];
1764
1765			if ( matchExpr.CHILD.test( match[ 0 ] ) ) {
1766				return null;
1767			}
1768
1769			// Accept quoted arguments as-is
1770			if ( match[ 3 ] ) {
1771				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
1772
1773			// Strip excess characters from unquoted arguments
1774			} else if ( unquoted && rpseudo.test( unquoted ) &&
1775
1776				// Get excess from tokenize (recursively)
1777				( excess = tokenize( unquoted, true ) ) &&
1778
1779				// advance to the next closing parenthesis
1780				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
1781
1782				// excess is a negative index
1783				match[ 0 ] = match[ 0 ].slice( 0, excess );
1784				match[ 2 ] = unquoted.slice( 0, excess );
1785			}
1786
1787			// Return only captures needed by the pseudo filter method (type and argument)
1788			return match.slice( 0, 3 );
1789		}
1790	},
1791
1792	filter: {
1793
1794		TAG: function( nodeNameSelector ) {
1795			var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1796			return nodeNameSelector === "*" ?
1797				function() {
1798					return true;
1799				} :
1800				function( elem ) {
1801					return nodeName( elem, expectedNodeName );
1802				};
1803		},
1804
1805		CLASS: function( className ) {
1806			var pattern = classCache[ className + " " ];
1807
1808			return pattern ||
1809				( pattern = new RegExp( "(^|" + whitespace + ")" + className +
1810					"(" + whitespace + "|$)" ) ) &&
1811				classCache( className, function( elem ) {
1812					return pattern.test(
1813						typeof elem.className === "string" && elem.className ||
1814							typeof elem.getAttribute !== "undefined" &&
1815								elem.getAttribute( "class" ) ||
1816							""
1817					);
1818				} );
1819		},
1820
1821		ATTR: function( name, operator, check ) {
1822			return function( elem ) {
1823				var result = find.attr( elem, name );
1824
1825				if ( result == null ) {
1826					return operator === "!=";
1827				}
1828				if ( !operator ) {
1829					return true;
1830				}
1831
1832				result += "";
1833
1834				if ( operator === "=" ) {
1835					return result === check;
1836				}
1837				if ( operator === "!=" ) {
1838					return result !== check;
1839				}
1840				if ( operator === "^=" ) {
1841					return check && result.indexOf( check ) === 0;
1842				}
1843				if ( operator === "*=" ) {
1844					return check && result.indexOf( check ) > -1;
1845				}
1846				if ( operator === "$=" ) {
1847					return check && result.slice( -check.length ) === check;
1848				}
1849				if ( operator === "~=" ) {
1850					return ( " " + result.replace( rwhitespace, " " ) + " " )
1851						.indexOf( check ) > -1;
1852				}
1853				if ( operator === "|=" ) {
1854					return result === check || result.slice( 0, check.length + 1 ) === check + "-";
1855				}
1856
1857				return false;
1858			};
1859		},
1860
1861		CHILD: function( type, what, _argument, first, last ) {
1862			var simple = type.slice( 0, 3 ) !== "nth",
1863				forward = type.slice( -4 ) !== "last",
1864				ofType = what === "of-type";
1865
1866			return first === 1 && last === 0 ?
1867
1868				// Shortcut for :nth-*(n)
1869				function( elem ) {
1870					return !!elem.parentNode;
1871				} :
1872
1873				function( elem, _context, xml ) {
1874					var cache, outerCache, node, nodeIndex, start,
1875						dir = simple !== forward ? "nextSibling" : "previousSibling",
1876						parent = elem.parentNode,
1877						name = ofType && elem.nodeName.toLowerCase(),
1878						useCache = !xml && !ofType,
1879						diff = false;
1880
1881					if ( parent ) {
1882
1883						// :(first|last|only)-(child|of-type)
1884						if ( simple ) {
1885							while ( dir ) {
1886								node = elem;
1887								while ( ( node = node[ dir ] ) ) {
1888									if ( ofType ?
1889										nodeName( node, name ) :
1890										node.nodeType === 1 ) {
1891
1892										return false;
1893									}
1894								}
1895
1896								// Reverse direction for :only-* (if we haven't yet done so)
1897								start = dir = type === "only" && !start && "nextSibling";
1898							}
1899							return true;
1900						}
1901
1902						start = [ forward ? parent.firstChild : parent.lastChild ];
1903
1904						// non-xml :nth-child(...) stores cache data on `parent`
1905						if ( forward && useCache ) {
1906
1907							// Seek `elem` from a previously-cached index
1908							outerCache = parent[ expando ] || ( parent[ expando ] = {} );
1909							cache = outerCache[ type ] || [];
1910							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1911							diff = nodeIndex && cache[ 2 ];
1912							node = nodeIndex && parent.childNodes[ nodeIndex ];
1913
1914							while ( ( node = ++nodeIndex && node && node[ dir ] ||
1915
1916								// Fallback to seeking `elem` from the start
1917								( diff = nodeIndex = 0 ) || start.pop() ) ) {
1918
1919								// When found, cache indexes on `parent` and break
1920								if ( node.nodeType === 1 && ++diff && node === elem ) {
1921									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
1922									break;
1923								}
1924							}
1925
1926						} else {
1927
1928							// Use previously-cached element index if available
1929							if ( useCache ) {
1930								outerCache = elem[ expando ] || ( elem[ expando ] = {} );
1931								cache = outerCache[ type ] || [];
1932								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
1933								diff = nodeIndex;
1934							}
1935
1936							// xml :nth-child(...)
1937							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
1938							if ( diff === false ) {
1939
1940								// Use the same loop as above to seek `elem` from the start
1941								while ( ( node = ++nodeIndex && node && node[ dir ] ||
1942									( diff = nodeIndex = 0 ) || start.pop() ) ) {
1943
1944									if ( ( ofType ?
1945										nodeName( node, name ) :
1946										node.nodeType === 1 ) &&
1947										++diff ) {
1948
1949										// Cache the index of each encountered element
1950										if ( useCache ) {
1951											outerCache = node[ expando ] ||
1952												( node[ expando ] = {} );
1953											outerCache[ type ] = [ dirruns, diff ];
1954										}
1955
1956										if ( node === elem ) {
1957											break;
1958										}
1959									}
1960								}
1961							}
1962						}
1963
1964						// Incorporate the offset, then check against cycle size
1965						diff -= last;
1966						return diff === first || ( diff % first === 0 && diff / first >= 0 );
1967					}
1968				};
1969		},
1970
1971		PSEUDO: function( pseudo, argument ) {
1972
1973			// pseudo-class names are case-insensitive
1974			// https://www.w3.org/TR/selectors/#pseudo-classes
1975			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1976			// Remember that setFilters inherits from pseudos
1977			var args,
1978				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1979					find.error( "unsupported pseudo: " + pseudo );
1980
1981			// The user may use createPseudo to indicate that
1982			// arguments are needed to create the filter function
1983			// just as jQuery does
1984			if ( fn[ expando ] ) {
1985				return fn( argument );
1986			}
1987
1988			// But maintain support for old signatures
1989			if ( fn.length > 1 ) {
1990				args = [ pseudo, pseudo, "", argument ];
1991				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1992					markFunction( function( seed, matches ) {
1993						var idx,
1994							matched = fn( seed, argument ),
1995							i = matched.length;
1996						while ( i-- ) {
1997							idx = indexOf.call( seed, matched[ i ] );
1998							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
1999						}
2000					} ) :
2001					function( elem ) {
2002						return fn( elem, 0, args );
2003					};
2004			}
2005
2006			return fn;
2007		}
2008	},
2009
2010	pseudos: {
2011
2012		// Potentially complex pseudos
2013		not: markFunction( function( selector ) {
2014
2015			// Trim the selector passed to compile
2016			// to avoid treating leading and trailing
2017			// spaces as combinators
2018			var input = [],
2019				results = [],
2020				matcher = compile( selector.replace( rtrimCSS, "$1" ) );
2021
2022			return matcher[ expando ] ?
2023				markFunction( function( seed, matches, _context, xml ) {
2024					var elem,
2025						unmatched = matcher( seed, null, xml, [] ),
2026						i = seed.length;
2027
2028					// Match elements unmatched by `matcher`
2029					while ( i-- ) {
2030						if ( ( elem = unmatched[ i ] ) ) {
2031							seed[ i ] = !( matches[ i ] = elem );
2032						}
2033					}
2034				} ) :
2035				function( elem, _context, xml ) {
2036					input[ 0 ] = elem;
2037					matcher( input, null, xml, results );
2038
2039					// Don't keep the element
2040					// (see https://github.com/jquery/sizzle/issues/299)
2041					input[ 0 ] = null;
2042					return !results.pop();
2043				};
2044		} ),
2045
2046		has: markFunction( function( selector ) {
2047			return function( elem ) {
2048				return find( selector, elem ).length > 0;
2049			};
2050		} ),
2051
2052		contains: markFunction( function( text ) {
2053			text = text.replace( runescape, funescape );
2054			return function( elem ) {
2055				return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;
2056			};
2057		} ),
2058
2059		// "Whether an element is represented by a :lang() selector
2060		// is based solely on the element's language value
2061		// being equal to the identifier C,
2062		// or beginning with the identifier C immediately followed by "-".
2063		// The matching of C against the element's language value is performed case-insensitively.
2064		// The identifier C does not have to be a valid language name."
2065		// https://www.w3.org/TR/selectors/#lang-pseudo
2066		lang: markFunction( function( lang ) {
2067
2068			// lang value must be a valid identifier
2069			if ( !ridentifier.test( lang || "" ) ) {
2070				find.error( "unsupported lang: " + lang );
2071			}
2072			lang = lang.replace( runescape, funescape ).toLowerCase();
2073			return function( elem ) {
2074				var elemLang;
2075				do {
2076					if ( ( elemLang = documentIsHTML ?
2077						elem.lang :
2078						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
2079
2080						elemLang = elemLang.toLowerCase();
2081						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
2082					}
2083				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
2084				return false;
2085			};
2086		} ),
2087
2088		// Miscellaneous
2089		target: function( elem ) {
2090			var hash = window.location && window.location.hash;
2091			return hash && hash.slice( 1 ) === elem.id;
2092		},
2093
2094		root: function( elem ) {
2095			return elem === documentElement;
2096		},
2097
2098		focus: function( elem ) {
2099			return elem === safeActiveElement() &&
2100				document.hasFocus() &&
2101				!!( elem.type || elem.href || ~elem.tabIndex );
2102		},
2103
2104		// Boolean properties
2105		enabled: createDisabledPseudo( false ),
2106		disabled: createDisabledPseudo( true ),
2107
2108		checked: function( elem ) {
2109
2110			// In CSS3, :checked should return both checked and selected elements
2111			// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2112			return ( nodeName( elem, "input" ) && !!elem.checked ) ||
2113				( nodeName( elem, "option" ) && !!elem.selected );
2114		},
2115
2116		selected: function( elem ) {
2117
2118			// Support: IE <=11+
2119			// Accessing the selectedIndex property
2120			// forces the browser to treat the default option as
2121			// selected when in an optgroup.
2122			if ( elem.parentNode ) {
2123				// eslint-disable-next-line no-unused-expressions
2124				elem.parentNode.selectedIndex;
2125			}
2126
2127			return elem.selected === true;
2128		},
2129
2130		// Contents
2131		empty: function( elem ) {
2132
2133			// https://www.w3.org/TR/selectors/#empty-pseudo
2134			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2135			//   but not by others (comment: 8; processing instruction: 7; etc.)
2136			// nodeType < 6 works because attributes (2) do not appear as children
2137			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
2138				if ( elem.nodeType < 6 ) {
2139					return false;
2140				}
2141			}
2142			return true;
2143		},
2144
2145		parent: function( elem ) {
2146			return !Expr.pseudos.empty( elem );
2147		},
2148
2149		// Element/input types
2150		header: function( elem ) {
2151			return rheader.test( elem.nodeName );
2152		},
2153
2154		input: function( elem ) {
2155			return rinputs.test( elem.nodeName );
2156		},
2157
2158		button: function( elem ) {
2159			return nodeName( elem, "input" ) && elem.type === "button" ||
2160				nodeName( elem, "button" );
2161		},
2162
2163		text: function( elem ) {
2164			var attr;
2165			return nodeName( elem, "input" ) && elem.type === "text" &&
2166
2167				// Support: IE <10 only
2168				// New HTML5 attribute values (e.g., "search") appear
2169				// with elem.type === "text"
2170				( ( attr = elem.getAttribute( "type" ) ) == null ||
2171					attr.toLowerCase() === "text" );
2172		},
2173
2174		// Position-in-collection
2175		first: createPositionalPseudo( function() {
2176			return [ 0 ];
2177		} ),
2178
2179		last: createPositionalPseudo( function( _matchIndexes, length ) {
2180			return [ length - 1 ];
2181		} ),
2182
2183		eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
2184			return [ argument < 0 ? argument + length : argument ];
2185		} ),
2186
2187		even: createPositionalPseudo( function( matchIndexes, length ) {
2188			var i = 0;
2189			for ( ; i < length; i += 2 ) {
2190				matchIndexes.push( i );
2191			}
2192			return matchIndexes;
2193		} ),
2194
2195		odd: createPositionalPseudo( function( matchIndexes, length ) {
2196			var i = 1;
2197			for ( ; i < length; i += 2 ) {
2198				matchIndexes.push( i );
2199			}
2200			return matchIndexes;
2201		} ),
2202
2203		lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
2204			var i;
2205
2206			if ( argument < 0 ) {
2207				i = argument + length;
2208			} else if ( argument > length ) {
2209				i = length;
2210			} else {
2211				i = argument;
2212			}
2213
2214			for ( ; --i >= 0; ) {
2215				matchIndexes.push( i );
2216			}
2217			return matchIndexes;
2218		} ),
2219
2220		gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
2221			var i = argument < 0 ? argument + length : argument;
2222			for ( ; ++i < length; ) {
2223				matchIndexes.push( i );
2224			}
2225			return matchIndexes;
2226		} )
2227	}
2228};
2229
2230Expr.pseudos.nth = Expr.pseudos.eq;
2231
2232// Add button/input type pseudos
2233for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2234	Expr.pseudos[ i ] = createInputPseudo( i );
2235}
2236for ( i in { submit: true, reset: true } ) {
2237	Expr.pseudos[ i ] = createButtonPseudo( i );
2238}
2239
2240// Easy API for creating new setFilters
2241function setFilters() {}
2242setFilters.prototype = Expr.filters = Expr.pseudos;
2243Expr.setFilters = new setFilters();
2244
2245function tokenize( selector, parseOnly ) {
2246	var matched, match, tokens, type,
2247		soFar, groups, preFilters,
2248		cached = tokenCache[ selector + " " ];
2249
2250	if ( cached ) {
2251		return parseOnly ? 0 : cached.slice( 0 );
2252	}
2253
2254	soFar = selector;
2255	groups = [];
2256	preFilters = Expr.preFilter;
2257
2258	while ( soFar ) {
2259
2260		// Comma and first run
2261		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
2262			if ( match ) {
2263
2264				// Don't consume trailing commas as valid
2265				soFar = soFar.slice( match[ 0 ].length ) || soFar;
2266			}
2267			groups.push( ( tokens = [] ) );
2268		}
2269
2270		matched = false;
2271
2272		// Combinators
2273		if ( ( match = rleadingCombinator.exec( soFar ) ) ) {
2274			matched = match.shift();
2275			tokens.push( {
2276				value: matched,
2277
2278				// Cast descendant combinators to space
2279				type: match[ 0 ].replace( rtrimCSS, " " )
2280			} );
2281			soFar = soFar.slice( matched.length );
2282		}
2283
2284		// Filters
2285		for ( type in Expr.filter ) {
2286			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
2287				( match = preFilters[ type ]( match ) ) ) ) {
2288				matched = match.shift();
2289				tokens.push( {
2290					value: matched,
2291					type: type,
2292					matches: match
2293				} );
2294				soFar = soFar.slice( matched.length );
2295			}
2296		}
2297
2298		if ( !matched ) {
2299			break;
2300		}
2301	}
2302
2303	// Return the length of the invalid excess
2304	// if we're just parsing
2305	// Otherwise, throw an error or return tokens
2306	if ( parseOnly ) {
2307		return soFar.length;
2308	}
2309
2310	return soFar ?
2311		find.error( selector ) :
2312
2313		// Cache the tokens
2314		tokenCache( selector, groups ).slice( 0 );
2315}
2316
2317function toSelector( tokens ) {
2318	var i = 0,
2319		len = tokens.length,
2320		selector = "";
2321	for ( ; i < len; i++ ) {
2322		selector += tokens[ i ].value;
2323	}
2324	return selector;
2325}
2326
2327function addCombinator( matcher, combinator, base ) {
2328	var dir = combinator.dir,
2329		skip = combinator.next,
2330		key = skip || dir,
2331		checkNonElements = base && key === "parentNode",
2332		doneName = done++;
2333
2334	return combinator.first ?
2335
2336		// Check against closest ancestor/preceding element
2337		function( elem, context, xml ) {
2338			while ( ( elem = elem[ dir ] ) ) {
2339				if ( elem.nodeType === 1 || checkNonElements ) {
2340					return matcher( elem, context, xml );
2341				}
2342			}
2343			return false;
2344		} :
2345
2346		// Check against all ancestor/preceding elements
2347		function( elem, context, xml ) {
2348			var oldCache, outerCache,
2349				newCache = [ dirruns, doneName ];
2350
2351			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
2352			if ( xml ) {
2353				while ( ( elem = elem[ dir ] ) ) {
2354					if ( elem.nodeType === 1 || checkNonElements ) {
2355						if ( matcher( elem, context, xml ) ) {
2356							return true;
2357						}
2358					}
2359				}
2360			} else {
2361				while ( ( elem = elem[ dir ] ) ) {
2362					if ( elem.nodeType === 1 || checkNonElements ) {
2363						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
2364
2365						if ( skip && nodeName( elem, skip ) ) {
2366							elem = elem[ dir ] || elem;
2367						} else if ( ( oldCache = outerCache[ key ] ) &&
2368							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2369
2370							// Assign to newCache so results back-propagate to previous elements
2371							return ( newCache[ 2 ] = oldCache[ 2 ] );
2372						} else {
2373
2374							// Reuse newcache so results back-propagate to previous elements
2375							outerCache[ key ] = newCache;
2376
2377							// A match means we're done; a fail means we have to keep checking
2378							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
2379								return true;
2380							}
2381						}
2382					}
2383				}
2384			}
2385			return false;
2386		};
2387}
2388
2389function elementMatcher( matchers ) {
2390	return matchers.length > 1 ?
2391		function( elem, context, xml ) {
2392			var i = matchers.length;
2393			while ( i-- ) {
2394				if ( !matchers[ i ]( elem, context, xml ) ) {
2395					return false;
2396				}
2397			}
2398			return true;
2399		} :
2400		matchers[ 0 ];
2401}
2402
2403function multipleContexts( selector, contexts, results ) {
2404	var i = 0,
2405		len = contexts.length;
2406	for ( ; i < len; i++ ) {
2407		find( selector, contexts[ i ], results );
2408	}
2409	return results;
2410}
2411
2412function condense( unmatched, map, filter, context, xml ) {
2413	var elem,
2414		newUnmatched = [],
2415		i = 0,
2416		len = unmatched.length,
2417		mapped = map != null;
2418
2419	for ( ; i < len; i++ ) {
2420		if ( ( elem = unmatched[ i ] ) ) {
2421			if ( !filter || filter( elem, context, xml ) ) {
2422				newUnmatched.push( elem );
2423				if ( mapped ) {
2424					map.push( i );
2425				}
2426			}
2427		}
2428	}
2429
2430	return newUnmatched;
2431}
2432
2433function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2434	if ( postFilter && !postFilter[ expando ] ) {
2435		postFilter = setMatcher( postFilter );
2436	}
2437	if ( postFinder && !postFinder[ expando ] ) {
2438		postFinder = setMatcher( postFinder, postSelector );
2439	}
2440	return markFunction( function( seed, results, context, xml ) {
2441		var temp, i, elem, matcherOut,
2442			preMap = [],
2443			postMap = [],
2444			preexisting = results.length,
2445
2446			// Get initial elements from seed or context
2447			elems = seed ||
2448				multipleContexts( selector || "*",
2449					context.nodeType ? [ context ] : context, [] ),
2450
2451			// Prefilter to get matcher input, preserving a map for seed-results synchronization
2452			matcherIn = preFilter && ( seed || !selector ) ?
2453				condense( elems, preMap, preFilter, context, xml ) :
2454				elems;
2455
2456		if ( matcher ) {
2457
2458			// If we have a postFinder, or filtered seed, or non-seed postFilter
2459			// or preexisting results,
2460			matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2461
2462				// ...intermediate processing is necessary
2463				[] :
2464
2465				// ...otherwise use results directly
2466				results;
2467
2468			// Find primary matches
2469			matcher( matcherIn, matcherOut, context, xml );
2470		} else {
2471			matcherOut = matcherIn;
2472		}
2473
2474		// Apply postFilter
2475		if ( postFilter ) {
2476			temp = condense( matcherOut, postMap );
2477			postFilter( temp, [], context, xml );
2478
2479			// Un-match failing elements by moving them back to matcherIn
2480			i = temp.length;
2481			while ( i-- ) {
2482				if ( ( elem = temp[ i ] ) ) {
2483					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
2484				}
2485			}
2486		}
2487
2488		if ( seed ) {
2489			if ( postFinder || preFilter ) {
2490				if ( postFinder ) {
2491
2492					// Get the final matcherOut by condensing this intermediate into postFinder contexts
2493					temp = [];
2494					i = matcherOut.length;
2495					while ( i-- ) {
2496						if ( ( elem = matcherOut[ i ] ) ) {
2497
2498							// Restore matcherIn since elem is not yet a final match
2499							temp.push( ( matcherIn[ i ] = elem ) );
2500						}
2501					}
2502					postFinder( null, ( matcherOut = [] ), temp, xml );
2503				}
2504
2505				// Move matched elements from seed to results to keep them synchronized
2506				i = matcherOut.length;
2507				while ( i-- ) {
2508					if ( ( elem = matcherOut[ i ] ) &&
2509						( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {
2510
2511						seed[ temp ] = !( results[ temp ] = elem );
2512					}
2513				}
2514			}
2515
2516		// Add elements to results, through postFinder if defined
2517		} else {
2518			matcherOut = condense(
2519				matcherOut === results ?
2520					matcherOut.splice( preexisting, matcherOut.length ) :
2521					matcherOut
2522			);
2523			if ( postFinder ) {
2524				postFinder( null, results, matcherOut, xml );
2525			} else {
2526				push.apply( results, matcherOut );
2527			}
2528		}
2529	} );
2530}
2531
2532function matcherFromTokens( tokens ) {
2533	var checkContext, matcher, j,
2534		len = tokens.length,
2535		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
2536		implicitRelative = leadingRelative || Expr.relative[ " " ],
2537		i = leadingRelative ? 1 : 0,
2538
2539		// The foundational matcher ensures that elements are reachable from top-level context(s)
2540		matchContext = addCombinator( function( elem ) {
2541			return elem === checkContext;
2542		}, implicitRelative, true ),
2543		matchAnyContext = addCombinator( function( elem ) {
2544			return indexOf.call( checkContext, elem ) > -1;
2545		}, implicitRelative, true ),
2546		matchers = [ function( elem, context, xml ) {
2547
2548			// Support: IE 11+, Edge 17 - 18+
2549			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2550			// two documents; shallow comparisons work.
2551			// eslint-disable-next-line eqeqeq
2552			var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
2553				( checkContext = context ).nodeType ?
2554					matchContext( elem, context, xml ) :
2555					matchAnyContext( elem, context, xml ) );
2556
2557			// Avoid hanging onto element
2558			// (see https://github.com/jquery/sizzle/issues/299)
2559			checkContext = null;
2560			return ret;
2561		} ];
2562
2563	for ( ; i < len; i++ ) {
2564		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
2565			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
2566		} else {
2567			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
2568
2569			// Return special upon seeing a positional matcher
2570			if ( matcher[ expando ] ) {
2571
2572				// Find the next relative operator (if any) for proper handling
2573				j = ++i;
2574				for ( ; j < len; j++ ) {
2575					if ( Expr.relative[ tokens[ j ].type ] ) {
2576						break;
2577					}
2578				}
2579				return setMatcher(
2580					i > 1 && elementMatcher( matchers ),
2581					i > 1 && toSelector(
2582
2583						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
2584						tokens.slice( 0, i - 1 )
2585							.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
2586					).replace( rtrimCSS, "$1" ),
2587					matcher,
2588					i < j && matcherFromTokens( tokens.slice( i, j ) ),
2589					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
2590					j < len && toSelector( tokens )
2591				);
2592			}
2593			matchers.push( matcher );
2594		}
2595	}
2596
2597	return elementMatcher( matchers );
2598}
2599
2600function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2601	var bySet = setMatchers.length > 0,
2602		byElement = elementMatchers.length > 0,
2603		superMatcher = function( seed, context, xml, results, outermost ) {
2604			var elem, j, matcher,
2605				matchedCount = 0,
2606				i = "0",
2607				unmatched = seed && [],
2608				setMatched = [],
2609				contextBackup = outermostContext,
2610
2611				// We must always have either seed elements or outermost context
2612				elems = seed || byElement && Expr.find.TAG( "*", outermost ),
2613
2614				// Use integer dirruns iff this is the outermost matcher
2615				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
2616				len = elems.length;
2617
2618			if ( outermost ) {
2619
2620				// Support: IE 11+, Edge 17 - 18+
2621				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2622				// two documents; shallow comparisons work.
2623				// eslint-disable-next-line eqeqeq
2624				outermostContext = context == document || context || outermost;
2625			}
2626
2627			// Add elements passing elementMatchers directly to results
2628			// Support: iOS <=7 - 9 only
2629			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
2630			// elements by id. (see trac-14142)
2631			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
2632				if ( byElement && elem ) {
2633					j = 0;
2634
2635					// Support: IE 11+, Edge 17 - 18+
2636					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2637					// two documents; shallow comparisons work.
2638					// eslint-disable-next-line eqeqeq
2639					if ( !context && elem.ownerDocument != document ) {
2640						setDocument( elem );
2641						xml = !documentIsHTML;
2642					}
2643					while ( ( matcher = elementMatchers[ j++ ] ) ) {
2644						if ( matcher( elem, context || document, xml ) ) {
2645							push.call( results, elem );
2646							break;
2647						}
2648					}
2649					if ( outermost ) {
2650						dirruns = dirrunsUnique;
2651					}
2652				}
2653
2654				// Track unmatched elements for set filters
2655				if ( bySet ) {
2656
2657					// They will have gone through all possible matchers
2658					if ( ( elem = !matcher && elem ) ) {
2659						matchedCount--;
2660					}
2661
2662					// Lengthen the array for every element, matched or not
2663					if ( seed ) {
2664						unmatched.push( elem );
2665					}
2666				}
2667			}
2668
2669			// `i` is now the count of elements visited above, and adding it to `matchedCount`
2670			// makes the latter nonnegative.
2671			matchedCount += i;
2672
2673			// Apply set filters to unmatched elements
2674			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
2675			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
2676			// no element matchers and no seed.
2677			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
2678			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
2679			// numerically zero.
2680			if ( bySet && i !== matchedCount ) {
2681				j = 0;
2682				while ( ( matcher = setMatchers[ j++ ] ) ) {
2683					matcher( unmatched, setMatched, context, xml );
2684				}
2685
2686				if ( seed ) {
2687
2688					// Reintegrate element matches to eliminate the need for sorting
2689					if ( matchedCount > 0 ) {
2690						while ( i-- ) {
2691							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
2692								setMatched[ i ] = pop.call( results );
2693							}
2694						}
2695					}
2696
2697					// Discard index placeholder values to get only actual matches
2698					setMatched = condense( setMatched );
2699				}
2700
2701				// Add matches to results
2702				push.apply( results, setMatched );
2703
2704				// Seedless set matches succeeding multiple successful matchers stipulate sorting
2705				if ( outermost && !seed && setMatched.length > 0 &&
2706					( matchedCount + setMatchers.length ) > 1 ) {
2707
2708					jQuery.uniqueSort( results );
2709				}
2710			}
2711
2712			// Override manipulation of globals by nested matchers
2713			if ( outermost ) {
2714				dirruns = dirrunsUnique;
2715				outermostContext = contextBackup;
2716			}
2717
2718			return unmatched;
2719		};
2720
2721	return bySet ?
2722		markFunction( superMatcher ) :
2723		superMatcher;
2724}
2725
2726function compile( selector, match /* Internal Use Only */ ) {
2727	var i,
2728		setMatchers = [],
2729		elementMatchers = [],
2730		cached = compilerCache[ selector + " " ];
2731
2732	if ( !cached ) {
2733
2734		// Generate a function of recursive functions that can be used to check each element
2735		if ( !match ) {
2736			match = tokenize( selector );
2737		}
2738		i = match.length;
2739		while ( i-- ) {
2740			cached = matcherFromTokens( match[ i ] );
2741			if ( cached[ expando ] ) {
2742				setMatchers.push( cached );
2743			} else {
2744				elementMatchers.push( cached );
2745			}
2746		}
2747
2748		// Cache the compiled function
2749		cached = compilerCache( selector,
2750			matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2751
2752		// Save selector and tokenization
2753		cached.selector = selector;
2754	}
2755	return cached;
2756}
2757
2758/**
2759 * A low-level selection function that works with jQuery's compiled
2760 *  selector functions
2761 * @param {String|Function} selector A selector or a pre-compiled
2762 *  selector function built with jQuery selector compile
2763 * @param {Element} context
2764 * @param {Array} [results]
2765 * @param {Array} [seed] A set of elements to match against
2766 */
2767function select( selector, context, results, seed ) {
2768	var i, tokens, token, type, find,
2769		compiled = typeof selector === "function" && selector,
2770		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
2771
2772	results = results || [];
2773
2774	// Try to minimize operations if there is only one selector in the list and no seed
2775	// (the latter of which guarantees us context)
2776	if ( match.length === 1 ) {
2777
2778		// Reduce context if the leading compound selector is an ID
2779		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
2780		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
2781				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
2782
2783			context = ( Expr.find.ID(
2784				token.matches[ 0 ].replace( runescape, funescape ),
2785				context
2786			) || [] )[ 0 ];
2787			if ( !context ) {
2788				return results;
2789
2790			// Precompiled matchers will still verify ancestry, so step up a level
2791			} else if ( compiled ) {
2792				context = context.parentNode;
2793			}
2794
2795			selector = selector.slice( tokens.shift().value.length );
2796		}
2797
2798		// Fetch a seed set for right-to-left matching
2799		i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;
2800		while ( i-- ) {
2801			token = tokens[ i ];
2802
2803			// Abort if we hit a combinator
2804			if ( Expr.relative[ ( type = token.type ) ] ) {
2805				break;
2806			}
2807			if ( ( find = Expr.find[ type ] ) ) {
2808
2809				// Search, expanding context for leading sibling combinators
2810				if ( ( seed = find(
2811					token.matches[ 0 ].replace( runescape, funescape ),
2812					rsibling.test( tokens[ 0 ].type ) &&
2813						testContext( context.parentNode ) || context
2814				) ) ) {
2815
2816					// If seed is empty or no tokens remain, we can return early
2817					tokens.splice( i, 1 );
2818					selector = seed.length && toSelector( tokens );
2819					if ( !selector ) {
2820						push.apply( results, seed );
2821						return results;
2822					}
2823
2824					break;
2825				}
2826			}
2827		}
2828	}
2829
2830	// Compile and execute a filtering function if one is not provided
2831	// Provide `match` to avoid retokenization if we modified the selector above
2832	( compiled || compile( selector, match ) )(
2833		seed,
2834		context,
2835		!documentIsHTML,
2836		results,
2837		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
2838	);
2839	return results;
2840}
2841
2842// One-time assignments
2843
2844// Support: Android <=4.0 - 4.1+
2845// Sort stability
2846support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
2847
2848// Initialize against the default document
2849setDocument();
2850
2851// Support: Android <=4.0 - 4.1+
2852// Detached nodes confoundingly follow *each other*
2853support.sortDetached = assert( function( el ) {
2854
2855	// Should return 1, but returns 4 (following)
2856	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
2857} );
2858
2859jQuery.find = find;
2860
2861// Deprecated
2862jQuery.expr[ ":" ] = jQuery.expr.pseudos;
2863jQuery.unique = jQuery.uniqueSort;
2864
2865// These have always been private, but they used to be documented as part of
2866// Sizzle so let's maintain them for now for backwards compatibility purposes.
2867find.compile = compile;
2868find.select = select;
2869find.setDocument = setDocument;
2870find.tokenize = tokenize;
2871
2872find.escape = jQuery.escapeSelector;
2873find.getText = jQuery.text;
2874find.isXML = jQuery.isXMLDoc;
2875find.selectors = jQuery.expr;
2876find.support = jQuery.support;
2877find.uniqueSort = jQuery.uniqueSort;
2878
2879	/* eslint-enable */
2880
2881} )();
2882
2883
2884var dir = function( elem, dir, until ) {
2885	var matched = [],
2886		truncate = until !== undefined;
2887
2888	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
2889		if ( elem.nodeType === 1 ) {
2890			if ( truncate && jQuery( elem ).is( until ) ) {
2891				break;
2892			}
2893			matched.push( elem );
2894		}
2895	}
2896	return matched;
2897};
2898
2899
2900var siblings = function( n, elem ) {
2901	var matched = [];
2902
2903	for ( ; n; n = n.nextSibling ) {
2904		if ( n.nodeType === 1 && n !== elem ) {
2905			matched.push( n );
2906		}
2907	}
2908
2909	return matched;
2910};
2911
2912
2913var rneedsContext = jQuery.expr.match.needsContext;
2914
2915var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
2916
2917
2918
2919// Implement the identical functionality for filter and not
2920function winnow( elements, qualifier, not ) {
2921	if ( isFunction( qualifier ) ) {
2922		return jQuery.grep( elements, function( elem, i ) {
2923			return !!qualifier.call( elem, i, elem ) !== not;
2924		} );
2925	}
2926
2927	// Single element
2928	if ( qualifier.nodeType ) {
2929		return jQuery.grep( elements, function( elem ) {
2930			return ( elem === qualifier ) !== not;
2931		} );
2932	}
2933
2934	// Arraylike of elements (jQuery, arguments, Array)
2935	if ( typeof qualifier !== "string" ) {
2936		return jQuery.grep( elements, function( elem ) {
2937			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
2938		} );
2939	}
2940
2941	// Filtered directly for both simple and complex selectors
2942	return jQuery.filter( qualifier, elements, not );
2943}
2944
2945jQuery.filter = function( expr, elems, not ) {
2946	var elem = elems[ 0 ];
2947
2948	if ( not ) {
2949		expr = ":not(" + expr + ")";
2950	}
2951
2952	if ( elems.length === 1 && elem.nodeType === 1 ) {
2953		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
2954	}
2955
2956	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2957		return elem.nodeType === 1;
2958	} ) );
2959};
2960
2961jQuery.fn.extend( {
2962	find: function( selector ) {
2963		var i, ret,
2964			len = this.length,
2965			self = this;
2966
2967		if ( typeof selector !== "string" ) {
2968			return this.pushStack( jQuery( selector ).filter( function() {
2969				for ( i = 0; i < len; i++ ) {
2970					if ( jQuery.contains( self[ i ], this ) ) {
2971						return true;
2972					}
2973				}
2974			} ) );
2975		}
2976
2977		ret = this.pushStack( [] );
2978
2979		for ( i = 0; i < len; i++ ) {
2980			jQuery.find( selector, self[ i ], ret );
2981		}
2982
2983		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
2984	},
2985	filter: function( selector ) {
2986		return this.pushStack( winnow( this, selector || [], false ) );
2987	},
2988	not: function( selector ) {
2989		return this.pushStack( winnow( this, selector || [], true ) );
2990	},
2991	is: function( selector ) {
2992		return !!winnow(
2993			this,
2994
2995			// If this is a positional/relative selector, check membership in the returned set
2996			// so $("p:first").is("p:last") won't return true for a doc with two "p".
2997			typeof selector === "string" && rneedsContext.test( selector ) ?
2998				jQuery( selector ) :
2999				selector || [],
3000			false
3001		).length;
3002	}
3003} );
3004
3005
3006// Initialize a jQuery object
3007
3008
3009// A central reference to the root jQuery(document)
3010var rootjQuery,
3011
3012	// A simple way to check for HTML strings
3013	// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
3014	// Strict HTML recognition (trac-11290: must start with <)
3015	// Shortcut simple #id case for speed
3016	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
3017
3018	init = jQuery.fn.init = function( selector, context, root ) {
3019		var match, elem;
3020
3021		// HANDLE: $(""), $(null), $(undefined), $(false)
3022		if ( !selector ) {
3023			return this;
3024		}
3025
3026		// Method init() accepts an alternate rootjQuery
3027		// so migrate can support jQuery.sub (gh-2101)
3028		root = root || rootjQuery;
3029
3030		// Handle HTML strings
3031		if ( typeof selector === "string" ) {
3032			if ( selector[ 0 ] === "<" &&
3033				selector[ selector.length - 1 ] === ">" &&
3034				selector.length >= 3 ) {
3035
3036				// Assume that strings that start and end with <> are HTML and skip the regex check
3037				match = [ null, selector, null ];
3038
3039			} else {
3040				match = rquickExpr.exec( selector );
3041			}
3042
3043			// Match html or make sure no context is specified for #id
3044			if ( match && ( match[ 1 ] || !context ) ) {
3045
3046				// HANDLE: $(html) -> $(array)
3047				if ( match[ 1 ] ) {
3048					context = context instanceof jQuery ? context[ 0 ] : context;
3049
3050					// Option to run scripts is true for back-compat
3051					// Intentionally let the error be thrown if parseHTML is not present
3052					jQuery.merge( this, jQuery.parseHTML(
3053						match[ 1 ],
3054						context && context.nodeType ? context.ownerDocument || context : document,
3055						true
3056					) );
3057
3058					// HANDLE: $(html, props)
3059					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
3060						for ( match in context ) {
3061
3062							// Properties of context are called as methods if possible
3063							if ( isFunction( this[ match ] ) ) {
3064								this[ match ]( context[ match ] );
3065
3066							// ...and otherwise set as attributes
3067							} else {
3068								this.attr( match, context[ match ] );
3069							}
3070						}
3071					}
3072
3073					return this;
3074
3075				// HANDLE: $(#id)
3076				} else {
3077					elem = document.getElementById( match[ 2 ] );
3078
3079					if ( elem ) {
3080
3081						// Inject the element directly into the jQuery object
3082						this[ 0 ] = elem;
3083						this.length = 1;
3084					}
3085					return this;
3086				}
3087
3088			// HANDLE: $(expr, $(...))
3089			} else if ( !context || context.jquery ) {
3090				return ( context || root ).find( selector );
3091
3092			// HANDLE: $(expr, context)
3093			// (which is just equivalent to: $(context).find(expr)
3094			} else {
3095				return this.constructor( context ).find( selector );
3096			}
3097
3098		// HANDLE: $(DOMElement)
3099		} else if ( selector.nodeType ) {
3100			this[ 0 ] = selector;
3101			this.length = 1;
3102			return this;
3103
3104		// HANDLE: $(function)
3105		// Shortcut for document ready
3106		} else if ( isFunction( selector ) ) {
3107			return root.ready !== undefined ?
3108				root.ready( selector ) :
3109
3110				// Execute immediately if ready is not present
3111				selector( jQuery );
3112		}
3113
3114		return jQuery.makeArray( selector, this );
3115	};
3116
3117// Give the init function the jQuery prototype for later instantiation
3118init.prototype = jQuery.fn;
3119
3120// Initialize central reference
3121rootjQuery = jQuery( document );
3122
3123
3124var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3125
3126	// Methods guaranteed to produce a unique set when starting from a unique set
3127	guaranteedUnique = {
3128		children: true,
3129		contents: true,
3130		next: true,
3131		prev: true
3132	};
3133
3134jQuery.fn.extend( {
3135	has: function( target ) {
3136		var targets = jQuery( target, this ),
3137			l = targets.length;
3138
3139		return this.filter( function() {
3140			var i = 0;
3141			for ( ; i < l; i++ ) {
3142				if ( jQuery.contains( this, targets[ i ] ) ) {
3143					return true;
3144				}
3145			}
3146		} );
3147	},
3148
3149	closest: function( selectors, context ) {
3150		var cur,
3151			i = 0,
3152			l = this.length,
3153			matched = [],
3154			targets = typeof selectors !== "string" && jQuery( selectors );
3155
3156		// Positional selectors never match, since there's no _selection_ context
3157		if ( !rneedsContext.test( selectors ) ) {
3158			for ( ; i < l; i++ ) {
3159				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
3160
3161					// Always skip document fragments
3162					if ( cur.nodeType < 11 && ( targets ?
3163						targets.index( cur ) > -1 :
3164
3165						// Don't pass non-elements to jQuery#find
3166						cur.nodeType === 1 &&
3167							jQuery.find.matchesSelector( cur, selectors ) ) ) {
3168
3169						matched.push( cur );
3170						break;
3171					}
3172				}
3173			}
3174		}
3175
3176		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
3177	},
3178
3179	// Determine the position of an element within the set
3180	index: function( elem ) {
3181
3182		// No argument, return index in parent
3183		if ( !elem ) {
3184			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
3185		}
3186
3187		// Index in selector
3188		if ( typeof elem === "string" ) {
3189			return indexOf.call( jQuery( elem ), this[ 0 ] );
3190		}
3191
3192		// Locate the position of the desired element
3193		return indexOf.call( this,
3194
3195			// If it receives a jQuery object, the first element is used
3196			elem.jquery ? elem[ 0 ] : elem
3197		);
3198	},
3199
3200	add: function( selector, context ) {
3201		return this.pushStack(
3202			jQuery.uniqueSort(
3203				jQuery.merge( this.get(), jQuery( selector, context ) )
3204			)
3205		);
3206	},
3207
3208	addBack: function( selector ) {
3209		return this.add( selector == null ?
3210			this.prevObject : this.prevObject.filter( selector )
3211		);
3212	}
3213} );
3214
3215function sibling( cur, dir ) {
3216	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
3217	return cur;
3218}
3219
3220jQuery.each( {
3221	parent: function( elem ) {
3222		var parent = elem.parentNode;
3223		return parent && parent.nodeType !== 11 ? parent : null;
3224	},
3225	parents: function( elem ) {
3226		return dir( elem, "parentNode" );
3227	},
3228	parentsUntil: function( elem, _i, until ) {
3229		return dir( elem, "parentNode", until );
3230	},
3231	next: function( elem ) {
3232		return sibling( elem, "nextSibling" );
3233	},
3234	prev: function( elem ) {
3235		return sibling( elem, "previousSibling" );
3236	},
3237	nextAll: function( elem ) {
3238		return dir( elem, "nextSibling" );
3239	},
3240	prevAll: function( elem ) {
3241		return dir( elem, "previousSibling" );
3242	},
3243	nextUntil: function( elem, _i, until ) {
3244		return dir( elem, "nextSibling", until );
3245	},
3246	prevUntil: function( elem, _i, until ) {
3247		return dir( elem, "previousSibling", until );
3248	},
3249	siblings: function( elem ) {
3250		return siblings( ( elem.parentNode || {} ).firstChild, elem );
3251	},
3252	children: function( elem ) {
3253		return siblings( elem.firstChild );
3254	},
3255	contents: function( elem ) {
3256		if ( elem.contentDocument != null &&
3257
3258			// Support: IE 11+
3259			// <object> elements with no `data` attribute has an object
3260			// `contentDocument` with a `null` prototype.
3261			getProto( elem.contentDocument ) ) {
3262
3263			return elem.contentDocument;
3264		}
3265
3266		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
3267		// Treat the template element as a regular one in browsers that
3268		// don't support it.
3269		if ( nodeName( elem, "template" ) ) {
3270			elem = elem.content || elem;
3271		}
3272
3273		return jQuery.merge( [], elem.childNodes );
3274	}
3275}, function( name, fn ) {
3276	jQuery.fn[ name ] = function( until, selector ) {
3277		var matched = jQuery.map( this, fn, until );
3278
3279		if ( name.slice( -5 ) !== "Until" ) {
3280			selector = until;
3281		}
3282
3283		if ( selector && typeof selector === "string" ) {
3284			matched = jQuery.filter( selector, matched );
3285		}
3286
3287		if ( this.length > 1 ) {
3288
3289			// Remove duplicates
3290			if ( !guaranteedUnique[ name ] ) {
3291				jQuery.uniqueSort( matched );
3292			}
3293
3294			// Reverse order for parents* and prev-derivatives
3295			if ( rparentsprev.test( name ) ) {
3296				matched.reverse();
3297			}
3298		}
3299
3300		return this.pushStack( matched );
3301	};
3302} );
3303var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
3304
3305
3306
3307// Convert String-formatted options into Object-formatted ones
3308function createOptions( options ) {
3309	var object = {};
3310	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
3311		object[ flag ] = true;
3312	} );
3313	return object;
3314}
3315
3316/*
3317 * Create a callback list using the following parameters:
3318 *
3319 *	options: an optional list of space-separated options that will change how
3320 *			the callback list behaves or a more traditional option object
3321 *
3322 * By default a callback list will act like an event callback list and can be
3323 * "fired" multiple times.
3324 *
3325 * Possible options:
3326 *
3327 *	once:			will ensure the callback list can only be fired once (like a Deferred)
3328 *
3329 *	memory:			will keep track of previous values and will call any callback added
3330 *					after the list has been fired right away with the latest "memorized"
3331 *					values (like a Deferred)
3332 *
3333 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
3334 *
3335 *	stopOnFalse:	interrupt callings when a callback returns false
3336 *
3337 */
3338jQuery.Callbacks = function( options ) {
3339
3340	// Convert options from String-formatted to Object-formatted if needed
3341	// (we check in cache first)
3342	options = typeof options === "string" ?
3343		createOptions( options ) :
3344		jQuery.extend( {}, options );
3345
3346	var // Flag to know if list is currently firing
3347		firing,
3348
3349		// Last fire value for non-forgettable lists
3350		memory,
3351
3352		// Flag to know if list was already fired
3353		fired,
3354
3355		// Flag to prevent firing
3356		locked,
3357
3358		// Actual callback list
3359		list = [],
3360
3361		// Queue of execution data for repeatable lists
3362		queue = [],
3363
3364		// Index of currently firing callback (modified by add/remove as needed)
3365		firingIndex = -1,
3366
3367		// Fire callbacks
3368		fire = function() {
3369
3370			// Enforce single-firing
3371			locked = locked || options.once;
3372
3373			// Execute callbacks for all pending executions,
3374			// respecting firingIndex overrides and runtime changes
3375			fired = firing = true;
3376			for ( ; queue.length; firingIndex = -1 ) {
3377				memory = queue.shift();
3378				while ( ++firingIndex < list.length ) {
3379
3380					// Run callback and check for early termination
3381					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
3382						options.stopOnFalse ) {
3383
3384						// Jump to end and forget the data so .add doesn't re-fire
3385						firingIndex = list.length;
3386						memory = false;
3387					}
3388				}
3389			}
3390
3391			// Forget the data if we're done with it
3392			if ( !options.memory ) {
3393				memory = false;
3394			}
3395
3396			firing = false;
3397
3398			// Clean up if we're done firing for good
3399			if ( locked ) {
3400
3401				// Keep an empty list if we have data for future add calls
3402				if ( memory ) {
3403					list = [];
3404
3405				// Otherwise, this object is spent
3406				} else {
3407					list = "";
3408				}
3409			}
3410		},
3411
3412		// Actual Callbacks object
3413		self = {
3414
3415			// Add a callback or a collection of callbacks to the list
3416			add: function() {
3417				if ( list ) {
3418
3419					// If we have memory from a past run, we should fire after adding
3420					if ( memory && !firing ) {
3421						firingIndex = list.length - 1;
3422						queue.push( memory );
3423					}
3424
3425					( function add( args ) {
3426						jQuery.each( args, function( _, arg ) {
3427							if ( isFunction( arg ) ) {
3428								if ( !options.unique || !self.has( arg ) ) {
3429									list.push( arg );
3430								}
3431							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
3432
3433								// Inspect recursively
3434								add( arg );
3435							}
3436						} );
3437					} )( arguments );
3438
3439					if ( memory && !firing ) {
3440						fire();
3441					}
3442				}
3443				return this;
3444			},
3445
3446			// Remove a callback from the list
3447			remove: function() {
3448				jQuery.each( arguments, function( _, arg ) {
3449					var index;
3450					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3451						list.splice( index, 1 );
3452
3453						// Handle firing indexes
3454						if ( index <= firingIndex ) {
3455							firingIndex--;
3456						}
3457					}
3458				} );
3459				return this;
3460			},
3461
3462			// Check if a given callback is in the list.
3463			// If no argument is given, return whether or not list has callbacks attached.
3464			has: function( fn ) {
3465				return fn ?
3466					jQuery.inArray( fn, list ) > -1 :
3467					list.length > 0;
3468			},
3469
3470			// Remove all callbacks from the list
3471			empty: function() {
3472				if ( list ) {
3473					list = [];
3474				}
3475				return this;
3476			},
3477
3478			// Disable .fire and .add
3479			// Abort any current/pending executions
3480			// Clear all callbacks and values
3481			disable: function() {
3482				locked = queue = [];
3483				list = memory = "";
3484				return this;
3485			},
3486			disabled: function() {
3487				return !list;
3488			},
3489
3490			// Disable .fire
3491			// Also disable .add unless we have memory (since it would have no effect)
3492			// Abort any pending executions
3493			lock: function() {
3494				locked = queue = [];
3495				if ( !memory && !firing ) {
3496					list = memory = "";
3497				}
3498				return this;
3499			},
3500			locked: function() {
3501				return !!locked;
3502			},
3503
3504			// Call all callbacks with the given context and arguments
3505			fireWith: function( context, args ) {
3506				if ( !locked ) {
3507					args = args || [];
3508					args = [ context, args.slice ? args.slice() : args ];
3509					queue.push( args );
3510					if ( !firing ) {
3511						fire();
3512					}
3513				}
3514				return this;
3515			},
3516
3517			// Call all the callbacks with the given arguments
3518			fire: function() {
3519				self.fireWith( this, arguments );
3520				return this;
3521			},
3522
3523			// To know if the callbacks have already been called at least once
3524			fired: function() {
3525				return !!fired;
3526			}
3527		};
3528
3529	return self;
3530};
3531
3532
3533function Identity( v ) {
3534	return v;
3535}
3536function Thrower( ex ) {
3537	throw ex;
3538}
3539
3540function adoptValue( value, resolve, reject, noValue ) {
3541	var method;
3542
3543	try {
3544
3545		// Check for promise aspect first to privilege synchronous behavior
3546		if ( value && isFunction( ( method = value.promise ) ) ) {
3547			method.call( value ).done( resolve ).fail( reject );
3548
3549		// Other thenables
3550		} else if ( value && isFunction( ( method = value.then ) ) ) {
3551			method.call( value, resolve, reject );
3552
3553		// Other non-thenables
3554		} else {
3555
3556			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
3557			// * false: [ value ].slice( 0 ) => resolve( value )
3558			// * true: [ value ].slice( 1 ) => resolve()
3559			resolve.apply( undefined, [ value ].slice( noValue ) );
3560		}
3561
3562	// For Promises/A+, convert exceptions into rejections
3563	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
3564	// Deferred#then to conditionally suppress rejection.
3565	} catch ( value ) {
3566
3567		// Support: Android 4.0 only
3568		// Strict mode functions invoked without .call/.apply get global-object context
3569		reject.apply( undefined, [ value ] );
3570	}
3571}
3572
3573jQuery.extend( {
3574
3575	Deferred: function( func ) {
3576		var tuples = [
3577
3578				// action, add listener, callbacks,
3579				// ... .then handlers, argument index, [final state]
3580				[ "notify", "progress", jQuery.Callbacks( "memory" ),
3581					jQuery.Callbacks( "memory" ), 2 ],
3582				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
3583					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
3584				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
3585					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
3586			],
3587			state = "pending",
3588			promise = {
3589				state: function() {
3590					return state;
3591				},
3592				always: function() {
3593					deferred.done( arguments ).fail( arguments );
3594					return this;
3595				},
3596				"catch": function( fn ) {
3597					return promise.then( null, fn );
3598				},
3599
3600				// Keep pipe for back-compat
3601				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
3602					var fns = arguments;
3603
3604					return jQuery.Deferred( function( newDefer ) {
3605						jQuery.each( tuples, function( _i, tuple ) {
3606
3607							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
3608							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
3609
3610							// deferred.progress(function() { bind to newDefer or newDefer.notify })
3611							// deferred.done(function() { bind to newDefer or newDefer.resolve })
3612							// deferred.fail(function() { bind to newDefer or newDefer.reject })
3613							deferred[ tuple[ 1 ] ]( function() {
3614								var returned = fn && fn.apply( this, arguments );
3615								if ( returned && isFunction( returned.promise ) ) {
3616									returned.promise()
3617										.progress( newDefer.notify )
3618										.done( newDefer.resolve )
3619										.fail( newDefer.reject );
3620								} else {
3621									newDefer[ tuple[ 0 ] + "With" ](
3622										this,
3623										fn ? [ returned ] : arguments
3624									);
3625								}
3626							} );
3627						} );
3628						fns = null;
3629					} ).promise();
3630				},
3631				then: function( onFulfilled, onRejected, onProgress ) {
3632					var maxDepth = 0;
3633					function resolve( depth, deferred, handler, special ) {
3634						return function() {
3635							var that = this,
3636								args = arguments,
3637								mightThrow = function() {
3638									var returned, then;
3639
3640									// Support: Promises/A+ section 2.3.3.3.3
3641									// https://promisesaplus.com/#point-59
3642									// Ignore double-resolution attempts
3643									if ( depth < maxDepth ) {
3644										return;
3645									}
3646
3647									returned = handler.apply( that, args );
3648
3649									// Support: Promises/A+ section 2.3.1
3650									// https://promisesaplus.com/#point-48
3651									if ( returned === deferred.promise() ) {
3652										throw new TypeError( "Thenable self-resolution" );
3653									}
3654
3655									// Support: Promises/A+ sections 2.3.3.1, 3.5
3656									// https://promisesaplus.com/#point-54
3657									// https://promisesaplus.com/#point-75
3658									// Retrieve `then` only once
3659									then = returned &&
3660
3661										// Support: Promises/A+ section 2.3.4
3662										// https://promisesaplus.com/#point-64
3663										// Only check objects and functions for thenability
3664										( typeof returned === "object" ||
3665											typeof returned === "function" ) &&
3666										returned.then;
3667
3668									// Handle a returned thenable
3669									if ( isFunction( then ) ) {
3670
3671										// Special processors (notify) just wait for resolution
3672										if ( special ) {
3673											then.call(
3674												returned,
3675												resolve( maxDepth, deferred, Identity, special ),
3676												resolve( maxDepth, deferred, Thrower, special )
3677											);
3678
3679										// Normal processors (resolve) also hook into progress
3680										} else {
3681
3682											// ...and disregard older resolution values
3683											maxDepth++;
3684
3685											then.call(
3686												returned,
3687												resolve( maxDepth, deferred, Identity, special ),
3688												resolve( maxDepth, deferred, Thrower, special ),
3689												resolve( maxDepth, deferred, Identity,
3690													deferred.notifyWith )
3691											);
3692										}
3693
3694									// Handle all other returned values
3695									} else {
3696
3697										// Only substitute handlers pass on context
3698										// and multiple values (non-spec behavior)
3699										if ( handler !== Identity ) {
3700											that = undefined;
3701											args = [ returned ];
3702										}
3703
3704										// Process the value(s)
3705										// Default process is resolve
3706										( special || deferred.resolveWith )( that, args );
3707									}
3708								},
3709
3710								// Only normal processors (resolve) catch and reject exceptions
3711								process = special ?
3712									mightThrow :
3713									function() {
3714										try {
3715											mightThrow();
3716										} catch ( e ) {
3717
3718											if ( jQuery.Deferred.exceptionHook ) {
3719												jQuery.Deferred.exceptionHook( e,
3720													process.error );
3721											}
3722
3723											// Support: Promises/A+ section 2.3.3.3.4.1
3724											// https://promisesaplus.com/#point-61
3725											// Ignore post-resolution exceptions
3726											if ( depth + 1 >= maxDepth ) {
3727
3728												// Only substitute handlers pass on context
3729												// and multiple values (non-spec behavior)
3730												if ( handler !== Thrower ) {
3731													that = undefined;
3732													args = [ e ];
3733												}
3734
3735												deferred.rejectWith( that, args );
3736											}
3737										}
3738									};
3739
3740							// Support: Promises/A+ section 2.3.3.3.1
3741							// https://promisesaplus.com/#point-57
3742							// Re-resolve promises immediately to dodge false rejection from
3743							// subsequent errors
3744							if ( depth ) {
3745								process();
3746							} else {
3747
3748								// Call an optional hook to record the error, in case of exception
3749								// since it's otherwise lost when execution goes async
3750								if ( jQuery.Deferred.getErrorHook ) {
3751									process.error = jQuery.Deferred.getErrorHook();
3752
3753								// The deprecated alias of the above. While the name suggests
3754								// returning the stack, not an error instance, jQuery just passes
3755								// it directly to `console.warn` so both will work; an instance
3756								// just better cooperates with source maps.
3757								} else if ( jQuery.Deferred.getStackHook ) {
3758									process.error = jQuery.Deferred.getStackHook();
3759								}
3760								window.setTimeout( process );
3761							}
3762						};
3763					}
3764
3765					return jQuery.Deferred( function( newDefer ) {
3766
3767						// progress_handlers.add( ... )
3768						tuples[ 0 ][ 3 ].add(
3769							resolve(
3770								0,
3771								newDefer,
3772								isFunction( onProgress ) ?
3773									onProgress :
3774									Identity,
3775								newDefer.notifyWith
3776							)
3777						);
3778
3779						// fulfilled_handlers.add( ... )
3780						tuples[ 1 ][ 3 ].add(
3781							resolve(
3782								0,
3783								newDefer,
3784								isFunction( onFulfilled ) ?
3785									onFulfilled :
3786									Identity
3787							)
3788						);
3789
3790						// rejected_handlers.add( ... )
3791						tuples[ 2 ][ 3 ].add(
3792							resolve(
3793								0,
3794								newDefer,
3795								isFunction( onRejected ) ?
3796									onRejected :
3797									Thrower
3798							)
3799						);
3800					} ).promise();
3801				},
3802
3803				// Get a promise for this deferred
3804				// If obj is provided, the promise aspect is added to the object
3805				promise: function( obj ) {
3806					return obj != null ? jQuery.extend( obj, promise ) : promise;
3807				}
3808			},
3809			deferred = {};
3810
3811		// Add list-specific methods
3812		jQuery.each( tuples, function( i, tuple ) {
3813			var list = tuple[ 2 ],
3814				stateString = tuple[ 5 ];
3815
3816			// promise.progress = list.add
3817			// promise.done = list.add
3818			// promise.fail = list.add
3819			promise[ tuple[ 1 ] ] = list.add;
3820
3821			// Handle state
3822			if ( stateString ) {
3823				list.add(
3824					function() {
3825
3826						// state = "resolved" (i.e., fulfilled)
3827						// state = "rejected"
3828						state = stateString;
3829					},
3830
3831					// rejected_callbacks.disable
3832					// fulfilled_callbacks.disable
3833					tuples[ 3 - i ][ 2 ].disable,
3834
3835					// rejected_handlers.disable
3836					// fulfilled_handlers.disable
3837					tuples[ 3 - i ][ 3 ].disable,
3838
3839					// progress_callbacks.lock
3840					tuples[ 0 ][ 2 ].lock,
3841
3842					// progress_handlers.lock
3843					tuples[ 0 ][ 3 ].lock
3844				);
3845			}
3846
3847			// progress_handlers.fire
3848			// fulfilled_handlers.fire
3849			// rejected_handlers.fire
3850			list.add( tuple[ 3 ].fire );
3851
3852			// deferred.notify = function() { deferred.notifyWith(...) }
3853			// deferred.resolve = function() { deferred.resolveWith(...) }
3854			// deferred.reject = function() { deferred.rejectWith(...) }
3855			deferred[ tuple[ 0 ] ] = function() {
3856				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
3857				return this;
3858			};
3859
3860			// deferred.notifyWith = list.fireWith
3861			// deferred.resolveWith = list.fireWith
3862			// deferred.rejectWith = list.fireWith
3863			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
3864		} );
3865
3866		// Make the deferred a promise
3867		promise.promise( deferred );
3868
3869		// Call given func if any
3870		if ( func ) {
3871			func.call( deferred, deferred );
3872		}
3873
3874		// All done!
3875		return deferred;
3876	},
3877
3878	// Deferred helper
3879	when: function( singleValue ) {
3880		var
3881
3882			// count of uncompleted subordinates
3883			remaining = arguments.length,
3884
3885			// count of unprocessed arguments
3886			i = remaining,
3887
3888			// subordinate fulfillment data
3889			resolveContexts = Array( i ),
3890			resolveValues = slice.call( arguments ),
3891
3892			// the primary Deferred
3893			primary = jQuery.Deferred(),
3894
3895			// subordinate callback factory
3896			updateFunc = function( i ) {
3897				return function( value ) {
3898					resolveContexts[ i ] = this;
3899					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3900					if ( !( --remaining ) ) {
3901						primary.resolveWith( resolveContexts, resolveValues );
3902					}
3903				};
3904			};
3905
3906		// Single- and empty arguments are adopted like Promise.resolve
3907		if ( remaining <= 1 ) {
3908			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
3909				!remaining );
3910
3911			// Use .then() to unwrap secondary thenables (cf. gh-3000)
3912			if ( primary.state() === "pending" ||
3913				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
3914
3915				return primary.then();
3916			}
3917		}
3918
3919		// Multiple arguments are aggregated like Promise.all array elements
3920		while ( i-- ) {
3921			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
3922		}
3923
3924		return primary.promise();
3925	}
3926} );
3927
3928
3929// These usually indicate a programmer mistake during development,
3930// warn about them ASAP rather than swallowing them by default.
3931var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3932
3933// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
3934// captured before the async barrier to get the original error cause
3935// which may otherwise be hidden.
3936jQuery.Deferred.exceptionHook = function( error, asyncError ) {
3937
3938	// Support: IE 8 - 9 only
3939	// Console exists when dev tools are open, which can happen at any time
3940	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
3941		window.console.warn( "jQuery.Deferred exception: " + error.message,
3942			error.stack, asyncError );
3943	}
3944};
3945
3946
3947
3948
3949jQuery.readyException = function( error ) {
3950	window.setTimeout( function() {
3951		throw error;
3952	} );
3953};
3954
3955
3956
3957
3958// The deferred used on DOM ready
3959var readyList = jQuery.Deferred();
3960
3961jQuery.fn.ready = function( fn ) {
3962
3963	readyList
3964		.then( fn )
3965
3966		// Wrap jQuery.readyException in a function so that the lookup
3967		// happens at the time of error handling instead of callback
3968		// registration.
3969		.catch( function( error ) {
3970			jQuery.readyException( error );
3971		} );
3972
3973	return this;
3974};
3975
3976jQuery.extend( {
3977
3978	// Is the DOM ready to be used? Set to true once it occurs.
3979	isReady: false,
3980
3981	// A counter to track how many items to wait for before
3982	// the ready event fires. See trac-6781
3983	readyWait: 1,
3984
3985	// Handle when the DOM is ready
3986	ready: function( wait ) {
3987
3988		// Abort if there are pending holds or we're already ready
3989		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3990			return;
3991		}
3992
3993		// Remember that the DOM is ready
3994		jQuery.isReady = true;
3995
3996		// If a normal DOM Ready event fired, decrement, and wait if need be
3997		if ( wait !== true && --jQuery.readyWait > 0 ) {
3998			return;
3999		}
4000
4001		// If there are functions bound, to execute
4002		readyList.resolveWith( document, [ jQuery ] );
4003	}
4004} );
4005
4006jQuery.ready.then = readyList.then;
4007
4008// The ready event handler and self cleanup method
4009function completed() {
4010	document.removeEventListener( "DOMContentLoaded", completed );
4011	window.removeEventListener( "load", completed );
4012	jQuery.ready();
4013}
4014
4015// Catch cases where $(document).ready() is called
4016// after the browser event has already occurred.
4017// Support: IE <=9 - 10 only
4018// Older IE sometimes signals "interactive" too soon
4019if ( document.readyState === "complete" ||
4020	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
4021
4022	// Handle it asynchronously to allow scripts the opportunity to delay ready
4023	window.setTimeout( jQuery.ready );
4024
4025} else {
4026
4027	// Use the handy event callback
4028	document.addEventListener( "DOMContentLoaded", completed );
4029
4030	// A fallback to window.onload, that will always work
4031	window.addEventListener( "load", completed );
4032}
4033
4034
4035
4036
4037// Multifunctional method to get and set values of a collection
4038// The value/s can optionally be executed if it's a function
4039var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
4040	var i = 0,
4041		len = elems.length,
4042		bulk = key == null;
4043
4044	// Sets many values
4045	if ( toType( key ) === "object" ) {
4046		chainable = true;
4047		for ( i in key ) {
4048			access( elems, fn, i, key[ i ], true, emptyGet, raw );
4049		}
4050
4051	// Sets one value
4052	} else if ( value !== undefined ) {
4053		chainable = true;
4054
4055		if ( !isFunction( value ) ) {
4056			raw = true;
4057		}
4058
4059		if ( bulk ) {
4060
4061			// Bulk operations run against the entire set
4062			if ( raw ) {
4063				fn.call( elems, value );
4064				fn = null;
4065
4066			// ...except when executing function values
4067			} else {
4068				bulk = fn;
4069				fn = function( elem, _key, value ) {
4070					return bulk.call( jQuery( elem ), value );
4071				};
4072			}
4073		}
4074
4075		if ( fn ) {
4076			for ( ; i < len; i++ ) {
4077				fn(
4078					elems[ i ], key, raw ?
4079						value :
4080						value.call( elems[ i ], i, fn( elems[ i ], key ) )
4081				);
4082			}
4083		}
4084	}
4085
4086	if ( chainable ) {
4087		return elems;
4088	}
4089
4090	// Gets
4091	if ( bulk ) {
4092		return fn.call( elems );
4093	}
4094
4095	return len ? fn( elems[ 0 ], key ) : emptyGet;
4096};
4097
4098
4099// Matches dashed string for camelizing
4100var rmsPrefix = /^-ms-/,
4101	rdashAlpha = /-([a-z])/g;
4102
4103// Used by camelCase as callback to replace()
4104function fcamelCase( _all, letter ) {
4105	return letter.toUpperCase();
4106}
4107
4108// Convert dashed to camelCase; used by the css and data modules
4109// Support: IE <=9 - 11, Edge 12 - 15
4110// Microsoft forgot to hump their vendor prefix (trac-9572)
4111function camelCase( string ) {
4112	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
4113}
4114var acceptData = function( owner ) {
4115
4116	// Accepts only:
4117	//  - Node
4118	//    - Node.ELEMENT_NODE
4119	//    - Node.DOCUMENT_NODE
4120	//  - Object
4121	//    - Any
4122	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
4123};
4124
4125
4126
4127
4128function Data() {
4129	this.expando = jQuery.expando + Data.uid++;
4130}
4131
4132Data.uid = 1;
4133
4134Data.prototype = {
4135
4136	cache: function( owner ) {
4137
4138		// Check if the owner object already has a cache
4139		var value = owner[ this.expando ];
4140
4141		// If not, create one
4142		if ( !value ) {
4143			value = {};
4144
4145			// We can accept data for non-element nodes in modern browsers,
4146			// but we should not, see trac-8335.
4147			// Always return an empty object.
4148			if ( acceptData( owner ) ) {
4149
4150				// If it is a node unlikely to be stringify-ed or looped over
4151				// use plain assignment
4152				if ( owner.nodeType ) {
4153					owner[ this.expando ] = value;
4154
4155				// Otherwise secure it in a non-enumerable property
4156				// configurable must be true to allow the property to be
4157				// deleted when data is removed
4158				} else {
4159					Object.defineProperty( owner, this.expando, {
4160						value: value,
4161						configurable: true
4162					} );
4163				}
4164			}
4165		}
4166
4167		return value;
4168	},
4169	set: function( owner, data, value ) {
4170		var prop,
4171			cache = this.cache( owner );
4172
4173		// Handle: [ owner, key, value ] args
4174		// Always use camelCase key (gh-2257)
4175		if ( typeof data === "string" ) {
4176			cache[ camelCase( data ) ] = value;
4177
4178		// Handle: [ owner, { properties } ] args
4179		} else {
4180
4181			// Copy the properties one-by-one to the cache object
4182			for ( prop in data ) {
4183				cache[ camelCase( prop ) ] = data[ prop ];
4184			}
4185		}
4186		return cache;
4187	},
4188	get: function( owner, key ) {
4189		return key === undefined ?
4190			this.cache( owner ) :
4191
4192			// Always use camelCase key (gh-2257)
4193			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
4194	},
4195	access: function( owner, key, value ) {
4196
4197		// In cases where either:
4198		//
4199		//   1. No key was specified
4200		//   2. A string key was specified, but no value provided
4201		//
4202		// Take the "read" path and allow the get method to determine
4203		// which value to return, respectively either:
4204		//
4205		//   1. The entire cache object
4206		//   2. The data stored at the key
4207		//
4208		if ( key === undefined ||
4209				( ( key && typeof key === "string" ) && value === undefined ) ) {
4210
4211			return this.get( owner, key );
4212		}
4213
4214		// When the key is not a string, or both a key and value
4215		// are specified, set or extend (existing objects) with either:
4216		//
4217		//   1. An object of properties
4218		//   2. A key and value
4219		//
4220		this.set( owner, key, value );
4221
4222		// Since the "set" path can have two possible entry points
4223		// return the expected data based on which path was taken[*]
4224		return value !== undefined ? value : key;
4225	},
4226	remove: function( owner, key ) {
4227		var i,
4228			cache = owner[ this.expando ];
4229
4230		if ( cache === undefined ) {
4231			return;
4232		}
4233
4234		if ( key !== undefined ) {
4235
4236			// Support array or space separated string of keys
4237			if ( Array.isArray( key ) ) {
4238
4239				// If key is an array of keys...
4240				// We always set camelCase keys, so remove that.
4241				key = key.map( camelCase );
4242			} else {
4243				key = camelCase( key );
4244
4245				// If a key with the spaces exists, use it.
4246				// Otherwise, create an array by matching non-whitespace
4247				key = key in cache ?
4248					[ key ] :
4249					( key.match( rnothtmlwhite ) || [] );
4250			}
4251
4252			i = key.length;
4253
4254			while ( i-- ) {
4255				delete cache[ key[ i ] ];
4256			}
4257		}
4258
4259		// Remove the expando if there's no more data
4260		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
4261
4262			// Support: Chrome <=35 - 45
4263			// Webkit & Blink performance suffers when deleting properties
4264			// from DOM nodes, so set to undefined instead
4265			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4266			if ( owner.nodeType ) {
4267				owner[ this.expando ] = undefined;
4268			} else {
4269				delete owner[ this.expando ];
4270			}
4271		}
4272	},
4273	hasData: function( owner ) {
4274		var cache = owner[ this.expando ];
4275		return cache !== undefined && !jQuery.isEmptyObject( cache );
4276	}
4277};
4278var dataPriv = new Data();
4279
4280var dataUser = new Data();
4281
4282
4283
4284//	Implementation Summary
4285//
4286//	1. Enforce API surface and semantic compatibility with 1.9.x branch
4287//	2. Improve the module's maintainability by reducing the storage
4288//		paths to a single mechanism.
4289//	3. Use the same single mechanism to support "private" and "user" data.
4290//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4291//	5. Avoid exposing implementation details on user objects (eg. expando properties)
4292//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
4293
4294var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4295	rmultiDash = /[A-Z]/g;
4296
4297function getData( data ) {
4298	if ( data === "true" ) {
4299		return true;
4300	}
4301
4302	if ( data === "false" ) {
4303		return false;
4304	}
4305
4306	if ( data === "null" ) {
4307		return null;
4308	}
4309
4310	// Only convert to a number if it doesn't change the string
4311	if ( data === +data + "" ) {
4312		return +data;
4313	}
4314
4315	if ( rbrace.test( data ) ) {
4316		return JSON.parse( data );
4317	}
4318
4319	return data;
4320}
4321
4322function dataAttr( elem, key, data ) {
4323	var name;
4324
4325	// If nothing was found internally, try to fetch any
4326	// data from the HTML5 data-* attribute
4327	if ( data === undefined && elem.nodeType === 1 ) {
4328		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
4329		data = elem.getAttribute( name );
4330
4331		if ( typeof data === "string" ) {
4332			try {
4333				data = getData( data );
4334			} catch ( e ) {}
4335
4336			// Make sure we set the data so it isn't changed later
4337			dataUser.set( elem, key, data );
4338		} else {
4339			data = undefined;
4340		}
4341	}
4342	return data;
4343}
4344
4345jQuery.extend( {
4346	hasData: function( elem ) {
4347		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
4348	},
4349
4350	data: function( elem, name, data ) {
4351		return dataUser.access( elem, name, data );
4352	},
4353
4354	removeData: function( elem, name ) {
4355		dataUser.remove( elem, name );
4356	},
4357
4358	// TODO: Now that all calls to _data and _removeData have been replaced
4359	// with direct calls to dataPriv methods, these can be deprecated.
4360	_data: function( elem, name, data ) {
4361		return dataPriv.access( elem, name, data );
4362	},
4363
4364	_removeData: function( elem, name ) {
4365		dataPriv.remove( elem, name );
4366	}
4367} );
4368
4369jQuery.fn.extend( {
4370	data: function( key, value ) {
4371		var i, name, data,
4372			elem = this[ 0 ],
4373			attrs = elem && elem.attributes;
4374
4375		// Gets all values
4376		if ( key === undefined ) {
4377			if ( this.length ) {
4378				data = dataUser.get( elem );
4379
4380				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
4381					i = attrs.length;
4382					while ( i-- ) {
4383
4384						// Support: IE 11 only
4385						// The attrs elements can be null (trac-14894)
4386						if ( attrs[ i ] ) {
4387							name = attrs[ i ].name;
4388							if ( name.indexOf( "data-" ) === 0 ) {
4389								name = camelCase( name.slice( 5 ) );
4390								dataAttr( elem, name, data[ name ] );
4391							}
4392						}
4393					}
4394					dataPriv.set( elem, "hasDataAttrs", true );
4395				}
4396			}
4397
4398			return data;
4399		}
4400
4401		// Sets multiple values
4402		if ( typeof key === "object" ) {
4403			return this.each( function() {
4404				dataUser.set( this, key );
4405			} );
4406		}
4407
4408		return access( this, function( value ) {
4409			var data;
4410
4411			// The calling jQuery object (element matches) is not empty
4412			// (and therefore has an element appears at this[ 0 ]) and the
4413			// `value` parameter was not undefined. An empty jQuery object
4414			// will result in `undefined` for elem = this[ 0 ] which will
4415			// throw an exception if an attempt to read a data cache is made.
4416			if ( elem && value === undefined ) {
4417
4418				// Attempt to get data from the cache
4419				// The key will always be camelCased in Data
4420				data = dataUser.get( elem, key );
4421				if ( data !== undefined ) {
4422					return data;
4423				}
4424
4425				// Attempt to "discover" the data in
4426				// HTML5 custom data-* attrs
4427				data = dataAttr( elem, key );
4428				if ( data !== undefined ) {
4429					return data;
4430				}
4431
4432				// We tried really hard, but the data doesn't exist.
4433				return;
4434			}
4435
4436			// Set the data...
4437			this.each( function() {
4438
4439				// We always store the camelCased key
4440				dataUser.set( this, key, value );
4441			} );
4442		}, null, value, arguments.length > 1, null, true );
4443	},
4444
4445	removeData: function( key ) {
4446		return this.each( function() {
4447			dataUser.remove( this, key );
4448		} );
4449	}
4450} );
4451
4452
4453jQuery.extend( {
4454	queue: function( elem, type, data ) {
4455		var queue;
4456
4457		if ( elem ) {
4458			type = ( type || "fx" ) + "queue";
4459			queue = dataPriv.get( elem, type );
4460
4461			// Speed up dequeue by getting out quickly if this is just a lookup
4462			if ( data ) {
4463				if ( !queue || Array.isArray( data ) ) {
4464					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
4465				} else {
4466					queue.push( data );
4467				}
4468			}
4469			return queue || [];
4470		}
4471	},
4472
4473	dequeue: function( elem, type ) {
4474		type = type || "fx";
4475
4476		var queue = jQuery.queue( elem, type ),
4477			startLength = queue.length,
4478			fn = queue.shift(),
4479			hooks = jQuery._queueHooks( elem, type ),
4480			next = function() {
4481				jQuery.dequeue( elem, type );
4482			};
4483
4484		// If the fx queue is dequeued, always remove the progress sentinel
4485		if ( fn === "inprogress" ) {
4486			fn = queue.shift();
4487			startLength--;
4488		}
4489
4490		if ( fn ) {
4491
4492			// Add a progress sentinel to prevent the fx queue from being
4493			// automatically dequeued
4494			if ( type === "fx" ) {
4495				queue.unshift( "inprogress" );
4496			}
4497
4498			// Clear up the last queue stop function
4499			delete hooks.stop;
4500			fn.call( elem, next, hooks );
4501		}
4502
4503		if ( !startLength && hooks ) {
4504			hooks.empty.fire();
4505		}
4506	},
4507
4508	// Not public - generate a queueHooks object, or return the current one
4509	_queueHooks: function( elem, type ) {
4510		var key = type + "queueHooks";
4511		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
4512			empty: jQuery.Callbacks( "once memory" ).add( function() {
4513				dataPriv.remove( elem, [ type + "queue", key ] );
4514			} )
4515		} );
4516	}
4517} );
4518
4519jQuery.fn.extend( {
4520	queue: function( type, data ) {
4521		var setter = 2;
4522
4523		if ( typeof type !== "string" ) {
4524			data = type;
4525			type = "fx";
4526			setter--;
4527		}
4528
4529		if ( arguments.length < setter ) {
4530			return jQuery.queue( this[ 0 ], type );
4531		}
4532
4533		return data === undefined ?
4534			this :
4535			this.each( function() {
4536				var queue = jQuery.queue( this, type, data );
4537
4538				// Ensure a hooks for this queue
4539				jQuery._queueHooks( this, type );
4540
4541				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
4542					jQuery.dequeue( this, type );
4543				}
4544			} );
4545	},
4546	dequeue: function( type ) {
4547		return this.each( function() {
4548			jQuery.dequeue( this, type );
4549		} );
4550	},
4551	clearQueue: function( type ) {
4552		return this.queue( type || "fx", [] );
4553	},
4554
4555	// Get a promise resolved when queues of a certain type
4556	// are emptied (fx is the type by default)
4557	promise: function( type, obj ) {
4558		var tmp,
4559			count = 1,
4560			defer = jQuery.Deferred(),
4561			elements = this,
4562			i = this.length,
4563			resolve = function() {
4564				if ( !( --count ) ) {
4565					defer.resolveWith( elements, [ elements ] );
4566				}
4567			};
4568
4569		if ( typeof type !== "string" ) {
4570			obj = type;
4571			type = undefined;
4572		}
4573		type = type || "fx";
4574
4575		while ( i-- ) {
4576			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
4577			if ( tmp && tmp.empty ) {
4578				count++;
4579				tmp.empty.add( resolve );
4580			}
4581		}
4582		resolve();
4583		return defer.promise( obj );
4584	}
4585} );
4586var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
4587
4588var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
4589
4590
4591var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4592
4593var documentElement = document.documentElement;
4594
4595
4596
4597	var isAttached = function( elem ) {
4598			return jQuery.contains( elem.ownerDocument, elem );
4599		},
4600		composed = { composed: true };
4601
4602	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
4603	// Check attachment across shadow DOM boundaries when possible (gh-3504)
4604	// Support: iOS 10.0-10.2 only
4605	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
4606	// leading to errors. We need to check for `getRootNode`.
4607	if ( documentElement.getRootNode ) {
4608		isAttached = function( elem ) {
4609			return jQuery.contains( elem.ownerDocument, elem ) ||
4610				elem.getRootNode( composed ) === elem.ownerDocument;
4611		};
4612	}
4613var isHiddenWithinTree = function( elem, el ) {
4614
4615		// isHiddenWithinTree might be called from jQuery#filter function;
4616		// in that case, element will be second argument
4617		elem = el || elem;
4618
4619		// Inline style trumps all
4620		return elem.style.display === "none" ||
4621			elem.style.display === "" &&
4622
4623			// Otherwise, check computed style
4624			// Support: Firefox <=43 - 45
4625			// Disconnected elements can have computed display: none, so first confirm that elem is
4626			// in the document.
4627			isAttached( elem ) &&
4628
4629			jQuery.css( elem, "display" ) === "none";
4630	};
4631
4632
4633
4634function adjustCSS( elem, prop, valueParts, tween ) {
4635	var adjusted, scale,
4636		maxIterations = 20,
4637		currentValue = tween ?
4638			function() {
4639				return tween.cur();
4640			} :
4641			function() {
4642				return jQuery.css( elem, prop, "" );
4643			},
4644		initial = currentValue(),
4645		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
4646
4647		// Starting value computation is required for potential unit mismatches
4648		initialInUnit = elem.nodeType &&
4649			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
4650			rcssNum.exec( jQuery.css( elem, prop ) );
4651
4652	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
4653
4654		// Support: Firefox <=54
4655		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
4656		initial = initial / 2;
4657
4658		// Trust units reported by jQuery.css
4659		unit = unit || initialInUnit[ 3 ];
4660
4661		// Iteratively approximate from a nonzero starting point
4662		initialInUnit = +initial || 1;
4663
4664		while ( maxIterations-- ) {
4665
4666			// Evaluate and update our best guess (doubling guesses that zero out).
4667			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
4668			jQuery.style( elem, prop, initialInUnit + unit );
4669			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
4670				maxIterations = 0;
4671			}
4672			initialInUnit = initialInUnit / scale;
4673
4674		}
4675
4676		initialInUnit = initialInUnit * 2;
4677		jQuery.style( elem, prop, initialInUnit + unit );
4678
4679		// Make sure we update the tween properties later on
4680		valueParts = valueParts || [];
4681	}
4682
4683	if ( valueParts ) {
4684		initialInUnit = +initialInUnit || +initial || 0;
4685
4686		// Apply relative offset (+=/-=) if specified
4687		adjusted = valueParts[ 1 ] ?
4688			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
4689			+valueParts[ 2 ];
4690		if ( tween ) {
4691			tween.unit = unit;
4692			tween.start = initialInUnit;
4693			tween.end = adjusted;
4694		}
4695	}
4696	return adjusted;
4697}
4698
4699
4700var defaultDisplayMap = {};
4701
4702function getDefaultDisplay( elem ) {
4703	var temp,
4704		doc = elem.ownerDocument,
4705		nodeName = elem.nodeName,
4706		display = defaultDisplayMap[ nodeName ];
4707
4708	if ( display ) {
4709		return display;
4710	}
4711
4712	temp = doc.body.appendChild( doc.createElement( nodeName ) );
4713	display = jQuery.css( temp, "display" );
4714
4715	temp.parentNode.removeChild( temp );
4716
4717	if ( display === "none" ) {
4718		display = "block";
4719	}
4720	defaultDisplayMap[ nodeName ] = display;
4721
4722	return display;
4723}
4724
4725function showHide( elements, show ) {
4726	var display, elem,
4727		values = [],
4728		index = 0,
4729		length = elements.length;
4730
4731	// Determine new display value for elements that need to change
4732	for ( ; index < length; index++ ) {
4733		elem = elements[ index ];
4734		if ( !elem.style ) {
4735			continue;
4736		}
4737
4738		display = elem.style.display;
4739		if ( show ) {
4740
4741			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
4742			// check is required in this first loop unless we have a nonempty display value (either
4743			// inline or about-to-be-restored)
4744			if ( display === "none" ) {
4745				values[ index ] = dataPriv.get( elem, "display" ) || null;
4746				if ( !values[ index ] ) {
4747					elem.style.display = "";
4748				}
4749			}
4750			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
4751				values[ index ] = getDefaultDisplay( elem );
4752			}
4753		} else {
4754			if ( display !== "none" ) {
4755				values[ index ] = "none";
4756
4757				// Remember what we're overwriting
4758				dataPriv.set( elem, "display", display );
4759			}
4760		}
4761	}
4762
4763	// Set the display of the elements in a second loop to avoid constant reflow
4764	for ( index = 0; index < length; index++ ) {
4765		if ( values[ index ] != null ) {
4766			elements[ index ].style.display = values[ index ];
4767		}
4768	}
4769
4770	return elements;
4771}
4772
4773jQuery.fn.extend( {
4774	show: function() {
4775		return showHide( this, true );
4776	},
4777	hide: function() {
4778		return showHide( this );
4779	},
4780	toggle: function( state ) {
4781		if ( typeof state === "boolean" ) {
4782			return state ? this.show() : this.hide();
4783		}
4784
4785		return this.each( function() {
4786			if ( isHiddenWithinTree( this ) ) {
4787				jQuery( this ).show();
4788			} else {
4789				jQuery( this ).hide();
4790			}
4791		} );
4792	}
4793} );
4794var rcheckableType = ( /^(?:checkbox|radio)$/i );
4795
4796var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
4797
4798var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
4799
4800
4801
4802( function() {
4803	var fragment = document.createDocumentFragment(),
4804		div = fragment.appendChild( document.createElement( "div" ) ),
4805		input = document.createElement( "input" );
4806
4807	// Support: Android 4.0 - 4.3 only
4808	// Check state lost if the name is set (trac-11217)
4809	// Support: Windows Web Apps (WWA)
4810	// `name` and `type` must use .setAttribute for WWA (trac-14901)
4811	input.setAttribute( "type", "radio" );
4812	input.setAttribute( "checked", "checked" );
4813	input.setAttribute( "name", "t" );
4814
4815	div.appendChild( input );
4816
4817	// Support: Android <=4.1 only
4818	// Older WebKit doesn't clone checked state correctly in fragments
4819	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4820
4821	// Support: IE <=11 only
4822	// Make sure textarea (and checkbox) defaultValue is properly cloned
4823	div.innerHTML = "<textarea>x</textarea>";
4824	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4825
4826	// Support: IE <=9 only
4827	// IE <=9 replaces <option> tags with their contents when inserted outside of
4828	// the select element.
4829	div.innerHTML = "<option></option>";
4830	support.option = !!div.lastChild;
4831} )();
4832
4833
4834// We have to close these tags to support XHTML (trac-13200)
4835var wrapMap = {
4836
4837	// XHTML parsers do not magically insert elements in the
4838	// same way that tag soup parsers do. So we cannot shorten
4839	// this by omitting <tbody> or other required elements.
4840	thead: [ 1, "<table>", "</table>" ],
4841	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
4842	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
4843	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
4844
4845	_default: [ 0, "", "" ]
4846};
4847
4848wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
4849wrapMap.th = wrapMap.td;
4850
4851// Support: IE <=9 only
4852if ( !support.option ) {
4853	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
4854}
4855
4856
4857function getAll( context, tag ) {
4858
4859	// Support: IE <=9 - 11 only
4860	// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
4861	var ret;
4862
4863	if ( typeof context.getElementsByTagName !== "undefined" ) {
4864		ret = context.getElementsByTagName( tag || "*" );
4865
4866	} else if ( typeof context.querySelectorAll !== "undefined" ) {
4867		ret = context.querySelectorAll( tag || "*" );
4868
4869	} else {
4870		ret = [];
4871	}
4872
4873	if ( tag === undefined || tag && nodeName( context, tag ) ) {
4874		return jQuery.merge( [ context ], ret );
4875	}
4876
4877	return ret;
4878}
4879
4880
4881// Mark scripts as having already been evaluated
4882function setGlobalEval( elems, refElements ) {
4883	var i = 0,
4884		l = elems.length;
4885
4886	for ( ; i < l; i++ ) {
4887		dataPriv.set(
4888			elems[ i ],
4889			"globalEval",
4890			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
4891		);
4892	}
4893}
4894
4895
4896var rhtml = /<|&#?\w+;/;
4897
4898function buildFragment( elems, context, scripts, selection, ignored ) {
4899	var elem, tmp, tag, wrap, attached, j,
4900		fragment = context.createDocumentFragment(),
4901		nodes = [],
4902		i = 0,
4903		l = elems.length;
4904
4905	for ( ; i < l; i++ ) {
4906		elem = elems[ i ];
4907
4908		if ( elem || elem === 0 ) {
4909
4910			// Add nodes directly
4911			if ( toType( elem ) === "object" ) {
4912
4913				// Support: Android <=4.0 only, PhantomJS 1 only
4914				// push.apply(_, arraylike) throws on ancient WebKit
4915				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
4916
4917			// Convert non-html into a text node
4918			} else if ( !rhtml.test( elem ) ) {
4919				nodes.push( context.createTextNode( elem ) );
4920
4921			// Convert html into DOM nodes
4922			} else {
4923				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
4924
4925				// Deserialize a standard representation
4926				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
4927				wrap = wrapMap[ tag ] || wrapMap._default;
4928				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
4929
4930				// Descend through wrappers to the right content
4931				j = wrap[ 0 ];
4932				while ( j-- ) {
4933					tmp = tmp.lastChild;
4934				}
4935
4936				// Support: Android <=4.0 only, PhantomJS 1 only
4937				// push.apply(_, arraylike) throws on ancient WebKit
4938				jQuery.merge( nodes, tmp.childNodes );
4939
4940				// Remember the top-level container
4941				tmp = fragment.firstChild;
4942
4943				// Ensure the created nodes are orphaned (trac-12392)
4944				tmp.textContent = "";
4945			}
4946		}
4947	}
4948
4949	// Remove wrapper from fragment
4950	fragment.textContent = "";
4951
4952	i = 0;
4953	while ( ( elem = nodes[ i++ ] ) ) {
4954
4955		// Skip elements already in the context collection (trac-4087)
4956		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
4957			if ( ignored ) {
4958				ignored.push( elem );
4959			}
4960			continue;
4961		}
4962
4963		attached = isAttached( elem );
4964
4965		// Append to fragment
4966		tmp = getAll( fragment.appendChild( elem ), "script" );
4967
4968		// Preserve script evaluation history
4969		if ( attached ) {
4970			setGlobalEval( tmp );
4971		}
4972
4973		// Capture executables
4974		if ( scripts ) {
4975			j = 0;
4976			while ( ( elem = tmp[ j++ ] ) ) {
4977				if ( rscriptType.test( elem.type || "" ) ) {
4978					scripts.push( elem );
4979				}
4980			}
4981		}
4982	}
4983
4984	return fragment;
4985}
4986
4987
4988var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
4989
4990function returnTrue() {
4991	return true;
4992}
4993
4994function returnFalse() {
4995	return false;
4996}
4997
4998function on( elem, types, selector, data, fn, one ) {
4999	var origFn, type;
5000
5001	// Types can be a map of types/handlers
5002	if ( typeof types === "object" ) {
5003
5004		// ( types-Object, selector, data )
5005		if ( typeof selector !== "string" ) {
5006
5007			// ( types-Object, data )
5008			data = data || selector;
5009			selector = undefined;
5010		}
5011		for ( type in types ) {
5012			on( elem, type, selector, data, types[ type ], one );
5013		}
5014		return elem;
5015	}
5016
5017	if ( data == null && fn == null ) {
5018
5019		// ( types, fn )
5020		fn = selector;
5021		data = selector = undefined;
5022	} else if ( fn == null ) {
5023		if ( typeof selector === "string" ) {
5024
5025			// ( types, selector, fn )
5026			fn = data;
5027			data = undefined;
5028		} else {
5029
5030			// ( types, data, fn )
5031			fn = data;
5032			data = selector;
5033			selector = undefined;
5034		}
5035	}
5036	if ( fn === false ) {
5037		fn = returnFalse;
5038	} else if ( !fn ) {
5039		return elem;
5040	}
5041
5042	if ( one === 1 ) {
5043		origFn = fn;
5044		fn = function( event ) {
5045
5046			// Can use an empty set, since event contains the info
5047			jQuery().off( event );
5048			return origFn.apply( this, arguments );
5049		};
5050
5051		// Use same guid so caller can remove using origFn
5052		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
5053	}
5054	return elem.each( function() {
5055		jQuery.event.add( this, types, fn, data, selector );
5056	} );
5057}
5058
5059/*
5060 * Helper functions for managing events -- not part of the public interface.
5061 * Props to Dean Edwards' addEvent library for many of the ideas.
5062 */
5063jQuery.event = {
5064
5065	global: {},
5066
5067	add: function( elem, types, handler, data, selector ) {
5068
5069		var handleObjIn, eventHandle, tmp,
5070			events, t, handleObj,
5071			special, handlers, type, namespaces, origType,
5072			elemData = dataPriv.get( elem );
5073
5074		// Only attach events to objects that accept data
5075		if ( !acceptData( elem ) ) {
5076			return;
5077		}
5078
5079		// Caller can pass in an object of custom data in lieu of the handler
5080		if ( handler.handler ) {
5081			handleObjIn = handler;
5082			handler = handleObjIn.handler;
5083			selector = handleObjIn.selector;
5084		}
5085
5086		// Ensure that invalid selectors throw exceptions at attach time
5087		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
5088		if ( selector ) {
5089			jQuery.find.matchesSelector( documentElement, selector );
5090		}
5091
5092		// Make sure that the handler has a unique ID, used to find/remove it later
5093		if ( !handler.guid ) {
5094			handler.guid = jQuery.guid++;
5095		}
5096
5097		// Init the element's event structure and main handler, if this is the first
5098		if ( !( events = elemData.events ) ) {
5099			events = elemData.events = Object.create( null );
5100		}
5101		if ( !( eventHandle = elemData.handle ) ) {
5102			eventHandle = elemData.handle = function( e ) {
5103
5104				// Discard the second event of a jQuery.event.trigger() and
5105				// when an event is called after a page has unloaded
5106				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
5107					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
5108			};
5109		}
5110
5111		// Handle multiple events separated by a space
5112		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5113		t = types.length;
5114		while ( t-- ) {
5115			tmp = rtypenamespace.exec( types[ t ] ) || [];
5116			type = origType = tmp[ 1 ];
5117			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5118
5119			// There *must* be a type, no attaching namespace-only handlers
5120			if ( !type ) {
5121				continue;
5122			}
5123
5124			// If event changes its type, use the special event handlers for the changed type
5125			special = jQuery.event.special[ type ] || {};
5126
5127			// If selector defined, determine special event api type, otherwise given type
5128			type = ( selector ? special.delegateType : special.bindType ) || type;
5129
5130			// Update special based on newly reset type
5131			special = jQuery.event.special[ type ] || {};
5132
5133			// handleObj is passed to all event handlers
5134			handleObj = jQuery.extend( {
5135				type: type,
5136				origType: origType,
5137				data: data,
5138				handler: handler,
5139				guid: handler.guid,
5140				selector: selector,
5141				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
5142				namespace: namespaces.join( "." )
5143			}, handleObjIn );
5144
5145			// Init the event handler queue if we're the first
5146			if ( !( handlers = events[ type ] ) ) {
5147				handlers = events[ type ] = [];
5148				handlers.delegateCount = 0;
5149
5150				// Only use addEventListener if the special events handler returns false
5151				if ( !special.setup ||
5152					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
5153
5154					if ( elem.addEventListener ) {
5155						elem.addEventListener( type, eventHandle );
5156					}
5157				}
5158			}
5159
5160			if ( special.add ) {
5161				special.add.call( elem, handleObj );
5162
5163				if ( !handleObj.handler.guid ) {
5164					handleObj.handler.guid = handler.guid;
5165				}
5166			}
5167
5168			// Add to the element's handler list, delegates in front
5169			if ( selector ) {
5170				handlers.splice( handlers.delegateCount++, 0, handleObj );
5171			} else {
5172				handlers.push( handleObj );
5173			}
5174
5175			// Keep track of which events have ever been used, for event optimization
5176			jQuery.event.global[ type ] = true;
5177		}
5178
5179	},
5180
5181	// Detach an event or set of events from an element
5182	remove: function( elem, types, handler, selector, mappedTypes ) {
5183
5184		var j, origCount, tmp,
5185			events, t, handleObj,
5186			special, handlers, type, namespaces, origType,
5187			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
5188
5189		if ( !elemData || !( events = elemData.events ) ) {
5190			return;
5191		}
5192
5193		// Once for each type.namespace in types; type may be omitted
5194		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
5195		t = types.length;
5196		while ( t-- ) {
5197			tmp = rtypenamespace.exec( types[ t ] ) || [];
5198			type = origType = tmp[ 1 ];
5199			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
5200
5201			// Unbind all events (on this namespace, if provided) for the element
5202			if ( !type ) {
5203				for ( type in events ) {
5204					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
5205				}
5206				continue;
5207			}
5208
5209			special = jQuery.event.special[ type ] || {};
5210			type = ( selector ? special.delegateType : special.bindType ) || type;
5211			handlers = events[ type ] || [];
5212			tmp = tmp[ 2 ] &&
5213				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
5214
5215			// Remove matching events
5216			origCount = j = handlers.length;
5217			while ( j-- ) {
5218				handleObj = handlers[ j ];
5219
5220				if ( ( mappedTypes || origType === handleObj.origType ) &&
5221					( !handler || handler.guid === handleObj.guid ) &&
5222					( !tmp || tmp.test( handleObj.namespace ) ) &&
5223					( !selector || selector === handleObj.selector ||
5224						selector === "**" && handleObj.selector ) ) {
5225					handlers.splice( j, 1 );
5226
5227					if ( handleObj.selector ) {
5228						handlers.delegateCount--;
5229					}
5230					if ( special.remove ) {
5231						special.remove.call( elem, handleObj );
5232					}
5233				}
5234			}
5235
5236			// Remove generic event handler if we removed something and no more handlers exist
5237			// (avoids potential for endless recursion during removal of special event handlers)
5238			if ( origCount && !handlers.length ) {
5239				if ( !special.teardown ||
5240					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
5241
5242					jQuery.removeEvent( elem, type, elemData.handle );
5243				}
5244
5245				delete events[ type ];
5246			}
5247		}
5248
5249		// Remove data and the expando if it's no longer used
5250		if ( jQuery.isEmptyObject( events ) ) {
5251			dataPriv.remove( elem, "handle events" );
5252		}
5253	},
5254
5255	dispatch: function( nativeEvent ) {
5256
5257		var i, j, ret, matched, handleObj, handlerQueue,
5258			args = new Array( arguments.length ),
5259
5260			// Make a writable jQuery.Event from the native event object
5261			event = jQuery.event.fix( nativeEvent ),
5262
5263			handlers = (
5264				dataPriv.get( this, "events" ) || Object.create( null )
5265			)[ event.type ] || [],
5266			special = jQuery.event.special[ event.type ] || {};
5267
5268		// Use the fix-ed jQuery.Event rather than the (read-only) native event
5269		args[ 0 ] = event;
5270
5271		for ( i = 1; i < arguments.length; i++ ) {
5272			args[ i ] = arguments[ i ];
5273		}
5274
5275		event.delegateTarget = this;
5276
5277		// Call the preDispatch hook for the mapped type, and let it bail if desired
5278		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
5279			return;
5280		}
5281
5282		// Determine handlers
5283		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
5284
5285		// Run delegates first; they may want to stop propagation beneath us
5286		i = 0;
5287		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
5288			event.currentTarget = matched.elem;
5289
5290			j = 0;
5291			while ( ( handleObj = matched.handlers[ j++ ] ) &&
5292				!event.isImmediatePropagationStopped() ) {
5293
5294				// If the event is namespaced, then each handler is only invoked if it is
5295				// specially universal or its namespaces are a superset of the event's.
5296				if ( !event.rnamespace || handleObj.namespace === false ||
5297					event.rnamespace.test( handleObj.namespace ) ) {
5298
5299					event.handleObj = handleObj;
5300					event.data = handleObj.data;
5301
5302					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
5303						handleObj.handler ).apply( matched.elem, args );
5304
5305					if ( ret !== undefined ) {
5306						if ( ( event.result = ret ) === false ) {
5307							event.preventDefault();
5308							event.stopPropagation();
5309						}
5310					}
5311				}
5312			}
5313		}
5314
5315		// Call the postDispatch hook for the mapped type
5316		if ( special.postDispatch ) {
5317			special.postDispatch.call( this, event );
5318		}
5319
5320		return event.result;
5321	},
5322
5323	handlers: function( event, handlers ) {
5324		var i, handleObj, sel, matchedHandlers, matchedSelectors,
5325			handlerQueue = [],
5326			delegateCount = handlers.delegateCount,
5327			cur = event.target;
5328
5329		// Find delegate handlers
5330		if ( delegateCount &&
5331
5332			// Support: IE <=9
5333			// Black-hole SVG <use> instance trees (trac-13180)
5334			cur.nodeType &&
5335
5336			// Support: Firefox <=42
5337			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5338			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5339			// Support: IE 11 only
5340			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5341			!( event.type === "click" && event.button >= 1 ) ) {
5342
5343			for ( ; cur !== this; cur = cur.parentNode || this ) {
5344
5345				// Don't check non-elements (trac-13208)
5346				// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
5347				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
5348					matchedHandlers = [];
5349					matchedSelectors = {};
5350					for ( i = 0; i < delegateCount; i++ ) {
5351						handleObj = handlers[ i ];
5352
5353						// Don't conflict with Object.prototype properties (trac-13203)
5354						sel = handleObj.selector + " ";
5355
5356						if ( matchedSelectors[ sel ] === undefined ) {
5357							matchedSelectors[ sel ] = handleObj.needsContext ?
5358								jQuery( sel, this ).index( cur ) > -1 :
5359								jQuery.find( sel, this, null, [ cur ] ).length;
5360						}
5361						if ( matchedSelectors[ sel ] ) {
5362							matchedHandlers.push( handleObj );
5363						}
5364					}
5365					if ( matchedHandlers.length ) {
5366						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
5367					}
5368				}
5369			}
5370		}
5371
5372		// Add the remaining (directly-bound) handlers
5373		cur = this;
5374		if ( delegateCount < handlers.length ) {
5375			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
5376		}
5377
5378		return handlerQueue;
5379	},
5380
5381	addProp: function( name, hook ) {
5382		Object.defineProperty( jQuery.Event.prototype, name, {
5383			enumerable: true,
5384			configurable: true,
5385
5386			get: isFunction( hook ) ?
5387				function() {
5388					if ( this.originalEvent ) {
5389						return hook( this.originalEvent );
5390					}
5391				} :
5392				function() {
5393					if ( this.originalEvent ) {
5394						return this.originalEvent[ name ];
5395					}
5396				},
5397
5398			set: function( value ) {
5399				Object.defineProperty( this, name, {
5400					enumerable: true,
5401					configurable: true,
5402					writable: true,
5403					value: value
5404				} );
5405			}
5406		} );
5407	},
5408
5409	fix: function( originalEvent ) {
5410		return originalEvent[ jQuery.expando ] ?
5411			originalEvent :
5412			new jQuery.Event( originalEvent );
5413	},
5414
5415	special: {
5416		load: {
5417
5418			// Prevent triggered image.load events from bubbling to window.load
5419			noBubble: true
5420		},
5421		click: {
5422
5423			// Utilize native event to ensure correct state for checkable inputs
5424			setup: function( data ) {
5425
5426				// For mutual compressibility with _default, replace `this` access with a local var.
5427				// `|| data` is dead code meant only to preserve the variable through minification.
5428				var el = this || data;
5429
5430				// Claim the first handler
5431				if ( rcheckableType.test( el.type ) &&
5432					el.click && nodeName( el, "input" ) ) {
5433
5434					// dataPriv.set( el, "click", ... )
5435					leverageNative( el, "click", true );
5436				}
5437
5438				// Return false to allow normal processing in the caller
5439				return false;
5440			},
5441			trigger: function( data ) {
5442
5443				// For mutual compressibility with _default, replace `this` access with a local var.
5444				// `|| data` is dead code meant only to preserve the variable through minification.
5445				var el = this || data;
5446
5447				// Force setup before triggering a click
5448				if ( rcheckableType.test( el.type ) &&
5449					el.click && nodeName( el, "input" ) ) {
5450
5451					leverageNative( el, "click" );
5452				}
5453
5454				// Return non-false to allow normal event-path propagation
5455				return true;
5456			},
5457
5458			// For cross-browser consistency, suppress native .click() on links
5459			// Also prevent it if we're currently inside a leveraged native-event stack
5460			_default: function( event ) {
5461				var target = event.target;
5462				return rcheckableType.test( target.type ) &&
5463					target.click && nodeName( target, "input" ) &&
5464					dataPriv.get( target, "click" ) ||
5465					nodeName( target, "a" );
5466			}
5467		},
5468
5469		beforeunload: {
5470			postDispatch: function( event ) {
5471
5472				// Support: Firefox 20+
5473				// Firefox doesn't alert if the returnValue field is not set.
5474				if ( event.result !== undefined && event.originalEvent ) {
5475					event.originalEvent.returnValue = event.result;
5476				}
5477			}
5478		}
5479	}
5480};
5481
5482// Ensure the presence of an event listener that handles manually-triggered
5483// synthetic events by interrupting progress until reinvoked in response to
5484// *native* events that it fires directly, ensuring that state changes have
5485// already occurred before other listeners are invoked.
5486function leverageNative( el, type, isSetup ) {
5487
5488	// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
5489	if ( !isSetup ) {
5490		if ( dataPriv.get( el, type ) === undefined ) {
5491			jQuery.event.add( el, type, returnTrue );
5492		}
5493		return;
5494	}
5495
5496	// Register the controller as a special universal handler for all event namespaces
5497	dataPriv.set( el, type, false );
5498	jQuery.event.add( el, type, {
5499		namespace: false,
5500		handler: function( event ) {
5501			var result,
5502				saved = dataPriv.get( this, type );
5503
5504			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
5505
5506				// Interrupt processing of the outer synthetic .trigger()ed event
5507				if ( !saved ) {
5508
5509					// Store arguments for use when handling the inner native event
5510					// There will always be at least one argument (an event object), so this array
5511					// will not be confused with a leftover capture object.
5512					saved = slice.call( arguments );
5513					dataPriv.set( this, type, saved );
5514
5515					// Trigger the native event and capture its result
5516					this[ type ]();
5517					result = dataPriv.get( this, type );
5518					dataPriv.set( this, type, false );
5519
5520					if ( saved !== result ) {
5521
5522						// Cancel the outer synthetic event
5523						event.stopImmediatePropagation();
5524						event.preventDefault();
5525
5526						return result;
5527					}
5528
5529				// If this is an inner synthetic event for an event with a bubbling surrogate
5530				// (focus or blur), assume that the surrogate already propagated from triggering
5531				// the native event and prevent that from happening again here.
5532				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5533				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
5534				// less bad than duplication.
5535				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
5536					event.stopPropagation();
5537				}
5538
5539			// If this is a native event triggered above, everything is now in order
5540			// Fire an inner synthetic event with the original arguments
5541			} else if ( saved ) {
5542
5543				// ...and capture the result
5544				dataPriv.set( this, type, jQuery.event.trigger(
5545					saved[ 0 ],
5546					saved.slice( 1 ),
5547					this
5548				) );
5549
5550				// Abort handling of the native event by all jQuery handlers while allowing
5551				// native handlers on the same element to run. On target, this is achieved
5552				// by stopping immediate propagation just on the jQuery event. However,
5553				// the native event is re-wrapped by a jQuery one on each level of the
5554				// propagation so the only way to stop it for jQuery is to stop it for
5555				// everyone via native `stopPropagation()`. This is not a problem for
5556				// focus/blur which don't bubble, but it does also stop click on checkboxes
5557				// and radios. We accept this limitation.
5558				event.stopPropagation();
5559				event.isImmediatePropagationStopped = returnTrue;
5560			}
5561		}
5562	} );
5563}
5564
5565jQuery.removeEvent = function( elem, type, handle ) {
5566
5567	// This "if" is needed for plain objects
5568	if ( elem.removeEventListener ) {
5569		elem.removeEventListener( type, handle );
5570	}
5571};
5572
5573jQuery.Event = function( src, props ) {
5574
5575	// Allow instantiation without the 'new' keyword
5576	if ( !( this instanceof jQuery.Event ) ) {
5577		return new jQuery.Event( src, props );
5578	}
5579
5580	// Event object
5581	if ( src && src.type ) {
5582		this.originalEvent = src;
5583		this.type = src.type;
5584
5585		// Events bubbling up the document may have been marked as prevented
5586		// by a handler lower down the tree; reflect the correct value.
5587		this.isDefaultPrevented = src.defaultPrevented ||
5588				src.defaultPrevented === undefined &&
5589
5590				// Support: Android <=2.3 only
5591				src.returnValue === false ?
5592			returnTrue :
5593			returnFalse;
5594
5595		// Create target properties
5596		// Support: Safari <=6 - 7 only
5597		// Target should not be a text node (trac-504, trac-13143)
5598		this.target = ( src.target && src.target.nodeType === 3 ) ?
5599			src.target.parentNode :
5600			src.target;
5601
5602		this.currentTarget = src.currentTarget;
5603		this.relatedTarget = src.relatedTarget;
5604
5605	// Event type
5606	} else {
5607		this.type = src;
5608	}
5609
5610	// Put explicitly provided properties onto the event object
5611	if ( props ) {
5612		jQuery.extend( this, props );
5613	}
5614
5615	// Create a timestamp if incoming event doesn't have one
5616	this.timeStamp = src && src.timeStamp || Date.now();
5617
5618	// Mark it as fixed
5619	this[ jQuery.expando ] = true;
5620};
5621
5622// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
5623// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
5624jQuery.Event.prototype = {
5625	constructor: jQuery.Event,
5626	isDefaultPrevented: returnFalse,
5627	isPropagationStopped: returnFalse,
5628	isImmediatePropagationStopped: returnFalse,
5629	isSimulated: false,
5630
5631	preventDefault: function() {
5632		var e = this.originalEvent;
5633
5634		this.isDefaultPrevented = returnTrue;
5635
5636		if ( e && !this.isSimulated ) {
5637			e.preventDefault();
5638		}
5639	},
5640	stopPropagation: function() {
5641		var e = this.originalEvent;
5642
5643		this.isPropagationStopped = returnTrue;
5644
5645		if ( e && !this.isSimulated ) {
5646			e.stopPropagation();
5647		}
5648	},
5649	stopImmediatePropagation: function() {
5650		var e = this.originalEvent;
5651
5652		this.isImmediatePropagationStopped = returnTrue;
5653
5654		if ( e && !this.isSimulated ) {
5655			e.stopImmediatePropagation();
5656		}
5657
5658		this.stopPropagation();
5659	}
5660};
5661
5662// Includes all common event props including KeyEvent and MouseEvent specific props
5663jQuery.each( {
5664	altKey: true,
5665	bubbles: true,
5666	cancelable: true,
5667	changedTouches: true,
5668	ctrlKey: true,
5669	detail: true,
5670	eventPhase: true,
5671	metaKey: true,
5672	pageX: true,
5673	pageY: true,
5674	shiftKey: true,
5675	view: true,
5676	"char": true,
5677	code: true,
5678	charCode: true,
5679	key: true,
5680	keyCode: true,
5681	button: true,
5682	buttons: true,
5683	clientX: true,
5684	clientY: true,
5685	offsetX: true,
5686	offsetY: true,
5687	pointerId: true,
5688	pointerType: true,
5689	screenX: true,
5690	screenY: true,
5691	targetTouches: true,
5692	toElement: true,
5693	touches: true,
5694	which: true
5695}, jQuery.event.addProp );
5696
5697jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
5698
5699	function focusMappedHandler( nativeEvent ) {
5700		if ( document.documentMode ) {
5701
5702			// Support: IE 11+
5703			// Attach a single focusin/focusout handler on the document while someone wants
5704			// focus/blur. This is because the former are synchronous in IE while the latter
5705			// are async. In other browsers, all those handlers are invoked synchronously.
5706
5707			// `handle` from private data would already wrap the event, but we need
5708			// to change the `type` here.
5709			var handle = dataPriv.get( this, "handle" ),
5710				event = jQuery.event.fix( nativeEvent );
5711			event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
5712			event.isSimulated = true;
5713
5714			// First, handle focusin/focusout
5715			handle( nativeEvent );
5716
5717			// ...then, handle focus/blur
5718			//
5719			// focus/blur don't bubble while focusin/focusout do; simulate the former by only
5720			// invoking the handler at the lower level.
5721			if ( event.target === event.currentTarget ) {
5722
5723				// The setup part calls `leverageNative`, which, in turn, calls
5724				// `jQuery.event.add`, so event handle will already have been set
5725				// by this point.
5726				handle( event );
5727			}
5728		} else {
5729
5730			// For non-IE browsers, attach a single capturing handler on the document
5731			// while someone wants focusin/focusout.
5732			jQuery.event.simulate( delegateType, nativeEvent.target,
5733				jQuery.event.fix( nativeEvent ) );
5734		}
5735	}
5736
5737	jQuery.event.special[ type ] = {
5738
5739		// Utilize native event if possible so blur/focus sequence is correct
5740		setup: function() {
5741
5742			var attaches;
5743
5744			// Claim the first handler
5745			// dataPriv.set( this, "focus", ... )
5746			// dataPriv.set( this, "blur", ... )
5747			leverageNative( this, type, true );
5748
5749			if ( document.documentMode ) {
5750
5751				// Support: IE 9 - 11+
5752				// We use the same native handler for focusin & focus (and focusout & blur)
5753				// so we need to coordinate setup & teardown parts between those events.
5754				// Use `delegateType` as the key as `type` is already used by `leverageNative`.
5755				attaches = dataPriv.get( this, delegateType );
5756				if ( !attaches ) {
5757					this.addEventListener( delegateType, focusMappedHandler );
5758				}
5759				dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
5760			} else {
5761
5762				// Return false to allow normal processing in the caller
5763				return false;
5764			}
5765		},
5766		trigger: function() {
5767
5768			// Force setup before trigger
5769			leverageNative( this, type );
5770
5771			// Return non-false to allow normal event-path propagation
5772			return true;
5773		},
5774
5775		teardown: function() {
5776			var attaches;
5777
5778			if ( document.documentMode ) {
5779				attaches = dataPriv.get( this, delegateType ) - 1;
5780				if ( !attaches ) {
5781					this.removeEventListener( delegateType, focusMappedHandler );
5782					dataPriv.remove( this, delegateType );
5783				} else {
5784					dataPriv.set( this, delegateType, attaches );
5785				}
5786			} else {
5787
5788				// Return false to indicate standard teardown should be applied
5789				return false;
5790			}
5791		},
5792
5793		// Suppress native focus or blur if we're currently inside
5794		// a leveraged native-event stack
5795		_default: function( event ) {
5796			return dataPriv.get( event.target, type );
5797		},
5798
5799		delegateType: delegateType
5800	};
5801
5802	// Support: Firefox <=44
5803	// Firefox doesn't have focus(in | out) events
5804	// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
5805	//
5806	// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
5807	// focus(in | out) events fire after focus & blur events,
5808	// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
5809	// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
5810	//
5811	// Support: IE 9 - 11+
5812	// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
5813	// attach a single handler for both events in IE.
5814	jQuery.event.special[ delegateType ] = {
5815		setup: function() {
5816
5817			// Handle: regular nodes (via `this.ownerDocument`), window
5818			// (via `this.document`) & document (via `this`).
5819			var doc = this.ownerDocument || this.document || this,
5820				dataHolder = document.documentMode ? this : doc,
5821				attaches = dataPriv.get( dataHolder, delegateType );
5822
5823			// Support: IE 9 - 11+
5824			// We use the same native handler for focusin & focus (and focusout & blur)
5825			// so we need to coordinate setup & teardown parts between those events.
5826			// Use `delegateType` as the key as `type` is already used by `leverageNative`.
5827			if ( !attaches ) {
5828				if ( document.documentMode ) {
5829					this.addEventListener( delegateType, focusMappedHandler );
5830				} else {
5831					doc.addEventListener( type, focusMappedHandler, true );
5832				}
5833			}
5834			dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
5835		},
5836		teardown: function() {
5837			var doc = this.ownerDocument || this.document || this,
5838				dataHolder = document.documentMode ? this : doc,
5839				attaches = dataPriv.get( dataHolder, delegateType ) - 1;
5840
5841			if ( !attaches ) {
5842				if ( document.documentMode ) {
5843					this.removeEventListener( delegateType, focusMappedHandler );
5844				} else {
5845					doc.removeEventListener( type, focusMappedHandler, true );
5846				}
5847				dataPriv.remove( dataHolder, delegateType );
5848			} else {
5849				dataPriv.set( dataHolder, delegateType, attaches );
5850			}
5851		}
5852	};
5853} );
5854
5855// Create mouseenter/leave events using mouseover/out and event-time checks
5856// so that event delegation works in jQuery.
5857// Do the same for pointerenter/pointerleave and pointerover/pointerout
5858//
5859// Support: Safari 7 only
5860// Safari sends mouseenter too often; see:
5861// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
5862// for the description of the bug (it existed in older Chrome versions as well).
5863jQuery.each( {
5864	mouseenter: "mouseover",
5865	mouseleave: "mouseout",
5866	pointerenter: "pointerover",
5867	pointerleave: "pointerout"
5868}, function( orig, fix ) {
5869	jQuery.event.special[ orig ] = {
5870		delegateType: fix,
5871		bindType: fix,
5872
5873		handle: function( event ) {
5874			var ret,
5875				target = this,
5876				related = event.relatedTarget,
5877				handleObj = event.handleObj;
5878
5879			// For mouseenter/leave call the handler if related is outside the target.
5880			// NB: No relatedTarget if the mouse left/entered the browser window
5881			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
5882				event.type = handleObj.origType;
5883				ret = handleObj.handler.apply( this, arguments );
5884				event.type = fix;
5885			}
5886			return ret;
5887		}
5888	};
5889} );
5890
5891jQuery.fn.extend( {
5892
5893	on: function( types, selector, data, fn ) {
5894		return on( this, types, selector, data, fn );
5895	},
5896	one: function( types, selector, data, fn ) {
5897		return on( this, types, selector, data, fn, 1 );
5898	},
5899	off: function( types, selector, fn ) {
5900		var handleObj, type;
5901		if ( types && types.preventDefault && types.handleObj ) {
5902
5903			// ( event )  dispatched jQuery.Event
5904			handleObj = types.handleObj;
5905			jQuery( types.delegateTarget ).off(
5906				handleObj.namespace ?
5907					handleObj.origType + "." + handleObj.namespace :
5908					handleObj.origType,
5909				handleObj.selector,
5910				handleObj.handler
5911			);
5912			return this;
5913		}
5914		if ( typeof types === "object" ) {
5915
5916			// ( types-object [, selector] )
5917			for ( type in types ) {
5918				this.off( type, selector, types[ type ] );
5919			}
5920			return this;
5921		}
5922		if ( selector === false || typeof selector === "function" ) {
5923
5924			// ( types [, fn] )
5925			fn = selector;
5926			selector = undefined;
5927		}
5928		if ( fn === false ) {
5929			fn = returnFalse;
5930		}
5931		return this.each( function() {
5932			jQuery.event.remove( this, types, fn, selector );
5933		} );
5934	}
5935} );
5936
5937
5938var
5939
5940	// Support: IE <=10 - 11, Edge 12 - 13 only
5941	// In IE/Edge using regex groups here causes severe slowdowns.
5942	// See https://connect.microsoft.com/IE/feedback/details/1736512/
5943	rnoInnerhtml = /<script|<style|<link/i,
5944
5945	// checked="checked" or checked
5946	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5947
5948	rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
5949
5950// Prefer a tbody over its parent table for containing new rows
5951function manipulationTarget( elem, content ) {
5952	if ( nodeName( elem, "table" ) &&
5953		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
5954
5955		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
5956	}
5957
5958	return elem;
5959}
5960
5961// Replace/restore the type attribute of script elements for safe DOM manipulation
5962function disableScript( elem ) {
5963	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
5964	return elem;
5965}
5966function restoreScript( elem ) {
5967	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
5968		elem.type = elem.type.slice( 5 );
5969	} else {
5970		elem.removeAttribute( "type" );
5971	}
5972
5973	return elem;
5974}
5975
5976function cloneCopyEvent( src, dest ) {
5977	var i, l, type, pdataOld, udataOld, udataCur, events;
5978
5979	if ( dest.nodeType !== 1 ) {
5980		return;
5981	}
5982
5983	// 1. Copy private data: events, handlers, etc.
5984	if ( dataPriv.hasData( src ) ) {
5985		pdataOld = dataPriv.get( src );
5986		events = pdataOld.events;
5987
5988		if ( events ) {
5989			dataPriv.remove( dest, "handle events" );
5990
5991			for ( type in events ) {
5992				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5993					jQuery.event.add( dest, type, events[ type ][ i ] );
5994				}
5995			}
5996		}
5997	}
5998
5999	// 2. Copy user data
6000	if ( dataUser.hasData( src ) ) {
6001		udataOld = dataUser.access( src );
6002		udataCur = jQuery.extend( {}, udataOld );
6003
6004		dataUser.set( dest, udataCur );
6005	}
6006}
6007
6008// Fix IE bugs, see support tests
6009function fixInput( src, dest ) {
6010	var nodeName = dest.nodeName.toLowerCase();
6011
6012	// Fails to persist the checked state of a cloned checkbox or radio button.
6013	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
6014		dest.checked = src.checked;
6015
6016	// Fails to return the selected option to the default selected state when cloning options
6017	} else if ( nodeName === "input" || nodeName === "textarea" ) {
6018		dest.defaultValue = src.defaultValue;
6019	}
6020}
6021
6022function domManip( collection, args, callback, ignored ) {
6023
6024	// Flatten any nested arrays
6025	args = flat( args );
6026
6027	var fragment, first, scripts, hasScripts, node, doc,
6028		i = 0,
6029		l = collection.length,
6030		iNoClone = l - 1,
6031		value = args[ 0 ],
6032		valueIsFunction = isFunction( value );
6033
6034	// We can't cloneNode fragments that contain checked, in WebKit
6035	if ( valueIsFunction ||
6036			( l > 1 && typeof value === "string" &&
6037				!support.checkClone && rchecked.test( value ) ) ) {
6038		return collection.each( function( index ) {
6039			var self = collection.eq( index );
6040			if ( valueIsFunction ) {
6041				args[ 0 ] = value.call( this, index, self.html() );
6042			}
6043			domManip( self, args, callback, ignored );
6044		} );
6045	}
6046
6047	if ( l ) {
6048		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
6049		first = fragment.firstChild;
6050
6051		if ( fragment.childNodes.length === 1 ) {
6052			fragment = first;
6053		}
6054
6055		// Require either new content or an interest in ignored elements to invoke the callback
6056		if ( first || ignored ) {
6057			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
6058			hasScripts = scripts.length;
6059
6060			// Use the original fragment for the last item
6061			// instead of the first because it can end up
6062			// being emptied incorrectly in certain situations (trac-8070).
6063			for ( ; i < l; i++ ) {
6064				node = fragment;
6065
6066				if ( i !== iNoClone ) {
6067					node = jQuery.clone( node, true, true );
6068
6069					// Keep references to cloned scripts for later restoration
6070					if ( hasScripts ) {
6071
6072						// Support: Android <=4.0 only, PhantomJS 1 only
6073						// push.apply(_, arraylike) throws on ancient WebKit
6074						jQuery.merge( scripts, getAll( node, "script" ) );
6075					}
6076				}
6077
6078				callback.call( collection[ i ], node, i );
6079			}
6080
6081			if ( hasScripts ) {
6082				doc = scripts[ scripts.length - 1 ].ownerDocument;
6083
6084				// Re-enable scripts
6085				jQuery.map( scripts, restoreScript );
6086
6087				// Evaluate executable scripts on first document insertion
6088				for ( i = 0; i < hasScripts; i++ ) {
6089					node = scripts[ i ];
6090					if ( rscriptType.test( node.type || "" ) &&
6091						!dataPriv.access( node, "globalEval" ) &&
6092						jQuery.contains( doc, node ) ) {
6093
6094						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
6095
6096							// Optional AJAX dependency, but won't run scripts if not present
6097							if ( jQuery._evalUrl && !node.noModule ) {
6098								jQuery._evalUrl( node.src, {
6099									nonce: node.nonce || node.getAttribute( "nonce" )
6100								}, doc );
6101							}
6102						} else {
6103
6104							// Unwrap a CDATA section containing script contents. This shouldn't be
6105							// needed as in XML documents they're already not visible when
6106							// inspecting element contents and in HTML documents they have no
6107							// meaning but we're preserving that logic for backwards compatibility.
6108							// This will be removed completely in 4.0. See gh-4904.
6109							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
6110						}
6111					}
6112				}
6113			}
6114		}
6115	}
6116
6117	return collection;
6118}
6119
6120function remove( elem, selector, keepData ) {
6121	var node,
6122		nodes = selector ? jQuery.filter( selector, elem ) : elem,
6123		i = 0;
6124
6125	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
6126		if ( !keepData && node.nodeType === 1 ) {
6127			jQuery.cleanData( getAll( node ) );
6128		}
6129
6130		if ( node.parentNode ) {
6131			if ( keepData && isAttached( node ) ) {
6132				setGlobalEval( getAll( node, "script" ) );
6133			}
6134			node.parentNode.removeChild( node );
6135		}
6136	}
6137
6138	return elem;
6139}
6140
6141jQuery.extend( {
6142	htmlPrefilter: function( html ) {
6143		return html;
6144	},
6145
6146	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
6147		var i, l, srcElements, destElements,
6148			clone = elem.cloneNode( true ),
6149			inPage = isAttached( elem );
6150
6151		// Fix IE cloning issues
6152		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
6153				!jQuery.isXMLDoc( elem ) ) {
6154
6155			// We eschew jQuery#find here for performance reasons:
6156			// https://jsperf.com/getall-vs-sizzle/2
6157			destElements = getAll( clone );
6158			srcElements = getAll( elem );
6159
6160			for ( i = 0, l = srcElements.length; i < l; i++ ) {
6161				fixInput( srcElements[ i ], destElements[ i ] );
6162			}
6163		}
6164
6165		// Copy the events from the original to the clone
6166		if ( dataAndEvents ) {
6167			if ( deepDataAndEvents ) {
6168				srcElements = srcElements || getAll( elem );
6169				destElements = destElements || getAll( clone );
6170
6171				for ( i = 0, l = srcElements.length; i < l; i++ ) {
6172					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
6173				}
6174			} else {
6175				cloneCopyEvent( elem, clone );
6176			}
6177		}
6178
6179		// Preserve script evaluation history
6180		destElements = getAll( clone, "script" );
6181		if ( destElements.length > 0 ) {
6182			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
6183		}
6184
6185		// Return the cloned set
6186		return clone;
6187	},
6188
6189	cleanData: function( elems ) {
6190		var data, elem, type,
6191			special = jQuery.event.special,
6192			i = 0;
6193
6194		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
6195			if ( acceptData( elem ) ) {
6196				if ( ( data = elem[ dataPriv.expando ] ) ) {
6197					if ( data.events ) {
6198						for ( type in data.events ) {
6199							if ( special[ type ] ) {
6200								jQuery.event.remove( elem, type );
6201
6202							// This is a shortcut to avoid jQuery.event.remove's overhead
6203							} else {
6204								jQuery.removeEvent( elem, type, data.handle );
6205							}
6206						}
6207					}
6208
6209					// Support: Chrome <=35 - 45+
6210					// Assign undefined instead of using delete, see Data#remove
6211					elem[ dataPriv.expando ] = undefined;
6212				}
6213				if ( elem[ dataUser.expando ] ) {
6214
6215					// Support: Chrome <=35 - 45+
6216					// Assign undefined instead of using delete, see Data#remove
6217					elem[ dataUser.expando ] = undefined;
6218				}
6219			}
6220		}
6221	}
6222} );
6223
6224jQuery.fn.extend( {
6225	detach: function( selector ) {
6226		return remove( this, selector, true );
6227	},
6228
6229	remove: function( selector ) {
6230		return remove( this, selector );
6231	},
6232
6233	text: function( value ) {
6234		return access( this, function( value ) {
6235			return value === undefined ?
6236				jQuery.text( this ) :
6237				this.empty().each( function() {
6238					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6239						this.textContent = value;
6240					}
6241				} );
6242		}, null, value, arguments.length );
6243	},
6244
6245	append: function() {
6246		return domManip( this, arguments, function( elem ) {
6247			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6248				var target = manipulationTarget( this, elem );
6249				target.appendChild( elem );
6250			}
6251		} );
6252	},
6253
6254	prepend: function() {
6255		return domManip( this, arguments, function( elem ) {
6256			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
6257				var target = manipulationTarget( this, elem );
6258				target.insertBefore( elem, target.firstChild );
6259			}
6260		} );
6261	},
6262
6263	before: function() {
6264		return domManip( this, arguments, function( elem ) {
6265			if ( this.parentNode ) {
6266				this.parentNode.insertBefore( elem, this );
6267			}
6268		} );
6269	},
6270
6271	after: function() {
6272		return domManip( this, arguments, function( elem ) {
6273			if ( this.parentNode ) {
6274				this.parentNode.insertBefore( elem, this.nextSibling );
6275			}
6276		} );
6277	},
6278
6279	empty: function() {
6280		var elem,
6281			i = 0;
6282
6283		for ( ; ( elem = this[ i ] ) != null; i++ ) {
6284			if ( elem.nodeType === 1 ) {
6285
6286				// Prevent memory leaks
6287				jQuery.cleanData( getAll( elem, false ) );
6288
6289				// Remove any remaining nodes
6290				elem.textContent = "";
6291			}
6292		}
6293
6294		return this;
6295	},
6296
6297	clone: function( dataAndEvents, deepDataAndEvents ) {
6298		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6299		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6300
6301		return this.map( function() {
6302			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
6303		} );
6304	},
6305
6306	html: function( value ) {
6307		return access( this, function( value ) {
6308			var elem = this[ 0 ] || {},
6309				i = 0,
6310				l = this.length;
6311
6312			if ( value === undefined && elem.nodeType === 1 ) {
6313				return elem.innerHTML;
6314			}
6315
6316			// See if we can take a shortcut and just use innerHTML
6317			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
6318				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
6319
6320				value = jQuery.htmlPrefilter( value );
6321
6322				try {
6323					for ( ; i < l; i++ ) {
6324						elem = this[ i ] || {};
6325
6326						// Remove element nodes and prevent memory leaks
6327						if ( elem.nodeType === 1 ) {
6328							jQuery.cleanData( getAll( elem, false ) );
6329							elem.innerHTML = value;
6330						}
6331					}
6332
6333					elem = 0;
6334
6335				// If using innerHTML throws an exception, use the fallback method
6336				} catch ( e ) {}
6337			}
6338
6339			if ( elem ) {
6340				this.empty().append( value );
6341			}
6342		}, null, value, arguments.length );
6343	},
6344
6345	replaceWith: function() {
6346		var ignored = [];
6347
6348		// Make the changes, replacing each non-ignored context element with the new content
6349		return domManip( this, arguments, function( elem ) {
6350			var parent = this.parentNode;
6351
6352			if ( jQuery.inArray( this, ignored ) < 0 ) {
6353				jQuery.cleanData( getAll( this ) );
6354				if ( parent ) {
6355					parent.replaceChild( elem, this );
6356				}
6357			}
6358
6359		// Force callback invocation
6360		}, ignored );
6361	}
6362} );
6363
6364jQuery.each( {
6365	appendTo: "append",
6366	prependTo: "prepend",
6367	insertBefore: "before",
6368	insertAfter: "after",
6369	replaceAll: "replaceWith"
6370}, function( name, original ) {
6371	jQuery.fn[ name ] = function( selector ) {
6372		var elems,
6373			ret = [],
6374			insert = jQuery( selector ),
6375			last = insert.length - 1,
6376			i = 0;
6377
6378		for ( ; i <= last; i++ ) {
6379			elems = i === last ? this : this.clone( true );
6380			jQuery( insert[ i ] )[ original ]( elems );
6381
6382			// Support: Android <=4.0 only, PhantomJS 1 only
6383			// .get() because push.apply(_, arraylike) throws on ancient WebKit
6384			push.apply( ret, elems.get() );
6385		}
6386
6387		return this.pushStack( ret );
6388	};
6389} );
6390var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6391
6392var rcustomProp = /^--/;
6393
6394
6395var getStyles = function( elem ) {
6396
6397		// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
6398		// IE throws on elements created in popups
6399		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6400		var view = elem.ownerDocument.defaultView;
6401
6402		if ( !view || !view.opener ) {
6403			view = window;
6404		}
6405
6406		return view.getComputedStyle( elem );
6407	};
6408
6409var swap = function( elem, options, callback ) {
6410	var ret, name,
6411		old = {};
6412
6413	// Remember the old values, and insert the new ones
6414	for ( name in options ) {
6415		old[ name ] = elem.style[ name ];
6416		elem.style[ name ] = options[ name ];
6417	}
6418
6419	ret = callback.call( elem );
6420
6421	// Revert the old values
6422	for ( name in options ) {
6423		elem.style[ name ] = old[ name ];
6424	}
6425
6426	return ret;
6427};
6428
6429
6430var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
6431
6432
6433
6434( function() {
6435
6436	// Executing both pixelPosition & boxSizingReliable tests require only one layout
6437	// so they're executed at the same time to save the second computation.
6438	function computeStyleTests() {
6439
6440		// This is a singleton, we need to execute it only once
6441		if ( !div ) {
6442			return;
6443		}
6444
6445		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
6446			"margin-top:1px;padding:0;border:0";
6447		div.style.cssText =
6448			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
6449			"margin:auto;border:1px;padding:1px;" +
6450			"width:60%;top:1%";
6451		documentElement.appendChild( container ).appendChild( div );
6452
6453		var divStyle = window.getComputedStyle( div );
6454		pixelPositionVal = divStyle.top !== "1%";
6455
6456		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6457		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
6458
6459		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6460		// Some styles come back with percentage values, even though they shouldn't
6461		div.style.right = "60%";
6462		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
6463
6464		// Support: IE 9 - 11 only
6465		// Detect misreporting of content dimensions for box-sizing:border-box elements
6466		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
6467
6468		// Support: IE 9 only
6469		// Detect overflow:scroll screwiness (gh-3699)
6470		// Support: Chrome <=64
6471		// Don't get tricked when zoom affects offsetWidth (gh-4029)
6472		div.style.position = "absolute";
6473		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
6474
6475		documentElement.removeChild( container );
6476
6477		// Nullify the div so it wouldn't be stored in the memory and
6478		// it will also be a sign that checks already performed
6479		div = null;
6480	}
6481
6482	function roundPixelMeasures( measure ) {
6483		return Math.round( parseFloat( measure ) );
6484	}
6485
6486	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
6487		reliableTrDimensionsVal, reliableMarginLeftVal,
6488		container = document.createElement( "div" ),
6489		div = document.createElement( "div" );
6490
6491	// Finish early in limited (non-browser) environments
6492	if ( !div.style ) {
6493		return;
6494	}
6495
6496	// Support: IE <=9 - 11 only
6497	// Style of cloned element affects source element cloned (trac-8908)
6498	div.style.backgroundClip = "content-box";
6499	div.cloneNode( true ).style.backgroundClip = "";
6500	support.clearCloneStyle = div.style.backgroundClip === "content-box";
6501
6502	jQuery.extend( support, {
6503		boxSizingReliable: function() {
6504			computeStyleTests();
6505			return boxSizingReliableVal;
6506		},
6507		pixelBoxStyles: function() {
6508			computeStyleTests();
6509			return pixelBoxStylesVal;
6510		},
6511		pixelPosition: function() {
6512			computeStyleTests();
6513			return pixelPositionVal;
6514		},
6515		reliableMarginLeft: function() {
6516			computeStyleTests();
6517			return reliableMarginLeftVal;
6518		},
6519		scrollboxSize: function() {
6520			computeStyleTests();
6521			return scrollboxSizeVal;
6522		},
6523
6524		// Support: IE 9 - 11+, Edge 15 - 18+
6525		// IE/Edge misreport `getComputedStyle` of table rows with width/height
6526		// set in CSS while `offset*` properties report correct values.
6527		// Behavior in IE 9 is more subtle than in newer versions & it passes
6528		// some versions of this test; make sure not to make it pass there!
6529		//
6530		// Support: Firefox 70+
6531		// Only Firefox includes border widths
6532		// in computed dimensions. (gh-4529)
6533		reliableTrDimensions: function() {
6534			var table, tr, trChild, trStyle;
6535			if ( reliableTrDimensionsVal == null ) {
6536				table = document.createElement( "table" );
6537				tr = document.createElement( "tr" );
6538				trChild = document.createElement( "div" );
6539
6540				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
6541				tr.style.cssText = "box-sizing:content-box;border:1px solid";
6542
6543				// Support: Chrome 86+
6544				// Height set through cssText does not get applied.
6545				// Computed height then comes back as 0.
6546				tr.style.height = "1px";
6547				trChild.style.height = "9px";
6548
6549				// Support: Android 8 Chrome 86+
6550				// In our bodyBackground.html iframe,
6551				// display for all div elements is set to "inline",
6552				// which causes a problem only in Android 8 Chrome 86.
6553				// Ensuring the div is `display: block`
6554				// gets around this issue.
6555				trChild.style.display = "block";
6556
6557				documentElement
6558					.appendChild( table )
6559					.appendChild( tr )
6560					.appendChild( trChild );
6561
6562				trStyle = window.getComputedStyle( tr );
6563				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
6564					parseInt( trStyle.borderTopWidth, 10 ) +
6565					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
6566
6567				documentElement.removeChild( table );
6568			}
6569			return reliableTrDimensionsVal;
6570		}
6571	} );
6572} )();
6573
6574
6575function curCSS( elem, name, computed ) {
6576	var width, minWidth, maxWidth, ret,
6577		isCustomProp = rcustomProp.test( name ),
6578
6579		// Support: Firefox 51+
6580		// Retrieving style before computed somehow
6581		// fixes an issue with getting wrong values
6582		// on detached elements
6583		style = elem.style;
6584
6585	computed = computed || getStyles( elem );
6586
6587	// getPropertyValue is needed for:
6588	//   .css('filter') (IE 9 only, trac-12537)
6589	//   .css('--customProperty) (gh-3144)
6590	if ( computed ) {
6591
6592		// Support: IE <=9 - 11+
6593		// IE only supports `"float"` in `getPropertyValue`; in computed styles
6594		// it's only available as `"cssFloat"`. We no longer modify properties
6595		// sent to `.css()` apart from camelCasing, so we need to check both.
6596		// Normally, this would create difference in behavior: if
6597		// `getPropertyValue` returns an empty string, the value returned
6598		// by `.css()` would be `undefined`. This is usually the case for
6599		// disconnected elements. However, in IE even disconnected elements
6600		// with no styles return `"none"` for `getPropertyValue( "float" )`
6601		ret = computed.getPropertyValue( name ) || computed[ name ];
6602
6603		if ( isCustomProp && ret ) {
6604
6605			// Support: Firefox 105+, Chrome <=105+
6606			// Spec requires trimming whitespace for custom properties (gh-4926).
6607			// Firefox only trims leading whitespace. Chrome just collapses
6608			// both leading & trailing whitespace to a single space.
6609			//
6610			// Fall back to `undefined` if empty string returned.
6611			// This collapses a missing definition with property defined
6612			// and set to an empty string but there's no standard API
6613			// allowing us to differentiate them without a performance penalty
6614			// and returning `undefined` aligns with older jQuery.
6615			//
6616			// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
6617			// as whitespace while CSS does not, but this is not a problem
6618			// because CSS preprocessing replaces them with U+000A LINE FEED
6619			// (which *is* CSS whitespace)
6620			// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
6621			ret = ret.replace( rtrimCSS, "$1" ) || undefined;
6622		}
6623
6624		if ( ret === "" && !isAttached( elem ) ) {
6625			ret = jQuery.style( elem, name );
6626		}
6627
6628		// A tribute to the "awesome hack by Dean Edwards"
6629		// Android Browser returns percentage for some values,
6630		// but width seems to be reliably pixels.
6631		// This is against the CSSOM draft spec:
6632		// https://drafts.csswg.org/cssom/#resolved-values
6633		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
6634
6635			// Remember the original values
6636			width = style.width;
6637			minWidth = style.minWidth;
6638			maxWidth = style.maxWidth;
6639
6640			// Put in the new values to get a computed value out
6641			style.minWidth = style.maxWidth = style.width = ret;
6642			ret = computed.width;
6643
6644			// Revert the changed values
6645			style.width = width;
6646			style.minWidth = minWidth;
6647			style.maxWidth = maxWidth;
6648		}
6649	}
6650
6651	return ret !== undefined ?
6652
6653		// Support: IE <=9 - 11 only
6654		// IE returns zIndex value as an integer.
6655		ret + "" :
6656		ret;
6657}
6658
6659
6660function addGetHookIf( conditionFn, hookFn ) {
6661
6662	// Define the hook, we'll check on the first run if it's really needed.
6663	return {
6664		get: function() {
6665			if ( conditionFn() ) {
6666
6667				// Hook not needed (or it's not possible to use it due
6668				// to missing dependency), remove it.
6669				delete this.get;
6670				return;
6671			}
6672
6673			// Hook needed; redefine it so that the support test is not executed again.
6674			return ( this.get = hookFn ).apply( this, arguments );
6675		}
6676	};
6677}
6678
6679
6680var cssPrefixes = [ "Webkit", "Moz", "ms" ],
6681	emptyStyle = document.createElement( "div" ).style,
6682	vendorProps = {};
6683
6684// Return a vendor-prefixed property or undefined
6685function vendorPropName( name ) {
6686
6687	// Check for vendor prefixed names
6688	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
6689		i = cssPrefixes.length;
6690
6691	while ( i-- ) {
6692		name = cssPrefixes[ i ] + capName;
6693		if ( name in emptyStyle ) {
6694			return name;
6695		}
6696	}
6697}
6698
6699// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6700function finalPropName( name ) {
6701	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
6702
6703	if ( final ) {
6704		return final;
6705	}
6706	if ( name in emptyStyle ) {
6707		return name;
6708	}
6709	return vendorProps[ name ] = vendorPropName( name ) || name;
6710}
6711
6712
6713var
6714
6715	// Swappable if display is none or starts with table
6716	// except "table", "table-cell", or "table-caption"
6717	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6718	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6719	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6720	cssNormalTransform = {
6721		letterSpacing: "0",
6722		fontWeight: "400"
6723	};
6724
6725function setPositiveNumber( _elem, value, subtract ) {
6726
6727	// Any relative (+/-) values have already been
6728	// normalized at this point
6729	var matches = rcssNum.exec( value );
6730	return matches ?
6731
6732		// Guard against undefined "subtract", e.g., when used as in cssHooks
6733		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
6734		value;
6735}
6736
6737function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
6738	var i = dimension === "width" ? 1 : 0,
6739		extra = 0,
6740		delta = 0,
6741		marginDelta = 0;
6742
6743	// Adjustment may not be necessary
6744	if ( box === ( isBorderBox ? "border" : "content" ) ) {
6745		return 0;
6746	}
6747
6748	for ( ; i < 4; i += 2 ) {
6749
6750		// Both box models exclude margin
6751		// Count margin delta separately to only add it after scroll gutter adjustment.
6752		// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
6753		if ( box === "margin" ) {
6754			marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
6755		}
6756
6757		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6758		if ( !isBorderBox ) {
6759
6760			// Add padding
6761			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6762
6763			// For "border" or "margin", add border
6764			if ( box !== "padding" ) {
6765				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6766
6767			// But still keep track of it otherwise
6768			} else {
6769				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6770			}
6771
6772		// If we get here with a border-box (content + padding + border), we're seeking "content" or
6773		// "padding" or "margin"
6774		} else {
6775
6776			// For "content", subtract padding
6777			if ( box === "content" ) {
6778				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6779			}
6780
6781			// For "content" or "padding", subtract border
6782			if ( box !== "margin" ) {
6783				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6784			}
6785		}
6786	}
6787
6788	// Account for positive content-box scroll gutter when requested by providing computedVal
6789	if ( !isBorderBox && computedVal >= 0 ) {
6790
6791		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6792		// Assuming integer scroll gutter, subtract the rest and round down
6793		delta += Math.max( 0, Math.ceil(
6794			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
6795			computedVal -
6796			delta -
6797			extra -
6798			0.5
6799
6800		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6801		// Use an explicit zero to avoid NaN (gh-3964)
6802		) ) || 0;
6803	}
6804
6805	return delta + marginDelta;
6806}
6807
6808function getWidthOrHeight( elem, dimension, extra ) {
6809
6810	// Start with computed style
6811	var styles = getStyles( elem ),
6812
6813		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6814		// Fake content-box until we know it's needed to know the true value.
6815		boxSizingNeeded = !support.boxSizingReliable() || extra,
6816		isBorderBox = boxSizingNeeded &&
6817			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6818		valueIsBorderBox = isBorderBox,
6819
6820		val = curCSS( elem, dimension, styles ),
6821		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
6822
6823	// Support: Firefox <=54
6824	// Return a confounding non-pixel value or feign ignorance, as appropriate.
6825	if ( rnumnonpx.test( val ) ) {
6826		if ( !extra ) {
6827			return val;
6828		}
6829		val = "auto";
6830	}
6831
6832
6833	// Support: IE 9 - 11 only
6834	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
6835	// In those cases, the computed value can be trusted to be border-box.
6836	if ( ( !support.boxSizingReliable() && isBorderBox ||
6837
6838		// Support: IE 10 - 11+, Edge 15 - 18+
6839		// IE/Edge misreport `getComputedStyle` of table rows with width/height
6840		// set in CSS while `offset*` properties report correct values.
6841		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
6842		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
6843
6844		// Fall back to offsetWidth/offsetHeight when value is "auto"
6845		// This happens for inline elements with no explicit setting (gh-3571)
6846		val === "auto" ||
6847
6848		// Support: Android <=4.1 - 4.3 only
6849		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6850		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
6851
6852		// Make sure the element is visible & connected
6853		elem.getClientRects().length ) {
6854
6855		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6856
6857		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
6858		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6859		// retrieved value as a content box dimension.
6860		valueIsBorderBox = offsetProp in elem;
6861		if ( valueIsBorderBox ) {
6862			val = elem[ offsetProp ];
6863		}
6864	}
6865
6866	// Normalize "" and auto
6867	val = parseFloat( val ) || 0;
6868
6869	// Adjust for the element's box model
6870	return ( val +
6871		boxModelAdjustment(
6872			elem,
6873			dimension,
6874			extra || ( isBorderBox ? "border" : "content" ),
6875			valueIsBorderBox,
6876			styles,
6877
6878			// Provide the current computed size to request scroll gutter calculation (gh-3589)
6879			val
6880		)
6881	) + "px";
6882}
6883
6884jQuery.extend( {
6885
6886	// Add in style property hooks for overriding the default
6887	// behavior of getting and setting a style property
6888	cssHooks: {
6889		opacity: {
6890			get: function( elem, computed ) {
6891				if ( computed ) {
6892
6893					// We should always get a number back from opacity
6894					var ret = curCSS( elem, "opacity" );
6895					return ret === "" ? "1" : ret;
6896				}
6897			}
6898		}
6899	},
6900
6901	// Don't automatically add "px" to these possibly-unitless properties
6902	cssNumber: {
6903		animationIterationCount: true,
6904		aspectRatio: true,
6905		borderImageSlice: true,
6906		columnCount: true,
6907		flexGrow: true,
6908		flexShrink: true,
6909		fontWeight: true,
6910		gridArea: true,
6911		gridColumn: true,
6912		gridColumnEnd: true,
6913		gridColumnStart: true,
6914		gridRow: true,
6915		gridRowEnd: true,
6916		gridRowStart: true,
6917		lineHeight: true,
6918		opacity: true,
6919		order: true,
6920		orphans: true,
6921		scale: true,
6922		widows: true,
6923		zIndex: true,
6924		zoom: true,
6925
6926		// SVG-related
6927		fillOpacity: true,
6928		floodOpacity: true,
6929		stopOpacity: true,
6930		strokeMiterlimit: true,
6931		strokeOpacity: true
6932	},
6933
6934	// Add in properties whose names you wish to fix before
6935	// setting or getting the value
6936	cssProps: {},
6937
6938	// Get and set the style property on a DOM Node
6939	style: function( elem, name, value, extra ) {
6940
6941		// Don't set styles on text and comment nodes
6942		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6943			return;
6944		}
6945
6946		// Make sure that we're working with the right name
6947		var ret, type, hooks,
6948			origName = camelCase( name ),
6949			isCustomProp = rcustomProp.test( name ),
6950			style = elem.style;
6951
6952		// Make sure that we're working with the right name. We don't
6953		// want to query the value if it is a CSS custom property
6954		// since they are user-defined.
6955		if ( !isCustomProp ) {
6956			name = finalPropName( origName );
6957		}
6958
6959		// Gets hook for the prefixed version, then unprefixed version
6960		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6961
6962		// Check if we're setting a value
6963		if ( value !== undefined ) {
6964			type = typeof value;
6965
6966			// Convert "+=" or "-=" to relative numbers (trac-7345)
6967			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
6968				value = adjustCSS( elem, name, ret );
6969
6970				// Fixes bug trac-9237
6971				type = "number";
6972			}
6973
6974			// Make sure that null and NaN values aren't set (trac-7116)
6975			if ( value == null || value !== value ) {
6976				return;
6977			}
6978
6979			// If a number was passed in, add the unit (except for certain CSS properties)
6980			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
6981			// "px" to a few hardcoded values.
6982			if ( type === "number" && !isCustomProp ) {
6983				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
6984			}
6985
6986			// background-* props affect original clone's values
6987			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
6988				style[ name ] = "inherit";
6989			}
6990
6991			// If a hook was provided, use that value, otherwise just set the specified value
6992			if ( !hooks || !( "set" in hooks ) ||
6993				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
6994
6995				if ( isCustomProp ) {
6996					style.setProperty( name, value );
6997				} else {
6998					style[ name ] = value;
6999				}
7000			}
7001
7002		} else {
7003
7004			// If a hook was provided get the non-computed value from there
7005			if ( hooks && "get" in hooks &&
7006				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
7007
7008				return ret;
7009			}
7010
7011			// Otherwise just get the value from the style object
7012			return style[ name ];
7013		}
7014	},
7015
7016	css: function( elem, name, extra, styles ) {
7017		var val, num, hooks,
7018			origName = camelCase( name ),
7019			isCustomProp = rcustomProp.test( name );
7020
7021		// Make sure that we're working with the right name. We don't
7022		// want to modify the value if it is a CSS custom property
7023		// since they are user-defined.
7024		if ( !isCustomProp ) {
7025			name = finalPropName( origName );
7026		}
7027
7028		// Try prefixed name followed by the unprefixed name
7029		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
7030
7031		// If a hook was provided get the computed value from there
7032		if ( hooks && "get" in hooks ) {
7033			val = hooks.get( elem, true, extra );
7034		}
7035
7036		// Otherwise, if a way to get the computed value exists, use that
7037		if ( val === undefined ) {
7038			val = curCSS( elem, name, styles );
7039		}
7040
7041		// Convert "normal" to computed value
7042		if ( val === "normal" && name in cssNormalTransform ) {
7043			val = cssNormalTransform[ name ];
7044		}
7045
7046		// Make numeric if forced or a qualifier was provided and val looks numeric
7047		if ( extra === "" || extra ) {
7048			num = parseFloat( val );
7049			return extra === true || isFinite( num ) ? num || 0 : val;
7050		}
7051
7052		return val;
7053	}
7054} );
7055
7056jQuery.each( [ "height", "width" ], function( _i, dimension ) {
7057	jQuery.cssHooks[ dimension ] = {
7058		get: function( elem, computed, extra ) {
7059			if ( computed ) {
7060
7061				// Certain elements can have dimension info if we invisibly show them
7062				// but it must have a current display style that would benefit
7063				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
7064
7065					// Support: Safari 8+
7066					// Table columns in Safari have non-zero offsetWidth & zero
7067					// getBoundingClientRect().width unless display is changed.
7068					// Support: IE <=11 only
7069					// Running getBoundingClientRect on a disconnected node
7070					// in IE throws an error.
7071					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
7072					swap( elem, cssShow, function() {
7073						return getWidthOrHeight( elem, dimension, extra );
7074					} ) :
7075					getWidthOrHeight( elem, dimension, extra );
7076			}
7077		},
7078
7079		set: function( elem, value, extra ) {
7080			var matches,
7081				styles = getStyles( elem ),
7082
7083				// Only read styles.position if the test has a chance to fail
7084				// to avoid forcing a reflow.
7085				scrollboxSizeBuggy = !support.scrollboxSize() &&
7086					styles.position === "absolute",
7087
7088				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
7089				boxSizingNeeded = scrollboxSizeBuggy || extra,
7090				isBorderBox = boxSizingNeeded &&
7091					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
7092				subtract = extra ?
7093					boxModelAdjustment(
7094						elem,
7095						dimension,
7096						extra,
7097						isBorderBox,
7098						styles
7099					) :
7100					0;
7101
7102			// Account for unreliable border-box dimensions by comparing offset* to computed and
7103			// faking a content-box to get border and padding (gh-3699)
7104			if ( isBorderBox && scrollboxSizeBuggy ) {
7105				subtract -= Math.ceil(
7106					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
7107					parseFloat( styles[ dimension ] ) -
7108					boxModelAdjustment( elem, dimension, "border", false, styles ) -
7109					0.5
7110				);
7111			}
7112
7113			// Convert to pixels if value adjustment is needed
7114			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
7115				( matches[ 3 ] || "px" ) !== "px" ) {
7116
7117				elem.style[ dimension ] = value;
7118				value = jQuery.css( elem, dimension );
7119			}
7120
7121			return setPositiveNumber( elem, value, subtract );
7122		}
7123	};
7124} );
7125
7126jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
7127	function( elem, computed ) {
7128		if ( computed ) {
7129			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
7130				elem.getBoundingClientRect().left -
7131					swap( elem, { marginLeft: 0 }, function() {
7132						return elem.getBoundingClientRect().left;
7133					} )
7134			) + "px";
7135		}
7136	}
7137);
7138
7139// These hooks are used by animate to expand properties
7140jQuery.each( {
7141	margin: "",
7142	padding: "",
7143	border: "Width"
7144}, function( prefix, suffix ) {
7145	jQuery.cssHooks[ prefix + suffix ] = {
7146		expand: function( value ) {
7147			var i = 0,
7148				expanded = {},
7149
7150				// Assumes a single number if not a string
7151				parts = typeof value === "string" ? value.split( " " ) : [ value ];
7152
7153			for ( ; i < 4; i++ ) {
7154				expanded[ prefix + cssExpand[ i ] + suffix ] =
7155					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
7156			}
7157
7158			return expanded;
7159		}
7160	};
7161
7162	if ( prefix !== "margin" ) {
7163		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
7164	}
7165} );
7166
7167jQuery.fn.extend( {
7168	css: function( name, value ) {
7169		return access( this, function( elem, name, value ) {
7170			var styles, len,
7171				map = {},
7172				i = 0;
7173
7174			if ( Array.isArray( name ) ) {
7175				styles = getStyles( elem );
7176				len = name.length;
7177
7178				for ( ; i < len; i++ ) {
7179					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
7180				}
7181
7182				return map;
7183			}
7184
7185			return value !== undefined ?
7186				jQuery.style( elem, name, value ) :
7187				jQuery.css( elem, name );
7188		}, name, value, arguments.length > 1 );
7189	}
7190} );
7191
7192
7193function Tween( elem, options, prop, end, easing ) {
7194	return new Tween.prototype.init( elem, options, prop, end, easing );
7195}
7196jQuery.Tween = Tween;
7197
7198Tween.prototype = {
7199	constructor: Tween,
7200	init: function( elem, options, prop, end, easing, unit ) {
7201		this.elem = elem;
7202		this.prop = prop;
7203		this.easing = easing || jQuery.easing._default;
7204		this.options = options;
7205		this.start = this.now = this.cur();
7206		this.end = end;
7207		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
7208	},
7209	cur: function() {
7210		var hooks = Tween.propHooks[ this.prop ];
7211
7212		return hooks && hooks.get ?
7213			hooks.get( this ) :
7214			Tween.propHooks._default.get( this );
7215	},
7216	run: function( percent ) {
7217		var eased,
7218			hooks = Tween.propHooks[ this.prop ];
7219
7220		if ( this.options.duration ) {
7221			this.pos = eased = jQuery.easing[ this.easing ](
7222				percent, this.options.duration * percent, 0, 1, this.options.duration
7223			);
7224		} else {
7225			this.pos = eased = percent;
7226		}
7227		this.now = ( this.end - this.start ) * eased + this.start;
7228
7229		if ( this.options.step ) {
7230			this.options.step.call( this.elem, this.now, this );
7231		}
7232
7233		if ( hooks && hooks.set ) {
7234			hooks.set( this );
7235		} else {
7236			Tween.propHooks._default.set( this );
7237		}
7238		return this;
7239	}
7240};
7241
7242Tween.prototype.init.prototype = Tween.prototype;
7243
7244Tween.propHooks = {
7245	_default: {
7246		get: function( tween ) {
7247			var result;
7248
7249			// Use a property on the element directly when it is not a DOM element,
7250			// or when there is no matching style property that exists.
7251			if ( tween.elem.nodeType !== 1 ||
7252				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
7253				return tween.elem[ tween.prop ];
7254			}
7255
7256			// Passing an empty string as a 3rd parameter to .css will automatically
7257			// attempt a parseFloat and fallback to a string if the parse fails.
7258			// Simple values such as "10px" are parsed to Float;
7259			// complex values such as "rotate(1rad)" are returned as-is.
7260			result = jQuery.css( tween.elem, tween.prop, "" );
7261
7262			// Empty strings, null, undefined and "auto" are converted to 0.
7263			return !result || result === "auto" ? 0 : result;
7264		},
7265		set: function( tween ) {
7266
7267			// Use step hook for back compat.
7268			// Use cssHook if its there.
7269			// Use .style if available and use plain properties where available.
7270			if ( jQuery.fx.step[ tween.prop ] ) {
7271				jQuery.fx.step[ tween.prop ]( tween );
7272			} else if ( tween.elem.nodeType === 1 && (
7273				jQuery.cssHooks[ tween.prop ] ||
7274					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
7275				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
7276			} else {
7277				tween.elem[ tween.prop ] = tween.now;
7278			}
7279		}
7280	}
7281};
7282
7283// Support: IE <=9 only
7284// Panic based approach to setting things on disconnected nodes
7285Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
7286	set: function( tween ) {
7287		if ( tween.elem.nodeType && tween.elem.parentNode ) {
7288			tween.elem[ tween.prop ] = tween.now;
7289		}
7290	}
7291};
7292
7293jQuery.easing = {
7294	linear: function( p ) {
7295		return p;
7296	},
7297	swing: function( p ) {
7298		return 0.5 - Math.cos( p * Math.PI ) / 2;
7299	},
7300	_default: "swing"
7301};
7302
7303jQuery.fx = Tween.prototype.init;
7304
7305// Back compat <1.8 extension point
7306jQuery.fx.step = {};
7307
7308
7309
7310
7311var
7312	fxNow, inProgress,
7313	rfxtypes = /^(?:toggle|show|hide)$/,
7314	rrun = /queueHooks$/;
7315
7316function schedule() {
7317	if ( inProgress ) {
7318		if ( document.hidden === false && window.requestAnimationFrame ) {
7319			window.requestAnimationFrame( schedule );
7320		} else {
7321			window.setTimeout( schedule, jQuery.fx.interval );
7322		}
7323
7324		jQuery.fx.tick();
7325	}
7326}
7327
7328// Animations created synchronously will run synchronously
7329function createFxNow() {
7330	window.setTimeout( function() {
7331		fxNow = undefined;
7332	} );
7333	return ( fxNow = Date.now() );
7334}
7335
7336// Generate parameters to create a standard animation
7337function genFx( type, includeWidth ) {
7338	var which,
7339		i = 0,
7340		attrs = { height: type };
7341
7342	// If we include width, step value is 1 to do all cssExpand values,
7343	// otherwise step value is 2 to skip over Left and Right
7344	includeWidth = includeWidth ? 1 : 0;
7345	for ( ; i < 4; i += 2 - includeWidth ) {
7346		which = cssExpand[ i ];
7347		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
7348	}
7349
7350	if ( includeWidth ) {
7351		attrs.opacity = attrs.width = type;
7352	}
7353
7354	return attrs;
7355}
7356
7357function createTween( value, prop, animation ) {
7358	var tween,
7359		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
7360		index = 0,
7361		length = collection.length;
7362	for ( ; index < length; index++ ) {
7363		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
7364
7365			// We're done with this property
7366			return tween;
7367		}
7368	}
7369}
7370
7371function defaultPrefilter( elem, props, opts ) {
7372	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
7373		isBox = "width" in props || "height" in props,
7374		anim = this,
7375		orig = {},
7376		style = elem.style,
7377		hidden = elem.nodeType && isHiddenWithinTree( elem ),
7378		dataShow = dataPriv.get( elem, "fxshow" );
7379
7380	// Queue-skipping animations hijack the fx hooks
7381	if ( !opts.queue ) {
7382		hooks = jQuery._queueHooks( elem, "fx" );
7383		if ( hooks.unqueued == null ) {
7384			hooks.unqueued = 0;
7385			oldfire = hooks.empty.fire;
7386			hooks.empty.fire = function() {
7387				if ( !hooks.unqueued ) {
7388					oldfire();
7389				}
7390			};
7391		}
7392		hooks.unqueued++;
7393
7394		anim.always( function() {
7395
7396			// Ensure the complete handler is called before this completes
7397			anim.always( function() {
7398				hooks.unqueued--;
7399				if ( !jQuery.queue( elem, "fx" ).length ) {
7400					hooks.empty.fire();
7401				}
7402			} );
7403		} );
7404	}
7405
7406	// Detect show/hide animations
7407	for ( prop in props ) {
7408		value = props[ prop ];
7409		if ( rfxtypes.test( value ) ) {
7410			delete props[ prop ];
7411			toggle = toggle || value === "toggle";
7412			if ( value === ( hidden ? "hide" : "show" ) ) {
7413
7414				// Pretend to be hidden if this is a "show" and
7415				// there is still data from a stopped show/hide
7416				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
7417					hidden = true;
7418
7419				// Ignore all other no-op show/hide data
7420				} else {
7421					continue;
7422				}
7423			}
7424			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
7425		}
7426	}
7427
7428	// Bail out if this is a no-op like .hide().hide()
7429	propTween = !jQuery.isEmptyObject( props );
7430	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
7431		return;
7432	}
7433
7434	// Restrict "overflow" and "display" styles during box animations
7435	if ( isBox && elem.nodeType === 1 ) {
7436
7437		// Support: IE <=9 - 11, Edge 12 - 15
7438		// Record all 3 overflow attributes because IE does not infer the shorthand
7439		// from identically-valued overflowX and overflowY and Edge just mirrors
7440		// the overflowX value there.
7441		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
7442
7443		// Identify a display type, preferring old show/hide data over the CSS cascade
7444		restoreDisplay = dataShow && dataShow.display;
7445		if ( restoreDisplay == null ) {
7446			restoreDisplay = dataPriv.get( elem, "display" );
7447		}
7448		display = jQuery.css( elem, "display" );
7449		if ( display === "none" ) {
7450			if ( restoreDisplay ) {
7451				display = restoreDisplay;
7452			} else {
7453
7454				// Get nonempty value(s) by temporarily forcing visibility
7455				showHide( [ elem ], true );
7456				restoreDisplay = elem.style.display || restoreDisplay;
7457				display = jQuery.css( elem, "display" );
7458				showHide( [ elem ] );
7459			}
7460		}
7461
7462		// Animate inline elements as inline-block
7463		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
7464			if ( jQuery.css( elem, "float" ) === "none" ) {
7465
7466				// Restore the original display value at the end of pure show/hide animations
7467				if ( !propTween ) {
7468					anim.done( function() {
7469						style.display = restoreDisplay;
7470					} );
7471					if ( restoreDisplay == null ) {
7472						display = style.display;
7473						restoreDisplay = display === "none" ? "" : display;
7474					}
7475				}
7476				style.display = "inline-block";
7477			}
7478		}
7479	}
7480
7481	if ( opts.overflow ) {
7482		style.overflow = "hidden";
7483		anim.always( function() {
7484			style.overflow = opts.overflow[ 0 ];
7485			style.overflowX = opts.overflow[ 1 ];
7486			style.overflowY = opts.overflow[ 2 ];
7487		} );
7488	}
7489
7490	// Implement show/hide animations
7491	propTween = false;
7492	for ( prop in orig ) {
7493
7494		// General show/hide setup for this element animation
7495		if ( !propTween ) {
7496			if ( dataShow ) {
7497				if ( "hidden" in dataShow ) {
7498					hidden = dataShow.hidden;
7499				}
7500			} else {
7501				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
7502			}
7503
7504			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
7505			if ( toggle ) {
7506				dataShow.hidden = !hidden;
7507			}
7508
7509			// Show elements before animating them
7510			if ( hidden ) {
7511				showHide( [ elem ], true );
7512			}
7513
7514			/* eslint-disable no-loop-func */
7515
7516			anim.done( function() {
7517
7518				/* eslint-enable no-loop-func */
7519
7520				// The final step of a "hide" animation is actually hiding the element
7521				if ( !hidden ) {
7522					showHide( [ elem ] );
7523				}
7524				dataPriv.remove( elem, "fxshow" );
7525				for ( prop in orig ) {
7526					jQuery.style( elem, prop, orig[ prop ] );
7527				}
7528			} );
7529		}
7530
7531		// Per-property setup
7532		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
7533		if ( !( prop in dataShow ) ) {
7534			dataShow[ prop ] = propTween.start;
7535			if ( hidden ) {
7536				propTween.end = propTween.start;
7537				propTween.start = 0;
7538			}
7539		}
7540	}
7541}
7542
7543function propFilter( props, specialEasing ) {
7544	var index, name, easing, value, hooks;
7545
7546	// camelCase, specialEasing and expand cssHook pass
7547	for ( index in props ) {
7548		name = camelCase( index );
7549		easing = specialEasing[ name ];
7550		value = props[ index ];
7551		if ( Array.isArray( value ) ) {
7552			easing = value[ 1 ];
7553			value = props[ index ] = value[ 0 ];
7554		}
7555
7556		if ( index !== name ) {
7557			props[ name ] = value;
7558			delete props[ index ];
7559		}
7560
7561		hooks = jQuery.cssHooks[ name ];
7562		if ( hooks && "expand" in hooks ) {
7563			value = hooks.expand( value );
7564			delete props[ name ];
7565
7566			// Not quite $.extend, this won't overwrite existing keys.
7567			// Reusing 'index' because we have the correct "name"
7568			for ( index in value ) {
7569				if ( !( index in props ) ) {
7570					props[ index ] = value[ index ];
7571					specialEasing[ index ] = easing;
7572				}
7573			}
7574		} else {
7575			specialEasing[ name ] = easing;
7576		}
7577	}
7578}
7579
7580function Animation( elem, properties, options ) {
7581	var result,
7582		stopped,
7583		index = 0,
7584		length = Animation.prefilters.length,
7585		deferred = jQuery.Deferred().always( function() {
7586
7587			// Don't match elem in the :animated selector
7588			delete tick.elem;
7589		} ),
7590		tick = function() {
7591			if ( stopped ) {
7592				return false;
7593			}
7594			var currentTime = fxNow || createFxNow(),
7595				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7596
7597				// Support: Android 2.3 only
7598				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
7599				temp = remaining / animation.duration || 0,
7600				percent = 1 - temp,
7601				index = 0,
7602				length = animation.tweens.length;
7603
7604			for ( ; index < length; index++ ) {
7605				animation.tweens[ index ].run( percent );
7606			}
7607
7608			deferred.notifyWith( elem, [ animation, percent, remaining ] );
7609
7610			// If there's more to do, yield
7611			if ( percent < 1 && length ) {
7612				return remaining;
7613			}
7614
7615			// If this was an empty animation, synthesize a final progress notification
7616			if ( !length ) {
7617				deferred.notifyWith( elem, [ animation, 1, 0 ] );
7618			}
7619
7620			// Resolve the animation and report its conclusion
7621			deferred.resolveWith( elem, [ animation ] );
7622			return false;
7623		},
7624		animation = deferred.promise( {
7625			elem: elem,
7626			props: jQuery.extend( {}, properties ),
7627			opts: jQuery.extend( true, {
7628				specialEasing: {},
7629				easing: jQuery.easing._default
7630			}, options ),
7631			originalProperties: properties,
7632			originalOptions: options,
7633			startTime: fxNow || createFxNow(),
7634			duration: options.duration,
7635			tweens: [],
7636			createTween: function( prop, end ) {
7637				var tween = jQuery.Tween( elem, animation.opts, prop, end,
7638					animation.opts.specialEasing[ prop ] || animation.opts.easing );
7639				animation.tweens.push( tween );
7640				return tween;
7641			},
7642			stop: function( gotoEnd ) {
7643				var index = 0,
7644
7645					// If we are going to the end, we want to run all the tweens
7646					// otherwise we skip this part
7647					length = gotoEnd ? animation.tweens.length : 0;
7648				if ( stopped ) {
7649					return this;
7650				}
7651				stopped = true;
7652				for ( ; index < length; index++ ) {
7653					animation.tweens[ index ].run( 1 );
7654				}
7655
7656				// Resolve when we played the last frame; otherwise, reject
7657				if ( gotoEnd ) {
7658					deferred.notifyWith( elem, [ animation, 1, 0 ] );
7659					deferred.resolveWith( elem, [ animation, gotoEnd ] );
7660				} else {
7661					deferred.rejectWith( elem, [ animation, gotoEnd ] );
7662				}
7663				return this;
7664			}
7665		} ),
7666		props = animation.props;
7667
7668	propFilter( props, animation.opts.specialEasing );
7669
7670	for ( ; index < length; index++ ) {
7671		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
7672		if ( result ) {
7673			if ( isFunction( result.stop ) ) {
7674				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
7675					result.stop.bind( result );
7676			}
7677			return result;
7678		}
7679	}
7680
7681	jQuery.map( props, createTween, animation );
7682
7683	if ( isFunction( animation.opts.start ) ) {
7684		animation.opts.start.call( elem, animation );
7685	}
7686
7687	// Attach callbacks from options
7688	animation
7689		.progress( animation.opts.progress )
7690		.done( animation.opts.done, animation.opts.complete )
7691		.fail( animation.opts.fail )
7692		.always( animation.opts.always );
7693
7694	jQuery.fx.timer(
7695		jQuery.extend( tick, {
7696			elem: elem,
7697			anim: animation,
7698			queue: animation.opts.queue
7699		} )
7700	);
7701
7702	return animation;
7703}
7704
7705jQuery.Animation = jQuery.extend( Animation, {
7706
7707	tweeners: {
7708		"*": [ function( prop, value ) {
7709			var tween = this.createTween( prop, value );
7710			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
7711			return tween;
7712		} ]
7713	},
7714
7715	tweener: function( props, callback ) {
7716		if ( isFunction( props ) ) {
7717			callback = props;
7718			props = [ "*" ];
7719		} else {
7720			props = props.match( rnothtmlwhite );
7721		}
7722
7723		var prop,
7724			index = 0,
7725			length = props.length;
7726
7727		for ( ; index < length; index++ ) {
7728			prop = props[ index ];
7729			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
7730			Animation.tweeners[ prop ].unshift( callback );
7731		}
7732	},
7733
7734	prefilters: [ defaultPrefilter ],
7735
7736	prefilter: function( callback, prepend ) {
7737		if ( prepend ) {
7738			Animation.prefilters.unshift( callback );
7739		} else {
7740			Animation.prefilters.push( callback );
7741		}
7742	}
7743} );
7744
7745jQuery.speed = function( speed, easing, fn ) {
7746	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7747		complete: fn || !fn && easing ||
7748			isFunction( speed ) && speed,
7749		duration: speed,
7750		easing: fn && easing || easing && !isFunction( easing ) && easing
7751	};
7752
7753	// Go to the end state if fx are off
7754	if ( jQuery.fx.off ) {
7755		opt.duration = 0;
7756
7757	} else {
7758		if ( typeof opt.duration !== "number" ) {
7759			if ( opt.duration in jQuery.fx.speeds ) {
7760				opt.duration = jQuery.fx.speeds[ opt.duration ];
7761
7762			} else {
7763				opt.duration = jQuery.fx.speeds._default;
7764			}
7765		}
7766	}
7767
7768	// Normalize opt.queue - true/undefined/null -> "fx"
7769	if ( opt.queue == null || opt.queue === true ) {
7770		opt.queue = "fx";
7771	}
7772
7773	// Queueing
7774	opt.old = opt.complete;
7775
7776	opt.complete = function() {
7777		if ( isFunction( opt.old ) ) {
7778			opt.old.call( this );
7779		}
7780
7781		if ( opt.queue ) {
7782			jQuery.dequeue( this, opt.queue );
7783		}
7784	};
7785
7786	return opt;
7787};
7788
7789jQuery.fn.extend( {
7790	fadeTo: function( speed, to, easing, callback ) {
7791
7792		// Show any hidden elements after setting opacity to 0
7793		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
7794
7795			// Animate to the value specified
7796			.end().animate( { opacity: to }, speed, easing, callback );
7797	},
7798	animate: function( prop, speed, easing, callback ) {
7799		var empty = jQuery.isEmptyObject( prop ),
7800			optall = jQuery.speed( speed, easing, callback ),
7801			doAnimation = function() {
7802
7803				// Operate on a copy of prop so per-property easing won't be lost
7804				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7805
7806				// Empty animations, or finishing resolves immediately
7807				if ( empty || dataPriv.get( this, "finish" ) ) {
7808					anim.stop( true );
7809				}
7810			};
7811
7812		doAnimation.finish = doAnimation;
7813
7814		return empty || optall.queue === false ?
7815			this.each( doAnimation ) :
7816			this.queue( optall.queue, doAnimation );
7817	},
7818	stop: function( type, clearQueue, gotoEnd ) {
7819		var stopQueue = function( hooks ) {
7820			var stop = hooks.stop;
7821			delete hooks.stop;
7822			stop( gotoEnd );
7823		};
7824
7825		if ( typeof type !== "string" ) {
7826			gotoEnd = clearQueue;
7827			clearQueue = type;
7828			type = undefined;
7829		}
7830		if ( clearQueue ) {
7831			this.queue( type || "fx", [] );
7832		}
7833
7834		return this.each( function() {
7835			var dequeue = true,
7836				index = type != null && type + "queueHooks",
7837				timers = jQuery.timers,
7838				data = dataPriv.get( this );
7839
7840			if ( index ) {
7841				if ( data[ index ] && data[ index ].stop ) {
7842					stopQueue( data[ index ] );
7843				}
7844			} else {
7845				for ( index in data ) {
7846					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7847						stopQueue( data[ index ] );
7848					}
7849				}
7850			}
7851
7852			for ( index = timers.length; index--; ) {
7853				if ( timers[ index ].elem === this &&
7854					( type == null || timers[ index ].queue === type ) ) {
7855
7856					timers[ index ].anim.stop( gotoEnd );
7857					dequeue = false;
7858					timers.splice( index, 1 );
7859				}
7860			}
7861
7862			// Start the next in the queue if the last step wasn't forced.
7863			// Timers currently will call their complete callbacks, which
7864			// will dequeue but only if they were gotoEnd.
7865			if ( dequeue || !gotoEnd ) {
7866				jQuery.dequeue( this, type );
7867			}
7868		} );
7869	},
7870	finish: function( type ) {
7871		if ( type !== false ) {
7872			type = type || "fx";
7873		}
7874		return this.each( function() {
7875			var index,
7876				data = dataPriv.get( this ),
7877				queue = data[ type + "queue" ],
7878				hooks = data[ type + "queueHooks" ],
7879				timers = jQuery.timers,
7880				length = queue ? queue.length : 0;
7881
7882			// Enable finishing flag on private data
7883			data.finish = true;
7884
7885			// Empty the queue first
7886			jQuery.queue( this, type, [] );
7887
7888			if ( hooks && hooks.stop ) {
7889				hooks.stop.call( this, true );
7890			}
7891
7892			// Look for any active animations, and finish them
7893			for ( index = timers.length; index--; ) {
7894				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7895					timers[ index ].anim.stop( true );
7896					timers.splice( index, 1 );
7897				}
7898			}
7899
7900			// Look for any animations in the old queue and finish them
7901			for ( index = 0; index < length; index++ ) {
7902				if ( queue[ index ] && queue[ index ].finish ) {
7903					queue[ index ].finish.call( this );
7904				}
7905			}
7906
7907			// Turn off finishing flag
7908			delete data.finish;
7909		} );
7910	}
7911} );
7912
7913jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
7914	var cssFn = jQuery.fn[ name ];
7915	jQuery.fn[ name ] = function( speed, easing, callback ) {
7916		return speed == null || typeof speed === "boolean" ?
7917			cssFn.apply( this, arguments ) :
7918			this.animate( genFx( name, true ), speed, easing, callback );
7919	};
7920} );
7921
7922// Generate shortcuts for custom animations
7923jQuery.each( {
7924	slideDown: genFx( "show" ),
7925	slideUp: genFx( "hide" ),
7926	slideToggle: genFx( "toggle" ),
7927	fadeIn: { opacity: "show" },
7928	fadeOut: { opacity: "hide" },
7929	fadeToggle: { opacity: "toggle" }
7930}, function( name, props ) {
7931	jQuery.fn[ name ] = function( speed, easing, callback ) {
7932		return this.animate( props, speed, easing, callback );
7933	};
7934} );
7935
7936jQuery.timers = [];
7937jQuery.fx.tick = function() {
7938	var timer,
7939		i = 0,
7940		timers = jQuery.timers;
7941
7942	fxNow = Date.now();
7943
7944	for ( ; i < timers.length; i++ ) {
7945		timer = timers[ i ];
7946
7947		// Run the timer and safely remove it when done (allowing for external removal)
7948		if ( !timer() && timers[ i ] === timer ) {
7949			timers.splice( i--, 1 );
7950		}
7951	}
7952
7953	if ( !timers.length ) {
7954		jQuery.fx.stop();
7955	}
7956	fxNow = undefined;
7957};
7958
7959jQuery.fx.timer = function( timer ) {
7960	jQuery.timers.push( timer );
7961	jQuery.fx.start();
7962};
7963
7964jQuery.fx.interval = 13;
7965jQuery.fx.start = function() {
7966	if ( inProgress ) {
7967		return;
7968	}
7969
7970	inProgress = true;
7971	schedule();
7972};
7973
7974jQuery.fx.stop = function() {
7975	inProgress = null;
7976};
7977
7978jQuery.fx.speeds = {
7979	slow: 600,
7980	fast: 200,
7981
7982	// Default speed
7983	_default: 400
7984};
7985
7986
7987// Based off of the plugin by Clint Helfers, with permission.
7988jQuery.fn.delay = function( time, type ) {
7989	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7990	type = type || "fx";
7991
7992	return this.queue( type, function( next, hooks ) {
7993		var timeout = window.setTimeout( next, time );
7994		hooks.stop = function() {
7995			window.clearTimeout( timeout );
7996		};
7997	} );
7998};
7999
8000
8001( function() {
8002	var input = document.createElement( "input" ),
8003		select = document.createElement( "select" ),
8004		opt = select.appendChild( document.createElement( "option" ) );
8005
8006	input.type = "checkbox";
8007
8008	// Support: Android <=4.3 only
8009	// Default value for a checkbox should be "on"
8010	support.checkOn = input.value !== "";
8011
8012	// Support: IE <=11 only
8013	// Must access selectedIndex to make default options select
8014	support.optSelected = opt.selected;
8015
8016	// Support: IE <=11 only
8017	// An input loses its value after becoming a radio
8018	input = document.createElement( "input" );
8019	input.value = "t";
8020	input.type = "radio";
8021	support.radioValue = input.value === "t";
8022} )();
8023
8024
8025var boolHook,
8026	attrHandle = jQuery.expr.attrHandle;
8027
8028jQuery.fn.extend( {
8029	attr: function( name, value ) {
8030		return access( this, jQuery.attr, name, value, arguments.length > 1 );
8031	},
8032
8033	removeAttr: function( name ) {
8034		return this.each( function() {
8035			jQuery.removeAttr( this, name );
8036		} );
8037	}
8038} );
8039
8040jQuery.extend( {
8041	attr: function( elem, name, value ) {
8042		var ret, hooks,
8043			nType = elem.nodeType;
8044
8045		// Don't get/set attributes on text, comment and attribute nodes
8046		if ( nType === 3 || nType === 8 || nType === 2 ) {
8047			return;
8048		}
8049
8050		// Fallback to prop when attributes are not supported
8051		if ( typeof elem.getAttribute === "undefined" ) {
8052			return jQuery.prop( elem, name, value );
8053		}
8054
8055		// Attribute hooks are determined by the lowercase version
8056		// Grab necessary hook if one is defined
8057		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
8058			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
8059				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
8060		}
8061
8062		if ( value !== undefined ) {
8063			if ( value === null ) {
8064				jQuery.removeAttr( elem, name );
8065				return;
8066			}
8067
8068			if ( hooks && "set" in hooks &&
8069				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
8070				return ret;
8071			}
8072
8073			elem.setAttribute( name, value + "" );
8074			return value;
8075		}
8076
8077		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
8078			return ret;
8079		}
8080
8081		ret = jQuery.find.attr( elem, name );
8082
8083		// Non-existent attributes return null, we normalize to undefined
8084		return ret == null ? undefined : ret;
8085	},
8086
8087	attrHooks: {
8088		type: {
8089			set: function( elem, value ) {
8090				if ( !support.radioValue && value === "radio" &&
8091					nodeName( elem, "input" ) ) {
8092					var val = elem.value;
8093					elem.setAttribute( "type", value );
8094					if ( val ) {
8095						elem.value = val;
8096					}
8097					return value;
8098				}
8099			}
8100		}
8101	},
8102
8103	removeAttr: function( elem, value ) {
8104		var name,
8105			i = 0,
8106
8107			// Attribute names can contain non-HTML whitespace characters
8108			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
8109			attrNames = value && value.match( rnothtmlwhite );
8110
8111		if ( attrNames && elem.nodeType === 1 ) {
8112			while ( ( name = attrNames[ i++ ] ) ) {
8113				elem.removeAttribute( name );
8114			}
8115		}
8116	}
8117} );
8118
8119// Hooks for boolean attributes
8120boolHook = {
8121	set: function( elem, value, name ) {
8122		if ( value === false ) {
8123
8124			// Remove boolean attributes when set to false
8125			jQuery.removeAttr( elem, name );
8126		} else {
8127			elem.setAttribute( name, name );
8128		}
8129		return name;
8130	}
8131};
8132
8133jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
8134	var getter = attrHandle[ name ] || jQuery.find.attr;
8135
8136	attrHandle[ name ] = function( elem, name, isXML ) {
8137		var ret, handle,
8138			lowercaseName = name.toLowerCase();
8139
8140		if ( !isXML ) {
8141
8142			// Avoid an infinite loop by temporarily removing this function from the getter
8143			handle = attrHandle[ lowercaseName ];
8144			attrHandle[ lowercaseName ] = ret;
8145			ret = getter( elem, name, isXML ) != null ?
8146				lowercaseName :
8147				null;
8148			attrHandle[ lowercaseName ] = handle;
8149		}
8150		return ret;
8151	};
8152} );
8153
8154
8155
8156
8157var rfocusable = /^(?:input|select|textarea|button)$/i,
8158	rclickable = /^(?:a|area)$/i;
8159
8160jQuery.fn.extend( {
8161	prop: function( name, value ) {
8162		return access( this, jQuery.prop, name, value, arguments.length > 1 );
8163	},
8164
8165	removeProp: function( name ) {
8166		return this.each( function() {
8167			delete this[ jQuery.propFix[ name ] || name ];
8168		} );
8169	}
8170} );
8171
8172jQuery.extend( {
8173	prop: function( elem, name, value ) {
8174		var ret, hooks,
8175			nType = elem.nodeType;
8176
8177		// Don't get/set properties on text, comment and attribute nodes
8178		if ( nType === 3 || nType === 8 || nType === 2 ) {
8179			return;
8180		}
8181
8182		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
8183
8184			// Fix name and attach hooks
8185			name = jQuery.propFix[ name ] || name;
8186			hooks = jQuery.propHooks[ name ];
8187		}
8188
8189		if ( value !== undefined ) {
8190			if ( hooks && "set" in hooks &&
8191				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
8192				return ret;
8193			}
8194
8195			return ( elem[ name ] = value );
8196		}
8197
8198		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
8199			return ret;
8200		}
8201
8202		return elem[ name ];
8203	},
8204
8205	propHooks: {
8206		tabIndex: {
8207			get: function( elem ) {
8208
8209				// Support: IE <=9 - 11 only
8210				// elem.tabIndex doesn't always return the
8211				// correct value when it hasn't been explicitly set
8212				// Use proper attribute retrieval (trac-12072)
8213				var tabindex = jQuery.find.attr( elem, "tabindex" );
8214
8215				if ( tabindex ) {
8216					return parseInt( tabindex, 10 );
8217				}
8218
8219				if (
8220					rfocusable.test( elem.nodeName ) ||
8221					rclickable.test( elem.nodeName ) &&
8222					elem.href
8223				) {
8224					return 0;
8225				}
8226
8227				return -1;
8228			}
8229		}
8230	},
8231
8232	propFix: {
8233		"for": "htmlFor",
8234		"class": "className"
8235	}
8236} );
8237
8238// Support: IE <=11 only
8239// Accessing the selectedIndex property
8240// forces the browser to respect setting selected
8241// on the option
8242// The getter ensures a default option is selected
8243// when in an optgroup
8244// eslint rule "no-unused-expressions" is disabled for this code
8245// since it considers such accessions noop
8246if ( !support.optSelected ) {
8247	jQuery.propHooks.selected = {
8248		get: function( elem ) {
8249
8250			/* eslint no-unused-expressions: "off" */
8251
8252			var parent = elem.parentNode;
8253			if ( parent && parent.parentNode ) {
8254				parent.parentNode.selectedIndex;
8255			}
8256			return null;
8257		},
8258		set: function( elem ) {
8259
8260			/* eslint no-unused-expressions: "off" */
8261
8262			var parent = elem.parentNode;
8263			if ( parent ) {
8264				parent.selectedIndex;
8265
8266				if ( parent.parentNode ) {
8267					parent.parentNode.selectedIndex;
8268				}
8269			}
8270		}
8271	};
8272}
8273
8274jQuery.each( [
8275	"tabIndex",
8276	"readOnly",
8277	"maxLength",
8278	"cellSpacing",
8279	"cellPadding",
8280	"rowSpan",
8281	"colSpan",
8282	"useMap",
8283	"frameBorder",
8284	"contentEditable"
8285], function() {
8286	jQuery.propFix[ this.toLowerCase() ] = this;
8287} );
8288
8289
8290
8291
8292	// Strip and collapse whitespace according to HTML spec
8293	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8294	function stripAndCollapse( value ) {
8295		var tokens = value.match( rnothtmlwhite ) || [];
8296		return tokens.join( " " );
8297	}
8298
8299
8300function getClass( elem ) {
8301	return elem.getAttribute && elem.getAttribute( "class" ) || "";
8302}
8303
8304function classesToArray( value ) {
8305	if ( Array.isArray( value ) ) {
8306		return value;
8307	}
8308	if ( typeof value === "string" ) {
8309		return value.match( rnothtmlwhite ) || [];
8310	}
8311	return [];
8312}
8313
8314jQuery.fn.extend( {
8315	addClass: function( value ) {
8316		var classNames, cur, curValue, className, i, finalValue;
8317
8318		if ( isFunction( value ) ) {
8319			return this.each( function( j ) {
8320				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
8321			} );
8322		}
8323
8324		classNames = classesToArray( value );
8325
8326		if ( classNames.length ) {
8327			return this.each( function() {
8328				curValue = getClass( this );
8329				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8330
8331				if ( cur ) {
8332					for ( i = 0; i < classNames.length; i++ ) {
8333						className = classNames[ i ];
8334						if ( cur.indexOf( " " + className + " " ) < 0 ) {
8335							cur += className + " ";
8336						}
8337					}
8338
8339					// Only assign if different to avoid unneeded rendering.
8340					finalValue = stripAndCollapse( cur );
8341					if ( curValue !== finalValue ) {
8342						this.setAttribute( "class", finalValue );
8343					}
8344				}
8345			} );
8346		}
8347
8348		return this;
8349	},
8350
8351	removeClass: function( value ) {
8352		var classNames, cur, curValue, className, i, finalValue;
8353
8354		if ( isFunction( value ) ) {
8355			return this.each( function( j ) {
8356				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
8357			} );
8358		}
8359
8360		if ( !arguments.length ) {
8361			return this.attr( "class", "" );
8362		}
8363
8364		classNames = classesToArray( value );
8365
8366		if ( classNames.length ) {
8367			return this.each( function() {
8368				curValue = getClass( this );
8369
8370				// This expression is here for better compressibility (see addClass)
8371				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
8372
8373				if ( cur ) {
8374					for ( i = 0; i < classNames.length; i++ ) {
8375						className = classNames[ i ];
8376
8377						// Remove *all* instances
8378						while ( cur.indexOf( " " + className + " " ) > -1 ) {
8379							cur = cur.replace( " " + className + " ", " " );
8380						}
8381					}
8382
8383					// Only assign if different to avoid unneeded rendering.
8384					finalValue = stripAndCollapse( cur );
8385					if ( curValue !== finalValue ) {
8386						this.setAttribute( "class", finalValue );
8387					}
8388				}
8389			} );
8390		}
8391
8392		return this;
8393	},
8394
8395	toggleClass: function( value, stateVal ) {
8396		var classNames, className, i, self,
8397			type = typeof value,
8398			isValidValue = type === "string" || Array.isArray( value );
8399
8400		if ( isFunction( value ) ) {
8401			return this.each( function( i ) {
8402				jQuery( this ).toggleClass(
8403					value.call( this, i, getClass( this ), stateVal ),
8404					stateVal
8405				);
8406			} );
8407		}
8408
8409		if ( typeof stateVal === "boolean" && isValidValue ) {
8410			return stateVal ? this.addClass( value ) : this.removeClass( value );
8411		}
8412
8413		classNames = classesToArray( value );
8414
8415		return this.each( function() {
8416			if ( isValidValue ) {
8417
8418				// Toggle individual class names
8419				self = jQuery( this );
8420
8421				for ( i = 0; i < classNames.length; i++ ) {
8422					className = classNames[ i ];
8423
8424					// Check each className given, space separated list
8425					if ( self.hasClass( className ) ) {
8426						self.removeClass( className );
8427					} else {
8428						self.addClass( className );
8429					}
8430				}
8431
8432			// Toggle whole class name
8433			} else if ( value === undefined || type === "boolean" ) {
8434				className = getClass( this );
8435				if ( className ) {
8436
8437					// Store className if set
8438					dataPriv.set( this, "__className__", className );
8439				}
8440
8441				// If the element has a class name or if we're passed `false`,
8442				// then remove the whole classname (if there was one, the above saved it).
8443				// Otherwise bring back whatever was previously saved (if anything),
8444				// falling back to the empty string if nothing was stored.
8445				if ( this.setAttribute ) {
8446					this.setAttribute( "class",
8447						className || value === false ?
8448							"" :
8449							dataPriv.get( this, "__className__" ) || ""
8450					);
8451				}
8452			}
8453		} );
8454	},
8455
8456	hasClass: function( selector ) {
8457		var className, elem,
8458			i = 0;
8459
8460		className = " " + selector + " ";
8461		while ( ( elem = this[ i++ ] ) ) {
8462			if ( elem.nodeType === 1 &&
8463				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
8464				return true;
8465			}
8466		}
8467
8468		return false;
8469	}
8470} );
8471
8472
8473
8474
8475var rreturn = /\r/g;
8476
8477jQuery.fn.extend( {
8478	val: function( value ) {
8479		var hooks, ret, valueIsFunction,
8480			elem = this[ 0 ];
8481
8482		if ( !arguments.length ) {
8483			if ( elem ) {
8484				hooks = jQuery.valHooks[ elem.type ] ||
8485					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
8486
8487				if ( hooks &&
8488					"get" in hooks &&
8489					( ret = hooks.get( elem, "value" ) ) !== undefined
8490				) {
8491					return ret;
8492				}
8493
8494				ret = elem.value;
8495
8496				// Handle most common string cases
8497				if ( typeof ret === "string" ) {
8498					return ret.replace( rreturn, "" );
8499				}
8500
8501				// Handle cases where value is null/undef or number
8502				return ret == null ? "" : ret;
8503			}
8504
8505			return;
8506		}
8507
8508		valueIsFunction = isFunction( value );
8509
8510		return this.each( function( i ) {
8511			var val;
8512
8513			if ( this.nodeType !== 1 ) {
8514				return;
8515			}
8516
8517			if ( valueIsFunction ) {
8518				val = value.call( this, i, jQuery( this ).val() );
8519			} else {
8520				val = value;
8521			}
8522
8523			// Treat null/undefined as ""; convert numbers to string
8524			if ( val == null ) {
8525				val = "";
8526
8527			} else if ( typeof val === "number" ) {
8528				val += "";
8529
8530			} else if ( Array.isArray( val ) ) {
8531				val = jQuery.map( val, function( value ) {
8532					return value == null ? "" : value + "";
8533				} );
8534			}
8535
8536			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
8537
8538			// If set returns undefined, fall back to normal setting
8539			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
8540				this.value = val;
8541			}
8542		} );
8543	}
8544} );
8545
8546jQuery.extend( {
8547	valHooks: {
8548		option: {
8549			get: function( elem ) {
8550
8551				var val = jQuery.find.attr( elem, "value" );
8552				return val != null ?
8553					val :
8554
8555					// Support: IE <=10 - 11 only
8556					// option.text throws exceptions (trac-14686, trac-14858)
8557					// Strip and collapse whitespace
8558					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
8559					stripAndCollapse( jQuery.text( elem ) );
8560			}
8561		},
8562		select: {
8563			get: function( elem ) {
8564				var value, option, i,
8565					options = elem.options,
8566					index = elem.selectedIndex,
8567					one = elem.type === "select-one",
8568					values = one ? null : [],
8569					max = one ? index + 1 : options.length;
8570
8571				if ( index < 0 ) {
8572					i = max;
8573
8574				} else {
8575					i = one ? index : 0;
8576				}
8577
8578				// Loop through all the selected options
8579				for ( ; i < max; i++ ) {
8580					option = options[ i ];
8581
8582					// Support: IE <=9 only
8583					// IE8-9 doesn't update selected after form reset (trac-2551)
8584					if ( ( option.selected || i === index ) &&
8585
8586							// Don't return options that are disabled or in a disabled optgroup
8587							!option.disabled &&
8588							( !option.parentNode.disabled ||
8589								!nodeName( option.parentNode, "optgroup" ) ) ) {
8590
8591						// Get the specific value for the option
8592						value = jQuery( option ).val();
8593
8594						// We don't need an array for one selects
8595						if ( one ) {
8596							return value;
8597						}
8598
8599						// Multi-Selects return an array
8600						values.push( value );
8601					}
8602				}
8603
8604				return values;
8605			},
8606
8607			set: function( elem, value ) {
8608				var optionSet, option,
8609					options = elem.options,
8610					values = jQuery.makeArray( value ),
8611					i = options.length;
8612
8613				while ( i-- ) {
8614					option = options[ i ];
8615
8616					/* eslint-disable no-cond-assign */
8617
8618					if ( option.selected =
8619						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
8620					) {
8621						optionSet = true;
8622					}
8623
8624					/* eslint-enable no-cond-assign */
8625				}
8626
8627				// Force browsers to behave consistently when non-matching value is set
8628				if ( !optionSet ) {
8629					elem.selectedIndex = -1;
8630				}
8631				return values;
8632			}
8633		}
8634	}
8635} );
8636
8637// Radios and checkboxes getter/setter
8638jQuery.each( [ "radio", "checkbox" ], function() {
8639	jQuery.valHooks[ this ] = {
8640		set: function( elem, value ) {
8641			if ( Array.isArray( value ) ) {
8642				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
8643			}
8644		}
8645	};
8646	if ( !support.checkOn ) {
8647		jQuery.valHooks[ this ].get = function( elem ) {
8648			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
8649		};
8650	}
8651} );
8652
8653
8654
8655
8656// Return jQuery for attributes-only inclusion
8657var location = window.location;
8658
8659var nonce = { guid: Date.now() };
8660
8661var rquery = ( /\?/ );
8662
8663
8664
8665// Cross-browser xml parsing
8666jQuery.parseXML = function( data ) {
8667	var xml, parserErrorElem;
8668	if ( !data || typeof data !== "string" ) {
8669		return null;
8670	}
8671
8672	// Support: IE 9 - 11 only
8673	// IE throws on parseFromString with invalid input.
8674	try {
8675		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
8676	} catch ( e ) {}
8677
8678	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
8679	if ( !xml || parserErrorElem ) {
8680		jQuery.error( "Invalid XML: " + (
8681			parserErrorElem ?
8682				jQuery.map( parserErrorElem.childNodes, function( el ) {
8683					return el.textContent;
8684				} ).join( "\n" ) :
8685				data
8686		) );
8687	}
8688	return xml;
8689};
8690
8691
8692var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
8693	stopPropagationCallback = function( e ) {
8694		e.stopPropagation();
8695	};
8696
8697jQuery.extend( jQuery.event, {
8698
8699	trigger: function( event, data, elem, onlyHandlers ) {
8700
8701		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
8702			eventPath = [ elem || document ],
8703			type = hasOwn.call( event, "type" ) ? event.type : event,
8704			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
8705
8706		cur = lastElement = tmp = elem = elem || document;
8707
8708		// Don't do events on text and comment nodes
8709		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
8710			return;
8711		}
8712
8713		// focus/blur morphs to focusin/out; ensure we're not firing them right now
8714		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
8715			return;
8716		}
8717
8718		if ( type.indexOf( "." ) > -1 ) {
8719
8720			// Namespaced trigger; create a regexp to match event type in handle()
8721			namespaces = type.split( "." );
8722			type = namespaces.shift();
8723			namespaces.sort();
8724		}
8725		ontype = type.indexOf( ":" ) < 0 && "on" + type;
8726
8727		// Caller can pass in a jQuery.Event object, Object, or just an event type string
8728		event = event[ jQuery.expando ] ?
8729			event :
8730			new jQuery.Event( type, typeof event === "object" && event );
8731
8732		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
8733		event.isTrigger = onlyHandlers ? 2 : 3;
8734		event.namespace = namespaces.join( "." );
8735		event.rnamespace = event.namespace ?
8736			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
8737			null;
8738
8739		// Clean up the event in case it is being reused
8740		event.result = undefined;
8741		if ( !event.target ) {
8742			event.target = elem;
8743		}
8744
8745		// Clone any incoming data and prepend the event, creating the handler arg list
8746		data = data == null ?
8747			[ event ] :
8748			jQuery.makeArray( data, [ event ] );
8749
8750		// Allow special events to draw outside the lines
8751		special = jQuery.event.special[ type ] || {};
8752		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
8753			return;
8754		}
8755
8756		// Determine event propagation path in advance, per W3C events spec (trac-9951)
8757		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
8758		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
8759
8760			bubbleType = special.delegateType || type;
8761			if ( !rfocusMorph.test( bubbleType + type ) ) {
8762				cur = cur.parentNode;
8763			}
8764			for ( ; cur; cur = cur.parentNode ) {
8765				eventPath.push( cur );
8766				tmp = cur;
8767			}
8768
8769			// Only add window if we got to document (e.g., not plain obj or detached DOM)
8770			if ( tmp === ( elem.ownerDocument || document ) ) {
8771				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
8772			}
8773		}
8774
8775		// Fire handlers on the event path
8776		i = 0;
8777		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
8778			lastElement = cur;
8779			event.type = i > 1 ?
8780				bubbleType :
8781				special.bindType || type;
8782
8783			// jQuery handler
8784			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
8785				dataPriv.get( cur, "handle" );
8786			if ( handle ) {
8787				handle.apply( cur, data );
8788			}
8789
8790			// Native handler
8791			handle = ontype && cur[ ontype ];
8792			if ( handle && handle.apply && acceptData( cur ) ) {
8793				event.result = handle.apply( cur, data );
8794				if ( event.result === false ) {
8795					event.preventDefault();
8796				}
8797			}
8798		}
8799		event.type = type;
8800
8801		// If nobody prevented the default action, do it now
8802		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
8803
8804			if ( ( !special._default ||
8805				special._default.apply( eventPath.pop(), data ) === false ) &&
8806				acceptData( elem ) ) {
8807
8808				// Call a native DOM method on the target with the same name as the event.
8809				// Don't do default actions on window, that's where global variables be (trac-6170)
8810				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
8811
8812					// Don't re-trigger an onFOO event when we call its FOO() method
8813					tmp = elem[ ontype ];
8814
8815					if ( tmp ) {
8816						elem[ ontype ] = null;
8817					}
8818
8819					// Prevent re-triggering of the same event, since we already bubbled it above
8820					jQuery.event.triggered = type;
8821
8822					if ( event.isPropagationStopped() ) {
8823						lastElement.addEventListener( type, stopPropagationCallback );
8824					}
8825
8826					elem[ type ]();
8827
8828					if ( event.isPropagationStopped() ) {
8829						lastElement.removeEventListener( type, stopPropagationCallback );
8830					}
8831
8832					jQuery.event.triggered = undefined;
8833
8834					if ( tmp ) {
8835						elem[ ontype ] = tmp;
8836					}
8837				}
8838			}
8839		}
8840
8841		return event.result;
8842	},
8843
8844	// Piggyback on a donor event to simulate a different one
8845	// Used only for `focus(in | out)` events
8846	simulate: function( type, elem, event ) {
8847		var e = jQuery.extend(
8848			new jQuery.Event(),
8849			event,
8850			{
8851				type: type,
8852				isSimulated: true
8853			}
8854		);
8855
8856		jQuery.event.trigger( e, null, elem );
8857	}
8858
8859} );
8860
8861jQuery.fn.extend( {
8862
8863	trigger: function( type, data ) {
8864		return this.each( function() {
8865			jQuery.event.trigger( type, data, this );
8866		} );
8867	},
8868	triggerHandler: function( type, data ) {
8869		var elem = this[ 0 ];
8870		if ( elem ) {
8871			return jQuery.event.trigger( type, data, elem, true );
8872		}
8873	}
8874} );
8875
8876
8877var
8878	rbracket = /\[\]$/,
8879	rCRLF = /\r?\n/g,
8880	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8881	rsubmittable = /^(?:input|select|textarea|keygen)/i;
8882
8883function buildParams( prefix, obj, traditional, add ) {
8884	var name;
8885
8886	if ( Array.isArray( obj ) ) {
8887
8888		// Serialize array item.
8889		jQuery.each( obj, function( i, v ) {
8890			if ( traditional || rbracket.test( prefix ) ) {
8891
8892				// Treat each array item as a scalar.
8893				add( prefix, v );
8894
8895			} else {
8896
8897				// Item is non-scalar (array or object), encode its numeric index.
8898				buildParams(
8899					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
8900					v,
8901					traditional,
8902					add
8903				);
8904			}
8905		} );
8906
8907	} else if ( !traditional && toType( obj ) === "object" ) {
8908
8909		// Serialize object item.
8910		for ( name in obj ) {
8911			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
8912		}
8913
8914	} else {
8915
8916		// Serialize scalar item.
8917		add( prefix, obj );
8918	}
8919}
8920
8921// Serialize an array of form elements or a set of
8922// key/values into a query string
8923jQuery.param = function( a, traditional ) {
8924	var prefix,
8925		s = [],
8926		add = function( key, valueOrFunction ) {
8927
8928			// If value is a function, invoke it and use its return value
8929			var value = isFunction( valueOrFunction ) ?
8930				valueOrFunction() :
8931				valueOrFunction;
8932
8933			s[ s.length ] = encodeURIComponent( key ) + "=" +
8934				encodeURIComponent( value == null ? "" : value );
8935		};
8936
8937	if ( a == null ) {
8938		return "";
8939	}
8940
8941	// If an array was passed in, assume that it is an array of form elements.
8942	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
8943
8944		// Serialize the form elements
8945		jQuery.each( a, function() {
8946			add( this.name, this.value );
8947		} );
8948
8949	} else {
8950
8951		// If traditional, encode the "old" way (the way 1.3.2 or older
8952		// did it), otherwise encode params recursively.
8953		for ( prefix in a ) {
8954			buildParams( prefix, a[ prefix ], traditional, add );
8955		}
8956	}
8957
8958	// Return the resulting serialization
8959	return s.join( "&" );
8960};
8961
8962jQuery.fn.extend( {
8963	serialize: function() {
8964		return jQuery.param( this.serializeArray() );
8965	},
8966	serializeArray: function() {
8967		return this.map( function() {
8968
8969			// Can add propHook for "elements" to filter or add form elements
8970			var elements = jQuery.prop( this, "elements" );
8971			return elements ? jQuery.makeArray( elements ) : this;
8972		} ).filter( function() {
8973			var type = this.type;
8974
8975			// Use .is( ":disabled" ) so that fieldset[disabled] works
8976			return this.name && !jQuery( this ).is( ":disabled" ) &&
8977				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
8978				( this.checked || !rcheckableType.test( type ) );
8979		} ).map( function( _i, elem ) {
8980			var val = jQuery( this ).val();
8981
8982			if ( val == null ) {
8983				return null;
8984			}
8985
8986			if ( Array.isArray( val ) ) {
8987				return jQuery.map( val, function( val ) {
8988					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8989				} );
8990			}
8991
8992			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
8993		} ).get();
8994	}
8995} );
8996
8997
8998var
8999	r20 = /%20/g,
9000	rhash = /#.*$/,
9001	rantiCache = /([?&])_=[^&]*/,
9002	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
9003
9004	// trac-7653, trac-8125, trac-8152: local protocol detection
9005	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
9006	rnoContent = /^(?:GET|HEAD)$/,
9007	rprotocol = /^\/\//,
9008
9009	/* Prefilters
9010	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
9011	 * 2) These are called:
9012	 *    - BEFORE asking for a transport
9013	 *    - AFTER param serialization (s.data is a string if s.processData is true)
9014	 * 3) key is the dataType
9015	 * 4) the catchall symbol "*" can be used
9016	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
9017	 */
9018	prefilters = {},
9019
9020	/* Transports bindings
9021	 * 1) key is the dataType
9022	 * 2) the catchall symbol "*" can be used
9023	 * 3) selection will start with transport dataType and THEN go to "*" if needed
9024	 */
9025	transports = {},
9026
9027	// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
9028	allTypes = "*/".concat( "*" ),
9029
9030	// Anchor tag for parsing the document origin
9031	originAnchor = document.createElement( "a" );
9032
9033originAnchor.href = location.href;
9034
9035// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
9036function addToPrefiltersOrTransports( structure ) {
9037
9038	// dataTypeExpression is optional and defaults to "*"
9039	return function( dataTypeExpression, func ) {
9040
9041		if ( typeof dataTypeExpression !== "string" ) {
9042			func = dataTypeExpression;
9043			dataTypeExpression = "*";
9044		}
9045
9046		var dataType,
9047			i = 0,
9048			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
9049
9050		if ( isFunction( func ) ) {
9051
9052			// For each dataType in the dataTypeExpression
9053			while ( ( dataType = dataTypes[ i++ ] ) ) {
9054
9055				// Prepend if requested
9056				if ( dataType[ 0 ] === "+" ) {
9057					dataType = dataType.slice( 1 ) || "*";
9058					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
9059
9060				// Otherwise append
9061				} else {
9062					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
9063				}
9064			}
9065		}
9066	};
9067}
9068
9069// Base inspection function for prefilters and transports
9070function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
9071
9072	var inspected = {},
9073		seekingTransport = ( structure === transports );
9074
9075	function inspect( dataType ) {
9076		var selected;
9077		inspected[ dataType ] = true;
9078		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
9079			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
9080			if ( typeof dataTypeOrTransport === "string" &&
9081				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
9082
9083				options.dataTypes.unshift( dataTypeOrTransport );
9084				inspect( dataTypeOrTransport );
9085				return false;
9086			} else if ( seekingTransport ) {
9087				return !( selected = dataTypeOrTransport );
9088			}
9089		} );
9090		return selected;
9091	}
9092
9093	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
9094}
9095
9096// A special extend for ajax options
9097// that takes "flat" options (not to be deep extended)
9098// Fixes trac-9887
9099function ajaxExtend( target, src ) {
9100	var key, deep,
9101		flatOptions = jQuery.ajaxSettings.flatOptions || {};
9102
9103	for ( key in src ) {
9104		if ( src[ key ] !== undefined ) {
9105			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
9106		}
9107	}
9108	if ( deep ) {
9109		jQuery.extend( true, target, deep );
9110	}
9111
9112	return target;
9113}
9114
9115/* Handles responses to an ajax request:
9116 * - finds the right dataType (mediates between content-type and expected dataType)
9117 * - returns the corresponding response
9118 */
9119function ajaxHandleResponses( s, jqXHR, responses ) {
9120
9121	var ct, type, finalDataType, firstDataType,
9122		contents = s.contents,
9123		dataTypes = s.dataTypes;
9124
9125	// Remove auto dataType and get content-type in the process
9126	while ( dataTypes[ 0 ] === "*" ) {
9127		dataTypes.shift();
9128		if ( ct === undefined ) {
9129			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
9130		}
9131	}
9132
9133	// Check if we're dealing with a known content-type
9134	if ( ct ) {
9135		for ( type in contents ) {
9136			if ( contents[ type ] && contents[ type ].test( ct ) ) {
9137				dataTypes.unshift( type );
9138				break;
9139			}
9140		}
9141	}
9142
9143	// Check to see if we have a response for the expected dataType
9144	if ( dataTypes[ 0 ] in responses ) {
9145		finalDataType = dataTypes[ 0 ];
9146	} else {
9147
9148		// Try convertible dataTypes
9149		for ( type in responses ) {
9150			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
9151				finalDataType = type;
9152				break;
9153			}
9154			if ( !firstDataType ) {
9155				firstDataType = type;
9156			}
9157		}
9158
9159		// Or just use first one
9160		finalDataType = finalDataType || firstDataType;
9161	}
9162
9163	// If we found a dataType
9164	// We add the dataType to the list if needed
9165	// and return the corresponding response
9166	if ( finalDataType ) {
9167		if ( finalDataType !== dataTypes[ 0 ] ) {
9168			dataTypes.unshift( finalDataType );
9169		}
9170		return responses[ finalDataType ];
9171	}
9172}
9173
9174/* Chain conversions given the request and the original response
9175 * Also sets the responseXXX fields on the jqXHR instance
9176 */
9177function ajaxConvert( s, response, jqXHR, isSuccess ) {
9178	var conv2, current, conv, tmp, prev,
9179		converters = {},
9180
9181		// Work with a copy of dataTypes in case we need to modify it for conversion
9182		dataTypes = s.dataTypes.slice();
9183
9184	// Create converters map with lowercased keys
9185	if ( dataTypes[ 1 ] ) {
9186		for ( conv in s.converters ) {
9187			converters[ conv.toLowerCase() ] = s.converters[ conv ];
9188		}
9189	}
9190
9191	current = dataTypes.shift();
9192
9193	// Convert to each sequential dataType
9194	while ( current ) {
9195
9196		if ( s.responseFields[ current ] ) {
9197			jqXHR[ s.responseFields[ current ] ] = response;
9198		}
9199
9200		// Apply the dataFilter if provided
9201		if ( !prev && isSuccess && s.dataFilter ) {
9202			response = s.dataFilter( response, s.dataType );
9203		}
9204
9205		prev = current;
9206		current = dataTypes.shift();
9207
9208		if ( current ) {
9209
9210			// There's only work to do if current dataType is non-auto
9211			if ( current === "*" ) {
9212
9213				current = prev;
9214
9215			// Convert response if prev dataType is non-auto and differs from current
9216			} else if ( prev !== "*" && prev !== current ) {
9217
9218				// Seek a direct converter
9219				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
9220
9221				// If none found, seek a pair
9222				if ( !conv ) {
9223					for ( conv2 in converters ) {
9224
9225						// If conv2 outputs current
9226						tmp = conv2.split( " " );
9227						if ( tmp[ 1 ] === current ) {
9228
9229							// If prev can be converted to accepted input
9230							conv = converters[ prev + " " + tmp[ 0 ] ] ||
9231								converters[ "* " + tmp[ 0 ] ];
9232							if ( conv ) {
9233
9234								// Condense equivalence converters
9235								if ( conv === true ) {
9236									conv = converters[ conv2 ];
9237
9238								// Otherwise, insert the intermediate dataType
9239								} else if ( converters[ conv2 ] !== true ) {
9240									current = tmp[ 0 ];
9241									dataTypes.unshift( tmp[ 1 ] );
9242								}
9243								break;
9244							}
9245						}
9246					}
9247				}
9248
9249				// Apply converter (if not an equivalence)
9250				if ( conv !== true ) {
9251
9252					// Unless errors are allowed to bubble, catch and return them
9253					if ( conv && s.throws ) {
9254						response = conv( response );
9255					} else {
9256						try {
9257							response = conv( response );
9258						} catch ( e ) {
9259							return {
9260								state: "parsererror",
9261								error: conv ? e : "No conversion from " + prev + " to " + current
9262							};
9263						}
9264					}
9265				}
9266			}
9267		}
9268	}
9269
9270	return { state: "success", data: response };
9271}
9272
9273jQuery.extend( {
9274
9275	// Counter for holding the number of active queries
9276	active: 0,
9277
9278	// Last-Modified header cache for next request
9279	lastModified: {},
9280	etag: {},
9281
9282	ajaxSettings: {
9283		url: location.href,
9284		type: "GET",
9285		isLocal: rlocalProtocol.test( location.protocol ),
9286		global: true,
9287		processData: true,
9288		async: true,
9289		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
9290
9291		/*
9292		timeout: 0,
9293		data: null,
9294		dataType: null,
9295		username: null,
9296		password: null,
9297		cache: null,
9298		throws: false,
9299		traditional: false,
9300		headers: {},
9301		*/
9302
9303		accepts: {
9304			"*": allTypes,
9305			text: "text/plain",
9306			html: "text/html",
9307			xml: "application/xml, text/xml",
9308			json: "application/json, text/javascript"
9309		},
9310
9311		contents: {
9312			xml: /\bxml\b/,
9313			html: /\bhtml/,
9314			json: /\bjson\b/
9315		},
9316
9317		responseFields: {
9318			xml: "responseXML",
9319			text: "responseText",
9320			json: "responseJSON"
9321		},
9322
9323		// Data converters
9324		// Keys separate source (or catchall "*") and destination types with a single space
9325		converters: {
9326
9327			// Convert anything to text
9328			"* text": String,
9329
9330			// Text to html (true = no transformation)
9331			"text html": true,
9332
9333			// Evaluate text as a json expression
9334			"text json": JSON.parse,
9335
9336			// Parse text as xml
9337			"text xml": jQuery.parseXML
9338		},
9339
9340		// For options that shouldn't be deep extended:
9341		// you can add your own custom options here if
9342		// and when you create one that shouldn't be
9343		// deep extended (see ajaxExtend)
9344		flatOptions: {
9345			url: true,
9346			context: true
9347		}
9348	},
9349
9350	// Creates a full fledged settings object into target
9351	// with both ajaxSettings and settings fields.
9352	// If target is omitted, writes into ajaxSettings.
9353	ajaxSetup: function( target, settings ) {
9354		return settings ?
9355
9356			// Building a settings object
9357			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
9358
9359			// Extending ajaxSettings
9360			ajaxExtend( jQuery.ajaxSettings, target );
9361	},
9362
9363	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
9364	ajaxTransport: addToPrefiltersOrTransports( transports ),
9365
9366	// Main method
9367	ajax: function( url, options ) {
9368
9369		// If url is an object, simulate pre-1.5 signature
9370		if ( typeof url === "object" ) {
9371			options = url;
9372			url = undefined;
9373		}
9374
9375		// Force options to be an object
9376		options = options || {};
9377
9378		var transport,
9379
9380			// URL without anti-cache param
9381			cacheURL,
9382
9383			// Response headers
9384			responseHeadersString,
9385			responseHeaders,
9386
9387			// timeout handle
9388			timeoutTimer,
9389
9390			// Url cleanup var
9391			urlAnchor,
9392
9393			// Request state (becomes false upon send and true upon completion)
9394			completed,
9395
9396			// To know if global events are to be dispatched
9397			fireGlobals,
9398
9399			// Loop variable
9400			i,
9401
9402			// uncached part of the url
9403			uncached,
9404
9405			// Create the final options object
9406			s = jQuery.ajaxSetup( {}, options ),
9407
9408			// Callbacks context
9409			callbackContext = s.context || s,
9410
9411			// Context for global events is callbackContext if it is a DOM node or jQuery collection
9412			globalEventContext = s.context &&
9413				( callbackContext.nodeType || callbackContext.jquery ) ?
9414				jQuery( callbackContext ) :
9415				jQuery.event,
9416
9417			// Deferreds
9418			deferred = jQuery.Deferred(),
9419			completeDeferred = jQuery.Callbacks( "once memory" ),
9420
9421			// Status-dependent callbacks
9422			statusCode = s.statusCode || {},
9423
9424			// Headers (they are sent all at once)
9425			requestHeaders = {},
9426			requestHeadersNames = {},
9427
9428			// Default abort message
9429			strAbort = "canceled",
9430
9431			// Fake xhr
9432			jqXHR = {
9433				readyState: 0,
9434
9435				// Builds headers hashtable if needed
9436				getResponseHeader: function( key ) {
9437					var match;
9438					if ( completed ) {
9439						if ( !responseHeaders ) {
9440							responseHeaders = {};
9441							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
9442								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
9443									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
9444										.concat( match[ 2 ] );
9445							}
9446						}
9447						match = responseHeaders[ key.toLowerCase() + " " ];
9448					}
9449					return match == null ? null : match.join( ", " );
9450				},
9451
9452				// Raw string
9453				getAllResponseHeaders: function() {
9454					return completed ? responseHeadersString : null;
9455				},
9456
9457				// Caches the header
9458				setRequestHeader: function( name, value ) {
9459					if ( completed == null ) {
9460						name = requestHeadersNames[ name.toLowerCase() ] =
9461							requestHeadersNames[ name.toLowerCase() ] || name;
9462						requestHeaders[ name ] = value;
9463					}
9464					return this;
9465				},
9466
9467				// Overrides response content-type header
9468				overrideMimeType: function( type ) {
9469					if ( completed == null ) {
9470						s.mimeType = type;
9471					}
9472					return this;
9473				},
9474
9475				// Status-dependent callbacks
9476				statusCode: function( map ) {
9477					var code;
9478					if ( map ) {
9479						if ( completed ) {
9480
9481							// Execute the appropriate callbacks
9482							jqXHR.always( map[ jqXHR.status ] );
9483						} else {
9484
9485							// Lazy-add the new callbacks in a way that preserves old ones
9486							for ( code in map ) {
9487								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
9488							}
9489						}
9490					}
9491					return this;
9492				},
9493
9494				// Cancel the request
9495				abort: function( statusText ) {
9496					var finalText = statusText || strAbort;
9497					if ( transport ) {
9498						transport.abort( finalText );
9499					}
9500					done( 0, finalText );
9501					return this;
9502				}
9503			};
9504
9505		// Attach deferreds
9506		deferred.promise( jqXHR );
9507
9508		// Add protocol if not provided (prefilters might expect it)
9509		// Handle falsy url in the settings object (trac-10093: consistency with old signature)
9510		// We also use the url parameter if available
9511		s.url = ( ( url || s.url || location.href ) + "" )
9512			.replace( rprotocol, location.protocol + "//" );
9513
9514		// Alias method option to type as per ticket trac-12004
9515		s.type = options.method || options.type || s.method || s.type;
9516
9517		// Extract dataTypes list
9518		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
9519
9520		// A cross-domain request is in order when the origin doesn't match the current origin.
9521		if ( s.crossDomain == null ) {
9522			urlAnchor = document.createElement( "a" );
9523
9524			// Support: IE <=8 - 11, Edge 12 - 15
9525			// IE throws exception on accessing the href property if url is malformed,
9526			// e.g. http://example.com:80x/
9527			try {
9528				urlAnchor.href = s.url;
9529
9530				// Support: IE <=8 - 11 only
9531				// Anchor's host property isn't correctly set when s.url is relative
9532				urlAnchor.href = urlAnchor.href;
9533				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
9534					urlAnchor.protocol + "//" + urlAnchor.host;
9535			} catch ( e ) {
9536
9537				// If there is an error parsing the URL, assume it is crossDomain,
9538				// it can be rejected by the transport if it is invalid
9539				s.crossDomain = true;
9540			}
9541		}
9542
9543		// Convert data if not already a string
9544		if ( s.data && s.processData && typeof s.data !== "string" ) {
9545			s.data = jQuery.param( s.data, s.traditional );
9546		}
9547
9548		// Apply prefilters
9549		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
9550
9551		// If request was aborted inside a prefilter, stop there
9552		if ( completed ) {
9553			return jqXHR;
9554		}
9555
9556		// We can fire global events as of now if asked to
9557		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
9558		fireGlobals = jQuery.event && s.global;
9559
9560		// Watch for a new set of requests
9561		if ( fireGlobals && jQuery.active++ === 0 ) {
9562			jQuery.event.trigger( "ajaxStart" );
9563		}
9564
9565		// Uppercase the type
9566		s.type = s.type.toUpperCase();
9567
9568		// Determine if request has content
9569		s.hasContent = !rnoContent.test( s.type );
9570
9571		// Save the URL in case we're toying with the If-Modified-Since
9572		// and/or If-None-Match header later on
9573		// Remove hash to simplify url manipulation
9574		cacheURL = s.url.replace( rhash, "" );
9575
9576		// More options handling for requests with no content
9577		if ( !s.hasContent ) {
9578
9579			// Remember the hash so we can put it back
9580			uncached = s.url.slice( cacheURL.length );
9581
9582			// If data is available and should be processed, append data to url
9583			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
9584				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
9585
9586				// trac-9682: remove data so that it's not used in an eventual retry
9587				delete s.data;
9588			}
9589
9590			// Add or update anti-cache param if needed
9591			if ( s.cache === false ) {
9592				cacheURL = cacheURL.replace( rantiCache, "$1" );
9593				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
9594					uncached;
9595			}
9596
9597			// Put hash and anti-cache on the URL that will be requested (gh-1732)
9598			s.url = cacheURL + uncached;
9599
9600		// Change '%20' to '+' if this is encoded form body content (gh-2658)
9601		} else if ( s.data && s.processData &&
9602			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
9603			s.data = s.data.replace( r20, "+" );
9604		}
9605
9606		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9607		if ( s.ifModified ) {
9608			if ( jQuery.lastModified[ cacheURL ] ) {
9609				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
9610			}
9611			if ( jQuery.etag[ cacheURL ] ) {
9612				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
9613			}
9614		}
9615
9616		// Set the correct header, if data is being sent
9617		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
9618			jqXHR.setRequestHeader( "Content-Type", s.contentType );
9619		}
9620
9621		// Set the Accepts header for the server, depending on the dataType
9622		jqXHR.setRequestHeader(
9623			"Accept",
9624			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
9625				s.accepts[ s.dataTypes[ 0 ] ] +
9626					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
9627				s.accepts[ "*" ]
9628		);
9629
9630		// Check for headers option
9631		for ( i in s.headers ) {
9632			jqXHR.setRequestHeader( i, s.headers[ i ] );
9633		}
9634
9635		// Allow custom headers/mimetypes and early abort
9636		if ( s.beforeSend &&
9637			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
9638
9639			// Abort if not done already and return
9640			return jqXHR.abort();
9641		}
9642
9643		// Aborting is no longer a cancellation
9644		strAbort = "abort";
9645
9646		// Install callbacks on deferreds
9647		completeDeferred.add( s.complete );
9648		jqXHR.done( s.success );
9649		jqXHR.fail( s.error );
9650
9651		// Get transport
9652		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
9653
9654		// If no transport, we auto-abort
9655		if ( !transport ) {
9656			done( -1, "No Transport" );
9657		} else {
9658			jqXHR.readyState = 1;
9659
9660			// Send global event
9661			if ( fireGlobals ) {
9662				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
9663			}
9664
9665			// If request was aborted inside ajaxSend, stop there
9666			if ( completed ) {
9667				return jqXHR;
9668			}
9669
9670			// Timeout
9671			if ( s.async && s.timeout > 0 ) {
9672				timeoutTimer = window.setTimeout( function() {
9673					jqXHR.abort( "timeout" );
9674				}, s.timeout );
9675			}
9676
9677			try {
9678				completed = false;
9679				transport.send( requestHeaders, done );
9680			} catch ( e ) {
9681
9682				// Rethrow post-completion exceptions
9683				if ( completed ) {
9684					throw e;
9685				}
9686
9687				// Propagate others as results
9688				done( -1, e );
9689			}
9690		}
9691
9692		// Callback for when everything is done
9693		function done( status, nativeStatusText, responses, headers ) {
9694			var isSuccess, success, error, response, modified,
9695				statusText = nativeStatusText;
9696
9697			// Ignore repeat invocations
9698			if ( completed ) {
9699				return;
9700			}
9701
9702			completed = true;
9703
9704			// Clear timeout if it exists
9705			if ( timeoutTimer ) {
9706				window.clearTimeout( timeoutTimer );
9707			}
9708
9709			// Dereference transport for early garbage collection
9710			// (no matter how long the jqXHR object will be used)
9711			transport = undefined;
9712
9713			// Cache response headers
9714			responseHeadersString = headers || "";
9715
9716			// Set readyState
9717			jqXHR.readyState = status > 0 ? 4 : 0;
9718
9719			// Determine if successful
9720			isSuccess = status >= 200 && status < 300 || status === 304;
9721
9722			// Get response data
9723			if ( responses ) {
9724				response = ajaxHandleResponses( s, jqXHR, responses );
9725			}
9726
9727			// Use a noop converter for missing script but not if jsonp
9728			if ( !isSuccess &&
9729				jQuery.inArray( "script", s.dataTypes ) > -1 &&
9730				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
9731				s.converters[ "text script" ] = function() {};
9732			}
9733
9734			// Convert no matter what (that way responseXXX fields are always set)
9735			response = ajaxConvert( s, response, jqXHR, isSuccess );
9736
9737			// If successful, handle type chaining
9738			if ( isSuccess ) {
9739
9740				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9741				if ( s.ifModified ) {
9742					modified = jqXHR.getResponseHeader( "Last-Modified" );
9743					if ( modified ) {
9744						jQuery.lastModified[ cacheURL ] = modified;
9745					}
9746					modified = jqXHR.getResponseHeader( "etag" );
9747					if ( modified ) {
9748						jQuery.etag[ cacheURL ] = modified;
9749					}
9750				}
9751
9752				// if no content
9753				if ( status === 204 || s.type === "HEAD" ) {
9754					statusText = "nocontent";
9755
9756				// if not modified
9757				} else if ( status === 304 ) {
9758					statusText = "notmodified";
9759
9760				// If we have data, let's convert it
9761				} else {
9762					statusText = response.state;
9763					success = response.data;
9764					error = response.error;
9765					isSuccess = !error;
9766				}
9767			} else {
9768
9769				// Extract error from statusText and normalize for non-aborts
9770				error = statusText;
9771				if ( status || !statusText ) {
9772					statusText = "error";
9773					if ( status < 0 ) {
9774						status = 0;
9775					}
9776				}
9777			}
9778
9779			// Set data for the fake xhr object
9780			jqXHR.status = status;
9781			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
9782
9783			// Success/Error
9784			if ( isSuccess ) {
9785				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
9786			} else {
9787				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
9788			}
9789
9790			// Status-dependent callbacks
9791			jqXHR.statusCode( statusCode );
9792			statusCode = undefined;
9793
9794			if ( fireGlobals ) {
9795				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
9796					[ jqXHR, s, isSuccess ? success : error ] );
9797			}
9798
9799			// Complete
9800			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
9801
9802			if ( fireGlobals ) {
9803				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
9804
9805				// Handle the global AJAX counter
9806				if ( !( --jQuery.active ) ) {
9807					jQuery.event.trigger( "ajaxStop" );
9808				}
9809			}
9810		}
9811
9812		return jqXHR;
9813	},
9814
9815	getJSON: function( url, data, callback ) {
9816		return jQuery.get( url, data, callback, "json" );
9817	},
9818
9819	getScript: function( url, callback ) {
9820		return jQuery.get( url, undefined, callback, "script" );
9821	}
9822} );
9823
9824jQuery.each( [ "get", "post" ], function( _i, method ) {
9825	jQuery[ method ] = function( url, data, callback, type ) {
9826
9827		// Shift arguments if data argument was omitted
9828		if ( isFunction( data ) ) {
9829			type = type || callback;
9830			callback = data;
9831			data = undefined;
9832		}
9833
9834		// The url can be an options object (which then must have .url)
9835		return jQuery.ajax( jQuery.extend( {
9836			url: url,
9837			type: method,
9838			dataType: type,
9839			data: data,
9840			success: callback
9841		}, jQuery.isPlainObject( url ) && url ) );
9842	};
9843} );
9844
9845jQuery.ajaxPrefilter( function( s ) {
9846	var i;
9847	for ( i in s.headers ) {
9848		if ( i.toLowerCase() === "content-type" ) {
9849			s.contentType = s.headers[ i ] || "";
9850		}
9851	}
9852} );
9853
9854
9855jQuery._evalUrl = function( url, options, doc ) {
9856	return jQuery.ajax( {
9857		url: url,
9858
9859		// Make this explicit, since user can override this through ajaxSetup (trac-11264)
9860		type: "GET",
9861		dataType: "script",
9862		cache: true,
9863		async: false,
9864		global: false,
9865
9866		// Only evaluate the response if it is successful (gh-4126)
9867		// dataFilter is not invoked for failure responses, so using it instead
9868		// of the default converter is kludgy but it works.
9869		converters: {
9870			"text script": function() {}
9871		},
9872		dataFilter: function( response ) {
9873			jQuery.globalEval( response, options, doc );
9874		}
9875	} );
9876};
9877
9878
9879jQuery.fn.extend( {
9880	wrapAll: function( html ) {
9881		var wrap;
9882
9883		if ( this[ 0 ] ) {
9884			if ( isFunction( html ) ) {
9885				html = html.call( this[ 0 ] );
9886			}
9887
9888			// The elements to wrap the target around
9889			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
9890
9891			if ( this[ 0 ].parentNode ) {
9892				wrap.insertBefore( this[ 0 ] );
9893			}
9894
9895			wrap.map( function() {
9896				var elem = this;
9897
9898				while ( elem.firstElementChild ) {
9899					elem = elem.firstElementChild;
9900				}
9901
9902				return elem;
9903			} ).append( this );
9904		}
9905
9906		return this;
9907	},
9908
9909	wrapInner: function( html ) {
9910		if ( isFunction( html ) ) {
9911			return this.each( function( i ) {
9912				jQuery( this ).wrapInner( html.call( this, i ) );
9913			} );
9914		}
9915
9916		return this.each( function() {
9917			var self = jQuery( this ),
9918				contents = self.contents();
9919
9920			if ( contents.length ) {
9921				contents.wrapAll( html );
9922
9923			} else {
9924				self.append( html );
9925			}
9926		} );
9927	},
9928
9929	wrap: function( html ) {
9930		var htmlIsFunction = isFunction( html );
9931
9932		return this.each( function( i ) {
9933			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
9934		} );
9935	},
9936
9937	unwrap: function( selector ) {
9938		this.parent( selector ).not( "body" ).each( function() {
9939			jQuery( this ).replaceWith( this.childNodes );
9940		} );
9941		return this;
9942	}
9943} );
9944
9945
9946jQuery.expr.pseudos.hidden = function( elem ) {
9947	return !jQuery.expr.pseudos.visible( elem );
9948};
9949jQuery.expr.pseudos.visible = function( elem ) {
9950	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
9951};
9952
9953
9954
9955
9956jQuery.ajaxSettings.xhr = function() {
9957	try {
9958		return new window.XMLHttpRequest();
9959	} catch ( e ) {}
9960};
9961
9962var xhrSuccessStatus = {
9963
9964		// File protocol always yields status code 0, assume 200
9965		0: 200,
9966
9967		// Support: IE <=9 only
9968		// trac-1450: sometimes IE returns 1223 when it should be 204
9969		1223: 204
9970	},
9971	xhrSupported = jQuery.ajaxSettings.xhr();
9972
9973support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
9974support.ajax = xhrSupported = !!xhrSupported;
9975
9976jQuery.ajaxTransport( function( options ) {
9977	var callback, errorCallback;
9978
9979	// Cross domain only allowed if supported through XMLHttpRequest
9980	if ( support.cors || xhrSupported && !options.crossDomain ) {
9981		return {
9982			send: function( headers, complete ) {
9983				var i,
9984					xhr = options.xhr();
9985
9986				xhr.open(
9987					options.type,
9988					options.url,
9989					options.async,
9990					options.username,
9991					options.password
9992				);
9993
9994				// Apply custom fields if provided
9995				if ( options.xhrFields ) {
9996					for ( i in options.xhrFields ) {
9997						xhr[ i ] = options.xhrFields[ i ];
9998					}
9999				}
10000
10001				// Override mime type if needed
10002				if ( options.mimeType && xhr.overrideMimeType ) {
10003					xhr.overrideMimeType( options.mimeType );
10004				}
10005
10006				// X-Requested-With header
10007				// For cross-domain requests, seeing as conditions for a preflight are
10008				// akin to a jigsaw puzzle, we simply never set it to be sure.
10009				// (it can always be set on a per-request basis or even using ajaxSetup)
10010				// For same-domain requests, won't change header if already provided.
10011				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
10012					headers[ "X-Requested-With" ] = "XMLHttpRequest";
10013				}
10014
10015				// Set headers
10016				for ( i in headers ) {
10017					xhr.setRequestHeader( i, headers[ i ] );
10018				}
10019
10020				// Callback
10021				callback = function( type ) {
10022					return function() {
10023						if ( callback ) {
10024							callback = errorCallback = xhr.onload =
10025								xhr.onerror = xhr.onabort = xhr.ontimeout =
10026									xhr.onreadystatechange = null;
10027
10028							if ( type === "abort" ) {
10029								xhr.abort();
10030							} else if ( type === "error" ) {
10031
10032								// Support: IE <=9 only
10033								// On a manual native abort, IE9 throws
10034								// errors on any property access that is not readyState
10035								if ( typeof xhr.status !== "number" ) {
10036									complete( 0, "error" );
10037								} else {
10038									complete(
10039
10040										// File: protocol always yields status 0; see trac-8605, trac-14207
10041										xhr.status,
10042										xhr.statusText
10043									);
10044								}
10045							} else {
10046								complete(
10047									xhrSuccessStatus[ xhr.status ] || xhr.status,
10048									xhr.statusText,
10049
10050									// Support: IE <=9 only
10051									// IE9 has no XHR2 but throws on binary (trac-11426)
10052									// For XHR2 non-text, let the caller handle it (gh-2498)
10053									( xhr.responseType || "text" ) !== "text"  ||
10054									typeof xhr.responseText !== "string" ?
10055										{ binary: xhr.response } :
10056										{ text: xhr.responseText },
10057									xhr.getAllResponseHeaders()
10058								);
10059							}
10060						}
10061					};
10062				};
10063
10064				// Listen to events
10065				xhr.onload = callback();
10066				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
10067
10068				// Support: IE 9 only
10069				// Use onreadystatechange to replace onabort
10070				// to handle uncaught aborts
10071				if ( xhr.onabort !== undefined ) {
10072					xhr.onabort = errorCallback;
10073				} else {
10074					xhr.onreadystatechange = function() {
10075
10076						// Check readyState before timeout as it changes
10077						if ( xhr.readyState === 4 ) {
10078
10079							// Allow onerror to be called first,
10080							// but that will not handle a native abort
10081							// Also, save errorCallback to a variable
10082							// as xhr.onerror cannot be accessed
10083							window.setTimeout( function() {
10084								if ( callback ) {
10085									errorCallback();
10086								}
10087							} );
10088						}
10089					};
10090				}
10091
10092				// Create the abort callback
10093				callback = callback( "abort" );
10094
10095				try {
10096
10097					// Do send the request (this may raise an exception)
10098					xhr.send( options.hasContent && options.data || null );
10099				} catch ( e ) {
10100
10101					// trac-14683: Only rethrow if this hasn't been notified as an error yet
10102					if ( callback ) {
10103						throw e;
10104					}
10105				}
10106			},
10107
10108			abort: function() {
10109				if ( callback ) {
10110					callback();
10111				}
10112			}
10113		};
10114	}
10115} );
10116
10117
10118
10119
10120// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
10121jQuery.ajaxPrefilter( function( s ) {
10122	if ( s.crossDomain ) {
10123		s.contents.script = false;
10124	}
10125} );
10126
10127// Install script dataType
10128jQuery.ajaxSetup( {
10129	accepts: {
10130		script: "text/javascript, application/javascript, " +
10131			"application/ecmascript, application/x-ecmascript"
10132	},
10133	contents: {
10134		script: /\b(?:java|ecma)script\b/
10135	},
10136	converters: {
10137		"text script": function( text ) {
10138			jQuery.globalEval( text );
10139			return text;
10140		}
10141	}
10142} );
10143
10144// Handle cache's special case and crossDomain
10145jQuery.ajaxPrefilter( "script", function( s ) {
10146	if ( s.cache === undefined ) {
10147		s.cache = false;
10148	}
10149	if ( s.crossDomain ) {
10150		s.type = "GET";
10151	}
10152} );
10153
10154// Bind script tag hack transport
10155jQuery.ajaxTransport( "script", function( s ) {
10156
10157	// This transport only deals with cross domain or forced-by-attrs requests
10158	if ( s.crossDomain || s.scriptAttrs ) {
10159		var script, callback;
10160		return {
10161			send: function( _, complete ) {
10162				script = jQuery( "<script>" )
10163					.attr( s.scriptAttrs || {} )
10164					.prop( { charset: s.scriptCharset, src: s.url } )
10165					.on( "load error", callback = function( evt ) {
10166						script.remove();
10167						callback = null;
10168						if ( evt ) {
10169							complete( evt.type === "error" ? 404 : 200, evt.type );
10170						}
10171					} );
10172
10173				// Use native DOM manipulation to avoid our domManip AJAX trickery
10174				document.head.appendChild( script[ 0 ] );
10175			},
10176			abort: function() {
10177				if ( callback ) {
10178					callback();
10179				}
10180			}
10181		};
10182	}
10183} );
10184
10185
10186
10187
10188var oldCallbacks = [],
10189	rjsonp = /(=)\?(?=&|$)|\?\?/;
10190
10191// Default jsonp settings
10192jQuery.ajaxSetup( {
10193	jsonp: "callback",
10194	jsonpCallback: function() {
10195		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
10196		this[ callback ] = true;
10197		return callback;
10198	}
10199} );
10200
10201// Detect, normalize options and install callbacks for jsonp requests
10202jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
10203
10204	var callbackName, overwritten, responseContainer,
10205		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
10206			"url" :
10207			typeof s.data === "string" &&
10208				( s.contentType || "" )
10209					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
10210				rjsonp.test( s.data ) && "data"
10211		);
10212
10213	// Handle iff the expected data type is "jsonp" or we have a parameter to set
10214	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
10215
10216		// Get callback name, remembering preexisting value associated with it
10217		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
10218			s.jsonpCallback() :
10219			s.jsonpCallback;
10220
10221		// Insert callback into url or form data
10222		if ( jsonProp ) {
10223			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
10224		} else if ( s.jsonp !== false ) {
10225			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
10226		}
10227
10228		// Use data converter to retrieve json after script execution
10229		s.converters[ "script json" ] = function() {
10230			if ( !responseContainer ) {
10231				jQuery.error( callbackName + " was not called" );
10232			}
10233			return responseContainer[ 0 ];
10234		};
10235
10236		// Force json dataType
10237		s.dataTypes[ 0 ] = "json";
10238
10239		// Install callback
10240		overwritten = window[ callbackName ];
10241		window[ callbackName ] = function() {
10242			responseContainer = arguments;
10243		};
10244
10245		// Clean-up function (fires after converters)
10246		jqXHR.always( function() {
10247
10248			// If previous value didn't exist - remove it
10249			if ( overwritten === undefined ) {
10250				jQuery( window ).removeProp( callbackName );
10251
10252			// Otherwise restore preexisting value
10253			} else {
10254				window[ callbackName ] = overwritten;
10255			}
10256
10257			// Save back as free
10258			if ( s[ callbackName ] ) {
10259
10260				// Make sure that re-using the options doesn't screw things around
10261				s.jsonpCallback = originalSettings.jsonpCallback;
10262
10263				// Save the callback name for future use
10264				oldCallbacks.push( callbackName );
10265			}
10266
10267			// Call if it was a function and we have a response
10268			if ( responseContainer && isFunction( overwritten ) ) {
10269				overwritten( responseContainer[ 0 ] );
10270			}
10271
10272			responseContainer = overwritten = undefined;
10273		} );
10274
10275		// Delegate to script
10276		return "script";
10277	}
10278} );
10279
10280
10281
10282
10283// Support: Safari 8 only
10284// In Safari 8 documents created via document.implementation.createHTMLDocument
10285// collapse sibling forms: the second one becomes a child of the first one.
10286// Because of that, this security measure has to be disabled in Safari 8.
10287// https://bugs.webkit.org/show_bug.cgi?id=137337
10288support.createHTMLDocument = ( function() {
10289	var body = document.implementation.createHTMLDocument( "" ).body;
10290	body.innerHTML = "<form></form><form></form>";
10291	return body.childNodes.length === 2;
10292} )();
10293
10294
10295// Argument "data" should be string of html
10296// context (optional): If specified, the fragment will be created in this context,
10297// defaults to document
10298// keepScripts (optional): If true, will include scripts passed in the html string
10299jQuery.parseHTML = function( data, context, keepScripts ) {
10300	if ( typeof data !== "string" ) {
10301		return [];
10302	}
10303	if ( typeof context === "boolean" ) {
10304		keepScripts = context;
10305		context = false;
10306	}
10307
10308	var base, parsed, scripts;
10309
10310	if ( !context ) {
10311
10312		// Stop scripts or inline event handlers from being executed immediately
10313		// by using document.implementation
10314		if ( support.createHTMLDocument ) {
10315			context = document.implementation.createHTMLDocument( "" );
10316
10317			// Set the base href for the created document
10318			// so any parsed elements with URLs
10319			// are based on the document's URL (gh-2965)
10320			base = context.createElement( "base" );
10321			base.href = document.location.href;
10322			context.head.appendChild( base );
10323		} else {
10324			context = document;
10325		}
10326	}
10327
10328	parsed = rsingleTag.exec( data );
10329	scripts = !keepScripts && [];
10330
10331	// Single tag
10332	if ( parsed ) {
10333		return [ context.createElement( parsed[ 1 ] ) ];
10334	}
10335
10336	parsed = buildFragment( [ data ], context, scripts );
10337
10338	if ( scripts && scripts.length ) {
10339		jQuery( scripts ).remove();
10340	}
10341
10342	return jQuery.merge( [], parsed.childNodes );
10343};
10344
10345
10346/**
10347 * Load a url into a page
10348 */
10349jQuery.fn.load = function( url, params, callback ) {
10350	var selector, type, response,
10351		self = this,
10352		off = url.indexOf( " " );
10353
10354	if ( off > -1 ) {
10355		selector = stripAndCollapse( url.slice( off ) );
10356		url = url.slice( 0, off );
10357	}
10358
10359	// If it's a function
10360	if ( isFunction( params ) ) {
10361
10362		// We assume that it's the callback
10363		callback = params;
10364		params = undefined;
10365
10366	// Otherwise, build a param string
10367	} else if ( params && typeof params === "object" ) {
10368		type = "POST";
10369	}
10370
10371	// If we have elements to modify, make the request
10372	if ( self.length > 0 ) {
10373		jQuery.ajax( {
10374			url: url,
10375
10376			// If "type" variable is undefined, then "GET" method will be used.
10377			// Make value of this field explicit since
10378			// user can override it through ajaxSetup method
10379			type: type || "GET",
10380			dataType: "html",
10381			data: params
10382		} ).done( function( responseText ) {
10383
10384			// Save response for use in complete callback
10385			response = arguments;
10386
10387			self.html( selector ?
10388
10389				// If a selector was specified, locate the right elements in a dummy div
10390				// Exclude scripts to avoid IE 'Permission Denied' errors
10391				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
10392
10393				// Otherwise use the full result
10394				responseText );
10395
10396		// If the request succeeds, this function gets "data", "status", "jqXHR"
10397		// but they are ignored because response was set above.
10398		// If it fails, this function gets "jqXHR", "status", "error"
10399		} ).always( callback && function( jqXHR, status ) {
10400			self.each( function() {
10401				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
10402			} );
10403		} );
10404	}
10405
10406	return this;
10407};
10408
10409
10410
10411
10412jQuery.expr.pseudos.animated = function( elem ) {
10413	return jQuery.grep( jQuery.timers, function( fn ) {
10414		return elem === fn.elem;
10415	} ).length;
10416};
10417
10418
10419
10420
10421jQuery.offset = {
10422	setOffset: function( elem, options, i ) {
10423		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
10424			position = jQuery.css( elem, "position" ),
10425			curElem = jQuery( elem ),
10426			props = {};
10427
10428		// Set position first, in-case top/left are set even on static elem
10429		if ( position === "static" ) {
10430			elem.style.position = "relative";
10431		}
10432
10433		curOffset = curElem.offset();
10434		curCSSTop = jQuery.css( elem, "top" );
10435		curCSSLeft = jQuery.css( elem, "left" );
10436		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
10437			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
10438
10439		// Need to be able to calculate position if either
10440		// top or left is auto and position is either absolute or fixed
10441		if ( calculatePosition ) {
10442			curPosition = curElem.position();
10443			curTop = curPosition.top;
10444			curLeft = curPosition.left;
10445
10446		} else {
10447			curTop = parseFloat( curCSSTop ) || 0;
10448			curLeft = parseFloat( curCSSLeft ) || 0;
10449		}
10450
10451		if ( isFunction( options ) ) {
10452
10453			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
10454			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
10455		}
10456
10457		if ( options.top != null ) {
10458			props.top = ( options.top - curOffset.top ) + curTop;
10459		}
10460		if ( options.left != null ) {
10461			props.left = ( options.left - curOffset.left ) + curLeft;
10462		}
10463
10464		if ( "using" in options ) {
10465			options.using.call( elem, props );
10466
10467		} else {
10468			curElem.css( props );
10469		}
10470	}
10471};
10472
10473jQuery.fn.extend( {
10474
10475	// offset() relates an element's border box to the document origin
10476	offset: function( options ) {
10477
10478		// Preserve chaining for setter
10479		if ( arguments.length ) {
10480			return options === undefined ?
10481				this :
10482				this.each( function( i ) {
10483					jQuery.offset.setOffset( this, options, i );
10484				} );
10485		}
10486
10487		var rect, win,
10488			elem = this[ 0 ];
10489
10490		if ( !elem ) {
10491			return;
10492		}
10493
10494		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
10495		// Support: IE <=11 only
10496		// Running getBoundingClientRect on a
10497		// disconnected node in IE throws an error
10498		if ( !elem.getClientRects().length ) {
10499			return { top: 0, left: 0 };
10500		}
10501
10502		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
10503		rect = elem.getBoundingClientRect();
10504		win = elem.ownerDocument.defaultView;
10505		return {
10506			top: rect.top + win.pageYOffset,
10507			left: rect.left + win.pageXOffset
10508		};
10509	},
10510
10511	// position() relates an element's margin box to its offset parent's padding box
10512	// This corresponds to the behavior of CSS absolute positioning
10513	position: function() {
10514		if ( !this[ 0 ] ) {
10515			return;
10516		}
10517
10518		var offsetParent, offset, doc,
10519			elem = this[ 0 ],
10520			parentOffset = { top: 0, left: 0 };
10521
10522		// position:fixed elements are offset from the viewport, which itself always has zero offset
10523		if ( jQuery.css( elem, "position" ) === "fixed" ) {
10524
10525			// Assume position:fixed implies availability of getBoundingClientRect
10526			offset = elem.getBoundingClientRect();
10527
10528		} else {
10529			offset = this.offset();
10530
10531			// Account for the *real* offset parent, which can be the document or its root element
10532			// when a statically positioned element is identified
10533			doc = elem.ownerDocument;
10534			offsetParent = elem.offsetParent || doc.documentElement;
10535			while ( offsetParent &&
10536				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
10537				jQuery.css( offsetParent, "position" ) === "static" ) {
10538
10539				offsetParent = offsetParent.parentNode;
10540			}
10541			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
10542
10543				// Incorporate borders into its offset, since they are outside its content origin
10544				parentOffset = jQuery( offsetParent ).offset();
10545				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
10546				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
10547			}
10548		}
10549
10550		// Subtract parent offsets and element margins
10551		return {
10552			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
10553			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
10554		};
10555	},
10556
10557	// This method will return documentElement in the following cases:
10558	// 1) For the element inside the iframe without offsetParent, this method will return
10559	//    documentElement of the parent window
10560	// 2) For the hidden or detached element
10561	// 3) For body or html element, i.e. in case of the html node - it will return itself
10562	//
10563	// but those exceptions were never presented as a real life use-cases
10564	// and might be considered as more preferable results.
10565	//
10566	// This logic, however, is not guaranteed and can change at any point in the future
10567	offsetParent: function() {
10568		return this.map( function() {
10569			var offsetParent = this.offsetParent;
10570
10571			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
10572				offsetParent = offsetParent.offsetParent;
10573			}
10574
10575			return offsetParent || documentElement;
10576		} );
10577	}
10578} );
10579
10580// Create scrollLeft and scrollTop methods
10581jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
10582	var top = "pageYOffset" === prop;
10583
10584	jQuery.fn[ method ] = function( val ) {
10585		return access( this, function( elem, method, val ) {
10586
10587			// Coalesce documents and windows
10588			var win;
10589			if ( isWindow( elem ) ) {
10590				win = elem;
10591			} else if ( elem.nodeType === 9 ) {
10592				win = elem.defaultView;
10593			}
10594
10595			if ( val === undefined ) {
10596				return win ? win[ prop ] : elem[ method ];
10597			}
10598
10599			if ( win ) {
10600				win.scrollTo(
10601					!top ? val : win.pageXOffset,
10602					top ? val : win.pageYOffset
10603				);
10604
10605			} else {
10606				elem[ method ] = val;
10607			}
10608		}, method, val, arguments.length );
10609	};
10610} );
10611
10612// Support: Safari <=7 - 9.1, Chrome <=37 - 49
10613// Add the top/left cssHooks using jQuery.fn.position
10614// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
10615// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
10616// getComputedStyle returns percent when specified for top/left/bottom/right;
10617// rather than make the css module depend on the offset module, just check for it here
10618jQuery.each( [ "top", "left" ], function( _i, prop ) {
10619	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
10620		function( elem, computed ) {
10621			if ( computed ) {
10622				computed = curCSS( elem, prop );
10623
10624				// If curCSS returns percentage, fallback to offset
10625				return rnumnonpx.test( computed ) ?
10626					jQuery( elem ).position()[ prop ] + "px" :
10627					computed;
10628			}
10629		}
10630	);
10631} );
10632
10633
10634// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
10635jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
10636	jQuery.each( {
10637		padding: "inner" + name,
10638		content: type,
10639		"": "outer" + name
10640	}, function( defaultExtra, funcName ) {
10641
10642		// Margin is only for outerHeight, outerWidth
10643		jQuery.fn[ funcName ] = function( margin, value ) {
10644			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
10645				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
10646
10647			return access( this, function( elem, type, value ) {
10648				var doc;
10649
10650				if ( isWindow( elem ) ) {
10651
10652					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
10653					return funcName.indexOf( "outer" ) === 0 ?
10654						elem[ "inner" + name ] :
10655						elem.document.documentElement[ "client" + name ];
10656				}
10657
10658				// Get document width or height
10659				if ( elem.nodeType === 9 ) {
10660					doc = elem.documentElement;
10661
10662					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
10663					// whichever is greatest
10664					return Math.max(
10665						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
10666						elem.body[ "offset" + name ], doc[ "offset" + name ],
10667						doc[ "client" + name ]
10668					);
10669				}
10670
10671				return value === undefined ?
10672
10673					// Get width or height on the element, requesting but not forcing parseFloat
10674					jQuery.css( elem, type, extra ) :
10675
10676					// Set width or height on the element
10677					jQuery.style( elem, type, value, extra );
10678			}, type, chainable ? margin : undefined, chainable );
10679		};
10680	} );
10681} );
10682
10683
10684jQuery.each( [
10685	"ajaxStart",
10686	"ajaxStop",
10687	"ajaxComplete",
10688	"ajaxError",
10689	"ajaxSuccess",
10690	"ajaxSend"
10691], function( _i, type ) {
10692	jQuery.fn[ type ] = function( fn ) {
10693		return this.on( type, fn );
10694	};
10695} );
10696
10697
10698
10699
10700jQuery.fn.extend( {
10701
10702	bind: function( types, data, fn ) {
10703		return this.on( types, null, data, fn );
10704	},
10705	unbind: function( types, fn ) {
10706		return this.off( types, null, fn );
10707	},
10708
10709	delegate: function( selector, types, data, fn ) {
10710		return this.on( types, selector, data, fn );
10711	},
10712	undelegate: function( selector, types, fn ) {
10713
10714		// ( namespace ) or ( selector, types [, fn] )
10715		return arguments.length === 1 ?
10716			this.off( selector, "**" ) :
10717			this.off( types, selector || "**", fn );
10718	},
10719
10720	hover: function( fnOver, fnOut ) {
10721		return this
10722			.on( "mouseenter", fnOver )
10723			.on( "mouseleave", fnOut || fnOver );
10724	}
10725} );
10726
10727jQuery.each(
10728	( "blur focus focusin focusout resize scroll click dblclick " +
10729	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
10730	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
10731	function( _i, name ) {
10732
10733		// Handle event binding
10734		jQuery.fn[ name ] = function( data, fn ) {
10735			return arguments.length > 0 ?
10736				this.on( name, null, data, fn ) :
10737				this.trigger( name );
10738		};
10739	}
10740);
10741
10742
10743
10744
10745// Support: Android <=4.0 only
10746// Make sure we trim BOM and NBSP
10747// Require that the "whitespace run" starts from a non-whitespace
10748// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
10749var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
10750
10751// Bind a function to a context, optionally partially applying any
10752// arguments.
10753// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
10754// However, it is not slated for removal any time soon
10755jQuery.proxy = function( fn, context ) {
10756	var tmp, args, proxy;
10757
10758	if ( typeof context === "string" ) {
10759		tmp = fn[ context ];
10760		context = fn;
10761		fn = tmp;
10762	}
10763
10764	// Quick check to determine if target is callable, in the spec
10765	// this throws a TypeError, but we will just return undefined.
10766	if ( !isFunction( fn ) ) {
10767		return undefined;
10768	}
10769
10770	// Simulated bind
10771	args = slice.call( arguments, 2 );
10772	proxy = function() {
10773		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
10774	};
10775
10776	// Set the guid of unique handler to the same of original handler, so it can be removed
10777	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
10778
10779	return proxy;
10780};
10781
10782jQuery.holdReady = function( hold ) {
10783	if ( hold ) {
10784		jQuery.readyWait++;
10785	} else {
10786		jQuery.ready( true );
10787	}
10788};
10789jQuery.isArray = Array.isArray;
10790jQuery.parseJSON = JSON.parse;
10791jQuery.nodeName = nodeName;
10792jQuery.isFunction = isFunction;
10793jQuery.isWindow = isWindow;
10794jQuery.camelCase = camelCase;
10795jQuery.type = toType;
10796
10797jQuery.now = Date.now;
10798
10799jQuery.isNumeric = function( obj ) {
10800
10801	// As of jQuery 3.0, isNumeric is limited to
10802	// strings and numbers (primitives or objects)
10803	// that can be coerced to finite numbers (gh-2662)
10804	var type = jQuery.type( obj );
10805	return ( type === "number" || type === "string" ) &&
10806
10807		// parseFloat NaNs numeric-cast false positives ("")
10808		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
10809		// subtraction forces infinities to NaN
10810		!isNaN( obj - parseFloat( obj ) );
10811};
10812
10813jQuery.trim = function( text ) {
10814	return text == null ?
10815		"" :
10816		( text + "" ).replace( rtrim, "$1" );
10817};
10818
10819
10820
10821// Register as a named AMD module, since jQuery can be concatenated with other
10822// files that may use define, but not via a proper concatenation script that
10823// understands anonymous AMD modules. A named AMD is safest and most robust
10824// way to register. Lowercase jquery is used because AMD module names are
10825// derived from file names, and jQuery is normally delivered in a lowercase
10826// file name. Do this after creating the global so that if an AMD module wants
10827// to call noConflict to hide this version of jQuery, it will work.
10828
10829// Note that for maximum portability, libraries that are not jQuery should
10830// declare themselves as anonymous modules, and avoid setting a global if an
10831// AMD loader is present. jQuery is a special case. For more information, see
10832// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
10833
10834if ( true ) {
10835	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
10836		return jQuery;
10837	}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10838		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10839}
10840
10841
10842
10843
10844var
10845
10846	// Map over jQuery in case of overwrite
10847	_jQuery = window.jQuery,
10848
10849	// Map over the $ in case of overwrite
10850	_$ = window.$;
10851
10852jQuery.noConflict = function( deep ) {
10853	if ( window.$ === jQuery ) {
10854		window.$ = _$;
10855	}
10856
10857	if ( deep && window.jQuery === jQuery ) {
10858		window.jQuery = _jQuery;
10859	}
10860
10861	return jQuery;
10862};
10863
10864// Expose jQuery and $ identifiers, even in AMD
10865// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
10866// and CommonJS for browser emulators (trac-13566)
10867if ( typeof noGlobal === "undefined" ) {
10868	window.jQuery = window.$ = jQuery;
10869}
10870
10871
10872
10873
10874return jQuery;
10875} );
10876
10877
10878/***/ }),
10879
vendor: 813 bytes, lines 10880-10901
10880/***/ "./node_modules/core-js/internals/a-callable.js":
10881/*!******************************************************!*\
10882  !*** ./node_modules/core-js/internals/a-callable.js ***!
10883  \******************************************************/
10884/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10885
10886"use strict";
10887
10888var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
10889var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js");
10890
10891var $TypeError = TypeError;
10892
10893// `Assert: IsCallable(argument) is true`
10894module.exports = function (argument) {
10895  if (isCallable(argument)) return argument;
10896  throw new $TypeError(tryToString(argument) + ' is not a function');
10897};
10898
10899
10900/***/ }),
10901
vendor: 1,246 bytes, lines 10902-10933
10902/***/ "./node_modules/core-js/internals/add-to-unscopables.js":
10903/*!**************************************************************!*\
10904  !*** ./node_modules/core-js/internals/add-to-unscopables.js ***!
10905  \**************************************************************/
10906/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10907
10908"use strict";
10909
10910var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
10911var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
10912var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f);
10913
10914var UNSCOPABLES = wellKnownSymbol('unscopables');
10915var ArrayPrototype = Array.prototype;
10916
10917// Array.prototype[@@unscopables]
10918// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
10919if (ArrayPrototype[UNSCOPABLES] === undefined) {
10920  defineProperty(ArrayPrototype, UNSCOPABLES, {
10921    configurable: true,
10922    value: create(null)
10923  });
10924}
10925
10926// add a key to Array.prototype[@@unscopables]
10927module.exports = function (key) {
10928  ArrayPrototype[UNSCOPABLES][key] = true;
10929};
10930
10931
10932/***/ }),
10933
vendor: 717 bytes, lines 10934-10952
10934/***/ "./node_modules/core-js/internals/advance-string-index.js":
10935/*!****************************************************************!*\
10936  !*** ./node_modules/core-js/internals/advance-string-index.js ***!
10937  \****************************************************************/
10938/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10939
10940"use strict";
10941
10942var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt);
10943
10944// `AdvanceStringIndex` abstract operation
10945// https://tc39.es/ecma262/#sec-advancestringindex
10946module.exports = function (S, index, unicode) {
10947  return index + (unicode ? charAt(S, index).length : 1);
10948};
10949
10950
10951/***/ }),
10952
vendor: 688 bytes, lines 10953-10974
10953/***/ "./node_modules/core-js/internals/an-object.js":
10954/*!*****************************************************!*\
10955  !*** ./node_modules/core-js/internals/an-object.js ***!
10956  \*****************************************************/
10957/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10958
10959"use strict";
10960
10961var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
10962
10963var $String = String;
10964var $TypeError = TypeError;
10965
10966// `Assert: Type(argument) is Object`
10967module.exports = function (argument) {
10968  if (isObject(argument)) return argument;
10969  throw new $TypeError($String(argument) + ' is not an object');
10970};
10971
10972
10973/***/ }),
10974
vendor: 1,894 bytes, lines 10975-11018
10975/***/ "./node_modules/core-js/internals/array-includes.js":
10976/*!**********************************************************!*\
10977  !*** ./node_modules/core-js/internals/array-includes.js ***!
10978  \**********************************************************/
10979/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
10980
10981"use strict";
10982
10983var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
10984var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
10985var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
10986
10987// `Array.prototype.{ indexOf, includes }` methods implementation
10988var createMethod = function (IS_INCLUDES) {
10989  return function ($this, el, fromIndex) {
10990    var O = toIndexedObject($this);
10991    var length = lengthOfArrayLike(O);
10992    var index = toAbsoluteIndex(fromIndex, length);
10993    var value;
10994    // Array#includes uses SameValueZero equality algorithm
10995    // eslint-disable-next-line no-self-compare -- NaN check
10996    if (IS_INCLUDES && el !== el) while (length > index) {
10997      value = O[index++];
10998      // eslint-disable-next-line no-self-compare -- NaN check
10999      if (value !== value) return true;
11000    // Array#indexOf ignores holes, Array#includes - not
11001    } else for (;length > index; index++) {
11002      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
11003    } return !IS_INCLUDES && -1;
11004  };
11005};
11006
11007module.exports = {
11008  // `Array.prototype.includes` method
11009  // https://tc39.es/ecma262/#sec-array.prototype.includes
11010  includes: createMethod(true),
11011  // `Array.prototype.indexOf` method
11012  // https://tc39.es/ecma262/#sec-array.prototype.indexof
11013  indexOf: createMethod(false)
11014};
11015
11016
11017/***/ }),
11018
vendor: 3,714 bytes, lines 11019-11103
11019/***/ "./node_modules/core-js/internals/array-iteration.js":
11020/*!***********************************************************!*\
11021  !*** ./node_modules/core-js/internals/array-iteration.js ***!
11022  \***********************************************************/
11023/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11024
11025"use strict";
11026
11027var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js");
11028var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
11029var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
11030var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
11031var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
11032var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js");
11033
11034var push = uncurryThis([].push);
11035
11036// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
11037var createMethod = function (TYPE) {
11038  var IS_MAP = TYPE === 1;
11039  var IS_FILTER = TYPE === 2;
11040  var IS_SOME = TYPE === 3;
11041  var IS_EVERY = TYPE === 4;
11042  var IS_FIND_INDEX = TYPE === 6;
11043  var IS_FILTER_REJECT = TYPE === 7;
11044  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;
11045  return function ($this, callbackfn, that, specificCreate) {
11046    var O = toObject($this);
11047    var self = IndexedObject(O);
11048    var length = lengthOfArrayLike(self);
11049    var boundFunction = bind(callbackfn, that);
11050    var index = 0;
11051    var create = specificCreate || arraySpeciesCreate;
11052    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
11053    var value, result;
11054    for (;length > index; index++) if (NO_HOLES || index in self) {
11055      value = self[index];
11056      result = boundFunction(value, index, O);
11057      if (TYPE) {
11058        if (IS_MAP) target[index] = result; // map
11059        else if (result) switch (TYPE) {
11060          case 3: return true;              // some
11061          case 5: return value;             // find
11062          case 6: return index;             // findIndex
11063          case 2: push(target, value);      // filter
11064        } else switch (TYPE) {
11065          case 4: return false;             // every
11066          case 7: push(target, value);      // filterReject
11067        }
11068      }
11069    }
11070    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
11071  };
11072};
11073
11074module.exports = {
11075  // `Array.prototype.forEach` method
11076  // https://tc39.es/ecma262/#sec-array.prototype.foreach
11077  forEach: createMethod(0),
11078  // `Array.prototype.map` method
11079  // https://tc39.es/ecma262/#sec-array.prototype.map
11080  map: createMethod(1),
11081  // `Array.prototype.filter` method
11082  // https://tc39.es/ecma262/#sec-array.prototype.filter
11083  filter: createMethod(2),
11084  // `Array.prototype.some` method
11085  // https://tc39.es/ecma262/#sec-array.prototype.some
11086  some: createMethod(3),
11087  // `Array.prototype.every` method
11088  // https://tc39.es/ecma262/#sec-array.prototype.every
11089  every: createMethod(4),
11090  // `Array.prototype.find` method
11091  // https://tc39.es/ecma262/#sec-array.prototype.find
11092  find: createMethod(5),
11093  // `Array.prototype.findIndex` method
11094  // https://tc39.es/ecma262/#sec-array.prototype.findIndex
11095  findIndex: createMethod(6),
11096  // `Array.prototype.filterReject` method
11097  // https://github.com/tc39/proposal-array-filtering
11098  filterReject: createMethod(7)
11099};
11100
11101
11102/***/ }),
11103
vendor: 1,428 bytes, lines 11104-11137
11104/***/ "./node_modules/core-js/internals/array-species-constructor.js":
11105/*!*********************************************************************!*\
11106  !*** ./node_modules/core-js/internals/array-species-constructor.js ***!
11107  \*********************************************************************/
11108/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11109
11110"use strict";
11111
11112var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js");
11113var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js");
11114var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
11115var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
11116
11117var SPECIES = wellKnownSymbol('species');
11118var $Array = Array;
11119
11120// a part of `ArraySpeciesCreate` abstract operation
11121// https://tc39.es/ecma262/#sec-arrayspeciescreate
11122module.exports = function (originalArray) {
11123  var C;
11124  if (isArray(originalArray)) {
11125    C = originalArray.constructor;
11126    // cross-realm fallback
11127    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
11128    else if (isObject(C)) {
11129      C = C[SPECIES];
11130      if (C === null) C = undefined;
11131    }
11132  } return C === undefined ? $Array : C;
11133};
11134
11135
11136/***/ }),
11137
vendor: 771 bytes, lines 11138-11156
11138/***/ "./node_modules/core-js/internals/array-species-create.js":
11139/*!****************************************************************!*\
11140  !*** ./node_modules/core-js/internals/array-species-create.js ***!
11141  \****************************************************************/
11142/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11143
11144"use strict";
11145
11146var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js/internals/array-species-constructor.js");
11147
11148// `ArraySpeciesCreate` abstract operation
11149// https://tc39.es/ecma262/#sec-arrayspeciescreate
11150module.exports = function (originalArray, length) {
11151  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
11152};
11153
11154
11155/***/ }),
11156
vendor: 646 bytes, lines 11157-11176
11157/***/ "./node_modules/core-js/internals/classof-raw.js":
11158/*!*******************************************************!*\
11159  !*** ./node_modules/core-js/internals/classof-raw.js ***!
11160  \*******************************************************/
11161/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11162
11163"use strict";
11164
11165var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
11166
11167var toString = uncurryThis({}.toString);
11168var stringSlice = uncurryThis(''.slice);
11169
11170module.exports = function (it) {
11171  return stringSlice(toString(it), 8, -1);
11172};
11173
11174
11175/***/ }),
11176
vendor: 1,689 bytes, lines 11177-11217
11177/***/ "./node_modules/core-js/internals/classof.js":
11178/*!***************************************************!*\
11179  !*** ./node_modules/core-js/internals/classof.js ***!
11180  \***************************************************/
11181/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11182
11183"use strict";
11184
11185var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
11186var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
11187var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
11188var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
11189
11190var TO_STRING_TAG = wellKnownSymbol('toStringTag');
11191var $Object = Object;
11192
11193// ES3 wrong here
11194var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';
11195
11196// fallback for IE11 Script Access Denied error
11197var tryGet = function (it, key) {
11198  try {
11199    return it[key];
11200  } catch (error) { /* empty */ }
11201};
11202
11203// getting tag from ES6+ `Object.prototype.toString`
11204module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
11205  var O, tag, result;
11206  return it === undefined ? 'Undefined' : it === null ? 'Null'
11207    // @@toStringTag case
11208    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag
11209    // builtinTag case
11210    : CORRECT_ARGUMENTS ? classofRaw(O)
11211    // ES3 arguments fallback
11212    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;
11213};
11214
11215
11216/***/ }),
11217
vendor: 1,414 bytes, lines 11218-11245
11218/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
11219/*!***********************************************************************!*\
11220  !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
11221  \***********************************************************************/
11222/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11223
11224"use strict";
11225
11226var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
11227var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
11228var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
11229var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
11230
11231module.exports = function (target, source, exceptions) {
11232  var keys = ownKeys(source);
11233  var defineProperty = definePropertyModule.f;
11234  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
11235  for (var i = 0; i < keys.length; i++) {
11236    var key = keys[i];
11237    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
11238      defineProperty(target, key, getOwnPropertyDescriptor(source, key));
11239    }
11240  }
11241};
11242
11243
11244/***/ }),
11245
vendor: 1,082 bytes, lines 11246-11267
11246/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js":
11247/*!**************************************************************************!*\
11248  !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***!
11249  \**************************************************************************/
11250/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11251
11252"use strict";
11253
11254var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
11255var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
11256var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
11257
11258module.exports = DESCRIPTORS ? function (object, key, value) {
11259  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
11260} : function (object, key, value) {
11261  object[key] = value;
11262  return object;
11263};
11264
11265
11266/***/ }),
11267
vendor: 527 bytes, lines 11268-11287
11268/***/ "./node_modules/core-js/internals/create-property-descriptor.js":
11269/*!**********************************************************************!*\
11270  !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
11271  \**********************************************************************/
11272/***/ (function(module) {
11273
11274"use strict";
11275
11276module.exports = function (bitmap, value) {
11277  return {
11278    enumerable: !(bitmap & 1),
11279    configurable: !(bitmap & 2),
11280    writable: !(bitmap & 4),
11281    value: value
11282  };
11283};
11284
11285
11286/***/ }),
11287
vendor: 1,614 bytes, lines 11288-11326
11288/***/ "./node_modules/core-js/internals/define-built-in.js":
11289/*!***********************************************************!*\
11290  !*** ./node_modules/core-js/internals/define-built-in.js ***!
11291  \***********************************************************/
11292/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11293
11294"use strict";
11295
11296var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
11297var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
11298var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js");
11299var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
11300
11301module.exports = function (O, key, value, options) {
11302  if (!options) options = {};
11303  var simple = options.enumerable;
11304  var name = options.name !== undefined ? options.name : key;
11305  if (isCallable(value)) makeBuiltIn(value, name, options);
11306  if (options.global) {
11307    if (simple) O[key] = value;
11308    else defineGlobalProperty(key, value);
11309  } else {
11310    try {
11311      if (!options.unsafe) delete O[key];
11312      else if (O[key]) simple = true;
11313    } catch (error) { /* empty */ }
11314    if (simple) O[key] = value;
11315    else definePropertyModule.f(O, key, {
11316      value: value,
11317      enumerable: false,
11318      configurable: !options.nonConfigurable,
11319      writable: !options.nonWritable
11320    });
11321  } return O;
11322};
11323
11324
11325/***/ }),
11326
vendor: 804 bytes, lines 11327-11350
11327/***/ "./node_modules/core-js/internals/define-global-property.js":
11328/*!******************************************************************!*\
11329  !*** ./node_modules/core-js/internals/define-global-property.js ***!
11330  \******************************************************************/
11331/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11332
11333"use strict";
11334
11335var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
11336
11337// eslint-disable-next-line es/no-object-defineproperty -- safe
11338var defineProperty = Object.defineProperty;
11339
11340module.exports = function (key, value) {
11341  try {
11342    defineProperty(global, key, { value: value, configurable: true, writable: true });
11343  } catch (error) {
11344    global[key] = value;
11345  } return value;
11346};
11347
11348
11349/***/ }),
11350
vendor: 711 bytes, lines 11351-11369
11351/***/ "./node_modules/core-js/internals/descriptors.js":
11352/*!*******************************************************!*\
11353  !*** ./node_modules/core-js/internals/descriptors.js ***!
11354  \*******************************************************/
11355/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11356
11357"use strict";
11358
11359var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
11360
11361// Detect IE8's incomplete defineProperty implementation
11362module.exports = !fails(function () {
11363  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
11364  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
11365});
11366
11367
11368/***/ }),
11369
vendor: 856 bytes, lines 11370-11391
11370/***/ "./node_modules/core-js/internals/document-create-element.js":
11371/*!*******************************************************************!*\
11372  !*** ./node_modules/core-js/internals/document-create-element.js ***!
11373  \*******************************************************************/
11374/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11375
11376"use strict";
11377
11378var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
11379var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
11380
11381var document = global.document;
11382// typeof document.createElement is 'object' in old IE
11383var EXISTS = isObject(document) && isObject(document.createElement);
11384
11385module.exports = function (it) {
11386  return EXISTS ? document.createElement(it) : {};
11387};
11388
11389
11390/***/ }),
11391
vendor: 405 bytes, lines 11392-11404
11392/***/ "./node_modules/core-js/internals/engine-user-agent.js":
11393/*!*************************************************************!*\
11394  !*** ./node_modules/core-js/internals/engine-user-agent.js ***!
11395  \*************************************************************/
11396/***/ (function(module) {
11397
11398"use strict";
11399
11400module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';
11401
11402
11403/***/ }),
11404
vendor: 1,350 bytes, lines 11405-11443
11405/***/ "./node_modules/core-js/internals/engine-v8-version.js":
11406/*!*************************************************************!*\
11407  !*** ./node_modules/core-js/internals/engine-v8-version.js ***!
11408  \*************************************************************/
11409/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11410
11411"use strict";
11412
11413var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
11414var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ "./node_modules/core-js/internals/engine-user-agent.js");
11415
11416var process = global.process;
11417var Deno = global.Deno;
11418var versions = process && process.versions || Deno && Deno.version;
11419var v8 = versions && versions.v8;
11420var match, version;
11421
11422if (v8) {
11423  match = v8.split('.');
11424  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
11425  // but their correct versions are not interesting for us
11426  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
11427}
11428
11429// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
11430// so check `userAgent` even if `.v8` exists, but 0
11431if (!version && userAgent) {
11432  match = userAgent.match(/Edge\/(\d+)/);
11433  if (!match || match[1] >= 74) {
11434    match = userAgent.match(/Chrome\/(\d+)/);
11435    if (match) version = +match[1];
11436  }
11437}
11438
11439module.exports = version;
11440
11441
11442/***/ }),
11443
vendor: 480 bytes, lines 11444-11465
11444/***/ "./node_modules/core-js/internals/enum-bug-keys.js":
11445/*!*********************************************************!*\
11446  !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
11447  \*********************************************************/
11448/***/ (function(module) {
11449
11450"use strict";
11451
11452// IE8- don't enum bug keys
11453module.exports = [
11454  'constructor',
11455  'hasOwnProperty',
11456  'isPrototypeOf',
11457  'propertyIsEnumerable',
11458  'toLocaleString',
11459  'toString',
11460  'valueOf'
11461];
11462
11463
11464/***/ }),
11465
vendor: 3,537 bytes, lines 11466-11531
11466/***/ "./node_modules/core-js/internals/export.js":
11467/*!**************************************************!*\
11468  !*** ./node_modules/core-js/internals/export.js ***!
11469  \**************************************************/
11470/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11471
11472"use strict";
11473
11474var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
11475var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f);
11476var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
11477var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
11478var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
11479var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
11480var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
11481
11482/*
11483  options.target         - name of the target object
11484  options.global         - target is the global object
11485  options.stat           - export as static methods of target
11486  options.proto          - export as prototype methods of target
11487  options.real           - real prototype method for the `pure` version
11488  options.forced         - export even if the native feature is available
11489  options.bind           - bind methods to the target, required for the `pure` version
11490  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version
11491  options.unsafe         - use the simple assignment of property instead of delete + defineProperty
11492  options.sham           - add a flag to not completely full polyfills
11493  options.enumerable     - export as enumerable property
11494  options.dontCallGetSet - prevent calling a getter on target
11495  options.name           - the .name of the function if it does not match the key
11496*/
11497module.exports = function (options, source) {
11498  var TARGET = options.target;
11499  var GLOBAL = options.global;
11500  var STATIC = options.stat;
11501  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
11502  if (GLOBAL) {
11503    target = global;
11504  } else if (STATIC) {
11505    target = global[TARGET] || defineGlobalProperty(TARGET, {});
11506  } else {
11507    target = global[TARGET] && global[TARGET].prototype;
11508  }
11509  if (target) for (key in source) {
11510    sourceProperty = source[key];
11511    if (options.dontCallGetSet) {
11512      descriptor = getOwnPropertyDescriptor(target, key);
11513      targetProperty = descriptor && descriptor.value;
11514    } else targetProperty = target[key];
11515    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
11516    // contained in target
11517    if (!FORCED && targetProperty !== undefined) {
11518      if (typeof sourceProperty == typeof targetProperty) continue;
11519      copyConstructorProperties(sourceProperty, targetProperty);
11520    }
11521    // add a flag to not completely full polyfills
11522    if (options.sham || (targetProperty && targetProperty.sham)) {
11523      createNonEnumerableProperty(sourceProperty, 'sham', true);
11524    }
11525    defineBuiltIn(target, key, sourceProperty, options);
11526  }
11527};
11528
11529
11530/***/ }),
11531
vendor: 378 bytes, lines 11532-11550
11532/***/ "./node_modules/core-js/internals/fails.js":
11533/*!*************************************************!*\
11534  !*** ./node_modules/core-js/internals/fails.js ***!
11535  \*************************************************/
11536/***/ (function(module) {
11537
11538"use strict";
11539
11540module.exports = function (exec) {
11541  try {
11542    return !!exec();
11543  } catch (error) {
11544    return true;
11545  }
11546};
11547
11548
11549/***/ }),
11550
vendor: 3,603 bytes, lines 11551-11637
11551/***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":
11552/*!******************************************************************************!*\
11553  !*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***!
11554  \******************************************************************************/
11555/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11556
11557"use strict";
11558
11559// TODO: Remove from `core-js@4` since it's moved to entry points
11560__webpack_require__(/*! ../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js");
11561var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
11562var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
11563var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
11564var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
11565var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
11566var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
11567
11568var SPECIES = wellKnownSymbol('species');
11569var RegExpPrototype = RegExp.prototype;
11570
11571module.exports = function (KEY, exec, FORCED, SHAM) {
11572  var SYMBOL = wellKnownSymbol(KEY);
11573
11574  var DELEGATES_TO_SYMBOL = !fails(function () {
11575    // String methods call symbol-named RegExp methods
11576    var O = {};
11577    O[SYMBOL] = function () { return 7; };
11578    return ''[KEY](O) !== 7;
11579  });
11580
11581  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
11582    // Symbol-named RegExp methods call .exec
11583    var execCalled = false;
11584    var re = /a/;
11585
11586    if (KEY === 'split') {
11587      // We can't use real regex here since it causes deoptimization
11588      // and serious performance degradation in V8
11589      // https://github.com/zloirock/core-js/issues/306
11590      re = {};
11591      // RegExp[@@split] doesn't call the regex's exec method, but first creates
11592      // a new one. We need to return the patched regex when creating the new one.
11593      re.constructor = {};
11594      re.constructor[SPECIES] = function () { return re; };
11595      re.flags = '';
11596      re[SYMBOL] = /./[SYMBOL];
11597    }
11598
11599    re.exec = function () {
11600      execCalled = true;
11601      return null;
11602    };
11603
11604    re[SYMBOL]('');
11605    return !execCalled;
11606  });
11607
11608  if (
11609    !DELEGATES_TO_SYMBOL ||
11610    !DELEGATES_TO_EXEC ||
11611    FORCED
11612  ) {
11613    var nativeRegExpMethod = /./[SYMBOL];
11614    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
11615      var $exec = regexp.exec;
11616      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
11617        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
11618          // The native String method already delegates to @@method (this
11619          // polyfilled function), leasing to infinite recursion.
11620          // We avoid it by directly calling the native @@method method.
11621          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };
11622        }
11623        return { done: true, value: call(nativeMethod, str, regexp, arg2) };
11624      }
11625      return { done: false };
11626    });
11627
11628    defineBuiltIn(String.prototype, KEY, methods[0]);
11629    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
11630  }
11631
11632  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
11633};
11634
11635
11636/***/ }),
11637
vendor: 816 bytes, lines 11638-11659
11638/***/ "./node_modules/core-js/internals/function-apply.js":
11639/*!**********************************************************!*\
11640  !*** ./node_modules/core-js/internals/function-apply.js ***!
11641  \**********************************************************/
11642/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11643
11644"use strict";
11645
11646var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
11647
11648var FunctionPrototype = Function.prototype;
11649var apply = FunctionPrototype.apply;
11650var call = FunctionPrototype.call;
11651
11652// eslint-disable-next-line es/no-reflect -- safe
11653module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
11654  return call.apply(apply, arguments);
11655});
11656
11657
11658/***/ }),
11659
vendor: 1,071 bytes, lines 11660-11684
11660/***/ "./node_modules/core-js/internals/function-bind-context.js":
11661/*!*****************************************************************!*\
11662  !*** ./node_modules/core-js/internals/function-bind-context.js ***!
11663  \*****************************************************************/
11664/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11665
11666"use strict";
11667
11668var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js/internals/function-uncurry-this-clause.js");
11669var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js");
11670var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
11671
11672var bind = uncurryThis(uncurryThis.bind);
11673
11674// optional / simple context binding
11675module.exports = function (fn, that) {
11676  aCallable(fn);
11677  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {
11678    return fn.apply(that, arguments);
11679  };
11680};
11681
11682
11683/***/ }),
11684
vendor: 775 bytes, lines 11685-11704
11685/***/ "./node_modules/core-js/internals/function-bind-native.js":
11686/*!****************************************************************!*\
11687  !*** ./node_modules/core-js/internals/function-bind-native.js ***!
11688  \****************************************************************/
11689/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11690
11691"use strict";
11692
11693var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
11694
11695module.exports = !fails(function () {
11696  // eslint-disable-next-line es/no-function-prototype-bind -- safe
11697  var test = (function () { /* empty */ }).bind();
11698  // eslint-disable-next-line no-prototype-builtins -- safe
11699  return typeof test != 'function' || test.hasOwnProperty('prototype');
11700});
11701
11702
11703/***/ }),
11704
vendor: 631 bytes, lines 11705-11723
11705/***/ "./node_modules/core-js/internals/function-call.js":
11706/*!*********************************************************!*\
11707  !*** ./node_modules/core-js/internals/function-call.js ***!
11708  \*********************************************************/
11709/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11710
11711"use strict";
11712
11713var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
11714
11715var call = Function.prototype.call;
11716
11717module.exports = NATIVE_BIND ? call.bind(call) : function () {
11718  return call.apply(call, arguments);
11719};
11720
11721
11722/***/ }),
11723
vendor: 1,199 bytes, lines 11724-11752
11724/***/ "./node_modules/core-js/internals/function-name.js":
11725/*!*********************************************************!*\
11726  !*** ./node_modules/core-js/internals/function-name.js ***!
11727  \*********************************************************/
11728/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11729
11730"use strict";
11731
11732var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
11733var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
11734
11735var FunctionPrototype = Function.prototype;
11736// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
11737var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
11738
11739var EXISTS = hasOwn(FunctionPrototype, 'name');
11740// additional protection from minified / mangled / dropped function names
11741var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
11742var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
11743
11744module.exports = {
11745  EXISTS: EXISTS,
11746  PROPER: PROPER,
11747  CONFIGURABLE: CONFIGURABLE
11748};
11749
11750
11751/***/ }),
11752
vendor: 898 bytes, lines 11753-11773
11753/***/ "./node_modules/core-js/internals/function-uncurry-this-clause.js":
11754/*!************************************************************************!*\
11755  !*** ./node_modules/core-js/internals/function-uncurry-this-clause.js ***!
11756  \************************************************************************/
11757/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11758
11759"use strict";
11760
11761var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
11762var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
11763
11764module.exports = function (fn) {
11765  // Nashorn bug:
11766  //   https://github.com/zloirock/core-js/issues/1128
11767  //   https://github.com/zloirock/core-js/issues/1130
11768  if (classofRaw(fn) === 'Function') return uncurryThis(fn);
11769};
11770
11771
11772/***/ }),
11773
vendor: 822 bytes, lines 11774-11796
11774/***/ "./node_modules/core-js/internals/function-uncurry-this.js":
11775/*!*****************************************************************!*\
11776  !*** ./node_modules/core-js/internals/function-uncurry-this.js ***!
11777  \*****************************************************************/
11778/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11779
11780"use strict";
11781
11782var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
11783
11784var FunctionPrototype = Function.prototype;
11785var call = FunctionPrototype.call;
11786var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);
11787
11788module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {
11789  return function () {
11790    return call.apply(fn, arguments);
11791  };
11792};
11793
11794
11795/***/ }),
11796
vendor: 832 bytes, lines 11797-11818
11797/***/ "./node_modules/core-js/internals/get-built-in.js":
11798/*!********************************************************!*\
11799  !*** ./node_modules/core-js/internals/get-built-in.js ***!
11800  \********************************************************/
11801/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11802
11803"use strict";
11804
11805var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
11806var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
11807
11808var aFunction = function (argument) {
11809  return isCallable(argument) ? argument : undefined;
11810};
11811
11812module.exports = function (namespace, method) {
11813  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];
11814};
11815
11816
11817/***/ }),
11818
vendor: 799 bytes, lines 11819-11839
11819/***/ "./node_modules/core-js/internals/get-method.js":
11820/*!******************************************************!*\
11821  !*** ./node_modules/core-js/internals/get-method.js ***!
11822  \******************************************************/
11823/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11824
11825"use strict";
11826
11827var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js");
11828var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
11829
11830// `GetMethod` abstract operation
11831// https://tc39.es/ecma262/#sec-getmethod
11832module.exports = function (V, P) {
11833  var func = V[P];
11834  return isNullOrUndefined(func) ? undefined : aCallable(func);
11835};
11836
11837
11838/***/ }),
11839
vendor: 2,126 bytes, lines 11840-11896
11840/***/ "./node_modules/core-js/internals/get-substitution.js":
11841/*!************************************************************!*\
11842  !*** ./node_modules/core-js/internals/get-substitution.js ***!
11843  \************************************************************/
11844/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11845
11846"use strict";
11847
11848var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
11849var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
11850
11851var floor = Math.floor;
11852var charAt = uncurryThis(''.charAt);
11853var replace = uncurryThis(''.replace);
11854var stringSlice = uncurryThis(''.slice);
11855// eslint-disable-next-line redos/no-vulnerable -- safe
11856var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
11857var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
11858
11859// `GetSubstitution` abstract operation
11860// https://tc39.es/ecma262/#sec-getsubstitution
11861module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
11862  var tailPos = position + matched.length;
11863  var m = captures.length;
11864  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
11865  if (namedCaptures !== undefined) {
11866    namedCaptures = toObject(namedCaptures);
11867    symbols = SUBSTITUTION_SYMBOLS;
11868  }
11869  return replace(replacement, symbols, function (match, ch) {
11870    var capture;
11871    switch (charAt(ch, 0)) {
11872      case '$': return '$';
11873      case '&': return matched;
11874      case '`': return stringSlice(str, 0, position);
11875      case "'": return stringSlice(str, tailPos);
11876      case '<':
11877        capture = namedCaptures[stringSlice(ch, 1, -1)];
11878        break;
11879      default: // \d\d?
11880        var n = +ch;
11881        if (n === 0) return match;
11882        if (n > m) {
11883          var f = floor(n / 10);
11884          if (f === 0) return match;
11885          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
11886          return match;
11887        }
11888        capture = captures[n - 1];
11889    }
11890    return capture === undefined ? '' : capture;
11891  });
11892};
11893
11894
11895/***/ }),
11896
vendor: 986 bytes, lines 11897-11923
11897/***/ "./node_modules/core-js/internals/global.js":
11898/*!**************************************************!*\
11899  !*** ./node_modules/core-js/internals/global.js ***!
11900  \**************************************************/
11901/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11902
11903"use strict";
11904
11905var check = function (it) {
11906  return it && it.Math === Math && it;
11907};
11908
11909// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
11910module.exports =
11911  // eslint-disable-next-line es/no-global-this -- safe
11912  check(typeof globalThis == 'object' && globalThis) ||
11913  check(typeof window == 'object' && window) ||
11914  // eslint-disable-next-line no-restricted-globals -- safe
11915  check(typeof self == 'object' && self) ||
11916  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||
11917  check(typeof this == 'object' && this) ||
11918  // eslint-disable-next-line no-new-func -- fallback
11919  (function () { return this; })() || Function('return this')();
11920
11921
11922/***/ }),
11923
vendor: 923 bytes, lines 11924-11946
11924/***/ "./node_modules/core-js/internals/has-own-property.js":
11925/*!************************************************************!*\
11926  !*** ./node_modules/core-js/internals/has-own-property.js ***!
11927  \************************************************************/
11928/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11929
11930"use strict";
11931
11932var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
11933var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
11934
11935var hasOwnProperty = uncurryThis({}.hasOwnProperty);
11936
11937// `HasOwnProperty` abstract operation
11938// https://tc39.es/ecma262/#sec-hasownproperty
11939// eslint-disable-next-line es/no-object-hasown -- safe
11940module.exports = Object.hasOwn || function hasOwn(it, key) {
11941  return hasOwnProperty(toObject(it), key);
11942};
11943
11944
11945/***/ }),
11946
vendor: 315 bytes, lines 11947-11959
11947/***/ "./node_modules/core-js/internals/hidden-keys.js":
11948/*!*******************************************************!*\
11949  !*** ./node_modules/core-js/internals/hidden-keys.js ***!
11950  \*******************************************************/
11951/***/ (function(module) {
11952
11953"use strict";
11954
11955module.exports = {};
11956
11957
11958/***/ }),
11959
vendor: 497 bytes, lines 11960-11974
11960/***/ "./node_modules/core-js/internals/html.js":
11961/*!************************************************!*\
11962  !*** ./node_modules/core-js/internals/html.js ***!
11963  \************************************************/
11964/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11965
11966"use strict";
11967
11968var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
11969
11970module.exports = getBuiltIn('document', 'documentElement');
11971
11972
11973/***/ }),
11974
vendor: 1,023 bytes, lines 11975-11997
11975/***/ "./node_modules/core-js/internals/ie8-dom-define.js":
11976/*!**********************************************************!*\
11977  !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
11978  \**********************************************************/
11979/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
11980
11981"use strict";
11982
11983var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
11984var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
11985var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
11986
11987// Thanks to IE8 for its funny defineProperty
11988module.exports = !DESCRIPTORS && !fails(function () {
11989  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
11990  return Object.defineProperty(createElement('div'), 'a', {
11991    get: function () { return 7; }
11992  }).a !== 7;
11993});
11994
11995
11996/***/ }),
11997
vendor: 1,168 bytes, lines 11998-12024
11998/***/ "./node_modules/core-js/internals/indexed-object.js":
11999/*!**********************************************************!*\
12000  !*** ./node_modules/core-js/internals/indexed-object.js ***!
12001  \**********************************************************/
12002/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12003
12004"use strict";
12005
12006var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12007var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
12008var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
12009
12010var $Object = Object;
12011var split = uncurryThis(''.split);
12012
12013// fallback for non-array-like ES3 and non-enumerable old V8 strings
12014module.exports = fails(function () {
12015  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
12016  // eslint-disable-next-line no-prototype-builtins -- safe
12017  return !$Object('z').propertyIsEnumerable(0);
12018}) ? function (it) {
12019  return classof(it) === 'String' ? split(it, '') : $Object(it);
12020} : $Object;
12021
12022
12023/***/ }),
12024
vendor: 1,030 bytes, lines 12025-12050
12025/***/ "./node_modules/core-js/internals/inspect-source.js":
12026/*!**********************************************************!*\
12027  !*** ./node_modules/core-js/internals/inspect-source.js ***!
12028  \**********************************************************/
12029/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12030
12031"use strict";
12032
12033var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12034var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12035var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
12036
12037var functionToString = uncurryThis(Function.toString);
12038
12039// this helper broken in `[email protected]`, so we can't use `shared` helper
12040if (!isCallable(store.inspectSource)) {
12041  store.inspectSource = function (it) {
12042    return functionToString(it);
12043  };
12044}
12045
12046module.exports = store.inspectSource;
12047
12048
12049/***/ }),
12050
vendor: 2,994 bytes, lines 12051-12132
12051/***/ "./node_modules/core-js/internals/internal-state.js":
12052/*!**********************************************************!*\
12053  !*** ./node_modules/core-js/internals/internal-state.js ***!
12054  \**********************************************************/
12055/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12056
12057"use strict";
12058
12059var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "./node_modules/core-js/internals/weak-map-basic-detection.js");
12060var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
12061var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
12062var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
12063var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
12064var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
12065var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
12066var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
12067
12068var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
12069var TypeError = global.TypeError;
12070var WeakMap = global.WeakMap;
12071var set, get, has;
12072
12073var enforce = function (it) {
12074  return has(it) ? get(it) : set(it, {});
12075};
12076
12077var getterFor = function (TYPE) {
12078  return function (it) {
12079    var state;
12080    if (!isObject(it) || (state = get(it)).type !== TYPE) {
12081      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');
12082    } return state;
12083  };
12084};
12085
12086if (NATIVE_WEAK_MAP || shared.state) {
12087  var store = shared.state || (shared.state = new WeakMap());
12088  /* eslint-disable no-self-assign -- prototype methods protection */
12089  store.get = store.get;
12090  store.has = store.has;
12091  store.set = store.set;
12092  /* eslint-enable no-self-assign -- prototype methods protection */
12093  set = function (it, metadata) {
12094    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
12095    metadata.facade = it;
12096    store.set(it, metadata);
12097    return metadata;
12098  };
12099  get = function (it) {
12100    return store.get(it) || {};
12101  };
12102  has = function (it) {
12103    return store.has(it);
12104  };
12105} else {
12106  var STATE = sharedKey('state');
12107  hiddenKeys[STATE] = true;
12108  set = function (it, metadata) {
12109    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
12110    metadata.facade = it;
12111    createNonEnumerableProperty(it, STATE, metadata);
12112    return metadata;
12113  };
12114  get = function (it) {
12115    return hasOwn(it, STATE) ? it[STATE] : {};
12116  };
12117  has = function (it) {
12118    return hasOwn(it, STATE);
12119  };
12120}
12121
12122module.exports = {
12123  set: set,
12124  get: get,
12125  has: has,
12126  enforce: enforce,
12127  getterFor: getterFor
12128};
12129
12130
12131/***/ }),
12132
vendor: 682 bytes, lines 12133-12152
12133/***/ "./node_modules/core-js/internals/is-array.js":
12134/*!****************************************************!*\
12135  !*** ./node_modules/core-js/internals/is-array.js ***!
12136  \****************************************************/
12137/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12138
12139"use strict";
12140
12141var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
12142
12143// `IsArray` abstract operation
12144// https://tc39.es/ecma262/#sec-isarray
12145// eslint-disable-next-line es/no-array-isarray -- safe
12146module.exports = Array.isArray || function isArray(argument) {
12147  return classof(argument) === 'Array';
12148};
12149
12150
12151/***/ }),
12152
vendor: 813 bytes, lines 12153-12175
12153/***/ "./node_modules/core-js/internals/is-callable.js":
12154/*!*******************************************************!*\
12155  !*** ./node_modules/core-js/internals/is-callable.js ***!
12156  \*******************************************************/
12157/***/ (function(module) {
12158
12159"use strict";
12160
12161// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
12162var documentAll = typeof document == 'object' && document.all;
12163
12164// `IsCallable` abstract operation
12165// https://tc39.es/ecma262/#sec-iscallable
12166// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing
12167module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {
12168  return typeof argument == 'function' || argument === documentAll;
12169} : function (argument) {
12170  return typeof argument == 'function';
12171};
12172
12173
12174/***/ }),
12175
vendor: 2,541 bytes, lines 12176-12238
12176/***/ "./node_modules/core-js/internals/is-constructor.js":
12177/*!**********************************************************!*\
12178  !*** ./node_modules/core-js/internals/is-constructor.js ***!
12179  \**********************************************************/
12180/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12181
12182"use strict";
12183
12184var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12185var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
12186var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12187var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
12188var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
12189var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js");
12190
12191var noop = function () { /* empty */ };
12192var construct = getBuiltIn('Reflect', 'construct');
12193var constructorRegExp = /^\s*(?:class|function)\b/;
12194var exec = uncurryThis(constructorRegExp.exec);
12195var INCORRECT_TO_STRING = !constructorRegExp.test(noop);
12196
12197var isConstructorModern = function isConstructor(argument) {
12198  if (!isCallable(argument)) return false;
12199  try {
12200    construct(noop, [], argument);
12201    return true;
12202  } catch (error) {
12203    return false;
12204  }
12205};
12206
12207var isConstructorLegacy = function isConstructor(argument) {
12208  if (!isCallable(argument)) return false;
12209  switch (classof(argument)) {
12210    case 'AsyncFunction':
12211    case 'GeneratorFunction':
12212    case 'AsyncGeneratorFunction': return false;
12213  }
12214  try {
12215    // we can't check .prototype since constructors produced by .bind haven't it
12216    // `Function#toString` throws on some built-it function in some legacy engines
12217    // (for example, `DOMQuad` and similar in FF41-)
12218    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
12219  } catch (error) {
12220    return true;
12221  }
12222};
12223
12224isConstructorLegacy.sham = true;
12225
12226// `IsConstructor` abstract operation
12227// https://tc39.es/ecma262/#sec-isconstructor
12228module.exports = !construct || fails(function () {
12229  var called;
12230  return isConstructorModern(isConstructorModern.call)
12231    || !isConstructorModern(Object)
12232    || !isConstructorModern(function () { called = true; })
12233    || called;
12234}) ? isConstructorLegacy : isConstructorModern;
12235
12236
12237/***/ }),
12238
vendor: 1,081 bytes, lines 12239-12272
12239/***/ "./node_modules/core-js/internals/is-forced.js":
12240/*!*****************************************************!*\
12241  !*** ./node_modules/core-js/internals/is-forced.js ***!
12242  \*****************************************************/
12243/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12244
12245"use strict";
12246
12247var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
12248var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12249
12250var replacement = /#|\.prototype\./;
12251
12252var isForced = function (feature, detection) {
12253  var value = data[normalize(feature)];
12254  return value === POLYFILL ? true
12255    : value === NATIVE ? false
12256    : isCallable(detection) ? fails(detection)
12257    : !!detection;
12258};
12259
12260var normalize = isForced.normalize = function (string) {
12261  return String(string).replace(replacement, '.').toLowerCase();
12262};
12263
12264var data = isForced.data = {};
12265var NATIVE = isForced.NATIVE = 'N';
12266var POLYFILL = isForced.POLYFILL = 'P';
12267
12268module.exports = isForced;
12269
12270
12271/***/ }),
12272
vendor: 539 bytes, lines 12273-12289
12273/***/ "./node_modules/core-js/internals/is-null-or-undefined.js":
12274/*!****************************************************************!*\
12275  !*** ./node_modules/core-js/internals/is-null-or-undefined.js ***!
12276  \****************************************************************/
12277/***/ (function(module) {
12278
12279"use strict";
12280
12281// we can't use just `it == null` since of `document.all` special case
12282// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
12283module.exports = function (it) {
12284  return it === null || it === undefined;
12285};
12286
12287
12288/***/ }),
12289
vendor: 554 bytes, lines 12290-12306
12290/***/ "./node_modules/core-js/internals/is-object.js":
12291/*!*****************************************************!*\
12292  !*** ./node_modules/core-js/internals/is-object.js ***!
12293  \*****************************************************/
12294/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12295
12296"use strict";
12297
12298var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12299
12300module.exports = function (it) {
12301  return typeof it == 'object' ? it !== null : isCallable(it);
12302};
12303
12304
12305/***/ }),
12306
vendor: 302 bytes, lines 12307-12319
12307/***/ "./node_modules/core-js/internals/is-pure.js":
12308/*!***************************************************!*\
12309  !*** ./node_modules/core-js/internals/is-pure.js ***!
12310  \***************************************************/
12311/***/ (function(module) {
12312
12313"use strict";
12314
12315module.exports = false;
12316
12317
12318/***/ }),
12319
vendor: 1,112 bytes, lines 12320-12344
12320/***/ "./node_modules/core-js/internals/is-symbol.js":
12321/*!*****************************************************!*\
12322  !*** ./node_modules/core-js/internals/is-symbol.js ***!
12323  \*****************************************************/
12324/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12325
12326"use strict";
12327
12328var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
12329var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12330var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js");
12331var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js");
12332
12333var $Object = Object;
12334
12335module.exports = USE_SYMBOL_AS_UID ? function (it) {
12336  return typeof it == 'symbol';
12337} : function (it) {
12338  var $Symbol = getBuiltIn('Symbol');
12339  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
12340};
12341
12342
12343/***/ }),
12344
vendor: 653 bytes, lines 12345-12363
12345/***/ "./node_modules/core-js/internals/length-of-array-like.js":
12346/*!****************************************************************!*\
12347  !*** ./node_modules/core-js/internals/length-of-array-like.js ***!
12348  \****************************************************************/
12349/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12350
12351"use strict";
12352
12353var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
12354
12355// `LengthOfArrayLike` abstract operation
12356// https://tc39.es/ecma262/#sec-lengthofarraylike
12357module.exports = function (obj) {
12358  return toLength(obj.length);
12359};
12360
12361
12362/***/ }),
12363
vendor: 3,500 bytes, lines 12364-12429
12364/***/ "./node_modules/core-js/internals/make-built-in.js":
12365/*!*********************************************************!*\
12366  !*** ./node_modules/core-js/internals/make-built-in.js ***!
12367  \*********************************************************/
12368/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12369
12370"use strict";
12371
12372var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12373var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
12374var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12375var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
12376var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
12377var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE);
12378var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js");
12379var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
12380
12381var enforceInternalState = InternalStateModule.enforce;
12382var getInternalState = InternalStateModule.get;
12383var $String = String;
12384// eslint-disable-next-line es/no-object-defineproperty -- safe
12385var defineProperty = Object.defineProperty;
12386var stringSlice = uncurryThis(''.slice);
12387var replace = uncurryThis(''.replace);
12388var join = uncurryThis([].join);
12389
12390var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {
12391  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
12392});
12393
12394var TEMPLATE = String(String).split('String');
12395
12396var makeBuiltIn = module.exports = function (value, name, options) {
12397  if (stringSlice($String(name), 0, 7) === 'Symbol(') {
12398    name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']';
12399  }
12400  if (options && options.getter) name = 'get ' + name;
12401  if (options && options.setter) name = 'set ' + name;
12402  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
12403    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });
12404    else value.name = name;
12405  }
12406  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {
12407    defineProperty(value, 'length', { value: options.arity });
12408  }
12409  try {
12410    if (options && hasOwn(options, 'constructor') && options.constructor) {
12411      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });
12412    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
12413    } else if (value.prototype) value.prototype = undefined;
12414  } catch (error) { /* empty */ }
12415  var state = enforceInternalState(value);
12416  if (!hasOwn(state, 'source')) {
12417    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');
12418  } return value;
12419};
12420
12421// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
12422// eslint-disable-next-line no-extend-native -- required
12423Function.prototype.toString = makeBuiltIn(function toString() {
12424  return isCallable(this) && getInternalState(this).source || inspectSource(this);
12425}, 'toString');
12426
12427
12428/***/ }),
12429
vendor: 560 bytes, lines 12430-12451
12430/***/ "./node_modules/core-js/internals/math-trunc.js":
12431/*!******************************************************!*\
12432  !*** ./node_modules/core-js/internals/math-trunc.js ***!
12433  \******************************************************/
12434/***/ (function(module) {
12435
12436"use strict";
12437
12438var ceil = Math.ceil;
12439var floor = Math.floor;
12440
12441// `Math.trunc` method
12442// https://tc39.es/ecma262/#sec-math.trunc
12443// eslint-disable-next-line es/no-math-trunc -- safe
12444module.exports = Math.trunc || function trunc(x) {
12445  var n = +x;
12446  return (n > 0 ? floor : ceil)(n);
12447};
12448
12449
12450/***/ }),
12451
vendor: 3,906 bytes, lines 12452-12546
12452/***/ "./node_modules/core-js/internals/object-create.js":
12453/*!*********************************************************!*\
12454  !*** ./node_modules/core-js/internals/object-create.js ***!
12455  \*********************************************************/
12456/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12457
12458"use strict";
12459
12460/* global ActiveXObject -- old IE, WSH */
12461var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
12462var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
12463var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
12464var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
12465var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
12466var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
12467var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
12468
12469var GT = '>';
12470var LT = '<';
12471var PROTOTYPE = 'prototype';
12472var SCRIPT = 'script';
12473var IE_PROTO = sharedKey('IE_PROTO');
12474
12475var EmptyConstructor = function () { /* empty */ };
12476
12477var scriptTag = function (content) {
12478  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
12479};
12480
12481// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
12482var NullProtoObjectViaActiveX = function (activeXDocument) {
12483  activeXDocument.write(scriptTag(''));
12484  activeXDocument.close();
12485  var temp = activeXDocument.parentWindow.Object;
12486  activeXDocument = null; // avoid memory leak
12487  return temp;
12488};
12489
12490// Create object with fake `null` prototype: use iframe Object with cleared prototype
12491var NullProtoObjectViaIFrame = function () {
12492  // Thrash, waste and sodomy: IE GC bug
12493  var iframe = documentCreateElement('iframe');
12494  var JS = 'java' + SCRIPT + ':';
12495  var iframeDocument;
12496  iframe.style.display = 'none';
12497  html.appendChild(iframe);
12498  // https://github.com/zloirock/core-js/issues/475
12499  iframe.src = String(JS);
12500  iframeDocument = iframe.contentWindow.document;
12501  iframeDocument.open();
12502  iframeDocument.write(scriptTag('document.F=Object'));
12503  iframeDocument.close();
12504  return iframeDocument.F;
12505};
12506
12507// Check for document.domain and active x support
12508// No need to use active x approach when document.domain is not set
12509// see https://github.com/es-shims/es5-shim/issues/150
12510// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
12511// avoid IE GC bug
12512var activeXDocument;
12513var NullProtoObject = function () {
12514  try {
12515    activeXDocument = new ActiveXObject('htmlfile');
12516  } catch (error) { /* ignore */ }
12517  NullProtoObject = typeof document != 'undefined'
12518    ? document.domain && activeXDocument
12519      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
12520      : NullProtoObjectViaIFrame()
12521    : NullProtoObjectViaActiveX(activeXDocument); // WSH
12522  var length = enumBugKeys.length;
12523  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
12524  return NullProtoObject();
12525};
12526
12527hiddenKeys[IE_PROTO] = true;
12528
12529// `Object.create` method
12530// https://tc39.es/ecma262/#sec-object.create
12531// eslint-disable-next-line es/no-object-create -- safe
12532module.exports = Object.create || function create(O, Properties) {
12533  var result;
12534  if (O !== null) {
12535    EmptyConstructor[PROTOTYPE] = anObject(O);
12536    result = new EmptyConstructor();
12537    EmptyConstructor[PROTOTYPE] = null;
12538    // add "__proto__" for Object.getPrototypeOf polyfill
12539    result[IE_PROTO] = O;
12540  } else result = NullProtoObject();
12541  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
12542};
12543
12544
12545/***/ }),
12546
vendor: 1,733 bytes, lines 12547-12578
12547/***/ "./node_modules/core-js/internals/object-define-properties.js":
12548/*!********************************************************************!*\
12549  !*** ./node_modules/core-js/internals/object-define-properties.js ***!
12550  \********************************************************************/
12551/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
12552
12553"use strict";
12554
12555var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
12556var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
12557var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
12558var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
12559var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
12560var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
12561
12562// `Object.defineProperties` method
12563// https://tc39.es/ecma262/#sec-object.defineproperties
12564// eslint-disable-next-line es/no-object-defineproperties -- safe
12565exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
12566  anObject(O);
12567  var props = toIndexedObject(Properties);
12568  var keys = objectKeys(Properties);
12569  var length = keys.length;
12570  var index = 0;
12571  var key;
12572  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
12573  return O;
12574};
12575
12576
12577/***/ }),
12578
vendor: 2,618 bytes, lines 12579-12633
12579/***/ "./node_modules/core-js/internals/object-define-property.js":
12580/*!******************************************************************!*\
12581  !*** ./node_modules/core-js/internals/object-define-property.js ***!
12582  \******************************************************************/
12583/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
12584
12585"use strict";
12586
12587var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
12588var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
12589var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
12590var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
12591var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
12592
12593var $TypeError = TypeError;
12594// eslint-disable-next-line es/no-object-defineproperty -- safe
12595var $defineProperty = Object.defineProperty;
12596// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
12597var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
12598var ENUMERABLE = 'enumerable';
12599var CONFIGURABLE = 'configurable';
12600var WRITABLE = 'writable';
12601
12602// `Object.defineProperty` method
12603// https://tc39.es/ecma262/#sec-object.defineproperty
12604exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
12605  anObject(O);
12606  P = toPropertyKey(P);
12607  anObject(Attributes);
12608  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
12609    var current = $getOwnPropertyDescriptor(O, P);
12610    if (current && current[WRITABLE]) {
12611      O[P] = Attributes.value;
12612      Attributes = {
12613        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
12614        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
12615        writable: false
12616      };
12617    }
12618  } return $defineProperty(O, P, Attributes);
12619} : $defineProperty : function defineProperty(O, P, Attributes) {
12620  anObject(O);
12621  P = toPropertyKey(P);
12622  anObject(Attributes);
12623  if (IE8_DOM_DEFINE) try {
12624    return $defineProperty(O, P, Attributes);
12625  } catch (error) { /* empty */ }
12626  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
12627  if ('value' in Attributes) O[P] = Attributes.value;
12628  return O;
12629};
12630
12631
12632/***/ }),
12633
vendor: 2,146 bytes, lines 12634-12667
12634/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js":
12635/*!******************************************************************************!*\
12636  !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
12637  \******************************************************************************/
12638/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
12639
12640"use strict";
12641
12642var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
12643var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
12644var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
12645var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
12646var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
12647var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
12648var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
12649var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
12650
12651// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
12652var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
12653
12654// `Object.getOwnPropertyDescriptor` method
12655// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
12656exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
12657  O = toIndexedObject(O);
12658  P = toPropertyKey(P);
12659  if (IE8_DOM_DEFINE) try {
12660    return $getOwnPropertyDescriptor(O, P);
12661  } catch (error) { /* empty */ }
12662  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
12663};
12664
12665
12666/***/ }),
12667
vendor: 1,038 bytes, lines 12668-12690
12668/***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
12669/*!*************************************************************************!*\
12670  !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
12671  \*************************************************************************/
12672/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
12673
12674"use strict";
12675
12676var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
12677var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
12678
12679var hiddenKeys = enumBugKeys.concat('length', 'prototype');
12680
12681// `Object.getOwnPropertyNames` method
12682// https://tc39.es/ecma262/#sec-object.getownpropertynames
12683// eslint-disable-next-line es/no-object-getownpropertynames -- safe
12684exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
12685  return internalObjectKeys(O, hiddenKeys);
12686};
12687
12688
12689/***/ }),
12690
vendor: 513 bytes, lines 12691-12704
12691/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
12692/*!***************************************************************************!*\
12693  !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
12694  \***************************************************************************/
12695/***/ (function(__unused_webpack_module, exports) {
12696
12697"use strict";
12698
12699// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
12700exports.f = Object.getOwnPropertySymbols;
12701
12702
12703/***/ }),
12704
vendor: 576 bytes, lines 12705-12719
12705/***/ "./node_modules/core-js/internals/object-is-prototype-of.js":
12706/*!******************************************************************!*\
12707  !*** ./node_modules/core-js/internals/object-is-prototype-of.js ***!
12708  \******************************************************************/
12709/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12710
12711"use strict";
12712
12713var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12714
12715module.exports = uncurryThis({}.isPrototypeOf);
12716
12717
12718/***/ }),
12719
vendor: 1,446 bytes, lines 12720-12751
12720/***/ "./node_modules/core-js/internals/object-keys-internal.js":
12721/*!****************************************************************!*\
12722  !*** ./node_modules/core-js/internals/object-keys-internal.js ***!
12723  \****************************************************************/
12724/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12725
12726"use strict";
12727
12728var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12729var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
12730var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
12731var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf);
12732var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
12733
12734var push = uncurryThis([].push);
12735
12736module.exports = function (object, names) {
12737  var O = toIndexedObject(object);
12738  var i = 0;
12739  var result = [];
12740  var key;
12741  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
12742  // Don't enum bug & hidden keys
12743  while (names.length > i) if (hasOwn(O, key = names[i++])) {
12744    ~indexOf(result, key) || push(result, key);
12745  }
12746  return result;
12747};
12748
12749
12750/***/ }),
12751
vendor: 836 bytes, lines 12752-12772
12752/***/ "./node_modules/core-js/internals/object-keys.js":
12753/*!*******************************************************!*\
12754  !*** ./node_modules/core-js/internals/object-keys.js ***!
12755  \*******************************************************/
12756/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12757
12758"use strict";
12759
12760var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
12761var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
12762
12763// `Object.keys` method
12764// https://tc39.es/ecma262/#sec-object.keys
12765// eslint-disable-next-line es/no-object-keys -- safe
12766module.exports = Object.keys || function keys(O) {
12767  return internalObjectKeys(O, enumBugKeys);
12768};
12769
12770
12771/***/ }),
12772
vendor: 1,020 bytes, lines 12773-12797
12773/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
12774/*!*************************************************************************!*\
12775  !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
12776  \*************************************************************************/
12777/***/ (function(__unused_webpack_module, exports) {
12778
12779"use strict";
12780
12781var $propertyIsEnumerable = {}.propertyIsEnumerable;
12782// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
12783var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
12784
12785// Nashorn ~ JDK8 bug
12786var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
12787
12788// `Object.prototype.propertyIsEnumerable` method implementation
12789// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
12790exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
12791  var descriptor = getOwnPropertyDescriptor(this, V);
12792  return !!descriptor && descriptor.enumerable;
12793} : $propertyIsEnumerable;
12794
12795
12796/***/ }),
12797
vendor: 858 bytes, lines 12798-12817
12798/***/ "./node_modules/core-js/internals/object-to-string.js":
12799/*!************************************************************!*\
12800  !*** ./node_modules/core-js/internals/object-to-string.js ***!
12801  \************************************************************/
12802/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12803
12804"use strict";
12805
12806var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
12807var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
12808
12809// `Object.prototype.toString` method implementation
12810// https://tc39.es/ecma262/#sec-object.prototype.tostring
12811module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
12812  return '[object ' + classof(this) + ']';
12813};
12814
12815
12816/***/ }),
12817
vendor: 1,291 bytes, lines 12818-12844
12818/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js":
12819/*!*****************************************************************!*\
12820  !*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***!
12821  \*****************************************************************/
12822/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12823
12824"use strict";
12825
12826var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
12827var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12828var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
12829
12830var $TypeError = TypeError;
12831
12832// `OrdinaryToPrimitive` abstract operation
12833// https://tc39.es/ecma262/#sec-ordinarytoprimitive
12834module.exports = function (input, pref) {
12835  var fn, val;
12836  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
12837  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
12838  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
12839  throw new $TypeError("Can't convert object to primitive value");
12840};
12841
12842
12843/***/ }),
12844
vendor: 1,431 bytes, lines 12845-12870
12845/***/ "./node_modules/core-js/internals/own-keys.js":
12846/*!****************************************************!*\
12847  !*** ./node_modules/core-js/internals/own-keys.js ***!
12848  \****************************************************/
12849/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12850
12851"use strict";
12852
12853var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
12854var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12855var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
12856var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
12857var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
12858
12859var concat = uncurryThis([].concat);
12860
12861// all object keys, includes non-enumerable and symbols
12862module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
12863  var keys = getOwnPropertyNamesModule.f(anObject(it));
12864  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
12865  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
12866};
12867
12868
12869/***/ }),
12870
vendor: 1,398 bytes, lines 12871-12902
12871/***/ "./node_modules/core-js/internals/regexp-exec-abstract.js":
12872/*!****************************************************************!*\
12873  !*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***!
12874  \****************************************************************/
12875/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12876
12877"use strict";
12878
12879var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
12880var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
12881var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
12882var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
12883var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
12884
12885var $TypeError = TypeError;
12886
12887// `RegExpExec` abstract operation
12888// https://tc39.es/ecma262/#sec-regexpexec
12889module.exports = function (R, S) {
12890  var exec = R.exec;
12891  if (isCallable(exec)) {
12892    var result = call(exec, R, S);
12893    if (result !== null) anObject(result);
12894    return result;
12895  }
12896  if (classof(R) === 'RegExp') return call(regexpExec, R, S);
12897  throw new $TypeError('RegExp#exec called on incompatible receiver');
12898};
12899
12900
12901/***/ }),
12902
vendor: 5,081 bytes, lines 12903-13030
12903/***/ "./node_modules/core-js/internals/regexp-exec.js":
12904/*!*******************************************************!*\
12905  !*** ./node_modules/core-js/internals/regexp-exec.js ***!
12906  \*******************************************************/
12907/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
12908
12909"use strict";
12910
12911/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
12912/* eslint-disable regexp/no-useless-quantifier -- testing */
12913var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
12914var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
12915var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
12916var regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js");
12917var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js");
12918var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
12919var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
12920var getInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").get);
12921var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js");
12922var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js");
12923
12924var nativeReplace = shared('native-string-replace', String.prototype.replace);
12925var nativeExec = RegExp.prototype.exec;
12926var patchedExec = nativeExec;
12927var charAt = uncurryThis(''.charAt);
12928var indexOf = uncurryThis(''.indexOf);
12929var replace = uncurryThis(''.replace);
12930var stringSlice = uncurryThis(''.slice);
12931
12932var UPDATES_LAST_INDEX_WRONG = (function () {
12933  var re1 = /a/;
12934  var re2 = /b*/g;
12935  call(nativeExec, re1, 'a');
12936  call(nativeExec, re2, 'a');
12937  return re1.lastIndex !== 0 || re2.lastIndex !== 0;
12938})();
12939
12940var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
12941
12942// nonparticipating capturing group, copied from es5-shim's String#split patch.
12943var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
12944
12945var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
12946
12947if (PATCH) {
12948  patchedExec = function exec(string) {
12949    var re = this;
12950    var state = getInternalState(re);
12951    var str = toString(string);
12952    var raw = state.raw;
12953    var result, reCopy, lastIndex, match, i, object, group;
12954
12955    if (raw) {
12956      raw.lastIndex = re.lastIndex;
12957      result = call(patchedExec, raw, str);
12958      re.lastIndex = raw.lastIndex;
12959      return result;
12960    }
12961
12962    var groups = state.groups;
12963    var sticky = UNSUPPORTED_Y && re.sticky;
12964    var flags = call(regexpFlags, re);
12965    var source = re.source;
12966    var charsAdded = 0;
12967    var strCopy = str;
12968
12969    if (sticky) {
12970      flags = replace(flags, 'y', '');
12971      if (indexOf(flags, 'g') === -1) {
12972        flags += 'g';
12973      }
12974
12975      strCopy = stringSlice(str, re.lastIndex);
12976      // Support anchored sticky behavior.
12977      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) {
12978        source = '(?: ' + source + ')';
12979        strCopy = ' ' + strCopy;
12980        charsAdded++;
12981      }
12982      // ^(? + rx + ) is needed, in combination with some str slicing, to
12983      // simulate the 'y' flag.
12984      reCopy = new RegExp('^(?:' + source + ')', flags);
12985    }
12986
12987    if (NPCG_INCLUDED) {
12988      reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
12989    }
12990    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
12991
12992    match = call(nativeExec, sticky ? reCopy : re, strCopy);
12993
12994    if (sticky) {
12995      if (match) {
12996        match.input = stringSlice(match.input, charsAdded);
12997        match[0] = stringSlice(match[0], charsAdded);
12998        match.index = re.lastIndex;
12999        re.lastIndex += match[0].length;
13000      } else re.lastIndex = 0;
13001    } else if (UPDATES_LAST_INDEX_WRONG && match) {
13002      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
13003    }
13004    if (NPCG_INCLUDED && match && match.length > 1) {
13005      // Fix browsers whose `exec` methods don't consistently return `undefined`
13006      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/
13007      call(nativeReplace, match[0], reCopy, function () {
13008        for (i = 1; i < arguments.length - 2; i++) {
13009          if (arguments[i] === undefined) match[i] = undefined;
13010        }
13011      });
13012    }
13013
13014    if (match && groups) {
13015      match.groups = object = create(null);
13016      for (i = 0; i < groups.length; i++) {
13017        group = groups[i];
13018        object[group[0]] = match[group[1]];
13019      }
13020    }
13021
13022    return match;
13023  };
13024}
13025
13026module.exports = patchedExec;
13027
13028
13029/***/ }),
13030
vendor: 958 bytes, lines 13031-13059
13031/***/ "./node_modules/core-js/internals/regexp-flags.js":
13032/*!********************************************************!*\
13033  !*** ./node_modules/core-js/internals/regexp-flags.js ***!
13034  \********************************************************/
13035/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13036
13037"use strict";
13038
13039var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
13040
13041// `RegExp.prototype.flags` getter implementation
13042// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
13043module.exports = function () {
13044  var that = anObject(this);
13045  var result = '';
13046  if (that.hasIndices) result += 'd';
13047  if (that.global) result += 'g';
13048  if (that.ignoreCase) result += 'i';
13049  if (that.multiline) result += 'm';
13050  if (that.dotAll) result += 's';
13051  if (that.unicode) result += 'u';
13052  if (that.unicodeSets) result += 'v';
13053  if (that.sticky) result += 'y';
13054  return result;
13055};
13056
13057
13058/***/ }),
13059
vendor: 1,338 bytes, lines 13060-13101
13060/***/ "./node_modules/core-js/internals/regexp-sticky-helpers.js":
13061/*!*****************************************************************!*\
13062  !*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***!
13063  \*****************************************************************/
13064/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13065
13066"use strict";
13067
13068var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13069var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13070
13071// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
13072var $RegExp = global.RegExp;
13073
13074var UNSUPPORTED_Y = fails(function () {
13075  var re = $RegExp('a', 'y');
13076  re.lastIndex = 2;
13077  return re.exec('abcd') !== null;
13078});
13079
13080// UC Browser bug
13081// https://github.com/zloirock/core-js/issues/1008
13082var MISSED_STICKY = UNSUPPORTED_Y || fails(function () {
13083  return !$RegExp('a', 'y').sticky;
13084});
13085
13086var BROKEN_CARET = UNSUPPORTED_Y || fails(function () {
13087  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
13088  var re = $RegExp('^r', 'gy');
13089  re.lastIndex = 2;
13090  return re.exec('str') !== null;
13091});
13092
13093module.exports = {
13094  BROKEN_CARET: BROKEN_CARET,
13095  MISSED_STICKY: MISSED_STICKY,
13096  UNSUPPORTED_Y: UNSUPPORTED_Y
13097};
13098
13099
13100/***/ }),
13101
vendor: 873 bytes, lines 13102-13123
13102/***/ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js":
13103/*!**********************************************************************!*\
13104  !*** ./node_modules/core-js/internals/regexp-unsupported-dot-all.js ***!
13105  \**********************************************************************/
13106/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13107
13108"use strict";
13109
13110var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13111var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13112
13113// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
13114var $RegExp = global.RegExp;
13115
13116module.exports = fails(function () {
13117  var re = $RegExp('.', 's');
13118  return !(re.dotAll && re.test('\n') && re.flags === 's');
13119});
13120
13121
13122/***/ }),
13123
vendor: 896 bytes, lines 13124-13146
13124/***/ "./node_modules/core-js/internals/regexp-unsupported-ncg.js":
13125/*!******************************************************************!*\
13126  !*** ./node_modules/core-js/internals/regexp-unsupported-ncg.js ***!
13127  \******************************************************************/
13128/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13129
13130"use strict";
13131
13132var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13133var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13134
13135// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
13136var $RegExp = global.RegExp;
13137
13138module.exports = fails(function () {
13139  var re = $RegExp('(?<a>b)', 'g');
13140  return re.exec('b').groups.a !== 'b' ||
13141    'b'.replace(re, '$<a>c') !== 'bc';
13142});
13143
13144
13145/***/ }),
13146
vendor: 801 bytes, lines 13147-13168
13147/***/ "./node_modules/core-js/internals/require-object-coercible.js":
13148/*!********************************************************************!*\
13149  !*** ./node_modules/core-js/internals/require-object-coercible.js ***!
13150  \********************************************************************/
13151/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13152
13153"use strict";
13154
13155var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
13156
13157var $TypeError = TypeError;
13158
13159// `RequireObjectCoercible` abstract operation
13160// https://tc39.es/ecma262/#sec-requireobjectcoercible
13161module.exports = function (it) {
13162  if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it);
13163  return it;
13164};
13165
13166
13167/***/ }),
13168
vendor: 654 bytes, lines 13169-13188
13169/***/ "./node_modules/core-js/internals/shared-key.js":
13170/*!******************************************************!*\
13171  !*** ./node_modules/core-js/internals/shared-key.js ***!
13172  \******************************************************/
13173/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13174
13175"use strict";
13176
13177var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
13178var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
13179
13180var keys = shared('keys');
13181
13182module.exports = function (key) {
13183  return keys[key] || (keys[key] = uid(key));
13184};
13185
13186
13187/***/ }),
13188
vendor: 730 bytes, lines 13189-13207
13189/***/ "./node_modules/core-js/internals/shared-store.js":
13190/*!********************************************************!*\
13191  !*** ./node_modules/core-js/internals/shared-store.js ***!
13192  \********************************************************/
13193/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13194
13195"use strict";
13196
13197var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13198var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
13199
13200var SHARED = '__core-js_shared__';
13201var store = global[SHARED] || defineGlobalProperty(SHARED, {});
13202
13203module.exports = store;
13204
13205
13206/***/ }),
13207
vendor: 930 bytes, lines 13208-13231
13208/***/ "./node_modules/core-js/internals/shared.js":
13209/*!**************************************************!*\
13210  !*** ./node_modules/core-js/internals/shared.js ***!
13211  \**************************************************/
13212/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13213
13214"use strict";
13215
13216var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
13217var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
13218
13219(module.exports = function (key, value) {
13220  return store[key] || (store[key] = value !== undefined ? value : {});
13221})('versions', []).push({
13222  version: '3.35.1',
13223  mode: IS_PURE ? 'pure' : 'global',
13224  copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',
13225  license: 'https://github.com/zloirock/core-js/blob/v3.35.1/LICENSE',
13226  source: 'https://github.com/zloirock/core-js'
13227});
13228
13229
13230/***/ }),
13231
vendor: 2,062 bytes, lines 13232-13279
13232/***/ "./node_modules/core-js/internals/string-multibyte.js":
13233/*!************************************************************!*\
13234  !*** ./node_modules/core-js/internals/string-multibyte.js ***!
13235  \************************************************************/
13236/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13237
13238"use strict";
13239
13240var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
13241var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
13242var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
13243var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
13244
13245var charAt = uncurryThis(''.charAt);
13246var charCodeAt = uncurryThis(''.charCodeAt);
13247var stringSlice = uncurryThis(''.slice);
13248
13249var createMethod = function (CONVERT_TO_STRING) {
13250  return function ($this, pos) {
13251    var S = toString(requireObjectCoercible($this));
13252    var position = toIntegerOrInfinity(pos);
13253    var size = S.length;
13254    var first, second;
13255    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
13256    first = charCodeAt(S, position);
13257    return first < 0xD800 || first > 0xDBFF || position + 1 === size
13258      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF
13259        ? CONVERT_TO_STRING
13260          ? charAt(S, position)
13261          : first
13262        : CONVERT_TO_STRING
13263          ? stringSlice(S, position, position + 2)
13264          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
13265  };
13266};
13267
13268module.exports = {
13269  // `String.prototype.codePointAt` method
13270  // https://tc39.es/ecma262/#sec-string.prototype.codepointat
13271  codeAt: createMethod(false),
13272  // `String.prototype.at` method
13273  // https://github.com/mathiasbynens/String.prototype.at
13274  charAt: createMethod(true)
13275};
13276
13277
13278/***/ }),
13279
vendor: 1,103 bytes, lines 13280-13306
13280/***/ "./node_modules/core-js/internals/string-trim-forced.js":
13281/*!**************************************************************!*\
13282  !*** ./node_modules/core-js/internals/string-trim-forced.js ***!
13283  \**************************************************************/
13284/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13285
13286"use strict";
13287
13288var PROPER_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").PROPER);
13289var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13290var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js");
13291
13292var non = '\u200B\u0085\u180E';
13293
13294// check that a method works with the correct list
13295// of whitespaces and has a correct name
13296module.exports = function (METHOD_NAME) {
13297  return fails(function () {
13298    return !!whitespaces[METHOD_NAME]()
13299      || non[METHOD_NAME]() !== non
13300      || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);
13301  });
13302};
13303
13304
13305/***/ }),
13306
vendor: 1,817 bytes, lines 13307-13348
13307/***/ "./node_modules/core-js/internals/string-trim.js":
13308/*!*******************************************************!*\
13309  !*** ./node_modules/core-js/internals/string-trim.js ***!
13310  \*******************************************************/
13311/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13312
13313"use strict";
13314
13315var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
13316var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
13317var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
13318var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ "./node_modules/core-js/internals/whitespaces.js");
13319
13320var replace = uncurryThis(''.replace);
13321var ltrim = RegExp('^[' + whitespaces + ']+');
13322var rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');
13323
13324// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
13325var createMethod = function (TYPE) {
13326  return function ($this) {
13327    var string = toString(requireObjectCoercible($this));
13328    if (TYPE & 1) string = replace(string, ltrim, '');
13329    if (TYPE & 2) string = replace(string, rtrim, '$1');
13330    return string;
13331  };
13332};
13333
13334module.exports = {
13335  // `String.prototype.{ trimLeft, trimStart }` methods
13336  // https://tc39.es/ecma262/#sec-string.prototype.trimstart
13337  start: createMethod(1),
13338  // `String.prototype.{ trimRight, trimEnd }` methods
13339  // https://tc39.es/ecma262/#sec-string.prototype.trimend
13340  end: createMethod(2),
13341  // `String.prototype.trim` method
13342  // https://tc39.es/ecma262/#sec-string.prototype.trim
13343  trim: createMethod(3)
13344};
13345
13346
13347/***/ }),
13348
vendor: 1,530 bytes, lines 13349-13378
13349/***/ "./node_modules/core-js/internals/symbol-constructor-detection.js":
13350/*!************************************************************************!*\
13351  !*** ./node_modules/core-js/internals/symbol-constructor-detection.js ***!
13352  \************************************************************************/
13353/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13354
13355"use strict";
13356
13357/* eslint-disable es/no-symbol -- required for testing */
13358var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ "./node_modules/core-js/internals/engine-v8-version.js");
13359var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13360var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13361
13362var $String = global.String;
13363
13364// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
13365module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
13366  var symbol = Symbol('symbol detection');
13367  // Chrome 38 Symbol has incorrect toString conversion
13368  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
13369  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
13370  // of course, fail.
13371  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||
13372    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
13373    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
13374});
13375
13376
13377/***/ }),
13378
vendor: 914 bytes, lines 13379-13402
13379/***/ "./node_modules/core-js/internals/to-absolute-index.js":
13380/*!*************************************************************!*\
13381  !*** ./node_modules/core-js/internals/to-absolute-index.js ***!
13382  \*************************************************************/
13383/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13384
13385"use strict";
13386
13387var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
13388
13389var max = Math.max;
13390var min = Math.min;
13391
13392// Helper for a popular repeating case of the spec:
13393// Let integer be ? ToInteger(index).
13394// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
13395module.exports = function (index, length) {
13396  var integer = toIntegerOrInfinity(index);
13397  return integer < 0 ? max(integer + length, 0) : min(integer, length);
13398};
13399
13400
13401/***/ }),
13402
vendor: 800 bytes, lines 13403-13421
13403/***/ "./node_modules/core-js/internals/to-indexed-object.js":
13404/*!*************************************************************!*\
13405  !*** ./node_modules/core-js/internals/to-indexed-object.js ***!
13406  \*************************************************************/
13407/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13408
13409"use strict";
13410
13411// toObject with fallback for non-array-like ES3 strings
13412var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
13413var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
13414
13415module.exports = function (it) {
13416  return IndexedObject(requireObjectCoercible(it));
13417};
13418
13419
13420/***/ }),
13421
vendor: 787 bytes, lines 13422-13442
13422/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js":
13423/*!******************************************************************!*\
13424  !*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***!
13425  \******************************************************************/
13426/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13427
13428"use strict";
13429
13430var trunc = __webpack_require__(/*! ../internals/math-trunc */ "./node_modules/core-js/internals/math-trunc.js");
13431
13432// `ToIntegerOrInfinity` abstract operation
13433// https://tc39.es/ecma262/#sec-tointegerorinfinity
13434module.exports = function (argument) {
13435  var number = +argument;
13436  // eslint-disable-next-line no-self-compare -- NaN check
13437  return number !== number || number === 0 ? 0 : trunc(number);
13438};
13439
13440
13441/***/ }),
13442
vendor: 752 bytes, lines 13443-13464
13443/***/ "./node_modules/core-js/internals/to-length.js":
13444/*!*****************************************************!*\
13445  !*** ./node_modules/core-js/internals/to-length.js ***!
13446  \*****************************************************/
13447/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13448
13449"use strict";
13450
13451var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
13452
13453var min = Math.min;
13454
13455// `ToLength` abstract operation
13456// https://tc39.es/ecma262/#sec-tolength
13457module.exports = function (argument) {
13458  var len = toIntegerOrInfinity(argument);
13459  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
13460};
13461
13462
13463/***/ }),
13464
vendor: 684 bytes, lines 13465-13485
13465/***/ "./node_modules/core-js/internals/to-object.js":
13466/*!*****************************************************!*\
13467  !*** ./node_modules/core-js/internals/to-object.js ***!
13468  \*****************************************************/
13469/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13470
13471"use strict";
13472
13473var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
13474
13475var $Object = Object;
13476
13477// `ToObject` abstract operation
13478// https://tc39.es/ecma262/#sec-toobject
13479module.exports = function (argument) {
13480  return $Object(requireObjectCoercible(argument));
13481};
13482
13483
13484/***/ }),
13485
vendor: 1,765 bytes, lines 13486-13522
13486/***/ "./node_modules/core-js/internals/to-primitive.js":
13487/*!********************************************************!*\
13488  !*** ./node_modules/core-js/internals/to-primitive.js ***!
13489  \********************************************************/
13490/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13491
13492"use strict";
13493
13494var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
13495var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
13496var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js");
13497var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
13498var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js");
13499var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
13500
13501var $TypeError = TypeError;
13502var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
13503
13504// `ToPrimitive` abstract operation
13505// https://tc39.es/ecma262/#sec-toprimitive
13506module.exports = function (input, pref) {
13507  if (!isObject(input) || isSymbol(input)) return input;
13508  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
13509  var result;
13510  if (exoticToPrim) {
13511    if (pref === undefined) pref = 'default';
13512    result = call(exoticToPrim, input, pref);
13513    if (!isObject(result) || isSymbol(result)) return result;
13514    throw new $TypeError("Can't convert object to primitive value");
13515  }
13516  if (pref === undefined) pref = 'number';
13517  return ordinaryToPrimitive(input, pref);
13518};
13519
13520
13521/***/ }),
13522
vendor: 809 bytes, lines 13523-13543
13523/***/ "./node_modules/core-js/internals/to-property-key.js":
13524/*!***********************************************************!*\
13525  !*** ./node_modules/core-js/internals/to-property-key.js ***!
13526  \***********************************************************/
13527/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13528
13529"use strict";
13530
13531var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
13532var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js");
13533
13534// `ToPropertyKey` abstract operation
13535// https://tc39.es/ecma262/#sec-topropertykey
13536module.exports = function (argument) {
13537  var key = toPrimitive(argument, 'string');
13538  return isSymbol(key) ? key : key + '';
13539};
13540
13541
13542/***/ }),
13543
vendor: 664 bytes, lines 13544-13563
13544/***/ "./node_modules/core-js/internals/to-string-tag-support.js":
13545/*!*****************************************************************!*\
13546  !*** ./node_modules/core-js/internals/to-string-tag-support.js ***!
13547  \*****************************************************************/
13548/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13549
13550"use strict";
13551
13552var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
13553
13554var TO_STRING_TAG = wellKnownSymbol('toStringTag');
13555var test = {};
13556
13557test[TO_STRING_TAG] = 'z';
13558
13559module.exports = String(test) === '[object z]';
13560
13561
13562/***/ }),
13563
vendor: 641 bytes, lines 13564-13583
13564/***/ "./node_modules/core-js/internals/to-string.js":
13565/*!*****************************************************!*\
13566  !*** ./node_modules/core-js/internals/to-string.js ***!
13567  \*****************************************************/
13568/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13569
13570"use strict";
13571
13572var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
13573
13574var $String = String;
13575
13576module.exports = function (argument) {
13577  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
13578  return $String(argument);
13579};
13580
13581
13582/***/ }),
13583
vendor: 450 bytes, lines 13584-13604
13584/***/ "./node_modules/core-js/internals/try-to-string.js":
13585/*!*********************************************************!*\
13586  !*** ./node_modules/core-js/internals/try-to-string.js ***!
13587  \*********************************************************/
13588/***/ (function(module) {
13589
13590"use strict";
13591
13592var $String = String;
13593
13594module.exports = function (argument) {
13595  try {
13596    return $String(argument);
13597  } catch (error) {
13598    return 'Object';
13599  }
13600};
13601
13602
13603/***/ }),
13604
vendor: 664 bytes, lines 13605-13625
13605/***/ "./node_modules/core-js/internals/uid.js":
13606/*!***********************************************!*\
13607  !*** ./node_modules/core-js/internals/uid.js ***!
13608  \***********************************************/
13609/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13610
13611"use strict";
13612
13613var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
13614
13615var id = 0;
13616var postfix = Math.random();
13617var toString = uncurryThis(1.0.toString);
13618
13619module.exports = function (key) {
13620  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
13621};
13622
13623
13624/***/ }),
13625
vendor: 672 bytes, lines 13626-13643
13626/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js":
13627/*!*************************************************************!*\
13628  !*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***!
13629  \*************************************************************/
13630/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13631
13632"use strict";
13633
13634/* eslint-disable es/no-symbol -- required for testing */
13635var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js");
13636
13637module.exports = NATIVE_SYMBOL
13638  && !Symbol.sham
13639  && typeof Symbol.iterator == 'symbol';
13640
13641
13642/***/ }),
13643
vendor: 962 bytes, lines 13644-13667
13644/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js":
13645/*!*******************************************************************!*\
13646  !*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***!
13647  \*******************************************************************/
13648/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13649
13650"use strict";
13651
13652var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
13653var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13654
13655// V8 ~ Chrome 36-
13656// https://bugs.chromium.org/p/v8/issues/detail?id=3334
13657module.exports = DESCRIPTORS && fails(function () {
13658  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
13659  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
13660    value: 42,
13661    writable: false
13662  }).prototype !== 42;
13663});
13664
13665
13666/***/ }),
13667
vendor: 730 bytes, lines 13668-13685
13668/***/ "./node_modules/core-js/internals/weak-map-basic-detection.js":
13669/*!********************************************************************!*\
13670  !*** ./node_modules/core-js/internals/weak-map-basic-detection.js ***!
13671  \********************************************************************/
13672/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13673
13674"use strict";
13675
13676var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13677var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
13678
13679var WeakMap = global.WeakMap;
13680
13681module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));
13682
13683
13684/***/ }),
13685
vendor: 1,554 bytes, lines 13686-13715
13686/***/ "./node_modules/core-js/internals/well-known-symbol.js":
13687/*!*************************************************************!*\
13688  !*** ./node_modules/core-js/internals/well-known-symbol.js ***!
13689  \*************************************************************/
13690/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
13691
13692"use strict";
13693
13694var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
13695var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
13696var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
13697var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
13698var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js");
13699var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js");
13700
13701var Symbol = global.Symbol;
13702var WellKnownSymbolsStore = shared('wks');
13703var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;
13704
13705module.exports = function (name) {
13706  if (!hasOwn(WellKnownSymbolsStore, name)) {
13707    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)
13708      ? Symbol[name]
13709      : createWellKnownSymbol('Symbol.' + name);
13710  } return WellKnownSymbolsStore[name];
13711};
13712
13713
13714/***/ }),
13715
vendor: 517 bytes, lines 13716-13730
13716/***/ "./node_modules/core-js/internals/whitespaces.js":
13717/*!*******************************************************!*\
13718  !*** ./node_modules/core-js/internals/whitespaces.js ***!
13719  \*******************************************************/
13720/***/ (function(module) {
13721
13722"use strict";
13723
13724// a string of all valid unicode whitespaces
13725module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002' +
13726  '\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
13727
13728
13729/***/ }),
13730
vendor: 1,324 bytes, lines 13731-13763
13731/***/ "./node_modules/core-js/modules/es.array.find.js":
13732/*!*******************************************************!*\
13733  !*** ./node_modules/core-js/modules/es.array.find.js ***!
13734  \*******************************************************/
13735/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
13736
13737"use strict";
13738
13739var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
13740var $find = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find);
13741var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js");
13742
13743var FIND = 'find';
13744var SKIPS_HOLES = true;
13745
13746// Shouldn't skip holes
13747// eslint-disable-next-line es/no-array-prototype-find -- testing
13748if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
13749
13750// `Array.prototype.find` method
13751// https://tc39.es/ecma262/#sec-array.prototype.find
13752$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
13753  find: function find(callbackfn /* , that = undefined */) {
13754    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
13755  }
13756});
13757
13758// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
13759addToUnscopables(FIND);
13760
13761
13762/***/ }),
13763
vendor: 999 bytes, lines 13764-13784
13764/***/ "./node_modules/core-js/modules/es.object.to-string.js":
13765/*!*************************************************************!*\
13766  !*** ./node_modules/core-js/modules/es.object.to-string.js ***!
13767  \*************************************************************/
13768/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
13769
13770"use strict";
13771
13772var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
13773var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
13774var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js");
13775
13776// `Object.prototype.toString` method
13777// https://tc39.es/ecma262/#sec-object.prototype.tostring
13778if (!TO_STRING_TAG_SUPPORT) {
13779  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });
13780}
13781
13782
13783/***/ }),
13784
vendor: 751 bytes, lines 13785-13804
13785/***/ "./node_modules/core-js/modules/es.regexp.exec.js":
13786/*!********************************************************!*\
13787  !*** ./node_modules/core-js/modules/es.regexp.exec.js ***!
13788  \********************************************************/
13789/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
13790
13791"use strict";
13792
13793var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
13794var exec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
13795
13796// `RegExp.prototype.exec` method
13797// https://tc39.es/ecma262/#sec-regexp.prototype.exec
13798$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
13799  exec: exec
13800});
13801
13802
13803/***/ }),
13804
vendor: 2,937 bytes, lines 13805-13863
13805/***/ "./node_modules/core-js/modules/es.string.match.js":
13806/*!*********************************************************!*\
13807  !*** ./node_modules/core-js/modules/es.string.match.js ***!
13808  \*********************************************************/
13809/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
13810
13811"use strict";
13812
13813var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
13814var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js");
13815var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
13816var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
13817var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
13818var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
13819var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
13820var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
13821var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js");
13822var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
13823
13824// @@match logic
13825fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {
13826  return [
13827    // `String.prototype.match` method
13828    // https://tc39.es/ecma262/#sec-string.prototype.match
13829    function match(regexp) {
13830      var O = requireObjectCoercible(this);
13831      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);
13832      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));
13833    },
13834    // `RegExp.prototype[@@match]` method
13835    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
13836    function (string) {
13837      var rx = anObject(this);
13838      var S = toString(string);
13839      var res = maybeCallNative(nativeMatch, rx, S);
13840
13841      if (res.done) return res.value;
13842
13843      if (!rx.global) return regExpExec(rx, S);
13844
13845      var fullUnicode = rx.unicode;
13846      rx.lastIndex = 0;
13847      var A = [];
13848      var n = 0;
13849      var result;
13850      while ((result = regExpExec(rx, S)) !== null) {
13851        var matchStr = toString(result[0]);
13852        A[n] = matchStr;
13853        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
13854        n++;
13855      }
13856      return n === 0 ? null : A;
13857    }
13858  ];
13859});
13860
13861
13862/***/ }),
13863
vendor: 7,253 bytes, lines 13864-14016
13864/***/ "./node_modules/core-js/modules/es.string.replace.js":
13865/*!***********************************************************!*\
13866  !*** ./node_modules/core-js/modules/es.string.replace.js ***!
13867  \***********************************************************/
13868/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
13869
13870"use strict";
13871
13872var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js");
13873var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
13874var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
13875var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js");
13876var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
13877var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
13878var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
13879var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
13880var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
13881var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
13882var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
13883var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
13884var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js");
13885var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
13886var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js");
13887var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
13888var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
13889
13890var REPLACE = wellKnownSymbol('replace');
13891var max = Math.max;
13892var min = Math.min;
13893var concat = uncurryThis([].concat);
13894var push = uncurryThis([].push);
13895var stringIndexOf = uncurryThis(''.indexOf);
13896var stringSlice = uncurryThis(''.slice);
13897
13898var maybeToString = function (it) {
13899  return it === undefined ? it : String(it);
13900};
13901
13902// IE <= 11 replaces $0 with the whole match, as if it was $&
13903// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
13904var REPLACE_KEEPS_$0 = (function () {
13905  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
13906  return 'a'.replace(/./, '$0') === '$0';
13907})();
13908
13909// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
13910var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
13911  if (/./[REPLACE]) {
13912    return /./[REPLACE]('a', '$0') === '';
13913  }
13914  return false;
13915})();
13916
13917var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
13918  var re = /./;
13919  re.exec = function () {
13920    var result = [];
13921    result.groups = { a: '7' };
13922    return result;
13923  };
13924  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
13925  return ''.replace(re, '$<a>') !== '7';
13926});
13927
13928// @@replace logic
13929fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
13930  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
13931
13932  return [
13933    // `String.prototype.replace` method
13934    // https://tc39.es/ecma262/#sec-string.prototype.replace
13935    function replace(searchValue, replaceValue) {
13936      var O = requireObjectCoercible(this);
13937      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);
13938      return replacer
13939        ? call(replacer, searchValue, O, replaceValue)
13940        : call(nativeReplace, toString(O), searchValue, replaceValue);
13941    },
13942    // `RegExp.prototype[@@replace]` method
13943    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
13944    function (string, replaceValue) {
13945      var rx = anObject(this);
13946      var S = toString(string);
13947
13948      if (
13949        typeof replaceValue == 'string' &&
13950        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
13951        stringIndexOf(replaceValue, '$<') === -1
13952      ) {
13953        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
13954        if (res.done) return res.value;
13955      }
13956
13957      var functionalReplace = isCallable(replaceValue);
13958      if (!functionalReplace) replaceValue = toString(replaceValue);
13959
13960      var global = rx.global;
13961      var fullUnicode;
13962      if (global) {
13963        fullUnicode = rx.unicode;
13964        rx.lastIndex = 0;
13965      }
13966
13967      var results = [];
13968      var result;
13969      while (true) {
13970        result = regExpExec(rx, S);
13971        if (result === null) break;
13972
13973        push(results, result);
13974        if (!global) break;
13975
13976        var matchStr = toString(result[0]);
13977        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
13978      }
13979
13980      var accumulatedResult = '';
13981      var nextSourcePosition = 0;
13982      for (var i = 0; i < results.length; i++) {
13983        result = results[i];
13984
13985        var matched = toString(result[0]);
13986        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
13987        var captures = [];
13988        var replacement;
13989        // NOTE: This is equivalent to
13990        //   captures = result.slice(1).map(maybeToString)
13991        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
13992        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
13993        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
13994        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
13995        var namedCaptures = result.groups;
13996        if (functionalReplace) {
13997          var replacerArgs = concat([matched], captures, position, S);
13998          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);
13999          replacement = toString(apply(replaceValue, undefined, replacerArgs));
14000        } else {
14001          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
14002        }
14003        if (position >= nextSourcePosition) {
14004          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
14005          nextSourcePosition = position + matched.length;
14006        }
14007      }
14008
14009      return accumulatedResult + stringSlice(S, nextSourcePosition);
14010    }
14011  ];
14012}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
14013
14014
14015/***/ }),
14016
vendor: 957 bytes, lines 14017-14038
14017/***/ "./node_modules/core-js/modules/es.string.trim.js":
14018/*!********************************************************!*\
14019  !*** ./node_modules/core-js/modules/es.string.trim.js ***!
14020  \********************************************************/
14021/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
14022
14023"use strict";
14024
14025var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
14026var $trim = (__webpack_require__(/*! ../internals/string-trim */ "./node_modules/core-js/internals/string-trim.js").trim);
14027var forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ "./node_modules/core-js/internals/string-trim-forced.js");
14028
14029// `String.prototype.trim` method
14030// https://tc39.es/ecma262/#sec-string.prototype.trim
14031$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
14032  trim: function trim() {
14033    return $trim(this);
14034  }
14035});
14036
14037
14038/***/ })
vendor: 6,792 bytes, lines 14038-14158
14038
14039
14040/******/ 	});
14041/************************************************************************/
14042/******/ 	// The module cache
14043/******/ 	var __webpack_module_cache__ = {};
14044/******/ 	
14045/******/ 	// The require function
14046/******/ 	function __webpack_require__(moduleId) {
14047/******/ 		// Check if module is in cache
14048/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
14049/******/ 		if (cachedModule !== undefined) {
14050/******/ 			return cachedModule.exports;
14051/******/ 		}
14052/******/ 		// Create a new module (and put it into the cache)
14053/******/ 		var module = __webpack_module_cache__[moduleId] = {
14054/******/ 			// no module.id needed
14055/******/ 			// no module.loaded needed
14056/******/ 			exports: {}
14057/******/ 		};
14058/******/ 	
14059/******/ 		// Execute the module function
14060/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
14061/******/ 	
14062/******/ 		// Return the exports of the module
14063/******/ 		return module.exports;
14064/******/ 	}
14065/******/ 	
14066/************************************************************************/
14067/******/ 	/* webpack/runtime/compat get default export */
14068/******/ 	!function() {
14069/******/ 		// getDefaultExport function for compatibility with non-harmony modules
14070/******/ 		__webpack_require__.n = function(module) {
14071/******/ 			var getter = module && module.__esModule ?
14072/******/ 				function() { return module['default']; } :
14073/******/ 				function() { return module; };
14074/******/ 			__webpack_require__.d(getter, { a: getter });
14075/******/ 			return getter;
14076/******/ 		};
14077/******/ 	}();
14078/******/ 	
14079/******/ 	/* webpack/runtime/define property getters */
14080/******/ 	!function() {
14081/******/ 		// define getter functions for harmony exports
14082/******/ 		__webpack_require__.d = function(exports, definition) {
14083/******/ 			for(var key in definition) {
14084/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
14085/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
14086/******/ 				}
14087/******/ 			}
14088/******/ 		};
14089/******/ 	}();
14090/******/ 	
14091/******/ 	/* webpack/runtime/global */
14092/******/ 	!function() {
14093/******/ 		__webpack_require__.g = (function() {
14094/******/ 			if (typeof globalThis === 'object') return globalThis;
14095/******/ 			try {
14096/******/ 				return this || new Function('return this')();
14097/******/ 			} catch (e) {
14098/******/ 				if (typeof window === 'object') return window;
14099/******/ 			}
14100/******/ 		})();
14101/******/ 	}();
14102/******/ 	
14103/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
14104/******/ 	!function() {
14105/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
14106/******/ 	}();
14107/******/ 	
14108/******/ 	/* webpack/runtime/make namespace object */
14109/******/ 	!function() {
14110/******/ 		// define __esModule on exports
14111/******/ 		__webpack_require__.r = function(exports) {
14112/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
14113/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
14114/******/ 			}
14115/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
14116/******/ 		};
14117/******/ 	}();
14118/******/ 	
14119/************************************************************************/
14120var __webpack_exports__ = {};
14121// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
14122!function() {
14123"use strict";
14124/*!*******************************************!*\
14125  !*** ./src/js/blocks/vertical-counter.js ***!
14126  \*******************************************/
14127__webpack_require__.r(__webpack_exports__);
14128/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
14129/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__);
14130/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
14131/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);
14132/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
14133/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
14134/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ "./node_modules/core-js/modules/es.string.match.js");
14135/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__);
14136/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
14137/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__);
14138/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.trim.js */ "./node_modules/core-js/modules/es.string.trim.js");
14139/* harmony import */ var core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim_js__WEBPACK_IMPORTED_MODULE_5__);
14140/* harmony import */ var jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! jquery-inview/jquery.inview */ "./node_modules/jquery-inview/jquery.inview.js");
14141/* harmony import */ var jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_6__);
14142/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
14143
14144
14145
14146
14147
14148
14149
14150$(function () {
14151  verticalCounter();
14152});
14153function verticalCounter() {
14154  $('.vertical-counter .counter-item').one('inview', function (event, isInView) {
14155    if (isInView) {
14156      // Select the count element
14157      var $count = $(this).find('.counter-number');
14158      var text = $count.text().trim();
14158 // Get the original text and trim any surrounding spaces
14159
14160      // Extract the numeric part and keep the rest unchanged
14161      var matches = text.match(/(\D*)(\d[\d,\.]*)(\D*\+?)/);
14162      if (matches) {
14163        var prefix = matches[1] || ''; // e.g., $
14164        var number = matches[2].replace(/,/g, ''); // e.g., 150000 or 150,000.50
14165        var suffix = matches[3] || ''; // e.g., m + or k + or +
14166
14167        // Split the number into integer and decimal parts
14168        var numberParts = number.split('.');
14169        var integerPart = numberParts[0]; // Integer part
14170        var decimalPart = numberParts[1] || ''; // Decimal part (if any)
14171
14172        // Ensure number is valid
14173        var targetInteger = parseInt(integerPart, 10); // Integer part
14174        var targetDecimal = decimalPart ? parseInt(decimalPart, 10) : 0; // Decimal part
14175
14176        if (!isNaN(targetInteger)) {
14177          // Animate the counter
14178          $({
14179            Counter: 0
14180          }).animate({
14181            Counter: targetInteger
14182          }, {
14183            duration: 4000,
14184            easing: 'swing',
14185            step: function step() {
14186              var displayInteger = Math.floor(this.Counter).toLocaleString(); // Integer part
14187              var displayDecimal = decimalPart ? '.' + Math.round(this.Counter * Math.pow(10, decimalPart.length)) % Math.pow(10, decimalPart.length) : '';
14188              $count.text(prefix + displayInteger + displayDecimal + suffix); // Combine integer and decimal parts
14189            },
14190            complete: function complete() {
14191              // Ensure the final value is set correctly
14192              var finalDisplayDecimal = decimalPart ? '.' + targetDecimal : '';
14193              $count.text(prefix + targetInteger.toLocaleString() + finalDisplayDecimal + suffix);
14194            }
14195          });
14196        }
14197      }
14198    }
14199  });
14200}
14201}();
14202/******/ })()
14203;
14204//# sourceMappingURL=block.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.