Commit 80244d91df for wordpress.org

commit 80244d91dfc2557238eb99bdfcfef2929f3199f7
Author: peterwilsoncc <peterwilsoncc@git.wordpress.org>
Date:   Mon Sep 28 23:23:52 2026 +0000

    External Libraries: Update jQuery Migrate to 3.6.0.

    Updates jQuery Migrate from 3.4.1 to 3.6.0. This also removes the library from the committed `src/js/_enqueues/vendor/jquery/` directory in favour of updating via NPM.

    This is the first step in the upgrade path for jQuery 4.0.

    Developed in https://github.com/WordPress/wordpress-develop/pull/13787.

    Props clorith, jorbin, mukesh27, westonruter.
    Fixes #66203.
    See #60478.



    Built from https://develop.svn.wordpress.org/trunk@63983


    git-svn-id: http://core.svn.wordpress.org/trunk@63146 1a063a9b-81f0-0310-95a4-ce76da25c4cd

diff --git a/wp-includes/js/jquery/jquery-migrate.js b/wp-includes/js/jquery/jquery-migrate.js
index 5ef505ed92..1e8642cbbf 100644
--- a/wp-includes/js/jquery/jquery-migrate.js
+++ b/wp-includes/js/jquery/jquery-migrate.js
@@ -1,6 +1,8 @@
 /*!
- * jQuery Migrate - v3.4.1 - 2023-02-23T15:31Z
+ * jQuery Migrate - v3.6.0 - 2025-12-11T02:48Z
  * Copyright OpenJS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.com/license/
  */
 ( function( factory ) {
 	"use strict";
@@ -24,7 +26,7 @@
 } )( function( jQuery, window ) {
 "use strict";

-jQuery.migrateVersion = "3.4.1";
+jQuery.migrateVersion = "3.6.0";

 // Returns 0 if v1 == v2, -1 if v1 < v2, 1 if v1 > v2
 function compareVersions( v1, v2 ) {
@@ -53,7 +55,7 @@ function jQueryVersionSince( version ) {
 var disabledPatches = Object.create( null );

 // Don't apply patches for specified codes. Helpful for code bases
-// where some Migrate warnings have been addressed and it's desirable
+// where some Migrate warnings have been addressed, and it's desirable
 // to avoid needless patches or false positives.
 jQuery.migrateDisablePatches = function() {
 	var i;
@@ -84,38 +86,38 @@ jQuery.migrateIsPatchEnabled = function( patchCode ) {

 ( function() {

-	// Support: IE9 only
-	// IE9 only creates console object when dev tools are first opened
-	// IE9 console is a host object, callable but doesn't have .apply()
-	if ( !window.console || !window.console.log ) {
-		return;
-	}
+// Support: IE9 only
+// IE9 only creates console object when dev tools are first opened
+// IE9 console is a host object, callable but doesn't have .apply()
+if ( !window.console || !window.console.log ) {
+	return;
+}

-	// Need jQuery 3.x-4.x and no older Migrate loaded
-	if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ||
-			jQueryVersionSince( "5.0.0" ) ) {
-		window.console.log( "JQMIGRATE: jQuery 3.x-4.x REQUIRED" );
-	}
-	if ( jQuery.migrateWarnings ) {
-		window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
-	}
+// Need jQuery 3.x and no older Migrate loaded
+if ( !jQuery || !jQueryVersionSince( "3.0.0" ) ||
+		jQueryVersionSince( "4.0.0" ) ) {
+	window.console.log( "JQMIGRATE: jQuery 3.x REQUIRED" );
+}
+if ( jQuery.migrateWarnings ) {
+	window.console.log( "JQMIGRATE: Migrate plugin loaded multiple times" );
+}

-	// Show a message on the console so devs know we're active
-	window.console.log( "JQMIGRATE: Migrate is installed" +
-		( jQuery.migrateMute ? "" : " with logging active" ) +
-		", version " + jQuery.migrateVersion );
+// Show a message on the console so devs know we're active
+window.console.log( "JQMIGRATE: Migrate is installed" +
+	( jQuery.migrateMute ? "" : " with logging active" ) +
+	", version " + jQuery.migrateVersion );

 } )();

 var warnedAbout = {};

-// By default each warning is only reported once.
+// By default, each warning is only reported once.
 jQuery.migrateDeduplicateWarnings = true;

 // List of warnings already given; public read only
 jQuery.migrateWarnings = [];

-// Set to false to disable traces that appear with warnings
+// Set to `false` to disable traces that appear with warnings
 if ( jQuery.migrateTrace === undefined ) {
 	jQuery.migrateTrace = true;
 }
@@ -199,78 +201,27 @@ if ( window.document.compatMode === "BackCompat" ) {
 	migrateWarn( "quirks", "jQuery is not compatible with Quirks Mode" );
 }

-var findProp,
+var arr = [],
+	push = arr.push,
+	sort = arr.sort,
+	splice = arr.splice,
 	class2type = {},
-	oldInit = jQuery.fn.init,
-	oldFind = jQuery.find,
-
-	rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
-	rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,

 	// Require that the "whitespace run" starts from a non-whitespace
 	// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
 	rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;

-migratePatchFunc( jQuery.fn, "init", function( arg1 ) {
-	var args = Array.prototype.slice.call( arguments );
-
-	if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) &&
-		typeof arg1 === "string" && arg1 === "#" ) {
-
-		// JQuery( "#" ) is a bogus ID selector, but it returned an empty set
-		// before jQuery 3.0
-		migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" );
-		args[ 0 ] = [];
-	}
-
-	return oldInit.apply( this, args );
-}, "selector-empty-id" );
-
-// This is already done in Core but the above patch will lose this assignment
-// so we need to redo it. It doesn't matter whether the patch is enabled or not
-// as the method is always going to be a Migrate-created wrapper.
-jQuery.fn.init.prototype = jQuery.fn;
-
-migratePatchFunc( jQuery, "find", function( selector ) {
-	var args = Array.prototype.slice.call( arguments );
-
-	// Support: PhantomJS 1.x
-	// String#match fails to match when used with a //g RegExp, only on some strings
-	if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
-
-		// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
-		// First see if qS thinks it's a valid selector, if so avoid a false positive
-		try {
-			window.document.querySelector( selector );
-		} catch ( err1 ) {
-
-			// Didn't *look* valid to qSA, warn and try quoting what we think is the value
-			selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
-				return "[" + attr + op + "\"" + value + "\"]";
-			} );
-
-			// If the regexp *may* have created an invalid selector, don't update it
-			// Note that there may be false alarms if selector uses jQuery extensions
-			try {
-				window.document.querySelector( selector );
-				migrateWarn( "selector-hash",
-					"Attribute selector with '#' must be quoted: " + args[ 0 ] );
-				args[ 0 ] = selector;
-			} catch ( err2 ) {
-				migrateWarn( "selector-hash",
-					"Attribute selector with '#' was not fixed: " + args[ 0 ] );
-			}
-		}
-	}
-
-	return oldFind.apply( this, args );
-}, "selector-hash" );
-
-// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
-for ( findProp in oldFind ) {
-	if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
-		jQuery.find[ findProp ] = oldFind[ findProp ];
-	}
+function isFunction( obj ) {
+
+	// Support: Chrome <=57, Firefox <=52
+	// In some browsers, typeof returns "function" for HTML <object> elements
+	// (i.e., `typeof document.createElement( "object" ) === "function"`).
+	// We don't want to classify *any* DOM node as a function.
+	// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
+	// Plus for old WebKit, typeof returns "function" for HTML collections
+	// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
+	return typeof obj === "function" && typeof obj.nodeType !== "number" &&
+		typeof obj.item !== "function";
 }

 // The number of elements contained in the matched element set
