Submit
Path:
~
/
home
/
contenidosenred
/
public_html
/
OD
/
wp-admin
/
includes
/
219846
/
File Content:
twentytwenty.tar
inc/block-patterns.php 0000644 00000023305 15105417315 0010763 0 ustar 00 <?php /** * Block Patterns * * @link https://developer.wordpress.org/reference/functions/register_block_pattern/ * @link https://developer.wordpress.org/reference/functions/register_block_pattern_category/ * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.6 */ /** * Register Block Pattern Category. */ if ( function_exists( 'register_block_pattern_category' ) ) { register_block_pattern_category( 'twentytwenty', array( 'label' => esc_html__( 'Twenty Twenty', 'twentytwenty' ) ) ); } /** * Register Block Patterns. */ if ( function_exists( 'register_block_pattern' ) ) { // Call to Action. register_block_pattern( 'twentytwenty/call-to-action', array( 'title' => esc_html__( 'Call to Action', 'twentytwenty' ), 'categories' => array( 'twentytwenty' ), 'viewportWidth' => 1400, 'content' => implode( '', array( '<!-- wp:group {"align":"wide","style":{"color":{"background":"#ffffff"}}} -->', '<div class="wp-block-group alignwide has-background" style="background-color:#ffffff"><div class="wp-block-group__inner-container"><!-- wp:group -->', '<div class="wp-block-group"><div class="wp-block-group__inner-container"><!-- wp:heading {"align":"center"} -->', '<h2 class="has-text-align-center">' . esc_html__( 'Support the Museum and Get Exclusive Offers', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"align":"center"} -->', '<p class="has-text-align-center">' . esc_html__( 'Members get access to exclusive exhibits and sales. Our memberships cost $99.99 and are billed annually.', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"align":"center","className":"is-style-outline"} -->', '<div class="wp-block-button aligncenter is-style-outline"><a class="wp-block-button__link" href="#">' . esc_html__( 'Become a Member', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div></div>', '<!-- /wp:group --></div></div>', '<!-- /wp:group -->', ) ), ) ); // Double Call to Action. register_block_pattern( 'twentytwenty/double-call-to-action', array( 'title' => esc_html__( 'Double Call to Action', 'twentytwenty' ), 'categories' => array( 'twentytwenty' ), 'viewportWidth' => 1400, 'content' => implode( '', array( '<!-- wp:columns {"align":"wide"} -->', '<div class="wp-block-columns alignwide"><!-- wp:column -->', '<div class="wp-block-column"><!-- wp:group {"style":{"color":{"background":"#ffffff"}}} -->', '<div class="wp-block-group has-background" style="background-color:#ffffff"><div class="wp-block-group__inner-container"><!-- wp:heading {"align":"center"} -->', '<h2 class="has-text-align-center">' . esc_html__( 'The Museum', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"align":"center"} -->', '<p class="has-text-align-center">' . esc_html__( 'Award-winning exhibitions featuring internationally-renowned artists.', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:buttons {"align":"center"} -->', '<div class="wp-block-buttons aligncenter"><!-- wp:button {"className":"is-style-outline"} -->', '<div class="wp-block-button is-style-outline"><a class="wp-block-button__link">' . esc_html__( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div>', '<!-- /wp:buttons --></div></div>', '<!-- /wp:group --></div>', '<!-- /wp:column -->', '<!-- wp:column -->', '<div class="wp-block-column"><!-- wp:group {"style":{"color":{"background":"#ffffff"}}} -->', '<div class="wp-block-group has-background" style="background-color:#ffffff"><div class="wp-block-group__inner-container"><!-- wp:heading {"align":"center"} -->', '<h2 class="has-text-align-center">' . esc_html__( 'The Store', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"align":"center"} -->', '<p class="has-text-align-center">' . esc_html__( 'An awe-inspiring collection of books, prints, and gifts from our exhibitions.', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:buttons {"align":"center"} -->', '<div class="wp-block-buttons aligncenter"><!-- wp:button {"className":"is-style-outline"} -->', '<div class="wp-block-button is-style-outline"><a class="wp-block-button__link">' . esc_html__( 'Shop Now', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div>', '<!-- /wp:buttons --></div></div>', '<!-- /wp:group --></div>', '<!-- /wp:column --></div>', '<!-- /wp:columns -->', ) ), ) ); // Event Details. register_block_pattern( 'twentytwenty/event-details', array( 'title' => esc_html__( 'Event Details', 'twentytwenty' ), 'categories' => array( 'twentytwenty' ), 'viewportWidth' => 1400, 'content' => implode( '', array( '<!-- wp:group {"align":"wide","backgroundColor":"primary"} -->', '<div class="wp-block-group alignwide has-primary-background-color has-background"><div class="wp-block-group__inner-container"><!-- wp:columns -->', '<div class="wp-block-columns"><!-- wp:column -->', '<div class="wp-block-column"><!-- wp:paragraph {"align":"center","textColor":"background","fontSize":"large"} -->', '<p class="has-text-align-center has-background-color has-text-color has-large-font-size">' . wp_kses_post( __( '<em>Dates</em><br>Aug 1 — Dec 1', 'twentytwenty' ) ) . '</p>', '<!-- /wp:paragraph --></div>', '<!-- /wp:column -->', '<!-- wp:column -->', '<div class="wp-block-column"><!-- wp:paragraph {"align":"center","textColor":"background","fontSize":"large"} -->', '<p class="has-text-align-center has-background-color has-text-color has-large-font-size">' . wp_kses_post( __( '<em>Location</em><br>Exhibit Hall B', 'twentytwenty' ) ) . '</p>', '<!-- /wp:paragraph --></div>', '<!-- /wp:column -->', '<!-- wp:column -->', '<div class="wp-block-column"><!-- wp:paragraph {"align":"center","textColor":"background","fontSize":"large"} -->', '<p class="has-text-align-center has-background-color has-text-color has-large-font-size">' . wp_kses_post( __( '<em>Price</em><br>Included', 'twentytwenty' ) ) . '</p>', '<!-- /wp:paragraph --></div>', '<!-- /wp:column --></div>', '<!-- /wp:columns --></div></div>', '<!-- /wp:group -->', ) ), ) ); // Featured Content. register_block_pattern( 'twentytwenty/featured-content', array( 'title' => esc_html__( 'Featured Content', 'twentytwenty' ), 'categories' => array( 'twentytwenty' ), 'viewportWidth' => 1400, 'content' => implode( '', array( '<!-- wp:columns {"align":"wide"} -->', '<div class="wp-block-columns alignwide"><!-- wp:column -->', '<div class="wp-block-column"><!-- wp:image {"sizeSlug":"full"} -->', '<figure class="wp-block-image size-full"><img src="' . esc_url( get_template_directory_uri() ) . '/assets/images/2020-three-quarters-1.png" alt="' . esc_attr__( 'Abstract Rectangles', 'twentytwenty' ) . '"/></figure>', '<!-- /wp:image -->', '<!-- wp:heading -->', '<h2>' . esc_html__( 'Works and Days', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"fontSize":"larger"} -->', '<p class="has-larger-font-size">' . esc_html__( 'August 1 — December 1', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"align":"left","className":"is-style-outline"} -->', '<div class="wp-block-button alignleft is-style-outline"><a class="wp-block-button__link" href="#">' . esc_html__( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div>', '<!-- /wp:column -->', '<!-- wp:column -->', '<div class="wp-block-column"><!-- wp:image {sizeSlug":"full"} -->', '<figure class="wp-block-image size-full"><img src="' . esc_url( get_template_directory_uri() ) . '/assets/images/2020-three-quarters-2.png" alt="' . esc_attr__( 'Abstract Rectangles', 'twentytwenty' ) . '"/></figure>', '<!-- /wp:image -->', '<!-- wp:heading -->', '<h2>' . esc_html__( 'The Life I Deserve', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"fontSize":"larger"} -->', '<p class="has-larger-font-size">' . esc_html__( 'August 1 — December 1', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"align":"left","className":"is-style-outline"} -->', '<div class="wp-block-button alignleft is-style-outline"><a class="wp-block-button__link" href="#">' . esc_html__( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div>', '<!-- /wp:column --></div>', '<!-- /wp:columns -->', ) ), ) ); // Introduction. register_block_pattern( 'twentytwenty/introduction', array( 'title' => esc_html__( 'Introduction', 'twentytwenty' ), 'categories' => array( 'twentytwenty' ), 'viewportWidth' => 1400, 'content' => implode( '', array( '<!-- wp:heading {"align":"center"} -->', '<h2 class="has-text-align-center">' . esc_html__( 'The Premier Destination for Modern Art in Sweden', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"dropCap":true} -->', '<p class="has-drop-cap">' . esc_html__( 'With seven floors of striking architecture, UMoMA shows exhibitions of international contemporary art, sometimes along with art historical retrospectives. Existential, political, and philosophical issues are intrinsic to our program. As visitor, you are invited to guided tours artist talks, lectures, film screenings, and other events with free admission.', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', ) ), ) ); } inc/template-tags.php 0000644 00000055342 15105417315 0010610 0 ustar 00 <?php /** * Custom template tags for this theme. * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.0 */ /** * Table of Contents: * Logo & Description * Comments * Post Meta * Menus * Classes * Archives * Miscellaneous */ /** * Logo & Description */ /** * Displays the site logo, either text or image. * * @since Twenty Twenty 1.0 * * @param array $args Arguments for displaying the site logo either as an image or text. * @param bool $echo Echo or return the HTML. * @return string Compiled HTML based on our arguments. */ function twentytwenty_site_logo( $args = array(), $echo = true ) { $logo = get_custom_logo(); $site_title = get_bloginfo( 'name' ); $contents = ''; $classname = ''; $defaults = array( 'logo' => '%1$s<span class="screen-reader-text">%2$s</span>', 'logo_class' => 'site-logo', 'title' => '<a href="%1$s">%2$s</a>', 'title_class' => 'site-title', 'home_wrap' => '<h1 class="%1$s">%2$s</h1>', 'single_wrap' => '<div class="%1$s faux-heading">%2$s</div>', 'condition' => ( is_front_page() || is_home() ) && ! is_page(), ); $args = wp_parse_args( $args, $defaults ); /** * Filters the arguments for `twentytwenty_site_logo()`. * * @since Twenty Twenty 1.0 * * @param array $args Parsed arguments. * @param array $defaults Function's default arguments. */ $args = apply_filters( 'twentytwenty_site_logo_args', $args, $defaults ); if ( has_custom_logo() ) { $contents = sprintf( $args['logo'], $logo, esc_html( $site_title ) ); $classname = $args['logo_class']; } else { $contents = sprintf( $args['title'], esc_url( get_home_url( null, '/' ) ), esc_html( $site_title ) ); $classname = $args['title_class']; } $wrap = $args['condition'] ? 'home_wrap' : 'single_wrap'; $html = sprintf( $args[ $wrap ], $classname, $contents ); /** * Filters the arguments for `twentytwenty_site_logo()`. * * @since Twenty Twenty 1.0 * * @param string $html Compiled HTML based on our arguments. * @param array $args Parsed arguments. * @param string $classname Class name based on current view, home or single. * @param string $contents HTML for site title or logo. */ $html = apply_filters( 'twentytwenty_site_logo', $html, $args, $classname, $contents ); if ( ! $echo ) { return $html; } echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * Displays the site description. * * @since Twenty Twenty 1.0 * * @param bool $echo Echo or return the html. * @return string The HTML to display. */ function twentytwenty_site_description( $echo = true ) { $description = get_bloginfo( 'description' ); if ( ! $description ) { return; } $wrapper = '<div class="site-description">%s</div><!-- .site-description -->'; $html = sprintf( $wrapper, esc_html( $description ) ); /** * Filters the HTML for the site description. * * @since Twenty Twenty 1.0 * * @param string $html The HTML to display. * @param string $description Site description via `bloginfo()`. * @param string $wrapper The format used in case you want to reuse it in a `sprintf()`. */ $html = apply_filters( 'twentytwenty_site_description', $html, $description, $wrapper ); if ( ! $echo ) { return $html; } echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } /** * Comments */ /** * Checks if the specified comment is written by the author of the post commented on. * * @since Twenty Twenty 1.0 * * @param object $comment Comment data. * @return bool */ function twentytwenty_is_comment_by_post_author( $comment = null ) { if ( is_object( $comment ) && $comment->user_id > 0 ) { $user = get_userdata( $comment->user_id ); $post = get_post( $comment->comment_post_ID ); if ( ! empty( $user ) && ! empty( $post ) ) { return $comment->user_id === $post->post_author; } } return false; } /** * Filters comment reply link to not JS scroll. * * Filter the comment reply link to add a class indicating it should not use JS slow-scroll, as it * makes it scroll to the wrong position on the page. * * @since Twenty Twenty 1.0 * * @param string $link Link to the top of the page. * @return string Link to the top of the page. */ function twentytwenty_filter_comment_reply_link( $link ) { $link = str_replace( 'class=\'', 'class=\'do-not-scroll ', $link ); return $link; } add_filter( 'comment_reply_link', 'twentytwenty_filter_comment_reply_link' ); /** * Post Meta */ /** * Retrieves and displays the post meta. * * If it's a single post, outputs the post meta values specified in the Customizer settings. * * @since Twenty Twenty 1.0 * * @param int $post_id The ID of the post for which the post meta should be output. * @param string $location Which post meta location to output – single or preview. */ function twentytwenty_the_post_meta( $post_id = null, $location = 'single-top' ) { echo twentytwenty_get_post_meta( $post_id, $location ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped in twentytwenty_get_post_meta(). } /** * Filters the edit post link to add an icon and use the post meta structure. * * @since Twenty Twenty 1.0 * * @param string $link Anchor tag for the edit link. * @param int $post_id Post ID. * @param string $text Anchor text. */ function twentytwenty_edit_post_link( $link, $post_id, $text ) { if ( is_admin() ) { return $link; } $edit_url = get_edit_post_link( $post_id ); if ( ! $edit_url ) { return; } $text = sprintf( wp_kses( /* translators: %s: Post title. Only visible to screen readers. */ __( 'Edit <span class="screen-reader-text">%s</span>', 'twentytwenty' ), array( 'span' => array( 'class' => array(), ), ) ), get_the_title( $post_id ) ); return '<div class="post-meta-wrapper post-meta-edit-link-wrapper"><ul class="post-meta"><li class="post-edit meta-wrapper"><span class="meta-icon">' . twentytwenty_get_theme_svg( 'edit' ) . '</span><span class="meta-text"><a href="' . esc_url( $edit_url ) . '">' . $text . '</a></span></li></ul><!-- .post-meta --></div><!-- .post-meta-wrapper -->'; } add_filter( 'edit_post_link', 'twentytwenty_edit_post_link', 10, 3 ); /** * Retrieves the post meta. * * @since Twenty Twenty 1.0 * * @param int $post_id The ID of the post. * @param string $location The location where the meta is shown. */ function twentytwenty_get_post_meta( $post_id = null, $location = 'single-top' ) { // Require post ID. if ( ! $post_id ) { return; } /** * Filters post types array. * * This filter can be used to hide post meta information of post, page or custom post type * registered by child themes or plugins. * * @since Twenty Twenty 1.0 * * @param array Array of post types. */ $disallowed_post_types = apply_filters( 'twentytwenty_disallowed_post_types_for_meta_output', array( 'page' ) ); // Check whether the post type is allowed to output post meta. if ( in_array( get_post_type( $post_id ), $disallowed_post_types, true ) ) { return; } $post_meta_wrapper_classes = ''; $post_meta_classes = ''; // Get the post meta settings for the location specified. if ( 'single-top' === $location ) { /** * Filters post meta info visibility. * * Use this filter to hide post meta information like Author, Post date, Comments, Is sticky status. * * @since Twenty Twenty 1.0 * * @param array $args { * @type string $author * @type string $post-date * @type string $comments * @type string $sticky * } */ $post_meta = apply_filters( 'twentytwenty_post_meta_location_single_top', array( 'author', 'post-date', 'comments', 'sticky', ) ); $post_meta_wrapper_classes = ' post-meta-single post-meta-single-top'; } elseif ( 'single-bottom' === $location ) { /** * Filters post tags visibility. * * Use this filter to hide post tags. * * @since Twenty Twenty 1.0 * * @param array $args { * @type string $tags * } */ $post_meta = apply_filters( 'twentytwenty_post_meta_location_single_bottom', array( 'tags', ) ); $post_meta_wrapper_classes = ' post-meta-single post-meta-single-bottom'; } // If the post meta setting has the value 'empty', it's explicitly empty and the default post meta shouldn't be output. if ( $post_meta && ! in_array( 'empty', $post_meta, true ) ) { // Make sure we don't output an empty container. $has_meta = false; global $post; $the_post = get_post( $post_id ); setup_postdata( $the_post ); ob_start(); ?> <div class="post-meta-wrapper<?php echo esc_attr( $post_meta_wrapper_classes ); ?>"> <ul class="post-meta<?php echo esc_attr( $post_meta_classes ); ?>"> <?php /** * Fires before post meta HTML display. * * Allow output of additional post meta info to be added by child themes and plugins. * * @since Twenty Twenty 1.0 * @since Twenty Twenty 1.1 Added the `$post_meta` and `$location` parameters. * * @param int $post_id Post ID. * @param array $post_meta An array of post meta information. * @param string $location The location where the meta is shown. * Accepts 'single-top' or 'single-bottom'. */ do_action( 'twentytwenty_start_of_post_meta_list', $post_id, $post_meta, $location ); // Author. if ( post_type_supports( get_post_type( $post_id ), 'author' ) && in_array( 'author', $post_meta, true ) ) { $has_meta = true; ?> <li class="post-author meta-wrapper"> <span class="meta-icon"> <span class="screen-reader-text"><?php _e( 'Post author', 'twentytwenty' ); ?></span> <?php twentytwenty_the_theme_svg( 'user' ); ?> </span> <span class="meta-text"> <?php printf( /* translators: %s: Author name. */ __( 'By %s', 'twentytwenty' ), '<a href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author_meta( 'display_name' ) ) . '</a>' ); ?> </span> </li> <?php } // Post date. if ( in_array( 'post-date', $post_meta, true ) ) { $has_meta = true; ?> <li class="post-date meta-wrapper"> <span class="meta-icon"> <span class="screen-reader-text"><?php _e( 'Post date', 'twentytwenty' ); ?></span> <?php twentytwenty_the_theme_svg( 'calendar' ); ?> </span> <span class="meta-text"> <a href="<?php the_permalink(); ?>"><?php the_time( get_option( 'date_format' ) ); ?></a> </span> </li> <?php } // Categories. if ( in_array( 'categories', $post_meta, true ) && has_category() ) { $has_meta = true; ?> <li class="post-categories meta-wrapper"> <span class="meta-icon"> <span class="screen-reader-text"><?php _e( 'Categories', 'twentytwenty' ); ?></span> <?php twentytwenty_the_theme_svg( 'folder' ); ?> </span> <span class="meta-text"> <?php _ex( 'In', 'A string that is output before one or more categories', 'twentytwenty' ); ?> <?php the_category( ', ' ); ?> </span> </li> <?php } // Tags. if ( in_array( 'tags', $post_meta, true ) && has_tag() ) { $has_meta = true; ?> <li class="post-tags meta-wrapper"> <span class="meta-icon"> <span class="screen-reader-text"><?php _e( 'Tags', 'twentytwenty' ); ?></span> <?php twentytwenty_the_theme_svg( 'tag' ); ?> </span> <span class="meta-text"> <?php the_tags( '', ', ', '' ); ?> </span> </li> <?php } // Comments link. if ( in_array( 'comments', $post_meta, true ) && ! post_password_required() && ( comments_open() || get_comments_number() ) ) { $has_meta = true; ?> <li class="post-comment-link meta-wrapper"> <span class="meta-icon"> <?php twentytwenty_the_theme_svg( 'comment' ); ?> </span> <span class="meta-text"> <?php comments_popup_link(); ?> </span> </li> <?php } // Sticky. if ( in_array( 'sticky', $post_meta, true ) && is_sticky() ) { $has_meta = true; ?> <li class="post-sticky meta-wrapper"> <span class="meta-icon"> <?php twentytwenty_the_theme_svg( 'bookmark' ); ?> </span> <span class="meta-text"> <?php _e( 'Sticky post', 'twentytwenty' ); ?> </span> </li> <?php } /** * Fires after post meta HTML display. * * Allow output of additional post meta info to be added by child themes and plugins. * * @since Twenty Twenty 1.0 * @since Twenty Twenty 1.1 Added the `$post_meta` and `$location` parameters. * * @param int $post_id Post ID. * @param array $post_meta An array of post meta information. * @param string $location The location where the meta is shown. * Accepts 'single-top' or 'single-bottom'. */ do_action( 'twentytwenty_end_of_post_meta_list', $post_id, $post_meta, $location ); ?> </ul><!-- .post-meta --> </div><!-- .post-meta-wrapper --> <?php wp_reset_postdata(); $meta_output = ob_get_clean(); // If there is meta to output, return it. if ( $has_meta && $meta_output ) { return $meta_output; } } } /** * Menus */ /** * Filters classes of wp_list_pages items to match menu items. * * Filter the class applied to wp_list_pages() items with children to match the menu class, to simplify. * styling of sub levels in the fallback. Only applied if the match_menu_classes argument is set. * * @since Twenty Twenty 1.0 * * @param string[] $css_class An array of CSS classes to be applied to each list item. * @param WP_Post $page Page data object. * @param int $depth Depth of page, used for padding. * @param array $args An array of arguments. * @param int $current_page ID of the current page. * @return array CSS class names. */ function twentytwenty_filter_wp_list_pages_item_classes( $css_class, $page, $depth, $args, $current_page ) { // Only apply to wp_list_pages() calls with match_menu_classes set to true. $match_menu_classes = isset( $args['match_menu_classes'] ); if ( ! $match_menu_classes ) { return $css_class; } // Add current menu item class. if ( in_array( 'current_page_item', $css_class, true ) ) { $css_class[] = 'current-menu-item'; } // Add menu item has children class. if ( in_array( 'page_item_has_children', $css_class, true ) ) { $css_class[] = 'menu-item-has-children'; } return $css_class; } add_filter( 'page_css_class', 'twentytwenty_filter_wp_list_pages_item_classes', 10, 5 ); /** * Adds a Sub Nav Toggle to the Expanded Menu and Mobile Menu. * * @since Twenty Twenty 1.0 * * @param stdClass $args An object of wp_nav_menu() arguments. * @param WP_Post $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @return stdClass An object of wp_nav_menu() arguments. */ function twentytwenty_add_sub_toggles_to_main_menu( $args, $item, $depth ) { // Add sub menu toggles to the Expanded Menu with toggles. if ( isset( $args->show_toggles ) && $args->show_toggles ) { // Wrap the menu item link contents in a div, used for positioning. $args->before = '<div class="ancestor-wrapper">'; $args->after = ''; // Add a toggle to items with children. if ( in_array( 'menu-item-has-children', $item->classes, true ) ) { $toggle_target_string = '.menu-modal .menu-item-' . $item->ID . ' > .sub-menu'; $toggle_duration = twentytwenty_toggle_duration(); // Add the sub menu toggle. $args->after .= '<button class="toggle sub-menu-toggle fill-children-current-color" data-toggle-target="' . $toggle_target_string . '" data-toggle-type="slidetoggle" data-toggle-duration="' . absint( $toggle_duration ) . '" aria-expanded="false"><span class="screen-reader-text">' . __( 'Show sub menu', 'twentytwenty' ) . '</span>' . twentytwenty_get_theme_svg( 'chevron-down' ) . '</button>'; } // Close the wrapper. $args->after .= '</div><!-- .ancestor-wrapper -->'; // Add sub menu icons to the primary menu without toggles. } elseif ( 'primary' === $args->theme_location ) { if ( in_array( 'menu-item-has-children', $item->classes, true ) ) { $args->after = '<span class="icon"></span>'; } else { $args->after = ''; } } return $args; } add_filter( 'nav_menu_item_args', 'twentytwenty_add_sub_toggles_to_main_menu', 10, 3 ); /** * Displays SVG icons in social links menu. * * @since Twenty Twenty 1.0 * * @param string $item_output The menu item's starting HTML output. * @param WP_Post $item Menu item data object. * @param int $depth Depth of the menu. Used for padding. * @param stdClass $args An object of wp_nav_menu() arguments. * @return string The menu item output with social icon. */ function twentytwenty_nav_menu_social_icons( $item_output, $item, $depth, $args ) { // Change SVG icon inside social links menu if there is supported URL. if ( 'social' === $args->theme_location ) { $svg = TwentyTwenty_SVG_Icons::get_social_link_svg( $item->url ); if ( empty( $svg ) ) { $svg = twentytwenty_get_theme_svg( 'link' ); } $item_output = str_replace( $args->link_after, '</span>' . $svg, $item_output ); } return $item_output; } add_filter( 'walker_nav_menu_start_el', 'twentytwenty_nav_menu_social_icons', 10, 4 ); /** * Classes */ /** * Adds 'no-js' class. * * If we're missing JavaScript support, the HTML element will have a 'no-js' class. * * @since Twenty Twenty 1.0 */ function twentytwenty_no_js_class() { ?> <script>document.documentElement.className = document.documentElement.className.replace( 'no-js', 'js' );</script> <?php } add_action( 'wp_head', 'twentytwenty_no_js_class' ); /** * Adds conditional body classes. * * @since Twenty Twenty 1.0 * * @param array $classes Classes added to the body tag. * @return array Classes added to the body tag. */ function twentytwenty_body_classes( $classes ) { global $post; $post_type = isset( $post ) ? $post->post_type : false; // Check whether we're singular. if ( is_singular() ) { $classes[] = 'singular'; } // Check whether the current page should have an overlay header. if ( is_page_template( array( 'templates/template-cover.php' ) ) ) { $classes[] = 'overlay-header'; } // Check whether the current page has full-width content. if ( is_page_template( array( 'templates/template-full-width.php' ) ) ) { $classes[] = 'has-full-width-content'; } // Check for enabled search. if ( true === get_theme_mod( 'enable_header_search', true ) ) { $classes[] = 'enable-search-modal'; } // Check for post thumbnail. if ( is_singular() && has_post_thumbnail() ) { $classes[] = 'has-post-thumbnail'; } elseif ( is_singular() ) { $classes[] = 'missing-post-thumbnail'; } // Check whether we're in the customizer preview. if ( is_customize_preview() ) { $classes[] = 'customizer-preview'; } // Check if posts have single pagination. if ( is_single() && ( get_next_post() || get_previous_post() ) ) { $classes[] = 'has-single-pagination'; } else { $classes[] = 'has-no-pagination'; } // Check if we're showing comments. if ( $post && ( ( 'post' === $post_type || comments_open() || get_comments_number() ) && ! post_password_required() ) ) { $classes[] = 'showing-comments'; } else { $classes[] = 'not-showing-comments'; } // Check if avatars are visible. $classes[] = get_option( 'show_avatars' ) ? 'show-avatars' : 'hide-avatars'; // Slim page template class names (class = name - file suffix). if ( is_page_template() ) { $classes[] = basename( get_page_template_slug(), '.php' ); } // Check for the elements output in the top part of the footer. $has_footer_menu = has_nav_menu( 'footer' ); $has_social_menu = has_nav_menu( 'social' ); $has_sidebar_1 = is_active_sidebar( 'sidebar-1' ); $has_sidebar_2 = is_active_sidebar( 'sidebar-2' ); // Add a class indicating whether those elements are output. if ( $has_footer_menu || $has_social_menu || $has_sidebar_1 || $has_sidebar_2 ) { $classes[] = 'footer-top-visible'; } else { $classes[] = 'footer-top-hidden'; } // Get header/footer background color. $header_footer_background = get_theme_mod( 'header_footer_background_color', '#ffffff' ); $header_footer_background = strtolower( '#' . ltrim( $header_footer_background, '#' ) ); // Get content background color. $background_color = get_theme_mod( 'background_color', 'f5efe0' ); $background_color = strtolower( '#' . ltrim( $background_color, '#' ) ); // Add extra class if main background and header/footer background are the same color. if ( $background_color === $header_footer_background ) { $classes[] = 'reduced-spacing'; } return $classes; } add_filter( 'body_class', 'twentytwenty_body_classes' ); /** * Archives */ /** * Filters the archive title and styles the word before the first colon. * * @since Twenty Twenty 1.0 * * @param string $title Current archive title. * @return string Current archive title. */ function twentytwenty_get_the_archive_title( $title ) { /** * Filters the regular expression used to style the word before the first colon. * * @since Twenty Twenty 1.0 * * @param array $regex An array of regular expression pattern and replacement. */ $regex = apply_filters( 'twentytwenty_get_the_archive_title_regex', array( 'pattern' => '/(\A[^\:]+\:)/', 'replacement' => '<span class="color-accent">$1</span>', ) ); if ( empty( $regex ) ) { return $title; } return preg_replace( $regex['pattern'], $regex['replacement'], $title ); } add_filter( 'get_the_archive_title', 'twentytwenty_get_the_archive_title' ); /** * Miscellaneous */ /** * Toggles animation duration in milliseconds. * * @since Twenty Twenty 1.0 * * @return int Duration in milliseconds */ function twentytwenty_toggle_duration() { /** * Filters the animation duration/speed used usually for submenu toggles. * * @since Twenty Twenty 1.0 * * @param int $duration Duration in milliseconds. */ $duration = apply_filters( 'twentytwenty_toggle_duration', 250 ); return $duration; } /** * Gets unique ID. * * This is a PHP implementation of Underscore's uniqueId method. A static variable * contains an integer that is incremented with each call. This number is returned * with the optional prefix. As such the returned value is not universally unique, * but it is unique across the life of the PHP process. * * @since Twenty Twenty 1.0 * * @see wp_unique_id() Themes requiring WordPress 5.0.3 and greater should use this instead. * * @param string $prefix Prefix for the returned ID. * @return string Unique ID. */ function twentytwenty_unique_id( $prefix = '' ) { static $id_counter = 0; if ( function_exists( 'wp_unique_id' ) ) { return wp_unique_id( $prefix ); } return $prefix . (string) ++$id_counter; } inc/svg-icons.php 0000644 00000003611 15105417315 0007741 0 ustar 00 <?php /** * Twenty Twenty SVG Icon helper functions * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.0 */ if ( ! function_exists( 'twentytwenty_the_theme_svg' ) ) { /** * Output and Get Theme SVG. * Output and get the SVG markup for an icon in the TwentyTwenty_SVG_Icons class. * * @since Twenty Twenty 1.0 * * @param string $svg_name The name of the icon. * @param string $group The group the icon belongs to. * @param string $color Color code. */ function twentytwenty_the_theme_svg( $svg_name, $group = 'ui', $color = '' ) { echo twentytwenty_get_theme_svg( $svg_name, $group, $color ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped in twentytwenty_get_theme_svg(). } } if ( ! function_exists( 'twentytwenty_get_theme_svg' ) ) { /** * Get information about the SVG icon. * * @since Twenty Twenty 1.0 * * @param string $svg_name The name of the icon. * @param string $group The group the icon belongs to. * @param string $color Color code. */ function twentytwenty_get_theme_svg( $svg_name, $group = 'ui', $color = '' ) { // Make sure that only our allowed tags and attributes are included. $svg = wp_kses( TwentyTwenty_SVG_Icons::get_svg( $svg_name, $group, $color ), array( 'svg' => array( 'class' => true, 'xmlns' => true, 'width' => true, 'height' => true, 'viewbox' => true, 'aria-hidden' => true, 'role' => true, 'focusable' => true, ), 'path' => array( 'fill' => true, 'fill-rule' => true, 'd' => true, 'transform' => true, ), 'polygon' => array( 'fill' => true, 'fill-rule' => true, 'points' => true, 'transform' => true, 'focusable' => true, ), ) ); if ( ! $svg ) { return false; } return $svg; } } inc/starter-content.php 0000644 00000027146 15105417315 0011176 0 ustar 00 <?php /** * Twenty Twenty Starter Content * * @link https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/ * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.0 */ /** * Function to return the array of starter content for the theme. * * Passes it through the `twentytwenty_starter_content` filter before returning. * * @since Twenty Twenty 1.0 * * @return array A filtered array of args for the starter_content. */ function twentytwenty_get_starter_content() { // Define and register starter content to showcase the theme on new sites. $starter_content = array( 'widgets' => array( // Place one core-defined widgets in the first footer widget area. 'sidebar-1' => array( 'text_about', ), // Place one core-defined widgets in the second footer widget area. 'sidebar-2' => array( 'text_business_info', ), ), // Create the custom image attachments used as post thumbnails for pages. 'attachments' => array( 'image-opening' => array( 'post_title' => _x( 'The New UMoMA Opens its Doors', 'Theme starter content', 'twentytwenty' ), 'file' => 'assets/images/2020-landscape-1.png', // URL relative to the template directory. ), ), // Specify the core-defined pages to create and add custom thumbnails to some of them. 'posts' => array( 'front' => array( 'post_type' => 'page', 'post_title' => __( 'The New UMoMA Opens its Doors', 'twentytwenty' ), // Use the above featured image with the predefined about page. 'thumbnail' => '{{image-opening}}', 'post_content' => implode( '', array( '<!-- wp:group {"align":"wide"} -->', '<div class="wp-block-group alignwide"><div class="wp-block-group__inner-container"><!-- wp:heading {"align":"center"} -->', '<h2 class="has-text-align-center">' . __( 'The premier destination for modern art in Northern Sweden. Open from 10 AM to 6 PM every day during the summer months.', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading --></div></div>', '<!-- /wp:group -->', '<!-- wp:columns {"align":"wide"} -->', '<div class="wp-block-columns alignwide"><!-- wp:column -->', '<div class="wp-block-column"><!-- wp:group -->', '<div class="wp-block-group"><div class="wp-block-group__inner-container">', '<!-- wp:image {"align":"full","id":37,"sizeSlug":"full"} -->', '<figure class="wp-block-image alignfull size-full"><img src="' . get_theme_file_uri() . '/assets/images/2020-three-quarters-1.png" alt="" class="wp-image-37"/></figure>', '<!-- /wp:image -->', '<!-- wp:heading {"level":3} -->', '<h3>' . __( 'Works and Days', 'twentytwenty' ) . '</h3>', '<!-- /wp:heading -->', '<!-- wp:paragraph -->', '<p>' . __( 'August 1 -- December 1', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"className":"is-style-outline"} -->', '<div class="wp-block-button is-style-outline"><a class="wp-block-button__link" href="https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/">' . __( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div></div>', '<!-- /wp:group -->', '<!-- wp:group -->', '<div class="wp-block-group"><div class="wp-block-group__inner-container">', '<!-- wp:image {"align":"full","id":37,"sizeSlug":"full"} -->', '<figure class="wp-block-image alignfull size-full"><img src="' . get_theme_file_uri() . '/assets/images/2020-three-quarters-3.png" alt="" class="wp-image-37"/></figure>', '<!-- /wp:image -->', '<!-- wp:heading {"level":3} -->', '<h3>' . __( 'Theatre of Operations', 'twentytwenty' ) . '</h3>', '<!-- /wp:heading -->', '<!-- wp:paragraph -->', '<p>' . __( 'October 1 -- December 1', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"className":"is-style-outline"} -->', '<div class="wp-block-button is-style-outline"><a class="wp-block-button__link" href="https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/">' . __( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div></div>', '<!-- /wp:group --></div>', '<!-- /wp:column -->', '<!-- wp:column -->', '<div class="wp-block-column"><!-- wp:group -->', '<div class="wp-block-group"><div class="wp-block-group__inner-container">', '<!-- wp:image {"align":"full","id":37,"sizeSlug":"full"} -->', '<figure class="wp-block-image alignfull size-full"><img src="' . get_theme_file_uri() . '/assets/images/2020-three-quarters-2.png" alt="" class="wp-image-37"/></figure>', '<!-- /wp:image -->', '<!-- wp:heading {"level":3} -->', '<h3>' . __( 'The Life I Deserve', 'twentytwenty' ) . '</h3>', '<!-- /wp:heading -->', '<!-- wp:paragraph -->', '<p>' . __( 'August 1 -- December 1', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"className":"is-style-outline"} -->', '<div class="wp-block-button is-style-outline"><a class="wp-block-button__link" href="https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/">' . __( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div></div>', '<!-- /wp:group -->', '<!-- wp:group -->', '<div class="wp-block-group"><div class="wp-block-group__inner-container">', '<!-- wp:image {"align":"full","id":37,"sizeSlug":"full"} -->', '<figure class="wp-block-image alignfull size-full"><img src="' . get_theme_file_uri() . '/assets/images/2020-three-quarters-4.png" alt="" class="wp-image-37"/></figure>', '<!-- /wp:image -->', '<!-- wp:heading {"level":3} -->', '<h3>' . __( 'From Signac to Matisse', 'twentytwenty' ) . '</h3>', '<!-- /wp:heading -->', '<!-- wp:paragraph -->', '<p>' . __( 'October 1 -- December 1', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"className":"is-style-outline"} -->', '<div class="wp-block-button is-style-outline"><a class="wp-block-button__link" href="https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/">' . __( 'Read More', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div></div>', '<!-- /wp:group --></div>', '<!-- /wp:column --></div>', '<!-- /wp:columns -->', '<!-- wp:image {"align":"full","id":37,"sizeSlug":"full"} -->', '<figure class="wp-block-image alignfull size-full"><img src="' . get_theme_file_uri() . '/assets/images/2020-landscape-2.png" alt="" class="wp-image-37"/></figure>', '<!-- /wp:image -->', '<!-- wp:group {"align":"wide"} -->', '<div class="wp-block-group alignwide"><div class="wp-block-group__inner-container"><!-- wp:heading {"align":"center","textColor":"accent"} -->', '<h2 class="has-accent-color has-text-align-center">' . __( '“Cyborgs, as the philosopher Donna Haraway established, are not reverent. They do not remember the cosmos.”', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading --></div></div>', '<!-- /wp:group -->', '<!-- wp:paragraph {"dropCap":true} -->', '<p class="has-drop-cap">' . __( 'With seven floors of striking architecture, UMoMA shows exhibitions of international contemporary art, sometimes along with art historical retrospectives. Existential, political and philosophical issues are intrinsic to our programme. As visitor you are invited to guided tours artist talks, lectures, film screenings and other events with free admission', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:paragraph -->', '<p>' . __( 'The exhibitions are produced by UMoMA in collaboration with artists and museums around the world and they often attract international attention. UMoMA has received a Special Commendation from the European Museum of the Year, and was among the top candidates for the Swedish Museum of the Year Award as well as for the Council of Europe Museum Prize.', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:paragraph -->', '<p></p>', '<!-- /wp:paragraph -->', '<!-- wp:group {"customBackgroundColor":"#ffffff","align":"wide"} -->', '<div class="wp-block-group alignwide has-background" style="background-color:#ffffff"><div class="wp-block-group__inner-container"><!-- wp:group -->', '<div class="wp-block-group"><div class="wp-block-group__inner-container"><!-- wp:heading {"align":"center"} -->', '<h2 class="has-text-align-center">' . __( 'Become a Member and Get Exclusive Offers!', 'twentytwenty' ) . '</h2>', '<!-- /wp:heading -->', '<!-- wp:paragraph {"align":"center"} -->', '<p class="has-text-align-center">' . __( 'Members get access to exclusive exhibits and sales. Our memberships cost $99.99 and are billed annually.', 'twentytwenty' ) . '</p>', '<!-- /wp:paragraph -->', '<!-- wp:button {"align":"center"} -->', '<div class="wp-block-button aligncenter"><a class="wp-block-button__link" href="https://make.wordpress.org/core/2019/09/27/block-editor-theme-related-updates-in-wordpress-5-3/">' . __( 'Join the Club', 'twentytwenty' ) . '</a></div>', '<!-- /wp:button --></div></div>', '<!-- /wp:group --></div></div>', '<!-- /wp:group -->', '<!-- wp:gallery {"ids":[39,38],"align":"wide"} -->', '<figure class="wp-block-gallery alignwide columns-2 is-cropped"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img src="' . get_theme_file_uri() . '/assets/images/2020-square-2.png" alt="" data-id="39" data-full-url="' . get_theme_file_uri() . '/assets/images/2020-square-2.png" data-link="assets/images/2020-square-2/" class="wp-image-39"/></figure></li><li class="blocks-gallery-item"><figure><img src="' . get_theme_file_uri() . '/assets/images/2020-square-1.png" alt="" data-id="38" data-full-url="' . get_theme_file_uri() . '/assets/images/2020-square-1.png" data-link="' . get_theme_file_uri() . '/assets/images/2020-square-1/" class="wp-image-38"/></figure></li></ul></figure>', '<!-- /wp:gallery -->', ) ), ), 'about', 'contact', 'blog', ), // Default to a static front page and assign the front and posts pages. 'options' => array( 'show_on_front' => 'page', 'page_on_front' => '{{front}}', 'page_for_posts' => '{{blog}}', ), // Set up nav menus for each of the two areas registered in the theme. 'nav_menus' => array( // Assign a menu to the "primary" location. 'primary' => array( 'name' => __( 'Primary', 'twentytwenty' ), 'items' => array( 'link_home', // Note that the core "home" page is actually a link in case a static front page is not used. 'page_about', 'page_blog', 'page_contact', ), ), // This replicates primary just to demonstrate the expanded menu. 'expanded' => array( 'name' => __( 'Primary', 'twentytwenty' ), 'items' => array( 'link_home', // Note that the core "home" page is actually a link in case a static front page is not used. 'page_about', 'page_blog', 'page_contact', ), ), // Assign a menu to the "social" location. 'social' => array( 'name' => __( 'Social Links Menu', 'twentytwenty' ), 'items' => array( 'link_yelp', 'link_facebook', 'link_twitter', 'link_instagram', 'link_email', ), ), ), ); /** * Filters Twenty Twenty array of starter content. * * @since Twenty Twenty 1.0 * * @param array $starter_content Array of starter content. */ return apply_filters( 'twentytwenty_starter_content', $starter_content ); } inc/custom-css.php 0000644 00000022110 15105417315 0010124 0 ustar 00 <?php /** * Twenty Twenty Custom CSS * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.0 */ if ( ! function_exists( 'twentytwenty_generate_css' ) ) { /** * Generate CSS. * * @since Twenty Twenty 1.0 * * @param string $selector The CSS selector. * @param string $style The CSS style. * @param string $value The CSS value. * @param string $prefix The CSS prefix. * @param string $suffix The CSS suffix. * @param bool $echo Echo the styles. */ function twentytwenty_generate_css( $selector, $style, $value, $prefix = '', $suffix = '', $echo = true ) { $return = ''; /* * Bail early if we have no $selector elements or properties and $value. */ if ( ! $value || ! $selector ) { return; } $return = sprintf( '%s { %s: %s; }', $selector, $style, $prefix . $value . $suffix ); if ( $echo ) { echo $return; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- We need to double check this, but for now, we want to pass PHPCS ;) } return $return; } } if ( ! function_exists( 'twentytwenty_get_customizer_css' ) ) { /** * Get CSS Built from Customizer Options. * Build CSS reflecting colors, fonts and other options set in the Customizer, and return them for output. * * @since Twenty Twenty 1.0 * * @param string $type Whether to return CSS for the "front-end", "block-editor", or "classic-editor". */ function twentytwenty_get_customizer_css( $type = 'front-end' ) { // Get variables. $body = sanitize_hex_color( twentytwenty_get_color_for_area( 'content', 'text' ) ); $body_default = '#000000'; $secondary = sanitize_hex_color( twentytwenty_get_color_for_area( 'content', 'secondary' ) ); $secondary_default = '#6d6d6d'; $borders = sanitize_hex_color( twentytwenty_get_color_for_area( 'content', 'borders' ) ); $borders_default = '#dcd7ca'; $accent = sanitize_hex_color( twentytwenty_get_color_for_area( 'content', 'accent' ) ); $accent_default = '#cd2653'; // Header. $header_footer_background = sanitize_hex_color( twentytwenty_get_color_for_area( 'header-footer', 'background' ) ); $header_footer_background_default = '#ffffff'; // Cover. $cover = sanitize_hex_color( get_theme_mod( 'cover_template_overlay_text_color' ) ); $cover_default = '#ffffff'; // Background. $background = sanitize_hex_color_no_hash( get_theme_mod( 'background_color' ) ); $background_default = 'f5efe0'; ob_start(); /* * Note – Styles are applied in this order: * 1. Element specific * 2. Helper classes * * This enables all helper classes to overwrite base element styles, * meaning that any color classes applied in the block editor will * have a higher priority than the base element styles. */ // Front-End Styles. if ( 'front-end' === $type ) { // Auto-calculated colors. $elements_definitions = twentytwenty_get_elements_array(); foreach ( $elements_definitions as $context => $props ) { foreach ( $props as $key => $definitions ) { foreach ( $definitions as $property => $elements ) { /* * If we don't have an elements array or it is empty * then skip this iteration early; */ if ( ! is_array( $elements ) || empty( $elements ) ) { continue; } $val = twentytwenty_get_color_for_area( $context, $key ); if ( $val ) { twentytwenty_generate_css( implode( ',', $elements ), $property, $val ); } } } } if ( $cover && $cover !== $cover_default ) { twentytwenty_generate_css( '.overlay-header .header-inner', 'color', $cover ); twentytwenty_generate_css( '.cover-header .entry-header *', 'color', $cover ); } // Block Editor Styles. } elseif ( 'block-editor' === $type ) { // Colors. // Accent color. if ( $accent && $accent !== $accent_default ) { twentytwenty_generate_css( ':root .has-accent-color, .editor-styles-wrapper a, .editor-styles-wrapper .has-drop-cap:not(:focus)::first-letter, .editor-styles-wrapper .wp-block-button.is-style-outline .wp-block-button__link, .editor-styles-wrapper .wp-block-pullquote::before, .editor-styles-wrapper .wp-block-file .wp-block-file__textlink', 'color', $accent ); twentytwenty_generate_css( '.editor-styles-wrapper .wp-block-quote', 'border-color', $accent, '' ); twentytwenty_generate_css( '.has-accent-background-color, .editor-styles-wrapper .wp-block-button__link, .editor-styles-wrapper .wp-block-file__button', 'background-color', $accent ); } // Background color. if ( $background && $background !== $background_default ) { twentytwenty_generate_css( '.editor-styles-wrapper', 'background-color', '#' . $background ); twentytwenty_generate_css( '.has-background.has-primary-background-color:not(.has-text-color),.has-background.has-primary-background-color *:not(.has-text-color),.has-background.has-accent-background-color:not(.has-text-color),.has-background.has-accent-background-color *:not(.has-text-color)', 'color', '#' . $background ); } // Borders color. if ( $borders && $borders !== $borders_default ) { twentytwenty_generate_css( '.editor-styles-wrapper .wp-block-code, .editor-styles-wrapper pre, .editor-styles-wrapper .wp-block-preformatted pre, .editor-styles-wrapper .wp-block-verse pre, .editor-styles-wrapper fieldset, .editor-styles-wrapper .wp-block-table, .editor-styles-wrapper .wp-block-table *, .editor-styles-wrapper .wp-block-table.is-style-stripes, .editor-styles-wrapper .wp-block-latest-posts.is-grid li', 'border-color', $borders ); twentytwenty_generate_css( '.editor-styles-wrapper .wp-block-table caption, .editor-styles-wrapper .wp-block-table.is-style-stripes tbody tr:nth-child(odd)', 'background-color', $borders ); } // Text color. if ( $body && $body !== $body_default ) { twentytwenty_generate_css( 'body .editor-styles-wrapper, .editor-post-title__block .editor-post-title__input, .editor-post-title__block .editor-post-title__input:focus', 'color', $body ); } // Secondary color. if ( $secondary && $secondary !== $secondary_default ) { twentytwenty_generate_css( '.editor-styles-wrapper figcaption, .editor-styles-wrapper cite, .editor-styles-wrapper .wp-block-quote__citation, .editor-styles-wrapper .wp-block-quote cite, .editor-styles-wrapper .wp-block-quote footer, .editor-styles-wrapper .wp-block-pullquote__citation, .editor-styles-wrapper .wp-block-pullquote cite, .editor-styles-wrapper .wp-block-pullquote footer, .editor-styles-wrapper ul.wp-block-archives li, .editor-styles-wrapper ul.wp-block-categories li, .editor-styles-wrapper ul.wp-block-latest-posts li, .editor-styles-wrapper ul.wp-block-categories__list li, .editor-styles-wrapper .wp-block-latest-comments time, .editor-styles-wrapper .wp-block-latest-posts time', 'color', $secondary ); } // Header Footer Background Color. if ( $header_footer_background && $header_footer_background !== $header_footer_background_default ) { twentytwenty_generate_css( '.editor-styles-wrapper .wp-block-pullquote::before', 'background-color', $header_footer_background ); } } elseif ( 'classic-editor' === $type ) { // Colors. // Accent color. if ( $accent && $accent !== $accent_default ) { twentytwenty_generate_css( 'body#tinymce.wp-editor.content a, body#tinymce.wp-editor.content a:focus, body#tinymce.wp-editor.content a:hover', 'color', $accent ); twentytwenty_generate_css( 'body#tinymce.wp-editor.content blockquote, body#tinymce.wp-editor.content .wp-block-quote', 'border-color', $accent, '', ' !important' ); twentytwenty_generate_css( 'body#tinymce.wp-editor.content button, body#tinymce.wp-editor.content .faux-button, body#tinymce.wp-editor.content .wp-block-button__link, body#tinymce.wp-editor.content .wp-block-file__button, body#tinymce.wp-editor.content input[type=\'button\'], body#tinymce.wp-editor.content input[type=\'reset\'], body#tinymce.wp-editor.content input[type=\'submit\']', 'background-color', $accent ); } // Background color. if ( $background && $background !== $background_default ) { twentytwenty_generate_css( 'body#tinymce.wp-editor.content', 'background-color', '#' . $background ); } // Text color. if ( $body && $body !== $body_default ) { twentytwenty_generate_css( 'body#tinymce.wp-editor.content', 'color', $body ); } // Secondary color. if ( $secondary && $secondary !== $secondary_default ) { twentytwenty_generate_css( 'body#tinymce.wp-editor.content hr:not(.is-style-dots), body#tinymce.wp-editor.content cite, body#tinymce.wp-editor.content figcaption, body#tinymce.wp-editor.content .wp-caption-text, body#tinymce.wp-editor.content .wp-caption-dd, body#tinymce.wp-editor.content .gallery-caption', 'color', $secondary ); } // Borders color. if ( $borders && $borders !== $borders_default ) { twentytwenty_generate_css( 'body#tinymce.wp-editor.content pre, body#tinymce.wp-editor.content hr, body#tinymce.wp-editor.content fieldset,body#tinymce.wp-editor.content input, body#tinymce.wp-editor.content textarea', 'border-color', $borders ); } } // Return the results. return ob_get_clean(); } } footer.php 0000644 00000003471 15105417315 0006562 0 ustar 00 <?php /** * The template for displaying the footer * * Contains the opening of the #site-footer div and all content after. * * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.0 */ ?> <footer id="site-footer" role="contentinfo" class="header-footer-group"> <div class="section-inner"> <div class="footer-credits"> <p class="footer-copyright">© <?php echo date_i18n( /* translators: Copyright date format, see https://www.php.net/manual/datetime.format.php */ _x( 'Y', 'copyright date format', 'twentytwenty' ) ); ?> <a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a> </p><!-- .footer-copyright --> <p class="powered-by-wordpress"> <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentytwenty' ) ); ?>"> <?php _e( 'Powered by WordPress', 'twentytwenty' ); ?> </a> </p><!-- .powered-by-wordpress --> </div><!-- .footer-credits --> <a class="to-the-top" href="#site-header"> <span class="to-the-top-long"> <?php /* translators: %s: HTML character for up arrow. */ printf( __( 'To the top %s', 'twentytwenty' ), '<span class="arrow" aria-hidden="true">↑</span>' ); ?> </span><!-- .to-the-top-long --> <span class="to-the-top-short"> <?php /* translators: %s: HTML character for up arrow. */ printf( __( 'Up %s', 'twentytwenty' ), '<span class="arrow" aria-hidden="true">↑</span>' ); ?> </span><!-- .to-the-top-short --> </a><!-- .to-the-top --> </div><!-- .section-inner --> </footer><!-- #site-footer --> <?php wp_footer(); ?> </body> </html> searchform.php 0000644 00000003252 15105417315 0007412 0 ustar 00 <?php /** * The searchform.php template. * * Used any time that get_search_form() is called. * * @link https://developer.wordpress.org/themes/basics/template-hierarchy/ * * @package WordPress * @subpackage Twenty_Twenty * @since Twenty Twenty 1.0 */ /* * Generate a unique ID for each form and a string containing an aria-label * if one was passed to get_search_form() in the args array. */ $twentytwenty_unique_id = twentytwenty_unique_id( 'search-form-' ); $twentytwenty_aria_label = ! empty( $args['aria_label'] ) ? 'aria-label="' . esc_attr( $args['aria_label'] ) . '"' : ''; // Backward compatibility, in case a child theme template uses a `label` argument. if ( empty( $twentytwenty_aria_label ) && ! empty( $args['label'] ) ) { $twentytwenty_aria_label = 'aria-label="' . esc_attr( $args['label'] ) . '"'; } ?> <form role="search" <?php echo $twentytwenty_aria_label; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped above. ?> method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>"> <label for="<?php echo esc_attr( $twentytwenty_unique_id ); ?>"> <span class="screen-reader-text"><?php _e( 'Search for:', 'twentytwenty' ); // phpcs:ignore: WordPress.Security.EscapeOutput.UnsafePrintingFunction -- core trusts translations ?></span> <input type="search" id="<?php echo esc_attr( $twentytwenty_unique_id ); ?>" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder', 'twentytwenty' ); ?>" value="<?php echo get_search_query(); ?>" name="s" /> </label> <input type="submit" class="search-submit" value="<?php echo esc_attr_x( 'Search', 'submit button', 'twentytwenty' ); ?>" /> </form> screenshot.png 0000644 00000147512 15105417315 0007443 0 ustar 00 �PNG IHDR � � >_� �IDATx�ف�"q��Ų���.� X�w � =E z��'�J"\A��E�F���,ǁ�����`~??|�o �$A ? ! � A � @ � � A � @ � B ! � A � @ � B ! � A � @ �8���s�I�A �|}��v�o�X.O�� ���C��}Iu�`��'ME���%�p8<�� A(��m��k6��z�V�5�V�5�N?s.�� �S ��L�r��,�x2��X,�S�J��f����j5�G��l6K� A(�8�t:�r9��=<<���������g�� �0\�ן3�����M�����d���v���M�Z��(�K�~��ΛT�|�*� �0��\[�T�� @ �_���]ɷ��g�~�osl۶��m۶�Xc[qڶ��>+{���i��'���Z���sNaW���=�]u�q�9���������sι�ˎ;��'����2.\8������s�=�wi�u��a�7��M�<묳JKK35:^}�Z�9Y����4�]�����k� S�L lC��)'몮�ƺW^yeta�ĉo�q���;��]{�t�w-�ę��E��i,��56��?������o�����z;kOR{�)�{ɽx# ����%{Wo�m%]n\����0cg�:,\f\�[ԞK��F&w��V�Me:4�[�<�/:�uO;>�������N�紶7��|H�|G���۽)�?E�ji��M����}�'������:�E�eyS>��w��'��>K�,�ʌ3�����#R�#�<r��w?��c%%%a��?�X�Dċs*++�}�Y9=�x��?��瞻��o��^x!�O ӧOw2�.]����ꪫx��߲�`�ɓ'�m��J0N���Z�+�25O�T*�a��ܧ�zj�v���G&mPLp�Y�#s�ܹQ��a]�k}�Q9O>�d���=���W_}����:m�4!�:X;k֬�����U����ɮ���:u*dg@����;�<�̨���@ ,���Gf`�7:J�B�����z�.�T��?~EEEO�b��{�{�� �{�#S�0�奬J���[ou��8j|��6��5�n��{キ�m0o?��#s�W^�Ȋ=3#�M�9s��[�m���谀��Pl�PV���,���X�K��K����}�uYqff{]C���Z�\6�[��O��kx���N|���y�3�^^Y��۞�����Uua����B����Q}�c�M+��_ ���k�{d�sྊM�\��ܖ�f��q�;�k��<.�o��-��䨺���3��q�;-�,rt��`k+52Hu]f~ӛ�jW5倐+ND�TA*Tg�Ѷ�rKq�g�q�m���6�G����K/���q��H묳N �я~$�?��?��Li-��L:X��Ļ���?��N;E��_~9:�� ��[o=������?9���?��ŝ�K�G���w�}�)\�nEz��d�#������ ��=�� �/���F,g뭷�+��r�5P������#7eu|�=��2g̘a�h[tM�\p�m��6Y]9r$:�gM2ᢅ���ŵ}Y6��/^��uQ���~z|����/^|��g��^��t�!S���*\Q7�|32�Z4r�g�'l�ʫ T�����^� bC 3���~}�&ؤ=��/��貅�f�رc�!��OB�i�(�B��E t{8餓�D�Ov�7o^�y�m_p�.;���,��}��*#e�X�� ����!FS�\ ���K��Ku�X��#럘��ٺ�`��������z�_^�㸢�N���c.hz������֚۟-�yB�;(�[+N����"��0�ͬ�b,�|���zz`݃���.3�O�����}p��WZ|�Kx`�Q�}�ږi:�j�|i�hk-/�����E�G�������ef�|��p�IU�� 5�6���4o�au���)��+����pUw��h�<�.<^���Q��q�Z���`2ϕ��"�䢢"�p1���AΎ;�����.�R�� .������P]0�bM@���,Y<蠃~��_G-�����[n�����[\TK�hJ�5z�h�pρ��Gy$��?�s��J�ۿ�i���"��9JP�ԲF_�)�x��C� �G�hB���o+?�"������F-��j��x��x]9�'!FM;�e�|��G)�bu��� ,�"��� �+��(��b��4��H���WY[����;#|hq�]FG�.�A��S�\�v �2Tt6�e�D��+��!]�t�]ltbR9D֎C�� C���@�2���F�����\ʥ\�a�vc�y��%_���Ce� ¶�ʶ�R*b�@(YsQZ�F9�F]Zz��mE�ȑ�� ����MGb� ��! lx�����@�5as�N���b���[ѳ�/��"ӻ��Y���;�j����!�� �"0�v��I�&�J�Z����3 ��CAw��S"�SN9%��ɚ��+��*�ѡ��/��/�l&% ��<c�i��E�2�B�Hb��8�8-pK�\^m�������t� 7@V-?�l���ĵ:g�i�8C��+.U�&�@+��O������C�űV�b��1lx�i��B'3���TNt�- W�i�f��(� �m)'!��n�����\�����C�S�E� ��9rt��~\`X�9s�LNZ$� �xրF�uYAr����C�����B���Ɔ*�X *N��N��a�AT���#�x�!�#8$�{ML-F�f��\glfҮu���L�s��Fg����bT5�:����ٚoB��D���-'��u�@\ݏ>8��$��l���\��|���V~f���x��ӣMV����K���a�۟������3�O�A��י�|Xv����GJ�<���VX�����o*>��X^Q�nzZ���rV�U��/ ,�uR�23�w�W<T:����o�e�چ ioU]r_�O���WU]to��,�� k��w�Z�qW��t��Ț۟�<���%�����7^|� S�Pr噷����5V�U]�`�a�����i��j]�_s�3%G�_6�Rሱ>�$�81W�sJ�w7��Y��U�Uޛ����_]���(�Y@��'�X��)g߁��w?ܿ�i�]q� h�XZ���e?=D���Y5 lo����l84I@ogPM~�8�V=�Q����Z� h�:G���C l+����I#n���7�|�Yy�]e�_iJ�����}�-4F1�e�^^s�;�N[b�c���k� & �w����0����QI.���pk��<��Ȟ��7��;�����j��{�{r2njBH7Z�м���~K�4�/�Gh�L:�����&��$����v���4�.J?5�Д2dH��f�hG��5�h,C䦩L�pq���}_��W^U 䂇�'��'�3�f�8����g�BP7CbE)=�Fr�S���o&�����<���N��E ��?��JP��@_ݱ�� �`Q��\A�� Np��/��)�] a$L���P�L0̰G�7H&�"I9�˓B(�a�=�lK�f�A d&j���\k���KJ(U�+ �S� ��fz��q�P>�s23:ֺ�g���8��;�ӵ��9��1�T,f�y���-+Aw`���/�1��3�9�U�i�T��NVEB;���rT��U@��癋Vzx&��u�90�\ʥ�=4Ϥ��Or�������2�l䥅ۍ��Q ƅ�W�o4�t�E�ۏOĨ�N/����"瘿^q�m�u���Zz̅��]&6��Yj6��o�7��'��� �:��B!��lT�n��v�\���:���sZ*��J'k`6%���`�c��q�{ ������=�7_6�*�U���ї7�}ߢĢ�NqJ��, -J�\��E����Z�_�j�� ,������ȶ�R�m���h�ɀ�h�Ʌ�On~���n���i�O��8$c�^2�Fjv�ag����Z�:?����߯��O wW}��P-�~~�r*Ͻs���-��`���;A,.^��`(��/�q�/���vZY�� ��������.�<��e�>���g�o�BtW:�MF���ҳ����@A< �[���4�'M���� ���,jU8ӕ��ƃ��MF���)1h���'q>=Ԗ)?�W�����B������Ն� @�u@ȿ6lX� }�9>��� �B#k�b���I��p���_�5$D��H#�г0�*BG2%��t��"p��6��r�E��ʗutU��-05�<:i�Se�$��$��i&q�D!tE=��A�`T���@H`I;ĺAM��Jg@�Z�!���������h5 !��d��|� ��<�[!� rZ�@h��0Τ���%`8�|��%X��A9���=�5t �����u��T���Y^��}�����u_���6赦ډX"�T��rs���'�.· �j���SW �N�Z}���j�s03vU�5L�Zi��Q���*�m�$��z�y�"��U����4�d� �('�r)��q.�+��z G��h���s2�+��h�7�@��,/�*w �N8���%E{�L0�j7�� ����>� S�pU�C�E*�hR�k�x��IrH-�S߄���.��$J �G�f�g% ,�m��ʠ�����s��' � ������ ��U���*θM /���L�%��g����-��F]�o�]X\��`L�lB�^�s�K��V]�P����욛�j]R��pw�} Q����)Z�ޫ�z��7: eNz�@�5L�U�Z��X�omda��LZFkz�cC@�|*h���SP�!s_��6�Kޯ���tB���;�C|�VV�ޗ��8jʹ���W��e� 䒅��qf��$�G�]r~��_��X�4h��φ}��=9����k �dp=ᗿ��s���� 2�տ� 0��ȭw���+w_)��� BXE!I��B��P ����kż�%�x��@��9@�ź0CN�Ӭ�Q�~��v�-�k��L LMB)�n�m�@�7T�C�� �!�Oի!DTD������3T�WW$�����!�����6�%�'a�, �>��|A4i�ȿi L}1-5Fk �6L�E�}�Ej���I7��A���UZ��Z.ֵ� �;K;;B��\+�65�<�b�PU��<@�R�) �y�K3��Q�хL�4���v�}ÔY2�ԅ�[�K��K �8����� �n�R}���|����/��D�G�Us�cζ�*�s �P�0U�E��=:�_��c <�9�;*��R���{,��p�8F�@�{�ߩ�0���$����� ���Y@Xu���B�U�۟u��Ak�<NN\M,KIw [ى4�^��`����`��U�!ƈ�Ⱦ'�Wy�Bd��tyu��ʼ���j`9ӡ�!��.�Uls� Ѻ�u>���Y�yn��/�!���С┛�`���U�� Ͻ�����fۺ�P��b� B������6��3_�a�D���"�������vN��|�cK�J�\����E0dk���^�&}�{�K��sE¥��Q�8�rRB �yw\tO�{r2���d��XhQ�;�35��%�kn� �ơ��Q�M[�R��pXW ���gL�U�k��N��K�P �̐:��6�K�=2���d�th! ���iY]s��C���ZI�»}F�Z @f�1,�* C�#:E��a^�@���Mn��a�Tĵp4�k���w�u��U�����0����(�G+5�/�w�"��S�t����Ul�w��`�H��U0�3 f���(~<�<2;�b�Z,�fq�X� g(�� �3-W�AI�2�遖d>�`��`.�R. Đ�{^B��/k�*��+(������Y� �A�멪�&\�� �h��u��YН?�Yr��d1ok�;��i��٪K/��:�6!`���6�)�al����P�2z�D���ۡv��������k�k�!RͲ�H�cե���OυHRw0��y}VA�[��D�"s��� ��e%)�V3|�6zq�l��v ��t�*wMff������{ �Җ�������<q~�I7 ���p8u1���B_=A��|T�Տ0 ��v�kl�a�f���T�4�8MX�G���$�����@���)1�?��@���A� Y��+�>h���w�=8��=��4%��o�%���]�W�gH��{L$Ո�4@�D,�~����#����@�W�~��C+�3Ű����M�H%� !�)l��'���E��=B`_U����DU��� ��; ��>zţ�7B��"�7�%jt����0�z֢�!�q�%��(<�r���GM����q�Ur�F� �A�������=vBJ���H~�����Ƥ��U2^02�0.O����怐0;�FKR���=B !�*31Tg@�2�3��uM�m�@��TB����O6˸�\�`O�h}�_�jXn�a��Y쯴8Gb�a�5�QΥ\�m*�0�u��7�B�>n��/[����T��~�T&��l:���N!L@�A�@Xy�m���k۰S�@���SZ���Ev�Xy��] a��u����)�KPk߅����#����8�v<�����igË�}]Y�Ţ����l��@�4O "q�k tG��kR��)�R���0h�Т��F,�FWLX\a��B���c3�+Ǜ��Х?:�Bh����Nm~��9PG:fI"a�'��E� h���--N��)��Nk���F4@�|� �v�mV�g�2��|of����G� �%ҖP���ݞi���wmB�ӡ��ҿ�#9��ˉ�]|�(9~��!��>�"R!\� dt'D��Y��4� �{ ��k%�X,�찿R�)*�?ҥ�c�f9?�o���������5�X�:�2�- d71���� �A�Y@��@�[�]\��:�(f� �s,)0Y�&oW�!�$��jC����0a���@h���:��G �5�TJ��_�mj4F=B��HꨟZ ��r�����_^v��(˻D/4�A]g@�4��ABЄ�iD��B[�?�e|c8��w�mf^�P�#:��*��k�)��r)�r@��uG��3vS��K�i�!6��Y�:�XC%�R --���N*�1��B"m���OuB"ۛ[����$^Q��^�Ҿږ��DGd���QB�HIs���b3�z�]X�Z��8�&ꢠ�T��$�|�3�X��/�q!�(-�,��;�F8�W?�>�0��V�/ͦ�m�j��Ά�l?���s����6�{G���h�aVC�����Q�0��`p��O+K��1t�r�.��6��}��Ԕ�J$2�DE�:���em�yeC]g��t]���R�&���%���d�i�p������Ž�-ܴp�1��9��C�{1=������|G `g['�<y�s�omBI�[0CHK�R�5��x�I�" wEQ���?�Cb���lp`f�9�#'��*�����i�*���3�NV�V N]��_�p�ix�����I��n��M��}�@h(�,<�+�et�bz8�p�Chr_Y �5�����:4aX�`�+�r9� �� Idj��B��K}e�>!:C�#`����V��iO��g�&ZB�c48G0t�t����B�W8��.��De����cl�u��� ���Z� ��&2D���H��u���藐`çv��_�R.�R������|���@�s,+��XXU>�j���"��k�>�ğ�EZGk���9�4�yߖ8 ��O�r��C��sf�2 k�{I����� �>kC��ǻV��x��:d)�.�$TB��ޓV�G��6������R��m�7x�a�.b Q� ^�jpm���p��ep8W�ߩ�V*��]d�R��Y��B�h���{L���@�����"-�� ��M��\�oٿ�� 1 �-BUu�01KѮ�'\k�Q�D>�:�Kƞ�����*�a|b ���O�A-����q��p!��~����rKUY��e�I�P Y�/�W�@�����N?1{<c<�S�':�#�D�h��ʷ�͍5�oJ'q~H��~Wq���J�PQ��Tg] f��\�7/@Θ��Hp�۹/��3kL��!}G�]�7L�4�+ u�U�"����EiP*�B#���x�"0�$.qN�kԮ9I��X�M��' 03 ڛČ~����B��+8�<��5�&a+����"v+͜2 �a-��/J�m,},�t��bG�L����n V��5�ge2`?��B�4X�l�.�*�K;�ބp��� �^c��uc��f�TN,�Ģi��`���S�>�L�4s��g&��Ė��gg��@�\��v�� �x~���=L��쩑���uIf��j��(?1�r)�Z���[�=y��{'6��y �_G��'�<�Mt�w{o�sjnz*}�VREX�����^!"C{rН��U]�H�P���q���]5�=�%^�P{ϋ�)YM�x�<S����f�p�2刜D�M+^�r;�x��C�nU]���tr�B�1 �H��gO���ʶ�fΉ�h'�ͫ�c��^���ol�[f�����L�I��;+���E3d;����\�`�-i͝�W]� h���ޗ�{�u�Ψ��JK+ ��� �bm��i�Aq�E]��C�9i��ԩ��?����F$��-�� ��.7��L��+j�ް�/"`�@W��ֻ�'Ty�}.�{t�ї=��0�������qЃ��A�ʈI�t��K9��������s�^�@bJK���j^��P}[]ӯ�t-H��]S �]w�Yg�x'�Gg���x���>PaL���{RE����1����5i�2W�ש�kvʥ\ʥ�\��n~DZikk�ϡ�m]�|uv�c��U�E�~qL �* w{g�rr����C,���\�1|b��I��@���dAx�]QD��;�-[����wAǭAb��"A牢���%]`��w�}��A@;f�u]�mEZk"r����۶E�ܓ$Yו'z�#�̲�7�TUŏW^ �A� ��뺦i*˒�)H)�a8��}_k�}�Z� �RD� tහS�q�u<Y��8���0���f A� �D��J�tY�����4M��<c>��waGo�7 �CD���dHawmXl��0�����y�� BAx�&,�b]WA��K�]�.ޏ>}! @ � ��m��4�h�\ � ! � A � �繮�a�9�cUU�4=�ƾ��8�m�u]��e�B�4��� �c�eeY.�r�ux�wJ�Q��m۶m{�{l۶���/�ڸgwf Y�/x�̪���Q�ϟ?||p������_���� �2��I��`l���*<<|ff�̈����s&���~3_~��n1��p���P13�y�P!�B!!tuuł�������@www�ə��"�jhhX__G�l6[ss� �� �����{0ɗ�+~챵�533���ㅅ������瑑����i{{�����uuuQ������+����3������C�ࡡ!^b�pvv���nxx�WI�!�B!$��������PwwwLLLll,B���4::��֖�����FDD`A���aaaOOOh�A�|}}���Xt7==�������P������8����Ғ���R���Fd/--�*Q.OOO*������#� ��-���PLʈi;� !�B!$�H���=�^{{;~�簶���,77��ۛ!���666�rtt�!3:==���@t����Esrr0^2OBBB ONN�@��iee%�������;�Y�|ss399����F.�!6$`�:#B!�BH�777���@�B !�s��a8!r�S{{{!� �H�X/�2<� !RǢAv�a�FW\\��2$�L��h����'B�P��"�a@@ �c����R"ZFK��S��0i1��B'E!�B !V�������!$�"����mY�Gى��i�)|ɢBȮ0��`� E`9%��� �c��ggg��Ѵ����%&&�)�<��1}��*uvv�2*!B!�BX v�a����[<�~H�N�ёЏ��H�.$�A�{DuX�S|���<�63�f��0+n*,��{����[����c���l����� �C������r�<N�(5��1&!$Ed��qK�i�2*��{wQ ! `t�'�T�1hIF�����.��?����m�7Gz�XNC�t�+O�'�� B ! � @ � B ! � A � @ � B ! � A � @ � B ! � A � B ! � A � @ � B ! � A � @ � B ! � A � � B ! � A � @ � B ! � A � @ � B ! � A � @ ! � A � @ � B ! � A � @ �������1� A GGG��<ϓ$���ɲ�,˶m#�� �WM�E����vW��UUM��c@�]��E�����S%]�-�6��������N�{���o����|ID�/���ᄝ;��$�8��[UeQ�b�*@�d��$S�$� ��(Q$EBD�J�*�R��� ��w/ܺ�����;�8�Uz߿y����?�I`^��{xx���n������������������������%��i�]fZ�_���j�����>B���`:��h�I� ����*���C2f���֖hdd����ښ*���������UUdrr���������S �ߡ�DZ,�0���������rj������ܜ�����h4����(������Y�@�P�'��:���w�%W__�yO��333j ]�/..8 ���I�������D�P�q.�V�4Y����������LBKK����B{L�^��] @j��X���F� �����F"��"ᰠ� ���+�����1�����Y��a�@�E���J���㻻��C B������J&a~~�K{yyinn� ����UUU2���� =�C ���n�OOO��������`�m���5��B�q��ژ���lX� A���i���:�vssSPP�D����N�%�2���"�Ʉ ?�7f����E�~���"�x�gYVuu5�Gh$��A�������D666�!B�k�������L�����7.Ƕm&AQ�����ż�<&RSSC��B�O�����999�aF�fLDӴ��'��x~~���D"L��iSS��!�}�4��KJJ����!B���岲2&�;����8>�� �H$ �"H �p�(��$B!� " 7�������`��3����x���{��ί9眾���3��Ғ�`�e*�����Np ;ؒD�G��b���&���(�X������9U �A�酅��c����hR�T ���Cō1 ����yBBI��FGGM�sL'��U300`"�7P7==mBf���Y���(*&�I`��˿K��{���Iv��(:�;�3{�S�]BBI�s��p���>GO�*/�uddĄ0����I�Pӟ8}zz�4Q�YkwvvhU��P nnn���x�ZkY7�ґ��������O(�(J��2�4�]Y�>$�2����1c&�є�@X?Q T L��;ww�l2�p4��� ��vuu������u||������������A¹3���o�9Q�n������}k� �w��O�P�������[>:��������iD���)3�,Ͳ�=6! �a �" ��.��1���]^^�J��1��Wj6�kkk&��Ņa�D�P�0]eY...������!=>??3�o�(�F����������D�+��@(�@(R� B��ޞ�t~~���k��q��|���Ԕ ��ek ��@�@��6ZJ�cn����~~�Q�4���",2u��<��OEE*<==�����r �����!�n�z�� <�M����2π��������+i�<::�v�����|,�s5���,���퍩�la�������y��G� K�(����V�U�%����X����� �ˬ稱�Ml[��Ķu��c籓q����Rc�����a�ǠSSSkkk ӓ 8O�X���9F���G��i������vqq����a`DAgl��R[[ݓ���K�M^��tĵ�q��d`` ��AI^���z�#��L�+�A&�������7�!~$U���r��� ���А���}�O�������ׇ�����?v{A���������WVVF�dW�u�%���ȃ���kOOOee%�g��g���F�zE����M R�z�`��d�����MP���O���?�a8 ��y �R�`���ZJKKm�rUf�G��'p����my������LY��e&X���5��k\�F���9)F)xn��y�c[�D�(%^��EY�����CSf��#{w�rmY� �b�(���"+,4^�H���ҊH# �4�BR!�"�|2��0h�I����^�&��>��7�m��������\@�s_��i�c�c�EAx�6�C�@xɨ5���`�� ox��s�M�� �4�����Obʄ�# ���7yğ��gI����à?X�^���U��g?��g?�Y� -O5}����c�=��h��5���w��]��AWE��n� jfV�����o(4��"�'F"�D�%/y���Kvz��_���=��x���Ϝ9�b���1z����, �C�C��+_�ʥG40W�㮻�$��ݑ̣�f7 �+��eK��g^�p�FPj�7���.�HCs���,!�ŷU�p���x�����n@��6�l��/����~��������W�n��s{1���Z�N��:�|� ��w��AXo.�C=T��cF*�י�o�>a�p�AN�X`�s��e�s�7y�+^���(3��M����&� ��"��j��rn_��^w�u�)�(�=�~舣�>�����U�Z:����oy�[P�� ��ӛ8l����?�yU�ۙ�i#sr�D���k/0; 5ͦm��&Mj^V�w��� ��*�;d �!C�5S&/zы.��@�z�-��"�I�3/`�)��<�9<�A�e�����J��l� 1&l/F�a !��� ����>�X���(���wF ;� j�c�)7Dw�0ԟ�B���@<2�4�"#c ��1��w��{��>���%�y�k��)��{b�y睊��$�#�]���»�B��L�e/{g|`c��Y/}�K��1)��~;w���3N�i�����>@�u�\|��)��W-�7�*���V{E@�k��֙6,��=U�!�&^s�5��g�N�|�O�FN˔��/�0l��0b���&<�ky� 7l�?��t�M`��w8pM���* ���o�ӱ� a��&��^|s����� �~���� ��-=�LN�� �=}Ȑ��~A8��~p�n2g�����^�:��M1 h��\�8)*�Ҿ�(X�/v����C� �A�S��R]��x�+�]z�i�P)C��T�\��GVw�b�C���*�_tE�n����b��A���G>��L���W\a��c!�P��M�_��@C��B�=֬�z�uTI�/�a=y�M�W��9�w;s�T�����~u�\(�<�!����w�t��%"��X]}�Ֆ�&R�X�ٹ�[VO9�E��:���P����� ն�<t���=���9T�?`@H��п�^���+7�� �i�!N[�/����QN��p���� ���p�sV���H�q6٦�W��<�,�Um�3Jf!���կ���'@���|�2ŏ&�VR}*h��Ԍ'91f�B�X|ȭ�c\)O?�d��;{ۑdS������LKO�q��W��[�B ljס` 1i1�O" �)�æc�9��/[����8�6��M��.'�=��3�� �@z���G���̹�-@;X�K�$������ w�*���z�������'�c�u���8s�^�� ���D�NTLy�,qQ��.�4�{8D0]G��!9W��3��L�O��:�����^�V�d�pC�Tbu*���E�Ѽ��`�=��Ml��c���Y��v�kk�SX���b��A,U7<hO�`9��m~׆�<k�c��������K]���� ��V8%�J¸� �v�o��w���]�D���S@���b�۹�>WŔ�?�Ǫp�.=���� �P��[➈�ɺ ��a�S@,UOb�c (�� ��6O��]� ���.�<黣�̐� ue�Rg'��X�Z���쎙��X�~֒~�DJ��K�����Sb��6��\�PT�z��=l���\��>��o����q��@$����k}�١<�Z���O?m�g1��8�������4���Ù�R �5 ��˴Z������qV$I�� s T1��7x��,��Vo)��?��ڟ��[�<�x�kQ�#+-������>�iV�*$�n�)^(�q� �*Bs @h����]b{�@�jZ�}���[�Vr��!� WhJRB�_�U��A����9kk�I?�2y��'/)�,-��e�u� B�&�!�']����h<�����@x�UW)0����jd+��-����$Ѽ�i �r 1�^�[�"�n��qY������=Cy�셁X��CȬ�rz��}�S�r��)u���-x�i�|�Mmo�u\l��>�xk�d)�ma�:���Ǡ$�M�Yd��9-mu饗��R����(� dظfGo�L�H&r��!(Ҕ�,��4���' T0 Y�[�/��K5<�hRBJG�G�2B&v�,�m�VZ�?j�Iڹ��48G���v �v��Xa���LO)���%����BRL�, dQ�q����L�YU{���\ #���Z �8�H��q|��ݶǾS��wx�85��-�"f0�ĖK9�₵�-�:#@�omEb����3ԃ�iN3h'Ɛ�8�0�����*d ��r���Suw���FUXN6f����[B�ľ�]� &#�[q�)�C��u�Ta���r��h �7����+���A���jC�C�X 4�w�������{���4k�v��c^��~�/���X�I��/1T�|xш�X�zPsB���'�^�M �q��R�q�7�kߜȪ���)x뭷Z�^t�Q��a^�B�r��ŋ�{�@������?h��v�m������"����V 9�ͷ�^U�[�����㬌���U$ˊB�⨄�]�-*s=nN]7�p�.� ���§����QG*��ˬ*�2�E������bh�z� �����RC�K�$ �J\��@��%;B�B ۔j�o�W2P��Q�������z��*�Th�ʐ!��]J�����d�O`���P�P���U�R�S&@�bN�RrPSj8�X�аꅕ��%SZ� d�1�c��mh�NH��^W=��TIzPe�t!B����s��+l�+G�=���4.d��ڧ?�ij�� �y���=�*V�V���"�����o��|�.��yCm�W�3&��%��ۮ��t��7YS&|���`���X�a����LJ}��S� ��v���2�)���&[B��4��MA!�MeE�����oN��6�*�b.;CR<�����fI���7+_D�ˤ�~�̙�ѫ�[����ձ`���eK�����8��u��צ"; ��YzO岊�d,�.�@r�s���y=磟zs�w�M0#��&#$�ܦ�����2L�6w�Ra6]}�s��T�!CN- 2���RPa�F����~t!� �r��Rd)�@<��,�.��X_�m�! �Ly��v�Q7 �����R�F���ꭧJW� ��68pZ�u�S��_��I�����6���[��^��Ŧ���c W�̑�!�0��T=�dI�©D�G�oS`&��� #��?�P*En�P��xR��t52��7O 4 "�Z�Z~KU=8��"�x)<h��(�ϛ�*�ČV��g���8���fP9��A�R�ϴ���ү�F9) �N��v[�1���aZ��z��K�~�� ��.�ML�R�6o^\��;�F���{����W^Yi��Fݭ��2��@h��e��������$�2l�!��4w��j�m�Wq�AÆ��!���'��5��Xt�S{ERN K"vZ?��Sq�`�tB[uK�A���0�5eA���*���tq�88��\�f^Q����u�3m��l��cFh�z�R ���Zg��C��h��G !�g�q���|f����/~�[�H����[�Ł9�*���[����7���%V�6���A�H�� Q�E�W��3e���o\rC8��M���[���e��_��v��W額��{?�I�P��ş��r� �o*o�\�I}ξ!(��6��b���_�2� �����������r=X�B瘓d���M�ŷqvZ�!CN3 2a)�d��,��F�.nt�z\Pn�f���[�����s����X�f��C!�B�[���"M+~I�B���-��J��[�_2Y1��oY�}@c+��Q�M֦����;�ꬵ�Y�?�я�z�� �8����_ݢ�����Ђ�p�9���<���,\�_|q%�Us@�Q"�> 2��Ҩ�.�6����Q$��9���}�?q:�^?�שl�ݛL�4�����A?��A�y��P����aʹ��ǮL,��{?���b���n0DR�H�C��7 �zk���`���C����r�"sє_ҷ�f[@�1��ݧ��du���C��r@8d4�H��oS{l���1PT�R�kpױKR\�����ˑ�D�<�}�ʹ� �L�g�V �5t �RMU騔�Q%.J�n\���1���I�]<��2�I������TI�W��\�;�;h�����p2yӜ[.���ꯢ�L6�1�B�����b8.N�q�%| ��~ �FF��j{�V�=Th�%��%�"4����o~�uwwԿY$����� '^ӌ�oe��.��e�Ys�M�p~�Ki��}B��R�xF�婉P�$R�t�?��Vz�VF��А!��F��--�ń����E��d���Gڗ��k(M��o��$��;�� R�1�� ��)S��|� E��#&�[��{�B������E��L ��8v�J����������a)��ߚ�Ee-��¯}�k�E���JHY�\<L�c��L�Gd��~����8���ZJ���;j.�1�~� �s�#F� �:&b�i�D�}aș������ழ�{�^L�[.N��QX-����z5n��2�]g��y"r�kd(JO�H���[�BP�O1g�0���p���3�;�\~��1�Y*]��iA���v�E����R*#��_� 6�W� �>��9�^��w���B��v �)��X�!W�#��meR�[A�)H;`��Pq>��C̲�����x��yx@�я~�~L�խLE 8]vM��n�*�������ae���k)-�կ~u��rG��!F�,eH����}�B߈W�Z��zqf 2h���� �#����'1v(��j�c:�?c���7 ���������5���q^E*����g� A���_ 2 �!�4'Dl�Rg)r� r��i{���9W- a���8�h���: !�v�>J��8�`�Vb#�,�if��VQ�Id�L��;H�Q��Mk�@�8< ���Y�!��� �Y Ps@ب��`�����6�~�kr�$<S�<���4ѻ�#�i�!���1�S�ǯҎD�C@a�lTL9����[��l � �!�D^bz��n��X$� ĕ;�$�|8yQaŒ8��.��ꍩ��tW@8d �!C��F�:���\w��Tl��c���帙/ ���ت�)'b˼?��W<��P��N�(�?��4���.�����M���'��tH#��k�90 �*<4M��SL�-+�?�ҶA)Z89�Ig�� ��>�A%U�QZ�*�Z*`�����K7O����iy�rw��ސ՞��i�+�D���* �\"��R�%^��,�}Bb��:�.f����9����(�)���6��[�@8d�\��'��(e on���UO���w������ߪ�5PP�$�w B�]i�0o��� ���)��Re�<������t@a���T)���ˤ�:���tN�6�1�}+[�w�C������tC�$cl �I�=zt 6�x� ;%���Pe��dY� @���2D��ʶj�6�M} @h��y]�, �J�@8d �!C',�XYBn�q��Ĉ�`ǯ���UF�^Yڱ�}��Vӡ�%�w B�+���4�,��Z���k�d�/�p��Ij� � N�q���;0 ĝK[H�+��s�Lt ��)@��`�]y`}!�&�F�����s�82jW<ʍč�t�ֵ�@�<�A���*R�y$�Ջ�G|V���\�fO�|u1d߀��آ�XB��,�v���pȐC�z-q�����Fv��+k���N�o�" �Tt=��P�e%��?����ipR�̛Ke�ej�&<��� y���._q�!�n�*c�/#,S)��,;� �����1�9?�?Cq�]\�P��XN�z�).���Pm����]�L��[�d t��� ���< ��M�wMkɛ�@<