@@ -290,12 +241,6 @@ migratePatchAndWarnFunc( jQuery, "holdReady", jQuery.holdReady,
 migratePatchAndWarnFunc( jQuery, "unique", jQuery.uniqueSort,
 	"unique", "jQuery.unique is deprecated; use jQuery.uniqueSort" );

-// Now jQuery.expr.pseudos is the standard incantation
-migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
-	"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
-migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
-	"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );
-
 // Prior to jQuery 3.1.1 there were internal refs so we don't warn there
 if ( jQueryVersionSince( "3.1.1" ) ) {
 	migratePatchAndWarnFunc( jQuery, "trim", function( text ) {
@@ -320,7 +265,8 @@ if ( jQueryVersionSince( "3.2.0" ) ) {

 if ( jQueryVersionSince( "3.3.0" ) ) {

-	migratePatchAndWarnFunc( jQuery, "isNumeric", function( obj ) {
+	migratePatchAndWarnFunc( jQuery, "isNumeric",
+		function( obj ) {

 			// As of jQuery 3.0, isNumeric is limited to
 			// strings and numbers (primitives or objects)
@@ -355,11 +301,10 @@ if ( jQueryVersionSince( "3.3.0" ) ) {
 	}, "type",
 	"jQuery.type is deprecated" );

-	migratePatchAndWarnFunc( jQuery, "isFunction",
-		function( obj ) {
-			return typeof obj === "function";
-		}, "isFunction",
-		"jQuery.isFunction() is deprecated" );
+	migratePatchAndWarnFunc( jQuery, "isFunction", function( obj ) {
+		return isFunction( obj );
+	}, "isFunction",
+	"jQuery.isFunction() is deprecated" );

 	migratePatchAndWarnFunc( jQuery, "isWindow",
 		function( obj ) {
@@ -367,12 +312,184 @@ if ( jQueryVersionSince( "3.3.0" ) ) {
 		}, "isWindow",
 		"jQuery.isWindow() is deprecated"
 	);
+
+	migratePatchAndWarnFunc( jQuery, "now", Date.now, "now",
+		"jQuery.now() is deprecated; use Date.now()"
+	);
+
+	migratePatchAndWarnFunc( jQuery, "camelCase", jQuery.camelCase, "camelCase",
+		"jQuery.camelCase() is deprecated"
+	);
+
+	// Bind a function to a context, optionally partially applying any
+	// arguments.
+	// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
+	// However, it is not slated for removal any time soon
+	migratePatchAndWarnFunc( jQuery, "proxy", jQuery.proxy,
+		"proxy", "DEPRECATED: jQuery.proxy()" );
+
+}
+
+if ( jQueryVersionSince( "3.7.0" ) ) {
+	migratePatchAndWarnFunc( jQuery.fn, "push", push, "push",
+		"jQuery.fn.push() is deprecated; use .add() or convert to an array" );
+	migratePatchAndWarnFunc( jQuery.fn, "sort", sort, "sort",
+		"jQuery.fn.sort() is deprecated; convert to an array before sorting" );
+	migratePatchAndWarnFunc( jQuery.fn, "splice", splice, "splice",
+		"jQuery.fn.splice() is deprecated; use .slice() or .not() with .eq()" );
+}
+
+var findProp,
+	oldInit = jQuery.fn.init,
+	oldFind = jQuery.find,
+
+	rattrHashTest = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,
+	rattrHashGlob = /\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;
+
+migratePatchFunc( jQuery.fn, "init", function( arg1 ) {
+	var args = Array.prototype.slice.call( arguments );
+
+	if ( jQuery.migrateIsPatchEnabled( "selector-empty-id" ) &&
+		typeof arg1 === "string" && arg1 === "#" ) {
+
+		// JQuery( "#" ) is a bogus ID selector, but it returned an empty set
+		// before jQuery 3.0
+		migrateWarn( "selector-empty-id", "jQuery( '#' ) is not a valid selector" );
+		args[ 0 ] = [];
+	}
+
+	return oldInit.apply( this, args );
+}, "selector-empty-id" );
+
+// This is already done in Core but the above patch will lose this assignment
+// so we need to redo it. It doesn't matter whether the patch is enabled or not
+// as the method is always going to be a Migrate-created wrapper.
+jQuery.fn.init.prototype = jQuery.fn;
+
+migratePatchFunc( jQuery, "find", function( selector ) {
+	var args = Array.prototype.slice.call( arguments );
+
+	// Support: PhantomJS 1.x
+	// String#match fails to match when used with a //g RegExp, only on some strings
+	if ( typeof selector === "string" && rattrHashTest.test( selector ) ) {
+
+		// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0
+		// First see if qS thinks it's a valid selector, if so avoid a false positive
+		try {
+			window.document.querySelector( selector );
+		} catch ( err1 ) {
+
+			// Didn't *look* valid to qSA, warn and try quoting what we think is the value
+			selector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {
+				return "[" + attr + op + "\"" + value + "\"]";
+			} );
+
+			// If the regexp *may* have created an invalid selector, don't update it
+			// Note that there may be false alarms if selector uses jQuery extensions
+			try {
+				window.document.querySelector( selector );
+				migrateWarn( "selector-hash",
+					"Attribute selector with '#' must be quoted: " + args[ 0 ] );
+				args[ 0 ] = selector;
+			} catch ( err2 ) {
+				migrateWarn( "selector-hash",
+					"Attribute selector with '#' was not fixed: " + args[ 0 ] );
+			}
+		}
+	}
+
+	return oldFind.apply( this, args );
+}, "selector-hash" );
+
+// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)
+for ( findProp in oldFind ) {
+	if ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {
+		jQuery.find[ findProp ] = oldFind[ findProp ];
+	}
+}
+
+// Now jQuery.expr.pseudos is the standard incantation
+migrateWarnProp( jQuery.expr, "filters", jQuery.expr.pseudos, "expr-pre-pseudos",
+	"jQuery.expr.filters is deprecated; use jQuery.expr.pseudos" );
+migrateWarnProp( jQuery.expr, ":", jQuery.expr.pseudos, "expr-pre-pseudos",
+	"jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos" );
+
+function markFunction( fn ) {
+	fn[ jQuery.expando ] = true;
+	return fn;
+}
+
+// jQuery older than 3.7.0 used Sizzle which has its own private expando
+// variable that we cannot access. This makes thi patch impossible in those
+// jQuery versions.
+if ( jQueryVersionSince( "3.7.0" ) ) {
+	migratePatchFunc( jQuery.expr.filter, "PSEUDO", function( pseudo, argument ) {
+
+		// pseudo-class names are case-insensitive
+		// https://www.w3.org/TR/selectors/#pseudo-classes
+		// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+		// Remember that setFilters inherits from pseudos
+		var args,
+			fn = jQuery.expr.pseudos[ pseudo ] ||
+				jQuery.expr.setFilters[ pseudo.toLowerCase() ] ||
+				jQuery.error(
+					"Syntax error, unrecognized expression: unsupported pseudo: " +
+						pseudo );
+
+		// The user may use createPseudo to indicate that
+		// arguments are needed to create the filter function
+		// just as jQuery does
+		if ( fn[ jQuery.expando ] ) {
+			return fn( argument );
+		}
+
+		// But maintain support for old signatures
+		if ( fn.length > 1 ) {
+			migrateWarn( "legacy-custom-pseudos",
+				"Pseudos with multiple arguments are deprecated; " +
+					"use jQuery.expr.createPseudo()" );
+			args = [ pseudo, pseudo, "", argument ];
+			return jQuery.expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+				markFunction( function( seed, matches ) {
+					var idx,
+						matched = fn( seed, argument ),
+						i = matched.length;
+					while ( i-- ) {
+						idx = Array.prototype.indexOf.call( seed, matched[ i ] );
+						seed[ idx ] = !( matches[ idx ] = matched[ i ] );
+					}
+				} ) :
+				function( elem ) {
+					return fn( elem, 0, args );
+				};
+		}
+
+		return fn;
+	}, "legacy-custom-pseudos" );
+
+	if ( typeof Proxy !== "undefined" ) {
+		jQuery.each( [ "pseudos", "setFilters" ], function( _, api ) {
+			jQuery.expr[ api ] = new Proxy( jQuery.expr[ api ], {
+				set: function( _target, _prop, fn ) {
+					if ( typeof fn === "function" && !fn[ jQuery.expando ] && fn.length > 1 ) {
+						migrateWarn( "legacy-custom-pseudos",
+							"Pseudos with multiple arguments are deprecated; " +
+								"use jQuery.expr.createPseudo()" );
+					}
+					return Reflect.set.apply( this, arguments );
+				}
+			} );
+		} );
+	}
 }

 // Support jQuery slim which excludes the ajax module
 if ( jQuery.ajax ) {

 var oldAjax = jQuery.ajax,
+	oldCallbacks = [],
+	guid = "migrate-" + Date.now(),
+	origJsonpCallback = jQuery.ajaxSettings.jsonpCallback,
 	rjsonp = /(=)\?(?=&|$)|\?\?/;

 migratePatchFunc( jQuery, "ajax", function() {
@@ -391,40 +508,155 @@ migratePatchFunc( jQuery, "ajax", function() {
 	return jQXHR;
 }, "jqXHR-methods" );

-// Only trigger the logic in jQuery <4 as the JSON-to-JSONP auto-promotion
-// behavior is gone in jQuery 4.0 and as it has security implications, we don't
-// want to restore the legacy behavior.
-if ( !jQueryVersionSince( "4.0.0" ) ) {
-
-	// Register this prefilter before the jQuery one. Otherwise, a promoted
-	// request is transformed into one with the script dataType and we can't
-	// catch it anymore.
-	jQuery.ajaxPrefilter( "+json", function( s ) {
-
-		// Warn if JSON-to-JSONP auto-promotion happens.
-		if ( s.jsonp !== false && ( rjsonp.test( s.url ) ||
-				typeof s.data === "string" &&
-				( s.contentType || "" )
-					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
-				rjsonp.test( s.data )
-		) ) {
-			migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" );
+jQuery.ajaxSetup( {
+	jsonpCallback: function() {
+
+		// Source is virtually the same as in Core, but we need to duplicate
+		// to maintain a proper `oldCallbacks` reference.
+		if ( jQuery.migrateIsPatchEnabled( "jsonp-promotion" ) ) {
+			var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( guid++ ) );
+			this[ callback ] = true;
+			return callback;
+		} else {
+			return origJsonpCallback.apply( this, arguments );
 		}
-	} );
-}
+	}
+} );
+
+// Register this prefilter before the jQuery one. Otherwise, a promoted
+// request is transformed into one with the script dataType, and we can't
+// catch it anymore.
+// jQuery <4 already contains this prefilter; don't duplicate the whole logic,
+// but only enough to know when to warn.
+jQuery.ajaxPrefilter( "+json", function( s ) {
+
+	if ( !jQuery.migrateIsPatchEnabled( "jsonp-promotion" ) ) {
+		return;
+	}
+
+	// Warn if JSON-to-JSONP auto-promotion happens.
+	if ( s.jsonp !== false && ( rjsonp.test( s.url ) ||
+			typeof s.data === "string" &&
+			( s.contentType || "" )
+				.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+			rjsonp.test( s.data )
+	) ) {
+		migrateWarn( "jsonp-promotion", "JSON-to-JSONP auto-promotion is deprecated" );
+	}
+} );

 }

 var oldRemoveAttr = jQuery.fn.removeAttr,
+	oldJQueryAttr = jQuery.attr,
 	oldToggleClass = jQuery.fn.toggleClass,
-	rmatchNonSpace = /\S+/g;
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|" +
+		"disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+	rbooleans = new RegExp( "^(?:" + booleans + ")$", "i" ),
+	rmatchNonSpace = /\S+/g,
+
+	// Some formerly boolean attributes gained new values with special meaning.
+	// Skip the old boolean attr logic for those values.
+	extraBoolAttrValues = {
+		hidden: [ "until-found" ]
+	};
+
+// HTML boolean attributes have special behavior:
+// we consider the lowercase name to be the only valid value, so
+// getting (if the attribute is present) normalizes to that, as does
+// setting to any non-`false` value (and setting to `false` removes the attribute).
+// See https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes
+jQuery.each( booleans.split( "|" ), function( _i, name ) {
+	var origAttrHooks = jQuery.attrHooks[ name ] || {};
+	jQuery.attrHooks[ name ] = {
+		get: origAttrHooks.get || function( elem ) {
+			var attrValue;
+
+			if ( jQuery.migrateIsPatchEnabled( "boolean-attributes" ) ) {
+				attrValue = elem.getAttribute( name );
+
+				if ( attrValue !== name && attrValue != null &&
+					( extraBoolAttrValues[ name ] || [] )
+						.indexOf( String( attrValue ).toLowerCase() ) === -1
+				) {
+					migrateWarn( "boolean-attributes",
+						"Boolean attribute '" + name +
+							"' value is different from its lowercased name" );
+				}
+			}
+
+			return null;
+		},
+
+		set: origAttrHooks.set || function( elem, value, name ) {
+			if ( jQuery.migrateIsPatchEnabled( "boolean-attributes" ) ) {
+				if ( value !== name &&
+					( extraBoolAttrValues[ name ] || [] )
+						.indexOf( String( value ).toLowerCase() ) === -1
+				) {
+					if ( value !== false ) {
+						migrateWarn( "boolean-attributes",
+							"Boolean attribute '" + name +
+								"' is not set to its lowercased name" );
+					}
+
+					if ( value === false ) {
+
+						// Remove boolean attributes when set to false
+						jQuery.removeAttr( elem, name );
+					} else {
+						elem.setAttribute( name, name );
+					}
+					return name;
+				}
+			} else {
+
+				// jQuery <4 uses a private `boolHook` for the boolean attribute
+				// setter. It's only activated if `attrHook` is not set, but we set
+				// it here in Migrate so jQuery would not use it. Since we cannot
+				// access it, let's just repeat its contents here.
+				if ( value === false ) {
+
+					// Remove boolean attributes when set to false
+					jQuery.removeAttr( elem, name );
+				} else {
+					elem.setAttribute( name, name );
+				}
+				return name;
+			}
+		}
+	};
+} );
+
+migratePatchFunc( jQuery, "attr", function( elem, name, value ) {
+	var nType = elem.nodeType;
+
+	// Fallback to the original method on text, comment and attribute nodes
+	// and when attributes are not supported.
+	if ( nType === 3 || nType === 8 || nType === 2 ||
+			typeof elem.getAttribute === "undefined" ) {
+		return oldJQueryAttr.apply( this, arguments );
+	}
+
+	if ( value === false && name.toLowerCase().indexOf( "aria-" ) !== 0 &&
+			!rbooleans.test( name ) ) {
+		migrateWarn( "attr-false",
+			"Setting the non-ARIA non-boolean attribute '" + name +
+				"' to false" );
+
+		jQuery.attr( elem, name, "false" );
+		return;
+	}
+
+	return oldJQueryAttr.apply( this, arguments );
+}, "attr-false" );

 migratePatchFunc( jQuery.fn, "removeAttr", function( name ) {
 	var self = this,
 		patchNeeded = false;

 	jQuery.each( name.match( rmatchNonSpace ), function( _i, attr ) {
-		if ( jQuery.expr.match.bool.test( attr ) ) {
+		if ( rbooleans.test( attr ) ) {

 			// Only warn if at least a single node had the property set to
 			// something else than `false`. Otherwise, this Migrate patch
@@ -467,13 +699,13 @@ migratePatchFunc( jQuery.fn, "toggleClass", function( state ) {

 		// If the element has a class name or if we're passed `false`,
 		// then remove the whole classname (if there was one, the above saved it).
-		// Otherwise bring back whatever was previously saved (if anything),
+		// Otherwise, bring back whatever was previously saved (if anything),
 		// falling back to the empty string if nothing was stored.
 		if ( this.setAttribute ) {
 			this.setAttribute( "class",
 				className || state === false ?
-				"" :
-				jQuery.data( this, "__className__" ) || ""
+					"" :
+					jQuery.data( this, "__className__" ) || ""
 			);
 		}
 	} );
@@ -485,7 +717,74 @@ function camelCase( string ) {
 	} );
 }

-var origFnCss, internalCssNumber,
+// Make `object` inherit from `Object.prototype` via an additional object
+// in between; that intermediate object proxies properties
+// to `Object.prototype`, warning about their usage first.
+function patchProto( object, options ) {
+
+	// Support: IE 9 - 10 only, iOS 7 - 8 only
+	// Older IE doesn't have a way to change an existing prototype.
+	// Just return the original method there.
+	// Older WebKit supports `__proto__` but not `Object.setPrototypeOf`.
+	// To avoid complicating code, don't patch the API there either.
+	if ( !Object.setPrototypeOf ) {
+		return object;
+	}
+
+	var i,
+		warningId = options.warningId,
+		apiName = options.apiName,
+
+		// `Object.prototype` keys are not enumerable so list the
+		// official ones here. An alternative would be wrapping
+		// objects with a Proxy but that creates additional issues
+		// like breaking object identity on subsequent calls.
+		objProtoKeys = [
+			"__proto__",
+			"__defineGetter__",
+			"__defineSetter__",
+			"__lookupGetter__",
+			"__lookupSetter__",
+			"hasOwnProperty",
+			"isPrototypeOf",
+			"propertyIsEnumerable",
+			"toLocaleString",
+			"toString",
+			"valueOf"
+		],
+
+		// Use a null prototype at the beginning so that we can define our
+		// `__proto__` getter & setter. We'll reset the prototype afterward.
+		intermediateObj = Object.create( null );
+
+	for ( i = 0; i < objProtoKeys.length; i++ ) {
+		( function( key ) {
+			Object.defineProperty( intermediateObj, key, {
+				get: function() {
+					migrateWarn( warningId,
+						"Accessing properties from " + apiName +
+						" inherited from Object.prototype is deprecated" );
+					return ( key + "__cache" ) in intermediateObj ?
+						intermediateObj[ key + "__cache" ] :
+						Object.prototype[ key ];
+				},
+				set: function( value ) {
+					migrateWarn( warningId,
+						"Setting properties from " + apiName +
+						" inherited from Object.prototype is deprecated" );
+					intermediateObj[ key + "__cache" ] = value;
+				}
+			} );
+		} )( objProtoKeys[ i ] );
+	}
+
+	Object.setPrototypeOf( intermediateObj, Object.prototype );
+	Object.setPrototypeOf( object, intermediateObj );
+
+	return object;
+}
+
+var origFnCss,
 	internalSwapCall = false,
 	ralphaStart = /^[a-z]/,

@@ -563,62 +862,6 @@ if ( jQueryVersionSince( "3.4.0" ) && typeof Proxy !== "undefined" ) {
 	} );
 }

-// In jQuery >=4 where jQuery.cssNumber is missing fill it with the latest 3.x version:
-// https://github.com/jquery/jquery/blob/3.6.0/src/css.js#L212-L233
-// This way, number values for the CSS properties below won't start triggering
-// Migrate warnings when jQuery gets updated to >=4.0.0 (gh-438).
-if ( jQueryVersionSince( "4.0.0" ) ) {
-
-	// We need to keep this as a local variable as we need it internally
-	// in a `jQuery.fn.css` patch and this usage shouldn't warn.
-	internalCssNumber = {
-		animationIterationCount: true,
-		columnCount: true,
-		fillOpacity: true,
-		flexGrow: true,
-		flexShrink: true,
-		fontWeight: true,
-		gridArea: true,
-		gridColumn: true,
-		gridColumnEnd: true,
-		gridColumnStart: true,
-		gridRow: true,
-		gridRowEnd: true,
-		gridRowStart: true,
-		lineHeight: true,
-		opacity: true,
-		order: true,
-		orphans: true,
-		widows: true,
-		zIndex: true,
-		zoom: true
-	};
-
-	if ( typeof Proxy !== "undefined" ) {
-		jQuery.cssNumber = new Proxy( internalCssNumber, {
-			get: function() {
-				migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
-				return Reflect.get.apply( this, arguments );
-			},
-			set: function() {
-				migrateWarn( "css-number", "jQuery.cssNumber is deprecated" );
-				return Reflect.set.apply( this, arguments );
-			}
-		} );
-	} else {
-
-		// Support: IE 9-11+
-		// IE doesn't support proxies, but we still want to restore the legacy
-		// jQuery.cssNumber there.
-		jQuery.cssNumber = internalCssNumber;
-	}
-} else {
-
-	// Make `internalCssNumber` defined for jQuery <4 as well as it's needed
-	// in the `jQuery.fn.css` patch below.
-	internalCssNumber = jQuery.cssNumber;
-}
-
 function isAutoPx( prop ) {

 	// The first test is used to ensure that:
@@ -644,9 +887,7 @@ migratePatchFunc( jQuery.fn, "css", function( name, value ) {
 	if ( typeof value === "number" ) {
 		camelName = camelCase( name );

-		// Use `internalCssNumber` to avoid triggering our warnings in this
-		// internal check.
-		if ( !isAutoPx( camelName ) && !internalCssNumber[ camelName ] ) {
+		if ( !isAutoPx( camelName ) && !jQuery.cssNumber[ camelName ] ) {
 			migrateWarn( "css-number",
 				"Number-typed values are deprecated for jQuery.fn.css( \"" +
 				name + "\", value )" );
@@ -656,47 +897,319 @@ migratePatchFunc( jQuery.fn, "css", function( name, value ) {
 	return origFnCss.apply( this, arguments );
 }, "css-number" );

-var origData = jQuery.data;
+var rmultiDash = /[A-Z]/g,
+	rnothtmlwhite = /[^\x20\t\r\n\f]+/g,
+	origJQueryData = jQuery.data,
+	origJQueryPrivateData = jQuery._data;

-migratePatchFunc( jQuery, "data", function( elem, name, value ) {
-	var curData, sameKeys, key;
+function unCamelCase( str ) {
+	return str.replace( rmultiDash, "-$&" ).toLowerCase();
+}

-	// Name can be an object, and each entry in the object is meant to be set as data
-	if ( name && typeof name === "object" && arguments.length === 2 ) {
+function patchDataCamelCase( origData, options ) {
+	var apiName = options.apiName,
+		isPrivateData = options.isPrivateData,
+		isInstanceMethod = options.isInstanceMethod,
+		origJQueryStaticData = isPrivateData ? origJQueryPrivateData : origJQueryData;
+
+	function objectSetter( elem, obj ) {
+		var curData, key;
+
+		// Name can be an object, and each entry in the object is meant
+		// to be set as data.
+		// Let the original method handle the case of a missing elem.
+		if ( elem ) {
+
+			// Don't use the instance method here to avoid `data-*` attributes
+			// detection this early.
+			curData = origJQueryStaticData( elem );
+
+			for ( key in obj ) {
+				if ( key !== camelCase( key ) ) {
+					migrateWarn( "data-camelCase",
+						apiName + " always sets/gets camelCased names: " +
+							key );
+					curData[ key ] = obj[ key ];
+				}
+			}

-		curData = jQuery.hasData( elem ) && origData.call( this, elem );
-		sameKeys = {};
-		for ( key in name ) {
-			if ( key !== camelCase( key ) ) {
-				migrateWarn( "data-camelCase",
-					"jQuery.data() always sets/gets camelCased names: " + key );
-				curData[ key ] = name[ key ];
+			// Pass the keys handled above to the original API as well
+			// so that both the camelCase & initial keys are saved.
+			if ( isInstanceMethod ) {
+				origData.call( this, obj );
 			} else {
-				sameKeys[ key ] = name[ key ];
+				origData.call( this, elem, obj );
 			}
+
+			return obj;
 		}
+	}

-		origData.call( this, elem, sameKeys );
+	function singleSetter( elem, name, value ) {
+		var curData;

-		return name;
-	}
+		// If the name is transformed, look for the un-transformed name
+		// in the data object.
+		// Let the original method handle the case of a missing elem.
+		if ( elem ) {

-	// If the name is transformed, look for the un-transformed name in the data object
-	if ( name && typeof name === "string" && name !== camelCase( name ) ) {
+			// Don't use the instance method here to avoid `data-*` attributes
+			// detection this early.
+			curData = origJQueryStaticData( elem );
+
+			if ( curData && name in curData ) {
+				migrateWarn( "data-camelCase",
+					apiName + " always sets/gets camelCased names: " +
+						name );

-		curData = jQuery.hasData( elem ) && origData.call( this, elem );
-		if ( curData && name in curData ) {
-			migrateWarn( "data-camelCase",
-				"jQuery.data() always sets/gets camelCased names: " + name );
-			if ( arguments.length > 2 ) {
 				curData[ name ] = value;
 			}
-			return curData[ name ];
+
+			origJQueryStaticData( elem, name, value );
+
+			// Since the "set" path can have two possible entry points
+			// return the expected data based on which path was taken.
+			return value !== undefined ? value : name;
+		}
+	}
+
+	return function jQueryDataPatched( elem, name, value ) {
+		var curData,
+			that = this,
+
+			// Support: IE 9 only
+			// IE 9 doesn't support strict mode and later modifications of
+			// parameters also modify the arguments object in sloppy mode.
+			// We need the original arguments so save them here.
+			args = Array.prototype.slice.call( arguments ),
+
+			adjustedArgsLength = args.length;
+
+		if ( isInstanceMethod ) {
+			value = name;
+			name = elem;
+			elem = that[ 0 ];
+			adjustedArgsLength++;
+		}
+
+		if ( name && typeof name === "object" && adjustedArgsLength === 2 ) {
+			if ( isInstanceMethod ) {
+				return that.each( function() {
+					objectSetter.call( that, this, name );
+				} );
+			} else {
+				return objectSetter.call( that, elem, name );
+			}
+		}
+
+		// If the name is transformed, look for the un-transformed name
+		// in the data object.
+		// Let the original method handle the case of a missing elem.
+		if ( name && typeof name === "string" && name !== camelCase( name ) &&
+			adjustedArgsLength > 2 ) {
+
+			if ( isInstanceMethod ) {
+				return that.each( function() {
+					singleSetter.call( that, this, name, value );
+				} );
+			} else {
+				return singleSetter.call( that, elem, name, value );
+			}
+		}
+
+		if ( elem && name && typeof name === "string" &&
+			name !== camelCase( name ) &&
+			adjustedArgsLength === 2 ) {
+
+			// Don't use the instance method here to avoid `data-*` attributes
+			// detection this early.
+			curData = origJQueryStaticData( elem );
+
+			if ( curData && name in curData ) {
+				migrateWarn( "data-camelCase",
+					apiName + " always sets/gets camelCased names: " +
+						name );
+				return curData[ name ];
+			}
+		}
+
+		return origData.apply( this, args );
+	};
+}
+
+function patchRemoveDataCamelCase( origRemoveData, options ) {
+	var isPrivateData = options.isPrivateData,
+		isInstanceMethod = options.isInstanceMethod,
+		origJQueryStaticData = isPrivateData ? origJQueryPrivateData : origJQueryData;
+
+	function remove( elem, keys ) {
+		var i, singleKey, unCamelCasedKeys,
+			curData = origJQueryStaticData( elem );
+
+		if ( keys === undefined ) {
+			origRemoveData( elem );
+			return;
+		}
+
+		// Support array or space separated string of keys
+		if ( !Array.isArray( keys ) ) {
+
+			// If a key with the spaces exists, use it.
+			// Otherwise, create an array by matching non-whitespace
+			keys = keys in curData ?
+				[ keys ] :
+				( keys.match( rnothtmlwhite ) || [] );
+		}
+
+		// Remove:
+		// * the original keys as passed
+		// * their "unCamelCased" version
+		// * their camelCase version
+		// These may be three distinct values for each key!
+		// jQuery 3.x only removes camelCase versions by default. However, in this patch
+		// we set the original keys in the mass-setter case and if the key already exists
+		// so without removing the "unCamelCased" versions the following would be broken:
+		// ```js
+		// elem.data( { "a-a": 1 } ).removeData( "aA" );
+		// ```
+		// Unfortunately, we'll still hit this issue for partially camelCased keys, e.g.:
+		// ```js
+		// elem.data( { "a-aA": 1 } ).removeData( "aAA" );
+		// ```
+		// won't work with this patch. We consider this an edge case, but to make sure that
+		// at least piggybacking works:
+		// ```js
+		// elem.data( { "a-aA": 1 } ).removeData( "a-aA" );
+		// ```
+		// we also remove the original key. Hence, all three are needed.
+		// The original API already removes the camelCase versions, though, so let's defer
+		// to it.
+		unCamelCasedKeys = keys.map( unCamelCase );
+
+		i = keys.length;
+		while ( i-- ) {
+			singleKey = keys[ i ];
+			if ( singleKey !== camelCase( singleKey ) && singleKey in curData ) {
+				migrateWarn( "data-camelCase",
+					"jQuery" + ( isInstanceMethod ? ".fn" : "" ) +
+					".data() always sets/gets camelCased names: " +
+					singleKey );
+			}
+			delete curData[ singleKey ];
 		}
+
+		// Don't warn when removing "unCamelCased" keys; we're already printing
+		// a warning when setting them and the fix is needed there, not in
+		// the `.removeData()` call.
+		i = unCamelCasedKeys.length;
+		while ( i-- ) {
+			delete curData[ unCamelCasedKeys[ i ] ];
+		}
+
+		origRemoveData( elem, keys );
 	}

-	return origData.apply( this, arguments );
-}, "data-camelCase" );
+	return function jQueryRemoveDataPatched( elem, key ) {
+		if ( isInstanceMethod ) {
+			key = elem;
+			return this.each( function() {
+				remove( this, key );
+			} );
+		} else {
+			remove( elem, key );
+		}
+	};
+}
+
+migratePatchFunc( jQuery, "data",
+	patchDataCamelCase( jQuery.data, {
+		apiName: "jQuery.data()",
+		isPrivateData: false,
+		isInstanceMethod: false
+	} ),
+	"data-camelCase" );
+migratePatchFunc( jQuery, "_data",
+	patchDataCamelCase( jQuery._data, {
+		apiName: "jQuery._data()",
+		isPrivateData: true,
+		isInstanceMethod: false
+	} ),
+	"data-camelCase" );
+migratePatchFunc( jQuery.fn, "data",
+	patchDataCamelCase( jQuery.fn.data, {
+		apiName: "jQuery.fn.data()",
+		isPrivateData: false,
+		isInstanceMethod: true
+	} ),
+	"data-camelCase" );
+
+migratePatchFunc( jQuery, "removeData",
+	patchRemoveDataCamelCase( jQuery.removeData, {
+		isPrivateData: false,
+		isInstanceMethod: false
+	} ),
+	"data-camelCase" );
+migratePatchFunc( jQuery, "_removeData",
+	patchRemoveDataCamelCase( jQuery._removeData, {
+		isPrivateData: true,
+		isInstanceMethod: false
+	} ),
+	"data-camelCase" );
+migratePatchFunc( jQuery.fn, "removeData",
+
+	// No, it's not a typo - we're intentionally passing
+	// the static method here as we need something working on
+	// a single element.
+	patchRemoveDataCamelCase( jQuery.removeData, {
+		isPrivateData: false,
+		isInstanceMethod: true
+	} ),
+	"data-camelCase" );
+
+function patchDataProto( original, options ) {
+	var warningId = options.warningId,
+		apiName = options.apiName,
+		isInstanceMethod = options.isInstanceMethod;
+
+	return function apiWithProtoPatched() {
+		var result = original.apply( this, arguments );
+
+		if ( arguments.length !== ( isInstanceMethod ? 0 : 1 ) || result === undefined ) {
+			return result;
+		}
+
+		patchProto( result, {
+			warningId: warningId,
+			apiName: apiName
+		} );
+
+		return result;
+	};
+}
+
+// Yes, we are patching jQuery.data twice; here & above. This is necessary
+// so that each of the two patches can be independently disabled.
+migratePatchFunc( jQuery, "data",
+	patchDataProto( jQuery.data, {
+		warningId: "data-null-proto",
+		apiName: "jQuery.data()",
+		isInstanceMethod: false
+	} ),
+	"data-null-proto" );
+migratePatchFunc( jQuery, "_data",
+	patchDataProto( jQuery._data, {
+		warningId: "data-null-proto",
+		apiName: "jQuery._data()",
+		isInstanceMethod: false
+	} ),
+	"data-null-proto" );
+migratePatchFunc( jQuery.fn, "data",
+	patchDataProto( jQuery.fn.data, {
+		warningId: "data-null-proto",
+		apiName: "jQuery.fn.data()",
+		isInstanceMethod: true
+	} ),
+	"data-null-proto" );

 // Support jQuery slim which excludes the effects module
 if ( jQuery.fx ) {
@@ -837,16 +1350,12 @@ jQuery.each( [ "load", "unload", "error" ], function( _, name ) {
 jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
 	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
 	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
-	function( _i, name ) {
+function( _i, name ) {

 	// Handle event binding
-	migratePatchAndWarnFunc( jQuery.fn, name, function( data, fn ) {
-		return arguments.length > 0 ?
-			this.on( name, null, data, fn ) :
-			this.trigger( name );
-		},
-		"shorthand-deprecated-v3",
-		"jQuery.fn." + name + "() event shorthand is deprecated" );
+	migratePatchAndWarnFunc( jQuery.fn, name, jQuery.fn[ name ], "shorthand-deprecated-v3",
+		"DEPRECATED: jQuery.fn." + name + "() event shorthand" );
+
 } );

 // Trigger "ready" event only once, on document ready
@@ -862,6 +1371,11 @@ jQuery.event.special.ready = {
 	}
 };

+// Support: jQuery <3.2.0 only
+// jQuery 3.0.x & 3.1.x used to not include the deprecated module in the slim build.
+// To maintain compatibility with those versions, we need to reimplement APIs
+// deprecated in them.
+// See https://github.com/jquery/jquery/blob/3.1.1/src/deprecated.js
 migratePatchAndWarnFunc( jQuery.fn, "bind", function( types, data, fn ) {
 	return this.on( types, null, data, fn );
 }, "pre-on-methods", "jQuery.fn.bind() is deprecated" );
@@ -880,6 +1394,14 @@ migratePatchAndWarnFunc( jQuery.fn, "hover", function( fnOver, fnOut ) {
 	return this.on( "mouseenter", fnOver ).on( "mouseleave", fnOut || fnOver );
 }, "pre-on-methods", "jQuery.fn.hover() is deprecated" );

+// We can apply the patch unconditionally here as in the `3.x` line the API
+// inherits from `Object.prototype` even without a patch and `migrateWarn`
+// inside `patchProto` will already silence warnings if the patch gets disabled.
+patchProto( jQuery.event.special, {
+	warningId: "event-special-null-proto",
+	apiName: "jQuery.event.special"
+} );
+
 var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
 	makeMarkup = function( html ) {
 		var doc = window.document.implementation.createHTMLDocument( "" );
@@ -898,9 +1420,11 @@ var rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\
  * Deprecated, please use `jQuery.migrateDisablePatches( "self-closed-tags" )` instead.
  * @deprecated
  */
-jQuery.UNSAFE_restoreLegacyHtmlPrefilter = function() {
+migratePatchAndWarnFunc( jQuery, "UNSAFE_restoreLegacyHtmlPrefilter", function() {
 	jQuery.migrateEnablePatches( "self-closed-tags" );
-};
+}, "legacy-self-closed-tags",
+"jQuery.UNSAFE_restoreLegacyHtmlPrefilter deprecated; use " +
+	"`jQuery.migrateEnablePatches( \"self-closed-tags\" )`" );

 migratePatchFunc( jQuery, "htmlPrefilter", function( html ) {
 	warnIfChanged( html );
@@ -952,7 +1476,8 @@ migratePatchAndWarnFunc( jQuery.fn, "andSelf", jQuery.fn.addBack, "andSelf",
 // Support jQuery slim which excludes the deferred module in jQuery 4.0+
 if ( jQuery.Deferred ) {

-var oldDeferred = jQuery.Deferred,
+var unpatchedGetStackHookValue,
+	oldDeferred = jQuery.Deferred,
 	tuples = [

 		// Action, add listener, callbacks, .then handlers, final state
@@ -1012,6 +1537,40 @@ migratePatchFunc( jQuery, "Deferred", function( func ) {
 // Preserve handler of uncaught exceptions in promise chains
 jQuery.Deferred.exceptionHook = oldDeferred.exceptionHook;

+// Preserve the optional hook to record the error, if defined
+jQuery.Deferred.getErrorHook = oldDeferred.getErrorHook;
+
+// We want to mirror jQuery.Deferred.getErrorHook here, so we cannot use
+// existing Migrate utils.
+Object.defineProperty( jQuery.Deferred, "getStackHook", {
+	configurable: true,
+	enumerable: true,
+	get: function() {
+		if ( jQuery.migrateIsPatchEnabled( "deferred-getStackHook" ) ) {
+
+			// jQuery 3.x checks `getStackHook` if `getErrorHook` is missing,
+			// so don't warn on the getter.
+			return jQuery.Deferred.getErrorHook;
+		} else {
+			return unpatchedGetStackHookValue;
+		}
+	},
+	set: function( newValue ) {
+		if ( jQuery.migrateIsPatchEnabled( "deferred-getStackHook" ) ) {
+
+			// Only warn if `getErrorHook` wasn't set to the same value first.
+			if ( jQuery.Deferred.getErrorHook !== newValue ) {
+				migrateWarn( "deferred-getStackHook",
+					"jQuery.Deferred.getStackHook is deprecated; " +
+					"use jQuery.Deferred.getErrorHook" );
+				jQuery.Deferred.getErrorHook = newValue;
+			}
+		} else {
+			unpatchedGetStackHookValue = newValue;
+		}
+	}
+} );
+
 }

 return jQuery;
diff --git a/wp-includes/js/jquery/jquery-migrate.min.js b/wp-includes/js/jquery/jquery-migrate.min.js
index 29a4939df3..2e54dadf2d 100644
--- a/wp-includes/js/jquery/jquery-migrate.min.js
+++ b/wp-includes/js/jquery/jquery-migrate.min.js
@@ -1,2 +1,2 @@
-/*! jQuery Migrate v3.4.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */
-"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,n){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,n=r.exec(e)||[],o=r.exec(t)||[],a=1;a<=3;a++){if(+o[a]<+n[a])return 1;if(+n[a]<+o[a])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.4.1";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},n.console&&n.console.log&&(s&&e("3.0.0")&&!e("5.0.0")||n.console.log("JQMIGRATE: jQuery 3.x-4.x REQUIRED"),s.migrateWarnings&&n.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),n.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var o={};function u(e,t){var r=n.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&o[t]||(o[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,n,o){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return u(n,o),r},set:function(e){u(n,o),r=e}})}function a(e,t,r,n,o){var a=e[t];e[t]=function(){return o&&u(n,o),(s.migrateIsPatchEnabled(n)?r:a||s.noop).apply(this,arguments)}}function c(e,t,r,n,o){if(!o)throw new Error("No warning message provided");return a(e,t,r,n,o),0}function i(e,t,r,n){return a(e,t,r,n),0}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){o={},s.migrateWarnings.length=0},"BackCompat"===n.document.compatMode&&u("quirks","jQuery is not compatible with Quirks Mode");var d,l,p,f={},m=s.fn.init,y=s.find,h=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,g=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g,v=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;for(d in i(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(u("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),m.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,i(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&h.test(t))try{n.document.querySelector(t)}catch(e){t=t.replace(g,function(e,t,r,n){return"["+t+r+'"'+n+'"]'});try{n.document.querySelector(t),u("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){u("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return y.apply(this,r)},"selector-hash"),y)Object.prototype.hasOwnProperty.call(y,d)&&(s.find[d]=y[d]);c(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),c(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),c(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),c(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.1.1")&&c(s,"trim",function(e){return null==e?"":(e+"").replace(v,"$1")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(c(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),c(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(c(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){f["[object "+t+"]"]=t.toLowerCase()}),c(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?f[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),c(s,"isFunction",function(e){return"function"==typeof e},"isFunction","jQuery.isFunction() is deprecated"),c(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated")),s.ajax&&(l=s.ajax,p=/(=)\?(?=&|$)|\?\?/,i(s,"ajax",function(){var e=l.apply(this,arguments);return e.promise&&(c(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),c(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),c(e,"complete",e.always,"jqXHR-methods","jQXHR.complete is deprecated and removed")),e},"jqXHR-methods"),e("4.0.0")||s.ajaxPrefilter("+json",function(e){!1!==e.jsonp&&(p.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&p.test(e.data))&&u("jsonp-promotion","JSON-to-JSONP auto-promotion is deprecated")}));var j=s.fn.removeAttr,b=s.fn.toggleClass,w=/\S+/g;function x(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}i(s.fn,"removeAttr",function(e){var r=this,n=!1;return s.each(e.match(w),function(e,t){s.expr.match.bool.test(t)&&r.each(function(){if(!1!==s(this).prop(t))return!(n=!0)}),n&&(u("removeAttr-bool","jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),j.apply(this,arguments)},"removeAttr-bool"),i(s.fn,"toggleClass",function(t){return void 0!==t&&"boolean"!=typeof t?b.apply(this,arguments):(u("toggleClass-bool","jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))},"toggleClass-bool");var Q,A,R=!1,C=/^[a-z]/,N=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return R=!0,e=r.apply(this,arguments),R=!1,e})}),i(s,"swap",function(e,t,r,n){var o,a,i={};for(a in R||u("swap","jQuery.swap() is undocumented and deprecated"),t)i[a]=e.style[a],e.style[a]=t[a];for(a in o=r.apply(e,n||[]),t)e.style[a]=i[a];return o},"swap"),e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return u("cssProps","jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),e("4.0.0")?(A={animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},"undefined"!=typeof Proxy?s.cssNumber=new Proxy(A,{get:function(){return u("css-number","jQuery.cssNumber is deprecated"),Reflect.get.apply(this,arguments)},set:function(){return u("css-number","jQuery.cssNumber is deprecated"),Reflect.set.apply(this,arguments)}}):s.cssNumber=A):A=s.cssNumber,Q=s.fn.css,i(s.fn,"css",function(e,t){var r,n,o=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(o,e,t)}),this):("number"==typeof t&&(r=x(e),n=r,C.test(n)&&N.test(n[0].toUpperCase()+n.slice(1))||A[r]||u("css-number",'Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),Q.apply(this,arguments))},"css-number");var S,P,k,H,E=s.data;i(s,"data",function(e,t,r){var n,o,a;if(t&&"object"==typeof t&&2===arguments.length){for(a in n=s.hasData(e)&&E.call(this,e),o={},t)a!==x(a)?(u("data-camelCase","jQuery.data() always sets/gets camelCased names: "+a),n[a]=t[a]):o[a]=t[a];return E.call(this,e,o),t}return t&&"string"==typeof t&&t!==x(t)&&(n=s.hasData(e)&&E.call(this,e))&&t in n?(u("data-camelCase","jQuery.data() always sets/gets camelCased names: "+t),2<arguments.length&&(n[t]=r),n[t]):E.apply(this,arguments)},"data-camelCase"),s.fx&&(k=s.Tween.prototype.run,H=function(e){return e},i(s.Tween.prototype,"run",function(){1<s.easing[this.easing].length&&(u("easing-one-arg","'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=H),k.apply(this,arguments)},"easing-one-arg"),S=s.fx.interval,P="jQuery.fx.interval is deprecated",n.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return n.document.hidden||u("fx-interval",P),s.migrateIsPatchEnabled("fx-interval")&&void 0===S?13:S},set:function(e){u("fx-interval",P),S=e}}));var M=s.fn.load,q=s.event.add,O=s.event.fix;s.event.props=[],s.event.fixHooks={},r(s.event.props,"concat",s.event.props.concat,"event-old-patch","jQuery.event.props.concat() is deprecated and removed"),i(s.event,"fix",function(e){var t,r=e.type,n=this.fixHooks[r],o=s.event.props;if(o.length){u("event-old-patch","jQuery.event.props are deprecated and removed: "+o.join());while(o.length)s.event.addProp(o.pop())}if(n&&!n._migrated_&&(n._migrated_=!0,u("event-old-patch","jQuery.event.fixHooks are deprecated and removed: "+r),(o=n.props)&&o.length))while(o.length)s.event.addProp(o.pop());return t=O.call(this,e),n&&n.filter?n.filter(t,e):t},"event-old-patch"),i(s.event,"add",function(e,t){return e===n&&"load"===t&&"complete"===n.document.readyState&&u("load-after-event","jQuery(window).on('load'...) called after load event occurred"),q.apply(this,arguments)},"load-after-event"),s.each(["load","unload","error"],function(e,t){i(s.fn,t,function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?M.apply(this,e):(u("shorthand-removed-v3","jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))},"shorthand-removed-v3")}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,r){c(s.fn,r,function(e,t){return 0<arguments.length?this.on(r,null,e,t):this.trigger(r)},"shorthand-deprecated-v3","jQuery.fn."+r+"() event shorthand is deprecated")}),s(function(){s(n.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===n.document&&u("ready-event","'ready' event is deprecated")}},c(s.fn,"bind",function(e,t,r){return this.on(e,null,t,r)},"pre-on-methods","jQuery.fn.bind() is deprecated"),c(s.fn,"unbind",function(e,t){return this.off(e,null,t)},"pre-on-methods","jQuery.fn.unbind() is deprecated"),c(s.fn,"delegate",function(e,t,r,n){return this.on(t,e,r,n)},"pre-on-methods","jQuery.fn.delegate() is deprecated"),c(s.fn,"undelegate",function(e,t,r){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},"pre-on-methods","jQuery.fn.undelegate() is deprecated"),c(s.fn,"hover",function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)},"pre-on-methods","jQuery.fn.hover() is deprecated");function T(e){var t=n.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}var F=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;s.UNSAFE_restoreLegacyHtmlPrefilter=function(){s.migrateEnablePatches("self-closed-tags")},i(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(F,"<$1></$2>"))!==t&&T(t)!==T(r)&&u("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(F,"<$1></$2>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags");var D,W,_,I=s.fn.offset;return i(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?I.apply(this,arguments):(u("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(D=s.param,i(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(u("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),D.call(this,e,t)},"param-ajax-traditional")),c(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(W=s.Deferred,_=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],i(s,"Deferred",function(e){var a=W(),i=a.promise();function t(){var o=arguments;return s.Deferred(function(n){s.each(_,function(e,t){var r="function"==typeof o[e]&&o[e];a[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[t[0]+"With"](this===i?n.promise():this,r?[e]:arguments)})}),o=null}).promise()}return c(a,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),c(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(a,a),a},"deferred-pipe"),s.Deferred.exceptionHook=W.exceptionHook),s});
+/*! jQuery Migrate v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.com/license */
+"undefined"==typeof jQuery.migrateMute&&(jQuery.migrateMute=!0),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],function(e){return t(e,window)}):"object"==typeof module&&module.exports?module.exports=t(require("jquery"),window):t(jQuery,window)}(function(s,a){"use strict";function e(e){return 0<=function(e,t){for(var r=/^(\d+)\.(\d+)\.(\d+)/,a=r.exec(e)||[],n=r.exec(t)||[],o=1;o<=3;o++){if(+n[o]<+a[o])return 1;if(+a[o]<+n[o])return-1}return 0}(s.fn.jquery,e)}s.migrateVersion="3.6.0";var t=Object.create(null);s.migrateDisablePatches=function(){for(var e=0;e<arguments.length;e++)t[arguments[e]]=!0},s.migrateEnablePatches=function(){for(var e=0;e<arguments.length;e++)delete t[arguments[e]]},s.migrateIsPatchEnabled=function(e){return!t[e]},a.console&&a.console.log&&(s&&e("3.0.0")&&!e("4.0.0")||a.console.log("JQMIGRATE: jQuery 3.x REQUIRED"),s.migrateWarnings&&a.console.log("JQMIGRATE: Migrate plugin loaded multiple times"),a.console.log("JQMIGRATE: Migrate is installed"+(s.migrateMute?"":" with logging active")+", version "+s.migrateVersion));var n={};function f(e,t){var r=a.console;!s.migrateIsPatchEnabled(e)||s.migrateDeduplicateWarnings&&n[t]||(n[t]=!0,s.migrateWarnings.push(t+" ["+e+"]"),r&&r.warn&&!s.migrateMute&&(r.warn("JQMIGRATE: "+t),s.migrateTrace&&r.trace&&r.trace()))}function r(e,t,r,a,n){Object.defineProperty(e,t,{configurable:!0,enumerable:!0,get:function(){return f(a,n),r},set:function(e){f(a,n),r=e}})}function o(e,t,r,a,n){var o=e[t];e[t]=function(){return n&&f(a,n),(s.migrateIsPatchEnabled(a)?r:o||s.noop).apply(this,arguments)}}function c(e,t,r,a,n){if(!n)throw new Error("No warning message provided");return o(e,t,r,a,n),0}function i(e,t,r,a){return o(e,t,r,a),0}s.migrateDeduplicateWarnings=!0,s.migrateWarnings=[],void 0===s.migrateTrace&&(s.migrateTrace=!0),s.migrateReset=function(){n={},s.migrateWarnings.length=0},"BackCompat"===a.document.compatMode&&f("quirks","jQuery is not compatible with Quirks Mode");var d=[],u=d.push,l=d.sort,p=d.splice,m={},y=/^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;c(s.fn,"size",function(){return this.length},"size","jQuery.fn.size() is deprecated and removed; use the .length property"),c(s,"parseJSON",function(){return JSON.parse.apply(null,arguments)},"parseJSON","jQuery.parseJSON is deprecated; use JSON.parse"),c(s,"holdReady",s.holdReady,"holdReady","jQuery.holdReady is deprecated"),c(s,"unique",s.uniqueSort,"unique","jQuery.unique is deprecated; use jQuery.uniqueSort"),e("3.1.1")&&c(s,"trim",function(e){return null==e?"":(e+"").replace(y,"$1")},"trim","jQuery.trim is deprecated; use String.prototype.trim"),e("3.2.0")&&(c(s,"nodeName",function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},"nodeName","jQuery.nodeName is deprecated"),c(s,"isArray",Array.isArray,"isArray","jQuery.isArray is deprecated; use Array.isArray")),e("3.3.0")&&(c(s,"isNumeric",function(e){var t=typeof e;return("number"==t||"string"==t)&&!isNaN(e-parseFloat(e))},"isNumeric","jQuery.isNumeric() is deprecated"),s.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){m["[object "+t+"]"]=t.toLowerCase()}),c(s,"type",function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?m[Object.prototype.toString.call(e)]||"object":typeof e},"type","jQuery.type is deprecated"),c(s,"isFunction",function(e){return"function"==typeof(t=e)&&"number"!=typeof t.nodeType&&"function"!=typeof t.item;var t},"isFunction","jQuery.isFunction() is deprecated"),c(s,"isWindow",function(e){return null!=e&&e===e.window},"isWindow","jQuery.isWindow() is deprecated"),c(s,"now",Date.now,"now","jQuery.now() is deprecated; use Date.now()"),c(s,"camelCase",s.camelCase,"camelCase","jQuery.camelCase() is deprecated"),c(s,"proxy",s.proxy,"proxy","DEPRECATED: jQuery.proxy()")),e("3.7.0")&&(c(s.fn,"push",u,"push","jQuery.fn.push() is deprecated; use .add() or convert to an array"),c(s.fn,"sort",l,"sort","jQuery.fn.sort() is deprecated; convert to an array before sorting"),c(s.fn,"splice",p,"splice","jQuery.fn.splice() is deprecated; use .slice() or .not() with .eq()"));var h,g,v,j,b,w,x=s.fn.init,Q=s.find,P=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/,A=/\[(\s*[-\w]+\s*)([~|^$*]?=)\s*([-\w#]*?#[-\w#]*)\s*\]/g;for(h in i(s.fn,"init",function(e){var t=Array.prototype.slice.call(arguments);return s.migrateIsPatchEnabled("selector-empty-id")&&"string"==typeof e&&"#"===e&&(f("selector-empty-id","jQuery( '#' ) is not a valid selector"),t[0]=[]),x.apply(this,t)},"selector-empty-id"),s.fn.init.prototype=s.fn,i(s,"find",function(t){var r=Array.prototype.slice.call(arguments);if("string"==typeof t&&P.test(t))try{a.document.querySelector(t)}catch(e){t=t.replace(A,function(e,t,r,a){return"["+t+r+'"'+a+'"]'});try{a.document.querySelector(t),f("selector-hash","Attribute selector with '#' must be quoted: "+r[0]),r[0]=t}catch(e){f("selector-hash","Attribute selector with '#' was not fixed: "+r[0])}}return Q.apply(this,r)},"selector-hash"),Q)Object.prototype.hasOwnProperty.call(Q,h)&&(s.find[h]=Q[h]);r(s.expr,"filters",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr.filters is deprecated; use jQuery.expr.pseudos"),r(s.expr,":",s.expr.pseudos,"expr-pre-pseudos","jQuery.expr[':'] is deprecated; use jQuery.expr.pseudos"),e("3.7.0")&&(i(s.expr.filter,"PSEUDO",function(e,o){var t,r,i=s.expr.pseudos[e]||s.expr.setFilters[e.toLowerCase()]||s.error("Syntax error, unrecognized expression: unsupported pseudo: "+e);return i[s.expando]?i(o):1<i.length?(f("legacy-custom-pseudos","Pseudos with multiple arguments are deprecated; use jQuery.expr.createPseudo()"),t=[e,e,"",o],s.expr.setFilters.hasOwnProperty(e.toLowerCase())?((r=function(e,t){var r,a=i(e,o),n=a.length;while(n--)e[r=Array.prototype.indexOf.call(e,a[n])]=!(t[r]=a[n])})[s.expando]=!0,r):function(e){return i(e,0,t)}):i},"legacy-custom-pseudos"),"undefined"!=typeof Proxy&&s.each(["pseudos","setFilters"],function(e,t){s.expr[t]=new Proxy(s.expr[t],{set:function(e,t,r){return"function"==typeof r&&!r[s.expando]&&1<r.length&&f("legacy-custom-pseudos","Pseudos with multiple arguments are deprecated; use jQuery.expr.createPseudo()"),Reflect.set.apply(this,arguments)}})})),s.ajax&&(g=s.ajax,v=[],j="migrate-"+Date.now(),b=s.ajaxSettings.jsonpCallback,w=/(=)\?(?=&|$)|\?\?/,i(s,"ajax",function(){var e=g.apply(this,arguments);return e.promise&&(c(e,"success",e.done,"jqXHR-methods","jQXHR.success is deprecated and removed"),c(e,"error",e.fail,"jqXHR-methods","jQXHR.error is deprecated and removed"),c(e,"complete",e.always,"jqXHR-methods","jQXHR.complete is deprecated and removed")),e},"jqXHR-methods"),s.ajaxSetup({jsonpCallback:function(){if(s.migrateIsPatchEnabled("jsonp-promotion")){var e=v.pop()||s.expando+"_"+j++;return this[e]=!0,e}return b.apply(this,arguments)}}),s.ajaxPrefilter("+json",function(e){s.migrateIsPatchEnabled("jsonp-promotion")&&!1!==e.jsonp&&(w.test(e.url)||"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&w.test(e.data))&&f("jsonp-promotion","JSON-to-JSONP auto-promotion is deprecated")}));var _=s.fn.removeAttr,k=s.attr,C=s.fn.toggleClass,E="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",S=new RegExp("^(?:"+E+")$","i"),D=/\S+/g,O={hidden:["until-found"]};function H(e){return e.replace(/-([a-z])/g,function(e,t){return t.toUpperCase()})}function I(e,t){if(!Object.setPrototypeOf)return e;for(var r=t.warningId,a=t.apiName,n=["__proto__","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],o=Object.create(null),i=0;i<n.length;i++)!function(t){Object.defineProperty(o,t,{get:function(){return f(r,"Accessing properties from "+a+" inherited from Object.prototype is deprecated"),t+"__cache"in o?o[t+"__cache"]:Object.prototype[t]},set:function(e){f(r,"Setting properties from "+a+" inherited from Object.prototype is deprecated"),o[t+"__cache"]=e}})}(n[i]);return Object.setPrototypeOf(o,Object.prototype),Object.setPrototypeOf(e,o),e}s.each(E.split("|"),function(e,r){var t=s.attrHooks[r]||{};s.attrHooks[r]={get:t.get||function(e){var t;return s.migrateIsPatchEnabled("boolean-attributes")&&(t=e.getAttribute(r))!==r&&null!=t&&-1===(O[r]||[]).indexOf(String(t).toLowerCase())&&f("boolean-attributes","Boolean attribute '"+r+"' value is different from its lowercased name"),null},set:t.set||function(e,t,r){return s.migrateIsPatchEnabled("boolean-attributes")?t!==r&&-1===(O[r]||[]).indexOf(String(t).toLowerCase())?(!1!==t&&f("boolean-attributes","Boolean attribute '"+r+"' is not set to its lowercased name"),!1===t?s.removeAttr(e,r):e.setAttribute(r,r),r):void 0:(!1===t?s.removeAttr(e,r):e.setAttribute(r,r),r)}}}),i(s,"attr",function(e,t,r){var a=e.nodeType;return 3===a||8===a||2===a||"undefined"==typeof e.getAttribute||!1!==r||0===t.toLowerCase().indexOf("aria-")||S.test(t)?k.apply(this,arguments):(f("attr-false","Setting the non-ARIA non-boolean attribute '"+t+"' to false"),void s.attr(e,t,"false"))},"attr-false"),i(s.fn,"removeAttr",function(e){var r=this,a=!1;return s.each(e.match(D),function(e,t){S.test(t)&&r.each(function(){if(!1!==s(this).prop(t))return!(a=!0)}),a&&(f("removeAttr-bool","jQuery.fn.removeAttr no longer sets boolean properties: "+t),r.prop(t,!1))}),_.apply(this,arguments)},"removeAttr-bool"),i(s.fn,"toggleClass",function(t){return void 0!==t&&"boolean"!=typeof t?C.apply(this,arguments):(f("toggleClass-bool","jQuery.fn.toggleClass( boolean ) is deprecated"),this.each(function(){var e=this.getAttribute&&this.getAttribute("class")||"";e&&s.data(this,"__className__",e),this.setAttribute&&this.setAttribute("class",!e&&!1!==t&&s.data(this,"__className__")||"")}))},"toggleClass-bool");var N,M=!1,R=/^[a-z]/,q=/^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;s.swap&&s.each(["height","width","reliableMarginRight"],function(e,t){var r=s.cssHooks[t]&&s.cssHooks[t].get;r&&(s.cssHooks[t].get=function(){var e;return M=!0,e=r.apply(this,arguments),M=!1,e})}),i(s,"swap",function(e,t,r,a){var n,o,i={};for(o in M||f("swap","jQuery.swap() is undocumented and deprecated"),t)i[o]=e.style[o],e.style[o]=t[o];for(o in n=r.apply(e,a||[]),t)e.style[o]=i[o];return n},"swap"),e("3.4.0")&&"undefined"!=typeof Proxy&&(s.cssProps=new Proxy(s.cssProps||{},{set:function(){return f("cssProps","jQuery.cssProps is deprecated"),Reflect.set.apply(this,arguments)}})),N=s.fn.css,i(s.fn,"css",function(e,t){var r,a,n=this;return e&&"object"==typeof e&&!Array.isArray(e)?(s.each(e,function(e,t){s.fn.css.call(n,e,t)}),this):("number"==typeof t&&(r=H(e),a=r,R.test(a)&&q.test(a[0].toUpperCase()+a.slice(1))||s.cssNumber[r]||f("css-number",'Number-typed values are deprecated for jQuery.fn.css( "'+e+'", value )')),N.apply(this,arguments))},"css-number");var T,F,L,W,$=/[A-Z]/g,J=/[^\x20\t\r\n\f]+/g,B=s.data,z=s._data;function X(e){return e.replace($,"-$&").toLowerCase()}function G(s,e){var c=e.apiName,t=e.isPrivateData,d=e.isInstanceMethod,u=t?z:B;function l(e,t){var r,a;if(e){for(a in r=u(e),t)a!==H(a)&&(f("data-camelCase",c+" always sets/gets camelCased names: "+a),r[a]=t[a]);return d?s.call(this,t):s.call(this,e,t),t}}function p(e,t,r){var a;if(e)return(a=u(e))&&t in a&&(f("data-camelCase",c+" always sets/gets camelCased names: "+t),a[t]=r),u(e,t,r),void 0!==r?r:t}return function(e,t,r){var a,n=this,o=Array.prototype.slice.call(arguments),i=o.length;return d&&(r=t,t=e,e=n[0],i++),t&&"object"==typeof t&&2===i?d?n.each(function(){l.call(n,this,t)}):l.call(n,e,t):t&&"string"==typeof t&&t!==H(t)&&2<i?d?n.each(function(){p.call(n,this,t,r)}):p.call(n,e,t,r):e&&t&&"string"==typeof t&&t!==H(t)&&2===i&&(a=u(e))&&t in a?(f("data-camelCase",c+" always sets/gets camelCased names: "+t),a[t]):s.apply(this,o)}}function U(i,e){var t=e.isPrivateData,s=e.isInstanceMethod,c=t?z:B;function r(e,t){var r,a,n,o=c(e);if(void 0!==t){Array.isArray(t)||(t=t in o?[t]:t.match(J)||[]),n=t.map(X),r=t.length;while(r--)(a=t[r])!==H(a)&&a in o&&f("data-camelCase","jQuery"+(s?".fn":"")+".data() always sets/gets camelCased names: "+a),delete o[a];r=n.length;while(r--)delete o[n[r]];i(e,t)}else i(e)}return function(e,t){if(s)return t=e,this.each(function(){r(this,t)});r(e,t)}}function V(t,e){var r=e.warningId,a=e.apiName,n=e.isInstanceMethod;return function(){var e=t.apply(this,arguments);return arguments.length!==(n?0:1)||void 0===e||I(e,{warningId:r,apiName:a}),e}}i(s,"data",G(s.data,{apiName:"jQuery.data()",isPrivateData:!1,isInstanceMethod:!1}),"data-camelCase"),i(s,"_data",G(s._data,{apiName:"jQuery._data()",isPrivateData:!0,isInstanceMethod:!1}),"data-camelCase"),i(s.fn,"data",G(s.fn.data,{apiName:"jQuery.fn.data()",isPrivateData:!1,isInstanceMethod:!0}),"data-camelCase"),i(s,"removeData",U(s.removeData,{isPrivateData:!1,isInstanceMethod:!1}),"data-camelCase"),i(s,"_removeData",U(s._removeData,{isPrivateData:!0,isInstanceMethod:!1}),"data-camelCase"),i(s.fn,"removeData",U(s.removeData,{isPrivateData:!1,isInstanceMethod:!0}),"data-camelCase"),i(s,"data",V(s.data,{warningId:"data-null-proto",apiName:"jQuery.data()",isInstanceMethod:!1}),"data-null-proto"),i(s,"_data",V(s._data,{warningId:"data-null-proto",apiName:"jQuery._data()",isInstanceMethod:!1}),"data-null-proto"),i(s.fn,"data",V(s.fn.data,{warningId:"data-null-proto",apiName:"jQuery.fn.data()",isInstanceMethod:!0}),"data-null-proto"),s.fx&&(L=s.Tween.prototype.run,W=function(e){return e},i(s.Tween.prototype,"run",function(){1<s.easing[this.easing].length&&(f("easing-one-arg","'jQuery.easing."+this.easing.toString()+"' should use only one argument"),s.easing[this.easing]=W),L.apply(this,arguments)},"easing-one-arg"),T=s.fx.interval,F="jQuery.fx.interval is deprecated",a.requestAnimationFrame&&Object.defineProperty(s.fx,"interval",{configurable:!0,enumerable:!0,get:function(){return a.document.hidden||f("fx-interval",F),s.migrateIsPatchEnabled("fx-interval")&&void 0===T?13:T},set:function(e){f("fx-interval",F),T=e}}));var Z=s.fn.load,K=s.event.add,Y=s.event.fix;s.event.props=[],s.event.fixHooks={},r(s.event.props,"concat",s.event.props.concat,"event-old-patch","jQuery.event.props.concat() is deprecated and removed"),i(s.event,"fix",function(e){var t,r=e.type,a=this.fixHooks[r],n=s.event.props;if(n.length){f("event-old-patch","jQuery.event.props are deprecated and removed: "+n.join());while(n.length)s.event.addProp(n.pop())}if(a&&!a._migrated_&&(a._migrated_=!0,f("event-old-patch","jQuery.event.fixHooks are deprecated and removed: "+r),(n=a.props)&&n.length))while(n.length)s.event.addProp(n.pop());return t=Y.call(this,e),a&&a.filter?a.filter(t,e):t},"event-old-patch"),i(s.event,"add",function(e,t){return e===a&&"load"===t&&"complete"===a.document.readyState&&f("load-after-event","jQuery(window).on('load'...) called after load event occurred"),K.apply(this,arguments)},"load-after-event"),s.each(["load","unload","error"],function(e,t){i(s.fn,t,function(){var e=Array.prototype.slice.call(arguments,0);return"load"===t&&"string"==typeof e[0]?Z.apply(this,e):(f("shorthand-removed-v3","jQuery.fn."+t+"() is deprecated"),e.splice(0,0,t),arguments.length?this.on.apply(this,e):(this.triggerHandler.apply(this,e),this))},"shorthand-removed-v3")}),s.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){c(s.fn,t,s.fn[t],"shorthand-deprecated-v3","DEPRECATED: jQuery.fn."+t+"() event shorthand")}),s(function(){s(a.document).triggerHandler("ready")}),s.event.special.ready={setup:function(){this===a.document&&f("ready-event","'ready' event is deprecated")}},c(s.fn,"bind",function(e,t,r){return this.on(e,null,t,r)},"pre-on-methods","jQuery.fn.bind() is deprecated"),c(s.fn,"unbind",function(e,t){return this.off(e,null,t)},"pre-on-methods","jQuery.fn.unbind() is deprecated"),c(s.fn,"delegate",function(e,t,r,a){return this.on(t,e,r,a)},"pre-on-methods","jQuery.fn.delegate() is deprecated"),c(s.fn,"undelegate",function(e,t,r){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",r)},"pre-on-methods","jQuery.fn.undelegate() is deprecated"),c(s.fn,"hover",function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)},"pre-on-methods","jQuery.fn.hover() is deprecated"),I(s.event.special,{warningId:"event-special-null-proto",apiName:"jQuery.event.special"});function ee(e){var t=a.document.implementation.createHTMLDocument("");return t.body.innerHTML=e,t.body&&t.body.innerHTML}var te=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi;c(s,"UNSAFE_restoreLegacyHtmlPrefilter",function(){s.migrateEnablePatches("self-closed-tags")},"legacy-self-closed-tags",'jQuery.UNSAFE_restoreLegacyHtmlPrefilter deprecated; use `jQuery.migrateEnablePatches( "self-closed-tags" )`'),i(s,"htmlPrefilter",function(e){var t,r;return(r=(t=e).replace(te,"<$1></$2>"))!==t&&ee(t)!==ee(r)&&f("self-closed-tags","HTML tags must be properly nested and closed: "+t),e.replace(te,"<$1></$2>")},"self-closed-tags"),s.migrateDisablePatches("self-closed-tags");var re,ae,ne,oe,ie=s.fn.offset;return i(s.fn,"offset",function(){var e=this[0];return!e||e.nodeType&&e.getBoundingClientRect?ie.apply(this,arguments):(f("offset-valid-elem","jQuery.fn.offset() requires a valid DOM element"),arguments.length?this:void 0)},"offset-valid-elem"),s.ajax&&(re=s.param,i(s,"param",function(e,t){var r=s.ajaxSettings&&s.ajaxSettings.traditional;return void 0===t&&r&&(f("param-ajax-traditional","jQuery.param() no longer uses jQuery.ajaxSettings.traditional"),t=r),re.call(this,e,t)},"param-ajax-traditional")),c(s.fn,"andSelf",s.fn.addBack,"andSelf","jQuery.fn.andSelf() is deprecated and removed, use jQuery.fn.addBack()"),s.Deferred&&(ne=s.Deferred,oe=[["resolve","done",s.Callbacks("once memory"),s.Callbacks("once memory"),"resolved"],["reject","fail",s.Callbacks("once memory"),s.Callbacks("once memory"),"rejected"],["notify","progress",s.Callbacks("memory"),s.Callbacks("memory")]],i(s,"Deferred",function(e){var o=ne(),i=o.promise();function t(){var n=arguments;return s.Deferred(function(a){s.each(oe,function(e,t){var r="function"==typeof n[e]&&n[e];o[t[1]](function(){var e=r&&r.apply(this,arguments);e&&"function"==typeof e.promise?e.promise().done(a.resolve).fail(a.reject).progress(a.notify):a[t[0]+"With"](this===i?a.promise():this,r?[e]:arguments)})}),n=null}).promise()}return c(o,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),c(i,"pipe",t,"deferred-pipe","deferred.pipe() is deprecated"),e&&e.call(o,o),o},"deferred-pipe"),s.Deferred.exceptionHook=ne.exceptionHook,s.Deferred.getErrorHook=ne.getErrorHook,Object.defineProperty(s.Deferred,"getStackHook",{configurable:!0,enumerable:!0,get:function(){return s.migrateIsPatchEnabled("deferred-getStackHook")?s.Deferred.getErrorHook:ae},set:function(e){s.migrateIsPatchEnabled("deferred-getStackHook")?s.Deferred.getErrorHook!==e&&(f("deferred-getStackHook","jQuery.Deferred.getStackHook is deprecated; use jQuery.Deferred.getErrorHook"),s.Deferred.getErrorHook=e):ae=e}})),s});
diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php
index 7b93f6a5c1..6b01efa171 100644
--- a/wp-includes/script-loader.php
+++ b/wp-includes/script-loader.php
@@ -906,7 +906,7 @@ function wp_default_scripts( $scripts ) {
 	 */
 	$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '3.7.1' );
 	$scripts->add( 'jquery-core', "/wp-includes/js/jquery/jquery$suffix.js", array(), '3.7.1' );
-	$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '3.4.1' );
+	$scripts->add( 'jquery-migrate', "/wp-includes/js/jquery/jquery-migrate$suffix.js", array(), '3.6.0' );

 	/*
 	 * Full jQuery UI.
diff --git a/wp-includes/version.php b/wp-includes/version.php
index a88ee97b42..571a2decde 100644
--- a/wp-includes/version.php
+++ b/wp-includes/version.php
@@ -16,7 +16,7 @@
  *
  * @global string $wp_version
  */
-$wp_version = '7.2-alpha-63982';
+$wp_version = '7.2-alpha-63983';

 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.