??????????????? ???????????????
Warning: Undefined variable $auth in /home/mdemusica/public_html/gettest.php on line 544

Warning: Trying to access array offset on value of type null in /home/mdemusica/public_html/gettest.php on line 544

Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 181

Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 182

Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 183

Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 184

Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 185

Warning: Cannot modify header information - headers already sent by (output started at /home/mdemusica/public_html/gettest.php:1) in /home/mdemusica/public_html/gettest.php on line 186
instagram-feed/templates/footer.php000064400000004421151435171370013447 0ustar00
> > > > target="_blank" rel="nofollow noopener"> >
instagram-feed/templates/feed.php000064400000003675151435171370013066 0ustar00
data-feedid="" data-shortcode-atts="" >
> posts_loop( $posts, $settings ); } ?>
instagram-feed/templates/header.php000064400000007117151435171370013406 0ustar00 > > >
>
>
width="50" height="50">
>
>

>', esc_html( nl2br( $bio ) ) ); ?>

instagram-feed/templates/item.php000064400000005150151435171370013107 0ustar00
instagram-feed/admin/SBI_Upgrader.php000064400000026603151435171370013517 0ustar00 'get_version', 'license' => $license_data['key'], 'item_name' => isset( $license_data['item_name'] ) ? $license_data['item_name'] : false, 'item_id' => isset( $license_data['item_id'] ) ? $license_data['item_id'] : false, 'version' => '0', 'slug' => self::SLUG, 'author' => 'SmashBalloon', 'url' => home_url(), 'beta' => false, 'nocache' => '1', ); $api_url = trailingslashit( self::STORE_URL ); $request = wp_remote_post( $api_url, array( 'timeout' => 15, 'sslverify' => true, 'body' => $api_params ) ); if ( ! is_wp_error( $request ) ) { $version_info = json_decode( wp_remote_retrieve_body( $request ) ); return $version_info; } return false; } /** * Ajax handler for grabbing the upgrade url. * * @since 4.0 */ public static function maybe_upgrade_redirect() { $home_url = home_url(); check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } // Check for permissions. if ( ! current_user_can( 'install_plugins' ) ) { wp_send_json_error( array( 'message' => esc_html__( 'You are not allowed to install plugins.', 'instagram-feed' ) ) ); } if ( SBI_Upgrader::is_dev_url( home_url() ) ) { wp_send_json_success( array( 'url' => self::INSTALL_INSTRUCTIONS, ) ); } // Check license key. $license = ! empty( $_POST['license_key'] ) ? sanitize_key( $_POST['license_key'] ) : ''; if ( empty( $license ) ) { wp_send_json_error( array( 'message' => esc_html__( 'You are not licensed.', 'instagram-feed' ) ) ); } $args = array( 'plugin_name' => self::NAME, 'plugin_slug' => 'pro', 'plugin_path' => plugin_basename( __FILE__ ), 'plugin_url' => trailingslashit( WP_PLUGIN_URL ) . 'pro', 'home_url' => $home_url, 'version' => '1.0', 'key' => $license, ); $url = add_query_arg( $args, self::CHECK_URL ); $remote_request_args = array( 'timeout' => '20', ); $response = wp_remote_get( $url, $remote_request_args ); if ( ! is_wp_error( $response ) ) { $body = wp_remote_retrieve_body( $response ); $check_key_response = json_decode( $body, true ); if ( empty( $check_key_response['license_data'] ) ) { wp_send_json_error( array( 'message' => esc_html( SBI_Upgrader::get_error_message( $check_key_response ) ), ) ); } if ( ! empty( $check_key_response['license_data']['error'] ) ) { wp_send_json_error( array( 'message' => SBI_Upgrader::get_error_message( $check_key_response ), ) ); } if ( ! empty( $check_key_response['license_data']['error'] ) ) { wp_send_json_error( array( 'message' => SBI_Upgrader::get_error_message( $check_key_response ), ) ); } if ( $check_key_response['license_data']['license'] !== 'valid' ) { wp_send_json_error( array( 'message' => SBI_Upgrader::get_error_message( $check_key_response ), ) ); } $license_data = $check_key_response['license_data']; update_option( 'sbi_license_key', $license ); update_option( 'sbi_license_data', $license_data ); update_option( 'sbi_license_status', $license_data['license'] ); // Redirect. $oth = hash( 'sha512', wp_rand() ); $hashed_oth = hash_hmac( 'sha512', $oth, wp_salt() ); update_option( 'sbi_one_click_upgrade', $oth ); $version = '1.0'; $version_info = SBI_Upgrader::get_version_info( $license_data ); $file = ''; if ( isset( $version_info->package ) ) { $file = $version_info->package; } $siteurl = admin_url(); $endpoint = admin_url( 'admin-ajax.php' ); $redirect = admin_url( 'admin.php?page=' . self::REDIRECT ); $url = add_query_arg( array( 'key' => $license, 'oth' => $hashed_oth, 'endpoint' => $endpoint, 'version' => $version, 'siteurl' => $siteurl, 'homeurl' => $home_url, 'redirect' => rawurldecode( base64_encode( $redirect ) ), 'file' => rawurldecode( base64_encode( $file ) ), 'plugin_name' => self::NAME, ), self::UPGRADE_URL ); wp_send_json_success( array( 'url' => $url, ) ); } wp_send_json_error( array( 'message' => esc_html__( 'Could not connect.', 'instagram-feed' ) ) ); } /** * Endpoint for one-click upgrade. * * @since 4.0 */ public static function install_upgrade() { $error = esc_html__( 'Could not install upgrade. Please download from smashballoon.com and install manually.', 'instagram-feed' ); // verify params present (oth & download link). $post_oth = ! empty( $_REQUEST['oth'] ) ? sanitize_text_field( $_REQUEST['oth'] ) : ''; $post_url = ! empty( $_REQUEST['file'] ) ? $_REQUEST['file'] : ''; if ( empty( $post_oth ) || empty( $post_url ) ) { wp_send_json_error( $error ); } // Verify oth. $oth = get_option( 'sbi_one_click_upgrade' ); if ( empty( $oth ) ) { wp_send_json_error( $error ); } if ( hash_hmac( 'sha512', $oth, wp_salt() ) !== $post_oth ) { wp_send_json_error( $error ); } // Delete so cannot replay. delete_option( 'sbi_one_click_upgrade' ); // Set the current screen to avoid undefined notices. set_current_screen( self::REDIRECT ); // Prepare variables. $url = esc_url_raw( add_query_arg( array( 'page' => self::REDIRECT, ), admin_url( 'admin.php' ) ) ); // Verify pro not installed. $active = activate_plugin( self::SLUG, $url, false, true ); if ( ! is_wp_error( $active ) ) { deactivate_plugins( plugin_basename( SBI_PLUGIN_DIR ) ); wp_send_json_success( esc_html__( 'Plugin installed & activated.', 'instagram-feed' ) ); } $creds = request_filesystem_credentials( $url, '', false, false, null ); // Check for file system permissions. if ( false === $creds ) { wp_send_json_error( $error ); } if ( ! WP_Filesystem( $creds ) ) { wp_send_json_error( $error ); } // We do not need any extra credentials if we have gotten this far, so let's install the plugin. $license = get_option( 'sbi_license_key' ); if ( empty( $license ) ) { wp_send_json_error( new \WP_Error( '403', esc_html__( 'You are not licensed.', 'instagram-feed' ) ) ); } // Do not allow WordPress to search/download translations, as this will break JS output. remove_action( 'upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20 ); // Create the plugin upgrader with our custom skin. $installer = new \Sbi\Helpers\PluginSilentUpgrader( new \SBI_Install_Skin() ); // Error check. if ( ! method_exists( $installer, 'install' ) || empty( $post_url ) ) { wp_send_json_error( $error ); } $license_data = get_option( 'sbi_license_data' ); if ( ! empty ( $license_data ) ) { $version_info = SBI_Upgrader::get_version_info( $license_data ); $file = ''; if ( isset( $version_info->package ) ) { $file = $version_info->package; } } else { wp_send_json_error( new \WP_Error( '403', esc_html__( 'You are not licensed.', 'instagram-feed' ) ) ); } if ( ! empty( $file ) ) { $installer->install( $file ); // phpcs:ignore // Check license key. // Flush the cache and return the newly installed plugin basename. wp_cache_flush(); $plugin_basename = $installer->plugin_info(); if ( $plugin_basename ) { deactivate_plugins( plugin_basename( SBI_PLUGIN_BASENAME ), true ); // Activate the plugin silently. $activated = activate_plugin( $plugin_basename ); if ( ! is_wp_error( $activated ) ) { wp_send_json_success( esc_html__( 'Plugin installed & activated.', 'instagram-feed' ) ); } else { // Reactivate the lite plugin if pro activation failed. $activated = activate_plugin( plugin_basename( SBI_PLUGIN_BASENAME ), '', false, true ); wp_send_json_error( esc_html__( 'Pro version installed but needs to be activated from the Plugins page inside your WordPress admin.', 'instagram-feed' ) ); } } } wp_send_json_error( $error ); } /** * Whether or not it's likely to be a reachable URL for upgrade * * @param string $url * * @return bool * * @since 4.0 */ public static function is_dev_url( $url = '' ) { $is_local_url = false; // Trim it up $url = strtolower( trim( $url ) ); // Need to get the host...so let's add the scheme so we can use parse_url if ( false === strpos( $url, 'http://' ) && false === strpos( $url, 'https://' ) ) { $url = 'http://' . $url; } $url_parts = parse_url( $url ); $host = ! empty( $url_parts['host'] ) ? $url_parts['host'] : false; if ( ! empty( $url ) && ! empty( $host ) ) { if ( false !== ip2long( $host ) ) { if ( ! filter_var( $host, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ) ) { $is_local_url = true; } } elseif ( 'localhost' === $host ) { $is_local_url = true; } $tlds_to_check = array( '.local', ':8888', ':8080', ':8081', '.invalid', '.example', '.test' ); foreach ( $tlds_to_check as $tld ) { if ( false !== strpos( $host, $tld ) ) { $is_local_url = true; break; } } if ( substr_count( $host, '.' ) > 1 ) { $subdomains_to_check = []; foreach ( $subdomains_to_check as $subdomain ) { $subdomain = str_replace( '.', '(.)', $subdomain ); $subdomain = str_replace( array( '*', '(.)' ), '(.*)', $subdomain ); if ( preg_match( '/^(' . $subdomain . ')/', $host ) ) { $is_local_url = true; break; } } } } return $is_local_url; } /** * Handle API Response and check for an error. * * @param array $response * * @return string * * @since 4.0 */ public static function get_error_message( $response ) { $message = ''; if ( isset( $response['license_data']['license'] ) && $response['license_data']['license'] === 'invalid'){ $message = __( 'This license is NOT valid.', 'instagram-feed' ); } if ( isset( $response['error'] ) ) { $error = sanitize_text_field( $response['error'] ); switch ( $error ) { case 'expired': $message = __( 'This license is expired.', 'instagram-feed' ); break; default : $message = __( 'We encountered a problem unlocking the PRO features. Please install the PRO version manually.', 'instagram-feed' ); } } return $message; } } instagram-feed/admin/SBI_HTTP_Request.php000064400000003707151435171370014235 0ustar00 array( 'Content-Type' => 'application/json', ), ); $args = array_merge( $args, $data ); if ( 'GET' === $method ) { $request = wp_remote_get( $url, $args ); } elseif ( 'DELETE' === $method ) { $args['method'] = 'DELETE'; $request = wp_remote_request( $url, $args ); } elseif ( 'PATCH' === $method ) { $args['method'] = 'PATCH'; $request = wp_remote_request( $url, $args ); } elseif ( 'PUT' === $method ) { $args['method'] = 'PUT'; $request = wp_remote_request( $url, $args ); } else { $args['method'] = 'POST'; $request = wp_remote_post( $url, $args ); } return $request; } /** * Check if WP_Error returned * * @param array|WP_Error $request * * @since 4.0 * * @return array|WP_Error */ public static function is_error( $request ) { return is_wp_error( $request ); } /** * Get the remote call status code * * @param array|WP_Error $request * * @since 4.0 * * @return array|WP_Error */ public static function status( $request ) { if ( is_wp_error( $request ) ) { return; } return wp_remote_retrieve_response_code( $request ); } /** * Get the remote call body data * * @param array|WP_Error $request * * @since 4.0 * * @return array $response */ public static function data( $request ) { $response = wp_remote_retrieve_body( $request ); return json_decode( $response ); } } instagram-feed/admin/SBI_oEmbeds.php000064400000051507151435171370013325 0ustar00init(); } /** * Determining if the user is viewing the our page, if so, party on. * * @since 4.0 */ public function init() { if ( ! is_admin() ) { return; } add_action('admin_menu', [$this, 'register_menu']); add_action( 'wp_ajax_disable_instagram_oembed_from_instagram', [$this, 'disable_instagram_oembed_from_instagram'] ); add_action( 'wp_ajax_disable_facebook_oembed_from_instagram', [$this, 'disable_facebook_oembed_from_instagram'] ); } /** * Register Menu. * * @since 4.0 */ public function register_menu() { $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); $oembeds_manager = add_submenu_page( 'sb-instagram-feed', __( 'oEmbeds', 'instagram-feed' ), __( 'oEmbeds', 'instagram-feed' ), $cap, self::SLUG, [$this, 'oembeds_manager'], 2 ); add_action( 'load-' . $oembeds_manager, [$this,'oembeds_enqueue_admin_scripts']); } /** * Disable Instagram oEmbed * * @since 4.0 * * @return SBI_Response */ public function disable_instagram_oembed_from_instagram () { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); // This auto-dies. } $oembed_settings = get_option( 'sbi_oembed_token', array() ); $oembed_settings['access_token'] = ''; $oembed_settings['disabled'] = true; update_option( 'sbi_oembed_token', $oembed_settings ); $response = new SBI_Response( true, array( 'connectionUrl' => $this->get_connection_url() ) ); $response->send(); } /** * Disable Facebook oEmbed * * @since 4.0 * * @return SBI_Response */ public function disable_facebook_oembed_from_instagram () { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); // This auto-dies. } $oembed_settings = get_option( 'cff_oembed_token', array() ); $oembed_settings['access_token'] = ''; $oembed_settings['disabled'] = true; update_option( 'cff_oembed_token', $oembed_settings ); $response = new SBI_Response( true, array( 'connectionUrl' => $this->get_connection_url() ) ); $response->send(); } /** * Enqueue oEmbeds CSS & Script. * * Loads only for oEmbeds page * * @since 4.0 */ public function oembeds_enqueue_admin_scripts(){ if( ! get_current_screen() ) { return; } $screen = get_current_screen(); if ( ! 'instagram-feed_page_sbi-oembeds-manager' === $screen->id ) { return; } wp_enqueue_style( 'oembeds-style', SBI_PLUGIN_URL . 'admin/assets/css/oembeds.css', false, SBIVER ); wp_enqueue_script( 'sb-vue', SBI_PLUGIN_URL . 'js/vue.min.js', null, '2.6.12', true ); wp_enqueue_script( 'oembeds-app', SBI_PLUGIN_URL.'admin/assets/js/oembeds.js', null, SBIVER, true ); $sbi_oembends = $this->statuses_and_info(); $sbi_oembends['nonce'] = wp_create_nonce( 'sbi-admin' ); wp_localize_script( 'oembeds-app', 'sbi_oembeds', $sbi_oembends ); } /** * Statuses and info about the current state of oEmbed connection * * @return array * * @since 4.0 */ public function statuses_and_info() { $return = array( 'admin_url' => admin_url(), 'ajax_handler' => admin_url( 'admin-ajax.php' ), 'supportPageUrl' => admin_url( 'admin.php?page=sbi-support' ), 'links' => \InstagramFeed\Builder\SBI_Feed_Builder::get_links_with_utm(), 'socialWallLinks' => \InstagramFeed\Builder\SBI_Feed_Builder::get_social_wall_links(), 'socialWallActivated' => is_plugin_active( 'social-wall/social-wall.php' ), 'genericText' => array( 'help' => __( 'Help', 'instagram-feed' ), 'title' => __( 'oEmbeds', 'instagram-feed' ), 'description' => __( 'Use Smash Balloon to power any Instagram or Facebook oEmbeds across your site. Just click the button below and we\'ll do the rest. ', 'instagram-feed' ), 'instagramOEmbeds' => __( 'Instagram oEmbeds are currently not being handled by Smash Balloon', 'instagram-feed' ), 'instagramOEmbedsEnabled' => __( 'Instagram oEmbeds are turned on', 'instagram-feed' ), 'facebookOEmbeds' => __( 'Facebook oEmbeds are currently not being handled by Smash Balloon', 'instagram-feed' ), 'facebookOEmbedsEnabled' => __( 'Facebook oEmbeds are turned on', 'instagram-feed' ), 'enable' => __( 'Enable', 'instagram-feed' ), 'disable' => __( 'Disable', 'instagram-feed' ), 'whatAreOembeds' => __( 'What are oEmbeds?', 'instagram-feed' ), 'whatElseOembeds' => __( 'What else can the Instagram Feed plugin do?', 'instagram-feed' ), 'whenYouPaste' => __( 'When you paste a link to a Instagram or Facebook post in WordPress, it automatically displays the post instead of the URL. That is called an oEmbed.', 'instagram-feed' ), 'dueToRecent' => __( 'Due to recent API changes from Instagram, WordPress cannot automatically embed your posts.', 'instagram-feed' ), 'however' => __( 'However, we have added this feature to Smash Balloon to make sure your oEmbeds keep working.', 'instagram-feed' ), 'justEnable' => __( 'Just enable it above, and all your existing and new embeds should work automatically, no other input required.', 'instagram-feed' ), 'displayACompletely' => __( 'Display a completely customizable Instagram Feed with tons of features', 'instagram-feed' ), 'createACustom' => __( 'Create a custom styled feed of your Instagram posts which integrates seamlessly with your WordPress theme.', 'instagram-feed' ), ), 'images' => array( 'fbIcon' => '', 'instaIcon' => '', 'image1_2x' => SBI_PLUGIN_URL . 'admin/assets/img/oembeds-image-1@2x.png', 'image2_2x' => SBI_PLUGIN_URL . 'admin/assets/img/oembeds-image-2@2x.png', 'image3_2x' => SBI_PLUGIN_URL . 'admin/assets/img/oembeds-image-3@2x.png', 'image4_2x' => SBI_PLUGIN_URL . 'admin/assets/img/oembeds-image-4@2x.png', ), 'modal' => array( 'title' => __( 'Enable Facebook oEmbeds', 'instagram-feed' ), 'description' => __( 'To enable Facebook oEmbeds our Custom Facebook Feed plugin is required. Click the button below to Install it and enable Facebook oEmbeds.', 'instagram-feed' ), 'install' => __( 'Install Plugin', 'instagram-feed' ), 'activate' => __( 'Activate Plugin', 'instagram-feed' ), 'cancel' => __( 'Cancel', 'instagram-feed' ), 'instaIcon' => SBI_PLUGIN_URL . 'admin/assets/img/facebook-color-icon.svg', 'timesIcon' => '', 'plusIcon' => '' ), 'loaderSVG' => '', 'checkmarkSVG' => '', 'timesCircleSVG' => '' ); $oembed_token_settings = get_option( 'sbi_oembed_token', array() ); $saved_access_token_data = isset( $oembed_token_settings['access_token'] ) ? $oembed_token_settings['access_token'] : false; $newly_retrieved_oembed_connection_data = $this->maybe_connection_data( $saved_access_token_data ); if ( ! empty( $newly_retrieved_oembed_connection_data['access_token'] ) ) { $oembed_token_settings = $newly_retrieved_oembed_connection_data; $return['newOembedData'] = $newly_retrieved_oembed_connection_data; update_option( 'cff_oembed_token', $newly_retrieved_oembed_connection_data ); update_option( 'sbi_oembed_token', $newly_retrieved_oembed_connection_data ); // If the access token is new or has changed, then we need to clear the cache. $this->clear_oembed_cache(); } elseif ( ! empty( $newly_retrieved_oembed_connection_data ) ) { $return['newOembedData'] = $newly_retrieved_oembed_connection_data; } $return['connectionURL'] = $this->get_connection_url(); $return['tokenData'] = $oembed_token_settings; $return['instagram'] = array( 'doingOembeds' => $this->instagram_oembed_enabled() ); $return['facebook'] = [ 'active' => class_exists( '\CustomFacebookFeed\CFF_Oembed' ), 'doingOembeds' => false ]; $return['facebook']['installer'] = $this->facebook_installer_info(); if ( class_exists( '\CustomFacebookFeed\CFF_Oembed' ) ) { $return['facebook']['doingOembeds'] = \CustomFacebookFeed\CFF_Oembed::can_do_oembed(); } return $return; } /** * Clear instagram oembed transients and cache * * @since 6.1.2 */ public static function clear_oembed_cache() { // get _transient_oembed_* options from wp_options. global $wpdb; $table_name = $wpdb->prefix . 'options'; $transient_options = $wpdb->get_results( $wpdb->prepare( "SELECT option_name, option_value FROM $table_name WHERE option_name LIKE %s AND option_value LIKE %s", '_transient_oembed_%', '%fbtrace_id%' ) ); foreach ( $transient_options as $value ) { $option_name = $value->option_name; delete_option( $option_name ); // find the _transient_timeout_oembed_* options and delete them. $option_key = substr( $option_name, 18 ); $timeout_key = '_transient_timeout_oembed_' . $option_key; $timeout_value = get_option( $timeout_key ); if ( is_numeric( $timeout_value ) ) { delete_option( $timeout_key ); } } // get _oembed_* options from wp_postmeta. $postmeta_table = $wpdb->prefix . 'postmeta'; $oembed_options = $wpdb->get_results( $wpdb->prepare( "SELECT post_id, meta_key, meta_value FROM $postmeta_table WHERE meta_key LIKE %s AND meta_value LIKE %s", '_oembed_%', '{{unknown}}' ) ); foreach ( $oembed_options as $value ) { $post_id = $value->post_id; $meta_key = $value->meta_key; $meta_value = $value->meta_value; $meta_value = maybe_unserialize( $meta_value ); delete_post_meta( $post_id, $meta_key ); // get the cache key. $cache_key = substr( $meta_key, 8 ); $cache_meta_key = '_oembed_time_' . $cache_key; $cache_meta_value = get_post_meta( $post_id, $cache_meta_key, true ); if ( is_numeric( $cache_meta_value ) ) { delete_post_meta( $post_id, $cache_meta_key ); } } } /** * Connection URLs are based on the website connecting accounts so that is * configured here and returned * * @return string * * @since 4.0 */ public static function get_connection_url() { $admin_url_state = admin_url( 'admin.php?page=sbi-oembeds-manager' ); $nonce = wp_create_nonce('sbi_con'); //If the admin_url isn't returned correctly then use a fallback if( $admin_url_state == '/wp-admin/admin.php?page=sbi-oembeds-manager' ){ $admin_url_state = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; } return array( 'connect' => SBI_OEMBED_CONNECT_URL, 'sbi_con' => $nonce, 'stateURL' => $admin_url_state ); } /** * Listener for retrieving and storing an access token for oEmbeds * * @param string $saved_access_token_data * * @return array|bool * * @since 4.0 */ public static function maybe_connection_data( $saved_access_token_data ) { $screen = get_current_screen(); if ( ! $screen ) { return false; } if( ! isset( $_GET['page'] ) && 'sbi-oembeds-manager' !== $_GET['page'] ) { return false; } global $sbi_notices; $oembed_success_notice = $sbi_notices->get_notice('oembed_api_change_reconnect'); if ($oembed_success_notice) { $sbi_notices->remove_notice('oembed_api_change_reconnect'); } if ( ! empty( $_GET['transfer'] ) ) { if ( class_exists( '\CustomFacebookFeed\CFF_Oembed' ) ) { $cff_oembed_token = \CustomFacebookFeed\CFF_Oembed::last_access_token(); $return = get_option( 'cff_oembed_token', array() ); $return['access_token'] = $cff_oembed_token; $return['disabled'] = false; return $return; } } if ( isset( $_GET['sbi_access_token'] ) ) { $access_token = sbi_sanitize_alphanumeric_and_equals( $_GET['sbi_access_token'] ); $return = []; $valid_new_access_token = ! empty( $access_token ) && strlen( $access_token ) > 20 && $saved_access_token_data !== $access_token ? $access_token : false; if ( $valid_new_access_token ) { $return['access_token'] = $valid_new_access_token; $return['disabled'] = false; $return['expiration_date'] = 'never'; $message = '

' . __('oEmbed account successfully connected. You are all set to continue creating oEmbeds.', 'instagram-feed') . '

'; $success_args = array( 'class' => 'sbi-admin-notices', 'message' => $message, 'dismissible' => true, 'dismiss' => array( 'class' => 'sbi-notice-dismiss', 'icon' => SBI_PLUGIN_URL . 'admin/assets/img/sbi-dismiss-icon.svg', 'tag' => 'a', 'href' => '#', ), 'priority' => 1, 'page' => array( 'sbi-oembeds-manager', ), 'icon' => array( 'src' => SBI_PLUGIN_URL . 'admin/assets/img/sbi-exclamation.svg', 'wrap' => '', ), 'styles' => array( 'display' => 'flex', 'justify-content' => 'space-between', 'gap' => '2rem', ), 'wrap_schema' => '
{icon}
{message}
{dismiss}
', ); $sbi_notices->add_notice('oembed_api_change_reconnect', 'information', $success_args); } else { if ( $saved_access_token_data === $access_token ) { $return['error'] = 'Not New'; } else { $return['error'] = 'Not Valid'; } } return $return; } return false; } /** * Check if Instagram oEmbed is enabled or not * * @return bool * * @since 4.0 */ public function instagram_oembed_enabled() { $sbi_oembed_token = get_option( 'sbi_oembed_token' ); if ( isset( $sbi_oembed_token['access_token'] ) && isset( $sbi_oembed_token['disabled'] ) && ! $sbi_oembed_token['disabled'] ) { return true; } return false; } /** * Check if Facebook oEmbed is enabled or not * * @return bool * * @since 4.0 */ public function facebook_oembed_enabled() { $cff_oembed_token = get_option( 'cff_oembed_token' ); if ( isset( $cff_oembed_token['access_token'] ) && isset( $cff_oembed_token['disabled'] ) && ! $cff_oembed_token['disabled'] ) { return true; } return false; } /** * Determines what action for Instagram should be done in the following order * and returns data used in the common "addon" installer * * Free or Pro active, do nothing * Pro installed but not active, activate Pro * Free installed but not active, activate Free * Nothing installed, install and activate Free * * @return array * * @since 4.0 */ public static function facebook_installer_info() { $all_plugins = get_plugins(); $active_plugins = get_option( 'active_plugins' ); if ( in_array( 'custom-facebook-feed/custom-facebook-feed.php', $active_plugins, true ) || in_array( 'custom-facebook-feed-pro/custom-facebook-feed.php', $active_plugins, true ) ) { return [ 'nextStep' => 'none', 'plugin' => 'none', 'action' => 'none', 'referrer' => 'oembeds' ]; } foreach ( $all_plugins as $plugin ) { if ( strpos( $plugin['Name'], 'Custom Facebook Feed Pro' ) !== false ) { return [ 'nextStep' => 'pro_activate', 'plugin' => 'custom-facebook-feed-pro/custom-facebook-feed.php', 'action' => 'sbi_activate_addon', 'referrer' => 'oembeds' ]; } if ( strpos( $plugin['Name'], 'Custom Facebook Feed' ) !== false ) { return [ 'nextStep' => 'free_activate', 'plugin' => 'custom-facebook-feed/custom-facebook-feed.php', 'action' => 'sbi_activate_addon', 'referrer' => 'oembeds' ]; } } return [ 'nextStep' => 'free_install', 'plugin' => 'https://downloads.wordpress.org/plugin/custom-facebook-feed.zip', 'action' => 'sbi_install_addon', 'referrer' => 'oembeds' ]; } /** * oEmbeds Manager Page View Template * * @since 4.0 */ public function oembeds_manager(){ \InstagramFeed\SBI_View::render( 'oembeds.index' ); } } instagram-feed/admin/views/oembeds/content.php000064400000006036151435171370015474 0ustar00

{{genericText.title}}

{{genericText.description}}

{{genericText.instagramOEmbedsEnabled}} {{genericText.instagramOEmbeds}}
{{genericText.facebookOEmbedsEnabled}} {{genericText.facebookOEmbeds}}

{{genericText.whatElseOembeds}}

{{genericText.whatAreOembeds}}

instagram-feed/admin/views/oembeds/index.php000064400000000561151435171370015126 0ustar00
instagram-feed/admin/views/oembeds/modal.php000064400000001547151435171370015120 0ustar00

{{modal.title}}

{{modal.description}}

instagram-feed/admin/views/oembeds/oembed_features.php000064400000001375151435171370017154 0ustar00

{{genericText.whenYouPaste}}

{{genericText.dueToRecent}}

{{genericText.however}}

{{genericText.justEnable}}

instagram-feed/admin/views/oembeds/plugin_info.php000064400000000560151435171370016327 0ustar00

{{genericText.displayACompletely}}

{{genericText.createACustom}}

instagram-feed/admin/views/about/content.php000064400000015462151435171370015173 0ustar00

{{genericText.title}}

{{aboutBox.atSmashBalloon}}

{{aboutBox.weAreOn}}

{{aboutBox.ourPlugins}}

{{genericText.title2}}

{{genericText.description2}}

{{plugin.title}}

{{plugin.description}}

{{social_wall.title}}

{{social_wall.description}}

{{buttons.viewDemo}}

{{genericText.title3}}

instagram-feed/admin/views/about/index.php000064400000000553151435171370014623 0ustar00
instagram-feed/admin/views/sections/builder_footer_cta.php000064400000015725151435171370020073 0ustar00

{{genericText.getMoreFeatures}}

{{genericText.liteFeedUsersAutoApply}} {{genericText.tryDemo}}
{{genericText.ctaHashtag}}
{{genericText.ctaLayout}}
{{genericText.ctaPopups}}
{{genericText.ctaFilter}}

{{genericText.andMuchMore}}

  • {{item}}
instagram-feed/admin/views/sections/settings_footer_cta.php000064400000012602151435171370020274 0ustar00

{{genericText.getMoreFeatures}}

{{genericText.liteFeedUsersAutoApply}}
{{genericText.ctaHashtag}}
{{genericText.ctaLayout}}
{{genericText.ctaPopups}}
{{genericText.ctaFilter}}

{{genericText.andMuchMore}}

  • {{item}}
{{genericText.tryDemo}}
instagram-feed/admin/views/sections/header.php000064400000024463151435171370015467 0ustar00
instagram-feed/admin/views/sections/sticky_widget.php000064400000005616151435171370017107 0ustar00
instagram-feed/admin/views/settings/content.php000064400000006607151435171370015722 0ustar00

{{genericText.settings}}

instagram-feed/admin/views/settings/index.php000064400000001414151435171370015346 0ustar00
instagram-feed/admin/views/settings/tab/feeds.php000064400000013767151435171370016111 0ustar00

{{feedsTab.cachingBox.title}}

{{feedsTab.gdprBox.title}}

{{feedsTab.gdprBox.gdprTooltipFeatureInfo.headline}}
  • {{feature}}

{{feedsTab.customCSSBox.title}}

{{feedsTab.customJSBox.title}}

instagram-feed/admin/views/settings/tab/advanced.php000064400000025212151435171370016554 0ustar00

{{advancedTab.optimizeBox.header}}

{{advancedTab.optimizeBox.title}}

{{advancedTab.legacyCSSBox.title}}

{{advancedTab.ajaxBox.title}}

{{advancedTab.ajaxBox.helpText}}

{{advancedTab.resetErrorBox.title}}

{{advancedTab.resetErrorBox.helpText}}

{{advancedTab.usageBox.title}}

{{advancedTab.ajaxInitial.title}}

{{advancedTab.ajaxInitial.helpText}}

{{advancedTab.enqueueHead.title}}

{{advancedTab.enqueueHead.helpText}}

{{advancedTab.enqueueShortcode.title}}

{{advancedTab.enqueueShortcode.helpText}}

{{advancedTab.jsImages.title}}

{{advancedTab.jsImages.helpText}}

{{advancedTab.adminErrorBox.title}}

{{advancedTab.adminErrorBox.helpText}}

{{advancedTab.feedIssueBox.title}}

{{advancedTab.feedIssueBox.sendReport}} {{advancedTab.feedIssueBox.to}}

{{advancedTab.dpaClear.title}}

{{advancedTab.dpaClear.helpText}}
instagram-feed/admin/views/settings/tab/general.php000064400000044253151435171370016432 0ustar00

{{generalTab.uoInstallNotice.notice}}

{{generalTab.licenseBox.title}}

{{generalTab.licenseBox.description}}

{{generalTab.licenseBox.test}} {{generalTab.licenseBox.upgrade}}
{{generalTab.licenseBox.test}} {{generalTab.licenseBox.upgrade}}

{{generalTab.manageSource.title}}

{{generalTab.manageSource.description}}
{{genericText.addSource}}
{{source.username}}
{{genericText.id}} {{source.account_id}}

{{generalTab.preserveBox.title}}

{{generalTab.preserveBox.description}}

{{generalTab.importBox.title}}

{{generalTab.importBox.description}}

{{generalTab.exportBox.title}}

{{generalTab.exportBox.description}}
instagram-feed/admin/views/support/content.php000064400000027577151435171370015607 0ustar00

{{genericText.title}}

{{genericText.gettingStarted}}

{{genericText.someHelpful}}

{{genericText.docsN}}

{{genericText.runInto}}

{{genericText.additionalR}}

{{genericText.toHelp}}

{{genericText.needMore}}

{{buttons.submitTicket}}

{{genericText.ourFast}}

{{genericText.systemInfo}}

{{genericText.newTempHeading}}

{{genericText.newTempDesc}}

{{genericText.tempLoginHeading}}

{{genericText.tempLoginDesc}}

{{genericText.link}} {{genericText.expires}}
{{tempUser.url}} {{tempUser.expires_date + ' ' + ( parseInt(tempUser.expires_date) <= 1 ? genericText.day : genericText.days)}}
instagram-feed/admin/views/support/index.php000064400000000561151435171370015224 0ustar00
instagram-feed/admin/views/support/support-tools.php000064400000016732151435171370016776 0ustar00

<?php echo esc_attr($connected_account['username']); ?>

:
:

:
:

:
: : :

get_system_info(); ?>
init(); } /** * Determining if the user is viewing the our page, if so, party on. * * @since 4.0 */ public function init() { if ( ! is_admin() ) { return; } add_action( 'in_admin_header', [ $this, 'remove_admin_notices' ] ); add_action( 'wp_ajax_sbi_check_license', [ $this, 'sbi_check_license' ] ); add_action( 'sbi_header_notices', array( $this, 'header_notices' ) ); add_action( 'wp_ajax_sbi_dismiss_upgrade_notice', array( $this, 'dismiss_upgrade_notice' ) ); add_action( 'admin_init', array( $this, 'sbi_admin_notices' ) ); add_action( 'sb_notice_custom_feed_templates_dismissed', array( $this, 'sbi_dismiss_notice' ) ); } /** * Header Notices * * @since 6.0 */ public function header_notices() { $lite_notice_dismissed = get_transient( 'instagram_feed_dismiss_lite' ); if ( $lite_notice_dismissed ) { return; } $output = ''; $upgrade_url = 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=lite-upgrade-bar'; $output .= '
'; $output .= sprintf( '%s %s', __('You\'re using Instagram Feed Lite. To unlock more features consider', 'instagram-feed'), $upgrade_url, __('upgrading to Pro', 'instagram-feed') ); $output .= sprintf( '', __('Dismiss this message', 'instagram-feed'), '' ); $output .= '
'; echo $output; } /** * Dismiss Upgrade Notice * * @since 6.0 * * @return SBI_Response */ public function dismiss_upgrade_notice() { // Run a security check. check_ajax_referer( 'sbi_nonce' , 'sbi_nonce'); $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); if ( ! current_user_can( $cap ) ) { wp_send_json_error(); // This auto-dies. } // set the transient so it will hide for next 7 days set_transient( 'instagram_feed_dismiss_lite', 'dismiss', 1 * WEEK_IN_SECONDS ); $response = new SBI_Response( true, array() ); $response->send(); } /** * Remove admin notices from inside our plugin screens so we can show our customized notices * * @since 4.0 */ public function remove_admin_notices() { $current_screen = get_current_screen(); $not_allowed_screens = array( 'instagram-feed_page_sbi-feed-builder', 'instagram-feed_page_sbi-settings', 'instagram-feed_page_sbi-oembeds-manager', 'instagram-feed_page_sbi-extensions-manager', 'instagram-feed_page_sbi-about-us', 'instagram-feed_page_sbi-support', ); if ( in_array( $current_screen->base, $not_allowed_screens ) || strpos( $current_screen->base, 'sbi-' ) !== false ) { remove_all_actions('admin_notices'); remove_all_actions('all_admin_notices'); } } /** * CFF Get Renew License URL * * @since 4.0 * * @return string $url */ public function get_renew_url() { global $sbi_download_id; $license_key = get_option( 'sbi_license_key' ) ? get_option( 'sbi_license_key' ) : null; $url = sprintf( 'https://smashballoon.com/checkout/?edd_license_key=%s&download_id=%s&utm_campaign=instagram-free&utm_source=expired-notice&utm_medium=renew-license', $license_key, $sbi_download_id ); return $url; } /** * CFF Check License * * @since 4.0 * * @return SBI_Response */ public function sbi_check_license() { // Run a security check. check_ajax_referer( 'sbi_nonce' , 'sbi_nonce'); $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); if ( ! current_user_can( $cap ) ) { wp_send_json_error(); // This auto-dies. } $sbi_license = trim( get_option( 'sbi_license_key' ) ); // Check the API $sbi_api_params = array( 'edd_action'=> 'check_license', 'nocache' => '1', 'license' => $sbi_license, 'item_name' => urlencode( SBI_PLUGIN_NAME ) // the name of our product in EDD ); $sbi_response = wp_remote_get( add_query_arg( $sbi_api_params, SBI_STORE_URL ), array( 'timeout' => 60 ) ); $sbi_license_data = (array) json_decode( wp_remote_retrieve_body( $sbi_response ) ); // Update the updated license data update_option( 'sbi_license_data', $sbi_license_data ); $sbi_todays_date = date('Y-m-d'); // Check whether it's active if( $sbi_license_data['license'] !== 'expired' && ( strtotime( $sbi_license_data['expires'] ) > strtotime($sbi_todays_date) ) ) { // if the license is active then lets remove the ignore check for dashboard so next time it will show the expired notice in dashboard screen update_user_meta( get_current_user_id(), 'sbi_ignore_dashboard_license_notice', false ); $response = new SBI_Response( true, array( 'msg' => 'License Active', 'content' => $this->get_renewed_license_notice_content() ) ); $response->send(); } else { $content = 'Your Instagram Feed Pro license key has expired'; $response = new SBI_Response( false, array( 'msg' => 'License Not Renewed', 'content' => $content ) ); $response->send(); } } /** * Get content for successfully renewed license notice * * @since 4.0 * * @return string $output */ public function get_renewed_license_notice_content() { $output = '

Thanks! Your license key is valid.

You can safely dismiss this modal.

'; return $output; } /** * Get modal content that will trigger by "Why Renew" button * * @since 4.0 * * @return string $output */ public function get_modal_content() { $output = '

Why Renew?

See below for why it\'s so important to keep an active plugin license.

Protected Against All Upcoming Instagram Platform Updates and API Changes

Don\'t worry about your Instagram feeds breaking due to constant changes in the Instagram platform. Stay protected with access to continual plugin updates, giving you peace of mind that the software will always be up to date.

Expert Technical Support

Without a valid license key you will no longer be able to receive updates or support for the Instagram Feed plugin. A renewed license key grants you access to our top-notch, quick and effective support for another full year.

WordPress Compatibility Updates

With WordPress updates being released continually, we make sure the plugin is always compatible with the latest version so you can update WordPress without needing to worry.

All Pro Instagram Feed Features

Photos & Albums, Videos (HD, 360, Live), Instagram Events, Popup Lightbox, Likes, Shares, & Reactions, Comments and Replies, Filter Posts, Post Layouts, Load More Posts, Multi-column Grid Layout, Background Caching, and more!

'; return $output; } /** * Display admin notices in the plugin's pages * * @since 6.3 */ public function sbi_admin_notices() { $allowed_screens = array( 'sbi-feed-builder', 'sbi-settings', 'sbi-oembeds-manager', 'sbi-extensions-manager', 'sbi-about-us', 'sbi-support', ); $current_screen = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; $is_allowed = in_array( $current_screen, $allowed_screens ); // We will display the notice only on those allowed screens. if ( ! $current_screen || ! $is_allowed ) { return; } // Only display notice to admins. if( !sbi_current_user_can( 'manage_instagram_feed_options' ) ){ return; } $has_custom_templates = Util::sbi_has_custom_templates(); $sbi_statuses = get_option( 'sbi_statuses', array() ); if ( ! $has_custom_templates ) { $sbi_statuses['custom_templates_notice'] = true; update_option( 'sbi_statuses', $sbi_statuses ); return; } if ( true == get_option( 'sbi_custom_templates_notice_dismissed' ) || isset( $sbi_statuses['custom_templates_notice'] ) ) { return; } global $sbi_notices; $title = __( 'Heads Up! Feed Item Files and CSS Have Changed', 'instagram-feed' ); $message = '

' . __( 'Version 6.3 includes changes to the HTML and CSS files that make up your feeds. If you have customized your feed through custom theme templates, custom CSS, or custom JavaScript, your customizations may have been affected.', 'instagram-feed' ) . '

'; $message .= '

' . __( 'You can use the CSS file from previous versions if needed. Enable the related setting on the Advanced tab of the settings page.', 'instagram-feed' ) . '

'; $error_args = array( 'class' => 'sbi-admin-notices sbi-admin-notices-spaced-p', 'title' => array( 'text' => $title, 'class' => 'sb-notice-title', 'tag' => 'h4', ), 'message' => $message, 'dismissible' => true, 'dismiss' => array( 'class' => 'sbi-notice-dismiss', 'icon' => SBI_PLUGIN_URL . 'admin/assets/img/sbi-dismiss-icon.svg', 'tag' => 'a', 'href' => array( 'args' => array( 'sb-dismiss-notice' => 'custom_feed_templates' ), 'action' => 'sb_dismiss_notice_nonce', 'nonce' => '_sb_notice_nonce', ) ), 'buttons' => array( array( 'text' => __('Sounds good!', 'instagram-feed'), 'class' => 'button button-primary', 'id' => 'custom_feed_templates_dismiss', 'url' => array( 'args' => array( 'sb-dismiss-notice' => 'custom_feed_templates' ), 'action' => 'sb_dismiss_notice_nonce', 'nonce' => '_sb_notice_nonce', ), 'tag' => 'a', ), array( 'text' => __('Learn More', 'instagram-feed'), 'class' => 'button button-secondary', 'id' => 'custom_feed_templates_learn', 'url' => 'https://smashballoon.com/doc/instagram-css-layout-changes/?utm_source=instagram-pro&utm_medium=dashboard-notice&utm_campaign=63changes&utm_content=LearnMore', 'target' => 'blank', 'tag' => 'a', ), ), 'buttons_wrap_start' => '

', 'buttons_wrap_end' => '

', 'priority' => 1, 'page' => array( 'sbi-feed-builder', 'sbi-settings', 'sbi-oembeds-manager', 'sbi-extensions-manager', 'sbi-about-us', 'sbi-support', ), 'icon' => array( 'src' => SBI_PLUGIN_URL . 'admin/assets/img/balloon.svg', 'wrap' => '', ), 'wrap_schema' => '
{icon}
{title}{message}
{dismiss}{buttons}
', ); $sbi_notices->add_notice( 'custom_feed_templates', 'information', $error_args ); $sbi_statuses['custom_templates_notice'] = true; update_option( 'sbi_statuses', $sbi_statuses ); } /** * Dismiss custom feeds template admin notices * * @since 6.3 */ public function sbi_dismiss_notice( $notice_id ) { if ( 'custom_feed_templates' === $notice_id ) { update_option( 'sbi_custom_templates_notice_dismissed', true ); } } } instagram-feed/admin/SBI_View.php000064400000001421151435171370012647 0ustar00 'Afrikaans', 'ar_AR' => 'Arabic', 'az_AZ' => 'Azerbaijani', 'be_BY' => 'Belarusian', 'bg_BG' => 'Bulgarian', 'bn_IN' => 'Bengali', 'bs_BA' => 'Bosnian', 'ca_ES' => 'Catalan', 'cs_CZ' => 'Czech', 'cy_GB' => 'Welsh', 'da_DK' => 'Danish', 'de_DE' => 'German', 'el_GR' => 'Greek', 'en_GB' => 'English (UK', 'en_PI' => 'English (Pirate)', 'en_US' => 'English (US)', 'eo_EO' => 'Esperanto', 'es_ES' => 'Spanish (Spain)', 'es_LA' => 'Spanish', 'et_EE' => 'Estonian', 'eu_ES' => 'Basque', 'fa_IR' => 'Persian', 'fb_LT' => 'Leet Speak', 'fi_FI' => 'Finnish', 'fo_FO' => 'Faroese', 'fr_CA' => 'French (Canada)', 'fr_FR' => 'French (France)', 'fy_NL' => 'Frisian', 'ga_IE' => 'Irish', 'gl_ES' => 'Galician', 'he_IL' => 'Hebrew', 'hi_IN' => 'Hindi', 'hr_HR' => 'Croatian', 'hu_HU' => 'Hungarian', 'hy_AM' => 'Armenian', 'id_ID' => 'Indonesian', 'is_IS' => 'Icelandic', 'it_IT' => 'Italian', 'ja_JP' => 'Japanese', 'ka_GE' => 'Georgian', 'km_KH' => 'Khmer', 'ko_KR' => 'Korean', 'ku_TR' => 'Kurdish', 'la_VA' => 'Latin', 'lt_LT' => 'Lithuanian', 'lv_LV' => 'Latvian', 'mk_MK' => 'Macedonian', 'ml_IN' => 'Malayalam', 'ms_MY' => 'Malay', 'nb_NO' => 'Norwegian (bokmal)', 'ne_NP' => 'Nepali', 'nl_NL' => 'Dutch', 'nn_NO' => 'Norwegian (nynorsk)', 'pa_IN' => 'Punjabi', 'pl_PL' => 'Polish', 'ps_AF' => 'Pashto', 'pt_BR' => 'Portuguese (Brazil)', 'pt_PT' => 'Portuguese (Portugal)', 'ro_RO' => 'Romanian', 'ru_RU' => 'Russian', 'sk_SK' => 'Slovak', 'sl_SI' => 'Slovenian', 'sq_AL' => 'Albanian', 'sr_RS' => 'Serbian', 'sv_SE' => 'Swedish', 'sw_KE' => 'Swahili', 'ta_IN' => 'Tamil', 'te_IN' => 'Telugu', 'th_TH' => 'Thai', 'tl_PH' => 'Filipino', 'tr_TR' => 'Turkish', 'uk_UA' => 'Ukrainian', 'vi_VN' => 'Vietnamese', 'zh_CN' => 'Simplified Chinese (China)', 'zh_HK' => 'Traditional Chinese (Hong Kong)', 'zh_TW' => 'Traditional Chinese (Taiwan)', ); } /** * Return the timezones * * @since 4.0 * * @return array */ public static function timezones() { return array( 'Pacific/Midway' => '(GMT-11:00) Midway Island, Samoa', 'America/Adak' => '(GMT-10:00) Hawaii-Aleutian', 'Etc/GMT+10' => '(GMT-10:00) Hawaii', 'Pacific/Marquesas' => '(GMT-09:30) Marquesas Islands', 'Pacific/Gambier' => '(GMT-09:00) Gambier Islands', 'America/Anchorage' => '(GMT-09:00) Alaska', 'America/Ensenada' => '(GMT-08:00) Tijuana, Baja California', 'Etc/GMT+8' => '(GMT-08:00) Pitcairn Islands', 'America/Los_Angeles' => '(GMT-08:00) Pacific Time (US & Canada', 'America/Denver' => '(GMT-07:00) Mountain Time (US & Canada', 'America/Chihuahua' => '(GMT-07:00) Chihuahua, La Paz, Mazatlan', 'America/Dawson_Creek' => '(GMT-07:00) Arizona', 'America/Belize' => '(GMT-06:00) Saskatchewan, Central America', 'America/Cancun' => '(GMT-06:00) Guadalajara, Mexico City, Monterrey', 'Chile/EasterIsland' => '(GMT-06:00) Easter Island', 'America/Chicago' => '(GMT-06:00) Central Time (US & Canada)', 'America/New_York' => '(GMT-05:00) Eastern Time (US & Canada)', 'America/Havana' => '(GMT-05:00) Cuba', 'America/Bogota' => '(GMT-05:00) Bogota, Lima, Quito, Rio Branco', 'America/Caracas' => '(GMT-04:30) Caracas', 'America/Santiago' => '(GMT-04:00) Santiago', 'America/La_Paz' => '(GMT-04:00) La Paz', 'Atlantic/Stanley' => '(GMT-04:00) Faukland Islands', 'America/Campo_Grande' => '(GMT-04:00) Brazil', 'America/Goose_Bay' => '(GMT-04:00) Atlantic Time (Goose Bay)', 'America/Glace_Bay' => '(GMT-04:00) Atlantic Time (Canada)', 'America/St_Johns' => '(GMT-03:30) Newfoundland', 'America/Araguaina' => '(GMT-03:00) UTC-3', 'America/Montevideo' => '(GMT-03:00) Montevideo', 'America/Miquelon' => '(GMT-03:00) Miquelon, St. Pierre', 'America/Godthab' => '(GMT-03:00) Greenland', 'America/Argentina/Buenos_Aires' => '(GMT-03:00) Buenos Aires', 'America/Sao_Paulo' => '(GMT-03:00) Brasilia', 'America/Noronha' => '(GMT-02:00) Mid-Atlantic', 'Atlantic/Cape_Verde' => '(GMT-01:00) Cape Verde Is', 'Atlantic/Azores' => '(GMT-01:00) Azores', 'Europe/Belfast' => '(GMT) Greenwich Mean Time : Belfast', 'Europe/Dublin' => '(GMT) Greenwich Mean Time : Dublin', 'Europe/Lisbon' => '(GMT) Greenwich Mean Time : Lisbon', 'Europe/London' => '(GMT) Greenwich Mean Time : London', 'Africa/Abidjan' => '(GMT) Monrovia, Reykjavik', 'Europe/Amsterdam' => '(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna', 'Europe/Belgrade' => '(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague', 'Europe/Brussels' => '(GMT+01:00) Brussels, Copenhagen, Madrid, Paris', 'Africa/Algiers' => '(GMT+01:00) West Central Africa', 'Africa/Windhoek' => '(GMT+01:00) Windhoek', 'Asia/Beirut' => '(GMT+02:00) Beirut', 'Africa/Cairo' => '(GMT+02:00) Cairo', 'Asia/Gaza' => '(GMT+02:00) Gaza', 'Africa/Blantyre' => '(GMT+02:00) Harare, Pretoria', 'Asia/Jerusalem' => '(GMT+02:00) Jerusalem', 'Europe/Helsinki' => '(GMT+02:00) Helsinki', 'Europe/Minsk' => '(GMT+02:00) Minsk', 'Asia/Damascus' => '(GMT+02:00) Syria', 'Europe/Moscow' => '(GMT+03:00) Moscow, St. Petersburg, Volgograd', 'Africa/Addis_Ababa' => '(GMT+03:00) Nairobi', 'Asia/Tehran' => '(GMT+03:30) Tehran', 'Asia/Dubai' => '(GMT+04:00) Abu Dhabi, Muscat', 'Asia/Yerevan' => '(GMT+04:00) Yerevan', 'Asia/Kabul' => '(GMT+04:30) Kabul', 'Asia/Yekaterinburg' => '(GMT+05:00) Ekaterinburg', 'Asia/Tashkent' => '(GMT+05:00) Tashkent', 'Asia/Kolkata' => '(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi', 'Asia/Katmandu' => '(GMT+05:45) Kathmandu', 'Asia/Dhaka' => '(GMT+06:00) Astana, Dhaka', 'Asia/Novosibirsk' => '(GMT+06:00) Novosibirsk', 'Asia/Rangoon' => '(GMT+06:30) Yangon (Rangoon', 'Asia/Bangkok' => '(GMT+07:00) Bangkok, Hanoi, Jakarta', 'Asia/Krasnoyarsk' => '(GMT+07:00) Krasnoyarsk', 'Asia/Hong_Kong' => '(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi', 'Asia/Irkutsk' => '(GMT+08:00) Irkutsk, Ulaan Bataar', 'Australia/Perth' => '(GMT+08:00) Perth', 'Australia/Eucla' => '(GMT+08:45) Eucla', 'Asia/Tokyo' => '(GMT+09:00) Osaka, Sapporo, Tokyo', 'Asia/Seoul' => '(GMT+09:00) Seoul', 'Asia/Yakutsk' => '(GMT+09:00) Yakutsk', 'Australia/Adelaide' => '(GMT+09:30) Adelaide', 'Australia/Darwin' => '(GMT+09:30) Darwin', 'Australia/Brisbane' => '(GMT+10:00) Brisbane', 'Australia/Hobart' => '(GMT+10:00) Sydney', 'Asia/Vladivostok' => '(GMT+10:00) Vladivostok', 'Australia/Lord_Howe' => '(GMT+10:30) Lord Howe Island', 'Etc/GMT-11' => '(GMT+11:00) Solomon Is., New Caledonia', 'Asia/Magadan' => '(GMT+11:00) Magadan', 'Pacific/Norfolk' => '(GMT+11:30) Norfolk Island', 'Asia/Anadyr' => '(GMT+12:00) Anadyr, Kamchatka', 'Pacific/Auckland' => '(GMT+12:00) Auckland, Wellington', 'Etc/GMT-12' => 'GMT+12:00) Fiji, Kamchatka, Marshall Is', 'Pacific/Chatham' => '(GMT+12:45) Chatham Islands', 'Pacific/Tongatapu' => '(GMT+13:00) Nuku\'alofa', 'Pacific/Kiritimati' => '(GMT+14:00) Kiritimati' ); } }instagram-feed/admin/SBI_Global_Settings.php000064400000162470151435171370015031 0ustar00init(); } /** * Determining if the user is viewing the our page, if so, party on. * * @since 6.0 */ public function init() { if ( ! is_admin() ) { return; } add_action('admin_menu', [$this, 'register_menu']); add_filter( 'admin_footer_text', [$this, 'remove_admin_footer_text'] ); add_action( 'wp_ajax_sbi_save_settings', [$this, 'sbi_save_settings'] ); add_action( 'wp_ajax_sbi_activate_license', [$this, 'sbi_activate_license'] ); add_action( 'wp_ajax_sbi_deactivate_license', [$this, 'sbi_deactivate_license'] ); add_action( 'wp_ajax_sbi_test_connection', [$this, 'sbi_test_connection'] ); add_action( 'wp_ajax_sbi_recheck_connection', [$this, 'sbi_recheck_connection'] ); add_action( 'wp_ajax_sbi_import_settings_json', [$this, 'sbi_import_settings_json'] ); add_action( 'wp_ajax_sbi_export_settings_json', [$this, 'sbi_export_settings_json'] ); add_action( 'wp_ajax_sbi_clear_cache', [$this, 'sbi_clear_cache'] ); add_action( 'wp_ajax_sbi_clear_image_resize_cache', [$this, 'sbi_clear_image_resize_cache'] ); add_action( 'wp_ajax_sbi_clear_error_log', [$this, 'sbi_clear_error_log'] ); add_action( 'wp_ajax_sbi_retry_db', [$this, 'sbi_retry_db'] ); add_action( 'wp_ajax_sbi_dpa_reset', [$this, 'sbi_dpa_reset'] ); } /** * SBI Save Settings * * This will save the data fron the settings page * * @since 6.0 * * @return SBI_Response */ public function sbi_save_settings() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $data = $_POST; $model = isset( $data[ 'model' ] ) ? $data['model'] : null; // return if the model is null if ( null === $model ) { return; } // get the sbi license key and extensions license key $sbi_license_key = sanitize_text_field( $_POST['sbi_license_key'] ); // Only update the sbi_license_key value when it's inactive if ( get_option( 'sbi_license_status') == 'inactive' ) { if ( empty( $sbi_license_key ) || strlen( $sbi_license_key ) < 1 ) { delete_option( 'sbi_license_key' ); delete_option( 'sbi_license_data' ); delete_option( 'sbi_license_status' ); } else { update_option( 'sbi_license_key', $sbi_license_key ); } } else { $license_key = sanitize_key( trim( get_option( 'sbi_license_key', '' ) ) ); if ( empty( $sbi_license_key ) && ! empty( $license_key ) ) { $sbi_license_data = $this->get_license_data( $license_key, 'deactivate_license', SBI_PLUGIN_NAME ); delete_option( 'sbi_license_key' ); delete_option( 'sbi_license_data' ); delete_option( 'sbi_license_status' ); } } $model = (array) \json_decode( \stripslashes( $model ) ); $general = (array) $model['general']; $feeds = (array) $model['feeds']; $advanced = (array) $model['advanced']; // Get the values and sanitize $sbi_settings = get_option( 'sb_instagram_settings', array() ); /** * General Tab */ $sbi_settings['sb_instagram_preserve_settings'] = $general['preserveSettings']; /** * Feeds Tab */ if ( current_user_can( 'unfiltered_html' ) ) { $sbi_settings['sb_instagram_custom_css'] = $feeds['customCSS']; $sbi_settings['sb_instagram_custom_js'] = $feeds['customJS']; } $sbi_settings['gdpr'] = sanitize_text_field( $feeds['gdpr'] ); $sbi_settings['sbi_cache_cron_interval'] = sanitize_text_field( $feeds['cronInterval'] ); $sbi_settings['sbi_cache_cron_time'] = sanitize_text_field( $feeds['cronTime'] ); $sbi_settings['sbi_cache_cron_am_pm'] = sanitize_text_field( $feeds['cronAmPm'] ); /** * Advanced Tab */ $sbi_settings['sb_instagram_ajax_theme'] = sanitize_text_field( $advanced['sbi_ajax'] ); $sbi_settings['sb_instagram_disable_resize'] = !(bool)$advanced['sbi_enable_resize']; $sbi_settings['image_format'] = sanitize_text_field($advanced['image_format']); $sbi_settings['sb_ajax_initial'] = (bool)$advanced['sb_ajax_initial']; $sbi_settings['enqueue_js_in_head'] = (bool)$advanced['sbi_enqueue_js_in_head']; $sbi_settings['enqueue_css_in_shortcode'] = (bool)$advanced['sbi_enqueue_css_in_shortcode']; $sbi_settings['disable_js_image_loading'] = !(bool)$advanced['sbi_enable_js_image_loading']; $sbi_settings['disable_admin_notice'] = !(bool)$advanced['enable_admin_notice']; $sbi_settings['enable_email_report'] = (bool)$advanced['enable_email_report']; $sbi_settings['enqueue_legacy_css'] = (bool) $advanced['enqueue_legacy_css']; $sbi_settings['email_notification'] = sanitize_text_field( $advanced['email_notification'] ); $sbi_settings['email_notification_addresses'] = sanitize_text_field( $advanced['email_notification_addresses'] ); $usage_tracking = get_option( 'sbi_usage_tracking', array( 'last_send' => 0, 'enabled' => sbi_is_pro_version() ) ); if ( isset( $advanced['email_notification_addresses'] ) ) { $usage_tracking['enabled'] = false; if ( isset( $advanced['usage_tracking'] ) ) { if ( ! is_array( $usage_tracking ) ) { $usage_tracking = array( 'enabled' => $advanced['usage_tracking'], 'last_send' => 0, ); } else { $usage_tracking['enabled'] = $advanced['usage_tracking']; } } update_option( 'sbi_usage_tracking', $usage_tracking, false ); } // Update the sbi_style_settings option that contains data for translation and advanced tabs update_option( 'sb_instagram_settings', $sbi_settings ); // clear cron caches $this->sbi_clear_cache(); $response = new SBI_Response( true, array( 'cronNextCheck' => $this->get_cron_next_check() ) ); $response->send(); } /** * SBI Activate License Key * * @since 6.0 * * @return SBI_Response */ public function sbi_activate_license() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } // do the form validation to check if license_key is not empty if ( empty( $_POST[ 'license_key' ] ) ) { $response = new \InstagramFeed\SBI_Response( false, array( 'message' => __( 'License key required!', 'instagram-feed' ), ) ); $response->send(); } $license_key = sanitize_key( $_POST[ 'license_key' ] ); // make the remote api call and get license data $sbi_license_data = $this->get_license_data( $license_key, 'activate_license', SBI_PLUGIN_NAME ); // update the license data if( !empty( $sbi_license_data ) ) { update_option( 'sbi_license_data', $sbi_license_data ); } // update the licnese key only when the license status is activated update_option( 'sbi_license_key', $license_key ); // update the license status update_option( 'sbi_license_status', $sbi_license_data['license'] ); // Check if there is any error in the license key then handle it $sbi_license_data = $this->get_license_error_message( $sbi_license_data ); // Send ajax response back to client end $data = array( 'licenseStatus' => $sbi_license_data['license'], 'licenseData' => $sbi_license_data ); $response = new SBI_Response( true, $data ); $response->send(); } /** * SBI Deactivate License Key * * @since 6.0 * * @return SBI_Response */ public function sbi_deactivate_license() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $license_key = sanitize_key( trim( get_option( 'sbi_license_key', '' ) ) ); $sbi_license_data = $this->get_license_data( $license_key, 'deactivate_license', SBI_PLUGIN_NAME ); // update the license data if( !empty( $sbi_license_data ) ) { update_option( 'sbi_license_data', $sbi_license_data ); } if ( ! $sbi_license_data['success'] ) { $response = new SBI_Response( false, array() ); $response->send(); } // remove the license keys and update license key status if( $sbi_license_data['license'] == 'deactivated' ) { update_option( 'sbi_license_status', 'inactive' ); $data = array( 'licenseStatus' => 'inactive' ); $response = new SBI_Response( true, $data ); $response->send(); } } /** * SBI Test Connection * * @since 6.0 * * @return SBI_Response */ public function sbi_test_connection() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $license_key = sanitize_key( get_option( 'sbi_license_key', '' ) ); $sbi_api_params = array( 'edd_action'=> 'check_license', 'license' => $license_key, 'item_name' => urlencode( SBI_PLUGIN_NAME ) // the name of our product in EDD ); $url = add_query_arg( $sbi_api_params, SBI_STORE_URL ); $args = array( 'timeout' => 60, 'sslverify' => false ); // Make the remote API request $request = \InstagramFeed\SBI_HTTP_Request::request( 'GET', $url, $args ); if ( \InstagramFeed\SBI_HTTP_Request::is_error( $request ) ) { $message = ''; foreach ( $request->errors as $key => $error ) { $message .= esc_html( $key ) . ' - ' . esc_html( $error[0] ); } $response = new SBI_Response( false, array( 'hasError' => true, 'error' => $message ) ); $response->send(); } $response = new SBI_Response( true, array( 'hasError' => false ) ); $response->send(); } /** * SBI Re-Check License * * @since 6.0 * * @return SBI_Response */ public function sbi_recheck_connection() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } // Do the form validation $license_key = isset( $_POST['license_key'] ) ? sanitize_key( $_POST['license_key'] ) : ''; $item_name = isset( $_POST['item_name'] ) ? sanitize_text_field( $_POST['item_name'] ) : ''; $option_name = isset( $_POST['option_name'] ) ? sanitize_text_field( $_POST['option_name'] ) : ''; if ( empty( $license_key ) || empty( $item_name ) ) { $response = new SBI_Response( false, array() ); $response->send(); } // make the remote license check API call $sbi_license_data = $this->get_license_data( $license_key, 'check_license', $item_name ); // update options data $license_changed = $this->update_recheck_license_data( $sbi_license_data, $item_name, $option_name ); // send AJAX response back $response = new SBI_Response( true, array( 'license' => $sbi_license_data['license'], 'licenseChanged' => $license_changed ) ); $response->send(); } /** * Update License Data * * @since 6.0 * * @param array $license_data * @param string $item_name * @param string $option_name * * @return bool $license_changed */ public function update_recheck_license_data( $license_data, $item_name, $option_name ) { $license_changed = false; // if we are updating plugin's license data if ( SBI_PLUGIN_NAME == $item_name ) { // compare the old stored license status with new license status if ( get_option( 'sbi_license_status' ) != $license_data['license'] ) { $license_changed = true; } update_option( 'sbi_license_data', $license_data ); update_option( 'sbi_license_status', $license_data['license'] ); } // If we are updating extensions license data if ( SBI_PLUGIN_NAME != $item_name ) { // compare the old stored license status with new license status if ( get_option( 'sbi_license_status_' . $option_name ) != $license_data['license'] ) { $license_changed = true; } update_option( 'sbi_license_status_' . $option_name, $license_data['license'] ); } // if we are updating extensions license data and it's not valid // then remote the extensions license status if ( SBI_PLUGIN_NAME != $item_name && 'valid' != $license_data['license'] ) { delete_option( 'sbi_license_status_' . $option_name ); } return $license_changed; } /** * SBI Import Feed Settings JSON * * @since 6.0 * * @return SBI_Response */ public function sbi_import_settings_json() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $filename = $_FILES['file']['name']; $ext = pathinfo($filename, PATHINFO_EXTENSION); if ( 'json' !== $ext ) { $response = new SBI_Response( false, [] ); $response->send(); } $imported_settings = file_get_contents( $_FILES["file"]["tmp_name"] ); // check if the file is empty if ( empty( $imported_settings ) ) { $response = new SBI_Response( false, [] ); $response->send(); } $feed_return = \InstagramFeed\Builder\SBI_Feed_Saver_Manager::import_feed( $imported_settings ); // check if there's error while importing if ( ! $feed_return['success'] ) { $response = new SBI_Response( false, [] ); $response->send(); } // Once new feed has imported lets export all the feeds to update in front end $exported_feeds = \InstagramFeed\Builder\SBI_Db::feeds_query(); $feeds = array(); foreach( $exported_feeds as $feed_id => $feed ) { $feeds[] = array( 'id' => $feed['id'], 'name' => $feed['feed_name'] ); } $response = new SBI_Response( true, array( 'feeds' => $feeds ) ); $response->send(); } /** * SBI Export Feed Settings JSON * * @since 6.0 * * @return SBI_Response */ public function sbi_export_settings_json() { if ( ! check_ajax_referer( 'sbi-admin', 'nonce', false ) ) { wp_send_json_error(); } if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); // This auto-dies. } if ( ! isset( $_GET['feed_id'] ) ) { return; } $feed_id = filter_var( $_GET['feed_id'], FILTER_SANITIZE_NUMBER_INT ); $feed = \InstagramFeed\Builder\SBI_Feed_Saver_Manager::get_export_json( $feed_id ); $feed_info = \InstagramFeed\Builder\SBI_Db::feeds_query( array('id' => $feed_id) ); $feed_name = strtolower( $feed_info[0]['feed_name'] ); $filename = 'sbi-feed-' . $feed_name . '.json'; // create a new empty file in the php memory $file = fopen( 'php://memory', 'w' ); fwrite( $file, $feed ); fseek( $file, 0 ); header( 'Content-type: application/json' ); header( 'Content-disposition: attachment; filename = "' . $filename . '";' ); fpassthru( $file ); exit; } /** * SBI Clear Cache * * @since 6.0 */ public function sbi_clear_cache() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } // Get the updated cron schedule interval and time settings from user input and update the database $model = isset( $_POST[ 'model' ] ) ? sanitize_text_field( $_POST['model'] ) : null; if ( $model !== null ) { $model = (array) \json_decode( \stripslashes( $model ) ); $feeds = (array) $model['feeds']; } // Now get the updated cron schedule interval and time values $sbi_settings = get_option( 'sb_instagram_settings', array() ); $sbi_cache_cron_interval = $sbi_settings['sbi_cache_cron_interval']; $sbi_cache_cron_time = $sbi_settings['sbi_cache_cron_time']; $sbi_cache_cron_am_pm = $sbi_settings[ 'sbi_cache_cron_am_pm' ]; // Clear the stored caches in the database $this->clear_stored_caches(); delete_option( 'sbi_cron_report' ); \SB_Instagram_Cron_Updater::start_cron_job( $sbi_cache_cron_interval, $sbi_cache_cron_time, $sbi_cache_cron_am_pm ); global $sb_instagram_posts_manager; $sb_instagram_posts_manager->add_action_log( 'Saved settings on the configure tab.' ); $sb_instagram_posts_manager->clear_api_request_delays(); $response = new SBI_Response( true, array( 'cronNextCheck' => $this->get_cron_next_check() ) ); $response->send(); } /** * Clear the stored caches from the database and from other caching plugins * * @since 6.0 */ public function clear_stored_caches() { global $wpdb; $cache_table_name = $wpdb->prefix . 'sbi_feed_caches'; $sql = " UPDATE $cache_table_name SET cache_value = '' WHERE cache_key NOT IN ( 'posts_backup', 'header_backup' );"; $wpdb->query( $sql ); //Delete all SBI transients $table_name = $wpdb->prefix . "options"; $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_&sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_&sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_\$sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_\$sbi\_%') " ); \SB_Instagram_Cache::clear_legacy( true ); sb_instagram_clear_page_caches(); } /** * SBI Clear Image Resize Cache * * @since 6.0 */ public function sbi_clear_image_resize_cache() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } global $sb_instagram_posts_manager; $sb_instagram_posts_manager->delete_all_sbi_instagram_posts(); delete_option( 'sbi_top_api_calls' ); $sb_instagram_posts_manager->add_action_log( 'Reset resizing tables.' ); $this->clear_stored_caches(); $response = new SBI_Response( true, [] ); $response->send(); } /** * SBI CLear Error Log * * @since 6.0 */ public function sbi_clear_error_log() { //Security Checks check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } global $sb_instagram_posts_manager; $sb_instagram_posts_manager->remove_all_errors(); global $sbi_notices; $sbi_notices->remove_notice( 'critical_error' ); $user_id = get_current_user_id(); update_user_meta($user_id, 'sbi_ignore_new_user_sale_notice', 'always'); $sbi_notices->remove_notice( 'discount' ); $sbi_statuses_option = get_option('sbi_statuses', array()); update_option('sbi_rating_notice', 'dismissed', false); $sbi_statuses_option['rating_notice_dismissed'] = sbi_get_current_time(); update_option('sbi_statuses', $sbi_statuses_option, false); // remove the rating notice step 1 and step 2 from global notices $sbi_notices->remove_notice('review_step_1'); $sbi_notices->remove_notice('review_step_2'); $sbi_notices->remove_notice('review_step_1_all_pages'); $sbi_notices->remove_notice('review_step_2_all_pages'); wp_send_json_success(); } /** * SBI CLear Error Log * * @since 6.0 */ public function sbi_retry_db() { //Security Checks check_ajax_referer( 'sbi_nonce', 'sbi_nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } sbi_create_database_table( false ); \SB_Instagram_Feed_Locator::create_table(); \InstagramFeed\Builder\SBI_Db::create_tables( false ); global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; if ( $wpdb->get_var( "show tables like '$table_name'" ) !== $table_name ) { wp_send_json_error( array( 'message' => '
' . esc_html__( 'Unsuccessful. Try visiting our website.', 'instagram-feed' ) . '
' ) ); } global $sbi_notices; $sbi_notices->remove_notice( 'database_create' ); wp_send_json_success( array( 'message' => '
' . esc_html__( 'Success! Try creating a feed and connecting a source.', 'instagram-feed' ) . '
' ) ); } /** * SBI Clear Image Resize Cache * * @since 6.0 */ public function sbi_dpa_reset() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } sbi_delete_all_platform_data(); $this->clear_stored_caches(); $response = new SBI_Response( true, [] ); $response->send(); } /** * SBI Get License Data from our license API * * @since 6.0 * * @param string $license_key * @param string $license_action * * @return void|array $sbi_license_data */ public function get_license_data( $license_key, $license_action = 'check_license', $item_name = SBI_PLUGIN_NAME ) { $sbi_api_params = array( 'edd_action'=> $license_action, 'license' => $license_key, 'item_name' => urlencode( $item_name ) // the name of our product in EDD ); $url = add_query_arg( $sbi_api_params, SBI_STORE_URL ); $args = array( 'timeout' => 60, 'sslverify' => false ); // Make the remote API request $request = \InstagramFeed\SBI_HTTP_Request::request( 'GET', $url, $args ); if ( \InstagramFeed\SBI_HTTP_Request::is_error( $request ) ) { return; } $sbi_license_data = (array) \InstagramFeed\SBI_HTTP_Request::data( $request ); return $sbi_license_data; } /** * Get license error message depending on license status * * @since 6.0 * * @param array $sbi_license_data * * @return array $sbi_license_data */ public function get_license_error_message( $sbi_license_data ) { global $sbi_download_id; $license_key = null; if ( get_option('sbi_license_key') ) { $license_key = sanitize_key( get_option('sbi_license_key') ); } $upgrade_url = sprintf('https://smashballoon.com/instagram-feed/pricing/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=settings&utm_medium=upgrade-license', $license_key); $renew_url = sprintf('https://smashballoon.com/checkout/?license_key=%s&download_id=%s&utm_campaign=instagram-free&utm_source=settings&utm_medium=upgrade-license&utm_content=renew-license', $license_key, sanitize_key( $sbi_download_id ) ); $learn_more_url = 'https://smashballoon.com/doc/my-license-key-wont-activate/?utm_campaign=instagram-free&utm_source=settings&utm_medium=license&utm_content=learn-more'; // Check if the license key reached max site installations if ( isset( $sbi_license_data['error'] ) && 'no_activations_left' === $sbi_license_data['error'] ) { $sbi_license_data['errorMsg'] = sprintf( __( 'You have reached the maximum number of sites available in your plan %s', 'instagram-feed' ), '(' . (int)$sbi_license_data['site_count'] . '/' . (int)$sbi_license_data['max_sites'] . ')' ); $sbi_license_data['errorMsg'] .= ' ' . sprintf( __( '%sLearn more about%s it or %supgrade your plan%s', 'instagram-feed' ), '', '', '', '' ); } // Check if the license key has expired if ( ( isset( $sbi_license_data['license'] ) && 'expired' === $sbi_license_data['license'] ) || ( isset( $sbi_license_data['error'] ) && 'expired' === $sbi_license_data['error'] ) ) { $sbi_license_data['error'] = true; $expired_date = new \DateTime( $sbi_license_data['expires'] ); $expired_date = $expired_date->format('F d, Y'); $sbi_license_data['errorMsg'] = sprintf( '%s %s. %s %s', __( 'The license expired on ', 'instagram-feed' ), $expired_date, __( 'Please renew it and try again.', 'instagram-feed' ), $renew_url, __( 'Renew', 'instagram-feed' ) ); } return $sbi_license_data; } /** * Remove admin footer message * * @since 6.0 * * @return string */ public function remove_admin_footer_text() { return ''; } /** * Register Menu. * * @since 6.0 */ public function register_menu() { // remove admin page update footer add_filter( 'update_footer', [$this, 'remove_admin_footer_text'] ); $cap = current_user_can( 'manage_custom_instagram_feed_options' ) ? 'manage_custom_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); global $sb_instagram_posts_manager; $notice = ''; if ( $sb_instagram_posts_manager->are_critical_errors() ) { $notice = ' !'; } $global_settings = add_submenu_page( 'sb-instagram-feed', __( 'Settings', 'instagram-feed' ), __( 'Settings ' . $notice , 'instagram-feed' ), $cap, 'sbi-settings', [$this, 'global_settings'], 1 ); add_action( 'load-' . $global_settings, [$this,'builder_enqueue_admin_scripts']); } /** * Enqueue Builder CSS & Script. * * Loads only for builder pages * * @since 6.0 */ public function builder_enqueue_admin_scripts(){ if( ! get_current_screen() ) { return; } $screen = get_current_screen(); if ( ! 'instagram-feed_page_sbi-settings' === $screen->id ) { return; } $sbi_status = 'inactive'; global $wp_version; $can_install_automator_plugin = ( version_compare($wp_version,'5.3') >= 0 ) ? true : false; $model = $this->get_settings_data(); $exported_feeds = \InstagramFeed\Builder\SBI_Db::feeds_query(); $feeds = array(); foreach( $exported_feeds as $feed_id => $feed ) { $feeds[] = array( 'id' => $feed['id'], 'name' => $feed['feed_name'] ); } $licenseErrorMsg = null; $license_key = sanitize_key( trim( get_option( 'sbi_license_key', '' ) ) ); if ( $license_key ) { $license_last_check = get_option( 'sbi_license_last_check_timestamp' ); $date = time() - (DAY_IN_SECONDS * 90); if ( $date > $license_last_check ) { // make the remote api call and get license data $sbi_license_data = $this->get_license_data( $license_key ); if( !empty($sbi_license_data) ) update_option( 'sbi_license_data', $sbi_license_data ); update_option( 'sbi_license_last_check_timestamp', time() ); } else { $sbi_license_data = get_option( 'sbi_license_data' ); } // update the license data with proper error messages when necessary $sbi_license_data = $this->get_license_error_message( $sbi_license_data ); $sbi_status = ! empty( $sbi_license_data['license'] ) ? $sbi_license_data['license'] : false; $licenseErrorMsg = ( isset( $sbi_license_data['error'] ) && isset( $sbi_license_data['errorMsg'] ) ) ? $sbi_license_data['errorMsg'] : null; } $current_user_id = get_current_user_id(); $get_sb_active_plugins_info = Util::get_sb_active_plugins_info(); $should_hide_automtor_notice = ( get_user_meta( $current_user_id, 'sbi_dismiss_automator_notice' ) ) ? true : false; wp_enqueue_style( 'settings-style', SBI_PLUGIN_URL . 'admin/assets/css/settings.css', false, SBIVER ); \InstagramFeed\Builder\SBI_Feed_Builder::global_enqueue_ressources_scripts(true); wp_enqueue_script( 'settings-app', SBI_PLUGIN_URL.'admin/assets/js/settings.js', null, SBIVER, true ); $license_key = null; if ( get_option('sbi_license_key') ) { $license_key = sanitize_key( get_option('sbi_license_key') ); } $has_license_error = false; if ( ( isset( $sbi_license_data['license'] ) && 'expired' === $sbi_license_data['license'] ) || ( isset( $sbi_license_data['error'] ) && ( $sbi_license_data['error'] || 'expired' == $sbi_license_data['error'] ) ) ) { $has_license_error = true; } $upgrade_url = sprintf('https://smashballoon.com/instagram-feed/pricing/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=settings&utm_medium=upgrade-license', $license_key); $footer_upgrade_url = 'https://smashballoon.com/instagram-feed/demo?utm_campaign=instagram-free&utm_source=settings&utm_medium=footer-banner&utm_content=Try Demo'; $usage_tracking_url = 'https://smashballoon.com/instagram-feed/usage-tracking/'; $feed_issue_email_url = 'https://smashballoon.com/doc/email-report-is-not-in-my-inbox/?instagram'; $sources_list = \InstagramFeed\Builder\SBI_Feed_Builder::get_source_list(); // Extract only license keys and build array for extensions license keys $sbi_settings = array( 'admin_url' => admin_url(), 'ajax_handler' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'sbi-admin' ), 'supportPageUrl' => admin_url( 'admin.php?page=sbi-support' ), 'builderUrl' => admin_url( 'admin.php?page=sbi-feed-builder' ), 'links' => $this->get_links_with_utm(), 'uoActive' => is_plugin_active( 'uncanny-automator/uncanny-automator.php' ), 'pluginItemName' => SBI_PLUGIN_NAME, 'licenseType' => 'free', 'licenseKey' => $license_key, 'licenseStatus' => $sbi_status, 'licenseErrorMsg' => $licenseErrorMsg, 'extensionsLicense' => array(), 'extensionsLicenseKey' => array(), 'hasError' => $has_license_error, 'upgradeUrl' => $upgrade_url, 'footerUpgradeUrl' => $footer_upgrade_url, 'isDevSite' => SBI_Upgrader::is_dev_url( home_url() ), 'model' => $model, 'feeds' => $feeds, 'sources' => $sources_list, //'locales' => SBI_Settings::locales(), //'timezones' => SBI_Settings::timezones(), //'socialWallLinks' => \InstagramFeed\Builder\SBI_Feed_Builder::get_social_wall_links(), 'socialWallLinks' => \InstagramFeed\Builder\SBI_Feed_Builder::get_social_wall_links(), 'socialWallActivated' => is_plugin_active( 'social-wall/social-wall.php' ), 'genericText' => \InstagramFeed\Builder\SBI_Feed_Builder::get_generic_text(), 'legacyCSSSettings' => Util::sbi_show_legacy_css_settings(), 'generalTab' => array( 'uoInstallNotice' => array( 'notice' => __( 'Post to Instagram right from WordPress with Uncanny Automator', 'instagram-feed' ), 'learnMore' => __( 'Learn More', 'instagram feed' ), 'logo' => '', 'closeIcon' => '' ), 'licenseBox' => array( 'title' => __( 'License Key', 'instagram-feed' ), 'description' => __( 'Your license key provides access to updates and support', 'instagram-feed' ), 'activeText' => __( 'Your Instagram Feed Pro license is Active!', 'instagram-feed' ), 'inactiveText' => __( 'Your Instagram Feed Pro license is Inactive!', 'instagram-feed' ), 'freeText' => __( 'Already purchased? Simply enter your license key below to activate Instagram Feed Pro.', 'instagram-feed'), 'inactiveFieldPlaceholder' => __( 'Paste license key here', 'instagram-feed' ), 'upgradeText1' => sprintf( __( 'You are using the Lite version of the plugin–no license needed. Enjoy! 🙂 To unlock more features, consider %s.', 'instagram-feed' ), '' . __( 'upgrading to Pro.', 'instagram-feed' ) . '' ), 'upgradeText2' => __( 'As a valued user of our Lite plugin, you receive 50% OFF - automatically applied at checkout!', 'instagram-feed' ), 'manageLicense' => __( 'Manage License', 'instagram-feed' ), 'test' => __( 'Test Connection', 'instagram-feed' ), 'recheckLicense' => __( 'Recheck license', 'instagram-feed' ), 'licenseValid' => __( 'License valid', 'instagram-feed' ), 'licenseExpired' => __( 'License expired', 'instagram-feed' ), 'connectionSuccessful' => __( 'Connection successful', 'instagram-feed' ), 'connectionFailed' => __( 'Connection failed', 'instagram-feed' ), 'viewError' => __( 'View error', 'instagram-feed' ), 'upgrade' => __( 'Upgrade', 'instagram-feed' ), 'deactivate' => __( 'Deactivate', 'instagram-feed' ), 'activate' => __( 'Activate', 'instagram-feed' ), ), 'manageSource' => array( 'title' => __( 'Manage Sources', 'instagram-feed' ), 'description' => __( 'Add or remove connected Instagram accounts', 'instagram-feed' ), ), 'preserveBox' => array( 'title' => __( 'Preserve settings if plugin is removed', 'instagram-feed' ), 'description' => __( 'This will make sure that all of your feeds and settings are still saved even if the plugin is uninstalled', 'instagram-feed' ), ), 'importBox' => array( 'title' => __( 'Import Feed Settings', 'instagram-feed' ), 'description' => __( 'You will need a JSON file previously exported from the Instagram Feed Plugin', 'instagram-feed' ), 'button' => __( 'Import', 'instagram-feed' ), ), 'exportBox' => array( 'title' => __( 'Export Feed Settings', 'instagram-feed' ), 'description' => __( 'Export settings for one or more of your feeds', 'instagram-feed' ), 'button' => __( 'Export', 'instagram-feed' ), ) ), 'feedsTab' => array( 'localizationBox' => array( 'title' => __( 'Localization', 'instagram-feed' ), 'tooltip' => '

This controls the language of any predefined text strings provided by Instagram. For example, the descriptive text that accompanies some timeline posts (eg: Smash Balloon created an event) and the text in the \'Like Box\' widget. To find out how to translate the other text in the plugin see this FAQ.

' ), 'timezoneBox' => array( 'title' => __( 'Timezone', 'instagram-feed' ) ), 'cachingBox' => array( 'title' => __( 'Caching', 'instagram-feed' ), 'pageLoads' => __( 'When the Page loads', 'instagram-feed' ), 'inTheBackground' => __( 'In the Background', 'instagram-feed' ), 'inTheBackgroundOptions' => array( '30mins' => __( 'Every 30 minutes', 'instagram-feed' ), '1hour' => __( 'Every hour', 'instagram-feed' ), '12hours' => __( 'Every 12 hours', 'instagram-feed' ), '24hours' => __( 'Every 24 hours', 'instagram-feed' ), ), 'am' => __( 'AM', 'instagram-feed' ), 'pm' => __( 'PM', 'instagram-feed' ), 'clearCache' => __( 'Clear All Caches', 'instagram-feed' ) ), 'gdprBox' => array( 'title' => __( 'GDPR', 'instagram-feed' ), 'automatic' => __( 'Automatic', 'instagram-feed' ), 'yes' => __( 'Yes', 'instagram-feed' ), 'no' => __( 'No', 'instagram-feed' ), 'infoAuto' => $this->get_gdpr_auto_info(), 'infoYes' => __( 'No requests will be made to third-party websites. To accommodate this, some features of the plugin will be limited.', 'instagram-feed' ), 'infoNo' => __( 'The plugin will function as normal and load images and videos directly from Instagram', 'instagram-feed' ), 'someInstagram' => __( 'Some Instagram Feed features will be limited for visitors to ensure GDPR compliance, until they give consent.', 'instagram-feed'), 'whatLimited' => __( 'What will be limited?', 'instagram-feed'), 'tooltip' => '

If set to “Yesâ€, it prevents all images and videos from being loaded directly from Instagram’s servers (CDN) to prevent any requests to external websites in your browser. To accommodate this, some features of your plugin will be disabled or limited.

If set to “Noâ€, the plugin will still make some requests to load and display images and videos directly from Instagram.

If set to “Automaticâ€, it will only load images and videos directly from Instagram if consent has been given by one of these integrated GDPR cookie Plugins.

Learn More

', 'gdprTooltipFeatureInfo' => array( 'headline' => __( 'Features that would be disabled or limited include: ', 'instagram-feed'), 'features' => array( __( 'Only local images (not from Instagram\'s CDN) will be displayed in the feed.', 'instagram-feed'), __( 'Placeholder blank images will be displayed until images are available.', 'instagram-feed'), __( 'Video posts will link to the post on Instagram.com for visitors to watch.', 'instagram-feed'), __( 'Carousel posts will only show the first image in the lightbox.', 'instagram-feed'), __( 'The maximum image resolution will be 640 pixels wide in the lightbox.', 'instagram-feed'), ) ) ), 'customCSSBox' => array( 'title' => __( 'Custom CSS', 'instagram-feed' ), 'placeholder' => __( 'Enter any custom CSS here', 'instagram-feed' ), ), 'customJSBox' => array( 'title' => __( 'Custom JS', 'instagram-feed' ), 'placeholder' => __( 'Enter any custom JS here', 'instagram-feed' ), ) ), 'advancedTab' => array( 'legacyCSSBox' => array( 'title' => __( 'Use legacy CSS', 'instagram-feed' ), 'helpText' => __( 'This would revert your CSS file for the feed to the file used in version 6.2. Enable this setting if your customizations are not working properly. ', 'instagram-feed' ) . '' . __('Learn More', 'instagram-feed') .'', ), 'optimizeBox' => array( 'header' => __('Image Optimization (Recommended)', 'instagram-feed'), 'helpText' => __('Creates multiple local copies of image in different sizes and uses smallest size based on where it is displayed. ', 'instagram-feed') . '' . __('Uses local Wordpress storage.', 'instagram-feed') . '', 'reset' => __('Reset Image Storage', 'instagram-feed'), 'title' => __('Use dynamic sizes', 'instagram-feed'), 'formatTitle' => __('Default Image Format', 'instagram-feed'), 'formats' => array( 'webp' => __('WebP', 'instagram-feed'), 'jpg' => __('JPG', 'instagram-feed'), ), ), 'usageBox' => array( 'title' => __( 'Usage Tracking', 'instagram-feed' ), 'helpText' => sprintf( __( 'This helps to prevent plugin and theme conflicts by sending a report in the background once per week about your settings and relevant site stats. It does not send sensitive information like access tokens, email addresses, or user info. This will also not affect your site performance. %s', 'instagram-feed' ), '' . __( 'Learn More', 'instagram-feed' ) . '' ), ), 'resetErrorBox' => array( 'title' => __( 'Reset Error Log', 'instagram-feed' ), 'helpText' => __( 'Clear all errors stored in the error log.', 'instagram-feed' ), 'reset' => __( 'Reset', 'instagram-feed' ), ), 'ajaxBox' => array( 'title' => __( 'AJAX theme loading fix', 'instagram-feed' ), 'helpText' => __( 'Fixes issues caused by Ajax loading themes. It can also be used to workaround JavaScript errors on the page.', 'instagram-feed' ), ), 'ajaxInitial' => array( 'title' => __( 'Load Initial Posts with AJAX', 'instagram-feed' ), 'helpText' => __( 'Initial posts will be loaded using AJAX instead of added to the page directly. If you use page caching, this will allow the feed to update according to the "Check for new posts every" setting on the "Configure" tab.', 'instagram-feed' ), ), 'enqueueHead' => array( 'title' => __( 'Enqueue JavaScript in head', 'instagram-feed' ), 'helpText' => __( 'Add the JavaScript file for the plugin in the HTML "head" instead of the footer.', 'instagram-feed' ), ), 'enqueueShortcode' => array( 'title' => __( 'Enqueue CSS only on pages with the Feed', 'instagram-feed' ), 'helpText' => '', ), 'jsImages' => array( 'title' => __( 'JavaScript Image Loading', 'instagram-feed' ), 'helpText' => __( 'Load images on the client side with JS, instead of server side.', 'instagram-feed' ), ), 'loadAjax' => array( 'title' => __( 'Fix a text shortening issue caused by some themes', 'instagram-feed' ), 'helpText' => __( 'Initial posts will be loaded using AJAX instead of added to the page directly. If you use page caching, this will allow the feed to update according to the "Check for new posts every" setting on the "Configure" tab.', 'instagram-feed' ), ), 'adminErrorBox' => array( 'title' => __( 'Admin Error Notice', 'instagram-feed' ), 'helpText' => __( 'This will disable or enable the feed error notice that displays in the bottom right corner of your site for logged-in admins.', 'instagram-feed' ), ), 'feedIssueBox' => array( 'title' => __( 'Feed Issue Email Reports', 'instagram-feed' ), 'helpText' => __( 'If the feed is down due to a critical issue, we will switch to a cached version and notify you based on these settings. View Documentation', 'instagram-feed' ), 'sendReport' => __( 'Send a report every', 'instagram-feed' ), 'to' => __( 'to', 'instagram-feed' ), 'placeholder' => __( 'Enter one or more email address separated by comma', 'instagram-feed' ), 'weekDays' => array( array( 'val' => 'monday', 'label' => __( 'Monday', 'instagram-feed' ) ), array( 'val' => 'tuesday', 'label' => __( 'Tuesday', 'instagram-feed' ) ), array( 'val' => 'wednesday', 'label' => __( 'Wednesday', 'instagram-feed' ) ), array( 'val' => 'thursday', 'label' => __( 'Thursday', 'instagram-feed' ) ), array( 'val' => 'friday', 'label' => __( 'Friday', 'instagram-feed' ) ), array( 'val' => 'saturday', 'label' => __( 'Saturday', 'instagram-feed' ) ), array( 'val' => 'sunday', 'label' => __( 'Sunday', 'instagram-feed' ) ), ) ), 'dpaClear' => array( 'title' => __( 'Manage Data', 'instagram-feed' ), 'helpText' => __( 'Warning: Clicking this button will permanently delete all Instagram data, including all connected accounts, cached posts, and stored images.', 'instagram-feed' ), 'clear' => __( 'Delete all Platform Data', 'instagram-feed' ), ), ), 'dialogBoxPopupScreen' => array( 'deleteSource' => array( 'heading' => __( 'Delete "#"?', 'instagram-feed' ), 'description' => __( 'This source is being used in a feed on your site. If you delete this source then new posts can no longer be retrieved for these feeds.', 'instagram-feed' ), ), ), 'selectSourceScreen' => \InstagramFeed\Builder\SBI_Feed_Builder::select_source_screen_text(), 'uncannyAutomatorScreen' => array( 'heading' => __( 'Automatically post from WordPress to Instagram with the #1 automation plugin', 'instagram-feed' ), 'description' => __( 'Uncanny Automator lets you easily automate your WordPress site. Automatically push new blog posts to your Instagram Business account (and Facebook and Twitter too).', 'instagram-feed' ), 'integrationLogo' => SBI_PLUGIN_URL . '/admin/assets/img/instagram-with-uncanny-automator.png', 'installStep' => array( 'title' => __( 'Install and activate Uncanny Automator', 'instagram-feed' ), 'description' => __( 'The plugin is installed from the Wordpress.org repository', 'instagram-feed' ), 'icon' => SBI_PLUGIN_URL . '/admin/assets/img/uncanny-automator-logo.png', ), 'setupStep' => array( 'title' => __( 'Set up Uncanny Automator', 'instagram-feed' ), 'description' => __( 'Connect Uncanny Automator to your Instagram account', 'instagram-feed' ), 'icon' => SBI_PLUGIN_URL . '/admin/assets/img/setup-uncanny-automator.png', ), 'shouldHideAutomatorNotice' => $should_hide_automtor_notice, 'canInstallAutomatorPlugin' => $can_install_automator_plugin, 'isPluginInstalled' => $get_sb_active_plugins_info['is_uncanny_automator_installed'], 'isPluginActive' => is_plugin_active($get_sb_active_plugins_info['uncanny_automator_plugin']), 'pluginDownloadPath' => $get_sb_active_plugins_info['uncanny_automator_download_plugin'], 'automatorPlugin' => $get_sb_active_plugins_info['uncanny_automator_plugin'], 'installSVG' => '', 'enableSetupStep' => is_plugin_active($get_sb_active_plugins_info['uncanny_automator_plugin']), 'setupPage' => '/edit.php?post_type=uo-recipe&page=uncanny-automator-config&tab=premium-integrations&integration=instagram' ), 'nextCheck' => $this->get_cron_next_check(), 'loaderSVG' => '', 'checkmarkSVG' => '', 'timesCircleSVG' => '', 'uploadSVG' => ' ', 'checkmarCircleSVG' => '', 'exportSVG' => ' ', 'reloadSVG' => ' ', 'tooltipHelpSvg' => '', 'svgIcons' => \InstagramFeed\Builder\SBI_Feed_Builder::builder_svg_icons(), 'resetSVG' => '' ); $newly_retrieved_source_connection_data = \InstagramFeed\Builder\SBI_Source::maybe_source_connection_data(); if ( $newly_retrieved_source_connection_data ) { $sbi_settings['newSourceData'] = $newly_retrieved_source_connection_data; } if ( isset( $_GET['manualsource'] ) && $_GET['manualsource'] == true ) { $sbi_settings['manualSourcePopupInit'] = true; } wp_localize_script( 'settings-app', 'sbi_settings', $sbi_settings ); } /** * Get Extensions License Information * * @since 6.0 * * @return array */ public function get_extensions_license() { return; } /** * Get Links with UTM * * @return array * * @since 6.0 */ public static function get_links_with_utm() { $license_key = null; if ( get_option('sbi_license_key') ) { $license_key = sanitize_key( get_option('sbi_license_key') ); } $all_access_bundle_popup = sprintf('https://smashballoon.com/all-access/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=balloon&utm_medium=all-access', $license_key); return array( 'manageLicense' => 'https://smashballoon.com/account/downloads/?utm_campaign=instagram-free&utm_source=settings&utm_medium=manage-license', 'popup' => array( 'allAccessBundle' => $all_access_bundle_popup, 'fbProfile' => 'https://www.instagram.com/SmashBalloon/', 'twitterProfile' => 'https://twitter.com/smashballoon', ), ); } /** * The Settings Data * * @since 6.0 * * @return array */ public function get_settings_data() { $sbi_settings = wp_parse_args( get_option( 'sb_instagram_settings' ), $this->default_settings_options() ); $sbi_cache_cron_interval = $sbi_settings['sbi_cache_cron_interval'] ; $sbi_cache_cron_time = $sbi_settings['sbi_cache_cron_time']; $sbi_cache_cron_am_pm = $sbi_settings['sbi_cache_cron_am_pm']; $usage_tracking = get_option( 'sbi_usage_tracking', array( 'last_send' => 0, 'enabled' => \sbi_is_pro_version() ) ); $sbi_ajax = $sbi_settings['sb_instagram_ajax_theme']; $active_gdpr_plugin = \SB_Instagram_GDPR_Integrations::gdpr_plugins_active(); $sbi_preserve_setitngs = $sbi_settings['sb_instagram_preserve_settings']; $custom_css = ''; $custom_js = ''; if ( current_user_can( 'unfiltered_html' ) ) { $custom_css = isset( $sbi_settings['sb_instagram_custom_css'] ) ? wp_strip_all_tags( stripslashes( $sbi_settings['sb_instagram_custom_css'] ) ) : ''; $custom_js = isset( $sbi_settings['sb_instagram_custom_js'] ) ? stripslashes( $sbi_settings['sb_instagram_custom_js'] ) : ''; } return array( 'general' => array( 'preserveSettings' => $sbi_preserve_setitngs ), 'feeds' => array( 'cachingType' => 'background', 'cronInterval' => $sbi_cache_cron_interval, 'cronTime' => $sbi_cache_cron_time, 'cronAmPm' => $sbi_cache_cron_am_pm, 'gdpr' => $sbi_settings['gdpr'], 'gdprPlugin' => $active_gdpr_plugin, 'customCSS' => $custom_css, 'customJS' => $custom_js, ), 'advanced' => array( 'sbi_enable_resize' => !$sbi_settings['sb_instagram_disable_resize'], 'image_format' => $sbi_settings['image_format'], 'usage_tracking' => $usage_tracking['enabled'], 'sbi_ajax' => $sbi_ajax, 'sb_ajax_initial' => $sbi_settings['sb_ajax_initial'], 'sbi_enqueue_js_in_head' => $sbi_settings['enqueue_js_in_head'], 'sbi_enqueue_css_in_shortcode' => $sbi_settings['enqueue_css_in_shortcode'], 'sbi_enable_js_image_loading' => !$sbi_settings['disable_js_image_loading'], 'enqueue_legacy_css' => $sbi_settings['enqueue_legacy_css'], 'enable_admin_notice' => !$sbi_settings['disable_admin_notice'], 'enable_email_report' => $sbi_settings['enable_email_report'], 'email_notification' => $sbi_settings['email_notification'], 'email_notification_addresses' => $sbi_settings['email_notification_addresses'], ) ); } /** * Return the default settings options for sbi_style_settings option * * @since 6.0 * * @return array */ public function default_settings_options() { return sbi_defaults(); } /** * Get GDPR Automatic state information * * @since 6.0 * * @return string $output */ public function get_gdpr_auto_info() { $gdpr_doc_url = 'https://smashballoon.com/doc/instagram-feed-gdpr-compliance/?instagram'; $output = ''; $active_gdpr_plugin = \SB_Instagram_GDPR_Integrations::gdpr_plugins_active(); if ( $active_gdpr_plugin ) { $output = $active_gdpr_plugin; } else { $output = sprintf( __( 'No GDPR consent plugin detected. Install a compatible GDPR consent %s, or manually enable the setting to display a GDPR compliant version of the feed to all visitors.', 'instagram-feed' ), '' . __( 'plugin', 'instagram-feed' ). '' ); } return $output; } /** * SBI Get cron next check time * * @since 6.0 * * @return string $output */ public function get_cron_next_check() { $output = ''; if ( wp_next_scheduled( 'sbi_feed_update' ) ) { $time_format = get_option( 'time_format' ); if ( ! $time_format ) { $time_format = 'g:i a'; } // $schedule = wp_get_schedule( 'sbi_feed_update' ); if ( $schedule == '30mins' ) $schedule = __( 'every 30 minutes', 'instagram-feed' ); if ( $schedule == 'twicedaily' ) $schedule = __( 'every 12 hours', 'instagram-feed' ); $sbi_next_cron_event = wp_next_scheduled( 'sbi_feed_update' ); $output = '' . __( 'Next check', 'instagram-feed' ) . ': ' . date( $time_format, $sbi_next_cron_event + sbi_get_utc_offset() ) . ' (' . $schedule . ') - ' . __( 'Note: Clicking "Clear All Caches" will reset this schedule.', 'instagram-feed' ); } else { $output = __( 'Nothing currently scheduled', 'instagram-feed' ); } return $output; } /** * Settings Page View Template * * @since 6.0 */ public function global_settings(){ \InstagramFeed\SBI_View::render( 'settings.index' ); } } instagram-feed/admin/assets/img/uncanny-automator-logo.png000064400000022756151435171370017753 0ustar00‰PNG  IHDR>åýhkZåPLTEKGTNOYjj}&*J&(D (=.3K'@DNbMQ`"D";"@48U5*4@#>="?07J2;[MOW!=#,F&@'.G2=T9!=?H\ýýýþþþõö÷ûüü©¬·".IŒ’£ÎÏÔìíïçèëßàãûûü*‹¿÷øùóôõõö÷õõöÏÑØÅÉÑúûüëìïèêíÜßä(Fòóõøùù&C(³®±¾ãåéäåé:Z|dqŠ*ŒÁ)нüüü®³¾)‡º(~¯)cŒ+y§óôõÿÿÿ&x©4„³àáå(…º¶¹ÂÔÖÙ'±ÿÿÿ*Â-9V$2ýþÿýýý‚ãqúûû‹öùùúüüüö÷ù¼ÕÞl¿X‚‘m’Ÿ+6Póö÷àêîÙãçéðò)2Jr–£EšÊ­¸Õçí]…”îôöÂÙá%.Dóõô˜±ºÖÞá©ÇÑŠ©µ ¬zœ¨eŒš#,; '7>•/ãïóÐâçÆÞç³Î×w™¥ðñòæòøèëí¯ÔéÏÛàiŽœííïÝçëÊÝäÂÐÕ„¤°µÉаÅÍœµ¿a‰™:X`4¤ú«ÁÉ`§Ï&ù†é¢ÀËœ½É‘´ÀÈãõÅÕÚ¼ÎÔ~Ýo—¹Å¤»Ä ¹ÂFœ8òùýåå觾ƌ¥°an~7CXT¯DO°û}©»u…‘zØk‚Åø–ø×êöKVgl¶e=K^FO]a½QL¥†´ £ª€‘›Ä†Q†wZ¦M°Õ¯Z­ŸË›2J?5ˆÀ­°µe¬X–¿×¥®µe’§(‘ùXtRNS     #%",(/ñáÈÃ)?)iH8äâ–v·†xUÔ®Ÿƒ5©¥<‘I[:)òÌ£`¹‡gNòð}kάš¨£Ákôñ"`IDATxÚìØ;Žã0 `ñ!9Úms Ø€=¦J“ÆÝ”¼ÿIðl³Àæ‘Ø†e~áö‡HQtÆcŒ1ÆcŒÙ8çç/Àû¯ùrrDžg"dïÏ–âg€#–û8ÜÒ«ˆÎDRš®c×s " gþÃsÀÜ“èGÚ4=yoñžs7$ýÜ[{DïÌ_ó˜ÞôËävoØŠx˜/I¿«ºGïƒDÝÐêȵ౛ †.é¦é  p¾ˆ>(uጌïá=`d8ÚŒ±}’—2_ÇfÈ…>éÝJă<ÏŽ0ú\r9Ä Î…NôéRatÕâ<èÚ±Áê·2zÑ…¼”Ú‡lF]Žt*£!æIu­÷AˆEtaCTc€Ì½èâ¤D_ß äÃ¥ÕHÁ 'lF]‡ô±ºò¥xÕµ´}dWtë¥7ç×°¯æÅ5Ó›óc¬f“ïcX7½ùüÕ’bsѵI-+,‚Øëú¤0Bb,¢x=UÐÿÈqÝÄÐ0¾ ù×M72žxßÕ ÄÍU7³ûñ™CÑíH¸çî‡!‹nèö›w»>õŽø4è¦î':»}úCÍ™´6E8÷¾QSkD‚×j N8€Ýø\´54‰I3XcRmF1•Úš¤m".­mc¤.êPÑŠŠ‚ℳ‚#¨¸÷¾˜ªOE½½‚ï}‹×òÚBù8çžsÏ»/HCúåÿË”IŸÑÇ)» ’ºÿ™y²hÐ%‹$uÿ;3e=>ý@ÄËÓáÿ3µFÒßð)G¨ª-ÀBÝÚ›7o®­Fæ“ôÕßæCÀ2[ݰ>|õ:Q¼ðt-°1¥FÖßù5Ä‹F¦ºa}óºX:VJßÝ6É¢ÞñrXË|·_Ïô.?TJ ½±Ó%Ñ «òHðMbkZž$Ž-'K$>þƒð3èÉ' Öàƒbñ ±×K²wè!02]Ö×è™ÃR5cÇœH”Î:C‚oˆ]Ÿ²úéçE.$R5ëv-¡ˆ"×»>R|E½Ç…°4Él<) ¥co+ó¯—“/äßÄìާ¯KCÅb±tfèÉZ`eŠYâô²ø –LÌúúw¯KÇ¥+®t-°2Ó(êeòÇa^6OVÖ¾9L¿¯šV`Å2I9=øC‹“g;¶µ·ŸÞ¾Yjl 35²¤‡Î8%w-ðÏpçœ`f®QÒÇc#¢ïMª¬›oNÝ=f,fI­2 „%ã¿™Ñ_}tQáÄå÷×6YËG )XjBrwü<øX/]<¨pöÄŠ'ª&æN–tðî/Bœ4ʺkóy{¶5ûc- ûšû ÏWW8»¢ÌµÝÀ‚Å$ëà̽r®`ÒL §.½·#ïÌ7Fý„HGGKK»ÓÈ¿}{çùãËŠ¾K;€…%5Ւ柙 7F4ÍzÚ¢ÆþΞPÚGð†“^o[¶sÛ®H‹Óé<þôãËŒúHç,i~ì‚0ÆÕã§5žx{§Ï:Rì)G9"mV{°Õ»ÓŸ'󑬘3^ÆHë=/Ê5@u_à|G¦Û­Êì`¨?Úĺ¼>Œ‹YÆœ éêÌKÆ™@M›Ë¯Ò,8|VPQßÚÓÇ;¶y­0¦TM’ÖW?,Êãç-Ö\ ßS›Ùnò¸A}³©;Û߈å¼0fMâ±¶ç.JÏ,›é»¾Öh£ TÔùRÛ·w;Vmßì% ™:[°­#´=3LÊÆCÃc?ÎÀ‰Òä €–l ó!™Nú ÝaGfuÚ³Áçiês|Ñèõ»âÛèÎ1Ë_!²ôMZêwåC@°miU[q§3©pww¡Pèëë+¤ì#¿ß ä‚@‰¥Jæ5ü¶ `@XÙðÎZܱˆöœÞ¿ÿ0aàܹ!¨` úÒio2™ôØ¿Ëö\¼™ÖßÔ*£„µ|X!Ì˦Å@‹ÇÙY_÷ieÃÒ¯80øÇb³(©1ʼ–Ï‹²‰²ðÚƒ¾þxìÃ+—~Ï‘:ø->×>ÚåoºI£Õ¾¤.B<âå*ª-›oçÞæH<Ú [ÐgÙì›z½ŒyŽÅfYÂÚ=.„8Œåê*š¾ÅÞœïÈírFìZÓ Ö§núBƒGï ¿Y¿éÛæj:f˜e„Í.~¼hœ@³ã}àêq×{¹Zø°n©Zßøž—•ñ\ëèõÍ' ÂZ=î"(ÙK×öÙüí6€ùÃkÔúdU}õàÈý†{/lQþt'µ¾9ª%^³ÁgÀ‹¤í› '¶‹\wµ{Žþ¨¯Ë] #Ô=;òí' GÏ=°FßÂ*#Ïc¤Í÷,aÌK¦*ŠQs[{_`_;¹¬[YÑvýþ•­Ê×}™Õ_§+éaµÛ£ÏÀÚ5 }Õ’vûfŒEÓ8ø{²í]… ›b®Z­¯TŽÃ½Ë—:I¾ô;šš’ž n·Û÷éˆZßÊ£Yû¦‘™ËÞ Ñè3 ‰2>ûÞXÒáð¶D¬ðlý1[—+>RNÒæþ®ÎT*µmƒZ_èßKݸXÆ)C¬Ñ¡|’h¦ÒmJ¥vº"û‹Š¾“_ômýb©apÿðÀÀÀOö<{.š*Hô}<6h²õcž*ú‚¹hS8Õ÷;2•ä½_‰¾oª”°¼~ýÆ7}YpGZÚjŠiãL2¯Õ¾YÙðbºäuç:6†}y¿Ã±Ùº²¿Ãe}÷—þÈÖ ½½½÷ŒÔÞlrâ{Ý@ Ñ'‰c&¯øãeºäõgÂŽí°Ã1¸lÙz²ï8r¡¬ïŠÚÝHTº>¢¯|ÎæþX{ghô™%Q ?m  ˆ‰¾¿ïû¬]±dØq}G—-S(ëë%•WMå~EëÊ{é@W­w_cˆBßB}c´:1U’w"O¥Ú#©Œ¿¢OaÝár”mý9wËú®Wô ôÄ{Br¡èû>Swn1mÕq§·Óž¶t…‹q>¸D£‰1ÑDqñaê4јh|8hkée­´¥ô†…^6{¡•r¿à(l0§ ƒlLÇÀéÔ]¼ÌMÍ4Þ^|ö÷;ÇaaUÏ1˜¿O~÷ßÿŽZ&ëãg}02ؔˡi+K%Ms ñ1ºº?kè;~ˆÆz|µì£†°ì«2ï£Øë1°>±XÂÇe¯@‚/Êû¸L\®}på”9ÃúÀþΟ¿ Ÿ•åo3ðí_µJLÆU”&|ÒÖqÂ÷ yEüô^ðè(Áy¥Ø«ç«ÝgN1øÖkïžJdÈ@ü˜ÆwšaYùžQN$uö†®ç½cŸPÄGë£3‡„Â%ï1Šâ‚o÷œÙ ™·‘ea¸)–3Ö÷9š^yåÞWd 4Žy»8¥ŽíJÿaž“ˆaܧRçr9yxá#À×Û`ºTÖ’»z~Ï †{÷þr3ÇU€ ?¼tÝdJ6§¼Õ'§Îc§²wEB~¾@ ĺok.—UѵÖÒÎ÷OÅ#^ÓÉw_¬2«Ú{üåýGÎ?ñÇógÿr#<¶™b–P´:æmÔSìU¨TÈð•o¼|»‚Eb²HyÅ^5­¥¥sîd“³?0òVyåž?^=ñ2ê4à[§wM]‰8ô+ÕÍ\¶m+UP6 xé»"ú|)ݪ,ä0ð;@ãkvøB.ßåW0²­¦`,VN@^¯ë1èTúÁwý.¾{wq‚€²™§'ìñÕˆ¤\¡,æPøiFKK¿j®ò=Õ¡TCÛðÈ‹ÜóËqtØ›Tî3Å VŒÅ"ŸŽb¯Gr d/–#>•œ*—™ÒÎïÚð›¨eÈv5xO^~ç]L¯{ f×åFSu"P×Ýç³X)zÊ>’N¼| } ȼR¨›wPle°](ùõTÛ:Äg¦ªìáHCêäÈe$X^Y‰‰ö¦jð ÉÔïvânËÅE;ó 0öñ³n0Ö'U©•;)–ÒÔÅ“ƒƒƒÎ&›&j 8Ü[½Çn4ú†޼ó VÍåˆ@‚*±|edÀd ˜çææ.T¹Ð»³0o« èñtÞÅ<4m$ìŠòÙæ¯É « ­Éi‹Z­Aws|¸±¶®ÞÔÍð-@øùîÈp›©¡·yîÌî÷k)Nº ë±XÌË×j ˜àG2E^!ÛE¹ÍÒËøp$‹Zöá>7å5›Ý¾^«ÇX®xQm>ßɃ‡}¾Fl¬õñSgà¢ÇYóŽb¥çU<7£ñ IRª`ülqýU{8Ù…øPZë¾àKf³Å9Ô¸ÏÇ"Ãa«ÕŠà‡Õj­k³˜çàžÑ9Š›¶ß ‰—óôy°ð/Å®ƒÀ™ËvŠª >MØßµô1æôF[üµ7?þø‡àVŒ#˜ô;}©¾}u6\ôhr&f´½Ýï¦(Ž¡¯ð^®)QB1ÒÀmÛ¹*ns+3hÂ馨%Hïmõá8óƒ7Ïž† æDÂâ@%Bnsè§+H›-„a)A__¬* õ©ÔyÅPìð…’„ÅbI~ȼ»ñÕªƒîtäëðø |É›Gí?òuWм”HÂ]­T_•±gj7Ò›¸FqӽŴõ Å|5>,üp`ZTPÌÒ{m–”í ¥³šiˆ}Á“§§-1×7G÷Ÿ8zúûï¿?rôС#߸ª—¦[®Wi)P¸éMuŽë(nÚ•[ Ñe_/ ?L˜zI~»Øy¯-^ÅdÞÃûöÝ‹‹‹Ó‰j×'_¿}úÇÈê€÷ç#oÿl§ñ-.} Ä<íSh{­Y"ßè‡εƒ.ÌFk¨uz ?W¡" ±HÂÏÄKïöC*Wç²óÞú8“mu.?y“æÅééP—«ì³/?›™Y¦–f?ûòUà[\\Z\ú ›Ú=õQgié¸a=»Ùö’LU|ºðCÅÊ"Ö-ü½Ô Þ‹Ö'-R²ô^{²­F£? Òu_ÓbKË´»Û…7wGG—©ñÎqjEƒ–ÁÔ` áî[ît ÉuÖÕƒìÖëbmFÞÝ…UŸ”$ø{+Ÿ·IW. u.»ÆÃ84h/ó„]¦~¿×ä¨Ó§[ZZ–œQO&>{›#é k)­'Õ<ì&J[{ÖŽ¬^VUÔþ™wsÕÐðB!'.ض>(]”…¬š>‡ÉåmìêïözƒWƒ¹­/hj°éFGW43ãÆˆ/op>ÊIžãëhíX^ã¶Ÿ–üµ.üa¦Û±c“Câò²gc¬OD㓪yÅ»XæG6b±þ`(æò/¾áa³9”NGÆGgŽÍϯ˜Ò–´3Bã«9*:;&;V4™óê‹%§ŠÃøÇ÷å«XoO­n;Hû¶|vÛ^«/Ñì†;÷¡d4ê7OO_93Õþ›Ù=6Ö_3slraÅÚ?J;¢Äçéu6VLvŒÈtÜJþA¿‡ •2ö!=ž^ üch@JI© r/ÛÆÍS7°ø«cÝŽ¹+tAÜ9ÿÁO—ÆÆº"®kC÷ØX"íOûýõ`ªö>§õÒz ÷šÕÞ—_˜§–K¥š%¶|#Ýf¾h =##I±H,áï°™1?!š6¾ÊÜB˜[ý;ijzVfàé_33ã+Ë=ëÙÁ”“ñ¡žÜº™”‹xþ ¦t¡£ŸL æ·ƒÚPeÒ g­ðjPµÙ~õ,v¼99ÌÆ¨–qþl¿zú6é‚ßeˆ~$AÈe´ùÝsçÆÃzJ‘#¾'·ÉE"bsÏÖGår…:ï?p_ àyJ¸áCïݼE¼…÷¯ƒÒÝW*ƒÁËá¾Z(˜õú(g|Ï)H¹÷ôð˜$âÃÚ™vßû6Úu Zƒ^?Ëß ·R¬xyz:ò†$ »2™LQ ,Ìß¾¡ôßÕéÏÝ„ç\mmm ÓûÁw7ã}JNÊHž>bmçýÐ}ejpßÛwlhÒEéõÆö¬¦·ªšŠ›<…\ ø?ðãVâ£Ý÷–G7´â3dLJüþš Nl!6óˆi|¥r}w=¼ai*>Q_ø²óËNµI!Û,„e´ˆ÷(2¯JÙ·øvHe|(Nÿ*âËÎ/;=ÄW$W‘9¼—€i=÷•©¡÷Ý ~Z”AgÐé€/;¿¿¦w¿RFJÅþÛ>RC"‚ìøŠÔy¹ù·ì܈îCó;ug³£4†áB¶§¥?´ ”ÒŠˆ1Á$†ø—h jœñoƒ!‚âÂñ ˆ .À;à6¼—z^€ïwƒ2ÆEûM§›™Õ3ïwÞ·ß9tNŽÇS8ïßùí çuÌô¼Äã‚÷ŠÁ‹j‚_õÿðzÔ»³{ã_wMð,Ke²Ggqž30>x)pý•a¿Mð;âã™oøø01سî;mX‡"å“ùyÞϦfнëü ¿s»Æ€§––¾é‡íóÖö3¯S6 rÚ„‹o ÅÓ‹©ëœüãô¨uÁp8z7Ž'³ùŸCW[ø:eæ2OJAr^¾ÑЇ?…Ö¿rñ\ü¨o éôÞM§óïûáƒsºÂ’þÚðÍ=sà31<üÍϤ=®¾ÑÏ»0ÞÙüý LÜ­r§dYv¥dïwœÚ‡0_RŸJýëÀ?ü7¸øøMÄ>¨oþc/zÝRÝi».s3 Ÿ¸¬´—Gå²àGÃίÒôï>#å7Ð#ùÍæŸ¿í绥z›ª›ó$/ ƒƒÓ#š¦‘þ˜­àW‹[AN\hÞ!&³Ù|±üºýKE4¯™óR0³úžùäO؇nÃ+Xo¨>Ô`8  ¾É ò{¿øj•vÛbZÁõàiI}ûëÖò—_.€Ÿ ÿ5Šàç÷®²·„dÔ¼“Éø_⋯y©R´,†JAè[ᓳèNQz`dÀÑÞ©l5¾Oãâë7KõbÃÖÕœ›‘Ó¡=1z‘yz9í_Ó>@€`G¶Ë/ÄZú¦À~qÛ÷8*A| 7`+¤á¡Cà[ß*À?J0þƒ½ðÑÒ7Â|øÄâ·XüŒ·ðùÍRÕ0,溲ëÍJI>(´a¾ôøVÈ>ÅT/è:%h`Ü<äâQê#|ïß|±X|C/ô›•ºSfcŠçf¤\:šw5»¢ñ¢ñÍ•Ø¡Ž pÀ‹ûîÛœßt6¥î…þbhϯáh¸Ñt´€ÞMÁ¼~ýÅtÜ9>þ<ÂDÓ7p‘ú†ü‰æ~3î¯NºgŸ¬:îøQéRµíï*²çÁΤäϬÖf/„Ž ѱêedh¡ÀÛ×c‰O<ññEò›À{ïÅ«{÷î•Xž†~Tƒímf{Š[ð ^ŠØ-$›>á¿Ü@„ €aïê?3©"ððü&Ï^?¹{×óî.éÝouBÐÃó®cÌÔWÎI9-éÇÔ6û7CÃg:y¥‰VÑÁe°Yóýk½›gjßWûD¨ñ³½þeÔ]\(pÞÝVÂuKE§mÙLGlñ~N _¥RGèÓUu%–?¤ùt VÇdÊ/¹½P £ï÷]¹qçÉep ;aØéDa@Aðøè1©°Û=zsr¿Ó }Ò^+Ÿ0¬ÃÍJI}óðÙòãÕ'€¿ù™.ØRL± ˆA°õäÎí«W6G-B|×oÜî]ku:߇øµ¨Õ¢Èo¡@p­.^æÊĺí• =ÇnØŽÔÌdYÎ{¹|&ñÿjvË?ÈI€š¶âG-¬¶á8Õ_Ü]¯”0†×¶´´°l±« šƒÙÄDo‰z¥ñÆÿÿƒ|¦øŸ®C)M|òμCw—sÞ³„Àyóêí³×/ž?$ñôùó×/Ÿ½}òøáÃ{÷ïóòƒC 8ƒùcá·scvì\{íN¤nYKBë“O$Á%î§®õO@º×ŸÜ†Éá÷D„@$÷@E‚ÊD’òðÝ0nn·mÛbãê˜CÖØáñ£ôæf#s/qÛ±R—œQB/þõO؃Ÿ>¾BÐð½;îUpGêCv¦{ìêùí›ÛwnowÎw¶óñÈeÇ­^zSù!5(Ãí1äöìÌw¤cé×uCZí²Ïôðÿþ¯(ÿVÔ¨¨½…©ÑVft…ˆóL3Ý J€«bTHpÈiº™@¸qÝ&½ÏÍÍžõ{‚óG·yí‚kL1âÐCô:´÷O>8üÇ_–®4·ä®ºð{ vD‘1‚pœ¦žFáX…vâ¬?^Χé8¡¦KÏqžNÔËóù ¤ ”A4*ÜØnn£<ú•Š:ÆR–6ø’¶:á‡kË\â#>q`å=üÄEàˆáW–e\æ8v£(qžY]í!9sèc„\¼\–‹À…æ1žú3€÷tß ÅZ ·]°À“¿¾±%$u©M2šL¸Êü„ê–Ú×èdÛS¸.µ.ðcŠ XÎýKìg¸ÆH&öý…mB‚lÓiÞ9+Adˆè˜7z½ xr«»–nq]—œRÚ =}Ðש¿[ûÜèÆH ~Ã0À°ƒ"‰±À±‹Ëç±Tzý…å Ì)Î=r<ž&@ïT nçÓFÊb/ÌçžW¦ËçÁA/¹ì”Éí5×´àò효&â ò3ðûynËÐÁ®ˆ,‡Ûè­úK!…#úšú ùÁqc”gât:NgR¾ÄÒÒòùλdµ×†âq-ov|¿¼e°=‡Q u„m¿ˆn£ëÉäªÊÈ:MËב“~ˆëDYD‚’Ê@ÃhNuÇwzÐIýB`}"…  Ρt¾ÎÄý¢ì(‚FáÁÕE>&ñç@X$:Â8‚c]æn ×R.Q¼„qe;ª!5qž.#®KâbºhÏ¥ÆMïy Ïý™7á„¡Ú“Øî­ô‡hC`”Æ",—1ƒ1¬ë*ZtÁq-1Ž+üÀ'ÔöÑSó.äø\€\ç5Ököš|½¶û ^#{ƒn4@Tø!ó~’Çm€%3—°ÄÁu–Ã0Bp*e¥¯™§ ¢#P&63.N|Ã[M³isÖ(ÿZÞgûá „A„ûós §¬7póÞ ¼T˜óÀ˜%·}‡Ÿ,4ŠB4…1öb&=#]õÊ»¸ô+!µÉXÍ¿Ÿ=帥ÿz·êT« Ì¤ðþULÙ,»G‰6´Î*GNÄB©ƒ!´…I¢“3Ö^)‘þpª¢c‘Æ;¬PO\m¼8®”YäF±ÒƒøþÃÚ÷ 3‘¡áWÙˆe’ÓŠ3e¥& @m³7Éæ/œBF]>Lr¾¶á ¥ª×Yg¾Ö•æß Éã¬q‘L%eRµ·Nbäu–V†C²š¶¢DÅ™¬ÁÊÉb0€ZÞÞPáÕŽùÚÞçxÇÞí(ÃPÔ¾Ç6 ¯ÍÿëÖ)°£•F¬FƒÄ Ü’¤´å£ë˜¤´ýª¼ñí%ÉtÉ ºvc£”©¡Òµ´íÜ:šÏ{S /ú°!š[hYÚí—Œxÿ3Û╎yâBÄœsÙ1GYmH:©TcTÍÓ^çÚG¶õ¼I–GŸúÜ7@üNùZ®:r¦M"GFv\ƶ¦h ªªYv.æ| U Ã"#óȯÕù5´›Ü °ÙüÒ(@8>ÁÄ9ªXÛbXcášAΣ+õ§¾s郔{¡=#ç²¥[ʲö¡Ð¨RÇêiìä¨bΆ7iÙ¡×rÞMžý½gzsìU5Ñé³, ËUÔ¶­y®­4Bi[X!›OóÇ)ó_'v!"œ‰œ±lUÔiD‘a±WÌË@Í_Ö}Kö9äÒ´`B¯÷š:GQ§EØeÝŸÈWìùþ*?œ'‘Mï¨^ïðYAT–ÆŒ‚1Š˜MÕñÛÉå×ùÅ|£ù¥voç±aQªš д÷š^béöc®ÃzÜ> zÓ¢‚9¤)I BÇ”² £ÝÙö|á´û©ݯt,hvRˆ~‘žø-[üþi–/hÞ‚ãRl$&™“þ3ÿKúxå%ÓI¤#x#<Œ<ì÷vß§üüÚ†¢’2InZ»ýUÇj÷Eci64S —©£ZïlqŸß‘ ¹¯ŒvÙS?–èY”]RÙ1*7ºæyÙ÷ŽÛ;b¿^<‡{öb®7¼?íÝA Ã0CQ} ºÿ•ÛP Y6 “êaðÞ0†Ñücb¤ùts–mVý‡w-»!£ bÖüÂ}IùN†ÁžÖîQÄlÛÈÏxÅw—ì“Ôlê H=» ¦—ÞqmÚáž} ÿÛ4ü:¶õhéÖýH:Ó8«éJUUÕã¼en€Y&(lIEND®B`‚instagram-feed/admin/assets/img/sbi-error.svg000064400000000405151435171370015233 0ustar00 instagram-feed/admin/assets/img/tiktok-icon.svg000064400000003154151435171370015566 0ustar00 instagram-feed/admin/assets/img/sbi-dismiss-icon.svg000064400000000523151435171370016504 0ustar00instagram-feed/admin/assets/img/about/plugin-rp.png000064400000004216151435171370016347 0ustar00‰PNG  IHDR®\µUPLTEîE ëC â? å@ îE ðF òG ® ;¼tRNSœy#NÂâ´I(\IDATxÚíKsÛ6€ù’r¥âNue\×¼*M%]9ǼrFiuUMu "ÿ~·L,‹Å’¼hOž‘Éýì  Ï»ÊU®r•«¸Høv±¸[M§ÿïß»'ùðÇTúßußåý4ú»Ÿòq ý÷Ý…Tã›ß²{&åjZý]w• ÜwŠœ³ñôG§6›VÿA2Žþ@£,½þ' èP‰'Ößu7Ãê÷»nR‚×]7)Iÿ€Dýƒ€ú_¾:Eh"O0A þÑ(’}¢ýð1Òÿ«'€Fù²RëYPÿóI‡$€ô+Uh:\…Íp…Vé²þ†>A´RìëhìT«õ”¬ÿ¢WÓÚªSÿeÔTâúß“úU¯YÖ–úÁ+v¢Ø{ó`"Œç;±ÈÓð€Ž\Ëe¤”oÏáà‘©7îhQî•Ë?¹V@•ëÆnPº›+ìÌØe)•p#Õɳ¸ $'¦ûR••jIé2¹ê6`â^°ËòÆ” ¦s žUÖW84€A²œ5çeðÜÊ¢ß(«û©]Yà¶…òP•…ÑŠ´VJ8ˆÉ£%´ìÙ7¬3uTƒ ß¾B·éž¶ñ^Ÿ¯‰15ÍÕ_{|MüÛZMû›©B*I1¸Ô—»™ÁÜ>® “ ?ÂÜà÷¦o£÷Þž+ÔL°˜¶2e‘ 7DpB<øF+ PžýÛG«èçÕ8„¹é ¶èåæ`¶5üËÒð9VE„P’¢Øå V¸ Ʀ$qf…‘ #iëÑH ¦KcÞÝ`~b>2ïgI @ƒ R†ÄÁ„ÓI‰ß³R ëÊ-©šÈX“‡ëB¡P#®†Ô”F“P"±b§ÏÙ5áÖ`(=0ç,€°c$Biá À,ôG}Ñr Ø  ˜“véÕ¦p(À– P齇ÌÝ`&PP€@0Ó³¥®þ¨‡ Š( ³W€šÐè‡É `>5éÖ4L€O YŠO¨Ú ЇW$äYJ€ˆ´!JŠ—<€ °bJ©q¦Ôm@Ù $;ö ’Œ9ê½[Ê?=)€œòp{Š¡0¶<€ ÉÙv3Š}(ñš @)‹C»ªÅ âÄb”›G¤î… XA˜¦•@jNt>iÇœ °åT‚3³‹Í(^ÈÌwŸS¼ šK¢-i¿“ à™7¢·¤U6@n4ñœâ|€­1Õ¦¤·Fؾ± Xš'5Э$Pï¿2eã•,@jÊ4'Ò[/|€¹a„CÚ›K|€À#ÚÛ|€Ð   m;ó7;à~ÚzÒýPôO†8€§Ã9% ¡© ÄñíE ‡èA…ÎÆ\F ¯¢D“a3@€¦Ã”öŠ‚ @/ضèeC¤X²9ÑÞq˜!š bw€¨ïhonŸäîáMÿ³x€Þ<ø÷×ßÿýCrBW€MGýKÄ”•R=@Dˆ íÕ@“ Ëj €ÖŠìfÀu"×p ÎA6À#mª¡Öã¸aa¼Ø,Åê›Ú 3pÈ-ôkÍÀ ê¬$ÈíJk€;KI„æ¶0@j pÆ«*[ëÐx"e¤îœŒxDæö(@nPŠ,íZQ€S'c…\€ˆ¡_÷oì|@!0ãÔv à È9OŽú‚ï ‘ tÙ€ °ä´‚{Ô¡qN,€ŒðY$;Ôb‰@?xxPÌò|÷ð§9ÿødÐ+GŽ€g~ý^Íš°Ó‡{#@ yFÄ‹b €È54Wr>àN€Á§†%{ €H%˜6È"@ («Aa4€ °ŒŒ™5Û¬a>Øð´1˜5°¯JÄH°ÉP€Š ˜7kDI‚|V<(ê§(@Ž<åÅó솚ª÷ú,"d†¯z] ^ÿÛ–3Ð |À B¤,¾üÖeiX®€hXá8Pë ËÆTûõ5À K°‹®õ» æö+Ö´Ðh'PõZ뛫̼i/.€'j ´y ðüûßgÂnÀåY >ðI•_Kíûž°«i_­~ú‡Á}=(ö^»ƒž’¶¶—@å6ÇçÅB)ÔÛÅb¯ÝÂßPVÐÔxçÔ_ø´— Ô(ᯑ]FŒˆöz0?¾þë Á€ìÉô»àï®ÀøK”³ ±ƒ}”M‰Š¿Dô Õ +q[æè ðh±©îïÜzõ٦f1äÆÀï, @c³_îÃmÏë¥láÃ\ P$J<‚¬Ulæ;ÓÅV\”E¹’Ðî­ ÐiQŒ½“æºIJ‘€{9yîÕT±îϪÛåèúŸÒiõ_v®“üÈçùv‚óùΛL¢ÛÅâ6ó®r•«\å*.ò?œRÜ¢IEND®B`‚instagram-feed/admin/assets/img/about/plugin-smtp.png000064400000020307151435171370016710 0ustar00‰PNG  IHDRk¬XTýPLTE9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`9S`½ÏÈ€ž°†¡–ÿÿÿûªosŽžôøÿ¾ÐÉÜ<6P^Ÿ²¿ÑÊ… •rÀÒ˼ÎÇ„Ÿ”4N\Xd—¯¥øûÿ«À¸¦»³”­£{—E^ióŸaÞ‚@¨½µž´«‚ž’RjsNgqòôôèíì¡¶¸¤º±öøø¬À¾¨¼»xŽ“c|€Ojy(DRèOÚ|8ûüûÑÚØÀÊ¿¯Ã»†¤·ˆœžs‰Žm…‰jƒ„Wrù¦jÓÜÚÊØÕÇÕÑ¥¹µœ±µ¨¯€™¥Œ¡¢sZrzö£fì”UÞ{4õúÿóøÿ ´±}–¤€•˜i†—f‚’]yˆÿ¨jâ†Dó÷üÞåå»ÕÒ•¬²‘¦¥f~„ëò÷çîòâèèÔßßÎÝÚÇØÐ¿ÍÄãìï×ãä¼ÓÎÅǸ…ž¨a}赉å‹JìïðÚáà¹ÉÃ¥¸º—ªªÈ³—{’”p‹†ïõúËÛÒð‹¤¬‚›§âº•v‘‹Ì«ˆî±Sn}ö«tü¤dÔ•cï™Z°¯™­¬…šœÚ…FÐìÂÊθÐË׿¢Ç¹¢Ï¢zÖŽUÙ‰N¹ÃDZ¼ÁùǤќo÷Ë­Ÿ¦êà×êÛÎòÖÂïиÞʳܢs°R1tRNSúÖô 3À†Yüøb›M8§k“-'ѱ¬éÚŒ îsTã·EĽßËyæ ?7?vHIDATxÚìœ{H[wǯªµ­]ëÚÚu}ìÑ­íºß›á%Ü˽I$„þ¢‰$±êÀP1Âuø´Ú¢«"¬Pu ÖÒ?†ŽúªècíJ¬Œ Ú²nÿ¬coØÕÜßïwn‰±7©Ÿlнõ|=çüÎ9¿“P›l²É&›l²É&›l²É&›lÛ“¶%''|åØk[b¨çŽÄc©"îäK[¨çФ]o_R_¢ž#vƒe8òü8Á®—ÁJ¤î¥žv+³õùPàØˆ7©èçÜÿµFc®1K iTô³_f¾v¬ûεîH¤ì¤¢±Äþž«gŠ­B±éê$@Np"ÚÓ@Ì> ¡ÖõexFÄÀÔÝm^vœ¤¢›=ñÈþÚë< —`¬u\ójé$8DE31'ýê;X½yP–ˆ=JE3Û/ÆÁÓ<” @›;€—ähnŒbР-¿Z}° –€%ö¿@E/.àÚ}ˆaª=zšÎ‘b .š»¢Tà%«òŒbØK MÓ’ñQ,À¡}ø¼/@Li+½H¹t¦%PÑÊÎ)´³À—Ù‰"qG¨èd šèîÌAy hÒ‹öëu“šDE# Ç¥¨rñÀçq¢ý¶y[¸ŠBöì^ ÚÎ. ÐD¢º-LBàxd€§Ë,z€ù®ȉ‚Eè0ø8@™è¶æ5ð!îU*Ú8 ¼”tË`MŽ6?pÇØÀµî1v¨› lAUPmeˆ`»ÛÒrçC–a˜Ò«•Zà%Š2P:XH`Lf1þ;úß+ôªRÑÚ!)mGá;@¢›Á­×4<¬`Ñëû}%ÞlpxOtÝÄìA“€™Œ‹ãô£Ùø5O\ >uWT5†è¬ Á*ö­ÞûW,_Z|©ÕÝ®ˆý{^£¢„Ä“$°B Ûy–ëä¯õ|uCY…k®Ê„·öDÇ|dçV ‘9*:¿2¢õ¥NS«Ûc>«×XîÖªœý»¨ˆç¥Ýñ¡n` ÆSgâ!äᥲº|›^ÏÑ´ÍV™ékz*Òãàäq€Qwd3$‹YÈœît7Ñ9vûY½(½¨?û¶QÌÞý)€ í?M< ZXü³PmÊ6-’×ÚÚ0òx²6k™ñ§"÷Òðèq Çx鋊«³o´,w‚©ˆäÕWbµúWGÂê«E¡€{ƒH<íö5Ôög³±ª &ý%H޼Êð¥7|ÌÏtLŽøß` G&j vGÚià³ “¥«y8ÇÃÿ_1Ò£Ë2Ò#K„8@Pgµ÷•VÀÿG;Zéãé‘ÔøØ¯V°ðÿÂÜwu×z âîÍ^”Ûo,ïã `†‚ë•F¹‘R$ž„Üš« f2JŒ9É ûeáoìwÂà)5u—¨#m`ž&³¿¤û´†/ô©I‡ gGRˆý ²04Xfô¢@¼ò[£]d¿ÿ>ž…¡Â>ªÒ’¾@é×Ç{ß²U°R†Sp[æéÊ.Š·§ÉìŒÒÈ ôÉ&EGÝm“õ~ý(þC†©x¬Ã ¼¬äæø©2' ,\/¦_Mê!åAÌ+Ä*]¸~ðB Q@¹Ó„Ø~Çà ®#…ÊI(µ)Ø~ŠÀ¸®£%qR¡.‚`¬˜ë ;‰]à°2wŠcÈ Lw•‡ë “W€¢Wj‰h»¸þ°£Y¸"Väx( ÊÏ„C&»Á+”òx-O 0°±¯+p2†O€ö3, Lö$ ‚Êë ·à[ cd`Xà‰ ¼I)m(´`xàÏÔR÷Êwï@CÀÇ,ÃSx {RIo£¨e¤† C^%Ê'(e# w ˜…á‚aïä¢jPa£!\jG ¤/ÞÀ³ëbµsñIÒ*á#4ˆM¦”Ä–8œ—"Àiw¾ªy>dóy륆Æ<Ë3K10fD[õ”’HxEÀ ÀB†ÍkóXÌ´Ùãv±!Ú;Ÿdɯkœ‹Ó±î\ ÄmÒÔXTõÍA¾ºÎ¢Ñp"z½¥ É~“‡Ö/>J£·y5wÅ@Š‚î¶¤¥ û«ÄÍׯ|Ž£%4æ§ó5èQœÆì¶2…#x—ò°b²@bú\Ž),³q4³dÃàqû<Šk2¬=F|O”¦Œ÷ìÝ 0¹s4GûP|4Øh4ù¦ûÝF€Ø¡ˆß]ˆk—íçäØ\Aß{hŒ÷¡­U+joÄ×~Ç1þíMÛ54ÆÍ;"ÁÄõ>TÓö¨ÔXô çT^fÌzZ¢Í”ý.3‡ü¿@%á4sj¥(ø£®ÒkòºTˆ‚fäM¥0œ(47’§ÓæàË)ê@æàÝ ]vN…ùºÎ. /À (mC‡}Y…ùèg÷Ÿá³ªˆ_Êõù3*ÖfT ÕÖI'IŽè„®2ºG|ÙC= ŽÄJÍN•œ›6t “è‘þy£’3ãÉq_¥6ž£‡/-š¦'OŸN¨0çÝvéhäƒ@줸¨Âœûåé“6[M @<£¥² IèyPÞâp8¾!áÚ€N² `M’ö:XÛk--=͵À·6º JÄË€$@ Ô™Ú'*Ä­PpæY8¯mç°÷·g‰ÿ…ÔtÒ¶SIL2ð§V ÌÜnüó2Í« aYžç,#¾,@NãGèO{Q¸vll"<š¡-Çi`Øî5s/+¬_pcaf~jjj~fáÆ0­hÀ u‚ˆg–öîÑΪ$.›¥4ÖTêo~éùñ"‘OEÄ/ó³ÃÐ@®,Æ´ 0olÜŒ,&¬Bïŵ(vÎN×eÈ)ª¿·À « p¾2€½8r„$€ux¾ˆ˜O$˜² ¡¿QAðÂË¡ ÏMÕg¬Dý½‚‚`ë-ÐÿSº‡ë±ß_q¤@l\IüNÊ\– à ZK‘ý+úÀœu5Ú×àíØžÚ~¬Jf9õœ¿;Oì_NÑ´SX&À%| öÁê¤Rág'XmÇÄj…ТŒÕ(š%û R)œÓúàÚZ¤£ÂMRXcÍy?8['@pN#pH3äW výž Ö`+nÈ‚å¨ËuX€þ¯ýzÎÜÀ®éÄ"€/ð @‡6ÆõáÄI¯ƒ•P·ãþ,·¯ uƒy9þófþÓŒ5˜bQð n»Ô“^,Zžög_˜›¢ä”•3_O >>Æ9«SÀbBF•^ÉX“!ô½M^Îz&ð±‚= v03@5Þ£0ñx€Ì78V‚^6±T3ÐËlÆÚ, ¤‹A 3¸p<t"î k5t06€=wuè#Coª$&,ÍÄòÌœT`MÏ×ä–,ºY‡&`€ÃáÛ"Mz ÀîêïÍÒ{ïÂ#AžˆI¿SaxÜÛ÷ÏÌÞ(øù«ïðòÉwßþsyaªÞ[#^¼¸ÐLÌ}ž¸@f¯VÛÛqƆ“àrÒÃÒ“]¸•ë€×ùÛ•-í·¿&#mvé~¼ 0´(@ýÔÂÐÅ?÷îgï¿+ñþgßõãðìôR—|eV¾=eÁ›dÐúKOUy÷Å›ô*¼® º˜S ê–œ&1ëÍN¨øZÀÅŠ2*„Ÿ~ü ›O$øòóÙ{E¢ ’¼‡“nF T„óÿ2wž±MQ{o±ÅÞ>•DçÈ! ¤ CŒ¢ÒB© @D$– °)e%Š¡°GRÖ"J‚ ¢¬² ˆ]ÄüÀGĹœm’s Æâ'DÕ“zõýó|ïÝÝ»×[·Ö­Gq@<)žLËbÄE·bÜúABvF†XàäÔûÁ‡pÅ‹Ü\ˆÜÜ?¸x‚'@äx||áQß3LkuT\zÿ£ãÒ.K ûèøBÀ¦ÂÈ0‡Á\œÅ~¸v_(AE¸ô*€‰¸5(°>5}6Ÿê„iP¹£q(¨/$`Cª1’!‚¸˜ŒÆÿ_¬À ŸáâÉˬø||…HÜýãÆ‹ @…¼ûSñÑ7¥®õ VÁh¾û`ÇãÁÙ¾øIvª>òlô£¿O Í?I¦ïB‘X™>Á*°Ò¦H’Ôh0¾çg5ÎV„/ƒL^$ÃÀtN`\™Æ…|XªÎ€Ð=ÕçmŠi©`ÂhüD>²X€œHé“xÓàŽeI&á ÊAY‹Îd¶ê“nó `©1š x¼Gã'óÂÇK’™U™«q(E¤OkåhE‘Y`â-ÛvDÏE“ôˆ½‘«‘ ·‚g1©Ñ4±7£VÞš¤³)2ÊoÕm)%@j’)s߯ñg¯Áy’Ùs-W#É‹0ˆ‚åÆçÿRàW}ÒBŠLGÅßÖí(2 óõIk&L¿µiÇú[…&^š$àñ ÐÁaÖˆ0GZÍžO J¡+°zßÍ›6ÌšƒN\3-{¤ö…Rdt{FO@–šž™³<'s¼§8NW±gt‘šJOÕúI p/mµ1‰“`|:ïó×gZçÍk·×K»ËÌ27íõº_kÌe4OcÄ}Q×éúª>a‰Ž"Ó\é) ­”%€«/Æ”øTh4~W™¦m!¿†G „Úè2—ßñš¦Ë!ˆÂ™•˜ôUžF‘é ð$Э;EfØ)òñGo @Ô #×i¤€GÃÃZ¸ßìÑîkÃ"³aœã„púŠL/…+¯u¢¤˜¡3Oü´kò€ð 'AFh0~7ú>ˆ¤q %¾ïÌLЋ4MšQól©I@ác”+³ €…ãô¢ BlEn•e^šváÀÅÙ¿9R¢\øb³2å°À±h9LFÙ]‘†¤¦€yUC]ž$¼ã"΄?Çk·X·ËŒ\š*}ŸpÎ1ò»4Ͱ@®õiP¾ÖL­RoÀ^'÷\0_×hÌ s¡ )šôü¼9ÐM‡Hôj=BÐÖ ‰7þ9£§q²dï–ššuUT€>Rg»³!àX>!r&nÔsÆ*æýOðxù“ ò}‡Æ¡7ãQZ6Îí’+HÎÁ¢zdz(z@R‡’`Ì.p@fR^Ò£Ñh2e.g Æ~~¶J€P@àÝz¼tÑç0"¦MÏÓWuiLÍI‹ì°ß•:)ï£hÒXmJ‚QoaäD+ ËÏÌÌËm€àwì﫺„+è0¿¶Ñ6ú‘=Fâ|ör®Ë¥9Ó§1Ñ{äH2µTuË’£6; ¢jé–i ûÏ¿8ö;n2ˆÀ]²¼ËØLÁUÝ@G)'0…?ßC†‰_DÁþ‰ûðÑ?!î°U>*<âwÉL\7LÍ`˜àåN±û¾¿Ÿäµs&z©xëJÅ”1)/8fëh¤´Ü“‹àÇBE_±H» n@ù‹4õ¤Øã„ axÄàH€3€R˜¨,N˜Rco¼¯”8ÃB(Åå•.‘þ7þW×ì Q˜’ ŠLo%h,åJ0ÐþÍ0óßÿ7~›íY1Hë© 5ƪK pÊ §øSe(`6s΀ûßÏ­ 8ÛAÂ$œ¢ûÐ =8 ÈQà³7äòû‘éûý òÿ[ey1!ÀæÙ~°—Š [‡â ”>úZä y‚AOYÈæ¥«(úV,³ª”„询cN49?C¹a£aã\  ˜±{$Ü@#µw,äÃ_l´ÏÅòzH»'!@u5Ø"·†hi9-ÀöÅg²0ìÊøÈ8š db%44ÊcîÛŒÿçØ~w®l¹i¯€\&ŸZBöƒ5Õ@7ôÔd øg•h@&Öƒ È~°¯z ›}Ð dã«äÍ€@6¨¬ÙöVO€1Ç'%ù”GMà«ÈÆ0úÂ(õ"Áöd'°…²¾ÈöO´íç"Àl õ A¥K‹ô& pÆ | ûÌ]TT„b@;ø®ÍPoC¤™Dpü ÐþéÕ—/ßð.€,æÞJôƒŠ&Ìv$zA ‡2)-öùŠíà˜üfå0ÕR嚯Jâ0@6v;øC¬«ÈI½JÝ“x,¶v³¨aúB¢T4A ùªäôd >Œe/I€ÎŠÕjGà‚“jXCßZŠ Ð‹äî‰æÀ4‹4Ä€ec5ÆìµxøŽ$ÀEÇ»6#†…¶¹9Öó3ñóc`ÖXø{£%æ9“åAèK~Pá¿HU­i-X"´Ãy‹’àÖÇâ@`‘NµdÙV¾+Ób ü',Þ,hž|pÁ*œ$Õ)özWÓÆ?ùGYl,ˆ â çÊÖ©1G péAÇ.Éz[à 8P|ý2ä]®Ú¼ìE}fqQP2¸$d%÷îeÈëo;Í[Û8P`ý·õŽs¡ó#( Nu`¹ö[SŒ¡õ#5W677«k¤݉µÒÍÎnÖªïfãÓ>ƒ´X«wX1÷‚«Š1¨žñK€Ú'9Ù2gb¸S0=Ý0 ]7mÀ!ì—ÏMHÝÓŠü7ýjjd;Ë ðz&Ý€˜8lOo>Íc»oÒÝCcär§$€}Õvn¡„‡2FtnŽ3÷yÅ%ÚNn.£$†[Vƒ‡©>TÞ$Ü"Éó$#®…eŒ·aë¼ÿºÊ]Ë-ÌîŸÍUµ06ìD2Þ‡0lÆðÚh=­¼%ž O Ž„Kùzóx4ê?q€¢­}›Û“`vn1÷Ã%!î÷¯Ù_“¼löë÷@æÛFTCjbžr]CIqQ¼$V³0O$cj8#P@ß̽x¿¸°ø>ûau­é`u76sÙ÷‹‹‹ïr›f8*€mЈÿ*æ±j‘á[(1Î= PÐ,Ce]ÿ ›ÁQ 3Õ6~¬·‹«Õª…UÓÖª«Åb`]sµ½\ŠmÒßÈS!.€&̃C'PrŒ ûCL °=†“5{hÍe4WÓMºm†Û¤-+ÕõÐJÖMªc4D÷l,À÷¸fÑ΢¼S”À«6c̶ÕVv‡ìÑNmÔFÛFw ÚÍ;¨Xü§$X9‹äÌCAÜÀBšö}MÏ  Æã½®òwcUÞ$>x&n Ê€2îU'Q œ˜ÕÁÝQ0“dï'&7ʸKl#æ?ÆÀ¢Vâà.)Ç烙S(a&cC@©—q·ØzäMï}êû¬ëD·q·”ëŠÄñt%Íx, ºî¦dRbè^;³«^`¥t½mí ‹ÆòàJœ‘«ü\Ð8ˆ€Ï4ME;¨-«X»Ç2–å47Õo(4ŸwhÑÑÚ=`磅Àès”wpeîWŒ£T8~”î‹.‰ÌÜ@©pd:*}¾Z’ûsäØÙÇÑ6ÁºÕ7¸ƒ¡´˜8»}PüúRD€GÇQj¹MÃÇi㻊œÐ®)ß]Q.xi+WŸA)Â6'çà„áýçÖÁn tí§`rþÏÜGis=Ó?€å¹U€ (}žI¼iÅßø4Ç®ž=Ù',>þIçQ_8>Å+`¤P€O ²pÿÌôy~“[]&‰+Vß9ahõ‹Óñ?”'¬€[Ê|ßOœmsz”[PØÂÉaÙ‰óÿf¿ü+ K%–œ–žç;ãFo£þrúh¬]œõrŽHx H²ÒPq8» ïÿÌê?‚£W>poÕ]^’8†Î¡AàöS‰Gi0 =uŸU–$ž©Áð¡sSRŒåš гß¿~ž{7Рpé¡Ä#Ë%Mµ '¥Ÿí†ÁŸ#sþNŒg$žWR¥€¥j%y^â>…‹'WÝSJÅÅÿ%o9nEy#è„CƒÆÄ”¨ìK¥æ”ýu¿Ìê%EÔ voPÂß~&ŸIqä7Ji˳þa@Ù"|ðöLÒçßæÎ…a#©´¼[³ËÒ¬2ÛÚ-ÌÏ AOAÊñ+âFBùK Óí8ËbõÝeå•,‰ŸDƒËÈ…«’y^þX(mQìÀ3¾ïcÚȾ_ȵÛÇÐ sdò|ç6”P×óA¤BhôY­Q*|T:þ3TæâY4èÜ™ÊHQ¥¯4jS÷cjµF%ÿQQ–¤ÎdNž;ƒwÆž•þÂR€ô%ß䓲"ý…Ñ¡± ~<'NÍd¤Þ2‰I!ƒI_„Vm ¥…üÿϵt+*qeäžÕlgf®‘úæÚW¢Ý$”²x…xÇJ,9ôF!F¹lÑüíôîlrwÔ67Ê=?aÚõì:K“É<1¬µµÓ~è7\¼¾×6gëZ}o a´T’s®³?_üj¡ e¤Yåâ–ç 7âc"ónIEND®B`‚instagram-feed/admin/assets/img/about/plugin-seo.png000064400000006441151435171370016516 0ustar00‰PNG  IHDR! ÌŸ5ŒoPLTEPß`ßZæXßUßZßXßVßYßYáXßZßZáYß[ßZáZßYá[áYßZßZáYßYàZàXßYà[àYàZà[àYàZàZà[àZà¼%O$tRNS 00@PP_``opp€Ÿ ¯¯°¿¿ÏÏÏßßïï¦~ =IDATxÚíëv›º€%oÙ:Ä[‰ƒM!0ïÿŒ§“Ôi|‘fF#‰0¿ºº–ƒø˜«.#!‚‹ÒùÆ”e]÷}?¾Kß·u]>šM¦•ø®"—¹)Û¿P®K_—&[~/8Ù¦´AóYÚÃFËo@GCà|´œ4ú8âå8MJrs  óá›Ê|R.|¹­Gz©7¤·ýèKÚô!I/ÚóI“R67™ùÆs’C–&ŸÕö8rI¿MO‘t=òJ©Óò>ýÈ/}žŸãFú\Î|’wHaùÄÏ(<Ÿ£™O¢>;ëÇx¤/‰dÏîæGq¹#ù4Æ'1¹£Ç1F‰Æ©zŒUâ0µH(5ŠXâP£¨(5Š^B«‘>ŽiHÑÓ˜Ž„ÈT;¦$5[Xd–¶Ó“‚³ +Çe;» »Îˆi{Õ© 3ÊŽcºÒ3ì«ù1&-C6±À!-}@žCZ9Ž3¢éòˆh*€¼!š Oˆ¦È ¢iò€h;Ž3¢ïˆ8uœ" q| ô0NSÈÊØeå¸ÓJé}™ÝÑRHØO¯ †h2DÑÍÕï[zÏ®?í>v¯›Èæ‹È æ|ŠÏ8:E¦H-Ŭ#Ѻj½þçïºiÑ¿{MĨŒ%ŒÕ_wÌ/\ÞÑ|#tÌ'™Rì.ž(ÐàâØh!O;(Š1¼\1ö lc@„ h$^º»æ ÜÆœÕð†·^®^Ÿ;Ï06ö*{Š>öÒ7ÞO4#S¢1 ê„ÆÝ­' È? †1 +’4©âÍpZ ÜØ«ü¢IF‚î º½ð¾­‘¿÷—åD‰½¹mÉ÷ÌäNÒ;r(Ð[¼báP]H¨jX@F6/ÝßyÁøPM5J÷Ÿ“=z¼÷uÌuK©¯W;#œº_ø(ógËÖÐ7Mù*UÓô¿© Õý’©¢f$ŽÙÇ ›¨ùÅ=NÚ\‘n Æ»£vÎI÷áõþiÊqºä9éƒGû+ Úênš`ŽŠÇQ¿j»äN…¨&:Yõýüß›öêªÔ#dòçª5õHí2kúÇzsÕýPw¤?Éžú¡Öì‘>5B×Ç¡ _VæãkÖ!Ú&Ël”ȇ ­½åC ¿ùP¡Î_]¶âW¢>ˆï‹*ÞßV"”ù gKV»|7’\äcÞ1Vd÷–*H|QGþU%_EÖqœ+Uäˆ › ½ðœM&GtU‰ò4y@”ñ„ú¾&­ÔˆjÔ~§¨|/DšaÒ·ãíD¢hƒþοŸ¸»Ùhÿ¾:gPSŸRx?©Ÿ6‚_ž=ûê%HÛ²j#ticl_yn@µ”¤È§»âõÏH]üƒ)  ÏeìPí2‰(L #«Ï1ŸaªÃÝz öBÚPïþ½æd73÷PpabLê<ÝÌ_]¼5oÑ¢ÍÌÝÈÒºCD£ÍÌÙÈJ‘–4H3[N\… J$qéV-Rçx–ãt0½ëž ”Q,vY¸Ö¶ª&#YÀ¹1¹“Ü’«îœ«‰õ#>µ-¼{äýÔ$¼”ü¾Ú býO @ïµÓmD[ºÅÿ–!üto•Y)Âb¯€Çû<€ŸÎl–§Î>¿XÀQ Ÿ6v«ÀgCã7³Ø iZBÚî¥øS¢œ ÉD -¡‘ó2ø&„>ìÿù»rΈ hQöß7ñC!iÀ$›)ržk¡sCƒL’`EPÂ5ª—H8BCaË/k(¶²Mè„”QŸ|˜JŒ¬Î)«†cÃ^ ÆKzØiº´S#VBà‹èzPÍA£FŒ„0ÑÁ–IHÔˆê&C`–@¡F\„7Bƒý¹ɨ aïðùó7°íè€WñðB÷/Õ­4j,„ð‡ àéЧ2MEJˆ`k&¨²§™·æ ÔÓ DFIˆbw¯ ÚFmó•þ3Qèër¶wììí¾È3 ¡%¡Ý:=Ù%˽Õ5 !’½ì%Sdq›Ã#"”ñ¢ì…“ó"9¬`¸B‹¡}D„Š( yjÃ5^~B&"B:JBÅLˆ'cœ Í„fB3¡™ÐLh&mÆX̄ʩ']—‘T®»( U*£$”Þ Z¢„ôt­Œhm9]OMíÅxU”„4„›b'Daf4«Ò¶ëöì„ !ü¸m³"èfIíûšòª! „4ÖÊ~W劢õg)ð„P…Ùàr[I‚²!v¥vÚ[µ'$är€Ë i´½¤ÝöÃv¨ç(¤ý ]ûÔ—XHöÄtnT£b^ »;é:“®³2ð/q {Ðjº&ó ʸo ¿v˜ kL:€˜•=58Ì¡¼,ƒ¹¡S™ænåK ÷ý ª;€ ¢ ,”(¸ïUFbti&³ýMjãr=оó¼ïàô†KT’½sªâ‰ï3¾âG5ñSzÔ>§.á«#ñØ•ïí=DBä€j†}†'DKB5 «S½ j%rñEpBÔ£¾±"÷Lþ,û &´¥´ñ»ªL¡„ž<ŒYql4ü+O^ •F\úÞšÓ"¡íÈ«B~”Èn6DHÌ*äI‰jo„Jvò¤DÒ¡ßÓ‹ežé >Á‡å *ƒ<5%Bµd@q„Tòòa¼yê!„ yP¢Ö[´¯B¨Ýýéu©m»û†ú¹Æ¡,ÄH=Ì%SutÛè ŽX¹Ò~K‡]¤ ÿ—i@>³áwÓ"¾Ý^¬_ _QºL·«kž¹Ýß—õL»£¬y7ý6àŽîÉìU5³«î„›Ú0M=0»jçÈdv6@u·p¿ šÌά\nýás £´3›šc ^0¡lŒðóXº¶•÷m°ÛÖ‰ì¬G,él™üЋ€ÉŠæûh0 ûˆh¢=ü@ M}VbVt’aM~ªh†ê–É{;XonBZtB”®èÆu·óMHšdãP'0²¢ÉY·WáÁê¯8#ùØ ‘Nõ—îè¶~ÅÃ…«Ç#O á«>¾0ZÙo¢ÿr˜F“]ZiZè&©ên#çj$7d|P‡¾}L„ôå›Ûý{ÎÉ^ßÌA?nì|¢H'ƒ[“ç@èfóHÙ í¥‰sëø„ ë‰Z 21“´bFä9Î{ÞŒ>-@´í·' hjˆ<š"/€¦„È é òh*Í# iäE^MQ!'[ëf>QƵz-R’5w)Rk‘š¨}7›W$Š” úœ)ÒÚw5RR$.«?k«“UÑzÑž‰ày7·ŠrÏÈPæRLOtÑPPªb%¦+º¨0n©/'Mç]¤6U £¥øN²ÊLÕØœ§ë›²È”ø¶¢tV˜²jš¾ÿÀ5üþwÓ”¥ÉóU`4ÿ¹ÅÉ€ãNIEND®B`‚instagram-feed/admin/assets/img/about/plugin-affwp.png000064400000004304151435171370017027 0ustar00‰PNG  IHDR––<qâ pHYs  šœvIDATxÚí1E…û¿ñœñáôDŠ ´„³ œ9!""!‚À™-]ˆDj‘`¸3Üq [sˆ;¼ø­=Öj±ÙžéWÓU5¯¤‘¬EÆ»=_WW¿®ª.k™ÌÀІ@&°dK&°d2%X2%“ ,™À’ ,™L`ÉV0{¹Z­ÿúþ»õÕ×_­/Žï¯ÏŽ>ZŸ¬¼óÁÛçÙÁÍç¿|òñúòáƒõõÉãÍß“ ¬ÿ`(€f¢1þþ‹Gß®oŸŸ ¬¥{§?¾ü¢ ¦÷=¿¾hÀ <‹P»À}¹ºXÙ ^K–5PÛÏχn–Z•8ŽšÃKýŸ÷XÉ »¼^@m?¯b/•Äà)<@5<*²Ç]EPÉs ¬‘v}òÄ%TÃóûÃ+âî»1Ï`áAì'°Y¨ðüôj—šQHM ÄÏPm ,-&O65X^wKóZ©ÀúguÒ[eôZ©ÀŠ[eöZ©À²8\Æÿ’ÀŸ'7eHüõÞg&peQäÓ€… }îŒü›È»’®•,æ2XƤ37 H‡XŽŒå9ÎŽîvÝB0XŽ ŒÛ¢‚³b¼›J|°XK`‹!&c|Tý,û)å…þýÃÓæïÂÈPE¼(°€ðÛ0b½ )Ì)Àb,AˆÑÆâ–ÀXZ ÷ ¢ CɽÀRðN?NaH Þ²<§°Ž•2d9¤Ñ±v;ÂL][¼KýgÈ‹dç¤lƒ©•3,qTG:ÎŒYé<6xf¦CgÉÉJËcŒ… µ‹Ì~J›qhì†ðBØ¡íÆÖ –ç^ŸžÏÔ<7ˆcŒ[É Ûµ[˜ç4Zá*¡ŠR¢îý¸&¡U„’©ÝW'h™2б%B©):£ÁŠt çà=ÊS»K¶%0BB\Ä–áccÖ’ÍuGH-‰vÁÁ”\û’Õ[y=҉警„%³·òx¬Ñ[m{-*Xèlù…O6Oö+E¬½•õ8Žñþ¥Ç,ƒ\·ºû%‘Ï,f5ë ¬Å, ÄïÊERÆ‘- ]ßçÅürˆš[<ôÄ3¥ŒM÷À82ïª]÷‚ÅLñ{ÿ1…U©3&>°2Ö’fÍ<—¬z/X¬”˜©ƒ©ôcyˆžƒÕr¸Îò˜5aÅ^°ÎIn´E¨dÅ&=¦Y´å7°65qV™ƒrÆvŸáµ.;6Še,EŒÜ}†£¨9‡Ý cûʸP›ñbjw4^õ+ÆeHG5€ïËKlƒ¢ÖÈ;C†çgLÐÛç§”wê,/Áot°XGSiÀb¨Þ‹ã±Ü€Åšo©+Œ]UO°A3ãô€ÑyºFœ%xg ãÅDÞߟ!ÝP‚wÆ mõ,ý¥gF)#c”q˜Î8ɨyŸ{Áb´ž¬CiVŒÒkWÛziKh®ÑË\2õ(âúä 팫ç‘k›?u’2õkÔÿ2瀌… È<¸Ír%q \ìL‘š Z•6ÃLÃÜG¼E×Y¤ìß„¸mßDÅX3Óžj'hXV ü1ÐÛ­ ±ìâ3«–Š½Í¢ËÌÐHm{ñg«q¬ ¥×€,µñZ„b_F–Ju1E¤BUÏ…«‘ U[d£ÒÓ/±ƒ÷F ¬pbTÁjD¯å±Ì>¢×+r—ÞÁgöÜïóZÑê4ÇzýÑMA<7 ‹Ô#+Ò$âõË”ÙfqÇ û陆œi’NÝQOj¼æ½GÖÙÑÝuów¾Ñk’ ,™À’ ,™L`É–L`ÉdK&°dK&X2%[¤ý |Ò'¯¹iGíIEND®B`‚instagram-feed/admin/assets/img/about/plugin-wpcode.png000064400000135046151435171370017215 0ustar00‰PNG  IHDR$$h,7º pHYs.#.#x¥?v IDATxœìÝÍqG¶€Ñ[ŠÙÏ`,`Ëb, ´©­ „±àQÛÞ hÁ-Ђ= = ,¨Õ“Ð@þàíª¬Ês"”B?…]}o7 CdúÁmÙ @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤û‹+…ýéú8ˆÃ/ðç¿è¸üð|7_ù/ÿðφíWÿ]à;uÃ0¸Cx‚®ß§å¿Ø”?†/Ü'À⼈OåÐ÷¡Â‡ûŸa»ûxA|F×ÿ>­à>4Ø”?OÜ@³>>Œ"â¶Ä ·~%à¿ hÚƒð`ó`e‚ <Õ}¬p#T€$ÐŒœ–ŸMùóÀo{ô® »‘-$°Z]¿‹6ñ5¸Æi 7Ã6>y*¬‘ Õèú8{X»ÀR|¼J ðÁ“c  ,Öƒ Öä>P¸6A%$°]Ç%>8³‚€†¼/qÂõ°Ý­z€E$Pµ®ß­`8+?'žû}z°ÝE P-AÕ)«î#„#O¾èíƒé V;PAU(“.J„`<8ª˜M‰ÎMB€to¬u`n‚&Õõq\„1D8qû°WwejÂëa·®š) ˜D×ÿ!¼tã0‹c˜WV:0A{S¦!œ—+ oJ˜pã™°/‚Ò™†‹aj{#H E×Ça‰.LC€Å¹‹ˆëˆ¸¶ñÁã#ƒ ïRÖ2\”áÀmÀâ½+a‚u|AÏÒõqZB„WnVéý¸ÎaØÆ•ÇËsx’®ÍXCEÄ 7MøX&&xA"D€æÝÊÔ„O­_ß&Hà«„ÀŸxAŸ%D¾á®D —.ŠÏ$ðBà‰>ŽŸ1Û¸rq<$H`§ë㸌UyéF€gÄ‹a×.$ÐõqXB„WÍ_á]™˜pã6Û&HhX×ïV3\DÄAëw¤{[&&|pµm$4¨ëã¬LE8jý.€½ûûøùä°O®º-‚„†t}GÄUD¼hý.€I},Ó®]{; èú8,«~mý.€Y½‹ˆskÚ HX9ë€ YãÐAÂJ•õ cˆð²õ»ªô±LK¸ñxÖI°B]¿[Ïp­ßP½7ã zÓÖG°"e*ÂUD¼hý.€E¹+Ó®=¶õ$¬„©À ¼-a‚i + HX8S€•1-a% f*°bo"â´„å$,P×Ça™Šð²õ»Víc™–pã1/Ï­_ÀÒt}l"âƒhÀQDü³ëw“ãY¤ëãuDüÜú=MzW¦%|ðø—A°]Çq'­ßд»%\·~K`eCåº>Î"âVŒñeº<•3!¡bV4|ÑûˆØ ÛøäŠê$H¨P×ÇaYÑð¢õ»øŠq…ÃÙ°—T+*ÓõqZV4ˆ¾n\áðÏ® ÷T*Òõq±[ÓpÐú]<Ñ›ˆ¸°Â¡‚„Jtý.Dø¹õ{øï#b#J¨ƒ af]‡q/›¾€w%J¸uŸóú¡å7?·®ãˆ¸#¤Wäß”•ùÌÈ„„™t}œ–á É Ø¿_†ín}>30!a¥Ä#ì×ÿvýn…>30!ab%FøGSo`^o#â|ØÆ'Ïa:‚„ uýnÈÏͼa€z¼ˆ(a:V6L¤Œ#Ìãd\­ßõqìþ§aBžu}Fì&#¼ZõX†»2)áÖóÚ/A•ᦔ6ÔA”0+öDŒP­ƒ²¾áÔ#ÚAˆª'JØ3AB21ÀbŒQ¿º>Î=²|‚„Db€Eú‡(!Ÿ !‰`ÑD É Ä« JHÔ Ã°š731ÀªÜEÄfØÆ­Çú}LHøb€Õ9?îú8õh¿ á™Ä«%JH Hx¾k1Àj‰¾“ áº>®"âÅâÀSÜG ‡níé OTb„W‹:4Ï%Jx&AÂt}\ˆšs"Jx:AÂ#u}œGÄÿ.â°d£„×nõñºa–rÖÙt}œFÄ¿}ûüÇ›a»ûB;ß`BÂ7”á¦êC0•WeÂ>ß`BÂW”ý·qTí!˜Ã߆m\»ù/3!áënÄ|ÆU™¸Ï¾ ëã*"Nª<s;ˆˆë2yŸÏ$|F×ÇŸ÷£ºƒP“qâ¾µ _Ð ÃPåÁæÒõ±‰ˆ¶ùîx†7Ã6Î]Ü èú8ŽˆÛ2Zë§aWnë? EÙëq'U€%¹‹ˆÍ°Ý} ¾y£ÜÂï^‹x¦qÿuù2|óBðo]¿Ûåñª†³°XGÖ6Ük>Hèú8-Óà{½ìú¸t‹Ý0 ceTÆU $ûqØî>nVë^‹؃«ò%ùf5$t}œGÄ« ŽÀúQBËϵɕ ]Çq€õúeØî¦÷7§Õ ×b&pÙõqÚâE7$t}\FÄIG`ýZ]ÝÐTPª“_+8 í8)_žoJ7 Cï·ëã0"n#⨂ãО‡mÜ´ò®[šp)F`FWåËôMh"HèúØDÄÏ€v•/Ó7aõ+¬j 2M¬nhaBÂ…€Š\µð0V$t}œFįîuýúW7¬}BBU ‹ókù’ýj­6Hèúݪ†“ ŽŸózÍ·Ò ÃPÁ1ru}GÄmD¬é}°:¿ Ûu† kðZŒÀ\v}®ñA­.HèúØDÄË Žßr°ÖÕ kœpUÁà±^•/߯ʪ‚„®Ëˆ8ªà(ð«›’°š ¡ëã8".*8 <ÕI×ÇùšnmM.Ën X¢×]‡kyr«º>NÇžë`M›Ö2!au»4hÒ¯]Çkx㋺>6ñ¢‚£@†Ë5Üâ&$\UpÈòªëãté·¹è ¡ëã<"Ž*8 dz½ôÛ\ú„„UŒ©€?yÑõ±Yò¥,6Hèú¸0€[ô—ô»a*8ÆÓt}Fćˆ8XÒ¹à‰~¶q³ÄK[ê„„ 1 X씄ÅMH0€Æ,rJÂ'$˜Ž@K9%aQLG Q‹›’°´ gb´¸) K 9†¾Ó‹®Í’.q1AB×ÇyDUp˜Ã¢¾Ä¿¤ ¦#вqJÂñRÞÿ"‚„®3Ó`9_æ_Ê„„‹ Îs{µ”) Õ ]§ã؉ Ž58_ÂSX„Óà?ñ9zÕAB×Çá8n¢‚£@-º¾þ) µOH0þ[õŸ§×$,bïLì¤ëcSó¥W$t}œEÄQG€Uý%ÿš'$˜Ž_öªëã°Öû©2Hèú8Žˆ—jVí—ýk`:|ÛE­w$H€å:êú8­ñôÕ ]gã…UpX‚*§$Ô8!ᬂ3ÀRœu}ÖvÖª‚„rA¯*8 ,ÅA_þ¯mB‚éðt‚„o8¯ì<°/»>Žk:g5AB¹˜–¨ª) 5MH°®ž¯ª­5 Ö5ÀóÔ´¶¡Š ¡\ÈIG€%«f;A-¬k€ïWÍv‚Z‚ëàûU³¶aö ÁºHUÅ–‚&$l*8¬… ¡¨â"`%^t}ÎýVf ʼœó °B³˜{B‚u oöÏãç¬k€|&$Ìüú°F]§s¾¯Ù‚„òÆæz}X¹Y§$Ì9!ÁtØAî¤ëãp®k3Hx9ãk@ f0KÐõ¦#ÀÚ ¬k€I€t']‡s\ë\A‹™^Z3ËЀɃ„®7&ÔF§3¼&´j–ÏéçLH€é¼˜ã® °r]?ýgõ“ ]Çq0åkÓ¯m˜zBÂ,{) qëž H€Y¬~BÂäÅG]‡S^ƒ ІI?³Ÿ,Hèú8Žˆƒ©^øƒI·L9!Át˜Ï:'$`VÇS¾¸ Úp2廜2H˜´´þ¨ë§&0e0iiü—Ɇ L$LYX_´º Ö5ÀüV$˜ó[×Ê  'SB éúi>÷²Ú²ª á`¢×¾nAB×Çf߯<Úª&$uXM`BÔÄ Ýj‚„Ó ^xœ£)îiŠ áp‚×*"H€Æt}löýާN&x  "S @]ö¾í`¯AB×Çñ>ÿÿÀ³œîûÚö=!A ²²Ú³ì• @•¿²a³çÿ?P!€t‚hÏá¾ß± Ús²ïw¼ï átÏÿ Bûö>⨕ @:AN¤$@ƒº>N÷ù® ЦÃ}¾kAN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:Aî/®€ŠÜEÄmD|*ŽnïvØîþÙ7u}œFÄaù÷ŽËÏø÷§å¯ÜG ]¿[ópVâ„ñσêß@ dz[>È¿Î\¿0§ò>®ÊÏýš‡ó'Xïð‚¾×»òaýj"„¯)Ó.ÆŸqÂ¹É $Hà9>ÞO (+šô§8ᬄ /ýFxšqÂëa»[ËÀåN®»>ŽK¤`jдZ¿åMDüuØÆFŒðuãĈa» Æ0á§2M 9&$ð5cˆpÙòZ†ç¶ñé~­E×ï¦%\FÄÑ2ß ÀÓ™ÀçŒ!Âÿ Û8#|¿aWÃÖÄ -‚z+DØaÐA£÷ñã°3!ÂþaBDœFÄß#âníïh“  mã‡á¿ Û8¶qÓúeLiØÆ§a—%LxÛÎ;Z!Hh×ø!øñ°×~æ3N¤'SŒ*¬qÖDОq*ÂßÊz†OžÊ„Šû5‹'HhËýT„kϽ>Ö8ü5"Þ·~À² Ú`*‚ Û¸ˆMDüÖú]Ë%HX¿ñ›ö§¦",K™–p1†$%(XAÀºý6lw1ÂÏy™JHrl…°4‚€u¿QÿSù†= W¦%œZá,‰ `}Æa3lãʳ]—˜üÔú=Ë HX—q¬ÿñ°[ÏuJhòמTK°oËd„Ožéº•àä´(U$¬Ã›agb„v Ûø0(¢ V‚€åc„sϱ=%@Ù”éU$,Û/b„¶QÂ8c SZ¿  .‚€åúiØÆkÏøw˜p.Jj"HX¦1F¸òìxH”ÔD°ƒ„‡lBpXnG`(Ü’lDpX>â2~–€ç!§x·/CàÙ`S‚€Ã¹·-ã– 5AÀa,rŠ'Û20~¦€Ö ‡1³+䆠5AÀax®ÁÉ)Þ#âÕÉmöïqõá†È³ @+‚€ýs;C&HZ$ì×"'ïì3h‚ AÀ~¹A[=GòꔀAÀ~ ƒ§ ”öç9§x³'# HŠ ûãvÆB öã#'A£!HŠ û!F`4rŠ÷e„ãÄ€u û1³##ã–`-AÀî^sŠ7;22~怵 »s;c$HÖ$ìfùŽþ܆Œ'€µ »™çï6d„üÜk vã¹ÆJ¬%HØÞ"'×Ö3N~ö€AÀöÜŽ  Û»·|M°‡œ¼¡Ïè-Æ>ÐL°·#@Ä› €&‚€Í-rŠ'»@3AÀæÜŽ‚€Í  @°™Çœ¼›%‚€Í¸Z$´·È)æö€2A@{bhIÐÞÌVð‹KsM í<ço¶‚_\˜h"HhçÞNО  ì#'AlBP6·üªªãÖ$À:‚€²™`3‚€õ^sŠÁ.M¬#HXÏíð5A°–  ÙGDÌí_$k šÍsŠwûÀ— ÀZ‚€f÷¶F7¦Ö$|m‘S<ÙþTÕnGÊ _›Ù €"AÀ×<×Ínm”þô˜S¼Û]›($üÉí°ž ($üj‘SÌm_«ê¸Œˆ ó%‚€_¹Ö»µІ àW‚XÏs @+‚€yÌ)ÞìkMÌ´!Hø—¹- YUÇeD\˜hCð9y® n ´%Hø1”y®hMð3;@Ñ7m "žsŠ7;@³ªv;°A€ç  A°A0v1û°NUǹ Ø” »yNñ>ö `#œ Ø„ »Ù؀܎lLŒÙkNñâ'šUu\FÄ7›$cvïô¡hj"`‚`Ì P&H¶"HÆê!§xwúЬªã6".LlCŒ•Û ÌíÀÖ À-rŠ''ͪ:Î#⻉€m €1š9u(r;°A0Fs§E‚`'‚`lsŠ7§ͪ:®#âÊDÀ. ÀØÜ;q(º3°+A0&‹œ<×-LŒìJŒ‰ ª:¦qf'`W‚`LfNЦ&öAŒÅsNñæ´¡YUÇeDܘØA0÷NŠîLì‹ ƒœ ÐÂÄHÀ¾€1#@AUÆvöEŒ ʦ6öI ÝkNñ┡YUÇeD|3°O‚`èfNŠ&&öM ÙGDÌ0Ý™Ø7A0dóœâÝ C³ªŽÛˆ¸0°o‚`Èî.MM‚ ªENñät¡YUÇyDLL‚ ª™“…¢eŒpf&à ÀPy®ÊîlŠ ¢‡œâÝÉB³ªŽëˆ¸2p(‚`ˆæNЦ&I Í"'A´ HJ ͽ…õªú3F83pH‚`h Pævàà À<æoNšUu\Fĉ€C$Câv(s;p‚`(>rйӄ"Ap‚`(ÜŽU“ˆ¸°p ‚`(fNŠÜŽ ‚çœâÍIB³ªŽóˆøf"àX Àx®ÊÜŽ• 軈˜;E(º3pL‚ ïæ9Å»S„fU×qa"à˜ @ßÍœ ¹8:AÐg¯9Å‹„fUç11pl‚ ÏÜŽeËáÌNÀ± €>›;=(ò\p‚ ¯rŠw§ͪ:.#âÊDÀ)€¾ºwrPävàd @-rŠ''ES§"HúhæÔ`½ªþŒÎÌœŠ 裹Sƒ¢‰‰€S$}ó˜S¼95hVÕqßLœ’ è›{'ES§&Húd‘“ç Apr‚ OÜŽU·qa'àÔ @Ÿ Ìí@'€¾xÎ)Þœ4«ê8ˆï&º@ô…Û Ìí@g€>øÈI-€Î$} F€‚ªŽëˆ¸²Ð‚  Pvg# K @×½æ/N šUuœGÄÄD@—€®›9!(ZÆgfºDtÙGDÌMMt è²yNñî„ YUÇeDܘèAÐežk€²;]$Hºj‘S¼8(ò\ÐI‚ «ÜŽU“ˆ8³ÐE‚ «î ¹è,AÐE9Å»“fU—ñÍD@W €.r;”Mlt™ èšENñäT èÎD@— €®q;TuÜFÄ…€.$]#H€²©€®$]ò˜S¼9hVÕqßMt è·#@ÙÄF@€®øÈ)æNŠîLô è ·#@AUÇuD\Ù èAÐ3'EnGzCtÁsNñæ$ hb" / @x® ª:¦qf' / À©}ä$H€¦FúDœÚÜ ÀzU—qc& O À©Íœ¹èApJ¯9Å‹€"AÐ;‚à”ÜŽU“ˆ¸°Ð7‚à”æÖ‡"·#½$HNå!§x·>4«ê8ˆo&úHœÊ½å¡Èí@o €SXäO–‡¢;}%HNafuX¯ªã6".Ìô• 8Ï5@™ç€^$Çö˜S¼[šUuœGÄÄD@Ÿ €cs;”-c„3;}&HŽi‘SÌ-Ew&úN“Û  ªã:"®ìô 8&A”Mm 8–ÇœâÍÚP$HAËÜÒ°^UÆgf†@ÃGNžk€&F†Bƒ ª:.#⛀¡$Ç0³2MM ‰ 8´×œâÍÊP$HEšÛ  ªcv†äßœ&p@170ML¿Xþ÷ÇËê°ü×÷ßþ÷O_Ìuç?ý¿ÏWÿ³ÿ»3— 8¤yN|D~RÕŸM¿Û„ú,ÿyûñ¯;<óóU¤ð‹ªŽËˆÏ®ú×?|‡!HÉs P6µ#ñºŠ–ÿ¼ìlmõÿçÛïñBU† ?þ¹ˆ+?”»$‡òšÓ?¯ÛšÝÙ†úg€S·ŸïYý÷Õ?ÿ;kusÉíê9•å¿^œöÿB€~$‡roYXoõ[Ù>t2$ËçzVÂÑo@Ø—ÕsCóÕ??þ³z»ºÑÄí - €C$@™Û‚Â|õ!p~ºAaVÕq¹º9áNP°ž 8„‡¡~”‚}Y] ?1(=µX~œ_E½½ a«¿³Uœp½ –ÿY>ëß¿€Ã$‡àv(ó“>zXþŸS<9½Þœ0]FS·&üJìÛ‡*hej&zâcu#ÀýØnChku+Ð[~<çpÓÿëGì›Û `õ½•tÝbõgúÌ3<íåóåSU·ñ—ÿ¬c&HöMew6¢Ã–!Â_9ùó|«Û‚n… À˜ý/§ìѣ뼡Ï5ÐE˧þ;"®Åû³ rúŒþ}{Œ† Ø'° `õ¾ü™è˜¿GÄeNŸ7#xžá–O9äôù\˯â€Á$û²X½› ¬çvºä9"þwNq'D8Žeô±¼…by«Ðþýã&HöEŒUýùÛÑßìD,Ÿø÷åSžÚ9¾åæ9}Þ–â`Ð À¾Ì, EnG  –Ï3\»ÕæôVgp½:€Áù7G ìÁ³ß°…V œÒò7ñ§9Å“SèŽÕSwUýy.÷q6öM€ápC°÷V„õª:n#âÂLœÈ[ĵº-aù¬ËóØ·†Ã À®>r$@ nGà>V·"xž¡V·%ÜVuüÿ5ö=€þsC°+¹  ªã<"¾Û‰#{]ÝŠàÏéžÉé3Hø¿«  · À®f„"·#plÏé3Fx³|?­ž×¸]…%½$HvñšS¼XŠ Ëò7êÿ–SÜY¼ÿVÿ»ŒžÇ¾ÐO‚`nG€‚ªŽëˆ¸²G°ŒnsŠ{cGNñžÓg”ð0ö-€þ$ÛZ~øò.9”ùMuŽay­ÿ¥[k†+§Ï›Vþ>ö€~$Ûš/kÓzP41ö¸ºÁŸÉ·zŠãocßèA°-W‚CAUþFó™8 ‡œb"FÕ“¢  À69Å“å hj"èau?##JúBlcf5X¯ªã2"nÌÄü]Œ0n¢  À6<×ew6â@þ–“Ÿ/D @÷ €M=x«Z™˜‰øÛê#4|%]&H65·¬WÕŸ1Â…™Ø31_%]%H6±ÈI-xÛŸ}#°–(è"A° à ªã2"¾Ù‰=#Њ(èA° Ä lb#öè?ÅlB”t‰ hë1§x³Ý™ˆ=yÈ)fÆdS¢ + @[sKÁzU·qa&ö`#L ɶD @€6>\­ø€Ì>¼ºiƒ}%§&HÚ#@AUÇyDLìÄŽq›S¼’}%§$HÚð†9”-c„3;±ƒåÏ‘}%§"HJžsŠ7+A‘+öÙÕ]NñbEA”œ‚ (ñ\Tu\GÄ•ØÁÃêƒ1Œ(86A°Îòúð¹… hj"vðê† ŽE”“ Xgî-shEÀ¶–á×ÔŸµ“(8A°ÎÌ:°^UÆgfbKå/ÆãØD À1€&¯>’A+nG`[Ï9 ¿8Qph‚ É½e`½ªŽËˆ¸1[ø³Ð¢à @A”ù Ì¶f9Å›õèQp(‚à+9Å»e HÀ6–Oâüe9ºD”‚ øŠÛ  ªcvb wF£‹D À¾ €ß-rŠ'«@ÑÄDláÁŸ±t™(Ø'Að»™E`½ªŽóˆøn&6ô᩺O”ì‹ øÝÜ"P45[˜åo†£D À>€Ÿ=úX­Ü™‰ }¸†¾%»$?»·¬WÕqfbCËÛÞF߈€]€9y®Zp;›r;½&J¶%H~#@AUÇyDLìĆ܎@m€üö.”-c„3;±·#0¢`S‚`é9§x³y®MÝ»!%›$K÷V€õª:.#âÊLlÈí Ž(hK|¬>,ë¹M=º}†¡%m1´3µòç+ƒ&JJ €fPPÕŸ1™ØÀ"§˜Œ¡%ë`Ü^sŠ—±-LŒÄ†Ä^Œ†(h"H€q›}(©ê¸Œˆo†bC‚FE”|Eãõá:qhaj$6´¼}æÍhŒ(ø ÆkžS¼;($°)·#0Z¢àg‚/Ï5@AUÇmD\؉ ¹}†Q%?`œ9Å‹³‡"·#°)Ï5€(X$À8¹ ª:Î#â»ØÛ`E”`œ¼oenG`‚ø‰(ÆMãóS¼;w($°©ÏáÀŸD 0^‚¿½ U×qe'6ôd0øš(ÆIã²ÈI-܉-` QŒ ÆåÞyÃzUç11[$@(ÆEã"H€²eŒpf'6ô‘S¼ ÊD 0‚ÇœâÍyCÑÔDlAŒ%À8`<ÜŽU—qc'¶à¹Ø(†Oã°¼J|èÎDlÉ °Q › ÆÁíÐÎÄNlÉ“8°%Q — Æaæœa½ªþŒ.ÌÄ6rrCìB”Ã$H€á{ÎÉoîB S#±¥WÃÁîD 0<‚>Ï5@AUÇeD|³[z7ì‡(†EÃösg E±ƒ'ãÁþˆ`8 0lóœüæ.´pg$€î%À0`ØfÎ֫금 3±7$Àˆ ÿ 0\¯9ŋ󅢩‰ºI”ý&H€ár;TuœGÄw;±#OãÀ‰ ¿ 0\sg E±+·ÑÀበŸ 0L9ù]háÎHý J€þ$À0Ý;WX¯ªã:"®ÌТèA Ï"§xr®Päv€%@`xfÎZ™˜‰=x5"Ÿ(úAÃã¹(¨ê˜Fę؃w#Âiˆ û 0,9ù8-LТè6A ‹Û  ªã2"nì0 ¢è.A Ç"§˜;O(r;ÀÀˆ › 0nG€v ìÓµ5¡D Ð=‚ATuL"âÂNìÑ™1¡;D Ð-‚†çœâÍYB‘ÛN”Ý!H€ap;TuœGÄ7; Ÿ(ºAý÷±úKw`=·#Œˆ(NOý'F€vîìÄ!TuܺI”§%H€þ›9CXoõÁøÂLã#J€Ó$@¿½æoΊ<×À!]ZºM”§!H€~s;TuœGÄÄN z@”Ç'H€þúˆˆ¹óƒ¢eŒpf&èܸТ8.Aô×<§xw~Ptg"ìÚÀТ8Aô—ç  ª?¯Ò¿²æÉèQ‡ úi‘S¼8;(r;ÇpaeèQž úÉíÐÎÔNCUÇ­¡¡D pX‚è§{çëUõgŒpf&ŽÄ³ ÐS¢8AôÏCNñîÜ hb"ŽèÚØÐ_¢8 AôÛ  ª?[ý›8"Aôœ(öOý²È)žœMMÄ‘ÝúO”û%H€~q;´#Hàèª:n­ý'J€ý$@¿  ªcvâ 0¢ØAôÇcNñæ¼ hb"ND"J€Ý  ?ÜŽUçñÝNœÈáaXD °AôÃGN1wVP45§TÕnI€¡%Àö ÐnG€vîìĉy2H”Û$@?Ìœ¬WÕqfâÄ 0P¢Øœ ºï9§xsNPävºà¢ªãÒIÀ0‰`3‚è>Ï5@AUǹßL§Cü,€‰ =AtÛÇê/½õ–€ÏlDGL ›(Ú$@·Í´â0]råÙ>Q”  ÛfÎÖ[}ø½1sç@`øD °ž ºë5§xq>PäÃ/]4q*0¢h&H€îr;´ã¹ºè¢ªãÖÉÀ8ˆàk‚覈˜;X¯ª? ýÌLt”XFD”$@7ÍsŠwgE>øÒeß«:.Œ‡(~%H€nºw.°ÞêCï73Ñq¢™U”ðV7^À¨  {9Å“s"zéƒ;§ã“S¼DÄ­(€±$@÷Ìœ ´"H ΪÚÏ*Œ‘( ÐEžk€‚ªþüÀsa'zâ/ã$J`ì Ð-9Å»3"¿qNŸ\¸%ÆK”À˜  [ÜŽUçñÝNôŒ[`ÄD Œ• ºc‘SÌMLD¹%FN”À  ;ÜŽíÜÙ‰žrKŒœ(€±$@w  ªã:"®ìDO¹%%0*‚è†ÇœâÍY@‘Ûè»YUǹS„q%0‚膹s€V&f¢ç΄5@ˆ AœÞGNžk€’ÕU÷g†bþ«ªãÒA¢†N§'F€v¼½Ïø³ø$J`È pz3gë­~›üÆL ÈMU{‚øQC%H€ÓzÍ)ÞœysŸ!º¯ê8w²@ˆ(Aœ–Û ¿IÎyºø™(€¡$Àé,ÿ¢ynXou­ý…™¨ožn~&J`H p:óœâÝþP45çéࢆB§ã¹(¨ê¸\þ¹¸37æ¿%0‚8×Õ_2ë¹Êž±¸©ê¸sÚÀÏD ô NãÞîЊ´ŒÉÿ«ê¸vâÀÏD ô™ NCUýùñåÂNŒÌ¼ªãÜ¡?%o°® IDATÐW‚8¾‡œâÝîP45#´Œpæø(€>$Àñ¹ V¿!>±#uSÕ1søÀïD ô Žk‘S<ÙŠ–1™™±ÿ¨j·„%Ð'‚8.·#@;wv‚øŸªþüèð Q}!H€ã$@AUÇuD\Ù >ÍWÿ™ø…(€>$Àñ<æoö†"×Ôÿ,Ÿ.yªê¸´ ð;Q]'H€ãq;´#H€_­nJ8· ð;Q]&H€ãXäs[ÃzUý#œ™ þpµº)A”üA”@W à8ÄÐŽÛ ™(h$J ‹ p3;Ãz«7òoÌk‰€F¢ºF‡÷œS¼ÙŠÜŽíˆ€F¢ºD‡wochE퉀F¢ºB‡õ‘“ Jª:&qa(؈(h$J   pXbhgb'ØŠ(h$JàÔ pX‚(X}Hýn'Øš(h$Jà” p8¯«¿Ö›Úv&J‰8AÎ̶ÐÊ™`/D @#Q§ H€ÃXþEïܶ°^UÇuD\˜ öF”4%pl‚8ŒyNñn[(r;ìŸ(h$Jà˜ p÷v…õVK'f‚ƒ%D ‹ öo‘S<ÙŠ–1™™à`D @#QÇ H€ý›ÙZñ\ž(h$JàÐ °žk€‚ªŽËÕ‡RàðD @#Q‡$H€ýzÈ)Þm EnG€ã%D Š öknOhej&8:QÐH”À!`9  ¤ª?c„3CÁIˆ€F¢öMûsoKheb&8)QÐH”À> ` PPÕqßì''J‰ØAìÇcNñfK(šš:ã3JpÀWD ìƒ öcnGhEÝrUÕnø¾&J`W‚ØÝGN>æ@IU~и0tÎwQÐD”À. °;q ·#@w‰€F¢¶%H€ÝÍlëUuœ/?xš :M”4%° Aìæ9§x³!¹úA”4%°)AìÆGhGý!J‰Ø„ ¶·üKعý`½ªŽëˆ¸2ôŠ(h$J -AložS¼ÛŠîL½$J‰hCÛ›ÙÖ«ê8ˆ‰™ ·D @#Q%‚ØÎëê/`õ–1™ ×D @#Që`;>Ì@;S;Á ˆ€F¢š`;>Ê@AUÇeDÜØ C”4%ðAlî!§x·Ý™G”4%ð;Al·hgb'$QÐH”ÀÏ °™ENñd3X¯ª?c„ 3Á`‰€F¢~$Àffö‚V¦f‚Á%D „ 667¬WÕqßÌ£ J‰$@{9Å›½ hb"QÐH”0n‚hÏÇhçÎN0:¢ ‘(`¼ ÐÎ"'Ï5@IU~l¸0Œ’(h$J'A´ã ´3µŒš(h$JA´ãã Tuœ/?FÚ FO”4%Œ‹ ÊžsŠ7;AÑÄDÀŠ(h$JA”ù íÜÙ ø‰(h$JA¬÷‘“)PRÕqW†~#J‰†Oëùˆí¸h"J‰†Mëù€íLì¬!J‰†KÍ^W9 ¬QÕ1ˆ3¢ ‘(`˜ Ðlfhej& %QÐH”0<‚øÚò/Aç¶õª:.#âÆLÀD @#QÀ°àkóœâÝ6Päv`¢ ‘(`8 ð5Ï5@;‚`[¢ ‘(` ð§Åê/@5ª:&qa#`¢ ‘( ÿ ð'·#@;nGöA”4%ô› þä£TuœGÄ7;{"J‰úK¿zÈ)ÞmEnGöM”4%ô“ øÿìÝÍqÛH߯á?ªÞ½””œ˜y6ؾŒO\cóÈPHHˆ˜à”8œ±ýX›?ÐÝׯ§\#àføÝÂdf&àD ÀV¢€üà§eß `—¦]¿¸2p$¯QÂ7ão%äE?ùE&¤ñ¹àØþjZÿÖo%äC? `‡¦Ëˆ˜Ø 8ÿˆ€mD y$Àßîû.^l;½ÆfND”l%J?AüÍíff'àÄD ÀV¢€q$@ĪïbaÖ´q7fÎ@”l%J/A¸R¹8'Q°•(`œ 1·$ñ"87Q°•(`| Ôî±ïâ¥ö`—Í À C# J¶%Œ‹ €Úù\¤™Ø Q°•(`< ÔlÕw‚Ø¥iã:"n ŒŒ(ØJ”0‚j¶púÄ ?`¬D ÀV¢€ó$P³¹Ó‡$^öc&J¶%œ— €Z=oNš6&qe#`äD ÀV¢€ó$P+·#@š‰€Lˆ€­D ç!H V 'Ú6.#â«™€Œˆ€­D §'H Fßû.~8yØÉK= G¢`+QÀi ¨ÑS‡$33™%[‰NG@m–}N†5m|Šˆ+3%[‰NC@mæN’¸((ØJ”p|‚jãs °CÓÆeDLìB”l%J8.A5¹ï»øáÄa§×áÂL@AD ÀV¢€ã$P·#@/퀉€­D Ç!H ˾‹…Ó†aM×ñÙL@¡D ÀV¢€Ã$P ·#@š™€Â‰€­D ‡%H ‚Hã%PQ°•(àp Ôà±ïâÅIð¦ID\˜ ¨„(ØJ”p‚jàvHãÅPQ°Õ/Q³•ÞG@éV}'H€]š6®#âÖP@…D ÀV¢€$P:1¤ñ2¨™(تïâ‡(à} ”nî„!‰q@íD ÀV¢€÷$P²ç¾‹' ÚvýpýÊL¢`;QÀþ ”ÌíÆË7€ŸD ÀV¢€ý(Õ*"N†5m\FÄW3üF”l%JH'H T‹ÍƒB`ØÄ>o%[‰Ò(•Ï5@š™¶%[‰v$P¢eßÅ““…aMŸ"âÆLƒD ÀV¢€a‚JävHãv€4¢`+QÀv‚JtçT!ÉÄLÉþ³¹Yࢀ· (Í÷ÍÃ@`Àæ—¾6ØËƒ(ØF”ð'A¥q;¤qõ8Àþ.D ÀQÀï ”dÙwñàDaXÓÆuD|6À»ˆ€A¢€Ÿ ”Äíff'€%ƒD $PA¤™Ø àÃD À Q€ €rÜ÷]¼8OÖ´ëáÊL!J‰€Ú (…Û ÍÔN%J‰€š (Á²ïbá$aXÓÆuDÜš ààD À QP+A%#@š‰ŽF” %5$P‚¹S„$33•($Jj#H w}/N†5íúÁ÷•™ŽN” %5$»;'I¦f8Q0H”ÔB@ÎV}'H€]š6.#bb(€“%ƒD @  äláô Édób €Ó%ƒD @é älîô ÉÌLg#J‰€’ ÈÕsßœӃa›`7f8+Q0H””J@®ÜŽi¦vQ0H””H@ŽV±prD0¢`(( €-6ê€M»Ž.l0*¢`((‰ €Ý95Hâv€q%ƒD @) äfÙwñàÔ`XÓÆuD|6Àh‰€A¢ ‚r3wbÄíã'J‰€Ü ÈÏ5@A@D À Q3A9¹ß<Œ4mL"âÊFÙ%ƒD @® äÄífb'€ìˆ€A¢ G‚r±ì»X8-Ö´q_Í%Q0H”äF@.ÜŽi¦vÈš($Jr"H ‚H3³@öD À Q A9¸ï»xqR0lóâêÊLE%ƒD @ ä`á” ‰ÛÊ"J‰€±$0v«¾ó¹Ø¥iã2"&†(Ž($JÆLÀ؉ ÍdóÒ €òˆ€A¢`¬ ŒÝÜ AŸk(›($JÆHÀ˜=÷]¼8!Ö´q7f(ž($JÆFÀ˜¹Ò¸ ¢`(AcµŠˆ…Ó$S3TE” %c!H`¬›‡hÀ€¦]Ç6¨Ž($JÆ@ÀXù\¤™Ø  Z¯QÂ]ÓÆ¥ÿ€·ˆ€s$0FÏ}ON†5m\GÄ­™ªv³¹)A”¼I”œ“ €1ºs*dj&D À.¢à\ Œ‘ Òø‡($JÎAÀØ|ß<(4íúaò•ø…($JNMÀظÒ¸€·ˆ€A¢à” ŒÉ²ïâÁ‰À°ÍK¦¯f` Q0H”œŠ €1™; Hâvv%ƒD À)“…Ó€$‚Rˆ€A¢àØ ŒÅ}ßŋӀaMŸ6/˜ …($JŽIÀXÜ9 H23{%ƒD À±ƒeßù\ì²y‘41ï J‰€c$0bHó#\Ø €w%ƒD À¡ ƒ¹S€$S3ðA¢`(8$AçöØwñâ`XÓÆuD|6 J‰€C$pnwN’ÌÌÀ‰€A¢à œÓªï hb(L” %%HàœÄ i×1•­8Q0H”|„ €s$@š©8"Q0H”¼— €syî»x²> kÚ¸Žˆ[3pd¢`(xAç2·<$™˜ €%ƒD À¾ œÃ*"–‡$33pB¢`(؇ €sXlbšvý ÷ÊFœ˜($JR 8‡;«C’©™8Q0H”¤$pj˾‹«Ã°Í  ¯fàŒD À Q°‹ €S›[’LÌÀˆ€A¢`ˆ €Só¹H3³#!J‰€m œÒ÷̓*`@ÓÆ§ÍË Q0H”¼EÀ)-¬ IÜŽÀ‰€A¢à¿ 8•eß  ÑÄPŒ”($J~%HàTî, »5mL#âÂTŒ˜($Jþ!HàT fj'2 J‰€$p"÷}/ƆaM×ñÙLdB” %‚NÁíÆíäF” %@Ý ÛªïbaeH"H G¢`(ê%HàØÜŽ š6&qe+2%J‰ N‚ŽmnaHâvr'J‰ >‚Žé±ïâÅÂ0lóâæÖL`%8H`QÔEÀ1ù\¤q;%¹iZÿl'J€z8–UD,¬ Iff 0_E ÀQÔAÀ±,6˜€M»~{e# $J‰ |‚ŽenYHâs ”L” %@Ù ÃsßÅ“eaXÓÆeDLÌ@áD À Q”KÀ1¸Ò¼Æ¶ ¢`(Ê$HàV…$33PQ0H”å$phß7‘€M×qc#*#J‰ ,‚ÍfHãvj%J‰ ‚iÙwñ`QH25%ƒD PA‡4·&ìÖ´ëáÂTTN” %@þ Òšdb&X%ƒD 7A‡rßwñbMÖ´q·f€‰€A¢È— €CñÒLí%ƒD 'A‡°ì;Ÿk€D‚x›($J€ü8Ž!AÓÆ$"®l[‰€A¢È‹ €CðÐÒLì;‰€A¢ȇ €zì»x±" kÚ¸|}Áb&H"J‰ ‚>ʃbH3µìE” %Àø øˆUßyH ‰ °?Q0H”ã&Hà#<†MŸ"âÆVð.¢`(ÆKÀGx0 ifv€%ƒD 0N‚Þë¹ïâÉz0¬iã2"&f€%ƒD 0>‚Þkn9Hò#\˜ B” %À¸xUD,,I¦f€ƒ%ƒD 0‚Þc±yÀ hÚ¸ŽˆÏ6€ƒ%ƒD 0‚ÞÃç ÍÌNp4¢`(ÎOÀ¾–}OVƒ$>×Ç%J‰à¼ ìËí ic¶€£%ƒ~‰-§%H`_öB·#À鈀A¯QBß­£„{KÀéØÇ÷Í/K€M×qk#8)Qbêó p:‚öá/¤q;œ‡(ôËçD p‚R-û.¬I p>¢`(NG@*u!AÓ®l^Ù ÎJ” %ÀiHå.¤q;Œƒ(ôK”°²‡ €÷}/–‚aM—¯/?Ì£!J‰à¸ ¤ðÒLì£#Jõ]EÄ­`´þjÚ˜:`›¾[ÿýûÿ ‡#H`—¹… ‰Û`üþ#J†ôÝú6•ïF€Ã$0ä±ïâÅBdb&È‚(Øå56~¶|œ €!>× 6/5.lÙ%[õ]üØÇ++ÀÇØfµù~&°›Q°Õæ¶@· À ØfaØ­iã:">› ²$J¶ê»xˆˆÿµ¼Ÿ €mæ–$33@ÖD ÀV}·þÛøÞBð>‚ÞòÜwñdHâWÈŸ(òúïÃÒB°?Aoq;$hÚuŒpe+(‚(xSßÅ!2¼ €·,¬I¼´€²ˆ€7mnü_ëÀ~ ü·ï›_š6.#âÖFPQð¦¾[ß&øhH'Hà¿ÝY’xQå%Û¼þÛ°²¤$ð«eßŃE ÉÌLP4Qð‡¾‹q2¤$ð«¹5`·¦/qe*(ž(øCßÅ""î-» ø•Ï5@/& ¢à->Ý  üã¾ïâ‡5`XÓÆeDLÌU%¿ÙüýìߨAÀ?ÜŽi^c„ [@uD Ào6Ÿnx´ l'HàÕró Ømf#¨–(øo>Ý „Û MÓÆ§ˆ¸1TM”ü«ïâ%"¾YÞ&H  ÌË D À¯ú.æñlø“ €ÇÍ/:€Ý¼xþ!J~åÓnðAnG€›¶~!JÖú."â»5àw‚€º­úN‰¼lÞ"JþñíõïlkÀO‚€º‰ AÓÆuD|¶°…(ˆÍçç–€Ÿ uó ÒxÁì"JbówöÒð7A@½ž7¿ÞvórH!J€Êõ]üØ|ºª‚€ª¹4mL"âÊV@"QT®ïÖŸGtKÕ A@µV±püdb&`O¢`VýT/ ÕZl®‘4m\FÄWï J€ŠõÝúGþ v‚€:ù\¤ñøQÔí[í€  >Ï}OÎ’¸fø(QTªïâÁ- ÔNPŸ;g»5m|Šˆ+S J€z¹%€ª ê#H€4nGI”rKµ$Ôå{ßÅgÚ6.#bb&àÀD P'?  Z‚€ºxi^c„ [G J€ÊôÝúoñ¥s F‚€z,7WE»ù\pL¢¨Ï7g@ õp;$hÚ¸Žˆ[G&J€ŠlnIX9sj#H¨‡ Ò¸8•×(ᓵ¡sG @m u¸ï»xqÖÄ/€Sz%@5 TGP·#@‚¦ID\Ø 8¡ QÔ¡ïâGD|wÜÔDP¾eßÅÂ9C·#ç J€zøÁU$”OŒ š6®#âÖVÀ™ˆ }ñ쬨…  |¾Q iÜŽœ›(êàïtª!H(ÛcßÅ‹3†$‚` D P>7P A@Ù|›4m|‰ˆ+[#!J€‚õ]üˆˆï΀ʵê;A$r;06¢(›[¨‚  \n@‚¦Ëˆøj+`„D P¨¾[ÿ;t¾”NP®¹³…$nGÆL”åòCŠ'H(ÓsßÅ“³…$‚`ìD P&ŸY x‚€2¹lêߨ È€( ³ù!Ï6P4A@yV®}„d3S%@yüý@Ñ åYô]üp®0¬iã2"&f2#J€²ølE$”Çà H3Ù<ÐÈ( á³ ”NP–eßŃ3…$S3%@9|¶€b Ê2wž°[ÓÆuD|69Q”ÁM‡KP1 ÍÌN@!D ¹ÍgV΀ Êñ½ïâ‡ó„$3%@þ|¶€" Êáá$hÚuŒpe+ 0¢ÈÛƒó D‚€2,ûN‰¦† %J€|ù›€" Êpça·¦ëˆ¸5P0Qdhó Ægg@i e$@š‰€ ˆ O>Û@q ù»ï»xqŽdf& ¢È €âòç;“ iãKD\Ù ¨ˆ(ò"H 8‚€¼­úÎç ÑÔP@…D ‰¾‹ñì¼(‰  obHдq_mTJ”ùpKE$ämîü ÉÄL@åD AE$äë±ïâÅùA’™™D '‡@I ùò¹H°yà~c+€5QŒØæ‡Kg@) yZEÄÂÙA’©™~#J€qsKÅ$äiÑwñÃÙAAÀŸD 0^‚Š!HÈÓܹÁnM»Ž.Lð&QŒÓƒs ‚€ü<÷_K@"·# %Àøø›€bòsçÌ`·¦ëˆøl*€D 0"›O4®œ %$äGiÜŽN”ãâ–Š HÈË÷Í/%€Ý û%Àx(‚  /nG€M“ˆ¸²ÀÞ^£„»¦KÓÁY½˜€ò±ì»xp^Äíïw³¹)A”çㆊ HÈÇÜYÁn›ç·¦øQœ— €"ò±pVÄí‡!J€3黸a{J HÈÃ}ßù~$$š à`D p>¶ w‚€<Ü9'Ø­iãKD\™ à D ¼‹ `ü–}çs [ñ¦Ñ IDATÈçŽC”§÷`sr'H?1$Ø<ŸØ àhD ìE0~sgI^c„ S•(NçÉÖäN0n}/Î’ÌÌp¢8v w‚€q»s>°[ÓÆõæÁ8§!J€ãó²'H¯Uß  ‘ÛNO”GäÆDJ H/1¤›Ú à,D l%H/A$hÚuŒpa+€³%Àñ,m @Î ãôÜwñäl ÉÄLg'J€ãðÙ²&H§¹sÝš6®#âÖT£ Jà7‚€ñYEĹ@’©™FE”À¿ ã³è»øá\ ‰ `|D p8>Ù@Ö ããs  icW¶%Q† €¬ ÆeÙwñäL ÉÄL£&J¨œ `\ÜŽ 6µ¿Ú `ôD $ŒËó€$S3dC”P)AÀx|ï»øá< ‰  /¢€ Æcá,`·¦O›ÚäE”PAÀ8,ûN‰f†ÈÖu„  ‚€q¸s°Ûæ×tSdi_ú.^@ ã H€4¯1Â…­²óOŒðäèê!H8¿{¿‚dSSdGŒP)AÀù¹4íú{ßm1@Å çµê»X8H23@VÄ•$œ—Û Ï5äCŒ€ àÌævkÚ˜DÄ…©² F`Mp>}/ö‡$nGȃ€ ÎÇç AÓÆuDÜÚ `ôÄpx×6 g‚€óx}P·°=$q;Àø‰à8 dMp‹¾‹¶‡$‚€q#ð&AÀyÌí»5m|‰ˆ+SŒ–€­ §÷ìa$s;Àx‰àø>Ù€œ NÏí iã2"¾Ú `”Äpv g‚€Ó[Ø’LÌ0Jb’Në{ßÅ›C’™™FGŒ'Ò´>×@þ §ugoØmóàíÆT£"F€Óº´7¹$œÎ²ïâÁÞÄíã"F€Ó$=AÀéÌm É&¦ 1œ‡O6=AÀé,l »5mL#âÂT£ FàÝ §qßwñbkH25À(ˆ༾Ø€Ü NãÎΰ[ÓÆuD|6ÀÙ‰àü.¹$ß²ï|®Í pvb‡ç@î ÇçvH7±ÀY‰`6·Ç@ö Ç'H€M»Ž®lp6bAE$×cßÅ‹!ÉÔLg#F€qùä<( à¸ÜŽ š6.#âÖVg!F€ñqCE$Ϫï Èíç!F€qrCE$ÒÍlprb/AE$Ïܶ°[ÓÆ—ˆ¸2ÀI‰`¤švý¹† ç@  ÇñÜwñb[Hâs §%F€q»v>”BpnG€M—1±ÀɈ`ü¾8#J!H8¼×| »B’‰«HNFŒyøäœ(… àð}?ì Iff8 1äà Cpx>× švý«Ÿ[2Ñ´qí9J"H8¬¥‡|lj*€£#@^|®€¢ËíNp\ÏbÈŽÏ5P”ÿqœugNØ­i×1‚kHŽçŸá‡!+‚Šâ†€Ãùîa$s;Àñˆ CM—qãì(‰ àpÜŽ š6®#â³­ŽBŒùr;Å$ƲïâÁ–ÄíÇ!F€¼ (Ž à0ÜŽé ‡'F€ü (Ž à0  icW¶8(1dnói»ç@i wßwñbGH21ÀA‰  nG H‚€s;$hÚ¸Œˆ¯¶81”C@‘ ³ê»XØ’LÍp0b(‹Ûä(’ àcÜŽéf¶81¤i×·#\8SJ$Hø˜¹ý`·¦Oqe*€#@yÜŽ@± ï÷Øwñb?Hâv€#@™ Kð~>× š6.=`ø01Èmr”Nð>«¾$@¢‰ï¡|ˆÊ5u¶”Lð> »A2Ÿkx?1”ÍmrMð>s»ÁnM×qc*€w#@Á|®€ö÷Üwñd7Hâv€÷#@ù|®€â öçvHçÀþÄP/PÕðÍJ0LÔNŒéÜŽÔ@Œ¤ð©H Hj7¯}H±ùõ«H€Ò‰€|ªÒ €š=ö]¼ø/’¸(ØÉ§`?‚ fwN’ €’‰€T Ÿj€t‚ V«¾$@ЦID\ (”HÒ´ë›n¬é @­ÄÎí@©Ä@’¦/ñ—µ`?‚ V‚Hдq·¶ $F’lþ.ZX ö'HjôÜwñää!‰Û€‰€}¼Æ€ý €Í:$›™ (ŒHÖ´ñ-">[ ÞGÔfåšEH³ùFꕹ€‚ˆ€dM“ˆøËbð~‚ 6 !™Ï5%#Éš6®#âÎbð1‚ 6&@‚¦Ëˆõ¯J F’mþz½]ñÂjð1‚ &˾‹'I&¾…#ûzý1ÃÕàã @MæN’ÍL@Œì¥i×Ïn­‡!Hjâs `ó­T¿r'FöÒ´1ˆÿk58AP‹ïDB2·#¹#{iÚøÿ±– ¨ÅÂIC²©©€Œ‰€½4m|òÜŽCÔ`Ùw,@ŠÍ¥Æ2%Fö²‰üÇ!Hjpç”!ÙÄT@¦ÄÀ^š6.7Ï Äp$‚ ‚Hдq·¶2$Fö²‰^oF¸± (Ý}ßÅ‹S†$S3#{#Àé€Ò-œ0$$¹#{#Ài €’­úÎç EÓÆ$"®ŒdDŒìEŒ§'HJ&F€t[#{#Ày€’Í.ì¶y0÷ÕT@&ÄÀ^Äp>‚ T}/N’LÍdBŒìEŒç%HJås Nä@ŒìEŒç'HJ´Šˆ…“…Ýš6>y8d@ŒìEŒã HJ´ð ’ÍLŒœØ‹ÆC”hîTa·ÍCº‰©€#{#À¸€Ò<÷]<9UHò#\˜ )1°1Œ (Í…dSS#%Fö"F€q$¥$@‚¦ëˆøl+`„ÄÀ^Ä0^‚ $ß=´„d3S#$Fö"F€q$%q;¤ó¹`lÄÀ^Ä0~‚ ˾[?„vhÚ˜DÄ…€#{#@ @)æN’¹1°1äC”bá$a·¦ëˆ¸50b`/bÈ‹ (Á}ßÅ‹“„$nGÆBŒìEŒù$%¸sŠLŒØ‹ò$Hr·ì;Ÿk€M_"âÊXÀ™‰€½ˆ _‚ wnG€tnGÎMŒì¥iã“òõ?ÎÈœ l~QôÕVÀ‰€½ü#\Xòä† g}/N’LÌœ‘Ø‹Ê HrævH7³p&b`/b(‡ ÈÕªï bó0Ï÷V€s#{#@Y @®ÄÎíÀ9ˆ€½ˆ <‚ W‚H7±pbb`/b(“ ÈÑsßÅ““ƒÝš6¦è'&Fö"F€r €Í$›š 8!1°1”Mäf §»5m\GÄgS'"Fö"F€ò €Ü,<à„d3S'"Fö"F€:€Üø\¤›Ø 81°1ÔCädÙwñäÄ`·¦]ÇW¦ŽLŒìEŒu$9q;¤›Ú 821°1ÔGääÎiÁnM—qk*àˆÄÀ^ÄP'A‹ïvB2·#Ç$Fö"F€z €\,œ$›™ 81°1ÔMä`Ùw‚HÑ´ñ%"®ŒØ‹$9¸sJÌç€c#{#!H2!H€M—1±ÿŸ½»¹ŽÍ4|1'÷¤¤¤¤ ÄÙ`[1”Æ‚âl±I¦² $ в`HH 0'"¡J)õdüàûð<çèT÷®û^u'xy;&FF#_€©ûÐwñhK²ðÀØ110Šøš ˜:× oiVÀ‰€QÄÀß €){é»XÙl7<ø»0*`GÄÀ(bàG À”¹Žy·fìÈ'10†ø™ßL˜°;Ë4A° ôŸ+€¼¦Åð bà;.$Sõ©ïâÑv`»¦Ý¼4ððx+10Êðï"ÿ׿?#H¦Êç Ï‹à­ÄÀ(CŒð»©¿"H¦è%"V6Û5mœGÄ•Qo FF#Y‚`ŠV}Ï6)^o!FF#c€)º³Hóx-10ŠKLÍ羋[íš6qfTÀ+ˆ€QÄÀk€©qòf¼‚EŒ¼– ˜š•ÀvM§ñΨ€‘ÄÀ(bà- À”¬Ž>Û¤x‘Œ%FF#o%H¦äÞ6 miTÀb`1° ‚`*žú.>Úl×´qgF$‰€QÄÀ®€©¸³ HsÈ#£ˆ€]$Sás дq ³ÄÀ(b`× À|è»x¶ HYÇ'Fl!FF#û H¦ÀuÈó¹`10ŠØAplO}+[€íš6Î#⨀_#£ˆ€}$Çæ:乎üŠEŒì› 86AäyÁüŒEŒ‚ 8¦O}6Û5m,"âĨ€#£ˆ€C$Çä:äyÉüˆEŒ’ 8–—¾$@FÓÆyDÜð7b`1ph‚àXÄçEðwb`1p ‚àXîLÒ¼l¾&FF#Ç"HŽásßÅ£ÉÃvM×qfTÀ@ŒŒÒ´±#Çò›ÉGà:äyá|!FFiÚÍçß™p,.$‡ö+S‡íš6N=<b`10‚àÐV}Ϧ)^:!FÆ#S!HÍç Ï‹@ŒŒ"F¦DÒSßщÃvM—qaT0kb`105‚à\G€¼¥YÀ¬‰€QÄÀ €Cº7mØ®iã4"F³%FF#S%HeýPõÙ´!e#œÌ’EŒL™ 8× ÏK˜'10Š˜:ApO}M¶kÚ8ˆ+£€Ù#£ˆ€€Cpò–f³#FF#¥$‡ H€¼…YÀ¬ˆ€QÄ@I À¾}è»x4eØ®i71™QÀlˆ€QÄ@i À¾¹Žy^HÀ|ˆ€QÄ@‰ À>=õ]¬L¶kÚ8ˆ£€Y#£ˆ€R €}#@Þ¬`ÄÀ(b d‚`ŸîLÒ–FÕ#£ˆ€Ò €}ùÔwñhº°]ÓÆuDœTMŒŒ"Fj HöåÞd!ÍË ¨›EŒÔBìÃKß  £iãÔƒF¨šEŒÔDìÃÊT!maTP-10Ѝ ؇;S…´¥Q@•ÄÀ(b F‚`×>÷]<˜*l×´qFÕ#£ˆ€Zýf³À޹Žy^T@}Ä@ZÓÆéðïÑb J‚`—^"be¢æeÔEŒ¤ 1ÂGWÓ€šùd°K«¾‹g…íšvó²âĨ b MŒÌ… Ø¥{Ó„4/, b MŒÌ‰ Ø•§¾Ûô]<›$l×´±ˆˆ3£€¢‰€410g‚`\G€ÈhÚ8ˆ+À#ib€ò`ÞVsŒ°4,Ø)1&F(“ æë¥ï|®FXìŒH#”Kó%F€¤¦ÝÄgæ;!FÒÄe$À|ÝÙ=¤yi»!FÒÄå$À<}ê»x´{Ø®iã4"nŒ ÞLŒ¤‰ê H€yò¹ÈóâÞNŒ¤‰ê!H€ùy‰ˆ•½CÚÒ¨àMÄ@š .‚˜ŸUßų½ÃvM×qfTðjb MŒPAÌÏCš(ðzb MŒP'AÌË羋;‡íš6N#baTð*b MŒP/A̋뷎NÌ F#ib€º `^Vö iK£€ÑÄ@š ~‚˜õÃágû†íš6.#â¨`1&F˜AÌǽ]Cš—)0Îÿ#Yb€ùøÍ®`žú.>Z5¤y¡yÿ³ïį@Ž`^\H€y¸³gÈž¤ˆ€41Àü`Vö i £€1&F˜'AÔïCßÅ£=ÃvMçqcT°•H#Ì— êçA1äÝšl%FÒÄóöÛÜ•{ê;Ÿk€ ðkb ­i7ÿÿâ‰Ì— P7‹!©icgæ?%FÒÄ„ ªç1ä-Ì ~JŒ¤‰øBõúÔwñh¿°]ÓÆ©¦ðSb MŒÀ× P/!ïÖ¬à‡Ä@š€¿$@^<8†Q–Æß#ib~Duòà’š6.#â̼àb MŒÀÏ NCžëð-1&FàW PŸÏ}ö Û5mœFĨà¿Ä@š€m PŸ;;…´uŒpb\°!FÒÄd .!h[Ä IDAT/±²SHó¹ø“H#%H€º¬ú.ží¶kÚ8ˆ £1'F` AÔÅç Ïu##ˆKõxê»x°OH»5*fNŒ¤‰x AÔÃuHjÚXDĉy0cb MŒÀk  (CžëÌ™H#ð‚¨Ã}Ïv Û5mœGÄQ0Sb MŒÀ[  *CžëÌ•H#° ‚(ßSßÅG{„4As$FÒÄìŠ ÊçÁ2$5m\GÄ™y03b MŒÀ.  |.CžëÌH#°k‚(Û‡¾‹G;„íš6N=\`fÄ@š€}$@Ù<`†<ט1&F`_ P®—¾‹•ýAš €¹#iböé7Ó€byÈ IM—qa^Ì€H>i¶ŽÜ¯L €}$@¹îìÒ–FÀ ˆ€”!Fø(Ú`ß|²Êô©ïâÑî maTTNŒ¤ˆ8$A”ÉÃfHjÚ¸ˆó bb EŒÀ¡  ¯¯#Xð+bJ'H€iº³Hs€Ýö]<Ûð3M—›Oºˆ(ÖoV“ó¹ïâÑZ M@iþwßm^2üÐ#¬/#œ˜%s!¦ÇuHjÚXDÄ™yPu|úÞ€Ÿ#PALËKD¬ìÒ\G 4þÙü”€Ú`ZV¾% 9M§qc\ħ€Ÿ#P#AL‹Ï5@žß0 $O~Ö~FŒ@­ 0ŸýÆŒ²4. ²t ø15$ÀtÜÛä mÏŒ €B|ê»XYðwbj'H€é$@žë”Äg†€ïˆ˜ALÃNøBNÓÆiD,Œ €B¬Î{´,àkbæBÓà:ä-<¸  ï- øš€9$Àñ=õÝæaãs ”ÂuàbæFÇç:$5mœGÄ…yP×€ÿ#0G‚8>A乎@)\GþKŒÀ\ à¸>xP £Ü…pØ#0g‚8.× ©i71‚‡¸”@t lˆ˜;AÏSßÅÊü!maTâ΢1à˜ÄÔ´q7æ@ÖÑéG‹‚y#ÀŸ p<~sònÍ €BøfNŒ$Àq|ò]aE@)îm æKŒß$ÀqxP IM‹ˆ83/ ðGßųEÁ<‰à{‚8¼—¾$À à+‹‚y#À àð<¨†¤¦Óˆxg^`ú9fHŒ?'H€Ã»3sH»5* !F€#À¯ à°>÷]<˜9¤ (… f¦i7?«Šà~38(× iøm³ ó >×33Ä¿Û;üš p8/~sFY…øhQ0bÈ$Àá¬ú.žÍ¶kÚ8ˆ…QPÑ)Ì„Æ$ÀáÜ›5¤-|‹€‚¸3 F€ñ pO}çA5ŒpkXbýsÞ£eAÝÄð:‚8Œ;s†œ¦óˆ¸2. !:…ʉàõ p>×yK³  ‚¨˜ÞFû÷¡ïâÙœ!Íç(ɃmAÄðv‚Ø?× ©ic'æ@!^úN5#Àn`¿žú.Vf i®#P1THŒ»#H€ýr’š6Î#âÆ¼(ˆ *#F€Ý$À~  oaVF#Àî `>ô]<š/¤- €ÂøY*!F€ý$Àþ¬Ìrš6®#â̸(Œ P1ì öã¥ï|®F¸5,JÓwñliP61ì— öCŒIM§ñμ(Ì' ƒ²‰`ÿ °wæ i £àÄp‚ؽO}æ iK£ @- Ê$F€Ã$Àîù\$5m\FÄ…ypb8,AìÖKD¬ÌÒ\G TÏ6e#Àá `·V}çá4Œ°0, õ`qP1‡ vëÎõ]<š¤- €ÊœZ(–Ê#H€×¹77ÈiÚ¸Œˆ ã 2— ‡#F€2 `¼—¾$À·†Àk‰ \‚OŒã¨Ñ•­Âþ‰ l‚OIM»‰NÌ €5mœZ,ìÊ'H€q>÷]<˜¤-Œ €Š]Z.ì‡ê H€qîÌ rš6Î#âÆ¸¨˜ ö@Œõ$@ÞKD¬Ì Òn €Ê[0ì–ê"H€¼UßųyAš €Ú¹;$F€ú Ïç ©icgæ@å®,vCŒu$@ÎSßŃYAÚ¨˜ƒ¦u%ÞJŒõ$@ŽëÔ´qê23"H€7#@Ý~³_H¹7&H»5*fäÚÏŠ0Þ±®ÿoçÆø ^‚Øî¾‹gs‚´¥Q0#×– ã 1ÂLj¸0:¨›O6Àv+3‚œá;ÚgÆÀŒœ5mœ[8äˆ`^ ðkO}'H€\G`Ž\I€1Ì ~Í÷€!ixÀ¼0/fH[ˆ`ž ðk‚È[Ç'æÀ òàÄ0_‚ø¹}æi>×À\4m\Ú>|OŒó&H€Ÿs’š6Î=d`ænç>ø;1 H€{é»X™ ¤¹ŽÀÜùl|EŒ„ ~ÊuÇo…0wg>Û#_àÇîÌršvó¡'Æ=#_$À÷>õ]<š ¤yùòÏDfMŒü ¾çs Ô´q7æ'Ãå ˜1ð#‚øÖKD¬ÌÒü&(|Ë?™1ð3‚øÖªïâÙL ÍKøÖÍpAfAŒüŠ ¾ugÓ´qgÆßì1 b`AüåsßŃy@š—-ðcKs¡vb Cq’†ÐïÌ ~è¤i…{ÔKŒd à/+³€4/Yà×Þ›5#càOô]<›¤ à×Î\I 6b`,AüéÞ §iãÒChHYµ#¯!H€ˆ§¾Ûô]<Ú0¤¹ŽÓ%Jà;M×b`Ê ÔÌ[HjÚ8ˆó€I%ð_M»‰Iÿ-F¦L@­^ú.V¶ i®#@D |‰~7 `ê ÔÊCZgi^PŒu”ðq¸pÄÌ4m¼#¥$P«;›…œ¦Ëˆ83.(ÊUÄ&J8·¶ù®cüsîsÊ!H FŸú.mÒ\G€2]DÄÃR±õ5Œ¦‡õu {J"H F>×Iéç…y@±N"â?M·VX§!8y€¢¨ÍKß `„Åð"(ÛïësþClH%†Ðä?>¯”J@mV6 £ø\Ôc}Îÿ£O8”oøDÃ:´þ}î³Ê&H 6w6 9MçNÿ@u.†(AtX¨¯>Ñðnî³Ê'H &ŸûnóàÈñ¢ê´þÓ¿šv&œÛq9š6ÞûDPA5¹·MåÖ¸ jWëß´w-aúš6®›vWÿsî³ê"H &‚HjÚMŒpb^P½¯¯%\Z÷´4mœ6íæ³sÿö)- F‚jñ¡ïâÙ6!maT0+ëk ÿY`ýÜêoD#âsŸP/AµXÙ$ä ß’¾1.˜¥õ'‡—áÁðy†ñ»‹U@í ÔBy^@À¼­_‚ÿÞ´›0ÁÕ¤YG¡M»ù÷–+ª'H >×〵³ˆø¿ëßÖ_ÿÖ¾‰ìÇ"ÜGÄÿs¥ ˜›ßl€ ¸ŽIÃoAž™ð•õoëÿ»iãsDÜõÝæå9o4DëôYs%H ‚Ès–ø™‹áSï×aBDÜ»D6Þ€.}–@@ù>{H 9M§~CHX_SúWD¼oÚMü»¾šð`p?·þ,Ãp áÖ5*€¿(ëwkVÀ'CÌønøœÃúS«¾‹GCüSÓn~¾Z_D¸™Âÿ<S#H tmÒ Àk] WþÕ´ñaƒWs¼V6|’áËŸ“ ü0Y‚ŠÖw‚ÈhÚ¸^$¼ÕÍðç÷¯.'|¬õ³Ã箇áZ„'H dŸlÒ–FìÁ—Ë ë÷OóC Pä§š6N‡ðàËQ'À+ (™ë0·pD‚JõRê7iášvó@þ»þuö·«~Ž(Øÿ°< å:ä,Í €c$P*Aäø\G!H T>×[4m,†ï4ÀÁ (• °ë €R¹¿Ð´q7fÀ±(Rß `‹…pL‚Jôdk°ÕÒˆ8&A%r~¡iã:"ÎÌ€c$ÔçÖN86A%z°5ø±¦Óˆxg<› €=ÛüÔÂh˜A@]–ö À*Ñ´qö À(‘O6À¹ŽÀd(у­Á-Œ€©$T iã6"N쀩$ÔáÖ˜A@áš6Î#âʘA@ù–vÀÔ(Ñ¥­Á7ÆÀÔ(Ñ©­ÁŸšv#œS#H(Û­ý0E‚€B5íæZÈý0E‚Jä“ ð'ט,A%º´5ØXS%H(PÓÆuDœÙS%H D.$€Ï50q‚JtbkÌYÓÆiD,ü%`Ê ©iãÜæ˜±…0€©$P*As¶´}¦N@©.mŽ9jÚÍßý Ë`ê ”Ê…æêÖæ( €R¹À\ (‚ €R ˜¦ÝÄ'6@  ”ê¤i}¶ÙYX9¥$P2W˜!À¹±qJ!H d×¶ÇŒÜZ6%$P2˜AE$P²+Ûcš6qfÙ”D@ÑšÖg˜……5PA¥ó¢–ª5mœFÄ;[ 4‚JçBµ»µaJ$H tMç¶HÅ–– @‰ ÔÀ•ªÔ´qg¶ @‰ Ô`a‹TÊuŠ%H 7M§6IM†¿ÓbŠ%H ^ÜR›õßé[ T‚j!H 6·6 @É ÔbýÙ†sÛ¤Ãßå+Ë d‚jâJµXÚ$¥$P/q©…Ï5P›‹TOÀœ¬ÏãßÛ8ÇÔ´±\_ì°j'H`nnš6¶Î14mœGÄ{Ã` ÌѽO7p$÷Ã¥¨ž €9Z¿^Ù<‡Ô´›Ë>ÕÀl˜««á[þ°wM—ñO“`N ÌÙ¿†Ű7ÃçA\ä`v ÌÝjxa ûrg¦ Àܘ»3¿½Î¾4m¼ˆ`Ž qÕ´qgìRÓÆmDüÓP˜+Aüéà dx³¦Ë‘ ó&H€¿ü>¼H†Wþ}ŒˆS`Î ð­¢^«iã4"îÅ H€¿;¢„S“aŒáïÌú2Â…Á€ ~D”À(bøž áÿ·w7Çq[Y†\³§2233¾Do°N–#j‹ÉFŠ`Ȇ̠̀;|…ömíÑI.€ç©ê¢Ë ÷í Îlúå9ðe¯E <†¾L_'Jà›Äðu‚ø6Q_$F€o$À÷‰ø“¦Wbø6A<ÎðÅóMÓÆ±ûZ·ò;p#F€o$Àã½,“D +Õ´ñ®LF8Zû]À÷àiŽJ”pêÞÖ¥iãCDüKŒó7÷O6|!ý[ÓÆ‹¾‹s×·lÃsŽˆ‹ˆx»ö»€§0!žïŸMå k¨¬ç¸#ÀÓ àǼ/+ŽÝã²4mœ•áõÚïžC?îu‰NÝåü /š6> 0Êzà cøâú7+æ­iã]DÜYÑ?N¹†7M'îu>LEø—©Cù^FÄ¿›6ÎMK¨_Yµa*$$ÀáüÝ´„z5m7m\ «6LE€|‚8¬ý´„ ÓêPÖ3\DÄ"âÍÚïEãx?¬hÚøà¾§QB„e=Ãû5ÞŒIãÖüÒ´»0áÔ½ã/!Â/Ö3À8þæž`tÇßJ”ð¡ïâÊ#ÈWVdœ•—F&H€é¼‰ˆ7m\ ò4m¼*©¦#H€é= .ú..<“§kÚ8)Âû¹–Hõ„7M"â¼Ä ÏçëÊZ†Ó2áe­ç€5$@}†/Öÿ9¬qhÚø4Ä }7žÓïJ„ð®¼ÞÖp&à  ^GeýÀû¦ûˆ¸*¯›µ "˜AÌÃË}œ¿A¿ÝÇ ÃϾÛýó¢4mGÄI‰Þø=€y$À<•IÃë—¦Ý}†Û(Ü”) ³ŠÇ%B8ªàXÀ3 `9^—×~ŠB”Hán?I!"65¬{(ñÁ«ì#,ˆ –m)ì&)ÄŸC…M‰âÁÏa²Â&ãFšvD‰ ^”Ÿ¯Êy€…$À:í£€7åç/û[(Á¶LUxhóàß½*¯¿2éØ$_rô Vxè­Ûã'·d$é @:AN¤$é @:AN¤$é @:AN¤$B¥ZCœIDATé @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é °N7‡üÔ‚X¡¾‹Í!?µ H'HÒ €t‡®<2X`}îý‰ °>w‡þÄ‚ Ý¡ƒ„ƒ@} °>V6éf$lüß*tÐ ¡ïâÆC€ê|À€• °>00Fp?Â{#H¸óÀ *ÿ.ßÊX™¾[Fp5Â{³ãžLH€u¹ãÓŽ$ŒòA€zŒ$lÙ$ABßÅ&"n§xoX‘ÕMHSà îû.â)ƒ„ÉÆBÀ L:(`² ¡ïLH€štPÀ”Ÿ'~XªuNH(LI€|×}›)ïuê aÒñ°P“?iÐwq·SžhÝABamä¹/&UCpQÁ`)&ŸŽ5 }7C1õ9`!ª PÄ„¨¥Î€™»/ƒ&WK`mü¸jT$XÛ)ªPË„„°¶~H5뢲 ÁÚx¾ªT$XÛ?¤ªA5MHkàYªZ× çœ榺ïÛ« ú.î"â¶‚£ÀœT·‘ ¶ aJ<ÉuP•ƒ„êª ¨ØEG«.Hè»ØDÄeG€ÚmûNðU^T¦Ú-U }Wq_ÁQ f絞­Ö Qó¥@nû.nj}5 Ö6À×Uý‡þÕ }›ˆ¸¬à(P›mßÕý‡þ5OHkà‹ªÿ>½ê ¡ìº¸®à(P“ª§#Ä &$Ä.FtÙwqWû…W$”÷j0‹?ìŸÃ„„˜Ãî ÁußÅÕ.z.AÂPwl+8LiÓb.ABßÅÆ”Vî¾ï ‡0›K€ø0§KMÐwq—Æ6«é1³ 1·Ú’œÏí"g$˜’À m#æ5!f8!!LI`eÎû.6sûȳ LI`E¶s\×3¦$°³œŽs LI`f;!f"Žû.6n÷û Oд»¯gs`²l#⤬þç¬lxš“2~€õ#<ƒ á ÊØ“2†€u8#< á‰J”ð®0,ÛÏ}žñÓ ž¡”/'¢€E#üAÂ3‰í£áÇ4}ßÏùü“kÚ8Žˆ«ˆ8ZùU,ÅeßÅ©§ùcLHøAeR‚_D€e#$$$è»ø4ì™ýX71B"AB’²;D”0Ob„d‚„D¢€Y#€ !Y‰þ/"¶‹ú`Ë$F8¦ïûE~°©5mGÄUD­û&ª%F8 ¤ïâ&"NLJ¨Ò?ćeB™”PŸË:~È„„{0)ávÑ`Ä#1!a$M/ʤ„׫øÀuÖíŸö]|ò\Æ!H‘(`CŒpR&Ü3Ašv7þãýê>8ÀønËd1ÂÈ iÚ8ˆ¿¯òÃŒã¶LFظïñý´¶\‹¾‹³ˆøyí÷p —b„i™0±¦ãˆ¸Šˆ£U_@ž_û.>¸Ïi™0±²§ä¸Œ àù¶Ã¤z1BLH¨DÓÆ‹ˆ¸ˆˆ·k¿ €g¸ˆwå©€ ¡2M»+u~Yû=<Áu‰6.­‚„ 5m¼+ÓŽÖ~ßñ±ïâÌ%Õç§µ_@ú.>EÄIDÜ®ý.¾b?‹ê%H¨TÙk2D —k¿ €¿þ¸û¤ïv“ç©”• 3дqçV8ìþ¨û¬ïbã*ê&H˜‰¦ãˆ]Ýózíw¬Ò¶„¦"Ì„• 3ñ`…Ãǵß°:V4Ì 3Ô´ñ®LK°ÂXº}gžòüfªiãED|Šˆ7k¿ `‘î#â´ïâÊã'AÂÌ5í®ú`Z° ŸKŒ°ñPçK°M¯Ê Ó€9Û–á“§8‚„1-˜1SF°0¦%3c*ÂB Ê´`>ßkšŠ°L‚„kÚxQ¦%¼]û]U¹ˆ³¾‹+e¹ +дqR„—k¿ `RÃz†ó¾ÛM{gá +Ò´»ÿQŸYãLàs™Špçò×A°2M¯†âÈ`$÷qj=ÃúVª¬q„×k¿ à †õ ún÷½$+$HX¹¦Óáÿ"âåÚïHó±ÄWº^‚†(áŰ«¥¼ŽÜðL—%D¸søÃƒ0á·<Áu ®\{‚þGÓÆ«²Æá½Û¾AˆÀW ø*aðB¾KÀw €BˆÀ£ x4a¬–'$ðdM/"⬼ŽÜ ,Öçˆ8"ð‚ž­„ §%Lxé&`1.ËD„;”ç$¢iwaÂðzãF`–î#â¢LDØx„ü(A©š6ŽËÄ„÷nfázún#@AaTmŸÊ4„ŠC$ppM'%N05¦u;DCŒ`-‡&H`4ej»25áµ›€QÜ?˜†pçÊ‹ I4m¼*aÂ;+ Ý~%Ã0 á“ëe ‚&×´q\V: ¯#OžíóƒÁJ&%H *M»›˜pbr<š* ¨ÖƒÉ âø¯?Ö1DÄ•Z ˜…¦W%L¦'¼õÔX™Û!>(S®<|æ@À,=Xí0¼^{Š,Ìv ”)w0s#H`öÊô„“/똛}€pU„O¹$°8%P86A€ŠÝ—øàF€ÀR X…¦ý#N8./SËv”Ÿ7V0°‚V©iãŃ8ax SÞømàÝï£ñk'H€ʺ‡WešÂþŸ‡`áÈ=ðÀuDl„›¾ÛM@ A4±ä$é~r¥@6AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @:AN¤$é @®ˆø¿«ÝPG¿uIEND®B`‚instagram-feed/admin/assets/img/about/plugin-sugarcalendar.png000064400000003237151435171370020543 0ustar00‰PNG  IHDR––<qâ pHYs  šœQIDATxÚí1oÜF…÷Ϲ·{÷v¯ —UØ•Õ)€¥;UV!AΕ›@é©H'uì—Ã)'ùŽä.gÈÝå÷€Hpw?ÎÎ.‡ÃÐ ä À ÀB€… !ÀB€e£Ÿ?šfyÜ4Go›æ+ëŸÏÞ7Í·ûzgæß¿›æòSÓ¾~zÝ‹®;o°þ¹hš/ÿØmÖ@×&]SÛ5 ¶›/€•¤¯§íƒ[+\]Pmúú°¢¤Pß©ž[KGéº>»æ¯V©`õ”ò§˜–ÿÚ+¬?ßÄ_÷Õ1`õÖfÂãLïÞÞQ:åš5V€µc@7ýp›6Àÿåç¿ÿ^)¾Y¦_÷¶ß› XŠ&ÚÉh ½ØOJ8.š)EИkìGŒèÁ¦¯‹ÕÅ1ÑyXs¡È^$XëCÍØ7š9¶€0s@;°tŽDÞT6`†g6`)9drê°Qô ƒ—>ó:ü;Èt°”ô±ôÕ½4HìPa¸PáV«,aYŒ‹œj~Ö“W°bj…p]V}œ X©Oßq=¾¿s‹¼ GÔ¼õ+¶²Ï~I D+ìQ²ˆVGošæòpu7\ Ø è7ô÷–èÏ¢Èb5nºþ“½,¢V˜,Z©BƒñœþŸßÓ³ä*†TnÛh V¯¹S –&ÊãÛÔÜkÞSo¨®I¾r:"급ƒùÛ2¥)ƒ¡¥¤t¥>÷y·Pcn]#§e7,ËPóÜIwoÌ«P˜fõ¦N zÜâõÛßÚ ÖÃ-ázûÆã™¤þ›ØßÎYº–>×­$=öf²NmZþÿ»ÁŠyÅÝó¥J%¡G[¢×§×ݹZÉ‘KKû¶ëPC^­·,Êly)#¸ÿºûjœü’7 VKbKžÜ«®Ž™ÌÜdµS\¼KË*q¯¹‡UÉK­s¿,‹pÙã M$‹À‘–s¨DëtßfŽ'‹ü*_ y6 XÈ=,X° ° ,À,ÀB€… °Š“UÙù,ÁR˜ŠÑT[vv€7mUì7;°TK“]Ï ,ºâ–¹è3Xö9ÕwúLÑ °J‹~ó€å"ú£–‹>0Ñ€åtvÅd–Ë®É,xÀ*¬ØH°¢à"‘,7©Ô®v@°Ð€²¡õÍXÈE^_m,ä²±,ô¹,  =ʲ÷;`¡'K¢UÔ,ôDV• €…\}rɳ ,À,ÀB€… °kd°jøê)`eVÇW8`ÍóËò€•1Xz&…Ë,yIX``¹µþ0&9`¹Y»ÅÅþ<›ÊjBs¸¹ª ¯n®›/€…JУPMg¿:£U˼îËúƒ‰c×t£ßµ<¶¯'‹Ëú; ›÷wLîTRA¡umÙâ]XŠ0e¸SULÎ*ïA·¬Ba”³Ž'Í×ÞW PulÊvƒeùN"W}Pu#…Ökõ¡×b}XŠ«ï3z‡Þ±Ã-γÏDÏÔ$ô^×ÇØ!âjzx…¨¤qŒm,ηI„Bôn„%‘%Ð,Ïgˆ8_?ÜFc’ÎQtêÊ€ÏÃ'ì¶`P¹µ†‹œ«Îæp¿ïL/x•fà"u°Öpq:_ÇgWŒ:0Ú€õ¸4ž½JRÆ•%¶`Xy¹”ÓÛS>`mvÂi}–§èÎßôk3dê¢Ì.ršÈ¤±Wt©‹õ8`=—Nrµ¦ 65 ÁöÖØÞ,'+”œ,T½ ,X*D¿x»ÖÆ’³IEND®B`‚instagram-feed/admin/assets/img/about/plugin-wpforms.png000064400000014035151435171370017423 0ustar00‰PNG  IHDRȲ0?p PLTE~ªº>>Š…>~ªºz>>>> ¹Â>~ªº>>>>~ªº>~ªº>>>ÍÍÍ~ªº>}?ÍÍÍ~ªºÍÍÍ>~ªº~ªºÍÍÍÍÍÍÍÍÍÍÍÍ~ªº>ÍÍÍÍÍÍ||xÍÍÍÍÍÍ>ÍÍÍ~ªºw=ÍÍÍ~ªº~ªºÍÍÍÍÍÍÍÍÍ>@I€¢­~ªºÍÍÍÍÍÍ>ÍÍÍ{YD³¦™ÍÍÍ26B~𢙣¢26B26B~Z=26B¸Z~{¹_#¸Z¸Z¸Záv/~ªº>ÿÿÿÓèïúÓ•å‰[ÍÍÍj«™í7;GO(c0.2=#êóö­aQIN_v±¹ÕßÀÚã N€?«TÐj&‡B^¡ÉXdzW¤ïh‡–qÅõiÂô€¬¼¹^"¤P–J¡î’G…I ŒEüûúÝs-Âb#Íj'ºc'¾`#37B×o+ƒ@ŸÁÍÈm2X,•»Èˆ±Àöúûº\§SMk5åƒB‘·Å€§³Çe$¯V¤ÄЛ›’â{9šKÍäëß‚Q¶^#æïò¾Öß„®¾òôõ›íÑáç´ÑÜAFTÈÛâ«ÉÔ€Š‰Æßç°ÍדŒš½Êñ±zÝêÂìŸmÔw?€G)±Z €Dw:\1 í¦säˆWÅh-€T-{Êö>§ãöĉè“cÍp8u?·ÐÙmŽžŠW1‹M.M—ÃöÍ»†X€hRÃuAˆ¢¨€™Ÿ”žóº‚iêšg¦xQÖ{FœqDj<ûðéöá̸··Ñ›o»c§`KªnD–d@V<0žX*b:óæÝÄÃÃõήẜëĈ֬tTUZÍO”R:%',pHéééÝÝÞ¦–„”Œá·}¬Žu¡ZFE::ìÓ¨©«í⌗•﵎ס}uro±d1¼ÞöԼȽ³Ó»­Áž‡qK6ÞÐÇÆ° Ðc\LI²àúž¶½Ü¬sZüümMtRNS²Ê|a¾)ªÛ÷@éMÀœõñ}D8oºš ãàÙ¸kYÏÆì„j$ý¤]YQ"õëΫ„2þý¥A¯vþü±ƒç1ض®P×ÖÐ’XÛŠuIDATxÚÔœ]H[WÀ/jÉ"™•郅BÁ·½”=ìaoqç’»‡de/¹ñBžLÈã\‚Âò!0胃¾YDc…ZAi'¬¸µZ×µÕvý¥Ø®íè¶>l;7ùßï$nFó{JÓ9?ÿ眜Órÿ+]Ž6{s‡½¯ÑÆ[cŸ½£ÙÞæè⎒¦îT¢¡•«–ÎøxKwwTtÚ‘Š¾®zú {'w4œ‘†–®j’²iéæŽ‚FDC©€7fRÍ­•‡³QÂYo Š#ÊI®öœf^'ÃD„[¥yÕA¿“áá4Wklt ’ÏY"@‡bﯬMÐ2ðqŸDCjãjL„üNI“¶îön›î5䥔q*ð‡¦«-t ÅXød‘$W/'ÓMª ¹^‹ø5£ŸÄS”?–,¦§„0µk]=òx_2xSÙl(,!ì\íЯÀÅP`~t$†‡­ƒ‰0¡`ÐWZÒ$½Á¤k5›Û;U5䚌Á¨ÍEüˆu(äW­±|T0Œ°×¬½ Ðü$(”ñ-º‹,œZüÉlX¡røÓ»ÍŽd² Q‰ˆ‡È: ðнæáÒÕ!õ%¥YÅ;MÉ„YnâDX…c8ë)! ƒˆv×»Ó‚ "N™À^ ψšäÂ¸Ó éð¾‚mHÒÊcÆ£" "|β!iä€Ã²J¬ +ü0ˆT…÷¨EÎS1‰‘î5ùy½ŠDñæ}F9ÃÔ«Èç ð·†"‰:‘ÚÔ‹×[ü­ÝœFdco?2»¿·Q"ŒÍ-žñzB!’ø;ÂS"/õ!ò‚ÇÌÞþøKžßš(‰$öñ»o?â1»u!²Áþå,æÕ,ÿº$ò’üö¿ùÅul²S"Û<˜ðÉc¾ ‹lD"XŽrÇëüñ™àùG؃ñKä5¡9w¶Èm’ã/RàùSgK\ß’Ež?‚7ßãù½ã/òœç¿‚1Ÿã'˜È­ëgY~ûø‹àžõ†ü ?ÅD¶¿Uˆ|Ìï‘Mž†|ê–œZ{ʈ<âÿ>þ"S<ÿ †ülWÙQÔÈ<ÿæø‹à"yü TÖ³K²ÈЭS`Ço'ê@dj‹v–ñà㥠ñÞl1ã^ñ‘z˜„-þö´Òï*ÖZ/gOQ¹oùÈN],QpLvùÈãg×måT«ßíÙÛÏð l£^V¿xz/<ß}±9¥YÆ'6^îííl$êf_bovç“© ’È·Zþ:Ú!*%¢^ÑÃH»”õ[‘)Æ„š¯þ,ísRzâÉH‡S3*s´"ÓÃ¥æ*5X]¿ÿôƧŒOïç¯QŸeͳ+eúhE–ÊŠKÍOØãé§zn`•‡šg7FâHEc‘eOÀ‡=75ÏæFô8ˆä\jò8"÷ <î“ã*ͳqþ(E¦FÁ¥f̓Y×yäݘkšgçÆÅÚ‰ØÚÌDætÅNX]WÖÉÓüM7a¹R‘†êÏšl'º[mœ5ýU*r¹Ô{Wóùõõ|~õZé(ôªæÙ+†"”öÞ*3¦ú,UzìéD&LDîx”¨OÝîšDäk½ê°UŽ6$#ž¶8•.zˆQ­;°f*M ŠDà¢'£¥ŠsêvT¢ÙVîÒFX} :íWÍ]S‘´n‚ˆît·üIbÿi|¬»®Ѝt¡°ó¤ƒÜà©Ð‚KËUC(u@€Q©dÅ ng7Š,Ž&zNŠácW„é/]¼oëÑd Ø)\.­Š<¼£}ð‚ 3¦;§.’þ>¸—ßdG(Ž›åëk­­¢Ñå–.S‘+. “qShZ0!©rçí'ßñ‘?6#L\":-ýêûãñas¨v0¹œÖŠ\½¤,'ÀEKÜz^´‰dTó“£^Ĉ bHIùª{;Wä$ÂdŒöç[zž|·ª¹yõ‰ Ðe,,L,"Åè%De"~¹ì3Åâ¸UÊÓ3mpÉcbÓ‡¶gÁ2Þ°JÚ,ïºÊ“Ë‘Ä/e­^•ÈˆÑæÜ$$À¥U,²µ¡½'@÷Õá£ÔêB‰(§;„*Ž(Š›êÖ"P$=;Xä²Ë„Ÿ6 iU.­4>ÀEŒÀh ("FÖÉÀ¶Yˆ@‘À2صñ‡.¶ÿø]ª^ăJ"=R)?;¸ò"Ó`rÅ,$‹?˜yðü,0¾wV/ÒI ŽbDD„èψC™ˆInY—É%˜=Ôìñ³ß¬Á,RµHS3íäpl&nvç5"Šíæ"ÀRy“ïŒß¾;~ó¦{ zV"P$pÍ5HÎÏŒF“©l0 …%’uD o+WŒCbøî‹îÅüýa¡U½½ÃÞyvõ…ój&™ ’ëúekBä`ÐÖÜYÆ›^ü]ÑÄADlFÓtÔhÁÖàè²*± ŠY8ÜtO zo5"°pŠZ‹dÌÉ&+h\@áBY»8îUâqÃ-ë@í Š¥Rq”‰1`Ó:*ÏÒ ³7ˆÇ“ XU‹ÐEüp Uº@Ä„óK‚†•9³°ìnGþtè×^—ÉŽ}iÔY­4-Iù‰ÎÌgƒÙ”7é‡ío7©Ë™²"±1Á€œNæÊååÅ¿xþW–X®L!U‹ØB©â%Äú-´c]É·€ˆÑ‹‚1+›¹Bann®PÈm®Ó«Xà›Ü„kØÏ/ óV/Ò¢I-P€0Âô–‰%¾*aiÝM¡¥þ”,ìW`Õ[½H³B$Œ4ˆúMˆÐ¸÷sšíy¿Û!3eNø:ñÿˆˆH‹êL)hZÀˆslI¨ÐåÍÝ'wXͬ,ÁrÀñ0ŽŒöF´D,˜tF§…JY!u“Ã}úÕA»VÊTÄ'oៜV$2<ê„ôª H«ŠœQ´_É,µ¤l %±/1@¤Œ‰óâRª´:øÌ3éZqرÃ^"V&“ø$ýb¥ù5=á°?lªd­5ƒ4áG`ò'8ÂÛœ{_´‹‰±éŠ4œ•à[>õÁG½óîÛÿ†;)÷Í©9›Ð&‚(+ˆC/¡— B{©à¥P/zуg}îô0µD­ÈjmM+%F’ˆhÔh’š41$¨=h¤¨X¬ˆŠˆ(âÍ“âIPAQPtæíd_ÖÙ#Ú簾3ýæ½7óf·õ˜R"ôë3ëÒ=â"Ö ‚…÷o¼L¢¸Ê×½TãYîÅ‹‡—Ò YÓísíQÔiÆ÷Àï[Ö¿L¼¿wÖ#½“Ç/;Éœ¿||ÒÓáJXðwÛdØÚö>~ÄR!Ãíבôú!™·÷.»UPæñùkÿ&ñ! 6 ô(*«Wµ=ɧzÇÿTƒZ“'qpâ>·qŽ •ñ‰Éë×ߺuëøõ‰Iü[/‰w÷•¹êå˜Èú~õÝV‰äàžVÃØ:Õ§DßsÐ"eks湃ÊQeá;– 2š–,§ŒüêU.»‚£4ñÄÕ‘‘ÝBÆ ¹Ñ2€Ä§bÀ©ete–ô™ç—m]—”HÄJ%)Â)éÑgw”‰:\¬ŒNò¦5@PÖ4 jZ°X)¨2Þ;ÉœòΨ ì%ªŒ±A)‚äq7ZEVÌ’‰"2ºIkZD|mE#Á›KØÉ=`6+}`„dÄId, q-iŒÔÐ"q)¢šÈáç䟃åJS•Q·ØJ™K !P<v­©²¹NÝTìœMø×> ëòAÆJ(l˜" ‘V$5sÂb-ΤjÅ)úò qòPEèÓÒ|æöËÙp÷-†ç@ ]ÃbgŒDT³±Dª8‡‘Qªµ˜TS=E~¾Öˆ .UIŽº0ƒïpUn§q1 ÌM„µ™ÓL}½¨µ““²uÆD°Æ}‰XÔiãZáÇ–vzfûM½¿Gnž”Õq±GšèyÕ£ž ¯„RªI^'7ÎØû×Ö\nåÖr1hfÍ×ÑÄË´6ã`J–Hĉ².3$gþ ±$.<ãd〔Í,‰ƒA…yˆ 3_#Ò$%s‹Š¤R€ óCx"NÿÂýºÚÊ,ÈzˆPŽPPò€dŒ¹ƒ ‘õ·†#1ȼE—ßä à%KŠøð»+¾0?4tî´©ñ$mÌÆ8yó¼Mˆ=É ´%$—=PiÛªƒu 2w9sêêiRnÏ­ÎTÂm~z~vlää¡C¯^N[º7Œaˆá.L"®é…A™“B"LÚÖÌpè5ÆïíŒÏ‘K'þøQ¸Ÿx¯êŒEpŽ\úóç®Æ€Ó»ÄEÄ…w“èc—-m̬uâ]ÏùÝÝݼ6 Æÿ"ECƒ*¥Ë 6$T iç::;Ýœo%S†Œ†Šc l^ÆÀ›™§z²'a‡Í?`¸ŠàÅã6Ùexîu ‹ìâóÔu¥m\ÚÇ4ÙçPhÚC¿<äyxHBŸãÕ+¼; vHu@>áë¡Áùs#òÉíxúkt¿j®©ý'îì·™¯H­#p ⻺ŽÕ«ðÔܾ Á™yTí¸ è壇 /AC–ŸÍ“gYè†äzO CV<)XH( YHÁó×ävLJ"öÆã¹ˆ–«ª°ò° íxûªâ€"6juK”š8«[8 +buGh㢖÷¢ÐÇp‘¡ƒYä1{"!CŽï1y¤4]SÊKSYª;z|'ì.Áï.‚ïLä‘i·!à;£m…Œ‚qôÓ]…àÃãà;cä\w2¾3ØF€ÏôåÛ ƒ¿„o­mVÊÓ.B©ío“gýUr¯˜Ãv6ORÞ^ŸÄÎß`îæŽ­ýÙûw ¢×ç ÃÞ¸“«·S9, 6Aʤ‚üC¨çm8nÄ2É´¢gyITÛþµ˜k4³¹Ý4¤ü}}²ÑÂ5Q’ySI'31#>¬±ð¿°©x,©ð’j7øÙòy³J™¬áŠ_í: ‘ד±xJc€ÍHË‚ÝÒîÇœ“—«x`J(ŸÛN¶ví¦TI14è˜!ØŽ>/:+‹[#{‡•÷È‚£»%Õ€Î0ºí JÅLÁî.Q¥hŸé^d31È F{îͤ“—%QHØ´©‚(óY]ÁÓ bX-5|¼¬è¦™Íò ÿîAdobedÀÿÛ„      ÿÀJJÿĤ !1AQaq‘¡Ñ±"2BSábr#C$% !1AQaqÁ"‘ÑáRð¡±2br‚’¢²#3$ÿÚ ?½Yæ¬ç9kÚÔ½¶n —"†`ŒöÞTÓ'ôÐöÞT¦KÓCÛyR™/McÛùnßJd½4=½øR™4‹ R™<‰¬ÿ…®CsR.ëS™Tïec¹Èì9 "äs ã±ýV—#>Èä²0Š4!'q§™J =1O2PXä4ÉAsL÷u4v K°Ýš¹òYQKÍÄHXB†ðVHW­¥¾s\@y­ æá´¶qi3˜Å"Ä÷“@å$7yC‹}å¶'£¤‚£¸u)âEN¶‹wHKØ¡oº,k ¥<&À{VÙªu®’ѸÕå5&v.28G;iZÂtÁ¦“u¬›ìå…oiZáÒÓi'ðïä¶wzµ«fªðÞ{€Ä§&ÝL¸‘¥¥—#‰M!àã•ħ˜‹›}ס·ÊâÞH¤ÌÐa¤ÖZ4T%K£ð ½Nšå]À×´Fj†YL†dGJÞŽ³dºÚTA\ x¢w†µy nfÝSóS©E­s ò¸5Çø8Ød»MHf£nàL9òï[–Žî&•Ö­_ ’IœØÿµ‰|†å4xݳü‡ù“qVž¸-5Jaô]Úppéâ›PÒ®,^[TaÀŒŠÞù‡Â·‹]Æ»ï­Ñ]¾ÈN„ác!“y¬d'Á²›T‚yÖ›m¸@Qu»Ûöæ]µ§ò·Ìz._wêÎÓ´÷½¸9Ä4uø*Ø{U>¡`ál±7>§‰ñ«TZAQOÔ Ç/R>¤()ÂA¸_ïEÁ¸Œ1¼q9ø¢4¶¨}zÛê´ŽC¹8Ï!X ÃÄ Ú7`>¥%ÃÑhþâ6'gî6­N©L6ÝíÁÌø ³]…\¾é„Ó5H"VãŸ3Ÿ”rVý§ÝÔ¯àqÒu„XP5$†º™H×ìhî/þ¸½«ä ¬7µUkÈdeàNe_TSLz I_Þ¦.»Ò†äôÔpïvkGgýÞŸž†Ö¸ÑN5.nœ’ç¶zD)( ZZêr‡.Ì9IÜFú¬¾¡hŸôí=JÞ¡0‰-†=ül!ÅY[RÎöÍ­¸u'z൯¶váŒ#.8c ⸞¥íu€Î Ñ²F Á2`´ÛÅ©¬!c!µÝ<ãnÂ>UMlÍa÷Tšk6J Hãí¡÷W¦ö–UÁÃÃÓ‚c…ßòè£ì¥d\È4Á±‹œŠ]p[úzÉä]½Mz3@º}v€÷EV:ÅסS„ŸÝ>ûê^ça±øÎo0M÷0”ï3ŠSa%.(€?uêîÚšE:×Ĉ*?yî:׬m»ÚÐé¢:…Ây”v’~Ú€O3ŽSœ©W¨<€¥I±*a~ ´§óÏ—ÓIm˜øÖCÜ£™*ZßQHWBv¾«½èøŠL?±WÓjP5]Ø1÷+ |l>$mó®!¡YÎMz*]… Éé¨ÉùØw;„Ô]g¦ã!Ýc†cÛ¿V!©-‚l­’J ;nSáZúöÁÏU™²w³´–>αþ…C~GBÃÇ¡QÛµýñ§¡/·zå÷1ïcTlLéiRÎݱ%…¤ŸàHþ6¸½OaBå×¶Tüµ<Ï`†âöŽÙ–ð%j7¡hªêÔÈ òçÌÞ)7pµ(”V¦¥%öT?Ûq $" Üí=$¹Í‡zóžäÔÌH‰ :Èw¬óŽ_y¯@YÐmAƒ‚ªëÔ5\J'ud¡&,“¡)^ݦ汫º .Ù‘*É ´£˜~ÖOÕ2P[\å\—‘b¨qG·a_­CÈÕSºnEK°Ï@÷œÕó±¬ Îo1è2RñýÇÖ´ ]{ÓWÞˆ†—GáCrzhœóy‡p™!§ßn>d2£qÔ… º¡* ÙeZÕ+sHUoª"ÈãöìÍgÚº˜¨ Qñ*™ï~k#«2.;«±#j|B×\Öa¢$Û¤mfJ“üÒ7§˜›XºE 3RÈâ1Ú+[¸oÙDS$6c.)‰|–Ò‹-pO1)Ùà+ª³µc9ܨ=ÍP¹Çõ[5ÇH· “ñí+:ODeû£¬°º —³ÿéNH¸‡xr£b|T@¤ÕïÛiAÕ]˜ÈvüWI·ôÇê, Î9Ÿ•¼O‡z¼&¦ð˜¬"8‹‹ÂÄf>:w!–ñ°Úxš¦jÔuW—»2cí^¡E´iµÉ ÑþãëDbg&¯½ -`€.M€$ì7$Ää…•¶BЭ©RH FÊ»b²FJ+þAâ» ™ˆ§uþy¬>¦CE&aÖ—2ªrÃa}DƒýÄúŠê6øÔÁÿ]…Ìý!åöœº.WqjšUBæ¨k¹4Åߺ#ª¶äCÅD›)¼+ò¥bÒ»A‘9¶Ù¤+m¥-)'ÂõlPkÃG¨wŽ…Pz¥ã.j“N2pŽg¼ óÂŒµˆÈXœ¾ ÉÄÁiükùœÞE\q‘“ÌâÉÞO¤qRˆHëê½:Ëê4q9|V]•­Kª­¥I¥ÏqÈgð¹+Jìdâv‹O¾þDµ;[gÒ…ê‹Bèi)ÚˆŒ/Ólï?Ô­¾PkºÉÔjŸSoå=åzkmÖé6þlj¸ ˆþQ؇Wñ­ê“sû­ˆM_z"XÁm‡xßPrv.I­; £õYøó³Nt‚KÏag¼Ã+QÞ\ÌZ7òÖâÃpÜY€kÛÉÀÐæ¹½SgZ_æ¹ôœx±ÄÞØÊ£NSðÃP2óŽ`u¶>[k$ódc:ËÇýJl¹uT·å©HÕ1÷.ãéeÃIô+´ƒóݯ#ðÿ¹ÊXJó:y¾×z²­ºW¬¯ýµˆ1ñéñXMúe©Æô¡û^å¾iÿÃ5Ræ¬ÖüÌ‚9âaãòŽ ¼õíèŠÖÝo±,(ÒæãàâËéiÅ|91°SîR³BöËDöæ"ãi<#pfdÜ»²¤[û¯.ê?aå\n¡ª\ß:jÏŒ8d=ŠÅÒt--…¶ì 'Žn=Oá’è@¤Ö° ÝEz$ZL›d*àü(Í@vI®ˆ„²Ã¶Ûz“š™®N(‘³}±®^úãÇëM"yë­)™¸ñúÒ‘)÷ÇëJD§C®<~´¤Je…Hˆ¥*i‚Dë·½M­Bs’. úÑeC™Ï­;“5,¸Ô +PùÔTùÒI$ùÒI$¤¢‰sw›PÜ‘ü÷ÑWÿÙinstagram-feed/admin/assets/img/about/plugin-searchwp.png000064400000007364151435171370017551 0ustar00‰PNG  IHDR––<qâ pHYs  šœ¦IDATxÚíßo]ÅÇý¯ó€HÄ/SÅ(nÔRh qI ! & u‘L‚”DHBE¥„¾4o·ž+­õõöœ³ßÙ³;g÷œ=Ò<€œkŸ½ŸÝùÎììÆª=íÉðl,í…ÿûêÕêÅo/MM~gk¦ÏÓþ¼ÚýäO«×Þc“ßýôÙÏ ¬9=÷îM”oÇßÝo`ÍáyñŸ—Å@åìù¯¿4°j>ùòFq`Ý>:l`Õþ¼wåýâÀ’¿©UùST ¬V«ÕÀj`–D94³V«ÕÀj`5°X ¬V«E¤;áÄúô«›tjçâþåù€¥‰qv -Û¸½Îía&®lŒ¯%•$Î7›XÏý×é\8‰N4þÀ£éf¬Õ@Y>n…Z]pÅfü,kÉ!;XRz¬Ña0‚:þ´}2èsìy€ï6$hâ9JF±–²ƒ…R³d‡@|™­NÉ·LSX=¸Í‰ŸÕµÂà„eªE¬%‡ì`i¥,ó9­–QŽåƒcÖ·*£‹Áø®èbX\•,ATcÖèòº:ôͬ®Ž€~ ƒÑ£Œ•&(²³ì`9AŒQ‰ûÂb\ú}»õy\z$9UµBó}NÔ²4Õ¤îCv°œ/$éM&Þ_þCÇÅj=ŠŽ+¢CïèO6<˜I­«6rÏ@€µCþr-Ÿj+VcÃXù›CGâ®ß½ñ‡Pq7ëfT:˜L䂪{ŸêŒQfŸYåÃr8êš[Y?¼yM½ IýÜZÖFѰXÕi³-[gÉ[#{|h´ê»LîœýíÍÀÒjX¬êÎÞñ\j«kMËð¡|¡V}G-ëû§?Ô ¾8³Tc•èꎟ+aM[#µ•C”!i?‹Ù؉[[ÛÃA“ì/,&9ªY±p–¦T™íÏ.̳†VÄ1+V•`á™7&*dÛù³4…zÌ(éâЇœz[Sš÷Ó¶3ª¬1:V,ÍŒN‘Ú‘/¯kÎU<ˆ°„ÆbLT¸8°BÛ:·c¶ T"zvåûB·ÄŽ… ý¼XÚ#`VuïÙÀÒöÅÒ¤t°:5V‹ •»„ê§BPJ3¶,Ç.¨Vy×”' Ö˜$4ã7éèÚÎX%ÙFc¶jôO5ã¬-Oª,mr”ù2ܪ- É Ú¢<æ ªv»Ö4îÕöoÐÔ½ VÎB?íà»çz ztLz&1jšÃ¹Õ˜0µU$ÕW7 XLà mK“/då„Ñ«t.ù9Bã\ã{¥®{+,mÍ»,öf &òC9aìóðÉãQrªîLY‹¶æ½ú Ò˜«ä4ú ®ˆ}ªö[>Ü Gà÷Á…RãkæuŠ µ&6ÕàNé2¾Îì®/ Ô~q3sƒFŽèÒ¨´yPíUM†£x°˜«N4GìýÏ÷·ÎTrBŠ1ú“5,FÓtN¶¼¡Â¤wÓ1YÓmf(zJ-'Œ}ÖgïÞ åô™4“+fŒ«<°Š_<Û°BÛ#ÓÊçË’RtÈ)Gh¤ôcÙþlGŸ¢ÁÒÜSèïÿÌ2’CÜ.<¦ÏH èèkÝj›‚øË:S“…¡0±0DZRË )äˆÐ‘|V¼Ä÷×FÞÕ¶1òW&Ö¦u4£\rBn9‚Õ˜ÐÑgDh«zwS°U3ïÁZï@ªÍ¯@aäˆPsLV3Çëq|«n©MDãŒbïƒîóU,#¿œrÄЖ¨UÝ­«fK›/dDRFN¨í É}Û"®ØŒ;›vܵ°Î¥ ‡û¢Q‹çx½\ßA޾-‹Ù¨Ó9U_ “ÖA-«¯ /̽¼[ƒ5ä'ÆhXšCÁEƒÓàgÕ–å4!¼½æ‹ÇÑ_r[ÜPD£a¡êžûŽ!³‹0Yõ]S¢|üøþzðQUÓÞõàédY¥BÚ›¶Ö}V×Ê¡úÎfß±.‹ÝÚpɽÄçxp[cëеRFÕ_„é#’¢:Ìj-¸-Ôt f×êóÌ`ÓFj°¼•Â,í `Úòß—«ÑÏBÿŠuÑÉgÆ5¬Y\6®½ “ ‡fpM~ÖÙ‡›HXäÈ–Ë`ºÌ"zΖö¸ŸŒf£ô³rßšKëcý«˜ˆ£m‹Jì`i¯>ñg+ä¡pZ“ž…®;!p±“ÕRÃ2 —zvÙFG3‰DTâüâ`KÔ#ÿ¯èYÞUþ_è‹×ù²Ö°LÀŠÑ²ü‚4追£6-kÌꌎ»EŽÐ,ÌÆFtèw°å"5V$Äø“(YX:îæ`¡Ÿ%Ë»Ö×Â#âc¶ÓZ ·1mÀ#ê<&ž­[8™‚%%4þ‘rL–|Æ$?¶Õ½ËñŸ’'jŠÕÊ,çk¥(w™³êÞµ•ÅšU[ÌÉÁÂ(1æbï%¨î]”ÖD³z8a_°ÉÀòW1ÆR‰¬5ªïòîì8•Ði§°ØÏ(Î*M[§ŸªÀrµÞKPÝ}õ½¶ó’Uåœþ%¨î±‡wX=r„h]ÉÈ@úv¶ií;‹0”ºÆDÆÊù_ ¬Ž'tn3îTOË‹ *™¥KY‘Æš/6—²rÊ[{Û«;LJ‹ñ¡RHxÀ¤”SàE€åV+‰ö– Oå%,{_Užì]BÅ‚Åq±šÏMÖ˜3‡ÍºÖ%4Ÿ›,lpѶÁ4éŸÄÔIÁŠéDÓ,,¦–Ð|nR°b.h6ýµ¼Åƒ¥½Ä©Y9wå –ko´¤¤²•ì0unq2°b.#oVÎÏÅ‚…úÕØ4ͺ{[LégM6½mŽ{Ê#c—– ¦rÖ >þ~³‘Ðyß\ª%©¥ø®s]3IËÌ37³>8Z.XkÉ!p»h3½•pËlÕ rlέµ­L”w‹['ª %ˆfñVÒSÕaŠöÔóü)Ÿ%óÔž¿IEND®B`‚instagram-feed/admin/assets/img/about/plugin-mi.png000064400000016106151435171370016334 0ustar00‰PNG  IHDR[YQþX’ IDATxÚåy\W¶Ç“ɼd&3“™?fæÍò&óf4‰cI&qGAQTÜE\AeÙqAÀ EEÜÀ]Ù÷}QwÜp÷óî¹]·¨ê®ê 0γ>ŸßG鮾Uý­[çžsêÞÓï½÷l.#NþŒèoà8¿zï]ß„eD-D3:©ýˆˆ^Y¾Ë ?'zNœ6ý²ÛÿQª ý›D¿~Waï€`ª"êÚm÷çà*·ð.‚þžXî\+Ý …@hGÛND/°-ב'!Ø6|§e²¶›‰~ÿ®Á>_ÞcìiXïS;VTCŒÌÊ  §c›?'ÚÀ.¶µÜ¹"ç—‚¿U¸Ž:ÅÚ^õ.îÁ€„ØåÁzï2 V ÞéÂ^Iô¾m~LtŒ}nÁÄtˆð(µ Ê迾–™à7=KØ»?yW`Gã—v“ k¼Ê(øðjxüòjXl“-^…šö~K”ÃöG“ÁÚE­t+¢°ýgdQ³Âíçü.€þ-çê 9¿d&Ý1!hÿ YØhÏÛzäSn€+´Ñr Qè‰aûNãÊ 5ÁP¶àûLzÛ`§(å!*í3½¿Ò­XdÀ#‘ÒöeU0üiÖöY¢ûøÿùãÓÈ`X* šy"B)™’ßKCõJßeåÛû6ž˜Ïä áI>!rdùדù¿R`¶-«R |cP…(t5;«”.šºÁ‘ {º SîÜ>"ZÊù÷ÔkñÇ_ÜÔ· ôøAÏ£6–ƒÇ¸Tá*æzÌüÛÛ"CÌæàJµ°QËœÚL¹Q¨àY¹*°Qm ý‰Ì‰®°v1ÐZ>·fðwÀ· öìD±§m_^E{iˆ}®r^⹺Álƒo¹FØØö<âŸc¯[ë¥4š¿é™’°}Ú\@a" ü,³ Ò³”À.Žð&ÒÀÚÂ(t焞E,éåJ¦–ØçËB˜š€¯ñ*†0‡½:|n¡$h¥h’ÊkbÝ_èÁ(ÁþÃ[ ›å:„Úà[ÞôeN…²€6.®Ð#LM Q‹gæÈÂf&ÂkB,Uºpøp%Ø~[`÷Vö2¶È)›È ‡¹9@è•Cw¦mË*!&°„ ’¥°5´B#h<9ШbËÉ]–úlˆ}ž”×ò›·ö§méRE¯Z¤ÞþÆ…UA ñ­×.”ïÝÑÅà=5œ†ÇaGÁÙô8Ñ p2=F^; žS`…«ô]h“- ÌUóä=˜Õž¤WO÷~¢¦·ò¯‰ÌˆÖ ³xìÄ·„hö.°ã~1EÌ~n•{¸'@ \‰ä¿Hs‡Ÿ ÐOŠOK Dæ"Ä.—Oµjº#p_Þ®[f ]Ø`¢Dÿõ¦àâÃY¢…DiÊ#¹"šË›„åÕ µÖ»l5BV‘Ùq =.Eä‚kW¨®E¢»ÀË<]êXMDÉDD]:öd©/ê;5ƒ>i‰ (§._l`›Mö+×ô:ŸB°´¬ì¢&Cx 4CÀì!ÁnpØI¦ÿÇלIï¦È¨:Á Ý=aXÉ+´ûx§.ššIÓÁ2ºkgÁ6aYêÑþe4Œ–³ÉZ[cË’r°3ÙKA£ìŒPˆöƒ“Áf`"ÿºíà=à0" ÜÆ÷ G©ÜÆàf‡ÀÑôøY¥ËÂD{.Ús¡ÝÆ»y.èòÉÙt„m,÷øO: ö·ì øDE›ÞŠ6Y%W-¡EV)WL_ؘ°î·7ºîÞk]6¼ýÌí‡<ôÂówa÷æZa C}ô½¥öÌÚ²ëlØKð@3²DÐX^CNrYÀØ.Ú$öþLå=xýôÞž¾x)ê娌üˆ ÒÁ¼x•‘»¶ Ií#˜è3¦³a»âNJWÛCEvWMpy/†ØÚF{³Üöœ˜eà%—!.âlÇ ²ä¢Ç> { ›:¦’«®TñH¦º§/[B«¡¹å9tä†=¼Z`RP7îCüºš@°?ïlØ|~dG¸T@£H™âÃ[u*!ò,{NåÀ±‚ 8’W '2aíö}à#Æ[)C/#êß)ùuÉ(u:wæ>¼‰ ÝÈjØyU·!Ü=Ævåa 6üÃ×ÃéŠó¢}«o?€³dÀÅ•ÛIÎ*·E¡ÐwÐ(Öš—p¢Ÿwh~D˜ŒÂ‰‘4 ¾·ïŒ8Ó±½š¸zOsK yãnhZ¹ š"¶ÀãÉðâüúö9%7éDq5˜ ·¤€ú 4£=5·ö:}?s³é 4?{Nôî’€éúøx¯‰œ®>xL)| ÿN)93æ {y*Ño;,?Â’Qèuh;g//­¾cß½ƒÖ@£—¼lµÝG¡ªážôñÂJ2r2…bdj;¦Ñ×Ñ?ØúœÞ÷Ÿ<ƒ M²fǶ=&„í/ìåDŸtH~„%£ÐÝ[·°-­ª.Ýp³ýHËîÃê! tg¬48ùCMy-…‘sþ*okMÇZÂIÒ#)<Ò“2‚«m|$ ™éîã§*)ƒ[Í wsûáTèoÌ{0Gˆ>hw~D˜ŒÂÞŒ¾µ&w°õÙËvöèû𬢚ÖÇk{ô,¸3Ên›;AMn9X;*nuãá“àxQµÃ[¾þ-ïEJZ¥ã|lj¸äjž8à¾íΓQÚhWäÝuœ½n= u3ÜÁÛh˜|ÿ#ô6øú™ýÐÖ˜N€F+ š)n”o£ŽgPhÔl¶®¬-hÚr~{ùžæ”À“¤xVZ ˆ-Ç}BÖlb°_õж³T2J“öo9Ož¿ìPÃÍÕ $eÒóßP3|:}Õl&˜ TØR¯ •Þö¸]¨hTë Å÷xÝÜ÷]EõaP$4‹WAÆ kgA§°.ÂÙ;Û•³VÞŽ9" û‹/¾àawû×W¼­Î8s‘z¸]¹ß¬h̹ð¢O¸$ìgoˆŽŽ¦Ú¸m'ƒý˜è#}ŽRØÛtHF%mS¸_÷ž<í0سfÍRýÕW_ñ Qßô¦_vÊLzüÛ[Õ†òšTKLŸÎÍ.R…=Æn”™3gàø©Ó°sï~04Ï€›èÓ»q‰l Õ>•¸¾†ïêž-ªzy’¯GEE©€þæ›oD Qßõ2¢_4pU4=>ÒuÄœé ïá–³dÔ™;PÐ÷fûÀ³âJQÀƒŸ™n﮿ˆ‹z6Nn×Ån—_WDsèji»á­úhi4<Í*‚çgj!9) lll$AwíÚUöý†Ñ/ºyÿ1zìWÄŽ•H¿j+ ÝÙvåÊj* ^¼P ȱð3˜Ôâ`'è z13#Ñþº%£²‹ø“®ôD+Ø–n*} ¾—¥@wéÒ•÷’3‹è]…=[ôØìæ]HºvN×Õi»¡©í¼8›6m‚ÖVùÇz5wÁŠØì<²´…ü>QBv3SÔîXç]ªìcI—E'Ž=ü•†³eÿqì9ý‹@wïÞ]²B]?ûœ‡iRtÇÐýdÇ_¡ºg‡Ã§!TKv@aõ°ïp¡z¹8Ø«srrÔž?SµÜy”k ;”­¬bK’W{é…UÔßWÝÑ0Wù«Ç-"ص–®ð]Ïžt üì³ÏdAKÁÆc±ƉëW៙¡·@ãºÅHrA‚msèšÄ@uF-)ƒ´ü*_{‚@OáµRoG»Ýh=îN›w'9Á‰!¡[Wõ QÔôå`ïOË£y‹ú&EÄÿìiШnYËÕÂF½¡¡öêÌÌLfLJåÑÛùÔ«&и´ãNNae+BfåqkóÔÂÆRD±˜,†°9¹ô®à×ß8çJBg¼2ºYxÎ]¬ƒÛÎ"+mˆ9 ø×W² -z|çHôhÆ41‰‡h»—9ÿÚïlª$ì.é¡UY£Öf£½º¹¹YãÔ ü ¦8ØÛÕþQµ‹YÛJ0TØœ|®ôD–ÎOj¢|Jø¶¸þ|÷®óÚù·G3U|Úz3ˆ74ƒ>0ök˜D{þ{5Ïïãd¬ðq}B#i;ìÀák—àïKT`?N{m\ü8‘Seu·._i*4Ç;Ãã “áL„5œ:šÌ‡írÞøÙÉ6slOu°¨mö(MžÄÕ°ÚæGâeæ¬t+ °±„Ú¿¸û(Ÿ6ÕVë†*ž/Žb'~Ò~¹÷®…¦·7-Ü é—®À‘ô,ؼ5ŽBݸ V,í#RëºñPS‹öt¹¸Óùä® óxUl¿\‰û'B6êFæ.º/Úe|LöZÉÇÆ»h]ü~vüFÙ ¬l{°+|ü…ƒ¤>ù9à;pv ]`Q}å&\Þ˜7­Üe!×;ùÃÅý'éc± –sè^¬H¯%=A>¡Õñ^®0’„}çÈJÑ~˜MdiäF.¯=‘;6Q¤èÿÁuŽVY²³U™ ˆÓ°@iãâr:0ª›†¶Âµ€¶u4åªné¡5¥çàÂÁÓp)þ \ÚujgÁÙq;AAŠ WÍ.„è˜Ø‘¸‡ö^mŽÓ²ÙFv]î~ÕŽÀ=£ÄÞŽOlOÝ»©µÕÊÓÖ Öc]ÜGÓJ^\î†ûÕ”4‹篠éÁ38¶ý¢êб©°&¸Tï0ZJ˜À‰ò‘^Å0d¨âiú|ߨH¢¾¢KuZ·s©2^/  ºá®ìgŠÈÝ'˜[²MÝJÞúæiªž„`Í sã4Í ž¥€·¬Š·gÄ÷Æ/rH›ä˜,Ò^κ±!m¦oý.Þv¯‹Û­s{Εý¤`x”0NoêúÛj÷Çù$Šã™5‘ÿ*{‰œ_¬Ž-$¥kK¸’Q‹Ô‡ì±"³ï—ªÀËÍ4À‘JÏâëüËápÒ(½Ü¨3ʆûtzÙ6™)ÂÓ&úñæ$ñdv‡ÞEB-Šã/쓜Ôôµìµ4}*1—/& BeÕT¤g±ÆA0h¦b9Îèߺ´RôdÇ‚øð*ÎL•³TA§ãRÎÁñc× ¯ò6ö+y»ÖÞ¥½xߎ‹'MFÌ/„‘#ì)C“qt:Y‡ƒ^¿•m;-˜•pÂZŸJÁ¾„uœ${©`]:VœD€+\ 5ÂÆ^ÌÌ&±Ö,(– íÑ”°såÂ;‰Î¸ ª„MaÕ°e9x—TÑB2ºNû]áž ¦¦3) ôqb º‚í…\|õ&Ìó ãA[M]D:Q%](à¦(º›%ªºIþø‡¢HK¡ŒgQ!(¡]ÈÎO|'=vþÅ ŠK%Âò´š ‹•°¢%–C‹-¼àú éÀƒ±´Ÿ‡sõœãž³‰Ö|{vV!tÛ¯fJ-TVÄ”ËT©-ö¡!»S.N`6¯8¹ð(¤…0íW «æʺŠÚ,˜ÒjÉñP¬-–àÆ?£œåâñ‡SIˆ~W#à‚K7 jgñÊ ‡E®q’†[øT,„½ZݳE!l¬ë¡(õ™¦±X€ràƒ‰)üœ\ýìùr³«: 6_ÑÒ1ÌFÎMÿh2f:/€€Q°zënšFáCï%ôyf?£Ñ¢Ïô5‚³a¥G.‰¶ËTVd*ó|Ì`Ÿö'‚ aãJY… >©¾7“1Ü¥€B…à±7c6ÐwZ51X•/‚ºBS8sÐ^2•ð <Á²¾îû7øQõ$¤ýWæÎizÊŽÑ"+¥ìGÀ¯'þ4Ú14+ØÃi˜ð·£góu·gç‹*º)ËÑj…=¬—-¥„ÅÁ°G+ªÿì¡•&‚íÓU2¥8ɉ¯©*UÞbLÅVqƒ_™FHØû±Ú;ÂÆzo£Q^†‡=\êý0×T {Èn’U€P¾VmE~±Ê&û/üJ0åuæê¾‹"ÑׯMu¢'£kÕ³·6–¾À—bñ[Ìl*êô,ÙÙà;=& “^n0²·L°Cv°}–2+,èþÂþ»\O9’ã}í¶«%)œ|¹ŸÆOÍ þ5fCg瑞OcïŽp/¢¦ ÿµ K ʧ”*Ú¯ŒÎKQ‘Ÿ¢N“”0ÐÂBè(ŒpQøpÚß*›~Yœ€9… –²˜?!VFØuä)Ùï!,q„½UhŸ±p˜õÀDèýýDÞË&÷‹%ï¦ûÌv€Ö ZMì57ý#…y"ŸÉ vôI „Y?Qêi™ôÉ» z;üëW Ë<—ao\(èÝ6ém±v©?AqL<¾ð\¸* %D•úu=òÚrá¯`Ì€žŠ™‹)ý7Á0°2ÜA@§ðÎiØ1Z*ƒ¿‹ot†aB7áíDümø„‘œ0ë§ 6w¢Ëèƒa‹tµ…h5 AqmÏP~ÀÐÚÓ¶W[$k)“ý/ ö„µ¿çŽ>$²ÍÃzy¸>Ë©W2{È!˜e|€šöþœ¡‡¯bçã%/~ŠU Ùí1wDÛB¯Ghoq0\æX@GkôAQá$tg®’ gÿ‘¨MÌ2çšKÁJX­‹ÒÕ6ÙTʢ䊋ë+áÐv­ÇÀž‰ÇÄcã9à¹à9a}‘ ö¢Üa±Dö»xw ‹¹£reñiô8ôGY¯„ôn+QƒäÅOfï§_ ëì¡ìÉ•ÒÕæ‘Û(š;A_åߣѷl¾>°¦¶Ç„Ò£ÕLëÀ Ï;›¶hj:,ž™ †ý-¨hôƒñJâ•a¿$ú£2ì÷ àz4êlÇêD[£}ÔNá!·Ë+2 ‡“ð´x¼}œhÉåãèÐGr'wnᤠ£¶Ÿ6V)æ²rû´˜Š÷g¢¢ ŒÍÃAènC{yÀ„¾¾žp ’lˆ¼áe3ˆF?¯ˆfmaµ«•®Ö*nÿžÜ¾4rÂÜùÿ rÿKW”YçüGÀ¦š Ðá3X¦Oÿ7QßÉF«-l%É~˜€úȇèîïahìÑ– @ÂýŸq¢v‰\$Òóñ–ùW½þÊh˜_ú§‚½˜›(ŠS¢õ]JÀæKÀ^£uÜϬ$œåFÖF"7¢$öëC´Ÿh©Æo87N¡¹àcyŠ#çsÉÖià4â 8L¦ÑVGÃÆöç˜&³ÙAQ5Lœ§â3í}*øaÎu¿Î§l7ä[D>DêÔh@4šè#=–ƒàb®²’üï¼KlŒ!Ì1—Œæ‡øà€¾u{´Ã`;TÜ8Îà~hâ<'‡ »LnðWŒ5sLcÑu—öP `? ú7Q7¢Ÿ½÷Slä ã—‚ã›Ö]5T„³øJXe؉ŒhåÒVÞM¶ò¾(nìà`ïნ aãk¶FûŸ“¿»¼÷ÿaC—]Ý•¸“_Ϧ¹_’ÿwWéiÿà|t)ýBûWrûÍ69ÔUªmrÌ䨽ñÿò?Øy}ü&™ü×Ú`¹ ÷#IEND®B`‚instagram-feed/admin/assets/img/about/plugin-pushengage.png000064400000002702151435171370020052 0ustar00‰PNG  IHDRjS@ŠbÀŠPLTE@@ÿ:Bÿ8@ÿ5@ÿ:@ÿ:Eÿ8@ÿ8Dÿ<@ÿË¡Ôfèó:~˜ùúÛ RoFÖkåŬpkþë‘&X_bÎ+þi‚õ=⺾Äv›¶¾Œ½ªYC9¤; Љ´xtuúV0ºq€"„ªy¤Wì·â§ÐxúERÓ͆ 1ìl¼6®\°ã{J°I‘:êÊ,#5ý´ B žèTDË=¡ÏF¨!Ÿ‡ªÆ>sÐkxpM#T ÒÄ—ÀÄ£Ãø}ëU„¬~Ò4CÀZ99ÔÓ¬±Zr¬‚÷© •ÔÃòx¤%>Ö;/¡šxó‡sú–s¨ºvéH~`CF…µõd¾×W/åš>VÍñבCI¼•+ï «$ÇRœ0´IéËy ïhÍ¢ð¸’ap‡ùêˆ7[#æ*iaöøŽœî°Áüõ8—ëc$…›¥¬è²ÿð9~øThÓ;b©×`n¶ÁK‘s(|SIV#2RxÉbÜô'ž*h0¦:aÃt±j­&ÇM¡Y¹9Æ~âú˜½/zùJpÆð7°“ù Ý)NI5q¢ Ÿ{ WAlË#פîPˆ ‰5åÜ5±,Ò©Š@º²öh1e-mQÑ«’_ vlíÚøe*©µm!iêcØÊÀ¾º5ê-˜2uƒ Ç.pÅ •ÙsÆ_+v¾©ì¾[¾Ì·1‚/¤?BM‚ŽÆ ¦R,ɽvÄzf Îg¯q$15[è“zŽîz¨>K¦7Ò¶¥×áëð!i£Iñe>,è¶¿R9ö|YL®®Ï¶OEz¢r¬CQæŒ}Ñ%¦b!’¢íohC7Cb»—6¤d ½ã ñ„X®e^9r½°]0E|¾7³]à3mõ¼$¿Xì<¤›hƒ¯¤wh‹5Û¼Í)’õæ@k[yýñ—TOä ÛůšNtßчJxù’çiecõx‘³o'.FÈ*±X–Â,м ÇÖrz†>#öÿÒ%*'k.x\‹t£m¢pky%Ö$·bïaÁ^l« Om6F¬zAí=ê¥Ç£È‹Eâóar<Ê‚ù!ù¡òžt£¿j.h™KÃËÊ׿ó òìßï/ü~® Ô H‹ÝÝIEND®B`‚instagram-feed/admin/assets/img/about/plugin-edd.png000064400000006561151435171370016467 0ustar00‰PNG  IHDR––<qâ pHYs  šœ #IDATxÚí»ŽG†ûEœ9°DdKDF" Â"qdÉɬ…6à’9°"a"Ù¤€qº¾Ä;ÞÅ9ì À Ÿÿ,czk§»«»«§/S%d/»sæÌ|SõWuu·Ù¨©0£·@MÁRS°Ô,55KMÁjÞ^¿9Ùþù׿ɝÏ7ß}ÿÃæÖí{›/¿úzséò•ÝqáÓ‹›>þäÜŸã߯^»¾û}üÝýÚ<úùñæÅË¿7oß¾U°ÖÑ`pA#uàüø|àÅç+X¼¼,¼KIˆ¸<¼®KÁê &x¥t᳋»¾·s!BθŽÃ?NC(~‡¿Çyb<ÚÞ77·çøMÁjÕð á B0"pÿÁÃ¥ÂÓÑ«wçt;È?»„l4OfzöNË>/Š‹ßÃî ?®×ãƒìÒçW†ðb¦G à œÛ{˜¦ZÍΦ ïé ß³WÑoFjòL½¥úoNN³UW‚Ñ+`¦g àÒ&øø>#„HÓúÆ  ¼„w‚gØe}ï §®cÊKxx1`¿o¯MÁJ¹±Û‡5'r%:zõj:§‚in­ ?DáYpþ’€!‹l9<6ö\ØÃ ÆÎñ~ÿ§ÿ…«î´ú~𕾬åðØ XðBs^ å„T 5UÞSAÂõØÓ© *ø2½œzjcsžµEïÕXsZ aozJqÒ—=rN¸õ…©ÈR€Àõͯ%¸ªƒxæÉ{x°¥® ÉO^¼;7þX ®ÅÀš¹Ð9øµ€ Õ]5à2­CUÒKõV¬÷ª —©þ8õ©9¯`}(Çp © —Yª'Ïž³BßRÃ.=‚I-¸Š±M¡â„¿¹‚©‚å>8Q "Aé¾µb`Ñ’*è‡Z3hz‹«»(\·2ëvUÀ¢€p ZJ¤.ZÄå&M€ECÙý›á/|ç^õ9½ƒÅu.š•ê¾ bÝݨ‡*êµ=ÕH`qà¢zt‘”ó¢`Ùb‚ª¦¦,\¨+ÒòE³`QHBµª–  ,N¶H%‹t»‘ 1µJ k‹£Ÿhæ.ѧ/ –CºŠê0©Å6|3j8Gn]Â8÷¤GBú ÏÉ~’!ÑH‡@Ü ˜JüÒch­Z)i€ûí{ih»TH4K†@Éf¸‘à*­7C¥vH„—“¨Êgeƒ KéªÞàZ*‰9ôt¤Ò(ÑÚœ íó…À%•}ײF¨8z‹^Kná4,*Øc²…«NfìçH>ìÂi®O 3I¸‘þnKév-kõžà9JÝ?“ë­|d—̹î_²6#aÐ:5k[¡,Ñ.yäx­h°¨¶òQÝÂ8`KpILn-àÄ<_Q°l½òV­T [˜~Þ Tœ’‚­µ0K»8XŸ¶’¬YáF`ê{îZ µàÊ•èg“Óçµhb‘R׊‹Ö­–ðVTÀÖ€Kª^Ïçµ!ÚŸ“RŒ˾AKx+ UopIBU.0v] Ï¡X4EvUÙ¥¼• *)¸JO&(•4\!¯•#âÙ`Ù¢Ý7&(QMA%WÉ™*%¡’†Ëçµìg;ùÂpo”}1¾•PrëV\¨Z… çËiáΗ‚ ×Êñ±ƒÓ&6 úâmîŠ+±PIÀ%9 jI¨$ár…9*âcÂ! ¬½ýoYa0ç§BÕ\¾&J@%—¯›!5²Àâ„A*ö–„J®ÜV‘œ)l9PIÀå‹B4ŠEKü®8›:°*UnÊéåÊ)å1s–¬ô…Ôì0–=ÞçÂIñ-A• —TO•\´CAÂcÛ÷–ۺˎ±¾›ë†[„*z *áF½šp!›Ïu.Q`qÜ`¬ n*.\¥º?kÂåš÷”Y`ƒÅÕW1Ý=@¶*ÝR\ .W˜£:‹3Ó – ÌÕ/®³Ê£@å‚k©–âpù>Ón¥á¬Eo¸Âý†§/‡£¯z„ŠJ€¥[Š—†Ë§³lçÁ)Í®pw¹IΠsÏP}ØÎ®ÎZKÃå’;\'ËSÎ ÷Þ¡jáX.×F ¶€÷y¶ XT°¹>Ч9¤ Ê.Q¸øp¹ôÓÑñÙ¥’ÁâžÈ5aBªVü[ \.ýDWÓ e††Sjð¹>×» UŸpùγ÷,;¦úª­sºG¡ê.ß³¶K¡ÝÉ §²ìû0Zjàl Pµ —/:ÙN$TËbÅu UÿpqeOhÈËp.,…j¸8ÏF¬P¦ P×b`¹N°ªñàÊbÙ`I™BÕ\C€…7¢P™C*‚¤Ê#1ñ®¶×X –mI‹[ÇR[‰Ô±¸•wµu‚•\y·Ç }mÉjë1‘±B{Nc—Úø3qÕ í¿)½žT«öâå?gÒy‰]z´Ø™:FêD£ÚS2b­z“¶ ‡ŒÝóŠ© ÖØfK#Žæö‚•2g_ÁÓDgéØ'[k-KÁ:_jà ñ±gB¯-3„¦À œk½†D@ê=‰yÔtjoPPÚbe‘,:SgôÌß0¥.`ÐF¼GtRò1c J1S× ìͰ"žÄ†R#‚e w‘ÕfRbk¯PI,m}#qß™ÖÍ^Tûƒ`>fÈÙýo)´ÖT$Åãg½îìkEVô㮑5ÂÛ8§™|áž0MÓÿU_E€Eugm¤^oÚ™°¶ÖFMl쥛B[4G³¼FªgùÖ»z³Ò!,ŸÆ>^ç®A9ÊÛé[òQ-n«›$°F-;øÀZk7‡Ë£Çn-—´û×(Ù¡om¯µ¶ÇH„Á(°FÌéÈÂÜ<½Ñ‡j¸a°Ø~…Û¹¶þVº|]#`Ümš³Á¢š$e;×&ßÌ“vÕ}7!t«;Æ3}ÇÞ¦Y,ÚU:JMk7Nx™?NGöbÜmšÅÀUÄOž+®‘u˜í­ë–Ñ`Q?ZÇÜ~ `£tØJx«$°FöZ°°—Úïp4o• Öè^‹†ÈÈzö\RÞ*,êµÖÒ¶ŒÚð³×!/Ô­¤¼UXÔkÚè “¾EÙ2ÞÊ„79l¿½xS×TDi8ˆVÙ:X²À¢ÅŽA[s]æòZ½µ(Ÿ‘5ÛŒX¢eÈH¿¹‡+š1íÚ¬§L™>?©öj#}ƒGê×JõX½„BÚï/ùBˆ€…!‘^ßØÔ—À§±z™TA‚d׬‘:Í*z©çLÝ 1µ8d}.o%¥Q–Îñ¢Hš‘<-"1gtÔ2ÚXðpÓ¡ÛtàÿñóP¡ôþƒ‡ÍCEKE±G‹f‰ð-— |­É©Sì{ÐUv!´”‡5Ò'´§cïÖRºÖîú¥’{Lã­o=iÁõÑe¤ö–,ÖÎlÃÁ’[q$ë«Ëùk5@ôJë“RF÷Õ.¶M©Ó1µV‡| 7p­±!ì¨^J+tïîÒ%‘b`¡Û”†šÖÇ @C¹×:'Ö{\ªˆjÉ%ä‰)yò¹®ÌÞ«{_ÑB…ç±Ä‹aJ@ïpõ ÖTKÕØÌÒ3\½‚UªÅÀrÁÕØZo`!ÌÑEkŒ˜%?l.´Ú´,†1: y-¢øI¦ZCLfñ/?Wëúln U@VkÜÒÔøP”"hBãH‹º-i¨§ÑAñƒÛw«FSó†Ð ½®ò¯§h᳕pÓÂÛ6·‡†F¿¡KCßÎë?kCš.Â5½}M3r½TM=Õ,X“îš›³‡·Rµ×©¡'ln“€ÖZfmZ»y®µÖ¼ÂÞ\ƒ!îS«³ÐM‹å›q¼&ÀP—ru¬¶è¥šëLmÆÑÎ22`ðB´wŠ»©‚%§Êý(‹’¸BÞözš³izºñ>À&‘ß› me‡B4º‹˜½Vh«áºP¿óÍøÁ÷ë©Cu°lÀBÓ±PßЭ.§ÎT\GhG/jh°hÉé[··ÛÅ”ö8æSzHv¸k}æêÀ¢8vrÄ´¿3À0µÇà°'­NW§Ãïá÷‘¡ ¨•—·0Õö¤ Vdxx±k‰–:v³¬·žiä¥5W֜ΗAHr²ªË “A€—¹ Vã°¡‹ÙÛSXtÓö¼€ÃuL[ùüBxÄùtç°•ƒ¥¦`©)Xjj –š‚¥¦`©)Xz ÔJØr¶†ŽŒ!ÊIEND®B`‚instagram-feed/admin/assets/img/about/api-error.png000064400000016236151435171370016337 0ustar00‰PNG  IHDR)÷θ5>tEXtSoftwareAdobe ImageReadyqÉe<%iTXtXML:com.adobe.xmp ’Ý=÷IDATxÚì tÕyÇ¿{gvwvveIÖË–-˲‘Á1‡G !Ÿ ! o(iI IJ“Rš“4}$mhBh89y¸m„´š¦@CZâH q $)$ÆÆdK²e½WZkwvv÷vW2²°µB²5³wîýþGGÞ•÷1óÍ÷»ß÷Ý×Çqø¤`RG=˜ùtæ_¦ÿ~ì[fêØ¿ P¡‰2í¥ÇÓ>9õxúA‡1ëS¿¦JÈÍñ»]ˆJÍ!*yïLP+a<ýû(tçÆø(þ§ž–댱JAof¸›;â!r(™@­ô¿sž£Þ>“ÒY!,=Ö§éò}¿”zž7ý†©G=#†¢P¨J꨼÷HÎY϶mMÓâñ8… È™ªœs–þq]·¥ „B§Ô§ƒc‰=4 :v PU‘>3¢P¨ÐD!ÄAF u„=Ì9Q¨ªÅ=Ì9Q¨ªÕ{(ª:q…B!{(²‡B¡= ÙC¡PÈ …ì¡P(d…Š€t4A”ZJ·`r.DyÁ3˜ú)‰LÎM¢@4­B[!{¨…‰¸½„{œûà[Ä÷­a°Àê¢î³±äAúFWÌɃË7A¢Ìvj6“d$j@OjpÐyl%Y”kÉdÐ U³¾7Dxž{9(ޱl7 ?cÄ¥µ‡ÌÛ½š6Ñúˆ×-ÅI’ë-x!=Ex?ÞËì¡ý7éjŒ_„bÍtù™$ÞÄiº<¿W«Ãk„ìIde–f;ÀGvÆFnÖ‚g>ö÷Úò³Hby‰C®5â…Cö¢‹\üQÈïa]ÿb&ÿ+BGn瀯øi<ôF„Ù‹rY(ìc{6ãßô¹8ø­÷ÒÆÓ¹^JJkñâ"{ÂÖrÃàô°ÞŸ˜ìÉN-ŸÛ¤uþÔ¬ãúr¼ÐÈž0FôÇÁë‡ìnèþ´‘‘øL™ö’¯Òe¿ñœ.ÁKìU5йûÙþŸ˜ÞíJ¸å}„®½«¹ÞŒn€ì…L]?8½þ¾'Rd³²F°ò¿K;?©vkG—@öB n܃ìÕï›Ú]h’ŠyàBj-NšAö‚£nü!Öý„éßÖ8J…\ ÙðÀdŠe½E4“?Bü ëÝ’tþ­1‡òùMÚi·Al9Ž "{'NÝ8°, ÿÂÿ(Zc¾u »E[÷þ~8C Ù;þÒŽLü6ÑÿhŠã!Ðü:]yÐÔäLQ²7O»°¸=ð›KôZãDd¯~ Œ“8­AS%\·>{¸ãƒ[Œ®·#x'.£ûöòÄ;HX­qoÎpçì#ÛÞ™H¡1;¶ÿ’oÂüãÞ¬án˜gž1ö"xÁÀž‹Yï#åqƽ™áŽxýÞ+w§b÷¡5U!w9ýë_Åi ÙS½ò(‚½Óè¹Á/ÿ\ù8¤6(>¡zÎYNÆŸGðÂÎ?¼—d ¾a_ÉìMþKŸ¢ÎÞrÿæœ*xÄñ_ü„™ÞŠT9ÿ\óìdù§Üj@ª$xYpz{ÎBð„È?÷¾ »ÊÙ“>âAa§±÷íèôá×s{^5ü¨ràemô¼Ý]4%¯ƒ§•ª^–ˆNéÚÜ"k׋œì•Çñ¬]ÆÐ¢ûF]ÉÜ'àÐvÂ!{‘{ÐØè’Èè¿ì®r{Šì‰~JÞAºídOð2oÄ鿏‰î*›ôo¥n7²'n™Ç{5ÍgÐS%d/þ+÷ÈÔï"{ÄÏBö…dá3覲ÊÔ¿ÅûŸ”f­­DqÏé5ú¯A•[ÉCƒ‰åØêSö¨ÛÛõNtMdô]&ÇF/2°Güa¿çq-Žn©ŠØK7JPøÑ胗…üÓùz¤B™gz; ozæý¸ç ~ÝQ¹Ì3s#ñú½jf›¬û1tD5¥m?7Ò™gÄã^)Ûôÿ½PMé €Ñ¢»ÅK„Ù£n7ÙÙ¦Ú™çÈõÄCöÂÍ6YÎïÿYçŽ)/û7#šyFu_jR|Åè:_>Or à¯ý„&Ìã Ü/¹ÌõR^ªŒ8'À&ø«ÿšÔ$¼Ñ’Ýþ$×GngëH²WÞtìåÏ%cIæC–}9=ýv®/ÊnÞ ŒýÊ–p³6»óEkÇœ3'}E>ð¼"h§}!8ðÊPo¥çXp«|ìñá_GncÏè±G½þØ«ï‘Ï{œÆ»YlEà>ª5Óµ×Ég½äø‡#·À/bì–ãCÏi û hm[HߤՀŒòw=­•"ÇÞ„Qjá¤óB²!0)í—ŠÝ Å}È^0NãgÙÀÓ ©¸Ö²4îÉjCçÝoˆ{l,yèÖqŠa±çËjÂTòQ(¼Šì-zÐó>òŠ{VH_$oÜ+gî»îJ‡gtØcãfþÓ2³çZa}“#±Íä#Q©ú¢ÁñGyæe[^X«Ñ˜+·!Y×Fbi_DØc9cô%gÏ +Sâ’³gj›#±©D4ØãV/È.â…µƵ¥7¦ßû”ø¡FÁ)ûÙ«ß”Þ]€…U﹇¤·¥éü¿®/ qÏ7“[ägÏ )‰(ÊÏ^YÙÈÞ kô·*¸ aBb/¬ÁŒ*«ëZÁ—ÕŠÎqöÆ3Jܼ’’!}““QÁžFº¼–¸ŽMˆðqϤšÍ´Öi’â¨!Ö÷3‘oÜ'4{Äϰ­Š8J©¤¡lzÇÝELjÚŸVñZ"|ÎéšÞ—q”ò¾Ú¡Ìö"þ>PGîÆ½ãRþ(¥PF½5²M‹²þ_ˆ6½s*è‰Îú¥Zè±ÀWP·GWéÆå´“ švŠËuºb–bûÞ²0f9S]-£‚— ¹䜼8¬Šy‰ül/yïU<ãC¢Ô·œó™ Ì^f§j^Ê åØcÝ÷ µ˜} )Aã÷)ëZ»|–«±YK…vG”®Î)ÅcÏ•ðØ7)T×¶Uv­©‘=þšÄcïÐ>¥Ù :îy}ÊZ–ëö`âõsNìR›½ç[R§Gã?U8î=M¼*‡ý™C|b±GØ-þLiòX sý„©®mÍô/ «~7¯¨9'wô^µë½@·` ¶ªÞÕ9S‚íÝ!õm`«n^¿šqojŒaú±`9'/"{A¶úªÇ=q¶«.çäLù¸ç# v4ä”s Vï1[uçt¾e(û^‹mÞ<²W)W=îæ‚4¯£¼y-d¯’s¨^ïq'È)uÌUݼÅ,²W‰=å“¢@·lQÞ¼\¤Æ]´zOù΀b_ž§|9-’ƒ‰Æž¯ºs8Aηt-åÙó=¬÷*\à´.R/_UD°Ÿ³r³¤<{twM›ê}-@ãÈ^…†™«>驼tÝ.ð©Îž^ƒìUH ´¸ê¾‘’gLù¸§!{•GåE[m@ÜaåÙÓ‘½ŠÙ °/ÎUݶZÙ«dš¢Xˆß£zNA)²W©ÜI"y<°AN /©Î^ûZ½¹à „=êìÕ”ÏèI sΊ‡ƒì7ÈÉ”ÝtøH³K!{š%åÇÊ*2Àq`]°ÁÆÖI݃õ<@üð›èEÛâ¼–¹òqt3ùC°^%þøbÚÕÞ|ÚV(½¸¯G1ö_ö>â/½ˆŸ¥ÎØöª|G óJE@û“Š5„k $±¯0{8Ôïs'$6¦åÜñL¦‘°fyjBãY27ÔVO¨öÌ Ê\<¯û#aç²D½É#5¬Øí²º‹^¼‹xý!%þ0ü¡´•^þbH´Gã£bSN—ÐÕÒN­Ž›…a±g™ÆcÒVzëosµ^EöDa?l×¥–ö7Ò–|ÃÛBjÅìy+½BrMd29¦“s¡/M;®•6íÌ|ŠxSQJ8Y×ý2Wz z‰±õ×{èRKÿ¼´içàsÄx°Á>`&¾'gÐóoD”¶·£|RÑ©úR´ãjY›m#û!ð²Á}>ñ‡ØŽÏJô:¯‰PЃ(õs }õvãw¥­úv}›°l0àóáÌÔsRÚ­P{Ä"¶ÁOôØã$ g[ÖyRú©o†¡­„-ræYþÀüÎdæ²¶Y¤ù-\øIdÑ{åÅ tƒ´ûm™ëIþ•EÆÏ9`¸DV‹Ù«þ´èÝ*œFÖCWR_•Õ™û/kW)K\Œˆ7Aì]ÚËo•ÕVùÜ&0ÖŠ¼FV6ö8I‘óIY]Êè½Æ^$î Íó$þX)Õ4öž'ñ­ˆôwr½)ŠGN£kt®·ñõ2¯-2†®b{¤nñ3Çž×Ï~bì—yÛBí·}ÿüðjÔL&]Ó—œ’ï{0é|¤–]?4ŸWJE¹V;?³ ÃÄ®øþK¥¿ÿ³½n'²W½(î6ºÎTHm&-gC¬‰k ‘s†ÙÈv}ðOã ÜïÒîx‘¬ôdae!¿ÃدÊÖ¾Eø¤;i²ÌF`>·3¬ÐOr»cÞwÔ¹Ål>q»Öq}tÁ“½©öžuÿ‡Yük@©!·þÎ6§D%¸\kÒV½=Rùž:x’°7‰ßR»ãYtJ%êÞæ‡!Þ.Á‰ÈÂ^)ïO¬¶[þ ]Sò2Oû,©?+ÒežlìMâ—†º·’_F•¼üÅÚÚ÷UêæEöª›yÖ’UW[¬ý䔾ñö0ïZì-¿zí´/ú:ªl²×<èMy‘½E‹w¸ë·¢³J^Ûãïà4…ì ¯X[y] J êïs½øûL#{“™gé:™”º±¸¬Êû·¦óË·ª–NTÖkÆi o|›]{ºoteYWhë?Ñ%B겓î°ì]…šo G¼ÜÛèÆ/ ~ÿJdoüHëÅóNtå¨w=ón™Ffa/J›s'~M¤í2Ä/J5^þbzæýrƒÓ{ãFh‹ÎãÇoÉ?¡[G<÷O´7…ë­ÒŸ)U䊖ñ[~Iqé}èÜBƒ¡mø¤ à)ÄÞ$~u¼ù]ö²ï¡‹ ^âNíäKܹ¢.{px¾õ¹8ì.  õ÷i«¯ŽÖ¦îÈÞÂñ3Oµ×þ/óÐáE‘Ýö8iyWä6–>Qö¤ïçœ?ž8Å=åy·€n/x?…ÔòMøWQ,ÞÉÎØf± ÷WK^Š'½‰ÁSš½2~ú ºþÏí¦ï á+ÏnõNÛÁâ'ɱý8DÆÇÇ9çŒ1“ÏÃ&ðÇ ¸×è¾y/ÏlùÔmTªgãÞlåŸVÆ:{ísç:´FÐ*ÕØå]­êÏQ<Œ{¯o‡¼>ýubô$$¨ˆ¡ÚZ„E`Oî=#‚!°Š}lç×ÌäÊyà¬ø.,9h=R‡ì…*êõqw”÷nIúw(uâVñJºöH®à±td¯Šuà¸Ã|ä7úàÇcIÉ]±~3iØ@bËXl9^zdO˜0èìåù^Ö÷#“Þ#Ù©œkHÛÕîà‰“ðB#{†Áað†a¢›õ=aÆŠ6rù³ÈÊB]'ÄZ$¸Å9²§„ðF`¢‹xÌŒÿ{”³ßKZ¯€ÚNˆ·à$Ì`ÙÃ1†€!Ë·Ê(æûyæeÈ<˜Lí ô ¼ô'éÒn%±N uö¢‘½rûçûÈž(Nw/r?ÎX#ÌêƒÒÝEÙã —êoü!åñîâr®Ãb´’š60ê@O5ˆ–â$Žõ› Ò§n„R²WuM•Xå^¯c €˜¾$¥?Jòko„‚‹=´ ¾ïc (Æ=J%ö0î¡Paçœ÷P¨ª±'ý=ŸQ(d…B•U‚NGöP¨©Ã¸‡BU ¼Òƒ2{”Rd… ZS”ME;˜îçdŒ¡i”q4Aõ£_¹Þ›QòSGðjW›º)â°¯E±×CêÈ9_WïÎk‘˜:>9i©ƒ=2Ct A¬÷¤ºÆl’:@êÄÍ9Ä=L;å@Žûå@WnQñ¦¦BÆ=JéÑqÏ0 ×uÑ:‘¼¢þ䈆NÔôŸ±x3Cßáæ±¶¶¶P(8ŽƒÑo†S‹}tÞáIJÄ"'>x%Åb±™9ç‘J¯X,ŽÛ¶=37ÏïYŸÂë‡ðzp‚Õêq§Ú'Ä!©~[Àýòq`J)lJyìÓéñôx<®iÚL^oÖ2ÿO™~ýôk¦è~zÔ fþ½ÒWL÷µÎ¹KÓ©YPô^p¨Ÿzyð(Nv™¼ŽÜ}Ré/3ƒÜÔÓé´³\øEȬyìãYÏñ_sã7MˬNýïôïù67Nó„mLûB2ß7–ãG¢êá"I‹>u3ÓÀ)äfv´”ôÿ mÿdðS JIEND®B`‚instagram-feed/admin/assets/img/about/plugin-seedProd.png000064400000030046151435171370017473 0ustar00‰PNG  IHDR}„½$ô/íIDATxÚí}}ÝçUÞsÞßJvBRï6„&C_†! Ek>f€õÊ´´¦Ë d ÑÊLi -–ÓifÚñn¦´a(‰Ì0Åj­ ”¯­“ib¾¬« .eÐn‡–Ì”h¯J[ÁÙ«àY»¿óô÷¼ç=ï]9–´WÒÊöÑècµ÷Þ½ç}ÏÇsžóáG°ÊÂ1˜Ö z[XÃ>ŒŒä>Œðêãeõ> @î)aþ=Éþ ÖŽAŒ0BuƸˆ5yãW?Æ[Ïè'¹ BØoþÒþnŠ} ÄÆP¬a#lãÜ«‡bï>fŒˆ™Pܶ$ "noBò™€–ï󀄨‰ùY^ò#2†âÀ‘*Î%`ÛX·×½z(n†Ñ#Ь—@¨LÌðÅÀÙà„@ó B„æìÐ$DÈ9@樘 ˜Sþ:ÈþWpA(kª“XO‚Mí±NÅxÿwbíU]÷þ,BäDõàÞÜ=½ýiòïåÿnÌlN@ ¤"Ú×òÿ%Õž«Ú32"Úß Œ %bDb$Šuã`M޾ê%®ÍèÆa$9Œnp Ö¤®Öý?¤9å(@H¥ˆý^¢?"”|$BÚ«ÑŽýN; ðà $)b¿—’¿_Ö@Ž¡XW`Cç„í»„‘<òê¡x±›>€ÈYÏÚÝ„æ®ãßÝð ˆpè^€~cÛ_þï¡9FP!!” %?+ááƒZo¼}-”Ëx­y&•b Ê„côi¤ÔQßc]ˆñëþù+7tOb·c³1fqß„•lD³kò^ow¹yáVC¨ê7Ó|€ˆj¾Á’ŸÎŒn¶6y„–Pè¤qËŸÅ$)9¬Xˆ!„Êö æïA1‚b­Œ°õíksK/o‘?õ_•OB9×8élð®órß_ AÌ(B’—=Ù(p õ4àE<„çö<õ °$Jäç´ü@K>‘@î¿Ô^PK>!ö¦(Hb]€‰Uë¯[zyy…lô§eÀ ¹¶{öï, ŸÅïÆH¼Œk‰\›Ímgou0¬]cæƒERìvÓâÈ„ù{)Å Åùíçïµ$ùö—÷b>¡¼FÉ#òÿÛe]ÈÕ­}8=·tk£”ftœpx"% .ý2î\‚û [HÆ$fæfHÎ<>›ÁÍXhâuröã7v>Ÿ%Ž(ª@¢Pí°™1 Šùÿê¼1¯àa«à¡«ÛÀSs?|ë€lô`"ï4g,!9ËWÚÿ8q <Ñ’ìÿ™ãntéÉÚÌ{âƒö7¿- Ù|uÉ%~»‡Ñ j“<Úßó÷¸7pïRn7Z/„ltñç)Þ¡ù† Vú§çŽß Ùï#û´¤‚2œ¡[)—J„öX,^å‘P¥˜Á‘oØÎ[Rݹx‚%Ù%SÜ5›JÉÂBþ?ô¿{Ìf8£ Âò#ƒ×*3?©yDw^ž ¼¨½by ñ’XPbEŽáÄæ1,ÜBFgÒ3îR}:+ÚFw·`É’C-^ Zp]/Äjü®FUÍáÃo—Zæ®Ülã7·¤ºq©ßÞK¾ùöþü}RËÏ`¾ÿ”v€TÄAþÝs{ôŠ" ;‹¢85þ'òûŸú~¹Œn?ÄvÂ5[%æ!w|=ÇX3 K™%PHŽŸVªåPàa!ºLûp+£õ-U×+Å9—[J(I5W¢là`¸¡Êí®É\9LÙ•3¸”ä5ÁdÉ;Ķ´ÕˆäÝÚceüäìæ÷î=ãG÷ÞºqñnšeïâuwªVÙ»á¤"rñÆÐÝ'%fóBJ vSE¤älofM=w¨®Ö²õðá×÷RT´x²ä#!Tx‚øs´¹‰”£ÖZ@D-$ô€²²ù±±ù={ÇøÕe?-Úfê^eK…bIxÕK« À˜-+I›eôôĨ¥ 0»m—ŠàöáY:=‘³÷¨öþªe“(æÿo8²ÚYëz@A-po)5J>Ћµˆr¢vÌ@ó—=ÁôR±”-Ɏέ`¸n:žk6»*RbWIÔ„´$.*’Ý£T¤ÍÀk¼H¼å% ¯n¯‘¯šß4q÷Ï•DŽÑêö½†×`ð¦L)ñ(.<ÖÓ ™Ÿ‡žñS-uh\|=(~0=œ”]JƯ2ЄSÏ=„›‹¹©F7è±´> ÚV í1‹ÞccÓP¡Ýj³ˆJ¾Õá°˜¡PêñÚ’µƒQƒÔ,^$Ä`–›éÆÂ„ÀR;J¬4B™—ŒÈÅ›šÝr8ŽHãÂ+ä›ó‡|‹YBQ©.Ú°Ò††G”8õÜ;pìf}-gìµëR²tjÛÙªyuñå&;p’]œgïŒíRb{n…dë54¼”+>•ðP å²k>T¢9, x™¦>Cí²½’Ãüˆ”v@¨ÄQÀɦ‘¿¥m&…v1D&± C-ù€xߟNÝè[_®¸€` ¸R~OUzäR‹%+°Po1*ÀQ²÷bPOêÊæ¡9\¹\Ò¾@¢ÞA£uЪ;- §Â=»z?\ÑQª©yˆÉÃPQñ°°ñv@d¢úðü!ÿ? •QÓø€XÐK8õço¿q‰^ šš×…î—¢gr"Wn3%׵凭>€U(–A¬ 0$qÎܲD&¿F#ÕE¶Ý°Šž…RQ8: öëÇ ý ã·D«VkÞ€}”¯×ƒ’o¬Z!t ¢x@ë.Z©ßö-<—`’P9ñ‰oÇûolöþa†à¤Sâtg}nÝ)±ŽUMðšxW²a,Î|žÜÑ–;Áö6*˜ÕóIp'\¦î -¾1@³Z¡XoЀáý×fQø·ÓYÐ2xaÑÃБ³F ,ñ}ä.£%s—k> iå`ÛV&1ê·pèÍ«×Ò û˜ (Ô¶C€EádŠJyª±¾”;Ûʹ˞²£9.¬N~ýÒã8ØoaN€ƒT̉à Y’ó™5ÂE6–² ËË<–†Qpy45·Å»Ž¤Xó”Þ9¬Œ-¨PMˆƒ3ð–®`âBx—Â<€”çÔ’H¥t8õgv|Þ/o­]ß›~³ØM4üµn•pK˜³ê–ÚTÉ‚íŸrvÊ÷cöâ6æU0‹óBÌ8˜Ý£%C~£%¤Îä)†³ò²´n9 ìð2ía!v yÑë4ÅØ°pÆO.+a °’D’üvICÒ#oþ•‹O^7£ÿ >I•¹’ìÔZÜÂjŽãµ;†–<ðäÌ;qôFf¥Ïÿæ»mܱ0/= H ¨2ïµ] €@‹g¢P% ~Ñ]G¢æe¸|‘ÅS3¡ÛWo~ÕÔF³gÔ‚¢"*$’@ÒÒçàùåëgôaÃJ „¾ripHC’@½Q%son±ºoìèqófg>óÛ=‰pÀ¼åm¨“ ]Ópi˜;5´Õˆ1Lj¥êT ¤„Šlp¦ L5º¥;WÇË×Åèú!œqØÝ£Ó• 2Æ|Û¢äñÑqpÆzv´ÿ(ìõ6ãæ`Ðõ8HÅaóB,95Y‚ëo"\îl<•§v;Šž½›[WfCƒ‰*’Sþ:eéÀ?¹Þ¼‚Ñþ#(ùžH¡.=I»òVö%dª@E½Å溳á=S·«5»ätr·ŸGZ<ówßrl×F'9òúœ‘DÓ¶ hcÀ+k(`Îò·ÏáðxãÏbI‰»™c½0Æ{ŠÇn”ØK±Çá‡`"koþ\b;ëP&ºGÏü½/ìò¦cd Aå¦9$êv5Ž´•pÔÒ}(€ Šƒx…<>ï?am›8DåZÛ[¯ ZŸA–^êò&*¨Õø5¦—CânŸrûÛNìî¦÷8•s®m›µL‡äWIT#3Ê5—l›K˜ý‹%,l.Ý:eß›£7þî†âx†í“hÌÎYãµ¹iÇÛ•I²“pO „4p†õ¹¤Q¤…gÿöW\±›—­ÍŸÃ¢'œ²<1–´|(óæ{w.:I¹}s×*ðé÷àQ%–Dd“=×UqZ; ½?Nü§ßšU¦%0Q‘V‡+0‰´e·MJ'jn¼|_n#Z‡ ɺ‡@Êl±üçq?3s÷×>ýì誾õ3X€àT« 1 +ìR5P”±ópt=îÞÿȵú>¿„y'I Dë *ˆ!z ·‰Ós?|s)Å/öø“oÝ¿DMÒo³€m#ÑÝP…”êpÔκÂIò¡pp‰túk~óÙCWmô¿üy ºmlˆ5Z&ub*yÑ”#\E‚õæ‡ì?‡o{Oí ]Â`Ÿâ”*>Cˆ@#PN÷ªOÎýèÞ:ü¶×.AåQ Ucå=C¯ÒÔø]Ü~qå=DÀñÿÚ×…11¤œ9ôu§>zúªbúkÞŽ‘¸> bÕ2E¹Ía~¼ôŠ›n[¿½ûNÛÜF[ w °Êvf­¸€.&È© ÿg?õîtbó˜ÉœÝäÇ|à3K@÷˜zÆmðk0X6¢5^¦ex¶§ÙÁ(‰ÁSÔn€KWŸ½gŸ+,ÕJõufsTÂíö¡ÃòïBAJÓAåæ–0~ý¿Â,Ua‚00Qò ŪșñÃØøÔ÷ãÈæ±›› ~Áê§Ž‘2$‹qÄQ9Ejl|ÏݹõÔÑÅÒ-`òžØîù­……#Wmt!ƹ ƒxI†ZªÉ$Á@Å9b>‹V›©4¯ÿ×X&±\s'Ã^ŠUÞ$áôŠláÌæ÷áÄæ»nXDÁ„Œì†—Í3u´·ŸÙŃÑÔFMòD®€>V·‹"I´tÕFWÅz˜F)´^\nÊ£rÛ¥–uZlj•Óÿ ïøa,õäCÂ2ûfÃ>ƒV©Í†ŽÝ)”#€œÝ|×Í1þÕñXÒ¾C„Œkb&ž¬iáÆyãÅ»Býn\º [™§´êè N/|ã‘«2zé"ùLYÓx)4ç@Bέ×Ìò,Ž_®Ë<÷#XéÉ{ASÆbà¢YŽÊ€ŽYî!T,¢—³Ïýƒoü«çGŠ™GŠ».õ6bý]›1~ãµ&Ýà]Žó™}{ú>-^{‡5êøRÉeà“Kë‘ÚÐé¿™“>{½–¹ŰAeÓËÆü‹3hŒå§ >.r ¿¿ù½‘†ÿâýßH:^K0Ïê³qµf»ûä<:õvk’‚Ö•|¡G'„,<óõo½çÊ9b†õë¼¢ü›AÃ*IâcÃ9Â+ø9¯½~7êuïÃz—xH™§nãxá\· ±A‚9ª<úÜ9»ùNÜ£ ÿé®[VʹLÂ5#š#* MíŸW”®‡Hô>Hn¹—sHèyùLþò1} kö¡øhŒÝàïd  yâVåÇ ¤»Ô_ßòéuïÃ:‘Õ)1í8 Z³Kˆ%N>÷œØ\¼þ™þÝ«£q¯3G qˆBWêöÌ$ï° ’ùðžÙ+RsJBg!DZ8¹pxöŠŒþšïŤ$ú©ƒùñm×?ÖoS!º m‚Vn~¾í=EB ŽÚ¢ÏÆU; Ì¥šXC'c*èÑ]¹ÑSΊY…bã¥èvVu†2ÐWÚì¢U‡Fyãúês?…5‡„K -™#—V‹Æ9è £Y¥c¸ô‰o»¾S¤w?ý±‘Jz¬$"[\?`79´V¹Ë·^²Û¯®_PJ¿ f?ô5ß±pEFïÉÿ^1“.\|~Ý¥2×mâŠì‰7¶¯>÷ï±ÅqÒ®NV†/"üœ *YrìOß&gþäðu,í.ÎdäÙy¬ÅC§MY»k9Ûwe6xP>fŒß«áýWdtQlNrÞ³L·Ñzý&‡U êâD®³&9!¼á`ÈÜOc(ŠÅ"#æÂ?*‡^µéÄ/ª¡(Ü´yéö?ó'‡o¿.?ÃÝõ±2-Ç2,4SÌUR“7$!:Ƀ’ï`ñ¡åšŸ¯;re1]±f@ÕŽ±°HSÄ9­8¨×¨2øË¥›`øÿ€' ¾§òöÏÕ̴焪ÔL¨øvÎŽh’S×Ëð_õëk+QºJ’´:~‡KßÑpÉȘ¨j¡!3vXÁž4wòk^:¦'lºäÇA¬Ô¢ î]Uìkê ”˜ÊöM¡N½á ,|¬¼ÏPy‘ÀâÏK'+ f*$;i°}Ïlž½.%]ßçÛÎÀ—Cl·FŠUÙ’&3/`iÃZ‚‡Û¾¤Ñu ë²s´É¸üÊù¶g©:¯U ‘3ßoß<’äVðˆ’§ÑªQ wN¦¢Ìµõoia¦BœÚX˜¾á¿ö™ÿ¶¢”±$ÍéäƒW{ïå–[“íí—‚¿›Ækª‡CåðKý"0žHl² ©:Ñÿ­Hi¨;ÖU!¼¹ýí®ÃÆV­ ¡ ¦P(KÊò¡7œ6 ee溔s„/Æ.·4#tî}ÚLžÅQµÄIУžˆnþÄüâìg5úÜ#kÏsâ@G+< E@í̶Ç|g¼nÜL£Ï­`<Ó㈌kîQ¤F =jÏž'R§Sò-;öñoùkOû=^Òý)ÒçÔ•8®ÏKY'P¡¢ ó,Ý]}­ëýûA¹ãö™Ûç?«Ñ-‡GÕ% ºrm)W7*0èFGõDáÍqšûŒ¸Å£­°@`¤ 18Œ«&Öº¤†Õné¿iªùÐp8î™VJ3& kÂæ†§ŠÙÓyrRfÝÌØN§*!ª“tð%Np­¶yàÁ¡*)8Ž-ÍDŒcÛù¼ °ŸûKXðX¾ Ê Y ˜K˜ÚÞ6d6mÍœœ¾‹ŸyŠÉ¦çnÝ8ÆI˜.N¾˜gÓŠ Éž¼ôMb3ŠïפGD½TG¿A³Ebvóö†áßø‹8Fâ4Êt– ¸ª„9‡ÄÉZŸÝüÿ¼oplº·ý7†„ ÝãN_±Œ³qæÜ0E ae×tBM /ití±®žIÄ…¶gÁ2@QáZP¨*w¾´Ñë½ñ¸Õ8Œ7誽ӬÖ*›‘°÷VX‰ÈRQ† kœ,7¼ºPm· kr%ÓÛû§'‹zh¸:†tÃr›Ñ̼… #ô ü::'U´,2›®àõ×™ËöÆ[i–¶IVŠÙl÷„@îßkFÿ‚“ãÓ¹[—гÅã7,ÑÓR„L‘D¦ú³)Ó°:ÔX®ÍÌ[jçØQ$J&¼J × ^Òèd£8żMÁuS¥î`aPBFÐUË„×]_¸ÙcF—ÿA»ãvSXÙ©q”Èo–…€š\i©™Uþîßùê©å-ÂnBuÅ©H™ªBžxøéšC¡H¢š^ÚèÛ=Ö|¢¥Ù¼ƒ*™™eµ'£D㣮ªsŽfó‹)=ieLŒ‹ÊÔI"\f$߯Ã\ZšÊ{ú¦ßùùÓT#> 1ª+/½ƒ‰ X›œÔC ÁK}n cÐ$5ú ¬Jl4vvóEßW¡mÏŠQ,ïçÒÞ2ú[Vψ4ÌIQ.u|°0#_Œõ/+u©ºQ&¨¦#ÃápjžL!«jÆBiµò#š͇#BNbƒìHv$ÓéÊb †%ƒ+'9ƒŠÃ×NlѶÿï Ëg)“…ñxï¹xe÷”•efÐÏ!![]¼Yt¯Õ…™›ÁöÔ*"­Ó¨Q͸3;o¡Y’Ê¡C€o«ü‰­Ï»"££Ç鲈Fl:´lTÂvÃ’á×g´q#©$EêEÛk·}ZµDÎÔ@-sׂ»KîjoÁÊ7ŸbB'Ý*[‘¡ Bå®\"ËF51”u:/ÛHὟÁÐYmvÎfpP}ªfªä,í†Ä$xx¼¹·nû[žµÉPu­e¥~“r_ ª€ 9µ0ÊôgWFDºP;|;ÚÀM¸! I‡ó·N['Wdô×1,lQ_pÇ"…XfÅEèÜ\¿õ¾ q®b‰û÷ ‹_+NòÔœ‚xlµAÃÜw—¹iâÊ´ætè¨CºnZêrÔ)ØÚ™31";éÊ_§«¬„MIU{bïIÅæ]pN a§ (òûö˜ÑÁÓÕȵyÑ3‰ªk¸ù4©Ñ@KÎýÌÔJ72­×Ž_²v©A¡ëš+Fµ2iW˜Ì¢Wlô¤ÒÇéz#Æ÷ëä6 Ÿi‡Bê.sòÀøÙK±½¿­Övª´n´LÅ4S(‰l±âö»…i•n"3§|¬¹Ð¡òdkŒ-©“ j´HãâíkWlô׿C#ˆë€äeÍZiñáA((·3dûKãÑÞ‰íw¯ŽÆ„ŒzVªé°»ÛŒýô‰nW˜ŸŸV鶽ݯg6LMärÕ3öƨvÙB³ŽÖm¤«s3x²‚-ß KLn.7^ÃX0!R$Cò¡;{+“Wv§ÝȵñTµÂ°¢F[B!@î`ÿú©FÞ¾öøˆ*›šAp ¦ Yz…ŽÙ€8V‰ØtUFOÄ)„5Ö¾Òš)r™ Þë{„å>¨vyÕ4öŽx0µ[«Ì•²8§–IÊÔdðÁ² >¿MN¯^—î\xmÖ‘åŠ)T¾|ò‰Ö RdRf2º*£¿þGpšÄpç"ŸjaXf[Áßz̊䈖Äl¿'ø={¤ë–äT©»5ˆ`R¨6:¤ª7:ßNˆ™©eð½Êº9¶vãàb.ËDhV‰‘)ÒU =†Ð %ç2–Øe•i· [±®Ò FÄ­Ç ?÷x`/¸y¹Äs&ÆÛ´4c§Ë;o>cVݬ7A÷œZ˜Ö$kªhÆ• 1²4†èQµò(‰ggø«¼éæÉ#p¡ ú .ŒW[`ÙhÃ×m®E7¹“žì?1^»ùnþîáÚX•#Ú@Á唽ÇHn„ÿ¥›_\L ŽÝpš[¥èRŸ+;Oè²ä~HæJ^äÜU}î8ÆDÑz•*ܓߙ $hÍŒXþ÷í¥Ç®‘uC€˜Ý¾ xî;÷‚“ß¿¦²âJPd†e'ʺÒÕ’N4È„íëöO¥^W̬"d£ý¤G›æKs(l(A·‘®élc%¨DKœt©Ëímy}UyŠ‹êEÿÖ€XØÚÂ#\ÜT“÷Ĩ!?Z‡«Ž5fæþz)×À „¨ÊT’¹£kï‘I(y­—ÖDð½R´£ò¤†Öl¯×pÓ`îÇ19 !^mö–F6 ÕÕ>šEvÔveeGyߟ?ÿÝÌøNȺ²`Ø2ø8LÐ57Ëùæ¹¥YʨÁôÞS5“©¾ÜÇT¥Ã¿9-š‰1®zûöµtíoËFž@¡8ÛŽÿ»×嬅G£zËkŒ/’üÀù5àÒÂͱzê6ÙÈsWym"ÄÝfïõ¼Ë{å_šæ§…Ìi\»Œ¨ vt>\c$”›Bb¼4::¾f£Ïý8†O›ÉÄe óŽ2ƒ¬BvnD¦ƢSã‚@ (ólµ"Í¢»í™ókϘևv5KÛÝzXžÓ¶.Ëí6r¤A¤ùÆilËvB¦;WVG³Ó 9iÝ:6›n!§i•|£Aç`™ëvyô–‹þª41~ç†áèâ'÷:‚‡Ö}*Ó@%=3Z;>w ?®­ÕòÁÚ(‘¦HI¶- —ÍêA$Ìî›Î ŸPÆ¥»ùí¥áÒ³&v¶;&óX¬¿®šÖvmô¹Ç1„fVMÎÎ]sÝ;nµ¥ê5›/ªkÀ"NÙ ØC™ zà h8“i\Åõ/³: Áø5Örb ‡Pº©À±Š´1™ûdK^Ä+¨âBÞpa íþ¦çDmY͹tYsv.5“÷é—p§U9?Ûãf õ#̓òÌhí±¹ãIÙðUšÂäKÜ™Ö6^&gÉHa?¥ ¾gº@F`H|êvr-ˆæ|ÂÔcD”¡XŸŠÑç~C‚Ãf…—/×q¡àòW)åZ&^4í?4[ šýd0¤Îüþhíc7,¹ë™Îù‡(&Æ›[šU—&pׂ.»‰ø,ÜtÜ{’ìy&:nlæÙšíáëNÅèÍ>$”M[Ü·“:…¸×6pOÃQ4Û'…8¯5è{<3ZûØ>ø¥7 ƒÏÙræTÈ3O¯6jKBœ ê˜ÊMçEŽJC'ßònÇrÞ<ëÖ1&pÆñú573·‚Qþ˜¼X㥸yØ<; Cv“H’àRaËT[Û3¿¹ñ© óÿë¾/º¾-VíÆå6c";n¶3c—ÕZe·Šµ`4; þR×IAž¬M‚LƒbWïŠw¿å™ evíS3:ÌÇ Ž\;Îʶ˜)"DFÂ`ü°tbK…vÊB†Ú*T¦/t3g¶ üÁƒ_*×/¨Ûê ÞãÌ•‰µZ.Ĩݞ7(*döüøü\üm}Ó¢)SjôÎZ­R”¤ )ÒFV§nô¹ŒUñP" o¯õºRBFIVdK\;-îφ oÐ÷áù­÷­ß÷år=â#qÿrôŽáÔoüY š±uÛ²øš—ÐýñIÑfÞjÒÀ¥s[Fo›–g:^:»öìùgOw ºG—oVÔÆµÇZUûE£”7— S’^éÕn°¹sT\”¦D³ÍËÒ,çKÓ¾33XÊFi¼T:4 ù@B]+•¥Y…}€8TçÂEÊ­ïÛ Ñ™ã3ÛK¿ûM_=µ[ÏãÂVѦ\Û¡ÍêÓ&™}ñ^–L•#e S™ÊC£NƒÊ¹†BÔ ”ΚY¹®FŸ[Áøø ‚¢"-•MÂP†aBB#P‘Ôè¼hÐV5¥FÃ5Š™GåÒÖ3kÏŽœ9¼{Ã÷œ3nT*,ÚPkÒ‰‘EÈëx™N_]Òx"Ÿá~qHƒB¯ïMòJiÞc ÂõR:AÔ=s »Ñ9w\[ëÀ^¹IÙÍK×JlµÜï…­í}g/=ÿ™¥gï[?xpÆßF¬.AT°!AÖA‡fôÈ4cÄš5Óé¶1‚ ÀÖª‹ÅƒÄÚÒèí£ëntø¼_Äq §Í‚õ…4¹eqĈÈÚ âyQq’´$[lZŠê —ÎþÅ'uñ÷äZÆŒ¶13ò!çÀKä¼»®‹½¯ÀTñY8 ‹MÅ车¼«¥Ð¢¤4U¤]îW»o;–í^7£Àÿ³¾[)§PjmFI¬Ú£6Qúª~81æ·ßVWU𦓠òŸ»~ˤ½âÄEà N-|³\m½¬e‡ ã{“ ŒÁ¦K<áËŽNUÎ šiÅt)Í—GñœÃ~—ú¦Ô¿¡F€‹ýöÛÙ¸œF%åûpØ5Ö¨+dcN(?5%± R‡ K"³˜Ø_xŸ½*ãÓ±áÒ…÷µs…¦éÑÑæÕ 9q0†¥o’˲°½±•Og–FŒn¸Ñ¬b,Š{‰n#Hj“^ÇŠ5YÀ°¦Âkö’Ù;Ui"¡B]yQ ãó4¦²È}ø¸öú.®8µðö—4~ýþ µôgiµ_Œº„·”ôÉÕÝOòTMØ$†Í\{«Õk÷ØeÑåѸxóêÅ‘@ ¥a£”X¬,Œ4ú¬ \0ú^!îj5Æÿ¶½]±R·fú³[[Ÿyââŵ¿úuïS ‹—yç·£NŒÄ×Ï9&ð…€.²éæu×¼xq FJRðR‚I][ .]ÒÓ7Íèð×O~z]Eî%d3ˆÜå_*’WgT|ÛùÝÍÆƒ°AØ÷æ6c¼!4H…G«*T1Ô"R:Ûó…<ñâ¡/|§œZø>ÄÛßPž-W@äÁGiŸó¥yR=ÎìžLQfØ(.þk¯Ù±]û‘Vß{~§k¿¡FÏ®~¼éqPBò™jÁ ux¼AÍN“’ÄhòVã¤öJ_êÕU‡Ø[Ô Àasû¢žýÔÅ ‹ã‹£\ø¿®"C6{UD ’ÂÏ‘ñwR :³ûM”ɲvu|CêØRuí"XyѧÀ ~XýÄZ¿Í{ d—õ“ûë…æë#E®Ë^éUaܨüÞC¤ ¹&E°ÖÛDé”ßúô¥'´O‡ˆ$=ËÀ`H"Ù„¡VÂgÉëÖf­¥Ý»w•Ù»×A¨,Ùø¡?þ–§öŒÑà‹?ü‰µíN¿B)½CšQˆ·1q ³ó‡ ÕD£ ¹-ئ¥\rÕ\‚Î7ìZ# ‰"@Z$ÒÍÞO;%@Њ÷åïoLR$vsSHäfÕÌóR7¨]Q»åÏê,p“oY=?¢v÷iƒ1Æ·gŽa¡n×Ð|©z+Q"ħ8kü-KntiIc5¦˜Ëœ˜‰ÿ펗6rà°¹1 ˜Äž²ë›žßk—;mLE&,̸ɘý §÷¤Ñ,ì#Ê{É4D¦Ï¬*,;ÿÂ,öÎM„AÒ‹eô§kq™Ö¬QŒ*I£.Â+±8CÉUi™…ÀYÃJÚï\æ#zAGEáîcz!@ZÈ0²„x“…xñnO½þËžþ£{i™¶BÒ Zsµ]œÇB]VÓ¢uuU—™%Þ [" [¡±zh«QG£šTW‰%aÓ¼µ»€KZq† A‹L•K³Zó†°’s”Ë/ù Ø#ƒOlI(GÁôÉ —¦uˆx«¥ c•ô_aÓ áÎvØÏ7ÔOÛµXËÇä@•NuÂG ÜtM·KÙa1=$l2Á}_yïùûF·ŒÑàà¯ý'‘º¯„Åù ät6 kq箟ŸÏŽÍ¤‰Ú½]nSe=DT¥Ý~Ô¬ÂØz ºóµ¤¬¥³ÃêýÈîÚ«KK¬¨2oB–(—¯ÈW`=î~zmô•¿væ. -7S—¨;DK¶ßgWö–EÁÜ*ÕA´ÉÃγ˜Ñ· ©çÐÌA¾½¥éÑüß÷ï"›7 »x¬<5›±ö.O®dökáâ]Ñ-ß“F/¯þß[Ö>ÝEÈš5“•ä_J­ÒŒ‰d†IrÑR± õªÝwb7X,—¨á€j¬ÒV¹môÔÛÞ…Ö¦7`@v»ºéÁÙüúp|’]¼h¿|ÅYöðãk‡Ï޾î™ß¹‹”e0ii´ôH"L¤ÔµÞvµßLœ”ž¶ª¶Ëi=žçxÙ:)gÉj_cía;¸£4zðA¸—qÆ})Üf=‘ ìðÊoùž7zyüÍáo-oQ¾“ ¨ïXÑêV«1¢ÛmØD^zò¯—Á:yåVG:³Jë+“£êa£›(%%ËmJ2ÐíÊ¿«ÌÌÚkDºõx [ËWuxp‹< ‡£¿5|æm*òÝè¨N$kˆ½õ ‘ت4L®¦ÎFµ‰´P/b΀In\\l[A¦úà¡&/ðí±»˜.ÒÍçÀs @;~·ü–2z5þ¯¯Ü{úé»zÈwSÒPÜl•©´ë£ Ûå7NÔhâDºVVhTœëdy#¬ÉÉVfUt¤îŽ2E•Ù’cX>±ñoÿß7\53ã–3zy|ãG?¼òýÐ]½ÊCÊ4Rß;êÍ™BH”¸†²Ýµ&uRÖØºÞB­ŽPûýîVŸ§ ›Ð’¢u¿Êô ˼ø.Ü;ÓÀÄŒxÒ-_ËóܲF/û~{uå¾ßþÀ]ùnE·Aïmw;dÀ i£7Õf'#x¹f ÎÒ5[Œ#)3¬õð†3yØ DEÀ¼H’]ýŽ<üÑó÷<ùŠ4zyüýßþå•·þÎ/ܦ{•8áĆؔ)4ê2ÛG‰Ù´eVÜH¸B*¤mC¬X}¡lw¦EÅÄ!ØÙeLO{/ìÉw_s€—Ùã­Ïþìððý¹‡(r‘–Ud£a””ÛEzÐ.—7L9;ÏÍ_µ2T»Vf»®õ+µºFÝi, ËÇÏ]óáÁ+àñË_õ®…žx'™ˆnÀ ž«6™vÌÐþ^»/·8)"-Â]>aݯx0þÅÆ;®ù3÷›†„ðýçï¹k7ŸÇÌ+ÁèþÞãCCø™¯úÇ i»{'%-d…ˆÈt±LßÄü5R« Pi¢0ìháú÷‰4$]àîÿè€èw½ŽüqÓ_ìqbþŸÍ'M÷¨ÈýÔtOîñÖm³’+¨D:S¥«†‡´u¼—p3¦©“³øGÏ}Ç5YþØì©YÜ>sìøù¯_zÕèS|üÔ—--0á 5ÝCÊ<™î4 '9GÎhPÆ>mÄô SûP‹´—2aéÜ·_Óg~ìM§»‰ã¯ý ?ñ%ÿf° €´é¾\5 ˆ4ߌ(Ó—Ý•ú> _¢S/@‡¥sÞôÏüU£_Ããý_òƒííí°›Õ$³àÌ= `w ¹–Ön`¸û,a V¦ÁòÿþÖ›^1ýˆ‹ï[@§áIEND®B`‚instagram-feed/admin/assets/img/about/plugin-yt.png000064400000015477151435171370016375 0ustar00‰PNG  IHDRÓ?1tEXtSoftwareAdobe ImageReadyqÉe<€iTXtXML:com.adobe.xmp XëïUIDATxÚì ÕyÇû½î¹gvµºesƒ@P˜ËÁ˜`ˆ1I‘Ä¡À ìU2åÂNÅ®8¤L» Ç1&‡ ˜âˆ)GÅep D\‰mÀrB‹+@ÀH€VÚÕì1;Ó=Ýý^¾×=³»ÒjW»Ý==Gÿ¥j½é™žéíþþïû¾×_÷c–ei$ŽC f`$ö/gŒÍÑž¾fŽwRÊ=s¬ŸíÃ@Xí¤ ÎÖØ·Òi·mé¸Ò®KÛ‘õºæºÂ²4©IÓ¤7¥iiBHÇV ÖI fôiÕ©A ÚÊÿ²}Ø‘gœÓWIúÞt­Œ¾°.G[ jx&«\óSúE-›Õéý#‹t|ØR¸Zò:Aeýºgúž$”ZH©´z™IÓNzK§iÉRÏçY&óFæç•R¤(¯‘N«F.«¶š ®dÀ”¹tÔš†.©µÝò¨;<ì–G„iбq·RÑj¦[­’5Óe»QDÝïYý½’Ž»);õÂ[©Z´ž5Ö5>ÙÜP6›’Mß;¦±@;ÛØ!9õ=r·wÙäÇ$›¶‰·^²_E{1m/i)¨ïp]­éÄ¢Q)'›Õóò9¼PÔKEV*’$Œ•Ëy__jÅr½¿Ÿ—Š“›¸mî,ò×±Û½N.˜swxWí¹ç­7þÏccÎа;66ŸÎx†½Nq¦LC²ivÌ&eZ»¹íÔ÷$†ؤä’““ÕkK¯-Y£1Më»)Ê_^Da˜±|ïï×õ§V­Ìû¡Ì«Û«„X {8;vš/½R}ú׿–—äŒ?Û’+K•Ü3V.=knÚ.“2™öÚ-¢Œ5¾l˜’‡ÿÖL¤V®ÈŸ|Rî¸c2k÷ò2»7@ý=E;öÖm#ÿzoõ7ÿ=ä…H 陵ԥ2w˜Qo+D‰)mPÃáÜiJ‚Bß9^üø)”08åö’Òé4™þØÃV{jšÝ Z2|²±9·ù”2‡\<óŒâé§ÆµVÔëSß_ÙôÄð­wøk2®È¹.zz°–®[zCùßûðâϯ£<¡]ŽÞPÇ/&ª;×_gnyÙ7ýŒë0}0— xÕ0ÈDx63°îbr”´tä´U ë·^{}çµ7¸å².eÖuI8Á`ŸP®\5ôºwE¯ÿœO-ºà]<åä%_þbë2cÞ ë¯<ùŸïõkšëRÇ_´X?X(/”leñ•_>=øÍos.ðjÀç­ï\x‰Je„(är,ŸÇéÁpO•þø“‹?wq+ò(Ue†;2ºõs_¤vÖyÛ‘cãb×.­Ý—»A—BÙcÑ‹|ÆÙ4r÷ÆT*ÕÑ!9©í_ÿ{Y¯SÜ_œŒØê¶–8 H¯*¤ Þÿýî{‘k 2¨Ðÿ±'Ì·xªÝ½Ë'¿5^ûdŒWø@Ï ®™zCˆ;¯ùëØˆŒ{ð›WScÖë\À‘+¨TpFÁB)8NJHûýí•§~A]mÇ €öiìþ}±fçï—• Å^óº¦ÆÓUX1²ñÞŽóŒ1êþwÝþC?÷Ý÷Ž#)×0< æMÆUu“î®òøÏÐ D Ã0Fïý©˜¨R÷Ÿ™÷;Y­*WÐúbÐ;ðœÀØC?ï8PÙô¸ý/ðzµëÊ]e9:Wæi»B—ÒÞUg«®ë!ιýî{Öÿ¾A{–T°!k5±sHÆ~cèF ¡úÊÑ÷uŠ(þ¹{£—þ†èÅ…å92ª ̹ȹ.%ÄÕÍÿå–G"y>M(¨ô×´*›žô÷,ä®HÓTYAÍÄi³Ú«”)¯—¬=ÿb$N ¬ê[·ŠZÍR$Ž'W0:*ÊeTO€¹£ ëõ7#) õ$Aó…-^üièbÕ•+¨Vq²ÁÞày€Í¿i ÆrR”Q"% éÀÞ ¢ 鎛¿})|ÄÃX¿[.›/½BaY¦EÉ+ éÀ^C©ìmâ™_·S†aLüêYÿ´t…t`~m\ý7Û‘°^~5ú`¯ ̰Zw¸Üæ€B õq]ÆE!hX­zp tÇÇíƒ!Ç‚Bm\û­ù¤Î˜@!h¦Â´4_y­= _uwØï¾Ç£º° W€B: q5àõ¶ ÀòR¶=è …tÉÆ²·­=9eÀö¶÷âŽfºÒ%7 ð"âáá¶ ÀÙ±3Î xVPH—P ,OŒŽ‰J%LU\ðø‰r?ï„ÃBºdæÁÒuíí;Ú$Ïè‚£.qQ²=·\“ÝRHwhHëÀy†QH—0D­w ª€ÆÆÜòHç„@»ÇC(¤Kþì*²V‹;¢ß~é<‰Bºž€7CŸ¨Æî<Ù™ZçϯˆBº€w’M³ÀôÆ[ºâ éz6 VKwt¼À»öĺg†uÒõbÐjC,¼ØºË¦ìE!]Oæccm€3k!t”®…t=WÚ ×«ÁèÖ¹PH×#ð<@¥&² ˜¸#ÞE­‹ …tÝ)DµæŽŒ (áù®Ÿç…t]N£$nb"næ´¬ƒæ PH×íiÀØxìךãP½@¸B:ýÈ#´H§-󎂤´'â=v8ƒÒe.þlá¦ï¥Ný˜ÆŒ2VHßcôþqEe¢§<ÀT<°Ž/[š½ìËùï|K?b5ì2ns@¿'jU­ë.„ÍŸ …tdý¤RéÖŸQçĈ‰ª&¤ÞÛƒè é£Xˆ"¢Ì…kY6 mmì÷ÈU3^T»°" éÒéôyçnÞ:ãt$­d­Ÿ<Ó£ ÀlÎ h!È~é …k¯Ö> ÆÚºÈ­LÄ'åºâf€h QHÇ9(Õ•¹+.ã«VÂd[ÒCÕã-…Vòàÿá! 錓N,ܸ>³î"V(Àd#<'^LâÆ'€)ÌB²0…t†‘>ûO 7_—:ëL-¢IŸø'EÆ'¥·F”ÜRÊ0…t¬¯”½ô’Âu×' ŽÄH7ÆH]C1½¶Žï¿_îÊ+è5p,ê D-£ä÷̇@3…ꂞrƱ²}ܺ{£Ê°AÀ(¸%Á^™·§\A˜é:¥”Pz@IgÌ Ø(n"‰º'+2ë.*ܸÞ8éD…LÄ-€z“àÁW­Ì]qYþª+ùÁáh,ĸ± @ã½uèGUXÿÙK/a}%yù϶<´RH âòº8H Ð ‰Á!H €$'×^ýÒØÀŽÐ\/uÆé…›7¤Ï;÷àCIUA6›¹p-îÁ‡’}Úp>p>€÷àC÷àC÷àC yþåÃ2  ‰¸¯½^¿çT­ÏZõ²\¶îú‰ýÄ`ò iݾ[èáúÆû078<ãa‹yëbë6  YˆCÖmÿâ<³‡Hõzýþ­{~ªá)5@ÒpžÝlÝ~—ÜC$,æùÝ;æîp·¼ŒC$ Y«Y·Þim¼O³m–ͪ[æñt ¶/íG6Õn¼E 7VxO¤c¥Ë¡.~HL+îk¯×¾{ûâ–ÁšÚUš5Þ×—ðgMËWý‚€)ÿXgkÏëȨyËmõ~6׳G½©]Y©ÈòùÄ(Bÿà¹]\joeª+ê÷=hÞr»›W86NAïïO¨+‘ ´çùÍko Èga›yS»²b!3Ð0³¼:[‰(ò˜gh¸vÝMö¦'–²yS»’+`ýý,Ï“k&=FÐAféŒ5blÛúÉ=Öm?”µZè¯rÔ`¹‚b1) æˆçòžøà"ŠyžÙ\[}´¥l²2!M‹õ÷±TO÷Vž †qw<@!PD¹î¶wÍ 7Ù¿øUk„¥¦vÕòyV*öêÂm”Èb(ô™3MëÎÕ¼±Õ÷mÉj•~B¹‚Þ|˜œ'lã0¨ò ¥?ö¤yÃÍbû`L¿çMíªårªz¢]A˜¤4È#ó¼õvíš ÎsÏ·ÁçÔj WÐC7ËËiŸàÅr€·ñŠ*e»ç~-ÌŒzaõ§¦vÕz¨Î7B·Ì×ìêÿöˆùý(ãëŒô£g éü0„‡øC…@…Ïå¹TÔí3ü~é•ÚúëiÙišìB:áÙŸââw ËR¤ ¦‡'˜å@•Ëæ÷o¥¾_Z<Ûý…t P,. t1^*i;‡¬µ÷nߥXŸ"~Šû;Þ‚º»ÎÏx_!^Ó)?°;ÎsÏ×®Ù Þz»›vºk éš ·T‡A˜L‹G·š×ÿ³ýøSÝLte!ïôRìн9œ1Ú ¦-뎻¬;DÔÝH·ÒùÙ/cÀ¢I´êß}£ Âýùw«]RH'Õ(ãÙŒÞßçý’ I,©M_¼`ê€ôõ7SUHGùq'?dWxe¼Tb™L`TK&÷ô¬°«UJŽe§>y®‘Ka¾$¨J¥É ô2^!ë@WÐê‹]Zó®H\NŠ+¨ÕÄΡN›qÿ ̽t4nàOHˆ Ax…trd´s.lû¸NA¯à–€dº‚N*¤óÍö$̃±z^Èkœ»H‚“é FGE¹Üκîé9@6׆ˆ÷õéþÅ`h ™x…t²Zm§7äâöš÷l,cé A‰Ž‡T!ص«½®€‡ ÆBÜN¿|)<ð éÚ23Ÿo{ú¢Emðž–A á Æ+bxX:Nœ?ëí1e‡"ÄÀT¬XAKö|¼B:Y‰©*¤ÑýS.º¨¿ €4—úà*OP˜æ **"²íVÿßóK‡|ÐKp¤={ Mâ(¤ó=@j¿ýÂæÐÁ=À~¤ð‹€4ìÅ´¸Îñ‰žY}¨ '³P÷ô¦9¨‘‹°—0¥……tWV—9jn6”ô¿(§Ìî ZPH'™Š½y>OaˆW›\äz2«SÙ?ã!À>"æh é\¯ÂX¼8ü£NƒÛ.¹žüÉ¿?éŒØGiš*+¨EpÛ´í=×1}ÐῊ‡PµH}`UúàÉÕ1c3˜§+ˆ¢Îñì-÷ÑEh—Öp‹Ÿü„§H80oÂÒQ‡KöÆs¹ü‡wB_{%Š‚rÇ‹4É ƒÒù!wþ#ÇGò€ëP_¡.‡t ÓuÚ'\ &P!ßÛf_-£]å!eÌ ù©£vM‡lh!…tdò®à˜£Ý(ʰÃZ-íĢϜ?™˜„yÒÕ r€ì‘kR«VŠ(U#@fÍáépTj €Î`…t~DÿÚsED—¢1ÙÂi€(DÀœ…tÔÃR¶©—JÙ£Ö8Ý{ÉÚ¶½hí¹šw5ã¡ W0K!éõ°Å3N‹ð·"€7m^qà <' ãü˜QHçu¯\ÏçûÏ=ÛŽî~ƒh‚å>»ÖßK\‘¹‚i…t–×ý÷ýg,–Ñ•—Fc¬þxè’K/ãÒU*ã¶”z±P:ëL;ÒÛÍ"ë­•ø‹µ©ö£4 Ò=SŒ€.ˆ†«ÚŽ3¼kéßþu´Ý”+¿u¥Ÿ¬Tá@DÖ?’VótôõGÙ£ÖÔ£¾Å,Êxœ@úà?píÕÔ®º‰QQÚú)š ¿ø‡_öÕ¯8-xìJÄ6JÍ}ä„%ùyjÓ®#a¬,ePD>ìßøšëº¢¦Ž¾“VÉÀç-ÿúåÔž0ôqOÁ,ÌŠ8/§S¤Ü ÇíûÍ]»­y#³Z3ëA:®>»yðÊ«D­¦K™sݬ‹çˆ‚yAý¦;ô}êO–~å¯$cNËž9×*øp¶þÃwÌ·ÐËŒ+²ÂM ø0{ÍÕð‰_ñ¿xÝEë."Ó­œ’£… Ãàœ?üï;ÿiƒ_ïš‚¼dfÆs>Ëfê1NÌ“?ÆX*•¢|ÞzùÕÚ ¿­þòióåW÷8‘$4¥Š†0¤FKT™v‘‰SÚê-5¡)C—óŒ^õ÷{ZüÄiÙcŽÖûúbˆyÚ)€Itùm{×|a‹õæ›îpÙ-—¡açýír–/_þñS¸9K%W“EI¿¡ÞòÖ³Év£1¹¡Ô0½ë,†«5m·iÇÊvýãå7¼5^»ÑðŽ(›Ú|ŸKf¸¿¾t©±byöÈ#ò'¨,¢4×u]ÙçßLH lÚQsË#ö{ïSŒTëm’éAT&œaõ@¥hç_Ч)aR-SÚÍ·š+ÙŒ³ÃfL“9ý3lrÃ=·š¯-Î\Ãvk¦[”»½l~Æ_?ÝR§Yö¼ wþg”/õ¾ÏTcñ™¸±|¹±|©±l™±r9õôÝ“tJÙÖ ·ÍØk˜Dªð—S©’i*X–¬Û‚vØu¨!ëuJ”¤íPb-jUQ3Eµ¦VÖÔRÐÒ´Ô†¶ãmè}X-i[KR¶{’Ã΂9õD™,õÐ<“ÖR)žÏ)SÎåX.Gm¯‘¥ˆEµóy^*ñtš¥SôI¦þj©¶Íh)ƒ>Àv/ˆôKŨ§÷do&€ÙT1¹œÙØãÝÙûU5² WÚuÍu…UW7àYuê…”¨èÝZúCÒŒºƒ>@/©›¬VÕ £S§^zÕ¹¶Ã8“®Pw¯’J}¡£R©¾ßiô°ô®ckŒ«õômÔ¦ÎV}Ft÷ñDKŠôȰh[ÙŒJŒEê¥ʰš&ªÍÕÇ+…hl¨" U@FF©¬™ë,›Uó ‘]’¡“)SCk<“õ–)²leÄþË9‹y}ó¾œÙÝ3’шVH{UÑ>ßíîø~†]ÎmÁÉ!Y…û3-$=ôÃ!Óù uöTâiIEND®B`‚instagram-feed/admin/assets/img/about/plugin-trustpulse.png000064400000004474151435171370020166 0ustar00‰PNG  IHDRKTÊÎʤ IDATxÚíœylTEÇ·KK+å›rX‚¥€á ‰ R£œ ˜P-b%åHk¢)7¦PD($Á‡A„" Å€jäV.Ë ëoöÍÂÛÙß›÷fÞìvÛò’ï…7óæ÷Ù9ó›q¹ŠûÑ<•AÓ@{A]]Rh0è,ÈkÐ× f=• ÚÎ@2êh&¨ZY†T4tÊ(èPLY‚Tô:è›XýJñ5ÝR ©6hÒ/±: Zj£Æ} jŽ¢' ,ˆuMå‚ú‡ R;jüm ãOƒÞxÐÌô¾l³šFú»A XÅ€jƒÆ€6n€¼­UÝÔˆ…6û¢Ñ ÇLFÉ´éYåCšõP#‡Zƒƒn1€üÚ ªêN4¨ h­Egm÷è#P¼üchÞlökû@SAÏû~8k@å@}@&€üÊň© êÊm tзèT ¦äú)m÷{×@k@ìô wƒRAG, Ý¥ƒ¢Øæ“@û™^ a   9 U´8.9Š‘ùÒ"PCÍ<4 tÔæ·ÿ d@uí¶€DtÔ+Ä’ xÚJÕÁàQÔ´þØ÷7‚ê1÷bˆŽƒZš}|¹"@'hsI ãÔ¤*hh5è:íÒüó1Ú/eКbT!¨ïƒk$áœ冂û„QóTdjS]·QËÉÜÊê#¼yÍUÐ~P>hmZ=#¤K]µÔB;¿ÈNdiA:û'JÚò .š&ÉKgçn8¬½ ¬%qe'‚ö‚Êa@õçÁúƒõ} ÕtQÔÜ€9”¾¢ öàÁ:ÁÀ*(a Hÿt]Ô,Ôûû¹°ØåÄ–ŠÌÄï ‚šþ”¾ÍdìçÂb—-›J¤(ÐAHDs˜Õ™paÝšýF6¨r´cµ.hz yZˆÂºÅ¼¼>ÂA-“µT ±½%‹;^ Ú]‰Ü¦7OÔ9PÛ[‹Â:üœ¡°²$@og{ŽímEaýɼ¼:A“EÔÏbõÒAÖ>æeMq@ƒ@Ù dÒè ¯á’ ÆÛXê=+ ëGUSºäÈ]C ?+˜__Ð} PyNSÛŸ…õóò3éËVk1ü’@E vØþQô½HÖK¼kƒvLÄA50,ÅF~ñ Ã ÈUOÀ6Õ’—`óò=ŸëV V®€A‡@Ñœ¼È†B¾d?•*è0‡ÀªÊK€ùàk Â: hÔ0N^ïI‚Úh«Ÿ ´=›±û:߇§j°°Z €Š£ÛF"†UDòzA"//PH¸¢—…X$…ÀzQpf}ÙéÐ7”ðIùõ–¤ß~£˜{Jß*ga l†Û% $;.5 µs·$¨­ÞN1X¬—x©U‚DÖXAX£$ EÓÏ—LOFà'ìfìβJD»d Š7™ˆzml‘ÏE”îÔãˆ{j¤„¿‰UGØlFËh—tóÓm¨—í$ü*(þIVÉ¥‰¬º8ZÀjž7Xíì$üÙ\uK[&P»24Ïg¬:v¦" ›IÀj&XmÀÚÁØ{É^Ñ<Xƒ$ÔZˆA­TŠìê\‘óã‘Р`XÙ’°’CŠl{5U«bïÒ3‰·9ðk­ ¬\%®WÍó «©H ˜Ä7}a—éħ0ï'R¨ ˜5%¦ƒ¾Èf #^5Épr`ú÷âè†'ìš–ÞȨÜéûÝ:üüÝN ˜V`ò£øM“r~΂Ú»M ²ž(;¬À6˜”19Ü!þ£_"˜æy)ÛÑâ™jžêôÞ ØÖ\¯"V¾Fªb8T¨-Ì®\i[ÌÀr׊ÅP ZH¨¥1f"UQ³_:è˜oÙƒ§›ÌÜçvE@ÿP6=Þr"V2ïîH”_Ǹ6™{‘“nšçgß‘¹r•Ä .£v m|èÃ'¿ß.M‰~ôàÖ;œ[ÓÒ,›é[ô¥”¨9¥çþRýàã‹Z‘hâŸÊâ\ÃyÛ“QêÝÅ»Ÿ«ˆº„ÝôýdÎTÄK÷:¹Jí£/VR¸—ã|ËDPˆ,®ËÄ£ßF¹RÂír…önW™{ôà×s6A‘àºú®2ýèÌ<¤ó¾;aJõÅÓâÐz ›!y¾ î£F.kO·×ºGrQÿ’{À¡1çHIEND®B`‚instagram-feed/admin/assets/img/about/plugin-wp-simple-pay.png000064400000014107151435171370020432 0ustar00‰PNG  IHDR––<qâsRGB®ÎégAMA± üa pHYs  šœ üIDATx^íÝyTçð÷^vEY\âFqA­µ'6¨‰žÛõ41­Vklô¤ivmkk¶ÓšE«¦IlMÕ4u‰¦QÓ&­&n + HD:ïä3/3\ä¾Þ;÷>?G¾ñx˜ùæý6[†\Ì®þp) D X Áˆ@°@‚",` D X Áˆ@°@‚",` DNM.(® O÷Ÿ§´ãEtü\)—Uæ0{/»ZGS¯áto¯X’Mþ~6õ¯ç¬’òJZ°þ­Üv–*oT««àkÚE…Ð̱=hd¿ÖêJãÔ Öѳ%4}ñ>:WX®®€¯;¸½?”O‹>>¡ZÎуõçÿœ¤\<þÀÄ’ÿeQÖ…«ªÕ0ûå«•ôþ–3ª P¿ëUÕ´øÓSªÕ0Ûšgkf-OWMG6í±š¢½~&´#;7À+•UTѦƒù”o|WjâOio wª a›¹ôPÍÚ¹ªYwÖޜ֗F$µRWÀ›ñ]é—ݯ÷©Œ|0s%uŠP-cöœã„Þ“ƒPù@;ýv|‚þ”2âl?Ë^VqC}ê¨K\¨ú |WßCýTË‘Y^j³› Ó Kå›lÚŸ¦Â 4ˆ@°@‚",` D X Áˆ@°@„mô+_Ôð\÷ú´‹¡Ž±ÍU |OTßu¬nT×?Ø÷ÂÉôÈÐxÕ2f,€[9,< A‚",` D˜¾vnݜۇ«ø‚êšúïþóTuC°Ü0ex'úõ¸ª¾€Wê |æ3ºZQ¥®Ô…r¸‚",` D X Á‚:x#˜ã•ÐfËïkC° ïš\Ÿ ; IˆR-sâR®ß–]«"ƒyc‹3›²µ•åWÐC¯ï¢³ËÔí¤nöøúé½Ôs¢Áú×®sôæÇ')¯¨Ür{ÄùÛéq4kl o ®úŽÒò*Z¾9›ÒsŠ)¢y ÜŽ¾Û%RýkÃÄ‚µjûYšýþaÕ²®>#håsÉ>{÷º]"}¬Êªjš¿î¸jYÛÁìË´ñÀÕg‰«°ô:]¹®ZÖ—apGc"Á ñ×·ô1áAê3ëàY | qàôeJÏ.¦œü2ºª½HÕ=äF†XkÖ²t2Ú4×J¸ã¾ñ¥{(24P]ñLþ9n:tRRæ¹R=D·â¾blx0ÝÝ­% íCCcô«‰‹çó<¹ämI/PW¬':,ˆNM¢ÚÁSñ„¼õiyôî¦,:¦…©±‚ýhLr[š:¢ÅÇ4SW›N¼ŽÅ·âSç¯X®ŽÑ<€t¤àç*Íî°íH½²úh£NŒ0àg§ Cãé‰Ñ](,¤éåñ`ëñÎÅ/¯Î µ©¹.ï/ÅEÓ¼)}´_ª¦Ý¥1¤c1\ø]´f‡ëCžºt&.HÓëM`YÿÐ'h¡’.p¿‹ÛK6f©+‡`YDñÕJš¼p7å|;~'íµ3iö¸½ècY/ÉúÅ[{iËaçÞ°¹Ÿt_ßÖúØÞ]­C)"4@¯kñɹGΔèþ™Æ;ÊÔÆõÈ•Ï&S¯Ž[(,þ†ðpȶéüºsGex ??õŒÓ_›»¾ÎÓÿÜz†æ¬8¢ZÆxèS?èF÷%µÒg#˜á½óÉ)ýŽÔPÀ:Ä6£ ³¿çô\,&¬jí‹}ú݃ôï=_©+ÖÄ?¬Ï$SËî)^,© s¶é§àá£i&¥t¤çÆtoôˆÇþÓ—õz#Ï@13cÔ]ôÔ»©VÃÄúXŸì;oùP±Óç¯j}cªuçñ]Å,T|cšóP¢~j×í £õí¡ÇL3K?Ϧ¢RçÇÅ‚evæÕlË(¸#ãk·âäª/Ì_ûŸÝÕ©•ÉfbÃèï¿@1aÆc¢\;ãp9K,XÜ¿òîú_Y¿;**«UËÑ Q4]{D¹wø_ŸÜÛôÄ·wžÓ»8Î ¢é-’»·tË{ÒòÔgŽøåßÿø;.=NyHB4ݯ½M¹pùí9yIµÌ‰kôÀ6”Ò»þIùVÒ6*„f>xçK.|¼Y!tXŸX‘ƒJ§ÝßÙô´B.U8C´ÜÀ¯±í:§×_,WnÐzÅ=ãÃibJ·ÌyOÍ,¤I ÒTËÑÛõ9V™»0#_Øn8°ÍÓmþñôݪe RõÞæziU†jÕÅ3öÌNÍ‚df^ðŒ‰eõè°@ÚùÚ0Õ2&ö(„¦áqA#|n³T¨X÷¶-ÔgŽ K®ëk‚`y¨+õÌþ¼)J¸XËw%#üNhöµÝ„`y¨ªÆwé¥hþÚ£ÖL¥Á6’µ!X B¼ó~¦ Œv+tÙ[!W‡¹FÖB`€'ùÍ{éôÁŽú§¬ð¬…Ï&«–ëmϸHSíV-G;^MÑ«õfDƒÅüyœÍ™éÁ}ŒÅ3úSR§uÅûX=Xb´E4wm¦ËCÅxAìãÙo:Üî%¬u_扎±ñðÂö ë.-óvbÁâ©´ÒîÄnX°xž$|íÛÙùmuàÎë¼smìÜT}¢œ„ ÷ÄÓ‹UËš®ioʼ ·¬ž7æ¿mÌ2ðåÁgž-*…¿n8¡ZŽ>š¤ï™UO²hÝŒÚE…|Ý–|+äúy£­Ú7èZ… Ê ÚWÏUáñCÚÓ¤”.2r§ñDÈYËÓé’íÊÃ?ŽQýãèÕ‰½0íÇóJéGHujÌÍŠÔ•wwàUÆÞ*ÆË r ÍWÄX×.,7ð¢å†,`¼ºÁ´·öÒæôú×]ïÓŠþ¨½®{ºÃgŠõMJŒàŽåaüíún‚žþÑ¢]ÿ,` D˜«Æ . ÂÎgÐ1[Û`ÆÞ¶å×ÓêïÄ<­ ±lK?˪á%ÕFx5ÌÔ)¡} KOS‘Äß–VÁ¦+ˆk3«cñ´“E&©–ç:˜]Lãæ¦ª–#[îŲša¿Û*²èÁ×$uŽÐHicò`¾,;oÓ3ª¿ñžHà<>ekÆâ}ø%Õè=÷çÇt§P7ï ì-x»ëƒY—UËwéÁŠÓnÝ|~ ާu oŸoåŒoj ¼ûÞŸ~žÔ¨½¼ÁwäÚ…©–ïªSÄÙ¯5­5˪š€wÙëÚÆõ[8ZCu”¿)«ŸO¦eOÔHä7.¢òÖ‰ø0þà²ÌO¾ßæM“¾ÍVãĸ ïÓÿñ®S?î™r‚§¼8Ã'êXÎ \Ë'êXêo—B°@‚",` D ÜàfåÞ°îgÃ:ª–çÊÉ/£ù뎫–#Ë Ì‚å-ð(ˆ@°Ü€­½‚åÎ.º°*žé`¹Ÿ:mrb¼Õ=þ@¼º ûâÊ Ús²È+Žnᙳq‘!ú™Òü‹ƒ`¹¯èás˜­Î¦ýá¾ãÍ¥§ˆ@ D X Áˆ@°@‚",` D X Áˆ@°@‚",` ýo=Rï7JêIEND®B`‚[åü¦Ú¢Ïõ#cšVìÃa?@þÀác ò›—Z{œ®d!Jw=êŒú¬ue9i—ﳂ-Ⱥ½&8Mød_JÏ·i÷1ëôã¶]' <8r­ßCj­Á ‰î<3€ÇÞ\/§Þ1¾(öhðhn|–3ÿ-R¢Ç½·»ËûŽÜÎt§'æYÁº— ×k«}{:Ð ÍIðaÑG ÝAg‚¨Xvêu}{^iNÀØE»}ƒPgóúÈÙ¶?ÜaŒÎÜ;|¥5Ÿà¹‘Êü\7ùð‰Ñ Dxö Ð’ÖúÒ£òí{&Ín@Çžõ¯l›¹äƒæˆÜ4d‰çÝ_—ñ4 xÙ–#iy •5V¶¡ßk8÷þiòé>OÒsÎ&³oΉ4ž”ª±>Ôb2] {}Úg9cú9j÷Úë3лïз¦õuè¶b]~ìÐÝÛ<ÿ2éS¿‡º…Ͼ8Ç€yß}"Q¹óåå Ÿ« ‚œ{ß4Ù¼çXÎÀÐñ[=¯¿N ^þØÜd s:=@çä À¥Åu¢Ïk( =]%Ò^‹/á¹c¾C»+­‰1%ÿ|y¡IsÜí¬¸áSs§(¨®×kÒŽW×»¥é¶Öd4ºi:$<§gâÞˆ^ËïõšfUò`‘ÑWˆòì@£«Ax¢K}F¬–ŸôŸmÕÏ õ¶õ€ëký°ïLëÎ5néÞL¤FËui †DÙyp癀û¬¬:Œ×æÛˆGò3$í‘L[µßëaôÜÄSˆòìÏ$½ùG»™ûÊë KGê¬ÕŽN ÕŸUXãîDw\§ËâK÷5W'oó’hOñïy}|¶ çÀ*›rœ©«x.ÿéa-ZÉ(äŠg»˜·á çæ!DÕöéÃÍDyöó¨eŸãè®?¯I·6ÆFÌ}ÅÂóØ1M—Ö‰ÒD;5©ÛŸ—û=G/¢<÷š1…ÜâµiÛ}gÝÇ.ÞöÓ6y€™tÞ$¡˜×të‹Kýžã¢<÷ €àÏ1þ:ÕÛtÕ"Õœÿ84xͪl°JŠ{À¯Ÿ÷5€Çˆò<Ú oβ Þý«]+Dé2zùhZ#þXmSèÒÒR‘(,€;)HïþÇ2`C„!ùcz”ÔïÇlÿ|bž\úÐ,+1(,éãi‘‹ž],oÍ- R^˜*]cÕØ„–X¥Tk¿‡ž„dš)¤Ë£zu$êsÔ>;Pm0£'çh’GºNçqN¦Ñг>& •'Jå‹™ŒÎÞ†zûç5ö×z¿I- +‹î#îotÑŸC Ýr­B“©#Âúuu¢I*Çš$Éc>ßï‘£Á ˜ÜdÙ¬5šª«VüCË/Ÿœ/WOúxW \`m ™´|_QÿÑšF¹ÿµÕÖò§~މäÐO§¤y¦¤¯Ëï±>ïK{5Wü~~6:Èr@ì² V‰mQÖã5ÏÎd5¸GF¯“Sî_TµãU2êôø<ëÜ ´:ëÉ@ޤÎöýÕÖq]™\ZÍå Ìc¼K°k2×¹Ò&—˜²r ³ýŠÅk½ß%»À †—í•3îÂxØ¿zÐõ€¨(v€`Pà¥h.fÐ ÂtíºÌ¤ü2H1€ì@4É  sNK·ë6:hKÿ­)m{í7«´5?{dÔzY´é°,ܘ¿Ò×?jÖNéè±ÚdÏô[—¤ „µÃNŸ[«Îh¾ï>;ði~Œ/G ðzmEBî8†MÇ5ñ3ý\GLÿ¬ Ìn}i¥çr'=¨³ï¶ ä†FûwÃ¸Ø >ùbÕžØÀŠÆ"¨ì·ßC¹ý~‚V5v¿¯fûñìǨ±M¨ZŽit=¶Ÿ|{WA `ø”ía«¶W`9<H¦ x.í±wo*%¿âpÄŠƯ9 `°p‰ØÃ™z ÀÀ²cë0 È[¸ÆëŠhå\¯Zuù²­Gˆ¶Â5€æ˜ùŠˆÇÄd¢ù’D¿ëLŠ6ÈñœŒDeÖ=ç‘0€ÖÀϼ.ìón¶ h$\Kî:A^øh ÑV˜µW?ØŽöªˆS ½Î–S½Æþy•=7á^ùp—QוJ{ue›ÑNiÉɨ²¿_n?W•ë÷+¼&<1€Ö@{iYËKöx­ýû½¦ËÜõ‰¸Â4'Êüuv@7¸‚Û‘û‘/.Ã6Ø&à˜‡cÕr|é·.æwÜÁÂ7€ŒÖ&º"Ÿî«²ö”{eYi*¦–nê3bŒœµÃ:uçÍ9(,éõœ¼bŸujR  Ü–“¯àªs&B£Ëš}–@Ý]þ:׿#1C‚DÏ M&ð·„kM‘¨üæÅ¥VÚ¨w‘ÍIVO¥GZÕæ¢¾3å c°ž8f«Ö5VÄ­°~9 Í ÆýјŸÇ›wˆ0 ˜>èæuU&.ßÇ®²Йö±fï-Ø•Ipºã±Ý{wÐ6вWlFd¼¬Çæ8ßsÿ=&8×+¡Dëèi/ MWL ÛÒ€îôÄ\©®kÊ”8cðxAîê iÛî +ˆJ ‡«b©À‰FžÖ7í>&ô™n•Ö&³'-îyNÏ)²¡´2ShrOânˆHü³SJÇR7ûü®ÎŒ5¬É>†Ei‰‚<™ ·¢5ƒ¤Á¾a´Õï ÍZ[&?8ÓÊ (æRÓÙèêU™Ô»ÖôSÝ •hW##&p“¨£å¦ïyu…5ó¯FÐþn†™^g]xg~i&'ëíy€¦ QÀc9`Ã^t=nª÷ˆÕri¿YVo€åºôê½§'UÀ#dh”Ô·i{õR2 Ü¡Àšd.þ¡ÊzYñi¹Œ[ºGFÍÞ‰B–®ý[ºWvªÉÆ^€:WV^kŠ´Ä»ë‡^ë×.±Ó?Í@±©¹ 1É:ñŠœ4»òê]iÃM 6‰Çj€û±1€ š@'i©¥@­+¿ÖÐq»? .fï€W¦_¼„N¶a-{²ÓXI(µDŽÝƒüms@†Mà›FÃ$ÜŠ¸?`é7‚ÿ6ZGXa@ñšÀ׌n3šÈü@NpØWc@ÆÍ ÑFŒ&éµ*×$ G®u-Ê¡ÕsVM2!-ûô1 ë†ðu£³Œ.4º…"„½ÜèF£;¥eÛöoí¯Z̵³m l®ZµéŸþÕè4ûë×lÃ=’ŠÊÑ`8 ܾ¬rþmm—Šhq‘~#×ÊìµeÖ&¯|ÖëÆÈ8ŠÍR2gƒ‘A¾ëŒn90€d  X„€`€«<ìo×Óª Ÿ àT¯„¬)+÷ûŽ‹Éžxk½Ÿ\E«‚|2]\‘¨5oÛWeÕpôZ+iåªw½Ë©kBÕwiUo&0,áºhTzcœzÇøÏOr.Öàÿå“󥼺Ñ3•ÀèDZä›ÜîÕª+L£ï1l¥UÎýô.ä´"“ÿ•æKÉ.ß*Ê£hMp®×† ¥9µo}îÃÍòäÛdÀ;%…¯·Kdð{eìâÝRYÓ$™°­ òu`#SB?í@k‚|5K¥åOh}iEï&Л8n]Ý£ A! FÏI±Ù¨-­ ÅN2$-UxÁÿÎߎV…hW­'Æ–Q{P{L´(dÐ"·½"-G¿—iÀëYFÝkÔ‘ÖÅf_5:Ó®áØ¹ˆtµ'q­ ³ü?a» g9PÏIEND®B`‚instagram-feed/admin/assets/img/about/icon-partial.svg000064400000001413151435171370017023 0ustar00instagram-feed/admin/assets/img/about/plugin-if.png000064400000041564151435171370016333 0ustar00‰PNG  IHDR€€L\öœtEXtSoftwareAdobe ImageReadyqÉe<viTXtXML:com.adobe.xmp ]l¼[?”IDATxÚÄ}i¬eÙuÖ^ûœ;¼ûÆzCÍÕÕÕí®jÛéNDp;m[ 1ÁC$†¡E HH)DH$H HlAì?’ˆŽE’¶“î§ín»»«k蚇÷êÕ›ïtöbïµÖžÎ9¯ºœ?”¯_ßwÞ½gØÃ¾õ­µà~àWÕ#ÿºŸšÁx\£ î§ý§LS˜6¥²Çº¹pÜ | ÐK?b–lt]t[ÍM³ýLUðàÓWy…¹­foY¶?Ú#ÿ¹kA¶N4}éÌn°iríÑ=¸£¼øtƒ*>¦¡S¸…•<š}•2föÆí ɸä3iH†’$ܸsÐ<ÉzMטúõŽ"÷­œ–ý Hÿø&ùµHG‚žÜРð»+óXÓÌÙãîÞ%”ܳ»O-›ïÐUÙXü´ÂÜÖÓ^ºð5+~·ÞìŒÇio›ÊñÒ³]r@û9à'åoÛ÷¥]G…27]M•ù;GOë×&-GQî‚H›ÑI;p¼^€îD&ð$T¶'‚ôD:Ú(%o íEþ{Å«O÷}¿{üÃÑ 4•Ùã¬}^æ&Žb8Káí'lÝÇü°^È€ïÓm~èY€ {®Ò V÷- õõn2%ÉÚÅîh-k¸0"HÚÓ{^]ó¯´¿š,K^s%"…ÄZscx¾ýÔÓ@È_µ—öµ±Vá1³ÅŸ¼Ë$Qþ1¿é–ü¨`‹Ž°#àž£É@v™< µ Ï‚jPQÅv—…{0­yÛºÁôsNnÈ0i¬^i/EÀä;dÄ‹rÕ”mÐö’ॿ_VPúÇR’øØ‹>}/ àðOò†T˜Oy9/g1X·h´wÉÏ©½¥(³îžð*C`c…ð‡À ]TP¸õ®Yy¹ ¬¢ýz)t]Ög3]X>N,÷b“_t¿§µÅÏä¥%@C«Šm™<ÈF5±—ÂÜÆAB Ík“œ^óÒž²z¹j÷ª3ÿº•ûh¥Ypz}¬2­&f2Ý}YÙs´+œ,ñ‚QOóél~Z¤ô6ž7¿¬ãß%k*-;&.8ÜçR‰Àû£pFªhRøaa£ºj1õjV'È6Õжœ¡±¸ÃoßÑŒ1è§…¾R²jTU¥LjÙ©è ³²44¼îÃä@9CQ„,¯v0FžV¶«[»öŦ¡›Ñ‰‚ ;Ú<®éøÁΕKb-íݞǑ:™p÷wˆÙ—«¥î¤X˜FÉÄ )~72&î¼ì¬Ecÿ&]gùìòÂu:€Ô¹6…¨'T,I‚=Á›]y¡L²Æ‹i;cFù»Ç v@v± ã*µuQ Aˆ §2ßÉ‘ÛðR¼ EL½°p”ÎqX1NUèþ¦}RåÝ=C²ÜäÁé$…?ȉlZNö”…ñž-ƒ+òT„€sÜt?ˆIk/c…M@"  ªa;Z<ßhêÔÁ%•)g\¬þ0ÔáYñ}Ó¯²Âc€µZ|%™·`€7¿ /Ž0º ¬š­ ‹'–Ï,-›Yì÷]j­!¨/Õp»2L÷%UJต1Ù_©|mC¥:0±‡d[ĉ™ì†[Ã{{76wníÆ HU>xÓ$¶)ï6ðòOä¶tž¼ÝŠ'GÖ‡‘¡GïÐÊt%†\VÌv{²×ìfúO|ËñcO¯öf»™Û¾/npêPùê~Ä7‚ž¢ÖúÉõýjŸ¬W”½ÁÌ‘Áâ“˧>xf¼7~pqýîÝn[ì.2‰µß~vöI?vÜ Ô4ÐZw¶HIŒçœÙãÖðwK‚L—a*øIRõf:ïùð“'.¬‚†šÞ ‹7˜×5¸Ig˜èIØâÃb¦ÅüŽŸ€6Ìãd"¶¹gš†~Ôâ²¶e9èÎ|ËÉ“ß|âþw¯ÿÞ•ñpJ"€õ¥ÓÎLŸ:™AÈY-< šÁ,±_¼{â¢eIÖ‡¸ÝÓÓ‹N‡ ±Æ‚ Ÿ€`àä³kOôl§_¨žª=¬ åDÓ ôÖK¢0HÊ%û!NaÝð‡wõxñÑB͘B -§¢erì½ÇVžZ¹úùKë__EïìH7Œ%&‹#lC›Â€øöÆ/㬻¤ƒ^C¢ö0kc ^‡ yHYþØ=ò¾ïzêijGÉ´C8ÄÁ*(È Jå8:ƒº›t˜üà=—Ÿ.gØî8@°c•QñB Ê~ùôÇ/,œ>rås—É4!s3ÀëÝêŠxéŸo=+ˆ±>˜Xš¨@ŠhÞxÿÀ#«öM§S<ÿ=–ŸXbì0=¾¥2ÿva@%Ÿô+¿¦EP♎þ`ûGr"\cØ êy%Y`}ö¨UxoÿÏ7ªÉ´ a&ØšÅ}|(T¼V$²Ca¿ä‘ÕXwëÉ,fsÛC1d\v*åÀóŸxfùÌ¢~Ôäú(C]1dA»è‹&È`c9B¢žÛz¾Òaòx˜Î´Žj‚ÅFä⌑ƒ f¸ a‚L‡¼trßM=ÜBH§Ä¿i¾bE{£ Œr6x¤]ô<®$êp!ÖÝ“lÁ…ƒV¿ù$Ô©ež™Àò?ŸùÒZBbx°Ô–§­ áêp°Ëî¨ÕgV½Š s¾€Cýˆ¤g-‘Q€x¼æqƒÑò·à°!T’€® ê ƒ«Ÿ»gA¸9¿vûó—ò°ƒ\V×"uÌŠ°Â‡,QºZÐ$L@c‹P/œZè:‘‰*5Ÿ Í…¦y‡¹yu¬G§NœBõ Ú°íªus£SvbŠÙ@/ü¨mÐi(¬ÎlgáøÜÞmôQlÏép¯±Ž¼D†Ú\DL»šlmr 5ŠŸmÝ.­ŒŠãYœ+G\<Tß ¿"Îä“åãVÙq<Üß=üxæ©l¯i$~;/ú · µŒ³éA?~_)µxfi|}Ës‰EÀðÜD+ENiŒP¹6Ùj?vZU³GLÆ ô"Ps¯¢~Ú Ê(ÌIºÐÂìi‡bsí0ÔZyËãü…ᎶæAo/ a³"ö׿YžkÞ!¡Š!qxù\ޤÅHZwè)Á¦{N¿GñP„+ ®@¾ÜQ7™˜Ì#õQ‹vA„Ðé ¡õ4æ¬Ë*TŽmÆëa[Ïý|W½¥~ºt°X׸ž!Ó¤=×+Ÿx怤›‚@” c‡5jfc’“'¹9!š³rŽÃ™;õñi!G‚ÿM倘{Z™8!c £JŽ'I€ÚVŽiÐ>èYÌv 6†„6'{' ñMI`¯qFL­]@pŠØ!íE·ˆãÁJÃÖ°¢öð1à )ü˪µSøu€i„ÕžÜzSo2[?×…Ö ad€§™˜t¹…¦x¶RŠÃX?ù94DœrG0 Ì`Q@íåÙúO!dâ˜óI„¹6G-jZESpø%î÷¢h@Ús;Q /ˆü€xïD×…Œ%‰¦ît4Ü–ŽH/<Òll€-"rò_k3ø‰ÁµóPô|Ø£¾xU;² ‡XX0ÉBh‚mÄüÊ×Aä0™ÈvÐ ç™N‚<Ü›U>íkË6‰Û$«[2Iqnrp%ü–3ÉR«±nt!>zígŠ6@ °u€Äâ353aÌ$Ò”@(a)ñލTáéNNèW†á踎´1Q»Š Æ¢ÍSªŽç„X[ †Fä 2ˆ? úà¡‚ôáÛc»l™6Íåüî(¶m2E\§lj0øÁP@h±sƒÈçSõ¦Âôr[!œHr¶g'ÚùXLÌŠŽ¢xìK.¢JFëN/xs0§"¶a¹ŠõsNÀ!¡ÄÌ5ƒº±Éo7ú*c6´hʺmK!Èn#@¨;ßÇm8Öë`æÄÅHÃE˜\Àâ¡18šàˆ~'ùðdº/ú2‹®‹QLDÓaQÜôé—=²‹ù~g¹_,ÌÀ §gJ(­ÉFžbem c†S³?6;“fkز“Ú/W‡.¸fæZ‹qÛ¤Sî /\y|ÒJ•{‰b)kºŽ‡ž0çEo/ñžx&꺷ž•š˜P‹ƒ·±ò¥ý(°ãÞ;1W¬Îó]¯Y$l&Þ¿5;úºè—Å‘…‹=…fg\mîomUWz+øÚb¹ØË]¬Ôbqm×~‰>Ï8†‡øˆÆB"(%V{jº@>ãb¨`cœ†±‰*'ËH|ÕÜÐl]Y•ÁÌ™åÎêœã…Ù+UG•]æÕƒêÚnuù6îì»Ïv;zu­|ßjq®WÌö _êù®}uN-MìM¯?˜ÜÝó¤ÀGl8?º^Uilñq°-ëâ¤YDkß…Ë¥` ¤ÃYt@<$û1NQŠ»Ö=‡h$3Tp÷Ôu¬ÙØâ”¥0´›†MV庽§Ö:ǘD`¦ÕæþÁúò¥W_ímñç Lµ¯¤ªRêä{žZûsë~pUÏ÷:ksåAywtyßrŽ•ªCËÀìù0%acA Q5Sl|Ð"…Ý(nV³‡‡ŸŠ' ½Ž¿àPë˜)˜å€C§¤FWºj‰DQ`=tn=ôî™#ݧVôŒ8v½?wãÍOÿÚhËž¯7»8˜]à±Îç²×Ú¸}çÖÏýÇáÙ}Ç̨\؉´šczmsxé¾'Obj`ͲI!¹(¨=«¢éaç·€Öý¯ÊE†¶œ„Ää*J# ìòü‰ŸmÓ?µñk.±+j8>Âöôìð&ú½÷ëžYqߟV“×7ßøéÿ¼¿¿Ó,³ô‘ªh×ÞS>qEVß`vÖþñ—_R/¿ôìÇ>6û÷^Ðs½î…£°Ð½~GM«¨Ÿ0›Ópu €Å€bæifM],Iý&š§DHGNqל?î¯]LäŒ]Ñ'·Ù¦8²?‡ÓÜ—Âd¤L¬ÄE¨Yi ǹIS^ÂÀù|׺ÿÜåÑ7ÿ;Û?ýÙË_}£,ôs…w¡ÅþȨˆùJ…üT•¿Ô`vÎþ¼ø»¿Óûâ—.üüß)O,vNÑÎèµë8œ6Ñ[¬·Z ;ævjÅ–>a۱͵ò9ôt“¾„€ýo1ÁR«iá#¥$•ÐÅ*ˆ5hí=Ü«ÅÓkŽ~DU£7Þ¤]EÚŸ‡j 5rúÏŸµ?ÑÚ“Ÿ¹øõO}ª7»Ð›g¿·ð:2ÌD·[LËžSÓÑØj€ñ›ªÈO¾þ·ÿÕ…ïÿþþ÷½§X›ëÓéá]«Öw!L^ƒ1–R£I¤ækdxAäßdµLÌMsSX.Y%Le7(·‹~j<¨•£±Ø4Ï "r~ÊÔ"£¡œŸ¶˜Ÿé¿ÿŒ}+þÝK_ü­Á`žs¯+¡_ˆ×µ¸²8??³=Õ-)~Gä{S¹yÕÞx{wcc;ˆ© (z³soê—Ÿ¾ó§g~ä½6×{îÔè¯âΰ¾Æ|NÓÈXÈ«€@Ý}ÄD8‡T!ëØÑH4À<ÀtFe9>ítÏà?ck?„:˜é7wæÞ7)Ž-(cöÁ¾[ø¹Hítaie¹¿¶¤fúî U¥Ò¼rX ßƒÙÁÜÑ¥Á©ÑèþÃõLut1X¸ôâ‹OÛ=ñ÷_(-ªçNÿíÈŸ'¼]Œk¡Í‡Kã‰Ãh&Ù#gÂ¥µ•Z’œ(@£ØþœŸj<Ì`(›#V9¨yö2 m9±M%Ø&îóNîŸvZwøo^ü_/ÒèGÈÝ^u~uaéäš²F‘öjZ7kYE±œ¨(—¤SÌœ>Ö[YÚ¿}ÿáÆvº ƒ…«vž:Þû çË'Vz»£ñ«×3#¥S|T†å9&1ð¶/l—+Ô±÷T,à Kæü€ÜuŠpLR W¡I¶˜Q_R'Ur$ý«ç×ùo•Ç˳.¯¦º·ýæ/~*®}â׉§N,=}ʺZjRÑ‚/iÀFÕtª{åì{NŸ8w2î–EvüûOMïnÛ.Ÿ\)N.Bä‚$Œ•€19Šg×\R©)ËÓ¾\ÈݧÔåñw×uaŒKÞgéÍÉäkWpÃþjBþ°ö q|1fBjã>^Ø{꘳÷ ŽýÍ‚¸ …Jfÿ­œ\é¬-BE‰N¤l¡é¬ô¯Œ•HîÁ :îR­ ” Gc˜NôÑù“çÏŽûT‘2w”|«`nüð/âþæzgŽFcTßߤ0ŒRR&'aÌ!4s@I„ö•ÖTJJ#ö…Ý&ήHÝy™_6äBËZ#fœ ,þœe… ¡X‡A¡¦Àè}çÉ5}|ÉnåêÁÎ¥ÏþjÏ*^˜x´T-­.ÌœYUÕ4[ EC³±³½½5MBÉœ^¯33·PÎϪ¹ž^Xé|ߪ/Ý™¼ü‡ÐïÀ‘þñgŸ¸óÖ;ÊTáŽFû;ã_yµ÷ƒßZ_*Ÿ^­Þ¾×ÄEù)‡EÙ4_šrYŒàKÚ€¨`# ÎŽ“X–Ì •&¬ëJªœ1­Î°ZÆ`ö@kx©Ž2"ÔíÐ…²¢ß% šjøsŸáo´ ¬øSss½ùsÇ•™†GÒvè'UuóîÆí¢£ sý…yÕeë_ ·ww7îOnßítõÚOýtËâƒ'áøwÿûo¹g9Ò_;½rÿÚýps½ÁìÏ~æÜ_zŸ^š)ŸX®.Ý ÷ 7ˆ5qüÌ¢©1K¿œŒAKº"ýTd`¼¤së‰â 0>HઘùhŸDˆŠØøzm52LÈÄáš)A(Ï:‚ˆv±¥^ž\.ÖœïúpïÆ—¾2pÒ¿âù²÷ºøäq²þüÆ/4îío¼õN5®ÖNƒ£‹º,S8ipla0U¸±¥O> ‹]ëE[_œ›ë~ò»&¿ö9{‹Ë«{Ã­í„ ‡“Ï~µ÷ƒß¦.'T77%t‡PC=AÕR9Ú<µþÒ ­¥ œƒu\è jà €“Å"åË{U,” t:å «¼ÂDíu5FÝk_Ý+PØõk&ÿõ *,:éʉ=è‹Ä`cÿÁþúW/ºå±çž.N®Pb2Ý¥µ0¦î%w{d®óW¾•v•U/¤cœ’èžX¦ZDüRÁüÝßxÑi‚R§á®rÚRÆ´ÅZLͫܦðEŸT{I Ô“(5€ÔI‘¥i”/N¨"áÓŠzyBd3ÉèQ©)aé•g·Œ7~ç÷æfg'^ñ½¢kí}“pІ÷/^¶~ñà“lâ9´wc{²¹;‹'5³¸Ë Ö?žüÊç:ßû°ÒÇñ´úÂUè•¿ùÝ“ÿö¸½nÝ·Å•…­`˜*5Ùß1·vŠó«ÅÚü!„jø!¶¦‰´â´&Ù@_…! ¬QÉÑ>p/g'@L’)SÈú!Ÿ å›còJçjÐ"äì‡[Ô ³î;{ÕÞŽf&½–VÝš ¦j¡ö¯\·’}ðÌü+îì¿yiýí[÷v†üZ¿qçá—ñöº÷ñùMÜV¯\S‹kÅÏX}P~ø95šØåÖ9¾bØø`ѺϟyÅy 3úÄ¢_ãþ•o_%ì…`g@Ô£R )×€ÔO ‘J.ýG–]Iæ !qwˆë’ïÇV†Xfa;ñ¤VŸMA±²Ä+§úí+¬~ØPÎÏG,E>ÜÝÛ9X;:”­¾¹{ÿ­«äG>ðípì¸ûÜÁþô¾h•óúÍ;+Ö8}lüéßèþðŸw8‹U¥ÒggaaÖŒF0èÌÏ÷övF|-+…~åÕ™ñw«~Y¬.˜Û[ê‘¡²wç % :F¾·àyï!Ã92 Ÿ"±šƒb[‹ŠI¢U3YE%y&5ѯ£o‘¿˜q½8 ^U}ùåÀpYƒ=¥æJkzzFÞº3;߃#³.v0Úºz]ªÉ˜îçä ÷Z]ÞYà£ÚM°þЕ:øòÍP#ËÎDùþga8Ð3s³;tžƒÍ-3š8PvizUàwC³j_xŠ4Dy ;_É>5­©CÖ¦G­ØÛ"‡ËÚS‘:”´¢BEÅ+?úÑå°¼’?ùãü]ÿy~M¥=w3º¿ãÐJRŒ`fçûnÙ† 4Ãýý«ìÕ­~³OÂÙ6ÿð¼uþð¿«É„Lwòí[wì›éW^µþ°{Þé‡#Nˆyo¬ó•ìWwÄÊ47³½f¶´€(µŒAæ"d"‹å‡ÑnM¸…e_Žˆè2“è½Xæ—lÝkôiÙâè L还yêYìÚ´SɡεrÇú]²a¦ã‘½ƒiݺ4å”®¯µÙßuC3ßwžŒv6Ö£Cæ6Áļö¥â`oóÊM±ü(¶PMFfo¿è•Õï¿m¾~o\Ó'V­]®‡^WÇÚe„Øß«SJõ;‘ƒ)ÕJá¡U j‰0 Ë ARÙRKE–°\¸•_ô ÖvÓZc£;2”€YÓ WZÂ:%ζÁ¢Bõ§ÓÑþCÿÐç ¿ˆXÉÇvÐÜ=Ú#{£j\Õ‚[W¯ hV´‡Û„—¹?R«`^mzõöhwoîôš½œuìï^·àSMÉÊP÷6'“dë‡Zت=Pó7ÃOðY§^!“’yq€ aot'H@ˆsA-1††E”£®W)Ä|ÃFÜMD'ïJÄäƒIÝô¢PÙ¾‰UòüÇŒ7îˆÖDÀ•}ª.½4ÌÒ¹Óýoû°«o¿Ã½\)C4ã÷kàw{e&Œÿ&W)¥/A+„ ïăQ©Cãa¥RÐbé£Õ‰ô¨¸\1‡ÒŠ Q¼²ê¹Z ì4ÙÆPÜZ€‡Gҹ߸†eOÃò|ð¿ì›ÉÃ͹•# ±76jž•ógËOþûÕ#—Îî¼ñÎ!þ‡n¡šÅXÔá¼[h.ðCñõ/-ÕØò¯ Þ¶– ­ÎpW0!èk¤6Ãîèýá,4Öˆ"¨*»÷hdy%Ò5‡Æ™äá^ ‚Æ#>[wÐmìˆQ㤇V“iõÊ«î÷éXS×µ MÓŒC𯯒œw;:ýLX^¨F•ÚÞŠ8Ο\ç,ݾ±ÔE ¶ùØŽÐjñÄ2Ìt]d¾†D¥+Lµ£(yõ‚¡Å€4®çj«Töåæ@OìË…D`B­`ip¯BOJD9ùéGœí%O`qn_…Ú3úhòŠË ·¶¹šóÜ{O6 îÒãÉîžî³?åÜCmzÇ—†»ûø`ƒ‚Šºwþ‰ÅÕY"§TJ~º;©Ü«¬ÊógÜÆ²dss¸7ê_檅4Þ:ÏÇ5‚ž=«¨önõ‘•ÿn‰Å&ªïûZÉ€dÂÄue»Ù–¼ˆ*§§þʼnÄîQµß›nyz.[/I%*ŽP'³üøÚøð!ÇŠO~"8Ò#Þ›ÛPø|C»gW–Wç¶/ÞÀ½=rðž:9÷̱¹Õ¹¢ÇŠÊ”]5¿:»ðÌ }«KÄý½í·oίÌÂê¢ÂJ.màáv.^Tùg¿G8îë›~•¤¾}îú6DS>Xß@MQÞòû’#_©ðšZtÆZbùÙ˜äqfK(Xš‘\ͽf{[/.ÎäÜ!=ºw¿tÑé&^£ž:Þ ·_»´páIXšu¼ã•%µ|d~2q\/õ¹cnîî¼u½?ßÕçN³m#ÆËd´÷¾oõ ØŸ~Þé³µgîn5ò€17FÿeL1ùzvÝ$2À²"El¨ ó$ÀÿÂnU IB0Q-KF6Š]qÜÍÎ,û ãýðÔÓQen?PœÓà‹¹õÞûÔüêüö›WÌõ;>N‰ÎŽšé;ïX…SsíÎæ[ï̯Ìõ.<•]תµ[›V'‡'ío­}ûG`®ï˜k÷¶­buˆñÇ›ƒvºN)­†€@PHHz’Ę@µ Ÿ5>; @&Ühˆ¼§$:onß)ΞV²óCY¿òù¤‡Ú¿½>»8‹snýú…¨Ÿ93?{çÚ}uûÁüê‚^šS½¾Ì“UóáÚÜÛ]wyäôQ}j¼šàRø`oçÞºó-l¡û#ßVdM¦ææ½5hH)sõº>wgúÖmö°UÂeqj­8±ÚµÃÐ@5&‚uWõ èvæpZ¿ ¥}œNTWnVÃÉ*¡T÷G?é|…‰©®Þñ¾RSD±¾”InõÚL¬ø!­:@‘©#µ>5Úýš¼¨$YéÐ3 †2nßhj7£ÓÀ¤/®å§ØT¡ž•Ž}w‚:1×oš{wÜ^\\Xý©·š€l[±ªÝ݃ý·.[_ÖÑ]¦![&ÛøÐëÀbO­,*«ûöW‚*&`ù^`€ûûÃ7. —h/à”tµ·uâ'ÿ¡>2ç`»ÛëxíNnG&XK«X‹‹4Ì¡$ÞYý*5éV+kMcÖ©[ðÐÛ4uJé¶FØf´jÌ =ë4 ;]WÕ•K°´ƒAñ-Ï.½ðá{_øýÀN,§£Éðí«ýÇáè’;YÅUŒŠã±Bå%ŒµP!Ôû›Ã›w¦cG,÷Ù¸ÕxogùÃßQ~ðIG©8𷝿E ÇݼýSÛ  ÚAéX2"D•µ´CcCÈ­ÐJE¢–))Näç_S†ž¦zé#óö,ã(¦=¯±n¯ùŒbÀ˜N :&&¬'ÜX¯®]-/¼×î©îþ­£·®Þ{çVo0ÇTn·B†ÓÑ•ýõû½SÇÕü ¥80¶Õ°„‘{XhðØÚ™Þ¼3Üç™ïo/Ÿ=ÝýG0y¬._· æà>ÚÀPÍú՘ΜN$zù“h£Ðš/&"˜ÒúÀ!„ú<ðRx5Ö nl¡›×º*ä5L0&s«fëêâE˜›+N±b¤ûÏrñÇ~|ëöFo0ÏèAA0ùpg4yãþ|¯\²‡ÀƒB««Ùz Ñu¦›ÛÃÝ/™ïm/[éþì?vòªªªk·«¯]ÆH§J륵j]lI)‡´ðJÊÐ1Lð&ˆI˜(*f^»P$±M%É“T Ê%NÿÝF—vó+ª³<«2©——ÎÁª×+VÂÌÌüÏþ‹î?û™û_}ÓQE½Îäú {;£b箺~¯ìe·Sv{á ÃÑÇ“éШ´©-`è°7ÞßZ~îB÷§~ÔECíèß]¯^¿”f%ÖÁ£‹ð¶þµÙ;¢~DÔx‰Et‘ C’s¡½‡œ¶Í«1µR¥™œP3'Z«óïïUo|M½_GV­oÕû‰rì×ûî/ÿ’Õ•\\ºãPþV£éhdwHÌo)¢åk„“”áîí¬þõ¿QþÅï „ SmlV_}›AŸøRük‰?-éõù΃P ¡©"¯è<§—[`r} Âi((‘b9Ezï|dyYÉ¡¦bÒ„‚¤«ôY–uò‰–v6RJËs W’޵½e^½Z¿çh„…î~ïÇOþ‡keÎè`'6ÏÒDAºePþåRGò3š&jÅÎ`®{ì—~¶ó}u˜ý;÷«/¿á@¡d8™quKæõuñ±#€‰˰B²>Tb¤„zª·Š&ef…º¶þ]‹]\_‹òµ¸åöJÛ[Õk¯ªóÏZ}`GªX=2ÿóÿrpõÊÖÏü›ñÆŽ«3;çÌfå†$—ª|L†­ü¡K*Öƒå¥ÕúúÂiç"¸ˆV×nV_»„»iBˆÕ©X¡ ‚ËØ ,ª¶rh©ó•ªí½ÌÉsÈlu@Iù`bâÚõ®Å$z–ñ؄ƶ=|DìòþÞˆ¤‘ƒ×ìÁ~õêÿÅÝíâ‰s03€NYž¿°ü ÿÚl<˜~úÓû_¹2¶n]°;;26 )‰ñî6W´ZþÐóå|¿^]† ½©Ìþ¹üNõæe!t£† ;!å6£´ÑŒ…jR‘­ëTÐ4£)û$/a“,SH‹BD ôA}ï#ÅÊÛª"Ò9[GºÀ¤m\BRow²´Ê*UEM(…³ô=žT]~Ãl­Ož8 'ÎXëHŽ\bG³úã)?þkÉt]vjˆõ–Î0X8æ÷TM+sï^uóVuãvšêÂleÎÄ€”xÕÈ9Äú5õ=ªŽ[ÈÜÕ€GˆM|´¨þJGùS¦U|„ª…šë¹B¸ž ÉÁ^ý5hÙÍCZt›Ió¾ð)ä·¹sCݹiVÖôÚq½¼ KQȺç²N 2«Ò×׫»wÍý¤ÖQVtQ¥±7f0“F²3•jö‚FuÙFëÐÐÈ} E"µw Ø eyúH…+T¡èYaèP)ÒúITMk›6NfTR£J=X7öeßY†¥e˜[€ÁœîõU§ëáh£&3âþ.nmãæ–ÙØÀ´’´•l•^—!­¥K¦ÉJÄe­âè!ÔZÝâd¸%Jø~åœLmš «³â£¥Ÿ“1Ø×ˆÆ`(Á)…ü“xn¸„‰õÚâDé–)±œ„Æ]â‹>HÂ$Š@Oƒ:3yã;þ…ZÝiÒ²_d²LŒ^ãR©äÿÒL⯬,}¿¿dþÐǦYƒ$k­Ñš¶Ê s$ö£o‘œåBòN&e"1±áªðfmÖï,øbªÔ ðݸj‡lÀøEbpJå’ m{QB`ZjÚw4 +V–…¤,$dJ0®÷ èS>£ ÆW^¦”µ%†‚Ù˜'¤… ¯õ>Š Û‚‹I‰þ`g'•í±© ±©xÚq› z…!&SäQâè c´j€2G|:ЦC1ƒõ²ÁJAÚë Tš;‹Iº¿oQƒ>2Q›±h0{ßHµ‡XD ³ äU<Àý! À‚BC‰H{\Ž&›%‚+†d<‰Ñ`f‘¢/,PhÜa%‡ ‚Y )[g¬핽Õh|œ%·r_ÒTÉZ§Pµ&!IjÊøúõþØØV¾°~€|W$ üÒUÓK" V†:›¡úu,–Ø`B4¼h³7Lømu˪†Æ”dõK1+ 0P Gcö7qq5%Ñ×’(ŒSÕ0:Ètc^{_»n¯Ð\×õ„z¬S·“†Ø*ÍLÿ`©¨Ø„7k^™8-˜ÒJ.ì}ZÈ‚(îIµ¹Ù9a"ó¦,ÞPÃÒš7œ¥‚:$Iòœ¹Á«£Ú¹ 'Ÿñ ¸‚¥y±hÌ`êtÌä¦_ž@ü%¨kc’O¡%4fÚ{‡‡UƒX“Q‰ 'k#6xÇ´ ¨ûÉ#$œã¸'l¶3&w7t$yB[_”`A83”ÃŒ †Y£KiÉgH{úðºÒÇ…êE~¡Ö4µtT*“]d wùS+2‡¿&g _d±‰B,´€‚I„ºÇ›tTy{0¬ƒ£ZegŽÛJnqzý^73ÍW ,tƒàU4…¡Yæfé’É¡«Ý{f´«ûó9š•÷ðŒ[‚ßoí¬£øÒʱe*—ü,“-™ÊÜÌ!çšú¾5‚ĵ1“cR=öĬû°ÊYcDVtlõª²bØIÍ ³s`î= r"Zö[ ¾LPrmÎ4)Ä&w˰Â#QÉ{e‰ã;_ïŸû@¢€[JmFÙÜ„¥°…¬šº<«úâ*ìloðBà¡Òñd ¢.10vÔ¼—`ºÐÅ¿4!å4RŸÆÔ‚òEA=Î4|ór ˆ à«­U9I©ŠÐшEq³¨X–¯à*Û¢=¼ñjÿÜŸ]dâ21Ͱ¥Æx îÌlœ­€,ÏÕMúÖ*øGˆ) Òk¬Å ³ªÄî ÌJÌ AG¤‚/† ‚%0rÚ'ÓÒÍfÌðÕ7{Ôß…wI(# M1©x„†47Œ|3Ðö_©q¼7¼ùzŒ1¦%ÁÇÚj/-z¹„t…ðY:ÿdóTZ…Z,¡ §hϤ‘Jæˆw6!/¦‹3cvr•Ò Tž¾µÔå$%-‡¾‡»æèko›ý½¢ÀØ–¼N×­%9a :2fAë€ET¾›8“Üá²Ã+¯ôNœ×~§I+5Èþ#o!kfè ¨j˜™jiǧR+Úù`!ÚCÕì‹…’ÝЈªÏ²R ˜`y(s=Ï€Ž9ó8Ú{ù+¥Ž=äý®†¤Ù&~ãcïêj7¤{]xO…æ÷®¡°kí\¨®«³0^üÐPT|Ã[iYË}rýo¾¬ßLY[Z)Õ«CÇZðç”í’| éX u¯•~ ²«èp%¥#+† |ަï}ñ»–÷µçÓι*+Æw^ú¢º”`·Ý9J¯`!&Ç‹1 °Š.Ta´¿)/ ‘vJöwK˜Ü}k´|ºwê›0u~rgØÉPÚJ0hˆ0r=ú‡ðÒr:€Î™µ9Ç’Ø‹Nh·MdÁwhU,˜õš‘ó_¿8zëjé˜ :µ>x2ÈÐQU%Nu)kDƒÌMP1Ue°àFÝÕV6™ƒ‹/A®»z.±É#&‰Á¤î‚WÁ±GìHM}! å+·¨š¢VI±ç´¹¨¬¸edo,öÕ«‚Fž qèuª5 ¿Ý!m„ZJ¹?S^:ÚSz8Áá×^„ç?ÑY>–­>¤ó x@=qF}ˉP•·#ÖÏáü!K%~„•¸ãqÃèng½w0@Nu-Ëû…Bv’`l’—Wÿä›Û/¾¤ªªWðÝ)8ŒZhÏÕàá4!QËÕS*QG0ß o¾tÁ…ÑI ¡« —YUí¾þ›3Ï|´wòýiaeÄvòz •aX*m ~cÒß4ú1Áº—u‡žo =ŸüÊS˜øÃéD&@UˆM%@Rú_ˆéAA ¬äys÷¥/ª©±¢¼[(–<{a÷§Õ²ÓP=xˆ…DYÜ&¯Þß´`þ‰¶Ä´ Æ…©w/ÿîd÷ÖàéÙE5‚D^úT>˜ÚA$Äöâq[ÇL,#F>F2`2‘ U-¢Ï%¤4“vÆ®uŒñ† ¦J‚ó™$åÐçÛúºåˆÃáÞþ•û®ÙÖ}(cGÖ˜Ì ’ñ¸CÂ[ ¶0–¦ ™Fàë| ´Üf†ë}8 580Ö>‚™¢M+רhãÒtûVÿìzÇÞ«BEOhc-ºIìv"y™öCÌ‹À"JZ„è[Îr–uÚ•š‚pO–fˆ8I‹† ç!ᘠÇ0…¼â¢°ÞÖ×/îýÁ—ñ`è’”•î¹$sÙ®Ò†º¢¢wÍ#·ByÚ¬aO˜­üØv–‰ˆLˆóÄc6ïb¯W fò (Ç“ÊÕƒ4Ã+¿;ºù¥Þ‰ç{kç¡; ‡[,y“P™’îò/†Œ'ÒN_~BØ¢¨g¶´ãÞ0ú$êÛ($-ÁÑeœ¼uiôÚ[ÕÎŽ¡Ö±’Ç~²2˜àÆ48o=„œeõaqãt¡üNa#ž±£V¢°R8Ñ"ª=S¸¦è£‰»œ ¯¿b_ Æv îˆ8æy4ÊH0вð<€“®b¼ZbJÞ‰q÷RǤ •D`O“rTEY¸‚xT‹™ƒÜ<>ª*ÏÆ•!Ñ®Œ¨‘Ú \0[Q½`¤¼E_Õ³ A‡\± œÍ£KÐuuÂC;ìàT¡)ÅÎÜ'Cš¬:€‡ P_UÅ’ÔÔTCLG-½ÎkL‡–"v Ý)õhj¦JeQ‡©¯Rððë4ž º³ñRªŽ·pÒ J*;Qì—1îAjHÈô®Œ;¢yÛV£R-dÂQe>ZA#PQ£A—-FýXÒV,‘½æ×JÒ¨¢R©UÇÕ™ñ@-_íf—Lg ¦¸“°qV°+ "4CqðHb逈,^ÛDй2öPbC$Ín…Âᤪ&•†©O«@}Ã,—’Kг-ãØÒÙž²a}}A×É—þ¥~O§à=íËúº•N&5d5‚÷+§ÛmÒY*øÉÑ4b­} !øÌᬂ¥Ñ4r†9¸ö¦ùƦ!ªu˜1üÑmA-*ßo¹Ñ™gÅc¿}`ž¬6ÐÆP¾3.ŸqÚ1îû{ë”ðhM;#å3©—‘µÉŽäZ|YûUª¨Üqaè:j=òy8“•S 5ñ¢=@åP©†? (3õì#7‹dvî»T ¹§—”«2IwúP›ím„ Œ''}Ý%Ô¤>‘Ðdäµ4€ïr$r^RôthÌ›÷xã8xÙšá;P¶¹.¨•çxš°oÎ}K|•vMÅô#M!8o$ˆGeD TŠKA²i†Qûd)@PÙèq+*xd<¤„§âl*/ ”¼"hú0Âár2ÍÅé£}üKcêi¾ÎñnNÉe°«Lk —Wö¬¡¾>¬~ „DAúŽª²îŽm—¶Áö­ÒcÑ­MC¶–îN¼%Hͺ^»ôšÎDoËPq8*Åå@[W_\jkë )|êæ*ß‹ÝÛº¼"•¨êïRñ]êt‡ÆÎbøjf­èX»_ÅA$T¤}K)¤ã4øÎUÆC©Eo o S"CÐahá¤Ë€Ú¯^ a]¡V9!pz´ -ªF¡“eÁ\¾Šô”ÑžŽ¡_’†~pD˜i®,™HÚ«òÅáÙ®3Iì6˜ùTEU´… |SN‹ì¤øs‰)nùT˜Ò~¾HeíñéÐ…IceÞM¸y¬÷%ÌÃSk´ç«#D¹êR:¢¬šƒž„Êq` ´ŽQ8Â#‚Ë;FÀ‚àèù „bíVM½w0HÚΖ2r„K-¤&BdÙcJ€ækWE-|·ëÈ!smÝ@c¬Ÿ "LÈÆ m„`9àŽHŠuìªàSe“î J²ç‚@U‰Ï‹mL‰D¬§½Dž‚aZÄ‚Øþ†²„â†ñºT«PG4 h¯¼ƒ¬XöZ(i*aw‡ÐÈJe[H“¥ŠZ¸‰•4Hjàˆ`ßÖó2+t]ôü÷PU+ðÝg ›¸~‰q|Œ¬)êÂáàÄàÝb5è]"[ G#U‚Õ¥O Èß‘„4å¸r~¨¥|$((gÞâ¬Ô¸–Ne–¨4‡1ÂRäL¨\a ‚šœ!XIC³1ä"¡TáÝIìP9¥D<Ûùt¬`¡ÇD" t™0RŸöI­`æ«1Z€é <—¤³„=Q÷u×ýÚ$áPÏ9BÞ[~ u ™XÐܘëð”|§LÅ1äV†T.^ÉphêeBˆ¦º4^ÌyByH ´±‡p-‡0²Œêœʵ4$Ú¸o(¯7ñÆ£ÉÁiŪPhP ÿN]f ›†R`Á†Ë{‰µ»Kç#ÐÑÐÅïy1n mf–SZ cš >á¥=¤ØãcdxubêFiŒ„¤4úƒt(ö0J†+BK~»+év|Òj` —__+Ü‘‰Â3" Bê&éÂ×õÑY&2Aã+Ë]&É8£ÛÙ˜‰È#OŠªt¾HÁ·ÅÌTù" Hq°ê ”vjZg«8S …ü¼¬ç¬|ÕÈ‚6JåÀ±áäªN&"Ùxâd½Î 8P°™,Š‘!ÓâÜðkÿ,|Ž1O»ìCld®¨CŽ«Âî-KÖ¡ á!.‘fˆƒcÒr<ÂzÏ$@Æ÷vD*a9ûÖíVWÙ8‰Òq”¿ÎøwåÃùÚ<åâOÄþ™ÎwÓ4ãâ‡óÅè÷ C%¬¡¨|]nZÆ£¼¾ÅTòŽÇaè9´È?¢hш,HÁÙLÁºIS£MQ×ÍJ\‡goW®aƒ‰-Ň3•Dë“Þú¬»Áb@Þœ¬\Ž­gVƒ‰ù ®Ç¡©*'(;‚yM}€‡ëš2±ÊxÖya½çO;PUÃRHØØnç_ÀD’6Ï«ÐEw½_(fÈ3+EèSc^²ú‰ï`W¸æÍX(q•„9ês• ïhP_R“…k'¥JÎXQÄF]"ý=¬ËjÐGÁ@ì}:äñçµúü/¢™‘?]6e¥AõÂÁŨv^›á ÀÒzì÷ê ¥‚Éd`dQ‡ Èh žš yö½Gn|‰¼„ÿ'À§@…ÀÛ¿?¼IEND®B`‚instagram-feed/admin/assets/img/about/plugin-om.png000064400000132345151435171370016346 0ustar00‰PNG  IHDR\r¨f´¬IDATxÚì]XV÷÷¿º°cê $¬¹ü¯»Ë¹.÷[»MÝ:Ý¢H)Hƒtƒ`¡‚HŠ‚‰ˆ¢ vwÌÖóÿœsï /)8çåy>Ï /ð¾pï9Ÿï飑¢C‡Ž{úEСC':tè C‡tèС€:tСC‡N:tèÐ @‡:èСC':tè C‡tèС€:tСC‡N:tèÐ @‡:èСC':tè C‡tèС€:tСC‡N:tèÐ @‡:èСC':tè C‡tèÐñ/ ÀÍ­Ç] û!ÊìÅï+6ù»Mæÿ)ÌÚj®LI3Wþžo¦ŒZ\:FƘ)c–š)ã—™+cãÌ•ñËÍ•qËøk ÁLËÏÇâ1ÎT™ ý¾žÀ?köô¤dóž“’,fMN¶X4%ÕbÝÔ;CSS-‡¬2Z홞n±qÄÓØA-…¶ì <T”ÿ2ú‡5U†„X(.î]O×¾w½®”î³Ô”^™˜`þæÄDs;(ùf€,Ó,hÚJ<®T?çç °^ÛŠ¦¤XР°–Ô×ß„…´$(†¹Âû:è @%€1±æÊè%8ýÍ:ON1O+PxVöb _\ù',7§>¾&ÔÊ?8¬ˆòÇ «N:èPE`\Nÿx1õ¿žœl¾aÚ*õ”/Ká å_£)¿ ny=å7Æ&à;tÐ à›ü°L¡øóYñ§UDñÄh”qêãWiå7F `¦€N:Üf‡GœÞŸX¦Zf寈â”zz+âßéÔ’ú¶ßÿ”߀#À':è Àm"€1KÌä³\asßiªéÿ×\Sêëgr£'i €N:Üb»'‚Å9õÓ*§ü|úsÐolœõ†ß“ßÃuÐ @'€ €É+@óÊ'€ÑxDjoœüå(?¯8øùi+[Éã€`øýA·„ÝuÐ @'€ÊZ+Ë·F,’\ÿÇ(Ö)©üiÅòûˆ ¯ŸŠ¢?Àrb’yÿIIæ¿MÏhõý¨óïûú¶ü~pxËÎþþ€ ¬ÎÝ$xV't¨ ì7›+6‘LJ’‰a3¿(Æ,–tßÃPò3Ÿ¿àdW•þ=ŠÞŠþÒƒu T R„ç€2:Æ\éçÁ+Uši½‰À*àÚ À~àþ»…„5S†¶Pœ<~W¼\ûé ÀmF6H°\ÉÅ~žžËÙ´g¥ž¶ нÚBg¬SÝ Û¬ÒÁ¯møÜ&Ó\zÆq1‚­„!‘šI¬Ãu¡£'¸ ´¯ÚÀfx4…Œu‡ ÐG'î< °‚N]©šòGs'{*¬ƒtóŠ>s‹†õ‘c üöÙ%a§}Ïð;޹Šcž…2àÏùým6À¢H2“8Bi„PЏØTeèþ2*ðéÿ´ÿ¯À]HœdŸ’Ê'¼ªÀ¬´³Œ=ûæ¾ïLJ%X H  |XRD‘xn@z°¨^U  WdÅʧ#üÿáÿYÿ_'€»œøt·Ë¾ýïoL³·[!‰«€øAÿÕ2T”œÊ 7ªnþ¿òÿ]þ³ùª.êmW€O_€~ÀÀð"€…Àr`°Xda°ÈR€ÅÀ\ pÕ^¯ðð!ðÐø†!Gu˜˜Ø*ù{©‚"ʼn g)0®jFÿë(“üÞP|qúÿ—•_'€;ƒÚÀ£@ +0MSJVælà0p › ²ßÔª Xð÷Oáçr€xÀ |´¨ˆe"ñ`ZF©Dð6pÚˆæW¹è? ú…7Qì½:)Þ.ƒtÐ à†Qx^;a'AÚi|èÖ(wYÊÞŸ›‘MV3²ÚX,7>HS2«ÓäL¥S3ïÃó5iFVC²Íj!¿Ï¿§’BÁkîbKà[À¼¼¦âD€©Bjš1Ljh°­Ò "‘,DêjR•7 =üš(CüÛ*î½×Þ:Ty°ûKq\ö†b½»žb—eq'Nó6À“À—À@ÀX »qå5ƒ"2L–#¨Ï™j0“ŸWa¡)®9”½MÚ Ðx`"”|:”Ÿ Á)ûrËy‹±ýoòÈùVAc‹×œ€×d+bfv!šRþ‡óÀ"Ímx¬ˆk­ ­Öš+ÃçXÀø Þ¹T_%ÉœU`ÂàSdŒ©(¨%ˆDê6’‹ÁÚ¸p8ÐHqýËPî ¸w—›åÚI±Íi¡Øm6½P ¨´ÞÞÀæÊœö §mO׎×Éw÷ûä»ë]òÞùð6ùì|_¿W ïâùw€÷äû®ùíÈ>¯.^ãIòÉéI1Û(ëàQÚ‚èäY¢³çˆþ¹€Gà pê<Ñq³jTÍè¿ðàl*®(ìË[olAVW`Öæ¶ä–û<ù ‚ö~J{:ÊÉï·ë#òÞõ9î|˜Ü·¿CKvȉ}ñ\啾¬ó—¯Ò.˜kö£Œ=GhãÁc°(Îì‡e°åÐ!ŠÎ ‹ ž¸v›ZÒL 6^×âÉÆÛT3^]nZÒ´G}Ÿú†RåÛt¸]xè¯åóÏGïÙ"``2àØ€SΓpÞ«ÀcW;rÌoMQ;¦Qþ‘Ktõݲs—®PΑS°@ŽƒNPæc´õ0¾¤ìCÛÉ[' ·À2³6ÍÊ~¤¢1¶†(ðñßó!ïý’\w·¤ð]cèÂ?T¥?Ø+Ùe_¿ïX©$°aÿQÊ;~•ž»JCߤÎs<¶’Õc½½[Ò°hØ"Ø®Æ*@¹À«:èp§ à5­æÿBYJ¯æïÑ‚›ù0šzZ’ÖöäŠÓ}ÎŽ7¤¬—K|ƒö~"~RÞ»«#¹ïjOnyïÐÞ£Wénøú€Ý%c¬ ì?ËD‘K¿Í©F½êÓpsÙ:Œ`ê=G%‚ëÌ,4'‡m ˲úè À žÐ³¤¬ÓžËyÅ´ßÀJoŠSþ1”ë¾$'|ÀÞ ž   ©g—Úìã³ë-rÜÞ‚Ò÷n¨rA¿ò*×î=&–@V™$p‚N• ]kG\`„™Ê0Ãöaì"€E`B#¡v Û\ˆ€+` 8ê Àí"€o´±Z¥Ÿöðé¥l|ÒsCºúXánÞ)ªðªÒóɰç# Ù÷%¹ì6¡°ü±tñ<ÝU[Ÿ¤uû•I\,´ùðBr€FE=K@`Q0Œ‰MAÔ Ö@_Ä&&™jnA…¬ÅZÐU'n |$—ÌŠÏÃ2\¶=#-ºJÿ¡v²Uø@± Í=ï!ð&¢âíÈz³)墛ïnûØuâ,†Êv ñ€ƒ €”üúÑ]Â7-1 “…i@`KêéiBCæbB&¬]²x(ISt¸™ð¶vº6{ÍÌg¿Þ Êï°åòÜþ2û# Ú÷©œæÅM{Ué™>«À3ÿUÅÓò»¶›Ô©?\æ5ùµ»Nÿ1Sà¼@V9 ZgéèE"«%ŸÑ/E­€„©ê°5`&õ輞5§duÐ à_€…–n*éßó˜-Dñ9W?|æ±biŠí[pÒ¿+_j>?“€ûö%P`5dª-¿<ÅÇvk]‹b™œ=çènü8qþ¢LºdjÁÔü4úÙV@hÓ2—†ˆ5 kÀĆÍCŠt«¹¸×±vÜ K@'€{—x”ÕÙÒMý¦¢¸¬Ä<©‡OûÀ=œöSß§½èû'ý+ä¸å1  qœ(x]³Sn[±R!Çøwåéϧ.\‘ò…ø‡€ç&-z‡~G,`p˜yÙ›ƒ4k€c FÖÌÄ%¸N§ ëê @eð–V¦[ÂÜ7ôä³¹î½ãM(÷gPüŽF§½:’Kßgä‡\>çöíÑË ÏŠÏ&¾qÕ_ ijó¦ÞRâæmw$õZ!nôãôÅËÜxàD…¬€#hhšŸåG?ºÁ Ð2å­2LM ìÆ½Ù\. ¤Ý0`ž¤õÎ2û¦>ð!€¥ûù8µ74‘*5Oê°r³Io|âL}vü÷t@Žÿ¹‚ßã²^c ¢äô¸v´¦á‰ íH§.ÝZe?øÏ5ŠÞrF­8K¢OÑ«A'¨÷qjãuœÚÎÁ#>!ð}y M| BD££Ÿ£?}«WÊ 0¶zx"&gª •mu-¿Åðg,¯Å>wÓ  â¨$ñ…óôìMvv?Ó´ißÒôéÈÊêrQµ »º¸ÿ©Øoh[¼¢-Ü,= ‡bŽÚÏÚÜNݲ“eR°Ž‹OùÞ–vä´õIÄ ‡7%è„Ø€šx_ˆ‚É€ ")BÚcÖô‚€ E8ï° 1qæôíL…üVÛIßüíüxÝ–À4øøGé>×bp;z}‹n„2®Á”ÃÍ3ÊþAðÆ‚Uœ²ž&¬ »e?Sg/vÌ*M°;0)EM–ã ¼…°Ò —3f|/²:mú7dkû“ȰF+€º:”ê@º›[Oòðè… ù ùø ¤ìì(Úºm>EGÇsß3k—˜ÝOµ6¶.NŸTlÓ®™¦ðfjužÑn>®ï—aZ.Ÿ×v1)ðž9Øä#]}ûÔb Ÿ]ïˆk Z Ū°Ó*ùµfnQ£×Ø@K¿ 6Sä-ÏÿØw ÆLXÁDJ®¿ö¾HÕÝŽÓ}.G*` #}7…ŽßAŸýí&¥ï"zxL45IMXLµm2©º÷YRæ‚¢˜ .ÐýN‡Ë´ ªûžBÖ`?)¿l&§T,  ³HV”ŽI& r½«”5½a €I‹C kÆ„\ÙÅ*ƒVTˆ²Z)®^]*JQ,‹VÓÿGóæMÀ5ØËÝu¡k×6‘—×`Èò·š¼ŠÌ.Ö  tüeðfÎüì9šÎœÙ,ŠùR2;—$wß¾e4uê7 `eÿŸOÿµ`oåÚmµ×Ö@fs!„Ù[¥Ü£6h5èp݆õ][ÿO\§íf4n™ýéY)­f”¶+ßÁYé©Ô²ÆýôRËzôZ«‡èµÖMéåöôÜ‹/Rû¯ºÒÃèšÿyRLþs%€jž'¨Þ´]t߈ÿS¾ÆÏgóbPOÛaŠÓü› 7²ç *÷)à\y§¿¬î‚9Ïf=Ç8è‚m=a;‰ÉÏñ×¼ç$(™mìe>@® ŸgFÝsâòn^“µ]õÆ7ü˜Vð ¸#®À×@­ëïYm!/ò|†fb¦ŸJšÂK °Ñ˜ïõq`ÀûAù(mÀ¾½üãw¦†ÿǤ‡›4ÑàyÁs/¼+à%àez¥½½ÓH¡g^{ƒj¹m%eHÀY *Þ§¨ŽÕj06êMÚA ,A½ré#·Ýâ TÄØ âKÊ[NÝ|ï<ü¯ €10Xµl6¨cÆÊ «ROÿ-&ŠÝ––Šëœ?wÇþ‘ÛÚÀa5Ð[dÓ2ʲjcód÷‘a'§? ÓƒD¾Uˆìfè â#VÔ|¥î°þ@Àï;šfù-98üޝ»Ht•/*€!¦~ÂiÞ'†Ó¿“6k¬ö9+vý ¦€xÄÔÞâʯÎñ{3úÛ í÷ÙÍŽÓžSîy/I€Á*àG–•ÿgßÔj|USêî÷à1lØ9K[1þëòÕÛß Ô¥Kjܸq0†Á˯қ¦uéuÓÔÀ*AH šNç#¢üõ¡üõ4Ôœ¼ƒ”Û(|ÝÌ2=ƒ¡Š@ÂM%¶¸•†…ÊqLŠ÷Ølo¤ÌZõ´ªü¨¬€ì>&2«­m ›Ó§+²ë0ë·‚ìíæög‘¡†/uP &4åWOvkëÿ!ý÷ ~S)++˜Œ¥£G—Söæ¹p†‚],°ÀÐ 0}Cc²Ë6—®¾ý_‹™Ï~¾ó¶§ÄïçÒ_.ü)OéÁ£°'¯0£¾¾¦Ô+ ýÑã³=?t™N¿xÛ à»ï¾£‡~¸L0àÙW^§WiIo7­Fõ­SHYLTwR^Áéo@Ã) €Ayô¤õNl>C[Žœ,³CP.ÀòÜ8êêSý¦¸ÆAÁžì $©sËíÈ6óß9øj \Ë Èîû† €­íäï?«H:vl¹Èì¦M!´`%,ƒ_E¦ÝÝ e\CÖ½Nï*o0åïr¡GÓ‘#ô˶˜‘Gë´¯s%½Â\Õ½û@Oë¿•Ù‹:(3ÔPlv4”vÎh_X¾˜ò+Í×7ô°/²ÿ+ ?ð-|ý7È3ÔÓ¾‰Ô ”ÚáW.XöÞ«Ã.늰nØ¿Ÿ²]£}§no$ðÒ¥KôòË/S«V­è…^(—8>ðÜ˯ѫmMèµG¦º³wR­ÿP½ ¹E€Q‹­€>¹´ö]¸rºÌXÀ^—n™Gxó„ æ7žªø KNûQ~LßÐ~~)èaSŸ+¹@ÈJýŧ½}å6ßfÜñr &€~AÑ Wu×Ó¶c¼fûäm%€„„ª[·.=÷Üs×Q~ ø¹^“^7yZ=ß‘ÄÊ‚z“w• ±úåÒ^{8]f‡ §1€æmô‘† ›©üŒ!pz¢6`ÔµT¸ åCÁ6÷a) sCêO:+vú3Y'C“’¹¡kä4ÑH^“!ÃÉ"Ëyˆu°l³Œ;8‰cÍ»W €Ë'/°IäèØY.Lr²?3”¶mãm8¸€©¸…¸t­‚ÍH·ÄHÑ…– 8ö€›Ko°÷P©` ’ë9}´â,y¶5ãÇGµñQEL~îâãò]ævàk©ìc"`ß~Ff›|*àŒBí:ÃÚŒºàä[ž»X¢áX½}úÂí«úý÷ß©^½zbT„ØJàŸm÷H{j_C¡Æ}¢©¦•°êè6:ŸêŽË§ÍPô½§N•ê0pCP@Æ4úé_•Dç`ou_ûR‚Ùfm¬w5P\‚~PÞ“22¢à÷;‹‚óE+¼ˆÉ(Jåg–݇|«£ãZpEXÔ¯Ô÷“:ZŽ÷5-ÕW4§¢®üóÞñÚ{?PO|©å¿~SOe `F_÷°ŸÊps3½¤ &cÏa¬×.;¸zÿeÚtüæl]±bÕ¨QCNÿë›ÿªò¿òÊ+ôØc‘yë¶ôXC…,^êH5A“v–î È#ïŒÃtîòéRK„7<)ÿ÷ìÄô‹ç¿+./À¿Ñ5ȵ%­Tzæ6uqÀð÷YÜûß³2ò륦­!‡ÅÝ»óÆD‘Q–ÕKb¹ªò˲¼wïbš¿ÀYd|ùò9"óœ:Ôä÷Ï{‘ÂÙ²·ÿ¹þ1´ví|œþ^³ØƒŒS->õÅìÏ_jûöù:Z|.Îg€­Àx­ƒÐ¸O%Âî°ì²Z}  Ô>~tË{Á½ÿÿ~FæÍUü‚,@ÀDʼnǭ°©II,¯ÛN‡pê|éVÀ„”³ÔÒæÈ¿VþãÇSëÖ­ÉÄÄD”º"§ÿ«¯¾JO>ù$™››SÛ¶m©]+3jß¼.5¹ŽjÛ£zó‹@vúäQÿyû¥D¸4Øtè<í‚×3iá{¨Pn¨¨BV@¨J¼x¤„mF6ù]À©ÿ¬Äåœþ÷i2õ!0ØlÈX²Vœ Iy¹ó´XU¦¸¬*d (Ùvå_³†åxŠƒ~2T†ßkÀõÐøâñEX¸ÐŽÒÓ#qq¼iéR:v”cétåJ²\Ì“'Ó)4l,ª­¾¢éÓ: sΚõ+|¯¯jé÷¡«4]5 ]v¸yt[ã9mL’sH§xDxÉn³Y©=lêóép«¿4àƒ_Sb>¢=gH6ê®Û§NÕ)ícäŠpªî£oÂoŒÜ¼º ÃÛâ&Ûml]lôW«Ô»‘,ÀØ8Θh>ª©Äb6‡ˆ?œy@ªÃw÷Ÿ.ºèÛy§„ªc~ŸFwu9C){.•9ÑóòåË8ibè§Ÿ~¢Zµj‰Ù=åg¼ôÒKñùaöQ~EÀ쟩ælÎì,IöÓÿÙîB™ó)Ê=z²ØH°ã2ÔsÅ0 ¹À"WW^j*݂ŭÛ=õÉ%¤Ùë6^µx‡ zXAù´7<C¶Â!c,kGŽð!µMdð⥠Pn7(ñ@DøYF»BV£±c?¦”déaùçl’n,㉉¾í‘}µ)Óry\V8­ý¸è¬ ê4åųýçÃjÿ§£©‘¢P­:u©fÍšbês‘+sER}ü3 öñï1JU~ƒ Ð@!Ó÷~×2;Jµž³ßKæ$m3²ØÊ9ó?1/Q3ÿ›Ýrå7Äx¬8Wr,ÀPÈS„¦®ˆ¬sšã*ZÏ9Û´›òw¨éfðq9ºƒÃèô[#Ê_$Ýw1YdòÔÉ$J€Œ²¬ªµ-? XNý V.Ëö<‘ñÄDo‘ùèèirjw/À&ö{¸ báB{Z¹2\. ?òÅá ö ,š‘A±KýàSÍU™÷Rr‘\ëÕ«+Ä öO–Ã~'ÇM’Ížz4+«=Yg5§ÑPxV|(úÂÝÐÖ“!¼Î‚‚¶Nã×= îÀí ^o5c½™œDì—ªV€}Á ó6z‰À;ôÔ(¹:;/$píòYê½ì N{ êð:É=Fm¹˜âÃÝzM‡‡Ð[ èÅ—^ÿMøë¥ø ¹}Æ3Ï<#1‚þ~YPW¡æ_*;0x;½ë²‡N\8…¿èD`þ?g'vQÍÿÒÖƒÝ"peàH¬iÏ-Ú#ÀVá_U‡'ñ¢3(÷rœîIbÞïßöóoE--¿¡t¤Jp2g,ƒW.§ˆlnA¹úÒ¥¾H÷E’êæþ*¿Ë±öûe}Ñ¢™¢Z `ó½B<òë +6û?K–8‹?Ä1fEOϾb9;w‘Ò`˜¤¤S,̧˗W¢uU±¡$‰l\BûÿF³Ó1¢{_]šº®! ÃM¿®6ùä~JëͦKW²¤_[6Úžô ! zôo_ÀÃ*fBð8?Í›nÔ8€9²ÕhÜüW$0ÆÙ€¢þò ”íž  K0xcønº=øÜ‰W‰À'÷€‰jÙnB÷ž9½€–Þë)=“+=ÅÓO?MíÛ·¿þ©_Ü€иGˆê#€“ÕjÀ÷Ò•k…Õ€\ü“$ÇÆƒÐ U‡úÖ»uÑÿ2ÀU˜<…­1ƒ0sSk³¶ùæ½É@£ÈÕ ©êãá\Ó?aÂç7þSÊÜà'$À²gLtm%¢þ«`ê{ †\I›“S©tõôì#¦R’ŸÈüÒ¥.¢ÜÞ8Ô¿Àœ«Ÿ8¨Ç̸l™;

çÅ x꽎ôF›&ô‚X/ˆ‚¬Vx~䯟}öY‰îNü +¾ =Ò²j,¨®å~ªkuJ_´ þµ`|ìAl;+,â¾€ˆYz¥ §`õ ½§¿qJP‚ùFqX†V›Òä ua± åZŽ ¡ëR ÐvQtÔDX_C‘ƒÒv)#îtmµVökpRDFóòˆÌ²;»d‰dùqcmm¿ƒË;Md+¹øÍÅ¥«¡ è Ðö^ þ¡¦?ºÃò„&$ ¦EºÈD  Âññs`þ{Òùóš²_*~úo§5Ë"iD˜ M?…¼úò6´jÿ4º|…'Ä:¸v9UŠ2.]Là9p<Å:¸ÝYu¸¹9*]P·f!{òÆÎ{Y²Ù(’á\¹Z1w‚öœ<‰çNPý‰;©ÚH àà6ÜqÛ©î”]B5ìö‘IÔ¬Ÿ+½ñ°BϽôjA:•Oyöí9ªÏJÏ…@¬øüXqÅWÑæÑÇéñÚ µü¨ÕpçRà¼1€'‚†äÑÂì£P¨ÓBbìûïÀíØrø0ý‰Ó¿w`ýÛü+v¿ø‘G‡1ŒÝ€á‰tqœî—Ŀ߀(þJÙ2í† ëç´j¥›XWŠ[Ñ R%â¿l™§ÈpPÐ()xc™g°¬³Ì³KP¨ â<}/À“Æÿ4ûCk×.B£ÄTD\Õú~.“LJò‘ôàÂ…®´n]˜DZ¯\.Úp &×µóÛÈmÁ74u…M²ï@ñQ^øY”Ì^[¯UbÆ ˜øæúä¾G£×(8ýÛÜv`ÿ“ã}ýLdxE! ´¤ï\0$4ËŸŽ£3xýþcFe³'`JŸ¡O=öÒ?Wn䤿]ZrŽÉ¥º“RÍ™ÿP›¶Rû&5©Í#‰/ÏJn0ï7¢ôƦÿ#¦MéÑÆµ¨îÄ­¨< ó?¯¤ùÿWµž¾“žå ú÷gî?%ÃOºJÌchx«Û®üV²0–«Ì$+cL+ Üþ±:ÏÏèd7ĤøŒë<Üû"°¡Ä¡¤ÆÖÐúõa"»†7»³,Û,ã‘‘S ó …Ø2àCO#€îø?cà‹Ã~OTáÉ)|ú‡¢’jõêh Οï¢ÕY¯-ÅÜʹN“m?"7ëAd;¡'²Éb†g „ÉeFÛvŒ¢žï>[ܶèiƒAþŠR^€9u÷­‰Á¦´óäY]+¨ `ÓùÀ5 n@ï\ª=eGÉÈû¸mT ù†ýÑc(Ôåºm`®·½^@¯¦[Ä ž¼Á¿ï§Q O•l®?Ð3—ÌÝ/“øo_—†-›Ôiâê ¼IÃ?nÜ @MÀdò-Џ–™êv§ó—kºº±@Þ.]T|§O'ÃŒW­žK¹m[˜¤/Ëš4ÿ¬A¿Ê_¹Š’³,‡…+€ã¬ôj,À¿8¼x/ÀãÆ.ÀÊ•a†8‰âóלó_¶ÌÌŠyj0ÿP9}:±¦Mó>&fYNú^*¯æF—|+ûmE]ørÐ9N ÷tóÿvæÿ‹¯cÁc7 ×œÂ8㯈Vr:Ú-ûENËÆ®Ÿ œK?‚µ9šo8ÇÎ'mqåãšüaµør4=Y]AÉn9µo†ò³éÿD núT5ý§î+ýî§šÿ»NH +î±+ Þ«øÛÃÕ©~û}ÿâÙ€@urh›¹¹hWèHX†›;IñÎ%#ëQlÃä߉Rõg‰IU L¼z9¥„pöŒZøï%²Ìþ>[¶jEáOßbÙg™7"€çîh\UýýnrÂÃ'ÈEaå÷ñ"ìÈÅ|W¬èêµkiÅ.2÷ ¤“;,‡Y³:£üòÚ”(7ér±Ó_‚…W‘»½²f`ÒÏÔÌúwÄÿ/˜ ¸U-?æQÖ‚‹ h qeûÐIÀú}j,`ݾr¢N_†Õ^Ý·!Wäáù}r:›¾ß“ž ´kJ¾öB‰oÄÀï<ò܉v¢ü­Ÿ|-À—¨ŽÍIœþÛJ¼üM<ð¿½ÚéÏnÌY: Ì1±»ü_Ýaå7€­¯ék´ÒàM…Ù€¿q8Äìí&®¢±¯Ær0ï?XÒ‚ twë…ÌTzAãZ«ÉiiÈlZš?7OqgY¦ýü†J6€k[ØÊeb0 ’ûÏ@NypêƒÿqÎx{”æ &Τ§Ïó1º§V¯ •"‹«—‹)4Š6víš/'¿£ãïR¨qút’š)(vú_’`á~ÚxÜ^=·;ò_ª€’ÔQˆF³08Ìx…õ ¨ƒÙjˆžçˆé¼~Ÿê ä 8sñ4µæ(û`žÆ[Š+0ä0ý@ó/GÒã*ôh“: Ç*g ´ãSÿ joÒˆž€Ùoöúwhü¹DµíÏÂÝØZRùa‘TÇ€ûpúoÁßz“y<8+ÿü,wêä Ó?´yåwÞ²¢ ·ÜT‚²…nª×=H®9/ª}—W;tÖ"˜yë"2Dz·#ŸgWdqO¯^V;×® .,ü±çΜþ"ûê„ë?Õ¹n=šÜ+…@[µa1™ Aœ]¶ÌM' 9Å_€OüK}²mð­ÜåäçL<‚F3˜wE)æŠ0zpþç4‚ƒÙwžd? &×rU ¡(¨À@€ì÷9Õ@ˆœ:"óó™xÈ&Ç– ºÎVÀòKuØ7ç] ¸ X„8ÀôxMÁÃu ÜHù=ò¨J‚v´¯Ñé×¶][z¤Ez¿Ó¾EStý¹P ”´×A!RiÊϦ]öý»n£iq¥xÕòKÛ™ ~ŸÀ’í¨ §?wdŸo*iYã{Ã1Ë̆XÖ«ú÷FnIÁÙ&ÈÚ) æI@éé®"‹Ee3]d6²Ë2̲Ìyÿøx‰sq…+›þÙ×t!¨v¯@¢jòô”àŸùÿ[TúJñJðEãáâÅn¤̾ê-Òº•TSeK×l'$؉ÿåRJ)æÅçÓ‘ë¶±ñ5ÿ ;ÍeTwŠ^TH‡! “rà7ï;{Væç1 pPÍëÁQHýuÁi™üõ'•æl‡5/•zµ‘höãLjýÄ+ôh£Úô8ªø¸–¿}ÓZèë¯%¯Oí›ÕÆsÕ¥Ëﱆ€#“/FRÝi{Åš¨7yw©3…¦qào½ï¸[”? ?\í·nöþÕÄÔßw.ê_NoÀ /“ñÌœ¢q.Ï:>SŠ‚.©:UÝ€Ä${´¥cb5°`Á$‘E5Vk‘¹ E|ÊMdX•e.þ †Œ÷Y7Œ7š ˜t/•{þqƒÿÃ%‘AA#à+…Ë3€ý§È¤¦ú#Ÿ¢5þ¬S? à/9ýÙ'ËÜè+pébJ)æÿÚpÌšþ^SÌ#pÜÆ‹GÍ©¯¿:IJ¸rPðGI™=+à¤,Ó\³÷¨t×1 t@»-[õ-w”Nb l…–À]í™g©ÑÀ¥Ôü› döÖÏÔê¹·á׿¼@­ŸyƒÌ_ïD-¾ø›÷Š :3Ži§¾ÁßÏ/õõLÛ)©Ió±ùtâÜIÚwú´ 8Y·/VL]©räÿ£*)AU б¦e˜±Ø à8@ìÞZ=€qωzðdmòǸúïd0¯ßm¨Ú#pêTŠÈ*O¶bÙ5–eŽpM€: §±ïOÚ*ñ{†zßÀ…ó£«VEŠÏd|á’“}…M›6E¡Ðbµ\pOÏ^ÚÈåhÇŽ’¾˜jþ'K}wÄÎN*dW @C o°áŒ±6Ž’€…LêÜÃCwJ@Æž“Òds£·_œ±SH ž¥Zƒ_¯T"È%®;u?Õžu‰jÂj­…6^žæS×ê(bGØ;KµQÖ+ßs¼Ò8$ñ„âÓ~J(?J~›ϧü£Çéì• Òæ›”¿ˆ~õª™‡¬ü­«¤òKéÀñ fEZ„™Æ¬­N>yïJC]J+{ÊBìiž¸öö¥é‡¤‹×Ð&,±eŸŸe•eÖX†Y¦™¸ÞÅhˆ1úßKðtñ Àõÿ ÚjïbO%ž¦2ÌÊÝV«3‚$‚: ÑXΜ9“¤uqa 2‰½z…ë³×¢`cNÚv(õ¬W%Ìÿ"ýÙjuàÐHS)S-î Ü_±?¯›OäÒãèÌ.:Oϧs(~oÖ.ñ¿k@ÑLÝQ¦ÂR…jñÎNÂ>(úAQvþ\¦ürjOÒ{e+>M-ßßfL>å9¦NÂɱÎFR™ÝýjJ,£J*¿FÜ0eÙ¼@ÄØ˜º]¤(ã,WªQý4U¶ cçÎ¥H¿?ƒe0##PªûæÍw’vߒʯ7ñô+ΔB/Ýk3wþyCcÐÒ¥jn´4($Fô]s^u6‚*œNÌÞ‰Y‚‰0ÁpãVh7k¥Dÿwž ’â»MfUJù V€Áeä&¡Ò-Öð¥åòOŸ >v>fˆî;}Fêíû#&Ðm«Z#P®5Pº…PÑŸmˆ`ígÂùÐaýG]mœ°Ží$Ñþ~Aîx®¿¢eÁC"M¥$ظ;¿N\W‹öŸ‹T­(?ËËÖÁƒIHF!˜×Mz,·sçÚŠL²l–%·,Óœö‹u¹5Á5ìÒ¦ ßSàXHêÅä Jʾˆ† S˱`P»‹¹‚@¼dì^ÒÒ(cM å­]CQ™½h즪ãÿ—FÎN]i†å–&%²°Rñ>NȧŽ~ ñ€tñ·ÕíÂg(xõaj6"_\‚êðÉVšÊ8ñYñqâ?0AmòQäÒôÅ…JçeE"Êo.ä4=·|ÂÏ͆ŒþA-%#ËCŒ¬€‰›«QÌúQ´9=…V ŸÏ2Ųµt‰—˜øÜ°¦@gÈ¢Ãu.þË6§þ8 XÌÿw¹§¿hdpµÏ¼°)3Kz­ù&ðÍ`³‹;¬Ø“…Ñbì%D/ §Uo’å¶o[ßÿo&n…•5êÚ D`&Ã4®)½Ð(´›Ži›ÅvŸü±aß*š¸ðSúÞî‰ïƒU×ß/7ˆöàô¢íÁ,'S¶U#ïÔÿQÒ¼Z²Ô½`žËï¯ððè#²Çæü¢Eö³,Ê“]–muàŸÆ @Œ×îÕÍ@« eÁ\ Á~TJJå €1qå›S=à žL©I!ä°©=Ym~èŽÕþW´6€ÍPÞe72Æ´Ì  ±5Ð?¸±œº=ü׊¡Ø2´… ›6¼B½ÃRS4 )}sU`JÏ}(Õ­ÅJ>YSr#ðsµñ½ÆCáÿΓè¾Ò;‡jÞM]ÿ¡¬ýêkï8†”êÒŸ¤XégYêÑü®9õ‹ƒã.“’ÍJMɹŸ¼Öw Õñ±EäeŒSz†Þ•Ê@ ·5*ÿ]s/¯{¿0ø+R'¶Ò>ÉÁ¾ë¹11ŽÚF!Õàç @ˆ"~ŦØÑôÍ ÐücRu•ßÈ `”£Ò/ xh½e©ÚxÏ ÁŸ¾µÉ&îg”‡¢ ÷¬(ëÌ ÀZ…?CNÓÖèþÑ;e§Òo›Ì(@ßmÑW¡žÔ~jo}‚º!뺱†sWö¡¾ßsü;@é«‹âóDã»Á×/¿3°¥¬k0r¦m©KNŸ£´åÑ””`DòÈiý‹‘7©0 ð,û&[nÊÜ€"`EìôlÙaåŠ×Z֕ⶸÐá3× è¨ØÚ°~&dµÖ¬XÀBbGaé½(#.Nü~>\XÆx™ W®òÁËmY¹„3X<܆å’#ý,»ê©_ ø;´À·¢@Ù¨8ºÕ‚‹.¸˜?‰¢sú%(h¤ŒTŽŒœ¬ùU¿ËÈe¶ØìZ¹*ŒÖ¥ÅRòJìÈnJÖÙÍþ½â–RÂË&:O”aÓ‘}H”ðü7û°P 0ŽgÐqÙ©(óöâ°(„ü¬yðë9a¡…çAu O¶åÓ«¬¢!• Zf%v'nQ(xío´)5]dŠå‹'ýzyõ‘yœ†Žˆ˜$ñ'–I–M–QuhMñ v :Ý©±ßwÏôþ1^ÐÈûØùÔçÁ \<¤º Ý%²ÊV¼y3°‡ÝšâæùPtÜx²Êi@¶Ù-o,¿USÎ|ƒbâó\U±ù{3µ9ÿvÙ†Š>¬›Î4ÃJ3²Â:êék̤ÛÌ…&<„’+ýØŸŸœjF“R°ž ùç‰ØTÃÍ@Ü”Âà~ì2 ΔÆ"=Å)ªÑK5,6C~~9ˆð³CP40ØT5ïKÀìºPÍüŠýlÅ`Z& i˯q‡ ÕÔ´’Å@Ss 9«>¥åQ¡HßÙˆlñé®fžÔõôlÚ³,ª.ÁïE–‰çÏ;5í÷n'šý´ÕI—/p±zja_6Ë&Çéè0ôûœlw4–=ð•U~>ɹDwò UIÇÆ›É©ËE:œ6m* õn@}B¢¾!ø•ý^ìÚ«ÒšczP À¤`spi¤v³H„k˜¶[Ùl» ©ÀåÏ‘ãÔ^&¿ºË¯Pæ 2¨Ê¤È%Ëè2­»¯E×­»‚Š,Áï‚ -ξÞýVç}½û“¿ïacgç?Õáv¶ý‹œÂ¿"›UÚ䟥ՅsŠˆ‡u°¿Íफ़l.öño´XsêíßÅ7õ¨›_mêŠî·.~ÐþP&ÿjô›¿"è¬á7V°ƒ"ÝGÝ¡(Š÷ª…h€†ž‡ ‘Ãg%€à‡˜Ê¿ÂZѰð64<ìì?xŒF†?I£ÃÿFG ÛyŸã¹OÈÚ3kèHVø«¨òÓ¢ß'Ëèwi*#êy¯É‘o¯ËßÁϸˆçåoù< hECCÚÒ¨ˆ'iXh;üOmhH(ºC`Å`7bÿ¦Ô'¸‘\¾Lh]qøZýPM®Ÿ¿Ëu¬ŽJG\³ˆ‡„\…›¨ÁËuÐGåÀDH¾8Øä7¢Y©Ï‘‡ýÍE½ Êx=ðèïÛŸXö ƒ€5IÈ&¶^÷°¸‹ôéî \XÅÓ£—âçÓ_‰ ©à‚+3~WÜ/pwïÑn¶S·aC‡,™7ÞsΜ>ó]Ý»%{Mž¸Ê9´Ónë=•Ìdq{®…˜â==Õy}Ãæ™¢(G5¿Gý#S¿Ð&2ÀsXX;êqòÉsßŰž÷ ÙÏÿŠ|O. Ñ3Óæ,îM¾1(hÉP Y:‚Â–Ž¥ÈØI½Ì’æÇÍ …q¶´xÙ,ŠMt¦ØZ¶Ü]v&$$¨Ód’“(% 릒BieR­JšKéɈy¤DóhuÊ|Z“²XHkSb °.•±XBëK)3mm\¹œÜF‘ÓŒn”A[V§Ê÷6¤Æ– þž1øõÔ×U±ï³&e‘†…ø{Èß•‘<²Ö,'ÿ9ÃÉ͹­YµåÙÁòÿðšìå®ñÿ—àLK–;ÒÂev4™Í›BáKÇɵ X<˜¼cz“Ç¢®ä´àGš9ÿk²ŠþF=I>JC‚ZÑÀˆf÷ˆ7/ñ}«h|„‰Ý0vóŒ×†Ûìxðü/˱®nÝ“æxõ™¿8zœWxÐ_Cg;ýÙò÷Ë Ë"Ë$Ë&Ë(Ë*ˬN7Qé|*¶3;+ýÿ~_éøSå‰÷ë(Ï~Ü@yºC½6mÞ¬Õæ³_Q†ýXq˜ý‡ê9Fq ùN±Ë2ëe›S¹ùÿØcóh¤Z$¦~?,ñè:»9ýjÓŒ>ŸP‹&;~J®.¿Söŧc%ôʤpv~V² +b)sÅ2ÁÆËüù†qò½õšò¬M…²¤*ËêóE±W%GÒª”HZ™NiÉa@¨(>÷5¤& R’Ð7%J.€¿?!Œ¤D†o$j0ì¦ãa¬öH·rá•:‡Ñû:}ø–xí$íuU²ò+ü{Ž]õn‘Óh&¦7%'P:V¼¯ÀÿÂÿÿü¿¦§Ì2[:O®_¾Fr=Sc®eŒÜzQ˜÷(8ýeê0âAúÕî”g ¹oÍ0pü¥°+¸¥%Ùæ˜$8/2åèÔEùkÌÇÊç¿¶WÚ¾U«õ3ÕkÃ2ȲÈ2ɲÉ2ʲz7‘âîÜ÷ÎÃ¥·â1{€â5ë/ÅcæÅ×y8.àÅn–ªôŸüÜVyì½ÚJó—Åì5EyôÝšýÛ½ýàövo?@íß}Z¾¢ìkü¬òë“o6RFؾ­¸4QÀàƒì2+·ý‡•ß9aVþ ͨ‹csz§ËCôA÷Fôv—ºôV׺ä6»/ùÌîGÁSh]Æ"QFöB%ÓJ@sÊ€wp3Ÿ†óç[—1PH2ÀWòÎ%áS|‹Œ¨â?¿¿$G­VQ†ý\Q¨¤QÙ÷óÑÞOíÝàAVV_I0Si| ×)±Øµ(Š’×Åòû{¢#o62D‘~ciÄ”èùÎ }Э½Õ¹!ý:£\lV!+ ,°ÛØŠl¶5Kõ8l¦Œœù¶òÔ›•ÆÏ)?™¼¢ìa™cÙƒ î€,d™dÙdeYe™eÙefYöœ9Tñt¢É{Ÿª¡sW®wn®½”Ù»o) >Pœ|¢|ùÇ£Ê#oiJÿª(½òÔ‡uëqãÿ:Ôê’Ù ÷÷zì3E±ÞØRqÊm=æF¶öpä^N˜þ_kBôxˆ¾Ú„ÞëW“þ÷·9ÌÙAäˆJ° ‚ÚŸ2ÄèÔ½N‡#ŸÈ11öÈ+E>9Dz"¸|46Ö9©y›2×Cðb‰Å‹gË\îGW?W[ Õ±TEÁó–,q/RÉ+¼‘-€ùóðúÞÒÕÆ+«‹#&1ê#W\ªŽ€G‰÷‰1¼??.ñ(èÝà¿ÛÚú[äÐÇȈlãŠÍÂÒYoŠGù,—«ð.°8 ¬) ’ïqÞ ùßá4fÆGôVŸûèó!Mèã~¨CÏF’&ezã¸ìh1qEs¥õûŠbþÒý]YÆXÖŠËÔgeYe™eÙefYžµð=Å~«gÅÕ½{•Ð9Ë”¶wÓ’Q¦¬j©L\×P™±¥‰2*¥¡Òè1\È'Pžþ¸.+>£:°æ)¾ ©à‹ÿø»uè‘×kS›—jSóÇjÒãïÔ­H¾‚!ƒ )ºÊÀ¤ë"²Ìûû:öiDŸj,‚õVDÕÇ<)Ç¥ þþÃd tl¬—8—ˆ*”i¡=N>V*;Z¸ÈÚà"§¼Z`I¡Pþ@ä“WâÄT;"}åç’“ý¤ÊŒ+θ}åÊP){VAé\ÿ0¦v0F¥‡ W"“”×b§â:A(mX!ß3tZòïò€J›ï°èÒ‡rr–PVÖ2#ÄÅÆXÚpш pc6,Àþ»Z×^'SßX÷_½:îQ¼Ÿ¡wƒSeœ+ç¯ “Ÿ ãÞ¸ß>+àã—yãzºid稒Ï"{± xdÜÂ… «¥> $§‚¥Á¾Ãhœõ'ôfïûè³Á¸WCÓ{°Ú:[«VÀõ‚‚¥Æ´Z÷ý­R‡Ïk©˜?SûAÓ§j]e{äµÚ"srðä°ƒÈbp?Ë*Ë,Ë.Ë0˲UNceÒš&õ6Šer»*¡s@ñLªÒÌ”©©­”éé­”ÉÉJwçæÊKßÖWL0 þ™ë)Ow¬;‡/4ß“'kR³Gk’éÿÕ”¯ùf¼øU=zòýºPÖÆî3³Û4À¤—)2îi‹Ú\cÜìQÞúnÎ×4£nÎ-Äôÿ|ÈÃôŦ°êÔwÒKê÷·¶ÅhøÎ©©r¢ò¸u늒lÚO[¶$S~þj ‘ÜÄÒž=óhÿþx Œ0>ýøTtpèÅtƶ™µ2¹c¨.cžá%à 6#]EGß5*ûƒ'‚¬ÐÆ ©Ûj ‘.k/cçݲe^Ò9É„4£­¿¡£Gª£¯*õÁcˆ’Ky¯Œ‚¹ø žÏd7G”•Sµ¼5WmÜò–]%D?ŒÜJ¦3§ãèĉmtìØ~:r$×k+íÛ·×.‹vîÜ@[·& ðóž4 K:Ù 04ß+&ëz7¦¯G>LÃç™]7ÀÀ5L¬ô"+Ú˜0›Lót×m›þoÜÃ3Ÿxe¬¾ÈZ;Èœd¯yû"‹üµv0ù>ûi=d¡¼ôM}‘a–e–i,°•C®Êè›ùꦤZ(–iÊœC픉‰æÊsŸ ¼Ð ßâñšÂ¸ö|ˆ~²lJýOÈ/o¶Yß-œ<ö«5¾nuþ^‡¦­² k-$²+77[òªÁA4 eµR…LiÚ4ÁD7¤o§ÜO/ÿ¬Ð›=zýOÌÒÿI¡Þãÿ"ÆÊ†Ø9súbìxš,#á‘\ådk ³‘þù'EÌd6y ÍM¬¼onË– ™N€¨–ÉŽã÷á÷½ \“¹Œk)sCNr/y_>ýíì¾+Œ$¨°` }©ºØ…âµµîe}—ë³uk˜Œƒ—þãhФç©ýOê}âûõ6ãO45ù5 ¡ÑÍ$Õ¨*|É:‚>>¦4ÅY<¡Ùv£Y­Qef*dgJŠÅÕ©©çm7ª²Å2Ʋ6 õ ýa!þdYü¿Žu©Å5Éä‰ZôpÛ/ ”ÉIª ³,³LW5=3 Êþa“’Ì×Ým•‘ M•öoÔöù¨×Ch‹EÝöêVä¶£-¹ínGNymiÖæ6¸1­hz†¹ŒwšŠâIÉ|SÍù­7ƒ@rsgnA‘GNC²ÙZ“lrï#ë<…¬·yÕÈ>¿&YojL͵ _¦©+„¸ÔÇýO²réGýíûPŸéßP—IÐÏc_¤Ïú¶¥?]šÓÐ Qtôõ Áô$ üyïûQ„T‹zú6D܇W„·™Y™’ÜJ“sU–V˜Šl±Œ±¬Í„ÌÍÎSeä ©H´lsü¡õ‹µB‡F´TÜ÷´®ªúUå €Ò|֌խ®¹@é]p±­Á“a²_ÞûÝšÍQÈaB“STK§¿<ò×›ËÏLN1•ç'Á׃9F.[_"ÇÌWhfZšŠÖÎÄAä‡UM‹f“Ç‚òˆ˜O¾Ñ‰²d5EÄf"/MÑI‡É?Ì‹œ¾ÁcÌÎA¿rys¹ Ãæ÷¥‹ËÕÓ •+q2zhæÿ\˜ã£±jê3¸ Ñ*\;^I¸P.¨VÀjÄÂàS» ðjª)S¾ ù!<è«’p ÖÏõ `çÎE ±r¸sÎÞþXNÄ`ߟc"™™ê5”ååÀµkér}"#ÇÓ «ïÕ^‡/É/2„æ%¥È¸,Ô¬§à˜Uä;/žÜ#¢Èe®/9F:’mä$²ŠD“ãqaŸÑß!¯ÒððÇihèã8 Z‘eš¹ÈËÊø„f@sTšŠ,YÉÔĤ–=ÈU|3‘A–Eëu­Iä°Yk2³õl:í«ºòWex°„ùu‰M1\`>ÑÇÅ«žM6ëÕ’cÖ³ä¶õòÌ{ƒ¼w¼C¾»ÞÞ#Ÿïâë·É#÷5üÌ3ò»|C§¦™Ò„´:äîJ‹–ž¥˜øcäœMž~™ä¼æ„dМ°ä•@Þј'CžsGd4yÌK$÷ 'rsú[‰{Aa¿‚o'ûâ®\^Yžº@!Ò Ü š".ŽdÓ˜ƒb¢€½€ ¸¯ƒ|/ôÐgøÙäwÇÅ·À¸­–ˆ7§ßøˆÆÎ²£Å«²)lY*¹„…“gÔ|‘ Œ€¯!L¡~¨hû ØôŸ ª­+K„„þS.\¾”P ˆÙPD/ÍJ¹Cg²³ÿ™Œ‘ïßPMò… `I&|‚¸ƒÏ Öf]Œ-ó½ °k×"É~¨.€ñ$Ý™”¶2L®ÁáÃq…+¶…ö”úžWñž`Ü»w6óþ€ "+ÿoBžQ j(}Ñ{¶Àè^ªp £Ð¸TÜóïè@/¿ñ9ýfcŠéK&",#{?¢ÐƒŸjr¥Ê”ÿƒ\uYãï±ì± òÄ`³öQ‘Q¶8eÈÞÓ  bè«]4¹€lÚ[Þ”ìÖ=AÞ`ãàŸàÂ*7„/<0´|^ü=ߨà…¡íÐa¶®ßV¡š ½÷ã;¼4&ä:H¤œ EAòŠ‚K®asÉ…w¸v‘ñμ›ðð¡X‰\½RV$ý Ì[cXCÛ·Ï“à+âüù6’Žã-GGŽ,e¨,\»N À@<ùù  *Ê’ÆŽí·€7Üî,7ÇPR÷AY—àuW”þ~lÏ›%÷Ô‚€½¤k“»çØýHK §eñsèìÙ¤‚؈J{Ëðÿ·Š¥ž­ÐS¿Q—k:a^„×(Ü›ä"Šo|ÿÔç’K(†y$®¥ØTúàç÷¨V…£c›J€Í{>(XVT™*[®ŒÁ²ÈdÀ`µ]û8Kh*²kDŒþ:”¡…ÊßZØ”Ö3ïMœâŸ°my _6¼#¯1{gps·µ¥w~ˆZ=ÿÕ\¡¶o6§€˜$GÙû‡­_YûÑ ï@²š ŸÛ„ÁŸŒ''ÝœƉÖ&ô—8Å]%2}åòšò àb!°i¼`«äï9(fmÍð;=+§\ec×`}¨ÊŸ\.ìÜaLÓhÌ蔶¾ÒAÀ«Wvâ”/‡´ÿ3++i>µ¨‡#öj*k(†K ¯Ð6¬Þºžpíj†,â  à{!ÇoÉÙÇŽœÃÈÁ?˜fáÞÍôÃ#àB³ÃÈ9$’œ‚Â),.c’©Ý[&Tï1EîýÛ¨tÜÚ²Ö ²ñ¬.7&_êï0°Åé¹ýM‘]v)X–H`„N¥ãëå_¡žüü9›[¬¸†“¼²7ÆüZspc&$˜Û®¶ôí¨&’V|á³úÔ$ðâç Ø@‹â(E%§Qâšõ´>gmÞ¾ƒò÷î£Óç.SRrYNí(&-[\ÀnÀµk ¿>¬ÆŠ©X‰Æ§¦£&€ <™5‹ N¢õ×®­$œÖÌÿŠÀܹShüøŽFNÓܘÓ~¿+—7‚bË$5Ø™Žh½?ü}ÙúÄæ¿º þÉÄÅancF¨üg)Ê#€«WÏÈu9yr92 ¿àµºJ!ã¬håÖ-´aÿIJÙ¼â3·ÐâÕiÞŠ ŠHHEóU<ùÌ_Bs€¨Ä ôÊ—OR}(ÿ Ÿ×'N+5¼1"ùmq(´ /Ȇá¹Qä”]&ƒ©²\Äøÿö®,ªsiŸÄX±‹RD©öÓsӌɽ¦Þäæ¿©¦ßôjLŒ5VŠ ö.* "*ö†]Aì {7öÞû÷¿ïœs–à j’³Ï3ÏR–e÷ìÌûMygæ 2J9ÈYË’„“-DSžÞ·ò¡˜½§ܵFHÎTUýÐñ÷)|È$½³Þ?]”楩¨qCnªüÇŽíQ¡àµëÛ]¾@&ý5¸ÖÅÀ®^Ù–HÅsÌ…QDAË©Ès\6©@²ïæ2+*C¶YùK:lß> ÅF =^ûË ç¶Ô‰;×<×ßpD ¹vu»6Ù%åùŽŸä@é`ÌoöÒë› >FèÓG­_7I®“£7 ®]ݪ»ÿK#ùúª€o÷n¯«¨-ÔžËð_Î\VÛO_’ûg¯@®âûËjËÉ *íÈuòÚuÕ;n¨*죩zÿÒ?sÀGÝ+"'„’ßâ*ÐgE?òCט,¤7AP‘ä³E·!!lH—!Ö Ô~‘— K ;Z²¯ óMˆð]P=è±D ï¨\×EÕ{°Á‹¥Z†|–#ƒã\¸ÐÐWd¤˜fâP©CÃþ«¶l'FxåòÒ\&åÖß0)§Çä)HXƘzQQ?É¢Šž=ß—u%š{NÀm×ó!̺o’÷¤S™7ˆqëb~ŸfUÿ}÷e5{á,•ÛÛêÕ ¨£?#ÙhzíÚ½¤V®ˆ‘ŠÀµ««B€dè´ÜT4!CÝï &I ³põêH1¤ËgK¢íúõ³7$]¿~RÜt½Äx#VÞR„ ‘‘ö!» uj.'*3ŒaøÑ©Ó«’ ‹Þ3íÛŸÃèÞÂt ŽþæÍqàÄ‚T,ÿ0œòñ|=ñÜa’OèÙëR£çðL.Ä »Oã'Ù©7¼¾øŸ}QJíÓç+u`ÿ\ð.%f ×®î—ßoÛ6^µ‡§BþŸ«kð¿Ôâõ©jçEÀþ£7€Õð˜ @º@ÍOMTÿ|óUéþ{‘ óV¡Ð…¾Ð‰‚ñûÈÖ˜f€N’Èpa: ^ [ê_ 9~ 6>¬Ú%–Q­æ”V=cǪKWTžo4¢°°WÅ à¨èÿªcÇuƒ»ze³%XàpŸuw|5êÙ#Ñn"{æÁÁo #Šßm‘¦=Ë>_Ê‹W%ß!¯¯^Y-±ú¸å7ŽÉuwå³­[§ ñÖß E™t}O=™ƒ‡|%ù€ˆˆwå¤íŒæ¤ÎßPÁ!ÿ‡ïÿ‹÷ù¦p(üš Áïøºƒå±¯£œù–¸úúÆçÏÄXIÔ<ä[ÕF;2®½3±‹êþ†êÞãµwßL½Sñ’þúù^®]Ûiä5.}«ñ¿F¾â-¹Î]^QÃQF¤ñ¯?tö¦Æoʪ}Øw7àr‰kN€&)ÆON@ÀÜWÕ¿3<”ÅE‘š)é”L̘€ü€þðB–ÒËðUêiªt›ê5Nº7à°‹6mžo€JÚ9ø5ÜeN3ÜÛNFʶୈÃûÊÉI$€°´ú2çå1z|½Rç\KJ/—‰»¬'á$gMÆI˜±ØhS^%¶råœú#ef…ñ? 94Jïô±jÔ˜vò}ÏðÿSá0ÚpÄÙá0Ôð°q꾬"º¾yÕWägüãqy¬<î%Õ£+¢\øž†!þ›ÐEÍÄÌ¿M'Î)7§-+¥÷–6RÞ£#ëDOi–´(§¥‡ñ¿@ùŸ‚Ø?¬óóûïEŠeÝÁÓ97~x ËwíW1Sçã䟮¼ë{¨2µ4šâ‹N@¯|á „Ý}uma²:ñ¬òØßžÌæ¢è,*0É Ñš®Yô-ÖiGáCî—ö6ÁxJ»g€Ü@ |º’?W/†O†`çÎÿ–õP‡'Ã6ØíÆ}âöÅâæÇi%ýýú}d$ÅpŠB 8ˆK'{ îŽùEO”éÉ739g&è¬bþ|£‘œ[«Nœ\¬’0”#>>§~¸´s§"cÿÁïÈÑ¿«#ä^ÐOÔ”M+Õ¼åsQb¯&ϪâÑ!9vR„=¾ $T$_™®ÆMí­&`ÔØÔy#T›ÎK£×%©Ô­Pš;¢6Ÿ¼,®ú.ßiG/¨mð´’6¤ÂÛx×ë5„#}ÅÐ&^Ÿk‰rÍvì˜.ɶk&þ*=Â_ÇóQ[O_Åk=–cã_±ç ê7*^ÅÎHÆg¨Š# ØàÅ’Òþ’Šþ´obö4r¿N'~Ú`³VÎÎø)Ïþà‰ì. 9ÔlÉì’$^@ô£ÃoÇÓBÖÈ«WÀ¹Ïú*™_nØ©þ”«ªùLqUª6ãþô)Fw/QûÊ5œ={BŒ88ø10z4dÆÄ‰‰Õ… ËŒ¡›dvÀÖ-ñ8íßÄã_”θ…*Ú¶í“Ò*KÑ“r¯IˆÀÄ\ttS5.¾-\øPI¸-If}}0NöHȵ|Ù ñ({‚_ß±~GŒk¿ý 1ýûK>plT"éˆq9]ùvO¨ÄµIjÝ郧pJ_QÛwÜ0 ‹-rQÿ~;âçíç 9o<æBúcÃï·‚¸·ùäUµáÈyâIdêa¬(ÕmûG>ÒÔà}’¦î¤Ï™ÈÚð©cÔ5s u°: C’ýD7©—ÔÕ?%Æ€¤*ïåàBÉÕÇzéIfWCSüelѶ׺º‹1a(蜒3þ²íqÕn!þvMyõöÏ#1ÖßaÃ'MS—{z¡<82ZmÝ»OÝÊmÿþ-˜«? »i`µ-Swú¶åÈiµâc·Ýø»ï(à:䲚4{(J|_ (F¢Ù'•…äMˤrÀ„ây7æúo|¤ê/l|é1@½Ñôq¶º¼ÌŽäø¸¬¦—©ëÖ󒇢ÎQ÷ä0ZPÉ‘´¦ŽæÐø)ÚT¥4äB/˜CB’õ!¬¯}[Ï)/sØ8ðƒ­˜#áα|È”Âòߨ#¯Há×ÙÅTkÌpËB%mÚ)¥—àœO ™ˆS>úõ#ñ=j£øz)Y3¡® …DØS³—g /B†l'äZ~\üŽ }UÌñ@õÁE%î#ñççöÍrl0 É©ƒâ'cëÌTG…€<~qÔÑ'm(@ãß|\ÏôOMY¡ºIB†?¿î= €å{‰—]2qJ;‘ZSåK¨÷?o¢V¬Ë} ÏáãÒ &ä t‹ŠÙ±o¿ ùnüGÕŽ3˜ò ¾@,r2Ìè‰g™/£ñÓ#ŒŸÓÝß}þºÃåÏNV¶×û¿“Ö.S|û‘*¶ð¢4Õm=–…Bgò¨»k!)—Ü ÿ Ù°,¾…-hXDZ`¢½ÓÙ=ßå?¿•×¾ŠôÐzoñÓzmöÓÀ´Ò:ç~Eò(Èówòú!tI RÍæÜ§Z§¸ ,RíÞzì– 'eíI ’_>L(¦é„¡Nà ¤¬M³ Ÿâ}iè‘©?§Ä¸Éë§á[Ë|fúG¢ (£Á!9¥6¯Áó¯BcÑÑkú ôeiGÔˆ„(Õn©›j1¯Ž [1þ&F¸\éyëIôõÄÖsQ«yê@Y–”ßÉIËdÚ AkòðžVVc°({˜ LݳZµœ_V5‹ tˆº”‹ ÃÖ:[%«S½G6§zßmZï­þÚ€=Zó ^°7­êýE4Ïj÷jUjœhµŸ+‘ï‚Å Ê+šW­bšO}í›aâÎ`ƒ†>|­ýüŒÒfVe‚»y!ü4$ì´Ž‰™ÀÀ’¹RPUƈuNB½v Ö„'—QíRïQÍkªwê¿ÔÑó;òÝ€vþq@uÁº0®n$¢ÌÜ@'$‡Ož®Nœ9c@\~.óàé©«U8hØýÐÀc÷…‰X?›ó×o12ýgnêöçÄëX…çØ‡tÎ&4iõYö‚j™¤A—4Õ1¥Œèu¬sRå¬á¤ ¤d†õöÐaê2ŒÐí­çF?íkœêo´,Ó·ly»CYí“îå´Â+hþÓ¼kݧ¡L©Õ}®¨V÷Ù"&¦Ôk\B¼Z\µè“Z“0w }ØZýÝ2HÍgJhÏYF{¿«»övÇ Zزª ßìò•Œ=‚ “üNvLÆ"Æ¥…U¸ùRÜÅõU¡³_Qáã"ÔÅ´ÁƒÇŽ«žpýÙ58Ü’æ×üYqjëž½6äÐøhÀ»¿oÆè°‘3æŠk?xÜäLÉ>fùûÆŽs$ûœ—ܪ¬íE³Àô€õß ºôªxRJŠŽµƒ®Qç:'ù³¬7 Òܘo©ëç’ôŸ§=àíŽåµ÷»TÐ[F󽿰æ¤áô½'ƒxUÓ´ZOÒj>Q‡f1­~ãbZF.?1Шú ‹vÿËnZÔñí­4÷€bZЮ“y4_ƒgÍbZy¿¢Úó_•ÕBRªˆ˜4³À£H.S¦CJ‰ê}§O41F œÄrÖD\¥"c—«Sg.¨!>wNHB ¨œf|*Ý„F^`þ²U6äÐåçôæWxº[¯'cæXˆž’Úð¹%ûò*›ŽŸœPÃF/WCG®¢n œdj×ÙйÔ=ê ÕðC–2ñ]U¾GIQô÷Ÿ_–Ô*T)¤yU/‚°¸NõbZ½F…a|¥ÖS÷iý§¨öèëÅ5ÿGpò?ÿW€\´þí¦ ? ½ì.9‚lÿæyýo°·M{ø?%50´Äp6þàÅþZ‡”bZû¥E´þSzk1±;»³L ›¬†Ž›2H¼0n‚:uö\ÓÕk×Ôd¨I¢’µô s°#èÃì/8yæ¬ Y4‘š»ûÂuqù™Íï3jL–äV&-NÃߊ¦žÕ܃͘՘i8(~¼¶a$tŠºE‹½chÿ)½D÷:,u‘ŠÑwJôÑÚÍñÔZOu×:ÎóÒB’¼´Çþ늾°nÈÏ×jîӨX&ã·Àú7ÿäß LxÉMëº*kèRJëºàY ˆ¬áCцŒŸ8lÈøIÂÒ£ÒôGmž5ûÓçÎß6£š³t¹$ûAYMæ F EHÐóÒî’ŽÂ;ÞŒ“{=îëo8|³fIB€™©¾o¬ýNܸCh½iGOØÉŸ ðz"Ù¨¿êÖ$$}'Ž>&U<9:øœöû|7­Ã|o­ý\/­åørZó1¥µs¼´Žs*jý»¸æû@Q? Ù€@YÈûâo ù>X\{@וÙ@Q­ûœ&8ù÷Àø§A&7•†B#$œ9þ¶ÖêÍÛTh$~ČΔ踕ÞÀ”…XvõêßÖH ï)ñÍ_·EõB®¤GÔ¨ †o6óÒËfÎäã×å°S0?€‹DØS@Ò‘U· k£#Ç'hQqkµ°É¯k-¦Þ«µYIà·É´ñeµøºÓ¼Jâø=X„†\ðàc€GÝgïË`üõŸ/¬>TH«þX!íáW]´€Çþ‚s*P{½Ey­”g‰ùM—÷=EÁßlE ñ£Gß,¥…¯õ•ò`æø¿2@ ¸ÖwZ'mØØ@”3 ¾ÀÛ¾ÃGTıÁC¢åô7ãXSÁ™/ÅÚ¶÷¿è§þI9õyŠž½@ÜúþÆØ.ë©ß`I㟘¸Tºþôúþí{½& ˜è £b&ÀøÇ|¨5Ÿªim§yhm*‰ûßr<€¸ÒZ»O­óüŠÚï¸Bÿ‹} ޥ뷛ªó\‰CuŸ-ZE7þ"ZÍ' #x¯öÐËE´ï"ËjO½[Br9¸Ç_ûu¢·öô‡¥X¬ö¤+ÓÇ4~”ÿ#ÅU½KôïµÉ÷Íð5¾mAŽèeô ´Õ§ù0 èœä 㟪 ·`¤X.ÛÙ;¼¿p3è稃†Iá0‹‚Óè'1c1¶ö\½ö—–÷8Œƒ]|äò3‹Ïl~zƒ•~ê묾’HÚ¬óù9íçv¿çÕª½‡Á5p€ÉjXü¢Øa“gj-ÇxÀà]´ßgxTƒñÔqaå¸ï×ff¥þa)>"Vz7ið’ë ÿG\¡Ón*]ÇK\£j7,ªU¢¨Vó©¢Ú?ÞrÕšF•ÓbOúhÿü¼$ÊçEÿz±¥½¾Z ¾Úïs|´·:ºk5žqÕj6t]k–P¨¨7~+/]ZœÙ–™g]uzû¥ÚK½f6E(°«Ûà ñw ˜·ù ³À’ 5$ÐY„“ o`’Ú¸s÷_ÖÈRÎÓz¹®{ì¬y8Ù£UcRofbÏpîÁ¿!¹gí·ÅåÏ ­Ÿ&LRÑc×w žò‚Ö2ážW;Î÷™… 2UŒmCCªÿ¶¯¨ÈìÕibøÛN^(Ð,ÿÍ„¬Â»ÊTa¨[#â¶£º4jp«…Z7n˜MõË0¨ãÂ*ÒqúóX/U¶JÝÎ51 ÚS®^ýÉ­“†*tšï¥µ[^ë¾Â㯠¤B I ©ð5U_ï±Þ/¥î¿J¨€G‹«ÚN $"&¡B9­š~ ef1h±?H@® fxˆ{=zƒ¢'À½;•Èêv!A\Â<)Z«ÖÜCr–®KûÓ€Iè¡»¿¥=RyùþX¿ç ïLç¥q1û¶jÎÿ£§ÀÞÛíòg€ j9€åäAðІ@§¢ãÒ@LÂT¨$wÕ1µ4ÈAþYŽ©ë·Ý_=ò%•'t—:œÁ»…Ž<]‡Ð+ÍwU·å^o·šPAk7áĸ¿p%Ø-W<=šŒtdé7@ôFImÀ.ÿb}ú;.¦øöÛá§~RKŠIÜŸá‚alWýÜ$ ø¨G%ÌòÏÒA ÄMˆ@ƒG¦`Ù'6þž½»€·ÃÇOʉÇ"ô¬¹Ó%fg ŒC¦üàÑãw5Ðð9r‹†ÏØ}rR*J{£eT—£kÏšáÈ1û?IRîà©ÏawúÔwx1€­Xºýò(5,n¹2v–j—RÆ_,Kã€nÜã§>éUI•õ)"º›Un‹‰žþ°”€E0l€yJëiÑý7{•lü¥±E ž4ü³@'ñàÞoA/@+tü­²?@by¢%/Ø }þêÝwú/FteDJô¨ ø9 b­¯¢Çp£i-ü`ظÑ9)TàåjPÜ4äœRwë-yíz1t’„†Šág4”!¦ÈŠ2Θ‘´4_™„·Ç†Ï²ÞFÜÏ\¶Fwض›¡Çlé%ÌÇæž]¶¾x×¾5Œá´á¶úœ¡†RÞ)Ñ_µ[vO¶ÆoN¢Žv_ï ýuUå}‹Š[¶zÝ0‚¬¨z»SYNƒf!<7& /ªª†Âz± U77xѵ£ßƒÅ·é1ˆÅ#ê4*"ž@AHAÿ=#æ›®û/7‰ñûü<ÎK2¤’0Á›Xç'`ÀŒåz.z’¤a åû ‹*íU WÉ®öÙê©­9˜ Œ¨írM…%¼ª"c¶¨£'ï^àíȉSj4²Þô¸ŽŒÞ@¤¥æÌ\ãdæzŒ‹¾‚•êì… w ÌŸuò½2lóŒ¸ðä5p2ï§š¾™ð£«ßaÏ„EÉ{.Þ±þ`ÉÖ]jÐÐõªë¬«ß¡S74~sî$t½üXRE®ÒÞEB`è´«„³(}«JÕŠÊ!Ø@az´‘UóñÞ*è®Ê÷!W±“7€ûÓµ+ Ѳ—[’[Žña°ÒÐÚ>_߃VàÝÖ˜žÉ* \Äÿ¬%>/³¦Ÿö©¨ªÜï¢ÀãgŒôf» 퓘ãDß|•ÓYÐüÛRMuS'ü9&ô¬ÅŒ&.¹{€ÆdMê@0M– û`ÓíÂå«‘à¼pÛÀбõäE‡ñòÄçt$~zYoj–„žèi³Ô24ú4Xc¿ ?œA`½RÝFwRm–i®ætu•î=á¨7;TP÷¿ä..º]:þq¯Š¢óúé_¶ ¾„°¶A€°&É€-¬ö—"ÕŸr¦8lÌ­öÅÞ-{`ș䌞ÿhåÚ¡åW¿' >æW'SVßM ˜€êëa 9ALJ‚rñšŽö”•Íá«á!\à¸æ 0”!¹ŠT(ÁÉ7ûüT»äâª%V‹=vFýYn—¯\QsR–‹Ë:ñi,ššá45—”˜@0wé uüÔé‚€{yvb©›pÈŽ›²d…°÷èΛ,>kœ‰×Ìú9 Ÿnÿôìï:{MF{­½MTÞ[€£j÷™k*uãqÕ"¡œê€*Sg rÏÓI?¹c€º;:±ÆWý:Ù[tÛÔuÞs1mà»hU6ÁÓß¹jPž@àc.“j>YLfÔzF—ƒÚ ]1+IÂg‹Þ’Üx×qÁÈ¢ò,éimAîi‹Á½6ùÿ÷¯åWyT/ªê6Î\ÚóCÆŸÞ@G\$Æöâ ÃWû*ŒAR"“1UX*/lUK©¥ŠLoe_wÊ"/’ ¾™£©;[ª?Ûíæ ŒŸ»P…úŽÎèR;€ÀâôDh0mq²Ú{èp¾€i¤›–[ÝÞ­Æa :z4|½¤7͉"«¿6Æøôbf »O†y^¸{Ýý¬G…T9ŽMk®š-ÀT ÅYfü©{]¨ŸËªf8”¨«ÔO ¿¦žR§©Û`µÊ©Ï¿¯}$D ‡ÀÒj+,Wªî¢^ý¥ìúˆå^¥ZJû®¿«Ö*ÖMküyqL r¹óàYËEf9 ;x³P/¹õÌÊ`A•¥ Ö7Å…ô ¼j»¨ŸÆxá¢ø§0Gw§è•“ƒTËé•ÕϼÕO Vü8Æ[¤)þŽ?kPÙñxgà† ¶‹ÊªŸçW'/îWÆÛ^¬&B9°Oì¸L†f‚FŽ€žÃ0íÒ¶ïÌ5˜FOÚ-Oû](ËñûY+Ö«(ôß³d×$ç䞳⠾ÃÖ“gç$sÀ‡9šûn?ùõ À1µc#×ìß«ZÍwQí—Ë4ý‡ºF ]ZEµžUYý]ljêgœ®«üYËi•E‡©Ëæã%‰½Xæ šá±¬ ñ­Qæ*ÑÖ3}À† \ßj\™¢Í£]µà%µW¾•¾Þ]0d ±ºŒñ2uÆéå”:J«ŠAÉÌôëÉ>WÉ–šsØMNs-¦VÆ…ôRߎðTßD{Êýw#=Õ÷±^ºŒÂÏñ³¯£<Õ` 2æâÆŸLÓ€“Õ—355fã—*Ã?pôøeAô”™bàÙœ3µ˜üv#ÒH“°Â,»ð€°“qM£ßaýÆ£gÑv»§ýbÄõãõþ|Ì>4‡r8Õõ§ Èaˆ5Wfõ%oÛ#´Ú]çô:?Ë„w3¬A³ÒA\²èÕ_©¦ð C–8,úv)†¥Ô=êà7¨ûS'Mý¤®ŠîâçßB¨Ë-¦xK¸KÇóhô’áIÃ6Ü2ØI¥ ¢ê©&¥À‚ERq9ÂåyÞ3›qÕÚM,©½ô«V¥þ]5]0êÈ]ë¿Ó#Z Bˆû" Ò'tÅÀ¢ªÚ®òæ(tÿKzVßã1B7J.(.Î/½å‚ÑèyAyá(?󖟨Úl¼ñ5ËŸóñ_áCÀLAÕ °$£ÐnQ9õËÜbðþ¸«žãÅ–¬Ù b¦%Hß@NôdÎõwj¶†çl€Cͬ;ŒV˜…Nlض9†ôä ºp#/ “´y—tÞ±·»œö£¤ú)¾7x dÈÑ#`¯>ã}ë¾æ>`4vNÐhYØA0H+P+§/;‚» ÒOÿÝÆé_6Óé/ºæ£¾®÷O¨jQŸ®›â±Žóvè¯XÑ: ðwÌPç©û´Gy©REFåIÀ“Ôø (þ¸ß6! ©°•þªm‚WppBIíæ®ZåÚw s¯5ú¬Œ6xŸÿ<ÅM¾> :ò`€ú¤gEåZ¡°ß³œ_ õ]âêã"ü‚¤Ÿœô¸@?Œör\8^P^ܦq:Ò~6ÀC}Ò·’úòe¤§îjá÷?u¿¦ƒ? +W ,9@¼€)[[ÜuFâôµlÃ&5 Ã0Ø2$CCânvV†ÇþsaW %í² ‡Ÿ Ëâñü½>Ž\ƒ ´ÎJ^ªv8ˆ)ɧռ Û¤,ÇÇs©ž†ÕÉnŽãæ0N}<÷T•°|š¸(EæöñïIüaüoVÌPa{X $pjòr•ºã°í.Jެ;1À;œ#à˜pÆþ±k›ËéêtúwƒnÑå§®ñ¤o.‡§úr¨§ú«Å¨›ÿ衾8Pg©›ÔaSŸ©ÛrÀAø·¢Ÿðh ßàoªÜ_Lx/î°×ò…Õ‡U$*¥ÂVø«A[+=ñÚ.Š–áçŠÝ1¨…úæÌ*÷ÿo`ÝP|_©×ûÈ‹eìÃŒçÿpažû¼Œz³}‰}/W¨M‚úŽ®|´qÚÉhøß9ÿ7 ’jÒµ¢zd!Ê»¡úý[ÁîªI·Šê;^ÌI•åâ•ÛÍ«,èjæèü¶ „ú=±¢ºtõÜ7zY¿m‡š€S™§s°œô£¥e8[£‡kO``ÃP„웦槮T›wíQóRWÈ ‘ÎÒq8Æñ7¼‚‰ºA³j “‰btáé-F/F›•Ñë”]z4`zd0Î]“†~þ³ÒÚ»óìUµUN뙂\>/[}ù¼æë1Ÿ[À`øH™ðÃçš Y¹ï°<Csºïíö ÈþÛ|ô*¦ŸVíURmÝDw̘¿+ô•¡&uŒNsZtó©›oCß M×Í·!ü9Aá€é!0d0uü›(=¬e+l¹^ñâÿÂÌLÕè‹2(‹WÛ I©*¶Äµ’ˆC!wæ¹eÁÖ¨¨ÍE[ñ8  ¬Fß퀶&µ‘O$ò<þN)…*€ OvsÑ"ßi¼,yôÞä'q]!^Ìïáþ0©G¦;Å ËŸ}‚ ÷=\Ì÷Ã3Ê@ÇwÃ*ª·:¹‹÷Ðe‚ ?†"âðB–øª¯fh*eä3ü}Hè±dÇ)E¡ øòT63éÙ= š†MƒåÂÄ•kpzÊôÜLºdÍzáÐÀé ÈÒ}×OæA8±Y¾Ë*„0€ÿŸ±¿^ê‹Wã$©%[vƒ¹wYNíôýãBìa‰o×=‡°áÄ$Ì9àóÐØ*H8a äùGé{ü.ÄÍ^(sä°™(¿§ýÞøô?ªþ@Örúæ¡FìŸ^ö [ZUtöÛŒïu¥Î½Ù™F}ŒÈ¬Ÿï™À¦.S§ùwÔqê:už^ÃW‚Cç%>ª8/v;¶¿Q—x’îMÿ>×G=ñ^)Øš º Kd!ÌhT<¼Î³ôò&y€·¬üff,+V+&î 7­Ò­1ÑÓ¤ýšTÞcu—¾é˜tw_é½àæWr ¨\Ì,.®Þë¢_èb=%G@o¢⯮F‰P?Õt¶¦ú¯hx[žÃB9"ltÂ\P~cå´ïkžŠS³<¥yš#àãc¦ÎT‹W®ðÈés&ÎOÔ½ü¿î8iÍA¥™=sNAu€~Ü  3búl5kåz¸æÇÅè™(Ì®œg&ö˜ä#˜ Á„b<Àƒy‚pú@1Äiɪé0gÀŽÎ)–ï: W#Î]Kßî[€`°þà9µ-½Sª_çßãèô“Rt©Y¼nô<¸hÀÔOêÞ7ÑOÞ¿mx¯ÿŽ:þóÄô°€6@¥þv6ª f™ÐôbiK_ÈF뢒T—Jšƒ^ìFø´‰Ay­ÆÓ®¹–êO»º€ðs4ÛI¾jOW%Ü¿à÷Ýîïx#BèA,cfõ3œú8½¿ÅÏ5;é®ý.lÁãÞ|ˆf!~8rA‡ù€¦÷-ÑÉÀ¢êð¹-nø¤s »iÌ]á:ge„æiOOÀÌÞ“ÿ?îý.Äé·rcß;GˆÙo`&­¯CNb__IØ” Úa"] ôþs bîÒ|­'=~4Œ_²û@>žà¼ 7s÷o !éõG£j@>ÉFÐlÎ=ªÏò'óÝÀXb…“yÆ÷Œw3eåZ=“}|@Œe£'Nß¾}¬ÌÃøòQ ó¥‰gÅžƒ2ü‚.;Ks\бæ@Á$átZñIá0H#fˆÁ©¿vŒ0Â#‰i‚B?#,a§aü‚%èÓÿC< GŠß*Ãpý¡ój7Üÿ^KŸQ-Äý÷ÕOèÉ<Â71ÈgÔ1Gxš1tœ¹+Þóyi ?š 0JOŠ 3vUU±¡þ]RÕº†ÛO[ó‘®rm¦¹×øm'ç]´¾XÜ™kñS~?k‡Äã~Ö÷iôu@_tCÀvGf6™À0‰óÓø™èª2k*ó ß‘t¡÷н¢” ,?¨­³ «JÐnQyÕcn}þÞõë×ÕÊM[ĈٷOžIÈÉÄÖþþx=ã7;ƒ2˜Á¿£,ÃsWÔf9F&¿?â]V?qWp¶"Ag2ïääY vä””™ôcx0vn¢LŠž™zlzÌWÐ+`΂³¶œÐ{r;A˜ñ?—NÛ2[¤5ñ;9Noýôó2âuO‰å›tÍ5+Y´†´ Ó Íð0£ÀŠÀs_–‘&:ÓÎ~ÄkaI°ÍL¯‘¿Mt×ZO©”gÑrµ¿<£L'ñ‡u}&ñ{³$&÷T”Ñ]½QÒ ûÄRŸÕí§'ðvç›gPs ü`ðœŒýùa +ÖK²«¬ç2žã‚ÇïqiŸä¡S視ë,¯™ 8YeÖ͘Ÿµý`Ôí#QVKÁŒ¿ /ª»év×-5ŒV®ËâÏñ )õf)y‚AFYÓêYñ¾ñ{~?{å)Cr2•ä¤r°B¶êSõ3:"º‚üѵ׀ïc=M~é­£’› m˜ @›¡í´˜ê-åAÎü“†hc$ oó±‘hNë)µ6Ó+åYn™=ýèÔë— 6êœ~9éyù†¤|«ŸüùmüVàG‹`æ~KнzÍçVÝ–ÖËU)†ßóá9ÞÛLìegøì࣫5e†”ïÖÛݺÜôH¤Cæ!î4»fL²|iN"š¹|­>VœKf܈X”vè²ÚŠ*k·äê·…Ed³´dþ¡3ßDYéè8Lâ<ÕûÝò̼m‚!íå£Ô(aì½2@›¢mÑÆÈ¥a'-å`AjÛéÚï ¹ åâ’Å^Z(öÞ Ì³ŽC2éŠ,ù±ùÁê>±Ž*o1ãŸ|½€æ¤ŸnüæøÿÓÕÛ¡ØzaIuìüö› iºLÚéý±™{ŽŒ>~¦÷ðǨàò“éw·ßîVÈj OtñÄ$èúg ̰Ã1~}ÖyÍX¶áÅi‡Gà‚l?ŠòßÞ ˆÿKéñ¿ÑjN‘¤u\FjúG=+‰ç·þJ8ÊÃÑ]ýïíðbiCœ%@PrÌÃ4Y®)Ibг&ú€}ÇnSg=öêP½jUPzŒçþ¸‡ ý´%zÚfbÒ1w ÕWµŸç5™»¸“0;i5±¶acñw­ÛÒJ’ùºI ÍÅí­ˆË=Øm6»²2úÚ }Z·U¾\Œœ@g «òf|cðûyјp”ú 9é:Y‰@YK‚Ò|ÄD`‚¦æïîšÉ(˜™gû­I¿%ç>+~<¡GŒÎÍgjãŸÈðÿlÁ#€ár-8 yúX4«™Û•€ ŽÁxç 8#£Ëÿǧ…ê @ÄÿÔß–ˆ»¿‰É æ êÚÛ!t˜…ë ÀðÃQÒ†ýp¾½€ ‡í2?õ{‚gxóØ2Z‹qå²”æqå´ Ø;0R^{ó77­0èÿnE‹ß+R¼ä½Z£OKk¨=j#Ïi}Pêc¶ÿAãLÀRçOÞtStæTÅ|GM=‹ªWšbà k7az;¦þZHêMÖ±>vÃþ#GÕÐuy’“‚;L:Ù²0|pí{!àÜ>žþëþ®þ_²‚ݯ !£Óé °2¹“ј]Ȇä÷Uƒ?Né À_àP7˜Ôëñ™õˆù%êK‚ºÞDèaò‡°ó@crðçñ^Ò“a6VµQé žð­'»;ä·I¬ TÔÚ'TÔz­…Ë¿ÄC x¨¨ØwŽn~ÓþýKY ­¼{4ŒêÊ.4pK…¤Ïú§2{Ê‹õýH½Þ_ 1S˜Nâÿ´4€dlÉ„ |k„]š?F¤½®®`ñ䜔5Ò˜CbŽÙ,“iØ Ÿã·hø,ç­HÛ¢þì·?+d‚ãFÕàFxïÅ,…Ù’dsQ¦D­ôÕ˜CL:Ì_·K ^ýŠúкA÷ÿ[‹ûoRu©SŒÍ mܛݩá \˜ŠÕ_‡ÎN4l Ǝ͹ãÊ–l1¶,¶ é'~ËørrÒÏ+¯µ\Nû4¼´V¥Va-Ï·O{U€¡A 2ôÃXOòýYŠûÁ¸PŒËß v/·ŸûÌ.«Ÿa ü^xãôÍôèÒµšÎ0ÀWýžä¢z,}TEOX‚|½×y ¯uÊNˆÐuǨ…+V«ËW¯ª¿ÂíÏÎU6*‘˜¸q¼³irÚ듊3~®‘†GÀþ‡ð¡q*vZªêžò¨èŽ 3ÃW¡«ãäe=^R£ëEÈlÐsvJ8ωmÚÌC<`Ãd6éôæX1Î@box³anZó¥´ŸcJi-±–¼ÃŒ2ZÛIe´7~qÕÜÊÜ£åË­dùBàÕ†t‚@ay±&|>ØCŒ5?]$&Yó'‚\~ _ƒôóqïJê½0½…˜¥ùÀ ÏàÛ‘ºG äìœZHˆòt5|ÂÜL†?Ô8-ÌAS&ÉðŽ¿Òí¯Î4c6mG qö*–n ·ß©tèéÆÏV}c¦¨Žó«A'JK’­Y¼—„¯rÒ×K×ä˜HùºÅZdO™/jŒ ÁRÒ–Ê7hSZ£Ðeqy­ë’ò0üZ‰Ò÷jr+êz¯öÜg:ôßåo â¬@´4à«¡FóDÄ­Ÿúr¡Á¡þȈZΨ,nK3^4~X&‚òk:VÏ$a AJ)ËÊÂ} Äi0SEÆÏ•T«»Ï8Ÿ‹:˜Ùß¹ÿ€ú+Þþj༎\ßVt#Ì—Kn@o5¶& Q=ˆŸ§¯h_„ÑtËʉnPGèrÿ4VîɲœÙüCÝb|N]û:ÇP:hv¾ÙI?xn"tÀ¡í˜‰@Ú”@ŠÉ¿vs½g´Š/«/p×ÂWÐ>îVJ |¤¨v[n‚ÂÝ-¡¯’…פT‘ª£¨ôå3a‚ä\“.·˜0‰HŸô<Š@^¶Sþ]„æÐ˜ˆŒ€Álêg@QslØ÷âFÊ`ËKŒ?Áæ¦Z3Î_½y«ú+ßþp@gêé_wpt·ßòµñ½ÙµÈŸqµ83þ²¨» ÆÌ]$›‰8£PÏ 0n* PVm:{T÷õt‡N½HOÔQ÷>EóɕŠËî˜eq ºN[>€Ì;˜¶D÷¿ûpúwYTÞ·íÄRÚ¯±¥µêÑîÈÍDŸ úží¿DQfR‰¤DHÆç$3¼Ù±‚ôûç ,í“D\>g+”C˜utTu˾ºÀøŒÈL@fDú¬SK©ÄÚ0þyYr"Èt(Æò´Íêïp3§çß@“â‚gtnÈ §å„Ö匔ãt9+d-Ù{ìýgkò‘ 27¤ fÿÉA#;™ÔåŠäv÷ò3<æ:¬Ñï£Öí?¬Æb·×—q¶"?û¡ãæªàEµU§e%[W×ÿI`{‰g™m›:×-½«:IÆ)uôÃÔÙ ’¤Î -ÏùfGw™iÑ|’nClH Iñ‘Áþ»º¦yÿö^k­jíû´{îÕîü­<‚Wš•Õ°Æk×!ŒÀ¯Ä Ok(œÝôµKiøMð59ÑâòO×]~Ó¸˜È(1<ÆLèÐ¥ IöU°á5láãjø˜¥0~=IĵÜÜÄËÒÞR4û$¯M“ÑÜ+7mfßÌÚOòÈM»0kï>µcß~µó2¢‹c¼œ<©ŽŸ>AgÔé³çÔ¹ Õ…K—Ô¥ËWd㛈ØAx·Üöƒo¿ F$Æâ,g-†tæŠÅÀœ„Ý„§/Y䢌ò2 •÷b¼†s°›FÎ1b$çØ ÄíCâ<žàœÈžNâªn6 1ÛŸŒéœbœ¸i‡Z”¶]6Í[»Yް`Úœ¹¶lÚÒU@ºB¨Ä0¼töÊu2mˆ,B ?ûacRTØüÇTÇe.BbccÛß¤èæ¤«§>uSrRÈã÷pÔô Qñ†`"³.;뮿96Äå!ÁXw×w“VYQã±ÂÚÝr£ïQ â)S) Hù~»ü°ˆ´[–T̹ͬéG½*9Ú€ebXEGMõãçRZŠÊäßqz.A†0Æè„¢œvš³…ü5P‚IYÎÇÓ wJÖsôhÜ¢¨º°ŒÈ.Áh"PÈà zœÆË}L.RøI¡LØ=H`a3Q·Làòv½©ŒÌ$]² #Ý`,“ùk>.ÝȲ¤CFƉ±ÑPÉß§ÐxEhÈ5KuF#'mw€ ¢&RŒÛzͳ]’2aJ†!,Öqc™IB“zMûMý.à/:Â’±TÌ1‡Å:Ÿ’«MaÔeV¨ÛiO]g×lééØwAmF’~¨ûwÇmóTµÇ‹=bØb=H-Ãîê6XÓ å [½å: }²Æ“VƒÔ6þy]ãëÆÏ)AÆ ÑîoìÚhÔùj²õ„ÄÖ/yQɯ–Á ñÆÖXãuòŽù3sù‡9?@~ø^2û¹!]DèóÉCÐ;¹¼ÄÅë”â®:,) %BihìœÒ“nºuçV$Ò*Y(ãßQ†d3œôvÊ`ÃÓ:v!À%K@ʨÎ)EG¨+ éŠgJæ ¡§I7wƒ1èí'šÅ[–†Äë•)ëÏô„¹—c£½gžüœ©{¡šzä5×W ›¬c±9«Ô0l²®a£µŸW6l8Wqÿ ª*¦Áqª†^-©nücí¡×Ü^y®šô2<3¦ij¥WŽÑ9Ö?fÁá—^‚‰ä讎?ˆî:9ãCÜQ¿66…!{Ú«ž¯úPM˜±_ž£»¨QS —¼þ¡†Kê`’9öæit3l•øŒ§WndÈN»»J&çù=ŠX¯•åÚåøz;yfØeÊðÉ3å3¦Ä0üBˆÂP%vÎ<59á°Š\ý±úºžˆ ®Ïó§ùvp.èêçƒ+9Jx™$§žÒF:‹GÁ·ãÿÇ[novYÓ°±j7‘ ãqµ,€PÓ°é²72ü ÆÔ7þ°†ñdA9ø§V¨%~Ê?]ŸŽ:tœÕ9Qg é¾6–+4ÍÆè;°H¾È)›ð£Dóâ+Æ`tÇèuȸå$LXÙTJõ=0mðȤ]ÆÄG ziôœE×ã0…†±,ã੘ŠKaYxã •Pfc!Æœµ› å~öšúï™tZ±²NMGò‰‰¦Éˆ±'-A|½d™ÄÓŒŸã?Ç#~gÄÐþÏш›©±³æË¬>‰›ô¯G G q3D€Ê+6! ¿‘L6q¶)7‡Xq<þ&ÏåýµðuÅ@ø:Í×ìxýx?|O±H®27À|¼ÿÆ5ë‘,׆­¾¼^ºèןÁ ¹¶ëdïV­—ë?W>ÈÊFÇgDá㘜b|Ž|.î5`)ŸóÈ„y׬çb06~Oÿ¨…ëÂGô^¾©4¨ìÞ¢+?ºÃP€ñý;¡9¯`I<ß«¢$o¦ßæ€\Æû:QMgúq¢VÌ© k½ìúB.?+02l¹®aÛÕ [ÏÌcüÐÀ0ÞÜ}VRÛè+¨Ög«ß¶áÇ%›É^kv6™+’ntú›@6!Û}oVR13²¤óyeÜ2\*ºRPsËBy -¤¹jE‹ºøw-Q³\÷ûý«U8 FG«Õªýøý<Öð¡<ùƒ?ñÚã ½ýÜ˯~ôÏW_ÿêùW^ûá•·ÞiöÎÿ¾øí½Ï¿ìðÞg_†~øÍw=¾ú¥Å€o[üù}«6Ñßµl3ªyDZí»÷žØ¡W¿Éz÷ŸÞ©÷€„~ƒç†Jì>lD2fÚ-Ç¢Œ5´žQ#· &Þ‰l<ƒ8µŽÆz 'ÖYéyx#‘<»Œ“ê*”÷:Áb,yœ!ñbDKôÄÜ"SR2 “xLæ!¹7àæ~o'ôŽ—$ŸóßÏiª$þä/‘×Aƒæë‚_1cî•áx½x͆Mœ~ïá ÞÏI$öŽàTÞ?pì„=È ìÀûÞ ÙYÍkÞþ”ðȨEÁýÏíØ{À,\¯{õŸÚ¾GŸI­»DÄÿЦ]®ëˆïZµŽë<ä‹fÍû}ðõwÝ›|þUØ{ŸÕñÝO¿hýú»ïÿ‚ÏèGÈwÏ¿úÚgϾðÒû<õÌ›øÿ yñG¶zºOT¯ñX@šøøù=X²téz®%ܪCüî¹GCS|QíË^Ñ1geØFÈÒ*zO€¡G’°ËAåIø'>xÀâ|cØ;hi´‘aGƒ0RßooÐ#EëöY+ÆŸÔ2l=Ð ŒåÃ?± çÞÒ Uh5Í{*ݶ[2/Àz¼xÆŠ¤ì¼³ËÝQ¬6ɪîoÎ]7j²2ÔX¸`Ò”¹`kËö•([È…ˆ7¤¢‘E-cdRùóF¥¨qqr[iåãï3@kW4þ?WãùËÿ §a‹æS¸paßn%J•)T¦l¹êeË—¯]¶|…º¦º¸¯çéísÕ€Àü‚ª=P½æÃA5k=T«–€UµÚu¯^»ÎÕk×} þdõ:õž¢Ô¨[ïiÈ3†5ëÝß°öý ÖiðÀ³uxÈŸ•ï<(R«~ƒ†|l:õ÷´ù\ò¼|~ÿÿoP­ÚòuÀ Æëz¯¯—O•ûËWp¯/¯½¼{¼:eÊ•¯UªlÙj%K•,^¢„_¡B…ª1©§åÚ—5®«qÝ‹׎׾PY…Œ¿/j¹þ%ÿSÆøŸŒ×ài¸Æ%]Kß[Óvö÷Ûà[¥-xŒ1Ôàžd¹·ÂÐAê¨$žã½n Ó:µ—ºÏž'?çÐFZÏðžSÖ³‡ñ^êæ“ñg Û—ÓºV@5#þ¸ãÍvå›GŸ B9#@ohâýެ«#þ1ƆgðŒå!L’ùg2°Þ5Kˆ–ï¹<”`¡ïð’ÎÄ|ˆ­<ê\ |¸X=C9êYÂSjd#5³ëï«;}@&ÊZ„Ùâk( ÁÇ0/C = …t7”³¼!åŒëGÅ-mH) `YÅÍ"%,âš±>Þú<ÎÿÃüßæk1 ªœå5W0ÞGEì<÷ém¼gãT5®‰¿q,×ÌÙ ÍîsºÙçS#›Ï«ºÓgGC+ð`Ñú#¡+¬b›¾7öLP?è‘^®6Ëy†ÒC 3:hvZOü ÃÿÊXkßvŽ~êÓXãÇ”mõNÇòí Ã/eÑÓjµLOØAÆ?ñã?ªñDñGAZÌ* 3ØXÀÀ%‰æ©íØl‚LÊðƒ`“Ä'½+IÝ”ù~oÆú,·°ŽšªP9I¾ˆ,êÜ[µÚ]&Õs!5î"©žK©v— uC{àEרŸ=1{OVÚ¡ÇE_J}ô–á  K?î­—°©‹º+îL2‘aøæV`s nëY>Rm îG¬õSü_û¬¨õ´Ë“†ŽV1l&¨€ÿk. ´ñ¡Ö·”òó˜e éXxõç²ßôÙæ‰…¦"}‹buzz[¯ñÂñDÿÁè‰6K'¼7/îqÞŽî-–™Äáýjèá€Sõ»>“ϱ”-Mq$°ë>WüYÌÂ8ͱ÷ìBiÎÜòûC\:c»(uâOú0O¡ÂÇx qô\9Ôqê:¦n)zÃý¶û{ýײ?aã}¦ ŒÞÌÍÕ7þGé¬â× ÆƒÍŒaNʹõ|¥ÖèyŸ÷‡ÝÜ»`äñÅg‚T4?¹@’#ò²#UÇRþ /0ј\R„9‡ ÌØL÷mô¥j¬¥Î÷®Q$Ð6~[r â{U/Ô~nåEÔ¥î(ɱ’†ä`G4”q¶u¯iœ·£ï…BcÿÞ¨pQwÛ$è~Ñëd½´¢wþ]ÿ¤{…¾*ßçoè§Ï jü·bo&¨™•½ ÃÆošÛr3b· jÔ±”#n¥RPÝx1â~Tô-ônç »®¬ú=î Bßͦ»JDa’#ÈŽ¢põ8‰ú…­*.ª ˆõ«Ñí?DÃx®w©ÛoËÝPwîyå§ÒßõLó;BW½(¹¡†^šÉlv˜šzIên‡DsB–¾‚î`x£4ün+«mR>Ü# pC?Ëvu«‡lÅàM†n}K(áiØtžnÅäN'@0Gy­QšaŸ[s)yoņ—úìÇXÏ `^Š:¨X>ä<ôÞh2ÂäbÕ"÷ÈôÙ‚}ê{˜-ùµk©{½ Ý,“î¾iì&C×jðUŒÖ5¿{î5ž´œ*~N4ázúÔr† —ñ?î«P¥pͧš”üäÝà ýšOôšÛa¾Ï> éU&éâÃ[¸Œ)ÆÛ~ŠóšúŸ–庂tô’qQ5#ó\Çvùmɧ ŽQÑí÷|ñWÿÓ²l8ŒzF»¹•÷t]Qåiïú2\ßëøùu¢×"œôƒž~¿ä—ðpëåMͨöÔΡá9z-ãµÔs¢ûú¶XΰÍÛÞ$\ÈøÇe ã«b”tª;ñ“Í‚¬¼«ûäÄTr-RìÿJþ…xV+òWõ" êß[Hâ&³ ÊÅrâÛ†oK~K ‹G`ŽÞ)ô­àSHôÒ#¨Èƒ÷=PÔåžjFÉT³¸ùA7ɧYOó¬l¦ºaSU +kØ\!í.¾Ýg„¥ 7ßË0ÒÀ,¸Ê¦çPÇrj[ºœ<7mÖŸËuå ÌœÚbKv``T^2“I4ò0¸ 5œx ¦×q:É­½6†x6SÚ°¡û´¿Øí>ãÔ6rî†AW5®šÅí©m©JÔsBÆZ–‹lŸü¶ÜÎÐÀjÔut³ž¥U×ÔÑj†nW5tÝÝ.E#¿Õ\CýJÈZÞ@W ƒ,ÈòaXÁÂY¬žEnA#?z#l¹3‰¼ \s-‹žÔÉF—LªaqéM¦§¡£&ż¤¡ÃEîDlþw¸ÝcÄAV°0)ªîƇQÙˆ|-tÓjYGl¼^6 R+ úinYoAS rzï¹eM:Skec¼7û,k9&uÛ×Йʆ¹[èØV£Îk¿‚}»Ã A4.ldg]©Éq7›vÌfo ÝÊ]·òÖO‘:±žõn"VÅYœÁ';qæÆßèwÙINŸ/+©íëfu-rzœ¯…³÷fí»°ö\˜ýÞZææ#³ŸÂÍøì‹ié_¶1Û·†IEND®B`‚instagram-feed/admin/assets/img/about/icon-none.svg000064400000001421151435171370016325 0ustar00instagram-feed/admin/assets/img/about/icon-full.svg000064400000001057151435171370016335 0ustar00instagram-feed/admin/assets/img/about/plugin-charitable.png000064400000022414151435171370020024 0ustar00‰PNG  IHDR––<qâ IDATxœíyp×u§¿s»ß†}!Á÷}!Ц-[dK–d[–Òv)VK®¤â¤f*“Ì_kj2©šÊLE•L"ŶlÇKBzYŠÆ¶Ñ–M‰¢©…)Râ¾$ˆoí¾gþèG$Aâx â«Qõˆ×ݯû¼{Ï=çwÎn T¶7;Å¥·ÿ\…†ÚhØÖøž­±–#T Rç õ¢TQ…ˆACH«JÚ)µÚ'†ó>Ú!*]Vé ‡¤ÓŠéò}ÛËØjÃi:ÓíöDÐR߃b!¥¾€B£Š´ãCnÚ¯„¼Ðy óÈ< ³©3P¥Pj•a£ŠáÒý¹ò>é€ß XŒEûÓ-¢Ýªt ´Z«Çs2GÄ Ÿ‰øæ<'#=Ò²Ý+Ö=(ΰ¶nÞìÜúÑÑÆ­L™oE–:b– ¬RXj„:U¢(·À—ã#¤QR@/pØÂ^ƒîCä€Zïý>)똲 ”Û'–¡MÃÒ–Ó¶àG±štù H/U‘›ÖÌAg• ŽŠ´¤ŸÙ>Hh=úŽÝåXgo<•8^=eY›·Ùñ>mŽkÃÒ­›ÃñÎÃõ꘵¢|ЈnÄÈJQjA£ ¦Ô×8Š’V¡ô (»}E"úZ$.§9³;)-ØR_äHw†¥Úbxê§•ã.ʈÝèˆÜv 3¢ÀX7¦ÁÅ=§È~Ð_¡òk?ÅÞý®=ßôønO?£Ø¸1,mi1=U?« WfÖˆ‘O(Ü&°¨€‚ûJÅÆ $T9¥¢;ÕÊs`~säTßÙ•-{Ó¥¾¸\ó†¥-Ínÿ¬D½8ºÁX½W„Û€ù@¬Ô×V$<„3Xv)úœúU$^s‚?y>=–ý°1kXªHïSMõá°Ü¢–ψJ3¢³AÂŒáë. žB‡ÀkŠþkþ#zªìÄX [Œ¹¤Št|wceYB׊±›Q¹Ã”p©¯mL XDÚQýµ ÿšqôåòòÆs²e›_êKȘ2,}bQ„Êê%Iß< §¥SÞ˜ºÎ1BFUO#òs”‹FÍ.~ogïXqðÇÄÓLß‚Nq3™‰òÈ-­(qÌi\ Rå ˆ~O3Þ¶wÄ9zóã»3càºJ‹nÝKôÛµÆ÷ÄÈ'PæN©¯kœ¡ ¢ú²8òí°ïnçÑW:Kéܗ̰T‘ž¯oª “þ$b¸‰g¥WOE¢ú=ñùväLå±R9÷%1,}²)”vd©/AÞ K·nv2݇6XãüÊí‘|Ÿc’¼`Aˆè_‡3öGù¹òª¶Ô–f7Ó}h5Κ'jLc@—ªå?§]ó ýöšò<¶¤E7Xéó¥ÔìžCª®–kØÞ¿>±(B8vùS„YLúU?U5gùfœeŸEʦ¢™>PqB y‹Ä á Lí¤bÄÛÑÄyÐ’—ƒÈLŤÝwf¿õÕŸœJ çÍÃZª"éêú¥Fä1`!“FÆÅÔ-ÆYûfé§‘h5Úyí<œíÓ6Œ[ä–afgýc˜™·\-Bµ¾ÈpÇpã[Û ¿¹®õ·ˆÈ&u'½a-ΪßÅÌh'„mßm{gÞmA ;{LYÁÁžÚ ~‰Ú5º¹y}(åÊ…÷r]%æìÉHõ\¤¼!?ç3.fú:œŸCªfSB—V@ªÊçâm§åò†! KAú»¼¥ ¿Ãœ²ƒÔÌÇYóû8Ë· åÓ¹ø 3ýØã/Cª ©_–_§Û cæ|gÉýH¬¤Êî°ù¨s>’‹#?¤au<±±Ò1| X—ËßOHÜfÚ:œ›Ã,¸ ‰T^ú?µh×QlëëàÆ05`ò{›$\ŽYx7fÞíà–°XÜ2SE¾ŠDæêîÐu`båº2ÛùåÆtØÝ(fÖ&œ¦/ã̹ ]!Þ°þ™ß¢}g²)­!ÿS– eS0KîG¦®,]kÕ Ëô&<ï£G¿Ù|ÝaùºWØ5o]•ƒ~Š Ð 6Z ­Á,üx0R5¬tu¦ÉNôÜ>ðRP6q Uƒ+˜Ú8K>9ºçè©ýt}¢oÞõþèšÆ¢ŠD|w¥ÂÝÜpÅ‚”OÅ,û,îÚG0µ ®¹*Ó¾V´û(ˆ ÑÚѯ¯‡ÆÌÚ„i¼3ß”£¢MN˜fݺòšß¢kBO5ÅÄÈr˜qšFœÕã¬ØÈ]®5õ¨öžÇ*/xX@¢Õ8 ï %š©ä¾d2:ýZº­A¯L釅¨ÞÍÔZÈ„©+qÖý!Îâû‚èzSŽŸžc`ÓAÂ9Í»ã~5þ‚» RSàs]G„&Ræ#<Ù4hfð»ðÍæˆëš»YqÍ¿™h¸Q̬¸ë¿œMÇäP´b3ؾÖKJq(ŠïãD0³?ˆ™ys ó*Ó½/îÚ©ƒýÿ F“J÷ÎR¸¨.èÕ •˜ù Ò33n ¤Ã9 ~â稊çPKùTÌ»‘Š™E;ç8‚lP?´Z[®¶£«^Э›quk˜ðê²:œeà®{S·dx>Rº?ø¹ ÌS¢IŒÅÁ4¬ò”[‰q  ǵfÁš«Ü¥«G¬ôñrÅiF™R”«+â ÕspW>ˆ³ò HåÌa:à ™þ`Ô‚À¸¼LQÕŸ®ÂÌ»-–` PˆŠÊ‡{¡9WL/»“ªH:A£¨~&pS4ãêuˆYz?«gØFA3ñ:u/^\qž¤~9fÖFpKò¸ŒÂÒPÈÙÈW›/ê/ÿŠnov¬è-*2Ÿ‰: ºQÌô›p×?†Óx;®ú=×@­wÉTÑt_Ñ%Å®À̽ ©(ͨ%J=j?Ø;?~™?~™aõé®»  }¬Â˜y·ã4ýfæ†Ñ'‹Õp©Mõ¿ÒF R¿$ûyJ0jAnvTÆ´.3¬ˆ†æ‰Hf¢µqˆÖá,º/pÒ§,ÏO„\¸t+ÕB²õ‹_Â%¡ ̬MA®²Ø("ÂüoWŒi]4,}²)„±ËæL(!Ÿ¤jΪ/à¬~©š“·ˆµ˜Ð¥c©E]à «æ ?ˆ£ÖÔ•%ªRnaå—¤—î°Z•&¼¶³))ÆEjà¬ù"ÎÒ^¾JÛ…`* ôâÙêšâoŠ*Ñdö‘X ¢ñBHae*™¹¨p¼hXI›™¢Ê*&ÊjÐ ªõ_Æ,øÉY®3âÆ@.M©š‰£}gJbX3m-R»¨ø9DEæ"fñÅ˹øŸ¢ €¹L„Õ Ã̹gýã8³6wˆ;`à%ÐÞS#0, œ~/üa,Lʦ`fl§$­É,f¹¶Š‚}–“ßxn@žÄÚ¥"(tpïÀY¾©ž¦p>‡¸QWÓ«*ø© ƒ—Ì=-”êFÛÞB{Nþ™[†TLGª‘ÊA#‘\¿ëNiXTLG»üƒŒˆÁ®`n]5pÎè|ê§•eŽ,Cdüê®Dòé˜ÅŸÀYü‰@“^èVAÆEbuì^`\ýmh²+÷©7ÞŽ·÷ûè¹½ÁûÅ@¨ S=3÷ØÆ;†õY¤¦™²4(Ó/n%µQXÕGßTàœˆ§NDVHÉ4¯£D¤z>Îê‡qWl ÊÔ‹ÑʸÁ‚`À¨¨ýmh¼=÷cÄêƒD²Í€Ÿ F­Äylëx{¾…÷ÖÓØî£9O¯®À4¬ƒ+%Ô…Ç27„;S[ñXC½¢‹Ttü–Æ4¬ÆYÿ%Ì¢C¤ˆ‚ ãBùtK+CMv¡}§s-$\™¾¹J[¥ìÂþþ¾­¹«q1S—gŠEw—Ë}« Y±Ò5ºu³q­R3îâWY •³þË8s?(8‹IvÄ’2a?…v/Dzxã`¦­Aªç n™~ôØvìÉ9–Ú R>Ó°æ2ƒ/ JÄi¤3êZßpU¤ÕqÔåXh5fáÝA¡Ã´µ…Õš_ïJbõP6@ëf=´ó`7ÌíHÙ¤aÍ5~MvamGãçr;d¤iX…„‹üEB×ã„£†š2t"ã#~%‚”Õc–>€»ö0u‹ ºò’X]¶x5‹Ú À¢çxîa'ŠiX3Ètxá˜>Úqí9™›¯%S³0˜¦‹‹¤!b¼Óå› Ó¥óâ Õ8« ÊίWèP¬K WåïFL·£íûÀæØO$Û«ôÚ¡ÔK ý­¹ÇÈ*¦cªç=Å#B¯Rg"^¤dˆª1€q‘úe8kÅ,ùÔÈ4T…Àq‘ú%ÈÀEƒ—Àž?€¦ºs>ŒÄꑆÕÙ¸Õ ¨ ¨9Ž‚*Ë–ûw"R•jG´Æ8â×!ÿùŽ|âF13oÁmú2NãmÅwÒ¯‡LÝ⬲ kèj¾ï 9K•0fúMHÙTýÂ'(ðÈu¥gÜ` ·€]±ÕÖÚZã©Reäj·B®Ài¼wýãÙæfc­å© ±)P»ðªx–í80ŒéÐ Õó)Ë-!“p¦jfîS›˜ ‚ŸK/ÔŬàSQÇ5Ô 1[E©4T+¾€³êÁÀ9ËI“õ³Ê´Ž²>¶ó`°:Ìu:4.fʲ °ã"‚TÌÀ4Þ™- ¡ò _êo”Q¡ÞˆRf±Ã2R·$¨F^öékûc )ŸvUµŒöžAÛÞ^ÑÊÙÙŽ€.’êfѽ0Ü[¤rVA$C×BQ£ªõÆb"ŠŽ–ÁLoÂ]ÿ%œÆ;`……Gƒ`h²{vþÑÑÞÓ—ÿ‰—À?½+ØÖ$G$T†L¿ ¢5A)ýÊÏf"#¸B0ú·_*] 4&æ7†™{+ÎÊßÅÔ/)Y$}HT/î‡cϾ…m}mŸ…L’˦=µhÇ{Øóûq*fæÈ5.¦a îŠÏ{ðL[› dÔ(«GbõèiO1‰¸RêÑJ¢µ8wâ,ÿ,RÝ8&ìü2Ô‚ŸFãçÐ΃س{ж·ÑžA¬êzAËTzú·èÌ[.u])ŸŽY¾%Žò^ˆA*¦yC-|¡‡ª„³#V‰œÉ:¦KîÇYt_ KFe3¯ó¶õuôÜ;hç4Õ•»ÒÓzØsï`ºŽ"ÓÖæv^ã &Oë)ã‹ ã¥4MA¹Ö–(ÕfÜ =³üw0óïÌùÛ\p¬é~lï ´}ÚúzEŸ"ß#èÍ ='ÑÓ» ~Iñ{ˆÊŠªQÔ5Bšbo–gB˜ikpV|>(´,¾(í ÒA!„=¿m}Ûq pƽÄè«›ýþÉß s?øÅœ ÄA¢µˆ ç! Š’q˜”¥ˆU%¡2ÌŒ 8«Ä4¬,“®øMÉ´ã ¶í-´uwà7¥ãÙÎ1ù:WÐYYO½ Õó®,¡2—C²³8çM»8~+ÅG‡Ê0w+¿šÆDÒ³!‚D'Ú}{ömôìžà¡'ÎÓ`¡J·2qü;0³7!uÅí¾)n BEÊ ªp=+))(p¾Ð¸—FªšùÅuÒÕ‡Lí=…m{+Úß z‡ú©"Õ*Úù>öÔNœêyÅÍy^Ø“ºˆ¢¨ô¸F$®ªÉÂÎú‚TÍÁYöLõ¼â•ZÈ&ÛñÚúfàŒ÷ Ôª}æLÿØ/ƒ/ë–/9ì„'\”O« "œwˆûP؆Æ $! « ?ýùé ÷úù÷°g~‹=·7¨ÙK÷•~ÏeµhÇûø‡_Ä©œ]$»ƒÞðoü3vÿ²±°ÂßO4Êkaלøú剩-Û¬yzãnµö À ÙXI5È“ø zömd憠Qm´:[62ß⺈ƒTϽº8ÖO•:™ÁÚÃx8&„TÍB¢5\vý^í>äì®Åˆüʬ®?~6b·½ìåSDÕ¬ mvl Ïí‡_¿Ì°TÄé¤F^FÙEhÈæ%‚ iÇ{ØpE°7Í…>Ãfˆ‡ã–á®ý"2çÖË£ü™þ`ú8ûö Órî\*fà¬<è~<àòµ÷4Þ›_G»^çÒGbXÙ%é>°éÀŸ*îÂÇGu¯hø·›·l»ìÆ]JhO\¾Ñô2˜ßåò.4ÝHt@¢cè¿)ní<³6^^~寲)hß)tÔÊãûØ”M¹j%§ýmYuGîíŒÆq_Íö˜n“+¾WMu"h¿u÷)ü˜Xš›Áv¼ÚxÜ(2ëHÍÂ+9¥lj°¡Ò•]÷ü Úu¬8ê‚"£pLDvðÅíW©õ¡êNõÅêÏ¢AІõÑÎCØîcWL‚Ô-ÆY|ßÈ:†Ê1w`fÞr•žJÓ=سo…±‹4ª¿éô¼ý"Wû ƒ;çµ7#޼¤ð&lÔÒþVìɨwyÅ›¸Ñ üÅ粆s(—A¢µ8‹îÅYöÀÕ;KX{ö`Õ;Ñ‹Ê Œ}öÀ™ÊÁ‚‘ƒ–é›rJ„ ªx(:™$öįƒ‡}…£.ÑÚ W×úÇ0Ó×­*•òH0}Ö,ÀYõ`°‰yåÕ›,iüöÈ AIÚÄ"£¢;2®÷ÚÀØÕ@®©ƒ•¯<ŸJý–_ZÕ·n¥ÊÒ’ h÷± ˆ¡rVPï8à£I¤ gþ˜ºÅØ3»ƒÆ!ýmÙ`£‚Abõ˜ú%ÈŒA[¢AtüšI`ÿ{fWÑ*dŠ†ÐªÈs‡ë®¹Òº®Àº#”Pl×­ baNxÐMý4öô«øï=ÉAgŠñŒ§–vÈ5F+°¦=´'žþúÍÿn•ûDäC %Üf+¿h¢ÿÝ‚„0‹ïCbWn'$` Éñ\ì%ÐS;ƒŒB×ቘ®j5ÂÂ{]íÞu#ë"èÙžÐ!E·0ÀT 4(}÷ßðßù.Úyd”SV6“pðù z~ÿÄsØ!¥ð‚‡÷ky|÷uóÉ9}“_[¿HÄù[…û€ 3j]$T†™¶.hÔ?ý¦ %“k§Álï-{þ=ìá_`Oü*ôN¼‘ Ðýˆù³Èñ×~!-×/¼É©ˆ-R•:žì-Û*°aÖ¸Ûâw(2qì©hç!´a2cC°…IÙÔÀ—2êy¿x{°8³;ÈÓõœœˆñª $¬Ê³uvE‡0*ÆJ¯ÿɦÆ5-‚< ãi›ßa"N Á/o@ªæ ÓH„c€ ÖÉî ñÛsúN£é^ð'pÙšb^óý³ØñÝ»†­ Ç  ìÌî¶ä¬[¾£F× ÜL1·”*&êCºM÷Î7¬þ.$Æ­$|Õ/j—R¢Ð†µßŠU…÷äbT0 ãlÔú»ý¾B‘Úï– Ò>ÙÖI¤û Ý›-û¿Ðáfâ•@Ê?³â>+[^É9C?¼QçñÝ DžAùè„u&&¹ˆû¬È¿ÄªçžÎ‡eX9^~Õ'Þ¢€%ù“ŒôŒ}ºOC».”uåʰý$iÙîE«C;ÕèÓPà×IJI\-ÏØ¤Ù6õÑß [ó3"\¶¼’ðmôЂN<¡Ñ$ðŠ O—ŸÛ5¢.%#^Ù•øM«øò$Ê‹ÀkM<É(°DíßǪoæº ¼’–´`ËË`äïyô·&§Qûdô½([öŽxÀU,Jnßîudì‹ý?GeÒ™ïô€|ß3fÛÔGŒJ‡7ê çÌÇwÇ“¦â«ú÷ §D¦:ɸ WE@Øyªü‹»F­LÌKô¼æ‘íÝVï©ðMÕ!x:áH/ø¾ý»È¡W¦a.y1,-ÿÃg£6ô5…ïL0‰ÍDFSŠn·ª[~F|êÇIDATªjßHõ+É[¾OåäŽƳO(ü+Pø6½“Œ–Œ"/#ò×±ªÄ®ë)B‡KÞå/ªHï?Þ¼$‘¿ø,P•ïsL’2ŠìѯF2ö—C ÷†KÞ "èÿ{é·Å—¿arZ›¨¦PÝŽ£-)R : &ØSERßjZ`3ò§bäA#ÔêDŽGTSª²ÝþºÂ·¯¨ €š*4rt÷qÝÿeTþQ•SÜ:“±MÈ3êËW iTP„ZAU„¯mlHïAƒùc ‘‰*Ût¡òobä‰pÅÜÃU+ —¢LM ÂÓ몓¾s?bþX`-P´½dop¬"'Pû1òÈñ]GóR¸Eõyôɦ²ÜŠkþ¸(À^¾“ ¼ƒåŸ"Ž÷cy£=ÁÏ\(º3­/5»éC}ËTø²"Ÿ˜ÆäÔ˜_Eéý•ïó½Ýé_Mÿó=EÙWîÒ%”mÁ$f­™i$ò)XM¡öJ¼ñ°ŠžPäŽõ¿¶òn!ôkQÒå¿nÝKö¥6¡ÎãÀGj˜½FŒ@xÓZ¾– Ë3•¿ÖQ¬©ok)-úR³›:”jD¼û>/° !2áŠb ‹¯pBПZk¿×eeÏÌÇwLJ~[áOAøö]eÉdçÍâÈC ÷ø^¯œ?Ÿ¾T/諪æ[^Æ}¡¢mG{1V}C_ÚbëÖÍÎ}þéi¡x棶(úAk¯ÑýìFFâÞý±qäÿïé<¸ø+ÇLIÞ˜2¬ è÷DRÑóóé=øºYŒ¬V¨œœ%…pD„gʺè~gÊè+•/u-Æôƒ:ýdSY•k;ÖùFî5°R… ô†›"!‰r xÑóù‰oÜ׫}¥s¬ÔÆ´aA6%´mey¼/ºÄñÍí>®Ê:AëaŠÔ>÷Q^Äò³´Ú7+kt:%3ZƼa DŸnަHÌÁzw‚¹ d½ˆ6¨eœ}–ë¢d0tªò.èvõôùX¹û.îì«#Ô•Œ»‡‘ÁBÉÎèt Ë*|nSäC‹êÜq鋉ø¢Ú«èqEvËà˜×Ãnâ}&!ÒRò•Þp`Ú‚aEsY_Gbn$¤7[ш²ÁÂ|Q*ÂŒíϘ(­ oˆè«ÆØW“Æ}¿rnY·Üž?©p±Ë7=gT‘í_mvšæÇ«Œëb–«èzEW 2O`šB9ŠƒAJ4¢ÙìO ´]á$°ßª¼nÔ[½ÈáX}Ï9öíõÆBj´Lú}©ÙeѤÛ[ç†eç›Ebt©ZV‰è"EjE%"FêŒt»¡ð€4")TûTõ¸ˆìµVßU5]õÆÃ~kMùâ8›·eÆ‹ï”+Ò°®DµÅðÝç+’ ­·ªS\13ÕøóQiÃtU©U¨´R‘rИ@TGƒ\ºQšøew»òRÓYC¯ªöÒ…èYQŽ[5Gÿ¸ ç"žžß Ý7— )\lnÈ‚°u³¡¢Ï¥ÝwqâaüDeÆ©ª|k+,”‰R&Æ”a5ŠhX…°±" ŦAR*ÄâF$î¨ô§3Úë¹^W•/]ÔV&éÇ£æíþD‘†âÿs–h, êAIEND®B`‚instagram-feed/admin/assets/img/team-avatar.png000064400000224150151435171370015523 0ustar00‰PNG  IHDR¾†äZ³íýPLTEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ! ôôó% %(œ{q1%Ô)O¿•~–um¢xkUNC2) 2¤B9%&6;+"ÓÖÌÈŽneM:0o]Z„f]¨‡}\QRå·¢¸Žw-2-1*&+;2ÍÐÆPA=ΠˆÞýz^SueccX]ìííåæå¦‚kͧ‘¯‰r×¶©ÙÛÔÀÁ»ÉšVJDØ®—éĶ’¤¨AYgJ˜©®«z\`gdz“• IUSj_l•ZATu~´ULê×ÜÚ–tOH`¥Š o`?&Dƒ&Æ·­c4Iblmöêßur1{wnppˆ~`X7TL+·› äÝËúÏÊynIЇ §š‹³²ªÊ‹‚0NÑŠi~qyª¨¤ˆ|Yc^㟜‚}?—’˜¡ž›mhƒ•Š-ÆÎÓut”Œ‰1ô¶ YTk­‹‘Ÿž #H]~3Ñ×Ü¿\UމDEA¼ÃÊ¥¯»\\…I#ؖȧ³ºÀð¨©|£‹‹«Á|usCE51 KM{å›dÍQú÷ä­§´×Ì™éÛ¢s‹Ššžœ®w±mk½qDFht¯š)¢—A®`6ÛYœ‘v`i—ï©oö·›\X8;o4Wh¦,˜^À¬;ŸO)}P[®¥h“Ã’vªºÏ½·…ƒ¶/JîoZ¯¸õÔæ‡…ÙÃÔfróåÝS3ÙKwâtRNS$ܺ p`@€P_§i«% IDATxÚìÔAƒ0AvÆkpVþÿk#å’“E!öôêÖ‹RJÍ–eO$Ÿòµív:óµp™å²îlm²dudž@7YÇ­w±R–%k8«‘9kT™M–¬™,Èê°®Y˜ÆÁmH‹YVÃÂÖ*ëQV3gtÅ,K–¬Ù­ÒkíËù•Ý!Ù?”j½Ù1ÛÐ$Â8€Ó;EÌÓð¨”ò˜†è™Vz·ÖÉQw-£.ƒEDEDAFaÅ2JŠj½PQôvºIê‡r•4öÅXÝ­á‡Þ†+‹>EÁˆ}‰¾ôN›­7ÈÓèC?ÏÛÝSìw²Ûïžg“þ»Ê®É¹&üó®‰Ñ5îßw­ÄUå)Ø„J»oFy³£­Ð×Þ¹cY—xGøñRÇŽª‚ëŠ}hpðõÕ˜dµ­ÒÕ»¯‡žÅkåj^0ÎãuëÖ…m`àñ¦{jäÂ(Šö2`ÂÎÐ4¨jâ¢w*ùþvú:põêƒoí ªKö4V¤LµraÞîžžÞc½‹€cÇz{õtvÓ5rÑáLô†‹ãÔ’óûNßÉX\îTæf—Ói➣]™”ÀÔÈE1ö‹©Ãüá5ZÞÉvNn¹Ø|®6.ƒÍK¸/^Ì$‚¡°ßÝóÊ5æ;¿Ðe²ZõÆ\0hÍEÚQ¾Ú‚'`n•eéþ.D‘+>ô!›xÑÒÒríÚ¡œÕŠ”‡®%‘ölÿ롸"ׄï]{>†dÍf6P–ec1ßõ«I‚&ÂÝT]U]`+F >Dt¿Â^®XU]`êé]´bÅ¢ÇdJǺéêºÂQ©þ)ÜéŒP]—»K qœ‡3µšý.'äËÙÚ*šœ@ ãöV×eÏìØÁkßj¦Àtí4-Ïó³æÕ××746.Ù2—¨¢ ïЉÇí7Ó±XL×ähjš•\ÝÌôˆùŒ»F›<ò©pÓl° 9©­ ‡˜¯Éù’4¯ŽÈ‡­>ôõ}þô¤Ò ;Ò•9_Èö÷÷ËùÚÖrY’óeÍI-‰B¡M$^¼xýŒ®ŽëÊ‚R°€°•ÒUÜÉ ,¾R¡kÔØïÓµ‚f¡|•6y'׋aàˆ¡°ê¸(wòºßieËq6ÒC’jNò™TòN'3@J¹«|‡Âw+å 6àë? ~HØäQ>ØèÎÞ”¯(XèuLÞ£³b°긄.Ÿú÷¾§#ïÉ•ºì™V’„‘6³0û[E§YìrB¾xè˜Ë ³SÕq].vÇŽ@`Z½VË›ê§êy“n–vû¼íÛ,S¶Ùd36ÒUùDD^mx‰‹Iíêt@DzF‡Codõ±yéTØ©Ã9}¤ \ʇ}{ wLmxЊŒ’”ÃQK‚RVw%ÙÇÏŸ G_ _°=¿2bÝ\Áß×°¡‡¤CYÈ× àÂåK—.wH9I’Êå:®}ŒD ˜†µ´Ü}öD±kÓÀìaf  X‘ò8pDÁFÿc@3*™b³ä’ Ÿ0Li5‰ ¦Ô…¥Òé·QQlõ{H•Ú¦²‘Òf#IR£&Iܦñ°bÝy3õÁó'Š](É í¥¯×KpèÐEQh…™p3´òÏÕy¬Ô®gμzwf7ªöpT: `J]t§þ*UñKñ ¦ÔÅdàUòòûXÈbù¨ßçð9}.'ô‹çE V‰«î[×ί"]<¯Ó9!0¹Ó9XÖáhšÕ°Ýbi”óµÜXßhYÇ”ºà ‰!è‹Éô¬i±4xôÖà0è zÖhÔéæÍÓuîæø~ªn¤KFוœKä 6H—ú|ìë+:p©ð¹ïÃÑ£Úûd"LJìß^Ȩ?tÅ?DýýòqáÂå]—¶ÝD`4›tHm±ÛÙùJD J‰kÏãÍåL•WŽ0Rî×>t²y3¼TâÂh)T,xÃWô༼ƒ=÷b•»oøíõ|Jôs©ž¢Q©5jÆfS‘œm ‰ã¸'=§òyßùôгçO”¹(• ÐØ00Àx!Å&à€` SuJ\ÞG‹Jó®ËÎìÜ ýÚxïÄî¨X%†à¿ôÐ \XØ\*ÔÏQÉ;ù…¸!|ãóÇ.˜wÙÈõð&g΄Éq\ˆóx̧بÙ q!3, 8[Å|>åUâJ9á>P‘&³ÉiÖñ.I³͆`9W?½ÁÒØÐhiØÞ´|ZƒÅb™ºàJÅ.€êîììF3q&™Ö5étF£ž#=8g0èÑL×ëMGηéö6Çãñfûq! |ÝHE­°f4: _¹TA„¦åëcÛ]¨WáÍ”¯öH{äÍñ÷·÷;ü6”…FA¸²@ÿ…k È×¶]—.AÍ`4 «ÕŽó÷YhYDÎ×û”»»®R×­³›Q–ÊñZÎÖ×zíÛ7ê…X»öþŠ\aGs+”/QžsÉ“6<`7Q© ÒÝ“Å|ȃžè6úÃU'§¨ÔðdŸBz 8®²yp’eQ¾öÃ$Ü»(°!°ºï(ŽhÞ¥°¡1¬BÖù…”3i¥ŠÂxÜc\ºi#¶Ø‚«m¥±ÐºÕª­¥*Øç‚+¸>¬ EŒ­ûÃ]©àC -¤€è£RB\‘bôñ‡×§D‹6јV y1&þãwîÌ0U ~¹Ê;Œsç7ß9÷V0 bøêì¼wì–[ÆÆÞÇ:öëå--8–%þsOÍî4ÖŒQ"Ù^Z"¿L_í4ÖT»L&¢—G£1±0|aÅÒÑÑÑàlllÔ—!‡,#~-µìø¼†Nv ’ÌX |•9¨ª¦÷eJ˜!· N¨Ørݹ÷œ ÷U\ |tÒI……7eÝËÒ#¶Ó7¬RÐkÚ†‹î-?[eV«j£’;Q‰QfhÕ 1]8xð¬!â×ÕCÖu±v¢CD„JG¨¸Õjˆ Ï€¯ÅÖE$ŽÂW"™¹3¹ÏìÆ¾óÇä~Òê«}ÉLfe(ûÁ—s¬ÅÅÐ0ÀEø£ü‰ÐàkïÞ½~rð=Êö#)X±÷ºBÀW<šœšõî àu=évV„/ž]¢ÈÂ×õ¶íXÐù{%ðEØb-^•«JÁn øVدѥ©%lÞùÑ~‡ÇHy£‡RFÜg&9y0‚™G&‘+är¹L‰›$œ:øÍ7_¯ôÛw ÑxPUZ QkàÊrfÄ,tLįļ¢Z:¯¸¢…ŒWþ ùù·Ü’”?vyggç 7´p‚÷–«y Û /AÙÐ6„…5µ2ZM&l'±ö™$‰¹/ «ÉdµÓ æ$Õíil,믟(­ëg+ØI¬IÕ%':ˆ¥EMEúŽF}iYÂÊ$Yåv›Íª¼¼bK^Þ©x;ð¾Î¹ì’/wë«Y›€¯«Ï9Ãbv¨•Jq‹N©€¤U©”¡‰é¢gÁ~‰cýߪ×סVáK«¥Œcq1AZ½ XæÜûâ¡xfpÿ_>˜L²ì1ùÛ÷Ë™äòr2óMHs‹Õ‹µ¼Hïí\õµ·8°òÇ’ƒ<¿’Uåƒ]F$ã+7‰Ž§Ò}=b¬#sŠuÞ‹ŒF¾`» Â-¦«„­Sz1€]²ÍX€×¨ÝzSv†)J§°Iœ™&T¾˜Ã^`ffÊnÍ-–xÉG'xíýN#ú=P…¾ÂÐ%Qš(…ÄsO®À­©PHäxIŒFðkee%½<7‘°C·Ž%²‹^^;¿Íµ"À¬çKm^ì­Ó6cI¼N/\~à /üúÃèuËG/l½ï -—ÿ@-ð&Š&Æ:&§X ^×’DjqøªÅ>Ñ øÒh4ØvbAmQ/5í‚ZžjM5A$$“uz}ccÿ@Óžºº=KPKnçutÖyyŒæ›NtàßkÔ5alÆN¯w¢w˜d‡Ce6ëtf•Åí¶XܪSÝÅg0~sÎy<ô¥ë¨\bYgžèÇT iÈkk+¼à.7òF“ýuXÁ¿ÊM…¼Õ U+-71z_رr7€C™X+Y/­ÎA§Ž$ü±Ø^Ÿ?±ØŠ£? Æü½Ëd¶–WWãqÃÀœÁÁL&“ĺ"æÍÇæk¹»½·ï‰Ñk¡vôòµcÖ‹øŸ„†/±¼ñÞX4íÛÛ{¾h¦·Žuÿ‹šð³XÁàøJAAÒF/‰ «\AÖKfQ?Å–›toj( DÂá`ßÜJz"±m'Ù)!',( f \5^´ÿÂíÚÐG·Ë&Ôë/¾ü‡1Ò-cùùù<¼ò¡[haH%_xᆖLºu,q°¬Ò)èK"»D&ÀK&¨ÖDü2ižµm'Öëƒ:ÀŠ£V-"ÕB„/¬·âADêpBeý˜ VD솥¥‹­Û‰µÐQ«ÑèvªÃ¿Jyh‘ÃIÿ8IYoF9]íÔaFƒŠä²À~’ýÚ|Ý¿t[±^©­m˜—_På®3ÎëÔ:Q&g„¦¼œú%K ä Ø0µ.ÜÆÑ«„–k牣ôà`ì™k _jœ›:ñûýÍ>(¡S.F¢‰škPI_ÎÄ{ýáp_<“ÙFøJÒæ‚¿“„-b­Y|½¡ÃŒ`ä¾ö£Ú)w$z_ÖÞ‹ øJ§Rã}~ÿøÈüYÚ–s¬OA¤uøâ„d‘òÅ«®zþyb0ÆÁ ôú/^o¼žc,… |Ñ25µÂ´or iÐèäÔÔäT  âm·ã;€ŸÄAåöˆe[Š„£©ë$]9ÀJÁLÖ3€Þdrºå ðeR*dr”0‡9é› 7¿újJŒµU2gµ‘)Ö–xmV›Um¨gwÕHyÕî66 )åu>1ƒ›­Ë5–ô#”¶8 µ¼t ¢+áKØ@ƒ7¼ð£_ïÅÇE„µÌç|^6½Dñ)KŒe´`Ìq cîKCö 7çdα¤ß|èEü"PÒ¿E\ƒÄâô`é@õ +fTÔ×Ól°%Òüñ9Ÿ×;µàK]~ªÎcìÀ íˆÊfáªáNœF%Ђî`À*Š-ªâ¼S)}„ûºé’G.ºi×Õ¢Ù*V]¾¦ø5‹äqÞ^uÒIã•à € ÊÆê„2d¨¿*Ñ ¤UG¯æ²Ç³Îj+q͈±vL¯«»ºV)MDÖ¨†tôœŽ_0C¾X7.Œ†ƒÁt_B©Ž$&†3™ï¿Xg’ Wr"ަ/ïóÍb Ŧo´Ç†‡ßãùõÞŸ øò1|í‡û¢¢Ø`N¬kiæÜxzÂ×ì¦æðÅ¢öÜbu#ëv_<½˜ùúàšk>»æµû³Ï>» ¯»1Î £—0”Àr‹å%ÙÑKŒSÄ'pjf`¼š™œÙ‡Ã$Ðl` {ûp¥O/Øxß°åK:Ž„Ç§f½{Œ 9’?¿–ÀûëE¢TpD© û´äJµ™®,Ñ«ùÕHIn±¬pŠL^/5Voe Þé Cޏ‚n’ÊrêÈn˜KJœ‰É•p ”Ã’y ¼ÇçkúŠ&"Ò¯ùF Àj!ä|íqÂæû7àã‚ðûÛr‹5E΀½H‚Ó" šZ¶Hþí¾Ð<»y,éšõBÍÑ,HC4a@ÁÏ.VøÒ£x߈Y`eu{úõœ|¬¾›,ƒ´æë»êZà T,?Õl45º\¥Ф.C®6C74­„Ò™uîâ Ë©ŸŸ‹âýgÞtÞ­».KŸä‹Jöºgù=-•lŠ*65ºo2°ð^ó óóvdŠ>?Æ@G¸Ã¬[Á†±ÐkÄTn>0Ú2°/° 8bÛR(háÕ¹j½Â„ H)Wj¹‡ŸÜ€ëtèÃÐ {u$‡XœƒBËí°bJYé2ëHj*ʺ-yU%6f¸ ¬”O®M`ݼ€ÌÚy-´ˆºÌ"zA°YÀG/4ùcH'Fúá…ËE€áW§7ŽuÜZ,ýì±':.á bÉ£°¹X¨q^1»e,è‘o¾þ:êäÍ—‘É$ŠàEì¢Iè…rF ËžÓë]õõÏÕ_H!ç7‰•e½ 2‡žÝåEc‘«´¨Ã ֿ݃þ¦(ÐA°Gþ nK-y¸v'Ÿ|]yyaaaÕ.ÒPޱNÐ`i¨­Ö|4;½PU~Æ=Å*&yUTP¯P#WIgxãæc©KÛ¸âýÕ¥J™2 ÆÚ½lŽð[ìZ]]õ¨ßË~_,I`Ö½Žz&:©Û]„Qú£"‘àp(4¼ÿ¯¿€™?3Ð2JÂéôxÊ*tŽC6¸¬éø·ØÔ=¤èÅðE`:s^\õ™w¾³Ã>zõ扌F¬tÙŠuªâ ǘ+йl[ƂͿjkó5ÕˆøìWOùi*ÛõÙ5ÈgîÆzÍ5×T0Õ¨/&›Š8Î>áïÚ6¿Ä»|T­TÇ|͉.'¡D+”ˆÅüTè²BÅÔži¥ÌûÁ`_ww÷2}s('‡———W`gß“ʾ÷Ö_Éž¾‰ø{¾†á¬€)Ûþ¹0¤Ýñå§ú)“¾˜½ 8¯ÐDßD*µ;5Ñ‹ô§jÛ<Ö%7R…þÌ,| ½ðßÔlÆ,šr„ј :O=•ê÷_hœ2[·C/žµy,+M@6…–‘D¡åQ¡¦ffêžm0>ÛPýìžþ§¦g½`~Lã0 ‹sjçScÝ<–´¿yAJšž^’Ñý€‰<ÎpId˜£ &!×%Á“Éè0.:&ÖV%Í€Gƒþ–cþæpÉæ±„²¼àÀÄãç÷4©œF-ß)µè$xÞâM5>‚º—×ÊCKd–ÍcM·d{¯÷ÇÈz1„ž@0f»ˆ`ÔfËÁÞ¿< _[75%p‹OâL"ÁèM&ˆ7aµÔŠbôª¥_tbíGÿÍ”£ÅÄ‘èuWB‘žñŠ˜Èwñ2;ÌhÁ/Æ0|ý±l¾ Yª/+J¥JË8~µØ6õ¡ ×Ëâp—¹ôN.I5R46þGøRH€ ²_ÜÅ3_ª ö€04$çù›Çºè:ç+¶µLÛ«vŸªÒUï"=yדÐÃO>ùüóÏß}HF«ÇXGL½ð*CfP5´m~"üÂcpt‹!ŸßâiÒƒ½Ó†‘MV„a¾Àf¡UaÐ"§¤Ñ+3ø…o0O„ºÀŸä`W²7|‘Î…û/¦#Ä:èóõÅ“`ˆóÅ¥†«ÈX[H!»ñÏ<ÊtÇ£/ža³¿ð!²fÝãã½½¨~M¤GR4c…²1Öúº àâgBˆ‚ñzàš×Ôè3 F'ðdy;ŒæÀðÂÂRH&ñ· [7‹e&qG•v†® ˆM¶÷z{ží0¢C1á­úÙþ+æ©„<“5%伸),ý´m Gç—æÁh]Rf‚E7hQ×Zl*å¸ ±¢¶¢«*嘹Gø‚ˆcZGt<^ÄW²úüð_#›ÇZSv.w5bqày.!1|¡g0g®&Ö†Os¿ËÈŶÌ6‹5ê´êüuŒ§‘ t¢ª=ï¿HD¯lÑØä½@§Nhz³Xø³&.<•gLÔÄØà­@1Z!á]90 ‹_Ьxï­÷(}CøJ;³<:893°ªpæËÁ ¦×—íÁ¼Õ~WYª_M.|¡»©©h°J1Öz¢ ðΫýBcÔëñ8.*j$hÉ O“§•Ê£tå œ S»+0 ÿ´s‹-L*Èí0››Åj!ï%!~åceüÚWµ«0Zq÷=^ðàƒ7¯éÎ;ï|Æî~þnâX áQ»û!6ü¨—I”£CCm£b¬ídŽM­èå LYðûº~ùiü‘òFáUšZƒRGj}誺ˆÅœ£/÷$“û3˽íˬöE dªü’µ~³.ÖJw;LªZPû{û _Ùµúqë3þááå• O¿ãŽ;~~ôèôÓïxôóÌþ÷ºˆ_]¡‰rFjÚ'ú±Þvˆêü#ÇúôaJW–ùÂò@šM“—ƣÑC$ŒðUVÆì] ƒ"¿Ö=[D/rR¬à uìÙù–œöD$USCûÙί—AŽý& [µ•Þu±Ž‰B‰*c­ÎéÄ㓊•¸:LZhÍlié]ËŇ|L­ F£ÁDÂ_Í1ñ¿áº§M–ó²ÂR‰$µ˜ÕH|8xi9©!D%°6.QlÛº>ÏbI€œ5€u¾€9ö Sà/&Jiʼn•ðIô‚æ×Åè%}Nf¤@ì'¡áÅ8\ ¯È$À ›LØäðuñô†±Pöbæ+B!)‹Dn&—“áK úŸÃÌ“M_4PêBÎXúVSù¯ÒÇ0¹Ä´Éy½Ã{/†¯ZSG™ ƒ€æF*ÕC8/Ž]0_LØ¡£ØWêܸj¨|í:g-»o½ êéy}ãóZ¸¼¡šz2ãÚ|M­'uFaáãŸtåe§Ã<ø2¯7ß$†ñÆž¿ª†¾’eÙcC"'| 5‰üÊ}ÌQº²HÝÍý¡.Ñ~-ÖƒtxêïjÔÚÜ:,ÚV„UàŽp`¾Èx<z_ñövdiŽ^+3_‹‡H«4ÌæÓ··3VþÉÈX«B·¼r%Áëí;îxôí;Þ~ûíKßfKRòê›HÏa¾,X{o/èÅã«ÙŸÞ(ÖÃðø+÷¬VQ£4ò&žá«Ã æ\«9 Ñ—éË`H=¹ÜS˜”ÿéúXœ¼v‡ûzD"#Åïü̳&êTÕ<¼ª«9„5ÔµÌÚ¼dϰ0|@•Øÿ¿6ˆee>-Þú1æÈj¯jH©Æ¦-_.Å;Èá5Xjj¨žÁçÜ–¦ñ`$Ö\Ž5ƒ_Í©bU˜ìø£l6ªÒaaé®ËH&=º…ò¬NP…%¯ù0~ƒTI–ž*±Ù6º^O‰ðB‹ÔôŠò=cQÃv ŒøÅ³k=¿Ä§+æ¹HN£/[y|ñ+ެ)Û~±Ô_LÓëbñ»8ó,јoÉ¢r«Ü ÍÄ‚áÊ:-rK*K©ËåªiÃt”Ç\¥®R|[ïzlª~À˜6:/Û+<¼x÷e*ÓëÝÎ`rÔâ\[!n‡æ¶¢S¨~ÇÖ ^¸½é[E®3E|Šzg[:Ÿ@ Ž_´’ZÓ¹'Sxö…§_ôÈE—ž~壼`óaÐÍw>üäÝjrBãŒ_‰DÛƒÕZ®š;½¢ ’dÑùÛ _°`] ƒ6 ºÍdòðsö5H·ª¸È¡6àÿ÷¥½ðŒÍ»gny¹«k?¾^äqnn. ~§W2”Šçœk9tà@ˆ2Nà+ä Qìúo]†Šs/<ýÒKß~ûç·³š]ùr&9Ü>‘BêÂN¤'zc>¢—ɿ׷"žsv¬_@/H°_Båþ×pÛy(å’PÙÌ—¾Ã|aaµ{bXY#®{Ñó¨ùƒY‚>€Î]‹t> f±2Y(2]CÌC^ý&²]´·ªù–3ö/xi+/6ŸáŒ2HïÇ*ðZ9K„õ##å!èrXh ‡yÚÒêjÔ5º 5IWƒCxÜqA-Zé®O÷v/'ã±½~ @î_‹—”g¥X­§Þú B$ÝûZ%‡/°’‰è¸KQø->yHʦ‹±ñG&±ú¿>£ƒZ%|‘xl1X±êG/H¨~±Ÿ“¿:³µðŸ±lxv!Õfû˜2Ç1Š/Ð äâ6” q&#O¯lÐ1záËÂÿ€lþ¿Ïë_Q7w îŽÞmáT陽Ü*¨¨À85ïìëÊw÷ìnÛÛz°Çê]PÓÀ[MõM¥<¿þu^Rþ¼XÇ Ù,Ò»ÝìæÈµ°V9F¡ xC«„'iÅ£ø:í’Gκä’óÎÛ]UUUþn}ý‰yÅÅmÿKúÑS8Zz–צº¡ú„Zy­s¤ð¤“.»è‘ûï¿.ÃÍ{‡À/XV6ùd %©A­‚=ÃÔôØT®üz¨JM™Æ3Ï0Ð$Ðtw,É>U™+¦3«Íô5r°ÌQЉpõ×åßõ7cçÕuÆñétúž´eGXÚ o òÈ¢B@ÒI†F!D·Õ@-*4ÑÔš˜JÁ"(„ ´ KÑBéÃJ‰ÔÖΔŒIm¬±b™ÖiÕ8”ÎØq:Óßwι{èë¿÷Þ½+Êua÷·ÿï;ßùÎèÍóÇ™]=J,¿šÛšˆK(cöýX¿É‡¯PÿÐ|SbAÜWûÖA±nZw.Z·ê+àËW81tp÷DóÉÑövÏ6Ò^ý N¶KEûq™ Ùnñëý¾×zIÃK…}V)ª ñ |ÜÅQKÇ«RåIù(\‚/Œñ#™Fæ¼'Ð2ä2 ‹™{-è¥<b(±&ø2“RûŽÌScؼžà—’ü®UÉŸ­ÎÏQž+žÍroŠb¯¹×*@©Ü„a©O3êÀ¥JVðÉ)ÅWlJ9…v¨â6o°èG"7r 3~IT~âDdàRV7[5õ'ç\ ámG>1vøEÁ—ds…bŸŽsQùZ_¯ñE(%2ü`–ÀסM!Ä|*|Œž7?¤¥¸û‘ÝkÕ¯þ3…&;;ƒ±W8ª7Áמ­í¯(݈ŒÄI‚6…/™ép°‡‹±tFº#‰È³“œÝ£ÒON]ŒC¶Iú«»¿©û.ºjý?ìkýéW¿:Ó<80øà<"€ÜÚ|œ¡K¥‡Z¿vÕW¾òa›_èûO>™¸ëާ­µÙ#LØ*ÅÜMá㤵Îý¹×zWC Û…ô!C/Šâ÷¥ëC$ÀøV¹âD}¯TëZöŒF1¥bA&¥ Cי똼"y݇%‰x¨÷A@ZÕ¶m¢0¹ÛV…xoL64¸\QIy=©-“ÓÍB®/omÞÊOô¾=ocnkBÿR4½ä%„ðÄ4À$xÌCò' «P¨ói¨U0·MÝûÍ7]­é…tð÷3IÜ“ãâö3Jï¹Qš^@Ìüµ7ðR0ûƒÆ—ÀKü×Ük-• ½¤ƒx!À/ð4£Uކ²\™9Sç^†ûB{õòkdöµlz•4v76V6Š“ Û¶-|%91`Ø.ù¥U¥¥Ñ¼­MÏ úª‡_o¿]·¶¬û•ìæ@@Ùóºá—U´ýûy™‚ ƒ¯Üò8R_¼°q—0 t}ƒŠwpU±61ÍDRPL7adðh^ˆ¤î)ÞvqU®{Rmèí“uu]oÛײèEÙác/ ù_¾¾}³Æ—ŸraáÌ;ʨ/ͯƒðËJ!•Ð'|, ž'ÀµÇºò£óCh†²';ºìkýïY¤ÓÍmûßp<‹û‚PûÛ‰ìæ¤-ac€Û™#¥ˆ‹mdcÇ¡a÷òr’"‘Û”Eý®³Û3qó•›´IºIõ×}Õ©¾éî~}ÀºÖ?(;>88Jâþ® „ø’¦‡¯¬_·êkÆ{1dL+1Í3àq·É4Þlˆéûéd¨ªf-¯÷qëZßziÙý½8l‚^jØÚÏA‡pj8Ém"©þ$F©à7£¾r‰$vûç/ÍP†u­Øcޏ%Åž|Ë>eФûÍ';rêôé×)ß©>{îìéì×_ýlßoûÎ2è›{å“ÿúˆ 4`œ¨<>Gï ÈY×’±zÙ/ÄÆø\Í ÎŠxÑñ7-   sPUÅ£˜ÒÈ)-­Š›ÙÒ¢&'{zúzk‹ÕD–Ô–ºîߨñ:ÿà ?Ò3Wg_Ë-ÓdúA÷%H¨èwwlBp÷z Ë¡ WYDŽÙÉø‰À…6¾øwÔYç–>d]k пJÛÓØKù,Ñ_~& léG€ŒsÃ/9êSóø/iÆ‘íâìk-]Ôåyô¡7Z®ŠÙ|Hɳcã nK#Œ”=»ÌÛVøšÍ/®eÓËd¾îlkÔè^¢ªma‘( x)_\½ø½¡‰+×®ª$¢úúu[¢„_ÙK³¨»~JóköµÈ{i󥕛ÁK}sœ*“üV¹`ëè½£ûn¼õÇ+WþøÖ[7Þzíå+/¿VY^žçÏÇÕ/Ko#îêêÞž}­T÷C/ì{þ±í›7ƒ/a›_v(æ«Kà½À—¦ü:h i|•;LªÀ} ¾j‹µýŠð€½ï:N·µ·÷w2Ò›ð_­ígÀ—ЫÍÙáÌ —¤¯x‰à6M>`“²Ü‘‘NÜ´žÑ›w'&¦šo>Dw¯ÜŸðt7MÜýnæ‹uZ~5ÓF| ¿ñgB¯ è%î x}ík¾{R|ãÆÐ4Z¸ƒ/’]Š_r7%i:Ê6¦Êf^«PK­ð¯r’GÖ^ÏÐ`Þ—3ÂÉ´ûhÉš&pXƒ—‘aGúº¡¥Ñ¹°çíw.z‰’ãÚ™×J^lT Jh$s±1_Ëç}266ët/…¬Lï*>v¬¦x :&"—}`ø0,özA©TðãsjîR­°ËÄ|µ,/H!v¼LОՊâE¡ÀÌv©7gi²MF5€¯ù™))]aÅeK®^õtyÏÇ×öìßÚþÎÕ™×*>Zª†ËŽ—gIž^{“5 /õöæå"üJŠvÒª*G‡üKK)öù¬çuQhc챟™º.It2e»>Å®Ší…^ÐÌ+¨ed ~½À>4óZ§ýpÙLL <2~ˈóæKy.N,~yÍGHæu_ÁL¼oy”:Û|hzy… i»½ ¾–>nÉXÀ^}õUöjýÊ¥î×OGDG»©`_Jñ3¯uZØÅnÙ¯àqbÇ52µIF _:qôÖ7Þt]ùºbiߦrìrÞ8+±ðõ¶¡WøªóŸy­¡¡”OPaO3£Ç^Øü äBrŒ+MI¯©ë¹ÄŽë-š…¯?ÊäkO¼Å$É/‰a;èlð´c~0‰¾b”ìvÖž4×úŸ‰¯–ÖV¦d÷¿éþ†æ×Ö3Ç¥tâæ`w„8/Õq^‚FîØ•ýÂrñªòòœÎŽð&ÏàñóíSw±V²Ý%Ä÷`ª(Ç£¶®ž935¥fÿì¡ÜKÅŽƒ/þâÁE2R¡¡õ5#€ ¾¿1qAéîV ÙÉ~‘þjÆ{!âǶÑ×*¼ òì`KüMg°Âƒ^ìYY„\AÉ9 YR¾š½#+Z—­RéŒùJŽXÊ0yû羈›¹xËB$“Å?i~I‰ $r\“|ŽO–6tLë$»FØòßž=•w:W/ôé`˜/œnùkÄË”éß2fœå ( u¦—–¦- ź/`‡_l×®eê––ÆÆ[#ª´§§§¤…”šÿÉ%eµÓwÚ::¾síáÃó{øiî¹V7£Ó58Vsø¿®šÖÐ$â—g9Tù¾_úí­&å5™<;~•,,ˆ7s 8|ÎD }Ö%ÐËθCœ¿,À%A!Ä’ØÑÄpìSœ1“ñRÀ²m˜9ù‹ù ˆÚöóÛ±F%µ4¯´äÌKnö#^.ª}AˆÊs[ä2÷H:àˆÕ³zLvCh_z¡é;£ðÊ×zγUõ#ÎÀ—â×2Q ü*[·ª€A¯:*/ÊJ«ÝÙ‡££ùÒö Íx^g ºä Š|E«´—ÎÙ;N\¸õèú£†×ŸE Lö?¾u´<_2N..\ù¸/Ø¥4óu¾Ø/_~”_Ö3›uÌ ¿æ‡»ÒCËøDŽJëuî˘e¾ž"w/xYÜràÑSqÊ}u¡^g–»Å\ëýÿ£QOjGÁå‡"ªYŽt5=O6i ›ÊTĸ„(D²`êwJ¦ãèè=ÿÊàÍ»B=aØàOS÷NŒYpÔÒÛ@4žiWeõ7¯¿:ß,*V¬\¿èk^z½Š ¿ìð~%†ºz&I5·*|µµ¶6Z5ûǪ&ð·–R/A0#±b_Ý”«§MÄ&Ú„¹Â"áW‚.Ì"É Æ@WtoA•÷tÞžA/ó‡¼ò—ÀÑ4®_vhÞ¥ùOû­9ÜÐR+óê½øâ€ ÈŠQNpvMì9ÁW~¦ÁGÄôÈ÷ŸÑÏRçžâ{A[ï<uŒ (-,Ü‚ ºœ!e¿ÀWšÑ¤à«¤¤EØáßUØè*.†_ßÙzíÁFQö47_{øöŒ¾ªb µh!Íì ÃN…z¡yÁÎR`ÔÇú9dR®0BrgrrVV„üŒ2j©$㤜ñÀ—”Â,iG6lÇ[éÌ–ÜA-€¥0¾ ø’º·˜á—ÑÏfàk§S2%â5ÎÊÜ\)Ùèb›/_…]’.¡-V8¥"3s_&x4½÷5Ãxb3f éÐ|ÙªBÈÓñ°*çò%ZìWzúúuëV­Â€ýîÕzâ°PøK•ý"ý¥ù5ìó¼.[#ŽÈ¤îÇãbq˜Æ9B¯¯Þº¡á½®€/Í/u¸rëDy0üÊI«±Ø¥n_53?Ú†RG>q¹`uÁØ Qû%¾K EÍÏ ML\Ë¿©!vDR¹‰$ùÅíŠ5üøøRÑ£P¤äòê Œ¢ka¤•@2<+¼¬ö¿§¿L•ˆxkëo»}óÍÎ`J°ßØÏHžÌd¼9Xž“,þ ¿¥Ò}›’’òÈñ£Å½‚eª®ŒO Ò®ðü|»;ÁB]L…äÑ„>3ªíÍÖV¶fúK Ê%îÞ ]¹r=¿'C/ðeŒ,>ôb“!Ø \®;Ýmà«›kŒz˜|„P86qèî]ûZG5±äÚgÿâãŸé3›òT‘ øJˆˆˆ„^® 0bྨ$Ž$¶4+ZçˆlÚëFptû%[ð‹í7ökTO ‚3Ü›ò £Ô…§æåçC.6T£¸Ø¼*`™gssÏÈ?•…ÔÁ…ŠJWùæK°…½ÓÓ½ùäðè–YZ±eKFFFÙ–Â-…¡é‰(ÅÄ(~ÅÀ/6V‚/1_4¼Á~Õ†…14>0Ьf?´SJÜÜüðŸsVŒ™óØ¿z‰ÑRî KSqºç çŸ„Ã~Z$¿J|—O3²&Yòß© càµ}Ãö¿gû(qXì*†Tå÷Š^HÎ_úøïì×jû·F#k¾=ùÑlúmÏWÉi–º¾[Zö^^ˆN•ÉlEðµÚƺl?/ /4í©òÁèÒ $#Áª]AAi¢¢´ ƒ_­«Wúݺu+W†V“û¢]jÃdå_fþ#W™1èèeÊg޶Ž|ñ_‹Ë/ÜS /E/6¸ÔÆá©M—ÔÐ1ƒÆµ@K“‹Õiù~d§\+ó>%eµÂ—2}¹Ü;ÓÓÓWá¾dÜÑÎ}YzÙË/ÁW%ö‹æ«=—Wo_ׯ÷\­EÌÆ.+6×ù¯¡ãäíí‚/ÌLk+)qê€yÞ_VàèÌ \+oSe#y>Ñ«ŠòÊóÔp«|z bH:v2ü8(@’ˆñá+£¬1(¥ÿH*,Ã;UHªën¤ð´Ÿ 1Cûæ‰ûîNnÜø$OvA/ð¥%ø²ø¥´ûU2Éð ö«¿Ûã¸s§»{€•X¥úb” ôÏÖµ¾û¸%/u>ÿÒÏ?ÿø8s\ƒuÉ´öŽr…–Dzêg…/±`ìÑ €+|ÉL}¾ÈÈYbøÑ¨ ž Ñ¸&òRæÿìŒw ã%2ðÒàªc7Ê,f?¶ðtÜŽ‹CC¶ØtcŠÈøN™Þ—èˆKPæz€–‡–ï`¤4+²´¤ x­eǦ§kz­^:‹¼@—‰]µ™'OÂŽ·O–n£¶Ç30ñàüµ3×ÀWÛèÍþcæ4mÃLŸ:îDkzùÉN:ó18×¥÷*w/™ÜW¶VìW±¿’)ÿ²ðÅc;|ó ìzqû¾çc¤tvKÇúÌdéU¾]}ÏÏ?ú‹õýôæíÓðM?¯,xé{›[v‰xåÝþÍw¿›øÝï~÷ÝÛã!‹í&ÒºÏí¾ìô½ð²ÌW÷6[^V¼¶p^ú„›æW"A á#΋<ÒÊPø¢Æ'™è±ûå;}ýDÓk&¾Bvìý¡£z=~CãËHðÅÍ‘Oéúf&j·Ôt=Z²æcÍS†Fž¿|9e,%åy‚ÇGÔ¨ãæëϬyÄ9¾RFº¼ø²È%‡+ÐëVý½îd*[öåç_m¸>ÜR{µ,+Ë㙞6¬|ÿu\ÞÙ)y{†žx厴µ5pà8Z•³8$2)Vе‹äÊE‹øÏ¬_± & ßÛXYD,F)¾j“20! ]£Û™M-üºûÔŸþùðn—ùMžG¼Oh¥*¡ß(³¥•­¢0|-Rø²éeóKIŠ'6þrEhE é/IÚ·y&'éÝÝ‘„#;$ ‡[ ^,jér{\:…€¯,§; (†éQQ|ô9³rdÝUòL ßà¤Ît9åÀ¸¶…/EDvTc~ÒáæÃˆŒ#öIB:žã®—GÃGæí=W\k{//Álñ “»;bºxYe‰@ ìñÂA¾7R¬05¤Äß¿?ÝŸJc rÏ!9Õ%B¯ZøUF)ü^+Løh%ð À°_Å$ÞÄ}¬)-íÁ¿Þ_ºÉZëààƒZ1‚YdCø%g`©ìçB$r” nƒ/ªïýCøe ¸œ|„ïžkÍŽÔTNt᫼i½!_z±Úv´Id:âè±Æ/XÞ qjÑË}ì׆ ˆC‘º7)õ> K¶lçe3Í¢—#/òÝß|ýæ7»nW–/žoãË4Íyú÷’¹·ñeµº¨»zÕ¸¯«žnÛy±ivA/ _iœitqƱ_¼íTiíºEé®ÌÃá;Ü’ý:¥ùuÊJýÞ›²· ¾rÕ¸)y¯ò""GBÇ™ü^²£?½¤¦Äb¿JÊÈ0ÔŠÊPFíó\ï->fE¡”±±±å¾¶›Üב‹Ã;r#ÒÓ¯Öû¸/›_võ½ÐK»¯`ižã6øâwª§¥7‹ùˆŒ§š‘ÎÿXnŸÒÒÙ>ÕÔÝO!B+ó¬ÖhVå[žj#<;,)/¯²ñÐîxXAË*hNqA‰PlסƢòÅ K¦ªtB.Õ³ppÀÃà`?¥¥­£»þ$C‘¦ÖQ…yÐ XòA߬|= MØtKzºÐËÂ׫ÿŽ_Ê|qÝŠŠ;mÐ ×íáu0I:  ¿o—aMs-/f¾(·/²«Š­÷Â¥ÔžAÇœ¤€´(ÒD[¶¸\´7Š”ÉÔ) ¸œ¸/Þyüd ¿¸‹Xê$||ñÝߊÃKþ&éœqùEzvõéžÒiµw9çó/_=|xÙø‚VsT,ø¹ž{øòØX_…*2`£›¡´b#g¢Ô‚‰k÷—Çp6L§“ðȨ²ڵµHá z!öK¤é%»Æ—ËÕRÜuì89y²«b²% {âîÃóïð[au§ÖÖööóVn4kƆ)•²³è%zVEVq2ó! ¼½‚uõ},Ôe>L8c;ÙµþÈîXa(¨øežÖ 6½6@¯¿¼ø3ß>8^T©Qr÷"Å13!Ò7‚´í׆zÁ_ØX¿¹²ÃFKŠPÜãZ²Â‚~¹äö.ï8Çb{"wœÖÓŠ]l–ÆÌP»/öé¤î¹æKÓ+À_JD“~…â,¥‡U“ù’Ym€õ4° §z™\ßiŒ9ñ¢ë –û fŒBÍòóÒ |±!•ÿRRáã•}—dADJÓ--5Ø/ò]ŵ--e¢Q…÷u8Är9«/<_²ó±ŸÙì§fð^\8|ØY¶^á«K—}Ùø²cGƒ¯–ûЏ8¾rwÊG×öë×w8==µÿqôÑ%N†,&xlên#ÞÌLEO·ôphÆ‚EV'de»“rŠÓbW>ù㯬+à)œh˜,صmÓ¥Å!LP!CF¥Ä)å"çOv}GSgGÒüº;m‚ÇVÁ—¼O¨mßÊAú«Þ¼_VV(ækÑÁ× ûe.¨KÁ¸àA.É<Òe¾HÝ-:ÑxgÛ@c[wÅ*‰o®•ñ™2§·sbCÈdÆ…;#«bð.ß‚#w:QôÊqF3Z#"÷g0;™Y¢¤Û·A )€5ë|üÒ;î842ºtãz™~âYîîò‘ؽ§–k~-ù÷üâŠ×1-]³šð1Ÿ¶†Ã’“=G+éÞ|íFèœo­/1XüýééÌ>ý.â$C²Â\|¶|•mIO/Ôø¢i¹Â—É æ*)+î:yì¤ÿIðå Šªžœ oOé*Ú¯rmÓ>+.f(-NÁ ·ÔÓ‡a—Ÿà‹<}RS^8€Õ°£êø'á²€— Bb¿ø×jC)(Õ_Ýùó'ÖG€ ðØIÚ ¾þ0_ÞæªØ-‹gfâ¶ù¢â˜¯ýÚ>“_&%5<]Ö i4ùàë“!‘Aï®wwíâ°ï(¯x¾bãëÁÞKlvøXgñ뾓G6/ºÒtªpÙÁ£:_H ŒUö%rÇÐrÙDèEEu²|iá¿Ìó:kÆ¿à뾂÷‚/U2‘wOèeÆn'ÀŽO° ¢à+»¦KŒøóbî»j¤ a‰8±Š.ëu8R06t`ujoJÊ£?üÃ×)½FG†R{ϺËV.ª?iák.½ˆ_#q¯ôܦK’»ÏùÛ‹~óŒ/´ýˆÃ‘ãðL^=雽Ÿ›·wø½Ù~|ª££¹\:‘ØîþN^¿ÍÝng’› (ÛbVl\VR¿‚-Z„ [± 3]žCè2@ÛUU‰:ØM#°J¿::»+¯<${oª‡§ÎŸ‘þÄß\Í­2Õ~Mܯ¨Ø‘o·HgîçÆ_Ðë`bzEKoÇ—¿ÌÚG'Šž»uëÂ¥ò~F3ûU¥-Úæçû’w¹ì/r3[‘nN’àŒLØ£õ酌ڹ"e`I1Lá*B•8»EÙNñaL3_¢Ç-|!>‚®!±]T¨Å¦Ù3±ÇbcwœÖø*ÖöKp5[#à 8œ{¬",MðÅljã›-ÏO1¬_ñW[¤éŧ?7Ï‘]M2‹ 0Mm­I߯ܢ_óHó .è%ø*¬`…½T’_'S»–”F•Þ¿ÿ€š/àEãB´•=ÓªW¡ò剩žÐÀ“4Ÿe¾8JÄHß·Æm•ãå|ŽÊCÂÆ†çœd eäZ¦¡„Õ*b]~2"ap¦5›Ý¼@—ÜD‚¯¿ƒåË0!ÚÓ‘Ê|iëe×ÜÛÿäð‹CоÖûå;ì8Ó|ÍGÁ‘i˜/¦ô\Q¸ÃîžcZ>9û¨…¯Y£Þ’U~H–4¾v^äêAgr)x‚6üWz"ä ML/"ñE)¢l”%ºOgc¾Ðvfž×f-ß‘ÇÜÜ/©ª Ǧ[ _ìFÆ‚Ùøz¹|ÅMEÕ"õ™[R]w¬¦z‰*ŸÀŠÕ×{W£½84’úèȘÁÎ àk¾¸¯Ã#Ë{zÊÖ¯ê²ð¼ìÔ—oѪ˜/zOT–Kð˜=tñE?¿è…«|ý÷•àïî±PùÌW¸ß³oLM‘§jkoÝÚ ¾<*ïÕÑá‰Ìq縓òÊ—yéU§EŠZ'ŽhŮƗ˜ZGöžÒ{±_¯4·µ ´uz—ïBVðè£T‹_ÇF8æ¿{ø2°’9ß°Œ½$À€—hù!+¢ãÿ»«”e¤ôÊ¢hYÙÕ%e¼Ðj×0Áè‚_åE ½Lü¨S_Œ¿jb¿Nú§tu-©rU0»þ IA/Ñ·¥{t÷¬ùB30쨧üâÀ$\ ßvèÐsãÒåN/º8`fH‹ª¡øùü}n3tqƒ_Û¡×ÏæâKmÈ·Á½N|!ŽFB9;zÜn ˜æØ£¾ök®ÿšÃ0•4z6<ó¿^ûÞÝÖ˜>Or~¶ûš§‚ÇG)]õÑeÛ~‰ë¶ñuÈð ‚M‚®eQÏ%èŠâ¾ä•Wmø¥ŠøØ£ÜÙÉRЃõ¢,1›×¨q_ì;ý² î9|Åm~Dá+DÅŽðK‹MÌ õØã¥gýȬ$TÔÔˆÛ¢Œ¡¤ ÖSüöÛ%]ðK^È&3Z0–:t±`5˜NyaÃO¾ÎLmtêäôÕõõX6™*`¼в§ ééBÚ|Q¸ºIÜ—[á+‚µ“ñÞÊ}- ™ÏJDæZþ·æ« ˆýSL°†_­, èê¹#(lðШ:) 'oSÚ ¸¢½WÍ/;Š~ÅÀ/&q;;Ú¤« é¯fjºÚ:º=Máž;wÁ×@·Y“qbªvá½ÀkÛ¾]é‰à‹ÂÊ#¸–%.¢$ ÔÁ£ðkKYm­[ÖžÜ_tâÒ‰B/ÔÖ9aU¯šÂñÇmz!¯÷²r™ßB±½s\^¹qãz´r%oúЪ°@*À¸…1>U$/ ¨0˜&£hدÏÛîKsl­eSˆa—ÔHIˆ4r$îÈá>ðåå—®”cü¥“Ìh$sh8vÇ6K ÷e‰ÛTùvRNÆ=½-ûEpÊ¢§/?ópœ¬ÕPRV»Ä²_kËà×–-e+±_Ê}©˜Æãò®q–•‘ØH©[R_VXXØMê˰Kð¥?_¾ SS˜Þ!øRþËOèU¹4衪¢qÕ 8˜äoˆ `a¿¸ÏKpº»Ô¨¥Â²ÛNÛ×]4¼€¡ñá,ÙT²óö¼¸Ÿ[£Á—Â}/T½b麈uƒ_»¼s‡b˜ŒBòþdWí’2H•uíÁ;ß!÷eô¦à«Ó[e¦‹%ì&ÑþËiû¾Ä{© û<Æ¥wïÆàU5VV‚0.«p1ÂáY?oª¨%å¥Qh·Í÷ÑeÍ.àEðH}×\zÍ>±è¥îmùæî…^Þ ­þÙ/³±ûj¾(Á9¾‰Ö 'òÆñ˜R-ä7_ì‡e1pðõì—¸¯n_"_|±™s$î û…ù2ü*)ååLÅWVÖŽ,i/,ù´Á:kì×#sF)(Vîk~ˆ_WŒÔ)ôòQb¹ÄþÎ!WMRƒuU8sª%‚D^Ã|qhìâjÿTÜ×·4¾†‡2{{¦ËÖÖ¥ð×V%îÞ}hßs€ê‰'À—‚×Qéz_TTYTyô¹}ºt¢|õ(÷•M㜖|}‡#$ùT¬_pVï)Ë~Í5_½RaßÖ ¾XùLÖQ„'¦Ž·¶ž)¤îˆHg•„Ž6¾N ¸ôM$ök‘ðk[ypñX7…ªô¼of³3Òóyc™ž¦ýžf“ >>u9ø";ù¯~eú É3c¿l~YÅ_l†_”(} Ácï(Ãüd™•û_¿ze[DÇ ±_Sg̵€ ²è…^ºýe”|…'m;“¸‘k®§˲jmE̶*Þߨ.J@ ]Q.ñ%.ºËÀÑ£ÔNèåÓ>#_*’Üb~“¿= øU ÃÇÁÎÒ1¹®üi¯L»Ú¾|Iøhñ«xa|ߚس#˜+*ïôÆëwÜ—2ur0¨dêܨŒ¯ñ£æ(_TaÙZc¾à`ÄŽ$õH~­÷µB»¯C»„^ø¯´˜ÂÐ-ïXqK­ Ç™”uíÚ—¯½ãë¾~ô£o›ž%†3šbšg§‹•÷Bjö>æk×nŸbÁ¶âÎú p+Ü‘.-'zl¦šbUØ.òNâ4öKØEÜ(š‹¯YEõˆ¬½oÏ/@ÎüØ®´Aví¿†,û57zœÉ2_ôåÄM†K“†qè%íêËVËBÙO¯Ðë?Ú¯én5Õqt½¢ÎKŽiƒ¢¢p_ÕAÕà‹­:0€/A°¨(·ÔL0§ Ǹ‹8¥í²íלÜ×%i‡-¿°KG_ðË;ÕÑœrýãÏ4Ù[WÌ8r@5U[Ïw,ÉqºÉ gËCd5y¾·àÑ!å¾t·Â³}Ë{&+ÊÖžD]ëWì~ z)N½&ô’ Ë´½7øz|9z‡.þÂÏÏÝ…ýZÞr`x‡#øðõ,ªæ.ߨ¯¹æ+‹…8HRµ·j¿©¬Kë¥ö©~2÷I‘IYî$w$ù!1_3£Gƒ0_‰1ã!ÔùGv ¶÷75·›èp°y7ÎKdì×Õã׿4ÄÎi%õEF"ø‚_àknøèë¾Vâ,Zzï4·Ó€õ ½˜¯íIvÊqZî3|T_+Ýr_,dð•C•g.môªví¶ñµ–wYhã¶e1¼L‚\ee…®†C\…1ôœ LrFPº-øÒ"ó%@D–ýyžYÐPFIü— ì§h*vŠîbŽ3½u^°^'µïñYImGÜõø…$¼ÀW_|ªà+Sµ¬!ïÐÒÓ- Å%äD¸KÀ×Z‹_Té9nQ±#è_Ê|©Â{B •¼_PX˜±¤¸JG†%…8öo}ç´‹Ínv:\ˆ+ sUq$iüðð¤°.ù>†Ø0…w«ÌØ/q^@Àë{³ð5;,Df¾a–oéØ÷À—’>¾ðoí׬:U[B¯y áäõ$,.á`¦ª3æjø%­'À× ;)œà6×~|ù”ÛÄ“©çG¥ñ%¡#ö |55(|!Ð…H_@/ñd´¼W ÉPöÍÝÓK£¡—_;ÍóÒÜbC¾r—Ê:ÅåÏí“©Ú:`D¾…öÿøwéyÁá•)~±ëcC“ƒNwm—®_5Ùc#/¬2Á#Þ™ß×cðU¿rÅn«³ê¯á¾¾*¡—–ů<^FËG$x<Ý…j[–ïu„÷¸“Ãá±ó˜ÁÇ9÷ù4!ììn£:k€ù e]¦.Lõ“ùˆdq’l‚ïP‚+ðeóëÕ“€‹;%ÀòcáW⊪òp,§³³‰¶ø â½0_ƒôÅðÜÁ+´6· ´è7ÀMf§œ„)|5·µ7O–„‚/rlȇ^¯úL|4öKr_Ô51ô8 ¾déÜö©ö©)i`AƒÄ,áøzeÐc®õM/ ¯ÇÁWeN.ü ÏJZ–¶kÅF½dNpY›¾H3¸ª\„’…DVL¼IÛFñ[ (l|!{Án“ýúíxE¯T _â.ö² Äé@A4“‰ARb¯’÷ìVÒ¾€ò²d#Òéë›q§–sÿê=—Ÿš©äe»`â£Å–ÂeImy2®B ¡—*¼__(u+C³Z¾Á—UzQMD±n!£à¥Ëªx]²ŽG烇ļ4¿ú¬–tƒ¯l¢ÌPSµIóU^^T¤ðµ{ -äû’§I#»Må„Ì acl’ä=ß&S·ZÈ=´æ^BbŠ( ¡—Hf÷ñ²›΢àÒ»767~$x´¥ýWv~s5'{Ï&¥¹çø{’Ö+Ï£DfœðŒú/ˆ”ûº¾zõNÂG%›ašËoûâ+¬Êˆ¸…ÛÒƒYË¢‚ª1_"Ã/·¢î‹ F`¶À‹qêÅða¾^dÏÔojƒ-_帯ê\ òöíSîkN§ išsëyýƒà«>)$oß{+­N_êÐ’ä ¨HЬ­káí©Û#)d¿ž{aû·Là 2%==ÓÓ‚¯ºués/ö‹èñµ—= ¾Xhˆñ6µÞLðE.Œ2:GþÈåŸÌŸ7Ù…â[Z†v¬héÉ Î ŽŸ]zÿA}ñéˆÞÑIÖ~Àã¹ zŸ:Þ?ÀC·;‹²§É¨B©´·§Qó”^õu_E—OÄ4‘¥Å€uòy»ÿ ]é›IÉKëhzÓ{F›Á×c€—„cš]ûžæÜ>…9˜Ùøk/£9øÒu«e-=”¡=SS˜¯Aí`”“eï¥që„ÇmVé°‚GÛ}Ͱœp1•ò{ë¡×ZðU\³dmUãW貘*aAmFEFmF!amè²´ª@’7ÉÔ/óÍlYƒû–›y"Ã02ëÉ}KjÂ!³…†äàS|ÏÛøòåßþþìÙßç[¸NÇ9 Ú.ï=w@ÁB7 P}w±_÷¯ñíìÒë‹x) ¾4Àˆí)ÛìÊY£ªXi!éûдªÈ¤Žœo|ûÅjçßÑø2ê06RÏ2Õ«Ã?È¥ê 鵩²²ñ¹m»b¸ýõHº¡ŠÂ†;Âq)´ƒ”fûÒÁÒ/[¦Kÿ,íÔô‚_3R÷Ÿþ’¦×,|iY§ ^úTî½ö‹q¬íl¢Ù¯èÿÄ/ô%_öÉgCÞ£ßÛ{ã¬Á^þ^ñãxc¬¾¾¤€)÷e襴ÚÇ~)|%yì6Ò–MUK€/±V¥€Œs76ˆªE*&ø’-0RÖÈVkØrÜ‘Ë=mæÚ¯Ÿü[|eÑmtÓSB¯§|ëî9‘BŠ[ ßËdÈמüñºúÀ¼Mûn|ö 8å£jç’ §³ºF•.òa¯¯Å‡ôó—W )|}Nðu*syßôt¨à«~ÝÆ—ŸzâPÑ&ôÜ×-|m¢©kyˆÌAÚSš®ñEìhðõªÜæâ‹q ª1+*ZúõäªE/?õ\ó ÃèZãÈãŸÓø:´éÙùàëoGæû=­ìWqíÙ½à‹¹Í!Ikðñ£³÷“ÝÁÄ­¸/4:00Ú¶ŸÌ=ã…ž†dg6?¼eéëµû2ôÂ~)qj—¯ª‰Ô¤·±_!ýûßÄ-ºOPF;{Ä6fÓ}g©ÇRëÎ0Y÷¬uOÛú·¤¯Ðø¢pÂ=Ë|ÙüRu_‰w¯Ê¯ÉÖ=Hú}‘ùhjmmr&ÐìšÀõæÄ6O·ÛNÞû0i쾈«$^΋p_ª-wñÚÂвtª j‹– ¶¥Põ qE†gIÍM¤Æ×KlÜ,ûu`H 15¿ˆˆÄ|-üdÜi&Žñv.iàߡ'F¯7”@0T[Aï9Y·}Çë¯ó›ÃçZ–ŸËÍí“v¤¾úFZÒ]ï¹7öëîÄ]J뺙˜C/'m3Tî^W­fHÕJOÄb‚-ñE6Ö)ŰVEai•§‰Å‡Y¬êüù‡dÚ#áøw¾¾ ¾Nù5˜ÛòX1_Š^!›Š„^û —˜ÙDÁWF­VKIT`ž¡3ða)¾KÕªÑ 0¾Ñ#üB¦ðëK_ØÌ¢_FÖ°A81Àe'èíž9¾t³COð…ù²è¥4f'ïÿKú^š¹‚ãR.q»rýæÝÛ̦Dסyg‰àñú _Æ{ù.œ¦úMHÚÞC)ÝpÁ˜RÂzß%Ü‚`-÷½\.IÈRo¿x‰Öp‹Uø:ü4øzÉá·s’÷Hðåçp…5?›÷ÄS7îA/h%¼ºÃÐ-à¸@ZL²b$ïëC+ïݸrcEo¥;‡t1K¨1‘¨Nì¤É,¤\,óÅ×uw/-L\KÀÁâ¡Ê´PZÍWV}âÉzÁ×Ñç6UÚT~)¯èR9øzJ©hñâ¼%Cà+v²WákùÙ#ެ’i×tGpøä´i²ï?s²v*C‚9Ò"g±¤êIS¬51HÝDì“ÕÙà‹Ÿ¬/h¥žŒÎ}ÙÁ#ë˜ ¾è:ã¤{a?Ë`ï§oAÓ« ²t-eX¤¾Tœ·Ç$ïÅ›±Ómu°•õÎî””à4¾~Œýâb¾²è%¹ûƒêxñÕ.ß|5·2Ñ¥)œÕ¿;ÚFX%$©I_ë»3+¿w& z¸e´@ák­à«Õƒ¬ŒÐе81ø¥q Hè8Ô}E'f=î5`ꨯEëy £RUœ¨Ø1ÿ“qgó[Zj+ø×Ét‘YáÒ!±¤Bb¬W¶Ó)“Ä_?}VÖòkhéÛ1ï4˜b¢P_/øXÚ}!Ne3o‡»àk´ÌlpF-([+©/á—8 Á¹ûD‰-ØT¯šú/Þ.òöà+œïÙÅïûÂxÝ£c§ Øõn ÎàºpïÞ[Wþüãß­<ºï­?½¶ÈfWM]MIBx`IR^ìBòæ°’_—SÇ.mØþuƒ¯a7˺¹Ä}Õ?yð‰'1ø¸ëо}O¼¼NÜ—¤»öéGðEf_á«2fáßžÎêÃ}¡üs‡Ó® øºõwvôh'îxhˆšÑÑÙOþ xIÁAp³?¤õfšõ””–¦KêÞÐËŠé{¤ù¥¦-£•ó¶Û¨øjn% ÅÚóϾ)¥g¤…E«Ðˬ%Û¥ð…hÏÊ7ß/qa¾Ð"ø…lp©12÷â¾BËÛ¶"ƒ¯)îÛšÀ—4¶îìp:›Z¬è©õ…ÔêŽãt%”…’Â\é‚/2÷Há««† XÆ–U*®«W¹pi@“¾J“¥ýîë%a0Û~ñ@7¢ýÑBå¿ØKíŸ{N¼W5K254”4T»¥¬?’Ö¨%ÜJ(óËÎnøiIK˹†äìŠKçŸR¾òûz—«ˆ1q0gTÚëhäîh[ϘV[Ž&ŸÇ”‘ÀÓüBàk Ñ£±_ÐËÌ}dÓ½£I»¸\¬]¾‚LÚhÝí4;’¶àKñëG?2ëUdöÓj±-Õ¿@Óë©Ct#QèRô_jvçB‚á’°ìð¥êŠüSó_ç}û:'îK²özË䀼Ñãô3%:BæÅIwg#øZ²j•¦Â)û·ðYÑ£IPRR¾òTdÇÖýo¾s^ü×;Ú}©X‡7AkÄIf´ª„Rô"ldL|÷î+`e2Þ‹Ÿ`|ñÂâøÌ%QNü—Cøì¬*3ù.âÆÿYÔD»T”bÊ–6¼hdðE ˆßÚ»wó3{#X8),`8( )zÍ^R×Ï<óȘM.;§oð%ZÍ.ý¿vÚÑ#|šA"s° y¯óEÎ^2Ïãæ–|™FølׇwzƒGuCr´“÷÷=M á²’68Ò†¹Y¹ElÜZ›J›Å|±¼Ÿq_jç6<;z$õ¥ð5?éè…[E _’¥?q I²žÁÆ÷ðbŠ.]*zë¢tâõ‹Š.|õøš¥%É¥%Kjt`¾jõµ.ޤ¦>:¶ýÏ|s÷•L÷”Ô3Õ»¾^üø’aÇu<:øÐÒ‚\/+i|å]øê–‹§<]^|Íë¾zumF$¥7UU 2|£ÇšÑÝTd5·7{"›H£L0ð„Þ9s|jSó+7ï÷4¸{zKLð¨Í×\iƒ$lI\‘Æ‚ÁYÁŽ6Jº› ã@Óoî?.joC„zø/ÅN ½n‚¯‰;²à?±ò²Ý’GgàQˆýýï+€ ¿ôÉ÷7êòqþ‘ã˼]*È­Üià@¶K¼ºÿýýo‚¯Î~™>MôèSäÀ”íñpÆóM"y-¹{¦Ÿe:·sDn"h‚`rQÀä¢LD-ÅØ$ÂÄ‚*S‰òHN㨊Ì!’Š×e­Mfжfçdt²ÙŽíØéºvÖÙöÙ÷÷<ÏË ¹Ë÷}yÁ”€÷ý¾¿ÿÿù_Ž t &”–»ÕQ)|åî^»;±ææÞ½Œ›u½äðú¹QîɓǨ¡LµUã^\e¿<‘€jo¦‘ŸgðÅ‚~¸£Dôhfð•’[@`Î̯ˆ¼'­<ãMÌE§h¢@—ÐæCÌܼaʃ/Ε*XnE¦KÑk&fàÍ×ú‡’zRdÏ«/øZ[7·íu–fÎâ™n#QÞ™«žù÷»Ÿáɘ“ÍALþ £¦ ÷•L Þ2²Ðº/Û³ ½bs@šÄ«–w6³ù½âV%.Yû‰û{_Ý´‰³Ç]7Áâš5í½8[0ÆÏp´èšbð ½—A/ÊÊ%BGáKWƒ/W¡»¨Ä?Œç¸fHÇÕ‡¬¿ë“v¤Q:5bW‡™ ýȪUg§Oˆòa­¨_buˆ :;6–œ áâ2çŒ7 }¯äÆ/7%ÿ1œ2'ϺA®ÏÙ±«Ç ½î:zôº/¾ß“ùøÊÉÇ|Iù L;_¬ë8ãð5Úq³ÀFûL+ÜfÓVAЇU0ûº+ý}0_x.ëìÙ‘;ÎÒTG!ùše§M¬fŸþêR-<&wù¨—^ÏqÏ=:téâðuµéµ>È[±BçŒOÖ6\ŒÎoÒùã;ôjëS‘£ÃWÃ/>ú§åó×i½ÑÆùü4±+™¸®$bª+¼_0æéóà‹¾$Ì×½›o _YàëEÆM`FÖëoþbýìåOÁ*è%‰^_¬ÚÎoøè!—Òã&Ì<`S÷à+œªñÊxžc§Œ}dþˆÆ!ûè¹u|#õ•—‡ù2Œ²‰±ÈñnŠÅ×|!‹J/ÃÐ)›ü¢l•¼+Áäžða î"‚ô÷!‹/xMß¹s˪¥ÒªU¶° ëUHñN.K…}˜É©Ò ñË™« ¢g$à%Œ±Q€Lûvõê½÷ŽÍiz’¨±v5^ E+Oà·~öªûúzÉ|¡o¬ýèØ‘ ÜòV¡Ù:޻ŧîúÂcûÀ—Ü×äC‡È‚|‘2 H¥I²bÂ×XãµcäÔÕÚ¼†ùmŽœêø5ëÒ3¾ñk—äv?Ñ¿£?zßV®zS_cz(õ:wòäÞcfJŽÃ—®+û)_ý\9ÅCýx~”$g›úØD%ÂŒ­…8¢?eÇÀWR\\e$+k;z>¿ÃU8øÞ®Þ½â×Áu-ëvIDªcì±?µ¥Äqêˆå((LI˜+ž` ¥õ³Öv `¿D¯Úe†ÿÀfð²¤øèŽí}¹nÖÔ¢~^ö÷êôÿEŽ4uŒgìÄϹðö$ºcºðÚãJ«„/“Ù›-÷5ZÝ+_Yñá1‘ññµÚÑÁ™[]¥áVD#Å%.L¼™y¼:r·u_qÔWÅsÄ—91®(‡½@k‰T§¼‘Ã` àÀºt¶uªÆ¢òÈîÍ›paà—FP“£6ŒÉ…gŽ÷außfW:±Ÿ‚cæ=H9e~Ù_ÞÜ—©~÷à+…ü—:ªËùâ˜-Ç­f|ãCó÷“2 nÞzìQÿ1–Ö’G¼¹Îد5^v¹ñÎ÷·Ý³ø^™¯¦ÆeMyee™©LN›’kÃG,2üÂ.š5–k'ñ\ç)”—”¡¾GïžZ½-àüq¤%{Àñ‹%µ¦’~Õ3­($»¶0{¡æ¾gƒ/fàÁ1”â—¹Š$¾wÄ»ã²îë_D§'Ì4 kÚ¯5Åîž½+väÆIø’|3ÉÛ+}Oþž"ß±’H7–«ðEðhðåäM~¹©«Nd¦"! afKò‹/ìW[w<ôZ ½@“%Ra*»2 CÀW!u«ð+|—÷’æ<ú(…_’Ë€ñ4— Þ& adÉr®B᜼_0¯a™¦} _âØÂoÁ/+î _”Ý7îø‡wvÌÿ_äk+aRÝcþõ?|úéçž[Å øbÆsÏ­dϸ ÁbOÇúõ³)“ûâvÙ™÷ž]µ{žüàƒÜëáád_à×Ì™—¾zÔ7}wI øš<çžq|o©ýZÞ²‰w¨S½ùá—ïöÖ›ÂaÚDôçu•š¦íœ’g'㉈¢âÄXOѤìÄ”ÁÆÆFSnhðQAQB{ÏÏU„Þ;yvøµnQ%ιæ‡lâ†Øñ®¯w—ä–d/ªÂ1WƒU¨\ó4†ºÞzkù@×P-/ðê·¼ªHñ«Ü”/›RûÐö&&®’¤_ÚÔÚ“Þqì¤Áý€ûmA•ÉO=ù¯&I•—9'(Øâ+ C'ze@¯iT­Ž–‹òådˆ³ + Íï–Gnt×V®¾¾”ÿ"ƒ¯ôÎÌ¿Z¸{-V;Ë'"3'®0=,¬²é;þ$AU¼¼» €@2"^sÓ™ÚEënÒzs/»uh–™< Äž¤ñ7cl‘ ß±<’ð9¥‰_KJR²7ɧ”oÒSx¯õõùy4›•wü-Ý2‹k?öK÷¢«›;î47ÎÒÚM½»nîZ)~­™9‚^_3¦GHU„÷ª-ãä±,0“rܬP) &~iFºv:N5ãwúšÖ›˜À„Änz¾§€BørwÎþTô¿…Ö¾ 2^ÊbðŠiNŠ™úÆ4èˆaM”pò”_KçÌ5ÆäoU{ÕžµüzÚá z! Ðg„¯»Í—Gn7¢®ÕÁ™WËnQô¥å8F.Útîë‰ÑøÒ›4Æá«#Ð(2Òöþ¸ôÃå˜.×mðµAø¸ ¼¶œÝ¹sõÎHæf0>ûÅ15À—ßï£D]Nöû:«éûŽ`à‹Æœü×jŸÜÓ´ìŸ&çE§Ð?Ø)9’àÅ›ðUóÔ?üò‹ì\q Fzï>rŸ‹ãócx๟®ÿGàë‘ÉÇu‚/Ÿ\ð¿Ì¨U°µqýl v˜ÕBÌÑKëjݶGŽ V¬½þh<óÃ^W¾÷<øŠç(kß6ß¹Óç.æ÷èM~ÙÔWAOç­;>Wh™î©n?ùªæ?~±µZøJÇ(†àʰÛ_åó½Ìõä rìëÌA'Á£_Þ 'šîÔóÄxëå·Ž‚¯†<%Jƒ‹öðdŸ&ûU[äÆ7š°]Ìg`ýý,ˆ>ÖSyç:¦®§W:‘ ½`)*®M™1šþÜÞ\.¦)k/qÔ(`9réOáf4{†ŒÆæÀÌHvwÔÞ4$Ù;žäèâjD¢jÚ¢ÀxðE z¡?âÐ1ÔŸý $dKÀ—F)á< —±é¯@.&ØÔèä‘7™ÈñÙ0ñ`²Gñ»ûYg@ðHCCÙÒXÔAlÜJ𡼈>Ä<µóh9T”¶–™/ÑÁÚqÌ2xDÿqQ;Ç,íÕ„¯×:Ššqä~‰à‹Wì—ø¥d¥“ë¼`µYvš×XSÃ+Í r÷ ¥™AtÖ'aÅs-¿ø¶ê8ª­8R²›VÏE>²_૬4ä­ ÚSéÕEŽ#øõº-t züè³jÕÎGw®®ÌJËV˜/ÍCœQè=@ö”¤éá©–Î¥À|®q5–_VÚ«&Wä¨ò„¥N~ B£ùå‘gP4ojOfXÎí¡Zñ z9xqq¸›< _£<Øë¶mûóˆp)p:×\áXj*“»â(a5øš.|Éom¡©pu"Á ¿B°_¼Ò…§º¢ÑÉ#5ßµm‹^“a—Á¯{j?_0ËH}Û—˜5’^èdz—ïøÙÏË®Þ%úc­”> µÉ/6u\x๳´<Ê}ÍÙ¦‹ðóÎ ÕYF$R=dÎçÒ F*¿åÿ øJáЉ‡kš‘øJW`ÞÓŒõ¾FaÖóhWﱓ´7<|Ï~ub>§Þ׫JÉi%Ô7”©%˜:¦|z>.|5"bG3Mz¡£vM ÛqxÅ ÁüZ ¾øÿníH‡^y®\I—åº].wÏvG+¶¤i*™Ÿ"y…”b\æˆQ% Ìœ[tñ'VÉšýº?,“WˈÛðÊIðÒÅÊ%¿NIÌ-ä) ]ÂØPÉ»ª…øNgsffŽé’ì{¾trVhÉSaoݳ|)ûCÖ’1 Ì~_ׂ£Û}µä',³46;9w¢?ai‘ #.â®xo'ÃÕcZ«òós´™“׆<ðÅ5µï¾¢«ƒ/&¯m>FµKÏþþþ­o£-¶3˜âÈ–×^kâ_bcQ'Òe¡é> õe U”®ÕSW,'„’fþó㨑oðÅ?#|qöHÛPyмW/Üꇴ_ë /½À£N8üË)W :ør»-HÏó‘)¶ÏpÕŸ"0KÎå€A)X}G ûåö¯¹¾!éÔTŒÁ´è“Ù¾LJ–ÃT—$T:-2bÈE@É"ü–½¨ì‹÷ Ø=t„•·ZMËþn7/$ºš}>“9ŠÈ,IK¦–1ŸxQGü{ò‘n!¡WTU©&•\4*âè_[†ùq#Jôö“ÊÈ÷O:·‹Ò¹Mûû¯­Ù´n¯&©¯5Ž[Ù=WøÊ©©]<‹|ÇÒ99&'G D_¬Ÿ`à6øâÛd<ÙûÔÅ(,/¯tÉ?~§dânY|ðµt_ËXÓ;³©ôâ‹|¥$ Àbµ«‡è844“BÎ9ji†_¢—&áÿ‰zªÈ¬Ì#4œ»wðâÝw+î¹XzÓ£U´Ž<˜sfñ5²ÒuNŸŽ¥»æ*¿²B;âRcL·"I¯a~Õ——S÷%|Å[X­V¹s:rüâ^|¥áÓð}"¾¸_ßu_®M *~-ÆWX¦ou^­j»à—ƒ—èeñõ³‘S _ž÷òÏ~•Ÿ)rE9ºJ4 s×þI`¼'w¿à ¾9s ÷õuO§Ü©/“ðú€hQöšöõý_|Dé„^N‡W4f*ØÍ¸õ&Ì_æÎ:pàÈ'‚c~x; |÷äîÿÀ†o𥣙ØQŤ0†úf?´¼÷![ߣî+¤P¹¯:y+3îî³LF½uqè'|mÌöÓSÂ?0>ó³®›Îd/55þ'ÉÔƒ/Ò_ðëUþQþuº _¯ž<ø¼ÍÝŸ{Aüºö·?ZÓÚ”÷‹†ÆRhU:cd¨·Ä$u¯²¯I Sºy­ïÚ¡vná ÷µ¬ªöðާ&÷µfÓ h%jiíˆ'åÕÂv6BÉ]-íöyÞ¥ìºÝ÷ØTcðÖœ$|%«¤&¡•&…3fÚ%e“Lë6ÃâŠÂR™qhðuŸ·æž»NþWn6–àgð`S§•„†+PäilåõYŠg0eu»D35‰O,Yt€¼IÉo‚G"ç«hUI}7uâNôV³‹_åì~‰¹…Yå¥ 6ËÅá&‚Ã2ØÅm)‰˜/»R8:úbpõVlÖ›ßÑÑDf:ÿÏ÷nêíooßß¿‰&):!w?_“o7¶L±;;ê|«ÇGŽ7enjQkŸªRH|å’ :˜`;Îßt¿ÓÊP‰ùÂ}å5…¼èmÚ& ¦{FæSVO?+ÁšŸ _l3D¹iàË:JÓ(ç‘2àWDaéY¿ªBèýˆ‰‹K ¾$¶rÃ+ÏÌ èå‘eç¯ý²Bîžó^ö29&2u²jucbb˜›þ oÀ9×wË(ÒµôD„kÔïÒR/}²óìOŸa7iœ²“_ñD“ÓŸ™±Ms7ì„[¸°xÇ/Ó¹MÙ^DÌðÉãœH—¹G£s÷‘/É‹/†º]TW¶Ã—I|9`07vU_OÕÒ¯íY­}à»Z/iþjøýî¸}Á³Ï1­p±ðu}ÌæCd¿ø¯;óu˜1ð®ü¾v»æ® _ÀËÑË•²fv–°Ye÷¬¼4gî¡ 6?peò†åŒçuhŒÃ×ï™÷k徎}iÖü´¡B½©‡‡3ÏZSîW×Y1‘ƒjJ#b‚+rk&f?NËPvbvÊPJAäÆÐÝ®RBV3™/6mŸürÝÁ÷HýîB¡è¸—Õ§¼?‰lîþsž+W^«þÛ5­ ·?[5Zf²k$Tªy0X|ißürÞéc¹/%]>Zq˜Á—ë̾G]aXo‡ÔB¿½}åÊcûg™¯5 þj»]ã¶O&…”E\­?Ðâ rÜcž_Ÿ›­Ó;r}Qœ(]J”‡J ÀW&\áK}Bzs s ØÜÌÂjøqòS§- HÎ%'eð¥ ÔâàÑd¾4*ú/Ö nÊãkr¡ðµ$k ø’¸¢UÍa_7#X¹O7·|ú9Å"ªxU"/!„’TÕH¨A–Í ey¯å¡2ckT Eæ«xá½Âîyf–‰N˜`cÀhp‹ÊÏÿàæÞ^Ôzîæ^Šÿs<æjΞ¦Æ%„ÉIeùAL(½wCXX^Ôv`Qç=Â2Q¼ÿÔ‚&d4cí£ ž÷r_ÝÔÕT€/mq±ø¢ÒmD¼ÓðË¿"kIq¯´DÉ¡&¶Ô³ˆÈÒÊì¹a½îíÚV 蹸7è%iï[:| ÷wOª2Vä°™z ¾†¡gñecÇ»HW¸º¤4”¼ûd¹¯ñ;O?öÅ?˜hÜ©%ÅÓÓOö zMf{Kf?¡ðKq¦†QK'gZˆ&F̾`à#SV7xD6ÑÖ†(p4[ê®R#ç“}qÅ Ç/Äù£—Y?“s<õò£ötþãÿ«’œÀ©ö÷øôëÏ>÷Cð5|m³¹³sÖæÝS¡—3_à‹±z™Áï÷Òè1G/žÑÁ•Y»™Ú ¿H _š¦<1yÃΡ«K©„yÝáë÷íÏòܱ“ÇZÁ_`σ¯_eté§Ô&„tVfeg$§-¬j¬). ½¼„CHZ…¯yÔz ¤e¼R™îSx›W]ºSâ"#ƒcšoþý_C*jGw1Q^Â䃽Ð×ö•ˆ¬Ê®Öþêê5­Z8¾Áaʲªe5±Gøz|¹ù_܈_O!ñ«Æ´,Ã1ê¬ëJÜkq[ZÙîÝ-8hÓ¦ŽŽT›ÇL6+5Lƒâ`HDü*Ê,WT”Âu‰`¤‚°)~‰É”J+Ž%ººË`1ƒ¯¯ûâŸ%ò_ÈM¼¿Ÿaó=C"%ûg%¨Ž@ø¦WÉ+%6t|q½²_»K(öάûÚMåþnÙáˆÛùZà­p’»ž®í¯ûñ>Ñ:xlNÒøT?š*f[ŠÇ U)ÒT»,%–€®4_¡#ÉûÐpßÕ÷Ü;×—þv²ø_Dóó›÷®cnÇ®–ƒžt}Ûèøh|ÝoñÕPÃo@s4•Bc”cEE\Nýž¦ªäE‹’¯eNY|φ#1¾Ee~K4Ù¬àÞÅ‹Ça3À”Ûÿ1Cüº{ Ø%Ë~¯øºÎ¬‚NN;–/Ç|MrôÒ|6Ç/è¥*VÊ¿*_ÉÊJa5 ¥QIqsL»$e_üS_v[šZxÞ>ÍmÎk¤ÿr!¤d·‹‘]¯ð!¹ÁK_8+ ›ð_–^ž¿6|ôzcG½sw=G»K)egÝÌ}îò³¯Ÿúxgd\æ8AÁ¶Ž%•õÚ@åĽS–.}ûãß^µŠ´&fÂG‹¯tS„¯É«#]ìÈ-W.º£ÇÀ(Ò!~U›´B¥lÅ27ä X½C·#U÷|øÁ“O~ôŽ_2dËç…”þÿøÚ8ËýÂ.¯U´xü”{¹°yÂÔ’€¸À¿ B3‰{8¾&/™.ù-xæàÅq‹ùjˆI/<4“—²g,À}Í ºÅÖŽ¾n/Å}Ùa@žº‰¬sçNÛe°en$U˜Âoö´‚Å*Ÿ¬:ðÅéNý<ìâ¡tu XÔ5ôøÑl>8š\œÍÓ½ŠìXHhfdL~ÙÌ›Vêé¦j'^eß—n˜<Á`{{ôxˆ3ÇcÇú«·þí¦Fíi¾Úå·êrø:jñ%/_4²P _D¿šzo²`/(‰ßÒÛßÜßOJ§ÎÓ6$z¡í]µ”†5«J)+$¡žp‹Júæf⚆†ªÄŒ¤º¢Êɯ//¤ÆªÓ%™uãðeæv=’ü’ÜÑ#Æ ¾˜&ÆÔ%d-O_è/øçK ך†$DN+(,(æ¾pcªÜ©ÜW4•µ†hͰºåÚVb@RãJý¢´„ëO2ƒ¬I.‰`MËf“N§äkË ˆ™Lè“©0%ò›ë{šáÌ/~ÑØÂ‘‡Üüü…µ8|½ïòTnsÒŒ[àkktC ¿4…ÌeIIuMU ×åçP 6§íP…øKô}–L_Eˆ6¦™ÆïìØÅ~©8Î3öK_ÀÜhOí÷þhÕ¾:ZÊhüK\(|!g½¨+FB—adÀH2$LÔIã0Öå«¿÷½G^úÞKÿb˜…ÀןŽÔ%oÛyóÊÍ[5î‹©@‘••þ¡Ê»Ç+”Dú¨ÔWjä¶3}ÐKºÛ}YG´¶´žÀ‘ I'>>“ÇÁp£V°/„©›Ãd Øôöå/®\~sG–_dïˆÉœ؃_&õeðÅÅ0dÝrI¾šô6Ò{>(_†_Ð ý‚žmÄ‹ÜG¸.>i·n/Ÿ—”S7ŠTÖº;cFãëˆëÚ¾ô§_c§lžy$”ã¸*ú2%_  |)‡hz”˜èe¥éBú¾("½³`æ Iîkuøƒ¯)«ÏZ|…¯ÏÏ1Çù¤NŸ÷Ò ~±V£§<´yÙ;‡k’²:ër©T‰`l 8©éÒÒ¡y/3¶|ñRXÜ…Èæ§X|Æ•5}€‡ÓyÀ^¢SáÑ4‚[|”,¾&ôb¾°I[·^#Y¾8`ν‘£r{‹/øåŸÃ»·øÊ>úíò§ª¾äŸ_)|‰^ýýkAbÈ~……íoÝËÎÌ!v´øªÝÑ„YÀTGD™&À„òª¤„úœ0j¡ãʈ²’gSKš›TÞ¤”‘RHd&&fQ›š“ê‚G+°åR÷2vÐËS9A¦ãhТµ¯Ló/‰/BSRóYÓ2xJ–”$'—¼PX’;‘QÏü1ô²ø¢ÔÀbÊsKøxˆ .úWm&ß.HoÙ§ÅÁAq IÚÄL-þ¦¨zì† “}Ã#rÌPñ&ð•\ÌÀ~ %É|Æé9˜™ƒÁDœ–ô”wD_¬ÚþÁÍÖ•k6;I¹ÞMÚµ­ýúÛgì÷åt?ø"%|-À…¯Ú* ¾¢JËÊjýε!·›JØûmÖœfr_»‡ñ•øâˆÍBšdÁUl”¾¼À×÷–¦×eÑÑOóšðåèåBGõÕË{!ü—º@ÔÀªZÖJ©ãÇ“özé1 û’仞)‹¯#¢×ÿd¿–39½R»Êüã(z ³ lÒ®è^ÒíÜpÚiŽ÷õÙ‘9^÷åHfÞ¢rø(MgÚ"/.|yÝ—ŠêçÚ¶¢Uo^¹rùôÙ-KiŒ_HÙ/„¯¾”BÎÜsƒì½¬Óƒ](Ç«=â¥÷â—“FR©v!•Q8~Ñ_]~Õ/rEëK Ö¸Û}…Ö¹¶/ák©ð5gÖÚ‰ejiWç à_8îXnë¿lädp…VHr_Z;”_Ê|®Eì=åô|í;4|=ýà”þtÐàë}‡¯ß°ø:ùüÉ;7Á×¹W¡Ö«íÁW3¥Œ ¨9¼caHVAEnö¤ÙfI¬ÎÙµ C&½åð¥âUº6¨¦`û™„̸úÆïœüò)ÒDÒöàKZéÁ×Mƒ´2UÊDo½ÖQE=ˆðÅ´‹)Ç/ËEú_pø’ÿâ©“vtàè@í^}!"žMä˜%LX/åêylgæD-¸Æ×ŠÕ––åÄdúûɬø•76æí úá£Ï´–³ù8!6Cø¢Ž |5G”Gs‘ãõß?'0PÍ1MËrˉóÛ>dŸ3'¼>ÁlÉVåÄÚ’i•…¦ Ф·¦Yzùf…æ0:™j¯€À‹EÔó¼R’ìð¾íÖlg¾Ìê;¾ÙD2ÈÕž¾ôæfÄWSÑ[FW¶¶ -kÚSÍé[Ì=©©•>ùŒA©%g_%÷¦5—ÞäÃn,#óðÎç ”T|±¾öŸÎmúѦÞÏoš©9ë~äö¥ýpô¦íoùŽÛºul}d ˆyÄËF52"%yÑ_a) oß®Ì]¢ïlj,¾r˜VJRØý[ÿ«^w‡ƒÚÖ±e_#­)ÆUðhé5Ê~ͶöË^³Ñ$… üïø¯"iÿÜ»¾žðô‚sµÇóºl ª—_쇊I 2Áî‹)Gá™Ì¹ÄW‚/›°]'VN¤Â óxŸs_†9„YTþUi)üŠcZa<'ääº ½p_å¸/JÂàW*átÞ"·8±íìÎ-²aÕP¼¢GP‡}B/òû"½Á£ua¨Ï~_¢×U‡/UÒ˜:eNœ›¼øRó£Ã— ™¡üÚ±|R}þ-jæIÚ[ˆeôä¾»ñsu¢(k_c.üÀâë™ Ç}JËo_¥º0`uöÌËW µOy¼—eÓ¾–-£\Õ~€ÊŠ¢·N©ôa`/eÚ óúæã8sðõÄ”³o-¥ÿÄh|Ñ1}óæó››5 Pµñ¯|µt0ÿ«uì·O-ÏÎ*ôOÌfÚšý¸13Z„¯·ŽÂ=ôžQOˆ ¾’j–½s’–#ÝÞŸÐxØB»²ö’1ÅùäÉ;_Ì¥f4E“Í5µµ#ñ¥$ð\|1ÞY‚Io)z´øZ¾I B—%F˜¢G–…É×(ïaPG‡_l6Cƒß.esx ð•Õ¦|Ò™°ÔYâWˆc3xEÇ”-Š£Éu%$•—†v‚¯†ÿ‰·Á×0¿þľA/&¾áÜשó§”ý¢x•‚yHÔ•à¾Ä/IE°œ~GäuŠ3ÂggðØ7K­ù*Ø­ÐÓ 9f:Žûš?Uq$oö˜à\MŠ_„Îþò˜qÈqãk{¢‹*µe4³>XáJKkR²‹Cqžy†Z¶h•;åùåYQ/6Í{ùαZÏ}ý©Á[ÓܺGºì†ìo _eÆ}©pIq¬šay1¨Z¶,|‰_¹UC~¹,C·ôrÁãØü²=ù 5¬Óa£{ç&’ ³ß—MU¡—¾·jî+—šÍ4‹/k¶éò’¦ûå-¢ÈV³:R“›OäKç Ÿuøòʃ¯™–X¶Ù÷Á‘u¯tÖUÄPÞ5—âíÊ ~e9a1\3¥TzFiüDbßäH&ÛÈ?>=l9÷åðu œ%nÚj:Ò C™è¾üC-¿´]Å#WE±Z%ÀËá+¤0œ)÷ˆ›Zz¹«óagltÃKÓÕœ|Ç.Ñ+ €ñ>Ϲçb[ÍÐ/>g>c(¶caZ^N€…”Å×’R75ZûÞhéæ>Ê Ê¬ôâk øÚ7¡Îß'i¨L#‚Œû’ÝjÊ£Ô‹ü0©íµä7-㬑«¥WSÎÖ­[c*oLµnœeVG¸zéƒà«kè%Ü×Y‡/nЇÖSäÕ’Ó*zýõÈ葽± F–çÊq˜ïõ7_Üyk`¹c ÿ“Rš_’ö_t¾)|Áç_ef>S¨÷·¶®£cˆ#ÎW?$`ueÜ|íYm¾VVÞ5X¥ú}(e­B]ðK€4øêüV&-·øª©áϺZ)–8ÖßÜÂÆÚvñ«½Ù4=‚¯V¦ôŒÆ—2÷ß~;oRn½wz @Ü(žbêÞyþ¥4¿… UËIJ*O(hÛ÷è£Aä́د,ŸT•ÀävéÓñË 0$|I8ß²¿4=Räpdwø2uª,c­ú¿É`DdeÆñ\¬¬ -Ä^Â/!n­2÷‡tx9Sù3ÉØ¯YjÜhf_­=ãæ¿¨©É'zÌISïCM„*«'ñ½­Ò{;rðØ5‰Òµ¤ò2Õfy%zÙª|F]üÅìõŸßáí뛌¼×(C¼ø²Â:-¾€×áÃÌëHÎ@Ârq ¿•Dð¿T,—ìÒ{ú˜Ôý‹/²ûÉ î7²•«3,ÆèH’É´/m–^œþÝøÕÛ41¦/$|Ñ]?ÍSS,뽦͞—!¹QKì ܉ÛVýTÓ½† Æ‚Gì×°ôΜœÓGѯРQØYÎó0²².=€M±”dŒ,„âüGñ£qnÁ™é•fŸÆ+Çý‚]h8„t…_÷7rH¤EÈŸ>GˆU_o:"¾`WìܺÒéƒD¸ã'A_|a<#¿ˆ.3cæFÆs`)hy¯®nuA¾±_ŠtõVÆÅ¦ Ä/Ið2ƒ¢ù„|˜Û`«°+çê-.½Ö'Þ9 ”q^TæÿØá+Ѓ¯K?xlÕÒ±ûæ×…²î­<ßWÝ´™‡ñµçâžš§hÛÞÁ3wGm5éù:~´ö«–Êç¢Å[ï ¬(_ʆ _‡½¸^øÂ}}Ü5ôÉÃßÅ×_?ÿ×x¡/7õÉr‹/=û’Œ:é©£//ìjªMÁ} _ÞÝLA5ø\ô±vŸ ¾®&,LØñá_³mÍ8º½ýûÙ&¾8|õäÞ½Z›Ö¾¤¢Ç;ÔÇ÷WGÇuu _XÒÑoÁ2áëÛ7¶¯ø–‘)º¾ºžZ¾Zà 9x¤ÖÞÜÜÑÚª†ÇVNÑz]ɸ–cÜ×À¼yi¡9™¬i¥JMsXÇäl º”¾‹¾f‡’úÍ}¥®íýøˆ|²÷¥à«"]¥|»ðåDàhÅê퇶»½åÇI²_¿4ëÒÓ4,–ً_’g C™`¢Ìp&­r2 #¥kÒ(Î?4k&­Zס#ÓæÈìÕÍÇÏh/"›¤Â<øzhEl‹ù4uñ¿ŒCǤ(³ ­œÊ ऄ&‰ÓTŠÛʯ$Åæ¾N^£Óòöüâ)ðõõç_ŸÛºìð$s™w?L/šÌ GáW3ø"Ákðem¥ð%÷…\ë‚9XÏFË¿˜¦Â‰è|ú¿šV,™iÉ%Ë5Ú0nÁH³OsE?fê~:~ç>º!j¸HÓB»äµê`àfšýª"§GɈwç‘3Ýûv>Z‘¿ó§`˲‹‹u_wáË‹.½©¸Þ7ž_™)3÷Q¦nú÷0GxI箩žSç25A¤*í.3øÕgKïí‰`^|Á/É'Á‡J/ è ½ªè·#x4å(^ÎÌL.DñfH&·|ª’BžbŠ‚Ó7häaL‚ŸÂ’õëçùضÇé÷µÏ~_¸/òtò[ºqø *¢¸¯…¼CsVpWXi›–_IEEå?©¯ßýñ­ó¢½[#u„±;Aáî¡qJÓ ÷Mm«xeâOy¦†™ø†éàQA#©¡Ú¦OM2«9ܧ @ørÁ#y¯èÅãR=S0A­ÂâסC3,˜z|=óñ€Á×–Qøz~ïóž;Ù˹U?¥öϳÛÕñk/ ÍÀ×[ó¾}ã¡I!X¯)ékãéóf/QÁKÈ’Ër èEPE ݰlzŸ(½À£î!†6Z‡ŒxÏÕ@m³?¼kÙŸ§áýò 3¾D¤z…šÔaV)/µ_¼Õ-Ø%•#Æo3(5yÞŸÿÉ;/g|Μès7rð—¿zïèõŸÿùËým»·nBz1+h,ø[ºL:Ü•‚·Ëùªj¾2 ¾Šc‹ùœá×_ >N1E÷ZXVsÀ»wMrïÜC‡/§¿{4~_E,ðZ21C¸mÓig^êiÿÈø éªKa$[aèj†ä G殎çÙß½mÕxáKü/nøðýŸ™ûêˆùùŠY¼Í˜¹àøfÞ?ÿÕcKß>mðõðÙQ…æt°¹¹Õ ÷k'½þ%{1§tj{Ö[$ÍçÍ3†dž%\WWö_ÎËæø60 œu e"᫪&›FÅìÄšOmìÈeMt@…’ ûÕº¿£ÞÎ/¬Ù¾T¦ÕÒß_^¥x~)¾†ØI§¢K¶½ ¿Êø/L»P•øuøÛÁ/÷’oñâke`$îh‡R'úwñÅÔ¯Á£|W³7&“ÝÎ_ð |Y€É~ÍKΞçÁ~LΟà,ØxÊüÄä®®íŽ^H7ÛíÄ/î8|ŸJøšuäÈl «ŠW ¿rE¯’‰1Œ9MM¯$ŸÂA‹þ„^¬ŠŠ@¦ _%šùuèñ!Ò-3¼:Ì4E¼Ÿj¿¯½¼‘FÔÞ—•à­døåG4Α–[†M'”ÍÝ×ëü‹7ɤ’“d1‰£ÿüOoÌøçýù®u¯þý¯^}á…Wÿó?ÿóW¯¾úéð|ˆ™ô^, »˜è±Ìâë°ì—¾¸Á=øJ6Áã’Á.ñ |!™¯:R_cU5[”ŸWeæÝ`!%ïgpk XÝÀ//¾~Ùmñ•P0‘‰û܉s™wõGL¼ H"!D™D@øœÉJ 1ÇÖL¬î¬Œ\µEø’„/­èð¸/³.ͺ¯ù]û5·¢€ Y‡P™ªî`&¢òÅ C¾@WäØÅY1á«îøˆÌ×艿²ðJpø’G®ÒðOæ®çú;—Ê0K}q˜uœ«ÑÝ$0MîËÏΜÈÀˆˆÏü_¶q[ü‰/„ùR‡/—`«¹g?Y¼uë‘e˜Ôš}iÐKÝl —]ÔaðµqQr”𥼯ŗ١‚Õån¶‚Gšp…EZ÷¨Î…¡·›†º²¾_ÊÓ{!æ¹3èÆaÍ:? l¿ôôÓ.AšÎÊN?Ö{’_à/õ+ð…þÝÒ©÷uËàkkŽ'ˆ‡¢cmÞ ^XR’MÄ8mp0¶8YürøŠ_Œûòà+ÃÓô8,ƒ/Þ†7ÕÚÄ=z´;¾‚iI±±ì ãc‹4B’"¯¢@ÿ$¾G’~I¡„â¡DYK4ÿ(¤’á¥ûhnü.¾tï}®£ðåà…Âë —ä¢ÇÐÌ`íx ŒcfLhaˆ¬Ä,sÇÊø´P¥Ë,¾Üá£ã×h|MTöØc¾&=¾qvv¡O¥×|M¾¼ÊM&3«ò³÷.+ÉŸ„i FŸ¥ _ŸÅEšÎíé²^h$¾”­wرü™s|±•LSÌåíÉÙ{ÌWRfPz pSq¬â†Õ“ëC¾Ï­ñ"ì¶€>ý§ÛÎÒÖ´OE¶PG cG¤=eDìhñu‰]\4}1HùbXEÅñÎT†.E†wV¨ðK:®;§¾úê±¾ø|ýÝ÷~sTÓЧæpð$ù(\Ñþ^Nì:¨@jg׫ð—LZ /ø…–]ØÅCµë¶éfI/i?|‘–3¢£šuŸ’È‚3¿šOÁ—¾Zz7µ|‰’7OÞl¹äi¼šöI¶¬Ôj#á«Lô‚a·‡H‚‰_eZϳkñ{Ó´}Ñ‹+ªb|Õ¦Þý­»ö’º_/¼°nï—-½Ôöc÷Ð:¼]ï9×4$©±ç Ìž&|E9|Á/IG:œWÓOþ@¢‹*á '& ÕBp=)¹;º½oÈç1_rNÂaÞ¡ç¾PAazðÖê 1¯~f^+Ê¿´&ñÞsߟ¤~!T<Þuö蚆’¤By/ ¾1ø’;žÍƒ/7À¾¿ ¸9NÒñªY8ª¡©dL¡Wºì×gáàË9/y0‹åÝ9È:"°¹;/òGàKÄr±£ñanr4]ˆ~9ã&3ó="B‰=ÍQÓ·x+ÁÇ)!++àÖ­‰,†—Yìt‹¶ŸþÁ–±Ó»·m Ç)‰ç;VyƒR½LìhƒG¹ìnmk¾Â˜k3®:hujjú-rÅÌU!~<>‹(|1—ã‹·Š…¯Ë£ðõϪ´gÑâ1á‹¢) w‰\íûAvðµþ,Ë.7YÓ4ñ‰¥.) l`°‰æf£Ûµ] Š_ E9ò-)~GcýN~Jð(ÿÅ!&vN(± )ÔÚ\mS‹SAYŸÖÒQ^«íM¨´qUU‘ÿbãP©‚›.¥ï«ÊË1ÛËRj¾¢òú¯]kß/:jè4Ú¤ÖGn ¾+÷·÷ÚžÇÀËòë 35ìN ÃÀ—¡”…×<†¦£ìÙdk’s ,=\3mˆ%%ð'jHøºïI½\éFï½zmÐz” §æ_g.—û:‚o*á˜ÅÑ#—Έ è èàÏ&¾‚ÂŒáPþfÑce¥¦ ^’е™7-Ú¾Ð|$)Æe¦[ð|ÍÂeÛ?úh™lÉ<µ-›Ž¿XøÈá‹l¯QHRÇ«Zǯ$ø½’ü˜³qàŸ×ÿãVÖíºygÓºW?ýôSõÆåþšð<–ð8åx:~¾ÕÔ65ä\,kô+^2qbrF׊Á®Døe;¡ÖvŽ5ø*Ëר† pŠÐN”¥÷~ýÃT‹™`O?„/½©Û·/=2€ï"Mk@ÒØ¼Km?¯ø@z\eDHZ†É[Æ‚¯9 ù£×&ž$Rx8a_EºÁ×c|qx ãËæ£Ž;v¹‘ÑÓ+*­¹rx‚“1ÂW*¼Ä’©÷z3¤ç¶½Ã“›€€º¾‘¡£s`§¼ø‚_Q…QQÖ};Û¨~'y¢ +… G/0BG£%¢põO O¥;½ÍâKó—.²_¶e»ÀÕLø:ûñÛ´•…üÆr2Zyèõ“_B‚Æ_™… ÉÙ(>0g¬Í(ÓcÊÒ{B+{Òí×:5ãÇv>B‰^[wx8ßBeDü` #ñ¿ Àt¼ÈÉ|ÕµÍÆÇTv#PüRÉzÙY:gÑ9tþ«¯žûâ‹ëo]ÿä“ï=ü„Ã×oÙi+ä¦d¿LJÙïì· ”"„±ÜÿZÄ<λü€—]ÍK©™í£ô¶‰` ƒ]Ú+K+¤ –ÂðB¿å/-.ÿòÃOͦ¢Ç•½ ãv©}‡äQ*S‰ÏØ/]ZIÝ}ODZ2úy·òH}•—R–$6›6¢!8FW5˜J…Q/AâËNYoé¿V} ZiµG°*|­4þ‹l[/ÑiùZ“,¼4q‚„Úã²¼øBßâkÁ]Åðê³l '| åo³]cñâÔ;ª„b8oÇÒG´‚GLQøÜq“7DÆhyt#Í8jå_¨+Ù=U±ã|}Ïàž=i?V™=ùuè%S´¿ƒ>I{T³u,ŒƒÅ…O¥X|™Õ°ü¨Qqˆ6¦•ò“7eòËÉu™ÓzðUÊŠãö¼yÿe6 ‘P—ŽQ¯•’ÇZÙ(xÜ+D-=¨5甕r²Ø¨™ {Ôš¥Ÿ.ön¨v{Ó“÷}D×At4%K+xš/cÀªz×h7Ú&³‰äï”Å·øÚË×en\a×}’AÎÀìÙ ­ÀÍB:XÔÐÎŒ£±ä¹cI¡fϾhx ñ+žd™ú_ÄžÝKÉ} zg¬*uï¥éf‘͘Õf$í!ÝÎÛþ—IleUfÅ,1 {wÃgeîÂ3Óë ,¾d²ŒL䨰‘õ‚˜Hfñåæ}ñ}¦tñH`&‡àKîK 0ñ‹qµà ñâ­Ç~ˆzSÊ|´ÜŒRÕ*=&(xLËXøgc¢@×¹sŸ¿{óUDöþ?ÿïõ«ÿd¼¤Wà+ÂwìVh´5™á×8°*^Pª8EBU¹f2v±ØÉOØÌÛ^Kìè üŒì÷ÒQô’„^èÌò—ç=>o"øÊVPLÞÇ'~ÃøñA8þìjŸBé’°Þev¶_œO`xeÅ+ÝñÌû¿ô‘¥‘´úTXzyñÅ-â0’O/°›ÒÆŽ,üŠ¡@5t$¾ J¸/[ЂâME¼ÊJÅ¨Ñ ~qcI&÷Å_Å‹UÔ©òë;³½œ%IHè2»Îe¾ÀWšð%~eù«nB³yp˜^|¡9÷bã½°^ê÷ö‰Ì¼Jì¾r®2.åQ'Ì:óJW3Š ¿Š¸€¯7ßÜBù°ø¥Œ=£Ù¹0’ÔrT4§‰3<&UE¹Váár^qLÝ€áqñ©_mݯ»aÑ>öè™KÏŒ€©KgsÐâÅðklÂIîKöKü’ WCSm#ôbåè¸É‘Ó*3<®ò– ¡}ͳfŽÂ×ç¾~ÇâëKŽaÌÍs@‹o¯]­ÚíAA`О…(?€q·ôÂçš,X6Ö„§FH¬Æ¡*²Œ­¿ÀWT,<óËïí½Ö«ðQî ”0‘GøR)Ö.ª®E[bŸ3á^Ë._ª†­ç•’O«åiÀ‘côÖê"2a··o¯䥽&­<*¡,)¥ª1Euå5Ãø¢G¨]ÙMîÞD©$ÔVÒ~3GèÕî=nY×4HÿùÆ¿L‹5%]ŠnPv"=K~~„•¸/ |QCRe£B-Ò+ Ç®,ÍÝ.ÕòfÁå•]ôHW5¼Qìw渼WÉ’«?Ë‚RÖ€uVfFpGÛ…L%wúDŽQI|`e§ÁWA‰• E0ã¼l¹ªÞÌÅ>ÏoÒpPžýJ™·$y’'xä‚SQøØÕ%†Ø²‰\?ö$Ð0ê“—§è±Jj„_™½q㊧þ±§•Ãa~[çˆÆW¾Šù‚^Üj6½“Ü×¢&NHA_H6™…Cz:æFE™Ñì7áÿ ÑÎÛžV2Þ»‡®EÂWHï4ÃՀ颖GéYz1`u‡ßàu;9"6Í0™‰‹áK#Wǧ·±…ÁÄd…à-éi3ÑãBÿPKè¢.áø“#„!¬Öµopù®Æ ãk¾ÅW…»“‡^»x•ŠiòöRgE1¢–;úfjøJè+²_kKÒ+„/þd÷Y,žº·Œ„/WK¡Ì½tR§·!É)ƒƒ Õ>cð•¬rµb[¾Ê:¹.¿´IÉ“´"ÝÏH7™süXß`ñÕ¨Ú‰$¿Xáëå¼sŒœ×{ë^øB»N'¿ú%ørœñÐfZœÁm¥Ã›(i©Õ?Èê“r÷3©ôZ¿dü3bGtOÑÕ<ðÅP×µ#þAWð¥wš$¹i…m;Þ8 ¿ 1_(ÒôòÊO8ÂÕf…Á¡A—¼°;|EùOÌŠ2›˜ dè«Èª{LYÿ´¸;‚^ÞUÞØ‘Ä=øO6Œ„¯ß{ï¥stQs/|™ä”‹‡9ÇÅzðõ„.Ãb—dé…ôNö7*K³0½èÿfcˆ!«ÿ³ 'V@/FéÄø…f~ú™”©e‘Ý‹ñl’Ç".²^\¬æì<ûÉ'oo™r1ÿIì—g)/f{¶k£Çá6§¬î®«ŒgYBá­P­w£IЇ«¥W|êäÌJÿŠÓ_|á¶kiJÁ ðõúë×·-²a[]ß™î{̯¼¼FhHÁ÷/­F“÷‚[à«¡,¨zò3û2Ã0Lf®u`XštxÆ¥×u¢Ò(ç3øzû“‡_r«:†ËîËx¸Þ¼Ó¶Ú9wì€bˆû­ÇÚ}ƒ‚®&UÕæÕ¨d)¹å7 i~ ÊæýÂÄâüJ²¹oXÆ@ÃÿúËök×6ükøõ÷´ ¤aHS±^tïêöµ_zµ¶¼€ ÕûÛËJ«È~ ¦Di÷iÃír~³Dü¹!ƒC]ª¿×ñP¡ã2DÇLµ„¦æÀ“WZ|©qèI¶èH{æÏ¹ã±c¤ïטd{Ëþ°œúF†o•wuÕÔ¨pâö“vË×CoüÇ·ß%LX.|É}Ù·²k?¿t!q/|1<Çá‹èqrë]˜gI3ÔEeH¡]ž¯ÝU å!Š"£¨Ýˆ’cúiÍŽT¹©îx¯3X!yÈ–«Ž°.OæÞÑk3½Å³Öfܾ﵋y¹Yˆ›ÎN^҈뵃š,J#P¼ªÜWg8øêT·OÖ"(e7k;ÍG¶Âñk‚ý¾NÊ{¶ø¥Í^¸Lüåño&ãêè1E†x÷µ0¥–_LJÚò.Vóz«³G¿¨¿O¾6ÞøâÚ;ëÞ½Fiå§ž­ Ðý3_Ü)÷µØ Œ¾–ñûÊã9`ć(Ì]"b•dáoÝÑcÁØÅhœ/Á£ðUÖbÊî½iûỞi…Fg—Kö+ÍŽYµS"Ãåa±™“,¾½„/rx*ùRآٿ_ÈÃ/á ˆ!ƒ/7­p¤ùªNWêKþj¸rBŒŠSòk.¦€Ä—¿ðå3Qøbú½§:_µD~>Y6w/f9~IçmÙør+äÊ}å·Ž\WgIpø„§ß…¯áæGJAD¯@*Ûq_;‚°ÈÈÔZó¿$·¦¶Èc¾$%ßçÎÙ²eüª-[v‚¯jh%ûå*S©¤6øRñêŠðµjÕä)s϶ݸ~éÐq*éQx¸A O¿•NðèSY°Ö.×ù±63>qúøºþॠïÏÙ½mîË7³^ñ™'¼—YSAŠ4‡ B^ÑØ9mÝA :†9Ü’³ ÐÚpF|Xz• 6í­¯>þÄÕMüæ¯yŽÓj?h¸ùiÇþýírnûSƒÚ±_ÁäÀZy¶¿çFó¹;I)_&'œW}±é]}<‰bEŽk󮿗դ(=–U“Ô_Ýûá_ƒ¯“7ÅQC K^e"I/Ñˬ¿Ž®³‡0Œ38G’eS?ô:¸ çW”×ÐX›WVÕ•ÒÅó®‹þ(•K0"â(²‡±r_ЫQ­Cû4 _”N‰:ûÅ×—ýZi·‚ÌÞ®5µb—$Ô4Õ&ݾ¨Â{%¸u¹ /,#51@&üWÊBå¼MÜ·d-øšKÑ*Õ¯Ô­z¥iÐÑ-"xœ`²_Gž_‹ïûþ“—Ö}Ò¬U/duò˜LW°ß©—ß#Ôˆ‡s—Á9Q·oçN³˜šjÙe¦˜‘«6{y³¥—¢àÆlRö:åÃwMBØÙ-mÒ¨Iá‡Yûäk”ŠÖV‡2¢W> ÑCTÊgü8xœ}÷ÕÂzÒÖ>‹e32qêŒó R£-¾°_+ ¾3Æ#¸¤äâ÷¿¿}û;%â®–Õ¦ˆ^hºÌîËà«(¿¬6JcT8Á˜‰ È|4cŒ9qé_œ–«Wn¹>­¨µ2'f”˜ææ¯ªrB•n¦µFÿ‘(KõÁº_ŠÝÁ#[І\!|…ãKRá}°¢©HÛÔcñ…¼ù}‹/Ú!ašÅܶ_’;xôâk¢iJ(|V¯kë6!c!¨JoÉ/þܱ‹Œ¶£—ðHâ |F®–ù’¬3ï4ÝÙÛ;wˉÓo~ò0øÂ€¿'ºè5ÄoÍSYÏãÂu@6Eo½gé*ö…lÙÖwýÆ ×o0æ‰]Ø0*#ê*ÃÁ—† [·|?3nd»NŸ¾ñú‚ó7ÎôÍŸyhßdfÔƒ¯ñÁ âW#7ÚoˆU/ÓÌòœè±Úº3cR35¶@à ‚£Ãâ™—­í‘jY7‰`´–:¢µç¿xû{ö÷õÛàë·­jø¨ôæÍèfÚˆÛát{³>ÓÞ|ì$]ƒT6¤@/Æ`IÙey¹ñöâ´–Ì™•Ÿ•½‡W",(­Þºé¤ðõÁMmÔ~µ˜/NNž£ ž£G…©Á¾óí¡Ù®•-̺y¡ÿšÁļÖ^ÖHtÓhùeÆ:Ùˆ•ʳX{k¼z#†´±—ÐÙºÏ{ªÌ$À ¿˜u)bv<º­r§­æñ£ö&Qm/â—_¹fÉððÔˆˆ$•­“ Î*pøÊ8Šù¿F™/p¾\æ^ûµ×æY§.=ýÀ‘iGúæ›û.^-Î2rðU!|¥ku¡øU ÈŽéãñ;=5Þâ«kèÉ¡âµ&ù¯‹èå±s\‘ÂIû4ÿ÷O)«c2vq¾ |™¼=æËžk#•_ w«j…|ÕžÐÅ€0îÌÊ1=ÐKøJc®oì×_ŸkÑxÂ¡Wx%™àK·µº¯!ûÅfž ·“¨vÙNqoáÄ«“•lO”ܳÕ뾂ÁWCÔ_y}—·|Âs ùÄ¿üËßýð•…ùzù)zš…/}kŠì2ÀøBæèqøRýZ†Ä,ñ+¤°Íâ yð…¾fŒ>xÔœÂÈ:‹/w¸X( T1SàWL%}ÑËžº/÷ž¼½ò_DzpË+}`¿±ÜOôÈ?«áö¸ t¦­›m´ûº+H–C¢GñËÛ±Ú*» ¼ ½¦F0#z]ýŒš¯Õd¾\Ühd3÷ñ0K³ðš³óô•Ó¿ùöKŸ|"|-½w,á#²ñ#2Ñ£©£øèIð5žm!KWíÜÉ_»rá« ¨ëf²Sh¥Î_Ó×VDeúßZR°Ö~_ŒÖn+'Nß8¿àÔ…'ž½ðúÔ#gv.ÏâG–. &¬ªÁü7Ð#efÚï‘õŠ·³;>23Ø7iö£/!ª+ ¯ÔÏŤ¾ aóç÷Ùß×ï‚/·f›‡ï1lOX»©ä^_aíA¾A$òïܤf¾µ§#„Ã+O#tøÑ2ó¯üÅ‹­Ÿ6-dp@}E¼øãYš«£{÷üð¯! ‹°]OîýÉ{LBT5Që1C¯v_—úºÃœ{r_Ô>¬5x³æþþ<ÂG-„î"€ìrà‚B1æ{՘б¶‘hZø‚YHû´×\ãÙfiõ¬½_ bökýÇwñE¸g{eb9ðÓ˜U Ô cˆöÕúʶÒe£ºBBÍ v0{`…å•{ûu<šE®ã]¿¾y3×KèÁãÅC?ÿ曟ƒ¯âBdÔ1Ý„nÊcê@Xg8¦-ø‘©éŠõ³&† Þ÷P×4 +W°Šfy5•òUûµþù&ó8ñ£ÝÉà cb,EŽd´ -6I9 Éuè%“ÄÀM34~Idñ‰>×Ӭ͂“QÞËÝ÷²ËTgÈ5øbÑ6·E¶‹«jES“ÎEÞØ>8D¢’E»]¹!U ±_kãE/‡¯ `¾|C‚‰:Ü™£îŒÒc|u³×q¹fZGâ”Wæ>»b,¿Àׇ1—>ÏCÕ‹/4 _.vü's?Î{îoðå?_(PÑãäx5h;|©jMô†˜¡qü!øò_}žÄ½s_nÉöç ÈÕÝÓ Î˜®n¡ z휳jÕªé¶{¿û -e}^_Ì.Ô[ /M’Ïœn V#T4±z¤÷Ò¼ É•J„zm»üÅ奷ß~~m™;åÞhÙ-ñK‰/—ûrøºHÝ×’_KW_|úÂ+_}…¡:rýúñº[•¦~µs-Áã­%_¯uõ/—.\ºpýú3'N_¹ Œýé…×çé»qcÛ\8¸åÞ)ð‹h_3è´åUß³mÛÙ 1Ð ÷¥ÅÑüü#UÁYg¼Æ™D°‡^ >Õeî%ûxIª§jAi¯Tð…ëjn&ù¥ñ‘B™ÊÀ¸ÝßžDbžèѬ×ÓÞ ˆBûôÑlâ0FlKSÎçÞØÝÞºwÓÞçááÛ®/É@µ62ðþô:Ç™|kK{p Eç±ÖööæMªÜZ³FìXOصœüÎÆ8<`QQƒÜ"nK[ˆ§Py¤ÜDUí&ƒ/·`Ûx/Å‹ö}¿²ÚÇ쫺…€Qž·M‘Â'UN¤MÒ|”Ʋ›F¡Œ%‰˜-[Š…ïJhŒbFüD6EÜV¹ídàÅ„{íéпéö iL×q®m„%ÅC÷}ógöó‹yÅØ¯fT¦ÆÐ㯬ÓKLE7/½<*WÇT _…Gÿã¾oÞ8ºd·³uè¨2{ƒ0“Æ7HsÿøéÉ~N=Zz;&ñü†À&®"C(zá¶Øº¢ØxÍ+cêrr.WWGCåNá—ƨè´ëw3=råèÈ‘àœÛG½õY¦¶ôÀ×ø~c¾äÁòƒ®¨¢Œ‡ò¼o¾ùãÿøo8¸e4v.e€¦ê«“ ÃÁca ¿æ‡\”ïúŽf°ßÑâë§Å/?¾ü)µ­™G™ÍrNZ]ökÞB?á‹"VI<'ûU¹ÏÒë9¾ž¦—K}Më5«u(¾Œ]–&Òée’÷•_?Ú?i¾ø;qäüõÔ_N‚·—ìïësC/.ú»>êÉœ®™ÐÐkç*ìü¢é™› ÜWWãÐQ7Š×ÔhÑK»lé9°ôRÁ=Ó&FªÏfîƒ$,xî\N/¿ùöÛìä ¿VMÖ4T€%É2ÑË5A^¬ÆŠN`,¤¾nœýüÓ—Ÿ^pêRß¾¾ã}ûV=BØÍ>  0n5H3¸zʾmtHP»ÇθÉìÊú/yáÏhÜürá#[0œúò´ ín"ÊÙëı_Gwr^Lük¶Àè‰Ð(B(•L Í¢g”ó·ÿÁÃô[›•Ê.&ÑÀIvU9Ë[[6õ·‡/« ~ÕMPuQ¡½g†éÅ…w ìïëë½ôwüéÜ7=>]\:»íìê-;ÏnSáà‹èQ¾ËY¯6;ò^ô’õ¢j|Q´ªy9™«GM Söû2•òaÐ ï¥}‘;·¬ÚòæÇaŸ¬bÉ'é®"øå•ëä6œÜ;eŠ¢Ç¶37.€/øuEüzýR_[|`s\增wÌ·êÂÓ¾.?x³7nǿ޶úÑ×ÏìÛ 4ç—*Ãh‹…^º§¯6ëÄÙö†XHw¯¼W8‘$M«àËDÕ€éÆÅ©¿gðõÛ›`…ÎÀÀT¾OhÕ!J¶kÚr‡"SS÷§6'hîJ¢øEÁã ‘]DRŠºêb¦¬cÜËÂÚïƒ_ì¸fFŽMAí"F­=Ÿn=yòÓ'[ûƒl{zÕ–É׌úÉ»S6q­:úZ4a2tN¶B¸êÉ{!vt¤ÅÊ|©k[áʲ^9J‚˜Y mßë,³·Ó^ûêÐxe¾¸XÝ×TßÉã¢éªjÒi\^ãyt˜J·x” r )ˆòK!Æý!¯çB»…¨õÚnÀ¨Ïد5Õ ú:t}ó´iÅÌÖ½¾ùù¿–‘ÿ236…/µæmˆ$ÙÑÝWWѽoúê®Þ0grj[gg¡ÏÄIÄ›²_0T¨:ÄlÂ3ïïk33s¸gná™ûmêëC@MÃ{Ko3Õ-‡S’e¿T^ z555¦ú2º /^Ì)ºÈëmQ0myï+€ù“C7é¯òúª4ðµn—Ì—€¥w¼wZ02óÅ÷µ EàËÒ ù~ÕJ O¾vûÁAÑ‹HÜNzŒ½¼¹/ž69M¥K ¾T,aÿÝ ¼øzÀ뾞ɦïvR¬¦ž8L‰["”]QkèÅÀñj!?álu _ì¿Ê…¯Ç¾Áטѩ/D¿£ê¼ly—3Xˆ1§…™Š}ÃC‘þÔÁ͘/w‡‚Š@ØæÏ°0¹//i8õõãwïX~éoi-­ÆØWŠ_¬DÛÇã!>½{[$!$ÑgìBÀ«ÂC/á ÜÑ0=>t(j€é²‘.t¼»ê+ÜÓéŸa…Ê{©~Âí¨eÿ/Qé®>¸n]/)Ì%ÃøÒ9£ Ir_œGÑoä¾,Ã.’¹òàëÎʺÞ=øòrÌÅŽ´WK¹ÍEÑÕ =þ+øªÒ_¤6äÁ@ØŸð5Íâ+×Çw«è¥+ Åc´äÕGÍ4çFZ–6"ÿúc^÷õ/ÝÙX¬D_fÙ(Wk¾´”ô=+H‰c‰‘s_…ÿ¾N¹i9.s¯÷¬I¥fÅ1ÉÔáËÉ'Ìw Ž$žðQør±¥7ó…kË ÔÜUbÇW e—£—+›x|QOk †JéÀ_zk{ÿÄtå?W31ˤ¾ê†½WÛHï%|A=F+Ÿp¡ãݱã¡`#"Ç¥o~AÚ~Ë– Xm»óôÛo_¾ŒýZ5wÊØÅãî Úc]Wk¾¤Û;—Š_ãWí¼|Ýð ‚|‘ĸ~žñͳì5nl¾äƃWˆÏœ¾|úÙ'xði,Ú) ^R.ç–³$ƒû¶M¾‡Ÿo0Ýú$îéî†Ñzõê zà¥ò>þ¾?X©¼=ôªdp«¥—)^Å|ـ㷾~Ï>Û:ZÌ$æ|uëïe'£Rù˜-ÂW=Ea}qJ _tlЈ¥øNG=•KÁ=µÛILn¥+»|õöªm‡ô9$£5Åù'ò_çÚƒíSïÄÃ/}òÒÃ/ÍÁ|É>™+þ«š|b¹ðå1]kѶ$z1Åw½„¯¥½ø®^&Š)‰¸7ĬÊÚo꯾f¿V—àåÜ—e—¹ÔwÔ+yφfâÙÚ R\¬ª¶ÖbW ?+‹Šå ¾ª¼õ©È{ß»ñÑÆŽ3g‘ª>:tûû?ÿùŸ}óÇ ¼øê¾JËýyˆgúFOaèÑË›úRfËå¾Fãkb¸/)hæ0h¶}\øBŽ_º¾ìä{ö9|9€ Ÿ;û¾| ¿xË)^¨øT‰Åâé ¢È~™´OŸ«—àz9|ñ®½iä¶ dÉåNÛr‹»_aãƒbW)uõg^º¢ý×ÛÅô€k܃Žåcª·Vß{2SxññÅ=3i2<”À…Ø17ãèkOŸ’ñdÉÓÖΟp`ÂîŒD²>ú»Ì„/‰FÒŠÍZøfKî9 m¨è2Tzþöm&{ ddÃôiÐÚ.îQ."!ª<*û/¦©ýtdÁ—»7Õu…Ü?FU÷$î³2ÁWõ¸a~iê}5<Â~ÅR»!z-2š&z•Qcáu_¾_´ å+Ë/jí™^ˆÜ¹ãž_’mÊ`®šQ“þôœ„ªÓröÀ¿þœ¿æøõóï¼56‡EÚý¨èQ|—^àë=èõÞÁƒžli߿˚“ZÆz‰U”«Jà‹Âx>¡²a9ª$½_¦ŸÁ¤õ‹ŽñK¸»ä¾Ý™/zÐâs`Ñ’r*…/§År_cù¥5á¿hÐvüÂ|íÎJ¸]FcØ2¹/4–¸|©f£ÔÔÝ;€Ý?UæËsîhñåèõwÿÂÙp±¬¿Ú9¿,½ ¾¨ûr£<øÄÂ34_Þžm5 ~aRܰG/¬Hp¥Á—ië¾¼üRz>žÜ=ö‹Ü“H¥NŽ`&挀_ô©kȉ;´kKßEwÊ‘âFÁ«™¥Kõ¸]ڪͨ0âÓD’ÞÌ—!‡Óq_4ˆùD®¶øâÊÅè}ûµ¦s¼Œ÷:AÅ_o¾IºÓõ69¯O>þä“O86ÿˆ|H_T ³ÜÀB´bOÐä¥ΞÝ2~Ê–à ~ñ?pùÆËmÚ@rž"‰Ó§À×;Þx@”æ}à‰§¼ðôÓO?@+eHþ ‘ýºþLP\}\Ø=}ÝgÏâ¼È#®îî#¬„Žœ½SC¦oÛ†÷:CäÜ©€€1h½À´>ºšÕ_·ìòV®v2]‚€‘¼=jßûðåÚ¡¶!á›1:û.&û•å–ꣷ\÷8+¦µ¦œpÈ®¼u/-,ˆ´Wï&è¾8}\‡M`}ÚtÈnIoñÖý-›ˆõÔ1ø’ýÊÉi®¯²;=MCLÊ©B—ó^;¸¨ tyU=qn¿bG 8ûa™aHôxľè SË /ƒ ¦ÒŽæž«’g;~)æÑb´VÑ2JÌÒ?/®xÓ­÷C£d÷µ0^=ÀÇÉFy]ÅŠëËâ›dUÛ¦£êhάôXö)TiÿпêŸpüûF5³3h€¦ |)ztS>_gBnÖù³ûà«à«=+ÙÎ*_ü¼Ì›ªÛfGæBÇ=¯iG-LÉ·}eìy_Ôïrð¨šUþ¹ïÌþ¾H{M0-ŠÓ–duTqÁ£K€á¾¢} ¿R8‡NTÞ^3†&â5„/+‹¯0‡/ W±MF#£í¿Žýr•ý?pø2…÷Üôi!=Ø=Z~yèE¸ˆûÒ(±+6%Š.fŸm¾0ô"\/ÜçfNƒ/qËâKü:åv¤a¿Â*Í©#ðºš)>ž ]ãkìW¼Æ~™?vs²'’Œ:,,¬hNÝ c6q?æ]¾,¼êeôêK-¾¸M· Uv´‚UÒä(x¥Ë›H.z Œ¤nÅ¥ _Ãä2wfÚïËWÞcÊ6àuåã7O_Ž_«V½É-c`í½@vON­Øõˆ›wš.μêì¶«&ƒ¯7¬ý:˽ËD}‘ÛÚ._¾~ãò›Wîó…{b¾ˆoðÍ>@ƒäøÅ ’ìürŒº~f²oPªèµúì†É“7ì;~Ýw«jÛÐ+2’c ðü8΂^ ÕU(ìœáG'ï÷·2Š«#5,Øà‹ÞéöQÆ5Çð ùw­)¯ºœ‡F£ø¾þò/g?îôÖA{¶µ¾Fc]ÔðÉ|Yjî‹\àKC´öòò—úG¤£žcD­fyG/æËS-þÐ}$½H{9z9 _UåÆ~•‡8ûeöÑòN9/U- h¹…¬+È*·Q¢®X^óÅEæKzûñ5Kô¥p*‚E°uËõúç”ÅÅ©Œ×í¬’%ÙƒÿúsÑ‹«“Š(††¦q¾ÖÎrÅQ¦ÆTþ¶ø«··£D¹{ulÛôùJ5=Ú`Ìg(Tæ x _õõÐK% ×Oct‘Ü—^G¶nº^8øË_¾à Ì4Hp*Z»$«§™×¤a|¹÷ÑEj+ÚC¿*ŠòKJÓæ7Fî‹øÒ>Žóà+‡äWòw¤9JcXäðÅÞ¿Ô‘á§è| ÞKt 5ÝJò)J øŒÍ^Ÿ•û™$RÙWÝc#ÍØRî yÌ×\ë¾¾2mQ=¿ð…2rã¶2ÌðkN` ä‘G’¼#s©yÑŒÚàÑxæ‰g¼¼æË‹/àU¯7æsZŽiEǰ*‘¦Å§wó5œùÁÔ®H–ÀF ^<7Ò,û}qä8yÎå¯h÷¹rqÔhÃG¢GæH¼)éîøñL ÒKKt^Ø%€­Ø3gÕ–m¸/²÷[N\¾Î´ññ’_gܹ|åÆéî7©«w5« 9Óº¸!÷¥7—¢Çë×'¯Z¼í ìîS×Ò ~ÑúÈw…T2rFYþel¦D›nàxÙëw™/ÏÔœ1=­¸¯ð˜ Ô¯‰9ûù¦fùŠ%µ÷U/ö'[¤ð_ä¹ÿ~9|ñø)νJ«t^^óÁýI[´Ù\†ßòà«WÚO-ƒŽ5ùzXð"ýõGàkr»ðųpÓ&k¿®ÙåÈ#äñLCJ@×6Ú=;º ö óõ³—Ѥ“÷¬ìéingÊjk+…ÿ.k“!xqîˆLɽ3_¨))©¼¹#‰ifÙ6ì’Ä.õévÁ°,ðÕYp[Å9.Ý)¯ùzü»ôâŽÃ׿u% _åõÐÃ|GWsŒò¯^ÍCr …˜¯%Å·Áòâ ~¡ÛƒÅKv£ùîUz9|ñÓ#ÿ!)ÇŽ¬%vª2fEñ#ì‚_ ,J{çØÜ¤˜Q¾¾¤ )|ù¥m¼Õ¾¤¯j"ȕړ¶Ë!eÁ|…ŽS7Tf†a¾|«ÁÖ0¿”úÂN)"åÖväj°"×Fƒ/¸5\·*|›äWù.<[ö8uªKÜ«"^Ô’ôž3ž³¯L´É/37ÀÂË6 -×ê>ô•Ç}öY\¦Hƒø/”¾˜t?jU‡Ç}a¾F7 ¡qÑá¢<ÑB4øäÝAëèÉ~ _h”ó‘!c\uVÖDÿðø»Í×úøêQØŠðávºò¬›«\—{'÷e‰è«Ù@Å … –»ˆ`óÕ½vÞ€^à‹¼½ðEüxû³˜F/|'FŒô¿—jÌà«vÏê-ÛÞ|óô »ÁC¨í4gìøºLa=NŸrSBÔƒ7 •Þüºd¥Àºq}þÎñ“çoÛ×GFÿ<5alj(÷IÛL/A<ð‚^}j“3Ûå)ŸTµvÛ¶g0|Gî2_èwí'w+÷¨ÂUÚ¶UHÙü ®¾VöΓ[ÁW¬ŽÍð_êè»Ôuöøì ª™É7Š^)5ÿõ_ÿõ$Y3¾Èý÷ósw Z»]ÕøzÄâ‹;“×Xyð“oñuQâE]åKen7ô"rÜaéõϘ/4oÁŒëhmA+W:ã°]àR݄հÿ’ûŠJêè('Û«èQ¥½l©ì×49°*®oufÝö.ut÷¸:yÍ—p¥‹WÞʯí]ÔË=–ÖËü8A/‰'=ôŠÊÊe=[דwáËòëûß::[è5_—qÞûÕ¯>=yò౬\‹/zŸ¬ˆüWŠ™9!x•AO/½8#QÌoÒÚŽýk<xM5ë›~´Rk†Þµ_kÂñãS§Î:¬Œ¥íûrÒƒßWý“M|c1÷Ä.ÓâVÅ`åîGâ«È—[’_IÀ+ÒìÄ Ï˜hCÝÔ²ø‚^äIÞ¾ýB¶ÐÞdïÍÞØ(ÕS%ùƒ?~Ùy^ßÅ—{êÉ|éb=˜o¥Ýs­ðѸ/¯ÿ²Jšb6¦¥GâŒús³m˜ðóå¿o¾ WMH_Ä(º‰Õ{l7á#äÒÚ×J‹+]="'oÍ—ªTÁWd*ôZmÉ%Ù;\‘5)3b&ÏÝvƒ¼—trQO ­Þ½V-2^öË|€ÁÒÎ&28œ]lxJøjÈÜyâ4¬;ý6ƒu€–ù7Î^1ø:Á½ßö¦›ô5ÑyAüâ"x _ Š @3ìú©óÇA噾î3Ç-½Là±iÿí–ÚD¯#‚—o½4Iè™}Ýg\æË&îGÕN Í&43s¨á–Já}}OsصöæwþmÏâÅ>!²_äË£È-dé(‹jtàef7„€¯?ù¯ÿúó¢ö·÷Z÷UmUTß‚z½æ |™Øqñqgü\…,›êVÉ] _ês±7ÐËæið_¨V‰/èåÌ×rèõøãó|Ââ÷îQ‹å.ùrîË£û<Â}ùE•wô`¿ð”™Ä—Gœ×&¶ï,Èj¹Î‘ëHyÍ—ÁÕhx ãë¡A¿Ü,?k¿xž¿–¿Ç¸IÞRô ÉEÎ| Áîûþí¡ ù¾D.#•O¼ŠË•ýÒ–mË/F\Š_Xg^|„.¡SÈ4ønD¯¨ÄwöoRèȵ¥•Ck´Ó¿Ê {ûµf¶=ÓvüLwd*O‹Ô5 ã‹HbÂê` 'œšd’Í‚oÂ×FðŶ?dñuo°_$¿JŒ1Ù{¿¬Î?çðåô_/ù¨jÚö7¬—õ^ø"FLF 97R9"‡…Ü‹ŠM…/G¯g=øºàÌ—%—GA‚—ã—‰yÉ/j'¤àøt…{_.€$ëEºLôò‰ lÜK¯K£Ì— ¿JÍ‚Õö~&Ù]ÿtÌXzíãRâ.彸 Õ,½tu“ãÚçÌ×”¹'D/ø%iHΛgÉw)g¿Š,åc‰vž}óì–U0+÷™_óÏÿ¾¶‘Ù"U&|msøºrùôeƒ/ì—ÚiξâŽ_ý¼9e¼0B—,¿¤KE¬¯o?·ûzßõ¾ãÌ­˜uýŒI{u _DËÀ«O¥TLz:ÖµQÿLw)'Û­=Z¿îžíê^ÁÑ׸Rë…‹c6צ֯û·‹à+VS£´­¾t"Ï2g$« 0´ir–äý9ö+oÃþ^=öC"áKüúÉ^°–Î|yðõGàKüÚ¤ÎEáK~åäùœîK  ñ$³Ò“c…;r^ÒÏ^Æ~Äúã½4,ˆ²†zî÷d¾³²±£S–1‰ÒÕ¤„Â%—³_Ò¢¼É}-aQga–Ã×kFŽ`#=÷’#ÖÿŒ¯û,¾µ-¿ö8½&†ˆ^:¢Ag¾Tô*ÝeÁÜ÷𠿸•^ }/Þ¤æšÒ ý6è°JH1öK¿:l–6Ä*$·Á+óÄêý²Óö¯q±ã ÇŽ©â·ÿZ{Ë«¯ºÂž}æÐÀp€Õm‡v‡ _&e¼‰-ÕA­&Íλ½õ_thƒ/æ)»¾lò«´1`ÖÔ¢—76FkµG¹/‡¯xŒdškÛ¶sWq¢t{%KJöÑû¡cƒÂBíÿñ3«Æ +ÞwôòàëO-¾ìÏpÁ\—ør,¦R£ì-¾®FtéÆáIJ§JÅÄ㾆ùÀ‘´'w‰W'óÕ¦Ô—g‘kZø±_¢WøÂÂik$C¥éúˆŽmÎI0Å[)ñOɪ“Е‰ûŠ!vt‘£}?ªækÆê9§)µ·ÒûE¢gE0Ù¯GÆoÁ\]FoŠi'ЂHºª÷¬øçº=ýĉOÞ<Í~²sç¶W¾@€ë4üâ|usïòé÷[óõ> ެ Ò g¿¼¸"Uà£ësÏ^?uéü‘3}|úº±^¢WÛ6¤”¥^}¦0›ü®®SÇÊîg¦“»ÿ.óeõû|ÖO f}^¾ê•ÊŒ#‰uîû·êÅã’bU«J[c=*ÕZf >ÖÒ@ó‰ÓÐ’’tß¡Ï*æß:G«ð½”º'ÕËÀœ¯½æë¹EÜ<<§…vÅMý*Ö×È뜼<ù/ÞÄ/›Qy¿Pg GŽË`—èõÏd¾$ê‚"  äj+—]è˜l!ã9"tð²Â}¥`¿:((aªð⺀‰]\4e¨³“©Â—áž-Øg)­êToÓ2ÔôP‡Ø¯õÖ]À1)x×öøßí pÔWƧ>ª£3&@“ „ Í»!hhÞi!Ø„MЉ„¶)X@(‚òHLZii5mÅ$¶P£b&_CZ¥ÃC‚˜d’hP‰ìðŽšQCtTpÀWaR‹Ã0ß½w÷¿Ëê¨ý²»Ù@ÒÓ%»¿ýιçžûx/ÙcjªþÑVÀ ‡/ج²ÿ¤ÅÅy –ämÇ|…¹/§‡Ä¯—ÝoÌdzÈÞ| }êŸÊöòr‹ÌTkž=¹Žœ aÃøMÝ[ºˆÚ¤!¤t?ÀVÅÍÜõ"ofôã÷^=óõct¥ý´9ðûjg¶YSm÷º²m[“JIY° Hí¦ôººòÈ…/ô‘'ïýêäq(_ ÑÚüÆ:ez¶n[ÙmœÞí¨üÌïtÀ#ø 6_ÂWCrÜ4áKäR«—¶©2`ƒOÒ8Wm­|Ÿ°y1,ÀæÅ%O8j¾6X|¹&øn*w(€°³ŸÑ(Vµ/ƒ/Éñ‹vÒ[ýJ¾Æ‡¦$ŽuÚ¼]©®Óî D/nûBÌÊ5æK-óÕ¢Pµ/9JÌá_h _â—×MÁWumz¡A7^íK­îq•tVÑËìU”d¤ª¿ª°_Uûu~íï8t¸ƒDraazéÇ>rª±£á´èÖÕoð5hñÕ ´X {ÜÙÁÜÖCœùêa:¡ÒCˆ¥4QsøòØÅ¶üÁ–súÊöNïÞÙ†÷jÛ‰D/J÷ðPåú6®jj½X$¢ò…ùâL¸”ÌÍÓÃ+_N™dë+ìÖféOžIøJ/`/÷“çΛò@ƒòÊU½‡_+ê‘îggºÌ Æáë}Gë8ö+_0‰”N,†‰ýÕš”U¾n1æËéÖ/~ÝŒçJH^ >³6fÙ¥+äº÷Þ¿3×@Ypäª~/Iüzä©LȰÜâjoj²m–Múlµ=¸v%}!5nö‹2ߪ¸w®õ\Ÿ+}›*NœHVA=îI¶fëâ©Ù{C®©:¼ìÅErů#LaÄ~‰_ªßcÀlûôb壸\›G¼Oæk~°^+Çø·øâ®Á—)VÍŽ‹/^gðEÁ‰_J#5õk‘¶ÁiÔªà…k¾¿žÜq%Ào²TûüóÇþúZ“~ ¾Ž½tÆÑ+§vî\w×ôöš]«J6û Å×X!‘_–U —¤-Dìᾜû2 cmò@ ¾ SÖoÙFþ˜íbý9€¯¿¤•µØîÇ×ÜÙå匭¹ö̼gÿg9Q™œ9µ˜êyœðUœ\ç/|9~m`UóÃþ¤5gœÁ—½Ãb™˜e5<êË0hråy?Ã*3'ƒ/ìW"øºÈ~Åà •Ähœ¨«¾ÌEu{oÙQ:!|½”ˆ‡*D¤é¾êôêtÄØôÞ†V"&ûâN@/ê^|ÔB®€7Mä¤5ŠZêå—€ü"A¿œý"{Œ´•~õì‡G|Oã^kKO½ÒÑSuÚx­ýàK…´!ÛØ/᫱ë?uŒì¾ VkŸÈ»ýÅ/±ËÁ ´·“?vâ©Ú׉^Æyi{êõƒ­ƒƒím­ÐK½4÷ ½½’‡Õ(ûžðeÇÐÖû÷¿Hmž­—hµGÚèè{¡yת_€¯ŸEGÅä!ÞÙTxÖ+OR ÅÇ5ÊÝqcã_™¾æ=šØTµ+£yuɱÏ;öñïNT/ýO_\ë€ml×­¶kŸ>¾ðñ‡¡ÒÔ~ßÌœÉ3($&ô{Yz!ÑëÍO/I_e"×CtÇ{%o{57žž4ø¢wµù¥ ÅËh±¶“ï’¨|qPM¹#CW{C¼#Øc^å+]ÜÛ¯÷_1²_¹`HðRA¾ð…¶Ÿzó5½˜Cábm¸ŸüøzØâkÖìÅyH{…Kµå¯Tfø›ý:Ì0kƒ´—Þ¿B=«ôC/RÆï{þë¿gqì§Çž{îXó™lkjÄØÏwÞ¶­më‰ÄŸ&Žu¹#¥/wÞc©2û€õB|ž¡Oà‹[Î}™¶{ú^éù§ø•žVøùõ›»[ûµxø ¥Ù㼸¹%ëè…ÁÌSK_îfú¯:sÑ©ñÈãòtvç¼y-!uû à‹/7dû+_¡î‹aŸòPIG}(_n}Q_¥G›ê}J‘è…½øÈX”`äKšPÙ¾D/m ìB³´ô¸B€ä|ÂB¼ë8t&Žj×>þ§„1$j"H„a™Rèª#à^…¸/+Ç/Wþrk ©bA&Û¬Ê|BÆ}ÑÆ¥3:NË~UÑ;Á߀/ñËÚ/!ŠrRZB5ßÚ¤úü¡Ž&ˆ'~)w¤Xߥœ±‡­“¤Ž•]Æ} Pâ"wxó%a¾„.ÉœŸÖÖ¶¾s°LG@ШàIÍ`ýø’ƒu/wJª5_ücdf{›µÃô—Œ¼HþÈ9þÍTîí˜ÆXÎ}‚^¯ÿ¸4ŸÍl¿”ùذïþæ•õ«xé‰^¤—EYKç|eUíïhÊ<Ñz`ü Ç~ú5f!Èѱ÷תëÖ¾¸|-^ˆI{1¡PøJHhþ‚©2 Û+ ¼Œ÷¢ðeÍ—…—õ^OGeXnéjðEêh•gŒRày÷Á×4Š÷õðk× Z,¿¸rƒ4«£¦Fðàë‚…®žä²Äë|½¸\d¿³‚×èx2™×z†ªV¤…Û<¬ T¾?±vûc}ÏËÅ1¼×Çuª,øº=&~ñÛ˜1Xù3”?¯øeFm1kKâ÷ÇïQÕ®?‘÷=†Y~þã¿õÕ¿B2Š÷Xv«õãÆ­f=»†SÜñæ0Kørr' _Ÿsôša¦9ˆqbº5_\ ¾"øúêž-eqõêãmÓ#Cî=÷j¾×&ÇÀ+ˆeøÅNÛ¸¼¹DK³]‚I¯èu>¡\øb£êq±Ëž°À©£Sµ3^H("…S(`W©Qè‚WHt2ZÅ—‰“]õ«(€/Ç·X9!K–¬Æº/D,oÃU±YpLŒ…FG©| ãåÞ·Ù¿ !˜rÆLä¾LêX‹àžÈå.Þ§ÀPÜASœê¢¼nVOŸÞh° oE ¾ÌêcU¿†H঴"Ù¿øJí§aOÕÂ& ¨j¨jÊ"}”¯ŽC_ =]¤ŽVmà«Ó,%B/Ó¿:¨þ/þÄÐ v·õMÇ»›Ô=–…*ÄLGë ¸ÅÕ‰º—«|í©do:øây²ÛñRÍ‘±ÌX¥=ëEsäðõBsÒø#çÐûV®±ø*׿Y9 ¬ú7×çŠ^å†n©I½²_õUõŸfp÷‰²k÷¼¤á5 —J÷« ¾¸‘į±·NJ{z•$$òÏ*-Ë_ø³ÞÈx{èHðzä©-[*œë $5^¬™<«ä1ˆëÐP~ Umbø•tb^ùæ²;©j/z%ñf¾–• Vó•€…øŒ™“¾äźÎ/_j¼ßƒR Q‰H c—ñ¯å©§~,p…7N8]ðbÑ7ÜDgèÅìŽhü'øš·ÒW¬ÿ¤ñ–Úª3µJ±²ï¥RÈ¿šëñoÌÐ7?CÝÞàëáOýþÌ™Ÿ|ê3Ümöb¥[¿5³pbú‹¬L Y~|=êÇדUµ‡^:NY_N_Xdñ…„/Süš¡¥GŠ_±cÒJj«»ûÚ½X_ w_V +S§É~¹–T&LêÝg™ãF‡’‡Hܘ _]RÏ£Ë?(9÷%¢|âw{±J ¿¼¶¯¢ 镌X¿p__~õæš“ýÎÓÐјæfýbèÒHÅ“ªÆÄå«~%õD-ƒ˜Ö‰R’ÈR~‹¥+^ýî×äß4-òk¿þýO~ÿ“¯ÐôòbÐïë¶q¼±Ð51ö¹±³ê*FžýbàjýÇ$×(Ë­8¦ëG>7Yýöæ»mö(k¯Ú=ÏŸú£ °p3uû€æ¹/n½äqRå<ì—øeÖ§ÍHJ÷ž%z QC®Î®H/¬ŽÏåûœùB|m0øúpP¬2Ãb} qÑ,ÆÛMC8°X_ž(kqf‡&)Oö…t~ _IÀ­2ÊžETÓ­ô‘Ñý2€¯¿Ò²jŒšÎ¼=•¤£²²¨àW+{[‰ªÁ1ÿ¨ ?½¸º¼r}ÐãÊ‘«BZmìé¢?bü…ֆǓ'ù¼˜âýaÄúbøªnê9$‘/NŠOë1øêi¾d¿ð]_àkp¬ë¾ø@*߸ԑ´‘¡_m;Ûª›vv4hð—®Ýƒ­mVíÍÈ©ÜSøò×¾ÚUúZÇ÷p#(H½ºýeÒÇm:ë±€+›W }ì½kÆÇ|-5CI(;ØËå"‹ZSMîÈNÝòÊÆ–^Ù¯¥à‹ã˜úû†þð‘3k7n\K[ÛN, §AQK›Hôy+)é4/ÜsáÄÒUì¡¿´:GR¾4g|yô¾n7Þë±M:ASØ’bu'ä\ÂYö˜.áG_ ÜÝ“‰ûŠÃ~í¿^ÌÀh©ñŠ+œ®`œ§2•¯ mC¬häÚÝ6žA«iùÖ}¹bÔ¥Ë_| _½ÛE¯í˜03ÕHðÿYuzßÈ…/iKp¬V•¾Ø6„éúç·~¨®9±:agfÌŠEÊꙎ˜±r•6vjÆT}ƽ&¿·Ye/t¿] É{ðiçägÐÇ bðu[H¬„‚,ÖÛÆXh‰^Aø‚Ji˦z—±é†_3$ð5Eø’ýòoÚ6øŠ^Dsø¿>²mèÀîkR]rLœÅ—Æžpxeê4ç½9PŽ%ÆçO›É¥Ì‰c°ùR/á²§vG/ó`Jêj’J¢/A-D>¡é"~iñ±&]cà9µ#ë}q•û¯™øˆª1Õ/ïU¼öxbW½ÅW,;ì±·\ŠŠÀ—eGª’5&y¯&> —ÐEÝÞ“À¥K0½P§{¨×R½ê¸ö†_MU;äËúO3¨ý4ÍøRó„/}¥|qùòƪüònðOøtüÞIßÀ÷7„üæiH猀&uÚ»ÄqNß@[®kRÓÂ62NX )™¾ÚÒ>€Í"q4ýøe[©Û·Ëiú:C¯ö6n$de_.u”nŠt¿Ë^0³¦_ˆmiT?]üø!ƒ¯ù¼¾¦9~iÑÑtPäºÜq‰f!ÇgŽï}½w©Š_¯P0ìz°÷;g^½cËcwà‚7¸uc½¬"JjWW Æ'–õì“:À˦ð z|/^÷È|=½å±eE@ËËѶÐXKè÷ ðk©4ÿKG>ÔX•’U ¹Ò.Ž—˜¬AÏæø&ç'Ûê]¢—RÇ%噓°Ô]û*0``ëï°Ëj‰³¶.ÖîPûu1¿–Ùg:äÌÁ™æ“c×Ì™ÐëAG¯Ë¾x» ôNà·>õÿýíŸwgk¼ÀŽ'ñknýý”ŸiéÎ(­g-#–^ouN¨äUÊ–M)4颳ÏhõòS¿þ5C»57òã_ÿÔ׎µ…Æjmí€{ç¾t¾Æ%_Œ€%zù»6¸ _÷‚-]øÐ'‹/eÄ^™¡ùË%®hã‡Ø¾ðÚ—4iÞ„Ô¸DÁ 1f‚Û¹‹Á$æì«—wŸ¿0tê•Ê 0Å%'Sùòø¥Ü|õ…ÆÚiý—í›àxg£ÒEônûä£\í˳¤¢™ûÅœ_‘ã—‹•IàÕNÑß ¾:Cc}Ûo¿v%¡—22„¯$ú'eèW^ËÐË®=©u¾Rüôª¶ôÂ|…JüZk°¿c?¦Šƒ|Jöã¿Ä¯.ªö‹ûOšjØŽIü±%ø"@“Z) ÖÂq“ »…à—É¡V—?{䄯¾‹bõô¨wÌ  Ûvx_Ÿ5_ݘ5\WUOaW³eÁ))sÒÓËúÊú¦÷Ù²×û©µâ½*™ ”Rðþ˦ŽÞê#j¥{íïo‡7Rœ´øúªÜ8ŠüPKfXð2ôš ÜÑá+içn²3ðE:¿âo¿°tþ?rfÓÆ¢—t³?ÖfÛƒÍÄäô€¸¯’„x6¸¨˜¢íyjé½”·ºuçKÛÊЊ҉Kc3šK›õ‚ôáÀêµO|i3C)W}Æ…­šûWUÏ„/ÐŽ=¯¡[]ˆwûcåLïnÙ;§Í±"üø’H yJ›—°8¬|ÁLÚ6$—DÞï–ùI‹¯1Ðk2“ýËHmÇz&Ä}-všTL;—é]UzѼʰh–e½8¶ïÂã£R¨ZV“[‚ _ÐKøQ¤w¼ÓÝÉ ø¯Gu¦~©=Y?Ü}é+‹¯±("Ýà+àËÆónÀr¥ÎKÓ çÝ"eh¬_yø"o_ó/ bfh ’÷²ôrSrTõZ ‰œ÷âz1»¿l“?¥®Ú¨T[µÐÏ/M¸_ÜÐeìWÕ¤ªž.¿ý" PáË®®žå,ì¾Tü’ýâ/Ù£Êù@mÀë]Xƒ_Tû›(pЉD]=«AE7N,Ÿš€ßSX½“"XP¡éV®ÕÕ^©JRË¡jäòªã\ŽŒüWN÷wÝQÔqxü©ñçΰ׿Ÿ[\îçW±±_¶ì ¿8‘.|Ñ«<9súÁóçæ3™ùqެñC½ç.\øÅg^}Úx§ký·¤U§  eýî‹Êoξ|ì—JÁÜ¢g%G/dèu;æ‹óŽž®S¹ËÒ‹©=<֯጗4ÔºïlO!øRÚ‹ý2üzI›>£²uÓœÄÜ3™¯e†_É“§¤•T؃û L>ÜîÅz›»{!@.«|=¿¦/òSl N"OšMÿå’ÝÛ{™ÍOè½Âc­†_è›ß|Øœ´mú²%r_³ ¿V•j˜/ÆR>|‹èð2/‰µeþN{§•6¯˜±‹ŸVí_ûÚóºÿjx¬­'²ºïj5v˯±cÖ©{°©¤hÁ´™zLÌÊ™™73°5S »ø.ë¾À„ðA~Åúª¡—‹ØÃ¹! _·‚/Òyœ¾fÞû+`š­Q9èˆÑPÔx×p7¡Ràº(wì Uká“‹TôJ½ÒK9v]ì¾Ìц^“ƒ—iûŠ¥øÅ$Oà,[’Ǿ°X~~ÀyI˜=øå¼|†^_x/ÿz£Œ—ÅW‰øõùpµ†?®ž1c64!–÷Ûü‘Ûŋٶ­bØòª¦g¿{ˆÑäPÓò[ªTóbqu FÛú¥–¯³ Ù«£c°­.!â)j·—ù²£ªëU¥®2%滪k«ª[ÌîÇ2«ÎÎÈl!¿•q‹¶y±.'ŽP”ó±^>y¶¿æ}RoÒR([ßâÄ0õ]"_åàkYyqÔá½·ƒ¯s¿è}œó0Ÿì*»Ðû:§ÙžëÍ{³€A±²kKª ¬”4 b%¢WáÄ’‰éQØ/³’Å'» Å4¬¢ó¦lÿÑÛMÝþ *aV¬—6ÆzôzkP¬È^6Ãy!y¯/íaÚmuÚT_~L¹ÚAdå‘]ªÑ‹©gÖ|¡<ºÄè±iµ>0%GÐ%m¿T,øu©]Cî3å¯Ý¸­%—%½ÔX,˜5{É˽KÝ„éK{¯ó—Šõ¾é˜›/¸¹¬29/|iФ®ŠerãÄh Ñ,l£êÏ`2Ǥq-ÅD§¾$|Á..TÁ¨ßŸ ‹…Ö.H¼­ÕÒ ™—°: "d¨ȗ”ó8D¯;á—H ¾êíz#ßÁ‹/Õî§P»¥+“¦¯»Ôãú Å—nmÓ½ðņ ÔÇ/3'SsàSÙ ïÅ9tꮽØ/`W€^þWÞÛ‚cÕºTxªµ±&ÃG¶Ô/ç»t1³3ôÏ?€éý ‚[¼¶eÈ´2HFv—¹Xï ÄB¯":¿ä»Ô;kÎòù²ìrôjl ¥W^tUpS=½BcåŽ+€uˆVý†_ôx-¾µ¿‹OàK¦ÌíãÀ×IxUµü–ð…ûÐ_9‚9|á¼pa.+{ßËœ¬Ö`úcúÚ:¯z8³¨§†šZ‹¦2˜¾èháèH-B¶ÓÆì,g“2hmƒlkY矬nòÿ.ëæqt6äÉ9{òdKåžs¯ _ßIŠÂaÙ Ñ NÎ7—Èš/ðE_ú¼î³ÃOüñ\ï|,WGÇIúÆó?ðÓë¦X› Ò÷ªÅtÁ/ÝJ¼Ø2rá–Ns\cØEÿÊö^æHé‹ã‡f×¹B.oÔÝöðXŽ__Ê"‡ö ?s¼pl„Ï5¬ÅØNÒ]õ ^Í»vEM`ÒD…à%|Mˆ2®ðCœw70ô ›ºsÄ£rp¬ †Z¡³®ôÍŸç4;Ñ,.‚îÍÞÝëzæ-œ^á±Ä¯4ñký½ù¼ÃÌ2ø²ó¢Sëy¡)¦£Å Œ÷:#m,[ã'C/N‹köðe¶mïºt¬µ•ÓÛÆIÂÖX,/a‡/®%Ew:~ "š{‘p¾t?öKµ{:ÐŽ&ÝvéX_ u_·Z|ŤŠ_~|¹‰ÐæLñÔ¨ñäúbéQá«X©£—8Z~¸t¬Z‹¯´ØD•Ó‹ð`¥ŒÃ^™îËŸGš:;ƒ¤ÆH%™ñÁî+ÉŽ™V͓ԧ‡Æò’]]˜U[àkŽu2½¨’ƒ—1_ ‹ž{8féõy±Kô’ùº¾Z/+§–÷˜IU$|´¦Š_”£w@'¾¾¬ÁRöhmS‡HVņ"éÅ,íÓÖ㺴kû¬ÁWç%cEv71{‡ª …õêX`«IøšTµ°±JjpÕ/ƒ±Fú÷]Âi~¨¤„5½UÕêsZIIJÐ¿á¨ø…>pþüvšuÁ4®´øùl·ÁôZ SÒ´ÙQ2«ŽÎ|Qùª<{rpû/~qNg·v¨ã÷ð]祟‡ÒË=f©®À)é&KaòÅsÔö“îPqûÉÁKô’Þ¾„Bã'¼¸ß>B¬È#ÐK·ùúdGZ´/Þ$¼U›tBÓáp/±ÙS›?Nh¯v9øZ¾â’Çû¦¬ÞÇèð¾uCö°Èí#Å:IÿÅ=݈_õº»ÓNx5³÷î¾ðšAÖkP¤{aÞk¤X/¨uµpCßœ½E¹ª£Qû"{”ýÒ«zÅÄG§h³¶á#Ư‰\ÑÑlçbBê” ³lÅ‹_šœ¯%È#ý¾Z[[x™ã¾0]¼µˆ¾L\*¬˜5KÙ/,ÀŠ)¡h_ÑxoÛPR†îi.>S£+ËFŠÕ4 Z|Ù§,Œrð2ìbÁÑ8°óU‹½Fô^^,¹²‡iªË©q‰AB×éýàk‡*atNȘ¹ì‘}CýN÷´Ÿ»° ƒ/à†ìîIîB¯ÐXïðb!á«©ûÀÀq’Å…¨J©k‹^ÂÞL]üM23Ë›²aÖ´q5·OßßæÅº’¼çè#çÏ3–qï¡Cì%pÉã=ÕZ€^JËÅ/+=¡âlå«bÞá³§_~ý·¯Ã¯sñþÏ~ÿg¡WÀ{EÞ«½ÀP˹¯`eÐÏÉÀ¨ï<±ý‰'Žˆ ^Ž^ÊŠÕhë¯Ù{kŽ#ÆzÙ5¤º=º»#Ú—ŸjñÅ z§y'¢”Eîâ°¬»Ò]îÈqýåɹõ¾ãüdçððà„S¬<.9ÖîPötÍÍ2ìƒ#Î?‚>0ëì_Œ}<½ì·þ½6bÕþ-^¬÷8xþùãjl­ŸA^åÜ—ì—òõlóÒµG'»ÓµM¿<Î ·Áá² «´‚üÒª‡¿´è³›¶†ÅzG ÿ+Ñà+ _c ¾ÜB$¥ïµŒwÔ‡¦”˜õƒh;$¾¹Ò=R:‹œ¾Âc½ÛkƒøŒ¯BÀeùÅ¢-øºLùK $seý<“:Öµ\‰^èfÿo0ËÔ¾ “*ã©H©$Åb‡È¤‹?uôòÈ¢Øh“7OÌ ª~ŲNÏÎGóóÛFŽÕ¸|ùò4_¬Ç/×aà¥ÍŽYR¢Øj‹/^(Œ^#Çê`wö¤ û)a䀡ÓýU·’=Ê‰Ñ × …°|×ifç,ï¢H¯}D_¸/Ý7ůΑc‰_ðªíÀ`[#вøjŒp_=ðÈ|eŒ—ã—šeݧcšû¦ZÁ+”^£ç×ShzÈ>»‘Yxüùù§:϶[÷µÀÕ¿bŠcŒâ”TÊ{×=¹pa M«”û{‡zú÷ÿîeß¡îL¯°×^«3_Hw<†ù’À×Çžx‚:¾<„­9*+ŠÊ°¿|{‹2ÃèözXò^Ë/Ì×ðð3›rgj_²”JQ…F«Jz-–±´¹#µ{ðUôIFOï;û̾=Cw†Çâwéñ+tl' Ló…/øuá ³j™mÀ—G/ð%ý%œ^#ÇjŸ>g/ªY3 |;à—Ã×åƒ5â·=›Ï±ÿhF¾ ’Jµ^»&aj¿\,’G‹¯1Æ}I‹_þ=7é[µ×Ê"ÌŽ±ÉŸèŸ3!p…âkrBiëåbÝû²ór`]ÎÕfþ¢‡/¹/è%éñš?·UͬsæëÃmzå…ÇêÖ:DAM% xbÜ*‹!ÈòîêNR‚𥹅ño0g‘[‚1ßºËÆZ~ëòt^™ºPìr%{‹¯õŒµL X/?¼.^wœ~¹X‡q3Œ{¤ÌÕ¢vìè?½ü–ÓÆ~íhX¯"z!ÍŸ`xá-=‡E”ýX.uâC2ƒ2vuô]"ÖÛkÒÂö a§„!‰àªx‘T’ZB&±Ì_ý²©$n aí“ûû˜† 4Öèùõÿ«{ûX 8bé%|ÝZQ^Ž `zµ[•ëbJúL-ÜÓ0)â¹±÷Š_x®=ÌëØ¼÷Èëç¶?CÃÿ}§§ZºJ‚˜.È—Ÿ»&|MûìË3¶›ÌÏE›Cþø$µç¤è×ÏÕ‘K*ºëò±f=¾žq¬"6.:`!ÙK7¦wb|ÑÄPû¥=CñEv†jEä•bí](|eˆ^ŠUTƒ8B›7ƒ1Ìi¤·GÛ4LÔ^’^ÇGø7ôY|yªbê©°`“7ë!Öhê÷¨³¯³£ÃæŽ:ß;å¹±ÇÏV,Óæ0påiÚð5/¥ï%¥õ¯?þñ‰š/~ñôÙNïÿbÄX‘íÎ}UÛìQ_!m×HJ «òÇÇ–NDêk館”ØfûV/ÖÈ\~y¨}XøêøÂ}É~ñ™‘_‚-[V!-“D/m^TT;?×Çï£}h±Î;üÀ!ç«Å8Qìñ/õ¯;ÛòÔèõÞ׿ûá¥Ö°ÐÕÇÝWŒ…¹œ¼Âàëvðu§M¢„¯jBôÃgLœ¬Ä1 Gî_•—¾V¬™6£˜ó³·>,gv|±æ4‚/5N.F_É}9ûErÊ&ðe FæèèÅ_á¾lëW`&÷Õ+üý&ç“~~‘=N°od©ù†_3-¿<f\5°ÑÇ5”ÐÓðhbm޼æ×^D6ä %|¹¢=÷Õ:˜›3F§¤OL,Šrˆ£ÕU–ªhÓȱnĪ,_(IŠ7ø‚_:¬"3s½j÷ëù½\à /}m»L¬ÀSã,´2Œ£ÑS³_Œ¾¸W'5SÇÐËÐLÙãòDÃ*uõ“ÔÉT¤¢LÖ9šXm°+X: D—4îñYø ¦—¾ÉÜqc| Ǻ~ewOþò¹?â¤Î-¢Ê[wvæk™_ð+ÆŠµžÝåÅ+¾Âw•~ ~Ñ+–™Ù±×û¿¸\¬é™Ö{ `’¶?"¯‰iÑiéSÅ$À|)f¼®cö«æ®ÑÅÊéìÛgÜW[¾$€¯r¤ýÚ~|É€•;xqÁ|%¯ª¼û,?)e.Ö#^s²üúÇãœÝxpË=õkŽÆ,¼ÂǬ^Ø2ºX‘9eõl8dÒ‚RGÑËmÝ‘˜)››{t"öX¢ˆÏ‰Œ÷>;mÉãš3gÌ›“Ã1±»&O.]¬V:Š„¯èqàKökœþ@°S°ÕÙ¯ùÇ8ï55‚ôÑp‹/$ðå],&ß~í_øp;¶_ü2Ç»ƒ¯Y_Ær‚/Š ,ÀÔçh´ Ž‰9£‹µ®¦ˆ ÑP E‚¯xÀǤ³ø(˜ìÅ—út|ZÝÆQÆÊ Ácûįͺñjù®f½ ø No]¬á“ýÚ­}-®: ¾`Ö~ðå öHCs”K’>’íÝb†C4hÛ6Ô¾²zºFùœ€E¡"u\®ëÊD)—<:péõaÕ€z¼ß×hÁþz8°aë—þ'V{õ”/:|vš–•ayüRu&½<ù—Þ£?{€½»zD÷¾Žægµ¼Á[¯+§CåòGÝKwC úíEŒ‹ Ò[¿œûrU{ó9Sjm,-J_èî¢|ƒ/øe€Œ€•Žw4øªÀ€ñÉ厴}åFuSö’sÊ£Œõ@E é¹2Øû:øÔÓx/èåϼ¼•ÇÝ£|\({Þ¹/3ÔÐK¯e“oÅÉ…¥2(Ä7…ž fEKõk¦Å¬Zñ쌹3crߟ“““=g´±0*š’…ï2m÷žýb1--q“&=V¤+_´RÏ_ð]ºáûÆD×:Vö‡„/•ïuh’å ;¦{žÚî™5ÛoǦCŽ:ÕŒ¯€õ ÄzÛ•bm¥ôN½Ì9µ¡øB®ø¥õEŸÁ­÷5Î}eÄ£µ£Åv‘ Iørö«hófj`Þt/g½ð^ÁæëGþÇÑÇ:+ó%÷¥ì÷eúîq`€Ì¼gkTã­Mûá—:ÁXu_h`Ô±rŽc·‚Åzär>”?J^í+tfˆ¿o5z½Ë{=Üq»ðš²úð…ïPWXb DK´¼cöç´íKz²”'+¹ {îgöö¾~;äô®+Çšƒ“ —“ÝN$ÿ5ÅVkx½0À²Å"f[Vë®*Vø>0Ü–«U,µ³ÙäQbâ*…gðuQêXQœUÉ62ǾìÑÇÒ*nÀ˜xµÿ%zG§Pë5úÃäz3Á„ SÂvæ+N笘“ÒØõ8ã1W§i‚Vjþ²ì9Ù:­ÌéWŒ…„lß½-~Á&7Ï«„I|éii]ZcøÝãÊTÓ²+Çz›·0A ˜ð°ƒržÈ_• ¿fVÏ6×Ù´Kèd!öÕµdeþÎÔí7˜ªWÎÕĺ/>IˆÂFéípz™[Äpß„1û…Ľ=W‹¤Ã¬=fP¹‡]ö@G `Y’<Ž¥Þ«úbóu<ûʱÞêM  k8ð6ÐPµ˜"˜Ë%ûIÑIS1ï¾´öH«˜拓bÖ}íôb½}$ßãŨÒüð¢uƒ‡/y/Óú¯a\s‚b]ƒÞéø` ãùûÇÚzïþ=½½År#Ö™Ô„“÷t6Îü‡–>¾ˆ§êçkK"LzòÕÞxsÚnU¬é‰Ö{ÙÒ–8˧ÂÂhÖÌxÆO‰ŽxtŠK ¹ñ%"·[hgÙèb”b.Ñð`¥ÚÖL߇s_¬>._kÁ¼ÌÃÕ²#3Pî6Ö+ç*cy#t<„½æç×û¾tþ}ª¼BÌ×…G¼XïU¬ÇòŒý^.wŒƒ]|Lóók sÔ4Ç1 1Áann\ùœÈÈQÅz§«µdL4¿—1LãÔ„ï!2u*~Ë_´'u¤õkl VM„ãZ²Î‹õŽÑÄb‚ôßZ5vñ1w瀌_•ÿ„œ?gÈÂ~Ñ5¾ÌÞ-·æ‹:Û<+©Û{y#zëhcE¼p‰3kÀ^ §——7^C¬§Ù®—³5_ ËðËÙ/3ã•ÓuØJóÊüŠý1ñ –l¼†Ç•Ó]¾˜c›VÓ²¦ YžÆÝ2îÓï5õ1Y……843T«õZbÝýçÕÄÌEþkMü©5¢o9â­‡T€‹šë6ïŸ@4¬n輆Xì2ó J“ÜÊ£¿n/z™jÆmF‚)ÞGkð„¶CÞw-«µ(Ö@\³}"¾K²ÓqJŒ …/>‚àuàZb 6X~Ý*|Ñ AÀWôêWщñîÂWWð¥î,3ô‹’ý5=7˜4•‹‡/Ûlߤþˆp÷ɪ‚b]5·ÂAŠÖ•|Ê£<³&&¦i³o“KQ¥ùK¶Ïç5·ô«“þ¼x!ç®~~ò¢6¼¦glGK3*à¢Ã„©|¨–e¼XB´ZÓ™Êäz¾¸©Yym±H!ïf:¡q_*ÝKåÅ œ!U¬ ¾,½’kÚž1Îk´Æ–X#1” –.Ð+´fÿßyÙ¡«ŠõiÐÀ—k-F”ŒÀù#þkåWuVGnÞÌù¤`¹ó8|sô±H ½_ÉØä¶AFP:UDIÖNŠ^SKZS’LwEuëµÆ*‹‰™ûQ$ÿ5~­Š_±&?_“¼Qñ<®å{ê8R>3>^øúâïî¼ÆXÙeQE4Nø“G×4¡=’ÙçˆûòìécÅ}×kÏù,ä¯×#MÇ‘ÛâÍÚÒË6Þ—,´ü:~`ô±¼då ô/FÂNle¦襳:ª¤~î“LrbÚrÕ§Àsö^E¬›‚cɉ_΀¡*?½l×*†KÈräoWõû%HXÑž‰›3ö Ôîßxú&*c¿Ì¼„;gÏ_úÐCó÷Uj¨®Ø³'s½z=\_e¬²n~}>K0ü—œí¨‰™éé.£kî0!øUy×õÄšÓZÇ„*öÈš¯Šâ¸%KŠ‹ýø^ˆÂWe÷3ÃÙ×Ë[„ô:Y½ÂÙEÍëzb}z–—;‚,ñ Ÿ…8ãÈØ¯•Ì[½·>õö™©„·ñzbµ¦¨‡BøâZ1Õc͵ëS Ç<€Ÿ³~üä±SSÊ®2Ö;‚c=ÆùB³  ä³ññ«r3¢æ1â4™š×„=uutNešL¬×Ýs®'Öûëh¢µÀ—£ø2ј¬jí—”^S±ñzbMoÀ.]›UVKôâÜ!ÑËá‹W8ô:~ÛUƺ98Ö@§|í0Ut:'ÔfÚIû;äÅ‚ðÕthïõÅš$…âËÉ¿ðPUwgh¬ëÓÛßìTZnI«{/k¯Ò ÙbèuûËf„üã§ŽNí_¾hû²ûd<„^C¬ìé;1^ø«¬,õ€é”ʉ5éü½ ZV¹mYw-±Þ+òÛ²] ŒÊ—ÞÆSÙ,Ta$zÉ|±ý·•Ûkˆü?ø åž ¿^ëÝÞk{½Œ»F^o¬ÈÇî_¢—‘ÖW¹EÂ׳T¿îmn®Ÿö«¼Ü¸û®)VȨàv6<#úºJªÇ‚±½ªÛ™˜–2îÍ9íEÑÕí×+òÓ·[z¡3Ø)Y¢ÌšJŠß:Ï•ýÎÊìâ?Ùëækˆ•]1Áv©ú»¾ä»$;š¸Î~eµ^¬V,X5¤IXr^fø‚‘£W!Xë-ï¾–ßW×ÂÅ¢µ)rzáI¾ö›JX?µ{HÓ5pý±º£â—>¹Ú—‚2ÈÆkx\£w‚hÎÀæq?~œ¸â×Nöæ _ôG^ÐÉBKu4º1‹vã`½ëcA°L–q[œù›Ba3Ef‹ WÕ¼2a× ‰ÁÖÂ.h,PiÏc¾F¹Ôq“¼Wy(“ÉQ¯!V8ÁL ÿÂ#þ2"»Pä5Ç‚`:qÚPË4¸È{å¯ÉÕmªÝ7¯º}Ë·oL,…jhU¢û¢šˆ1%iiiœÊU˜VFÑž›1欻1± ØįÏZ€i1•Z¨Ì [*ÖÞ¨ÇuGE`NrG M@Æ}%Å&¤¥´ß Xs¶ít˜_ KÎËîªõÿùæÁkïà~ð¥eÁå4QH§º(”JÒúµ¼©eà†Åj´îK½–`zY~5tŒð¸n,ÀpÔw2’·÷Ô+ PÜtƒY8ܘ-Ù¢×¢eËÊ"C¿ùm7]W¬ÛZ[SÒÓ½ }"žËÜ/ª›~וýí;\·øBÂðB›Ön̹±±¶ìv3° ôMøg逮-76Ö7î[çø… —Î2ôª?±‰|çÆŠ,k««÷À˜Š–±%í)Õ›ÛR¦¶§ÑVH­~}9ã }\Ý3×hšÎ2ÂPò¨âMY*yÙa뺞ó‘×VDð…°c"š@¹gyÜ5¾‰º^ƒÐX·µî\]UU¸y­^_ÝÛˆú"¿¾Xm= —sº=øÒET±m«œi»¯óÇêf5S«R0À®30r¬0½«?rð<Ã-wß3‹ífçÏ}ôüî{äNž 7"ÖmÛ¶Ù‰ýRQQe{kÙœ7& ÛÄ6- N¯¼qÓÚû¾ ¸Þ ÇµåànÞ4Ü‹–U,×ùÝl ycb}ã¾;´É˘/ƳÓr‰Xïº!±ÊÊ6]ŸQ²3""+³vsûmw½A±`ØÓ÷ÜÃIÚ:’-&µ¸xÙ¦ûrÞ X0lÙÖyÉQ_Ô–ñôP¬ë~á½ã±:[»iy_¿Z~kõêÆãÝíëæ¼Q±úÙÕh‡GŸÖ¶ì}Ã}7æq°°Ç5ØÝ¡Ž Y0öPv3¤Çu#F­è*ÅÿÄ›±þ/bE¾ëºc½çÍXA±n¼n¥W£·¾ûÍXÿU±Þñf¬ð´[¬›ÞŒåÅzCtÓÛGýÌyëÛ¯;Ö[ÞŒõf¬ÿ|¬wþc½ëÍXÄzãKßyEïÇÿÿ-ÖÛþWcÝüf¬7c½±±Þþ¿ëŠÿ+#VÞò¶·ßtƒ ßÿ[¬Èo¬›oh¬wü?Æz×›±þ3±þø:–·IEND®B`‚instagram-feed/admin/assets/img/balloon.svg000064400000001327151435171370014761 0ustar00 instagram-feed/admin/assets/img/group-app.png000064400000015224151435171370015233 0ustar00‰PNG  IHDRŠú–VqPLTEÿÿÿõö÷òóõÚÝáñññ!)÷÷ø’–ÜÝÞÌÐÕx{åååîîï®°³ËÌÍ\_eGJPãOZ]cxy{‘’!®¯°5x娪­`gp”œÊË̤¨®EHOÃÅÇ[]_ÓÕØÔÕ×tw|ÁÃÇknsíîð‹Ž’åæèïïðsy–›¡ÿþýäPððñ¯²¸FGJÞßáãM ÌÎÑšž¥þüû…‡Šýøöáâäjln°´¸êëîäSüýýÏÒÖ…Š‘èj4Ÿ£ª› ipx¥¦©£££ççèüòí«®´éSúïêèèêúéáÂÅÍ•™ŸîY¾Âɹº½äWùåÜ»½Äæ^$ýõñ¾ÁÅûìæÈÊÏ÷ØÊZ\^ñòóÙÛÞöпé‹cê…Yê}Nåp>úßÓê[ôôõèǸó²˜ï ~êxGóÝÓÂÃÅõ»£€ƒˆï—qåd,並屛à“sõƲᡆíÒÅÔÖÙñh+òc%ˆ‰‹×†c5>RžçÞIDATxÚìÒAÀ ±C ªj¤ƒzd°DCæÿ<·Ï˜Hž *¡"*¡"*¡"*¡"*qÙ1ƒÔØa “…/à•7Øù ìû6¡>Èf W˜û¯ŸôWU¦›êâØ’¬òaÙ(ý ‡~ˆ> ˜”¦¯×\óÎ÷2•\g 8Ð4ôku„âwQ2Xçš Å¡ß£×Û¢·åöêŒ;Z–ëž…AZC‹è¤¹ªâŠm‚( /HÝCHêzÊjÚl!– %_.zG²$óþÙ<’ç Ðð œÙËH°%M21¶ã_M?t6ÝÖu×õæ­Ç(&@Tg*j±Î%‹•s "ˆ±Ý©NÂ=ua@¤Ž:Š[NR‹1*Ã(J¶?Õ¢:Š–~èdº>¿¬Ë²¾<_q_ °¤MÉÂ)’¹ˆ‹[D÷ Q¯¿J+@á‰m%Ç VòDº I/eÌfà„7BïìEë(î瓲¸#ñEûÞhðÕ…9Ž5Ræ^Œý’Ô¢ò‹íà†«ÌQs  Eð :EÚmô§˜›Uodï(JÐ:›„ʼn‹!zôŽ¢À9å{ ã• EÞVD»ËƸ,Æö›Ÿ£8Ùþt‡bò(¶›^ÅsjQ—Éë!н@ãOLÁQİUn…ƒ->@³+ÐQDB_ 1öše0 ô‰¥ûDÝ/zÛãmçRG.-‚&3Ùñ¥ÏªóîØG_¥1ƒCQ†Å{^wlI…Ç’ŒcËy…ËuÇâŠl ÓV,± ÉÀˆØ0¥'â\ŽæÔ¹£ØæÀ ƒGQ.¿¿ÔS»h{Œ$Å“ŸÆÏœÿìÚ» €0EQ{;—pÁ=÷ßÃ?ЕŋžÓR¤º¤`Ã\âz^¼\æ¼äÝW“½ÿ‡µÚÆ1±Lcß-C×§Éè· ¿i¥øÁ)O4·¤ø9~æBŠ„"!¤H)BŠ„"!¤H)BŠ„"!¤Hˆª†Lì™_nÛ0 ÆýbÓ0LÙØ äaÈ‚ ï=Ç´~eÍKt[7ˆhªØ¢>þû*Zn“&Mš4iÒ¤I“&Mš4iÒ¤I“&Mš4iòge\û¾—.Då)œ4 ݾ̇±º7L©º§Êž†ö=Ëð\ä=Óó’øú¨DT‘|ó)QÂ}Tj»ã—±û„¢ëh集ŒŠ,þmTD>ŠŠO s2³¡­">%ç‰$UQE^ôpði2†êùË8O§JÄŸU¸—Œþj¥bb>¼®^'!ãø€‡zœ®¢î5±¢‡W÷ ¤¼"mõÅÊ‹§ŒZ€K!Iíg‡ìo$¾ØQTJ`ÉwKKLþÄ`5Ì?Cüõ/³<ÏžzEœëãjÚâ;1û‡]Ûg^Ô?:}»À”Œ™re ׯ5vE Çù+½n,*P‘nXe°ÉñðF‘äîø=*àLëy™íñ(lòkƒ·‹ŠHÉ0Á¸r4héÑNÒÅÁÍoݳȡ …më¨j*’1êF‰ˆMp•L8¸w©’L´ÃÚŠÔ$Åxqd<›®JMEõ J’Á¥$bT€ï¦¢#ñwÆ-ˆ¨n*2DÀÂPS‘Ò¹Ç ˜èíQLg˜µÇ=*â1j5‰Ý WTLÓË4¼»KE´+*bâ>‰î!*òW5 ·T4{N´ÃÚŠÔ*FT»{T,I—B’| À©ÞhþŠP«nÐ <\2T Úî¢õºŽPÑÆ; z`µ+üºA+‘ï4h­Þ4¾ùpÂ}wƒ®µÁÃÄÝMâhЬp囄‰ Énƒ¦&4h®õx$[²GÅo%ÉàRH’1ðÁÍBzµ@}¹F¾RÏó¨¾ Ú•³uùù±EÃóšQ ¢?[ß9¶€¹=ãGƒ¦«c ¿©)XË<®_>À[Ä)8ªýFâ”Çıå"‡˜ mí“Mž­ÀÄMT#cql± â7— \ª$äƒ ‹±½âƒâaMEjâÇ ª{pœ2<=²VT,I—B’mnÐÁî¿âvåt^6ü|ûû:–GLûf01¿x™CO±C›{®Fv+ð“¹íå'/sÓá¿OB*Mi9ñ5ó<_^ ™Oñ_NåáŠ:oälÊt_tºÚ·÷r¥í¯g/‡0qy *’1°Î§1ñ{ÖÏS7³…·&Ùp™˜1ÃpûdKÂÃšŠ¥&Û®xÄÃhd寇ªA“dp)$É!°]@[Ôä'’ä1}½ÒÿÿŸðÀX ¸¿ç%|ý–{8rñ¤œüŒïÐ?«Hz?k—™Ò$9®ü}*ŽÇ¡Rx:96yŸŒ«äÙäØ6Å&Mšü`çŒR‰ š#X“Ï=Àž`oB®û%RÏòpà.¼5HåP€dAœ"Ïy¿³ þèp˜öү؎ç$0m1r€U\qA~-¨sRßu¤e˲…A'pG]=ÚèòÝÁ’»aÇ3–»ðèËÌ u¾ž‘EfH©wëK%³Ü?¹ÄÇŠÊ]Éì®ð/È3`s<£éÈ­<¨¶’ÀÙ4pdK†XQïx4qiO4)b à=ê:®Ï,ï9ÂÁ’ʰãÄ1/•G'ƒÖ ±§@sèeíz'(Àø•Ù RJO蚤 +.BÞ“ÀÚ¶qÖPOB—ïîS¬P¡ò^Å€÷¬«–ÇXQPöDÅ*^E- M©3ÔE¯'ë ÅÂÇ-âÅCçJžl]kL3„$Vœœ7JwH[|?½?,¨Æ ‡“¸Œ$F TxÔÿÜ«Ñûš[Ë,vD5ÚÊ£j-½{_‡¦O©w[ñ»¬|½ËаR—¬H[µ¢ÆÂˆ“øS+ªVdÇ#º•Jy‰%Ovœ V,;¼¦ùÄËx¦ŠòCб1¢iÚ4`3IqÒæ!—øÏ tݺt«óÇ«Î9Ó¡1©ÓcŠQr:8¤è5ÅêiÝøT§^“âÔÝââqxly–3±1CŠ©)èî<°ÃË^ó»xW$EÜ´@Ë6¤Íœo§»9©Ÿhå,ÅèbõT‹÷§)6Fß+jŠu{é½")NÞøØrý÷ó×°¢;_ õÚê•wã}|‚Žy5ÿޘߟ IqênÚÌmÃäÕ¶¸G?‚ÂÇ!ðÎ" AŠ()¢¤ˆB" 1ã_òQÓóE%(B¿^Ú øÅ®ýµ´ …q?ݣŤÝn†ï@“\TÉ imeâÊœPP*"¸?nL톊ÜÛßóœs²%¤)›4¿/ØÄ“S{óá1çØBÿcâ˨°½z(¢\"(.j ˆ (¢‚Ѝ "*H ˆ R,pÑ|‹%îí"škZ"Šhž)‰*PDS†Ç–ÙPìœõV©wÖ™†(ÎŒb§×ÙÈ´ÝéMcgFñ¬#Ðã:gSÐÅ™Qìa&>m»7PœÅž¶2PÅD XÖ@ (‚bAÅ…¡¸¾±¶¶Û”·æ‰ZÛX÷ä1âëò¨O¶ø¨vocÏÕÛ·äÅ|bfU¥ØÚõ„ˆ1öE¨;Ó×#µÄù„öy‚_E/Õúô–ÿ¤Æƒ¶¨T ˜Ñ(úƒÏw7CÙùŸÓ¶/ª(fôìýöøjØ ^Ë‚îðî(• 3znŠþàþ/;ä>é>Œ«3A1£g¦èß•DVx%A>Tç—4(fôÌÛ÷ ‰_/äy°3EjŽeYŽÈl¹Y_q¶%sEbÅ]m4VEfŽÅÑ.þa©ŸŠek"Åp¼쌺Šâáégu|ÝO‹®Å9SSl.OKQ[LQ‡©XÎ&R\~ ¾}¿¼¡Ç–ÍîuûèpSZÞ¶…)éˆ8Ö—\ë] ¸’åjƒçžtJ—˜â/Z7oàWG,Õ%bCÑf¡’®eÙBÐâ{>ÑAïh.3Eþ¢—ßÒt´ ßÑÏÅÒ4‰bxúãupxž\ºÁèÀ?EîüÀO›VäÏLÇ7MÖDÆôã£-iñº¡(_m½ª)Ò‘sy»$Ì y!ƒ¢ÃŸ©âOŲ4‰âñåGúuüÛáÁõè"û7ŠbúXTnl¢¨è¹Äíh5¶Þ£ÀiŠ2ÛÌHI‘ßMyÀª‰É‹ò¢£)R ÔPÔ;½ÈŸÂo[TŠo9±HM¢xp.ŸRBÇô:ØÑƒ/û"%âÀB\ÂÅ â©OG–¤åŠœ£|Šzî5Ztδ^¤c’"ýœ$E>Ò§&}‚byš@1üùƒÝmùB5¸bŠÜÍ‘HÏ%vIŠ<ùK9}ŒDQÕÓÏMNEWSüPO¥¨†¢ Š%oÅö?öîö5m Žø½²2º‡0– ÍÈˤ‘¬YdaÌÆ‰]æC•ÙŽ²çÁØ¿ß×Ü-uk×¾ðLïKIλ3¯>Ü/mû-Ò…':Æ.ÏüúVq8$¹Ý»4À'\Nñ9ÍFAM-Ðé1•”‹}EŠož*ŠK6ſĆÄã‘X­Vo6޾ž‡Ñ7?í!Ëjˆ;|ìò-v%©Û–tŠü­bÛrEŠìåóFa`Û“&“+TÆo_ç“XT7“lнгÿç×#]”íi‹I–±Â^⢸™dSü¨Ç‹¦µ"qhš”ñ¸µüZ·œâ^¹¼G§Ýýû…ʲµ|Q.1铽*jvÎ.–è~¨!¶|¯X<ÜrŠ¥2Ø%9Ïý]&{²ï¡®{z¢5´Ñ)ß½¢¢‚Ož€Ý ÅRí15eOÅÖÔ^RœY,‰7F…޾äï·\¶¿@ï•+$p…"Úk¥˜i¹Vü}f•r¹\a²$ƒbit·ø[¢å·¨V·°m‰>çŽb¶-¥Z±vœ¢àY¸¿¿K}µ"â\¬U0ŸI’ ŠþçH ¶eyòè} O‡}ÿœ–Åù0oÿp(s ÊV(‚ÚèCCœ‹µ25¤IEëý±öüÖlt¾8÷ëO\7˜žÏ¨nŸ´Y¾’‡GÜ´=°K(¢I%Ѩˆ3M”i?“A‘ ¦öÙ8ìÚ®ë†-fõðuEÒÑiŸå*¹øàp!¥„"xR`îÏUQ²Ç<Q¡]ŠFÛÌ;Õâ¸ÚËïû+¦NqVû UƒýWÌ*ªÆÁ!¿Ö5s£¾±»EÇ„"ÉøHîöP½Å c±&;%‹¢Õ5ž`h5O€2õëŠPD†2è­KÑàŒ¯œ\ÿnËeQ†9>AQðÄõ=ÆÎYœ±^ʳ(fQIJøRè[xí.§ˆE1M‘c⊠]?< †Ñhè:èºÉâ^~dà¦ëÕB¡Jƒ;G Eº&êf58á‹ç¦åæRüwÀ3>Ë´[YŸ¢ÕÛ¼(hž¢‰D‹¾•¶*6êœ"Z¦ ŠºAÔ0ZïðÞøÈ Í!v4^-:£Å)âP?¬ãôCWÁdšeÝ£:K‰¢˜SŠÌ›…vLñ¬º\âx@Sî XB‘¡aÐúg:…êr$îÅQShú€Œœb|- õT Ì"š8aFzżRd>·è~ñúMÚ^úmžãˆ]ïPéåt@¸œ¸—)Ôбj h ŠÉ-§CÃÕ±AáÓÄ!-Šâvf Š–ß›D6QìN@´ç 1"(9&§ EŽ ½âHÀÀVP4þ¢H+j²*ÒŒì}¹¢¸É¤ˆxƒÏ'óȶ][³£ùôøÒXúª¸¼³«7¨.›¿)bôàÐ\öò#§hè‚"¿k\¥ˆžä^‘n'éZê^ñfRdÌo¿ûrÒ ŽÃ³/ßCRïIÒ#²eê 4ßøÆ½ükÔ阜"^½:J(‚ªÞyÓ Ž¸"^éXEU¾±óüÞÉ|ÔnùÛP°—^'ŠâvfmŠÌý˜Ú˜C{¶VÅíÌúŸ~úöó,gŸ;+Še}Š–ç÷›7è/KN1Qÿ,CQ”$Š¢¢(IEEQ’(ŠŠ¢$QEI¢(þjïnR†Á k%\ÈNŸ´ñÂÐ x("¾HðýÏQ#7-µn28ó’?9ÎîA"(¢H’(Š"I¢(Š$‰¢(’$Š¢H’(Š"I¢(Š$‰¢(’$Š¢H’(Š"I¢¸+Š).õîÛŒg‡QÜ%Åàc 7PìÎk%ŠíDñ'5ÅioûÈþ½Ó´EŽcĶu1øÃ€Û‹¯ú°ìïiVÏqv q輬ÿo`aˆcwÀƒktOŠsvêkyÞ@‡€bD—M >—ð2a~ó¡(M¸›Ã!³õ[wèNõt)ý#gÅn ´¢ê×—¸Óʬ—]àãEÚ2ìËÈì6EgõÛuUÛ¼V.ŠOÔÿð§¸EE’(*’DQ‘$ŠŠ$QT$‰¢"II¢¨HEE’(*’ßvø ×L‡IEND®B`‚instagram-feed/admin/assets/img/setup-uncanny-automator.png000064400000041753151435171370020151 0ustar00‰PNG  IHDRtBWž«ßPLTEu‘·ïùÿOVc”–«ntu…}ALg?HWLe‹hw”6>G–—¥LUgILWçää5PQ6?Psnw4>J09D(5CM\N^x+5C!1@)5%-8>HN+2A&2UZe /Bbdj'1$.+JP8CN$,/Ä‘œHR_%/ky09B", (2.7@"1"*EOX"-%/+4>Xl…&.9',4>$/ *%)2>!+4(Ng$4=F&1;!,6æñø;GMgžçôûhŸfœZ‰e­Õg²ÜfbªÒf™`“BpŒg³Ü Nth¶ßh^™¼d­Ôd¬Ó_‡*o–i·áY‡d©Ða¢ÇLlg³ÝjµÞd™_›ÁD]‡·àïùÿa“Z‰h²ÛZ‰í÷ýhŸgžgžT³k¹âéôûêôúÔäìf¯Ø`”j·á`¦ÌT•¼l¸áJ~ž kŸc—îøÿë÷ýéôü8n”a”c¬Óîùÿ`“Ááòòûÿÿÿÿúþÿüÿÿðúÿøýÿõüÿîùÿôûÿh ÷ýÿh´Þïúÿiµßi¶ài·ái e°Úf±Ûg³ÝhŸh hŸg²Ügže®ØgŸd­×c˜f²Üdšfx³d™bªÔe›‡Æb–c¬Ö yµb•‰Éh´Ýa©ÓŠËfœc—a•a” {¸b«Õ ~¼ }ºήÖìu°b©Ó…Äd¬Ö‚Ác— €¾q«a”}±Ïc«ÔÐg€³Ïn§‘ԋ̰Öìs®aªÔz±Ï¬ÖíÛî÷¼Ýï³Øì fšD–ÃÖëõžÍæœÇß(ÉêöûU¡Ìl»å€µÈãòIË2†µmž’Èå7›Ò"‡¾<»¦Óëu¸ÜY©ÕH£Ó+€¯€½ÞL©Ü#zª†Åç\œÁx¯p¬Î8•È—'ˆ†tRNSþ          ($ '%"*$./!,2ˆÄýñÔN•ã†zx["Ó[áµ*¦i?4ðnYL"ò¢–<;ÜÊ µ…‚ᣔvqdC*Ç»±±‘€VEòÀ’t廩 Â<åK@5IDATxÚìÁ€ ý©©€Ù)ƒÝØAŠÚÈé(’ç+:–MV3û¶‹·‹ÄÆ_ülH‚PĤ•ª. wÀ0Ù<îêêêêêêêú!týž¸Xwýd³ý ¼§5Ž\IŸ¾OÇŽg+~ ñ9äÖYó÷»7žŸaåË– œ¿v…˲ÄhE bL¹3 Œ¸Õ>Aqˆ¹‰›•É2ªQ·BØuÕíã5ÙÇÛHjv¶ç3L,ÚWÙX¸Iì[òº¾Ð¨k=ÓˆWBð̈€à:ðº±'Ö8x…N`Ü5 oô ~€Ë_ .È 7=¾€|Ñ+h; HúœÜ ìBŒú1ÿ›D‚¸œF & ÎB¡5c~”HÊÕÒ«Oïóƒ·âÇÖðóïïΉˆSPOø\pf6JIa‡¼d¯ÁŸîÈÑÞ…ãc’Å)q§1¹™S46%Y½À%T‹ä£Ã+ÉôðE×Ç¿Ûr¸ØyŸŠÜ%èj ü"J>b7×°çÍæxe›ÛÖÆLüg9?åó²ÑV‰!·™Ú»DìÞ(íµ/gZõæ")™ÿ8øÍ£1ûY'è‹a·…X ÎK|„H>YfV)þœª*÷1´%Ï÷Åéo‰1"WKåM,U®{—©Ÿu÷*rÙ³Ÿ¯ãØR‡ùOι¼8 Ea<)IkC¤ÝuëB,dïz6ňTDQ©øAĈ]„:aîht’:âÞ?Àµ wã_äùrîÃÌ5M;»Ä/É9'ÝüæøÝ“;uºÎ8xr'†À]å°sìÄÒk€Ó½±ÛÚ%Éjá¯Zß•“OÆáÐùäÊ<ôü7†yG£i4>¼Ær|‡‚Í]t L±Œ¶X><¾{íZ”æe< ŸÄZ=xKøT+)Ÿ‘“޲ •ªwôrŠü$òZ]±§£Þ-!7m¾8øµ ñRK™„iA™GeË íAbÿ³—¡ï;m—þ©Cwâ*utÃ#«9³  ä G/®ÖD³ÌÙ…ª©:Ecçv^»A4k„þV®£M‘w Ý^?ÈR†¿ôûÎÿ ¯ëÇõâÕ"Å\œrªu³]S14–^¦„eö¢( ÿ‡a½O«hpøQ¼’ Üj®¡ÊŒ3¼KÓ$šž¹Ö4»Ð‰Ã«h4·ý“!OéAMfñŒ¹"«ÊfÎ].PQP ÈÈů1q GeL[×F‡¡?9õB·õþ⺞ãõF£‰ÅØ¢>ÓƒlA‰J¡ÜÄuÉnÃ5³]2©›¯MÂÐwÛ¾à:®çùÑq†Î’¶„\UQ" ž‹JA‡ÝHìLœjU¨‰^”º:=pÝ~»™úŽ7 ƒ€¡kâ”k$ä+ö[Ž4Ø<“§XÞ©aøûK$@õ=ØK«·a/½`èpõz‰R"RQ°¿lfŠ_bqË„;ªãÍ59t<òBü µ}‹©«*èQ£Kèèq»Ñg}®˜ ŽBÀñqì,F#fõïbÿÊÊ~<ò]·ÛRqÆN8è{ãèèÆÄ+m¼ú ¦Ó…š%ùZžvÀX¿IAìöló²ßÑédê¡Óo÷TCÇ hx9¾1™¡Ñ€žOkv¬F¯€=»:÷:%Iš+«—WQ ÝkëŒËþÒíûߛ޾úÀùà`Q®%ÎHê–7g½ù€W¨ŒÅ>Ò(ú®;hi§÷‹x寳[—¶v¾þs\ê仸@êðÉmÍËmX9Ì#ˆY üòD> ‚pˆA½ÛÆfzãá­‹×ß¿ßÞÞÞÚùLЙ9„Âjr$m ëzfÆIyáXlӠõ«Ã^¢^ø®×¾µtúðéõ¤÷`n C6v.‘ëeC‡…#Qdø¬wlòrkží^BÇ–—ߺ­€é³‚¸¡¾µõitc2 ‹HJöxiÚžiãœHÀŽƒÅÈß~1ËtZI}ßkÝøòÈ5s ßáN·Ј ¼ÂÍê‡K¡2 °F!¦£Ø 3ÌtŒ/8íÒôh— o[Э®7A‚=˜D¬ ¸ ó.¦vÒÈ÷{ïºméöéÅeè°—ï;°—zŪé+ÖÕÊqGè}Ž›È-ÿëÁ¹ç¯ÒØí:íÙk|j1‡§ôµT·/6[¶KƘ9óÈ.µ·ÈòìÞ‰ç¯u‡misÇyö¡}›¡ï|]zŒ£dø¦ÅõŠ[³9ÙAý7võ“¨½^_ëZn÷÷ªŽèê| ŸÈù,¹5>Œt]e\B1‘+‡ÏOIg'¸¿ÈHÿ'Ð53]æÝ×½>zì…ÁV[ZsFÓ§…›µ¡kO)#"Ö¬aÑ/)»a6#°C/¶3FÏ)ëÂŒt(1ö;èåÐWçÌFšpœPEõ麪2b¤ SÅTÉ[,wù FùÖ·Êâ%têkPOï··Î[xw»ŸFO7̺׸1ɳ<Û G↢ÛXì ‡WÌÅÙ˜¾^]=>Úd°Óû8v˜¿¨{Q¾.G4þâÛµ ¸GYº¶éÒ½—¸ha58ªÊvMSÇ ئ#þÕÕŸwá31ú`/]d¬ys-_Þ˜4šFʾ‘aÙfäUŠYº†®R-ÁWe3Úßu/ñ’ùñÕÏ>[ýf¬ì†yzŸÝéô…›úMÄÌûé)xÉ/SæiÔpîŒGº.xéìE³g`õ9Êã%y!Œz\dRÍ©Ï@?™OÂÍ&.ýehe¶ÈØ_]k¤ïUË ÄôêzîH3Š•ÞÑQÏ6ÆWhé!VH_øúïϘN}½5Nµ`­ƒ3¤mYòÒCéu šº’—Ôý\0ëÝ!‰KèÚÓw’,GXü|`šþÖwŸ è»…ÑØ5ôåî2¤/º´+ÌývgΰӖ¿d ‹f/©·nkOOJòÕ˜ÕI\ä˜*c\ü _æ0Ü|Fú;zzŸòâAÎ6ܽ,ô¢ëGFŠ”7Lùa¡" 1梞®QÇ\F»ºZpÕ?ôq“ùüücX@ÐÚz"V‘_ÚÑÓ{XPg£¦¦¡Ûï8µ´}ß«‰oðX¤Ðj]t”(x]ØZ¶s‰~ýï¥~úAÙÍÂñSòì·Ç¡l ³¼›ÝÑ^úø†”J`œ­ƒ©§k$µ ‹X¤:{ïâÌ9öáH_ÙÙ×cQÏÙÿx@/0ê°àökœúFU‡e¿3ô^rFYaÔ%¯kÃ,äŒ$UÓ¤>lf@ÌzëQ„ŽÈ“БúÊÊN‘Ž˜ãg¾ûxPê:‰ÿÏ./ÓIµ#´”€Þí!d¼%Å^Úú#¡Õ xÌÔ<0a4}Ÿ6i£º¥…£'Ò•#Ý$yæç¯ˆùi¤¾'N-0À¬áäÕäklJdÀÓ;N[š¹š®[}´UÏ™M‰«ëÈÈÖHÎkÍÞ¯#]¤G Oâ°²m´d}櫘~3ºüíW_ý£#ŸO2þÜã/`/½åÞrÒ™0òä¥èäH6²ÒöèKdZÍ\µÕºRº¶——:³\Qª]Ù6Ø7Ïm!Ü…wõÕ¯Œ9\cè7ß=»%rI)½¿$â.³v,aƒ»è’×êþ½ŽØ‘&MàTW@k ÈoÐãÙ BG)Þ±ƒD„ ˆ_ßZZxåݘN‡¼¯cLø%£ÿ1v b•˜ AOg–>Tòz°æ µÈ ©*yY†Išõz¡Z¾/é:e\¼±C×GÇ9ãoÏB×w§¿{è Ü|àMtsð’ùÏ"|x£ Yã*CßQéËu•65Ò1c7ÁïF}ˈh“æBgz~»2ÀKPð’¼µ–8÷DÈo=l$#]±_„. õúá‘:µ¥o]cå`~&!Y%XëBž.J^Ü\XSvÝ 6I›V:b]ŠvTs ­é{¶«§c¤#h±I‡[œúÖáïJ~Ø1 ÆMœúÙ&‹c¸ ðZrŒežŽ%¯v›[ºy¥U-äñiJÂ܇ ‡6oØ“ìÜtiþuoÄ]Fº€Í;­%Ñj§yïÕÝh“Ž Á¶®A¯…)åz¯¡ÎHë’×êMn¹šu²‘Ÿªç¥ó†A JrµÐ¿“!OÞ‘®,..!_Ò;:…<öæ«o tlÄŽøçpùQ°–5àÄ )¬Ovûí.Æ·zuuÅõ²AΠ‘‘¢ï˜µ,; õBkþæ§•bÓu 8p‡^6lGB—ìϾ9¤9vìô'‰ÓÇbõ1µ+Ršsm!aPu¦nH¤é,O_D`hpe9Úv~<Ó¿ *½yçlü/Ÿþ÷å0±ú™¢-…»ø°Q¯/î:âé²â¼ÎÔ~”*O7l#Š(%‚S)^³õRâåÒàùŠÒwGß:ÊÖ·ŽÂrbù<§~ ÏðkÐÝDÀ›Gþ(0KØÛ%Ž2›Ç”“î«’¶û‹u/˜k3Mƒúi1Ëbc) jÄuZ˜¾ÄÝ¡¿Ð¥D€K“‰cÿáÄ[Úà·P"³üqðÒ/ ñ°·9@\m …[ ê釺Xð’O¨cso«R÷œ °’n¥Æ\& ß4|›Nµ5×öÙËbLÚkØÞ€áo Pÿ1žÓo¾õ‘ºtšÅ>ÿ>؈…ºjrÍž¤ýå®JÒyöríT«îÔgHKž.©Ó& ‚°Ð +×#ïd==ç¶6&<õÛGR§E^#kgå…?0æê0n0Ãa¯Ÿ5€Hg–.‘³õŠyo®áÕH`,i¤äíFË0-jRTë-·<ã¶ÙËââ6£FÔ%ÌÍEf-*©üW^8ɨ¾£ /$k•zJ[ía¤êwºíþêjG“¿»äºa!²#š&oøˆH@r!@¿ûôBÑŽ¼EÿÛ‡B›+Jl@=ÿáG|cë±¢^ÜØqÞWΠ·ÙãF ¶üÉe¥Y/Ì‘ˆÀ(š¶?*H};ò,y]¹ƒ½Œ Ï¢ýä¯ú±•¸ÎÈ ï`äãr]ÖÒ°%qÜðÒÕN‹Œê€ý¥¢›› ˆÙFŠþ c#ˆž×*ߺÃ@z A;q¼á+ô óÙ,üPé7û›~xûóälcÏ=˰w&/ó-—4¼,±ìÀð3iðs†œB›§v ‚KKó÷)æIè£Cýôï+½!3IÞ{_ëÌ¿‰ýåüFlÚoE·C…_l×:Þ2LMË’êºê¼’\=Oò†•¢P·Œ¼EÌÔ½B«2µ+è¶G`µN³”\O ^:qRf“BÛLA©Œ]vàéýî2”wt[qv6È‘€Rš²âó ”fÉ\èVTú›#]-ä{þý—_~ÿý—E{b“¡_àœDa'f]qá=t êºÆÀ¯wûÝvÍK+M•[n¡^Ëù¶•¦R·È -TÃÙré]:Fúm£;qò×—c:ñƒ,ó¸6eqRôbÆ›·CÄWpŸÕÓáî¨ß‘‘Žè//¶Ê§Ð¬ù~ÞOO±‹+"–)ã\Õ-êB€.í~)á€em¾<¤#Ì]6Ï ?Ï<'Y _ÒGâgþ‚à×ÁK¤í6>+-uSÙuêõ!¦O`|JÉ­“囘é’0 +•;žþ¦Œ8oh9vì’úõµa9ä̉ÄÙ 5Äb l±Ìjì†ýf½ß[íàƒ/mõêËÕåŠëT³¤š5Ò¤ d¸y“ÎE ÇiU`#ùÔ."—´wÐò­# òP¤s_W^Ÿ˜€ÅHï.÷ÚË}ýµ—ëÊ%ÇiÔ) ìLºÞ°³˜«GY’Ã’×¾;¨r6"q¶àªÙ'CþÏ7v¡3׺@#?ü; @‡"@F>€ÉËÞé‚ë‚ €ÏfšìÅ0-Û¤APpfÃJñ†äÍBGÞ÷…\æä‰/¾àdÖŸ²p€M2à9mµ¯,f­Äû"ÎYsÙEå–ãxA–”š ž–’׿Œ~>`uF·:uå0ôD¤s!hywvt-6”Þ;£ëòzö/¦EÅ[Ûü –À]àîHw÷Ë®çy5öü…m¤J–Ó£ " 7,ËyŒd¤kiü2¡Ñð{”Î%«ÉXWçôS|ë8‡ÑÁ’ºÔ½¥Ò¬[oØ5ÚôÓõ(#ÈÏÔ"ô§é ŸÇ@⢴ûBOòæ/6­Mö÷ÓÏ|:ÄúósOóK±²plWzÂèaèmˆu˜šVþrmF¡zYËΤŒ98Œi3 Xòš¾~0e<‚Ï2>ûårÖ&|^ìýyæÓß7aïܧ1? ÉÍ9¸¶!)'£ús ~ ?=¢_:‚ÌñŠRèV 5Ò´ƒ&52éyíÈKÇX7I–‚KËóŇ*»˜½ì(DŽm\'ãÐKÜÂ&á3ê¼ %6Š»ƒ5º»Øšvƒ!V@Óõ ‹ÿ4`­{9¯4õ°²d.Ò¤Dþ¨ìK{üç1è§G—n°‹cµãÀs/ð$£ ŽºlÏ|Å =anZÍtý‘/ø×š>Íg³Pò*¸•ҕß{yîËã\´¿Šèß?ýüÓÏ™p监ÐU«wl‰}íP·Ó‡ò‹*yíŸr+õB®A‚ 2å8š–Z„H“ÐIb†Pòšž¿•A|á³—¡']^Œ±ß>¨­Å1$ ±g=°žÞmܬ2>8U.{iD$0|ßHYú3.>ñóqæ<·tßðÄtÂ^v÷ü0È\ä,ãKá_Y‡@g7¤ÚÕëæ]Ç©$P³™6æ–‘ñ©,y¹­ë« ‘‘ž4znõ[ß+ýy’›ýøBܼ[‡l‘ÏŽŠ÷ë®(ÍW!”ä-£i¥jÃÂÕÊR:— ë^¥2u£öôçÁ`žCè<0®³LèÇVÒï×»‡z½ŽþÆêžb+ôrÉÑ iXi{þµQ–Ó.\‚ÏîÞÃ<]åééøèU#c»aØu°¯÷:} vùéåûZaX¸„4I`›&°Ò3вTÝ7­ÈÌBÉË [•Ò5r ƒU1Òcq>>~ñ’óøÜaEèør,yÝ´§¼×­6jd’44=€!CÃ6í|@ƒBaÖ©Îß)L=–½ä«B>ùE½1ÊrÓæHê釀w¿/K^WOU¦g½™ °ƒ‰´¼¤®dáœn†ÒˆDA#¼dºx3‡.rFœ®;ˆž.TÛø9 '­ óãø=Fz’tP[¼ƒQ CÈÒmJ3vÆðSÇÝÏû“Bf Ô+•=8!³—#/h{Ñ ö¸ŒK]sçìu¤Öú!˜—î®Ê4}õ¶©òt®@‚Z`g›fª>B*ÒL–fÍ`’ä áôžð=Ò'ŸåôçáŽô bç-.qâ㬊>ïvp…™£C½6 tl/+ík͆%$c›÷ÉtŒ¡Êa¨mfý&ÉÕ/-Uð1 UxòÌ^@š;‡Ž{DÕÐcÑÎö5ðí±¯w»í~_½û²ÿâò´æj¹\ÓΘ†•ž§v¹&¨aÐɦ-·5»ïnéŒ9ø @UÔ%ì1›EÕiì|Eíök^§Ð¹˜*WÏkJ²¦JÓk^¬ @-p¦î¸aiê.€Î¦ŽUFÅ;±ƒ§<¾ßhŸ‘ècéŒÌq´§w{øÂtŸÿqÌk/*»ŽC¼,™´í¼•’ÉÑÁo4}ß4ÍZ.ëxŽS¼¡3O?žþd/I!cN\Ïø´uÊ8w­Ì^ Qï­¶;üáô+fKPŠ.äreû™…¸5Ìh2"¤@ õÊD cΈöra){gKÌdÆ¢¾¨ÈkúñéWHñËŒr®îîj©:Änfšª.JÀn6mBrèéξû!{ÁP—¯ WÒy¼\ùÑÈ_A²NVmø:8Š R,y]6Uªº©Í‘¦oSš.o‘ØiÔ ¬z.—«–[Å+Å—vˆìe$ñ¸ßèöà®m]¡ÖÜ9qv‘Gz™¥/ív§ 3Ó•êœÓ Ô$iùÄÎлÔ°'̬Òp^‚¹U”¼À\ÀÓôÑ:Ì&5xÜ?«TþõtüôˆH`¼÷B³“yè)KÓ»e™¦ÑZƒ„Neê>yC*#}ê¢d ƒìÑŽ Ï^ÚËÝv{µÅ˜ÁhµªÞä.„ZTdŒ©ÁÎÒ#qnÁ­ÆŒ3»ÓˆsÐGŸa èÈ8ñHèxüñCž“u½~¸³H§æÝéB£P Ó²R÷@ÄÜÍȤÉ’°^._t•|I]ÔÓÇָϟR.&f£Ö{å½pMUŠÓî\½fSB jX)š“–Bè4K"¨x¹³¥©=·ˆz:&/àés„ÅüÀPø‹ÌæÿÆ:Þ‘Â-©HÓ//η¦Â ±'3M+CS™4Nö$–¼H@¼°\¼Bœ•^Žôç¾M{ôO Íæ ¦ŒË‡ÚÒûXÄ Ø‹ã¼\3­‰´ÕÒ!ÈyÉ‹šf“4fy¸·\¼ãIqw„Õ}Ã3ð àìäî%óøD?ÿz¯×k÷Úüëi·í+V\¯Pˆ‰ÙKúÆÑ XX!À¤5/Ûð·Xº# ãG¥: 3 ļ—»â÷xáò:öG¡‡9Ò.ޤì1Æ‹Jnõ’z8iNYJ 𦢮vjdýIâx•"¤/Oâ‚#és™c£á+·Á½q„Î":I~wb7GËúþ}{æ«õg&°©?‘¶¨)K^Yjâ䜰â컆!çåtÈÓU”ã¢w‘:_Ç4™ä‘Žñ MH­÷;XñjóŒ=®ëÍÌxog±r”6oùºs{£Šãø眹Ï&;³×t“ÉjÒ]RЮ@³€X[ïx+^Š ^@|QñE_ÄE-¶ö[Òb MBžJ”$ ¤* Ú ¢("þ~¿Édº.j·­ÂüæÌ™™3KŒŸüú=¿ùÍ9g·†Z¶%i¼ôW¬öGIÆ9¼8¢8}Ûˆ.‰—ã¼ÓøÆÁgÄÛÌ;±ÇžNIÆøôî|µh:ƒµWh–®¤†ÿ‘TaL*ËPÒõsÂtÌÝÁ½”îÚÁò£î0=žÎ®*ˆgÐ|žxz;wÖtÙîhU§U*ù¶.UÅJY?Y]RG*|!ò*ùý¤é—(zé´Dæ™uÂWÝ£NÂ\¸)áŽ8±ËdviF¹RñDNÃ6lKÓÒבò¯LÏÒ=z.—5kf+xŽ¿ƒR»Ÿú¿ƒN _Ë#£n÷x¾Ä¸¬¶‹Œ:ÍÁfÉtÛP¶”©{±kï1lE¾ÞW+†û(NòéÇþzg0 KXÇ­]d :"û-yžãý/ùÀ©˜ÅAaŒØ ¦§k À¶«cS–kìÌzf±Ò_È? 䑺|èÝøÆŒúW™*KüœãtšpÄo0šåFÕÌõ•z4==•)¯ R^¾ë»% ±<æœe¤au]ðÆvü­¦®­óý+§h¶Ñq÷䃲W«y%ÛµT¯Ì¤nL]lÒÒzuÛ–ž W/7îžHçº÷tæL…Oã‚ýª˜GÚN…†` ýÂÁK~wÙÉš^lWyz¾Ì+6î†zuY× ©+™õ=Çt…ý$é]yúÛ±dÔÖéíiœäF©]H:e,ì‹}¹¾’48ݨkVº&4’éŒ^ ©¤€¦g³Q¤NÐ2våä°vOg¬IÚ€¶nü=®0€†wA]öA±Ró(bDIÑT鿦¼ô:¼]*C¨¡Ðt Õ»˜ùÏ#}ëš  cgð|è^ã?ÃŒFx:¦×=0P¸¹•íó¢ UWªžÒ^TïAg¤ò¢”…ªááúyú5!ïÀÿâÜp†Ô.« ÍÁ@ðR3ûFl8ºÛ›NâQÊKË(Žî{ˆ^³ù  “¦ãÅôWo]?c™I$½‹„4/ŽãÝô=… áô™Y!5i÷ÈŒLa˜®açGRiI_wÅPÍ)ö;R Î¹—®ïí(>N™uÕü~ä0} ’»bhz¾ }q'^dÊ/—ÞŒ4,Cº®M)/§\ÍßMAîeîÚqLJÎüpt~/¡.Ò”òº} P®z!úQWÚˆ-™éIræ½e–& Ii€!á›N±šGøÂYF$Ô¿¹Žú’x:ïW¬._FÈM?~ä¶F«‚Ù—¹!CšÒ4‹ü³Ğ𬭬­ÑŽ _YÛÀ%xh4r«|š6²ÓÑGèwF½ ð|êeüx”•™ ››«Ó'áè ý軾ÜÓ Š¦oŽfwÚR)[‘¸héR–ÄÓ)~q¾J ºYs´Ø( $ꀎ††±3ø™è;8âH5le§¨gp²6‚GÀ îðŽ+¾…t-¨Ñ¼ý³°Ÿ81qvvuzšÌñ,/4–éäúv6gÓë¼ÂNʨÇÃ0xYz¯20ÊK`@#R^ùÂ}[®uÆèTP ]ÍàoÁ¶ÂõL\ãƒOmráOð9m04`GUüSø6ÿxivu5rôS§0ï…‘ã‰tÏF˜„‘ÍÚ†ò ƒÞ¨§¬ mëòá3uõ¥¯„¨šÅfá cç‘L½=²Œš\G—\`|MߌÛÑffø£Ž?ãzþÂÅÍÙÙÙOàéëgÙÓÉèë_oÃk£þZ­4˜µ}!•t5M¦îi21@î4£î»vÎóB§"|a‹<ž‘À}‹<Øs¶koãÏ&EOà˜Ü'ÛøöÂ/¿]š=¿Ä̧¦ÏœtÌðBĈ(ƒ—FÑ,š‚æí* 욛֔—&yŠÌpiPÖLÇiæ/¦uvv”¿30ŒOxO.Ú¬³¨ÿ|áÇ_.‡-žóÅÙOWáçÓýTìèÓïÞQ.;E!<;Ú+­ŒìÍh) ÓÙ$;»«$„2[2=³ÖÀ u’¡%;?ǂҴŠTzavDß5”fé–ž±¶S^Zúr¼ZF³4U—XÖ{DŒŒÖZòÀ½H¿$ÖµÇvÙ$Ÿë¨m†Õ„ñópn”¥ÕÅ%‚ù7ñ&‡ž, "›z¦ÎêèÜBbè[¼ž(8Õ0,ù~ưm‹ž+dšw˜}QHzõºuýT_-ÍçoÄ"mŽÞ@bas« |š IÁ#¿FO‰%UdÓD›½||œˆŸrØY2êF±!dÄÃÑÞf1¬ŽzäéÐáåõ4S×t‰ÚU®!DÉs0Ì«Ux©ÓÓiƒ1yòùävð¥‡^}`/8û©Z‚ÏBÆ98¡ð|ž@OÀ§ÀÀQ˜7  ³›#×ÅÝhäêü ª•ÑQ1IÇo M”VFK£ªl¯}Õ£iu©,[ø²d Ï «»›ù{iåºìuª;xß+¯¾øôøäžññÉñû}ö™7€œ#ïEÔ¬Ü Q½à¤#¬&‘wƒ:€ÇÒæÇáç0Rô#´´ñÝåFÙìãoÃT†THéÖ¥ŒQ§qQ©~*µè‘Ãvk¥Úhh6ù»`ž]'övæûû‘ÉñÉÉq§}rlÏäžÉ§ïþÙg^ߎ¹¯dߦ~δaì߯ l1?EâÂŽ; O?0ÐOÐk¶m+ƒå3wôÔ>eäÖƒ©"ìÂ÷¯R,7óÃ7x‰WÜiós:0ôƒo>ôâkOj ?'ô8왜DŸ˜¿ÿþg_Þ äÄÀ™1 ʶۧicaѳ(3Çh]`§ñ¶f¿Ùr²ž°]ݶÀšV©Kéº#¬1¼$¦E3ìê–(åj}f+¬víÚuÃ]˜6î0V“מ¿erbl| ˆAÚÂ5®Çàòt2>†ó1Ö›…é-9‰ë“8IpcÃ9‡1óhá.„é$éî®¶úkYß§F®«[¬0-…¼Ù4ÞÀôjR½¾›ójY', ïÚqãM·ØIlÿ+û^|dì–±[öÜ21A‡1ÀdLjõ]ìÁ ´ð×{&"½!Ð ü$?{’sÍÆÊBÆA:<3/{ Rw&;NÃp•}(Ët’¡¥Ü؆&&K )*bn !!!$.pAœOÁ‰+gž‚·âs(‹<@ÝŒã8N¾¿ý³ÇvìñֵёîìÐölû¼omíÛèŒþkGtÒ¯åu}™nm '½“®1Í»;oÞ½{÷Ã×ﮤY’äI–Á}±X.9eWð’«Éby%#jA‚$Ë—Wòd‰E ô—„8qÕê þØ-õ/Àn~"Çœƒ|t4Ýwv=ž÷.&Ó)2uè×õýÿ >º±‚¾v,@Bã—½IgÝÎì@wzm0DÑ…ke++SY¥uš§@ÏÒ$]fyž,òE’/– èó·Ì—K| ’d‹<'œ_És¬”‘‚o¸ÞÜùŸ¼¾&rï};ÈÛ#ã~å®SGNLOø¼wíg´‹yõ«.k}9è;¼öïÛ¦Ó«ƒ¨³X`opaÆÆ…JJUÖUš¦Y ø¤äœ$išƒ=Ë–!ó°=÷2¯2 C•yÂ}¼Ež%|¼™üC)¡Ê.½üøâý—¯÷/â0ÿáÈädõv™^ÙúX[g¶¯³½LKo'¼ /›M½}±‘¡vá¥Ë Qïn(ˆMl–Zʺ–¶®ó¦ÍïUš”e–Ã7eYå ³²J!_•2£XžK¼ IÂNUB".Ó2«,ø1!RÿöÖø·µ²àÈäP§åâת¿FAtz4štºgXªž ú]ø­7µ7}]íÃke’±Çm^>Î*$ì5Õ›÷Ã04ÂVj­jY¼ªK›§)9_Ê*+óR–i Å´¬k< €¬ˆªoËÀ%è³²†5\¦eneV–5"E äëLÞ~òìÅ-ˆs¬™ãÖŠþê¶ ¢þàäpt`«Û9LQÜÏ:ûÇ6iWé£÷¥Õ«ä^þG³“w§Ì ¸ta0ï#š0¡VÒJÂ^ U×*•u)-F¶"cWÞ¯F(ZI‰u$®”uC”¬m•Ue›ªD¡ò´Äa$›–¶J±*I{½¹qâhË=çÏÑ›÷žq¿Ïîé'»—œéÆíe"à¾c¾Å¸Á]^»ý‡nÆ£ˆŒ_·ŽfÙìÀå­6ìÍã(Bb´+”ÒV–³¿ÔVÉÆJHã€fùñŽ2QÔ²‚¸µVÖœ´­-äJ×Ä’†x”*ÅçÚ;öùôæ3Ìq7oÜÏt!¢8:I¿ßÄëðÞístÀ{s'üÆ~úi_;K½Ó=~àÔåÑÎhÐïç½XÄB„­SÎ*¡‹Fhm”ÕJÕ*ØsXÛ(ïˆuFª´$FºF7VKOÙrÛZ'U›”G”¬5Šåk ®*%uƒ]o?zòäÁsãøwã` .ìŒXüâˆß8 EßÃÚ:G7¹ýc„‘®RV ùBÌ™#“‹§N_  P *T³Š aDšØh£…Õ§8©ȶ(€¥\Q8OS{¼š§nH¢1@aûF(o)áHïïùg©¥ç1¾Ó(]h­…ˆµÆôóÁd8=r|ÛÚ³y‹ýŸ=cÓ2LÊ*¶´™N&—.^ûÁ< ¦J%»‹Â#" ½6E㜅N(ÊinÄM,ŠÐ8í´1-rc^4M£ãFÄŠ”«"tM‹ÚY˜kÎR\£œjBÿµ"2QÐß99ßyÙhvnûP;%Šwv66—ÿvÖƒ~žºŸ@›ìÈÙé‘“­‹ÃÞ wrŒãheÈë12#bȇ!v•{lB¢‹@‡FsÓÅ”‰¸X!Æ—äðñšDp,Œÿ4¡Æ,D gBª ãAÁ±k˜›xƒ1‹¥R¹wýnû‡nvt_—þ :îð>äeÿžCÃÇ;ÝÙd´µÓØœe W€9PyN`iÃhOäc¢c.â˜&^@=¦P„+,`™•(v Q sá­€ÌÐÀ\òÎÇäi± *•Á`xaÂÊ:ÓcÒG}ã…_u£§}çîÜvœ†0 j f§ j'vÒPV‘6ÉE%$.öjßÿ•ø$HˆëâœÆcgÕýÏØžºÉ寮²—þp=îdT.É µÎÖL½é;ú4fK“ü©8Ó_.í}‚“ÇËêÝã— ` ë¦Nph; G÷Å”¢(xüÐmÈ>?}„ ö—ƺçosAYÆ«f2>;çTÛ4Íé¸MKUæsw:3ú­¡¿cÄx$Àÿ„ ŸÆQíÆ± —Õ=­}²-¾_9÷“éÙ&"‘_:ÓufÚŽiÒ¦d{Úú´e&¸èŸQMÔ½ôÀú|Á`.T€8$2н€8¹ÍQÂn.FHO99Ôx* Žoß½õûû ÆïÍû—{)ž¶´#Õç[36J¹%&¿,V/ Úº·»™tgí¡M À!É c r}at!£³u/'0ƈzˆ õ…ÔšøóÚk—’œÚºáyt¢Ç»{EàßÁ»ç¼½púÈæðP¯§JÕJYï}4Ú[Ë¨ÝØÅFc »šB'“Áؘ•M›¾á:Ù€­éQB ðSPBœJz8mÝÆˆéŸ-üö‹É>gš–`úa{p×>ÿòï=)é ÁÆã»Ã~w=Ÿß×ïE”5$·xo£7kyîÞêbùëbèæwkíýªWþÚåu¥Ü·ŠT¡\x|`C%W.BÁô‹q‚ŠßB»ÚN#ÎeN"·q·#îLœ‚Ðó¸b¡oï¹3}ùKzUbI{B^| -ý:H»›Ÿ\¢Î~áxZŒ×6Y|Ž^ǨµÓY¯k]û%ò! =$ÍgšBŸ BƲ¸’¸è¨Do­G½ÄEDݪ+}û‘õùáŽ#‹K{fHPß>Y~ÛQ©Óµ Øq£„’zJÞAR¢+ ³IB /3Ä8'Ê ä]ŠÙ‘²§4IF )çB‡¾%WòyI6ÅU뜌Æ^° Œ"ùaž¥U›fw¬ù8<  tø¯~¢~×Qõ__fìËqxõù€cçB§šÙ7^ n¢«A¬]Ø$”ðU*8Å5„6l¸‡Y… ˆCɰ“»…À5”‘»lùˆáDnœE#a(~NsòJu)!] n<3QfÀÿ€ö¯âÛKÕ8úñX¾ºÛÑÖkÕ¨ªiUÛ {¥Ô ¤Q5Ðãì7 8qJ¨Rô®(›Mäha# R Ž®Dd'h„) fOúKžè9³°gž2;`Jô2 ¤ 0¬|Ù¾.¾(Ãñýkwç»ÚH q ì1 õS´ïÿ†7£!¬Ý+»Yw×±%m–ü4Ö6͟Μ±>I~–º¹À’Ÿ\ ›Y=Gý¾¦–³ µ·ºÝk¿#<µ}?׳½ñ·ê¼œ‡8m§º=‡ñ-)8b»ÃKرW–ƒsÀnüÓ§¡¿~â‹[1ßqIEND®B`‚instagram-feed/admin/assets/img/balloon-120.png000064400000021660151435171370015250 0ustar00‰PNG  IHDRxx9d6ÒtEXtSoftwareAdobe ImageReadyqÉe<%iTXtXML:com.adobe.xmp 4I( !IDATxÚì} |eE™ïWË9çî÷&étÒIzf±¡Y—A„ÑPPÔ'ˆˆãó 8¾GapTGŠ‚‚ËÐMCCC#4; ôÞIgÏMr·³TÕûêܛ޲t–son˜Tÿ*Ißåœ:õ¯o­ïûŠ(¥`¶½}‚Y€gÛ,À³màÙ6-v%B&þ@º ¿Úœä°.I€lõ ç@Žœ‚$Åß@`‘A  º ‚˜ìž“ ¹—™Ð.T4%Ä~ñ([HL£¤ªFRø;ŠƒŒ(EdÀ€ð ¨ÚQpÝMQ£ ¾C ù¼€e ~Ј¢"ê%8¶‚”° Ç”ÉØ/J€r nNÇñ4ôlŠà•sjñYúñûÛWãØ&AI'¤üò™¸*>»Ð³FüuÕþ^ÂÈIgÇ,$äøwØŸì„kHñ¶kŠõ[ r\0ú-Ëâ ¢Jÿ½…xâ¹0§O¨¼úo ê)‹Ÿúù?—‚+Ò”VÈ`K!ήTÌ|cä @*¢> Jc^´„ÇNBØ‹"ÔÐçJoi„üCSýÂ…s¼Bª“aS­¦Âû©'ÕCr·ëÎ$¬gÙ4aì /ʾeì¤R¤b|]S²'wÎûd翈µ¾žò¹ƒ!žkÆÈ9Šðs¸-º—ßžû}üŒ£ä¬’5u`Qœ)œèPÄøÜü9¡š0Tœ¡)I¸²È«Ëå¨)q©Þ eí2¾ÑP!3ï²L’ò¤šx²2VâÓ¤'6Ö…·›)ëGaJk}JrZؤ¾·Ä{ EHMÔ¸das´ÄÌkôbSžšxÜà"Õ†8ÔÐpè$zÜ4X³¦"OV OÔµW‹ÝLám$ÆOòWe èꘔ¤øñ5Íá­aÃ<] eQÂNjŠvq5rÚb4DV‘¸õ5_i«2¶]ãœä‘æ&Ìï´{2ËIL9b†Øl¸ìIóŸ³Eÿæ¬F¹Em~`M¼B;-PžgÝÍ£Öµ©)¹’3D)(ÇUp÷°—'¤á¸s~T¸)úb4J›]GÍ €iá Äž°ë¬O‚ðMRéåï9@xh²ÇdOžåD ÚÂƶ{)v<äÿ\€õ£ç €þCb1kå0(|“¨â )ÖÝšƒèi—AìôËÀkÏOžáø…š¶A€Ï‹®"œ/CžQìqì± ôïè ´_3ùI4?MàjªË"å¢n÷ÉoBaí}Û{ª £ïx)Pžh‰=WÓ›9~Õ›ÞMIl—9z&,ñIsË#·Fм 1}Æ%àí¸ðR †4Q4¦,.fLM÷BÅËSh9:z­<´Û–inVþØ]°ï…íë"}H½‡…o´[¬+´˜VËQe€ÕQHœ]q2šãÿS ³i ‘©Ldó(ƒ-ΚÎ{Wô‰}ƒG¦ ð¸QYs90€_Pûô Û¨]Æßc. }ÝHËéu  ìõZ$.ø8ó*¾T;X} ˆž4@$Ž =ãЄ¹µquîŠ:ä^Ê,Ÿ‡µl¿Q›zmÔ6bM5Æ"ÿe¸»Ãë»û´&k—~¹¡GmHö¥·Ä uù¿ì9!ûƒ½îå }8¨¤{«³.§bÍšõö]Þ8äñ‰Õ°¶0Æò$Qyyç‘‘;Xˆ5äQc&t¸$„—ÍÁÝЇr~’3µ»¨lž3Ñ…ÜäK_Â{µì9!HÁÊ ÞÖ÷ÐN\úq6á®GnÒTLÔ ¢à–QD–¯g¬:óã(€þÞÍq¡íÛÕuÿç> ¡(ôÿǵî mT¢©a ø‘`ÝH½¢£Ì¥ûCò¢¯ çÜsšƒw²àõ\OAœ2óè…‘ÛóÛ3gà(:ƒ>¢k”7l|Þù¡¯çä.<ÆA Ès^~j>+„? Í•‡að77Cnõ£ ¶öƒÑ„@Ç#Åm¦,p}¿š/|…äpFISsK+ißFö šÆ„gœË7º÷KÊî±#A¾w/%£,šÂ߱煮ÕöîH$sh¦Ä¡éž×‘‚šv±öŽÍô÷`àþÛÁksÁha@b±ÉS4ÕN4„9o{jÄäŸz:¾x²êèˆ `ÊΉfZmæÆCJåä(·¨y>\ck†÷7Qžn™Ït­k¹-G]­4š@qrÚ“¸Aê3?‚æ_mAeè“(® 8ëû‘{ç'å3VNíÛ¢ScÔ IÎAQ¡÷˳١7"˜I›œëŸ:qJztWÃ{Õ¹*ëâlÏž`P%P±®ã®Ú19b¡¨þÓÝ#[4h¾Ô^u'´ü¦ꮺڰpÖ§AÙù¢-2^³h‹ Ñ|Bï|ßèKÕ£ li~Z6OiO±®QqÚ âx«8Ö«à´)wï}›°k…‹Ä¾´aŸÕ‡ ðüS`¿¸zôÁÆk!ù©ïCó¯·@ò‚ó@f\pÞBŠví±)Z›EƒýÀ«¤.»~ìùdžcB™Ö‹  Óp´Î¼¬E­Þ«àV\•»÷ÍÊ3Ó¸Ö ÔUO C*þË=û&FÔtë¾úkhùí6H^ø1ÔÂmp7¦µ§ß—³#Qvj$/¹Œý{B¢I¤à$~¡œšø& aæ5®Ë’v–€§{ôªS²6|d× 4;6ÖY,¾Ùu!FÆiðɤ²˜wÏz ±äøÝ¤›_†¾[¯„ÜŠÇým*ÞÆVÑŽÖfQ'jâ CÓ/ÖKqj¿âp°_{ EC¢Œ~R­p1(¸ùk¤]øþÞÃZüÇ*S²Hën} Ó y™$tÜàúƒIÄÀÙÜ…gÿ:¡{‹–ÂÜï®BÖýDO=5å|‘¢=MÑ $þ™8ÿËãÖŠ ²h(w@ )ò…©qyXï‹ç°çwõªcÑN·ò»Ý¥ÀëÅIgüCj¢®­â"Ñå×þaRcÐì·þ[BÓσØOÑgCþñˆ¼w9Äμ|üð"P™¸g ’Òƒmeœà9Èi<¶³WÀ,Á‹=BÍ3—Aœ½ÛUšÛBeküøNç¤Çbön¨¿I½’ŸŒ²÷ë[gV´ü<Ħ –i^$ÛÚýØ;‹½êJ5‰MK€»©òO< ê¦DGÆþGÀÜ›WŒ´¨Ç´C|-ºBÑ6:’T„Ø9Î|~5cz¿-X×Vp,m]Û%àJ•GÏü~ÚÄ@nå¯ô´.+ìŒc«ŠF•¡`(ø[mà~VÚVÁûfD<·†B#Rq<ÁS„¬&ëNômb…uRwã˚ð;÷—$j¡b G#õˆz†…:L¸WA¨WUÀk¶9ðøFÒù¡°156£e @e-ÿôêDy2 .ÆCÁlç†Cešð&ø©¦ÉBnAçCU!‡3Â9T°(?qÊtþ1€ýÒc4@p‡ú¸ÖyÅÄRk+d.m2Žbó `ÍFõ|tDÁquÔŠGè¡wê,†Õ!›^û'ênyA…“~Xm“¿Àʵá0ò¢&‹À‰¤±¸¨>€3!Qz„GI= À;FBQð:=ȯþ+3¨¾Oþ¢£›V…\±ÛY…,þ=Ÿiãkš®Nd>ëï7+ýþ-óƒø{Ðÿ¬Ì¹~D©rJÂFéEdá" û[‡EÿÒæáÁ†R‹hNn®:€=â+ ‡OU\FAô ‚»U@ìŒå²þ›J« jIû:æAÇè>9ãÖRQ¹AÙ™>Ý zvøþq½c5øà¿#‡ør©Äµ©œ¹ji(ëVÀ¨7“´ BMN°kæ9àlÈkÁÜ›þ¯ŠŸw»ËZ¬,ÀS¨¸(°Ä”íWŸDÎÔ6Lb8w¹Z¾$›PE« à^ìÇ8‰Ñ‰Î¡ÏŽx;pÅ✜õ~¨½î>—%ëßž®…ék½ß»Òw޼ŚJùyL»¯qÇ!Kì\pC .ue@.4ˆ‰˜HÈŽe:¢ÝëȨùìdø„³&–§5#š×¹º¾rä×¼æÃÜÜ’ùŒ‘ý ƒÔá{ª `eÑã&^VesànqPÙ jÎ7oñs®EO ÖÚÄnTšŠsÝ]ÿûBê Ö’„¿!3RP¿ö«Jæ[–jª:€c!Öâ‰}”.(ÉYwcN§lÊÔå—¨äEÿ¬ÐîtK“N*pE&}ÿþyè»åàs ðý“%­Y.<$ÌQJ5â_/UÀˆm!£Œ]+ð¶ætZˆŠu*©¹òÉ›ðJVd¥ÒXU¥¨×Ýöt^wØë¶€¹Ø/e ¼}¢N’”<ÔXu2 2gÔ€ta—ÉAhÙ!¼ìÛ"|ÜCõ9 ¨|+;À¹?‡îëÿDF€¹$Ž‹›N(ÏŠ9¬:€•€¤vÔ óèéºRmƒPóùë½äÅ7 Ql%äí´Èàîφþ_üŒù)756Kiéi"V2(+)Àj3ˆâp k¡¢{»Öއ6ßå4õ²È`gýhýØüõïÀ:$Š&Plß,y+]„©UuBb£M«OAáÙ§é¶ÓçóÜÊ{ç`ÓÔ§ÞûnDpwó60Nø¾ç©¤¾EŒê£à1hj›S@#@:¾ðqž¾ýjVÚk%ÓÐk²¿:®ZÝ߸Á÷-ó–T±ˆËwžP‹æÕð>&O³+Z—òƒÒ{ÿõ´õcó çÍgvEYTª£H­ú%lûð<È­|©p¨T¥¼ºZ2xß»Ô8Ä4Á<4îÖ6h;ÿÖw땆*dI9åcÐ-óÈO íÂóAõ›‹SÅLî÷‹QܹU0²•̸ ž]ÃY6›k‘¾[o£Û?ÒÀ²¹‹—ÆSõl.> µdÂ$ ÊP|çÒ«> F]cBÓçSs¬%I´‘³(›/e_>…º›^¬ˆ­:%€< ÜVY–‘âš)TKèŸxI…J‰ÎfHyP²]‰Ô|„Ùw˧9j¡¤4¾Š‡ÍާÕ|ú&yÚøýãÏQ·´SÙ*¤`Ù9é¹óM Æ"TÂæ… ï¶ÛÉösŒüSèñ¹ÚÍã ›/ ©+¾]ç­¥«`ÆIû”£LuάeõŽˆŽnØqÅ9¤û†3MÑ×î—›‚`²š‘“ΆȻßöoÞD™:~eô>Òï´WÀ¹A±°*]mH KIßñÊåªV»®¹ú‡Àêˆt¦ZYÇ“£bÞeæTõL¤Úª‚"—Õ“öƒîšî»Ï uª Ðû¨À4,ä¥ß¯¦ I¥Ïb¶gkÙŽªØ Ñͤ\è(Þ4ˆn€¹7ÿ‡Œœ|¾Ä,<Õn@jd'/ú*„Ž:¼í#—˜˜Ÿr#¡Ð[}¬Äfd2S!‘r»Ò~¡²†þ‹þÝ¥CÎ ³ Ëânª¹ü_@é¢o:Œv’¬Z³hîÈ×Ãvf6 r©k¶¿N§®×šÖ±ÃjÞp#'_è• º—Ež‡Oü0$.¸Ü-…I›M †²ÝWÔ€[}§Úyù’ädàÔDÓ@Â4ýì):út3h7i¨Õ^õC0˜¢==aýR‘U4YÕ°kJpˆ|vÂà2ΛýÀ[¡é—¯ ó ã $+yú>e0šdú!˜L§N{M]v£¯N´Ça õêŽn±µ£« óƒ‘`8ÞÚq;Ý ñówtiBë°ƒUÓ½¯x|îþ;-b˜¦ ÿü“@ëygÂŽËÞ™?Þ©ëOhbg| ¢§Ά¬/v&àG» Ö¶u9ÐÖ‹¬NÖà1§<ÓÞª(™GÆr“¢Áç¾1¡åGËÆ[÷UÂÖ Ù5îºãsË!ÿÌ“~~°Ô),µyÏG!úþ‹Á<äøqÝDô¶ÁŽ‹‘I«MŽo§©(/çž{'Ajn|Ä®. N{29éQG¼¦ÙîØwUà ¸áSN’ón_ë"¸CÊO}Òœ_ó0²ç'Ï‹kH‚q@YvôÝñch»äèøì2Èþé§~‚Ù˜ÔXÛÉO\²`¼Ç¸øUñ¥|¹G× ž\–¼€Â€gP¬$tlmÙ}s"ËQ?Zå–&|h«pª•(t¬>êè²½·˜¨O\ñs‚ ÐD©8¼1ùg×AÇ/ƒ¶/„¾»Â¯k=Z‹ô*ˆ}ø4p7föɪ‰¦^%[…rŸU¨è«ë(Æ¢_y_¨X1ÆdÇÆâæÓr„RÜ­iàóçCÓ/^th85é0¾éõ´ìëÙß b KÉÁ^&:¶ÒØYŸcÑ¡ºžìïA*]‚l¹Ë/å4ºh‘~º×©ü ¹¡#€È)AôoX´'«Nw@Û…ï@¥+íÇ¥§¥@Öýôå?1äÓn^Œ,ö'.îJÏ}ÆõØËœ²¥{/J¾û ¸cž"$ºÁkß ^ÇØ{Ûñµœ´N¬–sX™õŠT繡» pîöFX¤¶.0öOŒÎÄw§ê$õ~õo!k¿úïþ„Ž: Bïü „=Œý–j€úþ:®: ÙzˆaŽî—â0’Y°V\`óö"[ñ ^ÏÁÁÖKÁÝMþ(é׌¬»îÛ8‰ÅН:©Zto·í-ðZ7  Ì­àµmð“µtqR]V{ˆ†Bæ´ò£)‡èDx“ád‡‹ÙóZ.ø6Þö—Ç ªq³ÿ}/ÚáCoƒ«ù[gŸ5 ŠøÏ’[±2¯D`¿¡Ã„ð çBìÌÏ@ìì‹!óÀÏŠÍ‘•+OuH×{¸¸[­ªàD‰µP|pÇõþ« å×È^«Tׄv·¿½?ø4šÏûàÊ>¤È~ágÀ+°‚?Ñ4¬ët˜À£æ„ü»ú{îÖ×&Äú Ï­{ÝÓ8¾ðH‘ûc­‹»Avm†7‡‹‹ÌÍCþùu}tôÿü»`,lV7r,»DÙT$ þH¡ÀîJÒÒtP B½vQÙâìä1K:)Úà0𫟀Êÿ9]Ɇ˜x}lêNú!pÝÖ·}÷*:òY?ÃÊ!{Öœ‚5šS?áE/>®ú·»åÍbÛ‘6̵ÿ9ïý§>Û¢I³ÜŸÞ51ž#!ÅÄïkjøÉ^a×YÀ:<Ç?좾|†.1-½]Èî7(sôÜv‚¬ecáù?#…Á(àNA&ªbÜÙ.–¾×Û&>€få Þ“¶Ô¼+ 03i¿ÙÙt(Ìí?“®Ê­4ìÛ¯m â…‹¬}‹¯×Á>Bv Ï? Φ­@ãQ¨xC½Ápݻͤ£•†zµ³W«Ý z­ïxY¯GøiÂü’ÌWðÐg­´ F-zZõ€œ½ñPúèÎ×r+~Y”ÿºÜ‘ªdàR¯”= çöž#‡ó‰dµܺ—Ù¦\|€-ο¥2¾@1Ê?<*÷Å[y›GÚ=Ú#?XפÖGù°z¨(¸úVfŒ‚½µpKîMÙÏÂå[ýÒ®RÑÎÚŒò¶¿¡©ÔK¨æWý5î>´YÍ©0PöÚ9™_ó¼}[&«ÃU†ßüjøØðiô$ÛýWÏ1/Wh Q‰6³¼Ö7µçHì¥í3û/fWÝÅ<¾qÚ¾é 9Œ}[-—sHY×}`“7¼ü Z‹‘¯;‡Û7AKè+~¥ë P1 1œÀ­àíØ$yób¹Õª!pÝmo€ýÒJ`sXEÙ³ö;\¹Ã„ÂõG·æå][Á ¹Ã»Î°¡ˆil}áë4/¶h³ "“ˆ¦’è·µ‡ŒÂ()¤ö‹ƒèòü8*Ù”A!Ô–ÿ'³SfìþÒa&=Ã{ÕQp_ýèkE¤K» _ ·DïUnJôR*¯åðëŽ9UŽdÌæWÿ¶XºRŠbF\\v+úÁ¹‡ÅÇvl4TÀc•ÀŒNç¾Óø‡ü\óLÿÒ 4wÓ+#&~{Û7@áYíÜ •#]Nü,SëõÂi¡¤þͤ¢Ó‡ª1-Ͳš¿þ£´Y YVâ!¾OúÕÝ•«¿sß^» Æâ iÏz*LAnÊ]anðÖ…­ÒÁÙ0ƒî ïãÚoËÁè`îSf2öGR˜Ü±;ãæÒ(Z½¶·ˆÌôKîÁ¦õÁÚ9š"¸"É ÔîÜ_÷¤}‡(tM²À6üÁÇ’ÔÓŒŠWú=áë3 C7¨~Q6"Vž r ·­–Ö¡'¨ÝØ6ÝñÉ¥„X†¿T~u)WÈ ™ƒ‡™Ô ÆÉš÷MU‹qfPúFèêüNŽÔ›çË2Éc¹4çn|‰"À;_·_y„>zoa¨ì”«ån!ªœäšì‡æ¼¡ò…dàÛ½•ø·ø¬ƒT\³6wÁ²SÙbËU¾öqÑeén{}Ws«þ_ùµgUŒ÷fƒLk挭\¬-™˜Ü­:_txÙø?Òç\P;ÚOiJÄÖzQ~„*²ŽúðvlØ¥Uo{C¸Utn”™r(èÚÌßøºó—2 -{É4$ÁÑ1ò™zg)ÝîRnhÃà²ÁâÏð?Ú³ƒe×úPçÍçü=½áž{ì~¿6uÙ´çÒa“ôFBæ,·Ý}P/¥¨6‹ 0--0CPäÇß½ø[t\ÇUåAñ¹cóŽ·RÇX‘[ £ÍÛ Îæ¢¹Txê÷@"åÓb‰AÁ&íÎju»*¦½Ñi½»:iF©MÛ²§Ø=öýbN‚Aoþ£¢å¡=,3Pxq ²çà•+ß“Â&;ÜÖÌrÀý3±hU” âÓ>åW9÷wu › ŸQ®|:Ü`݆o^L hUtxØëŸå¸~Åu2Ç Œ‚µ…iàb !˜vûg6˜?#Ò0RVGÕ; UÒü0 ­œ¤Ý»Åöì)ÅZ?|Š¡ ¼> ùÕÀÀ/oÖ ¸ØMEµau[áS^¦pªéJ70îóvx瀚=PÛDGöXÚU¸Zù )Ô7;&5q†r ¼ÎV¤æ€vŽp<•)áx«7µåêkµbâ¸)­¾úmU°OÍ´TÓ0ëþ@8y lç{Ô+n”O8{Þ/ÍdZS/J©/k•'^µÚóïòºò'f¥êæ¸øH•Öæ£Pµ”rˆ•#/µµææxž{ J*͹VbÊ?«~b²bÐÄõ^q²ùÓÔ }(äÄ3¾î@IU—P­b€w3š±ÛžêñrÎç]Û ‘÷\šu•Dù¬»x$ñÁä–Ú UâRÉ^Þå|Òî*ë,ï‘¡aÍ„â¸fH#¥ô#IÀeyñic¯cµÅyŠÐ÷SFNRŒ4å&ûqæ£l¤¸¢5¦9…Nؤ%û[o¾ˆ‚|ÕQbp?³å ÞãHpPa?¹pZw˜öKÁ“Jìà‚ æñû”ªÎ› žxMØâ¥HÜØíuz*!ZkÈÔ•ùY€'kZ ¥~+—h¢Ýîxb».§MLÒÁ(;Wí¥ýÒ¼ûH!“=3bÐZ0À )ˆ#[ȹ\W ue¡¾|ÝeÍÔ6£ÞÓB@€„ËÅúÁ UƒKÀS{z&ëEB@.GwxŠbÙ4ÙµpÞ&mƬɕãèÃÚ•ZŽ °L :‰/›‘ú'p²gÔˆ–— $^¯âx‘¨E!$ô;ð¶l3 `U’ÁÜ$B`»äMí&¯ä7Dp¨ú8‰4×ÿ(5ìi­,Ùð·*ÅÄ®pM&4…uÚ«˜xÚÀ%Å­8¡™î–`§lË{ÐÖ«À`¥ãÝbú`Ëòð÷MÆçåö:'„ »¦!¶´­‘Ûžñž‰[òŽ€9YD¨¿ÍçkádàŠÐ+Q¤è¹BÞÊHYV‚ÑV·G‚—Xl,­Ýe Éñ"ã £Ùº"£“̇;µÀÆë}p±õUÈyg{\‡¡Ý…À÷ ÐÊ7Ÿ<ðüš?Ä¿¿šÑ*VÕ\¤"‰£ÓN‡%,@pu<±>a¼¾‰ ÏöÔú“Pàìgý¯‚(ù…õqó¬¨EiûVÿ£BBŸi|ØMóã¡Û{ ÌÝ&B;NzmˆãâÉÖQ°S "3\éªJ€‰>‘%¦îÑlÉ#…%Ø:”—F7H‹G³j‡V?dœøÿWˆÁò®ãYøòBè!„’ñSí’´>mùÔP +µÛeT-.]*Kè¨O:£!æÕF¸ªT‹J°bnC Ö;Jb_e£| ¿-ÅGeIWjy»?ïËhMòŠÉ”áïʯ³"”ò1ò’üŠx×(v53a..z¶Ue£³S0 ðl›x¶Í<ÛfžmÁ·ÿ/À­«FC°™bIEND®B`‚instagram-feed/admin/assets/img/book-icon.svg000064400000003063151435171370015212 0ustar00 instagram-feed/admin/assets/img/cff-sprite.png000064400000007654151435171370015373 0ustar00‰PNG  IHDRÃZ2È^PLTEýýýýýýýýýýýýüüüÄÄÄüüüýýýÈÈÈþþþöööâââÝÝÝýýýúúúÕÕÕ@@@ºººèèèîîîÐÐÐÚÚÚŽŽŽýýýýýýüüüýýýýýý,,,ttt•••ïïïÃÃꪪ÷÷÷===ËËË€€€ŠŠŠ888ÚÚÚ©©©ùùù‚‚‚ŽŽŽ¼¼¼ïïïýýý[[[ûûûëëëÆÆÆžžž{{{’’’@@@ýýýmmmüüüÏÏÏäää³³³ôôôTTTþþþóóóþþþíííÖÖÖúúú°°°ÈÈÈ‹‹‹‹‹‹ýýýýýýýýýÜÜÜÌÌÌ444888CCCýýý•••¨¨¨¥¥¥ýýýþþþüüüûûû’’’×××ZZZàààÑÑÑÇÇÇ}}}²²²ýýý„„„AAAƒƒƒ¥¥¥kkkjjjüüüûûûùùù÷÷÷YYY‚‚‚ÿÿÿÃÎßÒÖÛâFýýýûüüÂÍßøùúïñõÖÚàÈÒá***ëîòóõ÷åèîÜàçáAçëò×ÞéÝãëßãèÙÝãÔØÝãN ñóößäíÔÜçó³—ò©Šþù÷þõòýñìÎ×äûäÚî’jì†Yér>åéðÐØåÅÐàøÎ¼÷É´ðyæ\ ÌÕãùÚÍøÕÆöůõ»¢gggà97Ç•tRNSçÙ%¡³€ 3f¾,;TY!Y?Iá D™f®oNÚÍÝq8‹Ý™u3ߎkÜõßÞ·”…nji¶Ÿ÷íyæûöึ–‹vq(üéãÛš™`Löؾµ²°«‹re äüøõññäÚ×ËËǾ·‰}waa_\öôêçäáàÆaC6óð×ÕÔų¨›–”peP9/!Š1}&qŽ hIDATxÚÌÚ×oÓ@pS¯4NÈ$I“@ÔÊ£*[Œ¨D[{Š)ˆ!„ØKˆ½ŸNÄ©JÅ*@(TÐ>0Äü¯¸»Ü0v< ñ¤’S«þäw¿ó[á¯æ¾KkFЩþœ –É…`&£É‘†–\®AhÈåZþƒ*³¨øÀa…åp™°,&´ŒVbË‚eœž–\K_qçœ'Cï‹'/m ìjjëÙl PëYO  Sêj©B®a‘ñ¥È¢àš&IR!V€¯š†´|‡oöí샯ß[l /Ÿ>èmêÀ Ù¨ IÑ`K-ø)uÁò)YŠp7d M!ƒäúŠ4}9;ÃónÓýÜÉ€ñP:ŸOû%A¸|’ŠC„GÃ2‰g>2§È3ÇÆðp4ò<¾PøèÅ=Ž…¢uÿÔð°Í€8´vøÍü¦"×lg—GJÑ1w‡€C+¡J*©­DG±VÁÞÀâhˆú“SÖœµã°6\…ĸµgÍ”¤? ½Ì&f ŽÐØBƒ-7ÐB£zC-FL¤±9ÂJàí ¦aB­Á@Ü`"xN¥©µžrƒ5ÑM´±mÚ™º ApLõžçv>œò´kicWlçµ´ y:¼ÇŸWa4¿gC¯Ñð‚l–pq²}±ƒ± {Ú“þ8Y$zަ¦Úf4͘¬jô°Är`éáG[„µ±Ú¹2A–eSK( 'Ô§DœT„"ÈPÿòíÕû7&ƒe0=±1ðØ4¶s; æÈ5fC‘ü*$Äl¿ÁðaXGye2˜Ó Wƒ@¦ØÝ‘ááÎ&”¦„ݘÀ„<³Í†#ƒ–OmG‚®NqºÆ Ÿé8φ^3Ï#Jx|ß‹#Ú§±žà• íL«Ð^&T*ƒÉ ™Á§NÛZ[EqÞqQl¬RÃ+ zÿ³wÜ`-ÄSGï ŒàÃI ¢ß J‰™FBÅv¦« N@ÒYu†8¿S„93_lÔ‚Äð¶_Ÿt ýú«á›YÝ ¼± ù›¤±¯ ‘ƒGÒÑ+¤oæ ÚYF1.úâϧ6ÂaÔ5vûö.Qœ:‘Öᣮƒï¡Aïׇ«0ðÆÎJéU›.œËÇâÌ?và\Ü´*-e­í,§ÓléªbÃêÕ”PD‹¾ ºBì<-´‚†xÙðZ‡(:Ê[KO—ØÔúÒÕÀ÷CÚø3ä´ÛÃmrìÌx í{¬†XÌd3†ãžž,vÍ;Ѻ³uÞv±‰öô[fxýfp@ÿj6<÷0/Y—°ÉÙW{ÎÆ„ÁØH>Ž«³“x±jo“&ƒr¯<·6Š©y0)qºJçÖ÷ú;¶ П½2z{¸áA¯›¶n8¶BÞ&&2-ùó–ĸÙí µfÃ6E‹4‰3R©&qr2"0ƒ>ÊÑáû«áÅc`L‰)œY)Ù@ÎhŽ…ñC úè#k&ïlˆ„%ôŽÅ — õ5(eÂò´úéS÷­˜šR)AŸuý¬íˆoCï#` Q8W!²”sˆ}Ú¼B‡È{ë#ÖJÈ0³Ñ "Ðyi+z¿fZóAxáoÊ0 ÷æ†'%3€¯8œ‰HKÙeKépŠ{GµÁ×c$]M /›<†ó“S¡™TÁÜ+ÍAˆÕ>ôë°À›O:Ì N°æ2¸$N°CðáTÕþ0„—K½ ¿¦†§ Û6pÕá@àíL†Šu°ñÆ&ˆª÷ƒÃñþÿô@ƒ[œ{á íC¬• =q°bOŒLY)¸í‡à`‚ÿ†TEˆ4µ³]µ¢Rµd3BYéº_>ÂB|8&pkgÁ­±G MåáJ¾˜ opbcj*ß?”SB³Su¸ZµÞL©|Ÿ€+X“¡Æ„PŠA÷§wˆâ©ÖÓ|ÿÀâ`Ø:ÉÀ´×‘â<ìÖÑÆ¦Ëœ¸6~´\c@,ߺ2§!‚îRÇSp µ¦ðþÁsF‚­p±âºV]Ǽ N•`ßoXÃÆä®Ž8¯´a‚ìHÈþÁ»œ³/vo?#9ÎNüÙ½‘1#ð&h”‚¡àýêæÎÎ6ÄËvµls1$ˆf×9ŸÏNÍeC’|Bؑㄹdÿ ¦æÃ@Þ?x7 ì»à<–Â×ðb›¼ ðRü{v¹Û%£P‚pþÎCèþ¡3…JAöÞ 8¥ œz:”¸µÿdÜ…äýûoñ§PêÝñáÀA¦aó àU0íPèþÁ»äì=§g2¡ßïE³„àŽÈFñüÔèUø‹L BnÖ"<·"ß?456Mn3ì~‰­åzƒý#>_4ú”àŽà§˜îÓ„À¢@‚ÃþA0ăœƒ?›?à¿ó·Æû)„Àó³zóùi ãø›Mí›V·鈒¡É$.̤33FˆÃ<á É< $$zPcü }9ti&&ŒË¶àÂ?æû––§k×ö- ²}’õð\ȇ÷ÇÓïûnTÁâ?à̼Bý  pÖ>, kÄŒ‘çï:€üàv ÜÐñ®w~€¹Dáu€Žw5\œé1ò͈ÀÊæpÔ‚»ãír‚p_¡ ‰õhöÞ7õžåp <Àgù¿;°ü0õq޾+ч-? Ö:ÞN ÃéQ³Ýã`\?8¯P˜„•&g_P‡Ù9È—Ø[ÏÛAÓô;hkò:\\?X×LÂ3?„ëqt¬mÎ÷tÐvá°³Öát¸ët³9Xù!>þýûT?¸yþÈkM·UbC=t8„òÃøøÒS¸ˆèí½·;Žü£:¸óC4èÔžÚéâÀåèÙõ±C6èðnó-òuhp:DÏP±+P?ºII‹¢˜$¨”JŠ¢”¡Âã°V\@Wáɰç]H׉„qÞ»`Ï#Ø`dH²*%Ù D+ÜséW¢¶)è­K8Œfî1“üm«0“˜g6Q  ¦Ä´x^¡ ¦„•(ž˜9sbÂÃá³¼€‚›Ø ‡ÃtFºÇF#7lž%6çÙh\ü×$ªðí7ý|Ã8-ªP,žÊÒ¹ÅP ôt€¯jú:4Gx4sÎË2d’0ym¾·¦¶s¹eŒ—s¹m‘å,”‹++«²¼º²RTh%кZÐz8Q:ÏšÆÓ£à`H<›–Ç–7òç7–cIé«(ÙÕõŠ,WÖW³UZ šKïÞÌ# î¸ÕÖx÷%k.0—° nÇcÓÇv2oŒƒR̲²LÅ*­XŒõ\Ó_ «:hµ{9p:Àš`MßnàÅÅÅä úÀÉü0«lÉ…B¡ºErÅÅí°]gôï­ì­€}o•RxX|¸±1-cQ2*eyK©¬¯W”-Y‘§t5~‡Ó?ÄÆžoâGD,æïߘÄiÁÜ[Y©”J•ª\¦Ÿ¹ô ºš¿°Oµ£Et€ü bƒÔÈUQdƒ2­¸‡;q:-ph€Bôü“b*- A¥¬T•rÉ7QLÀï`ks€® ?@…~‡}ÕÓ¡Ùµ£5ß¡ ]NmèÚ :èTh¤ÃQ­«? â\:íÎ@µ£]m°´“FtSkµõrÐ;-Ò‹Ú1Œp8m×UÒµÖê €ƒ~X'¾´šz;tþÖT€ZoöµøZ£>†p‚ú˜ˆÿŠ R‘^(oIEND®B`‚instagram-feed/admin/assets/img/support-members.png000064400000014175151435171370016471 0ustar00‰PNG  IHDRˆ<Š?PLTEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑÕÉÍÑÅp]['"¸‹tÅš„zQ:TEAöôðÖ)SpI3Ë¡‡NW¿’{¾Á»2"ÃÅ¿¹½·3-(2Õ­ž5Mi>'crƪ¦±„mY`úÃÁØÜÏdUS—aCL?Йnî˲%ûãsU8—ç÷üϹçÞGþçò{jßO?öè±GŸ{òq¿ÿúŸôè>¿ÿ0jo=î›ù—ùÿ›Qÿsö©ÿ"jï¤ü1uäÎö¼UV43çÎȃwŸð{8Ê¿\Ïbãq Vy¹ÿßEJÛŠ- Ñh±7zÃÿµ·öù¢~Üžäi:¬ 2‹C嘙¶8V·Ë}²o7ŠxŠÅf^˜Xzÿ=¢²† hH4P@ÁúëÄݨ½íxƇ1¯R©x›:]M‡ÇãM~½hѹVn¾íýô_T¹Çųql<ÏÂãØˆ‰…côGÓÖ¼ò ¯Lm/ÿè‹Ú›ãY§ãêÕŽÁEý}q,2ïL­ W|"Žg¥¥Õe¥™{Íæº,j8¥ÎL¥P¹áÔp*q7ŠuRPFƒÛcB0Ò n5NžöÛƒ[éÄíÉÏâèàY®êÄÍSñºUâ1*ÍÄYçr¹á\.Ï Ï¢,*—B¥Rà@‚|¦e¥m•ÑhC0DréÛoï±ôøíÍQ>?9Ùw^\(’t¬Îß?~ÇÙQi ãÊ]AµÕkЇ3àQi ã[ëe_–•MlQô<ðP½xI þþY4ÀðHXXíÒTÑ€¢|O,/#V¯C3Ú|}:4¿>¿¾~6ÿ¾çhl”% Nwb‹•'‹…3è·Ê¾D‚±l}Ü…Ë6Îë±|¢ [›M£eg§¦¦b—V«=¯Må{f\‚ÖÙÁjë7 žžc·»ÝîÂÙÙ1Õç·ÞŸ6Z%¶&É´h~ó¦†ÊÓ°îÅGÊÀ—^F!•c¼CÁü–nþ>¿#¿»e¬¿ÿ,oþb‰yý/»ócpu•gW9\v÷Î;ÒÙÚZimm-F’yÄ( %0A‹ƒ‹# çdáÖi/ö¶µ--µ™MKike½NBA–µ×ZæÄIGŽI‹ IIØ_ 7ÍêÛ7wæ«9<&ö]ûþT ŸY,ݤ7èÚ¹ÿάT*ù &Fê% ¼©¨f2œ‹5æ»ÇrÞ(hÊåÇ@)ÇRR*ÆïMÔAxAØXnúûEí… 2™ 0 y·‰#s¦•jO‚Õœÿnrž@“ì< “iUm¸íËo´Î"P x‚,i¿Ù¨¬ö¬.×…s¹½e&¡07GÊ±ŠŠñ *— E åÃ5ø#ãšÏœi%&†b$€‚@LåDb{§gR¥¡+ç‰hçyÀñ¢ßæ9âIJÎU•}G”Y?+¯>ø@*Å@;×Ox<Ý6×âO˜%”‰rH Rhh‹šÖ;4´¶f¦†c­-÷õ™ˆDDr˜LqRR§p„øYn§gGUß#YFQ¶@,1››99²«Öj™jY”™Ÿ_‹H0OÀ’³™™. _Þ´(ÜîÅ‘¡Ô²5yî.FroŽOËâR¸Üñq̸O>KD¢ÄÐÐÃ^KŽ´«G>Éíüz‡žƒ„ßµäqõ³{S ÕjUN.'f¶æ6I p@Åb žå/¿ o.ÚìîÁ¬'Ì"„2AÁã(\½ÁiÐë}–œ9!J <|‹„#¹¢†î Y|dddú¥]KÐ.ù«ÛmQu€4ŠéöЪÖüú‡A"ËiaÁbé¶Ùí˜%ã// …ò †RqêT…<|¢q:YN=Öa‰DôÊM Ù R(úD”Ô’Ú³q-@Ò¹,ñóâÞt¨ÅÁA È‘˜]ÌÌPQž•.ãlZ¶à—}ÍR«ÕK÷î-™ä¹Çä¦{k[½ááëk8|UïÄ¡mÛOâ ƒP•$‰ ÛEâ–ó¯ÐU ñ2…¢ü|=ddÑm±ÀF«â­JVÚ} ˜¤RäH‰ÈÔH—ÐàåÏ.ž¸ “ô¦¼¡s±Á¯ëln΋ ¾qaÈOÕÞ2£‰q¡-/¯­¿eŽÑÜÐ?vÁ\×ÖÖ¶Ž'À,!žAE"K ›Ähß´eИª„ôÈÈ»(7¾Ì( yóT“vû¤§±SÜUÕÚúQ`FkqeqÆ7ïÈrUW é£C¦D90p+laÚ†ùÉh˜»|¥e.÷«¾nmXÁ¹¹¼¥suuf3`À\ÞÜ4{‹504°PœÔ¿{ Ñ2%«.kNuM<–lͰnå¤kx*û"G6—'î"DN—~|:£2ãôiB!9šZBN#ˆ¤«TR|¼à=r¹´ôÕ+ç£B>mʈ;Êç¿õŪª®’ƒ‡H9$f]á16 Œè¼v›Ñ×ðÝw}'òys^ÛÉ“KjuƒÛöð†p*4„Ëè 9ôji4¡4$9,5$((d¿Ö–Ömó|mìY•Õ\Ç6œça\VLUÇÇëè5‘é‘Ãq§É‡¾µît駣ř%%Ÿ¶æ·÷@×ñ7D¦”LM ªé_£"ºi†«"¥B’ËåêÎ\›å„‹›…ǽ­G¾ ž8º?559;;yTˆM›Z:=30À”zVÐQ«ÕFº•N¿¶ª«‘¥Ç]>TÕÙÕ•‘‘1Z<:ZYY;zöøƒ¿É‘Ñe ¤KS’›LÊáæÍ ù±°D =E®fä²XN'°¼]‡g± ¨g—ŠŽû"4:$95ùå28%GÙ®du-,XW™‘‘t,Áú»•®ÓèJ¥bàsÛ›—»ÎÖK¥M•¤­âÑüãïÌ<{HC×1I‘ñ ‚…[Z#êò€ñƒº¯ù$CÍè;Ù§–ˆ *,6¼ð½!äÈ)8]Ù?w ‚´?*¨%X{>99ª»;ùòÅ„‹šIh%ߢ“Ú#¨dé2ƒ“ T4γµßë:;ÓTœQÜTY\<ÚÔ4š–dd”r %)'gÆêòØlhžZ(T3Z²ù/¶œ‡ZMKB¼uv¸ÏvbËæÅ`þ«Ãqïˆ(<rôh$ê„8¹jE°½±q5>ý%õ{uæ”vÆñ«ëw×u!NÄ߀`ÒAˆwb*àü픓 ’ôH`X§ÈÔŽ&MÑÍ5µBtˆJÖi¥lEó¼)æt^-/›k›î\Ëy;ÝUwý¸žÏšíjýUôö+‡ÞóÕÏçù<Ÿçy¾?.?Žt­\TÞÒÚ'×»5°qWV*+\éð­d:´¯@\åüº¸k×F&ßmme‹Ð}mmm4Z›z0I`é‘t7©áÇ/ŸŠ| Æ(cJcÄ,²¢ë™·dv½æ`§•Häñì2Ï®HH;´záshê9”; œ‹S>E"•Ö "àÝë++>ßúº£Òát8™¾¬,‘ÇDË…4Å>?õîWy,ºO­îVöôà‚Á .©©SBûòèqÐÅ‹mlÜÓˆ¬Üf=ÓÔÏ•v»Á ÕzÊJ—š/”ýé[Ë ïÇÞi³úb]à÷ºÉ>v—ÞÀô17õ>*uÓàs؜̹ÚìììÞ,6¿ŽÇ®b»Îœ©‰0Nõ`rðèÌŽFòŒZBKmµZž(èqRUhÞ–i2´éyDžÕjõH¥iãKû.´~Îþù‹ËÛï#+,Xëbóßl­¯Ï¯ká³Ïë™L¦Ýº¾n%­ÓŽi'='HÌÔ¾òX 4çEUUlJ­»ÔjuRDðà ”Lf…Ú‘#áQÆð€‰ ‡.ç9d•ˆ&¨ÔD&Û ¡´R=]/M êß=îr¹¾~o{{û',XƒWW}U~l}},‡µ`+Ï`Ï1‰2ð‡Ï‡Þ •ÉV¨T"¥B×WõÁ›¢”G$I{W“š†I‚ë‘ÐhF#8$%<ò9cdddøI´}áìÕhjld2/áÙ­zº[Š-z-õŒëóË—Þþ ÜÕ«Øõ"výr‡SÁŸœ<§eÖºe‰¼4¼ÆÆ-Ã; ©öÖf+ÄPÿSÄ|ðÆTô]E«D-¹:H£ $á,jÚ‘‰«ò”Z>¸"£È+„Ì êÕhàè rjy ‚VïÖ{Ò¸ý{Wßû´NL¹¼ý3y«¾á·¶¸Øõ±ù.)Ÿ=I0Û½Yë>ƒ~}%#ãXfovvNöT:‹Å×ñEU¼þºˆô Ê™ÝÝ=’ž¤¤A5MbéPw<iŒ4$(Å¿PZ£Éêuj x·™š($0Í9f-½t÷Ù UË111é11G±:àQTYœúåôg­.¿œ¤ªx“?bÐZ5N§#éØ±Ì¬¬œÚÚ> ¤²| )NÄfœ¯@_[SÓÀ ÎÒêèè¹ÄèPø¦HÈ Htèõ×À1¥ Ê®53Ç„‰T™97ÇL0õï¢Äø…òïƒþ2à—_NËäȈJ¥ê›,šµÎi§szz:£²òXM/8¤–D¡4@‚%A§E"M¡»ÈMMMWÆ¥žŽÑoOŸftw—-Í’¿„-süxc êÍ‘U¦&‡é¦[y]ÂDa!œ½B"léQC:†‰tŸ¿0úîÔðð©áSûUbÒr¹*"‚`¦;Ó[eeuõ1M/8$û<8XØ8±â¸ª¯°Å/“Þè‰?ͰŒ^bœŽf4ݰ- -Ù^Ü“²çèqàh|YÕd3™<±01ry•©U˜~`³À\ ­¨8 §àÚOâäs8ªˆdžÕQ Þ«3ÃÜ’•s¾¯®­N»‚¤B%„ÚVfµÎÄ?½?^c‰ÁòìÐÐìRÛãS0­0†cåHM–Y&$¨Tá¦L˜˜$‰LÇ´šŸŽ@+óÀÅó·@^¾§!¸$‘GÏ@î€-ŒŽ8š››Ï”׉Åqqªéºg‹Û)mL’ûg0ѸAi7y« omvÖöü³Gah‚¬Æ3k²dT¡Ì°iØ£ “ ¡"ð$Œÿ+ƒ)°2¢õ$pÌÏÏ/<]Ábˆ¼PH°¢hu8éúœàØ×|èPb²Ž?%Oc{æ¶w›f§ý\Ä Pá;íí©N]A^HÈÐìJ­qñ%´2¦Òš·g5€ˆT"©PЋZY, %ý›;Öƒ~— Ï/|ÒÇ¢ˆGˆŽl•†9sNmó¾}û½ö6×b™h½6Åç£;nz}Ü2+ÎÓ.¡^í ©›ºeÖgºíy¬b5•†‡††N;õVƒŒ@ ðààÃä£öêDú[Û; –ß%d~aþ‰ ¨‰HT‚ì5ÍÍÀ±÷µWÏZp8ËÄ` öQót[AetaŒŠ„qL{•yÊ\¡2‹"ä!.à33Ãô‘J%!pyŠÒ‹RW'aïÂòûŸzÎïæç‡æKòÅ#‚ƒo!!uìÖ­¹ìÇÛ¯vâ,_bÉSn9Ëð Z 0™^–jÛÔååååæ °l «ß¸á‹ñÅ¡Ax{Wr2Š‘.Ï“V'N¯~%—c³þî¸d×~™¿>RRR"`ÊÆ¨€…#p4£uy{÷î d}ˆÃð/u¾°²4ºÔG»•^”Š÷*•Ê<à@ZÛ…8~—6A›—Vœ*%&'B=B‡(ZI*9kuU¬ÞÔ`³ŒáÐþýññ’4Ç”Q‰v³ÕÏñêî7:üÁf @”:gY6Á—qmŽ-p8>Dòúgã&O{BšÇãIK“ò„]„.¢ÐÕ•õŠóõÑË;ó¼ÑÕÉ˜ÆÆ#’¤æÜ­1™v âØ EÀ„u´y ÝÒ4tM¡pqSɶ%XÄé ²ºtý긩TÚuægçÚÐU!“Îjzñb8(ü9dG£ß¤@W|É©6§ÖŒ8²ñqpÆÏ‰,«ss¤@©\²¥¦’‘’×g r  sY½$!‰§MawFÈ#"º-1 _|Ñ;ôøÝcV(Kàðc€?ÔnÎ ±7 ‹Ó½{mM8­ æ+!!@R0×RõÙƒýýgÏž]Ê-ð ak˜?:ÙÄÅ@BÃȟƼüiù ù9…b2fyy™…7Ÿøû/@@ðÚ®ïÕÔhGf˜´ QÿÀ÷&âPê‡Ö€dwQÑíÃ+CCÊÅE].‡a¡& ¤¯8 8ßI…v2E¹þò?žw‡B ü"Hj§[“Ðb  Œõ²˜ÕFpx½‹‹‹¿n-Uß¾ýÌʬnÑ«Óé €p¬0Ä×` @†÷'`ðG¨G[üü7ªÑ{ŒÀ«ƒœ‘_€oDG0 w†"Á® ˜Å_g«o¯Ìzu°g€ã&¶,àÒR?H ®ÒÞ)L†Ì¤(ö‡Ò^òÃ>ñWŽ@Ä"…[ˆE†èÑ%ðüÑÀx<`uø& „²¸u¹C Ñ w[}Ô\à€wkí<‚ò=ù£€ÕßsÀ.†åÁ‚¶Ã"€¸À‹ ¤bi `<ôÀŽÕ•5*^¯WçÅ2HÈÆ•¿Zí*"æ\³AaêÿpÇê^ºïá;¿¢`^гÃhGÔËw Þw·Õ•ê›kÊÙÝÐÚFõ•{Y}XÔŸŠÂ„ŽOë>òÑ]V÷֣ع׳ÉÓêÿò¸sê}hüÈ}ÿ¥èwÁ}(ĸ0fûIEND®B`‚instagram-feed/admin/assets/img/youtube-icon.svg000064400000002622151435171370015754 0ustar00 instagram-feed/admin/assets/img/sbi-exclamation.svg000064400000004122151435171370016406 0ustar00 instagram-feed/admin/assets/img/reviews-icon.svg000064400000002127151435171370015744 0ustar00 instagram-feed/admin/assets/img/fb-icon2.png000064400000000434151435171370014715 0ustar00‰PNG  IHDRºWí?9PLTElùlújúkúlûkûküjûkøpÿkúlúlûkûkùkúl÷kú]ãUtRNS€ß`ï@¿Ÿp°PÏ p ²ð7€IDATÓeÌW„ EÑ'Uš…ý/v‚$ÂÈý zÖ+c_0²ªrJ‹íuj_MTËOLƒ%Tl7¨­Mã¡'²:µ± 1n@yï›lG]±‚ï8×QÍØOiÆø instagram-feed/admin/assets/img/instagram-icon.png000064400000001623151435171370016232 0ustar00‰PNG  IHDRójœ €PLTE½¢âE?ǂʀ­¨ª©ÉÎ"t¦¬¯©¶¨Ú7VÙ4XÝ;NÔ/b§«ž¯¿ ›ßæJ7¤¬°ª´©¼¤Ë{ËzÏ&oÐ&nÙ5XÜ9RÞ=Là@FéO/ëS)@Ò+ctRNS`` ` ß¿€€€€``0Ÿp``PO ßßßÏ¿¯ŸŸŸŸ€€€€€poooo``P@00 ïïïïïïïßßßßßÏÏ¿¿¿¿¿¯¯ ŸŸ€€poo``_P@ @¼Ëæ_IDATÓUÎU[Q…á50 ÝvwРØÝÝ3t‡ˆä_÷ޏ®öóÞ|t;çP«Uª ¥õÉ÷6~8‹~…ÃÅB&Ê ‚QNUÚ‘X¹˜trn™L6¯<Ý6 „ÏKƒ<Ú&ߌ@w¹·]½ýVÃ’`@Wr„A€³û¡L?Œ‚÷©éVá€väò!”ùhD뮎™v"Ûô‹ùšŠ€¢42Sd€,¤„¹JX_îe刟pf暤{ÍØåwAK°'5Îx,f:‹*Ìf%€^ instagram-feed/admin/assets/img/rocket-icon.svg000064400000002042151435171370015543 0ustar00 instagram-feed/admin/assets/img/stars.svg000064400000006711151435171370014471 0ustar00 instagram-feed/admin/assets/img/social-wall-graphic.png000064400000047462151435171370017154 0ustar00‰PNG  IHDRp(ïø<–PLTE«þ„íð̃Áˆ•ó“íÇ({:Avîµ.‡½5|¯@€“òñ¤H‰!-‘ñ›¬‘ï…Ø™MŽ’U–¥?’9}Ù^œ2‚Þ‘ïŒê8zÒ¬5‰’NŽ‹ç#(Pa[Åc¡ð í”qP¹.à\m³^m­*ƒâBoÎ_t·fR¼CrÄmQ½•­Ž4†^Q¶To¸ž6ˆu=¶Ty¿‘ ³†ÞQsÁG¬=x׃ ,.9A.ô@úæâ3ñÀ¥êÙ¶£Ó|¥¶‡i²‡°aÉ–`Àß–‚bmGwlYuTF({W‹S:lšxqDN6Q=¡ë™æK$IDATxÚÜKh$U†3Á†4é,Á™]¤q‚›,fÁ×è=˜Nãn\ôÆU‚†Ì ä5Hv!$;„< t§_>òžd|¿ß¢ ¸WžsnU?RÝU·ýëÖ­šŠè4|žóß{N¥»i"xFz{{olU ©R:>>.Wª…ðõÓûvý!~PÊ'“‚Fàxôúõdr£DÏï5ª“o¿xϯ¾x·åbn9_ˆ^èºÐ”i)qîÆ…b¡Óôû6Þ~’?˜Ì&“„÷h2¹Hî£{MèðÝïýA÷}Ëy;) Îâñh<½àÍ›±ÀEø%r4Yè8ýbîGñ¼:›EÞ„¸=ÿà^“:z÷“ó÷]Ë;¤—Cà.€Ìp‘ˆNœpùr¡ãô³·TÖ¿ ¸!p#œ·ÇÊͧ²ë9¡{·åú *®Ä¸ÎNf…Y¸»•BçéG+p?ËÇå™Q9¸]­0 wN¾ëné±p›˜Q/tLJe¬9€ƒŒ:gÂ* ýñÇï…ŸùKK¨ é¬ŠpdáfÝ-œOK´…;* &qppéá¬ÀM:M¿XÃÛ_ÞŠ`á®o8ˆp“<£úÔÑwZv ÒÂ’…›‹pµp3¸ˆþˆ'Ô°oÐqúñµ@ý¹ ´¿ŠŽÄ€Û)»gT–. ÷ó§\Mgp~ê{"áæ;oSÓêOÀÜ_?üò‡íiù"-RpÌŸVïµH§d×OZÎÛ ³pkq iöû_¤æ ÿå² 8Z¤’?Õ-œ?K÷Imè¾DÚbáâqZ2˜žR#n·™Q/vঈ—ŠóÙ¬Äê ÌŸêο¥ 2£Þ£7 ¼up{Ýø’¡·#-œ—Jàp›ª®å_z ,¨M²pû«”Q  Ò9x-v¤…s×TÖ–R“Éüpº…k¥¥ Ì•·™ƒ38k KD6<`ˆ*hº «Ò‰[Á¸oà´p9w ×bK×n wX@åX€38BŒÎƒNX¸ ÷éýûJù*w³Ùk6àÎà)Z¸6ë,]ÛëZ‹ÌÂÕî ¸ˆáø 7nÆ%˜=¸OÚût¿ÐQ*åmÀ©Ö¤t –®ý­Iߌ.RçgDš8)¥z´&Uî+íwt“Y{„;Ok’ßXÛêZSq–RÍÎ"͸ÉÜó¹¶&•ïÛôÚA¹3²kux©7Íð$Õ€ttÒbÜD]+GΤ§K ÆfžQÙ±fÈ— šîkKg~…,'x»ö,ùÓ ¡;m5rdá*+>– îÃqàè*èSÀÍ»X¸×œ¸uˆ¥+ï(Þˆ¸‹g›>ú èNZ‰›jM¢ECW§çP/òæÞ𴝡fµto˜LgAÀ›Òœþ· $ж2ȩ֤€»ËIÍíøÊئÇ›*h:¾_SLµtÅEžQ•.ΖµÝ×ìjrcn–áfpíJDñèF³.ïÖ¤½ûuµg¢¥+mpà,I5yqcqº\i:cƒœµ5)Úepze§æÞ4Þ 5©9àLÞ0Ö¤kY+op—M‚vîÎN–*Õ:ÙÕÔ ÇëZkˆ¾!°<¶vI=bûCP&®ºØžˆ{kRµ|ðZc̽f”¥ËQ€S9®I©üÊÜ”ž]ÐäX]k:Ao¤š‘R4:mÅ+5ÝÂy·&í«8×!–®¸¼‘nvâ°Èº1Ÿ+ï×Ì®&n°Ö¤ÅDe89F©>p[µ²âþ§:tž&á[:´pŠ7¥$P'uqu6PKç;­ÊÖ¤ª $bÊAš3§’4êt Wÿ•ûbéàÁý±tYmÍ€´]KÒUˆ,Ýœ·¥3.È©Ö$rp¡F¸gë‘Ù´Á7]¨¯Jã–î š¥£Ö$QÙÒ¥p»NóæJîÌkÃĬ '[“¢QSR*í|o ¸é£ÑŒJ­IõÕ¸¥ ±­©2cp:sÐlÓÆbÎ#»šäXkÒ|<´”êÑ˘aŒüðF­I «Zr±tÕÀJ;ɹë(t—Vg'Ë•ªt¦9öá–ã<¥.—M7rn,¬!o0è X¸¹&ƒQ±l·t&ÕÀ^ÏÖî:tdé¼6LLr¢5‰œÀõðŒ* ëaÔ5Üd¡yUŽ÷·tÁe×âBF§¡&"œBàåÒ0|é䆧¥ wØñÊ}WH)•R'W„D9•ãÖ`FõhMÚ¯O‰÷†IˆmM•­LV#NC¡aÄ\O'¯§áH¦ÓpI'½k`áí“…u­.´pK_œÊÈ¦Ö ==õ— ­I¤¤Z:0ÊÒ•ŸŽˆcØ]³S‡”= ÀŒpüqCx;®–ŽÚšB rª5)”Ê=É‚÷kб”|P¸œKkR”¥3¥6ÉÚMœkjAÊpæ'!SZjÓÓÒäTkR8kTdSBÙ"æøæÌ8ø„ªwVÐtÜ,%3j`ÅE•Q•uî’^xŽ0ÑiƒaÖÀÜ-]ÐAîýwgip¿õj€–J ÝøÄ ó‘k¬5éKd[Siƒ2ª.úmq$ eå0B—iN_N;´ímé‚ rzkRXÀQl#œ¨Ï’î%ptW/Èõ‚Ü_¹¯ž—’jÈ5°3àn*Ôˆ?¬ÙC˜S.NÀÍÜe†wÙÝšg[S@$ª5)lk’Ü#8Y­ñEÄÑÁåµDeÎ%Pø¡¤ØD ¬Å–®šË8SêÆÝÕ‹È[ö ÇxÃSÄ8á&ÐzÊÒ­äZléê¦U½5)¬GÀ)â ¾‰Õ)‚æ„M èà<[“üUJCkk*Î[yûùre¿œ›Ç&`å0µ²m%b &˜íBâvË>Úšü9ùÊ}H›p$„ ʧ2‡Ze‡Îƒ7×oÙk%ÕÚšJùL&#R*\³;%bi*·² ¨lÂ0‡×».kLS°Úni[ÓQNÔµ¨÷2Ù¨‚'pÃIü<æÜ‚§…óOI±¬¥›$޸˂Të|µRšœ½»ƒqîg%Q³ðö”¸HrƒƒÜÒa[SÑÍÒµ'ÈÉoÙæ¯k… œX*HçȦ±X ŸÆb9œw]k¯e”P[SP5°êñÀÝ„ËÙ^)O/®^daŽ–«Î(ÇI£/tò?pœ¹ÁtËÚšŽ·p¹pœÕQ%jºh0k¼y·&UŽ[HI`mM•ˆp7om<¹øÓb‰,"GdÃÍŠniÀ….³Ë²ç†I«ƒœú6Z£†"ÄÌäðÄ;{.¥‡?³F¸^¸u¦â“ƒj`¥âp»™ñÖyº‰¹»›I¨§ZŠ:ÂŒf¼ "qOIàÒ8¶½j`] w V p¶ÇAs$S²n -À!l¸Ô\5(JÚßÖ4ÝÌRˆË¢fõ¤²ëäìêCNA§€Êhp©»A‡Ö|×ÀO©kMÿå :pJÎàc§×ŽoD7Q”jkjÓ†IqyãÜ2Y­u^·tÉë2Îsi†Mì°kкe–îô¨ÑÖ$C"œ¾±,s¥-¸õ÷ëu-ÿ”„ØÖ´¿ÅyÃ5(£ùS·ìz–[èHv/g‰k6ê8¹m_–îð¤±Ö¤h—AÀElá ²iK.±jL8¹oà“ÿ50ÿ–®ü F8©l¦±o««’¥Ûa.=’Q&Îáèd"?—pdWï¶&AŽ[¸5à Î" o1÷µ©’^× ˜’b‹_íÏe,Àenf2zë|mK· Àº´´qN àÀ B²swÓú­Iy8)Šk˜PõÖn˜QSZk’OJBlk*Þ±šlî“UÊ9°t„ÜeBàˆ5¦U¸À‰éu 1Hð¼k`ÍoÈoáÎ<àbÈɘxK¥\-\€”š©ÕHÖ¥ âM§·Î7fé6ÓLrwDJ1ÂÆ•@Á…ñ–€±½zKwT£5 _¹7¸çRØ#ØàÞ¤(ÀÝñÂ!(JH­yµ*ãZç›ÕÀæî®!päÌá©” ƒÀĉnšokÒƒœóÛ@Ì®GK¦,—âÕ¦þþþTªæ¾A[)ÑUôW«æ7kJÍÕâ¼î† X:Kœ³ãƆ&0' k¶­éÈÄÖ$Tøõ*÷¦óÖÀ¾As•ÒàÚš´We>ã î¬àGElkZVqnPñÆç7qRÄÞòb–îôÄ£5‰Þ׊œÞøF»nNÝ€ŒšJ¥¶šM:þk`­jk*inÝ‘R¹?õçæV69r×WiÀ]Q<ã «X ¬1èŽ<êZøí3]æ'ƒœŠp:qýÀ·p^ ç£ùí¸ò_ÝÐÒådƱHEê_ÔÖÄ,h“«Ž›\<sJ ·5žh›"g‰x4¤Bj} UmÛMŽRjSû-ª=(èj¾aeOcÁšQñ>Wð!½¶¼àá¬\7žÝq ç„®^[“¾ |H?ç­Icu-A[Ä8 pùæ-œÿØ^K’õ§.­IÃHœî¿NokZY¾œ~ ã¾N#×-¯QÀ†ÀÁ×JÔÀO´Ö¤¨™Àq84ÐtàÀÂé­IX:-¥ž«­I[ô–ó” pº?m‰¥»» aŽØy,º£ÝQQÂÒgÉ®uÛšNì¯Ü'ŒxCÕ!Ž€ÃÖ$¿j¾­©ÒŠdýZÁ©i[€ù÷§Þ5°5‰Ú±* 9ð@ìBS§°«×Ötxâü6šËpu ëÕŠpH\ó.Ç¿¥{Ð’d½§×µ87‡«kù·tHœìXÀuÃ# ÐÈçÓ…ƒ«ÃÔ-¯x½ÚOANµ&…žQëïQÈMºúIØ*Ò¤ü×Àà±ïꆞ—K[Ðgåc‹±ñØ óª#Ê"°ñ[¯HW«­éðÄñÊ}Wxòf&©š‹Ôg&KmFN¯ùá@5¬5 ÷Äð0°6< ¼‘ÀŸ¶YU²t2»*àºQÑèœH ®›c·*àQvõjk:²´&u™áb|æ¨áT+ÂáÎï}Ò¶Iok*¶"ºèu²Ü0º8Ο?m²­‰í-Q. À‡‹Ã @…Ð#ñÔêv›òKtMÇMM©±Nvé´ âR¨¡üÌÜîG¶SªRºWh‹ŠosànÂAÀM‚µ5‘¥€B–´rÝÈ\\Å8œºaÒó«L¯mMÔš„¸™–Rc 6;q.ÁR*w‰ZŸÏ‘]Ú”èJK›Df¨k%õj?s\É`fN9i2Ðñ«ÚfGÂíÕþýUâÖ8àb.rwp*ÄpLKwà“šñíEÍkjtTòFšø“Èc·18rÝxð §`S·œ upÚÛšDkR´Ë4à4â´5j¿¸(GÄ æòdéÂÿö¢¦Uµâ–ÎÑó¯¾>,'ÙÖÄú1ã4!rDÍML–€ç\GXÚšª¹0¾ ¤>pŽdª¯nð*M K—R0rJë3·'Jè*3 8áXkÒ7»»»Ÿ$t¢­)ÁE.ŽDQN@F·ìâ0µ:\Ý2}cIqj žÀ?fp‚5%§sCà3ÁGNhȪ¥·s厂®´îH©Kdá>Úåúòá…à$j`È ƒKV%âMàæŒtª bmM‹+ôõZ¦E¸š¸õ#k„89nÀ9…œÒeé&G 8%ÖšôpWéãÏŽ>*&Ê®hé( FǙӤ°q‡¢á¯QÀÅt¹m…𔪀#wdä”®Ò”ŸY˜,u‚¥«.8c­óŸíÚõyà–ŽÚšØË¸„ œDJÕÅŸ‹Å+Ír5¸X¬AÜèªãFzöRêYLVæhÀ†É”ñÙµ²åà÷]}¼« ,ݽBpmMÜÏAàÅÒ­áò"€4ætèT¦gæ׋'‰9·Š57åè`ÐáÁt•뉭…7̵to8x]àÎ[ß„aéV:^¦b£†ð•™.8ð>t'€óȧ04¹—¢A¼1愆h¾jS~æ6û ´tÅ;6ààžµ&}¹[[Ÿÿð† Y:Ί/OkÊÞjG8k[R?ÚRŠ5B YƒÓ¡«˜T¥^½ú*ÖÀŒ³t¥%âmT·Î,œF˜–ÛšjA@ò‚ÌŠ› )ÕuÅ@˜ÑEÉÜúSrÏ÷’•9'm4¡`3nÃäl…¨ñÇZ“ë°¦6L‚µtÕ"½ÚŸÌ9â\—F]è´Iàty¦R¥T¿ÜïeÆ Q£áö8ÌJcl~õé­…×Í©åˆ7<8p·éoöÕnãúæëÃ,Ý6 t–²¾q™TÊ=•¢b4nNó–ƒKP6$ý›CcBySj`ÅyÜð+ÈhŠžî¤Ê4K·mMœ9‚¸¨…6=¸……`ÌU 7+o0lR¸ ¥RÉMKpqÑ•g¯Àt加nÆ:ÎÝ’ –, y£¨k¡šMÕÀ¶tÔÖ$¶'l@.årç ’5öÙããm'wv–›ßâz–N6œð@äèì)=½t'ä “ Ψ·éosØ,lª ¥“mM6è,;&,È©3½#©Ï 7Z˜rCsÅûíñ3ù!!ȬZlƒÅf¥1»òaZºêíQ.L¨¨=ÿz÷üú&ŒX:’4t]&¹¸˜.ýE­~—½7J¦¼ôÃÌëÂÖäàBÀáÐqSÈ]yÁŠÜ­1hk §V™¼ÁzŽ}¸ojeä† µ5Ù–<Æ…¿'â \__Ÿ€­¯Ï·­›õ•&êÉ¿³ =NÔñ]Ž`çÁ“dîÖ­Pj`¥üîÞY¸üÀn[“Ø/±,§Î7vn$-ºÁAH·‹Ú'K·°) °ä s `N÷ò­w¶‚¶t¯ÚÓZ“|éãpj`<Ìnî1.p=!ÇxsÚ7±Ù‹Is² ‰Ìë홼9œÝ¡{Ž+vàÆÆ^¾õ2 hkz=°¶¦âÂ8ÁöÊ+Ã0!p¢5ɇÌhkŠªÆKZ:„Åšw„ƒãÍ &‘ƒ6òRO –îªUî±3CäÕ[00È`¬­©²5>Nñ7^­Ifé ç¬E£ÒÇÁêVœGB¥ƒ€#IÞd±þY쳜÷&™×·—tàtæ9&`Η_|9ÒÒ,]ùÉqÆ…8Y׺ç® Ûšþóç?ÿ~é suj[íŽà¦Üpëå÷„š8Ùùc”«Öýßkêöüº :8%j"Ÿêz‘ô²Ô;´aÒNèÞ—Ào²5ɇlkzøë‡¤_ÿv®¸b]9˜´h裩·&¸hpD±^juV¨+²t 3y(œ²ƒÂM\Üx{È)ê özÛÚšŠwÆ8%ÕšäCÖÀv?Túó߇Ž·(^ ¿ã×ÂZŸ¸ô²Võ#z’6Z¢>6ÄJ? AW~ãÎÒ¯ŽÐª]ƒ°yÇ7"ÈÁ©´þf›j`¥%pÜŸî¶Y_¶ÈÒa€#‰@§˜cßBˆ®ð‹\87»7âMåTàm¨©ß¶Lß ¼Ä#«†º‚§G>•ÈÙõÒKm©Û€Ÿç­I>`[Óojú[ý´¼&~‡ÅÅÙÈ .ðÙW¦4cI‹a&ÃÜ]Bàä’Ö ÓMç­ÒÄí™õ1›<ªNœ‚î­V×Àª9œ"ŽùÓßü`[Ó¿"²Y"Ý¿ò§ô[“ä¢!ܬê¶\ès¦Sfå.9Ö O” ÍŠ²ëë [yÆÍm8Ù¥z«•mM•7Ç­ÄÁ­hM H>_íÿS„µ‡Š¸,ŽG8Õ™ú¶HŸ°o 7à`¤±®rêHÒÛrS–îl·±ôêŒnZR}þùŸg"Ø`p-½Ù¢WûKëÄ›N¼rïCAÖÀþ£î\^›ˆ¢0ŽuåBÐ…©¸ ÆEÝ ¥+A„¸“`på•TÈB m R¨ñ‰Oª A¬"Ñ > ×lSŠHE¬µ>WZ¨¢õ‰UÏ9wnNfîL2šÜ›øÍÃQt#?¾sî=ßLd3âö[­¦Žž/ÇjÖfœsÓÛ7ljpu|mYÍÀ`—wÇö ÔàÒ´ ÎJíþR¬BCZºÜj—¤ ®s-{±&ná„`ân•ûSH¡óxK‹šÉ$ÌT÷‡ŸøµzeqÈÛ–œ¨OãÔÒ]Ú¶ ¢Õ¤ì•ÚÄ&'«k-Ýø~Ä x#äv ÔM"YŒ5½T"œêçÞ G½ 8”D­¹‰_67eo:qü®Ì2@/‰n©û§pKW . nµhcäRpºTW¬©t”€#ÜvaE][O4Éþ 쓪¢3Ÿ¸‡ãmßåZjÒø^åß$v\E}pã¢JµA_[V±¦R¸ÙK 1lJ¤6%‰T*Áè»Ñ÷o3°Ñ¼t8iq`p×î QG4Éö Œ·}Y¸…“Ǽñ¼Á>t¼ý&qӵ̅Û2Ä*j¿¶L30héÊÌ!v›ªÒ†02WÑÒ ÿË«ý‡¨ƒ“Ä¡Ô\«ù kâ¾Å-ÜnäCÖ˜<ëRÁÜ–-¥êñ7n·hx–ƒ"· ¯ÚJ(pL]2•ÿÛXÓÓÈ h¨'·ZC!bM·>x{¤þ_³Á¹ÕœxÒÒ*ë…e`o.ƒÃßD¸8ϵ"Þ0–¡#îjñËá •J^ì ßÒÝ(GÀ•£I­£ê-Ùñ7ߊZ:¶å[L™8ÐJºlˆÇ }mYÅšv¤pÇ.¡~Ià8ÖæDj3:\ÄÝоpÕu¬BÜ”v©hRk©ö læÓÞ‘s4zYã8kÒ¾ÀV·­ÄœR‘eÀ[4ï&Ä-ÌÀR$p.ÉR¦ ÐfT2 §£Âp˜ “Þ”¸~«õôòE–î¶„Ž'©{5ƒCÔøÉ2pXPƒqc1pÒàÖL câ “£ù”®x§R  NUW5¯‚÷Lf“ ¸œ3×jMÕŽ5Ýæò{ç˜p¼p°+ÞøÕU&Mñ‘\Ü@ 8+¤*”¨¦ÍxTJy¶tÁ±¦Ñ¡d&³+S.£¢I-¬Ð¯ö—.p~ßT¢³ £­`ܘ9688ýÇšúÏ©âZv2†Lw8æ ²†‚f`ûRÑäeWî[[ábMc×W³ÁéÐY_¬RA ïdvı¦|’ÖÀœŠ3ÆN.KÒ•>¬·t㽕¼¡zÇå\«õU;ÖÄs-6ÄÍö»ª ˜ÿ’Ä["\xã¹–yqK7œGÇR4I¾”±ÑoÔC¬¼¤GÚO,) –yËHMµt *ÖÄÑ$WEmþ'ãäûYUü@£uê† ІhŽçZu[º!dk¥G ei±ÍpÁ•Ô44ØÇ±¦Ñ+ÉŒ”œŠ&ýGÒg`<×¢/PûÓÆ}œ:+ÀÝ–JØðÑC„pÞâÑlF?–ű¦¾Á+HbçULÞ8ºèÄoæ ª¥+í—¼±´Ì\«þØÔê@‡s½©j­“ nàxµ ïÄ[$ Šg³9aQz¬)‡-rÌ™<]Ò¼.ôpn÷‚¸ÖškÕkï%à‚‰ÊìU«)WTº#mXO#ÐÁuf¯Øká‚[ºÃÃ:ân#àV]"@ç1»Í™˜‹·Bó£I ›•.oÁ'}lÍ| ª®ˆ£h$Úge wwúÙôÈCa]<냖Èm„#ÆÌÁﯺX2ë‰õdzz2JÃ¥Vˆ&5&Ö4zµºÃ±ÏIìÌË·{ æ-ÚmïŒgå×–QÏÞ<˜ÖÅ30lé@“€(ƒ ܵ‘¨Ã§%É\òðÙÂyõD öÂOJâ/Ä»ÈRçgnèpzªÔÞ…%CvŸ@M•¦_Ùü•k:|*¿˜SŠ1v5D¼Å$mxCóË™}åþ‰”ŸËh¨qœŽ³âqopÓì ŽöD²Î¾AÑ¥éד¢ôØpa#‹ÁÛyüg=ÊÄ’yÃѤGvÌó¶Œ&!p@[’Ê›#ÖNã&‡Z`pÎ×–‹ššÝÒÝÒ‘Sñå18† Np8ÓѤ +åú±M"àôšªÏTmåã<´yz¸œìn‘öH;'£I¯‹~zöª¹-ÝþSWt£s¤«€ /&×üÓ@Œè¥=¼eRÜ¡ŠÚƸUƒ. ï9hîXN9há¸ucܱÜÕÕjK§o˜ä7êêîVE–ÕÃR-Ün³s­ qœh튄 Ž#rlv€Ó»7Z1´£Á9¯4y1k±–nˆZº´Û꺷ãúê €2MšVˆ£*sï"ε€·¶E¡dáû¿ \õÕ ÜM®QåèçA±¦Þ<°ÚÒé3°¡4©ÂãÀåà&O€ÍcrðwLG“î ĽTÑ$Î&U—TÃrõo¾¸±¿Á/Yý¼ªÊ·tV‹k:•OK)è¼nérÝ®ÊJî×gö•û§Bé¡©u0·p½Ú’¡FQµ¹J­²:¥õˆ‚pÙ¬MzVdµtuÅ'¡ë¦ àMÖWª§´¢-L™k=eM"Ž[¸œ¥ïÖä-JjGuvvoÎ\ëa5ÄZlÄZº4‹€Ã3&®¾!ÃѤIa…¸»*šD%5 p¶ªÌ[P÷g»£NÚ9­µp!ey¦·tgqÝ,„XëøP¦£IB˜'Nî}«8Z3„”…Tœ\.ϲ¢¸Á‘åêMñ_ôÌê L5qK‡ ¹D¼¥ G“f„âÞɹ׋ -ƒ¼±ÃUéÞh^'HVTç•&¥ÿ¥¥;-ÛçzàÀ¥Íϵ¬7éD“Vwà¾/\8%Ö¦^cn¬Î,êDÉw®õµt4#â˜9éqéS†£I q*š„%ÎÛxµÊ2èp:og1pHÜÎÞq9תC­k¢êÚ]©tÚh4‰&œæ‰S…{oð†y /ïOð]d ‡ó58µZ`Þ$p*šT‡Z$֔˧]¸p¦£IÂq*štL®QÛà ¹5bãC^ÞÎSO£Œ›ä£InµtK7ù¼äksû½wfÌì\ë‘°AœŠ&uIà·¿ÜÓÜh‹ü-7&Nò¶SîÜ/6ToL¶tóïß¿ÿòñóœ]ŽÚ8æ Z8ós-]wa›¹ñ…{ìrÅ}±¦¶q$.¤6Ð- Úì…ÉSPwr4©ÙŒ5ÍÏ~ŸŸ›ÿþåçÏ¿§ÜEµÏ œùh’âT4 y[Üцâ…CxÚÿ]`oŒ›Ûà8šd@&bM³_iî×Ç……Ï•ÈݬÜÁgãÑ$ Ä©¹ÖYnyÇ \Û_òƯ94X¾öæh¹ Ž£I†4=ÒØ–îñ,/§~ýü(X£4y&GOæçZVˆ›s-v8ÉÜ¢PÌ™^6è¼Á©Ä´¡Èáþa®ÕÜØ×Y²·ùù)¸ÏÍ-üeíîïï'â”ÁÝ0MÁºÛ¸•1G“:Vw,^¢€# •Ä4úñ8ŸÝ 7$n½ämgŽ£Id Öôá+ „ˆ/¿ÄÇñó3·pû 8ò8);Ñ$]§©ÂÝ þ¶bñâ6v8I\}·¨ÑÀEYÞ‘õÈ[ˆhRkm˜¼x;#Äìû91õýËÜïß•À•Nõƒö¤UEí¿9f:šd…¸IMêêZÝÑQI©éC.½éí[§*¨G“,iz¤>£»õvBÌÌÒÖûGìß~q —GàÒ{耳ØðO¹-l§¢IÜêÅœ›¹Pœù;\# X/(Øà"­Þ8ùµå‘¢E½¹ûß׮߾ ñc–?.naN(ì'‡Ø@øh~®e8MêêêZ±b1¨‚7_â,:Îqç-ñN¸¡²«vªnºhQ#¨ÿÚѽý.7Kÿø;8ܯ…RySäp¿$O¶¢IÁzרÂ=~ €kó‡gødÜ­‡W™·U«8Ž&YÖT¥û“ÝÈÛµ÷üËg*«J¥a­O÷¸Á£ùh’â&å\‹€[Ñ¡xcâ¿à`d†ïM÷rûÆå”„¼í<Á¯ÜÛÒ+d¡{øwÕõÕÛ-nvþëû÷S¢ô“[¸±›œ>ž2þÊ}-MüáîÌ]¤¢0ŽŠf“‚ˆÑ«â ‚‘àüt¾ŒƒÊ"ˆÇº‹ *ž¨xÁª¨‹"0Ç"".â…÷© ž`à«WUómuuÏtOwµ=~ÝÓŽñþxïëz_M½J¾8¢£IŠ7£¥šM5%îŒõø7àF¼¡Â!š”•ÈÂùô Ž¥›¤–JzòóÓ—oÄÓç?°p4T*pî-Ü›N°¥ÑËM® !9A@ ¡¥dšRÜLÞÐNÁÛ†G™[¸~ÞbZº_^Ý€¾££ÖöŽ”y4 °=NÏ8>–Ѥe…pàBxËæ0.kXÒO™·HÑ$7BwÝä׿žÜ×£-²qZõqæ À©gMl©ºÆ;ò4²p8 YÄexŠCÀ´ëo+Ìú-šäÎÂÙŠÒ]ŸüúðáëÏ—ô‡hþþñs-o˺uL›BnöѤ»_§üŠ‚hRA¯Š•6VÊ¡ÆÍ²oX 1€Ã–ûÌdCßÒM’…ûôé÷ï/_¾M‰&­#iâÖQ…«Là5Ñž»ƒ B4IZ8ôÔ˜À¹ÛÝF"™¼e6ׂ`á:@×yÁäÕ·Ÿ¿¿¿šzˆç¹-¤ £Iw' 6'ÒÑ$âmW¸$Äa× =SÎz=µêw©‰hRFzoÁ•ÄÒÑ$Å]ëD…sMlî~Ѥ À!;ø¸tÞR±ÚÛãÞpˆ&e&{Q$™¥ƒ¶M-p‚¸}l¹¿{°¹Ñùr´ À¹®Œ\ê{ñ­T8“7¶Üg¦vx%Y0™8ÄÀIäÄsKÅí\ë9Á–Áá]¯åi z® rÈcFˆKƒ¼à8’É[Þ-\–®yÀóÀézoŸ"¥£I§ª”¸`àˆ7$€ÛÓ–î«ÊÛ|¤-YÀM—}4 .’âÌÀêQáÄû×ë§0×ZƸAv…‹jáÒžá[yò¥h©náÒΉM W¢“cžòþÓ@T4©Zp!&.VR‰”Úb\ÛŽªh›»µõßD“l%·tµœÞ¼áž=Ð jE“ªÒÂAÁ..qè¨éz8àfðÆÄq;ñ/¢I‰kº7Æ:(-Üã—7{Zz˽^ö5d—¸ÈĶÄÌðÿàòM‚[ºÆu³¥zMbÝÿØ+'Aû…Ó@T…3‹\`‰Ëþã"Ô7æ [î3T:°ÁÒ!šäy&qWjæ  7ßVU4©Z­ 3 þ—0©”Ræ¼oîj#'Ѥz¨-ܨ⭨¯…8zMê4 Ü ‡ g—ùT5o Üà‰zæs­§i÷ MbàŠÅ"HÞ¾º}¨úíW=Ö]U4‰_R‰8°ÞT#6ú¤– æm®ÁÛ¢EsMêB“­h’P‘%ª}¼ñ}ÇMºû¯{:MºLnæ HKZãRÌÅmíëiâ ‹óMŠ«Û˜k1o,Ž šA:’6< W8 g2·|ld8ÐÒåxÁ¤5תª8Ry¨šN…nKí~ÊÄQì…hRT wÔó–o’8È£–îжz-ÀÒåtÁDE“DS.R‰£µ¸.Ïâš– ¸܈7î|£GçZAîð€$.@ž®t°t‚,]g`ê4*i†ˆ G.úïÿ¦Å =pTàpHFrháM*y(qÜA¡ &y³t*šDŽ<zª¥.w8¤´:Ì¿¡Ÿ2p½MjgᎠp…CëD]YY:»»æÉÒ=o͵fª–Êoª‘^:—8 o«‰€3—àÍ쨃;z®uëŽÞr?P(·@ìú™¸r±ì•Ëô"KÇ &y©Ó@ªò%=Õ~oˆˆK)§Þ7«Â-dàrµå¾[µæZ%‡2gãV.òƒãKj|¥4˃¥SѤ*ˆ3l\ÀØ8 çð§¦kJ}3œîJ-ãt¹Ã¹Vc¥àˆƒlàZ*ûuÝgéòkÒÑ$¼¤¸äœü–T6nè§è¨¥e¹ýà]f]5eÜ©hÞ n¬KÀ[¿þFß ²~~BbÖÈÙ Lm¹¯JàrX)¤3TM¾?5 ¡š¼-"ÞT4éÎmÒÃoÝÏ·\Z¸QÝQ!íå–hÌøéSÙ„îHÎ,¢I3…:”8;ÿñ½îdj[ßtG»'­ŠÖý[ïÝBç`QĶp¶Š€_úøÄmš Ýøh~f`w8:FU8CDß6Õd’Q¿P¾"Œ7ÂçZÜQ§jÒewuM*IàJm€[Â5ŽQcÚúút•³406²;±&}*x#uãGÝÝt[4óf Z3·ÕЃ·Ž sM*ÁÃYÜÕGÀ…×'>t•û„˜³Mò¢/ô¼v`d¸Þü·3°×:šDãVÉ›C™‹¯û)äë§$Mº¤‡.º«ËhÒa ?äm«ßTŸ|jmÒ*Ë']GöWvd=³-Ü^Âmvp‰³ÔÍÎh•I²Ë7BoNE“&,Ø`鞦 ËhÒiÙRùbØF·6*£dì¦âFÀéŽ èZÀÑ·MDÑfê$ÅššÿÈÒ!š4{&Ë0qT䢌¸¦Ç[‹Ã·’ÄY/ ¤°p†œY:—Ñ$æQ[ËÄ®óø[ž5J}|À9T:º ÿQ¬ ѤÙÕªMœ® nàfoTÍbçñÜ ÞxlÏÚláÜY:&•qtóçXëüÆðÑÃaçtp~m2Úëfqñ—kvn ˆ5Ýqié>ª-÷Ül.qq ÍB]5ƒ—1AEè’¥ Üùz …sgéεš?N³?tÇö¯4›«ÙRMîV­RÀ:©#ÙÆšM➪äŽTèØTgµço(po¸ýa.ÜÒ%ÃÍe4IY8j§R‡›>&jua鈰ùêáFÀ­¢›$þ!à “»vgkB4 Î\Ô0fä\Ü´®ÃÕäMW™´pî,ËhRɧ£ÊÒ¡»ö:è¨ÌAÄÙªÕ`îÚØÈ¶ bMzËý¬pv‰qvÝþj€›Öpaþ­ÜX¸Xêvæ4šTb­-i Û¸ÁÒ]ÐÐ…Z¹U-ä Õ;èY:Ç30}ÈÐ<Æ­c‰ƒºù ¯dûiŒƒÝPI'aáb3°g04{á-BѤLeÎÀzM*ÁÞ¸ÅZrÞ°a²òF8w#ǧ‰Ó67É_RúXpˆ'â,I¥TçÛ¤›·oÀ·Ѥ´rÇšzMààp«›åÎUÙäØ3àŸ€·0q" G¸MjÑ—Χ‹5ý¬[8.ž¸ø4¦ïáægø›Ö ¸9û\+ë–®7ѤR‰xÓ*a®Õ0»´“ƒ¿8.¬Né(6=ÙÂÝKk˜%‹5éhÒ™Ó²Hp‡¢šüTÓTÀ¸o¸¤žIÓÂùÏÀzMª\.•JDôe*Ú°a2¿²æÞi"G_}µŽ2pÓÙQ®Uë˜%‰5éÛ@˜7Ãá@‡ƒ ‡‹®C›opÑѤì[ºnϵ6WÛ€C4 ê¼¥“êúN0ê"à@}4nôˆ¦ùÇ$trò$ -ÿ«ý¿¨¹‡‹±¸‡ÍÝßäEµ£ñ½ƒ7Ž‘[¨ô8ÄšºùÊýb¸¢I©„ØÂïˆ8ÈèâÄã訅9¥¥„30ÕŸ^rg¶qþÀáà®Nêj{=o´H=pl¦’Ú ýögÖ‡n¦®TúÜÒÂ¥oéÖßA/§ëê?AMƒTuaà4s××|cMˆ&9€s3Tõª¨É“¿n#䎻¥‹ÆÏ=cî—ß²å Ѥ6ÞJF4)³–î™ÉéBàLæ&޹ñ“-Z_ó‰5!š¤K*ˆsåFR—þ»ÁâžãhÔ+æ~ÿ5SÞM‡pˆ&e¬J½váS®®!âÂ}\9NA·ôý©ZÌ%ú6áMg¶qþÄ9¯ûB’ËØ€Þ´xÛr]žM.xå¾½¢šÑ¤¬[º%cØêp#GôÊZDK‡hÒõÓ ÎZU¾58ä\ÇÀ™¼Ñ#÷Ü\½ ¹¡Ë³ÉѤ6ƒ+Í4b˜©tÞã!Ö´*«LÜQ½=⎆ˆ›cè¦èsrjŠZºÏ\±&D“ˆ·ÓàL3× §”üý-›¿ñ£€;vì{ë~äÏ&t¹5¹à6VàJ¤[¬loíÜ`mlÕ*)[º ókOQ@I1h ÈrZ‚\Së §¬±¦Ÿu4‰cÞÂÈùÇF,¼ uáÂ7áM$°ñW¤ îé[c?²'-Ýï‡hR›Ã-;[¸Í­ÚâXÊØ÷_½KR‡•ô½ªBäsS`nŠ[:3Ö$s-N—T÷Þd™7$]7(_K]hÊÄiÚ@ ™üV×LÊ*æZíõÓŠƒ7 WIßÒ}@-]xOnÚQUÇ[õäTX“kŸYZº[§E.zÝ€³ŽLbu¥‡nâo&pJ×ÉwA—K“ n)±^CEuD“¶ÏÞ0uv;‹ “ê¹ùK몕›žàˆ#Ü€œ"­ùóÑ©GCÄÍÎÎ^_›{/ôjããö@Èá ä±X\öÁ_s.èàŽ1oÐèèè·8jÔQ]ógrA4iŒq{M‰xsD“¶oØâÒ¶tŸ.=5ñÒt ‹Å=ɤ=)?I²š°ÑÓÔú'§0«-À=𧘋.q€-ian-À©M¸ϱÅ7zH_E¶t¹39¼r_"·ÒjÝÁ[·ˆCuå–Àµ5r°8‘àF.÷¸FnZ:ÿ‘ԜƙëÌ'ÄÀA cJÙ'ÍJjPOé!)Þ7è+dòÍêš/“ ^¹/‰ÜåŠ'o .ÓØÜ¥%I“ â9\S³fgéiÑø7¿wëÔw§"ÞHöªê ÿº Êž8ð†õ)Z8–âèÍÑ7¯­ÌéhérµA‚¹p£Ç>×Ú¼%,V3ª®çæ×Ö8ÀÁåঀ\X§O?ôÐCÎkÝð0ˆë$4‚Ó ^OÓÎhÓ¼iä´É½,ß—_~óenéªÖ–.?»Àˆ&8†ÎMÚ‰n'CÜÐÒ_bæ&‰ºIšàƒ¸Àã`qJO<ÎÈ–G~ž%ƒp,‹Êzž ààoàM˰8bîÍ7ß|™E&Ž–.&‡hãY£I5ÀÕÝ¢jÎÀ9Àã`pO†‰è3Æ?‡?$j©©.ÙLõž¤ÇçŸq Ä s(¨„ñÆÄ‰èeGuí»É·„ÁIEý¼ákpÐÙF¹+jHK·>)b—›r°8’‚í zž8¬4û g%Î/G€ËdÞà4np8ÀF:8y˜8­k+—?ì*t‡Û@nÁA]Š— ¥{ICG2º8UÖá@>Þ8ÿuClMÅÖˆ›5þ$‘æÍN «TÒsš8%zûmuÝž£¥ëý‰MpöhÒV,på™óKš¹ñ¦˜7 â5§€q¹‰K8Rõ=¼Ë³›£©=€ríÕ”€;¡qS§àÆ_ÒÕ‹ÈäF×s“C4‰+j«ÁÙ^¹¿«³ån -@Ç“Tœ8!îA…[˜8¦í±à  n I¾h0y;®qCI…4lVä˜:\·g@×c“Ã+÷Ńaàf öD z¹«Â Œ[:Ž(5‰#挢ªÌƒ8wgžoƒ‰ªû®Lwâ Þ8°6ªü­½ƒPS™¹·•®¬rKg«®?õÒä0×:X w+I ÕÊ=bM”‰C'g%Îjq$XœOQ}Ø{ÝÞál[¾hßDhß"ˆ{U1'&'ºúÅçŽ “ž™¢IÅpI]®:¦ oŒ¤5-d sÖ.Nà@œ¹5ÒawwìD5ÑÕ[¶þí@ˆ6¸oX:¼JÁ úá¢+ÖÔ‹ D“ÆŠ¥Ö Màš±¦¹…u¬`q"ÁÍQSýˆ{˜”®‹K˜øu®~\˜_Xo!æ@}@Û«¬·ß¦§E‹î–®Û»À¸ ¤ØRQK…RéËò€§cMk×¥¶NqV)TT5sâ²ÛñÉš§NìíÂf£ÂÍë·‡3ˆä´4qЕ/.˜~“KÜÂCþFs­3°£ëqÅœ^©Š|– ¾is#‡™åÝäæ‚Añv©ŽýÈ•knm¼6ñ8%æ’^ן×_¿zÑÕÒuÍäM*@\¡€hRÒECµÜ!ÖtjaI§€£‡‰pÆî¯(¦‰»×ãü®XÜü¼5Õlßæ¡æõüW ®E4Â׸vÏÒGS'Z¾èŽ5eorˆ& ¨¨ÎhR=/Û"1±¦µuÅÜ,3ç&À%¶8“·¡¸Ë·üeðv@÷yÔèÂWš3¸Û›¯ò£{8èYþ4E´¹ÅÕË™´tÄ!šT,rÚàJ‡¯Ü#[î΋ô_jv˜c⢋jSIó½ô ïCcØ ¸ãǵÃ}Uudò¿Ì8[5meȽþ,¡]ùâóT-6H<çZÅ`‘Z à WÑÂ%mm•ó!ÕÒÍ*âàqÆÖHô›ø(ªnâÀ[ú“ MàŽ3rÊྯ¸3ù+×4kX.ØüM0†Î=ËÊäpÈ"9Áö}¨¢ ˆ&%5l–ó#šúäú,‡­¯ÔˆùZ´?sp·dÀWþFš‰Ùü¸Ù Áâè‘/´œ"Ö“‹&QA-ˆ6~ˆ·¢ë6¨¨áXÓöyœ«¨²Œ¢ ùU4q±%yDwû'¼ow­æq.ÕWp¸°ÄÛècˆy{¾¹±EÌÀ:îW¯h’wè‘ÇUµèº ¤–—Á–¿ÎP Sgâ‹â_¨IùÊ`‡on%¾xÈÝ,+‹<ÐjÇ =Ï.Ç¿àÆø#]I1ÃIT GÄ=¢DNWp¿r¿NÊŸªTTCëÿdœ9ÂØ]T³{#º¥ J§€£Û@⥽Æ;½m'&gB÷<ý i›àDËž-ÿ ¢IÌ[¸×ˆ¸‚û6ÊÙ¨lR¥œ?ÕFŸ‡sYœq¼MÂšŠ»¢3BGzN– ¤ eoÉu{?¼Í’±ìͤM>"áí ¸\ eŸ˜¿É!šƒcÞŠýi-Ÿ›¾»•:5õ¸X\e‘‹seF²ŠŒX ÇÂùInP¾¢Yìmo·Ó&_á #ºÄ±&˜œ{®¥{MyÈvî¦Z¤oî»þÃO¼ñöïƒ6âbƒ,¯E{9Z8þx'¼Áàx®•Púe!Îð6’®¦r]«Ü±¦D&‡Û@`pL\-œ•¸.öoÞ¼]fýµ¿ûϽ2T]šÒÀöžá;€‹¨fÖÅmX1è5Ã\gíJEZ:šg9Ë)?à kÙ3Ö„ w4‰x;Ô ¢IVÕwl"}iݾySyÜîMÒ?—ƒ û6¢\.âÜIL“8Û¢ŠÉüz®TÑÀ‘ô.ܹr‡Ò7(‡h“‡~¸tðùƒ¤±6-&kéÚË*nQ‡&îË8¯Þ6ÏNj”û¨½}œÀâvu…mÌÉ€Kˆ‹‹)Åž4?ÃËŒtÜqn)U,GRK׺í«pS+Tƒ7˜ƒücM¦ÉiÃZ¥¶ ¼)xÜRÙÚÉnåòߊ³Ý;wn*ݹ­ÿåÖdŒcqqð3*ªà =ÜBš‚ jéx¸À_¦íuAΉ› :šy¶t¿Ú_¹/´‡¹V´6··6vnììlm÷œõ×?7ÃÚ×%µºnÎéq>¦.Qð×óÖðFÒs­F9 Éu{˯k±¹™¼µ!7&ȵƒk‚É™Ñ$á­ÐÄ€»œÇí´¸.¤;e­sS$D1ã÷^\ôݽ wâ¼<®Åߤ ²n•3“Ü |̉Læ¬*jüùÅš~µD“Äààp–N·¹–B·õß7æ™7ÎìâÒUeÂ4 nѤ,$7(_þâŠ"Žƒ¶6Þàu„é¡/ýàXSä«ýØ Á\‹CW WîNû!ÞvåïÐÂ8wç©&:¾ËMœ|½VªaÞÄáÎgZt0[]4œÎÎÚ!ý«X¤‡P“¯|Æ¢bMØF4 c-ϵêåÓ_»6ƒãÛ@tEeaÞ`ZÜÀ¹Gø CJ>2;¸Ñ™rWT©¢¥cµcö|;rEþC‘%؉ÄìÜ&ÚäpH pGŽÃQ:xÚCMm:\8ÙæpZöeCò»{š:”~ºeÜ(¢I™ 30n鯰<ØèѨ:tHCGOñIƒæ8Ö丱DLNæZ*šêà gʦïìïßùÇX1*牷Gà"\nâ’Ü2˜…Ã7€[é^ÑÁ ìʘè =N ©hÈkú]g/«WU 7¬{¸åÁkáövÛê)æZ'…87pJInoˆâm(‹CÜ+ЏÑÑùJôþÔÖÆÆÖvµ’º¥[S²­OÙè -B¬ÉªÙàPR©…¼MZ¥6‘“9*tkB•Tç"NäST Þ²'÷J³…;ç¦í–¼Ø†\B•r¶¬³cgð¦kÏ5“h³¦üZ¸ò@jïßÛû·ÿn )¢«¸p,&ÉSoÉ÷âÚ”MI{å•W¤¢:£Iõö‰vÚÄNCÅš´Ññ´E©@ µBçˆ5Õ¿(`É@*,æ0%Þ©* 'Ǹ֚ÚYÅ­bÞÂO ܱœ+šô‡-D‘²@!Ö4ÖT°:9±+ˆŠ!YbMÕ+…‚¸›6¸ÕþªÒ -Üø¸âüføî½8çz{kh(‚·„%õ©¨s +Ý‹%ÊQ£ÒÒ‰8,V]ÀÑ …g`2×"cÓ7s-§Îð)^S ›¿žçUT’š•Ã5ר'F­û•îau¬‰' E!®ˆÅµmÐ#0oüiB§ÁÓð-®-]ý²7,¼q4飯§p&qÉGø1—òÝ­`‰JÈp͵à­kÄqu•X#G\•µÉÚ#ÁŸĉT¬©:³Hþ&%uXÖ¨ÖhRîàDß«¯µâì'ÆùZ\ª“”îJäpÍ5ÃB¥lj«W¯£ëX“ÌÆÔÁÖ¾ÑO±;ÇÐÉO´tËTOyª~pÖhÒŽ,¹ÿ¨Ú¢z]'ŠíâRÔTÃ%Hñ'"Þ¬s­ZôûèÙþ¯Ò±¦¢HY\ &­Iãö Ì)i«“õ©ôoG¤¢èù¼böyr}K s|kpM9Qp¢èCXýkªÓâîÒ§ÃÉ"õĉQK4©²ÓóSúdvñjQ¤š8) icìd[· C–€ŽÄÎ&ýÛððð’5š´Ê’oÕe¶_™ç3Îqó›Óâ´|ª‘ÀE/Rùñq8Ù¡šz‚dká¶ûr#Ž55uj€N±Æ?èï1-èø•Q~†nœ5š´aöVuZ:jápƒGçý~ÜÁ6ig (¨'X¶hÒN¿"Õ3°Å¢H·ij±Zà‡ð“ßaÉß(Þ8’g&™ïÚKK—ûêZ›ÀÑæ .bg„åu[HäªCnäîòŽí ¼Z^¹¯öõœ>k*j)àˆ4FÍŽ›”Rþ°†ERQ}n”–îµpΧ¦FgdFN¼l¸Ë뎰ÁÙæZ[7bÕå¤cMš8ˆ,N*« ú7géOÿˆìò»aR9ÏÀ9‰;ìbÒÀEG”ô ýÈ>Žyp¶hÒF>÷nÆš ä 0p¡à–}Z8³¥Ëå†Iu ¼™]œ3ˆ‘ü½¼ÅçDat!ƒ³E“7näæ(RÕÒ8“8©¡Bý†hW¤`¾roiᤥ»5yr\ˆsY\Ü|ËÎ3ø;4l>g‰&ÕsKÍÀx³­É›c©X“®­$™šóÇ.&šÔ¨nµU×à@œ‘5O|\b˜±jH ÎþÊýÙ|l‹8¥g`j|JÍÉRQMŠÔæ ´tõK ÜÈ÷pî..ª¦Þ¹‡ Éç©y¸Vƒ³ß²‘ï;ÏD:ÖT`±Ã™Ä!š#´t^&½oéT 7BjâfÎ÷h¯#ÜLãYRE¶h’×µŽyè£u¬‰κfÀm >ªäº¥»0ÙN#7Â÷o8cºåñ_48^¹¯ä¹… KÏÀlE5ù+÷u¿–®÷±¦Ê<‹q¦Å¹ß¦I´—!p(©+ÖÊÈ5u nhá “«†ÃÙæZxÓs·t}Œ5m®ià@œ·Å™]\ò­_nÈÉ›ÿ¢ÁuÚòæ€]AE$Yl_¥^´å®¼(iT¥¥ËÑ ¬ö"€ë¤‹{,8RG¡8àæÓÃ9oÙ$ƒÕ¿p* géO7})‘ “ÍÀfˆ·£Î±3âžo=æ´¸ôã-àMr¨rv@:¸@õUéâPQíÑ$JdæßÒu³ºV¾7€‹éâÌw¼<.¤¬¶~o˜kYUóy‡¦÷úw¯ìPõjpÖhRrJ°aÒÇXSui’4b'ÎogÄÇâ:œ5ø;œûÔ¤¨­‘>γwï”ú° ÀaSÄÒŸ6:¡Df`}né>xŸ Žû"Þ!%ÿujtwwD(ÎÛá"oÙÎ!o{ÁqiÑÙB­n׸\ÞœM2£ó)Zº^ÎÀ3F­SQTÍcÍÝÀiÅmŒ EÞÖë\Ìm Ûö·Mú€SÄýÍDîþ­ÿÞháìs­­4”ô1ÖT_p°8ïÿ~dÓ œ|}.î6ʆù?¦¿3Ô¿î4¼ÝU§{ïßÑÌÕ®´ný:¢I;i)éS¬©º4-%U)8QlMoÞ{¿CvÜD^=\üi˵<Ý@Eœhìlÿêóäoëû¾ ñF²D“*ÙPÒûXÓ¹iWSœ;çŽa¦z!Ú¥ …óýÔÿØ@Õéû• Î~%PåSæ ²F“êÙQRI0KÝÒ5æ§§méáF|— _Á9ð·ÓC”4oÞ·Ô7kµÍ\D­o·ñ¶å#a‹»jÛbÌrRÚÃXSý‡K9Þr[!ñB4}¢n ‰N͵rÁP"í¹nh¹NŒ šÔ]J=‰5ÕÖ¸È&ÄEù›âX›´Ã àiËäpöZf¼ #šÔuJ*µn·tÞo:\LgÖÔ4ÇÚ˜M\Gqw-‡Ñ8ýµk7¸ÊÅ0pˆ&õ‚Äšº2«œŸ&1qà-rÙà7O½/ƒaä±ñ»Ò÷÷B’+|eÆße´pmÀùÜRßÎ’.ÆšªkÓ(©.‹ó_§fhqÃÍZ ·wûï½÷­W´œ)„– ˆ&uJIžf`µ§¦IoÉö~=‹j pC:œŠ& šþÛoäâíãS¤ˆžkðô†¾4‰òT2Ëšªºà%zGU>2BQ?•ðØ/áô –p«‡`éŠ=¤+Àká€yiªçè›J Ëš¨Ö>¼Ôg@ÁY§ªHp„WŒ ¤9´޼*²4i0œABµúìÙ“'Ï^è¨õIFåg2jÔQkMF•’ŒÚ!u¢[i_JŸmõÞ¹íUÝ>§Fx[ÒÖ» ³LÚÌ£Ÿ>¦˜bŠ)¦˜úßÔµ•N…IEND®B`‚instagram-feed/admin/assets/img/oembeds-image-1@2x.png000064400000232050151435171370016525 0ustar00‰PNG  IHDRlàÙîÛ pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF)SIDATxÚìý}Œ]õuïƒBB ´®û­§Î?.?}¡RsC¤Èþ«Í•JrQc(’¥«\L£›6÷–ˆH¡×7BÕII{šB¢ {¹”4Q·MÑ-Ð4é±!Ž›x0ÇÆÃÌØó`{f2žÌ ãÏïÏÚ^{íµÖg}öyœ}Ö’–fÎÓ>ûìó°÷k¿×z¯kB×xzzzzzzzzzzzzv^úFðôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôt`óôôôôôôôôôôôt`óôôôôôôôôôôôôl'°iÑßß-÷¿t¿þþþk¹ÿñý¤ë¹ÇK÷I]§k®¹æš­[·n ë`Y–´±u‹½¾Ô°lËíÚý-Û“»¯¶¹Û¤mHoçî¿uëÖ ÒóÓ÷•{ϯ)±ífY¾åù¹åYßkËõ)Û ™ßxoüû_ï?ݶZƾÿÒgA{ïüûïßÿþûþß¿ÿÿýoõñÿ5×\S `+óZ¾,)î ˆ— _¼­[·nÀ?ô©JíG¹é㸋õÇ“®¯´þôÇEº_Ù/œv°;ˆ²di;§z0ë Ë_Ù›ö~„¸Ï÷?ýÐë`fý>hÃ\HVÖíêßÿêÿ-p¦íÀc¶øíðï¿ÿýûïûÿþ¯¿ï¿ôÝIýþWNa+óµ²ôá´œy¥?ÚôÃ,}Xµ/„åLN™ö£ŸzÖ"õ, }î²?ŽÚkHýѶ®³öþYL­Ï)½ÚNÙò—úC;¹QölõŒf£vPþþK?ʱï?ý-ðïó¿ÿ)°–r¡)n°ýûïßÿþûþß¿ÿÕúþ§®g ¬VØR>dôƒmý§|pSH:UµüHѳ]ÖåáFê‡O:ã§½¦2?®e~Ìu¦ŒûNù’§®³åý’¶sì}°œÁäÎ’qÑžŸ]޽®F©ÖïÙïeêçÄ¿ÿùý—–'­—u‡­„³®»ÿýûïßßÿû÷¿½ßÿVÿÇNÄTJaÓ¨5ÖKШÚ]ëY®ŽÙò£mý XÏ¥<¤|éSθpvi‡Ã½úƒ@·Uì-õµkŸ%­ôïµ/flGÇm­ü€^Ï­w ;¸´”÷À²ce5–Eåˆ}?bßQë¶OÝérŸÍÔzÿþÛbgº-ßGíÀU:+K@¹Ïf¬·Ã¿ÿþý÷ï¿ïÿýûßøï¿ôzêýþ§²E=Çÿ•êa+#1—‘uS~­g|,gEð÷ã{ŒtV+V _f'aýò¥6¡ZžÃr–°ÞrÊë§ïAjéGìóÍýø¥6¶¦üØ[ÎØáê25æÜÙIúÜeÎKgH¹ïPìÞ¿ÿÕøþK,ôàÆr–^ƒ9iGîßÿþû÷ß÷ÿþýoþ÷_;¡Â­o#¿ÿ©‚wßÊ»Dj:ÖPnYNìq©gy¸35Ò—J:›;›‘zö¦ìY†Ø‡^:#&½nîJûaŒ¡”΂[¾ìx§i9ËcÝþÒó[J¬Ÿ»Øç)õ,XêΛ~nëÙ9ÓõjÄgÛ>ô¬¯u‡ëßÿÎøþKJ‡Ô¤)a±ä–A"S{füûïßÿþûþß¿ÿÍÿþ[¾1HU cÆV]leè^ú’ÎV¥6ê¦üÓµEbÖ¾„Ú²-?ÜKêóI?ª)µÖ©g,Ëüh–ùa´l nkÝÉZÏ—ýA¶ž½’vÀ11i[žKx9ܶӶ—´­écµz}|_i»¥|îüû_ÿ÷_³U·XheŒ©¶þV§HËvìû¯èú÷ß¿ÿ¾ÿ÷ý¿ÿëûþk=|’Zmå‡zÝ®Tظ ¬}Ë4ߦþ HuÜÜCƒHéØrÖ-öæ>Üô2wö.KúâqÏ«M¶ô©hËÖê˜éãb¯UjªæÖÃòÄj×­;}éL±t†Q;@‘>[Ú{j)§Ð–©•GÔ{¦M; ÈA€væÛRzåßÿö|ÿ¹í[&µ³òÅK6î‹Ì•Ñp?Üô‡Kk&•~4µm( áàWûÂi?>Ò*wpÄ¥v›¶^ÜÁœ´ƒÖ–IK$´õvÄÒ{ÉýxJëËÍ‘ÖWzmô “ûLÆvä–³aÚ{&­“¶®TEúìj;’X©Žv`ÙQqï¥ÿëÿþKÛ^;!G?'18ã¶×ÄÏ}‡¸òHÿþû÷ß¿ÿ¾ÿ÷ïg~ÿSOv¤ò„Ö?Íüë*…î9¸£oÜéÓÿe|üâóç'~6>~1xzzzzV7ÏŸŸøÙììì7Þ¾…î/¤ƒUª¢ ¼}Ëììì7|¿áéééÙû……KO ¼} § Ö; r.‘©õã1isrrêËþAôôôôìÎðéÓo}P+™âŒE†‡ÏÞã æéééÙ911ñ€e¼Eª›g¥mý9E-v?¸|úô[ôž§§§gwCÛO|óW¹N}xû‡5OOOÏîÎÓ§ßú`o ÍĤ2%‘Z£žÅµ‹Þ>>>qÀ?tžžžžÝ““S_Öæ¨áë½*ÃÓÓÓÓsvvö’NŠùH×Îaã\$ÇH?Kêéééé¹°péInÖgÀ06vñ o3OOOÏnωAËX‡®+‰´6ôYg5\QØüçééééyñ€äOî>üéŸýuxø‘¿ñmf6ÎpÄç°yzzV!¿±ïéð§ö×áûžïsèðÑð§ö×áOÿì¯}›K")¸•q´¯°qÔ*mZ&I7¬Ø<=›Xf6~!÷£Oóûž¯¾v¢c×ÿÕ×Nˆëƒ¤Våû>xWØ´e{øƒ?|P¼ÏüáƒaÓ–íá?}ðÎŽÛÆ‡Í~äo³Ïh[I$×»Æ9F:°yz¶ï·÷áGþ¦£÷ããÕý†I­Ê;îüdØ´e{¸ãÎOªP·iËö°iËöŽÞo´w_|Ua£ýhš¢¦U VRa+c:â ›§gëÏäÁ¾”°ãòÙç¨ë­A’›žOî>l}ïo³Ûõ?}ðΖa`Ûºuë†ÞÞÞ븓|lžžíÿíÝ´e{G+?ÚzkäÀ5Xwn¿qèðÑŽ0‘ HbâR%MGb½j1³6OÏζM[¶wäS¶Öl×­ïýíð¾Þ•¸ÿôÁ;ÃéÁ–›Vé=lžžl›¶lÏ>_s`ë`{õµ¹}·ßØúÞßnñ±D±$’¶hI†ˆ˜_*é)YûS 2Vé%‘žž­6zFôOÿ쯳Ûþè³ѱe9<^Y_ÞóñO³Ÿ‰W_;‘»­•=wTaÓ HØ<=[l*žÜÿ|vÛ=ÿtG—DREÐK"ëÛ¦ø}Ç'ôþè³Ѧc ¹‡MkÙâ*+]©©kš¥¿Îöôì `{õµ¥ViÆZ¾¹Þ–°<û|-¼ïƒw…÷}ð®–îxi›¶v`óôl°_ÌT•NP«,û¾NÛ¿­w`£ûáÓƒÙ~£µ?1ÈÍx¦û’XO[%MG,Ám4N}s`óôlíNë>ûáÕ×Nd‰ÏŠujÛøøÅðŸÖ ¨õåÕ6¼ãýƒ?|°#¶)ÌaãgKéØ<=[l¿uû½¹ýýýèÔ×€{­:m¿±íÙçk…ÏDû×ëªÂF÷š{}W[l#`;MIaó6OÏÎèaëän'Ÿ%]¯Àvz`0<û|-ËÖ7г;Þ===×k}l½½½×¹ÂæéÙ=lí0'J)§ï¤žµ*ÝotFÿ¢n:B•5­T²r%‘RY$¾o Ø|p¶§gç['ö¯­‡³¤©Àö[·ßÛÖ˜gŸ?P:›m@ @78Û6OÏÎ6ÚÇÔI‰ûž;±zÊÒ5`í텴òûæï³‹ÀÆí?,-]]3‡SÔ¸û¸­¿§gû€ \ ±»S'Z4:|´£Ï’ZÏ”þÖí÷¶ý5à˜2Ù쳩ccb+ Ö\aóôl-°iûNü]ÆêZ'ξÄ&[ßûÛ"ôvBe†Õeº}#ƒd`£\b±÷¯ °qö—Xb¤=lR?››§gg˜Ž`àØúÞßî賤à™ÚˆÝI†)‡-”³Ð|ø‘¿ÉŒ}cßÓÙmÍ?“>q@ÚOÈù6OÏÎ0Á¿ÍVù€÷y;c´¦V¸à“•íl¸R™¡ï7¾±ïé¬ÏŽ3Z¸ßÔÚ®, FU¹JÎaãæp3¸^6OÏÎ6ìØI;Þõp–JFðÎêþðÁðìó“ûŸ/Œ#è”õ½ãÎO†?øÃYÛþ€6SaãfC_›—Dzzv°áQ6‹ ÿwj-÷Çû?ý³¿ÎNœu’Ñì78ÀÄÚÚj+ÀsŠŒùoTr›F¦R?›D½lžž­7íÀõåXQé… `âŽ;?™•ìÜqç';¶×îÐ᣹ƒ„NnÎ?=0˜{ÏéPüyi¥ª‰K"ñÙNèkxëéé¹ÞÍÓ³uÀö[·ß›Ûo<¹ÿùŽƒ"n¿±õ½¿î¸ó“;+îÕ×N¨û­ïý펪,yŸòžãÏK;€Mâ Ú¦e)‘ìJ[©—¹ø£§ggÔ wBVÕ¸ìä™?¯¾v¢Ð'¶õ½¿Ý1¶ù\ÿÀä“ûŸ/œÙmõ(l°¿ JVÜØ<=Ûo:ÒIν17ËNßoàß]Ø×u†{/¯ªþ§Þ¹V2åÄ/ÏÖ*®ºK$u‡´ô±Uª‡ÍêI-49€óFOÏö[§(WëبâvèðÑŽuP;=0˜;Ý ;EÒ“|WNô9°yz¶Øî¸ó“ó·^m=í7èɾÎ8–Ð]"%§Héo%6üâ¤AuZ]©ÎöôlÝÁ9zJ³ÓvÚºvr?Âz…ù;îüdvv÷}¼+Üqç'ÛÒ“B ï?ð|6PØÆÆ/ø{èéÙ¦ßbßot÷~ãž:+‘„ÒÓö¼È ›Å|„š* lÔxIJáÜ%ÒÓÓ³ yÇŸÌÙ][r½¨„í6 gT]»ZJï ›§§çúÌ?úì_$ï7Þ÷Á»|Û•6ê^Ï]HÉ„D`çÀæééY…|ŸÒ0¾ÞËsÚ©°q}k¸§Í6OOÏõšegbú¶ã«ä㮳úpTÒtÄZé%‘žžžÝV2äå9éÀ`FK"{{{¯åÍMG<==«Ü¦àût…M…h?çn_I`ÓV(¼YêI]aóôôôô”J"q$¶öw`óôôôô”J"9Ó*MeÂS¥€M7NY“6œ›§§§§'VظÈâ86OOOOÏ«À¦™J}lœàTÉ’HŽV¥RHÎÚßÍÓÓÓÓ€ —BRkš =l¾Í<===Øb­WܸaÚ•s‰Ä5ŸTe“X´èƒ³=====±ÂI6®$ÒG<===»Øàä^¬,R›½VYÓ Ú,-_Úâ8OOOO¶+ÀÆí+¨‰›§§§§gLa‹9Fr•‚•6ÍÚ?Vé¦#žžžžž1… \!±Ê†/{I¤§§§§'6Í⟙*;‡Mr„¤6™xãHM€Ww¼þóôôôt`»x÷«á-†5(‰tuÍÓÓÓÓÍZ݇û×°+d¥-fískÁgLýÃæéééé ¦#¸ž!…ëØ<====5`³8Er-^•6NVäœ"Ý%ÒÓÓÓÓ3Øh$Þg``ómæééééÀ¦õ¬qì¡ N•QØ8PÃ/Ã\ ÔØ<====9`£&#´ÍÍÓÓÓÓ3f:Bmü1£t¥é…4‹­¿—Dzzzzzb`£ýkÔ|.;°yzzzz¦ºDÒÞ5nxvåLG´²Hiƒq&$þaóôôôôÄ=lø¤…7·õ÷ôôôô`‹¹ÑSÉé¾’ÀÆÙùSP“lþÝ%ÒÓÓÓÓ“62jíMH $ÒaÍÓÓÓÓͪ®qÂRågkî)%‘lžžžžž¸$›‹ÀYQ\Ùßß­—DzzzzzZ€+ƒ¤ãÉpå`%ç°qÒ¢¤¨¹éˆ§§§§gLa£3×hÿ¶õw•ÍÓÓÓÓÍš1u­ò }ñ’?çé6OOOOOèaÃ%ó04®Ã¦#kžžžžl£­4²²À†_¼díŸRé6OOOOOìÉ ÐÆÿ;°yzzzz¦¸DJò©Sdeæ°q FëA-µ¤çFÆÂÔÔt˜ž™óôôôôì¼pq² °qeôt›o;OOOÏîÌÉÉ©ðÖÛg/Ðyk`QéšHTÒ%R*ƒÄëc83.-.©épúÌ`Át„:DÌ NMMû†óðððèÒ˜›ƒÑ’H:4›3NÄ6ïaóðððð`£ª5RI66 l–rH oœÕ¨’¦ÙùǬý©âæÀæááááÀF6Ú·†›ÊØ<<<<ØÎ¼5ô6ì+0[HœàÔu%‘’SdŒxØ<<<<ØØ¨;$.„¿îéááááÀvæ­¡·SgÇÌC•\"étpNy³B››‡‡‡‡˜ŽPWH¸þþþk½‡ÍÃÃÃÀMëa“¼3¨ÈDðCÕlýiÍ'7„Žs†¤ÐÍÃÃÃà zØ8;€6ïaóððððЀMr‰Ôœ!»¢$2Õ’œ›‡‡‡‡.‰Ä½k¸¯ T¶3o ½í¶þÝ l±’Hnh¶4ž¬²ƒ³©3¤¥4ÒK"=<<<<4`Ãêv‰ÄÙ- Ûêêjô|Yº_æî‹¯—k}^z}Nm¤m Ý»܆SºÞ² îuj·YÞ¿”m̽oÒ}¤×(­oì3[gëç-å>Òk´l»Øû§m—”Ï\ì½Ñ–{íüþWج¶þ\I¤ÔæªfëÏõ°aZÕ(×]"=<<<<$`à ½\…’Hí€9õàM‚£ØrS€Ì )1h±l €X€!¶œz¶³å€] -à`y]˜¶ˆe[Æà+¶­¬' bŸƒ µ‚õs{ÞNýþ¯W°… ï'4§HÊ(•žÃFóp¿šfçï¦#1`£;^¬ªaµm½¸DZ„R®ëy¼¦¾Äà­¢ÚòÊ,Ër»E!«ç98¡¬Y€,°­àjQ˲E%´ÀnÊëÕ ®ÌI‡2ðº¿ÿëبÂFys‰V‰9&T©‡MjسʒlØ8u T5¬¾uºÂ;´(U–ò-ëzXžS;¶üÅb-`b…²p{_,ª™vPžtÖRºzÔGËç" ¬%Ý'EᲨ«Ö²Yëÿ±÷'¶Þ©»^¾ÿl)¶þ\gžªT)Q©o’ÊæÀæááááÀ%‘\$VÚ`[§™Žh¥l©½()×ÅìS¾S@ÅZ2i9È/£bÄ´cY/ÚçÃòÞ§|V´ïq»¿ÿ±l1…»^›ÇV[mXvÊÀl|››‡‡‡‡çIÝ!{zz®ïïï¿¶SK"cðcíëJ5GXOÙ©ë\ïzÅž[µ]4Øèä÷¨ ìvÒkhÄvoôû” ¯–#¤¸I u¥Ç%§ÈÊ)lÒTpn›l®°yxxxxP`ãÊ!9×ÈN(‰´ö‹´ê n=ÂÛzÌFo畦›>µË¿+õ½&Ëï”U‰ì…ã Ö¤9Ò•œÃF‰TNSÝØ<<<<ØØhY$µúïÓ‘˜É…õÿªBF7\¯§uvЯþ6³*q±ß¬N5 Ø,y!BUK"µ²È´ùàlIaÃÀ† H:Ø,—SK—ºEYpPp¸é–õ/£¶ëû/ŒêÄI l”-¤j?\)\å€¾ÐØ°l7ñððððЀSÓ¨Ê.‘í2‰5ê—íwIyüÊÊJî¯v;÷?w÷xëzpëdù+ýoymeÖ׺¼ÔíÎ]_æu”y­°í´uàþ—n³®§õ}Ö+öÙ¡÷±lçÔפm;í;bùN•ýlÆ>7úl•ù­ÒªÚmV…œf:R9`ãÏÅ€Í{Ø<<<<<, †6ª´õ÷÷_ÛÎ6˱z¬ £Nì`;`µl–9(/»lé>ÜóXÁ´^P²@™¶=b@¥D HX×1¶-0(APêçÇòY!˜N¤@jìóYncŸåzOd”ýþ×n’ú×®`£Î¤qe‘”e*98;f>ÂMw…ÍÃÃÃÃC6~1\¸8™SÜb¿‰­RÖ¨Âfa Î*ëI_÷â­Ê𛇇‡‡6¬¢Ñþ5PÛz{{¯k°•™‡´²².\œ ³sóפïáááaùù…páâdX^^ŽÎŠã~[lœ­¿ÖÇÆõ¬Qx USØè ææ²YT666:‡ªlíTØèe ÖæçB»,=<<<Ó3sazf.jJ¢ýf¶Ø4ß ‹Ë}W¸Db`³n6OÇÍÃÃÃà Ía£À—ûûû¯m°i*øòÔÔtXX¸äoª‡‡Çº¥¥¥Bi¤Å¤• ›d:BûÙ$—H:‹-TÑt$6‡Mkt…ÍÃÃÃÃv‚¤vþØxd``pprrª©f±®æìú§¦¦ÃÒÒ’¿©ë>–——“€Mûm°YJ"¥lÀUظZPnƒI2¥›‡‡‡‡¶õÇ%°Ï€Ûš¥°Åæ­q°×áƒ6n6é7‘þ®ÒßÓfÇœQã‘®PØhhÌlîãÀæááááÀF àŒþßL…-i¼¹ÂæááQe`KÓÖì2IËàlª¬Q•SÝBUgK³-郳=<<<|o¸kç§|Ct!°QsÚÆ¶f•Drg˜Ý `[úÙù Ôæ†Ž…ù3? —Þÿ%­`ÀgÏOt'°Q53iV[LYã` _g lK?;Ÿ˜j4熎%—H:´yxxX€MJkÏZ+6m¬çI¹¦²=l’CdŠñHU-ö˜M[¶w¬Šðõ}O‹ëþùÞ¯†M[¶ç@´ÕÊ#@¢GõâÉýÏ…M[¶‡Ÿ?å£ Î\×[í™2{ C[#€-Wi„µz ­Þ©¯<Ú¾òh_˜Ÿ_ð³‡G Ô5MekW[OOÏõÔ¤ÐÚ8²®˜Ã&Íd«J[·Û;ï úðï±·uB¹š[uãÞOüïðíwû†èb`£³i?ÛÖ­[7´sp¶k¶w.Íf057t, ÖpydrO[É8vìx¸ã£;Ãݾý÷ÿèf ÛÒÒR¡­›ÿF›¥ýJr„ä*+ l´·n•€íÐá£áÞO|6ܶíîp×ÎO…'I)à¡ÃGÃý<nÛvwØ´e{¸÷Ÿ ÷?ðPv¿Ï÷>îàÊòn¹õöpÿ…ûx(S¬~rüT¸ÿ‡Âó/ Ó3³ááGö…}øÞð¡ßîà¡0$ ¾¯´n–˜ž™ ›¶lö~µpW®öü Ãý<”S|Ý^R©¬ÿ;ïËîû`ï£¹× Ë…m ÛîÐá£â{ð¡5ÀÔ¶Å“ûŸcßÓ‡ÙWØp}or0ÇO…{¾°ž‡-l'xM)Ÿ)èö¸÷ŸUbúö=[é9áýã™+ eùpÿ¡áÑð`ï£ÙsÇÖÿÊw⋾—t`Ë™àËÍœ-šk ¶Õ•l®ÚüÈÉêVÙR¡­¬{äWí w|tgøƒ?|0ÜóñO³@÷Oÿüløî÷„±ñ !„æç²Ëp;ÜöÝïÈ]¦Ë¡¿÷í6+ 5Sa‹õ±qä*78;f‡)õ¯I·ž€íáGö…M[¶‡}øÞpçÎûÂ-·Þ¾_ÌÄÞ¹ó¾ð5¨€û¨Üû‰Ïf Ñ-·ÞîÜy_¸sç}°AØýŸ¹r€ ÷ùК¹Ç¦-Û ÛCãÄÀöÐe?9~*üÚ­·‡Ûãù†M[¶³;E®\ ¶ ¾?\÷`ïרíÅ)tðú`ýaݶýîlÛ<µÿ¹Ür`Ûý€yn¼máþùÈßžßÖÞÓ;wÞWØNpݽŸøì•õÛvw¸mÛ݅퇗÷ 0¿ÈnÏ¿$Ÿ««ïóK¹Ï,o“XÀëã–O·ÇôÌlö>ÐÏÝ-·Þ^(S„e?üȾìõâû:|4Û>ô;!¥ôÙóè`£`¥‘؈¤Y.‘ÀYÀmyy9,--…¥¥¥º€ LFØÊÀZY•íÒø`©u¾çãŸ_øó¿ ÿôÏφ;>º3;v<»íÛÿáŽî ÷|üÓáž:ìü¯g†ÂØø…pÇGw†?úì_„{>þépÇGw†ÿõãá þWÙå{>þé¬ÄCáÎÿúñðø —_zx´ØÊ¨kø÷³AgK"eÊ)•WØ$Ç•XãÝ ë Ø>ôá{sJÒððhvJ2Ë–DÂAëhûb˜AæÏ¿p0Ürëíá–[oϰÃsÑjè7Ãëýi´ /K*IãÊÕ4`ƒƒv¼½à€_\òñõ}O±×K%‘ ~`ûÝ…÷ ž¿fx^îþØv7 ¶ðÜô1·m»›½ ǽnz=|~íÖÛýŸøcö=µ˜rüäø©èöÀÏ Ÿ#ª*:|”ýÜáxùñ{7=3ËnüÚn¹õvßC:°]/Í_µ­ 5ÍtDRÚêVØVWrUئ_}1œ|ö©ðÚ{V_{bÏêÉgŸ £ýÃhÿÁ0v╆«l‡ w|tgøî÷„ùù…pÇGw†Çöþm!d—¿òh_vùþðÁð•Gû2`ƒÛ`9ðX½3CÙmð›ý§~Ö¿8-¶¥¥%³ùˆô[Ú `³ Îæ¥ò%‘øÅÅf±IÎ,ëØ8'D z]/°}`ûÝ9X£Ãøùà ˜°á³£¹åLÏ̆{¿*º:bË~\¹ZLa£‚×îΓÚúkÀ&Ý_ZOXgpïƒl’)ÆðÙQö=‡×·;\Çmo—@—ëÅ•¬r€-ÁÑ¡ÃGÃ;ï Oí®»\pŸ;¸Žû,àY¶þìI£$<ºØÖh‰ V×Z¡°•˜]/°áÞµT`›~õÅpðK_xçé{>Ô^{bÏê·vì£ýÞËö•GûÂÎÿúñpèðÑpìØñLE ájoÛw¿w ð8€.èy£÷ýî÷djÀ›Àsìyxx´ØÊô¯5 ÖØ¸9lRE_Ì(±r.‘š³JÕMG´{j3_/°IÐtìø›Yÿ=p¾kç§²Þ·2ËÖìüéÁ¿l(Ðí…áèÉx.Ú£•b:õ`u’ „lÖ˜ž™ ÃgGY¸ÑàEzè#Ä￱ח‚ÚçŽ{Ÿ¡ÿÍ lÚ( î¶Ý»w߀•6\Ù,—Hin¥$²^—È剳¥€í‹ž¾çcáé{>οüL®$òé{>¾µcGxúž™K$­Vóó açýxf8‚óرãaàÌPC€í±½›Ý†—^zxx4Ø äÛÚÃFC¹Ë6 gœK¤¤¸Uv›6·€#Önp‰l°IsÆàÀ?vzf6Üÿ™/fehP¦öð#û’ *@-ä€O*Wk°áÇàõ— *4h ÷?ðPøµµ¾5šxbNR›lØdƒ{þV[Š)¬KÊ箑À×wÓpzذÉí]æ#­èaKu‰,ÛöººZ' °|ö© ÈÖØFû†oîøð­;ÂÁ/}áF›TyÈØø…pz`0+m û£ÏþExÐï–lô¶±ñ á+ö9°yx´Ø$K mÜog³‚*lwpœ"9EVØ4ã¶ÖÄððhxjÿsáþÏ|1gPa…¶;wÞ'àKåj¶B˜Ys|°÷«9“º f~mMUz°÷«áÉýÏ…'÷?wÅ%q h©Âv›b!ÿ[¾7 ذù˃½_ _ß÷txrÿsÙõvÛmF‹üv›6J£û€ «i8qId³6KJ°VVa»¼r‰…'Í%òüËÏ„§ïùXøæŽß ¯=±g5g:2òF®$òä³O™ÍG–~vÞ´Î_øó¿ÊÊqüÑgÿ"ìü¯Ïœ ÁPàÎ l!„Leƒ’Ë{>þé‚‹¤‡‡Gó€ ÿÆ¥*lÍ´õçJ")ÀQ.¡C•¶J›kœÙHU\"[ l8¥ô0A…徜e?½‹F 0¡ÛB‚­§JëaãExÍ)À&™§H Òl`x´”Èr%±Ï]£€M%áÑ]À&)kÔ9²™¦#€“ GÊ*l´ «l´=ÿ™O‡oîøðô=c-ýŸÿ̧÷vìßÜñ;¦þµÔ>¶cÇŽ‡ÓEgI°êÇ—>š“„pEm;vìxÎæÿرãÙí° ìyìØñðÝï‡u‡H›¦°µÛÖ_‰$7H¬°UÞ%’+Œ ®s…-lœ¢€]"9e –K‰-8§Â?9~ª°lβŸÞƽ–FÛ×÷=~d Üv’@ ¶ g^ò[Œ+âUs”¯ŠÛ9Ø4`äŒk lÓ3³b¡ø}€ž·”Ï]#€M%áÑžv¬RoBÊíÜYWIaãœ"¹’ÈØúp—c)¦#8ËÛÊü„lÜðì“Ï>•+w¤vþsCÇrýk­°÷÷ðð¨.°Å6Ü,û„F›%¹YÑÓ„ªÎa“¬ý9«ÿn68˜½ÿ/²€ÇOþÃs¹åf.‘k†pûðÙÑL1û€ùÈßäpCY! t–gÙ—/•«5Øàþ¿‡.OÏÌf¯—¼ùÈß„Ÿ?•½8ðÿЇïÍÀRÃ,6¼NÓ3³¹yu}ûž}ûž¾23lûÝÉ%‘Ø<žÞ7xþf¨iOå ^l«á³£¡oßÓYé(þì¢yÛö»Ã¡ÃG Ÿ; `6m”„G{@Mƒívé¾Üí8¦¦¦Ã›§Þz ›‹ìÞ½ûª¶q¦#–R›²ëÛ*[ ؤòHPϾµcGÖ»67t,»/ô¶¥ö¯9°yxxhÀ–:ƒ­™AVòIÆ#×D"TMaÃÍz´F×…v+°ámÜ6C²ñòà@ç&3¯¸ç‚¼åÖÛÃ7ˆò&Íaã,ûá _+Wk°q¦)Üóþäø© €èÁ?·ÍîÚù©ìuÓu-<÷];?†ÏŽ–2¡æ)ðž5³$rzf–ÂØgƒSS¹õ‡mBÇ%4 Ø´Qíƒ6 v¸°r¸áûääT8}fð @ÎÞÞÞëúûû¯Åå’Ô%2Vz#õRHŠ\Æ$¬áËͶ…s§®”;žùaøæŽßÉÊ!¹!ÙèRúר<<<$`Ó¬ýcðÖ,`³ØúÓÙTi£\ª8‡8:A\ê][OÀö“ãoŠåZPŠ6<\„90ÑxrÿsìÁñððhv»4‡ÍJc%cø¾OîŽGÂ%ŠÔÌ•ÆÊÕ†‡GáÃGsÏÅ]gÙ^?9~*[ÿ¯ï{Zu ÄÛŽ›UF·™¶Nð^ÑnœÂ¦}ðºÑç‡×mÝNÒóHÛ¶‡`|òð#ûÂó/·^¼)ï=~¤Ï<~Œ6J£= fµdŽÙàsË—Ô6PØz{{¯Û²eË töUÙ''§Ì}4RX£×iªZ+6(‘ÄåÏæÓ…ûŒöÌz×¾¹ãwL³ë™ÅæááÑÝÀ&•D6[i“gsìÁŒ`ˆÃׇª˜ŽH“Á¹H‹Säz¶VFŠ)G£T)®‡ìþÏûT8ø¥/¼êZjÿÚ¹Sae~¿ 9`ƒþµhãN„5Ø8…-v™Ž «l[l†¶Ø¤q¶Î6©dszfV¼­*A{ q~ƒqÞôhÍgÏ£}ÐëYK±lŽí´áNa£Öþx›VÉ=_¬—.n’ÚÖ¨¶B¸4>˜ lXA;ñJxþ3ŸÎnÿæŽßIî_[8w*\^¹”¼î‹‹‹atl¼aŸÃѱñpôÕcaàÌùù¾z,?q*Ðqø6g†Äç83Ä.Ïã›­lÿZ+æ°Iå’ÙHW¸Drꚥ,r½Îaó¨vàž­XÿŸ‡GUAM‚7 ‚´¿Úã¹ÇP`0ãLH¤9lÒB½ÖþÔx„žÁV°™œ"×zØØ¾µcGí?Fû¯8GR…-eþZ=†#g†v‚ë{µ—Ãc{ÿ6|¯örø§~6üÓ??}ÌWí ÏýëwÃ÷j/‡oì{:ƒ¬©©éðØÞ¿ ÏýëwÃ?ýó³¹uÄÏóØÞ¿ÍõêÂýéò<<ºØb=l–RÈV”DÆ„"Ê-\«W¨Òàì˜ùHÊ<66öZŠ£WjO›zôú˜Â†Õ5Na³–ßX®“”6©Ñ ­^`»¼rÉì =jØ\äµ'ö¬ÂÀl¸íµ'ö¬¶¢’¨ZX¹Z\\ SSÓQåêŸþùÙÜm_øó¿ ‹Ê1Âñ§Â·ÿþ³Ë‡ ß«½œ-ëè«Ç²Û¾±ïél¾òh_ö<‹‹‹á+ö±¯eàÌPnùlöþ5Ëþ¡YÀ†A 3ˆfœX)—HʬІ†¢:°yxxxtÌiå‚©àcQåÀ%r÷îÝ7`0Û²eË Ü<6œ­¹TƆw—M­mii©4°…ÂòÄYX|ö©Ü`l³±¯„§ïùXxúž…ƒ_úÂ;¿ô…wR\"ÃêJÝÀvüÄ©œB°sôÕc™öOÿüløÊ£}*ˆ…pE!²ÆsÿúÝ ÒÛû·¹ç8tøhxî_¿Ë>Ïc{ÿ6„pEyÃjÛââbøÂŸÿ•ÿ0x8°•0i¨a`ž ê.ä€Mb˜P%…ÍâIûؼ‡ÍÃÃãóÀL³´·€šåy4 `ƒ9l’µÿ–-[nà€-vP+‰”ÖMšÍ´ÔÛÃvåÉWÌp57t,Œx%70—NÒÙlÍ4ÁÀ655ƒ$€£¯Ë•7Rõ Çââbxlï߆/üù_±½g1Àåì>û¹Ûé:@<¶÷o³uáÖËÍÃW׬°Ö h“6;8sDÊ5¡J YÀÕƒ:°yxxxt&¨•¹Îª²¥X;ã’È7O½õWIË!ñ6iÝ$`,³Î‡ÈzmýqXg²52ë–mqq1|¯örøößÿc]KPªÂ%K6XÎÀ™!“°öØÞ¿-”SR`£ ôªA`…‚‚Ÿ‡‡›¬®I¿«Í6p‰¤~’²F!éÿ•²õçdKó $ÚÅ—Ø<<<ežÃ:DZ5 †R¡‰[(lØ r÷îÝ7`—Hn›åAƒF‹éW‰g°Q…-¦>jï9þ¿‘F$ËgKÛ÷·3ŽŸ8Å*rͶ2–þí˜Ã¦¥THU¸PE[J«øEǚᯛ‡‡G7[Ì #DÜc¬$=VëáŠeY·c`@8ã7m›E9‹mw °áƒ€6ÜÖ²íLÛsu%,ýì|] ¶ÞT5Î6Í-²]À&qçlO§PÅ’HNZäêE¥tÓn6+$Åf˜Õ‹±ÒH‹¢ƒ:+ÈAI$¨h ¬Á~¢··÷ºþþþkáv l¸YÝË4У}kØpI$׿Á²õùs뼺Þ¹4k*•¼4>Væ'Ô<<<ê6©,Ò:¥Õ ç§¡UVØb%‘’S¤›Žxxxt3°Å\-öÚ},ƒ¯%0 2vÙj¯­+6(ܲeË oø2žÃf)Ã)³¾h£à¦•DZÍ_¤÷\ú\^¹.¯\ ï\šÍòòÊ¥¦[j{xxt°•)‹´œl4°Åªü$f©\I¤¥T"]ïaóhu<¹ÿ¹°iËöð“㧺î5Ÿ-Üöü ÓûŸ Ó3²;Ü¡ÃGý†»v~*Üû‰Ï†'ÿá9óóJËþþá£Ùí\‚7¡áÑðð#û½Ÿøl¸kç§Âƒ½†!æuÕóZl1•,ÖÏSÛ,³Ó¬ÀÝ'¥ß+VöGæ°aPxÓøË–-7€­¿UY“n×@)uÛââbXZZÊnbðûß:SÎÃÃãÀ–RÙŠYl–’HÎ-’Îc£bT¨’éˆ4%œ³õ‘¯›G3ãÞOüïðíwwìú:|4<üÈ>®ùš§gfýŸølØ´e{Ø´e»H?²/»ÏmÛîÎþ¿ÿ/ŠÏ74<>ôá{³ûr¯åÞOüïìv.ïà¡Âcžú‡ç¯Ýz{Ø´e{¸åÖÛÃ-kÿoÚ²=üå##®OêkhW›Ü4¨ˆXŠÚdí7KQ٬РíYEªmšéHÊkã¶ ÷>Xf°Aɦ°iï‘ÄÖ<<<Úlõ¸D6 Ø{zz®—ƉQ;­²r.‘1… S«—Dz´;n¹õv6Ú@5â5:|4€îù@™ûϾ7ƒ®ááÑ ô8Húú¾§Ã¯­Á,›¶;wÞ>°ýîpèðQ6‡‡G ëû¯/Ì®Fpøõ}O7ä5´ج*˜¥ŒÄr?‹¿åqhÅ`# °Â†Ô5¬²õ÷÷_Ë›åùSR*äJ"U`³nkéà¦Ù1`Ó”6K)|£ +l±RHêIç²Urp¶d>Âõ°qÿn:âÑŠ8tøhÃa¨Ó¾f€¥û?óø|u¸¦gf3 Ã厰îGwî¼O¶ßúð½á®Ÿ2¿Xϧ˜RFi}ʼ†f[¬g-µt1E]Óß(¨á€B‚ mð6PÙ@Yöþoœâzج€ZÀqF#°ÅàVº_ªÊêáááÑh`\‹3¤Õ¹ÀÆ ÎŽ%'6á’ÉÊ~±tcXT¶õlCãáÁÞGÇ>|o¸mÛÝᮟ OþƒÜ $ÝŸÆ“ûŸ ÷?ðP˜ž™ Oî.ܹó¾ð¡ßî࡬W–uÛ¶»³Û¤ç=tøh¸ÿ‡r÷j@¹Ý“ûŸ ÷~⳦åNÏ̆‡ÙgÚV?²/<ØûÕÜc>ôá{ Û^¬Ã];?¾¾ïiµëó½_ ›¶lσÀeïÃÃì˶·ôþÐí ëg¹¿¶½~rüT¶¼M[¶‡»v~*·nÚû©õãÝÿ™‡Â-·ÞžÛ¾÷~âÃÌÚv’€ @ï÷>ñY,1@Ýÿ™‡Âƒ½_Í.kÀvË­·‹Ëæà*öÞâ×Qæ54Ø4¨ŠÍßÒÀŽÛZ M, ±Ò¼”ûXK±éÈ®]»nÄ 8€8ÜÃë]³÷xK $mppcí'´ô§Y‡›;àyxx4 ØÊö±I¿UÍ6ip6UÖ¨ª68[²ó§ðÆ)kë ØŽ?•õÒ|èÃ÷^)ïZ;“áÂrÿ{ÉÁ$@?üȾpË­·g±iËöpÛö»³eݶíîÜr8µHa9p-)Ö€r2ºÜ[n½½Cã™ÊA×ù¶íw ïÎ÷…Û¶ß=ÇmÛî·m»»°}žá ¸ý%hãTè—ºÿ3_ ·Üz{¶<­7êëûžÎn‡ûCùWn‰ß‡ûx(·ý`{;þfáuܹó¾\™·¸?W  O°Ák”– Û-cÔ€ ?vøìhV )|^¤€mƒ×§Ìkh°YT¨<¤äkð•2Ÿ,e~YYG0n/\œÌzذážÅ†Ë#©éˆÕéÒº$€[^^.À>󼸸XPجÛKú XJdÊ<<<š lPAÐ)–þ1`“˜ƒªj•Æç«Å$Encqׯ`ƒQ 'p–Ãz@zÿg¾X€8€þê¹Á¤ôþÓ3³ÐáõùÉñSYéÛ ˜ááQ±Ì°÷拹åþäø)v¹ðÚ) Âr(@Á¶ýÀö»Ù}Ø>¿vëí¦í‰ßn=`YÿùÃ÷¶Ó˜÷ –C×÷Ea@€ûßû‰?Î=/¼ôõK%‘Ó3³Ñ÷³x¢àÍ(œKÀÆ)VÜöÔT2 Øà±÷æ¡”qï|ޤÏ,˜˜`³’²¯¡ÑÀf-M,;ÀYR»Rïk¿ –Bmµö‡’HP×zzz®O1IÙ6¸Gͪ¶Qp»pq2,..&¹^éááÑ(`“6«ÊÖŒHœ}MBTØ4§H‹,¹ž]"§×˜ŸZƒ lpæß:÷ 2¹ûKÈ#"n¹õöpÛXÑ„f¬Fhs±¨bcí=Š)hÂA~™í£Ý~¥´ô÷ÌÛC2~¬Ÿ¤ôPHÁ÷õ}OG?šéÀL¬o-öšÛ lòTu AV€§gfså¿}ûžOî.<Øûh¦øv*°ijF™[Í®@•}^íq¸j †4 ogÞz›SØR¶m Ê8§H jx`6ÛÊÊJvpcNn5 йËÚûêááá‘ lPAÀ©lôw3¶ÿk$°a…ÍZÝ'µvUظzOnà ¤AÛz60ÄÀ3pb`‹ˆt-õýXM›q¥©\Re¿¾²ð‰×;e{Á2SGRgbzÛ¶»s½S·m»[5¿à^óó/Ì`J0ïýÄgÃóÈžÞl?9~ª°Éì`“{Í0Øþ×^j8°YAŸª˜Ãã˜AÞrëíáûžÎN&p%‘Òk€Ç4ØbVìˆi×Ö2¹”>¸F)fezƴ맦¦3…Íâ©•Dj`˜ª>Ò3È´q [ ¨§˜»XMJR‡¨{xxxHÀ›Ã+‰lFX3DìŠ9lZIdL]ã6äz¶ÛЙþ¯¯éþ…ƒáëûžÄzÐÚH`»åÖÛEÕ Öù* ¼)ÎÄ¢Àƒ€T`ÃåoV`“.x@Ñá (l TÖlxû¥djb±õ‡òA¼Zvª½f °ÅÊf-Ÿ…²ÀÆ}.pÌÌ̆C‡†Ÿ?•õóq)û¥°YËÐêQ¢bàVV=+ t)ϧ=/VØ@Y£eXq¼pq2ÉÒßòz¤Þ5® ^ð 6èa³šŽ”VÞ°÷ðððH6ÉÖß28»Y'‹ØÔ$uö®I¾•u‰Ä/+…´8D®`»ZNøEñ6 l±²Àf€Ec),ª wÐ/™^p ˆؤíÉÂPk{ºM%÷AîõÆ ä·Ö `bÛJÿè}Sç°áÁÑô5@qUŒmϘ%~L½Ò¶Œf¶!|nð²rüT8tø¨¸]¹×Qö5´²$R‚¼ÔÄiÏÃÌkµë,@dFèaÃ¥ÞàrooïuÜ6iýR·±µ$.s%‘œ­Y8ÖNhŸ;Ë}<<<<,Àëa£à¦Àk4°Å¼28k®²’ƒ³5‡HNi[Ï=lWMD¾*b`ƒƒFr8 h°Á?§. †‡ÙWj83„s¥ͱ×ÎA¥Ø´íIA…ZÛÓm*½nNÀ÷þsïçó/ ?²Uܸ~8xN ?9~J\wRà¶mw‹f/VþÀÚû3Ä ¶œ€ ¶!ç ëN¯Qså5ö>°ýî†ÎNU?ʪ. qëRF-«÷~ÚNZÛP 6þ ªa¬¸½qr`Ïa³*€xµ Îæ  ”6ÍtD:xIQ0­f"Ö¡íVÈ÷ððèn`“Ê"S÷S­6ª®iým•,‰ÄÒ#…3*1ZÙu:°AoÐmÛïÎr‡ÏކÏ÷~5SLh¸‚Yp–÷6jv1=3¦×JÉà`{¸Äm€°Û¶ßžü‡ç2#8 ¦ÍØ ¿vP…è¸Ø`Yl{ƬíaY·Üz»øzðvÂæùÈß°Ïï·ÀÖôÌl-Ô®¿kç§ÂOŽŸÊ`/>wð~þÚ­·ç¶;¼fMý²”UâyyÓ3³á®ŸR+ltÂk>{u4…MlFÂ}ž¥×F@ô5HŸ¿F+lÚÁr÷ÄzM@RK$5õ­Y ªžÃ†ûÕ°é6Z™BPã”6Ieƒf|ê™2×.¦Æi°»Ÿe¨ºUMõððè>`‹ ÎnµºfUØ8á„'Ì5•UØ´aÚU±õÇ3Ñ ?°v ÍÛôÌlv Ê&pÐõ¨2`ŒQ¸×)ñõ}O±Ë½kç§Øƒsj¡ ¥N)‰äÖ.3fmë-½§ÜvÂ3ÚèvåÀ[¶¶½ð²±‰ÆSûŸËN hë Ïg)‡•˜Jë~ÿgâêV>*mCpœaÖš·hߣz^C£{Ø,jHãÔ’CËÁ|økÀÑ’HPÚvíÚu#.„ÿ%—ÈzUC jð ÜhrÀV*jUÛ,½"eà½YgÆ=<<֧–b6Òìߨhù#'IüRY`Ó†gWÑÖxx4|}ßÓááGö…'÷?fÐÿááQQ¢¡æÒã%€8tø(»<8Ð}ø‘}YäLúÚ†‡G³å­ÔíÅ…öú9 ÅëÀ-óÎ÷©=w‚­ëˆßØ®±û_û`Ý^‡ÖÆ,Ð÷Û²Ýc¯™ÛÞ±u°÷«áþ ö~Õ\J{/BS– Ûñþ ÷?ðø¾×óšå)H7 ´bÊJYE®‘Jšt=˜Žôöö^GË"±ñÈæÍ›oܵk×)%‘Öõ°–@¬Á} ¯úج ›å}‘>;Ûÿ20f5ááááÀ¦´â÷C6Êt6´Ä-•5‰Íc“H_×ÓÓsýzœÃæÑºÐHP¾ª!H1QYý\e†¢{4Ø´ƒäØtìo‹z c脞…íÄOO½LËÁddóæÍ7ÌYJ"›µ®pp†MG8`‹A™åö2c êýüJ' <<<ºØ $R³öo¥¥¿l1[Íp¤+J"5…MÚ€l6èÁÒÊ?«lP[OÉ«[cLG¤ËÜõ(U”¤Ë¨4Í„KéÌÔÔtfëP¶k×®¤òÖÛÛ{gë_o)çÊÊJvM]ÃÐÆåää”èü2î‘ÜçÀó)sôbŸmjîÕMéakæoÇìÜ|8óÖÐÛ1X£pÆ•Hö÷÷_ª28Ûª®I3Ùèu`óh°ýäø©ðäþçÔûT Ø ”Ò£}ÀÆÔZçdiïÚrSŸ§YeƒeÇô°mÞ¼ùF mnkVÓX¶ÅÁ,fç+•¤ ¶²³ìêéeKd9l°•=¹Ø`K1á…ƒ·Ð ¦#Ò0:m#:°yxx´3~þó¥ºû<ËŽ.c/Ÿ¢¦Ô«8¥– –]¸D¤apÃ=l`ï_FaKY_ê‰oÃ.¸4’Ζ¶5}¯fçæÃää›.N&ý/åÔÔt˜ššÎ]Ž=Fº/,ËÓÓ³3³‘`$ ÎæN^YË÷[ l\/›6D»2À†I”ªlœ¬h©)u`óððXÏa9(/O)0ƒDX,f 袷•QçÀtŽà2H k›7o¾gKÏm]w‹‚¦ ЦàÀ¶¸¸hvc ?>v2¼þã7Âë?~#¼úÚ‰,-—qÒåÀu?>v’½¿´,ú|tÙžžž›óó MQØÊö°5sp6.‰Œõ®Q{I|ª<°ÅúÙ$hs`óðð¨´YÌÊ”1–Qßê±¹oF9¤uàyâ§§^Þ½{÷ ´g _†òH6º< €cpŠ>¤(}ÄÐ&¹DZ`{hx¤HXð?XÈáûrtÚõð|Ò}<==»Ø8Óz‚«.‘°IN‘ÜlŽeBgS)Q5©ÍÍÃãj°fU´3õš4ðRMDRïáâdÎ%J!±²Ž‘lRId 9£n®PÌÖqq1¬¬¬„ÅÅ۸¸˜6PØb®Ž!„04<Â*^0£÷Á°Å)s)àÆ]µÎŠ==»Sa“Ô5‹ÊÖ,`ëíí½ó†l\5 §º…*õ°aZÕúÙ$u _v`óðð¨´i—ª¼I*[#Ô7 hYšÉS5KÛé3ƒwïÞ™ŒìÚµëFpŠìíí½Ê${{{¯ÃÀf}.º}8x£¯€V°òʆ5|6Ú:†€M1®Ì‘SÒ´¤Ê-{Ô€Í!ÍÓÓ­¬éH³6«­lX6¤BÕ\"©Úfží ›‡‡GU6 œ5ÊÍ1Ü´ç(ÓßUµÇCÛŽ;Þµk×®ÁhT¶]»ve&$;vìx—ÔÖº cЉË#± nÀX[\\ — À+E:[€0®RêcÓ .KSÚRË'===»ØR6éÄf#6«éf̓#T©$2¦ªÑ©âZ:°yxxTØRKSMRã0|àÿS`ªŠœè¸ÒC(‰„ÒÇÍ›7߃³Ü6oÞ|#\.‘’)H=0JANê×E ;E.,\*ØúÇ>ƒCgM꘵D«aÔl„+ŸÔŒF8SWÛ<=»·‡Í lÜ>« ›æJOU5ÚºUÉ’H g\dlh¶›‡‡G»AK(º³Ñ,‹Í~ìo«ûÊ,ãË$%;¨ÐœÎ8•^~-l`ëŸâ܃üzUëIØg[–‡‡Gw[ªÂÖLkÿT…ã®,2tÓ6L¬±RI6VÁšål_=ƒ¬ë=ðN},ç@X¨q;_¼ƒævÖp… eô~ÔÌctl7.áÁÿkJ¢Å,…®?^©©éœòV/T[ßSz?éq„ÅJ5óðð¨>°u¢éH ¨ÑÊ@®L²RÀÆÍ-Ð"½$ÒÃã΢¨Yd­jF èð², M ,3r¬°Bݹûq0†Õ5PØ0à,--…±ñ áõŸø>˜€²¶qãÆwoÛ¶íf0"yãäÀÐèØx¦®­®®æ¼lqåšØùQT ¢ °á>60);ÏòjÔÐukŸ]ì„Fì;áááQ `+;‡­ÙÀóΰŽ#«\ubá¤F+À9°yxx4¸8p²štíàÙzð›‚Ð5Òž?ÕQ‚/®4ªJxOwôx9¯ÿøÄ÷·mÛv3[ooïujÛ¶m»ŒH¶mÛv3ô°aPÂìñõ°¸rMPa»`Ä0H×^~np‰\dlý¥ÏŒ¥ÌU·Øç-VšTO©e™“^béá±þ€ Ÿœê¤6ê‰á LšSdeMG0•â Á•FÒrH/‰ôððh¬q}Ú¥ì¬*½];øÕ–;ÀN…6˜1+—ŒupªZ¬/–b˜5 ®_X¸”ݾpîT8ÿò3áµ'ö¬úÈ/þÏ7ï¼¹÷Í;oî=ô‘_üŸ8o{ßoü2ôµ½qr`èÜÈXn¹Úðzàÿ¹^5 (ñA =`á^3VØêélfÙmê íóËI Äyxxt°I}Â).‘ÍPØ8`ÓÌG4§ûʺDR5^§YjÂåžžžëØ<<<ê·ØŽÀLÖƒÖ2P§-‡>¿Eq±:?J뤋`u‰5|=† ªLÑÒÁååå°ô³óá‹Î?þù0òéíáÜÇÞÎÞu“9‡ïºiúôŽ›Œ~é÷.Ÿù™°ô³ó9Ãp(¹:bÅŒ–râ× ˆۨÑ-‰Œ¹D✟_.N† 'ÃääT–SSÓarr*»žÞÞ¨„ç){ÿ©©éì:î6zŸØ²=×WÎÏ/øŽ¨K6 ÖÚaí/Íaãþb>á„§ÊÚús/’ZýÓã¦#5K©Xu®ìŒ´zÜûeÙ3'‰ ƒ¦ŠíIÃB{Æ0Ä-,\ºêù³óaæ©ÿF?÷‘$8³æèç>.¼øwaégçsóѰ2¦õ¢q}mœJˆ5üZ1À.--™6ÈÁ¡³áõ¿^}íDxõµÑÿéßW_;~|ìdá~?>v2¼þã7²„Ûðex½Þ7v?í±±uàîG×ݳssàÌïºØ:Ma“LG$…«¤âS¨¢­¿4߀n(6f©k–BJO™´4Ø“€PÌTs‘”ûÑ+-oáJ9CZÞHË!1°M¿úbÓ Ës{O8ÿµû¹S…õÁª^ vÂèè5®_ €dnn.œÿÚ}ëÖróÛ¾ó5ÖD„’àQp=…Û¹¹¹06~!,,\bÕNkob P¥(Á–ïÕ|G¬ØwÒò}Õ¾ÿ­¶2sØ,'_› l¨IÀ†­ýC•K"©efÊ;6 ¼Å®·œý— ¯ÞáÙÒ}¸cMYã€-e(6~MáŒîl©$K JU`-ëk{üó¹rF p+++™zFÕ6<m~~!ËÅÅÅ0:6^pÖ¬Ç Tö¨ÓN Äú-Sà.vRÅj)ßζ˜ÒÖŒ“/°q•|Ôd„Þ·ò.‘©Zí5Ø<<<¸3ëÙüØ¢vài9µ 7øb;9;Ÿ氆ݽ¸rJª&áÒ@ 'ìYO^xñïÂüüBXZZ sss9E »GÂvÁp‡/ÏÍÍ…ÅÅÅ06~!ÌÏ/ÊL%…-Å4ú¤Ï|êxŠ”r'‹êûî7óÏÃãñÀÖÃ6j:±³XYd¥zØàESu–CÒ % Ïv`óððà޸˖ÞËý´Äz{‡$HŒ=‡ežVVG¼èm!„œÒÊ7@€@¥ª°9æ‡annN,ÅpÊuÌ`óó ¥l¸’×'¶F†cê˜Ee³|‡­ã7<<<:Ø,}lÍøÇ\"9-ÖÃV`“ÀŒÊárÿ;°yxt7˜YMb÷O}ž2½@õ𓤬K à$H ¸,VÒ° $•ó/?SiXÃî‘]´ü‘B,W.É)lX­w_=½–Ú‰ í:‹ŠL'}þëùþ{xx¬/`kæw™›Ãf©ò“|8à¶PeÓNeÓúØØ<<<¸Gîl\ìÿXy£ôØØl³Òª´Xf¯ÑáÏô2§´QPÃýXàt˜Í;wjÝÌY«Û„äsÉõ¬awHÚˆÁ–Îa¿¹DâžBüþÅ>g©¥©#(¤ïZÚ²´ïu추ᅦ‡G{€MrŽýV53, æÍÊ¿òsبڦ•FÒòH¸ÍÍÃÃM;`Ôîk-CŒÔ¦*`Üs”>Í)2¦ªá(73 —Ò°†MH°]ÿÜÜ\aP6€ç  sØ@aÃï†7üy)£ºiãÊ~µïUª‘@j™¤õûïááÑ>`£' R{Øša:b6É€„sŠ Ý28÷¶Å$ÊžžžëØ<<ºÔbe„Ü[JIdÊeÙ¹lœÁSa¸Rzæsii‰]&…7l®AË .…Ñï|­«` ÷³ÍÎÎÔ3l,ÂͦÃ.‘Øðîl„ºV愃õ„Fª±NÊ™Õ(ÅÁÍã3€ ;wÊ,6É%R5‰]¨Sd¨šéˆ¦¶ie‘îéáá!ÄÑÿ-*›]Ú󤚤B™—õ”Sr½iTU『šip3غ±’+Ć F@]ƒëàà2 ÎÆÐŒr$`KáÐhгØóÇ>籓1¨³~ÿ=<ƪÔ7Ø8ÞàÆ‘uÅàlîEÓ†>/‰ôðð°‚Z¬lªÑ=5”­”ÖÛŸÄ‘p* ®ôƒ.ĽWPîçê2 yù™¬ü¶Óìì\NeÃ&-`R2>~1\Bj¦å@G*u-ûÒ>ÚI†زÌi“î_öûïááÑ`‹ Ζ~—šù¦ÀÆUñI¥‘šSd¨ªK$ι°hå‘lÝ kDY†ìÆ–'ÖsÐ[ô,÷ÓT5ü?3Ø‘‚ÚFËAU£VþôW×ò½lг†¡laáR˜™™)l;¶Ñ±ñ ظ÷Jpžg´¬²Þ>µ2ŸëôiÏÃ}çSÇxxx´ØRMG¬ûíF›Ei³ô´UذҦm$WØ<<<4Òn©)·Çzåib-ƒÓ^[ú׸²GjÛ0eØ®þüãŸïˆrÄNXèeãlýqüêÛFj#¿“ý…¤—cùCø‹A½N»5á1Òòéõô:OÏ*ç¿ _{~ºÒµù­SËÑjë‰ÏV›Ô¤¨œ­¿$#Ò?62*[ìÌ\ÊŒ§T@‹)©ófbj¾·ÔÊéít†´•••|`ÿ……Kmw†ùý_ËgC!Ì<õÚ_ùµûÂÔÔtiЧF{×ÜfgçÂF¾7¼j#ï„ï /‡?·’ý`ìrî:Èã!ÔFWÿ¬^¹äM*´5ˆ¬! Ë‚8°(h1÷«1 –{º<‡Ïä #ÁA-ØÚ14ÛRɉHÚéJ…4 qVâu`óðè^UÍj SÖ¬=gõ”Y¦ôó¤,GrÔʱÊ;Q: qI$ É^X¸”sˆœíŒrÈ™§þOá³Ðnh›~õÅ0==¦§§ÃÌÌL˜ËTµ¹¹«ÿÏÎÎ…™™™¬$ÃÙ¿Ÿ[Éà‹‚\mäì2׿Ÿ[É`ì1º‚Ú†îGU³pqÿc5Ž(m5 pä!õŽBUAÉ#EÃéáÙÂüÖ©åðåcËj °•œÝL›+°Qo Ì,•6®æoïaóððhDYdì>f,»-uÀµU¹“J-=lÒ l®$’S×h¯¹†ç‡°ÍÌÌ„‘Oo±Nƒ¶ó>ƒµùù…Lm››› KKK9c6ª¦aPË©j£«¹¿v90C*S)w¤e´L2§œ å‹T«Qõ‹+…Tž‡ªvµHÙc–Mrå’žžM.|ô¸«jeK"[­®°ÁàlËÜgŽ]8kÿPUÓi+lõÀšE=K¹_=Îx’Ê—Rò˜âò›§Fg|áþ5 tà°ÂêÐÌÌL¸4>ØQm#ŸÞfff²œššÎõ³MOOgýlØ°Š–)hkêýKþÏ l­$—EÖHÃ%‘e‹€[µÜ‘ÒÅÜu&EŌ§ 0çðæÙìü÷‘Õðø©wÌêPØÊôv7[a“N3©Ô¶Ø”pIeóÁÙ1h‹wh%’šºf±·ô¹¥ÞOÛ‘Yz×莑–Dâ5èIÀÿS+P×ÀHcaáR8ÿò3g«ßIÐvi|0W %’P 9=}Õ˜+lÔðõ™š¶[Ô „ö´åŒH˜¾µƒçCñþ\/˜RªXè/ƒÍP2 —F2=m5¡g­ð|óôtU­µÀ¦•CJà&m°ÅÜ!©IbWô°qЦõ´iÔëÀæáÑÝÊše®šÅÄÚ‡&-ת²¥ÎTÓ,þ-ꚦ¸qª6È¥¥¥0?¿•ñltŠ'CÛØ‰W²’HØf+++™Ê633ææ®ö°é´Úè*kD‚Õ6|›y5nÍM2SÜ8ÃbàAÁ ÷¦a@ÊA˜à Y(‡ÀPTÙ¬.‘Ú2==ëHWÕk:B÷eZëB+6I,ÒÆ’UNaƒ$[j:°yxtw¤¤¶¥€33‘¤E%ÎÍÓ ÛlVu-6û´UÀFMG8çHÊ3•,‰¤t*¹EÒòH6ØY¸×ÅXÙ¤¦¨ÕcÙŸiš+$÷—+…„ÛÔà2(jÔE—@‚áÈìì\ö?ÀÛèç>:Ø:ÚÎ?þùœŠ½Ôânîʶ3íÅÁÅLqƒ5¬®árH q8´¿ Ô·c—¯ZûWH©wƒ/Í „Ÿ4Çš¢äF  ¹Ë€tàð¬#÷¿½êM*‰l ¥§¬Q8“Ê"C·Ía³À𛇇GLM³4-k ¥•T¦6K×káoé_“ÊñPlz.{Äÿ¯®®fÀ‡Ëø.…ééé¶Ìîth;ÿµûÂÄÄDX\\Ì`mzz:LMMçþbÓ‘ïý<kßúyÎh¤à9rÕL ÷­áÉÜàmbN‚—‘ë £@Çõ²®Ë%µym‚šÆö®Ñ^¸˜k¤ƒš§—@®[`k¶¥?l1‡zn$Y¥gsåÜ4§H6­Ò2›ÍªvÅJS——ª¸qõý±úÍï0qO†9Íh€ «msssk톶Ñ/ýÞåÉÉ©0=}Å!rrr*½PZ ƒ³i¯†¶Ü0l¤¦QS€¯ æPcw¨-$ØØòEªvEæ¨åÆe²Ž”’ I¬22›ÍÓ3µÒEš l­„´`Óú×$ŽÊÚúS• ¿p‰t½$ÒÃÃ#¦\Åîg¿˜Y‰ÊbÊZ*Ø…Ôg6"ý;Pl.B G$¸ò=Èf*S?ÿÉ÷š\4ÚF?÷‘055&&&2%mzz:LNNJ$ظlRïÚªª!·G¬®Qƒ‘L}Ë<<ÛïSóhÏM>$[ÿ²éópî“wÈZÌ\ÄÕ6Owìh[ÿv€žÃ†´˜[d,B7Ía³ºµ8°yxtwé£[Z9dÊ\4©d2v¿zË)|q—úÕ8 ›j4pêþ 3×`þNl>27t¬¥ŠX³¢™ÐÀ65užrr*LNNe$oÐÃF]"±ÙuˆÄ‰ï‹U¶LÕBªZаå?žÍÆ(elgûÊ(éœû$3íf¶˜ÂG{íÚ<ýj[UØRç°YO¶6Baëíí½Ž²†d:B++k:"ÕrªZŒt{zz®w`óðXŸ°e1ûˆ©S–ùj–ç´ôªiX¶Ì²l%×ÇÆ˜ä‰-ý¡g +mÔp+m0zìÄ+l‰ Ûìì\¦®Á<6PÞþãÜB®wíÅÁÅLMûîÐϳ^6øû½áå\ÿ6&ÉÙöãþ5ìIæ˜eªœ`F"Ùöç®Cå—ØêŸÎIcÝ)éL5‰5ÎàD )mv“t¬D~딋´Ò%RRØ,Õ3,‰´ˆE\ëV× ÎæŽ5œíáQ’EëY³T{~+DIŠX캃mbÏ# ÃÖÊ-‘ÔúìúñÙOøf®á²È¥¥¥œi¨Eë©$òK³m)‰<þ|˜™™É”4p„Þ6¸ \"±Sdæ‰T4\‰Õ7l.’+$¶ÿX}£¹±œ'”Jœ!©ªF˱+‰Ô H3,Q†rGg¶Å@̇tW"ÿ}dÕÍEš\YÖÒ¿%‘1{Í$±²¦#Ô-2VI"ñe6õ«¬Å¬øµ²G ¸Y J¸5¯eMëCÓìü%e–G a€ƒÿØÐ@QÃJ¨k´´ÏMGâÀ699Ο?Ÿm3˜Ã3ÙÀzØØ@UÃ@–³çgìúÈÀÚŸ‘ Ê~lÁ „™ÛVpw$’’y 7ß+›”J.“À¹¯ÙêŸ[‡¬qàé0´>`ÍûÕÚ×óõo–ÂÆ›VÙ3M¬¤K$'1ZU5WØ<<Ö/¸iƒ: D¥”UÄú×åþhqŸ¤ ›´CÓ5É-ruuµà‰ Ô$‡H p00[Ó»­¿Í%rbb"LNN…ÙÙ+Ð ³ì`[â’H€3 lTiÃ$—Hj8‚µÄÆ¿`HÂÁÖhò8hð:x>°%ŽÌØþ8n<§ˆq3Ù¤²JÅQ’ë‹–V*£’:Ow‚ì’’È”¶”“´VØ8‘Üì)¸…ª÷°awHêéÀæá±þ-Ö f=Ëm–³seÌE,+-c8"Õúk½k±(£vþlÔ b)_´¨m)n1…-uþšTþ¨9CrÁ=k`펚ŽàrHê %’Ðwà1==F¿ó5‡5Ma{ù™¨¤C$€ðääTøs á»C?Ï€ ÔHb3p‹ÌÍUCýlèrGg³á¹m#«9»iÞ7ÿŒ*qÒpì6jLíc`«¦(gT K(8¬iëbJO‡5w‰LšÃÖ,uM¶”ÒHÎp¤ò.‘Xe£J›÷°yxTÜ,ÆVëPì”ÒJkÙ£|1˜´Xõk&#š! íU£®‘Xa£å‘´$[ùCÿ6™˜˜^ü;‡5%'&&r†#çÏŸÏJ(•`à À0|]ÎÚA[ÒÈÁ_(§’Üí#«•Žsy¬1¥“~ J™›VxVñˆ+cí_“Ô0NUSÜ+k±ž¹˜Rçé°ÖÅsØ$`Ãû4í¤j³M%FK%P«”­?×§F"9‚ÕjKØ<<ÖO¤¦6Å”3ËsÄ ,e¨µU%KJ °Ig-½jÜàl¸Œmû¡T@ ®§ê†5lEpÏ;ë°qˆƒ¬°S$܆K"q)$üÏö³á¾3lÝ¿öÖó†T4ê* CµaN[¤À„„XûÇ”,šÏÙnŸ”Kj±ÍóÖðonô€4\Xf-btÒð¹nžk¶¬µÚÚ?µ‡ÍRYY…ö¯qöþ\9¤Ûú{x¬/`“T'Kyc¬¤0µ$³ÌPíF½¶ÞßZ2"Ý_šÉ`Fÿb@ƒrI l ®á^6N1é$XƒYrxfVÚÖ ¹’È?·Âšd0F FrC±‘) uÄ$54{áFJ¹¿ðÂýi è€ »62’œHÍ`í_cœ"¹ûׄÙo–5áµ9´9¬y–ëa‹9I7³$Rr¬Í‘®üàlÜ$8ó’Hê”FZá+æÉÝ_s˜j”%¿ Ë8CÂcµ²HzM6 ktæVÚ$§H0ÄèGé©éL-:ÿøçÖ”þ5ØN8'&&2Õmrr*ÌÏ/„þ<¶30“æ±qŽb"-3!’Hd“¬©w ŒIJUMRªˆ*Gï/ÎLã%cæŠÚ%©a’Ò§–?JΓ–¡Úžk]^™ lͶõìéé¹^ë_ãÆiÿ•-‰äjB-½kp?6õ]i)ML-—L…<+d5úè㥖d2¢YÿÓûS§Hl<²ººÊ*lØrnn.,..fЍ@k9`{ù™¶‚ѹ½',Oœí(Xùý_cccabb"l¸$oÃÙÙ¹Üàll8B“Âô®ÕFW ³sVÿL7 à4IúÙàykk×e`'™”Þ·‚#¤68[ë7‹9B&˜¨€¦)x)ýužk]:8;µ,ÒRÓ,…û{!*l¸gÍR“*Ø<<:Ô,+gŒÍZã Î2+­ðSTÄØìØ ìØuTaÃýkøzl4—Ôà üqnn.g<‚M2<Ο?ßöÚ#¿ÿë´µÖ``6v„„íÿƒb ½l0‡ 6PÕ°c$š HÖÀÚŸö©áÞ4€¶Y½šÒèeqдЋ&• –NjË·XøK $ô°Ñûpþ9¬Y6¶¶ç¿¬:¬ù¶$`Ó¸ƒ2 WºÁÖ_‚5ɹÅÍ㳡Í2,[3‰ »ÖÜ"5˜²ôÄY¬ø-Š[ì>hI ·iLJÍD`'‰¯çÔ5NmÅ ÷®ÍÎ^¸L][›1Ö e‘#¿ÿë±gïº)Œö çÏŸÏ6ü?̰ÃJ›up6îWÃæ#XFØ-’s„ÌzÜFó3Ú ½lh–§²Ie’â l ~«iuMZ¶6x›”YŠê™ÐóšZ2éÙÔ|üÔ;Mÿl6°aa)mR?[¨êàlì™ºÑØ<<ÖÂsU´Xâ§<‡ôCŸ2ÈÚ¢¼¥”UZÔ¶˜¤yÚ‘–£Àe4 rXi£ƒ³ggçÂüüB˜+”ø;w6œûØ{B§Ñn)8~z{®4lã[ ©ÂFË"©{$\Ÿ³é'êZ6w À +lHy£Ã³ñã°Hæö(XùGíû1”ÑrI¦LRUÙ"ƒ¯¥¹nâ¬7 ì$ÕÍRZéÙ–üÖ©e¦ubë¯ ÏnÖ<6ÎÖßâŸÁUVZa“ÜURf°9°yxt®ªVFÑŠ•¶±±±pþk÷u½ºvþüù0==ë[££hNOO³=l¸—Ó.”=J°F"¨W Gð\¶œ‹$<Ag ¹#ÒÇxRɤ:‚›Jêk©×-ÖcgPÎj óÛ<ݲۀM+‹ŒíkÛ lZU`%6ü"±C¤liÒÍãý°)‹[£t?+äYU»8Jj›e©ÿk.‘ˆ‹ ×–‹{Õà2”©ŒAY$µö—È™™™¬ ÷^„x/ÛMaôsÉÔ50¤óئ§§sŽ›Ôt„”F‚S$UÙ0˜Q»Ö®Ÿ)Äó×0bµ…5Í1âIe× ¬ÙÒDÅ„ƒ¶Zöj1ÕŒéw«I*£gKÒa­s ;—žÝj`ÃÕ~TaÓ .Tu›ä‰Ë 5ã6ÎTÙRd­æ Òój.Ž1åÎjRVaÓ¶“¤–ÑÚèècµþ6¸ï41°ÑAÙn{lóó °apÃ*Ûèw¾Ö•À6v╠̨‹&†Û™™™Ìtdvv.û€ ` —DˆI%‘XaÃs×r³‘éHÖ3†J"Y€]-”Qâ¹kìðlÁJá¦=hR/œXÒ¨ô´©å‹±²EmyìÅ€ÑÓMFÜÖ¹t[«\"­ ›VªÚÃ&™Õ­ÅÍãsT6+ÈYTº˜j–ÒœRƒG+¼YJ+%•Ìrº¤;Cl4‚ûݨùÀÙòò²X Æ#pØ,ƒ ”‰‰‰0ú¹t¬üóœau o§ÙÙ¹l;´aµ3¡Ð†z×röüÌ ìœR†J35 C8GâÞ6è_£JÓÆØû×8çEn~7×M±Û¯IþZŸ7Ø;6`[# Ýîe‘n2â¶vÎ>óÖÐÛÖùkØgC2©°a©‘SÝ´¹kll1˜ª¶,å—Ò2Sf­¥Z÷keŽ©©•EJÊž·F¡ÞŒpå´ë[ƒ²È……K™yÆüüBÖÀÿ…±¯tMi$ØøcH£cðì5¸ÌG`¾ía£ýkÔ|+itNÁF{Ú0„Q%ƒ7lJ†hN‘RYÁ ’³ÝWzÍÄe2F(5ÅÂ_,µTT¹ZÂúxzßš÷°-™€M«†i¦Â3;”ŒG*íÉÁ7AÜÍÃcýÀZ ’,æ ±òCí ì¬}s1ͪÎÅàM²î·ü›kƒ•6ØYÂÿ ¨Q‡È¥¥¥\Ûââblл*ÛÜÜ\Øèßóçχó/?Ó®c'^ £££YI(À$ Ǧe¤SSÓY‰éÜÜ\øÑèU%›ÁFË %›1… «jØl'8\‰ûÛæç2·H5€ l@ðê@L•­þG¿óµ022’Au‚ÄŠ†3ì ½l³³W6©$ «nb´’ësã@—?â¡Ú¥mt5m52èšs}ä`ªFµBY%sA¢ ¤2h»¦õÐ åŽÒó¨¥Ú mφ–B:­/`ãöYZïv³`+‰Ôü3$ÇHNm«°qMzÜ\¶”>66öC›EUK±î×î—¢êÅF”1 I¶Ô6Mq£áLF$¥³TÆN‘ØÒ.///çŒFÖÐÀÝÀš@/×ÈÈH £££aôK¿w¹j°FË aÐQ`8‚ ÔJPß$[lé…K$©C$kï€+»/r‹Äî‘ÙíñP0É©XŒÙHM£š0­&õº N’œZ¦ÍbK…´š`j¢W–ãe‘^ éÀ¦›¥$²Ù.‘ÞàJ%9Ž©œÂ&•EJò}›‡Çú)“´”DÖS:Ù(X³WŠ"gUù¤!גὟ¥ +kTqu +kð—H´Ê6;;—ëau›i``»k££•RÚ`867Ü£ †{Ö°+äìì\Öß655~4Z,‡èâŒG°Š†K3e ÏRÃ0¶Vêx€8FœaçH¸ŒÕ6®—«&9=2nŒÐP†e[X«½j†^6ÉDä€2ƒ-:BÀÍK!Ø¢û,í¤l3”6ÉÖŸò†äµÁ P•ëa“¬0ce‘l[i)•lÔã-†!)¥”)N‘Ö‘1Œ©jZ™©&íéYMpêÂ@æ#à Iá +lXqµT"êˆ%‚¸4Àm=÷´ûØ{Â…ÿ.Pœª¸wBþ‹\Àu6<ƒ .s}lÜ,¶ §ÈlÞ*‰ÌA€"9 ~jí_1Ô/'9>Ö„¹k5a›Qµ˜>ç©•Xfµ‘uŠ•szz)¤›Í)²ÊšlšÊF«¥¡Ù•6i&[L’„ÿ{{{¯s`óðXªZÊPiË´¥¾=eè¶VšÙÈRH‹ ¤ä Iïo…6l<Âõ°Ñë(°ÙÈììhƒ¿P‰K"qb#¶‘‘‘+ÿçkëÎòÜ Ð@Uà @vþüùl»À6Ãj$(l RBœM{Ù(œÑ¹lЫÊZöÿZ9$Uáèܶܬ6Òó†‡jså\I#kJ2J–!¸Læ@-6-bRSæ¦YÊ% VEsXóRHφö°5+Øz{{¯ëíí½ÎœÐDÝ"CUlý±ã u`Ñ H¤ž66ÎTÙbf#s ˆ$L€SÝbª·ŽVx‹ÍY‹‰LqŠ„2G®,’ƒ6:H;E‚Ú†g³B„K©c$ Ôejdd$Œx%Œüþ¯¯ÈÏ}$ œ*@(.Å¥ p=ÀØöC9)\Xƒí‡gãÒHI]+Ìc#3ذJ–”f£ž¶LCóÝðevÞg:¢(Vøviè¶:6 Ö›®­ô±©åJ©et`·ƒ–—Bv¹­¿4‡-å„h£ºDJF#ÒÌhêÙU [ŠÚæÀæáÑ9 ›6 ;6—ÍsÅ,¦î¥@•Vb™2‡M*‡”\!¹ËxÀI׃Êe ¸aHÃVÿp_ iØæÀÊ"AA¢ ”CÂÿ؈dll,œ;wöŠâÖÁ%’ç>öž+j๳att4û›õä¡aáÔðv@8U7lâÂ™Ž¼8¸˜)hð?ÌiÓJ é 6 ˆqvþXi#½m…’E QÄhÙdƄ𙰣èc ªVé¡cç©YÊ'S­dÒ³1¥_>æÀ¶ž­…­=l{Ph“FUª$’#Tü"cƒ³±BçÀæáÑyJ[Ìð#v ¬Iê›1€jD–QÛ4X³\6<(›–<Âõ —²Þ5Î|„”IBÏu;Äà†ËÞhx%Œ~î#kç¿v_;ñJiàvIûÕJ¹Äeóó Yï\Æ.›´‡ ÷±ÁÌ5ª´QsÔ0Ðe·¬æK!‰²–s•D¶ÿ§Hf&;›ƒ$F¥Ë)•’D±SÀ)w„2OÉÚ¿&¼Wך—ŸzÇhÎN1‰öi°ÅFŠQ`«¬­?gßëc‹)mlSi)‡,3g%eÆ›ü¬Š™ÐRÐRÛ‘q–ýZVÕðej:Âõ±á2Hl@‚K"1°ÁÿØÎžÂ €XþƒÚvîÜÙ+sÍÚ\&9ú¹d ëFçÊaSúqi(ŒCÀ®šqÔà2g:‚{×pO5É©kJ‰$Œ3 ÁòQ9%½ÏjÅψ`•Š”1RµMTȘûdÊÝÚíÏ ³Ù4wG 9Û~®Ä’YÇš0´Ûa«þü—áË?]bëoi±h‡ÂF•5®­²ƒ³i?›5]aóðè,P³83ZJ­?ÌVC’”rΘRXÖœ„Þ&™‹H$š‰T^Bç­a…Î`£ÐFoÃà†-þá2(ïÃNˆܨÒ°%’ƒCgÃù—Ÿiéܶs{ONQƒõÀvýœ$UVñvË~\ —|êþãÜBÁÖ+lX}ã"éÐk0¡*[ÎpÝŽMH²û"‹ÿ\©$6 aT.vÖô¬‘yn’§ÚäÕ4‚•ª¢1}pmn4âYTØÊÌakVHÀfq‹”úÙ*WI6I^´l<6Î*‡ŒÁ‹¦˜¥˜u¶Uµã¯]JidÌ-R+ÔŒJÀT$V& ÆÙúS;ÜÛ÷¥ ÆåÜÜ\ætPƒûºði€ l°6ꃿc'^¹2 º å’ç>öž0ú¹„Ñï|-Œx% Í=?-¤Ê×»†-ý1ÄÂ6Âp n›pß¹¹¹ð£ÑŸ@Î^ãþ§jVÙ(Ìq½k9µm”ü¥£)”6rå’Ôú¾Æ”uÅ¥r­,Êáù'&&rëC˱±ÀîYÃ3Øð ;\þàΑ¸‡ Ûøƒù˜­Ía@ƒë°6[ ®Y-ºH2ýlÐûFg¤Ip–3¡%”Ìœ5jå_úÝbVþ)Æ"5Mų€–2èÛ6W×<ã [+!c mØ$[ÿJ•DbPÓê?1¸IN-l nÒ™±²åçG˹T«þÅ-–^5î±Z7m¾8@â¾7NMÃÀF4ÎÚJ"¡¤—ø¬@ràF­þ!ÒèuƒCW3ƒ¬¯„“Ï>~é ïúÈ/þO)7ÿÊÿ³ò?øÑÙã'NåzÔÜвyqÖh)$ž?J”:bÃc`[âû`Ð[(‹äzÙ¨ª†4 Üèì5<›SÑà2HZ9ºš¤{ I5ª–ÅœkþšP.©–O öü5e7«˜ C²£VÿknãïÀ–;q˜RÙìÁÙØÖŸc ÌœªÖ=lµjî,ÜõlSi™Qƒ,‹ó£ÅlDú¿^È*kF"=GÌ2b\ïýæßps×p38VÙ¸ÙlÔ1þŸ½:ºFB?6"¡6ÿ4©“$ÀÀ(pPÂxìØñP;ðòlþ•ÿgkOOÏ{0œqùƒüèì±cdzÇcSPÖèzP¸<33“›¹FËqé#l7< »mNOOçJ"ñpl¬”QÃlÅÏ•FŒGÀH•I1<— Ážáv€ˆ`M)}Ì©kœcæ¡ö„YúÊ"·%ó”šà,É‚˜´^m¥mü]]«~I$=i9iÚJ…ƒ6låOA®R%‘’¢Æ ÍŽ•G:°yxt´Yg¦ÄzÚbŠ™µÔ2¶Nõ”ØtÀ J"¹áØP‰Õ7II“æ³e÷Á¥Ž`:¸Fb £Î´·U·çH¬´™g5fþý[³”(Z,÷-&$äùj’šçêš«kž¥LGZÑdž6©’SפRÈÊõ°Qã gšÊ&A››‡Gçªm1Èѱ2÷OQÝê-‹´(l)ªÜ×¢¾áËtÈí¡ '7— +nÞÀ’–HâÛ9ÎÆ —ÆÖøØ‰—Db˜ÃpuîÜÙpòÍÓ&…   6nöä䫪iå „á׎·”C‚ª·/..æJ"±­?(i¸ ’]gk}iÔÃZ6s «oaÌX._<~âTNaÓ’›4ЛKZêHMF \2''§²mÛ…öÂc`ûýh”w€¤n‘Ü lâÖ0Ðz– `H;x>äU7Z GU0Él„QÄj øe3Ø{ªWGu¨6ãhYSJ0E(” ÑU6Ÿ»æÀfî_³VÔ4 ØÊ8EVÞ%’³ðçþõ³9°yxtFId¬a¸Œr¦Á¡´‹3d¬2Åå²^à V!u˜6<p°Cä6ÚÇFMH¸ž5|=3P„p™$MM50à€Vذb ° vûx~.‰ìééyÏæÍ›eóæÍ¿‚Ë qY$4<›[/PÑðk€ÿ±‚åXm„ûa·Hì ÿÏÏ/d.‘XU“ Þ¹&ö´aÛ~¤Œa»PÐðüµB$é_ãæ¯qVüì,6θ„S×Z' ¿æPU¾¤Ç[f±i€/àéêZ*l1§HËÉÒf›TÕ§ŒP!jëÖ­*¥°ÅBš¹F¯ëíí½ÎÍãsÊ cÖùÖ³e–~·2å–ÒºÕká_¯â&Yö[æ°QU T4øËÍcƒ'ÜŠVØèðl\I{ذÚ¥Üð`m¬Ra£ì°855+‘Ä @¾-×öyó¯Üö¾ßøe hÜhI$Vó8hƒË¸ ^ô¦á× Šž¯†gÈØá>@PØ@QãÔ3ª¼q3רò–sƒÄF\%±ùHæI‡k#;@Ê±ÒÆ ¾® .’¬Ë¤0›-…48>ˆõ® ãX¥OGà°æêš§ÙtÄZ ÙL`ëíí½.Åô°ò.‘– áÚü5N¦t`óðè,XÓ.[{ÏRLERzØbË/;W-¥ÔRÛAiÊšt4„+jè8·Hиë8·Hèi@ò>6ì ê4€lV‚{Ǹh´ ‡ƒ´°­©nذ¹ˆd$‚•5¬¤áÿ1Ìá!ÙÎ@YÃå‘Ty… €:E‚’Vè_[/¬Âa• Ê©S$¾-ûÏ\#F#9• Cš0Ç,gÍOúÖ¨S$ u¸Ï-RΨ*[¨R€Rr¡T PÚ’sÏO]]«²Â–Ú¿«²i–ÂÆ F´ —FâëBÕæ°Åæ±IMÞÃæáÑ™àfQ¼¬%Š0± }l¸4«kx63 åࢥ…x.¶ÍçŒI¨ýþéÁ\I¤kØð2©5?çj @‰¡ '5:ÚÛG/c3(‰Äýix»& ÇænËæ©Ì!‘¶ô_SÖ°Òv÷¯æÝ!sÆ"´Ä)mR²ã£’Üÿ†k&ÔeEÆ Ô¸Ñ`Iù/×pº°$Ò l¶žžžëcsؤIÎÞ¿R 7!œSÚbÎ-l n–òÆìÅT½XoYl¹)ƒ¶c£Ê’„ÔrG©$zݤÙm´a… Ê!ÊðíØp„ëg›€9<“ þp RA¬°aû{¬ªaHÃÿDa“(aÄÀ`–ëaC×Ýö¾ßøe lXUÃsÕ$÷GlÙçÍá׋Ê!qÉ(îiƒÇäýhôŠ}?†4°ô§‘и’Il㟩iP9’ïKË.}¤p†”1ª²±ýcäñh?WIg°IóÏ„ÒHIb[ J´ÙÂkq³çã§ÞqÀéB…Í:‡­ Û™·†ÞæÊ!%ÓÉÚC[¨²K¤Ô¿¦®›‡GçÂšÕ–× [±Þµ2p§ ×¶ÀW-æiéWÓf¸a[láU6ª°á2Iê‰7¸à þÇöþ ÑÁÚ "ÁmXÂIK ¹n¸,ÀíôÀ`8Òÿê(¨a m¯ÿøøðéÁB…EX_\‰5 gø5Ó~>Ú«ÀFÝ"Ü[È™P ñ}PÖnºé¦_Ú´iÓ/P• ”Db@£Šž‘†Çàþ;úÚi $·m¸mÏýÊÅUÒèÐìLECÎŽÒàìÜÐlló?RœÃ† zÔ2U—@bkZÚH¬ýH¦ŒêV£=p¸‘ItØuÄ8ãœ-0¥ž*0jJ¡§—CºÂf6­-¡Õ%‘¸ÊOë]«´é÷b1©ZšØ<<Ú¯¨i¥†1uMƒ.  ¬ê\ŠR¦í$,¥œ–¾;Ø9ip'A›n±ÙÒýÒh9$î]Ã¥Ôx„Ž ð íý—.Ô5ìÌ¥øèaÃeÛ¶m»’^ <.ÙÕ÷•a'GPÐèkÆN˜ô5ƒÉÍ]ƒû˜â’H®oƒ²Üíà°zV(Ÿä EÜå,ÿG‹%’¸l’ ×ÏÆ½=çI;òW+Wdmõ-¥—–™k134/‡ôlHI¤vR¸™À&q‡VÙ5¶þ’¢Fç¯qØ<<:Ce‹]WÖ.ß w)×Å–ÙhûþXIdl>›´ƒ“.Ó¹kÜãé\Ú0¬Ñž5®ç*HTm[ZZÊõ|áC\~ˆ{½°Âà„ûÜæçÂðÙÑðúO|ÿ¶÷ýÆ/oÚ´é¶mÛv³Ôdž ` —bÒYk´„»=âׯ ¶\ÛFRéuxàíðþ§O¤å?¼‘ÿK¯ã®Ç·áëèõt9ô¹è}S2)˜xp³ÛbÎ Ê›—Rÿ[MF7ñrHÏâ6k9dlÿßì’H)-ÐV`“œ"SzØ\aóðèÜÒH Y/iZÊ/SÔ¶”rÎzÊ!Ë:OZ"âðŽ“ªit 6½ƒ\°ïƒAvP“ÜËðFçµI3Ú°é¶ö‡ÒHl:rÓM7ýÒ'†††Grã0¼ Ò;lÕC¬ÄQË~Ú߇UF ª°œßüÎñpíc?Ìòš=G²¿ð?w{–}¯„kö¹’{®æ†¾þ+ÿï=®ÙÛ®}ì‡aC_ÿ•ûãçØÛõqk÷½’ùåe÷Å·ï=®Y[&ä5{\ù ϵv¸ž—àž6Ú‡V3 Îf{È„yjªiˆe°Õ¼,2šß:µì@ÓE ­ÑÚZmës§§ƒ²µž¶Ê*lR?môó’HÎ/‡Œ)l–CËrcgÞ,.ޱòIK›uôz+œiæ#±ÒHI}£C³i?µýÇ·C‰ëF“‚  ;Ú0á^6¬ÊAOô°mÛ¶íæM›6ý@(mø2¸DÍõ¤á1PþˆK5©-?.oÄeŽX-£0‹ÍUè<6Xl¨áÛ¯Ù‹Á+ÿÂÈý÷b;’ ¸+ÀE!íÊÿWo»ºœüuG ·_Ó×ϼ. Ç–ìø©;¤P¾X B4_k%‘’1ŠC›{~êåÝf:’ÚÃÖl…M*‰”`ÍbžXé’HÚË+‹t`óðè¬RH‹reYžõ ð4õNƒ­XùbªÂ[žØb†$R¥T"sŽä#1´Q÷H¬ÂaçH|™Â7,›tP›{ÜW†U/ S³³s9`GH€46ìùúŸËAvƒ¤æ'T1‹•5ræ+P.IeÓeQ`ËAÚÞ"¼I—±’–)[…ì*˜mèëg•¹ °ö)@½nC_¦že÷ëëÏÿßןƒ¼ °eङŒ0=kì k­LQ`¬šàR ·yŠšËö¶r=llRE`%-V‰ G,òdOOÏõlíµ”2ÉËüT›|‹ºg]·˜Šf1A‰©Œe‡k[ìþcöýp=džw¤TiƒûâRJøß—DRpÁî‰Ô˜„ tpƒ-‰¤ VÚ w À 6<¼š*€ô2]'Ü—GaMûK•Cú|¿ù㬢Æ\N]ëÏ—*æJ °0†A–W7ªŽíÉ+d…²Ç¬ô±¿¸™úvD,ƒ”`Kƒ*V Ž-¡¯­¦8Kš{缟-—ûß^u˜q…ÍÜËÖ Ó‘wp¥‘]1‡+u‡”Ê!)Ì9°yx´¿,2掘 zšZ— x²‚b¬ÄÒ «šÉˆµGSÐbô9ã.cˆ£%‘´1 2\ïGÆ™rвD쪗AaHã\"9….“΄£eX5£˜¸_ Ã)þŸ-}üÜÜ«°qe‘yàê/Ü7Z¤|’²‚š&܆zÔp?ZÖús½kW•¶+7 e°@&Xê<_•Qêyf­Õ´ùk’ã¤Ô禕Nº¿ÃL*lÒ‰EëØœV(l¸qí[”g*]É[l‚›‡GûAÍ NÖ~/M‹‘å¾eÀ-v­Ò p©e‘)}n  8FârIÜ«FA—=b³®’SÓ(ÄО5Üß…•(ZŽˆË±Â†•4øþBy$.‰¤}et¸7^7\¶9?¿ Â*0MIÄô¡«†aUmM+ô£‘>4j,‚ Hr¡½n¹’GæòÚr6  õ¹qŠºŽª]œkÆyj„ûr U³ªc“ÖÝR‚C«Jçvþžs‰´ö°Åöé­(‰ä†g_cˆJ–DrÀ&YhbuÍÍãsÊ ­æVàÓ~œ-%)Ê[jéeYÃ+°¥ô¶ij›t=…7(—¤e+œí?N:hÛÛk}lÔ)’»@ @žÅ†ûÍfg繑±lp6ÚŽ;ÞEÁ zÛÀ%’€ÀóárHj:B·6¡JVê2ÉõÁi Û_†À rra¤@Æš’ìa JöÇÈ5XãGŽä!÷aÕ·œ2·¶|èUãoú¿,%Ö4ë\5A5cçÉ)®•ê 8½ͳ ÀÆõO§8DZ«tÊ›æ“A¯ÓF’ŸTØ0˜qJ››Žxx´Ô,VüHÅÊ$c?Ò1{‹pçÇ”Áàe”´2æ#!„Üuô²äIÕ6iÇIÂVß3Ðã”5ZfˆaŒ‚-Gäi)"\?:6ž•DîØ±ã]Ô! m×®]7ÞtÓM¿ôúŸ-, «i(%ÕPê½ÃËÄ÷wMê6‰·…d:"9EŠ¥‹{QoQÎr&$œ²FÝ"Ñí Ö]ƒ FP[AY[û»õ»áÇbðÂঠڮIŠšbr@˜‹V“\Õ«ºM×É–Z~éýkž+‰L)‹l&°¥Ì`£"Reç°iÀÆHª¾ìÀæáÑܲÇX9¡q)3ÚR{Þb°˜²^Ö^<ëö¨×tÄ:W-6d›+Ä$t&íiãzÛÒhÙäÊÊŠÉL„ম‰Ô6Ÿ3üÀ·ÍÏ/J"!7nÜønjBƒ³ÏŒeËÂ=lœÙ WÚ‰{ôÄ8s:ƒö®Q(emý÷òýk¹rH)¤¤J)´I¦$Œ²–WÒÈL7ª®!³¹ }ýÅ~¶5`£ªSnwF‹2ÆYüsÀw€+ÅŒÁ‡™ÔÂzÿšç:6‘öa’µ3€­··÷º2.‘R©d¨Z×¼'õ²i €l­QØRn‹©j1سÎQ³@Z Ê,êXl™´Y—/]´ô§i“ðqƒLq‰$uˆä€_æ@†S¤8‹|É*Ÿ*pØþCÝðÙѬ$LF $z×vìØñ.(•…B^¬J*‰pn™œ£$7à7¿s\4É|¤0;míÿÜ`ì õÛ×ÏÏ. Ñî/8Db0Ë—="ó¢º]Ó×_Î2Òs¦.‡Sï¤ÇKËÖtÇʵ>·Ø¬7ï_ó¬ ­¿¦®YŽ5¡°Iîô¤ÑRH|[e6m]læš—Dzx´Ú,ÊZL²¼ÖàÇ ‡)=lÖ†gké¤Ë8IJ¥Žô~ø98X£®Ȱê†Ë!¹ëñu’z3!‘ †§åååL•`£Ê\Þ±cÇ»  +l\Q’b†¡ Ï¥ƒûH–ÿÚL7°õ§ÐVœÉÖŸëOË‹p[ýÜm{å™l…×T]£3ÖDÓ‘#l߆I©·«07MëK³@fÙÏ=¯6[êI3˜”°%šÜ ºŠB[mì²CL›Ž¤ÀZ«lý{zz®)l\Y$®Ä<ª>8›3±ÌDp`óðhmidÌQ©ØðkëÀÌ”¹g–òM ¼ÅžK+‹¬Ç12Ö¯fQÚàqÜNŒH88à ÇÍiê6 nTuã Ž³ô{|i05†,¶ÛÞ÷¿¼qãÆwïØ±ã]7n|7ô­mÚ´évíÚu#6 *¹ë%žn\ŠûÖ¨Ñ gHB]"i¯kB¼¬HËJ)©áH, vý¤œ²Pöx„ŸË†î—•#®•AæúØ”>±Bé Ö#F ¬0ż$:ÀR©¸XV}À¿ ;°ù¶•d•­Y%‘gÞzÛêÉtÅ6Ne£é¸þ5º1Ø<lû‰²umß+9@£æ"¹Û( 1Ðvµ®?ßÛÖW,—,À[£°I@£™ƒH°ÃôÃÅÌIÄÙ)=eÌÜ8ÖÆŸëË‹™©TÞöüÔû׺µ‡Mê™¶(k­šÃ¦ DÃÄÊv\‘6ÞHRidooïul­/Œ©kPçb?Ð1«ÿ2j—T>™b‚RÞb0g1%‰ÐÇáRH‹;$…8ú?ØûÓ^.Ni¢ÐËp\ÌaHƒ„2È]»vÝÊÌa€P[úüÔlE*¤—q¿@!\æJ"Y<›BQÊr½nxxöÞ#²i‰d8‚Ë, ®ý¹̼âFzÚÖ  ÍÎÍèê•ÛŒ–úQ5‹@RM‚Cr}²[¥fÍoQýRfÅ9°y®s[K[³K"{zz®ïíí½Nc Î0¿TÊÖŸ+¤ÀFoç$JœíáÑ^HKQÙ$I)uH½¥ß,°R{ï4Ðúœ’-¿r±²Ié~ÜŽT7¬ª”á݆¡MR›,Ή\I"¾+l¸ H¨òöÆÉ!®‡3:Á—ékŠ#†7® +Žâ9l®èeÖ(„”Lâ~µ¼ ?QÆ ðÖŸw•d"3àÚs$¯ª­ýÝ€K%¥`ÓµîþÛ} î¸u‚ÒLSÆÊ«Å VÖy:Àt·éˆ6‹-¥]¢‘ [ÌÖßÒ·†ïªf:‚_ í]ãšüÜtÄãýå©?¦1ò=b±Ùh¦<Ùû•…Xúøe-ÖߦÍeãúÐ8kª¸áÇR(ãúº$ Ã÷çÌ?°ÒE•:\ =l`4²yóæÚÀ-róæÍ7JÀ& ȦëŒgÐáu§¥’’"(Á¡¦°I víc?TÔ5Æå‘›³¶G¢/“¤¥–lÿZ®w-_™7'9’sfÓ‘ œ@}cæ¨Õ¤žµ˜:&ÍeS@‰š›Ô„2Ç–·”1n8âÙ%¶þVkÿV”Dƪû¸Ùl•t‰ŒYûӚјS¤›‡GóÍf+^ ÜYûÞb d-¡LYïX©d%-¥wMSØ´òGiYÒ™N©§Sä°âÆ•bÀÑ”7NíÂùœé¶?=õ2@UÕ DúÙ ‡5ÉÑ’þ{û°S&~ÍTi“Æà×ÎÎÞCJ±‰ªœµÿžâõÅYmý °õæ´å{ÖòP––Í\%óóÛhß™4“Íd¯™v¶ù¬»cì™ÀŠë½3Ìp«šÒæÀÖÝÀ–jëŸRaÓH`ã8D”M¡­’%‘ÚäðÙ:°yx´®RS«,½dØ¥À–HõØõ§ ¹Žm—fXúkকCjЧ¶A?w+m¸ g2B"¹RJ¬FQwE 6ô:üèaÃ*ü¿mÛ¶›7oÞ|#†7ì)4<»žŸšªHëJDêD)µÝÏ©[ukд›|psÕ(Ôa»bÛÏÈ=fo~¾”Gn`#ó=nÅJÉ(„›Á&:E*C«kŒód-¦rI}gÜEÇ XÜ+د摞–6ºÏâŽ-Ze:"©m)Öþ¡ÊsØ,óØ(õBƒ ›‡Gk ­ P¥”4X\5E«Œ#¥P1ø“–!ýo…¶‡H‹Ú&)jÚe0‘v¬tVþË•Hr®‰ÔQ’ÀÁW °¬Áß]»vݸ{÷î6oÞ|#(n7n|76ÍýQºLî²¥ÜÏa[\\¼:8—CîUæ®í-ÎW+Ìnë{EÊ#÷²Ê=W²ááÜŒâ†ašŽÐaÕ`¥Xè×,J™6ç,q€u-6Л³òœ"k’rWˆ{üÔ;0në_z[³M%FK!» Ø$BÅ$›Áæ ›‡G{Ê!-ä-@e1kÙdJ™¢˜PÅÀ²êYÙùløù­†%ÀaIÚ·FkÃÿ° o¸T ¬ÊIe‚ÜõtùlP ¹qãÆw¤áµí“C###lï7gNê»Ãj#uÜúÓQð?œÍÎB£3Ô¨‚V0é/ö¹åÌ@úy(£êuwäÀŒSÖ°A íg[»/Wž(‘Ä@¦¦Øå³åŒD9«YG Äl÷%°&&èãwˆt`KuŠl%°Õc¶/[v€ñ’HÓ¾©€ÆÛ™·†Þ¶´auÂÆÙ_âòG‹µ?%^6ö—FJ€b…0íLšÅ±1UK)” M»NSY ©Ùøk}nZY$φU4NyãT%Nq£F¾4GF à”FÇÆÃ›§ÞzióæÍ7Ò[ÿ;v¼kË–-7P…öÚInܬ9¼ýèúÒ×-  ½llhÔ ’ºFfýiDa»ö±^UÖh©$ç ™SÕÔ€±íßË˜Ž Ç_Ã@ãµ}¯ðîR©¢ ¼I¦1ƒ‚§Ío“Ü5p”æÀIÏ¥ðlž]dë_öÄlY… Ïb“gKí\T• UœÃÆYerŽ,šÅ¿›‡Gka­LY£öø«üÔÖ±å[ÖÅRòYOieY%Mƒ:MQ‹õÂq0‡A‹*c´Tƒ †*¼ ZŠ©¹JrŠ .{¤ýl»víºJ$¹’Hj„" Éæ V¤™uxpöÊÊŠ8žÀ¦#œÙH®+o{¨}hykÿ~Ã<¶"´Ñ¡×ù~µb?[AC—!%`«®òóÎbŠ›fBJ#k§ÈZ"F{èʪqÈFØ\a[6 ÎŽ¹37Ca“Ú¯¸–-ÍÚ¿Ò.‘Ü :‹Ù±›‡Gó¡-E=ÒàÍ *õ€Ÿu”€E=ÓMËãëUÜb †w†!ÑÒR*ɹ@R#h¨õ?VÚ0tI*V¼8GÉ•••páâdf:ÊÚîÝ»o—HÜÃ.‘.N>IeÊ-…¤åžt\9(gJ—3Ó‘¾~¦ç¬?g$‚ E¨‚e’üÐí~Ù%’–Iî%ª bG påúð‘!ÚµÑÕ Î’‡X %Š5Á죦Ü'fµ¯ö¡Y–›åæC³=»t[¬4²•%‘\ßUÙb%’¡Ê¶þ܆Ø9°yx´_aÓ@J(Ëpì‡Úòc^¯á‰µ4#ÅÀ¤QjšuyšmjO†/NQ£óÉ®bÿ\_… x¨ó䨸…LaƒHƒÄŠ›dfB•AZÊ)l´tS2IÁ&#Tm`{~q–½±ü‡û\ÿu:;­ŸÜ—q–dÿæg¨ÜY5®¿hýOÊ%¹òB D™¹G¬$R»OÊü³[ÿèò¤åKN”œc¥›g ζ+4Ø´´XúW¦$’{±œÔHg²q%‘𿛇Gë`Í¢(•-«´:M¦”XZ”@ëíX™d ¾b #«eʹÒF¸˜ý¿dXÂõ­QˆÓúÞp$µXy¥t.¹¿NüôÔËPú¸qãÆwoÙ²åPÙ œ#Át¯§˜Ië‡×MêË“ÆpsårÀöÌL‰bÁh„‘`µkd]p€<¢Çf•µ¾þ‚¹.ÏÜ@dçFì¡€—/‹Ì€9EæàJ#­ƒ¦+}†¸ž¹Ôyl5 c}i]¤²ùÐl¶2%‘­êa“\"%§Héo%6êI{×´¾5ïaóðh-´•éòHõ-åì[J¹¥Uý*[+›”–™ÒŸ¦ÍaãÊ c£èe¼³¥J—4«ƒn~5/ásÓòK¸m|üb®$Ô5<4—EB]wlϯ§ Æ|p¯ƒ+±¤ÀGU¶ß|æÌù1g*B¬ýsf$Xý’m/…·¢+$7;g‚K 3ÝŽf¼mèã•· è~Ìb‘©ªk Õ”AݪƒdÌ’¹.Ö›WúñØ<» ØbU<Í6­<2V!Xy`£|– çÀæáÑ`³yX~Xc*™µáX kɤu,ë˜RòS­£,ë£õ³Åìÿµ>Éå Vž8 ÷µ­®®²FÔ¨DƒC¬°á>6PÖvíÚ•+‘|ãäÀÐøøÅÂ2©™ˆd¦"™£àõçzÖ¨[df:ÂÀÅ=jî óÕöeŽbÿÚ¾¬±±õïË›ä”5ªÊõѸ+@Ga­ª½.2øZ/‹:V‹ ¶®)½q¢º¦9F2˜µ ›|ë”[ú{IäRRÿZ¬ £UÀÆõ±Iô+[)Ñ*7w+‡ìéé¹ÞÍãµJ[Ùþ2ëp=¶ýÕ.u„@°²^вg)‰´ÎX³Ìm³–ERØ`ƒerJuyäFPu ÀŽ099NüôÔË»víº¬ûi 6<‡*^’È«p@G”™pF#´l²àÉô›åŒF $qQÛö Krþ{k¤ªe¶·h÷á —Ibµ­°Ž}Åeà…›¤xÕ4eJ›g†îsð<3ÿ,–j–>5aH7«¸qã*ollšÂVÖ„¬YÀ¦YûÇ"TÑtW©)n°AØ<<šj1h‹YðZzÖÊ Ì¶¸QÆÔ­T·Ç”2вå¢õ*z\?›V‚b>ÚCFaEš½F4nÞ…7\f¸²²’)l¸ôqóæÍ7â>6¸ %‘ããEZ¾)&íÍàFa> k —ÂòòòÚ¶þ\¿ņûÕ óÚpOÙêäXœÇ–‡-b*ÂXôS•¬`&²çÓóv„ô°]½­†úÔ0Ì<X` 9˜>4¨87JæØ~3®÷MQþ4ÅÎì*YÅíñSï8¼8°%Ïak°i†‡8¹Ñd•6Ía…n+ñ:°yx4·Ò `šÂ–2O%UÍÓÖ9v_ @Öc4R¦§¯Q³ØÊ×¶BŸTIçípêUŸ83ÎØ„3,Y^^ããsƒ³·lÙrÖ-[n€aÙ»wï¾÷³°i ·’…?Uá(¸R äÊ%ñàl°Ãƒ’G:—^—3a¬úó%“tPv?»#²µ?£²q·J+i\_¡$1×ËSÉ´²ÅˆÚU‹˜•¨.ŠCd-f2"õȇ¸:èÀæÙÅ [3J"%—Hi¼˜Æ0p{¥€M7NYÓŒGØ<<š_ƒœØßÔ’Ç2Š™ÜÊ(gDZUÅ”AÙÒý˨nZ dê¼7º³å†DS˜ãÌBð,3jÿOç¯Iê\ë†6ÚÇFûÙ ‡ æ°q'Òk£†$Àb£ÉÍ”+¸D¶B[¿’2·-ef›Õ‘Qƒ%+äYœ!¥uK.mýRÊSÌGbƒ¸S H¤Ùmœò†­ý©Q‡æÉv‰Ä ÛîÝ»oظqã»AY«(—`“Ô@Ü3Ç©b1s<Ê€ëeÃËŰ%‘™3$3Î)’öºå‹`—°Ýµ|)al)$q„,[_nùy‡IÒG–Ï*KŠ¡GëóŠÍTcÌKLf¥LSéjšb'˜¥T­ ÒÍ“[Ó‘f*l1`£ÌA«¹JÁÊ(l’Ê&9°hÑg{x´Ô´’ÁX)¥µd2Vrبuª·œ±žl–e4c¶Å)R3(‰ýÏ=†:‚qÆ"´Ž+!¤†&œºG6NeÛ±cÇ»@eÃÀFûó¤uàÖ™ƒG¼]¨&†8ø‹ig%‘ÖöË 7ô1nŽÌ ì¬rOQ¡Ë3|)ãÁxäHÑE—q®=f7’p&#¸¯í€¦>iýmŠú%ÁëH)˜ƒD=F”ÖÏÜËæÀæÙ%=l­€6¶ÞÞÞë,e‘X8Òª+¥°iÐÆ•?Jµ¤lí6 †Ê*h#‘Ô™n)ýre I*©´”r¶Ü$ã­ÏÍ’ô1\½ž+³”†rs…K /\œ ožzë¥;v¼ zÕ°ážÏ†]")\b0ä^½·îtÒž7\:™›Ãöãy%ë+#½i|ßYqÎZaèuAùÂ`Uì=c]#©Ò†U4f’ÛdÎù ÉÎ ŽƒÆYR4ÑÀ‡1‰ Á®ÅLF4ÅÍÒ,86Ïõ l\oJ[3à €­§§çúT•«¬°iÖþ±H7ñðh_dŠó¢ڬ꛵\2š¬j]3 Êú|ÍRÚb%’e¬ýcf$\‰dì¾Îðãp åòòrlRÿ¶úß½{÷ –9lÜújŠœuTaêýŸºD¬ý©E?SIíüñß\Ù$, ¼õõeú؈š¦A¢`à™ƒ6É DP»4cʬ¶XybMY>-Û4Íj‹Íps`ó\çÀ&ý®j½Õ–ã†zšŽH¢78»ÒsØ$GH¬®a5MRÖ@]s`óðhºfµÌ©Ïa]FJyc®ŒZ–ú<ø~–¾´Ø 6k)¥¶³• ‹Î)Ã×­®®Š³Ý¸³²Ü²ØvïÞ}À8E‚âýlà96~Áì€É­‹¤Ò^;n-¯ÄÆ$¿ùÌy… ÒFAÛ#\O!ß§QÕ8—HnXö^ÄúGHbí_€CÔÊZ®Ò`*"ÝÆ ºfK" 0&9AÖ,êRž©ªslž¶Ø>$vr³ ›µº÷¯aWÈJ[ÌÚ?æ 郳=<Ú£¶Y”,îþZ`,EùÓJ),0š uÚv*a©³ä¬æ$ô´²©—MSÒ´Ùl´I÷ÕœiÏØ…‹“áÄOO½,)k½½½×áë1°ÅÔ5®ëÇàÊ*9@£ !Ç–ëa£sÖ( åzÓ¨¢v¤ÐoVì[;"ô–1ó×e5 aûàH©%º?k‰±ôçÊ$kZY¢Q…“ÌBÔÜRÙ£æô¨8SÖÊŒp`ót[ÿº6 sp~\‹We€“9÷Hw‰ôðè<¥Í¢tYïSÖ $|©%›)¯Ë ¿Ö–rŸF•KZÕ¸‚ØëÆõhYœ%¹áÓš up”–‹m×®]7be­§§çúžžžë·lÙr5‰§tœª†ÕBÉ0…sÇ\^^.Øú_uoäÍD ªÙ¢‚ía9 wÄù‘¼ Ü 5¤šÑ¡Ø eý¼J‡ž·0°Z<} qðtMZ†P~XÓcK°-phQÙ,¥žë<¿ujÙá¥Ë6é7<¥r¥Y ›Tɱ‡&8UFaã@ ¿H s1Ps`óðh­²&AU bj•¤‚¥¬—¥W.EUKy%/¥$2ÜR,ý­±¸DÒrFؤrF~8˜ÓzÃpŽ_,(lxX6”JbÓ6ÉÍ’{n$%u‘n›ÅÅÅB/.¡Ì€m­$’ë[+(h{¸¹kÂeÔ7ÆÍCÃê»V€0Åò¿ Æ1å•x™4³ x$;~A™ª)³Üj\¥Ô§– €I½n¢ŠVØ<׃Â&•EJàÖì°ØúSÌ(]i:B!Íbëï%‘íSÚ¬ÀU¦‡¬l‰¥¬bÐV¯kd=æ#©ë™gõö§Y{×èuÔpÊU¯¸aÜ\ïô°”a“.©Â5®Mº [ûÃëÄ ¶ººšÀí °e.‘RÉ#gF²—ƒ92ƒ ÏfÛ{u€u±ü‘™çÖ×ϨjW¡‘[F¡×­O»½Gò³×ÀÚ_€˜hÏ«šP6³ú¯E†ZGA‘›'ÇÜUÝ*¤²í{ÕáÅK"M%‘ZEL«MRÜ´áÙ¡j¦#ZY¤6ÁK"=<:Cq«×.ßú|GÈ”±Q©å’Úë-SΘ¢¬5BQK —XÝ$¹rHÉ:_*ä–sáâd8}fð X÷C)$îeÃ0.‘Üm§.Òu‘ +kxˆ6üŶþPÖ˜ë[+Øì÷kÿâÀì¬<²/lµ¯‚`SÉ–C\Ôs’k˜’Éšb ³åçŒCj‘ž³´±`ft K4…ûIÆ()j£›çzv‰ŒÍ_kŶ˜=5 ‘œî+ lœ?5Éæß]"=<Új)óÅbe‹1¨‹•eZ{Ú¬©e¡ÍvŠ´Ìœ³®Ö³&õ°ÅŒK$8£Ž–ñøIC³¹^7œ ýkœª¶qãÆwC‰$˜ŽXU4 ”ÒAg¸ÂÍ_£³ä ƒ³ޏÒǽGø!Ö{¤!×WU¯ }Œ{#3Gí®w˜’l`,ÿ7àåîá—™ïaë/ Ì{Õ´Þ3šjÚì´˜‚eµö—úà¤u#ëS3Ìp[ïyð¼›+lË¥{Øšn…Mê]ÓúÙB•]"Ë–D:°yx´FM‹©N–òI ü,@f»f)/´”e–qq´”e–Qì,ë¡Y÷sÀUFãÊ$Ë Ù–8®‡Í2à J"OüôÔË ¤¤õöö^‡"wíÚucooïuxVË80ã6NíÃåšS$@wÝU[ÿ~f06™·¶G¹.7síˆ<787nèãB¸^8:.gT¥#pˆ—q@ê3pˆ}eJƒ·9·Jah·¦ÌEgÄ)Δµ Ïcû—áË/^Yª‡­¶þ°qet<® UœÃÆI‹’¢æ¦#n©¥WÇ ³¨vVˆ´®Wª£dJ‰hL5¬§\2µ/W+¤Î‘VÇHÎe’ÞΕÐH=mxp68ABI$VÝ`¨6(lØèóqP†á.ö%PãJ. ¦#{ÛS,Gd H„¾5VébzÐh™dqÛvöZèáåmÈÁ[¿ F8)ê–V¢X“f¦)³Ô(̱§=.¢ÖÅ °j*Û #ÁáÅK"EPkGi¤µ‡-fíßU }ñ’?çéÀæáÑüRHkyc#K­ýk)Š[ª}pÐ*Û³–òø2¯©^¨“ÀMRߤ~7Üë%Wb)Áv‰gHPÚ@]ƒë±­ÿøøEuÖ[ªB¨/ ÄvþT}Ã=l9s=œ=ÿÕÞ?gÂYù÷Ñûa‡\æ±q3Û˜RG¾§í ¢šÆ ¿6BçYPò8cÒ"=s"€¦ªo .—ë=kc®°¹­ÿ’Y]k…[¤lT@ÒJ#+ løÅKÖþ)e‘lí/‘´|ÄT3­ÒÚÛ:«J—j"b™ËVÆl$jõ@©ÕÚ?öxxn©NÛ9Ç”*mX78jë`Æ%˜ŽP—È ³”J¯‡+½Äó¯bG ¦"¬ #f 5UÆ Ã­÷§Ç‚{$Sª¹·8Œ›*xtþü/ ¦ý]¢ˆ6-ÒwVJkB‰e¡$26à›»tÙòšÖy~ù˜[û{Iär°YNÞ6[a£%‘tX6uŠ U™ÃÆ­µÔ’:°yx´ܬe VÕʺÌWÈ”>6+Œ¦šÔ£ºY.—5Éx¤¬“dlT€eÜ4ØÁê-§\^^ãã³’H(…ìíí½÷´á¶õõàie‘Ò,:ké(ÁV°õ§³Ø¸^2Z*I]#ûxÇF¬|QEío#V,›äŒLò½nPÜ‹J"SF+ŠœTrX³@•‰œ*ÆõÛY L¬0VAh{ôøŠŒ[2°5[aC5°¨tM$B]"¥2H q±>66Ö—HZª²êZLaŠ•j`Y¦¿.U-K…¼”ÁÜ©&'õô²Å@NšÉ–ò|’™‰ÖF{Ý ‡m÷îÝ7P;ÿ;v¼ ¬þ{{{¯£ƒ³-Sµûr3éÀt„:Df¦#{Ž0ÐÖ/”G2àF%­P¹·Ÿï]“æ¨õ1%“{ù’ÉBi$ZÎü£&©YRY!MZY¢fp" ¾Nu•”úÞ*ªžYrÏOØ|pör©²ÈV+loHãÈ(Ï„*÷°IÖþ>8ÛÃcýªmÖ¡Ø1Õ(ey)€(A˜µ|2ÅÝÑZÊXV9+[Y”ùo±ž·Ø o­\¶žžžë¡_ Ï_ƒ„Ûñ6i%E-¦Pj&)œË%%‘kÎ-r3L{QÀ8ÇGÎÞ/UÔˆ2·çHQaëcÊ(‰ŠÆ«yW׫f)ƒä†Xdžh3úâí‘AÖb†%Z[ÍÇO½ããsØJ•DZ+zÊUÙbN‘ÔS£r W© ͦ²¤+l j–Þ0 Y–+{LUþRÔ5©”³ìœµ””µô³õëºM_S̨ÄÚ‡ÿ… —AJ°¶{÷n¶‡Í2$ܪÒeQë:8›íac{Õ⮑\ï˜8 ›š‰LIŽÈï™ÿsËÝ“/—äzÙ®í{ES¥¸>3m.›e¶¤®1£jEÏ âuSú,6WØÊþÆ6³$ÒâHO«9Ž©¤­¿Ö·ÆÕŽJ®-lqÇÇ”²Æ2³cÀcUòÊ8@Zîg]Ëî2e‘„¥ ½hŒÍŽ‹™’``ã zØz{{¯\"cëaØX™$uÁä6pŠÌõ°Qmd(Û"»8ÿⵟg±é7Ÿ2Å¡·‘û6pÖÚ¯8ãî+‰Lu…¤çÀæáÑYðfQåRjÔ-gr­)j©ÖÿVÕ-UåJ)…,ó¼ÖmQo¹d½Ë±ô°Ñ9l'~zêeN]ÃåÐ߆gk ™2æ@:èÀÀ×a• ð%‘E‘âPì#U«`ÒG樱&%G˜^µþby¤hLÒÏþŸë#ëÊõ›‰ X¤Ç,æ©Yû³ƒ°•ÁØHŠsÞÚ²|a$8Ðt±ÂFÝ"-ã]¬cx,'Sqâ’H¬°au–Er¬Ré’HÎÒRé%‘ hÖÔR±Ê”IZË;SUÄ2à’W)&*© [+{Úê…7Ív¶]»v݈{հ†]#©ÂfgUcÆ%´ñÑþÍgÞ@ýj¼M~‚úú &"9¸ë£Ês…ymÅÇÐRK¶·mo7ô1ƒ³¡Ïm ØD†gטrI” KÔ’GËü6ÉÑÒÓGºPQ“€mee¥P‰•¶”ßÜ”êív¬°ÅZ±b3¢µž¶VDh¦­?ׯ_xLšt—HζÔYg–5«Ó¤rRJ'R”8î1V•,嬠µü4u{Xà.uY#ÁP+Yă³9³°ùÇÀf¯˜µ ÐÁe<ƒ3É€hOQÑÊÙð÷I}n–×GÉÍ‘–/æ€1 áÊ&󪚀ØçņREMY3•02À…ys`V³8E:À¹ñHÅóËÇ–EXƒëi›V™:ë2ö[«ísgçæ3…M*‹ä8'Uá*l´1÷«ivþn:âáÑ™À¦ µ´­ŽA’C±çI)´¨l©Ë±¾Æ²e“eA¬žu°(PeÍJ,#$ã(‰ ƒÒGP×h_Û™·†ÞžœœŠº>¦ªn±qp‚ÍF [f:r¤0gmUÑà2ç(¹Jú”ž·ˆaK0 åŽÌ̵köp†%ù9 kÙàlZÞÈ€•X6)™4ÇM(ƒ4©l f#nñï}lUWÔpŸmØh)8§²Å®Ñ' ggçr=l½½½×qÎ’hÄ]n´…fõ°QeÍ2{ÍÍÃc}”D¦•ռêÂYT;éñV¸´Øó× Q–mRf\@=.“œÉVæLª¶#§ƒ³qÒòÈÝ»w«¦#eRZOî „žaÆýWJ"™!Õ{Žä.s&!¹ØXQ+ô®aŸƒ+©äo”8lfR}¤ Àåg“>µÓO-oT Ëä4©•5 °¦9\:¸ò_†}€vÌD,¥‘Øt„p¿‹øv«ƒpÙñ233³—Hê )UúáŠAÎg£ÕàÖ´’HnöZ Þ$•ÍÍãý*[L…J)AŒ•J@e`Oë}-=j10mä@ìØò%¸mUIc=÷ ߯ƒ³±…?VÙ°!‰Åt¤ ÈÅæÈqÖþ¸òjÛ¶äQêË—&æÁŽ–/²¥Š}ù^¸¢! U÷ð£¹a9{˜¹pÄtD5 a ˆ2Å@Ä4SÍVêíØü8Ï,¿|Ìíý«mÐ$• Ïa£cM,ôµ^cëh–°9@78[SÜbF$ëVa“€ÍZ‰os`óðè •M¨˜ú£D àRáÐêRií}³ªj)=wšÒh)½L5H‰½¦X‰¤e €Em³ÌAã¬ÉÉ©lp6UÔvíÚu#ü?008%‘)¥6ëinþ=¡sØ Wr¸·Ÿ-S,$çæ¸—/cÌ»M2óÕöö —ó°—wŠ8Ûã³ ­Lùd™þ4 ÖS:SSÊSÈf¥U5k6˜Y)ë}èàì7O½õÞñ°Õ?VÜ4…-u`vŠK&UÞðë€ò \I$)]ÜÀ(eÜàj¾ï¬8 MSÁò=sGXˆK%ûdE®# 9šµ¿Å­‘*^\y¥¦¶Ie—ÅOê³óô>¶*¸AÆœ"¥ë;±.åÊ Am£f$†4íxdvv.6\™ zÚð`í˜k¤$@­[…®|lX¶›Žxxtf¤µçL+£Œ•&ZJcð'=¯8­¥)vü)Û2¥D4u=¬ÐYO eYuÍÒ„Ž­··÷:0É%²ÞõÔÜ+¥fyÜ0p†9o:Ò_ìWf¨]çfÌ>¨“#éu“ç²ÉÏ…c†yo(”H"`.78[(]+Á½±6v9<Ôž3Vy³‚†Å…ÒU6S>~ꇢub*Âý» Ûúcc%ÚËÖJP£qùò噉‰‰àd—Øb†$Ú€mnØvÇ78;lÞÃæá±¾Ê"SËS”4ëue{ÙRË3-ë`Q¬b šRæØ-e{I}eÔ:Í „ƒ" lTM×áìé'†´9lõ–kj³Ý8|Æù7Ÿy£8»¬/A ²È,4ÎÈ$w}_?ß÷Vè£ëgŸ‹*hEÅ.¯æI U¾ÌöüLi ›Ç–[O/‹\Àf¿&埽”ëa[\\ —r¥‘í5f¿=túô[ij<Ò8ÕmëÖ­à/lÔt„ °.LGbdI_˜+l k)ðS¦tÒZÚ˜ wõÍ¢„iëVö¾±²Î2î–e\8­óóš±aª““S¹’H0ÁF#===×oÞ¼ùÆ]»vÝH6ºlüÚêÖªÍfPÃåAYI$u{d\#YgF¤¨£cQ©c Ž>¶P>)ôÖõñ¥•´Ò ]‚‰Å•Ѭ ŒF0ýkš}¿;Eª#¼,r}”Br¥‘_>¶Ì€ÚŸ½þü襬‡ ` ÌD:1.=90ðö-Xa8Ãà³ú—<9(Ð5 ÞB3ç°Qhã6‹´èÀæáѹ +˜Xà,æ +ÝK ^SG ”U¸Êް”Oƶ‡Ú¬àšÒóÆý… «itˆ6îS8óÖÐÛ““S¦a¬.é”J$sÀÆXøÓjœbFFrÖ'€_aæÚ‘bßš¤Úõé½tRßZnÓ7V-ÎfÛ}nX¶¤¶ÅìýcëáÀæe‘ë¼o+uŒ6X[YYYÇ0CP&Iç³a«ø_Ç MÈ5ª42´bp6íiã^Œ¤°õôô\ïÀæáÑYJ[ ²,¥•V@±ÀˆR’Š—² +H¦º1¦@]*Œ6c`wŠ'mØ™§–¬®®æ68 gG±ÉæÍ›oìéé¹»D6j;ÄzפÞ78ˆÉÙúãRDƺÃVAåâJÀÊA]¡ ’ÌZÛs¤‹×ôõ“¾µ¼"È•?rJ›ØSžÍÎeSÀ¨pmQäþ4ëÌ6O·÷_eš¤V н %‘ªªI199õeºÁà‚K#)ˆi~TÙB³]"%x³”BºÂæáÑù¥‘@K)W´ªu–~³%Ð X±×Vf–Z£A¯ÑËnÆ(«ê÷`WHËZðw``ppjjºaÊZ“¸Ì›Žm)Ì)_ùÙjyPʃV¡WŽ f$‘Çzí˜AÞ´’*oÊUûi(6l‚êÅݧ0—+‹,ž^¹Î,û9µíÏ^Ê®§¥ûß^]w°ñÎ;ïƒIjû*vL™#ÝÈáÚ¡=lt›ÏaóðX_ f-ŒA“Õ¸ÄnVpJ°TÀŒAaêÀíÔ2ÉF¨iRäš=&€ ïTi£8vŠœœœªkècc†$Ô°[$ü-¸Dö1½c}ýÅ™hà„ûs%‹9à#êoV" äVFpÊZÎ%’–+jå„ÚL4ƒ=¿æ0y a6›§—Ev£c¤¤ªI°ö/׫p¸380ðö-ØC-¤*šudYG5¡×¥ª›‡Gû-Vvh œÄÊSÔ3‹Z[O c@+ÿ, %,UK)õLIШ£¦#¸lÀ Ê$ÁÖzØš–\)$vˆ¤°*[ap65 ÙÃÙüç{Ë6ôõ³e”úú¥L pÀ6¹pœ;e¡s¯^ÉšŽ0­kÒ,6eF[Íb“­óû×b®g`áOóG£?oñAÈJ¸·õ*°½ñ?B8ñßÂåþ]QÚZ—/_žá¬þ± ‰TÉ•Ab…-Å|¤©À&Ñ£TÇ)Ѩ›‡G{Õ5é ÖZ—jZaQ»ÊŒHUᬃ·-&)eÔ¶zT!k bêú§*cõ¾mp6¸xÑáÙ[¶l¹zØ,Ðeù;¿fŽ-9=2 Vãæ»)N”5é¹4e»¯ƒXR>~ꇬ&›fÙ/kms…üÙËW€íØï^¶5•írÿ‡®ô´µ(.=‰Ob¥MšÍÆ×f…¶Ð¬’HJ—´IµŸ®°yxt.¸iêN…« ZúѬF$©ëjQ­ŠTYËj Ò £+[aȺmØÈ0 ÁN»D‚Âf9ñ`™Q×s ¦õ¸Ñ9l«««á¼~ó™7Šùãùäî÷K½»^[w?Ëý™û¼rq•Í£—M×i§÷·<>õ9ʬ~,¾þ­çº”×ayÚ¶ä^Kì=Ô^ÃÆß ß:µì¹²åF# l­\ û7‡ðúWíÿÂëw„ÕÃÛÃêÈ“-]Ÿ·o¡$\?lšSÝv—Hn¥¤¦=w‰ôðè,X³šo4¢',µ¤P›7{ e{Á,ÛȲ­,%„©à•², NR³ì:X8˜Ã†Ë qi$À€›ÔÃfÙæõ¤¦°akèo[^^‹‹‹ÙßÅÅÅì~ø2ü¹°p©p½_Ö#-W{¬[ê²-÷Ç÷ã¶Alñcèr¸íA·WêºzzvJJß-ççÂüüBîÿ¹¹¹R†]й—î —û?T¶å—Þ¥—­…1;;û l’k¤fí[Ãè}ÛâkªKqŠt`óðè eÍ2°9e¹Vã|YI‚ʲˊ=¾ìƒTÛù\Õ£ò5B•+£8r÷½pq2œ>3x—A´á9بKdÙ×HÇpjš¤²á\\\Ìõ¹QZ^^.ÃÒÒ $Üýà¯<I b¸d¥t¦B&}^º­Ö[Òu/ûZ´Ç­çíc}íUÚ÷?v maáR˜›› sssaff&,¶ùØ{ùøç ŒGÚl—/_žÁŽ‘Øà¯ÔÚ%ÍŸæÆœµ ب†o·:E:°yx´ØR-êS ÆbbÒs‹Ê¥­ŸVVg5D±Bp½ŠZ ~ë™åÛ.1¸,;ï € Îp‚šû\¢Â¹DZ>sõ(œ\)¤rXeõªnô@“xáûÁõô±ðÀsYàŠÞÇzÐ ÷¥Ð{¼™Úrðuðú¹×È%݆ÚzâåKëŸ/¯ ½/wp—#-›>ŽªµÒö×Þ›Ø{fY&wºŽÚý-'è{Î-{.îñÚzH'Q¤Ï¸ôYµnm{p¯‰û·5L¿ö×-_¦ І{ªé@m®bÐR&Ùv[©oÍ2%ÜÍã3à­Ìðié@Y;ÈOéÑJ]¾e]cà—©ƒÆëíiK™ogµä·€N#hKÀöæ©·^êíí½n×®]7rf#¸ü“Ctpv#”Gí¾šå¿4Ÿ pÒë5 &ñ^¾Ü²²ðuÜ:j·Kp¥½öØkŒ=l/ $`ãÖÍ:XL9¨·ÂP*˜á×hI+$J°*½¿ÜÉŒ˜’¬½Véä…´Îà´¾V ð´Ï²ö\ÒûSÒiÎÍ͵]]…-g:râ¿…ÕÃÛÃÄþÍáÒ›[++ß`ã†iã¾¶¼I—Û28[*‹´4á9°yxt–Ê–ªY@'¥DÐú¿Ue²IªªfU&­ê¥Uý‘T½FÌq³ÂŒ6-Ï/]OMGàŒ&>Ó‰K"ϼ5ô6›åÄ@#á’–DJ³Ú$ÕDRˆØiàX…Ñí–;ÐåÀ†àR8Ò ¼\ÚëG_§bÑí;h× @zø5ÐçÂÏOSº Ñ×MŸOS ,뽆Øój˲üo]wIU‹-Sz~ë6®÷~t»KŸ‹”´~ÿ¹ûI=nPÙn`»¼r)?‡m Ø–_zùöÖpyåR[Ö —ERhÃóA9qŠc ¶¹Db8£eœùˆ…@Ø<<:G]‹•¦ö„¥Âa R€ÐZJh³”þ¹˜ú¥]g(˶H‡Ðˆž·j ÀFA 6œØ%2U9+ñ)j…5<Ÿ ÷µi°œº£üá9|¬äÁrð}cÆ’úŸ‡Qé ¯¯ôœ¼JäRi¢qx{ÆÌñãð댽FÔ4x£ËÄÊ©¸õ¢ª®8ÚºHðf”L•}]Z—¥A®õµÆÖÏn±ËÚóÐϳ¦ìÑ^QPØVVVÚxбV¾z¥í§ÿ½ °Íýàãm[5Z‰6\ëg“ª [^É™Ð!q’¿+l«²YûìʔE©«Sm—Ï¥)\1-EilµaH àZ·]Ù^1<‡ ï,1¼õ÷÷_ À†MG,Šc=J§¤­•Ïdá¶ååeuf\áÿq¥E±àδÆ`µƒò˜êÿ·®+:«j¹nRUOƒ¬ÚI½AÜc¨ê¦˜FXp—-4¸•DÑ|h“ÖURÄ,à(gl¤Â”´Ýèmô;›ŸÚ ‹Zk)–Jƒçææ2€k«º6w2¬ÞžW×:Ø.=É•ER«kIdÇô°I‘)Æ#lnÖr ÊbPc-Œa UØÀÞ÷¯õ÷÷_‹gS—È2eŸe!Or’” Jè9W.‰Õ'|N¥£Ë”ŒNb–´\“së.Ý.„r÷Õ Yèeº8؉ÝF~¹íSÓ$'Púú9ãé®d6¶µÇqë!­£å½ÑÖ—Û†±m =VÛ¦Ömly­–õ­‹5¥õÖYÚ~Ü÷/‡+æÜ`i[;amî/Úù¯Ûåþµ|pvný._žÙ¼yóP‰Á `ióÙb†l)Öþlm17HËܵÅ%¦NÅþOí1³*ˆ–í’»e”ÂØÓ «Þǧ¼–TpÂÀ†‡ec‡.Øqööö^'•D¦Âª¦þ–qŽ´ìÅ@€ … ËmìU;Ô„µu×ÔMUˆ­'(’ôÿØóƶ…å~žž­NëÉz%Öã°¶´´ÔžŒå©°|ü¯¨k¸’Øú¯Þ.÷(¬ |5¬ÌO´|5aˆvŠº&õ³IsÛÚl´· «llÕ¸ØÁ}+x+¥¨Y–aØš fQçÊŽ)°ôPY_›±×ií³‹—¶M¬jÖÔÔt6‡6lFÒÓÓsý™·†ÞÆ%‘õ8@Z€3±¨o´ž¯ÌÙ{MEá€Qr®,“’8š›mÛ.)ÏŸòØœ7*›¹üf¯»góÞ®\R*§Æj=g:Ò–þµå©0÷Ò]|)$¶5•mñßÞfŸÛÿí½!¼ñ?®ÀÉÕ‘'›¢Ä Ÿ½«k°ï¶}“Æ8R¥aË6é ñíqr/ÎÍÃc}[#*+„¥Zþ[Ô.m]¬ªK Ði jÝ>ÖõŽ©`ìKyœÞ°K$-…„ë`ǹk×®±­L)³B}=}œs$8NmâàÊ@) œv÷ú¤^½zËÊbå}äIê[ÌÉÓº]Z ·5¬Þž)l™*GÕµÿ-„×ïÈ–§öz.=I6ÜÃÿƒÊfqˆÄœÅS€>±›ŽxxtG)dL•²–#¦(UelûË<ŸUuK1IU+ëqË´ö–­2®’VõÛé3ƒA]Ã*6"kp‰LUÿ£ÜAZ#J*5±”]Z˺\‹RS,%”©P[gíuÔƱƒÿsËA{ Hhj­RbïyêëLY×ÔžQí³ Ö±÷ÝòýOYŸ”פ}Æ9•ŽüÀ3ÚpidÃFž¼ U”)°^¿#Ì>·5Œ<ñ‹añßÞ›åòKï/€àåþe¥“#Oüâ…­±´´ô-‡¤n°Q•-rMœSØ,†#lëØÊ>>`,*YjŸœ?e Ì¢ˆ¥¨“Ö¿¬Zç’Õ 1¨MM lØd'.“¤ÀV­Æ,P S•«‘I#Ö!NñZ­Ï£=–¾ZßF/«Õ٨ﶿþö§vC\jB‚ç²5Ea[ž +_-j¨rõðö0±s8ú'ï'¾tSyâÃÈ¿&öo³ÏmÍåÄþÍá­ÇnGÿäÝáÍÇ?Úpã‘•••ïs=llk’ñˆTÉ]ß`ã 3q`óð¨¸YÚcð10±‚bJY¢†)êœU+3ó-Eu³”iZ¶±Åð%¥ï­Ìl9ì ;D0Áƒ³±µ?v‰ÔÞ»fk ö,kU¬°—õ<¦ÞñÖ²Íz{ë]V#àµÛª¡¬ÙïI³NêH×KCº%§ÈFÆå¹“åa õ¡-¿ôþ0±s8ñ¥›Â Ÿü…pâK7…·»9¼õØÍ¼Áe¸mäÛ[¯ÀbË!1°qe‘»wï¾S×4 Ëí¦›æ)É€îéá±þ@-eÚÁiÊýS¡#êb¯!Å Eƒ›Ômi1±*zVØL™C4Ë6Nq‰ «ip§°•9ˆÒÞgKï[³J";áà³ìúPPJY¿T#—f©U¬v¾ŽF?w+_K'¿ÿ1WX:“Î`k¸Âö³—Ë—B®©kl³Ïm o=vs˜Ø¿9+‡\~éýWMLh®)ss?øxCMG8`£%‘x€vl6[lÌYÓ]"¹òÈØ09WØ<<ªpø°ôWÅT&«kd l¬jžU‘* NÖõ¶—¤®U ¬gÆ\ (I¦#hÔ‘ zÙØÊšŸhðƒõØÁœrU˜:©}Me•+¸}íà'i–]3 ,µç©¬ê×€—rbÆË £öj F#9—ÈŽ¶µÞ50¡=l°½~GÔ±ßÍ;ûÜÖ†–E.--=')l8¥>6iþZ[€ÎÐìþ½$ÒÃcýƒZ#®·<®L¿[ê j ¨•U˘¨XzóÊB˜µ+e;Äà2öš¥ÁÙl´ vŽp}ÿµØ40OéUŒ)´efúuciœl×+œX{&µe®+sŸ²ŸÍØoH³T攞ÙÔš©eÓÖ“=e~s­ÆKó9·ÈFÛêÈ“WSÕ5l‹ÿöÞðÖc7çúÕÀæÜ&!ÁöñßÞ&öon(°K$§²qn‘1ÎÑ*[¢°Ñ&ºØ86êœu¦˜u‡h=¨nYÖ%u°u™ƒÿFDX .V¶š²\Ë¡ÅtÏaÃåiP‰¶¥°jPš¢rZ•唹‚(û´‚­<ÊÌì«·ä6Õ¦ 0Ç`¿ÙßÿØ{d=úùL­H°œ4K©°öÇúw­¿­Öמò¿õ[Êï¨u|…6Í%²‘sØrÀƒ6jË¿VI ›ŽŒ<ñ‹¸áÄ$.‰œœœú2€6(ÕPã`Ñ–LI(+…fÏaã—GJÒ ›‡ÇúW׬jÖƒK?X*TÕ[ji5B±–Õ¥(@©sÜRUŲÛ%v`WflžÁF‡gc3¬°YÏf[ž­ïcŠƒ§Ui´*¡©ð‘ 7VŒ©õ·"UHÚz€.ÆÊ|ÿ-êwê÷¿ìop#¾ÿÖßï²'<ÊÀ[§|ÿSO„¤¨jXYu @­iÀ¥ŠtV†3¦ÿ Ê¡‡ Ô²ïÿ¯_ßÿ_¿ŽþÉ»³ÿñu8§_ûë°2?ÑÐ㞉‰‰6nÜønÎ)C›ÖÃ<Ä)k´¬i¦#Ü„ni›+lÕ¶FEw¤¨oVÓˆ(-{†4åì«ÕT%õLnÊÙbËiË6HmÀÙúCßîW£}l===× NMM›¶WÊ sKùjÊg¼ÙƒË-ðÓˆ~S«ò”R&V¯Ëhè±:²¦þö4òû_vÙ)÷·~ßõýoD9bYWÝÔª„F~ÿ-ß!ËzÇúGi(v‹ä60Öi°|asd±Ä*ÛÄþÍ™ªÊ цÄ%‘«#O6ü¸çôéÿÂÁ×Ã+”Faa«©À&A%J‹;Š›‡Çú·zûŸ,g4SÌ@1* åìrJ)hÊ™fëëÙdëëlĪå Ìr‚ ÊL@Mëïï¿C(ll©ðeý˜Z™2†"¶üFÍ}KQðêÁv˜?¤l˳u[µúûŸZ^^ï÷ߺÌ•Ñi©ð›¡)ßÿT˜MÝ·X÷mÖÏ|l`<žÁF"ççÂüüBXZZjÜÁÁÏ^! ƒׇF{ÒØh äåþ]…?b82÷Ò] WØžx⛿ºqãÆwKsØp[ Ü,&$-)‰äà#JmEØ<<ª£¶•9pM-©çì¶e]RÌ5R@5µªåv–3·±3â*EÒ`*l¸G€Îe…šŽh©–¿V¥2ö˜”ñ–ƒ9«âÑgQKß”e}SOΔu’µ¾~ üX¾ÏÍÜ·Z 7Ö׆Ë#[aíyîd6K-§|¡¾4PËÀõ+fôqû7ç†eK¦#¸Œ²‘†#ï¼óÎ1l8Â)m°/‚ý§´¾5®ò°%¦#œK$§°i¶–lݵc²*)ÇVG@kɘõÀß 8e@6å o½Nž)ÃÄ­ðc=ËŽK"ié#Þ)âëϼ5ôöÔÔt”,Ÿ·ØºÆÀ;¥Ñ ´)Úg3´­êKì{fÙNVÅѡɣ¡-u\†5ÜÃFU¶……Ka~~¡±}l«+aùøg€ %Ž'¾tSN=ãàmù¥÷g÷Ã:“ ?ÇÄþÍa:8{aáғп&¹Dr¥‘šÙ5iä)4kp¶4‡ëc‹Í p`óðè¾’ŠRK%c—SÜ5Ñž+¥1_ƒëz[jSR€»ÌûK¯`£.\Tm“¶²}@à-ûy°¾v‹ÒëÉ”ïIð·@£u¥ g÷ð¨"´¥”ã²Hl:B  ­‘}l—çNmä‰_Ìþɻà Ÿü…ðýÿõË…þ4ý“wgýkÔ¬`mä‰_l8° Ÿ½Gê_ãLG êƒB˜f:"A]h¦ÂFÁ–GZeÀ·Þ>{azfο­~†Ñ|@›Rú¥¼—àƒÁz쨭°•ââh5KÑ`2€R¡5„ÆÆ/„Ó§ÿ/>cIÍG0°>=ø/\œLÒlýüÄÎ~Çà=E½²œa·€ö}²B§ÞÖƒLmÊœ pPóè¦ý_½ ¶ö§°FûØÚ-–€â6ú¯e%“0 «oP>‰ûâÆ¿û™F¿C7n|7¤k´$’+”J$%—Ȧ›Žh&‡óôéÁÿ;6~Á¿±]¸ƒ*k’ƒ˜²€bQçR’­ di».õ€Ú ƒef¶¥(QƒCgÃÄÄÄœÂû \z211ñÀÐðˆi}¬Ž†ÖžAË{kýl¤ŽHqBµœ\°®c J-ÏcmæÐæÑÍûEË÷'µ$ryy¹kMQÙ’_øJ¸¼r)¬ÌO„¥ŸK?;.Ï Ó¯ýuÿîg yé̓ ï_›˜˜x`Û¶m7K%‘»wï.”ERuMSÕbÕ†¡Ù¶þ±>6Z6É)m§Oü—3Cñ¡ñððhùÎÉr›âà˜:LÕz š2t9uæY¬œÎúú¬ës L±»/c[¯››§ÃÀÀÛ·`0ƒ>6pŽÄƒJa¿ýÏ)#Ê–´–)×KU𬟻L¥|†bŸé2ÏcÙF©ÛÃãö…e@SØð<6PÛ(°5Ã|dnÿ¡gžyæýX]ÓLG¨ªf¨$jYI$†1 gô:)OŸ<8|vÔ˜=<ºpGeaUÏïƒÕô¡¬+]J]*l–)óK™ gU\¬PDüwee%  ““S_¦öý\9$ììzzz®ŸœœúòàÐÙ°¼¼\¾,[V±JYë羌Ch#mö-÷±ºO¦~ÿ=<ºÜRæ°¤i 5Á}l£²µ1&&&à` €­§§çzN]“`,¦¦qVÿ¡™ †5Iy£µœR#ÞÀÀÛ· Ÿu¥ÍãËÏ*¦Ì³Â™åÚb“žrÐ{ËÎ8vÀm}]±cíyêqaÔîiq1 „Óg_Ç#`ã îgÃ÷{â‰oþêÀÀà @[j/¡EÕŠ}¦ê±ó·ÌZ²€r=ŸÕ”“–ƒË@¬çûïáQå“—V³|;g:BíýÖ3•mnn®«ÿpïšäÉ9DJ*Ç9Z«XÓgc³XûKC´ñ h:ÆÇ/†K‹‹ìÐÓÓ³:‰|âÄ·ÅîÇ•~ÐåkËЖK—²^e¯çî#½Fé>Ú2Ên“Ø:Y—?;7ÎŒ…3CáôéÁÿûÄßüUª®˜Á>‚ªn`ù?0ðö-§Ï <=0ÆÇ/†ùù…¬g£Ìë‹}.-ïK½Û¸Ìç*õ3eýŒÕ»~Úw¨ì÷ß7=«¼Œ}ÿ@1“+i—ÖÀ Ê ggçÂìì\˜›› 33³ajj:LMM‡ÉÉ©\¥B·ªk–ùk+‹Ê†ooŠÂFK!c‘" BŸ½çô™Á×Î OOÏêæéÁ+½Kkÿs×s‰-ϲ¬F-ßò¸ÔuÅÛ$uûXž—þÏ=GÙmdYö[oŸ½púÌàÁÓ§þ ¨i¸?îÔà:ü?…»µýÆAéuÐm*½‡Ü¶×.KïQl›[×SÚ†–ÏJÊs¥~Ê>´Mõùöô\ïûDí{fÉ“ožÎþryüÄ©\þøØÉðãc'ÃÉ7Ow² s×bÀ%‘ø²$@I=j÷4Ø(´q “µr[·nÝðÄßüÕƒ¿ÿÿÖ›/¾ø½ÿ/½,]‡¯‡ÿñõô:zz½v»´Léiݤõµ\ÖžSÛÒëÕÞé±±íÇÝ'ö^ÆÖCÛ¶±÷<¶­¥í—òºcŸ'mùÒv‰m£Ø²µ÷ å{fý Z¶yÊ{býþ[¾o–ï˜ôÞ[?_øþkÛØríýÝÆå•*Š·oál‘éÀlʤË}ð<)ûëçÎòY+óý=Ÿå;Ÿòý·¼ÎF|ÿS?we¾'ÚúY~ï}ÿïûÿvìÿ-ï“å7A˯}ßû,911ñ@7•B<øýÿ—ƒµ˜¥¿Ue³ö³5 Ø$uΠ৽iº8N‰‚¹ë[‘x½:5ñú5c]ÛµÝ;eÛvúû߉ÛRú¡lÆóÀsÑ¿Í|ÿµmªí(:a›iëÎý÷öö^§Õþã åfÛàëñmôzê*iÝOÔ³}S·}³Þ+ü¶<‡u=´3Í|žV–ý÷ß÷ÿëùý§û/œ>¨z´qãÆwoÚ´é6mÚô 7ÝtÓ/áÿ7oÞü+7ÝtÓ/ÍÎÎ~£€íôé·>¸iÓ¦_ضmÛͰ­b¿Ÿx߃4©—Þ¬Ô4ÓIiÓ¬ý˸¨`‚¥;|mGL¿,–/O™/Wl¹týZõC$Ý·ìkl÷hê{™òüÜA\ê:wÒN¢ìú¥ÌJÛª‘Ÿ»z^«>ç===×Ãl–õÚõl—”ß9î·ÿfs}jxˆá .ãûR'IØO``ÃÐÈ%$~¹ýG½Ÿ*¼¶úÄh3~g|ÿïûÿõ²ÿ×N6Rx£‡æM7ÝôK7ÝtÓ/=ñÄ7õwÞ9VeX›œœú2¼n ·)êZ¬Ô1f¶Hù©)ÀÆçÉ™XÕ5mCXÔ6æõly\l,×Y×£ž‚õqÖIQhôÎPRRq!½7Ú¸Ì{)í(Êü5ú½lÕg¦Ú}à€½;ÚÔïg#,šq–7õ½Ôþb(£ÏEç©QHÿó´üß_º¯trORûR€4å3Ùª÷½€dýíiÔº¥|ÿ-¿Í¾ÿ÷ý§îÿ s„àëT0¨á|æ™gÞÿÎ;ï WÖ¤RȘáˆfçOAc™¶)lšÒF!΢¬q/Œî˜9Õ;‹+ýpj?îÚ½ž˲gkµu‘^‹¶³ÐÎ&i¯+v f]¯”ƒk “õÇÓò~Ö[.Û†)ŸÔ÷Hz_,Ÿ‘Øû+5Nù,6âJ;à±nײ+±w#ˆ”i½Qö¤}ï¹rG©GþVãë±²F•7nŸá‘àåsÿKU©Êq¬,´°KQ6-ßKëo|ÊçTIíu×û<–ï¹å;éûßÿ¯Çý¿t dÄ”6®D’BÛêêêPÕLF(¬Y€ ’2HJjFŒM¶ÿ?{×’#Ùu\9@ÐAÐ0!Ž´öÀè-pR+Pm‚@/B[àˆiÊ wÀxÚ„Ô´(@P@¡ OœÀUøœ'â¾Ì¬¬ŠõÉÌ÷î{ïÞqâsbE‰(õjs@™óZôZщ¼u"vháe†@g,NÊÑÎ9]@ë(Ǭ^¤¢{ö«±ÉžAu¼î3tbå]>âÞU®×iJq» 13Þ\ãÐùÌjŒv ¼¬v*3"ÔúßqUŽÁåci’k” ¥F¾4ÐÁ‹²¡}'ê –úˆ"mˆË#âž³7ÎF²Uz¤Yë’¸ÞÞk¾Ø8²ñíŒ_ÕùãÅjW.ýL˜Ñø\æÂsœ‡×>îš2§¢FŽsŒ:·~!ž Õ«e^æPU¢nT´ì³›uÎA™Èª¸Xºc|Ÿ½Öˆhk$®k0®u‹Ô©#¢(ÕtÇHtl7jÑ1¨»ëÿVöôÑÿ£ÿ;Ž€jêf…”(«k;’|ùå—ÿú@Ûããã·kÍÚÿ]LE -fƒ8%\k@+b„—ÎVÖõa‹È’±H*z„VÈÛ% O¶!¨10/ïQý¹6Èî¨Þ¿äæy© Ü,\C=çûño:˜áN×»ÚIßdcÊØ™A©@[%WM…ªxÑOc\¯=îiÊX^#['€IFbCl·å ó^ªÛšVɼ¤*5²kä2ð¢<úPq¼š«”ånº]%ê|Ôúý?úÿ¥èÿJ:q–æÉÀm¬¦íýû÷?ÞjcìÖ"“&K‰DϦʻÁ@[ nµq6J}D@ ¥Jvò?+©’ñgü=³ï.Ôl£v¾«Œvžø?fD9ºdp¢ÏEŠnôI«×/KyErõÙ®¤Îæ­®!Ž/þÎíÜ“JêY·s»›w1õì(€º›uWL¬¦)¢Î5©û#8Ýû©ÀåQÀQô¯€ ¥9Æú´¬ñhLT¿ÇóÇÈÚ‹ÜõŸ9'"í³ã°Póçˆt¬lM»ó(ì¨^°¢@Ø1˜Ñsý?úÿ9ê´g8éõÕÛ駪gûüóÏÿée[Û/¿üõ·ÔgíÝ»Ÿ¾^¯©Z»¦ö'”e^ °1’‘,ú†êÙÜ‹îÔ»¡BõxÓÝ:80¢4 DFt ½Vû¼¯l|lÓTgv¬¸Yg›¥òŽ!Žþ¯þÎO<.{n±fýTõ6¬EVŸ¯±å)ũƢ¸ZGh¬Š$ˆ‘Cd UÍ—øù£¼½q¼Ê`ˆé.!’Zƒá‡[c–Ýsõ?´?©ý®¸ÐgéHŒ¸ÅϪÈZ¯Ì«ÖHõÕW¿Aë^ÀÎyªædÉ€[%¤Ø8+×ëÌE¶‡ei²èy32úôÿsÐÿ»Q8'–¥FfѶwï~úú¹§H>==ýðÝwúÝ ÖÞ¼yó[YËÈ*D‰#)jÿ³¶xQSl’qðèb:Ä$ªçcL8'j³SJ¢ *Ùé²ÓìF*‘b9ò\™Á—m¾—~)å×½GÈëÏ"Ã,Ú/ÙÜß;:ú™)IÇ J”EC±*¯}fD9È£ëaÐùѼt¢/Ñ€¨" x±È«g[?õ„J—Ïh—# %ò”gLÄ.Así«Nߺl-°ÖŽc!ŽÑØVàÝ马w´Ï¨ù§ö±Ñÿ£ÿŸ£þwÖ¿j©âDު쑬WÛsŒ¶Å¨c„¬ö\SëRe…Ä^Ô,òì,‘±k·]c‘6VÏVéÓ–5©; À]ëåÑuB9†ÌÑ/uŽ ˜>×Xw£´G÷RóÍ1^³µç+Ù=`ÞçHÍμ—NjòŽª]/µ2fâO•Cà ]s{$ÍP©F§÷"“bæ W€¶YãkåL`Q4ÖW 2çÿJ¬÷ÝkADϘÍUPÀ>‹¾déjY¤5&s¬ñR‘†¸—³5°žWÍ9¶¦’Ñÿ£ÿoAÿ+ç£J³FäVªæ5Ú^ÁÚÝÝÝg¬­¤$ßÿýüúëßÿ|m öñãÇ¿ýòË_ÿ¸FÕ`[¯ñÄ ¹F!U*j¤©ÿ¡ ×Ehý3ò‘¬ŽM]L…‰åš Ú©Á8B©°~D"Èîuq̨"$8ׯ¼3T:ogÌGÎýs(­ñ1å…Œß,"‰"‘NÝÕéÿ«1‹¢Ì€ Êõþ;Q?4ÎÓûoß¾ý åè¾0.2 ø:Ñ.¶ª~knú#{¥H¢Ïe©mk^ÄL5)ÑA¡"n, ¥ç2P¤j¸™QÈjk•ó"K¹v#·¨Ã9J$FÿþŽúßIuêNp‹l¬Šˆ$FÚN@mýýDJr ঀZ§n-ö–TͲ³õ2 #ÿÇÙ›i,ÒAX|oM«T»cv#vMh§±º)ìÈçò2¹†\×;qÄ1.j²y–EÎõlvïa·=‡ú^Œ¼­/•=‘t0Ђþ¼ø ,²È kŠ&Kec×tºæ¤°´E4ص²ÆÖŒ‚?¦62¥þfßsŽ6;ffì:óܬŒbñ¢u[yîîä¡{ÁÖ"[hoSs—­ çœGîã£ÿGÿ?Gýϲ˜s’¥NFöcTÛ :Yšä)âöððð͇þûœ íýû÷?®©+t#‰÷mgM²@ÕE›Š®!ú~'=5˜;j‘U@Z•%{PÙy.µÉ»v¥•‚{; y÷YfáQ^Áê}<ÒëYUÐãUR»ÏÖˆÕê¨ÈëíÅR(czŸÓÌ"Êpfl¼ÖõX1¢±¦”)Рî,b˜såiÌÀXÞË"qY=[ö;›üÅ4CE ’¥kª¨)JEi–NH9pD”Š«êÕž¡ÖÕ0ý?úÿ%èDÚÄ¢ë+AŽ@T×v#m§ßcÓi–*¹¶xxxøæééé‡?þm¤}øðáçÇÇÇoþù/ˆÑ´Ó¹#iŠC0²þ~ÿéasœdjž1†ƒ.Ö8[EÚ²AFÐVI‹t—k@íÉYº³yÅ”éz_å3;›ÿγt7ÕÌ£W­•8zÎÊFžlDŸ¥ô9@)L4O+LaYt¨ Þ²Ô *ŒžB”J €µW^¥€ÚÏ]påÔ2ªõï|ÇÙÏùÙaŸDçË€Z·6LEGÎ'´ïTíÑÿ£ÿoMÿWÖÅQç2H®‘©(º¿¿ÿôÔEÝPN½bÔL‘‰d@mh1švÿéÑD#hÎd骳ՠPç,®Î9ª‘=•f©Ú¨kpsX3/ ó˜u¯+›HÌ»W½¯ÙÆåöìsήO)¥¤²ˆ2:®R–î3SÇe¾#™—ZÍÇŠC†y2]o¸“ÆäôÎqŒü¬ÊmàŒŽW¥ ®¦í1çY‡D‘©¸uent-þOEàÐyX …,µÚ![©>s×IàÔU2#x§žÃ©"Ýq®º„eYmüèÿÑÿ·¬ÿ;©Ãj_ŠÍ´AÉ)ÉHâÿU¾b˜dà-xNÊã Øb]žh+K]ë¤É^°9^¤,Dï†ð³m„ÍYÃÎc›t¸fCå:‘§É‰dflN\æÅt6sæiÍ<€Õ{ä<7¶Ùï8غQÉI/F‘(v¯³çë*¶*±PE™«þ&YºU—©­JÝÏ"aŽ’eÀòlZ5òÈ¢Œ»³«tü•ÒJ꺞¬\õ^ h«?sX YÔY­)´Ï0€Šô‹clLÌ™¡ôÿàlôÿèÿ[Ðÿ•õ¯²XŸ1Ä&yЏþ‡H;bãí•Y½îïï?Uôû•ˆšCÕÁ&l+9K'ºÆjUÝ=é¬,‘lƒWU¶Q8 ¬1`ád¶9±"áJ¥7¯{'½kT;©jC®(RW9e PåƒwÝÏv”-KíP׬x”W¶s­Ì“˜EûØ8ÔyTMz–nTÊí U%‚pÁRUjåØ8{ãÖjU"M»ýÓV¯¯Š®e„&.@V5z Hd΂j{NíW–…Òź,Y]¢ò0wÓ"3çîèÿÑÿ¯AÿwÖ¥}„j´ÍØ$#8B‘¶‰S`Ìg¨>H”Ö‰Àb„t{婽¥šÝt¶”È „UkÒÔ&‡¢ Ð<«%A‹a'ÕÒyPîÆêlº•{¼s]ÅÅ®m·î°âáTó¯Z_¥Žá('årXFð³ãMÞ1.œçQU”lÍ; yXQõA•´´J´N‚J·¶ªJË_¡èß­EsSHw¢rNãm7%Ñ­ÅË"Õ^‚îØ:í-˜ª8>ñ‹(]›¥âŽþýÿZõÿQëý{*X;E©"‰‡Š¼¹©“1 ÇRO5hÎKEÔPÍn•h›“Þ{•”Hg²«³ãqS :© ljÜ®§Èõ$¹QÇŽ’rrÆÙFÇê*J¨¢P²Z)7Ý@HQÞWdzç:1*©U »w :Ï«ÒOqwý£{^!úÈRÇÜÈJ+‡ ĉ¬9FµËšèP¥Wéæ«ÍÌ+€‰8Mµ;ýÆúþJÓì ­¿ÃÂYaŠsj檽ãX4Ñ\n:¤›±3úôÿkÒÿÝõÏ@\l°ÿǪic鑪5@|Ñð;à ¥>ª¨ZÆ ¹êœJªi5"{Àæl„ŽÃ5Õ¢t ÙŽ\ñô¨è‚êxîÕŽA8ʰ’^ç0ce×â<ŸÊ³Ti0YjK·ÈÚñäuÓg²ûÚa'ª(Ä#ÖBuý³T6äW€­Ãjãl—]°›öXMøpR@]àUIwtSE+ä"½JŠP÷YV£µÕTÒj¶Ê\Êî«åceðgßíêµïþýËú¿³þ3ç-nš$¢Ì_Û 6ìUix¥;ªfá»ä"1«€¥µ>KÀÖ [ïDäv22Rs:ºë¿³ŸGÀ怷¬®,bˆ($6÷fý»¯Žþßy–ØFFFFpRFk¦°2àáùnt'#žPF·›æYIt©ß‘‘Ï€+J3ÉÒ³û«3«ÞXÊ`uþ¨ú6×0«Ü/•é¤CŽŒŒ+ØïÒÿ;À–¥6vzÎ1 ™±ƒ¢óg€uddä6•;ëÿéòç|¹¬ªþ?×óÀ6222”«”2†ˆ1¥>;?2²;£jrÿh 4)ãzd™µHè(jøuS« uåÕvÉ_â3Ë@›"š©\_|N³³ŒŒ:®C’2um##·å¬€mdddä‚€)¦J¯,)ÉØüÁ^µ½Š:E¥Ì@Säv10t½ªn#ged°>kêÚ€ë\‹ ¢×yºCÏŸ¯02¥¼´§yddä¼úpwýw÷(7cäèÚ4G¯3ý9€mdddä™xÝ~+ #¹Úl³ª„¥ªjŽª®K)`§Íºöìü¬±v¥wN<šY"ÖvÀawTÏŠ½—xtßœy—5gï)GÈÈÈÈíèÀÎúße¬ôÚ¬\¹äK°¼VæÀ¶‘‘‘‘O8ù†ò"¢Í>cTàŽ¨ú©\Ê»X©USJ¯Ò›ÎaEt Ëwjí”ñR5ºŸAó2{¶•Ýì³ l*ð8,‘##/ ¸U×wﮀµŠ>tœ‹®SõšûÙ¶‘‘‘‘O0;aü=c ¬7g¤$nʆ,¥¾sDñ¶“JÊHUhvëê\ÃîW%‚™µ9P@‹ÌHBuaÎù+† JÏEÏÄIA]edäåèÇŠ®Ëöw¶ÏTR•y§ÏÑÿ×|ØFFFF„Rª¤ô9 ʉ¬ z6ŒdÞP·.ÏQ¾Ý(SåZœÈ¡S˜EFPŠ×ÌþÎRc³ÚÃ*QM6Ö*hcs†99â{ÚFF^‡ŽTNªJ…[¯[‰¬9:]•¬ÀòÚ2€mdddä“ÿÏ© Ñè¡Sßqiß«dÀãô„CcV͸†I·Ï™:æúœvúðTj•÷•ݯ8Æj¿=f¬dsÉõ0»^ðlޯϵi`ßyºÒí£†Rï+©áNKº”µTAºü¹È¶‘‘‘Q@ƒ†èÝ‘‘žmôì8«Â@J°ÂtµÛ'*>ÕCÌU¢Õ†Ú™"FÊ6K?DŸËŽÍ¼¯°d‘/åF÷ÑÛ«ÆÊêϺ©¬ €Å±MTmdäõèM´þ«L‘YÛµw:-”ŽDúÿ¹:š°ŒŒŒp…" ¸1ðç4ÚT©8&ýq–R”Œ¿Úc¬JÕ¬X¸ ÊˆXç×)pW <×ã[a¨t›_Çó¨çìF»Î –^:Q¶‘‘×Þ*¬Ž™ã¬úÜ(ÛÇŸ;PÀ6222”RÈ€E„˜Rs;=gÖïű9iyG)L4~å UÄŒÎw3C×£zÅ1€ÉRÖ//©YÓØ¬Ð>sJ0§F¬Çy=O”&ífv =ÐÔ¹-^n  `)(dˆ¢(ZÅ0Ý¡AFI–Êæ6û®69eÀÆŸN–òº:cïx_³”KÖH¶“jè3(õÍ dìdsÝKö|wæùÈÈÈH¥wf¶'vH¾Xí­É¶‘‘‘‘3 Ê‘gàQ×»„Jɹi|™ñîFÈ:µ ŒÐ-wARÆ@–Õ|9uoG0kfÌ:·:L£‘5222rI=YqÆEÇás'À6222rCŠ)«õa´ô*ÅÍ•FßÑxï4u=£nht|¦äx‰Êœ¹wz9µtNÿ¼JZ¨ÓäÝ©ãc@ydddäR¢²7˜ƒ}î¥É¶‘‘‘‘+*¦NÏ2"‡†Êy·1u§ù6;gVûÅZTÓ'3péÔ·±1fÏXÍ‘¬·¢¦Cã?22ò²ùy½ü×¶‘‘‘‘ 9„ ñóm~–Ö‡>Ïj²Õrë4jf4£¥÷±Rgæ€Ë $Vë] j[A…ì$ŽÑøÜâ722€m^ØFFFF^­°ˆz¿Ú¤ÚeMÌŽ¹¾¯¾A” Ü"É@– Àª… Ìž‘SÖ¤ÚisõªCׯÀYŹ0«tddÛ¼^ÖëèĹßvÄþIEND®B`‚instagram-feed/admin/assets/img/balloon.png000064400000003074151435171370014747 0ustar00‰PNG  IHDRddG2r¼XCòƒ€†ÚÁß9“ÔÝÍH²†XEš.R†¢D»Ú[ÆŒ˜"“-‰àÐåâK[‚D?+5¸ ÊO’H˜³ÍR#±ŽvjÛó!yŸ|%j¼ÅEÃRÍÕ0™ÊP¢ñ"®“$ˆ¾"£ 6£Õ¸2ÑsÓBÆdî«[£~?õÉd“AgYµ%OiRoç@)¢ÉúRzñ–DbõRdxøœ×üú¸]šÙžå8†Iжª‘ìAN-{·÷X.| >çöQ›à«ú–âúåVMgÊÕO‘tTÖ£)d#­Q§På—QTJdçF˜½Ô *6ˆL¥Èøb®ç›[ÂsN(Œë/-ŽƒÇ¥%Ð Hí"ÑÂktÄ  ˜Øîp¬GñÒ0T’œ 5= –pfdz‘€5Íe5i{ij¹S“„¥^Ê––rIšÆxMM‚6ü Õž·CUi,×£M¥ÚW³Ì©DCµ„¨9ª(Y:"ëÙ$,ÏO‹weR&ísʶÒŽ*˜”I2* »=¥‰ágj<çh©%V`LËmϘ?©]ÔùJÛ*Ùo0>¹eªûž‡Z²M£#™Cmôp c‰xó’­=F¥Ï KTP9TñZ«õìþ5a–)›;uR¬É|Y&êÕ 9¡ýì¶¾ !Ç^."ð~z 9›Ô^N]ïgðbr)Ê8`ÀáG^^)ö‡û§ÉÌt¬ŸT#wÚŸ=aq’#Ymýôûëzå¹?.m,eea„#õÄ(]4ßH- …•’"<™Áö`7êØËRŠLœ„˜Â™›5'þ’‰ó õ„}|¸qz¹É¤I-uôE* ŠÔK/Î<¤$ BžRWÜ!̶f(RV@ˆúÜC@… L¹ j¬RBЃ¯SVË´4%®‘_ `¡L2"¤"U‘dk´Xä.8!d ÝË îMzb»`´™#¿Å£<à”+rûD¶#W _?Õè`Î¥Dy}rÄ[ÿ|µÇr-¾ÖN„†yÖùeæ3¹Š#‡ã_–X¾éfêÞî‚Ù£ ÌÒ»Kn÷yT5h°n,¸*/­Šäæx(¾ï7æ‘c1ë6wýlëìþtNî1Ó>¹+*>ò^ØØÈu¡g•h—Ü%Žð].r?|ÙŽ=ªÛÈ=r?¸¹c<Ÿí±Kþã?ÔøwªW!ô¤µ¸IEND®B`‚instagram-feed/admin/assets/img/sbi-bell.svg000064400000001653151435171370015026 0ustar00 instagram-feed/admin/assets/img/oembeds-image-2@2x.png000064400000217312151435171370016532 0ustar00‰PNG  IHDRtÜž@è pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFõIDATxÚìý}Œ\×u%ŠâG8Œ,Ú #¾¤èÉX”D#c™ ¨È1yHOxê3‘ü)ÁÏ<p4+&ÒLè­1F”¡&†}xI[oAK-[~i;–(Kd“ÙînwDRîn~´I“¼¿?¨]ܵ{[ÕÝUÕk]]·î½uÏ=gµ÷Z頻ê=hhhhhhhhhhhhh½×pÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐÐèÐÐÐÐÐÐÐÐÐÐÐÐЖÐŽŽ^ÃÛ{Þ þ?^†ü\æ}Úû­çøg¢ýó¾C£öºõWÛm¼ÏY±cÇŽðË׳ÇYç<[ç¤Îë™ïÖÎ]öØ3ÇoýΙkÂÛwïÚÌ„uÍF¿]ÝßÔûôôÿÅèÿÖ9Ïì³÷û¢ÿ£ÿ£ÿcüGÿGÿïTÿ—ѳ€.ê<Ös¥®wÂ3£ Á» øM3š\ÔéuߟÝFÔiêÞ¤J÷¿¤ãgnÞ^‡ÌÞÚ¹µµdË\³Ù}ŽÎméµÓîu]·ÿkçýåôo¢Pò|ôÞN÷ÿ:“\ôôôŒÿèÿ½ÛÿûÐY7¹;v¤V˜2«!™?ó9±—Ü”èyŒ%¡dÅ¡då.{¨Ó‰ùE./xù›”Ñ {ÉŠMé ãí—\-ù½¬”výE73ë}V?ðö‡o[ëƒ%+|unà´Qÿ÷Ž ý¿7úvÒP ÊäÿÖw—žKôôôŒÿèÿèÿuYº¾aèJ:oÝU¥Ò$~ò:uaZ~3—H¾M»+a¥«%QúHœgoÞrµ£d`Ù±cGê÷‹®%o ‰®UëÆc3j™˜ßäJ® mû¥¿•µ¥×pvß—«ÿ—LlÐÿÛ»¦²à-Zà‹ÀY”"•}ú?ú?ú?ÆôÿþèÿÖL»¬]_3tu|;+W%mvÅ@»ÉX7>k%ØÚ÷hµ§¤Ãe:’ö¾h%£ÝN¨}wÉ`ÝHêÜ´³ûŸ½~åà­ àÚÑ»ÑÊó­nFQöZ±~ƒºuÑùã[»ëy)/èÿ½Ñÿ­>•M©ôRÇJtôôôŒÿèÿÝÕÿÛ™ÿGç+Ûÿ3ßßó¢(í¬Y["Wïfåý˜ÖPRÃò;²EÉuV–JobÚw”®¼D7 -½"s,u¤l§Í¦zÔ)>·å’Á®ô¦}&Ú®u¾ë\#^ŠGéõ‘`gûtAÿï­þïM–¬‰U–™È ¥”^³èÿèÿèÿÿÑÿ—¾ÿ—ÀÔm)½ïô< óVDK®·Ò*/:kU(ûãdW1J;h¦8¶¤Æ0ºðJV=¼ŽëGÝ•k²¥Ý 2ßÁ÷?sSõVÀ²+ÀQ¾º¼fåjTéͺ¾øv½c×®­ÌÍÝʱ׾³ÎD!“â­êZéMu'JèÿË×ÿ­‰³Ö²*nu…QJû¿uîÐÿÑÿÑÿ1þ£ÿ/_ÿæÿò3H­ì[†.¢7=º3¢çµ›KT,é¥Ô)´ŒÒ ¼IK¦ØµîÀ£uíi“£è&V÷F­àdÒB¼|yë†ÖŽšjæFã¥û”^Sü¦’Y½ôÒZ2×XfÐŒV©£sÆëTÛ9ÿÞ šéŸÑŠ¢·èÿ,×Yä+U¾ôÞ§­ä—ÔÌdîVÿDÿGÿÇøñý¿>ÓUgþŸ]dȨ-—.°ô óN˜µ’ª¥3d N3+ZÑÍAªj7¾Ò•¹ìÀT¢'/àh¥Ž¿7K¹{+ÑͨÎàêmËú\v´U¦Ò›˜68Fç;³ê¦giºˆ7˜[©Ñàéåî{}&sc÷1kß³©oÞM¾Nÿ÷R«Ðÿ¯ÿkײ¶êm)Vú¥v¾"…7ëwAÿGÿGÿÇøþßùþ:?ïw)±ÆÈ0³} èJWo£bÑè&W‚꽋TëtÞʈ6eVµ¢A$Z½áߣÑïÙUbí\hÛ£ì5éb{.ÿ¼v®µ–u|ZMƒu#òVa´ý¶n˜ÚckµÓ»ö¥ ´u ðmeöÏ»©Gûo pÖ ©µ_ÖÿÑuk]—Qúÿœ§r‹þß™þoMN2ÇWš*éÝÛKLd3ƒ²wÏAÿGÿGÿÇøþ¿týßú=³ ¦íÔ’®†.»Ò”¥Aµ‹ezúÔ?[îvüøôµÇÞûÚùŽv·uìØ±.æq.÷o`í?îNìm?>ýÁcÇŽ}°ÛÎ_æ¸èùN\?‹ÑGc;èÿÝÓÿ¿õ­ooòÀ—ÆâÉI¡ç‹º”× ú?ú?ú?Æôÿåë·ÑŸ—åaAœÓw>tÙBvkuá[ßúö¦‰‰?:11YMOŸ@CCCC[mdzúÔ?‹jé4p§­ÔŽŽ^sèС^Ù.Î/ÚÊh'411u_ —IQî[º¨Ö-Êg¶R`¦¦Þþ\Œhhhh+s >|øðÖR‘-…ibâÇâ|¢¡¡¡­Ì61ñãG½R¯’ÎLÖa_øÐeQ8qrX¦PzØÐMOŸDÝ2>~䩹z*ü%¶}éCùrXŸ CCCCC›ž>QýøÇoÁ“œ—òô2­€ mzúDåY‰x¶%Þ‘}#Š’1ÉŒ¼„®È¥âÂCCCC {û §‰§\±) CCCCC;Q•„×µdë †®š’`:44444tÒ´ÖòÒÀšdè² ­¨ëK•KËw΢3èÐÐÐÐÐ$ óT’¥¸gòèÐÐÐÐÐ8C‘LVáŠI¹Ì"]âä«®thhhhh<åR*Œii—ÐÑk?þñ‰qÑÐÐÐÐøØÀ­L­~;JÓì{ÛYÌ.UfZSd Š‚††††ÖÊÐié–ÚÍС¡¡¡¡q@'3;v¹":¯¶ŽN2:44444tž¡¸–nÉR.ÑÐÐÐÐ$ ËzÑ•(ù÷U ]„f¥Â¥<¹thhhhhš(Šü+ŸÓ^C‡††††6=}¢²R--Ãq)¼•v}ÇÐi',òuرcÇ5‡Ý€  MS¹”©—¨C o‡Hp—Å-}rYr –S;ýE O¹´›êr‰††††¦¥\j¢ŒÖÿ˜ë[Q϶ c4ÎÁÝèè(R.ÑÐÐÐÐL†NS¹´^C‡††††&S.åâÕÎIËœ¨þ®¯R.½“¡Éòvüø4Z‹(Šdæä8¢'thhhhhœ¡ÓÄQ,½¾cè¢::í¤ÉÚ¹«F°H¹DCCCCÓS.-qMh € æ² ®¯U.³9¦žT.ÑÐÐú¥ýÁÇ©þàãT_Ý?b¾çÑ?ý\õ¤ú‹§ŸÃ9sÝÀÀÀ* Äi™rõ€ ­—ÛS{Ÿ«þàãTŸÙó´ùž¯îiŽ98gy@gÙ§E+ÎXܪ§Ó1oP¹DC[üöÌsûš€lýÑP5úÝ×»vßùà¥5D-UÛÔØVmjl«žÚkƒµß½ó«Mm]7~÷õêÏžüo-×ÃrN-åR[ ´^ CC[Ü6vä˜{?îö+oß=µTíÿߟT›۪߽ó]ÐGcN·]Oí}®z膚çôÑ?ýܲÍ/,µäŒÞÇŠ0÷ÐË5µÒdÀС¡-~{ôO?׬֭1¼´æ(º`òðñGÌóú¿y×’Ä<å2 è Š‚†¶´ @ÑXÒÍÌ‘·ßˆ óÛgö<]}pëGÍsûèŸ~®k¥óá‘U}ëC¥[rtk­¤^•™F ÚRºßøÍ»ªß½ó›žÿàÖVcGŽЭ@÷Ð µüö¿÷ûU¿÷ûU¿ñ›wµ\+ÝRC—aéèÐЖÐ}pëG[Æ>¡ï¶ €ny@þïÞù‡Õ|ü‘–ùŦƶ%Ϧ‰KÀ\_:MÑ’ÿÕ¤>½•V¤\¢¡-- “ ƒOì»iƒÅW÷´ìçïýþCÕW÷T_Ý?Ò ´Ýoÿοmî·dâø@¼”ƒ°ÆÐYÀ)—hhË;y— cô»¯7AÝïýþC]›ÂÿÕý#Íýüß¼«ù܋߸]›ó‹ÄøögOþ·ecn3ÙZ¡òú–¡‹ŒÄ%Àój`[€†¶¼€î«ûGº~UU‚Œn«ùëE@Ç™8 ŠyÝâr:-­Òó  CC[^@7=}¢ ”~ûwþmW X€®^º¥5òšË¥N»ôð‡…]ê¨^öUÊ¥g] )]òÁ€ miÝ£ú¹æŠä3Ïík™Øw«8J4‰ k/åò÷~ÿ¡®øí Ð ¬ŠåkFc5ÚÒÝ‹ûwþmËXÂï)ݼ8ØÍc^/:¾(ü¿yWõÌsûºb¿¼Å? Èyâ)}]Cç¡Y)ê ÂH¹DCëQ”n€¹xG7Š·ô" ;r¬ýîë-­¹Èiï CC[~Q”n\tÓÀÇ](ÞÒ«¢(r,é†RˆÌB ¥ R¢tÙ· &≤€¡CCë@÷Ð uýb©E:ú Ð=óܾꩽÏÕnËQCW¢x @‡†¶ü€n9rë,vƒåè¼”Užâ¸œ×A;cÉR\Q=¶–YøžÑ7¶Vá ÆÐñÇ´º † mi)PQãé'Ë!-\RïÐ­Ö t­UU> ZÎs,UÇJ[7¥\ÊçVС¡-íK~ï÷êêÅ·^X¤´UOuš@érC¤>µ¥X ä㈵˜1ïû:Ï #àH™ € myEQÆŽkQüB½C{çW‚α#ÇZ&:ÝlâN5]KmeÁS.3 *—hhÝUÏÌï…Ý ÙK©û2%TËæàìÜ]ì÷G× ¿—º¬£$Ëò'èëºLºeÉ @‡†¶¼€nzúª„}·ºnV#“ \¿÷ûUöä«ýÓϵ<ß-i­$†ó¿y—Êrqƒ¥œ”y€ŽKKС¡u' ã€£ÛRé^Ü­ìœvÿ¥{ôŸ=ùßZ2,º)­õ·çß6ýmåk/~ã;Ë6þÉŒ@MÅÊ2ÌÔÎõ] fS _繫°-@C[^@÷{¿ÿPõèŸ~®Ùøªe7³uÿHlp£Únýhõ¿yWõgOþ·®<Ç/~ã;-àM¶nòe’Ju’…ã×ÄR:€µAØcïèÐЖ>m‘%ýÑPË=»ÇïÞù‡ÍñDÖùu«x‹ÌêÐj»‰ýô|KŸynß²•D ]Ô² ®ç}è²J—QC‡†Ö¢(ݲ¢ÊSN´Öu~|²ó«KüàÖV¿{çvez\í¥I™|~)÷‰‹¢4ÕÑøÁAjèÐкC¥›²¼E¶ngêžÚûœzŸîIkÌþàÖV¼ë9·ÜŸ/ jâ(ìb¥böUÊ%?@)„b­ˆýÕW_ CC[f@÷»wþaפÇô2 ë¥6vä˜+’òÁ­]ò˜R. ÌÉÌ+ݲÑh¬ CC[~@÷Á­íª{t/º~šc,Ç5aÕÍyJ—Y³ñ¾cè,ßù:jèÐÐÐк³‘!ðïÞù‡ÕïÞù‡Í”ÜåXÖjè×zEí¼С¡¡¡-ا,jýÑв-ÓX"U“5@×Nô< ÓÀgìdÑ¡•.† ­—[Éæ?èru²åj–·(Èm:44´^mäA×mv2½Ú²~¦’”²„Rúš¡³RK‘ÑäU`èÐÐÐz¹QÁ}IëV÷ntÙÚ9žšIÿС¡¡õj{è†j'8wù:kqÐR¸Ì°x}QCg!XŽt­“G' šÆÐY šúe£ÑX @‡††††–tH¹ P«çGG'“N2:44444«†N;dMl ÐÐÐÐЬ”K ØY˜FKÉì{cq ØeWYÁС¡¡¡¡q†Ž§]’%Tµ”ÁС¡¡¡¡I†Îs–R¿VW×÷¢(ZÚ¥ÅÎY€ šdè¸uAf, CCCCCˈ¢d­ ú:åRúÐq”+m 2Â(`èÐÐÐÐи( ;‰”-9S@‡††††ÆÆÐix$*#ëK@çå”j'I¯Ã‡ ÍJ¹´€œS$° CCCCC‹:«E*þ}]C'Ó,éo&M¶hhhhh’¡³Æ kthhhhhQÊe6ý’Ò.èÐÐÐÐдºŒ©¸ôÕ^q>tš«::4444´: ´$àÌy\é€ MºRsñA”¾ð¡³k óÁ*—hhhhh¼†Ž”.#†NšС¡¡¡¡E)—– c`× ê40'%¦)år||ªš;S9ƒ††††¶Ûôô‰jìè±/x©–ÖMàïÈÑã/8qç m…¶wÞùI5>>Uiž¦ž@Š$¦VŒ±¸qÒÊÀrc—íÕW_¿áÈÑãÕ… *@¬Ì˜œœnt’}Ë´Ãco½ôÎ;?ÁÉD ˆs§ÏTGŽm ¼:º“r©©Áp?‡ˆã«ªÿ÷ß C :t#Gö\å’³stà€ÎužmÁŠQ¹ŒÂ3×DQè€nìè±/xÌœfYÀÓ3耎º(Ëë—“º!}k,ÞŽmR.aºL–‡TàC º#GW–§©W?WGé²ê7cq.¢ ¾H¹D Dè´”KJ·”VtÐOÇ·j漺¡r©±sœ’´N–f,†@ Б0JF…ë#GÐ!]KÊe”ù!A\”ŠÙ—¶RÝR«£CÊ%@ Jµ²*m h% @Ðekè8v‘,ôúZEt™TKjH¹D „´-ÐŒÃiÜÐÄQ Š‚@ YC·ØÖU?ˆ¢XŸDÙ±cÇ5t @§™Škƒ/¯«£ôL: ;rôxÊX\Z±ÉÿWŒmÌ5ÍØH!¤\"‚3tröþç…﨡C º¨†Žc‰c²©–}ëC§y:x¨˜N.:@x¶Ö"¡°ÁÐ!:/íR#VœÊ%Wº´, <¥K~rÁÐ!B2t|0æi˜[GÏÐ!]‰±¸¥t™vU¯ûÐiy¦<5S?Q@H@Wb(Î@Б(JÄÐE~t¡”ªŸT.eî©Æj¨\"‚3tVÊe§.ûÆXÜDÉ*]‚¡C tЬ…@¹ºJæãt@W*вbS.%%)}è²)—t€.ò²X<: ó6†hb+ ÐikyÑYæâtðR.iP¶@ Üt@'U.=uKKé2[GWõ›±¸å?g9¨\"ÂtQ!;-”ž @‡@ ˆHŲZ“ecY”ªßŒÅyš¥æ:@D€NŽœ“–’É C º:5t²–®ïº¬Êeƃ @ 8 “‚(Ù±5tà)—Þ" ÆÎ•ZôU §$¥8Š…‚9 @‡@ ÍX\3¤©øèè(DQÑè´±D[$ÔTúW”mwà™•T¨\"Ât™Ô}žr cq Ë¦\rrJ³.Ȱu=èäAFìœ5Ð!BúÐi`Ž+^RZ •K@H@W¢téYxÀ®ê7•Ë@ÇA@ $ Ó˜:+m†êîè€N«¡ÓŒÄå˜"ËÇ2)U?ùÐià.*dGÊ%@ $ ã‚(ÖB ÆÜ Ð!k[ 8)ò¸"T.5RK¿Ì:ˆ¢ Bº(]FÖÏ ¬B @ÐE€N«™ó,Ùú^¥i—`è!Åe³êêøkt@G)—Zú~$R êª~aè4„›õ C‡@ èøŠêÀÀÀ*éK'ÍÆ 䡆@ ¥Æâ–jÖ êcqMú3bèø` †@ ÐqçÕ?ð÷Ð!"«r)ëçdÉ/)ë{Që9¨“Êd¨¡C „è$H£±‚ì 4Gï C :J¹ÌÔcËr±g,n:¡“€ŽÊtˆjè¢UÖ7® C :ÎÐY€Žc¯^®okè¢ÔÔc,P@‡@ è,ñ>([è€.SC§a ϬQ‹¥“²•v @‡@  è41”(}€@ èd ]IÚåŠJ¹Œjè$â…±8@ J5vÈ×h€@ èx Uf1s¥µtU/3t–u|>t(t°yV8rÕ€@ èÐy¦âšR¿eeз*—ü¥Üg†CÊ%¢›bvv®Ÿªfgçp2ˆ.t4{,dê!ŠÒƒ13;WíáEœÑQ@—©Ÿë„ÒeÕë5tò¯F_f¼èº Ðízè‰jSc[5>>µ".üÝÿpµ©±m˜ùÚ /U›ÛªgŸß××ÇÿÈcOV›ÛªMmÕ®‡žèÊ}ÜÔØVÝuσ]µO+­ŸPÜuÏƒÕ 7ÞŽs‘·#ÐÆ m0n4«=Þ•€n×C_é/?Z9ýåæ[î®>vÿÃæk»>yå~»}Ç}զƶꩽϡ :ÛwÜ×uc&bé_´˜: àäk+ÆXÜŠwsÊe‰ê³_Þ_íÞó´ÊðŒOU»÷<]}í…—ºsÐÝv·zã# ÓÏög¿¼¿ÚÔØVݺã¾êÙ/ﯼ< @@þÖ$Ñ@7::zM¤NF¯qoºnN¹¬èö¿ðbµ{ÏÞjÆÈؽgoõì—»sÁíøøÔ•Aeÿ¼ ó€œ¬£‹R-û¾†Îcç¸}W@·|A •dgfO¯&ÂûÝèèdìÞó4& Kè¼TKù{Fcu?1t½ èî¼çÕ­;>¦¾Ö éptý÷ÝÿGÕGú|1‘t–õ‡MVT ]Ðyõsœþìö”˯½ðRu×=6ÓŸýòþ–÷~í…—ª]=Qݼíî&ÚõÐM€ôÈcO6Y ›·Ý]ízè‰`wàåÑæûggçªÏìyººyÛÝÕ­;î«v=ô„9YŸªyìÉêÖ÷U·¾;8Ê}£ð„>²õsOí}®ÚõÐ ÞÇ÷_Æ#=Y}fÏÓMà¨}~||ªÚõÐê¾ïÞótó\Ñ÷ȉôÌìéj×CO4¿‡í³ÑïÆïÇî¸å7ñ&óÚû­ß~obB½ßOÜ>³çéê®{¬nÝq_õ±û6?ÃÏíOô~kŸ´kÈt¯^íáÅjfv®Ú½gïÕkÿ“WÇ €Èßkí[&ffçÌÌ-nÿ /V»>ùx påÏÉóeõQÚÿ;ïùDó½<öÙ–ã¥íÒ¹¥s'Óíùo@c¬w.žy~Ÿú›îÞ³wÁy çäoÃãÕƒ‡«Gûlø[Ð~xytÁy¢c*¹ܱ„ûîØ²ùó½Ïµì‹õô{0Ε…€+Û§÷Ÿªyì³ÍïŽöÿJŸx7Tº*#ˆyksoE:ÍÆ€0{•¡ûÌ»«ñt3'á ~s~öù}Õ]÷ÑtW³B®LÀé=4®ljl[0?>>Õ94ÿû_.ÚÜðn?×bÿ /ªãÉrkã =÷ÈcÿE=_Z?¤ã£ý§stó¶»›çæÙç÷µl‡ÎÝ7•ïæç–ÞïÝkn¼£¹Ÿô›ÞyÏ'œ'zî>Zì½åîêæ[î^pþøö>Ò O¨çó3⺺ú;¿Ôr Ðvø9‰BŽ%|ûò|ÌÌεÌyøu7pã æ3´mºGè¤÷xy´y~dŸ°€§uí!V ‹Q$3g‰=öuÊ¥´*ÊOJ¯ùÐÑSN9’à¡nÊ%mù{ŸUÁ}—¼1ÛÆod\ÁQ›À[“WšøÊc7ošK@Ee>”Â)ÏŸDós§Õ*q€Ç+úMøqK@é1.ÚïFßÿ±ûn9.ºäoBƒ’õ~y~è¼IÀBמ¾|0•Û§mñëŽ_»†é˜å*·µOtlÚ¹ç箘#@ßîy³ö‘ŽUž7Ö¿Æ&¶^GýÜÒ:«^Ž[ðš3ÝÎÐݺã¾&j||ª9I]¸`V/å’®Uºòkyÿ /V7ÞQ ÜxGË„ž¾KŽ+TïÆ÷ú­¬ƒãÛ²RÞ´t8ÐѤžŸ/šðó篛§Å=æYõy+å’ØÅl»{ÁïDßË™¾W{ÿGn¹[¾ôÝò3ÍûÜ-w«¯Ñç´ã–ÏÓ5pÃwT÷ÝÿïÔß4s/£:{ï|ðï¥ëHÎ+¼<ª^w|ƒoŸƒHþÛÍÌΩçÛÀwàf @çÖÐqÂI3×Ò.ûÐit¥%ê­ªv+ Óäúi"(švµÒIûÂo\4©•NÍKmfötµ{ÏÓ꯴~Nªñ¦ŠÙ~å¦þÄ‚}” ‘¾‡&|p¡çøäb×CO¨üGÞ½óDÊR@çùÒÑg$ºáÆÛÕßÿ/ö>Û’þâ]3³§Uàª^y®øñ{×0}‡Ø-¬'èIàE§Î›µÐa-~Ð$E«µRIévÐiÌ)bq¥b1t½è4p¶X€ÎòY£‰/ÿìÌìÜ‚{Ó­;î«vïÙ[$ A + ´Òá:èøgøþ[¨:>>UíúäãÕ Æ½ŸïSTWkÕÐy€Ž‹€hß¿”€®¤n˜ö¥äºë$ £ç—Úѽ€ÎR¹ÌzÑ­(•KY@¨Q–½ZC× €ÎûìøøTõìóûZDQn6RlJ&´!ÕÀw4Y<ÚORµnÐ<5’³zœm“¦³<8P#A¾oj³õÖïF¿ íï³_Þß4·ºR`rÅx¿Ùøï:™Ö:ª·ì »¢$÷d¨­sÞQjy– Ð]@>‘r L“±VX%S700°ª}èºÐÉqe×CO´hdAÝ÷|ÂV:\§]U]I—ßÿ‹Mh „E`ç†wY©G{²zæù}Õ3Ïïkf‚h w¯Ý®ˆsE`’€Ü#=Y=µ÷¹ê™ç÷5Mæ—Ðeýh—ÐyVˆ• è2¦â¼žÎSîïk@g¥ZÊ×-v®Å ÐY“ÚðiÞÌ{½3<+Ǫ羽Úû\õÈcOš©i>iB-FÀ¬tIÚvÀ±´Ð»îy°i=õ ³~7ï÷” ö%»Š©¥/¶3¨Ž+ƒ¤L©Ô€1?«†G^[üz‘ý„¶™ ©{Þ¬ík)™t¨Ÿ[Z@§¸H5¹Ñh¬½€îêö¬¾U’Uðé‚ÅšãÎbš—×I@·ð¾ñ¬z.,°ãÕty5t#yœ‰Se%îb™Åt.3)¸ZJetÝu ÐyVˆ• èxê¾g*®1saÕ÷)—š²eƶ ß:‰ íYÂļqà´{ÏÓ*°X„×NIÎómØ“æ½Õ 7ÞÞ\ýÔÀùE“r úh›»ÿáÔDDî?ß79€ÎÎΩÏúÝ,ár¤íhƒ’\ÕwVÇ ˜Èóo­2óíspKƒ¤6) ÀË¿Ÿ®QmŸfgçÔó!¯!®¸©í' ÍÔ=oZ­ ¶ü;:èˆÑD,  ãÊ•Qý¥dRZÍJK¹Ô ®r©1k´]  ´û>MÒåDùµƒ‡l[³$¯iÇÒ @÷ÔÞçªÝ{öªÀC;O£s£-vnWT¯Š· ±RÛˆ Ô&öJ´ú;:—rP²F2 ž}w #¯@9Hò‚|.vBÛ‘çŸ ÛÐõÂs¹Ÿ´n¼ÝܾT7¥ëá3{žn~dz_Þ¯oŸˆy“ûdùÐYv ž=E»çÍÚÇN:ÔÏ-- ³, $¸ãæãô¸Ÿ:šìîúä*€¢Éó3_ÞײݦÊ廂ôúø¦šŒÛG ñ™=O·”SßÒ@„ô2Ó, øö­t¸N:nCçifv®y¼ ï_·Üé8Üºã¾æ8H†ÝšEÎÌì\‹_ߟï}®úó½Ï]ñLÛvwqÊ%¿'Ò÷ÓïFß¿X€ŽØ¸góEÇ×K~4UýùÞçš©©üÚ{ŠÙ-xytÁug‰¥µ è<« ÄÊt^Êed.._ß2tÒª@«›³€\?º×nN”5@"‹µåövïyºÅ3Ž‹h,ÿ.j”ò¨}/PêÔÏÉI„v¶&íë(AkÞ*MÒµQú¼e+aùàÉý倈·ÏìyÚ _{á%õ3wÝó z>´ß;2'oBÞ,ß7ï:±ì ¬}ÒVg­~BûÈU/9X—¿íbž·N:©¨Ÿ[:@788¸vÇŽ×LNN6š•"C¯ ­Þ¸qãÚ~bè¸G6JÜhÛ|{ŸVúËïÏ/í»øýâ/ĸbùÐi– ¼t¸N:MÔÅ»7o¦&4òic,¶R¯ÇǧT¡²ñMÕE‘óúÍ3årfvNŒÑµ¡-þjûoÍg:è<« ÄÊtkhiüc·¢EQ´ƒçÏk1?ÁÝè^;xØÄhµI$òì—÷«7¹×n ^h€Žª§ö>W=µ÷¹0uàÀË£Õî=O7S0­z)É RÊ6©ÏÔ4yççÀË£aí}^Û_EñÂû ¬}#vJ~Æ;:W”IÇå}fvv®å3™c¹’*äÿ†ü¼f?Sz”îStÈßèk/¼´äçÍÚÇ™ÙÓM6<ú êç–ÐQ %Õ?P}œwäèùF£Ñµ>t¯ï¯×nîÿS{Ÿsù¹Ó¼Úä9óö‰~+éa§1tÞµ°ð·—¥Ï'ë{¬óGçà fÙ½goµÿ…ݱ„¶E¿C9•5ŸŸñ¬2tˉcJA]Õë)—^p³w[ ÝR†¦¸Ø¡ÕŸñ9+j@¬„ 4غ~ˆz€ŽÆÁÁÁµrü ÿe}D£ÑXÝ­ ÝRF‰hH§‚X-­†m×C§½Ìzñ\ïÞ³WÄ„AyqqƒÝ`W€°g,î±u+ÐIÚ²×DQúÐݪ¬ò›"˜âjܼínÔÏ- k4«‡††Vk@Ž¿‡ŒŒ¬ [@·Ýñþìçt8^óvàåÑjfv®É€iõ‡ˆÎ‡g•XÙ€.²,à¦á–ýZ_‹{Å>’› [z@G¢$uë爕T?)ì«qùòeõù|év8 ã N[QåÌÜäää*bò¤ÊevŸ._¾Üò^ë1VJèÌìœùZ¿ÄSJm3µ¿@ÆË²]{:.œ¥\J€W¢€Ù€Îw‰”Kè=@gœ:àŽ¶wùòå ;kœ‘X588¸vhhhõàààZbó¨†NžÑ~—€O‚¯‹êÄÒ:)ˆ¢ùÎIœ²¢l 4k­ 0ëE@‡@ Ý Þ$c¥1XÚ{¼÷iï瀎T+ ÔñVIácËäääªÁÁÁµ\…ïƒæ´ýµŽ@ ½è4Û “D)—Q©YÏ:͇NÒ“P@‡@ Ý æ,ç³@Y ÐmܸqíÆ×Rz%8ÉÒÉ688èÚXà,bïè¢w]&ÝR»ŒdߺH &# †@ ºÌñç2i•Þ{¼ms: Ô¬U™Ži¥\ÊïÏ4y<è=@—©¡Ó„³ ®êcñHé)—Ñ{€. v25h–§\nܸq­ÇÆÑkþˆÍÓ:OÈi•ÑŸ€Ž§Zz ÎK»\Q€ÎB· £“ @‡@ Ý ê2 ÍbܬÇÖkÒX\ÖËq:þîIçº(åÒz{Ñ›€Nú•F>tVÝŠbèä‰à'¶¢bô»¯W_{áEœˆB@§$ $eŸ¶íÉÉéêÍ7|qãÆkyº¥dæ8sG¯kÆâ!– h C ^üýw_«¾þÿŽàDt! Ë°s¥5s}©r黨ø)—b©ã›ßúûêùÿñUœh•€º¬…¤¬:ÉÐÑX¡º¡¡¡°g1t‘×\¤t‰@ WzÐeR-3v}i,ž9ÀˆƒÊ%ÀÀ»ü@Î^ ‰˜­¨VÎú è¤INKäç3*—mãÊÊt‘0Š%òXâIWõ C§YðC:·{]†¡ó€\zÀNS¹$Çÿ µ9bçFFFÖX¢(³XÇš@ 0®ô ‹Päs3×× wpZ¡¡ì^}õõèÞ¥rÞóÐ+~Úó¨¢à€nhhhõàààÚÑÑÑkè1)_à#Û|š±¸wŒÑ_9q¥ÿÅÒ•2s}#Š¢I|òâÂLý:wù]ÄÀYÿkàÌûŽÌç ÐqÇÙ9J«ä¦ãCCC«wìØq ™‘C—UÙô@)T.Æ•Þt\Q?è,cñH0¥/gU::wù@]]–*cK@íâÅ‹î{øë\århh¨ Öxº%géäñ:»#G¿têÔ©–ï£ï¨ªÊÝŸ‹/V/^\ð9:q¥÷v\ ÅGɤ[öuÊ¥ÆÒ¡C,vŒOU›Ûª]=±bŽùc÷?\mjl«fgç¼öµ^ªžýò~õ5Š/V»z¢ºëž«G{²Ÿ ¿svv®zöËû«g¿¼_}¾×jÖwxy´zä±'«Ýÿpõ±ûvßËãÙ/ï/: ¼Uh.ßã9 zßá©\¾ùæ‘/+G¬ÛÈÈÈš¡¡¡Õ7n\;88¸vrrrÕÈÈÈÎàQÓjè2û‘­­C¬¼xæù}զƶ굃‡WÜ1ÿháýtÿ /VÏ<¿¯š Æ–Gûlu×=V÷ÝÿpõÌ—÷¥¿×Úöß½<Ú|]k^U·y||ªÚ½goußý¿;N|¶:þ£xl)9Œ+Ý è²þs\dEÙD@β-°j舯½ðRµ©±­zöù}]¹3³§«Ý{žîèþ ÜxGu×=.¶wÝó`µ©±­ÚÔØfr»z¢ùž›·ÝÝ|ü™=O›ß÷ÚÁÃ-ïµö‰^ךwïÙÛ|}àÆ;šÛ¸yÛÝæ$jvv®yœü3Ñ5€w!¸óþ÷€g°4æÞo±bĈÑóããSM†Ž¥Xr?:bð×’ ¥`9zü¥“'O¥÷3néX+3î»ÿªl»»k÷ïÀË£Õî={UðÕÉcž™«î{wÑ[øýüæ[®Ž»>i/¶ŸªnÝq_ó½Ú±Üwÿ¹cË®O>®,øí«nxwlã„7Ö•Æ•ît^ª¥–E £¬•K+"@:D§â‘Çž¼2ŒOuåþƒ(XÝxíàájSc[õÈcO¶ ì Yƒ. V»z¢ÉàO¹Ÿyjïs E-65¶U»ÿáêÀË£j“Œá³_ÞßÜ_þ½Ï>¿¯¸ñŽê†oWS¤<öds›pZ@°—ÞŒêbÄ&µl²Œ–=vŒ:θhãlÝÈÈÈô8àã5tÄ4@§L.å1 Vn Üx‡ F–;è~n¬Nó—G›À†îÿÚ÷³÷;;îk‚²ññ©&Ô@ÔS{Ÿ«nxw\¡mk€îÎ{>Q}äÝqBkrœ8þî˜;pãÕ×^x±e,&ðøÔÞç:r t½èdº¥V6–5¯ú…¡Ó”a4oØ 3nÝq_us¯¢vТA•£×n9èÒ~ܼíîàêÀË£ê>Ò¶îºçÁàgãngåSmKm´?»ÿaó¬ÏXç¹—ÞŒ¤¾ôJ”,=…Jɸi@H~_–“Ûš˜˜\è¬ ®^GtôÕÚQM1t%àÕÚ_É "V^Ðý¤“`©Ûaºí;î+?i?ŸUR%­ý©s tÝ è<ÿ9äYed} è8rõR0µ\Uy‚»1år||ªzä±'› á®{4k†JÞOõ>ããSÕ³_Þ_Ýuσխ;îk>Ç·uó¶»›¯YuPTÅßÛ †êÙ/ï¯>vÿéíÎÎÎUŸÙóô‚c×öy÷ž§›ÇCŸ¹uÇ} ÎÏìì\uàåÑæ>Dçföô‚ú9o[Oí}Î<§´owÝó`óý^mVæ·§Ú°MmÕ 7Þ^íz艿«u­õs»÷<ÝÂVY€Ž€Ÿ¶2YUU3‘/3 Âdkèí·ö~ Ø$à»áÆÛ[ÎÕî=O»©•ÚgzmàµR!³ì\ÆS­„©#`#Áõ%µj´Í‰‰É:n]Àkêxí½F¯k)—A–¥¨Ÿ;>>U=òØg¯ôñ[®ôñg¾l×"Yï×…]Ÿ|¼š™«žy~_uç=Ÿ¸rßþäãÍZ!ÚÖÍ·ÜÝ|mÆW>ùxË{w ï™ç÷U÷Ýÿpj»3³sÕî={Sçj÷ž½Õ#=Ùò>®Ðù¡c£} ûšW öéw3?Z€Â'oþ»÷ìmžoë÷‘ç•ö/ó~ï|½vðps{´ˆÅ÷Íû=½zÀ]=^ ÜxGËù½ïþÇÆÐY p¼q€µë¡Ç[²L<@7pãîX¡½Ÿ‡õÛòã¨s t½ è¤( tV®ïR.¥* 왊så™ncèÆÇ§š´?ÝtiË ~S;Ÿ&Ù»z¢YÿD7cbVn¼cÁv´U)º±ð÷Sž÷×^x©öñ󺤻îyÐÝ.gkä>ß¼íî ˆ¶Eçáæmw·°,ô<¥÷içÓ‘üh[CÅÇú}¬kå®{l‚k .?ön1¶<¯Zº#m‡¾×:fÛ|_´kMº(ƒ˜ö:e3³§UV-ZÙ}íàáêÀË£æäÞï ÙÐyãÛОË{/¼žt~Tÿæ¥?Z,iœ¡òX½: ˜TžÔR.©nŽR/¹ÊÈÈÈþ¾¡¡¡Õ‡ÇÞjaè´cÉžN2t¯<ܬå¹uÇ}WÒÇn±Çïý÷‰É&M°wïÙ[ ÜxG`Ð}‹¶uó-w·l'Wî¼çÍ ¶ÅtdƒÒÕävn¼cA?>>>ÕdIä>ß¼íî ðÎ{>QݼíîæwÜ|ËÝÕͷܽàüìáEóü[ Nc…¨^‹ÆqÚžW›Eãÿ~;´tNþ;ìúäã-çÎ׫-8Ž;ïùDËâ›¶z¿µ¨wó-w· ®,@GÇhm—Î?prÜòÿìø¦š©–VXYòÜðý©s tÝ è2 ÎFé{cqy€šÜ§}Vë6†Ž&‹ÖD˜ƒ¯îˆÞÏoîÈð/Àå=ݘù ÇSÎøv`XìDZm•·]:vÉ”Ðvä@HçöÖ÷¹uQ7Þ±à|ÒkÚ`I皟#¾-¹Úoã}Ç_ì}Vˆ%“zžƒ—rIû#ëy­~. j4Ncð¼´I ÐÑg¿öÂK-â) ŽÒPiÒÃ&õ +hPÖ˜Â^dè<Ÿ7/Ͳ”)«óÞ´E•ƒ:n[ …P¬4Lþ^b訆Nh±Ž3{íMTeøtseŸ h2÷Aš`ßÊj~üqeNWè¾ò±ØE÷-Õ¬q…0åvéØ%€´Æ:·Ùv· èüÜP8®P –ÜÚÖïˆÅ¶ññ©&XâßCÛ‘ûÇë²ø=žÞßýÿN]@”Ço¥\ÎÌÎ…¿çÂ…„C!x·Ý§ƒÅB:.e³Ýñ¦Šõã-à™Æí÷£ëȺfId…‹©Ô=ºîtžÌŒPúÐyb(V ¼nfè´É.±@|¢KXmb=3{º™®' 0(eP[MÒ&§´¡ ›»µÂä1fÚñÿÅÞg›5Tü|X슕º—aV´mÎÌžn‚Jí»ä¹ó¶E@T¯.Ëb¶´Hð<;;WO-D-ðâýžr;8ÕtVkVÐQ*äÀwT»z¢zöËû«¯½ðRs_n¸ñöÇHû£¥Oò )¿þ)¥Ò /­´—º:B#Ù4H $f¾‹³XÚ{¼×$H*—ä$x#%ËÁÁÁµ4žð×¹mÅ"JÖÍK-íè¸ò£)l\ío{›ÏQÍÒ#ýå>8WÝyÏ'ĸ¢× ñ ½=®ì[°m?#æÂWn¹Û[Oí}¶ºóžO4_#Ä!Ñ&ü«ÃË:Ÿ¸±¤û=%Fú=3¿õýÚ6¼ëÈt€šsgO1Ót^mßoÏú-éœÐçŸÚû\uàåÑꩽϙŒ£ÆÀqœ¶ÇÏOÝc ë~@'$›d©ØŠtÙÕèL-õ²Ûm hr®1CS:ɦAB»ÑÑ÷J†‚ÔÿdÓÒØsÚk,òçxÊ%©Zr–Žþrï9uTCÇS.-p›h;àvïÙÛâiÕ:®ìMk‚mÕe]é¸Bß«5¬ Nù~—œ/Úf) ²ØPÈé–Ö§›o¹ÛçÐŽyÿ /6Á¥xÞwÿÃÕ~&¿Ÿt¯<¼`;– Q/•ß=ŸVÊR:è² ’ŸZ0FÜxGõ{Ÿk.6h)—Ö1Ðgèz‡¡Ë¤[J'Y»ÅÐÕ±- *´Û§xjïsÍ´1šXj ]VY²“€î†o7Y7Úg~S·¼[äÀÝÌKgIÚt+¨ÕÏ•::OÚy–£•Â9>~e¥‹¢Ü¬Ô-DƒÙøøT3E‘oG«ŸŒÝ'ÜÛöé0³. ‹~MDE»Î¢~×¢(–h‡ÅÜ•°zu€/ ʼïñÒ-åv,Q>‘j–ÄÜq“ñ7®%Q9”ç°äÜ´=®ÜÒ:®<óü¾jÿ /VO½[Ÿ«”줶“€nàÆ;LÖöùj=´ãJÐñq% è,†LDÄYcµèˆélÐñóGJš–èJƶ€ÇøvdZ«wÌ@¥åf®…º€N».äB=-4.kŸ©{ t½è4UK­–.ëE×ó dß$3§ ¢hÖÝè<Õ=ÁŠÒ ÐE5Du¢Ô'-b´4™, ³Î§U—§‹f½¢±2]6l2Ì•(Ôñ¡ãbr?"%Óȶà3ÆqD žèyìIw°¦mK ë¥Žjé•Ñ ëÎ^tYónžö(–U;æ±jP‚´RFŒ>'}è¨Ia戥ӌÅëßb˜‹_MWôÆ•½ X‚ü¸Ò@GÀ£Žð‰Çk+û\&†ßÿ²€Î:Ÿš`”î—çÔJùÖŽ7)ÛßÍ\ˆÎ;WUÖ¼Ü²× 7Ö–Çü‘„—k]Û‚ˆýòÎYOXçPËä Bë¼jÇQ÷èzÐÉ’0ÉΕXTý’r©Q“ÒmÝJ·ì6QOä„&È|Bï™køN:Oød||ªÚ½çéZ&£–§ƔDÇ®yew>å@jÝ|K·ÅEW4€!À™ÙÓÕî=O«€QÿôZªäî=O«¿%±‚Ú5±ÂÖµæ§ö}%€IS÷ŒŽŸöE;ºÎ%ø¤ºIí\R±Äpz Ðyâ"Öósf±i{e½—3l¸Ìˆ¢ð÷I•KξQݱuÄÒMNN®â ]ÄFi¢˜¶+rUääIs‚Èwo=®Ž+tÞ¸r||ªÚ½go­q…&éú¸Ò:©ŽŽ]Y@çO d¤t¿<§Öñh>e6´ß_û=÷¿ðbµ{Ï^•±Óêñè;%Èxíàas;Ú¢ÁÍ·ÜmŠÑdòGÞý}Ž+¦Ü™ ÐÑ9´"53ðOjÖÞïž9†l»Æâ=è²ÆâšHF¥o|è¬ú¹lºe·1t4Q¼áÆÛ›7+2ަ•1ÉÐpoµ×n “Ф—ßd;èhRNƒ/}ï³_Þ_ݼíÊͨŽÁ8 ¦$ÎAB+\üC »ÿá–c'ðóã\E „TµóÉkåhµ H鶪ªÕžàÀË£Í÷P‘ ¶ÃÊùö¥x —àç©t^>³çéƒyMRšæÖa;é8¹}ßïèÚ‰|èèúáÏgÏyU]­cµü 9 ú±ûn9*Ž·Ž¡×]&žmÇ3 ψ¨pÀ#Á÷ÝÐ$@GlWº$ß9@áé˜Üh\¦\FçÓ£J·¤Ú$~ÿhªút˸²WØ’˜ “h’þtRŒcfv®šy7U&ãã?jo\yæËûšB+4áþˆ¡PÜW~ä+Y@G^lÑùŒ¤ûi[7Þa?O\œã3{žV¿Ÿ¿ŸŸ¯« ˆsÌSõc*عëž«×n‚ ¾ºîè÷¼áÆ;ZÎ;sÆÃÖt”¶ÉýgfçZƸ øWÀ?‡tŒã?ºjý Á(KÑ®gëH¨HƒuýÐu/ Ë¢ÈtKÉØõ5C§¥Yʺ¹Œÿèn³-  ¦h°Rî4a ºáK Ñ)@ÇY0í{묢òã×¶Ë- ¢c·nz%)—Ú>,¬xÚ¬=(Ý–\íÔÄ<#òè·×¶ÍÁ›%Âó…åóŒ¸3×D²edɽ”ÆgŸßל¤fΉwÎ-0G×mù=šB/ ¼›d1NÕÊ(JPh2Ë¢@Û³¬&'§«±£Ç¾@B'œ©£4Ëáááuòy2ç¢(% x1kç¼kü#ïN´5@73;ל¨j‚Ú»]@G¬ÎGnÑïiYÕM-žÚû¬ºÝ»îyP¼—Œ+%)—Ú>ÈmFÒý´ßÖojÙÏXçUŽÖ=Ñ:_|Û\äúËý¤ïˤÛF)¬Ö¾gÆ-/=Õ:‡¤~©eÖHq¯µs tÝËÐeU.K\ß2tSºnµ-ŸªžÚû\µ{ÏÓÕ×^x©š«ffO7Yk’>cIÏSN·öšƒàûâIâí…—ªÝ{žn¦YÎv þÄ9(0ˆü|y²ûtüá^w´Ú6­ú¹h[E"'Ùã¿R¸þtxüüÜZ©šÞy$ë„Ì*ªw­ñï{ä±'«]=QíÞ³7ÍêJáëüízè‰j×CO˜¿ŸüÌî=O}†Î Cæ3Ý>ðfjÖ¶Ž{Sï¿:íMCÏ<¿oÁï9ïÑ1kç;Ú÷G{²ÚõÉÇ«G{2½Èý–RK¶Ý>ùxµë“§Ç–’c ë^†.Û<¡Ç¾tCç™÷u;C‡X¾ÈÖ‡E«Ïu¶ÕçÑ;oÆ;.#XRR·¥CjŸ±”.-Ð(Á“Qüÿññ©jìè±/lÙ²eÕË ¯#VŽ@ÛðððºF£±š”/éý###k¸(Š„å¾xÏóz:D¯Þ7O+'Rz¬g³P*nÕíAõduLãtÝ èJT.K\_2tž¤gÖX€Q°xõsý ~nÝqŸk¨XÞWcr<–'ª‹Ë¼nmÇûž¥WjûáÕïñ}— i||ªÉÐ37<<¼nttôš-[¶¬#ÇS. è ­æ Wÿ=‹Eô? £0/½´ß¥ß¶“R‹q€®]£ÑX:‹‘+©£ë;@g1t^êe·¦\"ºÐQƒ•Ño€Ž{2uˆÅx=O¸ ðFäv3¢$ѶµmfêÛä÷KేëÅÁSUUM@G @>™œœ\Eé—TCGïÓ'ô¢©Yj€±2ÝkWÏ85¸ýè(U@×o€.R¹”Jý’ ÊzÑUýTC'Qn‰±8:±T1??_\¤±lãå'볨ʨBfëØJØ?‹eóØ«LMšg¹@ÿS ¥PnÙ²eÝÆ×nÙ²eE¡×‰ã¬T¹Ô€£H-°‡@ Vüô§ç;RgŠè< Ëˆ¡ð¿VYY_:iÄgý•ì?Á`èD·F `óR*µç½”E ¬iL˜ö> X2 /›öºŒÈˆ÷:¯¡£Æ­ ¸á8zFc5 Ë¤[jåb+FåÒRÑ€\äE@‡@ ºÌEÀÎDÉ€3ù> ¸E5išˆŠöÖq”¤IF-Sñ¬p ¥\NNN®âõrÃÃÃë&''Wq¥KvT[ÇS.Oœ84É|Ð!D:®×‘M·Ô2WŒÊ¥…d#P†@t; óêà깑KPDûNþXKѤ¿ûæÕY©•ž@Jdw ?O)—T?GÌ©Xˆ#ÖŽ×ÚŒŒ¬!Û‚wÞù‰ H-Àl™¬Ð!DïºÌI–NÓYQ*—–8Šèx‘"DQD¯ºH‘2ãgÕmy"^Ú`&=Ô«ÑÓ¾WÛ¿è»=VÑcÆ(å’8â×6Õ;wî\?88¸–ü騆nppp퇎6]¦0#Ö@‡@ ý è¢T˾fè2us™:::Ñ `N‚¯Ô•ZD ([ÇýÒzJ— $ð¦½çøøDS…šL­´ž§ç¸mÆf›•>š‚É‚[Liµ‘Zª¬ç(7¹ ÁA·@PǦÀ@t Ë*]zY‡+Ž¡ó;«† è`ç±–…OÖå=k^ö¢Ú¸ CW’ZÂðYßA¢(###kvîܹž§[>ðÀ×nÙ²eÝÎ;×[·yóæõ###kÜmÞ¼yý‡Ž¾4=}¢ 9€¼páB #¨Mmÿ4àã§´Eµz‹‡:¬°¼>3 ™my‹!±œ€.Ëн§¨ú©†®Ô²>t¢—ÀœöXN^5`§½Gs–O2NÐó?"“RûOì$béè9b膇‡×‘uÁÎ;×SÍ·ÁÁÁµÛ·o/<€›7o^O*—ò;$¸³ö£.‹'‘väo‰µ”ø F×Åf$,C{ëýt¢aô2¥uÁŠtžÁ8ŒÅD?€: äy6Q½T©)x¤©½Çú¬—º—jÈñl´ï °E€nûöíïݼyóú-[¶¬Û¾}û{Ií’€ÜàààZpÔƵ;wî\xì­—¦§O´8ù·cŠ€R&õ5²SжËëŒw¡¥rê]¿ò:öŽÅZàC ÝèÈEL—e¸"EQ"VÎJ» C ½èääX‚$í}øÓž‹§témC{Íë1rLÉÇ’5#@G`mpppíæÍ›×?ðÀ×rGÌ=sÃÃÃëÞ8t´EE‚9í\jÌÅ,fX½Há3SŸ ·x‚.QUo×n:gV<@ – ÐE5tÒº@#ª,ïí¾1T`r‰@ ú Ðyâ$ÌÑDÝšÄkÛ‹&Õ™÷d¥,H+a³4ð–Dá*—o¾yä‹<ðÀµÛ·oo£Ñ¸vË–-ëƵìHå¸vóæÍëé}”šùúƒm·ªªêüùó-ûÇkédõF@ÆU%ç\h¥i–¥ï‰>çm#³‚@ ËèJl 4‘”•r©¹ÔÁX@ô³&µÞ²õNÞD?ú> °qð˜1ÿŽŒ¿=‹“H‚¢‹/6A•ÇÐ}ÿÕ|é]«‚&¨Û¾}û{wîܹž@½N ÞöíÛßK¢(è.\¸P?~ÁwrÉßc;ùùøÖQÃŒ~ß(}•®“ #+²`ÏÚO­ÏÌ!ˆnt% ÎóÚîË”Ë(í’;«{ —P¹D ½è2Vrb›Ma”*˜ž Š„‘"£—ú—­…óÒ%ø¡ç8PÒjæ$¤”K®hÙh4®%¦Ž”/©Žnûöíï%°Guw$Š2??_]¸p¡ùW>ö€¥—ê±ÀʤÎzi•Y`g¥÷ÊëÉ]V*f†ñ˜C Ý è¼Ò/ ÓH=¾tòoÖ²)—¢W@]æ"ðÇ'ør»%ÖrҜӈD;äv"Á«®Œ7ìä{æçç[˜3²Ž=^½ùæ‘/nݺõ}ÃÃÃëHì„Ò, ¸íܹsým·Ýö ôÿöíÛß;22²fdddÍ?|ÿõ¿›ž>Q?¾šŸŸWÁåÅ‹MpGïãÇ 1‹¸³[$R“ÞÑu¦mG{o擞x™>€@ Ý貚×· FErgY@@ô*¨³^¤BY§>I~w4¡Î¨VfÀ©ì4µH^ƒÆgK@‹@Do¯¾ÿê¾´aÆë¨nŽƒ6J³|à®^GÏoذáºÍ›7¯ß°aÃuèæçç[À#<Þ8 ¤}“,£è,¶1+”÷,3—)ɲmž°Nt=Éþ‚@ Ýè2J—’‰[QÆâ–¬'>ÊY C Ý ä ðf=þ¢4Ø ¯ªÊ€^Ý'ÿœÅ[‹–@t Ó@œ…K$vɈ¡ôÊ¥&ñÉÕ/5Q~"QC‡@ z ÐY“bËDšO–#ÀÆ¿/ò4‹„8ê(Fi•Z½œ|Ÿ;ò1Oƒ”,Ýüü|uäèñêÛ¯üýsÜ~øÃcoüú¯WuÚØ]w]žxôÑêÄW¾R]˜œl”l^¾|9¬¯ãlwœ’y”€Éª‹¬$2i™·ì4¬ˆ,•Çp‡@ º Ðe­ <¦®¯m ¢œRK)—¢]†+adJ&ÑÞwEiqžBeƆÀ+ZŠ%Ou”Ì—Mô¾3ÿøÕÔ—¾T½÷Þª.€‹ÚÑ{ï]î4OSÉ0jåyá騚pI¤ŠýNYÁÌ…ÞÂ@´À¡EXN@—­¥³°ÍЍ¡“àÍò ó”.èD·9mlIÂ[Òð^’Ò<Ï3ïùÌcë»ùûè~,eþ3:Y«vîܹêüùóÕ¹s窓##ÕÄ£V‡¶m[4 §µcŸúTurlLŸ2}”ƒ{¡ÿ½;ÍË.“F[’ÙXÏ[`Ìcô2à€@t ãÀNÃ#ZæaIÚeÕo>t‘‡ƒæPC‡@ ºÌYÀÌ"±>§Ùp0•ñŸóØšR¯3 Ú"îÂÙF f5#u üjç³ÚΉüí²M^?ðËxâ!ÄRº¬º¥fÇV’vYõ‹±¸WCùÐÁ¶@t3 ËøyY\ k2nCþ™Èœ:ÃàY¬!š%A$|"eü%«url¬»ë®Ë½æ8[G)˜ÄÖ;w.ñêæ4¡+ÕÕûݼß3bwµkMÖtz×w´@‡@ ºÐe|èx]Øõ ³rL3'*—¢›Áœ ¬÷Zà,š,€‹êö¢–Mñêä8¸Ó˜:©â@ŽÀݹs窟¼új5vûíU¯9 ÔI`'lÆ›NóéãÂ2€óM=ö¶®/¢q^*f$æƒ@ Ë è¢TK­~N¦Z®x:MM†ºF£± èfP—Q¬ë3gMеIs$ˆbIØËÏHà!¥÷-¿9Y'ÛÙ³g›*–Ý\/—m‡¶m«~òê«f=9Éhr f½OÐpø:uŸ|a¡ôK‡@ ºÐÉú9ŽG<ÕþH³¯U4X¢t @‡@ Ú_‹ñyÉfXVrB¬Â(Í-ª¥Šäê#öƓ֧ÏiàBûàµegÏžm>GÌ\?€9 ê¬òAJô„cø9§ó+YOÏŠ€®Á:‚8™º»v("a”N»Ìg„è< ⻡r©ÕÍIpWba@‡@ ²“»¬‘±%D¢½_›–¤¡Õ Ð@ŽZT {“™èk¬’ÅÚi"!äœ;w®:96ÖW`Žƒº“ccÕ… ª3gδ¤`ÊÔS«‘ÿ¯ Òxõtž…Aô»{ ÙëÙcƒ£í[ýÏë—žpŒÌDÐe”-K€[ß:à4Z2ª£#*€@dÀœÔ<•H¨EÀÏóš“f™êhM#P˜DñR3­TN-:+ePó™Ó€]S¥‡kæ²5uçΫΞ=[={¶:wîÜeOÍ«ÏK±À_¶N.“º±z/ZàÈÚqX .ZÿÎl'bÈÄÊt˜“윬£[‘*—ÞÉÈ0tEA ó€]É„.;é,ñïâ-ÅÁ:uIËÔÑeT-Y}^ó¥9J·_·ÿ#º, “Ldçú–¡“@N(?xOõ>t"èJêä"Ãnë}™Ïf…P2‚ò=|Â,Ù/í.#|â±C²†‹§UJP7??_9s¦:sæLuîܹêÌ™3Kšjyâ+_©Î~ç;j[J`9vûíÕ™üGÕº§`JQëœk5vEµuÙôLëZ§kÍ»f½… yý:“BY·ÿ#ºÈ‡ŽÛªe2û6åRS¼ÌZÀ¶@”ºÌÄ0î¬íXÛ•2òÚãLÚ™79ÍŠ_x)—^m@±^#àAlœ>álÔÙ³g—<ÕòÂä¤y\˜œ\Ò}™þÜ窳gÏ6ëè¤ò%?—ò±õ—@^© J‰èIä]ç]·žZk‰ÂkÔG;ÕÿÇÐiFâÕ×)—ÔIt«¥XZutt"ê2@É›,zÎú¾hË]æs%¶^Z¥5‰÷R(y:Ÿöº}\–ÿüùóMfŽ, –:Õ±›Ý¡mÛT–Žûòñ¿²¾Ž~/­¦QþNÙ:ºlj¦ìY†ÚªÓì”±x©0Kô!ˆ• è8Ö(±.X‘*—ž_æ r‰@ JØ´ að¢Ia¦Ž®d‚kM¦3“sOåRkUU5Á‹h;\r_ªYûÄS/}êS+ÐK7;;· –ŽÔ?9¨óê-ƒwù>¯Ž2bâ"F-k«a¼¬/]Ʋn,”.tQº¥g..ÿ÷€]Õ/5tZê¥àèD@W'­«Dú\›Df'µôÉ„È×2ê˜Ùº8ëõHE‘?Gì‘rüò^;sæLuúôéeaçºÐKÇU/50,=ê,wËæ j%ì\Æç-“&Y§zýÚbíô@—sšÊŠ`èäjù§‘Â%T.DÌeÁžö¼6yÕ&‰ÑdÖSºÌ0 k‹YÑ$é3@Ž{ÉY ƒ9YKÇkçˆu:sæÌ²°sÝ舥;}útS,FÖÓq“q ž¥è‰ô¡Ó@]ò­Å€ºê–/ÆŒ8P¨Y}¸´ÿ#º C‹kÄUߦ\jÉ #¶€@ÔmxÓÞ)ýe'·Q:fF*>ÃÀY©—<]Òv^Úžæ;§¥VJñ¥V¶ìv@whÛ¶jvv®Å§ïüùó-)˜<••+ajÀZþ6cyÏÎ"è´>!™æ6Ü¥}»´ÿ#Dd,.I¨¨fnEØXŠ0ž]Áèèè55Ð!ˆÐi5àfM3@±DÜÄzoÀi“èÌĽĚ€{ qp #-ÝO:²+˜­Æ¿þõeóëF@G¾tgÏž­fgçªÓ§O7ÁÜÙ³g›ç—9.6cpÏr‚úìâ€ç_ȯAiEà]«žâªõ^ @Zý»NÿG t$ŠÂAE0Y^s…˾L¹ÔNDÄÐAå@”‚:kRhyËy“ÇÌÄU]ÑäÖ«³ËC ÔY“ýHá’Òùøkèãu_<…R —+ݲ›ݱO}ª:sæLuöìÙêôéÓÕéÓ§U³qÉÐI;‰Œg N²­Ö"@Æ›.]‘è¶HR·¶-RµÌô@×h4VK–Nb’H¥¯Åéà¢::íÄià€@”¹hò–ZÐ@Ÿ4øŽÔ'£Z; dj“ÔH¹0“VÉÿJq ._¾¼€%â@޳H¼6lvv®:´m’vyîܹjvv®šŸŸo:JS=wîœ*€b1rôjé±p³jí²FäÖB…v­zì^ÆÆ +JÔNÿG t˜ÓÄP¤HÔUý`,n·ƒq:³ŒÒ^fÂWê'U*µmðïÓ&Ìü»¥Ò`¤zÉ…2´º9μeŒÅ5€ÀÓ |ˆ# röìÙêäÈȲ¦nt”vÉAUÈÁ³4z×X¸ˆ™›W“i-lX‹Ykެéx¶?×éÿ€.#ˆÂ[6ÅrE‰¢”:ÔÐ!ˆÐÉÉZ4éË|Îû¿Äì;Ëàe·c1qÞä^kÚÿ’ã‚(\zŸ§ÎÎÎU³³³Õôç>@g´©/}©Y?Gµtæ.\¸Ðbi ©‘ZB6ž|©7a&¥R y‹úJÖ!?©Ûÿ¥ri¥]jY…}rYÇX è¨Ó&‚%?9ŒX·¬¹¸&v’Y±êæ¬ô: ÄÉz,ÎþHO4)Ð!åö ÐS733S½÷^:£ùøÇ›é©Ül\9Mí’§Yj¿q†©ÓÔO-AŒ°OœJüçJ¿§“ý@ÐIq+£Ð³)X¶íZÐ!ˆÌ•0h?‹¨ã»e±ru?mBÍ?£1+3Ìdã4á éF€ŽKíÛD,ÝéÓ§—µ~®ÛÝØí·70:úË´%¢1t’¹³@žw]xà/:ÐcïϦVÊþ•YX)éã%ý@Ðq`§™‰{^s+ÂXœ¤¦“aç r‰@ "@§2þZô~k¢ç.mbë½f±r–Є5!­cQ Å4$€ã,¼–‹?GàäìÙ³W˜§üÇeLÝèÞøõ_¯Îüã?V³³³ML —Ì8[ÇAžôÔêã,åK ¼EfäÚuÖŽÇœ÷|VQÓê×uû? ãXC¦QÊtË[Cg©\ZõsCG'€@dÀ\Iª—ܬ×25F¦!SC§M°ù¶"PÕÖii˜4h@ŽDQ8C7;;WM}ï{t‘0ÊØX  #–N ¤p¶Ž~/ ð¸¦ÅÐyæòžI½UOWâŸXzÍg˜»ÌÕíÿbe:ÉÎeLƽ2²¾ö¡óüç"::‘tr²g³ìçäD5ò–‹&Á™Én4Q•ŠšžHŠظԽ'®ÁY#îÈoŽ3t”B¸Ü —=èFFš2d]@i—ÐI@­Yxì«ga )¢Fb<ÙºÏèÚ9Þß¼E–vú¿ÄÊtVíœ&~âÕÏ­cq Øe­ 5Ð!k"–‘+ϤrE~VY6 tÂkÁRhÏdÚbo$3Ç=>þ|hœ9s¦:þ|5;;×r³³³Õ;ïü¤šúÒ—èJ—WÎÙ•óÆ ¤påK ê$¸ã¿'ˆ¢;tË\ÃV«Óg¬÷X l1ú?X™€.uxÓêêVŒ(J‰ª%stB›ZÏYÀÏpul «®©¤Vβ.i•–}O³$3ñ«us³M–îÔ©SÕŸ|€.èfffª™™™&#G©—tŽ Øq¦Ž ¡ðÇZ­\+í:õÔ+³ ‘7]¦ï-GÿG +Ðq©„¡“Z!+‡Î*ÔòR-–ÆâÂVÚ¤NûL´ÂoM#æÍš–Lp£I©dú´‰¹UgRK–NJäsvŽ ^ë5;;Ûl`è²)—³Í”Ë3gδøúq”3¥p“l¬ü]3æâÀ«›Rœ]À°aKúJ§ú¿·MÑ߀Nk\é²Ä†­owP—'ÅrÔÐ!rY[ÌÊ{©_U©Âe £—Q»,Q*ŒüÈ4ÖNkÜDœ§_’2ã™3gšLÝ©S§è jèfffšçŽÔ.©€æO2ªVŠ¥WS©žjž†Öu*,è3Öûµ×¬¾ãõÏ¥èÿbå:OåRff=¶û Ðq Ró£Ë¦Z¢†@d,øßìD®®å€¥øç¥¨yYkŸ-?°ˆqÑR+½É?—Å—6R&Ÿ«[^­›­fffèíÄW¾ÒL¹|矴ÔГ^€ü÷°l%<–ƒ;ëÊÔÓEõ£‘}AIñ@àRõ±²4× Æë‚ºª:^8¨‹GÀ Ð&pÖ-3áÓž/5I¶ dzìÅÂñÉo)+g±s#§ùšqÐ@ƒ‹¦pµ+lÝ@× ¶'GFª³ßùŽÚN|å+]±ä®ümaçè|sYëÈÙ:Ë@Üø¥ .Ë‚Y`ÊIñ„S²fá‹ÕÿÄÊtžÊe'ع¾E± ùÀÐ!ˆ:`N¾–­‰+()mÖ÷G¬†ÆHhisò3žàE&½’¿&ÅPΟ?ß6È3SýÜÉ“§ªŸ¼ú겦no?yõÕwUA¯X=0浉çÎkÚCHÑþœæ,AϺ ³H-tx}Ðcí´þ-†,Vÿ·¶@ V óÌÅeæ¡ÌFì{@g8¥ãô'Ð&dЋ„O¬íÊíÔ1R¶êެíj`ä46‡ àdÊ%¯›£z:J¹$»ª¡›™™h‹º“§ª“'O11™¹–TËsçÎ5}ÿø9—–VÊe¤l© «d®¯èzެ;$(ÌÖFé‘îÿ€.²+°4Aú>åÒuÙš:¤\"qÖÄM{O'T,5yö£d èy¢èY)q‘@J†¡ã`O¦\@8wî\uáÂ…–4@nY@é–ï¼ó“jff¦zûíÕØí·¸mì®».¿óÎOšà—R.9ëÉEh¤ßÿdk)¤zl±¶(õ Èeg2Š—èÿÖÂè_@×h4V[`ާ[rý®‘ø\èQª%O#„0Šè¾÷½êĉ“ÕÉ“§ªwÞùIKÊ%<˜% ãª—V½œfI‘ñ#ôØ: =åÊ:l¶|õKÑÿÄÊtšÇ.Zí\)À«z݇ÎJ·„±8¨ è2jtuX´`WWÅcì´ täVì,/:™fÉÙ!Jäê‹WQf›ÀäÔ©S͆::½~ŽR-IÝòôéÓMažÚJ úÌ™3 Äjxj¬ô¦ÓØØŒÉ|äièùÎi}3k î1zò3KÕÿÄÊtuY:ž’¹bT.5–ŽŸÔ¡C *9™Ë€BíùLØ´IjTo¤3ëy jtÉÞh¦á$p:J·¤ÇœU"û*333ÕŸ|rÙ€Óôç>ç¶åÚ¯‰G­¦§§[عӧO7ë (s@M ZK»ô-5P§±µÞv<¥K 4i¥ Ü›½Øý@¬ @'Uõ=~™[Q5tM™F C VxË;í3Ñ{²õ:ã݆—¢©ÕΕÔ8eüçx•LÕã9ÓÃ|Ä={¶™.(Ù¹'N.«Áø…ÉIóº¹09¹¬é–333ÕÌÌLó\ñD²‚ ñR%åKF‘¢6ÜÎ@ФxŒ\‰]A¦–N[À(±;Ðú]æ{:Õÿ½í ˆþtYÿ¹]Cg:•ãÏñ¼V:¢·Á˜%#î½Mì¢IW‰UÖ窎‡VV0 ܬ÷z¬‹åSÇS.yãì ò/‰¢œ:uÅcíí·OTGï½€îÝvôÞ{«éééêĉ“M G€˜ÛÛÉÓ]9k'.ù﫱w+§™ØG‹ò}Ö¢g”=€åù4z¯kÛítÿ—Ï—Üç¢ÅÑ}€.J¹´|è$¾Y ]ÆYÝK¹ C z Èe•éJ€`ô}¥ç%LCFùÒ›¸òmjßm ¡DbV½“L›ÓÄ1$ƒ'™8úŸX"Ü›<éx=ÝÛoŸ¨Nœ8YM}éKtLÝòĉ“Õ;ïü¤™rÉkéèü>}ºå\KCwΰò´YKEF‰Q䃼¦¬þƯq©³îíÖ³v²ÿgî9p˼@‡@t/ óêç,QÇҴ˪DQ¤Úe©jèˆÞt¸ñ^×¶•M}*eÿ¼í”øiYõrÄeÓ-¥÷œ%Œ"S4³ŒRñR“Èçi–çÏŸo¦›DãÄ8sæL³NŒ³t'OžZ–ÔËålã_ÿzóØÉl ¡Á8Ù+Çm xŠ%ÿ]< Î•L-†N»f¬kNZxFáuú„–‚õ™,˜«Óÿ3@/ºOE‚,¢û—)hÙH‘Ǿõ¡‹êçñ<é,•Cîg¦ £ð4?.¡O gꨎŽ9.ŒB)‡SSSÕÄÄä’Ö±-u›xôÑfš)A!@Gé–F@YŠ È4L­il§€™ŠG̱µØ@‘x^ÿô@×bõÿèþ“b™>Ñ=€Ž§\J@§Y®•ÖÎõ ÓR.eþi$Œ:¢÷@œÒêLØJE ´Ç%À³åÊvÒÑ"5ˬhŠn<ý²ªª5W 'U%kt|Ì6ÓIrŸ@ ) 255U«ÆîºërßÕÍÝu×åéééjbb² è(í’R/ ô £óGÀ™RX5fN«Ÿ£ôJbY3ÆáYÖÎ2§ë¨ÔP\^Ëô>­ßð×2ìV'ú´€¥Œg@+@Ñ}€®ÔƒÎ3ï{: ì´:0tDh2“Ye>kM¶2~rº(3šÈe€YÆ\\› [LœæC§‰iÐóR_²EàÍÎζ¤\ò”Bn_@€ŽÚÄÄdߺ±»îº|rl¬šššja爭äæëÜPœ@ ÌJ*—gΜiñ$æ”~ú}¹‡ ¿¼Z¹èÿ–N2tZJq–/­yëdÿÏxMf‡¼{Ñ=€.£ré1tYOºªŸR.5–ÎBÀôÙ<:nUÀýø¤eÁììlÓ®€R-éüRº%tls.í'<µÊh‘@kUU…~u€Ëô½¾Rb;ÐNÿ·ö×ÑBV‰]Xz@: è2é—}ÍÐi©—µ©)]‚¡C zäE¯•ˆÔQš‹öËsˆ&r%B)r;Vڛưh~`Y¯:m{Òº@ÖÌi g8ðhE™m‚;2'ù~ÞˆÉ"‘“##ÕØí·÷„iøø×¿^Ÿh2rÄÐMOOW'OžªÞ~ûD ˆ#ö’ŒØ ÌI ÌÙO™vÉë笔Yɼzl­U“¥aj€ÏJ—´„S<‰¡,vÿ×þzïõîKY±'±|€®Ñh¬¶¬ 8±|µ¹NHß:MÅó ³êéèˆÞoPó[éðHÝ®¤þ.RÝ˹‘y³„*2Þa–'Ð p Ó-9p ÆÁgæ¸ò%5ÎL‘0 g爭£”ÅããÕÔ÷¾×Õ¶>Z«ŽO,¦”fÉÕ-¹H W·äé–T‹HV<•Uº³gÏ.°šà)—™TÝ(íRŠ©x×h”B™ÊÞ'dŠg§ûVê{‡@ º ÐqçùÐE)—}ëC—DɶF£±€è @ç0oÕ½trM˜2*™Q§Æx@-•Ì2!×ÒÕ¬ôÉ(MÓµÐj¨$¨ã€Ž3A xÚ%½N n~~¾ J¸Øg¨¤H™˜˜¼ZO÷n›úÞ÷ºJ0åè½÷Vã_ÿzxÒ>sUKJ¹äŠž”rÉÍṫ¶¼nŽƒ9ùH–N‚r˾"䤚j‰ kF%cñQZǺýßqÙE!ë;¢»]¦–®n=]Õ)—š8J”f)Ñ2Ñ[ .óÞ ƒ¥}&«W²ÊÙxÒì ´XMX“…·$àëÔÚiLœTP$0Aõt\NŸX:b™xê%5¡ãfã†8kGàîøøD5õ¥/-k&¹ããM ÇÁœT±$fŽ+·, °Ëýüx="?·dóz:þ{ñ´Y^'i‰¡HEÔRë íúŒ€™µÀ“pÙmwªÿG@¬ä~f}€è-@§yh—*\öe Ì5Í:ˆ¢ ½ê2LZÖ×)#žbMäJ|¦xÈÚσ.š¤F‚žç—UWgÕHY5tüîa¦‰lÈF`Ž[ð::î¡&%ù БÚ# 'N¶X´°sâÿ‰‰Éjüë__²TÌCÛ¶UG>þñ&ãŽÓþs~|”nJVWº¹`Gç‘Ø7ðÈiÊ£<Ý’×Cfêæ4F×by£tË:Ö¥*°–8Ñböÿ:)âÙŒÑ[€N2t²Ž.ËÖõ ÓŠ ¹eÇÐÐ!½ä2"'Y0ºÒ4Në1M%¸Ë|Gf‚+AœeG1€Ž˜š¨ó÷p‰{Ë®€3DÄÔñ@ª÷â äH…Ò ‰©;qâdS$åÔ©«l·1 $AÝôôt³Æî‡O>ÙñtÌCÛ¶UGï½·úá“OV'ÇÆš !gæH…ÒD¹×ÕÏQŠ%¥˜r@GÀ–§¬rPÌÓY¹ÿgï$˜Ó€ž&ª“µ,ðÀ]I]¦.øY $‹Õÿ=p½›€;¢û†Q,M¾¯¡ÓœD´C‡@ô˜‹\©5AÉ$©¤ÏÚwšhZ5or2)S0=ï,mâË¿OcLäóžÊeÄÔiéw¼îJcäØ={¶ÅК³u¼æ‹žã~tÜs ±[”šH›rs@'ÓG¿ûzõ·ÿëÅÿ±qãÆöW¿ökÿæ;þðÿ×ý¯~øÃcYwpû­Õ‘¼úá“OVã_ÿzuxì‡ ¾çøøDË~q†ŽƒOª ”µrô˜˜9zž ŸpÍÁ²LÕ@7ÿ -çÍËÌ h‹ ²Y ¸•b¼Xý?£bë-^eÌÍ‘r‰@t “xCÃ%·XÊ–}©ri ôqðÌÆ¹„(Ñ›à.š|eÀ¡5Á*™4eWÞ³ia¥fãÚD5JkÓ@Îs^ÊÓ ôK^›ÅY žúÇ#ž&(Å>¸‰6óš:îOG銖¸ 9±s²¾ÿýƒM@÷|àŸnܸñŸQ»þúëÿ÷?ø›ÿ÷?ø›õk¿öox£ç7nÜøÏ^|éÀ·^;x¸e»ÄÀq&ÎúKu€Ä6SwêÔ©FâWÕ@¯ÚpAì,–Îr¼Þ1²*ÈÖÏ•¤^–ÔšFþŽ%–‹Õÿ#ÀçÝÏ" ˜ù Xz@1t–¹¸òú^åR3ä+Qº„( Ñ›@®ÄÏÍ›D•¬~g É-o¸H޽TÍÎÚ^fÒœU)Ô˜8 ÈÉZ:þ¼•ÊÇÙ9 ØñÚ°«ŒÔ\ KE,OI$$=ê&&&›ÀŽ˜±ééé@Ç›wÞë/¾tà[o¼9v‰³qô˜¾›3s$êÂkæè9®dyUÙs®©ðÉë gffš`Ž‹ŸpaÍH\2u€K£x °e/-«Œl ¦·€áõƒº‹)îÿÑ}¦îý,ZèB Ë è4:KEÖÌ­:K ÆRޱÒ-QC‡@ôÀ+I­ŒÔ.­ïªâ¬ï̦Eòêžl{v¢œñ¤ËxŒI pžHŠ¬ã¢š/^ûEÌ“”èçõcÜ“jÍH$…/-ÍñÔ©«ÀŽºë¯¿¾ÁÁÚMþð/sGÏs0÷|àŸCÇ¿ƒ ´pÅM®ÈÉ™8süø8CwUÙ²U(†³t\h†3uôûœ;w®å7“,*÷ ³€»–ŽiÕiVUå²pðzÓ‡?üËìè=üubèÞxsì’ÆÐñz>^7GL"N:úŸ˜ÇV1”Ù–ÔSnK@ŒœrĈ’8¬käÌœdô2Ö%fâQº¥·H‘M‹Œ>¯ -vÿ÷îm€Ë²x¢{gè8¨“MS´\Q€Î‹,¨X…:¢w@]ÉŠu‰'5i‹VÑ#ðv ª‹‹, ¬º¼Œ¢ ê²b(ü94æG«“b(\ȃ„?è ã¢)¼ÖŒ7ò8¸“éŽè¸xûÀ>ðO~‘3uäè1}†6î+ÇÅX8 $ÉÁœªà8ky•»Ò4SqbêHý’>)`cýVž0J¤zZRWj*Îß§õEm[Ú}Âu‹Ñÿ½ûXé63ìX^@çyÏIa‰c2‚(=¯r)T2u £×r‰@ôÓV¤#!ï3Y¯ªè;£tª¬Ze]q-%Ób<2ép‘ïœì¸uWºÔüé$;'Y<èˆÌÎÎ1º«fÚ¼ŽŽ§_ËEÞtÄØÐâFäÐ]ýõ ÉȀ㠎þ§÷¿øÒoûaKJ%8ªç#@É÷•X8-}´à͵ÔÉÑÿtލfŽ7²‡àÊ—;'Õ.=!O('SÇ™|^бÆn[̶Õg3À±ýßú?+Ú-:•úp"ˆ¥t^º¥f®¯•KMõRõÁ‡è@ù6E«Ù°Šžö%“Vå±l%êy“gykI»zÝ«cŠê笔;žzÉTW”BSºä,·ùùùf±rl¨¶Ž‹£pL2 ŸmaÄ`ñ”KÒÔKÇ<žryýõ×7^ùÎw¿yxì‡MàF Ž3\¤…j宦V¶Š½\sWS,¯Ú̶¤¡r0' Å%p¦´KþûhÖ–× æ÷V¸y€Në#Ù>ã<Ïâ`±úVù2³(KÑ€.R¸ÌجcqM%æ`[€@ô ‹Ò355ÞªyÆô×zÆ?.#öõÃò˜¹È×+ËŠx²ó–¹4±x’õ‘jŠãÀƒkL4fôSÇÅD,ëÅùÖC÷íWþþ9bÞÀmÚ´éú_øÅM›6]O¯oÚ´ézr<åòÈÑã XAbè$cÈAÙ.\M£œm©—ã¾sWÎÉló¸ ÀÐåõˆ’ãçžÿV2õ’: Ôi,–Êk™ÙË>b¥\–Z”ö+K³Sý¿Du·dQÊ‚by]£ÑXQ¸ô^ÔUýèC§;ˆ¢ ý î"éðìçK@žöï½¥©“VMœæ¯ÕâeŒ›=ÖÍJ»,{(hi—ZÊ%:y¼nŒÛ\uWåû9¨ãiŒqåKPÓÓÓÕoŽ]úÛÿõâÿØ´iÓõÜnúð‡yÓ¦M×cG 3xüÿW¾óÝo¾ñæØ%.pÂÅYNœ8Ù’ZIûÂS09åÊžWëçZÎz¼‘Î#oü·áÀÙcç4àžeá<+ ‹!ÖÒ)5à•ME¶€“U·Xýßcæ¼íekïD÷1t–mAT*¶"R.½âÁRSqøÐ!½ èJ…¼íy@°dÒTb_`M(=(_Ó&·ÖäÙcñ¼ôKK–Þ²-J—RES¼äÿÈàõ_œ}â`…3YÄâqàFŒœ%–BÏŸÏ‹)—D÷ƒ8o"T2¡‰ädzJš¥Ÿ§“T³ŽÉ€Q­q€™eY²©—R Åò¢“@‹wp`Çýè¼3uÜqoº¹f‹ Šp@E`Ò3ßxsìÒ·_ùûç8#'Ù¸›>üá_&€Gƒ?ª¡#K®®)Ág渧ž4Pçj–ÔòZB~ž¸‘¸Aá)®2Å’ƒ=ù›D ®Z9Ñ+©™Ë,öHEË,SשþŸI›Ì˜•×’biÇÎi>tÒ?{ÅØdêè¸ÇƒæÀÐ!½èêø4•Š x+éYáƒÌD­ÅÍŒ ¦69&àÇ'±YKK%3ª­’Ö–HŠ”Î瀄À¯〦U$„{Ô]B<“* ®8 #ÆÕÌÑßÛn»í(“Þ;00ð‹¯|ç»ß|ëØx +hÕóÉÔЫೕ…ã)¥\è„@-ºÄIàLÞ€Vš%N¾ÎoydØ;K SÖÈEéÆÀ³Þ“íK‹ÝÿK®ê,f!ˆîtÒXܪ¡ÓÔ.K¢êÛ‚È„;¤\"½ ê¼ÉV`˜~ÙÉ[V”Åc첞tž»pÐ+I½ŒT/­ú9ÏP\ uÐÏóz0zŸdª®2v³ªAk­Ùì;€™™™& ã ¥_ò´KÞÈ üâm·Ýö èøö‰ äÏ-qWÓEy­­óóóÍÇt̼fŽÆ€Rú%?Ç g±tu¹(8ªõÌ™´c7°œýßcö¼÷DFè¢{–j)‰'ËS»¯EQ4à&éÉHM†Ÿ`¤\"½è¢z³Ì$©Ä7ªÔ Ø›àeQ,³ãŒÐC¤t™MÉäÀÎzœah¤¸´I#ki>N" Ò£ŽÔeúa«÷UÄ…Q¤M€dèn»í¶_à)•èÑ뜩{å;ßýæññ‰–TN)‚¢1‡œ]¤ÏÊ´JžrÉ·yõs\`FžãË—/«L]¶Y ?âá×Sd³‘U·”õt¥,xæ:Ñÿ3ßé-`y3z @, ËÔÑi⎚…A_ºl†ˆ¹7Ñý`Îx¥©–0—•.ÏÎhBJ¯{Þ[V*™÷¾: ¥[zlkšÒ¥ôxÍ:þœ”ì—i˜8kÇÓ‰Á#@G@í¶Ûnû…ë®»îý›6mºžþ ü"Ì™ºM›6]Ϻ«up³-õqWkúZ:[PfU«nNÇÍ×¹0Š´'à©­–•AÄÚÉßÞKß-eð,?ÅRö+{˜Ìú@Öíÿu€ · ƒTK¢û]¦~NOK·"l ¤çœD¸ð¡C úèeë_2@1#˜R·6¯¤žÇj›á=_Ìeê¡,¶Ž”.-`§¥cr£kÍ|\c¡ˆ…ãä$’Ò*é?» }‘רÐâ)—2ÍrëÖ­ï#`§½.:©bÙZ+7×â—ÇMÒù~Iq:&´ô—³•Zýœ¬[ä*¤ò9+ÝÒñ–­°Ë²ÒQ½œ¥»”ý?sÿ*µ+ÀC zÐq'3 %3Õ×UýâC§)ÀHÙOyÒ¸7Ñ{ N[ýΤOfÒ33)PÑþÈÿå¤2“Jf½®M`- W2É–¬ í·ô4F®ª*S_2CšHЬ¥# BàErœÁ¢LξIL¦_ž>}º:<öÃêÛ¯üýs×]wÝû ¸É´ËÛn»í¨i©™<å’3€œ£}Ô˜B <é1t<•3“Òº@žgù—?Ö,&¼::-í2ºÆ²ì±Ô²>sQŸöT-£¢vúV™7ãO»¢7Væ)]jäTßúÐEÅ‚Zú%|èˆþrÙ§ŒB–|‡·6o>«Ö9MÅnr‚­¥^jÏq5Dμi,LÔ:2ZÌð×ZÅDf™ ¹LkœcÀîJj¦dè¸5m”vÉ™:úŸ«\ž9s¦ ä8€¤”JnO Ù-Ðþqï=žZ)ëµ”V àIÑù›D¶Ù݈õµ®Û{ù>k¥¤ÿ,Fÿ÷¶—GñîuèD Ýè4ÑFKÜ1£~YõºÊ¥<ò 9ué £€¡C zÔi@)3©‰”â¢to"f±rÚäU¾Ï2[޶WRSWì"_:ùšLßãÀ8±Ógêè9) ÂkÏ8+'2{ÄÐmݺõ}RÍRK³$GŒÞm·Ýö ÿðý×ÿî­cã-(Äq_<.Ü"óš9©jI©•²fîìÙ³jz¥ÆÌyµr’Uͤ]ZàŽ®é “—aç´¾šy=ì³ÿw"õlÑ;€.J¹ôjç2þs}—r©ˆ{@ÆâDoºìDÌ[Q¯£L­œ{+õ[M³ut–-5‘Öüéäÿ–j!ßFd2n<ÎÈi ÕÒQ]sÜp\jó¿WÍį4z±g­lÝ\‹( ÕÍmß¾ý½[·n}='~Ó¦M× ãµ{ÜÔœ³‚WÙÃ9µfŽX9™fÉ•.ù9⩪ž’¨iPGà\2otÍZµu̦cfcµç2 (Yv¼þ_è¬{Dì!Ýè诅I4à&ëèúV%ƒX=Ûˆ¢ ½æ, –‘òî„f‰ZfFy/rš!xÉ„µ¥Km"®ùÑÑk´Ÿ$†< êdš¥|Ü ûìÙ³Õùó盇§[Jß:bã8Pºªtyå/}öÈÑã-5tè(’ž×Ò-eÊ%ÿNÔˆ­#žÊ,9x“u„k©©Wòský&–'¥lYh׋|Îò;ä ÙZÓ:i•VzrÝtî’þ¾ŒÐ‰ÇÐ#ˆîtFcµuQýœÅÖ­:Ͳ@Ò™àÁ‡èmp—­}+P©«|çMêÚiV‘'»Î'¨uŒŸ=Ógµ+ñ-ÓRüdÍœ¬“€N{L Ž³Yô˜ ¦˜[èïÖšr)™7ðè¹­[·¾Ò,e Ýññ‰Ë„VO¼YUì„‹ H¡é5ÇS/-PÇÏ›L·Ôü#áËg0»HPçšÌŸŒÒ¥U·Tý?ºïX÷¬Œe.ˆît܃Î2÷˜ºŒeA_¥\Z1tt¢!Š‚@ô€+©O)]i·&qAƒhB˜I “@"›^–©Ÿ“ßSj]@ÌŸHK àÕfñ÷i ÃRgÔš–vI@Ž@—ó×ÌÆ¹(‰T¹”R/y &yÕØ#@×j‘0ÛÂØñz>^''U<¹çgê´Ú9™’*í èw’ìgî<Å•æô^º¥µ‘eê2Œ¸Õÿ²‹Cuú¿ô¬{E´ ëþ‚@ ºÐE¦âœ©Ëd!öCg)Àð|Ó¨†€è-`—]ÕöV­³–™í–(hŸËŠgŽ×ª©‹Ô.#—U¾”} àI‰|6¤´>wÒÖ€Ž ј8š8è»ZÃ6[9VQ ´.àà˜9qôýÃ÷_ÿ;tÜkŽ”6ùþPÚ%·$þzòy ¼Efâü\Ê×,ˆ“àÐÿQ­\ÉsÖ‚GÆoMØJîJ¬<_,«H¦šiX({õqV“û後ú¥Æ"ñ×8ГLÝ… Ô’q!r2“§fÊzµ#GWßõ_"nÆ ×mݺõ}ÔÄS·}ûö÷Òã_ܾ}û{ÿáû¯ÿÝÄÄ$39ŸkaãÔñï¥}äé½t ´i2’ÍÔhäcÍJ"«X𹯬º;ÏNÃt‘HLeT.«ÿk÷ 8‹jè< Š@ ºÐI|"3#…˾tVŽNp£ÑX Q¢û\æJ<¥"%»’º¸Ì~—H¦gR.3ê~%inÚ$[²qÚ6héoxj¦eh­™ŽKO5Î>q#åû%ÓÅ_—>ogÏžm:²* ÐÆÿ¿îºëÞ¿aÆëdm–rÉS@ ¬q1^Èm x:)1tÚqZ5†H¶R,é7–`Îé`‹Øµ´Õ±.(e´µïÌn³ý?óÙ’}ÈF±ü€Î«£ÓÒ/KÓ.«~gè¤Ò¥ÆÒÁ‡èM`gMjJ€¡·­’´)‹ñ+13Öêß²)ü;$À²<êêÔÊyé˜o:-åÏzŽƒ©#á d¤H gãx-T™ùÀ\K*–ÌqGàŽÿÃ÷_ÿ»©©©Ææ´_RaS*VÊç¸Ê%±ŽVÝœr€—aô2ì¬Ws™IÃô#JU_y?ð¶SR«Ö‰þoݧ²Â(%ß@ –ÐI0ÇAœ•v©aœ¾EÑl 4ªÒ:q²¡†è`—Q‘Ë Dä%@-“biygij~Öñd… ²"%¶%~cVm–Lß³êä,ð¦YgÆÙ,ÏÞàÂ… -¶\…@1qÐñTLJ½$Q”‰‰Éæ>q%KiŠÎ§eI ©xòã÷ê%0Ö€µ´–ðl(,ÛŠ¬?-(d²†àuY;«Ï-fÿ÷jó²©ÚÞ}@t “BŒ–mÇ,’œ²ü¶ûVEæ›z’ ü7Õ`èˆÞsÞªt–©Ë¨aÖÖDP{]*D–8þ^Í4Y~§ÆPxgOŰ„“õW–؆•r©Éík©˜’•ã¬6^‹&ÅSˆõ:{öl5väXõýWð%qôwxxxÝr†nçÎë%#Çÿ’` W¼Ü°aÃu<å’7éA'Õ9¥Š¥Üw~äù°jædÚ¥õ[X¿wI½¤—¢›µÎ°€‹µ`Q*’"ûµÅèÿÙtL«g-WDw:¯n.GYQ)—òy'T.ˆÞwðWwµ¼Ô÷.ãKU’–•M1ͤeêÞ¼Zº,sW¢|é¥`ZuuÀH‹ ìH€ÇÁ’´ †nëÖ­ïÛ¾}û{o»í¶_ š9ìèuò¢ãi™¯ÿàð7¦§O´02ýÓÚ7O¹Òoò¼düç"ãpMÕ´„µ+ñž³˜¼ÿFïúç} ÚÎbõÿì½­PZ‹X¢»]d£f1s–Ïv_ÛX6sq¤\"ÝâJjd²&ßA”Lªff^²uÕù2çÃó¢£}ÈÖËiuS|b_"aùžiJ—š/Æ@ÇÁœe] ËìZº¾eè¼°däÿH¹D zÌeÓ"`­Žg¢Iœ5ùòž‹&±™”MOm³ÔºÀpLF~u–u÷ZÆŒœT/¥8ˆø¶lÉ:²%غuëûˆ•£ç4¥K è¸ð‰A‘i–ÜZÖ r¿#+/RÖ-ZŠ¥Ð/õ%,QTõÒ##åËLÊ&¿ny•€®“ý?³x”©ÇÓž C ºÐE¶;Wæú.å2£pi1v`èˆîqÞ$È›àd 2fäuö/š¨•*\Òg¢Í ̰iY‘ ™²¥`jæØÚë‘€N2zšÝ&,Â1t íܹsýððð:zŽR0‰‘Û¹sçzJ»ÜºuëûxÊ¥WÏg‰˜hÞ{–GŸVoÕÐÕaQ-°n™‹kéºÙëG1±€žÖo=¡Ivp1ú¿õœÊ2–sD÷: ÔyutZb_×ÐY„Y ‡:¢wA]– ³&gY ’ï(a 5`–`˜óؽÐjúäĶñ •±#zM‚6ÉÈiÖZ:£•¦h¥.¾ul¼zóÍ#_¤tKk\…@Ýððð:.”Bì:­ΪíóößòÓüú$ø-5÷~¿Œ7]ió®ÃNë›ÖBˆU7¥s.Fÿ¯»X•Ý6X~@Çñ†—AÈ1ŒLÇì[•ËÌj*—–º R.ˆÞv%žO%+ìÑóaƒRao²èMà4p¹:MKÁ“B)™Ú*kÛUU©ŒN4PcÕÊIp¤yÖq@G ]£Ñ¸vóæÍMabæèñæÍ›×Sº%ý¥”Ëéé Ò*µïÔl´ÔQ |F*–ƒgÕ1j––PJ”–™½Æä÷ÈZЬú¤—‚lÕÅe=";ÕÿK¬¼ï‰ö@t ³jç$))]®ÛËa=GA Ñ[ ®D‰2#÷]Zó’•L÷>ïmS5‰&¶ÚÖÛ¶ÅÖe'èYA OÓSH$@CàÆ0^ªa$†¢±u¼†NºxàZ®v):‹…óìdÐè±õ^«æP‚`/½²Är ÷Fj•%ÖÙ÷fºÅèÿÖ½%³•ÉJ¸C ºÐyt2ÕÒ3ïû:Oé’#àÐ!åè~@gM„²Œ]&%³d’Tâ)'÷#vж]ן˓ˆÏz†Ñ÷[6RTÃcs,i{­ŽÎJG̦H0¥ÕÌñŽ3qà‘dæè5 Ðii”Þ±yÇ”M©ä‚1–眖k1®3[Gñ’_SVJ±µp¡@oA'ÛϲL]»ý?»8å9l"ˆîtžŠ4×ì úº†.“OZRG@‡@ô¸‹Y޼ S”™QÂÔÞ§ >H…Hkr–eù< ë´Œ€…eWà)hzþf˜“L•ç5'ß§ ‹ð÷I0§)CŸhºíÛ·¿wË–-ëvîܹ~Ë–-ë6oÞ¼~ddd͆ ®#‘²1 ´ÌíÛ·¿—ŒÅ5ñ/}R_Ĩñ×"?>î;gy͵c?IË­SG‹gjݼZÓ¨oYµyêÿ%`­„íˆC ºÐÑߌ¡x–•ëË:Y8¨öYÀ®Ñh¬ C ºÄE“«Ìê·7‘ªóùh²åÌlJ™5ÙÌZÈIkÕAYódy”Õ™Ø[¬‘§Ô¨!ž‚Èÿ×Rµú<^CÇS)wîܹ~pppíÎ;×oÞ¼y=™ˆ“ =OÂ)TCÇY8É zV^]œÞ$pÕ<ç<« l×1 /ƒžHO$f eXï¥ìÿYÀVúy¤\"Ý è<»˪ ÔU½îCW¢ti¥[6Õ¨¡C ºЕN^JX<,fÄ 2+ñÑþgU-9H³&·ÞÿVº[ôyù äii—VZ¥• ¨3É@G TºÌºQC§¹Œ$¨–z @‡@ô Ó&T¥ueÞLÛ®7‹l"#ñŒ‰¸7©,µ3ÈØ&”°jYß¹Lxé™–d]`‰©XŒßÅ‹›€Ž:x\ …˜:ª¡£Ædܬãòêä,€“—âê·¬•E‰…ÂøµÉÁ–Ö£~c-VX׿ܟ¥èÿ¥}·ÔÀè.@§‘HZæ FJ•ÔÒUýÀÐY<¨\"½æ2ªqÞ„Ì›ðdÓ"­ï®k ík´Z¬ˆ÷yÑëÄÄ=ËÂYÌŽdÿ"°c¥!J‹Y›'S -@'Y¹áááuƒƒƒk¹ÿÜB@7­.¯ÞMašØIÖ‹ÏÑ<¥5óûÉ÷¸*A‘פê("ë E}EöÅÅØNöï>dYÿL±ü€N«¡³T÷-…Ë sWõC …`9Òµ€ŒÅˆÞu™UôÌÄ({ðÌJº¶]/5ÒRõ³&±Ú¤×zoæx"§©ej ÌzO¶ž‹§ jõeãEM“[òþZŠ"E!¡R¸$PGµsô:{¼†®„J…J-%ÔJ©Ì°€àÖØ¹ˆ©«ÃÒil¿^²~tuØyOv©úþ¢…Ÿð‡@ ºн§Qõ:C瞟j £Ð!½èJV±-`cM˜2`¯TU³®Ø‚Þ,ÿ¬H¡2#¨1tYUÄȰºã§y´ÉZ9©t©¥or‘ z¸( 8J©\;22²†¯³ãöÐI €FV  'Á¯&`R§~Î3¯c*^çṳ́W–¤0fñÅîÿÙmx÷‹Ò…,±´€®Ñh¬¶ô;¢:-%³ïÅ3ÖK@‡@ô°Ë¦2•¤U•Ô²”ªàYÀ³dòZÚ,¯/--Î{¥ì m³ä½Ód1m–·˜8è;þ|Ðh#FާX#·}ûö÷®¥÷Òóš±xV™ÓóÚó¬ "6°ŒEµ”–†Ç°eOJ==–«tÁd9ú¿·å-Ñk%)š™Ú¼ H+™¨y“7‹õ(Ý^)ãâ1vY³,à“ $#–â$ïuè¸ÊÈÈÈb툹£ÆýévîÜÙÂÐÉ4ÊŒº¥–:1tÔF6žP ÿ´ßÄSº´TQ-kAÁ³ôˆX7Ϙ¼®‡Ûbôÿ  ËXÀºè^@‰¡tJé²ê:Žr¥_F€è`—]­.1ng¢U¢œéMÊ"&.š$––³ÿ—ȬŸ&@Ñ=€.R¹”~t+NåÒ¢"5ç)\¶è-0—õbʲw% ’ïËúce¥Î#`—I-“,‹7ñµØÁN‚´¬hGÆwÍEˆãí­cãÕ›où"gßÜŒŒ¬!!žvÉí $ “߸ˤ›Zâ'ÚûµtJ èy5’‘—\¦ŽR»Ž3 «>‹Ñ¢Ïrõ 8z‹Sд¶@ –ÐYì\$îX îª^fè´Õ„Q":¨\"½î"à“©Q˨Èe&_Itobœ…Ð@[fYÇ„9ØÚ1­¶$ñ-ÕFM,$ËXIÐÇÿr†Ž×ÑQZ%OÁ¤ç è›wxì­—dÊ¥÷‘•‚L ÀiFõ2óÛXЦ‘RiTÇ–a”é9¯z)–øJ´X²”ý¿dq*kl0‡@t ãxCKZ9X¶n®o:ÉÆiîÕÎqP@‡@ô. ËªÕY«Ü™IWôÙmZÇâ(o¢IÄGµO¥ I‰Á¸§x˜ˆ’Y²jë,à¦Oé’‹¢<ðÀ×’ 7J­äb(Òº@ÖÐYb,³˜aé¬s‘Q®ƒˆyÍ( fÄP¬E~½fëì¬~¯ÕóuSÿ÷@Zæ{¬EÑ€Îcè4mÍS»ïS.­–îë^jèˆÞpÞ„¥Ž7SÆó-bÅÚYY˜ù¾¬5¡ÌÔyj˜%©—–ê`–)²|Ù,N3"Ø,)¤rþüùj||ªzóÍ#_$àÆ™8báx]½‡ûÖi5tVêgVüÅúßKÑÌ‚ltk×÷›z€-ËÚe¯s¯/bằÿg˜Ã¨Ž@t ó<è$>Y‘)—bõ¬ èˆþw‘õ>üX“9ob˜ÙÇ“áŒü:OM‹jJ…U"FPSÀÌ0pü3%,]¤i±W–?›¦Œy||¢ è8ãJ—###kFFFÖlܸq­¦tI¶Ù}÷¬<ᆲŸ_ÆŠ¢Nz,¿æ,Àæy×Y)—¥Æà£\ê͸\ý¿d¿¬ý¸C º ÐE —šmðúÐyÀ.æàC‡@ôËLb²“ªŒYyÆÈ\{oT¿W÷5m‚k1Ú„93I•Ÿ±B;5u%"+‘hHÄÌE¢(/^¬&&&›5tÔè/¥\rcq.šBJ—šmö]R0%ãÃ祗j eT«Xâ7:+=R^«x+F±únég–»ÿ[ßiÝÿ²õzby]©©¸ôÕ^q>tš«::¢¿À\V`@›ÜeVÁ3Ûñ&‡ÑÄÐ;¦Œ¹qv‚¥y^s%ì^Vè¤äy¾/™´Í¬ÈH†Ù#†ŽR(Iô¤Ñh\KÌ©ZòtÌáááu_ÿÁáoœ8qÒt–E·¯‘HLä X׺Àû¢”Ë hó€Næú­s­÷JÿÏ,N™C ºЕš‹—¢ô……\3H˜:0tDo»,ʼ×…%BÑ„²ä;,`VZwm'˜È¤™eN"ÎÕÈ®XiˆY&‹¿6>>Õ4ç dé8+·yóæõäI7<<¼Îª¡ó˜B‹ÔÄ`4€Ö®W\¤ ©ùf¯HѲÄܾ$%3JWî•þŸQ¡E Ý è"/:¨e]Õ ê40ÇŸCÊ%Ñ›@.ZÎN¦´÷gÍ­}ÌŠ%dE²û¾hßJ÷; º²`CÏ@â {X`IcÏHedddÍÎ;×S­Dá©–ò9ÉÐÉÔʺõq™É:`ÚS½ôDTÚ¹ždíg©1·\¤× ½Çb{©ÿG‹YŠ@ –Ð5Õ¨ÓLÅ5Ö®¯qÒÊÀrc— €è]Pg½7ãßä=¶&NÖß’mfÁjÆjÀšxZ€Îb/¼Ii4A—ÛnÇ÷Ìó8˘_{)™‘B$:R²äj–¼~Žþ'–nçÎMEÌ7}I³-(QíÔŒ¿K”FK}ãeëî,€Q§ÎSÖ̦GûÓ‹ýß›a±ü€.²-ðêèVLÊ¥¦Ãý"v5tDï:orMê´ÉP¦Ž-;yŒ&v™Ïf}è¬T³’ÉqFEÐ3öŸ|{ÞfíÖåYÀÄ’ô׌ŠÐQ%Wº¤ç¨–Žl èïàààÚ7}éĉ“¦%AäW7]2RÍ0s%ö%×—µ¯üº(¹f3ì\ä?×íýßÞ=@t ó@g[°bT.£ð ÅQC‡@ô& Ë h¯•˜‹gï¬çJ&~%E‹Á°À6Y.Qü³^·Ô ³5ruj¾¼my®¤]¸p¡š˜˜\`[ Å'''WÉ׈ɣ:MÅcÝ:Ýê¦fFl^ÄEÌ®v½ðÇüË,ÒÔIkìµþŸ¹‡Ô!Ý è¢´K¯^Nê†ô­±x;¶H¹D zØy“±h²SbÌ›aÿ¢‰UÉ$T~·–RÕ yßï¯:¢)ò»-À@“ÿ ‘^ɤZf:oÄÌQýÏŸ#°Gé—œ¡+Ö|ÙZÆl=ÿÝ2i½ð– ³–é«%×h/÷ÿ¿ºha @,= ãzÙú¹:J—U¿‹s™CÊ%ÑÛ .³Ò]ºJyYY“­’ _VÔ¥Tt!ª‡ó&–ë¢}^>ÏgjÜêÔv•‚8 ,‘䈨†Ž4p7n\;22²†ŒÆ‡‡‡€¾Ãco-t¥)—2%ÔCu­!¢ßÀKÁ,3À‰LìÛmýÖÿ£m ˆît«Æj ƒHòiEª\jì§$­“cq¢·A]´ú­ºHŠ?›ŽUGÖ¿¤N.ú|$ljšDç û=Ö~Öa–¬D .u¿_tÌqCqzœ‘ã€nãÆÍ: "ë¤AR½_V¥Àe Ýåï“1¹×Ò(KZ£>]§sÝ+ýßÛŽuîD•Z˜édÿ]”v)kè8ŽÉ‚ºª_l ¤º¥VG‡”K¢·oÎÙ´§Ì6¼×#©LÍKôZtf,­ µ4 —5JÑÄØ«È²'uU/K'iQPÔ ZM,œdêÌñ×èù-[¶¬#Û‚(í3ã©ÕFõ‰ži|$¨“XÙEùš%²b}OæÍœôJÿÏÜKŽXI n¹ÇžrYpì"Y: èõµ(Šè2©–Ôr‰@ôÆ:ËÀ•Ú”ˆxÀ+;Ðd Ž- o¢îÕ:ñï²&ï+àAm’®m/ëSWÇ´œŸõOé’‹¢p Æ±u”z)ëíÈXUÉÔçyB)Yн•Kþ^bè4@722²frrrnrrr|7n\K5tÙ}– uT:ù¹”ç'k a¥¯Êkɳ¤È.kq 39Ël/Z°è¥þŸ…ÙãC 0þ/MÿŸ;}¦;r¬â`®Ñh¬ZÀÖI+6ùÿб-¹¦ÛúŸN*R.ˆÞ\‘ˮЕŠx+oEÍÌê^´²î¥VÊý‹D+hÂk<ë\”ÖוxÜekßø¾×‘â/HÇÇ'ª±£Ç¾ ëã¬ÿ7nÜØdèvîܹ~hhhõá±·ZºNí[]•ˈ¹+ý 3õ›™J«”¤f®·^íÿÖk^+¢_Çþ^ÿ%CGcŽM$ŽÉ¦Zö­æéà1stRÁÐ!½{ƒV¿­×JoÒ¥žXÙšžRqoä6J&Ä¥Çæíc4v&cuà¥nz@‰§XzKª\RZe£ÑXÍMÅéybë¸pÊ‡Ž¾tòä©Z>xÞóvÍoò|Zõt–Í2ì¶ì²&áÙÚ½Ljoƪ£Ûû–‰ CôëXß«ãÿì܆nãÆk9˜Ó0ˆÄ*+Nå’+]ZžÒ%§<ÁÐ!½ssÏLdJWÄëÜ𣔌hàÉ‚69‘ÍŠ¡hûTb4^ºïžü|–Aâ OÖP¼¤F,zÕÐÉÚ8©tI%[G5t k‡‰ÓÀhu>=&Ì[`ˆ˜µlMwý”²pXìÕþoí_VtèuWW©²Ý…ÊL¿Šú?:ÉÎÉš:MñRr°«z݇NË3å'$S?Q¢÷ع pˬV—dS$3'™ n‰ØB‘˜I–͈&ùÖ¶-ÖGî£Wï•Q´Ô§Ìv¼ÿ¥Ê%µ‘‘‘5F£ùÜÐÐÐjîUG,:ÍX\«•‹9OH¦”±³DC¬ I´HÐ †Ž~Go5=Ãîf¬Kz­ÿg'¼sˆ~]°mgüÏ֋׎ŠöEt³XºŒPJÕO*—2÷T²s–Ò%:¢÷Á]fe¼äµ¡‚’zïoõ/ˆEB|û‘ `‰çX‰ F6}Ðì(ñb+ñf“>t’}ãi–$"í ,@WÊzB0™ôÔXêuX’Š”e†3*­—Upí…þ±t™”M¢ÛÇðŒOc4þ[ãS]Ð’4wm?x Ýèè¨i]À•.é1ÿ¿ïU.­ƒôÜ×-Û:¢7™¹h¼Îj¹7ÑÊ‘–g§:J•u·¥1iZšg³ç¬ºf6e³î`l}^:R¶äì·ÑÑÑk4kƒÃco½ôÎ;?éHZev¿=3pO$ãïæ1pQý[ô—~¾.³Ü«ý?Ë^ †Ñˬœ÷83þgìo"åß’,‡ÌâºUÄÎY€Î²1¯o]¹F^tìèˆÞ¹ñ{@oë½ÞDªÎj¢7ñ+µ.°l 2ïËÖëu¢~)“šÙ†–nYÊÄe¯¡“i–ÜHzšÒ2I…Ý‡Žº€.›êÓ‰ã‰ÄGJ}á"R§.Å«çËÚ!DB*½Þÿ­E¬ì÷#½ÀÎe•&­±Ï²g©ËÐeïßríòåËÕìì\uäèñJ¦ZÀ³ÅÜ­˜”K °eT.èˆÞ¼Õºv 3¾ìÄ,[Gã_fòjÕ#e¶ik–m“ßý, „YVÑ­@—/_®&'§[DQh0¦º9v“““«†††VSÚ%¯£;<öV‹(J;ûMN2©¬uí¢Z¸èZ±«—"™¹îJ:û­ÿgöèUf®ÈÕQæõÉR=8ö¸ZrôÞÙÙ¹êðØ«ÁÁÁµÜºÀÃ(Ñÿ¸«úͶ@óY.ì²Ð!½1dÅ¢Uöº«ôÙ•üÒ•÷ˆ(J%©j™zK,ÃÚ· {Xr,r?ëø®E)‹—/_n¦\6ÕZÝ:ÎÒmܸq-·1 cñŒ•@i½`džµŒðÞ¯|gÁHô¹ìµà±tÐÏöÑ^íÿÑçr‰è•ÅØLÿÊÞâû¾ *íÞ÷òm[€Žj°9 Ëà‰c¢ÔËžtü 5@—©£ƒÑ»ÀN»é–¨ò•L†2©hIòL O$D’©i˰*– ö´ý˲?%^–läÉ×ä6ÆÇ§šÆâœ•#p'ÿ{ÇÁŸÇЕ°t%â/†¬T=2+Fâ]§uÕ]3‚<¥¬|¯÷œfÔ1ˆn`äJMJó¼”óNOôݳsgš€Ž-O: ày™‡}ÉÐqà¦É|f:¢÷)()°Ž&nÚwdjÞ¼ ^f?[³”ñ¥«+bIÂg? o”¦d, ¼ô> ÒkR…R+é.„B,÷£Ó]Ýú Ϫ¡DÂ?kW‘¹^3©¼ÑõjMÖ²")Ùãè·þoÝ KÔ3ˆn»½ +­^»·ËÂuÜQj'gèx–ezh‘(J_:Oõ¥Dé Ñ›ƒB&ݲŽáoiêSö3u¶å9¨xlŒ6ÔŠ»åûKS<µÁ8b,øwjûïÕYY­F€nddd 7§˜R,éo£ÑhÖÑÑû5cñˆì„B§'r’±È }dX2ï÷,c)ñ}ê÷þŸYð Ctã¸]¢<Ý»ùëÒÓs¹¯}.gffªÃc?¬83§9"–¸J–­ë+cq‹¡Ëš‹Ð!ýîJX…’UCoÂçMv³LGö˜¢‰s)R’Ú處{©|pñ¿¥†êÚ ¢‘¡#P'U-¹Šfg@>t%†ß%Eþ@Óüê²`ÚÛ^ÐgR =V¹äõrú¹ÿ{ 3D·¹¬M‡u°îÕËÅÈeŽûâÅ‹Õ;ïü¤ è¶lÙ²N¦^Òø!/-†Î|}èdê%që:¢·‰ŒçS]‘‚º+à%f¨YS⬠kÕ¿’T»v<ñ¬í{@­Ô;-Ëpi“ÍX|ãÆkwîܹž¯²ò×i`¦šºlÍ[VµQÚ5X¬_ÔVíú·jPêÖ;f%´÷Drá+­ÿ×™@#Ý:V{‹w– gåº5æçç«·Ž7EQxÊåŽ;®¡ñ„[æâÖã¾t‘'ƒ—“*iNÔÐ!½?`dVÏ3“¨á„RyôH.ÝÛíû2“ð:µoY { ¤iì ·› Þoæ)?–¤3NNN7EQh –žsôxrrrÕÈÈÈJ¿¤Ækè"ðˆ©‹|ý¢s§‰èÈUo Z`Ç\‘÷¹’ß»®¤þï}è0—íG™Ôô^ˆ .T“S»6oÞ¼ž{•RÖ·3h4«#õK‹½¦ê7cqžfå£Â‡èýA#ZAϪhe'D™ S)ÓæMÊK˨~ΫSËN–µÏG&¯íø†Y Ÿ5Iˆ ȵ‰W¹¤:ɾñV‹­Û²eË: ÐE›Wx#öÒÛ®VOYtJßHä'c›€þo;±œãrI A´ø&EOz-~úÓŸ~žR/yÊ%K×ÑÄ 'KÅÊD|O›Qu«ÊeÆë ÑûGÉJ{fV¢´Wº:™|°&§Öþf¬ ´Ôƺµyšr¤xŒŒ¥ëˆ¯xiœr_¬Õ_2ß¹sçzn[@ê–TЮÕÎÑ{½õÒ©S§jÕö•zóQdLÙKÏ©ÈYðæùz+òÙ•|ôÿœz&Ñ ãrÐñû‡ç'׫qéÒ¥W>¼•êéx=ÎàÐEb‘] è8CÇR¤8Šu2ˆC‡@ôÆ ‘YùËú3eTý¢4®vëa¼Î$­sáM’K¤ìå$>š`GÛ¼ê²v¥i7mÛÄÐqæmrrrÕèèè5œã`nttôš‘‘‘5¤ˆYb[à¥YzLšö›k µÄ‚"SC±_x‘ÀÓ»n³&÷èÿñ÷!Ëè¢Å—ˆ¡#×ë`އc‡ÞÊ•’ Èq ¦ùÔI¦NÃ8‘ùx×3tÖŽg.T.ˆþvÙô¥¨N%š$e'_%Æ:ÃÞ¹)©QӀŖ´SwW’fW’ j©Wf3µÏ #ŽêçFFFÖH:ic@ ÐeÎy VG©4 Ø-`^ê3èMà26™þ‹þ߈å“3ïój˜ùs½"~RÔñz:Â$4¶LNN®²Ô/%#ge"ö “ut;g‰¢Ð!½µú­¶g•î¢:œH„ Ý‰UIOVÊ=Ëpy@"u ÆK&ݵGP,À—z©ªª™rÉ ÃIŒêêxÝÃÈÈÈš‘‘‘5ÃÃÃMIj ÐEª%Ç\¢ôY‡9åדõ<2`¬ŽIxæ»Ñÿ/§î‘ÄRºvüæÈq@ׇç¬ÉÔqåKu„Q²ec^:f×:Kå²ÐqP@‡@ôî@R*2Qº+€Õ]y÷ǺѬ2Ÿuž´m–NÚ3ïóR½‰@41È«MLLVcG}ûÌÑJi£ÑX=<<¼Ž3u´rÊÓg½õÒ;ïüD½ž<ð–9Dz²äÚ¯ÛJ@q.3Ì\(Ñÿói§ÄR,°fï=‘øI?ÕÌEqéÒ¥W¿õ­oo¢lvCCC«¹Ú4¿: äꀺª|è4p¡[¤\"½¹ èMz¢üÌ wIÝP ðð&ù™±,ˆ«#†!…B¢‰dFÌ$»OÙôL ð•¨'Fç‹l HBš‹¡ðv„é/™ŒŒ¬!@g±‰ž@t´c°Ž=²^-afßK„=J~skŸd*0ú9 E Øy×gÆR¦ß™9çÏŸÿ"e‚H³ñŒ•ÔÑÔ0{Ž¡Ól JDQˆÞ8²»¬Nv€Š&bÖ¤ÍZÁÏ®ÈgkjJÙ k¿²µiè²Ì°#Ÿ´ÅJÛ‹¶Ím dÑ:1òyžŠIƒ2t™ýñÄK4³uëø=Ÿ: 4Z·T€FÙÞoÔÎ5‰þŸ¯©C –j‘Õ[±Þ¬¤¹øüüü§h¡É€×j{XFSºì™”ˈ™+M»C‡@ôÇŠ`Éä¯Î x¶æÌ;ÞçJ½¥J͈;‘Z× £òvÄV<à£YD ÆÐ‘=O­$àÆ™;u| –€.cžž{Þuœ®ØeeÿKÙÒhµÞZÈz½¡ÿçD^ˆ¥‡3©Ä–ÿ§dçVÒu|ùòåÙC‡}”Rdª?•†I‚ÊbæÚeêªåfè¤ÿBI!!:¢·h5°d¥?“¶èMªJ•袉i‰*^‰kÆkÌÚÏRà%÷ÙRÏ̲'¥ÊÙ”AüH…ê&''Wq›ä(Å’^§º;OåR›øxÆâžiºgÏÂÉ^÷ÞyÏV °eÌέký?oàŒ@,æ˜õË’4Ë•’j)ãg?ûÙß‘ñ¸–viÕÓEj—–OwW‹Kz‘D$ˆ†è½ÕÀ,P‰&|™m[«‘Ö$+ó]Ù4¯ìq{“ï:6ˆ¨ËÞѤžÿmW®?šøf¼Íøsèxª ¥ZR=7neÀÙ¼7}éw~¦‘ZŒTˆYç±.˜Î€ÈL]^æZË. ÿ×ëÿÄR.®–x‚jÖ¼­Ô˜ŸŸÿ3<¥Ÿ3ed–pJψ¢Xâ(ÔIÔÐ!½½˜¸ÔIýŠÔèJ$Éë !Ôlð€]©"`4βsÑ>k @««“ºéí§µ]R¹$pÆÙ¸7®^GÓœ¹ãé—ÜX\·Ñõ¦1‹Þ怒ÖñÔVØ35pÖ䮟¹vÄ?VrÿG –ÔE ˆ˜“¶)K},—.œ«.]8·l áåË—g¿õ­oo¢ñ&ËÐi؆ZéÕÕ>tšHŠdèäAs†€轤tDcëuo’V¢îM"­ãË®ðgTK•'£÷Yƒz‰ñuïó8JŒ°i_ùç'&&«7ß<òEbà¨ñ…AnôxrrrùÑE¢(%ç# d#àyÍIñšLmö,@Y-XÊYÀ‚þú9Äò޽^v†–J®1sK9ÿ¾tá\uanº:wì@uú_©Îÿÿ®¥ý|uîØê§'ŽT—.œ[²¾5??ÿyÚ%-$’'1v%à®Ôp¼êcqMáÒBª`èˆþXÌN¸¼ç²+äÑ$ÒúŽÒ}Ͱ¥[^]“gSPbþ15¯k~M/Ô€_ð(Ь‹ã,gí(†?Ï}è<`”e-ÕKíºˆR+#«‚ hÎÔtEÀÚû=,0ƒþ_-Ú Kê´ë>J³ä îüùóK&„rñâÅêܱÕùÿïßUsûëUõâû«ê{ÿ[UýóÖö½ÿíÊk_û•êÜÿú¿ªÓ?øJuq~f)Îíì·¾õíM[¶lYÇMLJ††VŒŒ¬!?Ô³q©1ÒÆâK§™ïAè_ W’•]í„8¬A®£íì±ekɼAW³È,ÚúåÑ@c&eïcåwxÛ&Îè¸÷œC!`Gc ­˜Òê©èó«Õ¹ÑÏ/:°›ŸŸÿÌñÌ  ã%f²Ü,#’Ruc dç`,Ž@ô÷Jaf2ùSE+ð%*‹uÓºJŽ?Sg”a¬¿Y1ÈO-2™Í2S‘b »¥BÉÐI…KPeýLÑT.K÷¿àEÇ.½3ÀÌÉÖõ–õ5ŒþFÆßèÿùþ@,å8eÈú9bçÐ]ºp®:7úù+@îÅ÷W—Žß[UçÿÈÉö³¯VÕ;ÿ¹ª¾{s“±›ŸúþbžÏYè²J—¨Óˆ­®cè,ëù|èˆþ4²ž¬‡WvR˜™(zÛõö33¡Ìl/39µÎƒœÈ·6"•Cí»£ßN›ÀZžs¥Œ’´-  FT/¥` ±yCCC«9 óاҚ9 0GÇ%mÿ2~x%*™%@$ºîÑÿ¡d‰Xžñ7S·ë-Îib(óóóÕùóçm¿zâHuîý_Õ¥¿ÞTUo¾Ì.hm“ïûÙW¯€AbëŽX´ý&_:)"=êê¶®¶-ààNSyÑ? .ò„Š|ÙJ%Î-`P2É+I‹&ƒYõ¿L½5yô€^4¸GL- !Ÿ/õ™Ó‰çÝÆS.9P#‘”;v4m dZÌÐÐÐêáááu\E¦ Cs‰ºg‰=Eƺ@ßH-eÜJT/Ñÿë«"uT£…Cã`n±Ù¹‹ó3Õé¯ÜyÌý«+)”?ûjk“ Mq ÚɇÔ?þ‹²ŽŽ3u£££MaÇ:â(]YC'ÿJ —õ¢ C zÌe…¼I¦÷ÞÌĨTR>ZyÏN*³“=ëqIª[]ùùlí7 ÐR³ßI“ ¨x¿Ùlܸq-÷œãÊbÜŸŽVM'''WøÓT.µßCÖfÏ1?ƬPLº¼f€c‰µúgû?±T ÎJ£×DP.^¼Øsóóó‹rÍ^ºp® æ.¿¾ãJŠ%ož½Ú4Ðö³¯¶¾G~þÿÜu‹‘~É- 8°#@Gã“ê¤MAϨ\z‘E«H¹D zc0ɬô×Mm*õ|*™¼•ÖÔdÙ´h²›­KÊ‚<ëüJ)ü:à­0€/k‡ ™=þ:1tdAÀ]é/'ô:yÓKGÆâ|ßäwfRB½c±¤þ½Z¸È“/R%­+Ô’úÞŠ?ú½þ@, ³®[íÞaùÎ?¾šŸŸ_”}=7úùêÒÿ¹+uoïüç+íüŸ‰öÿ4ö¹w·wéø½Õ¥¿ÞTþÊÕ…¹éŽ¥]r¥Ël=]$éÕÑ-  Ó¦æ?—¡ÁÐ!½1˜”˜™–èŽ&ËDÛȰ¥ÂÞ~f¥æK¾?ûØ>)µ+¨Ã²Ôm²†ŽR-¹ ¬TÏ@GFFÖlÙ²e¯¡+9ŽŒ„ˆÚ¹÷˜4 ÂKØÏvR3}ªNß@ÿGM¢{Z5&/ír1æÜ?=q¤úé3¿ZU_û•+5o'ºÒ~úé«m¸s½Ÿž¶ùÊoU—þûÏUçF?ßùãøéO?¿eË–uÔh "@700°J;“n=ÃÐñˆØ9ÔÐ!½ êJ'‘0‚µÍŒÚ]©\f¿®JÖG®®iµ7élG~¿îg=I/€¡×øþSÊåèèè5ÃÃÃëFFFÖh£4Jƒ¡”K ê4@§}W‰ÜT ç]ëuÏy,F -êKhÉÔ†¢ÿW¨¡C,ú¸ëõ-«¶×S·œŸŸïøœûâÅ‹ÕÔþ?¹Âνò[­€Nv%MlçÒñ{«KÇï­.ÿÍ/UsOßÔq–îg?ûÙßq0G|O ¿XÇ+9ë9@ç Ø ½ è2¾LuÓÄ:½ò^:hzÕìD7š¸– KxïiÇ;­]¦.sDâ)¼–m||ªYC7<<¼Ž×+peKéKÇß‘£Ç¨\fL 5ߦH¤$cÒîM¶2终Êöß:’ÿèÿå†ëD'AvÿÖ²40GÊ–‹á?7?õýjî雪ËóKÕå×w4A×¥ã÷VÕ™?h6í9­yŸm¾ö[ªKÿý窓þ¼£ÇsùòåYÎÌÑcžr)Y: ÜiÙ‹] è4éņèï•ÂÌ4³ÊžlÕ\ÈLÐ2€-z­dÒë± ™ ”†‰’Xç¤d2®Õ«y@F~W¹ä’Ñ###kx]£ÑX=99¹jxxxÝðð𺡡¡Õ[¶lY×h4š¶–Ñz¬$À‹êá¬ç=p[Ì3 : ¶³×dÑÿó¶D'Q#‘¦(Õ’ÀÜb¢œ<ðçWعÿ¹µºüúŽ+‚(ÿûÕvæÿ¬&¿ùÛÕŸý› Õ§n]W½òÌMUuæÿ|·ýAËßÉoþvõþõ?©þÿþ'WßǶÕÜþ+¿U]úëM‹ÂÒ>|x+O»¤Dçʘk™ŠžÁxµœÆâ¼i/ªŸC‡@ôÆÀ’pE“Ÿì¤.2ë­“[)ØÊȨgRò¢ã&œÙ‰´wœ2%ÑR̆”úÏIQbçx‰Ÿp!bðFFFÖ ¯#†ŽÛdÔ5£ÉMš2`ÌKÕôÀ_¸dúC‰Ñ¸õ;F×;úÿe:IJ, fÒ¸-@GìÜb¢4•-ÿûÏUÕÈoTÕ+¿utý«&{ö¹úÿúŸTŸ»gMõ™ÿãçªw^ÿ— Ô]mùñk«Ïü?W}îž5ÕŸý› WÁÜØ¿ªª±ÕsÕ7n©.ÿÍ/U³ÿemÇ/'&¦îã)—’¥ËzÒqr+bê– Ðiù Í(^£ÑX @‡@ôÖja´’Ÿ™¨E'Z=ϨBz“¯,£Mà£ý-QÖ+Gà13y/IÁìDóÕЈ#ß9¾:J–R srrrÕÈÈÈJ¹ÌÖ§E稖žCŠ XΦÌ1y @tMÖéÿuj{¹ÿ#K±ˆjÝ£,0G Ž]§ Å/ÌMWsOßtÐ}û¦+*—o¾ Â~ô/ª¿üøµÕS÷®o¶ÉoþvU½së‚Fï¡÷Ñ6ší»7_t#¿Ñt'üygÝäÔ.MEÚd½è4¦N‚ºj9S.9úÔ„Q,†Žû7 åèÍUÃR Mê²iXÑö3 (b2 C´ßYƒæŒÇ•wÞKÅ8²õ_툧xÇí©\r@ÇÕ-yÍ=OïY344´zãÆ |è¢ ¸Å(jb.{™½,«‚’:̨ÿeS*³5žuÀKɵ½Üý?V³ÊÄb.¢z÷-¡#ß¹ÅD9wì@õöSªùg7UÕÿܪ€º^]þÑ¿¨^yæ¦ês÷¬i¶Ë?ú ZõέÕß~þW«§î]_=uïúêÙ?þå+Ïýó+Û:xó•í~û¦@7µÿO:Úçççÿ£L¹ä¥%,gç¤xdϨ\zÀ5tDï»Ìä³d²çMô2@«ÔO«”©# Ÿ˜¨#/Ÿ©ƒËNœ# l/õ’?öŒÅ­×«ªjÚPm žô˜ ¢pÁ”;v4Ÿ;<öÖK§NJƒHO¥³®÷[IÚiô»·³xm'º¶³é™™ë®›ûÉ= À ±œ‹¨KϪ€3uŒ·_ù«jâ³?_Íþåû«êk¿rÐ PWýóê{Ï|¨úÛÏÿjõÎëÿRtÔþöó¿Ú|Ÿæªÿ¹µºô×›ªÙÿ²¶:þ¥ûªKÎ- ãj—\…T/=fÎ+?ë@Çkå4¡”±¢†À •]Ϩý•Lr³à’‰r xÊL"KAdV±¯IOL$£ú¨©D^¼x±Å‡Ž3qü¯t\ý²Ñh¬¦:mµýט8˺ ÌJL¯3@¢¤®ÎâK]‘•v†néÿD/Œ•Ñ¢DÖwn±ÝÉÞt—ÿæ—²tÔ5·w·0tâyÌ ûÚ¯TóÏ^tçg:vLÜ‹N‚9ò¢Û¸qãÚ,;çY,; ³R-åë0G Y`MÖ"ÐeMî2 )# am; ëzÎyá(´\%#gM2è½’uhÚăjèÞ|óÈ9ˆ# Fc ¥cr몳£: è<¼èYÿ{Â'¦+û›Eרw}•žüg¾#›–Õ|.uÿG zmáÓZx»pá‚[CÇ[§ÝÿÓ:Ðq–î`+°K5æ8;ÇÝÄg~QÝæÍ›×oÞ¼y=ušÁ81vÞ‰<é8nªº%åRS¶ÌØ€¡C Vö Ujf¥hE“¼Ì*h4‰®kÄœùŽV­œfêµ2¾`™š:ËÉzÝÆ×’-±r###kHí’ÄRx: ´R% &µú8¯N%z.š„E€){yý)r™…‡hë°d¾g)û?ÑÍ@N{ÎòÇôعÅto¿òWÕÿÓºêí§6T—þz“èJAïwvîn½R?÷—ïoºN§\6k­´KªÛæ)˜‘Úe”v¹ä€ÎJ³´„Q,tJ9§`è `Y–"šÄÕ™–²rÖk°h Üh+9'!˜Ìï‘õ“ÀŒ'ù~ @ÑsããSM†Ž§XŽŽŽ^ÃRRHÞ²eË:zmxxxÝäää*E±ºlzeT7ȱÖªôqI}g ³VÂgëèJ=ö–¢ÿØ!zеkW ¹sçÎUçÎëxÊå¹cªƒú+W…Q¨Ž.u¸ÓÀœ’nyé¯7U³ùþê‡ÿiÝ¢ˆ¢ ã,¥û“ê²L»”™‰\@ÒÂD]åC§ÕÍy4#R.DfBÉŽ{Éh ô&×YeÀÌd6³@‹@B–±©Ã°”œWî×F ÇbÇäþñ”Ë¡¡¡ÕÄÂqsñÉÉÉU|À$Gl7·À¦ô–ÓöIúÎY©§¥ Š¥¿M¶Ž-S_–õ»Ë.p”Ôíe®ß¥ìÿD·ƒY+’R@· Ý…¹éêàîéut߸e!¨ûn+`›ûÛ_¯&ÿæCÍ6÷·¿¾ðýß¾éʶ;7ÿì¦êí§6\a_ù«ŽÓüüü§xÊ%)]ÊZºŒÒ¥•ŠÙU)—š‚|žó"v*—°¬´yfÂÜ.ÛPš’MÚ3 .«€™eî2ß—uÞÿÞö#åH‹ #ÛnâJ©”ä;G¬ÕÐQ*& ´<åRi#—a9ÈÓb©G»–u² ª´þ2Ó½þ·Ôý蕱Ѻ[÷Qª£ÓÄP¨={¶£ûzñâÅêø—îkM»üÚ¯´‚ºW~ëjûîÍÕäß|¨i4þ©[×-hÿá_ÿ“ê©{×WwèÊç© vnâ³?_ü÷?¿(ÆâÐy)ÜŽ-Ó¸ÎȲ§\zÁA\$Œ‚:beZÑ1½ÕÍÌ笴Ď!Ëúeؼ’¾’z¼ö0š,kß§&þ¼ZôÚ•ô CG ê舕“J—²@}Ë–-ëȶ@glFöÄ•Úd[)X¯ËÖacë.H”,,gÿG za3;žx5td$ÎYº³gÏv¼¼ýÊ_UÿýÏ7YºPG`ì•ߪ&ÿæCÕS÷®¯þÿþ'Õ³üËÕ+ÏÜTM~󷝨¼¾£ºüúŽê×ÿe5ùÍß®^yæ¦êo?ÿ«Õäß|ÈeçÞü¯;:*ˆRUUuèСÊ:™vI–%ã]YCçùÐizð¡C ÙUHo2š™–¦XÕOÞä=E¥û]ª†Y¢¬éMð½mÊKí½°Òl ˆ¡ã   ì(õ…?¦´Lª¡ãà-2 ×Ò+#_:~œ–7_‰-@–½-ñd«s]f$ÿÛ¹^JñRõ¢ÛÆCëú¶ÄœJQΞ=«Þ»Û‰Ÿž8RÜý¡&K7ÿì¦+©— ÔÜ}Ìýí絚üæo·²v^`N²sN·¬ªªj4×zìÕÎI@g8ïù®t²¶.cª@‡@`³&ˆÑÄ-3-‘rÏLb3+ª™ã)e3ÖŒª¦7ùÎL˜­ôI +ÑûÙŒ=ö…‘‘‘5dÎ8bí¸¡øää䪑‘‘5###k†††V ³Ò@µý±R+= ìe®ÙRóë @Š€VÔW¢}Œ'êÖ¡.wÿG ºySë/–RoƎع³gÏv|Î}ñâÅjjÿŸ´°tÔ}ï™]r<Òkï¹êk¿Òsœ;¸ûCgç.]ºô*:™v)kç2*—’ÿ/; ‹Ø:­~)—"Z•¬+ižfÀJæ5\Y×h²š•P`MÌ£‰±w~K¤ù3mŒÐñº¹ÑÑÑk†‡‡×‘ÿ¥Z6ÕÃÃÃë¨mܸq-÷¡«k'ÐŽ2d¶æ­ä÷*bɾVr —ª¹zÏe™á¥êÿD7Ž…™þ_ªtÉÙ¹sçÎUgΜé¸0JU-déÔµ¤_òººÈE`n‘عóçÏ‘:ÉЕ:ê$éÅYºj9EQ,·ó’R:ƒ˜X2À&3©.­W³&ÂÙï²¾;šÜgóè99¹ŠR0éùÁÁÁµ2å2[§M@%ËR–躮ãÏVGé2˨Yû½n²iš‹Ùÿˆn½1Çšò„Q4†îܹs‹r §ð•êà¿ÿyÔ5Ù:îàx£öîû.ÿÍ/5kæfÿòýÕÛOmh¦ZvÚ{ŽbbrjW£Ñ¸vûöíïÒ.=•K…³¼º—Ðiì='ëçr‰@ J³’ d4̲d%¢ Ù‰w‰r_&2ó\iê[–­âßS ”2ß;99ÝâCGõsƒƒƒk9xãé<%“ÝÉ“§ŠŽ‹·h¿«—^©yí•®¾—(°–(©F‹Yä}wöx³µ§ËÕÿˆnKkoK¯¡[Œ::º'RêåÿÓº–ôKìZÀhôú¥¿ÞÔdå$˜{ó¿î踲%ž}ûnÒ:tä?Ç™:®r™ˆwmÜ1OÅF C 0ˆe&cÙ‰eá‘vMœ­ýÏLºKŸ7Q-9_¥J˜Q œ&†âMDäëÄÐqvŽ×Ñ 744Ô¬§#q2—)—Ùc°ÌÎ#æË3¯c–m]Ë¥,p'úIÉBA¼–ôÇÅìÿD/Œ‡™E©¬e¦tyæÌ™ŽŒ7ï‹ó3Õñ/Ý×ê8[GÀ.jä$˜;¸ûCÕ¹c¥OŸ?þ@£Ñ¸–šÅÐqfŽ[±ÕF¡V-·±8ÿ_>Ÿ9:X]¿:«ýÞ÷—NL³@®”eËLR£ @ m§ÎRºŒ”üŸT. È€“EèCCC«I4ehhh5)\’±8ºì~”€û3º³ Ü{.;¡)±»è´w–\®þ@tÛ¦Õ×-ï¹ÈX\2tè:íGÇãÒ…s ˜:uØYM9ª™;¸ûCÕüÔ÷­?Sº¥ÇÐñº¹Œ±¸L¹ÔR–¡«#Œ@‡@ ²à®dVZw–7‰€6qÌ€¹¬g\–µ+a#½}Ís;€ÀSž$†îĉ“Ãâ´Q½=G‰µ£ººÑÑÑkˆ¡ãû¨ùâEõ}uػ̵ùJVìKG2€§Î~d}Küö:Ùÿˆ^tÞóš—§æ£)U.eºÓ§O/JÚ%ßßÓ?øJuðOe°£FÀ7z­ÈýûŸ¯¦öÿIuanzQ‡}ûöÝ´yóæõ £ÿ;v\C^tœ¡óR-=æ®ê†NK½´ ÿdûÖ·¾½éÈÑã‹¢¸ƒ@ zÔE+–¥“¾Œêc©ÑwIN‰Ô|såÌ{K&àÑD>#ßïMèùçOT“S»8+Gl ¢”nIutÄÐŽŽ^344´úõþÆôô —´V¼£Ô߬)| ØõÎw©™}ôZ@F,Ó¯2,Ùkºýè@—íSšÏ¦ÅΑÒåùó盀îìÙ³‹¦v)÷û§'Ž\aë°#p§5z€Üñ/ÝW;v ãö2Ο?ÿÅ 6\G r–Ò¥L½ôR--<´ì*—Vúe’¹8/dG mj­dfÀN±)Ö¾•L³û]ÂÔy¯·3ÐŽ—O ¼É¶Uk'ÁÕ… ªÃc?¬:ôQY37::zÍÀÀÀ*Zåé–²Înbrj×[ÇÆÓûaOô[xà´tõ½þƒ¥@®¤Î,s}f^ÏÔ°f„TJú?Ñ‹ ™‘g¦–y`¥\r@ÇEQ(åòÌ™3KÒW.]8WÍO}¿:yàÏ«7ÿëŽêàî5Û‚ö§¿R½ù_wTSûÿ¤:ýƒ¯,:£ 1̓nppp-gè"0GÙ#‘ÿ\×:é©à±v^ÚåÄÄ}ëØø¢R¿¢?ºÀ”0DQº–5Í‚ÐR¯-oRžeÖ"ÐVZæ)\ÊÔŸ’cæ¯MOŸ¨Ž=þ–\ý$:sìSGu ƒƒƒk¿õ­oozãͱK333áwfH;&ÞYQb Q²ý:Ö%ïÉ€Õ’k5:íô¢×Æ»:ê–ž¹8:n]@€n±ÄQ~toO©C !h*M´&Ä(,j(5n΀´ì~”¦¾y“‰:~|Ú„ÃK·¼xñbõöÛ'ª#GW?~”R'ɃŽÒ-)­’ ¥Ð ÈÿÜ›où④ǫ™ÙÓ©ß6ÃÞzê˜Vºe]ñÌó%טzJÒ£Ïy×Qv¤Ä72 Rˆ^ë¢þ/E™äÂ’ÇÐq0Ç™º3gÎT³³s+ZǂعíÛ·¿wÆ ×qQ«†Ž²F2 åË-±Tµ\¢(’³"Rwáê0êŽ=^MOŸ¨fg窹ÓgÐÐÐVh›[¼Öîö³Ÿ_¬ãXìó£µ™ÙÓúk³sîûffO7ÛìÜ™êäÉSÕ[ÇÆ«7Þ»419µ‹HÊÀQ­¯Y A‘X:®*™:MÅu2ƒÑJ»¬ºÉ‡Ž‹ŸXõs%`Žšæ4WÊÚy€Ï»1dn&ÑÑúnm{Þ„»Î1f&ÐÖsÞ~×=ÇÖvJ›0dM;ÇæígtmXû "uö»äŒØ—ÒýÈ\[0Åý`J˜À̱• Àœ}ª;1Ê2œÑ1y×cÔRM¬sË}àˆ‰£ÏÈÚ7)ù<22²†‹›HPFŒgë&''WIÈÓ3ùwûÇY@mÜ\0hg®jÄÄYï³^fš÷Ö5ÝWë$í{xI)Häç¨Sý¿tìÂøñ9Çÿvð8;'›dê8K§º¡¡¡^ºtéÕ>®››%UKͪ@f¯H; ;畚YXiÙ:«¸Ïó¢‹l ´L Üi&|à.eò¼›i¶s· ,;µåhu÷;úœìTÝ~Út{±uâxK@H´".ˆÇ,•ÂhŸ ØdüÜ×]Ïœcy>¬‰œhÓ_:N™ò(Œ|,ïÛ´Iv×Å ¯ãƒ$½F©•\ùrhhhõÈÈÈYÀ.…Sdã¯Yl[4ÓG4™ž‹®Å,ó+÷Í›Ìg§õºÅ™‰|ÝÔ@ëwìô=ã?Æÿ¥3l´•²)t¤âè:vûöí»éâÅ‹ãýè:ôQydýœvïä8#²+°2%ÈãÀnYG—¥ËŒÇÜi´&?©°“hºŸnšË=Xõ(­íÅ>þåø£ko1~cëÜv¢µd{ÚãNœ m2ša³+§’iȲ_Ù•û¨ÎÌ]%í<{çÆbU< "¿øÿÄ„IE0Τmܸq-Ýï9€£×égš‰8I“<ÎØiéšV]6??òù Ò€at]e@R)øZÌ… ,E÷¤Ò ‚vúö^ƒñã7ÿ%ýß!äI&jëÖ­ïÛ°aÃu[·n}¹M›6]OLݾ}ûnºtéÒñ~Aá@Žº;w®çé–Öõˉ¦Œurð[Ö”Ki&®™/ “õôXv¤Lz¦w3òØ>ù>«¶¯d «{óÉ~oô\»à·î¾·sœ™ífËÌoÝîÍ»Îõà  uÏE´¿íþÞ¥u®u®>±”ßUø´3ØF×M¦/»†<`Â[ÇnY‹Ñ’¿±'>¢©ƒh#PH`ŽûÏi¬ôyÎÌÑ{è5xÒö€þRÝžd 9h•À×ãgã¬H‹õ›fÓ¯e‘ûÉ÷#>­ßÕTÚöKZJû¿uß)]äÂøñ9Æÿ’þŸIÇ$pÂU ØY5u$Bõtýê&&§vqa-ÕRK×½"vN2t^æ²Ûhµ4K)˜"Õ^"@ÇOš¦‚)S1ùc|¥i™Þ»äF£ 2%+T†1ºqYù:7§Ì¾[õŽ^ýcÝÁÂ:çÞyÏl3:¯¥7ï,€ÊL.(8䯓¸ gè¸}™Õ\4ÁÏN€3«ÙrbmMÜé5ɺi€”3xü9nE000°Š€ß.Ô8€£tKzgýø5k]èðÿ©¦OÖTh¿¥vNNN®Ò˜¼h-@Ôe–ê.&•Ô‹y`T: àÉþe”öÿR †ñãÿrŒÿHQT“¹×šL=äÀDz5èöººË—/ÏNLüøQÚï­[·¾€\¦vNª9Ó}¿DŪ¡óœ–¡³X8¯ÆN³3ÈÔÓe€œ'¦bM`-ÆO«ÝóÔmê>';³%üb *Þv½çåkÖà¤`ë3ò&ê}¿Ù“}Äbœ¢‰$g!µIIøh¿,6€ŽƒOúå±ñA…¶e¥ò:dž¾¤MÚxŠœ%’aâçŽ3o Éý¡}á*•ÔøwpÛÎäIåKÚæÀÀÀ*ŽÄîÑ6¹(‹–*Á<ÿíé½Z*)?nÃ`ýîü|Y,¬–Vm& r–\.&ð×øö¸B´Фˆ þ{hÌ´üžÌâ‹'lVÒÿåñcüÇøß+㿼žµþ_GA“§^jB)R,Äó¬#À·oß¾›Îœ9óìr¹ŸýìgGÂ'r?5fnçÎë-eK®ôk1¹%©•]ËÐYÌ[T['ÀK»Ôž×¤>#eÌhòÝ "…vóhKWqJö±Î±z+“%Ìh´òå ZÞ¶£•Ôìï–ÙšÍh€É,0dØ«ÌêbV6º£÷g®ŸÌ÷D¼–«®M\¬N ¡É½ÅZ+ûSª1pÞ~YBN^Ú—µo„i¿ïœi)P”Z¢¥ÂÒ¹ÓX7ÉvY€—3mô™áááu”2É÷•/ryûH;~î¸U‚|E– »Hðo-H¿<É j¬„ßKßǯE¹Úõ¡ýÖÚ>y×V7b¥˜YÀ"[[¤õ±Òþ¯õÅ옂ñã7ŒÿÖ‚ÖÿKIJ8P‰<ê$[G€nëÖ­ï“uuØ-e*æåË—gççç÷k@Ϊ›Û¾}û{¹Ò§‘áÖ5VJ±výEø„Eѵì*—ÚcËÆÀnš›z»ì\Ý4ÍÌM³(F F»ƒLææÜîÍ1{NêžóìàRw0«³/ülæœubÐ^Œã¨; —\k^Ÿ×Ò~´šCmeWîŸ4k)«ÖdÕK²&´Öï©Mº£ZŠ(Êcñ¼ÔZ+­Ž./ÝN4´/¼¦MžWÉÖ«&Á!ŸTº”Û§TMbë,uL dåy'0ç¥,j©Ÿ#(ÙDX­Ú«Î(; õd¬~É-"´ëPöK³Dh´º_~Ü|EÑ©Óÿ1þcüï‡ñßëÿQš¿Ws-Ù(éW'ÝöíÛß«1u2-“ÀÝÄäÔ®ÅTÄ<þü‰‰?*S+­4K:sQÝœ³Ê:¯q•K‹[¶:/ÍRóœ‹R/=f.2$_ªIm;J6‹¹ýNÇbƒèÌ6;ý;XÀ`)~ þ}³¼ÔûÐÉë£Ä7²&S¹Ú]yõ&œR._›Zi]Ñà¬ýþt]XÇ£ÕñEïóêõ¬:KÍ[î7î–ƒ1XÚ>ðsÉA =æç†×éÑÿÊ¢ë‚Gé÷Ã÷ݪ㳀˜•–©‰›h露6Ðû]4¶É»ö4€$#í¬…’(=‘ûýi×tÉ÷XýV^{Üæ¢NÿÇøñ¿_ÆÿLÿ—jËžp gè´F`G¦bRÛ¾}û{ àiõu¼ÎnhhèƒS÷ýô§?ýüùóçÔp/^?sæÌ³“S»8ˆÓR@-0'kùcµÒjÇbè2×S¶nnÙºÈwŽ3uÞ”¦]jŽë¾‰ÖùlÔi—rBŸ¹9/ÀXNP³Tß¿ÜǸÔûa]kü~kÂç¢èû½ÕR84ÖË´³«È|…ƒke6“:¦mß;?ËÃA 7ì¶&Ü.º>,ðÈAÿ ‰›àãïçûDÇÄ dážu’…äûBê”Öù£ú>OèE²p(õ@N¸X@?Ûÿ²ikCõ? 0Gûá]ëÙþ¿Ô÷NŒÿÿ—â;2ªØš“ô¸—&šâùÕÑcÉÔñÇ\@…Ú¡C‡>zèСNLüøÑ'NŸ8qrøÌ™3Ïž9sæÙŸþô§Ÿ?qâäðÄĘœÚuèС }P¦w ü¢&Ú¢)XZ€Î³)ðÔhµT˨ÿgÒ-—Ðe…P²l?XMò3ÃÔq†°q•è½ÞÒšÄX?zÝïêÖQ§)o{ÐÉ|¶tû™ýÓl:–‚Õ[Œã]Œm”ö[ë×Y%î„ÏL;÷žˆÑh7ý)cˆÊ·Ç…F¼º=Y³&™>¤ä„¿‡¬ x åàààZ™RÉ…Pø½V6-¥Oš”ó4@ÜxM½¦õoHdJ¨Ü3¯•Ö…•GDÛÒQí:µV­Kîèÿ‹½Œÿÿ—sü·ú¿LcŽ|O5O92E‘סYb)kF@Ìy¿¸iÓ¦ëùÿ’õ³jä<Ãð 6\GFáÜ@œƒWl5ïÐl·f.$»Еˆ£xŸ±™FOjÀz¾ÛW]Ú½9,× Ö»e›ìo´@`9VQ³«7(¢s¬ ™ß%ó=Ùß½„Eð~Oïyï»ÚUÏ•ŒP§S¥dŠ[»“™ê˜Iuå †ï/O'”ç[ûí·Ðþò4;²-Y£ œhµidqí‡dî"°¬,-ãçÅ‚¥bF«Ý{_ÄjçÒëÿí,ª”.ÔtjÜÃøñ¿ÛƯÿk÷K—)¡ÿ-¯:ÉÖ¨ËÔ×YžvÀ“¯y`N2†’‘ãÌœÅÊI¶ÒóÑì„¡xWºÈ¶Àz]¢UÉÐejî,¿‡Òճ̄×J%õÞ)t–¬>•\(–ªN¤"Ú©Ar)Ø¥lŠ_4©¿U† ®s~äõV’jlm;[_ª]k¸þ¢m,Æ5ã±ï¥«à|"ýÝäwXŒ„×Ç«–ĺ7•Lª¬ß”Rµz@­¦Íψ&é’ÉÓ®[™n©¥kr`èü¡¡¡ÕòžI –{ÛI¦Q›P•ôë7.°Ìüí0AÙíE÷ÃN¦cgût¯Ãøñ¿Æo±E»G[‹ƒš-‹wRíÑvÈ“ŒÙöíÛßkùÙe›Ü¦êä~I@§Ùðš9ÍãS³©ñ® ¯ÿg2»¦†.bçäÍ0ëKYXNì%V %«FѤÉ øg%5ëíKt“ÑnpYÜÎjat#µLä½ýêT:ŒÅÞj×wN½¬õÙ̵։ÁJ›Äkƒ¸õWNB¢ã(9^ë¼yßMr­ qV!7³ývíŒçL4¡(ù™ëÈû¬7a×̸3Ì,÷˜“l+M ™x¬!7×~nH.S.VñkESo”ì¤Ö·H@G¦Tf®+…Ñ)½_x“t«¬Áîј8o|+aoJAnÝþ_2f`üÇøßKã)Ãg)dJ`à Ìq%L«FÍ2ñ&Û î8H£×´÷p?9þ9(ù¾Hq™ãÇîÕÎe]¶ÿwe ]ä=Wj:¬dô, Ygrd™›ku|Ñ*|ä½§ÝL2“áÌÅ“¹kçIÛyì‹j1GÚê—ö»•þ^ÙÁA»¦¬mE³ÈQ[°ÐnðÖ9‰nYÈúµAFn'ªYµ& ¥ Ðúm Ók&ÝÚ›Ìzþ0uW½IŸlÚ™ÄÔa#K&E\i2b¤wœT±” ÕÇyû&ÅV,íuzMSÀÔŽAªjØ“j‹| Ï¤’j ÞR¥ƒEŒTö¹:“ñɦà¶Óÿ1þcüï—ñ¿´ÿkª¹ÒSMá)—ZMgºd“fäFãÚ­[·¾Ocï¸Ñ·LÑ”ï‰DYdã@ÎJ±”€NŽá@·$=Óÿ=LÔ5ÆâZ`­³ZGïÆ¤±Ú(sS©“î ÝX¼×µ§v£´V4Û‹™´nÞÖ Îšh[ ÁS5Õ^³V>-öÖÈ<€¢ís´°à1ÉV ¨5¸y“|ë¼GÛóΑu}h}1“ò¡ ŒÖùÕnXÑ@]š‚ÕõÕíÿuk2Ÿ+[%iZÙTŸº)MX“ˆ’šIî;GßÇÿ÷L^ÛÇÛääd‹º§Å e@ˆ¦@)÷Áº?—¦²y»NÖeêX³õ¹Öu"Ë0¬Œníÿÿ1þwóø_Òÿµû—LÔêÅ8è‘&ä2 “{ÖqpÇÅT$¨“À¬¤ÉÏy*–|µÔJˆÆò“­Ûÿ­•®tÚÔn2ÖÁX1ÛKÁ¡03”yv?"¡˜ˆ±ç6ZY²V‡¼U­¬7 ·â›èæÝ„£ô/ ·äúˆíœk×Q4¡°®…’kݺž3z¾ä¥Ffûjéo¥d·QÿÏÖ’h-J±¨“Þ”Yu¯›ÖS§þ0ªë°Røø{´ú8.‚¿‹Ò(9€“i•¼vo£õK<=ó=ïyÏ{hàX+8ɤR·Sg”aãJ<­T²»[ú?ÆŒÿÝ6þ·#n#ë}9H±€LEä¬NÄèISr+-S¦Hò¿jj•rÛšŸœ4— nçÎëeº¥æ7§©gÇé¨Ä¬ëÅΕÔÖ•l£¤FÏ£=³ÛŒnš8Í‚Ùì*‘•“Þ)p›Dµ§.ÛšY½ÓŠL­íz7ÏÌ9,I÷µVT3°æ1`ÞwZÇ•íouuïý£ï¥ÇDç=ûûeû¿VS­˜—ª~¶;8וN·R½êì¨xìa<}’§|Çkç¬Z;þ<à ˜ŠÀO¤šQô³Òn£t¯,¨“Û+©óÊ‚ÌLú°–†æÝº©ÿcüÇøßÍãIÿϨõJ`Çeû­3©„)S2µÔL)P¢;­Îz.c.SG=Éε#Pæemt- ËL†<Æ ú?³¢$S;Ú]¹“ƒ¡…¶Knâu¾[û|vPónÖï“9k²ïý¶Ùïðn„Öï›9?¥+s%i™U¼Òk-J—”ïµêF£UâÒ´gk’Õµvb%=Óÿ;õ}^ D¶F)JU*Q*TI3vÏ«î„_¦1Jso©P™ô(]Rn›ƒ9Íp“„)Ì¢›etŽÛIkËRÄÑoiÝä³ìM©ˆN†m*¹f2ƒO”bQÂ4{"Ö€¯ |uR’¼‹åÖÞ)×–ÔíÿÑ sÔÿ½÷º©n¸ª+@‘£°Àxi-^¶6®XñR)­4I-]Ó2ñ–Â&ž GÐ4UÌHôÇr˜ÏXdRD³ÏEB=YK’¨î+³ ´œýã?Æÿ^ÿ³u¯ÙÚa) "…R¤9J%)z‘õA‰uAÄêÕUËÌú‰Eéš%†îÒ3N~Vš„kutÚ¾jÏ[Û²@—7éñ>cÕïej3êŸu”&KŒ¡#–¸ÜFµ‰%cÆŒÿÿýñ?Jé.­Ïæ‚Ud¦=00°Ê3!'vŽ–K¦Ž:ÉàYŠ™ò9æ"ð&¥U#ç©Z’ÇhÅ`Ë"£«]ÉM©.›WzsÌtúR¼º, wöÒÓ"+ˆ’sZʤ”ެꪕfö+ëoX÷·´¶]R¦És—l¯kÌruúeéµQ7%¦SýßZI_Ìþ_š†X"ó^—‹€B†íɦåÕñ+5†–©“^Í1rˆË€*ùœ¬»³j9ûX’¶—è)]¥5˜Ñ¾Zד·Øàµ^ëÿÿ1þwãø_Úÿ#ß:•ÒÀœÇÚY5k²0O\ÅòÓižVÍ\ÄIP›µ)ñ”d³6]ÃЕ^”ÙŒ•_\zRËJ$×£ý¾7Ø,% r³7¸:yýú-ë¬tE©*u¤a³‹Ù”‰6+ssϾ/{×níþV±›úf"ëMæK„02BYP—Æ1“‚Wê§DR±”Fáší€4"—*–À(I‰Íœw©ÊYb¤]aÏî;é¶¥û_ºØÐ+ýã?Æÿ^ÿ-–½®¹3Ò‹3qÒx[sqP§4n) EW¤ö|_<Gì#¯™ã)—¨“ ½ž—m¾µì€.s1zEÅQÇÈ$gßW÷†Õ.“Ò ¦Ý}ig0»ºÚÎuÐÎàP'¤d€îÄ`§™ífüK&*ÙóÌoÜ.Ÿ}o·õëFX—Ô;Y`"Œ™T¸Lºf´Ñ„¾TMS›|hfâ<¥‘×ÃY‚(rû$j©“°žMgͰ[™tËèÚÉÔqfS}#ð˜Ù׬²§v¯Ãøñãûãþ_"´$AÕìq@e0 줂ö¼TKEôR+¥_]« ±«{ýt C ˆ^O}OMñ@…\íÕ\¾»„h€áûí)+ZߥM8ê€×vÊ9¨‹XÍ’Ú/OX Dˆ¤´[ óPÇë(ûýžPKtMxß]‹Ë Šˆ~¯êôÿ S§ ØñZ;KQR¦hÊ÷g”)-¥Jí{8P‹ ÃëÞÏ3ã?@,ãjx6]ͺ¡g- 5–ÍÛŽ6È nd'%Ì¥e<Ý e ÜÊóQ’¶*¯Ï2"bW³¿K`¬Iªg<”¢tTë÷¶¾wbñ]þ_"˜ÂÿZì±]ˆóì<°;K™S¥uêåJÇÿv~K:èÐÀ ”Úck2¬­¤j“| |dAG ³¼À²õe%$»:\G™­ŒâN|O”k±tíÔ÷Y׉¶òô€\F@;Mj ±ø ®¤ÿgú:¯£ãàˆ§)ò×#! ŒY M6Š7n\ëÊLkw¡Ð»ÿÐ!D—¼’¾6ÀfÁ‹œg<üTBk@/YYCóì È,˜Èz¤•íÖe#Ðhýžò½üý*IÃÔj@%˜+éÚ6¬ë.Z,A ‹ê2ý¿äÞ(AÆÜYl™æiç)hzLœõ>™*jýß© hÑ€@ –9,Æ¡ô†nMðù÷” _D@±NЦ¶º›e!KkÈJ@n)¸²€´ KÁQÝTÕH@ÄRÚ5è½?bëJ<†8³ <XÚ±«ýŸVSÀ´êÒ8‹—yüq”F)S:=WÀ•,¢ýÿÙ;·Ç‘þ,ösè9÷~5 Ìd²$»Ý½@Ó~j,ÙUY$“¯H+GÐ<´Ã©v=ëßÓ¿Š˜(3 ·X¿#$ºÛ* W¶i”öÄ;Ii¼[‹·iƾ}%p»k*­ktç¾[Ømþ”ºÕ S„ÀçÌgÛïj˜ân¯Q»kÝÝõ¶.R÷uÿŸ?þUÂÐ¥VV‘y2º ×iþGÐ|Øg]¬ÞI·p‹k7‰T¡S'’dr®‹ìj‘ìBžs$®’“m¿·') ‰(Jš¡wÂå¤õ„3Xé*²{r'£„N¨U‘–˜ý¸MxÛ~ÿÓÞ¤.QEíº¿;3•ÚϽƵµÂݹÓ,À˜ ¯ ÷M©u®vªÞ6MÌ“0Ú,Æ“EÀ”¹‰¼Ý©›Ä««OT¨Š³M â6¥u¢J#tIŸ$w $QÇîqW×|߸–ÛZ<õÿÚ6pßÌN8«÷ï„Û”ž›lLQTµà;i‘ðîÅd¼êûÿä&Ø•ÓÜö]µr:€7Oz®%Àd÷¬„›J}LÓA¦ûÕd5MpÛ::'æÜ‚¡Û9í^ëÉÉßõÂ;í9˜¶wHïÂàæº „bw]^¯ùz}«ˆéº€ÏÝ´TÖüõû§mË»S-»955é~Gßa€ xÑDw]äv?𪡸Jݬ‹ãî¾)ÝeS¥ÌKºãÜŠ³´Èü*z'ÇÍ.ï3”m±ü¶ .õµž ÕŒþN:l½–ë5WÛ)ÔǺ륳>W×9|Î\§¾ÿÊP)í‘úTI©ñÔ¶fPõ}7:€P;rJôt [××§‰SæÔÜ»c›‰lrmL 76-œHMÒ;§zcÕhd*dw‹p7«ÅºZÈ;a”6GßNØÛ¦ÞªVä4"Ú5\O\BOzÏÕiW[‰¹ä:ÜÞÖ½‘;€Ÿ=n ±¦ßRõøº9VEÝfƒÓ‰¶OÞdBÐüâ õÄqÑM¶J¼9QwâÊØ90n ØÝã»Eƒ«?ë"U”NõNÀm,»ÏZÝ6™Ð¸H ÀÓsQ[ÊXåÔí7Ùˆ›2P~âï ‚à°íï6ÕJMæ+wÈNú¾u“þÁ›Dài][ÒrbÛ€Ü-Tœ)ŒªaLŽÍíŽó€W»ëœâæ.yK6¶¦MµnŽûéZ:€_ æªsÖÿI4j]j2R>S3½n÷þ]=Æ$t6iNÄmÍQÒz=—9 Vw¼ê³íDiðÊHUª ê{7†N©;ðOÿ,t¿l‚T¤Ó¨MÒ&!I'L£oÉí“©HêH™Dçî¾ÿ]gËm­Éicq%uð]¸¬ˆnîråKðoAð Dœëq·i <¯d¤é›ˆY}Ìô:§ÌçÊ$º—ö›KG·.šSä®;_N¼vÀ‚ŸÁ@мIàuBϹ¦u^®uÀ¦IwšŠé"^.uônÿ½ÄõÒ5OOŽ[Õt$‘7wÞœptç^õK¤¦AÇ` èÞÌ&ªå¢t×E½‹â¨÷êFj¦’Ö¾mÍY¦¾v“3¥{lÒŒ<‰žˆQw.Ò×í®ëm€ c0àâmÛø».ؓǪ÷TQ¢îØ&a7õ]S"Q‰«ä57õlÓ{nŽ;­»KÅšºoŠØuçí i—:AðQWài„jJ=LzÚmï?Mté˜i3îmÄO5´ÝD·=ù6m&j낤6ÑÕΩôL@Ð1:€7àÒ!Už* :q8‰¶MúcÚðÛÝv½¯ëÔ+.9SߢÛ=ß G×k©¾îU€+¯Ž_];€ c0t/Ä5W‘W{åL;”Øö:†i·­Ó¥r„tm ”ÈU»è]*”'£“N„9\¯W3GÊ%‚ŽÁ@м¤ÎɹN‡ê¹Î4dãé"FJ<©Ú¯;Ž–ÛTѤ֭û|7é˜Np)6™âT!WSks:AðfAçþV‹ò)¢SþUd)aVÅBbÆr’†Y§ &%U”rŠ®)ÁØ ã´B'ø’6N¸WqÛÓëcªÐƒ xnqï\*•¨« }÷¾‰9ŠU©£‹ŒÕã¸þ}ÇÑÒ“™tb6mNÞEÜR¡>œt‚ލ‚ŽÁ@мYÔ¹‹ª¡êî“H8éy6¥:3—&Ù‰œ4mÒ=7uƒìDѶ.í©× wÞ•h¯F8› @Ð1ðqWæÝ¿“\i£j—ê—ö¼KjÛTÚdÒÌ{Ó@ Ðúž*r¸qýìj •PuçwºH³@Ð1:€ÿ N0uF‰¸JÚ!Lï3™Ž\…ßÔ'®»¨ãRÍÀ‹¥zÌ$’§Ï+t Xº¸R­ î4¯Âð¤Avꦩž_™”w„ÙÔ>AE0¹:AÇx» ãC`0ŒŸ»#§z˜uѱ'ÒS’¯÷Tïë"‹.:¸­yë>ƒÄðeë Jª$ èß9þ¹ÍZñO(IEND®B`‚instagram-feed/admin/assets/img/social-wall-graphic2.png000064400000034727151435171370017236 0ustar00‰PNG  IHDRýP‚WŠâPLTE ççêÜÜßààäÊÊÎééíææéææêääèééëÛÛÛääèýó­ÝÝâþôîûñììì¼·¬¦ÿÿÿààãííðþôïþôïñæãߢ¢æÜØÕÍÇùïéääçõìèÝ¢œââä쬥ããæêßÜïäàõëææ¦¦î¬¬î¬¬Ì••쪪樢ÓÓÔ°‚}ææêüòìï­­í««ááåï­­ûàÔüàÕë©©ÚøëëîùßÔúÞÑòÙÌÖÖØûáÕí­¥ñØÌüáÕýóï÷ÜÑõÛÐäÍÅÛÓÑøº òèã처íÓÈø»Ÿù¼ òµœÛ¦Ž÷¸ŸéÏÄ쪪õºžùïëøíé÷ÜÏøîêøîéøºŸ÷¹žö¸ååéð×Ë訨üçÝòÛÑõÛÎêêìçÔ×é§§ê¼§ÿÿÿï­­üáÕù» þôïÐÑ×ë!!ùùúüýýññóîîðö÷øôôõïÖ×ÜÜÝáþóíýäÙõõ÷òòôûûüââæøøùíîðþíåÿ÷õÓÔÙððòêëíÙÚßýæÜßàãüÔÃþïéýêâììïúúúú¿¥û͹ýèßäåéûѾ÷÷øò¸¸èèëúìûÉ´ååéõÌÌûæéô¼¼øÛÜÿúøûìëùààüÚÊýêàüßÒöÑÒüÝÍõÆÆóÁÁúªþúúýññð²²÷áóüØÇüñø÷ÖÖûÅ®ìÀêòÆáúDzÀ ™ÿüúýääã¢Ý©¬ø­«×2c§Ôù8žñÂ:»·§Ç&¤Ñ(qî==æJ8ÒmÎËIÀúưðhdâñýóÒìà“×â…¾·±ç‰©ïŒ‡È†Ï-„Ü9Qr»öX®ô)—ð×U óurëaHÆãûð±ÄÙi¼Î6™êY[ñøþÞßäüÕÕÔS¯äv–󂀨D~ßUuÇ÷ì³ßØÔüÝÐúÇÇßc‘èu}éMMì//Ôêü¸ÜúF¥òßßäð»Õë Á镵ö¥™áe†ìš­È÷ÙyQêhtRNSÁCc%ౡ’Ð3rÁSà¢ðSïïÐTE5&“¢t5ss‚FDddàÁ%¢T5Ѳð²“ÐÁà“%ಢd#ЃTð±“s4%ÁeDDàïc$²EÁ’ƒƒƒscС¢D“ÀdcÀ¡”Tå6É2†bŒ¾É}ÙhE¿¢sî/¸t³]Ë0œdïéÈbæôqcÏö wØÓ%‘~0¶ð+)ô§3% ðà\xø±vMàÅ0]øué¿$?eWÀî­SÏæ£î錘s_ Ý\œ¿ô—ȃ\Œj„ëLw”ÊòÓý%šÀoh@ÍÓ¯¾|ÁOþ8¢a¹%üâƒËèýĥрçn¤4±Aä0±/4àÊ#Æào1&˜R”¿ý7—ä¿Ñ€VT=Z 2Ò>a‚¤¤ñf..ŸÜá‹þZ"É}CŠG_øãçÙ¾Ùu¨žÜšg£¯„!5ÂE0cÎòriÀ¶ê¿ž$Œ/õåä¿ÆìüíÇ]6{Ó€ö›ú~ô…Òô_ÉDX‹Ž”Jž1E‘޽âã|ºíÏšv> è¾ TGÆÛúèA¹ d0}œGj™þ«Èp>¾è[Ê?8ê7ä¿ì+¡­!ÁžXYýÕR®€ uLÿu6õ¹¥žA¢8_€¼ï; x7…_¿"önÁ£ dV€‘„ ¨_úofoûz¿'lÔ]ÑHÂ}¥÷9­G¹Ž/„û÷žÛœ$<ª„ðé5ú«±—áUA†ÜˆþZÒ€Áö3Š Ë´ù •~OH®éh€i52~6rŸÑ⡼¶ß¾×Šß*B:ý /f;©Ç俵ú4ç75À¾ ý=[|AØS–O­‘ò»;õ…a@#rÜÝË]«øço4 2gX»»–Ò)aÂ.­ê«Wx€pT y…Ò€º(¿‡‰XE~«Ð¼[Q€{…BvñA@*r†/Œ&²ñÖ_SØ$—®þÛ*€ |HB ˜5­éOˆ>«Ì›çîYç}$á†mŽ“B;ádcÈÀA°½@ø”Ð’áY‚ z œáŠÓ¥+üÜÑxó!Ó’0h@%Îð‹$ N3øVÔºxðÐÉÞ @ ðy¡5•ÊV ò04  ãg;ñÚ»NúÊsw/ÿ£Š¯÷‚•9ÃÚݵÁOôkËgn\»°l˜û…ÔöGþÇpÀ‚mLÎp%ÆÏ^îÂo’?ÏÝmõ2HÂýw†ÇQZ¼‡zôùëÏ#G¡Ëý±)0ñW"ƒà W ýla.ünÃKãí^CVÄ~ÈE´»‹ò.ÿò‹·Úk| =Xfù? \‹i íÜ Ð'åw­]Ö¬¹/%åɼ7YBÖê»$üθ»“t¸6ä<Ø„Œ™@™-:€€*`7Ap‹`ÆqЀ>¤ÿz´}ÖýÞäkQ€L!ë·3Ü^"É•~§_Ÿï\hÄ4À[JéN`  Äñ°ßЀ©ŒéwWÅàþ€v÷ŸO›5düÎpg ‘ަ“º$á D¾+€ˆû‡Ãbxè„9Óÿ°D)b‚TAwdYQI˜Í†»úu@v¦4!.`0g€HÂæ2~H&`ŸßËâaYEÎpÁÏÓ¯‹Ð€ñ©$Œþî{Lj *î ßéóì®’ 0ÄS|ó]p†{ºµÀŒ¹áÁz@KK£­r˜ºÂ2=V†bT®3¼{ùÔ¥Ÿí$‰Sëq+¶@w, âWã ·½zMc®E=ã¼u†aÙBoSJ ~Gô1+d±èè¨^”ß’[誇î臬"I8ü‡O±„_ó™¡ Æ1œaIÐÕE¡øûÀ®L Jœ (”þy™…>ê¥;²šùÅõÅoA-â¼}ȼ½Îð`G•"ݸ& \ÀÀÌpÁôÇì®bŸÝ-0ÄÃ¥âßìðô”›9î.ü=¦óáá1 ÈÖ€Tr¯NÂNgüa¡"éÙ])Ø „6AÃîX> È qgø~ ó.ISŸ _3’0LAóÕ@`XÃê—b> (bü¬fÛ·W™ÁÝåBV<úÅmÆ`#¡Ý]%ä$è×ü¸¥a¢¬KÒP ¡ÀîÊøÙhkgÛW<ݱ¸3|¥§\jólì÷ _sÎp6þÒdÂoÛ@D »á Êo8»«ïÜþ†îXTÅãöOÎðû\w7†‚~] à -³‚P 9 €Àþ³ò»9e™¼_±¶Ï$ ?ˆB¶ÃöqÙˆé¤2€½ v†³MÀ^êWiEØ×Hæ§ÿD0~&(ÉýâÎpq>JÂaûpW4⪒IÄlˆýÒï³– € œa¤YC<˜Þ0žTñ/E!ŠÛŒØícˆ›ýÞdÞža]û]§N^  KwPÜü«C¶NÍ1~Žé¶‘ŸïDï†á®1Ðþ"*þMŽžr/èëöŠF¸»}œál0k³"„ð{Æà"G`üœâÏ|7ªBƒÜ~Wz ¸ñî. oúu/Îp01*MÀA­#à †g&&Î0¤Ÿ-Òww™÷| FÌkL¹þ"*p†ï•˜ÀÝ­Î&é!á€é Hß¡Á5’Fù]+5wô…òþÖ+:寀NY*Œ–y'™Ô?øäiTà Úý3Ÿ8^±ü±¢_f†ãôߎÜg„G>-FO:øÂ»ÑÿˆØÝÅ'x Ùl¾:s%ª ç¯éa!lôEÑpRÜŸÔ4×HžÞ!!õ°¶þpÅÅ4`Èàö­:\·[ ã}ïDSãåÛGw£Šàf†³b€‰¼ûbáÑÐ4\†?üŽƒä”œ%óÏcð?¡5Äúh_3Ň'Ï>E¡uÑ8ÔÙØޏ»o*1ÀqNöÎïkPÄ4 Þ þ?M@_ÑhAs›Y¼ú\ pÎð„@t»@‘™¶ž¡`%3Ãy††×—3;¦ÿGˆ‡xÀœæ7¼¬”t2’°ÂÉ ñ«1$Ñ“¥Bê3Jt¶èôhÀøö­¨öðgwéP34Êh€ŠˆÊ9æÇM4„6¬íŠ(>ùȦH4y 5§‰»‹¶¿¿ù[|­–ÀÆw¯ØðD€;ú` âw.ÔèšÓ}E£íiþ¯¾WEà x [¸@00ˆÊ :ÞBÂAhõ¥ú?às¶ljþ/ßVFŒ3<Òs%¤;#ޤ÷ù@)°¦* HŒ§„{Á!SêH†#—ˆv5A-i@â { Àºþ PYI}'¼²*so-$¨ bI¸^4àÅ0/úK›Ýãëç§Ñ' ÿäîÊ^v Âø™û.{ÜHÜ’+²K¸@n”âê8ç-ë…¥DJv!JÈš ć,eÉraw!Y.ˆ(\YÿÎ|3ïoÆœóç,Ÿ_¾÷}¥|½=sæyæ÷›ç÷ŒÅ©^½ÂF:èmž©(s½`=¸’„.]ûWª Xe6ñ Óa[Pb€f!pŒç~]]sB„„u!:SÀ@Ûk@*Ã)6 Cݦ@e(af-m"M•Û£‚zøá_§7$À¢„ûTà,¨,yTõ 1+LPÂ¥­€EJ àù<þ:¢-[µDàÕ¼ `YýÀ³Î¢ƒ´2¼²Ì€|ênØtœ-“–nÒ%ŒšŸZÙÛaÙJéU£uHÛJ0Ö}Dö'÷ê.%S‹‡ úlz˜•P†Áîç|ÎX»¥ªîé4&ps [ŠFˆ-À¢„ËXŽº›»Ë+`#©rq.—:``¬½j~w*±¤g¼ª21¶K½cʰ´hTY?´0ª£ ·k5–1Ú½–ü¶±¦Ÿ˜†`¨|àJ‚•© ;ênTI^¹dúwh{xâð9u§‡$PgQ0Ææ¤2”a©îBâf@µ”áU-ѹI»ñǵ¸júɺ“ê™vEÜléšÕ )Pn#Ó>Í›• „??yôâÕ3¾ƒ…íÕÉŸ0ø2Xiq]¨ØÔ€Ä<£ß÷€b•a5€Oê.pÌ« øzýÉÝ»¯Î]½wë‰߾X}â¼/ƒ|1ˆ¿‘¨ ;ÊЫÞ$óvˆ(X^Ö[ùXBÝ%@QÊðÞË¢·Sïn^¹zñе¬j©H?Â}?™±öª±'Øb0.©Æ< @Ε^ÒÅ0èœæPÂÄeÀýË{õÇî]¼à›5çCûì‹DÆš~²p?øÀ-]°eX6ñè­']Ú¯%üöuôz¢!ÚõOùW.žò5$í‘•}Š´Me`¬§˜˜)@O4t½kUYáóS†Ñ» u—…)Ã{?ûû'ž{~âÔ½[gððGü5‹@þ&´¸®Vô“}ÅX¸!¦ð'e¸wÿ´ÍBJÝíu—*ûïõ÷¾yô¥áîµk'®¼?èGü5uðy-݉õ*Û?&Y)Q˜ƒ 0)aÂ2À¢yÍ[°2üñ¥ï?»¥þ†sw|ÿÌÅ3Ö£ÍûŒe°h”7£Æ3¨˜£/l°‚BýÐ5 !;êè 4ñ”YÀ§¾ÿýƒüxí¹ïßÑy#†HÏ{™œ 1ÅÄ‘…Pýy¦s-€4À(•áPwÔÝ"±;Ö¯iâ Øwã˜ï¿~[þ­+~#À_Stê|`O1áúÓ‹àU"áØU‘*Ë-áqÙ»[vÛ—7¡¼tc¯ïÿ¸¼ï×Çwç.øþ½›~#ÐäQâ韵îÒ”°åQ 6)f9•¡_•Y kj#ˆÐÄS$N+6ÕÎû©ðíFtÐ{ûæYÃÝG/|ÿÌU¤}É_sFÉõxÀ—JÖ ¼® êè×Å!õwûjˆµ ´lj ›x8hÞ±506 „7jѱïõõëןœðý÷WUÚÍiç0‘Z4bŠ À<*¬JС2+ðh”–€Ûƒí“®€ÚòýTƒ û•[øbüµG}Þ£60†W ZÓÔŽåØËsµ2Ü.u°Dÿâ^Pw‹Å† +–ßn<ݪ÷Ü|±.äÎÌÏÇÀx‘A #¶bd\W?Î#…Ž­ÒQÂðèƒæ-Gƒ?aÅšeÀî§7¼Dn¯®AåkAlÉÏ!7ãXe˜3Ó›£-uyàL0%œ  @vTóEX4öÔeÀ¾_¾üáþÝ/ü5ý@†œ Œuc‚…:h¶#£gÜv*ÁY0I Ô]½ˆ¦„%`Oà"}päþ‡Gž4ØüuØ–[ ÊóÊ ¦˜‹Ò1÷ìk‚n¨Äá$Ê0²£tä'Pw©Ò>€³`:6 ;õìM®Õ]?gh¯!la#õcœS ¢Yè/«U7ñ04ñŒÃAR¬X³61°H¥}ÊÁ«¼0cL1±àé>uTèãö‹$ÊðêA8í—FóÚÈV€¿fôÑçEC¸§¿’~õ˜‰àáïÙ±t¯« Ö Â€f››^ö¢ªên“0—|ä6ãÿ20.Ý«fd[E s¼âÑ7{a% Öu•ÕÝÔ˜ .ò3ºè'»ûT¶W=Ťq—÷à#n%­Z7u7FÑŸ÷¼¤Ù±SL ¨1FÆ@k× 9¨»‰1†šæUÅQR´tûòß§˜@Œ~)4ï¶ L˜ÀGØÁ•J•^5Ušb¢ª|;ü½»…ãd †+*j}/uv¬Ä“ß]õHSäýä½»¥y-Œ*Ý‘3ž>;‚.{Љ™êäŸñì7Gu÷˜OÿèóX´¹”Ý1ÑR2DÚOÕÄS-u7#¨oóòì-®U˜bÒ®4su×Á8!ȯõdÏŽUQ†UP|OezwÉ0‘<úãYï>UI6šÙGóNm$úHó~êìX]JøWЮ‡”÷z©/6sÛÖ0šÍô”Ú>eÚçÙ[\+¥ ¯l¡I@ùÅ:×jëOî “¡Úên0Œø*·BÁR°2Üp÷ùÝ3§|ëÆ2ÆõÆß£&±1Øq:üª¯îN"oá"00.Eþzý዇çÎÝºéØ—GÆLy‚‰~µ:ÖÞv<ü ªOóÎÍÁ¢1O4·ÁÖÏ®ß?åû wn]½zï·°ÙP‚E·š…CGÿ”šÍ; µºK€"•áïoô§37ï]¼iµ¸Á}kÖoˆ_ÍEÝ%ø î eÆÀû‹w ö¯“ìÚÿÉÝ•öX6„áS§Æ¾t=mmŒ­íľt[3Ÿ&±Ì‰%ÎmMc„aAˆå-DdlDd cNÛ}0“ †Áëpî©å©ºuºûœ{ß:·N?z›HÏ[Uï[ÏSïó ®g‰{U´&мBÝ%•öË·¸†@ 7 Œ“W?ùöÛoÖ$Ó­y÷Ó¤ÅÀX6&.s2À(uëöO#nãˆSÌ©«^þí§¤i_ýÍ÷ë×OüÞ[¿¼hlkøCñãÆfÅ}º ¨AÚ?ÅGÚ'Aý+Ã00þáÇ5I²fýúd:ùPDÆêÛŸ[ˆ»`ð4ï0gÔ{¿jg PÂcIûx>50~õ¿’ÌÂv:u2´ Œ™ÆÀX!¬j–¡6ñhœ½O…¸{-®%¼j\ã—Ó‘EYá7ýæÏ9ÆR¶^4VÏ¥e@Ø4ï¾äÔU´mûòSé—w²©5¿¹Æ20ÞZFóGF ‡®îÒÒ¼q÷EÐGV”^S[Ò/ÿ5þ7¾ø>I>4 ŒÍqûÅ»àý¯‡™öGÈ [DÚï~‹kYûòM™ñgï¼ÿåMûê>2-™Æ`¹Èã.øè‹á©»Ké2tÿí““o-‘>ß4‘Ö´°\óÞǶEc¿tmØo¬<@ ?VÚ“x(%žÐ Œ‹–›6­N4ÞJË~…œNÚ/]„¦îÆŒZá ÌÀ¸}ù覾û|õS¿~ý» yOä\Wü ; =”á@Ô]F}ßc¾}*R¬þü»¯¾úé³?§ÿüúÍ7 îÂõênÛ€2Ü}šW4ñZ4ÜâZȾüßwÞÿ‹/ù´{èØCÝ:*æÍÛ¼ï…ÝâZÀ¾üé7¦_u Œ@ó%<êCÔânú¾1¦˜30†33Ô]2@®^Ý%~\cL1)f`Ìb¨»´€2\}'Vx¢¸>ÆEî‚00Î2Ú¹cô€2\Í‹´G¤êe`Œ2`cŒÛßsÌ'È)|ª»ôD_ýZ\gžbgæ¸4¯O¸Ê°Gu—¼oŸÕÔÀÊð øDkâ¥cžá*Þ›xâ˜ú]OM[\óË€EÖï/OóÒPÂi^ÎiƒÅ¨»wAÌ©cÚ­‘U(ÃÕ]êû^A¨»À¦„WJu7+iú–[¨ì#½ ú¨øÑ»GÔÚ~ý Œ¥2Œ|q¬ª.ê««nõ€stÅ?oÕÝö¡¦˜(š7N¡Gv î·×X…XñÈ(5 îR’üóËÀøÖGž9˜k <ýÄÄ–}÷ÞuÊ¿Û_ôî2òîÍ«¯©¾ß>ÅQúáÌk8ô¸ªÊ€÷ãüfÅOoÉÏÂTwÛÎŽr¦wÎ̶C.ò\€"„Vw©Ÿõ°€ÕÝÒp Œ~=µmá!•”+HOÿaΩvÔ@Ý-ÝâÊÔôN{X ר÷Рʀ Ê_ ò¥QŸÆêR,œÚî ‹zZË€p·³w7¦Õöç§1c˜Ñ @›Ûf,BÝþª‰g^¨»žEPÓ£[sšñ ó›Y„¹ýG<˜ô•Rwƒ¤y[p¹Eˆ©À#üqËäV¦Ë€ã¼•Ïàl<ë!ôåælžsáÒ*Ï}ñ‹?ª Ô_g|óÀ¥ž’ÀÛ!–u¼šrá¿ÅCzÄÙïÌì³À¸ Åü¦ê.u×þ¼Ok@«ëª>ŒëS”Ã\ÜùÝ %ó{‰d0 ™¾@›xÚ†A3dßÄ vuD˜Ú¤þ ³Ø …%‡ž»gPÛÿBj¢O¤ý@›x:ÈŽP÷³$/J%5ÀW'ýUí—^ÔÌö?‡“_ŒçÛxÚ4;"øæÐFUéad/Fø‹hßtH•á „Ÿ!}â´ßWØ«&tuWˆ ˆy¼Õî‹™–€.Í9®r‚»s(e¸ëÂÏJµ¦ ?ß»x“zø4ïRݹ³ÅW®¼MÏïFü# oÇBÿ¨ÿÄå„.€2\-õþšÚ´!B‹«Ó˜à 4oš¹>ð·_nÎïVˆ1À]ïûù ÀÀ!÷t‰ùEïnD<|“ïUÜ«¦.ꮈñéΰQꛓš1¼—¥-àÆ]e@¥ÛX,kj>¶¤°WM-Ô]¦±Ó ­ƒ;·ÛZ•ØÞÎðfùIÀƒ2<Ñ6ÍÏÝ]VØ«¦.4¯ÄÎËþ¾åÙünÎ8–€ˆ:Ø < rA®nû+g戜è;®˜WM-ҾȎ|Áõ…æw+B[ë@É‘© * î×ÓAøŸ+Ë_sQ°Ò9òGp¶˜Û«¦4ï07ìY÷(2¿M?‘,©Õ§¢”8”°ág(õ]>PÌ«¦êîÙœ©Soµ²Àün•@rÈã@®)À „wñÎü^È9 ~BmQQ¯šzмúºÇ¾³Øüî>f@Bé’0‡‚2ì—ùíeÔOú²sŸ÷”ñª œæÍ²£Â‚Â󻆽š@äE02 ¼ @€UJ˜|ûCÝ¥Þû¥½jNû#F{o,7¿{'•³ÐGA>JØÃöGõÔåÁv¼jBUw—‚ãç»ß””Ÿß"DwÉX‰Äö$~.óàÒ׆1Ê€Ó¾yßÛ~h Œ¡ w[Ý•Á?憄 „™ ܾôÃ@óÍ0*Aî(Ãe…¨»Ä~-Pw)€ÁÖÝSw±í¼3!î‚Me¸—» ,: å `Å”a?.“÷qPƒîJ¶>Ô]@F(Ó|dž-|³šELe¸ó{¦‡´ïËÀÊpõê. ®j@æ žEã]ÚÅòš… 3¿#bë“Fߣ1Ê€jÕ]|PwÉJeø 0Â"ò(>‡v¶¿«îBÙ' ¿WcPÂUª»œ ÛÙÆO%ÜÇ[޹çQê¯î@0÷öÇO‡BãiéËÿM< yýÊðκ PÒ¿HüÈ’T‹z†!üàC]ð«10†2ì9í_b¤}¨»^¡(a¬PÂv¯RVÜS _^娻ˆ> Ò~ieØï.‹3u÷¶¤@^Ìåc´ˆ€ˆ  !þf³P.õs>N~ÒšYuεhògшè_E–öË+Ã8LÇtŒÆ¶i€µà& æ÷tpÑAä©%ËŠzÕ„fa”“ö‘Så…§_Nª”aΙ Э週\9(Ãø‹¢ßù0mAÝé 4éqžÁõÙhâñ'Ÿ½+©P†·ENÈHâ;\2-Nئ„õö¿B&}Ú½ðlLÃÄ`&œÏ°÷k(L>ÿÌKIE€2l¿–—Aœÿ¨±,JøÜ=³íKA~ÝOQ²1!“Ù›x8?¡aâ…מIª(á´ °“@Ä\Ó€(W0ìc/êyîL®š )×é…^$†¾ý‡Í©ËÇ7ZðÊêg+,  sSˆUÇ(X °‚¦i€™úé·>Î~ØÍõ"1ìíÆí³}²2à©êÊ(Ã6€Êt` 0—Ÿ*~¸£VbsXÖ½ýÞ]~PÃÊ€¤" YH–¸BÐÂ0<Ԁ衄JBöåsîÆ„ ,Œ\[Ÿј Uß¡ cDéþ&é`Äæk"ŸáÇs„¯šgWŒpœ˜} nPU€2¼5”a)ýFh†…¤p‘Ôod±à+ú\ m u§± ©¡îŠ7 NÚŸ© ¨æ.Jøô”æÌBœ;%!‹±ï}ˆk\ËØŒ^5Á™×/4X¶SEñB…e(á^æÔ(ë ;9\|·ñ3³º”óÜþ'sDŸŸÔ(îP†(ã к@ 'äXaX{YpÍŠXË‹Äð¶¦îöƒæ-‡Ç+/Ð,BáFϨßmoô¥™<´(KÌk'î‚%Úö_ʸ¶Ø:ºÑ&+/@ ƒV%žçýG‘Ó*¿â\ÊoLHø²-õ¨F t—NË×FÒpŒò(P^…îDHù–uKÒ)&áP?CÜ0l9¼ÑpìŽ2Œ÷aMDú‘°/0±Ù¡d>Heî›T« „ù-®rÄP£tK>=-8g@$Ù ÈìàC0ß#¡WÝ:lJ8€í/Þ>õgeßa tCÞnÒ¦—¸,Ø#óª±×›" cî{$Ò)&Øþ'4:(áŠËØHz'zƵW}óÄCÀÒ¤£ ”{voû?Ôݶz†#o‡¿E?ñÖéŽc€e¸Ráû4:@@ÊðbuúûëU“K@F‘ü@ IoQð"± ÂÏiÆkÞ³ (exg_^räyÕ,f,sè‘¿½ð"±*êê®Æ BøW†'§¦>Ÿ\›äá¦TgÌ@?íÞk7&½Ik*¿?mÃÌ*`~Gð’ŸÛ(îSÂë®Ë°a㺜pcŸ¤c< ŒWÒð!>%e”+ ^Üã}û£ÅµŸeàG7á_ÞpÆï[~MlÜ“åþ*£‰-ÖÕ6 A*–ìTl'PÂþ·¿Yu—þ•á_¯³ðÇFkì†G]䘣îô“­AÄLozX:͉ÜQ†ýnÿ“ÍÛu—þ•á×µbÃfÄ`;La"GA¯š–&uƬúú˜# C&~Ðâ‹£¿”ºÛ}JXüSÆþ×kê±­,©QŽ~Ô¦·¬ë³ÀÑÐ,DMý í£‰‡þ•áÍ*äk×!ü›uÚߩ½_lЉ\¼D@˜7Ñ’™”0%ó‹Þ] ¨»ô W†UÌ7ˆtñ¿-lÚèÑŽW ·®– À·~e¦WÍ.´Ûˆ‡ Ô]Ï iÚ"¾11¯ïþ­Û]о;Åľ ¤%ãVˆ–1JA(ÃDÛê.#Pw+/¾“ŸL^+sÿw‰Äm»Þ¼]¾áUÃí"PL¸ÀAˆQSL¶¿ÛÄCÿÊðö·è‹ÿÍõÈW…°÷í‰6¤KAâ»sJ–  hOøqÕÝ#!Êp¡½oc2‘ØQ¦ýîç}P†¹ÅÚƒ Á ˆAW€Å¡„WWwA1ex2'úªzxèD¹¬£&BŠ>”a‡Ôаí[©Ž2\–úAOÕÝP€^»QœøÀT"±r+èÞoQ†9Ó÷=›´­‹mŸ‚ÂÊðÄìø©Ð0·2ü«½Ö%ÊØ‡}xÕ´1žÌ‡€ãVe¸Ôö‡“!‹CJû¥•áµë¦þÀÍ_àúœÁ4úÆ{ ¥(ùQ:•`N1™¥ ˜˜u_¦î†Š¹•áÍÿLýžÒ¼›um}`ö‹Õ úðªiÕТjŒ1Âa–2\bû/å\ÍàJÕÝ17%üòZ7#º“"À£Ÿ?ÅDõ&A6WTa0‚P†‹ ?Üðh<ª:Š+ûIwÖzì}CÞÞhLˆíŽ!½ tôm:ˆÍA ƒúAÚÇÿçðF 0»2 u×¶æ­,ú×·;Ö”pÚ˜À™dþ¨Å¯,ï• ”áÙ™ßóÄÞ—ên]03% uWü^•Fÿ¦'n¹ûÚ&î½£“¡FP†9ÚÓÔA&?‘}Ç8=ÃÎöÇ>¨»uÂäó³•÷lWv/p7ý÷^kàæ;:q:†W G³˜éWe/¬Ù”alмܰh¬fR†¥ºëÿ=?pÃÍ׶≤@vEµÿmXäç %ìlÿ!f à«EÚ/¦ ?´}ò=ÿ:ps»Ûßb DZn90ÖÔ½@†ðs…q®Ш+Ð,d¨»<ûµª‰þ86¾…»—'€W 3Ô~ÎdËœ·!ÌR†'¬&ž0Ô]:JøÆÞjö>‚ï5üP†¡ ©:À´«QQ–ôptl$Wܪ-›àþhÞÕ7ª”áÝÌÄ­%¯ÇJNøuwŸA~&¤êcÝçXûÓΰlmk É‘^D³"ø{ÄóˆØå—2¥½/õçÎua‘üpy&y,"\ˆ±Kˆ¤ž ¡¨à±)_<&vùwê‚ãsÿB7õ¯UÉèbÒ®‰I2ÿ“¢0-ê†ÂÞÜÝWDìò©]ŸCýʹ®Ì‘?P«Fº“ì-‡—„õz ûÒ›»ûŒŒü§˜Ø#¥çmê׺«?K^AwEÇ;A…ÓÒ(Y”úÞÒ¼OÈð‚KþI©×@f±»ú òº˜´›+;¦>FA²0 2³®»ü»áðxÛ~wÈ?x,´Ëiff/óècaõ¶õëîÞ!b—Bøù¡þBõ+Äœa÷Pg\a¬únGQoîî}b—ÿˆÔÏö9æ~#4õM“­(`Ÿng†V%¯xÞËý)ïìmsÞû¯Ôw Iç Æ€ÓQÐoš—]þ}&Éÿ¿Î}×– °û×ysw±Ë@ÝX‰Xæþ¯¢¾ o†K™ü~ñ<%vùÇ»¼Þd?ñ-P‘¤»˜¨rßß#žÇÔ†§S>9áÑßK«_ï®þ"*#é,ÿ Û>µåõ”GFÎ{P¿z­«úu å Cèóéî²Ëi^Ÿa6ŒTè^FRË¿EÍ}Ÿî.»ü“f×gÈödZúïRX\žQõ‹£-žÓ¼/‰Y~ãîúŸûY-ÞF…B£²V•èaHóòÊ?¦ÞíGž±>Ëk]üÝð([wþÜÝ4¾äߣî¬EÞ£>0ÿ7ñ/Pa|¡¶ €1ƒ»Ë,ÿ^ýrÛ7d1äºÿþ#µ%.`,J4^%vùwK)˜æ>XP|úpþ3µçú*¼‘ i^>ù'¤\û>X O|úxþÓ{jòýã§wÞ‘ÖS/w·=O¦r戾ªÎ£>¸ÛNü¯U*¨þ]Só÷ŸÎ/ñîK\^#Eƒ»Ë'ÿQÉ:÷AåkjâשHÞ¾]ÒüÓÛæ(ˆùôÎl·*ŒÙÝM“{ÎTJɪ>¨Ï:±~Ñ'½oJôwoÏk>ü Åô*õ¡ŸžS^>zöj*_ æó µ¡Z[¼ÐXbav¾JEóù”Ï•R¶¯Öóÿ©ÿå÷'Gý$è¿´Â*Ëíï—òÀ¸»¥eõ‰~:â ÃMm‚úMó>O+ÿÊ{À¸»¥eõSÿ»dêWËJ|wÊûÈ7ÙñǨ>}¶f¿‰÷“Æ[J\îî‹'O¡¼OvK¹¬~ÌÛ>ütB>Cm¿”‚ÁÝ…ò\ŒuÜõÿ7õéí;kÙÿL`D¢8¯×4ï‹ON1²GŠ˜eõ—xÿAëÿéÛ—Wã¼ç±2ó}(ÏÅ^µ¤EËê+¾ÿøöíí÷Vw×Ü{,¼_¾˜G<Ë+?hãîJ)ä–PðåÈ„ú¢4ËêkF°ðË@;ñôÇý[^ù;0Fÿ·pðåÀÑ¿XûËê+ê[óÖ€o@F9Õ_¸W/ÞÇëéð÷Dx øÀ8<,òÇþ|(´2SÖ×·”‚mÀ×ãh¿È€)Æwc.¼×Ðî®éôn¾>؉K] 8MXjÃ2.­°r=a7àë‘1ý€Q}°po(6Õ§NWlÜý…ü‡Ì¬õU0CaS-ñ£(¾Ò¹ó_Ùú'¹"~¨Ÿ¦vp{GróÍôä80zôÈÔð³[%aâ\„¡ž•»«Êwš·¶Ñ!'qØç"‹d3΂üÎ0ñ(o?šš7ÇDI"üK©% (g øØÈ*Y}1ëXð\ß/ѦÙMñaˆì½À 4ùn"ƒK O 6/=HV "%<oû‘Êîn^{|Ýš­›[Zö ‘ôjµ[7Ú»ÑÅ?9 ¨Ü+’U.Ć»Ïûƒ•¤·Jh-}Tr{ø 'pœá¸»"b¤õøžA2¤„ùa¸»MùVÔÌ ŒûwKé6ïVº;â’ gx’Xlô)Y½g8vw±ÎïºBôï%\J˯½!{@J¸€0%é7‹_”3¼NJæ.“ úw›m ІÈþ$Ž Ö±A˜†»€úÙ²øìΰvwMä¾qšRÄaÀ©èß®P!  ÄÅàYŒ3lJ4B|—¬~—Í6%Å–xÍ^q‰Ú‘êß,ô®O°ù ‘ ¿3Œ·»¥Vþ%«Ö™RÂ77Jé[[¡¨þÝÌŸèêS¶³Âxa<â iîg—ŒË.K«fÇ:ú¦÷FaŸ#aì!Ë(H:yGŽ+Ƽ§„'u&^ù3K–1%ì×¾²ÃŠùVMS7Lÿn¡ANÈÌøÄУAç†¨í Ÿñs„»Ë¿ïç,™gg¸wâßK(W^¤,¤úw›„ |!-¿ â@ ¯Î0ðñªoŽï9Jæ:ù>ÂÛ]!äöË”ôï¶jû"òCDh‡8bðê ïÁ¶Ï‰-Y#7ɼ8ÃÊÝ1[„#Ô•¥0à°:3ó‘c`H/Â×c¡½x»ËIŸ’]+À†»³¾F=cúwK﩯¸€s!bŒáÃÞ]ÌÜÏ,™‡”pÏÎðõUVÎ}fªWj#R­üè/8 x|,4í9é[2~g•™cV`\ž¹¾nͦBa²=˜ÇBn>0ïÇBGô .rå÷ÅÏâ g¶om½}-Á6꤄¥€k¤/ÄN –EdŽŠÉß/rt†¦~¯’Íyw†U¾¸»r%v†ˆyÌ~w˜›3< úy›ù½=J©?âÑúK¸»gX +„¨¯áƨ¶ 0òp†ħýðÔ§œÞwõžnî®eÊ8Ã]O0v\;A„’x04˜3¡nóãÜO9Ãó”/pwõ½!䆙¶u8‹4 ÿ`)áã«qKXOñ¦à)A!Z}ÁŽÎðDæz-áªoœákòÂ:™xûR–«”¦‚Uß‹üdœáÍú;•þG, ¤4/FsKøíî–†{îkªUò@ìî"œ’7© ߃ü Ro¦„[²A7D£Ö 0• À-áñ¦»«ûˆÿe‹7 ouÉ«IEND®B`‚instagram-feed/admin/assets/img/fb-icon.png000064400000000737151435171370014641 0ustar00‰PNG  IHDRJJ+2CPLTE9V’ÿÿÿ/N4Rõ÷ùh~¬Ohž-LŒ5S¥²Íu‰³}·ñó÷1OŽFa™6T‘ax¨8U’ÉÑáC_˜'Gˆüüýóõø¯»Óƒ•ºp…°JfœøùûíïôæêñàåíÕÜèÅÍߺÄÙ¢°Ì›ªÈ”¤ÄŸÁˆš¾y¶[s¥ÍÕã»ÄÙµÀÖª¶Ïl‚®j­RkŸe"À¦ IDATXÃíÔIoÂ0†aCSbœ}+ûÞýÿÿ»JÅQœC… s¡š÷èãï`à8îïb£~3ÆÄw0 ¿vÉra8_,W¯›`èLÐOœ¤«Px ¡”H€ˆÒ ¢Ž@E!PQ*%£dMFaÙ'Šð’¾YŠÕÊ…’S3»ßL©¦p¤½Feð©Î¹³I1<A×ÅɧNzù¨¨Ñ˜©‡¡Ú²È¡Ò Û´¯DÛö­£òr;i;úRXÁ•Ö¾”œ^£>è¨õIFåg2jÔQkMF•’ŒÚ!u¢[i_JŸmõÞ¹íUÝ>§Fx[ÒÖ» ³LÚÌ£Ÿ>¦˜bŠ)¦˜úßÔµ•N…IEND®B`‚instagram-feed/admin/assets/img/rocket-icon.png000064400000002132151435171370015530 0ustar00‰PNG  IHDRppñ>y{PLTEÿõïþôîþôîÿ÷ïÿôïýóîÿóîþôïÿôïÿõïÿÿïÿïïþôïÿõïÿòïÿôîýôîýòíþòìÿôïÿõïÿõìþôïãOýêáô¶›ûßÓëyHèn8æc*øË·åYñ¢æd*ó¬îbï—qúÕÅöÀ©ï—p\ý½tRNSß` ¿€@ïÏŸÏP0  PŸPP¿ÖjwIDAThÞÍ›Ùrâ0E%Ù–1K’™¹ò6kæÿ¿p*0Рܒ-UÎ[òrê¶[«°bºT:O¤Ì ““$×KቩŠ&xÊ$WñضtN²çÒ(1Û\‚ŒâqÂ%`“| Ö© ¬jîáWIÅtPÆn­Á™ÜA™J @ª@ñˆ¨°ñÅNñÜŸ¤Ê0Ù‚ë›c$æ<_5þˆä¡|ddø‚çˆé Ò9àõr~Éà…,~1JxBŒï¿q<’2ßE}ƒW¢‡€p½¨žIu ±*L@bF¾5Aƒ(ƘµËöЬ1«fW¢=¼eÚCg®ìЃ<ûR¸Ò6æ–}¤ƒ*Zþ5÷lq¦¯¦38ÑnÍwÐÇl@îÌ#è¥pžÖ6ÆI¨\WÞý3ß½DŽðÒ.ëª>VkV—ÒCœë¹. ¾ Åú)ÄîýÒÞû?ÑÏÒa¥¨/¾îþ(¡aCû‰zûB¸mÕ¤m³®¯ J%­Ì‰#äüµ°¬c*T“g¹¥?zIÄŒ©Ût_m lÍ­±Ú•9Qƒƒä­Mõ¦û_ÃÊÜÓј` 3Fºæˆ:† !É!¬€ûólRag^pÕšžà6à ¹´û •»„64Ï}ð,îË„„[ÇzÒBX·O×ùl˜ñ§¶zÛ \=Œ¿V$â \ŸYáÁØ”°#l_‰šŒÏ -ÀöU¦»M‰ò;Ì-ÆÙwj‘ruÕ¡êjر8œ|—Is³êNG¥¶1 ,án¯¾ åíIæv̸g™ßjõe9/kX’³·úä3ëú:«V`C[ý>´Nskß}@cnN4GH>Ú~[ Dì#÷ƒegö°%r©°1Ö¥8£áBini 8Q–8øÕ×…AXˆ+@†¿  M,à ¦Q)`¸F=½[ã¿ .$<")`˜¢ªŸðÂÒcQåôg¼tö6Ãý/Ñð€f|ÚâÝG¼cdÞEï¡|d ä#´‡Ȩ“E†ÈÔÏýNˆ"Â@¢©°CÉAñRaMüæ!žŸ'™ÜÄ PWI‹CåD‰¡,ÇbºG¬˜ROÅh¤Qß§ó:#«·É Y¤¦Â˅ΓÉåç2ɵZÚÉþ€ãwÁbö0,IEND®B`‚instagram-feed/admin/assets/img/insta-icon.svg000064400000005625151435171370015404 0ustar00 instagram-feed/admin/assets/img/fb-icon3.png000064400000001221151435171370014711 0ustar00‰PNG  IHDRhh*ÂE“cPLTEacjúoneïjúiôjúhõgìhõi÷jøkûlúmûmöjúkúmûkúkúeókúkúiùgógðfõ\Þkú$£îö tRNS¡F`BÀC#„ƒqï€ ±‘`PÐD0à¢S42'+F¶f½IDAThÞí˜oo‚0‡ï×Tü¿¹­ßÿSŽƒ Ìe.$´ç }Lõ… O®½»¶P$‰Dþ׬ÜÖO‹£*ó»ãœ*òÏî…-‚a•µFATíݯ¬àÙsv:¢½{(òj*ŽhÇy 1u/î±Èk9§QæœÎåZ¢“ä‡,m¸À£è*5¯iÂØÄZã1œ¤ç“ -^E²ZSÖ lÅúXËg [‰ ö„¢/ÜL ] $Z O0ÑBOÊ$§nv݉&š FŠÈ'§ì‡c&ö½Ãñ˜u\Cmª’“–h16†Šª‘)8T´ÛÉÍ@Qn*¢ƒVDåØ%*Z:Y÷Á¬3Щ£³©¬ÑÞNDÆŠÌû%íØ‹”N;*ÐH`mÒñ&ŽÞI‹M|Ü%Œ1ÖÖƒ‘¢úþ0ã#"0¨eòdÐJjÈàÑ Eh!„>3€Âð—h.'Ubf$ZÎN´˜úÕ’ð´:R»ˆQÏ$;Í®`ivïh~½Î<-ë¦ÞTã‹ÁIfõLqãnE±.ÖßÅ*ØÔ›ôˆÛ—oS{™jW šP(À4¿þŠD"‘‘|®èÅ”†ù IEND®B`‚instagram-feed/admin/assets/img/fb-icon.svg000064400000002063151435171370014646 0ustar00 instagram-feed/admin/assets/img/sbi-carousel-next.svg000064400000001063151435171370016674 0ustar00instagram-feed/admin/assets/img/book-icon.png000064400000006317151435171370015204 0ustar00‰PNG  IHDRppÆàôKtEXtSoftwareAdobe ImageReadyqÉe<#iTXtXML:com.adobe.xmp +žðç BIDATxÚì=pGÇßî#ÙÑ1Š»Ä)0Ф $ækRbÈ$)Á“2™ÁžIK0eŠ€=©˜*Æ (’±\ÄI¨á„-Û|øv³o¥3’­/Û÷±w·;s#Ù–Nòþôïýw÷´"Ú8·³PZêNº%}”з€C·øS·ü{åvE+qˆÛþÀ€Mã}Êx(+ÌÛù¨õ‰ °Ò¿} Œœõ± Ó×ÐFÎ#XÊÙ8dÌ? ¯ÎÀâï¿‚ó䑼mééã7¡$ÝF‡8vì„Ô®÷`óîÄm¯üÙËóâ9ñÜÍÎx5Šß—S]…²¹gã"¸†B'¡tëÌß»*;{= ;{ëþâ8îûyCÍ…¯Áz°dÛâuëØ©³×/ÈNöª¡r¶}y^Bóò¼¨Äß\ ]‘ÒN,ç¿W›-ܽö_G&¡ ­¯Î‡›f€ Êè0§›R#1€¹}'lÙwH*Ìyø»êh€9‘-”óåË™ûðòÏÀf•ú?'9³ì+H.öÞikd>ý\æ1<š>VM¥{—ó^æ“ÓjFJö”éŽ;¸ÎC§%˜X5aûÌŠµßW€ûB×Ñø.ëq_èÍ|Ž„[x®ÜÿANšUr¼£ÂÒz?«ÐÒ­ۚحž‘ÇÇâó”lK•(ß4á“¢9Gps?_€¹Û—Ö}M„’“èá—/G¢£ò0TÎ^‰£Ójôç–_ކ¾ˆ“èž É÷µ¨EZD_(Ü£¥aˆÀèJß·f€nA#BéEÝ¥Á†NAg¸õÃÚM¤øu÷›ô.fªïI[-'ÙÛþ‚PJõ|ÃíÀ[“Ýæ”ì³âIt7û†ošf¶µ=·æ¯è52ÖglLw´?y¤mOYÏgóa &ôį§­H ØÛȰ{¦Àå|hˆ$«ý¡—EË©µÂ[7@ù‚øbhˆ˜uðÚ,Z< ¡5áTï/¿ax­Ìº¯5Äðàm(„êpº±‚Å xž)pEuzCÏä·° \€+ïÅé<ݪ«SñÆp=›ßФŒTÁóà²Ùï´†„ A/O|ƒ—D¤In=V!°ª‹›úùN|˜‡qË“ûºÛ~Ú„¿éIjH•×ð°×/x¾+0ÁjôUu)°ž Ž:ÄØn”sô/P®T#[‚ò\œÂ¥¸ô²ÂT` H‡ áf†Q ­NÀVv•áõ;˜aþ…"#/£@GƒVœ’k`ÎÙ9FØ)oxŸUMm à&MÃ(!VQ‘÷¤pA0k÷3ÊúC ±EÑAyÕ E` Ì’Ý':2G àæ¿~í¸]Ʀ)§ã¼ŠÐ" pu¹ng¡}Œà²Ö-TºKr%Ø_—‚€HÊV¦È8LS&î§j/]ŽJû_€€.bÌÖ®`ªIEND®B`‚instagram-feed/admin/assets/img/save-plus-icon.png000064400000005637151435171370016175 0ustar00‰PNG  IHDRppÆàôKtEXtSoftwareAdobe ImageReadyqÉe<#iTXtXML:com.adobe.xmp # 4šIDATxÚìMlGÇß›u‚HœÈ¦Ð^ªâ+é!ŽÔ½çÒ’UâR)ÊPzªª&‘ÚžŠnýPK8Vm!œZN8í¡\*ÌŽ5R%Hk7P ;Ó™]çÃñWÖ»3»ïI&¶¼ÞùíÿÍÿÍÎî âé_)xÑ“æ S Ù°|+Rê§PÏÝGE @¡ü´ _”¸àÔs&xâ±êûôT¡€qQ,&ë<5•¶‘¨® Ñó"ÖW`í—oaõæwÎsÉ÷/Aß[ï6ý¿¥/?„õß~hk{=‡‡ ~|ª¥Ï ò,žÙ|«ð.6ŸÅîLÖÞS<þì4¼xpÏ·í©m¿ºè,ýcgukŽ´238ÌÕ¤P†ì˜nßöɯ?ú og¬\Ën)^§àÀÇkú@5«ZGóòüÞíàêÉ <»[;€È؉€\lS¥¨„¨aQ˜Úe:§OŠ–í Ψj‹(^€ir À̶cijÓâ±-€©ÏÀ¢^õƒÌ­æ‘h`ضae9¦æ0²LoºP£¨ŠíÕŸ²ðè£1§ð @ÀTÌ)à Þ UèÿóõE°?t^«!°g÷‡ÁSÀ:ôj¸ 2ŽØHÆŒûîËaùÓÓuGJ” ÕcðÔt¸ HH€˜2㶯•¡Rf³X¹6z'Ê8J€æfQ ëü ˆÐtR@ HA£1jì„ýo¼ û޼ ½CG!vÐÁÑq>L-@% y¯ÀÅǦ`à³€ýƒµ¿¯óžŽ ,Ež%Uvèãï/1! £ï•Ï6BaMÚR,‚ÊÛ ^õLîVg€æB­+%õ%Ï] Ói¦<ƒÿ¢Ó*%í;r4<;$Ħna±caÄPÇÀñ©PíQpç… q7 }_ìðP¨ö‰ –s¢È…ྡ£áÛ)…X™d>ì¥Dïk¯7t›»…šc£5f(xwZÂx2ïVz'†š¯ÊÀ,¹"T;ç™Ð§ÑPñ+w{;//[ õ00Ý^÷Ç€±o€ÐÞØNMC܉s_8šŽÅ„‘uÃþd¾Båk®µ+ê{=rOÿ¸žlÂùmáUô‹ü²n_Ö«Ñ5s[ÇË¥;JŸÈêÜÌ«ºÅ¾þ±)§ßK´2X;-Óg<¹U5Tœ‘WiT¬sº]­Ëú!ñÞ'êñàæ*EWý°_)ô ˪,÷jÆ_œëå{œ»5Ñ„_ݲ'‚tŸg*Põ:š ‡Ö\í[õþnƒÍCDçÊh­¾:«›ÕH*4C}»$𡾆I…ú«¯!ÀMJújÁàB¸ÜheÏæKï¬3)|ÏPÀ>AÜÃÒ;Îè ¥Ò@Bº4‚×’7‹{P‹×ÓÍÐ-Ú;Rডg¨YýKŒKÛ)•úÌOÀÉV—$oë²kà¥iš;Óu×9·ót‘§]Šp†J‹î• Ö@r¶½lÛɆÜû«ÑZòÞâ»ËâÚ¾é`GW–)‰«q¹Ó'Òé'áy¦ÀîT~âurkØà9è—…z“1Î@:Õ’0nÄ]ë|å pHYs  šœd?IDATxœí½y¼%WU÷ýÛun÷½Ý}{ÈØiÒ„t‡ $€&HˆŸ¨H”0è+/¾¢<Šà>8 Šø ¢¨ò*˾‚A‰ ’AyIHB" $$îNwÒéáv÷Oí÷SkŸU«Ö®ªsï¹çÔ½w}?Ÿî[§jמj¯]«Ö^{oç½À³¿yއEÉ5í¼FYÇFt\!}ö•¡ÕI.]&1!•í‡óð¹²ðg©£”ï½l;¼óŒ¡µµØ È+u¤=ïX-Ë逎 Å:R~^tz¹z¤|É:ÓòËÊëd´¶ÍŸbn§tä >—¿X_`òoòx0ùo„ü.‰ûëâJä_‹ßpI$Óüر Ô¨KÆÁÂzt„¦sQ×(&X¼¡¹qÊÜÃôÞCéPƒ9…ãŽTi1!¦td¼”Þ¹æËÎS„cÞ ¶Ï³«„uì·ìädÞBCÔê‚ׇ¼®t&\³Ï •A6à˜¦ÎÊ\Öiy.œqqaåÒâáy±öW¢ R®ÞI¨éZ‰ÒÂfyü¹xEÇNåTŸ?¥åžŸb¦.È6—yåå¬Ö‘ìe,­œüG>‚LþMþÕs&ÿ–ÿBY•²…6,ÚsL ãÊUNæåq"ÌuHt.&¹@ùK+”îygVÖ‰ÁSÆ'UÍßËÒöì>úíD#ÌåEæ\:²LŠ­ 8K“ßGqç<ÞøxG^&°@©0iá)­B9x:â˜çM旿܆¬îyfeçZÚÙ²úóâ¹xñì)­\Á:ê:Ëó9mkš²B»+4~¦)ƒâa—iü¹Šçç"!whP]aÊuv¼ÑÈWj¯¢æe­ÓÉP”v„J}ð¼9Y»Åñ¼S™ä9GîY*÷œ|NJ=:3ŠBhÅ_ðßYÝ©¦OåYkåÉU§¬ž_Ù‰ò4x[’u"_°¢íÓÉØËгôÃý\^D<ü^J—סü¢Ì•Ýå-¨ùLrùÒÚeLþ©¼4ÔX§À…Q<Œœ0ót#¥î,7NëpÑmÐj‡+ËÇÒ*”ç×—÷>¡td~"ñóçæE9ÀãÏÊ™«CVöÐ ;WOŠ0ó<ò¼—=ŸBìkE·V­ȶ™ûz‘-oËTFo¡Éòñºñs!çrî¯våO{©hò(ë;Ô±è°s/v?“P/"½BE¼N–ÁäßäßäeÈ?KÔW™o•C^¯á§!ðü!—oŒB 79zìmÓÓ3?055ýƒ%ñ†a†±ŠY»ví7¶lÙø¡ñ ë?ÎÏËÒ9 ë)y«ÔÒ ×¹èœóssó;{ìñ›àÜÙããë12ÒB’”f†a†±Z™ÃÔÔ4ÚóíÝOyÊÖŒ´–VO×J+XE3rCN9Ó*¿q¨Ñ#ßÝ·{ttíÙããëS>Ã0 Ã0VÇObvfv÷öíg|¯sîhdHI’Sd²ãàCãÙ?°s9ä!;vâ§GFZ¦Ì†a†Ñããëá·ãÈщ·9ÅYú™Ñiv. I%ì¤æ@% ÞúGû¥uëÆW"Ã0 Ã0V%6¬Çôôì÷Óˆ‘³¶W\èwa‰[h´¿óŒç3(â™ÙÙç®]»f±å1 Ã0 c²fÍh2Q6CŽ.ño\QG”FX mɔ›òÖç2†a†±ÊË0äTí‚U†Ï¾–+ˈ sÌÙ“º„a†aÆBkI÷—‚!…Ï„JD` ÆTnf¡1¥Æ0 Ã0Œ~@Fmñ@m)wœ@QJ¸ŒDY5Ð0 Ã0 cÑÈU†#«ƒçVÀ¦c9m›GZ–Ht™nÃ0 Ã0Œ^¡-72ʦnË¥f<ø“f*ì¡ìÉ‚$IÌDc†aF_áS¸™>R6ì„ †™r{'(–˜°™a†aF?`VÚÌÈï®É¿rÃ%u:6ÍnšRaËrÃ0 Ã0Œ… vkOßµ<¶dLø-g9V æcW|Kxï½KÓÔ4Ã0 ÃX Þoÿµàµo|§zí·ï/pÍÞ={÷!wƒ…ïD@ÇÊl'‚¬3AwÃ1™v¸™G˜| Ã0 £gÝó^ôâ7Îo?ó ¼í¿½¯ºúªæÇ{½ø س÷@î¼s_¹éØ~æK™:n¿ýØ»ïqõÚ®û¿ƒÛ¿v÷¦Ÿgbâ8þúã×â3×~)ÔÇù矃_~ëñ’+/[Ò´Å즪0ryÇ÷rÊ¡hJ!\f™ñæCc†a,†ígnÅö3·bÓÆqìÙ»ïüõàÖ¾À.Þ{üä߉~ø“˜˜8óÎ;ÛÏ<»v=ˆŸý…÷,ùs!×–ì˜ç+Xa˜2#×ÃóÒ‡¦¹ØõÌÆÌ4†aÆ‚qÎáï>õÜüïŸÂ7ïü^yõÃ{ëo¸eàùøÃ?øüwýà©ÛÏÀß~êðéO~`‰­3Íbbâ8víúNx.ÿòO¯ÜôÉð\þú×.iúäÊ"F\÷rù¢¿#(*&¹䆔d•1ëŒa†ÑO†ù•|ÉÅà¯?Þya¿àÏÁ¥Ï¿pˆ¹>G8üò{=^uõU8>q|IÓtÎÁ{L©!Ý#E¶ƒAdO§`±Š êi8Ò9Ø0 Ã0ƒ÷?ùúw„ß{öÀS·oÃÏüÔ+ž—={÷ãK×ßçÞöÖ×<ý&°yóFüïüŽ;Ž}{÷cbb'6mÇö3ψ¥JꙂ㲡(®ïJŦ°Û6]ä‘çÒœ¼÷H’$çSc†a A:âïýéÿxåÕW m˜ibâ86mxº{öîÇí·³p>6ô÷”ígàÒç?§ïù =#Ó1:Ó¶éré¢z@w–SfÊn.[Tœ‚Õ/ Ã0 £.¿ñî·`Köÿ×¾Šë¯¿ïüõ?Âß~â–‡‰‰c¸íöoÂ9‡W¾b°3¬‡¼à9ø‡k¿„Ï|îKxÓO]®ìÙ»»v=¬$KÅ®ûÂg>w½zmâèqìúÖƒ:³Ð¶oߊóÏ{ú’(4ä§ËGŠøÂzÙo¹¸^ÐE CNoCÎ)˜OÝÎL4f¡1 Ã0„s?|åeáeýü‹/Àõ×ß‚ÛkÁRò¥¾Š={÷ã©Û· ÜwÆ9à•¯¸ ÿpí—ð¡›7ŽãüóÎÁÄÄ1üöûþÇŽãg~ú•Kš‡«®¼ W]ynýÚݸíöo`ûö3ðêL±óxǯÿpí¿á’Kžƒ¼ï±-²Ê SRä&•´È/¿L©)Ä("'m)û³Ø˜/a†±P¼÷ø·¾Š-7nýÚ=€óÏúÒ÷fVÊÏ5oxÞÿûïè°Óe/x~ñ߈?ù“Oà¿–·L]rÉsñ›Ùì«¥fâ豎Rµy#~øŠËÂð½ô7eÏi©ˆí!É\^´EöÂïj :§YhÒ4uÞØ3 Ã0Éï¼÷Ïs¿sø¥_„SngA;îógï~ìÝ7ŸžÿþÖ7à5¯x >øáOaïÞý8óÌ3pÉ . –’ApUf-Û³w?^úò·à/xöî݆ã^rååKÒ;àœ“³ÂðtšîÎÙ"€ãcY,%ðí¼÷îáGöÎoÝzêRÌ0 ÃXLLÇÇ>^\ÓdÓ¦ñÌ?c0Ã>ûøµ˜P¦"¿é§®Šsnسw?>øáOáúëoÁıNÝlÚ8Ž_úÅ7âMK8ûìÀƒ~ÇÙÛG¸EÙÇ)Œ‰ö‚B“‹TŽY±È¦©cÞÇHÓÔÃ0 ÃX ûøµ¸þ†¯V†Û¼yù§ïYú 1öì}›6®ˆrwàÀA¿sÇSG„U¦«¬èNÁÇg9³“yÓpÓRÊ0 Ã0V d©bãÆÁ[Œ¶ŸyúÀÓ$Å…–‡Qüj€â:4Å…y‡‹Šg1@î®mCN†a†a,mÈ (ìV@õûUW V·9 EF: æm†a†Ñ4¢0b›é”D"øÍÌ'ûãÒeÙ0 Ã0 C@~ºI’ßLÐ?H‰¸½8¾Û¶Uã,²Âš4†a†a …t šº Je¸É ;WfŠJÁù—"ÎÖ£éc1 Ã0 ÃXÍÐf”ôÈ»¼yKMF°â$ìÔ#Û׉+.|Å`JÜ0 Ã0 c±ÐÆ”`káEÖŸá„­°)O±Â]yÆ{ÛúÀ0 Ã0Œ>À†š<Z)¸ÊxBGNÁr<Š çµ9á†a†a‹E:ýŠ·sS¸Å¾’Á‡Æ‹“1å†ï´mû8†a†ÑWœs4ì°åc²c§ =‘› w ÖÈ­QcÊŒa†aKm±$ÝYhuàŠ¢î´íȶÜ! ]Ï4'/W 6 Ã0 ÃX(Ò­ENDŠëâÑi0 MÌs8Ä+Dz²EoúRÃ0 Ã0 _Ì@wÚ6Û¸2\,LÛfcT|§nì‘} Ã0 Ã0 ³¾à ­QãœóL™ kÐßm›n–Ó¸=[즰·a†aF?î/%zFA©a /¢³_SXŽ8ûí“$Aš¦A‹ß°¾Ÿå1 Ã0 cq@ü¦YÕ¤ƒc0SzrÚŽœåÄçv»ìwn•÷Þ¥iš Sv Ã0 Ã0 [¸°õÛ?Ò¹¼cpÇ-4rá<2Éh&ÍËØ0 Ã0 cAÐHͦΠ(Üo†¬3r“™ÂÂzÁ:#â–ÎÁ¹›m=Ã0 Ã0ú[)˜¯Ì7­Ô–—ÉÍrâþ2|ÈInX†ž¸¶d†a†±XØZwÙOÒo<ßç)JÂŽÃ Y 9Ç{Vð#íɦn†a†ÑØJÁÁ‡—Ptn|Ém}t¨áû$h;]:n©Y²’†a†±j`›O†srJ¾A%ÝF×¹Bˆ)Ûì8§ññ-Ã0 Ã0ŒÅÂF}¼bLA‰…ShÈ»Xþæ[03£ Ã0 Ã0úÐ+ÈgŠe¦pë2KŒ $f4…sÞ{GÊ­l†aF?à‹è #KØÁ@*6|‘½„D~1›Ü‚5tcö—0 Ã0 Ãè…eb”í˜:»ÓºÃ&•´MØ¡æ †a†a}ƒm> t·^ º GÉýž9m;·íAcÀw½4 Ã0 Ãè#rÿH¾cAÎýE¹×È(3"cK÷¹,ÃGŒßÈoÿ ËÌÏk÷rÊÂÔ¹¿ey•g¡éV•¨gåë%í^â­›Îbë|¡ñȺï×sYH^êÞ¿Ô2¿ÐçSV—u©+ÃZ~Mþ‹×“ÿ:á{•ÿ•øÞ%œs)ß¡€ùìæ6§$¸ÿ Ð])˜×PØCÒ m‰¦QјÕr’b‹†ß¼!ÅFÊï‘çù_޲¦¬ƒÐ¦±ÅÒÐò.óËS™ÀT¥Ïãåõ¨…uNšUPÆ[7_ò^-\—e éeÝ×mO2Oý*?»_kû EÊRYšuâ* [õ µ—‹vŸÉ¿É,Ì äŸ_[îï`‰“¤<"¯«2~ÓS¡V˜&8æˆ \–5ë<Ë×Báë µ´bÔk§‹·¬cŒÅ¥]‹—uV<|Ž©,/±tZ¶Ø½Zܽä³,­*ÅD;¯)Ù½RÖ^ªòDù–k•ìHe@k‡U¿µ¼ÄÒêåKÖä¿<.íšÉýxciõKþûù¡ÑHÿðݵïè_aýt°Rpa«î,&™€g×Ür1}-æ!׺²H÷òµ)Ï-´s§kK¡ÙÇ:€º‘FݼÅÒ©Û¹-$í…¼ðê´²8놫Ó9V]“abõËë¡®e§,žX¸ªv´—o/˜ü—cò_Í å9+5\¯`XZd¥z ³ €Ü"y4~Õ=á\Îo†Ž5%¨IðN@6rþ5ªu<Ú×ýÖ˜ŒSÆÅÔ…•áùµ²†¬å‹ç;MÓBYµBÙKB+Å+ëJ«_žOyÿ««XÝhõIÄÒ«º·N½Äž«–÷X}Èú«SÆX¾dƨÛiË:ÑÒî%*D‹£Jfd|I’äÚzöRç˜çÉäßä?VK!ÿuÑÞcZ4Çüa€üä$V?9ý„Ñ±ÐøŽIÇñ" ¹¬¢¯–uòÁË?ÓzûÊà F ‹Ö¨å=Z)óVõòˆå‡_çå©z¹hñ•忬Óàé•uxZ”•9v¾ÎKSë,éÞªüÄ^4Úß²ÎIëĵÎ]+¯l[2N™Wù<µü$IR¸O¶E™§ªúŽu²üþ:÷ÄÎÉr¤iª¦¥Å/ë)Ö>µøLþMþ%ÿÚ¿2´ö¸œð]+'ÝD”9Z¨ ;VÅ"ó@°Ú8ñжBèoI€öèuŽiÓüZ,>ŠSëbiÒ¹Xã—iÄ:Ų—@š¦H’$*²ÌZ>c/”Ø×†¬+­LZ~Ëî-+K//ɲ—˜FŽ¶î³–i–½üé•·nÛÑÊkcÚ³/Ë»Ìwì‹4–·X:üžX[­S¯ü ˜·M­\ZjíÍäß俌~Ë¿<_¥ˆjáꔫI$Iâù1Ûß .¿:pÁ†œ|wA› S^rû9ÑW\6ì´DEZ8±‡-¿x)lÝ/þ››oË:nMiªzqI Ÿãaø½e\Æ'5íÞ…QLpeçQVN~-VOeeÑâÖî©êµ²Æî—Ï©Î×lUž´6EÄ”~¯VŸ±òÉ6T¦äÓË#¦î Aû åh/ƲöÏÏWµ.ÖÊêÌ俈ÉÿÒÈ?Õ[U»áéÄÂiíºidÏÔ1ÅbÚ6…óèè&\ NÁAó‘{ ìzéÓ4 ÞÆ”XÓ…DZŽQëLeø2ÁŠQ%à±|Çî‹u°1Šå#&²®ÊÊ&Ö½Èdܼ³âµgU-Mù²Ô^*±üiñÆ:]™×ºzL)à×´xzAv®ZGZçåÏцs(íùñ!,- *e¢—º¡°òǯǔ““~bŠ ¿—IYÚò¥*;Þ˜UÖykDZyYjCÇ2ÏZšš"dòoò? ù×Ê&‡ÜÊ”Pžºa‡AV¾°˜ŸŒÄÚ"é9åè®ìIIñÌ!‡"§´)6r\kØÄ:¦2áåÇe.¯—u$š•½Tªò!MÛ²Ã+‹Wë eÙ´Œ&x<¼|¹V•IžãA®ö[v±Î€ˆu@UiËÎKæ_ëŒbu¢•µìU½|´{äùX^b ƒ4T*>>•ó§ñ Ù»)æAOe¥ÐosB4Œþ }PÐùªÕ} ÃX:´ é϶\|j\gæ5?vìÏ{·ơc‘,÷P×øù°ˆ 5É”¦©u¦†±È~€>$øtSÃ0ƒ”¿X˜:ç†åƒ9Ó>“Ü5†v4ð\™ùÐd'rS¡²¹¶®×©´APö`êlRgFïȯ;ÞÈÝ® Sl c°,'KŒ„+6š¯.Str×´iÛtì}~v“ošróà.³Ü†Ñ_¤U4I´ÛíÜQÙ†ˆ†aô.g|ÿ5y­©°ue¦°(³®sëåݽœrŠ ¿);ëÐð0‡IleFÍ9¸ Ö$ÃX)Ä ½÷h·Û¹%Ùi–Órú:4ŒåŠ|Ïi©r*“4œ”òÉGÊ“÷¸ÜÖ˜Bpå@.°'tMlö„æ\ö@—‡þÄ´çfáÛsá¼K¸ÖZ´ÆÆáF×õ5MÃ6r} épÈ厔›¥ðc3ù3Œr¸Â"Mµ ë MÝvÝ호5F®?fiÐ ©ñ……œ†sÚRS´;9MŽ—jʨŸ™Âܱƒð3SúuÀ ´†k­]‡‘M§ÂµFÔð†±Üˆ}HÈã¥C“?Ã('6Ó‰þÊý¦@y¢Í)Âz±a' ³ÐK¸30E֔Ѝê0ûÙ™zŸbþÐchO‡G ‡p©÷hA_,Ì·çà'ç073…ÖÆÍhm8yÑù0Œ&_IJ¿ãö&†QM™¡¡l=š¦ (Ø5ZÔ@w›&šõDŸ,t2Ü'#ʶñ& j¨ÃM^xmXIN)]p:í9Ì|óíYŒ´§àfO ñ³€k€Ñ h¬‡óIq7­ìþù#áçç1²ùôçÃ0†6{‚þÆ:£ÅúИüF=¤…”Î5eD¥&4Ö¤Íp :MX‚Üœ’++±ˆi,‹i5¦†4e¦_ÖßžÃÜã#™ŸÃÈÜ“Hfg‘ï6çN> ¬=ÖÈ)H[ Ä6Yöñ#ðiŠ5'±¨<ư‰É'I§í“C"°8Ç|“?è÷aâÖÒ¦*7ÜW†üiä­‘—…óüïÿÁrXÄaÌŠkEÜ9$¿eÇJyëǰ˜oÏaî‰G‘¦æ"™›ƒö ˜ …‘¹iÌù'‘´¶–jzéäæ“ľ0ó•½8þ™Gqäoaö C-´ÌÁ¡ÍþÍXwþœõËOÅIWœŒu;Æ¢qÆfÒì&ym¡Ó¶MþŒ•Æ{€;ö>Ùù}ñvàªs“úà¿.ßËôq!~3ôÄ}c´ü)SµÁ~{ÍKNîÝ"òÝûrÓºMÕ0“V×¥=ñ$|{H§‘ÌLEFê;$¾…5s³ðkNÀ·Ö!ö•t¾“±HjθþÆÿÀÿúãàõ¯}^wÍkz+„±j9ö{7cß»oGcX·ýLl|ÉÉhmÞ€y8¤pH]‚¶R8LÜ?‰‰ûNàö7ë0Žxè’¨Rû` y”&î…~™ü+…/=¼ùŸï~K¿þ£—üàœE¸yñ miíÙeFƒYc ËɈQ¢`¡‘¦›Ü´(Vù*;S2µA¥Æb´O?3…öä<Üüdig )€–æç¦à[£HÒ¾Õ1½'®Ø¹ÎÞµg쨕—ëoü2vî<Ÿûü¿ä:Ô»ï¹[O? ^ð,xüq8ðàĉI\xÁùxð¡‡Ãñ† ·Þö5;w< [·Ú—êJdþÞ}8øî/aã÷> gÜô:$›ãÎcµw½ù^|ýåßÄåw¿ NZIeÇ [—¦ÈŸ÷>Èß?^÷¯&FOx?óYào®/wÝ-ÀuÿÜñà¢í‹HOÌf’ÖI“,4@WQÉòŸŠóa´(;˸œåD•À5¢ÜmQYC©…ØÏ_?œçŽ ÇÉ|IQ=: }| ~ý^ÌŸÆÌ ÖÉ›°nËfl>÷i8åÌ³Š·µçÎLU~%xüqÜsÏ}øƒ÷½¿ý»ïÇÝ÷܇ /x®¿ñ?ð—ý\uÅáSŸþ ^ñò—aÆõøô§?ƒ;vàÁÝ»çdÇ;wîÀÿ|÷;ð+ïú-8lÝzþ÷Gÿú'ï­±BðÀÔ_ýLcë?¾ª–2sô³ã7~ Ïøçgã¼_Û‰oþþ·pü®cÞÆÒûøWŸ6V¿Ðqû&Éß½÷Þ‡÷½÷=ø÷.Nþ~ó]oǯ¾û·ƒü}ô¯>ŽèLþV0ïüb‰2³8ë,à»Sžp¸ø€;Þ¾8¥Fúµ•97I™‚±$7*$€}~Ú6é+ÅÏšþÄ#g«7«äÄ”žZ÷¶çrë\”õÅóðxà†¯á–?û{lzê6œ÷cWà”Kž‹‡?v}â³[¿>~/ë´cÜ}Ï.œqúi¸ðÙçã²KžÛn»ðOÿôE¼þµ¯ÆÏ¾ù§ðþ÷½[O?-Üó›ÿãxý5¯FÂŽ~h7zh7zèa¼îšWáÊ+~)€ëoøÊ<Ëù]aã+·£õÔ͹óé‘Y~Ï]ØÍ­Øÿš;0ñÑG'î<‚cS‡1ûÐ$NõéhÁãøN”¦ó_“_‰t\—¾Éß'/÷Ü{?Î8ýt<ç‚®üyï£òçœ 2×bÇg²Çå¯í½Éß æ#·ôOúµ·¿ðùeÀ¿ xûK² “ÀÅÖ—Yª…æß&¯ÍtÎfT{ »3ò¡T˜¼áC“zbNÀ E0ì!&"6› ˆûÕôª…¦3“Ý8ÑF{͸ù™¢Ù;õ¸ïoÿ =ð(^ô‹¯ÁØÉ›Ñia~ú8\’â”sÎÅØI'Åš›÷)œb'®¿ñË8vâ~êMoʼnÇ8¼îšWáØ‰Ͼ춞~¶ž~®¿ñ?JËuüD§\÷Üsàª+~;wž]z±ñhïÞ‹õ¯83wvö+ßÅ£ßÿyÌp؈$H?³ëö;xÆ¡áäŸ8cÏÛ„Ù§1`ú¡ò^5æCC«Çœ«hŠüÑpÓÄñãAþœKpÍk_iòg”â=ð ×é×v<øÀKKn>üùmÀ»~¨·4å“vû×4qÖS^YjøuÅj®ËÍ)à ̬†žøØÖ°‰yiË´`ÿ™Ùö+KÖnÝí¯:ìúÒ­Ø}ç=¸àÕWbÃI›Ðv€_³ßø6¼O±þì§DýŸ¦pó³À}H 7ýÞÿÄÖÓOÃñ“øÕw½>ô0.¿ä"|îº/bÇγñ©¿ý 6nØ€ .8¿´\çì<€Ç†ñq\ú‚‹ðõ \rÉókÖŠ±œpÇžZóá·ôöÿ§°ö)›qÖßý8Ö¼¨£ìz×½xä}÷aïÿu7¶ÿý÷ÖîÃx$5²\îÈ)‘ÏlêuÈ·Iòwï½÷á÷ßÛ‘¿cÇOà×Þý[xh÷#=ËŸsçì|LþVwî1^ý=¿eþ5õÞi‰‘¾mZ8¶!ëL–Oé׫ùÒÚ¿ŽÙì&'}j†…Tfø˜¡ #Ï×!Ïw¨>Ý„ÝÄÄ¡#xà_oÁè¦8ç²ç!u@:ºp#8ô­Gl½ð¼Ê´Ú³³Ñk=ô0.}ÁŸð‚gaëÖÓqÎγñŠ{)Úý0^wÍkpÎŽ³ñÁ?þœ^÷ÚWc|Ãz\pÁ³@=Þ°a~óÝïÄ­·Þ_y×oãé;ÎÊ”c¥Ñ›‚kuÛÖôgopÛo{]Pfàä÷>güäÓðÄg€?ÜÝ©m+ÚªY…išæ6¤”ÊMjÉß“ùCÿäo÷îGpÉó»ò÷ôsvTÊß³ŸÝQj´ãññq“¿U—¾S#þæú¥ÝÿÕû°“tÌ—–˜†).Uxæ3@WfØ„¥îJÁ(Zhr&9]ª J P>V(Ã-.¿~Íf¤¾?{@‚þå«p8ó¹ç"um¤£›áÖlÂÑGöàÄO´pò3êÍbŠqé%Ïǥ⠎ϲøïoûùܵ­[O áù½üøÂ ž… ß÷¬EåËh>­uSHZ™‚â¹]»1ö¼ pOÝ’è€WŠ'þîÛ˜ýÆQŒþЩ€x$ŠßÕRy!'¿…?Q& ò÷¯ºüMü­1ù3††ªŒ¬°8™üÐpÖ)Àwà€É|ðC“½­OsÌ—úü\F\8Þ{—ùÎDGƒh:·Ëï¼­®C£.^Ç›(ÁaùÔT9øj×?5-[ÎkíFø5cpíI<~OG?õ‚ uÛ€ÖZx—â»7Þ¸'³#kÖ,"MÃX8ÉÚ)$I×¢Ñ:y pøˆÖ›B‚ÀµÃ¹‘ 6/ƒ9}—¿¹Qù{ä¦LþvšüÍâÏø¹Kº¿2§`—ü%ðµ¯/.~®¸T ù6M‘áH¥Ëu÷n A_\¯3L6åIĬ6¤ Ñ1™€ü×ÓDl¨©ì\ΕŒ»»Ú{sS3ðpݺ ik-`æàaì»ãð8åO‡«\=p#Öéý§5:‰d$NqÀè%Ï€{â fÅ€}zd‡~óv¬Y‹ÑÜίW[oL9‘ÊMìw*åoßa]þž8dòg4‚§ôþkOŠëszŒƒ£)1ÒZÓ„QŽöaÄ]]ÄHÐ1²8dú‹:äD‘q 3õ ­s¤ÂÇf9õœFK5^ÑU¼ãíÕö-Œu ½KñðWnÃè–˜Ú?ƒSžýŒZi%I½Fµëþoc玳Bz½póWïÄþýpþyçâüóô|>r·|µ3%üòË.ÂI[6czz·Üz¦¦fÃ9¸ñß¿R8÷ŸwÝÝ»-MíµÇ»CNF~üE»â‹8úÖO`î=}å 1ÿÈþ__ÃÜÑC8ó“¯aý‘9´0§8s9ãçø±4};çÐjU+D¥ü=‘É’¼üÝ|»ÉŸÉ_#xíÀ[ʷܼïVà×/íXj<€—øæ“ɇ½ì{Ÿ©ÔÄ~7ÅZC“DßÁ§nK+MPl9óug¤Ã#å µôUSÒøoí¸ɺ²ÅÄ<|»³€a’x¤í.õ8¼ë;p# ¦<‰™´-;Š‹yòÜZa!¹÷þ05=SPðŸwÝ àG^zn¾õNLOO«á®ûâ¸ü²‹pùeáÆ›n|þ‹7bÇÙOÃå—]„ë¾x#à†›nÆ–-[pùeá3×~ÓÓÓøÏ»îÆáÃÇ*Ó0ÇÈÓ¶Á%]…Îaã'ã¿tN|ä&Ŧl/DukFáÀ#-\óÎãôgž 8‡Ä·ñ­k¯ÃøYgàзvcç•/Âw|Š 'mFktHËÓu5÷’áìºÿÛ¸ó®{á=ðôOÅå—^Œ~ìÓØ|Òf=|çŸ..¿ôâþûžwa8Þ²e3¦¦gÔ¯Ì+èòðµ75Õé¸g¦f°3{1œ¼e39Šgw.¶më M¬íijk×wðêW¾cccxá¥á?¿~/.¿ì¢žËfôwÒ(ðÈ7ò'7mÀº÷¾c?ÿ*ø½OÇáÎ<nS¾¶™@‚iŒ]¼©o¥ø&•r&b­¼WÈßÖïy:îuIjò˜ü5àÆ7ç¾gß*^~yÞצvšb¸F›ýËÃ6mÖM8¢a¦ì-°'§nÓL§ ÔÐçSÁŒ#çxkÒ°4;mXINMã,dÊ% Z·¨×Ÿ`lËÉØzÙE@ ÔK7À8n¡òPˆÜwÖ‘ŽÀr÷0àÚåR&ã'Ã;¢~%ÀsÿÏ7àñç?###8õé;àGGqÞÿ0žñãW`tÓF8?Rš§dý¦ _]÷î~O9£»©Ýæ“ôN’ضm+Þü¦kpÃM7ã¾û¿gEÆØoü÷¯`ÝèXø*ä¦ëéé¬ì{ì¾³{^sug¹Ëu£c˜žž^±D¼ìÍÀ ~ëÕÀÏý1°ãÙÀÎøÀ¼Ÿ˜B{×>L|øvùôƒ8ów¯@ëiã…pšÿŒü¤N’V ^ÈW ÉŸÉßJàç/é ?]óÿ"ºÐ±ã™Àõo\œ3pìcƒç›äC“á¥õ(òŽç®2aÈIåÄnÌ9úÔ Ñ†’d¥¦ºæ’ÉæSÐ>ú„z½å=¶]Ð]OÂ¥ÉÆXTÖk­©õu¸ëþocjzß÷¼ ±ÿœ´e3vízo~Ó58|ä(îûVñkPòù/Þˆ‹Ÿ÷llÛ¶ÎyLOÏ`zzSÓ3¹¯Åÿý+ð>Á•/¾<œÃá#G±nlûöÀl»‡Å ÿ~ ÞxÍÕ!Üù矋[n½WüЋpç]÷â%/~ae¾Œ%fÃàw¾üÆ•Àû_…tîd´g· G{vÚ3ëОY‡tz í‰u˜?1 1Ìc §½ëÅØôîËÔhc3œbþ&&«×^\|&ð¶/_ø¯âõ³ž |ôG€«Îí_šÚGFLÁi¾;£:eÇÁAXXirú %EZ`X´iTΟæáGöΟ³³Úù®ŸhCJô Ò4-„¡ã4MqìØ œzêÉ=¥7x?Ú“å›ôõÊÈ)g¢5V½Ãîôô4>Ÿ9>;›½ðÐîïâ–¯Þ‰;ÎÂôô4®|ñ qËWï fênºW²í𑣸>s2<󌭸ü²‹°ëþoÃÃáYçu%èï¯ýB8ýôŠÜ½/¼ô"4b–ša+5R¡Ó´ÃÌ'd†m¶õŠÆÙœ#°w@gÓ¨¦ì¼­} J…§c„#'×Zƒùcrõ£ú8$9õL$ ˜YÑo^xÙE6Þn, M®¤#"uªív»§uh$&†Q É[Õ쥥ô=] išº$IRt”Ïú5*[:ÆE=âØ8÷Ÿ ‰ö·½ó•‰9 W=ܺ´6ŒŒ =ñ$|»¸>GÉúMÙr:œ¾èÀ±ÎÔX,Ú°€àÌ¥¥f!˜üF51‡}¦iÊ ^â#D¤Ø¤Ê,§p+Ð]‡†Ÿ Yh„†®-U¡ªˆ=„2§àÅv¦Dkýf´ÖoF{ò(ÒHgãÛ¡:$HÆ7#oÄW¡aô­CŒÍ Xüæ”Lþ cáÈ™CMÃ{ï²"ÒC€ÌZƒÎVMr­<¾†^A¡É!­É]b‰ œºS¶åôµ~>@êX ™‚OSÀg_n­5£ÀHïSB £éh–O>»I“O}û¨Lþ £ .{u—YhI’¤ÂXB è!³°¨Š Á%>ç,ù1ŠÚW!!Çï}ý« i •òÇ?"ä°ÓR`òg]´5\äu®IÞá½wI’„á'ÖßÐ,lnP ц4!šªMéñëÃv*£_>3†a‘ —5®Ìð°&†18ê¬7Ó4e†CJ Ÿ˜Dçùß ²ÔøDœ2mGøË€_£ëçœ -G,_¹¿†aôMÞø¹$I òÙO?6Ã0âÈ!amíwHü<:ú‡¶I%]C"圂Ù\pŠ€ÿmÌjÁòoâ3Œ•HlªÕj-ù“a4‡|B~ìK…§ H oç”WuÒQÀô¹9eAIaÎ}rk„FÔï@K4;³ØFŸ¨šÙÄÃÐîAú´Æj¥l„"6 ÕD²ŽX:Æy¯ï¸d‹ˆ;—¥=´ýœêh“ÚÃk’j˲ñz’?RbÌ:cKOì§-°×DÆsÝ$ëWä°S8N( ?)á&+1ü4bÊŠôÞÖ<¼ Ãè/±¯ªØuÃ0ƒ6û°lò̰á£>Š/PÎ=†A¿}ô³‰üeè÷°7¤ä²Re‘SØ Ãè?u:Mn2Œ¥§ì#¾ÌJÓ”~m!_ÅVs ³œä«éÜ×] X›¯>ÌEõ´ùôU©)Ì0V1k)w¶ Ã,Úš4Ëà=H“ÈO&œgʘ´ÔÄ·>àÃO|q=EiÔL§²…¬35Œ¥%&ciš6v­ ÃXÉÈú²Eô$›Þ‰E}¹UFq%É$ˆ 9ÅEN‹bVGÎ9KR¤H…E{xt¼ ´RÃX¶Äñ’ÃO&‡†18zQ^šöÁÁ}u™BÃGœ0´äÖ¡ ZQv±P²L1pìæFtP1 ù3ŒÕ@™ÏŒ}TÆ`)ó•iº,2ãJ81"¤LdrüS¸é& 9qË O¨)•R6uTž¯«îÝwGO,>s†± Ù´yg>åôÊpÚÇ„<—$IÏÁ&Æj¦®ü•sÎoÒ»;‚sÎ¥@°]™bCkÑN¯“MŸßú TD“f<Ñ¥’+—€ŽÑn§˜›ë_ cÑn·K¯kNùÚ5Þgô²õÉŸ±š©’¿ºh% èö%Í>3¢°“ÛÍ@¬›GƘ´íÜl'±þL®Ä ª€Z³œ´ß†aô¹fUÕú†aôŸ^—0iÒ»1Im¿&™oï… Àf9Ioa2ãˆ/.nþr¡.Þ‰Ò±¦•Z‡j‹G“?‚Oצó­VkYŒÝÆJ…Ï4lúû°$¹×ZþƒB£ Ï8i•ñÞ;¶’ßÐg8iëÐð¯Â¦>0ÃXÎĆœbË%Ƚ ÃX4÷ i5mú¬Cnyzˆ£ÉI®°4sɱO!‚l·KòŸ¡™QK_ºE í×aó¦q¬]»f)²dgÝØXe˜˜s¡ì,egZ“?c5SGþbðõfb™åð±Ÿå;!]$+y†Ÿè`DFB°M!«ïÜðv¯®ë©½PîÍ›7bóæ Éša¬xª¦„ò•HÓ´v'jòg‹c9(-1¸#ú™°þϯ"Lø° ŒÿefåÜRÄM™és~Š™¿ Ãè/ÒoM:ós†a½ë;¤K ²…õ*#b’Ô˜†‚³—NÀªf; -r)ˆìš6Ê'`Ž5ŠÆãù"6b'Ì¡s 6 cé¨Óaò!j9ëÉ0Œ¥CúÎh×è˜hŠl’Ï.º›Tj„íøo 3Ë©°X4!á`ÔÍAZg4k ¿fÆâ‰É\l8MÓ¡ùÜÆjC¾ÏµeLøù&²?“[E˜…í(@ìMÅæÂÙ=Ý¡¨ØšæìA–]7 caľîZ­V¸NV™¦õ†athš\ÒZwÚ(°:6ÔæŸL¤¸ä”±2Ÿ—׆A•òÒë5Ã0Ž”Gš¢­9†±tÄÞsškFSᾺl!ß°dLvL~6¹íøÂzˆ†²c9”“³Ü ’˜éŒvöMÙ®«ÔØn¿Æ 9õ´-8íÔ“‡ÚhøÚ,C¹&ÉŸÑD–›ü•!],ø,Ã2?š&}ðÓ"¾`ëΰ>Ä1ËŒt{ +kþ1¹¡'÷D:üaÈé] ùd»ýƒ¤Ý^^β²Ôäk1¾k&Æ YnòW†üˆhûMSfÒ4u´A%­w'Þé\÷àCNžïå”Ûú€Ï)0M˜å$;˘)Í‚ c8Hß5þµhÆÒ€²÷`ÓÞ‹\¡c±„Gw؉n ‹s§`𛳞MdæáCPâì‹06ÏÞ0ŒþQ¶4‚ö†ƒ ÃX:øò Ú0ÿÛd?ް;¦—Ð…è^N…møôlï½kµZ)›J5”©cò6eÆ0–ùñ ?(´ó†a,-ÚÐÓbÜ0…æ« ¶¬ ò s+Tp v"`~#zÊ M é#Ãéǘ íök ’ñ 뇅žÐÌÖU‡½(3&Æ YnòW†ÚÕdOºe4éc#Ë?ŸÙäÛr)Ëg9B^Ùq#N5"rŠ,ÉL5Á)'óDn„…†£i£U÷Hl·_Ã(‡Ï\’ÊL«ÕÊ­?ÓËNۀɟa,鿦]/³¬›lÚvX*FOr+“>B¾5 ¤!±ÈøÞ ž††L7ælFÿц|ùïv»»¶œÆë ÃÎ9ŸYh;ÖÓ”dßÂ}h‚ '2””®ä,M±z£éゆ±Ò‘N‡ò‹Ï‚ cðh3‚›üq‘9ýè*2¬ï3°Ã:5+çL84£I:â(ÞÆKW²Ñ”MÛ6Œþ£ÍžòEÛÐyÛmÛ0‹æfÑÓAÁ~³áRöWÄ'ò¢«¢HóËñe‘sça£ùËh¯a‹#65(ŽÉ›ÜÆ`Q,á|Ù’'M†—€î4m>)2Ã:¬C£•9ÔR¤´ðͰ)ó¡áìrÑL £ÉÈ!^©¸È™ZçjÆÒPæÜ4å%Bpæ#E¬\|ëƒÜK,4üd®Ä|&÷<Ö”mØÚœeò £ñh–)ƒ\‰1Ù3ŒÁR¶6[죿AÐìê`™!ýCŽ Écn¡¡rè @Pfjd/Å<¢sçø_Ã0‡œåDHßï=Úíö²»7ŒåN™ÿLÙ,áaÇšøïlVµÜé°Rp’ÝNò›´ã&wJô°äC³á&ÃXzHy‘ÃM¦ÌÆ`Núš¿[™uuØdz†g;nCñ×%å†ÿ)4šáÙ !Úý µÌÄœÍ:cý¥j¨$I «y›ƒ°a,=šï«¶¤§irê6s{ñ¤ð8¶I%ûëä^NÁù†nÎ*A³Þ,]‰jPç!ha6ÍN-aÎ ce“™j³®sì=6ÍÌÀû ¹å×¥_ÍC~#öN¾ cЙöM æ]9;½?¹©s³Ìp%§‰ë·i®.ìØÑ¬k¹¤ 1ÂNüg˜F¤}qy_œ:5¤æIùãµcï=Fç'ùÉÁeÖ0V"Þw”ȶ6ó3™uFBNÂý(`߯ gº Ü{ÔãÐì •…5øIÌGÓ‹½F`8ön†®ÀDòêøÜJÁ@~ÆEÄ:!„ŠT^´õfl¦“a ®Øaß&m ß0V:ó)ðÈ$ðàñá-S  ójCOtÜ$ Ë UÈx"ƒª‹ëÑnÛÜ|×– ØÐØVtï§A Wl4“ša}„䊔™lÈ ˆ›µM¡1V:‡fûŽzLµ‡÷ÞÑF-ê,±Ð Ç`>RTv]]j†vÛÎYf´!§ v¨¥Y`4åÆ0Œ>BJ ýUNú4uÛ0Vó)pßQàÀL³ÔühªÂç\J¾2Î9ÏwÞrïuͦàìÀVé“©ý ËBS6 gFŸ©PfHþh'“Gc¥qh¸û°ÇlCÚöB¬/ ³¢Ÿ]®‡H#K$¯ž;gñä#ažÅ¹õ\¤7ò0Ð4“›a}¤â#‚w¨I’ëLC:LÃX4ó)ðÐqàáÉfZeèXÇîiâ»R*3¤’_Rhr3œØÌ&Ç"ÏíÝ4,ë å…+Wt.ËWî¯a}FjÊÎñN“V N’$8 Ærgº Üqh¸¾214Å%6£‰¿G›"›"¯ÑLiÃM@~Ú¶^Ÿ¶öW0 c•QÓB#g<ÙG†±Üyôðàñæ 1-mòL“”‚…ÑD%Ÿ_ ¯àG#}h VmÃl¨a¡MÏ–`ÆÀ‚è,'ú-„ c9òí‰æ 1Ũ3ð‰ïI'v#(smQ®éNÁò&ÒŠ’$ñ4ì4ÌÊÐÒ•¦6u´iÏ0–-\™¡ßÌÏŽ[i c93œEò†æCC,Ó̵e¡@>Ñâdfpì³ý²=Y@wE`mÚ¶}!F ‹Œ´Ò ïˆH¿éoSû ÈAþ2ËA™‘Ä|gb¿›@6M›\]¼r.F·†Nh ÚEÆ“RCašÒAÅé8lFŸ êå/­£æl,7NÌu”™åæ/SgVÐ\ ²í Hql¥`æ“›ý„Lw! Mn±¼Lqqò&þåÕÿ:–y‘ÊMòl+†0Ë)rsÛØ¯±ÜÙ7µ<•™²øå —|ÒPô“aJŽj±‘CNaê6?É”Ï+cXS·¹“aÌáP³$Ù¢aô9sR™°,:Rà =Ü{4]vÊLËÁ1ŸÍºÊWØuòéõeNÁ|.wa=š4M]’$^DÌï8Úì&¢éŽO†±âÈ,6üC#ÉvÞN’$ b²h4›wcÉ~ ?"Hþšä&R­˜ÇG†|‰¾ÁÖó rvãîvݹ;²1,¦áfC é„ÍnËA35ŒewÎ-²—_Mœã›?›ÑtV‚2?øD è²Ñ$ÈúÂgV³öM÷[Ê  ¿÷äLߦX¤iêh_ÍýE›®¬âCNt²÷4f³á,‰Ù7ý!Ʋ7Ño œ“òÙjµLþŒÆqb®3›i%¢½#—Ë…TZ„µ†tU±‘[ä<‹µÄ˜9ÙIíiPhÃM½„7 cHå$,²W\&A 6Œa3ݾ~du´Gi•ῺF›ã‹éE|gäÄ$‡ØÖtàÙ{Þ{n"3ÖPjw˜Úx¿FçöÀ cùãœ8ö…½›øz44}Ô0† mg0Õ^ù¡¦†¾sÃH >‚-L®‡!SN™),ä?Ã~7b¥`9­Î=†aôrŽ8Þ{ßUnÈAØ6ª4šÀ]‡W‡2Ã){g7M©aïj/~kyÍ­î™Sh¤I‡ )9>Ä”MÉê,'N,rXª)ù5Œesb š.4e›[Im-(£ ?|Xš]tµØ4MÔ0–5ÜBÃdK®L:l‹®a+kzv/ÄÖik"”7>"Dð©Û<;—[X/œàŽ82">eB+6±NÓ:QÃXbJfS¤ij2h4‚é6ðàñ•ßë(+M—If4),òKç"3Â:4NFF7³cRjhiâ¡jzÒ”ÍçÛkù²¯DÃè3Á:ÃOå‘|gLþŒa0Ÿ.ϳ‚öq_õžn’Å&ùqÒÃÞ÷^StˆØ´Š$wSæG“KQ¹_ÚªÀeNÂÃVÀ cEÁמa[­pÇ_ùÑaòg ƒ‡ŽcU9ÇF*êøš6 ±o8Ï-8tŠþ ÛÊåKËM>j™Ùgà”ä @QÉ)»§q¤ó@» Ìœfg;¿ç¦;çÒ607ËÂÍëq´F€$[bhÍÚîß5cócë:׎vÃF/H‡àì·\{†[iL¡1ÍcSÀÓ«Ïo†àeŠM“d“î\¦oð…~G-b“]ÐŽ»ÄIâE"KQž¾ÒèE½¦OÓ“Àì$0; ÌLu”—ÅÒfÊNU|kÆ:ÊÎØ`ýF`d´slehò¤ ýÒŒ'Ã4Ómà;«Ào†Sf…‘›ÅRxúiÈû<7)‰ÖÀsÝÕƒÃÒ2ÊŒ'Œd€næJMö•Õˆ—9ÿjSµ¡Ì¤óæø‘Îߙɸ…eÌMwþMN‡ëœk£ë;ŠÍø–Î_³än¢ãˆ%”ûÐÆ YmCM@qï&y‡áç„gïíœÊ ùñJ㊧·TN©arcXd¡!åfX6´j ÂÛ< Lë( “ƒM{1´ç»y&%gý¦ìßF`ýæáæÏ.Úú3Ù9ÞYr™L’Äc`<6ì™Z}íM®ý èÔäf3ɉJÂ2“›ºÍ?»årÃ\3râ÷P}hˆ2e†Îñyp“G;V˜£O4ÃÓ/¸R¶v¬£Øl:Õ”›Õ uŠa§¼Ï P´¶Z­¡dÕX]̧«o¨‰ˆùÜÀÃ7 mYaÄéœ[ WhHiÉ)6NlEžÇMs«k¡©òò^4+U‰‰1;Ýùwä SnV#rA½Î÷b“åÇ…a,%L®¾¡&¢ê×T†#D¹"1ìÄ‚uW .XhĸÀVÊÍд™*G_m¿ïšt8´8~¸ã³Z‘ÊÍ©gë6kF‡3c©àCN.Sd2%GÊ^>|ŒÕCg½Õ«8K«¨¶jw“åQêI’ÐH‡¾{7Àø‚…†ÝÀ÷j Ÿ_Ì&gêüÁŃéwßâäÑ®"cä™ö=Ø9ÞršYmV2rËÅ„Mrg–cPâèLºHÁ‡¦ˆ¯CCçh¦Ó°ýg²<Ô¾¶hëÌäQààÞååÜ;LŽ<Ñù·~S¦Üœ6ìý„†„d¨Nùƪâ‰éÕ鬡)1‡ý&1Rxñ·0u;;WPh 3˜ÿI®ôîYð2'§EåõÈÀ“{û³>Ìj„œ‰îí G™b³2_Kbæ™¶iý [XÏXj¾u¬y/èa ?"hý™2‡ý¦ øÄ&$ÑuyŸs.7äDcUN*/,€K’Ä·Ûí$³à mÅ,͛ʽ §`Sdú G™b³rÎÁ(~\$I‚v» `y,Äi,O›Z½ŽÀ9¤sÁ¨šP3 „°çŠ)-<¼Ï/º×µÐD±É~vVëË~„™N1ÅghÓÐbg­‡fCKK WlN? ?yØ92JÅ:ä?C_ˆMé4•Çj¦­!߉Úõ¦¢ 3ÉóŽŸ_£&ïÌœ|eË(¬;çP ƒ˜öÉ•šž;Ϲà±M‘³ÓÀžowükNÙn³¢–ÚÂzèÊ )2r Ãè7fÉ#߉1÷ -|}†Wò¯T<²iÛ|ŒŠ* (7ÜZ3lE†ÐÆÿäC©mR£é×÷,Y~ÈyøÔíÀÉÛ€Ä_k<|¨ ÒîòUríÃXjÌ:“'6û—X³œÊŒÒ2“›é”s æ3›7ù ­Ó\P:yxl·ùÉ4ƒ{€‰ƒæ_³Òþ3Lö/Q¬ÿ¿ï©–ËšËþózgćž £Ÿ˜u¦ˆ6jÁÑf:5IÁV™Ü>“t]†§CÚœ2\Ëþ-HSš`¥âÚ'ý•NÁtxì!àØ¡AdÓ¨ ù×LNØ0TøÉcƒM;çf7å¿ å [Æè7{§L™)CÎnŠYP›bµ‰ÍV–VíV ãÌýf¼øºrì8œ§ÅõÈ9xX”9?É~Oö>°:¶(X®y¢³©§YkªñíG¾Ù—¨’^«š+3%3)h¦S:Lcåph84k ‡+/ê;±Adý†tƒ‘î/Z¦; ÿB±Ðpm¨Ì©Ù6e–š‚Æ÷ÝûM™YµæñG€´=ìÜ4šö#÷ö%ždýöúi1=ê„C>u¬¶±TìŸvš‡‘Ð,1+H“`¥®ƒž¢ýÎ jÓ˜÷"ÏÏ «“’OecM~hF =<|OgšQä;wÀ÷i¹÷ä´õÓ*Á„§ÓÍÞ+ÆXL·mU`²õgªÎ7åý&%1EÌÅ&(%`šŽtöbëñ¯QSÕ‰Z'»Œ™¾»£Ü ù›ÿ±o±%g_3YŸÿ—å…º>u›üfLþŒ~rxvØ9h&e³›€¸6E>cEa6“0¸¿_ ;äÄO:t¯qÜò‘E¶ÿŒD›g_G[5– ívgøÉ¦×w9¸³_¾®oÑ%Ûk*4Ò:CçPœyH3›Ò454ú†MÕÖ‰¹ˆÈãå4’Á|e½°Ê…iÈI.PÃrø"6aZwæ?3µ®ìaÄæà7ÑÊX÷ØxÙ¿~gã|ê÷ô”~±R7·Ò°)ÛFß84kSµcT½ãhd¥Éï²÷¹æÛË‘>4|ø‰”'´;Ï"J­hCÓFµ©jÆ `úðèý«Z©I¿ðÌßWs͘ŒìØœò”ïâ‹ë¥€²L­L³ c±˜3p}´)Ú@×JÓ´w¢ô‹IÓ4Œ¹âÊÀÒbšÜt(ò“áãU<1©ä4®Å)ëæ 3kÆR0;ÝQj¦'‡“z*þf†ºF•¸žRX)8„v.ÜÄ"ÍùØh& A 5LÙaò뙳9¯th¾S{Xn‰ÑöXš¿ïÌ¿ý‡±ö~#/|pîÅå‘o¥ÉMvJC'ê½G«ÕêZHû—mcb‹éUS5zÁiš2tf5‘®Ü3RQb ÐÂzêl&rŽ7Ý›‡´¸^¹öö5¸Š9¸gh>5½(3Ã&Ù ¸K_¾ÈX˜œ)‹wÙ‡…Ñ/ÛpS-äy¾ìžaÃõ Bsy‘ðYN•CKÙ9~£óÞ»¦lN)‰Í»o¢Fj,?2ðÙOËI™2ß™ž×žÉÛäýgÈ:C+s'a“?c¡ÌyÛY».|8IŽ^Äd°)²©øÌä|eäd%~ (î¶"âdçÂL'—m}PÇ´hÓиVªùØh¿·¶NÍrSf’­jq®¸ýAæCÃ}Ùäl “?c¡›v–ed–išº’<çô¦Ø„] ø:4Ž+2ádÑñ¶°1å ÍÊ1…Ev¦R;5Ví6ðè}K¾¢ðrSfÜ80ö+ÿ¶¸H‚…†ýF~Ú¶Tj c¡œv–Ò¿T[ ª©ä7ÃNq%&7£I3¨äÖSühœ˜1T˜Ý466úå™™áxkÉÙLe_„¦Ô¬RÚíΊÂi{I¢_nÊ Œ½âW>ÔtÅJ#õù^N&ÆB™˜·¶SÍF›Ü4YœšžÆš5k¾É”òÑ%?^>ü¤…!'2×ða8ò'½´|ŒŽ~ùðá£}/`eÃIe–c2; ìù¯¾G»•™u¯úy¸+^ß¿_5Þ‘ÚþMF?8>׬pS‰)*RÑiÚ»ðر~Ëæ¢ß|æöË4Ym\˜åDñd7†HIâ Ú0§alÞ<þ¡¹ùöÃVj4‹Œv­é&6c@LNt…ûÄrTfFðGá~ä-‹ˆ,3|ú6ó¡éü,5™  áØ`þÀ G®4ËBsøðQLMM?<>¾þ™%†+1Ô­dgâxõó‰Ïrb ¨™iµZG¶qêÇN<üøObjzpƒeESrŒUΡÇú2ÛßøÉe§ÌŒ<ë´~ú÷ú¡”'e6…·7Œ…0½4£Å«†&*1išbjzûöðÇŽïÞvÆiW@«ÕJÙr19an`Af„‘VWUH»âåyŠëøño<:qü—fgçžÓ¿¢†a†1$–Dýòº±Ñ/oÚ4þaçÜ9E;û+­¼A‘Ñœ‚¥BÃ}i±pöR+ŠÍ çç´ãˆåÇ1m¬`zŠÝ§Íjb…ÓÓ5ó›LÊcÙ:=Àw$/äŸâƒ¢PV9/ÇÊ)Mº.®…x²üÕI_­’ó…¸4m;¬è¯¥Ä¡•;‹®?{ŠÕmWUù#O}ªîµ/ãË PZ&ié¨Ûfbm½*|YY•¼-¸þEz¡2ù¯QN“ÿÅcò__þ5e‚…SåGþæíCÊ?ƒâK@¡Aó5gÔ½¢Œ( ЦvScuü¼s.,q[œ”­±³<¨ŸçCÆA+kWæ]é$;óÞ³4è:(<}ÑÁɇŽ3AÈ5v¿z¯,#oø¼®x§Ñ0e8^¿ü:ÁÊ“«/YvoH/öüDòŒF…·!^v­Ù¹BþEÞBû£6Å_DJÝi²ã¨S‹µWžY¯G7Hþ9)mÜ)yàñ䀗WKG>#¶´s‘uËòäƒ×‹lC&ÿ&ÿT“ Ò ùמ‡ ËóÉï‘2#óÊŸ#=§Hyd¹YV<»;£©|x²!ˆJ¢‚ʼnëpr —g’ÿV:­p/׈YEªáùCÖN^ syd×=¯›H> rÙ—¯úÍ„¡ÐHD&ƒÀðú•_ RKÊ^úIuÀÃÄ:y^–•—I»‰ƒ‡>Û˜p)m´ô%ÝСÔ]1;‹·ôË–—GtÖá|Ù½ôœ¡¿8+ÛröC•uMæj”W}þ¬c+ÈÙs4ù7ùW›ücðòïÅûŸÚ¥%ÛŠ¼WÙ:‰ß_è²ëZýå~"pNc‹5XÄ~ÌRSÐÊcÈN:ÖQRXÞ)‰24T^ùøõ²8Øï—œ|>”¿ÂCfég÷:Bé7¡=#­~ä3ãDzmSx!øk«t¿Ö‘È6é@bõýÚòòÏÛm¤Ì9ùâaLþMþMþ›+ÿ²nc¾i”/'÷Ód¼¤þ D-4<Œ8_Ðx)³”):/ —ëôHHb š %ÓËÒ€<¡d•u>"ÿjú2í’<ÎÅ: Þ€x±¼ö’¿È°/K‹ Sëø¼&]ø:)«XÞd'&뢬~èºí¸ðµÍïÑ,Z')ò\Øè5V_œª1ø’4£m_vIJ“’φ¢ ükuy.Ñ~A´7-¾O,Œ(¯É¿ÉÄä˜òÏë_ä'¼ÿyß )`²©j߬pwèorÙP*‹+0…ãHeÊBTl­†ÈÒÎež*P èÔ‚ÊîË%À„§Pi±†‘Ëûâ JÓ8/äCûªŒÔ|‘¨\Ü_ÐÆE]æÒ”ùæõ¡|îË×);Ÿ«cY&ù…BYµºõœkS2.%eVð:à,•Uša«òÄãU†nÔmöŒÖiEÚ‹¬‡BöxÇKGÖ¿’^áI¤¬;Z§&óDQˆ:4ù7ù7ù ü×EÊT캨‹˜œ©íJC™/Ü{ðò:5^)Š ……åI^NXXþ¹ÆW(dLãŽýæç:²ÆÊo—ù MI?ÜþìHXrv]anISË©•¯fZA E<¹_úòܵûd{”m°ä™æÚ– Éw.½Ôæ´Ž²* .-KŸw2±g^#psEŸ–—B:Ù…žÒáõRQ““5MºÏä¿9ò¯-I Ÿ…w.ï3%ó!åʳféHƒKØm;w’%Æ‚–x®xa“$ñιÂÔ,ÞØ©€,~ÏÒá[H*— :Ý›…Oe^¥@‹tBùe^Ež|öàC#¡0I’x^^ OÇ2?¼~D½…°,Ï9¡¥üS^)}­,TOTÏ”/V6®`†¸Ø5g<§Õ‘LŸÊÀ:áG–ßP7T¬.BÞ(ßô—œ©Îy>) ^”/…ÍÎ¥2Ý[Ã3–åÍÅÁâ q°¯©4+kÊŸ¯76‘:÷S^x{Š!ê1ä—Ú‰¬7–FH‡Å•?ø3âõ"ÚBAþy›¤2›ü›ü›ü_þ)-.WÙ³ie[@<#Ç,X¹2R4¬¬ü™†4èPü¥ãî@¬ 4!Þ@e`®RfåzT©š6(ïeYÐ c&0G–¯Â5z€ÒÄ'Ãñ°1-Wä5˜ÑJÊSˆ¨êzä½T~ñ…™ûRàõÃ^Zø\cR:ã\ú²5dj”þ—âÏÂy t©\þ´ç åOéXÕs±ü/†ª¸´ò(÷De9V@Ñ6K'êŒ[ÖFëÔu¬¬&ÿ&ÿ&ÿñ딇¦Ë?ºV• lÕ”/žqJºª¬U M(O„"SÎçÂóß% ]š½¼Ÿ§YUU™‡“i !ÕL¢!±àQÐ^#y9–Ö}_ÎÙ,"ˆAé”é+Fè°J¦-ò¥âÕzÕ:4þ‚`Ï”Êg¨¯,Õ”Ë{I}•†¯ûbÄMÏÏ%I’²6­ù¡…{ä)¥£Ï¬N~é›ê*Ok ¿¨uÆÓÒn5ÿíY±6B×å 6Ô³¨?“˜ü›ü7_þ%\–Y{*´+^_ü.¯ZÚ¹|”]Ìnv®hŽ ™£†M kçYa ayú²bE^´Àê«ðìXþËwø¢Ìò^ÐÌ,êAø“@Ö•[ÔIΔK½ÀxÜü‘+Ï?W·¬c¡ói,*¯#V/¡~LþMþ)/&ÿË[þE]æþŠgžýéæ›Ë„P¤rmNQ–dûíDÎÆ4Ÿ\Çô¥ÂW +xøÍµ1~NIGK×ÓÃд?ÖX¼8Ž™¹•§ÊÎó(óÎÊ[8®ƒÌ‹|x1303ƒÊ3á/~?»7”—› ³{£y”†VçZ^èž²ròéùR@´gÌëZt Ž |¬µ²i÷hí“×±¨ÿœÀÉú)k«”¿^êš· Y>j|xW+kY^X\ü^)+…ò×M§Lþ³ 2^““4Lþe<})c‘rÉküYÖÒMÔr‘J³™|à¹/­`• )RUGÂ+› °š Ëg´QIÁŠu¬”V¯T‹«¬¡ô?ïÈØ½ôCGHa :WMhµúÐò%;Qö ÚyYùeºÊ=áyju£uÔŠ°ñv#3Ö£²£”½ ìZ=dR¢uŒ±8+gå3ÓòÙK;e’J@OÏ´,-“ýœÉ¿ZF“ÿHÙ©ü}ÿB~yœ¢sr'ëZÆ«(==¢JþC|¬‚øßû-µ¥‚v$á ‰Ý›]Ê¢¬ã‘\«¬ì8WÙUqjqñ|³ó…Î:ˆ²„:ÑÒkà¼,,¿ÔÕ=+G´Žø³‹G뺤£ù‘u ÑVªêM>^BXbÏEíȵPIOìȵZ/S^ZG«tnuó¯u¬ð™ßÅ›…×:øÜK—¬Ý+/¶\Ÿ“a¥LþMþMþ—·üó©J >±sZã>4RIáçsé°Li‘6ËPˆ=\s.?ȹl˜ì/ç Ïãç ãòžÎŸîØ«|€<>žßýÊéVˆ+Ž•Ë¿Þ‡AŸ•'”‹u”Wn “Åãyšò:Õ%¯Yßò>Ùˆ(¬@þ²²¨í€¥™ÖY8ï}¡.YYè¾ÜóàÏ P5üÜóeçyð¼œBÈCûáE§J¤nríž3 'Û1—‚±|ñ}z 2ÃË%âãÏѱûYC'(Ëê…µWî‹GËwÈ…òdòoòoò¿‚ä_©#M çeX*gä·TH»i² «šSI¢ÑðL=ÿ­=ºÎ2ìbáè/\¤2j•Eä+»TТ …u\!/<±T•ŸØo@ïeì%=åþB]‰ú‰u ¡qñú+¹ßÕ¯|™ aµüT¥UV7%q–~½Ó½Ù¹Pf-­:ÏJ¶–VÕW`.Œ¬Ó²º’eåe©ª/~o,|¬Œ±°¢Œ&ÿ&ÿ&ÿ+OþKßÿJ»Ò¨ºŸr¹9a/a^V’Z™U¥†Ð/¨“Ðò D…5N Åãð,®_8ôŒ«:¼…tè<ŸR0Ùµ˜U6t-͈i/­üO´cÏ·§òYWŽEʯJŠÉ¿É?dÙÅ=tlò¿ð÷ÿbåD½‡ÆþT)D³l Ž]+tˆ@N8´0TŽXgSÉ”¬X§SY—%å¨lJ|êK„‡¯¨·Rj¾82ÑιÇ:Wã©øzXˆ€äÒm*VïKAé° ô:†x鯾4ÁÂ;7Ëò•VöVöÊžKÝG¿Ðò©å­ò#€ÇQÕYAÔAUç…zò#&ÿ¥²,ÚŸÉþ:×äßä9ÊÙýKñþwš…&¦!×­lí^-£ Õ¨«îë¥3ªÓ™ÄÒa¸zE×Éwr ­†i²*Ÿj¼"­ÎÔ¼—˜ËÊS(G¿ªë…z/ùšçõ%딫J(µø!ÎUÉÒBeFæ+Ú)ÔH7vÍäßäßäßä¿*m-l_ä?æCS&ìµw{¡ÜWg©½H݆]Ö˜Ë:Ù:ù©¢—ÆÑKC.»Vö"©ûYˆ@Ê:”é.… jé”…©ªÚY,O`a´øz‘³Øy“ÿâ=PÎóøLþMþ{Áä¿:ýÿ?*|ÙºC±våIEND®B`‚instagram-feed/admin/assets/img/instagram-color-icon.svg000064400000004710151435171370017361 0ustar00 instagram-feed/admin/assets/img/twitter-icon.svg000064400000003375151435171370015770 0ustar00 instagram-feed/admin/assets/img/sbi-carousel-prev.svg000064400000001006151435171370016667 0ustar00instagram-feed/admin/assets/img/oembeds-image-4@2x.png000064400000102654151435171370016536 0ustar00‰PNG  IHDR8@±ìÇ pHYs  šœ…^IDATxœí½{dÉuÞ÷eÖíê®éééÇjÿùqF=ŠR;bå¥(3WÔU yò·ª1åey^Ñð Eà À`ƒ])Jd‹*[Rv*'ï´oðþä{vnq}¾ùuÎË“•)ÙG~-«Î‡×ËïE• í Ob`à^Wç(²ëYYiV]÷!â0ÙWÕ3” ªLàŒ-f† E>µqö£(u¤˜ve‚TUÖU•wÒðe –÷Þ›½÷lïì¾çà óŒsnålŠ«('g®(ž_h-|dmõÚû‹¢x¥PŠØÀ0ë&ÿ¦(3…Zp”Y‡+òª!Ynø^Ï­½rïþÿî½vmuóóMXkÏ¥ Šr:hïïc}}Ó߸±öƒW¯ü[y*,€BnáÔF@™ITà(³D•hÉ¿ørðö¯Ü{ð÷ŒÁ{nݼ~ÖeU”‰ÐívñâÝ{þ‘[×ÿèÂÂüG0ž€É‡¹Tè(3‡vM•YÂ#­¤}¶,þz¶I…Þnï?»¿ âF©EQàÖÍ5sÿþúÏ„EÃD‹8cÉò*E™Tà(³FîcTÚ™“)Wøf{{÷=k«×Î¥Š2IZ­ôœ{fÿà­´Ø{ïü“…4»/·pªG™)Tà(³F>4 vº”uã,•n¯÷dQ¨ß½ROZ­yv»oÉÅŒüCfÝ6@Qf8Ê,ÂÓˆQÃ>g<µØãµÿªÔ0Ùú(ö³eúô+3‡vW•Yb îL>‹„ãÅp°:Fû°Ê´pþö:ž;€‡3Î=xÕ9,¼nWßzÔjªS†Åiʾ«¸Qf8Ê,Áve0´«Mø<‰ƒw»]ìì¶ÑíváœÐwmµæÑZX˜Ä!”d÷çþ-îþðÿ‹X˰¸†. ÿ. 6°‡. î|ë|Ýÿôµh½vØó$#±&øC„>pÌÀŠR'Tà(³JeeÍ‘b©ë½÷ö¤Õ{{ë7ÑÞ?¨ü}}½:k«ËP?Eèýî]¼òÃÿ7ÿê;qí¯ÿ!Ø•æÐuwÿí>þ ÿÿö»??ô;pÔnŠƒŒŽ²­(3Ö´Ê,22×ÊnnVÇ ãßívqïÞƒ¡Â&_w{»‹vûk«ËXZZ<Ρ”YÄ;?óϰòž×aåƒdäz/ü…Ïbç‹m|ã¿úzüë?öØùím\}ëRåÊyÊ ž"®ƒ²ÊL£NÆÊe ævb$ØŸøâŒŸ1WKÜäÛÝ{õÖ×7µ2›¸»wqõß{"Y¶ù_ÿŸù‡ø‚ù'xá}Ý/µÑzý"æoÎaù®av~kkÔnM•Ï|¤õxf•ŠeæP£ÌU¹vò”ÑÁØ{/ÃUc[pDÜt»Ýòáú&67·O¼½2 x`÷ÌÊ\\²ù_þs<øÿnþäëðèÏ| sŸ}ý¿ÂÊ[Ãþá[-Ì×ãj²¤°fÈŒ*E™yTà(³ÆHß› lx–•Ä Ûááúæ©Äͤ÷£Ô—Æü>¬íÜg^ÄÆO}ÿúwcåo|#®ý§oÂ6¾ËoYÄ‹ïþtÜf¡{L2˜!ÞMUÆö<û$ÏKQ.ꃣÌ*ìh)ßóÊ?âœË³ŠWÒÞßÇööîD èœÃ½{pçÎ#¿½üò«ØÝkOä8“æÎ£·Ðj鬰IÐhîÁ‡€Þ¾‚ÖÛ1÷‡ž*W0Ày/üàoÅE<ì1äˆX/G̤R”™D-8Ê,ý ò®<5<ôjᜠèhóý¤ÄÐÞ?ˆSÊ™‹*nÛïHN£Ù†1} ޱ]`ë>üÖ^²ŽßÙÃâSåìª9ø·&Í€ÏÒÔ$)ʬ¡G™%òŠ{ ïÈá˜fP ôn«pÎM\àÀÖìS©¹=Àö‡)‹?úV4æÚhÿ¿?üõçñðý¿•|M\VÀ õÁñ¾oµqsD@¿<ª±¢Ì:D¥ÌyE>ä/ˆ$ÃRyâÁJ:‰VØßß–«¦ü*³NÑ܃ >8X^ÄÚÿñcØü³Âîÿò1øåëhÿö–ÿÂ;°ò7Þ·i`Ö Zý€ÔÁ¸êsXa9û¤jÉQf 8ʬ’8NJг,!¼÷ÆZ;V ¿îaïL zpp8°luuíöÅ ²ÖàšÆð™æúðÂïøúßÿ§°üÿ:zŸû z_^ÇÚ›žDñMoˆëûqÍ7ŒöÊ}Ì*²‰«Ž2ó¨ÀQf•œT¹¸qÎÁノ¿HÆúµÕe`uÚ¥PÎc€?ümÀ?ú9à»x¤? eîÜDqçfeå¼ý?þ&hcî™ê‡Cb;ÑçJÿ3ZŸó³jÅQf8Ê,‘Owå$ƒ‰Éž-:Ñ!sJU{ê+Ü¥å?ü3À¿úŸ÷~ðÇ~¸ñàp®œ…ïÎÁûºë‡Øÿè—ñðü>^ó7¿mxJ“ ņ%Cƒù‰bq“Ī>±ޔaÂ)/×8ûÌ׫ŒyuŒ2µßQe«\ž‰Ê±"ªãóQTÇq¶vÌQû©z¾ªÎØ9J2jßy¹Qõ» e–œ6B–yå㽇µV,8Gº[Åðè#§ÁØ d:RΗÅàoþKàû ðÿüS¸‡>è¢w¯‹ÞþUôö®¿½ƒÌ=ý<ñ±÷ ø–× ß_°RfáòU†D0äV ÚnT#Îy°ÆÃö•7jÃDÈIrjU5®V‚ËVu¾ùu’˜ZyÙ«ÈË]ո󱆕ý(òýÚǰϣÊ×%Ëá°rUÝCÞWîRPõÜ 7|½’ý¨ÀQf‘øàg3¥xÀDq3óóÃ!ž†ÅÅ+ËNçÆõU,«ãr=¸ùðŸü÷úÓZçO³¯úÀôh ¼÷V,–¢'·æððUUC iŒ³wÍ ì`ð6Éïg3´²_^ÎÇ©*seƒ›û.aðœ+ÝP€XÞ‰NǹˆJ:g"¦*®ç@'®âUÇ%˜ªݨŽdÕ5Î÷—”™–Çk˜=w²Þ0+—19–ÚÆ•Y„+Zž>͵z«j¬µh-L>ÀÝÕÅÖÀ²ÓÆÁ9«_ÊÅFœæûãtqþÆÆ/’Æ… PmE‘†»ªÖ³OzÔ#zøÃ,4ùoùþó=ù­â8É1ÂPõq̧c‹‚!V¯|ñz‰*= nÂÎyY",†øS%9Tßóaøìž'ÏCÅ~c™øœ*ž›ªc»×²}Lµƒêg†1¼ e–È{ É‹Í™Ãùoü<Æë¾ºzmb…€¥¥E…R•ÉM 7ü¬Sà?ZÈDa°aÊfá¿U½nŸ5~²_Ãÿ*ö7¬,•çKû®ÚªÖ CJ±|CÄN¥HÁXÑøW‰4 º!6™X©\Å [¤‡”³ªü•âpÄ6©9¬zx3)SÕp$]Ûòû3|,zŽ«î³§í’û¡G™5Ž°Ã€ƒüy7¯ª<«hµ&jÅY[]žØ¾A0ˆxAZù‡UâÐíT6ðyƒRѰË1’†¯bZz\NNÐòþ±µ§rJ{þ9=å²ðçÜz‘¼ÿ(­-ÑÒ;¤®² ûL|$y›ÜRÃûqܪóc®·Jʵ®¸f¹X€DvòubÙÈb˜üEvîtÌëÏ2 <—ôœ‰`Ueæ¨2…zz±ãŠCzŽGrëÖÚ©³‰ýX7ì7§ƒ³xepØK¹ÄŠ?<ë–öߨò“'âG LñÝ¢m+ÃLŒ$Ô‹ Ç䟇í{„ŸÐ@™ø\ò¡¶ð²¥$·²@äòç~@ñ°Ôø&á*†œS>,Uy=øØ¼ÏaëæÛòá!ñÃÛ%åή_nUb¤¡"'+ãÀþA÷n”E+_¿â>FŸK8ʬQ¥ôóPšÎó ëHŠ¢ÀkîÜ:•ÈY]]i½Ñ88ÊÉH†]½Ì Á,k¥|Ͼ£— Z7A ì0 Jvð¡ÃR8nX³Æ¹²­Xyã\”¾W”yà%¯:67øy¹yS>gÞ&DÑ:RuýòºˆÏ7|NW•‘ï¡ìÖ˜~˜k®×ª,Ôò[…(Š× Êz”Ý?Zœ–%ÿ\qÍsá¯ß°õ³óJ`yZåw8Ê,QÙ©|©å¥ @ÿûx£TN.r¬µX]]ÆŠÎpRÎBÛ„ –&üÍ{ô¹•ƒ‡râoíýƒg××7ßwpÐyÆ9·rn'¡(cb­Ýhµ>²¼¼ô³­…ù„ÅÑ:¤G™5ØA-7y&þ ÆßëõNì‡Vž|â¶·wðp}k¤Ð±Öbii+ËKêT¬œÁœPÙ&rgáöúÆÖû¶·wß·¼|·¹«Á(• ˆsnewwï{îÝ{ð=KK‹ï_[]þ  /ÔšV™5ªÆôey˜ÊÇ÷ÂIYZºŠ¥¥«h·÷qÐé Ó)sKYk1ßlbq±¥„ræë$Œé§ _„aú¤¸q¸a}}ë}{{í÷=þØm}f• M¿ãx­Ö^~ùÕ·Öl¬,_ûB; G™5*ýmP ›g´ðõÔ5y«µ€Vkòqre|¢OMô§@p&ÿö±‰³N¸n·ûÚõÍ÷=ùÄ7Jm(Š·oß4/Þ}åÇ—®^ýû†Ý&P©+Êc¨“19T(ìbÅ E¹’†3'X—[qD µ÷žÕØLJ)Š­ÖÂÊöÎîDËiJQ&ˆ¡Òxì\L¿—VœQ)Ê…¬”4$• SñL!Ù*¤,1ƒÎ[šÍ³II¢(gM³9gº‡Ý'e†–EÚ Œ (tTõ?lQ±FNÒ¤Œ*cþwÜó9ªŒ£Ê™7ªã¬;jßǺ&¾ ¾4î~ƹOöË×;îµ÷˜ãîwä=æiò§¡f×NåRúϵ¥éÊÑ/ýçß%S¦7Kzt{½Ín¯Ô•†mÀy·‚`À,08]PHz¾@``ú[5‘—Wm3lŸ•e ¦×ª¡ˆüûÀÔÇ14jØ>F•cÔtÌ|ý£ÊX)‰Cí›÷Ë߇]óªe| †{~? F\·1g¸œ£îe¹0à DZ²}Õ‚ã%Â:^‡¨”ÚãËiâÖÚªwÀ…¿¢¾*VŠ¢œî…-¬è3xð¡—ÐÃYä‚o”xv¼aeίù8µ^¼&U¢ƒg2Y†ü·¼fľ¸Üü|rZ†$ðVhŒÚp”@êŠä;;{Þû~.Âð‚zö´/s»»mt:p®¯¥Š¢Àü|­…yu\Vp_ÞÀW¿é—л¿€Ûúƒ°×®Àõ x8oà ЃAwý?¹_ÿ¾Oâmü:<õWŸ¨ÜdO²¼á®jXn`¹74hYƒWµQhhã:ªqјncøß«¶9r÷8BôTErÌãØ-@©ñÈrP€»aç ·2g‘$ók'GÿC°ËÃg¡nø!Z¯»‚¹ësøÌ~ýЫ£Ÿ#ùµrب¢!?Ü ÎC*矓óJí°jµE&ëmÇ6ÿ>ÌJÀŽ¥²—oˆ`á—?-Tšûd`›Šeb±êº°åƒ-3ùßaÇ«8¡×tȾrQQUÖ‘V·*kRÕ¹V »ªá+¹?áó0q9LTU½±(§çÐê•R{(Ä>wŠPZuòJ—‡¦Lõ+3çÖ×7±±¹=ÖúÛÛ»ØÞÞÅÚê2V5Ѭ û™çpã½(7n£ƒ¿÷º÷®|ëm,ü‘ëxá/~¿×Å[^ù|ñçûÏ·quu0"¶Í¾Ky“¡>ö7ˆ>8žÛþ=ôÚ§K¢©(Ó`a·›°E=±Ê’õ2nÃbÀдÕU8çp÷î=t:Ç.ëÃõMvqëÖõco«ÌÝO|Å{¿3.ÙÿÅßÅ‹ïþ7èb+ØýÀgðèŸûZüö ËM4V ðØù­-\}kEÊ›Pµ{ï8F¶IwSÙØ²û ǰÚäûÏÜŽ.Iãx” ©W¨Ø.Ln]Ï*Á ëVYÃX€I¶ßÄñ:;ï( 3!™[¿’òWÝ·*!2äº%BŒ–'×’¯IÕ¾òa0î•æâƒBgä3X!ZÕG©?¥%ÝgŒçz€;$ðÍq†¨^~ùÕ‰a{g†Åõë«'Þ‡RŠk{0+óÿ•u¼úî_Á­<‹¥ÿâ€Ãß^ÇçßökMÜø©¯<°‚+jr7eÝ/_UfýŸîõ¢ÿcž%5iœA¾Ùþ+—hT 7ø¹ÈËÖ«üΕ- †÷›Ÿ‡/§Ça Y*“dÿ£ó Ã,%UçJÖ‹,^*„b"ù~eç…DÕ?¾^ùoTVÞ'€A«Qü!ËŒô9¸Ç+ÿË÷H–Çí³c)ÊÌ:B¢jØù 3…ä=ïõX_?Úßf66·ÑnïŸz?J}i,îÁØàð_Dó͈âæžYÅ£ñqlüÜ qY?<ˆŸ‡ø ™ÄCÇ{oœs+›[;?²¿ðÎv{ÿÙIŸŒ¢L‚ùùæ§šssŸZ[[~QÏËòܺ¾[ [. ¥²wΩŽ2+ÄÀ~Aè8d"G:Î9q°÷F»îºÝîØ>7ãpïÕ‡xò‰;Ë××7ñp}sbÇ™$7®¯by¹bxD96Ö.ŒT¾;[˜Ë4߸€Ær)¨=ÐV_›Xïû‚-Ýn÷©—^zõâñÔÚê²f‘U.,g6·¶Ÿ¹{÷Þ;yäÆŸ˜Ÿo~êk$âf¨5 È·R”¼ÄÁAæ‡'–\û¦"Áбgœ!ªvû NŸÝníöþ@·vûô¢³bgwO΄(vàm@ñµ¡û±ÿ½O~·M<ü±O`ñû^·¹‚bxuíË!ª‚Í•w_zõÃKK‹O­©w»rÁ™ŸoâÖÍëh·÷_{÷¥{~ü±Ûo+ŠBl˜QäHEž £Å¡Á¢¾/ŒÔ‚£Ô,ß²!Ú*ÿ<úËm’Öa{gWÕ^RÍm˜½¾¥Î¾ýMXú‘oÆÖ_þy,|Ç7Ã>z [ÿä÷ÐXnãÆû¿!nsˆu4†¹÷šÒÇRÌ3fggï=­Ö¼Š¥V´Z X^^Z½ÿ`ãgÂ"ñ2Gxv¦ÌªË-¥Æ˜Á¯Ñ'·äˆ¸çaÛ£4¾sS8ã"[k”³eîµ7€Ýõø½õ7ÿ®þÇÿ>>þ»Øþ;ÿ󯿊Ç>þ.Ø'®Åu ´Ñ|Ã|õ}ùL@ÿËæÖö\_[9»³P”3bey /|ùî³Î¹kí)˜þ÷a*êÑZcÌѵ»¢ÔšuÎYÞZë¼÷Ö‡@€a¡6ª8<<› Ýîà~¯,.\ØWreùê´‹0?|ö7€oûž¸xî]ß•w}Gå&_{ ì¡xêÊð}¢œ&c :Ϩ‰P©#ÖZXkWœóËÖb#,æ©þQÑóÌ4<Þ{&®ÔžÌ‰Þ ç\2ÛÑ9g)zw˜l5|bŠàüä|orºÝnáxeùV–¯ØB©?øþ¿üè¹|÷‹Ã}›ºû^ùþÿ ·þìÐxj¸È”þm1®rW”‹Ì\Q Ûí>U/ËÔX™=¤–$vdóa¥^P´ïì/ÆërâdL¿ÙXsv“N4}Ã%åéwúoÿèp÷'Ð[x#üÂmô:-ô:WÐ;hÁ,ààã{8Ä,|×›±öÁg‡ïÏ—³i£GQ¦g‘uXÀ6:1‹læYdCLÉl*©à“xBaÝè\©B_™ |üŸÓèÈp”üßçè}8ÒÓ~nîlDˆÎÖ½äüÉ¿|矇ýÒç`_z pàp®\®WàÚâ웞„yÍѯË!ªÒç´´÷÷qppЬµ!‹ìZ :ô¥ â¾¼¯¾ý—Ð{8˜EÖà g bý7ûYdßúÁ¯Ãk‡d‘ ‹Ì=ü ä“YdRQꇯb¥å2‹•€2è¤^¯ò™9 ­Ö Ãèiãàh¬šš±¸ ¼ù›€7—‹löw\¼÷ÆZÛŸ&~šÞ«$Z¡( ¬­.ciiñ¤‡Qf ìüô¿@ci}ñè,²W^ßÏ"ûÙýžE6‰l‚˜EGbY€$Š«Ì(Q”zÓ7TJ$×\³°¾+gZÿý,--b}Âø¯´–vfÕÆæ¶ œKŒsΜØçà ƒ—_¹?–’ïv»¸÷ê<\ßÄkîÜÒ±VÐýÌïãÆ{¿åÈ,²_þáÏcÿK]¼åÅÑYd…¡¬äÅd ü·±Öê,*¥þÐ æ‡r¨¶rH–ãáÅÊò67·àÜd^˜¢(°´¤³’”É!Ïò‰”ÆÁAw_ºwìh–Ýn/|ù.nÝ\ÓúÒÓÏ"ÛȲÈ~õÝÿ½,‹ìu¼,²>³²;çLÖKeÇËÄ÷€×YTJíɲƒ÷E§{öÉòðâŒ+ÁZ‹ååk³â¬­žÍL©†úõ\J¤N7Æøc œn·{"qÃܰf³‰ùùæ‰÷¡ÔŸâÚl’EöŸâ‘Ÿz'–Þ+Yd7ðù·ý뱳ȆyÞÑÏ&Xp€¾É¾¿Né†ÃÉcÒ;(J-¡èÄAà€¡©âaµr=ÿã¾k«ËØo ½ºD™ËËKC;»§ƒ³¸88ì¥Ì>l‰LrQËwO'n€~4Ì—_¹Ç»­Þó—˜Á,²>Š˜{f%d‘}¾/ppDYÏNÄôlçæxñÇáô *p”™@8!HOÿJÏȆcˆ|E¹ÈxJÖÅÀ©º%GüS|]ZºŠ¥¥«èv»ØÙÝC·Û‹® ÖZÌ7›X\l©õ[9sxâHþC~äF“Ï íýƒZ kµ£?)ª²È¿øÏ±÷Ë¿ÃWz˜Ç×ãÆßù^˜ÇËqøÚ˜cuYƒdZ,WäÑG| dXJ¾«G™¸+û–E$øY.|’õN9—°( õ›Q¦N’ªaºÝÞ™$· õc",âððlŽw¬5:ókR Í"ûíX~×·WnÒùµQ âµC²È†={ïeÖ;TÊ4Yñ=Êõý®Úp” *EC&edïSQfOÉ6ñüN;sê8ܺyD® e8^ÙÃý>^ùþ_Å#æ hÔyÏÔ”9yÄt~fŠr† àG³ ã *YDPbÙ4:N«Ôr¤?^yyÂÓÿ––'º?å’ãKkLf•,#™…ßÇÊàºp^ÅT”³‚+÷Šßâgk­_4 ZzÔ–©Ô_Öï0~€§•奉¥k(Š×Tà(„†  ÐÏA±>” 8«¬:ê_©ÔŽØÍ‚†ìÅÇò:bññÞ›ÍÍmìíiÄv¥~v{h6‹hÅ/Ž3îj­ÅíGnàîK¯À¹Óµ·n®U:Ÿ6޵­Vu 8e¶ 1=dêkœ蜳ÖÚ^øëåo؈îÉS*¸¢L5^†¥XäËÌAY—|râÄ©^Q&Ç=;ö¦ùù&n\_ŽWž¸·n®Œ^¬qp”§„‹ Þ#=Ö8V*} œR+•¾¢Ôc¢pO†ª²÷BÄ¿8;HâM – Ô_þ_ðÌ’qYZºŠf³‰—_¹¬áª¢(Ž7ŠrRhÆH’²Aà-(gU´bjßU©91Cÿ{øÌÓÀ³XPe‡Zp”Á9gŽ5DÅÌÏ7ñäwðp}óH¿k-–——°²¼¤ÉÖ”3g˜¸¡J?úØÑ¾«R2yÂÏ<¯„~25¼ÿNè[ ÌÆ_ðœñ“°¶ºŒµÕe´Ûûhï$BÇZ‹Å+-ÌÏ7UØ(g7“E({§1>‚Tî2]œg“(³I×w°ÕÙšv1ΔgaLõ¤ èçs6{G¢oŽûSfyÞ%Ðß©êVkA‡ž”©Ãü€¤bÏúÅÆq˜V«ö™cûpŸÝø,îÜŸvQΜožÿÃðx-/Š)Ä—åp•ü¦J_™ÊiâÁR™% ªøAÌPp¿h®Þ{E5c¼²ÿ>õð·qèNÖ¢6 Šx ä¡f­¯Öe0¶œ1¨&Ie¦ Ÿƒ(dh¬üÆâ(³Œ+3B»·wùÄM@üÊäùfGb–$­‰ˆ|m ”Y@žquŒQf Qî1“8Ðw¨ÌfX%9¨Hä(3Âÿ·õ…K)nHÌxzÎM©÷ûË$?eW‘¯Ìò¼c`uxJ™!’” ›hÝ™fÑexŸD2æYTñù§iäqö”sꃣÌÆ™5ë­„­Ÿv¡ê@»çññ_Þ›vI”*ĉFLô,Z¤2af•ÄÞ¬ïgRV”šãóˆÝ,n’88Î9;hÕѦ@©7Á‚Ów2Ö<<Ççó[ÏíL»J…œg¢u†{²°Ì´¬o‚2È;ÀKù-øž%ÓÉYäkgW©;!’±ñÞ T'gSFóÜŽŠœ‹†±‰‰=™=ŽZqÀ ‰“ ŠRgò`–,nÈŠiòlâ¥%Gí˜J½ñ®Œ¦‘ŒOÁs;Ÿ½´á6.6Tq[”¹xòg1çÔ ª(„¢¸ÊsÍ¡¼8Ø“s±ObªS©;¦ì°Fs¥r2^l«È¹Hé=¦m@߉Òðo(-<éÌE©3ÓlÍ!«Måê| Ìäd”›¼~÷¼>9$Uù—ç<öÚmìïÆ84µƒaµàœ#|fÓãß]Óë}®Ðcп c¬ ‰IRB¨ó2 P¿ä†f ’ã}²YüMuþ¥ä°ÛC»}€v{¿vÖšQ€:Xž';Ïí xxôÍìä@ýœs2u¼ô7ÍH)J­)#'Vš¶ÁIòMË=‰| ‚©\":Cìì¶ká[36>þo4ÐßxnÇáÖ¼ÆÇ™42KŠâÜxªÜ½Ì*jµT‰£ÔžA˜¥)áhÆÑGM¿$ßÔ!ªËÁL ›€±eX›™é•sâ3›zÍ'޵³$ÝŒ‚†f$•<­«ƒTJí *†ƒXFkMf±I¦“C²O¥ÔÊyÑéâáú®oͤ¸âÌY}@«ösg»«CUgˆMçiãŒPé«y^©?eKYÂiJ’ —R÷§¡BTâÌ"³l±F°Ü[1_*çÌWvö‡g~WŽOœ!E±?bäV±êðgžUf‰0L…»øãç\¦„“Ó±X5öug ç<6·vgÚb3@P3ÆouxjzȬ*eòÐtÙXá#­½}ˆ|œ„¬W”:ÃÕ¹sŽÅ¼Àÿh;qLÖúhpÎcgw¯Þ_G»½?íâœ/b‹ô¾?M|º¥¹Ü<ìxlt VšÓ.É Ð¯µ •÷ž“ FÁÖZ#Á΢¯‚ÖíÊ ÃPb•ŸÅ’u£àñÞ[ïÕ„Sw:Clní ×sG¯<‹P=®~€ßU+Îd(*̨êõz1s2-5qº¸lªe&q–`3q®÷ä§Ãb‡‡·”úáœÇúÆ6®o]^qôZ%™²>ÐÓ§ÝóxngÚ¥˜-Øj„ ÷^¥¢·P›¼2ƒø~Öðdæ sÎH7Fƒ‡«Tåהݽ6^½¿ŽƒƒÎ´‹r!ˆáAtˆêbð•]‡î%Ý“€Mòìh)?;çäy7|È lòž¬¢Ô™ðÌ;„)âïÆñUnåŠýÚÑëõðp} ÛÛ{Z‡ á2xïuˆê¢ÐñÀ {Ó.E½a±.³DÄ<¦Šx“ú#¤©Tê+uÇÇ÷@†f“Ùƒ"j(ÐG4Ö7 F´÷pÿÁæå™5.¥“±QsP+ÎdpÎY„Çœ-8œ„Sœ0'cE©;1ÄM?e ÐÏ&Žà›ÆQ¼óA?’±rÑéOýÞÆææŽZmŽÀæ1”é¡Vœ‰àC…„^l¨¼ã2 ÈAÑô%PêO0™pO¢ËpUäÕ{oœZq.4‡Ý.<Ü@»­¾6CÉâàUµâœ2µ‹s±Xk”‘x™UÖ –mÎ’Í­mt:‡Ó.Æ¥À{¯ÓÄë‚ý ?ÏVã½—ƒ@jÂ!ìÏ·¨ŠrÄø7€å™‚ø2‡>‡÷@_ƒ³bgwO§‚Ÿ>¢Ò^ìÅçÞö¬Ž$Ĺ‘(–äTÙWóeІ˜Â!óÏQ”ZãQ:Óg³¦Œ÷ÞZkùªyŽvvÏŽ]P|^E½)´÷ZÚ=vÏ Õ˜vI.0¤R¨ñ@œs±G›ýÏÿí…Gaç§Pve¢|÷ã|ÚE8wæ÷–`K€êœîA†©*ÿ h器9GäÙ¶Öú"ôx§]&e Ö;@«5íR\\rÓ»Lã0nÅ‚ÆÐzçÑš_˜Bé•I²6}ÚE8wîu$³Éç è |3$î !Õ8“¤×ëakkwÚŸtˆ%ßútj­rÙVß´‘äÓÄ(^¢Ð¡¿qu6Vf†4æ€Ò°)ÃSláÉž}U7¤×ëááú–† 8oÉÇÆJÆÈ;AAÿbÄo~”ɰ¾±^OGG·^aCW½ 5`³«ñpŽ‚rO9‰ÒžïÜá’c‚x¨ÐWf‚$˜%@™ÂÙšI÷©°ÑxÞagwOcÝL±LJª}¨k‚ÆÃA¿r6R‰#<×,jr§â0uÖBße á×(ÞIØÄð 4lbB%èPÊdh·÷Õ©xŠð3ß÷>Ó»6l©Àމ>±Ò¦Y‚ÞZÛ¥hàIWP Ž2°O ¶ÖÆa[Z‡pcG×è{pz½¶¶÷¦]ŒK YêQä=Zåb£ŽÆÃ Êøaq™U9§Ê_AQêKt¤÷º]õ¸à±àè]3:*G+!KdLÓ ÎÅ25!ïN^É«š2”žÿ²°ÏœìEÜh;0&êX|Á U¹÷ÞXv@S”š#þdzlLºümdЬ£á+¯âF™!â¤NGÂ3å}ºŸbBiCpšŽáâC® ¾ \© =§uÑ؂óH¢•&(š¸ÄqÎéüe0q¶ @ÖËþ!Ù¦µÖ÷z=K–d<‚^¯‡Ý]ysÑaa_ ßÃÕÖ²FèÕXH*ÏÓbóY%$€Fæ¢ÒHÆãÓhX<þø íw–7›ðÏõ—%ŽÅñ3O.)ßm †±³»¯Æ€š ¢]fQM»<Šrz ¢¯åáá(ÅÆ{oBVeÊ¿jõ¯F2>7Úû¸zõÊ´‹qé G8I&K‘¼ 9'y©Ô‚3œ^¯§‹ë‚/5M‘OT”ÚBÎe¡•×4 ò]‚üc¼v^•YAÞJÕÀþ6”9ªô-¨bG‡¦êCx‚1ýd›P»¤2#µî8÷”äâ ¿‹‡ AF転ԞðÌË; =X‰îí|™€(£§{5áä¨õ¦žc`)虢ÔC³–ž‚¿µÖI¥O½Û˜i€F2ž͹94›š vÊpÎ5Jû~N<|;Í2ÖµÞԌҒµà(³ƒ/ÃÓ‡¿–I7ÇB#+u@D;Ðþ%¸¥Xn²¼T±#PNצ€QëM ¡GØ‚â&(õ ÕÐJ¨Š¼rçâÌÇKØzúܯôõ²*5‡"aø‰ùy7žs·Å¿S(óEF­7õD|Ï qÆœvå´p¼lÖ§nˆ»ü­<ú(5'8Ò°Užƒý9>2|›äeóZ­y\¹Ò:÷²_Dæ5°_8ètD+~ßÉ8›i¢\pšz·†#µ‚¦¾Ê°|Œ1ÆYkÁbG»¯JÝñˆõ}ÒÄï&ßF,ýß<šÍæ…Θ~žèu¨ÛÛ»Øk·àŽYL»@ÊñÑøiáá(±ÇDGbñ¹¿Æê›êÕ‚£Ôƒ2Â휓À¾*t(é&tš¸2ˆ¨×¦²†Ìi4”P™ˆ¹•Þ+ÒÄšò½t°ÔëªÔžÄ× CQÁbÉÖ̈ áö­˜Fe¾R{įR¦ N»<Ê1(¬¶ÄCà¡)€’nÊL’<é&Òô%PjMðá¨Ý¢?‚¡¡«Ä¹8‰‡£î JÍ¡ºÜ[õ¿© i—àÂRšÚ±Þx„ÀÙ³žø#xïÍü|óSšŽA©)Î!šÍ¹O‡¯’t3:Øc\lé³ÈÆe§@ý)³A_Ы“qýh©À†O&£Ø„¨ìeÝÙØðWZ ÿçææ6(º±¢Ô‚íí]Àûæçç?ŠL r¼ŒÃ×4mC/J›¥Þ°ÿ™Í’*5àŠ œ¡ð´p è~Š•=‚º'¿À/,Ìdaaþîß_ŸBÉådt»]<\ßô7o®ý ‡IȆ^Ù’SõNx™E¥(³€1Æ«“q Ñ8C1èWÔ@ÿCâtð’²!«ü­1Æ__[þÏœs¿ò—ïbw¯­ÖåÂÒív±¾¾‰»/Ý[_[½öC ó ?„a(ò’ AÈ”‘‹ûhGW™¨cÛŸ&®ùHêÅ’¦ùGjíÛäCK‰wãœkPE/ëÂ{ï Ñh¬ßºuýOloïþÀÆúÖŸºwxøçÜÊtNGQ†SÅóWZ ÿôö#7~¶(ŠçX—‹#±kûsI@ãO<£*ñÃÑ!*¥æpªƒS3– ­€Æ :Mf¾8$þF3® ú \½zå––ÿ>úÇ“‹Î³Pä·*Ÿ†,ÏøA Ü@î=ó~†­/ëPÇD´‘ëçÛRºŠ¡3)9*î¨rå˲ïC“[F•eØ9ñ2.ç¸ûË®ÉXÛUK·‚ì 쟷¡kË3›òa$ðrZ¿StnŸï›‡£xø6{^Ê`€:D¥Ô_Ö+P*åâ£3¨F>Å5µ<ô,|¤'›ï!7×sŠPƒ`­­LA ¦LU϶²)¼IÇ7NÃÄŸ³”77¦ºß ;íc K^Æ\¤I9Â5sf°‘!yÚwò=»¶Uç‡\èØq]¾FU²BLTYµY°˜ˆÛ³€àõ@iÐÙ\ç&‚&»®rÌ(` Eך·§ëÂ÷Å¡ô?KÎUfUr2ÞÜÚÁýWý]¹<<þø£h6/èP‚)ß‹"TÜS.‘2.W5ÊßP2óº´^>o´¤1D9ÃD*þ¸‰‰ØP‡ßb¬"€äsþ{8žåÞ}fMŠÇâeFÃ…ý–—©QQÒ/ª—LéI#>ÄÚá¹ 2Œ1B$â„Ë ÇDð…å²ß(Â_Ïû¢r%åÈ“ŸÇ~‰çN×@¸ÐýHÊ‘? r ø3—!|Ùoìë5°¬Éú|üü¾q蕟  ou¬:CûåÙUdÑnÁÙÜÜÆÎn{èïÊåagwkÍåic(òLιÊü$ÊÅdY‡â¼‹C)ÜpqC¬ ÑQA‡ßbO\þæÃ Ô8 4ꙀfIáÞuü™­Üû—Œ*i›@C @™‚"·bÐ9Xè\£5*;žôðË©—Ù5!q÷OC&,úr+F2£'tÍâ¹óuÖøSye›X–ª{CCrO 3d›\œÅ{=FÄÿ&Ë2›8{vYÐòy$Ö ºžüÉq)o3«Ž2Kˆ“±€w?®“ª.:+s:LUÅ~0&6šÖ‹ ²!:`á"D&|èÄ߃ÀˆÛ³8¡}I‘cÃí³-\þ¬ÁåuFš]¹¼òˆ"¨ÊjÂÂÐp(ɪFH­^lщÇá}g‚/žkøÅMžO,qαĿåÇB9œÅÖ >¾÷«ªl1 °dR~¿ªîEþYž9Ñ™p”kWiªÝׇÄ8BÔî(dhl)ÃûIQ.>ò¾ò`À7¬N·PŠrRîZŸÔúU 3È7—!ë9³%€¾FÃép U%ÇfëD~l}^òÆ‹ak‹XaD¬Éþ‘5Ä,~†Ë¬±¬V|(-^¸ LV¶d´”-®Ç×%”cUíŸ@¥5EŽIËó‹9P.. ­.÷RDë€ÅmH9Yä |ÏLvÝÄg&ñÅÉîGbybÑCâÞTˆ5>þˆ' h-,`[#ÖP. kquñÊ´‹1©“ VñŠRs WÞ\Á'+‘EÄû~,(ªð«D’ g%éõWY1ÂÎÙ‚c¸Q«²¤pYyŸÒÐfïjâÃÂëäWUÃÎ(tøØ,€x_"Þª¬$ÈxŸ(E .ûÀ0ÿFåªÚ&ià«®oÏ×;Ϫ-÷˜?,¸Œ,vùøùyÑ1ùx•V-ZŸ-‚ñþÑ*>?^y:©S8ŸhUËŸ©øÜŒðÁ¹ys7oj/X¹øDÈiDQ&ˆ¯hh’ˆÅÜÀH#& ·,«Ø7.qýüàBÊý—­J ³x ‹P¹¼÷q&“7}?"<üâ+öÍ ¡¡õ“icèMØGV¶äZeÇIΟ®W¼£ê>äåbÑÃåD°´äçÅâMŽŸ_£ü¯ìWŠ)Û‹•‰§ýò°h~/’r²`ãkš_C¾Ç².ýŽü3? ÙuŒ÷!VKñ¥}]¥æ„·Ã˜0M\Qf‡ ¼O}m¸ñOœsɪÀþ7yO[„¥Tù‘€"SN½Vƒ K6‹'ì.™.ÎÎÜã7Ùç(„¨‘R?nÐcCWÑÐ'–væ²Ëu–ë)Ö€Škw†Íø8†®…’8Eɰ Ü3ÙT–›ÒŠf¨l|O¢¸d1’Ý; ¾‘òÐõâg‰õ'Û.®ŸÝ нÊ-8ÉòŒªû#×5^{¹orݳëÄ×2br€R„·à(J- WHŽ2;øÄßDÄ 0(jØÒER¸ ʆ<éEËðÄ!m¬+qb•¸j¸‚{õrl7å™–û/ÇÚúþ7ñœrK@Ü8Xœª©,Ò`²h©²qÄ ¤¤1gÀ÷@îƒï&Ö– !’œ‹®Qn%KŽK×&Z­|ŸKŸ‡Üú}à¹ÈöUiQ“r“"Dóó2ÖZ看áøúðu£kß:¿Diz¾(^M8Jý‰õô´ ¢(“$ôØ9ô+I#eh]–Y“ö„†uÒäþATTYåY6òáÊ’ßâPT&nä Égip¥!ä†^~“‘Ž —Pù[Fø<äüó•üqvæk”—)ü–‹‹†”%>yÃNëË~’g€Ê× ÷':A#ÇëFÛ'׆ö?QvÉe¦û‘œ Ó‹ûÏEzÕ¶|2áÊ–)¾g&ìÔÀ¨ G™ ¼÷š‹J™)<5ý©Î 5ˆ<]<öxÃï¹°1&ÎbÉýIxhÀs”•/6N9¡!"½ –¶ %þ¹ˆË•7¢,–¨Óž1j@År”ûÕDáÀ‚¥XœÈBdø¸t ’!¨ìÞÀã$z47èÙç(ÃõŠ¿g–¯$z/H“T€¹ï _#Ãç%ë7 xïc¾3ºGq;a|ÏYž²{– _qYd¿ef‹c²>mãólËÅGÇBÓHÆÇãBGûe¹fQèä/\coŒ‰3aåM*zXìÄŠüqŒ%¹”ÖbÀJ¶!˜ ObàâTe*®ãȆ@#Í­mܼ±6íb\Z»hLåŠRg|9D%Ã"±!C%±!ÏzÕɰC¾ ¬µ½ð76:á…Jü'ĺÀ4”%û`EbÅeåH†–¬µQô„}8j“íP6Ò,”âñ‘6؆—É6ô™¯)7þÉÐ Ÿ7{¼–ü½×ëE‘—_oºŸ@Ù˜ûPvGÂÂYk£? Ê6›¯w´°‰`"q0`åÊDM>¤”X‡²kÏ¢5fÏß»äºXk“l²½Ü7kÉõÈÄÔ€C4RFѦ.8£×ÓHÓÀØr(Ùf•‡¢Ôj@Œ÷1h\ôË‘8<ó¶ÜlÐÇ…"åf¥•Á9·úò+÷ÿwïý³k«Ë˜Ÿo²“®¢\ºÝîSíöþ¼x÷•÷,//ý•åkW–Š÷Ü!|À™;üÖt‰2Ho«vE©#2ÌJ~ËÅ ›çÅ騼zýgŠ¢ñìkî<‚VkAÅra)ŠKKWñš;·ÌææöÏìï<›uXeÔbТZ§FÔ88Ê qdíÝlΡ9§sùàÚµÅia4¥·dv > Ñ™˜>÷2MÓn<»¿ðž[7¯Ÿc¡åtE[7×Ìýë?œ¡¤¾XäX.Fžè|ÒÂct•2 Hg·`§Èa¼éM¯;¯r)ʉñH3v#›YBõIŒ ÿBlmïü©µÕkç_pE9%­Öœóo98è¼e~¾ùi q¶Ìc/Ehv€ÑnÆŠrñ¡Ù•qˆJQf‚\ÜÐŒ%žŠíž}ºêõºO…¦gSêI«5ÃÃ÷©õ}K}’&Cfi¡ÎH†ª(uÄ tO°S8¥–ˆy]¦â†ÅUSjM˜ÞÌô^ý+•Y¦“=„\k¾Ì½&¾9–¦µ{è9X¢Ô“žëÁ³ ôߨ‹vÁå´°›)9vHæw#•½Ñ÷@™ħ&ˆ‰íÄ-%Ø¢äØG¦Ùlþn§Ó9÷r+Ê$èt}s¾ù)‰s5–Ž¢Ô‰s¤Q^ixj À¬7*þǸt»]ìì¶ÑíváB/¸( ´Zóh-,œzÿÊìâ^ØÂú‡>ƒz =Ìc‡èÀ  ƒCX44±ðô"Þðþ×áÖ÷Þ¬Þ=Ï$r’42$^ Gëô–®^ù…»/Ýû±n·»¢ÃµJèv»ØÞÞÅÊòµ_“Îm1ޏÑHÆãS‡h¿³Š I ÎÏÃ)¢¯ŽL¡•Êÿ$ÇÝÝmcss íýƒÊß××k-[X[]†6 ã¾¼¿é—л¿€Ûúƒ°×®Àõ x8cà<ЃAgãŸØÆ¯ß'ñ¶ÿæëðÔ>Q¹?y¶YÈËo!³¨ • ))^[Zü¯^~ùþOß¾}CŸU¥8çðòË÷ýÊÊÒOEãy ÿiÁÑHÆÇãÂGûa¼ +ÎiVI\vºÝ.îÝ{0TØ0Î9loï¢Ý>ÀÚê2––.ø”{å|ðÀÎOÿ ØÅ}¼æó?»<ÜÒ·ýá‡X|íÌ]ŸÃgþó/à±?sÅê ‘áYÉ›Å)*ÈZ§‡›2…÷Þ›¥¥«?Ûë¹åïÞûñµÕe,.¶4”r!qÎak{››Û~iéÊûW–¯ýW@ùæHy®‘Œ•ÚàcÞ©ª¤‡Þ{o9û7UìÇ>T·ÛÅ‹wï¡Ûí{»{¯>@·ÛÅêêò±«ÌÝÏü>n¼÷[qã6:ØþûÏ¡÷ªÃ•o½…?r_þáÏcÿK]¼åÅoÁþ÷°ÿ|WW—ö'~5äLŸd}§iây4ã¸ýÊʵŸ\X˜ÿèööî_ºÿ`ýš®D9'Žåi­ÝXX˜ÿèÍ«?Ûj-üZÜI°\8AÏUQ.(â{ _dϨ’Ï–>ë¥:©¸a®oÂZ‹ååÁJ¹Lxt?ñ9ïýθdÿ/¾ûß ‹,c÷¿‹GÿÜÓxã¯>ƒÆr•?™s½ç…û†}Ôò\„1kúÂÂüGæ?†®òa\é4Ä[BeÝ<סÛ9ûiûJ«Ÿ_þ~˾òßòm¨|•ÛÒzìÃ4p̪²ð9ʲq¶—ë\Uþ|?UǪچÏsÄqÙ/+ÉdÀ½üz˜f÷‡²C9°ÍQסâ˜+ËsHXöµØöH ŽD2`qñÊ´‹ ”¢†ƒúÙl)új†ñvþp}óTâ†÷³¸ØR?‡KNq­ ³2ð_YÇ«ïþÜú©g±ôÞw{ŸÛGP¬5qã§¾ðÀ ®ÀV<°¦´TºPá{zþÃ*åð¬|¥r⤿rÚh±³r ½À ‹4>ònqc$ëɱùøa™dk‡†ÕØŸŽg‹IcêEPeÇbÑ”œ7IJ/ y=‘û3Éwt-xæÏTãrÉ5Ø7ÈÚÆå!1”, N>L&Xb½È÷SþÑÉénòk8Pw†kîè¼£‘óQÆåD,Ì+^¼F™P2¼ìJ>~ˆ¢b4’±R¨Œ•a¯×‹•ž ³¨ÂêòÂÊt;Ž-³½¿íí݉”×9‡{÷Túl½üò«ØÝkOä8“æÎ£·Ðj鬰IѸ²c{€ÃO|Í7#Š˜{fþðØø¹ú@?4Ï7yC€¬ +JƒÁ‚‡\n”¼í;ó{ZÜ𒀩jãw:f"Фl¡áÌEh}E6[æM/³¹a§cÅ}J£Në&V<ÜèÊúUÖ‰P6S±<‹uþ]®on93Æx²â$z•Å#oôYòõ—ó”ýæÛ†ßx¿R>'÷™Å/¯Ç×0Û7?§Ig3߇\ ç×ç|îÛ%b¸ÈM^ŠRg²J••}Þªœqu“7B{ÿι'΋*n€~™UàLŽÆ•ݘãÒïlaîN¶‚šo˜‡]*Ù=ÐòÄf¢&ï5Ǻ^üÏDä°32²œµ¤g/Ë¥1Ëzàaó´1«²ŠÄ¨ŽM•oïäØÔÐ%le †ÒäÇ *hÀÃËYlˆx ëäóeܨË9²ÌÇ÷äˆë’X2X…ú%‘RçÐ}5a–]¾Ïsá:4{.rëøÀ5ãß2«MÜ/ÒúX®M"$³ãÉ~â³à½‡Uq£Ì áeã—„{†¾©„Ã? GYfBMš­3اRŠ…xÛòœûÚÇÐýØÑûäÊ<ððÇ>«ßv5.ZÄ\¥ÁÑ—>ölþC·ä×PeuH{©Å' Ñš W•h¡ßÀ߇]'0ñ8<¡€ÞçÁëBþAô½ò©<ñ\XÈåM"¸á•†;·ÖkŒË—e×$ñ‹É†bÑyr}d‰Ëxßó2ɾ+®IöuКfŒA£Ñp&»Ç,ÌÂ_/ëòýãûžŸX6rßUe—²Ù…Q”Z“W>áÁèH…E=’#)œQ„×ýý}@/-æ&ÌÞ&À¾ýMXú‘oÆÖ_þy,|û7ÁÞyÛÿä÷ÐXnãÆû¿!nsˆ‡Ã|p’¯¡»œX+ÂóoL6„"½} ú_$Cl}YJeø€ÿæ½mêõþnJå2Јs¯]NQÖ©rDf+C¹ ãÉ„”ø…°ðË;GyC+çŠÌ—„:Lr¬a^7¹IÙð””ËR\/±~ðùÒu©jèî}N,!$Æòë&û¬:Žœ ªöÅç 8 óõH®%‹]¾V,Ôóer^×E¦Ð¥ÖÈ Ì&UùXz4–-9GÑ=ìI™øWW—Ñn_ç¼±ÖàšÆð™(s¯½ìnÆï­¿ùPüâ?ÇÞ/ÿ_ù4šïøz\ÿ;ß óx™éÞ¢ù7Îì+˜úŸKá[rx¸*Â‰ë ™ÀH†L²§ªq «¥3]»—¥ªcË~«Ö«:&­Ïe°!• ¼}p‡ˆÑD$p§Š¬±ÑA¯òºJXtÑuŒû¶mÕ9ä׈Ï??û±ˆ8ê8U׃õª¨LäȾ’uÈÂU9ìÅE’}²€,äÀC6R”ú`Ê—Mza,r¢¥å Ð zì˜k«ËÀê´K¡œ9ÀãŸýuàÛþx\<÷®oÇò»¾½r“ί½ˆ{(^[=cSžgyÞ3«B¬ïE±`"ôcƒÅïÊ÷+±j°°!‹D¥ÏÛÆ0i”yûüøÜkYä‰8ã†wX'?kTÄ ¯Ã"&=l)lr X…€‰¿åV nøéšúªs–k5̪!ßÅw¨ÂR$A¶Ðäâ¹5);N¼Þ,‚e9‹ìVU“ѽßÙxصÏF¹9•7ZQ.:=ç`Ý €s° S%f{„¡ªs,nBC£Ä^b ðýø¿?üò‡€Ýí‘kw?ö%¼òýÿ·þìëÑxòêà ålãC’þâØ0pz†hÉ¡^x(Té³&ù½âÆ+ìßdeytpk†t>ø$>Äê‘tR€røEÊÁ >¯—up’òrÌ>WY?”?þ£òÆë ësyùºÐµõT–DpïIÜN,ÊUb„—±õ9+_W9ßǼ,,â‹›Ü;.Ÿ;w$³có÷ø<Ðùʱ|¶oŽñºÉñ¸n΄Ô0%Õe$ã……ùtÞ©³#”ºÑívÑét0?ßütV$½…¼òµÖ¢×ëÅJð(;fQ4ΤüƪõRóô;€?ý·€ô¸¿ûè-¼~á6zEô: è´àpðñ]b ßõ4Ö>øìÐÝI#!9É0R…•€}JbãIÛ°åsÀŠöɾIÇ"ÛG2$Á=s¡jÚ9?kd“s¢ßHø°òCØ—‹Ë[œ²ß*ËRpƒ—3r.|<>Æã¢ò>åø¹%(;Ì0#^Ïg×2íýÑY¾|Ȭlå¡ã³ècÂæù÷ÄÊ”ƒ<‡É}”uÄÉ óÍ®¯oªÀQjÇöö.®.^ù\‘Ie+¦`é=PÅœôB¼÷GQÍÏ7ϤüUÁ!OçÆõU’\'þä_¾óÏÃ>ÿ9Ø»/®\·¿½×—`ßô$Ìk®µ·¡³‘œs6Ä.‘†Ó°¦#Êš´Aæ¡)î4ôC$g±Q€Á`sÔ0çC2ñ÷¼ìò,4üÎæqlÿ9½ÿq8e&o¼Ä].ò5 f(Ö‰Û-8$ª ·/Ÿ {Åë'âŒ×çœãÁ ´r8k-O÷g)_k¾Žr¾,vXÈ¡½^Ž#åÏOò ðù†T]ëx]Y|Òµ‘‚²LÖÍ…'ŸK´à,//ýì‹wïý©õõͧ4GŽRÚûûØÚÚyþÎ[ï§>Ys„ïlìÈYTÖZ´ÐÞߟè9\]l ,;mœ³šñ¥œ!‹ËÀÓß<].²Ùß1ภ¸ð¬'³£D§P£Qî$s2 ±š¢CÔ: X%Xp lÐy/‰ˆásâm6ÈÆZëhÖVÕû…•!Zzøº„óKC2e>Q™˜‰CGAø±‰åª¸¾ž¯ßqšqæýFµE¢)h‰%,»¶±ò&Q£à4Æ$AI'B$Ûw Þ˜‰®DÜг*Ö™(ŒÈ·,·ðÉñ¢0³ôðmïÕ¯Äe’´÷÷ñàÁ:^½÷ðK÷ ‘m¢'ë­'bHÞ)“ï§"µ‚1iz”ø¾e½n)GUã­4ál•ˆVŒ¼A–í9Ö›ßj2ÆÀ9‡F£áœsÖãÂ0œåëÈ¢ŠÊO×EI“rñv²?9^.e¥ó7¼ŒDˆšÜr”\O>ž¯–¬LÁ¢//Gþ›l㳡 :Å¢Eb…puYÛ9gA–™ü\ä9àíNR8c ––®þÂÕ«‹¿À&8XM~‚ü{î|ÄvUÃ’78Uû=ê·aV¶¥E'ip«„‚ˆÉö)˹ÁÓ9à^l¥Ž­Ê² ]Å5¯käýϦÇrHýÇå çÑÃqÎeÓ s‰Å†Öák—·\Þ8Æ¿I#Îu“î§ÍóAq=› ùž '~Œ16»GÞ‡N`¸Ÿqz;ûüÐs þNÉ—õèùÌõìŸãñ„ßlvªüxmcÊ&.'É 7&YÓx©qŒ*JÖ焟²›˜÷&’†Àüaã“Ìç‹MÇ‹Ž\TyÙ²2ɸ`ò2U5¼²j@“ŽËÎ×’•_ë||ÌŠ{Á>r– ³ªûWÁ2aù±@…ûœD;eÝPQÎDÀòs!ÛÐ3ËL÷Xž-±¨Éµôù6R§Óó  ôÇP®²ó){±Ê.7%ׂœôŸ„îN¶ã›Îëó_Õ8óïÙòD, - §JpùäØ,Jh¿ò"ƒÿæ×†Éû”2Ñu‚1etÌ|»¼¬UǤJ¡òxÙuˆÓíÀ5§ûfh_‰0äϲ~EFÜ\r²ª_>¾×ùõ Ѐé´\=¼(ÇÐ9'9ÖZ¬®.cEg8)gOß~·Y „Jp gÖƒ1Æïï¼óáúæû:Ï8çVÎó4e¬µ­ÖÂG–¯]ýÙVká#ÈÚ¢ª!«Pÿ¹5A¬ÜÐȬ=yƒJÇa³Yåq¸·@¯jd“sÈ·‘ýUˆSnRŽÅf±Jélå\è¼(}`к’]¿XéŒZÄAž&ž]ßD0ª¾œ³\Ø!÷2†dÌ7¿Ž¼_ÜxÞEQàÉ'î`{{×·F k-––±²¼¤NÅÊYb²ÏRJLþÍgëÇï×7|{{÷}ËËWqû‘RE¹8çVvw÷¾çÞ«¿giiñýk«Ë?Òzè‹ uïÙ$B&vĒÿË~ ‘5ŒÇÉ×õëÆŒ·Éœ”ò±O^ž˜Äx²ÿ*ñÅ"-%rœüx@j¹ ë&b*kœÑ&c¹|ýxˆGö_µ­œƒ‡ïUØÞ±`’}Ò°Zr¯*Ä…Üëx i˜)^v0ôÞsÆØJ는1fÉsÁe”u9Sqyè+ ï÷!âeųx,––®bié*Úí}t:ètÊÜRÖZÌ7›X\li#¡œüü;°ÖÆ)Ýa˜(nBÿ±Êõ­÷íí¶ß÷øc·õ™U.4ýŽãU´Z xùåW¼aíÆòòÒφŸËHÆ\Éç}.^X|ðrÙÒ?‚ª²Fð:>*qò;‹1>Y^Îzn¥]çVŒ¬AM„M~^rq}Ö2V\Ã|%·:ðµ°`qYXŒÑz|-ÖuŒ!×%V~r=ØÇˆ÷ƒÅ ‹›!þ=Iy3Ñ…’lÔb8tè¯1ÈzÊ(âLœèX V%g>­Ö4P¦2]Êj9¼£Ö÷gSåuá@GºÝÞk××7ß÷äwTÜ(µ¡( ܾ}Ó¼x÷•¿zõÊ/4 ï=’¼$½÷JÑà #ÏÙk—í†ô&â:³b#F¿ÇõÈ*ËÊV.£Xò²Ë6ÖZGeIÎ'_Wö—‹¥ª^¾>Rߣ$ìç0«PÕ5ÊG×Ìe÷&/”·ÖrlÞvà¼ùع°ÍÅ ý–”Sî_vo®È˜ßOÞ2Sº0Þ‘Ðìžz”fyއ̲ŠÇµÖ:M9«ÔŸÒ6¼#.Ôwü^ˆà1¾t5ÐÞßVc3)u¤( ´Z +ÛÛ»ï‘6§à†UÞñ¨^wør¶žÈïCœs£ŸÉ(+B(Ó€³sUÏEø~då‘^:Ÿ«ìC¬â{ b,‡4ª²\'9‡\43m5±´ Xä¯I#<Æ}ˆPÈΙ-A|þqŸtÏâiÈvÃzf,,øšå×#Ûo!‰‘8´•Ykráij¡xŸÉú¹À¡û\.2Y|òߥž$õžñŸ²L–ê)®SppÐùúfólR’(ÊYÓlΙÃÃî“ò|@ÒàÃ÷‰ 9‹i<ø;ÍJÒ³|ʆ5Ü!íaÇžÇ0k7’žü4dûÌ"ÀûÞá}ÆÂHÕ…”¡>OÞo©´¾ÐúQ`åeF&ø:Êg²fU F1PX4(Dy]T\>¤¢#Þ'ºþ>6Ùõàõز7 €éº'Ÿóó–{ÃÏ$ Ää¾äÏsX“ÒuV”zãc¸ ƒþôly_¬÷¾Gß“ºIÞ×s+¦M)õ¤a8ôÝåhÁ¡ß¸×^Ù¨K£˜Y3”¹IÄPR ÄÞÒ†RÌl!I†%$°½€Òx.K¶ÿ¸X6²`I¹'9?ú,ç¿“µ$Ÿ‘0`u†Ý—‘"%AY2¬Æid¹ÜÙyÆ GÙ¹Çi×&X‚ÈJÂeàßV ËNÒèSƒO YWÊM‡–ËÇŸAeINù3‹>|9Ÿ¿”?šèg"ëÒuÎýHâ-標"vH,U%¾Ë…Wb¹Õ#arÒ‰XË©óëÊšcd¡fR¿¥|š>÷&Ù:åý©z”y™Gu…>pMåùæë!¿Ëuô‰‡”¢Ô–d¦+P¾£È:'ünpþ”žöÎ9ìî¶qÐéÄ(¼EQ`~¾‰ùæœúö(•¸6±ñ3ŸÅýÿî%8Ìc‡èÀ  ƒCX4aÐÄ›ñúŸxn}ïÍ‘û“z¿àFÈ—ÑÁF?6¢ä’X1ÂŽ«ìù|F5à±Á•žµìK,¼Y6Œ'“­›e£ý@Âör>kh‘ $¹>€ ÎÎWeÀ×DÊ—Å©1&Í\›X(âc.vd{[—õâ5”{›í;±²ˆ8‘uYXÒ2>¶5ƒ$ºl!á2ÑtòÄšCË⹇‹“ߛ䲠”²æ×E–!µžñµIÊÊŒS)5g°n0Y\–K¯$¾òæ„®híý}¬?ÜD{tz‘¥¥E¬HQ¢\>z_ÙÀ‹oÿ%¸Ínèí°×®Àõ xxôô`ÐÙèbã[øõïû$ÞúÁ¯ÃkÿêC÷)msÁ_¸á ä¶ )܉ÕBµ¼ñ6Æø^¯geXÇ9gF2ÆÖûŸ³`w‰Ï‡”9³šTÍKÆšiØ«ê|eˆ}4⹃zFÃ"#BÊ…%L™Ã@Z e9RGÇòô]®Ëüƒâ5E&h²ë'çÇí¹Œ,bŒ‰qdDT$CxYÅ*¾Z1.NÕ½‘kLb2YpZתÜ]b–”Ö¿û†®K8Fµ¿•¢ÔŸíød—dXeÐ0ǵà8ç°¾¾‰Íí±ÖßÞÞÅöö.ÖV—±ª‰fìþíÆÒûâÁ.³±ó¯bñ©æ®Ïá³?ú<þCwP¬ŽÊ7ÈzàAHÃO5dýZdáV¦wgÖO ’ìÏSC›ô¶MŸØŠe¤"¯F•é5Z„¤œrŽüYú°LÚD„HÅÜ Ä̽64âlma70ìÆ–ú-VFF#éq±¥!¿Nœ¯§ì}¡gRdAE ÈPb>l÷#e”k5D òï"n£³YR6ñ3¢!2CÏ Öx<9‰°¤<|èZÇå%áŒË¿ù«@û!f–æðø›€¹ùi—D™0Æ]®ßLÞ ªï|xI¤.‘—%ú0DZà8çp÷î=t:Ç.ëÃõMvqëÖõco«ÌÝÏü>n¼÷[qã6:ØþûÏ¡÷ªÃ•o½…?rÏÿ'ŸÇÁó]¼åÅoÁ~þ÷°ÿ|WW+RÞøØ>˜"o̸Ñ0ÆHo7&+äž=5ôÛŠ‰––Ì7c@Õ±gØEö) y•Ÿ Òa¢ÄÚƒÔw&Z¤1ÍÊ÷|Øj€^¯ÇÃR~¹>y­,P¤¬’HLŽA‰Ý,•1f¢(Óùy²¨ËgŠÅë%û‘{)"DÄ O'¥uAÇs>µn‰øLʶO„ •_’§I Ÿ8CKžxrÿ‘Šq¶ŽËY°ò9“P5á8ñY°eôåÜâ5»tö¯|¸ó€…+Ó.2i|d³\JÏ=¿sRïÄ÷÷œ—_~õDâFØÞÙE£aqýúê‰÷¡ÔîÇ>‡â½ß—ìÿâïâÅw]´`°‚Ý|þ¹¯ÅøgÏ ±ÜDc¥ÀÄ“OÜX¾¾¾9ÑãL’×W±¼\a=PŽMcaÆö‡Ÿø"æÞŒ(n`î™<úÇÆÏ?ß8挊i ㈱AL·Û{ò¥—ï}¸Ùœ{êæUUÕÊ…åà óÌæÖö3w_º÷ÎGnÝøÍæÜï°È1¥wì±J…¾¥'ZÁdY,8Ìý¯öÿªÈ™ ¼°|&®b-¢>µvc3f»}zË ÓívÑnï´7“>Î$ÙÙÝS3!WvaÂsçw¶Ð̵®šo\@c¡õ8€ö¨šØ¹¨¼1Æß}éÞ‡¯^]|êö#7UÜ(šùù&nݼŽGnÝxíÝ—î}¸×sO ¬]6ü‡6åwZW¬:—Å'çþWK¡£Ô¶Nþ ò™câ˜t"ÑŒ;cê8lïìN|ŸJ=h´vàm0÷µ¡û±/¢÷É/”+xàá}‹ÿÁÕ¸è æ†ÚÙuF¦‰ÛíÝ÷´ZóO­éÔ=¥FÌÏ7±¼¼´úêý‡ÿí£·oþ ”Ö~þs_‹àx žÑ–M[¿T¨%g&06ûÄ>llÑAê›Fû£5ŽsS8ã"[k”³¥˜Û„ÙëEÚ·¿ Ké[°õ— ßñͰÞÂö?ù=4–Û¸ñþoˆÛâ!C¬üLK$c¿µµó—®¯­œõ¹(ÊÄYY^ _¾ûÎ^Ï­Xk6HÜ L›¦å—ÓÖ/¯¼é£"§þ„!*z¶“Ü},f|Za,»“.1€þ0UΕŅ ûJ®,_=z%e,Š×Ýv×ã÷Öþ<Š_üçØýåß@÷•šïøz\ÿ;ß óøµr´Ñ|ãÑ¡. f‘}F‡¥”:b­…µvÅ9·Òh(…MœÎžÏ Ò5XdŒ¾È± `íÑi—D9åq:«,΢ ³8e6äØ{wg˜Ï¤Ûí&ŽW–¯aeùÚˆ-”ÚcóØ#Àgø¶ï‰‹çÞõíXy×·WnÒùµÑ@ÅkG‡¹0Æà²ÍQf”¹¢@¯×{*5·Ï&ŽA뎇F2îsï`ëÕi—B9ä4C\„/@HÊ‘ÿ Ï, ֜ѯ€=醚¾á2b€ïÿ+ÀÿýAà—?ìŽöïê~ìKxåûÿ1nýÙסñä+š/}ÑÄgÒ¥V”i‘1ÒÙRòdÝ‘Åç[Ì Î+ÏÍE X3‚R(.·²ÿ™%ÑOQÐG¿ssg#B$Ÿr yúÀŸþ[À?ú[p÷'Ð[x#üüô[èuÐ;¸w0öÇwÑÃ"¾ëi¬}ðÙ¡»ó(cé“7íý}&hÍfóósh-èЗR{a ëú |è%ô0tÐM²ÈM,<½ˆ7¼tY È9¿Òˆ€iTiÎÍsyýC¯Üý¢¦u¨!üLgÓÀ£U“‡keçœ9j&¡µEQTúÌœ†Vkð;mUS#þä_¾óÏÃ~és°¯¼t ÀY8?¸\¯ÀµÅ%Ø7= óšÑé=xBIA/À±qÎass›ÛC¢`ö§þE•å%}Ø”÷å |õí¿„ÞÃÜþÐL²È:oàL?‹ìáÃC¬ÿæö¸YdŠ`-1žx,Âq9„¥6œ”Î>ðâ§¾nÚ%QÆ%ùý¼ÿSª•`1Z= ¢#ƒ¥¥E¬O8ßâ•ÖÀ²ÓÎ¬ÚØÜÖ6§N,.oþ&àÍå"›ý‹ÒÑÞ2Óä(:xù•ûc)ùn·‹ûÖ±±¹×ܹ¥c­ àŸþ—h,í™EvûÃqåõWÆÉ"›÷N%Îç®JÄÊL’Pá+9û»}Ÿœ[ON»$ÊñÜoÑb™¥+‰ï/g*áÊò67·àÜdLžEQ`iIg%)“ÁÃKxcÇ îÄtp÷¥{Ç6Sv»]¼ð廨ÞÞ9î!•¤û™çpã½ß8Evë¿ýþõÏbÿÃ|ù‡?ß×çñú¼Ø¾=tŸ™“å€õ(§Í¢ —ã1N‡¨†ðð%u:® ™E>X0$3«ä°ž÷cZò­µXžà즵ճ™)ÕP¿žKI‡Ì–cÑívq÷¥{ÇJÌ–sïÕ‡Á?§yâ}(uÇ£û‰Ïd‘ýê»? ‡+–cÙ7þj™E¶•E0dñiHY(iF‰Xsú€Q ç•çÖ5õǹàÕîÑ$ÁmŒX,¹§hh63k«ËØo ½¿ªò.// µÞœ6Îââà°—2ûpj’â8â^¼{:q#¼üÊ}<þØmõž¿Ä×ö²È>òg±ô_HÙu|þmI²È®àÊÐ,²eð9H²žËKÌøúE¯¼ôðÄ×N»$Ê8:·wzÄÂ)>j6wH6ÇPù·oßÀW¾úò‰Ž—–qãúêÐß5ŽrŒ1>t\ý±œa¶·w'æ=ßív±±¹<5„sîT/ÍYR…в ÒXl'Yd›_‡(n`î™U<úŸÄÆÏ•Yd øáYdûñ¢_,%?›Äz#3G²€Ê0ö¶úÃUð"­5<ÅÖ ú¡Éï1àqz»ÖZ<þØmܰŽííãå’Z^^)nå4ˆÕÒr„Ë£˜têúÍŠ¤mι )n€¾(ÛÝîÿ¡Fk}k ßÙB3o7 Ð|cviü,²n¹C%*&³o‚Æ‚“{/û{Ó.…2öô<Ç!Z7²[oÊõ÷XkqëæuÜ~䯲°0;ÞRq£œ$ØM‘ÄA{âÂÃ9‡v{_3—_Ró;ð¶É"û¿¢÷É/ ñö¾µF²È^ý¾×ÅmFe‘EܪL$HË9æ‡áü<ι?e÷ž×¡ª Šˆz n­44|+ïHŒ½íO,aqñ ¯ Ûí¢ÝÞÇAç0º2Xk1ßlbq±¥Öoå\à!ª±r‘L>ƒ,´÷j%p¬ÕvpR4æ·“,²W)‹¬yôv†d‘惃èvà1*{Ë‚GByK ±§(:Tu¡Îj|Äš)áÂû‰•³¿îéæÊ”o>£L©×ÇŽdÜíöΤ ¹U¨ÿ‚,âððlŽw¬5:ók‚4_{Ø-‡=ÇÍ";?$‹l¨È9½˜á£¥†ÌôÑÉ2¾*qÆçÁW•[ýĜʅAœŠé¯Ke0YºðÀ9—ø«õ-.ÚSjŽ/‡\Çv2žÄÌ©q¹ust(fe0øì¯ßöÇãâÓd‘e“<ô^ Ï>² B,ïýq&(½^?ó¸¼XÐŒ(°ÖÆšëÅ‘RŒ• ²·ìï Úi™&ü\KÜ'îÑrî5rDæÍÕ„£ÌÆ_dŠþHæç›¸q}÷^}xâߺ¹6ÒGFãà('üÉÄç :VÒ”q‰ÿÑ_1M©œ†­û*p¦Lt´ ÎÅ@ô73>UhäåH÷ Â_©9ôDÛãXp„¥¥«xò‰;Çžâ](ýÖtØV™Œ5±®/ØtyÖV—±¶ºŒv{íýƒÄ¹( ´æ1?ßÔ,²ÊÙcâ *Î({²¶ž}Øÿ@%ÎØY×$œÓ‡ó­Á{F£áHì; úèĘ Þ{„£ÔžL"‘ŒO]µ·Z jQ¦Š1V¦ƒ{z¦=úñ\ƒ^¯g峬cŒñZ·O ü7uòô$F£ð&ê—f7êa¬ÌÎ9c5È™2+x/õx9;¤"™ †“žlÝUk÷ɰ³1í\ZBŽ’ªžk6ßs„ccŒ×ª}‚è0ÕT¡87Æ÷ÌBfRëŽÌ¤2Y°?E™ Œ1>™.¨(³€ôVåk2ÞZëIüøP¹—½Z} &ÇÎú´Kp)aŸÊ`ª‰± Dгu3GgQ)u‡žoc¡ã®Ê¬@æuk­‰!é9É ôj$•2):û@÷`Ú¥¸tðŒ(þ'¾gâ‡cŒ‰ùAø‡< Ú(õƻүÒ3å+JáÙR(­7‰s%Å¿‘W^gQ['O碜 W xo➟ý(‚$m‰¢Ì  ô²ÿôï|aŠåQ”“Ój5±²²ÄaçÙ‰Øû~nž<Ûx\OgQÝi—àÒaÒ¡ÙÄ:IQŒÙß;çe(} ”šcJ¿ÊP'cevà8B˜}ˆthJ_ƒÉ²·3í\J¼÷V† PúßèÇÂÉR™°àÑ\TJí¡çÙXõ=PfÒÁ’f˜àl`j88çÊ)âú*LõÃ9w‚ƒ¥C)蓼l J|rØšöpŽ¥U”³A¬ôÉX™|š_ŠfHòI`q® ÞÆÓ)öL³·5í\*|pªG_©Ä%C0Tÿ1¤/Ro¤¾ç88ªp”YÀ“¥FBÒÇg;TöìLÅýY³¿7í\JçyDKM¦ b?&ãT”Y"É&=XE©3A«äÓ¾)ª+‡¥΢ÕGµÎäéìO»—‹`½ õaQá;&¤•w‚~Ó—@©?áq—@^¼2xpo5.•˜~Ộð=÷bÕ’sFtÚÓ.Áå¢ òÿÊìAd3Q¦4Ñ@™ŒÖJM¶©ÌI\öµ!ÆÍ“ûå(“¤³¸Þ´Kqi ¡( ˜cBœ›è/¬Ž“wEߥæ„g¹ïPŸ$ZS”zchvH²;ôd%è@½Yu2>ct˜êܨžÏ=èÙ'‹Ž—™Wa˜VߥÞðÕtK¢($ø‡¨­‰ƒ¥µV†ªxHÊ#¦ìú;+:êh|ndò$X.%-‰8Ø[ ŸÎ$¬cй–UQÎS&U.ØÓ^QjO¦½ÂZëHÔÄöâ\Lƒy~ŠeŸeºÝi—àÒüúŸƒ˜O1¢$•<û¥EGe¾RwÈ‚S¨¸QfÏæyz¶¥çÜ;Qø@b€è›p6t;Ó.Áå¡ô§á¡ÚlŸ eñ,+¢Rj=îÖ¤S¥¶dyLºIÉ ­ëyЏÎ$δʬ(Æ8ç`ÅùrÚ¥Q”SÓŸ1+x<ÁñXz²Ñ©’Lø:DuVèÕTPb¥—³Þ{ôz½(ôY i[ Ôž`”4ÆÀr°3E©5!ÖTè!ZkôC_Ëþª>öfª¤ƒŠR?(,qœÈÑêeÈŠfÆmÕš¯ÌÁ—Þ{Í&®Ì ÷ýHÅ¢¥Ï{¬Î9‹à|¬=×3¤§>8ç; ‡çÚ²¨A<¹ÏYiÉT}£Ôš-Û‡ "G™BEî¹ò&ßeL &ßäa*å,èi$ãó›(”*!úŸ‰Oš|ïo“ÓªºQjweg5ö`¥æ$3¤¤&S|°ÖÀdΔdºwÚyUêŽGt–ÑX„½XuÈM"|E¥ÔJº¬qp”™!Xg”6Q†¢gçâ/‡‘¥î ú¡å5Á÷,æiosÎåU”‰ãËٳŴˢ(“„ÅŠ1Æ3¼1Ƹ<öGœ=%‚Gkw¥æˆ¿ú>hÑŠ‰tºx’xsЊ£(õÅØ2b}¡ÓÄ•YfIy1Ï[kürdÚH lI3©´bWf„2ì<뾟h–­•'nè5Ù¦2ˆŽ—lâj¢Wfq–D)`â´km*þØH¥ï½× $Jý!™NsÀMnÍ!_´˜¶ÿYu¾Ro$›1ÆK²MÍ*®Ôq»¡è¬1r1B6„ªOë­µý)åZ·Ÿ Í…i—àò@±oÈç&úÙôWñQÔK'œsÖZ[K3f×í°Ñ¶B^×9ÜXÖšÓ-›rþ°}Ò”©(µG¬6 A~ •¸Ñ“Uøu¬Û%¥/l,9Ö(Å?Ð^0{V|Ô¤àk`Æl÷€õ°s<èxlw«ËüüÐj|ãšÁB㜠©LcŒA Ï­Ì¡ræa©d˜ @2m–œŽM¹¹2q íFŸAÈ„<úàhÕ®ÔŸðXsº†ri9s*¬Ã5g ‚¦œMµàœaf¥%±@Ñ}‹½õ¥¯O÷çiÆÜ>¶»ý᦭ÃáCM“àŶÃ×,Yµâ\XÏ46«(õ&kÄ‘˜ãÜIÜ$ãxù*qΆBŒÏÔçÆ‡Ð g{‹ó&lÁ³hÏlûÍœd¨iltúŽÇÊå¡.æØ«¢œrLÉГ„©‚ce¨ù㹟Ž2ašóÓ.Á¥‚R5ŸÍª*W‰C·1âw0ùœZáðPÓÃŽÇzçüÅLTà\£&©4Ñ 2ø2Ø_Õ,*&{æÃ¸Õ™—ðr¢NÆç Ïzï½µV‚ú±C=;'ÁþNèoû°œ¢=)¿™³ ?¦/ùÌn±1Æ<]VQjN6B¨àc˜z™B;µ^F¬f„9oB<(yöM˜Uåƒ5Ó±ŸBx=Â{1º)¸CM'eçPÎ¥À—~˜…Še–‹døç{½žm4@ð;à<³æôýsHøðívïâ 5”Žï ´–ÆÄ™iB$cÀ@ ß­(3Eîh)äÉËη|—‚+צ]‚ËE ©ñ ¥µÓò{ÿrÛá·6.îPÓiXï­Ö´K¡œ%Þ•a@ä Ъ]™%’Þ©÷ÞPІ˜{J¦ÎF_٫ϧ:Ÿ/¥õ2.‘ôÌþãAÁì_`?šÓ²}8í(gŽ)}ÌTà(3CÅÔp®¥½s.N‘åY%±1з`ò4¯L»— 3ø5ØÍLðßþ³íŸ¶Ñ™éÓSžl[.R”zÃB=Øá“úžÄ’“l§oÁäYP3-‚ƒ±ûh½ ÃTQää‚g–i÷<ºnÚ¥PΔPë{ïÌ(Ѿ«RL94ÅAü¬µ^ŠÉïÙ”ï½×T gÁžd"E²k: ïHÏNõÆŽà})Úq4Vf®Ûc.’iJQNKP(†Å ÿ.3s&k|¾®2ÔÁøü¡¡Wþ›ûå„™UbˈCY3¯p¬«ÎLã]_Óc¼¨¸ ϵr9` Mô==U‰"ÎÆÑ¹RýÐÎ8çÿ'ÖJ ZwÄ’Y9L{<íÕÑxÆ1¥ ‚úà(3ƒX#“a§ò·ï#|vH3,ë;0i®,M»—˜¢Á°§×ëYK ‚Ðçá\\’!* mY™]¤.·Öz«1p”"úHÌ„Lá!ÞGÌKåC–eÙF^N˜FCýo¦B_³¿³ðRêù0<ƒ\šiå³ÿ¨£ñåÀ9g¬VìÊ "ΕÉ4qcŒ„«ó}üÝZ«vÌIÒÒá©©@3H(Ï”XmÀÃS² U]š7`§;í(g?ÛvÔŠŠR+(ÀP:Ëïœ3"èiÈJÌùþt^ÏkkÓ.Áå$Mž,¾71M ¥e5cŒqeü¨Ë¡q¶Tà\ 4ñ 2;ô% G*ŽN–a<Ö“U'šêqYjõóäª œ©¬62DÄ{Œâ-Ë>ÿ10æe‘ùëúÊÏ:Æo½ÎQf…~œ8{„Ìô‰Ãeð¿Ék8}&ÅÕUÀjFÃi‘G-/C´lå1TN%¿b]g_º'hªef`A$9vdº8Яè8_RŒ­ñ&…OMŠï$Ï}±·&6;’€ó2µðo†É"kå®ÌÑ<ÏŠÁxÞ{¥Ï—¦r?Sš Àµ›Ó.Å¥%‹y“XqÄ™8¼†Ï¢_Ö;Ó.r°· ¸!ŠRg<|"lD±CŽ”@ðÓAé{ "Rh웩âC6ê¸&1qH¨IßÀQ/UC ÿf~Þ-M%T”ZcõUVcŒ=ʼnCT¼®rJ®?6í\jÂ|ðgš‡cƒÅÆdþ7}_Kâd Û]m÷fi ­Ø•ÃkML,ˆršlbÂ74ëärèÏ€+×€¹ùi—âÒS•¢A¢|óÌÁñ¸ÊáþR°sxi‚7_.|.Dãà(3CÛw˜9âP:Vò5l£B¬¨ïÍ´‘¹Þ@6Éï<Ã0|1}½÷—h¨¶ãu˜j†ñÞ{óÿÁ`µ¸v¡?øIEND®B`‚instagram-feed/admin/assets/img/instagram-with-uncanny-automator.png000064400000043572151435171370021750 0ustar00‰PNG  IHDRàtÌýòëPLTE}Lb†QŠ]?RŒˆ“[e}xŒzHaPk‡MWW2I?^~z9W[DYj3Kf~e1L_/@>^‚tD^`.E9U{Xs“xTpe,I:Z~MiŽq=W^‘¥c'Gd&GFb†JdŠa!GRk=V|Eaƒ;\€He‰nIeÝÔâçâéþúýúùüççñëæòðíöóîøíçòîìðöïùðòþÿñúùñöÈÃÓɿ˞­Áðòý†wÞÜãÕÇÑZEaóõûøïú¦ƒ™òóÿüóú²©¹ãàìâãæÿñûüüÿñôÿýýÿÿÿÿÿþÿøúÿÿóüóõÿðòÿúûÿÿõýôöÿÿ÷ý÷øÿÿùþþûýö÷ÿÿûþÿüÿþTOþóû-9VýñúüUPðóþ$2ûùüú÷ûùïøùóúüôûöôøóð÷ûUQæíñüéõ‚ãqŒöííôv™¦ìóöž®m“¡×2]Ûèí*4M%.@êQ.¥¬åH;Ôáæª«Ñ(oÔ-em¾Y‚‘îW#Í!z¾ÖÞà@Gö×ñûÐÐó÷ùÏÜâ¬Çѽ a‰˜­¸Ã‘Ü9RÆØß·ÐØŸ«ý¥£–/*žùDYj¹§×éûo{‡VcteÂU wËþòóí¸ä•¸ÅýßãßœÞ×|Óüµ°Wsåf}{Ølk±e™Í÷$t«íxh_¤Y#“çöËÞ³©ùŠƒU‹h³Úùcµó„åKšÕî«Æþ½½Ï1qÁkO‡WT±ú~ªº.C<+‡ÌÆÞ˶©G€žØP˜ÙF|?bOÞŒÖF‹¶ät–‹Á…Þ=kÐI¶’¤­Ä'­«Ð¬îd;ƒÅøëœ»¦²–›¢€’™îEYñÉë¿ÂÆÀG®!·¬´ºØc¹ä„¶y±ß­ÉÚpȶ?ÂGm^h¡Æà|¾·0»Ã¶ºFtRNS  %,)$#!'”ñåxI™…f°¤àáÇ`@Á6Šv3̳HðÓU6ýY0ïCøIDATxÚìÁ€ ý©©˜Ý:X†¢0|.÷־РFŨM¥"n}‚2ûyÿ(8¥™ ‚vtVçÃĈ ?Q‰ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆèT—†Ð+Ø}23@a&Ù Õ7ÐYæ’ ´CYT]_×㬮›.ÏÜ §ìe™Ÿ—å]ð~šyBU8×r3Ê ¦­Ëºz\Ñw™ÓDä°¶²ÊO®Sä»Âµ c¨Š+š•´_¿«KS¦;$oš…Ï)Љ…ž¥—_Æ…ÛŸõy …<÷¶Ši#_9þ{=Á€´¸,»ÆËxŽú25…âŸÚ,Ä­º­q 1Ðn¦IâšeÍ:.—ª4Ã^—^¯sß=•C 0ñ. AY +Io÷#ÞjÜ;û˜¸ðø­Ko¬ìKÐv"0ØjÞyÄiüö“ø›}ó×q¸7^;€"DA“°PˆO!D¢B(ƒ. …emq4B<=%r”.wŽC*$š”´¼3;ëLâÿèìÏÎîxuâD~úfÆkŸ<ÌTâUȕݻû ±l«qmûºÒ»?¶Úär/Ÿç—žRJQëÂñìÑôÓUSU‰ÕFÜî„Ô-¾Þ³‡UtÏw¹Zk‰®ÅÒ•µO†ÈR#&¦S…áz×iU.üŠ&áóCt^¸6>ve¯\  µB¨DYOšöÁC§U©‡KÙ9³pRÉ‘CÛÛ£@TÔFá¦$ò¯RHâ_U§?x浕¸DøaX°_UXp !'ÚÄø–ð•Ç'D ƈ—*»uªcê°­ÄÅ’`§§Ì«4s-‡Gã ɽJ"É©q­ÂeoZ(…ü h qq†¾ûVÑó¿Ð9G9Ðã@ì3±@¾Áƒé޲ŧ¬ÛÂdL™¯÷Káv‹z/\Çé:aµkë3fÂÇ’Ll!¾2µô V™8sj&ÄÆÒ„±×êȶç÷6y4Ú0‰x*žÔ:®‡@w$úƒ[Û˘§QÛ#9YÑg¿†m«e½2!ÜÉS‹§EùoswØÝ“¤Ãi©€#FiÊÙ„8ãÌâ àþxÒ¾â³ã_Ñ‘ÜÅÌôŸØÚ¥xèH'Çxh@ÎJ1+®Ì1c”âÈjµœVFú‹ïãèom›Ø‘­>CÔµØwpî4\¦«l¶^’®Ì†2\ZXdÜÄ{ÖÃFÒé¡£ÚèÿØ91„{X¤ž×=9ºxVÚ˜iG ›{iü(ÅdñÓzxKuøFxD<ãj ‡7Ù#¿ãÞ>þBò3yxf3FžE¢ºÌ÷PÒÈ›ûNã¥ß—ìB¥é’0̹™/I×ÉîRèú¾¾0†DtfÆýRe 6%k"M!f«Ç“öuj”ìõžD¬ÃÌbV¼µÙ7SIÅ Uxë¦Ós¯_ë‡3…B@T c;M‡N\/ùø‰×¾ê!á¼Z!ŽÙ¹ JÜõ°dïE‚ÇñÍ#§×ïß×t‰±ÆL—YTOÜ~)аB댟;;}§ár¥Ó[RæP ¼³c\å…ÜÙ”-¼xÞ z¾ï'3­)qÖÍ%ˆ)Äš26µ\8ÃÈfoi 8ÈÑEËf¹˜œ­mLnÛ¸Ö¦WBÇ“»~ð`ÆB¬–½L‹¼R§0«\Æ“†gÇ­Ã.ü×ý`GE"tšs¼1¶&ÏæqÍ.l¯ÉÁÉÙ“ÛwFóyŽ0žL:C]âàY!pE£¶1:ùÁ¤ã8 }‚(q÷æ(²E&ÞPæ“inëåu– ìœF¦L'3fÐêýjµz­TeÞ¶¡¿xr½ïÈ&öÒRè%ÿx/_ž™,Š]sI¶¶8mEÚ¿Hù W6òœ´|õn}™.ÒŸ«Ãº/eš°Áõ&â%K¿Ü#r§zÜMÖqž4öZ81iH™£N Ù3˜`Ô@ 1±-›U­Ót¹\.Ò•eᙪ¾o> ðAVãnˆ…®À]ßNÐ6h$Gµ—.Ø»š9#&öŒ—‚$Átöj"Æ4Í-Ìw{\¥éÅ›7éâò½Á[·É¦~ë‘×obRúý£ã¬1Ç{n¶ äû*Û½4£qaˆ5ß34ƒLÉšç;/Ž~.–o4àtËdËhßïxŸx‹¦xXwWpºGÁ8KÎ0Ç6ËbãOñþ;=_}£„ùZ“­ÙÇVƒ€/..–‹EºæÍQX/n¸N&Òsšö¢–€¤u£F1³<%ι‚çIÇ<ɘÀæöAÌE²Ñs¼E×°Õ$sÍÀÚ4ÅaÍm¶!š5Ýå ý†mh ¡ÿjÿFÀ,ë{—Ìû!”†ÌÁÅq?E€™/‹ sÂÆÈˆa¯¤å¥h²68—3æ>«ÛÍ鵄ë:îQžÂ 2DÍ\†;í¢fà™§iˆ¯NÐÈ×¼ëgC×Ðf½¾JQËôò5׿)†ìãŠ*<º†U©1ž&|ºÝ£à4Š­)› Vá¨gh0)ßFáÈ÷È1J·X È$è—ó"1a“¹Y«+¼MJ¯>|æÚÌYšXs)ÞK<ðû²1Ïq Œwc llÿúöãû÷ï¿¿ìV~|ûúkƒ›¹k©þ’‰/CæˆEfæ{)œß¯/¯.ׯ?}|›ßæÃDů‡ÌF×ûÒsðàáyçûÛTÆñÝþ¸íF]Å-hÿ4"‹¿ßhLœbý‘tYâU甉·ÆÖÚ-Z†YÛÚn®³¢[ºð8BŠn:uˆ‰ŽÜ ˜ ˆF¾ôyÎ9÷>÷Ö»ß^¿=÷Üs/¼!Ÿ}Ÿç9Ï¡F)6d ¨bƤ‰:ªòûüÖW_}óÍÝ»wûí·ܶmÛK PÏ=÷ܹ?&Ódw<›³!´r7ò]Z¹‚*>Ó&¹]]ÛÒÒ›WõŠ  ”¬Ý/ºøãª@-œ:Hÿ(í{\ h`FT!Ð0Åm]™íëÛº•üad<Å+œ±¬‘1ëB?ÙÖÒji ?KˆcÆ‹Ã[ûª˜ê¡6q¥=³T¼3ž;Þà•Ü®€£ÆîŸ`ìB×ÕyV…,¤0#"¸),G§çFú@‚ð›ÂÃÛÌ„Q¦¤Í³ä+:ààÛ„h"ܶ4hÔçÇö‚Ž8üÑövFÒ šÛ´…Î+¯æê;o ¸¡›ewKlrI²ßWßT —±ÕŒôìȈ™°µ‡Q“T’!al_Á ”¹ÍÑÒ—Aý`ûáco€>Ý»iï±ßÞÑ“‹unœô¯Ë-Ù½a)±átyœ._ýÍ!+)ð¡X­(È—ž¿ÕT%]­JeòäÎ?Îa÷/ÑÜÀ uÿ¢kË_àí‰lq¼w Šêßwêð_|ýõ›P{·sª"cW1^K“–€¹›oójðï·w--ÁÇ)9eÙç]ZD Âdz›7ßÙ¿"<%[n™ ”O^ä‰ò°ÆU„iX±le`¤*îÄ-›ЦRñ^ÐØØ@´”Jåó§N:p $Ú"¼f-äÚB%ÞW×ÖaGdkÀÀ·ÆéðÔÕ®¼1´´vÝ ™K º8ðO4®!\ò§)FøxM„á‚!ÜjdË„yÅ/Î7WŠeÕX¦”ÌÅ215‘-GK¥|ê»~{*jòm Ù™^1Q¡ão@ ¸mí_„›`Ùå«k¤½„"Çð\„D¸¢šƒ „+˜AfÕº—µ*)B›DhÙMø8›K5uìSµeF-Gó¥ábVÕ=LPá'« ç;—AGÚ…U–½ÿ–F¯#tX`¤EµŽl¾³iÅX{)|[ qå$Û_`!\40’åzlv¯µ8áØP)$å ÷Ðý™D¹8Š“k‘§ L8pÍZ»Ú+ì]EóŸ\‡ÃãóQ„^Rs€ðí‰8ë Nd>µôE a¥V„óåõ3+±B nm%²†U -ðÂO²44HÝÑŸÈ c’ºŒZnÿ×Ù£ ª¯ÉÓ«œ²ÛÆpyd’%—G^ÙЄ\‘îR©8|d#>[ 7}òÒÐT…ÅjŒ„ÿ†®W[ <‡` \ŽùI”‰/^ð±¶q2_¼¨>¥ªFαdnj VEBÎäs1˦6\b~Fü×/«Å“G=¿8Ìräô8ý²¯ñÆ&îa1WC~w#ž1ã­œa=-ljÍO¥qd O`åÐß!…+ĆÑO^“‘uÊĹO›'öìÙµk胉…óO ž°]RÕDBÍܧcÊdÛ MgìùF¯b´=Œ‡„pÎ /k¼9Œâ@éâ¨ÉÕßo™§çú@áÝó“àâô΋N†ðE|Qa9ZÑ„Aš§`kÆ:a¹}x¬ãÞ…îGH]ÍÁE•Ï?kq¨\ul!tÓ /8eÇn‡$<,»üuõ·† j˜9gøyü^ˆô34.M„wOQWäåo|N8÷Qœ:í|RY÷(OÁ÷[#éS»šíƒë'º–LÊÆË‹žLéËÚu«W®Û¶Ù!Á–ÓÛ°Z'K‘š‰0‘f€/F™ #_ÐŒÑ!C€îT:×)×/æ_t0[áÜRˆÇã¥T"Øüˆ pÖHôü Yõ =H«C,4S›øÒ%¶RMÞZٶ屡„|e‡Kö]Ѱ&,$è2iéÅYO?„ ñyvókLWÒ¡Håä<'|’).àÙÖˆ&¼ ÀdßjÈtSÇÆ ‰¡ÔÁ2Fh\0ž€ƒ?þÒ|®„–8iÍÆ×{ý²Ûå¶)_؆†]ðòÆ; “4ºbÁ~žL=‡}é‘K ø'œÖ£ôN<>äl8Ç ñY8˜[[¹µÏŸèƒ fÀCÆjZx{×Ä/O±ç1LgSt0Exi¾ñ*¯ìr»ÀÁöC,±Ãå©óÔÕ_yKØRd`Îxz Ötd3êWcJf„ÏhŠbæ 1Ș€µ"ú~dÌWV¸Û{‡ƒÁõQÀ¹“~ ²ùž`æãìÁÌð÷,o…¡wµo¿Úïu»m{(,¹$øÉõ@ëšëÂ-Š%OoÙ"ãÓãkÌÑá #\áFƒ"h_`Üêì„kèõTD/¡g£ã™`,_ ÅCŸ„ÛÄöDLDää#ùÁóÂÁ0¬°V?ßyµ×-£‡]vÝ+9¡Ëá÷iE4É’7ÂZM=]-8x™6Rgðï:`ly¤Áº/:˜Eè¶ûAÜÀ8ኤ­ùâ5™*›»º8_øÎÙÑAà8ë)$j,¦.À#©ks0õ²5³¡ñ6r‡2Z–!FÛ²ÎrÀð8 å«¿‹ZŠ Ò^œÝ:[ÕݬlÂó!Q4sÀáN Ò 0Z˜3Õjâ…þB¹T–9ßÁ£Ï€±h<10^Ìõ1“~À9¶ÇB²B¦œŒOdçU˰䪱£ƒ%a`(¢—¯ÖùfZcàïðŒØV¸“çq·„ew0(Ý RpBÀëÐÃë‰/w2ˆ’1îÉõ•rêyž‚O|(s܃»v jþ¥ˆö·Ùš“øzõ ?vÛôwc®íoh2r]ÂÌÓ/¿¼e‹––ãɃÎaýs 7Ä?ã»È—¯MŸ>½¹o¦Ó uëà0x=6sÆAVÀ=cñ\ÏÝÌÂ>ƒúŠxrìûîÿS\&KÃÙu:IÜ»¸xqnòúýnWÀv!Z³G®“<+ë—7YÙ÷ò€7n8nª·ñú›ZPe}ùÖÃL=üð[_*aÎWA¸Zæ\\Žr=ÑÑž=|ˆ>Qãö‡âå`s°œ.%l36<)“9ᦫj!KÐͲ[ˆ–X –œ.ÙS¿²ñzD ²,³ÈÒ}ü2(L€7Í/‚| Û–•W^¶0êõ÷x„æ„,ê-àåŽGû{&usÀVGåg(nwíé¸o4•IG“ÈU kqèׯXU–¿L*q¾uÑ˯@ 1qÖÞãÝxÓ–6Ìg°kùÕ³ñšð0¦`ÊÁ‹Š¥c5>Þ¿½Ä£¾B”ûM€Íq»k"Ø1}5_Æ%ÂDÕ¨5W/óË.ÉNþ•héÀoz<µ×>€H^¥­ª³“‡ú;œrè'#ßǸ‹ßÖsðÒ!ý+rq¦s´:ëq›'áîèsŒàT?£ÛJ©˜N©3ÜÖ\µÂëÝ6âkÂì€F¥,×7\¹Ã3^aœ9j‘þøE,þð6¦§Ãféëá|ÉÀ\ŸaŒ¾ `ÂÌ‚tûáߥ`¡'¾XÝÛb]Ÿ0ÀƒðyÖ¹7€¨à‹7œ-´æ*Ø'Õº%;æ` Ò°Çé”ýñ¢xD°qE¿ø¢îàÈi$ÿÊåW^‹pas´&+`ŠÑ ãï… úkdù’-×Ó½ÏrðüÝX¶IÕ|‰3KÌŸ ÝîÇwõÿÃÝÙÅ´Y…qÜ—¶@cÈ‘iæ…ίÌïiŒ~KI$fÃáÅ 8'UhÓ4­)mhìÇÚF iùH!Eû H:¶aØÈÎ̘9³&^õÂkÿÏyOû@Ë—ÞùþÛ÷œóv»ûåÿœç<ç¼/~ŸÝpìb+/63Ó]JF}¥¦Þ‘{Ñ൲99†]¹E·?p˜%ðªˆ3u0”¦9þs&á?>ÿü“5pÑt„ä4Ü4H¹ô¿rp×ü™sv¿ß{ ôVédzW~üî»ïÞŒ¯\¾|›tÒå²Z _Ð’Úräž“êU§‚()Í­Ì7hÇÁŠÚêqáƒ:BôÎÝ{0_žŒé#:953à”~ýLþUÞ~ƒÝ‡Œ r»E×Ót´‡¦aáà–í~y±¹ùLkÔœ$ƒ¦õ‚òåË—T],IctÓåµGØÚ÷êzÛËœj©c|”äç`˰R¯1 çÂH²t…» ïØó¤d˹ç€ß“€¥·¿„?üù§_/]úCl.} Èv$ÓVÈÜjj:Úä|…ƒkñÙJ/ðü5{w§LžXÅø -¥oY'®±Î°×·ûm*É:€,ZT£ ·h'ÏRÈÁByØkØ…9€7¡T3ïð¨ŒØ¸[FM‹ÀÒÀ£ý1uþ ™L£ÄtA˜, ÀÂÁÛ|h®¹ùz·Çf ·»\¾“„Xeüî.\Éä‹èît $ú‚¶¬Ý ö2OÊЃ¥ùùFZ'iíp¥xfE§×«!úàV€Ñ¨€Ax\ ¥‹¿T KÄ0°ª³y¡î5›ÍƒÂÀÂÂoc &À µµµÄx#Ðòוæùv6÷ö¸Íáò‡O ™’Œ³3k"t·Çë·Ç·²o÷½¥»ŒùFÅ hnCIQˆ0Òèʢݷ>\·)b 8ùäV颥_/‰L+ø+ 8T ,ýf“Ù Ò"D÷mš_ÜX+Ä™39ÿº~½Ýo!À­Ýa‡ÍáŒßîµàéog"Ð<99yŠžwF{²³/àwö¶ã‰ÿ?™Ÿ¬ió SOíC'Ð4ºÝ€Í†¼¹…¢²t˜>²!àñAø<'Ù¬)a»Ó€'Ì*_Èì^‘’3MMÈ£;΀3$à¦iãÕ$[ØÀ8_gñG‚­íÖhm„ÙãŠ{#‘Žvˆ‹Æ¾ýÒ(H#·Ôl˜;ööm*`œ¯„Â_@W@y²ê´Z£>Ÿ/jµc|íøžYY³¹LnÞø\.­’X<®×ÒShŠ"ò,ì%åðN„è{Tª²E#¿™r !Δ¬ZÇTºý€+lJq&¾Pò–YÛx]/[ûú‚Pw´Û…}ÆêÆßÛ£³§OãE³_ãU³—/wúÖ ù"qÏ_ßé—™/_„šçbFýDEE~©³°¢‰§À•Õ)ü«Ã¡ÊܹEE»‘eÁ³PÚ½u¸ÖÓy"¼ ™’€C£LDl"¾D8&æà&á5Ô؉G‚mαn¿Ýé þ69Üpü¸goܸqöô;§¿wx[‡OýþV54{†øÎ¯H´,–-½úç³wUT èù$=ü[ùÿGÌR``â›Gç¢o-.{ˆÈ-jcA;ÛÂD8”å`ab8¸þ•x«eŒÆw|P+cÇ Æ$\•A5ËÏ©$‹B´ÓÓ:99Üp¼xáô ×+øñÆ…³6‡wrxxò&·í¢à;4²†l6gNª¡‡Ë+J(Ç2RtÖÊßé «ñ§9°Ý° /èÀ:éÀU’¯zÉ®.7IAø½å wv¹‹3bÀxé$º==êBø8MÂDp ÂÑ>â[eñRm±‚e{܇¾§æf«ç¦qî½Í1€¢µOÞl±]^•-–ר<ñn»uÀëíFš¿xݾ´4HÌ&ücÜ×õ°Óñ\ìš=D’¼[›õãýw¢]_`Ü©PpÖ`~yÖ \¨Æè:Ip5+ \Fnrr¿{­WGh" ¼3±Ð„ûþ”IÇ`"¼®ƒÉÄ¢¡Ž>m½Tªú[T1æ1ÓN_ükiil`liiÉÚÝOÇÃmÿTAÃP¹[7B“ƒó!T*õšœ’^Ÿ¼;¥Ž§™¨Ê—»:õ†C8ðªmD}i’ûýäÛ…XˆÖI£t ëèÑØÌ Òè$*•r¶4®OXå6¶Xl#ž^UÓÓÓ]]_Dg·z"ÉŠÄ‚/hªŒy¯yCà‚Ò‚|ƒÑ@ÖR™C/{Z'ÈÁ»‹ŠËö>Ît%ã––ŒÔ€Š¹›øª’ÛIýæÑÌ<8 Ànøµž&’æ<:+H‹F¦^ |v±9KW¯¹¶šš6=àóÔB‚«Í[tÇâþìÝ·Wq¨ÒP©µóŠZ­Ô Â…»Ä$\ö¤À¸åzþ2.¹º 7"FÇ/)„é7 ¾À+êX¢¥…³Ó,Ω5>ê×65„•Páˆöv  jm[§˜9#cÄ÷‚æ`#½‘T[eJQ©¤KlêòvÞ±ûÖÛÊöÞlL–ióˆ¦ô/’¯|,b´¬w…Mæ5D7Ñwa5`¬h·#if襩!¬…2VFׯ٣ööNk¼MØœñ¦Zž•eÌæë®}ä`Ô±ôÍT±”µÕ,Nu(ˆÑE¼§ìžý &i³fæ eà€ª2nô(¬Ë¡Y·À ºh;V;¸ek¶µÜÑ52µ8Èi uÍ zã½Nν™.u|/àÒXšùÀÝûJJJÁ—¤¯ÔЩYæ«äƒõȲP븭¸ìéû€,W ÄÌ2ÃÏÒëY:²°š/,LÏ5Ľ¾ 6­áiÚÂŤ‘‘Ù©¹.Ayqneväõ‰5K —i³‡ï?He¬Ô±Œ”cií¥ÑЬ€‘Hï@ŒF½w?™SÅUGð4î8©f^µÅÅŠ1`@ ÅT¶4 'ëa0ÞÂÂ[’æ¢çÛ› ` vzbÞ'¦à œk ã:Ú|‘’¢SòroÙZ–8˜µ÷éûê˜g⌅“ü]þ:Œ$ZêR ÷w¬<ˆÓï=8S‰4º£¿€!¶p£)Û¿[3Kù…Yt[ñ•_™wÝðîr‘bå— :ƒA‹xsèB1¯ÙGK Ë©¶ž¢4Öón*ˆ§sšUx|CôQ!¢Á7 ø˜Üb"¬ŒØ” Û´¡‡%bޤȤ\µ!eÞgy9ñ¥R4rhí<™¤¬Í¤uzõh%v”nE]FJ42gT<|I2®Ç'ÒLøè* Ž ¾ Xµ°”äkúOÁ:íg&»¹îúîr,’À30ùWc»Áìb(|wì*åʽÏÔC*a˜-¡@K@U““u «h¸GA«^Fi¶pOù÷òΦ7‘#ÃÌ8¬ù ó V–¬heË‘+B—½…crHþH~@n¹øisÎmÿ]Þ·º˜²Å9OjzzzØMÐòø­ª®îÁ«U¢à_FÂ7€õŒM·1›? æ Y›<»ëa1¿ïGôМ$ç΃ })4=§Âüš„Y®¬`Å¡õa½\‹Å઴%sä.ðÍè2O#½†ˆÿú¤xÅÿøgå«‚)aü›é×ȺcË}¿eVõÒžÈ÷SƸS=ý€¹Øï¥­È¡FÀRíð³g„EÂ×k&>%Mžr•#‰Ñ kÊM0›ýþ¬ß¿Âóùw}•€†7i%¼ñš”ÉÓP&lZ63ž¯Rmßô;جƒ…†| .:¥úH4Œ%Ÿ®±\Y¨·.×[ ØDϰÄkcCgXÍTØ}~þ›¹Õóç¿VjFøW1ͳhÆX°êývòõ6j´s[Ðj“v¿Ó(a³Îi˜ÉåÎÓ¸Œ¤&>ïÂb±\„og¢Ý˜ÍLàÚdXÜ3 ›)ñ„üü ¢–eÈÕG‹9Àæ¤izéH'çv^}ˆøG#m`9–m6ê³J Ëç¨`ß;Na v Föñ|Ã×°Z y4fJ­kÕ/ìÇ0¾â¥9N€q˜ 5¿½æ¾þß…?¿¹¦%€˜‘&™îñ&ªØf;|/\XP¾i3…>Ís/G.í§ÄG{Þö7Ý2qR˜a±#¯„ï@V0ñš‡Nr.mkS° 8¶ëÿùüéó+5™'YÂO×ûÀÚ@{“1ÍPŽÒµ7œŒÚ—ú1†{öý EOŽ&€m"Ì$ë3¥<Ó,;@øØJ£ˆcÇ l’ÉS‰ŠÊíuêY.V±Þë¤ïîÜæøÅ~Ïw†æ§ÿ“c^¾¶;à‹æ0>úŽ=ïföø Óhð…†¥\‰DºÞzœA»8–â¢9d3#îqî—¯Ù€ìü§Õœ#ÈwðÕì;‚uçÂIc5«ÂðÓt)hE¬hÄ«ŒeL€`¼Z:å:²ìvlMÈ{>ß…¿}ìðíŒhu¦QÞg$™\ÍSù7 ß Ãªö¤ÆÀÔ/´Z­‹1DüÞñU]¡½XùÌŠ6éMÏÛéµòíp£!: ΂ãÿ pdXúZè–ý‹µJ…„[­«¥Yü’¶¤^$À±`eÏx#o^v‹Šd‹ ¬|Ñ~ýeÒ%Þ‹ñ˜¾£ƒæ)^c´xaQYQ£73¾óW„9ر«!Ü«Ênh™$!ŸK’•VÀ2Oò¹¯ÃÇ!Q˜™´8é./”¯^ÍÀMm`p×@ª%&“/Lþc*Ø…`ð]áÉC·5_ŒIx4Läa׈ÕÝ&ù5Pï:n{Éò/ek}¼á;_fЂ™b‘ðWAzõK“%%ÀÍ„Ðp€‘h±&M “#Oö¶1·•v+D¸  ÈúªÄ`ç¥1\v$;ƒ‚Yî(V„pŸ¸ IÁû”A’·à«Æ-ô1Ç€ËFĺàpÿ<¾ãq¿ßnÓK/Ô–Ò¨œ0’ÌÚ±> ä$ÅЪäËa›ú­V«º‘ô‰—Á??5u¬/Q¦…  CÂXs¨l©ÆD‰18-û$8®ì#fµ‹t]²½ž¯Ð€YŠNÁÓû ¿õz¡0®¸ ßOÎ[(a•1ÎW+Æ dÞîFæùË‹:ë õq¯{©t"“`øç#T±ÒõýI»t¹w–†Tp:]nºTº…̦l°ܵ“êZnVŽñO ùy¼fIë'JXùΞºä[‡`øöGðÓ7³ÌAUo½± ·òëƒ+ñðíõªx¤«Hœ£ Íp®*‡·3f–ÅE?Ȇ>$\ãÒ®3?ÍøI›¦Œ,^Ø)-Ú •«úbFß,ÍEáïÁêÆã¼E³#áÖàfXcô$®wŽ/Öv(+àÙµðEüŸp»ûy YtÚªÐÞ¶{FÃT a˜µ,æÑ ÃܾÓ$á‹îãLëGn!™~š ½b„¶|ÍŽheºD¾—·Â®lú…~ÔfaB|¹pdqh{ÏÍåz¤|XÃßß îGo•ëüÌ C©RzA&õ~‰·l¬D¢/æCɳX”f®·˜jÑ–IƒA¼ª&Ü[iQ«¹×$ s7Â7^1üv%üàž›´N3*D~¤øýTÞΙÊWÄk¤…­¼½¾«•8÷ ¾ºùQT¢€á Ï˜aå‚L&À)å„%ÇòyRÂÙ<1ELÄBø„ïgöëÀ>x‘¤¹œRÚ¤)rÁ ¾´]É®Æd ùBÂÕf„ƈxdnÚœŒa&gŽô'LŬ§BæˆîyÈúU/jH‰8æNÚñùÿ0ZÖóaŸ ‚<4\ãÊ!?{%üxõš0Çû2*ÉÒZõ@ô‰9Öô®Û•ÙQ†d®Ò¬6{Íj5‚õ;tÓ2#6ÂÚé©ïçZŒWÌ$J£áu£§|o‡ˆ¿L¯À·Á”'g¨aI•ƒß5ä¥ãK ßZÎ2ÍB ϲ¡ìßA2­„·DL3°!mÔªQ÷h4“ñÆ”o x]ôÅÑ,RÁÕ ˆÐXŒ©áÁÍÕbËׯîp¶xE] Sùºð¡@)l´ËÁè¡ÓóÂÌS}Ä ŒTë,ÌûôÑÔpÙ͇I¸;™î|ުυ;ôsMúØtEâL¡gׯÎ~±9¨Àwhö*˜–o5øé6s-Dâ™Åm§ó k†;‰Ó ä‹ì-7ø°(ò«<Ž“ Vê3¬ñ‘àõ¥Ëf2¬X†Ã‡%™v~ú•‚` C»Úr—"jó7‹“uâß ¬X.–Ë8K¥j©Ù„ÊzX_D<¸›Y3{Á€a³Õ.o/Ë“øù‘$úç3L‚CN‘XäHÏ7T~‘®Ö:¾[&Z<òy™-ÉtXª–ÎMK(Vƒ|‰wµp-昑ÏÌtäŒx5{†5A¸¸ÍCÂ8Ëq©×chXæÄE̶kŠ“¡˜£äVi_Ý †ÀÛGõŠx©_)`†€‹IRèt>2º X3i<¤DýâÀ¢ƒÿuõWµD$ˆ/^!ÖÅZJšS­É‰¶ÁkáÿSŠE3¾‚7RµWAÀŽú ‘®åÕ"^÷~—Ä+«¿Œ¿\?`ðE Q¤„~Ýv÷´þöþÄ<„³ ,{;0W’]ð”°#ÌM<‰ŠïUU± xC×øª‚Dvîòá¾ ãÒÑ…óνfHkeZ £wåR£R,5z%VG ÄL¨ß·Ø ÆvcAشΧÁhõö;LõR¿Ràȇ\ç÷Q¥” ‹gÚîß¿.|,hƒ,EÌ’›†7ˆ!A€º¾š:ѲgfýR¿k•ÖtòÔõ²òLç\Ý 4 ²ìù={8NOK¥4ܨö8"a©]2£ží*W޽6½ºˆzemÑWæ¿Î3Aš¶RFë™)a6LÀ0>¬t†T«ÂRÖ"—ºªv5Õ%Â…¯©É²«Ù%gáËu}‘/Õ‹g)ðü®T{w +÷ÕEH©™l‰Šù:a¼<è°I÷–xÛÀ ƒÇ‡ñ9QÝE™G¼9(ØÝ)wÐÿ²wf;Ô@ãmÚ‰Ó-Á!o]c3þ ‘~å;wâ3|[kÕ)Ò#ðUéÞ2ˆïþõ¸ÎyOÄH£ß!ñÑÇXYЋ®&¶ø¥p^é*²/“£·|ƒ¬p'šóB¨¸¼ò&QúMâ4‰ømŒcq ÆBþàïßÿݰüÝG_h]®#÷"WžÃ¾VÏo„ÑØX¢lUÂÿýmþß+£KF=A·æ>çì6‚‚÷5Ѽµ£wE¼ôÕ'_~ñÞG}¬>úè£÷¾üòûÏ¿Zl‘••¡Ùâ û:õ5ãîo¾ö*ö ÉÀLJ7Ž €¡`aC#õÝÇAùóïù}~ôÙ×è3~ß|ÿ)oèݨ›uïâK&ûúñ¾hß¹ù]Ѻmfàôÿ°Îo¥Sø×¦fßÒCƒåpêw4òïK¸ê].ƒ®²¸2ØÃw¾v+(Ò<ƒq<—ãr»Ða7,gÝs&r1.f¯XÆ|ç7’¬h…ta}í ß7¬}­®b©QD§zJÿñéÑoÊh‹ØåŽr¾3¾‚xÞ\™6H+YÉXÂ2¦…@ TZÈ×ã‚•xµ®Å8ç{…âùv\uíÜÙÕ ›·c'X³Ís™r‡ ¡š\Œ‘Ë— 1MÈœHC+^@À ¼ÐE¯Gñlx–î ϸwе­¢ö³ôû ó$ë踛ŠOÍá½5)vÁiM™îF–²’2=Ý:B¸\­ºÙÃfmEîEûÜç¸Ì«·9÷£MøîDS]Œñ"Pª…ŒåI¨4$Û뺱€Û\ ;ÙwldàŒ{ æSy$ÿ&[ðM'Ctéö9¢óúœ‡&ŽUÈ¥wÄ 8õê Zœkâ ñµx~%Îã€2„¯àd.vL&ÜíÊfÛííòtÅs”F`¦Ø‚0Fð¢LV }áêéËQ6#mOæ±±^÷.×¼m©µX¢üOþ¹Ñ?SR~›´tšx…<&³¥áÂPV1ýZLšVÁE»K¨jÙ–†t®••çkf\ªfrï~`X??2ãâø9wé¡:Œ÷Æ2ñr±Scº@,Q[ˆ§eÁ9ز²aîÖ¯té¾VЭåVJÿ‰?Áñw -àªóB{¦{ç4Dï`‰)±6™šÎâ É”ÃåË4/cÞ+_÷ˆÎp÷ã¸bYíÇ„/S²íj˜~â¸ìâ}ã Ä °Ðbǘ½`ÆaûI$kæÏ^$^tyõIÂÐÛf„V5×ÜJMÉip}„Ôûséß´þ¢aœ½/÷ —§­¥#P#ؽvgŒ™!?%iÒi/U³h_‰ãð8ÂBë»Yx›y’€iûØvúýi×ÃnÜÚ³Dñæo¾ 9Й\Wɵ#;ÞñûF4ÿS­ò§¥‹{±/-ã\Óoi¥À·üÇ¿¯òGÛ†l ˹妓[ÆÅJkb;e¢É ™“q%ñµÛë{Eþ˜h™TS9ïÆOûlÀ=€ÛÆ󩃩‚Ïs{ãx @\Èådí¹Ö¦Ä©eWÁ¬±éäëe4ówTÏs>¡!âÚ¶ž[­¼ÿåo›ý`= a}ì¾R88{ö1˜Í܆\3&NŒI'g¿púJXVèpö•H¹ž±W4¡{¯ñ1\z•1–eÕpŸ!~¹¸¶ö¼?³#0/ÛᕚVP†ø`¨•9”ÖU!Æ\"]Ñú#¸7dq¥°oMù9§”ŒÏ19úµL;ÛÌÁôYÌÑí ˜¸ØyŽdã”/A-p¶—oíÝP¸ 7R/ç¸áÒhGŸcè§1[yŽ1x©]Û¶?oÏÊÓÉ×XMgIL¦6¶ˆº×^Aä?ôFÄfZdòˆÎ®^qæJIÿûÿ„Ý?Ú~Æ­eq/mäѧé’1M‡Š“¡¸•î¶c®ÁðWvos̰sÎÑ&‚gq{ÚëS¤ÞÜý ÀmãC«–^æQz´0µc$X±Û1òj.WSûK7t‡» ç鿾ÏÿGIX¥UŠ3…êÓˆzsÕã VÃñf;`Ló_sÌ›ˆ¡ Ûme<‹÷wÎYy˜~“ÑahoÞ<g*-Ãôeƒ=\vm¬6'¶xÎà•5x=¢‹Xþ3ͧPÞœm­Ÿ%[QIåÿlo˜3K83쩞²Œ™ ÓÐj$ó`F^b•¶|YÏÀ´Î®z÷>¯Æ€Öf«Ðms‡íâ6f×Ô½×N¬h:ÚøÝ‚. ù.,j:^)°Êþ-]߆æ»*±ºÉpT!ëãDN„7ý’0¹IÆz¸å~Z6×y¥scV+L= VžÛ‰M;; ËîW°uEÝ\ˆÐ­oõ©Bxe:*¿¡åöüäûŽ÷d4—‡U@4«Wi‹jõšU7ÏK¤^º»*Ê 9H§ô_û¾ÙßÝ7dZáös†³{硺¥Ð5ªà“acŠk`ƒúº ŽWŽ¿ ádt\ˆóe;òžéûØy²S,o©m½—Ö*Ùw‡q+¹ÕÖyõyßæÜž(·v’)Ðh*tOË:Ömh Ä6é¶œKJœÐµ­…ÙÿàŸÑùk¼ÉSibÀ¾Pî<­®L+ݨæUЇ` Úõ&qFQo±éøê}9›Ç·Ú¶ÙI²¦ÆTzCyD`Ðz†óhh àBHP;$ïv^!™SÉvu¾é2ó.ó ØÝ_$^gHé¿ÿu¤?u°¶‡n>5‚¦ÉxåÇ®‹ 8£5†š û’_'t®Áw¬‹ˆÅúun›Ôê†ì€î Éö2š’ìI÷š¬¹zòÞÄr„€%¹`h–ub:E¿Ø‡ÆÐºœw¼›Á™³ž$\N²>=ÌÇ9~o±Ã¸èDKޤ™ÒSwÌÙ={¿1Áí¦]Ï Þk¸œJÙj)û”Ÿ¬û–àZ ¸f‰ûy+²íIÈ™VFÏPf(Æ·pæÔÚòe°|cñe|zÉžǶqr§fàY|—}òŸë•^t¾s¶wššo§Y3u§>9[ZPƒùЉGã QO“vj™Îšv@5 \©gœ[LÕ$:E6­SˆqÆ`«œQW{‚uó Æ¾¡Ú θªfŽÜbâýq†”Nð•Ñ?f]Õ´æEö89ŸóÒ°žFë‹f6dK5òò쇥X7Bï^¿\ó˜ÐÍ­«¶fÜm;&%)ŽsêhÈ%ñf§õªtâð—AoUÕ•¼4i^¶7.¾zÿ¨U3,T.eÕU–h°M!£Ô£|ëü|E̱8û¸|••Èj3³¢!Yx·{ÔS²%†3Î3o}/‡Õ¼aÍÆ]ž+PSjgЬQ¸jy”ʉ‡Si'ø†£±®ŠYS”MÕ]€ÒìB¾TyÀy}.Ê¢ÖÀ9-Å%¬a›eöûgËYv(6Œ»I8µaÝElríPHÖºyÆ̼;~ê¸6SÕM•‘²Å[u-TŒŒÅô›Fí<ƒE.–]êΕÑuÔ9 A•^U€‹<žY‰ÑÆhä‚€‹seºðêÚeà3ýøÿMùJvÅHø8I:§lÝRGnǤvï;Ãê\èÚÛ0Œ·+o¼ CsÁ½[nÕ¹9¹Ð­YK¦%¬[eâ¼I<­pU’|ÇÞHÆOÛlÏ™0ù—ÄK@WºÞ[p³Ü¼aÄg/Àèqñ¢dSé~œW*Î@Î ®°­S«ÒüÌk'݈¯¹’ƒ©žœäà9 æ– ߊQ9•˜[×쓵šÃÀP]Ž#R{6žYNÃ?Šød]Ìí†å÷ÜgLœöM…à[À*\îÅ÷.û¾ð’QÀ¡—ѺAáéXC̳öY«c€£6b0R›°¨Ö̀Άb±!Ü[Ü«ÒçZ20º%VåÔy` hÛ|–U–Øê †sUÓ¿ÛsÔm’ëÅšJi—Ñs1.KpZÇJ[2æ I ßAcPèÎÜÇ,Æî _ì…ê>¡ëĆˆ.Õ­oâ‰ò©iäÔZ©pÀ²}”aL='ßh'GkeÙm]´zÔ¾mh0®¨µ³h³­âs.Rf̹rØ=t FÕ.ݤ¯ë!¸öéá;ëpX°GësÄL4i°™kv9Û„nXÖÇÙ”^·sé=‘ÎKáy ê ÎP0¯9ʨƩIÏÜ´nÒÕ³ŒÎh]páZн±Ù/óðؾý½\쉢³øÕ¿B6—•u1.ˆÖµ¹Òb©ïÃÊyÛø¡úP$gã^fÁ–`iÕc†|X’¹»$¸T´ ëÆ- &î/uˆÖÕñsEtªqM\_ÖÌ=ƒ×û•tÿ'úñ==-¸/í|Š$¤ ǹà×Üð°dë¨:8#LvÆHgó,˜ó‹oQó!ùÈ[:ô¤×:p-ªƒB\ULÙ¸z­PÈ*»N>˜q2d-ËŒË)¼›âjñ"F¥ž#Ëœ|þû{g›5 Q}´Mq‡½ÿ9é×3Æ BÁÏlG Yñ†<ÚÙò`ŒÖ¼GÀ[X! â‡WH%ë2bGx¤kªÇWNY#¬ ¸¹é‚ôœÁ¬3``{¢ï^'ŽB<4¤e´Îà ;xºx¾Ì=XL_ÌÓÒàñR'Ôõ¯#POãÔ) ´a,Ñ?$^+Bçïø)¦ Íç°‚ü§GÆ{rï‚þøkCoä2½ÜU}2s¦Eš S÷€†úÅ–Dâ !ˆbO—A赆gŽëºT÷oÜ”ê•>ët>DLMvr¯ÈUka&Ëíïï˜]Ók¶q/‚ p6¬ðïvcA?’+l“N DZ¦Öc3~é`y~ÉÀ_óˆ45. õuÑ}ßœü€ñE¶R-+¶nź‹ô9:{ßšrN ­¨‚xë" çr¯ú•l§¸½âSI£'·50s¨‘%¸öXy-Mð~ú'G>øý{§‰2¼»µŒÀ{ë¯RÑs,ƒyž‡êÆ”\áïpŸ})cË匽2œØ8™”Ž×+×Ê•ÅÝ©ý¸ð~šÿKç?ó-⺠={P Ì@GÙý¾/Þ¶˜»Yv't·ð4K=3¥%N 3;ÖQœgEKǵM®÷±×rýð#!üöðÇj¸…oÐÓúѽàË`¸ö„°ZKt°{ùmn>4öP >¤|Êç¬T NoÄ#æ—JKðt¡¡}èb}¨ËEó†\äõÃ,h¥kº.P.ЄU¨UŸ³'‡¦d þ9í xy↯˜›ïH¾¼ƒaÎ(~%V 4úöïG‚k#|Szž&„ÏûEfÌ ¸ƒÖÚP³ôtˆoM©ª{FªæX çZäXYžWäÖgðû—š®7¬=¼M"M1¦Qï¡V жù[͛اnÔ·R67Bx7›f\}^[¢¥ù;½³«ý‹±éÀÔM Î3ö í¸˜qŨé5U"Åxמ‡$ž¦GTXê%<¼<ÞËï¿0îÐñÙ¥ïc:ôÞÆ ƒúF0 „š ÖþÕn}²€íU~ÓzòÖlÊ­«Të3ÿðÂ7öÎpÇa†Á8áöþ|Å1ÊB“n§®S±6B;úë“Qkû¶ Hê7¸–¸ÉÞÚ‡»Œ^‘ÎdH²¼„>¶ÓóCdØB_—TA.» ëþëÆ›$2k¡O³ÄN}8É t±Ñ£âËÄX‡•ªL®vgz‡èì:¯M=-½mÿþ]Y3Zž¡‹yÖÃÅÞÎ a™Éû’ DòqØ î4n ¤Z¾"ÆÌÖvÒüß²ÎÁ®Ì(^É×Í£ –Û1Zì%ö´Ty(Ã:P‚±® ²-Üç™§YîRöˆo©3Á¬2óšmrÂ0_Ç÷9i¾ç£rΑ rkhP!ðCæqFî®í@t强äS‡ñ?¹Ïx³§¶Ÿ¯L[›zÄC§Åc„-)dý;ÒðJ„»·x?¥ Û‘Yî.®5“Êû´[œ`WB”±š!‰`s\L½»½=ãkzå``…}ßNtQå^رu£a­µüìÜàÕëß.’VóB#|Æ_°§éË(ge¼^6DHÉs߈p} ×Ò|9IþÍÅnìÄùšb½ ‚ÉÁã.ðÑ쵪kë·½;Ha¢Ê‡ÞÿÌu¦`Ån2™÷p!ºüL 1ó]Ç2uE‰¿„»ªü1Û2Óó×uä¸îå~½"ãÊòy35Tt?ZrQ¹ýðÌq$›Ä焺2ßÌÏ2®—+¹YŠc]s|lЖ°›3Nçi–Ë™OT´E²ŠWIEND®B`‚instagram-feed/admin/assets/img/sbi-icon.png000064400000012055151435171370015023 0ustar00‰PNG  IHDRTT“ ‡–tEXtSoftwareAdobe ImageReadyqÉe<(iTXtXML:com.adobe.xmp EÕe›IDATxÚìœ tõ½Çÿÿyì#ÙÍfb O’­DÒT0<¼UäÒ rbဠB{Ž8×j¡T‹xDzÛxí¹ÂÍ9,·*Uc-•”‡è#ïML4! ÙD²Énö=3ÿþÿóÊìfŸq åšqÎ:;;;;Ÿÿïñÿþ~3"„À·u¡À·x†††††††ÿÿ»0‰~!pÎî®éô7º¼õnþç®ó ñ bè~?à·x[É+T^‘ú‘ø)4Ti›Õ±ìV—­3ŽM1Ž5ZÊÌéCã”·þ×zªë»ßh ?ŒˆA‹ÌÒJ+FÝÐÂmKðšÒFö³@Wðð¨‚5¹ÖÙÖ› ï;Ùv}ãéžSíˆÄˆ„*Áã·3=€?”yà@šaÒú…ö+xI¦igÊÒ&›o¼ýéc;Ï(x”†_¢¥EŸW‡ Äþ(8B]`€ýµÈoyqcÒ†ïŒÛV2tðB¯·sÑŸG[1­@Ô­­q~¨9†Ø? ¿!4Ôðùy€rJGL9YÆZ™¡€·Í{Ãù×Uulò–ÆÔ)·±c-lqš®È ÅŒNd€ð%“Wí‘úCÚ‘Õ|ÊÛ¹€=àmòº¹î“vûç½>À…ø¿@~—ðßsé®ß÷Ò1Û†c@,­#Ÿ˜¶b¼nFÎ M®³Ž/·6·¾Õî#sG¿/ð–®.)ÝõÏ]ºvuÂoƒ}›2Þ9*çпQiC6 {¿ô^^U×Rs-$þçj­HÎFät-~Êñˆ7øÌÕrNT%9^ E†ÉG¿W²¸’ˆ"áD“Ö­­¿Q û¨Éÿ÷N ,ñã5¥<;c×|Êb¸)"ìŽ?N9>Kä—VáZÝ×öû ÷ì?-2cxN\…ÛþT94œ_W·ÖR'ŽÀƒŸR':«ÛÔýOÔV4¾lÿ–×Zo|ßÎBÙÛñŠ2žœLç[†€üzuë…'Îô¢|AvÔsö‰3öªÿÛX¢1>¸úÇŽäÃóŸ|!tº$Ÿ—¢ÝôãiCcöÆ'®¨¶¥Ä o~¶Qý4sN%““c°ÄîI†çÁsŸ·Pr´“WÚl KG Qn.2»¨òw^îR?µTdè£1>rœq$¹ªZ¿ÆØ”"BŒ³Gã}Z| .çûvpÀ€Y»%e†Õ²$ÇP‘9ð+,`DÛ (k˜ÓµdWdµÖ´ ’”ÀÝàI2<×Šó¼ ˆ_õ3BßQu¾sóCUû”8=—]öËm»þ®æüÝãÓžÈ×~wÌŽÒ+Ïœ£ú%-½»X{@êX#¬!6—¤¤ç w’ᑳÒääxTzÓ›ÿdk[Å_½œS¤¥• ]ðµû€³aõ§úÕ—ówßnQ† ëéÑLӸꊸp_°c̈UyÚ/ê2Xéª$µèô'¾·0<Å#AÌ+L^¼ÇÖ:6’Œ¬èyåë”å= WÃêÚÂ&OÖ¶qÒNëʼò•y5Oq ”¿KÎ纔tË;ú Ó4èÃå„@YŒñœÂ¹íÃÎM'!Õβ$AÅR ˆÿÿÕö:¾Û?r×qIq%E ¤zJJ‹â¡N¾\ÊGƒ8T]ßöã??Ž¥‡ û˜Á´ ?µ"J7Š¥[ ï}[ï_:p:Ð^8¨«»è jÿH‹±Ø¢’Ô{ ‚‡P€4h:Î/óW{º6…²! ІÌÿü¾ùÉÉ”E¯=زþö\zRq¾zB5fÐ¥:µ<ÎâJgG6“%¢MS 9OÛö†è*’#JÙNvÌSÂfÄû8yºŠ¨gZ»='[ 2vøR2·Þ—P „íŸóìí-/œ—@Ä4ëõÖ\7Dˆ|<ÃáÚ.ûá\Ëý™)eiL:›ìlÏð8å‘|̈ý×ÈÃë?rž/êmb6ÅP99Ñß¶üÇwÙê”è%Ú®w{$xSEæ”îytR˜¡Ù@Žt(•vdDøëEΉ†1=R4˜Kg3–tîkPÝÇýáõh΂É/ã?zGø¢V¸vZ>‰¹˜²¨1åô´…`¬oâö|P×5²å…^—®Ò$Çî-ÜØË­`Ÿ H7à­sFüÅ}›}ûŸGj9Ô¼ÖžoVQ¹:fr%³l È.L<áÑØ‘y@áÙž"¢å±¦HŸ‡—²]BU@°1Y¨$<œÃy¬z.Mç½ËôÞê0ä¡Ôæ÷Þë®G*qxñ‡2¿mÖ¡Õ¹]Êöƒ›âìEÎä Ÿåy§Ê½r¦J¬;Pý</`kNhªã5ü|‘CLÍôóÇ ËŒÀWµk„7XÀ†¸º·jýàÎŒÇËûÔ¸èü¡nOV•F„g 2Å‘ùÝïŸdçL§*õHî(OÕÚPÚÖW®§scÌm쬇Øòéaø]=ñ50!18PìÅ™™Ò"~ÿ'Í(qã ÍûÁz i“§NUº7¶f­Í©’Iú_5`¼ˆ¹#—eº7¬ý¹×ÖÅO³óªý£À³³Ë NPùQ‹ÓÿzM¢ðîCMb× ©· L‹ dx*¨ÈÏâÎþò aÕóaÉñЀÔtÔ×fV>¼\<‡å‰° P."Ou0'Ëðàw ¿Aœh¡·êˆÐöufoé½þì'j³¯`ÒÏ%…zH†CMò.}θõÝÐmùTšÛøöð7s{7Å“í9HîÍÅŠ~õ)ë‹3"±?™ [œöE/ÇÉ/ôzÛÊ÷ù{슶'ü£ö|_vøêPór é¿È© °U~ã¦=°x¢ÒŒ‰V± gü`x«Â1;Åÿ:Qåã ?ë¨ãHvdxî3›}ÑΘüüÕ^Ûœ½¾®nÐ_Õ zƒ)e9¹ýÊýþ¹°¡ô>»P¿«S79Ž8g¹*¢ýèGoÇŠy‹™ÀÈnˆY:¥üb•c„4Â% æÇÎÏ×Úºò~æ«:vÃëz¹¦­àUOm¥ÉsxÍ=2O6òÙ7#4‚'­Ôtæ©=8 ú÷¸¢ÝƼWSÛã<Ç!šdýþNd‰2n´ùé%ާ^'wÐH ŒsNLÏú·ÑúwSV•ëJó©Ü¢"ôú.v8þçÀ—CRZ|ø5ûÅ{u÷’Ö%ú`O$=ƒšÎè¢UhŒfyÁ!º† à±åy(óÛÚ(‹Q,{Ðìt9_ØOFKG!$ÊžqW×ö³šÇXÈcL"6'ö¶¥/ÈÚ:˼QžŸ¹SÂ8gÐ-yÞ9#†ºbÜÀBMç`x€ç-œó QˆŽ·CÊþdIš9ÕñÌë@*† xÅv/wÝ(ù±ÈÌj«“Î~íþ”5w÷'¶3‡´Ììëèi?fÆ•D;¾Œq@ãYzΊȖÏɇ­Wð"^Ôݶ¶xkÃeZ+îr,ÝÌ]ê".áùÏËüŒ”T„­{ã´<ëŽùìtM9xñ˜š®IW3Y¼×°…*ùþþÌ!!\ÚG}ö¨Í Îönr©4K& Î« ”(9Y–¿ý–?xÜûÖqÏáÏ‘û¼æ+F‚Ç£²pŒé‘)ú%åQ‚–;ð";uÎj ÐgR ×╺pœ?µŸLrýmöèð#óí%uíC-‰¶Êè3SÌLiïâO_á/·ø/]å»=¼ÝGÞÆæ ÇèæM ò"4ªlý~¸R~:…ÝùIbüª%Š'âUˆz·ÿ+ö)Ô×>;Ol]¹Hlò¬ÐpŽƒY°0 ñ ô Iý/jƒ&§+õüšlïêãìL„K=Â;¿Q[ ДUÞÞq·Ô…С:ÛÁ…Óàæ-ñ”¥±÷möüÈÔ1Y£Â•‚4«ÌýŸv£o jزóv.Mà,¶f~×úPl udQTx¼Ü³(q}è½WâÏùßÞf®Â•<»ùpü'ñ¬í{³*¬È‡Åe±àg?¢Ü—ùÁ–•ÀåxjTУ¥lùô”WŽÑk~PÎÓ/ùeÄL4 w €? ”ý@ËpEµ{ËP˜^IHXÞ×U±/§¼ â¹ó¾ðûÓ@ˆ¶áoõVþœd{-ÿŸw‚wÝhÿ§FÊÏ¡è}.\;ȳL˜ÒÌ’gµ²‡b6Šñï?Ül“Š÷µOѲøÀZ0{1¸ó®³å„äY9IêϨ±G–@“@•L qR aݺl³ôô‡ƒ´¼sq˜_ŒøÇÏÝΑ»ÒÊS¿éoDæjl3¤ZÀmùÀd"RM§¨X(·¤?RûÔòÊá ᪦™¹“pÕå±£…tå:zÍo´¹Ï…xF ru†Ÿ‘ÇÅÕƒ³½6çaŸ7üŸ}`îˆ|ëkÃ~ðêÁ©7åV:->ò |dÃÙŽ>ëjk–®ˆA‚ ¸žÃÛ”¸‡FxàW¼‡_—íd&PÈ÷Ѐ£…°Ë÷¾BdYˆ~gš‚¸ß?'•ÀøÕ½v–nþrév ;c9iÝ©3–‡Íš‘ŸpH±€gþ–m“ã_zêUÌÿöÚ`àú—HÛ‡´½8éÁ±DZ€rXlrˆÇ ²M‰_Ññ;¿¸Òc--WH¡{`]Sã{´„R¯;ÞÏÌ{<¤æ‰£9pyxøß9ÿkù±þƒ±çå‡Ð¯ò(Èð ?¹ù#=ð@ E½<´ÂÏþ¾ÿz—\ÍÜÇâ‡÷ýnuXQäyñQïKó òˆv‡H9Žg[pToyì8þåI`¶jíáûË+Eš_¤ù©òS~ z¯Ø‰!ú#øÞ©7öü°¹ºßíS­êÍœ(÷°ðGRøà¬Éì þ¿«ë_ê>MuÀÖ :Ú@Ÿ8œÈáãœz{QC o1þ)ÂiÒ‘#ç1Úñ1fhI#¹§Ižf G¦>6šS†sVi‘"߸éwpÎ |Œ»rt<½/ø½þÒ©dÕŽŸÒ¥ “2ãeê«òVE þ°Þ°Ò8zGäŸñoiqާ´ˆ_<’çÂ7×f=D¤qôÿ” žÌÃó÷õx_º?¶Íç?öÖÝ7Žù¡¬ç÷mñV*XÌļWOn鯲ù-/i8áñø¹T²Ë_Œ¿‚·Æ?dk¼öïc‡"Ulô¸Ä°›íoÊ’]ÈL_„á1§~ûÈöp‘n$•]Œ°(ÆfP}Î[¾é¼÷¿%‰0gœºO´ƒŸVn váã·™qDù‘;ð‘3I¸ˆ¾•þa0[³ðÁ¬çä·8|ÒÕø/ÃðÃðÃðß®å `YðÅ÷®ãhIEND®B`‚instagram-feed/admin/assets/css/settings.css000064400000126435151435171370015210 0ustar00/* * Settings CSS TABLE OF CONTENTS * * 1.0 - Global * 2.0 - SBI CSS Framework * 2.1 - Utility CSS * 2.2 - Notification Element * 3.0 - Header * 4.0 - Content * 4.1 - Tab Styles * 4.2 - Tab Boxes * 5.0 - Footer * 6.0 - Sticky Widget * 7.0 - Responsiveness */ /*** 1.0 - Global ***/ .clearfix { display: inline-block; } /* start commented backslash hack \*/ * html .clearfix { height: 1%; } .clearfix { display: block; } #sbi-settings { -webkit-font-smoothing: antialiased; font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; } #wpcontent { padding-left: 0px; } .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } .checkmark { width: 21px; height: 22px; border-radius: 50%; display: block; stroke-width: 2; stroke: #59AB46; stroke-miterlimit: 10; stroke-dashoffset: 0; } .sbi-fb-full-wrapper{ padding: 0 53px; padding-top: 82px; } .sbi-fb-fs { width: 100%; position: relative; float: left; box-sizing: border-box; } #adminmenu a[href="admin.php?page=sbi-support"] { display: none; } /*** 2.0 - SBI CSS Framework ***/ .d-flex { display: flex; } .justify-between { justify-content: space-between; } .items-center{ align-items: center; } /* SBI Form Fields */ .sb-form-field { display: block; position: relative; } .sb-form-field .help-text { font-size: 13px; line-height: 22px; color: #434960; font-weight: 400; word-spacing: 0.3px; max-width: 640px; } .sb-form-field .help-text-green { color: #59AB46; } .sb-form-field .help-text a { color: inherit; font-weight: 500; } /* input field styles */ .sb-form-field .sbi-form-field { background: #FFFFFF; border: 1px solid #D0D1D7; box-sizing: border-box; border-radius: 1px; height: 38px; padding: 8px; } .sb-form-field .sbi-form-field:focus { outline: none; box-shadow: none; } .sb-form-field .field-icon { position: absolute; right: 8px; top: 10px; font-size: 20px; } /* sbi-checkbox styles */ .sbi-checkbox { align-items: center; border-radius: 100px; display: flex; font-weight: 700; margin-bottom: 15px; } .sbi-checkbox input[type=checkbox] { clip: rect(0 0 0 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; } .toggle-track { width: 36px; height: 20px; position: relative; background: #9e9e9e; border-radius: 31px; } .toggle-indicator { width: 16px; height: 16px; background-color: #fff; border-radius: 100px; top: 2px; position: absolute; left: 2px; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25); transition: all .3s cubic-bezier(0.23, 1, 0.320, 1); } .sbi-checkbox input[type=checkbox]:checked + .toggle-track .toggle-indicator { left: 18px; } .sbi-checkbox input[type=checkbox]:checked + .toggle-track { background: #0096CC; } .sbi-error-text { color: #D72C2C; } .sbi-error-text a { color: inherit; } .sbi-fb-cp-clpboard{ width: 0px; height: 0px; position: absolute; left: -100000px; } /* sbi-select */ .sb-form-field .sbi-select { min-width: 235px; border: 1px solid #D0D1D7; padding: 8px 35px 8px 15px; height: 50px; font-size: 16px; color: #141B38; -webkit-appearance: none; appearance: none; background: #fff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABSSURBVHgBfc4hCkAhDAbgjV3slQcvvHuYDWY1G8zewyIWb6YuCCLqD4Pt5wtD54NBQA2XVKiWcorl/X7s+DkhJYUhPk54IN5plCue0Tb8M8/aNx/uIpRVqbbFAAAAAElFTkSuQmCC') no-repeat right 15px top 55%; box-sizing: border-box; } .sb-form-field .sbi-select.size-md { width: 422px; } .sb-form-field .sbi-select.size-sm { width: 210px; min-width: 210px; } .sb-form-field .sbi-select.size-xs { min-width: 100px; width: 100px; } .sb-form-field .sbi-textarea { width: 100%; min-height: 100px; padding: 12px; border: 1px solid #D0D1D7; font-size: 16px; } .sb-form-field .sbi-textarea::placeholder { color: #8C8F9A; } .sb-form-field .sbi-textarea:focus { outline: none; box-shadow: none; border-color: #9c9ca0; } /* SBI Buttons */ .sbi-btn { display: flex; align-items: center; vertical-align: middle; background: #F3F4F5; border: 1px solid #DCDDE1; box-sizing: border-box; border-radius: 2px; padding: 7px 20px; font-weight: 600; font-size: 14px; line-height: 22px; color: #141B38; letter-spacing: 0.2px; cursor: pointer; transition: all 0.15s ease-in-out; } .sbi-btn:hover { background: #FFFFFF; border: 1px solid #D0D1D7; } .sbi-btn:focus, .sbi-btn:active { background: #E8E8EB; border: 1px solid #D0D1D7; } .sbi-btn .sb-btn-icon { margin-right: 10px; max-width: 15px; } .sbi-btn.sb-btn-lg { height: 50px; font-size: 16px; padding: 7px 25px; } .sbi-btn.sb-btn-blue { background-color: #0068A0; color: #fff; border-color: #096292; } .sbi-btn span { line-height: 1; margin-right: 5px; } .sb-btn-orange { background: #FE544F; color: #fff; font-style: normal; font-weight: 600; font-size: 14px; line-height: 160%; } .sb-tabs-container .sb-tabs .sb-btn-orange { margin-top: -20px; } .sbi-btn svg.checkmark { stroke: #fff; transform: translate(-7px, -3px); } .input-hidden { height: 0px; width: 0px; overflow: hidden; } /*** 2.1 - SBI Utility CSS ***/ .mr-3 { margin-right: 3px; } .mr-4 { margin-right: 4px; } .mb-6 { margin-bottom: 6px; } .mb-10 { margin-bottom: 10px; } .mb-15 { margin-bottom: 15px; } .mb-20 { margin-bottom: 20px; } .mb-30 { margin-bottom: 30px; } .mb-40 { margin-bottom: 40px; } .mb-50 { margin-bottom: 50px; } .ml-10 { margin-left: 15px; } /*** 2.1 Notification Element ***/ .sb-notification-ctn{ position: fixed; bottom: -100px; left: 200px; z-index: 99999; background: #fff; display: flex; justify-content: center; align-items: center; border-left: 3px solid #fff; line-height: 1em; padding: 10px 20px; padding-left: 0px; border-radius: 4px; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); } .sb-notification-ctn[data-active="hidden"]{ -webkit-animation: sbi-notification-hide .5s forwards linear; animation: sbi-notification-hide .5s forwards linear; } .sb-notification-ctn[data-active="shown"]{ -webkit-animation: sbi-notification-show .5s forwards linear; animation: sbi-notification-show .5s forwards linear; } @-webkit-keyframes sbi-notification-show { 0%{bottom: -100px;} 50%{bottom: 70px;} 70%{bottom: 60px;} 85%{bottom: 65px;} 100%{bottom: 50px;}} @keyframes sbi-notification-show { 0%{bottom: -100px;} 50%{bottom: 70px;} 70%{bottom: 60px;} 85%{bottom: 65px;} 100%{bottom: 50px;}} @-webkit-keyframes sbi-notification-hide {0%{bottom: 50px;}55%{bottom: 65px;}70%{bottom: 60px;}85%{bottom: 70px;}100%{bottom: -100px;}} @keyframes sbi-notification-hide {0%{bottom: 50px;}55%{bottom: 65px;}70%{bottom: 60px;}85%{bottom: 70px;}100%{bottom: -100px;}} .sb-notification-ctn[data-type="success"]{ border-color: #59AB46; } .sb-notification-ctn[data-type="error"]{ border-color: #D72C2C; } .sb-notification-ctn[data-type="message"]{ border-color: #141B38; } .sb-notification-icon{ width: 25px; height: 25px; display: flex; justify-content: center; align-items: center; margin-left: 10px; margin-right: 15px; } .sb-notification-icon svg{ width: 22px; height: 22px; float: left; fill: currentColor; } .sb-notification-ctn[data-type="success"] .sb-notification-icon{ color: #59AB46; } .sb-notification-ctn[data-type="error"] .sb-notification-icon{ color: #D72C2C; } .sb-notification-ctn[data-type="message"] .sb-notification-icon{ color: #141B38; } .sb-notification-ctn span{ font-size: 14px; color: #141B38; font-weight:500; } /*** 3.0 - Header ***/ .sbi-fb-create-ctn{ margin-top: 90px; } .sbi-fb-header{ height: 64px; position: absolute; display: flex; flex-direction: row; justify-content: space-between; align-items: center; background: #fff; padding: 0px 52px; z-index: 2; } .sbi-fb-header-left { display: flex; } .sbi-fb-header-left .sb-social-wall-link-wrap { margin-left: 30px; } .sbi-fb-hd-logo{ display: flex; vertical-align: middle; align-items: center; gap: 5px; } .sbi-fb-hd-logo .sb-logo-letters-wrap { margin-bottom: 4px; } .sbi-fb-hd-logo .breadcrumb-title{ font-size: 14px; font-weight: 400; line-height: 22px; letter-spacing: 0em; margin-left: 4px; } .sbi-fb-hd-logo .separator{ margin: 0 5px 0 10px; } .sbi-fb-hd-btn{ height: 38px; cursor: pointer; display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 0px 15px 0px 16px; font-weight: 600; font-size:14px; color: #353A41; background: #F3F4F5; border-radius: 2px; border: 1px solid #DCDDE1; position: relative; text-decoration: none; transition: all 0.3s ease; } .sbi-fb-hd-btn:hover { color: inherit; background-color: #fff; } .sbi-fb-hd-btn i{ margin: 0px 5px; } .sbi-fb-hd-btn[data-icon="left"]{ padding-right: 20px!important; } .sbi-fb-full-wrapper .section-header { margin-top: 33px; } .sbi-fb-full-wrapper .section-header h1 { font-size: 32px; line-height: 40px; } /*** 4.0 - Content ***/ /*** 4.1 - Tab Styles ***/ .sb-tabs-container { position: relative; width: 100%; margin-top: 28px; } .sb-tabs-container .sb-tab-content .sb-tab-content-inner { width: 100%; margin-top: 20px; height: auto; padding-bottom: 30px; } .sb-tabs-container .sbi-save-button { display: flex; justify-content: flex-end; margin-top: 30px; } .sb-tabs-container .sb-tabs { position: relative; display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; } .sb-tabs-container .sb-tabs:after { position: absolute; content: ''; width: 100%; height: 1px; background-color: #DCDDE1; bottom: 0px; left: 0px; z-index: -1; } .sb-tabs-container .sb-tabs .tab { position: relative; padding: 9px 25px 15px 25px; display: inline-block; font-weight: 500; font-size: 16px; line-height: 160%; color: #8C8F9A; text-decoration: none; cursor: pointer; -webkit-transition: linear 0.2s; -ms-transition: linear 0.2s; transition: linear 0.2s; } .sb-tabs-container .sb-tabs .tab:not(:last-child) { margin-right: 20px; } .sb-tabs-container .sb-tabs .tab.active { color: #0068A0; } .sb-tabs-container .sb-tabs .tab-indicator { position: absolute; bottom: 0px; left: 0px; background-color: #0068A0; width: 200px; height: 2px; transition: all 0.3s cubic-bezier(0.22, 0.51, 0.53, 0.88); } .slide-fade-enter-active { transition: all 0.3s ease; position: absolute; } .slide-fade-leave-active { position: absolute; transition: all 0.3s cubic-bezier(1, 0.5, 0.8, 1); } .slide-fade-enter, .slide-fade-leave-to { transform: translateX(10px); opacity: 0; } /*** 4.2 - Tab Boxes ***/ .sb-tab-content{ width: 100%; height: auto; } .sb-tab-content .sb-tab-box { background-color: #fff; padding: 24px; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); margin-bottom: 12px; } .sb-tab-content .sb-tab-box-small { padding: 13px 24px; } .sb-tab-content .sb-tab-header { display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgb(232, 232, 235); padding: 8px 30px 10px 24px; background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); } .sb-tab-content .sb-tab-box h3, #sbi-settings .sb-tab-content .sb-tab-box h3, #sbi-settings .sb-tab-content .sb-tab-header h3 { margin: 0px 0px 5px; font-size: 18px; line-height: 140%; color: #141B38; display: flex; } .sbi-btn.optimize-image-btn { box-shadow: rgba(60, 66, 87, 0.05) 0px 2px 5px, rgba(0, 0, 0, 0.05) 0px 1px 1px, rgba(0, 0, 0, 0.12) 0px -1px 1px inset; padding: 8px 12px; } .sb-form-field.image-format-field { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; } .sb-form-field.image-format-field .sbi-label { font-weight: 600; } .sb-tab-content .sb-tab-box h3 .sb-tooltip-info { transform: translate(10px, 2px); cursor: pointer; } .sb-tab-content .sb-tab-box p { font-size: 14px; line-height: 160%; color: #8C8F9A; margin: 0px; } .sb-tab-content .sb-tab-box .tab-label { max-width: 270px; min-width: 270px; padding-right: 55px; box-sizing: border-box; float: left; position: relative; } .sb-tab-content .sb-tab-box .tab-label.tab-label-full { min-width: 100%; max-width: 100%; padding-right: 0; float: initial; } .sb-tab-content .sb-tab-box .tab-label .sb-help-text { font-size: 14px; line-height: 160%; color: #8C8F9A; } .sb-tab-content .license-status { font-size: 14px; line-height: 160%; color: #141B38; margin-bottom: 8px; display: inline-block; } .sbi-tab-field-inner-wrap .upgrade-info{ border-bottom: 1px solid #DCDDE1; margin-bottom: 24px; padding-bottom: 24px; } .dev-site-license-field .upgrade-info{ border-bottom: 0px solid #DCDDE1; padding-bottom: 0px; } .sb-tab-box.sb-license-box.license-type-free .license-status { font-style: italic; } .dev-site-license-field .sbi-upgrade-license-btn { text-decoration: none; transform: none !important; height: 38px; padding: 4px 13px; width: 165px; box-sizing: border-box; border: none; } .dev-site-license-field .sbi-upgrade-license-btn span { height: 20px; margin-right: 9px; } .sb-tab-content .sb-tab-box .sbi-tab-form-field{ width: calc(100% - 270px); float: left; flex-wrap: wrap; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .sbi-tab-field-inner-wrap { width: 100%; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .sbi-tab-field-inner-wrap:not(:last-child) { margin-bottom: 20px; } .sb-tab-box.sb-license-box.license-type-free .sbi-tab-form-field { flex-basis: 58%; flex-wrap: wrap; } .sb-tab-box.sb-manage-sources-box .sbi-tab-form-field { max-width: 1200px; } .sb-tab-box.sb-custom-css-box .sbi-tab-form-field, .sb-tab-box.sb-custom-js-box .sbi-tab-form-field { max-width: 840px; } @media (max-width: 1023px) { .sb-tab-content .sb-tab-box .tab-label { width: 100%; max-width: 100%; padding-right: 0; float: initial; margin-bottom: 20px; } .sb-tab-content .sb-tab-box .sbi-tab-form-field{ width: 100%; float: intial; } } .sb-tab-box.sb-license-box.license-type-free .sbi-tab-form-field .upgrade-info { width: 100%; border-bottom: 1px solid #DCDDE1; padding-bottom: 25px; margin-bottom: 25px; } .sb-tab-box.sb-license-box.license-type-free .field-left-content, .sb-tab-box.sb-license-box.license-type-free .field-right-content { order: 1; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .sbi-form-field { width: 100%; } .license-valid .sbi-form-field, .license-valid .sbi-form-field:focus { border-color: #59AB46; } .license-invalid .sbi-form-field { border-color: #D72C2C; } .sb-field-error .sbi-form-field, .sb-field-error .sbi-form-field:focus { border-color: #D72C2C; } .license-valid .field-icon { color: #59AB46; } .field-icon.field-icon-error { color: #D72C2C; } .license-valid .sb-form-field .field-icon, .sb-form-field .field-icon.field-icon-error { background: white; } .form-error .sbi-form-field, .license-expired .sbi-form-field { border-color: #ab4646; } .upgrade-info span { font-size: 14px; line-height: 22px; display: inline-block; } .upgrade-info span:last-child { font-style: italic; } .upgrade-info span a { font-weight: 700; color: #0068A0; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .sbi-btn{ transform: translate(10px, 0px); } .sb-tab-content .sb-tab-box.sb-caching-box .sbi-tab-form-field .sbi-btn, .sb-tab-content .sb-tab-box.sb-import-box .sbi-tab-form-field .sbi-btn{ transform: translate(0px); } .sb-tab-content .sb-tab-box.sb-license-box .sbi-tab-form-field .sb-form-field{ margin-bottom: 8px; } .license-valid .sbi-btn.loading svg path { fill: #141B38 } .sb-tab-content .sb-tab-box .sbi-tab-form-field .field-left-content { flex-basis: 73%; max-width: 465px; } .sb-tab-content .sb-tab-box.sb-license-box.license-type-free .sbi-tab-form-field .field-left-content { flex-basis: 73%; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .field-right-content { flex-basis: 20%; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .form-info { font-size: 12px; line-height: 22px; color: #27303F; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .form-info .manage-license a{ text-decoration-line: underline; color: #27303F; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .form-info .test-connection { color: #434960; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .form-info .upgrade a { color: #0068A0; font-weight: 600; margin-left: 8px; text-decoration: none; } .sb-tab-content .sb-tab-box.sb-reset-box-style { margin: 0; border-bottom: 1px solid #E8E8EB; } .sb-tooltip-content { position: absolute; background: #fff; border-radius: 2px; padding: 12px 26px 12px 16px; box-shadow: 1px 2px 4px 0px rgb(0 0 0 / 15%), -2px -1px 9px 0px rgb(0 0 0 / 13%); width: 497px; height: auto; max-height: 284px; bottom: 50px; box-sizing: border-box; right: -45px; z-index: 9999; } .sb-tooltip-content p { color: #141B38; font-size: 14px; line-height: 22px; font-weight: normal; } .sb-tooltip-content:after { width: 12px; height: 12px; content: ''; bottom: -7px; right: calc(50% - 6px); position: absolute; background: #fff; transform: rotate(45deg); box-shadow: 2px 2px 2px rgb(0 0 0 / 14%); } .sb-localization-box .sb-tooltip-content:after { right: calc(50% - 55px); } .sb-tooltip-content.sb-tooltip-bottom { bottom: inherit; top: 45px; box-shadow: -1px -2px 4px 0px rgb(0 0 0 / 15%), 2px 1px 9px 0px rgb(0 0 0 / 13%); } .sb-tooltip-content.sb-tooltip-bottom:after { bottom: inherit; top: -6px; box-shadow: -2px -2px 2px rgb(0 0 0 / 14%); } .sb-tab-content .sb-tab-box .sb-tooltip-content p { color: #141B38; } .sb-tab-content .sb-tab-box .sb-tooltip-content p:not(:last-child) { margin-bottom: 12px; } .sb-tab-content .sb-tab-box .sb-tooltip-content p a { color: #141B38; font-weight: 600; } .sb-gdpr-box .sb-gdpr-active { padding-left: 27px; position: relative; max-width: 560px; box-sizing: border-box; } .sb-gdpr-box .gdpr-help-text-yes { max-width: 560px; } .sb-gdpr-box .sb-gdpr-active .gdpr-active-icon { position: absolute; left: 0px; } .sb-gdpr-box .help-text a { font-weight: 400; } .sb-gdpr-box .sb-text-bold { font-weight: 700; cursor: pointer; } .sb-gdpr-box .sb-gdpr-bold { text-decoration: underline; } .sb-gdpr-info-tooltip { position: absolute; font-size: 14px; line-height: 22px; color: #141B38; background: #FFFFFF; border-radius: 2px; padding: 12px 26px 12px 16px; box-shadow: 1px 2px 4px 0px rgb(0 0 0 / 15%), -2px -1px 9px 0px rgb(0 0 0 / 13%); z-index: 99; width: 561px; bottom: -183px; box-sizing: border-box; } .sb-gdpr-info-tooltip:before { width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 10px solid #fff; content: ''; top: -10px; right: 260px; position: absolute; } .sb-gdpr-info-tooltip .sb-gdpr-info-headline { font-weight: 600; } .sb-gdpr-info-tooltip .sb-gdpr-info-list { margin: 0px; margin-top: 1px; padding-left: 20px; } .sb-gdpr-info-tooltip .sb-gdpr-info-list li { position: relative; margin-bottom: 2px; } .sb-gdpr-info-tooltip .sb-gdpr-info-list li:before { width: 3px; height: 3px; position: absolute; left: -12px; top: 10px; content: ''; background-color: #141B38; border-radius: 10px; } .recheck-license-status svg, .test-connection svg { width: 15px; height: 15px; transform: translate(2px, 3px); } .test-connection i { font-size: 14px; } .recheck-license-status.loading path, .test-connection.loading path { fill: #141B38 } .rrecheck-license-status.success svg, .test-connection.success svg { transform: translate(3px, 6px) } .test-connection i, .recheck-license-status i { font-size: 16px; transform: translate(-2px, 1px); } .recheck-license-status.success path, .test-connection.success path { fill: #59AB46; } .recheck-license-status.success i, .test-connection.success i { color: #59AB46; } .recheck-license-status.error i, .test-connection.error i { color: #D72C2C; } .recheck-license-status { margin-left: 8px; cursor: pointer; } .recheck-license-status i { margin-left: 8px; } .test-connection.error i { color: #D72C2C; } .test-connection a { color: #434960; font-weight: 600; margin-left: 4px; } .test-connection:not(.error):not(.success) { cursor: pointer; } .sbi-btn[disabled="disabled"] { cursor: not-allowed; color: #8C8F9A; background: #F3F4F5; } .sbi-btn[disabled="disabled"]:hover { color: #8C8F9A; } .sbi-btn[disabled="disabled"]:not(.import-btn) .icon path { fill: #8C8F9A; } .import-btn .icon svg:not(.checkmark) path { fill: #141B38; } .import-btn[disabled="disabled"] .icon svg:not(.checkmark) path { fill: #8C8F9A; } .sbi-btn .icon { margin-right: 12px; } .import-btn .icon.loading { transform: translate(-5px, 1px); } .import-btn .icon.success { transform: translate(-4px, 0px); } .import-btn .icon.error { transform: translate(-4px, 0px); } .import-btn .icon.error i { color: #D72C2C; } .import-btn .icon.success svg { stroke: #141B38 } .export-btn { text-decoration: none; } .export-btn:hover { color: inherit; } .sb-tab-box.sb-caching-box .sbi-caching-btn .loading path, .sb-tab-header .optimize-image-btn .loading path, .sb-tab-box.sb-reset-box-style .loading path, .sb-tab-box.sb-dpa-clear-box-style .loading path { fill: rgba(23, 22, 22, .95) } .sb-tab-box.sb-caching-box .sbi-caching-btn .success svg, .sb-tab-header .optimize-image-btn .success svg, .sb-tab-box.sb-reset-box-style .success svg, .sb-tab-box.sb-dpa-clear-box-style .success svg { stroke: rgba(23, 22, 22, .95) } .sb-tab-box.sb-caching-box .sbi-caching-btn .error svg path, .sb-tab-header .optimize-image-btn .error svg path, .sb-tab-box.sb-reset-box-style .error svg path, .sb-tab-box.sb-dpa-clear-box-style .error svg path { fill: #D72C2C; } /* Translation Tab */ .sb-tab-inner-card { margin-top: 30px; } .sbi-table { width: 100%; border: 1px solid #DCDDE1; padding: 0; border-spacing: 0; } .sbi-table thead th, .sbi-table tfoot th { background-color: #F3F4F5; font-size: 14px; line-height: 22px; color: #434960; padding: 10px 20px; font-weight: 400; text-align: left; box-sizing: border-box; border-bottom: 1px solid #DCDDE1; } .sbi-table tfoot th { border: 0; border-top: 1px solid #DCDDE1; } .sbi-table tbody td { padding: 6px 10px 6px 20px; box-sizing: border-box; } .sbi-table-row-header td { font-weight: 600; font-size: 16px !important; line-height: 26px; color: #141B38; box-sizing: border-box; padding: 10px 20px !important; } .sbi-table tbody td { background: #F3F4F5; font-size: 14px; } .sbi-table tbody:nth-child(2n) td { background-color:#fff; } .sbi-table tbody tr:not(.sbi-table-row-header):not(:last-child) td { border-bottom:1px solid #DCDDE1 } .sbi-table tbody tr:last-child td { padding: 6px 10px 6px 20px; } .sbi-table tbody tr td:first-child, .sbi-table tbody tr td:nth-child(2) { width: 25%; } .sbi-table tbody .sbi-input{ background: #FFFFFF; border: 1px solid #D0D1D7; box-sizing: border-box; border-radius: 1px; width: 100%; height: 38px; color: #2c3338; } .sbi-table tbody .sbi-input::placeholder { color: #8C8F9A; } .sbi-table tbody .sbi-input:focus { border: 1px solid #97989c; outline: none; box-shadow: none; } @media (max-width: 767px) { .sb-tabs-container .sb-tabs .tab { padding: 25px 10px; } .sbi-table th, .sbi-table td { display: block; width: 100%; } .sbi-table tbody tr td:first-child, .sbi-table tbody tr td:nth-child(2) { width: 100%; } .sbi-table tbody .sbi-input { height: 30px; min-height: 30px; font-size: 14px; } } .sb-feed-issue-box #sbi-send-report { width: 127px; min-width: 127px; height: 46px; padding: 6px 15px; } .sb-feed-issue-box #report-emails { width: 407px; height: 45px; padding: 8px 15px; font-size: 16px; line-height: 26px; } .sb-feed-issue-box #report-emails::placeholder { color: #8C8F9A; } .sb-feed-issue-box .feed-issues-fields { margin-bottom: 15px; display: flex; } .sb-feed-issue-box .feed-issues-fields * { margin: 0 10px 0 0; font-size: 16px; } .sb-tab-box.sb-optimize-box .sb-form-field, .sb-tab-box.sb-usage-box .sb-form-field, .sb-tab-box.sb-ajax-box .sb-form-field, .sb-tab-box.sb-show-credit-box .sb-form-field, .sb-tab-box.sb-admin-error-box .sb-form-field, .sb-tab-box.sb-fix-text-box .sb-form-field{ max-width: 695px; } .sb-tab-box.sb-feed-issue-box .sb-form-field .help-text { max-width: 670px; } /*To Be Checked*/ .sb-sources-list{ width: 100%; position: relative; display: grid; grid-template-columns: 48% 48%; grid-column-gap: 2%; } .sbi-fb-srcs-item-ins { display: flex; height: 62px; padding: 0 10px; position: relative; } .sb-srcs-item { box-sizing: border-box; position: relative; cursor: auto; display: block; height: 64px; border: 1px solid #E7E7E9; min-height: 60px; overflow: auto; margin-top: 15px; } .sb-srcs-item.expanded { height: auto; } .sb-source-error-wrap { display: flex; justify-content: center; align-items: center; margin-left: 9px; } .sb-source-error-wrap span { font-weight: 600; font-size: 12px; line-height: 160%; color: #D72C2C; margin-left: 5px; } .sb-source-error-wrap a { margin-left: 8px; font-weight: 600; font-size: 12px; line-height: 160%; text-decoration-line: underline; color: #0068A0; } .sb-srcs-new { display: flex; justify-content: center; align-items: center; font-size: 14px; color: #0068A0; background: #F9F9FA; font-weight: 400; transition: all 0.15s ease-in-out; border: 1px solid #E8E8EB; } .sb-srcs-new:hover { cursor: pointer; background: #E2F5FF; } .sb-srcs-new span.add-new-icon { margin-right: 11px; margin-top: 3px; } .sb-srcs-item-avatar{ display: flex; width: 42px; height: inherit; justify-content: center; align-items: center; margin-right: 10px; } .sb-srcs-item-avatar img{ width: 42px; height: 42px; border-radius: 50%; background: #eee; } .sb-srcs-item-inf{ width: 100%; height: inherit; display: flex; justify-content: center; flex-direction: column; } .sb-srcs-item-name{ font-weight: 600; color: #141B38; font-size: 16px; margin-bottom: 1px; padding-right: 60px; max-height: 32px; line-height: 1.1; padding-bottom: 2px; overflow: hidden; } .sb-account-has-error { border: 1px solid #f3c9c9; background: #fff8f8; } .sb-srcs-item-used{ color: #434960; display: flex; align-items: center; font-weight: 400; font-size: 12px; } .sbi-fb-srcs-info-item:first-of-type { align-items: center; } .sbi-fb-srcs-info-item { display: flex; border-top: 1px solid #E7E7E9; box-sizing: border-box; width: 100%; float: left; padding: 8px 10px; } .sbi-fb-srcs-info-item strong { font-size: 14px; width: 50px; } .sbi-fb-srcs-info-item span { font-size: 13px; line-height: 1.5em; color: #434960; font-weight: 400; display: inline-block; word-break: break-all; width: calc(100% - 80px); padding: 0 15px; box-sizing: border-box; } .sbi-fb-srcs-info-icon { width: 26px; height: 26px; display: flex; justify-content: center; align-items: center; cursor: pointer; margin-left: auto; border: 1px solid #D0D1D7; border-radius: 2px; transition: all 0.15s ease-in-out; } .sbi-fb-srcs-info-icon:hover { background: #F3F4F5; } .sbi-fb-srcs-info-icon:focus, .sbi-fb-srcs-info-icon:active { background: #E8E8EB; } .sbi-fb-srcs-info-icon svg { width: 15px; float: left; } .sb-control-src-expand-chevron { width: 7px; height: 7px; border-left: 2px solid currentColor; border-top: 2px solid currentColor; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sb-srcs-item-actions{ position: absolute; width: 70px; height: 31px; right: 7px; top: 7px; } .sb-srcs-item-actions-btn{ width: 30px; height: 31px; cursor: pointer; float: left; display: flex; justify-content: center; align-items: center; margin-left: 3px; } .sb-srcs-item-actions-btn svg{ float: left; width: 17px; fill: currentColor; } .sb-srcs-item-actions-btn.sb-srcs-item-angle-up svg { height: 10px; } .sb-srcs-item-cog, .sb-srcs-item-angle-up{ color: #434960; transition: all 0.15s ease-in-out; border-radius: 4px; } .sb-srcs-item-cog:hover, .sb-srcs-item-angle-up:hover { background: #F3F4F5; } .sb-srcs-item-cog:focus, .sb-srcs-item-cog:active, .sb-srcs-item-angle-up:focus, .sb-srcs-item-angle-up:active { background: #E8E8EB; } .sb-srcs-item-delete{ color: #D72C2C; transition: all 0.15s ease-in-out; border-radius: 4px; } .sb-srcs-item-delete:hover { background-color: #FCEDED; } .sb-srcs-item-delete:focus, .sb-srcs-item-delete:active { background: #eed4d4; } .sb-srcs-item-delete svg{ width: 13px; } #sbi-settings .sbi-fb-source-step1 .sbi-fb-source-top h3 { margin-bottom: 40px; } .sbi-fb-srcs-personal-btn{ height: 40px; width: 100%; float: left; display: flex; justify-content: center; align-items: center; background: #E2F5FF; cursor: pointer; color: #0068A0; font-weight: 600; } .sbi-fb-srcs-personal-btn svg{ float: left; margin-right: 10px; } /* Sources Instance Popup */ .sbi-fb-popup-feedinst .sbi-fb-source-top{ display: flex; align-items: center; } .sbi-fb-popup-feedinst h5{ margin-bottom: 0px; float: left; font-size: 27px; } .sbi-fb-fdinst-type{ padding: 5px 5px; background: #E8E8EB; margin-left: 12px; float: left; } .sbi-fb-inst-tbl-ctn{ padding: 0 23px 63px; } .sbi-fb-inst-tbl-ctn table{ width: 100%; border-spacing: unset; box-sizing: border-box; border: 1px solid #DCDDE1; text-align: left; } .sbi-fb-inst-tbl-ctn tfoot,.sbi-fb-inst-tbl-ctn thead{ background: #F3F4F5 } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf th, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf td{ font-size: 13px; color: #364152; padding: 13px 10px; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-tbody tr:nth-child(odd){ background: #fff; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-tbody tr:nth-child(even){ background: #F3F4F5; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf tr th, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf tr td{ padding: 4px 20px; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-tbody tr td{ padding: 11px 20px; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-name{ font-size: 14px; } .sbi-fb-inst-tbl-shrtc{ display: flex; align-items: center; } .sbi-fd-inst-btn{ width: 10px; height: 10px; box-sizing: border-box; border-right: 3px solid #8C8F9A; border-top: 3px solid #8C8F9A; cursor: pointer; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sbi-fd-lst-actions .sbi-fd-lst-btn, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-btn { box-sizing: border-box; width: 36px; height: 32px; } .sbi-fd-lst-shortcode-cp { margin-left: 10px; } .sbi-fb-tltp-parent { position: relative; } .sbi-fd-lst-btn { width: 21px; height: 21px; display: inline-flex; justify-content: center; align-items: center; margin: 0 4px; cursor: pointer; color: #141B38; border-radius: 2px; border: 1px solid #D8DADD; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; background: #fff; } .sbi-fb-tltp-elem { position: absolute; color: #fff; background: #434960; font-size: 14px; padding: 7px 10px; border-radius: 3px; font-weight: 500; z-index: 9; text-align: center; opacity: 0; visibility: hidden; top: calc(-100% - 30px); left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sbi-fb-tltp-elem span { position: relative; z-index: 3; } .sbi-fd-lst-btn svg { fill: currentColor; width: 14px; float: left; } .sbi-fd-lst-btn svg { height: 13px; } .sbi-fd-lst-thtf th{ border-bottom: 1px solid #DCDDE1; } .sbi-fd-lst-thtf td{ border-top: 1px solid #DCDDE1; } .sbi-fb-fdinst-type { padding: 5px 5px; background: #E8E8EB; margin-left: 12px; float: left; } .sbi-fd-lst-name { font-size: 17px; font-weight: 500; color: #0068A0!important; } .sbi-fb-inst-tbl-ctn a, .sbi-fb-inst-tbl-ctn a:focus { text-decoration: none; outline: none; } .sbi-fd-lst-actions .sbi-fd-lst-btn, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-btn { box-sizing: border-box; width: 36px; height: 32px; background: transparent; } .sbi-fd-lst-btn svg { fill: currentColor; width: 14px; float: left; } .sbi-fb-tltp-parent:hover .sbi-fb-tltp-elem { top: calc(-100% - 20px); opacity: 1; visibility: visible; } .sbi-fb-tltp-elem:after { content: ''; position: absolute; height: 10px; width: 10px; bottom: -5px; left: calc(50% - 5px); background: #434960; transform: rotate( -45deg ); } /*** 6.0 Sticky Widget ***/ .sbi-stck-wdg{ position: fixed; right: 21px; z-index: 9; bottom: 20px; } .sbi-stck-wdg-btn{ width: 52px; height: 52px; background: #fff; border-radius: 50%; cursor: pointer; display: flex; justify-content: center; align-items: center; filter: drop-shadow(0px 9px 13px rgba(0, 0, 0, 0.2)); } .sbi-stck-wdg-btn svg{ width: 25px; fill: #FE544F; height: 33px; float: left; } .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls, .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls svg{ display: block; } .sbi-stck-wdg-btn-cls{ width: inherit; height: inherit; position: relative; color: #364152; box-shadow: 0px 1px 6px rgb(0 0 0 / 5%), 0px 9px 12px rgb(0 0 0 / 5%); border-radius: 70px; } .sbi-stck-wdg-btn-cls svg { width: 14px; height: 14px; position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin-top: -7px; margin-left: -7px; } .sbi-stck-pop{ position: absolute; width: 292px; height: auto; background: #fff; border: 1px solid #E2E8F0; box-sizing: border-box; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 3px 14px rgba(0, 0, 0, 0.12); border-radius: 2px; padding: 20px; right: 0px; bottom: 66px; color: #141B38; padding-bottom: 82px; } .sbi-stck-wdg[data-active="true"] .sbi-stck-pop{ bottom: 66px; opacity: 1; visibility: visible; } .sbi-stck-pop svg{ fill: currentColor; } .sbi-stck-el-list{ border: 1px solid #DCDDE1; border-radius: 2px; } .sbi-stck-el{ display: flex; align-items: center; padding: 11px 13px; border-bottom: 1px solid #DCDDE1; transition: background .15s ease-in-out; } .sbi-stck-el:hover{ background: #F3F4F5; } .sbi-stck-el:last-of-type{ border-bottom: 0px; } .sbi-stck-el-list .sbi-chevron svg{ width: 5px; height: 8px; } .sbi-fs-a { width: 100%; height: 100%; display: block; position: absolute; left: 0; top: 0; z-index: 1; } .sbi-stck-el .sbi-stck-el-txt{ color: #27303F; } .sbi-stck-el.sbi-stck-el-upgrd{ padding: 8px 14px; font-size: 14px; background: var(--cl-orange); color: #fff; position: relative; transition: background .15s ease-in-out; } .sbi-chevron { position: absolute; right: 14px } .sbi-stck-el.sbi-stck-el-upgrd .sbi-stck-el-txt{ color: #fff; } .sbi-stck-el.sbi-stck-el-upgrd:after{ top: 20px; opacity: 1; } .sbi-stck-el-icon{ margin-right: 10px; } .sbi-stck-el-icon svg{ width: 17px; float: left; } .sbi-stck-title{ margin-top: 20px; margin-bottom: 10px; color: #141B38; font-weight: 600; font-size: 14px; line-height: 160%; } .sbi-stck-follow{ background: #F3F4F5; margin-top: 20px; left: 0px; bottom: 0px; position: absolute; padding: 12px 20px; display: flex; align-items: center; } .sbi-stck-follow span{ font-weight: 600; font-size: 14px; } .sbi-stck-flw-links{ display: flex; justify-content: center; align-items: center; margin-left: auto; } .sbi-stck-flw-links a{ width: 36px; height: 28px; color: inherit; display: inline-flex; justify-content: center; align-items: center; margin-left: 4px; border-radius: 2px; transition: background .15s ease-in-out; } .sbi-stck-flw-links svg{ width: 17px; color: #141B38; } .sbi-stck-flw-links a:hover{ background: #fff; } .sbi-stck-flw-links a:hover svg{ color: inherit; } .sb-tab-content .sb-tab-box.sb-reset-box-style .sbi-tab-form-field .sbi-btn, .sb-tab-content .sb-tab-box.sb-dpa-clear-box-style .sbi-tab-form-field .sbi-btn { transform: none; margin-bottom: 15px; } /*** 7.0 Responsive ***/ @media (max-width: 1429px) { .caching-form-fields-group { display: inline-block; } .caching-form-fields-group select { margin-bottom: 5px; } } @media (min-width: 1429px) { .caching-form-fields-group { display: flex; } } @media (max-width: 1023px) { .sb-tab-content .sb-tab-box .tab-label { width: 100%; max-width: 100%; padding-right: 0; float: initial; margin-bottom: 20px; } .sb-tab-content .sb-tab-box .sbi-tab-form-field{ width: 100%; float: intial; } } @media (max-width: 1320px) { .sb-feed-issue-box .feed-issues-fields { display: inline-block; } .sb-feed-issue-box .feed-issues-fields * { margin-bottom: 5px; } } @media (max-width: 767px) { .auto-fold #wpcontent { padding-left: 0; } .sbi-fb-full-wrapper { padding: 70px 20px 0 20px; } .sbi-fb-hd-btn { padding: 0px 15px 0px 7px; } .sbi-fb-header { padding: 0px 20px; } .sb-notification-ctn { left: 20px; } .sb-tab-box.sb-export-box .sb-form-field .d-flex{ flex-wrap: wrap; } .sb-form-field .sbi-select { width: 100%; } .sb-tab-content .sb-tab-box .sbi-tab-form-field { flex-wrap: wrap; } .sb-license-box .sbi-tab-form-field .sbi-btn { transform: translate(0px, 0px) !important; margin-top: 10px; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .field-left-content { flex-basis: 100%; } .sb-export-box .sbi-tab-form-field .sbi-btn { transform: translate(0px, 0px) !important; margin-top: 10px; } .sb-feed-issue-box .feed-issues-fields { width: 100%; } .sb-feed-issue-box #report-emails { max-width: 100%; } .sbi-table thead th, .sbi-table tfoot th { display: none; } .sbi-table tbody tr:not(.sbi-table-row-header) td:last-child { margin-bottom: 20px; } .sbi-table tbody { background-color: #f3f4f5; } .sbi-table tbody:nth-child(2n) { background-color: #fff; } .sb-tab-content .sb-tab-box .sbi-tab-form-field .d-flex{ flex-wrap: wrap; } .sb-sources-list { grid-template-columns: 100%; } .sb-tabs-container .sb-tabs { flex-direction: column-reverse; flex-wrap: wrap; align-items: flex-end; } .sbi-fb-full-wrapper { padding: 82px 20px 0 20px; } .sb-tabs-container .sb-tabs .left-buttons { width: 100%; display: flex; } .sb-tabs-container .sb-tabs .right-buttons { transform: translateY(-15px); } .sb-tabs-container .sb-tabs .left-buttons .tab { flex-grow: 1; flex-basis: 0; padding: 15px 10px; text-align: center; } .sb-tabs-container { margin-top: -45px; } #wpbody-content { padding-bottom: 50px; } .sb-form-field .sbi-select.size-md { width: 100%; max-width: 100%; } } @media (max-width: 567px) { .sb-tabs-container .sb-tabs .tab:not(:last-child) { margin-right: 10px; } } @media (max-width: 420px) { .sb-tabs-container .sb-tabs .left-buttons .tab { padding: 15px 7px; font-size: 14px; } } .sb-button-standard{ position: relative; font-style: normal; font-weight: 600; font-size: 14px; padding: 10px 20px 10px 39px; line-height: 16px; height: auto; } .sb-button-standard svg { width: 16px; height: 16px; position: absolute; left: 13px; right: auto; top: 10px; bottom: auto; } .sbi-stck-el.sbi-stck-el-upgrd svg path{ fill: #fff!important; } .sb-tab-content .sb-tab-box.sbi-uo-install-notice { background: #FFF7E5; box-shadow: 0px 9px 16px rgba(0, 0, 0, 0.0196802), 0px 3.75998px 6.68442px rgba(0, 0, 0, 0.0282725), 0px 2.01027px 3.57381px rgba(0, 0, 0, 0.035), 0px 1.12694px 2.00345px rgba(0, 0, 0, 0.0417275), 0px 0.598509px 1.06402px rgba(0, 0, 0, 0.0503198), 0px 0.249053px 0.442761px rgba(0, 0, 0, 0.07); border-radius: 8px; padding: 12px 12px 12px 34px; } .sb-tab-content .sbi-uo-install-notice .sbi-tab-notice { display: flex; justify-content: space-between; align-items: center; gap: 20px; } .sb-tab-content .sbi-uo-install-notice .sbi-tab-notice .sbi-notice-left, .sb-tab-content .sbi-uo-install-notice .sbi-tab-notice .sbi-notice-right { display: flex; gap: 20px; align-items: center; } .sb-tab-content .sbi-uo-install-notice .sbi-notice-text p { font-weight: 600; font-size: 16px; line-height: 160%; color: #663D00; } .sb-tab-content .sbi-uo-install-notice .sbi-tab-notice .sbi-notice-right .sbi-notice-learn-more { background: #F9F9FA; border: 1px solid #E6E6EB; box-shadow: 0px 2px 5px rgba(60, 66, 87, 0.05), 0px 1px 1px rgba(0, 0, 0, 0.05), inset 0px -1px 1px rgba(0, 0, 0, 0.12); border-radius: 4px; padding: 7px 11px; transition: all .2s ease-in; } .sb-tab-content .sbi-uo-install-notice .sbi-tab-notice .sbi-notice-right .sbi-notice-learn-more:hover { background-color: #ededed; } .sb-tab-content .sbi-uo-install-notice .sbi-tab-notice .sbi-notice-right .sbi-uo-notice-dismiss { border: none; background-color: transparent; padding: 0px; }instagram-feed/admin/assets/css/oembeds.css000064400000040277151435171370014765 0ustar00/* * oEmbeds CSS TABLE OF CONTENTS * * 1.0 - GLOBAL * 2.0 - HEADER * 3.0 - 3.0 - OEMBEDS CONTAINER * 3.1 - SECTION HEADER * 3.2 - OEMBED ENABLE/DISABLE BOX * 3.3 - OEMBED INFORMATION BOX * 4.0 - MODAL STYLE * 5.0 - STICKY WIDGET * 6.0 - RESPONSIVENESS */ /*** 1.0 - GLOBAL ***/ .clearfix { display: inline-block; } /* start commented backslash hack \*/ * html .clearfix { height: 1%; } .clearfix { display: block; } .checkmark { width: 21px; height: 22px; border-radius: 50%; display: block; stroke-width: 2; stroke: #fff; stroke-miterlimit: 10; stroke-dashoffset: 0; transform: translate(0px, -3px); } #sbi-oembeds { -webkit-font-smoothing: antialiased; font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; } #wpcontent { padding-left: 0px; } #wpbody-content { padding-bottom: 40px; } .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } .sbi-fb-full-wrapper{ padding: 0 53px; padding-top: 82px; } .sbi-fb-fs { width: 100%; position: relative; float: left; box-sizing: border-box; } /*orange*/ .sb-btn-orange{ background: #FE544F!important; color: #fff!important; } .sb-btn-orange:hover{ background: #EC352F!important; color: #fff!important; } .sb-btn-orange:focus, .sb-btn-orange:active{ background: #BC120E!important; color: #fff!important; } /*** 2.0 - HEADER ***/ .sbi-fb-create-ctn{ margin-top: 90px; } .sbi-fb-header{ height: 64px; position: absolute; display: flex; flex-direction: row; justify-content: space-between; align-items: center; background: #fff; padding: 0px 52px; z-index: 2; } .sbi-fb-header-left { display: flex; } .sbi-fb-header-left .sb-social-wall-link-wrap { margin-left: 30px; } .sb-social-wall-link-wrap { display: flex; font-size: 14px; margin: 10px 0; } .sb-social-wall-link { padding: 0 12px; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link:first-child { padding-left: 0; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link:last-child { border-right: none; } .sb-social-wall-link a { text-decoration: none; } .sb-social-wall-link a:focus { outline: none; box-shadow: none; } .sbi-fb-hd-logo{ display: flex; vertical-align: middle; align-items: center; gap: 5px; } .sbi-fb-hd-logo .sb-logo-letters-wrap { margin-bottom: 4px; } .sbi-fb-hd-logo .breadcrumb-title{ font-size: 14px; font-weight: 400; line-height: 22px; letter-spacing: 0em; margin-left: 4px; } .sbi-fb-hd-logo .separator{ margin: 0 5px 0 10px; } .sbi-fb-hd-btn{ height: 38px; cursor: pointer; display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 0px 15px 0px 16px; font-weight: 600; font-size:14px; color: #353A41; background: #F3F4F5; border-radius: 2px; border: 1px solid #DCDDE1; position: relative; text-decoration: none; transition: all 0.15s ease-in-out; } .sbi-fb-hd-btn:focus { outline: none; box-shadow: none; } .sbi-fb-hd-btn:hover { color: inherit; background-color: #fff; } .sbi-fb-hd-btn i{ margin: 0px 5px; } .sbi-fb-hd-btn[data-icon="left"]{ padding-right: 20px!important; } .sbi-fb-full-wrapper .section-header h1 { font-size: 32px; line-height: 40px; } /*** 3.0 - OEMBEDS CONTAINER ***/ .sbi-oembeds-container { max-width: 875px; position: relative; margin: auto; margin-top: 33px; box-sizing: border-box; } /*** 3.1 - SECTION HEADER ***/ .sbi-section-header h3 { font-weight: 600; font-size: 32px; line-height: 40px; color: #141B38; margin: 0 0 5px 0; } .sbi-section-header p { font-size: 13px; line-height: 18px; color: #434960; margin: 0; } .sbi-oembed-plugin-box { background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); margin-bottom: 10px; padding: 12px 20px; display: flex; justify-content: space-between; align-items: center; } /*** 3.2 - OEMBED ENABLE/DISABLE BOX ***/ .sbi-oembed-plugin-box-group { margin-top: 35px; } .sbi-oembed-plugin-box .oembed-text{ flex-basis: 645px; } .sbi-oembed-plugin-box .sbi-oembed-btn{ flex-basis: 125px; text-align: right; } .sbi-oembed-btn .sbi-btn { border-radius: 2px; padding: 10px 20px; border: 0px; color: #fff; font-size: 14px; cursor: pointer; transition: all .15s ease-in-out; box-sizing: border-box; text-decoration: none; display: flex; align-items: center; height: 38px; float: right; } .sbi-oembed-btn .sbi-btn span { margin-right: 5px; height: 15px; width: 15px; } .sbi-oembed-btn .sbi-btn svg { width: 100%; height: 100%; } .sbi-oembed-btn button:hover { background-color: #0096CC; border-color: #0096CC; } .sbi-oembed-btn .sbi-btn:focus, .sbi-oembed-btn .sbi-btn:active { outline: none; box-shadow: none; } .sbi-oembed-btn button.disable-oembed { background: #D72C2C; } .sbi-oembed-btn button.disable-oembed:hover { background-color: #DF5757; border-color: #DF5757; } .sbi-oembed-btn button.disable-oembed:focus, .sbi-oembed-btn button.disable-oembed:active { background-color: #841919; border-color: #841919; } .sbi-oembed-btn button.loading svg { height: 14px; transform: translate(0, 2px); } /*** 3.3 - OEMBED INFORMATION BOX ***/ .sbi-oembed-information { background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); margin-bottom: 10px; } .sbi-oembed-information .sb-box-header { padding: 16px 20px; border-bottom: 1px solid #E8E8EB; } .sbi-oembed-information .sb-box-header h3 { margin: 0; font-weight: 600; font-size: 18px; line-height: 140%; color: #141B38; } .sb-two-column-box { display: flex; justify-content: space-around; align-items: center; border-bottom: 1px solid #E8E8EB; } .sb-two-column-box-1 img { max-width: 438px; } .sb-two-column-box-2 img{ margin-top: 20px; max-width: 442px; } .sb-two-column-box .sb-embed-info-text { padding: 0 75px 0 35px; } .sb-two-column-box-2 .sb-embed-info-text { padding: 0 65px 0 30px; } .sb-two-column-box h4, .sb-one-column-box h4 { font-size: 16px; font-weight: 600; line-height: 26px; color: #141B38; } .sb-one-column-box { max-width: 405px; margin: auto; text-align: center; } .sb-one-column-box h4 { padding: 0; margin-top: 30px; margin-bottom: 0px; } .sb-one-column-box p { font-size: 14px; line-height: 22px; } .sb-one-column-box img { margin-top: 15px; margin-bottom: -21px; max-width: 392px; } .sb-two-column-box-1 .sb-left { padding-left: 20px; } .sb-plugin-info-box { padding-top: 20px; } .sb-plugin-info-box .sb-left { padding-left: 35px; } .sb-plugin-info-box .sb-right { padding: 0 60px 0 40px; } .sb-plugin-info-box h4 { font-size: 18px; margin: 0px; } .sb-plugin-info-box p { font-size: 14px; line-height: 22px; color: #434960; margin-top: 10px; } .sb-plugin-info-box img { max-width: 414px; margin-bottom: -5px; } /*** 4.0 - MODAL STYLE ***/ .sbi-oembed-modal { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.4); z-index: 9; } .sbi-modal-content { background-color: #fff; height: 381px; max-width: 572px; padding: 40px 75px 48px; box-sizing: border-box; position: relative; text-align: center; margin: 260px auto 0; } .sbi-modal-content h2 { font-size: 24px; line-height: 29px; text-align: center; letter-spacing: 0; color: #141B38; margin: 0 0 5px 0; } .sbi-modal-content p { font-size: 12px; line-height: 18px; text-align: center; color: #434960; } .sbi-modal-content .cancel-btn{ background: none; border: none; color: #141B38; position: absolute; top: 16px; right: 16px; padding: 0; cursor: pointer; } .sbi-modal-content .modal-icon{ margin-bottom: 45px; } .sbi-modal-content .modal-icon img { max-width: 102px; } .sbi-modal-content .sb-action-buttons{ display: flex; justify-content: center; margin-top: 30px; } .sbi-modal-content .sb-action-buttons button:not(:last-child) { margin-right: 7px; } .sb-action-buttons .sbi-btn { display: flex; align-items: center; vertical-align: middle; justify-content: center; background: #F3F4F5; border: 1px solid #DCDDE1; box-sizing: border-box; border-radius: 2px; padding: 7px 30px; font-weight: 600; font-size: 14px; line-height: 22px; color: #141B38; letter-spacing: 0.2px; cursor: pointer; min-width: 175px; } .sb-action-buttons .sbi-install-btn { background-color: #FE544F; border-color: #FE544F; color: #fff; } .sb-action-buttons .sbi-install-btn:disabled { background: #F3F4F5; border: 1px solid #DCDDE1; color: #141B38; cursor: not-allowed } .sb-action-buttons .sbi-install-btn:not(.success):disabled path { fill: #141B38; } .sb-action-buttons .sbi-install-btn span { margin-right: 10px; } .sb-action-buttons .sbi-install-btn.loading svg { height: 16px; transform: translate(0, 2px); } /*** 5.0 Sticky Widget ***/ .sbi-stck-wdg{ position: fixed; right: 21px; z-index: 9; bottom: 20px; } .sbi-stck-wdg-btn{ width: 52px; height: 52px; background: #fff; border-radius: 50%; cursor: pointer; display: flex; justify-content: center; align-items: center; filter: drop-shadow(0px 9px 13px rgba(0, 0, 0, 0.2)); } .sbi-stck-wdg-btn svg{ width: 25px; fill: #FE544F; height: 33px; } .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls, .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls svg{ display: block; } .sbi-stck-wdg-btn-cls{ width: inherit; height: inherit; position: relative; color: #364152; box-shadow: 0px 1px 6px rgb(0 0 0 / 5%), 0px 9px 12px rgb(0 0 0 / 5%); border-radius: 70px; } .sbi-stck-wdg-btn-cls svg { width: 14px; height: 14px; position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin-top: -7px; margin-left: -7px; } .sbi-stck-pop{ position: absolute; width: 292px; height: auto; background: #fff; border: 1px solid #E2E8F0; box-sizing: border-box; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 3px 14px rgba(0, 0, 0, 0.12); border-radius: 2px; padding: 20px; right: 0px; bottom: 66px; color: #141B38; padding-bottom: 82px; } .sbi-stck-wdg[data-active="true"] .sbi-stck-pop{ bottom: 66px; opacity: 1; visibility: visible; } .sbi-stck-pop svg{ fill: currentColor; } .sbi-stck-el-list{ border: 1px solid #DCDDE1; border-radius: 2px; } .sbi-stck-el{ display: flex; align-items: center; padding: 11px 13px; border-bottom: 1px solid #DCDDE1; transition: background .15s ease-in-out; font-size: 12px; } .sbi-stck-el:hover{ background: #F3F4F5; } .sbi-stck-el:last-of-type{ border-bottom: 0px; } .sbi-stck-el-list .sbi-chevron svg{ width: 5px; height: 8px; } .sbi-fs-a { width: 100%; height: 100%; display: block; position: absolute; left: 0; top: 0; z-index: 1; } .sbi-stck-el .sbi-stck-el-txt{ color: #27303F; } .sbi-stck-el.sbi-stck-el-upgrd{ padding: 9px 14px; font-size: 14px; background: var(--cl-orange); color: #fff; position: relative; transition: background .15s ease-in-out; font-weight: 600; } .sbi-chevron { position: absolute; right: 14px } .sbi-stck-el.sbi-stck-el-upgrd .sbi-stck-el-txt{ color: #fff; } .sbi-stck-el.sbi-stck-el-upgrd:after{ top: 20px; opacity: 1; } .sbi-stck-el-icon{ margin-right: 10px; } .sbi-stck-el-icon svg{ width: 17px; float: left; } .sbi-stck-title{ margin-top: 20px; margin-bottom: 10px; color: #141B38; font-weight: 600; font-size: 14px; line-height: 160%; } .sbi-stck-follow{ background: #F3F4F5; margin-top: 20px; left: 0px; bottom: 0px; position: absolute; padding: 12px 20px; display: flex; align-items: center; } .sbi-stck-follow span{ font-weight: 600; font-size: 14px; } .sbi-stck-flw-links{ display: flex; justify-content: center; align-items: center; margin-left: auto; } .sbi-stck-flw-links a{ width: 36px; height: 28px; color: inherit; display: inline-flex; justify-content: center; align-items: center; margin-left: 4px; border-radius: 2px; transition: background .15s ease-in-out; } .sbi-stck-flw-links svg{ width: 17px; color: #141B38; } .sbi-stck-flw-links a:hover{ background: #fff; } .sbi-stck-flw-links a:hover svg{ color: inherit; } /*** 6.0 - RESPONSIVENESS ***/ @media (max-width: 1170px) { .sbi-oembed-plugin-box .oembed-text { flex-basis: 78%; } } @media (max-width: 1024px) { .sbi-oembed-plugin-box .oembed-text { flex-basis: 72%; } .sb-two-column-box { flex-direction: column; } .sb-two-column-box-1 { flex-direction: column-reverse; } .sb-two-column-box .sb-embed-info-text{ padding: 0 35px; text-align: center; } .sb-two-column-box-2 img { margin-top: 0px; } .sb-two-column-box .sb-left, .sb-two-column-box .sb-right { max-width: 405px; margin: auto; } .sb-two-column-box.sb-plugin-info-box .sb-embed-info-text { margin-top: 25px; } .auto-fold #wpcontent { padding-left: 0px; } } @media (max-width: 767px) { .auto-fold #wpcontent { padding-left: 0; } .sbi-fb-full-wrapper { padding: 70px 20px 0 20px; } .sbi-fb-header { padding: 0px 20px; } .sbi-fb-hd-btn { padding: 0px 15px 0px 7px; } .sbi-about-box .sb-team-info { padding: 30px; } .sbi-oembed-plugin-box { flex-wrap: wrap; } .sbi-oembed-plugin-box .oembed-icon { width: 20px; vertical-align: middle; display: flex; } .sbi-oembed-plugin-box .sbi-oembed-btn { flex-basis: 114px; text-align: left; margin-top: 15px; } .sbi-oembed-plugin-box .oembed-text { flex-basis: calc(100% - 40px); } .sb-plugin-info-box .sb-left, .sb-two-column-box-1 .sb-left, .sb-two-column-box-2 .sb-right, .sb-one-column-box img { display: none; } .sb-one-column-box { padding-bottom: 5px !important; } .sb-one-column-box h4 { margin-top: 21px; } .sb-two-column-box.sb-plugin-info-box .sb-embed-info-text { margin-top: 0; } .sb-plugin-info-box p { margin-bottom: 17px; } .sbi-modal-content { margin: 80px auto 0; width: 90%; height: auto; padding: 40px 30px; } .sbi-modal-content .modal-icon { margin-bottom: 30px; } .sb-plugin-info-box h4 { font-size: 16px; } } @media (max-width: 630px) { .sb-two-column-box img, .sb-one-column-box img { max-width: 100%; } .sbi-modal-content .sb-action-buttons { flex-direction: column; } .sbi-modal-content .sb-action-buttons button:not(:last-child) { margin-right: 0px; margin-bottom: 7px; } } @media (max-width: 530px) { .sb-two-column-box .sb-left, .sb-two-column-box .sb-right, .sb-one-column-box { padding: 0 20px; } .sb-two-column-box h4, .sb-one-column-box h4 { line-height: 22px; } .sb-one-column-box img { margin-bottom: -15px; } } .sbi-btn-blue { background: #0068A0!important; color: #fff!important; } .sb-button-standard{ position: relative; font-style: normal; font-weight: 600; font-size: 14px; padding: 10px 20px 10px 39px; line-height: 16px; height: auto; } .sb-button-standard svg { width: 16px; height: 16px; position: absolute; left: 13px; right: auto; top: 10px; bottom: auto; } .sbi-stck-el.sbi-stck-el-upgrd svg path{ fill: #fff!important; } instagram-feed/admin/assets/css/support.css000064400000065267151435171370015071 0ustar00/* * SUPPORT PAGE CSS TABLE OF CONTENTS * * 1.0 - GLOBAL * 2.0 - HEADER * 3.0 - 3.0 - SUPPORT CONTAINER * 3.1 - SECTION HEADER * 3.2 - SUPPORT BLOCK * 3.3 - CONTACT SUPPORT BLOCK * 4.0 - STICKY WIDGET * 5.0 - SB NOTIFICATION ELEMENT * 6.0 - RESPONSIVENESS */ /*** 1.0 - GLOBAL ***/ .clearfix { display: inline-block; } /* start commented backslash hack \*/ * html .clearfix { height: 1%; } .clearfix { display: block; } #sbi-support { -webkit-font-smoothing: antialiased; font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; } #wpcontent { padding-left: 0px; } #wpbody-content { padding-bottom: 40px; } .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } /*orange*/ .sb-btn-orange{ background: #FE544F!important; color: #fff!important; } .sb-btn-orange:hover{ background: #EC352F!important; color: #fff!important; } .sb-btn-orange:focus, .sb-btn-orange:active{ background: #BC120E!important; color: #fff!important; } .sbi-fb-cp-clpboard{ width: 0px; height: 0px; position: absolute; left: -100000px; } .sbi-fb-full-wrapper{ padding: 0 53px; padding-top: 82px; } .sbi-fb-fs { width: 100%; position: relative; float: left; box-sizing: border-box; } #adminmenu a[href="admin.php?page=sbi-support"] { display: none; } .sb-btn-grey:not(:disabled){ background: #F3F4F5!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } .sb-btn-grey:not(:disabled):hover{ background: #fff!important; color: #141B38!important; border: 1px solid #DCDDE1!important; } .sb-btn-grey:not(:disabled):focus, .sb-btn-grey:not(:disabled):active{ background: #E8E8EB!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } /*** 2.0 - HEADER ***/ .sbi-fb-create-ctn{ margin-top: 90px; } .sbi-fb-header{ height: 64px; position: absolute; display: flex; flex-direction: row; justify-content: space-between; align-items: center; background: #fff; padding: 0px 52px; z-index: 2; } .sbi-fb-header-left { display: flex; } .sbi-fb-header-left .sb-social-wall-link-wrap { margin-left: 30px; } .sb-social-wall-link-wrap { display: flex; font-size: 14px; margin: 10px 0 10px 30px; } .sb-social-wall-link:first-child { padding-left: 0; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link { padding: 0 12px; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link a { text-decoration: none; } .sb-social-wall-link a:focus { outline: none; box-shadow: none; } .sb-social-wall-link:last-child { border-right: none; } .sbi-fb-hd-logo{ display: flex; vertical-align: middle; align-items: center; gap: 5px; } .sbi-fb-hd-logo .sb-logo-letters-wrap { transform: translate(0px, -2px); } .sbi-fb-hd-logo .breadcrumb-title{ font-size: 14px; font-weight: 400; line-height: 22px; letter-spacing: 0em; margin-left: 4px; } .sbi-fb-hd-logo .separator{ margin: 0 5px 0 10px; } .sbi-fb-hd-btn{ height: 38px; cursor: pointer; display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 0px 15px 0px 16px; font-weight: 600; font-size:14px; color: #353A41; background: #F3F4F5; border-radius: 2px; border: 1px solid #DCDDE1; position: relative; text-decoration: none; transition: all 0.15s ease-in-out; } .sbi-fb-hd-btn:focus { outline: none; box-shadow: none; } .sbi-fb-hd-btn:hover { color: inherit; background-color: #fff; } .sbi-fb-hd-btn i{ margin: 0px 5px; } .sbi-fb-hd-btn[data-icon="left"]{ padding-right: 20px!important; } .sbi-fb-full-wrapper .section-header h1 { font-size: 32px; line-height: 40px; } /*** 3.0 - SUPPORT CONTAINER ***/ .sbi-sb-container { max-width: 885px; position: relative; margin: auto; margin-top: 33px; box-sizing: border-box; } /*** 3.1 - SECTION HEADER ***/ .sbi-section-header { display: flex; justify-content: space-between; align-items: center; } .sbi-section-header h2{ font-weight: 600; font-size: 32px; line-height: 40px; color: #141B38; margin: 0; } .sbi-section-header .sbi-search-doc .sbi-search-doc-field { position: relative; background: #fff; border: 1px solid #DCDDE1; min-width: 283px; box-sizing: border-box; height: 38px; padding: 0px 14px 0px 15px; font-weight: 600; font-size: 14px; line-height: 22px; color: #141B38; text-decoration: none; margin-right: 1px; } .sbi-section-header .sbi-search-doc .sbi-search-doc-field .sb-btn-input { height: 100%; border: none; outline: none; background-color: transparent; margin-left: 25px; color: #141B38; min-width: 200px; transform: translateY(-1px); } .sbi-section-header .sbi-search-doc .sbi-search-doc-field .sb-btn-input::placeholder { color: #141B38; } .sbi-section-header .sbi-search-doc .sbi-search-doc-field:focus, .sbi-section-header .sbi-search-doc .sbi-search-doc-field .sb-btn-input:focus { outline: none; box-shadow: none; } .sbi-section-header .sbi-search-doc .sbi-search-doc-field .sb-btn-icon { position: absolute; left: 15px; top: 11px; cursor: pointer; } .sbi-section-header .sbi-search-doc .sbi-search-doc-field .sb-btn-link-icon{ cursor: pointer; position: absolute; right: 2px; top: 0; width: 35px; text-align: center; height: 100%; padding-top: 9px; box-sizing: border-box; } .sbi-section-header .sbi-search-doc a .sb-btn-link-icon{ margin-left: 56px; } /*** 3.2 - SUPPORT BLOCK ***/ .sbi-support-blocks { margin-top: 22px; display: flex; } .sbi-support-blocks .sbi-support-block { padding: 22px 18px; background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; width: calc(33% - 7px); box-sizing: border-box; position: relative; } .sbi-support-blocks .sbi-support-block:not(:last-child) { margin-right: 14px; } .sbi-support-blocks .sbi-support-block h3 { font-style: normal; font-weight: 600; font-size: 18px; line-height: 25px; color: #141B38; margin-top: 15px; margin-bottom: 0; } .sbi-support-blocks .sbi-support-block p { font-size: 12px; line-height: 18px; color: #64748B; margin-top: 5px; } .sb-block-header img { width: 56px; height: 56px; } .sb-articles-list { margin-top: 31px; margin-bottom: 79px; } .sb-articles-list ul li { position: relative; margin: 0px; padding-right: 10px; } .sb-articles-list ul li:not(:last-child) { border-bottom: 1px solid #E8E8EB; position: relative; } .sb-articles-list ul li a { font-size: 14px; line-height: 22px; color: #141B38; text-decoration: none; display: block; padding: 13px 0; } .sb-articles-list ul li:not(:last-child):after { content: ''; position: absolute; left: 0px; bottom: -1px; background-color: #0068A0; height: 1px; width: 0; transition: all 0.25s ease-in-out; } .sb-articles-list ul li:not(:last-child):hover:after { width: 100%; } .sb-articles-list ul li a:hover { color: #0068A0; } .sb-articles-list ul li .sb-list-icon { position: absolute; right: 0; top: calc(50% - 9px); } .sb-articles-list ul li .sb-list-icon svg { width: 5px; } .sb-articles-list ul li .sb-list-icon svg path { fill: #8C8F9A; } .sbi-support-blocks .sbi-sb-button { margin-top: 50px; position: absolute; left: 0; bottom: 20px; width: calc(100% - 40px); padding: 0 20px; } .sbi-support-blocks .sbi-sb-button .sb-btn-icon { margin-left: 8px; } .sbi-support-blocks .sbi-sb-button .sb-btn-icon svg { width: 5px; transform: translateY(0px); margin-left: 3px; } .sbi-support-blocks .sbi-sb-button a { background: #F3F4F5; border: 1px solid #DCDDE1; box-sizing: border-box; border-radius: 2px; font-weight: 600; font-size: 12px; line-height: 19px; color: #141B38; display: block; text-align: center; text-decoration: none; padding: 6px; transition: all 0.15s ease-in-out; } .sbi-support-blocks .sbi-sb-button a:hover, .sbi-section-header .sbi-search-doc a:hover { background: #FFFFFF; border: 1px solid #D0D1D7; } .sbi-support-blocks .sbi-sb-button a:focus, .sbi-support-blocks .sbi-sb-button a:active, .sbi-section-header .sbi-search-doc a:focus, .sbi-section-header .sbi-search-doc a:active { background: #E8E8EB; border: 1px solid #D0D1D7; } /*** 3.3 - CONTACT SUPPORT BLOCK ***/ .sbi-support-contact-block , .sbi-tempuser-settings-section { background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; padding: 20px 20px 23px; margin-top: 28px; box-sizing: border-box; margin-bottom: 12px; display: flex; } .sbi-support-contact-block .sb-cb-content h3{ font-size: 24px; line-height: 29px; color: #141B38; margin: 0; margin-bottom: 16px; } .sbi-support-contact-block .sb-cb-icon { margin-right: 30px; } .sbi-support-contact-block .sb-cb-icon span{ background: #E8E8EB; border-radius: 60px; width: 68px; height: 68px; display: inline-block; text-align: center; padding-top: 22px; box-sizing: border-box; } .sbi-support-contact-block .sb-cb-btn{ background: #FE544F; border-radius: 2px; color: #fff; text-decoration: none; display: inline-block; padding: 8px 12px; font-size: 14px; } .sbi-support-contact-block .sb-cb-btn:hover { background: #EC352F; border-color: #EC352F; } .sbi-support-contact-block .sb-cb-btn:focus, .sbi-support-contact-block .sb-cb-btn:active { background: #BC120E; border-color: #BC120E; outline: none; box-shadow: none; } .sbi-support-contact-block .sb-cb-btn span { margin-left: 11px; } .sbi-support-contact-block .sb-cb-btn svg { width: 5px; } .sbi-support-contact-block .sb-cb-btn path { fill: #fff; } .sbi-support-contact-block .sb-contact-block-left{ flex-basis: 625px; /* width: 625px; */ /* float: left; */ display: flex; padding-top: 10px; box-sizing: border-box; } .sbi-support-contact-block .sb-contact-block-right { flex-basis: 220px; /* width: 220px; float: left; */ padding-top: 10px; padding-left: 32px; box-sizing: border-box; border-left: 1px solid #DCDDE1; } .sbi-support-contact-block .sb-contact-block-right p { font-size: 12px; line-height: 18px; color: #141B38; } .sbi-support-contact-block .sb-contact-block-right img { max-width: 65px; } /*** 3.4 - SYSTEM INFO BLOCK ***/ .sbi-system-info-section { background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; } .sbi-system-info-section .sbi-system-header{ display: flex; padding: 12px 20px 0; justify-content: space-between; } .sbi-system-info-section .sbi-system-header h3 { font-weight: 600; font-size: 18px; line-height: 25px; color: #141B38; margin-top: 9px; } .sbi-system-info-section .sbi-system-header .sbi-copy-btn { background: #F3F4F5; border: 1px solid #DCDDE1; box-sizing: border-box; border-radius: 2px; font-size: 14px; font-weight: 600; line-height: 22px; color: #141B38; height: 38px; padding: 5px 20px 5px 12px; cursor: pointer; transition: all 0.15s ease-in-out; } .sbi-system-info-section .sbi-system-header .sbi-copy-btn:hover { background: #FFFFFF; border: 1px solid #D0D1D7; } .sbi-system-info-section .sbi-system-header .sbi-copy-btn:focus, .sbi-system-info-section .sbi-system-header .sbi-copy-btn:active { background: #E8E8EB; border: 1px solid #D0D1D7; } .sbi-system-info-section .sbi-system-header .sbi-copy-btn svg { height: 19px; width: 19px; transform: translate(0px, 4px); margin-right: 5px; } .sbi-system-info-section .sbi-system-info { padding: 0 20px 20px; border-bottom: 1px solid #E8E8EB; } .sbi-system-info-section .sbi-system-info .system_info:focus { outline: none; box-shadow: none; } .sbi-system-info-section .sbi-system-info .system_info a { color: #0068A0; } .sbi-system-info-section .sbi-system-info .system_info { box-sizing: border-box; background: #F9F9FA; border: 1px solid #E8E8EB; width: 100%; resize: none; border-radius: 0; padding: 20px 28px; font-size: 12px; line-height: 18px; color: #141B38; height: 123px; font-family: 'Fira Code', monospace; word-break: break-all; } .sbi-system-info-section .sbi-system-info .system_info.expanded { height: 600px; overflow-x: hidden; overflow-y: scroll; } .sbi-system-info-section .sbi-system-info .system_info.collapsed { overflow: hidden; } .sbi-system-info-section .sbi-system-info .sbi-expand-btn { padding: 8px 12px 8px 8px; background: #FFFFFF; border: 1px solid #D0D1D7; border-radius: 2px; font-size: 12px; line-height: 19px; color: #141B38; width: 100%; margin-top: -5px; z-index: 9; position: relative; font-weight: 500; cursor: pointer; transition: all .15s ease-in-out; } .sbi-system-info-section .sbi-system-info .sbi-expand-btn:hover { background: #F3F4F5; border: 1px solid #DCDDE1; } .sbi-system-info-section .sbi-system-info .sbi-expand-btn span { margin-right: 10px; } .sbi-system-info-section .sbi-system-info .sbi-expand-btn:focus, .sbi-system-info-section .sbi-system-info .sbi-expand-btn:active{ background: #E8E8EB!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } .sbi-export-settings-section { background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; padding: 20px; display: flex; justify-content: space-between; } .sbi-export-settings-section .sbi-export-right{ display: flex; } .sbi-export-settings-section .sbi-export-left h3 , .sbi-tempuser-left h3 { font-style: normal; font-weight: 600; font-size: 18px; line-height: 25px; color: #141B38; margin: 0 0 4px 0; } .sbi-export-settings-section .sbi-export-left p { font-size: 12px; line-height: 18px; color: #141B38; margin: 0; } .sbi-export-settings-section .sbi-select{ min-width: 234px; border: 1px solid #D0D1D7; padding: 3px 15px; height: 38px; font-size: 14px; color: #141B38; -webkit-appearance: none; appearance: none; margin-right: 8px; background: #fff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAFCAYAAAB8ZH1oAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABSSURBVHgBfc4hCkAhDAbgjV3slQcvvHuYDWY1G8zewyIWb6YuCCLqD4Pt5wtD54NBQA2XVKiWcorl/X7s+DkhJYUhPk54IN5plCue0Tb8M8/aNx/uIpRVqbbFAAAAAElFTkSuQmCC') no-repeat right 15px top 55%; } .sbi-export-settings-section .sbi-btn { height: 38px; font-size: 14px; padding: 7px 20px 7px 16px; display: flex; align-items: center; vertical-align: middle; background: #F3F4F5; border: 1px solid #DCDDE1; border-radius: 2px; font-weight: 500; transition: all .15s ease-in-out; cursor: pointer; } .sbi-export-settings-section .sbi-btn:disabled { cursor: not-allowed; color: #8C8F9A; background: #F3F4F5; } .sbi-export-settings-section .sbi-btn:disabled:hover { color: #8C8F9A; } .sbi-export-settings-section .sbi-btn span { margin-right: 11px; transform: translate(0px, 2px); } .sbi-export-settings-section .sbi-btn:disabled span path { fill: #8C8F9A; } .sbi-support-contact-block {} /*** 4.0 Sticky Widget ***/ .sbi-stck-wdg{ position: fixed; right: 21px; z-index: 9; bottom: 20px; } .sbi-stck-wdg-btn{ width: 52px; height: 52px; background: #fff; border-radius: 50%; cursor: pointer; display: flex; justify-content: center; align-items: center; filter: drop-shadow(0px 9px 13px rgba(0, 0, 0, 0.2)); } .sbi-stck-wdg-btn svg{ width: 25px; fill: #FE544F; height: 33px; float: left; } .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls, .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls svg{ display: block; } .sbi-stck-wdg-btn-cls{ width: inherit; height: inherit; position: relative; color: #364152; box-shadow: 0px 1px 6px rgb(0 0 0 / 5%), 0px 9px 12px rgb(0 0 0 / 5%); border-radius: 70px; } .sbi-stck-wdg-btn-cls svg { width: 14px; height: 14px; position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin-top: -7px; margin-left: -7px; } .sbi-stck-pop{ position: absolute; width: 292px; height: auto; background: #fff; border: 1px solid #E2E8F0; box-sizing: border-box; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 3px 14px rgba(0, 0, 0, 0.12); border-radius: 2px; padding: 20px; right: 0px; bottom: 66px; color: #141B38; padding-bottom: 82px; } .sbi-stck-wdg[data-active="true"] .sbi-stck-pop{ bottom: 66px; opacity: 1; visibility: visible; } .sbi-stck-pop svg{ fill: currentColor; } .sbi-stck-el-list{ border: 1px solid #DCDDE1; border-radius: 2px; } .sbi-stck-el{ display: flex; align-items: center; padding: 11px 13px; border-bottom: 1px solid #DCDDE1; transition: background .15s ease-in-out; font-size: 12px; } .sbi-stck-el:hover{ background: #F3F4F5; } .sbi-stck-el:last-of-type{ border-bottom: 0px; } .sbi-stck-el-list .sbi-chevron svg{ width: 5px; height: 8px; } .sbi-fs-a { width: 100%; height: 100%; display: block; position: absolute; left: 0; top: 0; z-index: 1; } .sbi-stck-el .sbi-stck-el-txt{ color: #27303F; } .sbi-stck-el.sbi-stck-el-upgrd{ padding: 9px 14px; font-size: 14px; background: var(--cl-orange); color: #fff; position: relative; transition: background .15s ease-in-out; font-weight: 600; } .sbi-chevron { position: absolute; right: 14px } .sbi-stck-el.sbi-stck-el-upgrd .sbi-stck-el-txt{ color: #fff; } .sbi-stck-el.sbi-stck-el-upgrd:after{ top: 20px; opacity: 1; } .sbi-stck-el-icon{ margin-right: 10px; } .sbi-stck-el-icon svg{ width: 17px; float: left; } .sbi-stck-title{ margin-top: 20px; margin-bottom: 10px; color: #141B38; font-weight: 600; font-size: 14px; line-height: 160%; } .sbi-stck-follow{ background: #F3F4F5; margin-top: 20px; left: 0px; bottom: 0px; position: absolute; padding: 12px 20px; display: flex; align-items: center; } .sbi-stck-follow span{ font-weight: 600; font-size: 14px; } .sbi-stck-flw-links{ display: flex; justify-content: center; align-items: center; margin-left: auto; } .sbi-stck-flw-links a{ width: 36px; height: 28px; color: inherit; display: inline-flex; justify-content: center; align-items: center; margin-left: 4px; border-radius: 2px; transition: background .15s ease-in-out; } .sbi-stck-flw-links svg{ width: 17px; color: #141B38; } .sbi-stck-flw-links a:hover{ background: #fff; } .sbi-stck-flw-links a:hover svg{ color: inherit; } /*** SB NOTIFICATION ELEMENT ***/ .sb-notification-ctn{ position: fixed; bottom: -100px; left: 200px; z-index: 99999; background: #fff; display: flex; justify-content: center; align-items: center; border-left: 3px solid #fff; line-height: 1em; padding: 10px 20px; padding-left: 0px; border-radius: 4px; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); } .sb-notification-ctn[data-active="hidden"]{ -webkit-animation: sbi-notification-hide .5s forwards linear; animation: sbi-notification-hide .5s forwards linear; } .sb-notification-ctn[data-active="shown"]{ -webkit-animation: sbi-notification-show .5s forwards linear; animation: sbi-notification-show .5s forwards linear; } @-webkit-keyframes sbi-notification-show { 0%{bottom: -100px;} 50%{bottom: 70px;} 70%{bottom: 60px;} 85%{bottom: 65px;} 100%{bottom: 50px;}} @keyframes sbi-notification-show { 0%{bottom: -100px;} 50%{bottom: 70px;} 70%{bottom: 60px;} 85%{bottom: 65px;} 100%{bottom: 50px;}} @-webkit-keyframes sbi-notification-hide {0%{bottom: 50px;}55%{bottom: 65px;}70%{bottom: 60px;}85%{bottom: 70px;}100%{bottom: -100px;}} @keyframes sbi-notification-hide {0%{bottom: 50px;}55%{bottom: 65px;}70%{bottom: 60px;}85%{bottom: 70px;}100%{bottom: -100px;}} .sb-notification-ctn[data-type="success"]{ border-color: #59AB46; } .sb-notification-ctn[data-type="error"]{ border-color: #D72C2C; } .sb-notification-ctn[data-type="message"]{ border-color: #141B38; } .sb-notification-icon{ width: 25px; height: 25px; display: flex; justify-content: center; align-items: center; margin-left: 10px; margin-right: 15px; } .sb-notification-icon svg{ width: 22px; height: 22px; float: left; fill: currentColor; } .sb-notification-ctn[data-type="success"] .sb-notification-icon{ color: #59AB46; } .sb-notification-ctn[data-type="error"] .sb-notification-icon{ color: #D72C2C; } .sb-notification-ctn[data-type="message"] .sb-notification-icon{ color: #141B38; } .sb-notification-ctn span{ font-size: 14px; color: #141B38; font-weight:500; } /*** 6.0 - RESPONSIVENESS ***/ @media (max-width: 1024px) { .sbi-support-contact-block { flex-direction: column; } .sbi-support-contact-block .sb-contact-block-left, .sbi-support-contact-block .sb-contact-block-right { flex-basis: auto; } .sbi-support-contact-block .sb-contact-block-right { padding-top: 42px; padding-left: 0; border-left: 0px solid #DCDDE1; position: relative; } .sbi-support-contact-block .sb-contact-block-right:before { top: 25px; left: 0; width: 65px; height: 1px; background: #DCDDE1; position: absolute; content: ''; } } @media (max-width: 767px) { .sbi-support-blocks { flex-direction: column; } .sbi-support-blocks .sbi-support-block { width: 100%; margin-bottom: 12px; } .auto-fold #wpcontent { padding-left: 0; } .sbi-fb-full-wrapper { padding: 70px 20px 0 20px; } .sbi-fb-hd-btn { padding: 0px 15px 0px 7px; } .sbi-fb-header { padding: 0px 20px; } .sbi-section-header, .sbi-export-settings-section { flex-wrap: wrap; } .sbi-section-header h2 { margin-bottom: 30px; } .sbi-section-header .sbi-search-doc { width: 100%; } .sbi-export-settings-section .sbi-export-left, .sbi-export-settings-section .sbi-export-right{ width: 100%; } .sbi-export-settings-section .sbi-export-left { margin-bottom: 20px; } .sbi-export-settings-section .sbi-export-right { flex-wrap: wrap; } .sbi-export-settings-section .sbi-select { width: 100%; margin-bottom: 10px; } .sb-notification-ctn { left: 20px; } } @media (max-width: 580px) { .sbi-support-contact-block .sb-contact-block-left { flex-wrap: wrap; } .sbi-support-contact-block .sb-contact-block-left .sb-cb-content { margin-top: 20px; } } @media (max-width: 480px) { .sbi-fb-hd-btn { padding: 0px 10px 0px 7px !important; } .sbi-fb-hd-btn[data-icon="left"] { padding-right: 10px!important; } } .sb-button-standard{ position: relative; font-style: normal; font-weight: 600; font-size: 14px; padding: 10px 20px 10px 39px; line-height: 16px; height: auto; } .sb-button-standard svg { width: 16px; height: 16px; position: absolute; left: 13px; right: auto; top: 10px; bottom: auto; } .sbi-stck-el.sbi-stck-el-upgrd svg path{ fill: #fff!important; } .sbi-tempuser-settings-section { display: grid; grid-template-columns: 55% 45%; } .sbi-tempuser-settings-section:before, .sbi-tempuser-settings-section:after{ display: none!important; } .sbi-templogin-settings-section { display: block; } .sbi-tempuser-left { display: grid; grid-template-columns: 85%; } .sbi-tempuser-settings-section:not(.sbi-templogin-settings-section) .sb-btn { padding: 12px 16px; padding-top: 10px; } .sbi-tempuser-right { display: flex; justify-content: flex-end; align-items: center; column-gap: 10px; } .sbi-tempuser-list { width: 100%; border-collapse: collapse; } .sbi-tempuser-list tr:first-of-type { border-bottom: 1px solid #E6E6EB; background: linear-gradient(0deg, #F9F9FA, #F9F9FA), linear-gradient(0deg, #E6E6EB, #E6E6EB); color: #696D80; } .sbi-tempuser-list tr { text-align: left; } .sbi-tempuser-list tr th { padding: 5px 10px; border-bottom: 1px solid #E6E6EB; } .sbi-tempuser-list tr td { padding: 15px 10px; } .sb-tempuser-btns { display: flex; justify-content: flex-end; column-gap: 10px; } .sbi-tempuser-list .sb-tempuser-link { font-size: 11px; max-width: 396px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; } .sbi-tempuser-list .sb-tempuser-expires { color: green; font-weight: 600; } .sbi-fb-tempuser-icon-ctn { display: flex; align-items: center; justify-content: center; padding: 60px 40px; background: #BFE8FF; } .sbi-fb-tempuser-icon { display: flex; width: 80px; height: 80px; background-color: #fff; align-items: center; justify-content: center; box-shadow: 0px 4px 5px 0px #0000000D, 0px 1px 2px 0px #0000000D; border-radius: 50px; } .sbi-fb-tempuser-icon svg { float: left; } .sbi-fb-tempuser-content-item { padding: 20px 25px; display: flex; align-items: flex-start; column-gap: 10px; } .sbi-fb-tempuser-item-num { width: 28px; height: 28px; font-weight: 600; color: #141B38; background: #F3F4F5; border-radius: 24px; display: flex; justify-content: center; align-items: center; flex-grow: 0; flex-shrink: 0; } .sbi-fb-tempuser-item-text strong { margin-top: 2px; } .sbi-fb-tempuser-item-text p { margin: 0.1em 0; } .sbi-fb-tempuser-footer-btn { display: flex; justify-content: flex-end; padding: 25px; border-top: 1px solid #eee; } .sbi-fb-source-popup.sbi-fb-tempuser-popup h3 { font-size: 21px; margin: 10px; } .sbi-fb-tempuser-footer-btn .sb-btn { padding: 10px 16px; }instagram-feed/admin/assets/css/admin-notifications.css000064400000031054151435171370017277 0ustar00#sbi-notifications { position: relative; background: #FFFFFF 0 0 no-repeat padding-box; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; opacity: 1; min-height: 48px; padding: 20px 120px 20px 82px; margin: 0 0 14px 0; } #sbi-notifications * { box-sizing: border-box; } #sbi-notifications .bell, #sbi-notifications .thumb{ position: absolute; top: 20px; left: 24px; width: 34px; height: 44px; } #sbi-notifications .thumb img { max-width: 100%; } #sbi-notifications .thumb .img-overlay { top: 42px; left: -6px; width: 54px; position: absolute; background: #ca4a1f; color: #fff; padding: 2px 4px; border-radius: 3px; line-height: 1; font-size: 11px; font-weight: bold; text-align: center; } #sbi-notifications .messages .message { display: none; } #sbi-notifications .messages .message.current { display: block; } #sbi-notifications .messages .message .title { font-weight: 600; font-size: 18px; line-height: 25px; margin: 0; color: #141B38; letter-spacing: 0; } #sbi-notifications .messages .message .content { font-weight: normal; font-size: 14px; line-height: 22px; margin: 6px 0 32px 0; color: #434960; } #sbi-notifications .messages .message .buttons { margin: -15px 105px 3px 0; display: flex; } .sbi-btn { transition: all 0.15s ease-in-out; letter-spacing: 0.2px; } /*orange*/ .sbi-btn-orange{ background: #FE544F!important; color: #fff!important; } .sbi-btn-orange:hover{ background: #EC352F!important; color: #fff!important; } .sbi-btn-orange:focus, .sbi-btn-orange:active{ background: #BC120E!important; color: #fff!important; } /* green */ .sbi-btn-green{ background: #1da867!important; color: #fff!important; } .sbi-btn-green:hover{ background: #20c276!important; color: #fff!important; } .sbi-btn-green:focus, .sbi-btn-green:active{ background: #0ea15c!important; color: #fff!important; } /*grey*/ .sbi-btn-grey{ background: #F3F4F5!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } .sbi-btn-grey:hover{ background: #fff!important; color: #141B38!important; border: 1px solid #DCDDE1!important; } .sbi-btn-grey:focus, .sbi-btn-grey:active{ background: #E8E8EB!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } #sbi-notifications .messages .message .buttons a { font-weight: 600; padding: 6px 12px; border-radius: 2px; box-sizing: border-box; height: 32px; text-decoration: none; font-size: 12px; } #sbi-notifications .messages .message .buttons a.sbi-btn-orange { border: 1px solid #FE544F } #sbi-notifications .messages .message .buttons a:not(:last-child) { margin-right: 8px; } #sbi-notifications .messages .message .buttons a:focus, #sbi-notifications .messages .message .buttons a:active { outline: none; box-shadow: none; } #sbi-notifications .dismiss { position: absolute; top: 14px; right: 14px; width: 16px; height: 16px; color: #72777C; font-size: 16px; cursor: pointer; text-align: center; vertical-align: middle; line-height: 16px; } #sbi-notifications .dismiss svg { width: 15px; height: 15px; } #sbi-notifications .dismiss svg path { fill: #8C8F9A; } #sbi-notifications .navigation { position: absolute; bottom: 24px; right: 21px; width: 72px; height: 30px; } #sbi-notifications .navigation a { width: 32px; height: 32px; border: 1px solid #DCDDE1; border-radius: 2px; font-size: 8px; text-align: center; vertical-align: middle; line-height: 30px; cursor: pointer; background: #F3F4F5; color: #141B38; display: flex; align-items: center; justify-content: center; transition: all 0.15s ease-in-out; } #sbi-notifications .navigation svg { width: 9px; height: 9px; } #sbi-notifications .navigation a:not(.disabled):hover { background-color: #fff; } #sbi-notifications .navigation a:not(.disabled):focus, #sbi-notifications .navigation a:not(.disabled):active { background: #E8E8EB; color: #141B38; } #sbi-notifications .navigation .prev { float: left; } #sbi-notifications .navigation .next { float: right; } #sbi-notifications .navigation .disabled { background: #E8E8EB; color: #8C8F9A; cursor: default; } @media screen and (max-width: 768px) { #sbi-notifications { padding: 15px 15px 15px 72px; } #sbi-notifications .messages .message .title { margin: 0 30px 0 0; } #sbi-notifications .messages .message .content { font-size: 16px; line-height: 24px; } #sbi-notifications .messages .message .buttons { margin: -30px 80px 0 0; } #sbi-notifications .messages .message .buttons a { margin: 0; display: table; } #sbi-notifications .messages .message .buttons .button-secondary { margin-top: 6px; } } /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2Nzcy9hZG1pbi1ub3RpZmljYXRpb25zLmNzcyIsInNvdXJjZXMiOlsiYXNzZXRzL3Njc3MvYWRtaW4tbm90aWZpY2F0aW9ucy5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEFkbWluIG5vdGlmaWNhdGlvbiBzdHlsZXMuXG5cbiN3cGZvcm1zLW5vdGlmaWNhdGlvbnMge1xuXG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0YmFja2dyb3VuZDogI0ZGRkZGRiAwIDAgbm8tcmVwZWF0IHBhZGRpbmctYm94O1xuXHRib3gtc2hhZG93OiAwcHggNXB4IDE1cHggIzAwMDAwMDBEO1xuXHRib3JkZXItcmFkaXVzOiA2cHg7XG5cdG9wYWNpdHk6IDE7XG5cdG1pbi1oZWlnaHQ6IDQ4cHg7XG5cdHBhZGRpbmc6IDE1cHggMTAycHggMTVweCA3MnB4O1xuXHRtYXJnaW46IDAgMCAxNHB4IDA7XG5cblx0KiB7XG5cdFx0Ym94LXNpemluZzogYm9yZGVyLWJveDtcblx0fVxuXG5cdC5iZWxsIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAxNXB4O1xuXHRcdGxlZnQ6IDE1cHg7XG5cdFx0d2lkdGg6IDQycHg7XG5cdFx0aGVpZ2h0OiA0OHB4O1xuXHR9XG5cblx0Lm1lc3NhZ2VzIHtcblx0XHQubWVzc2FnZSB7XG5cdFx0XHRkaXNwbGF5OiBub25lO1xuXG5cdFx0XHQmLmN1cnJlbnQge1xuXHRcdFx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRcdH1cblxuXHRcdFx0LnRpdGxlIHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMTdweDtcblx0XHRcdFx0bGluZS1oZWlnaHQ6IDIwcHg7XG5cdFx0XHRcdG1hcmdpbjogMDtcblx0XHRcdFx0Y29sb3I6ICM0NDQ7XG5cdFx0XHR9XG5cblx0XHRcdC5jb250ZW50IHtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IG5vcm1hbDtcblx0XHRcdFx0Zm9udC1zaXplOiAxM3B4O1xuXHRcdFx0XHRsaW5lLWhlaWdodDogMjBweDtcblx0XHRcdFx0bWFyZ2luOiA2cHggMCA0MHB4IDA7XG5cdFx0XHR9XG5cblx0XHRcdC5idXR0b25zIHtcblx0XHRcdFx0bWFyZ2luOiAtMzBweCA4MHB4IDAgMDtcblxuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRtYXJnaW46IDAgNnB4IDAgMDtcblx0XHRcdFx0XHRwYWRkaW5nOiA4cHggMTBweDtcblx0XHRcdFx0XHRsaW5lLWhlaWdodDogMTNweDtcblx0XHRcdFx0XHRmb250LXNpemU6IDEzcHg7XG5cdFx0XHRcdFx0bWluLWhlaWdodDogdW5zZXQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuYnV0dG9uLXNlY29uZGFyeSB7XG5cdFx0XHRcdFx0Ym9yZGVyOiAxcHggc29saWQgIzAwNzFBMTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC5kaXNtaXNzIHtcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdFx0dG9wOiAxNXB4O1xuXHRcdHJpZ2h0OiAxNXB4O1xuXHRcdHdpZHRoOiAxNnB4O1xuXHRcdGhlaWdodDogMTZweDtcblx0XHRjb2xvcjogIzcyNzc3Qztcblx0XHRmb250LXNpemU6IDE2cHg7XG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdGxpbmUtaGVpZ2h0OiAxNnB4O1xuXG5cdFx0Jjpob3ZlciB7XG5cdFx0XHRjb2xvcjogI2RjMzIzMjtcblx0XHR9XG5cdH1cblxuXHQubmF2aWdhdGlvbiB7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuXHRcdGJvdHRvbTogMTVweDtcblx0XHRyaWdodDogMTVweDtcblx0XHR3aWR0aDogNjNweDtcblx0XHRoZWlnaHQ6IDMwcHg7XG5cblx0XHRhIHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdFx0d2lkdGg6IDMwcHg7XG5cdFx0XHRoZWlnaHQ6IDMwcHg7XG5cdFx0XHRib3JkZXI6IDFweCBzb2xpZCAjN0U4OTkzO1xuXHRcdFx0Ym9yZGVyLXJhZGl1czogM3B4O1xuXHRcdFx0Zm9udC1zaXplOiA4cHg7XG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuXHRcdFx0bGluZS1oZWlnaHQ6IDMwcHg7XG5cdFx0XHRjdXJzb3I6IHBvaW50ZXI7XG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuXHRcdFx0Y29sb3I6ICM0MTQ1NEE7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC5wcmV2IHtcblx0XHRcdGZsb2F0OiBsZWZ0O1xuXHRcdH1cblxuXHRcdC5uZXh0IHtcblx0XHRcdGZsb2F0OiByaWdodDtcblx0XHR9XG5cblx0XHQuZGlzYWJsZWQge1xuXHRcdFx0Ym9yZGVyLWNvbG9yOiAjZGRkZGRkO1xuXHRcdFx0Y29sb3I6ICNBMEE1QUE7XG5cdFx0XHRjdXJzb3I6IGRlZmF1bHQ7XG5cblx0XHRcdCY6aG92ZXIge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuXG5cdCN3cGZvcm1zLW5vdGlmaWNhdGlvbnMge1xuXHRcdHBhZGRpbmc6IDE1cHggMTVweCAxNXB4IDcycHg7XG5cblx0XHQubWVzc2FnZXMge1xuXG5cdFx0XHQubWVzc2FnZSB7XG5cblx0XHRcdFx0LnRpdGxlIHtcblx0XHRcdFx0XHRtYXJnaW46IDAgMzBweCAwIDA7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuY29udGVudCB7XG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xuXHRcdFx0XHRcdGxpbmUtaGVpZ2h0OiAyNHB4XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQuYnV0dG9ucyB7XG5cdFx0XHRcdFx0bWFyZ2luOiAtMzBweCA4MHB4IDAgMDtcblxuXHRcdFx0XHRcdGEge1xuXHRcdFx0XHRcdFx0bWFyZ2luOiAwO1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogdGFibGU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0LmJ1dHRvbi1zZWNvbmRhcnkge1xuXHRcdFx0XHRcdFx0bWFyZ2luLXRvcDogNnB4O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufSJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxBQUFBLHNCQUFzQixDQUFDO0VBRXRCLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLFVBQVUsRUFBRSxpQ0FBaUM7RUFDN0MsVUFBVSxFQUFFLHNCQUFzQjtFQUNsQyxhQUFhLEVBQUUsR0FBRztFQUNsQixPQUFPLEVBQUUsQ0FBQztFQUNWLFVBQVUsRUFBRSxJQUFJO0VBQ2hCLE9BQU8sRUFBRSxvQkFBb0I7RUFDN0IsTUFBTSxFQUFFLFVBQVU7Q0FxSGxCOztBQTlIRCxBQVdDLHNCQVhxQixDQVdyQixDQUFDLENBQUM7RUFDRCxVQUFVLEVBQUUsVUFBVTtDQUN0Qjs7QUFiRixBQWVDLHNCQWZxQixDQWVyQixLQUFLLENBQUM7RUFDTCxRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsSUFBSTtFQUNULElBQUksRUFBRSxJQUFJO0VBQ1YsS0FBSyxFQUFFLElBQUk7RUFDWCxNQUFNLEVBQUUsSUFBSTtDQUNaOztBQXJCRixBQXdCRSxzQkF4Qm9CLENBdUJyQixTQUFTLENBQ1IsUUFBUSxDQUFDO0VBQ1IsT0FBTyxFQUFFLElBQUk7Q0FvQ2I7O0FBN0RILEFBMkJHLHNCQTNCbUIsQ0F1QnJCLFNBQVMsQ0FDUixRQUFRLEFBR04sUUFBUSxDQUFDO0VBQ1QsT0FBTyxFQUFFLEtBQUs7Q0FDZDs7QUE3QkosQUErQkcsc0JBL0JtQixDQXVCckIsU0FBUyxDQUNSLFFBQVEsQ0FPUCxNQUFNLENBQUM7RUFDTixXQUFXLEVBQUUsSUFBSTtFQUNqQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLE1BQU0sRUFBRSxDQUFDO0VBQ1QsS0FBSyxFQUFFLElBQUk7Q0FDWDs7QUFyQ0osQUF1Q0csc0JBdkNtQixDQXVCckIsU0FBUyxDQUNSLFFBQVEsQ0FlUCxRQUFRLENBQUM7RUFDUixXQUFXLEVBQUUsTUFBTTtFQUNuQixTQUFTLEVBQUUsSUFBSTtFQUNmLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLE1BQU0sRUFBRSxZQUFZO0NBQ3BCOztBQTVDSixBQThDRyxzQkE5Q21CLENBdUJyQixTQUFTLENBQ1IsUUFBUSxDQXNCUCxRQUFRLENBQUM7RUFDUixNQUFNLEVBQUUsY0FBYztDQWF0Qjs7QUE1REosQUFpREksc0JBakRrQixDQXVCckIsU0FBUyxDQUNSLFFBQVEsQ0FzQlAsUUFBUSxDQUdQLENBQUMsQ0FBQztFQUNELE1BQU0sRUFBRSxTQUFTO0VBQ2pCLE9BQU8sRUFBRSxRQUFRO0VBQ2pCLFdBQVcsRUFBRSxJQUFJO0VBQ2pCLFNBQVMsRUFBRSxJQUFJO0VBQ2YsVUFBVSxFQUFFLEtBQUs7Q0FDakI7O0FBdkRMLEFBeURJLHNCQXpEa0IsQ0F1QnJCLFNBQVMsQ0FDUixRQUFRLENBc0JQLFFBQVEsQ0FXUCxpQkFBaUIsQ0FBQztFQUNqQixNQUFNLEVBQUUsaUJBQWlCO0NBQ3pCOztBQTNETCxBQWdFQyxzQkFoRXFCLENBZ0VyQixRQUFRLENBQUM7RUFDUixRQUFRLEVBQUUsUUFBUTtFQUNsQixHQUFHLEVBQUUsSUFBSTtFQUNULEtBQUssRUFBRSxJQUFJO0VBQ1gsS0FBSyxFQUFFLElBQUk7RUFDWCxNQUFNLEVBQUUsSUFBSTtFQUNaLEtBQUssRUFBRSxPQUFPO0VBQ2QsU0FBUyxFQUFFLElBQUk7RUFDZixNQUFNLEVBQUUsT0FBTztFQUNmLFVBQVUsRUFBRSxNQUFNO0VBQ2xCLGNBQWMsRUFBRSxNQUFNO0VBQ3RCLFdBQVcsRUFBRSxJQUFJO0NBS2pCOztBQWhGRixBQTZFRSxzQkE3RW9CLENBZ0VyQixRQUFRLEFBYU4sTUFBTSxDQUFDO0VBQ1AsS0FBSyxFQUFFLE9BQU87Q0FDZDs7QUEvRUgsQUFrRkMsc0JBbEZxQixDQWtGckIsV0FBVyxDQUFDO0VBQ1gsUUFBUSxFQUFFLFFBQVE7RUFDbEIsTUFBTSxFQUFFLElBQUk7RUFDWixLQUFLLEVBQUUsSUFBSTtFQUNYLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLElBQUk7Q0FzQ1o7O0FBN0hGLEFBeUZFLHNCQXpGb0IsQ0FrRnJCLFdBQVcsQ0FPVixDQUFDLENBQUM7RUFDRCxPQUFPLEVBQUUsS0FBSztFQUNkLEtBQUssRUFBRSxJQUFJO0VBQ1gsTUFBTSxFQUFFLElBQUk7RUFDWixNQUFNLEVBQUUsaUJBQWlCO0VBQ3pCLGFBQWEsRUFBRSxHQUFHO0VBQ2xCLFNBQVMsRUFBRSxHQUFHO0VBQ2QsVUFBVSxFQUFFLE1BQU07RUFDbEIsY0FBYyxFQUFFLE1BQU07RUFDdEIsV0FBVyxFQUFFLElBQUk7RUFDakIsTUFBTSxFQUFFLE9BQU87RUFDZixnQkFBZ0IsRUFBRSxPQUFPO0VBQ3pCLEtBQUssRUFBRSxPQUFPO0NBS2Q7O0FBMUdILEFBdUdHLHNCQXZHbUIsQ0FrRnJCLFdBQVcsQ0FPVixDQUFDLEFBY0MsTUFBTSxDQUFDO0VBQ1AsZ0JBQWdCLEVBQUUsT0FBTztDQUN6Qjs7QUF6R0osQUE0R0Usc0JBNUdvQixDQWtGckIsV0FBVyxDQTBCVixLQUFLLENBQUM7RUFDTCxLQUFLLEVBQUUsSUFBSTtDQUNYOztBQTlHSCxBQWdIRSxzQkFoSG9CLENBa0ZyQixXQUFXLENBOEJWLEtBQUssQ0FBQztFQUNMLEtBQUssRUFBRSxLQUFLO0NBQ1o7O0FBbEhILEFBb0hFLHNCQXBIb0IsQ0FrRnJCLFdBQVcsQ0FrQ1YsU0FBUyxDQUFDO0VBQ1QsWUFBWSxFQUFFLE9BQU87RUFDckIsS0FBSyxFQUFFLE9BQU87RUFDZCxNQUFNLEVBQUUsT0FBTztDQUtmOztBQTVISCxBQXlIRyxzQkF6SG1CLENBa0ZyQixXQUFXLENBa0NWLFNBQVMsQUFLUCxNQUFNLENBQUM7RUFDUCxnQkFBZ0IsRUFBRSxPQUFPO0NBQ3pCOztBQUtKLE1BQU0sQ0FBQyxNQUFNLE1BQU0sU0FBUyxFQUFFLEtBQUs7RUFFbEMsQUFBQSxzQkFBc0IsQ0FBQztJQUN0QixPQUFPLEVBQUUsbUJBQW1CO0dBNkI1QjtFQTlCRCxBQU9HLHNCQVBtQixDQUdyQixTQUFTLENBRVIsUUFBUSxDQUVQLE1BQU0sQ0FBQztJQUNOLE1BQU0sRUFBRSxVQUFVO0dBQ2xCO0VBVEosQUFXRyxzQkFYbUIsQ0FHckIsU0FBUyxDQUVSLFFBQVEsQ0FNUCxRQUFRLENBQUM7SUFDUixTQUFTLEVBQUUsSUFBSTtJQUNmLFdBQVcsRUFBRSxJQUNkO0dBQUM7RUFkSixBQWdCRyxzQkFoQm1CLENBR3JCLFNBQVMsQ0FFUixRQUFRLENBV1AsUUFBUSxDQUFDO0lBQ1IsTUFBTSxFQUFFLGNBQWM7R0FVdEI7RUEzQkosQUFtQkksc0JBbkJrQixDQUdyQixTQUFTLENBRVIsUUFBUSxDQVdQLFFBQVEsQ0FHUCxDQUFDLENBQUM7SUFDRCxNQUFNLEVBQUUsQ0FBQztJQUNULE9BQU8sRUFBRSxLQUFLO0dBQ2Q7RUF0QkwsQUF3Qkksc0JBeEJrQixDQUdyQixTQUFTLENBRVIsUUFBUSxDQVdQLFFBQVEsQ0FRUCxpQkFBaUIsQ0FBQztJQUNqQixVQUFVLEVBQUUsR0FBRztHQUNmIn0= */ instagram-feed/admin/assets/css/callout.css000064400000020306151435171370015001 0ustar00.sb-callout-ctn { width: 370px; min-height: 200px; overflow: auto; background: #fff; box-shadow: 0px 1px 5px 0px #0000000B, 0px 4px 12px 0px #0000000F, 0px 8px 23px 0px #00000013, 0px 14px 41px 0px #00000017, 0px 26px 77px 0px #0000001B; } .sb-callout-ctn[data-type="frontend"]{ position: fixed; bottom: 25px; right: 20px; } .sb-callout-ctn[data-type="backend"] { position: fixed; bottom: 85px; right: 20px; z-index: 99999; } .sb-callout-ctn[data-type="side-menu"], body.wp-admin.index-php li .sb-callout-ctn[data-type="side-menu"], body.instagram-feed_page_sbi-feed-builder .sb-callout-ctn[data-type="side-menu"]{ display: none !important; visibility: hidden !important; opacity: 0 !important; } body:not([class*="page_sbi-feed-builder"]) .wp-menu-name:hover > .sb-callout-ctn[data-type="side-menu"], body:not([class*="page_sbi-feed-builder"]) .wp-has-current-submenu:hover .sb-callout-ctn[data-type="side-menu"], body.wp-admin.index-php .wp-menu-name .sb-callout-ctn[data-type="side-menu"]{ display: block !important; visibility: visible !important; opacity: 1 !important; } .sb-callout-ctn[data-type="side-menu"] { position: absolute; left: 100%; /*bottom: -50%;*/ top: -100px; z-index: 999999; } .sb-callout-ctn[data-position="bottom"] { bottom: 0px; top: unset; } .sb-callout-ctn .sb-fs { width: 100%; float: left; position: relative; box-sizing: border-box; } .sb-callout-top-heading { padding: 10px 15px; border-bottom: 1px solid #E6E6EB; display: flex; align-items: center; column-gap: 10px; } .sb-callout-top-heading strong { color: #141B38 !important; font-size: 15px; } .sb-callout-only-visible { font-size: 10px; display: none; align-items: center; column-gap: 5px; text-transform: uppercase; color: #0068A0 !important; background: #D6F4FF !important; padding: 2px 8px; border-radius: 4px; line-height: 21px } [data-type="frontend"] .sb-callout-top-heading { align-items: flex-start; } [data-type="frontend"] .sb-callout-top-heading>svg { width: 25px; margin-top: 10px; height: auto; } [data-type="frontend"] .sb-callout-only-visible { display: inline-flex; } .sb-callout-top-dismiss { position: absolute; width: 16px; height: 20px; right: 12px; top: 10px; cursor: pointer; color: #2C324C !important; } .sb-callout-top-dismiss:before, .sb-callout-top-dismiss:after { content: ''; position: absolute; width: 14px; height: 2px; left: 1px; top: 8px; background: currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sb-callout-top-dismiss:after { -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sb-callout-progress { padding: 35px 25px; padding-bottom: 45px; display: flex; align-items: center; justify-content: center; column-gap: 20px; } .sb-callout-progress-radial { width: 71px; height: 71px; flex-shrink: 0; box-sizing: border-box; display: flex; justify-content: center; align-items: center; color: #0068A0 !important; font-weight: 600; font-size: 17px; } .sb-callout-progress-radial span { position: relative; z-index: 9; } .sb-callout-progress-radial svg{ position: absolute; width: 71px; height: 71px; } .sb-progress-svg { --size: 71px; --half-size: calc(var(--size) / 2); --stroke-width: 5px; --radius: calc((var(--size) - var(--stroke-width)) / 2); --circumference: calc(var(--radius) * pi * 2); --dash: calc((var(--progress) * var(--circumference)) / 100); animation: progress-animation 0s linear 0s 1 forwards; } .sb-progress-svg circle { cx: var(--half-size); cy: var(--half-size); r: var(--radius); stroke-width: var(--stroke-width); fill: none; } .sb-progress-svg .sb-progress-svg-bg { stroke: #0096CC; stroke-width: calc(var(--stroke-width) - 1px); } .sb-progress-svg .sb-progress-svg-fg { transform: rotate(-90deg); transform-origin: var(--half-size) var(--half-size); stroke-dasharray: var(--dash) calc(var(--circumference) - var(--dash)); transition: stroke-dasharray 0s linear 0s; stroke:#9ce5ff; stroke-width: var(--stroke-width) } @property --progress { syntax: ""; inherits: false; initial-value: 0; } @keyframes progress-animation { from { --progress: 0; } to { --progress: var(--percent); } } .sb-callout-progress-text { display: flex; flex-direction: column; } .sb-callout-progress-text strong { color: #141B38 !important; font-size: 16px; } .sb-callout-progress-text span { color: #696D80 !important; font-size: 13px; margin-top: 5px; line-height: 1.5em; } .sb-callout-plugins { padding: 10px 0px; background: #F9F9FA !important; } .sb-callout-plugin-item { padding: 5px 15px; display: flex; align-items: center; font-size: 14px; font-weight: 400; color: #434960 !important; column-gap: 10px } #adminmenu .sb-callout-plugin-item a:not(.sb-callout-item-btn) { display: flex !important; color: inherit !important; justify-content: center; align-items: center; column-gap: 7px; line-height: unset !important; background: unset !important; } #adminmenu .sb-callout-plugin-item a:not(.sb-callout-item-btn):after { display: none; } .sb-callout-item-checkbox { width: 17px; height: 17px; position: relative; flex-shrink: 0; border-radius: 50px; border: 2px solid #9295A6 !important; } .sb-callout-plugin-item[data-done="true"] { color: #141B38 !important; font-weight: 600; } .sb-callout-plugin-item[data-done="true"] .sb-callout-item-checkbox { background-color: #0096CC !important; border-color: #0096CC !important; color: #fff !important; } .sb-callout-plugin-item[data-done="true"] .sb-callout-item-checkbox:after { content: ''; position: absolute; width: 9px; height: 4px; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; -webkit-transform: rotate(-39deg); transform: rotate(-39deg); left: 3px; top: 4px; } .sb-callout-item-btn { display: flex !important; background-color: #0068A0 !important; color: #fff !important; font-size: 10px !important; height: 32px !important; font-weight: 600 !important; padding: 10px 11px !important; position: relative !important; margin-left: auto !important; border-radius: 3px !important; text-decoration: none !important; line-height: unset !important; align-items: center !important; justify-content: center !important; cursor: pointer !important; } .sb-callout-item-btn.sb-callout-item-btn-grey { background: #F3F4F5 !important; color: #141B38 !important; border: 1px solid #D0D1D7 !important; } .sb-callout-item-btn:after { content: '' !important; position: absolute !important; width: 5px !important; height: 5px !important; right: 14px !important; top: 12px !important; border-right: 2px solid currentColor !important; border-bottom: 2px solid currentColor !important; -webkit-transform: rotate(-45deg) !important; transform: rotate(-45deg) !important; } .sb-callout-bottom-btns { display: flex !important; justify-content: flex-start !important; padding: 20px 20px !important; column-gap: 10px !important; padding-bottom: 5px !important; } .sb-callout-bottom-btns .sb-callout-item-btn { margin-left: unset !important; flex-grow: 1 !important; text-align: center !important; font-size: 11px !important; height: 15px !important; cursor: pointer; } [data-type="frontend"] .sb-callout-bottom-btns .sb-callout-item-btn { padding: 7px 11px !important; height: unset !important; } [data-type="dashboard"] .sb-callout-bottom-btns .sb-callout-item-btn{ padding: 10px 11px !important; } .sb-callout-bottom-btns .sb-callout-item-btn:after { right: 18px !important; top: 14px !important; } #adminmenu .sb-callout-ctn a:hover { box-shadow: unset !important; } /* Callout Dashboard Widget */ .sb-callout-ctn[data-type="dashboard"] { width: 100% !important; box-sizing: border-box !important; background: unset !important; box-shadow: unset !important; } .sb-callout-ctn[data-type="dashboard"] .sb-callout-top { display: none !important; } #sb_dashboard_widget .inside { padding: 0px !important; } .sb-callout-top > a { background: unset!important; color: inherit; } .sb-callout-ctn > a{ display: none !important; } .sb-callout-plugin-item .sb-callout-item-btn{ padding: 0 26px !important; } @media (max-width: 1200px) { .sb-callout-ctn[data-type="frontend"], .sb-callout-ctn[data-type="backend"], .sb-callout-ctn[data-type="side-menu"]{ display: none !important; } }instagram-feed/admin/assets/css/about.css000064400000042040151435171370014447 0ustar00/* * About Us CSS TABLE OF CONTENTS * * 1.0 - GLOBAL * 2.0 - HEADER * 3.0 - 3.0 - ABOUT US CONTAINER * 3.1 - SECTION HEADER * 3.2 - ABOUT TEAM BOX * 3.3 - PLUGINS BOX * 4.0 - STICKY WIDGET * 5.0 - RESPONSIVENESS */ /*** 1.0 - GLOBAL ***/ .clearfix { display: inline-block; } /* start commented backslash hack \*/ * html .clearfix { height: 1%; } .clearfix { display: block; } #sbi-about { -webkit-font-smoothing: antialiased; font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif; } #wpcontent { padding-left: 0px; } #wpbody-content { padding-bottom: 40px; } .clearfix:after { visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } /*orange*/ .sb-btn-orange{ background: #FE544F!important; color: #fff!important; } .sb-btn-orange:hover{ background: #EC352F!important; color: #fff!important; } .sb-btn-orange:focus, .sb-btn-orange:active{ background: #BC120E!important; color: #fff!important; } .sbi-fb-full-wrapper{ padding: 0 53px; padding-top: 82px; } .sbi-fb-fs { width: 100%; position: relative; float: left; box-sizing: border-box; } /*** 2.0 - HEADER ***/ .sbi-fb-create-ctn{ margin-top: 90px; } .sbi-fb-header{ height: 64px; position: absolute; display: flex; flex-direction: row; justify-content: space-between; align-items: center; background: #fff; padding: 0px 52px; z-index: 2; } .sbi-fb-header-left { display: flex; } .sbi-fb-header-left .sb-social-wall-link-wrap { margin-left: 30px; } .sb-social-wall-link-wrap { display: flex; font-size: 14px; margin: 10px 0 10px 30px; } .sb-social-wall-link:first-child { padding-left: 0; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link { padding: 0 12px; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link a { text-decoration: none; } .sb-social-wall-link a:focus { outline: none; box-shadow: none; } .sb-social-wall-link:last-child { border-right: none; } .sbi-fb-hd-logo{ display: flex; vertical-align: middle; align-items: center; gap: 5px; } .sbi-fb-hd-logo .sb-logo-letters-wrap { margin-bottom: 4px; } .sbi-fb-hd-logo .breadcrumb-title{ font-size: 14px; font-weight: 400; line-height: 22px; letter-spacing: 0em; margin-left: 4px; } .sbi-fb-hd-logo .separator{ margin: 0 5px 0 10px; } .sbi-fb-hd-btn{ height: 38px; cursor: pointer; display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 0px 15px 0px 16px; font-weight: 600; font-size:14px; color: #353A41; background: #F3F4F5; border-radius: 2px; border: 1px solid #DCDDE1; position: relative; text-decoration: none; transition: all 0.15s ease-in-out; } .sbi-fb-hd-btn:focus { outline: none; box-shadow: none; } .sbi-fb-hd-btn:hover { color: inherit; background-color: #fff; } .sbi-fb-hd-btn i{ margin: 0px 5px; } .sbi-fb-hd-btn[data-icon="left"]{ padding-right: 20px!important; } .sbi-fb-full-wrapper .section-header h1 { font-size: 32px; line-height: 40px; } /*** 3.0 - SB CONTAINER ***/ .sbi-sb-container { max-width: 900px; position: relative; margin: auto; margin-top: 33px; box-sizing: border-box; } /*** 3.1 - SECTION HEADER ***/ .sbi-section-header h2 { font-weight: 600; font-size: 32px; line-height: 40px; color: #141B38; margin: 0 0 5px 0; } .sbi-section-header p { font-size: 13px; line-height: 18px; color: #8C8F9A; margin: 0; } .sbi-section-second-header { margin-top: 36px; } .sbi-section-second-header h3 { font-weight: 600; font-size: 24px; line-height: 29px; color: #141B38; margin: 0 0 5px 0; } .sbi-section-second-header p { font-size: 14px; line-height: 22px; color: #8C8F9A; margin-top: 0px; } .sbi-oembed-plugin-box { background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); margin-bottom: 10px; padding: 12px 20px; display: flex; justify-content: space-between; align-items: center; } .sb-action-buttons .sbi-btn { display: flex; align-items: center; vertical-align: middle; justify-content: center; background: #F3F4F5; border: 1px solid #DCDDE1; box-sizing: border-box; border-radius: 2px; padding: 6px 19px; font-weight: 600; font-size: 12px; line-height: 18px; color: #141B38; letter-spacing: 0.2px; cursor: pointer; text-decoration: none; transition: all 0.15s ease-in-out; } .sb-action-buttons .sbi-btn:hover { background: #FFFFFF; border: 1px solid #D0D1D7; } .sb-action-buttons .sbi-btn:focus, .sb-action-buttons .sbi-btn:active { background: #E8E8EB; border: 1px solid #D0D1D7; box-shadow: none; outline: none; } .sb-action-buttons .sbi-btn.loading svg { height: 13px; transform: translate(0px, 2px); } .sb-action-buttons .sbi-btn.sb-btn-add svg { margin-right: 10px; height: 10px; } .sb-action-buttons .sbi-btn.sb-btn-add path { fill: #141B38; } .sb-action-buttons .sbi-btn.sb-btn-installed { background: #E8E8EB; color: #8C8F9A; cursor: not-allowed } .sb-action-buttons .sbi-btn.sb-btn-add { min-width: 110px; } .sb-action-buttons .sbi-btn.sb-btn-activate { background-color: #0068A0; border-color: #0068A0; color: #fff; } .sb-action-buttons .sbi-btn.sb-btn-activate:hover { background-color: #0096CC; border-color: #0096CC; } .sb-action-buttons .sbi-btn.sb-btn-activate:focus, .sb-action-buttons .sbi-btn.sb-btn-activate:active { background-color: #004D77; border-color: #004D77; } .sb-action-buttons .sbi-btn.sb-btn-deactivate { background-color: #D72C2C; border-color: #D72C2C; color: #fff; display: none; } .sb-action-buttons .sbi-btn.sb-btn-deactivate:hover { background-color: #DF5757; border-color: #DF5757; } .sb-action-buttons .sbi-btn.sb-btn-deactivate:focus, .sb-action-buttons .sbi-btn.sb-btn-deactivate:active { background-color: #841919; border-color: #841919; } .sb-action-buttons .sbi-btn:not(:last-child) { margin-right: 8px; } .sb-btn-add-plugin svg { height: 10px; margin-right: 10px; } .sb-btn-add-plugin svg path { fill: #141B38; } .sb-btn-installed svg { margin-right: 10px; } /*** 3.2 - ABOUT TEAM BOX ***/ .sbi-about-box { margin-top: 11px; } .sbi-about-box .sb-team-avatar { padding: 55px 0 50px; background-image: linear-gradient(to right, #0068A0 , #0096CC); text-align: center; } .sbi-about-box .sb-team-avatar img { max-width: 100%; width: 603px; } .sbi-about-box .sb-team-info { display: flex; padding: 48px; background: #fff; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); border-radius: 0 0 2px 2px; text-align: left; } .sb-team-info > div { min-width: 50%; } .sbi-about-box .sb-team-info .sb-team-left h2 { font-size: 24px; line-height: 29px; letter-spacing: 0; color: #141B38; margin: 0; padding-right: 5px; } .sbi-about-box .sb-team-info .sb-team-right { padding-left: 37px; max-width: 365px; box-sizing: border-box; } .sbi-about-box .sb-team-info .sb-team-right p { font-size: 14px; line-height: 22px; color: #64748B; margin-top: 0; } /*** 3.3 - EXTENSION PLUGINS BOX CONTAINER ***/ .sbi-plugins-boxes-container { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; margin-top: 20px; gap: 12px; } .sbi-plugins-boxes-container.sb-recommended-plugins { margin-top: 26px; } .sbi-plugins-boxes-container .sb-plugins-box{ background-color: #fff; padding: 20px 16px; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); border-radius: 4px; display: flex; width: calc((100% / 2) - 6px); box-sizing: border-box; } .sbi-plugins-boxes-container .sb-plugins-box .icon { max-width: 80px; padding-right: 5px; box-sizing: border-box; width: 80px; min-width: 72px; } .sbi-plugins-boxes-container.sb-recommended-plugins .sb-plugins-box .icon { max-width: 80px; padding-right: 23px; box-sizing: border-box; width: 80px; min-width: 72px; padding-left: 8px; } .sbi-plugins-boxes-container .sb-plugins-box .icon img { max-width: 100%; } .sb-plugins-box .sb-box-title { font-weight: 600; font-size: 16px; line-height: 22px; color: #141B38; margin-top: 0; margin-bottom: 5px; } .sb-plugins-box .sb-box-description { margin: 0; font-size: 13px; line-height: 18px; color: #8C8F9A; } .sb-recommended-plugins .sb-plugins-box .sb-box-description { min-height: 69px; } .sb-plugins-box .sb-action-buttons { margin-top: 20px; display: flex; } .sbi-plugins-boxes-container .sb-plugins-box.sbi-social-wall-plugin-box { padding: 27px 20px 35px 120px; flex-basis: 100%; margin-right: 0; justify-content: center; position: relative; overflow: hidden; } .sbi-social-wall-plugin-box .sb-action-buttons .sb-btn-add { padding: 6px 4px 6px 15px; } .sbi-social-wall-plugin-box .sb-action-buttons .sb-btn-add span { margin-left: 12px; } .sbi-plugins-boxes-container .sb-plugins-box.sbi-social-wall-plugin-box .plugin-box-content { z-index: 11; } .sbi-social-wall-plugin-box .sb-box-title { font-size: 24px; line-height: 27px; letter-spacing: 0; color: #141B38; } .sbi-social-wall-plugin-box .sb-box-description { font-size: 14px; line-height: 22px; color: #8C8F9A; } .sbi-social-wall-plugin-box .sb-box-bg-image { position: absolute; z-index: 0; left: -40px; width: 356px; top: 0; } .sbi-social-wall-plugin-box .sb-box-bg-image img { max-width: 100%; } /*** 4.0 Sticky Widget ***/ .sbi-stck-wdg{ position: fixed; right: 21px; z-index: 9; bottom: 20px; } .sbi-stck-wdg-btn{ width: 52px; height: 52px; background: #fff; border-radius: 50%; cursor: pointer; display: flex; justify-content: center; align-items: center; filter: drop-shadow(0px 9px 13px rgba(0, 0, 0, 0.2)); } .sbi-stck-wdg-btn svg{ width: 25px; fill: #FE544F; height: 33px; float: left; } .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls, .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls svg{ display: block; } .sbi-stck-wdg-btn-cls{ width: inherit; height: inherit; position: relative; color: #364152; box-shadow: 0px 1px 6px rgb(0 0 0 / 5%), 0px 9px 12px rgb(0 0 0 / 5%); border-radius: 70px; } .sbi-stck-wdg-btn-cls svg { width: 14px; height: 14px; position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin-top: -7px; margin-left: -7px; } .sbi-stck-pop{ position: absolute; width: 292px; height: auto; background: #fff; border: 1px solid #E2E8F0; box-sizing: border-box; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 3px 14px rgba(0, 0, 0, 0.12); border-radius: 2px; padding: 20px; right: 0px; bottom: 66px; color: #141B38; padding-bottom: 82px; } .sbi-stck-wdg[data-active="true"] .sbi-stck-pop{ bottom: 66px; opacity: 1; visibility: visible; } .sbi-stck-pop svg{ fill: currentColor; } .sbi-stck-el-list{ border: 1px solid #DCDDE1; border-radius: 2px; } .sbi-stck-el{ display: flex; align-items: center; padding: 11px 13px; border-bottom: 1px solid #DCDDE1; transition: background .15s ease-in-out; font-size: 12px; } .sbi-stck-el:hover{ background: #F3F4F5; } .sbi-stck-el:last-of-type{ border-bottom: 0px; } .sbi-stck-el-list .sbi-chevron svg{ width: 5px; height: 8px; } .sbi-fs-a { width: 100%; height: 100%; display: block; position: absolute; left: 0; top: 0; z-index: 1; } .sbi-stck-el .sbi-stck-el-txt{ color: #27303F; } .sbi-stck-el.sbi-stck-el-upgrd{ padding: 9px 14px; font-size: 14px; background: var(--cl-orange); color: #fff; position: relative; transition: background .15s ease-in-out; font-weight: 600; } .sbi-chevron { position: absolute; right: 14px } .sbi-stck-el.sbi-stck-el-upgrd .sbi-stck-el-txt{ color: #fff; } .sbi-stck-el.sbi-stck-el-upgrd:after{ top: 20px; opacity: 1; } .sbi-stck-el-icon{ margin-right: 10px; } .sbi-stck-el-icon svg{ width: 17px; float: left; } .sbi-stck-title{ margin-top: 20px; margin-bottom: 10px; color: #141B38; font-weight: 600; font-size: 14px; line-height: 160%; } .sbi-stck-follow{ background: #F3F4F5; margin-top: 20px; left: 0px; bottom: 0px; position: absolute; padding: 12px 20px; display: flex; align-items: center; } .sbi-stck-follow span{ font-weight: 600; font-size: 14px; } .sbi-stck-flw-links{ display: flex; justify-content: center; align-items: center; margin-left: auto; } .sbi-stck-flw-links a{ width: 36px; height: 28px; color: inherit; display: inline-flex; justify-content: center; align-items: center; margin-left: 4px; border-radius: 2px; transition: background .15s ease-in-out; } .sbi-stck-flw-links svg{ width: 17px; color: #141B38; } .sbi-stck-flw-links a:hover{ background: #fff; } .sbi-stck-flw-links a:hover svg{ color: inherit; } /*** 5.0 - RESPONSIVENESS ***/ @media (max-width: 1024px) { .sbi-extensions-boxes-container .sb-extensions-box{ width: calc(48% - 33px); } .sbi-extensions-boxes-container .sb-extensions-box:not(:nth-child(3n)) { margin-right: 0; } .sbi-extensions-boxes-container .sb-extensions-box:not(:nth-child(2n)) { margin-right: 12px; } .sbi-plugins-boxes-container { padding-right: 0px; } .sbi-social-wall-plugin-box .sb-box-bg-image { left: -45px; } .sbi-plugins-boxes-container .sb-plugins-box.sbi-social-wall-plugin-box { padding: 27px 20px 22px 130px; } .sbi-section-second-header { padding-right: 15px; } } @media (min-width: 768px) and (max-width: 1024px) { .sbi-social-wall-plugin-box .sb-box-bg-image { left: -85px; } .sb-action-buttons .sbi-btn { padding: 6px 15px; } .sb-recommended-plugins .sb-plugins-box { min-height: 209px; } .sb-recommended-plugins .sb-plugins-box .sb-box-description { min-height: 90px; } } @media (max-width: 767px) { .auto-fold #wpcontent { padding-left: 0; } .sbi-fb-full-wrapper { padding: 70px 20px 0 20px; } .sbi-fb-hd-btn { padding: 0px 15px 0px 7px; } .sbi-fb-header { padding: 0px 20px; } .sbi-about-box .sb-team-info { padding: 30px; } .sbi-plugins-boxes-container .sb-plugins-box { width: 100%; } .sbi-plugins-boxes-container .sb-plugins-box.sbi-social-wall-plugin-box { display: flex; flex-direction: column; padding: 0px; } .sbi-social-wall-plugin-box .sb-box-bg-image { position: initial; background-color: #c3d7f3; width: 100%; height: 190px; } .sbi-plugins-boxes-container .sb-plugins-box.sbi-social-wall-plugin-box .plugin-box-content { padding: 18px 24px 24px; } .sbi-social-wall-plugin-box .sb-box-title { font-size: 18px; } .sbi-social-wall-plugin-box .sb-box-bg-image img { max-width: 401px; } .sbi-about-box .sb-team-info { flex-direction: column; } .sbi-about-box .sb-team-info .sb-team-right { padding-left: 0; max-width: none; margin-top: 30px; } .sb-recommended-plugins .sb-plugins-box .sb-box-description { min-height: initial; } .sbi-about-box .sb-team-avatar { display: none; } .sbi-about-box .sb-team-info .sb-team-left h2 { font-size: 21px; } } @media (max-width: 570px) { .sbi-extensions-boxes-container .sb-extensions-box { width: calc(100% - 30px); } .sbi-plugins-boxes-container { padding-right: 0px; } .sbi-plugins-boxes-container .sb-plugins-box:not(:nth-child(2n)) { margin-right: 0px; } } @media (max-width: 480px) { .sbi-fb-hd-btn { padding: 0px 10px 0px 7px !important; } .sbi-fb-hd-btn[data-icon="left"] { padding-right: 10px!important; } .sbi-plugins-boxes-container .sb-plugins-box .icon { width: 60px; min-width: 60px; } .sbi-plugins-boxes-container.sb-recommended-plugins .sb-plugins-box .icon { padding-right: 11px; width: 58px; min-width: 58px; padding-left: 8px; } } .sb-button-standard{ position: relative; font-style: normal; font-weight: 600; font-size: 14px; padding: 10px 20px 10px 39px; line-height: 16px; height: auto; } .sb-button-standard svg { width: 16px; height: 16px; position: absolute; left: 13px; right: auto; top: 10px; bottom: auto; } .sbi-stck-el.sbi-stck-el-upgrd svg path{ fill: #fff!important; } instagram-feed/admin/assets/css/support-tool.css000064400000005227151435171370016032 0ustar00.sbi-support-tool-tab { overflow: hidden; border-bottom: 1px solid #ccc; background-color: #f1f1f1; } .sbi-support-tool-tab button { background-color: inherit; float: left; border: none; outline: none; cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 16px; font-weight: 600; color: #3c434a; } .sbi-support-tool-tab button:hover { background-color: #ddd; } .sbi-support-tool-tab button.active { background-color: #2271b1; color: #fff; } .sbi-support-tool-tabcontent { display: none; padding: 6px 12px; border-top: none; } .sbi-support-tool-tabcontent.active { display: block; } .sbi_support_tools_wrap { padding: 20px; } .sbi_support_tools_field_group { margin-bottom: 20px; } .sb-srcs-item-avatar img { border-radius: 50%; } .sbi-fb-srcs-item-ins { background: #fff; padding: 10px; margin-bottom: 10px; border-radius: 5px; } .sbi-response-success { color: #46b450; } .sbi-response-error { color: #dc3232; } .sbi-checkboxes { margin-top: 10px; padding: 10px; border: 1px solid #ddd; display: grid; grid-template-columns: repeat(4, 1fr); } .sbi-checkboxes .sbi-checkbox-action-btns { grid-column: 1 / -1; display: flex; align-items: center; justify-content: flex-start; margin: 10px; gap: 20px; } .sbi-confirm { background: #46b450 !important; border-color: #46b450 !important; color: #fff !important; } .sbi-cancel { background: #dc3232 !important; border-color: #dc3232 !important; color: #fff !important; } pre { white-space: pre-wrap; /* Since CSS 2.1 */ white-space: -moz-pre-wrap; /* Mozilla, since 1999 */ white-space: -pre-wrap; /* Opera 4-6 */ white-space: -o-pre-wrap; /* Opera 7 */ word-wrap: break-word; /* Internet Explorer 5.5+ */ overflow-wrap: break-word; /* Modern browsers */ } .sbi-hashtags-inner { margin-top: 10px; padding: 10px; border: 1px solid #ddd; display: grid; gap: 10px; grid-template-columns: repeat(4, 1fr); } .sbi-system-info { box-sizing: border-box; background: #F9F9FA; border: 1px solid #E8E8EB; width: 100%; resize: none; border-radius: 0; padding: 20px 28px; font-size: 12px; line-height: 18px; color: #141B38; font-family: 'Fira Code', monospace; word-break: break-all; } .sbi-response-success-preview { display: flex; gap: 10px; margin-top: 10px; } .sbi-api-notes { background: #cec; margin-top: 10px; padding: 10px } .sbi-feeds-connected-accounts { display: flex; gap: 20px; margin-top: 5px; }instagram-feed/admin/assets/css/sb-elementor.css000064400000037537151435171370015750 0ustar00.sb-elem-icon{ content: '#'; } .sb-elem-icon.sb-elem-facebook{ content: url("data:image/svg+xml,%3Csvg width='29' height='29' viewBox='0 0 29 29' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.9056 18.109H13.4056V17.609H12.9056V18.109ZM9.79722 18.109H9.29722V18.609H9.79722V18.109ZM9.79722 14.5601V14.0601H9.29722V14.5601H9.79722ZM12.9056 14.5601V15.0601H13.4056V14.5601H12.9056ZM20.2604 7.32764H20.7604V6.90407L20.3426 6.83444L20.2604 7.32764ZM20.2604 10.3503V10.8503H20.7604V10.3503H20.2604ZM16.7237 14.5601H16.2237V15.0601H16.7237V14.5601ZM20.1258 14.5601L20.6199 14.6367L20.7094 14.0601H20.1258V14.5601ZM19.5751 18.109V18.609H20.0035L20.0692 18.1857L19.5751 18.109ZM16.7237 18.109V17.609H16.2237V18.109H16.7237ZM27.0523 14.5601H26.5523L26.5523 14.5612L27.0523 14.5601ZM17.0803 26.6136L16.9877 26.1222L17.0803 26.6136ZM12.5489 26.6139L12.6411 26.1225L12.5489 26.6139ZM14.8147 1.79797C7.80749 1.79797 2.07703 7.51685 2.07703 14.5601H3.07703C3.07703 8.06849 8.36042 2.79797 14.8147 2.79797V1.79797ZM2.07703 14.5601C2.07703 20.7981 6.54984 25.9974 12.4567 27.1053L12.6411 26.1225C7.19999 25.1019 3.07703 20.3097 3.07703 14.5601H2.07703ZM13.4056 26.3139V18.109H12.4056V26.3139H13.4056ZM12.9056 17.609H9.79722V18.609H12.9056V17.609ZM10.2972 18.109V14.5601H9.29722V18.109H10.2972ZM9.79722 15.0601H12.9056V14.0601H9.79722V15.0601ZM13.4056 14.5601V11.8556H12.4056V14.5601H13.4056ZM13.4056 11.8556C13.4056 10.4191 13.8299 9.36825 14.5211 8.67703C15.2129 7.98525 16.2305 7.59512 17.5314 7.59512V6.59512C16.0299 6.59512 14.7346 7.04939 13.814 7.96992C12.893 8.891 12.4056 10.2204 12.4056 11.8556H13.4056ZM17.5314 7.59512C18.1724 7.59512 18.8342 7.65119 19.3401 7.70823C19.592 7.73664 19.8029 7.76502 19.9504 7.78622C20.0241 7.79681 20.0818 7.8056 20.1208 7.81167C20.1402 7.81471 20.155 7.81706 20.1647 7.81863C20.1695 7.81941 20.1731 7.82 20.1754 7.82037C20.1765 7.82056 20.1773 7.82069 20.1778 7.82077C20.178 7.82081 20.1782 7.82083 20.1782 7.82084C20.1783 7.82085 20.1783 7.82085 20.1783 7.82085C20.1783 7.82085 20.1783 7.82085 20.1783 7.82085C20.1782 7.82084 20.1782 7.82084 20.2604 7.32764C20.3426 6.83444 20.3426 6.83443 20.3425 6.83443C20.3425 6.83442 20.3424 6.83441 20.3424 6.83441C20.3423 6.83439 20.3422 6.83437 20.342 6.83435C20.3418 6.8343 20.3414 6.83425 20.341 6.83417C20.3401 6.83403 20.3389 6.83383 20.3373 6.83357C20.3342 6.83307 20.3298 6.83234 20.3241 6.83142C20.3127 6.82958 20.2962 6.82695 20.2749 6.82362C20.2323 6.81698 20.1707 6.8076 20.0927 6.7964C19.9369 6.774 19.7157 6.74425 19.4521 6.71453C18.927 6.65532 18.2243 6.59512 17.5314 6.59512V7.59512ZM19.7604 7.32764V10.3503H20.7604V7.32764H19.7604ZM20.2604 9.85033H18.7185V10.8503H20.2604V9.85033ZM18.7185 9.85033C17.851 9.85033 17.1997 10.1241 16.7742 10.6148C16.3604 11.0922 16.2237 11.7025 16.2237 12.2594H17.2237C17.2237 11.8495 17.3257 11.5053 17.5298 11.2699C17.7224 11.0477 18.0684 10.8503 18.7185 10.8503V9.85033ZM16.2237 12.2594V14.5601H17.2237V12.2594H16.2237ZM16.7237 15.0601H20.1258V14.0601H16.7237V15.0601ZM19.6317 14.4834L19.081 18.0323L20.0692 18.1857L20.6199 14.6367L19.6317 14.4834ZM19.5751 17.609H16.7237V18.609H19.5751V17.609ZM16.2237 18.109V26.3135H17.2237V18.109H16.2237ZM17.1728 27.105C20.0281 26.5671 22.618 25.068 24.5079 22.8512L23.7469 22.2025C22.0054 24.2452 19.6188 25.6266 16.9877 26.1222L17.1728 27.105ZM24.5079 22.8512C26.4793 20.5388 27.5591 17.5977 27.5523 14.559L26.5523 14.5612C26.5586 17.3614 25.5636 20.0715 23.7469 22.2025L24.5079 22.8512ZM27.5523 14.5601C27.5523 7.51685 21.8218 1.79797 14.8147 1.79797V2.79797C21.2689 2.79797 26.5523 8.06849 26.5523 14.5601H27.5523ZM16.2237 26.3135C16.2237 26.8064 16.6682 27.2 17.1728 27.105L16.9877 26.1222C17.119 26.0975 17.2237 26.2006 17.2237 26.3135H16.2237ZM12.4567 27.1053C12.9603 27.1998 13.4056 26.8073 13.4056 26.3139H12.4056C12.4056 26.2001 12.5107 26.098 12.6411 26.1225L12.4567 27.1053Z' fill='%23576067'/%3E%3Cpath d='M12.9056 18.1088H13.4056V17.6088H12.9056V18.1088ZM9.79724 18.1088H9.29724V18.6088H9.79724V18.1088ZM9.79724 14.5599V14.0599H9.29724V14.5599H9.79724ZM12.9056 14.5599V15.0599H13.4056V14.5599H12.9056ZM20.2604 7.32749H20.7604V6.90392L20.3426 6.83429L20.2604 7.32749ZM20.2604 10.3502V10.8502H20.7604V10.3502H20.2604ZM16.7237 14.5599H16.2237V15.0599H16.7237V14.5599ZM20.1258 14.5599L20.6199 14.6366L20.7094 14.0599H20.1258V14.5599ZM19.5751 18.1088V18.6088H20.0035L20.0692 18.1855L19.5751 18.1088ZM16.7237 18.1088V17.6088H16.2237V18.1088H16.7237ZM13.4056 26.366V18.1088H12.4056V26.366H13.4056ZM12.9056 17.6088H9.79724V18.6088H12.9056V17.6088ZM10.2972 18.1088V14.5599H9.29724V18.1088H10.2972ZM9.79724 15.0599H12.9056V14.0599H9.79724V15.0599ZM13.4056 14.5599V11.8554H12.4056V14.5599H13.4056ZM13.4056 11.8554C13.4056 10.4189 13.8299 9.3681 14.5212 8.67688C15.2129 7.9851 16.2305 7.59497 17.5314 7.59497V6.59497C16.0299 6.59497 14.7346 7.04924 13.814 7.96977C12.893 8.89085 12.4056 10.2202 12.4056 11.8554H13.4056ZM17.5314 7.59497C18.1724 7.59497 18.8342 7.65103 19.3401 7.70808C19.592 7.73648 19.803 7.76487 19.9504 7.78607C20.0241 7.79666 20.0819 7.80545 20.1208 7.81152C20.1402 7.81455 20.155 7.81691 20.1647 7.81848C20.1695 7.81926 20.1731 7.81984 20.1754 7.82022C20.1765 7.8204 20.1773 7.82054 20.1778 7.82061C20.178 7.82065 20.1782 7.82068 20.1783 7.82069C20.1783 7.8207 20.1783 7.8207 20.1783 7.8207C20.1783 7.8207 20.1783 7.82069 20.1783 7.82069C20.1782 7.82069 20.1782 7.82068 20.2604 7.32749C20.3426 6.83429 20.3426 6.83428 20.3425 6.83427C20.3425 6.83427 20.3424 6.83426 20.3424 6.83425C20.3423 6.83424 20.3422 6.83422 20.3421 6.8342C20.3418 6.83415 20.3414 6.83409 20.341 6.83402C20.3401 6.83387 20.3389 6.83367 20.3374 6.83342C20.3343 6.83291 20.3298 6.83219 20.3241 6.83127C20.3127 6.82943 20.2962 6.82679 20.2749 6.82347C20.2324 6.81683 20.1707 6.80745 20.0927 6.79624C19.9369 6.77385 19.7158 6.7441 19.4522 6.71438C18.927 6.65516 18.2244 6.59497 17.5314 6.59497V7.59497ZM19.7604 7.32749V10.3502H20.7604V7.32749H19.7604ZM20.2604 9.85018H18.7185V10.8502H20.2604V9.85018ZM18.7185 9.85018C17.8511 9.85018 17.1997 10.1239 16.7743 10.6146C16.3604 11.092 16.2237 11.7024 16.2237 12.2592H17.2237C17.2237 11.8493 17.3257 11.5052 17.5298 11.2697C17.7224 11.0476 18.0684 10.8502 18.7185 10.8502V9.85018ZM16.2237 12.2592V14.5599H17.2237V12.2592H16.2237ZM16.7237 15.0599H20.1258V14.0599H16.7237V15.0599ZM19.6317 14.4833L19.081 18.0322L20.0692 18.1855L20.6199 14.6366L19.6317 14.4833ZM19.5751 17.6088H16.7237V18.6088H19.5751V17.6088ZM16.2237 18.1088V26.366H17.2237V18.1088H16.2237ZM16.4146 26.1752H13.2148V27.1752H16.4146V26.1752ZM16.2237 26.366C16.2237 26.2606 16.3092 26.1752 16.4146 26.1752V27.1752C16.8615 27.1752 17.2237 26.8129 17.2237 26.366H16.2237ZM12.4056 26.366C12.4056 26.8129 12.7679 27.1752 13.2148 27.1752V26.1752C13.3202 26.1752 13.4056 26.2606 13.4056 26.366H12.4056Z' fill='%23576067'/%3E%3C/svg%3E%0A"); } .sb-elem-icon.sb-elem-instagram{ content: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='1' y='1' width='22' height='22' rx='6' stroke='%23576067' stroke-width='1.5'/%3E%3Ccircle cx='12' cy='12' r='5' stroke='%23576067' stroke-width='1.5'/%3E%3Ccircle cx='18.5' cy='5.75' r='1.25' fill='%23576067'/%3E%3C/svg%3E%0A"); } .sb-elem-icon.sb-elem-twitter{ content: url("data:image/svg+xml,%3Csvg width='29' height='29' viewBox='0 0 29 29' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M27.8762 6.78846C27.9345 6.7065 27.8465 6.60094 27.7536 6.63936C27.0263 6.93989 26.26 7.15757 25.4698 7.29241C25.3632 7.31061 25.3082 7.16347 25.3956 7.09969C26.2337 6.48801 26.8918 5.63649 27.2636 4.63802C27.2958 4.55162 27.2014 4.47574 27.1212 4.52123C26.1605 5.06618 25.1092 5.45524 24.0054 5.68842C23.971 5.69568 23.9354 5.68407 23.9113 5.65844C22.9264 4.60891 21.5545 4 19.9999 4C17.0624 4 14.6624 6.4 14.6624 9.3625C14.6624 9.74071 14.702 10.109 14.7724 10.4586C14.7855 10.5235 14.7342 10.5842 14.6681 10.5803C10.3227 10.3231 6.45216 8.2421 3.84135 5.09864C3.79681 5.04501 3.71241 5.0515 3.67879 5.11257C3.26061 5.8722 3.02493 6.75115 3.02493 7.675C3.02493 9.41548 3.84362 10.9704 5.13417 11.9317C5.2141 11.9913 5.17327 12.12 5.07385 12.1129C4.32811 12.0597 3.63173 11.835 3.00827 11.5171C2.99303 11.5094 2.97493 11.5204 2.97493 11.5375V11.5375C2.97493 13.9896 4.6205 16.0638 6.86301 16.7007C6.96452 16.7295 6.96588 16.8757 6.86218 16.8953C6.25772 17.0096 5.63724 17.0173 5.0289 16.9176C4.95384 16.9052 4.89095 16.9762 4.91633 17.0479C5.26967 18.0466 5.91213 18.9192 6.7637 19.5537C7.58576 20.1661 8.56481 20.5283 9.58351 20.6001C9.67715 20.6067 9.71634 20.7266 9.64124 20.7829C7.78574 22.1744 5.52424 22.9237 3.19993 22.9125C2.91864 22.9125 2.63736 22.9015 2.35608 22.8796C2.25034 22.8714 2.20189 23.0116 2.29272 23.0664C4.58933 24.4509 7.27959 25.25 10.1499 25.25C19.9999 25.25 25.4124 17.075 25.4124 9.9875C25.4124 9.76833 25.4124 9.5598 25.4026 9.34228C25.4011 9.30815 25.4168 9.27551 25.4445 9.2555C26.3819 8.57814 27.1984 7.74079 27.8762 6.78846Z' stroke='%23576067' stroke-width='1.25' stroke-linejoin='round'/%3E%3C/svg%3E%0A"); } .sb-elem-icon.sb-elem-youtube{ content: url("data:image/svg+xml,%3Csvg width='27' height='20' viewBox='0 0 27 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M11 13.3267C11 13.4037 11.0834 13.4518 11.15 13.4133L17.3377 9.83658C17.4043 9.79808 17.4043 9.70192 17.3377 9.66342L11.15 6.08673C11.0834 6.0482 11 6.0963 11 6.17331V13.3267ZM25.45 3.7125C25.6125 4.3 25.725 5.0875 25.8 6.0875C25.8875 7.0875 25.925 7.95 25.925 8.7L26 9.75C26 12.4875 25.8 14.5 25.45 15.7875C25.1375 16.9125 24.4125 17.6375 23.2875 17.95C22.7 18.1125 21.625 18.225 19.975 18.3C18.35 18.3875 16.8625 18.425 15.4875 18.425L13.5 18.5C8.2625 18.5 5 18.3 3.7125 17.95C2.5875 17.6375 1.8625 16.9125 1.55 15.7875C1.3875 15.2 1.275 14.4125 1.2 13.4125C1.1125 12.4125 1.075 11.55 1.075 10.8L1 9.75C1 7.0125 1.2 5 1.55 3.7125C1.8625 2.5875 2.5875 1.8625 3.7125 1.55C4.3 1.3875 5.375 1.275 7.025 1.2C8.65 1.1125 10.1375 1.075 11.5125 1.075L13.5 1C18.7375 1 22 1.2 23.2875 1.55C24.4125 1.8625 25.1375 2.5875 25.45 3.7125Z' stroke='%23576067' stroke-width='1.25' stroke-linejoin='round'/%3E%3C/svg%3E%0A"); } #elementor-panel-category-smash-balloon .icon{ height: 44px; } #elementor-panel-category-smash-balloon .elementor-element:before{ content: url("data:image/svg+xml,%3Csvg width='13' height='17' viewBox='0 0 13 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.1181 7.76035C12.1181 3.75058 9.48981 0.5 6.24644 0.5C3.00307 0.5 0.373535 3.75058 0.373535 7.76035C0.373535 11.6043 2.78204 14.7408 5.83201 15.0039L5.50767 16.0309L7.54138 15.858L6.82784 14.9859C9.79733 14.6255 12.1181 11.5287 12.1181 7.76035Z' fill='%23636D75'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.64698 3.05249L7.92956 5.96825L10.8576 6.05236L8.7395 8.02172L10.4124 10.4413L7.59414 9.91157L6.73975 12.7299L5.44249 10.2061L2.82313 11.4063L3.83076 8.70076L1.27612 7.41224L4.01079 6.53275L3.25618 3.83878L5.84337 5.31376L7.64698 3.05249Z' fill='white'/%3E%3C/svg%3E%0A"); position: absolute; right: 7px; top: 7px; } #elementor-panel-category-smash-balloon .elementor-element:hover:before{ content: url("data:image/svg+xml,%3Csvg width='13' height='17' viewBox='0 0 13 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12.1181 7.76035C12.1181 3.75058 9.48981 0.5 6.24644 0.5C3.00307 0.5 0.373535 3.75058 0.373535 7.76035C0.373535 11.6043 2.78204 14.7408 5.83201 15.0039L5.50767 16.0309L7.54138 15.858L6.82784 14.9859C9.79733 14.6255 12.1181 11.5287 12.1181 7.76035Z' fill='%23FE544F'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M7.64698 3.05249L7.92956 5.96825L10.8576 6.05236L8.7395 8.02172L10.4124 10.4413L7.59414 9.91157L6.73975 12.7299L5.44249 10.2061L2.82313 11.4063L3.83076 8.70076L1.27612 7.41224L4.01079 6.53275L3.25618 3.83878L5.84337 5.31376L7.64698 3.05249Z' fill='white'/%3E%3C/svg%3E%0A"); } .sb-popup-cls{ height: 14px; width: 14px; position: absolute; cursor: pointer; right: 17px; top: 17px; z-index: 3; } .sb-center-boss{ display: flex; justify-content: center; align-items: center; } .sb-popup-inside{ left: 80px; width: 880px; max-width: calc(100% - 200px); background: #fff; color: #141B38; position: relative; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); border-radius: 2px; overflow-y: auto; max-height: 80vh; } .sb-popup-inside.sb-narrower-modal { max-width: 576px; } .sb-popup-inside.sb-onboarding-tooltip { overflow-y: visible !important; } @media all and (max-width: 960px) { .sb-popup-inside { left: 20px; width: 100%; max-width: calc(100% - 100px); } } /* Install Plugin Modal on Select Source Flow */ .sb-btn-orange{ background: #FE544F!important; color: #fff!important; } .sb-btn-orange:hover{ background: #EC352F!important; border-color: #EC352F!important; color: #fff!important; } .sb-btn-orange:focus, .sb-btn-orange:active{ background: #BC120E!important; border-color: #BC120E!important; color: #fff!important; } /*red*/ .sb-btn-blue{ background: #0068A0!important; color: #fff!important; } .sb-btn-blue:hover{ background: #0096CC!important; border-color: #0096CC!important; color: #fff!important; } .sb-btn-blue:focus, .sb-btn-blue:active{ background: #004D77!important; border-color: #004D77!important; color: #fff!important; } .sb-fs-boss{ position: fixed; height: 100vh; width: 100%; left: 0; top: 0; bottom: 0; right: 0; background: rgba(0,0,0,.4); z-index: 9989; } .sb-install-plugin-modal { max-width: 580px; } .sb-install-plugin-body .sb-install-plugin-header { height: 106px; background: #F3F4F5; padding: 20px; display: flex; box-sizing: border-box; flex-wrap: wrap; align-items: center; } .sb-install-plugin-body .sb-install-plugin-header .sb-plugin-image { background-color: #fff; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); border-radius: 2px; padding: 15px; max-height: 66px; box-sizing: border-box; margin-right: 24px; } .sb-install-plugin-body .sb-install-plugin-header h3 { font-size: 18px !important; line-height: 25px !important; display: flex; align-items: center; text-transform: capitalize; } .sb-install-plugin-body .sb-install-plugin-header h3 span { color: #fff; background: #59AB46; border-radius: 2px; font-size: 10px; line-height: 16px; letter-spacing: 0.08em; text-transform: uppercase; padding: 0px 6px; margin-left: 10px; } .sb-install-plugin-body .sb-install-plugin-header p { display: flex; font-size: 12px; line-height: 18px; color: #434960; margin: 5px 0 0 0; } .sb-install-plugin-body .sb-install-plugin-header p .sb-author-logo { margin-right: 8px; } .sb-install-plugin-body .sb-install-plugin-content { padding: 20px 20px 32px 107px; } .sb-install-plugin-body .sb-install-plugin-content p { margin: 0px; font-size: 14px; line-height: 22px; color: #434960; padding-right: 20px; } .sb-install-plugin-body .sb-install-plugin-content .sb-plugin-btn { display: flex; align-items: center; justify-content: center; height: 38px; padding: 8px 20px; box-sizing: border-box; transition: all .15s ease-in-out; border-radius: 2px; width: 100%; margin-top: 28px; border: none; font-size: 14px; font-weight: 600; line-height: 160%; cursor: pointer; } .sb-install-plugin-body .sb-install-plugin-content .sb-btn-orange:disabled { color: #8C8F9A !important; background: #E8E8EB !important; cursor: not-allowed; } .sb-install-plugin-body .sb-install-plugin-content .sb-plugin-btn span { height: 20px; width: 20px; margin-right: 5px; } .sb-mr-fd-list button { cursor: pointer; } .sb-plugin-name strong{ color: #434960; text-transform: uppercase; } .sb-plugin-image{ border-radius: 13px !important; -webkit-transform: rotate(-3deg); transform: rotate(-3deg); } .sb-plugin-image svg{ -webkit-transform: rotate(3deg); transform: rotate(3deg); } .sb-plugin-cta-logo { position: absolute; right: -11px; bottom: -10px; z-index: 1; }instagram-feed/admin/assets/js/elementor-preview.js000064400000003676151435171370016472 0ustar00'use strict'; var InstagramFeedElementor = window.InstagramFeedElementor || ( function( document, window, $ ) { var vars = {}; var app = { init: function() { app.events(); }, events: function() { $( window ).on('elementor/frontend/init', function ( $scope ) { elementorFrontend.hooks.addAction('frontend/element_ready/sbi-widget.default', app.frontendWidgetInit); if( 'undefined' !== typeof elementor ){ elementor.hooks.addAction( 'panel/open_editor/widget/sbi-widget', app.widgetPanelOpen ); } }); }, SbiInitWidget: function() { setTimeout(function(){ window.sbi_init(); }, 1000) jQuery('body').find('.sbi_lightbox').each(function(index, el){ if( index != 0 ) jQuery(el).remove(); }); jQuery('body').find('.sbi_lightboxOverlay').each(function(index, el){ if( index != 0 ) jQuery(el).remove(); }); //window.parent.window[0].cff_init($(window.parent.window[0]).find('.cff')); }, registerWidgetEvents: function( $scope ) { $scope .on( 'change', '.sb-elementor-cta-feedselector', app.selectFeedInPreview ); }, frontendWidgetInit : function( $scope ){ app.SbiInitWidget(); app.registerWidgetEvents( $scope ); }, findFeedSelector: function( event ) { vars.$select = event && event.$el ? event.$el.closest( '#elementor-controls' ).find( 'select[data-setting="feed_id"]' ) : window.parent.jQuery( '#elementor-controls select[data-setting="feed_id"]' ); }, selectFeedInPreview : function( event ){ vars.feedId = $( this ).val(); app.findFeedSelector(); vars.$select.val( vars.feedId ).trigger( 'change' ); }, widgetPanelOpen: function( panel, model ) { panel.$el.find( '.elementor-control.elementor-control-feed_id' ).find( 'select' ).on( 'change', function(){ setTimeout(function(){ app.SbiInitWidget(); }, 400) }); }, }; return app; }( document, window, jQuery ) ); InstagramFeedElementor.init();instagram-feed/admin/assets/js/divi-handler.min.js000064400000010214151435171370016133 0ustar00!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=0)}([function(e,t,n){n(1),e.exports=n(2)},function(e,t,n){"use strict"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),o=n.n(r),i=n(4);o()(window).on("et_builder_api_ready",function(e,t){t.registerModules(i.a)})},function(e,t){e.exports=jQuery},function(e,t,n){"use strict";var r=n(5);t.a=[r.a]},function(e,t,n){"use strict";var r=n(6),o=n.n(r),i=n(7),a=n.n(i);function c(e){return(c="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function u(e,t){for(var n=0;n response.json()) .then(data => { self.createStatus = null; if( data.success ){ self.tempUser = data.user; } self.notificationElement = { type : data.success === true ? 'success' : 'error', text : data.message, shown : "shown" }; setTimeout(function(){ self.notificationElement.shown = "hidden"; }, 5000); }); }, /** * Delete Temp User * * @since 4.0 */ deleteTempUser: function() { const self = this; self.deleteStatus = 'loading'; let data = new FormData(); data.append( 'action', 'sbi_delete_temp_user' ); data.append( 'nonce', sbi_admin.nonce ); data.append( 'userId', self.tempUser.id ); fetch(sbi_support.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { self.deleteStatus = null; if( data.success ){ self.tempUser = null; } self.notificationElement = { type : data.success === true ? 'success' : 'error', text : data.message, shown : "shown" }; setTimeout(function(){ self.notificationElement.shown = "hidden"; }, 5000); }); } }, }) instagram-feed/admin/assets/js/oembeds.js000064400000020666151435171370014435 0ustar00var sbioembeds_data = { nonce: sbi_oembeds.nonce, genericText: sbi_oembeds.genericText, images: sbi_oembeds.images, modal: sbi_oembeds.modal, links: sbi_oembeds.links, supportPageUrl: sbi_oembeds.supportPageUrl, socialWallActivated: sbi_oembeds.socialWallActivated, socialWallLinks: sbi_oembeds.socialWallLinks, stickyWidget: false, facebook: sbi_oembeds.facebook, instagram: sbi_oembeds.instagram, connectionURL: sbi_oembeds.connectionURL, isFacebookActivated: sbi_oembeds.facebook.active, facebookInstallBtnText: null, fboEmbedLoader: false, instaoEmbedLoader: false, openFacebookInstaller: false, loaderSVG: sbi_oembeds.loaderSVG, checkmarkSVG: sbi_oembeds.checkmarkSVG, timesCircleSVG: sbi_oembeds.timesCircleSVG, installerStatus: null } var sbioEmbeds = new Vue({ el: "#sbi-oembeds", http: { emulateJSON: true, emulateHTTP: true }, data: sbioembeds_data, methods: { openFacebookllModal: function() { this.openFacebookInstaller = true }, closeModal: function() { this.openFacebookInstaller = false }, isoEmbedsEnabled: function() { if ( this.facebook.doingOembeds && this.instagram.doingOembeds ) { return true; } return; }, FacebookShouldInstallOrEnable: function() { // if the plugin is activated and installed then just enable oEmbed if( this.isFacebookActivated ) { this.enableFacebookOembed(); return; } // if the plugin is not activated and installed then open the modal to install and activate the plugin if( !this.isFacebookActivated ) { this.openFacebookllModal(); return; } }, installFacebook: function() { this.installerStatus = 'loading'; let data = new FormData(); data.append( 'action', sbi_oembeds.facebook.installer.action ); data.append( 'nonce', sbi_oembeds.nonce ); data.append( 'plugin', sbi_oembeds.facebook.installer.plugin ); data.append( 'type', 'plugin' ); data.append( 'referrer', sbi_oembeds.facebook.installer.referrer ); fetch(sbi_oembeds.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == false ) { this.installerStatus = 'error' } if( data.success == true ) { this.isFacebookActivated = true; this.installerStatus = 'success' } if ( typeof data.data === 'object') { this.facebookInstallBtnText = data.data.msg; } else { this.facebookInstallBtnText = data.data; } setTimeout(function() { this.installerStatus = null; }.bind(this), 3000); return; }); }, enableInstaoEmbed: function () { this.instaoEmbedLoader = true; let oembedConnectUrl = this.connectionURL.connect, appendURL = this.connectionURL.stateURL; const urlParams = { 'sbi_con': this.connectionURL.sbi_con, 'state': "{'{url=" + appendURL + "}'}" } let form = document.createElement('form'); form.setAttribute('method', 'post'); form.setAttribute('action', oembedConnectUrl); for (const key in urlParams) { let hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', key); hiddenField.setAttribute('value', urlParams[key]); form.appendChild(hiddenField); } document.body.appendChild(form); form.submit(); }, enableFacebookOembed: function () { this.fboEmbedLoader = true; let oembedConnectUrl = this.connectionURL.connect, appendURL = this.connectionURL.stateURL; const urlParams = { 'sbi_con': this.connectionURL.sbi_con, 'state': "{'{url=" + appendURL + "}'}" } let form = document.createElement('form'); form.setAttribute('method', 'post'); form.setAttribute('action', oembedConnectUrl); for (const key in urlParams) { let hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', key); hiddenField.setAttribute('value', urlParams[key]); form.appendChild(hiddenField); } document.body.appendChild(form); form.submit(); }, disableFboEmbed: function() { this.fboEmbedLoader = true; let data = new FormData(); data.append( 'action', 'disable_facebook_oembed_from_instagram' ); data.append( 'nonce', this.nonce ); fetch(sbi_oembeds.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == true ) { this.fboEmbedLoader = false; this.facebook.doingOembeds = false; // get the updated connection URL after disabling oEmbed this.connectionURL = data.data.connectionUrl; } return; }); }, disableInstaoEmbed: function() { this.instaoEmbedLoader = true; let data = new FormData(); data.append( 'action', 'disable_instagram_oembed_from_instagram' ); data.append( 'nonce', this.nonce ); fetch(sbi_oembeds.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == true ) { this.instaoEmbedLoader = false; this.instagram.doingOembeds = false; // get the updated connection URL after disabling oEmbed this.connectionURL = data.data.connectionUrl; } return; }); }, installButtonText: function( buttonText = null ) { if ( buttonText ) { return buttonText; } else if ( this.facebook.installer.nextStep == 'free_install' ) { return this.modal.install; } else if ( this.facebook.installer.nextStep == 'free_activate' ) { return this.modal.activate; } }, installIcon: function() { if ( this.isFacebookActivated ) { return; } if( this.installerStatus == null ) { return this.modal.plusIcon; } else if( this.installerStatus == 'loading' ) { return this.loaderSVG; } else if( this.installerStatus == 'success' ) { return this.checkmarkSVG; } else if( this.installerStatus == 'error' ) { return this.timesCircleSVG; } }, /** * Toggle Sticky Widget view * * @since 4.0 */ toggleStickyWidget: function() { this.stickyWidget = !this.stickyWidget; }, }, created() { // Display the "Install" button text on modal depending on condition if ( this.facebook.installer.nextStep == 'free_install' ) { this.facebookInstallBtnText = this.modal.install; } else if ( this.facebook.installer.nextStep == 'free_activate' || this.facebook.installer.nextStep == 'pro_activate' ) { this.facebookInstallBtnText = this.modal.activate; } } })instagram-feed/admin/assets/js/callout.js000064400000002411151435171370014446 0ustar00const positionCalloutContainer = (leave = false) => { const calloutCtn = window.document.querySelectorAll('.sb-callout-ctn[data-type="side-menu"]'); if (calloutCtn[0]) { const calloutCtnRect = calloutCtn[0].getBoundingClientRect(); let calloutCtnRectY = calloutCtnRect.y, positionY = calloutCtnRectY + calloutCtnRect.height >= window.innerHeight; if (positionY && !leave) { calloutCtn[0].style.marginTop = -1 * ((calloutCtnRectY + calloutCtnRect.height) - window.innerHeight) +"px" //calloutCtn[0].setAttribute("data-position", "bottom") } else { calloutCtn[0].style.marginTop = "0px" //calloutCtn[0].removeAttribute("data-position") } } } window.onload = () => { positionCalloutContainer() window.addEventListener("resize", (event) => { positionCalloutContainer() }); if(document.getElementById("toplevel_page_sb-instagram-feed")) { document.getElementById("toplevel_page_sb-instagram-feed").addEventListener("mouseenter", (event) => { if (!document.body.classList.contains('index-php')) { positionCalloutContainer() } }); document.getElementById("toplevel_page_sb-instagram-feed").addEventListener("mouseleave", (event) => { if (!document.body.classList.contains('index-php')) { positionCalloutContainer(true) } }); } }instagram-feed/admin/assets/js/settings.js000064400000125034151435171370014652 0ustar00var sbiSettings; // Declaring as global variable for quick prototyping var settings_data = { adminUrl: sbi_settings.admin_url, nonce: sbi_settings.nonce, ajaxHandler: sbi_settings.ajax_handler, model: sbi_settings.model, feeds: sbi_settings.feeds, links: sbi_settings.links, tooltipName: null, sourcesList: sbi_settings.sources, dialogBoxPopupScreen: sbi_settings.dialogBoxPopupScreen, selectSourceScreen: sbi_settings.selectSourceScreen, uncannyAutomatorScreen : sbi_settings.uncannyAutomatorScreen, automatorInstallBtnStatus: 'normal', enableAutomatorSetupStep : sbi_settings.uncannyAutomatorScreen.enableSetupStep, uoActive : sbi_settings.uoActive, disableAutomatorBtn : false, socialWallActivated: sbi_settings.socialWallActivated, socialWallLinks: sbi_settings.socialWallLinks, stickyWidget: false, exportFeed: 'none', locales: sbi_settings.locales, timezones: sbi_settings.timezones, genericText: sbi_settings.genericText, generalTab: sbi_settings.generalTab, feedsTab: sbi_settings.feedsTab, translationTab: sbi_settings.translationTab, advancedTab: sbi_settings.advancedTab, footerUpgradeUrl: sbi_settings.footerUpgradeUrl, upgradeUrl: sbi_settings.upgradeUrl, supportPageUrl: sbi_settings.supportPageUrl, isDevSite: sbi_settings.isDevSite, licenseKey: sbi_settings.licenseKey, pluginItemName: sbi_settings.pluginItemName, licenseType: 'free', licenseStatus: sbi_settings.licenseStatus, licenseErrorMsg: sbi_settings.licenseErrorMsg, extensionsLicense: sbi_settings.extensionsLicense, extensionsLicenseKey: sbi_settings.extensionsLicenseKey, extensionFieldHasError: false, cronNextCheck: sbi_settings.nextCheck, currentView: null, selected: null, current: 0, sections: ["General", "Feeds", "Advanced"], indicator_width: 0, indicator_pos: 0, forwards: true, currentTab: null, import_file: null, gdprInfoTooltip: null, loaderSVG: sbi_settings.loaderSVG, timesCircleSVG: sbi_settings.timesCircleSVG, checkmarkSVG: sbi_settings.checkmarkSVG, uploadSVG: sbi_settings.uploadSVG, exportSVG: sbi_settings.exportSVG, reloadSVG: sbi_settings.reloadSVG, checkmarCircleSVG: sbi_settings.checkmarCircleSVG, tooltipHelpSvg: sbi_settings.tooltipHelpSvg, resetSVG: sbi_settings.resetSVG, tooltip: { text: '', hover: false }, cogSVG: sbi_settings.cogSVG, deleteSVG: sbi_settings.deleteSVG, svgIcons: sbi_settings.svgIcons, testConnectionStatus: null, recheckLicenseStatus: null, btnStatus: null, uploadStatus: null, clearCacheStatus: null, optimizeCacheStatus: null, clearErrorLogStatus: null, dpaResetStatus: null, pressedBtnName: null, loading: false, hasError: sbi_settings.hasError, dialogBox: { active: false, type: null, heading: null, description: null, customButtons: undefined }, sourceToDelete: {}, viewsActive: { sourcePopup: false, sourcePopupScreen: 'redirect_1', sourcePopupType: 'creation', instanceSourceActive: null, automatorIntegrationModal : false, }, //Add New Source newSourceData: sbi_settings.newSourceData ? sbi_settings.newSourceData : null, sourceConnectionURLs: sbi_settings.sourceConnectionURLs, returnedApiSourcesList: [], manualSourcePopupInit: sbi_settings.manualSourcePopupInit, addNewSource: { typeSelected: 'page', manualSourceID: null, manualSourceToken: null }, selectedFeed: 'none', expandedFeedID: null, notificationElement: { type: 'success', // success, error, warning, message text: '', shown: null }, selectedSourcesToConnect: [], //Loading Bar fullScreenLoader: false, appLoaded: false, previewLoaded: false, loadingBar: true }; // The tab component Vue.component("tab", { props: ["section", "index"], template: ` {{section}} `, created: () => { let urlParams = new URLSearchParams(window.location.search); let view = urlParams.get('view'); if (view === null) { view = 'general'; } settings_data.currentView = view; settings_data.currentTab = settings_data.sections[0]; settings_data.selected = "app-1"; }, methods: { emitWidth: function (el) { settings_data.indicator_width = jQuery(el).outerWidth(); settings_data.indicator_pos = jQuery(el).position().left; }, changeComponent: function (index) { var prev = settings_data.current; if (prev < index) { settings_data.forwards = false; } else if (prev > index) { settings_data.forwards = true; } settings_data.selected = "app-" + (index + 1); settings_data.current = index; }, activeTab: function (section) { this.setView(section.toLowerCase().trim()); settings_data.currentTab = section; }, setView: function (section) { history.replaceState({}, null, settings_data.adminUrl + 'admin.php?page=sbi-settings&view=' + section); } } }); var sbiSettings = new Vue({ el: "#sbi-settings", http: { emulateJSON: true, emulateHTTP: true }, data: settings_data, created: function () { this.$nextTick(function () { let tabEl = document.querySelector('.tab'); settings_data.indicator_width = tabEl.offsetWidth; }); setTimeout(function () { settings_data.appLoaded = true; }, 350); }, mounted: function () { var self = this; // set the current view page on page load let activeEl = document.querySelector('a.tab#' + settings_data.currentView); // we have to uppercase the first letter let currentView = settings_data.currentView.charAt(0).toUpperCase() + settings_data.currentView.slice(1); let viewIndex = settings_data.sections.indexOf(currentView) + 1; settings_data.indicator_width = activeEl.offsetWidth; settings_data.indicator_pos = activeEl.offsetLeft; settings_data.selected = "app-" + viewIndex; settings_data.current = viewIndex; settings_data.currentTab = currentView; setTimeout(function () { settings_data.appLoaded = true; }, 350); }, computed: { getStyle: function () { return { position: "absolute", bottom: "0px", left: settings_data.indicator_pos + "px", width: settings_data.indicator_width + "px", height: "2px" }; }, chooseDirection: function () { return "slide-fade"; } }, methods: { activateLicense: function () { if (this.licenseType === 'free') { this.runOneClickUpgrade(); } else { this.activateProLicense(); } }, activateProLicense: function () { this.hasError = false; this.loading = true; this.pressedBtnName = 'sbi'; let data = new FormData(); data.append('action', 'sbi_activate_license'); data.append('license_key', this.licenseKey); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == false) { this.licenseStatus = 'inactive'; this.hasError = true; this.loading = false; return; } if (data.success == true) { let licenseData = data.data.licenseData; this.licenseStatus = data.data.licenseStatus; this.loading = false; this.pressedBtnName = null; if ( data.data.licenseStatus == 'inactive' || data.data.licenseStatus == 'invalid' || data.data.licenseStatus == 'expired' ) { this.hasError = true; if (licenseData.error) { this.licenseErrorMsg = licenseData.errorMsg } } } return; }); }, deactivateLicense: function () { this.loading = true; this.pressedBtnName = 'sbi'; let data = new FormData(); data.append('action', 'sbi_deactivate_license'); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == true) { this.licenseStatus = data.data.licenseStatus; this.loading = false; this.pressedBtnName = null; } return; }); }, runOneClickUpgrade: function () { this.hasError = false; this.loading = true; this.pressedBtnName = 'sbi'; let data = new FormData(); data.append('action', 'sbi_maybe_upgrade_redirect'); data.append('license_key', this.licenseKey); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success === false) { this.licenseStatus = 'invalid'; this.hasError = true; this.loading = false; if (typeof data.data !== 'undefined') { this.licenseErrorMsg = data.data.message } return; } if (data.success === true) { window.location.href = data.data.url } return; }); }, licenseActiveAction: function (extension) { extension = typeof extension !== 'undefined' ? extension : false; if (this.licenseType === 'free') { this.runOneClickUpgrade(); } else { if (typeof extension !== 'undefined') { this.deactivateExtensionLicense(extension); } else { this.deactivateLicense(); } } }, /** * Activate Extensions License * * @since 4.0 * * @param {object} extension */ activateExtensionLicense: function (extension) { let licenseKey = this.extensionsLicenseKey[extension.name]; this.extensionFieldHasError = false; this.loading = true; this.pressedBtnName = extension.name; if (!licenseKey) { this.loading = false; this.extensionFieldHasError = true; return; } let data = new FormData(); data.append('action', 'sbi_activate_extension_license'); data.append('license_key', licenseKey); data.append('extension_name', extension.name); data.append('extension_item_name', extension.itemName); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { this.loading = false; if (data.success == true) { this.extensionFieldHasError = false; this.pressedBtnName = null; if (data.data.licenseStatus == 'invalid') { this.extensionFieldHasError = true; this.notificationElement = { type: 'error', text: this.genericText.invalidLicenseKey, shown: "shown" }; } if (data.data.licenseStatus == 'valid') { this.notificationElement = { type: 'success', text: this.genericText.licenseActivated, shown: "shown" }; } extension.licenseStatus = data.data.licenseStatus; extension.licenseKey = licenseKey; setTimeout(function () { this.notificationElement.shown = "hidden"; }.bind(this), 3000); } return; }); }, /** * Deactivate Extensions License * * @since 4.0 * * @param {object} extension */ deactivateExtensionLicense: function (extension) { let licenseKey = this.extensionsLicenseKey[extension.name]; this.extensionFieldHasError = false; this.loading = true; this.pressedBtnName = extension.name; let data = new FormData(); data.append('action', 'sbi_deactivate_extension_license'); data.append('extension_name', extension.name); data.append('extension_item_name', extension.itemName); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { this.loading = false; if (data.success == true) { this.extensionFieldHasError = false; this.pressedBtnName = null; if (data.data.licenseStatus == 'deactivated') { this.notificationElement = { type: 'success', text: this.genericText.licenseDeactivated, shown: "shown" }; } extension.licenseStatus = data.data.licenseStatus; extension.licenseKey = licenseKey; setTimeout(function () { this.notificationElement.shown = "hidden"; }.bind(this), 3000); } return; }); }, testConnection: function () { this.testConnectionStatus = 'loading'; let data = new FormData(); data.append('action', 'sbi_test_connection'); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == false) { this.testConnectionStatus = 'error'; this.testConnectionStatusMessage = data.data.error; } if (data.success == true) { this.testConnectionStatus = 'success'; setTimeout(function () { this.testConnectionStatus = null; }.bind(this), 3000); } return; }); }, recheckLicense: function (licenseKey, itemName, optionName = null) { this.recheckLicenseStatus = 'loading'; this.pressedBtnName = optionName; let data = new FormData(); data.append('action', 'sbi_recheck_connection'); data.append('license_key', licenseKey); data.append('item_name', itemName); data.append('option_name', optionName); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == true) { if (data.data.license == 'valid') { this.recheckLicenseStatus = 'success'; } if (data.data.license == 'expired') { this.recheckLicenseStatus = 'error'; } // if the api license status has changed from old stored license status // then reload the page to show proper error message and notices // or hide error messages and notices if (data.data.licenseChanged == true) { location.reload(); } setTimeout(function () { this.pressedBtnName = null; this.recheckLicenseStatus = null; }.bind(this), 3000); } return; }); }, recheckLicenseIcon: function () { if (this.recheckLicenseStatus == null) { return this.generalTab.licenseBox.recheckLicense; } else if (this.recheckLicenseStatus == 'loading') { return this.loaderSVG; } else if (this.recheckLicenseStatus == 'success') { return this.timesCircleSVG + ' ' + this.generalTab.licenseBox.licenseValid; } else if (this.recheckLicenseStatus == 'error') { return this.timesCircleSVG + ' ' + this.generalTab.licenseBox.licenseExpired; } }, recheckBtnText: function (btnName) { if (this.recheckLicenseStatus == null || this.pressedBtnName != btnName) { return this.generalTab.licenseBox.recheckLicense; } else if (this.recheckLicenseStatus == 'loading' && this.pressedBtnName == btnName) { return this.loaderSVG; } else if (this.recheckLicenseStatus == 'success') { return this.timesCircleSVG + ' ' + this.generalTab.licenseBox.licenseValid; } else if (this.recheckLicenseStatus == 'error') { return this.timesCircleSVG + ' ' + this.generalTab.licenseBox.licenseExpired; } }, testConnectionIcon: function () { if (this.testConnectionStatus == 'loading') { return this.loaderSVG; } else if (this.testConnectionStatus == 'success') { return this.timesCircleSVG + ' ' + this.generalTab.licenseBox.connectionSuccessful; } else if (this.testConnectionStatus == 'error') { return this.timesCircleSVG + ' ' + ` ${this.generalTab.licenseBox.connectionFailed} ${this.testConnectionStatusMessage}`; } }, importFile: function () { document.getElementById("import_file").click(); }, uploadFile: function (event) { this.uploadStatus = 'loading'; let file = this.$refs.file.files[0]; let data = new FormData(); data.append('action', 'sbi_import_settings_json'); data.append('file', file); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { this.uploadStatus = null; this.$refs.file.files[0] = null; if (data.success == false) { this.notificationElement = { type: 'error', text: this.genericText.failedToImportFeed, shown: "shown" }; } if (data.success == true) { this.feeds = data.data.feeds; this.notificationElement = { type: 'success', text: this.genericText.feedImported, shown: "shown" }; } setTimeout(function () { this.notificationElement.shown = "hidden"; }.bind(this), 3000); }); }, exportFeedSettings: function () { // return if no feed is selected if (this.exportFeed === 'none') { return; } let url = this.ajaxHandler + '?action=sbi_export_settings_json&nonce=' + this.nonce + '&feed_id=' + this.exportFeed; window.location = url; }, saveSettings: function () { this.btnStatus = 'loading'; this.pressedBtnName = 'saveChanges'; let data = new FormData(); data.append('action', 'sbi_save_settings'); data.append('model', JSON.stringify(this.model)); data.append('sbi_license_key', this.licenseKey); data.append('extensions_license_key', JSON.stringify(this.extensionsLicenseKey)); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == false) { this.btnStatus = 'error'; return; } this.cronNextCheck = data.data.cronNextCheck; this.btnStatus = 'success'; setTimeout(function () { this.btnStatus = null; this.pressedBtnName = null; }.bind(this), 3000); }); }, clearCache: function () { this.clearCacheStatus = 'loading'; let data = new FormData(); data.append('action', 'sbi_clear_cache'); data.append('model', JSON.stringify(this.model)); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == false) { this.clearCacheStatus = 'error'; return; } this.cronNextCheck = data.data.cronNextCheck; this.clearCacheStatus = 'success'; setTimeout(function () { this.clearCacheStatus = null; }.bind(this), 3000); }); }, installAutomatorPlugin: function(ispluginInstalled, isPluginActive, pluginDownloadPath, automatorPlugin) { var self = this; self.automatorInstallBtnStatus = 'loading'; self.disableAutomatorBtn = true; let data = new FormData(); data.append( 'action', ! ispluginInstalled ? 'sbi_install_addon' : 'sbi_activate_addon' ); data.append( 'nonce', self.nonce ); data.append( 'type', 'plugin' ); data.append( 'plugin', ! ispluginInstalled ? pluginDownloadPath : automatorPlugin ); fetch(self.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if ( data.success === true ) { self.automatorInstallBtnStatus = 'success'; self.enableAutomatorSetupStep = true; } else { self.automatorInstallBtnStatus = 'normal'; self.disableAutomatorBtn = false; } }); }, dismissAutomatorNotice: function() { var self = this; // Remove the notice instantly from the UI for better user experience self.uncannyAutomatorScreen.shouldHideAutomatorNotice = true; let data = new FormData(); data.append( 'action', 'sbi_dismiss_automator_notice' ); data.append( 'nonce', self.nonce ); fetch(self.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) }, automatorInstallBtnIcon: function() { if ( this.automatorInstallBtnStatus == 'loading' ) { return this.loaderSVG; } else if ( this.automatorInstallBtnStatus == 'success' ) { return this.checkmarCircleSVG; } else if ( this.automatorInstallBtnStatus == 'error' ) { return this.timesSVG; } if ( this.uncannyAutomatorScreen.isPluginInstalled && this.uncannyAutomatorScreen.isPluginActive ) { return this.checkmarCircleSVG; } return this.uncannyAutomatorScreen.installSVG; }, automatorInstallBtnText: function() { if ( this.automatorInstallBtnStatus == 'loading' ) { return 'Installing'; } else if ( this.automatorInstallBtnStatus == 'success' ) { return 'Installed & Activated Successfully'; } if ( this.uncannyAutomatorScreen.isPluginInstalled && !this.uncannyAutomatorScreen.isPluginActive ) { return 'Activate Plugin'; } if ( this.uncannyAutomatorScreen.isPluginInstalled && this.uncannyAutomatorScreen.isPluginActive ) { return 'Plugin Installed & Activated'; } return 'Install Plugin'; }, setupAutomatorPlugin: function() { var self = this; let data = new FormData(); data.append( 'action', 'sbi_automator_setup_source' ); data.append( 'nonce', self.nonce ); fetch(self.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if ( data.success === true ) { window.location.href = self.adminUrl + self.uncannyAutomatorScreen.setupPage; } }); }, showTooltip: function (tooltipName) { this.tooltipName = tooltipName; }, hideTooltip: function () { this.tooltipName = null; }, gdprOptions: function () { this.gdprInfoTooltip = null; }, gdprLimited: function () { this.gdprInfoTooltip = this.gdprInfoTooltip == null ? true : null; }, clearImageResizeCache: function () { this.optimizeCacheStatus = 'loading'; let data = new FormData(); data.append('action', 'sbi_clear_image_resize_cache'); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == false) { this.optimizeCacheStatus = 'error'; return; } this.optimizeCacheStatus = 'success'; setTimeout(function () { this.optimizeCacheStatus = null; }.bind(this), 3000); }); }, resetErrorLog: function () { this.clearErrorLogStatus = 'loading'; let data = new FormData(); data.append('action', 'sbi_clear_error_log'); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (!data.success) { this.clearErrorLogStatus = 'error'; return; } this.clearErrorLogStatus = 'success'; setTimeout(function () { this.clearErrorLogStatus = null; }.bind(this), 3000); }); }, dpaReset: function () { this.dpaResetStatus = 'loading'; let data = new FormData(); data.append('action', 'sbi_dpa_reset'); data.append('nonce', this.nonce); fetch(this.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (data.success == false) { this.dpaResetStatus = 'error'; return; } this.dpaResetStatus = 'success'; setTimeout(function () { this.dpaResetStatus = null; }.bind(this), 3000); }); }, resetErrorLogIcon: function () { if (this.clearErrorLogStatus === null) { return; } if (this.clearErrorLogStatus == 'loading') { return this.loaderSVG; } else if (this.clearErrorLogStatus == 'success') { return this.checkmarkSVG; } else if (this.clearErrorLogStatus == 'error') { return this.timesCircleSVG; } }, saveChangesIcon: function () { if (this.btnStatus === 'loading') { return this.loaderSVG; } else if (this.btnStatus === 'success') { return this.checkmarkSVG; } else if (this.btnStatus === 'error') { return this.timesCircleSVG; } }, importBtnIcon: function () { if (this.uploadStatus === null) { return this.uploadSVG; } if (this.uploadStatus == 'loading') { return this.loaderSVG; } else if (this.uploadStatus == 'success') { return this.checkmarkSVG; } else if (this.uploadStatus == 'error') { return this.timesCircleSVG; } }, clearCacheIcon: function () { if (this.clearCacheStatus === null) { return this.reloadSVG; } if (this.clearCacheStatus == 'loading') { return this.loaderSVG; } else if (this.clearCacheStatus == 'success') { return this.checkmarkSVG; } else if (this.clearCacheStatus == 'error') { return this.timesCircleSVG; } }, clearImageResizeCacheIcon: function () { if (this.optimizeCacheStatus === null) { return this.resetSVG; } if (this.optimizeCacheStatus == 'loading') { return this.loaderSVG; } else if (this.optimizeCacheStatus == 'success') { return this.checkmarkSVG; } else if (this.optimizeCacheStatus == 'error') { return this.timesCircleSVG; } }, dpaResetStatusIcon: function () { if (this.dpaResetStatus === null) { return; } if (this.dpaResetStatus == 'loading') { return this.loaderSVG; } else if (this.dpaResetStatus == 'success') { return this.checkmarkSVG; } else if (this.dpaResetStatus == 'error') { return this.timesCircleSVG; } }, /** * Toggle Sticky Widget view * * @since 4.0 */ toggleStickyWidget: function () { this.stickyWidget = !this.stickyWidget; }, printUsedInText: function (usedInNumber) { if (usedInNumber == 0) { return this.genericText.sourceNotUsedYet; } return this.genericText.usedIn + ' ' + usedInNumber + ' ' + (usedInNumber == 1 ? this.genericText.feed : this.genericText.feeds); }, /** * Delete Source Ajax * * @since 4.0 */ deleteSource: function (sourceToDelete) { var self = this; let data = new FormData(); data.append('action', 'sbi_feed_saver_manager_delete_source'); data.append('source_id', sourceToDelete.id); data.append('username', sourceToDelete.username); data.append('nonce', this.nonce); fetch(self.ajaxHandler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if (sourceToDelete.just_added) { window.location.href = window.location.href.replace('sbi_access_token', 'sbi_null'); } self.sourcesList = data; }); }, /** * Check if Value is Empty * * @since 4.0 * * @return boolean */ checkNotEmpty: function (value) { return value != null && value.replace(/ /gi, '') != ''; }, /** * Activate View * * @since 4.0 */ activateView: function (viewName, sourcePopupType = 'creation', ajaxAction = false) { var self = this; self.viewsActive[viewName] = (self.viewsActive[viewName] == false) ? true : false; if (viewName == 'sourcePopup' && sourcePopupType == 'creationRedirect') { setTimeout(function () { self.$refs.addSourceRef.processIFConnect() }, 3500); } }, /** * Switch & Change Feed Screens * * @since 4.0 */ switchScreen: function (screenType, screenName) { this.viewsActive[screenType] = screenName; }, /** * Parse JSON * * @since 4.0 * * @return jsonObject / Boolean */ jsonParse: function (jsonString) { try { return JSON.parse(jsonString); } catch (e) { return false; } }, /** * Ajax Post Action * * @since 4.0 */ ajaxPost: function (data, callback) { var self = this; self.$http.post(self.ajaxHandler, data).then(callback); }, /** * Check if Object has Nested Property * * @since 4.0 * * @return boolean */ hasOwnNestedProperty: function (obj, propertyPath) { if (!propertyPath) { return false; } var properties = propertyPath.split('.'); for (var i = 0; i < properties.length; i++) { var prop = properties[i]; if (!obj || !obj.hasOwnProperty(prop)) { return false; } else { obj = obj[prop]; } } return true; }, /** * Show Tooltip on Hover * * @since 4.0 */ toggleElementTooltip: function (tooltipText, type, align = 'center') { var self = this, target = window.event.currentTarget, tooltip = (target != undefined && target != null) ? document.querySelector('.sb-control-elem-tltp-content') : null; if (tooltip != null && type == 'show') { self.tooltip.text = tooltipText; var position = target.getBoundingClientRect(), left = position.left + 10, top = position.top - 10; tooltip.style.left = left + 'px'; tooltip.style.top = top + 'px'; tooltip.style.textAlign = align; self.tooltip.hover = true; } if (type == 'hide') { self.tooltip.hover = false; } }, /** * Hover Tooltip * * @since 4.0 */ hoverTooltip: function (type) { this.tooltip.hover = type; }, /** * Open Dialog Box * * @since 4.0 */ openDialogBox: function (type, args = []) { var self = this, heading = self.dialogBoxPopupScreen[type].heading, description = self.dialogBoxPopupScreen[type].description, customButtons = self.dialogBoxPopupScreen[type].customButtons; switch (type) { case "deleteSource": self.sourceToDelete = args; heading = heading.replace("#", self.sourceToDelete.username); break; } self.dialogBox = { active: true, type: type, heading: heading, description: description, customButtons: customButtons }; }, /** * Confirm Dialog Box Actions * * @since 4.0 */ confirmDialogAction: function () { var self = this; switch (self.dialogBox.type) { case 'deleteSource': self.deleteSource(self.sourceToDelete); break; } }, /** * Display Feed Sources Settings * * @since 4.0 * * @param {object} source * @param {int} sourceIndex */ displayFeedSettings: function (source, sourceIndex) { this.expandedFeedID = sourceIndex + 1; }, /** * Hide Feed Sources Settings * * @since 4.0 * * @param {object} source * @param {int} sourceIndex */ hideFeedSettings: function () { this.expandedFeedID = null; }, /** * Copy text to clipboard * * @since 4.0 */ copyToClipBoard: function (value) { var self = this; const el = document.createElement('textarea'); el.className = 'sbi-fb-cp-clpboard'; el.value = value; document.body.appendChild(el); el.select(); document.execCommand('copy'); document.body.removeChild(el); self.notificationElement = { type: 'success', text: this.genericText.copiedClipboard, shown: "shown" }; setTimeout(function () { self.notificationElement.shown = "hidden"; }, 3000); }, escapeHTML: function (text) { return text.replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """) .replace(/'/g, "'"); }, /** * View Source Instances * * @since 4.0 */ viewSourceInstances: function (source) { var self = this; self.viewsActive.instanceSourceActive = source; }, /** * Return Page/Group Avatar * * @since 4.0 * * @return string */ returnAccountAvatar: function (source) { if (typeof source.local_avatar_url !== "undefined" && source.local_avatar_url !== '') { return source.local_avatar_url; } if (typeof source.avatar_url !== "undefined" && source.avatar_url !== '') { return source.avatar_url; } return false; }, /** * Trigger & Open Personal Account Info Dialog * * @since 6.0.8 * * @return string */ openPersonalAccount: function (source) { let self = this; self.$refs.personalAccountRef.personalAccountInfo.id = source.account_id; self.$refs.personalAccountRef.personalAccountInfo.username = source.username; self.$refs.personalAccountRef.personalAccountInfo.bio = source?.header_data?.biography; self.$refs.personalAccountRef.personalAccountPopup = true; self.$refs.personalAccountRef.step = 2; }, /** * Cancel Personal Account * * @since 6.0.8 */ cancelPersonalAccountUpdate: function () { }, successPersonalAccountUpdate: function () { let self = this; self.notificationElement = { type: 'success', text: self.genericText.personalAccountUpdated, shown: "shown" }; setTimeout(function () { self.notificationElement.shown = "hidden"; }, 3000); sbiSettings.$forceUpdate(); }, } }); instagram-feed/admin/assets/js/admin-notifications.js000064400000010071151435171370016743 0ustar00/** * CFF Admin Notifications. * * @since 2.18 */ 'use strict'; var SBIAdminNotifications = window.SBIAdminNotifications || ( function( document, window, $ ) { /** * Elements holder. * * @since 2.18 * * @type {object} */ var el = { $notifications: $( '#sbi-notifications' ), $nextButton: $( '#sbi-notifications .navigation .next' ), $prevButton: $( '#sbi-notifications .navigation .prev' ), $adminBarCounter: $( '#wp-admin-bar-wpforms-menu .sbi-menu-notification-counter' ), $adminBarMenuItem: $( '#wp-admin-bar-sbi-notifications' ), }; /** * Public functions and properties. * * @since 2.18 * * @type {object} */ var app = { /** * Start the engine. * * @since 2.18 */ init: function() { el.$notifications.find( '.messages a').each(function() { if ($(this).attr('href').indexOf('dismiss=') > -1 ) { $(this).addClass('button-dismiss'); } }) $( app.ready ); }, /** * Document ready. * * @since 2.18 */ ready: function() { app.updateNavigation(); app.events(); }, /** * Register JS events. * * @since 2.18 */ events: function() { el.$notifications .on( 'click', '.dismiss', app.dismiss ) .on( 'click', '.button-dismiss', app.buttonDismiss ) .on( 'click', '.next', app.navNext ) .on( 'click', '.prev', app.navPrev ); }, /** * Click on a dismiss button. * * @since 2.18 */ buttonDismiss: function( event ) { event.preventDefault(); app.dismiss(); }, /** * Click on the Dismiss notification button. * * @since 2.18 * * @param {object} event Event object. */ dismiss: function( event ) { if ( el.$currentMessage.length === 0 ) { return; } // Update counter. var count = parseInt( el.$adminBarCounter.text(), 10 ); if ( count > 1 ) { --count; el.$adminBarCounter.html( '' + count + '' ); } else { el.$adminBarCounter.remove(); el.$adminBarMenuItem.remove(); } // Remove notification. var $nextMessage = el.$nextMessage.length < 1 ? el.$prevMessage : el.$nextMessage, messageId = el.$currentMessage.data( 'message-id' ); if ( $nextMessage.length === 0 ) { el.$notifications.remove(); } else { el.$currentMessage.remove(); $nextMessage.addClass( 'current' ); app.updateNavigation(); } // AJAX call - update option. var data = { action: 'sbi_dashboard_notification_dismiss', nonce: sbi_admin.nonce, id: messageId, }; $.post( sbi_admin.ajax_url, data, function( res ) { if ( ! res.success ) { //sbiAdmin.debug( res ); } } ).fail( function( xhr, textStatus, e ) { //sbiAdmin.debug( xhr.responseText ); } ); }, /** * Click on the Next notification button. * * @since 2.18 * * @param {object} event Event object. */ navNext: function( event ) { if ( el.$nextButton.hasClass( 'disabled' ) ) { return; } el.$currentMessage.removeClass( 'current' ); el.$nextMessage.addClass( 'current' ); app.updateNavigation(); }, /** * Click on the Previous notification button. * * @since 2.18 * * @param {object} event Event object. */ navPrev: function( event ) { if ( el.$prevButton.hasClass( 'disabled' ) ) { return; } el.$currentMessage.removeClass( 'current' ); el.$prevMessage.addClass( 'current' ); app.updateNavigation(); }, /** * Update navigation buttons. * * @since 2.18 */ updateNavigation: function() { el.$currentMessage = el.$notifications.find( '.message.current' ); el.$nextMessage = el.$currentMessage.next( '.message' ); el.$prevMessage = el.$currentMessage.prev( '.message' ); if ( el.$nextMessage.length === 0 ) { el.$nextButton.addClass( 'disabled' ); } else { el.$nextButton.removeClass( 'disabled' ); } if ( el.$prevMessage.length === 0 ) { el.$prevButton.addClass( 'disabled' ); } else { el.$prevButton.removeClass( 'disabled' ); } }, }; return app; }( document, window, jQuery ) ); // Initialize. SBIAdminNotifications.init(); instagram-feed/admin/assets/js/elementor-handler.js000064400000013460151435171370016416 0ustar00'use strict'; /** * Used to handle : * Click of Non-Installed Plugins * Show Upsell Popup * Unbind Drag & Drop */ let SbElementorHandler = window.SbElementorHandler || ( function( _document, window, $ ) { const smashBalloonPlugins = sbHandler.smashPlugins; let app = { init: function() { app.events(); }, events: function() { $( window ).on('elementor/frontend/init', function () { app.disableInactiveSmashWidgets(); setTimeout(function(){ elementor.panel.$el.on('click', function () { app.disableInactiveSmashWidgets(); }); }, 300) }); }, disableInactiveSmashWidgets : function(){ setTimeout(function(){ for (const pluginName in smashBalloonPlugins) { let plugin = smashBalloonPlugins[pluginName], pluginWidget = elementor.panel.$el.find("#elementor-panel-category-smash-balloon").find('.sb-elem-inactive.sb-elem-'+pluginName).parents('.elementor-element-wrapper').find('.elementor-element'); pluginWidget.attr('draggable', false); pluginWidget.on('click', function(){ app.createUpsellPopup( pluginName ); }); } }, 500) }, createUpsellPopup : function( pluginName ){ let plugin = smashBalloonPlugins[pluginName], spinnerIcon = '', upsellPopupOutput = '

\
\
\ \ \ \
\
\
\
' + plugin["icon"] + '\ \
\
\ Requires\

\ ' + pluginName + '\ Free\

\
\
\
\

' + plugin["description"] + '

\ \ \
\
\
\
'; if($(window.parent.document.body).find('.sb-center-boss').length === 0){ $(window.parent.document.body).append(upsellPopupOutput); } $(window.parent.document.body).find('.sb-install-plugin-btn').on('click', function(){ let downloadPlugin = $(this).attr('data-plugin'); $(this).find('.sb-install-plugin-spinner').show(); app.installPlugin(downloadPlugin); }); $(window.parent.document.body).find('.sb-install-refresh-btn').on('click', function(){ window.parent.location.reload(); }); $(window.parent.document.body).find('.sb-popup-cls').on('click', function(){ app.closeUpsellPopup(); }); }, closeUpsellPopup : function(){ $(window.parent.document.body).find('.sb-center-boss').remove(); }, installPlugin : function(downloadPlugin){ let data = new FormData(); data.append( 'action', 'sbi_install_addon' ); data.append( 'nonce', sbHandler.nonce ); data.append( 'plugin', downloadPlugin ); data.append( 'type', 'plugin' ); fetch(sbHandler.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { $(window.parent.document.body).find('.sb-install-plugin-btn').hide(); if( data.success == true ) { $(window.parent.document.body).find('.sb-install-refresh-btn').show(); } }); } }; return app; }( document, window, jQuery ) ); SbElementorHandler.init();instagram-feed/admin/assets/js/support-tool.js000064400000013036151435171370015477 0ustar00function openTab(evt, tabName) { let i, tabcontent, tablinks; tabcontent = document.getElementsByClassName("sbi-support-tool-tabcontent"); for (i = 0; i < tabcontent.length; i++) { tabcontent[i].style.display = "none"; } tablinks = document.getElementsByClassName("sbi-support-tool-tablinks"); for (i = 0; i < tablinks.length; i++) { tablinks[i].className = tablinks[i].className.replace(" active", ""); } document.getElementById(tabName).style.display = "block"; evt.currentTarget.className += " active"; } jQuery(document).ready(function ($) { function handleAjaxRequest(nonce, data, successCallback) { $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'sbi_get_api_calls_handler', nonce: nonce, ...data, }, success: successCallback, }); } function handleResponse(response, responseDiv) { let responseDivMessage = responseDiv.find('.sbi-response-message'); if (response.success) { let api_response = response['data']['api_response']; if (api_response['data'] && api_response['data'][0]) { let post = api_response['data'][0]; let id = post['id']; let media_type = post['media_type'] ? post['media_type'] : post['media_product_type']; let media_url = post['media_url'] ? post['media_url'] : post['thumbnail_url']; let caption = post['caption'] ? post['caption'] : ''; let permalink = post['permalink']; responseDivMessage.html('
Instagram Post

ID: ' + id + '

Media Type: ' + media_type + '

Caption: ' + caption + '

Permalink: ' + permalink + '

'); responseDivMessage.append('
' + JSON.stringify(api_response, null, 2) + '
'); } else { responseDivMessage.html('
' + JSON.stringify(api_response, null, 2) + '
'); } } else { responseDivMessage.html('
' + JSON.stringify(response['data'], null, 2) + '
'); } } $('.sbi-get-account-info').on('click', function (e) { e.preventDefault(); $('.sbi-response-message').html(''); $('.sbi-checkboxes').hide(); $('.sbi-hashtags-inner').hide(); let user_id = $(this).data('user-id'); let account_type = $(this).data('account-type'); let nonce = sbi_support_tool.nonce; let ajax_action = 'user_info'; let responseDiv = $('.sbi-response[data-id="' + user_id + '"]'); responseDiv.html('

Loading...

'); handleAjaxRequest(nonce, { user_id, account_type, ajax_action }, function (response) { handleResponse(response, responseDiv); }); }); $('.sbi-get-media').on('click', function (e) { e.preventDefault(); $('.sbi-response-message').html(''); $('.sbi-hashtags-inner').hide(); // reset to default, do not change the checkbox with disabled and checked, only change the checkbox without disabled and checked. $('.sbi-checkboxes input[type="checkbox"]').prop('checked', false); $('.sbi-checkboxes input[type="checkbox"]').prop('disabled', false); $('.sbi-checkboxes input[type="checkbox"]').each(function () { if ($(this).val() === 'id' || $(this).val() === 'username' || $(this).val() === 'media_type' || $(this).val() === 'media_product_type' || $(this).val() === 'timestamp' || $(this).val() === 'permalink' || $(this).val() === 'caption' || $(this).val() === 'media_url') { $(this).prop('checked', true); $(this).prop('disabled', true); } }); $('.sbi-checkboxes').hide(); let checkboxes = $(this).siblings('.sbi-checkboxes'); checkboxes.show(); }); $('.sbi-confirm').on('click', function (e) { e.preventDefault(); $('.sbi-response-message').html(''); $('.sbi-checkboxes').hide(); let user_id = $(this).data('user-id'); let account_type = $(this).data('account-type'); let nonce = sbi_support_tool.nonce; let post_limit = $(this).parents('.sbi-checkboxes').find('input[name="sbi_post_limit"]').val(); let ajax_action = 'media'; let media_fields = ''; let checkboxes = $(this).parents('.sbi-checkboxes'); checkboxes.find('input[type="checkbox"]:checked').each(function () { media_fields += $(this).val() + ','; }); media_fields = media_fields.slice(0, -1); // Remove the trailing comma let responseDiv = $('.sbi-response[data-id="' + user_id + '"]'); responseDiv.html('

Loading...

'); handleAjaxRequest(nonce, { user_id, account_type, media_fields, post_limit, ajax_action }, function (response) { handleResponse(response, responseDiv); }); }); $('.sbi-cancel').on('click', function (e) { e.preventDefault(); $('.sbi-checkboxes').hide(); }); });instagram-feed/admin/assets/js/about.js000064400000012230151435171370014115 0ustar00var extensions_data = { genericText: sbi_about.genericText, links: sbi_about.links, extentions_bundle: sbi_about.extentions_bundle, supportPageUrl: sbi_about.supportPageUrl, plugins: sbi_about.pluginsInfo, stickyWidget: false, socialWallActivated: sbi_about.socialWallActivated, socialWallLinks: sbi_about.socialWallLinks, recommendedPlugins: sbi_about.recommendedPlugins, social_wall: sbi_about.social_wall, aboutBox: sbi_about.aboutBox, ajax_handler: sbi_about.ajax_handler, nonce: sbi_about.nonce, buttons: sbi_about.buttons, icons: sbi_about.icons, btnClicked: null, btnStatus: null, btnName: null, } var sbiAbout = new Vue({ el: "#sbi-about", http: { emulateJSON: true, emulateHTTP: true }, data: extensions_data, methods: { activatePlugin: function( plugin, name, index, type ) { this.btnClicked = index + 1; this.btnStatus = 'loading'; this.btnName = name; let data = new FormData(); data.append( 'action', 'sbi_activate_addon' ); data.append( 'nonce', this.nonce ); data.append( 'plugin', plugin ); data.append( 'type', 'plugin' ); if ( this.extentions_bundle && type == 'extension' ) { data.append( 'extensions_bundle', this.extentions_bundle ); } fetch(this.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == true ) { if ( name === 'social_wall' ) { this.social_wall.activated = true; } else if ( type === 'recommended_plugin' ) { this.recommendedPlugins[name].activated = true; } else { this.plugins[name].activated = true; } this.btnClicked = null; this.btnStatus = null; this.btnName = null; } }); }, deactivatePlugin: function( plugin, name, index, type ) { this.btnClicked = index + 1; this.btnStatus = 'loading'; this.btnName = name; let data = new FormData(); data.append( 'action', 'sbi_deactivate_addon' ); data.append( 'nonce', this.nonce ); data.append( 'plugin', plugin ); data.append( 'type', 'plugin' ); if ( this.extentions_bundle && type == 'extension' ) { data.append( 'extensions_bundle', this.extentions_bundle ); } fetch(this.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == true ) { if ( name === 'social_wall' ) { this.social_wall.activated = false; } else if ( type === 'recommended_plugin' ) { this.recommendedPlugins[name].activated = false; } else { this.plugins[name].activated = false; } this.btnClicked = null; this.btnName = null; this.btnStatus = null; } return; }); }, installPlugin: function( plugin, name, index, type ) { this.btnClicked = index + 1; this.btnStatus = 'loading'; this.btnName = name; let data = new FormData(); data.append( 'action', 'sbi_install_addon' ); data.append( 'nonce', this.nonce ); data.append( 'plugin', plugin ); data.append( 'type', 'plugin' ); fetch(this.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == true ) { if ( type === 'recommended_plugin' ) { this.recommendedPlugins[name].installed = true; this.recommendedPlugins[name].activated = true; } else { this.plugins[name].installed = true; this.plugins[name].activated = true; } this.btnClicked = null; this.btnName = null; this.btnStatus = null; } return; }); }, buttonIcon: function() { if ( this.btnStatus == 'loading' ) { return this.icons.loaderSVG } }, /** * Toggle Sticky Widget view * * @since 4.0 */ toggleStickyWidget: function() { this.stickyWidget = !this.stickyWidget; }, } })instagram-feed/admin/SBI_About_Us.php000064400000044142151435171370013465 0ustar00init(); } /** * Determining if the user is viewing the our page, if so, party on. * * @since 4.0 */ public function init() { if ( ! is_admin() ) { return; } add_action( 'admin_menu', [ $this, 'register_menu' ] ); } /** * Register Menu. * * @since 4.0 */ public function register_menu() { $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); $about_us = add_submenu_page( 'sb-instagram-feed', __( 'About Us', 'instagram-feed' ), __( 'About Us', 'instagram-feed' ), $cap, self::SLUG, [$this, 'about_us'], 4 ); add_action( 'load-' . $about_us, [$this,'about_us_enqueue_assets']); } /** * Enqueue About Us Page CSS & Script. * * Loads only for About Us page * * @since 4.0 */ public function about_us_enqueue_assets(){ if( ! get_current_screen() ) { return; } $screen = get_current_screen(); if ( ! 'instagram-feed_page_sbi-about-us' === $screen->id ) { return; } wp_enqueue_style( 'about-style', SBI_PLUGIN_URL . 'admin/assets/css/about.css', false, SBIVER ); wp_enqueue_script( 'sb-vue', SBI_PLUGIN_URL . 'js/vue.min.js', null, '2.6.12', true ); wp_enqueue_script( 'about-app', SBI_PLUGIN_URL.'admin/assets/js/about.js', null, SBIVER, true ); $sbi_about = $this->page_data(); wp_localize_script( 'about-app', 'sbi_about', $sbi_about ); } /** * Page Data to use in front end * * @since 4.0 * * @return array */ public function page_data() { // get the WordPress's core list of installed plugins if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $license_key = null; if ( get_option('sbi_license_key') ) { $license_key = get_option('sbi_license_key'); } $installed_plugins = get_plugins(); $images_url = SBI_PLUGIN_URL . 'admin/assets/img/about/'; // check whether the pro or free plugins are installed $is_facebook_installed = false; $facebook_plugin = 'custom-facebook-feed/custom-facebook-feed.php'; if ( isset( $installed_plugins['custom-facebook-feed-pro/custom-facebook-feed.php'] ) ) { $is_facebook_installed = true; $facebook_plugin = 'custom-facebook-feed-pro/custom-facebook-feed.php'; } else if ( isset( $installed_plugins['custom-facebook-feed/custom-facebook-feed.php'] ) ) { $is_facebook_installed = true; } $is_instagram_installed = false; $instagram_plugin = 'instagram-feed/instagram-feed.php'; if ( isset( $installed_plugins['instagram-feed-pro/instagram-feed.php'] ) ) { $is_instagram_installed = true; $instagram_plugin = 'instagram-feed-pro/instagram-feed.php'; } else if ( isset( $installed_plugins['instagram-feed/instagram-feed.php'] ) ) { $is_instagram_installed = true; } $is_twitter_installed = false; $twitter_plugin = 'custom-twitter-feeds/custom-twitter-feed.php'; if ( isset( $installed_plugins['custom-twitter-feeds-pro/custom-twitter-feed.php'] ) ) { $is_twitter_installed = true; $twitter_plugin = 'custom-twitter-feeds-pro/custom-twitter-feed.php'; } else if ( isset( $installed_plugins['custom-twitter-feeds/custom-twitter-feed.php'] ) ) { $is_twitter_installed = true; } $is_youtube_installed = false; $youtube_plugin = 'feeds-for-youtube/youtube-feed.php'; if ( isset( $installed_plugins['youtube-feed-pro/youtube-feed.php'] ) ) { $is_youtube_installed = true; $youtube_plugin = 'youtube-feed-pro/youtube-feed.php'; } else if ( isset( $installed_plugins['feeds-for-youtube/youtube-feed.php'] ) ) { $is_youtube_installed = true; } $return = array( 'admin_url' => admin_url(), 'supportPageUrl' => admin_url( 'admin.php?page=sbi-support' ), 'ajax_handler' => admin_url( 'admin-ajax.php' ), 'links' => \InstagramFeed\Builder\SBI_Feed_Builder::get_links_with_utm(), 'nonce' => wp_create_nonce( 'sbi-admin' ), 'socialWallLinks' => \InstagramFeed\Builder\SBI_Feed_Builder::get_social_wall_links(), 'socialWallActivated' => is_plugin_active( 'social-wall/social-wall.php' ), 'genericText' => array( 'help' => __( 'Help', 'instagram-feed' ), 'title' => __( 'About Us', 'instagram-feed' ), 'title2' => __( 'Our Other Social Media Feed Plugins', 'instagram-feed' ), 'title3' => __( 'Plugins we recommend', 'instagram-feed' ), 'description2' => __( 'We’re more than just an Instagram plugin! Check out our other plugins and add more content to your site.', 'instagram-feed' ), ), 'aboutBox' => array( 'atSmashBalloon' => __( 'At Smash Balloon, we build software that helps you create beautiful responsive social media feeds for your website in minutes.', 'instagram-feed' ), 'weAreOn' => __( 'We\'re on a mission to make it super simple to add social media feeds in WordPress. No more complicated setup steps, ugly iframe widgets, or negative page speed scores.', 'instagram-feed' ), 'ourPlugins' => __( 'Our plugins aren\'t just easy to use, but completely customizable, reliable, and fast! Which is why over 1.6 million awesome users, just like you, choose to use them on their site.', 'instagram-feed' ), 'teamAvatar' => SBI_PLUGIN_URL . 'admin/assets/img/team-avatar.png', 'teamImgAlt' => __( 'Smash Balloon Team', 'instagram-feed' ), ), 'pluginsInfo' => array( 'instagram' => array( 'plugin' => $instagram_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/instagram-feed.zip', 'title' => __( 'Instagram Feed', 'instagram-feed' ), 'description' => __( 'A quick and elegant way to add your Instagram posts to your website. ', 'instagram-feed' ), 'icon' => SBI_PLUGIN_URL . 'admin/assets/img/insta-icon.svg', 'installed' => $is_instagram_installed, 'activated' => is_plugin_active( $instagram_plugin ), ), 'facebook' => array( 'plugin' => $facebook_plugin, 'title' => __( 'Custom Facebook Feed', 'instagram-feed' ), 'description' => __( 'Add Facebook posts from your timeline, albums and much more.', 'instagram-feed' ), 'icon' => SBI_PLUGIN_URL . 'admin/assets/img/fb-icon.svg', 'installed' => $is_facebook_installed, 'activated' => is_plugin_active( $facebook_plugin ), ), 'twitter' => array( 'plugin' => $twitter_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-twitter-feeds.zip', 'title' => __( 'Custom Twitter Feeds', 'instagram-feed' ), 'description' => __( 'A customizable way to display tweets from your Twitter account. ', 'instagram-feed' ), 'icon' => SBI_PLUGIN_URL . 'admin/assets/img/twitter-icon.svg', 'installed' => $is_twitter_installed, 'activated' => is_plugin_active( $twitter_plugin ), ), 'youtube' => array( 'plugin' => $youtube_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/feeds-for-youtube.zip', 'title' => __( 'Feeds for YouTube', 'instagram-feed' ), 'description' => __( 'A simple yet powerful way to display videos from YouTube. ', 'instagram-feed' ), 'icon' => SBI_PLUGIN_URL . 'admin/assets/img/youtube-icon.svg', 'installed' => $is_youtube_installed, 'activated' => is_plugin_active( $youtube_plugin ), ) ), 'social_wall' => array( 'plugin' => 'social-wall/social-wall.php', 'title' => __( 'Social Wall', 'instagram-feed' ), 'description' => __( 'Combine feeds from all of our plugins into a single wall', 'instagram-feed' ), 'graphic' => SBI_PLUGIN_URL . 'admin/assets/img/social-wall-graphic.png', 'permalink' => sprintf('https://smashballoon.com/social-wall/demo?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=about&utm_medium=social-wall', $license_key), 'installed' => isset( $installed_plugins['social-wall/social-wall.php'] ) ? true : false, 'activated' => is_plugin_active('social-wall/social-wall.php'), ), 'recommendedPlugins' => array( 'aioseo' => array( 'plugin' => 'all-in-one-seo-pack/all_in_one_seo_pack.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip', 'title' => __( 'All in One SEO Pack', 'instagram-feed' ), 'description' => __( 'The original WordPress SEO plugin and toolkit that improves your website’s search rankings. Comes with all the SEO features like Local SEO, WooCommerce SEO, sitemaps, SEO optimizer, schema, and more.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-seo.png', 'installed' => isset( $installed_plugins['all-in-one-seo-pack/all_in_one_seo_pack.php'] ) ? true : false, 'activated' => is_plugin_active('all-in-one-seo-pack/all_in_one_seo_pack.php'), ), 'wpforms' => array( 'plugin' => 'wpforms-lite/wpforms.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/wpforms-lite.zip', 'title' => __( 'WPForms', 'instagram-feed' ), 'description' => __( 'The best drag & drop WordPress form builder. Easily create beautiful contact forms, surveys, payment forms, and more with our 900+ form templates. Trusted by over 6 million websites as the best forms plugin.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-wpforms.png', 'installed' => isset( $installed_plugins['wpforms-lite/wpforms.php'] ) ? true : false, 'activated' => is_plugin_active('wpforms-lite/wpforms.php'), ), 'monsterinsights' => array( 'plugin' => 'google-analytics-for-wordpress/googleanalytics.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/google-analytics-for-wordpress.zip', 'title' => __( 'MonsterInsights', 'instagram-feed' ), 'description' => __( 'The leading WordPress analytics plugin that shows you how people find and use your website, so you can make data driven decisions to grow your business. Properly set up Google Analytics without writing code.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-mi.png', 'installed' => isset( $installed_plugins['google-analytics-for-wordpress/googleanalytics.php'] ) ? true : false, 'activated' => is_plugin_active('google-analytics-for-wordpress/googleanalytics.php'), ), 'optinmonster' => array( 'plugin' => 'optinmonster/optin-monster-wp-api.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/optinmonster.zip', 'title' => __( 'OptinMonster', 'instagram-feed' ), 'description' => __( 'Instantly get more subscribers, leads, and sales with the #1 conversion optimization toolkit. Create high converting popups, announcement bars, spin a wheel, and more with smart targeting and personalization.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-om.png', 'installed' => isset( $installed_plugins['optinmonster/optin-monster-wp-api.php'] ) ? true : false, 'activated' => is_plugin_active('optinmonster/optin-monster-wp-api.php'), ), 'wp_mail_smtp' => array( 'plugin' => 'wp-mail-smtp/wp_mail_smtp.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/wp-mail-smtp.zip', 'title' => __( 'WP Mail SMTP', 'instagram-feed' ), 'description' => __( 'Improve your WordPress email deliverability and make sure that your website emails reach user’s inbox with the #1 SMTP plugin for WordPress. Over 3 million websites use it to fix WordPress email issues.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-smtp.png', 'installed' => isset( $installed_plugins['wp-mail-smtp/wp_mail_smtp.php'] ) ? true : false, 'activated' => is_plugin_active('wp-mail-smtp/wp_mail_smtp.php'), ), 'rafflepress' => array( 'plugin' => 'rafflepress/rafflepress.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/rafflepress.zip', 'title' => __( 'RafflePress', 'instagram-feed' ), 'description' => __( 'Turn your website visitors into brand ambassadors! Easily grow your email list, website traffic, and social media followers with the most powerful giveaways & contests plugin for WordPress.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-rp.png', 'installed' => isset( $installed_plugins['rafflepress/rafflepress.php'] ) ? true : false, 'activated' => is_plugin_active('rafflepress/rafflepress.php'), ), 'seedprod' => array( 'plugin' => 'coming-soon/coming-soon.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/coming-soon.zip', 'title' => __( 'SeedProd Website Builder', 'instagram-feed' ), 'description' => __( 'The fastest drag & drop landing page builder for WordPress. Create custom landing pages without writing code, connect a CRM, collect subscribers, and grow an audience. Trusted by 1 million sites.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-seedProd.png', 'installed' => isset( $installed_plugins['coming-soon/coming-soon.php'] ) ? true : false, 'activated' => is_plugin_active('coming-soon/coming-soon.php'), ), 'pushengage' => array( 'plugin' => 'pushengage/main.php', 'download_plugin' => 'https://downloads.wordpress.org/plugin/pushengage.zip', 'title' => __( 'PushEngage Web Push Notifications', 'instagram-feed' ), 'description' => __( 'Connect with your visitors after they leave your website with the leading web push notification software. Over 10,000+ businesses worldwide use PushEngage to send 15 billion notifications each month.', 'instagram-feed' ), 'icon' => $images_url . 'plugin-pushengage.png', 'installed' => isset( $installed_plugins['cpushengage/main.php'] ) ? true : false, 'activated' => is_plugin_active('pushengage/main.php'), ) ), 'buttons' => array( 'add' => __( 'Add', 'instagram-feed' ), 'viewDemo' => __( 'View Demo', 'instagram-feed' ), 'install' => __( 'Install', 'instagram-feed' ), 'installed' => __( 'Installed', 'instagram-feed' ), 'activate' => __( 'Activate', 'instagram-feed' ), 'deactivate' => __( 'Deactivate', 'instagram-feed' ), 'open' => __( 'Open', 'instagram-feed' ), ), 'icons' => array( 'plusIcon' => '', 'loaderSVG' => '', 'checkmarkSVG' => '', 'link' => '' ), ); return $return; } /** * About Us Page View Template * * @since 4.0 */ public function about_us(){ SBI_View::render( 'about.index' ); } } instagram-feed/admin/SBI_Support.php000064400000075103151435171370013421 0ustar00init(); } /** * Determining if the user is viewing the our page, if so, party on. * * @since 6.0 */ public function init() { if ( ! is_admin() ) { return; } add_action( 'admin_menu', array( $this, 'register_menu' ) ); } /** * Register Menu. * * @since 6.0 */ public function register_menu() { $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); $support_page = add_submenu_page( 'sb-instagram-feed', __( 'Support', 'instagram-feed' ), __( 'Support', 'instagram-feed' ), $cap, self::SLUG, array( $this, 'support_page' ), 4 ); add_action( 'load-' . $support_page, array( $this, 'support_page_enqueue_assets' ) ); } /** * Enqueue Extension CSS & Script. * * Loads only for Extension page * * @since 6.0 */ public function support_page_enqueue_assets() { if ( ! get_current_screen() ) { return; } $screen = get_current_screen(); if ( strpos( $screen->id, 'sbi-support' ) === false) { return; } wp_enqueue_style( 'sbi-fira-code-font', 'https://fonts.googleapis.com/css2?family=Fira+Code&display=swap', false, SBIVER ); wp_enqueue_style( 'global-style', SBI_PLUGIN_URL . 'admin/builder/assets/css/global.css', false, SBIVER ); wp_enqueue_style( 'support-style', SBI_PLUGIN_URL . 'admin/assets/css/support.css', false, SBIVER ); wp_enqueue_script( 'sb-vue', SBI_PLUGIN_URL . 'js/vue.min.js', null, '2.6.12', true ); wp_enqueue_script( 'support-app', SBI_PLUGIN_URL . 'admin/assets/js/support.js', null, SBIVER, true ); $sbi_support = $this->page_data(); wp_localize_script( 'support-app', 'sbi_support', $sbi_support ); } /** * Page Data to use in front end * * @since 6.0 * * @return array */ public function page_data() { $exported_feeds = SBI_Db::feeds_query(); $feeds = array(); foreach ( $exported_feeds as $feed_id => $feed ) { $feeds[] = array( 'id' => $feed['id'], 'name' => $feed['feed_name'], ); } $return = array( 'admin_url' => admin_url(), 'ajax_handler' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'sbi-admin' ), 'links' => \InstagramFeed\Builder\SBI_Feed_Builder::get_links_with_utm(), 'supportPageUrl' => admin_url( 'admin.php?page=sbi-support' ), 'siteSearchUrl' => 'https://smashballoon.com/search/', 'system_info' => $this->get_system_info(), 'system_info_n' => str_replace( '
', "\n", $this->get_system_info() ), 'feeds' => $feeds, 'supportUrl' => $this->get_support_url(), 'svgIcons' => SBI_Feed_Builder::builder_svg_icons(), 'socialWallLinks' => \InstagramFeed\Builder\SBI_Feed_Builder::get_social_wall_links(), 'tempUser' => \InstagramFeed\Admin\SBI_Support_Tool::check_temporary_user_exists(), 'socialWallActivated' => is_plugin_active( 'social-wall/social-wall.php' ), 'genericText' => array( 'delete' => __( 'delete', 'instagram-feed' ), 'copyLink' => __( 'Copy Link', 'instagram-feed' ), 'link' => __( 'Link', 'instagram-feed' ), 'expires' => __( 'Expires in', 'instagram-feed' ), 'help' => __( 'Help', 'instagram-feed' ), 'title' => __( 'Support', 'instagram-feed' ), 'gettingStarted' => __( 'Getting Started', 'instagram-feed' ), 'learnMore' => __( 'Learn More', 'instagram-feed' ), 'someHelpful' => __( 'Some helpful resources to get you started', 'instagram-feed' ), 'docsN' => __( 'Docs & Troubleshooting', 'instagram-feed' ), 'runInto' => __( 'Run into an issue? Check out our help docs.', 'instagram-feed' ), 'additionalR' => __( 'Additional Resources', 'instagram-feed' ), 'toHelp' => __( 'To help you get the most out of the plugin', 'instagram-feed' ), 'needMore' => __( 'Need more support? We’re here to help.', 'instagram-feed' ), 'ourFast' => __( 'Our fast and friendly support team is always happy to help!', 'instagram-feed' ), 'systemInfo' => __( 'System Info', 'instagram-feed' ), 'exportSettings' => __( 'Export Settings', 'instagram-feed' ), 'shareYour' => __( 'Share your plugin settings easily with Support', 'instagram-feed' ), 'copiedToClipboard' => __( 'Copied to clipboard', 'instagram-feed' ), 'days' => __( 'Days', 'instagram-feed' ), 'day' => __( 'Day', 'instagram-feed' ), 'newTempHeading' => __( 'Temporary Login', 'instagram-feed' ), 'newTempDesc' => __( 'Our team might ask for a temporary login link with limited access to only our plugin to help troubleshoot account related issues.', 'instagram-feed' ), 'newTempButton' => __( 'Create Temporary Login Link', 'instagram-feed' ), 'tempLoginHeading' => __( 'Temporary Login', 'instagram-feed' ), 'tempLoginDesc' => __( 'Temporary login link for support access created by you. This is auto-destructed 14 days after creation. To create a new link, please delete the old one.', 'instagram-feed' ), ), 'buttons' => array( 'searchDoc' => __( 'Search Documentation', 'instagram-feed' ), 'moreHelp' => __( 'More Help Getting Started', 'instagram-feed' ), 'viewDoc' => __( 'View Documentation', 'instagram-feed' ), 'viewBlog' => __( 'View Blog', 'instagram-feed' ), 'submitTicket' => __( 'Submit a Support Ticket', 'instagram-feed' ), 'copied' => __( 'Copied', 'instagram-feed' ), 'copy' => __( 'Copy', 'instagram-feed' ), 'export' => __( 'Export', 'instagram-feed' ), 'expand' => __( 'Expand', 'instagram-feed' ), 'collapse' => __( 'Collapse', 'instagram-feed' ), ), 'icons' => array( 'rocket' => SBI_PLUGIN_URL . 'admin/assets/img/rocket-icon.svg', 'book' => SBI_PLUGIN_URL . 'admin/assets/img/book-icon.svg', 'save' => SBI_PLUGIN_URL . 'admin/assets/img/save-plus-icon.svg', 'magnify' => '', 'rightAngle' => '', 'linkIcon' => '', 'plusIcon' => '', 'loaderSVG' => '', 'checkmarkSVG' => '', 'forum' => '', 'copy' => '', 'downAngle' => '', 'exportSVG' => '', ), 'images' => array( 'supportMembers' => SBI_PLUGIN_URL . 'admin/assets/img/support-members.png', ), 'articles' => array( 'gettingStarted' => array( array( 'title' => __( 'Creating your first Instagram feed', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/setting-up-the-instagram-feed-pro-wordpress-plugin/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Creating your first Instagram feed', ), array( 'title' => __( 'Instagram Business Profiles (required for Hashtag and Tagged feeds)', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/instagram-business-profiles/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Instagram Business Profiles', ), array( 'title' => __( 'Multiple User Accounts in One Feed', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/displaying-photos-multiple-ids-hashtags-feed/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Multiple Users', ), ), 'docs' => array( array( 'title' => __( 'Displaying Instagram Hashtag Feeds', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/displaying-an-instagram-hashtag-feed-on-your-website/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Displaying an Instagram Hashtag Feed', ), array( 'title' => __( 'How to Resolve Error Messages', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/instagram-api-error-message-reference/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Instagram resolving error messages', ), array( 'title' => __( 'My Feed Stopped Working or is Empty', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/my-photos-wont-load/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=My feed stopped working', ), ), 'resources' => array( array( 'title' => __( 'Differences Between an Instagram Personal and Business Account', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/differences-between-an-instagram-personal-and-business-account/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Differences between a business and personal account', ), array( 'title' => __( 'Display Posts With a Specific Hashtag From a Specific User Account', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/can-display-photos-specific-hashtag-specific-user-id/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Display a specific hashtag from a specific account', ), array( 'title' => __( 'Reauthorizing our Instagram/Facebook App', 'instagram-feed' ), 'link' => 'https://smashballoon.com/doc/reauthorizing-our-instagram-facebook-app/?utm_campaign=instagram-free&utm_source=support&utm_medium=docs&utm_content=Reauthorizing the Instagram or FB app', ), ), ), ); return $return; } /** * Get System Info * * @since 6.0 */ public function get_system_info() { $output = ''; // Build the output strings $output .= self::get_site_n_server_info(); $output .= self::get_active_plugins_info(); $output .= self::get_global_settings_info(); $output .= self::get_feeds_settings_info(); $output .= self::get_sources_info(); $output .= self::get_image_resizing_info(); $output .= self::get_posts_table_info(); $output .= self::get_cron_report(); $output .= self::get_errors_info(); $output .= self::get_action_logs_info(); $output .= self::get_oembeds_info(); return $output; } /** * Get Site and Server Info * * @since 6.0 * * @return string */ public static function get_site_n_server_info() { $allow_url_fopen = ini_get( 'allow_url_fopen' ) ? 'Yes' : 'No'; $php_curl = is_callable( 'curl_init' ) ? 'Yes' : 'No'; $php_json_decode = function_exists( 'json_decode' ) ? 'Yes' : 'No'; $php_ssl = in_array( 'https', stream_get_wrappers(), true ) ? 'Yes' : 'No'; $output = '## SITE/SERVER INFO: ##
'; $output .= 'Plugin Version:' . self::get_whitespace( 11 ) . esc_html( SBI_PLUGIN_NAME ) . '
'; $output .= 'Site URL:' . self::get_whitespace( 17 ) . esc_html( site_url() ) . '
'; $output .= 'Home URL:' . self::get_whitespace( 17 ) . esc_html( home_url() ) . '
'; $output .= 'WordPress Version:' . self::get_whitespace( 8 ) . esc_html( get_bloginfo( 'version' ) ) . '
'; $output .= 'PHP Version:' . self::get_whitespace( 14 ) . esc_html( PHP_VERSION ) . '
'; $output .= 'Web Server Info:' . self::get_whitespace( 10 ) . esc_html( $_SERVER['SERVER_SOFTWARE'] ) . '
'; $output .= 'PHP allow_url_fopen:' . self::get_whitespace( 6 ) . esc_html( $allow_url_fopen ) . '
'; $output .= 'PHP cURL:' . self::get_whitespace( 17 ) . esc_html( $php_curl ) . '
'; $output .= 'JSON:' . self::get_whitespace( 21 ) . esc_html( $php_json_decode ) . '
'; $output .= 'SSL Stream:' . self::get_whitespace( 15 ) . esc_html( $php_ssl ) . '
'; $output .= '
'; return $output; } /** * Get Active Plugins * * @since 6.0 * * @return string */ public static function get_active_plugins_info() { $plugins = get_plugins(); $active_plugins = get_option( 'active_plugins' ); $output = '## ACTIVE PLUGINS: ##
'; foreach ( $plugins as $plugin_path => $plugin ) { if ( in_array( $plugin_path, $active_plugins, true ) ) { $output .= esc_html( $plugin['Name'] ) . ': ' . esc_html( $plugin['Version'] ) . '
'; } } $output .= '
'; return $output; } /** * Get Global Settings * * @since 6.0 * * @return string */ public static function get_global_settings_info() { $output = '## GLOBAL SETTINGS: ##
'; $sbi_license_key = get_option( 'sbi_license_key' ); $sbi_license_data = get_option( 'sbi_license_data' ); $sbi_license_status = get_option( 'sbi_license_status' ); $sbi_settings = get_option( 'sb_instagram_settings', array() ); $usage_tracking = get_option( 'sbi_usage_tracking', array( 'last_send' => 0, 'enabled' => \sbi_is_pro_version(), ) ); $output .= 'License key: '; if ( $sbi_license_key ) { $output .= esc_html( $sbi_license_key ); } else { $output .= ' Not added'; } $output .= '
'; $output .= 'License status: '; if ( $sbi_license_status ) { $output .= $sbi_license_status; } else { $output .= ' Inactive'; } $output .= '
'; $output .= 'Preserve settings if plugin is removed: '; $output .= ( $sbi_settings['sb_instagram_preserve_settings'] ) ? 'Yes' : 'No'; $output .= '
'; $output .= 'Connected Accounts: '; $output .= 'Placeholder!'; $output .= '
'; $output .= 'Caching: '; if ( wp_next_scheduled( 'sbi_feed_update' ) ) { $time_format = get_option( 'time_format' ); if ( ! $time_format ) { $time_format = 'g:i a'; } // $schedule = wp_get_schedule( 'sbi_feed_update' ); if ( $schedule === '30mins' ) { $schedule = __( 'every 30 minutes', 'instagram-feed' ); } if ( $schedule === 'twicedaily' ) { $schedule = __( 'every 12 hours', 'instagram-feed' ); } $sbi_next_cron_event = wp_next_scheduled( 'sbi_feed_update' ); $output = __( 'Next check', 'instagram-feed' ) . ': ' . gmdate( $time_format, $sbi_next_cron_event + sbi_get_utc_offset() ) . ' (' . $schedule . ')'; } else { $output .= 'Nothing currently scheduled'; } $output .= '
'; $output .= 'GDPR: '; $output .= isset( $sbi_settings['gdpr'] ) ? $sbi_settings['gdpr'] : ' Not setup'; $output .= '
'; $output .= 'Custom CSS: '; $output .= isset( $sbi_settings['sb_instagram_custom_css'] ) && ! empty( $sbi_settings['sb_instagram_custom_css'] ) ? wp_strip_all_tags( $sbi_settings['sb_instagram_custom_css'] ) : 'Empty'; $output .= '
'; $output .= 'Custom JS: '; $output .= isset( $sbi_settings['sb_instagram_custom_js'] ) && ! empty( $sbi_settings['sb_instagram_custom_js'] ) ? $sbi_settings['sb_instagram_custom_js'] : 'Empty'; $output .= '
'; $output .= 'Optimize Images: '; $output .= isset( $sbi_settings['sb_instagram_disable_resize'] ) && ! $sbi_settings['sb_instagram_disable_resize'] ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Usage Tracking: '; $output .= isset( $usage_tracking['enabled'] ) && $usage_tracking['enabled'] === true ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'AJAX theme loading fix: '; $output .= isset( $sbi_settings['sb_instagram_ajax_theme'] ) && $sbi_settings['sb_instagram_ajax_theme'] ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'AJAX Initial: '; $output .= isset( $sbi_settings['sb_ajax_initial'] ) && $sbi_settings['sb_ajax_initial'] === true ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Enqueue in Head: '; $output .= isset( $sbi_settings['enqueue_js_in_head'] ) && $sbi_settings['enqueue_js_in_head'] === true ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Enqueue in Shortcode: '; $output .= isset( $sbi_settings['enqueue_css_in_shortcode'] ) && $sbi_settings['enqueue_css_in_shortcode'] === true ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Enable JS Image: '; $output .= isset( $sbi_settings['disable_js_image_loading'] ) && $sbi_settings['disable_js_image_loading'] === false ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Admin Error Notice: '; $output .= isset( $sbi_settings['disable_admin_notice'] ) && $sbi_settings['disable_admin_notice'] === false ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Feed Issue Email Reports: '; $output .= isset( $sbi_settings['enable_email_report'] ) && $sbi_settings['enable_email_report'] === true ? 'Enabled' : 'Disabled'; $output .= '
'; $output .= 'Email notification: '; $output .= isset( $sbi_settings['email_notification'] ) && $sbi_settings['email_notification'] !== null ? ucfirst( $sbi_settings['email_notification'] ) : 'Off'; $output .= '
'; $output .= 'Email notification addresses: '; $output .= isset( $sbi_settings['email_notification_addresses'] ) && ! empty( $sbi_settings['email_notification_addresses'] ) ? sanitize_email( $sbi_settings['email_notification_addresses'] ) : 'Not available'; $output .= '
'; $output .= '
'; return $output; } /** * Get Feeds Settings * * @since 6.0 * * @return string */ public static function get_feeds_settings_info() { $output = '## FEEDS: ##
'; $feeds_list = SBI_Feed_Builder::get_feed_list(); $source_list = SBI_Feed_Builder::get_source_list(); $manager = new \SB_Instagram_Data_Manager(); $i = 0; foreach ( $feeds_list as $feed ) { $type = ! empty( $feed['settings']['type'] ) ? $feed['settings']['type'] : 'user'; if ( $i >= 25 ) { break; } $output .= $feed['feed_name']; if ( isset( $feed['settings'] ) ) { $output .= ' - ' . ucfirst( $type ); $output .= '
'; if ( ! empty( $feed['settings']['sources'] ) ) { foreach ( $feed['settings']['sources'] as $id => $source ) { $output .= esc_html( $source['username'] ); $output .= ' (' . esc_html( $id ) . ')'; } } } $output .= '
'; if ( isset( $feed['location_summary'] ) && count( $feed['location_summary'] ) > 0 ) { $first_feed = $feed['location_summary'][0]; if ( ! empty( $first_feed['link'] ) ) { $output .= esc_html( $first_feed['link'] ) . '?sb_debug'; $output .= '
'; } } if ( $i < ( count( $feeds_list ) - 1 ) ) { $output .= '
'; } $i++; } $output .= '
'; return $output; } /** * Get Feeds Settings * * @since 6.0 * * @return string */ public static function get_sources_info() { $output = '## SOURCES TABLE: ##
'; global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; if ($wpdb->get_var("show tables like '$sources_table_name'") !== $sources_table_name) { $output .= 'no sources table

'; } else { $output .= 'sources table exists

'; } $output .= '## Sources: ##
'; $source_list = SBI_Feed_Builder::get_source_list(); $manager = new \SB_Instagram_Data_Manager(); foreach ( $source_list as $source ) { $output .= $source['account_id']; $output .= '
'; $output .= 'Type: ' . esc_html( $source['account_type'] ); $output .= '
'; $output .= 'Username: ' . esc_html( $source['username'] ); $output .= '
'; $output .= 'Error: ' . esc_html( $source['error'] ); $output .= '
'; $output .= '
'; } $output .= '
'; return $output; } /** * Get Reports * * @since 6.0 * * @return string */ public static function get_cron_report() { $output = '## Cron Cache Report: ##
'; $cron_report = get_option( 'sbi_cron_report', array() ); if ( ! empty( $cron_report ) ) { $output .= 'Time Ran: ' . esc_html( $cron_report['notes']['time_ran'] ); $output .= "
"; $output .= 'Found Feeds: ' . esc_html( $cron_report['notes']['num_found_transients'] ); $output .= "
"; $output .= "
"; foreach ( $cron_report as $key => $value ) { if ( $key !== 'notes' ) { $output .= esc_html( $key ) . ':'; $output .= "
"; if ( ! empty( $value['last_retrieve'] ) ) { $output .= 'Last Retrieve: ' . esc_html( $value['last_retrieve'] ); $output .= "
"; } $output .= 'Did Update: ' . esc_html( $value['did_update'] ); $output .= "
"; $output .= "
"; } } } else { $output .= "
"; } $cron = _get_cron_array(); foreach ( $cron as $key => $data ) { $is_target = false; foreach ( $data as $key2 => $val ) { if ( strpos( $key2, 'sbi' ) !== false || strpos( $key2, 'sb_instagram' ) !== false ) { $is_target = true; $output .= esc_html( $key2 ); $output .= "
"; } } if ( $is_target ) { $output .= esc_html( date( 'Y-m-d H:i:s', $key ) ); $output .= "
"; $output .= esc_html( 'Next Scheduled: ' . round( ( (int) $key - time() ) / 60 ) . ' minutes' ); $output .= "
"; $output .= "
"; } } return $output; } /** * Get Image Resizing Info * * @since 6.0 * * @return string */ public static function get_image_resizing_info() { $output = '## IMAGE RESIZING: ##
'; $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = trailingslashit( $upload_dir ) . SBI_UPLOADS_NAME; if ( file_exists( $upload_dir ) ) { $output .= 'upload directory exists
'; } else { $created = wp_mkdir_p( $upload_dir ); if ( ! $created ) { $output .= 'cannot create upload directory'; } } $output .= '
'; return $output; } /** * Get Posts Table Info * * @since 6.0 * * @return string */ public static function get_posts_table_info() { $output = '## POSTS: ##
'; global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $feeds_posts_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS; if ( $wpdb->get_var( "show tables like '$feeds_posts_table_name'" ) !== $feeds_posts_table_name ) { $output .= 'no feeds posts table
'; } else { $last_result = $wpdb->get_results( "SELECT * FROM $feeds_posts_table_name ORDER BY id DESC LIMIT 1;" ); if ( is_array( $last_result ) && isset( $last_result[0] ) ) { $output .= '## FEEDS POSTS TABLE ##
'; foreach ( $last_result as $column ) { foreach ( $column as $key => $value ) { $output .= esc_html( $key ) . ': ' . esc_html( $value ) . '
'; } } } else { $output .= 'feeds posts has no rows'; $output .= '
'; } } $output .= '
'; if ( $wpdb->get_var( "show tables like '$table_name'" ) !== $table_name ) { $output .= 'no posts table
'; } else { $last_result = $wpdb->get_results( "SELECT * FROM $table_name ORDER BY id DESC LIMIT 1;" ); if ( is_array( $last_result ) && isset( $last_result[0] ) ) { // exclude the json_data column. $last_result = array_map( function ($row) { unset($row->json_data); return $row; }, $last_result ); $output .= '## POSTS TABLE ##'; $output .= '
'; foreach ( $last_result as $column ) { foreach ( $column as $key => $value ) { $output .= esc_html( $key ) . ': ' . esc_html( $value ) . '
'; } } } else { $output .= 'posts has no rows
'; } } $output .= '
'; return $output; } /** * SBI Get Errors Info * * @since 6.0 * * @return string */ public static function get_errors_info() { $output = '## ERRORS: ##
'; global $sb_instagram_posts_manager; $errors = $sb_instagram_posts_manager->get_errors(); if ( ! empty( $errors['resizing'] ) ) : $output .= '* Resizing *
'; $output .= esc_html( $errors['resizing'] ) . '
'; endif; if ( ! empty( $errors['database_create'] ) ) : $output .= '* Database Create *
'; $output .= esc_html( $errors['database_create'] ) . '
'; endif; if ( ! empty( $errors['upload_dir'] ) ) : $output .= '* Uploads Directory *
'; $output .= esc_html( $errors['upload_dir'] ) . '
'; endif; if ( ! empty( $errors['connection'] ) ) : $output .= '* API/WP_HTTP Request *
'; if ( is_array( $errors['connection'] ) ) { foreach ( $errors['connection'] as $con_error ) { if ( is_array( $con_error ) ) { foreach ( $con_error as $subcon_error ) { $output .= esc_html( $subcon_error ) . '
'; } } else { $output .= esc_html( $con_error ) . '
'; } } } else { $output .= esc_html( $errors['connection'] ); } endif; $output .= '
'; return $output; } /** * Get Action Logs Info * * @since 6.0 * * @return string */ public static function get_action_logs_info() { $output = '## ACTION LOG ##
'; global $sb_instagram_posts_manager; $actions = $sb_instagram_posts_manager->get_action_log(); if ( ! empty( $actions ) ) : foreach ( $actions as $action ) : $output .= strip_tags( $action ) . '
'; endforeach; endif; $output .= '
'; return $output; } /** * Get Feeds Settings * * @since 6.0 * * @return string */ public static function get_oembeds_info() { $output = '## OEMBED: ##
'; $oembed_token_settings = get_option( 'sbi_oembed_token', array() ); foreach ( $oembed_token_settings as $key => $value ) { if ( $key === 'access_token' ) { // do nothing we don't want to show the AT } else { $output .= esc_html( $key ) . ': ' . esc_html( $value ) . '
'; } } return $output; } /** * SBI Get Support URL * * @since 6.0 * * @return string $url */ public function get_support_url() { $url = 'https://smashballoon.com/instagram-feed/support/'; $license_type = sbi_is_pro_version() ? 'pro' : 'free'; $args = array(); $license_key = get_option( 'sbi_license_key' ); if ( $license_key ) { $license_key = sbi_encrypt_decrypt( 'encrypt', $license_key ); $args['license'] = $license_key; } $args['license_type'] = $license_type; $args['version'] = SBIVER; $url = add_query_arg( $args, $url ); return $url; } /** * SBI Get Whitespace * * @since 6.0 * * @param int $times * * @return string */ public static function get_whitespace( $times ) { return str_repeat( ' ', $times ); } /** * Extensions Manager Page View Template * * @since 6.0 */ public function support_page() { SBI_View::render( 'support.index' ); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������instagram-feed/admin/SBI_Support_Tool.php�����������������������������������������������������������0000644�����������������00000037331�15143517137�0014417 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������init(); } /** * SBI_Support_Tool initializer. * * @since 6.3 */ public function init() { $this->init_temp_login(); if ( ! is_admin() ) { return; } $this->ini_ajax_calls(); add_action( 'admin_menu', array( $this, 'register_menu' ) ); add_action( 'admin_footer', array( '\InstagramFeed\Admin\SBI_Support_Tool', 'delete_expired_users' ) ); } /** * Create New User Ajax Call * * @since 6.3 * * @return void */ public function ini_ajax_calls() { add_action( 'wp_ajax_sbi_create_temp_user', array( $this, 'create_temp_user_ajax_call' ) ); add_action( 'wp_ajax_sbi_delete_temp_user', array( $this, 'delete_temp_user_ajax_call' ) ); add_action('wp_ajax_sbi_get_api_calls_handler', array( $this, 'get_api_calls_handler' )); } /** * Create New User Ajax Call * * @since 6.3 */ public function delete_temp_user_ajax_call() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if ( ! isset( $_POST['userId'] ) ) { wp_send_json_error(); } $user_id = absint( $_POST['userId'] ); $return = self::delete_temporary_user( $user_id ); echo wp_json_encode( $return ); wp_die(); } /** * Create New User Ajax Call * * @since 6.3 */ public function create_temp_user_ajax_call() { check_ajax_referer( 'sbi-admin', 'nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $return = self::create_temporary_user(); echo wp_json_encode( $return ); wp_die(); } /** * Init Login * * @since 6.3 */ public function init_temp_login() { $attr = self::$plugin . '_token'; if ( empty( $_GET[ $attr ] ) ) { // phpcs:ignore return; } $token = sanitize_key( $_GET[ $attr ] ); // phpcs:ignore $temp_user = self::get_temporary_user_by_token( $token ); if ( ! $temp_user ) { wp_die( esc_attr__( 'You cannot connect this user', 'instagram-feed' ) ); } $user_id = $temp_user->ID; $should_login = ( is_user_logged_in() && $user_id !== get_current_user_id() ) || ! is_user_logged_in(); if ( $should_login ) { if ( $user_id !== get_current_user_id() ) { wp_logout(); } $user_login = $temp_user->user_login; wp_set_current_user( $user_id, $user_login ); wp_set_auth_cookie( $user_id ); do_action( 'wp_login', $user_login, $temp_user ); $redirect_page = 'admin.php?page=' . self::$plugin . '_tool'; wp_safe_redirect( admin_url( $redirect_page ) ); exit(); } } /** * Create New User. * * @return array * * @since 6.3 */ public static function create_temporary_user() { if ( ! current_user_can( 'create_users' ) ) { return array( 'success' => false, 'message' => __( 'You don\'t have enough permission to create users' ), ); } $domain = str_replace( array( 'http://', 'https://', 'http://www.', 'https://www.', 'www.', ), '', site_url() ); $email = self::$username . '@' . $domain; $temp_user_args = array( 'user_email' => $email, 'user_pass' => self::generate_temp_password(), 'first_name' => self::$name, 'last_name' => self::$last_name, 'user_login' => self::$username, 'role' => self::$plugin . self::$role, ); $temp_user_id = \wp_insert_user( $temp_user_args ); if ( is_wp_error( $temp_user_id ) ) { $result = array( 'success' => false, 'message' => __( 'Cannot create user' ), ); } else { $creation_time = \time(); $expires = strtotime( '+15 days', $creation_time ); $token = str_replace( array( '=', '&', '"', "'" ), '', \sbi_encrypt_decrypt( 'encrypt', self::generate_temp_password( 35 ) ) ); update_user_meta( $temp_user_id, self::$plugin . '_user', $temp_user_id ); update_user_meta( $temp_user_id, self::$plugin . '_token', $token ); update_user_meta( $temp_user_id, self::$plugin . '_create_time', $creation_time ); update_user_meta( $temp_user_id, self::$plugin . '_expires', $expires ); $result = array( 'success' => true, 'message' => __( 'Temporary user created successfully' ), 'user' => self::get_user_meta_data( $temp_user_id ), ); } return $result; } /** * Delete Temp User. * * @param int $user_id User ID to delete. * * @return array * * @since 6.3 */ public static function delete_temporary_user( $user_id ) { require_once ABSPATH . 'wp-admin/includes/user.php'; if ( ! current_user_can( 'delete_users' ) ) { return array( 'success' => false, 'message' => __( 'You don\'t have enough permission to delete users' ), ); } if ( ! wp_delete_user( $user_id ) ) { return array( 'success' => false, 'message' => __( 'Cannot delete this user' ), ); } return array( 'success' => true, 'message' => __( 'User Deleted' ), ); } /** * Get User Meta * * @param int $user_id User ID to retrieve metadata for. * * @return array|bool * * @since 6.3 */ public static function get_user_meta_data( $user_id ) { $user = get_user_meta( $user_id, self::$plugin . '_user' ); if ( ! $user ) { return false; } $token = get_user_meta( $user_id, self::$plugin . '_token' ); $creation_time = get_user_meta( $user_id, self::$plugin . '_create_time' ); $expires = get_user_meta( $user_id, self::$plugin . '_expires' ); $url = self::$plugin . '_token=' . $token[0]; return array( 'id' => $user_id, 'token' => $token[0], 'creation_time' => $creation_time[0], 'expires' => $expires[0], 'expires_date' => self::get_expires_days( $expires[0] ), 'url' => admin_url( '/?' . $url ), ); } /** * Get UDays before Expiring Token * * @param string $expires Unix timestamp of when the token expires. * * @since 6.3 */ public static function get_expires_days( $expires ) { return ceil( ( $expires - time() ) / 60 / 60 / 24 ); } /** * Get User By Token. * * @param string $token Token to connect with. * * @since 6.3 */ public static function get_temporary_user_by_token( $token = '' ) { if ( empty( $token ) ) { return false; } $args = array( 'fields' => 'all', 'meta_query' => array( array( 'key' => self::$plugin . '_token', 'value' => sanitize_text_field( $token ), 'compare' => '=', ), ), ); $users = new \WP_User_Query( $args ); $users_result = $users->get_results(); if ( empty( $users_result ) ) { return false; } return $users_result[0]; } /** * Check Temporary User Created * * @since 6.3 */ public static function check_temporary_user_exists() { $args = array( 'fields' => 'all', 'meta_query' => array( array( 'key' => self::$plugin . '_token', 'value' => null, 'compare' => '!=', ), ), ); $users = new \WP_User_Query( $args ); $users_result = $users->get_results(); if ( empty( $users_result ) ) { return null; } return self::get_user_meta_data( $users_result[0]->ID ); } /** * Check & Delete Expired Users * * @since 6.3 */ public static function delete_expired_users() { $existing_user = self::check_temporary_user_exists(); if ( $existing_user === null ) { return false; } $is_expired = intval( $existing_user['expires'] ) - \time() <= 0; if ( ! $is_expired ) { return false; } require_once ABSPATH . 'wp-admin/includes/user.php'; \wp_delete_user( $existing_user['id'] ); } /** * Delete Temp User * * @since 6.3 */ public static function delete_temp_user() { $existing_user = self::check_temporary_user_exists(); if ( $existing_user === null ) { return false; } require_once ABSPATH . 'wp-admin/includes/user.php'; \wp_delete_user( $existing_user['id'] ); } /** * Register Menu. * * @since 6.0 */ public function register_menu() { $role_id = self::$plugin . self::$role; $cap = $role_id; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); add_submenu_page( 'sb-instagram-feed', __( 'Support API tool', 'instagram-feed' ), __( 'Support API tool', 'instagram-feed' ), $cap, self::$plugin . '_tool', array( $this, 'render' ), 5 ); add_action('admin_enqueue_scripts', array( $this, 'enqueue_scripts' )); } /** * Enqueue Scripts. * * @since 6.2.9 */ public function enqueue_scripts() { $screen = get_current_screen(); if (strpos($screen->id, self::$plugin . '_tool') === false) { return; } wp_enqueue_script('sbi-support-tool', SBI_PLUGIN_URL . 'admin/assets/js/support-tool.js', array( 'jquery' ), SBIVER, true); wp_localize_script( 'sbi-support-tool', 'sbi_support_tool', array( 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('sbi-admin'), ) ); wp_enqueue_style('sbi-support-tool', SBI_PLUGIN_URL . 'admin/assets/css/support-tool.css', array(), SBIVER); } /** * Generate Temp User Password * * @param int $length Length of password. * * @since 6.3 * * @return string */ public static function generate_temp_password( $length = 20 ) { return wp_generate_password( $length, true, true ); } /** * Render the Api Tools Page * * @since 6.3 */ public function render() { include_once SBI_PLUGIN_DIR . 'admin/views/support/support-tools.php'; } /** * Get ajax handers for API calls * * @since 6.2.9 */ public function get_api_calls_handler() { check_ajax_referer('sbi-admin', 'nonce'); $user_role = self::$plugin . self::$role; if (! sbi_current_user_can($user_role)) { wp_send_json_error(__('You don\'t have enough permission to perform this API call.', 'instagram-feed')); } $user_id = isset($_POST['user_id']) ? sanitize_text_field($_POST['user_id']) : false; $ajax_action = isset($_POST['ajax_action']) ? sanitize_text_field($_POST['ajax_action']) : 'user_info'; $account_type = isset($_POST['account_type']) ? sanitize_text_field($_POST['account_type']) : 'basic'; if (! $user_id) { wp_send_json_error(__('User ID is required', 'instagram-feed')); } $connected_accounts = \SB_Instagram_Connected_Account::get_all_connected_accounts(); $access_token = ''; foreach ($connected_accounts as $connected_account) { if ((string) $connected_account['id'] === $user_id) { $access_token = $connected_account['access_token']; break; } } if (empty($access_token)) { wp_send_json_error(__('Access Token is required', 'instagram-feed')); } switch ($ajax_action) { case 'user_info': $api_response = $this->get_account_info(array( 'user_id' => $user_id, 'access_token' => $access_token, 'account_type' => $account_type, )); break; case 'media': $media_fields = isset($_POST['media_fields']) ? sanitize_text_field($_POST['media_fields']) : 'media_url,thumbnail_url,caption,id,media_type,timestamp,username,permalink'; $post_limit = isset($_POST['post_limit']) ? absint($_POST['post_limit']) : 10; $api_response = $this->get_media(array( 'user_id' => $user_id, 'access_token' => $access_token, 'account_type' => $account_type, 'media_fields' => $media_fields, 'post_limit' => $post_limit, )); break; default: wp_send_json_error(__('Invalid API action', 'instagram-feed')); } if (is_wp_error($api_response)) { wp_send_json_error($api_response); } else { $api_response = sanitize_text_field(wp_remote_retrieve_body($api_response)); $api_response = json_decode($api_response, true); if (isset($api_response['error'])) { wp_send_json_error($api_response['error']); } // responses have next pagination data that includes access token so we need to remove it. if (isset($api_response['paging']['next'])) { $api_response['paging']['next'] = !empty($api_response['paging']['next']) ? true : false; } wp_send_json_success([ 'api_response' => $api_response, 'user_id' => $user_id, ]); } } /** * Get Account Info * * @param array $args Arguments for the API call. * * @return object * * @since 6.2.9 */ public function get_account_info($args) { $user_id = isset($args['user_id']) ? sanitize_text_field($args['user_id']) : false; $access_token = isset($args['access_token']) ? sanitize_text_field($args['access_token']) : false; $account_type = isset($args['account_type']) ? sanitize_text_field($args['account_type']) : 'basic'; if (!$user_id || !$access_token) { return new \WP_Error('missing_params', __('User ID and Access Token are required', 'instagram-feed')); } if ($account_type === 'basic' || $account_type === 'personal') { $me_endpoint_url = self::$basic_display_api . $user_id . '?fields=id,username,account_type,media_count&access_token=' . $access_token; } else { $me_endpoint_url = self::$graph_api . $user_id . '?fields=biography,id,username,website,followers_count,media_count,profile_picture_url,name&access_token=' . $access_token; } return wp_remote_get($me_endpoint_url); } /** * Get Media * * @param array $args Arguments for the API call. * * @return object * * @since 6.2.9 */ public function get_media($args) { $user_id = isset($args['user_id']) ? sanitize_text_field($args['user_id']) : false; $access_token = isset($args['access_token']) ? sanitize_text_field($args['access_token']) : false; $account_type = isset($args['account_type']) ? sanitize_text_field($args['account_type']) : 'basic'; $media_fields = isset($args['media_fields']) ? sanitize_text_field($args['media_fields']) : 'media_url,thumbnail_url,caption,id,media_type,timestamp,username,permalink'; $post_limit = isset($args['post_limit']) ? absint($args['post_limit']) : 10; if (!$user_id || !$access_token) { return new \WP_Error('missing_params', __('User ID and Access Token are required', 'instagram-feed')); } if (strpos($media_fields, 'children') !== false) { $media_fields .= '%7Bmedia_url,id,media_type,timestamp,permalink,thumbnail_url%7D'; } if ($account_type === 'basic' || $account_type === 'personal') { $api_url = self::$basic_display_api . $user_id . '/media?fields=' . $media_fields . '&limit=' . $post_limit . '&access_token=' . $access_token; } else { $api_url = self::$graph_api . $user_id . '/media?fields=' . $media_fields . '&limit=' . $post_limit . '&access_token=' . $access_token; } return wp_remote_get($api_url, array( 'timeout' => 120 )); } } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������instagram-feed/admin/SBI_Callout.php����������������������������������������������������������������0000644�����������������00000031623�15143517137�0013347 0����������������������������������������������������������������������������������������������������ustar�00�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dismiss_notice(); $this->plugins_list = self::get_callout_plugins_list(); $this->should_show_callout = sizeof($this->plugins_list) !== 0 && self::should_show_callout(); add_action('wp_enqueue_scripts', [$this, 'register_assets']); add_action('admin_enqueue_scripts', [$this, 'register_assets']); add_action('wp_dashboard_setup', [$this, 'dashboard_widget']); } public function is_dashboad_screen() { if (is_admin()) { if (!function_exists( 'get_current_screen')) { require_once ABSPATH . '/wp-admin/includes/screen.php'; } $screen = get_current_screen(); if ($screen->id === "dashboard") { return true; } } return false; } /** * Register Callout Assets * * @since X.X */ public function register_assets() { $should_show_dashboard = sizeof($this->plugins_list) !== 0 && $this->is_dashboad_screen(); if ($this->should_show_callout || $should_show_dashboard) { if (is_admin()) { wp_enqueue_script( 'callout-js', self::ASSETS_JS . 'callout.js', null, null, true ); } wp_enqueue_style( 'callout-style', self::ASSETS_CSS . 'callout.css', false, null ); } } /** * Dimiss the Callout Notice * * @since X.X */ public function dismiss_notice() { if ( !empty($_GET['sb_dismiss']) && $_GET['sb_dismiss'] === 'callout' && !empty($_GET['sb_nonce']) && wp_verify_nonce($_GET['sb_nonce'], 'sb-callout') ) { $callout_opt = get_option('sb_callout', []); $callout_opt['dismissed'] = true; /** * If users dismisses the callout * for the first time -> store the current time (So it will be shown after 2 weeks) * 2 second time (& more than 2 weeks) -> store permanent, this way the callout will no longer be shown */ $callout_opt['dismissed_date'] = isset($callout_opt['dismissed_date']) && ( ($callout_opt['dismissed_date'] === 'permanent') || ($callout_opt['dismissed_date'] !== 'permanent' && intval($callout_opt['dismissed_date']) + self::TWO_WEEKS_WAIT < time()) ) ? 'permanent' : time(); update_option('sb_callout', $callout_opt); } } /** * Get Smashballoon Plugins List * * @return array * * @since X.X */ public static function get_plugins_list() { return [ 'instagram' => [ 'plugin' => 'instagram-feed/instagram-feed.php', 'statuses' => 'sbi_statuses', 'table' => 'sbi_feeds', 'page' => 'sbi-feed-builder' ], 'facebook' => [ 'plugin' => 'custom-facebook-feed/custom-facebook-feed.php', 'statuses' => 'cff_statuses', 'table' => 'cff_feeds', 'page' => 'cff-feed-builder' ], 'twitter' => [ 'plugin' => 'custom-twitter-feeds/custom-twitter-feed.php', 'statuses' => 'ctf_statuses', 'table' => 'ctf_feeds', 'page' => 'ctf-feed-builder' ], 'youtube' => [ 'plugin' => 'feeds-for-youtube/youtube-feed.php', 'statuses' => 'sby_statuses', 'table' => 'sby_feeds', 'page' => 'sby-feed-builder' ], 'reviews' => [ 'plugin' => 'reviews-feed/sb-reviews.php', 'statuses' => 'sbr_statuses', 'table' => 'sbr_feeds', 'page' => 'sbr' ], 'tiktok' => [ 'plugin' => 'feeds-for-tiktok/feeds-for-tiktok.php', 'statuses' => 'sbtt_statuses', 'table' => 'sbtt_feeds', 'page' => 'sbtt' ], ]; } /** * Get Plugins List * Check for SmashBalloon installed plugins (with no feeds) * * @return array * * @since X.X */ public static function get_callout_plugins_list() { if (!function_exists('get_plugins')) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $installed_plugins = get_plugins(); $plugins_list = self::get_plugins_list(); foreach ($plugins_list as $key => $plugin) { if (isset($installed_plugins[$plugin['plugin']]) && is_plugin_active($plugin['plugin'])) { $feeds_number = self::feeds_number($plugin['table']); if (intval($feeds_number) === 0) { $plugins_list[$key]['is_done'] = false; } else { $plugins_list[$key]['is_done'] = true; } } else { unset($plugins_list[$key]); } } uasort($plugins_list, function ($a, $b) { if ($a['is_done'] === true && $b['is_done'] === false) { return -1; } if ($a['is_done'] === false && $b['is_done'] === true) { return 1; } return 0; }); return $plugins_list; } /** * SQL Query to get the number of created feeds * * @return int * * @since X.X */ public static function feeds_number($table_name) { global $wpdb; $feeds_table_name = $wpdb->prefix . $table_name; return $wpdb->get_var("SELECT COUNT(*) FROM $feeds_table_name"); } /** * Get Next Plugin for Setup * * @return int * * @since X.X */ public static function next_plugin($plugins_list) { $pkey = ''; foreach ($plugins_list as $key => $plugin) { if ($plugin['is_done'] === false) { $pkey = $key; break; } } return $pkey; } /** * Open Link * * @return string * * @since X.X */ public static function js_open_link($url, $target = "_blank") { return 'onclick="window.open(\'' . $url . '\', \'' . $target . '\')" '; } /** * Print the Callout * * @since X.X */ public static function print_callout($type = 'frontend') { $plugins_list = self::get_callout_plugins_list(); if ((sizeof($plugins_list) === 0 || !self::should_show_callout()) && $type !== 'dashboard' ) { return false; } $process = 0; foreach ($plugins_list as $sg_plugin) { if (isset($sg_plugin['is_done']) && $sg_plugin['is_done'] === true) { $process += 1; } } $process_percent = $process === 0 ? 0 : intval(100 / (sizeof($plugins_list) / $process)); $dismiss_callout = wp_nonce_url( add_query_arg(['sb_dismiss' => 'callout']), 'sb-callout', 'sb_nonce' ); ?>
class="sb-callout-top-dismiss">
%
$plugin) { ?>
class="sb-callout-item-btn">
1 && $process !== sizeof($plugins_list)) { $next_p = self::next_plugin($plugins_list); ?>
class="sb-callout-item-btn"> class="sb-callout-item-btn sb-callout-item-btn-grey">
time() ; if ($been_2_weeks && !$plugins_list[self::PLUGIN_NAME]['is_done']) { return false; } // It's been more than 3 months of the first install $more_3_months = intval($plugin_statuses['first_install']) + 7889229 < time(); if ($more_3_months) { return false; } /** * These Options will be shared across all the plugins * This way we can control the Callout dismissal once! */ $callout_opt = get_option('sb_callout', []); if ( isset($callout_opt['dismissed'], $callout_opt['dismissed_date']) && ( $callout_opt['dismissed_date'] === 'permanent' || ( $callout_opt['dismissed_date'] !== 'permanent' && intval($callout_opt['dismissed_date']) + self::TWO_WEEKS_WAIT > time() ) ) ) { return false; } return true; } /** * Display Dashboard Widget * * @since X.X */ public function dashboard_widget() { $should_show_dashboard = sizeof($this->plugins_list) !== 0 && $this->is_dashboad_screen(); if ($should_show_dashboard) { wp_add_dashboard_widget( 'sb_dashboard_widget', __( 'Smash Balloon Feeds', 'instagram-feeds'), function() { echo self::print_callout_ob_html('dashboard', false); } ); } } }instagram-feed/admin/builder/templates/sections/feeds/feeds.php000064400000013517151435171370020700 0ustar00
{{feedPagination.feedsCount +' '+ (feedPagination.feedsCount > 1 ? genericText.items : genericText.item)}}
{{feedPagination.currentPage}} of {{feedPagination.pagesNumber}}
{{allFeedsScreen.columns.nameText}} {{allFeedsScreen.columns.shortcodeText}} {{allFeedsScreen.columns.instancesText}} {{allFeedsScreen.columns.actionsText}}
{{feed.feed_name}} {{feed.settings.type}}
[instagram-feed feed={{feed.id}}]
{{(genericText.copy +' '+ genericText.shortcode).replace(/ /g," ")}}
{{genericText.usedIn}} {{feed.instance_count + ' ' + (feed.instance_count !== 1 ? genericText.places : genericText.place)}}
{{genericText.clickViewInstances.replace(/ /g," ")}}
{{genericText.edit.replace(/ /g," ")}}
{{allFeedsScreen.columns.nameText}} {{allFeedsScreen.columns.shortcodeText}} {{allFeedsScreen.columns.instancesText}} {{allFeedsScreen.columns.actionsText}}
instagram-feed/admin/builder/templates/sections/feeds/instances.php000064400000006355151435171370021603 0ustar00

{{viewsActive.instanceFeedActive.feed_name}}

TimeLine
{{genericText.page}} {{genericText.location}} {{allFeedsScreen.columns.shortcodeText}}
{{instance.page_text}} {{instance.html_location}}
{{instance.shortcode}}
{{(genericText.copy +' '+ genericText.shortcode).replace(/ /g," ")}}
{{genericText.page}} {{genericText.location}} {{allFeedsScreen.columns.shortcodeText}}
instagram-feed/admin/builder/templates/sections/feeds/legacy-feeds.php000064400000017054151435171370022142 0ustar00
{{genericText.new}}
{{allFeedsScreen.onboarding.getStarted}}

{{allFeedsScreen.legacyFeeds.heading}}

{{allFeedsScreen.legacyFeeds.toolTip}}
{{genericText.settings}}
{{allFeedsScreen.columns.nameText}} {{allFeedsScreen.columns.shortcodeText}} {{allFeedsScreen.columns.instancesText}} {{allFeedsScreen.columns.actionsText}}
{{legacyFeed.feed_name}} {{legacyFeed.feed_type}}
{{legacyFeed.shortcode}}
{{(genericText.copy +' '+ genericText.shortcode).replace(/ /g," ")}}
{{genericText.usedIn}} {{legacyFeed.instance_count + ' ' + (legacyFeed.instance_count !== 1 ? genericText.places : genericText.place)}}
{{genericText.clickViewInstances.replace(/ /g," ")}}
{{viewsActive.legacyFeedsShown ? allFeedsScreen.legacyFeeds.hide : allFeedsScreen.legacyFeeds.show}}
instagram-feed/admin/builder/templates/sections/popup/feedtypes-popup.php000064400000006043151435171370023014 0ustar00
{{genericText.back}}

{{selectFeedTypeScreen.anotherFeedTypeHeading}}

{{feedTypeEl.description}}

{{feedTypeEl.description}}
instagram-feed/admin/builder/templates/sections/popup/sources-list-popup.php000064400000007757151435171370023475 0ustar00

{{genericText.addNew}}

{{source.username}}
{{source.account_type}}
instagram-feed/admin/builder/templates/sections/popup/uncanny-automator-integraion.php000064400000004664151435171370025513 0ustar00

{{uncannyAutomatorScreen.heading}}

{{uncannyAutomatorScreen.description}}

{{uncannyAutomatorScreen.installStep.title}}

{{uncannyAutomatorScreen.installStep.description}}

{{uncannyAutomatorScreen.setupStep.title}}

{{uncannyAutomatorScreen.setupStep.description}}

instagram-feed/admin/builder/templates/sections/popup/embed-popup.php000064400000011146151435171370022100 0ustar00

{{embedPopupScreen.heading}}

{{embedPopupScreen.description}}

{{embedPopupScreen.addPage}}

{{embedPopupScreen.selectPage}}
{{page.title}}
instagram-feed/admin/builder/templates/sections/popup/onboarding-customizer-popup.php000064400000006116151435171370025351 0ustar00

{{tooltip.heading}}

{{tooltip.p}}

{{tooltip.step}}/{{customizeScreensText.onboarding.tooltips.length}}
{{genericText.previous}}
{{genericText.next}}
{{genericText.finish}}
instagram-feed/admin/builder/templates/sections/popup/source-instances.php000064400000006251151435171370023151 0ustar00

{{viewsActive.instanceSourceActive.username}}

{{viewsActive.instanceSourceActive.account_type}}
{{genericText.feedName}} {{genericText.id}} {{genericText.shortcodeText}}
{{instance.feed_name}} {{instance.id}}
{{(genericText.copy +' '+ genericText.shortcode).replace(/ /g," ")}}
{{genericText.feedName}} {{genericText.id}} {{genericText.shortcodeText}}
instagram-feed/admin/builder/templates/sections/popup/feedtypes-customizer-popup.php000064400000003357151435171370025223 0ustar00

{{genericText.editSources}}

{{genericText.addSourceType}}
instagram-feed/admin/builder/templates/sections/popup/personal-account-popup.php000064400000006020151435171370024274 0ustar00 instagram-feed/admin/builder/templates/sections/popup/install-plugin-popup.php000064400000010153151435171370023763 0ustar00 instagram-feed/admin/builder/templates/sections/popup/temp-login-about.php000064400000012632151435171370023047 0ustar00

1

2

3

instagram-feed/admin/builder/templates/sections/popup/confirm-dialog-popup.php000064400000003727151435171370023724 0ustar00 instagram-feed/admin/builder/templates/sections/popup/onboarding-popup.php000064400000006570151435171370023153 0ustar00

{{tooltip.heading}}

{{tooltip.p}}

{{tooltip.step}}/{{allFeedsScreen.onboarding.tooltips.length}}
{{genericText.previous}}
{{genericText.next}}
{{genericText.finish}}
instagram-feed/admin/builder/templates/sections/popup/add-source-popup.php000064400000062447151435171370023064 0ustar00 instagram-feed/admin/builder/templates/sections/popup/extensions-popup.php000064400000010532151435171370023221 0ustar00

{{genericText.liteFeedUsersSimpleText}} {{genericText.liteFeedUsersAutoCheckout}}

{{extensionsPopup[viewsActive.extensionsPopupElement].bullets.heading}}

{{bullet}}
instagram-feed/admin/builder/templates/sections/feeds-type.php000064400000003056151435171370020566 0ustar00

{{selectFeedTypeScreen.feedTypeHeading}}

{{selectFeedTypeScreen.mainDescription}}

{{feedTypeEl.title}}

{{feedTypeEl.description}}
instagram-feed/admin/builder/templates/sections/footer.php000064400000052753151435171370020027 0ustar00
Loading...
instagram-feed/admin/builder/templates/sections/empty-state.php000064400000037203151435171370020776 0ustar00
1

{{welcomeScreen.createFeed}}

{{welcomeScreen.createFeedDescription}}

2

{{welcomeScreen.customizeFeed}}

{{welcomeScreen.customizeFeedDescription}}

3

{{welcomeScreen.embedFeed}}

{{welcomeScreen.embedFeedDescription}}

instagram-feed/admin/builder/templates/sections/select-source.php000064400000044054151435171370021301 0ustar00

instagram-feed/admin/builder/templates/sections/customizer/preview.php000064400000002104151435171370022377 0ustar00
instagram-feed/admin/builder/templates/sections/customizer/sidebar.php000064400000014414151435171370022336 0ustar00
{{tab.heading}}
{{section.heading}}
{{section.heading}}
{{customizerFeedData.feed_info.feed_name}}
{{genericText.help}}
instagram-feed/admin/builder/templates/sections/feeds-list.php000064400000000613151435171370020554 0ustar00
{{hashtag}}
{{selectSourceScreen.hashtagGetBy}}
{{genericText.mostRecent}}
{{genericText.topRated}}
@{{selectedSource.username}}
instagram-feed/admin/builder/templates/sections/create-feed/single-sources.php000064400000007537151435171370023637 0ustar00

{{selectSourceScreen.mainHeading}}

{{selectSourceScreen.description}}
{{genericText.addSource}}
{{genericText.addNew}}

{{source.username}}
{{source.account_type}}
instagram-feed/admin/builder/templates/sections/create-feed/single-public-hashtags.php000064400000003332151435171370025217 0ustar00

{{selectSourceScreen.mainHashtagHeading}}

{{selectSourceScreen.hashtagDescription}}
{{hashtag}}
{{selectSourceScreen.hashtagGetBy}}
{{genericText.mostRecent}}
{{genericText.topRated}}
instagram-feed/admin/builder/templates/sections/create-feed/multiple-sources.php000064400000001545151435171370024202 0ustar00

{{selectSourceScreen.mainHeading}}

{{selectSourceScreen.description}}
{{genericText.addSourceType}}
instagram-feed/admin/builder/templates/wizard.php000064400000001427151435171370016172 0ustar00
instagram-feed/admin/builder/templates/preview/light-box.php000064400000032377151435171370020260 0ustar00instagram-feed/admin/builder/templates/preview/error.php000064400000001310151435171370017473 0ustar00
instagram-feed/admin/builder/templates/preview/header.php000064400000006002151435171370017575 0ustar00
{{customizerFeedData.header.fan_count}}

{{customizerFeedData.header.name}}

{{customizerFeedData.header.about}}

Comments Box SVG iconsUsed for the like, share, comment, and reaction iconsinstagram-feed/admin/builder/templates/preview/theme-styles.php000064400000000423151435171370020771 0ustar00is_cached() ) { $theme_css->load_css(); $theme_css->parse(); $theme_css->find_styles(); $theme_css->cache(); } echo $theme_css->generate_style_html();instagram-feed/admin/builder/templates/onboarding/welcome.php000064400000001410151435171370020437 0ustar00

Welcome Banner
instagram-feed/admin/builder/templates/onboarding/configure-features.php000064400000006267151435171370022620 0ustar00

instagram-feed/admin/builder/templates/onboarding/success-page.php000064400000012664151435171370021403 0ustar00

Upgrade Content Banner

instagram-feed/admin/builder/templates/onboarding/install-plugins.php000064400000004311151435171370022134 0ustar00

instagram-feed/admin/builder/templates/onboarding/add-source.php000064400000010015151435171370021033 0ustar00

{{genericText.addNew}}
instagram-feed/admin/builder/templates/builder.php000064400000001614151435171370016316 0ustar00
instagram-feed/admin/builder/templates/screens/welcome.php000064400000002532151435171370017765 0ustar00

{{welcomeScreen.mainHeading}}

{{genericText.addNew}}
instagram-feed/admin/builder/templates/screens/customizer.php000064400000000703151435171370020534 0ustar00
instagram-feed/admin/builder/templates/screens/select-feed.php000064400000003456151435171370020520 0ustar00

{{selectFeedTypeScreen.mainHeading}}

{{genericText.next}}
{{genericText.back}}
{{genericText.next}}
instagram-feed/admin/builder/templates/screens/onboarding-wizard.php000064400000004460151435171370021754 0ustar00
Balloon

$step) { ?>
instagram-feed/admin/builder/assets/img/ext-featuredpost.png000064400000004577151435171370020263 0ustar00‰PNG  IHDRÒæ—¬+ËSPLTE üüüììì ÿÿÿãããçççÿ°ÿ°ÿ°ßßßÿ¯ÿ°ÿ°ÿ¯ÿ°ÿ¯ÿ²ÿ°ÿ¯ÿ°ÿ°ÿ±ÐÐÐùùùÿ°ÿ¯ÿ¸éééÿ¯âЬÿÿÿù» Y«Fóp6ÜÝáÿ°¬Õ¢ö÷øþîçûûûñòôù·šúìõ‚OüÝÏÕêÑàáåÑ·‰ïºšøª‡¯\m­QÿµÿáŸÿ×c¬KóyCòòôîïñå¹”÷vÿÄ?ÿõßø±“ÿÜö•k•±gÿúïÿë¿Àµ£³o‹°bÿº ýýý³´xõŒ^ÿðÏÿÓoÿÎ_óu=ÿ¿0¼®÷¤~ö‘dÿÉO«®#ê¯ ÿæ¯Û¸w®Vc«Am«=‚¬4õˆW¢­'Û¯õ°óíâÊØ³¬Ð’•±hêÈX—¬,ÿº‹P+·'tRNSÊ ` GG ï H¿ß0Ÿ@?Ïp`o³¯ hPGáy˜ñ´IDATxÚäšÛoA‡gÐĤ<z±£F×iƘ 1¥¥@.¥€””ÒRzÓ^¬ÆÛÿÿ$¥5vFvwÜíœY¿Wž¾œ3¿svb$±—‹ñøòâ\‚„‚¹xršÿ!5»hºVb9ÉíÌÆˆÁ, ë"©TÈNœ ”H çI™çôœ;0=CÌb‰;2mVâÜ)“FÔ wE’˜CŠ»cOaæ—°!;N Pzh!¦Ê%´›“G.E­´Ï%ä­Š´LF(5Ú²"YV^Z&#”òò"Y–ô4¡t,-Ò€—0wgÁ¬$+FmØ‘²_â(É’­Wµn¨Iœž Tã#Tö ùfu$:šgµîqO8L”>@¬Ôå#¤sk,ø•ÆÓ¡k ì·ßí>ŽZÉ6Q÷åFÀ¼qJ¼×˜<µæñ7^EŒ;[xW%qÃ;é:.0#Sz{ß|}?b¯Á²¹ôîõýRʱ |ævÎ, '.y”ÀHÊ¥ ´7©-“O—É9ÿbÿœ½Ý“ Ui<Äõ+e?1®ù8•›X¨pÞÎË6ÀyýWg€»ÃÔµ]>¤ò!ug¤±J-¸ì¼|a*Výe{Ä ºo—¹àNE±;#mW*2\p×ÌÍJÙsÅ œ®Å5Ÿ¥:sÇù)w\ïYúÀÜrÉ]ñ„ Ðâ0c}l½TŒè­´zê‰ofúâÚNÝI4Ò«m§î$i=KÐvêçI|Q×z–JÌ;Ïò¥Ñ®Tg*œÈ¥’sÐ5jW™?O¥B”Ö™2—‡× ³Q©½ŠP JP$%¾5ó…µ³›Ûh„`P‚")ñÆ!J¡Jæ®"+M¡h¼ºŸJQ J%æk•(¥zJzGmŽ1ãꫬà'žóÚŠ¬ï„x šC<Ë YâAßù5—ˆî*íø^%íÛCÑ÷*)ĪeH’xDó\jù®¤}{X^ɹJØ"\Xˆ¼Çº£„,ñvPR‰\S [ãÝ>6‡ê«–±°…øÇ ”UQB´³b«R‹…î,¡D)õâ3|\é±Ú&Žjó+©]§à¹’Ÿ%…ÆÃôý'(©Üa›´ÂÚ*ƒ•¦Bÿ‡’É7Eièª$ÝLW¢!S câEHèF­›³”î—ËÛCÊåµµ4ò…(J‰óÝCfeŒƒÌQ ÓÕƒÂ[-(›~éÇ…Ó\%‘«ò?[}&ñ,×üш²’X(,1ÔåöàÌææ'3OU¶Q—D2[Úÿ$0¡ J~ލUÿ×V%_²E ·­ ˆÓÖQ;ê”Öûç5ÿæñØyxG-Ðñã8×Ve…Ì RI=ñO»QñB¤-t_µR®¼„UZYé+„o Q0Ji{!RÚÊ׃¹øÍÎã6 Ã@ÑCé!‚v‹ ÒÁh»·p^йÿß›Éd”\Bžs›/‡£É#iéaJ šõÞÌ—Úù&bkÚ¶ÖÉdf€lD¦'n\¦ªÀÃËô XÆ(*¡eÚ Ð$®RBLÁv$®^½…бÅoT(AšŒ¯Á¸m­èowý’îê#OÇà'M%p{»y‡#Ñ)¦ä¿ÃµÎ>ÕãùeþkðªK¦oªV0Éxnª¾S Áþ…Ás)9¸õ}‰”„.ðò˘à™ÒA¥{]²Ž(-=Ä&›J|¥66téP¥DØ\ˆ™JQøêRy©í²hÇNG{‚òòØNuâÝê¶ø(§”cäšÒ¥_ SÊÛVߔʛ‹˜ÀËSJ¥¼ÇsM) JIЇ^ë«£?áø0–Ÿm%§ðuµ© QÉ3¥$Œ*ÑÍñ7‹™=xNâ‘/=.cÊøØïñyF_ Å~¾%ø8eÝ*@¥Ç”þÛ·’܆a(J¨áU =èúÿŸÕ¤¥ÉMšK q¦ÚJ!¨0¶ã\/u ‡Tÿ\jzã­÷ñVBš¼œ"$×tH#_–ÖÿÜ@þ¾@ñbÍúü(¯jéB"ÌeHŽíðAPÆÇw‡hò"doºò0ò•‡Iè6Þ(|÷Ä)Ÿšd+¯û´Â‡ßK£0n<º3q¾Š·~£î[–ÎòzÛðsiòŽíÇ>”ÏåÞCÓY:Í™xÛ!9º,Qž‰Óq¢ƒ÷ñÕ,ŽŠøû[«øìêYò¡Ã0ÏCœuÔAǸŠY»ŽéPêû¡ÍÑ\¿S·ÙeÒZåÌã…!÷Y[4%Ê7ýìœ\“9.Aª!‰ï–¥ïµ÷ÚueË<.Š>µþ`Àh„+ÄÍœUÌ ü“ ´ÁÖ)¹«pÐ$UÓäCÝò Àh¬áOŸâdJÿPrJ€#"î & +,aËfi.,5½C(wq èQ*{o‡ø:n—< æ’T·À,²~¤2’TBZ…;†€£Mÿ´e˜Úî6”€•–´®xÎÕÝÁËj7 J6=y„-©J_h?ì;e-È%ŽIEND®B`‚instagram-feed/admin/builder/assets/img/waving-hand.png000064400000010444151435171370017151 0ustar00‰PNG  IHDR@@ªiqÞ pHYs  šœsRGB®ÎégAMA± üa¹IDATxí[]l×u>çÞ™ý£(®ÜØiãŽbÔu ·Z"±7@µT›†V[ˆÚ}2U h¶&…¢ÈCQ/ ÔU;ñC(¿$€[ÀÛ²ˆë‡Â—ê&F‚–ëøGˆ£@”(’Ëù¹'çÜ;³;¤EÒ¦e†@tŒñrwggîùÎ9ßù¹#€rC~®a—Êç¿ún-2å*x^«ùP¹‘ìJ†}m$ö>>Eª@H$kœCMÚ_>{ü—ZpEÁ.•ôÌQsÇ—!Ž£h?Fá1áÿáÄ[SCù®“ìÚȤޘ¯z{zª$…$c Ó‚Á³û[ð!eWpø+¯Õbÿ¦£8æ æ€’–J`:\\<Ӝؿ÷ù/ϰò 4&€$iµ—Wš“ ð!dW„€AªBŒUvuÀ8ªaœ$š*ýÙ¡‰ùñì¼ÙÛá ‡F “$({úiø²kBàÐ?½Ó¯(LŒd˜â¸.–fEß· 1ƒgÿñS-9wè¯ÿ§®ÈœC“ ƒ5øÍÇïmÂ6eWsÀþöõ1EÔ`ªìòó”,:;yK¾;<úê4Â!Ó|æñ{a›²+³@&ÏÿýÝ“´Ü°.Ï™€=¤ëòQrʾ"ÔÿÅ÷Ã6e×0?U Þùú™ÿÛÀ¥Åç>Ká~n–Î×<;9ЂöÒQö„ ªýÞï6äüg¿vßœ%LÂx¶)»Q^ëd†ÿ¬#B•Ȱe± OÓwkøÙ¯}nŽ&ˆ¢ÑúØlU~§´jÚ °MÙQ.=]«^¹·ÍÖëùÏ}4£+¡Y{­ä P²2Ãj#”sžyìÞIä ¶÷¾JÊgIbe¨ Û”à¯×Æ ©yHô,˜1¯ÕçÃWëcòÇ®íq0û¬µægÖŽÝ< 8À”1“òŠˆ#òZ0tœ7¨ÎÀ6eG²À›S÷Œ{¾j*>”z5«Eж{l i›‘+¯]×è’¿ˆà•x½>AÑC(°;øú%¼ëÛƒÃc³Al800KÚÛ÷a‹ ‘ñOëQÅîÍDƨ¬eÙ|ÊÇqŠ’9-ç±¹Å"Öö ¿Ž#¯T§üv}š ‘Ù¡%׬8¸Ñýh¶þ¾Câ#àÒ7>S×£žoŽWQžëyˆ¥Ë3„>X-,$‘á¾p9Ç Ž ¤p ^bXŸ ߨ§?=såÅû/­Ætɼ~hžæ‡Æ·ZßGïí¸¥ÙˆìÌlag}âÏ*˜*iï'÷ÖÂÕxÁ*n,Õs;ÐQÒsëô=æÜ"Ÿ1aû|þ6¾Æ­T]k¨j=0¹4èÂÐÔfËÛX˜úõKº¨«6¶9ÎuE–l|3“yÖ!.~çÝVI{_aO)i>øµì‰f`ÏóøU«Óø©sÇÖ_ÿâSµ­Õ”WÔà÷¡°¯Xæó9Ä@È4Šqÿ·š×ZÛŽp/aÒZÖY—HÜß¹¸Ttì•Ûö«+[žžPç°è$üCwŒ°ë¯ÏøñXQÏc€5OPlœ‰PšJuc£µíÜÁŸ²ñmA`uÅÇE¡Ø*ÈöÜR¤Õ8á–Ÿ,¼p>'¡8Ð"z2Œ_ †Vre §¼*E‹ß4Øhm;À¾csRÆ6u%¶ÁYFˆEIv ÛÞÛz`u9›¹36ÌÖ , °$¢‘·Ÿüj4\R!™šA \!ÊÛZHùÃÕ­ÖæÁG$ÿýÓÃ…ñ Ïžj.½Ù>…1ÕMêâ†=A!9ëÚuôÞZ† o-A)òAy|NÌÚi>QTDͤ v5PÖæ$üþ7ÿþ÷Wcøî%ü‘ R Î*Vq¾¦'ûnNs׮뫅"Ì15T>x=¬ ª‘rPi­¼¹Ä“˜„‹^‚ׇ hÿãÓô|¢í‹!T|΃Ä1Mš“h,VåÚàxàÝ·KC·ÜTžYT¯œç‡öÞÎý³JB>ó[t[­÷º‡@Ƀ1æ÷³27+¬—Ö¨+š+;¯ß»¹Dm#–•P »HYŸ¸9×âソXa^4Ž,²ŸÈ¹& þ®äÇÂ'øÝ>¶ô]™•-ó9—w‡é Ñ‚€•?âs2ö-#³‘Å&RÛ—4–n.ìá´ à“è'pLqUÏ®±÷ö G(Z2CÊbÚð¸:î)&wÍ¿iÆ85ÞbNOMã¿[(Ù?7VóúÀ„äKÑ#!«¤¶Ÿ,ޏþ‡Ê{ d23•]\¸ÍŠ(')‘ß–$(°B¦aŒéáÄz*D|ù/.¯z£¨mk,MX¨äZ”º‚Ë-Ø1æ”Ï-€\u' âAñÖWb\f¾ë–Ãà(¾@…&ä‹!3¨öZÖÛ%ç#öõ2™(¸G”뢬FW;€#B M×{Ý0Æ4%Õ1Ûs“‚'Kc|ÄR ³…?Vèõ9Í+ÛðPâ’¸»‚ËßÌ{Ü(i«Tf|Ìé#^뇋=®%AH(•Z]î皊tU ì êTšÅKxŽÀ²jެ[÷ܾVÃÈF†ÒslÌ[§uJÙ¸N­Þ92‹ÚÁ õìICÅ“²WKju ˜”8·Hƒ×)z––VŽ·—ØÅ…ì8®]óCéaà<¯ xKBÁ…¶²g;bTÎÚùµä>Èh±àƒ½ (— mAÈÀºë‘ôÕmP?9_­O}ðqÓ­_üþôåŸ,5Û‹¡#»Õ$-mÓê/ᇫ¿Roˆ ¥®n”ãì‚`¿³Dª;¦9Þ~gç B„`=]EhÝ?%OÀ`£µnZ•Ѻ¯¬ÿëʡ柖›°…HO^ð¼ÑbEÕy…ÕÅ-\æá–Ä¥‘_xIÊ‘”í‹ÊÕ"E—C,²¥dV6U¶Ý¬F.mÚ0P)#¸P!>Ng{ºÊgöûke­Z÷Ãòé_æªuŠƒ°ÊÅ÷òøëc=°øöZ¹²ŠU¢7µE»KU H{ün“÷4™•Á)Ôq„nÇg½Åaã0QŽ­[Ø×ÚFëÞ4Hy.F ÛµÍλÀcí’Ò'93¹ÉÇ$³8ÉŒ¯ïÎ>  íňç\¶ó‘‘¡íî2Å3wíá )¥Ò7®V°)ºLØqêV–ö›¬2²ïš¿ö˜ì= ˜¯¸Èß1›²a©¢dSüj>©€[(0ê^–´HØYcß'÷qq#¹ß¬4¡%F§P‚S"]|ÖÆå•M‡®À.YdJº~ 3‚\I,¢‹a+†³Un&ñyt-¿ ãó((ðFåÐIʵ¤h|ÞØdËó¡„ìX9Š(i‘¤©Þý}Üïú¶ÕÍÄR…3#f¤åº{û™Á,1®_:æ~è¼E^erdS"vÃÇI¶JÜV‚L.UŸ¼ýÖßÜÜädÞx|Ý€$Ñç)ÖRßÛ:ŸVÙ´!¹GZ ‰G–?ÁI[FU®euÝá)ÌYÞ*e»ýÔÀ¹1 {ê‚—3»Ä¾(oÇÌ]|Xj[Ю.âê‹›õC_ê—t;šà™©8jÌׯu‘Þ‡^áPQMŠ”¤=æ ñv‡ M} YŽÿ e;ç“Ö×ÄifE±xö·Êr!æ¾4Ü,i¸têF²0àÍ—-˜žØ¿À%JSÒ+n7ÏþÝíMVþ%½ajèKß ®u¡$„c‚i+þÛ‘­$2ÂJ§?d§?Bì<ìtS+Ê] Óð u¬Ð+†³·”ÖÈ”î$`§³ì xhBïîßû³8iZeãîŽk‰à(ÆÑ|œ¿f†¾4¬ÿݾ㯴ƒG¹Ãcåƒd™Ý|Yzý´'p°äGØ%´,÷QfSì{Š æè¬£°«xœÇ¤¿És©I‹êŽ€ ¶%aóè*ºŒQ|pèÞzP>Ï`Ÿ„8j18ý:„ùßýÎÔ🿬á¯^i²‚Ç’ù`…Ah3ë/ñ\k…œ'DB|‰ócrK .±«œ’˜ã9ì´D™–”ru½!M…”eˆ,ÒWžF­×w=µZzäÿü͸QjAÈžÆâ½9æ–1G²sµ¦išÓE”Áç™éŸ¾ü/÷)NªrÂ{lln½½²Çç ÕîPº„N“I°æÿYF¤5!Ðý®õ-ñIk¬Ü>›ÝiEÛ*§Icï|a6ó‘ªSÜ¥´TV)‰Ï 5\ÜËà ÏLãUò3òY’``B5/ãH´¬‘Ïú~y7mÍŽ#½g‘«¡ðH^ùÌ Ù7‹ ÄnYÐ!BÊÐÈñB¾ÈB©‹¥á°Îër·† D¬ ¾?Ã¥mÀo9;ÐÄó_¹grí9/Êxø5ŬžPÒ|î±û^ʾ¿úÕß!ŸNêR\Õ{yFȽ€*ª\Á’º´Â|dSÀšÅd$Ÿ¥?7FM¿ƒ!JjS ¿ÊN’x\_frr.ŽáÝ/žz_d (±4bzË߫ɷ˜3d. lN§-m$KOüæ€.Ð9¨„UÍeH¥0r®™-¡“ç;Vέ×u½d¼Oiª0¥Ã‘‚H”Öi“d?Ç:þò‹/­ýùûÃù*sð½{¯NOF­g»oÿf¿å}õ»<­ÎBéÇIÒ B6¶ÏÇ÷esb³5w¼"ï6ö•ó•%ûp ¹›^l3 þ¯#¼”º’ªÊ¦Vš~îñûNmõ;z a|èn/VÿåøÕñ( ØgbÒU`úLLǽ齮¾öªÔé;Ú SSóÒ]2Ñ87°þ*€í =õ‡n{«þïÄ•Ê3ª”Ü^[…ö•Aå:<óÔm¨Ëy]ÀÜyp¯¢NÌkL­o¿Áo?¹~m;€Ü§Ñ@ÞÎÒðý¾›âÿyô㪇«£2¯ºÈgø²ðŽ.¸þì&€ÌCÖ¦Gëöv+ÍM‘ßÀÏÌ\3Tw€¼¤eDO<0…ÅøA¬$À!AX"û…õ]RL5XB>,Äâ&*6«¤aõ Çðþæ“×ZÏŽ—Õ'~§Á› ãXb *|”yݲAç¡¢uÖí&~„÷¤ pí³SœƒCÉûi5xîèFkØÑç×Kñ¡&¸X7W¹l[Ôd®°é–xý«ë¬Wˆiïàž›¡n`»‡­õå|v–6Ú¯òµ.ckuÁßl ?SȤýècX€“c•¬'Ù”¼=æÈ ºº*ÊÅ|š¥ DùH†1\lÅ4s´üÇÍÖf÷Þˆ¬œ TYÄBrÄ)ÏÜPâ,Qd ¥°±5¹Ø°Ì OF`º‹œÉ+Ÿài•DÇñXsËçw ™¬Ö·Œš}¢¹¹!í–X.ý68ÌÄkjÜ-¤™”R2’îÚRB¬€R³ÎÍðŠº‘Rg±IŸ=ÌŠzô¢“³ ö>–Ö&ìiªK“s\ ^öÁ‰¨6%%XnGˆb£¬ amS„ÃHÀiÕ!âç¼ìd%¾‘1"<> Ř®ç ÍbìÚ"ê+ñÜ B:Ê‹t¾NKÅEZ-e r߫Ԓrš•¿P[A»€Dä:$m„ =È|3j“ÔëxD¦/A‘%p…•`J\XWë]áÚ{æí~áÄ龞ñ aöà¾üì˜G™é   ȊеôAj=ÊH¢¶ÂŽÅ~œšC#±ŽÄêʘyÈ‘ÖÑ’•{ÒdÅö2<¾Ëµ )!€VÓ½ˆ>õB÷Ùœ”¢õEzÞû5kW!–×ÂÐ|œ(Ã$+(¥ ÒU%¨)¬n;ˆ *¹Ó^„H(Šö'œ€ºªò›YÄ.}OïKP’PKƒ³¹ ¿ýÙm-0’ÓNYÀñxA¤í–|jªË6Íñ˜¸¾„–ÝUHjõ‹afÉ›º![aAvÿ‹«AØÏ½uß<¬#øåƪóç»–² ‡Ž>358rÁ“ÔjŸó‡£Oc¨p×zIÔëñô¼O[òñɲªbYD"‚蟿!%;ÔP†úRdUšC'àÊø9ˆW4Gáv8ï]l©ÝíŒ&’éïªK¬’¶™XLMñæ–5¤Ašÿå+àgà{ú½3Cý'rkxÐ Lþse½ÛDfm1ÆæÚò–ùžœ…b CÑÄÉ÷ú‡3¾»*>ÿ«·¾ÒqÛkŠ—d0‚xÛuA†£7‚áÆ¡¾ß¿Çwô?<õýÅ*üGˆ :~˜ÆCüïð7hQ×Ïgy˜IEND®B`‚instagram-feed/admin/builder/assets/img/optinmonster.png000064400000046026151435171370017514 0ustar00‰PNG  IHDR€€Ã>aËtEXtSoftwareAdobe ImageReadyqÉe<(iTXtXML:com.adobe.xmp ›OøKH„IDATxÚì}€]e•ÿï¶×ëô^’I™t„$І&MP)êŠeuײ·XV]ÜuwÕÝuÅ^@EDADD)!!! ¤—™I›ÞçõþnùŸó½7“IHBÊHÐ.ïÍ«ß;õwÊw®dY¦ÿ»‡¦`ú˜€écZ¦i˜>¦`ú˜€écZ¦i˜>¦`ú˜€écZ¦¿ÜCýÞ÷>ø'ûpI×`ÚÓHŸÿ¼¸å¿ÿ”‡¢ÉaKÜ/,‚¤\%97¹êiA’%q+KÒ’Œkéóè±™të³9$%3s¡!cˆ^²ž_GÿšÎ±×ƒY%Žºä¹¨M.÷_ø?#ê–ø²ŒkdYú{€KY8ÄSô1ñ°‰‘^šMª!:‡ÿ+zúèü_¢sdÚü9ò¾Ðòà%Æ>¬iÒ$—ZÅÇMÐì’qf~6ºÏÖcR›„ŸÎOй“Λ¦àÏù’…*Í!mTTéf¸`.i¿$±Û ç-ŒõéP5 ²ró'•t>Bç?þEa€¿8†ÌÌefÓáÐØH¦¿Aü]€Y˜8@öh*b¡AÓ4tØíN©šÞÛB¯(=ÁWŒ»‚N)^¢¦dÀrâþ´œ¦¶«váça…ÇìnùEAƒ‘G'=ÿ‚Ϻù’"É–Ä Èg!nIøÖC³”ÞziÑä/>ÆWÝGç3tvOÕÚM°nxô ‚ü´ 8]°9 ÚOL•MúùóÆL·e2˜mäð1zÙ£ôü3\R ¯U)8!!j$‘MY/èy|>o ½þ:ÿxŒ¯ûîT®Ý”L(– î|ÝÏO[€Ó5ÿÌXo¹„D˜Øga‹¡[u6DøÇÌÖEÿk"<¨pI$<ªé8ù‡”…\HÑý|Öz’@㓊†émÿEo˜Q|ãUtΣsÏÔ@Þ|dKƒkZÎDì.f´2ûkY ˜±™{¶–ÀÒá¡4éyo‰„@¥ÌŒŸ‚tÌbÁx”0Äeß ·¿«øîÛéüÌ kž\ˆªË9øò5°¤Ôðë†þœÀCg= tVÑYW¼ //%&yIkD\;á¥@P‰x¬†™NV&M~wŒ• Û *»ºdغ Cj§¨ e„Éå—E” Në3ãÑaóÝ)ì¦ÐñKôa7KÆMDÊkÿöùn³¾\5rJê/Zœ†3`©ùÂýÓ[ƒ°j:kél¦³‘ΙÅû¥LfÓÔaZzMKEã^´¢²Ä&5‡Œ5ŠŒÁ!‚§€M®€*9èyžO!kŽÑóú)z¾Ë®_1uóe#o½HVäe›SBÕLEXˆÐ€ùådÄÊÒcÿK€³‘´¼k<Ѥç,Z2ãcTÓ{H'@é1­„+ ç¾°õ—ÂpÅ_W-úÓ €b@ʸ DJ¡Wô“¨«§³¾ 輂ηЩ½ZÛ=Ûܰ©^Ž÷Iò‡*°®N!ªw Ÿw _ŠEž7¡Ò¹~mœJ½WCŽÌE"G4¿—Äd7Bú&Woú÷­#¹C­Å}‡K©„aû XOùÊå§\~ c½æ×ÂV6›·æ‘ t‘kˆÚKîÃàpK‚éš½(”'øé¦ƒ^GRr6öèHßýîþ„ŸNŒˆ½é› '½gòiþ"[Eçyt^Âæß"[«ªØUœ6ý~¨²†Pn/Òy ¶ë0ßsš\‹Ê?Ö¡“ñH‰Ï׉iyi]é°;þmˆƒ(ժȇ¸„•!&í#Lñ Í!ý8ÔoЇ-aœI”PZ"Í?lp´/½m‰¸ÿ—#l‚SdçnCfÎ6q*í ­ô.%Æ\l˜¹‹d(Õ6R¹¸FóB,÷­þ ¯<‰#gèŠd$«UI&?mư%úl.Å·\CV%7þò¼fÃý’*Ýcæ­ã`ïdþF€?ç<“z×oÈ’ò »ê½_V¤ô¡Xj¥›ñŽê'ÑZròÌçÃFŽ{V©ež%¡[>\Rúu\SþkäM)ù ìv[ÁT[Ðò9Ü•KYÛõ<î%Æ×ŸóÏöñç({˜Î“öï%Ÿ1-sMÞHþ¿¾Ô€vYÅÝxOë½p:Nÿ êünÔz½gF0˜¡Ù}=n®^ð C‘Cðú5 3‹h¿à·ßKçn:?:-šc!Ÿ%†of­7Lý›º‘yW^OÏ%h×d;"涪ìÓêõÍŸ›’/l ºáÒ4èfƒ™Ê]óqsÃzìß*cï¶AäRŠðû¶Ã‚Àçkt>MgË´LÍÚÞNLŠnwfþ y=uÝJšb‡ÛQ† §åž¹]Y, Þ…·6qJPåu"§[.Êè…0§i>Þ}ÑÃØ·/‰[SèÙc"“´àòI"lpÀåtn-¬ý¼A.:ß'IÒߘ¦9›4Â(Ò4ջÛæ!Äp ¯"g@JqyùÿLùBJ\6 ÄÂäð #q¬œóV´¿kÛ~ e´‘‘òHß¾Õ‡mù `°©>»°\ò1jãî`¬Ç€‡~ wqËÁˆÿ §ïgXÙer9áåó£>¡¬¤¤ ›7¯ÁïŸþêjg¢ªªcc½µôÜ&+ÓÙ²ç’ï»LvðС]8xp**jiCH¥ÜpQ#'ÉÌ*Æ\Óû©¥êçÒýV’tÖ.ç¾ÎÍÄ|_ÞÈ+às×¢2°€pA1=Aa_']dÂA"›K›È“™VUùÓÅE\:ž½á`-’Õ ‘ ”¢dû“Xúoç!pèX%~ØÆR°µ8ðç’x®=‹™ Ç­€5N¾#ú ÜàÍ&LÑf&JÒ–èkø L†75\­g&L[æHíTÕ†L:…±ÑAT”×÷ :3 $·ÀÝHçŸU @ˆø³ibtžã²ËnÄyç] Àšn$ðã}ÑøÐ<ͰCío|¤^:ÉTØ"ÔkåD‰Ÿ²½’³}.G^W@ºÑTÒäø¾¢ØD ÈL³°é¹BÙÕ2£ˆÓýû©¯=•J¡·»‹Î)²6a‘xÓb8G;1ÿž›°ã}/"l†+;„ñùkëRxlN `Å-ém& -o(9þD«:aÎ…¬Ã]&êç(Hæ,fâ»-Gú_•héûÞ¥¢™Åb PtÌäx<>Ëã â=ïþ ƒ‡ W^Ù„µkŸ‚¦eápx?GÑÇugÅÐ+É]çp¸±`á›±xñ"bNLXu•€¦ÆYHIÃÙ†ë<.‡c×ùð¼p-Ô¡:BÜ©‹ÀÕ3b>›}¯« n{9â© †wóCôN‘þåä „×?ÜÅ+5ý™Ñûˆ˜vMŠÕ’'iî¿ÿ~´µµ‘«*)†W¤UÙ4ŒêYHGbð?úÏ0ýn4²O¥ ž:˜ÃŽ~eY¬„÷›fò£trÔrb=âõ:<ƒ„](ÒQ#OEÿ¼sË*¨0݉#0Ñ·6N]ÜÔ0“˜ß,èÊô]´h!.\MÌ÷XM_C¯«>+@4{K>Ÿ•ëëÀëö#¦Gˉ¿ùÍ×±mÛz’XÝ Ç7åõü—-WòVm´†Íþ]ä÷ÖÊyc†Hø<!ЗÎE&òüG2ýèï¶„FSÈûc‡àá=Y|ø7±®}ëÖ­øüç?ææfZ‡³~62Ñ0Æ\•põ< Gç6èžJ8È`gÉwï"º¸óÇ0?HV€¬^;Å­ÖX_qç2«|Þv§œtØr&¯–,å2bæjzâV û¾F^&÷lß¾AÐ3aZ”"C‘›èÝP¿ˆó%ÜåzõYq†‘»Èå"d'I$€ ¿½zøÛcÙò7cö¬ÅhoßTK†þA‹T!3c'r-»¡¦È#K4 hæÓ /(v¡…¯Ý/ â¹é{"ÛÈZ ¶Tb(‘F¥Ç)”èÛÏ&`«øäN4—þ‰yòU?üáq÷ÝwÃFÌfíÏf³œÃx‚ÝB,ƒBð]‚6¼ÙÚ%ТÙÝqf|¡ÁR}‘— àÄ0` ØIóc£R1Þ¬!ëƒÞxè›ù3‘q Àé Àçó‹××Ö”aöÜeDÓX³æ ìÚµ‰"böì™Äø ´~½ÞG|ȯRõ¾×UØ?ÑÏw»ƒä‹ìðxÜ´Àxè¡oÂã.Åõ7ü5.¹äA™sÎY†}›áñ¾\ü$¹$’±åð¨¥HÒf[‘‚¯m¾ùŠbÁa `$Þ‹ž±gp^ó80C…KK£ŸTeÃ÷¶§ðਫó0oÛ½[6ìÙ³›6mB]]JKKÉ„æhýš°(Ìød2)³}ba>=±‰”ÿ—É ÿN›zmçÈsð88ÙnNöFÊBdØB-ÅC1r±å“KD°~ä;pÇ%å9‡Þ‘ÀÒs¡ª²/mxüä+¸å–Áï>HxÈ2 ÏSUí´³„òišÕ4­:•B ·;@Ä‹à±Çç_p#–ÏM;1zÝ ß`ÃÖ'гêgÎD T-ÀÅÕŸÀ;›J4Õ3O¡Ž7|–ØÿÇ;yUú{gÏÏ…;`בÊ'¡ä…Ö;p«xì@ßûÖ½øÙ÷£³³“|è"Á|ƒâ8ÖüL&ƒP($´Ÿ…A-¼&Bb–»‚@+ïÛ+üè'PË@Ð-£cðQ²@½pÛÊNz'[Þ°™ÈeL¸¤ú³pÏNᜥoÅ;ßù>@þð‡Géë"ôúQAG¦ç²e7¡ªº¿þõ}ˆ’›òx`ú¬£¥Ù^o À¾Ìfs6ªØ·o3¹ ³Z.Ae…NwÅ&‰˜3ðÂÎǰ®î+Xиo ~jý®®û/Œåà`|\jà¤4"9¢“ù$?¬ØMøeØÝ÷[ìÚŠ*Ÿqz®ÚI!I8 ‘6‡S–®BÓE+°¨®å•Õ 0Ó™á,ÑhTàf~AÈd(ÉQèÁFäê/€’EŽý ==³„]–K„‚~Ná©‘÷p#¶àrÛ‘Í屡çQ+âÜÉw¾»vnÅ /$ù…T«d¸ÄßÏìþ$™eâ{Ê…MvœSAˆ«;o_lQ]³ÞðD¢!Áp>‰„°lòÙŒ›P‹Ì‰6Aré]È—VC!«•KZ¨',±°V¥×Û°¥ó§hë %ž*±/á”]¨l‰ ¡({;›I² =[£L[±råe$Ï"› ‰J#ÓÓPÞj™¹ ƒƒû‰îý` fñ¦FXÎ×Ûˆ@Œ3v##‡DHÔq(L*÷Ð3¼Ç݇ÝÛÞäÂêšwבËî»7ú<Óûá³ULTÑN €ê¼\À‘tTøj°µëi¬ë¸~'Ü$`·/!zä$äí*ìý½ˆ.û ÆÎ¿ Z{Ý€¤ÙŠŒ?œ¾³ø><Çv$]Žè›ÿ Úè ,.„ ÜÚª¡!@w8„Ç·~œ¢×éA(«P6›PÓ$ŽRŒfÚћڃÂX‚.¸`FG‡pà@ñÞ'èY^êô jø>$ÜUa›£d½Þ0Jš‹ÇÇ06Ö‡²²ÆBõަëŸR!®îh;€²Ú êø„/SåÒßyªXg?½=pœQs$:eò¥ Êý~übÓÐ;¶•@¥µÜŽ–z‰“¯,´Ø(·?€Ø›?Ç@'lCísq² ‰$¬\`퀽g?ËÞ¡¿zR& U#1(‘ð‰ËªDÖñ§/ÞŒXz>g¹¦Ó98 ̦-¤)º°Û4¤ôºSÛ Ì&:55Õ¡¼¼ íûÚ'¢›Kᦠsyy#á–>‚£œ(#”e¼Þ'ô?‰ QüÏ!`…%Dp ÅöïïCaß&…MÝ]¨©®§€E¾LVJÏu +ñü¶RaOÏnJkyã¦A@,@@P·ž¹½áC(¡8ù»71S&"i2éYŠ4b$¬oÿ†Þû8R­7©ÊOˆ²™™WcøÎŸbøÝ?ƒLÌ·%†7ÈaçðÀm¨&üÕ?Þ‰½ýÏ¡&ØÝÔϰ„d¯’; £E`gÁ°šY¢¥\[éîê.þX k"žtöû+Ç$9à(¬Ÿ^9©àvÓ4ZE.€Ï‹kkë¥pJGM '‡b˜5{–ø’Âk¬ÆäE¿}­«YLÅ8½4$D§¿ ðWȈçQ¬Ã@¸_{úB¼ïÒÇñ¦yçâ§w)¸ý{Cˆ”ið+1Èýq¤[¯AzÞµPÇö‘P ‹Ìƒá)#?[äwµ¡nr yD²dúòøñçâšE&¾ôô-xùà/Q_Z{Dòè´3©œIL²švʼn¡Ww ¼Ê^A¯úúZlÙ²™\A?úú¢è餈Ë.jל}åPU¡dyßÙª¼@ç[qjºS>Ÿ“Eoo¿p †!a` ›LX9ƒ¡àPýL{[øý\ªž%#µHèr¤¥M‰õâžß¯Äçý/n[ö!Ôû¸åû‡0Ô‡R¥Á>HLW`ØK‘«©+VîHŠô@êäB(Ô ¤â.Á} à²Ö½øÔcïÁ¡Mh(«#†±È˜g¼xÞAœÏ gM¸í~$uÎi´Á‹F¤sÝ¢¾"“É߸qçü]§€«Mä_ŠÇš³%þQ¬!4o÷E1šv»gèq©dííä«sp ŽÞÊðSô`égFD?¼gŸOÃ<·™Hgò(óÕ"‘áÁ ÆÎÞÇñUŸEûÝ+ð¥ß÷n‰bx,LÔgµ£[i¬¸u—MŠüIˆ*pÛe$—B8ý_øÐƒ÷«Š£‘pŽÎ5`œ¹ö§†ó9ž;`Áé±#-bóŽÍ(K‘pº) !ºq'²@¨Ûí@6[h‘c:s•Nçªä‡Ï–ôQ,z/-ì.Æe¤±ØÈ„ˆ´.gŒT™Âl²¥Ô~äìƒP 0cP f” &E $tîä½þyQYl°ù±àwø?Kf_w]øv¬ž·ûçàùAC‘ÂŽ`^ª‹BÈ YÞ•eýh©|–ô <¾óQììëF¥/H¡k£¨úMå!¦˜é…UN±iÚ€á á“f»«…д•´Š4µˆ–~î¡iî è9kå`2ùÿHà†}û^*ãmü¥¥u\¡¡/œÃÄ\.+2e*œÈ¨cÈ)Q¸ôÚ)€qBrHå¯Ð¼XAÏ.² yºG…¿AÔÖv<çÛžÀìÊ:Ì­nÅí­MÈéŒêàžDX!×nD³û±éÐ.t…LBù4µþŒ߉"š\!µÎ»X³êH±ù“ R®Ð9.]qâ™ßѱ‘Ÿ 3ýÏ´QôŒ€¾0"8%]ÁDŒA"Æ_‘ú*™Ôwä2ñÕѱýKìi²Ç…ÎÎMÐÇ:ZÚG™ˆ•’  (<$Ʋ‰˜>E9Ead._`žI ÑWQ0˜`0 ·â>9±i¢kÈfWDAÇäg­"s¤‚·¬»¸°Tà`)ê„k²ŠÿDÚ*Üy Y*t%³¤q&›Âíq“‡˜"¾•×à„ƒB<‡ì&S_hŸlÙDJÕ(–ЉÙéD[·? Í“CUi½^ÑQÏåôm¤õ$ð÷3úžS¹?@ÅO¤²#Ó—OÙ¡(ÒŽ¾‘áOªª4/“Ŭ†ê@CP 4¶]M‘výÑoל¤½ý¦è™K§IÒMJݳà$0§Jv¨mpë•*Ñ-™HšØªH4zNÿT±—€oúÇ.K²Îy‰Ô) „¬á ìëx M‹àå<£±Ã=GBÒ îÊ*2•зæ@ß`;xßbMÃlЈ`:wëâÌÒý“yd"Ñ^DŒQÄÉ´{½6ú™áãB „Ë·- ¹œ|L“¤G#‰øÁ]»»í6k_Þ°öTáÚŠ rUÜK@ßGá4[ LÁ41U>Óþ¤f²f ãÄ®Qtô gdý£¡9š†GbPìi÷?Ýñ±] Å÷{êH]K…}L‰l#ó`(xKÓXÖ|-|*dÓ"eV¨Ð÷™¤z]°Âsî!•âŽaþÖ‹Išb6õñáÀöâä0K|†Ãi‡Ý©Á))ŒpB²É¢vpxIü Ž#$ÕgÂ"aëC½s2RBXŸlÖ [ÞÓPpäŸE§PÏØËØ;´î}ÍA4Ÿã¤Øß|Uû€Y›v d–ÞóòÚ§ßó³oï¯Ò}©ÿ xpy.oÖ”•¬¯¯¨¦P´³úàH—ÃÌó²3IÕpËú3CáÄÕi"aÄÆ?„°{}€ú^9ë¼7G (ó(ä’Wt¥ö—Ÿï©ŽFEësQò­b&š÷zÉ&Æú2ècF}9|n/BéAä Èe²b®\Ø4¢*B“uúlÑœCÂõ¢¾a=(†‡r±®/ á’¤x@Êm'IÄÒ)˜J¥U.Â+3Š1õ$£½a-öé™´Ö\6œœ¥ha€e—øž\6KÚÍàņl>/v,Ë–BkN#aA¶q˸þ}I”Ô*TÙ1Þ² aü"ìãÊ¡Aìó…†ÒÛf”¹*“cÜ-ß64û@ÛžÐ÷¬ÚÒ›ÊàÉUBO“BL…dJzÏÜX¼Ú‰›>^±ƒCD§{¯vÒ–á+#pxƒÞReËÁ-Y?3{$ùwn‹g>‘ä‡TÄž€Ø ÆôòX´x9Ç'B"N:É2@zÑÖ6B)LÚOÈYIãÜ¥—ÚŽyl,‚öñNôôô`ÇŽ--õ¾®82Ý€Â!FFÆ000F¦<#ÒÜš$áñbéRnÚl%æ»D£Eî §ç÷èlgÁÓ`wTÐ{HñN" ¢ŸÑ£–‘"Mæ°Sfîüó‚›jïõUæ2–Ørê3±óùô÷*Ëm¿íc•ƒlúãôûáš" äœS&²¤@Ü üŽÏ—~[­ª[TŠ[í¢Ž·¥bÖ¢T,O—4CŽ£Ìׂ–À{Í ÓE¡ZºW„Ç;vs{îCŸ˜aG2†Û“Áq§A±OÖóâ=Œ¶c(bï¡""^ϱ†Ã[V’z¶ø¹Š˜Ân‡{ 9—LFÉÒ• ºš­Ž.Œë"Š ÊYº†G¡²i%n¿âCHÇ;‘3CPÈš¥¤QØ\:A'ÂÖ  wBO9y^}¹¿D+¯i–DjÝ"—–'Z.\­Òsö‡ÈJüm&iîT$çT‚À©9߈ä>í Xj¥¯’î›=5›&P³›‰\*ØÊ!”jCç–06=Uo¹A¢Y(Þ‰Iñ¸ŠdbŒ¬†ý£Ä¤N2‘¥ 6ÙÄ*¦¨çsª9NáQ p’)– Uz["Nòäóúñ[¬bºñpvB¸¶ m+«4¸Ü6!bÛúDm5D`  |–vÉR½{.8£;§¼: ߯~¥—=ŽÚ: %Õ³H¸´‰ ªEšž#@¶ ³âˆF#'¢úV›ÝöEzþóSÆ·)ÉÆAzHÏç?§Ùµ,ØŒ_‚%¥dú4AH–f]/œ.·þ96àÉíÇ?y5E…»É2Çx# iWDì‚ñê04Ð…î®’½zïk"ÇíIb„v¢ͦÒÄ#b4¼" §9—|ì¶‘V.0yxn)cfàÉCC¼û1†ö£§w€À¦‡üz3 [©LQ ¦-„‘Ô.üã¿\ŽÇ6| þÆQTæÂãñé”/h?9&W,)AÐÛ„²à úªBßÿ9ZË/ÞHàÓßÊ ®©i†ÛíÄ)ä9¤W±#›I½TÕWà¢Ë$<ñÍ6<øóÿÄCß~ŠLnN…“;þð‡Ø½köîÝÆF.%WMRc.—‹ˆ•ý\ÁqKËzÑÿ–õñjn.o!“á­Šab2#x[1¦ÏÀ2:‹V‡À¦¹TD"ìN iäóéà“ô{2“´èímC÷¡}¨­oÁŠ7]G¿‹w’"Õ~/îúÈuh߸oùëªêÊ`éÍôÑG+œ¦Ð³ å÷IàTtwïãçn&Úò¼;Û€ïf©u:ÝpÙæ­b…V¥c&žBæÛåt!Ï™/â[mIJ~Á|>,xÊÊ+°cçn"ü¶£>Ä ï³²ÄÀ´`ÅsÇËÊbs‹½†)L¿ªJèhï¡ç‡i½Ýô!{é1µ ¹ ÍVGÖ[CkÈèäÄTa¢d3[1ÍÉÂÎ]{ ó “ÿ_J –ÖI†hãõPãs ŽB:–KC‰“•p‰ÆÚãõŒÓ’÷Z2}].OÓànœA3èTY€ÕãŸ!¢®“ÌP1 %Â(!Sÿwÿ þæï>ôª×TWÏÆ¼Ö‹ðâú_ãÙg×⦛xT ‘l…b-#%Pw2ÅßKVÇ:@L®¯)h>=o0SÕ‚£²Šþ;žXÄçõ’¯ÞøªkÉ ;ÉÙ‰!öBíÝÌ‹ ^,ž"æ÷ÓãȦǵ›"]]€qŒPܱÐFlÛºUµ¨i¹T4}p ŸÌ‚ØFÚþïÿòmT¹£]ù:­=Œ€­¶0UêÄnöhúòóHºΦˆëé0 cMälZ¡NýÚEƒL¨%Uaõ wQ}ìÂ]t;ÚÛ^Ķm[Ƚ<ŠåËï"-ì×c ï#¿ˆ¾Þ^òç)Q;—ÐV|wN€0…›E¯Ï%\E4Ê;Lá>ƒUç,|Õë*+gbõå_ýêßñÌ3ÏŠ©Þ^x) o<Ébtt´Ö‹H¸¿øÅØ=ç\4Ô{È=¸0Td§Èæó: ò¿‰Ô áŠýdÎcþ #4Ø•×ü#*ë磿sòÔ8Æoná´2§Ÿ¹áEµ{)Ì­€·¤uµM8ж#C‡D~@Ùí4ž|ê§hÛIÂJÏ·.¿´ß(bY¤ž} ­Ž'~û<>þÑÛ1ÿª~\^r¬ì ö@ VšfC(4,v39®ñÈ䬻€ Çk·;Ä\Þ¶Ä&ž‹8\¿6ŽQReÀÈÏ×Vù Œàk?ü:ÊJþ­e¯zí²e7ŠJØ3Ï|¿{ò2Ùýh·‚€Ö.™‚;ïü¼ôÒ/°å•§±}ûóðxKÅn%ö—BSø!ä3³D¸D†ïã3p³y¿cuMν꣨nYIÌL0?,!íÁšgŸA0P%‹VBö~^ˆãŠäŠUGi¢Kš?NÏpˆ¢›†pxtâ±IX ýŒCø/¾Øx&ï_V̳N0wزeÉ %#Qä2I¡õ¹LLh>›ð`Im{öbËk‰é±ÕðãÒÕWb.1ÿwë7àúk®F|HÛ¯º0}¢D'q}ÃâÆ[Y’7$ò+S’ÅýêÎæ“”zÎd‰-M²ü*!âÖä·LÒ˜sç)cÿ|m³«çáÿuÅi_)Ò~û4b‰„ˆ³¹+æÖ+/ƒÃf›rŽ’8NÀyม­aÂIBìt:±í•Íèhkƒ„;‹¢¶®Ë/¼H$ 825ÒQÜrÓ•Øq`;¾ø[/­£ ©D'Ù,Ëô~'&õ¨›b…$,¹NZþá‘Ú“z!7l”5¨ð—+HEM1÷nüŠé„)‘‹ú *#b£W™EtÕä¼]ØõË”ôÜ‚¯ÜóydG^H*“ÍáÁß=QÒ,v—o}ÓÅ$ %ohà0Ïë÷ þ½´~ûûÉíy'æÏžÛŠsÎ=ÉTZ¸n© ÷ å“øÂ?|Õ?Ç¢[» EÅo¶ŽÖfØÒNô~”ðn‡G¶øj¨lqØõ°UíÎC³Ÿ|™Xš{±û$€¯Ž¥`Ù[ÝhZhÇX¯.¾œw¸ÔÌÖÄ¥Y!ÃO \N‚ð=zKƒdq‡+÷Î%è… '3X|'ÞRùMTUÿ]ðÿâ÷Ï¢{hN» yÒ¬kV­@ksãNÆMs°$ˆH8Œ—Ö­#sŸ„ÖJ&±äÜó1§u.¹À8Eù‰$SN7PB@°Ú­ »7†5C‹¶äOà#—ur›–²i'Ú a襯y?Ñõ%O‰al;Б…‘/”ºJëTtnÏbÓcq$Â:ÔS¥b†½p]Ý×8Ù¼Œtêô†pOÜÅ¡mYì9‹Þ¶¼ho®™eË’  …ÞO:²äŒÛ’²Õ¨p'Ʊ"øܾô?EÊõÄ©b gÏÄX4†¾á¸ìÜw€AGsMõ”@*o ’ɸ’Ï@ëM1X*ôØ;„ k_h]”«èvåÅ—ŠATápDci’ïäßÈó‰†Y¸(¢XTy#²áŒŒ Ðgª¤81Šû¬mÿ¾EôäK»ítù•Ìž5I¬$Ž­OÅо.‰íO'á#ã¸ýÙú÷å¨*€EDOâT*[l'÷â¢PkU*TtïÊÁé-Ĥòص&Z²õóì„Í4—ó¶þû‘÷tUŒ~ùsä<œßp=iþÉ÷ Îmj5ûý=}ä*Ü8ÐC rhÍu5VjgQ,ÁP¯Ï'ú¶½ò2vnß§ÃI.,¿ÏU—½™£„˜>nqL |dN®@åâØÐ,$ÌFyö.ÒüÌSî5—tß:S7Ó|mÂ}›2øÕ—Bˆ ëà+™öZh$‹œŒBl7çÇEë$”šÏSþõbRg†'\˜âVѤҒå2Gþ舧G-܆‚'y|±Û³††¥!)úFÖËÎ_Š«/ZùOY‚ÁÑî{ô·Øs°ó¬ f<‡g<|­ÁPXüÌ“Ñüceņ’ìœüp𯳂½_Òô–U¾r#=&^úMŠ¢0™BI¶¾X}ÅGü%ó.r…£9 œÎA ðäbl±ÿ.mÁé—°ð2_ë½N·|?ùþ*~œ#„þ}yqÕ¬s¯r“O"4jøšÒÎ͉¼ØØ¥Rm½„úÊÓ/`iªŠù3›Åu|öu÷Š[níÚµÿúGFI(ü"™4%À*˜{;™rÀ/½sÛ6áëE¹»0¼ /ÆÒó–‰ÇûòxKú)5 õ#=PxùwåXéV9¬ÚF.!«U<ñµ0ö¿’AE£Æ NŸ,_|{àm©˜Á­I[ö¼˜E:Æá¹|J¡VOÄpãÓ—qK“Ã-¯$€ñIú’ ¦!-ñ–Ê·2àø³¯='*eɨ 7[ÂÙҠꥩøÉ6ꀚùä”håŠE Ð\[ƒ?¼´=d‚>/Ñ?˜?sV.Y¯Ëy¦žépˆ´m2‘Ä®íÛqèà~ä²92ɪ¸­¢ï_¸h =®òÅ„ 85“¶(¢HÏAÜsbU_’ìÙ*X†ZØy¤[‚®i¢otÔ@xÀ@˹âšD-¶û÷“!é-©^ÑœêÊ|ÖüR6c¾ÀÑî”^sŠéq-€ØÇFÊQ^¯‘IW9t=ü1òùoÞþLzþŒs¨¤÷² tíȉ˥¯~¯ßîCbÔ˜(ûJ–]ìbVˆ9Þ[Q_]1%BÀš¾xv‹H³à ‡‹]t÷C"¡TNáÙñ¢…£-€YÌž1˜cSžÍPˆÛÑŽí[· ¿¯W¤~9?Á!‹—ž‹…‹—а.‰KƧߣÏLöª^²bØc'\J²AXC2D+[Ø9+ð•+êÌ‹Ç.{·-Kí"ô»ÿS¡V >Þdwª³dÅÚSR%­×l<@«¸½VšØfûªó¸ÀÛ´XŠÞöÉ\ó‘û˜å[ŸJ^UÖ a¸SGûÆ fœcGý\;–¬váük<´H'B}:ÒIK„<'_l_Ê{‘æ)âÞ~,©xÇ”úèúÊ ,™3KÜ%R¢¥K\㽫{;»çÞ‘SB¦¾¶®’RØçà°ÛÅã†aîs8ÓÏ£gtÇÖáÅÁ„_©+\s'‹“©Oñ<Á o 51Ü¥f8ä‚eȘXû³8ìnrÕž Œëÿ¾ìb͆µÝ{ó]»Öå‰þ“v$ŸŠ°ùŽêì œu­9×çR–—ëI ËpûÊPßjCçîÆú 1ôP.Å AÚûöÒ$…E’!¤õa,­ºíÌÑ9{ûñòî6<·y ¶¶í#†ëâñp,Žûd©ÐÁ@q8AGW83Ù¬Hh ŽŽá@G:Úöˆ‘v¢öÎE“wP]SEÂÁ{Òƾ124€x4*ïözàõúEV!»‘S‰´Ÿ9ÖûŒ¤Úôð62#½†Hò0c ´, ›f16«i±¡n® [ŸN!:là¦*Au‹M­˜é¸e÷Úô϶?“I+$ãD PZx¹çx…»åÄôŸ“¶;ßô_Å|2=YŠý{÷æ¬Tà)UÐFn€¯çà äÉ å41/v|ƒ.ŒØo±Å¨¨ç.Þ4Æ’cø§»PéžsZŒçôðÞØOæ9DþWg38AC‹.¡ð°®ªsšêE‹ùž]h#W‰ÇEÁa–Áa ¤eäEŸÿx×ûtîÞ©©«£³^ gJ&Ò…Æ0FVadx¡±QѯÀ.!,EyE%ªªkPRV&!™L‰ÆŽµÆOÊ'óKÊìÅ/;–Àë(¡ßâÀP.´›‹;<ùÅÑ6‡$¢-ïLÒ÷«Î¹€Ö"`8h Ž’ßž3xîþØñ$åpYw¼p\¨šë8ï èÖLoPÙÏ®`à@W¾ßU·ùÄŒÞ1’ÎÎ]91­“pA"YxŠ÷øïfá×ûÊU¸è¶²Î‰ö}¸vÖgpMË©íi`ÍÝs°‹Lú€Ø…k#4ÎeO6óŠ««ÐR_+¢å(¿Ì}wí]ÝhïìÁ…‹i²6z*6ËbW3²²ª¥e•¤’ ÁhNõ²õâë' OŒŽŽ`¨¿Ã$ 1F™gÐXRZJ£U5$xä~2iÞ´’>ñ úWé,Á ½ŸÅúþCCé, ÷¥…ÙU×BtQüa×àð’ V+g%IéšØPV«Ñû ¬{8Žß;†ŠšT(ÛªhRÛñ"éýß©:¦px·sMú[{צ?ÄBÀ‰†Ïü¦‘!ýòð$²©ga`F0'9“eµ*úŒòZ"¬Ô‹Rm>qÁ–×®¯“Vnoßûˆñn¬©­š)\ä¡®²­ÍM˜ÕX§ýä.4ŽëèÃÁ¾8<^TWU ­wº]ÂŒófÑñQòGgy;G ̺P8„Á¾~!pÊw|â8×ÿ«jjQߨHŸÑ7ƒ 'ðL"·jÇ£ûÎGÄØͨÃH_N0š«­ ¢­c„æ"õKÌçíæ\‰“¨žÁû Uüû ý‚ž{OÊlGà9iMܡ˥߾Þôtu Wa™ðÈ]Éì›gˆNy‚óÉDbBøs<ö ùý­øõ¾ð{Ë0Ú+‰ú [S6ÿÇ«ëó¹Ùš#5VFæGë '¶ý>…?;‚EäÚß÷µÒ§UÙ¼’?óXa¾ƒ°™:HÚœMZ¯ºîKa Jm½ùS%¸ä6/8îoßœ!­QD‚%Ôî,Lé8ÈóžˆØücXý2ÈáPdí«€;j6ïÞ+´~,C€B3?­:®®X¼PÄþãl$9•ƒÍ{œ¾C×”âeØN.œñk°U˜5g.›fAè+..Å•½ a¡(Ç. Ôgˆ[‡WÁþ-œw­[Ey£†DÈšÃa9¹€I%lK`‰²Ê½í:ï7”P?_ e7.¬Ù$U9‡GÆœåNtî,6 X|á#]ÌõüÚWKŠ~Œ¥.I~ÊNü뉒 ˜táÏÍ„æ·ÖE¢"³Wêó‘D‰Ù^¬ZºK[g¿*–?ÓªÞÉhü «xEô…D¾€ Au ÄônÚ¿c%">» >«#Ìh™%j, <'b$µ\Ëâ,ªY€Å–2n½¶°ò1˜•34ñþÞöœàW„,¹†¼½p¹‰î­ªªÀf/ÿ&?þ ¥L:krÃB;Ê›4¡­~ˆ°C‘®0uÌáxžG°±pDuñ!U'ž€&ú96 V©b*¦èU3IÛqbfçU¾m‡úðëç_ÀöŽý°“eg¤Ï@nÙüy¸æâ˜YW+üTSÑ2Ù*°IgÐÇø¡Š4½¶¡Q¤’ãш#äºbäκ;!J‚ÍûÊËØ:øUIJ]È„½ÍVxJŠ,ü<çö5Û‰T F3 ®ÖPˆÎV±ŽAk2ÌM™h¸— #mçcݖݼi˜"ñ2¤œÙ»ö’ 1»±~Êÿ§€£Ý cÖø:Ž*Âccb7 c…ÞÎ! 3³?H·1¤ÂNÂñ)V0îìazó'½O”Ì!¡Ñéµ6 ÇeUŸ£ÚÉUe¿äöê[Jk%¬{(ç~œÀ“ߌ#:dÍ®IFš½ò/nø‡ÔͳkÇrc}F)'Œ,£Ó|¡óÔ:¶ÖsV™]J~ˆka² B©ü£Jë9 °+˜„‡Ð²½ýËdê+ÏŒ"IDki¨Çªs¡¢$ø'¯ïsOàÁPüŒ{OäBØÍ0FðúÝí—E¦Ÿ¯Ÿï@ßöØŸ¹7’}þg'Þ>x"öÑiwËÉü¨ú'ç_ï¹cý¯âb®.—%Ù%X†5!l9¸ŒÑ%c†¡ýyq…,ˆ‰ —ôZN C8f¡´û[ÈZ!T”z‰!ä/“©â GIg渚§*RaJX±ÖΩÝÂÈÖÃÆ5±P™“EZº°—oòíᦵGsf!4ÁLkbž ØhY#fĈÂñ©¡æøôPsâ~aÿ¿%ÒÈã½ã§%n !øn§]LÅ ‡ç„?ŒhvB]%ä“ ÓÃÆ{0Ùõ²o¯š©‰„Z¨_G†Ð¡žŸØµ(QNŸŠ˜drYïÆúÚýï …äݶ<'‹ã̹?Úp–ƒc,ÆŽ ¹µlҌӇÝù…ç–ßè½xïp‘yr!6V2áH‚C /Ì ÏV@ UId…0hvš‡´^[Ih&2JaÒþ±ˆÃ,ÕÏjöÕOÒ¨Éõ€IêwÄGŒ}”Ž|(ƒÒ¢4Y«öP«~>ù1éÈ¥‰ MaDíø¥Dåb ¶ Œ’fŽx²ïò=p³ ;/DRÛ!èÂoÏç I5qu4­ð™ƒr¨lÖPV¯ åblÀ=BQl‡kþËßêåNí—îy×3Ÿc,ÞmÂ[´Ù°àdDêh Àc¸xç…½(,-Fñ\PpúäøgŸªÿíœÎÕëI8YÁ1+3_Äú´ I),–ÿøI‹|!«ç'í/«—PÕš„þâ¿ïwK|6Ô­‘Ðí)ŠªÊ¤î¼][Íã„”„öôˆ‘O³ô¥ÃSJ&†5ãȾÖaM?žÀ,Nbóáiå“ß3ñý…¹>…PΜè/Èçò"æ7‰c†Îÿè0t3“Mz,ÊÚw¦µ ?Ó:¸×áKø|ŽëÇý=•˜ŸLW4ÛÄPMnO¥“&\ä"VÜäÁþÍé5ÿzeÏUÉˆÉ \WÔüÂtÌÃõâã<iŒ 7ÓŠŽOT:š*,ýäcF?ö“š¯_òÿß¶mN‹J $®h%‹:€F ‹‹ ›Eé-,’ËÙ@o©Œ•´Ðg~üîwÞúkÕf¶øK’í$šJwH 4›f·«ô§ÂN‚ Ét‡ÓÈÌ“õ—mOŒ´,»B·§‹^'k|m EÓ§Ó©Ðëù+ei¢SC*ìú¡­è‡ž².–ØE\å&|@¯¦•ÏæÌl&c›dq—z>K¸%Oåè-92ùY“gÉÝòÜëy¶u¦žçŠ¿=“ÉÃóô?gˆ›|ÎʤÓf<OK–ÖõÁï•}õûÝïcÅ⫊rÉ}<ÙÃeä AþJU`41Þ>k ·Ô8߆yË\Xópô»÷ÜÙÿaÒ|æ%o÷ʧˆ*•œyaF·M ‡GmIÇìZàqZ@ï[>ZrÛ­Ÿ+ûªæ*ö¬K ¤/fmkÅŒ_´8ÔX/LçÐ’+ˆK¯rs#éÚÏ_Ö}i6e‹‹ß7nuŒI›“î[GÔQŽògé8ºÁfü1yÒíÑ÷•I¯çߟ²;åп<Û°¶åÇ…[ŸJ"4P€ ¬Y\äß]äçÅ%fr WBaâ¼ ,¡_þëØß=ñµðýôY5Ekž=Ç饌ó\*JW„üÅûÖQŒ˜üÆq÷ÐV9ÃV÷ö)û4Ãò î¾¶œatÑ£>£(ÜSDß@eƒŠ¿Iü„ðÄÈ}0ΨƫJøË?¬£î³b ;M|ìšï/¿Áw_àªgoN4Ý@¡$|>'…8”fz2_~<ñƒ‡>?úÅÁùNöd*E+.…Œ¤In@*¾†΃ÒQ€›ÞÝE¨MLÒЉEsqm湎%ßé{ç‚Ë\o+«Óf2’áZ6ûn»[Û»'÷ÜÓß ßó±NJŒ/;މú¿z0=ùJÑßî»ñŠ¿|¬®Õ~ §ã „  Ê šïŒõ點K>B´üÙþÍ™WŠ_3‰žò$I ÏA G±âc'Ô8WÑDÙÇ#‚¢@(“¾„¾páÍ)Õ´®rͯhÖÎ V©u|ý„ð€~¨·-»±m]z{ÑÅ-¥ÓÇaK éÂ7\s/t.©kµ­V« ÷-‡†å_Þ».µ;›²úŠJTw”U1&÷|ùg‹gêTóÇ:´¢@hEFŽ ˆ­(Yᢔ›~ïÿ./ Ѹ¿ŸlU¬ã˜Ç“5£ÒȤŸìZŽ4&k«­È¸!®­bLÎË»§HËñ3[|Ýøý¦`ú˜€écZ¦i˜>¦`ú˜€écZ¦i˜>¦`ú˜€écZ¦¿Ðãÿ 0 ,É¥:&ôIEND®B`‚instagram-feed/admin/builder/assets/img/logo.png000064400000003364151435171370015711 0ustar00‰PNG  IHDRœ Ðnáq€PLTEÿÿÿ((((((¨¨¨ÿÿÿ(((((((((ÿÿÿ(((„„„((((((ÿÿÿ((("""“““ÛÛÛ)))'''(((ÿÿÿuuuÉÉÉãN åP )))“““ãO '''ÿÿÿßPäO(((‚‚‚ãO ¸¸¸%%%~~~ãOmmmáááãM ãO¿¿¿”””   ÁÁÁÿÿÿŒŒŒbbb“““©©©œœœ¥¥¥±±±ŠŠŠÔÔÔÐÐПŸŸâN ÊÊʯ¯¯¸¸¸ãNâM ÿÿÿ***âOÇÇÇ‹‹‹zzz···‰‰‰ãOÁÁÁ¥¥¥âOÍÍÍSSSpppãOêêêããããPÒÒÒ©©©âP âM ÇÇǺººßP äL (((ãOÿÿÿCCC^^^çe,üéáxxxkkkPPP555î‘h666ñ§†åZúÞÒ÷È´ê{JþôðøÓÃó²•äZøÓÂõ½¥ô½¤ó²–ðœwïœwép;èp;ñ§‡ì†Yµ’ñ©`tRNS¿ŸŸ?ïß@ ßo_O_¯_0ß Ï¿ŸOß`¿¿0ïïìŸo@ÏŸŸo@ïïßÕÏ¿¯¯Ÿ€```P0ß×ÏÏ¿¯¯¯poo?ï¿¿ŸoPPPO@00/­sí¢ÃIDATXÃÍ—÷SQ€÷JÊÝ‘c$ (‚]@@ÀÞ{w¯¤Ò{û×Ý}w’àŒü 3÷ ð6yßìÞ¾$à1ðüî1Ó=Yœ€ 1Ð3jú\ ˜^ï1³•-nß‚f×ⶺå®àpyq^{y^ƒP4Ë_˦ Rq×Ñ^8TÔº¤:ÒA G2¬Ï¬÷ËÚ1]Šp¨¨öåŠü¨Yé•+–ez ÀáÁr!ò;À-Â*S¡ßÿwb¥eøs,—òŠL¸¯eOî$xDå†å@Ÿ,Ë)ÚHÈÄQwGñ²RœƒïŠ,§ÝõÃ_8Âr!ø'WÜ1õåVËm}íB9ȼv¤xeýÈÏJAÔÛ‰ v 9lQÐâËR§œ”Lò^gxúÎ,ÇOØäǦÕJe«lNÇ…å<&ÄyÈkØWD¤8Æš^VzŸÜdK}2FG2mrÚ%ÇnÔï Ÿ[ŽÎ8ÀÛ h"dG—ÜÆW«MjîU¿pa>½›¤Ø¥§“£ J؇(SãšrÖ>¹Øl«”=;¬Ú†+‡BN2…н:Í-‡ûsõGLžÑfÐè¿*€inït¸ízá«èÀ”Œy袅åØ6¬“0Y úYB.ªëúž\uí©]•@r Èc½½§Û-㪋&Ê%WŽ Õ-£Briá!CDtºÛÍJð¦/7Ÿ3²'$ ÇNˆÓUW®Ÿäâ6·4g’¶¡quë—aë˜ ó$°_pM>´Ý%‰21ÐIŽ*%W®ÏW¨µ”µñ|:åT¬ÙïTÇ20-æ6‰7\¹¸ººŒ‹Àd³PXs+\5 ‡8Æ¢SxšŸ¹Žâm·½½êƒäæ•eLqñXò´ÁE 3˜sÂryºNÂM9n—”5´q'#*Wõå04âH¾\­¦ùr ˆ³N7 pR\›­}ñ4‰ñ˜Š.†‘ÿ*|²Ž>ѽ¬tç@Ìa•ÚÉœ01ЖšrÕ*0Zí&Ô²ÀHÔá9äLÞ6 ØÞV¶\g¹^`ºÓ:µ– ¢žÆ„œ¸Hš%J—@Ø&:årx˜Z.Y§#í&y[ÈeQ®xC…7\¤VÞÆFÆ`©Í틹ýeÇúIŸ‡A%nk„eR¢:%–S ůdv.yYa½Sn §„£œ®Cæ¬:K:~]ÈÓ!4·§q؇XŸ¹Yå÷ÖO[»ß—Ë»–EZÄ*•®Øö^a/J¬éÊñýë_q1/kÿ%Ç ’6}˾0dŸqìe8RÏ© ’£ÛD3ÖŒûSY®…çîç²8 ôøI ¸<pÜôX¥ÇÍôy=&ç#©®nê­¢¤©é„êŠ"n6^£z,åeñKZ OQ@Hç굪3² QX¨žI²â¹Y!ÒLµöĉj­õ‹”wá"¸L¾ÏËúîÇÇá‘ e$hE×2§$úRí‡ü} ÛÂ^é6ø3‰Ç{½£žQå“ïvÃUOikµùa.@xvë^W@p¿~ àwjÁ’7£=½D–Ì»¯ƒiFôiH;)6 ð=/À$žt›IEND®B`‚instagram-feed/admin/builder/assets/img/featuredpost.png000064400000004602151435171370017452 0ustar00‰PNG  IHDRÏP qPLTEþôïÿÿÿC¦ÛýóîØÚ݆Ðùóp6üòíûñìùïêõëæ÷íèõõöâãæõóòýöñóéår¼äôêæöôóíäßá×ÓìãßûôðøõóâÙÔ¤ÜúáØÔáóþóíêÐéöïåáòèäîäàñòóøôòâÙÕýôïæçêäÛÖûûû~Ëõ÷¢|þ÷óýìäðçâL«ßûÓÀø«ˆõM÷õôö”hìíîôïëüãØûÊ´ú©ù²’g½ìP­ßúöõwÇóèêí\¶æö‘dõŠZôxA¢Ù÷ôðí¡Íå‰ÃãüÛÍúêù¸›ýøö±ÝöƒÌôïððýíæÞßâæÝÙýäØ÷›séöþÜí÷Õèò•Ëèrºàh·àýäÙüÛÌøøù•ÔøÏáê¸×è}E. IDATxÚìÉA €0 DÑ@ÁÄ€®wâFÜzÿÃH§6pWþ£$3Œ)æÛŸÃ÷-lërN_öG±R_ɬÕF-ÙÛ)¿5Ô•{Ë—e uEí¯˜ÅË|Ùö´ qüÌ•œÓ•ñ¦{±M((k+ÚŠ ¨ØªvÓ 4°‡ïÿ1ö•à¸ÕA(ͯib—ö§ó]ìaàÐýþT“HX„p"´™#bô@„ûÚɘI„£M2C™%û™éÏŒ@Ë|–Í £Í%éššèR”ô“«Ñ“$8£`Qáq»Óë´;ív»ÓIŽ”Nr¤o€A¦Þ4Í^Òê¥#²qæFî¡·‡SöYƒùb Ñj–¯uDUƒS—BâðTU"«ã0êñi¼W• G“à†äKÄ%ù\½Y•;Û\|‹3ëz)>/Ö–ðƒŒ{†yñ±èð¥ZB)>SšÊpn=mˆ$¬F|ލ,úÜ,qŒCëÍÅøÄÍf\ºÏ/–¹ÝÂÏ &æpÁ§ÙªV\²Ï¤eOa`™1/³Žˆ®;>ãZÊx•>' –®^¤Ýú¶U»§¹2èrw&~ÅZDÜùva}Z+óÙS)ܳ‘ÖðqÂcù]¦Ï í—*åÄV<ÆÑNþŒó>[eú}&gm}pî.||€øLWäþR÷qŸ{Ô“?í*Ägí' ò‡· [ Ÿô!Aþäç[œ÷‰KõÁ„›–Ñe¾C€Ù§¾…áÛ|}kYq™õ »rÃÃÀçyJºá¶êšäñª×ˆÏ|,q¡¸l,á²’à2ï“h¯ø°°7¶•CsÚjM›å­G-ÇzX‡Y|òÇÔƒÍjìR¡É{m µ¿üŸ€ŸÐ¾¢Ù€(¬Ã‡}|ÖoòY»ù£á<-ÓCØPü>‰‹®V|v?¬ŸÁˆúƒÁà®OàT)ã¼Ö×ZoT'vß­ƒ³k(%l_ŸýPðÙÔ!òÙÿh©P=€NÆ'ð×W‰O#ñÌÁz§*ó :.™O=ô~þhÖÎú­ù Ä>^:ÖG “&òñÙ©=[OóùϬÙë4 Aø¤Õjf9‚K* nRAã(J“2ïÿ(ä {°"ö.yš½Ý™µ{¿ÄÓ`š¿ë¢ žµ_âÙÖ0˜dGÿÖ5Á3øEž·û€}þi€gã#<]Òþ €hâþ,wc¥~P`d—γtŸÒ§˜¶?ø¡ÏëÝÎí_yúi@Û¿!òýÛÆ}´û Þ$ðˆòœûļÐ@þ|JŸ*ÖÛþG"¹Þ–½OÖÛI1/$ç¹ût½’>û?cf^x¹O/ñ˜‰!0sž>ÍäÑå9ß²h~$Ÿ3yÖÏW3AžµËÔgéOGà€£íGSõž1Α\dêÓK<ó‹D}VîÒýÔýuÔLžAã!«„ÈìkQš4€Nþ`^^¸½»Ö P$]"Ó_oTÚü"‘gpµ´ùcdâþz­êC˜ô}•Hô×;•'Äz3‰ú¸ÆÓibÌܬ4žíÉŠïù?yûãþ÷Ù=Lž÷ïù?‡­ûûÓö9økßgµkžç³}+Xq†‚)>ÈR`1Nlj¢>ù’/ÙÿÿšÎyÄÛƒÛ^zÐDÒÍ›÷,-´$éöäçŸÆÐ^Óçÿ݉ß?BhC?¾^·Ûíc{ ·—1î_Ò)H¼ATuR¬ævnA¾×¡… £:2Jº‘üüøÌü¾êrîP¯ëøõµ,ÓðÀ†Ç‚8XÄÊô˜–R¦© KÈNæ(Ë„«˜à)>vÚBYL”i(&¡l™&‹e(ˆHC5”Â0k¹ KAaY¾æ›¶9õýµ.”rÎë}×qÌwÃ|¿ç<ÞÇqävÌÔ3,æÀ.[*CšaËðbÎó<Î)¼l ïŠ.×qGöÑ VôC¤`@`~_áÉóºòo7»Ï¹ÿþ×¶¸Ð5¥®K]Bxv}ßõðL}ß?û.=m‡1ÊÍRÉÐÓ†TX]ê@](Pe½í)lÊÞOÛ«ÃäsÑ¢Ç0#ŽcÍåÜÛ›1¶1Æ”PË…«EEQÈR¾ë¤ž=®‘Fï »C¢â:ú·ÓSŸxíãÕÆU+ÀU*ˆDJÜ`”åÎÇ΢¨Åüyn'W_ÚZ°KËSžBC´Áê0h÷áÉÀßE£º;Bt¹|=4÷Æ¡m¹õÇ*XBïuN¼À±° [ ¡ ˆñN¼Æ¦[X0m+'£dFLúöš@…Í)61°Á¦{£`Пó³×E¼l§3&ή"R-JApøVAe¼^¢†/¥1žJou΢áÜ ·bbçj¬UTùß&TƒüE>ÈšÚ»)xR{—°%pij »±x8´·÷T€×¯(XZ™äÑBÐ""¦:¤óFyžË†pþF¬EH‰DOÍ`eT÷{|ßn{GP7}©öÇðs‹^´Sg­ÒÄD]õ™ýš˜óP!û ìp)‘·#Š%íOÊÀ—÷ƒÅ¯ð~ríTýoØê÷§Jc4IÁÏIJUyÿ9ï[–;åÞ†îÕZQQQQQQQQQQQQ±ãhÞ6MÈ.†IEND®B`‚instagram-feed/admin/builder/assets/img/singlealbum.png000064400000002255151435171370017251 0ustar00‰PNG  IHDRÏP qGPLTEþôïù» ö–kÿÿÿC¦Û†ÐùüÞÑö›qø·™ýóî¸×èÉš‡‡­Åûѽüòí÷íéøºŸõëçúðë…ÏøûñìùïêðçâÚ¥ƒÌôéàÛ```ÑçôÅìòéäìãÞö¸žóéå처‚ÉññèãíåáK«ßçÞÚåÜ×±È×áÙÔò¶›ï´šô·ýýüýúùðïïd»ê{ÀærºàßßßxºßßÖÒø®ŒíèæÜÓÏ鮕ð’hég÷ûýù÷õÈßí³ØíôïìýîæùëåñÒÃæ©ŽàŠd@@@öóóõñðÑáꂽÞõà×ô×Ë©½Ê¯¯¯ùÁ¨ë¹¤ê¶ŸŸŸŸø¹œö´–÷ª‰÷¨…÷¡{oooßðùÝìõâíóçêíŽË쇿ß[°Þ­ÃÒÜÔМ»ÎÙËÇ¿¿¿Õ¡‹Ïˆñ˜o???O_ï!IDATxÚíØYwš@ÀqÊ$Q“•J¸D+QÜjMm³/;/mÓ}_¾ÿs‡Ã©£ñéBïÿøâãïÌÜ{Ã0 Ã0 Ã0 Ã0 Ã0 Ã0´vzo´N×8ˆMܵ bèAÏ¡=CvüÄ®ÎÁjtÏý1»IVèAÏ¡=èzÐsGèÞÊs …ƒäyÃó¡pp<¯yÞÅóŠçP0$}Ztã˜Ç-gÏIß ]Œs0bWP´Ôv¦§~]™îž ¼e‚˜Çteµ×‰ÝŸínÏ’‘ñÝùðüïö¦³ ~ô4ÙÚ©7+ާ¦êPȃçù‹Mâd{êé­éÎ)r¢=/oxÈI¥ÒìxÈc©7|ÃsQÙùç©rþô2O3½µ½MœváÜ·µ§v›SƒzÈúùkê;ó\§I³râü]P3PöÓ䨀³’³Ò7ξÞ‹Íjóïúqê¦æùÀÝÃ@I­ñi±—S5UÊ:ðæ¡´ÒëY0I5>njÌOöpŠFÎû‚GÖ˜_Yì~ù)ªàއûðÙÕÃ@ËŒó¾èp€y†,"$$Å0[Åün¥½…¯-Óȉ XËÍK‚,éyÕ,¶žÑZ­¢JgG†µÛ<‰È¢”Éj¡ T#¯K h³ã1ARFÏ)JNÏH¢ ì{ï(G$Äå„HKÈqÁ§›à6‰šÛ †a†a†a†a†a†ýOýyo½sZ*ÔIEND®B`‚instagram-feed/admin/builder/assets/img/more-feeds.png000064400000022074151435171370016776 0ustar00‰PNG  IHDRO›ÕËéMPLTEÿÿÿï­­ù» üáÕþôïýþÿúéñÐÑ×ûýÿ÷ûþýüýòùþõúþùüÿùêñî÷þøêð÷èòùéòùúûùèô÷éðêõþðæïúëïñçî»×ôõèðíäïëäîìöþéãîúéóºÙö»Õòçóþóçï»Ûøöæööçòäòýòæðûûûöéï»Óñôäóîçïûýþ½Ýù¾ÔðæãîæàíøøùÍÕñûëñôèïöëø¹Òïóôöáñýâáî¼Øö÷öøïäððéïôêîäâîäæðÛàïöèîôæñíõüéòü÷íùÐÕðÁÓîçèñû÷ûØäóÌÓïõõ÷¹ÖóçåïÞïýáìú¾Ôó½ÒîÛßöêæðÞàïÄÖïØáðÓÕìýêáôçõðñôÌ×óÙìûÞèùÜâñ×ßï½ÖôàäðáÝëãîúìãðèáïåéóÈØîìæïàßíçðùìåöáçóÜåóÛâ÷õêöÓÝïýùýäÞìðçöäáôü÷õÉÖòíéðÔÖïÍÚîóñôñ÷üÀàùÝåøéêóÎÓìýîæáêöÅÕóÀÔñàâïèãöÜÞóÑÙóñãïרïÛçõØÝôÝÛìßåòãäèþòìרÝÕâóØÜëë""ÜîüßçõÚÙïÔÛëòé÷ãëöáÝï»ÐëîíñßßõÕÛóäßïëïõüäÙÁÕôÙØëòíòêêðóäïêáíÜÜáÉÓïüæÜí²´üòïÐÜïÄÓëÔèù÷è÷ÝÛðÝÛéüÚËòÄÃúìæñý÷ðïèèìùïúÉÖêÒàñ‘ðîâìøÙØñ¹ºîóøÓÔÙûÔÄØàöúȲúóùù¿¦þûúúââùóñÍ×éÉËàû͸æìõä·½ûéêñéôàßäôÌËïÎÔöÑÒݼÅûÐ¾ÏÆ×ÇÝòÁÏèô×çíÛÝãØÞØÁÎôÁ´ñŠˆáÐÖê¼ÄîÂçíwtáÚè®ár£Õ×äÎXÄÓNªñ__ïAA›Ïøy½öÞ…ÍÙoÅT¬ó; òÈC½¾AÀ롾Þ]‰È÷Ê2©ªÕùöëïé°äÞIŒ ÷IDATxÚ¼ÚIˆÓPðg5œó¤V¢4wÏ(ht>;$Y¨ÑÙÎI cc:ÿèü©¡žç–à´ìÀ S{ Џž”KLTc¦wÿyDëj)Ã|¦Ñb±ÖµIò¨fg•¹(*"P™éµ¨é#«r‰yV,3úBéÜÔÝw™ªªÒ4éˆ^ĺljŸÐÉî”J|¡úÜÜœþ·:­þ…tÊ™×iתL³ñ¬ôKdHؘê ªJYJ%ÊLYbõ“¨Æ8Ó{¦Ûy¬{w_s®7ÁÒk«£ëTëô«m4\˳gñl´1(Ô§¾Õ¿&8±î¢^âLÍÁ˜Rp P*¢2ÓD#zR¥tìžQQ¬{‡x1L¸9b$¨Ó)1§Ò“azöl)—«Õ+nžg§#YŸñ/”mÛ†æ)õ‰âà.ÿ0ÓèÁ±z">Kϳˆ³‘cJÎÞ„LÏHV§Sž)û@@Û™šB²«¥ <±îV‚J×M^¥QFa¤”éÓÃ'ýžwáIÆê)¨ÏU%‡O§œÐ„¿jwªSL´Bn:Hš›S<çkîY©ôi²óƤÀ¡åá¤Tc_ìˆÓpv£§]¾Üç9Yën'nÚÁÌ‘¤An¯2Q€²N«rö¬eY0űRa ðì¤Qu[‡©@å!TFÌipL{§¥ú¸=P.gœAOYg½g/Ù€Ê:ÝÂL…' †x@‡&8E}&¡t«¯ Q¢ P ¾Rð)Õ‚§¨º¬Ï±{.wã?»;^éáèD&ñÕ©0e¤–K K×Óêk$qäÕ©Qbñ­¼ÂCY°ù®©Ñ»%E¯§Kéó,2OoG<“Ái¦\û.8ç~%Õ75l[ cE„º¨%yÖ¯³úÌ2ž$&8]ODzúês.â9GÒ…jö~A:;+šSzvHÊ(*Îú*Då|â/Y¼6Ô).îëœsüž‹…§<»û®>çà)£¢N[­¯Q¶öÎþõ“ûHêPÍ´M~Ã$D¹§ø,˜…ééúi6Ç©³u4¥äÄç쪢>kŽFâûsÉܘné7)眶î …çÞÎðM5]7ä˜JUy%…Œq>9£ ƒÄ‘{Þ«£½°'%™£h0uA-Ëz\¹·ð É`jš¶Æ=©ŠçLòŸÏ¥|6ÑíYäë[ m’O¨Ùg%Ê×ýFÁË­'YV_ÑLuêM)q˜Çâ Ðå#=kŽNHÜ€QI^ û¹'îú· \¸^ϰúÔ€)‚îú“LšðèÖˆåÒ¥x‚oh˜êSšET'rà=‘Ñú³ÜÓš}ZˆušmõuÓ %wÉ©´Ìâ¹5â¹”'´(Rën!èò¾—‰“¼¿|†,ùüå'a±û³ ´2ÛÆôêôpSÝ4Eâ‘‹'õ‰ÁžðoÖh¶)É”—/¿Çóò—3øÃþVÃâž¨ÏØ\ÈX§â&J”ivO$h)£ÉoŽÌh'íÂûó» ™ÕS„ (]×Â|2N§0:72Ö)V_ˆæêZ 'Þ«SÞ Î/1›ýãœm]-ü=÷²Ö©®|=q"ŠóôgRÖgþÙö…{þ&H§Ú€‚³õ¤(·þ¹No¾z!ÇÔh¾óá„§MÆ”Ÿ9§8Éï§ð¼PHœ ÿrczÿÇ«O_ß¾*“*Ù=Ÿf´ÍÐxÖƒŒ+>|þüa³XÁfuày%¡¥¼’JX§oîãpéÕ·K↔Ò<‘˜E8fx<§®PòbÂSŒçã0X^uú’|÷îÅÛW¯¢«yyâ*t(ç²eK#šEŒçvò?r´éÖ罞âÆt•«Ïï¿!—~Q¢v‰*9Ïg˜ h"kk]Ç«OõDû¨JÆ”õ3ðdœ­[…´¹wìà¢øÕ_pþþkBÞ‘¯lß©O’)r4gx< N–'kOÇ#<Êï×Ûú8ö_m6[ôi!uÎ-DNŒ9C=¿J^¿yó‘¼%ˆ¦åã)náå'9œ"+¥& Æs½÷cL rbNÏÛÓnÎ`@E}¦Žü_^‡‡˜^~ŸÌO’½úT²{†ä\¹r¥äžÝ£ÄÿÞ{ò]ýýÜœ3ÏRs^`”ÒôtxõŸ½|ùýÑü»r>õIVoݺz5ãIá‰HM¾î&Ę«¿+¯Õ§»›àDfš…Ôy²0ÔiðÜ÷øõ›yq5¯föçÖXOÁñì:W¼1¤í@Œ˜æ²úÚî™g¶úŒ¦>´NÍÌWŸ˜Op®¦)=QŸË‚ëîì ¾ Òö-½¬S#«ç.xÎ0Ι‡©9oE,ãëTÇxf÷„&QMÙ ¢<ñðƳCBQ>èEÇ4cîäžøh^Híycሠ֩“§åôæs-÷:zÆq¬~.u*ë“'K}^_ø—œôêT5óðDœ1×òÒ³[sâo6õ᫟ªNÍ݇g®õ¿úÆfî0Žø ‚:·ç"¢Â›nÔ ¡--ß.†”Œ@ƒÅ EËEBJŒÁ†Ð4h³Ñz!ÈhÌ–Ì5o´bÝtQF ÔUÐÿ}Ÿ—sžíÊCšÈx÷#q­nõ§[–~«vúÅE;-ž3<ž–ì™Öuüà’ ÏV‘ÌyÆ)Ú§¶Ïv>ز:LCÙ,{6ÙÏ–Žòm¿k^Úi’Õg6û˽§Î5½G¥'§œbÊ&ׄ'†£”6;ן^²˜òÁ´c;M%9gÖ˰i?×t©n?˜b*²'ò·.ˆ>Ù²þävZÝhÕN#íÚ©6œLf)gòß´Ï:ÊSI}"Д8…§Ðì¦Ë]w±£:Lõr2K“<ÐÓ’H GU}"ÖKJ<Ø…„&ã„§üo··kí4bzþ›ö¹Дy"”ÓªÉ"8Yy–Zoö¦#ÐsÓ×ù¦ËÉ$ó¬/úñ]ñ°)gIÇjWå‰Èœ½€k\ëÈqxNŠ¿ms;w1˜jIê‰×Ã$›ï¿ìii´O¥žB“qö´YžCŸk=>K\lçL7Zídæ—M ÏiÂÉL¿~<°ö¹¦k*ëÕÉ4¹çùñóœ“/÷Ž?‚úsÝNŸ›ÃfÑXîëM7úmßô»“ö‰Ó§ROëZG8ç™3Ýf††Ð>[ÆÆvþÔ×i'_¢õ™DêÒÝ«h§êÛ'8UzZ‹Óà$iôüŒkuö"×_É×q'‹˜§%Ã3nåäKÿÛÙ>}§ð„&ã4 t¨{èÔ韽ÈÛù`›ræôšÙ>áI²ŠöÙ:ÏÐNյπ"ÏŽœgHÌö‰ú,鎾¯˜Žžw G9oˆöY\¥œÅ‹VGk;U5ljü&/žÒÆ.4y޳úDNÕjµT¿îslçŽîùέ2ÏÕ­Ãríý·ïÞ‡MxjÔÓ§ÈÓÔÕ)8qP28‰g-áï*Mj>GqrqQßÞ^(žåö˜¢z6©'‹ÊúkäœÇƒA=MDý‰Dâôz€©Od%‡EÐ>mæ™´ôž–Ä sž<- ÏÆ]p"´6Sã¢È4.©ÏÄ6÷Ìý9ì L?ºjŸKቨو& t¬”j Næ9ƒÔfâq?ÅÕþµœÚ¬é)µOí”yþvÔ>û¸',ÉCÁzGJB9…¦àûŒîéqSjž4…'8%M’#q¹ PJº;[ QÕ>óúLN×]‰¢®9¹V×××JR3g/4©¨¥8ÙÎŽ­+½ÖïŠN& Òb9FRØÙ‰©i§#(OxNM­â÷í”;Ók®ÕõõiŠ<Åb'÷äk]*N²³Çýô3^f)ÆbÅB¬PØ©ÀÔk;Õ¶QŸSSSͱ\ ]ØrQ£vKtOWWŸ†¦8ȃSªNª Î}!…®é')›šð,âQ(H*•’—v:™ÏÓ'gäáôúÖ•h€z*mâ„'ÖºT¼8±Ôï°OãˆL³Ã’à„&O. Ó³·í´”LbЍ£¹‘ªÃ¥¿´fkØÔUq Op"l±Ãóĉ¢8Yp䌈ûK!lDe< %­ONº](¬TV*Ô4äª>Ì¿¡žÖäˆktd݉é3%Zgå©D´©<Ç NêÙÌ9Nÿ`ó­Î©³‰ ·Ü6²O’p¸2[tØNõù7µˆÎãgn>>™XßSX¢{´<%PWªB“yšH3çL<5ù“ª‰X…‰Pæ‘0RÈ8LûÓ”“‰âXA9ž…ü¨w«õ-5%ºfiŸžN¡‚Ù—“žàý‰;­o/…é ©%$yšpššGì^盀'Å ƒÝÚ%õÉ8¹ìÉíRÝk‰Šö)âeo¬ÎÞ1hRNáÉ9qòÄÀ¾°ÿíãÕáXmS$o$(Í‹­ë|£éeŠçèÍQƒtw~—Yš™{9wnÎÞÒ¶Ù¶}§žòbçÝóTg"Ðþ“#ª³ØÙ¹j¾46DÃ…j§“”ž“&€7*sóÑ…è.õd¢×Éóúý—4w3õ-'§IýØQEšð´.ö&'"&ÌZ§ÎŽßB„@Šä’¦á¨‹‹‹áÙL»“T$¤˜ËËQãç°'H™”‘šž…æjŠ¥ïòp¿@}Uå N¾Ö­‹šfyb\‡gÊg#h§Ã•0IZhrQB /"¯ÐN÷6ƒËË”s9ÓøFMDù²‡'ypýÉËLiÏE‰.)õìm½³ N6¶wSnŸmÚé,7mJ0Dy^´LµWAPRÏIËõv$ºûxÁ¢ Wh°¼Î,ì9,Ñ:¶££G÷uªÚ+8ÏN†‰táÆÇiþ3e{ÈóÞR›hÝ÷dOOÒ”m"ó(Ó›Íý±RÏæ"Ùñ¼œ ôZ5q"xÒ¹w9£k"yë³G˜by’h™aœVåÙ‘ïàJ´ïC‘&‰N´´MÀr»Žš¨ÿrÄâü¹³ô* OÍçVò4sB“rÊóhæ×D&šãåa¤äJ¦Æ_ÞÃësÏž²f§ëÞ|;U©ðèÄÄÄvŠP­­o.ÑGJ¯¾jóæ,zÞ¬—'yš«S”çÞï³sMäÁÝÃ- *^ ÊRVV¯ðFÕsSÌQxJQ*S˜šJôØòÌ(Û*%O3çí·³éùuö®‰,¯|ùá!!*9É’òÒž²¨Gñªo}謄 t<-Ø^P Lgff°B¤”è³<ä™%Ñ›m9¡ ν§³zM$Æiüù!D ’^õìoTï5ŒÓ>ìéÅ¥-ÀwµÈÌ ¾YëËG$ï <ái ŠoOÉIž·ÊÙIK;÷<šýk"Yëñèµ)3taÄå•h'R¬òðd¤-º¦ºúBEÊyë?Bã“9hI‰5‹nPðDÒT'Ê“sÒøT¸&RÙ;)x‘'\‡Îå9º¸àò‘˜ok!Ñ¢"xRÀ)Cœ*=ÍœŠž¤)«ášXÛ©<Ç¿W¾&Rý`º»l?Sxžä”ÒtÚí8…)¤ÕnÚt`~¸&"<‘4žOYÌSr"w°Àós…k"•rö‡[ä£äýz†òL9îrœæ— S€ñe ÈÕÄiëI˜Jž×âûÖ4œOmÙ;nŸÙ§þã×?/‹bK‡tÏ&Î Çi}¢ 5ÊB/9M H&žTžðLâDDunAyžR¾&Òá8ýGC~øõzV7tHx~c¶”­ïvœ2Ój5{ʸ]8g…Îùx*'öJ[°YÂøT¦öý¹xQûù·ËgýKc©ž‡ÂŸv9N7xʉíè& Pi©ö±eÆÉ@ÁÉ<×=eurOH•ƒéùÅ•¿q¹áÇÜ3ÿþà¡ý‡ØwR»§mý§Ýµ>L©%NÚ4髼ÛšÂIžÄIš[ž@»_Èà·ôãr#«Ûv/žÖÎ^þøO Ù ¢|Kf¶¦‹ _¸mýT¨î)K4sÏ­´INDV'ã|b|üh†÷Çá^³tž ÿ\üí–ÿ~ÒÖ`8æñ™¥q:=»Ú4t3M»$9ÅèDˆ‘œÝÆ8Ÿ.;>í5‘äyT[8ý™vù¬†t€“<‡óT‚ƒ©³qzþ7.ýž§›zf$­Ièx$­'~œxò˜ªÙvǶ-Üóì–\çSëk"¯8ÿãù£gøWCÝÓ7(—@*< TŽP+O|;ô4Opn'•gFãÓöšÈ镟/~ÆwóÁ`çì¢ñ©njs0=Î,/1Ñß5¤¼:Åßïê9'ÅÌIå™ÉøüÐöšH™f}|Oª(:?˜ž‡ä³—tÏzx&ZzBSÕJœˆà¤úÌÁHï›Æi~T/Ï Æ§û¤Î÷;$¿ŸfªçÙ/Q-7¡K¼Ú§Vq"&N^ŸƒYjwëÖ÷ Ý»9ÒÕ¥4>¦ðùžíÎfà¹V…¦ñdš<Éižð|÷B/@’¦‰PWW׿y.I‹ç|#yº(o÷™êjhš<-@,H«—÷‡ºþú]ÐDV•ç+±ÜÞ‡§ !prO¥ñ©v0Íûñµ»†ƒ'{ÔdÑñê ’ô'<Ê5åjÎws0>Íãôéˆ^žg”ÈÔwR#Ó|¼0ÏMäi-q šÌ¹k¯Oâ„çîÝðÌh·ä'ýþZÞîJ»%¾“\t㹫­ ºˆ7¼Ò&Tc#ÔÞ“8E}JNæy»¼×,‡ãsºœ(OHm|Ò?´ Ÿ!O šì¹Qxª-H’©ÔwɯP¸&ÒýýqËhw¿Oe|kšKÐÓmøP@§Å±sƒ)vžºge%ãìî–ÝÏcŠ×DÊ|¥4>ky|>µñét™<Ót¼¬Oå *Ês‡,ÏnD–ç¸ù"ŒÓ¬ï–Æ|ÂSi|ÎjnAçái*P‡Ïí,ÃËsž,ĉpN$UåšH÷‡Í€î©tØ|Zs ºÒOjµgÚ(¢ê¹cÇŽ]; NéÙ‹Ç+®‰t?>~yžTYT4Í%èi|Œ‘<¨sOÍÆsžŸIÝNž#ª×D"ê÷ÇÍDyö«¨œÒÜ‚~Ý2qC‹høµ tãfõú Nx´™<g,þ„Ò5‘î›?4›j}Š»%— Ã}ø(8y&ÐO= ‡ÎD”'ÒÜl”'ÕçGÊ×DºŸàô)6]‚®>>_m“×ëu;>a¹K§~‘õ;b¿Ä»ö”åÙÐPÅ<ëPŸæÝ’Ãqú¹Ò³ºe”'êÓ«8>•-åøl¹é&ò4-ñ)žÊ+>›|j‡ÍéXºJ·ô  {z;O3'@ëtO€"±W+rx?ì4­î4>×!ǃ§}ʆ7{âÇÆšà4<;:trr.öÑÖ•è2µ;êódÞzäôcÜ)=M öª± ÏÖJòìí%OɉŒŽF£Q&ÊMå Dç|¼Ý½ô¬.÷|“{JPóÉæóÊVûy´½¹·¹W”'"=Š0б±±9ŒÓ,ßäãÓÛäÅø\< Ï;S<Í OÅgLL³µµ²—'yÖ NéÉ!R$¾­"‹÷Ã~G«QaSá¹¼õÈÊc“ÎHi 1:óDÚÛ{y8'…4É“@e¦hýì”è ÷h¡÷Ĺu˜ X}®] Ž=-ú½•8 tŸáIÕ9Ê4ñ%<‘pD€ž93ûh$ %:Àfžƒb…ôŸø&ÇStž²áÓ-ñ™{§Ê8»«âѨÑí‘0"DaZU‘i‰¢<©ßï*d¢¾@àÌ·94~ôÍ7Qž¦eš–ªæIå)ëžÍص)ñèܤ^žR4H õ÷÷ÏmyÏu‰ÒøÄìÔSƒÌ4G­¿ÒCõi¿e’+Źg{Š'•gBÞB5™LæL!›«é Mx><…åÈcñÛÇ[;"A óäšôâᦧö%ôz¡‰þ>Ò>x©)þœkÂôF„LY©ögÜú‡Á)=mñ›uϧžTŸo½Å8¥çTG£ÝE<½Ñ0ïõ ?9”ê4RÕiS¢Ó>/ÓDqNñ«­Z§ÂÜ”0É“R,‚qzr8“v'P‡ h bˉÌ÷õµ‚‘œ¬>Gw8¹Ï³!„‰šPH´ò=‹Íý2<ùâSÓg\mµo©I U•þ uêºõÏ}€ù) Ôꡈù)=~œxâîfaœÅê>Zîð6ŽÖÆìü!jypú<ýÁqØ7oîçÐîäy÷ê7jþ¾%LL”2b¦úO|ãÂtP¯O'[PÓGÜyâ&|¤ÇXޏg‡Gáºæh¦P•©õyñå)%ÜØ¹V‰†¼¨O€Ö„óSß(ŒS]”r›ø‘¨cÊãôò$PÛ†—ž%Jž…'D~­Rû¿åz½‘ ‰±/<)¢N#Ý)%úq³nÍ7ª} ¦¼FIß^%ªÒÁô$yª7<<öû‹8{8'Bã3é²òrö?½ÿdðm›q:Ï[Ÿú Ó˾X ÔÐ(vR²D½5Ì[÷ù´oTÏmEI&½µêxœ^€§*^néÓý2’¹ßÓ)å‰íŽ~_5Î<ƒWм^n?N;"ØQ}Òƒ8Ϻ°,S& R¼àäZS#8QŸ Í.rwªS N€Ò+Á¦§ÈÓ´¥O÷«Šo³'báIš=r~㬜e4çÁ8 PŽzãëOæ(4 ΰGá_ÊÆ)_òešYsœvHO»JžÖ¿y&ýüì¡ã³Îø{_MõÔÔâ™év¨H œÄJ)†çRÊÛðöÛõ–Â6Nå,e•iÎÜ•ÂTî–’< Ôù´ÄÁ#»ÿbZ=rä—QIEND®B`‚instagram-feed/admin/builder/assets/img/success-banner.jpg000064400000026324151435171370017661 0ustar00ÿØÿàJFIFÿÛ„ !!1&""&18/-/8D==DVQVpp– !!1&""&18/-/8D==DVQVpp–ÿœy!ÿÄ5ÿÚ óÚþ|0L±@H€€) P$ !(€XH…(I¬™$HA „¡ ‘3bKI+&@ˆˆ"¨€ vLröO¿Îêõïõy:üú¼6š´‰I" ŠÄUbK  DŸcô÷‹¡Ê/¶8Ycù·åux–¶XMªI!AX¬µ©–¢ÀB€D§ÑÛ,=CÖy—Ѭûý›ü¯Ê½üË[wžÖ&l‚ ¤KZ-i-b+Uˆ„*kÜ3×ͺmé>_g?Î<žßOçêÝç¾EïæÞÛüÖºLÔ‘UkYiIiE­%­e¬DIÚ>Öí=§o¿àðýž[är{\ŒÏéÝMï·Uì“6HAZÒZÒ\é.t–”ZÖXˆB¡A çëìÕݵåö~WÙÏLæñ{ôÀêMþjkS(¡qKŸˆû¹¿>·:K–rçI•+-j¨€‚¤Jw?¥»G Ï+µÕ½ÛNþÃå¿5õÝÿê\x_v§2¸œ*ú8Çiœ(u?—ïìúçmŸç”úŽË9sÊ\©2Î’Ò« `Ad’>·lÛ§NRð?Hò{_ òïÊý¯²ûö¬þV^ßêkÆ2æœý±¡Ðx¾“Ó~.¿˜âñ=^>Àõx¼¢ùL²\éŽYÕkÀ‚É&K}l±ûºìÕÀý1Æïó?&ü÷Ô{·±E~m¿´ÕØÐùøk÷ýŸ³ÁÀ꾞·ÚìWŸøç?¯üǦYg.t™V°-K$›%¯Wº[õ'·Ýœ¨." (¯“/Ëùš»\Ÿ­îæþL¯×þe–&Yc–T–•XKRÌ¢é{Y¦•?§¹=®ë^Òe–zf2Ç*g¥B'Ln–ÇlÛïÃ×»ê|í>ߩֽ?̳ü÷“¦XÒeeˆ–¥™I½—ºi¥OéžWgºÇé)žZ•Ë鞘eÅ®º÷ÉaÛæêßôù:wéÑ=>_ÎsöŸŸçeŽ7æYÒeX–²©K^ËèšiSúW—ØîUáý 2Æ•Ë W-Xá¯w?[6¾¢ÑlÖßÏèåòüÍ<÷Ûáðçß~uLS,fXeŽTÎeXŠK)”µìÓDÓJŸÑüηrq~… rÕÇλG‡­Òý' ßOG‘2ÆVS§hõ[—Êëíç~þW•Ï蟗Ó+1džS<óÆÒ“2™²÷M4³]EszÝÊÜ^üU+7±ÏÇ~¿èþ/¼û¹÷›‚­SË1öp9~_ ätg¦[î¿$Ζc†7 ¦Yg2¥e¤Ì¦XßK4ÒµÕ'ôG7­Ü§‹Þˆ±ÈÇ.SO«Ç|Ëæ>³ôrú/™”¨ˆŠݳªeíõWæ{9[»ùý)qÇ –ã–YÌ©Ys™fÅô¸é­šëSú™Öî.7vEùš÷òž_‰ô/’úÎ/ë/¨ù“-H+R<§_Ⱦ®Ýz?[ç¾dýæ4¥Ç,%ããŽyg2βç2Í’úY®¶k­“ú™×î/us~^Ÿ^ß;ÏêðÎòßWÚÿJ}WÈ£Ej<ëO¯…¿‡µ*í|çÇ·ÛþgJe2ÃÇÇòÊeeÎÒ¬_[ŽšÙ®Ö?DòúýÂ8½ëi2äm«Õ¯\òúüoË8]Ï×ÿSè~uÀˆHé:wÓJþ#Ýùï•?kùõi”Ëà žYc•(¹ÛµšhšéfÚØýËìwâ÷í¾9í¦¯EºgÛäÙýAó±*±QÔµå<Ÿ§_ϽϟáÏ×ü])”Ë osÇ9s¬Ë9•d¾¶k¥šícôO/¯Üg‹ß¶ØmÖú÷º“Ùä~KÈì~Øß¿óÔ®R ZÜkÔ¢y^}›~yípªú”ŒìËÞ9ã–u—+J±¥î:éfÚÙ?¢9}nåÔO’îÑÕðëò:ç_èño_W>™c2Ç,r¦rÖ&T•JMì½Ëè?Yò;Âܧ‰€|C~Yå~ô¿!jõxÙæc†7,¦t¤µ‰k*”›%¯W¸ýqÈîw/ é€93P®WÛ›ã­N—#<Œr™eœÊ”–©jY”Y-j½åÕ¼ž×~p> ð_(ðÏ)úŸŒšt9yäeŒË:KJË©”’dµ’ÖX®G&¾?lí|žç/›çõs7Ãa(É}gb>ï(ü÷æ¿UñJ{¹Ùæeœ¹ÒZÕQ,I"ÒZÐÏ µ¦ùa£ÑV½­f|Þf½œÞn­ÜÎn½ÜÞv­¿CékÛõû½ÝƒêëÛù§}gÄ)ëñg™žrÒ²ÖKH”™&ÊŒ3F½”®½¦9ÌËL*"ÁV¸ÛL°åíëñ)³U(gIi T° ¡2’&e”ÈÃ8cšØå6XB®+e†—ݦ)–­R’Ö°…(L ³0™SŽDÊÓ-¤´’ ¨¸Êãfzâ™JÔ¥b¥€,JIH™”Î9M‰±i&RK E…Æ­•‚A`A@I’¥S-¦-5iIT ˆb+qŠ‘ €   &VlM‰”D",U"($ H¶Qi¥‰”‘"BÂ",ˆˆT(@”‘52,‰$D,‚   ‰$’dH¥ˆ $$ ID€…€$   PÀÿÄ( 0@PpÿÚÿªÄ(ˆŽ‘ü8ˆˆ…üˆˆˆˆˆˆˆˆý=¥ñ»vtæOosÚf"""#ŒDDDDD~¶ ccÒo¬ó˜ˆ€"#Àøà| >™¶cSVïÕi’I%Ä’J(ýã´×ÿ§yV’jÝê­2I$¸’QE u J£rs§=§5Ó5Û5k3Ôï9òçÏ—.AÁÁÍ4›cJšjÝš É$’I$Ÿ´)DAk˜i|_ÂÇSɳQÓÖtõõ=ȧ¹´÷>žæÒÜz:ößYZê[|›¸Y@d’I$“ôQì[Ç8páñü|>3Oãø¾!HRc)‰’I$’ÜúDDDDqãÇ#š‰±‡‘mê‹Ï˜_×=5/‡Â|n/#‰Zäòe4³ø9€ì#&|j бéj_ÜÏ<‹c2jEø£7ð¹çì¼N¯•e9†"(Þ‘gxÖËâ?6¿1óÖ#„Û™íp®Ù‰bw–C:Ä"Óæ9–¬nš°ÁÛ*/d@³öʘÈܯÍðgWóÀÆ÷ L­¥#,Ù¨ù¯aEYEá7a‡Ð¨s…§#ã9È}±o”8†3}Ú–òï†5]sL:Txl}á[bWö²“’½Ò#FOœ§0«¼&íín“'ÁÕÔó2Ÿ§Ñшe ‚9Ám`ñ­Ìzâž0%@JæT臭U¤ÓYÍ$ ½©&™ ¹†ãÙ[ìI-£9Çj “Òíó¿s´¶É)â3¤ºÄ°ûi>d·1FßC°1µ˜É½¤‚Â)Ù-Ôå­m¾(j¢±Ç¬"À­ ”Zr‘5¼zI1œÂ9©ßep©obtž ··‹XÉš:¸VøÎúFþæXâve…"È3i9KXnoÚñ\]2j,5²“¿èQV>V~+ü*ÇÃ4þ²ÿ ±xdNÚºFe 22æ3ðŒÔÖÍI¿Å=¬Ó­™ë¸Ÿ´‹úu³)Í}‰{H¿§[5×q/iôëfºî%í#þlß]Ľ¤Ó­›ë¸—´úu³kÍ{‰{Hÿ’¶s®â^Ò?䭜븗´ù+f×ÿˆûHÿ’¶o®â^Ò?䭛븗´úu³}wö‘ÿN¶tƒ¢ÿÎñŸÿ6Ïâ×Xl®ÆAWƒ£ Áïq-”=*4Ÿªž#–6Éу)è æ*纋hvyÇn Õ¨#Z>Yó£V×߃8ba‘ë4±ÄmA+úÎÆŒ·Å?JË|±(^Uùµ~¶Ÿ5g²8OÛûæ¡æhYbÊ —Œ‡ Έ¤f}0jèíƒ8c" »¢¬…×"d^Ùµ‡-Zï,9ç‘æÕlÝÉ’;IgÖd‰8‹4…õ(: CX¼AxêñÆúÖÝôƒ,FdB|ba‹„bXª½ÊZ´Q€£@’IÕ5FnžPj&Ÿ´o-/»xÚòVs Õ,«¨’@Bº|:€¬<1Û[]OœòÅ8H‰x´BfÏ@ç ÙÛk‰ ’y[Ar$HxÊ«ü_©ë.¤™o!äˉ`dߟ »€jëK{¸urs uÔ4œHø̇¹³“ ´²´¸xâùœëxΗ9)P£=±[!Ôóá…‘å{(1Ƭ˜3kBWVzI±ò¶qþ÷Ò”s”o÷ĸ’)s2’¬Fé4\_ÜʽJÌ>óØù!„}¿¾zÄl&±’ù(2Xòv',Ž@ÓÜâïas¬Gu?&Yl$c¥I$f@«øpùííå"X'š=Ký†ÓÌ|â­­ÚOžcRßI€\ÞØK‰Í¦hÊÎñ£•pé©€ù8gX»E=´•'ˆrò´q•ÏN…-’Œw ÀìE¥˜‰‘â’&/#é’1Ær-¿H5†á{6˜‘­Å»+‰³9C!,Nã˜óV nÂU¶šI9IÍ<òÍ+#䎧‘‰a§p¶oäù) F¥P¼ò¹ c0åñ››AʶYÛ´’¥t›‰´€QPä5t ¬ùCÚÒ $åõ:O,l;bUÈ*Ã,Ý«L*Ê +(Œvð‚K;Îd’Ä’I?âK8eK.Û[~öYí3É©œ5n,ºƒjáð·ÄƒXAygÛ¾Aä•I£*:€ìa×·®÷X}¬ÌUFrD¯øƒ[5/ÎÁ-£_¶J^|£,«ø5lœ€é·¸OFcùçX\XeÝÖwt&Š6G1WWÓ¿-Àw¤¶à#i÷Š´ ¥ zuZŸlGõ05‚"ÏIÜ)ŸaðRNe»g?nõ&×`3Y[Ü.—7ÝC¡oÁðÚì1âû5}#ÆÊ`¸XšT⮀ƒX¼¸…®!{³·Bd–ž¹äóƒÌëvíáS&Is§Ny» *ÇÑÌî®K ¹±‚áK$O¾ W$TVO£:»å’&ž6‰"Lî7¾˜Ö=jÏAÓ™Z66‰n]I ìJ®•ض•œ”gî8]ÔÒ\èš)_-oï r:taMηÄÚÓ¶.%™Q‡3v#>Àíé2èZ¹²°Ð'lM<6ð—¨iœ.¢G=Ocs%¼ÛutDÍú>'‚n`î©’ýf±Iï.,14&E·ÊÐòÑëh²tÍ€#N`ƒ¼0`ø¼ž±¸!5˜ïmÕ{©n³ïÞ¢ñê/ ò•oåGVþTp5måGV¾Tp5kå‡VžXp5iå‡VžXp5iå‡VžXp5iå‡V¾Tp5måGVþPp5”¨<¥$·²2ÆKJá“ÈrŠF %o($j>`MbF _ÃÆ=¶!$ò ‡›|]±óà ^^ ˆmø‚^V+&ÊÇ^yæêÎÄÓ–Y×%²ÛBÿà&_]tÑ w¿ÈÜüǾ~óÝ_ïÜ}@ Œˆ5€NI“²?b¢­,aX--¢†!Ì‘¨QÀW%²Ûgû8×בW¾>G`ÿoeð7ÖêÑtã/¥è4´4£dî“=òO ð|ûã-Â>ßß?qHSº¯>ö9 Ã:‹³‚îtJ¹€xfH”€AŽÉìä{oŸÑZÀ¬° dñï£||‘Â~ßß?qÿ‡" †ŒˆålË3¸ l®Î¿<:ÝÉé._Ú^aö88YfyÕó,¤äÐ*l' µµ¸¸3N5<Òx ’í—›3ÜXœŠOê% ÛèPé®RË ‹>{†n ß$°Ÿ·÷Íð³ì€’xýªGŸQjƒÿg8`9Á oCEOŒ\Mµ—ñÿº]pa¡¸<½Å Ç%Br<”uQùAKãŽ4'l1æåOáß$ð¯·÷Íð³ìy©ñÏàò¼ÚDOª;­8£ì%sv“ZÉcÎI<{ÌRø ø$°Ÿ·÷ÍÜ9[ö]y¬ÖJT>yšçŽzù/€t›?Ð;ˆLbAýÚv<õ¢Öåóæ‰Ï_¾>Há?or·—ÒûfP9PGò¡&DŠÑ³xôXÁþÜtc²î£¯=yë+ ßýEnï}Õ4»„:®âg÷ÏW>'ßW>'ßW'ßW'ßW'ßW'ßW'ß[A;NRÏ)#ò(ç5¶÷–K84çÖ¶êTp,­ýºUõ–‡Z͉a¶‰ª\óèjãÄjçÄjàó ãW/ˆ8Õψ8ÕÈèjëÄi­¶’XÜdDÀé¬ì®|ë•nﺀØ\çÖ}û÷¦±¸á ¯=yè¼,™ó‘[»ßue°¸¬û÷©l'Ž å‰<÷UïTN W½Q85^õDàÕ{ÕƒUïTN W½Q85^õDàÕ{ÕƒUïTN W½Q85^õDàÕ{ÕƒUïTN W½Q85^õDàÕ{ÕƒT—Våä‹A W±Ðí ÷¿¤Þ0ĺy-câ¤Ußì±Ø¥_Ácÿ²Ä¬Ò.¿‚šÆövÚ+»÷¶14 crN¢ æ twÈ ÿ™÷ïPÀ–@ œ…aÝixúÒð5‡u¥àkëKÀÖÖ—¬;­/XwZ^°î´¼ aÝixúÒð5‡u¥àkëKÀÖÖ—¨å@ñ°e<Ä|øœ¾Š~œ°|./÷Wª†·wÇÈL üÏ¿z†õQeÕ’œÆG*±é—Ö«™}j±é—Ö«™}j±é—Ö«™}j±é—Ö«™}j±é—Ö«™}j±é—Ö«™}j±é—Ö¤¶‰b=#àâ”À~.„ÜèóÕön.y²s~]Œ“gâék†á£¾mgØ»U2ÚË_¸‡EŽÈìù»àÌ |¼5ýÊ;ˆÿàƒÿÄ@ !013Q±Aqr 4@Rabs‘Ñ"#$2BSCpc‚ƒ¡²ÿÚ?ÿ½á.)Ñ¢8Öâ=A@Œ\mvÞ£æÓNͬøèSM͈óK ˜¯Jê¨pœö“ob{m{…)šœ&ù›^‰¨Wømj„ÖZ ~wJpDM T Øíó6ì Ñæ^çº &:IœÝM¶¦=±X×·6¸U±Å¼ AB±£Õæn6ÃqM%881„E-lB4'W2J‹5öYW½”wã9¬á™ªv!Î.-f~¢†!Ðgȯ Lú¾Gê¼15èBùªðÄס ä~«Ã3_Ç ä~«Ã3_Ç ä~«Ã3_Ç ä~«Ã3^„/‘ú© B$ÔGÈւQn³"Þп,DÃÈ| Y_Ö³.µ‰ŠHÀ}ñ÷GVEEyk 6¨Oé . Çdº2WFì´À—¡´qÊü¬a>V{‡XÃ’0á¹ÁÅ. …Œù4?x9戆 ?´d¥j‡s€W•{¸«ÝÅmÑ!8U9Ïý˜÷°ÜÇž Ñ6~q›#»ãŸ5˜½‚%®i"¹Pê¡W+5€Ïx9Ö0»>²‹È‘ 6UœkâÄÈNs™QRM*iS¢ZÇ8´ÀâÕ0ÏÒKHλu˜¶ážðr*…Xî Çp]ýÑ¿Ñ]ýÑ¿ÑV;‚µÜ(qf Ùk©êN7ÌAÿ ^+¸g¼Š º’tíˆ±Ž –‚FÂ¥ó˜ïÍ ^)¹g|rÐ4 ¢tÄ6¶«¤j”s]3.+ýÆ¡«Å7,ïŽZ€º`bº[Z D„Jªª™4‡ñW¬=×NËl!«Ä·,ïŽ^,'VnsÕ`ÿ¥Ý,HÑ«•mo`Dª TÞp¾(‚°N#+Þ<Õâ;¦wüJ§G±ÓÔ?x¾í  l`êAQb6wð+ ‚æâ2ä—r(i:ŒKtÎþ—Já¶z#âT†Ä$]Qñ ½¬}]ZQ²®Úð;A Q°Lv=¤ç°¡«Ä·LïŽZ^Q*7S˜¾¥C¼ÃayÌŠé î´Uˈ8²PÕâ[¦wÇ-9D4kÏT£ ¢Ž$£•‰ô|UVœó½ÑæÕâ[–wÇ-0mƒûa4ûH'>,qøBþžœŠÒ<¼OrÎøå¡È©¿&Ý+ Ž¨è¢¢FmYñE‹e&#a ^'¹g|rÐíƒòÑû…a[ÕD¦‡Šµ,´‰û! ^%¹g|rÐQ |Û)±a{ÔµQˆª±a ££žêN£Ý3¾9i¢ÅM²´âà)¨i¢h©V,1´é~jñ-Ó;ã—‰A„8½H6†Pñ! ½X¤[@þÔ4F&@‚Êúc’é¯j½«i„!RIRðC¨+Ú¯j½¨¼)2žÊèÔ³m ^-¸g¼Ž« ˜ÿiV& 5x¶ážðr(4µZ8«Ghâ­U£Š´qVŽ(´µJÌ}š/IeÙR‰˜Äßã°‚ G‡0Þ‘•¦Ìõ˜¶ážðr*„«Oià­<§‚´ðVž.ä­ïf-¸g¼Š!^Uå^Uå^UçH§Z4®K òHzÌT¾§f”¤.ÃÏY¡À‚*ŒÆß’-Dqcr%QÖA‰%ƒÝÖ9œÕb,©xgl0Œœ#ûHFE½N(É?©áHèÂŒÃl7"Ò6‚£Keàƒ´4k !¨­V«UªÕj A‰ˆk !QQQQQQQ€C]MTTTTTT@!þwÿÄ? !0± 13Qs‘4ABRSaqrÑ"#$2@‚bcp¡²ÁÿÚ?ÿV±†G†„Êx˜ÛdÚUM8`ÎÁ³Ê?mDÍËC€ ƒÌSÆW9½Gö™Ú©m¨eŠ–v1À{ö&?;o}ЧdÎý›Ï“EÆ9Iû®â¦só8î2‘{úH@¸±êUGñO¸~ÍÛ\Si©Ö2¢w¶W€E€-eù³)øds±Í6(e{Zâ9À?ú‰S;4>ßÙ°f‘€ù\ak¤{L-{ç|Ã1-°° PÑÿYYr7ðçõì&átíkZ%€ëáp>Nñô^£õ“w¢ð ¬›¼}€(ýdÝãè¼Gë&ïEà ?Y7xú/QúÉ»ÇÑxÖMÞ>‹Â⣉’Ä÷]”‡o.C®9Á_›%Æ•€Ç1/·F]ú…ü‹9±“¬/ü7}óåÚ‰R0±Ä+«…uq¥´în@Úœà†:]š û^Ëñ!Ú7xñµ6Y×1²84ó€MŠÀÒƒVTB¡niíý¥j5L.­ßÚ8„t7WLþÌñJë"dâÃn>ëZ ½×%M!žgÊ|ãÈÃìÚ‹ŸD ööŒ³Àµ–>‡ýÂ:Œ+¦ÀxF.Pj1Ð2(Íœbh¿Ë“ ^÷ÙœöYj™æ8ûˆ+šc‡LǵÀÞqíG@Üá]3þÄiˆ œ€†›– l‚Wµ‚Á¦ÜŠŸø”_j\)ÞÙXŽ€†ã éŸð#@ 0˜.ö·;ƒ!y>@Íwu’yFÓÿƒ‚ûVGƒí¼ ;¼'lïìÏŠhºb§§„u¼,S7ôoóäS;,—ö!*ûQ&j[þp࣠!¸Â:wögˆE15RxÌX™ü³½ã“¬ä$_hŸššþDt7ONþÌñšU!üÌX§‹•t\³"S]b³¬y׊Ÿâ(èn0®™ÿâ44 V3VB=«ñr‹–e™+¬ëuÛN>$t7WLþÌñ`ÍÍY~¦±Nè•uutçYk*ëê}Å ÆÓ?³S1°p[jª©dÚË{ÙjdêZ—õ©R=b s)î} ³ª‡^Èèn0?“²>èB8å'å$úÿÿEÑæíÂåì¤×ë¤ÕëwÐèúåçY¿ç,¸å”­å¸ä«äy›â_‰àÔœÒþÇÃø¸½ã›½{ ¼ç›¸÷¿·®D¯ðšªŸ&¥• ˜þš–õŠ”ë|“¬%“Ø_‘¹$‚åNp°oÄbÐ#a¿ZØ"UøLTÈNÿ}KêKGêTFã!FÿW<ÿL<ÿD<ú.4ò"éÿcòÿÿSÿ'Ñéíöæë³àëÖÙë¤Ùëí×é†Ìé†ÊéwËèwÇèhÂ课èJ¶æ<µæ;¾å,´å®åªäl’áÊßRß¹€ÚÅØþàÒÞªÐÁÏí¸Ë؜˰bÉÛ›ÈÐŽÈò¸Å‰)Åò¸ÄŸEÄÀpÁ­T¿Ž(½ü··÷¼¶þÈ´þͳޝÜ}¨þ¨¦è‹¦¶C¤à|¢Œ ¡­5Ÿø™»Cœú™šÞn˜þº•þ­•š ŽÒQŠ¢„ð†~úz~©zþ§xþšxÓ@xõlv¸vï}pó\jþ—iìYUë]Tì\Tð?RÐQê/Jÿb<þ]<ÿR<ÿi;æ3Ý0Þ.ç/*á*î'ú$ÿVÿLå,å"ä!ÿ6¸£rIDATxÚí×ÕQÅñƒ b`¢‚ØÝÝÝÝÝÝÝÝÝÝÝÝÝÝ]‹?v]Xvg|¸âù<Ý×ïœ;—DDDDDDDDDDDDDDD¬`0XÉ¢ ;䡼A$ƒÂ‡Á_^‡IQ$Ê]2âõzS¤NRx½ Ç߯µårèE‹®“¡rÁ¬DªT)4Ò#ÒGõ‚ÊÊê5z‡_9aI ЇÊBzNe=aÒ8U ÒrbA_¡°œñy‚þPÀ‘8P>g鑢Ǵ…$G@anãa‹ #&›3S Ê­düÆeƒºòÚ{*"¦ºSÒz¤­¡Q¤~ÛÈév,=‡¥GD{Dɦ¿Ø÷¤íÑžÅ{ ›{æ[¿²euFIO¾ëò"Õ{ô÷Íï/ ”õopXß·¬Yõ…ž46~ˆd!¨¬³õ=¨ “ïFPª(½§T–ÓÚ³&ã¤ÇÒr™{lßoY…%¨ÔÖÉÜÓ Âôh\Ã÷ßœB‚{½‘’jŽFµõ #‹VŽö„Ú'Ï_n"""""¢ÿA›JÕªU«R¥J±¹H'GŒ¬7ìæµ+ýÎÔ®½g=~§åÒE¥ä€ÂÖq±g÷5vnïÒeëÁaå3ÙËgÌ’%˲Å+²C]Å? EL1ì뱉r¸ A×6cÆŒYD«VP×ÝiÅaØÒo±Ú›(»ËÕ.»vÈ”)“T^å}FO…Ø}gx½:•ŠÝ…c;¬ûq¹Ò*”Ê =´Vå4˜ Oýgƒ¯ÖV@ß°(N‚Ò)W(ƒT*›Ü(>aB¨T÷^éém½o…ViAi3gЃVBe“&ç¦uƒØV¯;0¨·í¾y¤Ç%=ÔQ‚ÚBe¯&7fT…<.=§l÷ÍceÐj •MœôorbÀó°òyÒÅÊ´Fé_S¼x ä›9E*>jTXzêØ{ÊŃ:fX¥½þ¨é§ÑÞ¼í ®½§@”6´Zé×û¢kƒ&SŸvƒ>ö rñ æPÛÃfù`sv9ZA  ¸£³ÆÂdhý0Í)0ÏסB-¨êëˆ[³¦ß¾\³VþüùO\ðüÝ@Ûe+S¡Báññ©ý´ýriz³f?fÏžÙ´i“À.G _™2­K·À¿bó‘š5kÉB]«‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆè/ù ³ („ßö½IEND®B`‚instagram-feed/admin/builder/assets/img/process-featured-post.png000064400000002100151435171370021172 0ustar00‰PNG  IHDRKKŠØ¥PLTE  úúú%Zw(_}üüü-mÿÿÿ5}¦úúúÿÿÿÿÿÿC¦Ûµåÿæõý¸ÞòaµäZ±à½èÿôúýÚïûuÁëŸÙøõûÿ®áýŠÍñr¼äN«ÝJªÝîùÿÇëÿÐëù¡Óí‡Æéßôÿ©Øð•ÌëO¬ÝO«ÝëºÔ²tRNS A)w 1&+$o‚cïV20w÷2B/IDATXÃí˜éVÛ0…-y“kוãBLBBhZ(k—÷´Ž5J&šD÷?¸±­$Ü;¹ö $oz]‰Ømð ¨$ÁÃË0Ûó`±,®ôâYÒVR~y¡¯ÇIQ'gQ:áé%G¥gqú$°,G¦iv©üHÀ‘R±¬B¸Ê‹*–• Ç–DTžçE¡cYJ ‡eHÀRM,«”;c8*kªÈT?…E¶••“X8-t•©² žx¹¾÷³D‚(t•©*èë×Í0,œÅ"ʲB¾ƒÑ½7£fZ€•º°.uí¼YQFŸ"ºRaÖ`åɈ(b5!Ö_DýqYÌFTJUA_Èzôd$_±™…±QË9óÅšJ,ðÐâúêáÒÛ/{ÙqUà+Ba–®§\C–Uü_r¥§gdŸcX—so¿7›cŸåsyWÞy9˜¯VOœ´¾6[‡»ÊY›»sÐjîÄû=X=Îw¬Ä3{b­G’¥Q¼ôÀæ%OïoW#†h´\ð~Y_Ù>ksîêîã1]Ìù=Úöž:ñt~(¸=sáØ(ãnöĺ½;$}»€ ÀèÀ§À"D´ L‘A` $C™Ð  |>Ÿú|é9€ Ú`HGÓàÐç`耀L˜"DøÐ˜ @°ˆ$Dùi H’&|¡`0>"DæDˆ(D >ôøtáôX>@}$@úÂgÐáôøÀN`@˜$  ¡ðúH‡ÒD €€@}>@™ð˜"€ˆ9€"DæH O€t@H™ð§Ãè[á3éð¤ˆ$À€0 L€"3é @`Dë €L0>Ÿ €€$L €À€'2 ¤@`t€€0>  À˜ `ˆ`€D Dô韤€ €$€ €0 €˜ &ˆ"IÁ,t €"0é"DíʇÃé @L &€Ó@À € H@@Ñr"@ˆÀú@ÑŸÀ&€˜DÀ‘0$L Ÿ Ø&€‰"$L€d¡Ðˆ"@‰@ôø}9£0 $L "d€˜&ud‰ÚA7@ À‘@à€ŠÇ@r@XìÀ€8 >..€ä“ô DD @ã0 &H™#é"d€êLêu:Û©8±Ù€ À‘@D˜¸s°,ãÔ8"½ $D‚ ;ÐûÇÆI,vH"@äHÄf0$É&H˜&IV ¸yý0õÕ×ÊûÑ‹Žg.ÁÔoBdÃÑÇ—Êêlº×'Ì¥Ù4c¤ty¾š¯/µG§ÂóÕât“¸Ã^Ç• DŠxóœ¹ÞW;(Ó¶ZÃ-yiC>¼‘ÒhÓ>±Î¾Og.zkú¼”ý~.ìÊ œô¼á7èr Dä@€-F`$É’&H™"dÁÚùzT¾oßQó¾ß üÝØö|øz¼¶òk‡ºcSÃôüåýÓl{ó~>§\=^ö'ô>6l:êò[åúx¿ƒúz¿+êc>çÁÍýO~»_¾7ZóS¯›grÈåÌÏ/¨òoJ}¼^Žþ}]¯®z7ÊfÎ4½^ï-3±yÃÏôEòådý¾F¾¯ʪâý%oÐø}´ìZæÈK‘˜À ’gS©ÔêOIžt–=Œ>‡!~¾mÏÉý¿ó¿¤ùèÆ¹g}þüê?Gåzèé»>7è<ËéüŸ»Gyô7òû­ù=Ký^^O]/£ónúþ-Žíès¿…ú~YI^¬è?$Ë/]/_“>/ÎóOÜëç¦Æt´<š“ÖËÃëÅïÚµæu§mG¢ÿ—ª'LçÐùÖ½.»eʹöî>gÒ±íùí|Þëÿ?ê£öü´ãWBÝüuôÅVØSê²k•¢$DH"@-@&H Ô§RÁÔ°ìAàúÞ-¹FþN¹éËO6«æý_Íú̾oØÌý_™5ß;ßç_¢øü>¦žG(ôã¾§ÆÐø¾‚O†¾ÞoPü×é¸óiõËl}_ŒÿÓãuâúT>³;ô~w ðÌzþs¯?ÐÌ}ŽÕ’9ÝÅÍæz5¨äRÊÚuçßÅbj:ùnMrvÄè®§®žmvZlù¡âû-¼¼t›~M×ïãá¤4×5±£\=‰wðß×.]ãm®OÈ9 D"ˆrÓá:H N¤Î¥‡{{ÎÍL»åÿö_ö3Klyrš¹WV|OYò¾óÆL¼uçÿSÂË/U®gcÉôhz<©ô5Ï:ûsqó½œ0׬QÂ_w’Ö~ÅCä²óïõBooÉ»å×Ãeþ%.äÂêÐék 7ánZÃ?EZ†¹ú3Þ¯qï&¨5Wfÿ ¬G¦ç*|Åׇíæýÿxk•Z]Ë^ZÅŒiW«É}Íž‘®|ŽDÉÈ r De’L•&Lêu;Ž¥ŽmÕØcµvž{ä÷d2Ò‡·À«\¹\0:â“Vþ§¹ù?¡Aô||Ú罿%¿Íû9ÿ­ó=7ó¿sÊ~×È×x¾•Šóèþwª',6Aîó?Æûó¼£ÝCÕ㥾¯/3ûÿ–êK\a—Êôß“÷2Þ¿¢üÏyŒ%÷âšù«ùž®UVÚ"öc”ú¿§—Õä{òl§µûÎU˽ãThÌ辺¦W½ôo§•T ÷™NT»•¬´ºUÓ6S¥!mÌòÕ¹ãO¯´×q”™µ[.&€Èï••ƒçÈä@‰òL‘3­SÔ|õy/ŸÝw²Ê3kÝ2ušÑ•R]<•òÛ†ø2U'y œAØÓù>£Ï™ö:öy_’½ú-÷ýç)îs_;7³×¾ØÆzóU®‘ׯçÚyöûÍò?OãÒúßš0öá>Êï—&ôÒ¼ywŽ‘®2ÂÒªäëÌõeŸ.ç¼ÊýæSÓ—äË-eª½roY[ëS×-9iÙšœ5Ãzü‚Ã샊o`ZlOR¬œ‘¸äç#‘‘&§-$L˜ç™kåœØFÐй„w“ˆËº÷T9'xÉ;æž~ç(T4ò}xzö;êõšÍûsu–Uóô¦ôøV.>wÖ×üϧçÿSÅÖ³Uêð½ðû´_jŸG ÷?/˜öysµ{Ã>ì<¾¥uÄ~¯4«›C0r‘5Øh›^j|^·%Uã=^S“ÔµÎÕr–ø]*çnùõ»Î´q>ï ûÀä@p*ͬ;ŠiÙk´r—'8Ür9ŽD ¦ZK‰’h9ùç/V{Õ–‹(Ø™bÇsbþéUÛ©®æ¹4Ú pqoyº5ó{µŸ?ê7Ç\ׯÁcÍê×ø>ªÿGŸ#ô>V»æýMŸŸÙ–Ó,§·Æ·ÑàÛ|ÿ¥×<ÓïþmG§ÀÁÔýä]žºO/¥Ugžõyk×-–ˆ;ÕÅf‡k«¬vè·µ(z<«{ÆüíC–ÙÓëºÎ.ùõ´-×zåo¼T_&D‘JnÑaÝ‹ù–³Séps•Ì®r95þ/Yäõ/ñ}ÏßN3ØËÑ‘ôø¼¿×á`z@ÈΔëì"TA.š-r“ŽŽ¿óútüí/?ÑËz¾mÜý?•õ®áêÁ}_‘½ñûœø>šm8·ÑóQúü7ù­[ñ¢õùú1e“­+µ#-jë–o\¬L\ðwU÷š‡,gmü¾¸P.Ê“œ·ó«Û=Ÿt§ZêÚÂuÞZd߬ëœ%2Ò/ˆÆ…YéÍ#7-rµ-Iè5ž¥œÉÎWŠéädüŸBï—Ò×ÍìiÖûo:Ì{¼>7ìùê/-™±+”Íéç ω†EóXa“Ù¦¹Ê)'Ç¥ÇrÆV}ky•?FZŸ>úï“ö1?Sæ8ózw?êJü¸íñ¡ëóRevz›ÕåK§ä$Ú-ßÎß=+µËi•®FŸ„Ö¬¯=7yæùÛß/ª½vø¶²°R¸¡¶Wâ”(Û•a§-3»ÞR.Êù¥ ˆôŒö·4œÚ­r'­ÜßTzÃ(/‘ÊóäWO#1äúRë6îf[a»­1ÒpȾjD¥£"¼™`´XCSÓס¶†Ló r%5wŠîæú»ÎØËÓQžÛÉêW¶y±Úa² °ë|Åú¼·°Ù§¹Þ¹,iÞ:ç÷-3ZäÊ.e †Ykh«®[bOU(Ùn¹pšù®}» õàÎÞZT"PÛ:.]ìÐ,gU48Ç^:dó-hi•^÷»E½ÃTRRóÔÞÔ{+!|ˆ3®p98ô²w”ék™_,5ñ¾Å 2‡Kd†â³ °êP-¡É®[!3C ¦ 5JhoÂö›qÜ?ËÕæl;ÃLaŽ®³¤C ï2»ÎÎ5ê“.÷í®Û6™iž×'ñk Lµ°R×={Î}ºã² ï-s«ØÓeéÈú|7óÒ†¹RuKÔÏd-s-§ËC–½Îff¸Ó3¬i:ª!ƒ8jveò"ι\âfšH´Då5“‹G…RbÆBBí•ê$X6"‰U7«°ws¹ˆíVo.˜u#ÍÝ`rqWsqž•êms[\æOLÚÍHe†ì3ÖU 1Û—y›õyYg¢®¬^5/µk Ýl‹hZhbs³íiÌ>šùk”õùN]µší)r[å«,µQéó*çVéŸnSNvüqÇM8Z(\z¹smÌÝB#Xm_O",øœŠçž´xfÌ™Âj‘ܤ}>„ÅÁA¢_Q-G"ÁÄÑK©5é q<ö+`ϵÖ8Ó ÙÔgYiB¸Ñ¢«Én™“Z/©ö;]ËR¦†¹4Ï\§ÊmŠòî“®ÂñËVÈÞ#H_©™à<µç¦å}r×ÍvåŽd£I¾Ñ'I–¼²Õ§Ìs¨ô͇+‰vÎvN].¿V.m8†£>[£StŠ år&E§P+ž14Ô¥JBÙïRëš“6º$P*QÐŒ€I¹êES<%.® á ‰¯‰b Ê´úíŸ/§3qK|¹3®Ó]åÛSæö¦×ÍSHÒy½SšÂ}¬ÉµÊw:ND¿G[‹¬ËkKCyU&ZãŒß.u¯z ²ÙV¼Ò_—–ŽcU¼P¹eÓuHª›^¡‘`r9˜Èñ²¼ÒÑE [z ™0®ø½ŠTôƒ*U jJâ±üJ»§¨#V óQ|•ítïäõP¸”j›Õá±¢ÿ›V™újâÒeèåÞÍÓªëœÝAêòÛãç;~y3­ÇÁPÍÑi9iâð‹°=Ò}1˹w3¨ç.™R˜‚;¡]V&˜Š•@êbK_=XЦ$kˆ0!TŠü[Ï^±Vµ–]É‘ÈThŠãS"lESfeÂ>v†ZgM¦¹zLÏ,Za|™ç[ÅSé÷—Ó÷xwåsOÊ—×k ùe«)Ö–™dýžXo rÏz|ÍùÛZ“¥tR¦à fÍLÏ¥Žja+âÚç·³ÍΪ‡”ày¼Û#QtÙ˹ÐrcZÓBœH¬¤? Z!Sóh´p'«¸ß„yë^j–˹¿¥Svy¹„-Ay`daùÔYihÜë–“¯:®¨üŽœ»-|Þª:b¯\ÛóŽ Ó=º¿äú±ÚÜl‹\“oåy†êµÉo§Í¢äZ0—O̲–)ÕÍa›™Ð”걃aÆU̓2u‰Ž£ÁDÞDUQlÞÉù#N\wÂ"Mó<íW5ƒ"ú=TôŠü §¦®S)QP´Ò E£yzA›9 ÍÈ€?=Æ §qw;G-tXmCÝâ‡;´{Ü¿5WC®ux´µ2ÿ=ú2ÑLvãóþ†OÕåa–­òÕx·×æW·–ÕÅQ¹»5ÃSËD¦œ´hH/ѹ‘fó-ê÷ãÈ E) 'Jå‰iÎç¡2<Áa1y\`iÈ÷X~£ƒÐ¥–'D¥Ñ"¹¶•SDfD ãr):•Äbò<é–º>Þuïñhy×¢Š>K<2_S¼zq8Më³Ó7èò×,sºŸŸôk”2Öß;ñ¯Ì·_3þvÁ¦EójèÔΉŒè¢ÍgAž›sÝ  eçåzLÌÉQ2G O"]ƒBeЏ®Ù3ÕÏÌTfhNBXf)@ÖK¦X®z¸Ê”r¤/– o=4Þ_MÕc=þ+ü» ÚW)Š¥Hk¿G.Ñ\°*:Ôgf=Üy}HÚÒÓ=f ×Ê׊´èî2 «›¶l—›4ƒrÄÒ…J!Õѽ4‚SÑLáhê"0¥ñBvgŒ©)jnèÈÈžšyø¶‹MtÆxôSÖÏÏ4l,F8äU’#Òg"©\Ò‡Fä%@ó"©¡0ELôÐù}1Vßâk˼®.\ñutTáùLЋŢڎ£Üv×y=PÍ™÷fó G¯–;ñÉ›GSr¹´gamÅC)5\*Yi4ðÚP˜AÉØ~rŠÎéteù°k7|nh*ŠéÔ&qŽÍ vÌZX ¤üÄ©‘tº/MÙŽNœb7š‚)Ö<¯±Ï^Øúëúüž§*ççE…ZŠGSÒÍ hzw#,±„¢SqS¤Ë\ýeçgè¾¢·dêX…ÄK€!5'¹ô¯5Ž.™«(TéF1ÆkPV¥ZnDSóÏeæ@¼‰¡Ö£ Š[a¢òÃ&Xæ–âëñkN{=2j—ÊlJ:•zQ–0æ„ÕšAIÆ” !¤5cR¬ååM<ò44PÊêÛC&gS\*šò‘…q¤sÜ 3Ñf¼”ÝSD3J¡Y|š-4̳¤oWÀNX)I‰ŠVd°2‚ÅO#¬‘êéÀ—tt—%%x1òT Ez!1tÓ’•1ò5½tã+7eÉ}Ë"Á@ÎÌ‚½@F48=1Ãz<"zxðädg,cLti„Ð×+Ûm±rzs°´`¦²Æ¦²ôÑÊö„ I¯#=j-¥al¤+Bæ—÷.¹2±”“£ÏÕ›.‰Mñ·9T®4jÓ‰S‚<Ý^Šz|ôÞ«ÆF’ȉEÌÇ•hä%ôwS¿žW–Ì@­H™;Ò’”.Qá¶£ããò o®{a‘Pô11›'_ÏN€]šòÓÓi¡/‹K"éTdšæy@•.…Gžž/-¡_E5‚Q´´®ª‘¡) øÒf.•3ñÓMÎÜ=‡ÐùèûÏJe³Ðë²¼Õ*zq›V˜^žFLn9‰¥W*#þ´&Y9sC\üÀíF¬Er(Ó „²obR‡šhoØÓ˜!¸ù:#ΕhÙž† ¢i&¯è ÐŠŽgrÁÈ“ªi7Å¢30]7,ÞŸš'4g«Ä'Kô!~ª|ærã1šÍÕÆŸüþô Òi“|;?F>Pçé#Ô´e{?œÏÕÇš9å{¡É<@FiŒ9bKE¼­!k«‡„'*S­3§Wb êU9 æßž‹4Ñ¢ì0Š> Ôø°S%aª…"ÂéuX“U,ÙWIɈ&œLÏ\®frïˆwMK=Åšµ-?/Ÿ°ÆBXK—=4Ôß|éÌ·9'4“q.Íž±Î{©ã&ý'Üüá§,û>w¾«®~~©ÄÙ+ÊN|î(k9enéQä@U$X\–ˆË©ÝUYƸSÅ£ å“íq‘®5f©,Jå30¯A˜aŠm)esFbUÈòilÌ¿)ZºxÍ7<<Ã>ÚÑêËqNæ©_›Ï0?KžŠu)ÓÀ1ï–´}§Saν€ež¼V^›×šÍ\1tÜröu:å›SãNœ8YÃw–¸A—)sëpÔëLQðªX]BÁÈœººÉÕLá\‰U7ÚÚšä{a¡=1\ÌZYÔŒñ¹¯ÑìótP0/•‘=5Í –,Mx‰“=4QŸP4ôÞåéš0ü!<‰}†Š¾ËÔ*}á5ù”ÏŸ¤EÖäøNzù¿ º¿wIÂ8ó-û<²ËV¸ú$êná=s_Þ]$¾í¨«FºåOyžE¢>Ο=.sEvëæ¸Õ:—Ei MU;ÔÍ ç;•Æ¢¢™pí=è~Õ¬i Uب™ ù ¯5îÌúÓ"iç)ñí‰î$0†’k&yqï\ylõo4öÎåéš3¼xùI|M:4Œ´•ušóL~†5T@~^åÕÏE¬ùîépÂ.îz-ßÊË-u>OvwÕåWÜ*ëNñ.$¢û9råYTêjJE®Ï\ôÍ2g"=*×¢ÓVrR1”Ê‚ÅOv‹“жr$X):g]ýfÏné„4Ó,5W•a="²üàmWê§æù­±ê,š^içœvõÙªS_׺ÖT§š—f©šhBg"x »¯S¶+ˆÌ¶[Òçpý‡ÝÏ[ñSÓµ;åÒy>…¼µQ¯•o£5½Ê°@™%¢¸Ã¹A¯¤LùþZ²«^ušá®UõÊÀ·3¨•ål^0*ZéÈd(æ ûêÐø½>yéóõçsžå¦T u<8õ •–©)Øxn+žPnx`¦¯Ÿ¢*q‡ç©­XøóR·mŽg6Ú…YzŒ3fi(ÒˆGÓHL2zžŸSê¦ôÇmŽöÄö1†E,õíë_.›yïžïÍWзLè24w8ÊåRécQžsGUÊh¾¹ÔœÕr^ç– QvU"ŪI”‘§òz¡†ÙoW•EóGÃM°÷C5åæý=L¤8/žN£ ž'f›¦{J-i‰wЀФèyOO=.O!-f²Å*ŸM0“Xr¡löŠŸÑ„Êg–㯌õÊØÂçˆFÛNáç-±µÝKLë³[¥L ¥S‘"gXUÑk’óšW,åtå¬]êXŒ ¢s[Þ÷uªW¹7iŸY¦*ÓIàôæõÍ[û»½¬wB‰¬ì‰ò3â‘—O¥š)MX YúmG’´xp1e)j†ÔÖ´ÀZ=<þk z­Lš@X:ŸÒ¥ÃÎ NZæD¶óç]妇ŠUÖÃÓß—@Ó÷<û:w@J§Âós”%¢Ç&ëHF‘âü¬5нX3£C‡óJ5É—lqªV—Ëi› ©,ô¥œÞ™-eœ;èU»Ÿæ©ž”Ÿ*iA/„´JBnÑՀ̊ÀZQ;Béú~w1ñÜ™ç½åÛi„<¢Uëäzë/ÒúKÈ2Ó—9ç½`mÉ£ì}–Q¬ó}æxnÕUÍ¡‚T9ÁÈ+‘`¾W&±ç$V‰òio42í¼Q®o3Ú–žiöªŒ±³ž±LYkÏyF˜í!k”¢½3…apÌMDÙ§ÑÚt&@ä]¥B”݃l‹©™/‘)‘¹ëç¥j~yóëÌÎí— ›Úg*Mr7 ¿RhÆKÆò×YÊò.¨Þ}ÚZåéÙÒžfÅ¥Ö«îl8É*ФɈ&À4›6êeÍkå`TÌi¡þ4®õá”ÔõÉ¢™kæQžüd¨ÏªwK:Î|¯ºçl´©±(_+‹è€Ñ Úùé-f%©uͦ™£Í¨kç±]tÍoyH°k ‰íÆš˜œÞoËÇ÷¸êŸ@fÖkÌ…Káî‘ú3F>Xœµ«Š×.2ê׽Ϩ¹æI¨È† ˜¹Q,H\äžÇz´µÁ­xï!¢˜¢k• xÓdC®Z¾Ç …æÎ•EróSLz`>R×ÍJET{ æC!QT-ŒŽ¢øÛŽZOlV¹Èj1ç=«\êfò¶¨¢¯ižW¼˜ô¨záhÝÒžo9_œ +ž¤ÍTÖ$®¸„ hn=#E î;-*ÅÏ\–BÃVK'¸µÀªu A_Jéê]*Ÿ<(:ËšBfÛTµÖãt{!¡ˆÄëž7š_3xêË\›ö=p¶gM•–%àç±ÏÎ)ZÕa”-#ÙÏu×—¹²°ÈîsËÓO†eAˣ⋞ó¦læ¿9åªãæ™PêecÑièe!å3y3¥s›:Ó¬x»–«õÊ]DnçéísÉrü»-(å¢]V#‘îz ÓBË îu=Z[ æµsT•A$ñ3[Œœœ£GYiž¹˜¥Îν枮–úg‘Óη=Þž›'Ú;<Œ‘좳aò×{-å«?&EØÛ>IOÿÄ6!"#12A3B$Q0CR 4a5@P`bq ÿÚÿüCcýLôÜV+ŠÇÿYÅb±X¬V+ŠÅb±X¬V+ŠÅb±X¬V+ŠÇéþ…ŠÅbµ­kZÖµ¬Vµ­b±ZÖµ­kZÖµ­kZÖ+ŠÅb±X¬V+¦?ùÌTE­q“õˆÎ+×Ûÿ=. kZÖµ­jcÚ¢`§ãX¬Vµ­kZÖµ­k^¥¨ïB"p=L 6•Ý¡‘˜ùŽØ¬V+­kX¬V?]f~8Ž¸æµ©ž3®2© ¡G5À_ž)¢ Él?ü+ŠÅb‰«_cõè©»—ÈÂ{¸¨€‰¤«aZÌŽ(Ýry¡Ý=…w½£a¸TÕÅÀ)[CŸ#ö;Ç­0T§7VÌRnøƒÉÝR !w¡Å;®ûþyÿ(»Oæ0Q‘k…=«Ô±ø*ì’¸aðÔ´¡þRo!‰€¿z[¬#©îp%Î3ñ­kZ××l”’â€çnÅÍ5Ä1;è}£Xý7 ›•D÷õjÍzÄçê>5ÅrqÇòsÓÒ‡5¸~ ™ùg?~=Û»=P|^&>#ýÆ+ŠÖ±L¹BKSuþwÌx”Ö<ªÀ~N•ÙÖ’EW3…ëC±6OÕ„W9†ëb®Kì"ƒ‰*~»{o-ŽŒIî“~…#C£#:÷ã‡+wRÕ¾)„‡)Í)þZÒHÙ{_ò1¸È¾Vg'¾ïɄ֧æ(Ëí± ¼™Yêu¯h ê¶Ò$Ìr/Z]ž7ÝûC'@Þ‡ÞŠî$LêÑíÿV|ùRú–ݧ×#óýA_î© .¦RSžU¹UÜbIgßÿ{ˆDÄiK…ü=JŽóÔ1°ŸU>Ôî B%MɳÌýQf¹ó¢¤„ñ:ø(uHGþÛ¦+ŠÅb®ÝÂ0"âç]¼ö†·@Z}‘s¨HT^/ëDÍ´•»cYADiñ`¾äÊ#bì¡k¤éåÜèb9F#ž¥žX«QžUP,xö­{ÌÖ¥jÁñЀÔjßqŽûCµã¸€Í­¢8. [#‡’ç°¶p"ˆ˜}\>8ÃP)2Ò¤ ´P|›¢I÷Šæ˜ø‘µƲ¼yê_8¦/ÃzV3Z*J5¨&pÔþÏu·O”_(|eZ2JVÃN6°ÈN(Y=¢5>):<ÉFGÇʉ$EŸ©&tNCÞò¿ÜsDåÿ 7r¯ÿ³Åb±X¨ŠÅb±S ÙtDÙ–C14¨þSä~U¤D0¼³2S25a%ÎC$3é$hS PÅvàÜí°×à€ nN¼X]\«dMq <ÎE͹õгõ[QGƒ¸ˆ¦”ˆ™W”b@y1\p]Î×þå³2ß݆ìúºpàElDÌ Œ ~ŽàZza16P9ÔÈUÊ0ñ‰òà©%‡iœ”ÂíöÁBàŸ4ñœ•Àù„Ó ’‡ŒF…{/Z•Çh¦DrTiS³Oo†93Cò'^{3#q°*uÅ §˜¤':†^Îñm®8Kã5–±|€µR9\åõoùÀVqCs0¸äo™ɨb£´Ð¨{Ö K̸³R~ÌÌñÈ*‚w{fÀ^Ïúx¬V+ŠÅb±Xý «1ºYÃê^TÇ1K̾ç|Äó²%á4þç™^gVÊ䵓1 5„53¦ö¯ 6±€”Z]òHò2?¸6…©“†*ÂcÔ*žÈ†•$&l.Û7%Ȉ`h24:ñÐÜ“;VÜbuøÖœùý»d2E&‘Š’y3늯i+Ž3-÷‰Nj "<6™dòìqå$Ò/9Ô±¿«æZÓ6ÇÝ¿)–âŸtÂñpÜÉ×ÏÌ i´í ®2á¾Þ¥Þ2ÅlºO‘•qÇ.ÔÁ09¸ÎM¥%ޖɉ(X²±sì:ˆº¤c9šk'°Ñ–F&¾)Yø Ä™APb*~»Qd‹bF ž îŸô±X¬V+ŠÇêûÅ£µZÖª ”$ÀßæJöf«°²A» ÜòQL„þå[N@W2%Ù¬g~D­›UÜ+0J'íem97‰‘•Z®de]"#˜ÊŸæÆ)~ÂÞdŒÐvm4‘•ì°4ƒ°3>Ù*¹¹ÓjPømH×-hÃ&V½Õ%Å0±å.¸·ˆ’»†«{lJ¤¨`0RX9ˆŠ‹x.ÒÀÒ‹°ÄÕ¬ÑZ0ϤžÁ™™À‘@Í,±šÒ ±[„N’TÉ ==±E˜ÜŒëIÖf‘€*(ödêceêVlÓ4ÅDÉcºâ»bh´UöÌŸeöŸ#ï1ˆ©Æ•¬QlÍqÜ{N𠀩ýª–kQáF½§ÊÒæ.‚f?ÑÅb±Xÿ§¨\Ï' &<`~u(dÚ\ëEžLÉ\œ·f½ÇÇG• 1¤sç™ÁPãP¥/ÎÂÑÚleˆ,Ô*»°!rCìÓb»{H] Ϧ•MžFTÂ1%¦ˆÛhŠ1= K«~ú¢¬F8 )Å\„o‰ÿú¿fÛÄ—9Pˆs«‡-jɹÄlåóÿŠÖqZöÍt¦.cµHÎüt'"t«æG„½¶À® â#»s"QÂC^§~*þJŽæs Ü„Œ‹ÛìJð-g ÀͶD¤©…>8 P™‘`HŽÒc7eÏxw*[@*¸Ó Œ–bg‚ÄDùøíÞ â„Á ÈrLÄÑ0+`ˆö òb†‰º:`¯€ôÿGŠÅb±X¬SN’a2c2Gß›ÆÉldï>šGrfÃ;½á'õâQAJµHxvÿs>iÔ´ÖD Oü•Ûµð_p*ÎVP=ûŒÎ#ªâ¹d³ËÈ‹æ~ÚåÅ;P”¥dºE£0¶ x‹ŒJW –·!)%×1[,† “?*‰&U¦¬SbÌЀjŠŒ„bgÆ*5¥¾B1S£Ú"8ñNÄ$F{rÔãi¡Æ;ôŒØsÿN?HlmSŸæ8‰œcðCй¶÷eÓzR+XW›Ú@¢GTmçCdÑÅ!à>Ð͌ڥ±¬éw–²LCïSˆžðÿ¹ p@{Û‘"àHý2îÈeieÞÃL€'ÜB;›:—2Œ— – Ù.€eh8kßÄÀž²Þ3 ‚8žf‰.ápÅí Ý~,¶žÙ¦_I7ÁŽžZÂÂߎ‡%s¬ÝÈÁv×`Í[c¸ê½ë^b‰v£8ˆý’Ô‰2P5¼÷ÿ1Hã))œ+’„Ìâ€Ý{Kü<«bŸ*WJö%†Jâí9…ö 2ñŽÂÆÀж½Î°ŽxÒ¸evÚTŒSUƽ ¤ò1EóäD9ŽýëA/*ÿóñ.¤f…[¦3;—Œ)Y*âÉR´'‡"Õ´O ­¦è¤jm˜ŸÜä(¬€IŒôQŸRyÿ¯b Ú–ÒûS7cý¸ì8ŠÅIÅÝþÒ+€˜!h3ÔÝ]ÉDRÀË…‡¨Æ…±MÃÇȘÙV$¤N‹Ë½c¾°¨&  Ÿ&ïÜ—|çHŠçu¿‘—|¾Ø"àìÇ~ËŽv}Gbv¬ðàõH'̓ÀoÚ.¦W1vR­§áŠãÅ¢9˜2 ´è ×íJùói§÷ñŠXäf+Äõ)Zæ:›¬pÆ› â[Øh #?ÛRõ^š"Pst¡/­ èvÐa¼ùñ‹L"!e´O÷¢qLñ Óüâ!|W¥òöÙà^J.<ò4 ­¹†JÝ–ku 'TËZvÛ1÷ ˜£bÛ$LËX§±y¦±BEÏD"$eYgj\O½öØí˜¹#>8J(1FÎF0™(BÙòÁŸPøc½Év®b ê°S’e~žè&*P¥óê*·0¹¹"·)½ãüפG§ó1W(0.¦s´XÜòÈÍí²Îô&Ô­Œßá ˆªÝøhé,¨'s3 šcy"`Ltˆ  ø¡Rò8×â4b¦•i3î4=ü™qäÊÂÄk9ì.6œ,i…¼"®Yo‰ÐBg½ ±œ©Æ±9•ЦÜJ4n€n8G± &¾¯»½&37G§dk~3³m¤mù•>æ„*ZÙjÈÌ!`s+-iOäi›³;HÅG˜ø÷ÍiÙNÿr ¿n„…NÖ‹³÷©i—•IñÎ'˜ÇÛT´y6b/´Åk“¢Ú~PZ´j.0òœ ä]b±X¬PÛ.;ɤö‘Ðb@¬d™››‰*¶- ‚rÓÒ¡€¡Ä/%Û5mœöð4ùó€í0[É ÅIÓ…HAFä;ŒŠð1=µ2œÆ{F ÎæŠW$’aWÌVþß©†/û‹eC’qËc2Â"1%k@¦‹eÀ*Ë´ûdAwvº`¼ÃŒ-R“-ž„´ú‰B”9Ç ÌP/‹Ü.B•÷ï+9]5!'˜a@—¶K8¥ñùÊ´™¸™&6¥ùMq”•-ñ¯°_Ì"dŠ5 6OÈ xóÌú ›èWÖÞêàãÔeñ &Éw4ŠŒ ˜MÑ>À¶yLMñ w/žX\•FÛPÌÌ®¹Í}©‚!èØùÚ-z¢J:Ac`¬V+ŠÅ 7ß‹ †Nfº‹Ên8@Xä­¢[ØËwTvÍ¿2ÁÃ^Ã:Q6IFt …jTÆÊû’É.îÉÌdù ²dI#ŠÕÖ~á•S©e8³±—«wúÁ·,ÛÈËmØ•´ætÐWo ŽE[B9š~–|Xu¨Û[h<åcnÁ“@'A5MÊ¡QTŸŽÇ:·|Úx¨_&RL+žÒ+zà4À­”VÆŠHí’SÚ‡%æ\PÉÍ>dŒ.ŽV€‚vfå#fÏa‰ÄgZ"‘ˆ(90¦x´¬IRîæÞÝ ¥^©´Ö+Š•±R1n¶LýžøBü[ÉE4°†?©™IÁQ”Ÿ·J6FHÈhœÖTzjã€ÈkÛdœ)¤“Ž@ˆå—"=F«Vmkl/0ä¾\†iH²ÐåÃoxæ‡#œ«1•ÛÛ©|’L-&u‘NÀrµ“Œ¬°µ”¹ÝH½m/X§1&2áÔl1ƒ ½,håšÎHÃ4:/Œ£hï´Úo¬ \-VÀa©1F›=€[8 ˆÁmþƒG6 â*ES‚mìè#/ ¶‚owÚJ#j(¦—¹îAÏÅj9Í(¦•ߤ2yù)^ýÀÔ&Ôø™| ¨»qË(’ˆØôú¬.å3.vœÒŠBFh`GÈ©ˆGrS.^z)ÿ’ ÉW´Œ!ñx±G/z/V•èÆŽ÷D¤qzKháô×R^YÇ@}À»Û4n,—&ˆg—,ר§\³ºƒ‚ž:ZÀöÏn:´òo®.%…6ÒÒfó#ÚhI»Œ„Ÿa6ËÁ…§yŠüJ¦#:àvÎÛ+kBSïCˆ6’DKf'0#ZâŠ34¿u£4ÇDæ¶Ya€OïäŽsÛÒÙ[]ÛG$­ˆXqAê©ïq`Ç»–¿§%q'LóÝœdË^-ÔÊbŠØá¦mnd‡Ùä%*Äq†Ð´Ä‘Œ ™¦“Ûæw%l@ÜqÒà5“ nìŸéª7 UÍ‚ý€³—‰1¯±¸pÌ®BuðÉ—ñ\5j¿¶’kÉÄç›)!‡Æ.ÆxŽ`By¸æ#Î"¹–3´…¡¦@ɬݾãuúÀâ>AÒ[A1xÃ'A©,•Ìàˆù´Þª6Û$[ÎÜZ×ò«sRËÊX¶ìÈ&ž=Åýi9£)vQN³Efv¨pñÜYÚ^RÇ9l!ˆˆêV¹³™¸šíÎB¼p,n¤KJ¿D8}XAŸ„ ­·xÁî½bk(ŠÓB÷æðÎf+†ÁBz‹š›6pÉB›óèŠáÃEÓÓ¨E³BçÀFC}Bß|‹Ú¨hH€Ù„dšÅIÚû3kïD”*0 R÷’Q˜Yñ¶)=6Ò{§R Smß–ëm–àor¹9Á¨”£îüo+·È dÚù–”ÖÓH“x›I)_™žeC#AÞk+)”es®k¿ØFV³ò`C 1Ǿ=7žÔsv~­+’'ÖænÏ*òþ¿bÞíªÕžÙ˜w0£ŽN–Ñø¥ ¥‡ ÛÇ1²™ p fOäRe®A¦î×¼Zp‘¼®R¸ 7ú¡9ñªîh`Ð\œ¯ÄD?#1Þœ<ƒ±zYc71V¢1jÜe‡p<)¤‰MÀÈ6Ó^›´Øô÷ÝÍ\=QÔ²L4¥ÿ3«ÍÍÄTĉ²—á³úµömáݾ‡Ø„Á¢ác0j8 ïUÓXû1Úá&²¥tû‹´Dƒ6縀¯í”–ß*È`´é–ÿvTæ ©\çÁVöÇ£öÈJ²!›o:V Y NíÙãYäìZ©g%E Dj39íMx)¸‚äfIVì;f;ŸÖZÆVdkM¿(oÔxyÝ·&5f$›a…'Üú/}êóҵ›‡ZE´ÜÉ· GRÑÎN‡ðÃrÁ†Ú]ÅÆóM{ÖÎ)hm@bé…d=0ÐäØG³Åñ&‹‰ò¶Ó–6–8wáÅMÏ«íPÖ?ÜžXH°æ4îEZƒ¨Œe@»rŸ{RðžêuüªÎü pfçó@ð…¸ž¼Ø×µ 7ÚŠíF¶Íìz¹Yºá›ÆX¶Ý†€»‡ÛÇt<ß3…‡‹:ÍÃ2ý§5íœÇ<*Y4„™Äqmˆ¢3W}BPGV¬çEËÔ\ø[ôÃÐbéháÖŸpIõ ?ä*«*Y¼˜Ä„Ѓ®ÛÚÜNiXÇw]N&ahK^”h‡\Maz!7ÝJBçŠßWwa›“‘jËÓ9GÏ!ÌÙe]ú2pÛvȉMž–‚‚J¸¶X1LëÈÁö V14#1òÖhŽbD«¼Q{a¼ŒîÙ"Pö¦øTykN‘Bw6$!wÓ÷.TËI‡]ö”ÈØ•pÝ< ^-))`XˆóJDG´Ó­Ñ{[e;5œw%À‚µ¸Ó`»žcy\¢K”6†«…ŽY͈×p,nxß-²x•[Ì7ÑŽl!>h|ê«‘)b¦~^œá(9%K¼ô¥1 ò~ÈÀ–J­ìhãä"¨á–I­ŠŠZy,88¼w0î3¼¿V¯ÂrÆ8òJ´|'…rõÒ­Ýr6Ó­Ø0Xrûö… «µúnR¿$\k|A«ávª’®Ë—ÍÄ PÁŸõ$b&¦ü „>â×YwIoïíºMÊ$iÍ4[Ò¶á‚’tgXêLŸHe W©I7†Ü…a 2x%'çfɆH…Ëø ‹rº4°È `¶´n9øjÙEl š¾x!FìW}É _KÈZø;k[–ìr°“· ܬ}<…·Légf0Æ>)–и9?I“ðÖ69ý9ÇbMzPa“Ô|Ñg¹T¸š­Œf¢p41|ÀƒÄIZÊÿt@„ŒÌßõ&ZÌMÿªÊI^ã0÷]Ý,nQ&ûwsÑÌ8Nt.õH‘ºU…ǯGC2+{%»ÞÝÛ)ö¢%ÒòVw7 Ó’€æJ ³sFá¿y¶‘ÉÉ0wÂpÏ61¾ûöAG£[‘ Bô?p“œLP”°3RX׌Ó϶<[Àk™ÑJ¶næ€æÛk~*g'ZRýÈWI¸È£Ôp T:òdƒ‰s¾ÈÑ›n£¢ï.çÒ\×ô÷¶DaªW¢R6E¨ßZæÐ@7P‰«D2ÙÕÅ|£¡'Êô¤ɺRÖt—±w{0¼HE&E•ÂÜ £çÀÞ îît_)¸ì“"ÚÔ s—Šš­—kn¿V\¶À&‚uÉ’ÅÄSh’ÜÚÅu+}D_ó¾SWn”èt®Y^«  áVý<<ì¥qhíP õ­K5p®­ï\û˜Õz‚é·/•[δmËx¨Hq’lÙŠ¸‰ÉÕøB —Ù‘@÷¡.ù®<ìË3š_)G“þæMrÐöwÖ׋"j$ÒG)êcé|ÔEJjn Þ"ðáôD;H­âN6Öæ·j{$ctB—û½Bþ`ð®˜#'ÜOŒÀ¡wr˦iÄÛZúC¹².å@b1qpräm“Á)!g§ÐÐÀ¸ïŽEpÁ¡¨0ŠŠ#´"&iµJAœ€û”0‡”‡ 7>|Væ±âõPä:eÊÌ}õš.owDã„R2 0 ³„8Ûo(æ¸5ð46rn]ýHØtà’«”¯gè`eˆ´µDIU³oÜpAåÔ'Kkææ÷Šè–•Z©[R-…«-Ñjå=…_QÌ“ êéžFãdA¤Â®í-Snp‘Ã$ö$ͭͨn‚J´rád!Vfæ/%ÔîS+ã9I1ÄCigqÁ¥M¢.^íî,p˜ÚÂwmÎ'5dv½IL®IJç/º) V ðÇkn¤Ì€¶ÙÛ¦"K\ÁÔœg&¦£·m±l¦3uq+Bô ð¤ ë_ߊ ZŸåªÉ»@QÓ¾Þá$W!Ï<7I颦ÉÚ‡Mäuø¯ûÃ$´¢ÞØÛ\¼]/e*%©·† €Ë•bïs‰—"k>Aeø\ÚäKl'[[½¯å!wuKŠZš4–+fÙ;R2›"·•-ŽÃîˆmŠA@·\º´¥[à(„ÆÜ œ“P.fØÏÊaM‹MèM¨3â‡Qó®cèLáÆ‹•»’Ð’Ã|ÂúaäM'휈zrGý< ^"¯Zc ‡ B¬¢éÛóqE’%<$6¡n-ɶ—=Ç¡‹]³Ul¡Nâ¸)MÕØð1)·µ»ŽÂ¤tÁ+a¢ÞÎwŠGLµOí¹ÜsV-’¥ð Ò{°óLd\Ê.”²Ôú¦j£±çÁB6·¸”Ó/ Zú³P‡­ÝÅöxÕýÁÝÜ ªÉüŒy¿wL¥E¹¨g’DÕéÉ«,…¬¼%¥smc¢¤ “4°…®k©¶tøÙ‚±¤ŠÝÞ‘ÛQ_?9PÀ_»dˆã1dsÎ;Iæ‡õÞ hˆW濤Gé¨ç5‰ü\jCÄÉD«ÆÖíâËo”É— šo¥ì7± µ€¢ˆÌ”Ù37ä6…½.Îâêò¿©—ôÂMX_ïÒŒÎÿ¨ ò‚ÅZ]O£¶Ié“Ì.ŸtÜ =ÅÊÙPé•Ç£`@ÞiN·˜œ(my›Vä'|@ƒ¿¼@áÓ† ®Tð¹;б».nÁ}Åì±ËwyÍsÈ6¤åèð³¶qM/eÞw ‹4›%wÏ PÝeq hÄqøÕ²8e¸äœç…±9¢\oƒBKÑe’˜Y"&x§ÖzÍ Wömh«0( e˜g^ öO³V |Þ€¿x ÌC#ŸuÛ²T”G \î¸òÒ¢"ÂVïq®dŠÒÂ{9æÛ{0«5–‘Ê$öùůÄxÓ%„£ÑV`?¹ñ´Nb96‰™cåÓ¼±k]׈ï#E*’¡/Y¨ŸQqè!6„‘ƒôë> ‰6ëO×ÔŒõLUóå!ÚÊâM“4S9•\Ë_8ÌE  ¨Y™Á:òäC|$ö.—p,Æ.ØõsD?tµµÁÎøã²™X ŠÂSÎO6V¢8uÎóK¹W¬ÞnoÒûÈSŠšìÍ"öú‡íE;·iùHÛºJä ÚÏV/¥]JµUܼΠ…¶œ@Îö³4Ù÷‹Rİ`ô”…6â%þÏJ uè ÍÜú«NøbñC/o?9‰ŠW*èPAš {p\n±°Šé§rç—§;@l¨œ›;{AöÙíŽiO‚¸6ö× `PÚ¤ŽEçâ:,|íÂÜÈ«Ä1é`Â^[­³U—Ä;p[šgk%lm;tœ•Ûè†å¿Ö°C¤Á"ãN´ÆÍªH VðvÜÕd¬Ë]Z²ȽCÏÂyl|ws ±É„SüQ3IðÂÔ™ÉF`hIïª-ॖç$¹ÅÉh£SÅFù;ÖÍÒ8f ÏQ  ˜+›ÌIB’€:üUýϧ·šé·mõ|…·†jå’MÚ­ Q¡Íýä‹õ ròC—Ý~Lñ‰¯’ Ü©vkŽHí^¡ŠSqiIò5{sÃFsåÅO(jƒ„ÏU¤]ýøá¥žB£‚q?ÈV–j¹1È.2Ò€8Úéñ}’Z©µ@O§ol †/‘ö÷ÁÎeÕ 0>¹y.x…k±y¡D’®•$óc_p TK躚¤”la㓹Eí3_Xíò©ý5Æ(³Qö¤«añÖ kùkLÄ—ëürS=óZÐà&¦yµo¬N¥¶ ¿ÅDMk PEmíœÒ¬Ë^p\ÎE2;ºœÎgKi×·ÄTNfšÈc³E÷¤G‰²»ùЉwd~ÜQ~æÕç'JÀ$Šiq;íD2Þô¸÷ cÄ?Yó9®3Ò˜X©ŒS5_j½d%&Lé¹¼³Þ’%ɽuå TUœZ6Ķ„ D:—#m"i¶ìN°ÁL¿2º\ÚÕåi‘ˆ­±´Ó Dµg"PB8i|Œ‰Gr,÷©Ÿ¬•粺aÚqÙõ8FÚ+–PVÖòl㫳n£ U˜x‰B8`•ý8Ï‹ˆ;Eq?Fbˆîù6\úeÍ #D3¥X¨A¾‘êO¿zÍâÈóö—À…BšÄ2Ü€ùz—´–qA;cbSÊrËn aÍ HÔ/mL/˜Y!AxÔýÚöÝ^-Oê<\ÁÂÉZëEÛûƒzé3Ú¦DU!’Åô-k§Àƒàd!~YõÌu"Fš G ÁAZ „áx ƒ¿.›@c‹ê'kn™+w8™‘Ü µŸ´çvb >sÛ3‘ûb£üT~)•žØ¯šÛ9ωO¹ã9Ú‚@(¾¾çî.+1P1ŸÒ'Ý^Ì,0)“3©Ë'Žó˜)j&YUü1(ׅ̑Ãà©_¿9!÷³$YeG™@ÓðÛÝiуŽÀˆ…²{M~&(Fdªg«§ ¥uéîOßuèýÌE°ð,©Wê´`¤¢l™q³œËTpòNB)7ru¹½c×rÕ=¦¾~ÓãR_ä™']»Òù3á2ÎÑYfØdãñ­b?ñ8þy‚"9Å;ÇÛ­¿Èÿš‚žM©#Ú‡$ÚøÜcá±E6}óŠV†ã¡ýÊ.~ÃûŒš˜ ·lãå1ܧ?œÒÕ&=¬-Çú€ÕÛ¡ÅvhÙà ÓLÔ(xïIDÂã›RKiJ›Òynæ¸z½Föj¶Þ7£/ˆ©d‘m*VÎÁ¢cÔTÔ™š©×6ñÁ³½D =W2@\¬¡ã8pÇŠû¹myˆmÄ‹oñ³_DíÔžBPæ›zu:\\ÙrnÏSÎ!Ó gÊ7Òß_îÁ*gžÌ’-â…? gîEt1g0’3W%#?÷ÇM´Ýÿj–Ú\wÅDâµöû“UéxæâáMñKL¿œdŠ–[‘ny©ˆÛ±÷×r9Íg#É=£íÛ5ñQ·—oÅ xMFBFDKÇ4_¬LTFåS=f#ñIϸU¨mEßâ1óCÝ¥Z`ʶþT•Ìɲ³ü¨sÏ5mfw ÁòæÓîÈ Ut›¾xßú*PPLê]>ÚÑ`CéîP[_©hsD K)öYóÑca˜SH€«»¸8ãT¬þÎVÜ£¥Ã±5«8†²eGiÅÂÙ©Ûèìÿ9•{.ÑÑ#ŠÛ”L.jÎÙœ{Ñ0¡Ù–8r<‹¹VìCæ˜ó»lTɨ¢ii–‰•%Ì)‡õ7j6 åÂb+Ò:•²-lCõÚ¶9Çþ*Á6Æ©çE”‚ jæÖÒ@`gàjóÞGZ툫8ŸCpêŸq !½7â)JL²M·&«cQ¥Î“º'AçXJ‡ãX>(ÖM’ ÆÏâÌñ,whG™­'濌/‰šÁ°|«µ|ü}èŠÿo5ø ó\r]çeåAˆò¬Öcæ† Sb~ÕÛ9€ÆÁÓfÂeã´?§¶ÚAËv®u`¯y‰]¯Nr¨]½±”š[½ ®o­à׬¸uú€úÉs]E€ðÕúæ_2Yj,6ÏͲ  äIZš9„îqê%HKæã ¹Ÿ"æ~)2 ßn:J%w9™Ö¢Ú{ÍABÏɦg©Ãy¯â½ YtóHÇ3‘ÂßnâãNS63Þ¶Ž-¨¹96-¦ƒ#HY‡¿FϼÑ]ÍÇ.†/^»UÈ"üÃwÙ¨""ÜÍÞƒŽža3:X (aÊ¿•0µ¹nÌ¡¤CÇ®F;c3Hn\:¶ï^Q©¼ºá=áâ»XJ­Ëx~»lU+‘™ŒÁf„¢gZfw>V¾~9(íB!8xF¿Úñ™¥qÿ¼Óƒ/o¢df§,™)¯‰¡,Wj"-f>+óç¦Â¦xÔ—zÛó:”ë¤ qÔòE:${€|‘-¥kdâO+0XêÏV‹®®©‹ž;룲ãGP¹ —¿1Á§S¶êVÇΓ)¿õ-m‚$Û'Q`–‹/Idk¶EùငÙ|—/C´éžÝ/§Z6$Ýk§4r´”˪ͳ^=Ér?½m%&n¹"³„S¤¹ÅK]¼êDÑ/8ݬ 8ã"œk[Fh•†;806œÃçém“æ7Ãß';N'Í*<Émò¼rF¡]¥D¢Å#-¶¼›‹¦EÉÛ³´(í V‘ wÀH›•Äc9*´Í¨éi!¢=¼hF çšïÑ¢N¬ÙÌÍNñFœ“ŒËÝñ“®aQÁ®g´ÌÐnzˆ±¼ÆÙl@œmLƒ¸HëçÿŠ*Äk·éÛ®f]ñX¬þŠ8·ˆžó¾ôòóÅ–¥5ÿšPb%;ŒüìD~¢ôðó6Þq±üF‹4›SyÒŠÏWD¤T9g±êÀCd,ôÔ ÁÛ0ë“4ÚÍÄÄ%þfgvÎ¥l`÷BÒ-%8 ¤‚Ö4ö  ŒEÑ«}Ô©„¥Tìh2¬N3C2MØÑéÇÚJb ã‰Ñ·2æ.íÐ=<`ï&^DRBe¬E–’W­?^É£Ÿo5ù –”P”÷Ìbæïe3ÏV °&Ð mj0I|Éø”á…;Òâ å=¤«øÕ¨Át;æ£Nz^$m•Ì ¦ÄR¶Óª½Š¿Ã!î_÷þÄÍMËz‘EÌê=ñ_ŠLùÓ´Šš•úkS$QEøÍšTAœlܦò8¬=Ûã†?µÉþ¿íTOé™×ñQOX¬¼拸m6Ë\àílÊ®¢!‰ÅÁÝ–DÈÙû{P÷žáâcŽžÂ„^t?4>øi½ÐpqL:2ô¸™1-” ;Riºw茓bÄzkµ³)‹»Š¶ˆ5À—þ¢ªê+ê‰Ðmêä±eÒÀìænÁ@þ¦•L-TöÌ÷™ä˜Ã.po)ýºTéc˜S_ÿÄB!1AQ"2aBq#R‘¡±3bÁÑ ráð0@C‚ñ’¢$S4Pƒ ²ÿÚ ?ÿúû¸OÉï!’Ïøã°ò2`&eºlšwÍAÿ0Ò¡B4¦” £´ÿPðÒ‰$KXuÔ­×4J6”icö)í£(X®8²Mž¡:<×ÚÇ%Äâ³?Dâ$Tz-l*Rçë²g ÕdÌ­e‹#cx@$iPFêIÛefŸ Ñxô^+ùè7N3Ñ´!é€J‘üVM>©‚<–,mdââ› jPì„HE9;5© …ÇH̬œDyomßëyŸô ,å^éÁ2ã)\Ï%~íäã7^d©%ÆCPkx+†è¢š€ˆY Ô¬æJóZ™(gb¯R¿E¬’¶‚Fk&¬QŸ,Œ…ï¦‹Üø‹ÜsôXµnêbW m·\A·j¦n\ˆË¥q“‚OÕ ê4CyÝ›X•uÐ,Våº%à}VY¢y¡-ÙLe*Àæµ+‰»,*}SDø¦Ð¸Ü>Ýd/FÊÐT¥»…7Íu"úù(i?4 ŸP›Tduje æäd·ú¶˴ý62W++Ùs:ê%Œ«‰_UÂñ¢Ø\/ˆLÊó?4=ÛD5rDüÕÈ À]x¦{Vˆô û!µ€\EªÔèšèœøœëBŨ7'nªûBÓ2ž›Âá#ÿdGÄ¿Ý8É—×@¸´ËõZfQ±S§`€Ý\/’ÈðµQÖù¬´R@¼,(œ¡×B™O7N2µ—éiX@œú ²h#tÁ?—Oê¡Ìë¢t|@hW #aþ¨…0ݱ†oÌJÓ%`NhÔÁ©ÕLi®(Õ"Ê!|&:«U`¥ÏîÜ%sˆâ&Êä¸ÊŽUÀ‚‰ý—‰Ü=UŸ¿MÅä®PÛ,¥íW9%®{­WÄVè\Ýq/“BŸ=“)á}_Ý‘îÚ[j|] çˆR<#)A¸’Þ*r ááŒóÍKŠŠ~ë˜ê£ªÕBÑ´e*a{@o@ÒJ~(ÓÑgek8]rÍM›ª§ åÙS^èÜÚJ¹Z#qh*Á™iZeØâÝ ·Q²5°‹šán&¿é\9/ N©³–¨Tý4^vFå7XºÏuÕI~Ë݉¾¤‡Ä:çä°ƒO3$ó*ÚóÌ’^gå*jÑË;¢d0ÔVç$%ÙtYû­@Ÿ5˜»ŠÑ¶afó#%©º0@æ\D2OUü«”X/Ei:«Š²W²š÷Pã¾ÉÀ¢”N›Ž©ñ­N ôã;M ³ÿ6«¦ƒv´ê± ØÈÄhäu·g‹“ gU.Èy¬Š>Ë%òÙ9&$²ªdgÕ߈¦T2m…Öšöj¢7M·Û«¢ ì¿é öO(ÿGÆýn±oÌäœq4)Ÿ ™9Â÷šŽª$dPõø–:Q²ô FkšN—N3ç’¾°›åé)S`gö^Be„¬˜"|ÔX)¡×¥¾#æšç\¿IXt€Ìç%–˘n¼•÷è²&A\R`F«–e½Jˆæ#³³œ,6kWþ9Âk¯—DÞ06VëØrZeVK 5•Hݨ9€õȬ>-a ý•æá@7tiØ©¬ýU€jÿl}Uíeª¾«5 …Ví Óª—>ÒÙ»ºÂ–¢ ¨¾];"uDuQ²„PÓ° Êy#öë|ÖÞi¦ßèŒã?¢qâ@É)¼åýÓ€½Z…ÂÆæÕÊ4í“õV^²¦æÝ~MAãQê¬3¡ªÐašòTœ¬ÅÍp¶5ªjž‹78ú¢nñlJÔË¥JˆÄ(h ¹žnv^%ÈÕdë™9R9cU23”rú¯õG%¥½$7;X'¶/Nˆ;½)²žªåYå\— -7\#_̤’¼N²gШtÚBÞëy)Ôß[ó tFgEõÑ4‰Éœ! V]5S a{Â[™QºÄ¨yBÏì¾,×ñ1|èrmÑ2~¨Lh¢†$¬@K$Ïè‰ ¯Í¢Ç qÉÊ'M]„2Qÿhð—D¯9ê³'5™Í4‰Ì/E›Å!C%Ðê€ê¬rl곪g¢Î„!¦Ðc%¦êI.0¬N[(·'ê²oÝd …âÝA:Ñ3¢>ˆAÈ!$j›"nz×5Ë©€sM{£PtÆã¢ÊÓJ· šB‚á%™º&Mü”¬—ý,ÛôFåLgæ‹\ÑrÇ*lr™>Š!¡86•ÂvRA²iŸÌ¦V·êS Aä „µPæ7ª6Ý^2C“$Û¿Ts“#tûSþO×%¼ SG¢ï!¹fnWÉ ¿Uˆ0ÃóÝq‰“Rhh/€mÜ5™®WÍõòY˜D¸iÑ@œŠ<šœœ®ÊæìSj\qzf%6™ðì­çªƒPªTd##_Ê.Ã'DÒÑ:å-WesÌ9b g‡·T*[ÝHkø³QOÙu>H æ¦%y Ñiº4…/¶‰ÔŸT•艉Z¶l¦ÙõÙvG¢ÿŽ'ôXDXu…Õf£ÓDU2¦uV•a÷@r)ÅI›¬Ž_R€v†Qïì†È§*c)ÙbÖï9…‰'®Š:h¥Zj`èVHÕ0¦ù-mæ1¹™§Oò$²Ç>E‰åhL?5¿ªaL¾í=9ÎèI±6Æë-cR¥­Þ5VNÈÈ®˜…-—öYœ“*mP™ÝñNy'é ˜¤äá9ġΠ;Ñ4°\µç•`½‚aÕÓ_^gò,`ìGÍôPص;õ^ªÈ6Y¨„˜Ÿê¹äj¡Ëa€™m ç_EW¨ºw¦ËÔ«4'†ìJ´å9"9`")6ƒ‚Í88 Ö&¼L9¢[/Snb©vTS(aç wºË°]A…ʤmÕr›e’š‚â…c$xZ8T^ê_‰¨ÉL§h¸€ñeÄwÛÉd†yd%C°Í‹Njâi(ÞVk˳Dî(Ëü‰òXeXýÓO`/°U^IZ}Í~¨Tál@å=çħ/š1ò óñøÊ%Øbí²Ñ6Át×>š/ á: æ>8‹‹-B–¸h§ª|þŠ\ËÛ`³-5ù!Nµ,*  »C¿ULM™ÓdÚ‹ä!C2ê¸Nb«ÂqÔÂ…°Cu ù®Ÿ’f Aš1VZ¬ç—r¨ êÓoš÷b*?¡…ìïÄ|TZ~‹¹g 3»ÚrŽ`…o$xçztX”Ìÿ茂êרèŸóD˜Ù ŽnˆØ^7V'%µüÖkÊ× ‰n¹4Ö ÚnSÜѰãê¼Ãôp_-ûp6òF'5IèŒFË;,ŽPì…²ØÒÚfJtõÙeœPì`x0kí®IÀè¦Ñbç–ê#^Š{ÆÙ„*ûÑ~$ vƒ¸êˆÙj³ø?ÈocætQ(W#5yæ*Â峺s³âêâ<|j(uÜ7\$[»Ñ{²]KFãÆi#ä¹Nˆ˜ªÊw’€á5#Ïtîîsþþˆ´ œH<Ü9®fÚe:q[<:B{ŸŠ|cáòM>å×Åýüu\?Xt¸ï“NêŒ/.°çÎXS]`qmº®cšÄ =Z¡‡]UvO4&RÑwŸZ£Ç¶ëÕGì³ÝIUHú«ÎnJÿ´-ªpp™õ Ñõ\S“6X,™¦Œ:¹Ÿý{Ý?ª§ÏEî¢ùjœÇicª‚8Ìí”?>ú.&cºóRÐP¨MÑ-n·Q»NqNË꬈lýS¤ÆŠÊ ©*G]Ô4‰Ê؇MÑc´#ú v› ZFDh€Ä"×+ çCl”ºsM«»õOà&s>ÆÓº‹¨–g @û®SUR8´OŽR®i°F1¶#%3(Úl®7%ϦÊ!=ô†Ìª¸=@?›TDôŒB}NÖrX¬’cŒ¦wŒð¬>ìÁ hðSi"eÏ›‹*¸ZÇ@(q¿ì‹ÜAuŸ%õNîò{4Pà ˜w’ax€ðá¡N™ßä¥äZN^K˜[aî¬ñõFdŒÓª(ªDäN©¾ª8œ¢üP¢F‹ m:|× ¥ \-䣇ê§É ëшËxZçÑa‰dTôØú®&Sv<桎¦Ú€tá‰ÔaT°—5’ZV#qN¯W š]”ú/U‹—-l DcÍNŠ)٩źPÝÖQª·2¹[dÑ0Ü£t“˜V~ݹ.òBÑ\ºárª¢lXUªÂnà¸t‚2XœÜ/›läò>"‰ÎW‚ÊåaæÁ,Óø¤”Le&„ÖÀú!gY¸sŸ 73`W´j.rQu†úâ!g­–O\P$.&ý‘ªÂ$³Æ6S(Jîœ$e²Ç‰a3=|—µÌ AUÃ&èáµ²ON‰”€ÛJšI¶å0¹ó8cU›í쉹Ѓª'¢# ¹WIº³›2Ƨ»6V'vÛóê<“þz•¬ÇTÒ`Ä*bSƒSÁôVM¹°•ˆeHܨ-”[5‘ð«ýÖ!kž=åàiAÎyú ç\!úM'Í4¶W"TNf… ¹¬ƈ4ïýPª5Ù]§TuÏTçQžhM`Ó𦲇päœÆúÊf¼%¶N.ŧ9Bþ,,Ð2n*\1òO-~ÍÑb‡aœâßDEŠŠðë¢<|:úŽIô€>kžmº<>-ÉO®uÉ:ºA¤H¼¦×ÞKIøPˆ ° ”Ûÿq£~¿ÅÄXa Ì’‚³™ªaŒˆ×É7»lZ­Dè¢FªÙ©…¥ì¿âTIœ‘¸6?ÕKN`tM¥Ì¹ê€y¡ ö¡«­WDLæî„$‡58xšôXÏfxÌë+ ߉ÎUŒãÄVSpО×9ÿíÏÉsTBá¶z‹Þ·'Uœ¦bÏâýQâƒÖëµbsrÕ‡ï7XÁ¤ 1º¢òL5€…ÄGûŽÍs:PöY=Cš AÕXd3 áËUáÍg3 ð³:,ÍʶýV¦TIÈ©qÔôDÀÈ!Ãbz!I‡F^j{³]˜Mïv.+C„3V=CBßÔ&X»“b¢÷ ݘu÷XŽï´cŠÂ|õj™v`©,'Š÷!ñþ'd\ú½ˆTré$Ì;CF6>kÙ{·ò—Œ‚kÌêþú¦Œ1Îã7Œ¬Á7‡\XnÌ"ø{ž‹ Ç#^‡Í2¼ ´ÃS›€ÌOöŸ¯ªÃ|fFiôAðۻщÿ×ul;‹j¤‰£+…5yÂh¶\>Ã]%òò½ÞngdìÜM‡ÕýÔÆá^W¦Šd鲞ªf×)”á¹öfÇ¢mŒ†Ñ¡N“Ì4 ø·XE®ÐU’P&šsÝ\Œ‰Ñ9ØÂ⻆ëhã #‚ß1˜Q† ãÍ<ã=TÌáÙ6¼C›Ñ©âæ2–š¨Ã%æiɾ©ì/n¹'L6\ÉXDaøöM¤Å1×ÍÚ.]ÕbœGÛã Ædɲp@4 SN#JôQu†ÓüâQnê$Õ¢á~BŸÙF .‰ngÑØø”Çæ\[BŒÐ¨Ÿ…Ošˆ"êTþí¯ä/ñ*cZ]2žídfQ.ôP.œýz©òÝwn›§š÷x™µ±b°é'ã ݳ1¿ÉÁâ–Ÿ¡XtbNsšycÝÃ\Þ”ðÆ`Íf|–)¬sa´^?eßIoˆ,ßÊq#è°ëám7̪ ›áç%KÅÁÓÑqÚä,~<€í‰â$,O=Ðîø¹ü%bw1¦dù,G½ÿYc<ºŽÎ}!PúnÓLª åÁ¢÷x-çÃ)L¥™ŽÏB¬ EµWÖ–iþ €`+74Ùáã’žUë:!:жÝPÖ Å<ÁK€³z&–€î³)ÔÐ-ëZù¦dÙoU„18gxƒW 6¶( VÁœ– nYýº® âšÅà™?•:ã2o>Š\ÚÝ挹œ»”ø%¯ƒ#U„×’`7o%Äç ã?ÙsŠy”40ƒ]ãÊë ¶¨,suü§tñfÅó^í™GU‡Üƒ›j™êšw, K˜è.P_qFÝVº®©Ù^5ÝLfœ/®h¶u¸Æ—¦’5ƒ™7ùÓõVx“ò‰êí×­+™7‡R¦û(Q#^‹-Êæm-9N‰'H¹Xnn·EÕ1¹ÄÔ¼1+·^ ãžìN¨ˆõM±ËŽþ«pß‹IO°ÏXV'ŽYsJ ÄÛ>ч-&þ«ñ– hiÑbµŒnA¿¡^ÑQÃñå*H6#n‹Ãûºá‰¾£§’4°êP5åÄŒâ;&»/E‡˜-/è:¯hÈÚ¡öXòEÛÓõXxL¤âªè½žœQÑCùššwiÜ mšÖÅaU†9¿uŠì<îá"6_…¦?Ù:§7‘ûŽÜåpð›Î«‰àËŸœ4~èe¾~j™7.NÄÃŒí(‹‹«õòè‡w€³ð¦ñxC2%5®øÝû*°ÎE¹:¦ŒG1À3 ò^'ºODÿ~&“¨XM=îaùY\UœžM #ÅL¿éI¿yU”Iá$™„Z\mSu@‚m|Â÷ŽÑÚ«6B]šÆ|ôèž eR,­·ë|Ö(a9›ü–,L]¢ÄcžÎ'½f÷"' ·ªi¨¶c¢2àš¦Uº¢Høg4êoÆöf«pÑÌú¬§K§–“„•×/Âmqˆv`z,1MÖƒ]ðÕò^ÈÁ¡`\ÓYTþÕ0 Æiø‰†‚ ÇÈÞÁ{ÉÌ #3;&œ|óÿµ{ü*§n²AtXÞ>vÿy&U'˜dùNÿ öþ#¡ZÂÿhq‚ mGàß÷Qú¦‡0sÍgÚrŠÃÅkžÀ§‡Z̘=T‰s2”Ì6‘Ô¬ê†Ë¿tq$F‹àÞ_ık™ù¬SSã…η Pˆx<2¯P¸œ¯nˆ§dDæ¢ù¢4Fí»jÎû.„ûbdceÎ ƒ¸ì–³B™V§]ΜC§E‘}åWVïc渴ùÙ{=,gPšá>šââù#;Å‚¬Ð?š#;›+k.ðú'U««gª{¿ÄÜó hvǬ§˜:5Ó*Cg•‚@^ó؇ˆ¹G ͨIŸˆìÿ×áþ«ºmg…¿Þª9jª®Ñ~RŸ}¤§sf´¥x²'¹î×…pbj]º4¸H…‹ÞWy¿í46›JåÊñ&ŸE-ƪÐbêh*ÀœÔAËÏeXÆÚ,J½>…AùŽ¨É °MÉý“C–*ÜQ.tÜ舀±ðð[7Ü/þ@ ¡;²-}z¬ZXÈÞJ}O-™:ú¬Ih>5‡'Gé ó7m—µS‡“šwy¬ßu‡ŸD{·Þu ‹f3^ò¶l⎿œ"×KEEë T&aï\l6S,tP¦ LuCÀ3ÿ´ÞŽbÝ×´PÇfÇ F«ÂŽwÇ„eeìø…Œä뼡ÆD É̦AÛ>ÂW•µ@ß%œÙ">Ae­®±Il®{¢È˜ÙXì¾)+%¬Bú¯šw× œ'NðÂÅgxñÿŠÅ¸°òD–o²Å˜Î¡§ÍÅÀòVh±:7æ‰âë—’›kºÑ”WvÉÝáO,9 ²ù!,ÐnÒDÛ­Âä{}æ=Ùá#HQ†)³ÝW$XE‡ô^Õa‘ø‡’s@‡ˆ5ê©ï1»,ñŽ«G‘Ô,6÷ƒ•ñpš\쪛©t6šú"É´‡7;¬*‰tz'QˆÉ€ßb °êŽ\Õ Ùeðê<®PÜG³‹çüÉĆèLÜc%CÏÇšpl¶ö&é­‹Ò[¢yumðUg2íÄ9Ý9³ýý‘åÀ°²Å¬‹7I(tdÅLÛò ‚zÝS:<þÉõ>©ën«Š‹Äj° FáÁaówœ“ê;›Ý`=°`–\Ï’eÙIšOSº³îImÊžiý×âåðú¬#IµfËðÀçÍL ´<þ‰ðËCY~0ßéæ®iˆÑómPÞ6R>êÇR³WáUŽ$ ’¤Æ‹€’(ne6£·ê.]z*Ãè¨?¸NB£c`¥Îñy,°š*ªq ªkð§O ”rüÖkˆjtFùU¦ëEgu­æl›QÙp¼G鯠ÜÊü9ðØJÀn9:Œ‡šÂ Á¨IÔ„ú°YaÃÕaC¶™ìÑÙÌà°è"*fÃyLfà50ºàF—=÷¾~¸x]5ÆËM¬apáÎNn›BŒZrh:¯b§ ᜊy¬e¸BÓËÑcFÓÍ5î8™:'‡1Þ¸^K$̦FŽóM­æ!£t×ø$ºz¦—bFY (–sNr°ûºìuXD2©Ùb,K<ælaG~YÚÞK:…ÎP6wÍ4ìš$[$EFðíS^×Xå„`‚×ðöXnïqw“š%¯&øh8L׈3”Ãq®ª^ø¡õÞ„÷wpŒÝ²%‰®²ÞÍJÉD —w^fK&]ŹÊãŲ#ϰõ\ ¯t1>-U.œï`!Ä¿ª²ãŒ\AwI4ù'¸?A‹Ì²ÑKò¨ˆÉ:Ûv;“5„ü,˜v#¬l¡š7Mñp渵õ6-J77õòOÂdÁ}"ßÕG¥¨YÞ-‘väf…XXœ0ã`⦻áwEìµ7:ÚV?‚ëåÑ=Î¥´‰ÜêªÁ}Ãz¬ kØ—]‚Ùʇ`æûÁ;z,8Ä4Ø!Òû)§EÂæ´Ù=£ ‚pÅ2…]׌XÂ|bjØ#%S_T9îu •ÂqGóâ-&†µï—S¡ÙHój¬ÝvNk»¸”÷Hçxûu]åŒAÝïYÑ{š‰=ÕUOE‰ÃF«IÄe*6Ãvÿµì–‚Òã{'» ¸ªÁ­´ðÒîe‡ÝŸ†PÞLTøv6Ô6å"ü:g$Ö7Š lx˜aö´‰Ú5\3 Ùh§Í^#Í_¼Æ­ÎÖcœ]5˜uOó*±MPõáoE®}WÉ <ÈÜ"c5ÆòoÕó»uèrŤøPh}EÍÃñq)túªëæÏ‡¤&ûÀ pÐuMŒ,3ÄF¥6ŵ¹ÓoúV#¨O§º’í ×à5·ýΉ‡ùÛô*\K¿ePæ”XîíÜÆð‡`3FÀy×ä½ÛÝôUJ)¥ý-?Ë”)Sê² =¶Z©ÿŠ>»¬.ó`5DWð…2&¶ܰ& .ÍËÚYWá0aä½£¾Ç•Ü>k¼µo7]‚öW³&¸ÅJ±Åkì³ ‡´ÖÌR¸\*g‘ú!ÜâfÖ8Í¿u€ât²îðpò8oU†1û,ØtWÀ§“:iõ³ˆkò;'™ÚÇÉwuµ€8‹“²–ãLG5¼´W­—-ÕÄîÀoôN“ê²"‡&I¸\…¼„òÊsq™6}ƒJÃ4·U$¸ko™X}Ôº3%L”:÷¨ä°o³®›ÜŒÌê›V1ä+´äIû,:Mœë7Ì/jy€Ü¤å? Á†eò\ODÒüAâÈBá%ÎÕ@w7IJ§ûÇrpܲ¾a¹f<üÖTðâÜ[•{¼Y[¬dˆdçhª‹Ý^©îýkÛÝØÊe{k[­:•‰…K,bcÜü»†ê°{™ðlµZÙaÒÖæý¨°q^Oì¸vi^ªÅö‚{k"¿ö#ëÅåd"*oú¦]ò_N³§@ÞW^Í ¾ó×-ÍÞ«°3nw)ôœn(ÄÙMðƒ‹&ªÇ3§eìíc¦LÞŸê›Ç†ê;ãj~°»Ç|&˹¾#rNÂ29\Äé?ÿžÌ7ÛX·Í2ìÉ]–åBlÔ(~tì‡Íf¡ X0~ŠM$Î o¤)~#+XLJ©³X›æƒ]‰T€Æ¹ßùìNpvtøOšîÝÝó2pWn…Í‚ˆ'"Ph>ò.XÕlHÎèŸÞà‡HwM—‹7ªÀÃmôõMÄÂ"ø`f#¢o8 ìQ€[ûµC{¶É¬XkXàFs)†Œœ~—y[EžÄMy™2ø‡˜Xnœq«¸e üBdµ¶D´ý Ä7"åK‰Ì?5X|ÜE“jÇ!­½NþŠˆ.à4>k—Š3•…ˆÜ\6Ý®¸hê½¢_‰IhŸN‹÷YK|G©XþìG½B.‘ Ì6Û*œn^öäɱ{¼CnŠž>.éã2:®æ§s²¸ËÉp`4WÈ)¹‘†Ñªà PlOU‰Í. ¦Ö,)mˆÉL×O¢ÄœGÌëöXýᨑ°]åa—¤ü•l<0ÿï5‰‡ÃÀ{ݫڡàÀ9|¿ª,sku'{ýÀðçdÌB훪x/<ÄþŠHßdê0ð‡ꣻÐ.'nL'ØoeøxW)®ðØfoš—ËxEêê‡pÇæã›¢Ây%þ®VðÓuµÂJâ{×½¯ÄíûǸÃj̦w 75’ß°sMÖ#}뉧PнNêáÚ£p™Pñ;@Œ( o¢‰EÖxµ<ß5~ˆ/DÖ’2v¡f© ì~${¬=…ªO‹ ž÷(¹X˜§»øóõ)¬öc˜-õ\pf¿‰`:ÂÖæAÑcX]ÁÙÿEío <Ü"OªÇg!s³ püYŽÈ“h˜]Û]þÙª™O{1‹åÁ®²Â®G΀? áSüЦr¦¸k <ãpºŠLÿ}Skžc2@Xf…¢5UiHÓtbL72c)D\ßqæ¹1/!`1Îåc²+ª®Ø5#‰sp°Ki/4™Ûªö–ÃöÛê±›Þ—±¹Øo»Íf]®¡øBÅwRt’š÷¾à†¾šPð½›[7—Í6ºÍ±YX§ä©s³M¬¿[SE…rj!«ÉæLቆô\D4‚asÿë9Ó€Kf¥ï)ö¬Ò-@F,6ZÒëG_Ø,0XZ¸XÓ¹H…9’çÛÑ èÓ˜ \ÌX¬:×L·óSóV™§¤¦—µâK©šŽÊoztjw’—yfCϳƒFœýUX‡)Ä2€Zf¸Í>®J9츙˜¨)týU5‹ ~‹$ÅöM 94°®‹=J¹ýš¬ÞV‹ðû5ù#NÇteÅô¿¤Úk¸?*×"¤fHÍbÃ-ŒÉòL´W Üîï wg Ò|ÖÆ,ÃÅ*)½U:iòBÁ³k¯u"s“¹áXýðõýSæ¶š~HËr´\=ãåy ìÏdîwÝÅK*Ð]Tm»„k ò z‹¸>/ ‹'qôè±Lµµêˆ †ÒÚS«`–è!å$Fêic/[µÉ5§@½Þ——êšo,Ô"ÂÆï¦6fŸïTÙ‰³ú…ÃÝŽVò¦ŸˆÝ= L¬¥ŸÎX—×U„qpÎiÒ7v˜Í5‡V£Äó=W²÷}ìñïuä°¸¨äŸÕ7«ðÊÃîá€ÒDÔ&œC¯~ÖN8x˜˜€µ¸ÒZ¬´z¢ãŽS½Ô €û#Q#Í\âb—8;T÷4· Ÿ7iÒ§³NÃú§8‹äÙÿñ¾CvB†ÏY§˜7•U¾ Ö ¦Å7ŒX9íܸ[¦ë‡“Ǫ똙:+¾‚@6”D1‚á>ÙDP-ä¸ðÀæÊÈ:·§2±¥ƒÅú&–— â¹ì´ƒé1#Õf¸XæÌy"@{&HÉ^DBmŸÃHB2M«¢tPìšrW8„»–ê±âç¼ú m«”¸ øª%àɦ®`ÃéÓ ¥Ô·‡dÓ…Ý5 ŒðŠ…‚¥áÆŸwdí^ý`¦×bÙø”ZV¹ÒVeZB›)ŒÔ®5OŒÉ诈§É]9¿ó´5F&Ϊ>‹>‰µÅ“C{ÇåµÔ5¯šAѼ\» 5?tøìã¾½<“(k8)ëÙC1 ´á¶âë •µQ¢Âîã”,,Hf±Ÿ’‡b[,f5Œ2æOš÷Ä6pÛ‡§’Æ÷×$z+žS ÕŒ;ÉÙp³]ãªÆ9¹§è°ñ-™ÎToHЄæ†G Oà “æ¿Š©±TÃIte|×´SÞδÞ^vRç1’í×¼#@3Bî"æÐ¢‚=Aý”|SuÂO*Ç´´¾«Ø‚©q`ºc[•ßcÕ>-}S™-8™ƒ·’™þoʵì›|9¨Ÿ…Á88ŽhVž\o¢Å;ˆ¡Hm§TÛÞqS£»âá1u%õF©¼FäÌÉV8¸3 ¯Œé dÕ¢Ûí2@©@‹Y¥ÊŠwXj EIîhoÔ)v#ïIÉÁ<á“=%c5ƒç9Xrstö1¯ËûÝ@ˆu*ÔIê uÍêÑT_bà4X•âhÍ12¨¬I 7’›æ¹ÝJ¥Íoá0OÙGðýú©W§c韲ôìÏdàçùtP‡-Ýä¤O*€*€ÙÍ^Qîâ‰X@`õ]Þ3dòÒ|º¬vVÆp1ªð"Žðìš*`K¦”ꆷÉ: û1êgYVµÖ ix=ÕBl»ÌgÌÑšosåÎÏÑb@Ó:ÊcŽ ÈÝ·áÌy9¯R££–G%'¯eÕŽ½™¨ºË³U¢ôê„~¨ÛsÛ0¸J%Æ3Ùj8Ž’•3™;öh³*Ї¯aYÕu굈[æ¿í‹]Ó´ú©PާU‰Æ¢õì…*§;Èܛ긞öÍÆ]/uܲ±;àÑP! !²+ýñVN꽤c°ÞB.6N Ò& æœËbÈpÔUŸ‘ÝÞ¤R´Vter¢Ìq·®¦¶MLw‡¢’KòÐúŒØ³e.~3Fhp”1F&pžÌMíV‰ Ã†hærÝaÒm# Œëá)¸Î;7„.öXÝÞ!å+Š»ƒWÙTj åOª.îô’xÍáÆi˜ÕC™ðjÓûvL"üYñÖ7UìÌ{_gb6ÍXÎÄ?š,¬KÙ+Þ>D¶+Tំ ˜Õbn.=dä¸_N[öi¶‹ ³Ë†ëŸ’}Aù-Ùí…]D­;%À}0V“táQÌl½ˆü– ¶‹ÑJÕg¢Ì­Pò„s'²`ºÊ®°^gÑ«U7ÝeÊËy£ û#7Ë~Ú›å› Ž|LMW³;"k²ak<:ú¬ hÏ'8m ƒ¸.Ùc—â ÍUMQÅâ\S¨¼, ÷âøªºá'DéÄ•@h¼ ™êŸ4ŠCt…[±-ÍáXìÄ¥†²r\³4ú.Fs3T œ‚i`d°Ë×»ÄB7`…\Xp¦9Åöùèµ÷&²éaeílÐ,œ)ÍÛ”òâ9‡†V i¦Þ&‘¥ÓhÙä´wúšo ­ñ Mï ÛÂ6BA³½P2ª“²âý×¼¯‡,Ñ:BhhØ’¿MÓ[‹€s„\æ´Î¹UGÚq/qÓ¢Ÿšm,ßR‰v#øpÑD™üKÝãµîïä²/™9«vBÐSØ‚¹Fw•t zaÖ’ H‹"‡d]Gf7`Jºš³ŽÈòB•Ö%ÕvjQ0ËVy£çÙ+EMdŨ·¬»¡ ýµáÏ-¬~Kñ1ŸyaÑCyŒ¾Žc¢asõÛ¢vîõS> ÚUx¸~¡pâÆp9óÍ2¾H4ìù˜] ”eîÀ™WÂgÀx걦l׿dIv‹¸³Ã.2‡tÐØÃ5E±_$;à9BihÎ6ýÑÈKœëùÙ8ïL@2¬2Ÿ²öjFµ³.©œ—­™7‡3Ön‰Ãc,¢ÆtOï\ãÂZ>á3šÄ6Ò¸q[o0›™0» yE¯|á°iüÅÍ BOdI†Cq5MÓÎc4A+Vc—cÈFI­q-’Û&šÏ)œ”@øb.µY¬Õ§ì‹ZÎíü“Ïš•3ü•†V Ñá#Éh´ìˆÜ,Öß4& Ђ}WœÔÌ,Ãn{4zƻɷӳõì¦>Êóª•=†pZòÎ/$ÙÄ$˜ õÑcÔÀxm°V­Ð€ŸÜ1¶¢š‘kæply¯8…Î0fÀ®ö)‡ uÍãyhN/ˆ?ʤž«!r©óè˜Â÷™k`cá»ê°ýã2Ô.7“ª‡Þe5Ó¤vZuEΜö„;†YŸÊ9vEËu) °;[ÁNk°ÿ½S*Äæ‘÷L¸ø°dƶ·ÏHO¦ySê$^…ÂY|'7qº‰'%¢äüÚ©73CÞ“Ÿ§c©Ý:;¶i¬ª{ÜG@œÇše÷R[§fyù"êí|ÂŒ6‡L€l7NÐØîQn§eªõN¾ÃEà•u0§³>ÒoØGe–—lšž‹Šyz¬‹VBÝè½UÁi!xI¬>n° fÂV)—èÞI|—}Üq9ÎÝpœ3vn¢Àñ'WË?e wyWEp0gA–“ÑošÏIX.œUžï™Ma7»h!Ñ1â­]ªƒØ 6n3)¶É>ŠG-0š×1 Òܪæ9NIô<ÙÁªc`¥Ï‰loÕ[›4§šáÓM@Ím±\`Xû'ªs«}©Ñ6°vóMy¼þá3»Æ@ºµ¥6ã#7\3ÙË÷X¦lS½é¿šÂ’Ó¢x„îI€€¿ÇrW.+¡¬l ZNcDîñçã:¬ZAÑâe@a3l¦=§*” û8b áyå«dì8Îu…†MW!Ç4ú)ˆú«¾«Å—`¼¯xpðO1·üSéR´Ñ|ÔÕ<[-û*‰½*hÒTöyŸá Vk-¿‡pšI: }TßE¢ñ6SΞK¹ä! VâÇ»-S`0=T¶;°Ò<Ê4‚AßUSprŸªw» |t)ÅØÕ´yèk l%cS„cÈ× Xvv›,nï–bœ“˜1÷X†Ùj³R±ïÈÑ’q )¦Ód»&Ì몱p¨uM­¬jÃc@‹êV eÍ jŸLxuRDÝX èšBËTk­²Ô{œAãÑ{OøŒŒ‡þŠk ~¡a€˜vÊó¶ˆ^í–ÚtL¬µN·&“êµeWY:_ü½GUݱ 5½ÞH`7lSÄ~©ÌÇÆÞ,„Åâ¨L•£ îõF¨ªÖWnˈba¸»I‡BlS”hžy\^hT#TxŒÌ5Y¯ÿÄ*!1AQaq‘¡± ÁÑáðñ0@PÿÚ?!þ‰“'ë?¢dþ‰ýsÿ´ýgë?I“&O韤ÿá2dÉ“'é?ªòŸÔÿTÿá2~“ÿ„É“úçë?úÏÖ~“'é?I“ô™2dýfL™2dÉÿíŸýgÿ‚dÉ“ÿŒýgôLŸÑ?¢dÉ“'õOþ“ôŸÿù'õÏÒdþ©“ÿÆÿøgÿ ÿì™2dþ™“ú'ôL™2~“'ôÌŸ×?¥ýþsÿÃ2ñŸ¬ÉúÏÒdþ™“'ÿ)ÿÊdý'ÿ–LýgôOÿ þ¹ý&LŸ¤ÉúOèŸÑ2~“ô™?ªdÿ÷ÏþõŸ¤ý&LŸÑ?¢DÉúL™2dý&L™2~³'ÿ…ÉÿÂõŸþ)ý3ô™?IúLŸ¤ÉúOÒdÉúÏÒ~“ô™?üÏé?I“ú'ÿ9ÿÎdþ¹“&OÒ~“&L™2dÉ“&L™2dÉ“&L™2dÉ“&OÒdÉ“ÿ¤þ©“ÿ„É“'ÿŽdþ¹“'ôL™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉÿÎøŸügé?IýS&LŸ¬É“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“'é?I“&L™2dý&OÒ~³&L™2ðŸ×2Lý&L™2dÉ“&L™2dÉ“&L™?DÉ“&L™2dÉ“ôÌ™2dÉ“&L™2dÉ“&L™?I“&L™2dÉ“&L™2dÉ“&L˜™2Lþ‰“&L™?I“'é2dÉ“&L˜2dÉýP™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“õŸ¤ý'ë2DÉ“õŸ¤ý&L™02`dÉ“ÿÕ?ÿÿŸ¦dÉ“&L™2dÉ“&LŸ¬É“'ôOÒdÉ“&L˜™2dÉýSõŸ¤É“&L™2dÉúL˜000É“ÿÛç3ôÌL™2dþ©úL™2dÉúOÒdÉ“&L˜™12dÉ“&L™2dÉ“&L™2dÉ“&L ™2`aúy²g¾ø{äôÿ*ÿ›‡Ñß¹·¼ø@Žº<ä‹c'ÎùGYD»¸ÞO[øÞHWAÛ€x߯ÿ¬9»íñŒï¾îuWÐï÷Àñ ˜˜ù7ŒÿFRåÊdÛ¾ ž»æ<=˜%‚ŸÄá—¬¤°ÿE‘Ã/åg’_w7Ã8´`xÞÂÞdý&L™2dɉ“&L™2dý&L™2dÉ“&L™2`dýcô̱ىx÷‘ïò.ýbµÇM‡ ƒCsyd¤Ôrdɉ“&L™2dÉ“&L™2dÉ“&2~‘“c®ÏŸ¥&•5yßœÙt¥½î¸6NGœ›Ý8Â*ü7üç~Ã÷¾>0H¬«s‡¬º Õü¸P-ß©›‚šEïÎ;’(q“pMœ3Kð^ýæÍâ©/x±Â~I†7>!Ö¼ç5BW³¼n^ZŸ/Ÿ¬ÌkztþsKj,þÿŒ „Þ\j¿¶Xë$Àm ãÊýu•i”w˜ªí*¿ÎVª°?.AÊ&süæhk'.Zhàþ5Џ`,õã€ébzårE¿'ŒaìšOXç¬h%8Õ1ö1W›ã)®Pêo¼5œÑVþÙn/Iéã ‹D ŠöûžO¸*=xÆ!€×óƒqPÝá;éçÖGe  _'\?¾ï¼ÜÊY>p#–R«_ãƒã¸ ²+Û¤Á›P~t ¿n.ǰ™£çƒ¯Š01âe¥tú8$í.³óÞ‚^:ôÂ[¨Ñ}äQÚÍ^óZæCŸ¦jµ=ü¹Ùíɉ‰“&LOÒdý&L™2dÉ“ô†2dý$_;¿sã<|HƆçNKKL0\vi>ðÎä·ùà ï2TQû`Ó@ Àð`)Q8ûɈú“ßǼw7õ§‡ŽðÎÏÆ%·dާ¬¼X6Ÿ}ã¶¢åð_ðcC%Ä /9„{MϼG¬q/$utà&ìÅÔÉ«Î%Öú}8šŒ>üF¶±ûßþå>á©|`³¥~¾Íê:³äÉè6#ü¼`®A'}°$JRÛ¼TçrÖÒNò9”qìÇdÅkˆ¯»Ä=˜«Tp¼âq8:3µfÇwÚ&¸á_÷œ„U6“‡í‰ i°ax¯Œ{öDïƒK³ÃçYf°ú=fàA¡Öñm×–dikbeÆGtåõŽS»gý¹õ‚ÿ9±k…Áé“ÏûÆûàÑÍÅÄ¢}øÀMØðëÆûÁÄìúdD¡¾™ âùË©Ëe>ÌÙÜl-ßœòY«ûãmD\LL™2bdÄɉúLŸ¤É“&3x~œÉ“"R®èˆüÿ™ôòúaW”±ñ‰KC¬“ÆŒ91D°ØÝÞG„ ™D«>Ã¢Š°5‡É6Ì’HI×®ÿìÖç‹kÔâqÑ–ñÑo¡þ ÔIjðÀû!¼öpZ×Ë“J‡šãª"RöÙ1[þ ฦÝ;fÜÜã'7|ë<9!ùãü`Š#jq0$ˆòÌ;&ÜtE¬‡À%ÑÀøåÅÈç;°Ô¢Âù߬95!äåèUýÍbŸˆ«ç¬~FNÖkuýñݤà|zÅu}-ûë¦rôþLä—nø`½R—¿ŒÒ©!Ï ñI²]PÓ°E;ì12bbdɉ“&L™?ªÆL™0`ÈÆÔ¶2a“‡ÂÑŒwÂùÍýìkþ¸4¬ÌS’‹6„Þú7¼ý¡B\uà¬Öü‹Zø`Z|ÁÁ6ÏÛ]Iÿ|q ´3\ï›ZÔñ–v²p0I-ª³o[Îî…³‡ uÐâ®M¶81¾AOôë ÷D¤³Œ%viê»ÇÝ«Oë*Oê’ã2wE[¯+÷'ØòÀ•æþ|à]Ãß¼DQÜG?œÖ9Rö\æŒV8ÂI÷øõ“'ßÎ2QF£¼°+?PÀ À8éa_ûÞB…d\ZV[¿}yÂ{ãOÃ}a“t‚Ì)Ì¡ùpƒ²£„ìHcQF6q%vA7ûqz'ùÝcÒ©– ïØx.¶À‘àÇëåÞ½bw|¯y=X€³×ûƳZç}àÔVox¼g‚c®ÏyôpÁ®é§.$o¥¼ßœ˜˜™2dÄɉ“ÿi™•:påy¥t¤ÚÁ¡ê±µw³…\Õ?›Œåc qÇX%JoŸâc]j_8Ž ^õ€ï¨ >œ¸tá ^ºùÎbܰ¨Y­l#¼¶|ëç7¹Þ<h¯ÁÃï#›Fò÷fÁã\üc¥„®ùÓrܱ«gñ’KYo_ØÖoÅH¿»ôž„3gš5€ÓÇ­{ÞáIÀ”Í‹ ÌÕÃ3ÞuܾŸvöÊ~j¡íË¥ùáœ.É>^rª¢F?X¬Lü¢ýcdÔ¸ñ¼,´š˜˜7o|0ŽÓ“S&kbÓÝã€\›/Û·?çãMëé‡Å!®M§ó¼œaµÅX¯.t¶GÈ=ðžñŽ[ë4rQß·u>ñ‡PÖ!Ä„Ÿã•Ø*e]jñ•õ»üŸçµøÉÔæ]8‚6‰ÇNMà}OŒÍq€’§Ç¬H¾óŸƱKKñ“&&L˜™?¤LŸ§07 ä‹PL|ÌÝ\x|xÅGÿ+šEW.ñTtïÆ%d­58wb@•-T§ËÎ?«UzîN bø TEãÜÄ«·ÿ–ÒªíÙ‡9D7ßÿÐü}cœ d&ðT1÷¡–VNÏ&>Š€?ïyQ&èqYj€tÏíŠú°98qLZŠñÞ @†.ÓžøÃŸ³¢}Ìöœc„²s;â6žß^Âík⨱9*o.‰·=ÚÃéŽK×ç/:|c^Üøwˆ òN­ÿœ=ét{qû`X¶‡/ß!Ó`y{ï,o‚¾Ø ‡-çëtÐB‡‡‡¼¤Y-»—F±»wRÚO#Åw—Yɺ·´­‡Ïyº )ÕX§ª~î &‹ôíó”‘ §}àËžSŒP .ÎÑ^lÈhk`{ºÅ¨ãÏ·6ø+W”–˜¾ÓÃ9'pûåü`:›´ê?& {]@½` ¥Í® »A‰ë nåpÓ¹á9«ÛpâEÑâ6ÒÚKÇûÁC©$ÝÄxêb|ÊÐyôâ]¤`Ü]ÜÁ?±Æ¿î½.ÿ'®²¾ì@Þµ“&&'èäþŸ ™2a»RoAþržûõŠ•ŽOW Ý´Û}±40šù|4()/X˜60ëά]ãO’òYþðLçòüfèКçÃ*¼3MDŠz\#—*yí©÷p¼ŽDõq6tFžÜã¬âã nMà©E>ð|hë Ç4}ΟœØØËgwÈa‘ßüä€]Ë'9ì*> äsô¡ùç»Wฃ7 Âãí¢ ÌïüåJ¸+èëÖð+?CêýÿÍÉ9eF|¾°R#@ÚC ÐR:¬7Î0.71+.Xé/Á|RìÁ:›ñ’â 1³žÇ[ÿ8=Jº'ÓÖÍ7ô|e†ëMmç —ß§g¼@]•Oóòž·¼4AÀ§çÙŽŽ/ýñŠêrëñ–D$áÖn… ©/n[ìø˰nnúÈ}½ñì½¼uŽkwçxÈòƒIOoŸŒS'“¡^Š#Áçd–QŸ†.„µ†³º¯[ÁŸy=¸˜Ë0p)pÊ|àyÊ[Õ›ϧP†”Ëɨž°aEy¸ó (þ/ß*ʿـæ-ãÁ'“ãªuã¬LLLLLOÑþž~—®/Æq†?/X§%¯{8y“ߎñËù2öc%‡6høäƃF² 6|\N\T“|œ­²âº˜öæÑÝø¿X%ºÄqSÐ ë ‹=üb\4«WÖÝÙþ1 ;˜e»ãư3qZôøÅî)þß8é(ŽÏŒUŒ+É4wó‹…e+IIÎ!n`œm¼U,‚™ pC|ÉL‘”«?ã£5òCåpžØÃ>ñÝEëç 1²îy]®vZcÛ¯ã$NkϼŸ 'åTüaT¡ìc2ë™èÊAâõ–@P£['WÎ_2iŒèüh˜:t¾LDî%Í ›B8Ó¨]^¡‡ÁÕ.@‚Uüa ¿VHC9rú)óÃO3´r÷Œ בù—/ðÖbýæÎ̓Î9ƘQÀKÜœcn#Ê`’‡_8“•í‚ÀtÀ<:cB¦ÀûÜGC60ëÉBÍz2º^óXsë{ÍjQ­a€´eÇR²PYõ¯‹ò¦T4 õœ6Ú]þ8J¹ÌwöÔÄÐ)tïx«ánÅ”~_9Í«xüàSk?ä8ÞsnJ]«Æ(ÜNœ#©E‘XqÉB’%)ðøÈЀ›‡ç‰| ‡8ûGŒ)÷¼aêËâb¯H¾5Æ+:qB1ÙÞ#ÚCýÏÚã5›ô’¿ÎL˜™112`úsu» g [Íë8Ȥ_ä×8Ty­oã!PW`O†²ùĺ~q—=6‰Œ´éÖoײ?ë7Òa«Ö«Î:îÍÞçEÄ¢i ‡ûÀ‚¢°]^Þ±‰Ø8_®Ü^£K}¿¶.ÒÂÝa5&išf;;ÿ÷¡ÓEža<|[Z<~ø@Ú|vù>ÌÞò­ž0w1‡"òøº03Ðñ°Íéá¤:váóSzg.XÅwíââšNGÇ_8—Ò£ª;L¸+RüøÍÀ‹/‹Ï²a’†æ±×ž?çŒqÂq=ý}à±tÇSˆ6†þ88¿·]eºØëÀ÷ï SA.³ùÂ*Àðà ¾6Può÷“}Þ†Êq–ÊÞ}L–»´žî¾{Ö/µ·Tèųs¨ßËç ‚Nï^f ©¢ÅǨÆ6¯>æ$IZÔõç©E<ËMÞ°¸¦šžúó›”ÀO\|?ß c}5qšt Ñ¡/:\uŽM~øîñl68<ÏV÷Éa1}"ôKü013&öYØï §§ÃÃ$ÞÚ Y²äÓµßçÐÛ%˯â‘}än£?l£Ó›_yûJ˜þÙ{Ü IæÇ¹œËCŒò“™{ƘýZÎķӞǜ֕Êí†"ÔCSÞT'|9ĵÔâwþ±÷S×þaUºÅÞöäɉ‰‰Žf­¸F.¨t²à=ÓÞ¾™ÕaܔΎ1Züuõãr«ºÿƒ¡xSãšúOÆ9‰’öoƒÎ"×q¯S¥Žhñᅵ,]CUZw‹œPvô|yï×àñð9)VŸûŒë7î÷’– #Àõ!Þ¿“ÆK¼?3W8OÄqýâäíÏN±T_#çeÅUö—Ûây?lOJˆ&ƒŸ—Æ!:͵ü¡×ß›ˆ<ï$ùpUC@¾ Ù«y~¸šùÈ}²Å×–ð&Ǫ°¼ñ}cVܯÕÀ l†÷»r`5Px{ûËÊÔLˆ™C¿¾3jN¿8’m¦lÿ|`ü‹¯MåÞúB°fÿ]¼²îþàq” ºxñë Ó kO‰†þUá›B†©yÄטÐrtüg'2•kŸ¶RP¶¡ßÖª9µö“G‡6(&4ž0 ;xsÂ!­é?Æ<¢~=?905x†YÉý85[ç˧‹wtF˜‘Ìš2oŒzÜ gn;6ݺs‘9©"]øøÃÕÖ£ã¬w,:ßùÍY3ŸøÃcP ­†ñ7ÉŠLJG§YŠ‹Û^Y;´£»8Á h÷âà¦evÝâŸÅàúÁzqÇ–ðÎ7g6ïß2=Ôt8%™WóãCn,Ÿ¨àa'é“Þ ¾?»“&&&LL˜¢õ ']¸¤Þ&˜ÿÆAÀ×âfø¥¾a÷ãÀ#Òeë­°aß«”Ôa›½÷¯=k7 Ø×SΡhK§mâÚT£³"2òΑë§EA=ê9‘7צ£×Þ[kzÁmùÉ8÷Þâž5þpnìDMW" V3™¹¯-ûs„Žþ,zãÞ'46±ìÂt¼þ‡×YÚeÅ0ôøÁcÛÇô†í´gÏ倱–œÖZ•ug¤ã&&úÛmç¶–*”÷ߎüã]êvöÖqZ:Î^¹øÄ…uU?oóFoiùÆÓª×ŸŒSá©nþ¸ÂžuSi㋌’éªc Ëæx㓼OSƒÇ<ú˸¤Û¼ Ä„UØõàqí|8Š¿ì0Â¥¼?ïæöMSÎm¬ëNò\! ÿšÎ7Î@#¬D%CG·'œ†^×y¹šÐ;ë"„˜hn,˜(‚–>¹b¡!å0‹jßÅ—É…mðGÅ54rLÓ H`%¦‹Ll|ƒƒéë' ŽÛË ¡Åç¸ïœçÊ!\àìB½ìã‹(â7Ë£™‹šmÔÊ·¿ãÐn^ù˜*ØV?Œ»ñ¬ zâ°qŽIä:ïD¿—Æ[¦yxPƒ|¾p^ÙºÝ'Bc§@hg,Týpe=Îów»Cüw§”÷`BJzLŸ]xûñ‚Ñ†Ž¯ŒgY115‰‰“yF'¾ÌÕšïÎÒ52{‡rÔ„‡œÐÛ`®ûXŠl:OÔÈËî®;/ÂäÕzªã_Þmd³ÇŒã{­-:802 ÜËÄfhÿG¾eìy™ÂÖ9xà-»^»>gEšõŽ¥)p×u"¹³œ@ŸX*Œû_¬Ô¡¾Z—Ž2oMe¡Ë®rKª¡ªÙN1Cýß²(ü½`—ÂO<£Œ­Â°Ù­äT_ ?[ïÖº &× übò„߇–á’…+Üö\ЭÁ,|ýe'àÜÙ®–¬õw³SZ~s«N5›ã™tƒå_ë<[ú_~°šKðß^Œ’P<ãóNXŽÂDÃéu˜Ñ+Ÿ9­‘íÌ£nçü1ŒlÛcfSÉÖì¥>_92RÊ9˜Vxêý þ1«H*Æo8ãÑ×ùÂcz­a7¿ñœ§Ltý÷„6mB7Û˜`zмý;ÆlÖâøj‰0£…$ž/x˜DO{Á5ѡۑäN¢}°˜w,N|>ÎÌ®$– Ça­ßxbëd_ßÉ©£8ãä9S4…tL¹‘5>°Ô“TPæ†Ñã4,t?úãL¥£¹F¼ËTSŽXT»Í\¿áƒËÆ>1oÅbÜ ¶gnš«Y¬Û;†ÚQ²Æ×—á×Önöâ4{Ȱ#6^G¯ã–¬ýß,TVgJ¾ž&<ÕÓùÇŸ<4FìúÃöÃÇ!ÖWɵ•]ÏËåÆMDTȈÔ¯fæã¡>ÎP ãÙ¯XÌ¿Ós4ÞvoÂ8WzkÆ1bºyó?8Q™Ã}àG5Ø~YX§‡Öª<øÖþ°“~kÎ!Eà üœEZ–J‚?Íñ„µ”ExRKY¯*âýc¸ÁC£ÊÿYܨÝžqÁ¨7ÿ'ñ‘ë–ñ¢wæ`Ìzñ«¾¿Æ'–¾ñhÖÞk©HãzÈoOÒåý$AÒëñ…£ª„ž_x1± Ž{1hbó2Z/¬²Mp|z|L»5>.3]ñ7Nó•‘øÇ 0¤ÄIaV³¼`,JàïÇxK•Nýaµ­Uµß'ãu„ ÿîõÀׇçy¶ûF?“)åQgÜóš¾7ç|>0ݾÍ*Ì`Ë­'—ÖR%ÛJxóŽ2îuòu‘©9ý-¼X³È£®·‚£Gè|àŸ 'å}åÌZÊläÎ0ÌÙžž0”ënÿ Lçï ÊôÝÇŽ¾spè!)9ò¹;¼ð5ÂóD2ýL„-ÈoÔö¸ytº¿Ç8¨Ù?Ù„W›CŒÙl½·—¹”bÜ3LWçâ2yÉú å¾í"³kÆ8¥ÏŒ^w\³ÕŒC‰dxÅPÙ@ãž íXÞ(£Æ¦}>?íç)îgÁŽc&»­Ju‚½u7ô|yÉÑ  ‡§¯x­6zýñX[‚¿Å›û‚Š~ÞpûT<»Àã`Ÿï¢ÉÿšÃw¿?¶WÛ0NŸÎ ‰¦vàù¸4%bfÖ ëNß&;ãynºל§Ž£ƊPàGè·U×y¾øÈWýó›(ݽÎ3x£I¹Þð}û³\Ÿœ#½*è—rbB ´íu¯ÛWÝo~¼ÔŠe¼¯ÌÄv…ŸaåøsŸ1Uñ¿qˆf!¾8Èìè?o¿8è‘€sÝÆ¾]¼bD„«1·`(ú¶Ô~zýßÑßÓÚ?™†Y­|å õÒ8½–NìcU¨)Òô÷/ÆCo¹ŸïFrRoãò×ñˆG“aýµ‡–tŸxëH-žþ0*s_ɇyÿ¬™CŸ>ˆ™7/·ýã÷{ÐÛÙ9áÅ%ÚúËšbXwûGQ’/‰r„ˆ•;yÄìRº/?îqщ„÷Aó’Á4¬šñž¿Úy¹:gx'H;ÏÆCT1b×¶5,z!SçúÓÅÊž=bMMÒ=Ÿ}â i[ÒvºûÄ÷,,ÔCmÆê”Þ™‚R±ßpÍûËD¯˜qHÀ÷Æ ÆÂè[åøæ~n!âjÉkÏí†sÖ/î20¤‚6½¸à/Üúsñ’Š­.gûÍ:C³£Ç´Àì0ìòÑzE\Žv:à I ¿ŒEº7r¡Pk » ÿ9Ánì“b…¥˜ t¶ùäÊó3—¸Ðbïõ ÏúÀ4s’ÏP¾0ªr1 a€X­?žrkËÄ}\8ûüûsó€{B¾Ã[29x•`M^Œ0×"8…Çñ’'Èã‹Âœô¹GsS\›³³orª{—$ÐSâ=Öºéyî¯Ã‡šºsG2:läþrFâþIß~òW»Q?/¦âÿ&ÕŸŒ&Ä5æëŒ‚"BÃg|à>Ët†>ñ|æé/™ï ¬º¹ŸÑSÑݺÿÜ]q䜸<”AÎ[n6ÒÖ‰¼ ð ºûßü3–ë¾\$¸´p$§@•…aU¼myÆÉGK5}ÿŒZÜί ×¼Ñï!e~ÿ¾üÈýÜâ¹@…ô¯šÁ8^6ž»Þ2K›–Á½o.6+óóõ–¯©ó^?¹gæ|õ¼E?“{º·^Œ=’`$_.OúeQü ›=x"ÎÄ ÃeÇvÄ8¦“áe‚¹{õŒzÍq¾2œ™Á¨ïÃѬ^bu«0ÂWßt×8NH#bßöb;^%<'Ç$`´EŸyÚÔ=ãeÈP¢;;ü :.øË(øƒû`·hž>'œ4|qÞ¦48Þ±…Rlιþ}æíèF¯QøÇãVÀ;}°Ó˜^ba̺à%׌wV '=aWį^0–‹$áû;©Wíœ*ªþø¢ç£ÎôX¾¸ÀS1Rxêy~°ˆX Ûüdñ3uìqØõqg°¤$r =Â`•ÍQÓùaòüye¾ÜãéÔ§Vñz|\7‘þ0fCÅIýü Ï;¨¼BxÀÙÝwÿ«ZZFÞ<ñš;*_Y§« UmÂüg(Í[‡ë¬Šwš//ÃZœöoŒ+á léó…ñÆR7’ÏÛÌ©ä.ãþ™{nÖ¾òÛ"4Zò÷Å žïœ’kM}MÔ¬ÿ¶fôóA¿×Ç#´"ˆø½åþã\ â»ðñ‚Gy†ç^¿Œ®Š“òáõ†¥FÊ ãï|ávàƒÌêù—‘°9Fø7¼«êïÖ9º)ª¼É‚¤¥TÞ«ã5Äý1Ù§'—Þ®š§Œµ6'¥uõ®°áéFœÍž|a¥ÔSX?ç9,‘Üû1®yBºokøÅRà ½ðå±¥DúãW)ÿŸ”MPÀx=d€×B‘Û÷ñ€á(,áþ}ëûì+¹ûáeüˆlsm'Á•ŽëÃÏš’Æ·ˆ¨o ïÝ9.n-#wzí„âk«zw® 9¾Øä9œ]ü4ayìöñˆ~hB.p™]&·[à­ÙÔùìËÐÑnõãùŽËAS€÷0 ý%Žv‡Së·wѬBÍ"¹á¼¨µüÞ½>òÁæ÷`žñùóÂù;ƪÊ01ï¼¢1lˆ½yã¼#{M®)Nö ¹ÅxÕM+Ö-¯Õy¬+°ÑG>\ñ„ØÃ_†ð­à±­lïÉj/Ê^ÂÁe”n¾ºÁª¥/ÅÁ¾ö×·^1ϳóŠ5I¬½àHïóˆ­,2`†’ ÅóÐß wÓ6;›QßѧÞ•-7Ìç&Å=§\åØÀ?=¸6TáC9wüdªL²5Ó¾Îó\"ãóñ†SÜÎÿ¿enž2¸ë°—ò<âú%Ï)åÍl)àA{ÎÞë_=ïmDzQ£ß6½:Á÷Á&6q³ç%œHgxþøÌEAþbè¶ù®>q¸9w!Àÿ“„É$íºïŸbi‰ÿ`gÕwÿ:0é týœaìf¼½öai“/“ÇÆ)[˜^N0`\¦è·=7ãèC–š:A'«ÂúÂÝ¡/Ë…ßÎO øYü¼ÓŽ$à7‰€kÍøSç¾0WÊ;ûã ©îä†$ä>_x˜ni}ÍpQ£»DÒ{ñÔÇa2ƒÅë&LhLwp„ ^E«ÑŽHÄhYí׬WüQ!äúV~&CÉH“Gó¬â¾Téë eíŽß~©‡ÎïÆ ­Xîð©x^qª­P[ÿ:Î?áC„8­U°øN…ñÆ@`¼Z±§ç(wW·ô0!ßrXÊOŒà9²XÏ9˜®up¼G…÷׿XÊô˜*ptó…óÉã ú† ï„Ë‹¶Ã·Þ: FŸ(‚!dõú\7V™÷ïãÎ ¶¡9pX«5ÓÞp’P·76ÖÁ5^&(š…~\ o7ëÃ-F)nÓO¼tH"»#zrúÑ éͤïÖùÇùJõ¬a$@õŠ)ë±æÖð…I(8úǦˆv´×'ýqßs~²\ÐÑq<å“ C5ÑŽkGµ¸:Ú0?ÎQ'-pvøÖA½t®ß+çöÊ]Ï O1Œó£O,n–â©ù°}ÆÖ2rÄ[»P¼l~f%ËŠîÔ®$5í,ÚO®.ÒĘ{0 °õd`<™õ×»ávâ¦é!£ˆeÁÔ%зG ñŒX:Zþ‚û³GÃñƒÔÕr˜MX(î¿väð'}fÍ4šóàrß‹‡_—X€ÈÝ,ÜÀ}½ë<:ÜÜá9Ö!F‡AóŒÛK¸-xñ’£¤‚µvNÑò†7hÖû¹T?”ÉöFe¬©´y^î€á鿬Lª¡¹÷óÖqüDö[ݨ¤¶]¹ß0±·o¼Ðöó­ž_8 nH„ë¬fž2mÚ'ÃbïkÙ-<¹¸²<€=¤üL!mJË Æ•oGX¿Ã´^¿ÞùÕëÐï®9ç!ýh ŒÞ·¶˜F¤L¾´òý!tq…Vó[Ãg¹7œŸ`‡§¼õ:ýâ'=Wf® *‘ÕÔ<â1gD×î0x¨!]vDÔä™k_ã„ú[ìgóŒe@&lÑîYñ‚Èâç“Îlúev÷'œ»}cƾ~à4à¿f§a^,м†üúó(zÈúXÉþÞI­®2+í€Ôí1vÂ:»×ï+¡©üN&(žbúøN1®:›àÆZ}ðå“çšm×/ãñ‘„c‡þ±—‚M#ºIûäæl…äµµÄM ¯Éýñ#§aç¿4³/XâÆÝ¿Ãã^… ïËc/]ç"d—¿9A÷¾¿¶+kÍ–ŸsI`Û£á÷†íÎ,fG?÷IAÚú“&ׯivÖóλýðl:¸»ô»×àyüó€ÏŠï\òןXËœµiÖŒµiJ7@ñƒGm¦÷Sxj5β»“ÆìíêñéÛ@ygÎð‚ì¥x×)Þ d®“<Dë–ÁOŸ×ÍPì ©´òûÏ ë}áše¢«ÁÙ8'÷Âó&£ÉƺLR2 žÏå„—1» ÕróøÄÜNƒçO ¦{ü\9um¼|>â:Ü„¿^sM;»T98"'[3€÷›[Dz¡ìyʯ]¢ü‡I†åÂ÷ÏÐçãorí&˜G|¿¶ .¯Ñ÷’W]o²Ox>›\~$õ“ÊtPêC¾2·NÕœ$žqÙºÖ¼{obÔ²0ý~²˜{6QÖ»ž±PIOÃ\üå@‰ ø—Ÿ£ÍAì8#^-~<dz7ÇFöI÷u‘:gvîkcîãp| ]þ|¹7µß6Ië¬'|¸¿Ûº‹.Ú×—ã^ Nt>9~ï?ÃÀpàc·±ë÷Ù¹êà¸ʺÃfâÜò?Ë/<¶ާœúk¬éöÁ‘(ÅèïxÀ£ø÷}Þc^XO«ÃÞ6·†Rö¾=ãøã‹ƒý̆`&¡?$š"ÓÆÚ×ç.è¶Ždà¾Ïymy^+,·…N-·¶UJðõñ矰¾uˆ¸è 0yx¼z˜îÚ…]aº2¦ŸëŒ¦X£=hžø1Oô®ªõ;œâ\h¨\X¡o 7ÅU2š¾pµµ(pXÔêiñ†Új„š4Þ0j1kˆ¦¥:ç©rWQ&Æ(ûs}}áÿŠœã¹­ñÇÆ=áI7—×$'_ZÄ`ƒ¼}epQåKôy|{Å>¤)ÖŸœ8J”öxç»]¾s†ø‹Ì.»Æ|wf„ú“œEôMöµðÖ9Ž07óv߯ΚéøyÊ1sÍÅ:Æãy ºJ+qdÜîoÓã·Á~_p¥ß‡€\ߔյæ&tƒ¸ºéŽœm-÷DZ˜.2rÝÐu… í@ãŽkÙˆ'¸ñu€ÏEŸÏzÆ©Š­æ®§Xê«çÇ?Œe”;¬ÁÀu.ÍÌXÐF÷†ç´n•6˜µù£w­º<÷s{5éOcÏ ÐGL¾[Ö±…±/Fèù˜ÓßΫ™B?kˆ>ï¯8´½KL—æ& Û¨çÑ?雿!Ã[Æu僻pyû˜ÁÐtùñ»Žkåøð}d¬qBÚöκV6M§Œ ÷€ÛÕߨůïof´ûá&ÎåW¬’ïS윛þ1Hû ×ðÿ|m E£óÂÛRwÇ=c‚ò–þÂN1ÄÙS¿FÏy +,zúÄJÈW™âï—8i·eâf•˜mAkû`´–³“Ùó›hpíþü:ÎpˆD­Ý1Z1B©Ç’ãÏΚ¯ÑñÄùΊÊr»5¥0dË÷8J%T¥ßC]àeÅð^Èæ˜#·~ùNj[@Þµ‰ÌR¿„®]&]¿Üæ…Õ*rúæ(ä}ç7U·ÓÙPè°4Ù»˜ƒsXYGOj±IÄã~xÀTZŒ}‹ÃxÃéÔ>ÿóÜHWo&ÐÅëtuQÂâ0úr¥¡Íùu޾\„»÷èÖ¹… ±Ç­ùÍ,tS%ªù=L«øª ïÌ»ª«ŸÇ÷ÆÑ(”7æŽ7ôã/Á‹ÕgÎ5_šwùxKÝã ‡þøÍh¨ûkXÕqêéÃý°¦°pTαNó't|¶æÇ]hjáO“ßœˆ3'Èô‡vaÏ»ª=n<äÔÕUüìÞ° «/>3eä {Ziu¬tþÅev¾û1Z¾2ø˜¿ç,ë×X%Úví¸®1½—éÀ’¬=)[M.I¿†jFƒï— wµ¯‘r»Pöq¼:¶CÞ"*ÞÏíó“Žõ½ƒãÇ8¶¾=ëxÓ¾KNKøÍmè‹w×Ƴ—ëlA“X0=zî!£}æµÜ}1áw¼M^¨nÚÓË«š•¯S°£§ó”ÊPXŸ_X-ÿ/ø&·!]~?9pœaB{áÆµÃœ¯Ë£jì˜'@,9_?%òjkZóŽÆÝ4‹™à™-xäAÖÕ6ëŒAã`凑ëkÑïOÆQ ßzÄ+nDã]æç„‚Dj“¬ ¡@¼¿ó¨‰à¦-J$ÑŸÛe ‚uÙ†gE׳W¬¢pâ“àçžN¯â©óŽû5ÞWÉÚ©ó¼‡çæ¿9wÜVv¶SÓ––Ú ÷\]ÓÝ[}>1§›á&mi¸\߬»%µòüfê‰×Û†¯rµÖ2ÃRŸÍÀ•Pj·¤ÍÀõÀ×ÏXŠ>Éöþ1¬kÀÐßñ–Ѽ1ûon [4gæM‡=³?šrÕàŸ¹…îÕg/äÊhxã,al‚®Óa0€B¸ž1gß¼+zø©ö _ç ý²²r_8Þ"mXñqà§}qza¼%×a—É :4°ŸWÏœ|ïëly·ÎSƒ¯c4dž´q²£ªíü¸Ø°òVvùjD[óâà™êƒ^hÝÛŽžѪî¹cx|übóßxý\†:šO[Èë‘ÆNaY’–ÐÔ]Ì]ÛYïñë,±¯ªfçe ãǺ?XšÃŸaË89nÜ¥ñÏÎh®!:jó†Ñ¦ ¶oÝ>ºµ—ö½ï‹Æ“xþ\ó7ãõvµ4çX ô·Ç¬êt[¯Û žoL;ð³óš¡ÝS^j}ùÇhp{Ûóüe×°¹®zc<ݸ Aƒ¸noŒ4KIMμ‹dM޼dóÛÜàñƒ¢tS·ªdïÿr}ÛG?ýò4r¹{ºó aÐÍß^ù5&eÊ/×뛿’õ†$°Ç»Þ%€¾o?¤¤±jÚ6žëp·d<ëö¸x]%aOuÓ 5õ‚kVµ ê=|„S£Ÿ¼# :šÂžÉ aÑ.ñÄ£¿ž¶ár룷ܰiØóæâœZ6•:^}àŽ}UàŸçï­Kx™ïCObH~r zª~Ø}p÷õ yp|ˆïû·^0Úé.´v9CÔßZÀÕ§¢È—áß.-Õç.:ÑùpôÅßÕ~÷ñ‚mˆ°ÏãñŒ|ô#>vïWƒžqè»r=ðkLÜR‡£5úîM-GÀ~ro>è+¦®\ÜÕõŽŽLJoµü½à<¦ÃG»16”A_ùLH€©Ø¼Œ«±¾°p¤2ú5ãdœŠ³œ E{ñ›`SÇXŽ$Ú&ýfÝÕEƒu÷Ë›ÕSd¶_y$C¼º?ß¾uE;ïÆ9kcÈž1Óieê´“yÀDÙw_¶5\0ýð2iÎïï\Ý7»w¤éåÉÁ©9Ýj¹“ O6¿7ë×Hó„‚Ä?ÃÉ|ðïYj’†Wø;ÚË¥ti>‹üæé”ã¾eU¼k¯œ#†ð½u¼ÞúqZðd3ã÷ËxùÄ›[w!|ŠûüçE;ýüb¸+ô®3q•A–5§Œ`xð8Ø…c_œ7B¥ _ÛŒ}.ÒÔ?ÅÅxÅGW^²hÁ‹¾~uüáÂ^'ãN¨^:`LJzöŇšæžzÁÒuù7ã'K™1©Â×N~1¾‹_¿ øÛ8t¶Ä»äÃfS¼„¯SÆi8sð[uŽËRÎ<1#Soc/\ØPº¼À‡ –¼|;Èù³¶–xõÖBF§KV‡÷ó•½@Óyk±ve*ÀXhñv>L”º-Á8ÎEØ]Zr{¸½Vºµtüá©»/°ü¸ÆƒÑéO™÷ŠSuj·~=e}ã?ßÖjX ÇÏwƒ/lµ¥_lgFÖ ÎÔWød(ë«6z1Óøããwo+!AiGhƒõç!yg ÆUÓÿ|â˜sù‡Î^ù®NßœRW8§É‹UÓ­ÚZWøÅ2‚_áеý±;ÛE–ÔŸN¹ ZØ^“6!6Âáãߌ.`9_´7€9x´1Àô¹sÂ=}b§ð‹ ]8~,uœŸôåqEMè©×ãÕ›ðpþp @)·Ñæ8OÜÅBþrK|2™—\h|ÇÖvâΠãÆNá<»=²™ïCtþoXÚh¨‹£í‘’ªŽpêÃñƒÃìSÂ}9­ÈÙŽ'o=û“BJ³ âæÂߺŽ>Ó¼ÛA}±ªLK ¾0Û=lfXœáCi°¡vrYÀ¨„œÄîàƒa›X²ÿá¥t±x,M"ç/Éï Ç:.ÝÌIo F}"ÿŒ˜X —`ëùÉè.'ÙÊ%ŒõñãV“Õ¹š±8oþq4¶ep ¶ sÓÊwƒ¯”HªRnæÀ=ŒË¤û¼cFùæn½=ë"¤5qäëÉ´Á·ÏŒ(3‹Ô<ÇYz«† Œ•™]vñz%[ònzã4`—‰Ö>ÌÅQn ž)ÈoŒ•-^g笌=[×.ýzÉ'ƒ½+Ì4/Æ!Û—SØt«ö™] ¢;õþ°Ï(§èÛÁß¾2dn¬³ÇŒCÚA[vÌi»gyÙîz «>Áóó7…HÕìb{ÚÛ¼v¬(4L/Õ)šÄ¿Ã¾ó°¦Ôüœ ¦ÜwÖ[aƒž„¯œ.Ól˜â,*›ó¹£½€¦§œwÈ}OîÍQà;a¥xîã-éë]—Ìtbf"Zc‰.úñzk©Üõ þ\°w3B4Þ_`ÕÖùÆÏ(­Ç2kêê¸_œv%lвiKðâר¡ŸRÞðIÙ¬º¼@éãŒeiP?»K›OÔzñ¯œ³tG·œ° €7 +oÅõ¼Užž¾¯9¿|ÿ¡«~xÆmžŸØféÄ_ú¸³pW]Û?ã *N­à®‰[ õ}cgMš¢šÔéœÓJ9Þº®»Æa×g¼šþpHH¿È>up Vñ|½c=§~¼O¹¨&žÏNn;¤/€!ùíÈ~-ý^OœZ £¿:p˜U4«—PÿcKø~íç"z*qãšëX߸tG×¼™@ì“s¹PaGìTó“'.µùë«×Ú׿>±u7/{÷øÁÝ$žuàÅûÆ&a}™$>Á ì³¼eUpåx–¾.jÑ<8}àoï.²DÂ?gªïŽÿ€n@Gg·<è[ù[œæ«[¾jÿ¬sï1-t‡ñ†u¸bÖwY ðkz­^°§›’XVËáÎðçe5:NÞ¿÷Œ˜?ÃϳƒÆSŒÍäq”ßÅÅø ‹øÄ8²ŸÓäzIJäõ§Î@æ÷h`CYÌOò¾r³dàùvç%öã×!o3Ïœýxù}æªñUÉùÀ1CÃï©-Óë.·qCêÍ ï€š>3›y£¿|ZY$œ™!¶¥Q†!Ñ+ž½±ç<ùÍvS¼öâe$ÎADUOÀÃÓ%zÆwš‹çëŒô•-A<®&€*šÛóž+vìk‡¬udÛ^ørYÙ~Ö!MüàÈúq}w“Fß®§/Äâm‹²lÔ†¸|wp †9ãym'BåGbk¼G1ŽG¿Î1ÌnòûÀ ʵgøÁæÅlnÛïÞ"@[9rÀtþ]ç)ÚE‚>´a¨º`„<œñ†Ïï,\æÑµ—`×Ñz͈•ˆ„:ö`ú‹AòÒO›…ìù?°ôZzÍ5pw\çdÈmY팩ã©6‹Þ(ß ¸ö®+°(s=úp%ª u0V”iö>ѬëÄf¹ÁO—©íöë ™XPùÈjTÓ·Á€æ›Þ°“¶^ÙMïdž§ÉÉnï¼g±ÐXÔAããjV‹_æáÇqó>~ý¦[sUi^}åäó WþL7ØUãDübvš-µŠ_\fΪ‹ËäipzÎè€×ùÃɆü±v×67âàDš‰8ŸöðÛ– ñÖ†t޳V#þr<b¶ŒŸûƒ/wYåô;•à¸NÕÒó¾F­˜E r¨§—½w…s «kàòOÎ8Э±î}å¹¢ùF´üb}üñ¼7¸)2p?oç:Ó×fO¼Vq3Ï¿såÚno²§]aª!~ÿë7µ ¾œÚ»Qç?ØÈSºýîÙ¾2ŬÓd»zÅ©»²ç+´ ®SggX[u©=dâþC>ök§÷Ê{±¿Ãû]óœÛÉíûêá´…< çãà ãŽ=aõß:x®Y܃ý°Ýà<þƒSR>³T:ÎdëŸ)Æá¼ù¹;Âݧ1ÎA;A¬ë ëŒS@CÊ^ºë. x¨(ùuã5#ù{$7áÁÍÛ¬¯w=¹>G¼×Úk8<àê‘)ù7H LJ ¬ »‘#SÞ Ž>+þ5“+R^Õþq«, ºÿžðé°>í·ŸF/ /–¥Áº@ÀI¤ïÎTíð:š‚ø9ÁP™‚É®±$ê¯þãç4–k}jÆÓ›c»vøïy ä•“¡_-\®Da©«¼V-L£ ¯Û6T×çÂF "…èã.;mèÞ8ÁùÊ×uÐx0^õ»¼oÊjŸw \ìM“޹Ëg€?ÍÆŸ¬µ,Þ¾°Ë€;Sµ¿yÊFª˜ÝqÝĵ…]¾Ø"¼ÉN‹v¿x›ãZs¤pøËy yû÷Š“|¹_Ëx6šííï!Ê]Ó/oxe[Lo†<¶CKð×[`GŸÝîã\7·¯Nó@«Þýa- _µ<âô9›4|=Nñ™)Tˆ{9Ö&K¢çMçÏŒž^Á<4§G;ÂBOt&÷×Ä ÃKW‚ùöyÇMf&R4G®±FÈ¢ºñßÜÒZ úÇ[Ò“kËßÞ và/o‹ýówÀ“Þá÷éÔ-Ö·Ï;0»¨>G§oÎ%KÍÐúÝp~½‹?šÿXǘØ#ß87†“)J;òâQqicþÜa.°[&x:|3¬ ÙÓ㌳5æàÖïOLvzž[‡yZá:·ñ1-È·ß(ÀGJøX«­ÃIA˜»€êiøÄ¶=o7Æ/^€"³þÞ=±éݹלà7¹ß¼Zj,?E¡âƒáÅ1·_??ŒR° ¿O:~}ç~ œÔA©áï¡ß«üåÿƒ5$<} ©ý[{Õ—Îå,E5ïϬÎÓŠ<|e5Q[#±V3™>„9ËÖ ªÎýø˜.ww¾õ®½à-;È®¼ 2ÌOÁÞ0ŽŽ`äøek† i:üaòÑâ¶Î“×¼-xc(À“°8ƹ]ÝTƒ¥Ð!êÜ.a©ïÖð©+¯ªÏÆ*–*'xm47Wïf;:‹­ãØÝ¹G8Èv!ç¿Xð’ô‡½#–ÞhJEߥÈä9+üŸX¸[6Ÿž?œ©}BãDQ°N¾æ.nþ0Î<ä×èOZ´ÿSêåš…Âdé¼Q9ëœ1:‡÷žL 5M4?¶™ Áá§kôqÆ_¢üE½ÿŒ¤è‹UöâE(x ¿Î­º¡PΑ$túÒIóï#Fjzq„ú¢hè¼9ñ…;=ÞÆ‘BÄ1×9;Yq5šKœ|=úÁÔ)|šöþÙp›•@?.^07‡åœõãã$õTmmú:ó‡oàqxž6pcmÊ ðx1`܉uéÖ_s9—{Z>LfòˆîåWöÈ“Ûȉçûä%aà×è÷’¹ÄŽ÷Ôùpm ²Tó›ÜÅÒòyøËw¦äý·œ›øxàa›zç Ž¨>‹è®-‡–¢q½æìjR’õëéлöf$ÄÖÍãŽÑl!GŽ}s‡ÌZ@öáý°"nþ1/(½å=¡xY‡sÚnW®Î2|Æ”P WòÓ¬4¸ öxÆzªøÍcs±÷g7(Ê€•~{C˜š»O×_Ü,ÊëðÀöZ‡ã7åÖV£o÷‚©zvN·×Œ¡~Ùä|ܲÌòÞW@è7‡çx·qŠü½àCu³[æ9vŸ¯/uõ‘+}èsø •žx€Ùå÷ŠØPž=eñ“Ðs†ñÅÈK¦‡Ñ3€m1hœ~éS!kŠf'öa=“Nþ|â÷EaÃý.†Œ©¬".Á£ØðÞ|qžnñÝCH¸[[(w¾1î±ñéë/¢µMÞ§Ó‰Ë>1Fn‡p¼1àiȹË‚ò„&§”ïË8ÈGHÙ|¾Ü…Éí;ÓÞrãN×zv{ÇBìv´ñ(?8vøÈwЙ­Î¯T½ùÇ, M ÜèköËggg^üyË^yïb]BÜEû”ʼn ½g€öùÉ|ÎÝ}DÒÿÆ55•ùr½KÍ8Á2‘ÛÎzç6‡Xíé)]š6põ‹ŠÚŠí•¿ ·§Ö Ix[Ç9œGR÷{ÿf.MÓð¦ðñ ¢˜¦¾:ïXñ4U¾Çôì<\d¬Åz¿-ÃÕÓr^ã Ö‚TØõ]oÜqßµÃ^mczlƒý·‹ã M` tWó„=^ #ě‰Æ@sóßÎQeü¹:Óç ·d¤’ºø×ÎÚ8]~9rkudu¨ÎQOp‚øÃR ”æxÇ:…Jå–8 ¢ì=a=¤kAc}ÀE&¶Öõ›é©”ºg‡Î&„]{ÇqI»¼Väɳ­ãw¼.Õ;íÄŽN×øÀ!æ§Ë›6«C¬p¶`à°&ûpçèµÛóœjùÑêìÈçÕhÓÐç³ &‡ŽÓb ›.Ý;÷–4Ó×kUúë 1àMÿBϺ|ôrfâÒWÞÒJSϬR§×uÃÞ>µhŸÛëq¤|':Í×ç^ð×Á¹’Pµï¡¶\x“Òc’³ñ±8£aë,àðw§ÞðÛbœgNwëÝ{1žŸ_ç8Íĺ{ûÛ§¸I€ÞŽ?8^¶_Gç䀎5÷óšY·Ÿz†|‹´Žês}˜ivŠ„óˆëB ¿x‚¤>+É€bØ·ïçÁTØVÍÚz9À.…úNnòÙ¼~N0&tÛãõuº˜Ö^8cÁSõó”Ðýz`[Êð„‡X; EÝ^Uû° }€àþî%Ûì.éVþ2öaNˆ†œ@çæ´Ä_€ÍÞ;ÆÍá*á±:À+4~° ¹C ‚1âž'FrÝNûê_™‹Íâ5ï@õ·œ6ìä|ÜÕÚ†»ÿºÃñ7‡þ}fíumñ^µ‚¶ÕvS÷C¬7}›ä‹ßøÂsi;e=\¯dÇft]„Md9·u–7‘i5Cð\3u“~o¬'´ìÎ ÷qçÀdô _«ÀTúàݽœªà“¯=eì£ÜQøL™ŠÓÍ‹u³KÛ×Y¾”ʆòq„~SWæÖTk4~ù„ªšÂcuã¶q®-Ô­ÃuntùÊßS¶4€ÛS£js›ù™-¥1[ÒÜ2Õ Ñžþ:Â)ýË+Å4!¯ç%’&¿çXÐ8d|M½üæ–y£Tóóñ‘Ø€![ ç÷÷‰ „«çoyÉ~ÄËR>·q <ò–/?´Ä¸§8Ö/žéÒGx«y¢\sgúßÌ) F¨û5„zôÙ€±  ~WƒçÎ"UjO_÷p¯­ápnœC½÷ž?Ú=¾0( kzsñ‡Š¦«ò{ï XŸé¯Î¢Zøœ\^¢í’;ª³|d-ý‹7Ž;÷œJtðzͲôk†yn^+½O~Ž0ëôž=ïhÕ5Œ#nX/Oþ;Ö>®( §Æ#í5Ò|˜½?Å‘ ø;¿ sþp­-_þ·µZ¯_Y¤äöwâwÎq#L¦Û/Œ=»ö5¿Œ»îLFœí%«Êy‡Ö®cz­s‡bšß)pÄtÍóã® ºŠÝŠß¬t¢76à¨Zñp©¶j»ËHÄE§Xiè8TjÛ‹Í·²Û“ó†k¼ÓÃÞEn‰&mïw¼kCýÌlÖÝßy¨¯Cç At<(»˜ŠíÈÍ]O8ÞÑe R3ÃY)Üß½c»âŸ8À1§ýå$Ww.¡Þ,×Ådžš2þpÍ`bLR8Ùô_÷å&þØ]½â¨Pùq©…½ÆkÐe:*‚yÞ;œ ·ç&}OíŠóøÃ­ÜÜ~möÂÙ%`Ïi¡ñï ·`MªÈãMp@2Õϲ~ñÆ)SÖþ²¡6îç%’R§ÇzÄ:öV{VQžÑºu¾ñ)Þ¶8j+ÇÁÎFœß‚[…w ‡ìð|s›Užöx£íû ÷ó)@zÃ7i{àÁ_%g‚žøÜÃ)IzÚž<`ý1#ØëZÁÑíX+f[ÿ]Ç/žfG€ÚŽ^Œ¨Û­È5ÈrâßÍ©½¶¾  ÑjcVÆ¢ë}¿õÂÕw…®çÞ8Ï&¯3Móý°ï$­µÆ9ݬ_°6×tã.¯E†Ô~2IX­ÖùàÞÜ18ï„1QìÐ;øÄØé–ž¹çÖñ­\j:Žl﬎¶ïò÷}c ý"¹I­žðŽzE]±·zñŽYMqÎøãûãŠÈ9É×îã*ƪN^?ßÃÆ ô“ÕÅÐx – ‚±³×Ûþs‡xÓ†±|„1íœäšE‰¶î¾jÀ<­Ã éCgxð´&KwI?¾K¹f× ¾.0›‡—k‹ÎúÁpݘ–ï!ÃÕÄ›ë§#©‡Ë›¸èŽžqº †mmm£½Ã­a§ØŸ?,XÚ&Ç"Žø3XìÃÇÞ, é7ƒ¢­:Ê»5|ŒCdzr*œAuþøšµBêkYqŸW¡<¦Há 0?ƒ)ÕÓf]‘É´¿7?yCvþîp÷pWÃÎ-¶GòÞ:ý‘ÁÜlÓ8ã¥o·:P¹¥#‘`ˆ" a­ŽÏyÉ/fZÆ®¹Í¨n«q]ïŸÎ7ÐÞ$¼‚ï͘+V+¾ê|oV”oÊ5‡÷x#¦q}zÁa±>É¿¹£¬ú×x…­6ÛY¾d'š1…8Ždˆ»ÿÖ2ýÂíáÍóê¾L¥ÁO!š_8·"ÓáØå8HëãÆËr™<F?eÝžºúÄ\©N7zå8¸Í—(RÇiûüâ;kÕןÞ!&›(oó‚ÙI;¶S‰Ñ({ø=g¹ ߌ ÝÀ/†]ï ¦ý|·Má1h¿ÃÓB"½à~~-šÎ9•{Ú÷àÀ9<<Ð_ïœ „ü§%$75¢GüeGzÑè<úòG ‰l×:IîãEâ‘gÎ!sLúwWX8±Ä¥Ü~¿lI\(¡ŸY[áÇË"»åíÀq¯Iw&˜° ˆœïªñç-*Ð ~ fÓ›ƒÉq®ÄyÓð~øÖ~pÔíÚ܆Ëù_lUuZŽ Öå4>ÇúË÷SSÕÅb+}²ÞFùèaKÝñã£(IP×ç*ÃÄÄ4”¡—¾EÍ_¬iq#‚)±áq«v€ÎñŸ]œKáàdððiÂ#Aý˜ý÷$0œXHïxy'M. -Ú5¼Ò)Æ =5«ïÖ+Wë-t6bQ¤p:òq÷‡­U€ã\¥GÏ4|b‘¹f°•($Râ1I†-LJÒu.9ôÓëk ³½o:ü`87ŽºÞkœ?Îûfºmnທ%Öo;Ïjøax°[Ë8?.ÊâóWX‘|bXgDS{?Æ[Ù‚ú>æuÁÔ6‡±Èí ."§Î6h!*7Jb)¹DÊtãëãÃß­æ²ÝAécÔþøW±Ã¥è÷ƒ‚6ÑN'j*ôžwñØêaÚ,…§eb4J§‡¬Y>ÿ0¥Ñ*œ/7Œc¶è1£ý¦iRŽ×¡Š„ò’ÝñŠ^NÛÏŒf³ÌÆÁ•½å2kWßY ‚!;Í ?>òmÃTu}⯠h&Çzr,É£Ÿg }Ûƒ[¥]}8KÍÈ“ ~rÊjûPÓ#&ìÔ>€=â8%{9ûËoÖ°‡7XÆzAÐ5ûÜ]äzC³¸Üv¹`¥×—üdÅÑ¢•ñ2uŸ9g+äõŒî•„KžÖe™ùy÷:šŠû\^îm†˜aÓ+}Àò&ïöu–ÛJ0±c2~û:Oõˆ6«)è¼$®¬agÎP 9ø÷ŽÁ刵÷x8©ÍUìÎd•wë£FÞ&Z×[Þ]k°ƒ‚|}‹ˆÂ^°„0yNðTOi“æ½`§hßL`Ç’Û“§#Dq²Úó¬‡;¿Æ­ÓÆ;b¥ÝÖ¡4hÅö æþ»š“0”§W +†ÓH×~r¸R’Ÿß(ê’h³¼#¬d€À/¿¬…88¸_ÿ9h?q¬Áã=¹£w>Þq‡7Kƒ]ç Á>·ŠK&˜Ý•@Œ&øã°àÊñÏÛ1@kåF""ÊS“çƒæc[M»'·ŒÛôÃß¼‰/ð ÆA0_Wìôàór¹^µ¯¬5{*•·ûc“VÁ­õŠïXŒrÜ‘)xùÉ2ˆéô+Šs_.]¿}zÅ~?ÆôŸñ7€ñ;c[ý¾rMˆœ7÷–gOAìáXˆe ™·8Œa'*xÄEÆî6dQj«þóšaæûêßrn‘Pt*cqÞ1þÝÌa{"%×o?& „;á{óýö^}qšÍ5©i/‰œ0ò%HˆiD bò˜ª9õïHN3VÚ²bNÚmìs1D:.íÔ÷ùÍ8£4ßX¡ëâàpÏúá‡@~0ômy÷‹ºð߯hÝhúòǨ‚é»ÿf&‘«Æ³§Xö“i¦Ü*zà äéÍ ·Ò÷€dWx¼os †… \F°ž!j'¥OçC®p.qvë"•Ö.®·«üÆRWcî`žSCŠTЦÛ3cÅÞ ¬Ë‚yoòÅÜWÓÎ7K»é_ÿp¥”Ù½ã˜îï^Y‚6q"qè0Qw«œFŸ8 ‹‘fîW¬ã ñhüºúÅx[K€WŒÂ.™¬ýöË­rX^†-³4zrø?œ÷a(¦ÓÖ^ý¨›q ÞªÚŸ\á¡Ê;ðbÈãoaññÎ3 b ¯ÇxŽªÚl×½dÆ»½áW¼3lI²c„ñ&Ûuˆ×@ñÀÀ©–ÎÎw=ß80Ð8èž²–ç ;wßx³œ©È`ˆì¹Cõ7G½`¸Ô¾UáõÇ908<¿ßÿÛ¶õÙñ•AD€š¹ÐVvÓ²vºûÎZØKqíMŠ˜J tw¿¬zÈð'_ªï g~—òÙsëo—Š¿Û4ÛµgÛëû`‰a9äx^úÆÙ®£oíŠDÂ;æPs?ÖHP u³¼€bs¥ëã rýó߬VA {{ÈðÞ‡€ '§$ `'—Î,ÀðÃy+žç÷ÃùÚ<ùLPÓ²#yÈC ð°Q.ðŸ*íý¿94¶y >Á•Öôöë v$Kþò/ VºÆ` âíã?¹¾=g,&M³aÇD€Rc¡6™cQž0YèSíË¿™‘üåVóÍÍBŠüÞÜç°à$ù?Œ‚ÙÛtG¼Ž­9=åi|à”ºJr¿Æ&î—.¡×ÇP cFÆÃWÖr”†éÓ•€¾\·ÉãÜž¯ °ý°\µúnN·ÃëLÁ·Ÿ¼ÚXm.Úþ0•æÛÀ×ó£|IÏxZëåõþððWmDQ@ÇýyÓ¿?¿Æy¯e~!ãýáz›‘$ØÏG¶óS»y>AÎ94!k^Œå ^/Ϭ&zøNFLÿgÞ2Ç+­¾¦w5õ6ó–Ge‚pÓ1‚̙ݮ2Z=‹ñÅ|ÓÁñûàŠ_òã—5Bøºáó‚9B¯¯ €Þò˜ªKàðœ\a .PÚVÁ‰Ü½_ÆǬð‡^ðÎibõ&8¢¶ÊT;ühÇ|pOã‹0Ŭã0 mšñ„ä®—K.hµÈSÎuÌ1‰Ð#ÐM˜úÙkÒóŒ-‹ I¨rqá_oÙ”Þrv/?óŽGŸ÷‰Öèv®.è„c^_Û«áÈ8 :H/ìÆž·Û'Ç2₽Ýá^r2ô~Þ^\Ø <+Éñ³¨;?Ëœ+t6œ`.ô@Ü÷‚V kç8gäãGÖ©G5/í23Ööi£sð-ÝÉ#ÖÃÓÝËp©«‹%AéÞððèÚÌ|Öæ‰†Æóã-ÀÛ!çtwš-›‚-gòÆP}— øñ‹w‡„&?#†K ¡³HM ŒŽ[Äq9N:¼Y<¬qi4DäíÑÞV/¢Š^YW¡†?8®<ú÷WἿ뿞R+a´ç&¶`©s½‡üb}z·fÇÿ0FÑ»¿‡X¦†‡ÀknßÜ®dÀøC¦ÐPùßkã0²ÏsèY„:EêåžñBf#ÎöÄI¶//´ãÄÎ1­B„ç “ßiD×Ý߬jwB…;{bEæu’ðtÏ<á‘-Õ)y<'ï’xüüäì"B9Í8Ô¾’Z»ðœ`µÁ˜³ad¼øÁÝTõóƒáê®.%ò ?x1nyħ)SÞÌØ Ëë¢ÔëüLpðÄ´æëÔYûäÔ…ÒHc’»}àpçY΀5…½Jxq¨Õ9àh»6Üâ#¾*‰Å³Ö±Ág©½¡¸“M8†7VÌh»~/\`¨ìÀ¦,½÷—Ç_X@K£ç »i‹Æð£%ÀŒ‡>°LRÛ,:qﵸk\A¼ñÎû˜þAD^pò(›i‘%gùpÜ…Ö:ŸßÞr7”k†&)h_±¬Sîo[ÂGÿnß…½ÜaÏY^. æà¹Y×éÎߦS˜¸Ï,Å!£¯¬!®ð…Z2甥Y2â¾²¯Îï\µÍƒDm¼å!éÅϽ«‡"¾—H6â2‘‹PyÀS^<Å…+ÅÞOh‹‹,Ê©èÄ ]†Mñ›2î] 5~ á¤Æh‡_lø+†°G×5&7ôœaIIk8è£Ü‰¨ºã ’ôcÆ V‚W‚qŒŠ©.Ü?ùee½"bk!O âMäù?ÿÄ+!1AQaq‘¡±ÁÑðáñ @0P ÿÚ?ÿù÷ÿùÿð¿óÿ¿þ<Óƒãßÿø?ÿ¯ÿÈÿÿàÿØ~ÿøÿ¯Çÿàüÿÿ÷óóÿøÏÇüÿüóåÿà}ÿþ¿ï0þï÷û¿êaàïÿïþ=÷3ÉzCàñÀÛÜèß=ŸþosÏ¥á~'{ŸþÀq6Y¨Ñ)ɇsŸxWþì(TÅ~\òæ}/ø­FñÏ=¨z7øýfàÿ²f;¿Ÿÿ ߯ÿï2Þ:Š2Ðú¾é\Œ~öÆ£¬p]ã{m]ÁP3Öu:> èíª„¶wɵ¿X¡ú¼®g>ä׳CYž-†¸Ëî—g5¿ÔJ"ò¢Ky¨ó©.ɦ¾;*Ù$=·ýR±õº)ám›!‡ë1³}šè´ßfÛ ùë•5‡SjûÞõ=BèqàÈLDñ~¡Øƒ³òïàê:Gü)õýèvOêùØüQ×S9újÀp³Ê¡c]Ï›ë]÷Èê5©uOOñ¸ü27ªŠ|O œÞˆúÎè‹ÿ¦Û™ŸÒ]Ÿk4Bw³‡-§Íq kúODô„Ù»à¿û¿ÏãýKýÅf ´^–Sl;ÿÕù?²ß'ñÖd÷N$?p!n˜Š.¨iFÂê™[øbÆj8»[ ðwXñ²£ªÁù¼N8‰åSÎSu0£ÖP÷±aî>|:¯ÎñKRè+ìÃUÿ-{W¦]Ï0ò0b`7»ÇvßfÑU ™öæŒ)Ý6àŽ®´ f\`ugld ŽM¡;Að;ûʲznåß!ó¼¢û4tžÛçj‡³Å<¦ú] èKLÿ3dD>5E{ ¿|f¿ü©ú‰}Oÿ•ÏGLRez¶½¼î +uÛ¤Êè\~½’ª~(›Œbt“Yæ!ôf°ºzMWóz¨\®Ìì®À’{?²à°ÿíÿXu^ö±s‘ãÃåRªÉé/mÂRá °î@®9®®Æ¸”+àQCËî,eÞÊtKhKV#…UrœÃ|n s~±vTÙ['€ëîÜèÿªSƒ—[7è‡Äº£\û®Í6—êá¿ò²´Âwã|€þàVL®§Ý?«Làt׎N‰^Ê×n*‹ì†2ã.³bÑsv}d›×I Øö^»V9^ÔÐI†±™ß3êá°™•)¡W™˜él5ŠŒé“¶ŒU;àY¨œ=ÊÌÛÜ|w3•úgU>5«F56Cñ7OSe‘äúÙa¨ÿiOO'KÐ{t1]‡°Ž?¹ìe'Éúp´;ll êÑä½i®O÷nDdlÅ 6ÍBË€Õbof| TõWS«Ó–¬œ¿ÎšŒ½áÅ®^áæ.KUg{.–Qy±vÿØëï1Vó¥4*ߎG€SÝ`L6T¬”áÍÅLŠ6/Á;ßuoÓ=L"ò{ÿú˜²yß5ÍÃÓ<…Ye$ûÇÅ«l0):'‘¤wP£·““ö rjŸjŸáÿÒ¤=Çó<ºBú÷Q”†Àñ7ƒÁ¿}hUÉe¹¬­TBÃÝ4‘5©˜x ¨k÷’+*¥»KÛAûdë?kÄš6ÈåqO'³Ìj7‚‹lzFâW Ùä­Üz¬®ý9Hí;õrþ¢ó;(#¡ä©Ë(¿"y:BÛ‡çß] Tc¿y ÓyÎd£!Ü6Jµ5Íð®4:œÏÉ|að{×þ_‰Áôlf_ÐkÈQ¹×o¼ýÝ|j—³ŸÙMñî"ƾnŠ¥Ìqõ–¸‘Â.5msÐ64D‰s‘eô¹ÂùrR$Œ¥˜n ïÿ\ñ^¯UC«j–GUAe“Þ.J± ‡óVürÛ9¯ðü¦+Ü~%S<»7hzœÁa¦£\2 ùþÚuÐý_ Ë´*Çó¢ï"¼žêfÀÍïƒ_}¤°H4õÒwÙs$“D©´)8ƒM [ÐëbXa¶ŽA‰öoù³ú‡ÛÖÐß'§?h9=ãɾЧØNŽQúQÜms…¸S_”Gåá©að<µÐe®Ã1Ä— ¤u(1ú³R–mî/—³I†ûîÒÒ¢)?)û×l¼fÃ}þi4«M‡Ëo<òs*QŽ„€çÕó#Sê!æ¾”ÁÇôJIȯŠMEg|v£vbwÂÊäZ„PrLµ¡È¦eø)Ñ,­N¡y££Íã‡K\&«ú÷è|ÁqOÔ›Æñò3)¾©g£h|$‡ç _{§*’3¨³ qŸ–ÔÆ=¤êl¦* …ÕQYŠ;H‘h…¬ÍØš¿ò¿ü%v¸¥Ô⌫‘û8·ä9îÁQάÁþÞ|Ü úm%‹“€º7Gb+lw×Inº!äyvÍl¡  Ñ¡a0~ÌÇkðšÛ˜<˜dgM;²Ôz?ú<ë/Ã=¨Íp‚r88ÿªv7Ìѹ‰£´j$‡É<‡ÌØQ—¥|UdNˆ9£eÝ”ïÝbçŽòoûË£¯CÅìÊ IvïòôoG¬oV­ÛzWÁšvIq¯E˜ÖbÑŸppUÐûÄ1¼Ð+±yò¦9%­®xÖ12wo ¥"J ø"hŠ–þüq¢Hæd ØvgW±É®C³àÍ]Ì®e Rp‡"ý÷öJŸÌìQóȧÑ=Ö\ûÖ†O0Ñ¿1˜ì×»‡‘£w#«ò[tNp§ ÜIý«®yxÞOÔô¨×=Џüÿt5ÏžR5äǹò¬4{D³¹]ÛàÉíÔá°kÛ¥¥ÉÙÏõpäc\´škÿö}Oò|ŠŠR>š`ÅÌImѽƒ­.¡%Æ5Åôâi»$/±ƒoË›sÄ~Õ@I:¿cÞÛå UÄÔÛ{»– +ýrƒkE¯ríI;åT­ÿƒu`5uØ•Tշɤjƒ é`Ô½G‰Ô£Cb‰=Pºôl²Y‰ÍB5kzìÜ/WëÕs¼ar}”±ø'È>Qåá«ý LÑTòß§/CVµšR°ý±Á¾¥@Ô_ Êžf®•…ü7Ì0ù¡¬qú”:ŸÂ6W¢Ö0/ÂV…ö˜•‰}.xÏÙ`h,k;r<ŽVFRã&Úö[qÚ¶˜±¬v%tsnÝ«¼~âlp}Úµ¿½SÒݱø·Ô? ëäê(γ©²Þ>™ì Ò#ÍÖ»ú-ﱎS W‘MòÈñ<« ¿G„T9<­ÏÞçïhÜö?„2Ó‚à;]XâΑòoQecÁ¡\=—²7Á æ°Ž$¦—3ÿþ‡õÿÎtJz; ñòájv2íÃEÚ¹gáìû@aÉŽ+S76jìU“дtíûõ®:~D4g V™,§BYUÌ»òe¾Øê½}öË•ò¥ñÍ»6¦Ë››AÐ+TTúº`vÈ0Ò6*†h ŽarQ‹ ñ&Õþ*Ð!O¡ù‡ÍøZ:½H¯ËrXÔ—[g¸Òé¢Tl Ïñ\=>p””¸Üþ‚dð!Æÿó‚Ú¾М”íH1¹SƒOÀÏßѧ÷•™Ðó¿2|û øï—Øq¢|4û’”ËiŽW%ªÐèVhé®JqÄô‡Øt:¢Cî>°š(¦FF¼fq†µ¨G™šó*ÉØ·7½8Ùu77œßî{‰l£É„6‡€+NÊ_N%rùþo€¦»`Y:çíó„;_ƒô‘kÃUN¦÷ª*Tž•ô?zfˆ§ô(^Nå–Ï“ý«Ïlœ¼ŸÊþSüMD3n–ªËx?ü?ÿŸ'ÝÛ’šÜÞ{Ÿ[µAçr'z™Îl`úwÁaöÅ1?lŸ=ÎÔ™à™Ž3+¬s½ÐËa¦åã«C¨þÑObjâ_ö½^±®µìN²ƒøø°jÇÏñËrlnMË+É‘ÞGèøœv7‚˪í&ð@Á]!¹9ŸÒê¦=5̯ ÕÏA¶öbû9¦ŸŒÆ«–ó÷ÉU·Ã Ý]]bÔ¬}ºü/ƒæ¾½š J‡#k‘Ó¤²rŸ3dÕŽc½J”öÕ¡Š=ž¤Ã!«|$Kº?Âzž"Ïž¸?E÷ømÙàÒ·:Ñ^+ÜafËÉôÿ†ÀöK’è5T1‰;ÚÇa.[ÿ¦äÁºûË.Çé˾ ÐzعæE,(=ÅñAoðm¿Æ’£ æj¨Cghøª­ô/1z<ám_åC‚¡ˆÖ7M9í(0;Ñq¬_­îuF?“¶"ü÷XÅ“ø\°àoZ#• >ÁÖÓа}5Œ"aê7ÿFèZqNÅÅ *ï?Ñõ îßü_¿ÿ.FMʬ+c¯¦=ö3éõÛßão>•\Ç6ûZOfª>œQY~ÛNW}xþT³ŒU † ŒJ-Sè#NÆ¿RÑh©»÷w‘‹ ¤²o©§7‰»Ÿ4nÛB±ð]ÝK“[rÁ.úùÚRÓÂ%¨}žþsUaÃvë8H³<9“Æî» ÉóC‚ëv §ñ*Hôz•ÿ£›²Èø×3ƽvô¢@kk9Oà]´4ëá}×¢i{@Ò÷N\-sJ%P|†;7ª€ë‘¶¹1`ã?QW:Z–º ÑÛ®ÓsŠ(ï”ør~¯íàÚ¨µÑ:+‡ô½Ø¯Ös±kÑàÿÚp¡ ¢X®eÝÒJÛúr°’hyž(L⥺ºšCã|DN‘þß¿Á÷-KÇèÑfN%p%48¯bÚt-™¥ëϹÚt„¿§wgÁþ¦ü´Þ."GÕ™ wÀÜšÈùÜuP~®S)ñô™ðl•e`À|sf¨„È]íC¶ôæ»Z£óþÉ Û ED£sï}Ú·Ê98ߨ:s˜µ Ž÷qÆðþÕúa‡ÀknËÁ%Í£™ü¹úü†Êø!3“‹ºîM½ZÈ Þ|„fŹÎ;I.h8‘ˆÃX§<7ùÁTÜÇ–™KêâÈëQ‡¼¶ÒöV”*Äþ9.Öms2è(ÖÊ]e:GOU‘2+Šƒ Y¨sq½…1/EHת;ˆ2¨¿÷¨b9 oEé~KBJ¨W#µEµ¦\5w÷’æ6uxÀ?¼¤‚"ŽÉ(6¿êÙNPàhʱD>)êÒœâ©3Ed4§³‰+E9æºÏ顿3z Ç”CbújÐ?v…®/Ùõ–œЧ*1·½™¹±Mr¤–|žõè[oLÉUáwÓjɽüß`lŸEêTâÊäoÑO$Œ]Î!Öö³²ý‘}V[ýJi8ÎÕÒ\¿ør|Ÿ®§çò¼Oðä‡ê‹*OžÃQ¨ê›™w¹Z}xí”ʲ?'ïÜS’ºãm*0ëìꔘìàs„7ŸK®wðv;¨s÷93K´ïÆ¡ÛÛ5dž3ÊqîÿüÓj‚rB—ß§¶ª‰ ©Ùu| ¥.Jçè‡1Ü:þÅu24ãáÕê.Ÿü?ïð”sÏGŽ®Þ¦±~V¶) õí3€<%OÂ&Ý·*©b/ÿÁã¯B欵Z)¢|ꪴ?Oýe¢™»Ø:W¿£w†õIQ ~/¯C÷w?•ª¡~<•ÖÊ ßøgJOžZgòYmB”ߨû+¢ÊœéuoZ1ÌÍu/ö¹ÞÐF[ë€ &ý*Ü—4öSTJƒU1‚êxFz?J#T½Õ”DÎ ”E5¯#(˜iùøÝ‹î_:š‡µó Åÿ·[óöˆB'ÿs…yžï NCûYÄ>õ“ôõ¬uë¨ß^É-úô‘D% 9|¥'rUþ‹wØÔ¨c7Z›|yÖæïïT¡Líq”µd®Oí¹ƒñvA}Fx¯¢‹¨kŸ YˆÏm×Ð.ÆyˆËÓ¶½«…¡§nØÝE ¢¥§¢s‹ÍÎõHsû¾‹²aoîkRh\Õ‚öÜ~¦(%»!n[IƒŠÑ;PãwÔhçSæ`?Á±õ7ÒçFìÀǼ8Aí.P´®Ïò(ÅØòÉ[/LòÔàž5>gò}>døú_Û01.àcIª±¸Ñ»Bóü\Î —œÐ¢ùy»”@u~ $Cï+K‹³puÿ¨äÍ9ÇEUG\„ÎC•Ý~ý(cÊÙ`]: ­t«§ÁÑÎ,‡}ÝÄÀÒgDÞph^†íàÏçÕ;ÜàÕiÑFŠÆöqlM‰ý*‚ÏÆÏþª2?ñ|’ä?þÒ´’—HßÚMžZæoÁ²â‚õÖtB  ü¹€6sô‚4§êOq«qøýi7Áñž‡=ZÃ[BIX¢ðí²4aü¤6Íè¸yÑ‚\lÕ̉¸ýå{x&ÒeÞÂÕ%”CQ…­EC*Žö#8|ÏPµ–¡Â_4¯ÇÒ@ð`öè{†ÙØKÁi´÷Q¶~ˆ:½£†äÕ_ ÁíTŸNî¤uޱzêb{\ÎB¦¿j´{=NùîÖªm,àÒ2§ Âl¬ûeÂ//CàE¨ VQœÉäëW;hõ:žÒ±¼ ž¿AïŸ|ÏJƒûN„†¢ÝgÑîÿÕ/ë«éýØF9ο>Lð‘-çu”ÈÆ—Ø%ÙZxÈÁ gPXÿáBZâùVUŒ±ÚßA"DÜ=ÖéТ¸„ÍôBùö(®MOò~W8;} w4@ê…o» ú¨ök@uMçüçÝJ“%EþUÑ^ú88¤,”—c¶Ü¨¡qœ#DþLcÓOVG¬ƒ $¨Òµ WsÜg=‡Ü)y±P—Jv¡¦¾eRµÐkø5µwÄ!ÏÇPjðà„bMh§/rcXï®Âƒ¦ø¨çF3Ç+õ*>â¹årö¹çUoÜ}Ü> ©óÎJTögÓAŠþŒ˜“®àr[Ò®Èãk?,x•Ú’wž#!õ4Aã anÃ4!þÄ&¤j£±$l^Æ•º:|75K¥q‘MÜÛKHû*9=Özé!?Šk?ÎUšv‚ëÀ½=Q¦ésô>¦NP½Þ…°¼–nÑÔf§[åƒE¹´QY—5ÏBà…÷q2_ÂÍ'''È~#¤ü'ɵs7Æ !’އkü iæùˆjîâS'»zšL±ÕU݃A¯oóJ„ƒ|~i~­ÙRSZÀpÍÅŠäYyËÁL>¦1ö´{AÂѦ£hx|Î%¦VL"è+¡tgâɰÿ¿Ó=Š–ù(³â›¸Ã ¼†‡ìlÊ>0WþWP (Ùë9mÍÔîÿáµjª/Ð5×àRÖ³SÛ²2ÒW-Áük‰)<Àa_‘IâÊöë:‘4‡â–!'¶ø•Z-Ïg¼£·àÓVÚFoØ´Š¾ŽçÈpDûK²BB5.$9¡Põ—4yÏÝ,Â*ê}HaøÞÁã:n:w R‘}˜[:P«¢]ŽØé{!ðÏáôò{¢RW¥/'‹o¯0ª3^À껆ÕìPê7WÚ£À(çÍ+­Ô©ºM âÙ$:^4•bóͬlœµ`øKy‡_}qàÒlè6Údï“Î}B÷é3ïCƒ´Ñ¡›½Â%žü6C|åÒu_ä£}-@‚u¬Bz€µ8#gà6_ÂtýÜÀ㺆Jðêíä¨Ý®rÕ#ÀÔ¦ÊÊ(w#žU´Ü¼À!qB¼J?P»>Q’:;®Ó*ýÇä¬ùròê&h;_Š],CkþP:¢ìJ)iÏ.š¿õG]Qšvr¶"Êdï‚Øs‰ûDyÐóŠÈ¼Ž8ÊÙ'Ùq&·EѵÖMn?zIËÈýÕ´8ÏàEnUe‹ëü(×þ±Ö:é×´–|6àA‹÷s­}Ô ! Vàr øŸähìnŸ¡7dßþ…i)Ðû8»ÔÓùgÕå+±’t+Ø*ó_'NZ)‘”Sÿ œµ¿é9tQ8 ð™~“^‡‚Gõnã7Ë·®ÇE‡;Å8)L%-} Ã¿!5–²<·ñàê™lÕ êž*øKP¨RÂîCÄ0Ô¯UàÝroý Ò!iMU±™Ûª,½ÍŠZó6&5õA~×ôue¡k40ýÃiÇ¥L†BŽô/¡dâ½I2goÞûj#äÉ Âé”o£¯à¿'Å.ƒ¼¬5„x¶¤íY=7Hª¦\¨×6À￞†FøÄ‡·ûbËåAÓâ…QàÞÖeȦµÎ˜qÃúŒ W+ot…Îr8íàK:µzšøïF_.’× —ìdR wá8ŸÆ°ÿìü-®Á³” è.C¹w eß©è‘õPÇôÄÄ=_†‡*v»*{†æóäÊb~ëlÚÇ21ô\ÚIcQ»‡F»¡ÜŸIhm1Dðqû!Cj(¥»Õ]EÆW.Á“U3VãK¡=×w>&pœëfËÃÅÒ˜6èÏ7ýãjW ×‹–“›Ó~wæäµ80vbŒïY2D4•ò{+á!C”ÞÛƒ°Z°nqâ¤ïÐQgú6+çQ_5-A‰žoŒxM08f¥K!ºöF ú9_6{ˆuŸâuE¬ï²—O66÷嫟L’×hµ*§Éùá ¸«î {àê¸ ¡Ú@m÷õ"üÁ¥ß:3Z­—‰nܺVªéD`s0è>$eÅ bÝ€AžTšØ(´ÒºJôí— ßé/Z¬iq~½E ŸÉ——˜)wÈ•‘èÚ¢8uáÛ¿Jq_ö,Sg30ÎIÕ ¡Žù2¨Ò§;µÝýìù¿òOc[ûRåTÿÀ‡3j» LùЖG5cGÈÜÛ5)O]¸Ó=íi„T|žùá,´KòˆÅuðû ù¸¹Fä¾$È_│}'ηMß´q3Þ¼£dНøÒ¸Aã–‰„\¥ö8:,^ðT[kèIh]¡íî²*€ÏlE¤W‰°âQ,Žw¦'FÖV "7G¨ÈL‰¿éo†l_úãªMŠ7øá»Jj„%TчíYHÔö(ês®ö@³JꦎBDd‰5ˆ<¿ŽˆèX¥Úª‰Rº'áM]±@ÉøäÒaG_ni¬’XïÓ4ÿ’¾}w|î4îé £¶âeP³ý£ùr‡ºüRÖ0:>«ÍtC´#ì÷öâˆ3¹Ìœð÷ƒF†ÐtJâp`Êu;‹ *Ö®—vð<.Ãý9û]«­ÿpÍÖ¤³—+ÂæNv Êø¹ôÔpÕú¥êᜅ>¬U2WK,¡ÕW¹vDÙiB–µDØn€žÿÜ Aiöq¢Xz!ùfbŽè¦Ms©ÝDß<—ÞÎÐ\ò62Öå»›M@ˆËü¡Y!ŠM?J†E·¤¿C^x$T Ñ“âü‡™{zZÊjßñÑeX7A1·Šh.7à³u¬TS‘poÅì,oihͨZÁ]JÏÞ’‚±ÿ¬\×3#2žã¾éùb£é¿5£suüs4h±Ö{‚)Mõ¤v¤Hf[²¤l‡ßF]h|GpÁÖ†‹2òž ŽƒÃþ¢YÍ+ôL¹»c¹(Û)õ‡ê—(tý·²7:·âs…¼ý"µZXúQ±§û2«ÃüŽº£Xûxíd{ƒ¨æt †Üá7 iøÛs\êóóaÜå:|;^Õ/C'}[³ºå’°ÚH»˜:E{ 6ÜÿJº´ìk‰©^ÞŒÀ§ð4tÆiâ—ûÃá*… Y /!ù»uauB hWÀ<ÁÙÛá–èÕªS×Çp¤|z.*°:“Àðñà;Ä?Zì¿ðw÷éè µ‘¢´m GǬÉå´ZšË4fJb}w/r¤Ðk k"­#`‡¿Ó¬Glû©© ²ÕcÓßó¾^ô„©ö(¿½íoJÊqt=/8,·P]ò:‹bYÃø*ƒò],Ëaw5è)APÇ[î5Y8 ¢Sä–\Pë‹„ˆ…ìó9U´©íÍãßO—r@Ü¿Œê+õEÁå­Â*%‘Ûuj ©ÌWt †žø"ÕYƵ³cj솪w§Uª/OñjÊÀT÷õªÖN(’–nü›ËŠ\lÇ «þ®µ!“oeÞž"¨½^çô¨=Õy[½Îoñ¼ŠRê-S¬â¢§×¾ìèh4ØÛï0ÿì±ìb-ž C`~þ¸ÒþƬš›|Üù (í×UPËä Å|Á³ëaÅÉ=~ÝxûÑÈpƒ5€Ê–ì.gÅ• !Â?XÉô˜¢÷!ÊÏÑVŽ{`Ž˜žC槪©¯ÿT¨ØI4,D? ‡uüòœ\`š¯¿sAüSY r)³?™g!¨æ‡©p*kD-µý´·YS*ûú „¸d8®rZ,˜¦/äh²Ä;­¼•$ûYZ)‘è“8l]jf—sŸþd«ä9[¨è¨UÂj»!%—zù3æÛ’¢Ì+t1nÖÚ¯í¹«Ó“z®€S½×4òÜÑѶ4œ;Ç"ƒ³Ö‡EôÑSá±þð[þ8ÉqDï]ÛýØNA"ûn&4Ͼ0" ðäna¸§~áŽèsqî:'ë½ A˵J‚âOL"tèbo™$*^£þ·7œÚƒxë‹$©ûœÓ:eéÌÑÓJ±«àÁi¦‡ÔD[>jË[ ç¼5ê °/ÕƒtA‚Ú˜—j›ôlî2– ÔË€¶]&¬ÔUBˆ¾ØY3®™ïáíäa_¤l\åD—Bæ¤õP€gy¥ö²dŠäñ>'¼"ˆtX%tY–­‘Ï?#íÑÇ—%=å1ùKéG¯È´*È*.û|¦‡Q ±©ÿŠÒEù‡ÊoL ak}ë ù–}¢ÞØYH‚êUx©Òè¸Õ+'Ú._êÅ%\#„î¨Àß¡¶5>÷ÏvQUŽj²?/Ðë¯ç5 ¨§7/dˆ‰`|#¸`qH׫ÆP«V’6‹Âx̽AÆ–†† mÄ}Ü/jÒ° 7²³R…9yvù{ àœuvHËn:a¢§’w#AÎÁ?ìT䈵ÅŶà9Ô¤5=¢u£R,)¸)¤÷ gm.^ð7§%ú_)Rû 9²gAÔŒ£!•š8´WSÀÚóÖ€5ûÕ+:º1©g½•Ø ê bê~þàåÍlr°¬¸:rªÁ\Ï#ÙYk”—¢‡˜Ýp)qI@åõK žÝb³¾å4oCVeƒ{ùJKä8,©Ÿ¤Èc¸Ž£½q«¼sýñÅÌ6ß!nÿ!2¹(?W®G7ó ­¡žÝÅ gˆQ*îTý!²U†=ÜÑPl}²YÀÐÿñ‹qìŸU¢”Ū1Y½†ð5£žսޥ[ÕÐÅ$¦òdÚè#tŠŸ%Ɉ”i]öh„‰`µÀ¶ëÆÍ“Éþç uBŽv2ö«R´pŽÍPÙÈ¢Jι܊ڢ~7pʺßeG.êl¨ƒnd2áå7t?¡NN˜•JÚ8òršÓL@x.>R*Òíú,¿ƒKÇ;&!JÍR` OÚ¢ŠºÞÊÌäÆ+×3¥†1‰uýíQÒZ¦»¼mK\cýàaG]‰cYt]T Ù YÖý*Ó­4U†¼ŒéÑ3pTø1t¿œ6ï½j‡`^>Ë€4<™y.KÁ†ž%Œoùó- ¾Ö3’àH¯U5NªŸhÍk“ÈzÂöÇïØùR@”ñ‚Y‡Šm• 3øf ]°¦‡¢~)%îÕL‘z¨å–:]ÚÕ*9fÖ‡6­º¨Õî5ýI)œª°5­ìOdÕ=ÞÑ™74x5’‹¨ß«MÕZ5%ûU‹ô®tÛHWõ\ÌR^Èt4³{ñµè±Ù¸O?ðdC…A» ”\Hîò¡ä\%´û£S:hʤrgÏgÝe$8:µˆ¨Q<èß|ìŠcÒÖžÍShhÿE°è, Tâ7Œ'Ð{áXôö‘|]>Œþe?çóQ ¯µµÏdÉ’*ÒUSSÍiQ³ón<…–(Õ¿bÊ=ßYxIæ,r_àoà÷Ó­[ü4¨äö^ÿfUÊi-LY¯Þ+Ó·sœÝè*ØæømóãÒ[vÇÏ|pN{ÂT¦‚cÝ•¨'áÊ©¸å9e/Ôž'‚••"ÓÊYŒäîýjž-@†µ uì ÅóÖFEa;ÕÆ!(KE¹ÅäšÃµy 'D²]C뀚á´A•[᩸IPºÿúŽEŽ’Eâ‹y/ @Úë¶ŠžhµGä7Sû¥t‡ã©_ I·ïš¬‘C_3ÖÔ ÓðœŒi9UB¯v¨™ §ìM”kÖ]öC…iây+Àa³æÑW®N†(-Èp؇¨(ææã5eò5­´–½\•.üZUW¼pËý |TÒæäf¶aÏׂ‚ŸÀÚV4šŽÈrô{.ÃH†ªÞá0…í”]N¡˜(¤uˆ£I[<‚ÓGïÈhæàh~¯5]o%³ò"2“ÀssÕpw_šÛúªû×ÕÂHZYÀÒfFcTp'­¨:(ÓMDxt1xŒ1Z™~YYz×]ðÞ}êáûp¬:ÉI«å2ú'„Áx#,ðÔ´Ë *&õĽ_(43@ø† …¸ 4䄵 `÷Oâ½%¼uÃûHÇ‹TÚJï¬ùƒ-zçÉg Z¬ùiŒ=àU`‹z¡3oª†h8Ä&±¥Ø 1ÑiEª ÏÑ)§/èߣI‡ÍبAgU·Á€‚,΋f‹½ECÓMT¿F7«(Bðy[Làá|ä Ôl©d¼îZ©¦Ãe8+Ž ¨TX‘qu–׃º¡UŽ ÞeÖbµ3e¶AÀXçß<®è°n®îJï‘÷ 8±tø]¡WÉ[ªŽ}ª”U•ôÃEíJüêÊ3þºAˆðCZš% +ù–)Z(?&÷À6D`ª<CzùL(9eKIûÝ }­x€80ž±‡ 2?,£¯&E(­ ÉØžï*ØÉþ¤¤Ò s8EQoipì8N‚‡yA –´uª¤nd·ÆìÀ.¾®×pmßT8ÂÉŒVdYX¢Ç#ÇþïÊ~“ë)¡B±OX¢ì#£±Û?‘³ÜT?OtAì¿X/÷kC¬dòTVá\Å-“šË6Ò‘³ú@Q (¿ÚS*¢>¬!àíÉVó{tEojmAB&\|픨†O¬~Îídý·:ttU…œÞa!t³ï3ýâd•À˜¿X×ô_€|õâ'Øqaµ€Ñé³àv­ÕwŽæèùUFh-,óÒI/~º¢¸eͤ¥uÀ¡þ‹&œIFwÇ4½™CMXž†é=ÁLû2<‡ :‚Nîø!7?­JX8¯êõJJÅ#©2Œ~›Y—@©Í_¢MÎÉþÙÔ$7Gyz-!µFlµ’=kϲ<‡>ô*‘%YS_bâÏq„¹[¯_ ŸˆsO÷ ÁR™ÏMÄLtD2ÇÙUu„í;ÚUÄ'æÊ¯ª•øZ„ŸqX¢¤hTìvbŒx©—r~ut`§¯9Ky±r8Û3IeþxñŠ€WÞWùe õɈªÀ÷m%ERÎÒ¦þ©n†º®ãÏ<4¦uÂK]}Ú¦X†æƒ±5+]Íz½éèžú“lu˜Ö#GŒyo“7£¸š £IH/N‹]/Sgàˆ²Â·6¼jŠm¾á‚)¶ƒQUÔ¹”]¡{Uù•KÍ­D†SEU†7¨ƒ›î¦k ^Šì„k²8ÇÛ…PåÞ Ÿë¶²@©¼qÒX º”ºêÊ¡”k sC5Á‚€Ÿm¶Á¢QüÜò$W  ”µAŒø«-˜ °ê¾Ißì_Ÿ±°öyž|µqq7íº‰E06þw$FU¯È ìfz2LøA6GUÅ;‘¶&[ÀÒû§hé%ÝrGµœH=A76YWb4£xúÅ™[ýÅðcå¤3jȹñSøŽØPË…N¦eÕn5hà ¦« åÂ}VmÑ7ËÑËñeF=‚Ìùh(4ß HXó;öf°Û. ¢f¥KùÛC™],XåqQy$ÿY¼Ù°ÓqsÚ«[Žâý±îg&¡–½šð ÇõÅQÜŒ›ÚDKª"dú…êì+x¯¸öü¡úZMùôåNÿ'ò ³±tد­s‘Œtcö\:aÇ{Vw¥+m)…:<µÉƒâbL?ÑÛŽ¢ê[c ¿­ƒ3¨jæ„ð@ãtÙ |ì¢ñ&ZèIûCuSöPq?32A;D–(×Ú.>šËêE¿ËiMV†¹Ë¶‹ÂFýNüiþD:/Ê‚(Åäu­G¸½‡2ü©æÑÒŸ`\ÎÇÄß…B_:¹'ŠšÖòQWÈs>וÌ""š³ ïUSµn{ÞáçrpÔkÁ(+Äfê$ÑtQ­Ç½ƒRÁÆÞ;†Á¼l³YÔúßyCÕ*ꛌ«¾oñ’KKµ%µôQoÂAmÞšqzd’iòi¡”¥œ’þû'ôa*ÿ¿Y;Þ"“–ˆUò"ר|)ÓÍüo áµ Ÿ£&݉~‚åö½YZ¦Çi÷Éü*ºê ¾r¾F7pVûÐâÚøõ"}vJÀëiµ”Ý |U…š‹¬"§´ðânãàô.Œôòb2WUØý“šÍZßÛCYPV×ÁDö$ÁZ¥)~íªÂ÷R'8T³ÁØI9•‹¥jí¡NÀ’ŠZ„ +ѵDÑ‹ådi6§µ{S=•˃´Nˆx¹¯R¨Kà4.QÿÓ'ÐÎH*6U”lêV{!Êj¢sXÝ\¢Š¯î+ș»ϙ\¥ØË Õʱ[ ÿÄìÂï<õ5þ¾˜™äQüÄò9ÿÁJ{ c>‡ËŠÛ´Ï üÛ_DU`àÛ* ål¡u€~RÜ©B½â ä%s i³DaŸ„—±éý;³ãpTB)jV‚T«¿Œd§à¥%øgšuâ1×J«P®ÛÏÈÇðs÷RìÚ…˜;~”>EŠëg;)­©ˆ"eÚ77ày«ñÛ ÔPÿ{Wt@Õß+ð¥p 5¶ÚzQB YË‹Uf°õ÷ åõw ¨Õ7 ^÷ê¶ZXª]Ð^Û¸‡#*S’ãM©mƒô²4»·Öȼ›„Õ¢«³È½íl•Ážë9k±Ïw-¿¥EôNŸ7ôF,§Ä¤r]8.ÙÃð ï´6Oå0þEVš!®¾¬†Sì}û†+Aa/w«y8®õÃmVìˆaNŠ/Ñ••ºÀv 7¡-MdÁ}¦ç·«uñ'ëØ`N8‚ƒ¬Íe½Ü°…ïwUU2Ô=ÃÒ¿¨é}ôMí2á^çFñ¡Ù¦>uôžÀÈÅUÛÚø«€®~Dª›G{ÿ$"<ŸB„ê&ÚO•KMꦛm-/ ,48ÓÙFIäg}NÕ’±sSËÈ”iÅöÎÜ‘ov­ L4*§*¼n~“æç§ñ„äZâµ8©‘@oz¹ Êòn;Îwàt-·—Y&¡’s¯+á È_¦²¬\Ê»–ôNèÝë,­Ð…³ÐäV©‘Ùœ¸Pâ7ÄLFð6uNEE:µQ)É z`Õ©Ô+¡èJUŽ`Ò-£‹£ï$ˆuz3wõŸ!N‚ ´€Unº¿ ý&Æ9Ÿá÷Ú¾¡’Ÿ;)¯°/uÑ•ä0šÂi³™oSÕ_áU}QsBé~‹NIHô(‚]½<mpõÅÊJjùpb—±E%óc¡À4ÆEð ;¿3HFbd¡»®‹ùº§¶ß‹’mSQh¡úûVضÿU2Éé¹z!.~[Ö*!‡u,Ä{f õ•ÎÿÁ7ƒ±¹µz lþjteéËh–쪉“ï2\y›ÌÚ•åQÜèëí¦Jì$\%‡-ˆgÀüÝ;Ù SþMd“öüPùŸÖGáPÍþOÙf$ÝR¥._Z²q@ð߇H*nQáP:TTdÕq¢nˆQw’+)ƒx$.—tš2+=×ÐB3@OnâÌZý*"ÆRÜêY¿ké®CZˆîX@b+ZÙugøaxlñCfuºDC?û„N™J°Î· Pο­;ò‰›~&WÇ@X)žŒ„R\.´[¦G%9uÉ`£‚r|rÌåiNJgoF.XTŸ³46®•*™ñ´ RÞò®‡¸±¸FœAÄL8åkU z|`ù«å`•%‰î­h¾íŠwF2êC¤à [ÑÀgü†.픢—‘qÿWrŠ¥v Cã‚öKA_È…•ÏÊÃÇ È#Ü©žl¢I¡UÊ©Ûß½€­®Qì­ØÀ£I'0³ oñɞΛÁü¥/Z‡jT³W¢ ÕbÉ,ÞM®™9LlXù“‚ƶ®‚¹ù…œdÖ8­d™-Z*.™ÚtJ¨¯/ÄÊRLß­ù•Ó–’ Ÿ}||¢Ø¹LÑÕ0¼åÑLžø$®Á[E|.Ë*Ž#lê¬å -ŠÊ•wu%C.¢j·^K’¨7Mì¬V‡!<Ϋaó^·– ¶]‘2Ü8ù4NXÂ8¾ºsJ¶í6âÉZÊ’k|CÓìÁ`(z'£ãÝöˆŽ»J娟"ËŠ"®s0;l¢ÊdsûÆ–¹C!ø»yž6¬ü Oxí7Ž–mJõmýp¨§C¶}W×ÍûB÷ÿ©¥] ·í=>îfkÇ"ýó™= &…º~;Ì ¦÷j¯Zu.!7\£ìô!X ÷•Šñ¥¨rJ.6w•.GtiJK¸ï„`‰¨nÝH¶¨$ 1é÷! ÿ>Š GZ–Vä(S’¯C]´%jíDìNÏÊJGŒ¬X­›÷«dòë ¸6 _µp[ŠØh=ÙÛÐBöi|¡ö-UTÚ½(‡”ï—1½Å/…dŸ¥ yÊ®‹M›SC÷:æp*‚L‹•,—Dvg?5ÎÓ"[.›B¡r-‹MÞãÈ@ÝIld>¦Út.x6AÀoêxHB4`J]ñzá`Ù1Ù…îs¡1@8‹§G§Ÿ‹ÁreèMÖ6éÕl2QòïrBÍQÃV+šXíœÚ èxóvÙ*iÁÄ*ʈa©„&ø^3LR; ²:kPÇí‹;\˜°~8#3Ÿ®C—‰È·ƒ·v’F”N¥j5û×SˆhVK+“&YC‚ÔÖDœ»äl –ŠÞñ>=o(xÝâ‚fö¤Ù¡pvˆ)SÉLaoQ–¾®;D4§¸ÉZ§ÙÅ>Ü(«Ö‘¨w6ÈH"×dsÅ”zaEþ²JVª—lW‰Wȶ×'·Â.doËù3•º +¹mΑ³±5Õ½‹Ýø×Ò‡†ÚZ™ž±ý…Šˆò'sSógaÿ ïb\ºþîªo‚ßÿ*ÆH!{€…kÚØŠYjÑ|àñÖ+ »ƒß×õ©g°#ê,­vU‘¦±ÜhA<ñHÈ'vm½\ ¯81~07ÍÁŠ!—ejìuT+­…ˆHp‡b¦PcÝŒñÛX’ˆ-‘¬ZèK†Þô*A§·K…¨uT.¢î'’žÆ^øîM`Aů)–Üvq0óõBŸÃ;[‹ôÞœ;ðdêÏ Øû`=êú—#òåáÀ#ËqgA®kDºâÅÔžr¢ÝßC×€HýêÆxŸÔĤDrêJÞ낆ë J•T% EYÏ¥mnhYp&°P»èú°-ßJ*(”è'ù“1SeT×}¢G¡jyUKw¢~¤î¸ÅŒÍôµÊJûOà |5nC® yúðr§E‘#’0 Y|t°í‘²©ýK,9 ³GC­„`~qxY»Ü,ÐI¯Ê+;ƒs“íÊ,'éä}$Ôv6éì4„\ñV*<óç‡xToñVÒ¦ÀÉ 6ë¯#$ª—‰6>»U ¾nf:Xt] ¯ƒ›ÜYï„( ìVsÊnµÔ¥7ŒûZ³«PÐÕ­"’n»™çæõO²ä¥Ý(j¼ŒG³&õú–*°°Ô©‹ì~A•(¦jt ¥d$5î]t¬¤M 0£}+m‡À;Ì< ¢;ðVü¾•ü8CßJ‹ùM,‘ÐðiZ;1±Ì®CYkþ²5T§­EžäWøÆj«`)Ä ´ª4kb£ gu¢ãÈŠD^YL¢µ†™Ü#U¸ðKgåfµÌ·$qY>ÖÂ0qr$•p56„°¥O"¤¶®Ìne«±ÑUÍ|¬ ÷ô­C_Co<7~`q)c•é‚Ñ?@R±ƒØ /CYAïg¢`rzv¼øU—[³>š^S%Ë)ðgöw"Ö›ïžÿPf¾–ç;¢RÐt‡q‰‘ ƒêÆ·‚òQP½Cr¸©•Ý\¸—) Á¡©ÛË_¡Lç$J·u É ¶„ ÄŠ"gp ò7 ¯ó5kvûœfÍgRÕ$¢Eåh—Ê+l;ÈýI¸p¸ˆîblô-þüŸù0þñt=|™Ö‡ºô.ÛÍÕqW4¯¤5(£¿Ž†éåðHQ«‚ØrtJê› â;T6žÃÌzt ¹¤ý>Áe8¸~Z‡a1vŸÞ©Ù-l£j)wâ°ØŠPá9_•ÕYhPÛïc&[ë@™—·T …é••P$NéËÐ,é]ß”\ÌC÷úVŠë!câ´h ^#DX íSAì(N-‡ëå6ý&úšó9!7×ÚýÁ?ÙË]Â+b‡ï•SB¥Ô ÿDaW_X…]Ðeâj¡3ÏDö,Õ£#6ÈT)’`áîgÂò /苨.…ëÉ£ýv{!c¶ê¤Úõ^„«C2ÙèPh•φLvÑ8å‚"vóck¦{]T¶[ JçñpöïH«d™eEjD.¦¿«EGíË£åÕwUŸÁ¥Ÿå(WunfЮ}ClÔi]ÁBa[ ÊË%ZùÃ%ëxdçVd_cs'^U•˜CùßìdË÷³a/TRª·>‚›ˆS’§ÉT}€¾ÿ³$+³ÄO‘ñDVP=tÕ+Zxž‚d±¯öÇ =±«Þ×!Ñ€S“±wñ>†+ªÎ)bwÒQp¡W‡”1µ }ä}e’ü†9ùÈžªŠXô}[ü‹kîóYäPÑsx4º =ð¾|z$eÒ)Eÿ›ß|[¶úûDëÓ~¯å틽ž÷ñ[žnº7X¬Á®¿¤¢˜è”O;áÎê5$›¬¯)ßb’ü*ÄìF?¦¾æ‡—>ÃIQ½Wàf–~þUMÚ’—n·Y P­§jˆ`K‡Úiʯ’Ÿ NVÚƒwf[%aÈÁî·v÷93øÐïû:þÈ6ñÔ¨‹éªˆÚ„½Ì®égP(þC],=LJþ/Vn]£Ë„/Ðcø€Á\?ZN-" ÊñqDbS‘÷ýÙà«j0¿“䫨øÁå¾Á¤âáÜ-Mca;À‹;Žkßì(ê5p÷ ƒ/ªØ(»‚ÐþÓR•þ‚3è… UèYB ÀýïQH0½Ì¡ûëhoèåèõnQ~D.½ßÙzb£™qÑ¢1cÚiñþM*Ëá¤ZÓPÞX¶îv8ðÔù]¿äíÎìáöŸ2å>ï a¡µ~¢ýð÷ß¾HVΉ½²‹—öÖeCßÄ ÃÌ’—‘®ÃªŸP*°Éª¤RGx¹²kϱ¡˜!Ƙo¿ÚJûôOC¼3¤‡%13ǦºþTVÜ4öí-l[ÅDþ ? Ö…²åDÕ]/W$)ReXŠº[ǰOCìY‡÷XÖ/D_¡ñ~‰ÒÙ×~õ¤ú;Ê{cTôÙñÞ ‡²G©u1ñtOø9Ÿ›‡Ëù‡¥òû÷À“ï‘Ü6CÓÅ+ÁϽÜÐ5åË+,[ãèõ]2É;“ÓÖpë9›`[ˆ-Æ‹·±Ü«Èø­áÃý[˜ëV£†?¼ó‡&?7*.Àì;Xð ñè?Jd„ö>Û¦çËÚ$Úÿàà¸ùQËúi§úèuô€yÛ¡O¸Y¬¢¶7Ú%Œ§ªŠ± s¸Ïz>µJÉš11œ‚#ú¥ËðXa½£œ£Ï ©q\ð‚?$ðœrýŠÔ—F¹O'¼î°[–‘&€Oî+oì´õ{P4õ¨jn ltÚ,û%?"û÷ñŸ?Ü R éƒÒ B¨Ö{eú àåiä&CwÕÒVÃÆ—¬ÜdGodç' Tª¯+@£iÍË"ٮ߼ŸYɸZ„UŠ}¤êdB¥É´dåhਧ0SUiÔì¡AwËIÇn -þÜQE1K€±?ÃQŽŠ0˜$9Òrpú ÕÔŸB¶VçUy$`òöaiEôMÁVQ`cŒ³àY܆Xaó݆"î]•9õdê²al?χýë–ðü+Ô3‡ýÎzø¿×Âð}6tßëG?Z§¼,ª<èÞ« Iއß÷¹é õ‡&B×±*œ É‹x*‹hOU…Èã ÈÁåô*#¿\p?(ïúÔ§¡qÝ›ÔÔñØü±®ñ¡@úrᘦÿÚi릢G–îðs?"±èÓ‡¼kívŒ~=žŽoTJ2'ÖŠÚfÌGû¥„"¥I©=3ä¼PJ¯誮Awúÿ¦Q>Õ—#˜ýì²—§F¥XõS7AK¯znD¡Ê;þ”†äõ%ÄPhº k_ÀZVUÀ® lPî†uzüÆ¿­Ú«Ö[¥öZ¤QÈ)PÚßDc hùë,åMŠBO6ÃäkÔµÍÕR2í2A3_o:¡®³¶© õÒ Löz#o‘ `¬7õjè%Ýíµ *`©sBP²å5·0òY2£Z\énUËUJå1<â<­INé5$ñ"{ }p01ˆhÙ§<÷Ûºó)2åE"çV°É¯p7þ‹‰©°ïÚ4lûÂÝSùuÒ!nB¿qN§'1³ê ˆüOtrxðÞ1»¼?Áøo‚zê§>_¦;Aü ãÓhá?‰?;þ?¥Åõâ¾Ï_RCío&CËÑì·êñ¡?%ëg¡Ì±í†ËÓ–ucN½7‡ˆö­h‰êdïçOÏ%øãŲާÓÞ%z,õqÀ߆ÛüŽ úëSÃÞ d ¿ü˨Úv*ƒœ*{/¢=™{Ú‘ÎÇ=ŸÈôrEO0dÐ7/jë€(Ö.­SÖ +·ÕI™¾ò½.$y=\Q/ȱr'GÄ €¿-¡äŠä8½„[*´f9=½]:¨F"Ï«ºØªV •QÃæƒU~"ãY ˜*WñçãMð=ŸÅˆ¨ÀÌ?%nùÏIEÍxf¦ªu‡ô‡!vóß]McKî5-4®†ÉôÂÌ{Ö–4$cŠ[Òté•Cç’5JG ù©KÛ¿öF7í3I˜ ¹ÒòZUÁD,õ†¨¦_VD¨9Õ<ïèMmÖk˜]7퉄/Uz\}ñs•Ï"AÑKPdvÖB¨:K(Ó2.§;Rä=J¯¢:x¹ Ô KšäÈæ™jî cÝ}n¹AþJW&°vOØ&Ô2)BÑ€¦ÓŽ}Þô¯è£ÒùŸ_‡ÕºÐùîÄêÚ,õ]5ÉøÁ>¹E{vkËÂè9Åic·Ÿømèv.áFîÌ]CæàjQ‚êyŠÎGá¨i?Ãèöãd6}À­Î÷Tz^E·xrEWÁ½ÃÑ‹àml ¸óQúöÁžzƒzRðžõÄJ€Áº†åAÕèo"\)÷a† 3MgW>¬:Ñ<¿ûšè‰Ø†uåê#eºI¨ß­=ûd"1wÍêWdfh[)Šêùižvg&t”h¤c^÷æsöÛÉ öu]ö Wéë üª‘QÊô /¤Àß £‹ôó{ˆ‰~Bt{-F`œÈ=X˜7Štô”UyÉToì¡§®‹·¤·-{Ú®UÐ/W„57GâtI2‚ óGÊHo9ã­'ð:Ú«'§ Ü(]ãü!†…g)áE±úØ&ĸªnBíGhôÓwp¡S@Öªä) n‡lðÚl‡J>Ý„gÒ Ð<„ø5p:ÛŽLYäºTÏ ~Ü>¶ê™¸{ÐSÉ÷± >ÃÎútМà¯]º¾¹Ðᢃ¸}^g¦¼¼ÓË«oÖåè1¿ß2Þ›_/Ç¢ò~ßZÁór#n·û©?çq€ï¡úôSTÖ´aV‡ ãþ­ƒŒ¾¥õ–^î÷ñó>½)Õ¦QËVð®‚IˆâÏ¿b¹²•}ÔTÔè‡úÙÁ¢¥P‡ÄŠõ‹û⣧xmïäâX¿‘ášñ+ZÒÔ„•î>°3³óGWÞ‡Àò$k3ML La“ôwЀÐiË](›=¿ƒPíºƒ /A´Ÿ`ºóÁCV„yý ~ÿÝ €åôÒÍTñ6»$¡ç®ÉF£ \½ÊÜ0I»…6Ãÿ|·6Í §ÖÜLªQ=.¢k5YUÐRO]P‚‚áÉÈGÔ‡÷¤4|[“ªc—|ÎŽãØúvZH/9§æU¡EÒ®„õ½áªÀ”=§·%r8º"íÏÆú°›£·%ß#1²•3Ð:eçIk©M‹µ}Lu÷VÂÒè⬳#;žu ¦‘áöçΫzŽ<-æ º¼ç`j~élG?+‹³ÐþŠÏ|ðþ§‹={k2Íý%U§§ÞzÛáçnL¨ÿcoúö×ѪMcåü m©Ršryþð6ßBήúñ%•^Grün#ÁñÒ ×_N‡ õàé¿§ûä“}uã¸q¨µ=’eW5êÕÕ½$èKJNåR…ø5hôF3T/'ôr;ÐØ åI¸aéñ«Œ>ªWi¸OâüÍ=:·HzGz3p,6 éŒöHP~.õ€Œ9ÇÇZ ¢µ¹~Ë’ŽZ×õn®§÷çÄRžL ¸´Ü‰b€ÏZáE´=ˆé)(§OLgŽ.gþ*Oå}¿€Ïʱ$Qç.žƱU]B—š ༆EÖê_ƒõ^çµ:c,ßV£¶˜Ì÷’Õà!)´°ÖRë‚ìë™óp6V3iSQ¶üø‰¨|™ãÈ<§Ä5ÏgªƒŽoK•Uè•wÈ„›èøÁ.FÐo7°CNâã{E¨mC®ã¿MÕeiš\Èžƒéõ.óP¯~h¨äQ©û§R€{«áh†WüsT»¶{iÙ*n¾”þlŒʽ>ãþ½^³Œùîk=]mOG<>ûÄJ·¥oöºú —Ìè~/¿!öœîò>Nƒ“±î9;˜‹àw¡qèvúðôÑ'ŽpÈênéEEKYÛuJñX@ÊjñÜ´B:¡•®µœucMb©ÈO¥µØ4hP‰ÔÚ!§Ý[iéÖMgž\‰ äΈÒ61žéŠUmä +Èøt%Z§ê²*ʨêÇëþ’9%â ?ç@* ÐÀ† àþ µÊ žý÷* ?ú¢6>—¾ÒpW$p5¹ü®†Fk‡Ìÿxm¥~AC®Šø9¡¾ð¬±Ã“Uu‘¼‚¶º²¥r†;z#»Ñ .´ÐQí5öI¡¸$óÚŠ—ÔÌ¢#Ðz7åé[ŽòÇñpi¶^ë±%×iUT†æP°úÏVØÂßPøZˆúåÓoö§!R»®b¶î‡ sâo)1}ƒH©($Ù ‹QT¢s·X©¿ ö™ƒA| ÷ö!ÇÇ Sî3yÙILû¤¿ß„±[1El.ÃiÜUHlƒ©úÛ(Aµz´HŒŽïD¸¯ß'ûéœ?«éÿ;ŽÏ½¿ëþ½<²ÚMÇîyéÿ:Ñl·}ñ'µ¸ÇÝãˆï:‘SÊaÉJ%ÏÇÝ¢‘ …>½[É£z8릤@ënÍ#ÀHÿÏiì)kôÉЭîÈÖG­è…"K—tw[%!|üÒª¼HuÑÌ?_U/¦Ùdꢬ#DZ¢©Fª¦;Z;]$«°[³Ã'bΦúax·¤P¿¢º)ÛöTô@ Ö .™«qð[.®FYú!Dh·qþ::€ó=.ê{~ǃ>ÙpÇL—Kz܈åb‡ÇöZ‹i®sU]ûo‰Ù5º>=,Ùà|k̇–Ó{' c}¯n ?Ìj®€?Õê=òx¼Û’r÷ç×CAkY³ž­÷p›Ø\WnIÓìëäen2Ùr· I”/â ªeG(‡¡ùKÊèô/è.ê1ô{°õÚžfÝl¨·Ç»ò¥N†‰ŒU…G÷|×nW±ŸmEdÎ=òó[ÇÚÕó í}°ýž×ùžF(dÕº\º» §ì;=ž—ùóAÙ…(¨%(~¹_G{~ (ÿž»_þÙ_Ðp{í£õÁìޯ྆±ÞÙºEÍßfÉþÈzWÖ÷äèaågÞ¾…æ–“¨ Ûi2cò",?+8¼w59}f†§ò°Ép\UU ™}JUäÁÕYÔèjë Má½Ý‡õx‡?ËFq‚`a͵2Tß!GÙHM§cO.dwI¤¦SPÿTm+™6¼Ê»’QÌŸôAÔêQU’Üß¿»¡\ժ×JŽþÆ+Ö® (Ï‘ú8²mÚâNÂMRöXTØÕÍÌ’œ¿æÙ6“ÂDIù5ÆË}âYpK£Pz¹QyŒŠØ,Øy†jE 8”!‘(qçH’Î!rÁ‹¡0`¦M2×Þ®kuÓ[ Ÿ¯†ÊmÝpÔo[G[8.礳 ×B2g$?Îóš³ ñògh‹¡í{•ªØö#øú=-àÜ%[zÿÊÃA-…]—pôÕå°c‹†\d~ã|»GŸKærÕI0·û 7rœÑ1oñMÌÔç~ ;O§ï„_WÛŸƒëÜÉëÿ}mßOýý¾´úWÞL¸0u1W'ùýC徨ßÛ”•D¾yØìËÑWF$­Ñx‘<* r•T² ÈÂåÞ1œ]gD2@“d2¤ÈÚ,1ÔW ¡Â‚¦ëذ7&ªP÷+: ‚!T› Ye˜Á¡ÁÎTB!ÝBŽûtSLCÄw­Œ‚¤ÊŽÚ¯Pm–ÍbjÀ%̤¥Uj[HBâ®úäMkãM®È¦>A½:2Ü^ØŠ²TD$šgȨX£?ñÒ¤—ÐÐܾãˆ0¡ „„Dj -X©Áë$¡jŒ¤-¡i$iœôàdpâH”xJTÈÅ]Ä^Üè*k:¡Éÿ`ÂaÅôz†8%ñ4"ßÖ™ÚÆÉgYS _!ü§pyòujé²F†]ŽTVBâÜr ¯‰óÉA¡xžØŠ 7(œ‹D®µ&ÇO2cjßÞ‘-½F48q¿ÁUhh9Dœ¹™§'¡ &gÕÇ«ÕJ½ÌsžFip+±´‰HŒ„ÄúßIzIjTGúœYû½Æ£,׳#›#cÜǺ'ÔföF2—ØŽ–r挘ò#<ƒÅ/èxåýNHß$`Ëžy¢çýž²È]Íÿ7Üj…”É’F1£_‘HÌ®D3)z <§¸Êérigœ²J$ó¸3÷ «59žWFV:ú0³“–ðÄß^³ª–âz‡ºÈjžÔoÜ6K'Ò‹1¿«h×B’HÒbm¦F‘<ºF$dBèÆl6Åd´vdÑò-4CТZFKDÈhh#BÇBVfiDÅ™¶o¿±•:6cÒ1é ÉqÀ…óâÌùÜ]†¢AFm&öfý9Ñ3Ç+fž±½¿ÙªÆé˜T’¢1i+5’ÛÉ“*ŠI¢›²MBj3îÆ~™7ôù5{\9·é#õ%$G)§žâR5“o¢ã- Ï'fŸŠ#¨Ù…n›²¨«êÆYg&æd"¤ƒfò×DØâ2fvcÓÅJ$²&È(Ñ ˆ–B2´K–!|Ûe³•Éæo%!»ë}?PŒ~š1¥õ'šR“1ßÕ5 ¨Ù<›±;¬­ŸStMRN4he°ÕçR‰Zlsß*1ú§CnÈNp€óÌÏ%ô¢5Ê.4ä‘ó~2~佈²/­t²Ì¾ãö7ŽD=È>!¢(š#/H§ÏT/‘húèúè–­UĤ÷ í ï·WN4(¸Ë“44–fjáüF5º4f…`1Úf ™.Y6™c±p6ä98GiŽÓ³EŠç+9fLÍ*m¥éC\##õ¤b…c$B*¼L—¹/b,‹ëEt³)ö6›„P †ˆ¢hŒx=]P¾,šD³4JØâÛ!މc²XÍ:¤d÷·l•šÍ=˜Þب™â£‘Åüf‹š_Ê’ ë3 ÷]Þ›2âµl~®Ì8Ô=lÔCÿhšoÒIpAŹ‘”MŸÊ}¼s|FÓi€‰‰‰’ 1£a°²¾}¶}4Ê6tG‘@J‰û‹Û»U. KvTf–íJ‰®$#ôï3?oÊd?ŽLÓíÈ™­žÅHR§fŸó4œ^Ã4Z¨· Œ[‘/Z4Úw‘…ë"DrÙ{ФL2"K’D;v›¨ƒä„üh^kE¢È‘Š¢Š(¢Šñm¾æN"8ê$åö'‹›0ΓF‘T53Nbq1M3 VRÜÆ®Í›]\J³od‰ÅDxïc‘"7à‡$Èvî³e‹£ãBðË,bK_Ÿò ³©HSDâŸÜœ/î`Äÿ¿‡E$Ii¨ÏŽI“&=ƒÄŒ¸¬ÅŽ‘‹†}7GÒàÚbCe‰F1%Û"]h¡ʬĨ—¹/a Ëøä±È–—‰èQ‘=>H‘†R:vB;Wâ½³&4ÉÃÔa¤Í‰1òŒxí—Áÿ’ŒqúYMÆD—l‰u¢„"¬ª%îKØBòÀ~:+µ áÝ}® ¨”÷!â²8$Œžâ%ØäÇ&.Š"‰"’%!1X¨R¡Œ¢ºÙbDÅ1H²üôWjÃÈèÄïµÊÇ 6WF˜ì|È„}$Q'ÕÉHB…"D2é´hlBSu¾´W[,Bè¢(þM±—Ñ ¦áÈrÐæY”QÁÏ~ÃaEBžÒÄ}ú±‘"!~]±–X„H”‡!¶(±$6be%ÀŸ=ûÅ%¸žÄ}ú±‘"!~g,¹¸7t’$…1’2r/qI(ce•ðh¡!/Íå‡&ÎȈÑ$<> H‡#áŽ\cd]‘_Šù¬b ? Q6B<öë.I`±á¡ª1¢8ª"ᘠóù1 Ή˜Çá£#EÙ¼s±« …–йdx#Ïø4d1yœ‡>³^’+Ô8PåFáHHKà® þE ^gìפŠõV8Ù°Pø3#ÏädHÃàBðÈ‘I ×øY1x¼2$a|•Á$c_ádH‡ý‰{^8¬Ñ?áäHý‰{^8¬‘$Døv3ÿGÛà´4Q_áØÏ¹öø- WäfCå¡þ~d>Z8YWù+Ã_ è».‹¾ËüÝᢾWF'fWF'e–YäØúåÈèÅ‘í ø.ä.ˆ_D~ ãØúåŠÚbŠÚ×Ò,›7tBò±þM ÎÇÚÆE™¼¬cøì}¸DùbBòÙcT"û,²D í9—$_Ê¢2”$%岯>¨E—ÖË$@‘ì²#bü÷Q^4/*jY¾ «b_’²ûh¯™v¡ul¢Šùö_…tcí¢¾-—Õ¾FøíHK¾Ë&CñhCmñl¾­ò7ÇT!!.û,‘+íBê…ÞÇãBÄ/“EP—T/’ûº¡xc¾MQBB]P¾ •c¾ê„1‹Å2>9‘$G¬ˆ÷2{^7ÝÿÄ/! 01@"A#2P3QBa` ÿÚ?ÿçÒ‘HQÝ/´†“.IéÛ iö!adàͦÑ{m¾‡4ù¡i²Oƒô™XôÙG§È‡Žhq’7IXÄãù!MðbúvI“ú:Q²zHÕñº6òlevíGÑ· 2i2 Gz,ÈzlÈý6cô™G¥“šhŽ ²üúlåøÓ$‘/§dCÇ({›Ê‹öG£‘û!ci òQ_Ðú ôO§`ÆcÀœøFXÞJ3h®zltͦÒJ‘ôÝ/ªí™¥ RÚfšÇÆžå ïª%Ñ7‰>Q—h˙鞙[]¦KQÉ¥ú~8Œ`¸5Z†£HÛ*²8ÒD£÷‚$ºÓ)‘„™,™‹éùäý #îC/ôC*öP’›%%–Œrƒ2¸#Hȿس&S‘ŸM äŽ÷FÜ Ù¤W Á–KÜQ_5pBä̘y£m¦d,ú>*VcÈäéŵî5y”qí0[‘­Á)LP¹±ic:2h5•y¬”i$O;Ã=¬Á8æ• \öô»²m?H¶’Ñ+cÄã"¸1àõd¨iá‚£@ܦÜ\Ôq8’¸¾Hi®;ÙšD%]PXõˆêj膯q-Q-eן®GëQ=\Tmú”Òàz§!ý·Ɇ/'ÓÆ1:—¹‚1„¶¶)B“&¼Ž¸Ï™ApcƒËËcùíp}7J§Ë5Iz”…»y‘‰šmg¢¨ÓýIE‘ʲDÔÅÍY¦È¬š„•¤ikrBšs'-§óÉF J3³ë1K%£A))Y'¼Tç¸WB‡&¯>F“a#%Î&G<5´ÔË#’¶O&üŠ&£7§‰EV9WT"Ñh¤Y¥ŠÙf\•:2AWJe2î#ŠÚ(‰÷£“Ï+$ÏJ{w™rM“DQ6ðH.Š“0âYeL†ƒYrFDˆGÒ§'‘™$Ö6A¨À‹á˜$¥‘Ø–Ü–BVö¿Ä , IÈÒͦÍ\}CK‹`çø1ÄrÚ‡%²È¸É‘ÅŒ0~³#îÏÍšìŠNÉ¿ÊÇïB0O‚QÝ"qàœ:ÙcCFa6(pFq9¯J‰Çî,œ¬Ã*%ICެŒZY‹HÌZnFMsƒôØ¡¼œ6’ ! Æ7)ÄÌö¶i¥yx2}¼˜§yìÈín2êšàÅ{Œ2Üù$öŽ(„ÿyPã!ˆÊ)Q†{bþL_âlžMÙMÎÇ«½„v¢2äyúÙe î)p)rOPî‰Ï‘±±JÈʉO’Sã«ÃÛÒ“!¦L„THdŠD²©d3ÔLù‘ð7ÏjÉFƒWÅÿunÿF ¾®'ÿFþéªÉÉŠ.œŒ_àFl[Zl„ ¢¬†¢ÝŠá‹žI§>‚Vö2uüH‘#‘Æ Í«¦z©á3?¸Þ_†(‹êÆ2CF'FWb˜²¡¼¢ûl¾±%ðã+!ŽÍ±E±L²,–WKí*Ùð7ÏnÛGÓñÛ3þÖÿf ^–™¿öh±ÖCW¸pÛ…#õ./b2dõhÖÊxꙢ†ô¤5¹¤f~—¦œŒ2VäKßqCá­J„ëod3^"\¶EÇdž‹êÆHÆ44]bˆ‘´¢K‚O¶Ëë_£Ô=Cy¼²ûPºÈÓOi¨Î爿ÚHÁQÁ½Ëì1éš&‘¯ŽÖ™ôè'€Ä–?sSä½,tbý¨P£Êf6f©bF]FñuŠ"‰@”|H$J$¹#ÁEWK±BÉ. ÃåÓéM”QE_jdeD¦¸D³%Hõ6£.mÌÁþöG2¢x–J‘­{ò(šX¡/É-l¸µxdoÆÉçhžY¿*nãq ðIò6cÉ$bÉöš©óf É‹2£$Ý™2ð1¶&d}PŒŽŒ2&"DD.±#ÖËI: ìÄÇî1øÐ‰‹¬È÷ÑCˆâ!2bøueQeõÇ68î#¤rÐõ y›1¾ù2dìÜo6£jG!È!™˜¤9 c=[6ØÈ_Z+­€à(ŠÚÇß¼Þ9Žb1|Ö>±"1÷¡|z+Æ„QBØßT/–1ˆEÖ1à¿k| øSëeö¡|z+Æ„QBØßT/–1ˆE×oÚ~z±øSëeø`†»XÄ!ÆÇáBÄ/ ÛeõBºÉÙCäYc‘y`‰.Ö1cñ±øP†1 ÃEvßb…Ö.É:‡"Ëüh]¬}²!Û"#„L^7ØÇÕŒBêÆ1‘ö#ïÚÇÚ…Ö K¯äÊdö_É—àÿÿÙinstagram-feed/admin/builder/assets/img/ext-reviews.png000064400000006727151435171370017241 0ustar00‰PNG  IHDRÔýó£©ÔÌPLTE///oooÿÿÿüüüÿÿÿøøøÿÿÿÜÝáééìåæé–ÌY«FãO÷÷øñòôûûüàáåäåéîîðßòùêõèüéáëëî€Ëæ¬Õ£ñ§‡òòô¿åò_½ßÖêÑøÓ×ˋî‘h?°Ùê{JììïÏ‚Àtc°QåZÏìö¯ÞïßïÜ0ªÖ£ÓúÞÒËåÅ÷È´ƒÀtx»hmµ]ép;çe,oÃâO·Û¢Ð—Å€ðœwì†Y”»QtRNS  ï‘€ƒÝß*ƒ «IDATxÚÜ\‰ŽÓ0¸K9BQ «n•€Õ® ‰‰ãÿÿ‰ÌØÎØñzØí¼nRgj»yû|Lœtš*9*„úלª©¥)@)øs›š|ìŽ! å‡coÂ4¾“1*JX4ÇŒÙ,tº¶*LÙ7ÿŽ{Jyj (§EXe¡:Éî!l•TRBQÚ› þ¿D©”;T,†ÝØ{¨F3ž í“p4Úý6–ÃÇŒîå„¶ÆgLóâ©Ls Ý¿Û4îÞ‹X¡®÷º“Ç}¥bN͉ë„ZÙ~F¬DÇBŒø g !˜4} Ń”ÁN…À©Cv PŠZŸáBJ)s#©þp½p~è»Ó€”B4DJê$G¿_ØßFëåËÚ¦¢æ§ò¤¶(Ò#ûZÛ.‡Ë«ª¦h`5v)9%Õ[JŸÊ‰u±Ù¼¬jšIJ‰D©Þ!¥ò¬.7›Ëš¦B¥ˆ””mÔöH€'wc |¿pQÓTØürJí- RÊâzÚX.}{»±øzuyQÓTL ŠvÚ¡R¥Òø|àyMSAók,„ZGB=J”Bì»<«çUMóÐjé9) Õ&B‘RD®Ï²z^ÕT@Jøµ–X©Ã*QÊãÔsåºAUÓlRrPŠúT¨Ôy^©ë¤×¹ßV5•(¥P§¤ù­2JÒ™×ᢪi&N¹yj•U*%õq³¹º¸æÌ5MÅnRÚ§ˆÂŸ•z~õýÐo?kšJú”WªFÏTêåè Ô4Í&»I!©ë|Ÿ:ïŽ8¢»ö7!uÈ+u莭äQÄ—}^©#¿Æ!Ýß3"òýö9¥öÝqCƒ›DÍ/vh§JˆPäû,)ÂõÍJ»P]zéÆ$‰7)µíŽ­6ÞŸm„ëS„>Uêø é29¬B¥N¢CM< e<)Âv+u}ômoBJd3½Pû I™ŒïGèç¸Þr2ËÎÑ’b€V‡¤„Ö@ó#ÂHJAó£‹D¤¢>e˜ô©xÙYJ&}*Zxá¡T+eàÐÎTj»rx<‘ âBÿ\øéá¶æW:úmþœßzƒ tH/:µú¤Úx Ð,HiޤZI /Œš^z æ+õØáЇ8€)‹´Ì¿î·Óü8ºI —É×ÞHdx=¥¸¹I¡GÁF)\"ã6PØ+_e9 Ãår^Šñ(œ”RÍx'g¦R3xr+È+¨ ÜtS³•*ru*‚”Rï§YÒ:ôýRî1fJÑ Ó`5—†3€=–„.a³›¥?Ë¥X³Pš"(fÜ&†â.‰¥°©á%¥ûÄç _F,a/]!š1 啾n8^Ÿ¾êÆw{L߉™`ÃÓn"•ðO4#!ƒdŒ·”°ç»„´AÖþ¨°/:¦ U4f0ö ±œÑÔDß“”â1'´úüj9щI€µ(fn,¬…á ¡ž¸N>À)¥t @ó¼3 Ûå"TøÄ"‡Öt `Dèú1‰EÓqâ5.\¢P‚O€5AB•X{ñ¢ª©Ò€TÊ“* °öêumSÁ ‚ £)°¶[¯_Ô4’ú‡k°õ¡ÖëW•Må+´Ã~Jjë(‘Rùßο[ØU7å1/l¤H•J£&í^ýøòfmñùõ«]MÓ\RÙçÒ©ñ9ä"ü=[xVÓT~{T)*Q #‡äY=«jšOJxNiŒ—T)DŸeõ¬ªi6)Ž~q4žT©l4ž×®T64?º=çy¥Òk®s¿©i*ýpî¬å•Z¥3¯Ã®¦©Œ”ºé1"’(•ú°^Úí†9óCMSÙó~tw~¦RÏ>½@?ôË÷š¦R*(ô<¥^ŒÎ@MSÉCŒ´ÞXË*uüÖâˆÁÑžSêè¬iI›Æ}ªÏ*uìa†¥Ü£àÅ,úX#²›é<úµ¡böÔ%å¡F]ÕŽÂýª§.X» `á X›=u ™_&\÷°öùG>5/§¬èAa¬Ý/§¬-ýš),bÄvýóÓÎß³ïöd£ƒ/_7½ãå×ßEÍ733ˆ*ÛÓq%‡(! —„A5QÇd{Í#Š€ž¥|}È~þ8°ç½1Pé¢òÄzØè—-~j¤›ÞòÄz¸e‹È†ôŒ¢2Sd£›‘Œÿ~M¬Ž+ŠL丢8Ãxyõ¾ˆ!ž(>¸F¶ù”"á šÍS>óÍÇ"¶—•0‡§Æ‡CÞá¾ßÿ'AÅ÷T6\é¢4tæ×¡¦Ã /‚|Wé‹HF`µ@žSñ–Ø,¢þ±\çT p ÓÜ£  Ú'‰Ið’Ã$1 °zøÕ#Ï9eWéén;—¤Ô¸|o ‹©‡æa‘ t€5a´Lå)ݦóJ$¬:D™—,€µ‘X“°¦w¢XVÀÚ%ùj+`­{*u1U/ÏK{Þ^\9ÜU'kí°ns¦o£°}9(1™ô».]ÌW&ë‚VLÆ•KCG‘M3Oæ²vœ(ß1Ùü3›5ñÄWs-ë_”Çz;àRœ‰ŽÒ-È®öجlé¼³ï.Ún×¾~Ô}ÐÊÜ·Nä21¢°ÖЖž¬´&lYÏS:< a­-Kˆ%ôXA«« [ÐJ<³O`@ø±¥ú¬7m§wJ3µÍk®ÈWa¡ tq¨@ê@8Ó °uÔµÓËM—¼¬ï€¥^k )m9Oœ¯¦”µ) M†xzÕŽHC%«7e”¯Šö’Ú6´û nä–ºz°¨”Þ/ëF –…•³Þáy×*W½Ý b]–Dk@µR7õ¥ËQ5`íwwg°Û ƒá3î,Ý:HÀ­‡Uëu{ÿ·ZSh⤀âIľ YâðëO€û‹kÀš°˜­\k`lâ‚íÒ¢€›( `ÅHÔ\À°f¼âÂ"»½»`­0“€`ÍÚôuEm¬uq*B”=¥ŠÀZ?P§¢~fš'z`­Vª#N‡­i °VÕ+ÕS¦¢DIÂôz ÞyÇ©`ïü—ºFMœÚËuéº9…©Iuÿ{9©1¾‡¾&Mm „ÂC-±Uéu ÀFYѦ¶>{Ô¥É!ŽSˆ‚T5”)‚"FýDÏ‘QØ)C:ÀªÒ}½_[b§‚4žaš¤©è‚+<ü>ÂNaÀÚ4¹O¤©¸=_ðµÄ–a§Jü梦LE9å'\•A§°¨³RC]÷J)S%˜E¶Þ©fèô¥»üЦ¶‡!\E;Õ=>(SQ¢ÀÔ4¬…œÚ;`íVE&À×ÀÒÚ?`Íî ÀtSìT褱2îË)‡CpjïÜ®Ù"ÑYOU®S‰e‹ÂMaŸ^§öXsÕÎ"ÑçT€5Ö¥WØ©ý>í”yù.Ö’˜Pd«‰Dk |ÅöIÖ®FÍæ• `-Ï ~§™ àUí<òý¸¢›b{ý•‚o`Ãx±ÞS|š—ó,#~åÇy”kâõè7¶aQf';-h!"$`§@@bа¨—YKl‘4 Ê×$}ê”-ŠÉðË íaŠj‡…@÷lº¹­Þ–Œ>hYB õÒƒYï¼=üQ¸¥”Ü Ú)!˜A6ìs=Q¬’)™ ¿<ûÇ/Š÷§AÉ"ÃÃOÂã¿ÀZ&¥uVÞcÓ­àÄ÷!þòvVóÿ®Y@IEND®B`‚instagram-feed/admin/builder/assets/img/balloon-1.png000064400000003211151435171370016524 0ustar00‰PNG  IHDR/==90< pHYs  šœsRGB®ÎégAMA± üaIDATxÅZ=LG~oïÒØ ÝæhK¡I\úH™¸X‡åRŠDŠAŠ#YŠÄ!EŠ”Æ–ìÂ’eè¬p¶HRš£L\˜Âv ´¤¹†Tì¾¼7»w·»·?3ûs|è¸ý™ÝûæÍ7oÞ›„@F >‚9phЦa‚jÞ펑?€ØåãÜîB@È&<Á„€¨Au“g¤2Ø›+ÒéCFd"o7+´Æ‡\ BÚª´w[Fäi¾1EDÏùp Š„´„…_›ÊÉÒ-(ÖfâûP4qBßýÖnζÌÓoy2)ü;ØÞ]Õ+›‚qïƒ=ÕfååÎRZ¹DÙ\q»ÚEjÎ>H-wÃó(©/(¸Ziw6âîG’§;Ó[Èë ‚=í?ºQ÷"eC¶ò*埿cTœ¨ò\ ˆ!/ráÐ^(pi 6iôŒ¸Q¨:w£nÈ‹\é.”¼ÍÿrðÊU0k¿¥â§‚–·Ù³$Y½þÀUó‡ÉÉ¡\._†,p*£^o@^uR‚Fâþ=|üð»ïõ+ÁåðÞýÀy(÷²þÐò¶Š “;éñÀgªð×®Ò~´õ3@X*—²YŸµ¿à?Z^g0:câGGî±4?KŸ„xë'w4ºcR•ã™ å%‘Îxíúø÷qz ôÛ/ÉÄ}ÊF¤Ñd/0Ý“d†‹kö%ºuëctšs£¢?,q˸*aH\€N¥M¾qTB4~oÕØ{ y z±%ä…O}û Ðþk(ž3¾zubq¬ÐK-Yr%T^!Ò´ØÛ¤“ïëD¬ÿÍÌél<1+_byó‰þ2\¨„Ô·5§EÐ#ÏGfä…x¾¨0’Àh†gòg 8`½\÷©’û4ù ,o»Y‰$\(™¼’ÏÒrJ!ë@þWyM¨GósǤ“Ã^˯uúaÕÀEzò> ÅÓøSC1$<Ñ¡w¯¿‚âæ°D~ã ¤ I2$1÷Ÿ{€’»ÆÍÍðH '^Ü"ñ‹GN’R©„|$ÖýKÙÓààÅFîô½ÜÚáËÉä…PDgR¤%aðsb *ÝÆU0â†å“’èXèÉc»Óå0Aü}|lïŸÆ!]«¿öF‡u$Å‹²~ÞñAÞ^îíôO“N¼.º‘ô~~Ã%ÍV–‘¶žÅÆ#‘ý¨ÜôC‚å5@t.Ãé¾sxqq[‘XÏŠ´Kšúˆ…ÃZ}Ÿ¸À²q=pÞ?¯k}!ÂäSIû@Fø‘3i—E¶ðjypŠ;Éú¦Kû­s®'luuÍ’hý èk_IÆ ÕÂPk³{F–uØóH Ù•1°~«Kyn­GÝŠ\PCDYÀ-D>Êú9ôŽ–³(Šˆ¼÷ÝœáuXëB×aY.-^Ê_»»^iïm¨=1oÂzr™ØÍÙM®ÄŒœ mâvν‚J{wqœ- K\ µßF<Ð8* 4®IÜ-oµÜ)KûE¯«NìU¶÷LË´ÇŒàÖi±€Jô¤c²ç“}w·ØvÀZËP‰\¤ûÈLÞwȹI¤æj0ºÆ%»ˆÔåÒ‡¦òˆC!äàæÜ~h¯å!žãt+GA{wŸ.T§Ý$:åTŠß5U8yoÃdãƒéÖÃ4T¡pÐM5)äÎÊ”JÏB:æk=­I]üR*f)õ¯§iIEND®B`‚instagram-feed/admin/builder/assets/img/pushengage.svg000064400000007172151435171370017113 0ustar00 instagram-feed/admin/builder/assets/img/process-error-fetch.png000064400000001214151435171370020635 0ustar00‰PNG  IHDR98GDP pHYs  šœsRGB®ÎégAMA± üa!IDATxí›9KA€ßDASyŠ,<ñ"…G£ha'ˆ• 6"6"ê?°²°ñ(TDKÁ° Ñ€'(*Z­›¬óÆà“%;y¾¯Ù™Í¼0_æ½Ù!$,+<,t!„ðƒu«;ÖqxN6f vÜžT’GÇሼIìŸÓ"*ˆˆBüX’ ,I–¤KR%©À’T`I*°$ŒI>G^aqi]]‘»ûGÕÆÞÒÆâ˜Å¥ ¸xJú^^ÑßñØàIm@D^‹Š  ¿¯6·ö!&'”Âøèøóó’Æ&å‡â÷çÃà@/ìî$Þkjbä×X·YIœ„žNnemG "åe%)'‰¯á$Á²Œ8+X]YáY1#)WW+àLVÓÔP£V&8¦­¥9£X7­Éï5t'kÌM]ᘋ«›/÷.¯o5ê#’˜fXW:E?§.ÞOµùèX¢Å²“Ý÷‚±tíîlSmL»™é±Dê¶Ë~Êš”±íNªêXº]­jóñŠ‘ÝU:9ƒ¦ÆZÕÆ•žÿ¨57±ª/c±.M`Tò¯Â'*°$r!Ëlnï§=àìv΄¬K^\ݦ} WÉ3j6ɺd±‹‡¹‰Cx*ø9I–¤KR%©À’T`I*°$X’ ZòÈâü<ÛŽÛó@bAèŽe…†…È!ö— 8 ëWßЙÕy®c®³IEND®B`‚instagram-feed/admin/builder/assets/img/instagram.png000064400000003647151435171370016742 0ustar00‰PNG  IHDR!!WäÂo pHYs  šœsRGB®ÎégAMA± üa$Ó2hD0S, 6#¨ Ød||1 }Ð!™ié´$}ñéf(2ˆHî`EA0' ¥P5'P§7÷ì½—ßÚçflrsg"c»!Ùçî³ÏZß^ë[?ÛÐÿ86²µŒº£y›91™ˆäº.bÇò†ó€ß!®q‰©pìî<í.m “i†½hþ,'Ig‚$Í’< ᜠQ#2AŒH_™‡œQiÿAèZƒÙïˆ ×®ø'n<Ä«Zn‘OÅÛ),¤¤¼üAk‚ƒC @¨’úÙH0A©ñ è êYú³Y¹.^ â·^_2’,±$>r(< íc.H’=œ|×Kü¼€u¨ ¡ RÓKéˆö-Ù½.ñ 4<…f0fÖ›ŽÖŠV¡#@îøÝG—($ÏÂìæ‡]“Ây»n\ºå“÷Ý™./—ôcn.æåèF‹wáiªy’è¿íü¹·ˆ÷Äøƒ=WÎÿóûWé!ÇKö¥Y/2Cݘ£‹+kô²Ê_V×c1mé>Ž»­[´\ [G†«õóoþð¡¼l_œk6à€%þ­k—Ó+0}ÉÛZ#DÚ!c] @Œa‡Èë]£ÿðBS.•H~¨Ð­sýïSº–l72sÐËÕ àZ{òo?-¤àÕì¹–sI‹ÂÈ„G¾@$õ¶â½ò¸›ÛÒ=Âþ† v'ÏÀ€ÕËTsÊÇB½Fâ*×ðIê6ÉÂKÅÝû)ßγ»I¶¼ÌZKg8#>fÊ^ø ¿Ð #rññîÜÖ=ÿYœ9{’¾Ò9”‘ú´ã-‚ …˜ð’(á´ò4p0¸CbVŽî×¹’8úp :´Rú¾¦t¸d~»9Ÿ=Eêê°¯νÂU8tˆ‰ÎPÚ¨ ⻟+ÌN«uDɹÎz™pXÄe—¥ÂË÷Ó¯-ò x9Q|©üέã{Œ %sÝ‹YëòèNªÍK´Oê¬Zãˆï½ó«œÊ<k†kþOOelF®žíü¼8ܳ/džG—Äùg”=uÏc—NŠ”°혵oẟ° ’5@èÀVJÎ#5älç…âÏŸ¿tÖXc ª`VBoæŸþæ- #è¶ÐzÓdï24e±8ÁåK“¯ÿèÆI 4ÒfˆI3­“›ªà¤ÃÔ†‰“><ûû›ëÖÊEcý®æuö·`úy¸³…Üõ] »…/üýÇC[|ÓÐCØvûM ÷öY‰§Mâ‡ïã·_Ü =3͆@®Ž Š5Ç(_|жbÜ[ç>Wüd•î3pàÌÔiÓ•Ñ”VÔm  Ì=q?êLªdu»9›=b>Øè%nÿ\ç§îAaµ–: …yÄîÞ«ÿ¸ôÉ= ˆÇå‡7_£wiÜ~ì:î3f µ^%Š/þë»gøð%üÔQw€¤7žøÔ½ c;_Ì9=h×u¥”%]¿g‰½¯ç-q¦ kZC8L?z󯧫T¾Qš~ÃWü .PgD/S!Ù=ÿú³gŽ€ˆ@¾ö± lš¥¸Éîã³ÂÈúG6;Å01¹u³¬â4Ã,s½$Éàr;Žþ3÷a¤‰çf-35ê¬þ >l Ž‚˜Ï3SXƒ›°ˆh«WA<x.PoeYäŽ&7(Ñ‹R¼­é…I­XûZ 'ѪýW€ÎØ»Õõþ©ÉbåÞÁšB½j×½y?VÁ‡JYú«÷Õl‚Hj0os;®²¯Œl~æ/Ï ¦ñafÞûêc9™QõaS³a9Ú¥ª N­””Vªy €V:—–l¸°&-öïÞEøn>Ôò=ÿ°ü‚ı¸IEND®B`‚instagram-feed/admin/builder/assets/img/process-single-album.png000064400000004151151435171370020777 0ustar00‰PNG  IHDRRQvf+PLTE €ƒŒ‚„ŽWX_þþþ~Šƒ…|€Šuw€Œ…‡’ùùùôôô[]d{}†ööönpxÿÿÿ@ Óÿÿÿÿÿÿðððþþþ?ޏ/u™ûûûYYYD¡Ó>›Ìÿÿÿ<•Äacldgnáááhirÿÿÿþþþ€„‘”!QjáááõõõúúúU„ ôôõþþþ?™Êþþþììì7еÿÿÿðððacißßßßßßîîîÄÄÄüüüÿÿÿ³³³µµµ)),+jˆ~Œÿÿÿ9IÿÿÿãããÿÿÿC¦Ûµåÿ‚…„Žƒ†‚Œ„‡‘}€Š{~ˆcfmgir…ˆ“x{…z|†ehp‡Š”…ˆ’pr{wzƒiktZ±àvx‚lowsubdlèôû¡Óí»çÿ®áýÐéö™ÕõJªÝL•¿R…¤úýÿóúý¹Þò|ÅíŠÇéN¬ÝE¢Ô™›¢X|”kmv`grìøÿÙñÿÔðÿÇëÿr¼äf¸ä_µäÃÄÈL‘¸e‡žZu‡õûÿãõÿßôÿÄãôƒÉïææç~ÂæÝÞà¡ÃØI𯕮¿²´¸“•WwŽóùýÜïø±Þ÷‘Ñô¬×ï•ÍëuÁëåæç©Ðç¥ÉßÔÔ×´µ»P޲’£±NŒ±]¯Š›ª‡•¢r|‡Yu‡_t„]q^myà‘7ó[tRNS  ¥!¤ð¦5„¦‹†£R-%Èšˆ1'Ž€ØÐÀ»°€[A=0*ù¼° •”‘‘pieQB621óñàÏÀ¬¬ ™–“‘xha`[ZVME@1 Š–-’IDATXÃí˜e»Ú@…´@©»»»»»{“R$P¨P¨»»»»»ÛÏëÌnØ%Ù4i*ßz¸pyÂÛ33'’:ÿõï%Iðük0À!–€¥?G2"ERqÓÞËEÓøñÌ/¾0ã^ˆÀÔCUÕI݆h9®#sNØ¿j[bUûà4Våj8ezgƒÌv.¹# œJ–[2 'wعeïitÞH=Rþ9Œ$’{¹£kÖ$* ˆáHî:°ó¼Þ%' Ñ "+Š?ÒÆ…ÈÉ=†Xº\dRž$/i‚jÞ¼]³‰ª'uí( )sÔÚµkWƒ2i]õ¨ùB‚èlZdf]*}ß+²¥ÐT:š\·.“IfxEŽõ™˜ÕÙ‰ÄÔ*ýWdX‘,•ã°)2“ʤÒúyĆ?Úä@I,ˆ©d2]¼åÙ&æ—%KáˆTZ¬Îd€˜Ìn¨Úwm‡uÓÔx!y‚ äõ‘˜Z•ÖKNĭ𦕝™·ÍŽ™ ÇÊñàVê¯C“€¼ïLD™Î…^ ÇŽŒ.±“«V¥‹N*SäMÓÆÑE²ŒÇL O¢Ë½Ÿ·hTeÓ־рÍtá2[pÈÐCyÆ”¡DX@’éø)2-9eè Eî7e¨nÎUm%¸""2´…4ó i[÷º,C¬—Ü% õŠê¨ýZ‚9+Žƒ®øëÁt¹Võ¨‘±uÙð!2ä¯Ç2äQ "!KÑ% z¶xÏ3¤XZIÇ.38pS†ö^=}Å ˆ’í3TuYxÍ€'·­\¹ò”Í9Cˆ$Ó)½P‰Nœ^Iµí²u-zzs‹S†P¤•At‰Hbð ™®š’¹õ¦ªÉúPÈP8Ž¢›tŠÝqF£ÚZ“!I§lD¦£9qÊÄâOŠ·–5¦³ÕâZ2„±4¤—Ù⻕¶:©îxרüÈ>CÀ$IGd2…¿kÜyV´ÕÈÉ{ÙVË´^¸mÃÛ~`—f§ƒûx†xá nDþR4ø\²â·¢D(ÜÈUɬ^yl>9§ýT˜&ž!>ozðà•i]*vQOû )8ž¦dú$ŒÄE½ì2„'tIÖ¡Ìàu¬Ø]Ë0Cbá "Á%Ë«ØUý€]Ö"o“Š™AWu©‡Â)סÂ+¨¸¬ýºëGb.!–;¡b/·Cb,Cà‘Ÿ=ñÄ ID¼—°]ôŠ3Ä Bá¿Ã.ö'ž-~ðŠLˆ±ä!‚%8[¼¸ûŽ+EÌØËžz` Æ_/ó¹ï—Žî¹pçð/g¨ŽKZ9œÇ!Dë­Éår›s›7ÿä݇Ý3TG`Ò#2„?³ ™•õ7lÈç׬A2Â_z€d· ‰' (~«CŒ ¥M›Ö¯_¿qã1 3ôfB~dÇ ñ»2aÖ‡‹3ð©ëÅB©TA0’722¶#wüÛÑ=ow÷gÈÅ‘Å$[Œ²2j5\C¦p΂ŠÅB¡R2ñ| =#éù5ùü×£¦MîÂ2$v“Žh4^£Úµk׬]3T'аaC† <³-ª×¢>}ú4Ã2ĉœ Ѐ‚A‚ p8F"±x¼nÝD"ѺC¿V­ZµG56Ôªu,(;Ü…@(P™jÉ Ç€LРú¿C‡x”·RdR(rÑ.>¨gpŒh€øh=‹úe[då`d£iöÓŽà£j?¢(†$X»aDË 悽èÓ'ý ‰¯\ebŽ©k™vkÈá&#y1akÉ2Gck8QòrkwÂlšâ܉Ü-ã dÖeŽcDW,ùÏéö¢UyQÍ·Ì*¶kÏ2¾LßqŸü‰¨A¶Bý[¢´ÿú÷úƒ¾<¤Í|íIEND®B`‚instagram-feed/admin/builder/assets/img/dummy-author.png000064400000005342151435171370017402 0ustar00‰PNG  IHDR22‘]æsRGBÙÉ, œIDATX…½YiÕþνݯß2o™73¬šˆŠhÊ} qI4q­’2*¸QƒI\ µS¦PS.QÔXB*–ZZ±¬KË…ÑBQGAÄPÔ˜™÷æ-ݯ»ï=ùÑ= 3ôÌç»çž{ÎwN3ãû3XcG%D ‰ï£•vV€1°yåCˆÝ÷[°´‚ác÷6oó:¿m£.uA+JfŒæ½Œ½Æ#öé]LD{ë`÷ìTªËØË¸ë[UW{.¶«‘B44šc'$Ž:=yâcäOúí䇆գº¼è‘Ò³÷{›>‘°0bôøƒZq­Êž/²M©“.Ìœ“l±KÈꆥ„ô·|Öõàåö{¯’eQ<ï(¦"øž.—Œ‘ãr—ÍM´/ÄKù†³rqÇÝÓUçw"Ý­Áz å²eŒjßA\«²ëd/¼9;ã¶:‘ÕqM´‚4ì/l›3YWŠ"ÝåGcBW+± Ǥ;KW+`(LK4äŠÿµkþU¬!|a …ICÈÚšew^À¾ ÃD™¢}LÐ:;m”ê³€5˜D¾©ôÌ<‘Ìd/¾=pÿ fõk©Ž-›®k•ØøÃÍÑûê®Nö\H£ÿA©ËÅı§[þ‚(ë ¡<‘o,>yGuÉS´ÚmXQ×ü«UÛ&2ãrØÜ%¹?Ý#ó#u±“=—vÇšbVvÆm` yŠÅ#Z³H¦ºæ_í·m‰A¢s`XZAˆê’§ªKŸ£t#ŬÚ'+¼gν~ļwr3ï’ùªÐɾ iÀ0u©Øð›ßÅö= D"“§x Zõ÷(k˜–*l->zˆ °`1ƒ×ìî§î¤˜­AJW—<Ö"Óœ™rãˆy­¹™wÊÜp]ìd»,óÃ2ü988‘ȈDG“òE:W]ölmÍ21ÐQK+UßøûùG”H5´ñ„ݺˆí ˜¡<‘iÊL=b^knæ]˦'_-›÷ Ì• 9(Õ›cû±R¥gîCp{v–Ъ¼è2Œ0r™Køß|é¬Z @`†R"Ûœ™rã¨ÇV§Ïžf f‰†|Ä!öìY$œ•‹½MŸ€tD„EÁÒ Dîg«Ü ï‡! ¨¾ñ4@aJ”2—Fñdø#k"×Â$ dH"‚jM=5JºR®.{AÀÕ‹€Ýºˆm§OÓZ$SµÕKUç·2T·ÜötÀ €â ºàëj‘«%®UصÙw{ó°V3œ÷_ëÈB•Ó„P[½ŒLÙg+BÂÝôý΋ §Í„Ö=»Úñ°ˆ$Ž8Ewµ34WŠÚ.s­ÊN…=‡k”GV±¸¿y­ß¾Ù¾÷vb20,férÁßò)™Vè Ò•‚°R¹×&Ž:# £H@bÒäĤɽZ½»Ûeh¥«Ý…Gor>x+EïË5Æð½ÁÜïnDÃòÛ6êÂVH30ϵ*{µÄÑgf§ßX4šþzt *D2-2-¤²ªÐ^üçµÎÊÅ"‘RUÛûj]â˜3w.e;"P[ص)eYWŠæ^ûe§ßš<á<ÔÏ6Iô: çû­…^¡¶~#Ò9fAµmŠ|;Ê[€.leÍBH]éNŸueãå€R Ú%’‰žb廹ô̽0c"›‡òÁ‚.u *{Eç-vª`0¦é|¸¤úú“ e=œ¤¯" !ü-Úo8¹ûßwS2M†å‡ÿ%°ë„OõÀ —1“4ü¯Öm»ã¢­s&{_¯‡4ÀÑ™&B´‘óá’ï®:Úùø-‘ËN‡†EV²g»LVBdóöŠçÛ®™Ôý̽â¦NKÑ<šÌ˜ˆ'#ʃbñðiXDD¶’zËŽòE:¿Vxèú¶kŽu×¾²s_UZ£ÇçfÞ£ËÝýƒ’ ‘iFO@ @6¢X¢aåÁˆQ<é}µž•4ƘÃJ'$´J<-qÌéºT€ì‹Œa © Ú[ư½e¶¾×{G¤ÉvI¤›†ÿýMë _€y°~š(äì:dϹ?Ü+’é>œ‚†0Æ€ºn"˜EºÑ½{µ°&Hƒ«%Ù4zØ]¯˜ã&Bù…Vû· @— ÞæuJµ4àÕÌ1d¦Î֥'ræÞÕ+¸A€uÐ$öÃD¥Ë]²ytËí/™c'Àï!òÛ­îXΔP]úô·—¼mÎY•Wÿ¥‹[aZÒç\ÛÿP®!$±ëã&-cÊY,"ñ#O£˜0;•ØO1ÿ=sì`ÄèJÑÿöóÚ'oU^yÜ]ߊí7@öò e¿ûrÇÝ3¾»üˆÎû/sÞÿ5ÝðYIhE$ÙõGž ¢H‚Ù¾2кíºãܵïÉ–Q¼†é½ÞߺEµoRߨB».ØuÔ6;3å÷ùYCù $Ïï®8A¼Ø­±S%ic'4œz‰óÁëNë)‘‚RÃç½kŽ9Z撚ÍAûFꔋk«W°ïv̽X—»{üK$ Hƒ¤AVBæ•Ô5!¡ ìÏëR·ÈåƒlN†I™{Vx2‘ö£a5ÅS™©³ÙuÃnSùP>´ê‡0X“aªB›ß¾9xËýâ#wÃJЧ":k(iêR!yâyÖÄIƒÌpÎ=BBëÔIÓÇž¡»;ìÍ…ÔvÅßòið—ýæslÛ² ðj²qxî’;{ØØZ„$|BþÊù2?’k#‚boãÇØuì·_ +ÙÌ|PÛ•Æ+”-cv&ÊõÃÐZ×4û‰0DvFÆ oã€Ýµ+¼S<U. Rꮮ܌[’ÇŸ­ª^XÁQ*?~ȯšf?Á^½ZÿÓd&Ãô¾þ êò…ìy>‚tWgæüë2Í &SC˜i@ùÉãÎi¹u¡ˆ§t¹Ð7³3¦.´ûmU¯‘eõID$Mvk\.f/½-wÙܬ%õM§¥¥âGž6ì¾¥ñŸ ‹ì9Fh@HöjåRí›{š%‚ÁýU…™Ù|Ë‚ì…Vuœw}¤Ë\~é¡Ò‚¼Íë HÄ0L€Hì{!±V>×ö}ÙØ’:yZfêl‘mÙ3#Ý@¶ÀíruùûÍgÝ +UWI†ÁžÇŽM†é¼1vBâè3’'L Õ€÷@Û1>tq›·åÓ®yW¹ÖXh8ã2Ù4Ês€l.ß­ÏCÍN#„±L0É6[Ùf€ÙóbûšúõŒÞ…ÁÇ•]mà€ºC>Ûö†‘Ë/?ì®]E{_­ Ñy«û1`…‰TpÍ)¿üplÿC¬ƒ'9­¯ÙË@uõEƒÊî~!Ûœ.DCDNë+"×øàõîGµgä{}Œ % 9Á¥«³áJþÛ¿{K²¼ÝIEND®B`‚instagram-feed/admin/builder/assets/img/monsterinsight.png000064400000003140151435171370020016 0ustar00‰PNG  IHDRr ß” pHYs  šœsRGB®ÎégAMA± üaõIDATxíUiluÿͽwwÛݶ@[§ciZP"$` „(¹‚QL´hLøBXÃ#_€oc4&à.o ¨¡ Aä¾J9ºÐ––ìì=»sùf[ªÐð³¾d2™ÿ¼™ß{¿÷ÞïÿYxá¸áˆ„w2þ…±Oã$qØ$…pöÑŸ‡_;–´†çÿÒ€§´'Ú î±±º¾H†„³áyêòçó®+)÷n „œ°À¯ÅS3ˆ¥é[_N÷U•Õ…a‘AbÐÚ¬(½ê7£*¼«Ü>J_ñ¨ŠTÚ’Ö¬´LkÕæýsÈ{ªëri¹§°Žtwšàšf ‡òq>¿®!f[.k€åˆ¼ÕTrËÊ}5‚ÇØð”š–l'_Vå•'M É¢ƒ…¡[èjOàvKŒ,è9™”Adá/r¢²:@~,Ëzl# ¡ô£¥GZKƸd_¡†aápõÇt£ùzÚUˆNe,9DòQ &²ªN~2i ,à Í"®dÃ[öÍÙŒ'QÊñ JÊݽf M3ÐÕGõ„ zÿ0)†aåiuyD¸=ý4³,ƒø}uØ1hšV„¢–Õ´™–èœ:sêg” ª¶¬›E{[7.)躒„HµµÍÎãØ|DOä©©9"v7E:@xh”s—U87è÷ÜX?|Å:j<8ÿ]Ô¸'ÑšÊ*ˆ¥Hë e8@îу©Uï,Sé©ã)»;ínœ½T†Ó=´¡]ÅÐà ‰8zø:ØS¨¨÷ °šƒ*µ¾é ”ÊÁÒªóí‘feÄ ©Ë"jJ§Vg!:ìzºTxÈ'µc/î; 7ÇÃSW‹½™^}ÿLx¾ÉœNMnaù’ù¸qçnãš×5Õ755åA‡Œ ë¶I%°GÁ6_©chf æ`ŵXvòWü¶}' |^Lœ8ñ¬–³ÍöÅTä sðÙìâô•ËèŒFÑ‹â‹Xæ¿>Ššôá¨ø™P¨«AYõXŒ¯ß8,¥öÀº$f“®÷êÔíWâ(®ñ¢ÌGÔŠ<_ï–=;‘J¥¨ ŒS•ü?í<ŒÁ‡·ƒ/BdYÜTú0eý‡ùÿƒò°€.³¶¨Ô#?äi&S÷²Ø·¡Óß{Þ" œ™ØØÒŠã­-yŸë J" 3CÖá­ù2^ê=Æÿ1Sƒê“L¥Î $õo¨xÖ×h,”ûýôd‰Ú²q^xû²8ûÃ]Ìü ZùhDW¯À¤ö0é ¢m9ìÙ± +ßz’Ë .—‚ûòhžb´ôÆIúpîô™mC½é]¯_DBÑm©ì¯…À å|'‡Èáê¾nøÊàDÉØh${rÈuª$y-8Þt ³ç½Ct£eÉÖü÷m‘Ûøö«Ý˜S¶:pûògƒZºqå‰Ö1²W¶ïu$0®6@54¡¦ ÄúÔ¼/ áAPºfý³¸Õ}½Æ TÔŒ†ËåµËWÑ}3†ÓW ÕÐq!ø¬i–Â4‹_’8Ù$I²/XÌ@ Y¤b:H+ùüɪŠ'£ “ÑKÛÄI¡»%ÆDܺڃPi!4—Y@ný€PU?Ïû`}INÿèp9l]\ÉÙ›o"[(;…óÛgv€¶ÈÛÓòýÉÎÛéÀBOf ®§Á›œ‹hO:òùþÙ·m¨ü*ªª\<ÝKÞCÛ­(’qUѲz„^Ÿó8Hi$ ‚'µˆÞlDéÍ,²;ÙÞ,AüA' ‹´5ÔÍŸ|?kQ´'·ŽY…¡ŠõÄï ³ýnãCM³­i‘²|Æö†¾¾\XÓõ&–e’êO Š¡:¤ŠÆŠ~–ã:aYTc5Kû‘£… ›_Iv¿¼žnëk릅ïàwë깓G|3rQÈ~ô‹œµ€#nU5¯«˜0-…ù£¦j,0`PÖ¶˜v½•/-þÿyû žçƒª–øIEND®B`‚instagram-feed/admin/builder/assets/img/reviews.png000064400000003630151435171370016431 0ustar00‰PNG  IHDRÏP qPLTEþôïÿÿÿýóîØÚÝüòíùïêûñìëìîôêåãOöìçýøöíèæïæáäÛ×îäàãÚÖõñïöòðñçãüéáæÝØîêèøÓÃçèêåZððòÿúøôðîçe,óôõøóñúÞÒî‘hñ§‡ê{Jðœw÷È´ô½¥ó²•èp;ñ§†ép;ù÷öì†Yõ½¥î‘iðëèF‰ìÃIDATxÚìÏA ÂP „á!ÌÎ#ôþ÷´ó†>¤ uùi6ø³™õ[O#þcTÝêz†][9^V´§ÝïôÔqÞ-¢;Wõû-dÙéæä•Ú;åëÌJï 94N¯„ûÉg=J8Ðõ^g÷`'lµèaküÍ-zlÇ.V´j~㸵n5·Ù}õIô& ÃP8̓¹"eV ¥P6ÁþÿÏ[Ý¢÷‚)—ð6¬pð§ž]ž5  È[»§Ì³+òÖá̞ǵz{ܦÈ[;gAÏc³çÙhyX€«Üyv+k@7t,`þ<›¥ã1§ã1nµ.òÖf`@–_ËÜyÖìá?…Aˆ“<Ø.ÛT%™I9ãxö÷Ç ‚Ç ZáÏâcТ˜*üȺ–úƒ<>YŸ_ò-ª.\/ߟϛ>‹‰êRöO’ïD’¯’|Â+y픉è–éΨ¯bÒ?Ù¿ä«$_ ÉWÓá•%ÇR©ã&ñK7êH;wþ ªÒ€×ч÷u ^elhO¬v,¢aé6•nò—XÝ y Jžõƒ<èEƒBJ7*‰ª4]†ºK¸\’‘þÔó÷7´”÷ÍÝÏŸ/qÝ’UÁ×)’/Ôšk6Tvþ.’;:x_Ñ1â–i¨œ½, ¨8‹ ™§? ·~­ãõc§|}½•ÇÚpýq§š6îžß/~¾?À½Ú‡8D^s$Èi*eËšâcÊç]^CÜwÄ>š•ú¼vV¹¿1Ïw‘·žÜ²þù^9ÔîÌ“»?ëñy[gÐø3Þ7£Â±ˆùóð>ª?Þƒ‡ó@e€{‡ß«TùÆÚ7Èæ±F¹ŽÂÌŸj­hµazæî&BKqaa?°‡þÿß­nÁЗõJû «¤© I8dNR®|],‰ùí÷óöórüT«üуøé¢ûöýÒ~Ü~/Ùñ´`…@u<²ÊÓrÃÓ’ãYC²ûo3à|`8Hà ÕâÊQhY³óu¸ýëŠêŸöDü3à¡·ÞÎ?o܃TÇcèƒ2m «LzÙßiáϳTm=ê“ØÛý#¨XúÅÏ?ïO2~þa…Ço…Œ59žæ÷G!)öäxžéïˆù÷[ zé§™Þ?ý} xñLÀ{¨ž~“kv¾I]w@šF« æï'6’Þø§@5¿w_H™õBE~Ø® TUzÀ•’s‹÷¡ ކ(0¤‡Jwãõõ¶¶OÚèà~{á0›…fð©u_£Å»£Ê÷:=–ß_óÊ·öჿõ"½8—¨KæzGÖ ‹@&¹á”m¸ÅÊè˜Þ…¬þ¡&cš–'R# c¸b 0H ž’Æ|´òÔDd\×£Û¤­¢EbDŽlàëè-Ò%iéè’µ ´mxè_ÎAR Æ­zQ¡3Rj²Z’jÁ‹uÁ}ØÖ€²ÕByùQB„LæRéld†8\¨˜¡ÐZü‡Ãkh6 fïHi‰*视Ê~L3ý–Ú,P¢ŸjÚ¶Ô:BÃ2bâdô ªÝzÝTq*ºãyˆ—-6·›>¶u°¿f4Ĺ,¢A?Ú[Ãæô?ÜaN?ÀÛ“X”ÔMq¯(¨&…EÒØÅDÄ<7_`Ú>†Ÿ õñ^þËL”\K‹¾Âu·O[øqD˜)þÐ~Ì ÐrMQ%{Ÿ²’éì>±@ÔÇ.\øÃ¿öà€@Ðÿ×íT€ƒ<®æ±·tIEND®B`‚instagram-feed/admin/builder/assets/img/photos.png000064400000001240151435171370016254 0ustar00‰PNG  IHDRшNeþâ~PLTEðððññññññ¶Ý­ö–k†ÐùC¦Û–Ήù» Èäô„ÂãÚé×ô¸žø©…òξ¸Û°ª×ŸÌåÇôÞÓ[µæÌöbºéwÇòM¬àk¿í÷œsS°âù¸›G¨Üäíâø¬‹ÒøÖéóÝêò°Õé¤ÐçóãÝ×èÓôÚÏóɶù´—÷˜oN $tRNS¿Ÿu~ñšÏIDATxÚíÚÙR1…a ´¶Kƒ0 ‹ûöþ/¨%PŠÅ„X5gÚó¿Áw“¤»Ò; ¾êQEøQ„EøQ„EøQ„EøQ„EøQ„EøQ„EøQ„EøQ„EøQ„EøQ„ß¿Mfƒ¨^B¸»‘My}z°‡–£~TO ¢á ®«Îe·â è"„Ë~\ã6E’WÞD$o"‘ÌH w"É܉$s'Ê+o"ÉÞDRºIáN”WÞDRºIíN”»I†$2ûQ$š©ZºHjÑl®ª–.*QDosýÌ’E²­t%‹Šæ¢ë³_¥ŠL¿²TQ !2Ýf‰"YˆfsÝÉEYû¢5h›¥‰¦í‹^õ[–$*[­ôG–"’¶EϺ'KU-‹&º/Ke"5w"µ£E¨HíXÑU¤æN¤æN¤æN¤æêdX“܉ÔüÜGR´¨©ùx×íf{{©uk>j RëÔ ÛD¤Ö¥=C#‘ZsQÕ ‘ZwöuG†p¹S½a)óÇ`·£?Šð£?Šð£?Šð£?Šð£?Šð£?Šð£?Šð£?Šð£?Šð£?Šð£¿Þ;ÜU>¼ôéIEND®B`‚instagram-feed/admin/builder/assets/img/videos.png000064400000001014151435171370016230 0ustar00‰PNG  IHDRÒˆ¥REáBPLTEïïïóóóñññC¦Ûÿÿÿ­Ùïr¼äÜïøÐéöÐèöèôûO«Ýôúý¡Óíf¶âZ±à[±à¸Ýò‰Çé~ÂæN«Ý•Íëõ.{tRNS@?0Œ¯wIDATxÚíØËr‚0Fa-!´·÷ÕŽ#’`»êœÌ9;gþÍ7 ‡·Æ:J$‰$B’I"$‰$B’I"$‰$B’I"$‰$B!uÿš$I¿I’$I’*I’$IR%I’$Iª$I’$I•Z'Å9!LC¿¼ZBH1…{CÜ[BHç>¬êϵ%…t=…§N×ò’B:gQ6¯†Ô‡B}iI!ÅP,n—R*“†í’BZîˆÏ÷ýË„!åoR×}Œ!7?/1¤ô@ʨâG!M+Rw¹ß}ãfJ!…é†:åÏë°¤+ž4fÒú¸7m¦RZ‘¾§~æR÷ŽDR̵)<¶/dÑ¥¼Ä¶¯Sª×Cjð¥×­¥OSã0¿aH9I’$I’$I’¤J’$I’TI’$I’*I’$‰ž$B’I"$‰$B’I"$‰$B’I"$‰$B’I"tüÑMxÔŠ<IEND®B`‚instagram-feed/admin/builder/assets/img/balloon.png000064400000002143151435171370016371 0ustar00‰PNG  IHDR )Tu+< pHYs  šœsRGB®ÎégAMA± üaøIDATx½X=LÛP¾sÜ:°”µ°¶ ,kÊÚÄÖ Ž• Z ©AêÖX:Tª*!i;B«-íJXéÐ.éÒ8×»ç8±Ûyq¢~’±ñ{y÷½»{ß½g„.@+ PŸÀqçWCò*@ral8ÃB¡¢;&êtr ÓK6šÖêO7l\×!K€,k¨ž‚"-CÐzj¿˜ƒ$hÑ¡ãêÄ@ MÜ/>‹n2nÓ)Oaú Iêàx)¬ÍýA 8I³”™Þöœµ™Øøà`d®Pæaâˆë“&ŒŽdc»¥¶%±£ ˆëƒˆ™UÃÀÏWnvè‹ìY³¾J€æ,+ÔõÙÇ€ ‹ÊHä¸büÖ°su€ …Ç -D¹þûÀü"`îËÐd»q!72ê˜RäšÐ (/¤}X¿Ó‘½«UÇ .„Èë EI'´H¤ivöv‹ÑL\oòh1nLÓ ªYr3•è°î\€.ðŪã5ÜÿT›mT>iz³^G%ñ¦d$x½¯\‚6ùžøBÉêè€<{ ù…,»{€|ÁÝ1èô~`o7ðÒÙK˜îƒk%¶wÆz6k\€NØýµ€“Šþ‡qü$Ö¹5Þû¬…g~7Æ?”:o'àB²¾G"81¡¥ gA%²Õ%ò±]Ck!¦:’c×À]cÒœ©Žú-6¨gŒñ‚,Ljµ­U)CBÁ{ÅoM,Å…Èæã7^ˆØ¨œ©¶ÔO¤YÕöÞeùk:Vèœá£]x} ô©äÄ78³ü;%½JפM<';%CÍ­¬‚Zê¼EàoªÀ¢,›Æ¡6ã¯f&ëºQˆ x“Lµ{t_=K_¹Ú“¸ìZœ(~sLòÁ^¢Š2°,GY ¾¢Ä^ð”B£ ¤–-ÇÁŽª€ »à8+±q¡«¼üð ¸ÓF÷ e¾•};•a× —¬ ?¯Aìéœ÷Ó×hâǾB0¢àza@s˜½À'Å"JõuèâÍø£÷ÛÞ…u´3Óy|}xVp¯¸|ZŒøHå]ÒôË8Ç≠Ó9PÊAz11s-;3µ‚h,w}`•„3êYÜ+ÅuÓûDðù l¥;­µM¨["púêð‘ÉLÉGªtãtãî¦Ë(Å©ÜiÆ=h™·²D´íüÃîæ%ÖÍ×1$Qk™ò—L: žýu`BR”Ç:ÇSW`¿ððð à‰ ›~;?ûIEND®B`‚instagram-feed/admin/builder/assets/img/seedProd.png000064400000007156151435171370016521 0ustar00‰PNG  IHDR€€ôà‘ùgAMA± üasRGB®ÎéRPLTEÿÿÿÿÿþÀ¾Àâßá¾üÿþþÿþÿþþþþÿÿ¾¼¾ýüüûùúí]ºÒ3<œ3'÷ÔƒÔ÷«[u¿[yyÃÞð†7¼á oxÃë Áÿƒâ›qH¥Oáf¯ýtãÓØg,™ßƒÂ!‚f?Þø€œpgdS(„èLÐqAAáÛ·îݺuïì,€,×ß‘J9ˆMà"<¼¢-9¹842"2rñéœnÌ"åAˆîwèoßëß›œ<9¹¸¸Q”•‘˜5®«>+D€¤³ný­ _\±°PX˜”#Ï$œ<"| çô[[÷zèee%%%ŒÄ÷ø$Ü?NןLb²mqÒ­Ÿ‘˜(›ê“4Zø; BôOýÖO7f/(ŠyHaÕ—Éb¦¦›%=¼mÁöãdÿÏDÒLËòØ|ÿÜÓÂ,PNÌÉ ú1Icð['ÐJÏŸÅmÎwê{t£‰’˜¾)¢/ žþpYÊÁöVÐoK>åæò`@ µÌKú¨þ .ós…è][ñ2Ú¢ÀÕ ¤ƒãUDÿОöüKˆáÅ2g‰ÿ´EŽ9(ôø_ª« n$ú{vµçwñANô1ê¿-ržXî< >Ð@ôw¥ímá'7 x2²_@-s£óÔ~…Î,Ô8ÔúGÓ{+.ó DŸŠÛŠ`Žv”Ù_•1®³¸´|hÑÿî»îŠ+<ÑXhñß§RDs ÐÅÈ$²þz§õ0¨'¿èïì¾ú€—2ÐX¼Ã•B:ÉŸSU]¦‹àr~/èï ¼y}ãS DË¡“Њê9ABÜ7ÕØü®žScPË£tªêê+>,´ÿf :V ¦«kž–L7W : ®Utƒ~@ÀÍ7bä·ñFð”ô¿ÂÄ— Aó4ÔÿG'óůD?`[ÝÆC0‚§p*LÔ¹¬Ç›4ìâv¤àè,¯{ˆØ7‚¹¢…¢¢…Œ9ç¾HÀÿ†ÞÑ“(D-T[AÝEä¿ñ‡@—U÷Œq©û!ÔÞÛ†=®À ‹WËnÛVpò–‡:œÏ¸YÜíN€£C à?ZÈCuÍ”ƒ~ÔÉ—ò ï‰B4˜ן¤‘˜1¹4ø¶}×ÑÞük$°€‚¨¨Ý Ï6üBC^H‚û×HL¿G‰Á9|4”žÞ›ÿÀ¡÷ ® j÷î„cçxpcéh½ÿ%žX‘ð?â?Ôüô°îè'+áÊt²‘ŒDY_•n@ðÎîŠkÀHø~??˲zÿÍðH=#þïh@`ÇTÿ>¶¼p\1}ÍýžGœ}ñ+é?à¾ä!ûÛ{¢? â¥#C÷!÷ïéªA郊n0`®ú±þùŸ6¾Pß“q÷睊®2èUÅ©À€ò™.½l¼Q‚þ*zÿnlþÓEàhå3É=¼=°oàìg?~,1ôþîï$€2¸zŠôjÿ,º Õgór/%§úo0í?Àë8ÿ¿2ýggÿ Z:?P]ý¤„/€ÌwUÁäþß>ÔÞzBº~“öŸßȹcPÉùêêÃ?Ë/{õ OïÿíGó/· ’…ë¹þòàð“ñöšÀÑéý»·âÑ51<{VNûµƒõ?¹ËÏð^ú@úo:ù°³âEW&’—ÓþGÝC„ñt)¿=è“ûïÍ™7¯¼<EúÏÔ¸÷™§à&Hï¥úp-¯«+¸Eüÿö] P%ü%€#èIÏïæôáüÝ"ùÿÞ pïÞk×O à࿨<Åé8ôn?¦K÷xNW ì¥À«åúûÎÿHáÒ¯7áÝ1¬°åbÀÌÁ—>ø?p÷s¼'€ÛôìÕ›º“'o%$ýêjÀã×ÈmFF ïºøòýûcÇö Tÿ äËȪÍH€ ɯ<~ýÓÀù³gŸ<ùLûqØ&%À±þä¥XU²´t÷q uJ¿MÔçÈE !äO¥7YŸë –AÞðÆÿI0Ì·<Î ÷æï•ãO_ùC0ìº?ʬõ‰%^j cÑõ’ë?ÿ,ƒ¬9)æXsJŽõo¨ kóòT•Áy9¹êìõ°9Ú²/ÿA©G0Ö‡íØè#^7@.ÆØ¡ÌÅmö×û!ƒÄñ8÷ )±=VD&IÁ”Ì:|pÚØ‚Óâ&&âbáãe_Í_À>«þ¬ Çbs´º&ãŽõvu”" â‹Ä¬5ãø¯~/€¼e%ƒT±ƒÑ—Lº%EîüòË®8׫‡âäd×b¬þZ ˜5XäkÐc „KpбWUCO–l¤GÓYXGU“ =š%yÈ0ke ,MdÄ"ë KUk¬ÈC‡¶lfÅPìã@~¥2ãZg¢¹ ,º©I¯€˜À »!Wî\9ƒ²kÓȹžPr¯_¬µf↹—!VúÛø v½d ç ß\ Rkïk@ϯ,ZÛ”£‘#îò­©mº¯V]X@ª@¤aA  6ŒKA #•0¥V’É?²&ê+al×Ü[éŽÆ0õ}œÒ¿k½ ®Ñf{VÂĸ2›´ ltd“Y4¥zƒ(:ñés*RVbEŽÚBWã¸\õ-Ö¯± Ržæ´àCr.í$EáÛi„]eã°Á Â(;^„'HͦᱟŸJ‹u¶R“g7â爤!¦Â$&2ÊNÁG¬ä¯pÝ_MÈäkâpeˆ‚hÀ”ôñlTˆ‡a˜J‡¬0¨²±Ÿ†ÄÂo‡Pa0ƒ`ÀFæ¯Á¥J²1Pc"@›È‡ÈYëÒãɨӰ1¶¹ë;mˆÔh I÷Á!±;RÉðy©—Ù°ï eç*Cb‚ Sž’LãÈŽCÚšœ5“‡ãY%¦ZÓˆϬ&<Í6Áær¦26 ÛrpˆžÚcÍØFô†W(¶(˲ÅÜÄ0ŸÜåø,Rc‘Õ† Ê¿`œEš ñraWø€ç°+*•+¸CH}Æ  êäVÌ`_È›•¾Ò] œˆ:‹Ti¢J³ü>lÁgÔXk°Ñœëª ÷€i±_ô–q˜;ϰ‡a6\9üWcé¬á,° ‡Ø;X!ò¸Ø\g’F*háSb´Ò Ñ ¨º ,u1~4‘¢¤[²V/@,”èé¾â0› &¯…Þ¤Çñ´„PXM,¦ÔÞÉ å5VR¤ÿnÇŠ•¢ C&9‚¤Õ0*uN†Š>¸!™±*[ÒØZ¥ó+¬ýÈìÝBÄ|ÁíXøôß;÷öíCR^oú' µ,“ú{$dÇ–¢¨WÄ•ÿókHë˜BnÍ&á[("AexZNÉç•:Åxix^b.†ûqwZûÓâAXë%yϸô¯(9Møâ’Ðâ$° ‰V’ šúëÈoT+…?jHW¡ÓÎnájBqðNHyK!1e/Ó›x.C•kXŒq†qÿt8çî–´ôì€ÕßÒUU‰ÐíÑâ ”¥gâÚáèŠ}PPxFd`-K1œžÁ±¸“Àû¸iüÊÅ©ìF#k/f•û¯DÅçLöNgýinž%WS硆P6+¼X‚ öqó‘ú„ÙWm±Wž·°›~,f!fï<œGûÁ54{v¥=Mü{Ô¸¦9<Ú¼÷`¦ùòàûnøÜ;QuÏWúÐ3Õm‚‚‚‚‚‚‚‚‚B¿Ó‹†­Qg xIEND®B`‚instagram-feed/admin/builder/assets/img/footer-social.png000064400000015574151435171370017525 0ustar00‰PNG  IHDRáÄ^ ¶ÍPLTEÿÿÿÿýýÿüûþúøÿûúþùöþ÷ôýôðýòíþöòøØÌúáÖøÔÉùÚÎüîèð¯µë!!þ÷øúÝÑýðêûåÛüéáúßÓûçÞøÒÈúÜÐ÷ÐÇùÖÊýýþöÍÅýòóüìåkúûãØþôõï÷ÏÅþööð°¸õÈÃüûýï­¶üëãð±µöÌÃñ³·õÈÀó¿¼ùØÌð³ºñ·¹ô½ýððöÊÂöÉÅõÅ¿üìíûèíûèéôÃÀûêîûæèüêë﮸üîñøÙßó¿¿ôÅÃó¼¼ï¬¶ùáéùÜàûåëýîïñ¶Àð´½øÙäüìï÷ÓÜùøûò¹Äð¶ÄøÜæð²ÀóÁÀýðòò¼ÇùãëøÞçò¹¼ó»ºûãå÷ÔàöÐÝ÷×âúáæùÞâøÖÝöÐÚñ¼ËôÉ×ð°¼õÌÚí°´óÅÔúãèõÍÖñ¹ÈôÉÓò¿Êööùï®»óÀÌòÀÐúáãñ·¼ùúýòò÷óÃÑóÃÎò¼¿ùßãóÆÑôÃÂ谴嬳âæñúöõùòüñêúèâ÷ÚéôñÍÅñÆ¿øíêðöüùßç鸷äìöêÉÄߪ²úòðÙª²íîôóÛÔÝÉÌëóúåñúßÛóíÔÏÒÂÒì¿»õðñó×ÍìÎÉêÿ侼zûõçåóÒÉõÅÁ챹óøýöÚÐâ¶·øæßèÔÓèèñðããéÝãæÏÍή·éäëÜÒäÈ¥±Ò¤¯§­àíú÷áÙàÐÔ篹Ŝ¬êÜìõâÝÙį黯âÄÂõÞÖ赿ۺºß±´ƒ¹ü—ÊùïéìàÙéïÞÚëÙר³¶ùååìÂÍÏ·¾Ø3^»£îãó< òǶÂÙ¾Àé@B×ÈÜÍ»ÉÏ%vöâôóŠðXX¿Úþë×ÞÄóxx«Ôû=ŽûT ùõÚÛÍ\ÆÝ¶Â­¾äªòž ìÁéß à×ÕÙ»ÍÉ?¸ÑAœÉäüîpcì..k®úìS(pºõÝyÂ蓸Å#«çK5÷¬¬ájðl?è±ãç Ô×@zÙ‘Ú±)ºëdKÆqÒ¼H!ñ7IDATxÚÌÛÍkA𱩂Ç܃ˆRÈU衽XÛª©Š`-~Uñ3ø‘XL­#µŠx‰ 9X…ªªP(´ööà)‚­è©PÿŸÙÙ™Ùí;n“i³ú$±½ýù¼3;ÛDvXg×®]›Ýl‘ÙƒlwrðàÁuN68ir‰ð4ª4ð¬2‡1¼BÍÎÃ>£Rš‰"„#”>¡62ÿƒ±°…"Ô¨kä!5"šk ¿Ã#;e|FB”Æ "¢…´Fò¤` ""ÕéJ á‘#;ùË %jcMÄàC"A¤Æ`â³÷ï?"ó`±±êŨ„QJ¤%® [è5 äy£Q›5‘”HwTc‡¡"DüDÏëQ¥56“Åh.ÑÜ¢ø>D¡Êbãyrul Ö°Y¸»éîÝÔH‰ˆ&Bh\‹”èz; !¢•.ñÁqND@ô×(„Ú¨‰Õ—ò%<R¥q—ˆy¿q„„š¹DÙa¸+±ÇODFµ±uñ úˆ'TC‡aj²[Ç[#â·r &¶xÕ¼¡Òý”v^zd¼MJ"âaôa”5š–b@‹zBCcö¨8>×xëÈ­ˆ"ÂØÊ³yÛ–-ÛZ=íí‚Ø¢ù.CJº{zðôybÿ ÑâQNDâ6.±½ÄuUm¨¤Ã÷Óîîîþt|Ò¤0÷ôˆ¸D *âvUbÑÜaxsÚ-£kFÙ#ˆj"–#bR›y|‡›*öÓ°ÏßÝÇ ó*wp_ˆˆS#¢rR[Ĥò¥ˆ§$’M+1웨cǨ‘#ÛÚñ^~"ZäF/ ÜOu‡!ù Q!±"äF‘ÇLl§DD©P¯Ãð„Ò(_Ï$¸Y·{ˆÒ¨„®RI‡a0 "^{÷rßINiƒQ"¯qâQJÜC‰ºD„–èéÀЄð9Ù!‰ˆ"^ãÄ£dPùe‘M—~%¤W æ"C‚(‰݊¨×`<Šx/þd)Rb$ ÄpvÓ³ÇÎ*£&"þ…Ð%"^"¢ç”•v ñ,ž:eRú‰bP+"„>"R[‰!ð„Pä”BR¢2R"„.A”%†a„P/DiÔƒj&Œ)=‡vüV@<ÝIÔ;*%®ÑDÑØahBOUE„P!D¸Pת³ ¢DÃ{uNoo¯4"ÙoT‹ˆÛ"!"‚¸¦) dD©ÊÒ«ˆ$‘ Uf¢ªI]‹9u'U Ébd!{Ý¸È ˆ2B£& ¤-êAÑÛ"€#†Ûb¯ hòjô-Æ[žÅHæTáCVGWYXBDŽü:=ýùŠ€(…ˆwPIÄ‘ÁÜ ’zÖ/„þÃïð!мÉ3žx1ŸÏ•2™Ì“iˆ§_¿~ýªMµH‰™,Ie³ùáR ÞO:LDþ™?œ\ê½ Œ/sÌxªÈð\™žþ0::úüy¹U[î—˜11€‡‘| 9—Ïg“‰†ð„ç ˜bÌÊHZ¬¯°v`,1hYF.^?"„&ã§76&™¥0ÁêG¼a Þ¾]»0Æ–#LÖqW½áºÛ"ðáùiÚf§Y†0«ñ†Š$â¡Å¦Ò¶ÂÁd¼~ׯWñD•ñŒ…0a-Ì$ã.±J ô?Ö,döÂT&€Pdå…W½F%̱Zƒ‡,…ÅLÂzý BDûnôõõÝîëûôi>o3¥C%[¡î©‡éSÑBÈ–!ÌŽ¤u‡lå…ĈŸZ sÖB1¥:õéÐ#¼òéiÊB˜ÄÝ¡Uò#Æu‡õ^¹rõJß·Y‡öÂÅâµrÂÓð©pŸ#´¦’™³Ê0„ ñz}zñ4|§¯œVJ/_ÿÂÌù6W(fç*f¡õ­ÅéPpWFˆ\>}4M„Ðì+¬wS(árÞ¼CªÃ»§‚ˆH$*<=n¼µøšÊ$9xÇÓáTQÿûüšû=\K‡„h+”FÁà c;xoœ‘Ŧû#(±>-^TD-¤%´°B„Ì”â’[‹~910öÂ}xty31a¼µ˜“BãÉÛ(\˜ü…ƒ~ÄNÓinÑZâî똘f†d9q_)vHGTßGуwBK!âÞÜ¡1“.,ñ*+UÿNajò÷äÔӡ¤˜R$ D{¡ˆ8‘a攦P]¥0G¶D>¥öïZ<ÃNi B;¡ŠvLŒYýN?³Æø”ösÞÒ-Âh-ìØ×ÑÁÚ¼·f)ŒgžaF¨ÐdÅÓR¢Î|Í@qð¶Jj” ±—ªÑrRu…oSú#ªPtH‰f¨u‡ºÄ‰‰ù¬Õ;Oy;a®Ž@Hˆ¤D‘Ú…P 'óE‹7ñ¹¬½0m!Dê¬Yx€Ç D‡©Ú·ÒTr¤h'ÌBØA‰¶²DØ96oñQ“T2g/Ä:tç”*U !Ò)ׯwŽ=µù<”õû2yÞ!„<„hŒ°³³£A‡/ƾÔ,\·i†>Ê‘ Aµ<¾¹@Ý\1&o-"å¶¶ò÷rkË£& ªýÈWìÞäÞ½D¼:á#-ÔDû©PU6Iaä{#ãizÔÒ è‰[ßo]k+—ÛÛ£¦ciÆýþ‰X‰ôÀÀ½{÷žàÁ“NÿÍ;Â;lÂàAµ;½IŸ ¦tZü¨Ï›˜!Ñuíí[ñ)èÖ­år¹µ¹9õÞZĆŒW“Ä@šƒêMßMi!:\³Zé ÒÀh±S*6ïlé4F››[Ë[·n»öêÕ¶ò–öæuOªºzÞ½;¨“'>?{¶BB ¼ò[Oé¦M/Ææ‹œ˜€°Æ4D7lÃj÷¨„&¢ýéMm4gΜq€èðñÓ|1•JBXûu1m2Ð1ͩ՜ ¹¿¤ðá»÷?‘¯6Ÿ„NZ cŸW.EûÏ8G ¿{÷öýûïÀ¸­}î7:‘ê…(Ù$‚u8vçñãÇïÞ—m„iûQío´C!t(ñÎÇè±Õæxj+Œ>Z³¦:"ó@k"²Ã?¼ÜIhSAðE-ŠQ/JÁÐz+"‚ö$*‚E<,Ä@q§Þyõà-uQ<¨m]j@­ *¸ ¦¢Ñ,ØŒ6µ´TŠû®ß¼Iœ¾ü'o¦#øYk=xøùÍš—6x%¢Æ•6·D[¡ƒÓ)„¢ö¶h&Ü^* ¢Dc±J«{ðÞ ¢®D6ê #áva °&XsêÔ©H$›ÿ¿…˜ˆ¢M‡ÛyÀ r!>d‹1f#lk±Ü/kuKDLoÌXˆ€(Â…ø|*½mµYìù!€¤E5q,û¾ô‰Ô¸Á@Þd6¯ ïq¬…“*TDÍÆoÞ¡Gˆ¹ŽÞ°¸é7o;\o¹á£Ãʉ ê…´D½°®®.èm1Ž>´ØÔ¬4¶¶Nš¨!ZwX‡H Z¼´o/¼s¬µb"!N@üö}c!-1m²¥e:ì—ËåÞ|íïr˜:]DhvYѼCI …B‘èK‹…Fyh[7ÔÓÓÍw“ë/'Ä(¥DM‰ú…o1âÀp8¶ÜFˆÀ¡oýýý_ äÂø[)Ä<¬ DÄ¿DüÒ %1€Ð5Fb»XIj³o§ó¼M&³ÙÞL¾au PÝa_ªÎ›Ÿñô?ç.ï°‚É®HK4"äÂp$¶„•¤w:Iò“öÐV™úî¦Óñ¸CVá."TUꌒ!€î DÉÕ Ò,ô¬4 á¦Ägñņo_ÓÆã,'SÑáBBô/‘É?}…’X] Ÿb³ Â…ðÐô–<ê&µ‰÷ Ùì.79çM| Äßaæ!„:¢U‡ˆºBÙá æMC•-Ì–ŒRr,Í'¶ãóÎTÏл܇îAÇajá>Wˆ/¨Ò©VWK 7áHdó&SDeÖ'‰°Øa›B¸Ÿ¿§x“éÁîæ/DÔSÑ÷ðf )ÑaôJÙ…æ´e:ÜÖ¶›•$“hÂP-¬§éîe…ûZ'Mò)Ñïð†Pe‡¡@8z³¬°ATˆƒ÷^‡ü³$„}©ÌÍ`wš©Vš)”DåË6&p*\æ¢Ã½Z ^>k3 !?x7“–\ aB#L·ßq…tœª„T©í éÁ;[®†ïïÎ1L®DXÉÔÂ(íù ˜äàÝ.:$ãTG4ìPNÃBph;^^(|"½º«Å¯|ÛO¸+jåPÏ;W訄“]¡~=µèpâˆ);á“ÉK¡ìÙÖDâóû¾TjˆÛ>t3e‡‚XQžhzv£B/P¼_R¡ÿ™Âz…ð „œø=‘H¥úæ1 jiºx‡“ÕÄñ–û>ªe…‘ØFft¦©ÕiØðÈlñEÓÚ5ð!z•™J¢i‰°‰è:”@„ éS‹OI ì-yÔM…ù‘ óæ&£‘ÑÞ÷õO1 CQÂÅŒ¦vaC¾·7›M& s1»ž"ŽkV+¾Œd”ÜÓäòÔѾo¦*KÔ¿hã#l@"¬ešÔ®_OŸZP!›õeddx8“ϯÚÚÔ´bÓû”¢ÂªŽ“¼C5ë©ïDT#©0ÄGi”µBš™/#?&“É’ÂrÃHê!œæJ¢y‰:a@—§ÈY€ø½Ûëõv?~;8èëW\…~ãr -¸XÎ?^÷Îß½»IaÖ“H`¾Ð€—/_¹¾Ç5ÐO\Èýa-Û[Ö)îîi·»»‹K{½û:Ö»ørr31y&¦ßÜThD'£ÆØ{w¿Ç¥}{ÿm°_ok¿»êëu{¾]w¡‹ó/''fã >ì\|Àç~•’(CÌ*Qî@„ ·E]À±&|.Ç›;<¼yÅv†‚<øTaúH¬.dŽÕ ð~èÑ£f³Ýd›ÍæÖ=à–7ðöäääá$eÇîs¼s¼ƒËuv†ëìÏCB˜&fþèV&,ó5ÛX†{ó¨ "pqqÓróÐ5??ާðAâ†.ö9}'· QŒ*G¢ |0l@yÛ÷æó=ëžûø–——7—œ®¶0‡p>øêõ‰)Îâžžžž™>›¹æx&ü}’xÝUùHTá|ø[æCÔ犺eת¡…¹…èóÕÑ„¾ÙÙéÈ0tç€7P©0™¦Ï‹ @ëÙ<ç‹õ}Kµ…ðàCÐE"¢Ï gÀ3ŸÀ[šPÖi™ÄL!yFÞ3/Oóq~h@ätþñ#Ð&Gè2 …>Qö]¦UfŸ×ëë²B H_l®(¬‹p†Â>oHH"…ãúý Ðùt‰ê£Ð #DQˆ Qh@Ë´â¹BcæCD¨#T!"xB™j*ì×#¤O\£¨!‰²ÓÈ!”í4óHL Ÿ[à!øò€ôhB%_ùÓËt|!|Vð%<&Lh@£qb”•/SÄeš8ô³_Ü >´NŸ‡Ïyº‚ÐB#VØkª¿Ö¨O'¸º*ŒB‘u†â[¦*¤Oôq‚>ï«y:gˆB¤»i¶P*Ÿ/ú \”%J`È)Ð)´RË4ëÝ4w†ôøä‰ú–q|¡ž‡|«!0!Ìbú ”.Pè P'Ȫk4ö’h@Ñ„#ŽD’]®P€ÐyáÓÕЀoÑù¨Û âcȆT¨CLIÌßL÷ÂÝ/žÄž>à"Hýð>á0Daþ2Mÿ–‘¿™¾`—;Á—œà|ÜGcúNË2¥©]…ðyEŸ—X¾Fë\¤³Ö¡‘Âê[ … DÑ×yÜé€ç}^²r„<+èûç• 9CTW(|à#Ðe@ÙG½Ðš)0µLÇÿ¢OaÉøVW;ôÈg°6j‰2 ñŠÄBò„Ï'hÀš} ¥…z"^*Dɪ>× oM€²Bu‚öF#gE–C¬¶™Èè+×Öè“MF¢ð[pŒ@)T"…èJŽ ã+òŠ+”çàè%Šó"!D™B%‡rgXô¡ ïëp€+ÜCÓd*ÌÇ*Ñx«.е‚ ˆFEH`þ*õ%6ÓÜ7S 7ÜÇR yœ´”‡ X  +¼Õä¿Ô˜Žé#D¯K¼y'ÞjTˆÊ„(OØÇ‘u¸æ¬áNêIo>)ÄMâø›)gˆF mrœçWîÓïôL…<-²…ùߟÒBœ`Lí¢B$Є$þ÷wïÅ•5êd~Y@¼g³zÁ§C9Ãüwo]¦´Â£7`_H`¡ù(L¿{§÷Î{M§œÓi³8ò¸ÐqìUªÀ¿ž¢êÛBäšIEND®B`‚instagram-feed/admin/builder/assets/img/albums.png000064400000001075151435171370016231 0ustar00‰PNG  IHDRшNeþâfPLTEòòòññññññù» ö–k†ÐùC¦ÛõÖÈ÷¨†Öéó¢Ëã»àõšËæÆÞìp«Ìo¢¿óî¢ÂÖóÚÐT±ãóåÞøµ˜öšqÍäñìíî¤Ðéó̹ø¹œ÷¡{”Îî°ÕéÒÕØ±¾Ç|ªÅf(tRNS¿Ÿu~ñš„IDATxÚíÛ nÂ@ƒáB  ]Ò&¬ÝîÉ’.j¡L„&Bò<ù¿€õÀWWÃX ,’Ï"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ¢D«j’WÕ{úB¢ê:·§¾ÓM,²(EgdÑa¯‹}ÓÓr¢ÛqÛ2ZT´ÈŸ¶¨3‹,:+‹:³È¢³²¨3‹ ‘ÁDJTc‰êm #Ú6øŠQD;üÄ"â7Fcù¢‡±tQÝà(–-Ú6ø‹íp","GšÚ¦ùÓmˆ¥Šî‘ŠáD`8N†áD`8N†áD`8N†áD`8N†áD`8N†áD ¾hƒ\Ò³¨hXµ½Ý%z8nöÝ|¤*úl>Nô8JfQ"‹:³¨$Ñ:œhõ2?Ýú¦»eïi¿ÞJÊ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,ÒÏ"ý,Òoðw2‰ò­$IEND®B`‚instagram-feed/admin/builder/assets/img/onboarding-banner.jpg000064400000141714151435171370020334 0ustar00ÿØÿàJFIFÿÛ„    %%2    %%2ÿÂðDÿÄ9  ÿÚ ñß×€ Ô€ bÀ*ÌÄÉ‚F±p C& Àa9‘$LË$n͆Aˆ˜ÖÛ˜ó÷¿Ù9N®ïZò\OOs=}jfc3$»dP€&4·!Ôßýeòmýó¿Täš» uG1Á~WzŒþsú?”bø¥00fX¸3Bi~ÆâyßèWçÿ§»Ÿ„ì@„ûß›~{ÎtçÖ”Õ$ÅÀ*TkyàÙþ‹~xú£Ò]o¶~Wú~Ez÷…Ï&L É,X T3V1V<¾ïóïQýÓñ/¢r`ÉĶô|qÝ|ûÞ~éâF L˜¿˜Ÿ¥>Fëîg‚¶ØÓBg¬À ƒ¨Â31˜ŒÄÅ8‰o¯‹?ï/ƒý+î™è~Uzψø‡½y·EóÝg¾ºÿhý¨ñ¢} ×{Z$~-ûƒ~qz_[“¯\«“ÅíZb×É€ !Lã‘„âÓ%sXÂb´)—[_cúYùÃëìâyâ8ÎΟáÿº|ßÃ÷4?Mü¿Øÿ½Ïçן÷¯Ò?5õÜ™‡æO¡ù_ã—³x Ù°YjÊ#yDf²Œ’«3Z«$fX²HV1%“ ˜­ˆµx²jàÙþ•¾rú·»8ž{᛼wá7½|Ëȵ¶ÿW<—Ü?~ƒùsô·Ì}‹õoɽÃHüÌô?-üsöOØÍ¯;Ó3F/„12‰T1’0¸ÉšW"²QUå‘,’«0Á¼1åÓ×ÙýÚðï£}ÃÔ;ÔL£ò[×|+Á>ææÚ\‡îçý3èž¹Û†b}oÃÿ<='É.Í‚wƵg FÀ1[f!1³ D²N€–62%Ž©&2ŒZr‚sX‘›D¢s b/_[Ï·:¦~èøï¼¦2Š-N»ÇxG¿yŸé'šzîÍo™Dü»âþf>†ùkˆs<×Á,”LJQ”eˆbQ¨%‰œÕ¬c2[¥RÌFe‰f`œ’ˆÌ¥™™"UYTkz1g£OwúðϤ}?Àö\!dÌʳ”þUz/”þVúŸŒmìêÛ|Y½e,MpBeTLZpFÄJ%‹Î2 «œdÂÓ˜„ÂR¡™IVI"Èe´"ðÇ}|Ççÿ{¼cèô⹸ÅSà™˜x+·toů]ðÍͲá³&4³jÆ"3Lƒ Ä#dSƒbÒ­q3–ŒÖci2dÁœq%VbÉDf'6Œ£)Ê&‰«“$Ó4IYDâ'5´kzñäÔÁ±ô4yÓo<õ?ÐŽ›ßù¦®àÉÓŸ ù‹ß¼ÓÂýÛÏ6¶563bñJôÅ…q æa(l'1ˆÄÌ„!‰œVPA’ÑH¹Ç9W3 „‰BH”ÎQ”ÉI¢dÉ¢JØŒ¤N“ˆ¼+jéz1f×Ńg·8žk’`Ùëíî;¯9"üØv2`».)d¤¦«V6V½h‚Ñ"E1 ¶ˆ@ÂHÂPVp–IˆA‚t¦b\$J MD‘$Lš&‰ÌL±BsIE²f¬Eã^´+’¹9VvÇ+ÒÛQx”ÕjâPFLÖš¡âˆ-³ E1"˜ÖUŒY”8†2[••shX2LÉ4IVDÑa5lEˆ²Ñ8‹‘b3dÓ*D¢Èb&9¬â,™ ¢bRZ¤Bb8„% U ×­5 ֘ ˜­ÂcDl¥YÍc c$àÉ*Q™ªá’d‰¢jÈ’,,RÄZX­“[%lŨ²+;,„‰C&j%‚dª`„Ì%„Ff2…f«)Z¸šê­z¢k™\MKD®&31Z0Ä!,DÅ!í€`J”ŧ3D‰ÂS,ŠÎRE°¶i4Z‹•µZ-šØ‹Õ±ÊÂh’$fD“,Õ‚2ŠbDŒ«+¬×3LÚ¨T½UšHEêZ”Ô˜¦¢±ÌÆŒJ)Œ[(Â˰A•Q™Me)&¬¢'+4\­ªÚ‹¦·"é­ªÛ5ºbÒÉ^­¨š&IVFd‚X¬¥ÆQ„JáRj›W¤ª-JÕB‰½ušSL^‰B-RÕ ˜§ ‚`”ŒE°•¦6TÎ;IUã0')ÌMI¦ÅlEˆ¹+}«j.SaM.•¨¶ÕµL\­¤â¶"dŒ£3â&6! ¡3¥ª‹Tš¢hZ¤ÓUg^Ö¡jbÔÖh^™T½q5"˜/0ŠF"Pì0,ld¬¨ÄĦ3 Ë3&¤É—"ɭȶ#fitÅö¥ñ]„]1tÖõnE³)j-•°š¶Äfbs9ˆÂq(£+1›S “TÞ˜š¢h›U®µE0Ö›ëÅ©­µÓJô¦¨½I A1‰„°œUŠØc$àA\ÒdÌÅ‘Læ“DËf.ŠÝ1tŪlÌl)³4½[åz6ØVÈ™ÂäZ­…³E±DŒ£ ”S\+MKTTµQj¥ )5ÓBh‹Q¬¶ºÔ/¯ "ôÄÖµi©0L‰à„²Éf4r$)ˆZ3h’r‰ÂsY¢Ä\‹&.Võn½nFÒ›*l«|×f[ ß¶Ëó¿\ý9ò v«p$2@0dÂD NÉð¿ŠB|™Æ·øÚ%JuâÚ«QÖ‹kÌë/F9¦oLMI©zÈ-ZÑ E(ŒVл4¶.–6rB•Y™‰’&‰¢jÜ\¥¥ö­ö¥êì+´®Ê»,{7®ÌFÊ·C8ïûà?Wzç¢z‡Ì³èÂp‰)!è~K¾ô§qçý}Ò¼Ïñ“ß>1óçróêf´Ìë'Zo­×­µbú³j"ÔE¨‹Q¨­jÊÖ­1LH¦5¶k –‰*±jʱ™Œ¦SVÔM-Vé­êß5ØšìÍv•ÚSfÕÚœ{S]˜lEm‰¯oØoú·ÓÝ#Óú÷3jŽÒÄâ·U ûõ} €-q>½ö{_ɶxÊojøO ûŸžBØé´ëMµbÚÑ}X¾¬NªúËkÅ©‹kÖô­RjLZ`´HC UÜgfj³3$‹5l-Eó[¦—©|ÆÔ×eM™®ä×niµ4ÙSj«dM83~¿xÖ°éŸÖV‡‰Âò(æ4m@‹q¼ÿ Ýå»k/JüGúä.†î~uŒ”¦Ítê-­Õ_N¶Õ‹ê¯®š"úô¾ºÕ-Jj!LÅzÌC´.–9Qve2Hµ[ar·Z» ß4Ùšl#m]ËbÚµwöÕÚShجHÖÁ±úõàXzÛ£ú„ âWÐß!tGtó™åÇ\µEµÔdÔ­õk}Eµ¢úõ¾¬M Ó3LZ•ª„V­h#À‰^3XÍ¢DÉ¢Å,/Vånµv&»3]•6”Ûµ7gâ»s]Æ=¥6¦.ˆ•-¯ƒgõƒÀ>±õÇGõ“0™±7˜NJã&K&™V+ˆJXF"ߊ?CüÑÝÓÍg—,Ö[Q:«é¯¦É¥KjÅõVÖdÖ‹QY×^˜šbÔÍ«‰®m$bqYÁ‘h̦‰–±Ì´½KÑ}©±jm+²¦ÜÓri»8öæ›ÓMÖ=•6¦.ªT¶® ¿üáõÏHyߪüKÓîêdí­ ýÑ×¶ºg’ÁÒ=‹SØx»GêE»?JñýÕ[ð ô/§9.™Û]s»·|׉ëöí¬\eu§(Íèe×ø:üŒ¾™üÿû~Ÿóõ™pBík_N'Qm8¾œ_N¹t¢ÚËkEõbúÑj"Ô-LZ‰µ15EñNˆ•£6‰ÄXNbÅ,.EÊß4ÙšíZ›*í±íÚ›“MËcÞWy‹rÔÚWn"Ú³Kë`ÚüûùÃëžó¯Vá¹±ò 7ô׳Çè•'ìÇt¹¿ÓÍžñç/»ñ>Õåü^ìŽS¤ò¬übcè]»ÈpýmÃvÏ»šŠïÂñð§w¢¾«üÌÇ¢xMÙ0×’šËé§U}:äÐ[N2éÅô×Ö­µVÖ­µÖ¡j¢ÔÅ©)‹U˜LÁ8›J´ÉdÄådÅ‘[f·"åvÚµ6”Úµ6Ø÷2WqMæ-ëWzqn)¶¦Òn¬+}]}ŸÎ¯œ~»ê_8õ~%›§tóvŸ¥ö1lÒôDý§êŽKÏùÎ÷Ôw¾Ù~_çÓ’âÍÏ›]¾õ¯åf=Á®¶e­ iDê2iÅô#&šúq“M}ZÛZ'Z-Ju“Bô”¦¢¥àš–ŒÌ$‹&'1j³•êܮ»3M‰¦Ô×ni¹8÷-MÙ¦üãÞšoN-Õ6â›%°•-«ƒkÁ¿5}}Õ^sêÿ#=?Ex¿+æ§½~†+Óóí 8}#Êý{Ýz×g´ú&Õ·YïûuÎæøLò}˱àùX¹kçøÙŽQë_*ÛÙ:$í\L@©4­DMKëÄÔ½ ­1…òróÿ/vÎE”LÒšáT䬮³]åVQ$XM©u—Ä^¦ÌÓfcf)´¦ÎJîN=ÛcÞšï1o©¿l{ÊmÅ6 ‘œwÓÁ³çï—~Æò·Dõ?IÑê;?æÏ!‡Z¯­†Üæ×íìû×?¡Ã{oŒ5»‡xeäùæ=_CnuîOÊ𿸽»å©M0d"t;Ýyq:Uóïçéo1—ªf¤Ôµetšï*Jñ:Å„æ,š_-…/­v¦·Ìm+¶¦ÅãrÔßbÝS~qïÍw§ë⻺¥ô°my_æ°ú# úŸ©ôsuöJô~Zö52þ“fí¿o‡î\CWÐ8æ·/œ¸xžß^ä{{_ïÞÙÇð­ŸúîŸ qk¸~W`a}Xp›€sŒi8~ÁЗzë÷ÈúÛ¦üõüÔ}3ñ̳`®ÑQM”¯\Ì)5جbfqÌXNÕØVõvk]˜‹Îøëý§—jo[-™®Ò›JnN=ɦÔÓji²­¹ __*øwÑü7¤ú:׿˜¾äÍÛ:—«{_ÐåøÖ_¯u;ÍÌò-ý-Í>s~¿î.ÝóKáíÿ³½‹Â¸W»—brº>5€dûuCÏŸ8oHú=«Šå»>SüÒý1ñíÙµ*´We%iªmš­(ŒLÙX²ÍlFÊ·«r6!ë>™è_»_>ýU'ËÙÜúºÚœ?Û?;:W»užSãaåx^ç/ó76¹>m/›§»ÛÛô;¼üúµÍyâ__f¬}(:ߔῚ_¥¾=¿>¥WŠ­´Õk× í N"ÂÕnEè½K«Åýñæþ»û3âFq;µåÌq´¬ù€mf £rwï/wîûè¾+Îz?Êû7äwCúOàät£gïsCwc^pü˜¯!ÃÌûëžù¿ú ï+[òœ7óIô¯ÇÛ•Þ•YDÍd"ô•ÙŠ²N¢ëRÒäl+u&U¿½üÛ׿fü_螤Î…|4€'-˜XY¬8.ëçîS½÷;çþ5óžýùÒ~‘ãÖË¡8ø^ç+Äwm Éµ•·³ù+õ‡|øÏ±­¿öñëù%‡ëìv¿`òžÏ¿ÉŽ7ÎüwŸôþ·Nöå6=Ó£é9H[ò½kð{ê϶5kÉJì¥5•DÓi®X†ad-½lE¨Øˆº+mm,Y}ñæþ»û;ãCñ{µN_G̳ãX׫ìTü®ê^íøëÒ>‘û´Óâ;ª¶N¿ä¹ìµç„ÕÈæ»X|qèŸö²ìÓ_«¢'×ÛþƒÞùû‡ÅÁøûó.ê§#ïSõž¾¯€rÝWñ[ê_Ì»vukÉŽ¦ÓRk…Qj¥JVU;.RØ‹¦/­n¬°ç÷¿›úïìÿŒý ù ×=ëñߤý ØüÁvðýêâë½Îg‘êjÊx^5Ÿsr=îßkå⻫¯wn9µÀõW)«÷í³<ø>¢kaåZœï´úÇx÷Þ.ÝÍ{Nˆ庯â¯Ô¿™–íjBô¢™šHDÓ®è,,ŠZZ‹Ë«[+lbÍÝ^oë¾ÈñÊQ=ŽÕöv þ¾éžÂõ·œw`ÓÅÍ|ýͯ“¹Çü=þ ­ûgŽv¾ïPê¬\¯Ûп=ÒÒÂyrJø´¶0þypÞõùwÁý5ÛÜ7_¢ü?ßÅ? 7+öpq?7.ŸÀ¿!ÝÜ×í¾µÓ¿?;[õÇVí}]¹ÄsLü¤øÝo-w=ÐÞCgÐ{õÞ¥;×é;ü‡ºjn櫆Òú¼w óù¾z­í _òÝWñWê_Ì»öuc–•¢‹L SUm\¡d‹!dVåm•ð¶±:Ù7ž|Ï×¼qâ?EÎ+tW6§ëÃô×Tî=Ùâ_OyK‡ô^³â;žçëüGšä:o¾yO}5ù!Ö³³×Ó³Ý]è/™ò|“êÒÍð·8þ ظÉúÏ›zÿוӋílýâïuîµÆv7ÞzÃk'Ôæ=KÌò¥ý¦õŸ“žïâóXÏêׇŠèdÖµö¥Ý<Ö §'ë{Vò±›CìøG›ëôÖ÷£æøž×è¹›×ü·UüUú“ó/ckV9iR)´ÔŠ¢ÕD×yŒ2XX­±[e±U°²³YúÌ}kÇþ#ôÅ2áM™?sÜozõÞSÛzÙzË}ãÎý3ß¼Á¹:½cÚ4-ݸ'Òß™¾]ô˜ú¼Þåx«»»K‚¯èG‘óìú¾ŸÇéü3°÷ÿu~ÕÆù^‡nÿSúØù¾?¯µöxÞÃØy9îþì[…êÞ;°õ&§~úÑ—Ï_<÷¬p¼ÛÑ:g0çúçÔæç‘vŽ@ ''_òÝWñKêOÌÝZòã…¢¤×i¦&¹U2¬,œ,•‘¢êE¨ž<‘Å›Ïqë¾2ñ¡}§Æi{{GôwÂó|ü_ÍÇqý®œÐâ}'£ù>›Ö›<'aêvWiú—Iø§ÔÝ#æ_HýŽ{¤ù+Û¼;ÛœÄ~ÔúOÍðœ0$! çnûÔšÝ÷êbÏæÿš=cC/dz/Aä|ß÷ûF¦kÍðÏ–7~§Qr¿zÕÝ÷Ü\—꿉ÿRþfììjÃ.:æ)”%\Z¸š®C6"ÈX‹ ©[IÒÐűçŸ7õÏø¿Ðž½à¸ïeñöãt§¹ÇèìhqÝ®?sG’áÜ?;ó{Çšq̺¼~óòcõž§°x‡Æ¾ºå>]îœ÷gõ'»|Ùú©ê¾oÖï½C«ß~Î<¾cùÔ>ÖM>{Þú_döî›õ{?ü[é¿gÃõ{+«könÖ‡ÒûîÜ;é.¥øŸõ'ævÆÆ¬rcªÑ\Åi®mUpÅfÈ‹-,šÝI²"T¼qgè7õ(xß»úǯcóÆï!Øü~§è××}»KämhðÌÜË©ö¶0q옸öL<~Øþ=¹Feõ˳ë¼gC´zêޭ་¿ü—¾zÃçŸVø[üG}çÒ·>…ù“„|õô­??»‡›½›Í|¯îió6´ôc&·5Ÿ»¾Íï¼/Žòλùû±~ q³ ~Pö…³ËùëÑú/-ã=gÚ§€æçÀý|yº+ÂûVö¦NÊî}#³{oKóÞ‡¤ø³æWìn•Ô{?ȸîÞë\_ØûR¿´º¯âgÔŸ™û:±¾8ÚµYY ´!U˜¬¥4Y+!%.¤Ì•/ 9þ'œú'›<—Ñûïˆç¼o‹±êáä¿sº'Ø<‡ Àsךçàþ®ÃŠdÓø××ø—ÅÆ³aãypê_–îÞ§ùqÖ½_¾¼Ã[õ§á>ßÛþgÜöðbº˜ø/}á>NcìñYù±å?tèÜ[²u:ú¯Dá|΃Îêñÿ¦ú í}û…xý vÊß}CÉþ†ù;ªyÏ@ì/¾œç_PuÎùöŽ·§›¨û½à`c«yÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÇ^>á<8û–:°00000000000001ÕŽ¬uãíøêÀǃxêÀÇ^£’ÙyÝCŸ(ÞÄlqFDZÄl‘úxåÌžì©q¡µ¢ðuÐ&7> IÍê¿î/—€þÔcC{”{PEÔ•J ¨ª33¢Ç(±Ê,r‹¢Ã [³ã•sÔ1›"’õ“²ôÊ ½?N…j¿î+/¹ÐþÆoˆ##/#i³Z‹©O>J2i q¤T¥#+ýUð¦#»ÔçãUÿpÙuã¨þÌ^3Ù:°Gôš«û†Ëó—ˆÆŠy–év¯šŒ9¨£šŒ9˜Ã˜Ž9˜ãšŒ Du|¼FÇ¡Åhì©>ÉúqD#cˆØâ68ˆÐ Ä™êƒ%_Ø™}˜ºË¨¼F/}ÄÃpmxþÊÁmò±#OË…ù™èÿåÉ!^xPuÕs.ï[éàëê\´´U,ò‘RCŽ£R#;#_åàÉkÚÊÖøYlü;K2æ ­£oÌ‹Ä}Göë ^#þæa~€ýDt›®%–Í´ù¥Ó%‡OyyðÒ4ö±! þ1)ßëe ÒÊ8ŠŠ•IŸ¹Þ6 É…qÓŠ¾FÑ=HLŸØi!Eð6¶ÞF€êP—V”uŸ€Áýiê ]Eâ1¨½Ð+ÐyŠJõ,ã°ü”ìð0ù²ónŠ÷·©¥¹ÏÌ"Ÿ$ÖîÁR_;†Iò îtɆ˜e1ÛÚ=‹I‹,&Z%«É#‰‚?þnoZÞN¨¼¨ÁõŸ× @¼F/#¶[ƒ‘öf1ºêPQ#òñ’‘fñ:þº° †Ÿ–j‚f—”´¼¥®O›†¡TXa°¥™ü)­m(-ã“”Ò&4O*V‘L—è=EƒÐ„ff ÒÙî rf;„‘Ü4Žá$w #¸ ‡é‡©‡‰‡i‡)‡†è†É†¨úZu×Wô¥Ô@ ÄbzÅ5œ¥žìrRDó’M hÄ£%ÈpÒD "\Éë4DîuÁüÕÔ—2w/SE™’Ÿû\6ȃd¸†ÓÛHeÎ"Ò„¥´¥ú.ñÀ<òðî Í”N¢e·hnçÓ ]D„ųü7öaÇrqe¡¦Äû%;”‘ƒùÏ¢Õ9Ñþ¨únÆŽpÖÿÆ­òð˜æxˆÀ[ÞD§ŒÏÎ ‘4ñÇT‡Ô‡M³ŠˆùÏ€¨êd¹K*„ñ“: œ:}Qñ‚ÔHNãæÐ9´mšGé<ÚiÖíuŠØn+ÍWOzT'gß{Ð/£Ñ•ÌY]¡2>Œ¥ÅÏVµ¯eG”ß RNíuI ^æ2@Í)/>s{Mº|ñ™äV].ép"j$4ÌèHJË åDI,’J,*ÐåZ«C—h¿VûØîA}G>ù+©É'œ6™K#øˆóæN¾Mçs„9Âáp‚$ïQ'ô-Úndê˜2_a…@íéæÎíêË^¯cuõáóžF¼‘()Yp8y0ÓêhÏ{{RàÑÏ)ÅIe_K}ìw@¾£|”ýµãª6xD–Lÿ3dQ²(Ùp£Ÿ§ M6“ÉxìPê$Ažß T„ vdn²Ÿ+¤…¨;¹â n#HW‘¨8‚¿àlÏÐiør䆺J°[Ì6+uü÷Ödµë©þ{O¥Ë—_J–sÞv+µ¤ùd¦“©–ñœDkKhQ v¶Ý&\×4Ó*‡ÒåñÉÙ'Lë›[µ¼—;JHí)#´¤ŽÒ’;JHí)#´¤ŽÒ’;JHí)"âÂBê-eô}{ä®§"žrÚb«ýȱäO0n(Œ¹EŽQc”XeƒhÌÏõ:SV¦£5¤Ä´îk!äY|ø Gù3•0B¾YÔ‡I/:Û‰q,ßÚ0d¦ûzé\Lð¤<@¡Î3ÚQ-ìšm¦m“rÖÁ.òJ”§+Qk%Å:)i¦³>3Ïè&É+ý;ok²ô}{䯦émF˜ôxiâ1íÁ„r£1·È)½©Ÿ ~KHqëM÷У³p¼ê4Ĺéæå-v ?""¥Î›æÛm§Ý}<) YdŒøé/•3iYL['xÌ™é¨3x’¤»fEÂWèÛ{]/£ Õ4œ×,lK¦*?4°ühÒ¢·¥]/c!ƒ÷ °É¼MêÊǽ·õÍ\o7 ]Ó©$´wúœô‡L@úI£ ®”(ê¾™4»g´Dé.’K –µôÉ¥Pµ1ÒÕ ŸÙGIŠ,™t“F¢3&µõ;É܃ו)õüA¦þú¡fµ0°i1[“€¼6y NÂËJ<È9ƒò%'ÐRÀiÖßyç6ToV®—½×i´ A\ÜžZɪֹ)ó7p›ž¦åF˜wk¶†œ©­— Š;½á PÖ¶â’IRiÆâ$/zwuLð\ƒ#O‘ø-½®ÈÑê/á´ ¨“‘“I޵ÓÓ“J©RŠnº‹WW2›Q¶äš³BÔìNgjÉ©‹@q¡9–VeC ;œåœÛ 9vNñ$à…eÃÐX‡ªêklˆ6´';ó¦S¦¸jª’¬ð×Y3ψª•>ÛÆ‡ßêÁä6½¬?ÂGæ&Æd—ÉßÊiçD™ ”|=ëJ¸1PË Ì¯bn8iöIÂS³ë[˜Úvªšr× ®Œìf£.5,vC§cJÌÕñÑOXªâ|×Öñc &؃ø´ï˜$ø¥°üÞ×d èïüâ6 °œƒNС@Ê4N‘u'HÕ»IPí´Ä?k|¼« åÅóT¸ ¼ƒJ݇2ñYÄ¢3iÖw ¦™¯•%‰”oÓÈ4˜IŒ‚YŠù$—ˆœlÖÃ"v¶”NYly„²¢— 5¢>#©—Úæ·¶ ’}PiIúðÛ6Ç °IIz~¥ÿîÅ àÁ¨¾à#Ђ Ô4XÈyöã£{œþÿ•2Ta+ÝÕmíV`¾Q ®¨2UYLûL@åaɬ p䳌‚RYJˆ)":[KœWS©“%qÙxÍff£I ËJãM¾Îª†¸ÄÈ’œ¬»nÖ:¼ƒ–H&Ò–z?fiÙËcéuîÅà2¤˜m³BÌÃyPm÷¦9!óRÙp£·nI Ü-½ªÌÑêšá·ˆíŽ‘²s¤Ø“!O®Z»~À‘°h¹ïÍŽé]7k>;òx=åº7 “ÍQ-D§.S$ʳpü¬l®¢p (¼±Ê3*öå.ºmÇ1ØÍší©#åèG©oHü—©ïˆ”;Ѩvù¨Ô%¸‰GjfÂ]™¨µ7íÓúÆñV‘£ÌEܹ4¾MÝÛ8L¸$Ûê6’Kk½‘çö¹]«n$Z¶‡S5Ù»Mäõ3 ,‚ùÃÿ ’5×a×qYCÒ½Çý\rKÎÆ‘¼‰hC¹/8O¥þ*‘míV`¾ÚùH[Qœ`£Fyjî³´Ì®ì¸Ê”Ó‘˜T‡ÐÉiª’­s+‘‚ôCfV°¸¡òüĤ)!^g€¤…RAJŸŽûRâ\WFÖ5¥g&é,—¦ Ê›-öãB¤‡ Éç2¥zº¦8Û|ÕØð3¹)¯ŒCäôº³¶­±Žê&ÂrÁYT«³¢°¥¨Ðøù™§8æû‹™a„fº£u/µ,R¦<ȲðÑG]„ù6m'zåQ8ä¦ ÔCkjÛ­iL›¤¤?ia>´î0ÎŒ˜ÕÞUm˜ š|̃˜nq ”Ô*ÙDûèh IÚA– „m+oj³ú_ÿÄN !1AQq‘ "2Ba’“Ñ0@PRST¡±²ÁÒáâ#3br‚$C`c4s¢%„ÂÓðñÿÚ ?ÿtXn{Žf‰•ãþñSÚ’ÁG­‡ñ,Ihòd£ú¢ÄuÍhQ2¯ò0Ìš5»:¢Â‚Ý l¶î(0Üï(7¯é÷R ‹L3ø£âBGú»ç^ìÍoŒSkDwâE#|óÙÉÜÖSE¤\"ëüÜ©…®i“¼áæÍÎ2I(I'Gw/‹¨w(r"B’qpo‡„áЀpÿPðv_¹žN Œ¯T8ÐŒg†5Ä‚+§¹mfDak†l_Ɉ@:[{NÏõ&+âlÞVຠî^Ó"þIè “•„éMεòʲ2|74è"ÕM|,œª¶ ,é³:‡(†bwW¸´ë†~~ó8Né ãH0Ü÷Jù@É6JÁåÓv‰r'–@‚ÚѼèhÖ¡>[Ø‚#o(tГáDs­¶*AÕ[ Ža›l3n/m!ÍÚß—‡|Îz"XßW/Ì­¢yÔh1a>%@[9ÎûAS) s¥:¤\V…ÊÆBug—!'FŠø‡÷ªD&µ’Š!²×rOqƤ9ÛóðéßQb½œÇ~={€M ¬ª%Åy¾zÕ £L ¡ºßw*sŒ€å*ŠøNp²yõ¬ˆÐjƒxgÁÿ/¸ë‰ÿç‡](TÑS“(8;nÜAÌSªˆ¬«9NZ §¶# ¼>¨eä]zh23·NáÕY …Î:VÑ €Ð3aáÓ" ÁD T63òçîOÏ:A†vø}õ^ÛÆg ‘:¬V¼„xMùr÷‡Ó.s¯l/©I3$çþ€ŠèQs›z…#å¡‹?s{.aù]hÖ7ÖWËnùûi¢@¡½‹Pú†ö,CêذU¨obÁT>¡½‹Ðú†ö,DêذU¨obÁT>¡½‹Pú†ö,CêذU¨obÁT>¡‹Pú†ö,CêذM¨gb¢C£¾[×ÂmIBô7ðžZy¼'ç=ئu#‰ãj{v§·j{v§·j{v£>áEƒDcLhñ›^× Ö ¶À3¬7CÂ1+Ë"Ú›šsqÞ¶Îi ‘9«Z¼f{Â~qܳî‚pN Á8#p«”sè‘CsÃ2<†¬• ì0¨ThÁÅÏisëJÍïIYü,?Hšñ™ì ùÄExÅv#ŸB>„}úýÊg4H:e¤sµQKùî Åã3ØóˆžìC½Ú<³ ì•ÂÁ™y#Ø=냢‰“gª´– wXÎÕƒ]Ö3µ`×uŒíX4ôÙÚ°sºlíX8ôÙÚ°yé³µ`÷tÙÚ°{ºlíX<ôÛÚ°yé·µ`÷tÛڨ鷵`óÓojÁŽ«TÄgjÁ®ëñ,î›;V=6v¬zÆvª ‰Äx“¹€ï§ŸŒY‘ÞD°ëÌŽt×<ž(7ņ,ªã2ãŠíÅŸŒM)¥4¦žä7¯aiÔlP0m2!&àÎCH‘µ48T9º82¬EY’t`^cHöz6´8´Üd@¾ô¤ÂéŒB©Ž­¹ÖlfÔmVº œÅ>hš¼a¥ÖÉÃN(bšššŸuóG°{ÓÌ_í³Êщ³±3Ò™éLô¦zS=)·÷ õùx‘™Ù0%[’ÕþÁ0¨Q€k‘k£Ã7­Š[)2O­‰H`‡È"Ckä9&nYÝÝ‹8Å›Ö8i͹±NB£¯ÏÞÞcHözy‹ý¶-‰*»U]ª®ÔçLMî]@Ê5ìg ¬AxÓr£á§QÙ(Ú6Dä«1šr& ˜&™Hl3 kig±%E¦ôñ*57 Ï‰CŒÓñIÊ/–‚qéÄÂ1PXéÖVµB`ªEYµÃ±C|J3î„b梘[&UÆñ¥I±á<9õ*(ñ)h,9ÁM†i0ʆðé™TÔ ²a‘kWÔ²Â5o½Ùûg÷'D-ò/ 2á4Ìc Hn|Ö7³ÞžXzŽà¯â(• ¦ëá èäLC‚ÿ¶8\NiêL‘Í˨§äŸžÍéýM÷…"óqâ;ôœbr ¹HTF–xÎÌK8ÅŒ`Ðщ¡íРÔ:‘k¦£°~’¢‚‘¤*â,;ZÓŸHBNÅe–M¼nmH绑f ÷®3€YˆÚ¦.p½F/`¹²–Õ¼{8'Ü¡4{§boá´5®Î$žçÕ34ÓªDÏ¡Éà˜„X.ÝÏZ*üÇsæ±½žôòÃÔw,l¥4´éw¾ò­ÂxQÕÉ}âvüÊ-&W­ü,ÏÎ5¦5ìw8*qáy'øý>¤ëEíuRqÆ”§­6NiQ*´s*±_mêV9•ñ´'oçt“³‰0_t)èâºh­;5ì÷§•£¸gÜ@"$]BáέÁ˜Î'ŠøÚ»È_§O:ÞØ·Í¹ ð¥š5+Fps"èQÅÑîñ‡¥06·3 êÐT<µ‰N÷3ä—¢8VÈrË7.0+Ä½Ææ4^â£Rée¾uzƒ˜Ê_^S) ´ß–B6÷ó¦Æë(•†pù=¿ÝL¤Ùýåö‚˜ªyî&GëS"ŽZö”ØÝ5_j¯ÒU¶ªûU}ª¾Õ_j/\ñèN)ÒN)ÇjµñÜù¬og½<°õa6TÊH³NQÜÌŒé™ÄŽìów ± V+Š?©£ÿ½Z/õ =¼Ï•N=÷B<6 #HåNÖ3…¿„ã¿„n<£A[׎d»Ô˜Zæ™Pß @Ô]òÄdŒûÂH±"º¬8PÄÞãzÿ ÒZƶdý¢€gá öÕycØñ'1Ã1^)Å£ØÎëÍc{=é凨ãgðôIDw+³éø äÙ¡ñïs¿jÏêѹtÂuX·3üÓjĘÓ/&(‚IÌêÐ} B;l¶âžaÅaê:B`£Ó¥½pãjÓ©2ÃEeW ß,Û‰ÊZP;P;P;P;P;TåÜ3C¥úš£F~‰‹ Îq­7}ã씓@`¥@¸bñ]¸³¸ù¬og½<°õBd™ÙáJ}ü¬K'ûSføP›—ó:Ùk'Äq:ÄCcÌé÷2mX­¼iù«.à8p™ú~ß´ÐÏ+svDàà} Ù@È -‰Æ6Üw-L 0!)w(Æ h$˜qœ§a°Þ†?íÄ¢¾,H± H±{Þ}Z—ŠíÆuopóXÞÏzyaê8‡ÝPØcbä+Q0`ÉÑãÅÍ.TkR)ÊE<§76àMÅÀ'oÈQf­S’ˆJcf9Gb#´Ú4â¡D]11/Ì3©¾…c u·ºGŒßHB«Å“øš›‰ ¦7bcv&7bw_یۂ›%,~kÙïO,=Gùª{Ä1ÈÕU¡3/óRoüSÂ8î`šmV èÌãˆèqfǶö”áFÂpYcÛŸó7KtŒÊN—Œ81GŒÂu“œ§ŸHåPêĉµêØ ·ËO{x®Æq…¥XHF2³/5ì÷§•¢³^¿ËàèSløÑszTC”{‹‰å**3ªqçCsË Õ˜ñx( >¢Zƒã ,*N—ÉÍñ‡ŒÈTØMAk §mË ÒˆÑnɬ%IƒKŸ¾:‚¥ÆyÒçLª\FŽB°„BÑy$Û±S"È*™©hÛ·ªDI¹‚véXV“vVߎՄã‰_8³!a˜öazFn2Âô§87ÇXZ0Êp–pÔòV¤<Á–º`ֳУ=”ˆuGƒ¦ÕOuÓÏØˆò3iXR4¶É§|N…O¤Rt›^ýj#žY§rq8µùx`&½õÜLùJ‚j À‚‚¹®,ç¯5ìžôew°W–™YfÕ½ŠT°Øàu'ÃŽÒr‘XÎýé…®mà«ÜUåqB¼wÔ ‚s-w!C#„¨¶çÔ<‡1L©«†ðSx‚dºRMci7 Cq)–ˆWÖ Õ?”É2zÕË&hNeÄ^ìâzt'6µÑ!™{ó§}­íѼ„=åQ`U²"[Mª’m¡­½f¾äü£å§Ô¿—>|¢Õu.×[|Û G¿•<°»>`±¢´¦ù(µÂÚÚy“3#¿6¸•¼È:±hÆ@¶CkÛ9Š-˜«U€I­>» …Šuƒ³Z˜6¡}§ZóXÞÉîÿÄ,!1AQaq ‘0¡±ð@PÁÑñá`ÿÚ?!ÿê.…kx@‘àûñzÑÙßb5bÑͤÒÄÏþ J}X>^ñ<êYì‹?%CX¯ÿ&¯ŸEÆ-²²ë@Õº"–‘Å=ÿðÊÞwdjÏÆ‡€/®›äøp÷D ò뉳ûóv$Ùp Ýo¦Çã¿ÂxNX¡Ò/÷Æe¦«GúÇËÓÞ[Yv‹mŠ sÖæ÷ «Ÿ ìFemí_êþúÔÞˆœëÅÚbÓp–¬U9P=Å›ÎçÇFdÒ3½Ÿ){DÐNþЇYgäaûà€«öOó—ÓN¡º; Õϳ`)Ì2Ûo³\”¿Úøp'ˆ{fA­ö‹é*Ô] «¼¾´ÃñsïL´{/øô¸;I5á¬;KìÅÃ‚í ØâVvá¶[†üà×ñ_r€‰ µ€ÆàÍXXúõ¹¾=¯ÞÆ 32iÎíŸl¹rç% ˜ä¡[NmòDZIµpÛ“‘~àaÄÿÜ.Cm¥ô¹x#²[OaÝ+Ó]*©98eü›õ¹ªM‚ÇÞ[›ÁÉ֎ɞ׎}•¥Í-`¥Ðß̹rà[{ô¬TÃÃò€+Õ_¸T©R¢A_‘4HBÇœv=¾ùråË—.\¹s%-Ò³ü° zk÷*•Ò¢Dš@Âku=Ôsoeþxt.\¹råÄsоãžÍ·Š®r§UX¥t¯ÜjT©]*T¨Ã &­Ô?äC¼fZïø;L Ôý@ùË—. sG79‹”:G‡Ûï n°èWJéQ?n©]jT©RºeIˆJO F‚Ÿº(Sì?h5ÿ—¦Ä;aÎeJ•*T®•ûeJ•T©R¥zOÇÒçYR¥J•*T®µûMJ•*T©R¥|`8T©R¥D‰T®•+öZ•*T©P Jô øá`TH’¢D•*TOØÉ]BT¨¥J•ñ€õ+¨ÅJ‰*TeGö„©R @ R J‡Ç‘"DŒT©Q"D•úú* R @*:Žº‰H‘Љ*$IR¿^ @•EB¨:*WEu(•Б"J•*0’¢D‰$Hþ¬• JT¨B¦:qÓ11Ñèõ©Q"D‰$H’¢Dý1Ðè@• @¥²*X©ÁMƒ˜6Ÿ{‹êªÕ™d‰1x¯RT‰&O¥• Êh¥]Ì̪W÷¢FH‘"D‰'WôÇB J•Ò¢ü±ÐÿÐ ›D°Åþ„Ÿá'øIþhÿƒðÎ1z‘¦2.š*ÄS *æª%‚ŒÔ–¢Dè$HDŒH‘ý9 @ Jƒ £îÏŽŒ@6u}Wwv ;| çà×Í)² >ì¾JÙÞ 8è"ÔH‘"D‰$H‘"~Œô! @T¨'äx‰G ˆ¡I/@’¡mï·úï·úï·ú„÷ŽÕð’Bíp×h¥#¥|¼`Uމj'BA$H‘"DŒcÑ„! @¬C1é ?¤P•*$a"D‰$Hô¨Çô: @‚%A2Æ%·3óæ~AüÏÇ¿ŸDÑ=ùÇó¯mÀˆaörŒ¾ÞRÓò'ÒèOó=”ãö“ü¤+DZŸâ§ùh?Í‚dÎ6D%J‰$H‘#$eF1ý @‚¥C·ásDá  Ë Å ƒ©…Ù1—µGÞ0ð±ýôÕÖfÝ1ƒ±_Ý”‡èAnˆ'hWÏ55žó–q>r·÷Ì«T°‚|·r+Ý J•$ ‰$H‘"D•ðÏAÐ@ @•(¨c¯ËÖ›¶^øE³ µÅv‹/åeg̺—O¿6PÐæ¶WžÑÚ3—V³/F!x>Ÿ©0¡ì@tg-Rµ¬k 9ñ x!Ò ‰$F1ŒcÇ£ðˆB„!A ¨ÅOóÖ+–p‡= O–!¯FœÀ'tKšýéµÐ¼ð“ÜA¸¼[Á¦…Ö::ÎM‡Ã+ÐG"àYiT)Jé3ò„ÇN·¨Ç¡ŒcŒB„ @„©Pµ(ûÀ ŒÙX°*†Ø1é¨ôo4­Ô‚5 n:˜ñTNÊ];Ë:/µÌº›äNê¬zï2½-máé¦*.cÜ+ëšÐëý$/Ñ.·¡lôÛFXô“Æž¬[¸£ü3¡Bè:ƒ¨ @•*T8edÌ,5ð“½ÒÄ£¨û4t¶žE€/ÁßÅʉígçJ1m¨b×AŽàKÛi&Ô_H¼¹—÷‚tÐlÑ( ±e`¥Ð˜ÑþHäoI¿¨à7¨]ˆ¯š¿&/£ðOAB!@=‡ZÔí‰!ÕW çB LK­b_È9{JÅ“–xdºg“.UŠì-Ýåê­<©ËKaüKñta_lÇžhé7õè{4¥£c˜b¯ öœ66¹þ'úŸâ©þ'úŸâ©þ'úŸâ¨Ö³Kóë©%^é«ÑŠƒÁ 9šŒÒ8LÜeÐÕôxiè}gR„!Ï‹Ä;Ùc 2' ÓR=t • ßô)V&YQkÒËqËöy˜#©kg X*è+p\B©†®›Ëªóí(‰É.“XœX„WÀnK—:;Âï©£òVóìÄ"mϼäå:ùètÈèŽÜ§ÍŠƒ‰™„؋ƭ M×Á¡ÑšŒvóAH¦AèÜcè}RCO¬ $ö»WèÔ\DÓ>Çý&¹!€˜º«É¹ïdʘþÊFÜ yŽîýšÎÒø˜¤ ̰-Ç2„$òKÈ÷ã¦w?ˆd*q VŒðÎǺv=Ó±î˜{¿Aøô}gR‡L‹¦[P æïc0 “QµµÌw1ÜÇsÌ´òø–4ô Ô6¨¦À•ú ¢½ÆX=ÙÜÛ«•²î¿…>qKÓbª€Ë«•ä@`å˜É_ä¯Ôî1GÒt!tÇEÖä_®§ËP†­bÚé÷§Þ™cåQÛ{²¹ÄÑøÛ9 AKX:%ÔOn®K"¤ÄáÒí® :Úi‹ú§VjTSÀ‚Y;ï,Ĺå(Zz«I]ü¦sĬÚŒSk¸º ­<é4¿¯Â9K©× ñqGÁ/5 ˜eù±©´|Î íšÆ6BÂ%‘jóUÎÌÙ“Uç›B¬ÚÚöøwãß~=ø÷ãß~=ø÷âÂÙ‰zo¬êB—×Sº5´y3A :©è»´ªº|_ÂúOt3À37se ®Yè&mJÿ nê«i ƒWK*µUQô”h¸ãЏïM ¨iXÍpO º-®t„Hô…Áf:”{›Ý™WÀ{ŒwÅkc­îõJy]Hã›Þñ‡øî~“Ñø'V/Ó|ëgr7‹Ú3¬ðK‹vcPפheªpŽp\ã:…Rœbc;ù$Ôõï²gynr‹ Ødš<›r´ ¸÷t3HeÄÈhQ¸cÙÌsóçPñòˆë$„;Ì|a]1Ýè€Í•Ýf];¦|œ|/Çs›=GÔB‡ZµÏ.Õ‡QO2b¬~œÐˆÉß ´–^in.9„úÎlèôz>£¡A¹p%BÓˆÀ¨õvŽáÄ2uø°Mù÷žJsÒhúàü'’yY‹üÝ:6\¾úÊæ¡ûŽGešP?ácË–ddêûDÑÞ,{ÒänhëÚ=_ipçÎWn„ã‰Þn°Ô„ʘýl˜[(0‹oX^*Ù0B­˜%e?œ¸ ûƒ/r§+æ¨Ôš§h¸äuwºÛ…´Ùø§fµ©JNkV\á Xb£.@p5+jºU~Nýçó½­oÐËm†#˜¨Æ»@Ó3Mç 5¬Õ*êoÛÓøîsOF=XúHBXrb˜"² nQ\›š³ÃIš Zo‹…Š!Ç?Ãmmåò„(w<·¿s2ý%æÓû§™²DƒÕ—Ê'»u{NÝ·)ö‘ =˜ ãN)±¿.($“%™ ƒuA­ápeGmwïÕ<’˜É³C»4T)¬ÓBÑÄWÝúåôh@Ìb­ÅEeÓ5*ˆ’€óÈâ]r̯ÞÇsôô~ Õ—Å3+”)‹À‹ï}TØF¯C¿ÅWÉ”fššÅ˜Ì&´CQ„ÜÈ•ù@…óîOò$}VÃP~y–¢¶D˜kQ±Ê}Í¥Êkor œ¿£^MUØ›Q_Ù`ò²ì$®¿BÏêU¤1¾gƒå¬•˜ye-bœ£ò]œ 7$_xêÚmãM}t pÕ_ÌÂŽÁ¹ìÅã…;OœŠ;G·ÜXû«ø­é‘4NH3—º}f\¯ ANÈkTa ¢†®TÈ =?Žç6uz¿ô$¦1¦–5šÚ´”sîŠÛ+{eË芆Âg “Í뚺Mì>Q«G㈠¤¯³Ã“í47E´4ZÓ±˜­-™¾P{/™2¸š¿P€–a~oºï¼K}< ünÚ0 H›$Od·f½á ý ¿øEªÐÊ­ðá¨UÂG»‡(Ë7²°’©çè²èò÷Aák Ðó5ó‡r?œÐ+ÕøîsIë~éüÚe–Ù`¥²büü‘Äí°ØiÖ ÒB"\vÈ/ ÆZ¯ÏöÑÑ–1­MrQ°Þ)kCu¢<‰£]žÐksª-¥Z•ÜùûMcºphœ0Z:Ÿ3ÑßžÎ)˜›YØätö°ÓÒNðÔ0´õ!FˆËWà´¯0Ê7ªæíU„ª‹ñ8˶”Õ´ÅÍÞê•*ª`d¦¿<ÁIõ~;œ­|3Ðz-!€Õ]§åõØhÁÞ«ò<ç=¦Y—j¦ùœfi&Öva-Bfë`)i[:ÆžÔÔ{ >‡i©ÁéoÜ×nV%@›¢Ó†ô9MöÄj¿†\| Áï|ʃr#B’€ÊÆSbPÁ?ØŸìOö#ѷ 4R´PàCR:ðmlj1Øýb £„ü‡$sgÄ«ÈËiE¤Z£uöˆv«ñÜãÇW«ðN­õ\.›GûyW¹Ww2ï/ùõh:Zì²+ä0;Ǹ‘^‚œEJ€%yOäï55Eö×ê £.¼|öMfWDj[¾ú›F'ð'öOøD'éž'ï2!|ô~ÚîOò“ü¤ÿ)>ƒ…|_ÎòGø¥ýcYØf“ªe€s,ú.{ÍOj½ ô#¾f¤(C¿OÁs›:1êúN¤:½g9-$k»ón+ƒmæŒILë’Ù[¤}EüùŒ:Às©eCUé0¼ûêøäÞ8W:C·0÷o¬Àv>Y¢wĽ UèÜ á¼Z½ŽŸKúoÀòtn‹„Ó¤½Éh¹¢62yÒ#N.þÀáß¿2‘yš5œË©ðÁ±¼~KœÛÑŒ}gB‘‘ gP®0G³ÔV¾aüîž\¼§¼l‹ 0Lp{L1wYêùå2ÿ‰Ú;›‹X)§eü˜Á/(þ÷—Ë/°'Ë-#MÚK„?Å]»²¢W8Šp¸]ć¼Žè´ &¶¸õ™>É—Ê£Ê4ú„x5whF7™^Wã‰`±‘®ß´«¡ã“¯´RÑM^í^ åX²ÂËßp±;óù®b{nµÂ.¹[§N~¤(' g©x‹Ž&I+5j ¹"ûóˆ¢×šÆª`’o¥itëpBûKM{§³Y‡Òb8¶ÐtÅÕD£{IäÚØki~‘2¹ç+_WIH—ðN§¥fñÓéX¡’;He´É#Cc$Z9C¤N`+€Jw»HKyI,«1T¢n:Ž´ìË«k]E¾ô­î²ïi•Ý¿‚4âæ’²n­æSÈŸ™-MЉÜ’—PŽS{¯çp=´šš<(–!‹÷íA’‘yoe©€7æ[°, rPø¨¨,ÕßÖ¼ÎßnÀÍ÷Ä3¥« ×i Uõv¨ÂêÊô•Ï´ÒQnàbîŒiVRýŸœnÝCyZ öRL˜‘¥iÞ.­W*s­`6ç¦ñ™òø^ë5cC}ãÙåÛ{k4)⓹Ö5 tw\ž%LEÈ\ -âÒŒ4k_TãÕëÿÄP  !1A"Q 024@Taqs‘“±Ñ5BPR’¡á#3CÁ$S`bc‚ƒ²%pr¢DÒðÿÚ?ÿéªý…ÿ¸7ÿ²Î{X3=À’Ÿ‹aÑ÷Ulû¹Þå×¼3Æ¿ôwÁEˆÑM£*£¿FkÍ_û‡4Ñ@Ã$¯ hÞUo¤q,¢nQöÝ·Ô¥žiÝši\óå7ì)«êé?s;€èÚ=J‡„LDu`FïµôOÁ}ŸÜ ʸ¨átÒÁÒzu|õòç”Ù£¹náÚ0¬aôŽl’èãú&¸84ÜG×Îph.&À,N½ÕõßÃnŒϵ`ê]¡ýßòXÝ_±%cõfa O:m?Ò6ö0@ú™£‚>éæÁUpz¢š 'å˜ü‚äy;¹Ìs^ÃbÓpUHª¦†qô›¯Ÿeu­JÇeå+ÜÍÑ´7ùö¡¦•ª’Ï{]”4ý*fEP«Ž<¯Ðw:ùØÙèÞ.>b©°šf¹­€;6ÒþqX­44•²Ã®Ý º/»°àä¹ š°ûþ$;Eþ²)Ë9«jÏù®£Ç Nžhágt÷½aXK°çI#§Î^ÛX ‹b=o€9G›6þõ+Ù t¯2ú·(«(äl±²Vw/hpûÖ'ɨ¬dùÅËÜ×^ÃŽ"¢¡½,ÔPC±¿e«Ê¯nZÚ±þk¯ŠÊš^§¨†{_#íæX~- çFÆ=¯knAXÖúêvr:ɸ ¨pŒBi}Löt¹ÂÀ(bC-ØÆú–'ŽC$5Æâ]ÍÌt Ü|oíçwCõ”íë"±ÈrW9û¤h?˰àÜ”Â9¢Ù17>VùUÓú”LÞVÝÊ. »`Ú «§ªi|‡µbϧ’ºgÓjÓ´î.ßnÃÑe‚Y¾ÛíøPúÈö’±Ê^ZŸ•hçE¯Ý½[Œ\j •,î¦¨Š  –:þuWÂ=<°ÇNZ^Ü·.Ùt  ìÇ=ÍcEË‚¤€SÁ#èµ®Ê{n+¢4s?ví[ðì,¬­Åee‚Лõ\£ÿüÓPú좪i£©ŒÅ ¸÷*º9i•ãšv;§ŠÜVVVVXvéËe˜Z>µú&´}[÷x X™+KÐAÜUN EÝLïôŸŠ’ a6’77ά¬¬¡¢©žÜœFÝ'@©0ˆ¢³æý£º7 Ô÷Ë*sЄê Gmž«{—[(ÿ°še%<}Ä,r V@q[ëû+++++++q[û‡n;pmØÛþÚûeuuu~ÆêêüWWâº¿ÖØÞ*úÈ ýëÅïöB8y75³ûBº¾»Çgö…u}wŽÏí êúïŸÚÕõþ;?´+«ë¼vhW\+üvhåÕõÞ;?´+®þ;?´rë…ŽÏíºá_ã³ûG.¯®ñÙý¡]p¯ñÙý£—\+üvhåÕõÞ;?´+«ë¼vhWW×xìþЮ¯®ñÙý¡]__ã³ûBº¾»Çgö…Rã5ôÏ3ºVïkÎe쨆9ãî^ÛýO~ÖWµÄÛo¼¦¾ò›Ø1®ËüŠ´?üšé™–ü§.¨ê|ŠªRÔONãsËoæXÍ”¾gÈøV¾W~qÿm¨vWWWWWG´C9ꪸÁç3!bs¦–˜\™^Ãn‹,RA.#Y#v\°O›)Õï?UŽÌ®üãþÛP[Qâ°Z-ˆö©©)ê×ËÜݯcë &wq÷ž,æÊoõ{ÊX•œ£oƒ`Ÿ6Óyï(x9ð’ŠáÎí·Žã¥\t«Ž®:UÇÇOÇJ¸éìn:xîõŸúe)÷”>°(®|æ}PâpR§Þê˜_jØŠaÕsŠsìÛt§rAt熦ºÉÚk¹Hû13F5fAê¨ ` ® |Á‡ù¤ÿ™Cë¸Mó‘ôMC‰ÉÚ¢ÀB`²¹Y“N¡9Ü÷'’HV¹Ao¹W/u†ÅlÌ#¡LtÌjº9ÚYpbÝd¡·CÿäPúÄ®üåþÛVô§rn½ ‡P‹¿hî&í^tçn &åo7Bª´—*ú#Šè›® üËCæüŠ®êý²þåÂw[#ü¦ å}ÍÊ`ÑÂùs yÆüMNr‹œnQÄç “`¦¡îRßr}¿ù. ÿ7ò]oÚþIØhwñ¿%…âç ¢‚ŒAÊrwçfµîn¾T;ÄÇ´ýÊ—xöŸ¢ùRïÓô_*]âCÚ~‹åK¼H{OÑ|©w‰iú/•.ñ!í?Eò¥Þ$=§è¾T;ć´ýʇxöŸ¢ùPïÓô_*âCÚ~‹åC¼L{OÑ|¨w‰iú,;ƒ»É ú'ùvÃৈ®ú±å10'½_T6#ÄÖ—¹'„滤)Ûbâ~ÅÕ7R<<>g‹™`ÈùšÓù©ðúŠx¹sɾ;Û°¹9Ïð0œÉco62JtÁÄæÚ¦Yô(»D5Q¿.›•îšø›ûÁp tnoìp¤‡\íâGŠÊÊÊݪF øÝ±Í ýêWÂÝ Ã4Ô:çʣ™ÌŠVÛ ³’÷T=ûGéã÷¡àxåSé¨\b6tŽ ¿EõðNFm¼“ÿ#.×bí©Ä¶ì<`&"uö ë“r§™Ð>û‘²0HÎ;ž;•r®UÏm¡ïÚ?M½á/yEéǸñY[ŠÊÊÊÊÊÊÝ¡“º CglU%\{×:à çeåc­©mï¢ÅÕ ¡¬-³ç‰Ùü¥¯-¹òÙbN lWò©uÕ1Y4h‚w+Ü(÷«X¡¹7‰©ÁPþôÜîV ÍhØšÀZ(Û‰k¾äÊx]ÍÔ9;ži°ò¡Moí/u+ÀÒMµùÊR¬\£—(åÊ9rŽ\£—(åÊ9rŽ\£—(å@óÕÔ~ž?zWûÎ/L=ÇŠêü@«««öìX]°ùʵ…“;¤PCbs·+«¨’F•tM÷«ôq²{3{×.ß·"uNö7^“µjo}P$¤>äÇ£™a’4ÔDw¨˜,_m%ÇUa½VÐGT;¬®Sau±»™ÎN¥­ »št\¼±s^Ó÷¨«X6…d{Š}ªc9»Vl»SµP5Â@åÉZGÊF1±Ü¨›™ÁOÝØnMÕfkr€TôÑÏÝíLãk³M·)é›3m°ë¨%Ì´O`c†Ák¨¨"‰áûHUm˜çiÊåGNø3ç#œwvmÈöJ7íP žNJ¿É¢Äëdh0·0vÒôʉƒ¹A)½ºV ŠglOÿk§± ïê/O½5Ø;¸MÞQzqîhœYqYœeMFF»l¥Ãy(¹hߥ¶†ËûϹMs‹6Áè‚ÃgnPHÍŽWÔØ)ÀtZJÛ]ÇpN7qLÑ»T4ÖÖS÷vÊŒ²0Æ §k®¤Q©(àö4‚±ü=¸{Y,,æj°—Ìjá|$÷BþeK/+w–Ý…Qzxýé¾W »Ê/N=ÇŠÄ ,¯s•<ß™}7ž€žþ^c'ÑnŒN•É‹[rŽBÁÉÍψé®åˆà¦ÕXxÏÕÑüál ¾-ÛFð©±Â:ž©œ¬Ghvå>ñš¬-ùÛ½›ÂŽY!}v¸~Ká\K\t؈Ð9‡3Nþ+q–0íhN†7´µÃB¢Ã)!.1µÃ7•6Šê/ëO¡‚NèZm07³½k©bè(Ñ@wZê?Åë]n¦­6–w-\ƒ<«#VF¬Y²5djÈÕÉ„E´âwrï2›©eC˜v¡‰Ô ®]v›8Ž««gË«ÉuVg¯…ðwW"Ë ÃF÷Eƒæx¶Ÿ@t• B™~ˆì(;ú‹ÓÇïC´ÔW è¢ôãÜV§ºÀ•SRh©LîÖI•£Î¦sÙ!þ,Ãäjc@£`W܆ºÇ>ÍÕ Â#«½e —xÜï:š ùšöd‘»ZTUÐJ$cˆAø~8Ð%´56ÑÝ*¦Ž«“,ÍÓs·‚ðŽJ\°NsF%⩌MLðZwqŠ>QÖÎÖåÛe #ËZ1X³`9)6þWI%¼œ…¦íÌ×7c‡HRnârï1Xƒù:‡?¤¨å/tYç“5ö(rå°Xu jL¡ïp²›OI+rÂËtç± ïê/O½7´ÔWûÎ/L=Lj„ár¦‰’ÎÙ¥ýÜêü¬Žœý/rº'ˆ=f1»<xéUt0bqòŒæLÝŠª‘áî†vezå FILüÌõ,;Žhú—o)Þw*ܱ¦«w+ÖÛ±šŠ ms—{U}6%xÝg'‚ÝìB¸W á\+„mÚ.Yá‹í‡þJŠ¹Ù²¿(…­;€- hAÛšêµùé0²ãwrR_Ú9I»‰âípòˆÃ#¥|y{—*h^l6nPÑ—7]tB5†·.~ʃ¿¨½<~ôß+„}ç¦ãÄv]f¹>_rªçÆ!ûN¹MhزÉÝŠ,#r\æøô*¢žŸ‹$Ë+v*®¡’7fmŸ¸îpSBèvèVŒÉHà/ÍÞ]-'¨§"9OªêšzÌ2£+Øáù¬7ŒVúlñìâ²²²²·j©¦åù72S‘›±ã]º:L¿½˜?ýRJé2_c[”€Ÿ»ˆì*¸þÕÚ}"›£Å‚€j…²ª ®•Qzxýé¾Q\#ï8½0÷*©Öý¢‰Ê5f$ P($Ž{ŽÀ¢œÎÜÀ¨›œs‚äZT´ÎÑÌ6pØ¥†,B'SÔ²Ò ÿˆP>  ~‹·8) sMíªÃ±'S»“óNýßz½5tm‚±¢ä]ø‚áòÐTÔѹƒ+¼N'w.ó*ÙCjr;yÑS»——“D¨šæ¶Ê6Üj¨›”¹b˜¥.Jꪷٻ†òV#ý&U‡–ÐQ1­é~©ŸÒ†6Ç^Zx<Ö\áþŒ9°T·©§='šx¨;ú‹ÓÇïMð"¸GÞqzqî'_3\mN-k|Êxˆ¹R5r cyzy¬ZW¸Fqœ;©§wíé€ÊQzxýé½ìh+„}ç¦â€;”ÅÍkb=ÔŽ×̹6–d¶ˆQÃ{ÙT1±Ë•ˆ è@ Uø®­ta•Êz~E×Áü—SSÉÝÆÒ«#ë{”N1¹æÆÅuƼu[¶t¬c‡Ã Í’O?C]Ír§áÇ ª¥tƒž~‹`8á Žv/S)9÷p/úBÁ±fI%qÎ^9®[(}ëİ8ð¼FjwAÊ6å„m½´\!áU x]%àU˜X^övÍuU2áD’äÇ*‹Zó`_¢Á¤:šÌ´ø…[¢˜è~c¾ ¸•ŽJëÚË®UÚX’ÿù!ˆ×XÕÉëTø…I–>R¥Ùs êª_ƒBÚv²’I=¹&5·s¼©Ø>' sÍ =ËMóúÕOTÒ×e{Ý`ü®môXÍ\íÁꦦ.d Zãh7Ná-¥Ž\R£/Hv¶Pð®¦y2ꨣ6±ån|èb•Áž*ùç.Òî5¾UˆWbÔØ<²·˜Ë™· ìá\Ä*«éë]Tó9Žgï]{^û8žl×"{3H÷nºþ*¥é ÝLÒE |{s‹aœ­D’·.gÙV`Š6÷cz«¦18µì-pO×™*þŒ°ùéd®¨™–…–ûõTýEéã÷¦ø\"pmWþØ{Škcæírx×#œ¯u;ù(Üþ„&tÏ/(jZÁ½c{£vår®®®ÕÐ ŒauIµì}îÆî>e‡b•x OZqœå€^ÿÛ_‰V89ŸÕXwžt‡ù0HÀž®§1ú\¦¾ ¨éz™¯ªi®~™Ø¸7AIT³ ÕŒ€2Ÿ6ÍΣ0õEu[êª\/|䯨Ìç]Ä…qÕÓNòaªÄ8?[Õóò4åñÓÊ!: t•Â^ a§¥­’²&E,ù©ÌPhòéëùÊ<©Äp¦Wp~˜DÉ2à 1»›¥Èuö¬dpƒ’JlR75Áá¢-ƒî\ ¦4ðÕæ€D爉¿OæÑ?ÌôµéQGêÖ¦ºqW Àø–3Q%éd†öë˜ùS«VKšûÜkþKÃj*¬i¢.Ë¡>MÈpg.k„Ò{®…Ál6,+ Ž•´‡!òªþ¢ôñûÓx‡hÿÄW !1AQ "25@RUaqt‘’“²Ñ#0BPTbÁá3s¡±Ò$4S`cr‚³CD%6Eƒ”¢ÂñÿÚ?ÿÕ‘¾G±…Ç ¨ðLV^¶ŠOõu?Åt9Œú?þmø©°¬F ²QÊ.[Ü‹¸pSÍS#b‚2÷ž °ý‰€?vww ;<åCO3rSÂÈÇÝé*ðÚßëíqî·;Ò%¢ó@ ´DÌÎäõãâ‹H6#ëð¨hf¯”ð§y┬; §ÃaÕÂ.ã×<ïwÌcX+šêŠf†ÔCÿ4ö9Žs د˜Âç´\“±`øc0ÚPÏù¯Û!ðòy¾kI° [Â07hýhÿì×hŨ¬5LÔwtµ5ÒA-L·Ënl¨ô¢–®¦*mDŒÖ;($ƒ·¥{#ÅÚàA± SGW=1ú6ñq}xêÃþ9^ç~‡I¥X\2GGãÌÌ\7»À¤Æ± ¨ Óga¶Ó×lÛk¨ÞèädŒ6s„*¼s¬{ú‡3.áR/ʰZºŠÜ>êYgíî­ÇÒidµ4õ~²;yÛÿê?\kVܘuÿ‡Ò/ͨ”ÐMQ%òÆÂãoƱÆâ¬Ž&ÒêÃ|Äܬ áJ’Ǹ¶(Åßmþ ª4_ ’"ÈèŸmŽÌNß*X²Ã']‹OŒ,Há™Ô´¦Õ›4´Ý»<]&•´ZWrHG¤"×MXc³aÔGü@·2ê®z¦ž›5µŒsoãX¦ S…±²É$oc”ïô-Å#꟯Ù­±<„n*£à ˆËÏl“‘¬7%TLê‰æÛä{œ|ëÑʈª)«j&` ³Ã[´ôšTïèÔÍåŸ@NG릭Ÿ[‡5œq8·ñé4¶*³,o§kl-ÄãÊ `¦çÃNá úïhs‹ZÑrM‚©¢ª£xަ0Þ‚GUO^ÇÀï â¤Ò‰óTÁöl¿È£õÈAhíf¢¯PãÔÌ-þ®.mѳ…œ.e3k)f¥q°‘¶¿"¢ÑsOU DµAíÁÖ ÞFälzà6éò66:G›5 “â º¤ÕTÍ9ún¿›‰­®¯Ò˜òÒ;–ˆ úpOë±ãñWWæ]]]]]]i$2óŒ.ý¡üŠ=%þ¸RUËI+f…Ö?ÄrEˆC]hÍœ:æñ…uuuuuuuŠc ¥‚ÀËËÄßÍ=ä’I¹(Ÿ¯nƒ”3¾¶HžZáÆ4Ù•±î›ø…L3ŒÐÊ×øŠººº¨Ä))¯­˜_¹J®ÇešñÓü“9~‘ø'9®¯õÝÕÐ(9&ÈA¸;S1:Öuµ2yÍÿŠázÿ´Ÿ@RWÕK×ÔHÔ‹Öe™]_êþ?›¿Iuu™fY–e™]]_ûƒ~eÕÕÕù·þàÝ]]]]]]_›œ¿ÖwæÝ]_¥¿Ö7ùëón®¯ýÖ¿÷ÞüÛ++++++tÖVVVVVVú”ô‡çtk/©ªýDg.Q³3¾ ¸FÐé¼ñ4ÿÁX_{i}‹~ ‚°¾öÒûüá}í¥ö-ø. ÂûÛKì[ð\…÷¶—Ø·à¸' ïe/±oÁpNÞÚ_bß‚àœ+½”¾Å¿Á8W{)}‹~ ‚p®öRûüá}í¥ö-ø. »ÙKì[ð\…÷¶—Ø·à¸' ïm/±oÁpNÞÚ_bß‚àœ/½´¾Å¿ÁX_{i}‹~ ‚°¾öÒûüa}í¥ö-ø*ÝÂë"s+!ân[z7ªªi)*&¦”uQ¸´ô÷ú¬-ì@ý³ûNšŽ†*JJЏ**e«{Ä0Âì›rÜ›;i;€Rá”q_Ÿpšše¸‘õ!Þ ”\ø];©*j)^nè¤s ñ-&ìÕwžèúüðZ#Øüçö=TttÚ7U.a޲'=›Ø^H¸ðŒ×NçXh&Ãi+yöZʈ‹CàÖe¿uôÖìoË»ždƒe¤Ýš®ñ³Ý(ú€üèZ#Øûgö)]@ײ– µ7- 9¤òÙ×é1c–¨2ã{"céh™¤ýš­ñ³ÝýbÕ¢=ˆ¶ki?f«¼l÷B?QŸž D;?lÿ˜±äV<‹+»’²žBµRѻеr ñ»Ð²?¹>…cÈVG÷'в»¹++»’²»«D㹤­(¸Ýp"Æì÷B?XµhwaÇíŸÒ,ŸÌÂÿZëò*挛”q7£ËÜ… š©›6 ¥aцS—¤«®ò]>&†=ÞQ½Û¼…ÛS¶YÍÞŽò¢Ìò;Àµ;w#M}¤,(ZæÈñ~“?ï®9nêöšÎ}Bա݇¶4s.·ó0÷Ô ª¦Þ2 gôXʨ)Éͳz‘Áejs.U]šË3CݽSÎiª˜çu²l)¼ò»(róáY< W›bŠ ¤;‘~‘oц3›~hÛj(ýD~y«C»?lþkB=$NÉ#ÈT\å È¥†ýÈTQµ°5ܪ¦Û‚{¬ªk’¥&Y.ª3| ùZ3)ß¹@Ë]jö¦EàE™Wé#n™cGÃûMG¦·KnÛ<Ãó-ZØaûgó,‚=.ñËó]3¾GÙ~k vwÈû/ÍtÎøŸeù®‚ßì¿5ÐS;â}—æº g|O²ü×Alïö_šè)ð>Ëó]3¾Ù~kÀjp«=ÄIÙœ?ÔmZØQûg¢€\] Ü› ݹ§Ð¨ÑIú·e>†L,è‹”2ŠÕ0K ËNâlÛúWCXר®ßŠèkûõÛñ] c_b>»~+¡œkì'×oÅt1ý„úíø®†1¿°Ÿ]¿о9öë·âºÇ>Â}v|WBØïخϊè[ûõÙñ] ã¿`>»>+¡\wì×gÅt-Žý€úìø¡¢øçØO®ßŠÑšIè0ÍE[5oÖ¸Ú÷ÙæWg*ÌÎé]Ò»{¥B(\Cf¨h¿Ø¡‚Ìh`êl¢‹jd:²™Û¦FvqªÊ dbp:¶(¢if{YVŠÉn(\a¼ëmL3ž{ƒW'†ÀVŒ©*Ñ9]ÚpÊúy¢ž3ÕÆö½¾6íMİ¡<µOŠQK1.{`-Ës´ØÝ»õôSÖE@*d–®ÂYª¾PsXßi#iX—c«üž_u;´ôj†*ÌI¢fædL2[–ÛñíNw¨à“Õ<Í­”²Zw›ˆíoâB0ë=«'Rš.Õ\»vä cðw9s¬yv,g¦|vþ‹””rÒTÉCV2‘ÖŸkb=¯òy}ÔîÓÑÈÍäÎ÷‡iá2>–ƒ®§êj#ÔGøÛ¬&徉®”Vœ9øö%-d7/n°ˆ^æuNˆ:÷—XÁ׳¯-³ªayw„±îeφÁh£ ä¬ð5ŸŠ€|˜\J5{7bÁ]5î§u‰ê ËNâlfŽ¡–ÎnÞÖÄ{_äòû©Ý¤ˆvBo&w¼;O |Râ8tµ Õ§G#úÌÑÎÆ`¾¦ŠÃï¿ùUE1¦{ØéXì§èÝIˆÀÉ5Mkäw#íãM“0) 8Óªão½U0ÞÍr "=l{üèºáLë*ЦDÖ¹Þ$ÙF`o± –nÎLÛ‚ŽPVµVO)ÉG-–£?]b,S°8ÃŽW\&BÆÃ õ›ŠªÃÙQ+ɽAG8y‰—%MFÉÃæ Àñ£‡3>fÄÛ)© k›ò-²ÕE¼DÏBl1µÙ˜À0p>‹‚-ÊmÌšx ‘Ö\+M~;r¨¥ŽVæ×.;ØLcÈj=Âó‡¦ D{!7“;ÞeNm•Âtm)íÈ@oÒ;–‹UaÄêÞrw%`úC [Z3YÖÚÒ„D8TPÍ©“Œoc¼Ê‡ ‘´Ø‹ n¹ëOEP. -li=,œX`PŒ¬V¦]dÁÙ_3ˆ'( Že`ø•˜”.ÓÊ„‘‘gÆ4á÷¶Äiáy»e-®ë\ uãx+Bj]AYX%aÉ#X >t$¶ãp§uÁUõ ÕïµI\M;g…M<òÌܤïU3哸*"DYŽ÷mZͪ(‰Ìçr lµŽÜ®Bl–Yïu¬rd…‚ÛÔ’g¶ÍÝ$|aKÄSŽF— ç‘Ó?nÝ9­Ý•BîtI~¤ïmÝ&;ØLcÈj=œh…¢_׿òw{ØO0…Þòÿ0L­ ’˜ž$‚BX.”͆©Ù]»nâ™55|Z¹ZãüSâX/UM(ÞÃ×4xŽQâL¼uc®aë‚{c¨c˜ñ{…úMýÔÒžÂ#.c˜´}GXÚ¦X쑽{ñͲ!7aÚHYlÜÌ™2©àåpºÁc€æq5C-Fñ.Dg°9§aUÔï9žÃáMgUwm*ˆ½“—°ª·—ÁÆS]•€xpåc*$p ßµUâ»(GçðùÇÔ6 ¥KŠ6Ö•=t’´·-@¸uª­Øíê 4FàåHI§‹7sÒc½„Æ<†£Ü)ÈöˆZ%ý~o'w¼–ËYl Kõ£ÚÁO&V†7ÎŒ†áàÚÊ*†Èm¹Ë Çæ£s"œÝœ¼‹Å#¨cz¡·‘Tá¢G º953¡Íãñ¬3J妔QcŒÕ»p” ‡Æ¯d69_ÇŒ->ý»<˜æŽ ²Ž©ñ?¦­&CKWŠ¡†Å§eù–V¹²Õ7j˜µ,T•õyµ$m¶ñtüz½âÎ1ú©˜µdwÊæÛ’ÉØÍk³oÝF¶sÆ= ˜S7ú ÕýÏUp½e­vú©ø¥d­|—‰ J¤l¾…ÂõÓ}UÂõÓ}UÂõÓ}UÂõÓ}UÂõÓ}UÂõÓ}UÂõÓ}TÌb¨¨1Ã’Êš¥•Q Y燘7„êbÀ†SÍápå'V9A{dU‘CMph1®®‘­ÌjhÊGIŽöòp§#Òœ D¶by;½à³+]8xU (ª¨±ØÆ´—;Àò‚÷Ž´uªW’âJ(¸·hÞ©ëšëG(±åXv)5Åš>E„c‘T±¤=OKMˆÃ«{Aäü”X¶Œ¿ä¯QG~³“İœrƒ„> íÕ0õÁiçè΋H#}uD5Ûq³2¨†Tì?„´´Ø=5Áã3MÁQï=§CA-q—,‘ÅMÍ$²1£wïâ ƒ(àÈñÈâl†m§ÕU”rÑKª”´Ý¡ÍsvµÍNB¨ë%£I¶q…ãí¨kz¥¢ªfWÚäzV!‚ÔQÍϸ[Ý ß©ÜV ¦L•Í¡ÅÛ©ŸpwÑrÒ­Âôž‘ÚÆ7Y—©èî/¢5NŠXÜú{ìü•LU-.‰×åðv¸¿ö´ŸÅȶª*™þB`ÑÄ÷E+ZÐ ù7±ûõ—X•Í÷’^êy‰'yùg¬­ŸÆÞcwƒáPLÀï¼*‰˜¥©Ü)js]^òyºlw°˜ÇÔ{…9Ñ D»!7“»Þñk¼ñ£W¨m”•võÏ/\øFð›ZÎ4*#wpköªzƒÉ!Ø©ªŸÄй`BÙšÖHåC&fWíc8 Ul/`껯ŠÂqüK˜ÑÕæšñ_ªhðxðá:QBæÉcpó…¤:ÐÅs¦l5 óv9ëã’Ïí –'^Æà‚7¹÷ï$¿û³üª¾¹ÕÒFuMŠ8£Åw1ƒÇ¿ÂV ºPæB Âì>;…ö'ß5ÓYn›ì&1ä5áNÞh…¢]›ÉÝïdÆÂÉÎ9EÓîI)Á9©áG ¥‘±³yQáFÑŸk•uée,c×=IǵQâz“Õíj¤¬±mE4›8Öi›,or‚¦àmÞ±¬":Æë`”m¶ïUQÔ×áSº£‚×|¤GáʴϧÆðÜ8µ¹&Žgkæíltþ6 †ð¡aÉœq)þI™ÏR8#¬£vi|É­.6B8ÊÕ3ˆ¢Ûs1ÞÂcCQîô{D-ì„ÞNïxsCÓ7wp²pN íX~VO¬~à«ñKØAéR=ÅÎ7+/2ž¢JwçaT5ĆÔR¾ÎÂÑ0¥’1MˆÝ²0›[†Ô’¬nnC±3ŠªGJç°¾Öå‡À´×àîw—-µ#µ°mÓøÚ‚ 9ƒ""ÜJyÛ,@6VîSJvÙR¸™¿Ò¢ˆ61Êv§fgf±…Žöòp§vZ(àÚùoýƒ½àª'dQÜé¶-x n\©ô­p)ÑjÞö§æ©.±e=JsQ…¹RÔ¾šLíÝÆ3‰Úˆ Š ¯ç¦e&Ò52º²ÕT=¾u¤x½m}=,53!#Ѓœçï¢Áªç³¦:¶~õF§ÂäpÌ7w:ÇèRàMaÄ3ZHªË—©7¾ç(¨±Îz’lºÁÂp êT`ÉÏ’NòÞ ¤Âè·f òˆ`“Eò´‡;öñ§:A{Ü[yºÖ¾Î9ÉQÉ+†×,ÒuYMÈ©Ž ÁðúQV9æªm¶ÞnƒBv”S>RÃÎ,ÛkFÇÉoÛ±1ù—ê]èÚ¨cŽZˆØö‚.TUy„0D+†À§Ð¨¦¡Õ¶£WSý£³ÕTz-.¯ç‡¾¶Y.Ðd¬`;ˆ« Ñ> éË*'}¯˜lo‰bxl8tÍDÆ5âýO7¢ûüµW'ÑNuÊÑ\:,Klß&©Î6X“0Šêxê¾Q£õgz¢…؈~¨·0⺞Âç2FBɶ轮ØåŽöòp§vZ?’U¼Fàˆ¼{FÄæÕÉ^ȦŒˆØ3_‰SÖ ]#ò› ž%ÛAºi²™Q*AÈœË ©ãª E¨¨µeDs(êÝM%þ‰ÞRåÉSØU-H«7ÒÕMµ¦8ãa¹<Ї§§³òg)Vk7ïN‘Ç™[ˆó™¤ŒGõÚßÞO™ea9² ¬Û-d,öØïXeE Œ~LÑqªÜ:,VU@F~6§CEIÔJuïE»†#”å°†÷9U[&Ë©¥Ž>[q¬BkžÁ+‰Œ2Ïh6Ì63ÄNõ …RÒ)Ö<·sNVò€ŽXš-¸nQɑ̕œ·T¸ÞI†‡ÔU¶½Žp娰=/®Â±*÷ϯª,ö—ß«¿^7¬O …ÒRiò=áä¶VŒÀ}nEA_ M8šŽ^ya"Å»–‘I¬ššÍ-]ÌÂã gäaUÒ—m†Ô7­}K1I9×.°ÀásĪ4~9õΗL~‘ÞT4œä2:"Ç ­xXí}$œï1‘¢RÛ=¾%ÏÔ÷#:d‘ɘ±c„Æ<†£Ü)ß5ÿÄ,!1AQa q‘0Ññ@¡±ÁðP`áÿÚ?ÿñ³ü-ÎÿCüG¾;—,g‘ÿàµÅ±ÌÅyâ¬+X%çâEîÓ_fS˜Ú2¤Ò%#â™eq¹îfy#ÿ¯|T³Œ‚üìï {TüÚ_NÚßX†KµÎÑuŸ@Õ雷éRe>›ô¼:ƒ'Æÿö\qlµZ×sMõZ?…L=„ºúš?BŸ¼MõþKPÍ«åu ”÷ ïMQDÚ­ëkñ´yoôèÌÕ‘ک›! cËÿŸ^%JÅʉ*TIS;€l¨-Tü^€%Ë–ËŒI"Zš 4 :ÒŒ„&eËÕK†wÖ[%úF¦1Þ}‹®ØCRˆ›•+ÿ*®W=ppøábÆ%åsíÅXø]åÛšZFdò‘[¨]b¶bÃ?ö¾‰p””<¾–&í5Ô¹ægÔîùÖSà!«¿y¾êÑ×Áø×þJe<0•W¨Æ>ˆsƒG·_»4—î.Ä ±PUQl+øî€%ضДNèº[2=;ÐO·ŽÊ1Ê›VeÁcŽíÜàà²jÎÅ4…ÙçàîT®5Å2Ÿüò|+¸™\$eº¼«ýåx&SFÏs»7P’ž.V=,xä˜jÃSE÷>™{Ëo5 ¼AÖ×Ð] tŽ®Ò’Yp„ßöœåX(®?*šx̧úÌq]þ…qR£ÊaFß㌄v„Z\ýno–z@$§(– ˆË?§nv« ŒÈ¨Ò Dĵs~7aC>¨<*•hpz£ÍøZ, jЏŸçr¥b1þ§®+ô*R¦âpLBFñ&»dúÙÄ»‹\ºQ&ÞLRßBš¥ÔjȪ£º!¢ " Þ‡O!#ÛbwÐ&Þc–þ›€ÔÂ)•ÂG‚|+šçïý5N¸ø8W"ê;ñ+{”žÐi3 ð×Gõ}¬G…ø½áNÕÐ¥±Úãúl €ã„%F*T©_+Dþ/´%ñZ殩L Rµ‰R˜p"Œx*Ÿûô°ŸX?m™‰h[õâÍ^èáõóq;%PÝÛ°}k´2÷î슮ÙnaÃQô•TI\Q*'˾1ýÆ.„J)•¨AЊ™q|xHËE—lv{FÂa…ÕeÝ ªköA,¶„ÙúÃäÊkä½úêK‰¬Ÿ8Kâì\ª¥µ\«çŒìÁÊ8W!%D•%ÇŠ¯‰Åzý}paøœW+¹P8P ¹Éx­Ñ0…A©c•owœš7 ›ðLüÇiÖ+ó‰¨0`îê¡N¹^;FHÅD•V%JøT×SÁ+õNM|NMâ*¸p8ˆo²1ß´wŒ›%a^¡­LºŸO ùXa†Ta<Äî'+|0Ÿ~1úg>5 ÀT‚ ppã$ø¾Èò>Ž#ç_Æz97a8IR¸®¡ÃÒÔ¬üC‚UÊ ‚E 8:xpiô˱–'¥q÷#ñ}#ë0êzcé<<¤aŠ%f$B',N*f<1+ô3 |ÑÁ€Àq$’H8IôOiXm‰‡hÀV#,>±—¥Gideœ1†ï†$eqDH“rªŸÑó+S\× @À!‡Ê(’qN¼ï…ˆcƒà¼Ñ6!2Ù§…wÄÒøøWFt›q=<.½Äêláx;þ9‚$LG†Uĉ\ýç™oè©\ê ‡@ø§‘8ù`{ÔÁ=Ob¡Ûˆ» š²áH¤Æ‰^SÊÅÃ3˜éå™D÷QXÁæ!‰Žù›~nø ǃ.$H•ø¯‹ÇPà A aˆ9¼pÛ)â jR÷èJ*ô¢*‘þ.­í©†ÌœnÉ1˧n ¢,ëòˆT"[·Ç™ææA\~¼]ž` ì$JÅû ¯/_½_1€Hœ1ŒyxÅ|k‚88CÁLÏ„‘ˆ‡rÉAÙ‚€«A(¦®Â¿*J-R¤á4Ti?(¢Š(¯Ú-Ðÿж~§˜TíT΃€OÊ™DGN˜Û;µBÔGÀ–Ì?o!À/*'¨‘#Ë;áç냂BàÕð)þ9¢•Gý¡a«Äxâ³ÍßS³‚² º[ŸÀ3øÏàü3Ͼ–_ »Ï’Ç0ҹČ °Í•‹¡Í0(fVÞãfkòWŸ?GDÃTeGŠÏ w<ük@š ‚dùöé5Ltl·ýRìó}$BjÈá#•¡†º8#P }Ÿ $,*s:>Õú[Ñú2³ÚZUk겫úHPÜx°p»_Ç_×;þ ‚³‰Ã<ü¤ïâB ƒP0AúW¿«ÄÓ+ü*1K€èî’FYßÍ—Ê #´2ˆ‡QŒHÏ|o’3¨ â3T«žÓð÷ÑĨašT‰V”òñ Bj8|÷{Ÿ÷Ÿî'²ÿ¯<2@è4çàeP·µNMîD”—÷"Ù^©ÿ¹eŒókðÏúo÷µ0· …i.Âïÿ´òbòt}áŸYâÌ«ªÄ ¶@JÐuQ‡;Îß ŒÉ7T1Œxc|N à?0£XÜxu _lÀÌ_“Zò—4ÀÔrä–ucQ¼KFµ+ ÊJÏ´vb-šC” úì´š½ˆ'×ÏNzûE™Imm0v*ÚÙ™'„ѺX„êŸÌaY¦ßvUZ/®ê:Ä@¹ÖXV7„mXרøO_Íߢq@‘Qj<<ý™ï|(èøåéáõñëjܸiâãí"ëDÁŒ _¡)-Ë¡b+pÂ4¤ú­Àš¸HVpïZ€#D즣I)XJKPL%km#l{oa ‡¨‹ŠèÐýIeÛoÉò¢Ã| b·‹ÇyAC3$80D°mþcbo ˳Xâ¾7‡¸+®vJƒ†1ÔºÓÁr† ¢eŸ')ëó€u¦ÍüѳtGàînêg-à^£Ym)‰#Ê>ÈË#Ÿö ”(}©µ]zW¹”nÝ‚4hÃaðËÔH€‘5£Où*è= d(Ýê2žÃ_Þ{Å¡nã]0dò€9…ª*{Dfu„Ý× ‹®_‰«ŒcTHñGžà-à:â,HHxµCÁDÅÎ톗QÑ‚Ñe¥nPºìy…-B#Õ¡ÔB.h.!„fñeù¡Ðª@·š¡m¢3h€~`x,î~¦¹âzYýæx×L¼d¯IIÎ@¬°äS1ͱ$RA'“ê±}KZû‘F -•Š þ #¿ÄŸàqFOØ (ÿ© œ¿Q ëñ`¦Ôš þ ÷WýœÓ³ð ªy”é´}‚3NTŒxIR¦a “`”‡î`‚õÉ]¨Ø·£ ê[h.<óCì@ïd!]x‡4–x@bì¥GB1e—5|û;*ߊCòU~ ;ºÐ ýò^2Ç0¶ØÊiFH¨‹Ô¾³¯Í Ä+†å¡ô,Õÿ@-]ÌÅóJ­ ͤ˜õñ¹”ScmCHp.¾¥DÂáu¨Á1Œfåraî}Cêd!IŠ2™Ê5+ÁAZ–¢ þ!^)ŠdêQ³n¾»!’~™–®%–¨5E²¾¯%[„„UCKoЇ& L\À´+¡ªÆ¶6,ãï´Îæ$zÙ„vw‚:Ba;ªý¥IÈ­{Eq«¦Â!B5á›JPå\ÕÀıÌlD;™úAi£D°´ëç2dÉ“&ZåÜ¥dgæ¯Ä±+bŽíT¤.!kv6õ‘@™´¬xc­/dcž cÉÈà`ç@gS]Ÿ-µ™¼€Bƒ'T¨#îx2Á'7ÜbÀß À˜ÉóC嬅3¥EnÙµebçê0,¢uNwŸv•üÀÝÞÇ›6€„=à©ÍSJÎVA©ºŠöJìFYÒæ£Ì~¶ƒÓô‚å: ÍÛU6–'=몿D'+14¯ˆ-h=l†¼Žø-4·“ŠmÞùHï1¶ZŸóŸ¼ÿœýçüçï7˜@ÕúJȦ5l óL ü¶È06 ,Ëun«ôÀÙmx[™Tò4÷Ìg·'|r“’ænØ@cö @AýjàR ®_ñaHA~¾Š¬½èH¶ã¨Ò׊cáêˆâÚ°J‡ªìr@j–z•{K¸šàÓkûËZRT¼éN˜Ý­ÑᎠÙÒ½Aý€‡óPñk}ÍWMk?µ·í‘ýkÖâù¼˜òp pé4Ķ%Ë$ðFºD¹kì¸X(zì‰õ‰L°¥šSºŸñ?iÿöŸñ?iÿöŸñ?i’5CV¿·è_Ϲ­÷̧… •eQ¢˜LD‚'å\"}ÈZ#~ãi J°ÜZòK°¿©5ÞWë{”;@WÜ(õT»¾äÅI† {| *Ö›?§Û×pà8<ˆ 9-%‚ˆHÿÏgÿ âµ&?äŸðyÿ÷ŸðxMœéßðÏû÷ ÷_]¿ Žå 5|"]­¢ÕûkgTi”båæwï+•\¼’± ¡z3ñ,ÉwÍÃãLU¸¦4´õ¦¥v0ΖS °*é­Q 8Š´g‡¢­˜åÄ–äÞ!Ì¿øÅÉH`ø%KÏ{e„Š26IÔ) jöÆ´šë¸«ªg¼°¸0®¥¸ÖYÙlú_Þ÷½ï{ÔüfU¶M Ç߆!cÍr!ÉhiŠÖ#>—–Ó]”¯Ph6ÂÊ€x"ª>W©ü?€gð ËÔ¾ÑïõN÷Ú™š§Ú1y0¤u Ü™Ö\˜˜¹[2ÁèˆBÓÒÅX‹L±vKŒC ıÄÓËh²½r“cIˆóÕUa©Eƒ‹€e‰Á†¦3Ñ-T:G%ê©XxeóO¹¾”>÷ˆÕÈi¸Ñu;²w0fÓb‘B/¶eµE…ÝhX'é¥ÖºúLG»| x.…êÀúÀÜÒÏôȨ“ Ï©GŒÜ üâÄ]Ê’­\Â":Æ¢%Ž_ç¶Wï>ãToˆ˜Ó×=ŽÜ|uŒÚ]E\—]ŠíX¨¤HÞb€¹V¥¡yº ZVh°GaFOk©‘†ÛUƒ㜉f»ÀaÖî d"FÀQPÜ }œ¼¥R”– ÙwOùý]|k†f¦É˜Æ'§ÃhUq¼=ùS@¶çN=ŸzÒo“ǾӴû€ÂF¿³gF^ˆg>$é°I>èHwçØþΠTů‰ßý™.¿ ?ðrF©Û‡îH+¸ýz RxžÜ)ýËüò+-?ÝáXÜVæ+;l©•ù6BD:ÙÏ4ÒѸ ìiy5j¸¢¶è6Tü*TÎp¸¦èƒôn‚9·EŒÊÂÄÊÀ†’É+N¢‚žà1Ö7ŠÝÔCÄ¨Ü 2¢J…i݈ `s(™L,gHRÃ’pf˜÷7è‘¶4\f×&Ú`6Œ#j‚íXÙxÜ·­µ$ºÌš €Ñ Î…n!„á:&¢®ò¾¬1 éÜZ‚éøå5Vt”0Gs¶#ÁŒ}< p98ÔS½AÒÆˆöˆÒ`0aáKjà•å  8¤¢ƒ„6¹e4µ_Aø™´ÛK ú=#A°ß‹Ó÷d›ì‚Eš·­’Bu±k½½nB p†çDÀöí‰_ìs e«¦°$ † Ô6Epõ„ké‡tåüD@Ën}؇R–Á§ ðÄÈQ¸{©E(„y C63Nóq¬êº7;…Ø[îèŠIq¿)ªˆµu‚ ÚbÁµMw8ÆÙ7((}3è’]Õ‹`›ªgmÜÎÀûFdz`þÊɨ3œ-‚í6{—¢†+°xE÷­Š x|nGð'„?x‰KXØÊ[Yö€(h¥± ]äfßYH§Å.Œ:àî=ò<ì_ˆ™êipÃPðÌdJÖ¬8ìŠ4=bâ£T™ËH^Ä"ºœú¤&¶¾4<™–ÛcGHª(´kz(4ññ/épz‹“ë¨Wrx…~Ó‹ìgF—b1¨q"ö4_“$jS¸è•Ù@@¿)Fnù‹ªn?.¿7i³I¢ ÔW·R º¥¥²BÎÈÔ‘Ä'³Ñ Ú•[“µŠ,ýivûD[è(³L±‚yÃÔ¬åê«T1{IJÑSÑ+yêvW“ïûÂÍY‰J3l08/Þ—s*#@yFÑzŒpA²ghU7`ÿ iÀ¯Ùõ×Å((ƈb)®FyF<!M Ìâh@äºo€peŠ£StLX+ä¡ Œ›ÏR;}AŠ”7Biò‹ú®òÏ*úî/<ÄSæ)õí`.XÑï®â9T äiðŸQ‡Ö-Íþ¯fw:Ï€)¨:uØM¸Ø¡Ï$½yW_rïuÚ3rðé®:j :IÕa™ [ªlÂ×÷Z TÖ¥Ž÷慎ý Œ}ýáN”1yB(17k1þ²z3Qgà‹E‚k¥4ŸÙÂ+c‚¨/I 1ÎÆrØÃ† Œø™nP[ù”Oß(—ùY‚?6µb²MëM0>á˜H‰eêÉyˆ”Ê- ô‚ŒEÈ¡B˜Ò0Æ1I‘¶R¦6’{`É(O風Ž퀆[~-M1;ŽB¸;cÁ$!¢ÄRE–ö¬Ÿ¼[Ù—hD5ÓZ«’ F»²ËíÎè•üZ. všÑ Œ ´;~˜[…4ŠlëvöÞ[Nw€É¥¨eû¬ û@¾òœ1/Ù' _gª51 wzÿq†5ÕÃ)¸ÃDÐ1Ïý×=Eé~qúyJ)GÞÐ?tqx¶òæ´Û'ôªçK)–Ôà€F[FI p½»Zú²Ê”Å¡¥| Wù”Ô3ÂËö•-i·ß8…R¥lû¨ú);¥•°{UõPɲdˆ«jö¶üšá1‹±àÇéÁØC€ú†¢ì"ŒÛa3Ëýe°íþrØà©eºe¦èr‘±úDÑÕmö±Øò`¦ 1².ðÅŽÍ£ÇÙ ¡UÑ ^ä«TÌÐGq²Æ YbÏ¢GØK!R°ŠžP†Áowu–»WL!B•3åPöŒÚhRÍÏ䤋öæl‰eÚ‡–'Z±4ºÄ˜Î«Pòa–H 4o¹ü[÷ŸÅ¿yü[÷ŸÅ¿yü[÷† –ÊkÅþ…&Òˆ¸N õ­ÖD`4ÿÈÓ(ˆl¯öÂöT=m²lÙ§±†Q,!2¾‘‡Ö¯j,4)Iô–x^>Tb½¸j5ãÛÆ_!„5:Bcÿ»Qr×»N€yY”ÀähècÈ&b²YxÍ“ºaH¤ƒ^âÚ—¹R}0AΗ_H¤ï°ßÜ?ÉÜQQ“ èN1±Â(«Æ!ª3J%9¡C*25éЀ߷9‘Œ9Èq.ª½Ï¶ÀÎÍ=x>B¦Ã[_lêu)zôìmTŽÆj(©ç?ÕËVÚÕî8ŸÎ'óˆ`ÀK~)Åmù$Eõ¥Dú˜_ÐÆ¬@¶i[QBK(<¡^üèÚÆª€®×Yˆ,Eì=J“©ú}Q-%µ•óUðß|~_ ñ6F(»àBá½M™Ÿ‘Ɔ~SÕСޭºÃ;$³²fÝCÀPx#‚¤Òf´A£b²®¡)41 †ñik銆ž{*‘-‰®ŠJ (E»K±ÍvˆâéA•€uHƒU™ÆP¥ èûÑ\ÖœÑÚ@‡®?Wºã0Þ¿":Zìþ^0N6+ýþ<õîsu[ñú®½°B–RºI‘‚Œld/A>S¨/@•VdòSÔÉ`%€.ÖgÛɼy—‚ ¶ñ„rýgñŸL³ƒsmê«È¼žN5qSÀ†p»(ÓŠVm¤gÁ Sí!ï©KØÜ$iLýB¦¥âø°’"tÚ-XkªªŒ^ v ´xPÒ`ašÞ¶±ÀØ‘Œc»Iv‚ñ¸ÿB&h4Q˜&¡ ^M÷c¦«vëúq‚Àã$»ú,#bŒ–«˜⦛)¯".³ Íöÿcü0«µ»ÍŒ©ÍÚå2䨖®!ghº2¡·s9ÚgºE“³p_=ÇôÔ8wLË¥Q½è̘–Ç.` 5¶ú›ÅAh(0P·ò…‚Q€¨ Ÿ!³ªy㹩Ø*f1 =[Kºp,>03¤uZ®â~©(h „³È9)„Éq} 4³ŽZÊ¥¾H8¢øM”¡tf#ze-y'h`–ù\ÐŒ`Z!ê[Fýçð¦/Õ‰lŒÀJ²ì» » ŽpÂ.¶Âº«Z–"<@¦† ¨ >ÅÀË®(ÛÛª„oH5 O!KŠ/µQX4šÒ3ÿ ›ÑÁ9foܶ~‰ m@'Ѧ†ìbN•¨§Zsí€NO½ñÃL)Ç*‘±³¢ Š´³OÉS/Í;ø"ª‚·^à¸P…Ü$hã¨=;Ì”M?Ã~g×^º @‰q7{j££¡˜ ëv›~Ál,@Â7«f_Ú®’„%žï& âexFرŒ{À\8ÔvDl¬ª°>ÁœñzÐi|–6ÖŸgÂ^*tE0v8ò#1ým{jRF‹iµ€qn%c¦Mu`¤ÐÀ¼ðS…Ù+@G2o.•æ.¸5Ê=lÉ-V¬ûÙ °ªªm‘'ÙÄ~³¸² dgS$Ú8ÇïÒ¬µPsì‚.wªA"%eùY½·éc îHüD4 ¢¥Ùзd·D(¦Ù¿A÷…œHSÍ«câäâÂE´ë(Dõ^Sˆ Fª÷0{FÅè¹,6hõ*».вD,-ÁCeИ6 0Ú´ô³f¸Hwœ z‚"×—iò[ ¢ÏšQL0ýÈÇEAælP]èŽ*Ø$ŒMÃEæá÷ÄqÖo´mà“×÷‰˜H &¾³I gDk³ÉÒÇ ¢\vÓ›k ¼2ÃorÜŸ?vŠ·)×b\o·ÁJ‚ŸœA6±Á†QËÜbÔ[¨öÇàÿÄ,!1A Qa0qð‘ÁÑ@P¡±áñ`ÿÚ?ÿñ­l¶_ÿ[ÿÃßM’Éd¾œËþë~›b­Ðï¤×{ù`íìÌ$.¶CìRÙ— þòæëúH;`¿e‚2ï»ÓÚú*\ßõb>×€~lÀB97ÐoýݰüB ¸0¸/wÐ`e¡rùŸ„?ãlG’Aý¢ô,3@UvWQ_»Ëé µbžßÖ Ëþä1e†È®çämÓQ”îØ¾X#˜F›§·K±&FR8у[þÈñ¯1ÄQï°/t¿üÊ•*A°UàòÊÚ-XR‘@…]Â’eíÀˆïíC}Ç@;CÃJõ¨˜5„ï¡ÇªG¢º0ï4ȨA;Jç×t½Sê»ô®ÊДD#¥1"fVŠ•¨:jS¾½¯ÒÅhY£üÏ®J×µó)R¢*T­LJꮃߧ:óaoês£:›z'׉]U*Q*T©R¡ÓÏG¼H£¼4É2úžýXzÍ=ú«Jg0•¥J•ãJ•Ut:Ô¹þhž²>©‡£¾+Kãx×'\i¼=*‡QâuÑ ´Hoèsªvõë[—¥Ë›ëg0t¾†0t¿B«TÖúìÕOHc¶—è\ ],7ÑeË%%!ÏEË%Ëí=Ñå¹Nú/¼"’å눚VŒ¨‘þ_Buaв°K6ƒÊÆÖa>Ã>oùŸ7üÏ›þgËÿ3æÿ™ðïÌù¿æ|;ó>ùŸüÏ›þgÿ3áß™óÌù¿æ|ßó>oùŸ/üÏ›þe‡&l'…ÉKî_’ Ç2¯®½>tç þ¾c6ŒQ¨¿;ÐLJÒ™OfSÙ”öe=™OfRz -÷0xÚWé +¼† –_7«"d—¦WxTexèM•u*T6ôHtT£O®œiÞùï7éV&†5Õõ~kNk§–}D„`XöWÉåº ¬}çù&æ×JODÛøyP5£¯žñS¡o©]²»evÀ=!º$Ç‹¥Üæçý™¸u%ÊèvêÁÐ:|zxÐ:¦:~'ÏñŸ¡±ÛUž'~£hîLÃiŽèœtï¯~Žú ÇçrÎä³¹< àOýéãýç–w%ÉàK;“ÇûÏï,îK;Ë;’Îäð%Égr;€BP³Ñ&:+ÏAÖÌzgW:Tïê|bZÚD‚FmNð^R‚LØÃ¨™û°ÞÙ‹=!É‹ ·\D npË,å#<©Ÿ2¼MÑÈ(ûh"š=¡©ró=™zçCKœõ%k˜OÐÎWÆå†¥X­b_ÁRŽf5sjæYk³*> @óQ ñ‰ç–XÔNâ9ßÊSk\’ŠGé¸g1­qÖë™(Ôñ^×R§:nÇC†f¾{ÂÛh’ÐR²ú{ŶâÂf©oæa6í‚àãñH„Z˜É”¹råÁŠåËæ\t,—§iâpi^4Ù5ôvê5!Ñz3´c,’¼øÜ²ahÖÊlÊ–LlÂëMF*ÕÜ3¾Ä{Ö í†L)ßrå©ùóòù÷žOϼÝWÓþð~m}´÷€ÈÿÐAÿxô˜R†Aë#»"ØÏk×0z*vhšf\4:Âc ÎަmŠ|e´¬Ì¥˜u 15©k(úÃlŸYQœfƒ@nY]cøbÝ;}–PæjfÂM_˜É’ÿbGÙŽ\òöŒ"m¥é¶ña?öÞ—`ó\sh²ôj–,rä|®fL³*Ëb0nöø”¥xµMõˆ²[D^%™EìJ¨ƒîlP.Ô»#¯pÐn‚¡—¯÷¯ÿ µÁ€1@Ðø1†B³%÷¢µy'ÄvLjCn¢:ºÖ lR ^ÍZaé´©Ò§J4h‘ì$j”Q˃qvU#Ê í3ÀûÎú|;Ë LË­M‰ÃŠæ*_{‚^y o\DÛ´'äLjG˜Y§ 6C3Ý=ÓÝ=Þþã.˜e8¾ì)<©”íNåà({¤øŽÝ$4;Kz(Ñ•<Ï9cÅÎt|‡p_Cø~ ‹eÞÚ( œ§0¤ßhwî@¸ˆä íR!eÜ+Ÿq3¯nMµ†§’y'’y=_‚홽*§¿Nz{NbÓ6:8*Øöè[ž 4ô6ǵ¹Ui½‹wTY!CP.B @·˜cÉüt 2• z*®äÜÁ™M÷‰l¢“øßÛ t:VÚ^—‹è'5Þ…ñ....<’ßBôF¶Ò(ºM ›2Y‚ eƒÂ²¡WwðYáÉŽ‚bcAor›!XæÚŒ‚y‰v×™WF÷ŒŠ)•âüÀÕWrá¯ß £:ÒÀh¯){ò¡`µå¹ìOb{ØžÄö'±=‰ìOb,qŸø1àƒ©ÑÕâõ3ßèx*˜éNŽ·ê¡BÌ:“•‹ac3•PaP.eAÚ ï5÷…æ)ÎPC|%ŒîÌ#‘¡õ˜[>Ù%ËN•¸¢¢ ï/V)±g¿ S¿¥ó}³3BChé}¶·«ü‚ñ÷ÒêT¨„ ˜fs£ ÆgÂfO°sÁÏbS§Ø9L‚Úf,ò"Mî`<âj’µVËd½×¶½ºNŸ›íÐ@ÕÛO§K ÇF2t“Í<‘ðÓ챿ԋ?Ùç˜{]cPǘ°ä²T}xvâ÷rÁ˜šI{? VÀ8¾eåRh4³û$séûÓô‡îb~àåÿ™û•A§b!y9ÆÈ¨,[/ -Û°Öýˆýc{‘º‡n`æ©AÛçÄ$1 Þ#¤n.óÜCsL¿xZË2,AÌÓüŒef‚Ußiýâ®å{BŠNÚý?7Û¡BgFq>&èèÃAÒ„, *Ù‡êº÷¸Õ׃Áä¢ðÌlò0µW(û,+Mˆäw%H,™sNèqÝ¢àI¿DpŒ·=î‡16Á‰Ó’‘±H;Ì«G¾V*%ËÌAVLJg m€X U8ˆ|ÉVb’­b&œ©e¸è±+´³i\Ærlè#Â/)ÞîKQE#žÑ¹o&øàÿ‰ƒ`›'GÍöê£Ñô#´í£¢êo¼¢•%¦¸&ªžûï%2Áäî<1F鯲ÑC‘°;$ pà*_ u—yáá‰s² €¡››ÜDˆó„`b(TX…ª)k›0¥XZ qÌhh¨º7FÉŽå!1v#qÞØ ¹·hËè½C ­ˆÁlð‹¦  q. s¼ˆìÎn» ÞÝ7Û6CSiÄã§Ð4M4&ø«&tX1[»ÂT­°îÌAÚ¹²áùÑØØÏ~äOy T¥'f*­%‚Õû0˜!’©D­|(UQX3+˜ÀS£¶‡Ú8Ä).a¯>#(Ý冭ÏrŒ .$Ù,.*D2R©ˆpJó_tñ3ÄÏåðEᑽœ0‘cj©FáÚ(*«g‹[˜‹AÍŽœžbØO¡™FÓ\D¦"º•\†JߟÜ"'19ø ŒdÜýmm‹Ôò1GÂÊydä6”xU%Ùþ˃Äwéù¾Ý4ï+¯<êô7г¼€·Á–¾¯±ö•ŽÙa‰ÃÒËeþç™@› ÜAlA@ì÷I%Tkµ ½¼NDëTû‚Ð?@rw–X€O¾. 0ÎM l,J÷e{²½ØÓÒkçÉ)J…‘!öoÚÊA `noöº‘‡x,‹VV°ùîÅâ,c/}O.tù¾Ø!Ä#ß}9ÓŸ@ßh3ExŽæÇÚ8""Ì[L‘à´b²ƒÄ$F*ÁQûÁ8]œ©Š\_ ¾±H éVX¼y˜ºmáæ6s"®¶÷e½Ùov[êðöcÄήTDêäG@-ÄÁa™F Ï`Á½žÏ¹ » L/†ìß·nóæûg0¬hEÑí¥xèw:Žs¥V}ØËìaUBn‰ÜiW Io€¸ì!IJ^Áeb lÀ "@Ü’³ç¼¥Ž] û»žX _Ç8›O(E Þ„' qÖˆ  Ev¦Ä…ªå0/j’RÕò†›»ˆ˜µ»ß†|ßlÙ.zFÚ»èÍú?Z‚ææ„G–çí … (%›—e  Œ¦>a'~ðÐÅpùB©ïõEiâÔö¬32ÖÀí³!<Õí&¯X­£½Êφ>Ì%Òû!aR« ‘1qö‡›¹aa pÙå`ÿb4LêcŠæ˜Ptù‰D¶Î?Z„©f¯Uy¸èS Ý㻿;°óc2’àæÇ9-ZD³ G¨.‹å‰Ï!P½Þð‹íǃ·8àýº7ƒõCêýÃèŒx—'tvɨ(i•U›L¡Þ£DŠ|Z÷.ì¬à²ð/³pm1©\ 2¸¯læûfD!¡´©Zý4­q(†ÄæùwƒÚ"ˆ=©s½];áÔÜ L„-) ˜*½Œ\{”’üËß(kX¬„n”aéK Y‚x˜²E§\µÜ¤ÍO,vËûî˜í´­±(UÊC¿t««VŒ€›¨)RÙ ò ón߬Á/Ê¡¯|?ÊÓ²fÂ{šEØË.ZnØ1—}ÖUˆ5ÜYÂKe¯Î2¼!‹C$…Ú 8M„fÈìJÛöÜ÷ÑŸÚZ–ÝHÃ|Dtµ-ÌT6ŒVÕ»‹Ú… [Êp;ŸîŠ´„ÛS)X„ÊèDû!Ufòâ·|_nƒm\§ÖsçÚÿÄ,!1A Qaq0@ðñP‘¡Áѱá`ÿÚ?ÿóö¥Jÿáå[5ÙIúÁöÓ*ëÃÿŽn{lD‘%~¿R¦Ù} }ø"ÝLÜ€Ëôž;ÛÝnôÛx~ÃyÊXrÊ=3ðЯӎØ{sòhžÿµ?&ŸŒÿØŸ‚õûGéÆÈá'‹yÐÐaA‚hjhu[£¦1eï¢Å‹E‹,¸DÜÛ}¸ÒØ<–\¢.Ó,%B»ª$ÀåþıÃÔí1BBÊ=„e(‚^-n5=°"œ$Ã/Âà ·|tí§mCAÕo@k«>4ñª^«£Ú:.Œ}ÅŒtu' ö/¬†–"»¥m‚V“¬ëŒ1óñ ⢣ª‘$·ÄÜëØˆcG­ï ìo²2 Œ!»æydŽ–ÓxjB•h@†£×ÎÚ®—]LXÆ,X²åÜSA‹3ïÞ5¹¸¨­ÍÂ.%bÌ·<ˆ·Xka%íeCˆ¤rl}GÙæ6Ù9H.e»E|UÿLNÒ 8)„Su+EJ•ZA¥z/F&‹ÅŠGC¡ŒzIº_»*@‹:kQ àˆx„^øÀµÚÙŽñG‘ÌUybofB첩&ÇÑvIÕüÙÚkå"§š¬¸_üsø|ä¿ãÉÿŸ?Ï?‰È_ãŸÅgðYüJŸÅ$ÿÂOà’¯EØ]—ˆšvÏHÖ˜•«ÅÑÑÕÑXÇÔeÅ#MÄ"ß~#Åh aåB;¨ØxPMºRÛ+°ÎLMy¨L ‹°J3rÄØ²<®WäP X™o Ì£-õH6jø¸V@ãÜ7Ñ!®’i·KÒèó$H˜‰Ì¨š'+0 ¤Š¾ÏicpÚ0W0t-ì;À™G nJqñÀŽ‚3Ú"çoÿS(Æ×ê"úGØZø[·æ¡éz§/mÇäÃnÁNã'­^P¦\Ê©v…g£¢+*Ã’ O¾wA—¤ÐÕÕute@$ö%Ë'bIŒ–’fötæ=‡[±ÛbÜ“¥™",ð†ì»%Si!¥/ìÏV—eŸ*T4nA¢‡’=F×)h¢¥ªéÝ9!"0ωF a6ú eCìÚª Î>Lç  Þ@x:MÜ ˆ-xêJÔ°–3ìÝÐÇ •¶‡WŽÄí*¤7³@>.Ð+É ±%ˆîé9;ñmú-Y-F»B®L€ZÄX(®»0 ’’HfŒŒfÆ_á#Ûå¾õÝ¥ÇAð^€†¾M¸EHèìŠÞärHù×*¥e\žu ˆ ·™Y—ý˜Ïy¨-0÷‚#”ÛXLæJ¿´¥U’¢–Øã{ùo½wMÌk5Òtd4íò„M0¹@ö Ð*{Ä›hÝ‚sƒhd¥!6Ÿµc÷:8ȯiT#g™z‘ŠyÑm»F» · ƒ¼Ë;œ±KB¢k³Ç´¢ÂÆžR°A?{˜Û,úT¿ð¨hEæfá¶8×x…Ka¼lÜ$;2ðËÃ/ ¼2ðËÃ/ ¼2ðÈ–Ë+–‚oŒz¯q4í§Ò+å¹Ü}× ÛB¦D;ÊÀX)¸±|å4á²YtïM’Ѿ¤.¦š6Þ þØÃ˼@×’qà?°f8hÞ‹ët…x˜U£ŒºFV(ÜÙ=úˆ ÙOˆÛrÇâ·Ón4Ýòöi—ï`)í~e U+IPí:”‡F`d1ª7Š  :¦ä§.Ãe÷dï.†>3ÕÄcûA¬cæ#Ô²–l@¶Æ¨,¬ däí­Ÿ§9ÙðØô‰Å$ª§ø' øcI|ÑQ©‹«í Be*'Ònø×ÝZlyçE, XÞ¥ßo©‚ð-Oî–- ©«ÿ¤P A°Ï Yî–"»*_É„³.‹Øÿa6 r¿`³-þÁ/«Ðw’ßÄ·då !¡æd}Ç»bøn¼Â¸•.‚ÊJ;zVlx69%¸v\Åm Û£piNaÀ­. ËC&&p$e;s¸T©xf“áŒëA¶Ç,J¨|”z¦ÛØÇN4>ÑVüA³2!È@vR‡w‰yÝÅ>¢tV;Éu+"Øìðe¢]?{ €Ù7°´‚zÔVð̹4æÂîýÕc„`ˆˆÓ³3ð„7EN/. ÔKÍ—$¤²s%4HEÌ#¦%½uuáŠp„/V77X [ Ö÷×ÊÞ?)‚ŒkÞ`¢(%Ëã­A;êì_d|=‰d²kˆ¢áñQw†˜„lAélòèzt¯I£ M±R¥, Ûu1í”æ5G²šcDPF…µŒ“Ê”ÎK]ù‰Ae5ìŒ2„eÀï{䧈dvøsêY*ã “77²Ê»R­ÿ¬_°ÊoØ—D+¸ž‚@Ö˜™›ÔGÔ-®¡koîõØÃ/5,—,—.^—«e¯‚+÷t×TÊÜcß7˜ÃQ¯qu:[oÐôãF=&œ§#ÚïTH&ú}Bm‚rËxt€ ´íØ röñîà¨Þ3Fˆ£Eƒqá<¡‘°aܹÙ<á& vÃ’à‰)BncÚyA³Ì]áÃÛKu«+„Ot”Å pŠ]>  Þó9–ÓÝxj(Úˆ0q?…O§áSð©øTü*~¼Ãì’éiÂoØt%~e³#M©N-5`G‰aÄ\!) ˆ QÒÛ{¡×Ÿ€wè46,²p´—êÙ6 7ü‰å74Yd»˜åS†õ/ÒÌÛo$´ÅcSOgþF½ÈÕOü110×µ@F ¤"a³Û‡Ü 0X™&^“S°ùm¥ ª°°mž†€’dX|íYÈÌïÿq„ÈD`¦ÄäŽÉ¯’òNÀu6ÞÊGZøƒX–1Ê‹¸²|u,ÙĵÏp«Ì+aسÄ<¿ÙcŒwƒ†®ðeÙ–”«<˜ù=Bî³}¾Œ¥sAv^äF);‘;¹NÁ³evO“)p)_b³_‚g¯7qÚÑØgÝ;0Š»aÇ’…՛ʋqêPŒõ›ÍÚÔ¬WÀõ§Ìçi@¯ÃEÍßG2ƒÄ}´C‹¡#(2¼ Îp»ÆçKhbͬðÀ(‡‘ÿ‡ý—´Ö«w–Þ+ä§ï‡ipÄ,áÊŸ“¾@'{5f °¬w9úæî.ÊUS+>ùæp†ä¨‹°BM¸FPÕLX™>hG[׎Ÿ1Φ»&ðCê}NàÕ§­‰vÜafk–Ã[(BËј‰W.Ý„Q ØH;Œ)‚ søØkú ×Z¥ŠÑ)D,V9¿p¿›\O{;å[ä­ì¼Ã \Œ?˘Y\9Xs@°¯.2p¥–nÎ3÷ =3oHJKÄnp§‘c‡œ‰VaTô@÷22±)ˆ v‘†Áž[-„tÞbg5d¹âTÀ í¾ –ÙƒV¹ ¨è±}šŽW/e¼´åÚ0³|ÌôBÆx•§=ÿÙinstagram-feed/admin/builder/assets/img/user.png000064400000010752151435171370015726 0ustar00‰PNG  IHDRAAŽ÷ÉE pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚìœKl×@Ïð3Cñ3$-Ñv`™®!).EU‰%ñ¦PÑU€’m6ù Ÿ  ’Mw’ ’EÒ|Ú¤«.ÛF‹¢Ešv 5É‘­X¶%9hH0#PC‘5ü »àÛMrÞÐTÛ  3÷¾{tç½û.ï“T©Tø_À™3gœ¶îîF€#@8 ¸2°ü ø7°Ì_NìôéÓUÉýÀÃÀ¼Íýà7ý. \>~œs,Jxx /Üg^¯óÀo÷M@BÄ%0Üß–×h$c¦þeÓ^´W ¼ \5?÷ui.‹Yì¾t'!Lÿ4ÿ"whbÞ2Ç1Ùm?¾2'¿^ûÍñ<Ý-¿ìÑ%ÿ#à§!üxªÇsŸgÍq:áÀƒ{$ |ø»h¦öX6ü#ࢠ|üdn ~jŽß„§€'œe6pOÜnk–6'Ì•@˜H’D¥R¡P( ë:•J—Ë…aH’„,Ë(ŠR¿O | ü ¸Ö.„ß‹…Ëå"ŸÏS(ˆD"9r„H$‚,Ë‹E2™ ׯ_GÓ4<~¿Ã0Dáæ.¶e/ßš¦ …8q⃃ƒx½Þ[î+•J¬®®ráÂ666ˆD""#bÜôëÝVæ„ ¹I “ÉpðàA¦§§9zôhC‡x<Îôô4ñxœ $I ¯7ÚÒ7‚ðsÀ' @6›%‹qêÔ)|¾ÖÔz½^¦¦¦dssS$Ÿé_S>àQ‹ÅbÝ¡Ndjjо¾>t] /þf^úDEÁÖÖ###-GÀÍâv»I$loo‹Œ†>à™fže©\.ãóù²¥ghhUU)•J"£áÉÝ ŒS-| ‘B¡@4% ÙÒ#Ë2‘H„B¡ BK=Ó á1‘V Ã@Q!ºdY¦\.‹Î$oá^Ý^&oñ×eÉ Ž‰¸¨÷¸T*9âX-g¨A8("-x½^²Ù,ÅbѶ®\.·k‚eCÓï:„ Ñ<™L†••[zVWWI§ÓȲìÄ+1a…pÌ ²,såÊ[:.]º„Ëårj^8f…pØ ~¿Ÿõõuæææ:z~aaµµ5€Su‡ÃVßsjfƒ\¼x‘Ë—/·õÜòò2333ƒA§¢ îwm+}—SU£Zmàܹsh𯸸8~¿×gt]g~~ž……úúúðxŸŸÏ'Æ·V+¢œ7 ƒL&C8ftt”ááá¶6R²,ÓßßO}¢\ZZbii MÓPU—Ë% ÆŠÂUQ{…\.ÇÈÈB²5 ýÿÿ'ÀõÏA¶ÙP»ÍIEND®B`‚instagram-feed/admin/builder/assets/img/ext-singlealbum.png000064400000034113151435171370020045 0ustar00‰PNG  IHDR¿óE pHYs  šœsRGB®ÎégAMA± üa7àIDATxí}]¬eÇ•VÕ9§ÛîŸÛî¶»ÝcOǺq<‘0Ê©#Y‘00yA†Ñ¥…‘£‘æ!"#Á¼àöDbð“d21"²Ä<ŒA‚„3cÈCb fbKþ‹c÷ÄØm÷¯þqßSÔW·Ö¾k¯³ªvÛ÷ìîi¯OÚçì]»jÕß®µW­Zµ¶sƒÁ°,BžÎÿ3´°]'Óiykñ[èsšZ|¢WÉCÆ÷J˜+ÑUÂ=§ÓØF^äïKuil“ûB–G —i¨|5ú5Zòùj}je]¦­4:ÅûÚó’Æh–žÙêãå0Ð) qµÁÂî÷þ ÷|á>å»Àtø¹ld.iñü|­|‚¶w®‰ ð2/ÓŽ’ÖBÚB$Šåt›õ­È=§×«×þ²ÄíÑ…ñþ+õ‹ÛÑUúW+«ZW‘·Óþ+̧Ô^Iï+Ï·«”³G×ÝlÜ^y›.t{ˆ{¥<$M{Ò1a÷øÿDIï\@xY>ACËŸÒÊ|'2OI—Ž'žxb¢ÑG¸Ûj?µJ{–ÊØ¿V÷Z[È6dåŸÔÊÖx4? eìhæò ¶Ÿ8&Cù+ ¦ûWòœ´Ðí0(uÞ0("V ­C&¬ñRƒÐÄ._þò—§üºrø¡8 #iia”oüŸRœ|­Æåa¥sÎ((OÁ<ºøò¿P¶¥ë*ÛŠ·ù­¡þê£Æ>¬Æm¡1T×ðœÔò^¢žÝó“óœõãí"$D:-2…°äôèº Å×B4•98Ö€l ªG¾?ca3žî‘GÁõLБñé:Åcqg2.ÑSÊ¢ÒÈñKåŸÕê¥Ô½W­mX{tqYfµ<Zþ3N—ÓÏñL´á`ÿÕú™µù¬P®Ò³°¶ÒÝý\‡b½]¥ÿDÛiíÍŸÒs4«Ô‹·+’H©Ê9&QIÃåð•3‡… #»v) s3œ_»ví×§Óé¯ÇËu`N£†1: q¹ô¢Ý¯AÆ+åW£Ù—ÓmG4—‰SjC­|2L+O­ì%ÔÊÀój‹R8¡rhqeY†új(Ï–z”úJÒ]¶M"ÎÅûOÅÿ%Ç,×ÂwC½ã‰A L''“É?qƒaÇÇÚ.\¸ð—påRÄŒ)7’øâ¶¤‡æó¹Ó g0V‹gžyFŽ¿nL’îa …d7ÚÖìÂ3|\.}®c0zàR_Þ\)&ĤŽ"<÷Üsé’ƒ3 c Á8½¨Ý_9ø´B®Ç¦“ãÇû^xÁGæ0Hììç>šƒŽ»åðâîÅ3Î`Ø.>{`â~å§îŽÝå±_Â>Ž»@Ó 0‰|Ðܸ5ƒÁ°xåÂÜ=ûvÓ ã.YN‚1D&áž|òI„©˜ÞkÌ×d*á–ÀDŠ+ÝÔRÂ^{í5?4­¸<,X Ÿxœ¿Úôöœ;vlÇŸ{ã7“ •Ã'NLÙ~ŽnAò}Û’ØjEœ)# †Ñ€|ôèQÿ©O}Ê}ðÁÓK—.¥1%¼È}œ^„<½XHŠNRÑvK`–uD³øÒéÖ××ý›o¾91…¤Á°z`¿ûî»Óx„8öø bøêW¿:ãóšÛœ>p«ÉÐ'‘Æ3‹â¶5ÙŸ±Ì{ˆŒÁE]CšRàºE!i0®Q·÷¹³gÏþç]»v…xž$„Ùls˜N§ÓðÍo~³‹{íÚµ§¾ño|+J´ÄÙSX*Óˆ¥˜DÊUN+`ÛpñâÅÄ âÜÇ:uj¼ýãÃ'qœÝñ@ í‚Ìâ/EýÃ×ãøü+nsgçB¿äÆ-¾‘L7aÛW)À]g0FÛ¹ÆÍZ÷Þ{ï?„Â2ßçû¢(ݶ^îœ9¤¹K\6éJ§nFPÃHàSxþ¶/½ùcø¯F]„÷…Û5µ&;‡tÁ–1 9tm_…Á0*häâ࿃NÝÖNÎ…Š¥íQ¬T$‚ܾî›BÒ`¥©D¨8¡e¦ÖÝÜ‚é¶mçÀ¹I:ú† ÃLr0ÆI š < 0µÆBm÷¦Y@ÈpÛÀL¤S¡œIà Ƨ\±(À¿÷Þ{ˆ0Ï;©ç™±ô¦ÜŒZžK‚nAE4\fqÓË0ƒÁ°ZH%dõѨœìÙ³'ĕƔø¥—^êmóæãœ®ÉXª4ÝèÍbIä<’`ã•m©2F€dŠIôBšË—/OΟ??yðÁý‘#GhGç„y‘â.ç4ß-Ý’'I-ÓÌ}©S§‘;ï¼Ó–2 †á>AÀCE, \½zÕÿøÇ?žò´1¾“A;69C &AEï&æÛCYâtïÌ™3Î$ƒaõSnõÊß\´09}ú4¾+“ö„cÅñþûï'NœHú‡¼gŠo¸Lªèèò)Æl‹~Ïud€CÌ(¼ùæ›) ž›ä`0¬ƒ¥•Á¬+ÐÂï‹ãô"™[S¼étšÊw¾ó7£äÿÛ³Ùì)ÚXé2£pY‚Ð)${7¢Î!ýÇ S ¦‘°IÃ(˜I¢JÊJ6à×#£øwé›L*ñ4öÅ4fAç@{+’Î!Î_…£G¦i…é †qA A¢b µ`ÁR½ýöÛÙVo•FOçÀÖ;ÜÒ¿ûî»Ir0ƒÁ0Jû)˜^@MÇm"`—¤LO>|ø/Äÿç(¾ÛóRÇ‘xwÇC€CKB”Œ1 #A{ó‡#G0.5îA"êñ—$‡ŒÎJšëñÃ÷Vp0¢è"EÉÁÛ´Â`ʽ—¯l³PâÉ)…úoüsèYIAç%‡n)Ó̧ †ñPc šbR.J:„Ë—/'æÀ>VÅ¥†ž)õ‚?º€1¿g¯ †ñ W'ä4cH’ 8\šÈå:‰æÐøïËßé°Zqtm’ƒÁ0.4+I®Ý¯¥‰Ë™É¬ªƒlðXœfpÿ÷ik'¸ Ù9ÀEÜ=÷ܳ)b˜ä`0ŒmZ1$-ÔýçiER?~|Â¥¹·bÆèx±Œ™ÄŒ¨ÝœÆå[­0n0JæÓ-ñø5y•_[[›÷£øÞGqÄ'žx"ä€-Û°oxÿý÷mW¦ÁpÀ%ˆ– ·À$•LÓŠüÂ÷ù£Ué\Ë›>jãYÒÝl>ˆËØj…Á0¤BqˆAÈ)Hij‘ z7°:™õ½{Ý–í|¦˜‡HqÃ’Ãxhè2>¤{2Ö”šve9rÄå%LZ±€×ê”,§M<¡Ó90Ådï£6Lç`0F„\iáÚ2¦ŒK̃@+Lr ¯‡Y`S¦s0ÆAiÙ’KËÐà×ٟØ®±?­p[®©;ZTè¤HìËvd:ÝÝ##¨äð!o¸p”ˆ¸JþV¦3 ãƒ+éóv¥Á. $“ °i…ÏK™|ü/nÙÞ¢¿uŒ$|ñÊ`0Œ¹ÏbÈÆaèM+ȃc³)­VÐ G·u’Cä,|˶é †ÚŽMhQPÊÝ™RâÀRfÔ+v„˜“Ù­WD('&.¢ä0qŒ‹˜ÔÍ ùC7{ùyçÏ™%ëŸì:°æÜŸû[ƒñä¢eY“O'äy!ýŠÆz_rË%>·¢ïlÒ$‡›‰1üï?4Æp‹B.eÖ¦¥{5†‚Û¸ÍïW8¶·bk)3æê—½Â¤ˆtb’Ã͇éOþOb†[-¶µ}¥´4­€0À}Ç­ ÷çÀó"ÚGŽé¦ÎpSÁxÖn}ðiÂP‰J󶔙ŸV`)“s&RLP¢<°-Û7#®]u†[Ú†*-Ž<XÝXÊĪ$ÿêU`î";ói"#¨ãǧDøVfÔjzØ9ØÞ ƒa”Ì K+2žF§Ä$âXO7²ñcOP艑{xp8{äpêÔ)8{ ÙÎÁtÃИA‹itë´âðáÃé–ª|OOèCºé‚û‹’Cçü%û4 #¢uÕŒ¯9Š¡kXHÂí#yx‹‚­N.~ò]™  Ç“ëëëž ð!]g IƒaTH‰¡ÕÔP\€ûs`:¯™O«+Ü”³i…Á°rHsi@ꆒۄÇ,¤ñÓ-e‚e`ÎïÓyÓU7µ0 «GM鸬B²—ÜÄ‘BvYJ ¤g˜q ¡ÄMò®L›V # (_­‚)Aƒ)´jÅÓ`ã’4­¸téR H7‘=g/àb†‡V+ÌŸƒÁ04Тœ,JÕ,,É-#¸Ô@rHÔ0¥ Âp÷Þ{ïaóU ‰Á$ †ñ ™è|Y‰‚À¿[-Û²t[¦ Ó é&Nú–3 #€3M÷ I´%Mž ~ò´"¹‰ëÂ&21¶n’›8žØtÃê14…¨I-S´”‰¾”™=…L'Ýï}r æ¢:y§Åj”’6­0ƃ´Y(yv’ ŠÚô:‡ìÀ‰V,1þóêeÏ*Í5H! É×q)Ó ƒaH—o\Ø®Þ`:‡Àf4þiãUßÙ‹cÊ8˜Í×IjÈ>$Mr0F‚¦$Ô¦Ë|BB¬Vx™w÷Å+Êf”øàÒ-üÄ`0¬´—iY—pKOuDà`–)$»iÅŒ,$)bÖ9„×^{­GÀ`0Œ i5¤K¨}·‚ãÈ‘#þY`% ɼœdšÉÝÍ{l)³Û•™ý9˜ÎÁ`¸Xƪؕ ÆÀ-$áìEÒŸIÂôÅ«óçÏw:ÀV+ †ñ íÊ”áKJiK™999‚òa’õ 2’ÃÚÚ¦áØ±côñ gßÊ4Æ7zb\²¨IÜ|€BÞæ]vüÒ3‚ò›Òíôä.**$=ve:ƒÁpÃÁ-&µÁÏ]ÄQ|‘hæÓqu’Æ¿_Ð9pŸ|HBrÀ9M+ Ã86 rVÉô\ölõÞ–?‡¶Hù-#(–YG’I:tÈô à ICÓúÚ÷*†tÙ¡toÓÀW+ÜÓãs,eF…‰ÁöV ã@³ˆZ±à÷d<_ñ>M¾\Hß: É|åÙdÃç9Hç?µ1³Ã8Ð,½ðD]K[‹—½¤´”‰iì›Nž<Ù ¸1¡e ·e[Ý%°ZaæÓÃ8àJGbrw-m˪EÏi)ßʤïÔÈñ?¡uM·¹á¢ËDZ½fã`0Œé9z sè.NM×€iV+à}ˆ³O IšV8Ú•Ió‹L´£†½°sH‘¢¾ÁtÃxŒ æ,VƯ™Q“Éì`¶Ûx•·k“7¨„ÎÎù4~°e›>jã ÃhÐü7p© _»®)$aç€iùqÉâÖB’#Afç°·Â’Ãê!ý8HÅbËÔbH7á*û¤²ôÐsöÒC6§$"«ƒaõX–, ¾Z¡€L¨{’gäì…à¡Ý4¥¤Á0JV%”ì dØÆÆF ˆúÄPÎÚ÷$‡Þve21ÚMSH 7rOÅDÁ§#2.>¤‹ÿ¨Oôåì²{¢G¡`´ßÊüøã]"kú ¾ˆ@÷ sÀ–mØ9ÐÞ)J’ãô?jC^ (0{Ÿ¦½i)Ó¦Ã8ðÂ5\+jö q<'qÙÙ AuɈ™O§ ö!ݘBÒ`A¸¤oa2ŽfÅ?j@·H»2™…äæÌè⇾[Õ $ºpá‚Ë:SH #BóáP3‚jÎ^JéöìÙÓm°$)tä}ºW.L+Är¦IÈÐvV¶H%ßḐ¡s¸í¶ÛÒÞ ·%-Ìy܉Øt•r‡I·¹ZÑ…™ä`0Œ¯8˜ZÐìä=Z­ veâš¾Wã˜BrÆÄ®4´…3ÜļË #BcCJÊ–}%ɾWã˜Ô̱/ë2bÜŸC²uø$L+¾õÃ'ÝÏ.¾®Þ»:îê†[ wìÿ‚»çÈßsÃvÀ•’-:™SûnE$‡Ì ºõÏY&–¸ÜÄ}ï{ßóQrèöt’Ìž¹ôÿÜÙK;WßùGÎ`¸^´èJ«Ò%3‚òqZ‘Æ9-ebµÞ ¸äà„R>$'PHFÎèßÃN2`÷ìng0lÚ¿¶´é’Ú4#FPÓé/þ¤o„0À¼AÑ,"p]‚';‡l>MFŸEäÏοî._³7½áÆCètÍï—ÒÕâ`oöJÁƒLNã_šO'O[^çðÆ™ÝNcÏm÷;ƒaYp’š´*µÑhHù´Ä‚Iºý=Û•9:.ü‘ûî+¿ç¾õ“n,üðÔu;ÉtŸ3¶ mÀ¥WCRÀ•+W<$rGÈK™=× ¤ ‚0>Ëì°œ9ÆW¶Á~pêÝKï~¿÷ãƒÝýwý²[%^ÿàGî‹o¸Æí&9¶>Ð5BKz‚4¦Â´’V+ :È®éSt'7^ ûLyd;wæÌ™°ªéb`þûžt¿óß¿âž}ù› âýw_ý=·j<óâ¿p; L)¦“ Ë£u•LÃ`ç¦ü+Û¤oìÓ˜3aß|HÂMV+˜ä°£ú0H凔€`Ï¿ùûî‹ë¿æVL_vz•¸ý¶O;ƒa'Pìï}ónÎÓ§OËWX±Hæ >ªÿ´ñŠL(=Ä ¬VÀ5=9™Í_¼º.iÃÿä?¥Á¾¬òï^ú]wïÚgv|z&õß^û¶[îØ÷g0ì¸b²d ¥)-KÒ>^öÓÌŠ|GR^ ¯<_­ÈŒ!­V@ç°;0„?y÷¸N}÷ºW¾õ¿žtÿ/þswϙǃ1¬Rá¹wïçœÁp½XÖ2Rú’ÔÒAM€>­Èy-($ɦ:1è²{ú."¸Ìµkך%‡e¦ ­¸ôñ‡î_>ÿî¯?ø®{ŠñüO~ßýÁË¿ëV…ý{>gúÃuAÛSQÃÐjAq'²ÝZœèöV8×s·K«BrÕS ,}é—¾âí=ºTÚ4xõÛ+±ià8tà¯:ƒázÀßþRh]µÐ$ÚxDÕ¾O“¢º-!a+®$˜’d%É)7M+ŽûRZaX¥µá úÝtÿÅ/¹?ÿ »ÏÜù»}—þ¦ÆÔæO/¼6 Svï:ês0ìZ%‚Ú6m ZÊŒŒAúrðy“¤‡™–+‘«øœ¸ËË5`Ï®ýþµ4W bÀ½>ãí9ênŸm1 Ø.üìÂënL0E¤á:¡)‡˜D+èCºÒÊe€è`®Ðûºv¶s q£K°ŒB:>HǘÀßýŸÃÀ16cúÎ`¸^h6 CÎ^$SÑöe8càfy¼ ¿ÀR&EŽëŸš.¢ $=|Òpô®¿ívÙNLÃu¸‡[Fç …$$y‚bñ»ô•íˆè`¯ïò‡t—b7Bz¸‘€®Á‘†U¢¶ñJ†— WHÂΞ ²ÿòåàøjöœIäÄA®…¶ÒVV¹rq3áè™Ô`Ø”L ·kïP€g.’ Û•™ ­O.,iä¯l/m…©Åýw®vÓÔÍØ5Ø …a§ÀM¡5#¨@#3I˜¡ ›0%Fw{+°ZA_¼B>ÛÝxuâ¡ß¼¥§˜Nû…¯;ƒa§ Ù8´ì¯à I:ø'ñdtük†ì?²G'­VP™\^­€ÃîÝ»{Û7+™$Ü^àX^<ñË¿énUÜ{äïÚtÂÐŒO»g0NuWp-éCÅ÷ƒcNœØGmrÒÐ[ʤÈé?›N;¦lšNì‹Ú‹µ™~†J¿òK»[ XX3»C#ÀþÂñÁxr 1´„Éïù´t©EÙLî;µm¼ê¾“wâÄ 0ˆœA9r¤‰Aܽyhø;}%†ÄC9í >oÝ[H÷rÒæK™ÙB2iúnEœ1Àû[ˆ+ýÕŠ°µTÑÛ„×ÕdIµ*g/ƒ¡M ¹ô|ÌòÏáI IØ5E û¼3;ñ syG<ÂÅT”ºÒÙçð †ñÀßø-¦Ñr«v‰žrK/­2gýô½ýÜIr8vìXâ(C IƒÁ°3 OZíJËši† ì« Ý@—>$ù’£àìG2ĹÊyg0VŠš¾(HÑ=@ÓWp³ˆŠitŠè3Hç@væ Šïñö}ôÑ:ä Ãê€ïÒrh’BÍŠ _áÐâËWYçг’æK™=ËHBåMéøüç?ÿÇ/^üg0VLÝ£Ø_BÔ¦Rªš†pÉÁ),å·2;Ãý÷ß?ÜÌ#1|>ëÀÿôôéÓo­­­=µž÷¹­Jqë*Òn‚ ­EgÞ*”/ ó8­–bR)#Ó—hiy×èË<4ZC(Í K %™¥)ÅÕê>”O‰N­Zú•_ËtZŸi4Kå–õ•ulÉ¿D³”Gë32‡þ!1`™‘tiuphCZIÖâÓ¾)öáìžáã‚Ùéè#qí“vh"ÑüÈ‘#O<¥{Ca$zÒùÝ!ð4Û•N4IH¾‰[ÊXz£^o½–ÅvÓúÊ[ûzúMÙÞ¥x%Z>Ú ÷‰ì’p¦ iJh¿L©¬5«æ£Gº¨GtYm0—Ÿ£À\ÊìòŽR"Ø^ƒaäe•““ÇoD„ƒöíÛç¢)ƵݻwÏwíÚUäø5,#Bʸ—8´ôÚ /½Åj\XÆ¡NêÎëJ¼eÌZ}eXëô¢Eü_FÊâR^i0ÖΉ†¼Wj—Ö²•âµSk;–ÀiÐÀç÷äTB¾õµÁ?”?σ÷…,0Ð9–2…R2a&™dÉ!]ç5дSœæêÕ«>•‡éŒ!ý_ºt Û¾çxSÊD•”çµN‘à ϯKÒCé~+–I[âØ’¡hàå­¥o)ÏPMúh)£F›÷³Oö«V6.åµüeÊ8ä3,ëìý¢.B¦×®eÿhùr”âËÚàeÏv`÷%šVÐ?Å⻳Èz ¢G”“È®ëai5B‚˜“ãʬƒ€Rrƒ‹ÑÛ?µ¿O)¿V½Åo­×²Ò²ñW•o íZË22ïuÍ2her-t†Ê¡Å)1 úçºú—ŒCÒ_æ¹/1éCò®»îJŸ¢À*ež-%"èór> ¦@Kœ %e&âã4"d&áóVP0™4µˆI’×zËÆäaù÷*'ß(š(,锦ü^©1å _2ÓÞÞô¨‰¿|º#ïË2hykõ(å!Û®$Mi4ø¹–Ñç4)Mb"f+wJ:²ï´~.•·Ö%iD¶‰6)oCÙ.5Æ¥•O2^F>4Njyim.ãÀÎ!{{ y–x\5·|ÓËsç¶ÖCù9Ð$r É©S§<–8±rÿ§?øÁ¿ï¾ûþµ«€?ü¡láø-œ´•Û–$†Ú´Ä_‡TS’¾|Xkƒ¢–‡–g©­µ·^k,‹¡Ö"Éɶb¨;Ò ¯ukŒF£3Tv´Ì Èf‚^VÚêÅË/¿ühT üQ<݈ãv™dtsHBÁ$_x¥Ò¥ž£Yp‘D˜XÇ7møàƒæQÉ1‡$ræÌ™y,Ø<.i¦i_®¡ hË7Î+ǯ%-¼áyxÉÀD£%@+«Ô*Ëp™f¨ ¼.²¾<Þ²mT*;χÎ9R{”ò/õL'ÿkôZ»k÷JýÃÛ‰®KeÐèh}[ë—ÒyéÞPž’i´¾hdùB .“…ä#›.<ÿ©OòEà "07õÄ `$•V."6}ôÑ ø›„MC Û€ž\èìÙ³ó§Ÿ~ú¿PÇËLëÐR¸6 xçó ñð–ŽÑòài5æÂãÈ[˯6 J÷<Œÿc¬Ñ’íÆÛ«Ô&C±Ö_òáæí"¨V†ã:Öú­Öî3ÔÚL£'Ÿ/ /õw‰¦ÖörÀ—$›ÆÐê˜Æx9RHƥ̎8ü9Ä1XyÒ=ÉhÊ e<ï:icAì™À)mÞ‡€É±cÇ|œbàzòá‡þVTbþ–¬0‰ŠDÿ%ñ‘çY k…lÀš¥{-âkkù[¦ RÜ×ÄÚjí,ó+Ms†è—tËô—Ö¥²S8òh1œ+ÕC†—Úǧx5 =Z–a —/_Nç\j•̈Î_}õÕG~øá?ŠºÁô§#AÑ|ªÐ„*ð„ÌEB.p§Íd†Ä¢hhçRÆð=¹ÿþvþüù߈:ˆ?áæoí­/+å®+9´ä’’¿W ׸}‰Ž¯¼A‡ÒjaZZ-Z Ñâm_:4I¡ÖC½q—M3Ôçü«×òª=;¥6¬µeKßòxZœV`<^½zµÛºÀë­åAàŸÃ[__O¤ÜæJ$ ŽþiîÓû ϵ{øó›¹õ¦"'Nœ˜dÇ´Ý6ðÈ,¦o½õÖäôéÓ>2Œ]1>”•³8õ˜ÅJaòƒùÌîxìzå•Wþ/W$#ÊùU4”y&9>»èíB÷y\ZY¡ÆæéäÛ;(ÚpŠËiœ#óu’÷JyrðúðºrðûØ"<ôÆÕÚŠÓÐ$›’ôÀ%F™§|c¡ æt©ìt « Z=ø9ÿ§2É>,ItOoñi¡”ôhK6/“ü— Šèiú-ÎÀèåªÑ!@røìg?›’.K ñÅ>S‹¹ËjŠ/·l»“ñzŒ·ÈP ]¼xÑGiÁCåÌ(ALâªÅÌ5Ï;·YQG®#è);ãæñ%=§¥_kŒA +Å)ÑÌ Éç[ÆÄ;¶;ýoKr`hÇ‚ôéçØ‹Aq×7Í5!AÀ'%i uÚ’Ÿ@ŠNC¬ :΄ÖÙr×WIzÚu)¬tO»Æ<’×µöfk|¥òhi©®%ÓóS’q R™Z*½8jŒQ+O)>À´ç§%R<® oe€\¢bòÙUè%EKÔºüÙ‰ÝmIüs¸-]¼K''Ož„?x—qXÆDV0.]ºäã Å$2HiÆ™3gv¡Ì‘A¼GWÊ‹Î9´ðÒÃB÷ø]Z,Iœaµ 2^¦Ú Š_’ZJe•t†ò¯Õ·Öž<­îµüe<íº5Ž,[ËsQ+7/;WcÂÛi;^~ù¼´¦Cåô£„þ×âtâ{(,š³HÚWAG¶%ÑXžs2d@»81§aÞ¤&Qzׂ)L)víŽ;òíXÁOÉFI ¦0^í,q~‚¦-–ub¥Tž×â”èð·F©=è~í•RRËÃ,A-  ÙÔÐB³¥mKmSjw`ü~‹D©•M‹3^º§I òžV­ÿ$mH™y³÷`çÕŠ~9Ü‚$^ 8Á?$‰¨˜äi˜$‰idð\=‰úˆ|àÀ¤ È!](‹Úè5½88ÒÛ¢Ädèºö´Ô¥Öò­©½µ¤ø_zKט[útM–¯ä U+çP´k­/y5š5ztÍÓ•Ú¢&,Ë4% 1;-¯!¦Ävy+¾t[’BrÒÇ蜼ͻë•‚b Åo³8ä@"Íi°I JÈ÷Þ{/Àô¶wÝuWòUùÔSOýÛ¯}íkÅνoèá'ÔC ’Ûòsî{‚?ÒXIë¨R8—x´7•Œ«Ýãõ¯Å—õÒ®¥H*i Vþf­1™’0Í8«eÐiu’óqNhiWª› “m­=;šdVc¬2¬”Ƙ°¬“W"Þ;ÿÊ+¯<¥†€ lÕÎΣæË!Ñt;¥Ò~3¸“$¼¸çyä(D¦Q×0É›´sëÇ>ü¥ÍÌñP^ÂãT! nVrúÜÂòƒß“l<ÛêÅÎTJK×™†§úrÓ$<çÛ£é\o+l`mæ)-•—Ú,ÓaQ aqó[&ë›ãõúB–•èóºÊ¶ài¨2ý…¼Ù€é]kqY~©nt)„Öžò_ë‡^{˾¤kÞV¥ú9^?ÊWôõa}IÊ Æ&ûÁóþãω.˃8ù;˜½zÇósQ·÷ÓçŸþß<þøãoÂb9N)’Ä€½P‘9’ìR2Ü¿žÕŠ^¨²Ôx]aá~îÙgŸÀdq:1___W®\Û{˜Y;ê þC\þœîß¿½ƒVN®î¡ÐŒËžÄH|d,¸Æj‡‡ vþ^FÒmÀ…>¾‘ã:\ãŸÅs,Î]¾ïm˜ç¸‰ÓÆO÷©ñr —ìi@#ÓŸÇiÓ$§¡ö˜äx‰Ë›×ü… ¥Ïñ&¬óœ&Ý£®`ešç´)´S¬“ãu 6áu`mãyÛäú-„S}YØÂœéuíÆè¢ÇÚ? ýѧ9_Ïž©ËÂâs’ⱺÏY¿ò~¦öíúœò£´ŒV`ùumã6û›Ú?°vq¬]¨ÿPŽIn‹3£ºsú¼ßY\Þ•!=Ÿ8Ï»1S{ű6ãc¾oß¾4eÀõ‡~8?xðàÆ¹sçº%Ë8ÖÒ³Ǟ˖̜‘ЋdSJqÛD`†PĹ(<ޏ$ï\O¯È(9€Aн¤ƒ@ãCWs‡ògÏžíl!`ri%æ§$t g¶¸ù|ÏÁ‰y Cl$¬ˆåmàÙj¸˜ic>ü÷ ýn#-N襉×i0çûA´KZÎ¥´¢½×TÄëI$,<¥Ëåíò¢ëæØu—&—1PšÜ]Ýsº.?VÖÀÂS¼‘c ævö¼ýˆNΗÚe’ó뵎ã¨зñ¹ù%}:½8¹,Ô?ÞVx>N¶,?õ'Ñ¥rPÛä>o ÔwŒ>åÅûšòëâ°þs)>ê‰0…¼Wi_¨ÉáR\œƒáaé2J騵k×]S±Ðñ˜¶°¸©óñO׬ó(âË4ùoÅEf ‰IÄ)»ËŽdSš¼—"ð²Åö"­ø–­BZè 㜾“S9ïXUF©Â‰8’^qŽšþ#튔õ]Y‡_ó´Ž4‚ÎB|™/â*ù·€sôM¢Åʦ"?(¾DW¤çmR¬‡ü§² /œ+ùñxA«’goPiåâé$ &ËíâXõ¡|Fz4©ù5—”szW£¡Ô[»ÖÚ‰pÖ]Ç—mútD^™Ha spÊù A7Ø£þ!ù™ŒÇ4˜æÀœzWyvÇÿÛ"׃Öf;öŵZLH÷áˆrÇc?ýGF²ŸÿÓëœf?‹Ï¯»°œ¶GW‰»Ÿ•ƒç¹¯T¦ ýtÎh÷êÉè¤üy¾² ¢Îû5:×¢Œ¥´ a¼L4d{ç¬_÷j;ó¼Ùu±ÅsÔ;x\¹¿öÕÊ$ë£ôÇ2uäm„±°÷رc4>0^nLË(·åq4Ë3wžt{nA¡=i B0‰Ä "§KL"»QAªl>nÏÇ4 5LþGcuÌ„5šz-ïqzn«±÷ {âTóÅ?g„ù|ïP¨¼`˜µº•¤SðQµÝ¨½ÅƒY˯«S¥þ{kmªô·Ú.ÏÀ^*“Œ³Ýö* ÕK¶ùÐ3,ûÜm~¤ñÁÆŽYÔ3s q–Æ1²ë¤]Çh`æT¨Tb¹`œIt’gn³ÓàŒƒ¤ œ™Ð¹`0t¤ôüqÒ«4[ÒåðÝ•{ƒa9ýn™w‰nk^-å¢öâí>@³TïݲÍ*å©Ö‹ÊÂóý ¼lª}¥Ýcç»Ý6Ú¼¥½y~òY§4¬ž»sÝC`ÿ$-LÙ‹Ø+Lঈ1±fÂŽ©8fìØnÈ8bÇ@èp[œ“7ÖÂAqåë1&ïk×<ŒÏ–ÉG¦)Å×Â[êÌÛ§¿F?÷Wµ~…¶,ã’õš-Û÷¥òá@½´²µU­ µçDÉ+6zÓzé2I¡jj=*–ٱ/Üëº&iBL9zL#*VÒá&’Ãgn‘Éôâfú ´‰¾Òà2/í¿×YŒN¯Ì<\æÛW:´ôCe¦2 ž–—,‹3«”«wÍé–ú‚ÂYÊ#®g¼lµv ~•áµô¥¶PêR­û2‡l›B~³J›Èðîyæc«¤[L‚½°WRFŒ{õV'Øü§cœó±Â÷æOùœ+9'2žv˜åú h©ƒç)ŽN"ÌN [æð2BÃεvéêM˜VNžŽDÔ2ãjuâb¯sãZ¿Êr)õö­}ÇŸ7Ù²>…¶\hסzÄ‘ý1-µSVøh,±qX^; swã¢S*p‹Œ…O[$'u2Ÿî°Î×ò,S‰® wŠ¢VÄw®Üé¥Ã¹BÛµ¤“å‘íX’ú4:akƒÒRíåúχŒ3i¬ÏýRújËg£±½;šœnipÐ(¦]>ïÂ4&qS0ƒÂ¹×â—ÄYA“èÉʉÁîDÕÆáÚ\_<ô eajyCa.(ÚËWî¥ñpÈx½p§ instagram-feed/admin/builder/assets/img/events.png000064400000003424151435171370016252 0ustar00‰PNG  IHDRшNeþâ¢PLTEïïïñññÿÿÿØÚÝïïïíííãOêêëìììøøøçççåååéééÑÑÑÝÝÝßßßããäÓÓÓÔÔÔâââõ½¤æd+í‘iáááèyGñ§†þôðê õööóóóüéáòÝÔê©ðœwúúúðñòÖÖÖíɸíÈ¸í¾ªì´œó²–éŒcèp;åZäYüýýðçãøÓÃöÈ´ô½¤ç‹aê„VâÙÔe‘œtRNS` T¹> IDATxÚì×koÚ0€áÚœ“dí$"AhÊ!(¬e½¬ûÿm‰9öLÐAýà“Ê/ˆ´.Oí¸áæF}±¢H~Q$¿(’_É/ŠäEò‹"ùE‘ü¢H~Q$¿(’_É/ŠäEò‹"ùEQ¸¶Ë¢ªmÔ…º#Ú–‰«Xª³uE´ 3=ª3uD´=$Í&ª½nˆv¤à:!Z’¶Ú¦Ë" Énê‹ÙÔ·Š~±˜«½G)ÿ9ÊÞ6¢WûVtC¯£à¥HÚÛ\%¢O;Sî-fô1ìÃÖf3‡§¬—(V Þ~´—ÙÏÿ{Ÿ6IÎT^#šj1Í“³mØ"@-§wX=+Ü qEßµœÊ„úÐÔÐ_x"Px§Å4Nl£ÿE,TÝj1½^M¸³NÒ½]ýdŽ‘(Ñðs"e_Hõ±!Zç½^/_ë->uѦ¹öúUyL©æ%i­ƒ‚ÓYwG @¤ò‚hÁ™Iw"Z÷þâäèÁÍËâÝ•À8ް1ërOâ\bìDãU½yš;ÑÇQ}ÅÔ£žW_¨r˜ŠgúáÉÞ¡€µÖdé !ré­¤Ù®ŸuMѽÑk;h €1ë"¦AÇQÕ¾ ô€5Fu§¢©'ú¡Ã´o!p£æØÔP‡j^œzKDâ0Æ1#‘%U =ÓóêOŠPÅ\½³>éÛí}¿ŸNuØÞFfÙ.Fû±Î"Å;SÅzÖ oa â® ]qg2C™xQž"’‡uÎ _Dc¤ØßZxww­SÐ1Êo­ëÆÊ`Vo¥€õ«þRk¹!¥iÉ{°äÃþÿ§ Y_’êç²ì”z`˜ D…äݰô§?úHì¥ïTaý‰n ë>JÔžèZàåÑO0A#Û3d}©DD†{±ÚW†cÛM̨ OdVï‚BÙžè\y•!&h´qÕÏj´myGaîÔß]Jžϯæñrªi:ÕÐïsXý5’借uên$þí&>Z—}$Ó{ø¢Ò(¢W²±ÎDäÆ$€F"<¢ ­£=Ê ûÍI¢åϽƒDÒ/Qšýíóèlœ:Ñ_#÷Ôe|ݱHJŒÔ~’šžáΣ»‰ëaw³v|†FSv—å½ïÑÿÔù¾®‚G{öœ*ô×èT¦ëTƒy$rï¥Ó75g³Û6 a´1AZfkK9èÔKàsßÿñ:;øH–7ŠdDíÏìrÅ í8‰#ÿþþ©ññðƒî…Gݶ]?/>®×Û#->ê.´ToÏcÿ±ë4dJÄ’6ác×!/&„OCƾ37ŠìHÐr¬"ä"{_@L÷¥ŸÇóí¬iõVà'»÷ó¼ßjÒV&$ ÇZÆyÇ„ 8#4†,EIÑ—{—˜Ç¬óô{ÿiõ?Ú.Õ-oÂíæ²8d˜u t·±"T…lF Þ*,!çÂÓhé·rïTÊ)Wc«5×mÓ®¶C ØÙ ÆÀAçHȶE”†®6”m%Cƒ<·ã£åïujœ7c‹NC%ªdŃ ÔªPIΘÎC‘\à+sEÈÅ GA—nÓT¸7sñõˆ?QJì³uTÔà‘ §FÆþJ†íŒ¯<KœT“ÁDWTXqÊfÁQmO îà\»ÿx*Eèon›,«Ëß´—Žc k5xœ®ßíÑLê7Ì.vM¾è a§Y5h`§84p/&†µb©->Ý3¼Ø‘ÓË®ÎB X!.`X&ÞX9q[6Hƈ &²7´Ø §—ñmýwøëþZGcIÿkä†íõŽèinJ.ÊoÚMø=µMÅÇÚæ\œÁa‘>÷³Þ c*Fɱ‰x`šA ¼`ƒ2˜J’ÂäNþ"y~þ¼ØÑÜ×4¬ ‚vïaàpOS% v„ˆ\ëhÔìެ؋eƦÌÁËÌ-áK|†ÆŸö瘂×]*âò<£F}F}F}F}F}F}F}Ú4 ÚoIEND®B`‚instagram-feed/admin/builder/assets/img/allinoneseo.png000064400000002024151435171370017251 0ustar00‰PNG  IHDRr ß” pHYs  šœsRGB®ÎégAMA± üa©IDATxåV[l aþþÙÙµ©ÒKZ—mØ- uxn/¥$BÜÚº$âÑŠ„[ â·ª¢n•à… %ÁCƒD#hw·„RVeGٵߙYÛÎ4múÆIvçŸóŸs¾óÿçûÏ?À¿.¬WV¥¡\B8ŸðJcòeíôk&Ý-Èü,.†û¸úU!dï ȘG–½HŽ…,ïì Ø9HY¤‚f÷Rö™è“°(ùq!Pk7+Øú”†‚`¼¦ï`Šð\ú;®Æè`yxVeUo™7­G 0¡À­éІ‹xsȇê%Y6‘)FYK…UmÞR…k¤QŽÕ0|¤þ!"^´&pîÁU·±xy"ž‡˜²ãc:(¸DõŸd¬©hšw ÕľO„¾$UÀÉ#=8Pî1‡udˤœ Á‚n¾¥¥¶ÚÎ-¸8 ³Ç{¢bŠßƒí ³ì'9/Qw. ýZc´[;3ò9?^ð¡ji¶¦oëèÒÆŸ ã=+²ÑtÐ~Þu³ê”ãäB™ +6Oö’ o ‰"ÓƒmÚxym;ÂíIí}œ/e;g‚u7„’t@`”ѤâtWžþ€U¸õÝ¢8s_R}ÍFrÀçm¾H2ŽÞŒiïß;eŒ¬|‘Gy*¿g‘fínCc(®Ù¼#á[§5-j…Eg)cÜš>c:ý’]ᆭjÖýL%Ò…€h×J8ÒWÈù'£ŸÎ×þ:Y¼nç.èvés‡Wæ /Z3ÿœ6Úì#°échヲ6Ÿ?E”à3Št»©£`ïrëa-逌Ý0šœ(!“ñèµ^Ÿº y¦ì³2Ô­ÏSÇ yž¼£ùS—wšñdÞ ÁhÊò~ðDÈ;ÇÖäªãÄoŽE‡Û!Åe\Ý:Ù©œ7×EQs+[‘yaw{ÓWxÁ¡<ììkbxú6µRÕ2;ƒaD®¨Ýmúå ጱ—š9•Œo¤EKvnJ Q¶î=±ô]Tgê˜a"$ ¹ËtM¹LÓMµ˜X)Q=K¬ž¿“9´¢—;píÙO´~M¢±%ŽüÁ"NÝ“ð¤9‘Çäm¨uÛ¤‚”7SV®*ôG8 ¢Þ_mU;.å"æØE¹è‹0ÄÈo»Ó'FÏFê…Lw$ì¯-“¨}ŠH§ðàRQŽùôF–Ñ×›Û³Š86j“Wû.0åêˆPͯƒ»ëSLÿßåw¹?Z&0ˆIEND®B`‚instagram-feed/admin/builder/assets/img/welcome-2.png000064400000003601151435171370016535 0ustar00‰PNG  IHDRy†ÎàÕ·ÛPLTEÓÓÙÐÐ×ÐÑ×ÑÑ×ÑÑÖÏÏ×ÑÑØÑÑ×ÒÒÖÐÐ×ÐÒ×ÏÏÔÑÑ×ÐÑ×ÏÏ×ÏÏÏÐÑÖÐÒØÐÑÖÐÑÖÐÑØÏÏßÐÐØÐÑ×ÿÿÿÏÐÖÎÏÕËÌÒÍÎÔÉÊÐÂÃÈáãæÆÇÍÅÆÌðñò17Q8ÈÉÏÄÅÊÓÔÙlq‚‰›NSi{÷÷øµ¸Àùúúççêàà䘛¨#)EÜÝáØÙݦ©´^bv]bv¨ª´@F]óóõêêìÔÕÚííïìíïãä硤¯¹»Ã¯±º‰Œ›ei|X]q¤§²?D\è»tRNSŸß_`oO?¿¿0ï@ϯ¯ïÏÏÈÿ³°=IDAThÞíš _Ú0ÆœîÐÝGÒ‹´M±•CqxîúþŸhO@›B W2¦þé¯Ìí7þ¼oJº£”ÊŽ:*•7{{»»ÕêËwµ×„ÔžïlŒ·•á:¬~xY«‘/K.ëùÞ¾t-¥V†+máZ”ØÂ²ÍpeZX"•µ[X¾ùí¾t©àEj®µÈt¨åYjþDÔ²Ÿšßµìþ³q®ny—¨EFÆ>Q˻ԼGÔ"Ãê9QËÇÔü†(FQLåß›wˆbdX­œOaUBX½"+ñÂêð†Õ‡GVÊÍ1¬Þ>°:Ø‚˜TV[`VVk®éVXµ|Ø‚5Ý +M@rl"¬„Fá]ÓuhÅ~ògý©ù $âAP¥®ƒŒý^»Ýj]\œ5›$£¾gXixééê&Ó4qÒt•õNàúzîžÓYNðÏ)2¬>¯R˜&œB(Œ¨O<áb—ÂÕ„kmCšÿ“º@›(MÔ†ÊtœÆcÔuÙº8?®Õa¦&Õ‹Â .aεðž\†)‡º(¬0pãž(KºJá«%Å…a…î^Ð ³¬¹0¬|ÝD™Àµp¡˜«i¯ c3æ3KŠ‹ÂJ‡Ù¥› ‰n˜eXi¦u^‚§Ó9ކ)§ð‚ HÓ°¾®íI:G0¢óØr*)XÓaÎ0­UdŒfàáìÅ䳘Óy 9ÐE¨Ù`yO?;öþˆw=fn_”í £À¥Œ{Ý(oÖ i.؀ĵmÐyü.Íàxaâ3ê&,ŒY‡GŒFÞKH™;|@Ž¿ñò/bÈa.ZÓiEæÎ€žfí%Ó70 ºÝ¸Óià1{nÈ™ƒ§h€&y¹OÈØÒõ|dÀ,z<3žÜ§4:uùÀ•æAx:¥”6UNÞOࢠp‡¥‰—³t[[V:®mŸJ\âä¡·ÃQúZÞ(ˆÃ‰¹sѰ‹fzI§‹A—°Èósæ™é3¿ ³I%Q€S2•vÓ†wC*€Y”s”2tÜå<æÞ¤×íðœù2[s~RCÑF¦ä!g¨*†8óÉáh5c´Û¡Ì!Gé!d”²NŒ3þ›Kó´ ³0&?Év7h†jî ø8ó!ò@H£>ucFý„ºlµ°’5l@¢d»9£îø|næpŸ­?¹ŸÅ1Y•5ÃÅáäˆ":Ôq0¸iX&Ï¥++mùK\­‰K3lûN…:˜>ÛÆ  ûG2êðÔqagÄE¨YÏ·pL¬FjÁƒ“pMT¶m5&YçßëßOiLÙ@|ª‡§bâıdM‡E._ÇpIGuÇ©ÛG¶ƒÇ”© –1ÁÉÈ ~ÜÆª“ÐàJ“ÞüšNþ&fÛGÓºDT@t§Â K¨nuº!ñh¨9Ý7àÔ‰ä ‡Ò»pM§ixI ̓M˜dU8î\: B±Ú*üa²¢¿]ÛCósH}G^(•‹Â @ Ç­/.¡Áˆ'¡$°B3QÎÁi†~3æÍ^@p *Ô$º ƒ¯ Ž¥85‹¯È, 7 …MX§ƒ&NSÎ+ÃYjö#’cÑ$ªšžîÏ·PÖÌIŽ n@^}K¯°è†äØääuœÐ)ù’7ümÙ·a'ŒƒaĽk’#»Y:W߃0¼º¹vHž­ø¶ì3QÊÓ·e*yœß–mÃj¿-ÛŽ; à·e…lÇD)[q¤â°zºR%Ow@ªäév}•lÇO·ëoœÇy»þÁúaõ߯é¤YmXÕUªÂªV{õ¾z¸ûìÙ‹ƒÊ[!Ü\d¼®}yU­î W®ÅTKsí?{×ÎÊì–ÙBP¶ù5\(KºJ`oÅ–Ïç×s-„ë.Td •ð2†e¾õ9ž_IEND®B`‚instagram-feed/admin/builder/assets/img/timeline.png000064400000003361151435171370016554 0ustar00‰PNG  IHDRшNeþâZPLTEòòòñññÿÿÿù» ïïïØÚÝö–kíííêêêæææèèèìììÒÒÒÞÞßòòòøùùàààâäåÔÔÔöö÷ö™oâââûûûø¶™÷§„÷ yù¹œ÷«ŠÖÖÖø±’êÂÁ(tRNS_»2”EIDATxÚìK €0CÈzî\©‰¶îD7Aò*N›é‡·ÕÏØbdOŒü‰‘?1ò'FþÄÈŸù#bäOŒü‰‘?1ò'FþÄÈŸù#ž¡püXÇǪF½zD…¸ŸV6XÖë´uµniö¿a ~z`4Œº@º´´(’ðyª”ö‹–<…öÒþ•€;ÐMœc?\…ˆ!*ËÞÿ5çõ ó0˸ý&P%¢_®-¾‡X÷ˆ/m1ô14¬‘éq’­îbC7º8nô•ÇÓ¥vúª_ÐOÆóÔÛE@›yÎE`ß ,#`‹ÞEØ"€pÊ|'0³¨—"úx/Q„-"Ü‹@F€ÿP#³H/xÁ½¨ ˆy-ÒËâs¯;…cž7äHtj0ˆ¨ù“ˆs͵u$ÈZ#€«™¨’܈Js"œÃTÔæT^D!€Mã*ÂT„‰èèGd¬Q˜Y¯kòIZ'¢20›Dz×Â뢓`I84“~pU£¡»DQeÀóUŽÆÑÝSQT2°‰„´6×Ñž"õ$QÅzwÿJ"¥`R¢=EŸÑ3Ö’ÚX£•5CÓî(úê‹”m« HE“´åÞ뺡Ë¢Fdž¼ÝÝúb!2¯„œ‰dÍEóõˆ°7QWÌ2®ÈÔë &W¢¡O’e¯³ˆjw¢4„–¢ ½ìèÉÉíR¬‹Ì½ÎÑ\7‚–ã û*¨º:%ÐRì3Ãr®kò_Èù-Ñ  õÁ ¶œˆz%¬Ï d~râCÔ?ˆÀ ó“'½î›z+ÚQ‚ñR Ý©=õÀÿÿÍ“:¦Äëx¹dËh n3YºÝÙÖÙÚ_}TG T #D…×ãˆËë*zê@èE¬cç£Á :ƒ>£‹}Ô\¬{ mBá©cTy-‘a*0òohØ*ôÑl9íFÞ§"#OÕT±—Ä·ÚyÝÅ–}ÔÀCÅqTƒ†=Û"#!Ÿ:ÈrÒetµŒlî}P×GpQ9Öñ‘¡•Môæc4"Ðj‚ÌTUM$#^ñ)3ºÙ2#Ggªxê¢&£+ÁHÄr>Ò÷Ñ·eµžŽÞêŒfŠ‘/W ¨ EFW†_%ÆþTMM £–ÞØ½ì}t³#¬¶ì¡’?[ÒGT-›Ñô2U £Ḭ́Æ:ÅLuâ‰§×ø|DÎFÛZÐ@ï Rd„ÀÀ)>>÷nôÍ$#ï›’£Zg€gõQuë°¿ú¤,hŒÞÙsb¼ûü¨Nü{úH\Õùj#fXCú¨‘ØDZ[ºnì€ûÇŒ1ÙÇg#L¸8·\òì\î¯ÜlÀ´ ýø™å]Ã+¾$'|{Š!Ä>„Ð÷}Ho4ÒkEj¯–d@_©#!¦& øV:  È·ÏÄ|S˜×{ビÖy]–±^ĉÛB²ý‚Óö’lß@òñ§³[‰†0B¡¡…¾ÿãžÎä“\‘âU•N·Éä¯uPwUÔ¨\ùï0òÅèãô™Á¶÷ˆ1 ›Æ™ÜÉB\.wæ)¹s§DBÌ¡©¡Ò(¨,…âQ·1»¡æ½û=tú5ƒÑçŒÂ¡eÛǘꚛNÕŸ´âsLÎb’%&23®¦¯*ü.:ÿû£Õ¿68÷cz>&H¡ÎnÀ¢÷è±»¢+¯1åû.k+Ði;‘)uuG¦>!òÑ€lÕËÒbZ°BȪӋU# R¡’•.ª-;ÒÕŠ%ÏÇÛ©"°8Qã\J CÍí¸«ªr‹~ ÌÚ _YG渌ð¤›8›íì¹¢ÿÑ@/b³åÇǧÄÛäJMðö®O^Ð)¥u}~ª¨ÐVy®ZAMêªÌc#­e«§8ùåE-= -ù÷_A~?ž¢ûñݧè~5 ´îK¯x’È¥¶ÜìEU·psŸJ…· Å›ó®£ÃŒ=æÛ/—ó\F¥¶ƒÔt"¤ºŒy…Î'#5™Í‚ŸYwy@i‘ééJÆÊ64 ¼H‘HóºàóÆ8⺫4š{t‘œ¤eÉÇ9Ípö±n¹Ã£2“:éPÜZ«¯žPºñ´ò9ãŒû–ŽzêÍYšëˆ ]ˆÇçà©ã¾ù5ªmm¥œ¬aÔJöç4[µËùvòK¾YpN ã=ŽzUK…c §ÌfÖPzçŽ}½ýë)4pñIXë|áæÖî¾Ëswskr‘´‡ êÜ£®GÈÈÏ9•隇Ã;xm¼Ïí›Òyø(€ãƒî0Üúšóïƒ%®µÛ‹†9†5Çï ŽqÔƒƒÏãÛtñÌž–&Š9dt BÄ‘}ïŽ=3ÜVqŠ’»=¾T´Hòi’Ë@Ô5êÚ|W×?f9‰7<½öÃ'û½«?ÀƒÇ^ñ”¶ϪøvõH¢¸˜#[ '*7°ä uê:t8ÁÕ|St¦k9®VO&Hí$ ™!!•ŒIÏ3´çŽA¬ï xºmkÄV:”—7 «Z‚Â%*±ÎÁJ€Ùí‚Aqß  FÎè:XúžïX„‹Wó!ŠGc2òœgyéØ×ŽüTÔ?á%e´†Sö;iwŽ@x?¯ë^oq¬êZôµÕª­£ïƒíŒ˜'aÀÉÆQêkOÆ2ÍcgZ" ‘A2É{Ô†éÓ¶ë\YŒ¦â”%mLª»Gr-Me±Ó–×OUŒÇ•rÀÃv úÿJ¾Ú¥¾•£ ¹¸ƒ•?.KõÇpO²ìoíÐŽ)ÙçU%ÕÏÜÆ{’j–©zš¿"]n‘&LïX£g–ã‘ÇÒ¼Og)û­k¿©åËž/Ý,ßêçYx-#¿(‰`1ŒóëøûÒèpÿg<ˆÖžT¢, ÉÛvy^ÇËëšÐðæ—loa¾µ/póE„3GSŽ9ZÚõŒR°Ý\&R>L}ñÀÏaS)Æ/ÙÇbµ’¹Ÿ¾ $ó.Ê$§¯N~´RÆá@Û.é.ß2‘éøEg§R.xšJÃ8ëŒPrOSž”æN€À\dÏ4ëU‰®™ŠÆz°"¾è¶ÒWdÎèÕ·|£#ùV¶ŸA&Iv)u,WyéþE4[}žžÖo2%l’Fç?žÊs%ÊÇ>åˆ þ~´4rN«’¼IÔ˜`HcT“k|¬?¥oÙ(ز^G¨8xÀÿ>õ…3'Ú 8óîjè-´+å†ÚI•’;–ÚŠdOCŽN ätÉö¬§%S£R½¹v!ž Ìö»ÇÍ“#|Äãëõ55ù»Xd·“÷°€ìQ”‘“™p2Àé×=«=$’K¨•B´,~EC’ÏéW5&œÁöi‚´¾PF[éŸNzV5Îì5éNÝŽËà°ˆÜÝGg(·Ô1òÃ>|›Ï=úò=yÍzW$’ÒÕf‘ZXâ c…Ô4‘? ‘žYpzxïÒ¸¯‚úå¤M¤k¬¡ÎÖ„HUAR:ƒ‘Èî:àæ½3Ä0XëzsZ ‹;«m¤‡™ÁÛŽÙ‚;0çÞ¦6¶ç®õ>^ñHU2ê:5ÒÉ)Ý Ì|©bLä1\R Àà*=3PšÏ_´–K+i㈆e†%Q('Ø<†?­z¥ÿÂÕšE–}F;‹…%Ò7*¤Žß¼>08õüë†ñ'‡SÃóÅqi ÂÇ Ç“yÁ{`Ì ¸à®2\|ÄL/êZúÚÞY„µ0Ai;—nWr # P7G~®Â[ÛƒlqCmÌ£Ÿ˜OQ“ôâ¼îþ×QÖ V·yVÖrž™ÁÈÎ9ÆÃŒüëoû.]*8­$–Ye@ ~›GeïÏNµóù“”šGo#еIÞÏb•üZv‰¬I¨ÝÂ6Ë»;f-ž §ñ\ôÒ6¯«\ÞØÀòYĹ¢\žyOùõ®›R‘Ô‚`3MÜzv-Óß™áÝæþòkÝÿñ(•]LfR®ø8RqÓ'>Þõ•)¨ÅÎo[[úó9ÜyË~Ôb}4¦Syš$Vã Í‘Èä._b+nÏGÕ4é'mkS{™gbߺdôêzc·¼ óŠã©%)4{8x¨SLw†®­fNº[eŠá¥•cRAŒó’? Vž³gÌÓÂ@Ôç •ùk7IX4Yt»¸n&KæˆÊÑ*yBÆàGr>¶ Ã3$?¼¹ …L.J©ÀúT½ *Fóº[œÿˆmÈE‰‡Ùʨ“Í‰ó‚˜ ôãÐk6?ë–wýŸR‰?2̱°ÚõÎzÆŸ©Ý²Ko¨Ãwj£,PFp=Ku ç×פÞ|6´ñ.¥h<>£M³µ·yT$ŒÁJdœdä>úâ°K]R:GQ¿ u«¿A$½·ûY¸Ž[’Ò˜ÖîߦЫ’0BÏ9Ëø…{l­wec©ÛCcó‰-†ä’IKî9rBœ~à`O½#ÞСÐuKÕ·‚ËS·Ib{ˆ¿vÑ:ddààòç5à~0¸Þmb{gžßÎ.¢¤ŽÃÎsÎìñŒçŠéб›fÆ…¨AtÚ%’3AýŸÌ<¢þtŒ1·§Ê¸·{þ5¥­@÷˜&–S1pêêÛJ¶=?:å|zÝý¹o,áIU¡šÚ^ZL’xÎ “ÎGÓ ºš[½jÊúâyšÊ9QmÑJä•8†z b¼|Â=U$ídqÖJL¿©i¾T>b!¸•”ƒæHO—Œ1ÐuÍtžÒ—¢!½¹s) …„ì{Aç–9¬]E徘ýŸhP¤à¶ÏÇnM]ð‡ˆ./‘´û¨ ½›Ï´ä&2œž8¯2jr§§MÎxX­«éÏ£Ï%¶g+Û]DP>IÊçß/Oñ®CKÔîf™íaI-WsEæ?Ë· ú…èsý=}Bò biÊJÍ0£½ÇU ÎHëÇsÍäÝÚÉq æ†$!É Ÿ½‚8cùö®š|­I_Ì$“4Qíg‚8nÄH±ŽC¸1äw=x¢±nü=ÜQ‚’"ýü[Ì@ä<}= J4ÿ™¡rÅîqÚ«Æ¥\àï Õˆ†ÖòÑ6ÿµš`S6õ>\d|«»4ep¡ƒ:Ž sø×Ö3Ïø·cî“iÂø ÍÅR…ü·ÞT1¦qÍZÔ!aÃe˜ýáTYH@ÏsAµ;r‡†µX4›k£q?ž›Ôƒ{ò:TŸÚ7 +^û4iƒ ß(;q¸úž¼ŸZËÑÓu˜; ,gŸRx©£º¶cçV2¦“æKP†"¥OÜÞÉgŸþ'[ä,ñ­¹a“Çú±Î~§5Øø+WþνáIJE Ç Îæ$õ ‘þq\MÅì×il’¢•ŒB²‚C”¡çŽ3èÖµ¾Å4ÐCqÔetC)>^w‚8aÇëíX8ò'w©êF~ÖqqZ#¨ñ/‹ôíCQ¸³žÖÞ¶ùaî~TYmÀ¸÷ÇNx SÆN 7Lö4X-mQbÆr²yHÄDÍ’[€qíšôo\ÄÚm¼³¶{|É¡ ÙÁË)8=00LWžÛâ„(ÇÌåMu{3.ÖfBv…?^¿ZΪ‹^ðR«(Ô÷:ÜÁæ£iñì¶’@aÜ6·§8éÍv~,Ñ[Ãéj×70]Ýlj-‘¬‡jãÏ#qQß©®2ÂeGiYÈG!IÇåýk¥ñ†½º¦™so;ÞyP ’W˜Ï9Ž8ôäW5K¶’ØôðÍkw©&«ñ èhkgö)âÔ¶Ü?ʱŒûãšë>ªiˆ‹cosq4›ú¢ª€¸làl8cØëŸc^ç¨Z[xsC†ám¼ªÊ£¹ûÇýÝÍÏ¡5-ug£+tO̤£ðFâûP)5®Ÿ³á£…ë“OÍ€ØÉâ3¼“±[³¦¢ºŽêš8r¾nB à;doB= ajéÃlq£\ì;“ŽyÁ žÿ­o ^Éu¢CgÄœýâ¶äÇÞß—­p~ –ú?¥vûLd! cÌbÈ÷ã§J¨R» ‘ÒèzøfÖSö‹Æo>oÞH±à($œŒÀ3V4{HlDËmj³Çƒ7;$Î;ã>œŸÊ¥ÔÍÍ£¦•ÛyÁÃgÓ?Ïÿ­W º0XžYaˆÊÑð2xÎyœç;kÔÇ™½ÈØ]5Ä’Ù˜ÞPJ>õ9Ç©=;~TT¢1"|æ23•0¦6ðN´Tª©-Ec„ò–5Lá¸ïÞ¬[$Ž»mNãÓžÕV(LÒ+ddœÕËk†´'Ë!Áär+éÑÉRö²Õ‹=”Ò¿–VêÃúÔÔ¬…wª‘ÁÝVç½yÑc]ʼn9Éã•UFü9##¼»¸Ö.%yüÇ•C°€¶NiF—,Sæg£éýµr’a*v0ÊðIê:zŒw­+]2ö(å3;!Ú@leIëÈÎG?ã^[á‹»½.êI|û«k€IåOb;þ&»m3Åúú7xwŸ-„²ÎAÆ1ëßô®jôZ½µG<£Êô:K4 ‘.&‘ÕÊ€ýáŸ\ô¢˜Æ©?qÛqAhÎÞâÄÝ-ÅÌbfR„ÉÇ”FrFOaŒg'¥Tð·‡ÄؾÙïÓ+1Ú¼w ‚xü¸®ªù´¨­ÅãÈ—/4i,i ¯+§‚7v8 ×?áÍe¥ÖeKô’ÒhŠ¿”ñ˜‘£휎ÞþõÆäÜ) ;XƒW±€³˜ãj©$ýÆ9ÀÏAÏæ}Y±°ûð$tǧSù×àômÜú,Ó×–×w£µ²êðéF ´ëÛ†TÈÂ[s·zozíþx~þiäÔµXÑm’)>Êì~îóýÑ‚~¹Íy¶“®‹-^öYf’Õšá®#†ä•óq‚$ÏÒ»›ˆ:®Ÿˆ"ŠÊX‚avä2äž Î?ñÓÓ¾k ¤Ô¤z×ÝF'Åøtý.KÀ¯½Ù‹í1»pÊNUp~öK>ž‚¸ 4ohº…ì ]Øö…åLŠr7àr:ã×°Ù&‰¨x†]gÄ5Ω¨‘b\}«!wœª¡Ocn¹5Ákú}ƪkwš–,vVX>ÊÊ¿».p€¡ òŒô8ÅgˆKÙó£ ñN/˜ætíÃt-%‘Jþåe$P~ñS‘ÏëÓ5¶,ôé­­eÓìÑçŽ%üÔâ#ÓŒžOáŠ]áì„P]+Ú‰ŸÌÌŽ]ÝC?øŽ}8­û˨­` ¨•¤Œ¥Ë³'F{Úó'96?ÌÅðŸƒÔCz±˜$Î dJ ô ô·Lv5—xÚž“w%ÅçmgFŒ,ÇtÓ|½ ‘”ã :÷¦^k¾­=ã[Ä‘[qZÝ.8ã©' } RÓ­t¸¯ÚãZyàRøYw}Ç!‰,œ‚F=yüF±‹R“›½ú¥©×[ÛIu¦Gw£É7â òÚÆ~ir ä}»vëNÓu?ÆË+ÀH/îd|«zc±üxô¬¿ív;v²ŠKXbȶ ·.ŠF÷'ÇWLÚî¡ö ¦`×w &#xŠFŠ@î>fê3Ï®x¬çM¥¥Ø±w«Irs=©ŽíåoÜ¤à€¿\ý¾´U;ÝJÚÚÝnRÚÚy\…ewu= Ïc sŠ(ŒµD;žY2ªvd`“V b7Ù‡n9¨íãRÊüƒ¦iè;To|÷9¾°ó¤õÙ»q-ëŽ1Hd]ØL³vÉÏz±äÆ9“iÏÊsjq‰2ã=y¢Æ|Ë©tÚ½³Æ²8béÏâ¢x|†ÜX°>ÜÑ<²4a¥Ã¸ÀÎyãµXÑdF¿ç‡è =3ßÞ¥»+“sË}÷ঋg¯xµ Xmá7 á]”´ƒ×®O®+é¹bDˆ€@8cóV“áëöËVÐÞap¥%ûLב¬o‘ó@„í<ŽXœg5ï¶þ"‚öÒ)¢«®X§Ò¹9ÓgÒáéòBÝO9ø—áKdºÉ 0grõ\>µâzU³^˜ÄŒ’[†‰ŒK‚áN2}þ˜'5î|Uo¥i—S^õ”ˆ!ᛟҼ3Dзû>¹2K9¶“ ŽNN;gó?C©­é–,’ß°û ƒæ?Ê¡Ÿp+‘ØõãßëVïíZ胤æ㌱·‘Éç>ã׃žœ±£Ü\$ËwOsæmçi?–94Fp”¯rVög¥éºf©éÍoÄÌ þìCó*¯ñ(]Þÿþ¼Õ fÏNÓ%·‚H®L>gÉ‚¬û»ÈðŽœg×Þ¸ ÓX²ˆ]Àn_“¹ä`„tÏzÜ]]® dKV7WÜAaž~_˧•KæÔ]ÑnÛ:Æž±È Õõœa¾à¸`N;õ>âŠÈ›B¿Õ£ˆÇ!e â_•=TÓš*H%¬õ&ÈåÐÈ^H8$Ô±DB ÇŠ(¯±G—&?+lysNˆä?ß'QC#tXܧrÉžUP.µTp:ñQH”®uÔ/m"sÁ£0…³´wÏþªîü/â¹Úòhn•ZÌ8Âæ WD®Ùëá*IJ1¾‡)ñ*á­î‘&÷PbÊßà )ó=ηZú7Âö‘ZhV¦1'#“‘š(¬©k©ë¯Çsð&5>dèªÄPàÃ=Áóþ‰£M-¢_¥ÙTi ªIÜ=yõÇ=:(¯+2œ£'nlj¿-Þ$."½&VU'€8îO9$æ°¼7¯Ü脪3MnGú·>¤~]h¢ž*xt¥­ÿÌI$RðΣý¾g„Â-¥Vc˜œí ÎGs†é²Ü¾©]”–YmÔ*²¹;Ž=xtÁ¢Šógª8ô1–Šæ}ÿŠàx¥û“É¿W¯OZ«£ë& L–Q:à‰J¶yç8¢Šè(舻oS:óÇú„r¶³´€r2äŽÙ'QEv,%|(ÕŸÿÙinstagram-feed/admin/builder/assets/img/welcome-1.png000064400000003524151435171370016540 0ustar00‰PNG  IHDR~x¤¶§±PLTEÐÑ×ÑÑ×ÐÑ×ÓÓÙÐÐ×ÐÐ×ÏÏ×ÒÒÖÐÑ×ÑÑØÑÑ×ÏÏÔÏÏÏÐÑ×ÑÑÖÐÐÖÐÒØÏÏßÐÑÖÑÑØÐÑ×ÿÿÿCI`ÎÏÕËÌÒÉÊÐÅÆÌÇÈÎÜÝáÂÃÉóôõrvˆ¡¤¯øøùèéëäåèüüüëëîÙÚ߸»ÃÀÁÆfk~àáåõõöŠŽœÓÔÙ•™¥××Üññóïï𭯹OTj~‚’¬¯¹~‚‘Z`tZ_s•˜¥GBS¯tRNS¿ßŸ_@?ÏoO0ﯯï®~\ª=IDAThÞí[‰v¢@ŒFÝh®½š@‚€"ñ>rîÿØö ãŒ6ÊáDòv·–} y/TÑ=ÝÕäâ“ Qƒ»ËZ­y_ï´¾|¹i\œuØÇe»öµY¯·®Ï!¦I艚†¦q«Ÿ¾ æ©Ñ8;=sjžÚp*è¢)§KÐ š§£bà yêð<©b td× p¹¥¿ é¿@¨m鯡HúT€¯ŠãT€fµôubxg¥ÿ ¥^¸V ¯\)†Wn*uhTK_­áÁ?mxíÏâ·^rã/4¼Ÿ‘ßæ0¼ápÁ€úqIïþÄuÃ0èg1C5DÎßuW1Æ4Ðß ï™ÀÐ,Cç# !}>  nû÷ì,ÈIï3ý~‹ô!^Ú÷8ý¤ý ÇaÌ\â¥áWŒ§÷ùaú¥É˜F¿¥ôˆžD68)Y!½vÃc–ÏýO’oßG½Þtî½D°¡O¢ïH½5ÀK¯=ß}{g2"ˆ¾É€jx”Þ@x‚ÊÛP¹€yóésoô–ЭâwO ðˆß‚~m„ƒÁ×lxÈgv*è#\†˜ôWLºÈ¹À°Dóíì9¥_ˆž GJ[Y†*xï×í· ýzÚë½½mèƒhíÍñ|ä©7 f&;ÁqÚéôæP!qƒC w¡Çoið#cg¦þ¢ÃcÌìç1»øñWw)TH°œ†WÞo}˜©§Tã”á™aŽ›_Á0íÇ“ì˜áÝ¢_å a|̉—aßYð‹•4<‡{ ¸éô}²4#ütG•ÒOŒ½NCÙ„yªƒ±‚~ËRü;®÷²ãùþ†…b&+¸£ÊLsßðÕkyûáqõcïœ#“(±Äf½ð[ix®‡.ÛS<ÿy0î>BÙ¨7Ò 0´ÄbŸð¨áqHÏçí?,yÝ©#ÙˆŸE/¶Š%˜òî‰á};@÷“Wq]Yɠ狺‹äü#\ò½7õÜMhRè[Åý6I_+u×ߤ^Ždˆmz61ƒ…Á/´£ÊÃÉ+©Ë0/êîU‰Ü_¢îºH_ÐðÌX:@âñ®’t7/êNªu!¼%ÓHÊÝßh0¼ÖÝÄ á¶÷a wŸý3—ßú¼îH¸åBug1VÐðÀ øí=žDÝMw×È2.{VlG5á ÂVç‚íT‹mp„qݱ"†Ç²üVÖxϽ'Ywý”•×Î6¼ÙjåúÇWÞ˜ø Ô]Ãc]Û~x||ìZl¶;ý@Š!uwÔó‡äîÉŽjjô­.*àxH€jlLãb8F1«‰ï/`’tüÑëüˆ Ywmx”ß²ºv©%JêÎÞZ`vâwËax”žÃÚÁV þC!0Léø#n¼Òþݘ¾è#Dùñ¿„%Á5€C;¾![Rw…wT°}˜üRºÖ)tGœ<Jݱ¼;ªT°TàMA˜Ýñ˜¾ü#ÄXð ì‰Az—vüµºCµì©áÝA!°$(À;9Ö1Øß²ã¿Óøï>©;g$ÂM©;ú³4¿ #AëùóÈ#“f&ö; O0i_HíGb!º¤ît>BÄ „þA·Ám·mÝÑà·5Ð3^wG!ëNû#DÞ`)H2üîèŽjyúþ€òQ¿cìˆá•§·`6ǦŸÔÙQ-KßµeXqÓT¸„žømé¶cóùÃ ULúÉ=ÙQÍ :ÅÃÇ#ªxxèZi*ÆbÌÕýÊÎÆô¬í„2P…m+*ÎHÝQÃ+O/”€G ~ð”‡Õ=Jåù9v¦ <6±e4ô¿3Ã$T8‰|Ø]2êÃ;YÔ°¯"fÏ0<} H>;y„¨ Œ¹ ûG¾²Ãˆ Â~žwT‘5á&ô•¿²Sñ;3÷Ÿå•&T€Î?ýŽêÕÿwTÿ¿£ZÍÒ»hÕÚåœhx·««ëV½ÞüVkì‚l_d£q#ÄhMí¢(šVGSž¾¦§yjÅ‹¦Tžš¥H³ó”SL]'9CóTž^Gž:;yºl\T„[ž'ù—p×_Éõ^®IEND®B`‚instagram-feed/admin/builder/assets/img/dummy-lightbox.jpeg000064400000605773151435171370020077 0ustar00ÿØÿàJFIFÿÛC    "##! %*5-%'2( .?/279<<<$-BFA:F5;<9ÿÛC  9& &99999999999999999999999999999999999999999999999999ÿÂp8"ÿÄÿÄÿÚ —B /éšß;Ivê,êæ7a)–]}WWåh:Mì¬ôìÉžGžÔ:aJ„f×9ÛÀZ˜R%Ñ.ŪˆUˆá¤©~56ÅçôÖ)ºè9º³ZÍ K™dú×›KU6~‰d,šƒÐFKÌu+w'“ÍŒ"Ó‘ÙÝ.óNrõ\ŠÊ+yúM†„F¶p[kÉÓôƒ‘"Oð8vúQ:󾡆`2½d‰]Y†eÎ}Úý”aʧ3MùV(´(â£Pêñ½ž{þŸBüìļѵ[du8ü~?pd› 96öD¢¶µ5›Å±éEP‰0ñ4’3'ð¬ÓÊ|ÇO#@Ðk;ÆÆH³§’yÓhæaÔ‹ Ðd/´9u(z±gÓüªõØÔ§RÄè„„gŽ*MÅ”ˆQ¶®†Óoìê Îx‰Jžt8lsPZ1ˆÖ¤<ætòcV_£FCŸ¦ 6Üõ$ʳåÝH5RS*9I&I` …üyæ2Ô›&‘Í ÌW™Ð¥…BÞ<ÍÞ/¾}äÖéù¦d ŒñVYZ¤Šüë+5ù>¥’Ñ£ôÒR|ûàžªëVΈ’¯KŒÉJ ÊH+²ˆÅ»ÅÕ[ Vš4¤èI+Šú}¥ò–^¿ÞO¹âz9SžÓõú$Q•Zâ:žRüݹ'’|ÊÇ^¦ô3hrÍe¦P—£9^ˆy\é€ Ê´ç±ðz•´Rã`2î¸ÈѬ^4Šæòï’4Ë)Äé/SFÚ¶×ú vb„׉·‘z]J2¼…ï¾ 7¹Îƒ–­“WC¡f3ÂuQð˜a‰Ì <³…jàZ‚:B -Yíh¸ÄçîAy7«/A†:#bŒfø»(H¡à›Uz mjòÒÉy™rŸ«Óå ¯Läe²ÏRÈ+¥ÖTíi@9éO¬!ÚÕ%Šè8J£tŠOìâÈêÉH«…êJ/YÍU,íß&©^}v˜/s]’yŽÃŠZ³Øq]«¥‘ˆ·àÏÚ~^w("Ód‰×¢Vz‘f#Ï«/Çè£>„HztÜýV"ŠÚ!eÀ8ëïT™YfG½¡(BùnŽ@S"<‚ÐJõ@¹(­‘`3—ç+òí˨`:É\ovT4Os÷áDË7ÌúÐ-ØVùîäÚÊKr·ÕÝË*’æÍ¡.ß³#Š&‘Äæê^?>ÞkgçJmHM—w ¬Î2I½²¼p; ¡ZUs'Ó•¶^²š•‘{«­§Mˆˆ I™­²­§7·TïdYçß,Qv¨¹Éûµ•¢ ÞŒÐÃrR ú„”¿6­…§Óó™BÛJ…a¨Ý;+Slów­# çÙlוA€Vf¼ªVäúáÑâ{ÏÏ5žî9ÃUéÌ¥^SþúäÝ|VI6­ ˜ªÏ'W8ì…Øœ}ñ¦³…î)|uím,qÅŒͿ-uš¯_K(° ù›ÒÔ¤ô³£øòkØûŒÚ˜ïýÓr¸°Mg¸-='ßz=?ö]íy–‡AÏ-Ïá’{?Åe²oW Êæ“ú©ƒˆ×/#:Êò)0Íôצ (Vwh ¯1ÏOÔ—? ™nv:)´¹:Y*g“2¡ÀêaûÆY÷1Ð*¶¦ƒªîð¦åÅËæžLƒl¾‡{”êPà¯Qèf¹d‘°‰^nÑÐ(ÎP¶SrÒOÄÙÕu'=:‚Ê#b-Q›ä:.¦HÕ‰ÓñúŸ9ÞŸš¡n{Òb9>¥aÅwF99n§šlg©æú}Gvôúr'ùßé˜õñlžnÓ¯Ê8šïD¡º ŠŸ?¢ (wøk¸È±ð¾•’nnÑE¢ ´JÀ l`MŠìæ]H…È¢d6XšùH©–tòò¹Ž^æ:I[ïÏ].­• orŠót¸r=*N)jz—µkÕçêòtTöA=O蓦YKÐÝ=ZίVH¯wÜ—W*6^ Ç4ŸPš¬®ƒ– J„Ï)ÉꂬÙÑ#âÞ´«žM(ôškʼȄqRѬž¡Üß˰¨Š%T3«LVÇAVD>”æJÊ;ÊixŸÖp|©ô°ÕºD[—µgwæBûÞU¡ÏÞdm™8Gre®sJtió¤¡íÕ:HJ*zh˜-ÖIvURÜCã «˜Te ìºé+¼ØP<ÍéQoUæàÐPESZ­~rlw»šãk<ͤ0œvŒØ¢5üfÖU•Ø€•¥=Ï<ùŽ“”íY¥3Ê“"lQ|dȽ ­›ÓÏ.ü—T[En ,¾T…ÓÆé—Òóíðú[Ÿa¬9ÆKIÝdž’û„¬翤þxíBâÕ´¤X‹¼þ’~c«–±b?~a©1Æ—Å =ÖÌk2¸ýr»µ¹ûu>̇\¸"€> ´JJ0”¯£ˆ:¿tç+#ÆUüÊîÓÊóÜSÚ—G²ØÔUfçÖ8½XŸg¬16ϦUÁ¡Rü°.¼äÙoRò?5ÑOËËêãf²Ž+៬ɥÕ Î¦ÇÉ:¥GRt¯á‘ ,Щ˾ ©!’{4ŸAÊ9;G<_+VZG¤Q±K@T9úy½tÕÉéSE‡eÉŠ¾¼¬÷§›aà„AÊ[Ryô±Ašc~tëxêJlzl,¦§UKJ…®”n,ÚÝ]%,M¥:( VZh£Ó†]íJ‚öä-'Ô»q«쫜ˆbg–âÖE=Ì×¢ÛÆSyöiÄ$éÑóciž‹”éÔÀél‹9(¶Ñ×ÜVÇð,„9Y´Å)F:vxÎ…“ Wž»É×uè{ÓVÉÙ×7Ð:sÔ•ž¾¤ª\>Ò­'·Gwð÷ˆ@ÊÊóçÙ,­Æ#ôܾJ²yToÅž«ÏÛdåšfÈðh'´z¾ÑÞ3àôüua5BÔô|PÛIÎõ*;Iñ{õu<èdãe[ÀÓŠ¼ì^§Ÿìäs 3kBY™ºŠ×  Jd™ñX0›»•™K3üÑA¯—]AâQè-EMg¼è=xÔ™A˜[i&òRÚÌ‚^¥ãgéÑ;¯=F,óÕKÃæºAs6߆ä5{8«ÏñÕÖñLʵ:ìó\W$cžö}6ª5hýud éX¼§AÇÞz ÎÑ<·7KÔ©=u¢bÏ|ñ”’"ŽåòcÜß`»*5ë4^Ý/+5™¬œAåÒê+×θº3ÐH·NtdÔž•k¦Œõù_g=¨©Fl­AÉ‹ÑIt5ˆy ^d‘çï¡”Ú]9Èu^O£•]©¢©3PøóIO;?ëN‚Ì.›Â½f'«àyRŠ‘÷gÊ×Z)cÎú-­ã¶é‘mæç¬+Ê?í&ÙõESº¬#ŒÍgÇ5<ûÔ–´3+.¬KfxTrCÊÍå+¸²{ߨ”†WlgYòTJ2›Â‰–m.oÒ¬óÎû^m ¥ß Tj€+ó<µ6òYÑý‘Z|›×›Fçý{*ÜŽzÔäýf'DÞwsß”™3ªNañ‹V})ï1›¡ªb}TÆ;I‘vÓ+3Î,gg첞y˜=åp |å:)s&•¤ó* ùí™ý'_=/¼=~·–ÕÎBµ¨"¬³2î?º9§åÁJžÖ§¶PŸå•ùCùè÷Nªyç·#¢Ìq§­Hës´›‘j›(•ï‡Õ A— Ùñý|)Êh^’ZÒ›o>OÍú@¿/ ld5T±yzœò+g~6¬ÏÓPIøæ^sDLß›[™õ–øýèufE!<aÐK©#·<<›@¬] ”Ú ifý´am)Q'ŠÈ/“ñzošt1. ©äz{ÊžZs›»­2^q€¬¥0wh¶§‡¤À)M© 4–ê„ý:WDl•hôT§·3Ígp_.Æè¹–ZŠi&nÈ’¾sµÑ,Ê«‹®ª¥gB¨šÒuQ9†oJÊÓL isT'ܹU>ŠÝIµ¥FQ–—Òm¥ab­ÑÌÞV¤ Æ¡=)D™#ªÅ[Hñ–¥*}%/…7ËêRË[žù’‰öÆ9K¤Mt2[R+«üæz¹l¤žòŒŒµÏõ¡ÁZò¨Í¨WAÅŽIä>>˜Õbš÷;B{QŠ2¦²Ò,®§V„j“moF*ÃéíÏϱAÇ[æ\l2Œñ¡uÉEºVVÑkØA]9µ¹•¥Ùoy,8c(×â½îR“ì_v…ªS,ŒEˆVU½¯h<fLO¡šÌØ4ÚÍa£«åj«£yó«»f~QȉVqm3f‰Ö&)¤›p!­eg”;Á(=1S"<êôú¨££âú¼ókÖ¼Š@´ÞkÒ[^Æ…JPݬÁ¶‘ºidÒ¬6ÍSÖV7Ä]™áØ_Ø`dɺDe|ñ†|9û<ÿEEmo,+4ýU­äk-‚½&SÒçÛæ¿¬#u^^9Š#+¶LY²­æ-]& >Ÿ>ÓGôŸÏÿIy7óèDf# GóaMAu(‹?œvñm™¥*ü÷&Q}mk<èQ¼úå<®ž¨rΜŠ]€æéT:¶gõ¼ÌêvU£Ž¯¨8‡->”Nž3t<çE²Ø)KG&\õ¾—ŠÌº yB!˜=‰—ÄYãà-üeú›k0—™#ËÙðÕ„Ø|ÊêÚ ³ÿg·†ñ.–®†Î’¥Ð€¬öV+,Í¥}AË-émXói Zy[¯¼LãLóÞ¬ºÃ@7^ee†tጣsèJªÚ.É’>¼£+ænÕôöÆYœÓ(Læd¢óh‡¢èÏøÈ·OËWÒ‚uQ›%£Ïq×4ľ8&À=-“i—:½Å®MmOdmá'™}O›Ÿ‘«ÍuK]OÑëêç#ÒE©àAg›® 2©.‹’”å¡ËôJÒ£ÏßÎ5{<×OÏÕ﫨”ÔFY×XìŠNzüÞè8ú«<õK“I—­SÌ¥5ÇÚçz8uZ=JK©‰z7R·¸ŽŽüýJÒ8ý2_Qü©VÕ+ÎÏ8Ì ô™‡iS0vP“ƒ&SË.¾o'FO'žó9¥Õ0Ú’ÄØ”Q#ºÍ°{êè„óÂJ©AI/ *öÚ²˜eVüO.Ó×?q  ©nÿ?îùkI¹­¶…žRÜI]V&¸&æÀH€cÌ"óE°‡Æ%{r’“ÈÙ@ó[Q³Ûݸ£"Ê^]ka[Îq–1Ru#€21‹ŽJeæÌÒ›]TèYñª‚­mè—ç'AºZÊ¿zjJ¯(ì·9øªV]+MAb-J°•ôNZ’-c©¤dYæ/ª’”ºyþ†7@µž&E'/–Ð^†^Rgœîó¯tœmTs-s‡é9ÚáÖ„U8»/ìy;¾A#Ÿ·.Ïd—^Š•`}ðß¿>ªØäüùäjªRjÀYŸQf¶@¾k^©j¬6#ƒk`ôFï+üÚŸL•}¤AÞ> *FŸrDjnCẋ©ybx ´©rZVï`6ÌeJ¥u0,ž ÒK¤|ÉfÐ:­{V~õàf8é“øË¹r`°Ûß5^i®Z½>3Sè6Í›]Z%5Œy2Û7'²ß:‡Šý%Åáì-64)›?ì¿:êåèM7 Ëiíš“}CN :Iásày÷ƒ2:Õ>nhV€«W‚`êPÖ…Ñqö¢7‘KHS øëúØÌÍ{ŒhS‘¥»¼Ã[Ùk>7B-©u[éÿ?ì¹zø,o´êã7Ðr|þŽO¯k휬ŒAlš,"‚ˆ(²º]-ä}o6¥Fº÷“¤¬ˆl¦•rE¸ÇyæžO5°¬oK£Y¼6-ÐIew,û¡ô“ ß3ÕÌÇêåa™­+Ø÷½ÏÕN|´3–;y}=DØ‘ÏÙƒV¹¥wœoŒN kI‹Æ/:àQ¤µ|`Ì-%^qNƒ7X:sΊ{:´‚ÙãY¯6š³,rçiõ;ãúéQa3“pÎã.Ù÷ˆ¹è—›3šèU›E¦$òLHβ vü¯g!zYUaÓc`'-¾Ì×ÚÏÓú+¼íÖæä5ÒO¼fÊíy¶Q²Õ0Ûƒ+¹vK³«Éµ!¯1Òsn˜.²Ìr÷;×Â0k~k$<†V`+¦8Ê»Ññ@›´á:½˜‡7/£/ «¥”}/ñ'FÇóë+>ΙPêü§™^ȈŒÏÐ<´ ™^N {Ï_/* {KE²â­2æwו 8îiFgOFd©¨n‹à2&•éö†½Ÿaú£Zóú°ó™Ë\ðŸp7P [|ϾÖ;Ú08EfÊMM}X P˜é¹ïb“ tØùÅ”éü£²¯Ô]úT6z";²]G¹©[ƒ26À0.a•Yè1“d3²YNЦqµåtwDøŽÊÉjB¤T(Ùe7šï8N½‘äc‚n²w¿&.q³ ܉­^6ý‰ô^rdˆÚÍŽ±—©q}„zVåú ’‘?3ÝÅaE‹~gÔ§}“¶‹+ ½)Plú¼øuÏò¶«:™Ï¸=Z“8ÂØ4è’Îæ³É de×>ôXÅö0½ôš Öôhè.Tc€¨£h"Í¥ñvÊËólúTXäXÝØlÞ€}Tva±óÛ®?Îì,.Ÿ•‡ÐxÓýwÛŸoò”¹éÐ YLn3ÄÐŒ™Ëj˜Yç0U¦ÞTÉë8K"×!éJÁ˜<®s£ÇW:Wy÷±ÞɃ˜ã(„Iz-ºæ³'RzåVdÀ6²FÒ¡Ît­"K½Î™+Ø®Î^Fç*ékÑk³³ÏýŸ~1\‹UáfoA3—»5ø=ß–ÈgWjö¿žC€wUå³S1G™Š–´ß6êR„®9ôqwSÈ÷´v–N-àðÌô>›½ejÊ.M]7AÏÒKØOÃç羽B´½š£"Ø—Oâ°Ž …³ß°Ê1N…>³+º»Wj²ý‹YiàUö|5fÑÞ·“ÚhŒç›”Yó/A#]à"ˆ­//äÕ~àvëÇCÏB2·¥¨²†ª¤eƒ$ÚˆÕlŒße§T>6p(/ˆ8êÇšŒÜºe·Ï½¹7„QäщgÑ÷ Pr64•Ö.-‰ŸfY+'_ª»ô›‚Òà÷Ôsö€jF×DšŸÐM%ŒþмçœFÆ`*F’éã#’TÝÔwÞçNÈò¬åi¼ a»þ¯ÏÝÌ+Óˬ¢œèß—b(92ú"tÏá¼Px(+Ÿ+²ÒoCÐwÛ÷?P5¬Ž˪É|Ƀ:$J°+³kÐlIÕØ4£&RŽ©£Íåâ˜+%_Œ¥:ÞJl£«@¹Ö0‚Lêà-ÓÂxèå•«*‹j¼«™V¥#n{¬ºO-î^”™Ÿf³[G"5bшd*Dcʵ2³)ÒÒ#k)XØšÌ–Ï ¼ÒgØ„´§ñA¨z‰×GšßÐ#2žÁZª{R€º<‰¡4zs7ß(¢îcR™gSITH’q~>‚¬Ž§—³šRï´›«á­žmZˆæÊĹâ€ý^u/£8³é´%j®“ñ…_žòËjVSÕei_¦‡H~æW])”äéN¸-©E«/³‹ÖkÌq}ø!R"Ì¥ù’°&—¯R™¾oBËÒµÍßMm'Çì°m•Ù¤§9Ó"òT–¨"ÐÄ´•deXN&æ) ³Jz"§ÆC«ûÚ¬è`Jotg8Ð4êÏBê+\Z—§ÉÖláuYZé63éÞÑç«-Õ òÐé–—hK#f„Í'Š‹“ôûµ¾ Ö„ÊkÒºÍ4ø£” ôΗ—¡i”`2©N;]¼Ì1F×·?äèYûg^ |cK¹3Ï.‹ÞûËÑà|Ù§˜2¼fO§³ƒ§éø®³³Rçß9Øs½\¹®™qž™ézž½•¼ý Ë«U4È“ªnÛZœÓÛd4d Q9“fP¥]^·óús§Oó–ë$èÂè ”ƒ«3z¹^5[T˜Ä_6`à;à¶­êJ;Ëéý3gÑQJúÁF}™U:Š(øìFòTî ¤×BBŠˆVpyÕ¬yi=I«y³Ãð«2¦Ù[Ë(‹¯z/ÏdÞM௿ŸyzôLXË CäˆÞŸI&Yþ'¯?¯É}p»™eY·v„ª[Zz財¹U̸'0, ò;]ø1UlR-à «|Ígá(Nˆh¥ö1ŸBt*Õ2´™uV¸VM§iS÷±;n„¦W}>‚Ô„ÔsŽ¿;¹Ü§‡Ñ—§§•µWç:8ìbVZ9n3Uä|dÊÛ>Î Ý ì§Ck3)F°RryõÈØFé\äKÍß~¿7VW¨$j‹Ê"ôþ®~t…O§‡f…ÐΉMlYd?„3ryáצVuz>ùR¶›‘K—©i4&ROhu œ`øÙ|èyÇ]MÜÔ­cŒÙgü`Xéî¢Æk'MwgXe=} Y'¡q²³¸ œšllñ&EBê&Óyܜۛ«ÖŸr5t¾MwÉgåç¢XV«<Ë€Yê,Ê›IIb{ã¬mÞ‡EQb¢êóÖ9ïQ?¦“óPÝœö°2sZÏ-]a&é—Eà·ËÔœêÿG2®>‡¤âúžNï-Jlú57ÜýbúÁ×GX ø°]SG!e i¼Ð¡„3é'.ÍL ÝÙçi³å™®¦s\¾£W;<È:•Õ(io9ÕqjóoÆ!çT~he¡“s:ÉŒ åô; ŸŸeÖf}¹_. L²ŽY\~Üã©vWup2Ccm¶æö„T DŒ­Euþû,‡ð‚¬&á¤Ê ·<ò®¨Ì £‡SlÚ›Cc>×µIB{?ÏÚä´]ZódsHÊW„ê²ô%Z¼*m$dß¿eÕÕ´¦m4´ØƒdÂÆ Ô_%åáQ]ÌØl–=·\éBº*p°ªÜ‘#ôZŽÜ¯V?Yùù-µ»<ë7ùwaÙØrÖçóö5~ZüÖÔLº³I¡ôù«6¡ô6Ö65;±’äôlÏLl¤K­æë,´kÌËÓõƒ™iúQåjt ”:}S˜Yñnž ù÷„ò[.¨ð ö×öáFoö}¨w í“«U¡;“Ï>Ö“è&ÛgÐakZ»*=–i›"Þ›¶U½•ÇšÁb{/#¶:èPM­Ž±Ñ¯Y¬6V]þåÅ©qÙ¹úJ@é)¯ †kx*ˆùïi©ôfjЍ³¹e%ŸC–fÄ;Αyúê6ä‚야3Γ<̺ÉåRÓ§S˜uùîqƒµðz]ÇeòB ü¨…VY÷ˆb˜x¬²œ|!5šK+VܯK}?,ôrøóÆÉwRË*ßûÍU‡P%t Z<Õ4]èá:‹V@B«¶ô¶eÑ…”ÅbÔöÀÁüÌ€e¦Ò y´¦ìÜ;<^‰ø>»vF§™éæ@[ù²[G!ïgaóÙÈ ¸s¦ujäϹ=GV¬‘fGÃÐR[-‡b`ûï|ÕúA,þ6gi¶ÊsÍʾ†ÿŒŸõ½2‹j Nk³©f² .< ¶šˆ(üy¡QdÉ U¹¤Ë 3 =àx 6Ì7›ÍR‰ÔPy\K†ï4:óo2M¤°Íéù ¯‘žó£©kHqfm"ãÒp閈ɮ†fß+,ÔSãTOÕI'æÙz³d·³ñ/i)Ÿ#93¦t}Î&ö·`´j\>¦‡qyW’S«æ;|äþüÍøüʇ›ûñë‰~|T&¬Àf2ÿòÙ³*óïTIGYæÙK´I•Çf= ƒÆZœºR’ØàÍ茊ûY¯>À|ν¤®_ù}R[Wr°®ŒGê{‹¤Å´dxð}MÄu Ò»4’:ŒOë`e&V¥/*Æ> ̪.T¨µe5>Â%øcbÔ[òÒKTÖ nô®^Ýã_MGÔ¥¼&EêâF‚óV¾Z-g‘謚y‘ÁšžŠ™ƒø½È>åô^S·£ÛŒ3*Õ›Ÿ‘ì–¼þÃKcüئu âºÌú°îPžØ|¡ìû)¸³(ÑuAìû>Ðõuíh5õVq—_è«-ÁfWª´Ý+gçÒ<ÖÖüÈkÀÎR2¹òqe ò.ʾQà`³«WÅð=éßÙÖEòÇÃ÷¼ég+÷œè"urå¼:dS範/««+‘^N3º¶ÀyAy5ߨ¥yN…"ˆÜǺ’¼ùgnHÆw<ÌŒ¨òÎó¬§Â^èçéÅ6”l“kMy»#bèóÔÁói¢ÎÊÛPèG©š°VVÊzGYØõim«ò‡}•´É« õÁ]ˆïebý‚¥OQ¡ØD‰”²«QnO¤é=°dm=jï@8øÕå}l—I‡T2?K§ßf_ dËž’öüÚºÊ> ¾,}>PJ6#'ù¬<<\ˆf@?jk˾l?7Oå šÉ‚ìª*q™`ËIòtÎ6‚'r¶<ñ}€(H ¤4^O=¬>˜æäJ¾Ï¼ê”ê^q­(,Ȧìåcᮃœi‡>ØõqV5BCHÔ>(ÌØgøVc}eˆ«RD‘Zîi+ªÄªªšŸYË÷½Ûå{ð¾%±žñ•ëÉëar÷óì9¾Ï5{Uæ€yEâåA›¡“ÚÔ_â·žFËO9LkN‚z€]éšÊÕªXôm5'ÃlWÛÍ9|L‹(/¿>ÓŸß =¯MW¥Ò ›êX&ÝKDÍyÄja‚„öh3VOKªÌéF•þ m™ì2±Œ®O ȘòRfYR°ø8òöžôº$Ô#fÜÑNö=¥*G¤Å º‡ñŒ(¹š€,f|?b:« è2¢«eç]ªK#2/´™Ùi}N”ª£e$ÚhI.¨Ë1OIÙû+Ó¥æyÖÑÊo}Vu#-pQæ›Y{6X)MyãÖ§Jœb¦‘fóĶìÖKqý?^1h?:¸½ò馰=;ÝÊÒÒ•¢::Â~u›ñ‘©Ûï‹iXùѼ ͱÉÄ]ÆK;9¥®·•ŸHï%eyï‹EÓp£âÜ{uN®]#rþxºù®gôî+«—œ( ÓÊñ¾oF5!e±ã‰htRRepH‡”èvRøÓÛ$ÞU5©§¨±H&›¡òw8)ãodá?ÙeàOl]7>вcm=Z?$}°«}§¹Ñ™FöJ£ö‹¢ÚÖTÑ@Î’ýóν ÁeZ†Óöµ"¢¨ùn´œúW`tʦ©ŠU–­ºH×O ÀÎë2{UÑà:à•™*ª#éjYuZ‚ÇF[ó¥íg\õ*/LešÊžè’Æ Õçè¢L؆~_“`ñ^z֬ʨœYuí<‚üm|™Vù±¼ …ÿ?Aþƒ»‹‹«‡µoWù_ƒ½)? Xußv3d’mŽî65ówc>Óξ=YŸg•°w:Ú¸'4'‰È±G"ïùZ•XàÄéA”0•(½I–]/nm;ëªQiY‡L÷}ç–Y•Êý›ãϳ; AT+éÑõŸ(Ã~E׉àÊÛeÓÈû'¯!Õµ'¨Ëa‹ QÓ+;ÎHy]…‡Aç’>¤sçšó-Yç# zt¥<¥J£­{g÷GÆR¸Ñ˜ªàåðkâÌîttÚDr¹ùWÕÀ§£¥S [@"Ré“«ƒÞÇ„7š+zfÙù¶pGÛù§¾éܪÁ¥)[Å^@>MŸ”ºQê¥=ÏÛéT¹ý3ÙðͲP/=A¥Ùõ|IÇÛ{óÞö#Äßþ‹Á=æAyË<êcø™"t$ôÆž8¾Ë§Sje§ò¬òdk¼®q˜)DÛ[맘ûìÔý_ !«D÷óÌ£X¿MkY•HY 2Òñæî>y®cá¡o‡¥ï˜\iT–%ds…¸]ç••Ï+åÙgÉ:9ô¥™¸jÌ©Ñ}ø×5èO$œ 4ÚuóhX‡A3lÂgÔIÌz“ª9lXÊ Ÿj7¤ ޳ÉÕáƒ&j-Wš{ÏÐÊÒ]næª#JØ&«-=ïœ+²*E¥ÔÔÊ¢Íæþmnß(Ã+&O8Šf6's#W”TÒÚÖõ²È½æÌèºlaê³ÛKôŸyòsvP['[Ò”J ‰ýèã¬äjQé¯Óðz…úÎ#²äš&¿ÎÕgÐEË!ÀRK¤`0e<óŒÎq÷Xx¸’‡TL³ÝöAÏhRè×ÑkpûLøÍçGGŒOž¬¾¨užgvG³"ÃÍ.Í%\KjwÓIø JiÒŽ8J‰ŒToMoÐ|¬·ìû þBÇ=‹ÎöœÎb>uKJö§î4­¡¹#¦æí±¡çHäAµ7 ]$&š Ë`pdº¶Â‚ö*ž^°E0]¥'KŸ­ÏÖ tãéŒ:ÃGª%Mé’:¸úI,/7€ÍùAB=+©ÓÍäô¹emAíò}ŸŸkÏñ•Ìk˜Èщá5­€|“䉜ôÁåËéôè 3äÞÍD4€óÏ•h]céÍøÔöR‚Ë`Ñ}FKŸ#5+PLIj3f“'„Q“h…SÚÐÒª-QJÅbh;6-F¥.¡8‰Q„µ$˜ÕÓÍ…ýãFO¤~×’Æõ“f© r¤Áƒ0Ý™–fö¥¶Ÿ=$ü`]òÎtã?’è¹6V¬¼§ÍÖMžS Àt¢½(¯OO}„׋«”Hþ•èôT¤¡ÐCÏmÒlÓ{§”éY³·)©˜Ù[x"Í èå@ôp{>ó+>•‹æwŒ®óà·í1ïºáÁáž,¢®×fC1½–~ênµ«°èá:¨C&9òzžD«¥•g-‰¹ÏÒeüîwAÍút<|§OÏ©¸*¹/™ ´to†Æu4Äãã3å™ÎO$Øà¦ ¬€R yVc!Õ¬K‘7Ž­/D"òß&‚À¿¾’‘ *³Ë6)t nù¶~¶mšÞû ÇÒ>?±ª-ìÆ«RÚsíÞÎ͹Ÿ6~‚ZÇÐüž¦h&VbæPt&äV–NÉ̘v÷šÔš ªV €ž - ã‹ foêèåmã]jn¯('õ6ü™åY‚Óê¨LŸÏÒ4V×O-*î°*%ÕyÖöHò 3æ]ÙP¾Æñ½†½Ž-ã:ºðŽ`t\Š-…óó7ekÎåž>áͺדífSlùÏõ\ªÔ*k?œw< å^‡7CIüwqÅurºqÔNˆGfY ·‹•Qõƒ¨Ø²=]š­|òÊÎPâT€¦ºUM¬’Úo:›jV^o@3aŸjÖdl΂)¬xùut¤]Øô¬fgóè ¦qB³'ÆÇ½å?´ÆçÒ” Xå. ²Š»k²²ølá-ʤÀ2}·?Êk+s™LùeœÑÎòÌãƒíaCØrM—¼¯ ÍÁ¿+kíùýP.”•¬ˆf•AϽ/¯ŽÌßb`/ý×EäÙRz„G½í4½¬pëÞæåY¸h,&DòûóbÍ×Üs ÇÒ\¶ã°érô{\Ó¡´§?ùÿè_š÷ðuÝ{2­k«Ü+]n~„iuíóüðKž})³êWé nP˜'(EžÂ¼¼QÖÁ˜£JÙ>¼´ìÒ¥mêycÕá{z¸ ‡Iù°}]³ñ&áp®ât’Ám_Š?FclRè#“èMÝŸ÷ @}·“­¥ßº;hÊz‡¤ÓÖœ~‰ïT'˜¥ †ÆrÉÅAQ™–Ž@•VK Ь»ò¾Ð"®É’õ{¬ÿP.lõi©¹ O#ÓÇlè±ÍÔϕբ7õ§6ÇX&Ê…Y-(¤sóôq¤·o˜÷@ <^œ8]N^¨FY—óñöÜÿG$½x´œÖD}—–1×HiHôÉèEB[ ؉L¶©ò'3}Òs$?['Õyþ”¦mç3É+Ë1C½³—ô—;ƒ¶ÊÈAZŸ¨>©£>¤{ñЩ>„ºF/- ú˜«Îlƒ„< éb®è0Ý8,¦òÈø,àåymôZ•d¾Á"â>½:N7^Y‚úðôj‹€3S ki—åQU›%çøýn€§$+æW¿½¯È?áöD¦ËˆÞÓ{‹&±Ë‚˜LhšØ80Ú‚šÉ|ËgÌ –¬­•?²©/Õ‹jP!²MÐ4§4 Ó[,êAac«‘U“CTŽ~äs»Jþëùº??—ú¿çÔ’øz%e[+ [B«)€KåŽ)H¶†©óUáyúnk•fuËÑ'JK§'?¸âªŽ[åžJe€^øè×?QÀvù¾‰¤È_7j¹8©ƒöH*ÈÓ;$rw˜4|­%z‚OÎJ³nʼùû#ʳY×Þ~ƒd¸ZoÄ££Qz, ™±>ãxfK³‘²Z‡?GÞÜ!c{5ñú¾'X]ó}ºZ„œžÏ—eF²—LÅf  3*jTÔÚ±Tem¦™ýbP»!5ôXiç,M’¥¯IgÉéÉÃCý]NˆþcS¥MAf]T%(£§H5„f@DØÏ6dzø/2üý(œÊ-‹©VX½ÎÕ'Ñ BÜý=>y¬²ÐOè$yæùÐ@vüõú¿Ì +wœ!š¹[;eNk"Õée¦1ü&EI.Ͻ©­kˬö<¯éœz¡qõçÞò¶qµ†OƒèùÞ¤v{Z¦LúÿÖHûªli࣬Þw¦öL¡)áÊ VºAij¦¢ e\æ5ÑЖ~Ñåyä)ï.¸Î;7ç¾è3ìx5妼êè‡Æöý•SÃ:ß…Ð -øiüçcÉõsóúϧãë¤gƒÖÅ©óu5ïz4U©W)ÄùA–Ùh[0s&.æ~EnN¬³Mê[fJ¶”ð£ {zh¹6F;Ÿ ô•ºeÂ=l[±¡RFüåN¨r:®»5F÷ ˆÖçÐs?WÃÉé¥~t¤Rjb‡×X¥·!¹äy¡_™&À]ËlÈ¡ÏßVh<ްjóJ銶tB{[i˜è36êzÌÿGãﯟžå¾uœŒ(Åçèà"ÌôH~Öðö”&ŸKÌL¢eŒÙÕò;„Eé¹t"«lÙÎcÛVÈ‹ð­Òî›0Î|δ§³¡† á]g"ƒ2tkãÍm„ü¬ÉÁ±tøÄFÚc—ëxŽŽhUIîï?¬ó¹ò}˜Ô†FcøBÄçA©ô¡GëÆ¢y±‚ì®—óç»üÐ.K·äzÙù¼!ï †û:ú`µ¯º EÀgÅÎÉu 2˜/ñŸ¡;4þi †ý;¼¹þгÛL¿D _œD=Oͺ.·5„ô%~YËbeæsA:§„žMÆoíù¦n³,³Ü¨×7\©½;)^XÝ>Ôá–îbß›Ÿz Ëžf€ÅSÝÛÜöâº(G½ðIÃÙázhЧyž¥ú©J(ˆ¹‡{M2xÃô,)õóLæœè(”Ó ‡I3¡¨MCkÞXPL2ügêa5~ß:­M“—°C-tÛrå$&H~k—^¦u‘ ·Üð½ì|Žnœǟ鵯YþoÅ8GÒÏTú ŒÈBnt~Î\”GV ñƒÇÕÌ+úÝäö½·Ùñõ ÅÌ*/ÁkÁìëèc$È{>Ð{ÙÀÙÈ{ÚÈgÀÈó½W˜˜z üß•D6|02îEKÌÇaÁ%t#ŸÅhâ·–9Ý^ðF%\›35ôlͽåÑü`¹Þ– óËÐoz<ªšŒÛ«˜ó}/K­÷SÌÞæYóê§dì“KSHê6¸–Œ–`¼8¹ +"À`tÓÞ×Õ ¯}Æ7”ð¹Óz{ €èŠáDqqõSŒòØ]X{hú~.ûÞ7½‡RÅ߸ýX ‘g±Kð :FÉuížq(—0Ç÷²ÏD0Ïžç°6l®­ïxÞ7ÎîíîZÜ‹ñ‹ßuTg|/OAüïF—%v5aÖ6פ üíÓôäu|׆T4>(¾ð{BȧÒ^_šþù§g7}_ñ_ÕP«à›§ßVÐðoÂð3‘(Êï’Pd*þsúo Üðg¤ÿ@÷Üùž†¾}À»ùìïh Lçà|Ö2iíaî?§çm>+·â{þ®e§Úçå^Ò_§G§¡Ô2›AOŠc—>+àF=ô¢@¶T~7°•ÑSœk\Ý ýw8døÎ‚EïÑ5ñØiì¬xƒUG=‡Q“‰E„¸è‘•G˜QMÇbEùfkïÎï.¯Sßìí5—³<èa³ ¶)WÞÉðÆý­\üùðß¹3C ˜úuØ3˰½âxÎhªT/ÄØ= ½MoC†S½—Yƒ©õkþsgÛþ;ú·ã‡kÝþ?úäêLû<½$ðôײæ/O¬“¼–«3þKúwä”—»"ç_?ê~7®0#¾(cYYÓ›éù~žðÊÔ ËÕ+èøÏoÆf¼nÊ×k—ËõimŒö§é±±‹+­ñ½,:£7?ì/ÏÙüSÜ=§ˆÿ7tæúnv¿g+¡tüý‰3£®ûE4›Ûö”Kœì8þ®vúŽOµMÆõ2x0ú.®sç:å¶|M &çЕZÀ"<²Í™ô «“­„£(:ȲÛ:̺ñt¬1 M¹ o£’wjÎ’‹ÁC®0ê äœÞ¤ £êDÜc&LÁųIï _b7̃Lbð`9„Óy/-¹úzúÏHveã^C>×°û}ÓïÑ{Dãtÿi$ø¯ÐM«ÄuŒèe„ç‘廼¡Ô\9Än-ÕËÌt³€Óê¸ÕþšŠ}*–‡qk©çúT¼«‹4¦8N矺#Kó¾ß³›©žð¼ÎÎ*AÞôø¥þ…Äv½ok:æ¦rL›¡}ö÷†7¹ÂUeùʶ\õ<ާϓ륡‡T‰~}ÊÏEÁùú~ûÌ(3ëjxš(«~yú/1yk¬‡i[\ŸaÍãFì¿-ýRÒkÆ÷;ƒÛ2‹èù”cƒ>øÍ±2Ð"ß”Q‘`)¶V Ozbºe×Wm–Üz<"£ÍÕ¿ŠOª\|'ƒèàwWgMZ{zK2²¶YߘOÅÈÀÑ2asðf‰@yÿ2ò›œáÓØ6ZߌNjæ\}÷”ù¿ië^Ð~7…[Ìçb“8Çöè½½fÄÎhðÏ‚8­ä!¡ÕŽè3‚äU¨*pXƒ:¶Ÿ‘á‘Òlù38.™}å=«Àô¼õ:utý5ÒËŸ^/LJ߀ú´ö´ײ1®j\‘Ùô8¿W2-xþ¡~{Æ EºI¸‰\èòÚ¼.0‘ÑÉæµ6Y´Ê Œ5.²ÌŽ"ñ^;$]—îµáGï| ĽøåÓö]D·=XLí)‘`cêÚ]PMy°yÙµsíù“ÿÄ,!"#12A$34B%CÿÚÇ­êdÌgT^cçøÈ¾Ê–wzc•~$ÉðÒ·i“DpÎ@FTCOF“y;nñ:1çâE˜q„ÏŠ*,‰‚Vm=6¤b®2qHãż"nظÿá³:y€ùe>EZ–0ÖI\È+‰zŽs~?0Þ–!Ñ& |…DšS$äºÌåRµªOÚ§iOß2ÉWsÙp_¼ÇÈt7É\‘ù˜ÄvhŒ{ùƒFtÙ–ÅU¦ZŽfm þ]ºUAL¾£ÈHc{NDÓiÿY3Z¡p³FRóÅå/12Ÿ'Tÿ.Žá±pq“6 ©^`WÅSò_UŠ7lš3кõ#ÙöCu)Ù™ „z ”J±;á*6ù +@96ˆÛDò­TãÕAò®êj ²d\íý#cƒwÉh" ˆ•N—`öê‹Mó ½Z’hÿ™•?D¸¯$EÙ@ºÄ*”ù942c6R˜ŠViÕÞ3i€FSŠÇtŠxÓ-R“Ýžžl<ð• Dh6±¢$_÷¢¿ˆÌt P£“â}ªb͈4'Mä!×2f¢ Z0ÂF#?úâÒî<û¥ ¾WCX„hdä–é8Pcüiêæ¸Ìħ|#85ÙU|t»m»5>ÉÉ 1Љ%ö~ÝÉÇêZµš³:iGØHh2ƒv=øH*ÂÐíüzá]‘4Ø; ú¼Ê©ØQ²G°xêmWHÇDõÆ*–ßáЂêÒ:Ñc¾ZB'(Ò¼!„1‘i‰u2Æ@"Šô‚}uQ^^‘çà1Õ€cI*èyJHÈ‘sO9Ê¡/þáÂeW¥T¨J¸Ã¬´#OºµòðÇÒ¤ÒHÚIŽœ!AnPl¢©»RÊçi‘«œ“NeϬâ¨mѦ“T©áÍ×1æê—’·ÈäW0B$ˆûE ±Fî÷ã[QÅg)1É£¹œ@áŠuR”(&º¬ƒ>¸U+åð²dîMM¨¼¨Ÿ)~=o3c>ÒælÜBSqŒyÝ~Ù“ÔA›3×þ®ü€ÜÙ4%ÕO­;×àÎñèÉ;\s®”¼lO¥›z(5ĸÃh}qSg*„•§ŒÊžI!©NÜaµRè)Û²…âõcýDi »¯E_eˆÙþyñt¶s¥þHl‘ }p’6›î¸’%+*‘ƒØÈc÷®LûÁ "1Ƕv™@ ùXÜAò k*3”= £?!>ÁÈTA³ 4j'é¹_ebSÄ´`cÊFdÝ1•k¢¹)äÞ3ÜäcŽ˜”>Åäàù¾ÊWE¸˜µÅÚ#P޾¯ŠòÑ–©<'(¿&§ñc+Dùp‘¦CÌ$Úfp¡¥9?OŽ Š€+vÐÄKÇ8ó y#—<œ¨µ®fù‹zêÀ”¾%ŠÑ2"ÛU¥ü…úÏ%âµVÏ Io‰ÂÇãr*ÅŒ”· Ôf2Ùk¼4šKÌ™ !\ŠÈšäù##‹G&Ÿô–;%[ޙί½D©*¢„µze§T#×ì$û ?³OÞ$µ9§¯åK Ð0I Üõf£ðݸƒ¬§ì)Œk–:Oöƒ½!Å;l}´¦h`2/qA®aT3‘)nS£AÅFO^åTJhÔ(C=rcU^ÚÆtgœõLrÐî©üWi—;-í›ÔÚ UM ˈ|tW ‰sdZ#Çbw‡5SSк·RH{–ÔÊ>ĉ Eß´‘%œs€9ªÏ"Ÿ²Á`÷¸œ~C&¹9N¬ÅN¸-0‰ÉÊdì` –ÊøŠ‘?…Êp˜xÈ$¦&Z‰¥X3ä,Mw”Ç©ón†™ÈŒÕÐΈ y댫4Êö1×£4•~'ã@l‹H܆C•U§lh•#Z;ÓБ,R¦KâÆ°Qš€R9u¾™¬Õ‘§>8õ‹ä½Êºû,εúc=ñÏëIjÙ4£DƒîÏÜ¢‚ öJŠÌxi4>yp<ÌÅ%Ãmì™|¿ˆI ÔñœŽ+l\’{ˆ{ ¡ô„õä}ц¤Km—«Sü1 ]ô9ŽOg"†YŠc¶ò ĉ/WÊO$¢iÈјo-¤[÷̆Ùt$ؾ´›fc3 %!ºŽåüÐ䦙kÐä ‘(w1V\c>…4_Ñ)p*S1rÚ%†µ©MþÜߣƺæ^RÌdiâÈÅ Ò »Ø¦Ê© £¢ŒVŸ{`Ef‚…÷Å8tbȈ[2>xáR…4õ¢–\mv)ó/ÕÐ1Y"„'õÌj˜dd`J¬Ø™P6,¿€b.™s­±Jlá®åŠ€‚4IÛ|ƒkãÒ”˜ï‰æ¦R!âãèž“^äWâ®Yÿ#$íûiå³Ïg‡B µjJ×czáÖàš7 X°iùOîz•û “ PJ£€cà ‰}šjr„ž% Œ´SÚŸh£“ì)sÜï¯}“Åæ3З,¸4NQ= ìäù¦kºû´T—!K4]±ŒöJë‚`ñ‚rÉD¡Wˆñ:y¹Ù`€”Òd@ËÚ•ßDœç+Œyé2O”àÓy¦*w4a©oÚ“Rræ Å÷Å ”>ö&Ô¹ó-_Ïœ2lðø¼xy J¡—&à‰ã·™1´NœoÖy—äÀ#}§hù¹”U+·˜WËÌhxŽ8ˤ1ÓªD’rýdB›,–›Ü@fÄõÆ fŠŽ¹JãñSꙉ¤‚n¸«â|!2í_&Y4øÊ<È X6 èä囿•'çIáîøÉÝóFï’}§·“é0Ò4Àf+éÆè@ Í®;Åm1,£z/EnJjN@Ù>"¦ Ë$¦K1I»Ê·fâ¼™ œÏšŒVa°A¾ ì¬ôÉséŽÊ·ò†ºcNä¿Ý_ÜŸfC©(ÕŽÒè¦0St=ñ½ ãSËøÕN2z»<¬µÁ4¸µ¹yöéh‡¿BÚnL'Ÿ1TÏ#,€øûÆWçá0úÙ/ã!dÆLÇQ_˜S: ÛªVæ2÷Éœœ58½fs{>?ÅЀ§šûÅÆ¡Üiä¶54™ÙÝúðŸÿÊÛV…Ã"¿+y2GZFÞñ•y)MÙJžÅSeø(u²“*kýÿ`l¹Ø¡Pv_!éüªº·å-ëlxN†‰!G;À†ÔÌý–ñ€dò lQ%³×¨] ÿIŠíŽ1"Ää º0ú™(:oª¯Ð§šn ¯~8Øó_¡]ñB±ª†á –vD¥H´pzv¾d̆GQŒÕ©soŠ"ËøôÇɤ޴*zÖ‚*‡6ÝåOb£Žº[.¸€•°ãwÄЃ\#DË­•úh¢ïšÑi‚­ì€y³µöAפBÁë¥ ¬&‡oöS`€S· 9 Ùš{+éªìÄ.ËéBF9rm0ŸÃ´<Bý)³ÊöÝ/)ß/%\5\ã†=˜Ví®\u>"`O”.Pc’‘Ñ”Ô ÉîähŽaõè&²,ÚØšŸû¸ÔÉEÿ±‘ZG.w™z·‘ò˜PÚ…ºšl,–Øý,Wy7ð§ÇšÑ?dÛ*¸Æ¬ ˃F©®Ó¶™w4=Dµä”É…ŠHíÐKºPø{'!Äçÿ‘_¸ÁôŠŠÊÎ$C}P¸±åäÍ„*S Në£ ÀqùTSÚá?/ëâ‘u•‘ ò8þ42êPë"EI¾7q 3cäÕÆ©SúÑÝЬ§5iìuÊrcF SG}zo…v‹= C¿ñ$m'è§(„)AQ°F€Ð_ïÛŽž]Ë•¡æíÇûqT•ÖÌT鎑ÜÏ»xޱ­»'Ê)žw"Ú4ÈûÚtÍ1å3¯~ïÃ$1#ÖË…žJ iø§¼óG‘£‚KI›ü2‡½†zL‰÷ƒ¡ #³A:½5Z0Ó é@›„Ézö¶T|àäÕ×'†€;mndãÙ¿"ù0¹ íM¶fCŒ‰Næ*«\Z/›cæûÈcÇÈmW[ªPßT›ö’:§"T$BŠ·®d–0$ô›þÏ/“O0ò¤f×S/œŸýÌ@Ó3ÌØ•7,C¤Mé©ÉQfØÁTû€ÌmYí ôj¿‘Ág2Æ)I,Ïÿ™”¿S‹Ù>’Á¹ìg­Xêv°%õâ%BÖ©Ì^¡/ú3R®iKó;ù3R“Ô¾>žÔ£Ñ±Ö‰…u˜“!: &\Ñ”ü+ž{âü]±º§â)ו¥c‰BêÙqbmu'¶Î£D)Y¶…Ò$0ÿùqå„cªmåË¿”ßÐâwÞC¢Á9 %!ᕲpãX["{ƒ‡{²¥¦ãMóVøìL³L¼ÚÚΙì¨ù âQ“xÞõìDÜÍk³‹EBqÔ¨Æé4 HR2>ÀdÑPmõ¡¿Û%è‚fYվ΃L”`Kª4‰M¬Xi°ã°ŒØ!««JvDôƒ×1WÉk ÝgèsZUGÙ‡¡û(24®Õ4ÅfÌ`è;ö 㕘 Y RÁÑœ¥5ÈuTÈË/´ ŠŽÆ®š>O C¡…ãž—)ÊM)Ä·NEýõX€¤ê€¿Œo- •"ƒÆÀ¦Ÿ39_"LIö6Œè2¨@GÓäSjˆ]ÀZ0Lw–‚M2W.m,{Ú†DyS¯P6jëᨒAüDÞK¨ª~Dˆr 4çõ•ÓË*!Ìf²á P­+PåaŠ& k…>™ÁFM?b>GGe-Hsžneá+ø¬)^ƒ¶*U¢¡W 5ÒÏ‘2iñóy”´q’€•nð›ë‘ËhÓ+eûò몢ÿifÑLuÇ™$‡³c–y€§ÖAup–'j£lNøhž¤E¹5×Ó¥Wdâ’AP sû©T,G±®!Úá&¦Ç«Ìú§¶ò!5=$¹ ¥OB”fl‰–¢&”ˆƒ¢ ”ädwéœóä)Y™÷´°i٬漷̙øç…û Hf!埿12:ÎTÑËŠLš'óžœIn¥Œïç#U H¯'´ >*($LɦúQÏ«üxARKäЈ“Jܤ: ø¤—ÍnJN€0r%ú'M!§Ñh•¬ÿU!䃵æ è ±Y /—âgÖ1Ø›=ãM§­Å¶Æ{x©Òã†/›Übá=¯ÉN²&€,,®‘nðÊ=°§}„ N9€dµ3‘pQËI‚2âÐ:Zdðæï ¥GOMÖ`ËÌqOÓ(¡6 $óR€Ð´<âRýu>èvÒqžÉ¶¢ÉQòœU¼hVóØR éÔö¹^è>ª7n¥¤‹¥FØÇ˜B¿wa¶Cì·ñ2I:¡mžý™?¿ÿý”é¥c¦A¤'eNùqµ)ÔÌw¾aÉàÉì“¡ J €›â;•6¤²0‡LQÛ˜&,údºu/O*$ÿT½V³õL9ˆÞuB®Q.Óå”5œ¥%F9ÿ*t€™ 0¡Ü *±aÉIAƉ= ™êÒ:~=òd\ *÷¼JÂŰÒE/ÝÐûCåšö&ª€WDŠ1òlT·Ã„|9OƬÍþ覈B9&Ù>„'Ò^uÊ]²A:çðF|Åp­áxŒ~Û }Zhò#¬ CÇ „†hB$ôüdònÂŽ‘Ó"_(Y”U9u •‹¯pÚ-VñJzRü Çõ)͵½±§`ƒo­#ž‹Œv¹*Áâ5b”âI£bGS\š¨MÑ=H,2ѨYÿ›R'IB{®'øŸG{šz_~v}Aß{ã°˜_¹.{º’Bz#M%CËUu‹§S¬f‡HùhpÞmÏN™Öf@34fÇág p½ƒ¨hwäg§dMËQÛ%ß'(="™”ô)¢mêÖ4™*ƒ¯#zTÉMã+÷8²`f´Bû´YƒQØd^è'jƒ¿vPÅ(»`6íí 5ÌTôSbv'!×C-…q%’´›Á> ·Ž½Z}0í6kB›sÈúR7É )àD˜)£Ï¢‚PðIéI]ü© ññ:ãII%Í1c0“ñŽxÃq)"Kxñ‹¡ÌHØŠxt«Y±”‰·¿EžWË+K!Úœ‡%“”õÆ=‘™±ÓË ªø¸ K°ä2}ÑÛÇŽ@•Îø¡{3hìLèUf…ɃȒºa>£T‘ܤXÄòHô+éAáô„é0GI—,Hå{lãí1õy댛Dô•å´AFˆYˆÒI(âÍUáQrïåË™ [tJÐÔ fÒK̇uœ’ÊIf*h@x1’Íd™é—,’Fg쪧 ÷ÅEQÚY£ò$Úå,SÄò32°)”e´B‚>J—zÌ•#P¦—ý“¦b²šå&Ðä¼£1ÿ¡)äA:O‚3p~,Ôs+ʪ ÁçLÃãáºÌ!S´‹€IÑDý°ŸŒÙT˜EѼ‡ÅÙOù†Øù8 æb-Z&/Ù)±Ÿ©šù$9‘|kÀĽ+ºFµ¡¡jÞq¼›ÚSþÞEw5Dgù§ZU&{P–SGÈ¡£Äéù‘¶1^‰v*$…´“%,=D~—4Þ0ѸîWÊWý´ú—u!iì¦ÕƸ „&à‰Ðq½.”g>æÇÞ¶ôFØ/^oÿè!@}’G¶‹ü+ F¸NÑѦÙ4¸4— &R¼JÜ‘JÈ9¢°UfœßD‚ðÆ›ù §^2 ¼ °@º›\¡Î¬™Ù”šÛ“ÆýR„ºaìeÅ…&Š«Ut ãcÃ#6~+d–›¥ªh«e™Y¿é´¢¿^{‰©$ì1c$~ò­K’(ÜÇX¶ÒÁ€_c¼9%øn¯$¼¼¸Éè/³18Úy”–@M4}‡4êIíhĆvŠh|®²ãS zU~A('›*0ªMVcyƒeRZ³‘ÉÑ–D&+@kŽºe÷´R`7_šT@ÊmG Œà %aY‰âFcG­P;E]}qX×ôÖýYŠ3Ú=*5ܨC9Ú¢’[öÀ¥O>º@æS@‹~„î¥ð« jlÈŠ4iA´@(ÐgÓ€{EÛ”¾c÷ç•\§¤°ÐUØÇèÁ²§ÜeL¨ÊJì³ %EhnqÄ ?Ã;*œ›öF¡„1ÒÓ†0X˜Òz³åãaP¶‘) l²¦ÆxÏ×!¶1óèQÏq“¾aXI¥F8•ÿ¶ŸÚ/ihI´ø4Š€7-6 4«¤™Žß·B½ cÝîã²X|‚8º¡×§ÊbŽÅÕˆ3p˜i×5•„í¾H%ù…©ã'킊¿Ù8NÕgë]X®âþ¥×ÊŸ1åUcÍ…¯–¬°f.²tkâWnq—º Òáó¹Zž…f6ùÙ‹NPíéþQ*q³ÚaKI>Ùååi¡/B¥!Hèu5òcÛ–N¬þ©ä ˆAr4˜*²PYqŸ\ÒvqAÍ94a¨±Dì•§;~­±%Ý̧çs=p—×Bx«ê‘î\º“²‡÷B%.QÒF[4¦˜‚dz4ñ¢JŠ6Ùg"™¼¥Úèiøá‹§BìöC‚gÒmÿl¥KW ‘¥ZBØóRé/ ²R´'»ãØô¾Ch%6ð6¨ßÄ*R£Ë*e ¦ýŹ’ ´›ÁÖY¢Q]aPXþpq:½ njý¢Ô²OWù?Åu%JÓqÈ–Ä †øÂß&XÜéSèS¸C¢[ª“¾)î·Çzó"l¬“ìˆXaÜ•=ª¡#ÂJùº†®À}m¾Œ)®-;¶ÈPÞªJ*¬Õ‚‘S²C¤p†ÓÐê¡?Í?ÌQ’y9ˆR P„<ˆFTÓ¡ ý.7­õ‘ùHYèî H¶?Žºº…$‚ïùÂwÉ/©â¡HÈ*}ô^ˆñnZº©}dÔ/˜Qc<ëé†[™’<ÇÌ^A”ÐËCI@{pqæôLR7î½È†Ç3J´±w¦;_ÆgæwÆäœ“Ñ¡ ñfôÑZ÷ÎÄäx‘e8²ë˜ÞY žŸ0?Žz—ß-!T,”ËžûÅq6Ña¾%«BeZÍô4„¹“^ØØ¨ ä{AEÐãKRý“0˜xÒŠ(„”hœcädnç)“*:]ÍÚ|ZvÇ­|\ÝR½'TÑN‚©P8‡|!Añ±mvW¦‹v%fƒrÙA®!ØìCÏÔÌöJiTk‡®È` øä…C7QU<’©â;–|™‚i¦­&êx‘QÀvjžÐl}.aÁVMŠh…’|R-C;Y»S9:2VaG0›È3@ǯ¶Ôλá_I‹ÜâãÌoRªs(x¶F5bP¦Å*Äz¢éN®- ȧu2-8xøë¦©AY&¨‡Itñ°8“iÕ†ø®Àƒ´¢ù§ƒ_?Y¸Ê˜º Š­PÈ¢#RB¹÷DªŸxç±zè%èDíÕ òË:e#q¹É˜ØTÝ:0m&ù'f2ô:Z¿”CoÇ—ŒC´­9•²ˆÐBçˆ?,þ;c¹2x«rp@ aÀ-Çiè?G»äcNo—é¤Í)Q|—‚"}•[gÈv£|IèogúþG²fňñ ;>¶@!†–CÛËJ®ÇPÐà^Å'§»õVmò4ECdât †@ÿx…”G"襆†õlA¤¬ûòÚä¸vRhñ©®e_Ä^†å¨è¸Öš5Ï”ÏS1nÜ„è¦_–øê ö˜lâ•äñÔr˜J9HÖnÛ¸`RÝŽÄr¶&‰^ŸV²”È÷zLSä—‹c²½g¡:Ôíù•6ó⪒ÇN³ñ³) ¤ÛÒ q)x(t8p<\•Anç$S­ÊNjjDì|Yññ(“rShtpÏÓ0j*Q¤Á‘GÙ3þHB§=)Ɇ1*ÅÓ´¿'ÝxëÛ™%ZjXóQòP« )y†AwÍî²tÌ’=¬)Ä0<ÍzkU x1QÝ.|S’t#%©Ì°âíØÌ•Ô“Û¸ šé6³G=%„ñÆ‘Wd¤’ÜÑšƒÃ=½bp ëA]PÆGP}:âUƒ¥”(ª1M² ò××P4סŸ¢€“]SÊÀ%6Rºá r*ŸÖoMKK/Ò§±=™¶`´ŽÚÖ¨#7›?»ËÃØ€²ÓIÕ,ˆADYÇAm&€Fñªµ'™¢{âÓI`m Z4Æ~ ¹†ŽÑ}Nm$¦×Záë0îÍ“OúòÉíLßÿr³¹¨.Õt¢²ª„((³d¨—Ž*!SŒ“šzäoãoÈAL‚¤J¬-{”æÙ5¤Wa#F,‡I“è¸Øˆ„ïŸg6ž‚ëi1Bj¦Û=º‘³Åc¢;šbvãMƒÒÒ¢´&z}\†Ù$tn6ñRÌÁQT{u#FDZ׮½‚ÌÐ’ˆŸG>¡?¬››Už¸çÇÌG%²àǘyZ)¶2=©’uÌ|)"Zj¨ïö;M>^Z¤Jª–sQ«ìÎÛ9sjicÒ¦m¦Iö%F5rôìq*µá ¸ìÌóù%ðåÈë‰O»a9ù(Wé“Oxòß6C“¥£ú$•íé_d”F re—…×h6¥ôIÙÊÆìN"€1Tñ"£†JOÛLjv¶¢‡À(¡¶J9!tä9á£ìð U xõØŸnVnÂm¥@À•$ù*§#2¶£•Û™«~CÒPÈ Q”ñ0äsI¸Ø™|=r$ž <{-"Iü‚¹5e>æPN$T ã¯ôÎÜ2Çÿ Ôö—E³º¸Ï2j‚ãß 9>YB¾¦—‘˜`£€Ùd5Q{Ë)&³Æ§t-èOWsÞYç“sá•££ ~ôÈòòHÅ[F<ƒ5r“X¾C(¦Š±™ÖËæF®TÕŒæþIª‰Z…iŽ•éòëÛ>‚cQ@KMG$#&¨ã@™ÇÚ^2™tDɹ®RÚº"ÙFX¾ ã¾’øÿö¾l–(8¡Ý2@b‡F”Û¤»”MG¢Ks·n±½¨>hÄ yµa²”`Kl³±-Jf ²u$/ ö)=,@èà“&ê³_¹'ÙY¸* á;ÐÚé(™õH—*jÈ|ã×*tQ™uÊÇ]§‹pîqÌû ¹,I"Ž•4²ãâ¬ø(’>d&¯°ôd¡¶Œ¨ÐrET¢yÎu›Ú(8ð« OÝPŽCÐ@Á2'å8ì_ãåA/’d@8àé˜y9§1ŠFEÞ6ç3î"¿õsd‰Ü —9©SG«M¥Y²$MšøÄ¸(„~EæÍT•HŒ‘¦U ZS•ŒÜèY(ú¤)ù+e\w _˜'ô)õQ¦µ7?‘qÿ¯ÀÈ™n$ µ¥A‹(ã‹GegÊM%NO´¢²1‹¼œ­CÌF÷ŠÛ¿É>¾B-ë·‘¬vŸs=ÒCírz>™û/à{l¦Ç7µAÙ{V_&¸}q*«D Ð*L¿<rò£Ì&;±5üf;â õÂtéF!í0Ÿ’„y<…S©"›1vÙ„ M‰o%è6ªìí½5KPâ@¨)¨Á¹Ž]E‚­Òk2öQ)Ü}²}\·S_°ÒžQ”$Ø÷>=æOET¨ñþœMU¦3cì² q¢tNn¼È':Y^HšãŒ‰•ñF<šmê‰!¢çƳâbºÏà2V©‘¼žF)Jå§\IPŽ{¶WG¬ÞÉ UWvhâ]ŸáY¤gª–²M–øá°‰§ÄÝS ¹?ÇLz+Ð$Xø©òÅMÃmfŒÄÇQ  \!ÙÄÚ„lvQzªï²³ ô'×`8v}®ýÌ’w²Ë¦°ô¿!GžEYíRoB`¼?äN߃ұÐIP›LvíÅž¹õ 05tB&½)2'5º¢6½(jRaÙî«?dÎzâÔÀ`ׂ…RªÖÄXWÍ%§µß“§ìµr;äÛkHW‘ohåÁy²$Õ‡–`IªÆ“ÔgþsaøÉ@«q±‘‘2:¦0p+I€™ò‡gp˜m¢Î+m²LÐãvt4iZ‹åI QTE†V\»–ÒÉüø‰¹]ØÏ-l*cTóõy?Úmà†U)\˜Kñø«¸.GëȺ ¼Ú'”—2Žb[é’ÌSûq©øÎ­æy³c8a:£%ÕψË#\ÉÈE™•“‹çL©¾l’™“Í—M•+Þ7ËU­CSäqí’átˆ\r29 笵°}€tjuÈ¡à]ªª€£mFè+Ü™ýfAn ö„‡ï5bõoNQPr ’OD'è_hGô’:}¤¦8«éW³”ôuϱ«OW$Ú*lÁz6g¡¤øÕ-Ä^Â8Åß ‡%d¤lY‚u–Q"ØvÙ±îó6ÇÒ38UK QÈd3’€æP‚pýFÌ”Œuª¡Uô äSÀêñîסT:HVc˜—ÚeË!4ðªRjäQÄ|­|`>|ç;O«ÊÔRäÍbl§˜ÞA•ò*©,Køžm¾_[adÙ)FB•ñ˜«3ãÎ>>é%3éà+†Fk ȲI ¨²¾N Fú‰žÄqü4ËŠ½>4¨çÊÇ«#ÁÈ(¿^6J¡ðy“dQ T¬®‘·GùŠx™3žÕ-ŠUdHc"ù#òêÚßP~-‹:ñ½±ÿŽW|r #„kƒÐ$醑cئ¨ß5׈6ª½M=r}œ¸`K5Tê§Û‚ž4Ko“˜~) wǸ^fºqÅE.g¦°$«PrŒçˆK"¼N»$š54RpÃß#TÐaÞ†hRÔ+‘"¥²>éxí''¢ Ñ DN¤Ír+)”*ü¢ÉšCÎÀ†î©o™¼XîñyÉñ–ýÜÈ›Äãýç—&‰«luÔb ‰€ö’s0à Ãu,¾+ ø¹cæÇÅ;o¥Í1£ä±v1·!ò11÷‘füy>"Óø—Yün%'0¸ÏäWñ)uuùK„Èsø–ȽØÒTj ,ÅÑPg!æ²ÙñR«L¹2×=–Ÿr9ÚŒPÔ¬p+G¬J‰â½€Á-ËCÁ*†æ\lòˆæqRpʬô Jbü¼tZ)viIª©Ãì¨ß ôzo›÷Ô„'šöFЩ†Ê/&4]÷ÄíGŸù+ǧb£¹f<9æ<›1R6UX*ƒ5k°ª#ЮɢydáTºíHêOTG>ÐUJy\°ê¡|œVßF3@ èÓ'D2?-Ô¾wë)¶¥²äìKu>=U#®–|ŠŸdDè ª Øâ3+¸úÐéïN €6d:ßÐéÜ‚•xâ˜I2‡ž'±ká”×¶4š… ¢Ðýbÿ·ÀK«BŒmÌEã®ø”IC,ö„¼ |ź§Å·g†ZÐFÒs™Un%Õs2’½’p2Òår±P#ûZ8Â|ùìiSÐd—j”ÇU“-e„)JžcÊHš×p² ÕLN0($¼ž^ÙRõhc(ŠQ“‰WS‘nuÑ%D¬Oj#*qrò)ÔOå«õ+±‰†e=±7hX­>‡Ñ ²‘ëÄÁ ûþ’úáBxFø© K‹£­'v—þ£üŸ`¨}1*ÿ˜ ªzíŽÇM¹Hf”n?¡¾ÜZU È©áo_ÛÅQ²›ؘ^Ä…Ñšñ(évÌ@kM¤¬ˆŠæžQ•2ÑsÀX㢥Q!öñ‰;¢…&š …$SÆQ·Å q@JÍé#˜¬z6TÉOFXP•èd‰¿`¤Ñh߇dŒß"ò |fÓ%ŠÒb<Í?L«2!T4 Øñ;ça9 Å)(ÓÇ tLea€}i$n´¶ ÉnÀy^Ƕ=­<´ºLydøß#š c •úÒÙ©’Þ2ïñ“èÅHº¥>C)$è™ Åg…"F4d"«»ß\¢ÊLyPb¤¡Ç¡L„G{e:1Ý…4Š4 ?!3(èpZ+DbPúŠ|àž(ûhçlž¸š„¼º6µ×fœ i|=WŒ;Khƒ¶A³Ó… pRn„îLÛ)Ø¢žn£–ÈRÉh aÀ”c(PR¶¨±Úò‡OFýc²ŽÂHƒD}xhç’ çñÔ c|¡©%P’{â+j±udHì.ã3„¡ûº÷@:#%•„ §òä*±~è‹ÑW“÷2¾„×’d£!ÊjÚS£ªømäˆ!šìëUGó"Oyï»*v€ÈñäÞ~q<ðÒSl¤†Ç2û×¹¦P¤‘iÌÁ¤€ß(ŠM0Ú±¡£ Á ~<|a$ÖÄê~\ÇãþN²†Q\ôÅø÷´>B‰ø³R•ù ¹9õÈâ'Sæ•ÏÜ%Ê`³»Ù ’9d$5¥~CÞH¿D–Kßå$)ø¯“W¥ i‘Ä*r¥2±ÏW4ú`ÒÔã#Tdz±õÅ>ˆÐ¯6ú8N¸X†ôO è2ìÿªžeG±è÷ Î¥èH’vb4ämƒ‚õ¦•Ù#F„îÎhÌcØ( ýV‘j§D5VRIÚ“Øý‘÷® îS·•»Lºtà}œaåÂRÒÈE*V†‚¬Cö ¼íÝnßÃ`Ìw;ZžÚœ†<›íúý@Z€ø§±¤žü‰ ìhåjáЮ@n9ÌçZáTö@#g-Åê©× ºèâÐÐÖD²œ|ÀÀc7äI§ãó"}ÍJœ²¬³Lx¹0YÙÕ$°§>6a2 äNlJ“ñ IÏ>N–/™2ÿ&Ù°%¶¼àIí±é\\Åǧä_Ž›Äxv=‚E¤=« æO¼†,ÔO& pØgÉK)4R±Äúc°-<­™gó.{?÷ˆÛ-ì¢G­Ä`ÎÛø(;q#¾*tJÐŽ"rƒLßÕrt@Ø×bJ õØš„мsØ#(/íWÙú“¯_âRš+Kéˆ*¡®e*‰,Ô‰Tµè© Êfê“ØöˆQ(Ççȧ/ãÃWZOزكÒ~G¤¹05\±;ô‡Tòk…ÃpÍ8Ä9£Ó·1ÀèÅ¥Þ!ååVÐè„™³ññ;òg£ ]LÈ#3+ôÄìùÈ17b¨®xl²¿!4‹yÔ›ôT‰tO)uÖ<`…3b²3–’^^ÞvŽÁ§SƒJŒŒÇ¡Í875ņ:5²Ýå Ø2G.Ë®¤òlJ̹L[kŠGó¦[„î\ò'\'\—ªô¡%6»>ƒ7<Š p/^$“Õô({^Ó2û<>Œ°EU'Ò¸RGaÁ-ÚÁRv{K–3’™ù=HвS¯yT¡jt¾ÕŸºéj.¡–„jÐhÞ-Ì;@QÏ—Bç¤ÝäîÀjÀ2\Uhàó!˜"V­ú–*üM–£€ÚE,8(Y æJ8™,TÙ‡ 9™=¾ñãU‹/LÊL!Ó;rŠEõsÆLÈ—ãžUFoft}:Q ,ñì2ä4I˜'T˜uçÊ7Û3ØÆZs“YbåҕɘQÄ×9±“ ›KPõ)ñåº|½Wð)ŸP<·¹?^#u8©†vÊù1ßã§ÛŽ<£±(CÒn™€O™®–ŸìNÉGpà¿B?p¾9§ÆS÷dõ šWƒÉ—fÆL<'a¢7ÉúYÜ ÒlWl5Âäv‰ÉzVmñ= ûrÚâuâôEB”G 0 ŽºNuo=l›Öëÿõ[6Ô1P8}^á(Wa&ʈT)1 }œŠ¯ìXi!NuúÄ•î:{ZØô^e€cF¥FÚ]È¢m¾>÷>×$ÝŠ&ÒL¨k…ú‘’OæÄĪQv™ ¾+´ñÒŒBý–gKXö 2[BÛö]G'O'ÿœhá-¡l]ñ; ÌšyÈõÇrßLvqT©YåäHJ´k>58Ö Ä˜$Aj–Æ@1æ%|¥`&Ruü”^e®ZºgI“—¡ù+4E¿„©%;$§ ‰Ã­†X…« 'i‹Ìœ?É)€“11 á+ȽhÄ–ço¹ ÔÚ>@P½€ÆÙç4âSVzöÇù ë˜xx°ÄËptöhXú)ɧÛ\+®ß6CqN‚¶Á$ð{(4×=B‚CEddúdÒ…-Á1·ŸTRv§\S¾öséŽö²§¬—ÚôÅ‘tyƒÊÈQ«¼½ŒvÙa=eâíˆt=Óžn&0€ b^kJzê7 ½îD:(!2 4ÙIò#ÊÅ43´?|lz!U(êäh¥;r“SÊzv£HÎû/˜Èé™4’fFáÍQcûÉ=¾Ä‚yr‹L?^1°Èˆ¥ ‹c¿È·ŸSxÈK«þ1@îšÐ@¼Çeñ¦bŒîâ#óÉÎs,"i…)‡Ìž „“#Ä–ÿ²H$fŽ®“¨æ/Æùxø~:$r J§`e¼ÎØ"D”š¢¾d³N$ì¥Ù=xƒI¾*‘¾@õç“ËT´gHüŒÊe¿áä´%žÝ‚ʼn'£µ’  UAmÞßúOüXz'JŒ¬ØZé‰W k’b>‹èPŽ7À5ÉúQìº{ú#{Øcè‚Ê [ÀBÔTK8ç`·fiRz ônËWV›bŽ[6üzcÒ…KìeZD pJo–_ i©ÍÄ¡OÐYɇ)–¬„+ÒØÓšà¢Ok.D•”Ϋ*Î`„,€¤O[Mû£KfŠO1ö#&ØÒºc.§O­9çžÆü÷s—¡%µÊtŠ+ Á‚J`¼%ÊfânYv½J£O’ÖKÅ~[,¾W°žCÊØL¥<'ÿg8u”0Î{»Ð¨HÍAéâ+3fÊ)i– üS¡—Mò§G[àâÌ’®ÃŒ¡¸NÊ&• Ñz pS-3¾œ ~¢I£A£þ|¹Ò†`û„Ò#qßc®É#k{QïÀãaÿ u t*z¨~à¸Úò +މ›“pUXðì·Œž1Ú Ò"vK.’S ¨Ýš¬ž?Ç,”›q]¨ë†É7ËÇì’s,Œ0 Z¦<ö–Sþš&ÙYK!GS™KuA«!ëO‘ÇíÃAÖêÉ"¼O$¦ðäï+\kÄc¤õÃ’¡ò$CL÷ôãOƒM䣀jbjDƒ(¤DÑh-FÓ‚äqe¬4‡…<ê„Ùž)Yä}ë‹Fíň+Rp¦,VæUÂ>5&åÚ˜ÔÈ>LÊ?',£òtÝÚ~*›˜¦=á‘g¼ƒ¦$BLãã=¬Ê–Èp“Œ¦Œóó`Îì¨ù x×ïÆ;:âkd§…(w?¿>û²¬Yt‰>ç6Žðö„v'`8'¾5:òÎG¾(ö€Ž©uEÑ'è~©)µ)貃EÛdp¶Áål…;èx‰®+®¢Fù ¸ÑGöOg-¦L€…j´ÈP¿^$üÕ uuëÌJk˜íF›©z‡V‰ð‹Þ0ê +T'…ÈýsNéÿõA pÑiÃ}¯ePÕÕL¹)*ñqû1£O?"Ê™UQU±ÅfHaÒÀùr¹”9º…Ôßã@hÓ²ÑQ1àdi(ÿÖyÒj¢¶ïlL/K:O¦&?NeÍLã?ÍJãOÐM7Z~=è‚8MÐ`ä?“V9ƒê– _1M¢äªžò²Æ×Ìk”—är0ÆË¤¶mC=TlÃ\lü†GRÑg‘3‘o”Ç”Zà'Ø#G^ÌßhÈöhìã(£6I¤–9BÒc^Ï®kHÌ›m{â'‡gþ§<ˆèT¿•‡ R„Å’þ‰=Ib ¦a¤m”S­ ôO ìéoXçLÃt €£\ #ÔÛLÔSpæÖé¤Ã,iY¯D:!þäk€m‰VåׯêÈÑPÜf]å b¼ˆ7$I˜ðöDtBºÑÈN€T¡@õ(<òI}­$„òÐCêCa!èžÈ­Ö¸èB¹g ¾D£2wÈ &ëŠHé?¯¨ l–*[¬†¦’™ †³/E)j¦ÔEgùQø™bƒ_(ÀRz^Uû¿«Û’r¼Å*s±ÙÁ†’5ìÔ»nÇ"þF†]ó€Üo(fS3ÓÛ€Pƒ޵’HcÏËøû®Eí*æc&;d[i¿[ßÐR¤ Æ ¯zBcèúH†$w;Û&~€Ý Ñ·E¢w/Õü÷^¸¾Âú5VìË´Oh mÔ¹ïS ?¾´Ç¨oaŽÑ =…R ö@÷½#‚AÑá;;ô‡L[OÛˆ6Ïýá*4pgÔ仉Xã§´WÑ•¸‡ºH¢éj˜ãÆÇêHÝjI¡”B¥RŠÃvBŠZr Ü «©‡GÀ§•’dNUžˆÄ‹ÀÁÉŒø¯Õ‰)6'ü¸I°P„Z£DäOìW*Xö ú¢OÜ;xi™ø×LùÜâ~Ä-ãè¿“ºÕæR¦îÃåØŠãä°7Ÿe¤€å:Ž9Èr1O˜æÍ GÌÀ«“'–%2!SŽZ¥‘”ÒÀwíÌêVÏÇpiáe¯xcVXÅj‘ó,Ç•ôšÙ>•øŽJ éb¹Iö(ò›++rLC–µ4`IdG,À÷¦öjßl#{H‡bc`/^w è™ùǤÿ ]JŽ6œèŽÞéýVØÖ¸“€—:Ó–Ò^¤°ÐØQë~È<ïõF×è„Øoc;QU’ŠÅßuÇ=Øž¥_D×td'‡·p}ÝŠäY¾Èää¹PèÎêr-MÓɾØ”W¢Yˆ˜÷tPÑtd¡©æ;´*J˜ä@ù¢UFR.Ö‹à§`Ȥ˜¯ß1;&$æ©Ðšl‘ãr K<St¿È(qÕ_‘#µ*QµÔˆ –µÕiòíÛ+©EMrlúª4ùŒ $èü~JE®„™ó rX¯ òÈ&ú|ÙÑ_-L Þ’“ä;Ñj‹½#bôÅ|aW¶RHXÑëYø£’ÿ,¼A®Fõ“$ñn+0—ÇTŠùn•Bˆîµ8n(Ó‘›I½”!³a9§`|›yÓ¨IyM$¡Ë·dôÖuÊ+)¡¾6™å¡ãÑtè©Ø-\†ØÙmI €hÇ•bI¡æ!,ývéY’àE€BtDöN‹™Ë ›Ù™áŽ%7 îó9¨b¾ wÏ¡z/Ççîrì)rωíÝÊ“~Æ´ÓÄG£Fr¸‡ñøi:&–Uò%øAÒ^ÝÄþõ ¨è£‡µ'I–kô¶^^IÆÁÇ~í'̉ǔ¦ÛÏ 4±û‘¢´e_>_³Oð= h†öv„#EHª„<¬Õ88ÙMŽ7®d'—Ö’pÐ$‚J?èΖ Á´ˆv™P™K“_:ï}%Ãk2M-ÜdXïLSÚ¾‹¯™)7 3;ˆ·n!gs7î‰>Zª2-†ÄcI™Œœùê = *Š4Ô= §„ø) EatÇ — ® 6Í^už˜Ëý3oO¦E)ÕÁQf¯gFñùxŠÇãG™¹„2…'&$ä'’ôWäGìÈ‘#OÐ=A \ô:,  ð WGnSòv;Q–o@gí6ný–@¿ ôE˜ ”Úƒ¤ãjŸ­ ôk¥zë‰BBUŽØ9$žšç—¨;¡Hõçߪ{‹¥á>ÉÝéÅÑ,Tðk÷á §ýAG²:p}y3æàê9"„°u)‘á Aw›»nsô×@xƒ²Y]F#i뎺@Ý]JÓ–n Câ5‰©õô‹íW·^ ²š–‚ºà?ƒwò)¦C” Á2Œ#TIâæÌ\d½gRFgÈÙO\'\A¢ `qNÏúí¶é%á¦ÐÏtCÑ û”MBP’x¿ÁÿØý QÏ ëë„û'Ù÷ÇŸ¢¿T éRaŠ&•tÊO¥±ú¢îÃ\!‚'ú¸«ä³6Ýt ™Û.‚õ¿¥ô¨;òÇe'å˜FFIž6Â6ä¡OñS}“lD¿ýÿB„"O$0ôÓPOÿ:uJÍŒÝiº&3Ñï/"$¸S\s¦ObQZ´æó;j‰TSë\r‡ù"Rê; IæÊò ¬ª®—ø2‚G˜÷ðË)….[c㱑Äò< Ì›Þ¢­ªS"›à¿BÍä]ó¶Ñøƒ¯ñÍ_fg³Á|\É2`ÁSŽ*¨rOt¿“’b(gîS'˜­×¾’î–ØžÕO Ü:EqØ’Fʨò“F/‹@Q—"„í¸!̺8>‹ ¹ìv@£,$7Z|÷™JDK0“¯‘h£úÞŸ#Ø‹hdÑ›''fDšM/Ù&=ƒÜ#+C¥¡‘íÌ"È’£³ÊˆB]F¶¶£P|_A$¥óÉ [³œqóɇŸ@!zäfeåÄ"‘åx¨L›ébO£ìð°èX’}GiHô¢ì¤õÃ=ª² Ø1Ñ`ÄïïãõAé| •ÛQy¾ÁØ«¥ Š Pî[Jµ*÷zvrìÉ]™‘΄'®3ÌiB¦rvÃj_Boî{ïýï`zà;$öáúȵ¤Q¡vèUdŽ2:6>Áì|ǯGOúõŸuâ,Óí˜?|)OÖÒ¨²ýŠö(uìsê@!;Z¢GÑël…è=žì¨*´× ÷ìKlB ¾oÊ|tDULµEÈ„Úä \Œ aZeM!(AÝ-;Î)D ÕGú$؃èöô&äÏgž ͸$ì’(¬™LlŽÁÚ}Q¶ bBb©M¨× rQ‡“"Xㄆ=2FÅ<µ”ÇvÍí"4;¾7ÛŒ6§ê£øN {¤ÙUG×(tK1}c³íƒ#(¡,£¿ykHíÜ®JƒA=tvKlÏèÕ÷5%th7ÄQÄêTÔã²Æd’ÚF©]ч?œÄ¢‚OíÍk€ûÁ:ãÿ%0œÉ›Ù!éVˆ>D‰…Ѫ²93"¸nQ%ÐÐ8LÙÐ1:j¶Ê’;%ÒvB½í=ì¿IŠlo|_í–„Oø–` l hŸ|#¨@I+Ùˆ×÷]R¬f0KÂN W¬§³ÿÌý˜ŠM–ÌhÏk“Š—LØ Rz)]YÙJ©,t’ 9* ÍÉØGÚeð’L`µ9aªß§ôë| ­<H¯J?¹±Žî F?dfªC6(\WpQ§r–E"‰TÅh,psz~Ê ½)šãè~¤ö£žŒ…F2†kc¶ÿ ìC|2bg¢ ^£øÏŽÔØ‘¡c èá¹äÅeÁò›ãdIã‘NÒñû>¦[Ù£Û°ˆqÂá¹M;.Á 0q ÔÆ!ÆŒ‚ÙCë¥æ”ð²SÇkŸ¾RÿÙIu[èÊ}¸ÊÀD”Úu;=¾‡Òëj¼'FŒIB*ƒ£ BìÄm'¾Köq§ÕChì¹&Œ@jLµ5i°½ÕZNʨUœ¡_"„îWˆ†œ2 >Äë”r}JEÈeQFç6b=qŽÙúè¦\3×5Ò’Û—;š¢ ?q&ÚöØ)²’Úïï÷)*€b@c (HlT•2"?"¨øð¡Ø#Ù¡'Dâ&ƒDM¥ÝDÖÊdAYùkl~Ã|M=Ê•¸Íä]©g³£¥*N¹ãÓËV{Ð~"™÷ŒuY$*,q IHwÍ®‰ê7Bù‹Gó-šä¬8{3ürò¸½A¥5ØÚMº™Ï³&•¶ èmˆÒèŽÁ¨vvõRNÀ$*qSg¦¨\ “ %¼Óã\:ÒŠÑÈœP¡…Øvɳd¢6°•{):A¡ÉËÈ€,vO¢È ðzäÿ€¢§“D&œŽOühY zíö?éJèB ŠK2¾Ôl:FU´Õv¼E=37©»h½Y΋ÔͰOšâ—;më…‰~¿äKuвꀂÀ¿¢7E»bYˆùu"H7<Ñ!¶”ÚÿT½š3N´tyÆè†çS4"lÛeb+;ù–Jù‰;9uóŽúá;U÷È$‰PÁŒûºyñ¯+õ)¤wjÐ4¦! ü0ó¶Lñ`¢G-Q5¨o¦U¯ˆøèfå”Ï©rz›“‚‚AÊk'Ö[ºÎwzÆŠäQH5~å·› ’lâ]b§*”-F~³0 ç¾(ÙÐu3,Œ™Óid°½mÝüÙ¶(B“eé˜ä§Tè UǾÌ8IÐõìÿuèzⳕ¨$)tíO³_c_B›žÉnCÓÒ!÷¯Zr[ß6‡²éG›† Áç®è· Aâìp?@Nc¢}ol©¥)ég¾Mý©ÕOÙ?ªªBo°3jq‰öu®äá?@þËidfNKvÅÇNȱ¬rÕ¦/F2ð‡ð]²9Ž <ŸOAÿUÆ+³'*9ÆñÍ^•-7PàÒo|'Ô.»VsíKna]6„¹J2…¤ö_hÈò)˜«<Çj ngxœ‚:ãy…Ê‘›Ž9b`ÝГƒ@r.Na`ÆÇh­8âøÅ]æöß•†?Ë"•/¢ ‚«ð°¯zZM' ¥Q²“´;*ÝyØ‹¸úÌRt¢-†;¸qF(ŽßÚ\'Ù÷À=k|ˆâOÒG`I AÁ°#C– {›h‘²NÁ:Uun¶-¢Nùãß…YNÕ˜:¤ÀàÅö«£¯LtÅ·Ä$^ÈB†UêÄ‚wôQ°ŠÍ]Š:œ£´R:Ržô'4 ²uÀtmü_ï} M•”%G‘”ÒË‘0‚QÁ•)ÝÚlçxe¦%â¿ib–1HP‹vŽÀsª:3<¡T µyôæú“‘RæÒ(.¤ÊªSó MPÓÓ”îj“OÓ{S­V½¡Ó—êÔ#Õ4¦ÉBïGpŸSýtH (ÒJ Â¬Ó²däQü—ߨh T¡Ð>Í÷Ï>з¥:ð± ²JP¯*¬P•  nä“ìúT³Ñzo•2ˆ £ô¯§³j(ìD^1ÙÿHšãv_EÁ÷ÁM…¶¹T.[¾§BÆi· Õ:+¶Dû$ö h“èÊGWÖ/¤sZ®€£ ‚ õ¢P”Ñß`uØE%!}B¬÷´ÖŒŽŽÑSÈnNÛÑI±fRNÿ¥?ú?¾)Ùf’eI{L¹oò¡P!¶dr1ƒ[†ŽD|àÐïõ¦0Ù­; /’xݸü’~d[ìÖê³£4ö­<ñ눚š€ƒEqX ˆ«ìÐp ðã¾çÃÐcew¦a£ìRO¾U5ñ%¬sæÏF©:2<@‹ ΔñÙ§[㙼ÓØÅ턱٣!šb@É‚†!zliNÉ í}Œ %^›øòêtO$ÔÜñÝÓ(¼µ~„íêt=ß Òƒ¢ƒŒ@.ûâŸj5ÂA,äTïÔwLOï}*’C?ƒ®¸jNÍ¿´ ì ßŽ®!²SÔ¥îåÁ4Ø6ïÂwÀ¼Ðo°ÃÛOE±#c[Iíi¯fž)¡rgA‘’}'máú¯ðSü ØV^›=õfrJ ŪˆN`ð~Õ…62 ›c“ÉQgYSfÐ¥6Á€LÃå®:m2 ŒQm§Lt¹Xå–IEÅÑ8û Ÿ»&ÜN °Fæ|”üʇZ1É›»Ä©3ÅVkô0#'™QD,Ìå¦Áˆ)É6Ó!¤”ñ“ÐäÀhM ×?ÝR_êeWd¸*ús>Ê\Uûì)NÄŸL6H>‰váT!§ÔI—ÇêŒLÐúMl”\®'c=ŸðC{g*?W}$Ã8\/v/ٙϲ‚>Õ¢kŠ~‚šëZö¼'gúP¨rtR­2ôbth‹G^Lƒ=жÏv)Ø‘Â@R6Sú¤j.µØÅB#©I@_×p9¥!“è©®z-×|«Ûµ7Äm’tUÔ³ „ µ:”F¡RA:bÇMß|/®Lá ^ÎFÚ}CظÙÊà T’Ò"Q+o¢ËG0øãz¢FE¡U$Ì¥ªIB‚‰`KdÍt™4GÝòÇ–IFdöÈI/9UL­piŸÎ‰cЮأÄU\ÒŽ«‘‘E#d v#|;$ “è#v2‚–¤_(ÖzP»'ßáö{Rà#v%q•4›L˜¸áê9;¢Ï"è½HébùH(áÂÚ1PÁˆ[0gš¤wêCfÄñv >·‚ƒÍl\#Ð*Ÿ@ýˆrŠ¥_“˜3 e(tIìQºÛ6]º>Mqr4×c€u^êw(J£Hßn†{t¡‹ë¥;+-‹oh˜«£#0¶§¦a®@¡D*Iþ&ÉODÿwôd¶‘ÑÇ>4ia·necNˆ°y¢™?/TQJh–[C&gñB.”»–ä™O.ªáp­7êjÏÐΈpXKÈ]eèyâ?`‡£äYˆ—pYÕÒeAéÚ­ŒÔ1„ë fQ¶fT=Û{'„¨@9½˜OµiºV'¹¥©ˆX½|[æ*‡_\Ú†ûÂO¤¦ˆcÝ(ÉÁF<-²=7ÄÁ&^ZÍÃõ£Ñœ¡ íöŠÎéI>}’Á†¥©Ùúv5 Nù½p„_D{Ö °V>¹%Ò Ñ„ÑtÐCì>ŠÑvOrÃG[æ½ù>‚›â¡â’ºDúŸ'®Çi‘¾;ï†}¹Ih„ÙDÑWÑ$hOÈR~>Tþ´‰"`!'lÁ–ùPB!Ò“±­/²ÀžoéS¥B7h# ¸ •`ÕËÓå30° '{ƒ ±¯‡Š;I"µdðBTDV’Öš }”,eb£‚žßw@&ˆá'ÆÓ—Š{G±ü™Ù¯`´R%⟶4ïÇ~ΖV¥Ç–¹,.ÜÃU‹z#ÙÞ‚gê™Ãt•|ïP–iœ¼®Æ…Kéä«×€öRT_EÐp¾ÏÔñUhÁÏûZ82«‡"MÃïÃ9Çø2œq®Ær9'¬ôÞ*q¸NÌ`IžžŽ9%†B¢€v’fŠç£#2˜>Õ}òuñÕè(Y})`¤tô4¼sܤ´Œª8¾Žþ‰é;¨(þëéx’R¨:0n!×lIFüzB4=Dé 5ÇûvSÛ¼e@söà4zmˆ:ðFÜÜnpn´BÉE … Ë›P•d £¬³ µgGciÉä‹J )”×vuf¢°Bˆ%ö^¦·^JƒÌÃ\M%ϸ OÙZyûŠõ¢ã†%`€´&‚­wÿ­Ôm¥6§\v½ú³'¢5ÿm"ýKÓÊH×068OØÍM2  ݘž°OÚëDèñ@ L… BO®èþ°<#G[,ÈMòáþ¸ÐÃÓ#L"(\ÝRêŽÛSɮΠ‰(ªök=Çæ«*þLÖJÍ8P*!» {š3¡‘ò=ã°'@LØ»âLîœ#`‚xPãÏÔ+}Éž¹¯`l!Ñ€'éÀ»+N…On:ì¶ßõIý¢ ÚâSdö t§ªµAöDô‡Ò¿ñ‰;M}+£Ž#èÙ¿ìcͬzʲî•ÅbL|!(A8ë6¬»7Ðf#‰÷oq&‡§`}’tCP:/쟭uò±3ØhæGŒB…fêµ¾d¡¡Û­M;U¯°“-YäëÓÚQNI#¢½„_¤ÔêÊTլ°³AëùÂx?ª7ÀuÍpð¼ 犊yWM¶#\À»$oŠ»4ƒŽ’Œ2_ñþ¡é‹Ÿ6…عoÓ[’À’ŸÊ®6lé;RiÏ›3ØCìÍÃÿæ¬1m…æ”ðÿ.9± í||3œúNÝÒŒáG²7Æ]²º ëÊÜ$©úwß 1¸ØZÜJ8X!pˆ(K‘؈¨v®«ÒEjl¢íh;põQØÁIß Ù_뾂 ©¨òh§zð—+3©bÓèƒBúŠæZ_‰€jý¸³vÆx~;4¤´f”‘Ë7ÑFv *°ßôN¼4äe>!¿ïºÎ£·1öÐRX}_!€ØàÈñɮʕMtá;5P¤I‚ãÍ –•\±<þRE'Ó„kŒº:ö6£þ;iCkŸÒ ŽÝHÑ>¸¾¹ÛÚ+£M$¡\·#ó%dÆÎRŽCšü‘‹¬swâøà‘3œÍ?„)çÆ=FVd…ÏÊc¬›øõ‹‹¶™xrgØDj,uÍh„ãoŪ±¦€#DØ!ºð…eiiu°ÈwTP˾$üˆNˆ y4С‹mXm™Êdò)ôSŽ4eAÓ³GÛ0ò+ýTèҌ燅”õ†¹®®ê‚xAöƃD{?vf3§S¶vbÀãÇeq:À‹„»`ÓrFFÇÉÕ\`gø%ƒ™ ]pŽ]ÿåvO˜³Ù°gåLŒqIÕ^h” ¢u/RwÉOy+R8†>èÒ–ÓIÍë0m¨ÏÅ= —sAìO|rÈJh ƒ# tëÆ¹2,jàƒo&ŠAîVuÇ »TèaÔsOcò-pˆV~Á>‰Ñ^ûî|Ä!'lAÿ‚¾¿œ#|C¡ý$k’Ð ¾©²ƒäCÆ ¨@,xN¸=ˆ¯a-f˜¯¯5d[.”†N?ˆ$܇žI5›§1CÂzH粎ÝÐüjœÛ7QóƒCâ¶p²“bgNƒ°>‡}rˆ‹ho|CÍð¦ÉQ¶|ehÁôZݸdû_à;*z£ú -m‚ìåt # –CN0aË©%>Íw1*Q´ìuJ½H%¸ÙšqöÐ4&l6Ê4JÓ|ÛL1=·ÌVÑî²=´% •ìTŸ'¡‹¿·âɨK‡rtß)"iv¹ ÜÎD‘²Êü µAéÊ8-¦Wê^»E¢±Ê×;“ÅT‹PáS§-CV†= Xâ˺­‘šÍФ S¨â"¼¡?*µY ×'DñFÞèdSš<Ù%A&AÚ,QÉ÷Å?ÎgùÏïØÒQ‚ ßÇ›#:ZlÕtÁ Aã õOo _ ®f¥ç™ŒŠd-¤“òsçÐN¿5ñf¾HŸDvHûd€B¢×ß Ð$…bA4ØBG6ÛO|#ž‚Šì¹ØA¦p¡P°G«è±VûùôRˆÜ§&pÓKŽvþCÜÜ–´Ù~Ý—AQ·ÂObU]íFꂞÚÏ}r¸þ2£ÙBðoì[FhâR]Mª¼ËÈ$a}e›#t%Â+¡TPj)YùjP0œÜ±d{*»-ªA;AM“ŒúÚ ëähRp1E$ª÷ñÙ2\䤚sñæ‰Õ#äÌËNÖ:JLGÈLN˜–`IÝP÷‰›×'&bÒŒx V,Ñ µa¢)Ô¦Kªx…@}ý {×ñHÑ;âúäæZez h³sæ%ÁiïŠÍ#—é$iÌuª¬2¼œ'ÞŒš9 yÿ‘oµÿljCì L€ è§²Ð/†UxNÂ@ˆ<8ûàž¸«£¯`úêC"èÐzGá<“h°QÃDámrŒ#a õdf=úJxøl„£ïŠI'ÑïÝ•´®c5Å× ôg*ËAöC°G""cûXøø“ FÇ©R³=ˆd…[Æ@ƒÆ£°"få.ˆªœþò¤* Ø! 4ÕZ @=kÍT°KtÓûîP µøqžDb·wŸŒfßí ù^¦è³\Š(KE—!!âå,žu¿”ã2¡ùoþè:³‚(û ½¦¨˜îyE(ÿÞø›CöáÐ:×:ïš^æö4 lxNŠŸZ' Œ€Ç)öŽ´r5ÌšªÂØÎýD²æ9[vnˆ·©$à‚c?*3+OºÔµÑ²òhL‰o{õ²Ü8ì8Èʇ„úD¸á;>ˆÖø¤AÒ“­ŸDpð q޸Ф©x½Aµ¤BBJç0Š$•Ã$ü´zÓð×k1Ï:‚h£…ØŒ)dRXꈓÑÌ›-äuG=J“¸vzGÔ«l¸‡|ìH~ Ø_\Ohéìq†Ï^LëŠAâ@)>‚1×ÙþòM >Üdñ‚¬M†µÄn¦¤Úd^È”ŽÌF†½ï\Q®(ô¾eÝT4¸”›5€’1<.y5$£&‹9¤½”VŒdz­ TÌ>‡„ôç¢6Ôk†ÄG`(E¯¢÷ß ³6uì $4öqâ ´U8)ÙHy%CØãìOÍ@L[Ç»äc~?{üvÒCõ¤4™ ”ôÃZ?Þ/¢¨Fʨâ ã€€ž) ¾ çó‡×õ"„­Qyƒ2é)_ÚÕ, |Óo$Ðo¶øµ‘#ö"ÏEgǤ`rkù-F\þ¡ÑÐ ŽœC·C´æ¶½=£Iö\SØì•ô ŠkŠT‚ ’5Âæ½’G&wÏ{S§n¯Â†|Sïz c£S¤÷Å]ÑÆ”pŽ…è`ƒ·*5ÅMð®øG?ÙREvO`Bl*éì)tñ:²C‘U‘Èu*ö,WE4i£®ÖS¢º&šžMq\ªíªÄ(,v‰?ªM=Už€v o€z °SCǵþÓL´Æ‡Q‘ãP)1S½GÛfI¤èåΧ<¼‘ÁFL¦?šr¤…)~Èq-ԚʓÈQÓÙ$k„qfX™°)ëžÏ7ÃïŸÎ!ØêHÖ‰çVàÐç]„šj_…\hâã6$ço <†ÇŠÊtÍ3®c9È=&¤ŽBp$ˆ ®ÌŸÉÊÊ!ZŒošéØŒGÙ¨ÐFJk…¸Ô ‡]ñIN9ÛmS@ïûZuwÀà‡N¤q‰^t!¥O ñ¾‡®¯Âš$ifÛBX¨›ã{b6*‰]$h¦‡Aþ©UU·4ÛÐluÙë銡ڠb°=<¼˜b+ÔñË8Å*} Î]Q?cP›EhCÒûš+:ts2B¢„YМ›µYU‰ ®äÓ|Y¯J&øªG+‡¦Ìg>!óOÈRûäWÌÕ>建!f’£0(ÃŽ7lG”8ÙìB¶¸ ÒŠk•}“M‚v[ù¿| xNcÄ$Ÿ×®Ç]1¦Á-¤mŸ@ºè ôN:æDå™; ÉSÇ|ñ¹'¯YA\bVùòÉÅ$ß…õÏ’¾ópq›"€¶5«%/`¸,³pe¢FŽõÅr8 [d¡Ñm ¸<'AN‰:>i‡õ‰†—Øþ0ÑeÒ%É ÄQÇ”Mp¥Hœü¤²/°“Ú¬÷ÇRJv(‰´3; ’;ìrl&„ñG¢AnRW(‡ª3íeFþp±pK—I7ª–¹é4‹Í¢í¡@4]Æ’;YDìhF•E1œ±ÇÐYéG°}U "&øg¢ãÌ(º·-ì‡Ð'D¨$„ ò¡‚Ä}BöF-R),®uß0™d”’Fá6S5ñ¢4ªB¥ú€ÞÔ‡¨èº* r¶¸²rra7´ aX½Üͧ5뮹­žºàb;PvAõñߤ¨ß‘\¿‹ƒÎfØè²!—Ü<ľ2ã›Èq(”G#u¥2&ÛI°9Ç÷`‡ öz“½žoe†¸¾Óú5°t ç<{&{R˜w >Ã[×Ùœ*x¸~Ó „ÖÁNeK©•ú$Û¹ms+¹ ^ÝDŠU-&A1®F€©M•’L!$ SÅZ³WbcÇâGnô”ÙÌÕŠ/@"€eãµ™fI P4 Y‹ckž-žÊâ$<`}À(ÆC†{ :ñÏqNŠ:é{•GôõD»:4Ý^€ÏÝ&fù/оÝ& —o­¥œ…o÷lI·<`Œ¼u –±8ˆ´KÍ&Uñ¯‹B;dä¹àâ¢ï+!•xT2ÃiˆNED×ßJ‘Íñ}”ž×ý€À`dM^vy¯d(9«àü ñlÁ:O%œ]$ ºÂMšíÀ<¡v8J!Ê(i‚ʸÛô}‡ ñ¥¾ƒÁ=6§õ•f<ÞÊ€xNøÞø­Ð—QÇÑOÊp‰ÄÕ„=¡£Úó[ k….F i$ÉÊMˆvi¯(ÿŠ1–¶çá•ä°Ð%ºFCå˜9m‘õçÿ0h…P÷P4WÚc£×Y){jŠÉg3ñ̇Û*#ìS "à+ÌXhéAsã K*\h+XóÊ&ÉJyð³‚ìzé粨v…ÉyäJs‹8„!4(E3gÔ#)LçÓûs(¥¦&Â¥Ù éáPK„¥AvV(qéh+ÃÁÕsq2mB2dzdßË?ŽÃüÊ7ÆŒŸz‚Z°hˤ2*ÌQ)Ѳ‚§5ì>•Tl„Ú  ì–Áµ×”§S˜ùOyÙ“ãä.˜éÆ(2%®léÐ7 þbsîÇÂ6×z,uÃí‰Ñ*x2+£ÍÓŠû ÷Åöï‹B8”Û¢ý,ºæ.ëÈÎpET}{{ÞÖ­ÑbÞY)Э4Nˆ8p pòÓd«¬r¹Õ;Cí>U÷…)µ¬dLÀèhçS2^ŠÅ»(Šé<ж¨F4㈔^õA6Œ«=¡¦§)1ãå¤Ã{â¬éÃÛ_ÀÂ^Y$=&ªŸÕ²¥I9HÌñGR ·;âÇk•EÈ%H R¨XIÒ­<Æ Ò†N†'Û€¦¶Ø§oÆøaúN€1Ü•“KäaAÙ_`/Éä~¦ÊÞÕ¾?þ8H´Ôm‡ˆ¾C2jË ñ­8°rO Y?¼`ч1ÇÒ_ŒIü˜¤Rr× ÑÊ”J œÌ ˜™+ÈüZ¨9H¿UjPÁÁ;@G3Ì™”á•^tØa¥a¯G×7éNÊò „ôS|å!¾1âaUŒpêx°’  BªP1âEFý}r -*J®Šq{Ö¸žÁ ‚„ fŠ˪» FËf2o¶WiWù*Ìtì›!Yºö cÕz¬ßE‚ÐFªuz 8,»ª”R´T%;ËF~Bm%E_I?pšŽ[5-ñ’ÞVdkU/!Û‹6!#®"‚KLJF_ª]–©zQÔSŽn ê~Né#0yd±FL­ˆüW¬6»Ô ±È*) \OÏÆ òî§ÿm*œbFOÈI>7HЗÍÉpÃè<Õ±$çD=AǶ8L«% ö ØŠ ðqt8 •ÁÂü”Æ“Dë×7ÃïŠ5Ìãô˰h¹FìàÑ”¡m9ö“-ÅörNå?«ÍQ…:FM¯ ýH%AsÊ#‚âB¯ÄÃPR3PBð‚¼þs[çðû'{æý]ŒÃqd€(Ù+®'ôÂwÂ=0×°Ó( :¢3=O Lr(;"5[;ÔqÀÑM¢ŸXÓJ©áÐYÔ :SF”2Šu¡µ'Né8°5èº1€sZ‡ßüyX΢¿Œi‡y…Z•7ð#ü†É¥YˆEGf ÇmNåìr'KbÝ(ê´>`WoÆ{æ‚«Œì¸ÌîxiÔ«8à³3jœ9÷ív|Æ0!º‰¶FCÜN­1å`˜…JÙÊ‘Ïi“°=ñW|#\ߢ8F¸=p¸(|Å/¥µ?ß Þ½ÖÊ£&›"˜è(€ÈÒWbŠyã¡U)¶ß>Àž•qä­ãCÇ܃›…šaä Ž M£Ø‘²}AfõçÛ€ÜQ¡¾±þÈÚ“¢™•£¢3$Ž!×ö«¾h*ïü>ÀôHoøùu(=ct9?‘4’;Ñ9•UP¯Ç–˜${?}'È’lz…3I„²‡Ç áeVå-Ù±1hJc늪F‡ ôyüö}Á>úúËøÉ[•øÌ™@;ô…÷=Ƚ_dOÄ™ ¤Bbjñ¢ìˆîbΧŸ ìÎldÚ<ü ”ª:1H$k‰:Ë4Ûž¤¡’ï„xáM Mò‰±bŠÒV,3iô:àR;Qì ÐzQ!I][$ŸèŸc×-M èù7R›$ ­ðŠš¥Ø„.ÁKƒÏðu¤ €=L•Çר3Û**}–'„oŽE ñW|* íªë•™©I¬À~Å+íÉ<èüœÂuÅÙ;×ltôܹa¡òÏ; ¥3N<š¶Æ ™˜7^i9pdˆÃÊž”ÔÕèælÁ²Ñ)èW÷­*L¹%iûk‡‡®$º}xG±ýÖ¹®kÙÈØ+¾é¤RÀül·L-ŠFñHÍ”ª59œ¨aƒ6ÉÉœ:)]O¯O ’þ[¶W…#ZØÇ#I˜ÁÒi¾ÝQ¢MG.:. "ׯM<ÍŒ@æYW ˜iVÏÉ$ LìäOAx+£µ<›<Õ JöDO&DjŸÓÍë„ë™˸¸¥A!MU÷H ÝX3±uDúq(z6T–LèÊÝŠŽÆqŽ}¶¥ “ìŸJ8_JŠü’¾ÆÙõý\Juq5 y“n¥$îª8¹“$À·´N8Òûá÷Ãõ$ì|ÿªçO_ ÿÜ£\'”š’Š @Àå6âƒÖ@Ü©/ÒˆàúN!gF¢ݨHiŠå¬ùñpÇËÄeu:ÐÞ¸?€ó@’4¾ö}plsÖ´A?¼)²G:pÏ\(4d£Ÿ,›ËøßÑ~ÞéMm]­©6œâÝÏ®ßjܬ~“¤ˆ»HQ mJRÇëQrÍÄ:=vq¡v)cœ¤ò†Ø¢÷¦T7èMûx'²Ó*¨ U§ôAö8ò†F2®áçûcëäXþB/™œ(!vå*N(Ï“†ª×N¡’v‚5 ŽÄaÔo…I)4?Â}p·§û(W$ôS—’Ìq$T á<Öø=ð6‡2ó¼fU“Tç1A2곜Ͳük“’ù ‹‡F(:¨(š]p…¸¤o‡CŸ>9fßþ=ÿŽ Òöf=oe†ÕÙD±À3©ñÂïãáÈ£T@[|T'ˆâMO>CÿÛƒWñü]ÿ+øw°O¢xÇ]ó\#›×ß è\#šßá_~Ç7ì{ÿ‚6kŸ2’ŽH‹>6_÷†{'Iüy1ð.¿`¬Ôp¯ ¬xØ‹Bp:5!@DûqñÉâB¯ÅKžmÊ)‰ª ÔŽÜ\4b˜²8û ƒ:ó+ã–âKpù^ŸWòÆ'’É:„‘† è‰3´?Â}dØI 6ÓÈRk˜OE,s!Í!›@d7?ç‹…QÅÆPUAêu 6øKNøF¹üô R~‹û§rR !€· hõ;Ò„îO/y¨ ä8V®´I<µ:©Çµø˜Å Oªèo@ë„ï‹ëž¸G²7Â}|Êö¿ÉªÃ àÇ ˆe˜Ñ$ûc¹c¾‘ÏeÎéá'||D×êqàÔ‚ü*ÁÈŽ8ø y˜kÞ¹ 8=s[çûæ½è9ýáØà<O5Íhìúá}qé¾dbß!áYË¿'®¹­ó¦¹Ó…t:ë…9ÐpÏe¥Ü.8F+ìã«2?@LP¤C‚ ðK@KÒ¦C°žºk>këŠy/“¢&Lú†Åü‚ç@Ö«l6yJõw»Èt=JêLæä&$ãÌp Ž-Qxo® Ž6G° BÐ’ $vÚ ƒ³À½TÓa΄Бõ¨;$è£) A!6¥6åøË³›mÑ2 8.,G¤]s¯¤?UÐÆöI;cúFõ¾¾gb-¹òSsñ/qλâȺ(qC2 '¥›F-¦•6ß'ÿÕFÉá>± ìÅ®œ+Üãcú8]-ÿ‹Â²Ã#„záæ¹½Í{‰;:$ï›ÑÑ$4OôI<ÖÁ2Ñë¢wÍó|ñ°9­óäsá‚>+ä= ð§²›4||2߸гO^p QôÝØiÀ¾¡×±ç‰Ø$ˆ%uÀ¬ •;%€ìªì¬ÑIõÂt³’ÒŸ !|•E#ÞÉâ2_Æ™¹>v'CM|„ Š=p©õÂtÃhøŸDžÍsCZÐ?Ó葵8èÊ&'SÅ”0.Ü;ÜÈ.TJÌžß;h¨ìi%0ø¬jŒIN“&ì·Δ*«àsÃ6<é]( á,xšîxh8YO?Ö“šõ½s°'Ñ9]Î?ÄäR9¸9ðÌ=Éá¦ÊŠk@z„l©]oß^ôWÞç ÖÎÇžT~5á„%u¼Ã7;èù9äo„¡æýï7®oÞõÃÃÀ9óéφK&>d¼_ ÿSE©Ñä;Ðä¶Ãï„ëØªE8.`+’×>]s³9µ<øÜƾH˜$G|ðDTÇR|jA§áÑÖÂ*.‰ R Ôì¡âŽÀS/KÍI³Ô˜ãRq]‘|±Ž~JŽ ì²ap¼J5fIѾݎ¹[ HМ‰• J y¯gz¹®ÃZá#` &çeé®#} è°§`'Ù1·\ÊùP)²õäÇe°"ŽÛL#ÞEàz…„¬ß$68N¸[ßÏ|†L3°èoˆ8N¸ ú:<˜ž=p«O7ì6¹óO?ÎÁÊl<Ì|éä@ÛѦ6¥Tp/£³Å@É®e×¢L3”^…4 6¸g1CDуP²U¢—u’y›6lÜ,(ìð†É'v«(II©ê‹J> VO`¨æ²¾”_ÎdJ4.G®°6WÙâM=œyì¸o:o`u1D<Î@G¯ˆ FX èk@óý“£ówóüþ=òNù¾ïó‡×=“ÎúçÏåÒ¿ šõÁJ­C4Ç>H÷ù4R´øú1y Ù‡<œ4rT©$è#l±êr¾eå–…o#*a®~?ãdååüsün -äŒvèŸgÐá;ámñ[\ï¾|…]k…ž¾-ðzáþi¹òÎFñ¾>þ=͸SA€ø£šôÁÆ^|—èÊÀ[ë\‹ìçdhcHpŸøþp{Ù( $Žl1w z"”² ð&¨ šÐN˜O¾ø£CÇ£JÉgœv’‹Ññ±£ˆõ·IB@F÷ðñ)¸М€èvöÙâ‚}Gô}ñPµP±$õà>˜zþ‚W…„>´ùTC‹ƒ{˜ül‡Œ¯ŽKÈ|)ÇãcoÑ>‰çÍe¾&À|•r'ï™_>GÄz§×7²£\×5Ízf™lÌ0Ÿ$ÆD9JÒÆßN{%/C‰Ž|’D¦ÇMó¯½ëŠ&Zù‰Žr~"µ´#àŸR ûáÏ­ëœûÎó[0$/à’š9!€j7`Z?•e^%6~qÑ0ÚŽGÅçù¸xE­®|“÷Mhã.Ñ6:è©öª4«¡ü$è‘ëä/1ŒÙÊQèó6âQÁV`¾”i½Ÿ\_|þpƒ°<#| q¢@3!5Á@ ác旅 ‚OfEöwãDv0ŒÊÿX{YíÿQeÇŸ¾.£JJ£[æ”ðsý¨öO£Æ!B¯˜ýT»/@z•;}l€OÈ/¦$ìÄ8™ ÆÀ“ÖSß ®Ž”“Á½ÎúâŽgaÃ6Iðss¹Ûÿ<ø†¾HCšáÚpÞsàm¬ócbse¿“ÊŸHæx02UÈÂËQ‡;©Ëv½Ì›À³Ö7ÄÓÏñéÀ6€iG^uá@9òòdÍÄÎ,`¾|ý¨ÖdÃþ&‰9|ÆÍZ0"›=ö q_דÖý¢ á<ÿȇèÌÑ\3ÿl¦øPž4ô3@ú8£Q ¶\Ö†µÃ²ôˆ]Fë [3ẓõŸ”™)“Ñ0Ʊõ®hlpÃÆ »áC¦ã*z!»/Ù%¢¤]G ñP‘@E‰è´ÈýÙyÐ $ŸI‡1d_ëÑ: (VH½5®oÔçëø5ÿo‹Í{#|f×e‰Àª p[·SЄ^©à]ùm4Þ9ÿ¯þ:ï„sZæ¶4G?Ö½Áèëc_ñÛ\?Ã4pe0 ‹|Dßñ êp2äo‹’9°Á˜úØÎSøð ”({)DlŽÁóåÇißp§ÀÌŽ0ê~zù¿’ÌŸ*w‘Œ7žºì‘®k× ¼>‰†‡3“Éáüƒñ¸;óßzË—r°ÑUÐAèp.ÊŽçRx@€x‘ù[C«Åü’=µópÆ•Ká×ÊŸÂtx«Î¾Èá:ánÐfײ~£DªØ¶:ã–!Wj8[cÑæËœÀÐ{ÀÞØø%GAöܦªo‘ rp®KÍ:©ì8ÈQ x =Àæ¶ ëÄœ'MpŽÀ(UßJ­Ü/ÑÿIÕ‘ #cë§ÙÖÈôGØÑÑÒó¢ì àŸ5®hŽèzáp ðŽà:'\ÐÑ’ò¸©F?)ñó$`ñ×c1rÅ[ÌX!F_öyòèÇ3/òSⰃϓŸ›¿HÿëÆeq1× k„Á^xù×ßMpðŸ/ØÃãGƒúG5ÇŠ»â¦ø\/®.Ïçó™™,©Ë ÇŸ ;ÊÄs71›ä1élTø\Ï-Ô(ŸÂÞý’-²Þݨ£†lB@M Ðfm…g!t¤(ãØL÷_§7¾|’w|y—¸ë6y­¢ƒZ;œ|R¶Q8Nˆçôð):'\.À–@_d öNÁ*P¨ÿøIö¢z%Èb[diÒiŽ›‡`ø× 8G?‡Zæù¯dz湯gšçðóú5ÿç]s[àOd{'ÐõÂvHb«ì®É‹H$Ó*hˆ´äPˆG˜àOñð˜ý?£å'—DÅT$#Ô/÷×<º-P °ßô¾®®Z‰%Ì´²‹üœÛ߇€À7À¾”{×ó[:ÐÑá_^0WAxĉ9·Ë|´ü ÉùSô?¼#„sZ„잀a@Ÿ©>„ÜðŽ§¸ i¾xØ…˜DêJ’rîC†#4‚('…Aãv*ö•Tð qd÷À4x‹ìÆ%º$“KVõÔ$—öfº¾õ¤ÿJ6ObMe‰é1EˆØ\Ýpðpž ¿}½|×üx9®¢Þ¹üáõÃÿß5²Fù®­oƒØ sZÿƒÂˆÜ3^4e޾äú?ÐÜôA·®dïn¬E`ÄNž‰ã½YCL|xþBx tž¿à‘­oƒƒßç °½ëŸÏøí®lžkØô8¯–Êšeüœûáâ©)3Ù?¼ÿG‡„oŒqÏpƒ×r –r H€D,ùI ‘¤Ø‡`¼¼^¡e¾xô¯O(íøâúæ9bš÷Ô‚\ß±ý'ß½®”Ǻ 'ô"v$û'j‡Ó‚}”û*’ úŸEý]Õ äJi/ß…Ð&3ú׸_ßRxSc®^úéšáÍëµÀy±ÁüæýÿÆüÃëšá;æÈ星ç7®ëåþCðgñ?'ù¥zž=‘j¹:í&Út;$ib4t\}÷MégNç^‡5 }’{#Du™©ãˆn âÿ5ÿ;<'@6‰q Ûà>ƒ«Àm€þ÷Ï\ùÜIaµcðÐó6cŠ£\SÂ8O <*Ouâš¾f›…Ýå·œ™Éë®UÏÔpÆ¡'.­×@Ù׉w-W5âJ¦XØhUAÖ‰þo߯ø$ðMKBß B~9޹1¾ÑÑ<:@HaëÇ·ÂxYÃ!:šépÂÿÄ>!1AQ"a2qB‘¡±#RÁÑðbá 3rñ‚C’¢$S²cÂÿÚ?,5¾Ù'ôÝ9•‡[âøU礃tiÔ~0ã`ƒÀ÷°:Ú3è˜öê8Ô3ÿÊk*u;Û+'*è8x yk­?dב0)ƒÊ j$=Ïd4Ë©‚@'„Ø ÚßU¢÷’~O±¼MŠî=»Àñ²©š”÷#>kMŽâÄ„Eši"v?›I„H;)Ñpê"!Ü#`èøys¯¼¨'£²2ââÝQ ¦ä3LÅ÷©­¾²œÂS‰ÕfÈÑãn%7"c„Aq,uÞ“d:nÛ f}Óî=3_Õ@ñæùÌ pJ`Ïð&6´ Kj°t¬ÆXçÃ䋪ˆ˜ú¢÷›¹Œ|'è´¡ôåBk$îàGaþQ»î©Ï5@Á¦Ðƒ*iyÃz¿Î"³,šH?Ûm¯R–Æ#Iï¶èÀ²'ê²}ü7ä+iŸ0–»ÒB*ÿâ€êÃq ÀÿþHi<Ëþ$Ïu¢ê¤´Ï(ê9í.™!²®/1„zîì!qnJèï(¾£X¸ù ðlfd¢èsOÍão;‰B·oþÔD¢llOh ÷c«“Ùî¿9ºÑ‘6¼ö(ËGhAÌ{q‚¬~©µÐæ­6L“Q™ZlsEÍB  £ ó€µ1[øN¶ñê¢vBèf%=õ83€¼;`§E‘"3d[u“j;îUšNQŽrSØNû£cè›&,7N€P0:BËgóä  Ñ#§!8¼¢y;=&S¹YßÙ“žÚèXÓ7M „I"Åzì áOž‘Âê'^[´"}ó[jL‹ª@þ1º°Èá L™3l”à¢Ü-Vðå$Äà€¬b,OCLžëâêmì·7´–†˜”^Çá·iÜ+¨%×´z¦º£ŒpŸK|/.•E¤·QÆ$Ê.C‡Ñh‚ lZ -Æ›ê$´ø§oúF{´œy"ǃT× *H–8ä*›&ÕS+Ä1e©Lt†„ÑVA´w²÷„M.œy)çÑ:–ôFQUƒ§&›!Ò2@² Qƒƒtá_ìŒòˆãê¾ÈÞЩˆlKz„·º`37D0˜hç(ŠHéôR'¿oÿ$CñÔÊD™ái—†øIÂÔiÔðÞÍSSöÊhwôúdXI_íé2“zZ 1± p(zsf…k¬=žôG§ÎÊf;€€Ñ6?§fŸ÷—HF­]0àé–³oÞÉšÌÖ//xˆ•Sžæ>i#«ù ñ¨Xù->Š^蜔 p=çù²s„ôÏu“iâV—Kb!ß5¢^ãvï)¬¬cž÷¶˜µïꋎŸá»KlM_å8ެ/;Zk[/# ïöàÞÈ{»ˆŒ!ª|Q4ÂkúÌ EÍaw”Ùicâd»tíHñ ˆì´È`2Gl )ÝsZ ZBcH%°¬L¬$[ä‰ Ùä#çº&Ý“m›¯ªºÂù£p{æ0œÓ&Å?ˆåeDV>HI‰ì„“ÃûÝíùn'É;BÝYæÈPñÅ֑ΜRQÖcÀ/t´‹'f|‘ pò'xF¶‰óDO\òƒðFÜ /ä¢ÇŽ¢¨ô7•¨Ùtâ^¿›eÐÜ(³WŒqdZ×<û²'H¸Þûl¢6Ù;ÍxF Õ8(>LýBßÃ$ CN¶6‹ü»*u›C¦ ªwYއF Î`@:_ÓÍ=G1Ûu® ÙÈ9¤UT .þ%M>+Ü"AŸÄÙ5ÕlV»ÅAˆ¸Ïòºæa8Sá1jxÿ)–Ñ`p îƒ.”Y$ôˆpìp´¤|?I(êé™ È…›¯ Ç1ÆÐJ{=@( LþoÒÛ”ÓlÜB-ƒsLNËVG…çìµÖˆ«?4ÐâELº¤tÁÙOe€·Ê)òñ˜²kjÀñ/öÚó½0^6D†ìƒÂqcï‚©øBÕ{çt}ÓèÔ°ÄJcÞi·„­@t´žÃþЇo°N˜$·”ð4\ë²C#RÞ¢Z€êߣ¶È´¿©¦'dàŠ•…£”Á¦m0ç/Â~‘½úÁôEÚšlø]!±£´:é£_F‡ÅFOQuîcÔ"5 Ž“ŸDLñV×GÏôO“i©–Â=nihÚÉ«¨™{'Dâ@Í•Ql² ¢›Z]?Ì&_¨ˆ1´ Üo³WõúV>ìUõBä‡0Ú=Pt’ؼŒ§R2P,QÎV§¶Z-£ë IâHp#È­±ÊÕ†ÿí;ì½ù-›C¥QPõM. qS“´ Ç„"Âp«k@[öî‹»¹O÷a¥Æ"Sö:¶šLî›"8È)ï$gtã±6@“Ña4_ª@\ÙVN /öážk#•ƒ3ºõÝœiÉØ àä]¿ueo²%a`&IÚSÝ÷EdŸ5st{¡”Û â&¬s|Ð@QÜý“…›ª[‹ÛH-3}û 2:mÀT»LGC“D½äâÝH sùÝÈkô’- \GK|#tý8ð¸íÝbÜ&2ÑħÛâ±îš Æé¤úAÐg”òY°N©þ1·)íïIêi ‚ÐdT=S 7;â¡Ä›Äai¾¨- ±s©nŸø„d§^mP…aòM’ÙD½®sAÛ%TÀ 7¶ u„RIlÂkÃÅ9eü²¿ª½ÞI0gìPLüáh`C¸áGd" øYßeî´túf Ý6n9Bûl£s ìx-ÏËÙH"gž%ÔLIj¡Ãq” x‰þáÈCX ÑsC€Ò÷Fĉ²Ë±N!¡Î"œ}Uôœe»r‰n,q=­;݂㋠Y«¦-¸-)…Úº~íÎï麟3d`òDáýF«Y«;Y:5 ‘"L¨"›ÜJ8Úà÷‚Ð ÷M}‹¸µÃ’œÞ¶œÊ“Ÿ$ÓOs{ÕæÁnTÁ±%0U¿ ÒrÕýYily$ ÙiW“"T0D§µÌ› iðœ„^i¸‹-ê߀`J3Ùj;¤·ö”?¦xcê6¾éÖqµ EÐ{ší2Ìïd^öZLòH¿9„›“žtÚæÑqOê©x6&'>H¸ü rèFeåt\õHŒÓrœç’`Y(Ûª ! Ô‹Pý5¦‘ºéprƒjÛ`¯/;šøs{BÈùlºFÜ¡ä¿eû«’x\‚²±º¸@~‹(u W!YeÅ‹žQ}§iQ`…‘ó[› òs‘(!„ Œÿ,†×›ýS(×6 í@Ö{£P„[DŸNªÔñiZ‡xNu÷$tæxð€Ý<2ָȞ A„Ôéݼ8‘dfɤÞÆWLyL&ë ò`Âhð‹œÀÎce¤Hð˜ZwµeU¥¦ppÙ³"÷Ü6G¸…ú¼‘±5 ß õ¸¾Â¤4¹Ä§Qð‰H‚à#Áo+­v8Ýæ~·û”Ðç8sÊ@ÏÑ<|MXð©äÒáö7Ftú§äÊ#NùÜJëÔ'ûF=ŽhÙF9ýѱAñpµC ÉÀòº/Ô;ìvFiuù¼æz‰ù§¢ó©á§8º&¡ä¬mÂcÞíþ‰£§¨Fm T¹†5 RNÉ¥‡ðˆ¸ž¦ ã{¨Ã‡‚,8óZŒÖ³‡tç2 üÓÙ©¢ÑÒø¾?D˰7Ûpo„òÑtdRc¤ÇªÓp ø‘• wAåD™Åšœßd.Døáj®¨6á]M7ùÈSïXbÂl¿ªüÍÒ'=“A XS~ÇTÔš‚Óu¨ÀDSÊ2ðàãðù-BZUòM‰ˆ*oä¿©Ïûgì˜ÚÛÚØ@e¡£ëê‹4ÛÑùˆ‹'{­K¸ó¼.¹y™(HM-„)wâ1âäȃ²1½î­ÊͰ¿ò(‰ÙW˜T;ä"2°VÝÌ ÆJ‚h!ò{@F°]¡ò6ø©a ÜÈ ÃèB‰ Æçtvó@W'º+gÛp€iázp‹ª²0·ôPÁaì k>ŠÜ§R½Pd[dÊÝ-ü‘EÖ¯P¹æèu•á‰6T]ku6ª°J7Ⱥޮëú¢Gþ˾ßô´Ãœ3‰Bû~²‰Úž]éÏb¤zI‹|'“5šF4†—Z¾÷fQàõlvD³âo=ÑŠ\<3”㢠OL ^çÉ"SúAº‚ønäíüý‘éfÀ ð´`,:Z>¨ÙFÉäòœOÕus(y*@ÙXMöM“Ž»M½Ú1¸” Pc ÝYY"¬ú /DqdçVÑ‘%¿K¢@ õÝ­Wv˜VÃlªHl sÃOO}•,­o ØüIÐò(‹ú›©-¼x°†ÊÃtnˆâ÷ºpÐ}Ö}¾èÔfÛ¡9Äl€Œ å:îm¯ýÈiÕyM‚F>h0Ò×Ða&¦¶MÖƒIËJk©†FÇè‡Lñ(¶áfÑ+PÌÙkh@BFBa¤8ƒæš=Þ)­¦žäFÝü‘‡;?›· Q¯'™„bfœ úºÚrS¼öNÆ¨ Wð·Ñd˜ž{¢Â DÔt·€ãdàGKÅ%i¸…ç&žâã#|Ö@쀺ix5¶Z uNÝi³I’÷r«¶•Ô ß¥‚šnHt^ýs#sµÑ£UÏ“±¥ ÔÓAŠâ'äœýI¥Ãci”5Xf7 øQP‡R[l£ÓÜ¢^Е^›ª½¦Å9®¨Oóä›b)r$EVEmº‹.§ÖS ŽòV°ÝÀP ´A¸<"×tÙlÛ2µÚO‹Aé¢v]¤§,Ñ*¢LYÓ7²éãtNÕYc" -bl}Ù@™Ø ×: "ëR  ¤KSÚíB_H·)¾| Î~™4Î;#Kîæ§»0xOÑf cãáuá>îÍ‹¸GÉá'щÏxNŒÎJ’mîç Æ3ሟ4ê ÝGÜ )1>ªî>ˆ¹•NJvoÉXN!„ æ‡û€ï‹ÕòBý3y&? .tÕ]{ ‡ˆÙE£S‚K[ÝU¹ÆÀ]8шJÛ(_u$€©¡÷ÞUPû ,mº²™Êpi3nÒzŠÔé¥ÄØ!©ÓŸçd‚Û/éˆ2ôBÎõTæí”C´ÃdYà£ù¢{¦¼‘™8Aà4³.Þd]SâsÈ@=±ýÁ»…›¯tâêv¾µŽÂMý%~#¬DÈŠë·Ä瓯ՅLàÙ7á9U±ßDÏÍ8ÁÂdød¶B뤈˜J‹ýÑÈòZ¦~=eÔÖ›y©1qʹˆŒaIénޤ S¼&üöOÒÓ¨¶›˜´'&æÑÙ Jjè½#jStId}Óa–‹ÝkD yª „M‚B‰µÓË®-tâðÊž5§ Í{tpâ…韬"Y¨/9jõß„D²lP²uUõN‰Nªgk#p "{Ì)‰œBu¾HN7[Ürbƒs䊸$÷DÎþÀtì±dáỤ̀ȢŒöRç:eQ%ï¿6L`J;8òCÞj†˜þ]÷ñ(N8…H7Ž¥Æ®æWâ$l@‘ŽS ò§îDÝÍ¢àŸÑjš 8Rdú'5ã9ºÈ/‰a5ÁÝ3IFÑl ZÐs`†¥ms§ôC­¬²c”=Ü‘¨”SZÎÊ=_T  À<ßdDùV«Ù¤d`÷#d´§TwâQ1µì³ÒBæ®Z›0$à\¢'·ÿpOaä^Ç —]j €ì›Tû°'­6¤š¹_Ôé¸H¨s@Þ>m*ï1 "ÁbáU¤ÏÿiFý|!ªñÖNë[E×dB™Ý 0`Ï’pÜ}“›8@Û9Q#´(~ Ø#âEìc}ë¼N…KÃzEío4Ý }㣤»âAå¯Ó à~Ò…kg!¢KOš{­ ªŸÕ?QÇÆ£Ó÷ ßþ·\S_"KDHDÛ‹"AàdêàQ{ ÷@ÏTÞ oóZ^E:À¦¼I½?u¡¦Åÿ§î‚õ ç²{ÀšœM‘é3(ÌâlŸKSS˜ût8æÉÂ1Ì){„Uxw¢€À,Q$˜O|öm>Šü!$Øm•®ølšÚš~°:©û£.¶ÆÊ—”pm¿ ¬i–Ÿ/Tím76‰â7ø%5 ìŸ'DµµBȉP|NBEÊPÏhM­æÆÈuk]8:D,£bœG*ÝÑÍŠ9Œ %ec§Éa(Q ÞHÛÙº„Ø(Α=ËULÑßò ,=Hs¾j¹óº&ùBGHøB&&û£?e2§î€GLnÔàÖ9¼Y Fóí:—äï²ó|)Í3Æê&ž™¡V¥€WS‰²0dƒôBvµH#õ@‹]o>‰­ô¼MÖ£òíGfonPcþ>øEÌ &¼›Â“L”Âè<’`ªL‚Ðp®í“|Óp&¼''§„×Íêæ|¾–M.p,؆ËEà‚g迨wañ` Ñþãokãtç#¤f¦›r‹^-;9 Z®O’q{HŽJn¡³à9k2?¸&ÚjtgB’®O; óºÔÒ±~hQþÜü!SªzÌí2[ÒlîÊš›LX‚´é.7~ëEúÝO&zM›l•yôºhq‹^ÉÔø\þ?¶ÿ¢"ÈŸÑ ¡¢6AÃÇDãd'2‡I Ñ±Ü A“ Ó2œæ1ûÇ„ú&ûø “Ø­G´Ò%T<%á·j"6AÂ-D"SœbÀ¦[÷ *Û”`´I|ƒ#‘2‰é®{Ù[¾wD‹5ÑRE0ƒß$OKFéæ‹Å2Jë:mAôE…¡„˜Ý推4{°&ÜïüáTÉeG¦ŽèkRCâ•Ii,AíhÇ)š‡UÕ0ŒÕŠ âLÔÒ@Îè<Y¨Ñ’«‹TÑÁ®-bäcÉ·Üw@Á¨û¦MÜÐ% ú ëÓ‰ä®bÁ4w(tl¤œ¨x›§ [I›pS˜îÔ=è«×y£­ý1=|àí?‰ȉ4 Ý6Bûei—0‰´¦é½„޹­WåR\È£ïû£û­f@¨5ÖhXÞ.´Ë_õ_Ô8” Þ?ÛH›.½FŽY3S]¾¥ûÚŸÉm¢ª.vAÂ"GKBi~¬ª|£Óet7ÎkÙÓ/uX²xÃOˆ£3›§4º Ê#´eE]hð„ÖôB‹¢$á9 l2T²r›ÓõN=ò¼"O"ÒÐd&´ÔQî˜ÒÙ=—HÇ;#p‰Owt0¿d-w/Tmì@9Ý;¤4ðšyD×YÀ²yA¾ˆi; Z}S™Û…Hn %¬n†˜ÄôÍò„‹ù&Tã2@ù XeÍî„ɺ>rœ-áã²V“€ðê>H2Fà¶åiX< èñóW;¾ÒŒ¹¤ªÀ%¶ŒìîÑÆD"[IcïõO‘Aqú§ Fw y'nœ[zA“œ…¬$iG¨Fé$_t\è€,l½Þ¸d`¬5Æ1 ª€½€Nxuãuy'±B,~H±íZÚ¯#¥¼'=ã®UÀ¿¼#©OŲ Ë’÷GÏdà`ÚUe¢ãu¨mr°œæ“™- pœþÛ§g°Fû*È(¼'DÌrœá$E( áÛtEòœ(§ÊPÂh/DK¹R ”Ò £b„ Αž©ÆÅ6³8›BÇÕuÕ©¤ææ[…CïpæÞ<ÑlOHÏîƒÙ/ÒÔ4ºØ1d.ÊéœZÃ3”ðÖ‘ý¾H‚f £OA%²Py ö…þð´„Oš!Ú{å· ÂN8Ê,&Dt?–N48–ƒ›aÖÿ¸Í„"Ãæ‰÷a×ÁýšI” Ò—@=ŒÿÄ" DˆŒ-0Є½ÀN! FUcÇ ìp2ë‚9S¦]ESú'¾¼ˆþJsLÓyL¨WI»›Â7ÂàëŽXçïx(u7¾r,BcØoU&z…†òˆn‘"6·Ý@B±>’ yì Û€~‘¥§¥Æ Ø¢hÆB#«Øsªo|£,ÆÞø<"$æÉÏ|šo’–” Ö™ˆAÓô”5ʼ®ôŸ§-&«Ö“ë#H‹Ó]^àRJÖÑÒh é„Ç5€ê¶ôÆW¿Ñ}/›í(h¸«MH‡8‡B´c V·X^¡².i‘ÃLÎBÕ€OÑ:‹z£™=Sº/gqG«äš“q ·¹o(Áßt渌 &î(µÄ>OÑI™Øªž6@¸„·½ÐÀ¼];0˜Ð ÆèÜ*»'Á­‘‚œ{'Ué ×Ý;þ;'_ª6öÊÐ#:~!ˆ§¦èí~¯º0m(š~Iòv9CÉ £”oRLÙ8Ò*pWŽ®U;Úز¥³ÅÓAyq»Z>è[,ÿº‰ÞHP¿µMF©˜O½ü^Iî¤5µHý“Ux¿ OX‘J.«ª6]2dbS¦:Ì&°ž¢,ú¢$ãd7²¤¾t¢Î=«Qî$Ðãæ½Ûƒt÷¨˜B’nغtÿ¹(9ÒÑäÚyE‘3¸…{ꌄ B$8_´)h´î¦­6ܧ5†~yã(‚v¤†BÓxÔ@˜Ùj¸†¸Z·vá8™Ÿ.Ëúf–ÓKz'¶Jif‹F”A“)ÚúŽ.Õu¦cÈy"Ê…@IhNa‡[” oº®äN<7ЄtffÃe« æÚ=ã^~£²17µÑhi,q¼‰URçPmMíû'€ ú®Ü-7XOæmˆL2yÊÕe6p¨vPd3¶ÒœÈò›'1Ö³\>ké+F>œ¡D™ô@‡ #uS4ËËO€g 4Ë|H C½S«šFIÙ=Ì%ìŒÂbËú¦˜=ȃ§×å”(mr7ç„í7i¦½Ù%½Â¥¯e¤„j7‰·’ {CUL˜Ì¡¨Í[¸Hƒœ^Ýx±Ó¬÷3RÆ©Ý?ÉAÍ}ã(;ßuÓ‹&ØbœÌú§ ©Ó€ŸÐ/¦\ZOdÏQ@1ÛÝ 7i€È›„ÿvço}h6Þß(A HEÂE•dôƒ%PòQy>J˜é( ›má5­i©¢è™²hùr¼.…ÕP<S‰Ýù$ ‚ÂSªaNèÂ>hn½V …Ñh$á´ïdï;¢CS½¼Õ¹A¥Ö”- '_ÎÞו@á\³Ž}€8bÒWAvPêèp3)ÇôM4]9¬mÏPº÷Œ>$tÜ{A õ ·h1™Ê{æÃ‡¼i‰´ òGIÈÂpe85wNÓd‡ÓgM½L«å9ó]Q²§ä±á7ý•$}ÑiÔ¼ôŽÊf5ÌÁå;Eíu?Ï%CÌÚÒ-t ®èU»L\d-M16©Ä9WhtnœÓªhh°(²‰ÈQòÂx çb‡I‹¡äšÀ+3ÕU€Nd“{ïuHƒG)”5¥£"QÕÔ&Œ@µÓtžÇ0@£{tÐá6¦È4ØÐÓT6ž¨³¨ï¿( L‚xÝŽœÈLÖXáKí¿Ern lSls|‘-93I2½Ùy :ZÄ—¹FIÉ"Ø@<ˆŸÒ™'¤î6U™®9Ïd]"þÎÓ.r 0—âЪBÛ÷ƒµTÂuÄvO¤*á8mû+•Ž˜²¨m( …¨KzbN0ºOusõN4õÊ»mÂü³Ø¿tïa¤«Éï0ÛñýÖž ý{¢èÍÚ%1ãQ¾»_9A…¥íüÅߢxù K ˆü©À@ƒ°¼ Ö9ÍoæýP±É¹;¢"¦8¯Í¡jPOI-“ñ&ÛæPž¾Ç숨 ^WlB |™@FB’n…„·Ù>ûò±²wžÅECÍUauÔBl·|Jå(Hiå ˆ<•€xNü0-dßxñZt‹“eqnÅ:ØÙ9 ‹ {§Z.š9õ ÖÙ`£kʰDvN§ªÈX„ ÷N¶ÈGWLÝL ,ƒÃ¢;Â"$|(uŠðœLŒë5®iñUx<­f7Tk0Áiо™ Ubæ ŽÅ4“îŒ\&{¨¥Ì´|0´ÛNáÆÛ¢ðÓ$â0ž hmºí² x%úfž!AÖ§Ñéé‚p/u.5gu§W9ŽÊ÷Û²`¹¦ çù ìÕp6À(³Aþ(mBõ¦×Þð룪y`¦¤»)Oºw] .p™’>h¹Œ.{A䆞¤ô`žã'c¿êi‡ xôZ`‚¾;ƒ Ž.<úîšÑ‡|@§¸6³jÄ¢ö6Ì6ÞÅ–‘¹ ¨w’Ô—p¨FAAà?T7<'“0çU £Qè“ë*&1%Pà#PTÈA±Þ!2áu‘Vlœ*44>†i;ðTYHä ÈoQ SJd’ZÝIÇdXAÄ©ÏÕ'6DLÕÉB™ª{D‡EYC4ns»‡²©ÞҜϊ$-mVM1é!\¸rk]TÕœù*†•t5ƒ‰#áŽéìn¨±Á –8Gc1•«©û mÌ-W¹®.Õ˜ªØ*‡>Yʻ˛dÖZwÚSq 9>hÆ·æµ4ÛðCÉqù“ÛSz°Ç U38@ÔMв@Iº£méù¡`j<¡`/D|¼Ñ=‘å=äuIN˜vMÀi<£“¾È_Ô¨q´p‹À¨B2Ej ½Sž]#²!·ºv¤;Õ\ùa {ˆóF òöXJ.'i™.•1óFû«»täënš@Íò¢ØN‰²tð‰ a .Î1”Æn°§bÛq¸T{Ä'C¬é™µÐÖh µ¤ý¦«u DÂÕ‚ÙV‹Ãˆ‡ó~è´õ$gãjs„Š]“. ïR,ëè%Ý_Pºb­Ïæ"é´x¹M¤´ß¨þd[E.”H¨±Ã«œ§u“ƒ”CÃñIŒ§3M¦ZmtáªjþÐ7S™eåì‚7T´ÿ$:r-Ò/ Î8›’èpû­"æ€À"âþai5Ψàˆ@¼8µÇÅÏtóK ØëöD¾£ø¦.œÁ¬DÅ6Ùù «I晋7´§6î«#ÑiÒË@œÞ¡a~Qs‰n8Ù0OIrë¸ä}-ª©òԘê" ï  œƒ÷ìˆ šMÃr+¨]¢ðœÀÚÄȶÊZ"òœ;~…~nh¥Í% šM¡9`€ .ðù/yÖb ¶|!t’xº¡.4èa T,8QÛ£ÞŠe;¿÷ÊÔ’ ð£r{& VÜ'šGÉ=ºdcHL7ü37 á¦0PÑÕÔäÃvß Ä‘ ϼAúoÆZ⃬'Í8é;®.;`¡I lZE£eXZdhO,eAÂjÛæª6·¨4޵Âg×Fá®ÿ’ ŸÍ6—‚}æÆzn„@ÆÿÎPs t²äö@}ÑwR Ð=ø„ oS2ÂÝ÷2vMÄ žò©½Qº$4Ç’t2è¶åù¬øW_¬¼}© ¢§cp¥î9Æ8õ„¾ÂËbØåÀNê!RçÛ„aØT¼-\ ‚='$¦y^’Ž7Ùb,‰™· ÞIßÜP¢Q=ï{ Nñ ¹NòߨÉw(>h…AÃbQ¡¤ÜT´²xMkÚg—à_g59ÀIü¶…ælóÉ<9ÔÙ84Ÿu4I?4æ³L<"ú[‘uøº- ›Õ”ê-OÑP}" "*Êèèˆû'øji]Œ#½‘”L&ê?Pâà5I,q.´r©p¤wl¨Ö‰Í$قٱŸä#As%Ù€Y[E¨ÈñoͰˆ›mô*ƒ¥T[?"t—éÎmÍ¿töÀ»©Çd'茎ˆ ¤ŽÉ 6ò'䃞r Ê$x´Ì„^xµ“Ž„ÔƒþB©‚c ›JK möEóp ÎHôÊÖ‚:uwEäÅìïTèœ_ÎV›ä°l[hù#´‹*Û߸58Ô % ÉÜ'u÷Ln®¨÷¬6²7Á”êZèx7(µ®ëdöQ-TA- D— üÀJ5”u˜'SL\µ½Ë$ø®~¿T烜 DäÌ-M»¤<·ö)鈹òNuDÈø¾é÷Å6ù­(xÅämÙ#ª&c0AF¦éD¿¤È¹O§M¥ŽÍ.ú§tjuºÑ©¤>žwMcNƒ§h+S;Mš"ÞhI5}”T] Á.´Ù9°îëÆì_§õ;ÞÞbKt¦¨m8é²7á:;ÿ… ÚG)Ï`3%Ö;ò̬÷OÕ²ŒÅ=ÐèÿìªvÜ0Pä÷@’%ž &¶i¬U2},VTûÞQœ*Aù¬oº¸F`&“ÿ"‚5@Ê4‰„ú+0ãrŒžQ³¿(HÊÛŽè¹ÿ·’Ä7Í28N9²kÁŸ$ÁIw˜M-' ÝÔzêœÒã¸4§vPçù²kœè¤ú'é2Ïs­äƒµ¥¶Ø§u¶ Ëf}™¢*d šji胒˜÷ŒÕ^{*Üí¼$ÙÖ†—–A¿b˜Ùž-á@¼“”*4Á½`m/i¯ùÙ6Kj¸¡/¦meÕ¦ª!íŸDû¸²$Y2†T9þB{(£¦Î-‚zašÀ¼6OkæÔÓ‚µ›ð–Ú<Ѧ\Ïyå2¯ÚñspP"ý-ßÏü­ic§hþY0:}Ð!ãL§¸j;™ÙVF s€ê ià„\0hÝÚAåÅœ1ßÝu¦ŸT^Ýg¶±°„uø"çù)Íîc¸V5"å9ŒðSSn¿©®eñ·Â¨6)cÍðMšsØÀgè˜F¦c ®À˜0e=ÔŠâs¸Aì¤AðŒ#Ño|í–“‡¼i¿ÕA¸ú'ié³»íöE³²kݤR[¡WÆWKÇIÈBÇó4ý M1;'TÂÀÓj(¥vMuƒGPítÑqm†ËV# 즋dnƒuÑ`¶Å8j<4ã²$4Ö¡:|숨çm‘EùAÉ­yí== ¨‰1pƒ!ÎlùÊ-¦ Ÿº¬ Êjiä'Žë§´ò¿§|ì['¡ÃôXÞë&q‚¥Ì ¹GÙ5Ô"0´‰‰i›}Bž6˜Ä*K[$Rî<Ó´‰Öþz'é¹¢íõU4î‹bàÈAÛ;6CE亡nà¨tZpeÕ4 Ñ>üça‡ì‡Q¿dI视ýŽž9A¶òDI;oª'É1ÙVüÂ%ƒ&éáû„à `#fá8”wçØA Äߔҋ«tÇ¢³»a­ÓZÈÏ S@’ȶèÕ6 ‚ÏRQltŒÂ´bPQ8ôN¶Ü­<"i9€ Ø‚€³º”÷9â{}-›Çê€æ…#æJ}ü7w*Yß©ÎЇKºFhµ·Æ8Zšxx!Ð&µò€Ò=NmÚBd 1t[H4æpƒÏ<&2›Gîž;ì„›çÈ ZC?­.êùŒ:åy˜²ÛÚû"ù8MÐÅ÷ù ×8TšÇ¸12 E¤À¨H„^×:H¨GÙ^[H´Bà1ãßUqá6<„ç|.±ZŠ r«:‘¤qÿiõ9¯e°oêˆk´¤ëäÀA¤‘TØȸ¸Q ½7é¼|C ÚZÙ›8 ‡#dH#93?¢54‰”8ø“)ްoòW# Å[H±'ÄŒø„¡Œ]S9;'ô‘ÌÔÁe5áÇ7%1µü.‘¶EöMÒÕk¬= ÷’[K‘}™L8gl­@i¿åá3Tƒ·u[ ‹7ó'ÐÁâè:ºC²…n$´Þ²˜Ùº€o·ðë uCÅ¢aRƘÙÄ({:¼ót`Àfè -9¯KÀNeñƒÂæ;þPœÐM`Ð$#ѹvO¤ `e<É´N«!Á41²IŸ €Ÿ ޶‰éq˜! KTçªÐæ ~é°L|MNeDt“Ùj8Ž›vÙ }"Q¹Æ7PK‰ïÊkê 3Ä¡^ vØE÷Áhû ÒÉ3"ØE…€¶y·¦.ID°ÃˆÈÊ£SLRážWlmçdŽN‰=¿í ú(0ò£½‘ÀØüøW§û°ˆ'!jÍþIæ[…U}XÊ.ps„7Z{Rw2©`œ Z`ŽÒœK®qÄS`Û˜M5‚öâýÑ`q?²lÚü£1°M,4¹¡ØÆ%zNФÏ<‡؈ô@†#pµÓË„' &†fmÂ>÷Vu»XñõEÐîÞiÇâ A°su@Aô’vWu†Á¯Qºêp¡ ‚kEî‰A<’!Ûq”@œz'L v”M(\,„OK­„áå4ƒt7òR^‹ÜÞp2Q²,cLñCˆôV-.-ÎëœgèœÐ€;ªcpƒ{£2š.¶S6Žºˆ¯„êGˆßºy¤´vT> Ê™ü8NÓ&çt¸a5ÁÕX\rƒZ:¦`'zÏxVssóNpsqTMѽÐYX%^>hC†QÒñÉÊZŒ³Ð@Ùègò©–¾M­Ñ{Znœ$ݶµ¥3P¶Õe yÍ®™©ñ5¿®Ps¸ª †Œ´VØéwÙQªM¹]TéÎHB·’ê Jp’`þ¥8>ZLuƒÝ<Ñ7Ï=Ñh‘¯ICûJuüAgeb)-ô*A¦ãdý3ñ ÐaiTÈÁºs&ópQ¾öDPçéîI…0ÐÉüã nf›J‚ýH;ÚÉRà &mʧ݆y Âî˜å]Ÿª,ƒ‚$— UnS›s{M`’Í®‡† —‰Âܧ<`™‰éŸÑ9•\8º×_’›vDö)Ǫ Ñr&av(8´´ÎV«ŒXnÁ<û–?þN6M—6¨-ÚýG¾ÛÞ†~ž÷SHÀ=½7Ü"ÇEÊ(ãçwú çC]ä²ÜîPü@ÆïiÙ3ܲ¡7u&ȸŒŸ’,àá7SMŽkf—O2ˆ¯¨‘e¶²ªá[ÃÙ6‚™*¾¥RL]Üð„ œrœIúªq|§ÆÅ\t›¨ ’H·„#kÏ(ˆ>¨Q€ + €0 “œ(¤,¹IÎè‚1Êå_áEã›!Õ€óFûÙt¸cdpxEÖ°Q]¥qžÈF&ðQeE·D ó)Àñdi Vá;b~è<¸$ÁPóAí–ØZû ]žè–¸”ÍRNx ~›çÄ,˜T˜kœ7=Ö£iéðŸ8”*&ÁDͺqße§.á„\pÜAÙ?´&™åg7ÙTIc©óþej:›&Ù:ཤ€v£KL¿•Þ-uS^(pÁ2€øaÐQlô±Â›w±(ÃðA.#”ï4lÓQÝjø+Ã1ÁÂ4¼gsú Òã[[I¨‚î™”À&h(4Ø">(ú¯tšú²Â¡ÚsH4ý.…úãÅþSÚ@m@½ÙiH¶¨=Ñ ¥1ÓÛÎd¸‚oOšÔþœ0Ù² +X2"®;YpH¿Ñ?OQä™ñˆiLòžÀãÖ26@$[͈ÂüFk@ïòLÖ}-$@E¡í&:@Z^ëPuŠH ^÷A6ƒŽ‘|Dy ÷ôtøº¨4É;òª.‘±*‡Ô!À„ö—“ÔŽÅ8_Ô¦ßÄȲÞ𒜠ÁN·„!´ûZl½vN6Â$’j™9Ä üЦçtâðq{§—/¦Psœ p‹=¥KÄêÚ—•\[7N5!m”Òn¤¡sòM-øŠtp€EXyÙbýÓÝ §>6G¤ü0G’.$§`™Ø'TeÅN‰”{¡su°´\"Ùâ °wNÔ 3hÙCXq6 ÎyÞÞH8‚Q´Õ¥ƒk-0Æï Jy`ÔkàÏU“ ‰˜žèþßÎSAiu­9U´pàPä æaÃpŒ—…§û˜S¤'=’íéÒݦ’Tz CÅ…GHlÝÄ&4>™<&‡¼tþSõOo¼/iÄÀÂqyÊ&Z ÖŒ„ µÍOð… ÓÔd‘M2«`Žr"Ñüå;Pƒ•§.ñ7êšZO¨O!ÀÊM8B@™ÁUÒ|²Ÿ’d`##¡§#Õ9Í$À¿Ÿ(YÀ¸gÕMmê¶7D0‰ÚFÈ 'ó-Ê š9¿ÜpQ¤=Ú`ù]Zäò±d!®¦×±*“Mê0ƒhÇ&ÈHÄátÓ‰3¶¸5†›QÈ?º š¤ÞQ¡õPý²w¼¨^ÒT´d&X¸±ÓIØ)ÙxEâÈ=ÇÔ™ð¾òß4÷Õ i½·ýr¬Ãá2‰?ÿQ² ±¨‹í(= ™(xqN.˜ËN赎ÑÕÔÜ‚N¦³&%è‘?¯ ®‘Õ-iu¦ö7x2ú!aA8(7åñ¶rm,f$ØvCY  FusPÝ=Ú`DŽÉîhû,í0$‘o$/²ÎL oÝÊ j¬  ÿT^sÜì®𬅄Åü“´Ú`D‰Ç Æ6Ýó›#HqâßT.¯ô(2:T–š¥xÇ¢ÈQý±­ðÖ¡éyYÝC[tDCÕ„ÿp@›ª@éj°^±²toºÇQ@kYî°%7&ÕaNè1 t÷DƒõBótðö‹„ |<‹”ç¸ ÛdñSŒH&Su¼A«H¸S¦ ½àd9¦æéÂZUqÙZ[Äl¤·ñ,å8À;ª|4·0,¢nÓâ#ꋞA¶D±ä=§§A‡´-=GSyÆ ,kƒ‡ £€BqΟ(´‘”$ÛÍMB~K¨DNû§Z/ !Ðc(èµÃ°r–îê“€q ja5Í,2n±ßxlLî€Þÿ4â@°çÄEB— A¤ž¥!³&cº{:…­oæÉ¬p¥‘ÍÐ1MMßéÇ´š²qäáWÍ.^¶E† bð”CÉmJK€Œó¿è»#I7@A 7°3òóZ~TøSƒA0S ž¡ú¢é‹DHº, ‹Pý Ò麨j4{܆Ðè.ï#çÝ.ÞÅHËEú{"úä70Q{:]Úá F²Hô>¨‚6ÿÜjmZa¦~ªõZ­sË …¬€¼À8@ÆÛ¢ Å•pzïtbzo”ǽÐ8AÆ5,¤à¡®À`“[aÓÐLÌù-2Ù&.ÉE&ª‚hÇý)lôæÊd¿·˜´­7ƒà?á=ínM¼×€› v…Õ5D‰M=ôí²4ÄÔSEm0:‰7Nl„êœÜFP‰Cá~S8^¼!¨[¼LÂt9¢9˪wÖ]QÝXk&C¦SšNì¾SÞ_,ÿ¤æmìàP8%½—N0dmSÔ?ºƒ"ÉÚû‘Îð‰y¿!_àS€Ôæ†ÚV˜‰ƒÝº6Ešò@òþBÑ2e¢á0¤‰²:n€SˆŸTDxQé9݇L'`òÐ]s}ÑdtÄŽ`§A&˜ÂÔdt@wáNeÎpµ‘!ÆföGX‚ïî|·D_È¢8¼ÚÈ{ßv9i2SˆÛd£¨XI«8ìƒÓÌÊu2îÈ>Í äp‡OYÇuH>/ úŽ.Â]sÙŽ2¡®ªƒa7…Õ%ЉÒÓ¨ùÜ*Øæ¶¡7¦ÙlÇ‹º†æÜ.¼$A_ø‘Â8‹MŽP¸SÝ uB,ÔpµÖ™µ@Áî¦ô÷Aͼ£¥ò„ö8"—4 àì·AÕ8†ÇH(X8 Șát-9rÑP´¢ò%“ôÊ‘M6ƒÂ,o¡”?Üeu7ª SžÑÕù&šKZþ¨}ÐÓé—T8á'䟠àÞ“X3wpƒõ€`sbá.ð¸ÚP©ÔˆË‘cŽ kN\vUéÜiÒh¶ÍZu2³¿öÙ<ûÂñ… á9YÈk4uࡨ+`p»FˆÊ.ê.' Æ0œ4ÏQ&÷Aî'ÑH$\®N¦ö„÷{-ž×O!ú¢1²pi'€çH@>ÕeŒÆ^Ð3|Ð{„æûÃ7§Î,Pv£Ôt A)Ÿúf·ÞIŸ’¯U×wKDcºâÓ;âì·OhD\[u|Õ$ÈnGYÅžþþî`Û{"Ï…Ý[裒Ž0Q?dK“„!Ù#YÞÖDžWH$÷Q=p‡Mÿ0C>©Ïq6†¦¹à4ÆÿË*ªÞˤ}P.?T&ã(µ ©¨N+ù'èê> Mü¼“9Éú€tÊm…è…ì{¢'tÙÁ,ŸCm?ÉZr<ö›¦¿-Ì5€in ±*ú“¥§!©OCšè>…1Í¿w{îVo4æ9S !æœS­…þPZQÿ«  ·dëJ¼ãdT¼âZŒ ˆ@ASú]KÁ-„*Ô#°( \xºÖëÓ•Ô;÷G1HÃ-我Œ $ð‰0€<)l"(ç&˜ßÉ8Lñ‰´&É’áU¹[$ z•""p¦‚]äQòN`uF"È~ŠÂûJÃmÂ~›œK¶¨Ê³Üp/9‚ ('„MFÇ…Ö*tÙ۞ǀöϪ"“-ëïI±¨möNêmðÂ-¤³§'~È2r7^"ÞÈZñ‚vLx¢žgè£%ö› ”ȱû'´ÍÏó„*i¸¼î¥áúPXZ9ا2!tð‡H/@ýÎÉïÓdݤå<·×Sñ„_9j|1²™¬½äzÂ÷ºlè'·tç@ðÏÏê‡÷pUQÔ•.ÎÛ­`ó[]9Ï`šêº5[׿ˆ‰pXpµXZš4~æÕ Ûá[nTý*ÄR"þ¨‰½@=Ôƒ9,Ú\ŒLçÞ÷M/iЀ1½Š,x=ÁÂ,Ò :s¿Ññ2pÜ÷N†8²z:ÐÔÒ~ô›œržòç·óöUéÁå䄦ÖÖ'KY‚¨6ýI±ŸL£«GâÈh¿L"ÒÛ8b<%iÛjUÈvE¥Í÷nDy‘tëÊèœ"#­¤L¢Ù´+K}Q=§©dG`ƒ†©?ˆ“stýS¦z£en~Û'2F6M÷„Á$Ï…·±út ì =G`¿¤Ö"Í4ÛèUŒ²Aú&³CNXÙvqüçÉIˆCN¬îO„ ày#&ÒŒP Þ#”Áê(^ý—\UäQ3ÓÙv›]H¨ð±Õ8FØÍ–0¢ùD’qºéµï!aOšve¡;Z [IBãû§gFA›"ÛTFåal®½Ûî°#hD˜Âƒs(5Í0NáFû+;%8öC ‘ÆÉÞJçæ‡ê±#̇K[Nj¤ÏPÉÂv‹ ² ·¦«ÝÆ›X¬@¬nwS`{] ?@Ä2<&-€…‡(€„ý3ÖZy±Ca§”á·•N°o#t Iâ'PvÁ]ÚxOÓï÷N±ÍI´‹辑áhªQgY˪¯þ6N-hf#d÷é—f`'NªE¶åz­”Xs9uî˜Ò÷I¹Z <û²| ;"òù¿Ë•MgóLÙTÇälߢ÷nðGK»-<ƒ‚ˆX[cge 1ä ›ò‰{ª@[+Ñ@¬ïy[›lš#Ì€¶6N8î=éÙ@hõ.“7ãtà:KFÁAªãÝÔ‰Éì°>HˆióN4´¶o(¹Î„ÊÓØÂŽ^KL  Dψ¢é‘ºqä¢Ó2enÛ¢M ¦Ûmtú'5®4^Ò‹y;¦&ûð€µBÖ ±9¹Bm¶FZ=BuZPÝœSCKKå–^áߢ.hšržÍA¯ÉuØÚž®“LÍàÂpp”’$ñ²>âZ á]Ç<¢¢_ÝW¨[¢:o!¤ROš·`~È<0>ד(j0Sk‰@€é›÷]@C]"w@87Ï)´º›^OÞ@»‹±ä£Äö‚ËÍÑcOÅhv鯭3ô!\•ÐcNL_ ºLoKDg=Õ†{ûÑ2ˆ”á•¢ôFýRöC…Ÿ¢5x¹*êð…¶TÒ»F „â7POLÞJn6*»Õº¤4¼Ÿ¢ÙQ5[,„Qh_dKÞ\ƒÚͰJ¦˜odC wª5¤3)ÖL#•ក ÆÁbó‰C¤È€wOy{EQƒÊ`ÈȲqâêÏÀá1Æ}Ù´õ:§x?ÉEòKIiª`è†85ÀÚˇA6YÞFÿ$AphŸš-SÜGÕ wCM† ¾!ÊwSN¤l„=Ö3‹ª ¸Nˆ  ¶‹£a #´!ÄÍ–£g }‘s¿U©c?Dx”ÒïÏwJˆ1ÇÉ8N:nŒúm$Ý7 ÇÅçÊs,Ç’›c‰F¸›_½Ó¶¤mºx\íÊD‘rFcmªÇÍT`_Ÿšpk‡½mÛÕº´ïv#þÑ{[4uZÖÜ'éIñ2ОʼˆÜ&µÏÐkËžyôMZn¿' ŽÔ„XK³º.uˇ;£6pÞlP Õm\ö{ó¤í2 p%'j;˜#¤z§½Òé²O#¿ ¡„Øñ•[}tæ 6´rÝÝC™ƒpŽ«¨÷­6“M]¼Ö“}á-" *Üvº{ -©·pºõÙ¤÷w9#0‰Ò#YîÑhm¸i­÷d˜‹„Æ9ßuþå;@‡Zé0rkºÄÁ²Ôþ›Þ|{ñº¥î%ýÔɼ*XÐë ‰8LSý·GMÎv ÉÝS$L÷]où¢ÐòòFfb/(Ôm„CäÒ,W@}s4ÏÍVöºƒcå(j;" NRi¼ 9›EÑk´æžWûwˆNëðÇÑ;; ÉÞ.… ù©Þ>ãõL|‰p€x!aÐbÿ4Z_p"cu‘Ý;Mãä-…SÖÏÛºÒl:ÈN,ë¿dL¶z@Ç¢¡í&¯Ì¼Òmš.²:®` $º„7á?DùoHvV ½3½Ó_ªDd '±áÆ“bMœ¨&;#Dа ÔÐ!­tsžÐƒìÆ4^GÑè*á9Ýiû·:ˆ37!8¸‚æ“êkLÞ_IÏ‹ºk™Ä ;.L4ýCcäöD;Üßt×5§Œ ú®Ó¾Q h¦r ù#§¬ö´ü?²/>!$”í7¸éìù7M#QÔ :3䡪÷>KƒªÚE{çrÁÔ÷y.‚Ñ`;¹9ôê1ñg†(Ý{½ÑDwCú}&šðç¼Ü%_Ô“4iÕmZG©<:Gˆ ®uGKápl6@ ÜÝÂÍëì“Âr‰.»y(>îó'²ª+hÛ‚SÜù÷DS|&ꆖ›½ié1ÕT.ç7êîD‹çîœb›lVCŸ·`ƒµ¦‰åi8ž>KO[¤‰ù( g”Ö¼@ÓêBˆžÉÞƒØå¼4 I@Îè\e´U%sê€Tè'”AåPô^œ+B¼¬ßtg…„-t-ƒ².¤.Ÿ êZ‚ͦҀ·ªÂ"2V( ˆ½Ñ1‡*ßþкÞ<¥¶Xºì€ì~¢7C¦L/ ¦÷Dm4˜d¡yÛÆ‹ ¼¹ˆW&7ººf¯æA‘º ÎV­¶Ý4Þ–ÜÙ>ˆŠ¦Ë£ ÝjÖ3›|k±üÂs€"ã(9ă€ú” ^-tàB47æ Ž˜´„A™dëÿö[á^×D7ª“!4?â&sø™Í»§29M0p]nÉîdWnˆAÀÿ<ÜÂs ¢\92‹º]k"ö»Âñ’¶›kºïÚÄ'N\6LmF2aÂoÞ™`g”î¡LMÂÔv›]š;wLÑ{]%æ$ctÃXðÁ)úzŽ–™%i€ÒK@3Ê÷Á樒 û* Ösk!6³á>)F’2›q„Lí{&t€ãÓb‹(qE¤ 0Zžy6Ž£¨k»ì‹#©®%<5ÅïqènTêϻչU¢ÇûÆŽªGHîº5Éf°òÖ²k×~Í.„ZÁÑ5[b˜óªÒ'wG»?ªÓŸêC[œü“Ø^u=ØÈž¾÷.#¤Ÿ-Ö .:ŽÔÿ+QÏ2 ,µÍ¤ÂÄõûÜŽÞÑÂs  NA^¿û‹Ñ¥½sñ`]Xˆ‹­â%¶<„nn @Ç l'9ÅÄ϶õ(ktÑ9 æoUV Æ£TÜ”)]É@û·Q"AÌÇÑi·ã‹"£ôÍé÷‘ ?ïèˆq 6¿ª KFßÏ%î °<@Úa9àxÊ9NE½”}Q’€*r$­ò}`{’…2oRP0­YA_…éÊ,‘Ê„çJÝöV?$|ÖøW5bsº0ä %B†Ë‰±iœ]Ò‰o†yþJ¹'¸ Ý‘uò€·ª L„XNÛ¢1 ÒKt¥HH(j%£è‹D,g&'áìh¨m9EºÍ»D‡€$ܾßd,\Ä9U€êÂ^ ®‹çnPéêìS§Å;㺨7EÆùM¹AÀý.‰kxš¡`éþò*Åб{T€»z¿DÃï‹_ºжxë¤°à‹¦¼Á¼Aù¯~tÌFÃmh6{ù ÓŒú¡¤þz¾D¢À×A=&6þæ‚0 Ÿ$ã@–yc¸NcAf¢Ô5ˆ”yòÙaÒçxÛ#>‹WÝjÑ´ÀÝ`èì¤D [ñ9„×Ë[H‰!D6Â|HºÝÿµ9šn8™ÿ)õ3TºÕn‘pÓšMìëÝ(›"çuËvNf™ tHáCúw9íh7X!ªuEÔÉ1䎎¨©ã.ÀµÞ÷HÑÝ5ŒÓ{/4V ôWÀoˆˆD·­ñxr5h‡:¯ìŸ^ ¡¦ úOÿLÁ-1*—·{øðMC™Mcž×‚›K¶è¾:ctÛ»±_†Òdì-óEî­#ÊÊkÚ ø{#KA¿„î¥Ïk \ßÍièûÃÒ IÙ/pÙàäL M@€*híöAÓ1ù#¬ÂÚ´:¿äÍÂŠÞØ `Jqp2r‹ØÇ²î¤.М Ý\(@ª$r€“óW@Ø]:èt™rr~ˆy!-Î(yÙp¶Â™ÝFB²²êÌp®/º ˜Up²…ŽgØâðM‘i–áµæ;ºÈ489þJ-óE”»Ñ=Ñ ‰…例NƘF$7É„,ZpW„1óŽS™=Â!¤‘›r´œð \à.wN˜ £ª|FÒ /wMðL¦ÇGp üÖG¡¸AùœŒY:ßø£zI Ð6›«LŽû"ÖÕÛtQÎ%n‡Ã{ÝDHðÊã{Bÿ‰Ï*j.i;ŽT†ÓÚV,;”*—v¥I/˜D’<€AÓ·Bß$׌óº|1ØñæRe¤Øò´š ´Ý¨>eÀ-JɈœ $™áiëÕ“ÊdZIt]iø\w7@=­4æl!jyPÔ”a³`ëúþˆ¼øh©Â–õ=å9ß"O„ Ûc•UÇ‘A®ÔuŽÜ mÕc'!FtŸ‡'Íb)²¯i¬Ž¯8E¬š´­ bÇx©‡€‹=ð.oXŸ†ëD³DgùÏÝ`†¸ü;mºv j´8K²o²> u#k&´¼¶ÐáûãŽxy]!CDÊmdò]kF—4ÈòOf³›K™ÎÈ1íÞ&~¨°“beÀ¡Þr ›àῲt4LS|ú!¥jtš•Ûd5)&9FI7ÜÂò  ‡÷E®vÿU[Ü9¤ìƒ¨(‹ÞÓ‰NlÉŠKei{ (O¢ÙsÁ‹­=ã¨ð"FrVFQ½çdC%ÉÎᨘ”:~jêëXU;§Rv@ìp;+…4çl…‰Nyð„D] ›ÞWxU7Hr2²…óVù ¨Â6^"FÈÐëw2GPÕtwé6F8´”d\v/²x’œöSÚâ}†}BHò(FéÿÛ‹¡-´Iò@Žr üB?à§7Ýܦº“žP0Òg{Ê—‚A0‹'ÂxD=À»’œ×ˆ@-=2TI¤ªyo„oº çÊ<Êýppƒ@›*\LßnëÅW¢mdI ܺ麄si=”½ä žmt×ïk"ÒÒwN䯢|mF@:°Ó=‘Ô{é{Ódá;r©oŠL܇ÉdŸºñÆGtF/Õºi’È888Ó#u ÷¸†‰kà|pÓÄájiZÇ‹Cv;+uR¯»PŽ©;aTa µŠ ¶Ó"éůnwÿÚÄÞþ€lsZl´Ž™±&æ-Ù0j>§Õ{y¢Y¨áP½×âCƒ…4ˆöîõZº6)›|—»våqŒ&jÇÒH ¶šx=ÐÕ3™8Ÿ$j2éŠdüбť ^ :ÿ$z†«œÐàÒ€u fnüz¢¦iéw~ȸXÏÌ'²“C±ÙÈmx$åXdI’ˆ6/uIÆý¾èÐ|¦ê^âoÊzW6²!òjÕ¥ÖØ¡=7å<°˜ÅÐcÁw‘@‘‘º÷ Zb2‡õ Cíâç!h=Œ>õíä™8Ç’sh%ÿœ2SÙ871u3² ƒÉQÝAp7ÙR°N„Oè¨úûmÊÇÍFå (”Bx‹;eXŸTp{§AÙÀ©pÝ`…‚Žè~ˆÈNÁN¥GaôÁ‹&ÛmÐ!îìÜ59Í‘±².ô!az£ƒ#CŽÞÊ–Ær…SêŽFd&½ ù‹ ´ÞPɪbÙ5÷ˆŒ"lk4Òp‹^è#r.Œ‡AÊäâÐE& £{Féq‚ ö8ùlˆñYE4¦|ÕqÐáÎëH›ÕÙc#”z~Jm+§Tƒ;£y=ÕùL{ŒuD˜5&  0·cûª „͉u¾‰ì{ƒÛÛü'—I10Pòlª›8!ªbùÏ%­¦á-p±d,^/دArQÍÂý0jž“ÒãP²sô´Ãš'm“ƒá€ÿ(5æÎêº- Ú¹;„s¹@<׉´X› 4êäñ()! dÁø‘iÒ5NUoi0ˆ%Ó²Ò{÷’œ4É ™e ïƒD´ôÊÔ {š,f®³4ÜÆi:“'TC R)ó]äi/zq1–µ&h´R|qw*ìÁ˰½ãõVûæêѽ‘×Ò{Áù/]ÍÁì¬[½ÐC­&P½Ü#Ô"}ëÏ“Št“SÅ•Vm¯táÎèÙNê$ '}—S€µ€7…âþ&ÊçæbE7F½K=ÒI_í°´·‰”XDš^ÒzHØöZmði7Z,sŤ 9ú C)±² '8ª"åovN’€ßyYŸO`3²<¡tu¿ªpè®<…1ŽP’œIù¨›E¥nœAA„…tzHõWÙFÛ­‘·Í EÑ#Ü #rW͘˜{X'”ï=Š7\Ù (S¶Fè`@”aÀöBÔßÕ{·°Ê꬞‰½ŒYØwSLÒq¶è¶:‚c7Ø C›1û" ù"ÒoÃ+?uA#Œ¨¤a<2-D+CQ\ÃyÜ"ÍSÆ}Sôƒ­µè½†è°‡o„É7ƒu&ÖYEbœðѳ\?¹µÚ`ß„4¨’œöžˆE¾ˆTFyC i”×÷²v¥¡†›gÍÒ ˆر¢±’ RäšþÈTîAºeDbŸU¦ú€¼rƒØZmŸ¿d!Õ ˜&þEÎöXTµ¼·VWH&Až<Ó_—M$ÇÕ '§„[ÝRxÝ‘Mýœ1ºêÔm3ãái˜{ï=BHA€[’·™]5ÄÄìŒf3üý|–=™j âdÈ¢Ùjf®”0‹LýwOÓc‰—´óئ8¹ÙéÔµŸA a¹Ý–6ÅTÕ6*@üR߯ÙïêÇ;#”Xçe‰î½ìK&Èé—uø‡˜Mx{”µüA9¿”ÚÄ ""èù!eb=ØÜáÙꤷeµŽøAᡦvDž"Ò{œQ›ü‘hu€¸`SÊœ} uÉC§ª¤Ò6(›£oF­Ï³ Ù‹lº!I(ŠWªê$8@“ºõ>Ò`‘!PÙ@åAÊ>j»5Yd¬ºµ óTžºðÂÞ£Êoº±RÜG ¬wÊsÉéØÊŸº/$„]#µ{¾)-( odF¬zîŒEòEŽwTYÝÔGTî0?4Y>-‰N&h‰Ê0ÌBá·Dp9Ol‘t^ ]y@h'º˜R&†Ñiå3UðŠJ-øO §Ë‹ªéE•†Ô8”ò÷sTÙ¼º‚fí³mü#q M…Õ¢"ð>©a¨jžµîï3¹PçÜŸ GOᘺq±’´í“Ê{H¦«Ÿ4CÇD ¼Ö©yÚù²dÝí6¤}v”àtÉx–üÓ€6™ àóú¦6Ò'Å ô9õ²øDV ȵ'5ä:JÕ÷²rL §iwÊ:ºƒ«ÃÑ~—8É”÷™¹^ŠY!_Ó‹Há9—¦3 Æó¹º pbÄ`B,ykní×[ÜjÊ­–Ìî‹Áu˜Ù1­¦Î&Q÷‚‡¸ìˆÑ N;žeÒZùÅHŸêÝS=-®wß„4ýΛ¹7L²ZÓ³8CXi±á¦üä^DúN í±] lƺmpdS'~ðTA™ZŒy$é’.ª&-Êÿpe¦ð®¢‘ «•ÍøEµÓèŽE‘l9@€HÝ–íʈèŽ.ƒ1âî¬NQ.nÊL#ÙωV9دË+ ØâvåUù•Œ£+û¥"…À¶é¶Ý,ìˆFäú¬n…e` ðcÛ„,€(ù§Ôœìq 8€ƒJÇ¢‰“áA”ÚvFäi´ÝöA ú pl§[H0ÍÄýP&-"S› ‰ú.“þ·wNäž.›Ýó ÖÞܠ⣰œ&*¸ŒÂmÙ6ìªx=œSØÃëÝRp°GÄ_ éÀ쩾²‹Ì‘ Àáø‚Ã?ôž\>/ªp¨zª9å@nêšÇÙ;쨇¶Ü'ƒTM—‹ÂQcÉB ºÈuÈþB¨‡y#À9¿ àL7¤Êh½Ûð† ô@Õ¡^ÛÎÈR<àrƒþ#–¦÷àöB·ˆÖZ~é»?d_¨ÑUîV«HÓP´ô§V¸~„Òàsuî™MRåuD ÉÉF ŠÂ¤4ácÂpEÂf¥T9Ý"Ö6ºÔd Ü-}÷®h Þ¸TDü‘#Ã(<éjkKrßé½Ó}Ë„O‡Ì§Q¦Ò" Ô ƒçe]ÂEžyÓä}‘k˜7;"?©v¶‹ä¦4ZÇê¦ šB Ç9šSfÙVYÓ7‹Yßám(DØXÆÜš­él.–“Pý±ü”u© HˆÙ40¼Õɰöa¡û¡¨£¤¢\(GŠ6W'#m”¾c1¹ýÓۦщ’/äQ^ä_Ñœ(‹î…É´e4ëíÊ>ªˆî®Ú‘™V@ÏÍZVwÝY²±'Éü*ˆ’œ«}Q°ôXéØ ¬¡e€¶N ¸Â7ËØ{+,`#…ê€çØIPoº®S@še9qÝjꛃ¹*º·AæÖ¥å?E-?5KþRƒ™‰·~È9¾ B¨¯6¶7GR.Ü ã[M¤ìŸî€5` †”Øcšðnâ ê:nEÁ•ÈñDïˆAÍênò!Έð úúÀ:z¾(TX-Ä‘p˜ù®ñ{"X-ÜFé°F7*K€áÍ)à”,@wd[A}?8D¸E6 %Sž MÓΗ5­%䙺‹‚˜cÂbéä ÏÐû Nv.(·Ý96p3o$ïÌù!~T¸IÂBfÅ<;SÄ,Ò´µ z ÑA›ýî­ûy-V?Çl‘k ˆÜ-&µ¹”!ÍŽ M-x±N‡ZðWN©‰]~ÅUM,üÆëG«·ÖP%÷vCL»Â]sfþ‰­œlˆ„,…×=ˆ].»†30mt_”pÜ* ‹^P ña;Fâ“N‚s‚™‰p³Aî±”ÐÂ1{(‡XpNƒCwD4Rß²7#…”Iãu…d }ÆÊÞ(A†M¾¨˜‹eþ¨@·e0¡ ¡d+!eÃGenl€…²+ÓØ ѶȂ‰(£ä»wG ï"ûYt5 ” ã ¢MN¼`œ'dZ\âÙŠ™TÉ­¢Í;vDÉv;£ ŽÈ’÷2jÛöN.×Êu¿¸O* ÙPù¢bÉÔI.þJ &lEŠsØI´ÀÏšpø ÁP ÇÕó½&É®.Dy&ºZã쎼§ècöþeA{„böEŒÕ.$t:.œüh°(w‘(ɵšwBda8nÓc(<‚4ƒv?Ï’-.»NJt|'~‰ˆÂˆ4‘LµªºÔl\A© DÇ¢p#{§E~ls &F g‚žga”âo;"µŠ78b÷’øÌl© pª{*k¢ÓñlSéušm%††5ÂJgM§ÅÙi²-›îººñ›´”÷ÒKL—lÔ÷PGÍu¨ÒàyRçn€—ùWX=VºÓ#®òðxEÚž ÛV ˜ýPh/, 8T3Q×ñ4 }ø9iNÕtÌâP¸¹Öã|§8¼6¨e5Ðsü –/s‡PÉðzÈ|ñê‰atÓ;ûlŒ09° øJ‚\ Çe»m Fê@õ[›ð‡J/“cõN2AHó ÄÌe Ü{"¬3„×5ǤÞéÚÄfð€îˆˆý¿²èB ç…<ÊtÉ=‘lýS%Ù˜²¨½®x}Wäœù6mä^yPG↋â›§œY„Gª¤˜º#ÞkYjiO\ÞwD=«·2ƒtÝ-ä~Ëß°m¹Bd:~+ A욎@æP#DûŠ¥¨ZÁÀ +;¢I`¡DíoÙ8Éô@¿Âç^+£Ã(ƒ+¨ì€ á]À N¨ô‹÷BZɺÔpU†€¬Wn¡ž¤@ä¢ZâD €IîÔJ_䩾U€«É )Õ‹Îêi8áÐ…S=‘hVá… Qô_Eä|¡"/Šp®vÝanŒ¢üö…•¾È˜W³{"â@Ÿ’ʉi~ëÂJl´ÍXåÓÖÁÛÑ;Ùy$j¹ ŽvMlÞ×oa>i¶'¬å2¦“±„dŸš韒³ Ÿ‡˜EôøEHô‹öBš`Ú Fû„áyº4íÔ'Éut™T[x6@d˜õB°Úf1w.·¹ÕÅ€ãÍtGI]§Œ#I1>kÝ9“Ä/v÷E"?ª qnl@RX@˜Ês†@æP}]q¾ ®]Lxá š;Œ÷Zæ~Ê@Ê{x;_Q·íôAúf7vô”5-ž­•:0œAfE‘Ö™hñ¡Ý¿+&Ñ0‰8¶HL}ª˜)Ð6Bäß„C]F´ÕÔbÓ¢vž©s©ÃÚ~‡`&o€ Ò>ìœMû!§à«â; ]1²`éŸä­MOêjt…âN;”ëLòZI?¢BçrþŸQÚI&Ñü…Hw¢»D§:˯QÚ~M´/ÃmxoK¾²¶ò7@¸÷6] †Ð6iCÞGX߆’Ä"±*á ÚS Mù@T1±EÄ ì…¾‹T@‰ä#|¡HÞl…€b-§dâc¤D…Ý@"'” Eí2a$¢T쇞å9ñf«ª£k,«”Y3Å•vÏKU”_Õ; *ÂTÑGLfaUSµåË7„:•ÎÊéÂÊåº]•ÜvWö¸.7ŽQ°Vá5€&€7ÝM; ú!Ô ¼@¯v<1(ÕG$«8:Ø%tŠ„}P˜ªœ”Z9Ùi¶iBÔå$'cOý£Ðë©8ŽÈ¸·poåttßÈ¿Lî® 8Ï 8D2Í-ƒ(=ðì˜ÿBƒƒEH=ú›Xƒ5HwäT1Œ‚ƒ z¢Ã}'`Äy&´OP8uCˆ¯=Gë(ºœå8Óí·(벓§ZMÕZ…ø³ÂyOÔhü O" VÒ0v•L˜„í ºâjLeBwk·2œØ´UËþ“Ùï|"D¡{x„^áÖÓKiüÛñ ¼IÈÂae˜[{ð û°0lµZ ’n´Ä[V({ÊiÒf¥‰NÑÕp³O‰Ú]äèEÄGiAæ &E¥Eš"d æ›üéÐØæô‹ýÐé´¦µÏkŸª»šjÆè0àì½çõ Ôxvtè1‚vN0hx0µ4ÞÉÒ"Ò.šö‡“¼úyªžr*6Uj¿£áBÌÄ –ÇÕtçb ;b~ˆZÎñ¾i"¨N°.×S¶Ý¼D][lBkªÈ£hXú"'®w)áÄŠ·N$ߺ +ú"ç=¡ÔÙ£„|3…p>H_êœØNPc^IÀú"6ˆˆú¢âÀx” GpP¥ÀZò ¬H??ôÊ7öd®‘7WN3[T ••™¿°‹å{{ŒżÐ$M”Ô}¥¤FJ%™ìƒß³¥ÍùBç„¢1Jð†ŒOtZñpw6D†ú„1]áHôOa#8DÔd¸í"TKA<-FÎü(yë?XÙ4Ö˜¶T<°‹:,†£Å^C(‹Ÿ%‘O’¸ú)¦Q}}_•8ÕÑmÙSÞéÚ/š'ä€÷¡áÇ áiðÅWDÕOÙ1ÔÃfíx¦ÐL gÂfʶ4Fcô@äÇ ¤]1Âw„±Âœ]2‹ 5íå÷ås>ôï ®ÏðÆe©s`» ½2DßYAú£¦o?U¬öM.ݲ:sSšC¢r%ƒŒ†¦ÑûËöå5²-ⵜb`ì É |‘º=^…{¶´ÞÖû¯vÙì}tSÝWr™Xð“`ŸÖZöütƒºšÁÍѤȾÊÚãÈÉF@s# wî›Õ‚:¡R][ͪy·øA¤“kÊq2Ñæ¡-!Ó<ˆA¾íîl^ÛÂeí×CD8¿Pè£Â‹¦¡°ý|Ñxyk;_?IÙÛʯávðíðVw´”E·(T*#b’$ÐÊ&vÙYa9ÄMàG(áåmU*KQx= 9å8Ùa`‘¡Ñä„£ T‚nJó[[¾Èʢͻ…þµÐiéöé„p‡êel€m”ÂÂÜŽÞÜ£(/¢ÎèÝÜ’Œx@FJ¢ žJ æPÀìSºŽP½¥04Á1RÑŒ„~HŽ9ƒ’föp9äföE£”C@!·Ä]h}¦üàùY= ôÎéϬU ÆèþÍààƒŸTæÃsh6E¸6B*’6á`af%1 Û–¼r›ª#¨ä"Æ_c(VeÎá=µc•¦Às ÓÓcŸ[Áõ²s^àC¦l?d;´´Bb)'tàP¿RlŠ˜E7*¦í”[±@Ç\_ÕÑêƒF¡ »E¼A:I8-N§Å}ýPÔ{…S038NÐ}Ý!ÕNËWHèN™ †šÑMR¡¤ÔDïqöZ…íóÒ|Ñ$û­?ºÔ “"Ó€œçq;¢,'d _²2]Îa= ]|‹„ê¦fö²Tìƒõù<;dèi¥¢ðS=ÝE Ž£Mã›.§:ʳæÛAÙîqoLÍÓšÖÔLÃQ3.à§ߢê¯Éóá˜(PA!ôØ+PZbÅ\ §MÝz}Pï‹e mòny ·Å3€U@S£ÿ%rZã¹@H>›¡ ا´@7 ü¢Çºñáû-Џ²tJ邲}BÁL ñVÖÙfî@I2p¦CEã Ñe0Œn®í¸& (õ˜áXÄ„^ˆS¾Pê·EÏhôRá PmY;” HRŽJt‘u Ü+£>Ñì6¥ávVŸ†4®’'D˜Â’6@DJ%³V@ºp£¦m*Éd>ô9ƒÃ âÓä¯ñ0~EZæöF™ÙNü&8;Âb“º>×¼{›S…6 îcú±©{&>LRÎ npŒ¼¹œÆzzƒáSÐLlùDMá3áÒ8á Þm9îߌ#ä‹€ÙAÄ“I‰ZàX­,zž|yð…øú‰Â# æok.¡¾è44d88H0Ø¢Ô² €mUùAÌ=$uÐwW`üю—Ôæ²…8¼—Ý9REâÂT9Â!MÂÅöºÑ:­!ÍiyL:bª àìœM,t§X4îÑäP¿Ñ Hû!!Çy@ ˆÄ¢à 3ñ]T\j&l«’ØØ!r]Ùj“K­€ƒ)2{©0/uÕ6î©Óo(4œ‰¹A­?UOW¡Rˆ{îÜnÑ’‹ØçšEªýÓ‹úoû#£¬è? ÍàÂü7‡=Æþ¤¢Í]7‚ dÓïÚïx(4^Û¯÷*°—8®‡¸ù•øŒé…½SE!µ=¶°we©Ò~«? ¤¸“¼¡Ä/îØpû !4E#ѶÖEÇ(^òš^I|qõtDnQhw¨(ß²¬¼|ÖwÝ:Û àABëÑYÙNêp€!pì'u % ¸A@œ+¡'¯tèRFè ׈"*í>¨[t#3…ÿyî„„oôWšcæˆÓ~èÓ ßD#’vÝnÈÜaQÜe<;P»ÍtK_»€N¤‡sÿH1þ ¶Aðç^ã6; C°8ázD§Aû¢Èt+lžAôAÁ»x¹VáR@TÈT‘Õ7ê„j2{9R Û”,T¾1fÎJíh>TÈù Qà U0ŒØ~è>°îA/h´qÝ]”ÈB`¬ì›AðÐ1‚WOˆߤ§R!¸îˆôMx ¤ýТÍ6UÒAÜÊ{Ì\ìcÍMÚWáÓóA¶‰˜æh–^– Ú"P?œvEíi ¦Á¬ÇgòZÌñÈÈGª/Ê%ÄØwCMæ¦ÌfÅ@ÜüXOy!Þ_DDxÜ¢ XáV$y„@äTLÛ"蛑ù–›ÇÅ”4Áœ8Ý"C Æwáa¯Ÿ L©Y?œy)¸Ü OTŒˆ—2ÿ40tﺗTÖ°‡ÓõDÒîŽé¯v M6±êM šH¨ˆÁÙ:\3hþ]M¢ã'Þg‹!·Á1(‡ƒ‹Â·*ÆýšºÆèöÂiß%ôBä$z«ÌÊ•Y(‚ÛÂÂu¯´•%Ä %N-² à]VdÙ$ZBi‚}¹Rm怔L"@E;l®\ ¹>ÛоȂ‰ WÊ¡ƒ}Ðx'ÕE¼ÊÛ9Y@JùN ¤!^;(hè”'æV¢Â7)ï7óU ^P2‹CAÆè˜›ìPiutÆøM÷ùrŒx·%¶Nm%‘p"Ä':"Ln¨ñk­PNÞ‰Œ¡H%nȵñš‚‘ÍÀ)¤bSÚsgù «fò%4ÒI€ˆ !¾Hâz¿D,®O¢ë²±ßèœøÅ6nÔ ¾&"ÝÑ!Àw Â(4˜º°% GÍt^¦¿ ~è\ \Âx>*ê§²’XGLª´õ (Òo¨qÌ ý6´› œy'³ÞtE$ŒB÷ÌiÊŽ÷v îS´žKëþy§h¼Z* ºE0r6á<€'Qn£¶‘o²4 c2ïÑ;Ïk(Â/y0ê„Í®œ÷)Än†¡Ò16„î‘\^FP.Æq(3LkʬÒ`­=—nö;ÃôEµJè½ »¯ØBsw<(µŽÿ¢ëim¦æˆ`%ÆÄ‹Ï)•ÔSÒ{á³MÏÔxÜ쎡Öq´0è®ßª® u.ÿ‘  ƒXF¦£ÄP™"-_ܰGš«âWŒîœçŸC+#J©g#(&’ÛÅÓÇÒ-ˆA¶AÆBÈÂìš@.¶Ç aÃ#ÍË‹&í#ÂS\g¸j’©Ð{Î ˜“GÉ5½Ð´ ââ#„f|Ê)Çò…T^îtl£r¼8(ØJ˜"9DÊ"¥¥=‚öh’£áX( ePrnO 6î°®Ž (d‚  `¨‘VÓÊ÷oé|Þð‹Ͳ9@†ýP¥Ú’Ñ·êˆ)þËÇnÈˉÓ8q7 ÎÙ!=l;ý–¤ã*$‚ùp…5Ð F{À„ âÈôü“³‹nƒÀìÙ ¦¶ a ¥Îxà›ªCÿ Ç#>J–œ]­¾JöôMlàîƒ$Aœ Ù·Óõ zã!{Ç4 \Â&2ˆßÍH€èÝ>.ʦnvù*\0OÙ9¼@¸Æ÷DRøBÙʨ‡…®ˆÖi¢z/%Y"‡z '¡¤ÄﵚèƒL”ßpàÚDu!­ï YLzá8½…®®)'‘’(zçóB0~K=]‘²"ÍX]Us}.cÀ›S‹ÜeÝv*¸éì€m@÷WþÔ+‡‰ér¶ƒœó’`Ù/xÍS3v…›ôDÿ ¿H@µ¾#ÊÒÖhv£ÚEd”4ècvßtÇ~‚šXú/?ñì{©lÿ<–›4ìÆŸÝ06œ÷ZNii¶¡q.9E¯wT[„*"¢'(IßtdrPxácÎPÎV0¤ú©‰Ck¢H+ ¾KÂ}Ó¥²éÙk” ^9T9·„á!xB>|§8Ó¿µ n‰Aq䲚™ÝXg6oC«ež×B hŒÂ?¢p0ˆ¹N¸7FЊ$nwRª9Ü!}Ö=’JéªàÝ ²©ÙžQ{i´¦SÒìÞÖNpwT`•‰²>ïÉ/xnbÖM{_¿2,‰½!?Dˆm"d§\‹U…L4ù|‘h=›&Èqì…MƒTŸ /pok€wˆÐÞæèu_p÷œd%^“¼î:”!ÔlŠ4ÄȸM‰É†•ïÒã²uº£ºŒÏ+Ì*“ˆì½Ô‘ñ\o”Þ“\_ùóN6éw„5 Ó;exŽ7 ¤‹Ê뮦³¢ üÐÑÖpé2œ*±º]½—»—Q³.Ó©À›åGCMT”\ÿ‡ªcÀƒN´¢K‰X(:’ŒbmÝÀ1ta€_d@IÈ }Ó‹yÆS2ÓrbÁ;L:¡W¢@‰Ár»Llj­Ð3°N.7å ?tK~J“¬ú0$ßèƒgIÂ0‹õÙcåW¹">èxlÛŽQsäC¶Jþƒ¤\dåS«›[ùd^¤‚eGÉ£m¹]½–å(#x@Hœ•qº#Õ¡-¤F&§•…€-¹Ê mù¥d›Y, *["€"ÆèŠyBê#ꇞé×ù v% †ú¢$åz!Eä#ÕòTÆÉŤD{vYgØ<” d*»!d<Õ–7Ù £tFèéê‰r.¥ÐC~!’˜èۥʦ°à¯y[ip½.7Nˆ™ÊhgªoÊxp¾å†õvù h/xñMqhÍ7áIbkÁ±ºèÁ›ÈVSC!¢ånÛUì>vNm"‚yVptŽPÂ÷n%Ì÷Ù9‘k j¡Üð‹Ø@ÂožB-ÃvÉNÓÖrl³ºÊq«m•Oô€¥oæ²0ƒ]¹0‰sê¨:ÑEÿ¨cíá¡ÂÝÓî…Dfp¼ÑÞÝѦÌ2¨yëÛh;#V kq Þ°¶d fí@>¡±þp¬é‚ ¡dáHÆÈ˜?4æÏ³B‡H’¶Ê[¨û‹¢ýGCýSž5… íöFÐcâO {¢/u=÷U9­of¶°;¢A>÷òFB¡¤G}Õ󨦵æ [„4óz®}XÃ]}A£%j\[p²,f‡„CK]tÓ½ YÆëh³O솋[áÂn¶²7º„-õP´´˜íîQ¹@¼DßtYêJqy²êõD¸ïªlX¢d˜à Hù…Ð,”µ`föO·TÙñynP£tâáý¡M¥ 9FáùÅ–ÁfB·ª%â€Ù„9@ºº›®Ë>Ë|Ѻ¤…臖ʠÖÀtX;+qcÚ.¹è$¸à'ËHvi(Ð÷MÚ ‘¸¥ÍÛÝkHv>I -y™>I•8›ZÉ8SÒ_…Ö ü’UmuÅó²é ÉYÛl©;A®{âmd)Æ×”Ð')Îx/3 ÝÄ `gtý.šbÞ©¬¹²°úÝS±ºppGdîÅ8´3óWFacmÕN#¤Zè¯EXñlºþȱ„C¶„Îæ&6òDÙ÷´çtúL˜¼.,Ž¢ÐaÐ`òF¦ŒåÁ0àìªdu8\¦êfÁñmuÖ6VÄp'U×KF"è;²"Ý샃‰tøAʳɑő}Ùö8³nè~b<òÂq, ¶«¦{¹_”:~KÑy…s7Ø©çbƒœï¢éÑdåŽð¦ji»ÜtÓæè¯Ãqîâ{¿ñìª$iÜÉpÏ’ª°Ráó@wÙÆĬ¡+_tÁ½¨’øá{­°œÙ4¦†½µÇ„ò¥Ð`llum( òÎèsÝ^0²(M»§^ó²¹ù-®Ê‘ ¢Ø”ãß•ÐFû¡lô£zÄlèæé­ æë¬G’³¼‘º”A€¢wöxDY²ôEXn€Üý”" ‹îœâðõU0H8å]ÒæC‡jTjo‹ÉX7§ûaxÅ3bÝ8ß©8¸46Ç7LD9Ž{®‡{[è«c#t[%Æ|4§˜´n"'….Ӌ›ŒÂl¼‹^ ¤Ç¡DIÌÚé™°GÍ`CE£)²û8¢×Âʤò¯öX€§îˆ«@ ŽåYÜ^ð“ˆáõ:‘vïNÿÒê1ëhìÔ"i²é$í ¦±“Ù ýÕs‹µš@¹EÞðƒ‚`!¦êCØv(‚1Â%¸êw’mþ+{$¶!H°æêš¾ˆ€Gb`Td*ýÙÎÁmÔ/"Ñ=™Ø"È6·†Œ „#;ÚÏÍõÆîš©x‹8”l †Ÿ0ØT‡¡°MiÚ,{fLêÙCtêžÆLT‡š-3SrµE“yºvFñè¡ÎX¹Â3¹Bû~¨¨û¬¡9“˜Hé<#¨ìőº"B·(m6D°u¦‡…åÂ’7NýPtJìhD˜D‘¶Ê‚r ®Qq!ÖQDvö ¡pn…$z “.åZd…’Ž/ˆ´pä­ùS£”m²Í‘ê&VØWá¸'ɬ¤ñrl…·á4Ò*û¢crŽ£›S\" Doý“]"#ê®CŽ.UŒOt7p<X ‚2‹& •Ð:¡84A@Í•&˜Aá'$*\ÚŒˆ*ºäÌÂm&Fpƒd`dÂ$Ÿ‘ ô“„4‰ÚOˆÓϱ×Â.sw·š0Ik-cß„n·ó]ÅÕU„ȇ[ȦËze“Å–[пE–ôŸTµä;ò‘´+é€ej{ÆÌøm0€†µ€Ø !´*ΛŸï Úê¦$Y¥9À–18B½#ÞŸÙÖ]I6ñk¢Û2®ðop¿ M•çæ‡Qõ(’gb©cBóÊBqhÞЬ8Úä"'桺oq§óÅ'õ^mº.{é¤`D¹düѽÐnMV´ÐÙ‹8gü ÷ê9Ì‚ýÖ¥å³cÝ:‘õO¢ZK¶áD‚²±+*ŽÐ (3>Ñ*CvZ¬#$lá˰7Gñ6@÷Ê¢}‘±Ô†žPxÓ’݈+ÄGª2/@¡8†ôì!'*ć–þÁyQT;§cÕx¥ÈˆQÊ­öEÓÉxRIÆá Z.¡8²qä,å4t^ÆÆÈ] 쀲'd^ÍS€"e:u=…•=!óH ' Eìá™ÅÎÆ!u´còÙ€_YÂL¦øx(kê#Ñh>?Ü2ã=“=X$ÓgÄÓ6áAêiAÄô•Ÿ’sg{J˜±Ýu‚Ùé±Âp3Ó‹x”AÄ &#Òä÷Q#ÑàTA ¢ÃWd 1打x† ”]¦ÈdRWüÄ  CŠ ,Ö!E†£O Ô4·Õ4FÖý•lmV¸'dãžáOy Ú0#3d÷AÌÄ!CzÆ#uî4Θ-| þŠú&vrt´>üÙˆAŒI&h–n`U¶S€‡¾£ÙX..&PœpÑaoú_’–‰žWS‰·ÑFÿEâ!P´£9@7…yA°}Uôœ/GÅþWT‚…†>}Ðh l!ßÛ`fP{™_èƒ+÷b›t¦¸Üá õ‰Í'”]ù‰ºs ÆÞHÙIÞò”ÏÏÙý»Â1Îë œœìpÓæƒps~Ë9P°‡šž¸ìƒf[ osÌ«žBõÙ;¬ío$n0¢~Hy >ã`FêQAZO’»Öè¶L䢯óDÛ+,„b'(G UæP†%0Œr„ Û„à0†>I×ßdá¢Ñâ%9¡¦Ô{ nC…E8 6ôŒ­9&C¿E‹ù¡ÕbÒ¯Ä*SVP-h­ÆÑ¹Na5XmôBH–Ú!7§z &šwºâo’‹]º„æ ?Ú -{a¤q” ÈT:·‘tíkª5C±"¡®ì«÷F`ºw—‰%N-€€˜ºsÐLþYõ ·r­0©-‚PJ¡û ¿@iÍMˆ”KHê'#)À—4K¬‹t]gŠØ~ëÁøÚV–³6=bm Á­p6E§Rš»n±Ò HÙY»!HƒýÉÆÃv+Þ븓6l³Há8<Ñ}ŠdjIŒnBt7¦q;y§DÕ×8@}£piµÀ^ ‰·š#WP9Ì? CÚ›î4ôëwWAšyÎèi³P÷ª2ø«6¿ÏdîâÑâ³WÙ|( …;£Ó¶OÕcˆpð°Ït|¾"œÁTLA6Bûì‡Hnè5çDH†œ _✜ ‡NÄíÐ&D"ÚЮ€øcbº¾ªÅz§yû &UvÄ„l  ù!了ÖDµÙ »º…çÂp7hîŒm˜VDOTn2ˆHAù¬®’Qyá^!óFƒtK¸C°]'{¡unaAòUüì¤Á”$Z‰A€§‘° (XåTxM¶è6DP²l(¾IÁ$îv²Ó u‡B"‘‰’WLOè¤X÷*æv²/x©’ sQå>ä¶¹góÉj{®æŽÈAºMÓ¼¤ @Í8E¥8P!ÍS:m o—"I"Ü~‰ÀúB s’…¯YYÛu·ð"\ò ð±Pœ¡¢ðÀ:$ )Û'Æ›O¯ÝRZÞÁ;4Lå81Ž%¢s)Óiª8Å®®F,GEµs!;‹ HÏÃ;Á1î%Í'7otht±ãꆥ}'ƒtAqõB©ôNб]'¬ŽP÷­$×Lv”뉓Ô9D·P1ó¿è´Ùïu ÈÜ÷DÒØE­’'„Dn±öw1ðù®«·¶V¥`–;-Ÿœil7juÁÝôBërŒ„/H‰´§fâ,Ps\jîä^ý&HÀÂèdácËt%—#C׋ª?¨¸‘¾Æ›=r´‰#3!Lmè¦6AÃ)ö´|‡[±Bß4WïìÊj² m”BcØPiGˆBóFê9XÙ%Mó²Â&~‰×ÝU¸^/’Œú/Oa•'²¨ •<nce“1Ê8Â2°…×®èe8 Ûû.¸(ŸºØÁ€ˆí²ÂtN-+ÓØ@'·ªØç\~é‚7§<ªeÀ¸ej9Î~ð‹˜CEï²mÅ}ÍÐ.&F“Ôe8‡Ha°(¶÷e¿ž¨8æÝ#”æ!¥9亄1“²ƒÑ$‘d ÖjlPTÀ΢ù#Òz·è°pr„ˆ·uS#ŸýH³©‚r¥ìNÅROeÒC´¡(;Uš„O§Ãéº-÷€ÞÐØ•Ó$ynõœ.ñnȽ„2½ÕG¤˜@‹Üà$Øýéé›Qs”I>jiܪ e¸†ÏÄvPIh™0h·}ìcÕ;N®¸´' @[lŽUM$‘ˆU“KÌIˆZ¿j€D_(Ffȵá­#¤€!´#}•Un¤¡LG’´æƒß$ª·ÝLå3Q®€ák).Ýu^hÏeE¶*‡šž7‹•@ÿ‘t.–ØÓƒOªñäØˆžèuúÖMòºµÚ·™²{ýÐóBrUÄyÕ4ÅÐÉì=”œµZn½Ø%ÙegÉÙ@öLn¤JÈV ¢HÊ2ñHìŽ2ª%…aº$ï'²€át$«Hál™E±¶Ê³+tåQ NáRD¡0QDFèµåƒÚßåuƒIa9‚sÊlž½1˜Ïdâ`²³ö‹#$ÖÑiMwº'AD€s•§åA$ò‹ØûÇÕ;$§0­ ò:j’l`‹£$¾Fe1çÀæÛ±îƒþˆ—4á`WXÉÝoÚ„€ˆ“™ A5y¢\ ô…$ã ÙKßplƒkl8U<"C‹ÄUHá:ÜlÕàƒÝQ †d ×Ë™ñ,‡6.Ù1®t0EѼòB#Õ<‰¤!@»qÖÆšŽCauŽ’°%ñi Ý;ìŸh:ctb°ô5¡¤ÍãÉ*àa›Ù$„,›_‚v ¯É™ ^[m¾Ë¥¡Íà„Zc²˜‹.IW¢d´à¢Âßä0ˆ`ئ¸“ ÜlžÐ'i´¯|ýrÇQ ú£ïu½ˆm¾HVtß"ÇO (z”5AÏ„ÐM8Ïš,khdíê´¿©$„ÞoÊ´`ÀhBº[cØvýS†›ä‰M ™‹Ê ±a?wHáœvN½Q¸P) ýÁ=‚ÇnÆp‰e>‹ò£%¦û{^ÂIÉ[åd[ÝctÅ”žQòYWå_…bJ·³Ä|¥3É}aCˆù#œª#tJ€ßš•u‘“žFöRÛ§N"È¿nT¾ð8G¤Ò-;„ŠSŽàZSœNÈÜ\¨SDZø¾kˆé+݉Â7ù+–ÕÝé3õS¢Òú„øþ…9hn«I²-Å&á¸Ìá *¤w”úĈ?tðÈQî´ËZÄ8NŽÜ"Y¤ã±3áM–íâ” Œü'("îö€„G«£p¡¤¹¤r‰$˜Â [‡#ÑS¦È=‚Å;ª¿í'RàÖïdêÑ<,Ó<-Rsôˆ‡õNduGˆqÊÔ”"×·ªžcê62@ððaÙò(°„;'6ÂÉDæ‹/|'Ó¨ @lž}2šC€,‹ÚÑž~k*®ñ•`³²6•$š dD„*a„DÊé ù,!e(ÜÇt.E¸BäžËñ @H©¹iÙMº¯HD—`âQ'è„9e"• ,"d £Ÿh ŠFfS¨8ªG£d|RчYo„´n€’‰…º±Êº¾ð€¼J$d£gdI'*ü¬)VáOurÚV6@N÷”j˜•ÖùWåÝ•¯ á8DÉToˆ5ö”?( Iùû£q”p£¶ÍÂ0xDÊÒ ‰p#6”éAºyÉDUrœé£vƒ P5­™Aî4½ÆÿÚQÕhÛgX¦LžÊ07å2Fé®Ô8AÃæ±ÓŒ òbôǦPÓ/ä}´šàLÚTj—1¯&ls]K–D×ܘB¼PÓ{Hžè™ó(»èP 4;°û¯pòCæâƒ;¦WpQ­‡½åÌLˆ Öuqr‹! ¬lL›­Vn)ƒê÷‹õ. ãÅIÄ1žœ ˆê*¦Úy@¼Í"ÞJþÀD*[%Ž2×9·)s‡Q6Ü&€ @ß~}ƒýô…Í÷] ×Iº«p¹ÑØ'SG¬*l[`°œÚAõG9FFêÀ‘¢žÑ( Ì}S€ÅȹD†‚©ˆ1’±dä.JD§w Ð$«û<@º},p˜DP<Ðnò‹B&eЫš Ÿa¨(Œ”àaXûYBâ0æ®FP"ŸU~§O+·!샪(º|¸@D¢ÝY XÙ5I…óFû"&l‹{¬êœ'kBñ}Q¸ÏÑDä¬Il¬œ"È™U‘梳¶P„MÍ·Bøá4äMîªh-tJ´ç„`š{&º§ß< j£„_OC‰"|Ó3ùg MÐip3ÿ$Clê‹rY Ÿû]1Ò›'}‚"îÁÄ¡>û|%9í&©DÄxCÝ=½GÂNQÔÓÆí#uT’Êd5Ñ‘dk%¥¸¶SHZ=Uœ|’Òì\xV•dtçÍ Ü †a4™n!88hüÂê/]Ä'p…^­•c¿)Þõ@ñ0½ü8FFËT0y«þ<¢×ŸáTëÝ– Ä!Œ, ±ó@Xpé…¤ýGšwävPL5¦Í8RI&p€Qǰ­ÔðyPÜr³uKZ©x3 š†ÈH¶Êغ;n#ØÐ)j:tµ  !YyˆÒÔeº¨dàÖô»á Z†lº—gÉÕÜJq~¡÷ƒb’qöxBåUiFéÕê‡PÎ=Ù8)Îè—q€‹ãtë#•–U€%Eû#…éº$òƒF!a„Ñ*ܬ/ œ«¹Wú®˜Â¸AD“²¬öD‚€Í9´—wGõ@º±„Óñ"øÏÙ¬ º¦2Ð`Ç*,¡ ƒæœzªÚ 'A¶ÿunY›ð³ì(¼ê É ° 5t‹t;ÞJsƒ»Ûû}TÉÍ“~U…Ï%5Ú®ˆ7hB’Ó þJNçt@^¾ÂŒ,â`{2›i¿*ŠS¼“Œ„g‰T†ù¢ß¢>Û„n²¹YÝÜ„d¡(ÒˆB‚€P»*@Ç•û-ÐD¨(WB–”I ù"ë„ù“@óôN ß`Ó,±¸C{B‘ô@™¨Ó§#Œn‡æöz¢X~au“doš ¸ÈüÃÄ%>.Æè é8 Ý Z@Õ6º’ß…6©üN|׊—4¡XÚâ6DéµÀ¼ÚNkšC¥;¤óè›f€ƒ›#è‹DÀŠe Vk:ÉÁ°ÜFá\M¼ ID^%u‘줪KOHCÉ!Õ×Ü ç@ÚQsÖye×xÂ"Ÿ>‰Ïÿ”htÛ"9²ÛŒ(î¦6…lJõWYÙH+l Ð,Ñ”M'7YF®PHä!Óº¢{¢sä‰ùyõFÊèÛeoª68YN#줷@^âJÆÑ)Æ:¹Q‹¬c$ bÓº’Û'ݹG‰Ý8ö·°/î”D.Å ›nƒ›Í7Ó§2«Má8>$ Hú¦¹¤žyGÍnï(0D6$£YžMЪü;b¤|& ¼Ê2Ñæ¼*{ìì†cxUiÃx*GPçt ˜7Dï@ƒžv,H˜å õB¿ ·8D!ŒìœÎöåz`àð¢“œæØ‰°Âèk¨Ÿe|ßÄB0™ýC+ž°‘Ó$ ÌöÊ¡šwš-`qq 4IiuñôN=ýµª!UUçªAëˆÂëvÛ.†‰0W:†ç„O·(¸œ{ ”w@†ïº€  …Æ6V!hpcÁ¹lð…oqór:T–Phoð§ê°87Hn$9·ÞbM„4g(^/! ì„€æÇ+د?`.=(ÖÒ€çÉi7Lh7ØpWHØÚ Ú¡Â.ŽS„!‹!æ…[+ÎêßTnJ£1 žèÛ !L¬|—ÙDÁ”º<ÂQt[*è8<ÖùÙ\ a(sÝR' ÑHì…¾ªvžQtM*£öR'§¹Û&Š.&B$œ¡æ„ÐýQºõF$]²Z…ÁîB€Li6„5‰Ùe[ê†1²®ÙP]AUžS‹›yDâA‰DHÊðùJ^¾Áu!ÀÝ`Ž=‚è—ºè5X+"=€APv“Y9™CÞ´D±¡¼÷ôZmî¹lx¼“ÍU™ø‘i€I·(é’ †ê O*¢ÃdÐ]§}ʳwF×+SR‡N™!¤’¸4ðJÒ Õs³-'›}Ê”ÃÜ騡kÊéµÐYAú,*šQû#l£’‡P(N6·*m²û¬å}0@axª3Ðçº «(Ìrƒ‹LwUsöA Ç’2nQ 2H_ˆ~h6~H‰êF|3”Há_„lý"”NÛ…°º"$ed!>ˆ]ÎSI‰ÒIjˆ(%ì<"֬ؿéêN.Ÿ¦Dü5pVA3döé W‹l¡­ qüʆ·Ä2JCŸ¿dócºð·7€žî‘{çÍü'H"‘–~¬¢HÂéÃtáVÛ!˶TÕÙ&P‹Jÿ(ìvM# 7D€]²€!¶AìÑ tÃ5gªßt:„ƒiM$Þ"ÅHxÊôµ¦Í"9N“òFÛ)q1(í| *Ê­»÷¸Tá`N}½N´‰åvVFee Ìsì7öacÙY‰Óâ”i]Ad,( }P“”Óï Lgº¥ÚM§ÂãtXtŸèFQÓÔq-î:‡èQ>ìâð|A=Ìh?‰ [)oôÿ‹HJ9Õç²Ö.cl›ªññT…§ÂÑì5æùÏšZÌ:š#>ˆ3GEúwø£ÚÈŸqÿàQ†‡é¾ñ…Ži""È48IÝiÜ'ÿÅ ö2rœÇl¢;³d@„ffWªÂJm!6•Ä !D”ZJ `³¾;"H·%:Þ°ˆ(Gš$JÃMÓŒ„D#.Oào²8õù.®3Ýy„jEÖVWÙ¢".ˆNáa=K$Ê=[&|&wP\àÂbƃ™WªŸtÚ¹‚½ó~[)sZð{a=EïtV÷“„öm;¬FâÛe9ÏÕ}×ì2¢å¼&D‹Â­=Héí”)nÛ¢&9²7݇€ÉሪwV¤|‹«Lô’H¤n.Ý9í–ˆåÎ%ÛjUü‚žç’šêm(N¡aîÛ,“¤ ïâŽÈê2›‹ÀÝÜ" › axòBDzcã® »ò¨µ‚±f}¶(_eé±D~a{+4ĭ¸Ÿ5ÔÑ…šäoì¸8R-ä³²*›§=õâ–—ˆÝ7Þ—LU'ÐÒ5$ þ^P2ªkw@uÔÑuP5dxI„7qššp¿Ó6>0, ƒÂ?ÕG Rv¡86Z"72HòC¡§ñ2WõšðP@O¢º ÞÖ ­÷SfàB,-ipþä(^òP{ÚOüPµ°æ¦¢Þ“ùA¢Ç‚šU3×7„çR"éîÒŠx”jZî%[æµõ]~‹Bÿû¢@3ÿ¨D$'Iºc•Œ¢ào(­â@‚ˆ&û+«.«]]×YXU {¡L{8auW–P…û,‹fбòB&Q#„0nŠNiY${ªä×Ìù”|Ð=ОS»•,”œ«£d*ÂJÞ×5Îû¯ÙA˜„tõê¸!gÀ6@ n>è…×EàºwÀÝtêÜ‹OóÍ9Œ’c2 ­(Ûm(R1 ; úz§î„™“ÊtŒ  %–I#ó ÷B…­²éÞˆaS¾ :+¬„Có(s}Q8lÊi%‘6B`·™ÈóD¸bó0ˆcÍuòƒ¶žˆ®0w]9…Á@‚ œ®š+©äÉáO’qLžB ¤4JÎr‚%›ˆÝ@{sh ÒãR.'ÐÆ"ãºc@©GŸ¢-‚/V$wÿFøW ¥,J¼Qú-ð±ìô u,ârñ åµLª$4y@N`½;Œ"Ö‚OÊè€ÑÏ…9´}†ä±tH}5 ‚~¨††€>)A¦Æ!“”DÝ2Øoꨟ„ýÕ…ÔNÛŒ &D#Ä  ˆ>ˆy!ëC ;l¦7A®IõV2„ð‰ß怒€“èŒá;æT´n…IÑíB>¿è`hóA98Bàït.0‰l›¢fê¶ë"8É%§ôD8ýQ| 4Då< vݹTU2÷}z“gD_uá.¤ýPÂI.$#ý@.é1•~¹›ÜIá:FG*@Ùt€ gŽè°¸u y¢×ºóáD‡CJ°>s…ÔIÊÎü¡dæÀ0"È\áM…ï(—8g„'—Yk«¡ïKWEÍ]Bð„{$Ð#p†kMÁÝcØ`¡edJÊ Õþ¨Ye¼„ã;©ˆ˜7ö…Bôön&¾OIç²"dE­”ÓÚ$ð,×ršÿÿ’ºË™¨ÁH2QÒ"غmpˆ¤ße^`lªvbóÂ0  æ› íº“àØöG9³J뉔`_ó IÉB!ÓÁ¾£®/d#ÃÝz÷:'Ñtµ8LŸ5w ïº,{ˆ;G Å&wEîÓ§tâ 6d!£–ÙETv8Aïw„lUÜ@3n鮢Oæ'nn£KY7(»ÇHªJ \Þè9®Þ.¬~ªä¢Àm¨Bs Är†âE•mo@xDƒU1pœàÒÙj5É·+Ü(·³ á`¨V Õ\­Ö>aË.”&E¸Bîíh”jøŒ„5GKÆÀÙY§¼™@5ÅžH s¯áìƒÞ×6ñp-9ù¢@ý—æ=üÓmð~ëDêDD\wEÌin‘;  xYÙÞè[ä‚~Ã+·ec>Ê¢ÊêÑ•@* ÀÇrƒƒì¿ÂdÇ À-!{²®è”/µÕ¶D¡ì¢ÿZË=i]½ Ÿiölƒ„ ¶¨´ì˜è8V@Ói@‘Ü þlV™i˜íòRãµ®¦÷ƒdí8.½‚$¸Å¶D7N}[šgæ¨3‚1Ês, l ¤o! ¯Ý9ÏŒy(Ó3ú ^ã…µðˆCÉJ¦=Ph¶åÉÝ{ÀòC°[z®›l!xÇIÏ’Ã'”¬M3±M{5:dÈÙÁ²{FÃÄwMM9@8LÔÂu V\ÂmMÿéj¾C©Í¿ë?²’4âð½ÛYÍ]”Éö”@,“'…á¨Á éÄóÏ´’9DÌû  š‹ÀWa Ž!½÷n ÐE¾.Pñ9‘‰¼ª¢þkö\¥ÿ(A±<ª¸Xù,²´€üŸ©Lò"ã¹GMÚ­ qØX•Iå:8D}Ö|‘**åy•éu°Ê„Ø"ãžÈNeì%9¯&![b€“œäIt$«,n®=—åWœ*@=Ó Íý¢9E•t¸•¶f¡2©`GØ2‚9RÏ¢Àå:æ¶õU÷¢$‹ìQmF'” )¦`¶òéÀiÉu¬Sµ\ ‘ˆÙ{À`l wš†’µ ŽÖ‚³e œnœd?€P@%oŽÛìê)«¨ ¸Fä£P aÅÑhWwú ²äÊàØ*ÚÆý‚mBª8D—ž§ ÎÉì§áuÉõDµÖ„¾u…¶²‹…I¾8ß(6¢'7˜[›!iº c>HÚÓ‘ìy¬,­ì û3ó]‘n°‹*{d!q“ƒuœÙï(t ãÄZ¨t³‡e†=Â>ª‹gˆUU¤•ý “Õ©û'JÂÉ…þÄ÷AúÌšDDª4ôÚÖÎÁ®Ç°‘(W¢¿ âQE5|‘áÅÓ±ÙM®ˆW”<ý™GÏØešänºçÍCFê;¡Ù„z|¬®Š¼ì½±ÊÊ „è!DôÍÓˆÇdB ¢†UÔ¢º&÷¥ Ü¨¨ªj(ZÈikMÒHZ¦¹dž’0„»˜hNÑ$̦Ž{LOdÒ:¯Ê‹ú"8C5MÑløB7&¡º©ÅX,­ã” Dÿt¬ùî­u.'ýl¥Tñdtá:OW!ùoú-+k¸²Ô ’ ˜Eî$p™Í"¯¢u|TÔSYž\7DºÂqŽò‡œÙW⸄@q7öú¡'èåcnWŒùR²B³§Ø@ÿFêëuû¯Ùu4…,Ï8 íÕ«ûÆÿT4ߪù‰½“¾{^ÓÖÂúÁòDÒ¿ ÿŸÿô¸VvÉíc¥Úwp GK¹V²ÛÕxö²¬Jwº×–H¢,w’ƒZÝgÛÖÒæîZ`}&üï?Y@¦È%xÂ%{-ϲ ²õVú &9YÉeeXnöd"¬òC6B»t/2QN²i˜ïÙ\}%eY@ͬšq;§Zlù¨”Oߨ`t vEx€ôNžP”í&Ф„XZAQ÷†ÞÖ@sý¶Oa<"$W6²:*ŒÎÈI$¡qÂ>\ /Ruêì…~Ê«r‰q'ÍUr°Hì…ÊÑa4Û%9¿ý•ª)ÈY Î=†Æè·Çê«{c†þé„6 ìÂè%ÍîS¿!=59{ÍSSZ 7U³2µ^[Š„* Ïòk‚â)Óqá¹ÝA÷(PSw?d šˆ¶e;N‘c”Q2}Q>ð{ânLÏ  ¦°ó¨*ÂÄ/U¿°doí¿°ÀBÛ#mѱõWQe.qMNkÙF Þd¿Ë„›«×pð¿Ÿ9ÇQî}ºôîS5¨íFp\W»sƒ¯6û'h³LšWô!â7çâ—¿èãr[š‰1ubì¹XLþ›ú_ŽÌŽýÂÔד¨]¨épÙ9‚)q™äÝiëxñ.j(‚QªZþ;'{-òXò`X]•‘P½2°Ißod‘ ð¬,°ÓÊsH¸;)?UÝSòP6åLçU™WoOeI²1áì„ ´a n¢m+ð­ÎAR÷’¥þ¨šnVágAÙ8Ê.…ÚÞL§ƒ8]M¤Žè·àýUO1”dÝ6¡M§Ì"Ì2õGÙ§0ÉÊÕˆ]Q>HE4ÎÈ›aA;¬šPM‘°äDç=‘‚ªÈ\Àª”Œ¢d-ѺAuâå_¶ê¨qƒÎÈ”æ2rD ÀA§t` Ù€Kx<ÂiOÕY樌*ž|&Ótè.L„ìS­MþH¾¸pªá§SÇú, ¶ÁOÑYLúmÁÂÙal¥Îò„eZâvQt}Q“ÿŒ!v‹¢;î¢þ¨Aù-g@:k"š×¸¿^ùi1ö»³Q¶ÁÍ/õ…^´/|¢CÃÌì¦ô4osÙkª)ÒŽ#Ôä î²ßB¯Â'i²”°@N¿\ÑܹRCÝjuy—»1½1yLõJzIj9ßñ ­3µí25g%«ú.òR7ÙH.Žmó@²ªbî›/Â苉&ü£mÔ®®Ô-ºÏÕ9Þ.xÈ4òÁkAÝíÍ#¾HIÆ9DÍýâg…¬úd´H“„ÖH-p«Äš. I&ëÁÖ 4q=|BtótæI>óé|¨…qò>Á't’f÷N y-ÿÓŸa3óFÈO…¶Â°ÙYa9lmÎÍ¡^JÂt4a\B€+ÄD*j3ãdýpOðö(=;’a:ºfzbcÕèë–½ÄÏGŠøÊûXû°M%–“„5,ÇöTh‹ºïÔ}Ótê~¶¨³º OrŽ›¹ØÅ“ÒâÆš‹ˆ·d&š¤áÖ8Ð~/¢Ï?¾ˆhg`[dJ|òÿFêÐ}˜öá²®‚7 Äp³Ò¬Q2‡ÙI‹!b½vXNú(ƒTà zŽà#s~P$›#q~êIÉÊ2ÿ F\ªñšŒžJ¿š=D[”§ 'PÁʰ+ÅŒ" WØ&Û²’Fv]GtãH<@²Æ `n‹ã¥f¸·Ñ–‰ˆ¦P ŠG7Gb •ˆj#‚‡<"„A;ð….‹^VB&­ü!Æ‘ Ó}Ðlî²¾ËîPêëna9®yâ`8%TImî€3ì eîäaI‡6,ëÊIlEÄBf¨!ÒodÓÌ  { †sŸw¨[Èj,&›f7A¾#9W"au–‰'' ÈÿE½“cu„¶‘sÁ´ê5¢Ýƒ…¡1¹GP4±¤Ç2…L0ì¹õöd¬«sº1á”V>‰¤‡Ó;/~-’4Ü:?Ô°tdt~Èûöi±ä`Ñ:N–“‘¹WÊ.+ß‘¦æÈYþS MídÃ¥ýO»a’6(ÿùpç†O­Ñ’\÷¸œ«¸yÖÓ /™ô ¦*ß7Ý\lˆ/ü ðïíF/3í¢.­õÿQÂn«$ÂÁW r¢e ú,«|CuIwÉX£]•ùö¤¨,¿d «˜CÙµ÷¼ÄîƒCZûm²"MжØB¿ ªðïiBnùÀP[¿(‚7]á ¾€ ÷Nx9Ø(§ê€$6蹎u1’ƒómÓ^OáÎÁŠE¦áÈ¼Ž¨âÀrµ šŽ$*ZfG‰eá÷+ÅÕÝ:ÍŽÉB)À_É8<ßk¡ÔgxVÜÊÉFÊËdLEö+¤r€aÞÀÊ54Ÿ-ÓKZE”BÜ Aí”æŒl·Qý ™X&ß>èÉ3¬.CT6ªMÓ¿ðÞ]R‰ïÕ†ì‹Ü\LÂkŽçê« qó ¬Ôvè‘áu8N}?‡O°CgȬ’.|ˆ ¢ëÎ?Ê7AšeìtõõØð‹CY›(¨D~`J fèA9C¨•²8™õ@½¬ãsö]R{œ¦Ó}‘s^æ8‹^ß%¥¤í ‡†¦:Q·Ñ«¨Yia0~4æ-赤ˬl{¦5ººxÃLæêú­ÿä«k¤ëlœÖi/es‘ <ÐòY9åœP $4 ‘tl·YaÕ/Ùb£Ù·² Óvåù(¿¢è‰óBß4*Ñx #óÐÐp³ô] "fÝŠ ós Î<î†2€kJ"Tƒ7Ø#¾ „n]¸ ]ÍÔ‚=QqƒÅ•‡ÕxN¸Æ!V>ˆ™]%xZÂ.«$ðLÛ%dstæz{Ù ¶IvÈ»ø,˜òãù²©l†Åa9ɸp¬'É ?%b¦ØÙdJý·Ñ6 îUe•y£[F8öa–HŒtý>ðÛNŽòº#µÑ©î/µ¡4?²>eZèp`"¤ÈÔ¼T% Õy+¢¬a8jÔ6N †°^ïÝþ ‡7C·t Tÿy6„4œ×> O¥Æ[lÏꎶ³-Ù«ÿÇÖv›1©z¼—Âú‚;\§ˆ—åÅ{²êƒqöŸÑÈåx\/â †2M¾iúu5âmÓâýSõ¾ž›ïÐFЙÿú6¡å(èC&ª{ ‚}±ÇÀÊ!LϘLsµõÅÀLÕž@“P&â?™Ve Géꙣ¢Q–÷|-µ9»¥jÐÁU0Ëÿ„ý&¼Ñ#|‰BšL„…øÌi"*Ô?~¦›‰«¨—»²˜k„ B©ÀˆÂ1~ä忏^÷R*Æè—:Ò­?$&Z³$O³Å¶Êà ±]o>HNVÂŽèÁèº6‚:IQðÊ %ݾ’‹$Ž!Ñt-·ªYÛd2y„ »æ¶F[({±“ˆT 76¡Òæ_„›^PbŒŸª#ó ¡¢æzB5¸XÎ,€ 2œó4´^Qü6Ñõù¡$ÜZÈ¿ew"*Y#Ì{.óN‘=F ]½ÔÎȆ¤8jÅïd$Öö›B¢j½$÷E˜½á;EžÉNh‚|Ô–œZo»lrJÈó%n|Ñ:@î"P Ów*²:‘ XŽÜ3B=6Vù„Ó±î­èÜ+º Doð¢†OÍÛÝÒªcšþë©ÀÔ:e4XÔnº$>8C°Œw@ î·D‡†‰ƒû!“À¢—EíH)â¨XŸ²¬“Wt÷¿MÅ“N†«DµÆ,pk¤Ÿ¢u Å®©Ô.Ùê‰ÚÇŽèR+¼–ÌUêSÈ-i³fÍõZBZ#R–H6O1/.øy^ûܸiÌ\§H¤JÕ{@%˜æ;¢æÛbo…Aai›Ý5æÕ4‹ù¡ïÚK7O÷LstIüótö€Ó^d]\|ƒDǰ/KÊ £ &Ü¢`–ˆ­ÃáDé¸Ƭ¦ûö¼; ‘t¨ÖðÓ!ŠÜ _ÆÌº@{«^£ÕÅ‚oþ¨×H1îXCtŒöNeÚÛ“w´.Ýmp›¬ý5óð¸E55ín](Ò뺢GÍZQŇ?T.)ÞQòNnÁ?T.rˆ->…ÕX‚‰>Ⱥ-¦Œ"€Ñ` 6”~蟰S†Fû¢ê|äìg•áB T.>IÇhD‚6AÀác„L“nTW˜Eᡤñe-Õqâ¡d×j Í“u:)$Žt@.m§Ä‹‹¶Ü-P $ÓóMÓËŒ"jŒYIê9?eIÓÛ¢|x‘èœHŽÈu „ã}-dT6B±yD:L)ÒA€Œ“è-(±Žî,˜d—A› zEQZeû9@¼š-hs’®««`©æ® ¤tGÃÙApÚ­í$L‹l 1³Áñ"êÄ ÂON’cºs@uÍ®ªp'Òa1²èaBQy‹dÊhcºZKÜç|-ªÞ4ÓRršèÕFèÏatÚŽëÞ3P{· ‡Ý;@ƒŒÒH{L#P"û¦šºIÂÔéšÇeVƒZZrÂ~Ü#î5ˆ?‘ÿºümâá€ð-x¸år®‹ôƒî u ‹ ¢àÐiÖ¨ƒuý@{Hð’ ×€b‘?5êtúÙVß"Ôÿ„^÷†h¹Õ²>êD̈"Þª2S£Œ€»¢ÆjëjkI©–²`$GÈpŒˆ]^Ë#ÙKMCsºÓ{œM¼S€8Z:¯OS8óCHæmQ›,+w¹¬Ü Õ-¬nÕª@Ç+úhÓ—i¼„ëiÒÑákÌg•îÀhµà #i„(k—[Tb¯ª›ôø‰Y>©¦¤\…Ö±wåQHê Â6mb±ëᆲ*ÚÝî¬B1±ù©•h[“Ø"Cw±AÀí¤Ê†Î'èÄFÁY }‚Èô %éÍSý6˜ ÚˬüŽX'Ì®¢<”œGt•·eÔ&ø(6¯ ¨w]Say Ðçt˜¨œ”`€ù?4ïÈ«Wß™Zn†“.y,7T9×T„CŽÛ©y&Ô‰(’Êo8Póµ¯t)ñþP± ¦©™ÈBŒÌ&˜í'dâ ƒ?òÙRZ[½ùò^7gdàI§!¤l]€^ñÓa‘k'iI$]T-ʼ[á"ÆGÉs|¼4ö^§²§1µr%±=Êf™xìƒMMpEÕÂæ6(ÔP€0ºtÜþÀ"^ïw§ùK긲þèVl÷Ê5’×öÊ 6ñÉU(ÒQg“‚  ïu’ç‹AÍ•Ùß+LÊÜP°ù¬‰D?­œ©÷Mwv˜+ðµÜÞψ`­“ðQ«¥útõXF›•¦j!Õ ­OéËZæMœçÍkÙ¶hÎ×]GÁÄ ÿµ®Ï|ÖlÑ7žèYÇÉ43Vð+› qú¯x…8½ŒnŒ~'M캇øNÖF\ £¾V=°ü½—H†àî½çõ,v,f7Zµêɱ9gÛ„Eòˆ>ÓÖ’öâãê¼$ÈØ -¿ð¬‹žwD—¼•²6A£ÉÆèÁá:à˜³yýЄô«jö‹¬—,üÐ66U’Öˆå#æUUuIå8B†2¯„p¶(~‹Ùâ‹ þèP˜”KÜM÷’`ˆìQÊ~HÀù¡Ìn¯ÎÈÇ·÷W@{°YýÓCŽI»‡Jšµ­iDN›¬#¥>ji,?ö¯Á4¾E&ä(ˆ`üÂë ¦8‹^J¬";®¸Æ ¨ÑdKšEóUåþêp¥ÛÐk\ÒïÊÉÑ}YÀM`»âŽ Y±².Òµ¼E{×6ZwUÌï i(º•„¥mŸ`ºM6¿Ì!CËH"Bè yì¼Òs<Â= Ó°(f8”(hŒÄ!©¨úÜwvÉÄ yY9Žš ­hN:Ž­­©Ê¼fê‚è2€$ÞNP§¥çbUÍMü¼H1tZîão5¤ÓÄ­ f#É'ѦÝQ Ç0W‰¯²½!çÍ"Òo(Ê%ï$žéÀ8Š…î¬÷U‡ì›[é«¢`£ªÐ)’TVÑr‘Ÿf²…€ýš^å®/s¿dXXö½¦ ŽÓŸnþÍѸO//Cd!¦^ä¡€;…ðŽ £ 3æ„¡Òl9P ôÊ’Óê}”ÏÉDHî¬ßª6õè–ÉT„ À]U8 ­§j5GÊèÈ'þNC 5wJÉÊ7…>JlQ¡®‚3ô(/ò·[e\}‹Èù 4›VNiV€vF¸EgÙŸe‰ôEîŽòžâz´› ×ù}€áƒdè»Ç] _âœZ4ÃLGH@¸ÿöDC"Ü¢`Û6@ =€ˆ…€TÆË©Ã; (:§[‡.†ÀÜ.sÂ2Bñ(@I§³n¡­ù¯ ý•öCõ@ºÛä€}™7¾Q¥¸ $ü•^hBèaÜ„™²kÂiQ+e`öh†juÁÁ„I¤Ø8ôÉL‡ÿ°‰yŸ²÷ÇO¬‹™BpˆéÌgeÕ h?™e¾iÎ…M¢'êØP“>ª@” ó¨Zíç„:›¤>+ż—æ¶H»§~ȳPŒSñ+Lùø•Âé̬„p¶ölQ·ÉeX£öD=„ÙLcbº«¹Ê,÷O˜ép §4÷©”Ý}7¼tÆ ÊÖ~Tvö’ºÎèCIIèØ­GÅœw(´éõFfî#‹ ßxÆ<$*Ù%ñ{ìŒ_6å’Ûf7E·uïѧ¤*k¤… Ñ"Oòƒ[óÌßè®&Êâ«Õ{âèü­“fI³l !°M‡:< *G{'êÞ>¨°A¾E‚$ø¶t¬lˆ[|•š<È@ê„|½‚/Ó7Mc5+{G}»­Ñsœ@ìè?4K-“•ÒàÁÜ"\=c*²7ù/üáŸ4 Çš‘]d;°F7µC¸¸¸òSL!yÙCK¦wÛéÄDl¦ID·*Ãæ…EB>jä|‘˜óRÙÎʧÒ9ˆ›Åá~ŠÛò…Á_²ˆ\ìVØá5U´  e¡OšQµ(9ì1Ø]m›w6/ÙL£Ÿ’…2‚¸"þÌ­¼ºþÀ·ë+\ÇÀ>ëe‰µÐ}7ÂöÝi]p8EŒDÁ@“ðn«i¹C® 6ábÇ€Ú:O3 ·¸„æÚ'+§²éû­*ÛS걎×Ö>ì»ÀÍlyò|ÓÃÜ]ÔD  +u`³ìÂX¿(„G³Ì/Ü#¢Â2ßš³è44Øaˆ”}á-p8"ßÎêmèˆ ?$Bº˜rˆk‹$GŠÐ„€‹„Ó ³¤exú¤îœ`É¥‡‹ç#ÉS¬ÒKNÉÍn¦ljEÏióå ”u:N`®–—Àß…$Ù½²Ce ß@±·˜„s^™½·Bj°Ë¸F€b}QÑÓ|—!zŽ Ø#CôNŸa(>“IPÑ¿(ÐçºP8^0‹÷¹í8húðœÚI“7Ÿð²…ѺÂãº4 ÚDâÑ·ˆÙ{ÊÜo¹Cñ>A —w)ÑéÐL^¤l./ z‡t Ûþ)À=Uê„EÐÙ‘ò@}–áwYÙרP°>hÚD\”LtôçЧ ÞèçÌ¡¢8Vö÷d¤mæQ~»ÜZNè?KL9wľÔFkwÉD¹ÿ¹] ÚOÔ-ì€sƒ½ÊÇËÙiYö‘ @ù„ÉŒ2>kúŸüUá>ˆ„Ól§‹Ec2p„ÁE™H rjAµR! »¹”Dü–Qê2yµE½ &¶™ \O¼i‡ÊÆËÕ`»,{oìÿ‹ÿ£e•”VO¢+ü#`PÖ«Lý÷Œ{d&ÿIQ¹’/JÂÀõRZ=ôǨ@{¶ÿñ^°>KŲ%/[0ºxxî.Ó! lÙ’ºÛx´ÙH+¥ÎaA%ÖåxGc ¿„ö¾r_“ªãlž}Wû3ý»þèõœþT\òâaCAÌ¢mòC ajk\cØÇè'Šeöëe«¥îA6ãÌ&Kd‡zBÔy.È‹ö¼¢=Û\øµ¼]Š.}LtRò~Ú ÂsçIú²?YæÙDÚŒ˜¹=˜S*I$ž7@TI¥ß¢§ä†f6UXú!ÕºðM­ ý—fÖ@P#¹D4}aIÔù.ŸºõVä¿e˜^Šå\š”"L)Éf }7ÿ”£·Ü oÒ<(‚|¥nUÍ>’Qq4¹R$Û.(˃¼×SÍʰºEÃ…ˆn% ?$zeñ…:‡§`ƒt[HÝç%5¸¤/¼ƒóG9Fû{nÖËLA  ƒ4‰¡Ú›ù]ùÞe9…MC)X·ÊþÃmø@ƒF⑎JÒx2èôWöŒŸ$]ÒXi«É;Ymñ:ØEî/–±ŠÅF6tþÄ{wGÙp–e’³ìÛÙƒê=¸öe¢â´3ka5‡Ri%{÷ja´ÛÙ²Âðû7öan¿t\>hÈWh^·@‘*æWù@}‘ºÞÀ;û0ŽQüZAîÀÍó(&hh1¬µ&Ã<Êÿt9‘n°~ÉÒ\Æ´‹o)CN—¸FH@”Xès¸+OUº^ò‘Må(þÙ8{ ‹‰äÙ òD“'`B‰ù=÷ì4|Ü÷m…fµ·Ùd#$eZ=sMò­èB eeû§"YõF”M»n¿› ÀÜÝxQ¦ ‹Ùá%€syÙUÌ)`ºêq±ÙY³ê¥Æcu<‰ØnŸkð§> Pd¸MåI#Ý …0¬¿ˆÜ¨—ìô÷C9ãÛ#Ø![Øl¨p€,& “t‹ ¸BÁ€¼£c1rÕU$rŽÖA d<¸F[bpšÆø@›{lTõðP’ØÙ¨äÈP[nõ¬$ÿøàÁy-W¼CuÓä=¹öae.„,O³!]X©€ l³(ÁÍdáõÛ¬!¦ÙW#þ“a¬Î¡Ê|0±ìÈ™ÿFV}™YöãÙ²6Çð‘÷öiíN‘ÖÐ>¡}0k‘sç²×ÿû{21ºÙ^¼&U#•ZgQÛÀNmÝujy€ºò[ p…Õ  ˆ.Pèó!X«qevÂÏÉU'”ºÆËsu6õ]ÈÝ>…WWóebàd„q.Õ€7Ýçx°!\ÝÝÑÊ$ô É]yNs„«3¢m%8áóKfò€{€´å3„%ȃ&åd•øöÝ#Ú}™DÆû"*ouˆòB£ì¤¶[ú¢êošp#£d[Û•[…¢sº..D,§6 ×rS¿¨ 4ç”%ùܯöÞ$!îô§éêµ…ïKIŒÖ°ÃZ,‡â|‚³¶Yo¢Ÿªðÿö^•ÕØ}VOª .ú¡×eb…ÖWªÊÖ uÐi…¦_îï\e;ÝË^̇`ìÑ—E¼ÛÙ€ˆ(Üì°²²¶CN‡ŠŒIŒ§³P7$\ý[Ûý^Õ¤†0j3oE§«¢ékÅQÇe…p€UÁYYY\…hù!Œñì8Y #Øt†‰Sw‘Ÿe‡F¦çm±åöOa@ ¼ÞV¾Ü),qµ¡R ¯·<¿ªÏÈ"ùCâîJaÒ~›S¨in ™ÎÎòoÔat|«ê2¿Êñœòï‘Ê÷Z±Ô-](tÈXXùL,¬£Ò2³ú¨@6Y5OM×Q#Ígä“<#×[§ìºÐmÒž^}ã±Nn¬À<„z!Å9¬n$\Ƈ:.âbT¸Tï+-²?ˆÚ#¦Ò>H›ýÓ ÔŸåÆÒf×Ù\m€`“v(u|Ñ—^7¹ºŸºÈD…”D!u²ÊÝ @žJÛ**+á€@hF~¨c;•á'Í!­“t榺Ük‰Q5wªœl%[™M$…`ºóCX‚Mrlan¼+iè¼éµ­Ç$ò´u¿;½‚Ë>Ï «4$W‰EDù,/²ñÂ!”b^[ñ™¬Ý­}ÂÓÔaа î²?øÊÈÇ\·Ð!S•‰ù-Ê¡YF¼I¿d^^ ``íÊ.Òó‘e¢í='¿è¿ÞËWÁ[K½Dˆôû-'À®ýCu­ æßÕL­ÐºÛäŒf>«ÄW‹ë켬¬/ÂÕk îÙZšßÔýp$IÅÂ6ÙnÂBÖdmú­WrÛHçX½Å¥ã8Ø£…ÙS1Üöê—SA„SP6Á戦ZEå7_D0»âc3þ¼û •áÑdß;©ø£ÅºçÍ NBëhx+ÄB耄¸ö„ º<ÔDú'nœ{g(:E1•[dÚüÂ:ºÅÔÍ™í ²µ'¹@ 5‘ñ1˦å AtbkO\\†ÿ.º4àÎç>¨Ak€v.„89ewYÝ…„,—úQ2Ob„ò‚3d Ûz&8 õÂ6¹>±)ï#â6ʰ½¬¼>)ÀSÝhÒD]Ÿª‚µšÀhioÂÀXÿKÝR)AéuHÝû6FÞ̬찂g»{ÛSïhDê¾§À.á`]/êißQ±Ê{ߣN“@i Ø_tj`9[(©¢Û ¾Kû•RUŽØ   ôNÒÒÒacM79AàÈp›-ÏÔPà «¡¬ÑmV¼ý–¨ÔÕë.ò0iÂþ—VåŽfc~þ¥ÐÖS~%ˆ0¯ÆË¨íÊW‡è²¢~«"ŒÎLHLÎ-3Hq6(ßÚ/õOâ Yz#k—oä‹A7?•\“äTì ÇÑ+ áAjÓs- 9Âõ}‚ÂÊ-‰1T~ž‘<{öœ{.¢æÈÀºýÐ;Âî®B‘£t$ lë9D6Iîˆ8@=äÛ©Æ÷Êû!bnñÊ­ÄL’8Eć61A­x¾ÃÕZèq¤ÊÚ9” BžjEñU¬ƒÌ¿QÙ$îƒ@qrEù 1<"ýÚmt0Žöe¶R½åœ"¶ÙD}Ђº7Çu"=PÓ3” ÍöUé–ÜûÚyAÌ#ÝÎJ2ç XpõA•–ß0 Så,LÒ´Œ¸nVÇØnŸ¨Ï!­²~†»ËŒK Z‚§7¤Ý¦á9í…¬ø5i4:ßòoU½¹%l°Qºþè•ãQúR è ;Ð×ô_úBK®ÐoÔC¬~¨êíLÕ•­ÿ§ÓX°fOt^dÞå;M`i‹üÓW‰¡Ö_6G+t:mÙtÁôO‚ðÒàZºúos4‘óLdÈkbáaAú'Ãttɸ¥k¸E[ý7ôR›M#ç”Ø`[„bâ6(t¸Ži_ì8y¬Jmýªç§²ëš0"®Ä òijŠ­Â÷:Çñ'¤•gB¦J$?åìyW!X«ŸfVË)͹ ALáŸ`Êp›‘Í<—Àµå«•b=Vßê3Ç0 HòVi>¨†‹Â%ðo0„ ‘¾7%L|‚à¬Ê »ÑXÿйGôFÒ6éiÒ{Ê,ìéÊmFð:é´é5´âB†7µ°‰qwN*GÓº §ïÉÎxŸ5ƒ®l¬"Ü!dV•¶Ë>ËÊýÑ—M÷_²&7 ǶCô@tÆä•©y€>iÄ·mÑKœPs›Xo„oò¤…€V~Jü(XD=¡|ÓÖ¬6jé0ƒØývýéÌ/.gùe_Õ ³öOÔÔ~›ÁÓ#§ü¬,/7Osžh½ÔÖ9DØ»Ä;"ÍCÞ=Ïõ:ºo™›!ý)-{²é¤Ì¯ýC=å`Õ-vO=Ä–ÂŽ˜’kÕ{Ù/‘…«§Aqµ‹e=îZ´…´ú‹{.#Ì"Œ¬€Ž¡ðj0}g6Oþ¦o¦ÏvGæÞe^V«´têxm‘cßC¡³XÏH(êM¨ßpãbD}YSŽ%\n‡è¿ua²ðû?uŸeùZOŒý“¨-ùºùdûŒò¶@ÓôXV fG§³!z­Zz¥ÎZŸœÆxYBÛ Kº-úªûNÉ“˜¨¯ Ê È«B7^‹÷C¨z(ŸÝ SeâóT1ô.¶ˆ•7h.–ŸUstÖ0¹¬Þ\<ÐcM¢L#×½€ª7’â_k Êic`˜3ÊÁ!½ÀwF ¾ê ¨g3t1ØeO–}™ cì8XEa ¤[•°² òY4$£mÕÏÍ8—ýÇö“ö6˜SI;Q˜º$À¶é¦ø^¾É>Ë"ˆ!«+ ÿUÔÀ}øA¥­w›P3ò©ºìƒkÙ¿¨{!RÖ±ñƒ0‹ýÔÚôÀú)ƒ‹Òõ wabTÓ›Xe85*Ø·2]Ñ%Ò¾!ižjCÉr·ùûLɲÒç脸ܭ[‰‘ne\©û!®C€÷»Â%·AåÛBÓ5t‹óíÜûÍ—ª6%=¯h2-ç²  ›vOÔxð:‘oªÉöˆWBë(@öe`®ϳ þoG_HÉ£îƒÚ¬˜¸¢Å€?$$Š‚Ïú7XDVªJñy©9×V?(@—X €©Y ÆH<…m¿å%fѱ²Ù8þˆRÙþéD½×yÛ„9¦Q “Všç°³‹/ðå@œ¹©/ó0ˆkK çd};:‰…o²’cTO³ Ü{ý‘Ê+«p²­?4IC¨ëÃ@ψð‡MNi³ƒ?THoWÖ˜ír¤5½ÐâÌ„qO>Òed(ÿNë*ÇýB=·ö` FPsáôŒdG¸kAÌRr7(‡º£;N˜Nîº {|"μªí1EÅîÓlxZÐJkŽ=™OÔ`!úCÞ×èš(´ìWôßÕ´¹þ÷Pé–²7ù{>&õ¡©§þíná{ǽ÷ šLšZ7öíʺ6ö Ú¤çH6Œ¬,¬¯³Ù‚<ý™X+ü¡uºÂ®‡>ñ GS[Lõ3ôVŸTñªÇ\fmä·OþœŸÂ³Ö2½þ«Œ–´|E{¢q„U¿Ñ„I@¢g}ÐVgpžèïe †ß„†AÄÝ HÎèuo½Ð«È'OBðõFJ²Ói˜„4ÄÃòÈÝòr¦É•Lßò‹!¥¦]qz÷·¾ðý¹Ùm ÎÍCÚp®7VB[nB”BÅ·N(¶~Šü Øév]^Ó°PAuù^a°ÙG†ûœ!Cm½¿UUÜrž/_’$3~Q${ ÁìßÛoôa[Û…²º+ 袷Ñl„%±R(–’ƒªÙÝ -G5¥Ý'HX¬î´4·k)7ßto·tÍ•}$\ÊV,q(6Y Ä® FP=‘ïf}¥ïp ¦è³P««`èž>žÌ+•…²[BÝX+B+ü!uªÙ]X{0€2nµ}ûñÔbcu¤ “©¥×ÿ MÓ=Û©u^)@xXXQan¬Bù#L›ÞT™PŽp¹ºü¢xF†‰în²©kvÝ\7ˆ`“;§:ªÜMDð¦ÃÉO{ úY—øDo¹F‘ÿÉ º¬¡€|ÕFöÝ,/Ýa þ̬`cª-t ¡d,@ì¶YV;¢\ ÌÚ]*äÝs'dši&ü#ŸÙ·teÇÔ¯º’E §:¬¡ìÏËÙŸe–Çú6öãõ÷BÞÌ}V}–PŒf>k ©€ù…€=÷Zcÿ€pˆ"Ý~¨ÂÊØ£1Ë å:‡QkÙSC…<ïìwºÁNm! A±À £EŽuÂ#[3ºÊÊýý¸YYBÈ!mý›,fŠÊhÑ v³A®8ãé)•ijú§éÏ2lµˆ#ð…QOý&¼œì¿³æ²°¬]ŽaS²°Ý!–¼™(ùe x±d@a©ÓäœYO’Pq9:òX¼+ç„Ó¤Ì:È9ÎôBhÊ¢s‡^OÑTKŽ! «¬¬ì€Áí-7 Y8F%Xû0°£ôöa|xP¹î 7è IÊÁ<¦³®·m¿ÂüWtßoUl“bçJÛ(4.Èí JÎÈ ²ÉYY++IJ¶è¬¬ûr±í!CÚ:wW ôYXöi@Ú¤Á=“ØðÚ&ÜaAŽ]Žy‚„Oš6q$’e<¸ÅðQóCû¶öa9Žú"ndìˆìÂϲ퀱•„l (ÝbV Xö ,£Ùr²³hWû!ÔáÚè‚êoº {Ö‰Òž²éùÿ”òƹíÓüWÞ)ÚWõL®’í÷ôZ5@±^žÌ#e…rˆä©oÌ©sªÔv˜ N9Eºº£2dý k@Ÿ1¹ï“;ùî„‚$R.e¡¿2¥š7‰!y'À÷š‚ªb!ƒ'ºÀBªgêIÏ Ÿ Š0é.Ù;¯ ˜DÝcØOÎÇ”ý7°ËI’´*Òߪ#²2²%$/ó]ÂܪÜãÚêÁ7˜ÞŶ‘²9õÙ\·Þ±BƒŒÎQ´]ÿÄ'!1AQaq‘¡±ÁÑáðñ ÿÚ?¼Ù@m´VR$d ^%LÆ“bò.êŠ~áÅ1Þ‡ò+¸Æ‚ÀAsB.òDö’@™t6çeB‘EÎýIrE¤¥g+4‡ˆîKÈžÈ ò+µâ57èk©n)Ï 4]~ft]b“z' gÀcˆ#aû—x6iÓß3] œÑ–V‰¬|Kž;‚îàçqcFüJ 3_r“”Q-Î0#ÀôK‡Apª'Ψ©’™ÒØî£ÓðnY¶ …¿ —€wDü1G‹‹D)Kn‰´6ê|–º"/r A×ý õQe6Ylû¨j¸˜"ÇÜu,ák0{Jº áE[Ê®W£¦3'øù:‘VË‹Ï)-+~„¾öÌž”?¬D¶.2:¼æX„KȨ‰!qC0UÅwp‡XàÄ2”8À§åD|¾D‚ Ó©†Ú0•Å^‡êtоN¡ð’J•J(!$`Ȱ5pÝèHÿ`BòT#Lˆ±Ë—™ó‡ÎS…0y`ù3 BÛØŽø‰€… V¤³lR-§/CKÞbÙHu°%>}Ê&º¨ …ܶ€ ‘BŽÂú„Mƒˆdo$¬—p4òX˜H¨ ±‚Q ÜæÉ îhÅ‹µz~DG§ºG}#7Z À|L[Gó‹LUFìBXÓì~bòâ#³Ã¨:ÅŠ,ÀˆY‚ùTNÒlüˆÈ€°Ä›„A¸oÜ·£!0> ðÛ±O,ƺlÒDVÀð¾àG•lìrVjì‰òíC¸/05@cEõ¥¤&±(ä¡“æ1 ê’tNâÆ‰¡!¶¹……Bv„: •'ñÕËU–îWø5c¼Î ¡gR‰ˆ ¡4å¹1LB–êè* ¼Üd¨ âÔùì¡«œîéX¹÷2z"oÈɉ€>«0fx¡÷P°´&f ˜¡ˆzSßð “|·ý¥SÏÔUP»d'PbÃZ¼OŠ/A áôA (ÀËBÔœ¨ÆðJóŒ÷ø—"YüL&A`¬r¢î…=â!”raüŒØ4»Ü|½Ì&ñþ9GÆ1°Ñ 6íË•Zš?RÀ€M’¼.Ì­€ð5\Ñ9ãc$ÑR ÀbGÊ¡±æ„A„RóRñ’–«ŸÐÂÜКيÓñ¨Ì=±À§î†£ê¼–Ts$°X¾jË]е˜ V*Q  @60¿N+ Ës?(pZ?1þ€]”ù”m:àˆ+ÿ¹•Ìmâ ¬V+_ f?3‚ÇéâøLŸ)†˜<‘lø†D à¢5ŠúTÚ")š,Wm¸Ïb šT}Ã7‡áYC ”¨¥³˜¨WÆ 0("fÈ€3Våá#^`ñ?õ ˜†Àö&¹xÈÊD œ"‡lœ Ów°”ºÀŠ…Î– ÌѶ64…R…gn¥ÿ}Z‰® å¨OÊ%ŧaó³üÅÂqÔä"«äkKÌ·¤UÚAÁ¨}î¾`îTƒ†ƒu2‡6Tå»é m…‰7œ³HœÕ w1©‚4F­™×ñ,.PµNଞ g"ôaíè¡ÿ²¨™Â-ƒ¼A½³"X‘=Gl1” ×B;Ž?rÖ*f„g„[”Ï0aö!; ŒÇÈP ŸÄ=ýAÃ|ÍÉ=Šø7/µWW-5gƒf[iĨ ˜ž ½ ÀllÏ|D¾@ºÿÓ»?©mÎa!P¯Fãñ;Ôz OG-Ô~~c¦—x`ŒAÚ[üA€¦'jà«JN•;IAâç0}aíÃ(ã˜Sü"¯l÷’„Áeõ¨ ǸÀ|¡¡ÐoP‰!ËL ]!­B(Ýe}ÂYé; g°©É1‰à˜us¸Ç4¬7ˆHUÑÙOó²( l…‘ļưˆÚ˜ì¼J~µXa‰š£à]»ŒÉõãPTiÉÂéTr ³aè ˆB—jbYÑ™'€&Ñ|G>g}}ŒçÔ"º扇‚Áî)$ôXFµ3–x8îs¡µ H??¯Š<„.2ÇÌÛ ãâêybš»%FàL3®bþS1Ôd2°`6Ș´hº©¢‡˜³,Hù•„HˆéˆýbÍ Ù˜Šh?#î ™ˆ› tãÚBä+B #–‚…g˜[Àg”;37ª ªø3]!EW˜<àæl:}Â! 2}Q™T"ºÆ#èÖ]dÀ¢CÇÒp4a~¢ƒ1lä³ ãÈ ˜Xahí~#X#€å„‚~XÜYaŸN¦hÈî,Áàƒ]ˆ<ô¦À‡H; 0ЩÜÂ6${ÂüD¼V³C7©j֥ܳŸ¶¨8h¶)=˜ijâ¨AyA™I5"H&Ç!ܶ±²à›·é8Þ׿g¹{•€ÊÇm(´p‡z8tý™C ƒî*PßþÍ»Qö0iPý~ã!Ù•bÆf!8Êáž³î@xê éc&–£´ÛʸdàÓ¼@œ1Àˆˆ’ŠX6~ ø…*BECÙÊÈÀ5O®„u—:ÐexP¸ê-–²)G$|Fr›?”†»%¾áЀ#ÕúàáP LÜ`[ìÙ@á«&?Q'ÈI”ÅŒÅpyXJ¦Ê IXxò€t€ú™ûˆ+¨…@³Øâ9yr±Ä#l·üˆSYæ/˜F;BPŠÓ[A5Pµ`XÜHö£õpF¸FCkÀ"hT˜­uœi$0#øžu.~w5(0<ÐÒ‡À-ȽZ„Ì<ó ‰[EËK¶|FÃK0^æ.¡tb Ï"i ‚@¡Ñ3½2Yáå™Oâ™93M—J'Á‡­b hi\®Ó. ¨t€BÂ…aj]¹Ü°³;´j± h ÇÌP²yA žŒzHÂËí|AÖQ'þÔ aÁ‹üf8ƒp#P/)â#¶ÂIE‹¸à »!±ôâ—FÅcÄ>z ‚ 9"ãá§w€¾æúvƒæ? ˆWcþ0–]^@ÂñDP*8d—"`{ M )Ù =(êL^QøÜ 4Æ>øˆ?kð%¾Ì5bSbœÄ¥"ÄѼ4„8CÓ\ Í:êQù_L£‚ÙmgØøh@‘D= ÀE䈔‚y&VŽÍ‰&ñ/31F(ŸW â,K"òˆ†`j@ÈäÔAîdSÊ‚ý ¶.ÁmsÔ¿MZ#B›J丰TM\Y ¢Xò8˜Î®@vÎ9­LgXQ•¾ Ýݬ— #õ g˨!å¸hð@Ytê`pÑ çåÊž©÷«ŽULjp˜ðÍ®”çss(}•<4Ó‘®§Hô py»@©sš‡¢*¥Z”Á°_¨K‚¬«ŽÇB \ÈD±ó-[ÓÈŽøQ䮸ˆeDÛQ$ ËÒ`Ÿ‰]®‹°ÔF= ’!–e@¡÷Y ƒîX"8€™Jªu ׌ ™þBæ@F>+µS~£$sq“6ª%x4ÛWÔÀØCsŒ7iB$8w Î_Q|ÄÛ„¦Qmfá`Þ©¾`V­Ê´ÄSê~0GâX€ NÃ5©aÑMäÂ2ðý™¡±–mʹ®cîÐâqà5 cŽpŒ8@¯€RæÜñ¾w9"öR™G‰¦|!r¤KÄ:” è Ãtàž#n4–Ú2ëf²Ä󣢿‚žkáWÌz3‡F'â=q@ªñ1€¨à~HE”¸tt@ù™¦‹ðH/a„7d° ÌÓ&LB0®¸ÀHƒ…uƒþ¦ñnÿpë¥‹î” $‹ŠÌüõ·MHžñ/+aÅ=¨¶`>"ò¢8xþÜ;ÒF2vnÜ€¬…©g $Uª‚èQ$&üÌއˆ_f×-9v^”{o1`k¯Ï´­Uß.ÂnuÁ¸ØPIG`€ ]¨UÕÚ†í/Ÿ‰·ÁvNPÑÀ‚h‚z_ò‹ð…z‡Å’ÐXÉ 4T¢Ñ¶Ñqâ±5ÚyX°œ~j-‚Aˆ+)Ž|ùÌÅò„À/B7èJn¶í_~ç8™Ž ³_2ó·92Œìg°æDÀ”@]yÌt]ˆ…ƒâ5m±aH€ò 8ûzÕoÄÏ¢· Z¸€†I KU†DHJH,óY3UšŠúê‹=õ/<ÕbÈCÅKüëg mÀv,3+BÅœÛ}"À-ü®£-%Œžù•-1@Õl>&4šÚ82ä iQ¼-ÜÈmáÂxâ‚*ˆùß"mrÁgXÜɳpÀHÁ~%Ë:"2éÔìÀ°aü±4Rˆ°”’Ö„Ö Ôªkõ[¥Dg–˜1²*œ4 vÿÙî±ô"¸<“`Åú±¸V¢n#B&Ƹò>Yr¯bì [%m”K¨Ëq˜öƒzÀð¼8JhЦ¯î Ý^^ÉHÄ•ÍR†q „wS·ì¹ÁÒ‚ DyØ  D,¯qô#¶ëð‡ÏÇäÅX­Y9ÏÁ…U&[oLdÇnd(Ü|â§²`êE‡ÜZXlPÄ Á@B/áÁ¼\€qgoˆ[Àð!8±k˜æ_;â"`[BªË"¬³±6ç‚2åb1«Bãû]8ýÆlò¬_ˆÖX*º+‘-!õñ2”ƒ›…r–ßõ5îw‡.3s&S#šO° 4×Êg[MCà ñ<·19"P¦ËÄ|é¶§|F¡9 ‹>MüÌ!ÐÈŠàß¶!³Gbš†Mà¨å¡`0è*Å'd%¹¸Q-8…Y0FfZy.+ȲdZXŒ‘ÚÜA  ÍúD¨‰ Ø…fBZoYóÄ<[ŒÃ•ä¹ÅPÈ ÜDl€2F•€~fˆ1馈vÏ% MÄR6ò¦<|Ê& ¬C[£7ð8"°>a-cƒÛ…—8 í‘Y'‘Û€úàÒ}X²0~!YMÕmæbàWBju­ÌÇjP9ô@‚¡FqY °­Š/ØÁ ÙÜ u`(XÕÓ—·Ic$AñªòË™F©ÚùÅ䯒'gç ,-êy „¯„™ã¿U¸<¨¿™…Üp6áKúö—bC¨›Bf ø'=‘ à•Ë8¾Yþ H l·_2âC44yœêh "¼púÒ9†=&. 4c«3 H×{€ÆS2jþ!òô4ѼD}P9†oÐoÀšy3%Œôê®4AØ …æ©JµýEð>Sk;Ý`‡ (ô_P|¤—FÅrQL³ Y%©Ç·!¼·óõáh3H/ã‹¥+ô GMx‰ØÆ²B> €`D0#æ‰;92‚Aù•4l ‚ç‘â5€8² ~Ê¢{K¾ˆ¸Ka²»™ÜNFuõøD†æ÷7—¤„ y„u•€(@crœ;iA§º3 á9!)CS¦R¨Ï¿Ü36ÁÿAÛƒ+¡yîr—éRèùø†‹#š4l¡æár‹{s>?|\ ¹˜Ð‡Ç¸¼†ŸH=2Ö ™ë,wà P-u ÝLK`i#ïF…Õÿ©êQ@ ÀE!ºÓ¤!ZN¿ ÆdÝlL °?¨¨‚Jw/Q›}1 éy~XœNGYðwî Àœî€ Rä6€aë(´kûƒQ&ïõÒ.9€Øb±õ0fX _0ªh6ø‡J€‡Q¦Hܱ:À™fŠÄÅy˜æ*3&k#'\Â`Zw5iAõ3`b£`×"Ô!γ¯*âi /Mê‰ø€¬X)—T0?¸ÌkY70`2-33º0ÁEÆnœ°óþFki Þs9pãÐä)‰åÓ\ì¾`˜é¾u(‘ƒ\Ü,ÑÛKÈ¡]¨°YÌÍA³ˆÉr L ±>¹|çbèÀ" ‘ÞAÌ?{ô dÁº–,ŒX0¶uÃScš¹BÀ>¥=®œ0ëJ˸$7õ§Ô9"“M³ Êf]EÕ @[ùš Pc鲄Ù$Åz ‰uÖñ¶Ag•µJ%G@°kì™ëäê£æŒÞ–æXU1w‰]jÌ›ÙN –<ÀÔŠƒÌOùìA¨+‰¢›ÔE€‰!òc X+Cµh–ìÌó¿û2¤èEô=ræOQ³ p[ò“ì—ªlà;•' E’ôiásæb¸Êˆ Ö®?‰Z‘Œ0‹$u ·©r8L~q¡#÷1`Û~¡¿+b,@ˆH°þAÄV`$oñ*;ƒ£ƒ“bô~B5h=Dú0v?¹_ÇË@ßçˆŽÆ Ø"1 ‡¥‹¨Û‡Ä=£j3#ˆAº|JŠeLS|à&“̵ÇâC Ÿ¿ÄŃ‚áÅsnyQX‡ßH²pŠâ ³Ü3Õâmíúæ–b im1w»‰ý }ËxÌ_ŒjQÒ'Õplºâ>dvieb˜f»Ûåâ"!ùffí+- Á& ìÄ!c|;FI)<¢Ïƒ¢\]Ã#3žI |LÁŒ}73|MŒµˆ ’ u=›²á ™Àjyª hL 1\ŸqÖÊ•¢ †‰ÒpsP < ]•Û>gì¦Hæ´äË`ׄMß& 2¨ 瓆6­ûŽqL€ §péH/>æ˜D!È‹+PrµR0@u¨÷ÞÓ/(:dû1’´*ÁO]M mÊçW,Y¾ç#wÄgab8#ľ È[â4Tí± ©à•ÉÇspÊptÜÈp5 6-|CVŒÏ‰·AÀ•†Îñ>¹¦y]´?2ƒ“ú‡ÝµóƒÔ ‚C4y?äò$èä^IDaàÆu…0jθŽñ”ë`üÇEûÊE"°'BF´°Ý˘]l€†«r°Z …¤¨}y•ú+¢–­n“Ì(!#6T"e¶æËõ8¸(ž‡‚0xF€Î戺`/Ëš³´ðäF7â¢ßI£Z©Âz[—ÜQòCx0«!ô)£æ‘˜ m öƒüi±0RØÐ“;}’ T{èñáˆtÆÖK· ¿ªtÐK® ¼ÑƒæhuÔ5v#Øk³G. ð8Wqø¨à‚Z:p#™Ï¤ º¤Cc î;‚¥lÌ:ÁÎ¥›fT×d=AšHÎ,5ÌÅÏ…7ÇÃ…ì<%í…Ñ“ÈX0¥É@ã°Oæ%¶(’™ƒ³2óPCCY‚º„û¥š(þ§%@l–Š˜MƒÉ¿ÔËy{þæ×Q <Å:™i" ÊÐi¡³ }Oñ@e²ާV!™hg“ïR‹’½@•ƒ@ò+r¿Ž+/N ù³»cU¡6 Q¤ ´‚b„eˆÓsã03/ ì}Ç;Žé®x‹!³ºåÌ~1>fyvÖVú¨S@¬rYÛ³öh~¢cÉ„Ñø÷4øI%äÞí@FŠï‚Ἆ!ŒpáøÑÃNî UÞbú0rîá,±¿‰ãMÄ Ì<ëäÁ*­ ³Éšq"xƒ®±ÑœTÛ¸¼@S£·.΀ÄÓ|sÔ÷ ¢æ²¾`Ajp%‚ŠÃP>jâïÌÏ;xâ/–gŽK¯1Ì´àè90KÊs¤eMÄòa„Ñ" awË3^Îex‡@#`Ï0,bàXc¤¸¬¡Tý]†¬ÖnaÓb•ìÊc É7ä"ýL u)ðÈD1%cBª¨ º'P{°qŠ•IvÒ:õ.ˆÍaä&uÔâ‹ -C’| ¹FBW$²‚´ƒAŠq+€ªÌ¬Ä‰d>û—…Ìó£û†r—œ«UW,ìCB¥Ø ]æ·RØÃ¼…l[îa@ „ˆdLH"X•½‚àŸÓ²V ËüwgaýLÝ 0yY•„ œ NÖ¶U0Òˆ—™Ì3@Y„9 ð”€K“…äÑp°¯a£,!“ˆX>õr¯¼AÒ™D^ÅËstð†š0{=ø!š=€¬Ê‰ÀÅ&¥zG‡l,óX¥©NƒPb„Ý÷n‰J<:ú›¥¤bÕ] &$ø/øˆ&í~>â¿.r0›f'U/GpjÁÞ¢´·˜Eßèʰ™,G oK©—®H!ÒvÄËË{v(CPþ€!ÄC4= 2Âÿâ Çq(—òà ”}`÷ë\ˆ8‚¬ºØ°eù”…ŒM|0¢EÿF?„Øa|(*0RÊó0È v óø#ø¸B,cºlôW! 3aw¬"?õ b(ÝòàXÂo£q–%F\ XYÚ ($ú,‰Óc†Áœ½2sù…; –訜#®©œ€üžŽE%î2ØPì UÛ¦aãÄÑ‚9KŽDÐKÌim“`9ÿ„ =äð§Ô=É&.ÜÇ`Q”!˜.\²$"*,f YݰA¾²$¹€óEG³biàÜ+óê„k÷˜aZ€k±ômϵèë~á‹#P=aß#c¨dXyCæÐñÉsK3˦gœåÌ»p¨P[„¡5^D/f#Àc‹æaA¶ÿÍAƒ‰ïã'˜ì( ùé1\&¨ØésÊÏ`ãDÁ ¸â3Ñ(ØD³™–‘”‰8ÑžhÌ‘Ç ¨-$G¸½«sˆúÄh“DƒýG IØ[e™ŸS@ŽË0Þd×UÑÙ‚^€§á2©ˆìáMRÈ@LjGQ ²˜gb0ïÓøFlŒýÃï„!%1uŸ4ÑJÆfú+Œˆ5£ÌPЬ–¦œ\{»¼é Á¯ ž+i9+®*Íìî|ÖSp« Ã°0Uæå¨g1Êg„¨Ñ®2n>q[ ÂætüG‘)ž}CˆÇ"¹„ƒýŽô0Ô3x$!þ<„2r¥vg_s ÝBÏÙCŽe¨X…¤IªIGÜ6RÐYàN=ç¹-)(ÐÎfÏv%èÊ $i\uI,ƒ¤81R „U‰RÒ¢oìGÒ`™¢Gæ&–¦¶‘ Àý‡9Z ¤lï³ :4[ZqvÍRÃ]NVh¯ÕF},¥’~bºÐa]JÉÔ±(±Å êd \lÆúŠ˜¬ßˆ×š²2NÉÁPX¥ä ÙÂx0A-Ï©‘˜€\²RÜÀ&8aýâ ¨,ó`¡ù†w4cVOÎ3 U."Ä–¡pï¬T²Vø1¹DÅÈÖ4IhÓQè 6æ£2¢ÉHs+~$›?¹jF ™uÌ¿Ó:w@›„!¾÷8E<Y°hÄEd‹Døw—NÆý½*Á70`Xïú„V-8ŠÀßæn |—2Úaˆ”sÉ)¬u@oÁ9=õ¤Ge)¤µÔè½uŒaf¨IJp#ØÐpr£@’N†² ª‚ µkmHaÜÈ×bÊ€Äb¸?*õ^As,Pë›_0­ Ö‰ë&f 2§ˆÛ:9Ó€›°:Jû9¢Ÿ0y˜xeMT;13 Š=L€v±P&Ì*"ÐC㙚F;‰ùhŽçO8€¸‰ÿLFzaK (­q3böâÇÞ¥àäáã/;¡A·/p³CÑ‹Y]K Åif!}Àï0Gj(é2cñƒ0X×b2ï +G1Ãh*QæS2£ÑÊX!²³®'o Ÿ/0—-céb þH `H,¥‰X`˜-Cíë`œ¼÷ ‘À» ù)p¤e’ ——Љ¹q™³AnX¸ ´o`alaŸ Í!ŽÑ<õ šÈH+Á-@gJmˆõ¨ßˆc»d³ñ~@?ٰσ…ùqA ÙŒ4 0aìüYàhsJ9æ¬3åFÑ€˜ööK* í»†ƒR˜ÀÄ7qäU‡}\às‘ƒÃÃÄXMl€lPo³b["‰Äà |D.…t*.‘"F…–=bdîCWæ¼ì¨œNÌ´A²"‰D²j¼ k ˆ¥l>J£\@°ÎNw0yJŠ@ 2c`’’î:€üÀŽü9W¯w vM!`vÖ`'ºØ‚BH› לCR€Ê4 %ѬÌNî€F&¸ö‹±•]ÔVhp ƒH)¡d÷rÿÐ÷§ ˜:‡,ÌÁÑž72ùfhö`÷ B¤ƒàcj7ñĺ˰= Ð`ʃ½=¸KêSÙ6…N4[õÀ`œ£*dÈÂUpN4QâE%°[Cqu€˜Ž›±5ô0ÉV<˜!ÎŒ‰£ª© l0Öc^ˆ Ð@ý2¦á-ð…º-Äúœ·uq„Gè%/$™d ÅoÀ]!€ ̲q8YRÔ1¡j Ü$QÍÄÚÈ©¾,%]ˆÚs ÊàG"sEn5 M˜7p0h¯ÕĨ ±Ù‡¦/SIBÞßîà· õN"ª˜FNBOî*àœúªBIš‚A*˜T æ'tä'©˜àDœPA— ž(@ž&Bɳµ@eƒ8”¸Hìõ1ÐÛu©`™³€°°àê;ph™Ê|O`±³}E_•ú›Ü¿„3›‡+¹T9™‹šA¹36ly•A BÍ$ÁA‹Rqÿ°I0#iɘ}¡NÄÅ ÚƒD.;€!9>O>þaA`†(‚Ag(u¸Ð˜+ [K£QÙ&:vÞëž¶à5 P VTÐ?ƒ;r´ à­c#ÈÏâbç¬=TÛ›7qš ÑAËâòН¡Ïa?ù¯`ª„ʱ ¦A7Ô°v'eþbx@ÓB–Í’P,'€ƒ>cDu“þ‘C†‰u9{ðªá6B> Îå,sü¾ÅWsO:£ú”Ž(I³¸éP' C"oõÐÁ°(]%S§þDËØˆX}7„IƒÕy¹ªÇœÌ÷áôåüpyCz0øå“p2o=@Œ$Õ¡‡`Óâ\†BÑa­gâ ‰ vÓ—SÈÁÞáÚ”‹¢GùÀ„ЉhXæ,ÙPƒ¸žíþÁPš›%‚ZÂöQ„&w"³+`êW’Õl0\#èfÐe“t1I•ߥüDvUºâ˜DiXÄÏÁyÕT(†£@Z[Î¥GÐ 74êÒà7ýÆð9ÓÍOPd)B<Ãò©V˜±3ì7ì\µ¨ÔLÎ’?QG%ÔhI"`W Ä%€100 œ¢ü£`®\ç¹Ã*ãuUy!“àKöBè Z#Œ9HÊ”2ß²C*A¶#:¬wS7–ÌB3¥™Š ¸ûß eáæru.Çêfeø6áÞ¥2 ùJ@ ʇ-rLäêÍÇ<Ô0šäîsêˆ]÷2¢v„†‰Úœ{@{¿@/S—¥ºþah85@•‘$ê<£Y¼ Égp˜µ—¸\Û!0ëfÄÂÚ‚Àê»>›ˆFX.Ê-úmébäë¥KÀLË*ð„Ï¢¥àÃ4 »É¬zšêÌvêQ2¨ `ÈxË—ø ŸZ³ÐìGF˜­6f¡»Gþ”# †VÌÝ# yû\J«ñ r˜HüK×eâ[i—{0ô`ÜÝ B]˜@x˜pmu*ý"M˜š¨¥Û14 ²¥/¡Ë¹\w«Â–ôx |QЬ(±‰Õ>«îq¯"¹ê¨˜«¦ã… @ƒàñ@ 8I㨕¾;cns¬p –µµxÀKsAú€°~ ‘4y y—YyÁõˆbè•(‚GØ?˜‰l²Vtár„£K\â! °8-•ê>j‹äöԳ̎îDÖUvRM„ô18¼A(…˜?ÚV!Dt`g•±½ÂŽ1–¢‘³Á–Ì4¶@"t…¯œFúm½ȇáR)—‰h¦ºÂÁ7˜C³šÐ²;ˆZ H+²b@@ëhK©œÄ:¸•sª8È~åš‚ $œN%ÄË5îšIå@ÅÇHp>½LÙrƒ e±u‰§uPð0È¢ @—x–%8$ý"j@+ >oȇDIÉ„êVIE´³”‚”˜›°&°bÊ^D,ç‡>ZûÔšPUò&ygìl8Ÿ¶ì‚­Q0jÅ5Ù ™›è³—â.B̃Ág0{P›#J%ìB†Èåó6ð._Ü#‹`÷Åê:›Ú¢Äbº qðcV-ˆýB¥pd™§èßæ%ˆ†”LÖY¨J¥I{Ç•a–N· x7>«âT$âdD@ˆýò Ñ@Mm£À¼Ø6ÇïsŠ¨Éƒ2 ì\†0ÚŸR•AAS'`&wË©mDâͨ|B@š±1½$N%šd&À‚3 j,‰‡€/v‹æ\|¤"aŠæ(¥Q¨<<6¥6–r&¨ô°$ …S—; (˜ÈTUØ\z%;>Ãëý4!!»Ü8PÛS–#ñÞZêM8r"Rš)CljO¶ë8ˆøq<‹‚ ÏJ­ž¬ßÔ²ßúBòFÁf-èZ0¹g÷& ’Ž¢ó >c­—ò<ú‰”+ìH£É¹¸p‡˜¯Ä³¢+ ˜#=”ç*šS-Ô˜÷4ø@Ú™*þ™Û9pƒÀôsò,áË®ùä.𠺚s…‹CóºÍKD!’‡˜u°¡I ÈÚ d˜ÈDà<Š{J Ìj4SéhXÁ%äNM ’ 2Œ1¶¸ôSp%Rö׳5 0Ÿ(°I£f!ÈP_ߘ4ᡆÀŒ°ï ÄE¹Ä{™¶ìÕ0\ì,]†¸6'pqb¼(tÆÏ•s3¢Ø Á÷òJ±æ¼gÔ8ÔrL<Ó勤!>.ox‡ì'Zª1‘ÀÊ•=p1Š£3s)ÒVɇB9ÉH€ÅæxR'J˜ n͜ˎf€p18ÖúK,(Ë£/ìü™ ¨]Ã’1µåÅÎZLmc":å÷%‚x0Š’2ØY¯¹ºƒH#,TkÙ±1"‰¬Ìß‹Á’.@„!xœ`‡GìL>`$t÷û†²< ¾ ¶ v°0&!³MPÎØfѦ“è/ñ œ=”Ï)Yd6} ‘›h~ãá<¡P­é«{ØýÀß/nã>@¹_Oè3Xw™Ã_`ŠGà£.`†CeŠž…¢ìC´ ñY†r6Š=s°£è™× "ˆ˜a†*<¥Ô¤M}Æ0&¸ÿb†M6¢ÖkËØ|¡mó4Õ\'õ0`»Ó°®±-¡âƒ+”<⺫FTqy±œX®a¿fG‚D ˆqO‡˜-Eˆz÷<py5êc’€˜"‘U3Ñ@G^HïMu8À#Gâ»®~ê â0 W繕Fô@çó8qhµAÁ$@uh‡ H})˜£Ð¡}ÇPË-óQë"2I[6Ük~I˜i«$ÖZÐ ŒIU£*€{‚¯nÅ <â®åÓO‘ûM––Fž vHüÁ*ÃÇpyWœÊ=P¡TÁgMó;L-×Ä7éÐ~!oMG"¹ ˜=07³’BÔhb€ïê0ÉHF8úKÒû¡ÎFiÙ­ñ;@î&§ô#æÂJ]àJe •2°Éx•K‡˜%læyçeø‡Mšf0`28p&@Áß>¡ø…qÄÙ$8>¡–`t—@íÅqMà¹9Ä ÷Š*‚€:âÜá€X Àì(ML•ðc¼ì1Lª1//(!„qy™}zï0æñÎñPëj:±t¡ “+J¦…(!1B—«¸$ãUã˜ äæ±X?1ð ¤nê€þF(1²| r|ÖSË[@à.|æ»òeȵ÷%x’Jü™&X³ƒÂ‡ø >ë‘+#¨0ýÇ\ÌE–Í}Ê ‹ˆÓtÇB'n/a$À˜Ä<2Éâ³6³”&ùi#L² ý"0(2,ƒàH ðìuG";VD_Dñ|e¤|(.iÚ ‡&þfÒi€òþasçÂ;pþ‰¹ Eb¾.1Æ“]P=ð`ÎAä¸åå‹’.¹ˆA2È ›Æ'ìÚ #s¯B6_Ä´ °œþH(ÿ©iA!'ùé*°¿RÅ‘22Dd\\…’ƒ¸eu4HÁ> «è` —à’¡¸¼°…ËÄc¢LB,wÆ¥T/óÁ,—œC RDãÄtFÀË9òþŸp>ÃäCÌÁx"N6yº®¥°YƒÆ ¿ùìЄƒ,N/b /”¿Á‚Ü=‚'vÅÀ~¦:ŒMpç^é3±)ÅÀ<°\›ñÉpÝѓÇþ¢7‘Ä ­ Xš1g \U& ©ˆ©QJܲÁÚ¥w˜Ç‚ ÑP^Ãp¹Ž‰0_q4´Á.ˆô˜p1‰=fxÀô`àŒC_q‹c¹°€²7} UÁ€¯Á½˜lîw„Èñ¹_ȸGqNêØ(z•Ü[c)tƒ9ÿa/¨ŒŠ",~aAûEÔȱbÌžNÁD-£úq¦¦5¸ö¡s’…ÒŽ>÷'ص!RmÌd0щ‹ÒöàÐ`ÒÕ¿¸›¨¬ ˆË«6´bÿTðsúC1h¡–†ÈÉ÷Ú?—7¸)û—Œ1s¯u¬ê'ØG` 4Ÿ¤ Á¢âÈ>j?Î55HFö:œ²š,S™ð_¯î1‚Á_“Ï Tä}ÛGØ„îC N}KäæÈ>eâ U]fð‚,ªšà ‘k1aQ¸‡ƒÕŒ‚*ˆƒNUhÞ?¡À€G3m °rWã‘0øP )t*gÉ‚*«ü•€³%‡ýÀ1!²R‡Š¹ÁKÕ´;h&Åœ í$‚õ9 Ês-1B@*v¾eEVÌtè“ûÜfÀÅ@>|LHøX¯P:C» ?P*‚?*ìx•évoîyª±`ˆ´3àÐŽf-,ˆÈ?2€†CYœów⸬Áq:ƒ,,À®Á AcÄ»¢mEûÿ•ç£Ã›†—S¯Üââ Õ%Áï`.ò:™½ŽPGs#¿¤àà R`“^óêºc@>ó¡{=ïCS0A1'²xó¸ 5 ! ú•t…° Hg ¸3OÄg †q|j/™A¨‚……aú8¶@6È`Jô!ƒ¢YB@Û‘ÈU(43tE:…{ Ô@ lعXì™xcb ˆè Õ>—¢?Š(›7™jî^HŠN!PD-OBn‡-sB`ÆÈBUP£äB÷GuM‚ãc5¤C®á29DUG©QJ £ bú±pb4ͳ’"Ç„áf@’7’¾e>;*—ÁÄbâ@nAD=ÈÃ#¹óFFl@ ôÞ†äñpHR0@GÅ(÷Š Î;ƒ¸8´…éäŽXægÝW€:´ëRo#PÂà*Ä¡>¡DbxÄÛXHO–Io@_Øê1¹'J.€“×<ʲhÙæ'%ÅÆp!c”.Ó ãc9@xŠ^¼Aî@úXŠn(Ÿ ¼‹j$(=šÀÖ{ÜЄ?"›É¿•»”Å 6ú‹HHÑ/™¦|+>æëZØ0%²°Ù…´‚‚€X€âËîY곆ÀúFƒŽGíÎ ÿÆí…è l@Çú™on†€r8þÓ‘PbXÁ—]„ÕÀ^œÃW9Ó!Ó¨B”üµ9·Ÿ3ãØeFW¨¬.ï¨ÖØ Î`ªáƒ î« ™@8 bT1Ø´ËÌ&Ï(j6¯0 ZZ_ˆINE VG¿¨P*˜$Œs>o (ÂvFI1cÝ|¢ {6¨¯ÛÉ›@©™îµ&fdAPH6OëcADbâÇ{ùP§ƒ0ü/F9*YcÔ³9qLdËK‚aphÂܨ)à MúÓŒ€©‡Ù1ø‹ÌîdüHë$Q—•P’qÍ íj ³À,€ŸìLÁ¸(œ_©±¤nõÿ¤cYAún-HÌ› ¥@]ì +˜^ßNµŒ`YeËjäxì ‡0DRƒ’ À^†ÀÚâ|… ýxIYz ;QMsD C\ÈP˜»ˆÔL=UǬ`YB¼K’,v+ Dbîi Qùîl‘¼Ú2켃aJÐ2   ¢WepÄ“? «ˆ¿ƒÝDLt€ =r[EþáÚ¢ù*Ü@J:̨ã•iŒže^¸\ FÛ‹A1H`×-¨Î áe ô 1¸¤FÑà›É ª–à Za€ ð3)?Ô€áÿ&DYd1ê–F„àÂpÈI$¾pq2<#‚ +Ñ.Ô!»$@.b´z5g±=Gx.AÒ9PÛÑ’ûŽaj¨f-£Ï3™J¦C¤¿0Fç#a‘_ÔP †ŒÝýA¬ÈñÃ6ó2M²:¥õ™?ˆtÂCàÇ\Ž0˜ÍîÙ׫–Ô,žͳ·üê ¯î ÿörqbÞ¿pÌÅ]ê9¢ö,6Lñ³+}:½E‚Ó—A8ˆzs{¸SNz©ã|zæÀ FãD¸ÍÉc¸ð)Î?E_pKX@@d»` 3VLˆ˜ •(-‚h‚'¡¨LçÜÀeCLÁvÊ‘ç™pϼÀÖ€è†OÌ´¤ˆp-0l7Q¸°¾·9ø°ÛQ:ÈG*ã ¶G™¯ ‚-“º—ð &B5ùKÀ@ Ü<ôåÐBü9Tš @E•ºøéRŸ•sUubD#^¬JªmØ“"½  ‹ aÖs0û9šî²† ÃqNîaÂË F»hƒƒ¸ÓLÛ*ÓıŠËÔ¯dºG”°YZƒA¡Âá|Ðb£Lyjõ/AË"¢ê`2sÏ0Ö¡@à@gÑhg1Ö4‚½=Á&!ª|zEìÙÚšB.,3“\5#Ý`a!ß H =»– ¡špR¾H·ÒJ=^ÑÞÔgeŽL ù¬èYGxк#4ðWš"Éñ³W ?îq-z+ AÄ= à‚/.Z–ë,Ñç?à9¯J´Ìô‰X@uê₊OS#gÐDA[!ìß›*_ÝevLÊ‚èù‚#û‡¹-Ñàz„a@1bÙ ¦×QLÌ{­–YË¿˜.àCÕ‚Ö(Ü~ÃÁZ¯ù/¸ bøéÁšDHyqŒC!‚݈ùµ y«æ‚¦vC=ŒFü¬”P5Q`b•nàC“Ô.@+À»Pž^„4MƃT÷άl#b ËÄ7ü‚DÕ‚ppÂç‰t‰eÜ`¦z‘¬9ùšÌz¨ùšÒ!ˆµÆŒg]‚Ó£¹d%g$ܧCOs…’ëòDQ‹ODüË“šš` 'õE¤zF@Œ™†ïsHâ«rZÆÄ'þ¦;ø* ™V{Œ¬2'Ìc(@ÐÀ:¡ƒx[7cÝ©+t~Fex˜ÇcŒ®à7†„\Z'ôq^Ǽ¼ÔÜÆêú–„Ñ)ÍÕxtÓˆTѰ Å~㩤4#QDI³, ˜°^ÅÌx&@ˆx¹¤óÁ4õÞ¡Ú­dAk™êcWGâ<40P‹K¿à £¶@xÌXÔ*y€z‡âצÖüs¹,1PÏZ†"ª|ßù3‚¯cŸ™¼¶É À°rÁQ56Àh ê¡X„å aË;8†L›E*× n9Ñ{$õû‚ûñK])‰ˆÈZ3è°¥h‰"ê :Å@ÛA„"mi„º^hÃŽ²VDÅü¨Xç6]Mmw` ç›1º $>®ÙpÖšç KûFTTœ!Äq‚&ˆ˜7€Ûš¹–‡Q‡*!†7DÄâÁfk‚L9g‹ŒÄ6vVFÀÅÎÙ1GŸØ‚öT'ÈbÛë}CæÅîùˆû‡€*ÓܬQ@Œ'´yŒä‡ÆýÆ<.DRáð j›¤Aȃmð!t%ö*cPpI!4t_¨­AÏ’u \=±Œ˜,dÆ@H.¼ F¶ÖŸˆbTÀ ÿÊ„ñS/Q„Ò¡`(Í¿r;¸­¶cÈQ• ±ƒiÏ„°@ê¡@ó BŠðæM†LÜôç>ÖÀòâY8Ðܵ¶]rå¼ü ¼„!ù,€øƒ› ¡éN\Ðͬ1¯Gõ9Ž ÿ_€|q}s38Ø?ìÎãµ€ƒä¹ŸT™ýN|rørã‚™^úÆæ-(¤…ŽDññä^à±lC­ä¾gæ‚ɬ¢DÄJŽ}ÅÆ˜`X‡F6Ï#“å9O­™Ç›pŽ„-H‹ÈÑ~„5dfÕpyS\«ñ+¸;k÷5öƒÑ/*>­¯Ìhl3®eÊŽÚb‚OܺÀŽ›ˇb°åN_3O$XØ=ÏP:¸¥Š©l”"ºÐL}&á8üÜ£%nCR’Ü}¹—„p%æ°G2Ó[o/7X퇩ŽàwÔ=H¦!Læ8„#[/sM.X(¹¢¼×pâœ+#5ŒòÒºÜ *ü*‚ìù,s:½ Æ‚süÁæbe&Êøò NˆÙA^Êyoèi·Fæ° å@._Òà€ô¹OF¯ ÜãÂ3Rèð}ͯKqÁŒ*< àÅcHùp>Âaåí#7Ù$V/»V ƒÍÂ:FÉœ*_£‰6¹Œ¦ó_ƒ3@uÄHAbÃ'±Èð)e•ì.7jÓa†}ø¸Œ_–ª¼=Íèt¡©ˆô µ¾6|C¬ ²Á*~ÈDAöÀ ‰t0ÎNŽxqê:²£l~!0À•èìFç]óŒ ôN”G¥C°À lü²MrÛ,– È™Dö¨¨ý¢ÜrôT1ƒÊ‚Åè¨XÀ¬€/ˆ=“Ë¹É ±QM™9vÄèÔÆA,Ï Îwb†* «„`Š=Þµ|‹¤Éûšú£XÁ"]ÊP«è^{¿©{ëÌ£ÀYÓb— ©È(LàÈóM“•”uþÐj Ìñ2Ðü!¡o„ù¡ê4. ±µ3ÈP¼¡i [²õsCv7˜¶SŽ+¯rÞµM;¡+å8ìÉm0ôåq†ÔW™B̉¦ùA3 ¶2¢',ùqyÄ÷ˆúã…ÙͦîiÀR¨ û•BþæÏŽð\+s,Pú•8jqíÁ ø<™èNÍ"pܸd€¦Ôsº Š ÁÆ ‹1ˆ°í¢3 h’ÌÃê€jv·9nU¨³©^(±©¾ƒ÷²}Ju<¹¥ÆÖ…¸±Ý¦6œ¬õ³0CàÌû$µ6®QØ@ÀøsrU,dõ.j#Èß5+] @,“ã^¡ ,à‚ ­«F'/øÅÝ2 ZPç‰Ò‚ ÑhžˆÎ0Yle<’0 ¾a¨ænXµ©ÖŒ¸šŽttFÖç‰Ì̤ çĽ ó7C¡ÀÁzæÐ¨krØÀžPV]Àµ@X‰1™æš=î.E˜_O/ø“Üçbl;‚#e‘à˜&C²îQ²GèOù"lüL(pœy„* 5pP¬Óñ7ÔÁ¥v¦.1ñ¨d Ñïι‹ÙeÅC§‘ ¼]°¹ŒÍ·€ó/€fβ!sÕOR.&A‡G æÆ–†ÄËZ= -²pÕÌ  ¦¥0ˆIˆh2£ØÌi(vö¿¥=… Ê2ß$7S>Œ…ëéA•ˆ%DÔ¸¥‹Cã0ü2È |AÙ UÅÀuÜASî8 ÖÀ•.² ¿1dEû†xŽŠèßF !"G@»³EÍÀKž4lâÔ‰€þæšbY%¤ Pw` öá°)9Ë~Ä6iÜñ¼F[Êd“ꦂí‚3ÖaéÜ)@þþᘚË*æd&pÜŸ ¶[\¬Æ+E` æ–bµ°ÁÂÁ—XÆp¼}Åp@SèñþÊ8>&¾$]d_â‚A kÄb­!îc‹H 1ÌG/ˆþÉâЃ¿ТA?™«TÍy&³f=dYäêhQ©Üåf¡/”>Ñ…P³5ªèçz¤{A.”I àUê)“i!”1å–Ò˜–©ðu+áM–(ÄZÜð7ƒ(fUaAú%!WMêVë±–MÕ@Ö'déô\v!Ip h¿~å~äìjøFBE%}Årµ ¿†g{@±]˜ë¤ª(¿!È ¢¨Þ¦Ø.Ì­Ô¥´\”]À¾„}`~(–€¤2ø1`E‰¸¤N0Ή5£)‹P˜4e!ÐWÌU,¨²&,ˆò§}0›<8`Kän]3?+üE¼ŒÛ—§ÓˆUçî0èà “jb¢òS$) ú€;á L"d‹šÐáäM80uW?Yj‚a§K¾ d¹ÁĺÄóD­u2Á„cJ£X«Æ5 ú}“¨ à— †3*¿0y6ÜEe¶\Ë`ØS“±ƒG"å×ö¿0ØeëÎ vc2,’¶`® ìHywC*ù™¶DÍ€àêC|–&H»»h1N¼Ê³p€åA 1#Ü!5pž÷°ë·råÀƒl‘¼›` ôó¡)'à#˜;‘ã¶¹£ AÀsW«h‘|8´&ð {r¦Žs§Ärd³8'¤ÇáÑØÇ /ibŒÃýv| ‹àñó;R9ÐÚvUZy-5ÑfŸ1“PÀ8ò&Àáô$W£ë'3Ý\Q}ˆ.ìÔ_F†ŽµQp8Q¾u:ˆÅL2–8HÛ3B-Ô>lT‚¡Þû Üs^DÍþ %eD˜Áú†Èix,1Ø "ËC›0v.$ð"–+‚×´[S® ýWâ± É+IE¡üI'~çJÌÅmUâw‰PQ²‰ÂãlÐ%šmÂ=ìõÑ *™”^‘$­ÀjÈB9åŠÔ׫x¶%1ᔈF `E6@åæ9D@"UB·E†Ò£(q„^ úß'au0xåB*è8ÁÊåÊÚ­ì,ŒyÚ#bJÙ'h·mNñîžS þgÅÃzwŽ6'b ® ©(üÎÏ„3/±¨í e0â¼þ@8·›ƒ‘¸ÇŒ#byp®£Ç ÷âzèxZ0Gý11Ìeƒ=¦*Þ²¹n4®Á)àn9€„Ás"VÉ&"2N  ÌÉÈìiØÂ€j,^KÎᵯ åªâZC+Ù:<‰…ñ… Ãò ^ÌQ_ ›Âk"bعÁCe< %ç̼lr„v-ol…>"¯«ù'™®`׌å¸SŒˆêÖ¯q¸€(7>"pB’jó˜y*b2«Áçܽ™aÑcGü‡»sŸ‚UXæ\,E¼ÕKXy°Ç`– Np>D=ÉGˆdBh‡;Š #Ç|AˆÂ±ó5Lä,Ù³wu‰1ëˆ 1j¾‘Q‚ÉlßÄ ðIŠâÄžû‰ƒÇSZ0£#»n;Žk ¢V4yhƒä!£¼s7«gö§‡f‹^`D…ü’ú–Áˆ‚;£ðev…a}ÉR´½ÄÞX6¢,Äa2pl(bcQ# O¬B€\9dŠàˆ·œ’Lü*”û\D _+Qôp eøÔ-d¶%wQèlâbòÆ7˜} FuV©ÃØOh5­±‚¥„‰$Ft%ÝLAÑ~h¹¿ -ØÕÇÁ (8ânü^èrN ìbP€ÀáFƒwA‚©}R„ÅÀÆ Yk&UñÍÙ‚Ï(Cÿ&'‹Þjœ©Ñ²˜<ŽTD›Md<ú©’2sN]oØ—6i*€ü”§$5‚ê+à«"qÜè@¿ƒQ % ~pwˆ"ÀÞ+âqôÌ«c˜–ˆeX÷€µB‹š°5AÞÑ$I3ˆæK¼°³nE@í•x ‡7Cr·ÄŒÂ ÃÄWD"„ «Æ| Vœò'Kñ VÂ,{™ÈʹO G‚~†°Ù³`a_ÍËlqä .î!àè !¡¿ˆ’ÑÃ~e‰±«=}*KÝQ[‹‘å £ù±àL ÀFHåî °h‘‘¶þ–f– Ñ€ÔM—1%½¿Ì@€hOˆº“.3®a†ÒÃÊ&t+=ÃV£^T1ؤ,¯&/@…½Î Ê\!Q˜KZý3—Ð-• Iõ¦ÅÂYL\Ëü7PI&¤Y&tÖN/Ü|G9‡Š‡'üõl‘û_Žª7rµB1‘"_¬ô cDˆS”»¦ÅK ~£ªÈOÌTK±Væ@C ˜æšŽ˜‹M"~‚"ŽŽü÷ì- Âê½Fîè(ÁMŒeb®È©BO~eï@î;ñ£lì‹5}̼DEŠóS?†”tz˜$ðÝf#¶ ‚3ytñ3½À­“æsµT1@D$'yÜpÿnežqâÌ-§BW¹¨Ò:5§gb 0&xLÄr¡ØAµBwµÇ²$ï‚uÅ’6 Wˆ¨3”T¾£ß££ƒ¢qïUâ^s-ÑD=£ÈÀò·pj2ÁÏ©íêX /¨H-‚!¦ã¶}Ê-Ô]1¹‹KÊ;O0"¬QÍxo®–€¢Œ{ÙSÄdÄŠ°Z­C×£A@%raÙS‡ îˆj9'ˆû‚Äž,ǃAD’0{úŸ9XkT*<à,‘õ³­C©8Ž¯È‚i^ÁÄt¢õ‚+æàÅ@°ÿÔ\þMTVœn®> ong ñ‹ƒÒ`sY •ј2mUöñ7‰DðØŠaö.‡¥« ^W¾êgá‚ÖT:À@#ÀþàMƒ†ÀQDƒ/´â@Ñqúìj¤‚à3îUBˆl DúŸXÿQê2 ,Tòj La¸# 5`1ø>ÄUÀtÅZ V:2·”C.|ÂÀ‰ì>¦ö%»!‡?øecˆH=ì†ÆÖTz•ÍVégN\p›Àšj§'YçÄ©(ìµùâct7λ%S„¡$7¡ñ.(ÈÄõ ŽFå| vh°80w³.äÙXÏ©Òpú˜<vç¯uÀqn ²x^¥ßÌ8dyDÀ ÈvÜúín«ž€0ÿj ˜Ãâ3'ÒÇ CõÃ`0=ù™6š£H_ÔXþ³€l_ 0¤m+%L8'³©ð¹‚aÆQ¨&Ü8P2†Ý%CÜŽ7EMC:›²Ô3–ã2Ó×I„¦áT‰\€››-0Ö™C±‘…=K}¦4ºs P *bH&HƒÂžaÎØ Ö2c¾T‘ÁÙ¢1N·œ MBØXS'€ƒ ‰Æù‹lÔLßQë²Ø„hhæ.05 EÛ2.ˆ×P嵬Ÿ—¢j„píæË•kFD€ð62÷0â@·vhg<°. q÷8ëÈršx„`x®ÐE;'%‹‹ÍØd$ëÃ:E!V¸q*± `óZvƦ·„ $©³`µÍÇ&‚²FS0¨’î]ÐlL…#‹AmCe#–.5ðä& bF0P@Él@‹>¢ÖcP°R± ECb¥Ð6Ç6ãl@†¨Ã>ŠXDåÀ/4ÏéCåˆl*E~&!Ù~µBÅѪ3lçÒ-[S„ØC^° oâ“D,Éó÷ÑJÉ¢ÍyfR[„Šàµ¢i¡…"@ØAÊìkÐí,;Ž[Œ?©Ò-µî/ì¾!¶Ê@EleˆBÔ9ËXaO¥€ã˜`tƒ•¤Þ˜Ûf9u)2F™£óšp"HáN.쀵rŒ°8Á¼uù0LQç3.:z8þ#‚\} —<ýÀXÄC!@YNæl€ ~åå§^1.ÿy±‚½ÍÙwJ%²$‰Ç ”&)æ 2"ÌÅd°"'FºŠ @˜ÞEÁ"Ì)¿W´UÂo,}¯ƒÙp`^ Æp“ã⢠X0c;Äñ&†<=Í9«sE,=ƒ2²„„o=)W%Ø@a¶O0Íj¥æ ÑŽå€zI~b˜Ì“¾38Ð6x8^CLò£? èÔÊçUœÂ, 2‚&è ß]´~8=Ø,n02z‚äàbaá"þ§Ï12aÁ/€.P&Ç0Ås˜M–Cæs&Ÿ’e #è÷9©Ę́lË,¨ê@C‹#0£XÉ;š€ûôª)Çq˜›oÜt¼)x†á«)UÍ}žØÞ÷ Rl¥Êâ»ãACT?9ùN£C$xS=†ȇBFÙb!!æà&ëŠáÏíÀBõд‚ìY,ˆ†P “ƒ{z—ì";VÆG3VA'gÉPŒ¹Œt>¢+ólãR¥iÄÂI Á/M¾#ãÀ²€áAGšPù3ž[º×íûƒ¤Q =g4¥ÅšàÞ?˜ü Žy=÷<§`(Ɖ9¡È˜›$Ú;åQ|µ“HAMjÔ3‰ÈÝ)Vth­îº˜´QTbBÓ(õI`ƒ,ÀÁÉè ópÙµæb€ñ ¶Cb ]¯&Hp…ÈÎ"by‚pæ„E¨°Aÿc‡cÌÃÊ—†1ñs†"`‚4£YŒ– à«âêõ`¿éˆgÐ\€Êò&2D @?¹ºfÑ øœ~ ( μʌä4Dì¨sØDY‚rÁ¥s+&oóЋ°ÑÀa²@¸°Ñ+ž^¤V7Ÿ9÷ il¡,q"Z¨EVÞñhT¯‹±¼‚>àíî(Dâ¬A›œ6C#ö.d¿B?ŠÖ 9–À‹R$3Ñ æmµ0XU.\,PÆ`Û`=¼ÜáÍ$רÓÏÓ˜4ÝG‚90 F+0Uå•J ™vZù¤ Þ4•TĶë¸àRpÕPœÆm¶%jð?ç(•2GÁÄÄù¯aŠóQÚ_HG…ø;+€Eu8â,·]Ç̺ðb8+"¥jíÌÄPd«q›‰6]v…#d˜;~%+Ȧ3Hï©\ ·”c¿b=;ú‡ÜÀ³É*i·Ž¦©çtª!;ù‡¿‡i_‰Ï#Ì7o挳@z â—ßg’¡ù0@A#[08â‹«Œ,ÊÏ3Älà›ÄÄþ'=P¡6¨Ë'çõE±®Aº}ƶ<¶„wŒŠËØŒ¢mÅÍZçâ{LCW¸+©ÒdNzsoh‰¢r%¬úŸ÷ÂE~X¨²¤ ¢ÕÏù¸PÅüKÍõ”U2°`N žf/ƒ}™D³·„1œ  4fÈÌ[‚mKS2L¡!# cèÍø TÓ†r}ÆI:'ˆ6åX ^£4Šæ!3ò²ÃUÖ>&¸ëmÕ¿Ö#õ’b Q‚s.è]Ãf὚‹@õÀ;YñäNý—Gó32àCXKâ%u#OaÁ”ä‚€i†9¨ÿ<TæC̯ Îa¡#f?(l<ú3w°Q"_ãó·)Ò8¬Ìá%õÂL9å(€jÜ©.°ÂÜÛ@ì³1èÉhbvvÐc|êgáv;ƒ=W rÇ´Ø(¤Á%y¨\‡XRïl‹Ì/e|a»)ð£l 6<‹˜T t;w‰ÇkH¶»Ìx—(H>ãQ¢”¦Æ`Ó‡tp‰1¨kQ˜¤XD¢‚rìüAViXCÝB ÄÛt2bNÅœ÷+i Y`¦²¦e=ÔVª¾OR¦øÆÄ? NU€!øŽ˜XßM0% Ô<‚vAu|Å~8ܳÝ\ÀƒØî_džLùøùŠ%™$ÅßÜÉD€)ƒÃŽ$Û üËF(ÐÞIZq]­S¬Á„‰D¿)jk’p„:Q²-R’ƒÚKª.Ú,Ô3“D;ôe> è>]TiÁ°j+p2`¤L0o}G&X+®f½}™çÁf‚š Ttâ͉&”Cç³[Fl÷Yƒ8ô7qs©Á°7F\òoa—ë2„ÏF/?¤÷ÞŒ‘…1ùA–BTæ >ÀÆÁ,0õJYñê!€À¯Ä-àdð„3¬pÂòç‘@#Ä=Ð2s ø©–CÛÍÀvhpLn*!kc ît`sfMž¦{Oå8a7š.¸ÀÈ‘S6ÖOi@Õɼ§PlT,iˆ¹d‹zñ3v¹æw∤ÈOæVô´„¸:Žø¬‘khÜãÃIK¸\z»¬ð!x?WÄvñ0†ÝLãf̤ / %|˜„:†Ô¸Κü)›ö0œõ,NQ£ó0Ö%„8Žôz(¹Y–‡½ ’|o³’%elòñ/˜ìæ@hj>¡¶'¢ÊƒÜ££d6V‡{Žh¬±³+’ÚèÁvÕ©vÀHV<T¡‚û¨ ‚`6Èü¬È 9*e]€ mtǧ aØ+¢L 0@ ²¯PÔÁºàø_¹lè ,œa°у«QJ4¸.5¯)«4æKµD aŽ÷3¸:4Êœ(Å¢„6ìÃ#'àâö×Y!ê>£a•a)¨´Hln ÕÒÕ•êEÈ7/rÀ Áƒ¼”©d…ʆXæÃQ9xî )xÂe‘U"¶8‘ Ä>x‡ 4ö5¼k²¥ìýÀê” ‰±l@¼ò:ó ‰  À¡°fAì<ï¬y”˜q$ÒàÜ-)–4‘ìøfpsƒ„KB¶¶+¸2ÆÅ 31ðC‘6*7¡ß>Ä\p=`üÍK¤,òØÑ™ãDšDOà-ˆ\N8èfôh7vú®Œ€`Fç@£.­R3rðã~}Ç<넨%!`D‚Ppàvý·AÃëó/q„.˜à±-ùÔPqÄèäà9•`ëDˆGÍE^|Ë4y&• ;ÓBÈ<ìAY|§ð#eÛ£s; å²µµÎøS’<ÆÝϱðÄÝ…@ N‹×QͪÈr˜03œ|DÞ\šÊˆñ Ë 9²jÄà #?Fg¡fÀØD§¡ôðˆf€âzkÄñ¨øo¿6äÛ3PT©a^!G†™=â6DàAU¾˜ÇKÿ KîzßvêWiäð c.óhLXšÒ®ÂƒìL±?AÑÜó<cærilÿr¹¥4Q(Š„ø¯<@"$ÀÚÀÄÈ=ó«ÉüLí`² €»ä@-’|‰Âá•ïÚ‡ ´ÁT] D8b3£(AÈN:à¯qÓeD)Xsð[µ EüÖ4^wˆx>Q©­¸V!Ñáãs‰d€ÂE (‡Ÿfkr<ŒÔ ²§‰ŸëRRh»Ñ.\pÁԵ䢀>ß@ô¨á‰A°˜Á“écòZûEüÂs6@ ˆtÙì}—8.4¨C%˜RË 3–MV `c6Àõˆ1ÝšàÐb±Â Ö0ЏÓ]Ê'¾Ï¸Áš7X3õRî á¶pfØ’Ž¢eN® #¨9Ç1†ŸE •%ë@qOƪÀ0› À1¢¯‰§`P/¹ƒâR(Ù¾Œ¿Aîb>Ø´Y’=Ô ö²À$Î °Ø‰¹ ¡!EŽ`±”6Dù´lXZJìüÔßÁb B!sò½"M€S,¢D…º5š@RÍ€ð=®ìY~#`{¡ß„rD½Ü’Í_íx¹R§`ƒ£F+0?Pür9à My?¨³®š‚ÌÆa©àÀ±àk3‚ ¸†²n°{6‘£Â—­Àåy†Ä‡Bqî šeâ[”‰eŽcß PŽ"¹Žš™Š±4¡3÷däÎ!Mc‹Ú™$É(S’é‰ô„Õ1Ëǯ¹‹åU‡ Àò@×¾§ã×J8fÑ÷ AàHø2Ÿ $p䇣©X¯Ñ3\Xf#,Ô »ÎU@ÂØîaö‹ÍUŽ¢yéêsÃŽ'qí2ùX¥¡ àÄÅ\LlÌ7烪 ÁzTÉ•¸Lƒb‚/#aJ´Ü)mˆm€ Úá›’¹-ˆÃâ…ÆcÄ'ÝJÚ¾`±U¤A'EʺÅÖ—¸Ú†Ûè@Í/ǹÓLÑ¢?qäÁgƒ#‰§èöñˆüŸ—Ä?¨À@ZÉóÐ+0¦",eÑœ¹ ò˜®øÁŽA™˜>˜(L« 7ÍQˆk€P–ȬâÑ0lnèDŒ~õ  EüøÊE¡ÌÂl`*dÖDp°á‡€"Ÿ¸–ÐŽ ­âV˜i,&4Hóà0çãÎDÎGÒ(HW‹3Y a•Ðڌظ[±–¿ë‚òCHÿ¼L¬‚dlšÊ °,3/ï° }lÌ]˜% $WŽ@Îq"5ˆí—>Få3Qx9¹[ú%.F:ˆbY€Ë#˜õB¡´þlަ`ÜÇ1„A#V’@- ¥¨T£€ˆÎÆå¸{Lkž#9ì´Æ:PEçPL#à„·w1Ìée ‚¯w™Š’pß&+äcT`©­pq7kŽŽëÌ'*í“zÿ1ùP +¨wˆÓ‹ºžØG»˜”¤—}Ã~ ó85uøƒú_@ê)5`% ñ+HÚ(¢}Ló)tkQYE¥¶ÏÜKQX‰3ò'paøýA:´¢£-Ê,£…îÒ¸`qk ûúŽÀŒ a~È^àÛVD‹­%|‘Í+” Éqû’š_${ÌkVg!RͶOÒ™&á0õY‰ ¯¬ÎV%ÚlÉÀw=à>8À4ŒóÜŸ˜N@DSñ2À¼H×m SƒÒ[µ38˜»veÎû:ß"yc&±¹Ž„: ½J @ Ë=Lò##$u9¬ÈÅð Rôîo²àY´@‰LŠBÌÔOgiMAXþã{P¼¾šx&–’(’£PMÐø‹Š ñî ½ë˜wPÈÛ0ùA•cHö—’@°æ5ZÁCî†'@\6 «Ì¦Dé@ h‰³ú ¥Ôu ~YAàKbáׇ™É’±ˆŸq¢°*&¡Hƒ”<¤\fÖe¸>íÏqEæ ÅÑs„4^"Ôaƪ(XY$Øi8Ôíôz™FÀ±œàÌ!È:¨ÎU‡³ÄÓ \ÂÒP"r'©ë1(Î3‘%·ž 7‹ÏLüÆûVn3€2@ˆ®Ä°Òq”5µâðc­Áb…@§ 0käoAÁmËë* `¼ýCq¸C‚a‚9¤eåŒ@Àê#‘Äû"}b/ë„€™Á3¢r0;ÙÆ#°¿pܸpEM1pØ|A ÆMÀS<Ùáî…¢Ÿ* À;©_r` ®JÎæÞ#9,YƒÖ‹$ȃ±Ø Ùx…'~4¨•Y”Kbáòp€ŒÑm¸Héäà3ÆÁÌU€à’ú„x1{¹~DLTNbÿàŠ-ƒ‡ÜVØ(;É‹ÌÙŽYq+É¡CÒ\=€y…qš¥$²Çq†Sj's‰¹øœ¬h )—2ªˆA<ª†ð¨–<…ÔYÛàË~ÇÀN Và®°áü§4†@O˜µ­…GæR±¾}‡úA,Ü2S½JÄËÅM\P11o)3&Ñ]‰Gm‰ýÁ¨ ¹‚– È‘ Œñs …¾B¹Í‰<ép ½¨b¨ÐÀð¨NÑ`ÀuËݘ6À1†8–„a"ϾÕJÆ-@ §Kʉں`bĨ#<ëóÔÇ:'š\^"èZ0&õåkƒ!úˆ„<ä&òPOƒÏŽàg«¬;½qöpXWbPYQú˜Íƒ8&Àhg‘9 ýˆÏuÔ3Ø‹«ø—*@ì€ó¨*Ù°ð‚¤ƒ¯+8•´C˜Ðª0YR° £võ)µx®à· ùb[ 6¡G.pc@ƒÃ÷ ÀÑ༱˜/ÀkäðÃÙYt „u»ì$#°3¤àCVŸ'µ+È8 Zâòe¯Áô‚-“uA ¥œCëºã‚ EÅFcÁ’osg«Ú 5Ä/dD xS7kõŠ} t‚‰Ðʼ@•‹V ú?ÈSX,‰Š)Ñ\ÇɹkQÓ#N機UògÅàܶ·Œbsˆ3É:…)oP]!FÁ Ÿ¡ñ;%p¬¢Ì5ðŒžSf_˜«iòî&Íà&`Ï`-¿0p`xq=&N0æ²;&Ÿ!¥µúî*6|ÊŽÐ!@½Ãš'Ù¹Mw÷Ü9è˹Žç½\òFû&kprb¬RQ1ñaÜ뺸ƒG2õ‰‰49*b9TG¥˜?g•Ñ…ZnoEÍ­"A“h”®>±Uªö¸Ö$!)`ÍÌMfØp l“k$W÷-QÜyC÷„5É6aþcE£Pê),.Ä€±¿2¬6½(… Ž’€Šˆçâ:—ÈVª:.bÉ휢ú7_ÔÝAðÑ€FÃ@ƒú0Lo)Àë2ƒ‡ÜL¡Gr<%l¸ ˆ\¦/ /×ÒÄ ŠZ›r;›@N~ƒ9±T(íʦ;Rß±0ÏâÉ`XWmQ]Á,Ç(µ˜d_RÁd€L•C8âS™7,P7¨‹!qD]/QÄ¥,¼C¨6Xµé°Q‚Gmp…Y¸Ž`WНUð7€AâfÐ( òüB| Cè1øâCG•ÃÏ2Æ–@̈_°È’tuw4KŽæ^ÈQr9 Îɇøæ Cu†È<þ0f–H t\eà$åŒû1šÁ` YŸ@×08É!`Þ§ä{›D+P÷;@ö3о©Ç©ßõÛm‰æÊ¼ßˆn±” >x4•P—œIÅü€Ž~gÍÔ„¿òn¸4'3ãÄ ž!–؈¬hv1õ3ìv"£È¹ŸW½•/Ù°ê®6zM¤|G©ˆ·Fd)f0Š¡ž¥ˆé"ª¬<ÅešÃêÄr+¹XHBÖûÌxšLßœJBŽ6°Ks7ƒÑQáÔ­¡ÈÀâqboRAævà _˜hŠŠÙYmËqUÃÄv±s7ò$ß.:ÓíR0Ä诃 ¨£%DŒd˜¿xÀG4–Ä8ãDlaLúP©„.ÀŒŠ;‡‚Á².@PÇâ?º9V„5#K•ˆ··&0e “°w7˜6öHÜVl„0¢/0wh½>®d´cJs̪À2:tDÁX›ôe¥Êx+!ÂÐîhKÍÖ,ž†h`€¤Énþá”¶`í5øˆaó-@·F>ývôCšÈ=’ ñì ¡(ŸÀÔŤú¨–‡_F/\C" ÈÒ˜|vº#à5KZ$Ië9(†a Ü£ÓɆ©( „ß ÂŒÄ8ƈDÒ¯$I l¦–ÃNL;€³®«ß9‡.&µüVw*0Û<îxÃcÄl' 95ôIÍM€9f^¦µ—^=ª{ˆÁ§W+Ñ™3À`•øˆA§vK²|NÃsÇÝœnTå™(I'2aÅ?Ó@Ù×*WXmëPÈ¡Â:¯Æ¥Ù,0¾³¿RòŽ0Ý‹|9Œ™œ,fåF—á€ÓÌslX|¡ñ!ƒ¸àp/½ÇÈ^{0wOy…†.ná4h2Ö¥h ™ZŸLÿžá1#¸· 0:èazK—¤ÙqKcXœÚøJÐõ m7—b^ÙÒ ËB! ¶åðÁ†’¸lQ·ÉψaTÌ­µxù€ˆ»ÌkVèñ6qrá>c¨d,ÌÈ}rb÷k3zXÔ¾ÉÚýÄø"fùñ ÞAa?2¿×mD¨Ê»?.榣y#3©PHnj'–eZà‘18þ†Ü€@ƒÒñ Ñuop¹CvI=ˆù@X"Ÿˆ ƒ,—ÀÇýÇ1üüS<™˜…‚NFkj¤¾‚Êõ,€ Ðe—¡,·qŽÏ[Ž'‚APü$ m£#C‘+¾©g̀ؠ“ò:æ%Ø”&»7 T{-–.4ÓuïÌeb§^ ]§¯Jâô6-ƒú“0Ït ©˜A7sàGª«Zêg8uýÍþŠFŠNÁ#ÔÌ~X¬Ö¼ÊWY‡ï™uèQM¨4C‚3¹w Œ¹{ÌR r·Æ žŽ7æíâϨV¦²øFs ë¸mw0£7ûÓ>ajBp®Qƒ;;¯ˆ±Ð ¨ ¶±Ó1מp¦ˆ¼Ì»‹›ƒ^À¨ sì' ­ñÐ#˜6G­E|”XÛŒyÔɉ_9 ´ Á¼‘ pÑØêÓßû•ÐiQ¡[ŒÄ@_Vpo"ãñp$„€ÎT×ÊâAdâ‘_¯, D‡ Ñ3\Î|æ?ð~B˜€{®èZÔ7sƒ Þ¡ªâˆî´«+H9…ÚsïÌG€@8ƒÅ•QñÆ6Á @h\­Nˆ/Èpµx¶uÜæ¬üQõ€u³™{ÀWjÞ0Aæ 8e2Œ ³gÜ?{BXø«ã£1±À ¶€ˆn` ÀŒ#SŒyÆ¡û`cRŃo*;P°?Üß›¸=ÁËÜ5×ÞŸº`3^æÜÍù…¦Î °âËñ<½â0ruÊ‘Dk[”üÓÀˆædš ¡þ+¿+]AÞ„¯ž&˜=‰¬¢ºTèHà8‚s™'inèéµñ+ƒ7æ`†‡™‚€Aï¿à™-Ar ûð‹b•7æ .V…&<@–¥×ÚJç z@ì9-¯š¾3Ù ~ ú²ƒCÿfçé–ìS€´Ë‚ñˆNe96ÁÀ³Û™ºc@[îðàà¥âbY®H9™ÆešœÙ €Åˆ‚Zl»Ñfjg|~.ë%ª3 ª‚NÊçˆoÉš"çâ TrÏê÷ óD !O+M±$@Õ {LI£BpHH]æYî`…¹ŒC‚³‹Js Ô¹ñ¸ÒÂE)æ6Cañ3&•¬’*^Ä­­g×|¥ÄtÀKÅX.Ô=gÄúÚ€½KE4Àò‚i±CÊt‚ÖC9–NQÀ)㬠‚–‰RÐ/0.·Ü š@ämW¶!yL—äÎ|æÀ÷+H À=àq»ÉÎ@Û‹ÙbéÈ WÆfsˆdGň@aаHU•)àªX<¯Ä ûmA°ç/¨NªÎ†³.'+ÖTΩÕÒ7s rÎ-d´¿fcS@Æ<€Û©“¯.¡ý!5»òÔ¡)Øy…`nAYÁŽ¢Z/ÃŒ˜[lû.!r'É£Ä0àtª!»<—ñ,È ÝYdÀ>< ^w/Œ¡‡0™e…bö Hc£Rh”@·‹.0›‡g Ü¼è-Å\r ¢øEA;–?ýÉCN~f'ˆ-Yâ´0»B¶Š‘ä5(NׂÛÇðÀs@áþ& IÜ3 ö%*6Cˆ{ 8]"h ýEƒµxd¶“•¢yâ ðû&d-¡á‚D·›´½Âò Ϻ½ŒHª% DžN± u>—$4»;ŠÎÏÙRG7¨TCçD†ª U´ÜÎ 1‘ŘvÛŠÆV_h&,.(2!kJ- Q8J!y=ÏZ¦©رÖU˜^Ž‘„£¶ãº) ˜ Ó¸ü€O³ÿ ºÃ2€¡BÓé r¨Ft² gKˆÔ·xg0Ï0g®'>Ð9Y†Ñ‹»R…¤K^žBø`‘pn,˜þŒóZ>à˜è{Œ½s3(’ò{^A:\K­o(QmP—ù®`‡Œ\PÄ(Ø–9(Úù÷¹kŠàˆö¥¡R0,ã0Á„­VWpæ‰ÓVEàçR¤AÔqlÌQUwðܪ f¸q̵@Ålsù‚»A»fj+­h˾*ðÜìÊö’@©t°@q¸'¥Y>Šˆ qÊ;8=]KÀ3‰^L®´"™æÑXzdÔ‹!ca\»õŠè/dù™‘( >ïÌF@"±Ëó3ù£zænpPYÏ;ˆ!Ø.&¾j ÌÊÇ‚3ЍCò„ÞÜ=ëvDÖÊH|Dl€œH…yü2"Uì`tâYmÔü w³,V¬>ÎX`Ð>Ü.Ð\ ´O™LDí@¼7 ïÜB™¨35`H¨k¦'<¡ÉöUb„b{Uô¥À¤ƒã`³Ñ•›$$H´Eóõèì€Ù$x\ˆù`*ã/V-ÿù† ˜H•è—óúe"Ç5ÊÌ7í¹+IsÁë§g«eŽEBÒ€0æ-Ä~@‹ 'ö#ª©¢ê¢8 ‹Š¥ !+ûZ—¼fÀ#H£Æ@ äu˜"Ú‘’ê58qÝ üñ0Û²‰Dlr JOQ¬<¤Ñæ?FªÈ X,Žñ–efC<ûrø‹fÚ–FW2Þ&GEÜb?X,° Q`:}nˆ ;ú”\ QùÌaF$l ÀùÄÇAá,\)Ä9É£‘1–Ï5fPóò÷yr°A`=ÂYæ–"GÄ;h€Œ]ÄU¶sXdæ{AB]ó³ §u²8±¢ÇC*«T9\Áƃ)€-ÜóŒržÆS$†X8 öO¯Ž%–wPn ‚åV)p Ë$0„:–K±+6²sÚ¨v}b€`Üe‚×9¶°¡Ü¡¯sTÜö ´VÏÄ1(°Ä#ˆT6üÃä7~“V‚s‘[”åìœïˆÓ1SQÑŠ ü£˜ $U¿z‰hÐâãBÅ}èó4@aŒƒÀTƒèC궺® ­€ÓB)à-a¿9Ÿ 9JÌr1•~ßs…³%ÃŠÉ ¨ôH45™‰ÞGxîlü’ÚÌxÓsÏ´™ð¤Pmâ"Ùð²ÍC9Dy—¶IFM:;3åS `ž¡ƒ âFÓáCñË€Öí– 0&±éÚ˜\b!‰H°z?Q4€’è[L—ü&‚@2hvdbb´…·ÉŠ›¬ÚPéæW(å  {åñâs 츢¶I>Ì>©É*DVC1æ‰lx˜?"¸±#¿2ïš!,k¹ˆ¯v$ °yÌB‘—q°*• ^Ç3´„.2%*ô"Åuq¬¨˜”ÑÆúªfÆãhô'IãJlLj!„(ÆÊHDÔV±fï0ØäݲVtã‰Â¤O…7t¨ À’Á‡ª¬?aÀ!Mø-NŸóçàÊžb™,8|øòI¶¡vðvt@š¾[°Me#*@v`øq@y£ô€Ê™­ÁQ8C÷â_õàùžëfO?)« È" øH[%eÀÙ8¡Xr|\?U|ŸG¸˜­JÉ÷6Ñ!GÄìa@Zî Á%Éz¯¨º( Y`—ÌËöÈ£QÆ Å"ƒu# Ë“š¢]á@EÆ?YÆ%§¿*95\…A¾Ä-{BgHìì¾`FTj ¡îBáÜ#ZÂD 4±b)¹H‰ßj2øê$Ï“ ë±yÂó)û¤ÈB±pŠ÷yš(²y0q<™ ô„/Š$ó]©\"Cñ €DI²W™}—Ô1Ñ‚. `‰Ï¦a½{la‚" lÍD(þ_B.€äýÄf@Œ s8Ó¥Œ¨¼A‰×ê 8Êmž¸¨ó˜†t¹u 22‰ôsˆGks-Qô&Q¼èÊ甼ÀrmS +'˜aÛYLâ íˆÌlÜwBk4%A ìKâÙ‹„ˆðLí5¹ËT?Dæsƒ|!0°x›5¼¸†Ê¤!SáA¿Ó¹¾pçŠP»‡ú˜Ü7ÜEäy¨À& ³æHÏ{&u üeJÃJopiÅàšpoÌø8[v‰ä83h6`o¬±(Æß؃¡ÕÌv°¿ìKÒ^[@,bh õ“Û;p.rÅ` W<ÝOÉ=FúŽ„Pä,FÚ5t™,W¤Àä±*ˆ$ðeFœ 2‚Ü.aØ<˜{Za¥,°¼‚Ìý¡®Ä ‡0sÉY¥PØðÙõ ¼jåFýÁd„+<¾æöÔ²,‘<øK`š”ÚA‘ërË ô7ŸŸd“n^Q™9—L²¸?ކǯÄÀÁ 5šƒ@+(”»LªI= @áæ·d,+ˆ÷F9š×’„x"cÑ…#]qÉøëùTÅãÄ]’PY²À;ÈSy™~#È–¥[4,1¶—+2øS³¡™šÃnhù&›“ï}BäÍ’’<ÎlèÉ· Qh7˜¼`aåÊ÷ üA߈4Ç©Ü!$~!óý//“¸¦ªBüÃpxP-búcŠi0X©$戺(ÍTéņDÉÑ@½ˆˆÅ{%ìR‚ñ*²€Ðáñð F 3­)sg ç2óž6œ™æÚ‹ò7–H'ðŒº9çâЂÈÈ’‹æQ!Û ƒâo!#‡7RîN®) õ5ATMÀ vEc׿g)]–F½KV@É`‰|CQû's€!>ân )‘î$Ém/rÖ—>Æ5UZ°0þQP ÀÍû*g!a¿Q¬FÀªv›b<‰›@iØæTX‚–Å3 rpmˆH4¸o \ŽO>'&\j œ›q”0À½ƒ‚<Ë­ËÌ]ƒà)/ Æ7Íêrʾa µÔÉqâ=C©VÃ=Ì%nàž‘-æ Þ J³@g˜À„¬O¬þ"ùL¥s‹¡8»ä0†éOÏ39dv'B ñ9£ÞÍà+îâï`Ù_÷;°6å9¾Ž8=°DÅ‚°å2S‘øŒ0-Á‘Bú Hï3_€%@£7ÈFx`[£q¸q-E‚ÌZ B«'¨zzq‘£Ë/öZ¡àz„T ŠÕÁ. t#i©Z,{™qLœPÁ»Ø›}`aÈ"pA‚âð‚ˆAvz‹À `\ùˆÚ( œYѧ3„cÇ,\~Q\ÃÌ»†¯s'ÀŠ£ œt‰Ú²"½§ä?©©Œ}3+`)¥—¿F™ž2‰“¶è‘îà–€€ðfŒÊ$Æ\‹ñ š$E±êf¡Ú7á#˜½f’u6ˆ¢ !¼è&pŸPmY&Ë3\¦¢V„°UÁúˆ`À‚ü`‚cAChc&T‚«õ)úáv [èÔ3˜01qÓ cž!ðfcÄA‹)XùÆ -¥ ”P Š"O=Gm"4@mà²Ï©Î×ÂvŠø~fû4¹”:¹q™áAÖc˜¿LÏ4SS±©y[¨¤)þƸ@;ŠŸŸˆKhxÄY$dE¶—¤TbU ­&æóz…<€aÑt²8Ün€0Zâ¾ .¨#òªjÕBÁëÌ-ÎM9Ë‚fcd›Ú=ª©h-n]6êõø3ú—%¸a_ùæq™ÀP$`GNr¡Ê[æ_ÀÉP±â6eÇ·R¡«3€b«–È„î`é©~Èà@Y*ccáã2ÀGj$⻋µÊ Ä üÀî€ûGõÌ*Ô6޾gM·3,¡0­ýW'q¬† Úp`ç¤N ÃQÙyYP'Äõð¶¦Iq„Pñ¯]‰‹eŒ–î-|½Ã´™ìˆÔ:xƒö‡Ú:õDþD<‰Ä9ž1S ÌŒÍ˸ˆùJC”¸x3@œ€8àÄò4"{P:D³¡Ê`ŽÞ ëMbLÒæ…mp¸C$ ]HDÙŒŒb]Ñ\-+­% ¡õ›‰e`7˜è@axUŠä8'Ù@P æorœ–¡‘8ù@çh8UÀ+=7™kb'ú˜ý2 @©a)œÊ К3|%¨úš¹Ÿ‚¸Øû@¥Ý\©ÞÜÎ#(9%A3Šh~{‹­ £~RŒ/xT±¢MàwSËü„`bʳlb‚  „aï‹Ã]ÃòDÐzš<º   °ÐÊHÃv H„û‡¬7ì\¥O@¬®hŠØ6#ü g…rp< H‰ò"übÝ0y:˜¸H®ŠWâ„Àƒ7ú…9~àX \‚¶M™ƒ±FÜYÁŒÔc¦àÃ´Ó ™ì—倢ßeö+ß2ï|uýÅ|o u¦™=}ŒÖf‚%  ¬PdlîgóV†D4üF †_Z™pc(ñ°D©´“ š ž /N†X,„s‰z‰Ò@ bd³P媎,ÑÓ )b(ÍDNzYŽªa8Lœ“ /§00Â>eË5€Ø1˜µ#¾ƒœìëƒ4ê"_™ÑMðF+¹×†#ÝHVa¸.E_Á™ž€ÿÔòܬþ"±¬K ‚aíµe‘)WQ궸Cñ#ä?Ø+XŠ}“åüÏÔf(ñ›†²Åéq˜$þ¦ÈKfÿa1¡PÚÎŒÛKs5TåX®Z”H`ÉæSb@BÝÚ]˜öˆj?˜Ûr .xÔxKº_#Ápγƒ449ñJ`]ØØ†½€€”9=⃤_s¬OûŽè|0ÍÂå(Á‹p/[*Ub’X$ÌdeäI-x…I%‡£AËLÛ6Åa¤wp¬ò3,ê"ÆþÞ!€Óæµ´@ç\LöJ(àC"¢7Îá¹â”½Mørh÷ÈLê\2ìXÕZG4#.Ì„Î&u!Ð0¼é¡¢iý1è!•Yº—øç»:Wšú>“ ‘Ø9.ƒ:—úDE[„ú^)áõpæ þiCÔu£}ÑŒ ÐØ5^ ¥Íf!§™QnË;ÔlÄ̘€¹‹õ E¤BQ3æBªïÌ*áÅl«£5»žJ†iEöè9äÙæ\øy£yè¦÷ªÑX#¨,(À ì?‰PN¶UüÃç­x)“eØ bÅçÙ ³%¾‘ž‡Cföôeæ­ˆ— ÄÎá¡Ì¯—aÊÄhÊ,”)%tNàžíÀˆ–9”´LC<ÀžÕÄ\Ⱥt,}â Ά³.`–TUM¬ÌrXv‡QÖ@ù”Ú7–yš¸VOü„rØŒâmLwØm¹ŽÅ|_˜ß‹â^ÄÇÞ¼)]Ë –P¾bá­!±;¦Drp¢w4.`h×^ø–•ç¨ø¬›¹îhs¹÷ÜÍxP?46)®ï™…¥s%8.f8(A’n¬ÿ þ»¨¸ƒÆ„=×å3¼xÔà"Vè(àw<Ð[w5ÀãÄ~8„Ç2 JØb[¢rÄVF$q‹[ÑË :ƒþéf}¶é¢(#¡<\î`ð7¿ê8H±ÈEê.F€æ,€-è;0är ð£¼|b«îU…„úýÊÖ" <€þ ñv¸?‚ÃôÔ«€(lSb?T|ˆ›‹æW‘ Õ˜µPv°®­ [ž¨-q§†”©0Á¤Ç|LpÅ¥3e,H[”Ý(,r‹N÷f²G'‚K (ѳáµÈG8¢½•“}H3*ÁÈàµaš Ü"À®o©ÅÙšÙ-±œ°Pu1!F9º6`k†mÜÖÅ+0ï–UGó ýñÀÁÆŽââÍÑ©ÃäT×äÔž úß­è€â£&øP\'V ê/ÙÃÅÂìÍÆ+Çp:ge-öF„˜¬ Aevf;FÐà¸ETUÀ Å1ZÅK®ðÄžh/ˆ#ÕØgí"MЈd¸–d€ ~•'éÖ –pŸñ縴•#( *9¦Ðƒ¶(Ðê/Þó ÷¨S±‹(Ix4¤3ŽD(µ¥Ä8©Ä¨€˜‹MßóêÞ„uî-ܲ ³8ùw/cn. Õ& Ð<=Tiîj+ks;œ2,‘¾¥D<–Óžˆ$ˆeÃhÈñ¸ÎA«“fZbsŽW'ÌÇBï€Gõ (C¬q5gÂVÑlXè¸:@C‹8ø…ëÆ&°I`-ÌL¹Hû"@Hü’¼Ìžæ2Üt먩B3xTPýr#¨î$ýâèhÖ{•EP odC¾û™&Îp@ºs,¢l(<£ ˆ™×øšnÚY—Æ9 4B6?PG{!B¤Vx$Ó ËædÜ=²:ãp¾z‰úasDeYˆŒdª"áµÍ¾œÌpø—ÇÔ¾£ô¥r6¬@f‡õÌ.RŠk=¸K1È<ÿžÇÒa®h¡©©üV€o”Pm=ã–Íd\.SÛÔÍ+ Â²gû;Æ‚Ôg:.ÒÏ‚èÀމܣ,Ce€/™OËæ þ„ÁI“EmöƒnJ‹üb¶³Ò—ê¼öéñ„>4wÜêÈ€¸n,¨æcã@Šúˆ@û8ý?®ga™_ \€›˜“s‡rîs^ –u5é®îh sêiÀ׎D¥g¥˜\ØŒ0Üé1À–äycS*& ‚ñ+Ž¢ñá;SšŒT |KÒžPZ±S…$`:s[Ð:DE± r¡*¥ÎŸ0è³w…"¼EH!(†íâÌ›S(M!80T€ä3ø„Çx¸C]E‘{ó86¥âœå¹Ç`°à/ˆóø¨IuDʃ..'|ù BØŒ» 0eeÁHèPÌ+X!´ Àªº™q%¸OI:’'¥1í/ ßÉ—àà RÊæ.Àf Ÿ-2x•HÃwÌ[í —¾e—DÌ 6vœËU´8aapÒɈl‹– ;€V\–X夡è¯Ì``PÝQ¥pdëÉt@+(ˆP¨À¾L ïE{$R÷›Œ §¨Ìº¬G'K4âbäöçý€ÂÁàмGa¹OÇê;øTQüÆ–YÁ?ï%·_ ÍK8È8‚Â~Íj¤hìZ>b< È#È'_º›®‚‚œb"$„/‰Ôábš:Ðù‰`yÞ:@B!˜*rà°ü¸—.e„fn²J°v3qälÓ‚+Ó … ùñ¼¯È–f¸½€\§R‰ë—*l® ÔÏQø›¸‹„|¶—Vœ~Gʧi逻˜ q/‘±ÔÅÐc9¿…)sµ¹Ÿ-Ýʰ΃™`Š 6\Àã4vsæºC‰Çž'„mm˜¬ (h€Ç“[Ç1šäýÞË‹ ÿ ‰rØLP rŽÇX3FŸ´f¶‡S+áü…Ç3ì„2à?˜ëȧ@Åaó™V fÕÿƒ°3ë^#a >€Ì:ñ¬hCˆG׈.ÅÄë€Z2à€™ö‰”ît&i+§ýÅl AFÚ¾bÆh÷ƒžc¹5’B ô¦æ‘ç!(–D‡dFb|y8RÌÊ0A9á°è•20îjð¹A||Ëi¬û¸ÔÆß1ë€B mG¤ž€ùu*ÐÙ‘ìLk@!9©¯\5-€'¶ ˆ³H85º™`À|w+0â0! äçê „õQè€Ðl‘P'”ë èÁ l0,³§‘“ÿ’ËÌë)—«Â “E(óP•‘ÈE²€„ÃôQ„zæÂØŽÝn n+à6! †²!ö@ú3 Õ+& û½ ¸à÷*N¤x€V\Çàs¤\'Ù(Q˳¥Q¢Q øË;€F òO& @4rÄà"Ï j ²Š3k]Á8v€Iua*UÌÕ‘Sî&‰è Aé°g‡ƒ ].²ÌjE°Éƒ€+ês;!Û3¡b6Xnµ,:˘pQ:Þeù€>õr¦Ë#3˜´ëÄÍö¢$Σ9? ac¸^ÅÓ ¢ÍwUSÔ«Sq@°É®d7˜·x¾‘bs_Wmà,ÀýËýÒꙿ°Seæ¡ßa€Y—Èp|=M- 8Ý$ŽÉwŽYÜõ,Oوه£ýÎýßHQcÜ¢†O‹+& y0H`C ‰ØÐÜÖÇCÁäÌ¿)cÃí7ºŒcÇ^æ TùŠLKh|¦®SÐ`ÐaBW’N_`M{‚ÌlOë.9ÿfúXœ6±ÑeôXF¿¾¥DÀLü†Fîl’‚ü¬b™ÍÜ´^ª&ùÁÞüEoÔu2° &i´¬çCˆng†j>f`Š@Ö ðãuŒ‰û?‰›ªp`Ú ¤¬ÇI bØ€MLU%u:J­“ؘ`O˜^¶®âÎy#0u‰¡G5Ôfœ•¨‚66×çPïœd¸Ž; "€˜?,Ì eý¢/C§ˆXükxÈeµòfq KÄlg™8Õ°„¸ÎÀRÁx”x0p$QîåÝíþæÏl8¯Ü­Íþõ¸[„è A·ÎeˇOìÌ«AuÜ×ôOHm<‡§*ñ%¨ØÇ'3z/Ê[1ˆ&4õà5S_}–` bqÐÉ`Ö…“¢Ív~H3µ÷— ƒ6~! @¤t Þ`òç×øcí©x|!äŽ@Xñžhy‹}9 (ÚžÙó¨43DlÁnWB°‹0{º?oXD‰:xÛp¾I-ÂT1f (d7*ø´ui,Q¥—‹_p¥#D;>Á˜?ÐcP" ƒKv™Ô@Œ#)R!8 ênDB3 é´(E 뙺-ÄVAbh.bÉ=ždQ?ä’UmÃßhØSP5#>¸•hX~£¾Ç0ÇwDÇL¶¹V”„”]2³ QƒÄt”Ò40“‰þÏ ÍHJ·Ø˜b„­ƒŒÂòÑàØ‚öä^rr¡õ$‹[ª–q´šŸßPæ æ3K -Éöå:žµ§cRŒØœ-íû•nÜà1±–èNs°è£M@±Ð6áÛù¨~Ñ«3†_oéòÄ+ÌäɬB@õ¨EÍ/âlå¥:æ(gN…Pš<»¨‹Þ4ø‹Ä* ˜l$†sU²‘êf˜UF9 ÁÂp(Ì>ñì@â¸wÞ!PHeÎrÈþPtû11“¹Íˆæ Q€aP&f@ðGÄŽçŽ)‡z@#„±°¨ßBe†;6ƒ H­ þçn$X– E™¸Eù'ç ~cc…ÁìÃ˿¢UõGh2(dfû…ºù°©æÚ>âj^eD†Ü¦Ê€  9=ÑHôEýG`)Í{‹}a­ب%dýÌ£ GùÆË‹s6©ïŽìXðD"#²ò=)^ǃVÈÒ$hp{ã |&²ÀŠÄ ð9Á6 o9Ác¯çÑœ‚7î„Ô6åáÙÂÌCÀ0F†‰Ü({)£© •ó9"9¶ÄªèÌÚð‘Šæp5Å‚°lLzP6/¹}"Êó-p<ŒÌÐ À9F[¤=„§‹5 á½Æ«)Ò8ªQM È ›B;„Lq´ÐÜ`ÂÀ,@•ªÈœµ 5qÀV‰øB\€3À‡õ*QSÙ<Ú¦a½`7¬Þ~~¢gŠ®Lù\ànKÇ»€´"xÅ0ö~!ñŠ€õ°š•êÎ?Å/d ‰~5ÈUÚê/aÞ ]³0¬ dúñqÔŒù3T-Cϸ‚!6WfV©‚ÍŒ¨àç ú†Õ¸„4;ƒìõ P. Þ7)–ð,àÕ¦hÍX° SOb4êÒ¨€8¼1E²¤5f]è ¢JfÂÖñuY‡itnÆÌÂîdóYû…#I¢ÃÈO«Ä3 Îqâ¥SF^”ò¼|˼® Ö`‡Æ©ñô÷vÔ{& ɶu׸UPႰ玣§4 ßpü6!vw#b2aÈŠ$¨˜Ð½‰†ÚŒÁCb9G½4[£“‰e’—§ÅA?d1:qö%b\&ï‡i;“R¼€Fâ¹=MRb†Wwž„g´– j¸æðo¹¨y@âgܘy‹hS†Z÷/~ 0Ã0 }ð=s1Øãð[[žÓ,Óeœ3ö9PÎ EB,уҳ11nÎL`&NÖ¹Ò^cH•©5õ/ˆufaVµ‹6ÊèËFå…Í‘7SÑE—ŠN+Ì`cY›´È6KÈ.;ÐHg@Ï@¿G&Ѹ êÂçæbún8¸°Éh—ZÉÂ+"SÌ_aGÖ&Ÿ A‘EÆlÕCò&o¡-¡¾÷ÊŸ`…P»Q‘A^=myBWåSCϧҕhx¹KÔÔ`a x×_1ùC‘´Lp†¨®;•õ€6L@k™ô<#þ&ïR÷‘ à”fÁ×p`@†¯K¼™¢ùšm€ã>!ÚHl"\pô0ÀQ~áÉ¢–eìh‰ 2ÌX²àÕ†á¼ÏŒHÃÚ 3b‰ÿ¨·Å¼à'æ¡4;fëŽM&3pœÔ‹@g¤§qÒÎŽâ ,”2ÊJ‘U«¢x¹•Éäy~~¥z„.x÷mõû+´ùˆmÔ=‰‚r³)Úp6{”¨êÞü–Ó¾_0ÐÁô\æzàƒ˜ö€Âh706ö#! S™øG Ȧ”GÞÈ&ìr”ËðŸt9þ೤&šÁ¨¢\! ¥‹àñú ›³ƒ¡¯°D†Ê‰ZA«„n#¨;âáïN›¥'3u Êq4zP\<8iZîOË8­& ,ަòÈ;†S¦ŒnÊä¢'K,P¨ÖÄñ3hx„çL4K'ÜÜ*µ˜w3‡,êPÀ±:>?¨¨±Þá1,`GÌ(T71gîLS·¦_p»‰nÈKPÖìb¢£.BÔÍWÔŒ=ÀÐ7pJè$Ív8Œ«2å@ànwÙ°pl&8ÉAMP@Œ0f4¡üCV³ T!—{â¡ ïCæÔC+‘ ÀxÆ"RÂëñ lN(N}ÀQœÀ*dþÚŠ'+ú…Î:ÙŽFéT\Âß‚!• ¬×üe·KŽ;#&AÜÈÕ–Fàþ¥Äâ‚þ†ŒÝë§NÄÛÊm¢ø‰¦ ØqUÜ6²¥b3gr °T²»>"<š iÒ]ì‡ W8ݬ`fh; åó”+sÈë½ tÄ–Xá¾n¸a(¼¥,<2ò¿DŃ–æ(ó`ù˜!s°Ç· ʹօJ"ëjd` ¡qX™nçiÝ•=b}=-LVxј¹( ìˆÀ˜Ð;pi.”*¨6Dø—ì@ Ñ´ã a¸ükPåŒD–,ôˆ´×¯@ˆø“ÞùIûœ°˜¤i·TÅ ™OÔš _jTaP²É3°äŒ[æîruèÇv7àMJþÌJCµÞ¦í<¸=hŒˆf1ˆÖ¥šƒ'Æ€;r¥Y¤È¯ Íx˜”¯€Z ° .%¿¹.‰†Ãx2l Cˆz`6g14e^!êøÀ=ÆÈœP• Le£Ð[y3»Ü#ÉxKþ$ů“Ê"fA®Í‚矫íˆr©¹å›ß3°AŒˆ&$vbBˆC% ãˆn¹U*sL{–B¸—oF@YwXŠ|¹ŒÇöŸ&aº×g'’püFÑ'øV»™ FEÕÜpE°G^ sKe,™d@,ú iwÀÌ€ÓÔËó~Ä2J ÇÁˆœ-PLjStƒDpð|Å~ŠàG†¡‡-Å{¤tá;îcË™É*/ŠhÀ²mfŒ–QÒšŒ–’îá9‹áf á „¿ãiË"Òäå{Ë184É—œ xDð"ºCpd•rëê*hÕK­f`•¦¹šS>~áu‰EÐþå1Âë–Ô›ÝÖ@nËâ?Ü•À1Ñy†BœÿpzÛÝCí±pæZ£ÞVZ>eèNÉR·h”S½?Ì~t·!$+†^;` S¸¿æ¨kQCûQÞŽ ‚¯u-øåqK• Á0b%È®äMØÇsÔá#Yˆ\»kîócî™™aFW‚Æk3é©„ Íúy«ˆEÉ•ªbÕ~Dzӡ·±‘äÔÀœ²dF`4 ÁÁ™š ‡S2ÑcõP ¥À`DZ†ò„2ÐamB jÀ°ËNNNÏ™@>ez͹š~ ó³PI^åjLMý8tjE‘`a Lx8 $"‡%·Û*¡ô”KB ‡dħ€W È)`02Fžå…%gø€zŽâ“©ïµ6Ä'qúž?ä÷„º:1ìºøÅ®ah ô Ð:>” ˜””ÙàLè|áKGy`žÑOD1;ê÷ÄlèÊ+S$j/ÃH}Ü#âñ]ÌÿóqòÆ¡ˆ…ftdþË€¨ rgòê-öÓ&?©e©ñ‡ck*m×@NjcÓ™n7>)ëUb>Òõ¤Aæ´¢'Å'À•ÃÃÜ;°a?à˜‚­Ç|N¦³ßˆ¹“âe謿ø"RÛ?´á¯¸/œ:ñ¼Ÿ“—ëltê+ªú†ÆNë2à hÌ&¾à’Á}O)TÐ"3)[åEÁ¢1ªœ¸Ù,|({é4¾{•úBÝÚô9Œø•> /D«þY`{rˆ¢³šy¯ø¸—‘ØÃf„!Â…þá´b3œ“¨z]F5œhl˜-ÎWj¢æ‚Á­#^){™x¨02Ð¥`Éå?@ s ª0¾ $4,nZ@a<²Ä ²FåcNÛ„ÕŽ å?™â¼až&ÅŠj†rl7ê‡F Œx6¡k@Qì®>X•û~ å*ÊÁ" ½ü U PC!y‹À3:Iò„ €†‡*‹`<~aijO Ú„Øã’¢Ï±ræ)ˆY•3\8±Rb9Ž –¹à$uZšÐΙ½/ö3#[»$PýN09Yð`Zџ멘Â$1a~ñ9Pjàn]Û„`_P©’€A` D–åˆN†35ØÓa¼k©_šDÆ ªN5kñÜ 0*€˜ ºÁ‚\X„Ê…4ä˜bzBeC5 %-§Û†œY-¼ÇÀf°¼BS–tBy°JˆäEí#x&~`» ÿE5ÙŠu ¼8º€ A@7¿1 åGB?’¡ÔˆxÌÊÀ€/"-€9-q4µÀ¢C¥ö—ñô"RF(#t”w±3xdy1-ËCÞr¹‰äsñ*Ôe뎮‡#!ÝmºÃ¥2å ™ÛQ€À3àæU\B«¥ÜÔaefp»&Üëcn8ÚZøšQÕð.;©ŒîáðC±·þÐ@S˃‰^„ª1rHê>óØ2,”mÀƒ019›~¡[ó1›>®p™R SȦÏÔäÔ£û˜HÿŠ[úãßÿ±:ô1ÁˆDÑÀy—Ð ”°¥ê£ 4½¸>¼xÚ„p4T$_Û¬H´¼ò [ÖW_0³ÙXã#Cû‹èmÐô1Œ…Ãb0b¨e¨a@gN@²8C»J 3øA;(ŒŒ«ƒÏ‰laüˆ1°ÜÁÕ‚QS Eœ¿(âš™óשñ)ß°,Ž#ú—'a† D‡ƒBÝF°OaTÃ…@ >•tÓ§7ŽQp',¾ÁAâœÍM«…]†—0ÐIS¸qKzÊFäÉܵ»Ë³x>¦ßVD „G'˔ڂ¨V;fã Ar1c=ê7°”M&N9D4K —VU@`Žî §"ÊÈêX|€w:ìÞö=-‚Ô.fC× ;¦"†IíE&8qClcÆâÛŽˆ~¥Y50×Ô%ÔíèáÅçšõƸ†9Â`3~D‹$] —]Š–}r ó°§B1 s•3+¬–Ø1o Ø6ˆýÊ\rA<ƒÜ±È¾|ìŠÜ¬ƒ Â€+á¨*À™¸ÿ‰„ûÐŽæ¾®îá³ AÖ'5`nešn9I,¿Æ…èË÷3ˆˆ— HÄ¢Q|­!2±ˆî.â?|¨\¸!éF—è®àäãâbbSÖ3 dÜœáqálŽ´'ÔFÙpŸw¹Ëº:N$Ñ<Œbdóæa›ÇÓŽ‘^@ƒô”Åý’‡åÎðœõ+(ñÎØîpCiˆ!Ž,rD0çP´0‹È6gâZ¥*õg3­Q EfoùTŽ«#7*ÚkÍÏÎàÈÞ.ÌIäÆCM>n ÂFbpgÊ:iN'G á,Œ<@«#o„e§.Š&ƒâ/ä¹Ãd‰"üƒ “2ZÄîš!rvR¸ªÀ“XCkr‹pÐÃrüFä°&s <â0¬É þ‰v„œ€. Ü,¬Õ •èZu“ãî7õ<`Ãtš¨\Û¶F ÇÁü%ÔA¾1Þ˜oýK¾ît*.¥„¸iÇà¢m‰„á ¼‰kC)»/cÀÃk3YÈxýL Ø´¥.¸ËbTZCc5`;\¬\ç¦:+‰vÜvJçûhåg)¨”öÊ5¿#¹¼ ‘ó/(°ÄYÄqmÞêPŒƒ¹nšV²“ú™žpnaLš{‡º„Û⢂‰Õ wP2x% ˆvÕz–aø÷Üv¨êÐýˆuû„NS©nL,|Áˆ·¿(‚ð7&¦´Ù5uÊLi<Þx0€.=2õ03‚â–a.<ø—j(ˆN[Œ°ú¤¥FøîžVAÁ ï˜.-3 ¶ßêH砼ŮɛVÀ?«Ÿû ɲƒéÇ1xCóÌNMŸB¬`#?‹cõ(ˆG”FZˆYŒÔ—'b(:KÂc·1Ø?¡¼Mˆg3!¡/p4xÔ-DüA˜¦Pêi¥ŒP˜T@äXeeæ(HÔ%¶7õpé“J>¢9Åæ )È3V̧f&î‡ü¦ü—€e1–û„ør«!BaÐ Áñ·x½B¡ù=1Øp>I©¢[ŒEc ‡>g¡ãÉ…5—Z÷8¬£ÒBÜE» òŒ×‡½Ã?~ÍLæÌž.Pj#)CÙŒlÜZ)ƒ>÷®D Ya˜µÆÃ„w wW´73×d"ѵÐ?¼½ÃÖ™À¨ºlÑÈßæ]H‡ ¹MËvAÌS `2Ûêȇ”(êl¼XoâçtÏb82šQ=©áñJdÚjÀX‡Ä à$–6ó^æÜEèÔ-1Š˜Ž!×Å âí‘ë"æ´õ@öyŽøNíC=Ê-l9s(¼V`‰ âbÔW«dÛ<â Hð`çëòDÄàü  ‚¼f;@^À}ÄRTr(_À̈( lo\uƒÈsÈ ·÷d9 ŸqˆØÑ¢£b‘‰M¼Š~f® ± À™ˆ†_†a1Ne {¢3¬`Ú¸' ¬»@T0 |”.RÙÍÅжšIçÓbq"Né³;Î~aÐaUÚÈœ®«ARk½Í²xæÑ„ îV|fZc@ LØZO-¡êVf2Ýê}õÀƒd'þÂf)Ø(ݘ¹‡'"S-UÂ}ê÷Ä©fòQÁ#ÊÎ.¹sµ–Ñœ{+ÄtÜíM¡ -AMŽHU Md¦úƒjId¢•X½©“Ü„ìÃÔù@£š¹p˜Ëi§€âd¡8›h•àÀŨ~‹l. z¦a—ƒüu?©˜»0ÊP`yÍÞ½L¤tÎ&Þ Áp6°YÈÿ¨´BÌ21°»Ä'0ß0jÈ‚rBa‘ô[œôs› r&š³êb˜ {¹ñ Ñ U#fÜ2´»òapòÔ¦`Ù<%:¼Áó?H “ (i`Èi¤ÂRv K[»Aµ ¹"¼˜6aȇö™„Ì6Š]@k¹ßAä9”0tñýNøJV}&i02n°cpµ¤™¯àlÇXP2àÙù¿ݘŽÓ&#Å5â|i-˜(C=K»š° o±}Cõi.Aø‰ %îùWX! |n'ð òrù*Øú€uG3;ŠÚ%ˆ $ò Ac¶³œl!û.”DŸw1™GA圢<€„]Ìh/y©S=¨-T ´7Y°¬L|7#f<¢ Y.ÿ¥<:œS!ƒmž¥v0Aã«ÁcF7(lsP·>E@wÑÐ߉€DO¾ˆ·Ì$c"‹"œ‹GB=ܰä°Ž À|àA( Ð*2Ù`d ì·ºä<;V‡ƒ42#@ò ÔšQGyNvK¨GVË­f 1a ‡-Ó!}ƒˆ”fC]¾KîU£ ‰%'`ðiU¹‹@Ò…«:šjåÏq^¹”„d‹‰öÙÎe´0¢“DT$Û^:…±Z @° QYIJ2“Æ¢`œ6æ m (ˆ Wß04ÊùBá¶‹ÓAZ·HEoBpE¡’™> ËYÚ"·°$Aº-‰ƒ‡1³¶¥?¢6p#ÜÌÚ—Ô½ð‰Ç0š$Ê©NÌG3*‡äÒŒ®`ÌÑ:ÍþÎ µôÓÉQöŸŸà{I×Ö¶74!ã½Æ6ó™º×¹wUfQ6­B)…¼mÀÄ’¨ï|'}ÑÐs6Sw-O³ 1(q6 oGÄÀ#|´!µ¦L[Y>:”ÌaÃXÕ—å–øó1H1ÈZ™$¿hVü~áë’ÍJûn – ýËtV;b‹&Õ¹Pù'ðC™•æM¥(\6„¡ Üð=ÇÁû‹”6—‰¾ñ1ø‘$xT(E>Aÿ„HB/Ð’¹°Û0{«'œÇÐ%žP9( ñ†2˜;ŽÆÜ,×WÁGHM ¯y…Þuë ìr¡èa³¾þä ð¬u-2,;b/£Ž‹hp&ÌR±Å|™e±cð†69!KÈ‹øP+™ºÅÂæn‰Àxq] Ë¥6‘¾£~M84¶"‡¸î‚]îü$tº¸tԱί“÷(Ü›«V@*À¢10>6Ä0|‚JB ±C+¬VK÷Jó­ñ2*(.‡â 3ÕþÍXÄG¼¨UTgrJ™¢¡/C† ;4!R€ì 2½é. Qçˆ`8 w¡tO]u/Ešç¸~Ø|…A8a1ØþçÈœý … óûÙ 0È&ªÔ¸L  ÐŒ`ÐY bÀcÂÀ<Œà&ÈsØþœOUâBÞúw-AÀ˜aûŠL 77°.w4í'Q7Œd/™—Bffe-‹y©u„KÀcÄÂÛ •¼¬t“ðÈ\Ýf\СG§4çÌõ£óË:w÷ d-¡‡˜kŸØþ "Åvf(’Ó˜ á(çHèÿÜ­î6ªÄñ À€¼Ô¸Äº””8Z}ƒ©ÇFû¨{´00%Öšvâj¡Ð\¢-¡„"“J9ÉzC•_´3 NfÞLL©Ùœ¼QFI:8Žžf³ØÅ¢ÆÖ¸ŒVÔö º§¨ @}‰™’J¡Š„€87Ú Z-y¥¼sÔ8îhP(ž©-¼ra¥AMÂÃ~&ª9ש€  “«û”„AWz™‘áê¡UK»È,P‘0N’íJm[¬;,Ìj¥¬ÄÌZý‚þàŽWžyïæƒxð.WÑ^Ôwž(zCZ’ ¯£ ?pß—Sãg£1y÷³¶0‘£ÑƒlõPt¿€-˜ X®CFÎb²bù<6¾<¹AèÜxøDBŽb݆ ˆ¹TÍ`̾Ÿ˜°‚žqPÌQœ‘ú§¸XÂÁ$»C¼¡ª0Õã’¿åÜ.~Ú_­8*I¤B Ùó(¤åVÃò`1ø"‹—æ‚Ø@õ ͉¶C¡G¦'ÙÃßp™ Ê`ØEòÌWÄ·GÀ™ü±@¬•Ìr6Íù¥“[ y0ZÓ¶Ñ›œ®¶‰"xÿ° D rÌg\ü4< •²ŒÚF×¶/ñq€E±†ì³Ny*wݘ闱sŸ‚1/™y5‚U)´ððDº[yGŒæ·G39!Œ©ËZ<0âv P|F¶ÁLòV)Ì ËΧF(=ÄÑ÷sωÁ\NÝCÓ7ºüLeùÄ @žˆ‹³×˜Gÿ%Žx÷À‚5b üà­´e_!Š ë“6ىʌð9ŽFRÜr[š¼b¦C?˜é„Ûäjrc·.ahS;„èžÏ1Ž$ÙY”„¢ÏÌJž@Vpåây6!¯«èG¿Òy™Û1I `FL¿FaEýÀ» (æ¼Ìs !¹KÆYa #"€@Ôà[—¡Sz›Ø"%ù„éùBF‰Ä2ÝL3#É×Ì%Ü3Ó̹†ÄŸPµ²¡¦B¥ Þ€ýMø°~T¿Î;ŽÖ¡ªÉ+`¸,B Íû/f§ ?N=)›´&vÆòs œQ(~“öœˆ³gÅ¥î`â‹VÄìF&÷=ˆá2-ûžÉá2€ LÃð#ÌWAÀÃ¥>Y_¥Ëü²NÒÔ6ÀÜÉö9Ö„¹Ô+¬Çæ5XTYÂ;j¹»_q6HgDÏFÞ€Áé€!©×ÁÆ2„3ãP²‚ð•JF[U¨Ôo4Œ?™D®-Ôóí^\Btlr¡<‰8Jú­ELOyþ¢•qžLïôÌ lŽÒ°ô\ãGÕÊ`Áñ3ˆ]÷)Ð/Sy±Æme?µ14¹©£wâ3F„Ðt"ÔØÐ¤^`xžpDa÷ ú&[SÏ2‡4‹®Œq)°DI]ÊîTÉr=·~´ØUÜÒ`,ýʸyäÇlÂoCNÎ ¸jˆ÷†ÁÁ¹yœ +…»ƒ€TðHÄ.!R¡˜ û‰¯.:†4”/ñ;z !5™ºPÚ—¤\Ôp|LE,=C&,(0:™¢³8‰S1FŽÆpCg €.a^aj…Ž¢t ÇÜÓSgÆÄ®a\­‡çÔdübs{…´a€fܨ‡v±ÀP¼j ´p«"hP€"‚™X ¼FÅ–ÁU âÇ ÛN*:²1B*l,¿š™î1Ò6wXZ Pv€˜”Ðéè˜oîÞæáÊ‡ÜðØyx3r½Êîle½@]Bm®'ˆKÀ-cLÇœkO»œäsîP@t hkks™‘ržCÒê&!Ûb`'¢;0|£\幬T¬Ì†>â/ÌL‘׸JBËÈ-CkÆBœyjnx)`£º0 A¿¨VIÖl(»¦¾Á€—=5Jä«f7¥q –ýÌp`-¨7Pû²ÔÏ¡AelCâæzî _qû‰¤.¾ KÎvPä(.fºZ3eÅ4æßTØÇê]¶®n ÔÃзwàÒ„n|w„©‚v£ÎR-G˜äGvŽ Ì¦ì%|þaíªJøîå @ Ò@옂!d„­+Œ åÌhµíš%Á>X-Ú­AÈBãi˜tPë"©C‘³3g¸ A´v2·‡ûŽì7ÍÈ©ƒN!ìÓ ‚F’ѹ6ÇS:ÙDâãAÐ íÊÜø¥AÔ æ˜qÑ9ð6¦SJ5™0H8 5…%§ýÎÎfS%w|@²G-#ªÜ/ q<ò:2¿öcö4–ˆ¾¡,§q³dþbà̀Įðâ L™­yŽÊQ`"2þ%r3 ©s~¼§~&RàÎs*¡Z­œ\,!"i›=DðL´†áM(Ý5õ dœ…;´+¥ Æ#»d¡"¦³˜ÜW(q-‹SËêQbyÜ~u‰Œ ú@q3”E‰È™h©ñ,´í›t¤ò£Ã”x„{Óîh0âi`%¤rç™ÓÌê†Ïs•©U¿Áέ ‡Uܬ¨ÇXhüÃæ„ Î xsmè Ël?+dpŠôÿ~ÚŽu· q³sT–rõcc·KV R¸ÞSæƒð¡h#DÔù„ ,G˜UêYwôBhÅÃæ+ ÚñL¨ö¦WŒà‘ù–´ãe<Œ´bWò~º¨ Áˆ‹FömqÈÔÑAFÚ—Š—dûLÝRK?ЩvZ,–\4Ž=#!ȽMÚ¡YC¤¥„Û¹}) @¸àªC4bÛ"ÜÄ<<Ñjg¸¯!4WåÀâ/€åF§N‹”ÌÐ; qã#"(¶ÐDˆKÿ©ù–Bƒ1½UÇdB²ƒ; æ˜ë‡£aRèÃaÌ2”×píQÈ;+ÕßÜy1o S”k8–ñKCî- 5M3‰KÚh~qy<9•þÁe:àúê>E-­%¶Û‰ä#fÞ%(@ðÃöâœz†­Í.ãÑG£™ˆœŸü!‰|Ù»¦@÷6 X½nmlˆu/2(jý=Æ„9yˆîêÓžL ;ˆE34 î4 OaøD6ØZ ¨»…¡=®\6€Ø ‰‘ÇŠÈ ÔL¶OŠR­Üøcöa¨ êv¢³̓…2xD Í^LjšÌº8ÖXVT¡ð´šèÂ7Ïæì¿Øp‘¥mb¢ú‰©Û¬™š‚Ÿ0;Ê®P r©e£ÌT²ê ‡ %¹°à™Š5³€¢Ä XLlÂsJúŸ"D"ÂO`±ó4 ÿ°~g ØÔ%ÍÜÁÆ¢ *›-`A A’%Ábýzg£Ì*[Œ^» á9Dø§¨·a87ÉZ¾  ¨Ç,æõÄ´°µÜ³0:üÄá€0ó_©KA{CqLseŸ˜žœæ¥©…ÈÔ°î!´. A²9aCäAZþUÃÍ’óÞT\¨ƒP8dû›A‚g,~-MµºãÌF(Ú‰‚lüBú߈\m®8‚Û@‘£…ááÔ2n >&OËó ‹QH¥WQ*Hµa€yŒlØ>uã¨5DŽ¢b8Åxkp÷bëïâ6q‹Ú[ð¦ ɘv(FÆqeBŦ+Šmß1ï€ë\& Œ/ÿ&D¦ßqn4#Çm¨ *±j2§˜Ô]$àäp%ÁOØŒÓ=eÀ€@›÷˜5cxïÜeRõ‘OÔãTRn†¥È ÝBäMâ>ÀÄ?`cf—õ()BFò %§x€Ó–µ2%¡0c‚m¥(AÒ¬™ÁŒYÀÌ…{–É$3(ŸÒZÒÀ ÜûR C°ÓÔn {þœŽÎKæ]ä+:o ðØ¬³ù‚dçfÖ#£DÒù™¤8ì8‰ù²MGqg¢à0ŽcæGs-Gî ÓY‚Ày ›$U]ËhK3 eœ+ 12™§F~ÕF£ C´B£/Üo G@œò‘̼ÀY eŠ_A`Ńó :ã WÕ‚ñ Ì©‘‰aƒ'‰Hè .0Ë bo±6õ§4Îþ¡rÃó2h\¼¶¾„,0£S¶âê/<ÆPƒÁâoд'„©w Ü ðN°‡PòˆXp1Í – ‰uS¼Ž`nÅ€P]P)¶%ÿž!´:éâ^ð,z˜tUòB¸ëÉG7óâh -R³9Pˆíìz=Ê*Hz®ÂûŸˆˬ¨^Jƒ *{DÍ]#à72´Þ-¯3‹{ æ¤U­åðez*¡†Jîʱ,ZJ:ÐAíÕL<;RÚü! à.æÝz‡˜Þžz|Ê@ÜÌ ]2ÿa*½“¬\A€i=›ÞÖ rÜ7Ð2¿Pî4DBâ0@KÄ®¢ˆG`J0ŠÙXŠBF©-JÌ@uu$øžQà  9¢€-‹F: òÌ™gm¶0bkxY{bj†ÎLÔ¨³àŠWÓ‘˜ŸÀ’ËD´z‹X\P*¿ÉQ7J.96Y+˜»N°‡vH‰†;PˆÂ4s!FËŠNͳz¡íbÛ+ØÜ"¨g$  […Ø*Œ)ª\1š×æ-êLø¨=sÆСÿ €“G¨€s¤¨£™D€qÏ™‚ßðs²Ì?èœb<§!ýˆ67̨gÜØà È{QCÀ·Š•yç¡F±­¡lUír‰4¯F˜2¶£$·zpL¨/8.k×Ü«Ý^,ʇ¼ðÆWi™‹ÇÄ`8A¡œF¨p ÀÜD#q| ÐAr4)‘¡9âÑö&t“8åõORàß¡·SWâægsAÔ§¨ÍÇ¡3¨œ5W”l!õ¦àÛçâo‚Q„\‹E;_ÜàPìQ©˜B0í%-òT õ fúÊVPÉþÈ\PmÁ(¦jç9;—Î Š¾L˜ˆÞpÌϬ¢Š³6ñ,2 jÇwÀ§—zQ¦Ý™ÛÆ]ÅÌÐq1´¹ Ÿ†w›-¾bAÆÃ„c”lî[nÿɹ˜;h¿¯På,m÷³ýf`“ ÷K¡FÄâ Ytû2u oP,AruA¥2tåÀXŒWü€"üJU8  r¡RŠ<“©¾´t6º¨$!¡äxƒïû¦ðrXiºz1É[#©lqýÄí0¬0Bl€÷—)ÏF¹W„,ä•Ú æDÄíäÜn”ÊB †ÈåÂæÉ•@©²ƒxpà=ðe_4'‘™N5ò•HC^ RðÊ<¯ùB²ÐKÌ-Ê:e¨MD0A´ ˜2WÓ‡$íØ…{4¬l3„Mq6IûY”°˜,Aß%0Œƒ+Ðæœåó07ýKG›CWŸmÃ`*;!jç?ä;²šbÝf¸ÒÞbßFú{M¼e„oÌJ F×¹yg]™Ù8,w ¢õ2Ðþþ%jÇTL¾nÌS´‹­E²1è ü¸Šù #8L±¤«­>ʃOaÀšZ8â9‚*€ և޿T9¼­ Í7‘eÍ’= qY  _^"ßðgó]‚$Ù±ßÌŠ! ‡ˆùC˜0Á #\TPÄú™8-*Ìbi¥gP•’#B¤áliOPšÇÜÊïÔº {I8ñÆœ ÍŽ ŒmC…%äi\ÊŠµÉFÊmˆš’¢ø—>ЉÍY9T‡ÏÌ?cqÇÉýB³ˆöæa¨„Õ„Y1ó¦.Î)om¡y'8­L¬º†¼ ÆAl”‡¸bŽ&Ëñ8 Œ`B r -¨·‹%¤ÚѸÜA»pöç)‹‡ÖzØjÃñÑpn/>K1ÒFÊ3{3àš6óbÄš§Ü=âC"oΠ 4e AºÏ¹†+dM¥5> m®»æ›8š¯;„¡>f‘ô¬A¦!1G·P4^”?7¢ ¹âRîÂê˜jc¨5SŒÅzó.ù—꼕ê¡"ÇA ¨îWX{]ÍÙ¡sØ„È?¹•¯g“S:Ï rê§®fQ8 VcRØ 'J…¬Ç›— 8Á9,01`ªæˆ“ã‚`=!FÍ”ëY#öJæØŽ†`“A‡G2¿G$ö‰•sÅ€ÔÀlvTÏç›(Oi²!¡Öaˆ$ƒ;¬Æ. å¡Ò>#)ª _{‚y‘!Üy9ÈX_˜«­Îs –ž:+>eN*!2l7»˜ÄBÁÐî¦,•iØ=Í~[~>!`å`á";¼Æ÷2àràÚZ­€‚P#/ðòõž#ÇVYò gDM mñ3è5 ²°ަ:Äsb¡+#74È7‘BØðî`‚^@ö6%];æ.p|\Íí”!ˆÛÔ¹V¦ÆGQ°7 òCRÖ¬B%@›$ä`²z„?„ ª¨¢¨½#p 4ônWTXÔd#ÈÛ ¸¨ ÿ† &?pÔpxKCgËÔ Ñ#È{q==<”n@óü{œQ™A¢þ¨¢S‰íß‚.>,)˜„Xù›Ä2Ú˜Ø õæ=ø±ÝðÇBʆþ"åÌ9‡çœˆ ÉùŒ†FGíXó+£`¢³s7¥y:Ϲ¬ÛÐV?Ø#WBbžkÌH¶Ë–d(ÿÉs4¹‹ò+@†%¦A1¡£.™ØJìAf$PH‰œØ!Z!I n„2… FÀ©M7b£ÑÄ!„% XÛû…•óÀB]âr¸®Ç4PG3`2 :4{–0 ÷†g–Aþ§º½CgÝÅ« —( ÷,\„Lì¢QáÊ89+Àó4¾¸¤dÜhi‡JV2!™`F/=à ‘ÀÅV-ñ;ƹÌã¯1¼ ºÜºìŒRr)Ÿ¶SÜ.iVû…¥¨ðV}AÆúS®ës,¦Þ¨¯¸ À5N*:ƒ­·÷:¥ÇÄb( |‰wLxPý9<ˆD8_Á VÆ#µ“£7eÙ‚äL©”F–€NPÃ;·‘û¨!2‰Žá84VDË.`UæSÈ$m“t‚­E‚ÀËŽ@"˜äÅè FUÕÖÔ ÌK‘dP±Ä¸)#g‚jpFÇDªúƒ„Š(|‰Xޤ×6&º!õ/y£Ì&]%æÉ#ÅjbF¾p+ <7â®cÿ¢”6¥t4áz£0È`¦ÓH+Ùpí0Ê4 *àr<©¨ Cø›ªgÑæ®w€>ÅCi„D ðnè/aQ‰Ù¸œR©]³&\ú¬£s¸ˆ©ŒH".. ¡šë?3=nv©‡ô€g8–ŸD&¡'0LõÒÌü2¢œÊÌ™1°1‹®`r´;æ&3H°Ú^h·4*T++ÆŠ˜…П=`Pº1>êšLÝÚˆ V·È›²$¼Q¸}hË€ &vBVÅX ¯p|ɰô¨•MA "*¼íyr„£Q—˜· Q¨——¹}9X‹âc‚Œ¹fR²GhÍÄãþ¯xBõqDÀáJéØï|ÇVÅõ Áb…B+‡Ì«Ù g Ì¥ Mœñ&•ŽSºú‰‡ œô ¿0ŽAø04ænI»l}@RØyé»áÂø;¡`ÞcŽ&á? ¥á—(ß1ù~ x+ÊÈÂ÷9¤äÍócË[·¢NãÚ‚‡)µÎÜÍÛÛÑzæÄÊ Û[À휡2³AK0åSö@ùÌÍ[¯dâˆöàûÄîȉ‘°ŒI5Ô[å¨ü´9Ù09j]E¨Qȇ{a6ò&ÁÐÏÀµ8úMá.燹‚(ð¢žëàY uÜHéd,”W~&u ȉÍDè€9t_Ä"|Àªá-Õ=Øç©¤uÁßâ,ˆZ­Œ/Tµ¨^$?’bXÐÆeXflôæ2)/'5ÇÄWên‹ªˆìê7CCc;îi×¼=ÊÆFJ2ÔÝM`˜Ø¶×'ˆù`¡Ô tÜõ-0—Î$¯!GÇc YS[¹' š–ôp¢lsÀ8&áûE‡VÐÕ÷ ×(8à¶, ,7ƒ+ð‹Y`‹~ D°À^á$y$\gÂTIDLo†ÑA™úeóŒ©þEö- oppšyלê´aôq¹~¥Gaó4 ÛhC>Ž«$[µê¢MдVGS›dÃ-Ä9 2õ if%ÖâeÚ3w…‡f/÷{÷ l"ˆq*Þ~¢‘€§âÏäˆMZ¡?d¡±†ŒCÑ4* ãæ8»ÏèÎáš †°Á*ª9][Œ$õ]ªÝJ¨V6Á‰ãè6+hÎ73<Àævþ-°Üb$ò4fì*²eüJ~ Cà Ôâb là Àxó-ÙÁ:຀w/Qsvöw*ÑPe{Š• æ6×CþË”ä/Â¥Ê:äógmásŸ]¸< ϰ¹º"x&¼Ê+`A`L6X ,(2ÁˆÝ’Oá2i ÿe×1ò„UO&h€ZŽågÁÈ—eC]F‹Ä|sj#)‹p6³q°dòüN‰‘ Îä¶ñ¸¶Qéƒ3Ÿ\¢ñëSnlXu‰›C‚‡Ñ•ô$7\qP#©„¥ 6Ÿ:"Zæâ..H dÊ%Ïé»Jý•,+ i ,@+Ÿâ”3¯Â™dDBçP½£‚Z`p8СĴ9²R+z1`ˆÔ„&Ó½F·‘‚UŸe0Bdòñü=lÃâܲ,Çpdëe¦$zLÏTi™Ã–9p€dr|OÂ)œFý ØôŸpL8MÂ&\]÷ó¿Ä!F((}À —ˆ[íMw l€C" ÃC3îG¼ÇNåZŸ1>¥ÊËâ7ªc)u €‰T¨'eu† #±4}C±û¨RÉÅNÍy(¶n(¶¦â«\õ „D//ÜnCŒè\Z&-›_FZúKü‡¤Q˜–(¼?ˆG×DRHOÐ̓b¹›¾±ïJ_—D…¼Ç‚ÔnE¨¤$U¤ÌiEåf6À'©NcšãàtL`5JñâSì~¢q ¥TP@ ¾‘f= ÁÉÂŽ‡ÄìE-§W±v0áW¦ûLJÀ3 Bïes.õn¥|(0ˆ¢O—.dôRðÌbhG–%Þ2Þ„-x…¯ è‡,¹º€p åHˆ‹]ÙèZˆ3¥,_n¬À,Gˆ wÈTŽ’s>“ìOð%¸99SB«0àȱó0 ÌJ}eU‘ÖîxÿàBì›.|Cg['ÌðS Ö\Á·|ˤöâážg"À@A3(ñ•ùQÈùqUçˆUPîò„ΈAòƒv=çèK~OŸQÒÞõSHa^)l=¡ªæ|g.C`È䪂™3P;s‡Ä5S,}KG/k0·5ˆg Ô¨pŸsj î+5CÓˆ ?è¦BÍC«“S~hHÓŒJnêuã1&" Z/™¶n¾`pOf»¸ÜöŒç£j7xÔ™^)™ð'ã8zð,‡IÉ‘„M¦Qú—Úr!_ŒÄ OcA­Gy¿Ýp'qTçI'0ÃøØ„Øš™ºdpN t§N1€Q’²Çbd"ÀþˆV1l¢'Ð;Y/ˆ·ÃV-›!-,`Ô¥GFðy͛ˣ@Ðr®Wࢥós„åusm¯êW eÛ@½C¿òŒ+õÌљɉ°s‡;›éóZø–î™L ê5—âéÃa†ú‚wòdq?¶Ï;Ê<¡S<•Ýu-rGANšÒ‡è%f²¾%s°põ*€®ÔëÀÞæi±xŸÀJì#d)É¡ˆ:P¤Å±3ºç>9¹Pçl§ùDÈÈÔ¦Ç0ˆQÚd œÀì&e<Ä´ì‰Ê. t\ß»‹EscjI 1½$[Éb­‹ÜÌ‹-€¢ä„„;(MmP¢¡Ar䆌^'*áFÒ‚¹ÍŒo‚‚ô[w?r×g„ !*ÏþLÔ¹kÂañïmçРÌpßüëq¬»êó+á±èÌöðó(´Pô%~È#¨ÙÄe¨*[$µSOrÔH,ØÌã7Gº{‚ËÜ~=àãðN¤äƒ1¹ÒL¡©ƒó›¹À“ œ7G˜ìù•Æ•~cUOÌ3²?,˜oˆ»C á5hœvÕ²‹ÄÇ“ÿ8r<­Ø8¨ZÀ Ð{âaé5K/G¨G|&D 7È„н¹aÄ<®„ïñ £ìM<3ˆ²Ncò8ð¹þ¦§¡J¡NS¸”¨Fþb‘(ÊÍÍZÇác¶7/ð›’(p±_p©fÏ!0Áͪkñs3ÚPù‚ÚæQ¢3(K8L8s(y,ÔJHÏg;Ï!ÀçªN¡¹ú8ÎðÔ?…´¸n¡˜ÝÊÈ“ܽo"=kˆˆ¬?%qTý Œ€†<.*àK» 3Þï¨rƒ†M¨‹„@#&À]Ê€«äÀëG¹ýO5ƒñ,và8ÿP)­³aDX²¬Ër/}Ýš¼ÃI,6?0®?ÁÜ%(riS9“‚“'Éæ` ,“Ä~@î,Ø1©pÐþ’éhÐO=ÆFVábçÈØ›pQdjQ;@¡Ù * ZiB™aÊÝf Í&£~0`°ÌœäÆÈË¿zùL\´d: ?&ÌÈi\¨|5 ´y>fe¦PÐfÜ9¬ TI„{Gˆ˜ÆÕ40Ià4“Ì[¸7ð>¥´ ƒÜŽÂ±8WpN¦qƒ¾TÌèf&‰…p1 nc/mGl<\²@îQa2YL 0!EÌàx™DÄòRĦ$®ÉÜ!§Z:ó1vÁÑ U÷ Áîìh̶WYœ€šÐêèCv ‹–˜d/îY8/GP8òƒÿž:„f†Œ)€C }›Ý‡…<$Ë[(/¸ÉΡyÍôDqÁhƒfsäéƒ"<ëËýGq<½CŒ… ˜á¢ÉVLØ Ðögâ=Ùr ñ ç[‚Í h,õ†„2Øíä52cê"–9‡3 ¨lc`@(ãqàöSÖ ;Æ t ÔÉ# Ê|n$PT ÅKêdd¿s›ÁêgУ¢dH¤,_SrÏ¡œ—z^ü’aO@”†ÚQšòJ‚ÂÅj%Ô ¨r½º °aE”›\b@ÎKðPرL1p¹ªØnä2ôG©–·C£Ì8Ðaî RžO×¶Ä"`gq»7p‰þH 繜}_(ñFì¦ï†ã‚îT¾PQÔ¨(p3hx©ÇHÊÀn*”88—á“܆ ’ Ñ+V Dš»‹u#`b‚z8ïº6²Ö’ÈYÄÆ`~)Æ¿¨?M†IFãñÂÌe p¡9š(rÁv„ƒ`"€/*sI»}Àa,žËA ¾º3pk&C8 ÖN¢ 2 ‹“¾!¯šß àÄWΣ§ä\¦`nT`°…a¿påÀóNx:¾ ÕNÚgÙö›J-œy…gr,“º\d!ô·ŠX4o©¯qªçð†RVN¨ Œn˜‘?¾SQqÊ ÛH>ÔøÔJó22à Â3 BÚÈOåAú+du.Æ,ù8&nÆ‚ó0·©Z£PJy ” ïCÄ5ô>'›£QrÆ\Ä„ 󨄵. ¬Afÿ0ËMò¡611í Ž2E«šœÄšÒGª %ÂÆí‡åˆJ< /Äו¸ꑉ—\RÕ‰Âo–€¥='B”pØÄ>}‡B5¶fL,|9åÉ^'@ÁÂpìe¥–¢L‰ jOøBÔì ùM(]LÐ~cÄËYAÀó={xNYÃsœP ¸‡¶$ݶËóܦà7 &ËŽ<­ÊÞrà`ò’€HÄbï 4ÇÔk†p6…ðeœ \ eg3!ä'àÅ,§^¨J3 ’OšÏ°|ÂÙû…ð?¸ Âðu ~Ǹ äDˆ8@¼ø¼gð^¼M¸„ì3ÖæhƒÄÔÄá‘1L¦ãÔŦ@”ã¡°‘¯GòùW5ÐFŒLØœ¡`¥¦”Ä E?:lä‡èf\ ½ò°)GB,êo BÈ”ŒAtÞN\Aת=1.ŽÚ‹œ b‹A¯Qí, Ê·$Û¤ÏyH dApkʺ”T'·.¸\bbƒÃñ¸Úé¡Ôà€„b÷B"ÝÀTÚÀAüG@x9ZÌ:ÅÆà¬hTˆua9³(¨&S<@Ý„ºÀæN)(FÀØëmñìýC˜ÈPn̹æWǼb4)èÃäIÏ*æ°:íCî¦F×2Hh™DÇS,3¹šè30–‘;Mµ ˆ4á´Ë ˆS9ÅÂq>^á5ƒ›Åþð^%“%BXÄ7䨋 Ÿñ>Ø+Ü ×t&YÈ~?¡ ”ƒ®È TÙt!sUv0ëÂ1ñ©çÓüÊcÉ&j²ÁÔ>8Wöà©M‰re+,¢Ï1)=8S{ "Âû2° vïõݲ,$˜;•œ@Dïà™0C/€%Ð `‹„nCð˜«Ì©Ãÿ#áƒcyƒ@¥qkíŒOܸÕÛ†+ ˜`ÌmS)´“Áj6)A $¡1ØÓÌ@à“*¡Ù³œÕÊÍ„}6´ˆ6=yÀt$@-Ü>™_1ŽŽ´÷8¶ÄüKœ ÙD¨èˆÁ)K 7"Áó8ÙhÀû†æ½<ó0¼€|[å;±Eõ\µ³F)Ü €ÈD|#°˜•ˆÐŸh“µŒNýJB Ž]Kdøâ'h'3³Ì¨§"£;P×`£ÊF®«C‰DYÛP0ÆÒÐ`Õh2+~fe˜Æ[˜A-BBŽ·.Y àfeF@j?'ÚTåº*”Ç„T!°Ó•¤*ˆàNÚ;‰UÞ%½%b"¬C)›…Føã˜K¼Ñ̇l' H¬  6ö<@‚«Ð¸¤SQJº‚d¿‹”¡«`ÙÍð Ø£BâôÏÁ8ç©Ìt\Ôþ‚ðE˜F ÇV±§0ð-dq ‰Ç|@¾Ë¼ˆÄIÚ]EDLxRý *¥,yîwíôó8c™áôƒ× 3Ö€ zðKÒi9 )OŒHþ“feÊA²é ¿G–JQf2Ë©A°Ðy>¦´ŒP|ÅB;›œyI6>,ø€¡½K¤÷Õ ­Â¶¦âáwp=!oAóñ<®òqñÁaE0‰oL˺h(4ñ*ƒäï¾áÙÀNsán¤È¢Â†O IÅÌWF×&‰ˆœrÌéKÍ<Új ~e'"Ì. <æ~g­6œ- “ØÊË6Z¸Ÿ [Ü)Peìsì÷ Z®zm|MøÓ+ÌïnuSË-)XðLª ˆsPx¦œ¦cÜ[.jÅ$ ½vظ¨¸ÊÄà€sn~¢öp"Ï3™‹#ŠXÄ*ÒXbí©ç –ÀÞ&ƒ&†@üL5C² ³ñüTKÈß-‚22%Ô¦˜“DA¶úaÈ•*l­häÃU0q3A&ƒâw©³øó4FâG°q ¼·cê<ìÙ€fY0)-¿úåW ¡v„l±n¢a­˜_ 8ŒûCªÇ.óËsØ!6íá0ã¤N¬|Î'µ¨ Y"’K´E%tqô€Œ” ë–cÓSÀ,ýÔd°ß~æ@ DQ\ËU…-2@¥óÓ3{§DUj¦ýEî`ô6bÄY0i@lJàžˆt,à…ïb Qౡ" T-eh$Oæ*±J7+`lû€2û¼E°n'ÊƒÃø%´]B[!‘‚nD‹ž"TÚ˜0 ùÒÍw4iø—”àê LxØ™70Ô%èTq&D»SC)üÆ{ÐESÕP¹q©©Ÿjbæ,s“þñ↲2g½m `˜„rÌé9ˆ¼j±Â[ÝI~ã6ƒ\sŸ£°î,ºá÷ Xc1«#ˆ-ãë‰Ly?ÞÛßàKdšÀF8Q°ëÄ_̈n]€¢ÃĿ¯ ?ÔñH‘²Ä˜z]DáBü ¦~R¶ÇZ0 2:ŠJôa~³-H,0]&±‰j†{¬µÄ÷Z9S±dSÆVÏýMáÔøuïõ<€óˆÄ:S¹F‡Dà# s¹Áswн/©Ï é…Ý ¿=Mʰ9>g|"Dx}G¸Œx9pÏÛG¹ì„FÊç|–†u“YñÄ3xÔëÐú/Ô-ÙŽÄ1ÊmX[;²ó*!\¹X¡û1tÜà–‹ÈÝA5˜l½m‘XÑDÌÒuc§1*`9é)Ô2˜Ì-Ø„ã}C_E-˜$K *̶ëøSØì˜"l¬&í0"­ìÌ‚2øÒÚàyQõÏp¾±ÁÍ ÁVÔ³h;5 6B-–ÉÅj~欆çøàOŒ €G;Gkƒ¥½¨±¦ ovì}ÀDÉ2†æƒÒ° =gA0è¥Ì S¯˜z®mn¸™ú€4g“u¬‰£¦KŸ&Ä£5ó,l—Ã/Äà ›àË£"(æ9c‰€l™Zâìµ×''$â¨k²>sqsɯfiÞOHªnBJÿA0ˆéÔÂ`TÀÈoO‰yžL%“päNj9S9«s´q F7{¢?Œ×.󠺀C¾!êL`8›¹R€#’¬k¨äáøJ,Ù"À,Æ,˜ø¥;0¦^LMÀÑÜ”Üý— ¶ì&ù-&·:ˆØ¨ |°²¬©ÎÇ_QÕ# ¯Å(,Aûžc¨OISp¦\Œ-g̨ºé^½EÔrL"¦CgRÿLžÍ`ÁÔ U¬þÄvlÁ˜C/?qõŽš˜ùCC0 ’)`ñ(°#0D7¶ QÙµ]Ê"Í$ Feª®Ga†:–ì m*åb”‡ÞT0-}" á³\yЍõ,6Vcã«ÍÈ’‚ È(É6@ûœ›:â‡ÜíRØŒ—Æ"’ó¿Á—Ë,p³³þJnP±è˜>¦€†œWß…Äb›³¹ y 5‹e±*4,´fޏš!óû€ƒj\áÄü€Àü´A‘šEÓN-ÃbŽEæ,b¢‹UÆä:”„;Ä[žèš°dÉttÌkTÍd+ÄuC6j-D\ŽhóÀ²JÛÔåˆ 4²n?º”‚OGŒB±;³Û_S¤é¢\s Ê¡Œ…óG®¢T=?%¨-EÏ'“îU wc¼dY<˜ =‘Â/«µ;ê:9FL93 R=Px…vÜ Ój,mç› w<ž[\˜õNMÖ>%uvˆŸúÍ4B³1ŒÃöcHEZó22!Z'\o‚b³îdËÎ3ˆÀàò@À"SˆdÐOYŽ´™ÓNE–/̳*ó `ȱLΓ¨Ùs_ó—Ø| áÓÛpÕ¢‰da‡eˆý¥¦5 ,îÆî6^%óLŽKîd‹=L39žPT³ +éÎ Üö™üÔâË0p–㣡ñ3îÆ"0í@ÂxiX… d`eUÏÒŽê2Ã911€ Q` ðaÛ¨é!õ(T“I×sûb^â~2@Ï"¨>†LÀç¼Kê7Eî;dä !Ò=À–@×#…)kD%y†Û äK £’<s¹+.>ÓÀ6fo¡J¥6Tº•‘§:šPchó3€þnVŸˆYXÓÌE!g·|C ±ú8”­@-Ã-wpË9ñfÔ:£Ü+lƒÔ/€!µÙ{æq¼C#Á„†“U¼´”Ty¶üÔlRiËšè’-³äKEjÆ`ÿ$å€óÁ)}£ µ³Ä=g^ŒB—Ð, 9&U4€† [™H<‡˜3»ðÏS†æ•:„ž\H „j?g¦À$úÜ+ÀÐ06Ô¨;òB™´§vSQi),q%ò +О ¿Ü}ºœ¡G+G•A£YÜÀBà Å@:‹Ú0¼Ç¤yi)þ‚dÑ‘Žòs„pÂf¨Aݾ¢Ï©”g ìñ(_`ÔδG¸xCIïÆ’>¦ûÙh> pYŒnÚŠDlñà¿3ÇÈò#õ<}àLÓF¾‹‹Dd§Á¹•làÓÚæ±Äü—€âÅQ,€iØã˜#¹~7o"*°œË`öˆŠÂ³ŒÀpcMpùŽÑY˜*ºn/pãð±¸U”à’@,*Œ£ShwÄä$ 1 Š“vìh w˜H£âÆ&8ßð €±ó›Qc €H¬Êìz© 3‰Éhõ˜žgÀ€ØƒÑ±Ëþ;šüDѹ `Šˆ8úŠJôT™q³ˆ‘Í3'Ìí߉£ü{‰p!$ÀÒ˜Ÿ=Ž£Þ€™hô"Ñ­…€Ð ¢:”¸<žLÓ À CÅœO X‡êB"ìFœDÈ]åÐs_æ.h&È÷y0átáx…31Oã2:b8ÜìÆža¾0Âç&°>%؇á¸ö,ÙöåYó¨Ô)ÿ€ÈbÂÁ;">@ ±÷ Á Î$§&AäÂ”Æ  Œ´ Òÿ…À±C®\Fb |™Zdâ J ÆæÖ~&¥óŒq¤Õ `ìA´ Hȃ>œX êVì-—=‰¨2 l Ô|D0Iv!•V ·úaÇ3n­;'‘BbíK"æ)%jl[…CÓ5€§ š‘é‰'Ä è‰À._*†ªË?ÍÛ¥¸DÚƒ½¯ê°€X–Œ=¬[Î%aŒ˘L§j3+jõ'ý¦‡Ôã ìóî5á)_ßÓˆ¬€¤À¶½-b¬`>Hîšž@änXdåNbhI9Ïß~àÄp ŽH-T’lÇc†TºaÐÁŸ(­¸"~¥+A.ˆöåŠCU}Ìô¢4.*° Q,‰Ÿä\ðÚp®…AêRîT ÐeˆNIÀ“{œ |ê&X0KÑÿ„N {þ>–Õ ©Â¸ŠV/æP,Ãu>K†Ôv—ÌKÛ‡ìç±¾†õ‰mž‡„« ÀŠr"8Kþ±8 h÷ôR°O71æŽ0lS YC©—J Ýê-¨jJñ6‹TÚQG1Ñ5´ÊaH!g®%1bõuÌ*ˆ€hNÊÀ¾c_vKâg:<"ìØ÷*¬ú‹þ\¯B;` $äTp’ „FwJF€k÷6$ƒA,Š0î „Œw÷<°WI¼˜šCì~å§Wa” #3¥‘ÊdJ-j,‚4™a‘Š€‰ÛÓ”&æŸhñ‰*PºõaÍõבS–ÜßÄøÁâ ÔÆ¡@° ƒK2–Œ0yŸ—¶&gÜ¡( „h/TS¯PÞ"îŒÙD¿O¼êI\ä6».oìÔ’Pÿ•ˆ¢?¸žÑȱ'¹¯ˆC€d8¹dlܨA_"Ío®DWÕÑ8!b?%óA;F ãžÁ¬åõ7½…}Çëùàp9æñ– &|Æ’\žá‰a\ n”~søýMG'¡Hœ \¸G/Y…v]Çl€;™a BàÐu …6@4È0Yo¨ òs3Ý[ñ†Ûbp.42B`˜œ (£&: 3Ã8#“ ]u¢žƒ à a“¨;ä•Ë¥ÆôÌFO6ËÆ¢ ä™.„Èg€)îq/—Up®8ÈÝóÄ–ˆ3Ø™ÐI!bÕ̲'˜Eˆz0}D,”#aàˆÙȘ:ÿŒEÈ$HüÉ“#“b|¸_ýNÇj²‹–å0­ƒdõY#ˈ¥Sad¾à?™âJÐ€Ç ª5‰¬ ±5‰¯ÍÞghçkî]„Ry„ô™|ÿ‡õR£#ÄÓEÌ|q úõj0,!dds €5ð‰;ê¬ @)ÎWÒEBXÜ¿­ Ðþà:äS±eÎxH`Æf^ùê·!–PË>î[¨wraJ¢·Ày‡JÁ‡º(À#¸´s<‰©óŸö3`’Ä•BæGJä˜N2hbúÀâ®o½ËÃúCz\LKû˜®ó3!„Û߈­f_)˜mÙ6-´ÌÙÜÑý“Èàe$ûú†»©Ûá¸g±j‘õîQè×ë˜:†D±|˜ø¦à[qmºYìÍvõÀRûSÔ#AKW'Ôâ¤PífZ¡(@¢gá… ê>„á¡vC –Ð KVF¾à!¨0©÷@õ/[ò4b²;sNÀÐt‚A•–…àüVá\$6 X,²"v‹H4N`——“`t‡幋`ÃR¬€nèæÙ'_"0¼³ ëå\Ùè-26à].À’¡6ùšMLôÅ…ÜÅ“*鳆 ¤„ &… Ð Yi bÀ¡îuN7¨ÅÃj$0ÆU6¡Ñ¨î ‘ö¦+ÜyºƒaK…ê’7z…´ÌªèBk8\#f ¦âJÅFä6ÿN@,¹ûýNv䃘@` }ËÚqBY¤ãTäÇΔãòBB|qH°zB®¢&teÍ{ìžFç˜h…5l~ Âõ(±rý&¬.gy„#NýCã*W0jÁ¬K B"@9s™ŸØÊʨq °Ú$Ü Áœ‰S”m>Dhg14 ¿“?¡É@y¸æ—"pˆB   ›ÍÖfEšáˆEMát j²AÔË-–šâ”G 1“Wï1+mò@ùö ”çœüÂç£þ7·b-–óþO¡•¿™»¡Z„Fµx™Íã¸`D «|ÄòR‚ð ø‹Ò‚ªñØš&¢Œ,{!ù6V„DlhŸ·&yöet†üøŒÒ,N®¡ý|‘lÊ0ÀŒã ú„Â8AáÊRIÀ ,î H2Äú…"ÊäÌ) ‹¿¨s£‘Óñ v…  ÝÚvÄú*60½ŽWœ4gs¬*lNëúQAG8>&©WÜ+ô k8¸-I·×ˆk…<÷GUPÔÆ:b; MµpÚÃt:+¢wqÉ*` Bè²¢Ì âWíf`S‘ Ü Th ¡ýϧˉ‡ÍÉ›r lRŒÃfNª‚Ñá=ÍXÆÊà*kÄÁæh›p£xs Ûó ‚NzÏöMžÈ0ƒ@WØ l}Å´šš6èÇ誰¯*#Üa2 qtŽbè‚1p©hô€˜€u«Ÿ`F³E ‹s s¸’ƒõ¹þD—,(ªÀ²|ô¥¥‰`–xÈ`Ìl5æûERB‘7ÌfØ¢Óî$mËLf,¹`PúÅQáx”XÚ‰|²#â…‹ÐÜÜСõék€åî½Äp‹•€@-öH{ªÄAW’öÈæ#©%0ŠÌ1ámÏö.<Én$˜*p\í"F T‡-˜› kQ­Ù0Øéîœáí__Ôº %Î BŠØëþÍKSÐOÆëc2@äcá‡,(8faЮ̥°ÐŽ ©†ô¤jÆHO§gûû€ê,·ð– ÞæùŠƒLö¬7 OÌ%¢…Žžà¸¼ê˜ÄaTîôz£1tß§Q“eˆt;ŽäÄŸ #î.þ0!Uúƹ•NÓ4´µ#U{h-‚ø¨U¨æ0^?q" Çf',k8¹d‚mùC)HFOÜÆjd@þy<ˆm\YhnæÖÖ˜[-èBSˆ§Ë Z|&/Êý 3uqxïB‘eÑ1?ð•Æ÷ qc1Âã„´£VSäÁ‹r‚hªÜϪʬ¿ÖðP KOÚ]”Ę.kÖa©{ÃO,‹*/0iã'èÿâþ ¥;€r©³à™bN­*å4(¬2L« š_Òá ÑsÞ9Ÿâ@ôƒ@3øC;OozϹßâ\LÄ+@ë¸ñæD‡£ÏðœßŸ™ËhuõìyDÆ Y+4ø3\TÈzg2Œ{ `êÝÊa\¢ @€È·¢Ã*(Ùâe>'üD÷1´ø·±$aMšâ \µEl„ X†r9\@èí’‰Òø7X¯"þ¦lfHÁ ò&oœ›L\0Õ+\KâáΣÄõ5QA±s¦ˆŒÔ¿o¨uÍ™ˆG*^ìDÀn*[òbÁ—11SÏRœ’8rà´:Ò*›ó`éæ0D–=‡¸Ìkê[)¾!l@Ï¢{ó Ξ nòÃêîáÈØ;l|jbÃj_ÇÅÄÂb,ùKÀÇ!î­ C.“ðœ¬2Ü+n`à4¨ù0–J—ù€~eç<—ÊÆŒÏíô÷8=ùâVÚï‚äâ*å—›!7wc)³ÉÒ„³¡Z™û…‚wt)Àa`âŒù™a¥{Š˜PžÛŽÜŽD¾öár¨Ã1)#¡¹œIQÛp""¡ÒîÆ”T ¾K›€ÿDN E‰JH0ª#Ù’‰LÌŸ$4p óVjávì]\!ƨÀ=L¤Í`éF\°à±H fãІ'ч‹¹ÄHÛÊŽc~ ¾™qCgºsµ;8Ÿp¼Œma2”2,aÔ7¹yƒp¤ÿŒe§&O!ýO„Âì7ñ2è5»ÔN#4æ˜u8g@QçSàƒÿfÕ `15SBq¹”ùDÆZÇĬÊV@‹…™ƒ<Ëü"ÿEb~iÚ¸DŸÃ%üü„-Ó?È X‡üeƒ]ˆ§ ˜Bꯀùÿ~q²œ1¤S)?B—ܦìï …X#bb,VÙ”´æÀ›÷p惔©û|ÏÉœHèóžì =`?Že«/S2,M‚âp#Ïù/½Xýù3Päé”R9´®ò~&“eÕÀãbc¬v¨¡Á-Ž„bÞÄó8³EýÜ-ªAß׊#â7–Ë% Dò/1M(LRt*èq Ë$gæe“° àR忇¤“²a¹M¾„ Ð6áŒYi’Nåc dQÇ™n`%ÿB%Fòîæ*[âvžcÂu¯™dÌ)Ñ܃ƒ¸Ê˜JqÊ‘|øŸÖ˜ ›5ÌÀ1¨.É-.¥Ã ÁT¦ T”Àu“{p~FˆÀËî 쉕Zgâ¡ëd…a{†¶™ @‚3lŽx|J…‘õ湨s­*„²©LB¢Ò|+¹_ôKš½á3ß{4‡QK,fS ²þe·ú&(Ùí2#“ s”â0o ÁÔ}aû•ÈØ#û”J)Æ¢r)ÞC©†¢ŒGk ¯q¢4 X7—y°`W ‚\Ê#‘ƒèÀQ]0¸^ÎøÊÄ…44ÌöAÈÀ1΢à]¤Ð‚Ú‡Üò„GÚu o¥€D#þÁ( ‘‡L½Å^½¶è×ðŒÅFþXáv,™¶Ƚ±ÜØIàOcÂgcÞ%4¿‡5YI©°Ùý¢µÊãRám †%Ö‰2,=‘-ÂÈ&•ÊSÃH0>Ô/ìd?hŸé;i¶3rFö Õ`i jAÒv#Ðf1@[˜¶IÀ™À3ÒÄÛ(Ð6w-Ú2–暀ܢÃS ЇÀåËÄòùL&9ÌË€„Œ¾cÊ·á_‰h@*°Ù`XÂp$ä1ÒàEî:ÿe=ž€X„ª62Á?q·ªàlwÌ›$ ‡ÒN¹Š ¡‘â=€OÒK$ôÄf"ÈDÀÑ)°‹Á–žK¥Ž³=¨®‘€þ˜Ú‹=´¹×À “ÄÄÁKDÚP¨64Ðxƒ¤9 KçpKG gIÎ5ƒÌ\;O¤&CΣu8œ 8€ò:€â&ˆŒ"p ¥W£»q2ÜPæ{ÁA|ÎC1‚Û„(L« €s¾÷RÜßfaûõ¡6{uEƒšƒÞ„MÈŒP8©Ÿï¯ŸPíÔ>0Á·æ`â­Íƒ¸#^ $ñBR…†©ìÇ…ƒ‚EÄó Di!M¿¢P§Œ>%„x`@pYÖAñ„ ž l:Où3>µfÝ®%‚ Åãžkl ÃZŒ&Š ¾T Ȱ> ±ðï̯šÄ×#´)ï‹d â>>ZœÕÓÀpPƒ@ ‹p‡¹/Kûe Àœ Ž>wn)9l÷$$Q©uúëèNÑÁ‚‡Â/ØüIÃçø`Y Ó Fêû¹Ù9VŒ·´«Ù@ôƒ/Õ¸XFö&Ý|y,DVC¾±í@`Œøu¢!¶ ;2ɨT¦(Ñê&3~¸}ÛŠ‹#"ªš½µtw¢Y2y©ô³áuú•9æà ]Ì<žeepx™âŸp´ß:™Ùª$lõ“2±aµbrzÛŸ%sÈÈŸ×Ìl߃‰­üB¼²šßüâR"pþˆíØ3Ì“õ*)\!ÖaâZ™ÂÑQ„[ÙßJ¯‰ŒOtõ ³Mh4ßB³°ªó¨ÁcôâQcÄ\ÐûˆŒ»†–²Q]µø…6¼û'hpèâQ/2¾õ”š&*4^Öc–9°$…Ç´Àg'ˆ½•È"ŒÄ([£ Ëeê‚&Dù@"!§ bP­“¼Æj˜g‰î<‚â-;†¢êßÄFcn,Ç+z„¤Ø—8lƦVF ¢s˜pAÆ“èÖ^ Ê ‚7…ÁaNÀRð"ä¼@eèKcàh͘–aìmµ dcexœ¿€Bj/˜C lÁ[m6Ô>Ĥ Ù5˜ÜÉÞæD2:‡¦Sè•…ó0+·?è7_€(ªÇï+€PuÜ{3ÌV'xsbˆ†€2â€\³®æ]5`¯.ˆwÑá™„å ²?¹pO>N À{×ÌNbi—ÃÓY{”È𨸰xÏ‹QÆP«CÄQØ©ÉxEÊ„ |æ&XÓ±N.f…‘P] ³+kàF‹ ó:hCEâvïQBê-+@°ž’n&$´60€þ׬À³àVÔ€#¦”ï8€ fnë¸V–šœ>#ó63-”8p×Bb¦À Ô¿¥B)¼%ŽL)ò²Efdñ6‚¬‘*pœi¿(>™_Ú 5²²P8³Œ5ž¡:Nn(¢wBÞ‚€Næë0Ô(ѱð—ä !}—²HÌtO©™èLôH%f8†4 …ÿ³-Á.aÇ 7 Ó €`lsõˆ†,dÁõàÁZÐâ:¹¹´>+@2«æ3‰$h–,Ô¬à«/Äòe à–ÀäÜÐó'2’~ tBÒ±p)%›‰°/ŸxCâp#vz‹Óƒ¢6÷4A¹€,èÿˆ’eV„%Ö2Øâ`éÜ{çœí‰‘g –`ÁhCÌ,æ4gb:H[z# dîæ}Ê<¼ ÆóÆSˆ®¸ sDC71ä›Hçc“sÄû›ö€†ˆÚ§ÌlB Ó ‹<+N±øÊÍ IiÀ>| ªƒ ØSV©–¾y¹ðËA.Ù=c3 "ÈöƦIU{´€l @ W=3XºÃŒ™‘È(ñIÞoGõ uªˆmëˆYZ14½±Ìdfdx9¬˜¦…‹>;Ž1*M˜¹g'€p±1SQãª/©Ìtûs3h}Ïê7™ßÁ üƒ 0¸©ed†¨|Àr PT#¨òaT ñØ5›âb („T³{…½R@.\}s€V™eõ2`«ÍÌå €Yù‚Æf¥å¹ë·¸_ôÌM¸†#øÏÆ%Ãã^g ÚõÝQ«—Ón'„DÂaD9—¡>º¹ó@ï}¦´CÐà L­>c³ –Ÿ °©Âňé•)Øa;fSf‘øÂ‹@ãàT ›$Ò¸Ù£€…Âî¾&gÙÈ1q’#9˜v¡ ‰žSä€Áz޵ &WCÿ"¶0"ó7f#Ì urH©ÏÖ #Üï&FZB&d›Z&UËp€X¦Àù˜ªÿ™–}ö>&À|WÌê`[¹‘Âÿ"&΢3\e¸xÜöäô ÜXpÌvÄÿÇ6š5µÚ@T2IXfa`ºAyˆQ9ÉWÜLX @yµzÀ(yàóîx,°(rœ³ÝåC;вW05:Äí¤Wð h k0›õüY`üµ!µ^f×Äl¥“Ï¡Ü'flær@*~YÒ&’*üGÌ)ù;è‰X‡QÇ vÌð¦EA¦8¼9Yfw ²XS_5Ð,4"îÏh`.PÎ3º7pÎAX{†Q0º ÏtjÈ\sÉ<Ü ;Oœd|M6쀇3º"@^2ßr\ð !ùÃ=Î"Zž'©Ì6ˆa ÈôOê ˜¸³Ì6\åp=\ _ ÐH ~çôHx^a)í*Ôóó`7–E> 2:§h%¥ÂÀÚ„‚‹A ÒV鸒^é ‚n”;bˆT-‰à™QØqHC&<:@J­Ò8,h;½Á±‡ˆ¬Ã^V?7õ+²@†Ål(V€nïöZì=¥†À+" &gŒà}ŒüC™`£Î- ¹ÊÀ™Jæw6f=L ® š²A›¿ ø”†`4…faPrr‹˜Àï8Žð¸Ìèp5ð ;›’)`\¦1‰%xM†Úÿ`˜ˆ BgP–W1äÔüós#i¦Ž“"ÎP‘÷^‚‹[Ät^ 0-Ìm¶XC˜.K¨RÌXÿBoÉÈK^åY¤/PkÎmbˆYŒ‚…!½báêúî‚B «Ètœ²·ÝWêX÷!˜E Øå\å[++Üà—ö#eðÿàƒa O1#*3œFÜÙœà´s/ßÁÓ ñGð9ÑÏQ< djyDj|ËQ*ø´/V›D~#l16€1ÍKâ_1—4ô!ùeòf¬ÚpžpŠ "ØT-ŒÂê*i´ €K´ì<1<+(GBnElô¿¹\â[$ÿ¡"fö ±~¡ñO˜ÅÏÌð±©}¥%Ió鮃w¬°”LäkÁÄÐI…ñLh¾ÚÉ$² "Lˆø‰ÓÍ¥‚6nÙÜ—‰|§Ìdíí’V¼+$lÀ¹c¾‚lh@*LÇ­¨N‰•”p¤,ŽŒ¢n*€|ÅyfŸ#¾`*ŽÕñŠŸð+úƒµ”Æ‚ÿ®`wŽ×UíÑ”a`hWP¼5 )’žƒ?ˆ6y^'Ýâ‡J6[¡è&Ó% !žbt“qYô(%©Œ’è$ b2w>ó|ž½O}ý ¼Xi ‚kyng°wQø˜ çN˜ñ”(2=;‡ÂD ìDŸ”æÇܼ°Ø´…fFzyŸs€\›À%Ǹ}¥kƒ6‘Ç VfìO@g_˜Ñ¦q0.IX„á LAZ/†o¸àì|L¦?.4àr â×?Áµ?vaj%!ñq*þÆßð¯àyæx ÿ˜œ?ƒ¤ß‚$n!€Cª)Ë+QmLŸ©M’&ùŸn#…¥ Lœr)†Z!¨{ÄàŽLxÌ'`‰ìaÈá2¬­ë‰™ÅÁT_ˆŸ™–…±/ XèKÐ¹Ž§5ä ºr©xPÞÏqü¢2 ¯ðïGœÌRÈÅJÄ1ƒÂj<0™ká ZvšŒ¡rBpqÜqÌõúýÆäî3!œ@½÷ºãF›¨èM‰ eÜ™ôGÊnã`:Où7©Ð˜Ý§RäåÌÁHGL+,ž¥" ˜„ èM ˜äTçŠ'¡3,Lgâ`\¦9kÅÚè KànWA ‚qsp,2Ø™µ+î~ÇE€&—µž!nMþ‘„A_šÑîb@0Et% ­gpêXhõ›buŽfÓ NãeŒEæ•9ËÀ¨Ÿ¹˜e[…{‚ÁmÜ`F¥¢ã˜›Ù&êsÝ‘áeÂäÀnh `™ÉCé†þѰe[æ@ ,Àï£d—Ïnñ&èh6RúÇ"¨ârØXMÉñqqéâm Êpç˜mBg  Äõ@HžPœf‘#³ø4òšr…‡ð”‹Ät?Š¡ä{…ÏÀó8Ä`(g>Hß“øá~ˆTY©šMÀò0ìPÝÂÛ‹?¡åš>Dª•åU®%#Ìù}&àžeõ7l“úRTÔ ¿ô*•kñ‚#¿Pž_À&t›‰<ïéŠCxn`6o¾žÕM]C7•æ»òaÿH™4ˆA…«äýǤÑ}Çé0ÈhYj-åYrª¬ È·JÞíVÌÇöë+Ñ#ÑdüÔunŸ‰»¢°5sc1u‰\âܤYBáqUi>þàC#¸^w?Á}Jåm?ƒ0äèäK5Ö¸n ò£q| `PË(¼ðZ˜ás/²â1ÏŸH̰9õŠ•8ùs.{¨YUˆ^G¬Î¾£å9*Œ‘Ö‹núSs5ì9¬JÆÒ¬ä÷?ÿÄ 0ÿÚqZK,² ¯Õ:`à3Vk„‹=“ôWúi˜ 2PãL†(ð à‚$<~ áàK P@†Òùhêð¼HàBbGE¦fxe`‘58eBø¼"°xƒ6(qAaXü~=û÷©,ƒªvÈ M,! šÐ˜‚?¦}´gÓ@1‚˜èbr³!±©†,ô”†jñ"x*ª`‚&â‚,™¯UŸ ö áˆl<0¯ Çâ³tI` íÑ9T1 –J( ¿„œÝÒå½ûÙ`Š0•ŸW(DñìØ„‡"L0.:#“7 2˜ÝIt¦I§©× w¤“è‹VÀQÕ „¨° “Úx Ì@N:âCg·ûÂ%sçä¡> 3!⛺²ä¤xD Å0ÅLÙLÏåŠqfb…j  ˜L'^VöG‹ P@Žð„MúXäý!š™–’ åj”Åá„/5!˜™±âðDÈbÂx!5Å‹,øf‚ñ! †¤,x£‡Q/D”Ÿ{, sÆÍŸ”ž xHæbObh†œ´§~¥DÃJlq ‰cÙ?è•’l .AÌ@ Áa⨿˜Í2ç.£™ã I±.Sº†Â£bME(’ÉŽïf,Qâ¹pRJž©hà@þ+ŠUÖ<·‚~`8ñ§‚v—#ÈXD¬³‚¯ï ®9 ¥nŠð 7(Å„¬äpMfTJ8GxåÀx"ÅxñÄ3•$¬Ù Ôy ‹Å4¢Ç–Eæïjé b¯¾€˜z°sZb90‚\¹&/7Lü°B%‘x`„†CYˆKêpňwçà¥ÀñÔ }—p²¸ˆ î©1ÁëªCÀ)2´5‘ù¡àšóÜ(\,Ž‚kÅAXk°¼{³Ú»ÊÝ! cÄ€ÌYáá‚R¢°ê Ø@„ª|ÑÌ3òÃ/±ÌC2“"Yô^ø°)0@V»®.McÆ`š­5âÊܫԈcñÒ³2¡u`äñáa»~.¿šú]¬0€ Åýê± 1C¯x„÷à@© =?ÆXÍŽöxqÅž †LH)” E3ô¢M/ XF™ô8é(;b+˜° x0ņ/ 3S-†)Ì&» ®XäÌ©Ù]+pIh±0ó&,ØJˆa•\ ­ †"…Š|ⵆ(ˆ 3ò¥°ó*_h„ ,*tšQÅ—K8‡¢<̧%M“H­ô¬[=âŠ\ųHM6"¶E;R÷ }<Côׂ,Ú8XgÎäY¢"qfa `€ø†`RNì.¨‚)0@^¦kŸÌÖ2½óææ¨È*²—D”Ô‹sE„ƒ¼1Fo¨!5ør,q‹ RaÔ¸1ÁÌ×b‚¤ù‘ÒšîMYzËë¢fC\ȰžnÄXN¼È¦ÇÃ1Ç <èˆ"ÂAˆ BIŠ?4tCaà ñÑH%ªW‹À,›$¢‚ à}1R,Ý„×ÇšBÅ›ˆ71Éá&T–è®À¯Dx–\¦æ]Ê º` ,1HÌ0Cü*ãÀóU¾o1ÝJ.w ±Üì¹jSóBOt¦¤ á ˜NðÍx …”Ï  ‡øˆb‰«_Œ¤é)é0•0Â÷=bÊÊ<­ÿ1w°kƒ˜BÃ7éê,3æ ˆB—††!tˆ˜g„÷s1#Ü´Ùj¢æ!Y°“j‰¤I %ŠSóL~,+š™™Å30‚0’3TÀ⽂$•€hl¥.¼"º¢ p–UÃh‡„˜A­&¢{¥s#4…ôÇ æ Èâ°D1!Há¢"!& H)ï {lÝÝáæ<[¾›¿˜Žî)È@ ”D„ŽR@€Ì°¨Ó5DЦÜ蘱 Ofåþ7¹…1æjÃ]SLÜ„BW„l!8`;³ua&àðžËªb¿½qãÆDž|×ùßáÁ›c 2ˆâ‚ü)À0Ɇ+ÂD$ÅxNé),HO´Ï €Ã=¤ LÊÐM1GIpð’öE?šX•Ä–Dš`>É„‹‹,uºY¨„—ñ¤éŠŠàϧÓ认 >†h*nt¹JY4ðÀeˆAtD-hk—E{âJ¹‹ê9‰=åZxI:9¤ä'Ÿ˜sr9 ž y›M¤Ýuw ŠxA{,‹e,è©â©t^é: ŒInx¬c-iS!âK!šbÌŽú®Ÿ¤ÜbSáR´°êK §âª´4²ŠÕJ A ÛÜó)‚o°îëË} æïyЛüþbMñø§JóZ¡å_þ¯¢D?©ýí€Äkd1ÂB8eÉÄCÏ I(DÓÜþ7Æ–;û'•‚¿2è-ÿ?Ìîàû?§éôVTV6½ßcz\_Mî"Å›dWÒO3!|Š¥  {?Êø"I¿5ß§üÔïUJæï­å1ã¼Wˆ…ËîaÌØ8@WúŸf~ý÷JD *åhß×å¦åGÃôÕýÑ?AHƒ%2à¯úoDÍ€íI·T®ãý,½·â—úíFÇ?Åaª^Ÿâ `K,!€tÿXG2ffLæ ¥æ¡ýJYí†d¥,♽GøÅÕÿ;kdÒTûx“7»½Ìæ(uþ3:,ûYÏËgsâG3@3”VÃøÇÿÄ)!1A"Q a#02Bq@RÿÚ?ö:gƒ"`p'Œ‰Zä“éÙ#Å“d¡¦2ëVV“JOkÈÄsÁHöhÃ¥”9±|1‰¤õô¡‰ò$¨úÉʈDÞ‘.Î ™* ðçñ,䢄{ìœKi‘Š"Ë%˜ý‹üŠL°!®K;Õéĉ&P—ýG(gÖ?&WÑ%H]ˆ¶‘paé´4™/$ôCv5,¯ÃOJ,â6AÉZ£²Š8Ó’[&‹>êË“΢P¢…ÈÓ~eAZjˈ>¡OKGœ!®FžeŽ[,k#‘Ií¢QBìä¦6£lr>Ç2X Ä‡DĈPQpQL£ƒø{Á ½8Ô³±L ¢p’IKv]jŽ mÛ%Ðäú(%Ʋe¶T±øêžíœÁïg³H•e „AD!9[˜s%BXŸ"šÍ5¥¥Î¤¤)zLcž¤:%ð.Iv%À¼x(±–ÐÖûÕŽ$ø}Õ‘’b’½XÚ¡· m´C)ïÙœžä6Ί.ÄÚCl‡f/^ÄîµZ”$Ñðsb’!!'zø9$–. êÏ"eŽ ÝY¯R=YJÏk,E–‰àõ’e{ &Ó)­ò[‚3L¹-ÉC$÷"1EÈ%êY d¢Ä^¦Õ,x•(úxÌ•äžfYrq2×òT5lŒœ“d½]‰ZrˆÎ7h\ýÅÈòt5” ìblÇ¡;ìXåD¹!"S:z±yÁr˜ÚmŽêS'’ʲˆ’Ë´)×°äe2„• óB„š×±ÄØ—lµ"\!e ±ã2ÅËbJ‘å‰qÑÑq¶V o':½N*Dñ.Çå'ªzù« ŸÒq"WãÙ‹’q(”vLœ¢iI928!I-²ÙhšB‘® ppÄËPÄ×%/‚X‰p6ÙÈ¢†OŸv£òlú^½V® –r´Ë;%ظðzžíj–•¿¢HÅž¤bBÓåvk9׬êÆQHLœt“b¤´äv7ÑG…Lc™&g_uSº.4ä³¹œ2Åâ“Rv9D7"~È’Ê=d²^£9e–49CZQ²hkSCçIä-KG:²ËC‚ˆNK!“ÐàP.†Õ1Ï"IHóêbå3­.µMœw¨e¸á í|¢˜ºÒx5#Å=Y²„ò² ½\²lcLO–.‡÷_ rsG‚TY#bò%Ù-¹’ìX:2M¡±b#â2ËIiv.E/Çr£TYc›Ò‰$åÆKMrCCPO:Bû¨²KÏ Y©Ó.‹$އ'ÑY ®OéÉLmµ\ÀÊ=…ä[Ò–Å0$ü–®L»2cÒeY.ňÐÅ}¿›,—Ébðz³²娲HQ«?„•®d‚´ü ‚Y99#•$ð1ö)½Q‰É㌹‘½"%žârHü”1c‘r>Ùð©+Ié5bGŸ+SŠq’ ²uzþzÁ’‰‚aü·Bè–G"–Fqª"ÙäõZd»,j z¦F%~aŽi#¦NBn¨qø†U6Ëàè~rÈm]‘z½$¥‰©:(øL¡ãØûCr9H±4®Kj”A‘óPÅÛ%¨Å.Dßò6å¡H¦†?ƒ™d¡7(žFÑÈòà†µñäl¢:ƒÉØ•¯¤ô9²¹.H$ú. ‹.Ū.ÄÜ p'LPN;ÅÅØšV+¶åp)±G¢_&X. ËÌÅ.’¸(GÁç”ÏpKƒ¡‹ñ&y¶õ,‡©­Q.àdÌ‹e{˜p}bL¢‡ðŽOƒ›)j¤bT\Œþ ò…14bxq©EÙø"’ÚBú|èéa ‹7 èqJL›p6¯_5OUÉB줒 DYäˆEO‚#ñœÉ*ÄÜ•bû¨% ¢èNÇY (“&¦ ™à…,”)h¢KZSBY8º>#)¢¤õX»1h|@ mS!&xƱjE„Yk‚0S¨Õj‹±ÅVÜ –2 ±;8&Y\PC­$õÑVJ”K‘%l•Lä›#úJ-í¶9±QÊG¹X“¡ô9HSLX¹2ÍÌÈðFyò†å¾OhQ¯„j‡<H„Và’ ü7¨z­ÙÑP@ˆÕ#±:c%I‰PE4C‚üIV3áFÑdIÙ"’!LÁÙ*$ñgšE@¦'I)Ԗζù’ïVAT(>‰:+Põ$•#+W¯ '“–6CYÚ ±3´ìbb\ :&õ%ˆTBçKÆŽ Ìi‹ÿd$Ì›£?ìbÜw%rC”†“¨±òXŠ|–Mé’ëK­F¥ÁÁZ½Þ¼Üë¢DyŽx!ÀìïPÜØänÄÑ)H¦™Vxe—E²!™5hK!v,e&{K$ŒJ†¤]¡1>5”L™6Gm¡þÖ¢µ=ž ’\nNÊ •,[½%+]îâI$¡µ:…Áÿ$H±B‚,]-v†Ö¼¬ËÅÙ–%Àå¢y2™lYÛø¡E $|}§"òp3…¯„¸Ü¾¸BC)r…Ø K_J%BŸÔtOG}–Ë5©EIJ‡“*X¼NŒ–G$¼Rl‚[ycvÌeÃÁp)<ž|‹ËÈ…E8bCdA+òØõ,ªz²ö¼uE ’£T¿ ø@»9c%²Ùp?…j8D¹cZ‘¶Åbå1 ÛQ$=¨1ÍÛ*˜ßZ¡ ³Ô$\µ~{Äd¢‘D(ZQôŠZãWøD"…6N#žI–)¢š¶(¡®…غ|÷Øš1|œx±¤Ü¥˜ó6e3ƒ3TÐèÒ‰* –6B’id¸/óGJµÑÃÓv.‹ÑZ‹‹’¤zD¶Š—¦Ü‹zsÊšCÎeDv_#JPä¥ôɾH~Ú¡%91Ï©æ-ÇÊ S,¦Œ¢8-&K{„O Ug$q¿Ÿ…ð©(d¯ÇZ¸$ŽˆÎ‰”66Š–CÖ-Xš‰gR|d’¬±9‚!$Ûä—f3"‚†“2vȉB—âp9ÒãI‹Ú!ªHö’›!À¶¢÷C(¡O#\¬D”F§“‚\ù¤,í ±;Y “‰G6#–Ë£úb¦ÅŸ²8.ÊàMHÔ¡ç)¡D2⠃ċ _ö‹—D¢ìÅ*,^$óøšbNŠ´9?ÊቸDiÅj¬s#T}Õj¬õ£¨9GEAœX’“Øž‹ÃÌë£ã'¡ZH‰<òäi¸>"¬^O#ç\ òµûƨhsGQªã.†íŽäpBŸÇ%ÀõDòr2u í¹zÃJ…K¦ÅžÐ|%.Š ˜CÀ^Œ~,šEÖÒpT¡òyþŒI‰ṙÙÛdåE2¿.…6Q(cO‚yBW¦9$È’¢q´Y*?AÐ¥¡cÁ*EØÒ2;g‡¦1¦Q2YŽ[oRˆÆ-£xü¡r'Ê“ú9P$¬Å(G­g‚£)ämÆœÑ<"YáÁ=“ÙÒ$L¢·ØÊ,è|¿&GB‘Ì¡ª'cåŠÆø"äK±eÁ<ˆ–%Ž®„)„$Ũ<ù!¶)ý(ÛÃä­`ìðJOY剦ؼ¹Õ±¯ƒÕÖŸBg‡РSbÕ6Gz½G$[=†ÉVQŽ>¤¸×‡”%È„É> (\ž#’VúÒŸÔêD†ß«9‘fÔ±,9‹_Qî{µý,p&¥i¢F¸È´äsCìGÑ4&|*õ(ø-.‹d½6%ÉBZú.¤\"ðmùjeäBBòƒ)hsbÀç_.u_ yC<û=PúEIî‰Éÿô¤$Ti ÁóJaHcù¤tS׋B‰ÓN‡- ã,¯#áp]®Ñ<–1%Á’-:.XóPcjHÿ!ÙŒKDÛZ¡­?Ä¡Dʈ~Âñ³iœ‹Í 7ÿÓÕ]m$B$‹%X¼dmKbzöÜ2O…YS¹#3’T ptÈpG$Ù4B2|‰=]ì… ÌR??!r92Í‘-þd}hɳ,ed5Í‹ÅI÷±,œ¸³×PAZ‹>IV1ðÿ¹gkI‘ÆåPüÊÙÁrK±@ùEäÙ#bZBG(à‰?¢j&„‹Ä uZ£èúû9 õCù¦² ¢¾u_‰dIØûü_åÀå v)­|â„U7ÄúIq",©d´]‰Ì#)ŒxØão²„|ü4©™OåžI$;,SÍ•f'¦‰ï]’5ÉkO’ /ND \’$Ë‚D68„?ƒCHî –I)4YBÂoN9)~Áõn4¹bä\ÀÄÓlx&œJp„çh^ž«_Hìž0M\"-‰–$õ—D¡%È B†Pç‘ð<½O!¦˜¢tÒ•gðM;äcè}êXõ:•ƒPÄÔ˜ã+[‘·Dp{ÉŒB'l¢È>#'ØÆ™‹R%eœä&gšõ:’ˆ9„vô¤•'Ò…ðpdq"K#ÍÎZ¡M£ H_åKÏ ›Lg»Üf ôe‰<ñY¿Ìf˜–ujJüøË<¬^HK¿Õ Õ‹'—á l\¿ù¿¥úþiòeÓ¡¦%„-%…±å[ZsÁ9<µ¨MA ¨•˜gŒG韵‹òcr´óçþYG_þ p†œ=}üÆòÂRcññø—œ bÿU"‰_†á$¡þV|ãóÿÄ 0ÿÚYd&ÊR¡L7l„x#~<M&¨ø^çÙD­ˆ!,x`&$"È)—B ¨vÁhXñà ø"è^b .fÏ̧š£µp–e>Â|xëÏe…™A^@ªB x#Å…Ë’„…VJˆ‚Àwx l|üé@! áCñæX^õdÄslŠ~Ф“>`f(pAà+F€[ +$,! (îæxö8°ŒcA+pk…*ˇŒX¬äæ`høÝÂð…&‘ãÌù…ÁÂ~bž;{+C1«‚?€Z `X‘Í.C¤ÜϘøl0O°LCñ¦L3ß°QxXàŠ‘æ(ËHÄÃÒÂËgT"l'LN‘O‡ª²…Á¯m…|4H¤ÌÅ$Ã>§†T>q¼¼)ÓXwˆA´"P¦‰t¥ M.¤¡$„Jòd½ÒÅé„ÇŽK¤¬Ë‚ t.‰!1cAÃ<½fU)› 3…V±ëš[HÍS¼B‡?/3W/ÂC †‚’ÊV"øGn.K“ Óf邿¾jðCÍ. Bp¦¬?É„‰Öû»b!æÚiw7ŠÓ}dOÍÈ VK+$Ø=ƒÍ ˜.RkýPØ\‰©zHp&MMLX •0ð’ña†³Ây!@æÿ>0”&,€‰q²Ï˜™e×?u¯É¹îY]œ0K†(JÿEIÑ3ˆŠ“eŽŸ |Dñ,Êá*IÜ3јªa3ôáâ‡{yü,OÂî› •¥‰Å¦Š¬4ÜçÒ+ZVc §?ÅòPˆ„„à:’À¦jÍ0$ÍÝy]&Ô¯l­ªXèð €,±ðžTÂôŠ\ÖHúbxb>ø( ÍS‘âÙ¿¡ut:MÕ–.i‘ %D'4Î÷ª‰áì°û©Í7qaІx’·¼ª„ú¢„ï{ìW!K˜!„)¨b’\ìCtC‚«ÀæxA UMQèZ&ýGI#(VH0]eÜ %% €ä€!S„/=ûÞ÷)¬ybY)ò¿ð¡Å‰bض)Øg»&#à°„}W(õˆ¤¤G²yHF™Y Á »„\»×ø•¬–ý&Y=þÆö38BÄt;Ë‚¢S¤«¹©ÝJËÖbGˆbŒ™aGæ9Ǻ ´‰¶T¥±Š$^·õà˜dD¿¢,‘tFZJKES±Ìþ„æ‰?±6Y0ˆg‰ØÞ6xN‘ Sþ—’Õ`…èSbé!Ì3'À²^BÂZÓ)™')Ye¦YÈßgŽ’–°þ•$¢Ï(=rpY*(’¹(”(L±Ce¤c"i"àO=-5¤¥'…¤†Ni!̲Q¢Y¢tDÁ á¡S‘M p5MÈ÷ EºBg¡Ž |$„s­h£’È숈àc›d¥}:D¢Ê„K äœZÁåhIØ¢Q dŠG’–J(ñ±´‘Øå46¬¨C‡’& Éx›ÙHsÁe’­#žG‡cr.Å8&[xÐʽ(¡“ååé½·¤ uÆ¢"èQG$'޴ȳÊËdãh—µ‘§¥¢m2¬oŠ„p´DLÒÙ2ߌ„ù(PB’qãDš’†Q#ÂXóc¡¡I¹$[oJ¶!uôIò(¦9±eH¤tF%Xº/JcÚ›×”tú'%‹ÓÉ= èo‘ªéŽ,åÙ±¡¾Ý”5ñJ*ÄšBM¤y …E$5H¶LHÚ<|Xàˆ?®Å¶E'ÃvA°ÎeUhô¡ö;ChO$ é!·lØÙB!­ 趤O$èòp›2/sÖ>Œ¸YZð\–™’ý’Ô¨{ ‡È¶ÃTtCz\ è×lX*Ò±”^APBC‰ZYÉ*O,I2%IÊè»ìñÑFlV,¸('â•¢”M"8ÑÉBC\,Ó“BâÍI?-¢ô}idª%pLX§4F•)zN‹ì´L¨%¤Ñ'øu¬9ÑöD19lÇ”ÌR±5"m’¥J*ÄødDYú4 ÆãMùõ`“ÑR!f,%ó¤$>Lý ·#Y¸+!ÙÖ(›E÷…¯&Õê—'“GZScËњƆբE†6¤ž‰nˆä[¤åà©#‘æÄmK;6à²÷¬éœ!òC¢,PN d)8|‹¢%ø+G%´Z›é‘oObX¶Æ°O=Ðsd‹4l¬o¡Bm ä|pPÜI“ì]¹hH«O“gôä?“(*ÞÎŽÙ+Iwõ±5DÑ ^™j‹üUªú5pI”ÿ‡³Áž)¡%- ×϶N>LÇ„,¸?d¢„¯ÑŠqI<"Zö7ðÓ[cï<ŠÑ'#iΞµl…BöYÖ“'íÆ•­¬öCï÷L¶²$Èš1Üßiž)4b©1¥Nнi9QŸÁ·‹#Á¡|x¹äy':N³À—YOCÁPÛ¡N›¸#²‹´tÍÂ]ž´’ ¯§¡‰ò5c’'[ÒË’;<`”´e"90ÎÐ’xLHâX£f.IZ~˜ðN06¢hq2e (u##BÑٓ¤k uâœHÒ‚§FÕ 8< ^ô÷ös¤ˆ}x-ÀÑì•õ¡$U“ZJ¡çHxc»†$Ó›0™n$™Š˜ÓØ— µ¢›E†ÇФ<ÛlàdÑ ežcú"GCõ¥AcJJR]Ö²r_цؓƒõ¤—’^½8˜Å b¥¹<4[÷*>E•©1rÛ³)J%§ä„òhÞ¤†e†P<ùÓÈM!±coù[\i:\éeP¦Ëú&ô„"Ç#ðÅdW²_?Š4mÑë$;)h´©—2F©Cƒb–Å,lpÓCÉ$Ü࢜A¿(hø~;’ÒNˆÆG›–HàL]–„àpá4½dx’V”H–“§zQRÎÎÉÒ‡¤81 ‡%ò'¤ˆRX´é‘ZpxQ±$ûÄYãlmBeR±àæ%ù£yHù‚j(nDlcJ„峲ʄë™Ò‹.Ë#欹ÒWÒãK! 4mŠHPQzÙCGM†”¢y'’þ–OZO%¹*G"ÇŒŽÞ,•cñcgÉšœQžÛt$Îa*7røÉ!:%SB¤šÒ™`’H¢õ…eŽçIÒ¤™’ô…¥‰!iz2>ÓÉ&H•bâG$:=ŽEž&ÕzÓF8d¡ÈóÆÐ×p™†+‘mKX¾Lá±â÷báþS£%È×(Q&µ¨1Ä©kD²%ش잆’r==<Ñ ¢4:!’$ècC‰!WÕi?‚G‚p9´9'DtËÕíñ1Üœç1¢¡ax£–žÇ·h¸Äqºù.N±C¡¼S|+lIÖ)Ö³6ü˜ä¯­ŒÊFÕÈ×™ì†{:ü7¥ý¹±$9w‰£3Ã=ɺF*´Å(Fy)«B‰2jÇœB?‰¸2kkCÏ-Í™‚©1jã‚ì™!éÅé.ñ9|µ)é ‹µ­j÷é –=Û(òÓŸ»ëZÖùý!²) œ„ l˳_ø8³(Xâ‰\›Å âæŠ?cáðeñ¥ GžJQІ™’å =2KlŸ*s2‰©“Ë]ËftcŠ!Æ–It6Ïg,är^©zr9%~ ¡:-,”4émõ¢k‘H´šfIº2DZÞä,Ü8èÅÉòñbñÛò(>'ä™BôLI–*2mI½¶%Œ‹6—±«‰ØGŒ±mP´­|’1jr'”#Ù !AT6¬¡ÌÁr9g²iz2(‡[,‰ƒ³’´Q,ÆÓbQ ›& ¡>E öYVdññEðFIð7–Ü‹^HÙÀì]¢T¶a1&ǵ2GŸÁËFI4{cx¶(„(6Çì½7´d£s‰:%LãOÑèºç’\ܬ‹ƒw:ÛYĈlOZÓ$ÈrJ*н ‚8ѧbö1¥(Ê rÓëbͬz0T˜ÚpÌž)æCp&¬xµyËd“¡à—F_&;Y½ ¸ð‚P,ñ”6­“£šc•”!H‘rX„ƸäžÉ’(!ÑÉ ~ÜS@Ó!“ÉÅŠ2š2æi= ôE({¹!À¾H|ü;s“)y'GŒ·$Ë2sµ òt6egFÜ6<]˜¬T#äÏ%¹ (G•1Ü$ ¡ãhyà÷:Í$Ä”%õsFKbkK½%^”SBwöò#²´¹d4K‚d‹Ø±/qú6Ô™rÉäxaHM-ŹecµÙòaŒE¬„ƦäÁ¥bé)ÑÉ‹S&;m KI“=¤£Üb¥bc&[âLÛK%G?ãdâ¿ÃÎM1§£žG2Ù.Gƒ‘fˆteºœ!«(ñd)?Bh…Z9¢Îìð”LäžM¶‰ÆQ%i<‹CAJD•±$dÜÆ‹cP>x£Y0±'é DùÑ>™†89><áâŒ_ üŽÑ<)jiMò"IR'DZ$nŽ™â&(”vʲŶEØ—"áèäžu»6·1u¬¾ÞŠ(‡ Ÿ²\ ";,¥B‘¼ž‰ùT‰Ó!7"iÉŽXK2‚à†@‹%'ÐÓ§¤»)´(ãIÂQPØôYŽaŒÉ> »BynlIq¬=d¡smR7È›àYṤ’´’8ѱÍj½ ÿË ÈÆ$O½%Ô*1ÍJgSiØÿ _(ÇÙš¨‘,|‹ RÈÓH˜pLPÞ+…¥“m‘¤••fR9²SÄx& ÉðŒÚ’{2íŽyÑ} _høÙ¹²Åð¾‹~—Â$–B…öMD Z2NLœ$…üTwÖŠ¹¶,Ë‚àx)’eŠE¾P›„'•ž’Z­cI1˜›á;b]‰ë¯¤\kzÿ[#äXô+­lI pz?•©à¯Âô݃èþ5·G’!4&ˆâÆŒ£ƒ}D ¸"æfâYBµñβɮ‹ƒ“͈•*—Úåê±å™üއÛ!Rs“Ò^¿Öÿcþt½/¤dx66)‰!ÇšËìR¿Õ5±%-ÀŸtB¯«Úìü‘ò©Ñ8ÑcÉZ+e Öé:¾ôXòoʇ ƳõYS<÷NJ<¡1·_*Ê8ÒÐÍŠ^Ÿ¯¢6-Ò"¿« ”ÖJF³ØÕh¾ÏkG‘609ײqCŠñËïFÈRdðËÑtXà¨_yûßãýèšàÅò„„z'Œ·<ž“•!&Úäc‹‰äŒRü µd´d°ñ3Ã$›ŸÆòO,RoT¾ÒÊÒµýisªüoJ’§éßÙ6¥{§ñ=‡ö'öSïé ²Œ›•£Ö úÞ¿³ÿÙinstagram-feed/admin/builder/assets/img/ext-socialwall.png000064400000013306151435171370017676 0ustar00‰PNG  IHDRŒ{Æ3¶îPLTE¥¥¥ $$$ õõõ ðçâèèèýýýøøøëëë îîîâÿÿÿê©©ÜŸŸüüüáÞ¡¡éÏÄÿÿÿ?™ËìÒÇ=™ÉéÑÆîîîæææ>›Ëòèã騨?›Íéééñññÿÿÿÿÿÿõõõ îîîúúúõõõþþþïïïèãàçÏÄߢ¢ÒÒÒýýýㅅ몪òà×ÿÿÿððð–ÄÜã¼¼=šËæææØžžàɽóóóùùùŠŠŠkkkÿÿÿç‚‚µåÿù» ï­­üáÕC¦ÛþôïÐÑ׆Ðùóóõë!!ýåÛÚòÿ‹ÒúkúüÞÑð°°ïáâæõÌÌâãæ¡Òí§ÝúùÀ§öÐÐíîðê‘‘íÀéùùúýèßÖ×ܵý臇ŸÈýþíå鉉üñøúÈÈüüýþòòüððÝÝâüäØãñýÌöøâðnÁïÓÔÚ¿Úþöàõþòìþðê\¶æýããR°âõ¹¸÷®ªî¡¢ì››o¬ü?û›Îøúåìèèëç±äôÂÀ±¬î Ÿë——Õ?„Ò)jì..ßíÿÆãûzûþ÷÷T¬ó)—ðöÖæÛÛáùßßL«ßã¡ßûÕÕà~ºº"µÇ'©ÖS£Ë0×Ú5Wê`JâCB`£ü©ÕùðñòvÆòïÐïêëîäåéñÅâýéáÝ‘ÚÌDºë›²îªªê””錌íLJî<<0‡ûôõöl¸õ7žñûçèôËÙÖÔã•Óñ¼ÑöÈÆÁAÀÙc²Ê6²Â"²é‚•Ý^’ñffïöÿñøþÔìý¯ÑýªÖùÇ÷8žñh½ìûçêååéï°Çñ´À¹2¼¯"·÷½²¦¬ßs«íœ©æƒ¤¿¤ßjß\…ɃÐ/äj}Ø;m¸ÜúÀöååèûèçøØØè¥ØÓqÏùÒÍÇaËä…­ÑCžõóttérsìxiðYY*óÏOtRNS !!ʯa B"$ŠŠä %ä‹B劊aŠ‰ŠŠˆ°ŠÊ剮ˆïà…rdÑ™‹‰:ñäãÈÀ©ŠŠ‰|{lTR;&¨Ü18IDATxÚìièAÇÍÚµv%É}†)å¾EJÉ‹™á…ë9“;’å¾’³Ü)å¾Cî3 Dî«\åzgNcÝìŽ}2óùÿ~;³Ïø{æyæÙùýq8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8™€({{žj…‰µñ¹¡ð>ÛÊ®¸@¿ú6bWìñV×Éã¬-b+^Ó ‹[*ê„áѼh+)Ú$´Ó5JÖÁ)e¥(1ÆM_7†3}V¼"‚ŠÕǹ2ýPOÍáuÒZŠX +à\¹ÔóK>JkÁÊôÖósƒ9†f™´–/j£È/‡seaú;©† +ÅðòCh€ñ˜ÃBa'F(1¦_úRŒÈÎl*LŒNo—%†©ØÒa*g1ÄèD¥Hkle=Ä s¦’©í!n³5€çžM­;üef;ƒÛì àpÎÐbÈLÆŒ1ëÆ)[äÄ€ƒ¥œÆ €ØY›*Fl£cÀ¦ŠXHîU[çÏÏýáÒ·Ø›ÚvèŸ3údGäÙ)F.Ù°˜dHl¥ȯP bç<ùÕjáÄHÃl’-vÆŒlÄJ2¦¼•ÙT&b A2¦`§aú¾Ÿiáb Ï8@2'²SŒ°´àí8 àÍ(o¥^j1dÀp1#=(¬j¶gwÌð«Á¤\j h"ÄÖz h™ÔŸzú™ ©>R†_\Ž~ñÇ ÚšÂ «šzK¢@ý PqAe oY—ny«ì•…Â;ÂªŽ³kÔ•|#ìÂÊúú¨º›@_$òŸ&æÔRÅŒADc$›Bmbh´øÒkáÄŒ¡ÄjABÑæM¿̤Ôv?ù…+Œ"©ˆ!‹QÔ05ëbœõÿ<\úå|%ÏXü1²)NE*µíe€aÝÒÑ2„T›ôC1xÜÎðI_ùÎÐ5µA=\õC1Vô!™{Ò3è@=\"ßCÇíôDÿËõ HÏ3†’ï‹1PK‘U ½@wàĨiÊ3‚¿ðŒE$ÁÀo‚EvOú€SŸxþ1C—lµz¥N–bx0‡)Hb -ÆŠ$[ÊK1`S%Um‘³ŠÛɇKpxÍ„gä\›:HôD2'†-†)Ïø‹aj1N›MÕ‚TµAŒvzL1 S R[bž¨(àyFmH릈yâÀÆÚ”‚C¦¶^DwðÄ€´T‡˜'. Ø3@•Љy¢¢€ …­|@“>bžr6UÒ0e<µÕÙH1l›ôÁö H1ã_”CŠB.‡3³è 0'}5‹Šƒˆqb¯ˆ…©íßxÆb½¢æ0©„>›|kæ5!}wÈ"b½¼fj[Ó´Öv(1NyuHmHŸ\ÚOŒSŠÎ¦ ðŸÎú,XÄV;„´ Ý|n[€ÀAMúŒ|ÿù·žAñì¦`:{=RmÊtד>˜žÑÊÜ<£c»ª? ^=ú–z sÛŠÕ)«WÔоޕ‡ä)ÕÙÜab/ÞPD+nK)€Å0·Ö¶X‰ÆeKW)[º,…¶¼SEý°.kK³¦JizŒ[Ø–6¼•=z¬tÚ¥çR ‰Ã¢Ã-¥å½é‰Ò.ïÇ.a=ÕTj\ ôZ[c©­çÇ%Ê(J”(#vh«÷Kð^‰HÚ¢º%Ø.?ÊzuõuÌÊl¢Ë‰¸¥.?Ÿž+Ó[¨+äE¢Ç7QT¾,F-SU[„J†aXʧð íòN©Rbú>}+Ø7³¶”´Ðµˆž2%±ƒ¢aשÛ裬²>?ÀvJâÿ\Z(4Vñ‚¢%Kûa ‹ÉF÷•¡¤êý¾ÔÍJþàÎÚ¢;%K `1L¬BW®ŠR‚¢‚@l½/_ßœDÏQiMÖÝ iRMòЧAàÉ-ÌÔÖ@ÌÐjxÈóø[ƒØh)ÛŠÝĹHŸ+ÌiAú”Ïèûr3Ò–¾ü×Â|¸Ä<Ã> ¦¶Å zFqh4)B»TÇ A{ Íd1ØZ[3 f èJ¸ÏÀÅ 4ÂñàoH`…B3­Rü9pSb„€ÅšÚ‹(¬€R>(·6¥V‡üÏb,Ÿ³ ㉢_€,†¹‡KÅêàœY~•7×úöí{}å3a‹À 0¸ˆ­Ι9}¯±æX_ʪ9©ï(ìm€®Ã&¤ôŒ ç?c9õˆm'öe•¶‚£|73L–Æ3Œ­É_Œ‰+ûJ´QQYµífŒ‘Ãà S~î|y_¥tÌ0"†Ö£¬¯Åóü{Æ#=†àÀQ-ÆDiŠÕ"¶nf™:²¤Ôöž1vÇšÉÝÃwäÊ1¥ÅJeúüÏÝŒ3u÷(µ©àû1cSBÑϰ—iÇÄÆ‡©d8ŸbA‚÷½Iß5ÝLÞÍ2Ghq+ Á¿ò ­Gþåï‰1dx÷¯™‡Í1qÛóU|ޱ\ÛÔÂgãb$Ó«Ü?FVáûZ˜WC‹±rUßU+ç\Æ -FÜÍ8Éô Ú \i‘¤þ—‚ža:½ªþ³Bá§ö®ìõ‡(Š›kæ÷33ö]<(dϾDQ"n„ƒP¢H‰”5BR$Dö%kñDY²=ˆ”-kŠ'þ÷Üsk¸3ÇŒÏ|¿sÏ=÷Þùê÷qϹ˜™­“S±`‰ÌQahënxEf*Ÿy©l†*;€ÌT!XûS>ºäFÆÜÉ?À*™2Múܯºøy-‡èQmá^#u2Ì3¯:ø9-.™üCœ•¹–Ћ'ù(pÛuêɘ)sígˆ £)Ã+÷d$wúNý˜Œe2?„Aã3€ø°>#§Iß\d´fb¦Ã]÷óŒÄhŠMψ™‘ë¼7—æÿ˜Œs2?Ä_最›µÉžátž±ê‡dÌ•¹8Ÿ‘^ù m6Ϙ/óCDkS={6ø zªã—Ð3Cq¢¢ú÷Œ[›×NßT.CF‡¶M[´mÛ¶~ýæÍ›×Ç3$ê02¤ßäÛB2úÓVé[j €Ñ‚Òãu! JHQ¶×D%¥º‘ºä€†½ŒÈ ,``¥È5M£0 Bõ¡/d1FÝM&‚ÛŠ˜Ö‚¬¯®aÔ G¡¶¶¦±Èosé}ê ú|™'"FÔÆE«¤6³lr¦œR[åûÊ4¶Í¬Þ”X$‹mãºÈíVTCµê²Ì d¦0.ƒ—)$+„-3jP'(G$* RÒTBàålÊ£˜Â…»Û;—,+– ÚÏ`³ OFxßF=S1Ö…„rÉ6OYhmµVG—%%5Ñï{.œ†lýf •«¢yFõ`ÍTóg~EÅ\™;¢/=c`3Bûö˜43©Õ£H2ðÑ5ÒJ£Æ2ºUÄÉ]].<¦d`ÏX±kӥݛOî’„®5å –Iƒy”*‹ž±pbÓ]£èSKdTÉLy"–…¹Ø}i÷ŒÍFÓª¶¼1}i0¯ f`¦i.Vka!(€Œj=!öÀ‹'ãpqRqqRu4Tmªf¦ÌN_áfj× ÀByßt@×G»¦!L|Æj$ÃX«E rØ3x’A–,È@ǽé ­Jü¸Š4Ä8Ï(žŒ]_ÈØlÌTõFS!Ÿ¡9 3µU 2*0&fJ®6d`¢Ñ&¯›Øæ¯š\ öJ ƒÍ |á2N¢ÂÞw7>iñemŠ™6ŒM¤hUãn¡#||†„…ÂEòþ¦Õ’ÐʯVÏàã3¾ƒÓ¡-Ïž!Ì+¨%C|=šª‚™R>ƒÉBa º: °äÙ3(ô˜gÏÈksiêä‚°à2êðX›JC?¯çMM-K¾%ƒ¯ïZ±%ôØÄgÄÓàÞìlU±Í¥ÖøôNMt€9“²¡sb4Uþû¦ZSLŸúÛ1$£Z=ƒ¶]™’QþÓ§ m¹ö WfŠç~FkCKŸ1:¯¹,97ó/àÜ’¬=#0/ÀR;vdtòsrà§&ÿd¥`ž=£ó?¶P˜•ŒÖþWáÙ3Üíô±$ƒõhª—ñ#C°$£ó?¶íš™ ÁxhÛÉÝЖ%ôŒB–¼Gí¿e¦NeícŸ‘ÛrÈ’G³þ-ÉNßÑ”»žÁs9$®¤™ xîg„œxÿ«¶|ÈèìW,>·]yúŒÎU‹Ï8›©ÄBaù÷ÀMP>O3Õɯ˜<¾{à½*Óáª-Ï¡m§Šm»ÆÇ×ë3ÊÓŒïùÎLU"¦érHçŠÝQ Î;}~µÖ¦ÌûÀ=ždÔTñySÏ¡mçÚŠ‘Q—±ÏèT±%tÖw&æ˜ôŜצš©1’!èIl,Í”Ãm×aÃ%;Œl-ïg8ÚzÃñC5jÔ Žn"(µøQAïD!j(k¯—'U²BoÔ’fèßc¼íêÎ×õ[ hÛ\ø’œ¶ú=8*ƒ¯×–à·- ͵ª­®bÔÝ@gA«u1Á¦^E§Ø 0 EëõMl®zFÐØo…a…Q‡x¹{i¨KPÒ=VJ @% M%¨›T¥¤´!4î²þ­È\(Ž! ¿% Å­kÁØg¸›ôAMm­ï«%tª¥Š”¥ZM)WK5A@t¦„jR3+P³šºÇz9DÔqxu ¼KG€H0‹‰> «aô$a}Ìà dPÐAõ¨1J$`œ¡TsÁwÕÖ™Ï[ |‘ R• *æ@-à :ø˜Š‚Z@¢+ øX`ªëfúòXª¯`ÛBKÓ@ ð|ç.ÉHÇWz¡ë“#UMVöŒ „­„ÕXh.øËNQ›S²É%ø`B°… `ëD¨Íñkû“$h=ïhªø GؤI“Žøí¨…tP‘­es)Íè¢I‚r„d–¨F;¯g3Õ«ÆÙ«eê1|yË Á™ŒÎµÎÈ,ù¡o]ÎdÀª­4î/B­þðw7¯é*¢µÇºg8[(d@Æâóóg¬&÷Œ5Îî›*žŒçoŽºsçàÁgOÖ*ö?!¡G‰LÿqÇ Ö\{‚÷mךò’±ãª:í™·xÞö3ÛÉRµæ,ÓË/ï…Ƕȇ=´mž|¼Íè"òÓ`ÊÊõLxñ7$(2ž¿Z,¯¿\,oî7ºq4Å –¯\Ï1ŒŒAÏx(wîQé¡ý_“a†¶Sœaùº}ìöÀ‹¿oêÄùÜÆ‘yò‚!Ú©).qúÏøèQâ7Ë(2.¾Þ³øÀIdØhW‡dŒ–CXžø å‹;¯òö£në)ŽAîœÅ¤™Úx|ÃR\ùt‹t±ÓÑT:  ‹'C>=~âıc;w¾=°Øhl´ë”ü°üÁ¾_ô•×–^y¸EZÐÏÌ”ÃáU?ùªü²‡Ä¸s>zÔ”»gô ^ývˆ… ÊÏÐ3ܹóN%^ICè¡™ÊÐ3ÜñÑÙ:ðJø è’Aët>züFÏø ¯Ô9„Ê?¶IEND®B`‚instagram-feed/admin/builder/assets/css/global.css000064400000205505151435171370016232 0ustar00/* Global CSS styles Theses styles can be used for different screens & In different SmashBalloon Plugins * Transitions * Default, Hover & Focus Colors & Backgrounds * Social Colors * Buttons * Full Screen Boss * Add Source Popup * Confirm Dialog * Full Screen Loader * Tooltip */ #sbi-settings{ visibility: hidden; opacity: 0; } #sbi-settings[data-app-loaded="true"]{ visibility: visible; opacity: 1; } #sbi-builder-app { -webkit-font-smoothing: antialiased; } /* Transitions */ .sb-tr-1{ -webkit-transition: all .1s ease-in-out; transition: all .1s ease-in-out; } .sb-tr-2{ -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sb-tr-3{ -webkit-transition: all .3s ease-in-out; transition: all .3s ease-in-out; } .sb-tr-4{ -webkit-transition: all .4s ease-in-out; transition: all .4s ease-in-out; } .sb-tr-5{ -webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out; } .sb-tr-6{ -webkit-transition: all .6s ease-in-out; transition: all .6s ease-in-out; } .sb-tr-7{ -webkit-transition: all .7s ease-in-out; transition: all .7s ease-in-out; } .sb-tr-8{ -webkit-transition: all .8s ease-in-out; transition: all .8s ease-in-out; } .sb-tr-9{ -webkit-transition: all .9s ease-in-out; transition: all .9s ease-in-out; } .sb-tr-10{ -webkit-transition: all 1s ease-in-out; transition: all 1s ease-in-out; } /* * Default, Hover & Focus Colors & Backgrounds */ .sb-small-p, .sb-standard-p{ font-style: normal; font-weight: normal; font-size: 14px; line-height: 160%; color: #8C8F9A; margin: 0; } .sb-standard-p{ font-size: 16px; color: #141B38; } #sbi-settings h3 { font-style: normal; font-weight: 600; font-size: 24px; line-height: 120%; margin: 0 0 4px 0; letter-spacing: 0; } .sb-caption { font-style: normal; font-weight: normal; font-size: 13px; line-height: 150%; color: #141B38; } .sb-caption.sb-caption-lighter { color: #5F6368; } .sb-small-text { font-size: 12px; } .sb-bold { font-weight: 600; } .sb-dark-text { color: #141B38; } .sb-small { font-style: normal; font-weight: bold; font-size: 10px; line-height: 160%; letter-spacing: 0.08em; text-transform: uppercase; color: #141B38; } .sb-button-no-border { border-radius: 0 !important; border: none !important; } .sb-icon-small svg { height: 10px; } .sb-dark-hover:hover svg, .sb-dark-hover:hover path { fill: #141B38; } /*orange*/ .sb-btn-orange{ background: #FE544F!important; color: #fff!important; } .sb-btn-orange:hover{ background: #EC352F!important; border-color: #EC352F!important; color: #fff!important; } .sb-btn-orange:focus, .sb-btn-orange:active{ background: #BC120E!important; border-color: #BC120E!important; color: #fff!important; } /*red*/ .sb-btn-red{ background: #D72C2C!important; color: #fff!important; } .sb-btn-red:hover{ background: #DF5757!important; color: #fff!important; } .sb-btn-red:focus, .sb-btn-red:active{ background: #841919!important; color: #fff!important; } /*red*/ .sb-btn-blue{ background: #0068A0!important; color: #fff!important; } .sb-btn-blue:hover{ background: #0096CC!important; border-color: #0096CC!important; color: #fff!important; } .sb-btn-blue:focus, .sb-btn-blue:active{ background: #004D77!important; border-color: #004D77!important; color: #fff!important; } /*grey*/ .sb-btn-grey{ background: #F3F4F5!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } .sb-btn-grey:hover{ background: #fff!important; color: #141B38!important; border: 1px solid #DCDDE1!important; } .sb-btn-grey:focus, .sb-btn-grey:active{ background: #E8E8EB!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } /*dark*/ .sb-btn-dark{ background: #2C324C!important; color: #fff!important; } .sb-btn-dark:hover{ background: #434960!important; color: #fff!important; } .sb-btn-dark:focus, .sb-btn-dark:active{ background: #141B38!important; color: #fff!important; } /*orange*/ .sbi-btn-orange{ background: #FE544F!important; color: #fff!important; } .sbi-btn-orange:hover{ background: #F37036!important; color: #fff!important; } .sbi-btn-orange:focus, .sbi-btn-orange:active{ background: #BC120E!important; color: #fff!important; } /*red*/ .sbi-btn-red{ background: #D72C2C!important; color: #fff!important; } .sbi-btn-red:hover{ background: #DF5757!important; color: #fff!important; } .sbi-btn-red:focus, .sbi-btn-red:active{ background: #841919!important; color: #fff!important; } /*red*/ .sbi-btn-blue{ background: #0068A0!important; color: #fff!important; } .sbi-btn-blue:hover{ background: #0096CC!important; color: #fff!important; } .sbi-btn-blue:focus, .sbi-btn-blue:active{ background: #004D77!important; color: #fff!important; } /*grey*/ .sbi-btn-grey{ background: #F3F4F5!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } .sbi-btn-grey:hover{ background: #fff!important; color: #141B38!important; border: 1px solid #DCDDE1!important; } .sbi-btn-grey:focus, .sbi-btn-grey:active{ background: #E8E8EB!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } /*dark*/ .sbi-btn-dark{ background: #2C324C!important; color: #fff!important; } .sbi-btn-dark:hover{ background: #434960!important; color: #fff!important; } .sbi-btn-dark:focus, .sbi-btn-dark:active{ background: #141B38!important; color: #fff!important; } /*disabled*/ .sb-btn-orange[data-active="false"], .sb-btn-blue[data-active="false"], .sb-btn-red[data-active="false"], .sb-btn-grey[data-active="false"], .sb-btn-dark[data-active="false"]{ background: #E8E8EB !important; color: #8C8F9A !important; } /* * Social Colors */ /*Facebook*/ .sb-cl-facebook, .sb-clhv-facebook:hover{ color: #006BFA!important; } .sbi-bg-facebook, .sbi-bghv-facebook:hover{ background: #006BFA!important; } /*Instagram*/ .sb-cl-instagram, .sb-clhv-instagram:hover{ color: #BA03A7!important; } .sbi-bg-instagram, .sbi-bghv-instagram:hover{ background: #BA03A7!important; } /*Twitter*/ .sb-cl-twitter, .sb-clhv-twitter:hover{ color: #1B90EF!important; } .sbi-bg-twitter, .sbi-bghv-twitter:hover{ background: #1B90EF!important; } /*YouTube*/ .sb-cl-youtube, .sb-clhv-youtube:hover{ color: #EB2121!important; } .sbi-bg-youtube, .sbi-bghv-youtube:hover{ background: #EB2121!important; } /*Linkedin*/ .sb-cl-linkedin, .sb-clhv-linkedin:hover{ color: #007bb6!important; } .sbi-bg-linkedin, .sbi-bghv-linkedin:hover{ background: #007bb6!important; } /*Mail*/ .sb-cl-mail, .sb-clhv-mail:hover{ color: #666!important; } .sbi-bg-mail, .sbi-bghv-mail:hover{ background: #666!important; } .sb-cursor-pointer{ cursor: pointer; } .sbi-stck-el.sbi-stck-el-upgrd svg path{ fill: #fff!important; } /*Buttons*/ .sb-btn{ display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 9px 38px; font-style: normal; font-weight: 500; font-size: 14px; line-height: 17px; border-radius: 2px; cursor: pointer; color: #fff; outline: none; box-shadow: none; border: none; gap: 8px; } .sb-btn:focus{ box-shadow: none; } .sbi-small-chevron svg{ width: 6px; height: 8px; top: 14px; left: 18px; } .sb-btn-right-icon{ display: flex; justify-content: flex-start; padding: 15px 12px; } .sb-btn-right-txt{ display: flex; justify-content: flex-start; align-items: center; line-height: 1em; } .sb-btn-right-txt svg{ float: left; margin-right: 10px; } .sb-btn-right-chevron{ width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); margin-left: auto; margin-right: 10px; } /*Add Source*/ /* Add new Source Popup */ .sbi-fb-popup-cls{ height: 14px; width: 14px; position: absolute; cursor: pointer; right: 17px; top: 17px; z-index: 3; } .sbi-fb-center-boss{ display: flex; justify-content: center; align-items: center; } .sbi-fb-popup-inside{ left: 80px; max-width: 1172px; width: calc(85% - 200px); background: #fff; color: #141B38; position: relative; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); border-radius: 2px; overflow-y: auto; max-height: 80vh; } .sbi-fb-feedtypes-popup.sbi-fb-popup-inside{ width: 1172px; max-width: calc(85% - 200px); } .sbi-fb-extensions-pp-ctn .sbi-fb-popup-inside{ max-width: 880px!important; } .sbi-fb-popup-inside.sbi-narrower-modal { max-width: 576px; } .sbi-fb-popup-inside.sb-onboarding-tooltip { overflow-y: visible !important; } @media all and (max-width: 960px) { .sbi-fb-popup-inside { left: 20px; max-width: 920px; width: calc(85% - 20px); } } .sbi-fb-embed-popup{ width: 575px; } .sbi-fb-source-pp-customizer h5,.sbi-fb-embed-popup h5{ font-size: 24px; padding: 0 20px; margin-top: 25px; margin-bottom: 15px; } .sbi-fb-feedtypes-popup h5{ font-size: 26px; padding: 0 20px; margin-top: 25px; margin-bottom: 30px; } .sbi-fb-feedtypes-pp-ctn .sbi-fb-adv-types .sbi-fb-types-list{ margin-bottom: 30px !important } .sbi-fb-srcs-update{ background: var(--cl-orange); font-weight: 600; font-size: 14px; line-height: 160%; height: 38px; } .sbi-fb-srcs-update-footer{ display: flex; align-items: center; border-top: 1px solid #DCDDE1; background: #F9F9FA; } .sbi-fb-srcs-update-footer-txt{ font-size: 18px; line-height: 1.7em; } .sbi-fb-srcs-update-footer-image svg{ width: 100%; height: auto; float: left; } .sbi-fb-srcs-update-footer-txt{ box-sizing: border-box; display: flex; justify-content: center; } .sbi-fb-stp1-elm{ margin-bottom: 30px; float: left; display: flex; } .sbi-fb-source-top .sbi-fb-stp1-elm:first-of-type{ justify-content: center; align-items: center; padding-bottom: 30px; border-bottom: 1px solid #D0D1D7; } .sbi-fb-stp1-event{ padding-bottom: 0px!important; border-bottom: none!important; padding-right: 20%; align-items: flex-start!important; } .sbi-fb-stp1-elm-desc > a{ font-weight: 600; text-decoration: underline; color: #2A65DB; } .sbi-fb-stp-src-ctn, .sbi-flex-center-center{ display: flex; justify-content: center; align-content: center; } .sbi-fb-stp-src-type{ display: flex; justify-content: center; align-content: center; font-size: 13px; font-weight:400; cursor: pointer; margin-left: 20px; color: #434960; white-space: nowrap; } .sbi-fb-stp-src-type[data-active="true"]{ font-weight:600; color: #141B38; } .sbi-not-sure-wrap span svg { margin-right: 5px; } .sbi-not-sure-wrap:hover .sbi-not-sure-tooltip{ display: block; } .sbi-fb-stp1-elm-ic{ width: 28px; height: 28px; border-radius: 35px; background: #F3F4F5; display: flex; justify-content: center; align-items: center; font-weight: 500; flex: none; } .sbi-fb-stp1-elm-head{ font-size: 16px; font-weight: 600; } .sbi-fb-stp1-elm-desc{ font-size: 15px; margin-top: 4px; line-height: 1.3em; color: #5F6368; } .sbi-fb-source-btm-hd{ font-size: 15px; font-weight: 500; } .sbi-fb-src-back-top i{ font-size: 12px; margin-right: 10px; } .sbi-fb-source-account-info{ background: #F3F4F5; color: #8C8F9A; display: flex; align-items: center; padding: 6px 6px 6px 12px; font-size: 15px; } .sbi-fb-source-list { display: grid; grid-template-columns: 49.5% 49.5%; grid-column-gap: 1%; margin-top: 10px; max-height: calc(80vh - 360px); overflow-y: auto; min-height: 80px; } .sbi-fb-source-account-info strong{ color: #141B38; } .sbi-fb-source-btn{ margin-top: 60px; color: #fff; display: flex; justify-content: center; align-items: center; background: #0068A0; cursor: pointer; padding: 10px 20px; border-radius: 3px; font-size: 15px; font-weight: 500; border: none; } .sbi-fb-icon-success{ position: relative; width: 30px; height: 20px; margin-right: 10px; } .sbi-fb-icon-success:before{ content: ''; position: absolute; width: 13px; height: 5px; top: 4px; border-left: 3px solid currentColor; border-bottom: 3px solid currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-fb-source-inp-label,.sbi-fb-wh-label{ font-size: 14px; color: #434960; } .sbi-fb-source-mnl-type .sbi-fb-stp-src-ctn{ justify-content: flex-start; margin-bottom: 20px; margin-top: 10px; } .sbi-fb-source-mnl-type .sbi-fb-stp-src-ctn .sbi-fb-stp-src-type{ margin-left: 0px; margin-right: 20px } .sbi-fb-source-inp,.sbi-fb-wh-inp{ border-radius: 0px !important; outline: none ; margin-top: 5px; border: 1px solid #D0D1D7 !important; margin-bottom: 20px; height: 35px; line-height: 35px; } .sbi-fb-sec-heading span{ font-size:14px; color: #434960; line-height: 1.7em; margin-top: 10px; display: block; } #sbi-builder-app .sbi-fb-sec-heading span { margin-top: 0; } .sbi-fb-sec-heading { margin-bottom: 10px; } .sbi-fb-slctsrc-content,.sbi-fb-section-wh-insd{ padding: 40px; } .sbi-fb-slctsrc-ctn h4,.sbi-fb-section-wh-insd h4{ font-size: 20px; padding: 0px; margin: 0px; } .sbi-fb-srcs-item{ width: 100%; cursor: pointer; height: 62px; margin-top: 10px; border-radius: 3px; border: 1px solid #E7E7E9; display: flex; position: relative; } .sbi-connecting-account-item { display: flex; align-content: center; align-items: center; position: relative; box-sizing: border-box; height: 62px; width: 208px; margin: auto; padding: 12px; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 4px 5px rgba(0, 0, 0, 0.05); border-radius: 4px; } .sbi-fb-source-step4 { max-width: 576px; } .sbi-source-account-box { padding: 32px; background-color: #F3F4F5; } .sb-details-wrap { align-items: center; } .sbi-connecting-account-item .sbi-fb-srcs-item-avatar { margin-right: 8px; } .sbi-fb-srcs-item .sbi-fb-srcs-item-avatar { margin-right: 10px; } .sbi-fb-srcs-item[data-disabled="true"]{ background: #F3F4F5; } .sbi-fb-stp-src-type[data-disabled="true"], .sbi-fb-stp-src-type[data-disabled="true"] .sbi-fb-chbx-round{ color: #8C8F9A !important; cursor: default; } .sbi-fb-stp-src-type[data-disabled="true"] { position: relative; } .sbi-fb-srcs-item[data-disabled="true"] .sbi-fb-srcs-item-inf{ opacity: .55; } .sbi-fb-srcs-item:hover{ border-color: #86D0F9; } .sbi-fb-srcs-item[data-active="true"]{ border-color: #0096cc; } .sbi-fb-source-top .sbi-fb-srcs-item{ margin-bottom: 0px; } .sbi-fb-srcs-new{ display: flex; justify-content: center; align-items: center; font-size: 16px; color: #0096CC; background: #EBF5FF; font-weight: 600; border: 1px solid #EBF5FF; } .sbi-fb-srcs-new i{ font-size: 14px; padding: 0 10px; margin-left: -10px; } .sbi-fb-srcs-item-chkbx{ width: 40px; height: inherit; display: flex; justify-content: center; align-items: center; margin: 0px 7px; } .sbi-fb-srcs-item-chkbx-ic,.sbi-fb-chbx-round{ width: 16px; height: 16px; box-sizing: border-box; position: relative; border-radius: 50px; border: 2px solid #8c8f9a; } [data-multifeed="active"] .sbi-fb-srcs-item-chkbx-ic{ border-radius: 2px; } [data-active="true"] .sbi-fb-srcs-item-chkbx-ic, [data-active="true"] > .sbi-fb-chbx-round, .sbi-fb-source-popup [data-active="true"] > .sbi-fb-chbx-round{ border-color: #0096cc; background: #0096cc; } [data-multifeed="active"] [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before{ content: ''; position: absolute; width: 8px; height: 3px; border-left: 2px solid #fff; border-bottom: 2px solid #fff; top: 2px; right: 1px; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } [data-multifeed="inactive"] [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before, [data-active="true"] > .sbi-fb-chbx-round:before, .sbi-fb-source-popup .sbi-fb-source-list [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before{ content: ''; position: absolute; height: 6px; width: 6px; background: #fff; border-radius: 25px; left: 3px; top: 3px; } .sbi-fb-srcs-item-avatar{ display: flex; width: 42px; height: inherit; justify-content: center; align-items: center; } .sbi-fb-srcs-item-avatar img{ width: 42px; height: 42px; border-radius: 50%; background: #eee; } .sbi-fb-srcs-item-inf{ width: 100%; height: inherit; display: flex; justify-content: center; flex-direction: column; } .sbi-fb-srcs-item-name{ color: #141B38; font-weight: 600; } .sbi-fb-srcs-item-name-event{ font-size: 10px; font-weight: 500; color: #777; } .sbi-fb-srcs-item-type{ color: #434960; font-weight: 600; text-transform: uppercase; display: flex; align-items: center; } .sbi-fb-srcs-item-type svg{ fill: currentColor; } [data-type="page"] .sbi-fb-srcs-item-type svg{ width: 11px; } .sbi-fb-srcs-back{ margin-right: auto; } /*Full Screen Window*/ .sb-fs-boss{ position: fixed; height: 100vh; width: 100%; left: 0; top: 0; bottom: 0; right: 0; background: rgba(0,0,0,.4); z-index: 9989; } .sb-dialog-popup{ width: 575px!important; min-height: 250px; } .sb-dialog-remove-source{ background: #F3F4F5; padding: 40px 20px; display: flex; justify-content: center; align-items: center; } .sb-dialog-remove-source .sbi-fb-srcs-item{ background: #fff; width: 280px; padding-left: 20px; box-sizing: border-box; margin-top: 0px; } .sb-dialog-popup-content{ display: flex; justify-content: center; align-items: center; text-align: center; flex-direction: column; padding: 38px 12%; } .sb-dialog-popup-content strong{ font-size: 22px; color: #141B38; display: block; margin-bottom: 15px; line-height: 160%; } .sb-dialog-popup-content span{ font-size: 16px; line-height: 1.5em; color: #434960; } .sb-dialog-popup-actions{ display: flex; justify-content: center; align-items: center; margin-top: 25px; } .sb-dialog-popup-actions button{ width: 100%; margin: 4px 4px; cursor: pointer; height: 42px; } .sb-full-screen-loader{ position: absolute; width: 100%; height: calc(100vh - 32px); background: #f0f0f1; z-index: 999999; overflow: hidden; display: none; opacity: 0; visibility: hidden; justify-content: center; align-items: center; flex-direction: column; top: 0px; } .sb-full-screen-loader[data-show="shown"]{ display: flex; opacity: 1; visibility: visible; } .sb-full-screen-loader-logo{ width: 190px; height: 190px; position: relative; margin-bottom: 40px; margin-top: -55px; } .sb-full-screen-loader-logo svg { height: auto; } .sb-full-screen-loader-border{ width: inherit; height: inherit; box-sizing: border-box; border: 6px solid green; left: 0; top: 0; position: absolute; border-radius: 50%; } .sb-full-screen-loader-img{ width: inherit; height: inherit; display: flex; justify-content: center; align-items: center; position: absolute; top: 0px; left: 0px; z-index: 2; } .sb-full-screen-loader-img svg{ float: left; width: 60px; fill: #FE544F; } .sb-full-screen-loader-txt{ color: #434960; font-size: 24px; font-weight: 600; } .sb-full-screen-loader-spinner, .sb-full-screen-loader-spinner:before, .sb-full-screen-loader-spinner:after { border-radius: 50%; } .sb-full-screen-loader-spinner { color: #FE544F; position: relative; width: 190px; height: 190px; box-shadow: inset 0 0 0 6px; -webkit-transform: translateZ(0); transform: translateZ(0); } .sb-full-screen-loader-spinner:before, .sb-full-screen-loader-spinner:after { position: absolute; content: ''; } .sb-full-screen-loader-spinner:before { width: 100px; height: 200px; background: #f0f0f1; border-radius: 190px 0 0 190px; top: -1px; left: -8px; -webkit-transform-origin: 5.1em 5.1em; transform-origin: 100px 100px; -webkit-animation: sbi-loader-spinner 2s infinite ease 1.5s; animation: sbi-loader-spinner 2s infinite ease 1.5s; } .sb-full-screen-loader-spinner:after { width: 97px; height: 192px; background: #f0f0f1; border-radius: 0 190px 190px 0; top: -1px; left: 94px; -webkit-transform-origin: 1px 95px; transform-origin: 1px 95px; -webkit-animation: sbi-loader-spinner 2s infinite ease; animation: sbi-loader-spinner 2s infinite ease; } @-webkit-keyframes sbi-loader-spinner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes sbi-loader-spinner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /* Social Wall Popup */ .sbi-fb-extpp-social-wall-graphic { display: flex; flex-direction: column; align-items: center; padding-bottom: 78px } .sbi-graphic-row, .sbi-fb-social-wall-between { position: relative; } .sbi-graphic-row-main { display: flex; justify-content: center; flex-direction: row; align-items: center; } .sbi-fb-social-wall-group { display: flex; flex-direction: column; align-items: center; width: 13%; margin: 1.5%; } .sbi-fb-social-wall-group p { margin: 0; text-align:center; } .sbi-fb-social-wall-between.sbi-fb-social-wall-between-instagram svg { margin-top:120%; } .sbi-fb-social-wall-between.sbi-fb-social-wall-between-facebook svg { margin-top:40%; } .sbi-fb-social-wall-between.sbi-fb-social-wall-between-twitter svg { margin-top:60%; } .sbi-fb-social-wall-end { position: absolute; right: -1%; top: 40%; } .sbi-graphic-bottom { width: 100%; display: flex; justify-content: center; flex-direction: row; align-items: center; margin-top:3%; } .sbi-all-in-same { display: flex; justify-content: center; flex-direction: row; align-items: center; height: 38px; width: 72.5%; /*background: #FFFFFF;*/ /*box-shadow: 0px 6px 7px rgba(0, 26, 119, 0.07), 0px 3px 4px rgba(0, 26, 119, 0.06), 0px 1.80196px 2.25245px rgba(0, 26, 119, 0.05), 0px 0.749837px 0.937296px rgba(0, 26, 119, 0.1137);*/ /*border-radius: 3px;*/ border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; } .sbi-fb-extpp-social-wall .sbi-fb-extpp-bottom { background: #F3F4F5; } .sbi-fb-social-wall-end-arrow { position: relative; } .sbi-arrow-head { position: absolute; bottom: 1%; left: 39%; } /* To Builder */ .sbi-fb-type-el[data-active="true"]:before { content: ''; position: absolute; width: 24px; height: 24px; right: 0px; top: 0px; z-index: 2; border-radius: 0 0 0 2px; background: var(--cl-orange); } .sbi-fb-type-el { display: flex; flex-direction: column; align-items: flex-start; padding: 0; position: relative; background: #fff; border: 1px solid #D8D8D8; border-radius: 3px; cursor: pointer; box-sizing: border-box; } .sbi-fb-slctf-back span { font-weight: 600; } .sbi-fb-slctfd-action { padding: 16px 54px; position: fixed; bottom: 0; background: #f0f0f1; width: calc(100% - 160px); } .sbi-fb-wrapper { max-width: 100%; position: relative; margin: auto; color: #141B38; } .sbi-fb-create-ctn { float: left; margin-top: 104px; padding: 0 54px 65px; } .sbi-fb-extpp-btns a { height: 38px; cursor: pointer; position: relative; border-radius: 3px; font-style: normal; font-weight: 600; font-size: 14px; line-height: 160%; display: flex; justify-content: center; align-items: center; box-sizing: border-box; } .sbi-fb-extpp-lite-btn { display: flex; align-items: self-start; font-size: 14px; font-weight: 600; padding: 6px 11px; color: #0068A0; background: #fff; border: 1px solid #DCDDE1; margin-bottom: 14px; } .sbi-fb-extpp-lite-btn svg { fill: currentColor; width: 17px; height: 16px; float: left; margin-right: 8px; margin-top: 4px; } .sbi-fb-stp-src-type .sbi-fb-chbx-round { margin-right: 8px; margin-top: 2px; } #sbi-builder-app .sbi-fb-stp-src-type { display: flex; justify-content: center; align-content: center; font-size: 14px; font-weight: 400; cursor: pointer; margin-left: 20px; color: #434960; } .sbi-csz-name-ed-btn { width: 28px; height: 28px; cursor: pointer; margin: 0 10px; background: #E8E8EB; border: 1px solid #E8E8EB; outline: none; border-radius: 2px; } .sbi-csz-name-ed-btn svg { width: 16px; height: 14px; fill: #141B38; float: left; margin-left: -1px; } .sbi-csz-name-ed-btn:focus, .sbi-csz-name-ed-btn:hover { outline: none; background-color: #d9d9dc; border-color: #d9d9dc; } .sb-preview-chooser-btn, .sb-preview-chooser-btn:focus { width: 38px; height: 32px; display: flex; justify-content: center; align-items: center; cursor: pointer; float: left; border: 0; background: unset; margin: 0 1px; outline: none; } .sb-customizer-sidebar { position: fixed; z-index: 100; width: 375px; box-shadow: 4px 0px 14px rgb(0 0 0 / 5%), 1px 0px 4px rgb(0 0 0 / 10%); background: #fff; left: 160px; top: 98px; overflow: auto; bottom: 0px; padding-bottom: 50px; } .sb-customizer-sidebar-breadcrumb a, .sb-customizer-sidebar-breadcrumb span { display: inline-block; position: relative; cursor: pointer; color: #434960; text-transform: uppercase; font-size: 10px; line-height: 160%; letter-spacing: 0.02em; padding: 0 5px 0 4px; height: 20px; font-weight: 700; } .sb-control-elem-ctn { display: flex; color: #434960; padding: 20px 20px; } .sb-control-toggle-icon svg { width: 13px; float: left; fill: #434960; } .sb-control-elem-ctn .sb-control-toggle-elm[data-active="true"] { display: flex; color: #141B38; padding: 0 15px; } .sb-control-elem-ctn .sb-control-toggle-elm[data-active="true"] svg { fill: #141B38; } .sb-control-elem-ctn[data-layout="block"] input[type="number"] { height: 36px; background: #FFFFFF; border-radius: 2px 0 0 2px !important; } .sb-control-input-info { display: flex; justify-content: center; align-items: center; background: #F3F4F5; padding: 0 8px; font-weight: normal; font-size: 14px; line-height: 160%; color: #434960; border: 1px solid #D0D1D7; border-left: none; border-radius: 0 2px 2px 0 !important; } .sb-control-elem-output input[type="text"], .sb-control-elem-output input[type="number"]{ border-radius: 1px !important; } .sb-control-colorpicker-ctn .minicolors-theme-default.minicolors-position-right .minicolors-swatch { left: auto; right: 1px; top: 1px; width: 35px; height: 35px; background: #F9F9FA; border: 0px; border-radius: 2px; } .sb-control-colorpicker-ctn[data-picker-style="reset"] .minicolors-input { background: #F3F4F5!important; border: 1px solid #DCDDE1!important; height: 38px; } .sb-customizer-sidebar-breadcrumb svg { position: relative; left: auto; top: auto; margin-right: 9px; } .sb-customizer-sidebar-breadcrumb { display: flex; justify-content: flex-start; align-items: center; margin-bottom: 15px; } .sbi-fb-srcs-info-item span { font-size: 13px; line-height: 1.5em; color: #434960; font-weight: 400; display: inline-block; word-break: break-all; width: calc(100% - 80px); padding: 0 15px; box-sizing: border-box; } /* Onboarding */ #sbi-builder-app .sb-onboarding-tooltip { display: none; position: absolute; min-height: auto; width: 460px; max-width: 100%; padding: 0; border-radius: 2px; z-index: 9999; } #sb-onboarding-tooltip-multiple-2, #sb-onboarding-tooltip-multiple-3{ width: 528px; } #sb-onboarding-tooltip-single-2 { width: 402px; } .sb-onboarding-active .sb-onboarding-highlight .sbi-fb-btn.sbi-fb-btn-new, .sb-onboarding-active .sb-positioning-wrap.sb-onboarding-highlight, .sb-onboarding-active .sbi-fd-lst-bigctn .sbi-table-wrap.sb-onboarding-highlight, .sb-onboarding-active .sbi-fb-lgc-ctn.sb-onboarding-highlight, .sb-onboarding-active .sbi-fb-lgc-ctn .sbi-legacy-table-wrap.sb-onboarding-highlight, .sb-onboarding-active .sb-customizer-sidebar-tab.sb-onboarding-highlight, .sb-onboarding-active .sbi-fb-header.sb-onboarding-highlight{ position: relative; z-index: 100000; } .sb-onboarding-active .sbi-fd-legacy-feed-toggle { display: none; } .sbi-legacy-table-wrap.sb-onboarding-highlight { clear: both; } #sbi-builder-app .sb-onboarding-tooltip-1 { top: 50px; left: 8px; } #sb-onboarding-tooltip-single-2 { bottom: -179px; top: auto; left: 68%; margin-left: -201px; } #sb-onboarding-tooltip-multiple-2, #sb-onboarding-tooltip-multiple-3{ top: -200px; left: 20%; } #sb-onboarding-tooltip-multiple-3 { top: -210px; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-wrapper { display: flex; justify-content: flex-end; } #sbi-builder-app .sb-positioning-wrap { width: 432px; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-popup-cls { position:absolute; width: 12px; height: 12px; top: 12px; right: 12px; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-popup-cls svg { width: 12px; height: 12px; } #sbi-builder-app .sb-onboarding-tooltip h3 { font-size: 16px; color: #141B38; line-height: 160%; font-weight: 600; margin: 0; } #sbi-builder-app .sb-onboarding-step { font-style: normal; font-weight: normal; font-size: 13px; line-height: 160%; color: #434960; margin: 2px 0 20px; display: block; } .sbi-onboarding-next, .sbi-onboarding-previous{ color: #353A41; background: #F3F4F5; border: 1px solid #DCDDE1; margin-left: 10px; } .sbi-onboarding-previous[data-active=false]{ pointer-events: none; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-hd-btn { margin-right: 0; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-hd-btn i { margin: 0; } .sbi-onboarding-finish{ margin-left: 10px; padding: 0 32px; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-hd-btn[data-active="false"] { background-color: #e8e8eb; color: #8c8f99; } #sbi-builder-app .sb-onboarding-tooltip .sbi-fb-hd-btn[data-active="false"]:hover { cursor: default; } .sb-step-counter-wrap span { font-style: normal; font-weight: bold; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; color: #141B38; } #sbi-builder-app .sb-onboarding-tooltip .sb-pointer { position: absolute; left: 50px; top: -10px; } #sbi-builder-app .sb-pointer.sb-bottom-pointer { top: auto; bottom: -14px; } #sb-onboarding-tooltip-single-2 .sb-pointer { left: 193px; } #sb-onboarding-tooltip-multiple-2:before, #sb-onboarding-tooltip-multiple-3:before{ bottom: -8px; } #sbi-builder-app .sb-onboarding-top-row { padding: 20px 44px 0 24px; } #sbi-builder-app .sb-onboarding-bottom-row { display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 8px 16px 12px 24px; } #sbi-builder-app #sb-onboarding-tooltip-customizer-1 { position:absolute; right: 210px; left: auto; top: 84px; } #sbi-builder-app #sb-onboarding-tooltip-customizer-1 .sb-pointer { right: 110px; left: auto; } .sb-customizer-sidebar.sb-onboarding-highlight { z-index: 9999; overflow: visible; } #sb-onboarding-tooltip-customizer-2, #sb-onboarding-tooltip-customizer-3 { z-index: 100000; top: 80px; } #sb-onboarding-tooltip-customizer-3 { left: 171px; } #sbi-builder-app #sb-onboarding-tooltip-customizer-3 .sb-pointer{ left: 100px; } .sb-onboarding-active .sb-customizer-sidebar-tab-ctn, .sb-onboarding-active .sb-customizer-sidebar-sec-ctn, .sb-onboarding-active .sbi-csz-header .sbi-csz-header-insider{ /*pointer-events: none !important;*/ } /* Misc Tooltip */ .sbi-not-sure-tooltip { left: -360px; top: -110px; } .sbi-not-sure-tooltip .sb-pointer { bottom: -17px !important; left: 390px; } .sbi-not-sure-tooltip { display: none; } .sbi-not-sure-tooltip-icon:hover .sbi-not-sure-tooltip { display: block; padding: 12px 16px 16px; width: 400px; } /* Add new Source Popup */ .sbi-fb-popup-cls{ height: 14px; width: 14px; position: absolute; cursor: pointer; right: 17px; top: 17px; z-index: 3; } .sbi-fb-center-boss{ display: flex; justify-content: center; align-items: center; } .sbi-fb-left-boss{ display: flex; justify-content: left; align-items: center; } .sbi-fb-embed-popup,.sbi-fb-dialog-popup{ width: 575px; } .sbi-fb-dialog-popup{ min-height: 250px; } .sbi-fb-source-pp-customizer .sbi-fb-srcslist-ctn{ grid-template-columns: 32.7% 32.7% 32.7%; grid-column-gap: 1%; } .sbi-fb-srcs-desc{ width: 55%; font-style: normal; font-weight: normal; font-size: 14px; line-height: 160%; color: #434960; box-sizing: border-box; margin-bottom: 29px; } #sbi-builder-app .sbi-fb-source-pp-customizer h3{ margin-bottom: 6px; } #sbi-builder-app .sbi-fb-embed-popup h3 { padding: 23px 25px 0; margin-bottom: 0; } #sbi-builder-app .sbi-fb-embed-popup .sbi-fb-embed-step-2 h3 { padding: 0 0 0 29px; } .sbi-fb-feedtypes-popup h5{ font-size: 26px; padding: 0 20px; margin-top: 25px; margin-bottom: 30px; } .sbi-fb-feedtypes-pp-ctn .sbi-fb-adv-types .sbi-fb-types-list{ margin-bottom: 30px !important } .sbi-fb-feedtypes-popup .sbi-fb-types, .sbi-fb-feedtypes-popup .sbi-fb-adv-types { padding: 0; } .sbi-fb-source-top{ padding: 22px 19px 28px; } #sbi-builder-app .sbi-fb-source-step1 .sbi-fb-source-top h3{ margin-bottom: 40px; } #sbi-builder-app .sbi-fb-source-step3 .sbi-fb-source-top h3 { margin-bottom: 30px; } #sbi-settings .sbi-fb-source-step4 .sbi-fb-stp1-elm-desc { max-width: 470px; margin-bottom: 26px; } #sbi-settings .sb-step-text { color: #434960; } .sbi-fb-srcs-update{ background: var(--cl-orange); font-weight: 600; font-size: 14px; line-height: 160%; height: 38px; } .sbi-fb-srcs-update svg{ margin-right: 10px; } .sbi-fb-srcs-update-footer{ display: flex; align-items: center; border-top: 1px solid #DCDDE1; background: #F9F9FA; } .sbi-fb-srcs-update-footer-txt{ font-size: 18px; line-height: 1.7em; } .sbi-fb-srcs-update-footer-btn{ } #sbi-builder-app .sbi-fb-srcs-update-footer-btn a{ height: 48px; padding: 0 20px 0 24px; } .sbi-fb-srcs-update-footer-image{ width: 26%; margin-right: 7%; } #sbi-builder-app .sbi-fb-srcs-update-footer-btn a svg { position: relative; top: auto; right: auto; width: auto; height: auto; margin-left: 15px; } .sbi-fb-srcs-update-footer-image svg{ width: 100%; height: auto; float: left; } .sbi-fb-srcs-update-footer-txt{ box-sizing: border-box; display: flex; justify-content: center; width: 38%; margin-right: 7%; } .sbi-fb-stp1-elm{ margin-bottom: 20px; float: left; display: flex; } .sbi-fb-source-top .sbi-fb-stp1-elm:first-of-type{ justify-content: center; align-items: center; padding-bottom: 24px; border-bottom: 1px solid #D0D1D7; } .sbi-fb-stp1-event{ padding-bottom: 0px!important; border-bottom: none!important; padding-right: 11%; align-items: flex-start!important; } .sbi-fb-stp1-elm-desc > a{ font-weight: 600; text-decoration: underline; color: #2A65DB; } .sbi-fb-stp-src-ctn{ display: flex; justify-content: center; align-content: center; } #sbi-builder-app .sbi-fb-stp-src-type{ display: flex; justify-content: center; align-content: center; font-size: 13px; font-weight:400; cursor: pointer; margin-left: 20px; color: #434960; } .sbi-fb-stp-src-type .sbi-fb-chbx-round{ margin-right: 8px; margin-top: 2px; } .sbi-fb-stp-src-type[data-active="true"]{ font-weight:600; color: #141B38; } .sbi-fb-stp1-elm-ic{ width: 28px; height: 28px; border-radius: 35px; background: #F3F4F5; display: flex; justify-content: center; align-items: center; font-weight: 500; flex: none; transform: translate(0, -2px); } .sbi-fb-stp1-elm-txt{ margin-left: 16px; margin-right: 21%; width: 100%; } .sbi-fb-stp1-elm-head{ font-size: 14px; font-weight: 600; color: #141B38; } .sbi-fb-stp1-elm-desc{ font-size: 13px; margin-top: 4px; line-height: 150%; color: #888a8e; } .sbi-fb-stp1-event .sbi-fb-stp1-elm-desc { margin-top: 4px; } .sbi-fb-stp1-elm-act .sb-btn.sbi-fb-stp1-connect{ padding: 8px 20px 8px 40px; background: #0068A0; position: relative; font-style: normal; font-weight: 600; font-size: 14px; line-height: 160%; } .sbi-fb-stp1-connect svg{ position: absolute; top: 10px; right: 0; bottom: 0; left: 13px; width: 17px; fill: currentColor; } .sbi-fb-stp1-connect path{ fill: currentColor; } .sbi-fb-source-bottom{ padding: 18px 20px; background: #F3F4F5; display: flex; align-items: center; border-radius: 0 0 2px 2px; } .sbi-manual-question { display: flex; align-items: center; } .sbi-manual-question svg{ margin-right: 23px; float: left; } .sbi-fb-source-btm-hd{ font-size: 14px; font-weight: 500; } .sbi-fb-src-add-manual{ margin-left: auto; padding: 8px 20px 8px 40px; } .sbi-fb-src-add-manual svg{ position: absolute; top: 11px; right: 0; bottom: 0; left: 13px; fill: currentColor; } #sbi-builder-app .sbi-fb-source-step2 .sbi-fb-source-top h3 { margin-bottom: 35px; } #sbi-builder-app .sbi-fb-source-step4 .sbi-fb-source-top h3, #sbi-builder-app .sbi-fb-source-step4 .sbi-fb-source-top h4{ margin-bottom: 8px; } #sbi-builder-app .sbi-fb-source-step4 .sbi-fb-stp1-elm-desc { max-width: 470px; margin-bottom: 26px; } .sbi-fb-src-add-manual i{ font-size: 12px; margin-right: 10px; } .sbi-fb-src-back-top{ float: left; font-style: normal; font-weight: 600; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; cursor: pointer; color: #141B38; margin-bottom: 10px; display: flex; justify-content: center; align-items: center; } .sbi-fb-src-back-top svg{ margin-left: 6px; margin-right: 10px; } .sbi-fb-source-account-info{ background: #F3F4F5; padding: 6px 6px 6px 12px; display: flex; align-items: center; } .sbi-fb-source-list{ display: grid; grid-template-columns: 49.4% 49.4%; grid-column-gap: 1.2%; margin-top: 8px; } .sbi-fb-source-popup.sbi-fb-popup-inside .sbi-fb-srcs-item { box-sizing: border-box; margin: 1.2% 0; } .sbi-fb-source-account-info img{ width: 23px; height: 23px; border-radius: 23px; background: #fafafa; margin-left: 10px; margin-right: 10px; } .sbi-fb-source-account-info strong{ color: #141B38; } .sbi-fb-src-change{ padding: 7px 20px 7px 40px; margin-left: auto; } .sbi-fb-src-change svg{ position: absolute; top: 11px; right: 0; bottom: 0; left: 13px; fill: currentColor; } .sbi-fb-source-btn{ margin-top: 10px; color: #fff; display: flex; justify-content: center; align-items: center; background: #0068A0; cursor: pointer; padding: 8px 20px; line-height: 160%; border-radius: 2px; font-size: 14px; font-weight: 500; border: none; text-decoration: none; } #sbi-builder-app .sbi-fb-source-step3 .sbi-fb-source-btn { margin-top: 45px; } #sbi-builder-app .sbi-fb-source-step3 .sbi-fb-src-back-top { margin-bottom: 4px; } .sbi-fb-icon-success{ position: relative; width: 30px; height: 20px; margin-right: 10px; } .sbi-fb-icon-success:before{ content: ''; position: absolute; width: 13px; height: 5px; top: 4px; border-left: 3px solid currentColor; border-bottom: 3px solid currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-fb-icon-cancel{ position: relative; width: 25px; height: 25px; margin-right: 10px; } .sbi-fb-icon-cancel:before, .sbi-fb-icon-cancel:after{ content: ''; position: absolute; width: 17px; height: 2px; top: 12px; left: 5px; background: currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-fb-icon-cancel:after{ -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sbi-fb-source-inp-label,.sbi-fb-wh-label{ font-size: 14px; color: #434960; } .sbi-fb-source-mnl-type .sbi-fb-stp-src-ctn{ justify-content: flex-start; margin-bottom: 22px; margin-top: 8px; } #sbi-builder-app .sbi-fb-source-mnl-type .sbi-fb-stp-src-ctn .sbi-fb-stp-src-type{ margin-left: 0; margin-right: 32px } .sbi-fb-source-inp,.sbi-fb-wh-inp{ border-radius: 0px !important; outline: none ; margin-top: 2px; border: 1px solid #D0D1D7 !important; margin-bottom: 20px; height: 38px; line-height: 38px; } .sbi-fb-source-popup h1 { font-style: normal; font-weight: 600; font-size: 36px; line-height: 125%; color: #141B38; margin: 0; } .sbi-fb-source-popup h2 { font-style: normal; font-weight: 600; font-size: 32px; line-height: 125%; margin: 0; } .sbi-fb-source-popup h3 { font-style: normal; font-weight: 600; font-size: 24px; line-height: 120%; margin: 0 0 40px 0; letter-spacing: 0; } .sbi-fb-source-popup h4 { font-style: normal; font-weight: 600; font-size: 18px; line-height: 140%; margin: 0 0 4px 0; } .sbi-fb-slctf-back svg, .sbi-fb-slctf-nxt svg, .sbi-fb-source-btn-next svg{ width: 6px; height: 10px; } .sbi-fb-source-btn-next span { display: inline-block; margin-right: 15px; line-height: 160%; } .sb-single-step { display: flex; align-items: center; margin-bottom: 16px; } .sb-step-number { display: flex; align-items: center; justify-content: center; background: #F3F4F5; border-radius: 30px; width: 24px; height: 24px; margin-right: 16px; } #sbi-builder-app .sb-step-text { color: #434960; } .sb-two-buttons-wrap { box-sizing:border-box; float: left; display: flex; justify-content: center; align-items: center; width: 100%; padding: 0 19px 28px; } .sb-two-buttons-wrap .sbi-fb-source-btn { margin-top: 0; } .sbi-fb-source-step4 .sbi-fb-source-top { padding: 24px 54px 32px; text-align: center; } .sb-two-buttons-wrap > button:first-of-type { margin-right: 12px; } .sb-two-buttons-wrap .sb-question-circle { margin-right: 9px; } #sbi-group-app-tooltip{ cursor: pointer; } .sbi-group-app-screenshot{ display: none; position: absolute; bottom: 92px; left: 50%; margin-left: -325px; z-index: 10; border: 1px solid rgba(0,0,0,0.3); box-shadow: 0 0 0 5000px rgb(0 0 0 / 20%); border-radius: 5px; } #sbi-group-app-tooltip:hover .sbi-group-app-screenshot{ display: block !important; } .sbi-fb-source-btn[data-active = false] { pointer-events: none !important; } .sbi-fb-source-btn[data-active = false] svg path{ fill: #8C8F9A !important; } .sb-directions-p { margin-bottom: 40px; } .sbi-fb-srcs-item-avatar{ display: flex; width: 42px; height: inherit; justify-content: center; align-items: center; } .sbi-fb-srcs-item-avatar img{ width: 36px; height: 36px; border-radius: 50%; background: #eee; } .sbi-fb-srcs-item-inf{ width: 100%; height: inherit; display: flex; justify-content: center; flex-direction: column; } .sbi-fb-srcs-item-name{ font-weight: 600; } .sbi-fb-srcs-item-name-event{ font-size: 10px; font-weight: 500; color: #777; } .sbi-fb-srcs-item-type{ color: #434960; font-weight: 600; text-transform: uppercase; display: flex; align-items: center; } .sb-source-error-wrap { display: flex; justify-content: left; align-items: center; margin-left: 9px; } .sb-source-error-wrap span { font-weight: 600; font-size: 12px; line-height: 160%; color: #D72C2C; margin-left: 5px; } .sbi-fb-source-popup .sb-source-error-wrap { margin-left: 0; } .sb-source-error-wrap a { margin-left: 8px; font-weight: 600; font-size: 12px; line-height: 160%; text-decoration-line: underline; color: #0068A0; } .sb-is-group .sb-details-wrap { position: relative; display: flex; align-items: center; padding: 2px 6px 2px 22px; background: #F3F4F5; border-radius: 2px; } .sb-highlight-admin .sb-details-wrap { padding: 2px 6px 2px 17px; background: #E2F5FF; color: #0068A0; } .sb-highlight-admin span { color: #0068A0; } .sbi-fb-srcs-item-type i{ margin-right: 5px; } .sbi-fb-srcs-item-type svg{ float: left; margin-right: 5px; fill: currentColor; height: 8px; } .sb-has-details .sbi-fb-srcs-item-type svg{ position: absolute; top: 5px; right: 0; bottom: 0; left: 5px; height: 9px; } .sb-has-details .sbi-fb-srcs-item-type.sb-highlight-admin svg { top: 6px; } [data-type="page"] .sbi-fb-srcs-item-type svg{ height: 9px; } .sbi-fb-srcs-back{ margin-right: auto; } .sbi-groups-connect-actions { float: left; } .sb-alert, .sbi-error-ctn .sb-alert{ position: relative; margin: 0 0 38px; padding: 12px 12px 12px 44px; word-break: break-word; background: #FFEFCC } .sbi-connection-error .sb-alert { margin: 20px; } .sbi-connect-actions .sbi-fb-source-btn { margin-top: 0; } .sbi-connect-actions { float: left; } .sbi-connect-actions.sb-alerts-wrap .sb-alert { clear: left; } .sb-alerts-wrap .sb-alert svg, .sb-alert svg, .sbi-error-ctn .sb-alert svg{ position: absolute; top: 13px; left: 13px; } .sb-alert span, .sbi-error-ctn .sb-alert span{ color: #995C00; } #sbi-builder-app .sb-alert span a, .sbi-error-ctn .sb-alert span a{ color: #663D00; font-weight: 600; text-decoration: underline; } #sbi-settings .sbi-fb-source-step1.sbi-has-alert .sbi-fb-source-top h3 { margin-bottom: 12px; } .sbi-groups-connect-actions .sbi-fb-source-btn { margin-top: 0; } /* Install Plugin Modal on Select Source Flow */ .sbi-install-plugin-modal { max-width: 580px; } .sbi-install-plugin-body .sbi-install-plugin-header { height: 106px; background: #F3F4F5; padding: 20px; display: flex; box-sizing: border-box; flex-wrap: wrap; align-items: center; } .sbi-install-plugin-body .sbi-install-plugin-header .sb-plugin-image { background-color: #fff; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); border-radius: 2px; padding: 15px; max-height: 66px; box-sizing: border-box; margin-right: 24px; } .sbi-install-plugin-body .sbi-install-plugin-header h3 { font-size: 18px !important; line-height: 25px !important; display: flex; align-items: center; } .sbi-install-plugin-body .sbi-install-plugin-header h3 span { color: #fff; background: #59AB46; border-radius: 2px; font-size: 10px; line-height: 16px; letter-spacing: 0.08em; text-transform: uppercase; padding: 0px 6px; margin-left: 10px; } .sbi-install-plugin-body .sbi-install-plugin-header p { display: flex; font-size: 12px; line-height: 18px; color: #434960; margin: 5px 0 0 0; } .sbi-install-plugin-body .sbi-install-plugin-header p .sb-author-logo { margin-right: 8px; } .sbi-install-plugin-body .sbi-install-plugin-content { padding: 20px 20px 32px 107px; } .sbi-install-plugin-body .sbi-install-plugin-content p { margin: 0px; font-size: 14px; line-height: 22px; color: #434960; padding-right: 20px; } .sbi-install-plugin-body .sbi-install-plugin-content .sbi-install-plugin-btn { display: flex; align-items: center; justify-content: center; height: 38px; padding: 8px 20px; box-sizing: border-box; transition: all .15s ease-in-out; border-radius: 2px; width: 100%; margin-top: 28px; border: none; font-size: 14px; font-weight: 600; line-height: 160%; cursor: pointer; } .sbi-install-plugin-body .sbi-install-plugin-content .sbi-btn-orange:disabled { color: #8C8F9A !important; background: #E8E8EB !important; cursor: not-allowed; } .sbi-install-plugin-body .sbi-install-plugin-content .sbi-install-plugin-btn span { height: 20px; width: 20px; margin-right: 5px; } .sbi-fb-mr-fd-list button { cursor: pointer; display: flex; justify-content: space-between; } /* Tooltips */ .sb-control-elem-tltp{ margin-left: 10px; position: relative; } .sb-control-elem-tltp-icon{ float: left; cursor: pointer; } .sb-control-elem-tltp-icon svg{ width: 14px; float: left; } @media (min-width: 768px) and (max-width: 1079px) { .sbi-fb-mr-fd-img { width: 37%; } .sbi-fb-mr-fd-list button:not(:last-child) { margin-bottom: 8px; } } @media (min-width: 768px) and (max-width: 1023px) { .sbi-fb-srcslist-ctn, .sbi-fb-source-pp-customizer .sbi-fb-srcslist-ctn { grid-template-columns: 49.2% 49.2%; gap: 2%; margin-top: 8px; } .sbi-fb-slctfd-action { width: 100%; } .sbi-fb-srcs-item { margin-top: 3px; } .sbi-manual-question { max-width: 390px; } .sbi-fb-feedtypes-popup { left: 0; max-width: calc(100% - 60px); } .sbi-fb-feedtypes-pp-ctn.sbi-fb-center-boss { top: 40px; } } @media (max-width: 767px) { .sbi-fb-feedtypes-pp-ctn.sbi-fb-center-boss { align-items: baseline; } .sbi-fb-feedtypes-popup { max-width: calc(100% - 40px); top: 50px; } #sbi-builder-app .sb-positioning-wrap { width: 130px; } .sbi-fb-embed-popup, .sbi-fb-dialog-popup { width: 100%; max-width: calc(100% - 40px); } .sbi-fb-popup-inside { left: 0; } .sbi-fb-extensions-pp-ctn .sbi-fb-popup-inside.sbi-fb-extensions-popup, .sbi-fb-source-ctn .sbi-fb-popup-inside { max-width: calc(100% - 40px); } .sbi-fb-source-ctn.sbi-fb-center-boss, .sbi-fb-extensions-pp-ctn.sbi-fb-center-boss{ align-items: baseline; } .sbi-fb-extensions-pp-ctn.sbi-fb-center-boss .sbi-fb-popup-inside{ top: 50px; } .sbi-extension-bullet-list { grid-template-columns: 100%; } .sbi-fb-extpp-bottom { padding: 20px; } .sbi-fb-extpp-info { width: 100%; padding-right: 20px; padding-left: 20px; } .sbi-fb-extpp-img { display: none; } .sbi-fb-extpp-top { height: 195px; } .sbi-fb-source-pp-customizer .sbi-fb-srcslist-ctn { grid-template-columns: 99.2%; gap: 2%; margin-bottom: 50px; } .sbi-fb-source-account-info { flex-wrap: wrap; } .sbi-fb-source-account-info > span { width: 100%; } .sbi-fb-source-account-info img { margin-left: 0; } .sbi-fb-source-btn { margin-top: 25px; } .sbi-fb-source-bottom { flex-wrap: wrap; margin-top: 0; } .sbi-fb-src-add-manual { margin-left: 0; margin-top: 15px; } .sbi-fb-types-list { grid-template-columns: 100%; } .sbi-fb-types-list .sbi-fb-type-el { margin-bottom: 10px; } .sbi-fb-create-ctn { margin-top: 90px; padding: 0 20px 65px; } #sbi-builder-app h1 { font-size: 32px; } .sbi-fb-social-wall-between, .sbi-fb-social-wall-end { display: none; } .sbi-graphic-row-main { justify-content: space-between; } .sbi-fb-slctfd-action { width: 100%; } .sbi-fb-mr-feeds { flex-wrap: wrap; margin-bottom: 60px; } .sbi-fb-mr-feeds .sbi-fb-mr-fd-content, .sbi-fb-slctsrc-content, .sbi-fb-section-wh-insd, .sbi-fb-types, .sbi-fb-adv-types { padding: 20px; } .sbi-fb-source-ctn .sbi-fb-popup-inside.sbi-install-plugin-modal { top: 0; } .sbi-fb-mr-fd-list button:not(:last-child) { margin-bottom: 8px; } .sbi-fb-srcs-item { margin-top: 3px; } #sbi-builder-app h2 { font-size: 26px; } .sbi-fb-srcs-desc { width: 100%; } .sbi-fb-source-list { grid-template-columns: 99%; } .sb-dialog-ctn.sbi-fb-center-boss .sbi-fb-popup-inside { max-width: calc(100% - 40px); } } @media (max-width: 480px) { .sbi-fb-source-ctn .sbi-fb-popup-inside { top: 45px; margin-bottom: 46px; } .sbi-csz-header-insider .sb-button-standard { font-size: 13px; padding: 8px 15px 8px 34px; } .sbi-csz-header-insider .sb-button-standard svg { width: 13px; height: 13px; left: 14px; top: 10px; } .sbi-fb-header.sbi-csz-header { height: 126px; } .sbi-csz-hd-name { height: 30px; margin-top: 5px; } .sb-customizer-ctn .sb-customizer-sidebar { margin-top: 120px; } .sb-fs-boss.sbi-fb-center-boss { overflow: scroll; } .sbi-fb-stp1-elm { flex-wrap: wrap; } .sbi-fb-stp1-elm-txt { margin-right: 0%; width: calc(100% - 50px); } .sbi-fb-stp1-elm .sbi-fb-stp-src-ctn.sbi-fb-stp1-elm-act { margin-left: 24px; } .sbi-fb-stp1-elm .sbi-fb-stp1-elm-act { margin-top: 10px; margin-left: 42px; } } .sb-control-elem-tltp-content{ position: fixed; background: #fff; padding: 8px 11px; text-align: center; line-height: 1.5em; top: 0; left: 0; z-index: 999999999; -webkit-transform: translateX(-50%) translateY(-100%); transform: translateX(-50%) translateY(-100%); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.19); } .sb-control-elem-tltp-content:before{ content: ''; position: absolute; left: 50%; bottom: -10px; border-top: 12px solid #fff; border-right: 12px solid transparent; border-left: 12px solid transparent; -webkit-transform: translateX(-50%); transform: translateX(-50%); z-index: 2; } .sb-control-elem-tltp-content:after{ content: ''; position: absolute; left: 50%; bottom: -12px; margin-left: 0px; border-top: 14px solid #eee; border-right: 15px solid transparent; border-left: 15px solid transparent; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .sb-control-elem-tltp:hover .sb-control-elem-tltp-content{ opacity: 1; visibility: visible; top: 24px; max-width: 300px; width: auto; } .sb-control-elem-tltp-txt{ position: relative; max-width: 300px; width: max-content; } .sb-control-elem-tltp-txt[data-align="left"]{ text-align: left!important; } .sb-tltp-black-link{ text-decoration: underline!important; color: #000; } /* Social Wall Links */ .sb-social-wall-link-wrap { display: flex; font-size: 14px; margin: 10px 0; } .sb-social-wall-link { padding: 0 12px; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link a { text-decoration: none; } .sb-social-wall-link:first-child { padding-left: 0; border-right: 1px solid #ccc; color: #0068A0!important; line-height: 1; } .sb-social-wall-link:last-child { border-right: none; } .sb-social-wall-link a:focus { outline: none; box-shadow: none; } /* Add Source Loading */ .sb-fb-source-redirect-ld{ text-align: center; } .sb-fb-source-redirect-ld div{ display: inline-block; width: 32px; height: 32px; border-radius: 50px; margin: 0 10px; position: relative; background-color: #0096CC; color: #0096CC; -webkit-animation: sb-source-redirect 1s infinite linear alternate; animation: sb-source-redirect 1s infinite linear alternate; -webkit-animation-delay: .5s; animation-delay: .5s; } .sb-fb-source-redirect-ld div:before, .sb-fb-source-redirect-ld div:after{ content: ''; display: inline-block; position: absolute; top: 0; } .sb-fb-source-redirect-ld div:before{ left: -45px; width: 32px; height: 32px; border-radius: 50px; background-color: #0096CC; color: #0096CC; -webkit-animation: sb-source-redirect 1s infinite alternate; animation: sb-source-redirect 1s infinite alternate; -webkit-animation-delay: 0s; animation-delay: 0s; } .sb-fb-source-redirect-ld div:after{ left: 45px; width: 32px; height: 32px; border-radius: 50px; background-color: #0096CC; color: #0096CC; -webkit-animation: sb-source-redirect 1s infinite alternate; animation: sb-source-redirect 1s infinite alternate; -webkit-animation-delay: 1s; animation-delay: 1s; } @-webkit-keyframes sb-source-redirect { 0% {background-color: #0096CC;} 50%,100% {background-color: #B5E5FF;} } @keyframes sb-source-redirect { 0% {background-color: #0096CC;} 50%,100% {background-color: #B5E5FF;} } .sb-fb-source-redirect-info{ text-align: center; margin-top: 50px; } .sb-fb-source-redirect-info strong{ font-size: 18px; } .sb-fb-source-redirect-info p{ color: #8C8F9A; padding: 0 24%; font-size: 16px; margin-bottom: 0px; } .sbi-fb-popup-inside[data-step="redirect_1"]{ width: 575px; height: 320px; display: flex; justify-content: center; align-items: center; } /*Personal Account Popup*/ .sbi-personal-account-ctn .sbi-source-account-box{ display: flex; justify-content: center; align-items: center; } .sbi-pers-account-icon{ width: 64px; height: 64px; display: flex; justify-content: center; align-items: center; border: 7px solid #bfe8ff; border-radius: 50%; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); } .sbi-pers-account-icon svg{ float: left; } .sbi-personal-account-ctn .sbi-fb-personal-step1 .sbi-fb-source-top { padding: 27px 54px 27px; text-align: center; } .sbi-fb-personal-step2 .sbi-fb-source-btn{ margin-right: 0px !important; } .sbi-personal-account-ctn button{ font-weight: 600; } .sbi-fb-personal-form{ text-align: left; padding-top: 25px; padding-bottom: 20px; } .sbi-fb-personal-step2 > *{ padding-left: 19px; padding-right: 19px; } .sbi-fb-personal-upload-btn{ margin-top: 12px; } .sbi-fb-personal-upload-btn button span{ padding: 0 5px; } .sbi-fb-personal-upload-btn button svg{ float: left; } .sbi-fb-personal-upload-btn input[type="file"]{ display: none; } .sbi-fb-personal-upload-btn > *{ display: inline-flex; margin-right: 7px!important; } .sbi-fb-personal-textarea{ margin-top: 16px; } .sbi-fb-personal-textarea > *{ width: 100%; float: left; } .sbi-fb-personal-textarea label{ font-size: 14px; color: #434960; margin-bottom: 10px; margin-top: 10px; } .sbi-fb-personal-textarea textarea{ height: 77px; border: 1px solid #D0D1D7; border-radius: 1px; padding: 8px 2px 2px 12px; outline: none; } /*** 7.0 Settings CTA ***/ .sbi-settings-cta { background-color: #fff; padding: 24px 20px 20px; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); margin-top: 12px; } .sbi-settings-cta .sbi-cta-title, .sbi-settings-cta .sbi-cta-head-inner { display: flex; } .sbi-settings-cta .sbi-cta-head-inner { justify-content: space-between; max-width: 820px; } .sbi-settings-cta .sbi-cta-head-inner .sbi-cta-btn a { display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 5px 12px 6px 20px; font-weight: 600; font-size: 14px; line-height: 160%; margin-top: 5px; } .sbi-settings-cta .sbi-cta-head-inner .sbi-cta-btn a svg { margin-left: 12px; width: 10px; } .sbi-settings-cta .sbi-plugin-title-bt { display: flex; } .sbi-settings-cta .sbi-plugin-title-bt .sbi-cta-btn { width: 177px; } .sbi-settings-cta .sbi-cta-title .sbi-plugin-logo { background: #FFFFFF; box-shadow: 0px 6.05242px 7.56552px rgba(0, 26, 119, 0.0415), 0px 3.39293px 4.24117px rgba(0, 26, 119, 0.04), 0px 1.80196px 2.25245px rgba(0, 26, 119, 0.0285), 0px 0.749837px 0.937296px rgba(0, 26, 119, 0.0337); border-radius: 2px; min-width: 60px; width: 65px; height: 65px; display: flex; justify-content: center; align-items: center; margin-right: 30px; border: 1px solid #ecebeb; } #sbi-builder-app .sbi-settings-cta .sbi-cta-title .sbi-plugin-logo{ width: 75px; height: 75px; } .sbi-settings-cta .sbi-cta-title .sbi-cta-discount-label { background: #FFEFCC; border-radius: 2px; padding: 0px 11px 0px 11px; font-weight: 600; font-size: 14px; line-height: 160%; color: #663D00; display: flex; flex-direction: row; justify-content: space-between; align-items: center; max-width: 445px; margin-top: 4px; box-sizing: border-box; margin-right: 10px; height: 35px; } #sbi-builder-app .sbi-settings-cta .sbi-cta-title .sbi-cta-discount-label svg { margin-right: 6px; } .sbi-settings-cta .sbi-cta-title .sbi-cta-discount-label svg path{ fill: #663D00; } #sbi-builder-app .sbi-settings-cta .sbi-cta-title .sbi-cta-discount-label { color: #663D00; background: #FFEFCC; } .sbi-settings-cta .sbi-cta-boxes { margin: 36px 0px 0px 7px; display: flex; background-color: #fff; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); border: 1px solid #E8E8EB; border-bottom: 0px solid transparent; max-width: 1170px; } .sbi-settings-cta .sbi-cta-box:not(:last-child) { border-right: 1px solid #E8E8EB; } .sbi-settings-cta .sbi-cta-box { padding: 16px 30px 16px 18px; display: flex; } .sbi-settings-cta .sbi-cta-box .sbi-cta-box-icon { margin-right: 24px; max-height: 50px; } .sbi-settings-cta .sbi-cta-box .sbi-cta-box-title { font-weight: 600; font-size: 14px; line-height: 140%; padding-top: 5px; } .sbi-settings-cta .sbi-cta-much-more{ display: flex; padding: 0 14px; flex-wrap: wrap; margin-top: 3px; justify-content: space-between; max-width: 1170px; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-left { width: 330px; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul { display: grid; grid-template-columns: 33% 33% 33%; grid-column-gap: 2%; padding-top: 10px; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-left h4 { font-weight: 600; font-size: 18px; line-height: 140%; color: #141B38; margin: 1.33em 0 !important; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul li { font-size: 14px; line-height: 160%; color: #434960; width: 260px; position: relative; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul li::before { background: #0096CC; width: 4px; height: 4px; content: ''; position: absolute; left: -19px; top: 10px; } .sbi-settings-cta .sbi-cta-try-demo { margin-top: 13px; max-width: 1180px; } .sbi-settings-cta .sbi-cta-try-demo a { width: 100%; justify-content: center; display: flex; align-items: center; vertical-align: middle; background: #F3F4F5; border: 1px solid #DCDDE1; box-sizing: border-box; border-radius: 2px; padding: 7px 20px; font-weight: 600; font-size: 14px; line-height: 22px; color: #141B38; letter-spacing: 0.2px; cursor: pointer; transition: all 0.15s ease-in-out; text-decoration: none; } .sbi-settings-cta .sbi-cta-try-demo a span svg { transform: translate(5px, 4px); } .sbi-settings-cta .sbi-cta-try-demo .sbi-btn span { margin-left: 9px; transform: translateY(1px); } .sbi-cta-toggle-features { background: #F3F4F5; width: 100%; display: flex; justify-content: center; padding: 5px 0 4px 15px; box-shadow: 0px 1px 2px rgb(0 0 0 / 5%), 0px 4px 5px rgb(0 0 0 / 5%); box-sizing: border-box; } .sbi-cta-toggle-features .sbi-cta-toggle-btn { font-weight: 600; font-size: 14px; line-height: 160%; border: none; background: none; display: flex; cursor: pointer; } .sbi-cta-toggle-features .sbi-cta-toggle-btn svg { transform: translateY(0px); margin-left: 4px; } @media (min-width: 1170px) and (max-width: 1540px) { .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul li { width: 240px; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-left { width: 220px; } } @media (min-width: 1170px) and (max-width: 1340px) { .sbi-settings-cta .sbi-cta-box .sbi-cta-box-icon { margin-right: 15px; } .sbi-settings-cta .sbi-cta-box { padding: 16px 15px 16px 15px; } } @media (max-width: 1300px) { .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul { grid-template-columns: 48% 48%; } } @media (max-width: 1170px) { .sbi-settings-cta .sbi-cta-boxes { flex-wrap: wrap; } .sbi-settings-cta .sbi-cta-boxes .sbi-cta-box { width: 50%; box-sizing: border-box; } .sbi-settings-cta .sbi-cta-box:not(:last-child) { border-right: none; } .sbi-settings-cta .sbi-cta-box:first-child, .sbi-settings-cta .sbi-cta-box:nth-child(2) { border-bottom: 1px solid #E8E8EB; } .sbi-settings-cta .sbi-cta-box:first-child, .sbi-settings-cta .sbi-cta-box:nth-child(3) { border-right: 1px solid #E8E8EB; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right { padding-left: 20px; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul { margin: 0; padding: 0; } } @media (max-width: 770px) { .sbi-settings-cta .sbi-cta-boxes .sbi-cta-box { width: 100%; align-items: center; } .sbi-settings-cta .sbi-cta-box { border: none; } .sbi-settings-cta .sbi-cta-box:not(:last-child) { border-bottom: 1px solid #E8E8EB; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-right ul { grid-template-columns: 100%; margin-top: 0px; } .sbi-settings-cta .sbi-cta-much-more .sbi-cta-mm-left h4 { margin-bottom: 10px !important; } .sb-tab-content .sb-tab-box .sbi-caching-pro-cta { padding: 8px 25px; } .sbi-settings-cta .sbi-cta-head-inner { flex-wrap: wrap; } .sbi-settings-cta .sbi-cta-title { margin-bottom: 20px; } .sbi-settings-cta .sbi-cta-btn { width: 100%; } .sbi-settings-cta .sbi-plugin-title-bt { flex-direction: column; } .sbi-plugin-title { width: 67%; } } @media (max-width: 580px) { .sbi-settings-cta .sbi-cta-title .sbi-plugin-logo { margin-right: 20px; } } /* Uncanny Automator Integration Popup */ .sbi-integration-popup-modal .sbi-integration-popup { width: 100%; max-width: 580px; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); border-radius: 8px; padding: 25px 0 0 0; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-content-header { text-align: center; padding: 0 100px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-content-header img { width: 226px; margin-bottom: -55px; } #sbi-settings .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-content-header h3 { font-weight: 600; font-size: 18px; line-height: 140%; text-align: center; color: #141B38; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-content-header p { font-weight: 400; font-size: 12px; line-height: 160%; text-align: center; color: #696D80; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-steps { margin-top: 16px; padding: 33px 43px 48px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step { background: #FFFFFF; border: 1px solid #E6E6EB; border-radius: 8px; padding: 21px 100px 27px 20px; position: relative; margin-bottom: 12px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-step-image { position: absolute; right: -7px; width: 170px; top: 17px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-setup-step .sbi-step-image { width: 186px; right: -1px; top: 8px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step h4 { font-weight: 600; font-size: 14px; line-height: 160%; color: #141B38; margin: 0; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step p { font-weight: 400; font-size: 12px; line-height: 160%; color: #696D80; margin-top: 0px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn { margin-top: 16px; border-radius: 4px; padding: 6px 8px; font-weight: 600; font-size: 12px; line-height: 160%; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn-install { background-color: #0068A0; color: #fff; box-shadow: 0px 2px 5px rgba(60, 66, 87, 0.12), 0px 1px 1px rgba(0, 0, 0, 0.08), inset 0px -1px 1px rgba(0, 0, 0, 0.12); transition: all .2s ease-in; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn-install:hover { background-color: #117db7; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn-install:disabled { background-color: #117db7 !important; color: white !important; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn svg { margin-right: 1px; width: 16px; height: 17px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn svg path { fill: white; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step .sbi-btn:disabled { background: #F9F9FA; color: #696D80; } @media (max-width: 768px) { .sbi-integration-popup-modal .sbi-integration-popup { width: calc(85% - 20px); left: 0px; } } @media (max-width: 600px) { .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-content-header { padding: 0 50px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-steps { padding: 33px 25px 48px; } .sbi-integration-popup-modal .sbi-integration-popup .sbi-popup-ua-integration-step { padding: 21px 94px 27px 20px; } }instagram-feed/admin/builder/assets/css/preview.css000064400000104570151435171370016453 0ustar00body{ overflow-x:hidden; } .sbi-preview-ctn .no-overflow{ overflow: hidden!important; } .sbi-preview-ctn .sbi-fb-fs{ width: 100%; position: relative; float: left; box-sizing: border-box; } .sbi-fullsize-link{ position: absolute; width: 100%; height: 100%; left: 0; top: 0; z-index: 9; cursor: pointer; } .sbi-feed-height{ overflow-x: hidden!important; } .sbi-preview-ctn h1, .sbi-preview-ctn h2, .sbi-preview-ctn h3, .sbi-preview-ctn h4, .sbi-preview-ctn h5, .sbi-preview-ctn h6{ padding: 0px; margin: 0px; line-height: 1em; } .sbi-preview-ctn h3, .sbi-preview-ctn h4, .sbi-preview-ctn h5, .sbi-preview-ctn h6, .sbi-preview-ctn p { float: left; width: 100%; clear: both; padding: 0; margin: 5px 0; line-height: 1.4; word-wrap: break-word; } /*Preview Sections Highlights*/ .sbi-preview-section{ opacity: 1; } .sbi-preview-section[data-dimmed="true"]{ opacity: 0.4; } .sbi-preview-ctn .sbi-preview-header-visual{ margin-bottom: 25px; } .sbi-preview-ctn .sbi-preview-header-cover{ overflow: hidden; height: 300px; } .sbi-preview-ctn .sbi-preview-header-cover img{ position: absolute; width: 100%; height: auto; left: 0px; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .sbi-preview-ctn .sbi-preview-header-likebox{ position: absolute; right: 10px; bottom: 10px; display: flex; align-items: center; justify-content: center; background: #eee; border-radius: 2px; padding: 3px 5px; color: #445790; } .sbi-preview-ctn .sbi-preview-header-likebox svg{ fill: currentColor; width: 18px; margin-right: 5px; float: left; } .sbi-preview-ctn .sbi-preview-header-likebox span{ font-size: 15px; line-height: 20px; } .sbi-preview-ctn .sbi-preview-header-info-ctn{ padding: 0 20px; } .sbi-preview-ctn .sbi-preview-header-avatar{ width: 100px; border-color: 3px; border: 2px solid #fff; margin-top: -25px; border-radius: 3px; position: absolute; left: 20px; } .sbi-preview-ctn .sbi-preview-header-avatar img{ width: 100%; border-radius: 3px; float: left; } .sbi-preview-ctn .sbi-preview-header-info{ padding-top: 10px; margin-left: 125px; } .sbi-preview-ctn .sbi-preview-header-text-h{ display: flex; align-items: center; line-height: 1em } .sbi-preview-ctn .sbi-header-text{ line-height: 1em!important; } .sbi-preview-ctn .sbi-preview-header-text-icon{ margin-right: 10px; } .sbi-preview-ctn .sbi-preview-header-text-icon svg{ float: left; } .sbi-preview-ctn .sbi-preview-header-name { display: inline-block; margin: 0 8px 0 0; padding: 0; font-size: 1.2em; line-height: 1.2em; } .sbi-preview-ctn .sbi-preview-header-bio{ margin: 3px 0 0 0; padding: 0; line-height: 1.2em; } /*Load More Button*/ .sbi-preview-ctn .sbi-preview-loadmore-ctn{ margin-bottom: 20px; } .sbi-preview-ctn .sbi-preview-loadmore-btn{ display: flex; justify-content: center; align-items: center; cursor: pointer; min-height: 45px; padding: 5px 0; margin: 10px 0 0 0; line-height: 1em; font-size: 15px; border: none; background: #eee; background: rgba(0,0,0,0.05); width: 100%; position: relative; text-align: center; box-sizing: border-box; outline: none; text-decoration: none; -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; -moz-transition: background 0.1s ease-in-out; -webkit-transition: background 0.1s ease-in-out; -o-transition: background 0.1s ease-in-out; transition: background 0.1s ease-in-out; } .sbi-preview-ctn .sbi-preview-loadmore-btn:hover { background: #ddd; background: rgba(0,0,0,0.1); text-decoration: none; -moz-transition: background 0.1s ease-in-out; -webkit-transition: background 0.1s ease-in-out; -o-transition: background 0.1s ease-in-out; transition: background 0.1s ease-in-out; } /*Post List Layout*/ /* Masonry Layout */ /* [data-feed-layout="masonry"] .sbi-post-item-ctn{ margin: 0px!important; } [data-feed-layout="masonry"]{ display: grid; grid-gap: 20px; grid-auto-rows: 0; } [data-feed-layout="masonry"][data-feed-columns="1"]{ grid-template-columns: repeat(1, minmax(100px,1fr)); } [data-feed-layout="masonry"][data-feed-columns="2"]{ grid-template-columns: repeat(2, minmax(100px,1fr)); } [data-feed-layout="masonry"][data-feed-columns="3"]{ grid-template-columns: repeat(3, minmax(100px,1fr)); } [data-feed-layout="masonry"][data-feed-columns="4"]{ grid-template-columns: repeat(4, minmax(100px,1fr)); } [data-feed-layout="masonry"][data-feed-columns="5"]{ grid-template-columns: repeat(5, minmax(100px,1fr)); } [data-feed-layout="masonry"][data-feed-columns="6"]{ grid-template-columns: repeat(6, minmax(100px,1fr)); } */ [data-feed-layout="masonry"] .sbi-post-item-ctn{ height: auto!important; } [data-feed-layout="masonry"][data-feed-columns="1"] .sbi-post-item-ctn{ width: 100%; } [data-feed-layout="masonry"][data-feed-columns="2"] .sbi-post-item-ctn{ width: 47%; margin: 8px 1.5%; } [data-feed-layout="masonry"][data-feed-columns="3"] .sbi-post-item-ctn{ width: 30.33%; margin: 8px 1.5%; } [data-feed-layout="masonry"][data-feed-columns="4"] .sbi-post-item-ctn{ width: 22%; margin: 8px 1.5%; } [data-feed-layout="masonry"][data-feed-columns="5"] .sbi-post-item-ctn{ width: 17%; margin: 8px 1.5%; } [data-feed-layout="masonry"][data-feed-columns="6"] .sbi-post-item-ctn{ width: 13.516%; margin: 8px 1.5%; } [data-feed-layout="masonry"] .sbi-media-item-ctn .sbi-media-item-image-real{ height: 100%; position: absolute; width: 100%; left: 0; top: 0; bottom: 0; right: 0; } [data-feed-layout="masonry"] .sbi-media-item-ctn .sbi-media-item-image-poster{ opacity: 0; } /* Grid Layout */ [data-feed-layout="grid"]{ display: grid; grid-gap: 20px; } [data-feed-layout="grid"][data-feed-columns="1"]{ grid-template-columns: repeat(1, minmax(100px,1fr)); } [data-feed-layout="grid"][data-feed-columns="2"]{ grid-template-columns: 1fr 1fr; } [data-feed-layout="grid"][data-feed-columns="3"]{ grid-template-columns: repeat(3, minmax(100px,1fr)); } [data-feed-layout="grid"][data-feed-columns="4"]{ grid-template-columns: repeat(4, minmax(100px,1fr)); } [data-feed-layout="grid"][data-feed-columns="5"]{ grid-template-columns: repeat(5, minmax(100px,1fr)); } [data-feed-layout="grid"][data-feed-columns="6"]{ grid-template-columns: repeat(6, minmax(100px,1fr)); } [data-feed-layout="grid"] .sbi-post-item-ctn{ overflow: hidden; margin: 0px!important } [data-feed-layout="grid"] .sbi-post-item-ctn .sbi-post-grid-image{ position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; bottom: 0px; right: 0px; background-size: cover !important; background-position: center center !important; } [data-feed-layout="grid"] .sbi-photos-item-ctn img{ opacity: 0 } [data-feed-layout="grid"] .sbi-singlemedia-item.sbi-albums-item-ctn .sbi-albums-item-cover{ height: calc(100% - 70px); left: 0; top: 0; right: 0; } [data-feed-layout="grid"] .sbi-albums-item-ctn .sbi-post-item-content{ height: inherit; } .sbi-preview-ctn .sbi-media-item-ctn{ background: none!important; } .sbi-preview-ctn .sbi-singlemedia-item{ background: none!important; padding: 0px!important } [data-feed-layout="list"] .sbi-post-item-ctn{ height: auto!important; } /*Post Single Item*/ .sbi-post-item-info-ctn{ display: flex; align-items: center; margin-bottom: 15px; padding: 0; line-height: 1.2; width: 100%; } .sbi-post-item-info{ float: left; padding: 3px 0 0 0; font-size: 14px; font-weight: bold; line-height: 1.2; } .sbi-post-item-date{ color: #9197a3; font-weight: normal; font-size: 11px; margin-top: 1px !important; margin-bottom: 0px !important; } .sbi-post-item-avatar, .sbi-post-item-avatar img{ width: 45px; height: 45px; border-radius: 50px; } .sbi-post-item-avatar{ margin-right: 10px; } .sbi-post-item-author-name{ font-weight: bold; } .sbi-post-item-story{ font-weight: normal; font-size: 14px; padding: 3px 0 0 0; line-height: 1.2; } .sbi-preview-ctn .sbi-post-item-ctn{ width: 100%; float: left; position: relative; box-sizing: border-box; padding: 15px; margin: 8px 0; } .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="half"] .sbi-post-item-sides, .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="half"][data-post-type="links"] .sbi-post-item-link-ctn{ display: grid!important; grid-template-columns: calc(50% - 15px) calc(50% - 15px); grid-column-gap: 30px; } .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="half"][data-post-type="links"] .sbi-post-item-sides{ display: flex; flex-direction: column-reverse; } .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="thumb"] .sbi-post-item-sides, .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-link-ctn{ display: grid; grid-template-columns: calc(20% - 15px) calc(80% - 15px); grid-column-gap: 30px; } .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-sides{ display: flex; flex-direction: column-reverse; } /* Added for events */ .sbi-preview-ctn .sbi-preview-posts-list-ctn[data-feed-type="events"] .sbi-post-item-ctn[data-post-layout="half"] .sbi-post-item-sides, .sbi-preview-ctn .sbi-preview-posts-list-ctn[data-feed-type="events"] .sbi-post-item-ctn[data-post-layout="thumb"] .sbi-post-item-sides{ display: grid!important; } [data-feed-type="reviews"] [data-post-layout="half"] .sbi-post-item-sides, [data-feed-type="reviews"] [data-post-layout="thumb"] .sbi-post-item-sides{ grid-template-columns: 100%!important; } .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="half"][data-post-type="statuses"] .sbi-post-item-sides, .sbi-preview-ctn .sbi-post-item-ctn[data-post-layout="thumb"][data-post-type="statuses"] .sbi-post-item-sides{ display: block!important; width: 100%!important; } .sbi-preview-ctn .sbi-preview-posts-list-ctn[data-boxshadow="true"] .sbi-post-item-ctn{ box-shadow: 0 0 10px 0 rgba(0,0,0, 0.15); } .sbi-preview-ctn .sbi-preview-posts-list-ctn[data-poststyle="regular"] .sbi-post-item-ctn{ padding: 15px 0px; } .sbi-preview-ctn [data-feed-layout="carousel"][data-feed-type="singlealbum"] .sbi-post-item-ctn{ height: 100%; background-position: center!important; background-size: cover!important; } /*Narrow Rules for Preview*/ [data-preview-device="mobile"] [data-narrow="active"] [data-post-layout="half"] .sbi-post-item-sides, [data-preview-device="mobile"] [data-narrow="active"] [data-post-layout="thumb"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="3"] [data-post-layout="half"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="3"] [data-post-layout="thumb"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="4"] [data-post-layout="half"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="4"] [data-post-layout="thumb"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="5"] [data-post-layout="half"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="5"] [data-post-layout="thumb"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="6"] [data-post-layout="half"] .sbi-post-item-sides, [data-narrow="active"][data-feed-columns="6"] [data-post-layout="thumb"] .sbi-post-item-sides, [data-preview-device="mobile"] [data-narrow="active"] [data-post-layout="half"][data-post-type="links"] .sbi-post-item-link-ctn, [data-preview-device="mobile"] [data-narrow="active"] [data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-link-ctn{ display: flex !important; flex-direction: column-reverse; } [data-narrow="active"][data-feed-columns="3"] [data-post-layout="half"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="3"] [data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="4"] [data-post-layout="half"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="4"] [data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="5"] [data-post-layout="half"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="5"] [data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="6"] [data-post-layout="half"][data-post-type="links"] .sbi-post-item-link-ctn, [data-narrow="active"][data-feed-columns="6"] [data-post-layout="thumb"][data-post-type="links"] .sbi-post-item-link-ctn{ display: flex !important; flex-direction: column; } .sbi-preview-ctn .sbi-post-item-text{ padding: 0; margin: 5px 0; line-height: 1.4; word-wrap: break-word; } .sbi-preview-ctn .sbi-post-item-text a:hover{ text-decoration: underline; } .sbi-post-item-text-expand a{ font-size: 11px; font-weight: normal; cursor: pointer; } .sbi-preview-ctn .sbi-post-item-text-expand a:hover{ text-decoration: underline; } .sbi-preview-ctn .sbi-post-item-meta-top{ display: flex; align-items: center; } .sbi-preview-ctn .sbi-post-item-action-link{ margin-left: auto; } .sbi-preview-ctn .sbi-post-item-action-txt{ font-size: 11px; cursor: pointer; font-weight: normal; } .sbi-preview-ctn .sbi-post-item-action-link a:hover{ text-decoration: underline; } .sbi-preview-ctn .sbi-post-item-dot{ padding: 0 5px; } .sbi-preview-ctn .sbi-post-item-share-link{ position: relative; } .sbi-preview-ctn .sbi-post-item-share-tooltip{ position: absolute; bottom: 22px; right: -5px; width: 100px; padding: 3px 5px; margin: 0; background: #333; color: #fff; font-size: 12px; line-height: 1.4; display: flex; align-items: center; justify-content: center; z-index: 9999; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .sbi-preview-ctn .sbi-post-item-share-tooltip:before{ content: ''; position: absolute; right: 11px; bottom: -4px; border-top: 7px solid #333; border-left: 7px solid transparent; border-right: 7px solid transparent; } .sbi-preview-ctn .sbi-post-item-share-tooltip a{ display: flex; width: 26px; height: 26px; justify-content: center; align-items: center; color: #fff !important; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } .sbi-preview-ctn .sbi-post-item-share-tooltip svg{ width: 16px; } .sbi-preview-ctn .sbi-post-item-meta{ height: 37px; margin: 5px 12px 5px 0; display: flex; padding: 0 5px 0 10px; justify-content: center; align-items: center; cursor: pointer; border-radius: 4px; background: rgba(0,0,0,0.05); box-shadow: 0 0 0 1px rgba(0,0,0,0.07); -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sbi-preview-ctn .sbi-post-item-meta:hover{ box-shadow: 0 0 0 1px rgb(0 0 0 / 9%); background: rgba(0,0,0,0.07); } .sbi-preview-ctn .sbi-post-item-view-comment,.sbi-post-meta-item{ display: flex; justify-content: center; align-items: center; } .sbi-preview-ctn .sbi-post-meta-item{ float: left; width: auto; display: block; list-style-type: none !important; margin: 0 10px 0 0 !important; padding: 0 !important; font-size: 11px; line-height: 16px !important; background: none !important; } .sbi-preview-ctn .sbi-post-meta-item-icon, .sbi-post-meta-item-icon svg{ width: 16px; position: relative; float: left; z-index: 2; } .sbi-preview-ctn .sbi-post-meta-item-icon{ margin-right: 5px; } .sbi-preview-ctn .sbi-post-meta-item-icon svg:nth-of-type(2){ position: absolute; left: 0px; top: 0px; z-index: -1; } .sbi-preview-ctn .sbi-post-item-full-img{ position: relative; float: left; width: 100%; height: auto; } /*Responsive Meta & Actions Links*/ .sbi-preview-ctn [data-feed-columns="3"] .sbi-post-item-meta-top, .sbi-preview-ctn [data-feed-columns="4"] .sbi-post-item-meta-top, .sbi-preview-ctn [data-feed-columns="5"] .sbi-post-item-meta-top, .sbi-preview-ctn [data-feed-columns="6"] .sbi-post-item-meta-top{ flex-direction: column-reverse; align-items: flex-start; } .sbi-preview-ctn [data-feed-columns="3"] .sbi-post-item-action-link, .sbi-preview-ctn [data-feed-columns="4"] .sbi-post-item-action-link, .sbi-preview-ctn [data-feed-columns="5"] .sbi-post-item-action-link, .sbi-preview-ctn [data-feed-columns="6"] .sbi-post-item-action-link{ margin-left: unset; } /*Light & Auto Icon Theme*/ .sbi-post-meta-item-icon-comment svg path, .sbi-post-meta-item-icon-share svg path, .sbi-post-meta-item-icon-like svg path{ fill: rgba(0,0,0,0.4); -webkit-transition: all 0.2s ease; transition: all 0.2s ease; } .sbi-post-meta-item-icon-comment svg.sbi-svg-bg path, .sbi-post-meta-item-icon-share svg.sbi-svg-bg path{ fill: rgba(255,255,255,0.7); } .sbi-post-meta-item-icon-like svg.sbi-svg-bg path{ fill: url(#likeGrad); } .sbi-preview-ctn .sbi-post-item-meta:hover svg path{ fill: rgba(0,0,0,0.5); } .sbi-preview-ctn .sbi-post-item-meta:hover .sbi-post-meta-item-icon-share svg.sbi-svg-bg path{ fill: #fdf3d0; } .sbi-preview-ctn .sbi-post-item-meta:hover .sbi-post-meta-item-icon-comment svg.sbi-svg-bg path{ fill: #fff; } .sbi-preview-ctn .sbi-post-item-meta:hover .sbi-post-meta-item-icon-like svg.sbi-svg-bg path{ fill: url(#likeGradHover); } /*Dark Icon Theme*/ .sbi-post-item-meta[data-icon-theme="dark"] .sbi-post-meta-item-icon-comment svg path, .sbi-post-item-meta[data-icon-theme="dark"] .sbi-post-meta-item-icon-share svg path, .sbi-post-item-meta[data-icon-theme="dark"] .sbi-post-meta-item-icon-like svg path{ fill: rgba(255,255,255,0.05); -webkit-transition: all 0.2s ease; transition: all 0.2s ease; } .sbi-post-item-meta[data-icon-theme="dark"] .sbi-post-meta-item-icon-comment svg.sbi-svg-bg path, .sbi-post-item-meta[data-icon-theme="dark"] .sbi-post-meta-item-icon-share svg.sbi-svg-bg path{ fill: rgba(255,255,255,0.9); } .sbi-post-item-meta[data-icon-theme="dark"] .sbi-post-meta-item-icon-like svg.sbi-svg-bg path{ fill: url(#likeGradDark); } .sbi-preview-ctn .sbi-post-item-meta[data-icon-theme="dark"]:hover svg path{ fill: #fff; } .sbi-preview-ctn .sbi-post-item-meta[data-icon-theme="dark"]:hover .sbi-post-meta-item-icon-share svg.sbi-svg-bg path{ fill: #fdf3d0; } .sbi-preview-ctn .sbi-post-item-meta[data-icon-theme="dark"]:hover .sbi-post-meta-item-icon-comment svg.sbi-svg-bg path{ fill: #fff; } .sbi-preview-ctn .sbi-post-item-meta[data-icon-theme="dark"]:hover .sbi-post-meta-item-icon-like svg.sbi-svg-bg path{ fill: url(#likeGradHover); } .sbi-preview-ctn .sbi-post-item-meta[data-icon-theme="dark"]:hover svg.sbi-svg-bg{ z-index: 3!important; } /*Post Meta comments*/ .sbi-post-item-meta-comments p, .sbi-post-item-meta-comments .sbi-post-comment-item, .sbi-post-item-meta-comments .sbi-comment-reply, .sbi-post-item-meta-comments .sbi-post-comment-item p { width: 100%; min-width: 100%; font-size: 12px; margin: 0 0 1px 0; line-height: 17px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .sbi-post-item-comments-top{ font-size: 12px; margin-bottom: 1px; padding: 10px 10px; background: rgba(0,0,0,0.05); border-radius: 4px; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; } .sbi-post-item-comments-top a:hover{ text-decoration: underline; } .sbi-post-item-comments-icon{ width: 16px; height: 16px; float: left; margin-right: 8px; display: flex; justify-content: center; align-items: center; } .sbi-post-item-comments-icon svg{ width: 14px; margin-top: 4px; } .sbi-post-item-comments-list{ background: rgba(0,0,0,0.05); border-radius: 4px; border-top-left-radius: 0px; border-top-right-radius: 0px; } .sbi-post-comment-item{ padding: 7px 10px; font-size: 12px; display: flex; align-items: flex-start; } .sbi-post-comment-item-avatar{ width: 32px; height: 32px; float: left; margin-right: 10px; margin-top: 3px; } .sbi-post-comment-item-avatar img{ width: 32px; height: 32px; float: left; border-radius: 50px; } .sbi-post-comment-item-author{ font-weight: bold; margin-right: 6px; float: left; } .sbi-post-comment-item-author:hover{ text-decoration: underline; } .sbi-post-comment-item-txt{ font-size: 12px; line-height: 1.4; margin: 0px; } .sbi-post-comment-item-date{ font-size: 11px; margin: 3px 0 0 0; display: block; font-style: italic; line-height: 1em; clear: both; float: left; } .sbi-post-item-media-album, .sbi-post-item-media-album a,.sbi-post-item-album-poster{ float: left; width: 100%; position: relative; display: block; } .sbi-post-item-album-thumb{ position: relative; display: inline-block; background-size: cover; background-position: center center; background-repeat: no-repeat; } .sbi-post-item-album-thumb-overlay{ position: absolute; width: 100%; height: 100%; left: 0; top: 0; z-index: 3; background: rgba(0,0,0,0.4); display: flex; justify-content: center; align-items: center; color: #fff; font-size: 30px; } .sbi-post-item-album-thumbs{ width: 100%; display: grid; margin-top: 5px; float: left; } .sbi-post-item-album-thumbs[data-length='1']{ grid-template-columns: 100%; } .sbi-post-item-album-thumbs[data-length='2']{ grid-template-columns: calc(50% - 3px) calc(50% - 3px); grid-column-gap: 5px; } .sbi-post-item-album-thumbs[data-length='3']{ grid-template-columns: calc(33.33% - 3px) calc(33.33% - 3px) calc(33.33% - 3px); grid-column-gap: 5px; } .sbi-post-item-album-thumbs .sbi-post-item-album-thumb:first-of-type{ grid-row: 1 / 1; grid-column: 1 / 1; padding-bottom: 100%; } .sbi-post-item-media-album{ margin-bottom: 10px; } .sbi-preview-ctn .sbi-post-item-iframe-ctn[data-source="spotify"] iframe{ width: 100%; height: 80px; } .sbi-preview-ctn .sbi-post-item-iframe-ctn[data-source="soundcloud"] iframe{ width: 100%; height: 100px; } .sbi-preview-ctn .sbi-post-item-media-ctn{ margin: 5px 0px; } .sbi-preview-ctn .sbi-post-item-video-ctn{ position: relative; } .sbi-preview-ctn .sbi-post-item-iframe-ctn[data-source="video"] .sbi-post-item-iframe, /*.sbi-preview-ctn .sbi-post-item-video-ctn,*/ .sbi-preview-ctn .sbi-videos-item-ctn .sbi-videos-item-source{ width: 100%; float: left; clear: both; /*margin: 5px 0;*/ position: relative; /*padding-bottom: 62%;*/ padding-bottom: 56.25%; } .sbi-play-video-icon{ position: absolute; width: 56px; height: 56px; background: rgba(0,0,0,0.7); color: #fff; left: 50%; top: 50%; border-radius: 8px; cursor: pointer; z-index: 1; -webkit-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } .sbi-play-video-icon:before{ content: ''; position: absolute; border-left: 22px solid currentColor; border-top: 17px solid transparent; border-bottom: 17px solid transparent; left: 19px; top: 11px; border-radius: 4px; } .sbi-preview-ctn .sbi-post-item-iframe-ctn[data-source="video"] .sbi-post-item-iframe iframe, .sbi-preview-ctn .sbi-post-item-video-ctn[data-lightbox="false"] iframe, .sbi-preview-ctn .sbi-videos-item-ctn[data-lightbox="false"] .sbi-videos-item-source iframe, .sbi-lightbox-video iframe, .sbi-preview-ctn .sbi-videos-item-source iframe{ position: absolute; width: 100%; height: 100%; z-index: 1; top: 0; left: 0; margin: 0; padding: 0; border: 0; } .sbi-lightbox-video { width: 950px; background: #212121; float: left; clear: both; padding-bottom: 56.25%; position: relative; } .sbi-preview-ctn .sbi-post-item-video-ctn iframe{ width: 100%; float: left; } .sbi-preview-ctn .sbi-post-item-link-ctn{ width: 100%; float: left; clear: both; padding: 8px; margin: 10px 0 5px 0; background: rgba(0,0,0,0.02); border: 1px solid rgba(0,0,0,0.07); box-sizing: border-box; } .sbi-preview-ctn .sbi-post-item-link-ctn[data-linkbox="on"]{ border: 0px !important; background: none !important; padding: 0px !important; } .sbi-preview-ctn .sbi-post-item-link-a:hover{ text-decoration: underline; } .sbi-preview-ctn .sbi-post-item-link-ctn img{ width: 100%; max-width: 100%; height: auto; float: none; } .sbi-preview-ctn .sbi-post-item-link-ctn > a{ width: 100%; max-width: 100%; margin-right: 0%; margin-bottom: 5px; text-align: center; float: left; } .sbi-preview-ctn .sbi-post-item-link-info{ line-height: 1.4; } .sbi-preview-ctn .sbi-photos-item-ctn{ margin: 0 0 20px 0; padding: 0; text-align: center; border: 1px solid rgba(0, 0, 0, .1); } [data-feed-layout="grid"] .sbi-photos-item-ctn, [data-feed-layout="grid"] .sbi-albums-item-ctn{ border-radius: unset!important; } .sbi-preview-ctn .sbi-singlemedia-item-info{ display: flex; flex-direction: column; align-items: center; } .sbi-preview-ctn .sbi-singlemedia-item-info a:hover{ text-decoration: underline; } .sbi-preview-ctn .sbi-singlemedia-item-info{ width: 100%; height: 70px; float: left; clear: both; overflow: hidden; } .sbi-preview-ctn .sbi-singlemedia-item-info > h4{ font-size: 14px!important; line-height: 1.2!important; margin: 10px 0 0 0!important; padding: 0!important; } .sbi-preview-ctn .sbi-singlemedia-item-info > p{ font-size: 12px; color: gray; margin: 5px 0 0 0; } .sbi-preview-ctn .sbi-singlemedia-item{ margin: 0 0 20px 0; text-align: center; } .sbi-preview-ctn .sbi-preview-likebox-ctn iframe{ width: 100% !important; margin: 0 !important; border: 0 !important; padding: 0; position: relative; top: 0; left: 0; } /*Event Details*/ .sbi-preview-ctn .sbi-post-event-street{ display: block } /* Featured & Single Album Holder */ .sbi-preview-ctn .sbi-single-holder-ctn{ height: 600px; background: #fff; box-shadow: 0 0px 6px rgba(0,0,0,0.05); display: flex; justify-content: center; align-items: center; flex-direction: column; } .sbi-preview-ctn .sbi-single-holder-img{ width: 130px; height: 130px; background: #F3F4F5; border: 1px dashed #D0D1D7; display: flex; justify-content: center; align-items: center; margin-bottom: 50px; } .sbi-preview-ctn .sbi-single-holder-content{ text-align: center; } .sbi-preview-ctn .sbi-single-holder-content strong{ font-size: 24px; margin-bottom: 10px; } .sbi-preview-ctn .sbi-single-holder-content p{ font-size: 16px; line-height: 1.7em; color: #8C8F9A; margin: 0px; margin-top: 8px; } /*Post Element Overlay */ .sbi-preview-ctn .sbi-post-overlay{ position: absolute; width: 100%; height: 100%; cursor: pointer; left: 0; top: 0; background: rgba(0,0,0,0.4); z-index: 9; opacity: 0; visibility: hidden; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sbi-preview-ctn .sbi-post-item-media-wrap:hover .sbi-post-overlay, .sbi-preview-ctn .sbi-post-item-iframe-ctn:hover .sbi-post-overlay, .sbi-preview-ctn .sbi-post-item-video-ctn:hover .sbi-post-overlay, .sbi-preview-ctn .sbi-post-overlay-parent:hover .sbi-post-overlay, .sbi-preview-ctn .sbi-videos-item-source:hover .sbi-post-overlay{ opacity: 1; visibility: visible; } /*Lightbox */ .sbi-lightbox-ctn{ width: 100%; height: 100%; position: absolute; left: 0; top: 2px; background: rgba(0,0,0,0.9); z-index: 9; display: none; justify-content: center; align-items: flex-start; padding-top: 100px; } .sbi-lightbox-ctn[data-visibility="shown"]{ display: flex; } .sbi-lightbox-closer{ position: absolute; left: 0; top: 0; z-index: 1; height: 100%; width: 100%; } .sbi-lightbox-image img{ float: left; max-width:780px; } .sbi-lightbox-content{ max-width: 100%; position: relative; z-index: 2; } .sbi-lightbox-content-insider{ position: relative; padding-right: 300px; display: flex; } [data-comments="false"] .sbi-lightbox-content-insider{ padding-right: 0px; } [data-comments="false"] .sbi-lightbox-content{ max-width: 100%; position: relative; z-index: 2; } .sbi-lightbox-sidebar{ width: 300px; box-sizing: border-box; position: absolute; right: 0px; top: 0px; background: #fff; height: 100%; padding: 15px; overflow: auto; } .sbi-lightbox-caption{ float: left; box-sizing: border-box; padding: 10px; background: #fff; position: relative; position: absolute; } .sbi-lightbox-caption .sbi-lightbox-cls{ top:3px; } .sbi-lightbox-sidebar .sbi-post-item-meta-top{ display: none!important; } .sbi-lightbox-sidebar .sbi-post-item-meta-comments{ display: block!important; } .sbi-lightbox-sidebar .sbi-post-item-meta-wrap{ margin-top: 12px; } .sbi-lightbox-cls{ position: absolute; width: 15px; height: 15px; top: 8px; right: 6px; cursor: pointer; z-index: 8; } .sbi-lightbox-cls:before, .sbi-lightbox-cls:after{ content: ''; position: absolute; height: 3px; width: 13px; left: 1px; top: 6px; background: currentColor; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sbi-lightbox-cls:after{ -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-lightbox-nav{ position: absolute; width: 40px; height: 100%; display: flex; justify-content: center; align-items: center; left: -60px; cursor: pointer; } .sbi-lightbox-next{ left: unset; right:-60px; } .sbi-lightbox-nav-icon{ width: 24px; height: 24px; border-bottom: 4px solid #fff; border-right: 4px solid #fff; -webkit-transform: rotate(135deg); transform: rotate(135deg); opacity: .7; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sbi-lightbox-next .sbi-lightbox-nav-icon{ -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-lightbox-nav:hover .sbi-lightbox-nav-icon{ opacity: 1; } .sbi-lightbox-thumbs{ background: #222; } .sbi-lightbox-thumb-item{ float: left; width: 60px; height: 60px; cursor: pointer; box-sizing: border-box; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; background-size: cover; background-position: center center; margin: 4px; } .sbi-lightbox-thumb-item:hover, .sbi-lightbox-thumb-item[data-active="true"]{ box-shadow: inset 0 0 0 4px rgb(255 255 255 / 70%); border: 1px solid #bbb; } .sbi-lightbox-sidebar .sbi-post-item-text{ line-height: 1.3em } /* COLOR SCHEMES */ /*LIGHT*/ [data-preview-colorscheme="light"] .sbi-post-item-content{ color: rgba(0,0,0,.8); } [data-preview-colorscheme="light"] .sbi-singlemedia-item-info p{ color: rgba(0,0,0,.7); } [data-preview-colorscheme="light"] .sbi-post-item-text a{ color: #141B38; text-decoration: underline; } [data-preview-colorscheme="light"] .sbi-post-item-text-expand, [data-preview-colorscheme="light"] .sbi-post-item-action-link{ color: #141B38; } [data-preview-colorscheme="light"] .sbi-post-item-date{ color: rgba(0,0,0,0.5) } /*DARK*/ [data-preview-colorscheme="dark"] .sbi-post-item-content{ color: rgba(255,255,255,.75); background-color: rgba(0,0,0,.85) } [data-preview-colorscheme="dark"] .sbi-singlemedia-item-info p{ color: rgba(255,255,255,.75); } [data-preview-colorscheme="dark"] .sbi-post-item-text a{ color: #fff; text-decoration: underline; } [data-preview-colorscheme="dark"] .sbi-post-item-text-expand, [data-preview-colorscheme="dark"] .sbi-post-item-action-link{ color: #fff; } [data-preview-colorscheme="dark"] .sbi-post-item-date{ color: rgba(255,255,255,.5); } .sbi-videos-item-ctn,.sbi-albums-item-ctn,.sbi-photos-item-ctn{ border-bottom: 0px!important; } .sbi-preview-posts-grid .sbi-videos-item-ctn .sbi-post-item-content, .sbi-preview-posts-grid .sbi-videos-item-ctn .sbi-post-overlay-parent, .sbi-preview-posts-grid .sbi-videos-item-ctn .sbi-post-overlay-parent > .sbi-fb-fs{ position: absolute; width: 100%; height: 100%; } .sbi-preview-posts-grid .sbi-videos-item-ctn .sbi-post-overlay-parent{ background-size: cover!important; background-position: center center!important; } .sbi-preview-posts-grid .sbi-videos-item-ctn .sbi-post-overlay-parent{ height: calc(100% - 70px) } .sbi-preview-posts-grid .sbi-singlemedia-item-info{ position: absolute; bottom: 0px; } /* Carousel */ .owl-stage{ position: relative; } .owl-stage-outer{ overflow: hidden; } .owl-item{ float: left; } .owl-dots{ width: 100%; height: 35px; text-align: center; margin-top: 10px; margin-bottom: 30px; display: flex; justify-content: center; align-items: center; } .owl-dot{ display: inline-block; width: 12px; height: 12px; margin: 5px 7px; filter: Alpha(Opacity=25); opacity: 0.25; padding:0px !important; border-radius: 20px; background: #000; box-shadow: 0 0 1px 0 rgb(255 255 255 / 80%); outline: none; border: 0px; cursor: pointer; } .owl-dot.active,.owl-dot:hover{ opacity: .5; } .owl-prev, .owl-next{ width: 40px; height: 40px; border-radius: 50px; padding: 0px; outline: none; border: 0px; cursor: pointer; font-size: 22px; display: flex; justify-content: center; align-items: center; background: #000; color: #fff; } .owl-dots .owl-prev, .owl-dots .owl-next{ display: inline-block; } .owl-prev span, .owl-next span{ margin-top: -3px; } .sbi-carousel[data-navigation="none"] .owl-nav{ display: none; } .sbi-carousel[data-navigation="onhover"] .owl-prev, .sbi-carousel[data-navigation="onhover"] .owl-next{ opacity: 0; position: absolute; top: 50%; margin-top: -20px; left: 0px; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sbi-carousel[data-navigation="onhover"] .owl-next{ left: unset; right: 0px; } .sbi-carousel[data-navigation="below"] .owl-prev, .sbi-carousel[data-navigation="below"] .owl-next, .sbi-carousel:hover .owl-prev, .sbi-carousel:hover .owl-next{ opacity: .5; } .sbi-carousel .owl-prev:hover, .sbi-carousel .owl-next:hover{ opacity: 1; } .sbi-carousel .cff_carousel-more{ display: block; position: relative; clear: both; width: 100%; text-align: center; border-radius: 0; border-top: 1px solid rgba(0,0,0,0.5); background: #000; filter: Alpha(Opacity=25); opacity: 0.25; color: #fff; padding: 0; border: none; margin-top: 0; height: auto; } .sbi-carousel .cff_carousel-more:hover, .sbi-carousel .cff_carousel-more:focus{ filter: Alpha(Opacity=50); opacity: 0.5; } .sbi-carousel .cff_carousel-more .fa-caret-down { font-size: 50px; line-height: 1; padding: 0; position: relative; top: -19px; } /*Reviews Ratings*/ .sbi-rating { float: none; display: inline-block; margin: 0 0 5px 0 !important; padding: 3px 6px; height: auto; background: #5890FF; color: #fff; white-space: nowrap; border-radius: 100px; line-height: 1em; } span.sbi-rating-num, span.sbi-star { margin: 0 2px 0 0 !important; padding: 0; height: auto; display: inline-block; vertical-align: top; line-height: 1; color: #fff; font-weight: normal; font-size: 12px!important; } span.sbi-rating-num{ margin: 0 2px 0 4px !important; }instagram-feed/admin/builder/assets/css/tooltipster.css000064400000030317151435171370017357 0ustar00/* This is the core CSS of Tooltipster */ /* GENERAL STRUCTURE RULES (do not edit this section) */ .tooltipster-base { /* this ensures that a constrained height set by functionPosition, if greater that the natural height of the tooltip, will be enforced in browsers that support display:flex */ display: flex; pointer-events: none; /* this may be overriden in JS for fixed position origins */ position: absolute; } .tooltipster-box { /* see .tooltipster-base. flex-shrink 1 is only necessary for IE10- and flex-basis auto for IE11- (at least) */ flex: 1 1 auto; } .tooltipster-content { /* prevents an overflow if the user adds padding to the div */ box-sizing: border-box; /* these make sure we'll be able to detect any overflow */ max-height: 100%; max-width: 100%; overflow: auto; } .tooltipster-ruler { /* these let us test the size of the tooltip without overflowing the window */ bottom: 0; left: 0; overflow: hidden; position: fixed; right: 0; top: 0; visibility: hidden; } /* ANIMATIONS */ /* Open/close animations */ /* fade */ .tooltipster-fade { opacity: 0; -webkit-transition-property: opacity; -moz-transition-property: opacity; -o-transition-property: opacity; -ms-transition-property: opacity; transition-property: opacity; } .tooltipster-fade.tooltipster-show { opacity: 1; } /* grow */ .tooltipster-grow { -webkit-transform: scale(0,0); -moz-transform: scale(0,0); -o-transform: scale(0,0); -ms-transform: scale(0,0); transform: scale(0,0); -webkit-transition-property: -webkit-transform; -moz-transition-property: -moz-transform; -o-transition-property: -o-transform; -ms-transition-property: -ms-transform; transition-property: transform; -webkit-backface-visibility: hidden; } .tooltipster-grow.tooltipster-show { -webkit-transform: scale(1,1); -moz-transform: scale(1,1); -o-transform: scale(1,1); -ms-transform: scale(1,1); transform: scale(1,1); -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); } /* swing */ .tooltipster-swing { opacity: 0; -webkit-transform: rotateZ(4deg); -moz-transform: rotateZ(4deg); -o-transform: rotateZ(4deg); -ms-transform: rotateZ(4deg); transform: rotateZ(4deg); -webkit-transition-property: -webkit-transform, opacity; -moz-transition-property: -moz-transform; -o-transition-property: -o-transform; -ms-transition-property: -ms-transform; transition-property: transform; } .tooltipster-swing.tooltipster-show { opacity: 1; -webkit-transform: rotateZ(0deg); -moz-transform: rotateZ(0deg); -o-transform: rotateZ(0deg); -ms-transform: rotateZ(0deg); transform: rotateZ(0deg); -webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 1); -webkit-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); -moz-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); -ms-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); -o-transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); transition-timing-function: cubic-bezier(0.230, 0.635, 0.495, 2.4); } /* fall */ .tooltipster-fall { -webkit-transition-property: top; -moz-transition-property: top; -o-transition-property: top; -ms-transition-property: top; transition-property: top; -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); } .tooltipster-fall.tooltipster-initial { top: 0 !important; } .tooltipster-fall.tooltipster-show { } .tooltipster-fall.tooltipster-dying { -webkit-transition-property: all; -moz-transition-property: all; -o-transition-property: all; -ms-transition-property: all; transition-property: all; top: 0 !important; opacity: 0; } /* slide */ .tooltipster-slide { -webkit-transition-property: left; -moz-transition-property: left; -o-transition-property: left; -ms-transition-property: left; transition-property: left; -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1); -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -moz-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -ms-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); -o-transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); transition-timing-function: cubic-bezier(0.175, 0.885, 0.320, 1.15); } .tooltipster-slide.tooltipster-initial { left: -40px !important; } .tooltipster-slide.tooltipster-show { } .tooltipster-slide.tooltipster-dying { -webkit-transition-property: all; -moz-transition-property: all; -o-transition-property: all; -ms-transition-property: all; transition-property: all; left: 0 !important; opacity: 0; } /* Update animations */ /* We use animations rather than transitions here because transition durations may be specified in the style tag due to animationDuration, and we try to avoid collisions and the use of !important */ /* fade */ @keyframes tooltipster-fading { 0% { opacity: 0; } 100% { opacity: 1; } } .tooltipster-update-fade { animation: tooltipster-fading 400ms; } /* rotate */ @keyframes tooltipster-rotating { 25% { transform: rotate(-2deg); } 75% { transform: rotate(2deg); } 100% { transform: rotate(0); } } .tooltipster-update-rotate { animation: tooltipster-rotating 600ms; } /* scale */ @keyframes tooltipster-scaling { 50% { transform: scale(1.1); } 100% { transform: scale(1); } } .tooltipster-update-scale { animation: tooltipster-scaling 600ms; } /** * DEFAULT STYLE OF THE SIDETIP PLUGIN * * All styles are "namespaced" with .tooltipster-sidetip to prevent * conflicts between plugins. */ /* .tooltipster-box */ .tooltipster-sidetip .tooltipster-box { background: #565656; border: 2px solid black; border-radius: 4px; } .tooltipster-sidetip.tooltipster-left .tooltipster-box { margin-right: 8px; } .tooltipster-sidetip.tooltipster-right .tooltipster-box { margin-left: 8px; } .tooltipster-sidetip.tooltipster-top .tooltipster-box { margin-bottom: 8px; } /* .tooltipster-content */ .tooltipster-sidetip .tooltipster-content { color: white; line-height: 18px; padding: 6px 14px; } /* .tooltipster-arrow : will keep only the zone of .tooltipster-arrow-uncropped that corresponds to the arrow we want to display */ .tooltipster-sidetip .tooltipster-arrow { overflow: hidden; position: absolute; } .tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow { height: 10px; /* half the width, for centering */ margin-left: -10px; top: 0; width: 20px; } .tooltipster-sidetip.tooltipster-left .tooltipster-arrow { height: 20px; margin-top: -10px; right: 0; /* top 0 to keep the arrow from overflowing .tooltipster-base when it has not been positioned yet */ top: 0; width: 10px; } .tooltipster-sidetip.tooltipster-right .tooltipster-arrow { height: 20px; margin-top: -10px; left: 0; /* same as .tooltipster-left .tooltipster-arrow */ top: 0; width: 10px; } .tooltipster-sidetip.tooltipster-top .tooltipster-arrow { bottom: 0; height: 10px; margin-left: -10px; width: 20px; } /* common rules between .tooltipster-arrow-background and .tooltipster-arrow-border */ .tooltipster-sidetip .tooltipster-arrow-background, .tooltipster-sidetip .tooltipster-arrow-border { height: 0; position: absolute; width: 0; } /* .tooltipster-arrow-background */ .tooltipster-sidetip .tooltipster-arrow-background { border: 10px solid transparent; } .tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background { border-bottom-color: #565656; left: 0; top: 3px; } .tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background { border-left-color: #565656; left: -3px; top: 0; } .tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background { border-right-color: #565656; left: 3px; top: 0; } .tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background { border-top-color: #565656; left: 0; top: -3px; } /* .tooltipster-arrow-border */ .tooltipster-sidetip .tooltipster-arrow-border { border: 10px solid transparent; left: 0; top: 0; } .tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border { border-bottom-color: black; } .tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border { border-left-color: black; } .tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border { border-right-color: black; } .tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border { border-top-color: black; } /* tooltipster-arrow-uncropped */ .tooltipster-sidetip .tooltipster-arrow-uncropped { position: relative; } .tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped { top: -10px; } .tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped { left: -10px; } @media (min-width: 960px) { body .sbi-tooltip-wizard.tooltipster-sidetip { left: 50px !important; top: 74px !important; } } .wp-editor .sbi-tooltip-wizard{ -webkit-transform: translateY(63px) translateX(17px); transform: translateY(63px) translateX(17px); } .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box{ background: #fff!important; border: 1px solid #eee!important; border-radius: 2px!important; box-shadow: 0px 1px 18px rgba(0,0,0,0.2)!important; } .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-content{ color: #434960!important; line-height: 18px; padding: 6px 20px!important; position: relative; } .sbi-tooltip-wizard .sbi-tooltip-wizard-head { color: #141B38; font-size: 15px; margin-bottom: 8px; width: 100%; float: left; display: block } .sbi-tooltip-wizard .sbi-tooltip-wizard-txt{ margin-bottom: 15px; } .sbi-tooltip-wizard .sbi-tooltip-wizard-actions button{ background: #F3F4F5!important; cursor: pointer!important; border: 1px solid #DCDDE1!important; padding: 5px 20px!important; } .sbi-tooltip-wizard .sbi-tooltip-wizard-actions{ margin-bottom: 10px; } .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:before, .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:after { content: ''; position: absolute; width: 20px; height: 20px; left: 20%; top: -8px; background: #fff; box-shadow: 0px 1px 18px rgba(0,0,0,0.2); z-index: 3; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:after { background: #fff; z-index: 999; top: 2px; margin-left: -10px; width: 40px; box-shadow: unset; -webkit-transform: rotate(0deg); transform: rotate(0deg); } .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-arrow{ display: none; } #sbi-gutenberg-tooltip-content{ display: none; } .sbi-tlp-wizard-cls{ position: absolute; width: 20px; height: 20px; right: 14px; top: 14px; cursor: pointer; } .sbi-tlp-wizard-cls:before, .sbi-tlp-wizard-cls:after{ content: ''; position: absolute; width: 16px; height: 2px; background: #141B38; left: 3px; top: 7px; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sbi-tlp-wizard-cls:after{ -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-tooltip-wizard.tooltipster-sidetip #sbi-gutenberg-tooltip-content{ display: block; } .sbi-tooltip-wizard.tooltipster-sidetip { margin-top: 40px; margin-left: 74px; } .is-fullscreen-mode .sbi-tooltip-wizard.tooltipster-sidetip { margin-top: 10px; margin-left: -28px; } @media (max-width: 960px) { .sbi-tooltip-wizard.tooltipster-sidetip { margin-left: 0; } } @media (max-width: 782px) { .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:before, .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:after { left: 30px; } } @media (max-width: 599px) { .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:before, .sbi-tooltip-wizard.tooltipster-sidetip .tooltipster-box:after { left: 15px; } }instagram-feed/admin/builder/assets/css/builder.css000064400000411534151435171370016421 0ustar00body{ background: #red; --cl-orange: #FE544F; --cl-dark:#2C324C; --error-red: #D72C2C; --customizer-blue: #0096CC; --dark-blue: #2A65DB; } .sb-tr-1{-webkit-transition: all .1s ease-in-out; transition: all .1s ease-in-out;} .sb-tr-2{-webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out;} .sb-tr-3{-webkit-transition: all .3s ease-in-out; transition: all .3s ease-in-out;} .sb-tr-4{-webkit-transition: all .4s ease-in-out; transition: all .4s ease-in-out;} .sb-tr-5{-webkit-transition: all .5s ease-in-out; transition: all .5s ease-in-out;} .sb-tr-6{-webkit-transition: all .6s ease-in-out; transition: all .6s ease-in-out;} .sb-tr-7{-webkit-transition: all .7s ease-in-out; transition: all .7s ease-in-out;} .sb-tr-8{-webkit-transition: all .8s ease-in-out; transition: all .8s ease-in-out;} .sb-tr-9{-webkit-transition: all .9s ease-in-out; transition: all .9s ease-in-out;} .sb-tr-10{-webkit-transition: all 1s ease-in-out; transition: all 1s ease-in-out;} .sbi-bg-1{ background: #2A65DB; } /**** Buttons */ .sb-button { display: flex; flex-direction: row; justify-content: center; align-items: center; border-radius: 2px; cursor: pointer; outline: none; box-shadow: none; border: none; -webkit-transition: all .15s ease-in-out; transition: all .15s ease-in-out; } .sb-button-standard{ position: relative; font-style: normal; font-weight: 600; font-size: 14px; padding: 10px 20px 10px 39px; line-height: 16px; border: unset; cursor: pointer; } .sb-button-standard svg { width: 16px; height: 16px; position: absolute; left: 13px; right: auto; top: 10px; bottom: auto; } .sb-button-small.sb-button-left-icon { padding-left: 32px; } .sb-button-small.sb-button-right-icon { padding-right: 32px; } .sb-button-small.sb-button-left-icon svg { position: absolute; left: 13px; } .sb-button-small.sb-button-right-icon svg { position: absolute; right: 13px; } .sb-button-standard.sb-button-right-icon { padding: 10px 39px 10px 20px; } .sb-button-standard.sb-button-right-icon svg { right: 13px; left: auto; } .sb-button-small { position: relative; font-style: normal; font-weight: 600; font-size: 12px; padding: 6px 12px; line-height: 160%; } .sb-button-no-border { border-radius: 0 !important; border: none !important; } /*orange*/ .sbi-btn-orange{ background: #FE544F!important; color: #fff!important; } .sbi-btn-orange:hover{ background: #EC352F!important; color: #fff!important; } .sbi-btn-orange:focus{ background: #BC120E!important; color: #fff!important; } /*red*/ .sbi-btn-red{ background: #D72C2C!important; color: #fff!important; } .sbi-btn-red:hover{ background: #DF5757!important; color: #fff!important; } .sbi-btn-red:focus{ background: #841919!important; color: #fff!important; } /*red*/ .sbi-btn-blue{ background: #0068A0!important; color: #fff!important; } .sbi-btn-blue:hover{ background: #0096CC!important; color: #fff!important; } .sbi-btn-blue:focus{ background: #004D77!important; color: #fff!important; } /*grey*/ .sbi-btn-grey{ background: #F3F4F5!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } .sbi-btn-grey:hover{ background: #fff!important; color: #141B38!important; border: 1px solid #DCDDE1!important; } .sbi-btn-grey:focus{ background: #E8E8EB!important; color: #141B38!important; border: 1px solid #D0D1D7!important; } /*dark*/ .sbi-btn-dark{ background: #2C324C!important; color: #fff!important; } .sbi-btn-dark:hover{ background: #434960!important; color: #fff!important; } .sbi-btn-dark:focus{ background: #141B38!important; color: #fff!important; } .sb-dark-hover:hover svg, .sb-dark-hover:hover path{ fill: #141B38; } /*disabled*/ .sbi-btn-orange[data-active="false"], .sbi-btn-blue[data-active="false"], .sbi-btn-red[data-active="false"], .sbi-btn-grey[data-active="false"], .sbi-btn-dark[data-active="false"]{ background: #E8E8EB !important; color: #8C8F9A !important; } /* Text */ #sb_instagram{ overflow-x: hidden; } #sbi-builder-app h1:not(#sb_instagram h1) { font-style: normal; font-weight: 600; font-size: 36px; line-height: 125%; color: #141B38; margin: 0; letter-spacing: 0; } #sbi-builder-app h2:not(#sb_instagram h2) { font-style: normal; font-weight: 600; font-size: 32px; line-height: 125%; margin: 0; letter-spacing: 0; } #sbi-builder-app h3:not(#sb_instagram h3):not(.sb_instagram_header h3) { font-style: normal; font-weight: 600; font-size: 24px; line-height: 120%; margin: 0 0 4px 0; letter-spacing: 0; } #sbi-builder-app h4:not(#sb_instagram h5) { font-style: normal; font-weight: 600; font-size: 18px; line-height: 140%; margin: 0 0 4px 0; letter-spacing: 0; } .sbi-fb-feedtypes-pp-ctn h4 { font-size: 24px !important; margin-bottom: 28px !important; } #sbi-builder-app .sb-small-p, #sbi-builder-app .sb-standard-p{ font-style: normal; font-weight: normal; font-size: 14px; line-height: 160%; color: #8C8F9A; margin: 0; } #sbi-builder-app .sb-standard-p{ font-size: 16px; color: #141B38; } #sbi-builder-app .sbi-fb-source-inp::placeholder { color: #8C8F9A; font-size: 14px; font-weight: normal; } #sbi-builder-app .sb-bold { font-weight: 600; } #sbi-builder-app .sb-dark-text { color: #141B38; } #sbi-builder-app .sbi-btn-orange .sb-small-p, #sbi-builder-app .sbi-btn-blue .sb-small-p, #sbi-builder-app .sbi-btn-red .sb-small-p, #sbi-builder-app .sbi-btn-dark .sb-small-p{ color: #fff; } #sbi-builder-app .sb-caption { font-style: normal; font-weight: normal; font-size: 13px; line-height: 150%; color: #141B38; } #sbi-builder-app .sb-caption.sb-caption-lighter { color: #5F6368; } #sbi-builder-app .sb-small { font-style: normal; font-weight: bold; font-size: 10px; line-height: 160%; letter-spacing: 0.02em; text-transform: uppercase; color: #141B38; } #sbi-builder-app .sb-lighter { color: #434960; } #sbi-builder-app .sb-lightest { color: #74777D; } #sbi-builder-app .sb-small-text { font-size: 12px; } /* Positioning */ .sb-icon-label { display: flex; flex-direction: row; justify-content: flex-start; align-items: center; } /* Misc Stylings */ .sb-flex-center { display: -ms-flexbox; display: -webkit-flex; display: flex; -ms-flex-align: center; -webkit-align-items: center; -webkit-box-align: center; align-items: center; } .sb-box-shadow { box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); } #sbi-builder-app .sb-icon-small svg { height: 10px; } /* Social Links */ .sbi-cl-facebook, .sbi-clhv-facebook:hover{ color: #006BFA!important; } .sbi-bg-facebook, .sbi-bghv-facebook:hover{ background: #006BFA!important; } .sbi-cl-instagram, .sbi-clhv-instagram:hover{ color: #BA03A7!important; } .sbi-bg-instagram, .sbi-bghv-instagram:hover{ background: #BA03A7!important; } .sbi-cl-twitter, .sbi-clhv-twitter:hover{ color: #1B90EF!important; } .sbi-bg-twitter, .sbi-bghv-twitter:hover{ background: #1B90EF!important; } .sbi-cl-youtube, .sbi-clhv-youtube:hover{ color: #EB2121!important; } .sbi-bg-youtube, .sbi-bghv-youtube:hover{ background: #EB2121!important; } .sbi-cl-linkedin, .sbi-clhv-linkedin:hover{ color: #007bb6!important; } .sbi-bg-linkedin, .sbi-bghv-linkedin:hover{ background: #007bb6!important; } .sbi-cl-mail, .sbi-clhv-mail:hover{ color: #666!important; } .sbi-bg-mail, .sbi-bghv-mail:hover{ background: #666!important; } #sbi-builder-app{ font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;; visibility: hidden; opacity: 0; } #sbi-builder-app[data-app-loaded="true"]{ visibility: visible; opacity: 1; } .sbi-builder-app a, .sbi-builder-app a:focus{ text-decoration: none; /*color: inherit;*/ outline: none; } .sbi-fb-btn{ display: flex; flex-direction: row; justify-content: center; align-items: center; padding: 9px 38px; font-style: normal; font-weight: 500; font-size: 14px; line-height: 17px; border-radius: 2px; cursor: pointer; color: #fff; outline: none; box-shadow: none; border: none;; } .sbi-fb-btn:focus{ box-shadow: none; } .sbi-fb-fs, .sb-fs{ width: 100%; position: relative; float: left; box-sizing: border-box; } .sbi-fs-a{ width: 100%; height: 100%; display: block; position: absolute; left: 0; top: 0; z-index: 1; } .sb-btn:focus{ outline: none; } #wpcontent, .instagram-feed_page_sbi-feed-builder #wpcontent{ padding-left: 0px!important; } #wpfooter{ display: none; } #wpbody-content{ padding-bottom: 0px; } #wpbody{ padding-left: 0px!important; } .sbi-fb-wrapper{ max-width: 92%; position: relative; margin: auto; color: #141B38; } .sbi-fb-fs-boss{ position: fixed; height: 100vh; width: 100%; left: 0; top: 0; bottom: 0; right: 0; background: rgba(0,0,0,.4); z-index: 9989; } /* Header */ .sbi-fb-create-ctn{ margin-top: 104px; padding: 0 54px; box-sizing: border-box; width: 100%; } .sbi-fb-header{ height: 64px; position: absolute; display: flex; flex-direction: row; justify-content: space-between; align-items: center; background: #fff; padding: 0px 52px; z-index: 99; } .sbi-fb-header-left { display: flex; } .sbi-fb-header-left .sb-social-wall-link-wrap { margin-left: 30px; } .sbi-fb-hd-logo { display: flex; vertical-align: middle; align-items: center; gap: 5px; } .sbi-fb-hd-logo .sb-logo-letters-wrap { transform: translate(0px, -2px); } .sbi-fb-hd-logo .breadcrumb-title { font-size: 14px; font-weight: 400; line-height: 22px; letter-spacing: 0em; margin-left: 4px; } .sbi-csz-header.sbi-fb-header{ position: fixed!important; padding: 0 20px; } .sbi-csz-header-insider{ width: calc(100% - 160px); display: flex; flex-direction: row; justify-content: space-between; align-items: center; height: 52px; } body.jetpack-masterbar .sbi-csz-header-insider { width: calc(100% - 272px); } @media all and (max-width: 960px) { .sbi-csz-header-insider{ width: calc(100% - 36px); } .sb-customizer-ctn .sb-customizer-sidebar{ left: 36px; } body.jetpack-masterbar .sb-customizer-sidebar { left: 36px; } body.jetpack-masterbar .sbi-csz-header-insider { width: calc(100% - 36px); } } .sbi-fb-extpp-lite-btn-texts { display: flex; flex-direction: column; } .sbi-fb-extpp-lite-btn .sbi-fb-extpp-lite-btn-discount-applied { font-size: 12px; font-weight: normal; } .sbi-fb-hd-btn{ cursor: pointer; display: flex; flex-direction: row; justify-content: center; align-items: center; position: relative; border: 1px solid; -webkit-transition: all .15s ease-in-out; transition: all .15s ease-in-out; } .sbi-fb-hd-btn i{ margin: 0px 5px; } .sbi-fb-ft-action .sbi-fb-hd-btn { -webkit-transition: background .15s ease-in-out; transition: background .15s ease-in-out; } .sbi-fb-full-wrapper { padding: 0 53px; padding-top: 82px; } .sbi-csz-hd-actions{ display: flex; justify-content: center; align-items: center; } .sbi-csz-hd-actions > button{ margin-left: 10px; } .sbi-csz-btn-embd{ color: #fff; background: var(--cl-dark); border-color: var(--cl-dark); } .sbi-csz-btn-save{ color: #fff; background: var(--cl-orange); border-color: var(--cl-orange); } .sbi-csz-hd-name{ display: flex; justify-content: center; align-items: center; height: 45px; } .sbi-csz-hd-name strong{ font-size: 18px; } .sbi-csz-hd-name[data-edit="true"] strong{ display: none; } .sbi-csz-hd-name input[type="text"]{ border-radius: 0px; border: 0px; background: #CCE7FF; outline: none; font-size: 18px; font-weight: 700; display: none; } .sbi-csz-hd-name[data-edit="true"] input[type="text"]{ display: block; } .sbi-csz-hd-name input[type="text"]:focus{ outline: none!important; border: 0px!important; box-shadow: none!important; } .sbi-csz-name-ed-btn{ width: 22px; height: 22px; cursor: pointer; margin: 0 10px; background: #E8E8EB; border: 1px solid #E8E8EB; outline: none; } .sbi-csz-name-ed-btn:focus, .sbi-csz-name-ed-btn:hover{ outline: none; background-color: #fff; } .sbi-csz-name-ed-btn svg{ width: 11px; fill: #141B38; float: left; margin-left: -1px; } /* Welcome Screen Empty State */ .sbi-fb-wlcm-header{ display: flex; align-items: center; margin-bottom: 28px; margin-top: 23px; } #sbi-fb-full-wrapper .sbi-fb-wlcm-header { margin-bottom: 34px; } .sbi-fb-wlcm-header h3, .sbi-fb-create-ctn h3{ font-weight: 600; font-size: 32px; line-height: 40px; padding: 0; margin: 0; float: left; } .sbi-fb-btn-new{ background: var(--cl-orange); position: relative; float: left; margin-left: 20px; font-size: 12px; padding: 8px 12px 8px 32px; font-weight: 700; } .sbi-fb-btn-new svg{ width: 10px; height: 10px; position: absolute; left: 12px; } .sbi-fb-inf-cnt{ position: relative; background: #fff; padding: 27px; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; max-width: 100%; } .sbi-fb-inf-num{ width: 30px; height: 30px; position: relative; float: left; display: flex; justify-content: center; align-items: center; font-size: 12px; font-weight: 600; color: #141B38; margin-right: 20px; } .sbi-fb-inf-num span{ z-index: 1; } .sbi-fb-inf-num:before{ content: ''; position: absolute; width: 100%; height: 100%; background: #D8DADD; border-radius: 50%; } .sbi-fb-inf-txt{ float: left; } /*.sbi-fb-inf-txt strong{ display: block; font-size: 20px; line-height: 1em; font-weight: bold; margin-bottom: 8px; }*/ .sbi-fb-inf-txt span{ display: block; font-size: 16px; color: #5F6368; line-height: 1.5em; } .sbi-fb-wlcm-inf-1 { padding-left: 297px; } .sbi-fb-wlcm-inf-1 .sbi-fb-inf-svg{ position: absolute; left: 191px; top: 32px; /*float: left; margin-top: 30px; margin-left: 230px; position: relative; margin-right: 25px;*/ } .sbi-fb-wlcm-inf-1 .sbi-fb-inf-svg svg{ margin-top: -45px; } .sb-head { position: absolute; top: -2px; left:-4px; } .sbi-fb-wlcm-inf-1 .sbi-fb-inf-cnt{ float: left; width: 523px; margin-bottom: 24px; } .sbi-fb-wlcm-inf-2{ display: flex; justify-content: space-between; padding-left: 152px; } .sbi-fb-wlcm-inf-2 .sbi-fb-inf-cnt{ float: left; width: 590px; margin-bottom: 29px; height: 67px; display: flex; align-items: center; } .sbi-fb-wlcm-inf-2 .sbi-fb-inf-img{ position: absolute; right: 15px; top: -15px; } .sbi-fb-wlcm-inf-3{ display: flex; justify-content: flex-start; align-items: center; padding-left: 297px; } .sbi-fb-wlcm-inf-3 .sbi-fb-inf-cnt{ float: left; width: 620px; height: 80px; display: flex; justify-content: center; align-items: center; } .sbi-fb-wlcm-inf-3 .sbi-fb-inf-img{ float: left; left: 10px; top: -10px; position: absolute; } .sbi-fb-wlcm-inf-2 .sbi-fb-inf-num, .sbi-fb-wlcm-inf-3 .sbi-fb-inf-num{ margin-top: -20px; } .sbi-fb-types-ctn, .sbi-fb-slctsrc-ctn, .sbi-fb-section-wh{ background: #fff; border: 1px solid #E7E7E9; } .sbi-fb-wrapper h3, .sbi-fb-section-wh h3{ font-size: 32px; line-height: 39px; font-weight: 600; } .sbi-fb-create-ctn h3{ margin-bottom: 30px; } .sbi-fb-types h4, .sbi-fb-section-wh h4 { font-size:20px; line-height: 24px; font-weight: 600; } #sbi-builder-app .sbi-fb-create-ctn h4, #sbi-builder-app .sbi-fb-feedtypes-pp-ctn h4{ margin-bottom: 1px; } #sbi-builder-app .sbi-fb-feedtypes-pp-ctn .sbi-fb-types { margin-top: 20px; } #sbi-builder-app .sbi-fb-adv-types .sbi-adv-types-heading{ font-style: normal; font-weight: bold; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; color: #8C8F9A; } .sbi-fb-types-desc{ font-size: 14px; color: #434960; margin-bottom: 33px; display: block; } .sbi-fb-types, .sbi-fb-adv-types{ padding: 22px 35px 0; } .sbi-fb-adv-types { padding-top: 0; } #sbi-builder-app .sbi-fb-type-el-info a, .sbi-business-required{ color: #0068A0; font-size: 12px; display: flex; align-self: center; } #sbi-builder-app .sbi-fb-type-el-info a span{ margin-right: 7px; } #sbi-builder-app .sbi-fb-type-el-info a svg, .sbi-business-required svg{ height: 16px; line-height: 12px; vertical-align: top; margin-top: 1px; } .sbi-fb-types-list{ display: grid; grid-template-columns: 24.25% 24.25% 24.25% 25.25%; grid-column-gap: 1%; margin-bottom: 31px; } /* .sbi-fb-adv-types .sbi-fb-types-list{ grid-template-columns: 24.25% 24.25% 24.25% 24.25%; } */ .sbi-fb-heading { margin-bottom: 24px; width: 100%; float: left; } .sbi-fb-heading h1{ float: left; } .sbi-fb-heading .sbi-fb-btn{ float: right!important; } .sbi-fb-adv-types .sbi-fb-types-list{ margin-bottom: 71px; } .sbi-fb-type-el{ display: flex; flex-direction: column; align-items: flex-start; padding: 0; position: relative; background: #fff; border: 1px solid #F1F1F1; border-radius: 3px; cursor: pointer; box-sizing: border-box; } .sbi-fb-type-el:not([data-type="socialwall"]):hover, .sbi-fb-adv-types .sbi-fb-type-el:not([data-type="socialwall"]):hover{ border: 1px solid #F6966B; } .sbi-fb-adv-types .sbi-fb-type-el{ border: 1px solid #FFDBBA; } .sb-control-feedtype-ctn .sbi-fb-type-el{ border: 2px solid #E8E8EB; margin-bottom: 7px; } .sb-control-feedtype-ctn .sbi-fb-type-el-info{ margin-top: 14px } .sbi-fb-type-el[data-active="true"], .sbi-fb-adv-types .sbi-fb-type-el[data-active="true"]{ border: 2px solid var(--cl-orange)!important; } .sbi-fb-type-el[data-active="true"]:not([data-type="socialwall"]):after{ content: ''; position: absolute; width: 10px; height: 4px; border-left: 2px solid #fff; border-bottom: 2px solid #fff; z-index: 3; right: 5px; top: 7px; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-fb-type-el[data-active="true"]:before{ content: ''; position: absolute; width: 24px; height: 24px; right: 0px; top: 0px; z-index: 2; background: #DCDDE1; } .sbi-fb-type-el[data-active="true"]:before{ background: var(--cl-orange) } .sbi-fb-type-el[data-type="socialwall"]:before{ display: none; } .sbi-fb-type-el-img{ display: flex; flex-direction: column; justify-content: center; align-items: center; background: #E2F5FF; border-bottom: 1px solid #fff; } .sbi-fb-type-el[data-active="true"] .sbi-fb-type-el-img{ background-color: #F1F1F1; border-bottom: 2px solid #fff; } .sbi-fb-type-el-img svg { max-width: 100%; } .sbi-fb-adv-types .sbi-fb-type-el-img{ background: #FCF4EF; } .sbi-fb-type-el-info{ display: flex; flex-direction: column; justify-content: flex-start; align-items: center; text-align: center; flex: 1 1 auto; padding: 0 18px 13px; } .sbi-fb-type-el-link{ font-size: 13px; font-weight: 400; margin-bottom: 5px; } .sb-control-feedtype-ctn .sbi-fb-type-el-info{ padding: 15px 70px 25px; } .sb-control-feedtype-ctn .sbi-fb-type-el-info strong{ font-size: 14px; } #sbi-builder-app .sbi-fb-type-el p { margin: 11px 0 4px; } #sbi-builder-app .sbi-fb-type-el[data-active="true"] .sbi-fb-type-el-info { padding-bottom: 12px; } #sbi-builder-app .sbi-fb-type-el p svg { margin-left: 1px; vertical-align: middle; } /*.sbi-fb-type-el-info strong{ font-weight: 600; font-size: 16px; line-height: 19px; margin-bottom: 10px; text-transform: capitalize; display: flex; justify-content: center; align-items: center; } .sbi-fb-type-el-info strong i{ color: #ed8000; margin-left: 5px; font-size: 13px; margin-top: 2px; } .sbi-fb-type-el-info span{ font-size: 13px; line-height: 1.4em; color: #74777D; }*/ .sbi-fb-adv-types .sbi-fb-type-el-img { border-color: #FCF4EF; } .sbi-fb-ft-action { border-top: 1px solid #D8DADD; padding: 30px 40px; margin-top: 63px; } .sbi-fb-slctfd-action .sbi-fb-wrapper{ display: flex; align-items: center; justify-content: flex-end; } .sbi-fb-slctfd-action{ padding: 16px 0; } .sbi-fb-slctf-nxt{ height: auto; padding: 7px 36px 7px 37px; } .sbi-fb-slctf-back{ margin-right: auto; height: auto; padding: 7px 37px 7px 36px; } .sbi-fb-slctf-back svg, .sbi-fb-slctf-nxt svg { width: 6px; height: 10px; } .sbi-fb-slctf-back span { display: inline-block; margin-left: 15px; line-height: 160%; } .sbi-fb-slctf-nxt span { display: inline-block; margin-right: 15px; line-height: 160%; } .sbi-fb-btn-ac{ opacity: 0.6; } .sbi-fb-btn-ac[data-active="true"]{ opacity: 1; } .sb-control-single-id-ctn{ margin-top: 35px; padding: 25px 0px; } .sb-control-single-id-ctn:before, .sb-control-before-brd:before { content: ''; position: absolute; border-top: 1px solid #DCDDE1; height: 2px; top: 0px; left: -20px; width: calc(100% + 40px); } .sb-control-single-id-input{ display: flex; justify-content: center; align-items: center; margin-top: 7px; } .sb-control-single-id-input input{ height: 45px; float: left; background: #fff; margin-top: 6px; margin-right: 7px; } /* Video Type Chooser */ .sbi-fb-section-wh.sbi-fb-section-videos{ padding: 50px 21px 54px 30px; } .sbi-fb-videotype-chooser{ display: grid; grid-template-columns: 49% 49%; grid-column-gap: 1%; } .sbi-fb-section-videos{ flex-direction: column; } .sbi-fb-section-videos .sbi-fb-section-video-playlist{ margin-top: 30px; } .sbi-fb-section-video-playlist .sbi-fb-wh-inp{ margin-top: 10px; margin-bottom: 10px!important; } .sbi-fb-section-videos .sbi-fb-sglelm-left{ padding-right: 0px; } /* Source Screen */ .sbi-fb-sec-heading > span{ font-size:14px; color: #434960; line-height: 1.7em; display: block; } #sbi-builder-app .sbi-fb-sec-heading h4{ margin-bottom: 2px; } #sbi-builder-app .sbi-fb-slctsrc-ctn .sbi-fb-sec-heading h4{ margin-bottom: 2px !important; } .sbi-fb-sec-heading { margin-bottom: 14px; } .sbi-builder-app .sbi-fb-slctsrc-content,.sbi-fb-section-wh-insd{ padding: 23px 30px; } .sbi-fb-slctsrc-ctn h4,.sbi-fb-section-wh-insd h4{ font-size: 20px; padding: 0px; margin: 0px; } .sbi-fb-srcslist-ctn{ display: grid; grid-template-columns: 32.66% 32.66% 32.66%; grid-column-gap: 1%; margin-bottom: 28px; } .sbi-fb-srcs-item{ width: 100%; cursor: pointer; height: 62px; margin: 1% 0; border-radius: 3px; border: 1px solid #E7E7E9; display: flex; position: relative; } .sbi-fb-srcs-item[data-disabled="true"]{ background: #F3F4F5; } .sbi-fb-srcs-item[data-disabled="true"] .sbi-fb-srcs-item-inf{ opacity: .55; } #sbi-builder-app .sbi-fb-srcs-item .sbi-fb-srcs-item-inf .sbi-fb-srcs-item-name { color: #141B38; padding-right: 44px; } /*Disabled Controls*/ .sb-control-elem-ctn[data-disabled="true"] input[type="text"], .sb-control-elem-ctn[data-disabled="true"] input[type="number"], .sb-control-elem-ctn[data-disabled="true"] input[type="date"], .sb-control-elem-ctn[data-disabled="true"] textarea{ background: #f0f0f0!important; border-color: #D0D1D7!important; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-colorpicker-swatch{ background: #D0D1D7!important; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-checkbox{ background: #D0D1D7!important; border-color: #c1c1c1!important; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-toggle-elm{ background: #e5e6e7!important; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-toggle-elm{ border-color: #c1c1c1!important; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-toggle-elm[data-active="true"]{ border-top: 0px; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-toggle-elm .sb-control-toggle-deco{ border-color: #bbb!important; } .sb-control-elem-ctn[data-disabled="true"] .sb-control-toggle-elm[data-active="true"] .sb-control-toggle-deco{ border-color: #8C8F9A!important; } #sbi-builder-app .sbi-fb-srcs-item .sbi-fb-srcs-item-inf .sbi-fb-srcs-item-name span { max-height: 30px; display: block; overflow: hidden; line-height: 1.1; padding-bottom:1px; color: #141B38; } #sbi-builder-app .sbi-fb-srcs-item:hover{ border-color: #86D0F9; } #sbi-builder-app .sbi-fb-srcs-item[data-active="true"]{ border-color: #0096cc; } .sbi-fb-source-top .sbi-fb-srcs-item{ margin-bottom: 0px; } #sbi-builder-app .sbi-fb-srcs-new{ display: flex; justify-content: center; align-items: center; background: #EBF5FF; border: 1px solid #EBF5FF; } #sbi-builder-app .sbi-fb-srcs-new span{ margin-left: 13px; color: #0096CC; } .sbi-fb-srcs-new i{ font-size: 14px; padding: 0 10px; margin-left: -10px; } .sbi-fb-srcs-item-chkbx{ width: 40px; height: inherit; display: flex; justify-content: center; align-items: center; margin: 0 16px 0 7px; } .sbi-fb-srcs-item-chkbx-ic,.sbi-fb-chbx-round{ width: 16px; height: 16px; box-sizing: border-box; position: relative; border-radius: 50px; border: 2px solid #8c8f9a; } [data-source="active"] .sbi-fb-srcs-item-chkbx-ic{ border-radius: 2px; } [data-active="true"] .sbi-fb-srcs-item-chkbx-ic, [data-active="true"] > .sbi-fb-chbx-round, .sbi-fb-source-popup [data-active="true"] > .sbi-fb-chbx-round{ border-color: #0096cc; background: #0096cc; } [data-source="active"] [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before{ content: ''!important; position: absolute!important; width: 8px!important; height: 3px!important; border-left: 2px solid #fff; border-bottom: 2px solid #fff; top: 2px!important; right: 1px!important; left: unset!important; background: unset!important; border-radius: unset!important; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } [data-multifeed="inactive"] [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before, [data-active="true"] > .sbi-fb-chbx-round:before, .sbi-fb-source-popup .sbi-fb-source-list [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before, .sbi-fb-section-videos [data-active="true"] .sbi-fb-srcs-item-chkbx-ic:before{ content: ''; position: absolute; height: 6px; width: 6px; background: #fff; border-radius: 25px; left: 3px; top: 3px; } .sbi-fb-sources-empty-ctn{ padding: 24px 32px 28px 24px; background: #F9F9FA; border: 1px dashed #DCDDE1; margin-top: 10px; display: flex; align-items: center; } .sbi-fb-sources-empty-txt{ font-style: normal; font-weight: normal; font-size: 16px; line-height: 160%; color: #141B38; } .sbi-fb-sources-empty-btn-ctn{ margin-left: auto; } .sb-addsources-btn{ color: #fff; height: 27px; padding: 9px 23px; } .sb-addsources-btn svg{ margin-right: 10px; fill: currentColor; width: 14px; height: 14px; } .sbi-fb-mr-feeds,.sbi-fb-section-wh{ margin-top: 8px; background: #fff; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); display: flex; align-items: center; } .sbi-fb-mr-fd-img { float: left; margin-right: 6%; width: 28%; line-height: 0; } .sbi-fb-mr-fd-img img{ width: 100%; } .sbi-fb-mr-fd-content { display: flex; flex: 1; flex-direction: column; padding-right: 16px; } .sbi-fb-mr-fd-heading{ font-weight:600; font-size: 18px; line-height: 1.7em; margin-bottom: 24px; float: left; } .sbi-fb-mr-fd-list{ margin-bottom: 10px; display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1fr; justify-items: flex-start; gap: 8px; } .sbi-fb-mr-fd-item{ box-sizing: border-box; position: relative; border: 1px solid #DCDDE1; border-radius: 2px; height: 40px; width: 100%; min-width: 120px; color: #141B38; font-size: 14px; font-weight:600; text-transform: capitalize; display: flex; justify-content: center; align-items: center; transition: all .15s ease-in-out; } .sbi-icon-platform-wrap { width: 100%; display: flex; justify-content: left; align-items: center; padding: 0 5px; } .sbi-fb-mr-fd-ic { margin-right: 9px; } .sbi-fb-mr-fd-ic svg{ height: 16px; fill: currentColor; float: left; } #sbi-builder-app .sbi-fb-mr-fd-heading h3 { margin-bottom: 21px; max-width: 385px; } /*Embed Popup*/ .sbi-fb-embed-step-1{ margin-top: 36px; } .sbi-fb-embed-step-1 > div{ padding: 0 20px; } .sbi-fb-embed-step-1-top{ padding-bottom: 53px!important; border-bottom: 1px solid #E8E8EB; margin-bottom: 42px; } #sbi-builder-app .sbi-fb-embed-step-1 h4{ margin-bottom: 12px; } .sbi-fb-embed-input-ctn{ display: flex; } .sbi-fb-embed-input-ctn input, .sbi-fb-embed-input-ctn input[type="text"]{ position: relative; font-style: normal; font-weight: normal; font-size: 16px; line-height: 160%; color: #141B38; height: 44px; width: 77%; box-sizing: border-box; border-radius: 0px; border: 1px solid #D0D1D7!important; border-right: 0px!important; } .sbi-fb-embed-input-ctn input:focus, .sbi-fb-embed-input-ctn .sbi-fb-hd-btn:focus{ box-shadow: none!important; outline: none!important } .sbi-fb-embed-input-ctn .sbi-fb-hd-btn{ width: 23%; border-bottom-left-radius: 0px; border-top-left-radius: 0px; } .sbi-fb-embed-input-ctn svg{ width: 17px; fill: currentColor; float: left; margin-right: 10px; } .sbi-fb-embed-step-1-bottom h4{ text-align: center; } .sbi-fb-embed-btns-ctn{ display: flex; justify-content: center; gap: 2%; margin-top: 14px; margin-bottom: 60px; } .sbi-fb-embed-btn{ cursor: pointer; width: 100%; max-width: 400px; height: 50px; background: #F3F4F5; border-radius: 2px; border: 1px solid #DCDDE1; display: flex; align-items: center; justify-content: space-between; box-sizing: border-box; padding: 0 20px; position: relative; color: #141B38; font-size: 16px; font-weight: 500; } .sbi-fb-embed-btn .sb-icon-label svg{ fill: currentColor; width: 18px; margin-right: 10px; float: left; } .sbi-fb-embed-popup .sb-embed-breadcrumb { display: flex; align-items: center; padding: 25px 30px 0; margin-bottom: 2px; } .sb-embed-breadcrumb a { font-style: normal; font-weight: bold; font-size: 10px; line-height: 160%; letter-spacing: 0.08em; text-transform: uppercase; color: #434960; cursor: pointer; } .sb-embed-breadcrumb a:hover { color: #141B38; } .sb-embed-breadcrumb svg { margin-right: 8px; } .sbi-fb-embed-step-2 > div{ padding: 0 29px; } .sb-customizer-sidebar-cache-wrapper{ margin-top: 20px; padding: 0 20px; } .sbi-fb-embed-step-2-list{ margin-top: 25px; border-top: 1px solid #DCDDE1; padding-top: 14px !important; } .sbi-fb-embed-step-2-list > strong{ text-transform: uppercase; font-size: 12px; color: #434960; margin-bottom: 10px; } .sbi-fb-embed-step-2-pages{ margin-top: 8px; height: 250px; overflow: auto; } .sbi-fb-embed-step-2-pages .sb-control-toggle-icon svg { width: 11px; } .sbi-fb-embed-step-2-action{ padding: 10px 34px 10px 30px !important; background: #F3F4F5; box-shadow: 0px -4px 5px rgba(0, 0, 0, 0.1); } .sbi-fb-embed-step-2-action a{ color: #fff; } .sbi-fb-embed-step-2-action a[data-active="false"]{ opacity: .75; } /*Dialog Popup*/ .sbi-fb-dialog-remove-source{ background: #F3F4F5; padding: 40px 20px; display: flex; justify-content: center; align-items: center; } .sbi-fb-dialog-remove-source .sbi-fb-srcs-item{ background: #fff; width: 280px; padding-left: 20px; box-sizing: border-box; margin-top: 0px; } .sbi-fb-srcs-item-remove{ position: absolute; width: 35px; height: 35px; border-radius: 50px; background: #fff; border:1px solid #E7E7E9; z-index: 3; right: -13px; bottom: -13px; display: flex; justify-content: center; align-items: center; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); } .sbi-fb-srcs-item-remove svg{ width: 12px; float: left; fill: var(--error-red); } .sbi-fb-dialog-popup-content{ display: flex; justify-content: center; align-items: center; text-align: center; flex-direction: column; padding: 38px 12%; } .sbi-fb-dialog-popup-content strong{ font-size: 22px; color: #141B38; display: block; margin-bottom: 15px; } .sbi-fb-dialog-popup-content span{ font-size: 16px; line-height: 1.5em; color: #434960; } .sbi-fb-dialog-popup-actions{ display: flex; justify-content: center; align-items: center; margin-top: 25px; } .sbi-fb-dialog-popup-actions button{ width: 100%; margin: 4px 4px; cursor: pointer; height: 42px; } /* Footer Sticky Widget */ .sbi-stck-wdg{ position: fixed; right: 21px; z-index: 9; bottom: 20px; } .sbi-stck-wdg-btn{ width: 52px; height: 52px; background: #fff; border-radius: 50%; cursor: pointer; display: flex; justify-content: center; align-items: center; filter: drop-shadow(0px 9px 13px rgba(0, 0, 0, 0.2)); } .sbi-stck-wdg-btn svg{ width: 25px; fill: #FE544F; height: 33px; float: left; } .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn svg,.sbi-stck-wdg-btn-cls{ display: none; } .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls, .sbi-stck-wdg[data-active="true"] .sbi-stck-wdg-btn-cls svg{ display: block; } .sbi-stck-wdg-btn-cls{ width: inherit; height: inherit; position: relative; color: #364152; box-shadow: 0px 1px 6px rgba(0, 0, 0, .05), 0px 9px 12px rgba(0, 0, 0, .05); border-radius: 70px; } .sbi-stck-wdg-btn-cls svg { width: 14px; height: 14px; position: absolute; top: 50%; right: 0; bottom: 0; left: 50%; margin-top: -7px; margin-left: -7px; } .sbi-stck-pop{ position: absolute; width: 292px; height: auto; background: #fff; border: 1px solid #E2E8F0; box-sizing: border-box; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.15), 0px 3px 14px rgba(0, 0, 0, 0.12); border-radius: 2px; padding: 20px; right: 0px; bottom: 100px; color: #141B38; opacity: 0; padding-bottom: 82px; visibility: hidden; } .sbi-stck-wdg[data-active="true"] .sbi-stck-pop{ bottom: 66px; opacity: 1; visibility: visible; } .sbi-stck-pop svg{ fill: currentColor; } .sbi-stck-el-list{ border: 1px solid #DCDDE1; border-radius: 2px; } .sbi-stck-el{ display: flex; align-items: center; padding: 11px 13px; border-bottom: 1px solid #DCDDE1; } .sbi-stck-el:hover{ background: #F3F4F5; } .sbi-stck-el:last-of-type{ border-bottom: 0px; } .sbi-stck-el-list .sbi-chevron svg{ width: 5px; height: 8px; } .sbi-stck-el-list .sbi-stck-el-icon svg { } .sbi-stck-el .sbi-stck-el-txt{ color: #27303F; } .sbi-stck-el.sbi-stck-el-upgrd{ padding: 8px 14px; font-size: 14px; background: var(--cl-orange); color: #fff; } .sbi-chevron { position: absolute; right: 14px } .sbi-stck-el.sbi-stck-el-upgrd .sbi-stck-el-txt{ color: #fff; } .sbi-stck-el.sbi-stck-el-upgrd:after{ top: 20px; opacity: 1; } .sbi-stck-el-icon{ margin-right: 10px; } .sbi-stck-el-icon svg{ width: 17px; float: left; } .sbi-stck-el.sbi-stck-el-upgrd svg path{ fill: #fff!important; } #sbi-builder-app .sbi-stck-title{ margin-top: 20px; margin-bottom: 10px; } .sbi-stck-follow{ background: #F3F4F5; margin-top: 20px; left: 0px; bottom: 0px; position: absolute; padding: 12px 20px; display: flex; align-items: center; } .sbi-stck-follow span{ font-weight: 600; font-size: 14px; } .sbi-stck-flw-links{ display: flex; justify-content: center; align-items: center; margin-left: auto; } .sbi-stck-flw-links a{ width: 36px; height: 28px; color: inherit; display: inline-flex; justify-content: center; align-items: center; margin-left: 4px; border-radius: 2px; } .sbi-stck-flw-links svg{ width: 17px; color: #141B38; } .sbi-stck-flw-links a:hover{ background: #fff; } .sbi-stck-flw-links a:hover svg{ color: inherit; } /* Builder Footer */ .sbi-bld-footer > div{ background: #fff; color: #141B38; margin: 30px 0; } .sbi-bld-footer{ padding-top: 0px!important } .sbi-bld-ft-content{ display: flex; align-items: center; max-width: 1200px; } .sbi-bld-ft-img{ float: left; width: 15%; margin-right: 5%; /*height: 158px;*/ } .sbi-bld-ft-img svg{ margin-bottom: -4px; } .sbi-bld-ft-txt{ display: flex; justify-content: center; align-items: center; width: 59%; margin-right: 5%; } .sbi-bld-ft-txt strong, .sbi-fb-mr-fd-heading span{ color: var(--cl-orange); } #sbi-builder-app .sbi-bld-ft-info{ width: 44%; color: #434960; } #sb-footer-banner .sbi-bld-ft-title{ width: 63%; margin-right: 6%; } .sbi-bld-ft-action{ width: 17%; display: flex; justify-content: left; align-items: center; } .sbi-bld-ft-action svg{ top: 14px; height: 10px; } @media all and (max-width: 1130px) { #sb-footer-banner .sbi-bld-ft-img{ width: 17%; margin-right: 3%; } #sb-footer-banner .sbi-bld-ft-txt{ display: flex; justify-content: center; align-items: center; width: 61%; margin-right: 3%; } #sbi-builder-app #sb-footer-banner h3 { font-size: 20px; } #sbi-builder-app #sb-footer-banner .sb-small-p { font-size: 13px; } #sb-footer-banner .sb-button-standard { font-size: 13px; padding-left: 16px; line-height: 15px; } } .sbi-bld-ft-btm{ font-size: 14px; display: flex; justify-content: center; align-items: center; padding: 15px 0px; border-top: 1px solid #DCDDE1; } .sbi-bld-ft-btm strong{ padding: 0 5px; } .sbi-bld-ft-btm a{ display: inline-block; padding: 0 10px; font-weight: 500; color: #0068A0; } .sbi-bld-ft-btm a i{ font-size: 12px; margin-left: 5px; } .sbi-bld-ft-bns{ display: inline-block; margin: 0 10px; padding: 5px 10px; border-radius: 5px; font-size: 14px; font-weight: 700; text-transform: uppercase; color: #663D00; background: #FFDF99; } /* Extensions Poup */ .sbi-fb-fs-link{ position: absolute; width: 100%; height: 100%; left: 0; top: 0; right: 0; bottom: 0; z-index: 1; } .sbi-fb-extensions-popup{ } .sbi-fb-extpp-top{ display: flex; justify-content: center; align-items: center; height: 264px; background: #F3F4F5; } .sbi-fb-extpp-img{ width: 50%; float: left; display: flex; justify-content: center; } .sbi-fb-extensions-popup[data-getext-view="featuredpost"] .sbi-fb-extpp-img{ padding: 50px 0px; } .sbi-fb-extensions-popup[data-getext-view="singlealbum"] .sbi-fb-extpp-img{ padding: 65px 0px; } .sbi-fb-extpp-social-wall .sbi-fb-extpp-top { display: flex; flex-direction: column; align-items: center; height: auto; padding-top: 29px; } .sbi-fb-extensions-popup[data-getext-view="socialwall"] .sbi-fb-extpp-head { margin: 0 0 12px; padding-top: 14px; } .sbi-fb-extensions-popup[data-getext-view="socialwall"] .sbi-fb-extpp-head h2 { font-size: 24px !important; line-height: 120% !important; } .sbi-fb-extpp-info{ width: 50%; float: left; display: flex; justify-content: center; flex-direction: column; padding-left: 40px; } .sbi-fb-extensions-popup[data-getext-view="socialwall"] .sbi-fb-extpp-info { width: 40%; padding-right: 50px; } .sbi-fb-extensions-popup[data-getext-view="socialwall"] .sbi-fb-extpp-lite-btn { margin-top: 20px; max-width: 270px; box-sizing: border-box; padding: 7px 11px; } .sbi-fb-extensions-popup[data-getext-view="socialwall"] .sbi-extension-bullet-list { grid-template-columns: 33% 33% 33%; } #sbi-builder-app .sbi-fb-extensions-popup[data-getext-view="socialwall"] .sbi-fb-extpp-head{ margin: 0 0 9px; } #sbi-builder-app .sbi-fb-extpp-desc { color: #475569; display: flex; justify-content: center; align-items: center; } .sbi-fb-extpp-social-wall .sbi-fb-extpp-top { display: flex; flex-direction: column; align-items: center; height: auto; padding-top: 29px; } .sbi-fb-extpp-info{ width: 50%; float: left; display: flex; justify-content: center; flex-direction: column; padding-left: 40px; } .sbi-fb-extpp-info .sbi-fb-extpp-head, .sbi-fb-extpp-info .sbi-fb-extpp-desc{ width: 100%; } #sbi-builder-app .sbi-fb-extpp-head{ margin: 0 0 12px; } #sbi-builder-app .sbi-fb-extpp-desc { color: #475569; display: flex; justify-content: left; align-items: center; width: 105%; } .sbi-fb-extpp-head span{ color: var(--cl-orange); } .sbi-fb-extpp-head span.sb-social-wall{ color: inherit; font-size: 26px; line-height: 120% !important; display: inline-block; } .sbi-fb-extpp-desc .sb-social-wall { width: 90%; } .sbi-fb-extpp-head span{ color: var(--cl-orange); } .sbi-fb-extpp-lite-btn{ float: left; font-size: 15px; font-weight: 500; padding: 10px 20px; color: #0068A0; background: #fff; border: 1px solid #DCDDE1; margin-bottom: 14px; margin-top: 12px; align-items: center; } .sbi-fb-extpp-lite-btn svg{ fill: currentColor; width: 20px; float: left; margin-right: 10px; } .sbi-fb-extpp-inc-list{ border: 1px solid #dcdde1; margin-top: 10px; margin-bottom: 30px; } .sbi-fb-extpp-bottom-strg{ font-size:18px; font-weight: 600; } .sbi-fb-extpp-inc-items{ display: grid; grid-template-columns: 25% 25% 25% 25%; } .sbi-fb-extpp-inc-item, .sbi-fb-extpp-inc-item-bottom{ position: relative; height: 50px; display: flex; justify-content: center; align-items: center; border-right: 1px solid #dcdde1; border-bottom: 1px solid #dcdde1; font-size: 14px; } .sbi-fb-extpp-inc-item-bottom{ border: 0px !important; } .sbi-fb-extpp-inc-item:last-of-type{ border-right: 0px; } .sbi-fb-extpp-inc-item svg, .sbi-fb-extpp-inc-item-bottom svg{ width: 17px; margin-right: 10px; fill: currentColor; float: left; } .sbi-fb-extpp-bottom{ padding: 20px 40px; background: #fff; } .sbi-extension-bullet-list { display: grid; grid-template-columns: 33% 33% 33%; grid-column-gap: 2%; margin-top: 12px; margin-bottom: 40px; } .sbi-extension-single-bullet { display: flex; justify-content: flex-start; align-items: center; margin: 4px 0; } #sbi-builder-app .sbi-extension-single-bullet span { color: #434960; } .sbi-extension-single-bullet svg { margin-right: 12px; } .sbi-fb-extpp-btns{ display: grid; grid-template-columns: 100%; grid-column-gap: 1%; } .sbi-fb-extpp-btns div{ height: 38px; cursor: pointer; position: relative; border-radius: 3px; font-style: normal; font-weight: 600; font-size: 14px; line-height: 160%; display: flex; justify-content: center; align-items: center; box-sizing: border-box; } .sbi-fb-extpp-get-btn{ color: #fff; background: var(--cl-orange); } .sbi-fb-extpp-demo-btn{ border: 2px solid #DCDDE1; background: #F3F4F5; } /* Feed Type Creation Process : Single Album; */ .sbi-fb-section-wh-insd{ display: flex; } .sbi-fb-sglelm-inp-ctn{ margin-top: 100px; } .sbi-fb-sglelm-inp-ctn input[type="text"]{ height: 44px; } .sbi-fb-section-wh.sbi-fb-sglelm-ctn { padding: 20px 21px 24px 30px; } .sbi-fb-section-wh.sbi-fb-sglelm-ctn .sbi-fb-section-wh-insd { padding: 0; } .sbi-fb-sglelm-inp-ctn input[type="text"]::placeholder{ font-style: normal; font-weight: normal; font-size: 16px; line-height: 160%; color: #8C8F9A; } .sbi-fb-sglelm-error-icon{ width: 23px; height: 23px; background: var(--error-red); font-family: monospace; font-weight: 900; color: #fff; font-size: 15px; position: absolute; right: 10px; top: 10px; z-index: 999999999999999999; border-radius: 50px; display: flex; justify-content: center; align-items: center; } .sbi-fb-sglelm-errormsg{ color: var(--error-red); font-weight: 800; } .sbi-fb-sglelm-inp-ctn .sbi-fb-wh-inp{ margin-bottom: 10px; } .sbi-fb-sglelm-left{ padding-right: 100px; } .sbi-fb-sglelm-img-ctn{ background:#E8E8EB; height: 350px; display: flex; justify-content: center; align-items: center; text-align: center; flex-direction: column; padding: 100px 50px; border: 1px solid #D0D1D7; box-sizing: border-box; } .sbi-fb-sglelm-img-ctn.sbi-fb-sglelm-img-pf{ padding: 100px 35px; } .sbi-fb-sglelm-img-ctn strong{ font-size: 16px; color: #434960; margin-bottom: 8px; margin-top: 30px; } .sbi-fb-sglelm-img-ctn span{ font-size: 14px; line-height:1.6em; color: #8C8F9A; } .sbi-fb-sglelm-right{ width: 445px } .sbi-fb-sglelm-img-errorctn span{ padding: 0 20px; color: #434960; font-size: 20px; margin-top: 30px; line-height: 1.2em; } .sbi-fb-sglelm-preview{ height: 375px; background-color: #141B38; background-position: center center; background-size: cover; display: flex; justify-content: center; align-items: flex-end; color: #fff; } .sbi-fb-sglelm-preview:after{ content: ''; position: absolute; width: 100%; height: 100%; background-image: linear-gradient(to bottom, rgba(0,0,0,0) , rgba(0,0,0,.5)); } .sbi-fb-sglelm-prev-info{ width: 100%; padding: 20px 30px; padding-bottom: 40px; display: flex; justify-content: center; align-items: center; text-align: center; flex-direction: column; z-index: 2; } .sbi-fb-sglelm-prev-info strong{ font-size: 18px; margin-bottom: 5px; } .sbi-fb-sglelm-prev-info span{ font-size: 16px; line-height: 1.7em; } /* Feeds List */ #sbi-builder-app .sbi-fb-select, #sbi-builder-app .sbi-fb-select:hover, #sbi-builder-app .sbi-fb-select:focus{ border-radius: 0px!important; border: 1px solid #D0D1D7!important; outline: unset!important; float: left; min-height: auto; padding: 6px 31px 6px 8px; background: #fff url("data:image/svg+xml,%3Csvg width='10' height='5' viewBox='0 0 10 5' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.833252 0.333252L4.99992 4.49992L9.16658 0.333252H0.833252Z' fill='%238C8F9A'/%3E%3C/svg%3E%0A") no-repeat right 13px top 55%; background-size: 10px 6px; } .sbi-fd-lst-bulk-ctn > *{ float: left; margin-right: 10px; } .sbi-fd-lst-bulk-ctn{ margin-bottom: 8px; } .sbi-fd-lst-pagination-ctn{ float: right; display: flex; align-items: center; margin-top: 10px; } .sbi-fd-lst-pgnt-btn{ height: 30px; padding: 0 8px; cursor: pointer; border-radius: 3px; } .sbi-fd-lst-pgnt-info{ display: inline-block; padding: 0 3px; } .sbi-fd-lst-count{ margin-right: 10px; } .sbi-feeds-list table{ width: 100%; text-align: left; border-spacing: 0px; box-sizing: border-box; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); background: #fff; } .sbi-feeds-list table a{ cursor: pointer; } .sbi-fd-lst-tbody tr:nth-child(odd){ background: #F3F4F5; } .sbi-fd-lst-tbody tr td{ position: relative; vertical-align: top; padding: 12px 5px; font-size: 16px; } .sbi-feeds-list table tr td:first-child { width: 30px; } .sbi-fd-lst-thtf{ background: #fff; } .sbi-fd-lst-thtf th, .sbi-fd-lst-thtf td{ padding: 6px 5px; } .sbi-fd-lst-thtf th{ border-bottom: 1px solid #DCDDE1; } .sbi-fd-lst-thtf td{ border-top: 1px solid #DCDDE1; } .sbi-fd-lst-chkbx{ width: 11px; height: 11px; position: relative; border-radius: 2px; border: 1px solid #97A6BA; background: #fff; cursor: pointer; margin-left: 10px; } tbody .sbi-fd-lst-chkbx { position: absolute; top: 15px; left: 5px; bottom: 0; right: 0; } .sbi-fd-lst-thtf .sbi-fd-lst-chkbx{ width: 11px; height: 11px; border: 1px solid #D8DADD; } .sbi-fd-lst-chkbx[data-active="true"]{ background: var(--customizer-blue); border-color: var(--customizer-blue)!important; } .sbi-fd-lst-chkbx[data-active="true"]:before{ content: ''; position: absolute; width: 6px; height: 3px; left: 2px; top: 2px; border-bottom: 2px solid #fff; border-left: 2px solid #fff; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-fd-lst-name{ font-size: 17px; font-weight:500; color: #0068A0!important; } .sbi-fd-lst-type{ display: block; text-transform: capitalize; } .sb-instances-cell { margin-top: 4px; } .sbi-fd-lst-btn{ width: 21px; height: 21px; display: inline-flex; justify-content: center; align-items: center; margin: 0 4px; cursor: pointer; color: #141B38; border-radius: 2px; border: 1px solid #D8DADD; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; background: #fff; } .sbi-fd-lst-btn svg { height: 13px; } .sbi-fd-lst-actions .sbi-fd-lst-btn, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-btn{ box-sizing: border-box; width: 36px; height: 32px; background: transparent; } .sbi-fd-lst-actions .sbi-fd-lst-btn { margin: 0 4px 0 0; } .sbi-fd-lst-actions .sbi-fd-lst-btn:last-child { margin: 0; } .sbi-fd-lst-actions .sbi-fd-lst-btn svg { width: 12px; height: 16px; } .sbi-fd-lst-btn-delete{ color: #D72C2C; border-color: #FBD5D5; } .sbi-fd-lst-btn svg{ fill: currentColor; width: 14px; float: left; } .sbi-fd-lst-actions .sbi-fd-lst-btn:hover svg, .sbi-feedtype-section .sbi-fd-lst-btn-delete:hover svg{ color: #fff; } .sbi-fd-lst-actions .sbi-fd-lst-btn:hover{ background: #0096CC; border-color: #0096CC; } .sbi-fd-lst-actions .sbi-fd-lst-btn-delete:hover, .sbi-feedtype-section .sbi-fd-lst-btn-delete:hover{ background: #D72C2C; border-color: #D72C2C; } .sbi-fd-lst-dimmed .sbi-fd-lst-btn, .sbi-fd-lst-dimmed .sbi-fd-lst-btn:hover{ background: #F3F4F5!important; border-color:#D8DADD!important; color: #8C8F9A!important; } .sbi-fd-lst-dimmed .sbi-fd-lst-btn:hover svg{ color: #8C8F9A!important; } .sbi-fb-tltp-parent{ position: relative; } .sbi-fb-view-instances[data-active="true"]{ font-weight: 600; text-decoration: underline; cursor: pointer; line-height: 1em; } .sbi-fb-tltp-elem{ position: absolute; color: #fff; background: #434960; font-size: 14px; padding: 7px 10px; border-radius: 3px; font-weight:500; z-index: 9; text-align: center; opacity: 0; visibility: hidden; top: calc(-100% - 30px); left: 50%; -webkit-transform: translateX(-50%); transform: translateX(-50%); -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sbi-fb-tltp-elem span{ position: relative; z-index: 3; } .sbi-fb-tltp-elem:after{ content: ''; position: absolute; height: 10px; width: 10px; bottom: -5px; left: calc(50% - 5px); background: #434960; transform: rotate(-45deg); } .sbi-fb-tltp-parent:hover .sbi-fb-tltp-elem { top: calc(-100% - 20px); opacity: 1; visibility: visible; } .sbi-fd-lst-shortcode-cp{ margin-left: 10px; } .sbi-fd-lst-act-th{ width: 190px; max-width: 190px; } /* Feed Instance Popup */ .sbi-fb-popup-feedinst .sbi-fb-source-top{ display: flex; align-items: center; } .sbi-fb-popup-feedinst h5{ margin-bottom: 0px; float: left; font-size: 27px; } .sbi-fb-fdinst-type{ padding: 5px 5px; background: #E8E8EB; margin-left: 12px; float: left; } .sbi-fb-inst-tbl-ctn{ padding: 0 23px 63px; } .sbi-fb-inst-tbl-ctn table{ width: 100%; border-spacing: unset; box-sizing: border-box; border: 1px solid #DCDDE1; text-align: left; } .sbi-fb-inst-tbl-ctn tfoot,.sbi-fb-inst-tbl-ctn thead{ background: #F3F4F5 } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf th, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf td{ font-size: 13px; color: #364152; padding: 13px 10px; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-tbody tr:nth-child(odd){ background: #fff; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-tbody tr:nth-child(even){ background: #F3F4F5; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf tr th, .sbi-fb-inst-tbl-ctn .sbi-fd-lst-thtf tr td{ padding: 4px 20px; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-tbody tr td{ padding: 11px 20px; } .sbi-fb-inst-tbl-ctn .sbi-fd-lst-name{ font-size: 14px; } .sbi-fb-inst-tbl-shrtc{ display: flex; align-items: center; } .sbi-fd-inst-btn{ width: 10px; height: 10px; box-sizing: border-box; border-right: 3px solid #8C8F9A; border-top: 3px solid #8C8F9A; cursor: pointer; -webkit-transform: rotate(45deg); transform: rotate(45deg); } /*Legacy Feeds */ .sbi-fb-lgc-top-new{ color: #141B38; background: #fff; margin: 10px 0px; padding: 15px 20px; display: flex; justify-content: center; align-items: center; font-size: 14px; font-weight: 600; } .sbi-fb-lgc-gr{ font-size: 12px; text-transform: uppercase; font-weight: 500; background: #59AB46; color: #fff; margin-right: 10px; padding: 6px 10px; border-radius: 2px; line-height: 1em; } .sbi-fb-lgc-inf-ctn{ background: #fff; padding: 0 20px; display: flex; align-items: center; height: 58px; } .sbi-fb-lgc-inf-ctn > h4{ margin-right: 10px!important; } .sbi-fb-lgc-inf-ctn > *{ float: left; display: inline-block; position: relative; } #sbi-builder-app .sbi-fb-lgc-inf-ctn > h4{ margin-right: 14px; margin-bottom: 0; } #sbi-builder-app .sbi-fb-lgc-btn-stg{ display: flex; margin-left: auto; } .sbi-fd-legacy-feed-toggle{ height: 34px; display: flex; justify-content: center; align-items: center; background: #E2F5FF; color:#0068A0; cursor: pointer; font-weight: 600; font-size: 14px; line-height: 160%; } .sbi-fd-legacy-feed-toggle:hover { background: #BFE8FF; } .sbi-fd-legacy-feed-toggle span{ display: inline-block; position: relative; padding-right: 20px; margin-left: -20px; } .sbi-fd-legacy-feed-toggle[data-active="true"] span:after{ -webkit-transform: rotate(-225deg); transform: rotate(-225deg); top: 7px; } .sbi-feeds-list .sbi-legacy-table-wrap table{ box-shadow: none; border-top: 1px solid #DCDDE1; } .sbi-fb-lgc-ctn{ box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); margin-bottom: 20px; } .sbi-fb-onbrd-infotxt{ display: flex; align-items: center; } .sbi-fb-onbrd-infotxt svg{ fill: currentColor; width: 16px; display: inline-block; margin-left: 10px; float: left; } .sbi-fb-onbrd-tltp-parent{ position: relative; } .sbi-fb-onbrd-tltp-elem{ position: absolute; z-index: 9; background: #fff; border-radius: 2px; color: #434960; padding: 16px 52px 4px 24px; font-size: 15px; left: -30px; top: calc(100% + 20px); line-height: 1.7em; box-shadow: 0px 1px 18px rgba(0,0,0,.2); display: none; } .sbi-fb-onbrd-tltp-elem[data-active="false"]{ display: none; } .sbi-fb-onbrd-tltp-elem[data-active="true"], .sbi-fb-onbrd-tltp-hover:hover .sbi-fb-onbrd-tltp-elem{ display: block; min-width: 440px; padding-bottom: 15px; } .sbi-fb-onbrd-tltp-elem .sb-pointer { position: absolute; left: 85px; top: -17px; } .sbi-fb-onbrd-tltp-elem-2 .sb-pointer { left: 485px; } .sbi-fb-onbrd-tltp-elem:after{ background: #fff; z-index: 999; top: 0px; margin-left: -10px; width: 40px; box-shadow: unset; -webkit-transform: rotate(0deg); transform: rotate(0deg); } .sbi-fb-onbrd-tltp-parent.sbi-fb-onbrd-tltp-center-top .sbi-fb-onbrd-tltp-elem{ left: 50%; -webkit-transform:translateX(-50%); transform:translateX(-50%); bottom: calc(100% + 15px); top: unset; padding: 8px 11px; width: 100%; text-align: center; box-shadow: 0 5px 9px rgba(0,0,0,.2), 0 -4px 9px rgba(0,0,0,.1); } .sbi-fb-onbrd-tltp-parent.sbi-fb-onbrd-tltp-center-top .sbi-fb-onbrd-tltp-elem:before { content: ''; position: absolute; left: 50%; bottom: -10px; border-top: 12px solid #fff; border-right: 12px solid transparent; border-left: 12px solid transparent; -webkit-transform: translateX(-50%); transform: translateX(-50%); z-index: 2; } .sbi-fb-onbrd-tltp-parent.sbi-fb-onbrd-tltp-center-top .sbi-fb-onbrd-tltp-elem:before, .sbi-fb-onbrd-tltp-parent.sbi-fb-onbrd-tltp-center-top .sbi-fb-onbrd-tltp-elem:after{ left: calc(50% - 10px); top: unset; } .sbi-fb-onbrd-tltp-parent.sbi-fb-onbrd-tltp-center-top .sbi-fb-onbrd-tltp-elem:before{ bottom: -10px; } .sbi-fb-onbrd-tltp-parent.sbi-fb-onbrd-tltp-center-top .sbi-fb-onbrd-tltp-elem:after{ bottom: 0px; } #sbi-builder-app .sbi-fb-onbrd-tltp-txt{ margin: 0px; } .sbi-fb-onbrd-tltp-txt:last-of-type{ margin-bottom: 0px; } .sbi-fb-onbrd-tltp-elem .sbi-fb-popup-cls{ top: 12px; right: 16px; } [data-tltp-pos*="right"] .sbi-fb-onbrd-tltp-elem{ right: 50px; left: unset; } [data-tltp-pos*="right"] .sbi-fb-onbrd-tltp-elem:before, [data-tltp-pos*="right"] .sbi-fb-onbrd-tltp-elem:after{ left: unset; right: 13% } [data-tltp-pos*="right"] .sbi-fb-onbrd-tltp-elem:after{ margin-left: unset; margin-right: -10px; } .sbi-fd-lst-dimmed .sbi-fb-onbrd-tltp-elem{ top: 100%; } .sbi-fb-cp-clpboard{ width: 0px; height: 0px; position: absolute; left: -100000px; } .sbi-fb-copied{ position: fixed; z-index: 9999999; background: #010101; color: #fff; line-height: 1em; font-size: 15px; font-weight: 500; padding: 10px 20px; opacity: 0; visibility: hidden; -webkit-transition: all .2s ease-in-out, opacity .4s ease-in-out; transition: all .2s ease-in-out, opacity .4s ease-in-out; left: 50%; bottom: -20px; -webkit-transform: translateX(-50%); transform: translateX(-50%); } .sbi-fb-copied[data-active="true"]{ opacity: 1; visibility: visible; bottom: 20px; } /* **** customizer Screens **** */ .sb-customizer-ctn{ /*margin-top: 52px;*/ min-height: 100vh; } .sb-customizer-sidebar{ position: fixed; z-index: 100; width: 375px; box-shadow: 4px 0px 14px rgba(0, 0, 0, .05), 1px 0px 4px rgba(0, 0, 0, .1); background: #fff; left: 160px; top: 96px; overflow: auto; bottom: 0px; padding-bottom: 50px; } .jetpack-masterbar .sb-customizer-sidebar { left: 272px; } body.folded .sb-customizer-sidebar{ left: 36px; } .sb-customizer-sidebar-tab-ctn{ display: flex; justify-content: center; align-items: center; margin-bottom: 24px; } .sb-customizer-sidebar-tab{ width: 50%; height: 56px; background: #F3F4F5; border-bottom: 2px solid #F3F4F5; display: flex; justify-content: center; align-items: center; cursor: pointer; } .sb-customizer-sidebar-tab[data-active="true"]{ border-color: #0096CC; } .sb-customizer-sidebar-tab:hover { background: #fff!important; color: #141B38!important; } .sb-customizer-sidebar-sec-el{ height: 52px; cursor: pointer; display: flex; align-items: center; color: #141B38; border-bottom: 1px solid #DCDDE1; -webkit-transition: background .2s ease-in-out; transition: background .2s ease-in-out; padding: 0 20px; } .sb-customizer-sidebar-sec-el:hover{ background: #F3F4F5; border-bottom: 1px solid #F3F4F5; } .sb-customizer-sidebar-sec-el .sb-customizer-chevron svg{ position: absolute; right: 22px; top: 22px; } .sb-customizer-sidebar-sec-el-icon{ margin-right: 15px; width: 30px; height: 30px; display: flex; justify-content: center; align-items: center; } .sb-customizer-sidebar-sec-el-icon svg{ width: 20px; float: left; fill: currentColor; } .sb-customizer-sidebar-sec-elhead{ height: 50px; padding: 0 20px; display: flex; align-items: center; margin-top: 30px; font-style: normal; font-weight: bold; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; color: #8C8F9A; } .sb-customizer-sidebar-header{ padding: 20px 20px; border-bottom: 1px solid #DCDDE1; } .sb-customizer-sidebar-header[data-separator="none"]{ border-bottom: 0px!important; padding-bottom: 0px; } .sb-customizer-sidebar-breadcrumb{ margin-bottom: 15px; } .sb-customizer-sidebar-sec1 a:hover{ text-decoration: underline; cursor: pointer; } .sb-breadcrumb-pro-label{ color: #fff !important; display: inline-block; background: var(--cl-orange); padding: 5px 8px; font-size: 11px; line-height: 1em !important; border-radius: 4px; -webkit-transform: translateX(5px) translateY(-4px); transform: translateX(8px) translateY(-2px); } .sb-control-elem-label .sb-breadcrumb-pro-label{ -webkit-transform: translateX(5px) translateY(0px); transform: translateX(5px) translateY(0px); } .sb-customizer-sidebar-breadcrumb a, .sb-customizer-sidebar-breadcrumb span{ display: inline-block; position: relative; cursor: pointer; color: #434960; text-transform: uppercase; font-size: 10px; line-height: 160%; letter-spacing: 0.08em; padding: 0 17px; height: 20px; font-weight: 600; } .sb-customizer-sidebar-breadcrumb span{ cursor: text; } .sb-customizer-sidebar-breadcrumb svg { position: absolute; left: 4px; top: 6px; } .sb-customizer-sidebar-header strong{ font-size: 26px; color: #141B38; display: block; margin-bottom: 10px; line-height: 1.1em; } .sb-customizer-sidebar-header span{ line-height: 1em; color: #434960; } .sb-customizer-sidebar-intro { display: block; padding: 5px 0 10px 0; line-height: 1.7 !important; } .sb-customizer-ctrl-link{ text-decoration: underline!important; } /* Controls Style */ .sb-control-label[data-title="true"]{ font-weight: 600; } .sb-control-elem-ctn{ display: flex; color: #141B38; padding: 20px 20px; } .sb-control-elem-ctn[data-stacked="true"]{ padding: 5px 20px; } .sb-control-elem-ctn[data-type="heading"]{ padding-bottom: 0; } .sb-control-elem-overlay{ width: 100%!important; height: 100%!important; position: absolute!important; left: 0!important; top: 0!important; z-index: 5!important; background: rgba(255,255,255,0.4)!important; } #sbi-builder-app .sb-control-elem-ctn[data-type="heading"] .sb-small-p{ font-weight: 600; } #sbi-builder-app .sb-control-elem-ctn[data-type="heading"] .sb-control-elem-description{ font-style: normal; font-weight: normal; font-size: 12px; line-height: 150%; color: #434960; } #sbi-builder-app .sb-control-elem-ctn[data-type="heading"] .sb-control-elem-label { margin-bottom: 0; } .sb-control-elem-heading svg { margin-left: 8px; } .sb-control-elem-ctn[data-separator="top"],.sb-control-elem-ctn[data-separator="both"]{ border-top: 1px solid #DCDDE1; } .sb-control-elem-ctn[data-separator="bottom"],.sb-control-elem-ctn[data-separator="both"]{ border-bottom: 1px solid #DCDDE1; } .sb-control-elem-ctn[data-type="separator"]{ padding: 0; } .sb-control-elem-separator{ height: 2px; border-top: 1px solid #DCDDE1; } .sb-control-elem-ctn[data-reverse="true"]{ flex-direction: row-reverse; } .sb-control-elem-ctn svg{ fill: currentColor; } .sb-control-elem-output{ padding-left: 20px; } .sb-control-elem-ctn[data-reverse="true"] .sb-control-elem-output{ padding-right: 20px; padding-left: 0px; } .sb-control-elem-ctn[data-layout="block"]{ display: block; } .sb-control-elem-ctn[data-layout="block"] .sb-control-elem-label{ width: 100%; float: left; margin-bottom: 8px; } .sb-control-elem-ctn[data-layout="block"] .sb-control-elem-output{ padding: 0px; } .sb-control-elem-ctn[data-layout="block"] input[type="number"] { height: 36px; background: #FFFFFF; border-radius: 1px 0 0 1px !important; /*border-right-color: #F3F4F5 !important;*/ } .sb-control-elem-ctn[data-layout="block"] [data-contains-suffix="true"] input[type="number"]{ border-right-color: #F3F4F5 !important; } .sb-control-elem-ctn[data-child="true"]{ padding-left: 70px; } .sb-control-elem-ctn[data-layout="half"]{ align-items: center; justify-content: flex-start; } .sb-control-elem-ctn[data-layout="half"][data-switcher-top="true"]{ align-items: flex-start!important; } .sb-control-elem-ctn[data-layout="half"][data-switcher-top="true"] .sb-control-switcher-ctn{ margin-top: 5px; } .sb-control-elem-ctn[data-layout="half"] > div{ width: 100%; } .sb-control-elem-ctn[data-type="switcher"][data-reverse="true"][data-layout="half"] > div{ width: unset; } .sb-control-elem-ctn[data-layout="half"][data-reverse="true"]{ justify-content: flex-end; } [data-type="switcher"][data-reverse="true"][data-layout="half"] .sb-control-elem-output{ padding-right: 5px; } .sb-control-elem-label-title{ display: flex; align-items: center; } .sb-control-elem-description{ color: #434960; font-size: 13px; float: left; margin-top: 4px; } .sb-control-elem-description a{ cursor: pointer; } .sb-control-elem-ctn[data-heading="strong"] .sb-control-elem-heading{ font-weight: 500!important; } .sb-control-elem-heading[data-underline="true"]{ text-decoration: underline; } .sb-control-elem-icon{ display: flex; justify-content: center; align-items: center; } .sb-control-elem-icon svg{ width: 16px; float: left; margin-right: 10px; } .sb-control-elem-tltp{ margin-left: 10px; position: relative; } .sb-control-elem-tltp-icon{ float: left; cursor: pointer; } .sb-control-elem-tltp-icon svg{ width: 14px; float: left; } /*Switcher Control*/ .sb-control-switcher-ctn{ cursor: pointer; display: flex; align-items: center; float: left; } .sb-control-switcher{ width: 36px; height: 18px; border-radius: 25px; background: #D0D1D7; position: relative; margin-right: 10px; } .sb-control-switcher:before{ content: ''; position: absolute; height: 14px; width: 14px; left: 3px; top: 2px; border-radius: 25px; background: #fff; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25); -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sb-control-switcher-ctn[data-active="true"] .sb-control-switcher{ background: var(--customizer-blue); } .sb-control-switcher-ctn[data-active="true"] .sb-control-switcher:before{ left: 19px; } /*Toggle SINGLE Control*/ .sb-control-toggle-elm{ display: flex; align-items: center; cursor: pointer; height: 46px; padding: 0 15px; border-right: 1px solid #E8E8EB; border-left: 1px solid #E8E8EB; border-bottom: 1px solid #E8E8EB; } .sb-control-toggle-elm:first-child { border-top: 1px solid #E8E8EB; } .sb-control-toggle-extension-cover{ width: 100%; height: 100%; position: absolute; left: 0px; top: 0; cursor: pointer; z-index: 4; } .sb-control-toggle-deco{ width: 16px; height: 16px; margin-right: 13px; box-sizing: border-box; border-radius: 50%; border: 2px solid #d0d1d7; } .sb-control-toggle-icon{ display: flex; justify-content: center; align-items: center; margin-right: 13px; } .sb-control-toggle-icon svg{ width: 16px; float: left; fill: #141B38; } .sb-control-toggle-elm .sb-control-label span { display: flex; align-items: center; gap: 10px; } .sb-control-toggle-elm[data-active="true"]{ background: #F7FDFF; border-radius: 2px; border: 1px solid var(--customizer-blue); } .sb-control-toggle-elm[data-active="true"]{ background: #F7FDFF; border-radius: 2px; border: 1px solid var(--customizer-blue); } .sb-control-toggle-elm:hover:not(.sb-control-toggle-elm[data-disabled="true"]) .sb-control-toggle-deco, .sb-control-toggle-elm[data-active="true"]:not(.sb-control-toggle-elm[data-disabled="true"]):hover .sb-control-toggle-deco{ border: 4px solid var(--customizer-blue); background: #fff; } .sb-control-toggle-elm[data-active="true"] .sb-control-toggle-deco{ border: 6px solid var(--customizer-blue); background: #fff; } /*Toggle SET Control*/ .sb-control-toggle-set-ctn .sb-control-toggle-elm[data-active="true"]{ border-radius: 0px; } /*Toggle Button Control*/ .sb-control-togglebutton-ctn{ display: flex; align-items: center; justify-content: center; padding: 3px; background: #f3f4f5; border-radius: 4px; border: 1px solid #eee; height: 40px; } .sb-control-togglebutton-elm{ width: 100%; display: flex; justify-content: center; align-items: center; height: 33px; cursor: pointer; font-weight: 600; border-radius: 4px; text-transform: capitalize; line-height: 1em; } .sb-control-togglebutton-elm[data-active="true"]{ color: var(--dark-blue); background: #fff; } .sb-control-togglebutton-elm:hover{ color: var(--dark-blue); } .sb-control-toggle-set-desc-ctn .sb-control-label{ font-weight: 600; } .sb-control-toggle-set-desc-ctn .sb-control-toggle-elm{ height: 82px; } .sb-control-toggle-set-desc-ctn .sb-control-toggle-deco{ flex-grow: 0; flex-shrink: 0; } .sb-control-moderatiomode-selement .sb-control-elem-label-title{ margin-bottom: 15px; } .sb-control-moderatiomode-selement{ margin-bottom: 20px; padding: 20px 0px; } /*Input Control*/ .sb-control-input-ctn{ display: flex; } .sb-control-input,.sb-control-input-textrea{ height: 40px; background: #fff; border: 1px solid #D0D1D7!important; border-radius: unset!important; outline: unset!important; padding: 0 10px!important; line-height: 1em; margin: 0px; } .sb-control-input-textrea{ padding: 10px!important; height: 120px; line-height: 1.5em; } .sb-control-input:hover{ color: inherit!important; } .sb-control-input:focus,.sb-control-input-textrea:focus{ border: 1px solid #8C8F9A!important; border-radius: unset!important; box-shadow: unset!important; outline: unset!important; } .sb-control-input[disabled],.sb-control-input-textrea[disabled]{ background-color: #F3F4F5; border: 1px solid #E8E8EB; } .sb-control-input-info{ display: flex; justify-content: center; align-items: center; background: #F3F4F5; padding: 0 8px; font-weight: normal; font-size: 14px; line-height: 160%; color: #434960; border: 1px solid #D0D1D7; border-left: none; border-radius: 0 1px 1px 0 !important; } /*ImageChooser Control*/ .sb-control-imagechooser-ctn{ display: flex; background: #F3F4F5; border: 1px solid #ccc!important; height: 40px; } .sb-control-imagechooser-input, .sb-control-imagechooser-input:focus{ outline: none!important; border: none!important; box-shadow: none!important; background: none!important; height: 40px; } .sb-control-imagechooser-btn svg{ width: 18px; margin-right: 5px; float: left; } .sb-control-imagechooser-btn{ display: flex; justify-content: center; align-items: center; padding: 0 10px; cursor: pointer; border-left: 1px solid #ccc!important; font-weight: 500; color: #141B38; } .sb-control-imagechooser-clear{ position: absolute; right: 4px; top: 10px; } .sb-control-imagechooser-clear-icon{ position: relative; width: 20px; height: 20px; color: #141B38; cursor: pointer; opacity: 0.5; } .sb-control-imagechooser-clear-icon:hover{ opacity: 1; } .sb-control-imagechooser-clear-icon:before, .sb-control-imagechooser-clear-icon:after{ content: ''; position: absolute; width: 16px; height: 2px; background: currentColor; left: 2px; top: 9px; -webkit-transform:rotate(45deg); transform:rotate(45deg); } .sb-control-imagechooser-clear-icon:after{ -webkit-transform:rotate(-45deg); transform:rotate(-45deg); } .sb-control-imagechooser-padding{ padding-right: 31px!important; } /*CheckBox Control*/ .sb-control-checkbox-ctn{ cursor: pointer; display: flex; } [data-disabled="true"] .sb-control-checkbox{ z-index: -1!important; } .sb-control-checkbox{ width: 18px; height: 18px; border-radius: 2px; float: left; border: 2px solid #D0D1D7; box-sizing: border-box; position: relative; margin-right: 10px; flex: none; } .sb-control-checkbox-ctn > div{ z-index: 3; } .sb-control-checkbox-ctn:hover .sb-control-checkbox-hover{ opacity: 1; } .sb-control-checkbox-hover{ position: absolute; left: -20px; top: 0px; width: calc(100% + 40px); height: 100%; background:#F3F4F5; z-index: 1; opacity: 0; } .sb-control-checkbox{ z-index: 5!important; } .sb-control-checkbox[data-active="true"]{ background: var(--customizer-blue); border-color: var(--customizer-blue); color: #fff; } .sb-control-checkbox[data-active="true"]:before{ content: ''; position: absolute; width: 8px; height: 4px; top: 2px; left: 2px; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } /*Action Button Control*/ .sb-control-action-button{ height: 38px; cursor: pointer; display: flex; flex-direction: row; justify-content: center; align-items: center; background: #F3F4F5; border-radius: 2px; border: 1px solid #DCDDE1; position: relative; line-height: 1em; margin-top: 7px; } .sb-control-action-button div{ float: left; width: 20px; height: 20px; display: flex; justify-content: center; align-items: center; margin-right: 8px; } .sb-control-action-button svg{ width: 17px; } /* WPColorPicker Control Redesign */ .sb-control-colorpicker-ctn .wp-picker-default{ display: none!important; } .sb-control-colorpicker-ctn .minicolors-theme-default.minicolors{ width: 100%; } .sb-control-colorpicker-ctn .minicolors-theme-default.minicolors-position-right .minicolors-swatch { /* left: auto; right: 6px; top: 6px; width: 26px; height: 26px; background: #F9F9FA; border: 0px; */ left: auto; right: 1px; top: 1px; width: 35px; height: 35px; background: #F9F9FA; border: 0px; } .minicolors-swatch-color{ box-shadow: none; } .sb-control-colorpicker-ctn .minicolors-input,.sb-control-colorpicker-ctn .minicolors-input:focus{ height: 37px; width: 100%!important; background: #fff; border: 1px solid #D0D1D7!important; border-radius: unset!important; outline: unset!important; box-shadow: unset!important; padding: 0 10px!important; line-height: 1em; margin: 0px; } .sb-control-colorpicker-ctn .minicolors-input:focus{ border: 1px solid #0096CC!important; } [data-type="colorpicker"] .minicolors-input{ font-size: 13px; } [data-type="colorpicker"] .minicolors-input{ font-style: normal; font-weight: normal; font-size: 12px; line-height: 150%; color: #434960; } .sb-control-colorpicker-btn{ height: 38px; display: flex; justify-content: center; align-items: center; border: 1px solid #DCDDE1; border-left: 0px; padding: 0 10px; background: #F3F4F5; font-style: normal; font-weight: 600; font-size: 12px; line-height: 160%; color: #141B38; cursor: pointer; box-sizing: border-box; } .sb-control-colorpicker-ctn[data-picker-style="reset"] .minicolors-input, .sb-control-coloroverride-ctn{ background: #F3F4F5!important; border: 1px solid #DCDDE1!important; } .sb-control-colorpicker-ctn[data-picker-style="reset"] .minicolors-theme-default.minicolors-position-right .minicolors-swatch, .sb-control-coloroverride-ctn .sb-control-coloroverride-swatch{ top: 8px; width: 22px; height: 22px; } .sb-control-coloroverride-ctn .sb-control-coloroverride-swatch{ position: absolute; right: 10px; } .sb-control-coloroverride-ctn .sb-control-colorpicker-btn{ margin-left: auto; border: 0px!important; border-left: 1px solid #DCDDE1!important; } .sb-control-coloroverride-ctn .sb-control-coloroverride-content{ width: 100%; display: flex; align-items: center; position: relative; } .sb-control-coloroverride-ctn .sb-control-coloroverride-txt{ padding-left: 9px; box-sizing: border-box; } /* Customizer Preview */ .sb-customizer-preview{ min-height: 100px; width: calc(100% - 375px); float: right; box-sizing: border-box; padding: 0 20px; display: flex; justify-content: center; margin-top: 64px; position: relative; flex-wrap: wrap; } .sb-customizer-preview .sbi-admin-notices{ margin-top: 20px; width: 100%; } .sb-customizer-preview .license-details-modal .sbi-modal-content { max-height: none; height: auto; } .sb-customizer-preview .sbi-sb-modal-body .sb-why-renew-list:nth-child(3) { margin-bottom: 0; } .sb-customizer-preview .sbi-sb-modal-body .sb-why-renew-list:last-child { margin-bottom: 0; } .sb-customizer-preview[data-preview-device="desktop"] .sb-preview-ctn{ width: 100%; max-width: 1200px; } .sb-customizer-preview[data-preview-device="tablet"] .sb-preview-ctn{ max-width: 100%; width: 800px; } .sb-customizer-preview[data-preview-device="mobile"] .sb-preview-ctn{ max-width: 100%; width: 400px; } .sbi-preview-ctn { padding: 10px; } .sb-preview-top-chooser{ padding: 18px 0 16px; display: flex; color: #434960; align-items: center; } .sb-preview-top-chooser strong{ font-style: normal; font-weight: bold; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; color: #434960; display: inline-flex; } .sbi-moderate-heading{ margin-top: 21px; } .sb-preview-top-chooser strong > svg{ margin-right: 10px; margin-left: 16px; fill: currentColor; width: 20px; } .sb-preview-chooser{ height: 36px; background: #E8E8EB; margin-left: auto; padding: 0 2px; border-radius: 1px; display: flex; justify-content: center; align-items: center; } .sb-preview-chooser-btn,.sb-preview-chooser-btn:focus{ width: 40px; height: 32px; display: flex; justify-content: center; align-items: center; cursor: pointer; float: left; border: 0; background: unset; outline: none; } .sb-preview-chooser-btn svg{ width: 15px; fill: currentColor; float: left; } .sb-preview-chooser-btn.sb-mobilee svg{ width: 9px; fill: currentColor; float: left; } .sb-preview-chooser-btn[data-active="true"], .sb-preview-chooser-btn:hover{ background: #fff!important; box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.25); border-radius: 1px; } .sb-control-checkboxsection-header{ width: 100%; margin-top: 25px; display: flex; align-items: center; text-transform: uppercase; font-size: 13px; padding-bottom: 15px; position: relative; } .sb-control-checkboxsection-header:before{ content: ''; position: absolute; left: -20px; width: calc(100% + 40px); height: 1px; background: #DCDDE1; bottom: 0px; } .sb-control-checkboxsection-name{ display: flex; align-items: center; } .sb-control-checkboxsection-header svg{ width: 20px; margin-right: 7px; fill: #434960; float: left; } .sb-control-checkboxsection-header > strong{ margin-left: auto; } [data-type="checkboxsection"] .sb-control-checkbox-ctn{ align-items: center; height: 50px; } [data-type="checkboxsection"] { padding: 0 20px !important; } [data-type="checkboxsection"] .sb-control-elem-label{ display: none; } [data-type="checkboxsection"] strong{ color: #434960 } [data-type="checkboxsection"] [data-active="true"] strong{ color: #141B38; } .sb-control-checkboxsection-btn{ width: 21px; height: 21px; position: relative; cursor: pointer; } .sb-control-checkboxsection-btn:before{ content: ''; position: absolute; width: 7px; height: 7px; left: 5px; top: 7px; border-right: 2px solid #8C8F9A; border-bottom: 2px solid #8C8F9A; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } /*CheckBox List*/ [data-type="checkboxlist"] .sb-control-checkbox-ctn{ margin-bottom: 10px!important; } [data-type="checkboxlist"] .sb-control-checkbox-ctn .sb-control-label{ font-style: normal; font-weight: normal; font-size: 14px; line-height: 160%; } /*Source Controls*/ .sb-control-sources-ctn .sbi-fb-srcs-item{ box-sizing: border-box; position: relative; cursor: auto; display: block; height: auto; border: 1px solid #E7E7E9; min-height: 60px; overflow: auto; margin-top: 0px; } .sbi-fb-srcs-item-ins{ cursor: pointer; display: flex; height: 62px; padding: 0 10px; position: relative; } .sb-control-src-icon{ width: 20px; height: 20px; position: absolute; right: 10px; top: 10px; z-index: 2; cursor: pointer; display: flex; justify-content: center; align-items: center; } .sb-control-src-icon svg{ width: 13px; float: left; } [data-expanded="true"] .sb-control-src-expand svg,.sbi-fb-srcs-info { display: none } .sb-control-src-expand-chevron{ width: 7px; height: 7px; border-left: 2px solid currentColor; border-top: 2px solid currentColor; -webkit-transform: rotate(45deg); transform: rotate(45deg); display: none; } [data-expanded="true"] .sb-control-src-expand-chevron,[data-expanded="true"] .sbi-fb-srcs-info { display: block; } .sb-control-src-remove svg{ width: 11px; fill: var(--error-red); } .sb-control-sources-ctn[data-multifeed="true"] .sb-control-src-expand { right: 30px; } .sb-control-elem-output .sb-control-src-expand:hover { background: #F3F4F5; border-radius: 3px; } .sb-control-elem-output .sb-control-src-expand:hover path{ fill: #111; } .sb-control-sources-ctn .sbi-fb-srcs-item .sbi-fb-srcs-item-name{ font-size: 17px; line-height: 1em; margin-bottom: 3px; } .sbi-fb-srcs-info-item{ display: flex; border-top: 1px solid #E7E7E9; box-sizing: border-box; width: 100%; float: left; padding: 8px 10px; } .sbi-fb-srcs-info-item:first-of-type{ align-items: center; } .sbi-fb-srcs-info-item strong{ font-size: 14px; width: 50px; } .sbi-fb-srcs-info-item span{ font-size: 13px; line-height: 1.1em; color: #434960; font-weight: 400; display: inline-block; word-break: break-all; width: calc(100% - 80px); padding: 0 15px; box-sizing: border-box; } .sbi-fb-srcs-info-icon{ width: 26px; height: 26px; display: flex; justify-content: center; align-items: center; cursor: pointer; margin-left: auto; border: 1px solid #D0D1D7; border-radius: 2px; } .sbi-fb-srcs-info-icon svg{ width: 15px; float: left; } .sb-control-sources-ctn .sb-control-action-button{ margin-top: 8px; margin-bottom: 16px; } .sb-control-sources-promo-ctn{ padding: 16px 0; } .sb-control-sources-promo-ctn:before{ content: ''; position: absolute; height: 1px; width: calc(100% + 40px); left: -20px; top: 0px; background: #E7E7E9; } .sb-control-sources-promo-top{ width: 100%; box-sizing: border-box; padding: 30px 20px; border: 1px solid #E8E8EB; float: left; background: #F9F9FA; } .sb-control-sources-promo-top > div{ width: 100%; float: left; text-align: center; display: flex; justify-content: center; align-items: center; box-sizing: border-box; line-height: 1.6em; } .sb-btn-chevron{ display: inline-block; width: 7px; height: 7px; border-right: 2px solid currentColor; border-top: 2px solid currentColor; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sb-control-sources-promo-text{ font-size: 15px; font-weight: 600; } .sb-control-sources-promo-btn{ display: flex; align-items: center; justify-content: center; padding: 16px 20px; color: #fff !important; background: #0068A0; font-size: 15px; } .sb-control-sources-promo-btn div{ margin-left: 10px; } .sb-control-sources-promo-icon{ margin-bottom: 20px; } /*Loading Bar*/ .sb-loadingbar-ctn{ position: absolute; height: 5px; width: 100%; left: 0px; bottom: 0px; background: rgba(227, 79, 14, 0.25); z-index: 999999999999999; } .sb-loadingbar-ctn:before, .sb-loadingbar-ctn:after{ content: ''; position: absolute; height: 5px; background: #FE544F; z-index: 9; top: 0; } .sb-loadingbar-ctn:before{ -webkit-animation: sbi-loading-animation 4s infinite; animation: sbi-loading-animation 4s infinite; } .sb-loadingbar-ctn:after{ -webkit-animation: sbi-loading-animation 4s 2s infinite; animation: sbi-loading-animation 4s 2s infinite; } @-webkit-keyframes sbi-loading-animation { from { left: -5%; width: 0%; } to { left: 130%; width: 50%;} } @keyframes sbi-loading-animation { from { left: -5%; width: 0%; } to { left: 130%; width: 50%;} } /*Notification Element*/ .sb-notification-ctn{ position: fixed; bottom: -100px; left: 200px; z-index: 99999; background: #fff; display: flex; justify-content: center; align-items: center; border-left: 3px solid #fff; line-height: 1em; padding: 10px 20px; padding-left: 0px; border-radius: 4px; box-shadow: 0px 26.7377px 77.2886px rgba(0, 0, 0, 0.107828), 0px 14.2952px 41.3222px rgba(0, 0, 0, 0.0894161), 0px 8.01379px 23.1649px rgba(0, 0, 0, 0.075), 0px 4.25607px 12.3027px rgba(0, 0, 0, 0.0605839), 0px 1.77104px 5.11942px rgba(0, 0, 0, 0.0421718); } .sb-notification-ctn[data-active="hidden"]{ -webkit-animation: sbi-notification-hide .5s forwards linear; animation: sbi-notification-hide .5s forwards linear; } .sb-notification-ctn[data-active="shown"]{ -webkit-animation: sbi-notification-show .5s forwards linear; animation: sbi-notification-show .5s forwards linear; } @-webkit-keyframes sbi-notification-show { 0%{bottom: -100px;} 50%{bottom: 70px;} 70%{bottom: 60px;} 85%{bottom: 65px;} 100%{bottom: 50px;}} @keyframes sbi-notification-show { 0%{bottom: -100px;} 50%{bottom: 70px;} 70%{bottom: 60px;} 85%{bottom: 65px;} 100%{bottom: 50px;}} @-webkit-keyframes sbi-notification-hide {0%{bottom: 50px;}55%{bottom: 65px;}70%{bottom: 60px;}85%{bottom: 70px;}100%{bottom: -100px;}} @keyframes sbi-notification-hide {0%{bottom: 50px;}55%{bottom: 65px;}70%{bottom: 60px;}85%{bottom: 70px;}100%{bottom: -100px;}} .sb-notification-ctn[data-type="success"]{ border-color: #59AB46; } .sb-notification-ctn[data-type="error"]{ border-color: #D72C2C; } .sb-notification-ctn[data-type="message"]{ border-color: #141B38; } .sb-notification-icon{ width: 25px; height: 25px; display: flex; justify-content: center; align-items: center; margin-left: 10px; margin-right: 15px; } .sb-notification-icon svg{ width: 22px; height: 22px; float: left; fill: currentColor; } .sb-notification-ctn[data-type="success"] .sb-notification-icon{ color: #59AB46; } .sb-notification-ctn[data-type="error"] .sb-notification-icon{ color: #D72C2C; } .sb-notification-ctn[data-type="message"] .sb-notification-icon{ color: #141B38; } .sb-notification-ctn span{ font-size: 14px; color: #141B38; font-weight:500; } /* Onboarding */ .sb-onboarding-tooltip { display: none; position: absolute; min-height: auto; width: 432px; max-width: 100%; padding: 0; border-radius: 2px; } #sb-onboarding-tooltip-multiple-2, #sb-onboarding-tooltip-multiple-3{ width: 528px; } #sb-onboarding-tooltip-single-2 { width: 402px; } .sb-onboarding-active .sb-onboarding-highlight .sbi-fb-btn.sbi-fb-btn-new, .sb-onboarding-active .sb-positioning-wrap.sb-onboarding-highlight, .sb-onboarding-active .sbi-fd-lst-bigctn .sbi-table-wrap.sb-onboarding-highlight, .sb-onboarding-active .sbi-fb-lgc-ctn.sb-onboarding-highlight, .sb-onboarding-active .sbi-fb-lgc-ctn .sbi-legacy-table-wrap.sb-onboarding-highlight{ position: relative; z-index: 100000; } .sb-onboarding-active .sbi-fd-legacy-feed-toggle { display: none; } .sbi-legacy-table-wrap.sb-onboarding-highlight { clear: both; } .sb-onboarding-tooltip-1 { top: 50px; left: 8px; } #sb-onboarding-tooltip-single-2 { bottom: -179px; top: auto; left: 68%; margin-left: -201px; } #sb-onboarding-tooltip-multiple-2, #sb-onboarding-tooltip-multiple-3{ top: -200px; left: 20%; } #sb-onboarding-tooltip-multiple-3 { top: -210px; } .sb-onboarding-tooltip .sbi-fb-wrapper { display: flex; justify-content: flex-end; } .sb-positioning-wrap { width: 432px; } .sb-onboarding-tooltip .sbi-fb-popup-cls { position:absolute; width: 12px; height: 12px; top: 12px; right: 12px; } .sb-onboarding-tooltip .sbi-fb-popup-cls svg { width: 12px; height: 12px; } .sb-onboarding-tooltip h3 { font-size: 16px; color: #141B38; line-height: 160%; font-weight: 600; margin: 0; } .sb-onboarding-step { font-style: normal; font-weight: normal; font-size: 12px; line-height: 160%; color: #434960; margin: 2px 0 20px; display: block; } .sbi-onboarding-next, .sbi-onboarding-previous{ color: #353A41; background: #F3F4F5; border: 1px solid #DCDDE1; margin-left: 10px; } .sb-onboarding-tooltip .sbi-fb-hd-btn { margin-right: 0; } .sb-onboarding-tooltip .sbi-fb-hd-btn i { margin: 0; } .sbi-onboarding-finish{ margin-left: 10px; padding: 0 32px; } .sb-onboarding-tooltip .sbi-fb-hd-btn[data-active="false"] { background-color: #e8e8eb; color: #8c8f99; } .sb-onboarding-tooltip .sbi-fb-hd-btn[data-active="false"]:hover { cursor: default; } .sb-step-counter-wrap span { font-style: normal; font-weight: bold; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; color: #141B38; } .sb-onboarding-tooltip .sb-pointer { position: absolute; left: 50px; top: -14px; } .sb-onboarding-tooltip .sb-pointer.sb-bottom-pointer { top: auto;; bottom: -14px; } #sb-onboarding-tooltip-single-2 .sb-pointer { left: 193px; } #sb-onboarding-tooltip-multiple-2:before, #sb-onboarding-tooltip-multiple-3:before{ bottom: -8px; } .sb-onboarding-top-row { padding: 20px 44px 0 24px; } .sb-onboarding-bottom-row { display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 8px 16px 12px 24px; } /*Vue Color Picker*/ .sb-control-colorpicker-ctn .vc-sketch{ box-shadow: none!important; } .sb-control-colorpicker-popup{ box-shadow: 0px 0px 10px rgba(0,0,0,0.2); position: absolute; z-index: 99; top: 100%; background: #fff; right: 0px; } .sb-control-colorpicker-popup .sb-colorpicker-reset-btn{ width: calc(100% - 20px); margin-left: 10px; margin-bottom: 15px; } .sb-control-colorpicker-swatch{ width: 38px; height: 38px; position: absolute; right: 1px; top: 1px; background: #f7f7f7; } .sb-control-colorpicker-ctn .sb-control-input{ width: 100%; } @media (min-width: 768px) and (max-width: 1023px) { .sbi-csz-header-insider .sb-button-standard { padding: 10px 14px 10px 30px; } } @media (min-width: 1024px) and (max-width: 1200px) { .sbi-fb-wlcm-inf-3 { padding-left: 120px; } } @media (max-width: 767px) { .sbi-fd-lst-thtf th:nth-child(3), .sbi-fd-lst-thtf th:nth-child(4), .sbi-fd-lst-tbody tr td:nth-child(3), .sbi-fd-lst-tbody tr td:nth-child(4), .sbi-fd-lst-thtf tr td:nth-child(3), .sbi-fd-lst-thtf tr td:nth-child(4) { display: none; } .sbi-fd-lst-thtf th:last-child, .sbi-fd-lst-thtf tr td:last-child { padding-right: 15px; text-align: right; } .sbi-fd-lst-tbody tr td.sbi-fd-lst-actions .sb-flex-center{ justify-content: flex-end; padding-right: 8px; } .sbi-fb-full-wrapper { padding: 70px 20px 0 20px; } .sbi-fb-header { padding: 0px 20px; } .sbi-bld-ft-content { flex-wrap: wrap; } #sb-footer-banner .sbi-bld-ft-img { width: 100%; height: 140px; } #sb-footer-banner .sbi-bld-ft-img img { height: 100%; width: auto; } #sb-footer-banner .sbi-bld-ft-txt { justify-content: center; align-items: center; width: 100%; margin-right: 3%; padding: 20px; } .sbi-bld-ft-action { width: 100%; padding: 0 20px 20px; } .sbi-bld-footer > div { margin-bottom: 60px; } /* single feed page */ .sbi-csz-header-insider { flex-wrap: wrap; height: auto; width: 100%; } .sbi-fb-header.sbi-csz-header { height: 110px; } .sbi-csz-header.sbi-fb-header { padding-bottom: 6px; } .sbi-csz-header .sbi-csz-hd-actions { margin-top: 10px; } .sb-customizer-preview { display: none; } .sb-customizer-ctn .sb-customizer-sidebar { position: initial; margin-top: 110px; width: 100%; } .sb-notification-ctn { left: 20px; } .sbi-fb-header .sb-button-standard{ padding: 10px 10px 10px 31px; } .sbi-fb-embed-ctn.sb-fs-boss.sbi-fb-center-boss .sbi-fb-popup-inside { top: 35px; } .sbi-fb-embed-btns-ctn { grid-template-columns: 100%; } .sbi-fb-embed-btns-ctn .sbi-fb-embed-btn { margin-bottom: 10px; } .sbi-fb-embed-ctn.sb-fs-boss.sbi-fb-center-boss .sbi-fb-popup-inside .sbi-fb-embed-step-1-top { margin-bottom: 10px; } .sbi-fb-embed-ctn.sb-fs-boss.sbi-fb-center-boss .sbi-fb-popup-inside .sbi-fb-embed-input-ctn { flex-wrap: wrap; } .sbi-fb-embed-input-ctn input, .sbi-fb-embed-input-ctn input[type="text"] { width: 100%; border-right: 1px solid #D0D1D7!important; } .sbi-fb-embed-input-ctn .sbi-fb-hd-btn { width: 32%; max-width: 120px; margin-top: 10px !important; padding: 8px; } .sb-fs-boss.sbi-fb-center-boss { z-index: 100001 !important; } #sb-footer-banner .sbi-bld-ft-txt { flex-wrap: wrap; } #sbi-builder-app #sb-footer-banner h3, #sbi-builder-app #sb-footer-banner .sb-small-p { width: 100%; } #sbi-builder-app #sb-footer-banner h3 { margin-bottom: 10px; } .sbi-fb-srcslist-ctn { grid-template-columns: 100% } .sbi-fb-mr-fd-img { width: 100%; margin-right: 0; } .sbi-fb-mr-fd-img svg { max-width: 100%; } .sbi-fd-lst-tbody tr td:nth-child(2) { width: 50%; } .sbi-fb-wlcm-inf-1, .sbi-fb-wlcm-inf-2, .sbi-fb-wlcm-inf-3 { padding-left: 0; } .sbi-fb-wlcm-inf-3 .sbi-fb-inf-img, .sbi-fb-wlcm-inf-2 .sbi-fb-inf-img, .sbi-fb-wlcm-inf-1 .sbi-fb-inf-svg { display: none; } .sbi-fb-wlcm-inf-3 .sbi-fb-inf-cnt { justify-content: flex-start; } .sbi-fb-wlcm-inf-1 .sbi-fb-inf-cnt { width: calc(100% - 53px); } .sbi-fb-wlcm-inf-2 .sbi-fb-inf-cnt, .sbi-fb-wlcm-inf-3 .sbi-fb-inf-cnt { width: 100%; } .sbi-fb-wlcm-inf-1 .sbi-fb-inf-cnt .sbi-fb-inf-txt{ width: 80%; } .sbi-fb-wlcm-inf-2 .sbi-fb-inf-cnt { margin-bottom: 24px; } .sbi-fb-mr-fd-list { grid-template-columns: 1fr 1fr; } } @media (min-width: 768px) and (max-width: 1023px) { .sbi-fb-wlcm-inf-3 { padding-left: 7px; } .sbi-fb-wlcm-inf-2 { padding-left: 52px; } .sbi-fb-wlcm-inf-1 { padding-left: 85px; } .sbi-fb-wlcm-inf-1 .sbi-fb-inf-svg { display: none; } } @media (min-width: 768px) and (max-width: 1366px) { .sbi-fb-mr-fd-list { grid-template-columns: 1fr 1fr 1fr; } } /* Multiple Sources Sections */ #sbi-multiple-sources-ctn .sbi-fb-slctsrc-content{ padding: 25px 30px; border-bottom: 1px solid #E8E9EA; } .sbi-feedtype-section{ padding: 30px; border-bottom: 1px solid #E8E9EA; } .sbi-feedtype-sec-icon-heading{ display: flex; align-self: center; } .sbi-feedtype-icon-wrap svg{ width: 16px!important; height: 16px!important; float: left; fill: #0096CC; margin-right: 6px; } .sbi-feedtype-sec-icon-heading span{ color: #141B38; font-weight:600; font-size: 18px; } .sbi-feedtype-sec-icon-heading a{ font-size: 12px; display: inline-block; margin-top: 2px; margin-left: 6px; } .sbi-feedtype-sec-desc{ font-size: 12px; } #sbi-multiple-sources-ctn .sbi-fb-hd-btn svg{ fill: #141B38; } .sbi-addsource-type-btn{ display: flex; justify-content: center; align-self: center; padding: 12px 20px; color: #8C8F9A; cursor: pointer; font-size: 14px; font-weight: 600; } .sbi-addsource-type-btn svg{ margin-right: 12px; margin-top: 2px; fill: #8C8F9A; } .sbi-addsource-type-btn:hover, .sbi-addsource-type-btn:hover svg{ color: #434960; fill: #434960; } .sbi-feedtype-section .sbi-fd-lst-btn-delete{ height: 32px; width: 36px; position: absolute; right: 20px; top: 20px; z-index: 2; } .sbi-feedtype-icon-wrap { position: absolute; top: 0; left: 0; } .sbi-feedtype-sec-wrap { margin-left: 28px; } .sbi-feedtype-section .sbi-fd-lst-btn-delete{ border-color: #D8DADD; } .sbi-fb-type-el[data-checked="true"]{ border: 1px solid #D8D8D8 } .sbi-fb-type-el[data-checked="true"]:before{ content: ''!important; position: absolute!important; height: 100%!important; width: 100%!important; left: 0!important; top: 0!important; background: #f1f1f1!important; opacity: .35!important; cursor: default!important; } .sbi-fb-type-el[data-checked="true"]:after{ display: none!important; } .sbi-fb-type-el[data-checked="true"] .sbi-fb-type-el-info *{ color: #8C8F9A!important; } .sbi-fb-type-el-info .sb-control-elem-tltp, .sbi-fb-type-el-info .sb-control-elem-tltp-icon{ display: inline-block; color: inherit; fill: currentColor; margin: 0px; } .sbi-fb-feedtypes-pp-ctn .sbi-fb-type-el-info{ padding: 0 45px 20px!important; } .sbi-fb-feedtypes-pp-ctn .sbi-fb-types-list{ grid-template-columns: 24% 24% 24% 24%; } #sbi-builder-app .sbi-fb-feedtypes-pp-ctn .sbi-fb-types{ padding: 23px 30px 10px!important;; padding-bottom: 0px!important; } .sbi-fb-feedtypes-popup .sb-button-no-border { position: absolute; z-index: 99; top: 20px; left: 33px; font-weight: bold; font-size: 12px; line-height: 160%; letter-spacing: 0.05em; text-transform: uppercase; cursor: pointer; } .sbi-fb-feedtypes-popup .sb-button-no-border svg { margin-right: 9px; } .sbi-fb-addsourtype-ctn{ margin-bottom: 30px; padding: 0px 30px!important; } .sbi-fb-addsourtype-ctn .sbi-fb-source-btn{ margin-top: 0px; } .sbi-fb-feedtypes-pp-ctn h4{ margin-bottom: 20px; } .sbi-fb-sourcelist-pp-ctn .sbi-fb-source-top{ padding: 22px 19px 0px; } .sbi-fb-sourcelist-pp-ctn .sbi-fb-sourcelist-pp{ float: left; width: 100%; box-sizing: border-box; padding: 0 20px; } .sbi-fb-sourcelist-pp-ctn .sbi-fb-addsourtype-ctn{ padding: 0px 20px!important; } .sbi-fb-sourcelist-pp-ctn .sbi-fb-srcs-desc{ margin-bottom: 20px; } .sbi-fb-sourcelist-pp-ctn .sbi-fb-source-pp-customizer .sbi-fb-srcslist-ctn{ grid-template-columns: 49% 49%; min-height: 80px; overflow: auto; } .sbi-selected-sources-ctn .sbi-fb-hd-btn{ display: inline-flex; margin-bottom: 7px; float: left; } .sbi-selected-source-item{ width: auto; height: 38px; border: 1px solid #D0D1D7; border-radius: 2px; display: inline-flex; align-items: center; margin-right: 10px; margin-bottom: 7px; box-sizing: border-box; float: left; } .sbi-selected-source-item-avatar, .sbi-selected-source-item-avatar img{ width: 36px; height: 36px; } .sbi-selected-source-item-avatar { border-right: 1px solid #F3F4F5; } .sbi-selected-source-item span{ font-weight:600; margin: 0px 10px; font-size: 13px; } .sbi-selected-source-item-icon{ margin-left: auto; width: 36px; height: 36px; display: flex; justify-content: center; align-items: center; cursor: pointer; } .sbi-selected-source-item-icon svg{ fill: #D72C2C; width: 14px; height: 14px; float: left; } #sbi-multiple-sources-ctn .sbi-feedtype-sec-desc{ margin: 4px 0 16px; } .sbi-hashtag-item{ display: inline-flex; font-weight: 400; height: 26px; font-size: 12px; align-items: center; padding: 0px 6px 1px 10px; border-radius: 50px; background: #f3f1f1; margin-right: 10px; margin-bottom: 10px; } .sbi-hashtag-item-delete{ width: 16px; height: 16px; background: #8C8F9A; color: #fff; margin-left: 5px; border-radius:50px; cursor: pointer; position: relative; } .sbi-hashtag-item-delete:before, .sbi-hashtag-item-delete:after{ content: ''; position: absolute; height: 2px; width: 8px; background: currentColor; left: 4px; top: 7px; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sbi-hashtag-item-delete:after{ -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-hashtag-fetchby-chbx{ display: flex; margin-bottom: 15px; margin-top: 10px; } .sbi-hashtag-fetchby-chbx .sbi-fb-stp-src-type{ margin-left: 0px!important; margin-right: 20px!important; } /* Custom View Control With Image & info */ .sb-control-imginfo-elem{ background: #F9F9FA; border: 1px solid #E8E8EB; padding: 20px 30px; } .sb-control-imginfo-icon svg{ fill: none!important; } .sb-control-imginfo-icon{ display: flex; justify-content: center; align-self: center; } .sb-control-imginfo-text{ display: flex; flex-direction: column; padding-top: 20px; } .sb-control-imginfo-text [data-textalign="center"]{ justify-content: center; } .sb-control-imginfo-text strong{ font-size: 18px; margin-bottom: 20px; line-height: 1.3; } .sb-control-shoppbale-enbaled-ctn .sb-control-imginfo-text strong{ font-size: 14px; text-align: center; line-height: 1.4em; } .sb-control-imginfo-text span{ color: #434960; font-size: 14px; } .sb-shoppable-edit-btn{ position: absolute; right: 10px; top: 10px; cursor: pointer; z-index: 9; padding: 7px 13px 8px 35px; border: 2px solid rgba(255,255,255,.1); } .sb-shoppable-edit-btn-link svg{ width: 16px; height: 10px; top: 10px; fill: currentColor; } .sb-control-selectedpost-info{ display: flex; align-items: center; box-sizing: border-box; padding: 10px; border: 1px solid #D0D1D7; margin-bottom: 30px; margin-top: 10px; } .sb-control-selectedpost-info img{ width: 77px; height: 77px; } .sb-control-selectedpost-info span{ padding: 0 15px; color: #141B38; font-size: 13px; line-height: 1.6em; } .sb-control-selectedpost-input span{ color: #434960; font-size: 13px; margin-bottom: 5px; } .sb-control-selectedpost-btns{ display: grid; grid-template-columns: 48% 48%; grid-column-gap: 4%; margin-top: 10px; } .sb-control-selectedpost-btns button{ cursor: pointer; font-weight: 600; display: flex; justify-content: center; align-items: center; padding: 9px; } .sb-control-selectedpost-btns button svg{ margin-right: 10px; } /* Feed Type Customizer */ .sb-control-feedtype-item{ margin-bottom: 30px; padding-bottom: 20px; } .sb-control-feedtype-item:after{ content: ''; position: absolute; height: 1px; width: calc(100% + 40px); left: -20px; background: #DCDDE1; bottom: 0px; } .sb-control-feedtype-item:last-of-type:after{ display: none; } .sb-control-feedtype-list{ margin-top: 10px; } .sb-control-feedtype-list-item{ float: left; height: 30px; display: flex; justify-content: center; align-items: center; background: #F3F4F5; border-radius: 50px; padding: 0 14px; margin-right: 10px; margin-bottom: 10px; } .sb-control-feedtype-list-item-icon{ display: flex; justify-content: center; align-items: center; } .sb-control-feedtype-list-item svg{ width: 12px; margin-right: 4px; fill: #0096CC; } .sbi-fb-extppcustomizer-btns{ display: grid; grid-template-columns: 49% 49%; grid-column-gap: 1%; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-fb-feedtypes-popup{ padding: 22px 20px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-fb-source-top{ padding: 0px; padding-bottom: 22px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-fb-feedtypescustomizer-content{ background: #F9F9FA; border: 1px solid #E8E8EB; margin-bottom: 20px; border-radius: 4px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-feedtype-section{ box-shadow: unset; border-bottom: 1px solid #E8E8EB; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-feedtype-section:last-of-type{ border-bottom: 0px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-feedtype-sec-desc{ margin-bottom: 20px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-hashtag-fetchby .sbi-feedtype-sec-desc{ margin-bottom: 0px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-selected-source-item{ border: 1px solid #e1e1e1; } .sbi-fb-feedtypescustomizer-content .sbi-fb-hd-btn svg{ fill: #141B38; } .sbi-fb-feedtypescustomizer-content .sbi-feedtype-icon-wrap svg{ width: 20px!important; height: 20px!important; } .sbi-fb-feedtypescustomizer-content .sbi-feedtype-section{ padding: 24px; } /* Moderation Mode */ .sb-control-moderationmode-action-btns{ padding-top: 30px; } .sb-control-moderationmode-action-btns button{ margin-bottom: 20px; } .sbi-moderation-overlay-ctn{ position: absolute; width: 100%; height: 100%; left: 0; top: 0; z-index: 8; cursor: pointer; } .sbi-moderation-toggle{ position: absolute; width: 66px; height: 22px; top: 10px; right: 10px; background: #FFFFFF; box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), 0px 4px 5px rgba(0, 0, 0, 0.05); border-radius: 2px; padding: 2px; } .sbi-moderation-toggle-icon{ width: 33px; height: 22px; position: relative; float: left; border-radius: 2px; color: #8C8F9A; } .sbi-moderation-toggle[data-type="active"] .sbi-moderation-checkmark{ background: #59AB46; color: #fff!important; } .sbi-moderation-toggle[data-type="inactive"] .sbi-moderation-x{ background: #D72C2C; color: #fff!important; } .sbi_expand{ cursor: pointer; } .sbi-moderation-checkmark:before{ content: ''; position: absolute; width: 13px; height: 5px; left: 8px; top: 5px; border-bottom: 2px solid currentColor; border-left: 2px solid currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-moderation-x:before, .sbi-moderation-x:after{ content: ''; position: absolute; width: 15px; height: 2px; left: 9px; top: 10px; background: currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } .sbi-moderation-x:after{ -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sb-control-moderationmode-elements > .sb-control-switcher-ctn{ margin-bottom: 25px; } .sbi_header_text h3{ color: inherit; } .sbi-customizer-ms-modes .sbi_link, .sbi-customizer-ms-modes .sb_instagram_header{ display: none!important; } .sbi-moderation-pagination{ display: flex; margin-top: 20px; justify-content: flex-end; } .sbi-moderation-pagination-btn{ margin-left: 20px; } #sb_instagram .sbi_item:not(.sbi_transition) .sbi_photo, #sb_instagram.sbi_highlight #sbi_images, #sb_instagram.sbi_masonry #sbi_images, #sb_instagram #sbi_images .sbi_item{ -webkit-transition: unset!important; transition: unset!important; } #sb_instagram .sbi_item:not(.sbi_transition):hover .sbi_photo{ -webkit-transition: all .5s!important; transition: all .5s!important; } #sb_instagram .sbi_item .sbi_photo_shady{ position: absolute; left: 0; top: 0; height: 100%; width: 100%; z-index: 2; background-position: inherit; background-size: inherit; } /* FREE */ .sbi-fb-types-list-pro{ display: grid; grid-template-columns: 24.5% 24.5% 24.5% 24.5%; grid-column-gap: 0.5%; margin-top: 10px; } .sbi-fb-type-el-pro{ display: flex; flex-direction: row; align-items: center; padding: 12px 20px 12px 12px; background: #F9F9FA; border: 1px solid #D0D1D7; box-sizing: border-box; border-radius: 2px; color: #141B38; font-weight: 600; font-size: 14px; margin-bottom: 10px; cursor: pointer; } .sbi-fb-type-el-pro:hover{ background: #E2F5FF; border: 1px solid #E2F5FF; } .sbi-fb-type-el-pro-img svg{ float: left; } .sbi-fb-type-el-pro-img{ margin-right: 20px; } /*Lite Top Banner Dismiss*/ .sbi-builder-app-lite-dismiss .sbi-header-notice{ position: fixed!important; top: 32px; width: 100%; z-index: 2; left: 0; } .sbi-builder-app-lite-dismiss .sbi-fb-header{ top: 64px; } .sbi-builder-app-lite-dismiss .sb-customizer-sidebar{ top: 128px; } .sbi-builder-app-lite-dismiss .sb-customizer-preview{ margin-top: 100px; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-addsource-type-btn{ color: #0068A0; } .sbi-fb-feedtypescustomizer-pp-ctn .sbi-addsource-type-btn svg{ fill: #0068A0; } .sb-control-label-pro-toggle{ display: inline-block; background: #b9b9b9; color: #fff; border-radius: 3px; padding: 1px 8px; text-transform: uppercase; font-size: 11px; margin-left: 2px; } /*Lightbox */ .sbi-lightbox-ctn{ width: 100%; height: 100%; position: absolute!important; left: 0; top: 2px; z-index: 9; justify-content: center; align-items: flex-start; padding-top: 100px; opacity: 0; visibility: hidden; } .sbi-lightbox-dummy-overlay{ background: rgba(0,0,0,0.9); position: absolute; width: 100%; height: 100vh; left: 0; top: 0; } .sbi-lightbox-ctn[data-visibility="true"]{ display: flex; } .sbi-lightbox-ctn[data-visibility="true"].sbi_lightbox-active{ display: flex!important; } .sbi-lightbox-ctn.sbi_lightbox-disabled{ display: none!important; } #sbi_lightbox.sbi-lightbox-dummy-ctn .sbi_lb-outerContainer{ width: calc(100% - 140px)!important; height: auto!important; left: calc(50% - 70px)!important; transform: translateX(-50%); max-height: 585px!important; padding-right: 0px!important; } #sbi_lightbox.sbi-lightbox-dummy-ctn .sbi_lb-container-wrapper{ width: calc(100% - 300px); } #sbi_lightbox.sbi-lightbox-dummy-ctn.sbi_lb-comments-disabled .sbi_lb-container-wrapper{ width: 100%; } #sbi_lightbox.sbi-lightbox-dummy-ctn .sbi_lb-image1{ width: 100%!important; height: auto!important; } #sbi_lightbox.sbi-lightbox-dummy-ctn .sbi_lb-nav a{ pointer-events: none; } #sbi_lightbox.sbi-lightbox-dummy-ctn.sbi_lb-comments-disabled .sbi_lb-outerContainer{ width: calc(60% - 140px)!important; left: 50%!important; position: absolute!important; background: none; } #sbi_lightbox.sbi-lightbox-ctn{ top: 0px!important } body #sbi_lightboxOverlay.sbi_lightboxOverlay, body #sbi_lightbox.sbi_lightbox:not(.sbi-lightbox-dummy-ctn){ display: none!important; opacity: 0!important; visibility: hidden!important; } #sbi-builder-app[data-app-loaded="true"] .sbi-lightbox-ctn{ opacity: 1; visibility: visible; height: auto; } .sbi_lb-comments-disabled .sbi_lb-commentBox{ display: none!important; } /* Onboarding Wizard */ .sb-onboarding-wizard-ctn { width: calc(100% + 160px); position: absolute; background: #E6E6EB; padding: 0 20px; box-sizing: border-box; border-top: 2px solid #434960; min-height: 100vh; left: -160px; top: -34px; z-index: 9999999; padding-top: 100px; padding-bottom: 100px; margin-top: 0px; } .sb-onboarding-wizard-ctn[data-step="0"]{ z-index: 1; } .instagram-feed_page_sbi-setup .sbi-fb-source-ctn, .instagram-feed_page_sbi-setup .sb-dialog-ctn { z-index: 999999999999999999999; } .folded .sb-onboarding-wizard-ctn { width: calc(100% + 36px); left: -36px; } .sb-onboarding-wizard-ctn[data-step="0"]{ position: relative; width: 100%!important; left: 0!important; top: 0!important; padding-top:0px!important; border-color: transparent!important; margin-top: 63px; } .sb-onboarding-wizard-wrapper { width: 850px; max-width: 100%; margin: auto; margin-top: 50px; } .sb-onboarding-wizard-wrapper[data-step="0"]{ width: 1200px; margin-top: 100px; } .sb-onboarding-wizard-wrapper>div { width: 100%; box-sizing: border-box; float: left; position: relative; } .sb-onboarding-wizard-top { display: flex; justify-content: center; align-items: center; } .sb-onboarding-wizard-logo-ctn { display: flex; justify-content: center; align-items: center; width: 68px; height: 68px; position: relative; margin-right: 35px; margin-left: -35px; } .sb-onboarding-wizard-logo1-ctn { display: flex; justify-content: center; align-items: center; width: 46px; height: 68px; position: relative; margin-right: 15px; margin-left: -15px; } .sb-onboarding-wizard-logo-balloon1{ width: 100%; float: left; } .sb-onboarding-wizard-logo-ctn:after { content: ''; position: absolute; width: 100%; height: 100%; background: #fff; border-radius: 10px; box-shadow: 0px 1.4945039749145508px 2.0379600524902344px 0px #00000012, 0px 4.1321120262146px 5.634698390960693px 0px #0000000C, 0px 9.94853401184082px 13.566183090209961px 0px #00000009, 0px 33px 45px 0px #00000006; -webkit-transform: rotate(-10deg); transform: rotate(-10deg); } .sb-onboarding-wizard-logo-ctn img { z-index: 2; } .sb-onboarding-wizard-logo-balloon { position: absolute; right: -15px; bottom: -13px; } .sb-onboarding-wizard-plugin-name h3 { font-weight: 600 !important; color: #141B38; font-size: 32px !important; line-height: 1.1em !important; } .sb-onboarding-wizard-plugin-name span { font-weight: 600; color: #141B38; font-size: 20px; opacity: .6; margin-top: 6px; float: left; } .sb-onboarding-wizard-steps { margin-top: 50px; height: 20px; display: flex; align-items: center; justify-content: space-between; } .sb-onboarding-wizard-steps:before { content: ''; position: absolute; width: 100%; height: 2px; background: #CED0D9; margin-top: -1px; } .sb-onboarding-wizard-step-icon { width: 20px; height: 20px; position: relative; background: #fff; border: 4px solid #CED0D9; border-radius: 25px; box-sizing: border-box; } .sb-onboarding-wizard-step-icon:before { content: ''; position: absolute; width: calc(100% + 6px); height: calc(100% + 6px); border: 3px solid #E6E6EB; left: -6px; top: -6px; border-radius: inherit; z-index: 1; } .sb-onboarding-wizard-step-icon[data-active="true"] { border-color: #0096CC; } .sb-onboarding-wizard-step-icon[data-active="done"] { background: #2C324C; border-color: #2C324C; } .sb-onboarding-wizard-step-icon[data-active="done"]:after { content: ''; position: absolute; height: 3px; width: 8px; color: #fff; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; -webkit-transform: rotate(-45deg); transform: rotate(-45deg); top: 2px; left: 1px; } .sb-onboarding-wizard-step-ctn { width: 100%; float: left; margin-top: 30px; } .sb-onboarding-wizard-step-wrapper { background: #fff; border-radius: 5px; padding-bottom: 20px; box-shadow: 0px 4px 5px 0px #0000000D, 0px 1px 2px 0px #0000000D; } /* .sb-onboarding-wizard-step-welcome { display: flex; justify-content: center; align-items: center; flex-direction: column; text-align: center; padding: 100px 20%; } */ .sb-onboarding-wizard-step-welcome { display: grid; grid-template-columns: 55% 45%; padding-bottom: 0px; } .sb-onboarding-wizard-welcome-text{ padding: 0px 10%; display: flex; flex-direction: column; justify-content: center; } .sb-onboarding-wizard-welcome-banner { background-color:#0068A0; border-top-right-radius: 5px; border-bottom-right-radius: 5px; } .sb-onboarding-wizard-welcome-banner img{ width: 100%; height: auto; float: left; border-radius: inherit; } .sb-onboarding-wizard-welcome-btns { display: flex; column-gap: 15px; } .sb-onboarding-wizard-step-welcome h3 { font-size: 24px !important; font-weight: 600 !important; line-height: 29px !important; margin-top: 0px !important; margin-bottom: 5px !important; } .sb-onboarding-wizard-step-welcome p { font-size: 14px; font-weight: 400; line-height: 22px; margin-bottom: 45px; color: #696D80; } .sb-onboarding-wizard-step-welcome button { padding: 16px 25px; font-weight: 600; border-radius: 4px; flex-grow: 1; position: relative; } .sb-onboarding-wizard-step-welcome button.sb-btn-wizard-next:before, .sb-onboarding-wizard-upgrade-btns a.sb-btn-wizard-next:before{ left: unset; top: 21px; right: 40px; } .sb-onboarding-wizard-step-top { display: flex; flex-direction: column; padding: 20px 20px; border-bottom: 1px solid #E6E6EB; } .sb-onboarding-wizard-step-top[data-large="true"] { padding: 30px 20px; } .sb-onboarding-wizard-step-top strong { font-size: 12px; font-weight: 700; line-height: 19px; letter-spacing: 0.05em; color: #696D80; } .sb-onboarding-wizard-step-top h4 { font-size: 18px !important; font-weight: 600 !important; line-height: 25px !important; color: #000; } .sb-onboarding-wizard-step-top[data-large="true"] h4 { font-size: 20px !important; } .sb-onboarding-wizard-step-top span { font-size: 14px; font-weight: 400; line-height: 22px; color: #696D80; } .sb-onboarding-wizard-step-pag-btns { display: flex; justify-content: flex-end; margin-top: 30px; } .sb-onboarding-wizard-step-pag-btns button { padding: 10px 20px 10px 33px !important; margin-left: 20px !important; border-radius: 5px; position: relative; } .sb-btn-wizard-next:before, .sb-btn-wizard-back:before { content: ''; position: absolute; width: 5px; height: 5px; border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; left: 15px; top: 15px; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .sb-btn-wizard-next:before { left: 15px; top: 15px; -webkit-transform: rotate(230deg); transform: rotate(230deg); } .sb-onboarding-wizard-ctn button { -webkit-transition: unset !important; transition: unset !important; } .sb-onboarding-wizard-elements-list>div { padding: 25px; } .sb-onboarding-wizard-elements-list>div:nth-child(odd), .sb-onboarding-wizard-success-list>div:nth-child(odd) { background: #F9F9FA; } .sb-onboarding-wizard-elem-info { display: inline-flex; width: calc(100% - 50px); float: left; align-content: flex-start; } .sb-onboarding-wizard-elem-icon { width: 28px; height: 28px; margin-right: 20px; display: flex; justify-content: center; align-items: center; } .sb-onboarding-wizard-elem-icon img{ width: 28px; height: 28px; float: left; } .sb-onboarding-wizard-elem-text { display: flex; flex-direction: column; } .sb-onboarding-wizard-elem-text strong { font-size: 16px; font-weight: 600; line-height: 26px; display: flex; align-items: center; } .sb-onboarding-wizard-elem-text > span { font-size: 14px; font-weight: 400; line-height: 22px; color: #434960; } .sb-onboarding-wizard-elem-text-installs{ font-size: 12px; font-weight: 400; font-style: italic; color: #005B8C; display: inline-flex; height: 20px; align-items: center; justify-content: center; column-gap: 5px; margin-left: 14px; } .sb-onboarding-wizard-elem-toggle { width: 50px; float: right; } .sb-onboarding-wizard-elem-toggle>div { width: 36px; height: 16px; padding: 2px; border-radius: 31px; background-color: #9295A6; position: relative; cursor: pointer; } .sb-onboarding-wizard-elem-toggle>div[data-color="green"][data-active="true"] { background-color: #59AB46; } .sb-onboarding-wizard-elem-toggle>div[data-uncheck="true"] { opacity: .5; cursor: auto; } .sb-onboarding-wizard-elem-toggle>div:before { content: ''; position: absolute; width: 16px; height: 16px; border-radius: 50px; top: 2px; left: 3px; background-color: #fff; box-shadow: 0px 1px 2px 0px #00000040; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sb-onboarding-wizard-elem-toggle>div[data-active="true"]:before { left: 22px; } .sb-onboarding-wizard-elem-toggle>div[data-color="blue"][data-active="true"]{ background-color: #0096CC; } .sb-onboarding-wizard-elements-list-hd { padding: 20px !important; padding-top: 25px !important; background-color: #fff !important; border-bottom: 1px solid #E6E6EB !important; font-size: 18px !important; font-weight: 600 !important; line-height: 25px !important; } .sb-onboarding-wizard-step-configuref { padding-bottom: 30px; } .sb-onboarding-wizard-success-list{ overflow: hidden; } .sb-onboarding-wizard-step-success{ padding-bottom: 0px; } .sb-onboarding-wizard-succes-elem { padding: 0px 22px; display: flex; align-items: center; column-gap: 10px; visibility: hidden; opacity: 0; height: 0px; transform: translateX(-20px); transition: all .3s ease-in-out; } .sb-onboarding-wizard-success-list[data-done="true"] .sb-onboarding-wizard-succes-elem { height: 54px; visibility: visible; opacity: 1; transform: translateX(0px); } .sb-onboarding-wizard-success-list[data-done="true"] .sb-onboarding-wizard-succes-elem:last-of-type { margin-bottom: 20px; } .sb-onboarding-wizard-succes-icon { width: 20px; height: 20px; color: #468737; } .sb-onboarding-wizard-succes-icon svg path { stroke: currentColor; } .sb-onboarding-wizard-succes-text { font-size: 16px; font-weight: 400; line-height: 26px; color: #2C324C; } .sb-onboarding-wizard-upgrader { margin-top: 30px; /* background: #F9F9FA; */ padding: 30px 10%; box-shadow: 0px 4px 50px 0px #0000000D, 0px 1px 2px 0px #0000000D; border-radius: 5px; } .sb-onboarding-wizard-features-ctn, .sb-onboarding-wizard-license-ctn { background: #fff; border: 1px solid #E6E6EB; box-shadow: 0px 4px 5px 0px #0000000D, 0px 1px 2px 0px #0000000D; margin-bottom: 20px; border-radius: 5px; } .sb-onboarding-wizard-upgrader-features { background: #F9F9FA; display: flex; justify-content: center; align-items: center; padding: 15px 40px; column-gap: 8px; border-top-right-radius: 8px; border-top-left-radius: 8px; } .sb-onboarding-wizard-upgrader-feature-el { display: inline-flex; font-size: 13px; font-weight: 600; line-height: 21px; column-gap: 10px; justify-content: center; align-items: center; padding: 4px 8px; background: #FFFFFF; box-shadow: 0px 4px 10px 0px #0000000D, 0px 1px 2px 0px #0000000D; border-radius: 6px; margin: 3px 0px; } .sb-onboarding-wizard-upgrader-feature-el svg { float: left; } .sb-onboarding-wizard-upgrader-action-ctn { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 40px 20px; } .sb-onboarding-wizard-upgrader-action-ctn h4 { font-size: 18px !important; font-weight: 600 !important; line-height: 25px !important; } .sb-onboarding-wizard-upgrader-action-ctn p { font-size: 15px; font-weight: 400; line-height: 21px; color: #696D80; padding: 0 20%; margin-bottom: 22px; text-align: center; } .sb-onboarding-wizard-upgrader-action-ctn a { font-size: 16px; font-weight: 600; line-height: 26px; text-align: left; padding: 10px 35px; border: 0px; border-radius: 4px; } .sb-onboarding-wizard-upgrader-bonus { display: flex; justify-content: center; align-items: center; background: #FFEFCC; border-bottom-right-radius: 8px; border-bottom-left-radius: 8px; font-size: 13px; font-weight: 400; line-height: 21px; padding: 8px 10px; column-gap: 5px; } .sb-onboarding-wizard-license-ctn { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 40px 60px; } .sb-onboarding-wizard-license-ctn strong { font-size: 20px; font-weight: 600; line-height: 25px; text-align: center; color: #000; } .sb-onboarding-wizard-license-ctn p { font-size: 14px; font-weight: 400; line-height: 21px; text-align: center; color: #696D80; margin-top: 5px; margin-bottom: 22px; } .sb-onboarding-wizard-license-inp-ctn { display: flex; width: 100%; padding: 0 5%; align-items: center; justify-content: center; box-sizing: border-box; column-gap: 12px; } .sb-onboarding-wizard-license-inp-ctn input { flex: 1; padding: 5px 10px!important; border: 1px solid #E6E6EB } .sb-onboarding-wizard-license-inp-ctn button { height: 40px; font-size: 14px; font-weight: 600; line-height: 22px; } .sb-onboarding-wizard-finish-ctn { display: flex; justify-content: center; align-items: center; } .sb-onboarding-wizard-finish-ctn button { font-weight: 600; font-size: 12px; color: #141B38 !important; padding: 13px 23px; line-height: 1em; } .sb-onboarding-wizard-finish-ctn button svg{ margin-left: 10px; float: left; margin-top: 3px; } .sb-onboarding-wizard-sources-list{ display: grid; grid-template-columns: 32.66% 32.66% 32.66%; grid-column-gap: 1%; margin-bottom: 10px; padding: 10px 20px; } .sb-onboarding-wizard-sources-list > div { display: flex; height: 52px; position: relative; border-radius: 3px; margin-bottom: 10px; } .sb-onboarding-wizard-source-newitem{ justify-content: center; align-items: center; background: #EBF5FF; border: 1px solid #EBF5FF; color: #0096CC; cursor: pointer; } .sb-onboarding-wizard-source-newitem span{ color: inherit!important; margin-left: 10px !important; } .sb-onboarding-wizard-source-item { align-items: center; box-sizing: border-box; padding: 0 10px; border: 1px solid #CED0D9; padding-bottom: 2px; } .sb-onboarding-wizard-source-item strong{ color: #000; } .sb-onboarding-wizard-source-item-avatar{ position: relative; width: 32px; height: 32px; border-radius: 50px; margin-right: 12px; } .sb-onboarding-wizard-source-item-avatar img{ width: inherit; height: inherit; border-radius: 50px; float: left; } .sb-onboarding-wizard-source-item-avatar svg{ position: absolute; right: -5px; bottom: -3px; } .sb-onboarding-wizard-source-item-delete{ display: flex; width: 20px; height: 20px; justify-content: center; align-items: center; cursor: pointer; margin-left: auto; } .sb-onboarding-wizard-source-item-delete svg{ float: left; } .sb-onboarding-wizard-succes-name{ text-transform: capitalize; } .sb-onboarding-wizard-upgrade-ctn{ display: grid; grid-template-columns: 54% 46%; background-color: #0068A0; box-shadow: 0px 4px 5px 0px #0000000D, 0px 1px 2px 0px #0000000D; margin-top: 20px; margin-bottom: 20px; border-radius: 5px; } .sb-onboarding-wizard-upgrade-banner img{ width: 100%; float: left; border-top-right-radius: 5px; border-bottom-right-radius: 5px; } .sb-onboarding-wizard-upgrade-text{ padding: 0px 10%; display: flex; flex-direction: column; justify-content: center; } .sb-onboarding-wizard-upgrade-text h3{ color: #fff; } .sb-onboarding-wizard-upgrade-text p { color: #fff; margin: 25px 0px; } .sb-onboarding-wizard-upgrade-btns a, .sb-onboarding-wizard-upgrade-btns a:hover{ color: #0068A0; background: #fff; padding: 16px 25px; position: relative; } .sb-onboarding-wizard-upgrade-off{ padding: 12px 20px; display: grid; grid-template-columns: 50px calc(100% - 50px); background: #FFDF99; margin-top: 18px; border-radius: 4px; } .sb-onboarding-wizard-upgrade-off div{ display: flex; width: 35px; height: 35px; justify-content: center; align-items: center; } .sb-onboarding-wizard-upgrade-off div svg{ float: left; } .sb-onboarding-wizard-upgrade-off span{ color:#331F00; } .sb-onboarding-wizard-close{ top: 0px; position: fixed; display: flex; justify-content: center; align-items: center; width: 120px; height: 40px; right: 100px; background-color: #434960; color: #fff; font-size: 14px; font-weight: 600; column-gap: 10px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; cursor: pointer; z-index: 99; } .instagram-feed_page_sbi-setup .sbi-header-notice{ display: none; } .instagram-feed_page_sbi-setup .sbi-stck-wdg { z-index: 99999999999; } .sb-btn-wizard-next:before, .sb-btn-wizard-install:before{ left: unset !important; right: 16px !important; } button.sb-btn-wizard-install, div:not(.sb-onboarding-wizard-welcome-btns) > button.sb-btn-wizard-next{ padding: 10px 33px 10px 20px !important; } .sb-onboarding-wizard-step-wrapper.sb-onboarding-wizard-step-installp{ padding-bottom: 0px; } .sb-onboarding-wizard-elem:last-of-type{ border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; } .sb-onboarding-wizard-license-error{ color: #D72C2C; display: flex; margin-top: 20px; font-weight: 500; } .sb-onboarding-wizard-license-error a{ text-decoration: underline; } .sb-onboarding-wizard-license-inp-ctn button svg{ fill: currentColor!important; margin-right: 10px; } .sb-onboarding-wizard-license-inp-ctn button svg path{ fill: currentColor !important; } @media (min-width: 760px) and (max-width: 960px) { .sb-onboarding-wizard-step-welcome { grid-template-columns: 70% 30%; } .sb-onboarding-wizard-welcome-text{ padding: 100px 10%; } .sb-onboarding-wizard-welcome-banner{ justify-content: center; display: flex; align-items: center; } } @media all and (max-width: 760px) { .sb-onboarding-wizard-step-welcome { display: flex; flex-direction: column-reverse; margin-bottom: 20px; } .sb-onboarding-wizard-welcome-text{ padding: 100px 10%; } } @media all and (max-width: 960px) { .sb-onboarding-wizard-ctn{ width: 100%; left: 0px; top: 0; } .sb-onboarding-wizard-sources-list{ grid-template-columns: 49% 49%; } } .sb-onboarding-wizard-smash-list{ display: flex; align-items: center; margin-top: 10px; } .sb-onboarding-wizard-smash-inside{ display: flex; padding: 6px 10px; border: 1px solid #E6E6EB; border-radius: 4px; column-gap: 10px; align-items: center; } .sb-onboarding-wizard-smash-list svg{ float: left; fill: #888; } .sb-onboarding-wizard-smash-elem{ display: flex; align-items: center; column-gap: 5px; text-transform: capitalize; } .sb-onboarding-wizard-smash-elem span { color: #333; font-size: 14px; font-weight: 500; } .sb-onboarding-wizard-smash-elem img{ width: 20px; height: auto; float: left; } .sb-onboarding-wizard-smash-inside .sb-control-elem-tltp{ margin-left: unset; width: 14px; height: 14px; cursor: pointer; } .sb-onboarding-wizard-smash-inside .sb-control-elem-tltp-content{ position: absolute; opacity: 0; visibility: hidden; top: -30px; left: 7px; -webkit-transition: all .2s ease-in-out; transition: all .2s ease-in-out; } .sb-onboarding-wizard-smash-inside .sb-control-elem-tltp:hover .sb-control-elem-tltp-content{ opacity: 1; visibility: visible; top: -16px; max-width: 300px; width: auto; left: 7px; } .sb-onboarding-wizard-clicking{ width: 300px; font-size: 14px; color: #3b4262; line-height: 1.7em; position: absolute; bottom: -65px; display: flex; column-gap: 10px; } .sb-onboarding-wizard-clicking svg{ fill: currentColor; margin-top: 5px; } .sb-onboarding-wizard-clicking span > span{ text-transform: capitalize; }instagram-feed/admin/builder/assets/js/personal-account.js000064400000005207151435171370017714 0ustar00/** * Personal Account Popup * * @since 6.1 */ Vue.component('sb-personal-account-component', { name: 'sb-personal-account-component', template: '#sb-personal-account-component', props: [ 'genericText', 'svgIcons', 'parentType', 'parent' ], data: function() { return{ personalAccountModalText : sbi_personal_account.personalAccountScreen, nonce : sbi_personal_account.nonce, ajaxHandler : sbi_personal_account.ajaxHandler, step : 1, personalAccountPopup : false, personalAccountInfo : { id : null, username : null, avatar : null, bio : '', fileName : '' }, loading : false } }, mounted : function(){ }, computed : { }, methods : { /* * Click Cancel Button * */ cancelMaybeLater : function(){ let self = this; self.personalAccountPopup = false; self.$parent.cancelPersonalAccountUpdate(); }, /* * Open File Chooser * When clicking the upload button * */ openFileChooser : function(){ document.getElementById("avatar_file").click(); }, /* * On File chooser change * Update the file name * */ onFileChooserChange : function(){ let self = this; self.personalAccountInfo.fileName = self.$refs.file.files[0].name; }, /* * Update Personal account info * send ajax info * */ addUpdatePersonalSourceInfo: function(){ let self = this, formData = new FormData(); formData.append( 'action', 'sbi_update_personal_account' ); formData.append( 'id', self.personalAccountInfo.id ); formData.append( 'bio', self.personalAccountInfo.bio ); formData.append( 'username', self.personalAccountInfo.username ); formData.append( 'nonce', self.nonce ); if( self.$refs.file.files[0] ){ formData.append( 'avatar', self.$refs.file.files[0] ); } self.loading = true; fetch(self.ajaxHandler, { method: "POST", credentials: 'same-origin', body: formData }) .then(response => response.json()) .then(data => { if( data.success ) { self.$parent.sourcesList = data.sourcesList; self.personalAccountPopup = false; self.$parent.successPersonalAccountUpdate(); } self.loading = false; }); }, } });instagram-feed/admin/builder/assets/js/confirm-dialog.js000064400000004456151435171370017336 0ustar00/** * Confirm Dialog Box Popup * * @since 4.0 */ Vue.component('sb-confirm-dialog-component', { name: 'sb-confirm-dialog-component', template: '#sb-confirm-dialog-component', props: [ 'dialogBox', 'sourceToDelete', 'genericText', 'svgIcons', 'parentType', 'parent' ], computed : { dialogBoxElement :function(){ return this.dialogBox; } }, methods : { /** * Confirm Dialog Button text * * @since 4.0 */ getButtonText : function(type, dialogBoxElement){ if(type == 'confirm'){ if(dialogBoxElement.customButtons != undefined){ return dialogBoxElement.customButtons.confirm.text; } return this.genericText.confirm; } if(type == 'cancel'){ if(dialogBoxElement.customButtons != undefined){ return dialogBoxElement.customButtons.cancel.text; } return this.genericText.cancel; } }, /** * Confirm Dialog Box Button Background * * @since 4.0 */ getButtonBackground : function(type, dialogBoxElement){ var color = ''; if(type == 'confirm'){ if(dialogBoxElement.customButtons != undefined){ color = dialogBoxElement.customButtons.confirm.color; }else{ color = 'red'; } } if(type == 'cancel'){ if(dialogBoxElement.customButtons != undefined){ color = dialogBoxElement.customButtons.cancel.color; }else{ color = 'grey'; } } return 'sb-btn-' + color; }, /** * Confirm Dialog Box * * @since 4.0 */ confirmDialogAction : function(){ var self = this; self.$parent.confirmDialogAction(); self.closeConfirmDialog(); }, /** * Close Dialog Box * * @since 4.0 */ closeConfirmDialog : function(){ var self = this; if( self.parentType == 'builder' ){ self.$parent.sourceToDelete = {}; self.$parent.feedToDelete = {}; } if(self.dialogBoxElement.type == 'unsavedFeedSources'){ self.$parent.viewsActive.feedtypesCustomizerPopup = false; } if(self.dialogBoxElement.type == 'backAllToFeed'){ window.location.href = self.$parent.builderUrl; } var dialogBox = { active : false, type : null, heading : null, description : null, customButtons : undefined }; self.$emit('update:dialogBox', dialogBox) }, } });instagram-feed/admin/builder/assets/js/install-plugin-popup.js000064400000002205151435171370020535 0ustar00/** * Install Plugin Popup Popup * * @since 4.0 */ Vue.component('install-plugin-popup', { name: 'install-plugin-popup', template: '#install-plugin-popup', props: [ 'genericText', 'svgIcons', 'viewsActive', 'plugins' ], data: function() { return{ installerStatus: null } }, methods : { /** * Install or Activate Plugin * * @since 4.0 * * @return void */ installOrActivatePlugin : function( plugin, pluginPath, action ){ this.installerStatus = 'loading'; let data = new FormData(); data.append( 'action', action ); data.append( 'nonce', sbi_builder.nonce ); data.append( 'plugin', pluginPath ); data.append( 'type', 'plugin' ); fetch(sbi_builder.ajax_handler, { method: "POST", credentials: 'same-origin', body: data }) .then(response => response.json()) .then(data => { if( data.success == true ) { this.installerStatus = null; plugin.installed = true; plugin.activated = true; } return; }); }, }, }); instagram-feed/admin/builder/assets/js/owl.autoheight.js000064400000003211151435171370017371 0ustar00!function(o,i){var s=function(t){this._core=t,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":o.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":o.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&"position"===t.property.name&&this.update()},this),"loaded.owl.lazy":o.proxy(function(t){t.namespace&&this._core.settings.autoHeight&&t.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=o.extend({},s.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var e=this;o(i).on("load",function(){e._core.settings.autoHeight&&e.update()}),o(i).resize(function(){e._core.settings.autoHeight&&(null!=e._intervalId&&clearTimeout(e._intervalId),e._intervalId=setTimeout(function(){e.update()},250))})};s.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},s.prototype.update=function(){var t=this._core._current,e=t+this._core.settings.items,i=this._core.settings.lazyLoad,t=this._core.$stage.children().toArray().slice(t,e),s=[],e=0;o.each(t,function(t,e){s.push(o(e).height())}),(e=Math.max.apply(null,s))<=1&&i&&this._previousHeight&&(e=this._previousHeight),this._previousHeight=e,this._core.$stage.parent().height(e).addClass(this._core.settings.autoHeightClass)},s.prototype.destroy=function(){var t,e;for(t in this._handlers)this._core.$element.off(t,this._handlers[t]);for(e in Object.getOwnPropertyNames(this))"function"!=typeof this[e]&&(this[e]=null)},o.fn.owlCarousel.Constructor.Plugins.AutoHeight=s}(window.Zepto||window.jQuery,window,document);instagram-feed/admin/builder/assets/js/tooltip-wizard.js000064400000004041151435171370017422 0ustar00/** * Custom Facebook Tooltip Manager * * @since 4.0 */ 'use strict'; var SBITooltipWizard = window.SBITooltipWizard || ( function( document, window, $ ) { /** * Public functions and properties. * * @since 4.0 * * @type {object} */ var app = { /** * Start the engine. * * @since 4.0 */ init: function() { //$( app.ready ); $( window ).on( 'load', function() { if ( $.isFunction( $.ready.then ) ) { $.ready.then( app.load ); } else { app.load(); } } ); }, /** * Window load. * * @since 4.0 */ load: function() { if(sbi_admin_tooltip_wizard.sbi_wizard_gutenberg){ app.initGutenbergTooltip(); } }, initGutenbergTooltip : function(){ if ( typeof $.fn.tooltipster === 'undefined' ) { return; } var $dot = $( ' ' ); var anchor = '.block-editor .edit-post-header-toolbar__inserter-toggle'; var tooltipsterArgs = { content : $( '#sbi-gutenberg-tooltip-content' ), trigger : 'custom', interactive : true, animationDuration: 0, delay : 0, theme : [ 'tooltipster-default', 'sbi-tooltip-wizard' ], side : 'bottom', distance : 3, functionReady : function( instance, helper ) { instance._$tooltip.on( 'click', '.sbi-tlp-wizard-close', function() { instance.close(); } ); instance.reposition(); }, }; $('.components-button.edit-post-header-toolbar__inserter-toggle').on('click',function() { $('.sbi-tooltip-wizard.tooltipster-sidetip').hide(); }); $dot.insertAfter( anchor ).tooltipster( tooltipsterArgs ).tooltipster( 'open' ); }, /** * Check if we're in Gutenberg editor. * * @since 4.0 * * @returns {boolean} Is Gutenberg or not. */ isGutenberg: function() { return typeof wp !== 'undefined' && Object.prototype.hasOwnProperty.call( wp, 'blocks' ); }, } return app; }( document, window, jQuery ) ); SBITooltipWizard.init(); instagram-feed/admin/builder/assets/js/date_i18n.js000064400000004470151435171370016214 0ustar00function date_i18n(n,t){function e(n,t){return i[n]?i[n]():t}function r(n,t){for(n=String(n);n.length0?e=c.__plugins[d]:a.each(c.__plugins,function(a,b){return b.name.substring(b.name.length-d.length-1)=="."+d?(e=b,!1):void 0}),e}if(b.name.indexOf(".")<0)throw new Error("Plugins must be namespaced");return c.__plugins[b.name]=b,b.core&&c.__bridge(b.core,c,b.name),this},_trigger:function(){var a=Array.prototype.slice.apply(arguments);return"string"==typeof a[0]&&(a[0]={type:a[0]}),this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,a),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,a),this},instances:function(b){var c=[],d=b||".tooltipstered";return a(d).each(function(){var b=a(this),d=b.data("tooltipster-ns");d&&a.each(d,function(a,d){c.push(b.data(d))})}),c},instancesLatest:function(){return this.__instancesLatestArr},off:function(){return this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},origins:function(b){var c=b?b+" ":"";return a(c+".tooltipstered").toArray()},setDefaults:function(b){return a.extend(f,b),this},triggerHandler:function(){return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.tooltipster=new i,a.Tooltipster=function(b,c){this.__callbacks={close:[],open:[]},this.__closingTime,this.__Content,this.__contentBcr,this.__destroyed=!1,this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__enabled=!0,this.__garbageCollector,this.__Geometry,this.__lastPosition,this.__namespace="tooltipster-"+Math.round(1e6*Math.random()),this.__options,this.__$originParents,this.__pointerIsOverOrigin=!1,this.__previousThemes=[],this.__state="closed",this.__timeouts={close:[],open:null},this.__touchEvents=[],this.__tracker=null,this._$origin,this._$tooltip,this.__init(b,c)},a.Tooltipster.prototype={__init:function(b,c){var d=this;if(d._$origin=a(b),d.__options=a.extend(!0,{},f,c),d.__optionsFormat(),!h.IE||h.IE>=d.__options.IEmin){var e=null;if(void 0===d._$origin.data("tooltipster-initialTitle")&&(e=d._$origin.attr("title"),void 0===e&&(e=null),d._$origin.data("tooltipster-initialTitle",e)),null!==d.__options.content)d.__contentSet(d.__options.content);else{var g,i=d._$origin.attr("data-tooltip-content");i&&(g=a(i)),g&&g[0]?d.__contentSet(g.first()):d.__contentSet(e)}d._$origin.removeAttr("title").addClass("tooltipstered"),d.__prepareOrigin(),d.__prepareGC(),a.each(d.__options.plugins,function(a,b){d._plug(b)}),h.hasTouchCapability&&a(h.window.document.body).on("touchmove."+d.__namespace+"-triggerOpen",function(a){d._touchRecordEvent(a)}),d._on("created",function(){d.__prepareTooltip()})._on("repositioned",function(a){d.__lastPosition=a.position})}else d.__options.disabled=!0},__contentInsert:function(){var a=this,b=a._$tooltip.find(".tooltipster-content"),c=a.__Content,d=function(a){c=a};return a._trigger({type:"format",content:a.__Content,format:d}),a.__options.functionFormat&&(c=a.__options.functionFormat.call(a,a,{origin:a._$origin[0]},a.__Content)),"string"!=typeof c||a.__options.contentAsHTML?b.empty().append(c):b.text(c),a},__contentSet:function(b){return b instanceof a&&this.__options.contentCloning&&(b=b.clone(!0)),this.__Content=b,this._trigger({type:"updated",content:b}),this},__destroyError:function(){throw new Error("This tooltip has been destroyed and cannot execute your method call.")},__geometry:function(){var b=this,c=b._$origin,d=b._$origin.is("area");if(d){var e=b._$origin.parent().attr("name");c=a('img[usemap="#'+e+'"]')}var f=c[0].getBoundingClientRect(),g=a(h.window.document),i=a(h.window),j=c,k={available:{document:null,window:null},document:{size:{height:g.height(),width:g.width()}},window:{scroll:{left:h.window.scrollX||h.window.document.documentElement.scrollLeft,top:h.window.scrollY||h.window.document.documentElement.scrollTop},size:{height:i.height(),width:i.width()}},origin:{fixedLineage:!1,offset:{},size:{height:f.bottom-f.top,width:f.right-f.left},usemapImage:d?c[0]:null,windowOffset:{bottom:f.bottom,left:f.left,right:f.right,top:f.top}}};if(d){var l=b._$origin.attr("shape"),m=b._$origin.attr("coords");if(m&&(m=m.split(","),a.map(m,function(a,b){m[b]=parseInt(a)})),"default"!=l)switch(l){case"circle":var n=m[0],o=m[1],p=m[2],q=o-p,r=n-p;k.origin.size.height=2*p,k.origin.size.width=k.origin.size.height,k.origin.windowOffset.left+=r,k.origin.windowOffset.top+=q;break;case"rect":var s=m[0],t=m[1],u=m[2],v=m[3];k.origin.size.height=v-t,k.origin.size.width=u-s,k.origin.windowOffset.left+=s,k.origin.windowOffset.top+=t;break;case"poly":for(var w=0,x=0,y=0,z=0,A="even",B=0;By&&(y=C,0===B&&(w=y)),w>C&&(w=C),A="odd"):(C>z&&(z=C,1==B&&(x=z)),x>C&&(x=C),A="even")}k.origin.size.height=z-x,k.origin.size.width=y-w,k.origin.windowOffset.left+=w,k.origin.windowOffset.top+=x}}var D=function(a){k.origin.size.height=a.height,k.origin.windowOffset.left=a.left,k.origin.windowOffset.top=a.top,k.origin.size.width=a.width};for(b._trigger({type:"geometry",edit:D,geometry:{height:k.origin.size.height,left:k.origin.windowOffset.left,top:k.origin.windowOffset.top,width:k.origin.size.width}}),k.origin.windowOffset.right=k.origin.windowOffset.left+k.origin.size.width,k.origin.windowOffset.bottom=k.origin.windowOffset.top+k.origin.size.height,k.origin.offset.left=k.origin.windowOffset.left+k.window.scroll.left,k.origin.offset.top=k.origin.windowOffset.top+k.window.scroll.top,k.origin.offset.bottom=k.origin.offset.top+k.origin.size.height,k.origin.offset.right=k.origin.offset.left+k.origin.size.width,k.available.document={bottom:{height:k.document.size.height-k.origin.offset.bottom,width:k.document.size.width},left:{height:k.document.size.height,width:k.origin.offset.left},right:{height:k.document.size.height,width:k.document.size.width-k.origin.offset.right},top:{height:k.origin.offset.top,width:k.document.size.width}},k.available.window={bottom:{height:Math.max(k.window.size.height-Math.max(k.origin.windowOffset.bottom,0),0),width:k.window.size.width},left:{height:k.window.size.height,width:Math.max(k.origin.windowOffset.left,0)},right:{height:k.window.size.height,width:Math.max(k.window.size.width-Math.max(k.origin.windowOffset.right,0),0)},top:{height:Math.max(k.origin.windowOffset.top,0),width:k.window.size.width}};"html"!=j[0].tagName.toLowerCase();){if("fixed"==j.css("position")){k.origin.fixedLineage=!0;break}j=j.parent()}return k},__optionsFormat:function(){return"number"==typeof this.__options.animationDuration&&(this.__options.animationDuration=[this.__options.animationDuration,this.__options.animationDuration]),"number"==typeof this.__options.delay&&(this.__options.delay=[this.__options.delay,this.__options.delay]),"number"==typeof this.__options.delayTouch&&(this.__options.delayTouch=[this.__options.delayTouch,this.__options.delayTouch]),"string"==typeof this.__options.theme&&(this.__options.theme=[this.__options.theme]),null===this.__options.parent?this.__options.parent=a(h.window.document.body):"string"==typeof this.__options.parent&&(this.__options.parent=a(this.__options.parent)),"hover"==this.__options.trigger?(this.__options.triggerOpen={mouseenter:!0,touchstart:!0},this.__options.triggerClose={mouseleave:!0,originClick:!0,touchleave:!0}):"click"==this.__options.trigger&&(this.__options.triggerOpen={click:!0,tap:!0},this.__options.triggerClose={click:!0,tap:!0}),this._trigger("options"),this},__prepareGC:function(){var b=this;return b.__options.selfDestruction?b.__garbageCollector=setInterval(function(){var c=(new Date).getTime();b.__touchEvents=a.grep(b.__touchEvents,function(a,b){return c-a.time>6e4}),d(b._$origin)||b.close(function(){b.destroy()})},2e4):clearInterval(b.__garbageCollector),b},__prepareOrigin:function(){var a=this;if(a._$origin.off("."+a.__namespace+"-triggerOpen"),h.hasTouchCapability&&a._$origin.on("touchstart."+a.__namespace+"-triggerOpen touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen",function(b){a._touchRecordEvent(b)}),a.__options.triggerOpen.click||a.__options.triggerOpen.tap&&h.hasTouchCapability){var b="";a.__options.triggerOpen.click&&(b+="click."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.tap&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&a._open(b)})}if(a.__options.triggerOpen.mouseenter||a.__options.triggerOpen.touchstart&&h.hasTouchCapability){var b="";a.__options.triggerOpen.mouseenter&&(b+="mouseenter."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.touchstart&&h.hasTouchCapability&&(b+="touchstart."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){!a._touchIsTouchEvent(b)&&a._touchIsEmulatedEvent(b)||(a.__pointerIsOverOrigin=!0,a._openShortly(b))})}if(a.__options.triggerClose.mouseleave||a.__options.triggerClose.touchleave&&h.hasTouchCapability){var b="";a.__options.triggerClose.mouseleave&&(b+="mouseleave."+a.__namespace+"-triggerOpen "),a.__options.triggerClose.touchleave&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&(a.__pointerIsOverOrigin=!1)})}return a},__prepareTooltip:function(){var b=this,c=b.__options.interactive?"auto":"";return b._$tooltip.attr("id",b.__namespace).css({"pointer-events":c,zIndex:b.__options.zIndex}),a.each(b.__previousThemes,function(a,c){b._$tooltip.removeClass(c)}),a.each(b.__options.theme,function(a,c){b._$tooltip.addClass(c)}),b.__previousThemes=a.merge([],b.__options.theme),b},__scrollHandler:function(b){var c=this;if(c.__options.triggerClose.scroll)c._close(b);else if(d(c._$origin)&&d(c._$tooltip)){var e=null;if(b.target===h.window.document)c.__Geometry.origin.fixedLineage||c.__options.repositionOnScroll&&c.reposition(b);else{e=c.__geometry();var f=!1;if("fixed"!=c._$origin.css("position")&&c.__$originParents.each(function(b,c){var d=a(c),g=d.css("overflow-x"),h=d.css("overflow-y");if("visible"!=g||"visible"!=h){var i=c.getBoundingClientRect();if("visible"!=g&&(e.origin.windowOffset.lefti.right))return f=!0,!1;if("visible"!=h&&(e.origin.windowOffset.topi.bottom))return f=!0,!1}return"fixed"==d.css("position")?!1:void 0}),f)c._$tooltip.css("visibility","hidden");else if(c._$tooltip.css("visibility","visible"),c.__options.repositionOnScroll)c.reposition(b);else{var g=e.origin.offset.left-c.__Geometry.origin.offset.left,i=e.origin.offset.top-c.__Geometry.origin.offset.top;c._$tooltip.css({left:c.__lastPosition.coord.left+g,top:c.__lastPosition.coord.top+i})}}c._trigger({type:"scroll",event:b,geo:e})}return c},__stateSet:function(a){return this.__state=a,this._trigger({type:"state",state:a}),this},__timeoutsClear:function(){return clearTimeout(this.__timeouts.open),this.__timeouts.open=null,a.each(this.__timeouts.close,function(a,b){clearTimeout(b)}),this.__timeouts.close=[],this},__trackerStart:function(){var a=this,b=a._$tooltip.find(".tooltipster-content");return a.__options.trackTooltip&&(a.__contentBcr=b[0].getBoundingClientRect()),a.__tracker=setInterval(function(){if(d(a._$origin)&&d(a._$tooltip)){if(a.__options.trackOrigin){var e=a.__geometry(),f=!1;c(e.origin.size,a.__Geometry.origin.size)&&(a.__Geometry.origin.fixedLineage?c(e.origin.windowOffset,a.__Geometry.origin.windowOffset)&&(f=!0):c(e.origin.offset,a.__Geometry.origin.offset)&&(f=!0)),f||(a.__options.triggerClose.mouseleave?a._close():a.reposition())}if(a.__options.trackTooltip){var g=b[0].getBoundingClientRect();g.height===a.__contentBcr.height&&g.width===a.__contentBcr.width||(a.reposition(),a.__contentBcr=g)}}else a._close()},a.__options.trackerInterval),a},_close:function(b,c,d){var e=this,f=!0;if(e._trigger({type:"close",event:b,stop:function(){f=!1}}),f||d){c&&e.__callbacks.close.push(c),e.__callbacks.open=[],e.__timeoutsClear();var g=function(){a.each(e.__callbacks.close,function(a,c){c.call(e,e,{event:b,origin:e._$origin[0]})}),e.__callbacks.close=[]};if("closed"!=e.__state){var i=!0,j=new Date,k=j.getTime(),l=k+e.__options.animationDuration[1];if("disappearing"==e.__state&&l>e.__closingTime&&e.__options.animationDuration[1]>0&&(i=!1),i){e.__closingTime=l,"disappearing"!=e.__state&&e.__stateSet("disappearing");var m=function(){clearInterval(e.__tracker),e._trigger({type:"closing",event:b}),e._$tooltip.off("."+e.__namespace+"-triggerClose").removeClass("tooltipster-dying"),a(h.window).off("."+e.__namespace+"-triggerClose"),e.__$originParents.each(function(b,c){a(c).off("scroll."+e.__namespace+"-triggerClose")}),e.__$originParents=null,a(h.window.document.body).off("."+e.__namespace+"-triggerClose"),e._$origin.off("."+e.__namespace+"-triggerClose"),e._off("dismissable"),e.__stateSet("closed"),e._trigger({type:"after",event:b}),e.__options.functionAfter&&e.__options.functionAfter.call(e,e,{event:b,origin:e._$origin[0]}),g()};h.hasTransitions?(e._$tooltip.css({"-moz-animation-duration":e.__options.animationDuration[1]+"ms","-ms-animation-duration":e.__options.animationDuration[1]+"ms","-o-animation-duration":e.__options.animationDuration[1]+"ms","-webkit-animation-duration":e.__options.animationDuration[1]+"ms","animation-duration":e.__options.animationDuration[1]+"ms","transition-duration":e.__options.animationDuration[1]+"ms"}),e._$tooltip.clearQueue().removeClass("tooltipster-show").addClass("tooltipster-dying"),e.__options.animationDuration[1]>0&&e._$tooltip.delay(e.__options.animationDuration[1]),e._$tooltip.queue(m)):e._$tooltip.stop().fadeOut(e.__options.animationDuration[1],m)}}else g()}return e},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_open:function(b,c){var e=this;if(!e.__destroying&&d(e._$origin)&&e.__enabled){var f=!0;if("closed"==e.__state&&(e._trigger({type:"before",event:b,stop:function(){f=!1}}),f&&e.__options.functionBefore&&(f=e.__options.functionBefore.call(e,e,{event:b,origin:e._$origin[0]}))),f!==!1&&null!==e.__Content){c&&e.__callbacks.open.push(c),e.__callbacks.close=[],e.__timeoutsClear();var g,i=function(){"stable"!=e.__state&&e.__stateSet("stable"),a.each(e.__callbacks.open,function(a,b){b.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}),e.__callbacks.open=[]};if("closed"!==e.__state)g=0,"disappearing"===e.__state?(e.__stateSet("appearing"),h.hasTransitions?(e._$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-show"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i)):e._$tooltip.stop().fadeIn(i)):"stable"==e.__state&&i();else{if(e.__stateSet("appearing"),g=e.__options.animationDuration[0],e.__contentInsert(),e.reposition(b,!0),h.hasTransitions?(e._$tooltip.addClass("tooltipster-"+e.__options.animation).addClass("tooltipster-initial").css({"-moz-animation-duration":e.__options.animationDuration[0]+"ms","-ms-animation-duration":e.__options.animationDuration[0]+"ms","-o-animation-duration":e.__options.animationDuration[0]+"ms","-webkit-animation-duration":e.__options.animationDuration[0]+"ms","animation-duration":e.__options.animationDuration[0]+"ms","transition-duration":e.__options.animationDuration[0]+"ms"}),setTimeout(function(){"closed"!=e.__state&&(e._$tooltip.addClass("tooltipster-show").removeClass("tooltipster-initial"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i))},0)):e._$tooltip.css("display","none").fadeIn(e.__options.animationDuration[0],i),e.__trackerStart(),a(h.window).on("resize."+e.__namespace+"-triggerClose",function(b){var c=a(document.activeElement);(c.is("input")||c.is("textarea"))&&a.contains(e._$tooltip[0],c[0])||e.reposition(b)}).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)}),e.__$originParents=e._$origin.parents(),e.__$originParents.each(function(b,c){a(c).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)})}),e.__options.triggerClose.mouseleave||e.__options.triggerClose.touchleave&&h.hasTouchCapability){e._on("dismissable",function(a){a.dismissable?a.delay?(m=setTimeout(function(){e._close(a.event)},a.delay),e.__timeouts.close.push(m)):e._close(a):clearTimeout(m)});var j=e._$origin,k="",l="",m=null;e.__options.interactive&&(j=j.add(e._$tooltip)),e.__options.triggerClose.mouseleave&&(k+="mouseenter."+e.__namespace+"-triggerClose ",l+="mouseleave."+e.__namespace+"-triggerClose "),e.__options.triggerClose.touchleave&&h.hasTouchCapability&&(k+="touchstart."+e.__namespace+"-triggerClose",l+="touchend."+e.__namespace+"-triggerClose touchcancel."+e.__namespace+"-triggerClose"),j.on(l,function(a){if(e._touchIsTouchEvent(a)||!e._touchIsEmulatedEvent(a)){var b="mouseleave"==a.type?e.__options.delay:e.__options.delayTouch;e._trigger({delay:b[1],dismissable:!0,event:a,type:"dismissable"})}}).on(k,function(a){!e._touchIsTouchEvent(a)&&e._touchIsEmulatedEvent(a)||e._trigger({dismissable:!1,event:a,type:"dismissable"})})}e.__options.triggerClose.originClick&&e._$origin.on("click."+e.__namespace+"-triggerClose",function(a){e._touchIsTouchEvent(a)||e._touchIsEmulatedEvent(a)||e._close(a)}),(e.__options.triggerClose.click||e.__options.triggerClose.tap&&h.hasTouchCapability)&&setTimeout(function(){if("closed"!=e.__state){var b="",c=a(h.window.document.body);e.__options.triggerClose.click&&(b+="click."+e.__namespace+"-triggerClose "),e.__options.triggerClose.tap&&h.hasTouchCapability&&(b+="touchend."+e.__namespace+"-triggerClose"),c.on(b,function(b){e._touchIsMeaningfulEvent(b)&&(e._touchRecordEvent(b),e.__options.interactive&&a.contains(e._$tooltip[0],b.target)||e._close(b))}),e.__options.triggerClose.tap&&h.hasTouchCapability&&c.on("touchstart."+e.__namespace+"-triggerClose",function(a){e._touchRecordEvent(a)})}},0),e._trigger("ready"),e.__options.functionReady&&e.__options.functionReady.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}if(e.__options.timer>0){var m=setTimeout(function(){e._close()},e.__options.timer+g);e.__timeouts.close.push(m)}}}return e},_openShortly:function(a){var b=this,c=!0;if("stable"!=b.__state&&"appearing"!=b.__state&&!b.__timeouts.open&&(b._trigger({type:"start",event:a,stop:function(){c=!1}}),c)){var d=0==a.type.indexOf("touch")?b.__options.delayTouch:b.__options.delay;d[0]?b.__timeouts.open=setTimeout(function(){b.__timeouts.open=null,b.__pointerIsOverOrigin&&b._touchIsMeaningfulEvent(a)?(b._trigger("startend"),b._open(a)):b._trigger("startcancel")},d[0]):(b._trigger("startend"),b._open(a))}return b},_optionsExtract:function(b,c){var d=this,e=a.extend(!0,{},c),f=d.__options[b];return f||(f={},a.each(c,function(a,b){var c=d.__options[a];void 0!==c&&(f[a]=c)})),a.each(e,function(b,c){void 0!==f[b]&&("object"!=typeof c||c instanceof Array||null==c||"object"!=typeof f[b]||f[b]instanceof Array||null==f[b]?e[b]=f[b]:a.extend(e[b],f[b]))}),e},_plug:function(b){var c=a.tooltipster._plugin(b);if(!c)throw new Error('The "'+b+'" plugin is not defined');return c.instance&&a.tooltipster.__bridge(c.instance,this,c.name),this},_touchIsEmulatedEvent:function(a){for(var b=!1,c=(new Date).getTime(),d=this.__touchEvents.length-1;d>=0;d--){var e=this.__touchEvents[d];if(!(c-e.time<500))break;e.target===a.target&&(b=!0)}return b},_touchIsMeaningfulEvent:function(a){return this._touchIsTouchEvent(a)&&!this._touchSwiped(a.target)||!this._touchIsTouchEvent(a)&&!this._touchIsEmulatedEvent(a)},_touchIsTouchEvent:function(a){return 0==a.type.indexOf("touch")},_touchRecordEvent:function(a){return this._touchIsTouchEvent(a)&&(a.time=(new Date).getTime(),this.__touchEvents.push(a)),this},_touchSwiped:function(a){for(var b=!1,c=this.__touchEvents.length-1;c>=0;c--){var d=this.__touchEvents[c];if("touchmove"==d.type){b=!0;break}if("touchstart"==d.type&&a===d.target)break}return b},_trigger:function(){var b=Array.prototype.slice.apply(arguments);return"string"==typeof b[0]&&(b[0]={type:b[0]}),b[0].instance=this,b[0].origin=this._$origin?this._$origin[0]:null,b[0].tooltip=this._$tooltip?this._$tooltip[0]:null,this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,b),a.tooltipster._trigger.apply(a.tooltipster,b),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,b),this},_unplug:function(b){var c=this;if(c[b]){var d=a.tooltipster._plugin(b);d.instance&&a.each(d.instance,function(a,d){c[a]&&c[a].bridged===c[b]&&delete c[a]}),c[b].__destroy&&c[b].__destroy(),delete c[b]}return c},close:function(a){return this.__destroyed?this.__destroyError():this._close(null,a),this},content:function(a){var b=this;if(void 0===a)return b.__Content;if(b.__destroyed)b.__destroyError();else if(b.__contentSet(a),null!==b.__Content){if("closed"!==b.__state&&(b.__contentInsert(),b.reposition(),b.__options.updateAnimation))if(h.hasTransitions){var c=b.__options.updateAnimation;b._$tooltip.addClass("tooltipster-update-"+c),setTimeout(function(){"closed"!=b.__state&&b._$tooltip.removeClass("tooltipster-update-"+c)},1e3)}else b._$tooltip.fadeTo(200,.5,function(){"closed"!=b.__state&&b._$tooltip.fadeTo(200,1)})}else b._close();return b},destroy:function(){var b=this;if(b.__destroyed)b.__destroyError();else{"closed"!=b.__state?b.option("animationDuration",0)._close(null,null,!0):b.__timeoutsClear(),b._trigger("destroy"),b.__destroyed=!0,b._$origin.removeData(b.__namespace).off("."+b.__namespace+"-triggerOpen"),a(h.window.document.body).off("."+b.__namespace+"-triggerOpen");var c=b._$origin.data("tooltipster-ns");if(c)if(1===c.length){var d=null;"previous"==b.__options.restoration?d=b._$origin.data("tooltipster-initialTitle"):"current"==b.__options.restoration&&(d="string"==typeof b.__Content?b.__Content:a("
").append(b.__Content).html()),d&&b._$origin.attr("title",d),b._$origin.removeClass("tooltipstered"),b._$origin.removeData("tooltipster-ns").removeData("tooltipster-initialTitle")}else c=a.grep(c,function(a,c){return a!==b.__namespace}),b._$origin.data("tooltipster-ns",c);b._trigger("destroyed"),b._off(),b.off(),b.__Content=null,b.__$emitterPrivate=null,b.__$emitterPublic=null,b.__options.parent=null,b._$origin=null,b._$tooltip=null,a.tooltipster.__instancesLatestArr=a.grep(a.tooltipster.__instancesLatestArr,function(a,c){return b!==a}),clearInterval(b.__garbageCollector)}return b},disable:function(){return this.__destroyed?(this.__destroyError(),this):(this._close(),this.__enabled=!1,this)},elementOrigin:function(){return this.__destroyed?void this.__destroyError():this._$origin[0]},elementTooltip:function(){return this._$tooltip?this._$tooltip[0]:null},enable:function(){return this.__enabled=!0,this},hide:function(a){return this.close(a)},instance:function(){return this},off:function(){return this.__destroyed||this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},open:function(a){return this.__destroyed?this.__destroyError():this._open(null,a),this},option:function(b,c){return void 0===c?this.__options[b]:(this.__destroyed?this.__destroyError():(this.__options[b]=c,this.__optionsFormat(),a.inArray(b,["trigger","triggerClose","triggerOpen"])>=0&&this.__prepareOrigin(),"selfDestruction"===b&&this.__prepareGC()),this)},reposition:function(a,b){var c=this;return c.__destroyed?c.__destroyError():"closed"!=c.__state&&d(c._$origin)&&(b||d(c._$tooltip))&&(b||c._$tooltip.detach(),c.__Geometry=c.__geometry(),c._trigger({type:"reposition",event:a,helper:{geo:c.__Geometry}})),c},show:function(a){return this.open(a)},status:function(){return{destroyed:this.__destroyed,enabled:this.__enabled,open:"closed"!==this.__state,state:this.__state}},triggerHandler:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.fn.tooltipster=function(){var b=Array.prototype.slice.apply(arguments),c="You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE.";if(0===this.length)return this;if("string"==typeof b[0]){var d="#*$~&";return this.each(function(){var e=a(this).data("tooltipster-ns"),f=e?a(this).data(e[0]):null;if(!f)throw new Error("You called Tooltipster's \""+b[0]+'" method on an uninitialized element');if("function"!=typeof f[b[0]])throw new Error('Unknown method "'+b[0]+'"');this.length>1&&"content"==b[0]&&(b[1]instanceof a||"object"==typeof b[1]&&null!=b[1]&&b[1].tagName)&&!f.__options.contentCloning&&f.__options.debug&&console.log(c);var g=f[b[0]](b[1],b[2]);return g!==f||"instance"===b[0]?(d=g,!1):void 0}),"#*$~&"!==d?d:this}a.tooltipster.__instancesLatestArr=[];var e=b[0]&&void 0!==b[0].multiple,g=e&&b[0].multiple||!e&&f.multiple,h=b[0]&&void 0!==b[0].content,i=h&&b[0].content||!h&&f.content,j=b[0]&&void 0!==b[0].contentCloning,k=j&&b[0].contentCloning||!j&&f.contentCloning,l=b[0]&&void 0!==b[0].debug,m=l&&b[0].debug||!l&&f.debug;return this.length>1&&(i instanceof a||"object"==typeof i&&null!=i&&i.tagName)&&!k&&m&&console.log(c),this.each(function(){var c=!1,d=a(this),e=d.data("tooltipster-ns"),f=null;e?g?c=!0:m&&(console.log("Tooltipster: one or more tooltips are already attached to the element below. Ignoring."),console.log(this)):c=!0,c&&(f=new a.Tooltipster(this,b[0]),e||(e=[]),e.push(f.__namespace),d.data("tooltipster-ns",e),d.data(f.__namespace,f),f.__options.functionInit&&f.__options.functionInit.call(f,f,{origin:this}),f._trigger("init")),a.tooltipster.__instancesLatestArr.push(f)}),this},b.prototype={__init:function(b){this.__$tooltip=b,this.__$tooltip.css({left:0,overflow:"hidden",position:"absolute",top:0}).find(".tooltipster-content").css("overflow","auto"),this.$container=a('
').append(this.__$tooltip).appendTo(h.window.document.body)},__forceRedraw:function(){var a=this.__$tooltip.parent();this.__$tooltip.detach(),this.__$tooltip.appendTo(a)},constrain:function(a,b){return this.constraints={width:a,height:b},this.__$tooltip.css({display:"block",height:"",overflow:"auto",width:a}),this},destroy:function(){this.__$tooltip.detach().find(".tooltipster-content").css({display:"",overflow:""}),this.$container.remove()},free:function(){return this.constraints=null,this.__$tooltip.css({display:"",height:"",overflow:"visible",width:""}),this},measure:function(){this.__forceRedraw();var a=this.__$tooltip[0].getBoundingClientRect(),b={size:{height:a.height||a.bottom-a.top,width:a.width||a.right-a.left}};if(this.constraints){var c=this.__$tooltip.find(".tooltipster-content"),d=this.__$tooltip.outerHeight(),e=c[0].getBoundingClientRect(),f={height:d<=this.constraints.height,width:a.width<=this.constraints.width&&e.width>=c[0].scrollWidth-1};b.fits=f.height&&f.width}return h.IE&&h.IE<=11&&b.size.width!==h.window.document.documentElement.clientWidth&&(b.size.width=Math.ceil(b.size.width)+1),b}};var j=navigator.userAgent.toLowerCase();-1!=j.indexOf("msie")?h.IE=parseInt(j.split("msie")[1]):-1!==j.toLowerCase().indexOf("trident")&&-1!==j.indexOf(" rv:11")?h.IE=11:-1!=j.toLowerCase().indexOf("edge/")&&(h.IE=parseInt(j.toLowerCase().split("edge/")[1]));var k="tooltipster.sideTip";return a.tooltipster._plugin({name:k,instance:{__defaults:function(){return{arrow:!0,distance:6,functionPosition:null,maxWidth:null,minIntersection:16,minWidth:0,position:null,side:"top",viewportAware:!0}},__init:function(a){var b=this;b.__instance=a,b.__namespace="tooltipster-sideTip-"+Math.round(1e6*Math.random()),b.__previousState="closed",b.__options,b.__optionsFormat(),b.__instance._on("state."+b.__namespace,function(a){"closed"==a.state?b.__close():"appearing"==a.state&&"closed"==b.__previousState&&b.__create(),b.__previousState=a.state}),b.__instance._on("options."+b.__namespace,function(){b.__optionsFormat()}),b.__instance._on("reposition."+b.__namespace,function(a){b.__reposition(a.event,a.helper)})},__close:function(){this.__instance.content()instanceof a&&this.__instance.content().detach(),this.__instance._$tooltip.remove(),this.__instance._$tooltip=null},__create:function(){var b=a('
');this.__options.arrow||b.find(".tooltipster-box").css("margin",0).end().find(".tooltipster-arrow").hide(),this.__options.minWidth&&b.css("min-width",this.__options.minWidth+"px"),this.__options.maxWidth&&b.css("max-width",this.__options.maxWidth+"px"), this.__instance._$tooltip=b,this.__instance._trigger("created")},__destroy:function(){this.__instance._off("."+self.__namespace)},__optionsFormat:function(){var b=this;if(b.__options=b.__instance._optionsExtract(k,b.__defaults()),b.__options.position&&(b.__options.side=b.__options.position),"object"!=typeof b.__options.distance&&(b.__options.distance=[b.__options.distance]),b.__options.distance.length<4&&(void 0===b.__options.distance[1]&&(b.__options.distance[1]=b.__options.distance[0]),void 0===b.__options.distance[2]&&(b.__options.distance[2]=b.__options.distance[0]),void 0===b.__options.distance[3]&&(b.__options.distance[3]=b.__options.distance[1]),b.__options.distance={top:b.__options.distance[0],right:b.__options.distance[1],bottom:b.__options.distance[2],left:b.__options.distance[3]}),"string"==typeof b.__options.side){var c={top:"bottom",right:"left",bottom:"top",left:"right"};b.__options.side=[b.__options.side,c[b.__options.side]],"left"==b.__options.side[0]||"right"==b.__options.side[0]?b.__options.side.push("top","bottom"):b.__options.side.push("right","left")}6===a.tooltipster._env.IE&&b.__options.arrow!==!0&&(b.__options.arrow=!1)},__reposition:function(b,c){var d,e=this,f=e.__targetFind(c),g=[];e.__instance._$tooltip.detach();var h=e.__instance._$tooltip.clone(),i=a.tooltipster._getRuler(h),j=!1,k=e.__instance.option("animation");switch(k&&h.removeClass("tooltipster-"+k),a.each(["window","document"],function(d,k){var l=null;if(e.__instance._trigger({container:k,helper:c,satisfied:j,takeTest:function(a){l=a},results:g,type:"positionTest"}),1==l||0!=l&&0==j&&("window"!=k||e.__options.viewportAware))for(var d=0;d=h.outerSize.width&&c.geo.available[k][n].height>=h.outerSize.height?h.fits=!0:h.fits=!1:h.fits=p.fits,"window"==k&&(h.fits?"top"==n||"bottom"==n?h.whole=c.geo.origin.windowOffset.right>=e.__options.minIntersection&&c.geo.window.size.width-c.geo.origin.windowOffset.left>=e.__options.minIntersection:h.whole=c.geo.origin.windowOffset.bottom>=e.__options.minIntersection&&c.geo.window.size.height-c.geo.origin.windowOffset.top>=e.__options.minIntersection:h.whole=!1),g.push(h),h.whole)j=!0;else if("natural"==h.mode&&(h.fits||h.size.width<=c.geo.available[k][n].width))return!1}})}}),e.__instance._trigger({edit:function(a){g=a},event:b,helper:c,results:g,type:"positionTested"}),g.sort(function(a,b){if(a.whole&&!b.whole)return-1;if(!a.whole&&b.whole)return 1;if(a.whole&&b.whole){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}if(a.fits&&!b.fits)return-1;if(!a.fits&&b.fits)return 1;if(a.fits&&b.fits){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}return"document"==a.container&&"bottom"==a.side&&"natural"==a.mode?-1:1}),d=g[0],d.coord={},d.side){case"left":case"right":d.coord.top=Math.floor(d.target-d.size.height/2);break;case"bottom":case"top":d.coord.left=Math.floor(d.target-d.size.width/2)}switch(d.side){case"left":d.coord.left=c.geo.origin.windowOffset.left-d.outerSize.width;break;case"right":d.coord.left=c.geo.origin.windowOffset.right+d.distance.horizontal;break;case"top":d.coord.top=c.geo.origin.windowOffset.top-d.outerSize.height;break;case"bottom":d.coord.top=c.geo.origin.windowOffset.bottom+d.distance.vertical}"window"==d.container?"top"==d.side||"bottom"==d.side?d.coord.left<0?c.geo.origin.windowOffset.right-this.__options.minIntersection>=0?d.coord.left=0:d.coord.left=c.geo.origin.windowOffset.right-this.__options.minIntersection-1:d.coord.left>c.geo.window.size.width-d.size.width&&(c.geo.origin.windowOffset.left+this.__options.minIntersection<=c.geo.window.size.width?d.coord.left=c.geo.window.size.width-d.size.width:d.coord.left=c.geo.origin.windowOffset.left+this.__options.minIntersection+1-d.size.width):d.coord.top<0?c.geo.origin.windowOffset.bottom-this.__options.minIntersection>=0?d.coord.top=0:d.coord.top=c.geo.origin.windowOffset.bottom-this.__options.minIntersection-1:d.coord.top>c.geo.window.size.height-d.size.height&&(c.geo.origin.windowOffset.top+this.__options.minIntersection<=c.geo.window.size.height?d.coord.top=c.geo.window.size.height-d.size.height:d.coord.top=c.geo.origin.windowOffset.top+this.__options.minIntersection+1-d.size.height):(d.coord.left>c.geo.window.size.width-d.size.width&&(d.coord.left=c.geo.window.size.width-d.size.width),d.coord.left<0&&(d.coord.left=0)),e.__sideChange(h,d.side),c.tooltipClone=h[0],c.tooltipParent=e.__instance.option("parent").parent[0],c.mode=d.mode,c.whole=d.whole,c.origin=e.__instance._$origin[0],c.tooltip=e.__instance._$tooltip[0],delete d.container,delete d.fits,delete d.mode,delete d.outerSize,delete d.whole,d.distance=d.distance.horizontal||d.distance.vertical;var l=a.extend(!0,{},d);if(e.__instance._trigger({edit:function(a){d=a},event:b,helper:c,position:l,type:"position"}),e.__options.functionPosition){var m=e.__options.functionPosition.call(e,e.__instance,c,l);m&&(d=m)}i.destroy();var n,o;"top"==d.side||"bottom"==d.side?(n={prop:"left",val:d.target-d.coord.left},o=d.size.width-this.__options.minIntersection):(n={prop:"top",val:d.target-d.coord.top},o=d.size.height-this.__options.minIntersection),n.valo&&(n.val=o);var p;p=c.geo.origin.fixedLineage?c.geo.origin.windowOffset:{left:c.geo.origin.windowOffset.left+c.geo.window.scroll.left,top:c.geo.origin.windowOffset.top+c.geo.window.scroll.top},d.coord={left:p.left+(d.coord.left-c.geo.origin.windowOffset.left),top:p.top+(d.coord.top-c.geo.origin.windowOffset.top)},e.__sideChange(e.__instance._$tooltip,d.side),c.geo.origin.fixedLineage?e.__instance._$tooltip.css("position","fixed"):e.__instance._$tooltip.css("position",""),e.__instance._$tooltip.css({left:d.coord.left,top:d.coord.top,height:d.size.height,width:d.size.width}).find(".tooltipster-arrow").css({left:"",top:""}).css(n.prop,n.val),e.__instance._$tooltip.appendTo(e.__instance.option("parent")),e.__instance._trigger({type:"repositioned",event:b,position:d})},__sideChange:function(a,b){a.removeClass("tooltipster-bottom").removeClass("tooltipster-left").removeClass("tooltipster-right").removeClass("tooltipster-top").addClass("tooltipster-"+b)},__targetFind:function(a){var b={},c=this.__instance._$origin[0].getClientRects();if(c.length>1){var d=this.__instance._$origin.css("opacity");1==d&&(this.__instance._$origin.css("opacity",.99),c=this.__instance._$origin[0].getClientRects(),this.__instance._$origin.css("opacity",1))}if(c.length<2)b.top=Math.floor(a.geo.origin.windowOffset.left+a.geo.origin.size.width/2),b.bottom=b.top,b.left=Math.floor(a.geo.origin.windowOffset.top+a.geo.origin.size.height/2),b.right=b.left;else{var e=c[0];b.top=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil(c.length/2)-1]:c[0],b.right=Math.floor(e.top+(e.bottom-e.top)/2),e=c[c.length-1],b.bottom=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil((c.length+1)/2)-1]:c[c.length-1],b.left=Math.floor(e.top+(e.bottom-e.top)/2)}return b}}}),a});instagram-feed/admin/builder/assets/js/vue-color.min.js000064400000307115151435171370017137 0ustar00!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.VueColor=t():e.VueColor=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=60)}([function(e,t){function n(e,t){var n=e[1]||"",i=e[3];if(!i)return n;if(t&&"function"==typeof btoa){var o=r(i);return[n].concat(i.sources.map(function(e){return"/*# sourceURL="+i.sourceRoot+e+" */"})).concat([o]).join("\n")}return[n].join("\n")}function r(e){return"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(e))))+" */"}e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var r=n(t,e);return t[2]?"@media "+t[2]+"{"+r+"}":r}).join("")},t.i=function(e,n){"string"==typeof e&&(e=[[null,e,""]]);for(var r={},i=0;in.parts.length&&(r.parts.length=n.parts.length)}else{for(var a=[],i=0;i0?(0,o.default)(e.hex):e&&e.hsv?(0,o.default)(e.hsv):e&&e.rgba?(0,o.default)(e.rgba):e&&e.rgb?(0,o.default)(e.rgb):(0,o.default)(e))||void 0!==n._a&&null!==n._a||n.setAlpha(r||1);var i=n.toHsl(),a=n.toHsv();return 0===i.s&&(a.h=i.h=e.h||e.hsl&&e.hsl.h||t||0),{hsl:i,hex:n.toHexString().toUpperCase(),hex8:n.toHex8String().toUpperCase(),rgba:n.toRgb(),hsv:a,oldHue:e.h||t||i.h,source:e.source,a:e.a||n.getAlpha()}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(65),o=function(e){return e&&e.__esModule?e:{default:e}}(i);t.default={props:["value"],data:function(){return{val:r(this.value)}},computed:{colors:{get:function(){return this.val},set:function(e){this.val=e,this.$emit("input",e)}}},watch:{value:function(e){this.val=r(e)}},methods:{colorChange:function(e,t){this.oldHue=this.colors.hsl.h,this.colors=r(e,t||this.oldHue)},isValidHex:function(e){return(0,o.default)(e).isValid()},simpleCheckForValidColor:function(e){for(var t=["r","g","b","a","h","s","l","v"],n=0,r=0,i=0;i0?r:n)(e)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(12);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports={}},function(e,t,n){var r=n(46),i=n(30);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(29)("keys"),i=n(19);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t,n){var r=n(15),i=n(4),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:r.version,mode:n(14)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var r=n(8).f,i=n(6),o=n(11)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){t.f=n(11)},function(e,t,n){var r=n(4),i=n(15),o=n(14),a=n(32),s=n(8).f;e.exports=function(e){var t=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||s(t,e,{value:a.f(e)})}},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(3),o=r(i),a=n(5),s=r(a),c=["#4D4D4D","#999999","#FFFFFF","#F44E3B","#FE9200","#FCDC00","#DBDF00","#A4DD00","#68CCCA","#73D8FF","#AEA1FF","#FDA1FF","#333333","#808080","#CCCCCC","#D33115","#E27300","#FCC400","#B0BC00","#68BC00","#16A5A5","#009CE0","#7B64FF","#FA28FF","#000000","#666666","#B3B3B3","#9F0500","#C45100","#FB9E00","#808900","#194D33","#0C797D","#0062B1","#653294","#AB149E"];t.default={name:"Compact",mixins:[o.default],props:{palette:{type:Array,default:function(){return c}}},components:{"ed-in":s.default},computed:{pick:function(){return this.colors.hex.toUpperCase()}},methods:{handlerClick:function(e){this.colorChange({hex:e,source:"hex"})}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"editableInput",props:{label:String,labelText:String,desc:String,value:[String,Number],max:Number,min:Number,arrowOffset:{type:Number,default:1}},computed:{val:{get:function(){return this.value},set:function(e){if(!(void 0!==this.max&&+e>this.max))return e;this.$refs.input.value=this.max}},labelId:function(){return"input__label__"+this.label+"__"+Math.random().toString().slice(2,5)},labelSpanText:function(){return this.labelText||this.label}},methods:{update:function(e){this.handleChange(e.target.value)},handleChange:function(e){var t={};t[this.label]=e,void 0===t.hex&&void 0===t["#"]?this.$emit("change",t):e.length>5&&this.$emit("change",t)},handleKeyDown:function(e){var t=this.val,n=Number(t);if(n){var r=this.arrowOffset||1;38===e.keyCode&&(t=n+r,this.handleChange(t),e.preventDefault()),40===e.keyCode&&(t=n-r,this.handleChange(t),e.preventDefault())}}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(3),i=function(e){return e&&e.__esModule?e:{default:e}}(r),o=["#FFFFFF","#F2F2F2","#E6E6E6","#D9D9D9","#CCCCCC","#BFBFBF","#B3B3B3","#A6A6A6","#999999","#8C8C8C","#808080","#737373","#666666","#595959","#4D4D4D","#404040","#333333","#262626","#0D0D0D","#000000"];t.default={name:"Grayscale",mixins:[i.default],props:{palette:{type:Array,default:function(){return o}}},components:{},computed:{pick:function(){return this.colors.hex.toUpperCase()}},methods:{handlerClick:function(e){this.colorChange({hex:e,source:"hex"})}}}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(5),o=r(i),a=n(3),s=r(a);t.default={name:"Material",mixins:[s.default],components:{"ed-in":o.default},methods:{onChange:function(e){e&&(e.hex?this.isValidHex(e.hex)&&this.colorChange({hex:e.hex,source:"hex"}):(e.r||e.g||e.b)&&this.colorChange({r:e.r||this.colors.rgba.r,g:e.g||this.colors.rgba.g,b:e.b||this.colors.rgba.b,a:e.a||this.colors.rgba.a,source:"rgba"}))}}}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(81),o=r(i),a=n(3),s=r(a),c=n(13),l=r(c);t.default={name:"Slider",mixins:[s.default],props:{swatches:{type:Array,default:function(){return[{s:.5,l:.8},{s:.5,l:.65},{s:.5,l:.5},{s:.5,l:.35},{s:.5,l:.2}]}}},components:{hue:l.default},computed:{normalizedSwatches:function(){return this.swatches.map(function(e){return"object"!==(void 0===e?"undefined":(0,o.default)(e))?{s:.5,l:e}:e})}},methods:{isActive:function(e,t){var n=this.colors.hsl;return 1===n.l&&1===e.l||(0===n.l&&0===e.l||Math.abs(n.l-e.l)<.01&&Math.abs(n.s-e.s)<.01)},hueChange:function(e){this.colorChange(e)},handleSwClick:function(e,t){this.colorChange({h:this.colors.hsl.h,s:t.s,l:t.l,source:"hsl"})}}}},function(e,t,n){"use strict";var r=n(14),i=n(41),o=n(44),a=n(7),s=n(26),c=n(88),l=n(31),u=n(95),f=n(11)("iterator"),d=!([].keys&&"next"in[].keys()),h=function(){return this};e.exports=function(e,t,n,p,v,g,b){c(n,t,p);var x,m,_,w=function(e){if(!d&&e in F)return F[e];switch(e){case"keys":case"values":return function(){return new n(this,e)}}return function(){return new n(this,e)}},y=t+" Iterator",C="values"==v,k=!1,F=e.prototype,S=F[f]||F["@@iterator"]||v&&F[v],A=S||w(v),O=v?C?w("entries"):A:void 0,E="Array"==t?F.entries||S:S;if(E&&(_=u(E.call(new e)))!==Object.prototype&&_.next&&(l(_,y,!0),r||"function"==typeof _[f]||a(_,f,h)),C&&S&&"values"!==S.name&&(k=!0,A=function(){return S.call(this)}),r&&!b||!d&&!k&&F[f]||a(F,f,A),s[t]=A,s[y]=h,v)if(x={values:C?A:w("values"),keys:g?A:w("keys"),entries:O},b)for(m in x)m in F||o(F,m,x[m]);else i(i.P+i.F*(d||k),t,x);return x}},function(e,t,n){var r=n(4),i=n(15),o=n(86),a=n(7),s=n(6),c=function(e,t,n){var l,u,f,d=e&c.F,h=e&c.G,p=e&c.S,v=e&c.P,g=e&c.B,b=e&c.W,x=h?i:i[t]||(i[t]={}),m=x.prototype,_=h?r:p?r[t]:(r[t]||{}).prototype;h&&(n=t);for(l in n)(u=!d&&_&&void 0!==_[l])&&s(x,l)||(f=u?_[l]:n[l],x[l]=h&&"function"!=typeof _[l]?n[l]:g&&u?o(f,r):b&&_[l]==f?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t.prototype=e.prototype,t}(f):v&&"function"==typeof f?o(Function.call,f):f,v&&((x.virtual||(x.virtual={}))[l]=f,e&c.R&&m&&!m[l]&&a(m,l,f)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){e.exports=!n(9)&&!n(17)(function(){return 7!=Object.defineProperty(n(43)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(12),i=n(4).document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},function(e,t,n){e.exports=n(7)},function(e,t,n){var r=n(16),i=n(89),o=n(30),a=n(28)("IE_PROTO"),s=function(){},c=function(){var e,t=n(43)("iframe"),r=o.length;for(t.style.display="none",n(94).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("'; $js_option_html .= ""; return $js_option_html; } /** * Overwritten in the Pro version * * @param $feed_types_and_terms * * @return string * * @since 2.1/5.2 */ public function get_first_user( $feed_types_and_terms ) { if ( isset( $feed_types_and_terms['users'][0] ) ) { return $feed_types_and_terms['users'][0]['term']; } if ( isset( $feed_types_and_terms['tagged'][0] ) ) { return $feed_types_and_terms['tagged'][0]['term']; } else { return ''; } } /** * Adds recorded strings to an array * * @param $to_add * * @since 2.0/5.0 */ public function add_report( $to_add ) { $this->report[] = $to_add; } /** * @return array * * @since 2.0/5.0 */ public function get_report() { return $this->report; } /** * Additional options/settings added to the main div * for the feed * * Overwritten in the Pro version * * @param $other_atts * @param $settings * * @return string */ protected function add_other_atts( $other_atts, $settings ) { return $other_atts; } /** * Used for filtering a single API request worth of posts * * Overwritten in the Pro version * * @param array $post_set a single set of post data from the api * * @return mixed|array * * @since 2.0/5.0 */ protected function filter_posts( $post_set, $settings = array() ) { // array_unique( $post_set, SORT_REGULAR); if ( $settings['media'] === 'all' ) { return $post_set; } $media_filter = $settings['media'] !== 'all' ? $settings['media'] : false; if ( $media_filter ) { $media_filter = is_array( $media_filter ) ? $media_filter : array( $media_filter ); } $video_types = ! empty( $settings['videotypes'] ) ? explode( ',', str_replace( ' ', '', strtolower( $settings['videotypes'] ) ) ) : array( 'igtv', 'regular', 'reels' ); $filtered_posts = array(); foreach ( $post_set as $post ) { $keep_post = false; $is_hidden = false; $passes_media_filter = true; if ( $media_filter ) { $media_type = SB_Instagram_Parse::get_media_type( $post ); if ( $media_type === 'video' && in_array( 'videos', $media_filter, true ) ) { if ( ! empty( $video_types ) ) { $video_type = SB_Instagram_Parse::get_media_product_type( $post ); $video_type = 'feed' === $video_type ? 'regular' : $video_type; if ( ! in_array( $video_type, $video_types, true ) ) { $passes_media_filter = false; } } } elseif ( $media_type === 'video' && ! in_array( 'videos', $media_filter, true ) ) { $passes_media_filter = false; } elseif ( $media_type === 'image' && ! in_array( 'photos', $media_filter, true ) ) { $passes_media_filter = false; } elseif ( $media_type === 'carousel' && ! in_array( 'photos', $media_filter, true ) ) { $passes_media_filter = false; } } if ( ! $is_hidden && $passes_media_filter ) { $keep_post = true; } $keep_post = apply_filters( 'sbi_passes_filter', $keep_post, $post, $settings ); if ( $keep_post ) { $filtered_posts[] = $post; } } return $filtered_posts; } protected function handle_no_posts_found( $settings = array(), $feed_types_and_terms = array() ) { global $sb_instagram_posts_manager; $error_message_return = array( 'error_message' => __( 'Error: No posts found.', 'instagram-feed' ), 'admin_only' => __( 'Make sure this account has posts available on instagram.com.', 'instagram-feed' ), 'frontend_directions' => '' . __( 'Click here to troubleshoot', 'instagram-feed' ) . '', 'backend_directions' => '' . __( 'Click here to troubleshoot', 'instagram-feed' ) . '' ); $sb_instagram_posts_manager->maybe_set_display_error( 'configuration', $error_message_return ); } protected function remove_duplicate_posts() { $posts = $this->post_data; $ids_in_feed = array(); $non_duplicate_posts = array(); $removed = array(); foreach ( $posts as $post ) { $post_id = SB_Instagram_Parse::get_post_id( $post ); if ( ! in_array( $post_id, $ids_in_feed, true ) ) { $ids_in_feed[] = $post_id; $non_duplicate_posts[] = $post; } else { $removed[] = $post_id; } } $this->add_report( 'removed duplicates: ' . implode(', ', $removed ) ); $this->set_post_data( $non_duplicate_posts ); } /** * Used for limiting the cache size * * @since 2.0/5.1.1 */ protected function trim_posts_to_max() { if ( ! is_array( $this->post_data ) ) { return; } $max = apply_filters( 'sbi_max_cache_size', 500 ); $this->set_post_data( array_slice( $this->post_data , 0, $max ) ); } /** * Used for permanent feeds or white list feeds to * stop pagination if all posts are already added * * Overwritten in the Pro version * * @param array $settings * @param int $offset * * @return bool * * @since 2.0/5.0 */ protected function feed_is_complete( $settings, $offset = 0 ) { return false; } /** * @param $connected_account_for_term * * @since 2.0/5.1.2 */ private function clear_expired_access_token_notice( $connected_account_for_term ) { InstagramFeed\Builder\SBI_Source::clear_error( $connected_account_for_term['user_id'] ); } /** * Iterates through post data and tracks the index of the current post. * The actual post ids of the posts are stored in an array so the plugin * can search for local images that may be available. * * @param array $posts final filtered post data for the feed * @param array $settings * @param int $offset * * @since 2.0/5.0 */ private function posts_loop( $posts, $settings, $offset = 0 ) { $image_ids = array(); $post_index = $offset; $icon_type = 'svg'; $resized_images = $this->get_resized_images(); foreach ( $posts as $post ) { $image_ids[] = SB_Instagram_Parse::get_post_id( $post ); $account_type = SB_Instagram_Parse::get_account_type( $post ); include sbi_get_feed_template_part( 'item', $settings ); $post_index++; } $this->image_ids_post_set = $image_ids; } private function get_account_term( $term_and_params ) { if ( isset( $term_and_params['hashtag_name'] ) ) { return '#' . $term_and_params['hashtag_name']; } else { return ''; } } /** * Uses array of API request results and merges them based on how * the feed should be sorted. Mixed feeds are always sorted alternating * since there is no post date for hashtag feeds. * * * @param array $post_sets an array of single API request worth * of posts * @param array $settings * * @return array * * @since 2.0/5.0 */ private function merge_posts( $post_sets, $settings ) { $merged_posts = array(); if ( $settings['sortby'] === 'alternate' || $settings['sortby'] === 'api' && isset( $post_sets[1] ) ) { // don't bother merging posts if there is only one post set if ( isset( $post_sets[1] ) ) { $min_cycles = $settings['sortby'] === 'api' ? min( 200 / count( $post_sets ) + 5, 50 ) : max( 1, (int)$settings['minnum'] ); $terms = array(); for( $i = 0; $i <= $min_cycles; $i++ ) { $ii = 0; foreach ( $post_sets as $post_set ) { if ( isset( $post_sets[ $ii ]['term'] ) ) { $term = $post_sets[ $ii ]['term']; unset( $post_sets[ $ii ]['term'] ); if ( ! isset( $terms[ $ii ] ) ) { $terms[ $ii ] = $term; // } if ( strpos( $term, '#' ) !== false ) { $post_index = 0; foreach ( $post_sets[ $ii ] as $post ) { $post_sets[ $ii ][ $post_index ]['term'] = $term; $post_index++; } } } if ( isset( $post_set[ $i ] ) && isset( $post_set[ $i ]['id'] ) ) { $post_set[ $i ]['term'] = $terms[ $ii ]; $merged_posts[] = $post_set[ $i ]; } $ii++; } } } else { if ( isset( $post_sets[0]['term'] ) ) { $term = $post_sets[0]['term']; unset( $post_sets[0]['term'] ); if ( strpos( $term, '#' ) !== false ) { $post_index = 0; foreach ( $post_sets[0] as $post ) { $post_sets[0][ $post_index ]['term'] = $term; $post_index++; } } } $merged_posts = isset( $post_sets[0] ) ? $post_sets[0] : array(); } } elseif ( $settings['sortby'] === 'api' ) { if ( isset( $post_sets[0] ) ) { if ( isset( $post_sets[0]['term'] ) ) { $term = $post_sets[0]['term']; unset( $post_sets[0]['term'] ); if ( strpos( $term, '#' ) !== false ) { $post_index = 0; foreach ( $post_sets[0] as $post ) { $post_sets[0][ $post_index ]['term'] = $term; $post_index++; } } } $post_set_index = 0; foreach ( $post_sets as $post_set ) { if ( isset( $post_sets[ $post_set_index ]['term'] ) ) { $term = $post_sets[ $post_set_index ]['term']; unset( $post_sets[ $post_set_index ]['term'] ); if ( strpos( $term, '#' ) !== false ) { $post_index = 0; foreach ( $post_sets[0] as $post ) { $post_sets[ $post_set_index ][ $post_index ]['term'] = $term; $post_index++; } } } $merged_posts = array_merge( $merged_posts, $post_set ); $post_set_index ++; } } } else { // don't bother merging posts if there is only one post set if ( isset( $post_sets[1] ) ) { $terms = array(); $ii = 0; foreach ( $post_sets as $post_set ) { if ( isset( $post_set[0]['id'] ) ) { if ( isset( $post_sets[ $ii ]['term'] ) ) { if ( ! isset( $terms[ $ii ] ) ) { $terms[ $ii ] = $post_set['term']; } unset( $post_sets[ $ii ]['term'] ); $iii = 0; foreach ( $post_sets[ $ii ] as $post ) { $post_sets[ $ii ][ $iii ]['term'] = $terms[ $ii ]; $iii++; } } $merged_posts = array_merge( $merged_posts, $post_sets[ $ii ] ); $ii++; } } } else { if ( isset( $post_sets[0]['term'] ) ) { $term = $post_sets[0]['term']; unset( $post_sets[0]['term'] ); if ( strpos( $term, '#' ) !== false ) { $post_index = 0; foreach ( $post_sets[0] as $post ) { $post_sets[0][ $post_index ]['term'] = $term; $post_index++; } } } $merged_posts = isset( $post_sets[0] ) ? $post_sets[0] : array(); } } if ( isset( $merged_posts['term'] ) ) { unset( $merged_posts['term'] ); } return $merged_posts; } /** * Sorting by date will be more accurate for multi-term * feeds if posts are merged before sorting. * * @param array $settings * * @return bool * * @since 5.10.1 */ protected function should_merge_after( $settings ) { if ( ! isset( $settings['sortby'] ) ) { return false; } $merge_befores = array( 'alternate', 'api', 'random', 'likes' ); if ( ! in_array( $settings['sortby'], $merge_befores, true ) ) { return false; } return true; } /** * Sorts a post set based on sorting settings. Sorting by "alternate" * is done when merging posts for efficiency's sake so the post set is * just returned as it is. * * Overwritten in the Pro version. * * @param array $post_set * @param array $settings * * @return mixed|array * * @since 2.0/5.0 * @since 2.1/5.2 added filter hook for applying custom sorting */ protected function sort_posts( $post_set, $settings ) { if ( empty( $post_set ) ) { return $post_set; } // sorting done with "merge_posts" to be more efficient if ( $settings['sortby'] === 'alternate' || $settings['sortby'] === 'api' ) { $return_post_set = $post_set; } elseif ( $settings['sortby'] === 'random' ) { /* * randomly selects posts in a random order. Cache saves posts * in this random order so paginating does not cause some posts to show up * twice or not at all */ usort($post_set, 'sbi_rand_sort' ); $return_post_set = $post_set; } else { // compares posted on dates of posts usort($post_set, 'sbi_date_sort' ); $return_post_set = $post_set; } /** * Apply a custom sorting of posts * * @param array $return_post_set Ordered set of filtered posts * @param array $settings Settings for this feed * * @since 2.1/5.2 */ return apply_filters( 'sbi_sorted_posts', $return_post_set, $settings ); } /** * Can trigger a second attempt at getting posts from the API * * Overwritten in the Pro version * * @param string $type * @param array $connected_account_with_error * @param int $attempts * * @return bool * * @since 2.0/5.1.1 */ protected function can_try_another_request( $type, $connected_account_with_error, $attempts = 0 ) { return false; } /** * returns a second connected account if it exists * * Overwritten in the Pro version * * @param string $type * @param array $attempted_connected_accounts * * @return bool * * @since 2.0/5.1.1 */ protected function get_different_connected_account( $type, $attempted_connected_accounts ) { return false; } /** * Generates The Feed Container CSS classes * * @param array $settings * * @return string * * @since 6.0 */ function get_feed_container_css_classes( $settings ){ $customizer = $settings['customizer']; if($customizer){ }else{ $classes = array(); if ( empty( $settings['widthresp'] ) || $settings['widthresp'] == 'on' || $settings['widthresp'] == 'true' || $settings['widthresp'] === true ) { if ( $settings['widthresp'] !== 'false' ) { $classes[] = 'sbi_width_resp'; } } if ( ! empty( $settings['class'] ) ) { $classes[] = esc_attr( $settings['class'] ); } if ( ! empty( $settings['height'] ) && (((int)$settings['height'] < 100 && $settings['heightunit'] === '%') || $settings['heightunit'] === 'px') ) { $classes[] = 'sbi_fixed_height'; } if ( ! empty( $settings['disablemobile'] ) && ($settings['disablemobile'] == 'on' || $settings['disablemobile'] == 'true' || $settings['disablemobile'] == true) ) { if ( $settings['disablemobile'] !== 'false' ) { $classes[] = 'sbi_disable_mobile'; } } $additional_classes = ''; if ( ! empty( $classes ) ) { $additional_classes = ' ' . implode( ' ', $classes ); } return $additional_classes; } return ''; } } instagram-feed/inc/class-sb-instagram-post.php000064400000045507151435171370015413 0ustar00prefix . SBI_INSTAGRAM_POSTS_TYPE; $feed_id_match = $wpdb->get_results( $wpdb->prepare( "SELECT id, media_id, top_time_stamp, images_done FROM $table_name WHERE instagram_id = %s LIMIT 1", $instagram_post_id ), ARRAY_A ); $this->db_id = ! empty( $feed_id_match ) ? $feed_id_match[0]['id'] : ''; $this->media_id = ! empty( $feed_id_match ) ? $feed_id_match[0]['media_id'] : ''; $this->top_time_stamp = ! empty( $feed_id_match ) && isset( $feed_id_match[0]['top_time_stamp'] ) ? $feed_id_match[0]['top_time_stamp'] : ''; $this->images_done = ! empty( $feed_id_match ) && isset( $feed_id_match[0]['images_done'] ) ? $feed_id_match[0]['images_done'] === '1' : 0; $this->instagram_post_id = $instagram_post_id; $this->encryption = new SB_Instagram_Data_Encryption(); } /** * Whether or not this post has already been saved in the custom table * * @return bool * * @since 2.0/4.0 */ public function exists_in_posts_table() { return ! empty( $this->db_id ); } /** * Whether or not resized image files have already been recorded as being created * in the database table * * @return bool|int * * @since 2.0/4.0 */ public function images_done_resizing() { return $this->images_done; } /** * @param array $instagram_api_data * * @since 2.0/4.0 */ public function set_instagram_api_data( $instagram_api_data ) { $this->instagram_api_data = $instagram_api_data; } /** * Used for sorting top posts since they don't have a posted on date * * @return string * * @since 2.0/4.0 */ public function get_top_time_stamp() { return $this->top_time_stamp; } /** * Record newly created images so they can be returned and used right away. * * Not used in version 2.0/5.0 but can be used to resize and use * images "on the fly" when the feed is being displayed. * * @param string $key * @param string $val * * @since 2.0/4.0 */ public function add_resized_image_to_obj_array( $key, $val ) { $this->resized_image_array[ $key ] = $val; } /** * Used to save information about the post before image resizing is done to * prevent a potentially storing multiple entries for the same post * * @param mixed|string|bool $transient_name (optional) * @param null $timestamp_override (optional) * * @return bool * * @since 2.0/4.0 */ public function save_in_db( $transient_name = false, $timestamp_override = null ) { global $wpdb; $parsed_data = $this->get_parsed_post_data(); $timestamp = ! empty( $timestamp_override ) && empty( $parsed_data['timestamp'] ) ? $timestamp_override : $parsed_data['timestamp']; $entry_data = array( "'" . date( 'Y-m-d H:i:s' ) . "'", "'" . esc_sql( $parsed_data['id'] ) . "'", "'" . esc_sql( $timestamp ) . "'", "'" . esc_sql( $timestamp ) . "'", "'" . esc_sql( $this->encryption->encrypt( sbi_json_encode( $this->instagram_api_data ) ) ) . "'", "'pending'", "'pending'", 0, "'" . date( 'Y-m-d H:i:s' ) . "'", ); $entry_string = implode( ',', $entry_data ); $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $timestamp_column = 'time_stamp'; if ( substr( $transient_name, 4, 1 ) === '+' ) { $timestamp_column = 'top_time_stamp'; } $error = $wpdb->query( "INSERT INTO $table_name (created_on,instagram_id,time_stamp,top_time_stamp,json_data,media_id,sizes,images_done,last_requested) VALUES ($entry_string);" ); if ( $error !== false ) { $this->db_id = $wpdb->insert_id; $this->insert_sbi_instagram_feeds_posts( $transient_name ); } else { global $sb_instagram_posts_manager; $error = $wpdb->last_error; $query = $wpdb->last_query; $sb_instagram_posts_manager->add_error( 'storage', __( 'Error inserting post.', 'instagram-feed' ) . ' ' . $error . '
' . $query . '' ); } return true; } /** * Uses the post's data to get a relevant full size image url and resize it * * @param array $image_sizes * @param string $upload_dir * @param string $upload_url * * @since 2.0/4.0 * @since 2.0/5.0 loop through assoc array (res setting => desired width of image) to * accommodate personal accounts and possible * custom sizes in the future */ public function resize_and_save_image( $image_sizes, $upload_dir, $upload_url ) { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $options = sbi_get_database_settings(); $image_format = isset($options['image_format']) ? $options['image_format'] : 'webp'; $webp_supported = false; if ($image_format == 'webp') { $webp_supported = wp_image_editor_supports(array('mime_type' => 'image/webp')); } $extension = $webp_supported ? '.webp' : '.jpg'; if ( isset( $this->instagram_api_data['id'] ) ) { $image_source_set = SB_Instagram_Parse::get_media_src_set( $this->instagram_api_data ); $account_type = SB_Instagram_Parse::get_account_type( $this->instagram_api_data ); $image_sizes_to_make = isset( $image_sizes[ $account_type ] ) ? $image_sizes[ $account_type ] : array(); // if it's a personal account or a weird url, the post id is used, otherwise the last part of the image url is used if ( $account_type === 'business' ) { $new_file_name = explode( '?', SB_Instagram_Parse::get_media_url( $this->instagram_api_data, 'lightbox' ) ); if ( strlen( basename( $new_file_name[0], '.jpg' ) ) > 10 ) { $new_file_name = basename( $new_file_name[0], '.jpg' ); } else { $new_file_name = $this->instagram_api_data['id']; } $new_file_name = str_replace('.webp', '', $new_file_name); } else { $new_file_name = $this->instagram_api_data['id']; } // the process is considered a success if one image is successfully resized $one_successful_image_resize = false; foreach ( $image_sizes_to_make as $res_setting => $image_size ) { if ( $account_type === 'business' ) { $file_name = SB_Instagram_Parse::get_media_url( $this->instagram_api_data, 'lightbox' ); } else { $file_name = isset( $image_source_set[ $image_size ] ) ? $image_source_set[ $image_size ] : SB_Instagram_Parse::get_media_url( $this->instagram_api_data, 'lightbox' ); } if ( strpos( $file_name, 'placeholder' ) !== false ) { $file_name = ''; } if ( ! empty( $file_name ) ) { $sizes = array( 'height' => 1, 'width' => 1, ); $suffix = $res_setting; $this_image_file_name = $new_file_name . $suffix . $extension; $image_editor = wp_get_image_editor( $file_name ); // If there is an error then lets try a fallback approach if ( is_wp_error( $image_editor ) ) { // Gives us access to the download_url() and wp_handle_sideload() functions. require_once ABSPATH . 'wp-admin/includes/file.php'; $timeout_seconds = 5; // Download file to temp dir. $temp_file = download_url( $file_name, $timeout_seconds ); $image_editor = wp_get_image_editor( $temp_file ); global $sb_instagram_posts_manager; $details = 'Using backup editor method.' . $file_name; $sb_instagram_posts_manager->add_error( 'image_editor', $details ); } // not uncommon for the image editor to not work using it this way if ( ! is_wp_error( $image_editor ) ) { $image_editor->set_quality( 80 ); $sizes = $image_editor->get_size(); $image_editor->resize( $image_size, null ); $full_file_name = trailingslashit( $upload_dir ) . $this_image_file_name; $mime_type = $webp_supported ? 'image/webp' : 'image/jpeg'; $saved_image = $image_editor->save( $full_file_name, $mime_type ); if ( ! $saved_image ) { global $sb_instagram_posts_manager; $details = __( 'Error saving edited image.', 'instagram-feed' ) . ' ' . $full_file_name; $sb_instagram_posts_manager->add_error( 'image_editor', $details ); } else { $one_successful_image_resize = true; } } else { $message = __( 'Error editing image.', 'instagram-feed' ); if ( isset( $image_editor ) && isset( $image_editor->errors ) ) { foreach ( $image_editor->errors as $key => $item ) { $message .= ' ' . $key . ' - ' . $item[0] . ' |'; } if ( isset( $image_editor ) && isset( $image_editor->error_data ) ) { $message .= ' ' . sbi_json_encode( $image_editor->error_data ) . ' |'; } } global $sb_instagram_posts_manager; $sb_instagram_posts_manager->add_error( 'image_editor', $message ); } if ( ! empty( $temp_file ) ) { @unlink( $temp_file ); } } } if ( $one_successful_image_resize ) { $aspect_ratio = round( $sizes['width'] / $sizes['height'], 2 ); $this->update_sbi_instagram_posts( array( 'media_id' => $new_file_name, 'sizes' => maybe_serialize( $image_sizes_to_make ), 'aspect_ratio' => $aspect_ratio, 'images_done' => 1, 'mime_type' => $saved_image['mime-type'] ) ); $this->add_resized_image_to_obj_array( 'id', $new_file_name ); } else { // an error status means that image resizing won't be attempted again for this post $this->update_sbi_instagram_posts( array( 'media_id' => 'error', 'sizes' => maybe_serialize( $image_sizes_to_make ), 'aspect_ratio' => 1, 'images_done' => 1, ) ); } } } /** * Return relevant data for resized images for this post * * @return array * * @since 2.0/4.0 */ public function get_resized_image_array() { if ( empty( $this->resized_image_array ) ) { global $wpdb; $posts_table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $stored = $wpdb->get_results( $wpdb->prepare( "SELECT media_id, aspect_ratio FROM $posts_table_name WHERE instagram_id = %s LIMIT 1", $this->instagram_post_id ), ARRAY_A ); if ( isset( $stored[0] ) ) { $return = array( 'id' => $stored[0]['media_id'], 'ratio' => $stored[0]['aspect_ratio'], ); $this->resized_image_array = $return; return $return; } else { return array(); } } else { return $this->resized_image_array; } } /** * Controls whether or not the database record will be updated for this post. * Called after images are successfully created. * * @param bool $update_last_requested * @param bool $transient_name * @param array $image_sizes * @param string $upload_dir * @param string $upload_url * @param bool $timestamp_for_update * * @return bool * * @since 2.0/4.0 */ public function update_db_data( $update_last_requested = true, $transient_name = false, $image_sizes = array(), $upload_dir = '', $upload_url = '', $timestamp_for_update = false ) { if ( empty( $this->db_id ) ) { return false; } $to_update = array( 'json_data' => $this->encryption->encrypt( sbi_json_encode( $this->instagram_api_data ) ), ); if ( $update_last_requested ) { $to_update['last_requested'] = date( 'Y-m-d H:i:s' ); } if ( $timestamp_for_update ) { $to_update['top_time_stamp'] = $timestamp_for_update; } if ( $transient_name ) { $this->maybe_add_feed_id( $transient_name ); } if ( $this->media_id === 'pending' ) { $this->resize_and_save_image( $image_sizes, $upload_dir, $upload_url ); } else { $this->update_sbi_instagram_posts( $to_update ); } return true; } /** * Updates columns that need to be updated in the posts types table. * Called after images successfully resized and if any information * needs to be updated. * * @param array $to_update assoc array of columns and values to update * * @since 2.0/4.0 */ public function update_sbi_instagram_posts( $to_update ) { global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; foreach ( $to_update as $column => $value ) { $query = $wpdb->query( $wpdb->prepare( "UPDATE $table_name SET $column = %s WHERE id = %d;", $value, $this->db_id ) ); if ( $query === false ) { global $sb_instagram_posts_manager; $error = $wpdb->last_error; $query = $wpdb->last_query; $sb_instagram_posts_manager->add_error( 'storage', __( 'Error updating post.', 'instagram-feed' ) . ' ' . $error . '
' . $query . '' ); } } } /** * Checks database for matching record for post and feed ID. * There shouldn't be duplicate records * * @param string $transient_name * * @return bool * * @since 2.0/4.1 */ public function exists_in_feeds_posts_table( $transient_name ) { global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS; $feed_id_array = explode( '#', $transient_name ); $feed_id = $feed_id_array[0]; $results = $wpdb->get_results( $wpdb->prepare( "SELECT feed_id FROM $table_name WHERE instagram_id = %s AND feed_id = %s LIMIT 1", $this->instagram_post_id, $feed_id ), ARRAY_A ); if ( isset( $results[0]['feed_id'] ) ) { return true; } if ( isset( $this->instagram_api_data['term'] ) ) { $results = $wpdb->get_results( $wpdb->prepare( "SELECT hashtag FROM $table_name WHERE instagram_id = %s AND hashtag = %s LIMIT 1", $this->instagram_post_id, strtolower( str_replace( '#', '', $this->instagram_api_data['term'] ) ) ), ARRAY_A ); return isset( $results[0]['hashtag'] ); } return false; } /** * Add a record of this post being used for the specified transient name (feed id) * * @param string $transient_name * * @return int * * @since 2.0/4.0 */ public function insert_sbi_instagram_feeds_posts( $transient_name ) { global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS; // the number is removed from the transient name for backwards compatibilty. $feed_id_array = explode( '#', $transient_name ); $feed_id = $feed_id_array[0]; if ( ! empty( $this->db_id ) ) { $entry_data = array( $this->db_id, "'" . esc_sql( $this->instagram_api_data['id'] ) . "'", "'" . esc_sql( $feed_id ) . "'", ); if ( ! empty( $this->instagram_api_data['term'] ) ) { $entry_data[] = "'" . esc_sql( strtolower( str_replace( '#', '', $this->instagram_api_data['term'] ) ) ) . "'"; $entry_string = implode( ',', $entry_data ); $error = $wpdb->query( "INSERT INTO $table_name (id,instagram_id,feed_id,hashtag) VALUES ($entry_string);" ); } else { $entry_string = implode( ',', $entry_data ); $error = $wpdb->query( "INSERT INTO $table_name (id,instagram_id,feed_id) VALUES ($entry_string);" ); } } else { global $sb_instagram_posts_manager; $sb_instagram_posts_manager->add_error( 'storage', __( 'Error inserting post.', 'instagram-feed' ) . ' ' . __( 'No database ID.', 'instagram-feed' ) ); return false; } if ( $error !== false ) { return $wpdb->insert_id; } else { global $sb_instagram_posts_manager; $error = $wpdb->last_error; $query = $wpdb->last_query; $sb_instagram_posts_manager->add_error( 'storage', __( 'Error inserting post.', 'instagram-feed' ) . ' ' . $error . '
' . $query . '' ); } } /** * Uses the saved json for the post to be used for updating records * * @param bool $all * * @return array * * @since 2.0/4.0 */ private function get_parsed_post_data( $all = true ) { $instagram_post_id = isset( $this->instagram_api_data['id'] ) ? $this->instagram_api_data['id'] : ''; $comments_count = isset( $this->instagram_api_data['comments_count'] ) ? $this->instagram_api_data['comments_count'] : ''; $like_count = isset( $this->instagram_api_data['like_count'] ) ? $this->instagram_api_data['like_count'] : ''; $parsed_data = array( 'comments_count' => $comments_count, 'like_count' => $like_count, ); if ( $all ) { $caption = isset( $this->instagram_api_data['caption'] ) ? $this->instagram_api_data['caption'] : ''; $media_url = isset( $this->instagram_api_data['media_url'] ) ? $this->instagram_api_data['media_url'] : ''; $media_type = isset( $this->instagram_api_data['media_type'] ) ? $this->instagram_api_data['media_type'] : ''; $timestamp = ''; if ( isset( $this->instagram_api_data['timestamp'] ) ) { $timestamp_parts = explode( ' ', $this->instagram_api_data['timestamp'] ); $timestamp = str_replace( 'T', ' ', $timestamp_parts[0] ); } $username = isset( $this->instagram_api_data['username'] ) ? $this->instagram_api_data['username'] : ''; $permalink = isset( $this->instagram_api_data['permalink'] ) ? $this->instagram_api_data['permalink'] : ''; $children = isset( $this->instagram_api_data['children'] ) ? sbi_json_encode( $this->instagram_api_data['children'] ) : ''; $parsed_data['caption'] = $caption; $parsed_data['media_url'] = $media_url; $parsed_data['id'] = $instagram_post_id; $parsed_data['media_type'] = $media_type; $parsed_data['timestamp'] = $timestamp; $parsed_data['username'] = $username; $parsed_data['permalink'] = $permalink; $parsed_data['children'] = $children; } return $parsed_data; } /** * If a record hasn't been made for this transient name/feed id, * make a record * * @param string $feed_id * * @since 2.0/4.0 */ private function maybe_add_feed_id( $feed_id ) { if ( empty( $this->instagram_post_id ) ) { return; } global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS; // the number is removed from the transient name for backwards compatibilty. $feed_id_array = explode( '#', $feed_id ); $feed_id = str_replace( '+', '', $feed_id_array[0] ); $feed_id_match = $wpdb->get_col( $wpdb->prepare( "SELECT feed_id FROM $table_name WHERE feed_id = %s AND instagram_id = %s", $feed_id, $this->instagram_post_id ) ); if ( ! isset( $feed_id_match[0] ) ) { $entry_data = array( $this->db_id, "'" . esc_sql( $this->instagram_post_id ) . "'", "'" . esc_sql( $feed_id ) . "'", ); $entry_string = implode( ',', $entry_data ); $error = $wpdb->query( "INSERT INTO $table_name (id,instagram_id,feed_id) VALUES ($entry_string);" ); } } } instagram-feed/inc/class-sb-instagram-oembed.php000064400000021734151435171370015655 0ustar00' . $exchanged . ''; } } return $html; } /** * Extend the "time to live" for oEmbeds created with access tokens that expire * * @param int $ttl time to live. * @param string $url oEmbed url. * @param string $attr additional attributes. * @param int $post_ID ID of the post that contains the oEmbed URL. * * @return float|int * * @since 2.5/5.8 */ public static function oembed_ttl($ttl, $url, $attr, $post_ID) { if (preg_match('#https?://(www\.)?instagr(\.am|am\.com)/(p|tv|reel)/.*#i', $url) === 1) { $ttl = 30 * YEAR_IN_SECONDS; } return $ttl; } /** * Depending on whether a business or personal account is connected, * a different oembed endpoint is used * * @return string * * @since 2.5/5.8 */ public static function oembed_url() { return 'https://graph.facebook.com/instagram_oembed'; } /** * Any access token will work for oembeds so the most recently connected account's * access token is returned * * @return bool|string * * @since 2.5/5.8 */ public static function last_access_token() { $oembed_token_settings = get_option('sbi_oembed_token', array()); $will_expire = self::oembed_access_token_will_expire(); if ( ! empty($oembed_token_settings['access_token']) && ( ! $will_expire || $will_expire > time() ) ) { return sbi_maybe_clean($oembed_token_settings['access_token']); } else { $if_database_settings = sbi_get_database_settings(); if (isset($if_database_settings['connected_accounts'])) { $connected_accounts = $if_database_settings['connected_accounts']; foreach ($connected_accounts as $connected_account) { if (empty($oembed_token_settings['access_token']) && isset($connected_account['type']) && $connected_account['type'] === 'business') { $oembed_token_settings['access_token'] = $connected_account['access_token']; } } } if (! empty($oembed_token_settings['access_token'])) { return sbi_maybe_clean($oembed_token_settings['access_token']); } if (class_exists('CFF_Oembed')) { $cff_oembed_token_settings = get_option('cff_oembed_token', array()); if (! empty($cff_oembed_token_settings['access_token'])) { return $cff_oembed_token_settings['access_token']; } } } return false; } /** * Access tokens created from FB accounts not connected to an * FB page expire after 60 days. * * @return bool|int */ public static function oembed_access_token_will_expire() { $oembed_token_settings = get_option('sbi_oembed_token', array()); $will_expire = false; if (isset($oembed_token_settings['expiration_date']) && (int) $oembed_token_settings['expiration_date'] > 0) { $will_expire = (int) $oembed_token_settings['expiration_date']; } return $will_expire; } /** * Loop through post meta data and if it's an oembed and has content * that looks like an Instagram oembed, delete it * * @param int $post_ID the ID of the post containing the oEmbed. * * @return int number of old oembed caches found * * @since 2.5/5.8 */ public static function delete_instagram_oembed_caches($post_ID) { $post_metas = get_post_meta($post_ID); if (empty($post_metas)) { return 0; } $total_found = 0; foreach ($post_metas as $post_meta_key => $post_meta_value) { if ('_oembed_' === substr($post_meta_key, 0, 8)) { if ( strpos($post_meta_value[0], 'class="instagram-media"') !== false && strpos($post_meta_value[0], 'sbi-embed-wrap') === false ) { ++$total_found; delete_post_meta($post_ID, $post_meta_key); if ('_oembed_time_' !== substr($post_meta_key, 0, 13)) { delete_post_meta($post_ID, str_replace('_oembed_', '_oembed_time_', $post_meta_key)); } } } } return $total_found; } /** * Used for clearing the oembed update check flag for all posts * * @since 2.5/5.8 */ public static function clear_checks() { global $wpdb; $table_name = esc_sql($wpdb->prefix . 'postmeta'); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared $wpdb->query( " DELETE FROM $table_name WHERE meta_key = '_sbi_oembed_done_checking';" ); $sbi_statuses = get_option('sbi_statuses', array()); $sbi_statuses['clear_old_oembed_checks'] = true; update_option('sbi_statuses', $sbi_statuses); } } /** * Start the oEmbed adaptation * * @return SB_Instagram_Oembed */ function sbiOembedInit() { return new SB_Instagram_Oembed(); } sbiOembedInit(); instagram-feed/inc/class-sb-instagram-post-set.php000064400000013372151435171370016177 0ustar00 array( 'full' => 640, 'low' => 320, 'thumb' => 150, ), 'business' => array( 'full' => 640, 'low' => 320, 'thumb' => 150, ), ), $upload_dir = null, $upload_url = null ) { $this->post_data = $post_data; $this->image_sizes = $image_sizes; if ( ! isset( $upload_dir ) || ! isset( $upload_url ) ) { $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = trailingslashit( $upload_dir ) . SBI_UPLOADS_NAME; $upload_url = trailingslashit( $upload['baseurl'] ) . SBI_UPLOADS_NAME; } $this->upload_dir = $upload_dir; $this->upload_url = $upload_url; $this->transient_name = $transient_name; $this->fill_in_timestamp = $fill_in_timestamp; } /** * @return array * * @since 2.0/4.0 */ public function get_post_data() { if ( is_array( $this->post_data ) ) { return $this->post_data; } else { return array(); } } /** * @return array * * @since 2.0/4.0 */ public function get_resized_image_data_for_set() { return $this->resized_image_data_for_set; } /** * Loop through set of posts and update or create resized images based on * whether or not they have been created and whether or not a record has been * saved for this feed id * * @since 2.0/4.0 */ public function maybe_save_update_and_resize_images_for_posts() { global $sb_instagram_posts_manager; $posts_iterated_through = 0; $number_resized = 0; $number_updated = 0; $resized_image_data_for_set = array(); $resizing_disabled = $sb_instagram_posts_manager->image_resizing_disabled( $this->transient_name ) || $sb_instagram_posts_manager->max_resizing_per_time_period_reached(); $is_top_post_feed = ( substr( $this->transient_name, 4, 1 ) === '+' ); foreach ( $this->post_data as $single_instagram_post_data ) { if ( isset( $single_instagram_post_data['id'] ) && $posts_iterated_through < 100 ) { $single_post = new SB_Instagram_Post( $single_instagram_post_data['id'] ); $single_post->set_instagram_api_data( $single_instagram_post_data ); $resized_image_data_for_set[ $single_instagram_post_data['id'] ] = array(); if ( $is_top_post_feed ) { if ( empty( $this->first_post_top_time_stamp ) ) { $this_post_top_time_stamp = $single_post->get_top_time_stamp(); if ( empty( $this_post_top_time_stamp ) ) { $this->first_post_top_time_stamp = $this->fill_in_timestamp; } else { $this->first_post_top_time_stamp = $single_post->get_top_time_stamp(); } } } if ( ! $resizing_disabled ) { if ( ( ! $single_post->exists_in_posts_table() || ! $single_post->images_done_resizing() ) && $number_resized < 30 ) { if ( $sb_instagram_posts_manager->max_total_records_reached() ) { $sb_instagram_posts_manager->delete_least_used_image(); } if ( ! $single_post->images_done_resizing() && $single_post->exists_in_posts_table() ) { $single_post->resize_and_save_image( $this->image_sizes, $this->upload_dir, $this->upload_url ); } else { if ( $is_top_post_feed ) { if ( $single_post->save_in_db( $this->transient_name, date( 'Y-m-d H:i:s', strtotime( $this->first_post_top_time_stamp ) - ( 120 * $posts_iterated_through ) - 1 ) ) ) { $single_post->resize_and_save_image( $this->image_sizes, $this->upload_dir, $this->upload_url ); } } else { if ( $single_post->save_in_db( $this->transient_name, date( 'Y-m-d H:i:s', strtotime( $this->fill_in_timestamp ) - ( 120 * $posts_iterated_through ) ) ) ) { $single_post->resize_and_save_image( $this->image_sizes, $this->upload_dir, $this->upload_url ); } } } $number_resized++; } else { if ( $is_top_post_feed ) { $single_post->update_db_data( true, $this->transient_name, $this->image_sizes, $this->upload_dir, $this->upload_url, date( 'Y-m-d H:i:s', strtotime( $this->first_post_top_time_stamp ) - ( 120 * $posts_iterated_through ) ) ); } else { $single_post->update_db_data( true, $this->transient_name, $this->image_sizes, $this->upload_dir, $this->upload_url ); } if ( ! $single_post->exists_in_feeds_posts_table( $this->transient_name ) ) { $single_post->insert_sbi_instagram_feeds_posts( $this->transient_name ); } $number_updated++; } $resized_image_data_for_set[ $single_instagram_post_data['id'] ] = $single_post->get_resized_image_array(); } } $posts_iterated_through++; } $this->resized_image_data_for_set = $resized_image_data_for_set; } } instagram-feed/inc/class-sb-instagram-cron-updater.php000064400000017245151435171370017027 0ustar00 true ) ); $num = count( $cron_records ); if ( $num === \InstagramFeed\Builder\SBI_Db::RESULTS_PER_CRON_UPDATE ) { wp_schedule_single_event( time() + 120, 'sbi_cron_additional_batch' ); } self::update_batch( $cron_records ); } /** * @param $cron_records * * @since 6.0 */ public static function update_batch( $cron_records ) { $report = array( 'notes' => array( 'time_ran' => date( 'Y-m-d H:i:s' ), 'num_found_transients' => count( $cron_records ), ), ); $settings = sbi_get_database_settings(); foreach ( $cron_records as $feed_cache ) { $feed_id = $feed_cache['feed_id']; $report[ $feed_id ] = array(); $cache = new SB_Instagram_Cache( $feed_id ); $cache->retrieve_and_set(); $cache->update_last_updated(); $posts_cache = $cache->get( 'posts' ); if ( $posts_cache ) { $feed_data = json_decode( $posts_cache, true ); $atts = isset( $feed_data['atts'] ) ? $feed_data['atts'] : false; $last_retrieve = isset( $feed_data['last_retrieve'] ) ? (int) $feed_data['last_retrieve'] : 0; $last_requested = isset( $feed_data['last_requested'] ) ? (int) $feed_data['last_requested'] : false; $report[ $feed_id ]['last_retrieve'] = date( 'Y-m-d H:i:s', $last_retrieve ); if ( $atts !== false ) { // not needed after v6? if ( ! $last_requested || $last_requested > ( time() - 60 * 60 * 24 * 30 ) ) { $instagram_feed_settings = new SB_Instagram_Settings( $atts, $settings ); self::do_single_feed_cron_update( $instagram_feed_settings, $feed_data, $atts ); $report[ $feed_id ]['did_update'] = 'yes'; } else { $report[ $feed_id ]['did_update'] = 'no - not recently requested'; } } else { $report[ $feed_id ]['did_update'] = 'no - missing atts'; } } else { $report[ $feed_id ]['did_update'] = 'no - no post cache found'; } } update_option( 'sbi_cron_report', $report, false ); } /** * Update a single feed cache based on settings. Local image storing and * resizing is done in the background here as well unless this is the initial * time the feed is created and no cached data exists yet. * * Overwritten in the Pro version * * @param array $instagram_feed_settings associative array generated from * the sb_instagram_settings class * @param array $feed_data post, header, shortcode settings, and other info * associated with the feed that is saved in the cache * @param array $atts shortcode settings * @param bool $include_resize whether or not to resize images during the update since * images can also be resized with an ajax call when the feed is viewed on the frontend * * @return object * * @since 2.0/5.0 */ public static function do_single_feed_cron_update( $instagram_feed_settings, $feed_data, $atts, $include_resize = true ) { $instagram_feed_settings->set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $transient_name = $instagram_feed_settings->get_transient_name(); $settings = $instagram_feed_settings->get_settings(); $feed_type_and_terms = $instagram_feed_settings->get_feed_type_and_terms(); $instagram_feed = new SB_Instagram_Feed( $transient_name ); $instagram_feed->set_cache( $instagram_feed_settings->get_cache_time_in_seconds(), $settings ); while ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } $to_cache = array( 'atts' => $atts, 'last_requested' => $feed_data['last_requested'], 'last_retrieve' => time() ); $instagram_feed->set_cron_cache( $to_cache, $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); if ( $instagram_feed->need_header( $settings, $feed_type_and_terms ) ) { $instagram_feed->set_remote_header_data( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); $instagram_feed->cache_header_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } if ( $include_resize ) { $post_data = $instagram_feed->get_post_data(); $post_data = array_slice( $post_data, 0, $settings['num'] ); $image_sizes = array( 'personal' => array( 'full' => 640, 'low' => 320, 'thumb' => 150 ), 'business' => array( 'full' => 640, 'low' => 320, 'thumb' => 150 ) ); $post_set = new SB_Instagram_Post_Set( $post_data, $transient_name, NULL, $image_sizes ); $post_set->maybe_save_update_and_resize_images_for_posts(); } sbi_delete_image_cache( $transient_name ); return $instagram_feed; } /** * Retrieve option name column values for all feed cache transients * * @return array * * @since 2.0/5.0 */ public static function get_feed_cache_option_names() { global $wpdb; $feed_caches = apply_filters( 'sbi_feed_cache_option_names', array() ); if ( ! empty( $feed_caches ) ) { return $feed_caches; } $results = $wpdb->get_results( " SELECT option_name FROM $wpdb->options WHERE `option_name` LIKE ('%\_transient\_sbi\_%') AND `option_name` NOT LIKE ('%\_transient\_sbi\_header%');", ARRAY_A ); if ( isset( $results[0] ) ) { $feed_caches = $results; } return $feed_caches; } /** * Start cron jobs based on user's settings for cron cache update frequency. * This is triggered when settings are saved on the "Configure" tab. * * @param string $sbi_cache_cron_interval arbitrary name from one of the * settings on the "Configure" tab * @param string $sbi_cache_cron_time hour of the day (1 = 1:00) * @param string $sbi_cache_cron_am_pm am or pm (time of day) * * @since 2.0/5.0 */ public static function start_cron_job( $sbi_cache_cron_interval, $sbi_cache_cron_time, $sbi_cache_cron_am_pm ) { wp_clear_scheduled_hook( 'sbi_feed_update' ); if ( $sbi_cache_cron_interval === '12hours' || $sbi_cache_cron_interval === '24hours' ) { $relative_time_now = time() + sbi_get_utc_offset(); $base_day = strtotime( date( 'Y-m-d', $relative_time_now ) ); $add_time = $sbi_cache_cron_am_pm === 'pm' ? (int)$sbi_cache_cron_time + 12 : (int)$sbi_cache_cron_time; $utc_start_time = $base_day + (($add_time * 60 * 60) - sbi_get_utc_offset()); if ( $utc_start_time < time() ) { if ( $sbi_cache_cron_interval === '12hours' ) { $utc_start_time += 60*60*12; } else { $utc_start_time += 60*60*24; } } if ( $sbi_cache_cron_interval === '12hours' ) { wp_schedule_event( $utc_start_time, 'twicedaily', 'sbi_feed_update' ); } else { wp_schedule_event( $utc_start_time, 'daily', 'sbi_feed_update' ); } } else { if ( $sbi_cache_cron_interval === '30mins' ) { wp_schedule_event( time(), 'sbi30mins', 'sbi_feed_update' ); } else { wp_schedule_event( time(), 'hourly', 'sbi_feed_update' ); } } } } instagram-feed/inc/class-sb-instagram-posts-manager.php000064400000120603151435171370017175 0ustar00sbi_options = get_option( 'sb_instagram_settings' ); $this->errors = get_option( 'sb_instagram_errors', array() ); if ( ! isset( $this->errors['connection'] ) ) { $this->errors = array( 'connection' => array(), 'hashtag' => array(), 'resizing' => array(), 'database_create' => array(), 'upload_dir' => array(), 'accounts' => array(), 'error_log' => array(), 'action_log' => array(), 'revoked' => array(), ); } $this->display_error = array(); if ( $this->does_resizing_tables_exist() ) { $this->resizing_tables_exist = true; } require_once( trailingslashit( dirname( __FILE__ ) ) . '/Platform_Data.php' ); $platform_data_manager = new \InstagramFeed\Platform_Data(); $platform_data_manager->register_hooks(); } /** * Stores information about an encountered error related to a connected account * * @param $connected_account array * @param $error_type string * @param $details mixed/array/string * * @since 2.7/5.10 */ public function add_connected_account_error( $connected_account, $error_type, $details ) { $account_id = $connected_account['user_id']; $this->errors['accounts'][ $account_id ][ $error_type ] = $details; if ( $error_type === 'api' ) { $this->errors['accounts'][ $account_id ][ $error_type ]['clear_time'] = time() + 60 * 3; } if ( isset( $details['error']['code'] ) && (int) $details['error']['code'] === 18 ) { $this->errors['accounts'][ $account_id ][ $error_type ]['clear_time'] = time() + 60 * 15; } \InstagramFeed\Builder\SBI_Source::add_error( $account_id, $details ); } /** * Stores errors so they can be retrieved and explained to users * in messages as well as temporarily disable certain features * * @param string $type * @param array $details * @param mixed/bool/array $connected_account_term * * @since 2.7/5.10 */ public function add_error( $type, $details, $connected_account_term = false ) { $connected_account = false; $log_item = date( 'm-d H:i:s' ) . ' - '; if ( $connected_account_term ) { if ( ! is_array( $connected_account_term ) ) { $connected_account = SB_Instagram_Connected_Account::lookup( $connected_account_term ); } else { $connected_account = $connected_account_term; } $this->add_connected_account_error( $connected_account, $type, $details ); } // is it connection? or what type? if ( $type === 'api' || $type === 'wp_remote_get' ) { $connection_details = array( 'error_id' => '', ); $connection_details['critical'] = false; if ( isset( $details['error']['code'] ) ) { $connection_details['error_id'] = $details['error']['code']; if ( $this->is_critical_error( $details ) ) { $connection_details['critical'] = true; } if ( $this->is_app_permission_related( $details ) ) { if ( ! in_array( $connected_account['user_id'], $this->errors['revoked'], true ) ) { $this->errors['revoked'][] = $connected_account['user_id']; } /** * Fires when an app permission related error is encountered * * @param array $connected_account The connected account that encountered the error * * @since 6.0.6 */ do_action( 'sbi_app_permission_revoked', $connected_account ); } } elseif ( isset( $details['response'] ) && is_wp_error( $details['response'] ) ) { foreach ( $details['response']->errors as $key => $item ) { $connection_details['error_id'] = $key; } $connection_details['critical'] = true; } if ( get_the_ID() !== 0 ) { $connection_details['post_id'] = get_the_ID(); } $connection_details['error_message'] = $this->generate_error_message( $details, $connected_account ); $log_item .= $connection_details['error_message']['admin_only']; $this->maybe_set_display_error( 'connection', $connection_details ); $this->errors['connection'] = $connection_details; } if ( $type === 'hashtag' ) { $hashtag_details = array( 'error_id' => '', 'hashtag' => isset( $details['hashtag'] ) ? $details['hashtag'] : '', ); if ( isset( $details['error']['code'] ) ) { if ( (int) $details['error']['code'] === 24 ) { $hashtag_details['clear_time'] = time() + 60 * 5; } } if ( isset( $details['error']['code'] ) ) { $hashtag_details['error_id'] = $details['error']['code']; } elseif ( isset( $details['response'] ) && is_wp_error( $details['response'] ) ) { foreach ( $details['response']->errors as $key => $item ) { $hashtag_details['error_id'] = $key; } } if ( get_the_ID() !== 0 ) { $hashtag_details['post_id'] = get_the_ID(); } $hashtag_details['error_message'] = $this->generate_error_message( $details, $connected_account ); $log_item .= $hashtag_details['error_message']['admin_only']; $this->maybe_set_display_error( 'hashtag', $hashtag_details ); $found = false; if ( isset( $details['hashtag'] ) ) { foreach ( $this->errors['hashtag'] as $hashtag_error_item ) { if ( isset( $hashtag_error_item['hashtag'] ) && strtolower( $hashtag_error_item['hashtag'] ) === strtolower( $details['hashtag'] ) && $hashtag_error_item['error_id'] === $details['error_id'] ) { $found = true; } } } if ( ! $found ) { $this->errors['hashtag'][] = $hashtag_details; } } if ( $type === 'image_editor' || $type === 'storage' ) { $this->errors['resizing'] = $details; $log_item .= $details; } if ( $type === 'database_create' ) { $this->errors['database_create'] = $details; $log_item .= $details; } if ( $type === 'upload_dir' ) { $this->errors['upload_dir'] = $details; $log_item .= $details; } if ( $type === 'unused_feed' ) { $this->errors['unused_feed'] = $details; $log_item .= $details; } if ( $type === 'platform_data_deleted' ) { $this->errors['platform_data_deleted'] = $details; $log_item .= $details; } $current_log = $this->errors['error_log']; if ( is_array( $current_log ) && count( $current_log ) >= 10 ) { reset( $current_log ); unset( $current_log[ key( $current_log ) ] ); } $current_log[] = $log_item; $this->errors['error_log'] = $current_log; update_option( 'sb_instagram_errors', $this->errors, false ); } /** * Stores a time stamped string of information about * actions that might lead to correcting an error * * @param string $log_item * * @since 2.7/5.10 */ public function add_action_log( $log_item ) { $current_log = $this->errors['action_log']; if ( is_array( $current_log ) && count( $current_log ) >= 10 ) { reset( $current_log ); unset( $current_log[ key( $current_log ) ] ); } $current_log[] = date( 'm-d H:i:s' ) . ' - ' . $log_item; $this->errors['action_log'] = $current_log; update_option( 'sb_instagram_errors', $this->errors, false ); } /** * @return mixed * * @since 2.7/5.10 */ public function get_error_log() { return $this->errors['error_log']; } /** * @return mixed * * @since 2.7/5.10 */ public function get_action_log() { return $this->errors['action_log']; } /** * Certain API errors are considered critical and will trigger * the various notifications to users to correct them. * * @param $details * * @return bool * * @since 2.7/5.10 */ public function is_critical_error( $details ) { $error_code = (int) $details['error']['code']; $critical_codes = array( 803, // ID doesn't exist 100, // access token or permissions 190, // access token or permissions 10, // app permissions or scopes ); return in_array( $error_code, $critical_codes, true ); } /** * Should clear platform data * * @param $details * * @return bool * * @since 2.7/5.10 */ public function is_app_permission_related( $details ) { $error_code = (int) $details['error']['code']; $error_subcode = isset( $details['error']['error_subcode'] ) ? (int) $details['error']['error_subcode'] : 0; $critical_codes = array( 190, // access token or permissions ); $critical_subcodes = array( 458, // access token or permissions ); if ( in_array( $error_code, $critical_codes, true ) ) { if ( strpos( $details['error']['message'], 'user has not authorized application' ) !== false ) { return true; } return in_array( $error_subcode, $critical_subcodes, true ); } return false; } /** * Creates an array of information for easy display of API errors * * @param $response * @param array $connected_account * * @return array * * @since 2.7/5.10 */ public function generate_error_message( $response, $connected_account = array( 'username' => '' ) ) { $error_message_return = array( 'error_message' => '', 'admin_only' => '', 'frontend_directions' => '', 'backend_directions' => '', 'time' => time(), ); $hash = isset( $response['error']['code'] ) ? '#' . (int) $response['error']['code'] : ''; if ( isset( $response['response'] ) && is_wp_error( $response['response'] ) ) { $error_message_return['error_message'] = __( 'HTTP Error. Unable to connect to the Instagram API.', 'instagram-feed' ) . ' ' . __( 'Feed will not update.', 'instagram-feed' ); $error_message_return['admin_only'] = sprintf( __( 'Error connecting to %s.', 'instagram-feed' ), $response['url'] ); $error_message_return['frontend_directions'] = '' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; if ( isset( $response['response'] ) && isset( $response['response']->errors ) ) { $num = count( $response['response']->errors ); $i = 1; foreach ( $response['response']->errors as $key => $item ) { $error_message_return['admin_only'] .= ' ' . $key . ' - ' . $item[0]; if ( $i < $num ) { $error_message_return['admin_only'] .= ','; } $num++; } } return $error_message_return; } $hash = '#' . (int) $response['error']['code']; $link = admin_url( 'admin.php?page=sbi-settings' ); if ( isset( $response['error']['message'] ) ) { if ( (int) $response['error']['code'] === 100 ) { $error_message_return['error_message'] = __( 'Error: Access Token is not valid or has expired.', 'instagram-feed' ) . ' ' . __( 'Feed will not update.', 'instagram-feed' ); $error_message_return['admin_only'] = sprintf( __( 'API error %s:', 'instagram-feed' ), $response['error']['code'] ) . ' ' . $response['error']['message']; $error_message_return['frontend_directions'] = '' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; } elseif ( (int) $response['error']['code'] === 18 ) { $error_message_return['error_message'] = __( 'Error: Hashtag limit of 30 unique hashtags per week has been reached.', 'instagram-feed' ); $error_message_return['admin_only'] = __( 'If you need to display more than 30 hashtag feeds on your site, consider connecting an additional business account from a separate Instagram Identity and Facebook page. Connecting an additional Instagram business account from the same Facebook page will not raise the limit.', 'instagram-feed' ); $error_message_return['frontend_directions'] = '' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; } elseif ( (int) $response['error']['code'] === 10 ) { $error_message_return['error_message'] = sprintf( __( 'Error: Connected account for the user %s does not have permission to use this feed type.', 'instagram-feed' ), $connected_account['username'] ); $error_message_return['admin_only'] = __( 'Try using the big blue button on the "Configure" tab to reconnect the account and update its permissions.', 'instagram-feed' ); $error_message_return['frontend_directions'] = '' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; } elseif ( (int) $response['error']['code'] === 24 ) { $error_message_return['error_message'] = __( 'Error: Cannot retrieve posts for this hashtag.', 'instagram-feed' ); $error_message_return['admin_only'] = $response['error']['error_user_msg']; $error_message_return['frontend_directions'] = '' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; } else { $error_message_return['error_message'] = __( 'There has been a problem with your Instagram Feed.', 'instagram-feed' ); $error_message_return['admin_only'] = sprintf( __( 'API error %s:', 'instagram-feed' ), $response['error']['code'] ) . ' ' . $response['error']['message']; $error_message_return['frontend_directions'] = '' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; } } else { $error_message_return['error_message'] = __( 'An unknown error has occurred.', 'instagram-feed' ); $error_message_return['admin_only'] = json_encode( $response ); } return $error_message_return; } /** * Display errors are saved with the feed cache so they will still be displayed * on the frontend * * @param string $type * @param array $error * * @since 2.7/5.10 */ public function maybe_set_display_error( $type, $error ) { if ( $type === 'connection' ) { if ( empty( $this->display_error['connection'] ) ) { $this->display_error['connection'] = $error; } } elseif ( $type === 'configuration' ) { if ( empty( $this->display_error['configuration'] ) ) { $this->display_error['configuration'] = $error; } } elseif ( $type === 'hashtag' ) { $this->display_error['hashtag'][] = $error; } elseif ( $type === 'hashtag_limit' ) { if ( empty( $this->display_error['connection'] ) ) { $this->display_error['hashtag_limit'] = $error; } } } /** * @param string $type * * @since 2.7/5.10 */ public function maybe_remove_display_error( $type ) { if ( isset( $this->display_error[ $type ] ) ) { unset( $this->display_error[ $type ] ); } } /** * The plugin has a limit on how many post records can be stored and * images resized to avoid overloading servers. This function deletes the post that * has the longest time passed since it was retrieved. * * @since 2.0/4.0 */ public function delete_least_used_image() { global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $feeds_posts_table_name = esc_sql( $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS ); $max = isset( $this->limit ) && $this->limit > 1 ? $this->limit : 1; $oldest_posts = $wpdb->get_results( "SELECT id, media_id, mime_type FROM $table_name ORDER BY last_requested ASC LIMIT $max", ARRAY_A ); $upload = wp_upload_dir(); $file_suffixes = array( 'thumb', 'low', 'full' ); foreach ( $oldest_posts as $post ) { $extension = isset( $post['mime_type'] ) && $post['mime_type'] === 'image/webp' ? '.webp' : '.jpg'; foreach ( $file_suffixes as $file_suffix ) { $file_name = trailingslashit( $upload['basedir'] ) . trailingslashit( SBI_UPLOADS_NAME ) . $post['media_id'] . $file_suffix . $extension; if ( is_file( $file_name ) ) { unlink( $file_name ); } } $wpdb->query( $wpdb->prepare( "DELETE FROM $table_name WHERE id = %d", $post['id'] ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM $feeds_posts_table_name WHERE record_id = %d", $post['id'] ) ); } } /** * Calculates how many records are in the database and whether or not it exceeds the limit * * @return bool * * @since 2.0/4.0 */ public function max_total_records_reached() { global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $num_records = $wpdb->get_var( "SELECT COUNT(*) FROM $table_name" ); if ( ! isset( $this->limit ) && (int) $num_records > SBI_MAX_RECORDS ) { $this->limit = (int) $num_records - SBI_MAX_RECORDS; } return ( (int) $num_records > SBI_MAX_RECORDS ); } /** * The plugin caps how many new images are created in a 15 minute window to * avoid overloading servers * * @return bool * * @since 2.0/4.0 */ public function max_resizing_per_time_period_reached() { global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $fifteen_minutes_ago = date( 'Y-m-d H:i:s', time() - 15 * 60 ); $num_new_records = $wpdb->get_var( "SELECT COUNT(*) FROM $table_name WHERE created_on > '$fifteen_minutes_ago'" ); return ( (int) $num_new_records > 100 ); } /** * @return bool * * @since 2.0/4.0 */ public function image_resizing_disabled( $data = false ) { $options = sbi_get_database_settings(); $disable_resizing = isset( $options['sb_instagram_disable_resize'] ) ? $options['sb_instagram_disable_resize'] === 'on' || $options['sb_instagram_disable_resize'] === true : false; $disable_resizing = apply_filters( 'sbi_image_resizing_disabled', $disable_resizing, $data ); if ( ! $disable_resizing ) { $disable_resizing = isset( $this->resizing_tables_exist ) ? ! $this->resizing_tables_exist : ! $this->does_resizing_tables_exist(); } return $disable_resizing; } /** * Used to skip image resizing if the tables were never successfully * created * * @return bool * * @since 2.0/5.0 */ public function does_resizing_tables_exist() { global $wpdb; $table_name = esc_sql( $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS ); $resizing_key = 'sbi_resizing_exists'; $sbi_resizing_cache = wp_cache_get( $resizing_key ); if ( false === $sbi_resizing_cache ) { if ( $wpdb->get_var( "show tables like '$table_name'" ) == $table_name ) { wp_cache_set( $resizing_key, true ); } else { wp_cache_set( $resizing_key, false ); } } return $sbi_resizing_cache; } /** * Resets the custom tables and deletes all image files * * @since 2.0/4.0 */ public function delete_all_sbi_instagram_posts() { $upload = wp_upload_dir(); global $wpdb; $posts_table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $image_files = glob( trailingslashit( $upload['basedir'] ) . trailingslashit( SBI_UPLOADS_NAME ) . '*' ); // get all file names foreach ( $image_files as $file ) { // iterate files if ( is_file( $file ) ) { unlink( $file ); } } $connected_accounts = SB_Instagram_Connected_Account::get_all_connected_accounts(); foreach ( $connected_accounts as $account_id => $data ) { if ( isset( $data['local_avatar'] ) ) { unset( $connected_accounts[ $account_id ]['local_avatar'] ); } } $options = sbi_get_database_settings(); $options['connected_accounts'] = $connected_accounts; update_option( 'sb_instagram_settings', $options ); //Delete tables $wpdb->query( "DROP TABLE IF EXISTS $posts_table_name" ); $feeds_posts_table_name = esc_sql( $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS ); $wpdb->query( "DROP TABLE IF EXISTS $feeds_posts_table_name" ); $table_name = $wpdb->prefix . 'options'; $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_\$sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_\$sbi\_%') " ); delete_option( 'sbi_hashtag_ids' ); delete_option( 'sbi_local_avatars' ); delete_option( 'sbi_local_avatars_info' ); $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = trailingslashit( $upload_dir ) . SBI_UPLOADS_NAME; global $sbi_notices; if ( ! file_exists( $upload_dir ) ) { $created = wp_mkdir_p( $upload_dir ); if ( $created ) { $this->remove_error( 'upload_dir' ); $sbi_notices->remove_notice( 'upload_dir' ); } else { $this->add_error( 'upload_dir', __( 'There was an error creating the folder for storing resized images.', 'instagram-feed' ) . ' ' . $upload_dir ); } } else { $this->remove_error( 'upload_dir' ); $sbi_notices->remove_notice( 'upload_dir' ); } sbi_create_database_table(); } /** * Whether or not the one time request to the "top posts" endpoint for the hashtag * was made * * @param string $hashtag * * @return bool */ public static function top_post_request_already_made( $hashtag ) { $list_of_top_hashtags = get_option( 'sbi_top_api_calls', array() ); return in_array( $hashtag, $list_of_top_hashtags, true ); } /** * @param $hashtag */ public static function maybe_update_list_of_top_hashtags( $hashtag ) { $list_of_top_hashtags = get_option( 'sbi_top_api_calls', array() ); if ( ! in_array( $hashtag, $list_of_top_hashtags, true ) ) { $list_of_top_hashtags[] = $hashtag; update_option( 'sbi_top_api_calls', $list_of_top_hashtags ); } } /** * @return array * * @since 2.0/4.0 */ public function get_errors() { return $this->errors; } /** * @param string $type * @param mixed/array/bool $connected_account * * @since 2.0/4.0 */ public function remove_error( $type, $connected_account = false ) { $update = false; if ( ! empty( $this->errors[ $type ] ) ) { $this->errors[ $type ] = array(); $this->add_action_log( 'Cleared ' . $type . ' error.' ); $update = true; } if ( ! empty( $connected_account ) ) { if ( $this->remove_connected_account_error( $connected_account, $type, false ) ) { $this->add_action_log( 'Cleared connected account error ' . $connected_account['username'] . '.' ); } if ( $type === 'connection' ) { if ( $this->remove_connected_account_error( $connected_account, 'api', false ) ) { $this->add_action_log( 'Cleared connected account error ' . $connected_account['username'] . '.' ); } } if ( ! empty( $this->errors['revoked'] ) ) { if ( ( $key = array_search( $connected_account['user_id'], $this->errors['revoked'] ) ) !== false ) { unset( $this->errors['revoked'][ $key ] ); } } $update = true; } if ( $update ) { update_option( 'sb_instagram_errors', $this->errors, false ); } } /** * @param array $clearing_account * @param string $clearing_error_type * @param bool $update * * @return bool * * @since 2.7/5.10 */ public function remove_connected_account_error( $clearing_account, $clearing_error_type = 'all', $update = true ) { $cleared = false; if ( isset( $this->errors['accounts'] ) ) { if ( ! isset( $clearing_account['user_id'] ) ) { return $cleared; } $clearing_account_id = $clearing_account['user_id']; foreach ( $this->errors['accounts'] as $account_id => $error_types ) { if ( ! SB_Instagram_Connected_Account::lookup( $account_id ) ) { unset( $this->errors['accounts'][ $account_id ] ); } else { foreach ( $error_types as $error_type => $details ) { if ( (string) $account_id === (string) $clearing_account_id ) { if ( $error_type === $clearing_error_type || $clearing_error_type === 'all' ) { unset( $this->errors['accounts'][ $account_id ][ $error_type ] ); $cleared = true; } } else { if ( isset( $details['username'] ) ) { if ( $details['username'] === $clearing_account['username'] ) { if ( $error_type === $clearing_error_type || $clearing_error_type === 'all' ) { unset( $this->errors['accounts'][ $account_id ][ $error_type ] ); $cleared = true; } } } if ( isset( $this->errors['accounts'][ $account_id ] ) && isset( $details['access_token'] ) ) { if ( $details['access_token'] === $clearing_account['access_token'] ) { if ( $error_type === $clearing_error_type || $clearing_error_type === 'all' ) { unset( $this->errors['accounts'][ $account_id ][ $error_type ] ); $cleared = true; } } } } } if ( empty( $this->errors['accounts'][ $account_id ] ) ) { unset( $this->errors['accounts'][ $account_id ] ); } } } if ( $update ) { update_option( 'sb_instagram_errors', $this->errors, false ); } } return $cleared; } /** * * @since 2.7/5.10 */ public function remove_all_errors() { delete_option( 'sb_instagram_errors' ); sb_instagram_cron_clear_cache(); } /** * When an account is used to make a successful connection * * @since 2.7/5.10 */ public function reset_api_errors() { $this->errors['connection'] = array(); $this->errors['accounts'] = array(); update_option( 'sb_instagram_errors', $this->errors, false ); sb_instagram_cron_clear_cache(); global $sbi_notices; $sbi_notices->remove_notice( 'critical_error' ); } /** * @deprecated */ public function update_error_page( $id ) { if ( $id !== 0 ) { update_option( 'sb_instagram_error_page', $id, false ); } } /** * @return bool * * @since 2.7/5.10 */ public function get_error_page() { if ( isset( $this->errors['connection']['post_id'] ) ) { return $this->errors['connection']['post_id']; } return false; } /** * @return array * * @since 2.0/5.0 */ public function get_frontend_errors( $instagram_feed = false ) { if ( $instagram_feed ) { $cached_errors = $instagram_feed->get_cached_feed_error(); if ( ! empty( $cached_errors ) ) { return $cached_errors; } } $error_messages = array(); if ( ! empty( $this->display_error['connection']['error_message'] ) ) { $error_messages[] = $this->display_error['connection']['error_message']; } if ( ! empty( $this->display_error['configuration'] ) ) { $error_messages[] = $this->display_error['configuration']; } if ( ! empty( $this->display_error['hashtag'][0] ) ) { $error_24 = array(); $error_24_message = array(); foreach ( $this->display_error['hashtag'] as $hashtag_error ) { if ( $hashtag_error['error_id'] === 24 ) { if ( ! in_array( $hashtag_error['hashtag'], $error_24, true ) ) { $error_24[] = $hashtag_error['hashtag']; } if ( empty( $error_24_message ) ) { $error_24_message = $hashtag_error['error_message']; $error_24_message['admin_only'] = str_replace( $hashtag_error['hashtag'], '###', $error_24_message['admin_only'] ); } } else { $error_messages[] = $hashtag_error['error_message']; } } if ( ! empty( $error_24_message ) ) { $hashtag_string = count( $error_24 ) > 1 ? implode( '", "', $error_24 ) : $error_24[0]; $error_24_message['admin_only'] = str_replace( '###', $hashtag_string, $error_24_message['admin_only'] ); $error_messages[] = $error_24_message; } } if ( ! empty( $this->display_error['hashtag_limit'] ) ) { $response = array( 'error' => $this->display_error['hashtag_limit']['error'], ); $error_messages[] = $this->generate_error_message( $response ); } return $error_messages; } /** * @param $account * * @return bool * * @since 2.7/5.10 */ public function account_over_hashtag_limit( $account ) { if ( ! isset( $this->errors['accounts'][ $account['user_id'] ] ) ) { return false; } if ( isset( $this->errors['accounts'][ $account['user_id'] ]['hashtag_limit'] ) ) { if ( $this->errors['accounts'][ $account['user_id'] ]['hashtag_limit']['clear_time'] < time() ) { $this->remove_connected_account_error( $account, 'hashtag_limit', true ); return false; } else { $this->maybe_set_display_error( 'hashtag_limit', $this->errors['accounts'][ $account['user_id'] ]['hashtag_limit'] ); return true; } } return false; } /** * @param $connected_account * * @return bool * * @since 2.7/5.10 */ public function connected_account_has_error( $connected_account ) { if ( ! isset( $connected_account['user_id'] ) ) { return false; } if ( empty( $this->errors['accounts'] ) ) { return false; } $account_id = $connected_account['user_id']; if ( ! empty( $this->errors['accounts'][ $account_id ] ) ) { foreach ( $this->errors['accounts'][ $account_id ] as $error_key => $error_info ) { if ( strpos( $error_key, 'hashtag' ) === false ) { if ( $this->is_critical_error( $error_info ) ) { return true; } } } } return false; } /** * Whether or not the hashtag is unvailable in the API for some reason * * @param $hashtag * * @return bool * * @since 2.7/5.10 */ public function hashtag_has_error( $hashtag ) { if ( ! isset( $this->errors['hashtag'][0] ) ) { return false; } $to_save = array(); $changed = false; $return = false; foreach ( $this->errors['hashtag'] as $hashtag_error ) { if ( ! empty( $hashtag_error['hashtag'] ) && strtolower( $hashtag_error['hashtag'] ) === strtolower( $hashtag ) ) { if ( ! empty( $hashtag_error['clear_time'] ) ) { if ( $hashtag_error['clear_time'] < time() ) { $changed = true; $return = false; // clear the error, return false } else { $to_save[] = $hashtag_error; $this->maybe_set_display_error( 'hashtag', $hashtag_error ); $return = true; } } } else { if ( ! empty( $hashtag_error['clear_time'] ) ) { if ( $hashtag_error['clear_time'] < time() ) { $changed = true; } else { $to_save[] = $hashtag_error; } } else { $to_save[] = $hashtag_error; } } } if ( $changed ) { $this->errors['hashtag'] = $to_save; update_option( 'sb_instagram_errors', $this->errors, false ); } return $return; } /** * Only some errors should cause the user to be notified using email and site health * * @return string */ public function get_critical_errors() { if ( ! $this->are_critical_errors() ) { return ''; } $accounts_revoked_string = ''; $accounts_revoked = ''; if ( $this->was_app_permission_related_error() ) { $accounts_revoked = $this->get_app_permission_related_error_ids(); if ( count( $accounts_revoked ) > 1 ) { $accounts_revoked = implode( ', ', $accounts_revoked ); } else { $accounts_revoked = $accounts_revoked[0]; } $accounts_revoked_string = sprintf( __( 'Instagram Feed related data for the account(s) %s was removed due to permission for the Smash Balloon App on Facebook or Instagram being revoked.

To prevent the automated data deletion for the account, please reconnect your account within 7 days.', 'instagram-feed' ), $accounts_revoked ); } if ( isset( $this->errors['connection']['critical'] ) ) { $errors = $this->get_errors(); $error_message = ''; if ( $errors['connection']['error_id'] === 190 ) { $error_message .= '' . __( 'Action Required Within 7 Days', 'instagram-feed' ) . '
'; $error_message .= __( 'An account admin has deauthorized the Smash Balloon app used to power the Instagram Feed plugin.', 'instagram-feed' ); $error_message .= ' ' . sprintf( __( 'If the Instagram source is not reconnected within 7 days then all Instagram data will be automatically deleted on your website for this account (ID: %s) due to Facebook data privacy rules.', 'instagram-feed' ), $accounts_revoked ); $error_message .= __( '

To prevent the automated data deletion for the source, please reconnect your source within 7 days.', 'instagram-feed' ); $error_message .= '

' . __( 'More Information', 'instagram-feed' ) . ''; } else { $error_message_array = $errors['connection']['error_message']; $error_message .= '' . $error_message_array['error_message'] . '
'; $error_message .= $error_message_array['admin_only'] . '

'; if ( ! empty( $accounts_revoked_string ) ) { $error_message .= $accounts_revoked_string . '

'; } if ( ! empty( $error_message_array['backend_directions'] ) ) { $error_message .= $error_message_array['backend_directions']; } else { $retry = ''; if ( is_admin() ) { $retry = ''; } $hash = isset( $errors['connection']['error_id'] ) ? '#' . (int) $errors['connection']['error_id'] : ''; $error_message .= ''; } } } else { $connected_accounts = SB_Instagram_Connected_Account::get_all_connected_accounts(); foreach ( $connected_accounts as $connected_account ) { if ( isset( $connected_account['private'] ) && sbi_private_account_near_expiration( $connected_account ) ) { $link_1 = ''; $link_2 = ''; $error_message_array = array( 'error_message' => __( 'Error: Private Instagram Account.', 'instagram-feed' ), 'admin_only' => sprintf( __( 'It looks like your Instagram account is private. Instagram requires private accounts to be reauthenticated every 60 days. Refresh your account to allow it to continue updating, or %1$smake your Instagram account public%2$s.', 'instagram-feed' ), $link_1, $link_2 ), 'frontend_directions' => '' . __( 'Click here to troubleshoot', 'instagram-feed' ) . '', 'backend_directions' => '', ); } if ( isset( $this->errors['accounts'][ $connected_account['user_id'] ]['api'] ) ) { if ( isset( $this->errors['accounts'][ $connected_account['user_id'] ]['api']['error'] ) ) { if ( $this->is_critical_error( $this->errors['accounts'][ $connected_account['user_id'] ]['api'] ) ) { $error_message_array = $this->generate_error_message( $this->errors['accounts'][ $connected_account['user_id'] ]['api'], $connected_account ); } } } if ( ! isset( $error_message ) && isset( $error_message_array ) ) { $error_message = $error_message_array['admin_only'] . '

'; if ( ! empty( $error_message_array['backend_directions'] ) ) { $error_message .= $error_message_array['backend_directions']; } else { $retry = ''; if ( is_admin() ) { $retry = ''; } $error_message .= '

' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . '' . $retry. '

'; } } } } if ( isset( $error_message ) ) { $error_message = str_replace( 'Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api', '', $error_message ); } else { $error_message = ''; } // remove link to FB docs return $error_message; } /** * @since 2.0/5.0 */ public function reset_frontend_errors() { $this->display_error = array(); } /** * Remove all API request delays, triggered after saving settings * * @since 2.7/5.10 */ public function clear_api_request_delays() { if ( empty( $this->errors['accounts'] ) && empty( $this->errors['hashtag'] ) ) { return; } $changed = false; foreach ( $this->errors['accounts'] as $account_id => $account_error ) { if ( ! empty( $account_error['api']['clear_time'] ) ) { $this->errors['accounts'][ $account_id ]['api']['clear_time'] = 0; } $changed = true; } foreach ( $this->errors['hashtag'] as $key => $hashtag_error ) { if ( ! empty( $hashtag_error['hashtag'] ) ) { if ( ! empty( $hashtag_error['clear_time'] ) ) { $this->errors['hashtag'][ $key ]['clear_time'] = 0; $changed = true; } } } if ( $changed ) { update_option( 'sb_instagram_errors', $this->errors, false ); } } /** * @since 2.0/5.1.2 */ public function are_current_api_request_delays( $connected_account ) { if ( empty( $this->errors['accounts'] ) ) { return false; } $account_id = $connected_account['user_id']; $is_delay = false; if ( isset( $this->errors['accounts'][ $account_id ]['api'] ) ) { if ( ! empty( $this->errors['accounts'][ $account_id ]['api']['clear_time'] ) ) { if ( $this->errors['accounts'][ $account_id ]['api']['clear_time'] < time() ) { $is_delay = false; return apply_filters( 'sbi_is_api_delay', $is_delay ); } else { $is_delay = true; return apply_filters( 'sbi_is_api_delay', $is_delay ); } } } return apply_filters( 'sbi_is_api_delay', $is_delay ); } /** * Whether or not there is at least one critical error * * @return bool */ public function are_critical_errors() { if ( isset( $this->errors['connection']['critical'] ) ) { return true; } else { $connected_accounts = SB_Instagram_Connected_Account::get_all_connected_accounts(); foreach ( $connected_accounts as $connected_account ) { if ( isset( $connected_account['private'] ) && sbi_private_account_near_expiration( $connected_account ) ) { return true; } $user_id = ! empty( $connected_account['user_id'] ) ? $connected_account['user_id'] : 0; $user_id = empty( $user_id ) && ! empty( $connected_account['account_id'] ) ? $connected_account['account_id'] : 0; if ( isset( $this->errors['accounts'][ $user_id ]['api'] ) ) { if ( isset( $this->errors['accounts'][ $user_id ]['api']['error'] ) ) { return $this->is_critical_error( $this->errors['accounts'][ $user_id ]['api'] ); } } } } return false; } /** * Whether or not there was a platform data clearing error * * @return bool */ public function was_app_permission_related_error() { return ! empty( $this->errors['revoked'] ); } public function get_app_permission_related_error_ids() { return $this->errors['revoked']; } /** * Delete any data associated with the Instagram API and the * connected account being deleted. * * @param $to_delete_connected_account */ public function delete_platform_data( $to_delete_connected_account ) { $are_other_business_accounts = false; $all_connected_accounts = SB_Instagram_Connected_Account::get_all_connected_accounts(); $to_update = array(); foreach ( $all_connected_accounts as $connected_account ) { if ( (int) $connected_account['user_id'] !== (int) $to_delete_connected_account['user_id'] ) { $to_update[ $connected_account['user_id'] ] = $connected_account; if ( isset( $connected_account['type'] ) && $connected_account['type'] === 'business' ) { $are_other_business_accounts = true; } } } SB_Instagram_Connected_Account::update_connected_accounts( $to_update ); \InstagramFeed\Builder\SBI_Db::delete_source_by_account_id( $to_delete_connected_account['user_id'] ); $manager = new SB_Instagram_Data_Manager(); $manager->delete_caches(); $manager->delete_comments_data(); if ( empty( $to_update ) || ! $are_other_business_accounts ) { $manager->delete_hashtag_data(); } else { $manager->delete_non_hashtag_sbi_instagram_posts( $to_delete_connected_account['username'] ); } } } instagram-feed/inc/if-functions.php000064400000164572151435171370013346 0ustar00get_settings();; if ( empty( $early_settings ) && ! sbi_doing_customizer( $atts ) ) { $style = current_user_can( 'manage_instagram_feed_options' ) ? ' style="display: block;"' : ''; $id = isset( $atts['feed'] ) ? (int)$atts['feed'] : false; if ( $id ) { $message = sprintf( __( 'Error: No feed with the ID %s found.', 'instagram-feed' ), $id ); } else { $message = __( 'Error: No feed found.', 'instagram-feed' ); } ob_start(); ?>
>

set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $transient_name = $instagram_feed_settings->get_transient_name(); $settings = $instagram_feed_settings->get_settings(); $feed_type_and_terms = $instagram_feed_settings->get_feed_type_and_terms(); $instagram_feed = new SB_Instagram_Feed( $transient_name ); $instagram_feed->set_cache( $instagram_feed_settings->get_cache_time_in_seconds(), $settings ); if ( $settings['caching_type'] === 'background' ) { $instagram_feed->add_report( 'background caching used' ); if ( $instagram_feed->regular_cache_exists() ) { $instagram_feed->add_report( 'setting posts from cache' ); $instagram_feed->set_post_data_from_cache(); } if ( $instagram_feed->need_to_start_cron_job() ) { $instagram_feed->add_report( 'setting up feed for cron cache' ); $to_cache = array( 'atts' => $atts, 'last_requested' => time(), ); $instagram_feed->set_cron_cache( $to_cache, $instagram_feed_settings->get_cache_time_in_seconds() ); SB_Instagram_Cron_Updater::do_single_feed_cron_update( $instagram_feed_settings, $to_cache, $atts, false ); $instagram_feed->set_cache( $instagram_feed_settings->get_cache_time_in_seconds(), $settings ); $instagram_feed->set_post_data_from_cache(); } elseif ( $instagram_feed->should_update_last_requested() ) { $instagram_feed->add_report( 'updating last requested' ); $to_cache = array( 'last_requested' => time(), ); $instagram_feed->set_cron_cache( $to_cache, $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } elseif ( $instagram_feed->regular_cache_exists() ) { $instagram_feed->add_report( 'page load caching used and regular cache exists' ); $instagram_feed->set_post_data_from_cache(); if ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { while ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } $instagram_feed->cache_feed_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } else { $instagram_feed->add_report( 'no feed cache found' ); while ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } if ( ! $instagram_feed->should_use_backup() ) { $instagram_feed->cache_feed_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } if ( $instagram_feed->should_use_backup() ) { $instagram_feed->add_report( 'trying to use backup' ); $instagram_feed->maybe_set_post_data_from_backup(); $instagram_feed->maybe_set_header_data_from_backup(); } // if need a header if ( $instagram_feed->need_header( $settings, $feed_type_and_terms ) ) { if ( $instagram_feed->should_use_backup() && $settings['minnum'] > 0 ) { $instagram_feed->add_report( 'trying to set header from backup' ); $header_cache_success = $instagram_feed->maybe_set_header_data_from_backup(); } elseif ( $instagram_feed->regular_header_cache_exists() ) { // set_post_data_from_cache $instagram_feed->add_report( 'page load caching used and regular header cache exists' ); $instagram_feed->set_header_data_from_cache(); } else { $instagram_feed->add_report( 'no header cache exists' ); $instagram_feed->set_remote_header_data( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); $instagram_feed->cache_header_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } else { $instagram_feed->add_report( 'no header needed' ); } if ( $settings['resizeprocess'] === 'page' ) { $instagram_feed->add_report( 'resizing images for post set' ); $post_data = $instagram_feed->get_post_data(); $post_data = array_slice( $post_data, 0, $settings['num'] ); $post_set = new SB_Instagram_Post_Set( $post_data, $transient_name ); $post_set->maybe_save_update_and_resize_images_for_posts(); } if ( $settings['disable_js_image_loading'] || $settings['imageres'] !== 'auto' ) { global $sb_instagram_posts_manager; $post_data = $instagram_feed->get_post_data(); if ( ! $sb_instagram_posts_manager->image_resizing_disabled() ) { $image_ids = array(); foreach ( $post_data as $post ) { $image_ids[] = SB_Instagram_Parse::get_post_id( $post ); } $resized_images = SB_Instagram_Feed::get_resized_images_source_set( $image_ids, 0, $transient_name ); $instagram_feed->set_resized_images( $resized_images ); } } return $instagram_feed->get_the_feed_html( $settings, $atts, $instagram_feed_settings->get_feed_type_and_terms(), $instagram_feed_settings->get_connected_accounts_in_feed() ); } /** * For efficiency, local versions of image files available for the images actually displayed on the page * are added at the end of the feed. * * @param object $instagram_feed * @param string $feed_id */ function sbi_add_resized_image_data( $instagram_feed, $feed_id ) { global $sb_instagram_posts_manager; if ( ! $sb_instagram_posts_manager->image_resizing_disabled() ) { if ( $instagram_feed->should_update_last_requested() ) { SB_Instagram_Feed::update_last_requested( $instagram_feed->get_image_ids_post_set() ); } } ?> set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $transient_name = $instagram_feed_settings->get_transient_name(); if ( $transient_name !== $feed_id ) { die( 'id does not match' ); } $settings = $instagram_feed_settings->get_settings(); $location = isset( $_POST['location'] ) && in_array( $_POST['location'], array( 'header', 'footer', 'sidebar', 'content' ), true ) ? sanitize_text_field( wp_unslash( $_POST['location'] ) ) : 'unknown'; $post_id = isset( $_POST['post_id'] ) && $_POST['post_id'] !== 'unknown' ? (int)$_POST['post_id'] : 'unknown'; $feed_details = array( 'feed_id' => $transient_name, 'atts' => $atts, 'location' => array( 'post_id' => $post_id, 'html' => $location ) ); $can_do_background_tasks = false; if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { $nonce = isset( $_POST['locator_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['locator_nonce'] ) ) : ''; if ( wp_verify_nonce( $nonce, esc_attr( 'sbi-locator-nonce-' . $post_id . '-' . $transient_name ) ) ) { $can_do_background_tasks = true; } } else { $can_do_background_tasks = true; } if ( $can_do_background_tasks ) { sbi_do_background_tasks( $feed_details ); } $feed_type_and_terms = $instagram_feed_settings->get_feed_type_and_terms(); $instagram_feed = new SB_Instagram_Feed( $transient_name ); $instagram_feed->set_cache( $instagram_feed_settings->get_cache_time_in_seconds(), $settings ); if ( $settings['caching_type'] === 'background' ) { $instagram_feed->add_report( 'background caching used' ); if ( $instagram_feed->regular_cache_exists() ) { $instagram_feed->add_report( 'setting posts from cache' ); $instagram_feed->set_post_data_from_cache(); } if ( $instagram_feed->need_posts( $settings['minnum'], $offset, $page ) && $instagram_feed->can_get_more_posts() ) { while ( $instagram_feed->need_posts( $settings['minnum'], $offset, $page ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } $normal_method = true; if ( $instagram_feed->need_to_start_cron_job() ) { $instagram_feed->add_report( 'needed to start cron job' ); $to_cache = array( 'atts' => $atts, 'last_requested' => time(), ); $normal_method = false; } else { $instagram_feed->add_report( 'updating last requested and adding to cache' ); $to_cache = array( 'last_requested' => time(), ); } if ( $normal_method ) { $instagram_feed->set_cron_cache( $to_cache, $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } else { $instagram_feed->set_cron_cache( $to_cache, $instagram_feed_settings->get_cache_time_in_seconds() ); } } } elseif ( $instagram_feed->regular_cache_exists() ) { $instagram_feed->add_report( 'regular cache exists' ); $instagram_feed->set_post_data_from_cache(); if ( $instagram_feed->need_posts( $settings['minnum'], $offset, $page ) && $instagram_feed->can_get_more_posts() ) { while ( $instagram_feed->need_posts( $settings['minnum'], $offset, $page ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } $instagram_feed->add_report( 'adding to cache' ); $instagram_feed->cache_feed_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } else { $instagram_feed->add_report( 'no feed cache found' ); while ( $instagram_feed->need_posts( $settings['num'], $offset ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } if ( $instagram_feed->should_use_backup() ) { $instagram_feed->add_report( 'trying to use a backup cache' ); $instagram_feed->maybe_set_post_data_from_backup(); } else { $instagram_feed->add_report( 'transient gone, adding to cache' ); $instagram_feed->cache_feed_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } if ( $settings['disable_js_image_loading'] || $settings['imageres'] !== 'auto' ) { global $sb_instagram_posts_manager; $post_data = array_slice( $instagram_feed->get_post_data(), $offset, $settings['minnum'] ); if ( ! $sb_instagram_posts_manager->image_resizing_disabled() ) { $image_ids = array(); foreach ( $post_data as $post ) { $image_ids[] = SB_Instagram_Parse::get_post_id( $post ); } $resized_images = SB_Instagram_Feed::get_resized_images_source_set( $image_ids, 0, $feed_id ); $instagram_feed->set_resized_images( $resized_images ); } } $feed_status = array( 'shouldPaginate' => $instagram_feed->should_use_pagination( $settings, $offset ) ); $return = array( 'html' => $instagram_feed->get_the_items_html( $settings, $offset, $instagram_feed_settings->get_feed_type_and_terms(), $instagram_feed_settings->get_connected_accounts_in_feed() ), 'feedStatus' => $feed_status, 'report' => $instagram_feed->get_report(), 'resizedImages' => SB_Instagram_Feed::get_resized_images_source_set( $instagram_feed->get_image_ids_post_set(), 1, $feed_id ) ); header( 'Content-Type: application/json; charset=utf-8' ); echo sbi_json_encode( $return ); die(); } add_action( 'wp_ajax_sbi_load_more_clicked', 'sbi_get_next_post_set' ); add_action( 'wp_ajax_nopriv_sbi_load_more_clicked', 'sbi_get_next_post_set' ); /** * Posts that need resized images are processed after being sent to the server * using AJAX * * @return string */ function sbi_process_submitted_resize_ids() { if ( ! sbi_current_user_can( 'manage_instagram_feed_options') ) { if ( ! isset( $_POST['feed_id'] ) || (strpos( $_POST['feed_id'], 'sbi' ) === false && strpos( $_POST['feed_id'], '*' ) === false ) ) { die( 'invalid feed ID'); } } $feed_id = sanitize_text_field( $_POST['feed_id'] ); $images_need_resizing_raw = isset( $_POST['needs_resizing'] ) ? $_POST['needs_resizing'] : array(); if ( is_array( $images_need_resizing_raw ) ) { array_map( 'sbi_sanitize_instagram_ids', $images_need_resizing_raw ); } else { $images_need_resizing_raw = array(); } $images_need_resizing = $images_need_resizing_raw; $atts_raw = isset( $_POST['atts'] ) ? json_decode( wp_unslash( $_POST['atts'] ), true ) : array(); if ( is_array( $atts_raw ) ) { $atts_raw = SB_Instagram_Settings::sanitize_raw_atts( $atts_raw ); } else { $atts_raw = array(); } $atts = $atts_raw; // now sanitized $offset = isset( $_POST['offset'] ) ? (int)$_POST['offset'] : 0; $cache_all = isset( $_POST['cache_all'] ) ? $_POST['cache_all'] === 'true' : false; $database_settings = sbi_get_database_settings(); $instagram_feed_settings = new SB_Instagram_Settings( $atts, $database_settings ); $instagram_feed_settings->set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $transient_name = $instagram_feed_settings->get_transient_name(); $settings = $instagram_feed_settings->get_settings(); $location = isset( $_POST['location'] ) && in_array( $_POST['location'], array( 'header', 'footer', 'sidebar', 'content' ), true ) ? sanitize_text_field( $_POST['location'] ) : 'unknown'; $post_id = isset( $_POST['post_id'] ) && $_POST['post_id'] !== 'unknown' ? (int)$_POST['post_id'] : 'unknown'; $feed_details = array( 'feed_id' => $transient_name, 'atts' => $atts, 'location' => array( 'post_id' => $post_id, 'html' => $location ) ); $can_do_background_tasks = false; if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { $nonce = isset( $_POST['locator_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['locator_nonce'] ) ) : ''; if ( wp_verify_nonce( $nonce, esc_attr( 'sbi-locator-nonce-' . $post_id . '-' . $transient_name ) ) ) { $can_do_background_tasks = true; } } else { $can_do_background_tasks = true; } if ( $can_do_background_tasks ) { sbi_do_background_tasks( $feed_details ); } if ( $cache_all ) { $settings['cache_all'] = true; } if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { if ( $transient_name !== $feed_id ) { die( 'id does not match' ); } } sbi_resize_posts_by_id( $images_need_resizing, $transient_name, $settings ); sbi_delete_image_cache( $transient_name ); global $sb_instagram_posts_manager; if ( ! $sb_instagram_posts_manager->image_resizing_disabled( $transient_name ) ) { $num = $settings['minnum'] * 2 + 5; header( 'Content-Type: application/json; charset=utf-8' ); echo sbi_json_encode( SB_Instagram_Feed::get_resized_images_source_set( $num, $offset - $settings['minnum'], $feed_id, false ) ); die(); } die( 'resizing success' ); } add_action( 'wp_ajax_sbi_resized_images_submit', 'sbi_process_submitted_resize_ids' ); add_action( 'wp_ajax_nopriv_sbi_resized_images_submit', 'sbi_process_submitted_resize_ids' ); function sbi_do_locator() { if ( ! sbi_current_user_can( 'manage_instagram_feed_options') ) { if ( ! isset( $_POST['feed_id'] ) || (strpos( $_POST['feed_id'], 'sbi' ) === false && strpos( $_POST['feed_id'], '*' ) === false ) ) { die( 'invalid feed ID'); } } $feed_id = sanitize_text_field( wp_unslash( $_POST['feed_id'] ) ); $atts_raw = isset( $_POST['atts'] ) ? json_decode( wp_unslash( $_POST['atts'] ), true ) : array(); if ( is_array( $atts_raw ) ) { $atts_raw = SB_Instagram_Settings::sanitize_raw_atts( $atts_raw ); } else { $atts_raw = array(); } $atts = $atts_raw; // now sanitized $database_settings = sbi_get_database_settings(); $instagram_feed_settings = new SB_Instagram_Settings( $atts, $database_settings ); $instagram_feed_settings->set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $transient_name = $instagram_feed_settings->get_transient_name(); $location = isset( $_POST['location'] ) && in_array( $_POST['location'], array( 'header', 'footer', 'sidebar', 'content' ), true ) ? sanitize_text_field( $_POST['location'] ) : 'unknown'; $post_id = isset( $_POST['post_id'] ) && $_POST['post_id'] !== 'unknown' ? (int)$_POST['post_id'] : 'unknown'; $feed_details = array( 'feed_id' => $feed_id, 'atts' => $atts, 'location' => array( 'post_id' => $post_id, 'html' => $location ) ); $can_do_background_tasks = false; if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { $nonce = isset( $_POST['locator_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['locator_nonce'] ) ) : ''; if ( wp_verify_nonce( $nonce, esc_attr( 'sbi-locator-nonce-' . $post_id . '-' . $transient_name ) ) ) { $can_do_background_tasks = true; } } else { $can_do_background_tasks = true; } if ( $can_do_background_tasks ) { sbi_do_background_tasks( $feed_details ); wp_die( 'locating success' ); } wp_die( 'skipped locating' ); } add_action( 'wp_ajax_sbi_do_locator', 'sbi_do_locator' ); add_action( 'wp_ajax_nopriv_sbi_do_locator', 'sbi_do_locator' ); function sbi_do_background_tasks( $feed_details ) { if ( is_admin() && isset( $_GET['page'] ) && $_GET['page'] === 'sbi-feed-builder') { return; } $locator = new SB_Instagram_Feed_Locator( $feed_details ); $locator->add_or_update_entry(); if ( $locator->should_clear_old_locations() ) { $locator->delete_old_locations(); } } /** * Outputs an organized error report for the front end. * This hooks into the end of the feed before the closing div * * @param object $instagram_feed * @param string $feed_id */ function sbi_error_report( $instagram_feed, $feed_id ) { global $sb_instagram_posts_manager; if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { $sb_instagram_posts_manager->reset_frontend_errors(); return; } $error_messages = $sb_instagram_posts_manager->get_frontend_errors( $instagram_feed ); if ( ! empty( $error_messages ) ) {?>

' . esc_html( $error_message['error_message'] ) . ''; if ( sbi_current_user_can( 'manage_instagram_feed_options' ) ) { echo '
' . $error_message['admin_only']; echo '
' . $error_message['frontend_directions']; } echo '
'; } ?> reset_frontend_errors(); } add_action( 'sbi_before_feed_end', 'sbi_error_report', 10, 2 ); function sbi_delete_image_cache( $transient_name ) { $cache = new SB_Instagram_Cache( $transient_name ); $cache->clear( 'resized_images' ); } function sbi_current_user_can( $cap ) { if ( $cap === 'manage_instagram_feed_options' ) { $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; } $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); return current_user_can( $cap ); } function sbi_doing_openssl() { return extension_loaded( 'openssl' ); } /** * Debug report added at the end of the feed when sbi_debug query arg is added to a page * that has the feed on it. * * @param object $instagram_feed * @param string $feed_id */ function sbi_debug_report( $instagram_feed, $feed_id ) { if ( ! isset( $_GET['sbi_debug'] ) && ! isset( $_GET['sb_debug'] ) ) { return; } global $sb_instagram_posts_manager; $feed = $instagram_feed->get_feed_id(); $atts = array('feed' => ! empty( $feed ) ? $feed : 1); $settings_obj = new SB_Instagram_Settings( $atts, sbi_get_database_settings() ); $settings = $settings_obj->get_settings(); $public_settings_keys = SB_Instagram_Settings::get_public_db_settings_keys(); ?>

Status

  • Time:
  • get_report() as $item ) : ?>

Settings

  • :
      $value ) { echo '
    • ' . esc_html( $sub_key ). ': '. esc_html( $value ) . '
    • '; } ?>

GDPR

    $value) : ?>
  • :
  • Enabled:
$settings['custombgcolor1'], 'text1' => $settings['customtextcolor1'], 'text2' => $settings['customtextcolor2'], 'link1' => $settings['customlinkcolor1'], 'button1' => $settings['custombuttoncolor1'], 'button2' => $settings['custombuttoncolor2'] ); ?> set_cache( MONTH_IN_SECONDS, $settings ); if ( $instagram_feed->regular_cache_exists() ) { // set_post_data_from_cache $instagram_feed->set_post_data_from_cache(); $cached_post_data = $instagram_feed->get_post_data(); } elseif ( sbi_current_user_can( 'manage_instagram_feed_options' ) && is_admin() ) { $customizer_cache = new SB_Instagram_Cache( $transient_name, 1, MONTH_IN_SECONDS ); $cached_post_data = $customizer_cache->get_customizer_cache(); } else { return array(); } if ( ! isset( $settings['cache_all'] ) || ! $settings['cache_all'] ) { $num_ids = count( $ids ); $found_posts = array(); $i = 0; while ( count( $found_posts) < $num_ids && isset( $cached_post_data[ $i ] ) ) { if ( ! empty( $cached_post_data[ $i ]['id'] ) && in_array( $cached_post_data[ $i ]['id'], $ids, true ) ) { $found_posts[] = $cached_post_data[ $i ]; } $i++; } } else { $found_posts = array_slice( $cached_post_data, 0, 50 ); } $fill_in_timestamp = date( 'Y-m-d H:i:s', time() + 120 ); if ( $offset !== 0 ) { $fill_in_timestamp = date( 'Y-m-d H:i:s', strtotime( $instagram_feed->get_earliest_time_stamp( $transient_name ) ) - 120 ); } $image_sizes = array( 'personal' => array( 'full' => 640, 'low' => 320, 'thumb' => 150 ), 'business' => array( 'full' => 640, 'low' => 320, 'thumb' => 150 ) ); $post_set = new SB_Instagram_Post_Set( $found_posts, $transient_name, $fill_in_timestamp, $image_sizes ); $post_set->maybe_save_update_and_resize_images_for_posts(); } function sbi_create_local_avatar( $username, $file_name ) { return SB_Instagram_Connected_Account::create_local_avatar( $username, $file_name ); } /** * Get the settings in the database with defaults * * @return array */ function sbi_get_database_settings() { $sbi_settings = get_option( 'sb_instagram_settings', array() ); if ( ! is_array( $sbi_settings ) ) { $sbi_settings = array(); } $return_settings = array_merge( sbi_defaults(), $sbi_settings ); $return_settings = apply_filters( 'sbi_database_settings', $return_settings ); return $return_settings; } /** * May include support for templates in theme folders in the future * * @since 2.1 custom templates supported */ function sbi_get_feed_template_part( $part, $settings = array() ) { $file = ''; $using_custom_templates_in_theme = apply_filters( 'sbi_use_theme_templates', $settings['customtemplates'] ); $generic_path = trailingslashit( SBI_PLUGIN_DIR ) . 'templates/'; if ( $using_custom_templates_in_theme ) { $custom_header_template = locate_template( 'sbi/header.php', false, false ); $custom_item_template = locate_template( 'sbi/item.php', false, false ); $custom_footer_template = locate_template( 'sbi/footer.php', false, false ); $custom_feed_template = locate_template( 'sbi/feed.php', false, false ); } else { $custom_header_template = false; $custom_item_template = false; $custom_footer_template = false; $custom_feed_template = false; } if ( $part === 'header' ) { if ( $custom_header_template ) { $file = $custom_header_template; } else { $file = $generic_path . 'header.php'; } } elseif ( $part === 'item' ) { if ( $custom_item_template ) { $file = $custom_item_template; } else { $file = $generic_path . 'item.php'; } } elseif ( $part === 'footer' ) { if ( $custom_footer_template ) { $file = $custom_footer_template; } else { $file = $generic_path . 'footer.php'; } } elseif ( $part === 'feed' ) { if ( $custom_feed_template ) { $file = $custom_feed_template; } else { $file = $generic_path . 'feed.php'; } } // Allow 3rd party plugins to filter template file from their plugin. $file = apply_filters( 'sbi_feed_template_part', $file, $part, $settings ); return $file; } /** * Triggered by a cron event to update feeds */ function sbi_cron_updater() { $cron_updater = new SB_Instagram_Cron_Updater(); $cron_updater->do_feed_updates(); sbi_do_background_tasks( array() ); \InstagramFeed\Admin\SBI_Support_Tool::delete_expired_users(); } add_action( 'sbi_feed_update', 'sbi_cron_updater' ); /** * @param $maybe_dirty * * @return string */ function sbi_maybe_clean( $maybe_dirty ) { $encryption = new SB_Instagram_Data_Encryption(); $decrypted = $encryption->decrypt( $maybe_dirty ); if ( $decrypted ) { $maybe_dirty = $decrypted; } if ( substr_count ( $maybe_dirty , '.' ) < 3 ) { return str_replace( '634hgdf83hjdj2', '', $maybe_dirty ); } $parts = explode( '.', trim( $maybe_dirty ) ); $last_part = $parts[2] . $parts[3]; $cleaned = $parts[0] . '.' . base64_decode( $parts[1] ) . '.' . base64_decode( $last_part ); return $cleaned; } /** * If there are more feeds than a single batch */ function sbi_process_additional_batch() { $sbi_settings = sbi_get_database_settings(); $args = array( 'cron_update' => true, 'additional_batch' => true, ); $cron_records = \InstagramFeed\Builder\SBI_Db::feed_caches_query( $args ); $num = count( $cron_records ); if ( $num === \InstagramFeed\Builder\SBI_Db::RESULTS_PER_CRON_UPDATE ) { wp_schedule_single_event( time() + 120, 'sbi_cron_additional_batch' ); } SB_Instagram_Cron_Updater::update_batch( $cron_records ); sbi_do_background_tasks( array() ); } add_action( 'sbi_cron_additional_batch', 'sbi_process_additional_batch' ); /** * @param $whole * * @return string */ function sbi_get_parts( $whole ) { if ( substr_count ( $whole , '.' ) !== 2 ) { return $whole; } $parts = explode( '.', trim( $whole ) ); $return = $parts[0] . '.' . base64_encode( $parts[1] ). '.' . base64_encode( $parts[2] ); return substr( $return, 0, 40 ) . '.' . substr( $return, 40, 100 ); } /** * @param $a * @param $b * * @return false|int */ function sbi_date_sort( $a, $b ) { $time_stamp_a = SB_Instagram_Parse::get_timestamp( $a ); $time_stamp_b = SB_Instagram_Parse::get_timestamp( $b ); if ( isset( $time_stamp_a ) ) { return $time_stamp_b - $time_stamp_a; } else { return rand ( -1, 1 ); } } function sbi_code_check( $code ) { if ( strpos( $code, '634hgdf83hjdj2') !== false ) { return true; } return false; } function sbi_fixer( $code ) { if ( strpos( $code, '634hgdf83hjdj2') !== false ) { return $code; } else { return substr_replace( $code , '634hgdf83hjdj2', 15, 0 ); } } /** * @param $a * @param $b * * @return false|int */ function sbi_rand_sort( $a, $b ) { return rand ( -1, 1 ); } /** * @return string * * @since 2.1.1 */ function sbi_get_resized_uploads_url() { $upload = wp_upload_dir(); $base_url = $upload['baseurl']; $home_url = home_url(); if ( strpos( $home_url, 'https:' ) !== false ) { $base_url = str_replace( 'http:', 'https:', $base_url ); } $resize_url = apply_filters( 'sbi_resize_url', trailingslashit( $base_url ) . trailingslashit( SBI_UPLOADS_NAME ) ); return $resize_url; } /** * Converts a hex code to RGB so opacity can be * applied more easily * * @param $hex * * @return string */ function sbi_hextorgb( $hex ) { // allows someone to use rgb in shortcode if ( strpos( $hex, ',' ) !== false ) { return $hex; } $hex = str_replace( '#', '', $hex ); if ( strlen( $hex ) === 3 ) { $r = hexdec( substr( $hex,0,1 ).substr( $hex,0,1 ) ); $g = hexdec( substr( $hex,1,1 ).substr( $hex,1,1 ) ); $b = hexdec( substr( $hex,2,1 ).substr( $hex,2,1 ) ); } else { $r = hexdec( substr( $hex,0,2 ) ); $g = hexdec( substr( $hex,2,2 ) ); $b = hexdec( substr( $hex,4,2 ) ); } $rgb = array( $r, $g, $b ); return implode( ',', $rgb ); // returns the rgb values separated by commas } function sbi_is_url( $input ) { return (bool) filter_var( $input, FILTER_VALIDATE_URL ); } /** * Added to workaround MySQL tables that don't use utf8mb4 character sets * * @since 2.2.1/5.3.1 */ function sbi_sanitize_emoji( $string ) { $encoded = array( 'jsonencoded' => $string ); return sbi_json_encode( $encoded ); } /** * Added to workaround MySQL tables that don't use utf8mb4 character sets * * @since 2.2.1/5.3.1 */ function sbi_decode_emoji( $string ) { if ( strpos( $string, '{"' ) !== false ) { $decoded = json_decode( $string, true ); return $decoded['jsonencoded']; } return $string; } function sbi_sanitize_instagram_ids( $raw_id ) { return preg_replace( '/[^0-9_]/', '', $raw_id ); } function sbi_sanitize_alphanumeric_and_equals( $value ) { return preg_replace( '/[^A-Za-z0-9=]/', '', $value ); } function sbi_sanitize_username( $value ) { return preg_replace( '/[^A-Za-z0-9_.]/', '', $value ); } /** * @return int */ function sbi_get_utc_offset() { return get_option( 'gmt_offset', 0 ) * HOUR_IN_SECONDS; } /** * Deletes any cache or setting that may contain Instagram platform data */ function sbi_delete_all_platform_data() { global $sb_instagram_posts_manager; $manager = new SB_Instagram_Data_Manager(); $sb_instagram_posts_manager->add_action_log( 'Deleted all platform data.' ); $sb_instagram_posts_manager->reset_api_errors(); $manager->delete_caches(); $manager->delete_comments_data(); $manager->delete_hashtag_data(); SB_Instagram_Connected_Account::update_connected_accounts( array() ); } function sbi_get_current_timestamp() { $current_time = time(); //$current_time = strtotime( 'November 25, 2022' ) + 1; return $current_time; } function sbi_get_current_time() { return sbi_get_current_timestamp(); } function sbi_is_after_deprecation_deadline() { return true; } function sbi_json_encode( $thing ) { if ( function_exists( 'wp_json_encode' ) ) { return wp_json_encode( $thing ); } else { return json_encode( $thing ); } } function sbi_private_account_near_expiration( $connected_account ) { $expires_in = max( 0, floor( ($connected_account['expires_timestamp'] - time()) / DAY_IN_SECONDS ) ); return $expires_in < 10; } function sbi_update_connected_account( $account_id, $to_update ) { $args = [ 'id' => $account_id ]; $results = InstagramFeed\Builder\SBI_Db::source_query( $args ); if ( ! empty( $results ) ) { $source = $results[0]; $info = ! empty( $source['info'] ) ? json_decode( $source['info'], true ) : array(); if ( isset( $to_update['private'] ) ) { $info['private'] = $to_update['private']; } foreach ( $to_update as $key => $value ) { if ( isset( $source[ $key ] ) ) { $source[ $key ] = $value; } } $source['id'] = $account_id; InstagramFeed\Builder\SBI_Source::update_or_insert( $source ); } } /** * Used to clear caches when transients aren't working * properly */ function sb_instagram_cron_clear_cache() { } function sbi_clear_caches() { global $wpdb; $cache_table_name = $wpdb->prefix . 'sbi_feed_caches'; $sql = " UPDATE $cache_table_name SET cache_value = '' WHERE cache_key NOT IN ( 'posts_backup', 'header_backup' );"; $wpdb->query( $sql ); } /** * When certain events occur, page caches need to * clear or errors occur or changes will not be seen */ function sb_instagram_clear_page_caches() { $clear_page_caches = apply_filters( 'sbi_clear_page_caches', true ); if ( ! $clear_page_caches ) { return; } if ( isset( $GLOBALS['wp_fastest_cache'] ) && method_exists( $GLOBALS['wp_fastest_cache'], 'deleteCache' ) ){ /* Clear WP fastest cache*/ $GLOBALS['wp_fastest_cache']->deleteCache(); } if ( function_exists( 'wp_cache_clear_cache' ) ) { wp_cache_clear_cache(); } if ( class_exists('W3_Plugin_TotalCacheAdmin') ) { $plugin_totalcacheadmin = & w3_instance('W3_Plugin_TotalCacheAdmin'); $plugin_totalcacheadmin->flush_all(); } if ( function_exists( 'rocket_clean_domain' ) ) { rocket_clean_domain(); } if ( class_exists( 'autoptimizeCache' ) ) { /* Clear autoptimize */ autoptimizeCache::clearall(); } // Litespeed Cache if ( method_exists( 'LiteSpeed_Cache_API', 'purge' ) ) { LiteSpeed_Cache_API::purge( 'esi.instagram-feed' ); } } /** * Makes the JavaScript file available and enqueues the stylesheet * for the plugin */ function sb_instagram_scripts_enqueue( $enqueue = false ) { //Register the script to make it available //Options to pass to JS file $sb_instagram_settings = get_option( 'sb_instagram_settings' ); // legacy settings $path = ! is_admin() && Util::sbi_legacy_css_enabled() ? 'legacy/' : ''; $js_file = 'js/' . $path . 'sbi-scripts.min.js'; $css_file = 'css/' . $path . 'sbi-styles.min.css'; if ( Util::isDebugging() || Util::is_script_debug() ) { $js_file = 'js/' . $path . 'sbi-scripts.js'; $css_file = 'css/' . $path . 'sbi-styles.css'; } if ( isset( $sb_instagram_settings['enqueue_js_in_head'] ) && $sb_instagram_settings['enqueue_js_in_head'] ) { wp_enqueue_script( 'sbi_scripts', trailingslashit( SBI_PLUGIN_URL ) . $js_file, array('jquery'), SBIVER, false ); } else { wp_register_script( 'sbi_scripts', trailingslashit( SBI_PLUGIN_URL ) . $js_file, array('jquery'), SBIVER, true ); } if ( isset( $sb_instagram_settings['enqueue_css_in_shortcode'] ) && $sb_instagram_settings['enqueue_css_in_shortcode'] ) { wp_register_style( 'sbi_styles', trailingslashit( SBI_PLUGIN_URL ) . $css_file, array(), SBIVER ); } else { wp_enqueue_style( 'sbi_styles', trailingslashit( SBI_PLUGIN_URL ) . $css_file, array(), SBIVER ); } $data = array( 'font_method' => 'svg', 'resized_url' => sbi_get_resized_uploads_url(), 'placeholder' => trailingslashit( SBI_PLUGIN_URL ) . 'img/placeholder.png', 'ajax_url' => admin_url( 'admin-ajax.php' ), ); //Pass option to JS file wp_localize_script('sbi_scripts', 'sb_instagram_js_options', $data ); if ( $enqueue || SB_Instagram_Blocks::is_gb_editor() ) { wp_enqueue_style( 'sbi_styles' ); wp_enqueue_script( 'sbi_scripts' ); } } add_action( 'wp_enqueue_scripts', 'sb_instagram_scripts_enqueue', 2 ); /** * Adds the ajax url and custom JavaScript to the page */ function sb_instagram_custom_js() { $options = get_option('sb_instagram_settings'); isset($options[ 'sb_instagram_custom_js' ]) ? $sb_instagram_custom_js = trim($options['sb_instagram_custom_js']) : $sb_instagram_custom_js = ''; echo ''; echo "\r\n"; echo ''; echo "\r\n"; } add_action( 'wp_footer', 'sb_instagram_custom_js' ); add_action( 'wp_footer', function() { if (is_user_logged_in()) { $current_user = wp_get_current_user(); if (user_can($current_user, 'administrator')) { InstagramFeed\Admin\SBI_Callout::print_callout(); } } }); //Custom CSS add_action( 'wp_head', 'sb_instagram_custom_css' ); function sb_instagram_custom_css() { $options = get_option( 'sb_instagram_settings', array() ); isset($options[ 'sb_instagram_custom_css' ]) ? $sb_instagram_custom_css = trim($options['sb_instagram_custom_css']) : $sb_instagram_custom_css = ''; //Show CSS if an admin (so can see Hide Photos link), if including Custom CSS or if hiding some photos ( current_user_can( 'edit_posts' ) || !empty($sb_instagram_custom_css) ) ? $sbi_show_css = true : $sbi_show_css = false; if( $sbi_show_css ) echo ''; if( $sbi_show_css ) echo "\r\n"; if( $sbi_show_css ) echo ''; if( $sbi_show_css ) echo "\r\n"; } /** * Used to change the number of posts in the api request. Useful for filtered posts * or special caching situations. * * @param int $num * @param array $settings * * @return int */ function sbi_raise_num_in_request( $num, $settings ) { if ( $settings['sortby'] === 'random' ) { if ( $num > 5 ) { return min( $num * 4, 100 ); } else { return 20; } } return $num; } add_filter( 'sbi_num_in_request', 'sbi_raise_num_in_request', 5, 2 ); /** * Load the critical notice for logged in users. */ function sbi_critical_error_notice() { // Don't do anything for guests. if ( ! is_user_logged_in() ) { return; } // Only show this to users who are not tracked. if ( ! current_user_can( 'manage_instagram_feed_options' ) ) { return; } global $sb_instagram_posts_manager; if ( ! $sb_instagram_posts_manager->are_critical_errors() ) { return; } // Don't show if already dismissed. if ( get_option( 'sbi_dismiss_critical_notice', false ) ) { return; } $db_settings = sbi_get_database_settings(); if ( isset( $db_settings['disable_admin_notice'] ) && ($db_settings['disable_admin_notice'] === 'on' || $db_settings['disable_admin_notice'] === true) ) { return; } ?>
Instagram Feed icon

', '' ); ?>

×
'; $header_from = "From: " . $email_from; $headers = array( 'Content-Type: text/html; charset=utf-8', $header_from ); $header_image = SBI_PLUGIN_URL . 'img/balloon-120.png'; $link = admin_url( 'admin.php?page=sbi-settings' ); //&tab=customize-advanced $footer_link = admin_url('admin.php?page=sbi-settings&flag=emails'); $is_expiration_notice = false; if ( isset( $options['connected_accounts'] ) ) { foreach ( $options['connected_accounts'] as $account ) { if ( $account['type'] === 'basic' && isset( $account['private'] ) && sbi_private_account_near_expiration( $account ) ) { $is_expiration_notice = true; } } } if ( ! $is_expiration_notice ) { $title = sprintf( __( 'Instagram Feed Report for %s', 'instagram-feed' ), str_replace( array( 'http://', 'https://' ), '', home_url() ) ); $bold = __( 'There\'s an Issue with an Instagram Feed on Your Website', 'instagram-feed' ); $details = '

' . __( 'An Instagram feed on your website is currently unable to connect to Instagram to retrieve new posts. Don\'t worry, your feed is still being displayed using a cached version, but is no longer able to display new posts.', 'instagram-feed' ) . '

'; $details .= '

' . sprintf( __( 'This is caused by an issue with your Instagram account connecting to the Instagram API. For information on the exact issue and directions on how to resolve it, please visit the %sInstagram Feed settings page%s on your website.', 'instagram-feed' ), '', '' ). '

'; } else { $title = __( 'Your Private Instagram Feed Account Needs to be Reauthenticated', 'instagram-feed' ); $bold = __( 'Access Token Refresh Needed', 'instagram-feed' ); $details = '

' . __( 'As your Instagram account is set to be "Private", Instagram requires that you reauthenticate your account every 60 days. This a courtesy email to let you know that you need to take action to allow the Instagram feed on your website to continue updating. If you don\'t refresh your account, then a backup cache will be displayed instead.', 'instagram-feed' ) . '

'; $details .= '

' . sprintf( __( 'To prevent your account expiring every 60 days %sswitch your account to be public%s. For more information and to refresh your account, click here to visit the %sInstagram Feed settings page%s on your website.', 'instagram-feed' ), '', '', '', '' ). '

'; } $message_content = '
' . $bold . '
' . $details; include_once SBI_PLUGIN_DIR . 'inc/class-sb-instagram-education.php'; $educator = new SB_Instagram_Education(); $dyk_message = $educator->dyk_display(); ob_start(); include SBI_PLUGIN_DIR . 'inc/email.php'; $email_body = ob_get_contents(); ob_get_clean(); $sent = wp_mail( $to_array, $title, $email_body, $headers ); return $sent; } function sbi_maybe_send_feed_issue_email() { global $sb_instagram_posts_manager; if ( ! $sb_instagram_posts_manager->are_critical_errors() ) { return; } $options = get_option('sb_instagram_settings' ); if ( isset( $options['enable_email_report'] ) && empty( $options['enable_email_report'] ) ) { return; } sbi_send_report_email(); } add_action( 'sb_instagram_feed_issue_email', 'sbi_maybe_send_feed_issue_email' ); function sbi_update_option( $option_name, $option_value, $autoload = true ) { return update_option( $option_name, $option_value, $autoload = true ); } function sbi_get_option( $option_name, $default ) { return get_option( $option_name, $default ); } function sbi_is_pro_version() { return ! defined( 'SBI_PLUGIN_NAME' ) || SBI_PLUGIN_NAME !== 'Instagram Feed Free'; } function sbi_defaults() { $defaults = array( 'sb_instagram_at' => '', 'sb_instagram_user_id' => '', 'sb_instagram_preserve_settings' => '', 'sb_instagram_ajax_theme' => false, 'sb_instagram_disable_resize' => false, 'image_format' => 'webp', 'sb_instagram_cache_time' => 1, 'sb_instagram_cache_time_unit' => 'hours', 'sbi_caching_type' => 'background', 'sbi_cache_cron_interval' => '12hours', 'sbi_cache_cron_time' => '1', 'sbi_cache_cron_am_pm' => 'am', 'sb_instagram_width' => '100', 'sb_instagram_width_unit' => '%', 'sb_instagram_feed_width_resp' => false, 'sb_instagram_height' => '', 'sb_instagram_num' => '20', 'sb_instagram_height_unit' => '', 'sb_instagram_cols' => '4', 'sb_instagram_disable_mobile' => false, 'sb_instagram_image_padding' => '5', 'sb_instagram_image_padding_unit' => 'px', 'sb_instagram_sort' => 'none', 'sb_instagram_background' => '', 'sb_instagram_show_btn' => true, 'sb_instagram_btn_background' => '', 'sb_instagram_btn_text_color' => '', 'sb_instagram_btn_text' => __( 'Load More...', 'instagram-feed' ), 'sb_instagram_image_res' => 'auto', 'sb_instagram_lightbox_comments' => true, 'sb_instagram_num_comments' => 20, 'sb_instagram_show_bio' => true, 'sb_instagram_show_followers' => true, //Header 'sb_instagram_show_header' => true, 'sb_instagram_header_size' => 'small', 'sb_instagram_header_color' => '', 'sb_instagram_stories' => true, 'sb_instagram_stories_time' => 5000, //Follow button 'sb_instagram_show_follow_btn' => true, 'sb_instagram_folow_btn_background' => '', 'sb_instagram_follow_btn_text_color' => '', 'sb_instagram_follow_btn_text' => __( 'Follow on Instagram', 'instagram-feed' ), //Misc 'sb_instagram_custom_css' => '', 'sb_instagram_custom_js' => '', 'sb_instagram_cron' => 'no', 'sb_instagram_backup' => true, 'sb_ajax_initial' => false, 'enqueue_css_in_shortcode' => false, 'enqueue_js_in_head' => false, 'disable_js_image_loading' => false, 'disable_admin_notice' => false, 'enable_email_report' => true, 'email_notification' => 'monday', 'email_notification_addresses' => get_option( 'admin_email' ), 'sb_instagram_disable_mob_swipe' => false, 'sb_instagram_disable_awesome' => false, 'sb_instagram_disable_font' => false, 'gdpr' => 'auto', 'enqueue_legacy_css' => false, ); return $defaults; } function sbi_doing_customizer( $settings ) { return ! empty( $settings['customizer'] ) && $settings['customizer'] == true; } function sbi_header_html( $settings, $header_data, $location = 'inside' ) { $customizer = sbi_doing_customizer( $settings ); if ( ! $customizer && ($location === 'inside' && $settings['headeroutside']) ) { return; } elseif ( ! $customizer && ($location === 'outside' && ! $settings['headeroutside']) ) { return; } elseif ( ! $customizer && empty( $header_data ) ) { return; } if ( $location === 'inside' ) { $settings['vue_args'] = [ 'condition' => ' && !$parent.valueIsEnabled($parent.customizerFeedData.settings.headeroutside)' ]; } else { $settings['vue_args'] = [ 'condition' => ' && $parent.valueIsEnabled($parent.customizerFeedData.settings.headeroutside)' ]; } include sbi_get_feed_template_part( 'header', $settings ); } /** * Check if there are critical errors. * * @return bool */ function sbi_has_critical_errors() { return Util::sbi_has_admin_errors(); } add_filter( 'sb_instagram_feed_has_admin_errors', 'sbi_has_critical_errors' );instagram-feed/inc/Helpers/SB_Instagram_Tracking.php000064400000027053151435171370016467 0ustar00Name; $data['themeversion'] = $theme_data->Version; $data['settings'] = array(); $data['pro'] = (int) sbi_is_pro_version(); $data['sites'] = $count_b; $data['usagetracking'] = get_option( 'sbi_usage_tracking_config', false ); $num_users = function_exists( 'count_users' ) ? count_users() : 'Not Set'; $data['usercount'] = is_array( $num_users ) ? $num_users['total_users'] : 1; $data['timezoneoffset'] = date( 'P' ); $settings_to_send = array(); $raw_settings = get_option( 'sb_instagram_settings', array() ); $feeds = SBI_Db::feeds_query(); $feed_settings = []; if ( ! empty( $feeds ) ) { //recursive json decode $feed_settings = array_map( static function($item) { return json_decode($item, true); }, json_decode($feeds[0]['settings'], true)); //map array values to key => value pairs in the $feed_settings array array_walk($feed_settings, static function($value, $key) use(&$feed_settings) { if(is_array($value)) { unset($feed_settings[$key]); foreach($value as $value_key => $value_item) { $feed_settings[$key . '_' . $value_key] = $value_item; } } }, []); } $settings_to_send = array_merge($settings_to_send, $feed_settings); $con_bus_accounts = 0; $recently_searched_hashtags = 0; $access_tokens_tried = array(); $sources = SBI_Db::source_query(); if ( !empty($sources) ) { $sources = SBI_Source::convert_sources_to_connected_accounts( $sources ); foreach ( $sources as $source ) { if ( isset( $source['account_type'] ) && $source['account_type'] === 'business' ) { $con_bus_accounts++; $source['type'] = $source['account_type']; if ( ! in_array( $source['access_token'], $access_tokens_tried, true ) && class_exists( 'SB_Instagram_API_Connect' ) ) { $access_tokens_tried[] = $source['access_token']; $connection = new \SB_Instagram_API_Connect( $source, 'recently_searched_hashtags', array( 'hashtag' => '' ) ); $connection->connect(); $recently_searched_data = ! $connection->is_wp_error() ? $connection->get_data() : false; $num_hashatags_searched = $recently_searched_data && isset( $recently_searched_data ) && ! isset( $recently_searched_data['data'] ) && is_array( $recently_searched_data ) ? count( $recently_searched_data ) : 0; $recently_searched_hashtags = $recently_searched_hashtags + $num_hashatags_searched; } } } } $settings_to_send['business_accounts'] = $con_bus_accounts; $settings_to_send['recently_searched_hashtags'] = $recently_searched_hashtags; $sbi_cache = new \SB_Instagram_Cache(null); $settings_to_send['num_found_feed_caches'] = (int)$sbi_cache->get_cache_count(); $settings_to_send['recently_requested_caches'] = (int)$sbi_cache->get_cache_count(true); $settings_to_send['custom_header_template'] = '' !== locate_template( 'sbi/header.php', false, false ) ? 1 : 0; $settings_to_send['custom_header_boxed_template'] = '' !== locate_template( 'sbi/header-boxed.php', false, false ) ? 1 : 0; $settings_to_send['custom_header_generic_template'] = '' !== locate_template( 'sbi/header-generic.php', false, false ) ? 1 : 0; $settings_to_send['custom_item_template'] = '' !== locate_template( 'sbi/item.php', false, false ) ? 1 : 0; $settings_to_send['custom_footer_template'] = '' !== locate_template( 'sbi/footer.php', false, false ) ? 1 : 0; $settings_to_send['custom_feed_template'] = '' !== locate_template( 'sbi/feed.php', false, false ) ? 1 : 0; $settings_to_send['num_found_feeds'] = count($feeds); $sbi_current_white_names = get_option( 'sb_instagram_white_list_names', array() ); if ( empty( $sbi_current_white_names ) ) { $settings_to_send['num_white_lists'] = 0; } else { $settings_to_send['num_white_lists'] = count( $sbi_current_white_names ); } $data['settings'] = $settings_to_send; // Retrieve current plugin information if ( ! function_exists( 'get_plugins' ) ) { include ABSPATH . '/wp-admin/includes/plugin.php'; } $plugins = get_plugins(); $active_plugins = get_option( 'active_plugins', array() ); $plugins_to_send = array(); foreach ( $plugins as $plugin_path => $plugin ) { // If the plugin isn't active, don't show it. if ( ! in_array( $plugin_path, $active_plugins ) ) { continue; } $plugins_to_send[] = $plugin['Name']; } $data['active_plugins'] = $plugins_to_send; $data['locale'] = get_locale(); return $data; } public function send_checkin( $override = false, $ignore_last_checkin = false ) { $home_url = trailingslashit( home_url() ); if ( strpos( $home_url, 'smashballoon.com' ) !== false ) { return false; } if ( ! $this->tracking_allowed() && ! $override ) { return false; } // Send a maximum of once per week $usage_tracking = get_option( 'sbi_usage_tracking', array( 'last_send' => 0, 'enabled' => sbi_is_pro_version(), ) ); if ( is_numeric( $usage_tracking['last_send'] ) && $usage_tracking['last_send'] > strtotime( '-1 week' ) && ! $ignore_last_checkin ) { return false; } $request = wp_remote_post( 'https://usage.smashballoon.com/v1/checkin/', array( 'method' => 'POST', 'timeout' => 5, 'redirection' => 5, 'httpversion' => '1.1', 'blocking' => false, 'body' => $this->get_data(), 'user-agent' => 'MI/' . SBIVER . '; ' . get_bloginfo( 'url' ), ) ); // If we have completed successfully, recheck in 1 week $usage_tracking['last_send'] = time(); update_option( 'sbi_usage_tracking', $usage_tracking, false ); return true; } private function tracking_allowed() { $usage_tracking = get_option( 'sbi_usage_tracking', array( 'last_send' => 0, 'enabled' => sbi_is_pro_version(), ) ); $tracking_allowed = isset( $usage_tracking['enabled'] ) ? $usage_tracking['enabled'] : sbi_is_pro_version(); return $tracking_allowed; } public function schedule_send() { if ( ! wp_next_scheduled( 'sbi_usage_tracking_cron' ) ) { $tracking = array(); $tracking['day'] = rand( 0, 6 ); $tracking['hour'] = rand( 0, 23 ); $tracking['minute'] = rand( 0, 59 ); $tracking['second'] = rand( 0, 59 ); $tracking['offset'] = ( $tracking['day'] * DAY_IN_SECONDS ) + ( $tracking['hour'] * HOUR_IN_SECONDS ) + ( $tracking['minute'] * MINUTE_IN_SECONDS ) + $tracking['second']; $last_sunday = strtotime( 'next sunday' ) - ( 7 * DAY_IN_SECONDS ); if ( ( $last_sunday + $tracking['offset'] ) > time() + 6 * HOUR_IN_SECONDS ) { $tracking['initsend'] = $last_sunday + $tracking['offset']; } else { $tracking['initsend'] = strtotime( 'next sunday' ) + $tracking['offset']; } wp_schedule_event( $tracking['initsend'], 'weekly', 'sbi_usage_tracking_cron' ); update_option( 'sbi_usage_tracking_config', $tracking ); } } public function add_schedules( $schedules = array() ) { // Adds once weekly to the existing schedules. $schedules['weekly'] = array( 'interval' => 604800, 'display' => __( 'Once Weekly', 'instagram-feed' ), ); return $schedules; } } instagram-feed/inc/Helpers/Util.php000064400000016053151435171370013247 0ustar00 $is_facebook_installed, 'is_instagram_installed' => $is_instagram_installed, 'is_twitter_installed' => $is_twitter_installed, 'is_youtube_installed' => $is_youtube_installed, 'is_social_wall_installed' => $is_social_wall_installed, 'is_uncanny_automator_installed' => $is_uncanny_automator_installed, 'facebook_plugin' => $facebook_plugin, 'instagram_plugin' => $instagram_plugin, 'twitter_plugin' => $twitter_plugin, 'youtube_plugin' => $youtube_plugin, 'social_wall_plugin' => $social_wall_plugin, 'uncanny_automator_plugin' => $uncanny_automator_plugin, 'uncanny_automator_download_plugin' => $uncanny_automator_download_plugin, 'installed_plugins' => $installed_plugins, ); } /** * Get a valid timestamp to avoid Year 2038 problem. * * @param mixed $timestamp * @return int */ public static function get_valid_timestamp( $timestamp ) { // check if timestamp is negative and set to maximum value if ( $timestamp < 0 ) { $timestamp = 2147483647; } if( is_numeric( $timestamp ) ) { $timestamp = (int) $timestamp; return $timestamp; } $new_timestamp = new \DateTime( $timestamp ); $year = $new_timestamp->format( 'Y' ); if ( (int) $year >= 2038 ) { $new_timestamp->setDate( 2037, 12, 30 )->setTime( 00, 00, 00 ); $timestamp = $new_timestamp->getTimestamp(); } else { $timestamp = strtotime( $timestamp ); } return $timestamp; } /** * Checks if the user has custom templates, CSS or JS added * * @return bool * @since 6.3 */ public static function sbi_has_custom_templates() { // Check if the user has sbi custom templates in their theme $templates = array( 'feed.php', 'footer.php', 'header.php', 'item.php', ); foreach ( $templates as $template ) { if ( locate_template( 'sbi/' . $template ) ) { return true; } } // Check if the user has custom CSS and or JS added in the settings $settings = get_option( 'sb_instagram_settings', array() ); if ( isset( $settings['sb_instagram_custom_css'] ) && ! empty( $settings['sb_instagram_custom_css'] ) ) { return true; } if ( isset( $settings['sb_instagram_custom_js'] ) && ! empty( $settings['sb_instagram_custom_js'] ) ) { return true; } return false; } /** * Checks if the user has custom templates, CSS or JS added and if they have dismissed the notice * * @return bool * @since 6.3 */ public static function sbi_show_legacy_css_settings() { $show_legacy_css_settings = false; $sbi_statuses = get_option( 'sbi_statuses', array() ); if ( ( isset( $sbi_statuses['custom_templates_notice'] ) && self::sbi_has_custom_templates() ) || self::sbi_legacy_css_enabled() ) { $show_legacy_css_settings = true; } $show_legacy_css_settings = apply_filters( 'sbi_show_legacy_css_settings', $show_legacy_css_settings ); return $show_legacy_css_settings; } /** * Checks if the user has legacy CSS enabled * * @return bool * @since 6.3 */ public static function sbi_legacy_css_enabled() { $legacy_css_enabled = false; $settings = get_option( 'sb_instagram_settings', array() ); if ( isset( $settings['enqueue_legacy_css'] ) && $settings['enqueue_legacy_css'] ) { $legacy_css_enabled = true; } $legacy_css_enabled = apply_filters( 'sbi_legacy_css_enabled', $legacy_css_enabled ); return $legacy_css_enabled; } /** * Checks if sb_instagram_posts_manager errors exists. * * @return bool */ public static function sbi_has_admin_errors() { global $sb_instagram_posts_manager; $are_critical_errors = $sb_instagram_posts_manager->are_critical_errors(); if ( $are_critical_errors ) { return true; } $errors = $sb_instagram_posts_manager->get_errors(); if( ! empty( $errors ) ) { foreach ( $errors as $type => $error ) { if ( in_array( $type, array( 'database_create', 'upload_dir', 'unused_feed', 'platform_data_deleted' ) ) && ! empty( $error ) ) { return true; } } } return false; } }instagram-feed/inc/class-sb-instagram-data-encryption.php000064400000010274151435171370017520 0ustar00key = $remote['key']; $this->salt = $remote['salt']; } else { $this->key = $this->get_default_key(); $this->salt = $this->get_default_salt(); } } /** * Encrypts a value. * * If a user-based key is set, that key is used. Otherwise the default key is used. * * @since 2.9.4/5.12.4 * * @param string $value Value to encrypt. * @return string|bool Encrypted value, or false on failure. */ public function encrypt( $value ) { if ( ! sbi_doing_openssl() ) { return $value; } $method = 'aes-256-ctr'; $ivlen = openssl_cipher_iv_length( $method ); $iv = openssl_random_pseudo_bytes( $ivlen ); $raw_value = openssl_encrypt( $value . $this->salt, $method, $this->key, 0, $iv ); if ( ! $raw_value ) { return false; } return base64_encode( $iv . $raw_value ); } /** * Decrypts a value. * * If a user-based key is set, that key is used. Otherwise the default key is used. * * @since 2.9.4/5.12.4 * * @param string $raw_value Value to decrypt. * @return string|bool Decrypted value, or false on failure. */ public function decrypt( $raw_value ) { if ( ! sbi_doing_openssl() ) { return $raw_value; } $raw_value = base64_decode( $raw_value, true ); $method = 'aes-256-ctr'; $ivlen = openssl_cipher_iv_length( $method ); $iv = substr( $raw_value, 0, $ivlen ); $raw_value = substr( $raw_value, $ivlen ); $value = openssl_decrypt( $raw_value, $method, $this->key, 0, $iv ); if ( ! $value || substr( $value, - strlen( $this->salt ) ) !== $this->salt ) { return false; } return substr( $value, 0, - strlen( $this->salt ) ); } /** * Encrypts a value that may already be encrypted. * * If a user-based key is set, that key is used. Otherwise the default key is used. * * @since 6.0 * * @param string $raw_value Value to encrypt. * @return string|bool encrypted value, or false on failure. */ public function maybe_encrypt( $raw_value ) { $maybe_decrypted = $this->decrypt( $raw_value ); if ( $maybe_decrypted ) { return $this->encrypt( $maybe_decrypted ); } return $this->encrypt( $raw_value ); } /** * Uses a raw value and attempts to decrypt it * * @since 6.0.8 * * @param $value * @return bool|string */ public function maybe_decrypt( $value ) { if ( ! is_string( $value ) ) { return $value; } if ( strpos( $value, '{' ) === 0 ) { return $value; } $decrypted = $this->decrypt( $value ); if ( ! $decrypted ) { return $value; } return $decrypted; } /** * Gets the default encryption key to use. * * @since 2.9.4/5.12.4 * * @return string Default (not user-based) encryption key. */ private function get_default_key() { if ( defined( 'SBI_ENCRYPTION_KEY' ) && '' !== SBI_ENCRYPTION_KEY ) { return SBI_ENCRYPTION_KEY; } if ( defined( 'LOGGED_IN_KEY' ) && '' !== LOGGED_IN_KEY ) { return LOGGED_IN_KEY; } // If this is reached, you're either not on a live site or have a serious security issue. return 'das-ist-kein-geheimer-schluessel'; } /** * Gets the default encryption salt to use. * * @since 2.9.4/5.12.4 * * @return string Encryption salt. */ private function get_default_salt() { if ( defined( 'SBI_ENCRYPTION_SALT' ) && '' !== SBI_ENCRYPTION_SALT ) { return SBI_ENCRYPTION_SALT; } if ( defined( 'LOGGED_IN_SALT' ) && '' !== LOGGED_IN_SALT ) { return LOGGED_IN_SALT; } // If this is reached, you're either not on a live site or have a serious security issue. return 'das-ist-kein-geheimes-salz'; } } instagram-feed/inc/class-sb-instagram-gdpr-integrations.php000064400000015065151435171370020062 0ustar00=' ) ) ) { return 'Borlabs Cookie by Borlabs'; } return false; } /** * GDPR features can be added automatically, forced enabled, * or forced disabled. * * @param $settings * * @return bool */ public static function doing_gdpr( $settings ) { $gdpr = isset( $settings['gdpr'] ) ? $settings['gdpr'] : 'auto'; if ( $gdpr === 'no' ) { return false; } if ( $gdpr === 'yes' ) { return true; } return ( self::gdpr_plugins_active() !== false ); } public static function blocking_cdn( $settings ) { $gdpr = isset( $settings['gdpr'] ) ? $settings['gdpr'] : 'auto'; if ( $gdpr === 'no' ) { return false; } if ( $gdpr === 'yes' ) { return true; } $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( $sbi_statuses_option['gdpr']['from_update_success'] ) { return ( self::gdpr_plugins_active() !== false ); } return false; } /** * GDPR features are reliant on the image resizing features * * @param bool $retest * * @return bool */ public static function gdpr_tests_successful( $retest = false ) { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( ! isset( $sbi_statuses_option['gdpr']['image_editor'] ) || $retest ) { $test_image = trailingslashit( SBI_PLUGIN_URL ) . 'img/placeholder.png'; $image_editor = wp_get_image_editor( $test_image ); $sbi_statuses_option['gdpr']['image_editor'] = false; // not uncommon for the image editor to not work using it this way if ( ! is_wp_error( $image_editor ) ) { $sbi_statuses_option['gdpr']['image_editor'] = true; } else { $test_image = 'https://plugin.smashballoon.com/editor-test.png'; $image_editor = wp_get_image_editor( $test_image ); if ( ! is_wp_error( $image_editor ) ) { $sbi_statuses_option['gdpr']['image_editor'] = true; } else { if ( ! function_exists( 'download_url' ) ) { include_once ABSPATH . 'wp-admin/includes/file.php'; } // Set a timeout for downloading the image $timeout_seconds = 5; // Download file to temp dir. $temp_file = download_url( $test_image, $timeout_seconds ); $image_editor = wp_get_image_editor( $temp_file ); if ( ! is_wp_error( $image_editor ) ) { $sbi_statuses_option['gdpr']['image_editor'] = true; } @unlink( $temp_file ); } } $upload = wp_upload_dir(); $upload_dir = $upload['basedir']; $upload_dir = trailingslashit( $upload_dir ) . SBI_UPLOADS_NAME; if ( file_exists( $upload_dir ) ) { $sbi_statuses_option['gdpr']['upload_dir'] = true; } else { $sbi_statuses_option['gdpr']['upload_dir'] = false; } global $wpdb; $table_name = $wpdb->prefix . SBI_INSTAGRAM_POSTS_TYPE; $sbi_statuses_option['gdpr']['tables'] = true; if ( $wpdb->get_var( "show tables like '$table_name'" ) !== $table_name ) { $sbi_statuses_option['gdpr']['tables'] = false; } $feeds_posts_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEEDS_POSTS; if ( $wpdb->get_var( "show tables like '$feeds_posts_table_name'" ) !== $feeds_posts_table_name ) { $sbi_statuses_option['gdpr']['tables'] = false; } update_option( 'sbi_statuses', $sbi_statuses_option ); } if ( $retest ) { global $sb_instagram_posts_manager; $sb_instagram_posts_manager->add_action_log( 'Retesting GDPR features.' ); } if ( ! $sbi_statuses_option['gdpr']['upload_dir'] || ! $sbi_statuses_option['gdpr']['tables'] || ! $sbi_statuses_option['gdpr']['image_editor'] ) { return false; } return true; } public static function gdpr_tests_error_message() { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $errors = array(); if ( ! $sbi_statuses_option['gdpr']['upload_dir'] ) { $errors[] = __( 'A folder for storing resized images was not successfully created.', 'instagram-feed' ); } if ( ! $sbi_statuses_option['gdpr']['tables'] ) { $errors[] = __( 'Tables used for storing information about resized images were not successfully created.', 'instagram-feed' ); } if ( ! $sbi_statuses_option['gdpr']['image_editor'] ) { $errors[] = sprintf( __( 'An image editor is not available on your server. Instagram Feed is unable to create local resized images. See %1$sthis FAQ%2$s for more information', 'instagram-feed' ), '', '' ); } if ( isset( $_GET['tab'] ) && $_GET['tab'] !== 'support' ) { $tab = sbi_is_pro_version() ? 'customize-advanced' : 'customize'; $errors[] = '' . __( 'Retest', 'instagram-feed' ) . ''; } return implode( '
', $errors ); } public static function statuses() { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $return = isset( $sbi_statuses_option['gdpr'] ) ? $sbi_statuses_option['gdpr'] : array(); return $return; } } instagram-feed/inc/Email_Notification.php000064400000003500151435171370014456 0ustar00'; $header_from = "From: " . $email_from; $headers = array( 'Content-Type: text/html; charset=utf-8', $header_from ); $header_image = SBI_PLUGIN_URL . 'img/balloon-120.png'; $footer_link = admin_url('admin.php?page=sbi-settings&view=advanced&flag=emails'); $message_content = '
' . $bold . '
' . $details; include_once SBI_PLUGIN_DIR . 'inc/class-sb-instagram-education.php'; $educator = new SB_Instagram_Education(); $dyk_message = $educator->dyk_display(); ob_start(); include SBI_PLUGIN_DIR . 'inc/email.php'; $email_body = ob_get_contents(); ob_get_clean(); return wp_mail( $valid_emails, $title, $email_body, $headers ); } }instagram-feed/inc/Builder/SBI_Feed_Saver_Manager.php000064400000056525151435171370016460 0ustar00 $source_ids ); $source_query = SBI_Db::source_query( $args ); $sources = array(); if ( ! empty( $source_query ) ) { foreach ( $source_query as $source ) { $sources[] = $source['account_id']; } } $settings_data['sources'] = $sources; if ( $feed_id !== 'legacy' ) { unset( $settings_data['sources'] ); $settings_data['id'] = implode(',', $sources ); } else { if ( isset( $settings_data['feed'] ) ) { unset( $settings_data['feed'] ); } $settings_data['id'] = implode(',', $source_ids ); \SB_Instagram_Cache::clear_legacy(); } $feed_saver = new SBI_Feed_Saver( $feed_id ); $feed_saver->set_feed_name( $feed_name ); $settings_data = self::filter_save_data( $settings_data ); $feed_saver->set_data( $settings_data ); $return = array( 'success' => false, 'feed_id' => false ); if ( $feed_saver->update_or_insert() ) { $return = array( 'success' => true, 'feed_id' => $feed_saver->get_feed_id() ); if($is_new_feed){ echo wp_json_encode( $return ); wp_die(); } else{ $feed_cache = new \SB_Instagram_Cache( $feed_id ); $feed_cache->clear( 'all' ); $feed_cache->clear( 'posts' ); echo wp_json_encode( $return ); wp_die(); } } } /** * Retrieve comments AJAX call * * @since 6.0 */ public static function retrieve_comments() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } wp_send_json_success(); } /** * Clear comments cache AJAX call * * @since 6.0 */ public static function clear_comments_cache() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $manager = new \SB_Instagram_Data_Manager(); $manager->delete_comments_data(); echo "success"; wp_die(); } /** * Used in an AJAX call to delete feeds from the Database * $_POST data. * * @since 6.0 */ public static function delete_feed() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if ( ! empty( $_POST['feeds_ids'] ) && is_array( $_POST['feeds_ids'] )) { SBI_Db::delete_feeds_query( $_POST['feeds_ids'] ); } } /** * Used in an AJAX call to delete Soureces from the Database * $_POST data. * * @since 6.0 */ public static function delete_source() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if ( ! empty( $_POST['source_id'] ) ) { if ( isset( $_POST['username'] ) && ! empty( $_POST['username'] ) ) { $username = sanitize_text_field( $_POST['username'] ); $args = array( 'username' => $username ); $source_query = SBI_Db::source_query( $args ); \SB_Instagram_Connected_Account::delete_local_avatar( $source_query['username'] ); } $source_id = absint( $_POST['source_id'] ); SBI_Db::delete_source_query( $source_id ); } } public static function recache_feed() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $feed_id = sanitize_key( $_POST['feedID'] ); $feed_cache = new \SB_Instagram_Cache( $feed_id ); $feed_cache->clear( 'all' ); $feed_cache->clear( 'posts' ); } /** * Used in an AJAX call to delete a feed cache from the Database * $_POST data. * * @since 6.0 */ public static function clear_single_feed_cache() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $feed_id = sanitize_key( $_POST['feedID'] ); if ( $feed_id === 'legacy' ) { \SB_Instagram_Cache::clear_legacy( true ); } else { $feed_cache = new \SB_Instagram_Cache( $feed_id ); $feed_cache->clear( 'all' ); $feed_cache->clear( 'posts' ); } SBI_Feed_Saver_Manager::feed_customizer_fly_preview(); wp_die(); } /** * Used in an AJAX call to duplicate a Feed * $_POST data. * * @since 6.0 */ public static function duplicate_feed() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if ( ! empty( $_POST['feed_id'] ) ) { SBI_Db::duplicate_feed_query( sanitize_key( $_POST['feed_id'] ) ); } } /** * Import a feed from JSON data * * @since 6.0 */ public static function importer() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if ( ! empty( $_POST['feed_json'] ) && strpos( $_POST['feed_json'], '{' ) === 0 ) { echo json_encode( SBI_Feed_Saver_Manager::import_feed( stripslashes( $_POST['feed_json'] ) ) ); } else { echo json_encode( array( 'success' => false, 'message' => __( 'Invalid JSON. Must have brackets "{}"', 'instagram-feed' ) ) ); } wp_die(); } /** * Used To check if it's customizer Screens * Returns Feed info or false! * * @param bool $include_comments * * @return array|bool * * @since 6.0 */ public static function maybe_feed_customizer_data( $include_comments = false ) { if ( isset( $_GET['feed_id'] ) ){ $feed_id = sanitize_key( $_GET['feed_id'] ); $feed_saver = new SBI_Feed_Saver( $feed_id ); $settings = $feed_saver->get_feed_settings(); $feed_db_data = $feed_saver->get_feed_db_data(); if ( $settings !== false ){ $return = array( 'feed_info' => $feed_db_data, 'headerData' => $feed_db_data, 'settings' => $settings, 'posts' => array() ); if ( intval( $feed_id ) > 0 ) { $instagram_feed_settings = new \SB_Instagram_Settings( array( 'feed' => $feed_id, 'customizer' => true ), sbi_defaults() ); } else { $instagram_feed_settings = new \SB_Instagram_Settings( array(), sbi_get_database_settings() ); } $instagram_feed_settings->set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $transient_name = $instagram_feed_settings->get_transient_name(); $settings = $instagram_feed_settings->get_settings(); $feed_type_and_terms = $instagram_feed_settings->get_feed_type_and_terms(); if ( $feed_id === 'legacy' ) { $transient_name = 'sbi_*legacy'; } $instagram_feed = new \SB_Instagram_Feed( $transient_name ); $instagram_feed->set_cache( $instagram_feed_settings->get_cache_time_in_seconds(), $settings ); if ( $instagram_feed->regular_cache_exists() ) { $instagram_feed->set_post_data_from_cache(); if ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { while ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } $instagram_feed->cache_feed_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } } else { while ( $instagram_feed->need_posts( $settings['num'] ) && $instagram_feed->can_get_more_posts() ) { $instagram_feed->add_remote_posts( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } if ( ! $instagram_feed->should_use_backup() ) { $instagram_feed->cache_feed_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); } elseif ( $instagram_feed->should_cache_error() ) { $cache_time = min( $instagram_feed_settings->get_cache_time_in_seconds(), 15 * 60 ); $instagram_feed->cache_feed_data( $cache_time, false ); } } $return['posts'] = $instagram_feed->get_post_data(); $instagram_feed->set_remote_header_data( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); $header_data = $instagram_feed->get_header_data(); if ( sbi_is_pro_version() && $settings['stories'] && ! empty( $header_data ) ) { $instagram_feed->set_remote_stories_data( $settings, $feed_type_and_terms, $instagram_feed_settings->get_connected_accounts_in_feed() ); } $instagram_feed->cache_header_data( $instagram_feed_settings->get_cache_time_in_seconds(), $settings['backup_cache_enabled'] ); if ( ! empty( $header_data ) && \SB_Instagram_Connected_Account::local_avatar_exists( $header_data['username'] ) ) { $header_data['local_avatar_url'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $header_data['username'] ); $header_data['local_avatar'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $header_data['username'] ); } else { $header_data['local_avatar'] = false; } $header_data['local_avatar'] = false; $return['header'] = $header_data; $return['headerData'] = $header_data; return $return; } } return false; } /** * Used to retrieve Feed Posts for preview screen * Returns Feed info or false! * * * * @since 6.0 */ public static function feed_customizer_fly_preview() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if( isset( $_POST['feedID'] ) && isset( $_POST['previewSettings'] ) ){ $feed_id = sanitize_key( $_POST['feedID'] ); $preview_settings = $_POST['previewSettings']; $feed_name = sanitize_text_field( wp_unslash( $_POST['feedName'] ) ); if(isset($_POST['moderationShoppableMode']) && $_POST['moderationShoppableMode'] == true){ $preview_settings['num'] = 10; $preview_settings['layout'] = 'grid'; $preview_settings['cols'] = 4; $preview_settings['offset'] = intval($_POST['offset']) * 10; $preview_settings['enablemoderationmode'] = false; $preview_settings['shoppablelist'] = isset( $preview_settings['shoppablelist'] ) ? json_encode($preview_settings['shoppablelist']) : []; $preview_settings['moderationlist'] = isset( $preview_settings['moderationlist'] ) ? json_encode($preview_settings['moderationlist']) : []; } if ( $feed_id === 'legacy' ) { \SB_Instagram_Cache::clear_legacy( true ); } else { $feed_cache = new \SB_Instagram_Cache( $feed_id ); $feed_cache->clear( 'all' ); $feed_cache->clear( 'posts' ); } $feed_saver = new SBI_Feed_Saver( $feed_id ); $feed_saver->set_feed_name( $feed_name ); $feed_saver->set_data( $preview_settings ); $atts = SBI_Feed_Builder::add_customizer_att( [ 'feed' => $feed_id, 'customizer' => true ] ); if ( ! empty( $preview_settings['id'] ) ) { $preview_settings['id'] = implode( ',', $preview_settings['id'] ); if ( isset( $preview_settings['user'] ) ) { unset( $preview_settings['user'] ); } } $return['feed_html'] = display_instagram( $atts, $preview_settings ); echo $return['feed_html']; } wp_die(); } /** * Used in AJAX call to return settings for an existing feed. * * @since 6.0 */ public static function get_feed_settings() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $feed_id = ! empty( $_POST['feed_id'] ) ? sanitize_key( $_POST['feed_id'] ) : false; if ( ! $feed_id ) { wp_die( 'no feed id' ); } $feed_saver = new SBI_Feed_Saver( $feed_id ); $settings = $feed_saver->get_feed_settings(); $return = array( 'settings' => $settings, 'feed_html' => '' ); if ( isset( $_POST['include_post_set'] ) && ! empty( $_POST['include_post_set'] ) ) { $atts = SBI_Feed_Builder::add_customizer_att( [ 'feed' => $return['feed_id'] ] ); $return['feed_html'] = display_instagram( $atts ); } echo sbi_json_encode( $return ); wp_die(); } /** * Get a list of feeds with a limit and offset like a page * * @since 6.0 */ public static function get_feed_list_page() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $args = array( 'page' => (int)$_POST['page'] ); $feeds_data = SBI_Feed_Builder::get_feed_list($args); echo sbi_json_encode( $feeds_data ); wp_die(); } /** * Get a list of locations with a limit and offset like a page * * @since 6.0 */ public static function get_locations_page() { check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $args = array( 'page' => (int)$_POST['page'] ); if ( ! empty( $_POST['is_legacy'] ) ) { $args['feed_id'] = sanitize_key( $_POST['feed_id'] ); } else { $args['feed_id'] = '*' . (int)$_POST['feed_id']; } $feeds_data = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); if ( count( $feeds_data ) < SBI_Db::RESULTS_PER_PAGE ) { $args['html_location'] = array( 'footer', 'sidebar', 'header' ); $args['group_by'] = 'html_location'; $args['page'] = 1; $non_content_data = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $feeds_data = array_merge( $feeds_data, $non_content_data ); } echo sbi_json_encode( $feeds_data ); wp_die(); } /** * Return a single JSON string for importing a feed * * @param int $feed_id * * @return string * * @since 6.0 */ public static function get_export_json( $feed_id ) { $feed_saver = new SBI_Feed_Saver( $feed_id ); $settings = $feed_saver->get_feed_settings(); return sbi_json_encode( $settings ); } /** * All export strings for all feeds on the first 'page' * * @return array * * @since 6.0 */ public static function get_all_export_json() { $args = array( 'page' => 1 ); $feeds_data = SBI_Db::feeds_query( $args ); $return = array(); foreach ( $feeds_data as $single_feed ) { $return[ $single_feed['id'] ] = SBI_Feed_Saver_Manager::get_export_json( $single_feed['id'] ); } return $return; } /** * Use a JSON string to import a feed with settings and sources. The return * is whether or not the import was successful * * @param string $json * * @return array * * @since 6.0 */ public static function import_feed( $json ) { $settings_data = json_decode( $json, true ); $return = array( 'success' => false, 'message' => '' ); if ( empty( $settings_data['sources'] ) ) { $return['message'] = __( 'No feed source is included. Cannot upload feed.', 'instagram-feed' ); return $return; } $sources = $settings_data['sources']; unset( $settings_data['sources'] ); $settings_source = array(); foreach ( $sources as $source ) { if ( isset( $source['user_id'] ) ) { $source['account_id'] = $source['user_id']; $source['id'] = $source['user_id']; } if ( isset( $source['account_id'] ) ) { if ( isset( $source['record_id'] ) ) { unset( $source['record_id'] ); } $settings_source[] = $source['account_id']; // don't update or insert the access token if there is an API error if ( ! empty( $source['access_token'] ) && ! empty( $source['info'] ) ) { SBI_Source::update_or_insert( $source ); } } } $settings_data['sources'] = $settings_source; /* unset pro features if exists */ $settings_data = self::filter_save_data( $settings_data ); $feed_saver = new SBI_Feed_Saver( false ); $feed_saver->set_data( $settings_data ); if ( $feed_saver->update_or_insert() ) { $return = array( 'success' => true, 'feed_id' => $feed_saver->get_feed_id() ); return $return; } else { $return['message'] = __( 'Could not import feed. Please try again', 'instagram-feed' ); } return $return; } /** * Determines what table and sanitization should be used * when handling feed setting data. * * TODO: Add settings that need something other than sanitize_text_field * * @param string $key * * @return array * * @since 6.0 */ public static function get_data_type( $key ) { switch ( $key ) { case 'sources' : $return = array( 'table' => 'feed_settings', 'sanitization' => 'sanitize_text_field' ); break; case 'feed_title' : $return = array( 'table' => 'feeds', 'sanitization' => 'sanitize_text_field' ); break; case 'feed_name' : $return = array( 'table' => 'feeds', 'sanitization' => 'sanitize_text_field' ); break; case 'status' : $return = array( 'table' => 'feeds', 'sanitization' => 'sanitize_text_field' ); break; case 'author' : $return = array( 'table' => 'feeds', 'sanitization' => 'int' ); break; default: $return = array( 'table' => 'feed_settings', 'sanitization' => 'sanitize_text_field' ); break; } return $return; } /** * Uses the appropriate sanitization function and returns the result * for a value * * @param string $type * @param int|string $value * * @return int|string * * @since 6.0 */ public static function sanitize( $type, $value ) { switch ( $type ) { case 'int' : $return = intval( $value ); break; case 'boolean' : $return = self::cast_boolean($value); break; default: $return = sanitize_text_field( stripslashes($value) ); break; } return $return; } /** * Check if boolean * for a value * * @param string $type * @param int|string $value * * @return int|string * * @since 6.0 */ public static function is_boolean( $value ) { return ( $value === 'true' || $value === 'false' || is_bool($value) ) ? true : false; } public static function cast_boolean( $value ) { if($value === 'true' || $value === true || $value === 'on') return true; return false; } public static function filter_save_data( $save_data ) { if ( sbi_is_pro_version() ) { return $save_data; } $unsets = array( 'hoverdisplay', 'igtvposts', 'lightboxcomments', 'numcomments', 'stories', 'videosposts', 'videotypes', 'disablelightbox' ); foreach ( $unsets as $unset ) { if ( isset( $save_data[ $unset ] ) ) { unset( $save_data[ $unset ] ); } } return $save_data; } /** * Update Personal Account Info * Setting Avatar + Bio * * @return json * * @since 6.0.8 */ public static function sbi_update_personal_account(){ check_ajax_referer( 'sbi-admin' , 'nonce'); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if( isset( $_FILES['avatar']['tmp_name'] ) && isset( $_POST['username'] ) ) { $account_avatar = sanitize_text_field( $_FILES['avatar']['tmp_name'] ); $username = sanitize_text_field( $_POST['username'] ); $created = \SB_Instagram_Connected_Account::create_local_avatar( $username, $account_avatar ); \SB_Instagram_Connected_Account::update_local_avatar_status( $username, $created ); } if( isset( $_POST['bio'] ) && isset( $_POST['id'] ) ){ $account_bio = sanitize_text_field( stripslashes( $_POST['bio'] ) ); $id = sanitize_text_field( wp_unslash( $_POST['id'] ) ); SBI_Source::update_personal_account_bio( $id, $account_bio ); } $response = array( 'success' => true, 'sourcesList' => SBI_Feed_Builder::get_source_list() ); echo sbi_json_encode( $response ); wp_die(); } } instagram-feed/inc/Builder/SBI_Db.php000064400000060367151435171370013347 0ustar00prefix . 'sbi_sources'; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $page = 0; if ( isset( $args['page'] ) ) { $page = (int) $args['page'] - 1; unset( $args['page'] ); } $offset = max( 0, $page * 400 ); if ( empty( $args ) ) { $limit = 400; $sql = "SELECT s.id, s.account_id, s.account_type, s.privilege, s.access_token, s.username, s.info, s.error, s.expires, count(f.id) as used_in FROM $sources_table_name s LEFT JOIN $feeds_table_name f ON f.settings LIKE CONCAT('%', s.account_id, '%') GROUP BY s.id, s.account_id LIMIT $limit OFFSET $offset; "; $results = $wpdb->get_results( $sql, ARRAY_A ); if ( empty( $results ) ) { return array(); } $i = 0; foreach ( $results as $result ) { if ( (int) $result['used_in'] > 0 ) { $results[ $i ]['instances'] = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $feeds_table_name WHERE settings LIKE CONCAT('%', %s, '%') GROUP BY id LIMIT 100; ", $result['account_id'] ), ARRAY_A ); } $i++; } return $results; } if ( ! empty( $args['expiring'] ) ) { $sql = $wpdb->prepare( " SELECT * FROM $sources_table_name WHERE account_type = 'personal' AND expires < %s AND last_updated < %s ORDER BY expires ASC LIMIT 5; ", gmdate( 'Y-m-d H:i:s', time() + SBI_REFRESH_THRESHOLD_OFFSET ), gmdate( 'Y-m-d H:i:s', time() - SBI_MINIMUM_INTERVAL ) ); return $wpdb->get_results( $sql, ARRAY_A ); } if ( ! empty( $args['username'] ) ) { return $wpdb->get_results( $wpdb->prepare( " SELECT * FROM $sources_table_name WHERE username = %s; ", $args['username'] ), ARRAY_A ); } if ( isset( $args['access_token'] ) && ! isset( $args['id'] ) ) { return $wpdb->get_results( $wpdb->prepare( " SELECT * FROM $sources_table_name WHERE access_token = %s; ", $args['access_token'] ), ARRAY_A ); } if ( ! isset( $args['id'] ) ) { return false; } if ( is_array( $args['id'] ) ) { $id_array = array(); foreach ( $args['id'] as $id ) { $id_array[] = esc_sql( $id ); } } elseif ( strpos( $args['id'], ',' ) !== false ) { $id_array = explode( ',', str_replace( ' ', '', esc_sql( $args['id'] ) ) ); } if ( isset( $id_array ) ) { $id_string = "'" . implode( "' , '", array_map( 'esc_sql', $id_array ) ) . "'"; } if ( ! empty( $args['all_business'] ) ) { $id_string = empty( $id_string ) ? '0' : $id_string; $sql = " SELECT * FROM $sources_table_name WHERE account_id IN ($id_string) OR account_type = 'business' "; return $wpdb->get_results( $sql, ARRAY_A ); } $privilege = ''; if ( ! empty( $privilege ) ) { if ( isset( $id_string ) ) { $sql = $wpdb->prepare( " SELECT * FROM $sources_table_name WHERE account_id IN ($id_string) AND privilege = %s; ", $privilege ); } else { $sql = $wpdb->prepare( " SELECT * FROM $sources_table_name WHERE account_id = %s AND privilege = %s; ", $args['id'], $privilege ); } } else { if ( isset( $id_string ) ) { $sql = " SELECT * FROM $sources_table_name WHERE account_id IN ($id_string); "; } else { $sql = $wpdb->prepare( " SELECT * FROM $sources_table_name WHERE account_id = %s; ", $args['id'] ); } } return $wpdb->get_results( $sql, ARRAY_A ); } /** * Update a source (connected account) * * @param array $to_update * @param array $where_data * * @return false|int * * @since 6.0 */ public static function source_update( $to_update, $where_data ) { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; $encryption = new \SB_Instagram_Data_Encryption(); $data = array(); $where = array(); $format = array(); $where_format = array(); if ( isset( $to_update['type'] ) ) { $data['account_type'] = $to_update['type']; $format[] = '%s'; } if ( isset( $to_update['privilege'] ) ) { $data['privilege'] = $to_update['privilege']; $format[] = '%s'; } if ( isset( $to_update['id'] ) ) { $where['account_id'] = $to_update['id']; $where_format[] = '%s'; } if ( isset( $to_update['access_token'] ) ) { $data['access_token'] = $encryption->maybe_encrypt( $to_update['access_token'] ); $format[] = '%s'; } if ( isset( $to_update['username'] ) ) { $data['username'] = $to_update['username']; $format[] = '%s'; } if ( isset( $to_update['info'] ) ) { $data['info'] = $encryption->maybe_encrypt( $to_update['info'] ); $format[] = '%s'; } if ( isset( $to_update['error'] ) ) { $data['error'] = $to_update['error']; $format[] = '%s'; } if ( isset( $to_update['expires'] ) ) { $data['expires'] = $to_update['expires']; $format[] = '%s'; } if ( isset( $to_update['last_updated'] ) ) { $data['last_updated'] = $to_update['last_updated']; $format[] = '%s'; } if ( isset( $to_update['author'] ) ) { $data['author'] = $to_update['author']; $format[] = '%d'; } if ( isset( $where_data['type'] ) ) { $where['account_type'] = $where_data['type']; $where_format[] = '%s'; } if ( isset( $where_data['privilege'] ) ) { $where['privilege'] = $where_data['privilege']; $where_format[] = '%s'; } if ( isset( $where_data['author'] ) ) { $where['author'] = $where_data['author']; $where_format[] = '%d'; } if ( isset( $where_data['id'] ) ) { $where['account_id'] = $where_data['id']; $where_format[] = '%s'; } if ( isset( $where_data['record_id'] ) ) { $where['id'] = $where_data['record_id']; $where_format[] = '%d'; } $affected = $wpdb->update( $sources_table_name, $data, $where, $format, $where_format ); return $affected; } /** * New source (connected account) data is added to the * sbi_sources table and the new insert ID is returned * * @param array $to_insert * * @return false|int * * @since 6.0 */ public static function source_insert( $to_insert ) { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; $encryption = new \SB_Instagram_Data_Encryption(); $data = array(); $format = array(); if ( isset( $to_insert['id'] ) ) { $data['account_id'] = $to_insert['id']; $format[] = '%s'; } if ( isset( $to_insert['type'] ) ) { $data['account_type'] = $to_insert['type']; $format[] = '%s'; } else { $data['account_type'] = 'page'; $format[] = '%s'; } if ( isset( $to_insert['privilege'] ) ) { $data['privilege'] = $to_insert['privilege']; $format[] = '%s'; } if ( isset( $to_insert['access_token'] ) ) { $data['access_token'] = $encryption->maybe_encrypt( $to_insert['access_token'] ); $format[] = '%s'; } if ( isset( $to_insert['username'] ) ) { $data['username'] = $to_insert['username']; $format[] = '%s'; } if ( isset( $to_insert['info'] ) ) { $data['info'] = $encryption->maybe_encrypt( $to_insert['info'] ); $format[] = '%s'; } if ( isset( $to_insert['error'] ) ) { $data['error'] = $to_insert['error']; $format[] = '%s'; } if ( isset( $to_insert['expires'] ) ) { $data['expires'] = $to_insert['expires']; $format[] = '%s'; } else { $data['expires'] = '2037-12-30 00:00:00'; $format[] = '%s'; } $data['last_updated'] = gmdate( 'Y-m-d H:i:s' ); $format[] = '%s'; if ( isset( $to_insert['author'] ) ) { $data['author'] = $to_insert['author']; $format[] = '%d'; } else { $data['author'] = get_current_user_id(); $format[] = '%d'; } return $wpdb->insert( $sources_table_name, $data, $format ); } /** * Query the to get feeds list for Elementor * * @param bool $default - if true, add a default option. * @return array * * @since 6.0 */ public static function elementor_feeds_query($default = false) { global $wpdb; $feeds_elementor = array(); $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $feeds_list = $wpdb->get_results( " SELECT id, feed_name FROM $feeds_table_name; " ); if ( ! empty( $feeds_list ) ) { foreach ( $feeds_list as $feed ) { $feeds_elementor[ $feed->id ] = $feed->feed_name; } } if ( $default ){ $feeds_elementor[0] = esc_html__( 'Choose a Feed', 'instagram-feed' ); } return $feeds_elementor; } /** * Count the sbi_feeds table * * @return int * * @since 6.0 */ public static function feeds_count() { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $results = $wpdb->get_results( "SELECT COUNT(*) AS num_entries FROM $feeds_table_name", ARRAY_A ); return isset( $results[0]['num_entries'] ) ? (int) $results[0]['num_entries'] : 0; } /** * Query the sbi_feeds table * * @param array $args * * @return array|bool * * @since 6.0 */ public static function feeds_query( $args = array() ) { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $page = 0; if ( isset( $args['page'] ) ) { $page = (int) $args['page'] - 1; unset( $args['page'] ); } $offset = max( 0, $page * self::RESULTS_PER_PAGE ); if ( isset( $args['id'] ) ) { $sql = $wpdb->prepare( " SELECT * FROM $feeds_table_name WHERE id = %d; ", $args['id'] ); } else { $sql = $wpdb->prepare( " SELECT * FROM $feeds_table_name LIMIT %d OFFSET %d;", self::RESULTS_PER_PAGE, $offset ); } return $wpdb->get_results( $sql, ARRAY_A ); } /** * Update feed data in the sbi_feed table * * @param array $to_update * @param array $where_data * * @return false|int * * @since 6.0 */ public static function feeds_update( $to_update, $where_data ) { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $data = array(); $where = array(); $format = array(); foreach ( $to_update as $single_insert ) { if ( $single_insert['key'] ) { $data[ $single_insert['key'] ] = $single_insert['values'][0]; $format[] = '%s'; } } if ( isset( $where_data['id'] ) ) { $where['id'] = $where_data['id']; $where_format = array( '%d' ); } elseif ( isset( $where_data['feed_name'] ) ) { $where['feed_name'] = $where_data['feed_name']; $where_format = array( '%s' ); } else { return false; } $data['last_modified'] = gmdate( 'Y-m-d H:i:s' ); $format[] = '%s'; $affected = $wpdb->update( $feeds_table_name, $data, $where, $format, $where_format ); return $affected; } /** * New feed data is added to the sbi_feeds table and * the new insert ID is returned * * @param array $to_insert * * @return false|int * * @since 6.0 */ public static function feeds_insert( $to_insert ) { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $data = array(); $format = array(); foreach ( $to_insert as $single_insert ) { if ( $single_insert['key'] ) { $data[ $single_insert['key'] ] = $single_insert['values'][0]; $format[] = '%s'; } } $data['last_modified'] = gmdate( 'Y-m-d H:i:s' ); $format[] = '%s'; $data['author'] = get_current_user_id(); $format[] = '%d'; $wpdb->insert( $feeds_table_name, $data, $format ); return $wpdb->insert_id; } /** * Query the sbi_feeds table * Porcess to define the name of the feed when adding new * * @param string $sourcename * * @return array|bool * * @since 6.0 */ public static function feeds_query_name( $sourcename ) { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $sql = $wpdb->prepare( "SELECT * FROM $feeds_table_name WHERE feed_name LIKE %s;", $wpdb->esc_like( $sourcename ) . '%' ); $count = count( $wpdb->get_results( $sql, ARRAY_A ) ); return ( $count === 0 ) ? $sourcename : $sourcename . ' (' . ( $count + 1 ) . ')'; } /** * Query to Remove Feeds from Database * * @param array $feed_ids_array * * @since 6.0 */ public static function delete_feeds_query( $feed_ids_array ) { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $feed_caches_table_name = $wpdb->prefix . 'sbi_feed_caches'; $sanitized_feed_ids_array = array(); foreach ( $feed_ids_array as $id ) { $sanitized_feed_ids_array[] = absint( $id ); } $feed_ids_array = implode( ',', $sanitized_feed_ids_array ); $wpdb->query( "DELETE FROM $feeds_table_name WHERE id IN ($feed_ids_array)" ); $wpdb->query( "DELETE FROM $feed_caches_table_name WHERE feed_id IN ($feed_ids_array)" ); echo sbi_json_encode( SBI_Feed_Builder::get_feed_list() ); wp_die(); } /** * Query to Remove Source from Database * * @param array $source_id * * @since 6.0.6 */ public static function delete_source( $source_id ) { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; return $wpdb->query( $wpdb->prepare( "DELETE FROM $sources_table_name WHERE id = %d; ", $source_id ) ); } /** * Query to Remove Source from Database * * @param array $source_id * * @since 6.0 */ public static function delete_source_query( $source_id ) { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; $wpdb->query( $wpdb->prepare( "DELETE FROM $sources_table_name WHERE id = %d; ", $source_id ) ); echo sbi_json_encode( SBI_Feed_Builder::get_source_list() ); wp_die(); } /** * Query to Remove Source from Database * * @param array $source_id * * @since 6.0 */ public static function delete_source_by_account_id( $source_id ) { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; $wpdb->query( $wpdb->prepare( "DELETE FROM $sources_table_name WHERE account_id = %s; ", $source_id ) ); } /** * Query to Duplicate a Single Feed * * @param int $feed_id * * @since 6.0 */ public static function duplicate_feed_query( $feed_id ) { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $wpdb->query( $wpdb->prepare( "INSERT INTO $feeds_table_name (feed_name, settings, author, status) SELECT CONCAT(feed_name, ' (copy)'), settings, author, status FROM $feeds_table_name WHERE id = %d; ", $feed_id ) ); echo sbi_json_encode( SBI_Feed_Builder::get_feed_list() ); wp_die(); } /** * Get cache records in the sbi_feed_caches table * * @param array $args * * @return array|object|null */ public static function feed_caches_query( $args ) { global $wpdb; $feed_cache_table_name = $wpdb->prefix . 'sbi_feed_caches'; if ( ! isset( $args['cron_update'] ) ) { $sql = " SELECT * FROM $feed_cache_table_name;"; } else { if ( ! isset( $args['additional_batch'] ) ) { $sql = $wpdb->prepare( " SELECT * FROM $feed_cache_table_name WHERE cron_update = 'yes' ORDER BY last_updated ASC LIMIT %d;", self::RESULTS_PER_CRON_UPDATE ); } else { $sql = $wpdb->prepare( " SELECT * FROM $feed_cache_table_name WHERE cron_update = 'yes' AND last_updated < %s ORDER BY last_updated ASC LIMIT %d;", gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS ), self::RESULTS_PER_CRON_UPDATE ); } } return $wpdb->get_results( $sql, ARRAY_A ); } /** * Creates all database tables used in the new admin area in * the 6.0 update. * * TODO: Add error reporting * * @since 6.0 */ public static function create_tables( $include_charset_collate = true ) { if ( ! function_exists( 'dbDelta' ) ) { require_once ABSPATH . '/wp-admin/includes/upgrade.php'; } global $wpdb; $max_index_length = 191; $charset_collate = ''; if ( $include_charset_collate && method_exists( $wpdb, 'get_charset_collate' ) ) { // get_charset_collate introduced in WP 3.5 $charset_collate = $wpdb->get_charset_collate(); } $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; if ( $wpdb->get_var( "show tables like '$feeds_table_name'" ) !== $feeds_table_name ) { $sql = " CREATE TABLE $feeds_table_name ( id bigint(20) unsigned NOT NULL auto_increment, feed_name text NOT NULL default '', feed_title text NOT NULL default '', settings longtext NOT NULL default '', author bigint(20) unsigned NOT NULL default '1', status varchar(255) NOT NULL default '', last_modified datetime NOT NULL, PRIMARY KEY (id), KEY author (author) ) $charset_collate; "; $wpdb->query( $sql ); } $error = $wpdb->last_error; $query = $wpdb->last_query; $had_error = false; if ( $wpdb->get_var( "show tables like '$feeds_table_name'" ) !== $feeds_table_name ) { $had_error = true; } if ( ! $had_error ) { } $feed_caches_table_name = $wpdb->prefix . 'sbi_feed_caches'; if ( $wpdb->get_var( "show tables like '$feed_caches_table_name'" ) !== $feed_caches_table_name ) { $sql = ' CREATE TABLE ' . $feed_caches_table_name . " ( id bigint(20) unsigned NOT NULL auto_increment, feed_id varchar(255) NOT NULL default '', cache_key varchar(255) NOT NULL default '', cache_value longtext NOT NULL default '', cron_update varchar(20) NOT NULL default 'yes', last_updated datetime NOT NULL, PRIMARY KEY (id), KEY feed_id (feed_id($max_index_length)) ) $charset_collate;"; $wpdb->query( $sql ); } $error = $wpdb->last_error; $query = $wpdb->last_query; $had_error = false; if ( $wpdb->get_var( "show tables like '$feed_caches_table_name'" ) !== $feed_caches_table_name ) { $had_error = true; } if ( ! $had_error ) { } $sources_table_name = $wpdb->prefix . 'sbi_sources'; if ( $wpdb->get_var( "show tables like '$sources_table_name'" ) !== $sources_table_name ) { $sql = ' CREATE TABLE ' . $sources_table_name . " ( id bigint(20) unsigned NOT NULL auto_increment, account_id varchar(255) NOT NULL default '', account_type varchar(255) NOT NULL default '', privilege varchar(255) NOT NULL default '', access_token varchar(1000) NOT NULL default '', username varchar(255) NOT NULL default '', info text NOT NULL default '', error text NOT NULL default '', expires datetime NOT NULL, last_updated datetime NOT NULL, author bigint(20) unsigned NOT NULL default '1', PRIMARY KEY (id), KEY account_type (account_type($max_index_length)), KEY author (author) ) $charset_collate;"; $wpdb->query( $sql ); } $error = $wpdb->last_error; $query = $wpdb->last_query; $had_error = false; if ( $wpdb->get_var( "show tables like '$sources_table_name'" ) !== $sources_table_name ) { $had_error = true; } if ( ! $had_error ) { } } public static function create_sources_database() { // not needed } public static function clear_sbi_feed_caches() { global $wpdb; $feed_caches_table_name = $wpdb->prefix . 'sbi_feed_caches'; if ( $wpdb->get_var( "show tables like '$feed_caches_table_name'" ) === $feed_caches_table_name ) { $wpdb->query( "DELETE FROM $feed_caches_table_name" ); } } public static function clear_sbi_sources() { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; if ( $wpdb->get_var( "show tables like '$sources_table_name'" ) === $sources_table_name ) { $wpdb->query( "DELETE FROM $sources_table_name" ); } } public static function reset_tables() { global $wpdb; $feeds_table_name = $wpdb->prefix . 'sbi_feeds'; $wpdb->query( "DROP TABLE IF EXISTS $feeds_table_name" ); $feed_caches_table_name = $wpdb->prefix . 'sbi_feed_caches'; $wpdb->query( "DROP TABLE IF EXISTS $feed_caches_table_name" ); $sources_table_name = $wpdb->prefix . 'sbi_sources'; $wpdb->query( "DROP TABLE IF EXISTS $sources_table_name" ); } public static function reset_db_update() { update_option( 'sbi_db_version', 1.9 ); delete_option( 'sbi_legacy_feed_settings' ); // are there existing feeds to toggle legacy onboarding? $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( isset( $sbi_statuses_option['legacy_onboarding'] ) ) { unset( $sbi_statuses_option['legacy_onboarding'] ); } if ( isset( $sbi_statuses_option['support_legacy_shortcode'] ) ) { unset( $sbi_statuses_option['support_legacy_shortcode'] ); } global $wpdb; $table_name = $wpdb->prefix . 'usermeta'; $wpdb->query( " DELETE FROM $table_name WHERE `meta_key` LIKE ('sbi\_%') " ); $feed_locator_table_name = esc_sql( $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR ); $results = $wpdb->query( " DELETE FROM $feed_locator_table_name WHERE feed_id LIKE '*%';" ); update_option( 'sbi_statuses', $sbi_statuses_option ); } public static function reset_legacy() { //Settings delete_option( 'sbi_statuses' ); delete_option( 'sb_instagram_settings' ); delete_option( 'sbi_ver' ); delete_option( 'sb_expired_tokens' ); delete_option( 'sbi_cron_report' ); delete_option( 'sb_instagram_errors' ); delete_option( 'sb_instagram_ajax_status' ); delete_option( 'sbi_db_version' ); // Clear backup caches global $wpdb; $table_name = $wpdb->prefix . 'options'; $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%!sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_&sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_&sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%sb_wlupdated_%') " ); //image resizing $upload = wp_upload_dir(); $posts_table_name = $wpdb->prefix . 'sbi_instagram_posts'; $feeds_posts_table_name = esc_sql( $wpdb->prefix . 'sbi_instagram_feeds_posts' ); $image_files = glob( trailingslashit( $upload['basedir'] ) . trailingslashit( SBI_UPLOADS_NAME ) . '*' ); // get all file names foreach ( $image_files as $file ) { // iterate files if ( is_file( $file ) ) { unlink( $file ); } // delete file } //Delete tables $wpdb->query( "DROP TABLE IF EXISTS $posts_table_name" ); $wpdb->query( "DROP TABLE IF EXISTS $feeds_posts_table_name" ); $locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $wpdb->query( "DROP TABLE IF EXISTS $locator_table_name" ); $table_name = $wpdb->prefix . 'options'; $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_\$sbi\_%') " ); $wpdb->query( " DELETE FROM $table_name WHERE `option_name` LIKE ('%\_transient\_timeout\_\$sbi\_%') " ); delete_option( 'sbi_hashtag_ids' ); delete_option( 'sb_instagram_errors' ); delete_option( 'sbi_usage_tracking_config' ); delete_option( 'sbi_usage_tracking' ); delete_option( 'sbi_oembed_token' ); delete_option( 'sbi_top_api_calls' ); delete_option( 'sbi_rating_notice' ); delete_option( 'sbi_refresh_report' ); delete_option( 'sbi_welcome_seen' ); delete_option( 'sbi_notifications' ); delete_option( 'sbi_newuser_notifications' ); global $wp_roles; $wp_roles->remove_cap( 'administrator', 'manage_instagram_feed_options' ); wp_clear_scheduled_hook( 'sbi_feed_update' ); wp_clear_scheduled_hook( 'sbi_usage_tracking_cron' ); } /** * Query to Get Single source * * @param array $source_id * * @since 6.0.8 */ public static function get_source_by_account_id( $source_id ) { global $wpdb; $sources_table_name = $wpdb->prefix . 'sbi_sources'; $sql = $wpdb->prepare( "SELECT * FROM $sources_table_name WHERE account_id = %s; ", $source_id ); return $wpdb->get_row( $sql, ARRAY_A ); } } instagram-feed/inc/Builder/SBI_Feed_Builder.php000064400003565705151435171370015344 0ustar00init(); } /** * Init the Builder. * * @since 6.0 */ function init() { if ( is_admin() ) { add_action( 'admin_menu', array( $this, 'register_menu' ) ); // add ajax listeners SBI_Feed_Saver_Manager::hooks(); SBI_Source::hooks(); self::hooks(); } } /** * Mostly AJAX related hooks * * @since 6.0 */ public static function hooks() { add_action( 'wp_ajax_sbi_dismiss_onboarding', array( 'InstagramFeed\Builder\SBI_Feed_Builder', 'after_dismiss_onboarding' ) ); add_action( 'wp_ajax_sbi_other_plugins_modal', array( 'InstagramFeed\Builder\SBI_Feed_Builder', 'sb_other_plugins_modal' ) ); } /** * Register Menu. * * @since 6.0 */ public function register_menu() { $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); $feed_builder = add_submenu_page( 'sb-instagram-feed', __( 'All Feeds', 'instagram-feed' ), __( 'All Feeds', 'instagram-feed' ), $cap, 'sbi-feed-builder', array( $this, 'feed_builder' ), 0 ); add_action( 'load-' . $feed_builder, array( $this, 'builder_enqueue_admin_scripts' ) ); } /** * Enqueue Builder CSS & Script. * * Loads only for builder pages * * @since 6.0 */ public function builder_enqueue_admin_scripts() { if ( get_current_screen() ) : $screen = get_current_screen(); if ( strpos( $screen->id, 'sbi-feed-builder' ) !== false || strpos( $screen->id, 'sbi-setup' ) !== false ) : $installed_plugins = get_plugins(); $newly_retrieved_source_connection_data = SBI_Source::maybe_source_connection_data(); $license_key = get_option( 'sbi_license_key', '' ); $upgrade_url = 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=lite-upgrade-bar'; $active_extensions = array( // Fake 'feedLayout' => false, 'headerLayout' => false, 'postStyling' => false, 'lightbox' => false, 'filtermoderation' => false, 'shoppablefeed' => false, ); $sbi_builder = array( 'ajax_handler' => admin_url( 'admin-ajax.php' ), 'pluginType' => 'free', 'licenseType' => sbi_is_pro_version() ? 'pro' : 'free', 'isSetupPage' => strpos( $screen->id, 'sbi-setup' ) !== false ? 'true' : 'false', 'builderUrl' => admin_url( 'admin.php?page=sbi-feed-builder' ), 'setUpUrl' => admin_url( 'admin.php?page=sbi-setup' ), 'upgradeUrl' => $upgrade_url, 'activeExtensions' => $active_extensions, 'pluginUrl' => trailingslashit( SBI_PLUGIN_URL ), 'nonce' => wp_create_nonce( 'sbi-admin' ), 'admin_nonce' => wp_create_nonce( 'sbi_admin_nonce' ), 'adminPostURL' => admin_url( 'post.php' ), 'widgetsPageURL' => admin_url( 'widgets.php' ), 'themeSupportsWidgets' => current_theme_supports( 'widgets' ), 'supportPageUrl' => admin_url( 'admin.php?page=sbi-support' ), 'genericText' => self::get_generic_text(), 'welcomeScreen' => array( 'mainHeading' => __( 'All Feeds', 'instagram-feed' ), 'createFeed' => __( 'Create your Feed', 'instagram-feed' ), 'createFeedDescription' => __( 'Connect your Instagram account and choose a feed type', 'instagram-feed' ), 'customizeFeed' => __( 'Customize your feed type', 'instagram-feed' ), 'customizeFeedDescription' => __( 'Choose layouts, color schemes, styles and more', 'instagram-feed' ), 'embedFeed' => __( 'Embed your feed', 'instagram-feed' ), 'embedFeedDescription' => __( 'Easily add the feed anywhere on your website', 'instagram-feed' ), 'customizeImgPath' => SBI_BUILDER_URL . 'assets/img/welcome-1.png', 'embedImgPath' => SBI_BUILDER_URL . 'assets/img/welcome-2.png', ), 'pluginsInfo' => array( 'social_wall' => array( 'installed' => isset( $installed_plugins['social-wall/social-wall.php'] ) ? true : false, 'activated' => is_plugin_active( 'social-wall/social-wall.php' ), 'settingsPage' => admin_url( 'admin.php?page=sbsw' ), ) ), 'allFeedsScreen' => array( 'mainHeading' => __( 'All Feeds', 'instagram-feed' ), 'columns' => array( 'nameText' => __( 'Name', 'instagram-feed' ), 'shortcodeText' => __( 'Shortcode', 'instagram-feed' ), 'instancesText' => __( 'Instances', 'instagram-feed' ), 'actionsText' => __( 'Actions', 'instagram-feed' ), ), 'bulkActions' => __( 'Bulk Actions', 'instagram-feed' ), 'legacyFeeds' => array( 'heading' => __( 'Legacy Feeds', 'instagram-feed' ), 'toolTip' => __( 'What are Legacy Feeds?', 'instagram-feed' ), 'toolTipExpanded' => array( __( 'Legacy feeds are older feeds from before the version 6 update. You can edit settings for these feeds by using the "Settings" button to the right. These settings will apply to all legacy feeds, just like the settings before version 6, and work in the same way that they used to.', 'instagram-feed' ), __( 'You can also create a new feed, which will now have it\'s own individual settings. Modifying settings for new feeds will not affect other feeds.', 'instagram-feed' ), ), 'toolTipExpandedAction' => array( __( 'Legacy feeds represent shortcodes of old feeds found on your website before
the version 6 update.', 'instagram-feed' ), __( 'To edit Legacy feed settings, you will need to use the "Settings" button above
or edit their shortcode settings directly. To delete a legacy feed, simply remove the
shortcode wherever it is being used on your site.', 'instagram-feed' ), ), 'show' => __( 'Show Legacy Feeds', 'instagram-feed' ), 'hide' => __( 'Hide Legacy Feeds', 'instagram-feed' ), ), 'socialWallLinks' => self::get_social_wall_links(), 'onboarding' => $this->get_onboarding_text() ), 'dialogBoxPopupScreen' => array( 'deleteSource' => array( 'heading' => __( 'Delete "#"?', 'instagram-feed' ), 'description' => __( 'This source is being used in a feed on your site. If you delete this source then new posts can no longer be retrieved for these feeds.', 'instagram-feed' ), ), 'deleteSourceCustomizer' => array( 'heading' => __( 'Delete "#"?', 'instagram-feed' ), 'description' => __( 'You are going to delete this source. To retrieve it, you will need to add it again. Are you sure you want to continue?', 'instagram-feed' ), ), 'deleteSingleFeed' => array( 'heading' => __( 'Delete "#"?', 'instagram-feed' ), 'description' => __( 'You are going to delete this feed. You will lose all the settings. Are you sure you want to continue?', 'instagram-feed' ), ), 'deleteMultipleFeeds' => array( 'heading' => __( 'Delete Feeds?', 'instagram-feed' ), 'description' => __( 'You are going to delete these feeds. You will lose all the settings. Are you sure you want to continue?', 'instagram-feed' ), ), 'backAllToFeed' => array( 'heading' => __( 'Are you Sure?', 'instagram-feed' ), 'description' => __( 'Are you sure you want to leave this page, all unsaved settings will be lost, please make sure to save before leaving.', 'instagram-feed' ), 'customButtons' => array( 'confirm' => array( 'text' => __( 'Save and Exit', 'instagram-feed' ), 'color' => 'blue', ), 'cancel' => array( 'text' => __( 'Exit without Saving', 'instagram-feed' ), 'color' => 'red', ), ), ), 'unsavedFeedSources' => array( 'heading' => __( 'You have unsaved changes', 'instagram-feed' ), 'description' => __( 'If you exit without saving, all the changes you made will be reverted.', 'instagram-feed' ), 'customButtons' => array( 'confirm' => array( 'text' => __( 'Save and Exit', 'instagram-feed' ), 'color' => 'blue' ), 'cancel' => array( 'text' => __( 'Exit without Saving', 'instagram-feed' ), 'color' => 'red' ) ) ) ), 'selectFeedTypeScreen' => array( 'mainHeading' => __( 'Create an Instagram Feed', 'instagram-feed' ), 'feedTypeHeading' => __( 'Select Feed Type', 'instagram-feed' ), 'mainDescription' => __( 'Select one or more feed types. You can add or remove them later.', 'instagram-feed' ), 'updateHeading' => __( 'Update Feed Type', 'instagram-feed' ), 'advancedHeading' => __( 'Advanced Feeds', 'instagram-feed' ), 'anotherFeedTypeHeading' => __( 'Add Another Source Type', 'instagram-feed' ), ), 'mainFooterScreen' => array( 'heading' => sprintf( __( 'Upgrade to the %1$sAll Access Bundle%2$s to get all of our Pro Plugins', 'instagram-feed' ), '', '' ), 'description' => __( 'Includes all Smash Balloon plugins for one low price: Instagram, Facebook, Twitter, YouTube, and Social Wall', 'instagram-feed' ), 'promo' => sprintf( __( '%1$sBonus%2$s Lite users get %3$s50% Off%4$s automatically applied at checkout', 'instagram-feed' ), '', '', '', '' ), ), 'embedPopupScreen' => array( 'heading' => __( 'Embed Feed', 'instagram-feed' ), 'description' => __( 'Add the unique shortcode to any page, post, or widget:', 'instagram-feed' ), 'description_2' => current_theme_supports( 'widgets' ) ? __( 'Or use the built in WordPress block or widget', 'instagram-feed' ) : __( 'Or use the built in WordPress block', 'instagram-feed' ), 'addPage' => __( 'Add to a Page', 'instagram-feed' ), 'addWidget' => __( 'Add to a Widget', 'instagram-feed' ), 'selectPage' => __( 'Select Page', 'instagram-feed' ), ), 'links' => self::get_links_with_utm(), 'pluginsInfo' => array( 'social_wall' => array( 'installed' => isset( $installed_plugins['social-wall/social-wall.php'] ) ? true : false, 'activated' => is_plugin_active( 'social-wall/social-wall.php' ), 'settingsPage' => admin_url( 'admin.php?page=sbsw' ), ) ), 'selectSourceScreen' => self::select_source_screen_text(), 'feedTypes' => $this->get_feed_types(), 'advancedFeedTypes' => $this->get_advanced_feed_types(), 'socialInfo' => $this->get_smashballoon_info(), 'svgIcons' => $this->builder_svg_icons(), 'installPluginsPopup' => $this->install_plugins_popup(), 'feeds' => self::get_feed_list(), 'itemsPerPage' => SBI_Db::RESULTS_PER_PAGE, 'feedsCount' => SBI_Db::feeds_count(), 'sources' => self::get_source_list(), 'sourceConnectionURLs' => SBI_Source::get_connection_urls(), 'legacyFeeds' => $this->get_legacy_feed_list(), 'extensionsPopup' => array( 'hashtag' => array( 'heading' => __( 'Upgrade to Pro to get Hashtag Feeds', 'instagram-feed' ), 'description' => __( 'Display posts from any public hashtag with an Instagram hashtag feed. Great for pulling in user-generated content associated with your brand, running promotional hashtag campaigns, engaging audiences at events, and more.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/hashtag?utm_campaign=instagram-free&utm_source=feed-type&utm_medium=hashtag' ) ), 'tagged' => array( 'heading' => __( 'Upgrade to Pro to get Tagged Posts Feed', 'instagram-feed' ), 'description' => __( 'Display posts that you\'ve been tagged in by other users allowing you to increase your audience\'s engagement with your Instagram account.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=feed-type&utm_medium=tagged' ) ), 'socialwall' => array( // Combine all your social media channels into one Social Wall 'heading' => '' . __( 'Combine all your social media channels into one', 'instagram-feed' ) .' '. __( 'Social Wall', 'instagram-feed' ).'', 'description' => '' . __( 'A dash of Instagram, a sprinkle of Facebook, a spoonful of Twitter, and a dollop of YouTube, all in the same feed.', 'instagram-feed' ) . '', 'img' => '', 'demoUrl' => 'https://smashballoon.com/social-wall/demo/?utm_campaign=instagram-free&utm_source=feed-type&utm_medium=social-wall&utm_content=learn-more', 'buyUrl' => sprintf( 'https://smashballoon.com/social-wall/demo/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=feed-type&utm_medium=social-wall&utm_content=Try Demo', $license_key ), 'bullets' => array( 'heading' => __( 'Upgrade to the All Access Bundle and get:', 'instagram-feed' ), 'content' => array( __( 'Instagram Feed Pro', 'instagram-feed' ), __( 'Custom Twitter Feeds Pro', 'instagram-feed' ), __( 'YouTube Feeds Pro', 'instagram-feed' ), __( 'Custom Facebook Feed Pro', 'instagram-feed' ), __( 'All Pro Facebook Extensions', 'instagram-feed' ), __( 'Social Wall Pro', 'instagram-feed' ), ) ), ), // Other Types 'feedLayout' => array( 'heading' => __( 'Upgrade to Pro to get Feed Layouts', 'instagram-feed' ), 'description' => __( 'Choose from one of our built-in layout options; grid, carousel, masonry, and highlight to allow you to showcase your content in any way you want.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=feed-layouts' ) ), 'headerLayout' => array( 'heading' => __( 'Get Stories, Followers and Advanced Header Options', 'instagram-feed' ), 'description' => __( 'Got stories to tell? We want to help you share them. Display Instagram stories right on your website in a pop-up lightbox to keep your users engaged and on your website for longer.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=header' ) ), 'postStyling' => array( 'heading' => __( 'Display Captions, Likes, and Comments', 'instagram-feed' ), 'description' => __( 'Upgrade to Pro to display post captions below each post and in the lightbox, which can be crawled by search engines to help boost SEO.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=posts' ) ), 'lightbox' => array( 'heading' => __( 'Upgrade to Pro to enable the popup Lightbox', 'instagram-feed' ), 'description' => __( 'Allow visitors to view your photos and videos in a beautiful full size lightbox, keeping them on your site for longer to discover more of your content.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=lightbox' ) ), 'filtermoderation' => array( 'heading' => __( 'Get Advanced Moderation and Filters with Pro', 'instagram-feed' ), 'description' => __( 'Use powerful moderation tools to create feeds of only specific chosen posts, or exclude specific chosen posts. You can also automatically include or exclude posts based on a word or hashtag found in the caption.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=filters' ) ), 'shoppablefeed' => array( 'heading' => __( 'Upgrade to Pro to Get Shoppable Feeds', 'instagram-feed' ), 'description' => __( 'Automatically link Instagram posts to custom URLs of your choosing by adding the URL in the caption, or manually add links to specific pages or products on your site (or other sites) in a quick and easy way.', 'instagram-feed' ), 'img' => '', 'bullets' => array( 'heading' => __( 'And get much more!', 'instagram-feed' ), 'content' => array( __( 'Display Hashtag & Tagged feeds', 'instagram-feed' ), __( 'Powerful visual moderation', 'instagram-feed' ), __( 'Comments and Likes', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Multiple layout options', 'instagram-feed' ), __( 'Popup photo/video lightbox', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Shoppable feeds', 'instagram-feed' ), __( 'Pro support', 'instagram-feed' ), __( 'Post captions', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), ) ), 'buyUrl' => sprintf( 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=shoppable' ) ), ), 'personalAccountScreen' => self::personal_account_screen_text(), 'onboardingWizardContent' => \InstagramFeed\admin\SBI_Onboarding_wizard::get_onboarding_wizard_content() ); if ( $newly_retrieved_source_connection_data ) { $sbi_builder['newSourceData'] = $newly_retrieved_source_connection_data; } if ( isset( $_GET['manualsource'] ) && $_GET['manualsource'] == true ) { $sbi_builder['manualSourcePopupInit'] = true; } $maybe_feed_customizer_data = SBI_Feed_Saver_Manager::maybe_feed_customizer_data(); if ( $maybe_feed_customizer_data ) { sb_instagram_scripts_enqueue( true ); $sbi_builder['customizerFeedData'] = $maybe_feed_customizer_data; $sbi_builder['customizerSidebarBuilder'] = \InstagramFeed\Builder\Tabs\SBI_Builder_Customizer_Tab::get_customizer_tabs(); $sbi_builder['wordpressPageLists'] = $this->get_wp_pages(); $sbi_builder['instagram_feed_dismiss_lite'] = get_transient( 'instagram_feed_dismiss_lite' ); if ( ! isset( $_GET['feed_id'] ) || $_GET['feed_id'] === 'legacy' ) { $feed_id = 'legacy'; $customizer_atts = array( 'feed' => 'legacy', 'customizer' => true ); } elseif ( intval( $_GET['feed_id'] ) > 0 ) { $feed_id = intval( $_GET['feed_id'] ); $customizer_atts = array( 'feed' => $feed_id, 'customizer' => true ); } if ( ! empty( $feed_id ) ) { $settings_preview = self::add_customizer_att( $customizer_atts ); if ( $feed_id === 'legacy' ) { $preview_settings = \SB_Instagram_Settings::get_legacy_feed_settings(); $preview_settings['customizer'] = true; $sbi_builder['feedInitOutput'] = htmlspecialchars( display_instagram( $customizer_atts, $preview_settings ) ); } else { $sbi_builder['feedInitOutput'] = htmlspecialchars( display_instagram( $settings_preview, true ) ); } } // Date global $wp_locale; wp_enqueue_script( 'sbi-date_i18n', SBI_PLUGIN_URL . 'admin/builder/assets/js/date_i18n.js', null, SBIVER, true ); $monthNames = array_map( array( &$wp_locale, 'get_month' ), range( 1, 12 ) ); $monthNamesShort = array_map( array( &$wp_locale, 'get_month_abbrev' ), $monthNames ); $dayNames = array_map( array( &$wp_locale, 'get_weekday' ), range( 0, 6 ) ); $dayNamesShort = array_map( array( &$wp_locale, 'get_weekday_abbrev' ), $dayNames ); wp_localize_script( 'sbi-date_i18n', 'DATE_I18N', array( 'month_names' => $monthNames, 'month_names_short' => $monthNamesShort, 'day_names' => $dayNames, 'day_names_short' => $dayNamesShort ) ); } wp_enqueue_style( 'sbi-builder-style', SBI_PLUGIN_URL . 'admin/builder/assets/css/builder.css', false, SBIVER ); self::global_enqueue_ressources_scripts(); wp_enqueue_script( 'sbi-builder-app', SBI_PLUGIN_URL . 'admin/builder/assets/js/builder.js', null, SBIVER, true ); // Customize screens $sbi_builder['customizeScreens'] = $this->get_customize_screens_text(); wp_localize_script( 'sbi-builder-app', 'sbi_builder', $sbi_builder ); wp_enqueue_media(); endif; endif; } /** * Get WP Pages List * * @return array * * @since 6.0 */ public function get_wp_pages() { $pagesList = get_pages(); $pagesResult = array(); if ( is_array( $pagesList ) ) { foreach ( $pagesList as $page ) { array_push( $pagesResult, array( 'id' => $page->ID, 'title' => $page->post_title ) ); } } return $pagesResult; } /** * Global JS + CSS Files * * Shared JS + CSS ressources for the admin panel * * @since 6.0 */ public static function global_enqueue_ressources_scripts( $is_settings = false ) { wp_enqueue_style( 'feed-global-style', SBI_PLUGIN_URL . 'admin/builder/assets/css/global.css', false, SBIVER ); wp_enqueue_script( 'sb-vue', SBI_PLUGIN_URL . 'js/vue.min.js', null, '2.6.12', true ); wp_enqueue_script( 'feed-colorpicker-vue', SBI_PLUGIN_URL . 'admin/builder/assets/js/vue-color.min.js', null, SBIVER, true ); wp_enqueue_script( 'feed-builder-ressources', SBI_PLUGIN_URL . 'admin/builder/assets/js/ressources.js', null, SBIVER, true ); wp_enqueue_script( 'sb-dialog-box', SBI_PLUGIN_URL . 'admin/builder/assets/js/confirm-dialog.js', null, SBIVER, true ); wp_enqueue_script( 'install-plugin-popup', SBI_PLUGIN_URL . 'admin/builder/assets/js/install-plugin-popup.js', null, SBIVER, true ); wp_enqueue_script( 'sb-add-source', SBI_PLUGIN_URL . 'admin/builder/assets/js/add-source.js', null, SBIVER, true ); $newly_retrieved_source_connection_data = SBI_Source::maybe_source_connection_data(); $sbi_source = array( 'sources' => self::get_source_list(), 'sourceConnectionURLs' => SBI_Source::get_connection_urls( $is_settings ), 'nonce' => wp_create_nonce( 'sbi-admin' ), ); if ( $newly_retrieved_source_connection_data ) { $sbi_source['newSourceData'] = $newly_retrieved_source_connection_data; } if ( isset( $_GET['manualsource'] ) && $_GET['manualsource'] == true ) { $sbi_source['manualSourcePopupInit'] = true; } wp_localize_script( 'sb-add-source', 'sbi_source', $sbi_source ); wp_enqueue_script( 'sb-personal-account', SBI_PLUGIN_URL . 'admin/builder/assets/js/personal-account.js', null, SBIVER, true ); $sbi_personal_account = array( 'personalAccountScreen' => self::personal_account_screen_text(), 'nonce' => wp_create_nonce( 'sbi-admin' ), 'ajaxHandler' => admin_url( 'admin-ajax.php' ), ); wp_localize_script( 'sb-personal-account', 'sbi_personal_account', $sbi_personal_account ); } /** * Get Generic text * * @return array * * @since 6.0 */ public static function get_generic_text() { $icons = self::builder_svg_icons(); return array( 'done' => __( 'Done', 'instagram-feed' ), 'title' => __( 'Settings', 'instagram-feed' ), 'dashboard' => __( 'Dashboard', 'instagram-feed' ), 'setup' => __( 'Setup', 'instagram-feed' ), 'addNew' => __( 'Add New', 'instagram-feed' ), 'addSource' => __( 'Add Source', 'instagram-feed' ), 'addAnotherSource' => __( 'Add another Source', 'instagram-feed' ), 'addSourceType' => __( 'Add Another Source Type', 'instagram-feed' ), 'previous' => __( 'Previous', 'instagram-feed' ), 'next' => __( 'Next', 'instagram-feed' ), 'finish' => __( 'Finish', 'instagram-feed' ), 'new' => __( 'New', 'instagram-feed' ), 'update' => __( 'Update', 'instagram-feed' ), 'upgrade' => __( 'Try the Pro Demo', 'instagram-feed' ), 'settings' => __( 'Settings', 'instagram-feed' ), 'back' => __( 'Back', 'instagram-feed' ), 'backAllFeeds' => __( 'Back to all feeds', 'instagram-feed' ), 'createFeed' => __( 'Create Feed', 'instagram-feed' ), 'add' => __( 'Add', 'instagram-feed' ), 'change' => __( 'Change', 'instagram-feed' ), 'getExtention' => __( 'Get Extension', 'instagram-feed' ), 'viewDemo' => __( 'View Demo', 'instagram-feed' ), 'includes' => __( 'Includes', 'instagram-feed' ), 'photos' => __( 'Photos', 'instagram-feed' ), 'photo' => __( 'Photo', 'instagram-feed' ), 'apply' => __( 'Apply', 'instagram-feed' ), 'copy' => __( 'Copy', 'instagram-feed' ), 'edit' => __( 'Edit', 'instagram-feed' ), 'duplicate' => __( 'Duplicate', 'instagram-feed' ), 'delete' => __( 'Delete', 'instagram-feed' ), 'remove' => __( 'Remove', 'instagram-feed' ), 'removeSource' => __( 'Remove Source', 'instagram-feed' ), 'shortcode' => __( 'Shortcode', 'instagram-feed' ), 'clickViewInstances' => __( 'Click to view Instances', 'instagram-feed' ), 'usedIn' => __( 'Used in', 'instagram-feed' ), 'place' => __( 'place', 'instagram-feed' ), 'places' => __( 'places', 'instagram-feed' ), 'item' => __( 'Item', 'instagram-feed' ), 'items' => __( 'Items', 'instagram-feed' ), 'learnMore' => __( 'Learn More', 'instagram-feed' ), 'location' => __( 'Location', 'instagram-feed' ), 'page' => __( 'Page', 'instagram-feed' ), 'copiedClipboard' => __( 'Copied to Clipboard', 'instagram-feed' ), 'feedImported' => __( 'Feed imported successfully', 'instagram-feed' ), 'failedToImportFeed' => __( 'Failed to import feed', 'instagram-feed' ), 'timeline' => __( 'Timeline', 'instagram-feed' ), 'help' => __( 'Help', 'instagram-feed' ), 'admin' => __( 'Admin', 'instagram-feed' ), 'member' => __( 'Member', 'instagram-feed' ), 'reset' => __( 'Reset', 'instagram-feed' ), 'preview' => __( 'Preview', 'instagram-feed' ), 'name' => __( 'Name', 'instagram-feed' ), 'id' => __( 'ID', 'instagram-feed' ), 'token' => __( 'Token', 'instagram-feed' ), 'confirm' => __( 'Confirm', 'instagram-feed' ), 'cancel' => __( 'Cancel', 'instagram-feed' ), 'clear' => __( 'Clear', 'instagram-feed' ), 'clearFeedCache' => __( 'Clear Feed Cache', 'instagram-feed' ), 'saveSettings' => __( 'Save Changes', 'instagram-feed' ), 'feedName' => __( 'Feed Name', 'instagram-feed' ), 'shortcodeText' => __( 'Shortcode', 'instagram-feed' ), 'general' => __( 'General', 'instagram-feed' ), 'feeds' => __( 'Feeds', 'instagram-feed' ), 'translation' => __( 'Translation', 'instagram-feed' ), 'advanced' => __( 'Advanced', 'instagram-feed' ), 'error' => __( 'Error:', 'instagram-feed' ), 'errorNotice' => __( 'There was an error when trying to connect to Instagram.', 'instagram-feed' ), 'errorDirections' => '' . __( 'Directions on How to Resolve This Issue', 'instagram-feed' ) . '', 'errorSource' => __( 'Source Invalid', 'instagram-feed' ), 'errorEncryption' => __( 'Encryption Error', 'instagram-feed' ), 'invalid' => __( 'Invalid', 'instagram-feed' ), 'reconnect' => __( 'Reconnect', 'instagram-feed' ), 'feed' => __( 'feed', 'instagram-feed' ), 'sourceNotUsedYet' => __( 'Source is not used yet', 'instagram-feed' ), 'addImage' => __( 'Add Image', 'instagram-feed' ), 'businessRequired' => __( 'Business Account required', 'instagram-feed' ), 'selectedPost' => __( 'Selected Post', 'instagram-feed' ), 'productLink' => __( 'Product Link', 'instagram-feed' ), 'enterProductLink' => __( 'Add your product URL here', 'instagram-feed' ), 'editSources' => __( 'Edit Sources', 'instagram-feed' ), 'moderateFeed' => __( 'Moderate your feed', 'instagram-feed' ), 'moderateFeedSaveExit' => __( 'Save and Exit', 'instagram-feed' ), 'moderationMode' => __( 'Moderation Mode', 'instagram-feed' ), 'moderationModeEnterPostId' => __( 'Or Enter Post IDs to hide manually', 'instagram-feed' ), 'moderationModeTextareaPlaceholder' => __( 'Add words here to hide any posts containing these words', 'instagram-feed' ), 'filtersAndModeration' => __( 'Filters & Moderation', 'instagram-feed' ), 'topRated' => __( 'Top Rated', 'instagram-feed' ), 'mostRecent' => __( 'Most recent', 'instagram-feed' ), 'moderationModePreview' => __( 'Moderation Mode Preview', 'instagram-feed' ), 'exitSetup' => __( 'Exit Setup', 'instagram-feed' ), 'notification' => array( 'feedSaved' => array( 'type' => 'success', 'text' => __( 'Feed saved successfully', 'instagram-feed' ) ), 'feedSavedError' => array( 'type' => 'error', 'text' => __( 'Error saving Feed', 'instagram-feed' ) ), 'previewUpdated' => array( 'type' => 'success', 'text' => __( 'Preview updated successfully', 'instagram-feed' ) ), 'carouselLayoutUpdated' => array( 'type' => 'success', 'text' => __( 'Carousel updated successfully', 'instagram-feed' ) ), 'unkownError' => array( 'type' => 'error', 'text' => __( 'Unknown error occurred', 'instagram-feed' ) ), 'cacheCleared' => array( 'type' => 'success', 'text' => __( 'Feed cache cleared', 'instagram-feed' ) ), 'selectSourceError' => array( 'type' => 'error', 'text' => __( 'Please select a source for your feed', 'instagram-feed' ) ), 'commentCacheCleared' => array( 'type' => 'success', 'text' => __( 'Comment cache cleared', 'instagram-feed' ) ), 'personalAccountUpdated' => array( 'type' => 'success', 'text' => __( 'Personal account updated', 'instagram-feed' ) ) ), 'install' => __( 'Install', 'instagram-feed' ), 'installed' => __( 'Installed', 'instagram-feed' ), 'activate' => __( 'Activate', 'instagram-feed' ), 'installedAndActivated' => __( 'Installed & Activated', 'instagram-feed' ), 'free' => __( 'Free', 'instagram-feed' ), 'invalidLicenseKey' => __( 'Invalid license key', 'instagram-feed' ), 'licenseActivated' => __( 'License activated', 'instagram-feed' ), 'licenseDeactivated' => __( 'License Deactivated', 'instagram-feed' ), 'carouselLayoutUpdated' => array( 'type' => 'success', 'text' => __( 'Carousel Layout updated', 'instagram-feed' ) ), 'getMoreFeatures' => __( 'Get more features with Instagram Feed Pro', 'instagram-feed' ), 'liteFeedUsers' => __( 'Lite users get 50% OFF', 'instagram-feed' ), 'liteFeedUsersAutoApply' => __( 'Lite Feed Users get a 50% OFF (auto-applied at checkout)', 'instagram-feed' ), 'liteFeedUsersSimpleText' => __( 'Lite Feed Users get a 50% OFF', 'instagram-feed' ), 'liteFeedUsersAutoCheckout' => __( 'auto-applied at checkout', 'instagram-feed' ), 'tryDemo' => __( 'Try Demo', 'instagram-feed' ), 'displayImagesVideos' => __( 'Display images and videos in posts', 'instagram-feed' ), 'viewLikesShares' => __( 'View likes, shares and comments', 'instagram-feed' ), 'allFeedTypes' => __( 'All Feed Types: Photos, Albums, Events and more', 'instagram-feed' ), 'abilityToLoad' => __( 'Ability to “Load More†posts', 'instagram-feed' ), 'ctaHashtag' => __( 'Display Hashtag Feeds', 'instagram-feed' ), 'ctaLayout' => __( 'Carousel, Masonry, & Highlight layouts', 'instagram-feed' ), 'ctaPopups' => __( 'View posts in a pop-up lightbox', 'instagram-feed' ), 'ctaFilter' => __( 'Powerful post filtering and moderation', 'instagram-feed' ), 'andMuchMore' => __( 'And Much More!', 'instagram-feed' ), 'sbiFreeCTAFeatures' => array( __( 'Create shoppable feeds', 'instagram-feed' ), __( 'Combine multiple feed types', 'instagram-feed' ), __( 'Display likes, captions & comments', 'instagram-feed' ), __( 'Instagram Stories', 'instagram-feed' ), __( 'Play videos in your feed', 'instagram-feed' ), __( 'Highlight specific posts', 'instagram-feed' ), __( 'Display tagged posts', 'instagram-feed' ), __( '30 day money back guarantee', 'instagram-feed' ), __( 'Fast, friendly, and effective support', 'instagram-feed' ), ), 'ctaShowFeatures' => __( 'Show Features', 'instagram-feed' ), 'ctaHideFeatures' => __( 'Hide Features', 'instagram-feed' ), 'upgradeToPro' => __( 'Upgrade to Pro', 'instagram-feed' ), 'redirectLoading' => array( 'heading' => __( 'Redirecting to connect.smashballoon.com', 'instagram-feed' ), 'description' => __( 'You will be redirected to our app so you can connect your account in 5 seconds', 'instagram-feed' ), ), 'addAccountInfo' => __( 'Add Avatar and Bio', 'instagram-feed' ), 'updateAccountInfo' => __( 'Update Avatar and Bio', 'instagram-feed' ), 'personalAccountUpdated' => __( 'Personal account updated', 'instagram-feed' ), ); } /** * Select Source Screen Text * * @return array * * @since 4.0 */ public static function select_source_screen_text() { return array( 'mainHeading' => __( 'Select one or more sources', 'instagram-feed' ), 'description' => __( 'Sources are Instagram accounts your feed will display content from', 'instagram-feed' ), 'emptySourceDescription' => __( 'Looks like you have not added any source.
Use “Add Source†to add a new one.', 'instagram-feed' ), 'mainHashtagHeading' => __( 'Enter Public Hashtags', 'instagram-feed' ), 'hashtagDescription' => __( 'Add one or more hashtag separated by comma', 'instagram-feed' ), 'hashtagGetBy' => __( 'Fetch posts that are', 'instagram-feed' ), 'sourcesListPopup' => array( 'user' => array( 'mainHeading' => __( 'Add a source for Timeline', 'instagram-feed' ), 'description' => __( 'Select or add an account you want to display the timeline for', 'instagram-feed' ), ), 'tagged' => array( 'mainHeading' => __( 'Add a source for Mentions', 'instagram-feed' ), 'description' => __( 'Select or add an account you want to display the mentions for', 'instagram-feed' ), ) ), 'perosnalAccountToolTipTxt' => array( __( 'Due to changes in Instagram’s new API, we can no
longer get mentions for personal accounts. To
enable this for your account, you will need to convert it to
a Business account. Learn More', 'instagram-feed' ), ), 'groupsToolTip' => array( __( 'Due to Facebook limitations, it\'s not possible to display photo feeds from a Group, only a Page.', 'instagram-feed' ) ), 'updateHeading' => __( 'Update Source', 'instagram-feed' ), 'updateDescription' => __( 'Select a source from your connected Facebook Pages and Groups. Or, use "Add New" to connect a new one.', 'instagram-feed' ), 'updateFooter' => __( 'Add multiple Facebook Pages or Groups to a feed with our Multifeed extension', 'instagram-feed' ), 'noSources' => __( 'Please add a source in order to display a feed. Go to the "Settings" tab -> "Sources" section -> Click "Add New" to connect a source.', 'instagram-feed' ), 'multipleTypes' => array( 'user' => array( 'heading' => __( 'User Timeline', 'instagram-feed' ), 'icon' => 'user', 'description' => __( 'Connect an account to show posts for it.', 'instagram-feed' ), 'actionType' => 'addSource' ), 'hashtag' => array( 'heading' => __( 'Hashtag', 'instagram-feed' ), 'icon' => 'hashtag', 'description' => __( 'Add one or more hashtag separated by comma.', 'instagram-feed' ), 'businessRequired' => true, 'actionType' => 'inputHashtags' ), 'tagged' => array( 'heading' => __( 'Tagged', 'instagram-feed' ), 'icon' => 'mention', 'description' => __( 'Connect an account to show tagged posts. This does not give us any permission to manage your Instagram account.', 'instagram-feed' ), 'businessRequired' => true, 'actionType' => 'addSource' ) ), 'modal' => array( 'addNew' => __( 'Connect your Instagram Account', 'instagram-feed' ), 'selectSourceType' => __( 'Select Account Type', 'instagram-feed' ), 'connectAccount' => __( 'Connect an Instagram Account', 'instagram-feed' ), 'connectAccountDescription' => __( 'This does not give us permission to manage your Instagram account, it simply allows the plugin to see a list of them and retrieve their public content from the API.', 'instagram-feed' ), 'connect' => __( 'Connect', 'instagram-feed' ), 'alreadyHave' => __( 'Already have a API Token and Access Key for your account?', 'instagram-feed' ), 'addManuallyLink' => __( 'Add Account Manually', 'instagram-feed' ), 'selectAccount' => __( 'Select an Instagram Account', 'instagram-feed' ), 'showing' => __( 'Showing', 'instagram-feed' ), 'facebook' => __( 'Facebook', 'instagram-feed' ), 'businesses' => __( 'Businesses', 'instagram-feed' ), 'groups' => __( 'Groups', 'instagram-feed' ), 'connectedTo' => __( 'connected to', 'instagram-feed' ), 'addManually' => __( 'Add a Source Manually', 'instagram-feed' ), 'addSource' => __( 'Add Source', 'instagram-feed' ), 'sourceType' => __( 'Source Type', 'instagram-feed' ), 'accountID' => __( 'Instagram Account ID', 'instagram-feed' ), 'fAccountID' => __( 'Instagram Account ID', 'instagram-feed' ), 'eventAccessToken' => __( 'Event Access Token', 'instagram-feed' ), 'enterID' => __( 'Enter ID', 'instagram-feed' ), 'accessToken' => __( 'Instagram Access Token', 'instagram-feed' ), 'enterToken' => __( 'Enter Token', 'instagram-feed' ), 'addApp' => __( 'Add Instagram App to your group', 'instagram-feed' ), 'addAppDetails' => __( 'To get posts from your group, Instagram requires the "Smash Balloon Plugin" app to be added in your group settings. Just follow the directions here:', 'instagram-feed' ), 'addAppSteps' => array( __( 'Go to your group settings page by ', 'instagram-feed' ), sprintf( __( 'Search for "Smash Balloon" and select our app %1$s(see screenshot)%2$s', 'instagram-feed' ), '', 'Thumbnail Layout' ), __( 'Click "Add" and you are done.', 'instagram-feed' ) ), 'alreadyExists' => __( 'Account already exists', 'instagram-feed' ), 'alreadyExistsExplanation' => __( 'The Instagram account you added is already connected as a “Business†account. Would you like to replace it with a “Personal“ account? (Note: Personal accounts cannot be used to display Tagged or Hashtag feeds.)', 'instagram-feed' ), 'replaceWithPersonal' => __( 'Replace with Personal', 'instagram-feed' ), 'notAdmin' => __( 'For groups you are not an administrator of', 'instagram-feed' ), 'disclaimerMentions' => __( 'Due to Instagram’s limitations, you need to connect a business account to display a Mentions timeline', 'instagram-feed' ), 'disclaimerHashtag' => __( 'Due to Instagram’s limitations, you need to connect a business account to display a Hashtag feed', 'instagram-feed' ), 'notSureToolTip' => __( 'Select "Personal" if displaying a regular feed of posts, as this can display feeds from either a Personal or Business account. For displaying a Hashtag or Tagged feed, you must have an Instagram Business account. If needed, you can convert a Personal account into a Business account by following the directions {link}here{link}.', 'instagram-feed' ) ), 'footer' => array( 'heading' => __( 'Add feeds for popular social platforms with our other plugins', 'instagram-feed' ), ), 'personal' => __( 'Personal', 'instagram-feed' ), 'business' => __( 'Business', 'instagram-feed' ), 'notSure' => __( "I'm not sure", 'instagram-feed' ), ); } /** * For Other Platforms listed on the footer widget * * @return array * * @since 6.0 */ public static function builder_svg_icons() { $builder_svg_icons = array( 'rocketPremiumBlue' => '', 'youtube' => '', 'tiktok' => ' ', 'twitter' => '', 'instagram' => '', 'facebook' => '', 'reviews' => ' ', 'smash' => '', 'tag' => '', 'copy' => '', 'duplicate' => '', 'edit' => '', 'delete' => '', 'checkmark' => '', 'checkmarklarge' => '', 'information' => '', 'cog' => '', 'angleUp' => '', 'user_check' => '', 'users' => '', 'info' => '', 'list' => '', 'grid' => '', 'masonry' => '', 'carousel' => '', 'highlight' => '', 'desktop' => '', 'tablet' => '', 'mobile' => '', 'feed_layout' => '', 'color_scheme' => '', 'header' => '', 'article' => '', 'article_2' => '', 'like_box' => '', 'load_more' => '', 'lightbox' => '', 'source' => '', 'filter' => '', 'update' => '', 'sun' => '', 'moon' => '', 'visual' => '', 'text' => '', 'background' => '', 'cursor' => '', 'link' => '', 'thumbnail' => '', 'halfwidth' => '', 'fullwidth' => '', 'boxed' => '', 'corner' => '', 'preview' => '', 'flag' => '', 'copy2' => '', 'timelineIcon' => ' ', 'photosIcon' => ' ', 'videosIcon' => ' ', 'albumsIcon' => ' ', 'eventsIcon' => ' ', 'reviewsIcon' => ' ', 'featuredpostIcon' => ' ', 'singlealbumIcon' => ' ', 'socialwallIcon' => ' ', 'addPage' => '', 'addWidget' => '', 'plus' => '', 'eye1' => '', 'eyePreview' => '', 'facebookShare' => '', 'twitterShare' => '', 'linkedinShare' => '', 'mailShare' => '', 'successNotification' => '', 'errorNotification' => '', 'messageNotification' => '', 'albumsPreview' => ' ', 'featuredPostPreview' => ' ', 'issueSinglePreview' => ' ', 'playButton' => '', 'spinner' => '', 'rocket' => '', 'follow' => '', 'picture' => '', 'caption' => '', 'heart' => '', 'sort' => '', 'shop' => '', 'headerUser' => '', 'headerPhoto' => '', 'imageChooser' => '', 'usertimelineIcon' => ' ', 'publichashtagIcon' => ' ', 'taggedpostsIcon' => ' ', 'socialwall1Icon' => ' ', 'publichashtagIconFree' => '', 'taggedpostsIconFree' => '', 'socialwall1IconFree' => ' ', 'user' => '', 'hashtag' => '', 'mention' => '', 'tooltipHelpSvg' => '', 'shoppableDisabled' => ' ', 'shoppableEnabled' => ' ', 'ctaBoxes' => array( 'hashtag' => '', 'layout' => '', 'popups' => '', 'filter' => '' ), 'camera' => '', 'uploadFile' => '', 'addRoundIcon' =>'', 'loaderSVG' => '' ); return $builder_svg_icons; } public static function sb_other_plugins_modal() { check_ajax_referer( 'sbi_nonce', 'sbi_nonce' ); if ( ! current_user_can( 'activate_plugins' ) || ! current_user_can( 'install_plugins' ) ) { wp_send_json_error(); } $plugin = isset( $_POST['plugin'] ) ? sanitize_key( $_POST['plugin'] ) : ''; $sb_other_plugins = self::install_plugins_popup(); $plugin = isset( $sb_other_plugins[ $plugin ] ) ? $sb_other_plugins[ $plugin ] : false; if ( ! $plugin ) { wp_send_json_error(); } // Build the content for modals $output = '
' . $plugin['svgIcon'] . '

' . $plugin['name'] . 'Free

' . $plugin['author'] . '

' . $plugin['description'] . '

'; $plugin_install_data = array( 'step' => 'install', 'action' => 'sbi_install_addon', 'nonce' => wp_create_nonce( 'sbi-admin' ), 'plugin' => $plugin['plugin'], 'download_plugin' => $plugin['download_plugin'], ); if ( ! $plugin['installed'] ) { $output .= sprintf( "
", sbi_json_encode( $plugin_install_data ), __( 'Install', 'instagram-feed' ) ); } if ( $plugin['installed'] && ! $plugin['activated'] ) { $plugin_install_data['step'] = 'activate'; $plugin_install_data['action'] = 'sbi_activate_addon'; $output .= sprintf( "", sbi_json_encode( $plugin_install_data ), __( 'Activate', 'instagram-feed' ) ); } if ( $plugin['installed'] && $plugin['activated'] ) { $output .= sprintf( "", __( 'Plugin installed & activated', 'instagram-feed' ) ); } wp_send_json_success( ['output' => $output] ); wp_die(); } /** * Plugins information for plugin install modal in all feeds page on select source flow * * @since 6.0 * * @return array */ public static function install_plugins_popup() { // get the WordPress's core list of installed plugins if ( ! function_exists( 'get_plugins' ) ) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $installed_plugins = get_plugins(); $is_tiktok_installed = false; $tiktok_plugin = 'feeds-for-tiktok/feeds-for-tiktok.php'; if ( isset( $installed_plugins['tiktok-feeds-pro/tiktok-feeds-pro.php'] ) ) { $is_tiktok_installed = true; $tiktok_plugin = 'tiktok-feeds-pro/tiktok-feeds-pro.php'; } elseif ( isset( $installed_plugins['feeds-for-tiktok/feeds-for-tiktok.php'] ) ) { $is_tiktok_installed = true; } $is_reviews_installed = false; $reviews_plugin = 'reviews-feed/sb-reviews.php'; if ( isset( $installed_plugins['reviews-feed-pro/sb-reviews-pro.php'] ) ) { $is_reviews_installed = true; $reviews_plugin = 'reviews-feed-pro/sb-reviews-pro.php'; } elseif ( isset( $installed_plugins['reviews-feed/sb-reviews.php'] ) ) { $is_reviews_installed = true; } $is_facebook_installed = false; $facebook_plugin = 'custom-facebook-feed/custom-facebook-feed.php'; if ( isset( $installed_plugins['custom-facebook-feed-pro/custom-facebook-feed.php'] ) ) { $is_facebook_installed = true; $facebook_plugin = 'custom-facebook-feed/custom-facebook-feed.php'; } elseif ( isset( $installed_plugins['custom-facebook-feed/custom-facebook-feed.php'] ) ) { $is_facebook_installed = true; } $is_twitter_installed = false; $twitter_plugin = 'custom-twitter-feeds/custom-twitter-feed.php'; if ( isset( $installed_plugins['custom-twitter-feeds-pro/custom-twitter-feed.php'] ) ) { $is_twitter_installed = true; $twitter_plugin = 'custom-twitter-feeds-pro/custom-twitter-feed.php'; } elseif ( isset( $installed_plugins['custom-twitter-feeds/custom-twitter-feed.php'] ) ) { $is_twitter_installed = true; } $is_youtube_installed = false; $youtube_plugin = 'feeds-for-youtube/youtube-feed.php'; if ( isset( $installed_plugins['youtube-feed-pro/youtube-feed.php'] ) ) { $is_youtube_installed = true; $youtube_plugin = 'youtube-feed-pro/youtube-feed.php'; } elseif ( isset( $installed_plugins['feeds-for-youtube/youtube-feed.php'] ) ) { $is_youtube_installed = true; } $return = array( 'reviews' => array( 'displayName' => __( 'Reviews', 'instagram-feed' ), 'name' => __( 'Reviews Feed', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __( 'To display a Reviews feed, our Reviews plugin is required.
Increase conversions and build positive brand trust through Google and Yelp reviews from your customers. Provide social proof needed to turn visitors into customers.', 'instagram-feed' ), 'dashboard_permalink' => admin_url( 'admin.php?page=sbr' ), 'svgIcon' => ' ', 'installed' => $is_reviews_installed, 'activated' => is_plugin_active( $reviews_plugin ), 'plugin' => $reviews_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/reviews-feed.zip', ), 'facebook' => array( 'displayName' => __( 'Facebook', 'instagram-feed' ), 'name' => __( 'Facebook Feed', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __( 'To display a Facebook feed, our Facebook plugin is required.
It provides a clean and beautiful way to add your Facebook posts to your website. Grab your visitors attention and keep them engaged with your site longer.', 'instagram-feed' ), 'dashboard_permalink' => admin_url( 'admin.php?page=cff-feed-builder' ), 'svgIcon' => '', 'installed' => $is_facebook_installed, 'activated' => is_plugin_active( $facebook_plugin ), 'plugin' => $facebook_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-facebook-feed.zip', ), 'twitter' => array( 'displayName' => __( 'Twitter', 'instagram-feed' ), 'name' => __( 'Twitter Feed', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __( 'Custom Twitter Feeds is a highly customizable way to display tweets from your Twitter account. Promote your latest content and update your site content automatically.', 'instagram-feed' ), 'dashboard_permalink' => admin_url( 'admin.php?page=custom-twitter-feeds' ), 'svgIcon' => '', 'installed' => $is_twitter_installed, 'activated' => is_plugin_active( $twitter_plugin ), 'plugin' => $twitter_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-twitter-feeds.zip', ), 'youtube' => array( 'displayName' => __( 'YouTube', 'instagram-feed' ), 'name' => __( 'Feeds for YouTube', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __( 'To display a YouTube feed, our YouTube plugin is required. It provides a simple yet powerful way to display videos from YouTube on your website, Increasing engagement with your channel while keeping visitors on your website.', 'instagram-feed' ), 'dashboard_permalink' => admin_url( 'admin.php?page=youtube-feed' ), 'svgIcon' => '', 'installed' => $is_youtube_installed, 'activated' => is_plugin_active( $youtube_plugin ), 'plugin' => $youtube_plugin, 'download_plugin' => 'https://downloads.wordpress.org/plugin/feeds-for-youtube.zip', ), 'tiktok' => array( 'displayName' => __( 'TikTok', 'instagram-feed' ), 'name' => __( 'Feeds for TikTok', 'instagram-feed' ), 'author' => __( 'By Smash Balloon', 'instagram-feed' ), 'description' => __( "To display a TikTok feed, our TikTok plugin is required. It allows you to seamlessly integrate your TikTok account’s videos into your WordPress website.", 'instagram-feed' ), 'dashboard_permalink' => admin_url( 'admin.php?page=sbtt' ), 'svgIcon' => '', 'installed' => $is_tiktok_installed, 'activated' => is_plugin_active( $tiktok_plugin ), 'plugin' => $tiktok_plugin, 'download_plugin' => "https://downloads.wordpress.org/plugin/feeds-for-tiktok.zip", ) ); if ( version_compare(PHP_VERSION, '7.1.0') < 0 ) { $incompatible_plugins = array('reviews', 'tiktok'); foreach ( $incompatible_plugins as $plugin ) { if( isset( $return[$plugin] ) ) { unset( $return[$plugin] ); } } } return $return; } /** * Gets a list of info * Used in multiple places in the feed creator * Other Platforms + Social Links * Upgrade links * * @return array * * @since 6.0 */ public static function get_smashballoon_info() { $smash_info = array( 'colorSchemes' => array( 'facebook' => '#006BFA', 'twitter' => '#1B90EF', 'instagram' => '#BA03A7', 'youtube' => '#EB2121', 'linkedin' => '#007bb6', 'mail' => '#666', 'smash' => '#EB2121' ), 'upgrade' => array( 'name' => __( 'Upgrade to Pro', 'instagram-feed' ), 'icon' => 'instagram', 'link' => 'https://smashballoon.com/instagram-feed/' ), 'platforms' => array( array( 'name' => __( 'Facebook Feed', 'instagram-feed' ), 'icon' => 'facebook', 'link' => 'https://smashballoon.com/custom-facebook-feed/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=facebook' ), array( 'name' => __( 'Twitter Feed', 'instagram-feed' ), 'icon' => 'twitter', 'link' => 'https://smashballoon.com/custom-twitter-feeds/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=twitter' ), array( 'name' => __( 'YouTube Feed', 'instagram-feed' ), 'icon' => 'youtube', 'link' => 'https://smashballoon.com/youtube-feed/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=youtube' ), array( 'name' => __( 'Social Wall Plugin', 'instagram-feed' ), 'icon' => 'smash', 'link' => 'https://smashballoon.com/social-wall/?utm_campaign=instagram-free&utm_source=balloon&utm_medium=social-wall ', ) ), 'socialProfiles' => array( 'facebook' => 'https://www.facebook.com/SmashBalloon/', 'twitter' => 'https://twitter.com/smashballoon', ), 'morePlatforms' => array( 'instagram', 'youtube', 'twitter' ) ); return $smash_info; } /** * Text specific to onboarding. Will return an associative array 'active' => false * if onboarding has been dismissed for the user or there aren't any legacy feeds. * * @return array * * @since 4.0 */ public function get_onboarding_text() { // TODO: return if no legacy feeds $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( ! isset( $sbi_statuses_option['legacy_onboarding'] ) ) { return array( 'active' => false ); } if ( $sbi_statuses_option['legacy_onboarding']['active'] === false || self::onboarding_status() === 'dismissed' ) { return array( 'active' => false ); } $type = $sbi_statuses_option['legacy_onboarding']['type']; $text = array( 'active' => true, 'type' => $type, 'legacyFeeds' => array( 'heading' => __( 'Legacy Feed Settings', 'instagram-feed' ), 'description' => sprintf( __( 'These settings will impact %1$s legacy feeds on your site. You can learn more about what legacy feeds are and how they differ from new feeds %2$shere%3$s.', 'instagram-feed' ), '', '', '' ), ), 'getStarted' => __( 'You can now create and customize feeds individually. Click "Add New" to get started.', 'instagram-feed' ), ); if ( $type === 'single' ) { $text['tooltips'] = array( array( 'step' => 1, 'heading' => __( 'How you create a feed has changed', 'instagram-feed' ), 'p' => __( 'You can now create and customize feeds individually without using shortcode options.', 'instagram-feed' ) . ' ' . __( 'Click "Add New" to get started.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 2, 'heading' => __( 'Your existing feed is here', 'instagram-feed' ), 'p' => __( 'You can edit your existing feed from here, and all changes will only apply to this feed.', 'instagram-feed' ), 'pointer' => 'top' ) ); } else { $text['tooltips'] = array( array( 'step' => 1, 'heading' => __( 'How you create a feed has changed', 'instagram-feed' ), 'p' => __( 'You can now create and customize feeds individually without using shortcode options.', 'instagram-feed' ) . ' ' . __( 'Click "Add New" to get started.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 2, 'heading' => __( 'Your existing feeds are under "Legacy" feeds', 'instagram-feed' ), 'p' => __( 'You can edit the settings for any existing "legacy" feed (i.e. any feed created prior to this update) here.', 'instagram-feed' ) . ' ' . __( 'This works just like the old settings page and affects all legacy feeds on your site.', 'instagram-feed' ) ), array( 'step' => 3, 'heading' => __( 'Existing feeds work as normal', 'instagram-feed' ), 'p' => __( 'You don\'t need to update or change any of your existing feeds. They will continue to work as usual.', 'instagram-feed' ) . ' ' . __( 'This update only affects how new feeds are created and customized.', 'instagram-feed' ) ) ); } return $text; } public function get_customizer_onboarding_text() { if ( self::onboarding_status( 'customizer' ) === 'dismissed' ) { return array( 'active' => false ); } $text = array( 'active' => true, 'type' => 'customizer', 'tooltips' => array( array( 'step' => 1, 'heading' => __( 'Embedding a Feed', 'instagram-feed' ), 'p' => __( 'After you are done customizing the feed, click here to add it to a page or a widget.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 2, 'heading' => __( 'Customize', 'instagram-feed' ), 'p' => __( 'Change your feed layout, color scheme, or customize individual feed sections here.', 'instagram-feed' ), 'pointer' => 'top' ), array( 'step' => 3, 'heading' => __( 'Settings', 'instagram-feed' ), 'p' => __( 'Update your feed source, filter your posts, or change advanced settings here.', 'instagram-feed' ), 'pointer' => 'top' ) ) ); return $text; } /** * Text related to the feed customizer * * @return array * * @since 6.0 */ public function get_customize_screens_text() { $text = array( 'common' => array( 'preview' => __( 'Preview', 'instagram-feed' ), 'help' => __( 'Help', 'instagram-feed' ), 'embed' => __( 'Embed', 'instagram-feed' ), 'save' => __( 'Save', 'instagram-feed' ), 'sections' => __( 'Sections', 'instagram-feed' ), 'enable' => __( 'Enable', 'instagram-feed' ), 'background' => __( 'Background', 'instagram-feed' ), 'text' => __( 'Text', 'instagram-feed' ), 'inherit' => __( 'Inherit from Theme', 'instagram-feed' ), 'size' => __( 'Size', 'instagram-feed' ), 'color' => __( 'Color', 'instagram-feed' ), 'height' => __( 'Height', 'instagram-feed' ), 'placeholder' => __( 'Placeholder', 'instagram-feed' ), 'select' => __( 'Select', 'instagram-feed' ), 'enterText' => __( 'Enter Text', 'instagram-feed' ), 'hoverState' => __( 'Hover State', 'instagram-feed' ), 'sourceCombine' => __( 'Combine sources from multiple platforms using our Social Wall plugin', 'instagram-feed' ), ), 'tabs' => array( 'customize' => __( 'Customize', 'instagram-feed' ), 'settings' => __( 'Settings', 'instagram-feed' ), ), 'overview' => array( 'feedLayout' => __( 'Feed Layout', 'instagram-feed' ), 'colorScheme' => __( 'Color Scheme', 'instagram-feed' ), 'header' => __( 'Header', 'instagram-feed' ), 'posts' => __( 'Posts', 'instagram-feed' ), 'likeBox' => __( 'Like Box', 'instagram-feed' ), 'loadMore' => __( 'Load More Button', 'instagram-feed' ), ), 'feedLayoutScreen' => array( 'layout' => __( 'Layout', 'instagram-feed' ), 'list' => __( 'List', 'instagram-feed' ), 'grid' => __( 'Grid', 'instagram-feed' ), 'masonry' => __( 'Masonry', 'instagram-feed' ), 'carousel' => __( 'Carousel', 'instagram-feed' ), 'feedHeight' => __( 'Feed Height', 'instagram-feed' ), 'number' => __( 'Number of Posts', 'instagram-feed' ), 'columns' => __( 'Columns', 'instagram-feed' ), 'desktop' => __( 'Desktop', 'instagram-feed' ), 'tablet' => __( 'Tablet', 'instagram-feed' ), 'mobile' => __( 'Mobile', 'instagram-feed' ), 'bottomArea' => array( 'heading' => __( 'Tweak Post Styles', 'instagram-feed' ), 'description' => __( 'Change post background, border radius, shadow etc.', 'instagram-feed' ), ) ), 'colorSchemeScreen' => array( 'scheme' => __( 'Scheme', 'instagram-feed' ), 'light' => __( 'Light', 'instagram-feed' ), 'dark' => __( 'Dark', 'instagram-feed' ), 'custom' => __( 'Custom', 'instagram-feed' ), 'customPalette' => __( 'Custom Palette', 'instagram-feed' ), 'background2' => __( 'Background 2', 'instagram-feed' ), 'text2' => __( 'Text 2', 'instagram-feed' ), 'link' => __( 'Link', 'instagram-feed' ), 'bottomArea' => array( 'heading' => __( 'Overrides', 'instagram-feed' ), 'description' => __( 'Colors that have been overridden from individual post element settings will not change. To change them, you will have to reset overrides.', 'instagram-feed' ), 'ctaButton' => __( 'Reset Overrides.', 'instagram-feed' ), ) ), 'shoppableFeedScreen' => array( 'heading1' => __( 'Upgrade to Pro and make your Instagram Feed Shoppable', 'instagram-feed' ), 'description1' => __( 'This feature links the post to the one specified in your caption.

Don’t want to add links to the caption? You can add links manually to each post.


', 'instagram-feed' ), 'heading2' => __( 'Tap “Add†or “Update†on an
image to add/update it’s URL', 'instagram-feed' ), ) ); $text['onboarding'] = $this->get_customizer_onboarding_text(); return $text; } /** * Returns an associate array of all existing sources along with their data * * @param int $page * * @return array * * @since 6.0 */ public static function get_source_list( $page = 1 ) { $args['page'] = $page; $source_data = SBI_Db::source_query( $args ); $encryption = new \SB_Instagram_Data_Encryption(); $return = array(); foreach ( $source_data as $source ) { $info = ! empty( $source['info'] ) ? json_decode( $encryption->decrypt( $source['info'] ), true ) : array(); $source['header_data'] = $info; $settings = array( 'gdpr' => 'no' ); $avatar = \SB_Instagram_Parse::get_avatar( $info, $settings ); if ( \SB_Instagram_Connected_Account::local_avatar_exists( $source['username'] ) ) { $source['local_avatar_url'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $source['username'] ); $source['local_avatar'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $source['username'] ); } else { $source['local_avatar'] = false; } $source['avatar_url'] = is_bool( $avatar ) ? \SB_Instagram_Parse::get_avatar_url( $info, $settings ) : false; $source['just_added'] = ( ! empty( $_GET['sbi_username'] ) && isset( $info['username'] ) && $info['username'] === $_GET['sbi_username'] ); $source['error_encryption'] = false; if ( isset( $source['access_token'] ) && strpos( $source['access_token'], 'IG' ) === false && strpos( $source['access_token'], 'EA' ) === false && ! $encryption->decrypt( $source['access_token'] ) ) { $source['error_encryption'] = true; } $return[] = $source; } return $return; } /** * Get Links with UTM * * @return array * * @since 4.0 */ public static function get_links_with_utm() { $license_key = null; if ( get_option( 'sbi_license_key' ) ) { $license_key = get_option( 'sbi_license_key' ); } $all_access_bundle = sprintf( 'https://smashballoon.com/all-access/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=all-feeds&utm_medium=footer-banner&utm_content=learn-more', $license_key ); $all_access_bundle_popup = sprintf( 'https://smashballoon.com/all-access/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=balloon&utm_medium=all-access', $license_key ); $sourceCombineCTA = sprintf( 'https://smashballoon.com/social-wall/?license_key=%s&upgrade=true&utm_campaign=instagram-free&utm_source=customizer&utm_medium=sources&utm_content=social-wall', $license_key ); return array( 'allAccessBundle' => $all_access_bundle, 'popup' => array( 'allAccessBundle' => $all_access_bundle_popup, 'fbProfile' => 'https://www.facebook.com/SmashBalloon/', 'twitterProfile' => 'https://twitter.com/smashballoon', ), 'sourceCombineCTA' => $sourceCombineCTA, 'multifeedCTA' => 'https://smashballoon.com/extensions/multifeed/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=sources&utm_content=multifeed', 'doc' => 'https://smashballoon.com/docs/instagram/?utm_campaign=instagram-free&utm_source=support&utm_medium=view-documentation-button&utm_content=view-documentation', 'blog' => 'https://smashballoon.com/blog/?utm_campaign=instagram-free&utm_source=support&utm_medium=view-blog-button&utm_content=view-blog', 'gettingStarted' => 'https://smashballoon.com/docs/getting-started/?instagram&utm_campaign=instagram-free&utm_source=support&utm_medium=getting-started-button&utm_content=getting-started', ); } public static function get_social_wall_links() { return array( '' . __( 'All Feeds', 'instagram-feed' ) . '', '' . __( 'Settings', 'instagram-feed' ) . '', '' . __( 'oEmbeds', 'instagram-feed' ) . '', '' . __( 'Extensions', 'instagram-feed' ) . '', '' . __( 'About Us', 'instagram-feed' ) . '', '' . __( 'Support', 'instagram-feed' ) . '', ); } /** * Returns an associate array of all existing feeds along with their data * * @return array * * @since 6.0 */ public static function get_feed_list( $feeds_args = array() ) { if ( ! empty( $_GET['feed_id'] ) ) { return array(); } $feeds_data = SBI_Db::feeds_query( $feeds_args ); $i = 0; foreach ( $feeds_data as $single_feed ) { $args = array( 'feed_id' => '*' . $single_feed['id'], 'html_location' => array( 'content' ), ); $count = \SB_Instagram_Feed_Locator::count( $args ); $content_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); // if this is the last page, add in the header footer and sidebar locations if ( count( $content_locations ) < SBI_Db::RESULTS_PER_PAGE ) { $args = array( 'feed_id' => '*' . $single_feed['id'], 'html_location' => array( 'header', 'footer', 'sidebar' ), 'group_by' => 'html_location', ); $other_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $locations = array(); $combined_locations = array_merge( $other_locations, $content_locations ); } else { $combined_locations = $content_locations; } foreach ( $combined_locations as $location ) { $page_text = get_the_title( $location['post_id'] ); if ( $location['html_location'] === 'header' ) { $html_location = __( 'Header', 'instagram-feed' ); } elseif ( $location['html_location'] === 'footer' ) { $html_location = __( 'Footer', 'instagram-feed' ); } elseif ( $location['html_location'] === 'sidebar' ) { $html_location = __( 'Sidebar', 'instagram-feed' ); } else { $html_location = __( 'Content', 'instagram-feed' ); } $shortcode_atts = json_decode( $location['shortcode_atts'], true ); $shortcode_atts = is_array( $shortcode_atts ) ? $shortcode_atts : array(); $full_shortcode_string = '[instagram-feed'; foreach ( $shortcode_atts as $key => $value ) { if ( ! empty( $value ) ) { $full_shortcode_string .= ' ' . esc_html( $key ) . '="' . esc_html( $value ) . '"'; } } $full_shortcode_string .= ']'; $locations[] = array( 'link' => esc_url( get_the_permalink( $location['post_id'] ) ), 'page_text' => $page_text, 'html_location' => $html_location, 'shortcode' => $full_shortcode_string ); } $feeds_data[ $i ]['instance_count'] = $count; $feeds_data[ $i ]['location_summary'] = $locations; $settings = json_decode( $feeds_data[ $i ]['settings'], true ); $settings['feed'] = $single_feed['id']; $instagram_feed_settings = new \SB_Instagram_Settings( $settings, sbi_defaults() ); $feeds_data[ $i ]['settings'] = $instagram_feed_settings->get_settings(); $i++; } return $feeds_data; } /** * Returns an associate array of all existing sources along with their data * * @return array * * @since 4.0 */ public function get_legacy_feed_list() { if ( ! empty( $_GET['feed_id'] ) ) { return array(); } $sbi_statuses = get_option( 'sbi_statuses', array() ); $sources_list = self::get_source_list(); if ( empty( $sbi_statuses['support_legacy_shortcode'] ) ) { return array(); } $args = array( 'html_location' => array( 'header', 'footer', 'sidebar', 'content' ), 'group_by' => 'shortcode_atts', 'page' => 1 ); $feeds_data = \SB_Instagram_Feed_Locator::legacy_instagram_feed_locator_query( $args ); if ( empty( $feeds_data ) ) { $args = array( 'html_location' => array( 'header', 'footer', 'sidebar', 'content' ), 'group_by' => 'shortcode_atts', 'page' => 1 ); $feeds_data = \SB_Instagram_Feed_Locator::legacy_instagram_feed_locator_query( $args ); } $feed_saver = new SBI_Feed_Saver( 'legacy' ); $settings = $feed_saver->get_feed_settings(); $default_type = 'timeline'; if ( isset( $settings['feedtype'] ) ) { $default_type = $settings['feedtype']; } elseif ( isset( $settings['type'] ) ) { if ( strpos( $settings['type'], ',' ) === false ) { $default_type = $settings['type']; } } $i = 0; $reindex = false; foreach ( $feeds_data as $single_feed ) { $args = array( 'shortcode_atts' => $single_feed['shortcode_atts'], 'html_location' => array( 'content' ), ); $content_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $count = \SB_Instagram_Feed_Locator::count( $args ); if ( count( $content_locations ) < SBI_Db::RESULTS_PER_PAGE ) { $args = array( 'feed_id' => $single_feed['feed_id'], 'html_location' => array( 'header', 'footer', 'sidebar' ), 'group_by' => 'html_location' ); $other_locations = \SB_Instagram_Feed_Locator::instagram_feed_locator_query( $args ); $combined_locations = array_merge( $other_locations, $content_locations ); } else { $combined_locations = $content_locations; } $locations = array(); foreach ( $combined_locations as $location ) { $page_text = get_the_title( $location['post_id'] ); if ( $location['html_location'] === 'header' ) { $html_location = __( 'Header', 'instagram-feed' ); } elseif ( $location['html_location'] === 'footer' ) { $html_location = __( 'Footer', 'instagram-feed' ); } elseif ( $location['html_location'] === 'sidebar' ) { $html_location = __( 'Sidebar', 'instagram-feed' ); } else { $html_location = __( 'Content', 'instagram-feed' ); } $shortcode_atts = json_decode( $location['shortcode_atts'], true ); $shortcode_atts = is_array( $shortcode_atts ) ? $shortcode_atts : array(); $full_shortcode_string = '[instagram-feed'; foreach ( $shortcode_atts as $key => $value ) { if ( ! empty( $value ) ) { if ( is_array( $value ) ) { $value = implode( ',', $value ); } $full_shortcode_string .= ' ' . esc_html( $key ) . '="' . esc_html( $value ) . '"'; } } $full_shortcode_string .= ']'; $locations[] = array( 'link' => esc_url( get_the_permalink( $location['post_id'] ) ), 'page_text' => $page_text, 'html_location' => $html_location, 'shortcode' => $full_shortcode_string ); } $shortcode_atts = json_decode( $feeds_data[ $i ]['shortcode_atts'], true ); $shortcode_atts = is_array( $shortcode_atts ) ? $shortcode_atts : array(); $full_shortcode_string = '[instagram-feed'; foreach ( $shortcode_atts as $key => $value ) { if ( ! empty( $value ) ) { if ( is_array( $value ) ) { $value = implode( ',', $value ); } $full_shortcode_string .= ' ' . esc_html( $key ) . '="' . esc_html( $value ) . '"'; } } $full_shortcode_string .= ']'; $feeds_data[ $i ]['shortcode'] = $full_shortcode_string; $feeds_data[ $i ]['instance_count'] = $count; $feeds_data[ $i ]['location_summary'] = $locations; $feeds_data[ $i ]['feed_name'] = self::get_legacy_feed_name( $sources_list, $feeds_data[ $i ]['feed_id'] ); $feeds_data[ $i ]['feed_type'] = $default_type; if ( isset( $shortcode_atts['feedtype'] ) ) { $feeds_data[ $i ]['feed_type'] = $shortcode_atts['feedtype']; } elseif ( isset( $shortcode_atts['type'] ) ) { if ( strpos( $shortcode_atts['type'], ',' ) === false ) { $feeds_data[ $i ]['feed_type'] = $shortcode_atts['type']; } } if ( isset( $feeds_data[ $i ]['id'] ) ) { unset( $feeds_data[ $i ]['id'] ); } if ( isset( $feeds_data[ $i ]['html_location'] ) ) { unset( $feeds_data[ $i ]['html_location'] ); } if ( isset( $feeds_data[ $i ]['last_update'] ) ) { unset( $feeds_data[ $i ]['last_update'] ); } if ( isset( $feeds_data[ $i ]['post_id'] ) ) { unset( $feeds_data[ $i ]['post_id'] ); } if ( ! empty( $shortcode_atts['feed'] ) ) { $reindex = true; unset( $feeds_data[ $i ] ); } if ( isset( $feeds_data[ $i ]['shortcode_atts'] ) ) { unset( $feeds_data[ $i ]['shortcode_atts'] ); } $i++; } if ( $reindex ) { $feeds_data = array_values( $feeds_data ); } // if there were no feeds found in the locator table we still want the legacy settings to be available // if it appears as though they had used version 3.x or under at some point. if ( empty( $feeds_data ) && ! is_array( $sbi_statuses['support_legacy_shortcode'] ) && ( $sbi_statuses['support_legacy_shortcode'] ) ) { $feeds_data = array( array( 'feed_id' => __( 'Legacy Feed', 'instagram-feed' ) . ' ' . __( '(unknown location)', 'instagram-feed' ), 'feed_name' => __( 'Legacy Feed', 'instagram-feed' ) . ' ' . __( '(unknown location)', 'instagram-feed' ), 'shortcode' => '[instagram-feed]', 'feed_type' => '', 'instance_count' => false, 'location_summary' => array() ) ); } return $feeds_data; } public static function get_legacy_feed_name( $sources_list, $source_id ) { foreach ( $sources_list as $source ) { if ( $source['account_id'] == $source_id ) { return $source['username']; } } return $source_id; } /** * Status of the onboarding sequence for specific user * * @return string|boolean * * @since 6.0 */ public static function onboarding_status( $type = 'newuser' ) { $onboarding_statuses = get_user_meta( get_current_user_id(), 'sbi_onboarding', true ); $status = false; if ( ! empty( $onboarding_statuses ) ) { $statuses = maybe_unserialize( $onboarding_statuses ); $status = isset( $statuses[ $type ] ) ? $statuses[ $type ] : false; } return $status; } /** * Update status of onboarding sequence for specific user * * @return string|boolean * * @since 6.0 */ public static function update_onboarding_meta( $value, $type = 'newuser' ) { $onboarding_statuses = get_user_meta( get_current_user_id(), 'sbi_onboarding', true ); if ( ! empty( $onboarding_statuses ) ) { $statuses = maybe_unserialize( $onboarding_statuses ); $statuses[ $type ] = $value; } else { $statuses = array( $type => $value ); } $statuses = maybe_serialize( $statuses ); update_user_meta( get_current_user_id(), 'sbi_onboarding', $statuses ); } /** * Used to dismiss onboarding using AJAX * * @since 6.0 */ public static function after_dismiss_onboarding() { check_ajax_referer( 'sbi-admin', 'nonce' ); $cap = current_user_can( 'manage_instagram_feed_options' ) ? 'manage_instagram_feed_options' : 'manage_options'; $cap = apply_filters( 'sbi_settings_pages_capability', $cap ); if ( current_user_can( $cap ) ) { $type = 'newuser'; if ( isset( $_POST['was_active'] ) ) { $type = sanitize_key( $_POST['was_active'] ); } self::update_onboarding_meta( 'dismissed', $type ); } wp_die(); } public static function add_customizer_att( $atts ) { if ( ! is_array( $atts ) ) { $atts = array(); } $atts['feedtype'] = 'customizer'; return $atts; } /** * Feed Builder Wrapper. * * @since 6.0 */ public function feed_builder() { include_once SBI_BUILDER_DIR . 'templates/builder.php'; } /** * For types listed on the top of the select feed type screen * * @return array * * @since 6.0 */ public function get_feed_types() { $feed_types = array( array( 'type' => 'user', 'title' => __( 'User Timeline', 'instagram-feed' ), 'description' => __( 'Fetch posts from your Instagram profile', 'instagram-feed' ), 'icon' => 'usertimelineIcon' ), array( 'type' => 'hashtag', 'title' => __( 'Public Hashtag', 'instagram-feed' ), 'description' => __( 'Fetch posts from a public Instagram hashtag', 'instagram-feed' ), 'tooltip' => __( 'Hashtag feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'publichashtagIcon' ), array( 'type' => 'tagged', 'title' => __( 'Tagged Posts', 'instagram-feed' ), 'description' => __( 'Display posts your Instagram account has been tagged in', 'instagram-feed' ), 'tooltip' => __( 'Tagged posts feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'taggedpostsIcon' ), array( 'type' => 'socialwall', 'title' => __( 'Social Wall', 'instagram-feed' ), 'description' => __( 'Create a feed with sources from different social platforms', 'instagram-feed' ), 'icon' => 'socialwall1Icon' ) ); return $feed_types; } /** * For types listed on the bottom of the select feed type screen * * @return array * * @since 6.0 */ public function get_advanced_feed_types() { $feed_types = array( array( 'type' => 'hashtag', 'title' => __( 'Public Hashtag', 'instagram-feed' ), 'description' => __( 'Fetch posts from a public Instagram hashtag', 'instagram-feed' ), 'tooltip' => __( 'Hashtag feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'publichashtagIcon' ), array( 'type' => 'tagged', 'title' => __( 'Tagged Posts', 'instagram-feed' ), 'description' => __( 'Display posts your Instagram account has been tagged in', 'instagram-feed' ), 'tooltip' => __( 'Tagged posts feeds require a connected Instagram business account', 'instagram-feed' ), 'businessRequired' => true, 'icon' => 'taggedpostsIcon' ), array( 'type' => 'socialwall', 'title' => __( 'Social Wall', 'instagram-feed' ), 'description' => __( 'Create a feed with sources from different social platforms', 'instagram-feed' ), 'icon' => 'socialwall1Icon' ), ); return $feed_types; } /** * Personal Account * * @return array * * @since 6.0.8 */ public static function personal_account_screen_text() { return array( 'mainHeading1' => __( 'We’re almost there...', 'instagram-feed' ), 'mainHeading2' => __( 'Update Personal Account', 'instagram-feed' ), 'mainHeading3' => __( 'Add Instagram Profile Picture and Bio', 'instagram-feed' ), 'mainDescription' => __( 'Instagram does not provide us access to your profile picture or bio for personal accounts. Would you like to set up a custom profile photo and bio?.', 'instagram-feed' ), 'bioLabel' => __( 'Bio (140 Characters)', 'instagram-feed' ), 'bioPlaceholder' => __( 'Add your profile bio here', 'instagram-feed' ), 'confirmBtn' => __( 'Yes, let\'s do it', 'instagram-feed' ), 'cancelBtn' => __( 'No, maybe later', 'instagram-feed' ), 'uploadBtn' => __( 'Upload Profile Picture', 'instagram-feed' ) ); } /** * Get Smahballoon Plugins Info * * @since 6.2.9 */ public static function get_smashballoon_plugins_info() { $active_sb_plugins = Util::get_sb_active_plugins_info(); return [ 'facebook' => [ 'installed' => $active_sb_plugins['is_facebook_installed'], 'class' => 'CFF_Elementor_Widget', 'link' => 'https://smashballoon.com/custom-facebook-feed/', 'icon' => '', 'description' => __('Custom Facebook Feeds is a highly customizable way to display tweets from your Facebook account. Promote your latest content and update your site content automatically.', 'instagram-feed'), 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-facebook-feed.zip', ], 'instagram' => [ 'installed' => $active_sb_plugins['is_instagram_installed'], 'class' => 'SBI_Elementor_Widget', 'link' => 'https://smashballoon.com/instagram-feed/', 'icon' => '', 'description' => __('Instagram Feeds is a highly customizable way to display tweets from your Instagram account. Promote your latest content and update your site content automatically.', 'instagram-feed'), 'download_plugin' => 'https://downloads.wordpress.org/plugin/instagram-feed.zip', ], 'twitter' => [ 'installed' => $active_sb_plugins['is_twitter_installed'], 'class' => 'CTF_Elementor_Widget', 'link' => 'https://smashballoon.com/custom-twitter-feeds/', 'icon' => '', 'description' => __('Custom Twitter Feeds is a highly customizable way to display tweets from your Twitter account. Promote your latest content and update your site content automatically.', 'instagram-feed'), 'download_plugin' => 'https://downloads.wordpress.org/plugin/custom-twitter-feeds.zip', ], 'youtube' => [ 'installed' => $active_sb_plugins['is_youtube_installed'], 'class' => 'SBY_Elementor_Widget', 'link' => 'https://smashballoon.com/youtube-feed/', 'icon' => '', 'description' => __('YouTube Feeds is a highly customizable way to display tweets from your YouTube account. Promote your latest content and update your site content automatically.', 'instagram-feed'), 'download_plugin' => 'https://downloads.wordpress.org/plugin/feeds-for-youtube.zip', ] ]; } } instagram-feed/inc/Builder/SBI_Post_Set.php000064400000011210151435171370014541 0ustar00feed_id = $feed_id; $this->transient_name = '*' . $feed_id; $this->data = array(); } /** * @return array|object * * @since 6.0 */ public function get_data() { return $this->data; } /** * @return array|object * * @since 6.0 */ public function get_comments_data() { return $this->comments_data; } /** * @return array * * @since 6.0 */ public function get_feed_settings() { return $this->feed_settings; } /** * @return array * * @since 6.0 */ public function get_converted_settings() { return $this->converted_settings; } /** * Sets the settings in builder form as well as converted * settings for general use in the plugin * * @since 6.0 */ public function init( $customizerBuilder = false, $previewSettings = false ) { $saver = new SBI_Feed_Saver( $this->feed_id ); if( $customizerBuilder && $previewSettings != false){ $this->feed_settings = $saver->get_feed_settings_preview( $previewSettings ); } else{ $this->feed_settings = $saver->get_feed_settings(); } $this->converted_settings = SBI_Post_Set::builder_to_general_settings_convert( $this->feed_settings ); } /** * Gathers posts from the API until the minimum number of posts * for the feed are retrieved then stores the results * * @since 6.0 */ public function fetch() { $post_data = []; $this->data = $post_data; } /** * Gathers comments for posts. * * @return array * * @since 6.0 */ public function fetch_comments() { if ( empty( $this->data ) ) { return array(); } $comments = []; $this->comments_data = $comments; return $comments; } /** * Converts raw settings from the cff_feed_settings table into the * more general way that the "CFF_Shortcode" class, * "cff_get_processed_options" method does * * @param array $builder_settings * * @return array * * @since 6.0 */ public static function builder_to_general_settings_convert( $builder_settings ) { $settings_with_multiples = array(); foreach ( $settings_with_multiples as $array_setting ) { if ( is_array( $builder_settings[ $array_setting ] ) ) { $builder_settings[ $array_setting ] = implode( ',', $builder_settings[ $array_setting ] ); } } if ( isset( $builder_settings['sources'] ) && is_array($builder_settings['sources'])) { $access_tokens = array(); $ids = array(); $id_access_tokens = array(); $sources_setting = array(); foreach ( $builder_settings['sources'] as $source ) { $source_array = array(); if ( ! is_array( $source ) ) { $args = array( 'id' => $source ); if ( isset( $builder_settings['feedtype'] ) && $builder_settings['feedtype'] == 'events' ){ $args['privilege'] = 'events'; } $source_query = SBI_Db::source_query( $args ); if ( isset( $source_query[0] ) ) { $source_array = $source_query[0]; $sources_setting[] = $source_query[0]; } } else { $source_array = $source; } if ( ! empty( $source_array ) ) { $access_tokens[] = $source_array['access_token']; } } if ( ! empty( $sources_setting ) ) { $builder_settings['sources'] = $sources_setting; } } return $builder_settings; } /** * Convert settings from 3.x for use in the builder in 6.0+ * * @param array $atts * * @return array * * @since 6.0 */ public static function legacy_to_builder_convert( $atts = array() ) { $processed_settings = []; return $processed_settings; } /** * Settings that can include an array of values * * @return array * * @since 6.0 */ public static function get_settings_with_multiple() { $settings_with_multiples = []; return $settings_with_multiples; } /** * Used for changing the settings used for general front end feeds * * @param array $builder_settings * * @return array * * @since 6.0 */ public static function filter_general_settings( $builder_settings ) { return $builder_settings; } /** * Used for changing the settings for feeds being edited in the customizer * * @param array $processed_settings * * @return array * * @since 6.0 */ public static function filter_builder_settings( $processed_settings ) { return $processed_settings; } }instagram-feed/inc/Builder/SBI_Theme_CSS.php000064400000014753151435171370014572 0ustar00file = $file; } /** * Whether or not a cache exists for this stylesheet. Updates daily or when the theme's stylesheet changes * * @return bool * * @since 6.0 */ public function is_cached() { $stored_styles = get_option( 'sbi_theme_styles', array( 'file' => '', 'last_checked' => 0, 'styles' => array() ) ); if ( empty( $stored_styles['file'] ) || $stored_styles['file'] !== $this->file ) { return false; } if ( empty( $stored_styles['last_checked'] ) || $stored_styles['last_checked'] < (time() - DAY_IN_SECONDS) ) { return false; } $this->styles = $stored_styles['styles']; return true; } /** * Stores the styles in a wp_option * * @return bool * * @since 6.0 */ public function cache() { $stored_styles = get_option( 'sbi_theme_styles', array( 'file' => '', 'last_checked' => 0, 'styles' => array() ) ); $stored_styles['file'] = $this->file; $stored_styles['styles'] = $this->styles; $stored_styles['last_checked'] = time(); return update_option( 'sbi_theme_styles', $stored_styles, false ); } /** * @return array * * @since 6.0 */ public function get_styles() { return $this->styles; } /** * Makes an HTTP request to get the contents of the stylesheet * * @since 6.0 */ public function load_css() { $url = $this->file; $args = array( 'timeout' => 60, ); $response = wp_remote_get( esc_url_raw( $url ), $args ); if ( ! is_wp_error( $response ) ) { // certain ways of representing the html for double quotes causes errors so replaced here. $this->css = $response['body']; } else { $this->css = false; } } /** * Uses a regex to detect selectors and styles and coverts them to key => value pairs * * @return bool * * @since 6.0 */ public function parse() { if ( empty( $this->css ) ) { return false; } $css = $this->css; preg_match_all( '/(?ims)([a-z0-9\s\.\:#_\-@,]+)\{([^\}]*)\}/', $css, $arr); $result = array(); foreach ( $arr[0] as $i => $x ){ $selector = trim( $arr[1][ $i ] ); $rules = explode( ';', trim( $arr[2][ $i ] ) ); $rules_arr = array(); foreach ( $rules as $strRule ) { if ( !empty( $strRule ) ) { $rule = explode( ":", $strRule ); $rule_0 = isset( $rule[0] ) ? $rule[0] : 'null'; $rule_1 = isset( $rule[1] ) ? $rule[1] : ''; $rules_arr[ trim($rule_0) ] = trim( $rule_1 ); } } $selectors = explode(',', trim( $selector ) ); foreach ( $selectors as $strSel ) { if ( ! isset( $result[ $strSel ] ) ) { $result[ $strSel ] = $rules_arr; } else { $result[ $strSel . '_2' ] = $rules_arr; } } } $this->parsed = $result; } /** * Looks for styles based on specified selectors that are used * in generating the style HTML * * @return array * * @since 6.0 */ public function find_styles() { if ( empty( $this->css ) ) { return array(); } foreach ( $this->parsed as $selector => $property_array ) { foreach ( $property_array as $property => $style ) { $this->process( $selector, $property, $style ); } } } /** * Loop through all selectors and see if they can be used in our generated * style HTML * * @param string $selector * @param string $property * @param string $style * * @since 6.0 */ public function process( $selector, $property, $style ) { $selector = trim( $selector ); if ( $selector === 'body' ) { if ( in_array( $property, array( 'color', 'background-color', 'background', 'font-size' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } elseif ( $selector === 'a' ) { if ( in_array( $property, array( 'color', 'font-weight', 'text-decoration' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } elseif ( $selector === 'a:hover' ) { if ( in_array( $property, array( 'color', 'font-weight', 'text-decoration' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } elseif ( $selector === 'p' ) { if ( in_array( $property, array( 'color', 'font-weight', 'font-size' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } elseif ( $selector === 'h3' ) { if ( in_array( $property, array( 'color', 'font-weight', 'font-size' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } elseif ( $selector === '.entry-content' ) { if ( in_array( $property, array( 'color', 'font-size' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } elseif ( $selector === '.entry-content a' ) { if ( in_array( $property, array( 'color', 'font-weight', 'text-decoration' ), true ) ) { if ( ! isset( $this->styles[ $selector ]['properties'][ $property ]['style'] ) ) { $this->styles[ $selector ]['properties'][ $property ]['style'] = $style; } } } } /** * Creates the actual style HTML as a string * * @return string * * @since 6.0 */ public function generate_style_html() { if ( empty( $this->styles ) ) { return ''; } $wrap_selector = self::WRAP_SELECTOR; $html = ''; return $html; } } instagram-feed/inc/Builder/Controls/SB_Text_Control.php000064400000002162151435171370017125 0ustar00
{{control.fieldPrefix.replace(/ /g," ")}}
{{control.fieldSuffix.replace(/ /g," ")}}
{{genericText.clear.replace(/ /g," ")}}
{{genericText.name}}
{{genericText.edit}}
{{control.label}}
{{control.toggle.label}}
{{control.label}}
{{toggle.label}}
{{control.fieldPrefix.replace(/ /g," ")}}
{{control.fieldSuffix.replace(/ /g," ")}}
{{control.label}}
Pro
{{genericText.reset}}
{{genericText.reset}}
'', 'type' => '', 'modelname' => '', 'layout' => 'full', 'reverse' => 'false', 'default' => '', 'seperator' => 'none', 'heading' => '', 'description' => '', 'tooltip' => '', ]; } /** * Control Output * * * @since 4.0 * @access public * * @return HTML */ public function get_control_output($controlEditingTypeModel){} /** * Getting Editing Control Type * * * @since 1.0.0 * @access public * * @return String */ public function get_control_edit_type($editingType){ switch ($editingType) { case 'settings': return 'customizerFeedData.settings'; break; } } /** * Get Control HTML. * * * @since 4.0 * @access public * * @return HTML */ public function print_control_wrapper($editingType){ $control_type = $this->get_type(); $controlEditingTypeModel = $this->get_control_edit_type($editingType); ?>
get_control_output($controlEditingTypeModel); ?>
get_control_sources_output($controlEditingTypeModel); $this->get_control_shoppable_disabled_output($controlEditingTypeModel); $this->get_control_shoppable_enabled_output($controlEditingTypeModel); $this->get_control_shoppable_selected_post_output($controlEditingTypeModel); $this->get_control_moderation_mode_output($controlEditingTypeModel); } /** * Shoppable Feed Disabled Output Control * * * @since 4.0 * @access public * * @return HTML */ public function get_control_shoppable_disabled_output($controlEditingTypeModel){ ?>
{{control.switcher.label}}
{{genericText.moderationMode}}
{{moderationItem.label}}
{{moderationItem.description}}
{{genericText.moderationModeEnterPostId}}
is_legacy = true; $this->insert_id = 0; } else { $this->is_legacy = false; $this->insert_id = $insert_id; } } /** * Feed insert ID if it exists * * @return bool|int * * @since 6.0 */ public function get_feed_id() { if ( $this->is_legacy ) { return 'legacy'; } if ( ! empty( $this->insert_id ) ) { return $this->insert_id; } else { return false; } } /** * @param array $data * * @since 6.0 */ public function set_data( $data ) { $this->data = $data; } /** * @param string $feed_name * * @since 6.0 */ public function set_feed_name( $feed_name ) { $this->feed_name = $feed_name; } /** * @param array $feed_db_data * * @return array * * @since 6.0 */ public function get_feed_db_data() { return $this->feed_db_data; } /** * Adds a new feed if there is no associated feed * found. Otherwise updates the exiting feed. * * @return false|int * * @since 6.0 */ public function update_or_insert() { $this->sanitize_and_sort_data(); if ( $this->exists_in_database() ) { return $this->update(); } else { return $this->insert(); } } /** * Whether or not a feed exists with the * associated insert ID * * @return bool * * @since 6.0 */ public function exists_in_database() { if ( $this->is_legacy ) { return true; } if ( $this->insert_id === false ) { return false; } $args = array( 'id' => $this->insert_id ); $results = SBI_Db::feeds_query( $args ); return isset( $results[0] ); } /** * Inserts a new feed from sanitized and sorted data. * Some data is saved in the sbi_feeds table and some is * saved in the sbi_feed_settings table. * * @return false|int * * @since 6.0 */ public function insert() { if ( $this->is_legacy ) { return $this->update(); } if ( ! isset( $this->sanitized_and_sorted_data ) ) { return false; } $settings_array = SBI_Feed_Saver::format_settings( $this->sanitized_and_sorted_data['feed_settings'] ); $this->sanitized_and_sorted_data['feeds'][] = array( 'key' => 'settings', 'values' => array( sbi_json_encode( $settings_array ) ) ); if ( ! empty( $this->feed_name ) ) { $this->sanitized_and_sorted_data['feeds'][] = array( 'key' => 'feed_name', 'values' => array( $this->feed_name ) ); } $this->sanitized_and_sorted_data['feeds'][] = array( 'key' => 'status', 'values' => array( 'publish' ) ); $insert_id = SBI_Db::feeds_insert( $this->sanitized_and_sorted_data['feeds'] ); if ( $insert_id ) { $this->insert_id = $insert_id; return $insert_id; } return false; } /** * Updates an existing feed and related settings from * sanitized and sorted data. * * @return false|int * * @since 6.0 */ public function update() { if ( ! isset( $this->sanitized_and_sorted_data ) ) { return false; } $args = array( 'id' => $this->insert_id ); $settings_array = SBI_Feed_Saver::format_settings( $this->sanitized_and_sorted_data['feed_settings'] ); if ( $this->is_legacy ) { $to_save_json = sbi_json_encode( $settings_array ); return update_option( 'sbi_legacy_feed_settings', $to_save_json, false ); } $this->sanitized_and_sorted_data['feeds'][] = array( 'key' => 'settings', 'values' => array( sbi_json_encode( $settings_array ) ) ); $this->sanitized_and_sorted_data['feeds'][] = array( 'key' => 'feed_name', 'values' => [sanitize_text_field($this->feed_name)] ); $success = SBI_Db::feeds_update( $this->sanitized_and_sorted_data['feeds'], $args ); return $success; } /** * Converts settings that have been sanitized into an associative array * that can be saved as JSON in the database * * @param $raw_settings * * @return array * * @since 6.0 */ public static function format_settings( $raw_settings ) { $settings_array = array(); foreach ( $raw_settings as $single_setting ) { if ( count( $single_setting['values'] ) > 1 ) { $settings_array[ $single_setting['key'] ] = $single_setting['values']; } else { $settings_array[ $single_setting['key'] ] = isset( $single_setting['values'][0] ) ? $single_setting['values'][0] : ''; } } return $settings_array; } /** * Gets the Preview Settings * for the Feed Fly Preview * * @return array|bool * * @since 6.0 */ public function get_feed_preview_settings( $preview_settings ){ } /** * Retrieves and organizes feed setting data for easy use in * the builder * * @return array|bool * * @since 6.0 */ public function get_feed_settings() { if ( $this->is_legacy ) { if ( sbi_is_pro_version() ) { $instagram_feed_settings = new \SB_Instagram_Settings_Pro( array(), sbi_get_database_settings() ); } else { $instagram_feed_settings = new \SB_Instagram_Settings( array(), sbi_get_database_settings() ); } $instagram_feed_settings->set_feed_type_and_terms(); $instagram_feed_settings->set_transient_name(); $return = $instagram_feed_settings->get_settings(); $this->feed_db_data = array( 'id' => 'legacy', 'feed_name' => __( 'Legacy Feeds', 'instagram-feed' ), 'feed_title' => __( 'Legacy Feeds', 'instagram-feed' ), 'status' => 'publish', 'last_modified' => date( 'Y-m-d H:i:s' ), ); } else if ( empty( $this->insert_id ) ) { return false; } else { $args = array( 'id' => $this->insert_id, ); $settings_db_data = SBI_Db::feeds_query( $args ); if ( false === $settings_db_data || sizeof($settings_db_data) == 0) { return false; } $this->feed_db_data = array( 'id' => $settings_db_data[0]['id'], 'feed_name' => $settings_db_data[0]['feed_name'], 'feed_title' => $settings_db_data[0]['feed_title'], 'status' => $settings_db_data[0]['status'], 'last_modified' => $settings_db_data[0]['last_modified'], ); $return = json_decode( $settings_db_data[0]['settings'], true ); $return['feed_name'] = $settings_db_data[0]['feed_name']; } $return = wp_parse_args( $return, SBI_Feed_Saver::settings_defaults() ); if ( empty( $return['id'] ) ) { return $return; } if ( ! is_array( $return['id'] ) ) { $return['id'] = explode( ',', str_replace( ' ', '', $return['id'] ) ); } if ( ! is_array( $return['tagged'] ) ) { $return['tagged'] = explode( ',', str_replace( ' ', '', $return['tagged'] ) ); } if ( ! is_array( $return['hashtag'] ) ) { $return['hashtag'] = explode( ',', str_replace( ' ', '', $return['hashtag'] ) ); } $args = array( 'id' => $return['id'] ); $source_query = SBI_Db::source_query( $args ); $return['sources'] = array(); if ( ! empty( $source_query ) ) { foreach ( $source_query as $source ) { $user_id = $source['account_id']; $return['sources'][ $user_id ] = self::get_processed_source_data( $source ); } } else { $found_sources = array(); foreach ( $return['id'] as $id_or_slug ) { $maybe_source_from_connected = SBI_Source::maybe_one_off_connected_account_update( $id_or_slug ); if ( $maybe_source_from_connected ) { $found_sources[] = $maybe_source_from_connected; } } if ( ! empty( $found_sources ) ) { foreach ( $found_sources as $source ) { $user_id = $source['account_id']; $return['sources'][ $user_id ] = self::get_processed_source_data( $source ); } } else { $source_query = SBI_Db::source_query( $args ); if ( isset( $source_query[0] ) ) { $source = $source_query[0]; $user_id = $source['account_id']; $return['sources'][ $user_id ] = self::get_processed_source_data( $source ); } } } return $return; } public static function get_processed_source_data( $source ) { $encryption = new \SB_Instagram_Data_Encryption(); $user_id = $source['account_id']; $info = ! empty( $source['info'] ) ? json_decode( $encryption->decrypt( $source['info'] ), true ) : array(); $cdn_avatar_url = \SB_Instagram_Parse::get_avatar_url( $info ); $processed = array( 'record_id' => stripslashes( $source['id'] ), 'user_id' => $user_id, 'type' => stripslashes( $source['account_type'] ), 'privilege' => stripslashes( $source['privilege'] ), 'access_token' => stripslashes( $encryption->decrypt( $source['access_token'] ) ), 'username' => stripslashes( $source['username'] ), 'name' => stripslashes( $source['username'] ), 'info' => stripslashes( $encryption->decrypt( $source['info'] ) ), 'error' => stripslashes( $source['error'] ), 'expires' => stripslashes( $source['expires'] ), 'profile_picture' => $cdn_avatar_url, 'local_avatar_url' => \SB_Instagram_Connected_Account::maybe_local_avatar( $source['username'], $cdn_avatar_url ) ); return $processed; } /** * Retrieves and organizes feed setting data for easy use in * the builder * It will NOT get the settings from the DB, but from the Customizer builder * To be used for updating feed preview on the fly * * @return array|bool * * @since 6.0 */ public function get_feed_settings_preview( $settings_db_data ) { if ( false === $settings_db_data || sizeof($settings_db_data) == 0) { return false; } $return = $settings_db_data; $return = wp_parse_args( $return, SBI_Feed_Saver::settings_defaults() ); if ( empty( $return['sources'] ) ) { return $return; } $sources = []; foreach ($return['sources'] as $single_source) { array_push($sources, $single_source['account_id']); } $args = array( 'id' => $sources ); $source_query = SBI_Db::source_query( $args ); $return['sources'] = array(); if ( ! empty( $source_query ) ) { foreach ( $source_query as $source ) { $user_id = $source['account_id']; $return['sources'][ $user_id ] = self::get_processed_source_data( $source ); } } return $return; } /** * Default settings, $return_array equalling false will return * the settings in the general way that the "SBI_Shortcode" class, * "sbi_get_processed_options" method does * * @param bool $return_array * * @return array * * @since 6.0 */ public static function settings_defaults( $return_array = true ) { { $defaults = array( //V6 'customizer' => false, //Feed general 'type' => 'user', //user - hashtag - 'order' => 'recent', 'id' => [], 'hashtag' => [], 'tagged' => [], 'width' => '', 'widthunit' => '', 'widthresp' => true, 'height' => '', 'heightunit' => '', 'sortby' => 'none', 'disablelightbox' => true, 'captionlinks' => false, 'offset' => 0, 'num' => 20, 'apinum' => '', 'nummobile' => 20, 'cols' => 4, 'colstablet' => 2, 'colsmobile' => 1, 'disablemobile' => false, 'imagepadding' => '5', 'imagepaddingunit' => 'px', 'layout' => 'grid', //Lightbox comments 'lightboxcomments' => true, 'numcomments' => 20, //Photo hover styles 'hovereffect' => '', 'hovercolor' => '', 'hovertextcolor' => '', 'hoverdisplay' => 'username,date,instagram', //Item misc 'background' => '', 'imageres' => 'auto', 'media' => 'all', 'videotypes' => 'regular,igtv,reels', 'showcaption' => true, 'captionlength' => '', 'captioncolor' => '', 'captionsize' => '', 'showlikes' => true, 'likescolor' => '', 'likessize' => '13', 'hidephotos' => '', //Footer 'showbutton' => true, 'buttoncolor' => '', 'buttonhovercolor' => '', // to be tested 'buttontextcolor' => '', 'buttontext' => 'Load More', 'showfollow' => true, 'followcolor' => '#408bd1', 'followhovercolor' => '#359dff', // to be tested 'followtextcolor' => '', 'followtext' => 'Follow on Instagram', //Header 'showheader' => true, 'headertextsize' => '', //to be tested 'headercolor' => '', 'headerstyle' => 'standard', 'showfollowers' => false, 'showbio' => true, 'custombio' => '', 'customavatar' => '', 'headerprimarycolor' => '#517fa4', 'headersecondarycolor' => '#eeeeee', 'headersize' => 'medium', 'stories' => true, 'storiestime' => '', 'headeroutside' => false, 'class' => '', 'ajaxtheme' => '', 'excludewords' => '', 'includewords' => '', 'maxrequests' => 5, //Carousel 'carouselrows' => 1, 'carouselloop' => 'rewind', 'carouselarrows' => false, 'carouselpag' => true, 'carouselautoplay' => false, 'carouseltime' => 5000, //Highlight 'highlighttype' => 'pattern', 'highlightoffset' => 0, 'highlightpattern' => '', 'highlighthashtag' => '', 'highlightids' => '', //WhiteList 'whitelist' => '', //Load More on Scroll 'autoscroll' => false, 'autoscrolldistance' => '', //Permanent 'permanent' => false, 'accesstoken' => '', 'user' => '', //Misc 'feedid' => false, 'resizeprocess' => 'background', 'mediavine' => '', 'customtemplates' => false, 'moderationmode' => false, //NEWLY ADDED //TO BE CHECKED 'colstablet' => 2, 'colorpalette' => 'inherit', 'custombgcolor1' => '', 'customtextcolor1' => '', 'customtextcolor2' => '', 'customlinkcolor1' => '', 'custombuttoncolor1' => '', 'custombuttoncolor2' => '', 'photosposts' => true, 'videosposts' => true, 'igtvposts' => true, 'reelsposts' => true, 'shoppablefeed' => false, 'shoppablelist' => '{}', 'moderationlist' => '{"list_type_selected" : "allow", "allow_list" : [], "block_list" : [] }', 'customBlockModerationlist' => '', 'enablemoderationmode' => false, 'fakecolorpicker' => '' ); $defaults = SBI_Feed_Saver::filter_defaults( $defaults ); // some settings are comma separated and not arrays when the feed is created if ( $return_array ) { $settings_with_multiples = array( 'sources' ); foreach ( $settings_with_multiples as $multiple_key ) { if ( isset( $defaults[ $multiple_key ] ) ) { $defaults[ $multiple_key ] = explode( ',', $defaults[ $multiple_key ] ); } } } return $defaults; } } /** * Provides backwards compatibility for extensions * * @param array $defaults * * @return array * * @since 6.0 */ public static function filter_defaults( $defaults ) { return $defaults; } /** * Saves settings for legacy feeds. Runs on first update automatically. * * @since 6.0 */ public static function set_legacy_feed_settings() { $to_save = SBI_Post_Set::legacy_to_builder_convert(); $to_save_json = sbi_json_encode( $to_save ); update_option( 'sbi_legacy_feed_settings', $to_save_json, false ); } /** * Used for taking raw post data related to settings * an sanitizing it and sorting it to easily use in * the database tables * * @since 6.0 */ private function sanitize_and_sort_data() { $data = $this->data; $sanitized_and_sorted = array( 'feeds' => array(), 'feed_settings' => array() ); foreach ( $data as $key => $value ) { $data_type = SBI_Feed_Saver_Manager::get_data_type( $key ); $sanitized_values = array(); if ( is_array( $value ) ) { foreach ( $value as $item ) { $type = SBI_Feed_Saver_Manager::is_boolean( $item ) ? 'boolean' : $data_type['sanitization']; $sanitized_values[] = SBI_Feed_Saver_Manager::sanitize( $type , $item ); } } else { $type = SBI_Feed_Saver_Manager::is_boolean( $value ) ? 'boolean' : $data_type['sanitization']; $sanitized_values[] = SBI_Feed_Saver_Manager::sanitize( $type, $value ); } $single_sanitized = array( 'key' => $key, 'values' => $sanitized_values ); $sanitized_and_sorted[ $data_type['table'] ][] = $single_sanitized; } $this->sanitized_and_sorted_data = $sanitized_and_sorted; } } instagram-feed/inc/Builder/Tabs/SBI_Customize_Tab.php000064400000117705151435171370016462 0ustar00 [ 'heading' => __( 'Feed Layout', 'instagram-feed' ), 'icon' => 'feed_layout', 'controls' => self::get_customize_feedlayout_controls() ], 'customize_colorschemes' => [ 'heading' => __( 'Color Scheme', 'instagram-feed' ), 'icon' => 'color_scheme', 'controls' => self::get_customize_colorscheme_controls() ], 'customize_sections' => [ 'heading' => __( 'Sections', 'instagram-feed' ), 'isHeader' => true, ], 'customize_header' => [ 'heading' => __( 'Header', 'instagram-feed' ), 'icon' => 'header', 'separator' => 'none', 'controls' => self::get_customize_header_controls() ], 'customize_posts' => [ 'heading' => __( 'Posts', 'instagram-feed' ), 'icon' => 'article', 'controls' => self::get_customize_posts_controls(), 'nested_sections' => [ 'images_videos' => [ 'heading' => __( 'Images and Videos', 'instagram-feed' ), 'icon' => 'picture', 'isNested' => 'true', 'separator' => 'none', 'controls' => self::get_nested_images_videos_controls(), ], ] ], 'customize_loadmorebutton' => [ 'heading' => __( 'Load More Button', 'instagram-feed' ), 'description' => '
', 'icon' => 'load_more', 'separator' => 'none', 'controls' => self::get_customize_loadmorebutton_controls() ], 'customize_followbutton' => [ 'heading' => __( 'Follow Button', 'instagram-feed' ), 'description' => '
', 'icon' => 'follow', 'separator' => 'none', 'controls' => self::get_customize_followbutton_controls() ], 'customize_lightbox' => [ 'heading' => __( 'Lightbox', 'instagram-feed' ), 'description' => __( 'Upgrade to Pro to add a modal when user clicks on a post.', 'custom-facebook-feed' ), 'proLabel' => true, 'icon' => 'lightbox', 'separator' => 'none', 'checkExtensionPopup' => 'lightbox', 'controls' => self::get_customize_lightbox_controls() ] ]; } /** * Get Customize Tab Feed Layout Section * @since 6.0 * @return array */ public static function get_customize_feedlayout_controls(){ $svg_icons = SBI_Feed_Builder::builder_svg_icons(); $svg_rocket_icon = $svg_icons['rocketPremiumBlue']; return [ [ 'type' => 'toggleset', 'id' => 'layout', 'heading' => __( 'Layout', 'instagram-feed' ), 'separator' => 'bottom', 'options' => [ [ 'value' => 'grid', 'icon' => 'grid', 'label' => __( 'Grid', 'instagram-feed' ) ], [ 'value' => 'carousel', 'icon' => 'carousel', 'checkExtension' => 'feedLayout', 'label' => __( 'Carousel', 'instagram-feed' ) . $svg_rocket_icon ], [ 'value' => 'masonry', 'icon' => 'masonry', 'checkExtension' => 'feedLayout', 'label' => __( 'Masonry', 'instagram-feed' ) . $svg_rocket_icon ], [ 'value' => 'highlight', 'icon' => 'highlight', 'checkExtension' => 'feedLayout', 'label' => __( 'Highlight', 'instagram-feed' ) . $svg_rocket_icon ] ] ], //Carousel Settings [ 'type' => 'heading', 'heading' => __( 'Carousel Settings', 'instagram-feed' ), 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, ], /* [ 'type' => 'number', 'id' => 'carouselrows', 'layout' => 'half', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'ajaxAction' => 'feedFlyPreview', 'strongHeading' => 'false', 'stacked' => 'true', 'heading' => __( 'Rows', 'instagram-feed' ), ], */ [ 'type' => 'select', 'id' => 'carouselrows', 'layout' => 'half', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'ajaxAction' => 'feedFlyPreview', 'strongHeading' => 'false', 'stacked' => 'true', 'heading' => __( 'Rows', 'instagram-feed' ), 'options' => [ 1 => '1', 2 => '2' ] ], [ 'type' => 'select', 'id' => 'carouselloop', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Loop Type', 'instagram-feed' ), 'stacked' => 'true', 'options' => [ 'rewind' => __( 'Rewind', 'instagram-feed' ), 'infinity' => __( 'Infinity', 'instagram-feed' ), ] ], [ 'type' => 'number', 'id' => 'carouseltime', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'stacked' => 'true', 'layout' => 'half', 'fieldSuffix' => 'ms', 'heading' => __( 'Interval Time', 'instagram-feed' ), ], [ 'type' => 'checkbox', 'id' => 'carouselarrows', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'label' => __( 'Show Navigation Arrows', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', #'disabledInput' => true, 'options' => [ 'enabled' => 'true', 'disabled' => 'false' ] ], [ 'type' => 'checkbox', 'id' => 'carouselpag', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'label' => __( 'Show Pagination', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', #'disabledInput' => true, 'options' => [ 'enabled' => 'true', 'disabled' => 'false' ] ], [ 'type' => 'checkbox', 'id' => 'carouselautoplay', 'condition' => ['layout' => ['carousel']], 'conditionHide' => true, 'label' => __( 'Enable Autoplay', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', #'disabledInput' => true, 'options' => [ 'enabled' => 'true', 'disabled' => 'false' ] ], //HighLight Settings [ 'type' => 'heading', 'heading' => __( 'HighLight Settings', 'instagram-feed' ), 'condition' => ['layout' => ['highlight']], 'conditionHide' => true, ], [ 'type' => 'select', 'id' => 'highlighttype', 'condition' => ['layout' => ['highlight']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Type', 'instagram-feed' ), 'stacked' => 'true', 'options' => [ 'pattern' => __( 'Pattern', 'instagram-feed' ), 'id' => __( 'Post ID', 'instagram-feed' ), 'hashtag' => __( 'Hashtag', 'instagram-feed' ), ] ], [ 'type' => 'number', 'id' => 'highlightoffset', 'condition' => ['layout' => ['highlight'],'highlighttype' => ['pattern']], 'conditionHide' => true, 'stacked' => 'true', 'layout' => 'half', 'heading' => __( 'Offset', 'instagram-feed' ), ], [ 'type' => 'number', 'id' => 'highlightpattern', 'condition' => ['layout' => ['highlight'],'highlighttype' => ['pattern']], 'conditionHide' => true, 'stacked' => 'true', 'layout' => 'half', 'fieldSuffix' => 'posts', 'heading' => __( 'Highlight every', 'instagram-feed' ), ], [ 'type' => 'textarea', 'id' => 'highlightids', 'description' => __( 'Highlight posts with these IDs', 'instagram-feed' ), 'placeholder' => 'id1, id2', 'condition' => ['layout' => ['highlight'],'highlighttype' => ['id']], 'conditionHide' => true, 'stacked' => 'true' ], [ 'type' => 'textarea', 'id' => 'highlighthashtag', 'description' => __( 'Highlight posts with these hashtags', 'instagram-feed' ), 'placeholder' => '#hashtag1, #hashtag2', 'condition' => ['layout' => ['highlight'],'highlighttype' => ['hashtag']], 'conditionHide' => true, 'stacked' => 'true' ], [ 'type' => 'separator', 'top' => 20, 'bottom' => 10, 'condition' => ['layout' => ['highlight']], 'conditionHide' => true, ], [ 'type' => 'number', 'id' => 'height', 'fieldSuffix' => 'px', 'separator' => 'bottom', 'strongHeading' => 'true', 'heading' => __( 'Feed Height', 'instagram-feed' ), 'style' => ['#sb_instagram' => 'height:{{value}}px!important;overflow-y:auto;'], ], [ 'type' => 'number', 'id' => 'imagepadding', 'fieldSuffix' => 'px', 'separator' => 'bottom', 'strongHeading' => 'true', 'heading' => __( 'Padding', 'instagram-feed' ), 'style' => ['#sbi_images' => 'gap:calc({{value}}px * 2)!important;'], ], [ 'type' => 'heading', 'heading' => __( 'Number of Posts', 'instagram-feed' ), ], [ 'type' => 'number', 'id' => 'num', 'icon' => 'desktop', 'layout' => 'half', 'ajaxAction' => 'feedFlyPreview', 'strongHeading' => 'false', 'stacked' => 'true', 'heading' => __( 'Desktop', 'instagram-feed' ), ], [ 'type' => 'number', 'id' => 'nummobile', 'icon' => 'mobile', 'layout' => 'half', 'strongHeading' => 'false', 'stacked' => 'true', 'heading' => __( 'Mobile', 'instagram-feed' ), ], [ 'type' => 'separator', 'top' => 10, 'bottom' => 10, ], [ 'type' => 'heading', 'heading' => __( 'Columns', 'instagram-feed' ), 'condition' => ['layout' => ['grid','masonry']], 'conditionHide' => true, ], [ 'type' => 'select', 'id' => 'cols', 'conditionHide' => true, 'icon' => 'desktop', 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Desktop', 'instagram-feed' ), 'stacked' => 'true', 'options' => [ '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', ] ], [ 'type' => 'select', 'id' => 'colstablet', 'conditionHide' => true, 'icon' => 'tablet', 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Tablet', 'instagram-feed' ), 'stacked' => 'true', 'options' => [ '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', ] ], [ 'type' => 'select', 'id' => 'colsmobile', 'conditionHide' => true, 'icon' => 'mobile', 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Mobile', 'instagram-feed' ), 'stacked' => 'true', 'options' => [ '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', '8' => '8', '9' => '9', '10' => '10', ] ], ]; } /** * Get Customize Tab Color Scheme Section * @since 6.0 * @return array */ public static function get_customize_colorscheme_controls(){ $feed_id = isset( $_GET['feed_id'] ) ? sanitize_key( $_GET['feed_id'] ) : ''; $color_scheme_array = [ [ 'type' => 'toggleset', 'id' => 'colorpalette', 'separator' => 'bottom', 'options' => [ [ 'value' => 'inherit', 'label' => __( 'Inherit from Theme', 'instagram-feed' ) ], [ 'value' => 'light', 'icon' => 'sun', 'label' => __( 'Light', 'instagram-feed' ) ], [ 'value' => 'dark', 'icon' => 'moon', 'label' => __( 'Dark', 'instagram-feed' ) ], [ 'value' => 'custom', 'icon' => 'cog', 'label' => __( 'Custom', 'instagram-feed' ) ] ] ], //Custom Color Palette [ 'type' => 'heading', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'heading' => __( 'Custom Palette', 'instagram-feed' ), ], [ 'type' => 'colorpicker', 'id' => 'custombgcolor1', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Background', 'custom-facebook-feed' ), 'style' => ['.sbi_header_palette_custom_'.$feed_id.',#sb_instagram.sbi_palette_custom_'.$feed_id.',#sbi_lightbox .sbi_lb-outerContainer .sbi_lb-dataContainer,#sbi_lightbox .sbi_lightbox_tooltip,#sbi_lightbox .sbi_share_close' => 'background:{{value}}!important;'], 'stacked' => 'true' ], /* [ 'type' => 'colorpicker', 'id' => 'customtextcolor1', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Text', 'custom-facebook-feed' ), 'style' => ['#sb_instagram.sbi_palette_custom_'.$feed_id.' .sbi_caption,#sbi_lightbox .sbi_lb-outerContainer .sbi_lb-dataContainer .sbi_lb-details .sbi_lb-caption,#sbi_lightbox .sbi_lb-outerContainer .sbi_lb-dataContainer .sbi_lb-number,#sbi_lightbox.sbi_lb-comments-enabled .sbi_lb-commentBox p' => 'color:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'customtextcolor2', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Text 2', 'custom-facebook-feed' ), 'style' => ['.sbi_header_palette_custom_'.$feed_id.' .sbi_bio,#sb_instagram.sbi_palette_custom_'.$feed_id.' .sbi_meta' => 'color:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'customlinkcolor1', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Link', 'custom-facebook-feed' ), 'style' => ['.sbi_header_palette_custom_'.$feed_id.' a,#sb_instagram.sbi_palette_custom_'.$feed_id.' .sbi_expand a,#sbi_lightbox .sbi_lb-outerContainer .sbi_lb-dataContainer .sbi_lb-details a,#sbi_lightbox.sbi_lb-comments-enabled .sbi_lb-commentBox .sbi_lb-commenter' => 'color:{{value}};'], 'stacked' => 'true' ], */ [ 'type' => 'colorpicker', 'id' => 'custombuttoncolor1', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Button 1', 'custom-facebook-feed' ), 'style' => ['#sb_instagram.sbi_palette_custom_'.$feed_id.' #sbi_load .sbi_load_btn' => 'background:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'custombuttoncolor2', 'condition' => ['colorpalette' => ['custom']], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Button 2', 'custom-facebook-feed' ), 'style' => ['#sb_instagram.sbi_palette_custom_'.$feed_id.' #sbi_load .sbi_follow_btn a' => 'background:{{value}}!important;'], 'stacked' => 'true' ], ]; $color_overrides = []; $color_overrides_array = []; return array_merge($color_scheme_array,$color_overrides_array); } /** * Get Customize Tab Header Section * @since 6.0 * @return array */ public static function get_customize_header_controls(){ return [ [ 'type' => 'switcher', 'id' => 'showheader', 'label' => __( 'Enable', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 20, 'bottom' => 0, ], [ 'type' => 'select', 'id' => 'headersize', 'condition' => ['showheader' => [true]], //'conditionHide' => true, 'strongHeading' => 'true', 'separator' => 'bottom', 'heading' => __( 'Header Size', 'instagram-feed' ), 'options' => [ 'small' => __( 'Small', 'instagram-feed' ), 'medium' => __( 'Medium', 'instagram-feed' ), 'large' => __( 'Large', 'instagram-feed' ), ] ], [ 'type' => 'imagechooser', 'id' => 'customavatar', 'condition' => ['showheader' => [true]], //'conditionHide' => true, 'strongHeading' => 'true', 'separator' => 'bottom', 'heading' => __( 'Use Custom Avatar', 'instagram-feed' ), 'tooltip' => __( 'Upload your own custom image to use for the avatar. This is automatically retrieved from Instagram for Business accounts, but is not available for Personal accounts.', 'instagram-feed' ), 'placeholder' => __( 'No Image Added', 'instagram-feed' ) ], [ 'type' => 'heading', 'heading' => __( 'Text', 'instagram-feed' ), 'condition' => ['showheader' => [true]], ], /* [ 'type' => 'select', 'id' => 'headertextsize', 'condition' => ['showheader' => [true]], //'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Size', 'instagram-feed' ), 'stacked' => 'true', 'style' => ['h3.sbi-preview-header-name' => 'font-size:{{value}}px!important;'], 'options' => SBI_Builder_Customizer_Tab::get_text_size_options() ], */ [ 'type' => 'colorpicker', 'id' => 'headercolor', 'condition' => ['showheader' => [true]], //'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Color', 'instagram-feed' ), 'style' => ['.sbi_header_text > *, .sbi_bio_info > *' => 'color:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'headerprimarycolor', 'condition' => ['showheader' => [true], 'headerstyle' => 'boxed'], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Primary Color', 'instagram-feed' ), 'style' => [ '.sbi_header_style_boxed .sbi_bio_info > *' => 'color:{{value}}!important;', '.sbi_header_style_boxed' => 'background:{{value}}!important;' ], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'headersecondarycolor', 'condition' => ['showheader' => [true], 'headerstyle' => 'boxed'], 'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Secondary Color', 'instagram-feed' ), 'style' => ['.sbi_header_style_boxed .sbi_header_bar' => 'background:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 10, 'bottom' => 10, ], [ 'type' => 'switcher', 'id' => 'showbio', 'condition' => ['showheader' => [true]], //'conditionHide' => true, 'label' => __( 'Show Bio Text', 'instagram-feed' ), 'tooltip' => __( 'Use your own custom bio text in the feed header. This is automatically retrieved from Instagram for Business accounts, but it not available for Personal accounts.', 'instagram-feed' ), 'stacked' => 'true', 'labelStrong' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'textarea', 'id' => 'custombio', 'placeholder' => __( 'Add custom bio', 'instagram-feed' ), 'condition' => ['showheader' => [true],'showbio' => [true]], //'conditionHide' => true, 'child' => 'true', 'stacked' => 'true' ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 10, 'bottom' => 10, ], [ 'type' => 'switcher', 'id' => 'headeroutside', 'condition' => ['showheader' => [true]], //'conditionHide' => true, 'label' => __( 'Show outside scrollable area', 'instagram-feed' ), 'stacked' => 'true', 'labelStrong' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 10, 'bottom' => 10, ], [ 'type' => 'heading', 'heading' => __( 'Advanced', 'instagram-feed' ), 'proLabel' => true, 'checkExtensionPopupLearnMore' => 'headerLayout', 'description' => __( 'Tweak the header styles and show your follower count with Instagram Feed Pro.', 'instagram-feed' ), ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 30, 'bottom' => 10, ], [ 'type' => 'switcher', 'id' => 'stories', 'condition' => ['showheader' => [true]], 'switcherTop' => true, //'conditionHide' => true, 'checkExtensionDimmed' => 'headerLayout', 'checkExtensionPopup' => 'headerLayout', 'heading' => __( 'Include Stories', 'instagram-feed' ), 'description' => __( 'You can view active stories by clicking the profile picture in the header. Instagram Business accounts only.

', 'instagram-feed' ), 'tooltip' => __( 'Show your active stories from Instagram when your header avatar is clicked. Displays a colored ring around your avatar when a story is available.', 'instagram-feed' ), 'stacked' => 'true', 'labelStrong' => 'true', 'layout' => 'half', 'reverse' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'number', 'id' => 'storiestime', 'condition' => ['showheader' => [true],'stories' => [true]], 'conditionHide' => true, 'strongHeading' => false, 'stacked' => 'true', 'placeholder' => '500', 'child' => true, 'checkExtensionDimmed' => 'headerLayout', 'checkExtensionPopup' => 'headerLayout', 'fieldSuffix' => 'milliseconds', 'heading' => __( 'Change Interval', 'instagram-feed' ), 'description' => __( 'This is the time a story displays for, before displaying the next one. Videos always change when the video is finished.', 'instagram-feed' ), 'descriptionPosition' => 'bottom' ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 25, 'bottom' => 10, ], [ 'type' => 'switcher', 'id' => 'showfollowers', 'condition' => ['showheader' => [true]], 'checkExtensionDimmed' => 'headerLayout', 'checkExtensionPopup' => 'headerLayout', //'conditionHide' => true, 'label' => __( 'Show number of followers', 'instagram-feed' ), 'stacked' => 'true', 'labelStrong' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 10, 'bottom' => 10, ], [ 'type' => 'toggleset', 'id' => 'headerstyle', 'condition' => ['showheader' => [true]], 'heading' => __( 'Header Style', 'instagram-feed' ), 'options' => [ [ 'value' => 'standard', 'label' => __( 'Standard', 'instagram-feed' ) ], [ 'value' => 'boxed', 'checkExtension' => 'headerLayout', 'label' => __( 'Boxed', 'instagram-feed' ) ], [ 'value' => 'centered', 'checkExtension' => 'headerLayout', 'label' => __( 'Centered', 'instagram-feed' ) ] ] ], ]; } /** * Get Customize Tab Posts Section * @since 6.0 * @return array */ public static function get_customize_posts_controls(){ return [ [ 'type' => 'heading', 'heading' => __( 'Advanced', 'instagram-feed' ), 'proLabel' => true, 'checkExtensionPopupLearnMore' => 'postStyling', 'description' => __( 'These properties are available in the PRO version.', 'instagram-feed' ), ], [ 'type' => 'checkbox', 'id' => 'showcaption', 'label' => __( 'Caption', 'instagram-feed' ), 'labelStrong' => 'true', 'separator' => 'bottom', 'checkExtensionDimmed' => 'postStyling', 'checkExtensionPopup' => 'postStyling', 'disabledInput' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'checkbox', 'id' => 'showlikes', 'label' => __( 'Like and Comment Summary', 'instagram-feed' ), 'labelStrong' => 'true', 'checkExtensionDimmed' => 'postStyling', 'checkExtensionPopup' => 'postStyling', 'separator' => 'bottom', 'disabledInput' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'checkbox', 'id' => 'showlikes', 'label' => __( 'Hover State', 'instagram-feed' ), 'labelStrong' => 'true', 'checkExtensionDimmed' => 'postStyling', 'checkExtensionPopup' => 'postStyling', 'separator' => 'bottom', 'disabledInput' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], ]; } /** * Get Customize Tab Posts Section * @since 6.0 * @return array */ public static function get_nested_images_videos_controls(){ return [ [ 'type' => 'separator', 'top' => 20, 'bottom' => 20, ], [ 'type' => 'select', 'id' => 'imageres', 'strongHeading' => 'true', 'conditionHide' => true, 'stacked' => 'true', 'heading' => __( 'Resolution', 'instagram-feed' ), 'description' => __( 'By default we auto-detect image width and fetch a optimal resolution.', 'instagram-feed' ), 'options' => [ 'auto' => __( 'Auto-detect (recommended)', 'instagram-feed' ), 'thumb' => __( 'Thumbnail (150x150)', 'instagram-feed' ), 'medium' => __( 'Medium (320x320)', 'instagram-feed' ), 'full' => __( 'Full size (640x640)', 'instagram-feed' ), ] ] ]; } /** * Get Customize Tab Posts Section * @since 6.0 * @return array */ public static function get_nested_caption_controls(){ return [ [ 'type' => 'switcher', 'id' => 'showcaption', 'label' => __( 'Enable', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'top' => 15, 'bottom' => 15, 'condition' => ['showcaption' => [true]], #'conditionHide' => true, ], [ 'type' => 'number', 'id' => 'captionlength', 'condition' => ['showcaption' => [true]], #'conditionHide' => true, 'stacked' => 'true', 'fieldSuffix' => 'characters', 'heading' => __( 'Maximum Text Length', 'instagram-feed' ), 'description' => __( 'Caption will truncate after reaching the length', 'instagram-feed' ), ], [ 'type' => 'separator', 'top' => 25, 'bottom' => 15, 'condition' => ['showcaption' => [true]], #'conditionHide' => true, ], [ 'type' => 'heading', 'condition' => ['showcaption' => [true]], #'conditionHide' => true, 'heading' => __( 'Text', 'instagram-feed' ), ], [ 'type' => 'select', 'id' => 'captionsize', 'condition' => ['showcaption' => [true]], #'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Size', 'instagram-feed' ), 'stacked' => 'true', 'style' => ['.sbi_caption_wrap .sbi_caption' => 'font-size:{{value}}px!important;'], 'options' => SBI_Builder_Customizer_Tab::get_text_size_options() ], [ 'type' => 'colorpicker', 'id' => 'captioncolor', 'condition' => ['showcaption' => [true]], #'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Color', 'instagram-feed' ), 'style' => ['.sbi_caption_wrap .sbi_caption' => 'color:{{value}}!important;'], 'stacked' => 'true' ], ]; } /** * Get Customize Tab Posts Section * @since 6.0 * @return array */ public static function get_nested_like_comment_summary_controls(){ return [ [ 'type' => 'switcher', 'id' => 'showlikes', 'label' => __( 'Enable', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'top' => 15, 'bottom' => 15, 'condition' => ['showlikes' => [true]], #'conditionHide' => true, ], [ 'type' => 'heading', 'condition' => ['showlikes' => [true]], #'conditionHide' => true, 'heading' => __( 'Icon', 'instagram-feed' ), ], [ 'type' => 'select', 'id' => 'likessize', 'condition' => ['showlikes' => [true]], #'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Size', 'instagram-feed' ), 'stacked' => 'true', 'style' => ['.sbi_likes, .sbi_comments, .sbi_likes svg, .sbi_comments svg' => 'font-size:{{value}}px!important;'], 'options' => SBI_Builder_Customizer_Tab::get_text_size_options() ], [ 'type' => 'colorpicker', 'id' => 'likescolor', 'condition' => ['showlikes' => [true]], #'conditionHide' => true, 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Color', 'instagram-feed' ), 'style' => ['.sbi_likes, .sbi_comments' => 'color:{{value}};'], 'stacked' => 'true' ], ]; } /** * Get Customize Tab Posts Section * @since 6.0 * @return array */ public static function get_nested_hover_state_controls(){ return [ [ 'type' => 'colorpicker', 'id' => 'hovercolor', 'icon' => 'background', 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Background', 'instagram-feed' ), 'style' => ['.sbi_link' => 'background:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'hovertextcolor', 'icon' => 'text', 'layout' => 'half', 'strongHeading' => 'false', 'heading' => __( 'Text', 'instagram-feed' ), 'style' => ['.sbi_photo_wrap .sbi_username > a, .sbi_photo_wrap .sbi_caption,.sbi_photo_wrap .sbi_instagram_link,.sbi_photo_wrap .sbi_hover_bottom,.sbi_photo_wrap .sbi_location,.sbi_photo_wrap .sbi_meta,.sbi_photo_wrap .sbi_comments' => 'color:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'heading', 'heading' => __( 'Information to display', 'instagram-feed' ), ], [ 'type' => 'checkboxlist', 'id' => 'hoverdisplay', 'options' => [ [ 'value' => 'username', 'label' => __( 'Username', 'instagram-feed' ), ], [ 'value' => 'date', 'label' => __( 'Date', 'instagram-feed' ), ], [ 'value' => 'instagram', 'label' => __( 'Instagram Icon', 'instagram-feed' ), ], [ 'value' => 'caption', 'label' => __( 'Caption', 'instagram-feed' ), ], [ 'value' => 'likes', 'label' => __( 'Like/Comment Icons
(Business account only)', 'instagram-feed' ), ] ], 'reverse' => 'true', ], ]; } /** * Get Customize Tab Load More Button Section * @since 6.0 * @return array */ public static function get_customize_loadmorebutton_controls(){ return [ [ 'type' => 'switcher', 'id' => 'showbutton', 'label' => __( 'Enable', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'condition' => ['showbutton' => [true]], 'top' => 20, 'bottom' => 5, ], [ 'type' => 'text', 'id' => 'buttontext', 'condition' => ['showbutton' => [true]], //'conditionHide' => true, 'strongHeading' => 'true', 'heading' => __( 'Text', 'instagram-feed' ), ], [ 'type' => 'separator', 'condition' => ['showbutton' => [true]], 'top' => 15, 'bottom' => 15, ], [ 'type' => 'heading', 'heading' => __( 'Color', 'instagram-feed' ), 'condition' => ['showbutton' => [true]], ], [ 'type' => 'colorpicker', 'id' => 'buttoncolor', 'condition' => ['showbutton' => [true]], 'layout' => 'half', 'icon' => 'background', 'strongHeading' => 'false', 'heading' => __( 'Background', 'instagram-feed' ), 'style' => ['.sbi_load_btn' => 'background:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'buttonhovercolor', 'condition' => ['showbutton' => [true]], 'layout' => 'half', 'icon' => 'cursor', 'strongHeading' => 'false', 'heading' => __( 'Hover State', 'instagram-feed' ), 'style' => ['.sbi_load_btn:hover' => 'background:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'buttontextcolor', 'condition' => ['showbutton' => [true]], 'layout' => 'half', 'icon' => 'text', 'strongHeading' => 'false', 'heading' => __( 'Text', 'instagram-feed' ), 'style' => ['.sbi_load_btn' => 'color:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'separator', 'condition' => ['showbutton' => [true]], 'top' => 15, 'bottom' => 5, ], [ 'type' => 'heading', 'heading' => __( 'Advanced', 'instagram-feed' ), 'proLabel' => true, 'checkExtensionPopupLearnMore' => 'postStyling', 'utmLink' => 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=load-more', 'description' => __( 'These properties are available in the PRO version.', 'instagram-feed' ), ], [ 'type' => 'separator', 'condition' => ['showheader' => [true]], 'top' => 30, 'bottom' => 10, ], [ 'type' => 'switcher', 'id' => 'autoscroll', 'condition' => ['showbutton' => [true]], 'switcherTop' => true, 'checkExtensionDimmed' => 'postStyling', 'checkExtensionPopup' => 'postStyling', 'utmLink' => 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=load-more', //'conditionHide' => true, 'heading' => __( 'Infinite Scroll', 'instagram-feed' ), 'description' => __( 'This will load more posts automatically when the users reach the end of the feed', 'instagram-feed' ), 'stacked' => 'true', 'labelStrong' => 'true', 'layout' => 'half', 'reverse' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'number', 'id' => 'autoscrolldistance', 'condition' => ['showbutton' => [true],'autoscroll' => ['true']], 'conditionHide' => true, 'strongHeading' => false, 'stacked' => 'true', 'layout' => 'half', 'placeholder' => '200', 'child' => true, 'fieldSuffix' => 'px', 'heading' => __( 'Trigger Distance', 'instagram-feed' ), ], ]; } /** * Get Customize Tab Follow Button Section * @since 6.0 * @return array */ public static function get_customize_followbutton_controls(){ return [ [ 'type' => 'switcher', 'id' => 'showfollow', 'label' => __( 'Enable', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'condition' => ['showfollow' => [true]], 'top' => 20, 'bottom' => 5, ], [ 'type' => 'text', 'id' => 'followtext', 'condition' => ['showfollow' => [true]], //'conditionHide' => true, 'strongHeading' => 'true', 'heading' => __( 'Text', 'instagram-feed' ), ], [ 'type' => 'separator', 'condition' => ['showfollow' => [true]], 'top' => 15, 'bottom' => 15, ], [ 'type' => 'heading', 'heading' => __( 'Color', 'instagram-feed' ), 'condition' => ['showfollow' => [true]], ], [ 'type' => 'colorpicker', 'id' => 'followcolor', 'condition' => ['showfollow' => [true]], 'layout' => 'half', 'icon' => 'background', 'strongHeading' => 'false', 'heading' => __( 'Background', 'instagram-feed' ), 'style' => ['.sbi_follow_btn a' => 'background:{{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'followhovercolor', 'condition' => ['showfollow' => [true]], 'layout' => 'half', 'icon' => 'cursor', 'strongHeading' => 'false', 'heading' => __( 'Hover State', 'instagram-feed' ), 'style' => ['.sbi_follow_btn a:hover' => 'box-shadow:inset 0 0 10px 20px {{value}}!important;'], 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'followtextcolor', 'condition' => ['showbutton' => [true]], 'layout' => 'half', 'icon' => 'text', 'strongHeading' => 'false', 'heading' => __( 'Text', 'instagram-feed' ), 'style' => ['.sbi_follow_btn a' => 'color:{{value}}!important;'], 'stacked' => 'true' ] ]; } /** * Get Customize Tab LightBox Section * @since 6.0 * @return array */ public static function get_customize_lightbox_controls(){ return [ [ 'type' => 'separator', 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', 'top' => 40, 'bottom' => 5, ], [ 'type' => 'heading', 'heading' => __( 'Color', 'instagram-feed' ), 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', ], [ 'type' => 'colorpicker', 'id' => 'fakecolorpicker', 'icon' => 'background', 'layout' => 'half', 'strongHeading' => 'false', 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', 'heading' => __( 'Background', 'instagram-feed' ), 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'fakecolorpicker', 'icon' => 'text', 'layout' => 'half', 'strongHeading' => 'false', 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', 'heading' => __( 'Text', 'instagram-feed' ), 'stacked' => 'true' ], [ 'type' => 'colorpicker', 'id' => 'fakecolorpicker', 'icon' => 'link', 'layout' => 'half', 'strongHeading' => 'false', 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', 'heading' => __( 'Link Color', 'instagram-feed' ), 'stacked' => 'true' ], [ 'type' => 'separator', 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', 'top' => 30, 'bottom' => 10, ], [ 'type' => 'heading', 'heading' => __( 'Comments', 'instagram-feed' ), 'tooltip' => __( 'Display comments for your posts inside the lightbox. Comments are only available for User feeds from Business accounts.', 'instagram-feed' ), 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', ], [ 'type' => 'number', 'id' => 'numcomments', 'condition' => ['disablelightbox' => [false],'lightboxcomments' => [true]], 'checkExtensionDimmed' => 'lightbox', 'checkExtensionPopup' => 'lightbox', 'strongHeading' => false, 'stacked' => 'true', 'placeholder' => '20', 'fieldSuffixAction' => 'clearCommentCache', 'fieldSuffix' => 'Clear Cache', 'heading' => __( 'No. of Comments', 'instagram-feed' ), 'description' => __( 'Clearing cache will remove all the saved comments in the database', 'instagram-feed' ), 'descriptionPosition' => 'bottom' ], ]; } } instagram-feed/inc/Builder/Tabs/SBI_Settings_Tab.php000064400000025033151435171370016270 0ustar00 [ 'heading' => __( 'Sources', 'instagram-feed' ), 'icon' => 'source', 'controls' => self::get_settings_sources_controls() ], 'settings_filters_moderation' => [ 'heading' => __( 'Filters and Moderation', 'instagram-feed' ), 'icon' => 'filter', 'controls' => self::get_settings_filters_moderation_controls() ], 'settings_sort' => [ 'heading' => __( 'Sort', 'instagram-feed' ), 'icon' => 'sort', 'controls' => self::get_settings_sort_controls() ], 'settings_shoppable_feed' => [ 'heading' => __( 'Shoppable Feed', 'instagram-feed' ), 'icon' => 'shop', 'separator' => 'none', 'controls' => self::get_settings_shoppable_feed_controls() ], 'empty_sections' => [ 'heading' => '', 'isHeader' => true, ], 'settings_advanced' => [ 'heading' => __( 'Advanced', 'instagram-feed' ), 'icon' => 'cog', 'controls' => self::get_settings_advanced_controls() ] ]; } /** * Get Settings Tab Filters & Moderation Section * @since 4.0 * @return array */ public static function get_settings_filters_moderation_controls(){ return [ [ 'type' => 'heading', 'strongHeading' => 'true', 'heading' => __( 'Show specific types of posts', 'instagram-feed' ) ], [ 'type' => 'checkbox', 'id' => 'reelsposts', 'label' => __( 'Reels', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'checkViewDisabled' => 'moderationMode', 'ajaxAction' => 'feedFlyPreview', 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'top' => 20, 'bottom' => 20 ], [ 'type' => 'heading', 'heading' => __( 'Advanced', 'instagram-feed' ), 'proLabel' => true, 'description' => __( 'Visually moderate your feed or hide specific posts with Instagram Feed Pro.', 'instagram-feed' ), 'checkExtensionPopup' => 'filtermoderation', 'checkExtensionPopupLearnMore' => 'filtermoderation' ], [ 'type' => 'customview', 'viewId' => 'moderationmode', 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'switcher' => [ 'id' => 'enablemoderationmode', 'label' => __( 'Enable', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'labelStrong' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], 'moderationTypes' => [ 'allow' => [ 'label' => __( 'Allow List', 'instagram-feed' ), 'description' => __( 'Hides post by default so you can select the ones you want to show', 'instagram-feed' ), ], 'block' => [ 'label' => __( 'Block List', 'instagram-feed' ), 'description' => __( 'Show all posts by default so you can select the ones you want to hide', 'instagram-feed' ), ] ] ], [ 'type' => 'heading', 'strongHeading' => 'true', 'heading' => __( 'Filters', 'instagram-feed' ), 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], [ 'type' => 'textarea', 'id' => 'includewords', 'heading' => __( 'Only show posts containing', 'instagram-feed' ), 'tooltip' => __( 'Show your active stories from Instagram when your header avatar is clicked. Displays a colored ring around your avatar when a story is available.', 'instagram-feed' ), 'placeholder' => __( 'Add words here to only show posts containing these words', 'instagram-feed' ), 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], [ 'type' => 'separator', 'top' => 10, 'bottom' => 10, 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], [ 'type' => 'textarea', 'id' => 'excludewords', 'disabledInput' => true, 'heading' => __( 'Do not show posts containing', 'instagram-feed' ), 'tooltip' => __( 'Remove any posts containing these text strings, separating multiple strings using commas.', 'instagram-feed' ), 'placeholder' => __( 'Add words here to hide any posts containing these words', 'instagram-feed' ), 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], [ 'type' => 'heading', 'strongHeading' => 'true', 'stacked' => 'true', 'heading' => __( 'Show specific types of posts', 'instagram-feed' ), 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], [ 'type' => 'checkbox', 'id' => 'photosposts', 'label' => __( 'Photos', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'checkViewDisabled' => 'moderationMode', 'ajaxAction' => 'feedFlyPreview', 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'checkbox', 'id' => 'videosposts', 'label' => __( 'Feed Videos', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'checkViewDisabled' => 'moderationMode', 'ajaxAction' => 'feedFlyPreview', 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'checkbox', 'id' => 'igtvposts', 'label' => __( 'IGTV Videos', 'instagram-feed' ), 'reverse' => 'true', 'stacked' => 'true', 'checkViewDisabled' => 'moderationMode', 'ajaxAction' => 'feedFlyPreview', 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'options' => [ 'enabled' => true, 'disabled' => false ] ], [ 'type' => 'separator', 'top' => 10, 'bottom' => 10, 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], [ 'type' => 'number', 'id' => 'offset', 'strongHeading' => 'true', 'stacked' => 'true', 'placeholder' => '0', 'fieldSuffix' => 'posts', 'heading' => __( 'Post Offset', 'instagram-feed' ), 'description' => __( 'This will skip the specified number of posts from displaying in the feed', 'instagram-feed' ), 'checkExtensionDimmed' => 'filtermoderation', 'checkExtensionPopup' => 'filtermoderation', 'disabledInput' => true, 'checkViewDisabled' => 'moderationMode' ], ]; } /** * Get Settings Tab Sort Section * @since 4.0 * @return array */ public static function get_settings_sort_controls(){ return [ [ 'type' => 'toggleset', 'id' => 'sortby', 'heading' => __( 'Sort Posts by', 'instagram-feed' ), 'strongHeading' => 'true', 'ajaxAction' => 'feedFlyPreview', 'options' => [ [ 'value' => 'none', 'label' => __( 'Newest', 'instagram-feed' ) ], [ 'value' => 'likes', 'checkExtension' => 'postStyling', 'utmLink' => 'https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free&utm_source=customizer&utm_medium=load-more', 'proLabel' => true, 'label' => __( 'Likes', 'instagram-feed' ) ], [ 'value' => 'random', 'label' => __( 'Random', 'instagram-feed' ) ] ] ], ]; } /** * Get Settings Tab Shoppable Feed Section * @since 4.0 * @return array */ public static function get_settings_shoppable_feed_controls(){ return [ [ 'type' => 'customview', 'condition' => ['shoppablefeed' => [false]], 'conditionHide' => true, 'viewId' => 'shoppabledisabled' ], [ 'type' => 'customview', 'condition' => ['shoppablefeed' => [true]], 'conditionHide' => true, 'viewId' => 'shoppableenabled' ], [ 'type' => 'customview', 'condition' => ['shoppablefeed' => [true]], 'conditionHide' => true, 'viewId' => 'shoppableselectedpost' ] ]; } /** * Get Settings Tab Advanced Section * @since 4.0 * @return array */ public static function get_settings_advanced_controls(){ return [ [ 'type' => 'number', 'id' => 'maxrequests', 'strongHeading' => 'true', 'heading' => __( 'Max Concurrent API Requests', 'instagram-feed' ), 'description' => __( 'Change the number of maximum concurrent API requests. Not recommended unless directed by the support team.', 'instagram-feed' ), ], [ 'type' => 'switcher', 'id' => 'customtemplates', 'label' => __( 'Custom Templates', 'instagram-feed' ), 'description' => sprintf( __( 'The default HTML for the feed can be replaced with custom templates added to your theme\'s folder. Enable this setting to use these templates. Custom templates are not used in the feed editor. %sLearn More%s', 'instagram-feed' ), '', '' ), 'descriptionPosition' => 'bottom', 'reverse' => 'true', 'strongHeading' => 'true', 'labelStrong' => 'true', 'options' => [ 'enabled' => true, 'disabled' => false ] ], ]; } /** * Get Settings TabSources Section * @since 6.0 * @return array */ public static function get_settings_sources_controls(){ return [ [ 'type' => 'customview', 'viewId' => 'sources' ], ]; } } instagram-feed/inc/Builder/Tabs/SBI_Builder_Customizer_Tab.php000064400000006064151435171370020305 0ustar00 [ 'id' => 'customize', 'heading' => __( 'Customize', 'instagram-feed' ), 'sections' => SBI_Customize_Tab::get_sections() ], 'settings' => [ 'id' => 'settings', 'heading' => __( 'Settings', 'instagram-feed' ), 'sections' => SBI_Settings_Tab::get_sections() ] ]; } /** * Text Size Options * * * @since 4.0 * @access public * * @return array */ public static function get_text_size_options(){ return [ 'inherit' => __( 'Inherit', 'instagram-feed' ), '10' => '10px', '11' => '11px', '12' => '12px', '13' => '13px', '14' => '14px', '15' => '15px', '16' => '16px', '18' => '18px', '20' => '20px', '24' => '24px', '28' => '28px', '32' => '32px', '36' => '36px', '42' => '42px', '48' => '48px', '54' => '54px', '60' => '60px', ]; } /** * header Icons Options * * * @since 4.0 * @access public * * @return array */ public static function get_header_icons_options(){ return [ 'facebook-square' => 'Facebook 1', 'facebook' => 'Facebook 2', 'calendar' => 'Events 1', 'calendar-o' => 'Events 2', 'picture-o' => 'Photos', 'users' => 'People', 'thumbs-o-up' => 'Thumbs Up 1', 'thumbs-up' => 'Thumbs Up 2', 'comment-o' => 'Speech Bubble 1', 'comment' => 'Speech Bubble 2', 'ticket' => 'Ticket', 'list-alt' => 'News List', 'file' => 'File 1', 'file-o' => 'File 2', 'file-text' => 'File 3', 'file-text-o' => 'File 4', 'youtube-play ' => 'Video', 'youtube-play' => 'YouTube', 'vimeo-square' => 'Vimeo', ]; } /** * Date Format Options * * * @since 4.0 * @access public * * @return array */ public static function get_date_format_options(){ $original = strtotime('2016-07-25T17:30:00+0000'); return [ '1' => __('2 days ago','instagram-feed'), '2' => date('F jS, g:i a', $original), '3' => date('F jS', $original), '4' => date('D F jS', $original), '5' => date('l F jS', $original), '6' => date('D M jS, Y', $original), '7' => date('l F jS, Y', $original), '8' => date('l F jS, Y - g:i a', $original), '9' => date("l M jS, 'y", $original), '10' => date('m.d.y', $original), '18' => date('m.d.y - G:i', $original), '11' => date('m/d/y', $original), '12' => date('d.m.y', $original), '19' => date('d.m.y - G:i', $original), '13' => date('d/m/y', $original), '14' => date('d-m-Y, G:i', $original), '15' => date('jS F Y, G:i', $original), '16' => date('d M Y, G:i', $original), '17' => date('l jS F Y, G:i', $original), '18' => date('Y-m-d', $original), 'custom' => __('Custom','instagram-feed') ]; } }instagram-feed/inc/Builder/SBI_Tooltip_Wizard.php000064400000005336151435171370015767 0ustar00init(); } /** * Initialize class. * * @since 6.0 */ public function init() { /* if ( ! wpforms_is_admin_page( 'builder' ) && ! wp_doing_ajax() && ! $this->is_form_embed_page() ) { return; } */ $this->hooks(); } /** * Register hooks. * * @since 6.0 */ public function hooks() { add_action( 'admin_enqueue_scripts', [ $this, 'enqueues' ] ); add_action( 'admin_footer', [ $this, 'output' ] ); } /** * Enqueue assets. * * @since 6.0 */ public function enqueues() { wp_enqueue_style( 'sbi_tooltipster', SBI_PLUGIN_URL . 'admin/builder/assets/css/tooltipster.css', null, SBIVER ); wp_enqueue_script( 'sbi_tooltipster', SBI_PLUGIN_URL . 'admin/builder/assets/js/jquery.tooltipster.min.js', [ 'jquery' ], SBIVER, true ); wp_enqueue_script( 'sbi-admin-tooltip-wizard', SBI_PLUGIN_URL . 'admin/builder/assets/js/tooltip-wizard.js', [ 'jquery' ], SBIVER ); $wp_localize_data = []; if( $this->check_gutenberg_wizard() ){ $wp_localize_data['sbi_wizard_gutenberg'] = true; } wp_localize_script( 'sbi-admin-tooltip-wizard', 'sbi_admin_tooltip_wizard', $wp_localize_data ); } /** * Output HTML. * * @since 6.0 */ public function output() { if( $this->check_gutenberg_wizard() ){ $this->gutenberg_tooltip_output(); } } /** * Gutenberg Tooltip Output HTML. * * @since 6.0 */ public function check_gutenberg_wizard() { global $pagenow; return ( ( $pagenow == 'post.php' ) || (get_post_type() == 'page') ) && ! empty( $_GET['sbi_wizard'] ); } /** * Gutenberg Tooltip Output HTML. * * @since 6.0 */ public function gutenberg_tooltip_output() { ?>

and click the block to embed it.','instagram-feed'); ?>

print_control_wrapper($editingType); } } }instagram-feed/inc/Builder/SBI_Source.php000064400000077751151435171370014267 0ustar00 array(12) { ["access_token"]=> string(177) "2VuX2HJb9MhA743QVp8GxZAxQZDZD" ["user_id"]=> string(17) "438429" ["username"]=> string(14) "egel" ["is_valid"]=> bool(true) ["last_checked"]=> int(1627935580) ["type"]=> string(8) "business" ["account_type"]=> string(8) "business" ["profile_picture"]=> string(308) "https://scontent.ffcm1-1.fna.fbcdn.net/v/t51.2885-15/11337206_1687352168145969_640230547_a.jpg?_nc_cat=100&ccb=1-3&_nc_sid=86c713&_nc_ohc=jwEvCq4EZ4EAX9CG3Wc&_nc_oc=AQm6GtCuqAmo9vexkGd0lk2HV9cB1R7UzXhdufRwLnSoL_QSGKgZXgoX7G4sCS3P5sw&_nc_ht=scontent.ffcm1-1.fna&oh=82ec797eaa624bd02fbdeef335a3f77f&oe=610DEE95" ["use_tagged"]=> string(1) "1" ["name"]=> string(57) "{"jsonencoded":"Example \ud83c\udfd4\ud83d\udc1f"}" ["page_access_token"]=> string(186) "V6BuEgJN9vCJzZBE3AGsZBITmXj57" ["local_avatar"]=> bool(false) } */ namespace InstagramFeed\Builder; use function DI\value; use InstagramFeed\Helpers\Util; class SBI_Source { const BATCH_SIZE = 10; /** * AJAX hooks for various feed data related functionality * * @since 6.0 */ public static function hooks() { add_action( 'wp_ajax_sbi_source_builder_update', array( 'InstagramFeed\Builder\SBI_Source', 'builder_update' ) ); add_action( 'wp_ajax_sbi_source_builder_update_multiple', array( 'InstagramFeed\Builder\SBI_Source', 'builder_update_multiple' ) ); add_action( 'wp_ajax_sbi_source_get_page', array( 'InstagramFeed\Builder\SBI_Source', 'get_page' ) ); add_action( 'admin_init', array( 'InstagramFeed\Builder\SBI_Source', 'batch_process_legacy_source_queue' ) ); } /** * Used in an AJAX call to update sources based on selections or * input from a user. Makes an API request to add additiona info * about the connected source. * * @since 6.0 */ public static function builder_update() { if ( ! check_ajax_referer( 'sbi-admin', 'nonce', false ) ) { wp_send_json_error(); } if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $source_data = array( 'access_token' => sanitize_text_field( $_POST['access_token'] ), 'id' => sanitize_text_field( $_POST['id'] ), 'type' => sanitize_text_field( $_POST['type'] ), 'username' => isset( $_POST['username'] ) ? sanitize_text_field( $_POST['username'] ) : '', ); $return = sbi_connect_new_account( $source_data['access_token'], $source_data['id'] ); if ( empty( $return ) ) { $return = array( 'error' => '
' . esc_html__( 'Something went wrong. Please make sure the ID and access token are correct.', 'instagram-feed' ) . '
' . '' . '
', ); } if ( empty( $return['error'] ) ) { wp_send_json_success( SBI_Feed_Builder::get_source_list() ); } wp_send_json_error( array( 'message' => $return['error'] ) ); } /** * Add our update a source from raw API data. * * @param $source_data * * @return string */ public static function process_connecting_source_data( $source_data ) { $connected_account = array( 'id' => $source_data['id'], 'user_id' => $source_data['id'], 'type' => $source_data['type'], 'account_type' => $source_data['type'], 'username' => $source_data['username'], 'access_token' => $source_data['access_token'], 'privilege' => $source_data['privilege'], ); $single_source = self::update_single_source( $connected_account, false ); if ( ! empty( $single_source['error'] ) ) { $message = ! empty( $single_source['error']['error']['message'] ) ? esc_html( $single_source['error']['error']['message'] ) : ''; $code = ! empty( $single_source['error']['error']['code'] ) ? esc_html( $single_source['error']['error']['code'] ) : ''; if ( isset( $single_source['error']['response'] ) && is_wp_error( $single_source['error']['response'] ) ) { $response = $single_source['error']['response']; $message = sprintf( __( 'Error connecting to %s.', 'instagram-feed' ), $single_source['error']['url'] ); if ( isset( $response ) && isset( $response->errors ) ) { foreach ( $response->errors as $key => $item ) { $code = $key; $message .= $item[0]; } } } $message .= ' ' . __( 'Directions on how to resolve this issue', 'instagram-feed' ) . ''; $return_html = '
'; $return_html .= ''; $return_html .= ''; $return_html .= ''; $return_html .= '' . sprintf( __( 'Connection Error: %s ', 'instagram-feed' ), $code ) . '
' . $message . '
'; $return = array( 'success' => false, 'message' => $return_html, ); return sbi_json_encode( $return ); } else { global $sb_instagram_posts_manager; $sb_instagram_posts_manager->remove_error( 'connection' ); } $manager = new \SB_Instagram_Data_Manager(); $manager->update_last_used(); return sbi_json_encode( SBI_Feed_Builder::get_source_list() ); } /** * Used in an AJAX call to update Multiple sources based on selections or * input from a user. Makes an API request to add additiona info * about the connected source. * * @since 6.0 */ public static function builder_update_multiple() { if ( ! check_ajax_referer( 'sbi-admin', 'nonce', false ) ) { wp_send_json_error(); } if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } if ( isset( $_POST['sourcesList'] ) && ! empty( $_POST['sourcesList'] ) && is_array( $_POST['sourcesList'] ) ) { foreach ( $_POST['sourcesList'] as $single_source ) : $source_data = array( 'access_token' => sanitize_text_field( $single_source['access_token'] ), 'id' => sanitize_text_field( $single_source['id'] ), 'type' => sanitize_text_field( $single_source['type'] ), 'username' => isset( $single_source['username'] ) ? sanitize_text_field( $single_source['username'] ) : '', ); if ( $single_source['type'] === 'business' ) { $source_data['privilege'] = 'tagged'; } if ( ! empty( $single_source['name'] ) ) { $source_data['name'] = sanitize_text_field( $single_source['name'] ); } self::process_connecting_source_data( $source_data ); endforeach; } echo sbi_json_encode( SBI_Feed_Builder::get_source_list() ); wp_die(); } /** * Get a list of sources with a limit and offset like a page * * @since 6.0 */ public static function get_page() { if ( ! check_ajax_referer( 'sbi-admin', 'nonce', false ) ) { wp_send_json_error(); } if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } $args = array( 'page' => $_POST['page'] ); $source_data = SBI_Db::source_query( $args ); echo sbi_json_encode( $source_data ); wp_die(); } /** * Connection URLs are based on the website connecting accounts so that is * configured here and returned * * @param bool $is_settings * * @return array * * @since 6.0 */ public static function get_connection_urls( $is_settings = false ) { $urls = array(); $admin_url_state = $is_settings ? admin_url( 'admin.php?page=sbi-settings' ) : admin_url( 'admin.php?page=sbi-feed-builder' ); $nonce = wp_create_nonce( 'sbi_con' ); //If the admin_url isn't returned correctly then use a fallback if ( $admin_url_state === '/wp-admin/admin.php?page=sbi-feed-builder' || $admin_url_state === '/wp-admin/admin.php?page=sbi-feed-builder&tab=configuration' ) { $admin_url_state = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; } $admin_email = get_option( 'admin_email', '' ); if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); $user_email = $current_user->user_email; } $user_email = isset( $user_email ) ? $user_email : $admin_email; $urls['personal'] = array( 'connect' => SBI_CONNECT_URL, 'wordpress_user' => sanitize_email( $user_email ), 'v' => 'free', 'vn' => SBIVER, 'sbi_con' => $nonce, ); $urls['business'] = array( 'connect' => SBI_CONNECT_URL, 'wordpress_user' => sanitize_email( $user_email ), 'v' => 'free', 'vn' => SBIVER, 'sbi_con' => $nonce, ); $urls['stateURL'] = $admin_url_state; return $urls; } /** * Used as a listener for the account connection process. If * data is returned from the account connection processed it's used * to generate the list of possible sources to chose from. * * @return array|bool * * @since 6.0 */ public static function maybe_source_connection_data() { $nonce = ! empty( $_GET['sbi_con'] ) ? sanitize_key( $_GET['sbi_con'] ) : ''; if ( ! wp_verify_nonce( $nonce, 'sbi_con' ) ) { return false; } if ( isset( $_GET['sbi_access_token'] ) && isset( $_GET['sbi_graph_api'] ) ) { $return = self::retrieve_available_business_accounts(); return $return; } elseif ( isset( $_GET['sbi_access_token'] ) && isset( $_GET['sbi_account_type'] ) ) { $return = self::retrieve_available_personal_accounts(); return $return; } return false; } /** * Uses the Instagram Basic Display API to get available personal * accounts * * @return array|bool * * @since 6.0 */ public static function retrieve_available_personal_accounts() { $encryption = new \SB_Instagram_Data_Encryption(); $return = array( 'type' => 'personal', 'unconnectedAccounts' => array(), 'matchingExistingAccounts' => array(), 'didQuickUpdate' => false, ); $access_token = sanitize_text_field( $_GET['sbi_access_token'] ); if ( empty( $access_token ) ) { return array(); } $user_id = sanitize_text_field( $_GET['sbi_id'] ); $user_name = sanitize_text_field( $_GET['sbi_username'] ); $expires_in = (int) $_GET['sbi_expires_in']; $expires_timestamp = time() + $expires_in; $source_data = array( 'access_token' => $access_token, 'id' => $user_id, 'user_id' => $user_id, 'type' => 'basic', 'username' => $user_name, 'privilege' => '', 'expires' => date( 'Y-m-d H:i:s', $expires_timestamp ), ); $connection = new \SB_Instagram_API_Connect( $source_data, 'header', array() ); $connection->connect(); $header_details = '{}'; $source_data['error'] = ''; if ( ! $connection->is_wp_error() && ! $connection->is_instagram_error() ) { $header_details_array = $connection->get_data(); $header_details_array = self::merge_account_details( $header_details_array, $source_data ); $source_data['username'] = $header_details_array['username']; $header_details = sbi_json_encode( $header_details_array ); } else { $source_data['error'] = $connection; if ( $connection->is_wp_error() ) { $page_error = $connection->get_wp_error(); if ( ! empty( $page_error ) && isset( $page_error['response']->errors ) ) { $error_message = ''; foreach ( $page_error['response']->errors as $key => $item ) { $error_message .= $key . ': ' . $item[0] . ' '; } return array( 'error' => array( 'code' => 'HTTP Request', 'message' => $error_message, 'details' => $error_message, ), ); } } else { $error = $connection->get_data(); return array( 'error' => array( 'code' => $error['error']['code'], 'message' => $error['error']['message'], 'details' => $error['error']['message'], ), ); } } $source_data['info'] = $header_details; $return['unconnectedAccounts'][] = $source_data; $args = array( 'id' => $user_id, ); $results = SBI_Db::source_query( $args ); $already_connected_as_business_account = ( isset( $results[0] ) && $results[0]['account_type'] === 'business' ); $matches_existing_personal = ( isset( $results[0] ) && $results[0]['account_type'] !== 'business' ); if ( $already_connected_as_business_account ) { $return['matchingExistingAccounts'] = $results[0]; $instagram_account_data = json_decode( $encryption->decrypt( $results[0]['info'] ), true ); $return['matchingExistingAccounts']['avatar'] = isset( $instagram_account_data['profile_picture_url'] ) ? $instagram_account_data['profile_picture_url'] : false; $return['notice'] = __( 'The Instagram account you are logged into is already connected as a "business" account. Remove the business account if you\'d like to connect as a basic account instead (not recommended).', 'instagram-feed' ); } elseif ( $matches_existing_personal ) { $return['matchingExistingAccounts'] = $results[0]; SBI_Db::delete_source( $results[0]['id'] ); self::update_or_insert( $source_data ); $return['notice'] = ''; $return['didQuickUpdate'] = true; } else { self::update_or_insert( $source_data ); $return['didQuickUpdate'] = true; } return $return; } /** * Uses the Facebook API to retrieve a list of business accounts * * @return array|bool * * @since 6.0 */ public static function retrieve_available_business_accounts() { $return = array( 'type' => 'business', 'unconnectedAccounts' => array(), 'matchingExistingAccounts' => array(), 'didQuickUpdate' => false, ); $access_token = sbi_maybe_clean( urldecode( $_GET['sbi_access_token'] ) ); if ( empty( $access_token ) ) { return array(); } $url = 'https://graph.facebook.com/me/accounts?fields=instagram_business_account,access_token&limit=500&access_token=' . $access_token; $args = array( 'timeout' => 60, ); $result = wp_remote_get( $url, $args ); $pages_data = '{}'; if ( ! is_wp_error( $result ) ) { $pages_data = $result['body']; } else { $page_error = $result; } if ( isset( $page_error ) && isset( $page_error->errors ) ) { $error_message = ''; foreach ( $page_error->errors as $key => $item ) { $error_message .= $key . ': ' . $item[0] . ' '; } return array( 'error' => array( 'code' => 'HTTP Request', 'message' => __( 'Your server could not complete a remote request to Facebook\'s API. Your host may be blocking access or there may be a problem with your server.', 'instagram-feed' ), 'details' => $error_message, ), ); } $pages_data_arr = json_decode( $pages_data, true ); if ( empty( $pages_data_arr['data'] ) ) { return array( 'error' => array( 'code' => 'No Accounts Found', 'message' => __( 'Couldn\'t find Business Profile', 'instagram-feed' ), 'details' => sprintf( __( 'Uh oh. It looks like this Facebook account is not currently connected to an Instagram Business profile. Please check that you are logged into the %1$sFacebook account%2$s in this browser which is associated with your Instagram Business Profile.', 'instagram-feed' ), '', '' ), ), ); } $user_url = 'https://graph.facebook.com/me?fields=name,id,picture&access_token=' . $access_token; $args = array( 'timeout' => 60, ); $result = wp_remote_get( $user_url, $args ); if ( ! is_wp_error( $result ) ) { $user_data = $result['body']; $user_data_arr = json_decode( $user_data, true ); $return['user'] = $user_data_arr; } $return['numFound'] = count( $pages_data_arr['data'] ); foreach ( $pages_data_arr['data'] as $page_data ) { if ( isset( $page_data['instagram_business_account'] ) ) { $instagram_business_id = $page_data['instagram_business_account']['id']; $page_access_token = isset( $page_data['access_token'] ) ? $page_data['access_token'] : ''; $instagram_account_url = 'https://graph.facebook.com/' . $instagram_business_id . '?fields=name,username,profile_picture_url&access_token=' . $access_token; $args = array( 'timeout' => 60, ); $result = wp_remote_get( $instagram_account_url, $args ); if ( ! is_wp_error( $result ) ) { $instagram_account_info = $result['body']; $instagram_account_data = json_decode( $instagram_account_info, true ); $instagram_biz_img = isset( $instagram_account_data['profile_picture_url'] ) ? $instagram_account_data['profile_picture_url'] : false; $source_data = array( 'access_token' => $access_token, 'id' => $instagram_business_id, 'user_id' => $instagram_business_id, 'type' => 'business', 'username' => $instagram_account_data['username'], 'avatar' => $instagram_biz_img, 'privilege' => 'tagged', ); $source_data['info'] = sbi_json_encode( $instagram_account_data ); $return['unconnectedAccounts'][] = $source_data; $args = array( 'id' => $instagram_business_id, ); $results = SBI_Db::source_query( $args ); $already_connected_as_business_account = ( isset( $results[0] ) && $results[0]['account_type'] === 'business' ); $matches_existing_personal = ( isset( $results[0] ) && $results[0]['account_type'] !== 'business' ); if ( $already_connected_as_business_account ) { SBI_Db::delete_source( $results[0]['id'] ); self::update_or_insert( $source_data ); } elseif ( $matches_existing_personal && $return['numFound'] === 1 ) { $return['didQuickUpdate'] = true; SBI_Db::delete_source( $results[0]['id'] ); self::update_or_insert( $source_data ); } } else { $page_error = $result; } } } if ( empty( $return['unconnectedAccounts'] ) ) { return array( 'error' => array( 'code' => 'No Accounts Found', 'message' => __( 'Couldn\'t find Business Profile', 'instagram-feed' ), 'details' => sprintf( __( 'Uh oh. It looks like this Facebook account is not currently connected to an Instagram Business profile. Please check that you are logged into the %1$sFacebook account%2$s in this browser which is associated with your Instagram Business Profile. If you are, in fact, logged-in to the correct account please make sure you have Instagram accounts connected with your Facebook account by following %3$sthis FAQ%4$s', 'instagram-feed' ), '', '', '', '' ), ), ); } return $return; } /** * Used to update or insert connected accounts (sources) * * @param array $source_data * * @return bool * * @since 6.0 */ public static function update_or_insert( $source_data ) { if ( ! isset( $source_data['id'] ) ) { return false; } if ( isset( $source_data['info'] ) ) { // data from an API request related to the source is saved as a JSON string if ( is_object( $source_data['info'] ) || is_array( $source_data['info'] ) ) { $source_data['info'] = sbi_json_encode( $source_data['info'] ); } } if ( self::exists_in_database( $source_data ) ) { $source_data['last_updated'] = date( 'Y-m-d H:i:s' ); self::update( $source_data, false ); } else { if ( ! isset( $source_data['access_token'] ) ) { return false; } self::insert( $source_data ); } return true; } /** * Whether or not the source exists in the database * * @param array $args * * @return bool * * @since 6.0 */ public static function exists_in_database( $args ) { $results = SBI_Db::source_query( $args ); return isset( $results[0] ); } /** * Add a new source as a row in the sbi_sources table * * @param array $source_data * * @return false|int * * @since 6.0 */ public static function insert( $source_data ) { if ( isset( $source_data['name'] ) ) { $source_data['username'] = $source_data['name']; } $data = $source_data; return SBI_Db::source_insert( $data ); } /** * Update info in rows that match the source data * * @param array $source_data * * @return false|int * * @since 6.0 */ public static function update( $source_data, $where_privilige = true ) { $where = array( 'id' => $source_data['id'] ); unset( $source_data['id'] ); if ( $where_privilige && isset( $source_data['privilege'] ) ) { $where['privilege'] = $source_data['privilege']; } // usernames are more common in the other plugins so // that is the name of the column that is used as the // page or group "name" data if ( isset( $source_data['name'] ) ) { $source_data['username'] = $source_data['name']; } $data = $source_data; return SBI_Db::source_update( $data, $where ); } /** * Creates a queue of connected accounts that need to be added to * the sources table * * @since 6.0 */ public static function set_legacy_source_queue() { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $options = get_option( 'sb_instagram_settings', array() ); $connected_accounts = isset( $options['connected_accounts'] ) ? $options['connected_accounts'] : array(); $sbi_statuses_option['legacy_source_queue'] = array_chunk( array_keys( $connected_accounts ), self::BATCH_SIZE ); update_option( 'sbi_statuses', $sbi_statuses_option ); return $sbi_statuses_option['legacy_source_queue']; } /** * Whether or not there are still sources in the queue and * this isn't disabled * * @return bool * * @since 6.0 */ public static function should_do_source_updates() { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $should_do_source_updates = isset( $sbi_statuses_option['legacy_source_queue'] ) ? ! empty( $sbi_statuses_option['legacy_source_queue'] ) : false; return apply_filters( 'should_do_source_updates', $should_do_source_updates ); } /** * Processes one set of connected accounts * * @since 6.0 */ public static function batch_process_legacy_source_queue() { if ( ! self::should_do_source_updates() ) { return; } $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $batch = array_shift( $sbi_statuses_option['legacy_source_queue'] ); update_option( 'sbi_statuses', $sbi_statuses_option ); // updated early just in case there is a fatal error if ( empty( $batch ) ) { return; } $options = get_option( 'sb_instagram_settings', array() ); $connected_accounts = isset( $options['connected_accounts'] ) ? $options['connected_accounts'] : array(); foreach ( $batch as $account_key ) { $connected_account = isset( $connected_accounts[ $account_key ] ) ? $connected_accounts[ $account_key ] : false; if ( $connected_account ) { self::update_single_source( $connected_account ); } } return $sbi_statuses_option['legacy_source_queue']; } /** * Transfer data from a connected account to the sources table * after it's been validated with an API call * * @param array $connected_account * @param bool $connect_if_error * * @return array * * @since 6.0 */ public static function update_single_source( $connected_account, $connect_if_error = true ) { $account_type = isset( $connected_account['account_type'] ) ? $connected_account['account_type'] : 'business'; $connection = new \SB_Instagram_API_Connect( $connected_account, 'header', array() ); $connection->connect(); if ( isset( $connected_account['privilege'] ) && $connected_account['privilege'] === 'tagged' ) { $connected_account['use_tagged'] = true; } $source_data = array( 'access_token' => $connected_account['access_token'], 'id' => $connected_account['user_id'], 'type' => $account_type, 'username' => $connected_account['username'], 'privilege' => ! empty( $connected_account['use_tagged'] ) ? 'tagged' : '', ); if ( ! empty( $connected_account['expires_timestamp'] ) ) { $source_data['expires'] = date( 'Y-m-d H:i:s', $connected_account['expires_timestamp'] ); } if ( isset( $connected_account['local_avatar'] ) && $connected_account['local_avatar'] ) { \SB_Instagram_Connected_Account::update_local_avatar_status( $connected_account['username'], true ); } $header_details = '{}'; $source_data['error'] = ''; if ( ! $connection->is_wp_error() && ! $connection->is_instagram_error() ) { $header_array = $connection->get_data(); $header_array = self::merge_account_details( $header_array, $connected_account ); $cdn_avatar_url = \SB_Instagram_Parse::get_avatar( $header_array, array(), true ); if ( ! empty( $cdn_avatar_url ) ) { $created = \SB_Instagram_Connected_Account::create_local_avatar( $header_array['username'], $cdn_avatar_url ); \SB_Instagram_Connected_Account::update_local_avatar_status( $header_array['username'], $created ); if($created){ $header_array['local_avatar_url'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $header_array['username'] ); $header_array['local_avatar'] = \SB_Instagram_Connected_Account::get_local_avatar_url( $header_array['username'] ); } } else { \SB_Instagram_Connected_Account::delete_local_avatar( $header_array['username'] ); $header_array['local_avatar'] = false; } $source_data['username'] = $header_array['username']; $header_details = sbi_json_encode( $header_array ); $source_data['local_avatar'] = $header_array['local_avatar']; $source_data['local_avatar_url'] = $header_array['local_avatar']; } else { $source_data['error'] = $connection; if ( $connection->is_wp_error() ) { $source_data['error'] = $connection->get_wp_error(); } else { $source_data['error'] = $connection->get_data(); } } $source_data['info'] = $header_details; if ( ! empty( $connected_account['private'] ) ) { $source_data['info']['private'] = $connected_account['private']; } if ( empty( $source_data['error'] ) || $connect_if_error ) { self::update_or_insert( $source_data ); } $source_data['record_id'] = 0; $source_data['account_id'] = $connected_account['user_id']; $source_data['account_type'] = $account_type; return $source_data; } /** * Creates a source from the access token and * source ID saved in 3.x settings * * @since 6.0 */ public static function update_source_from_legacy_settings() { // not needed } public static function merge_account_details( $header_details_array, $connected_account ) { $header_details_array['local_avatar'] = ! empty( $connected_account['local_avatar'] ); $header_details_array['name'] = ! empty( $connected_account['name'] ) ? $connected_account['name'] : '{}'; $header_details_array['page_access_token'] = ! empty( $connected_account['page_access_token'] ) ? $connected_account['page_access_token'] : ''; return $header_details_array; } /** * If the plugin is still updating legacy sources this function * can be used to udpate a single source if needed before * the update is done. * * @param string $slug_or_id * * @return array|bool */ public static function maybe_one_off_connected_account_update( $slug_or_id ) { if ( ! self::should_do_source_updates() ) { return false; } $connected_accounts = (array) json_decode( stripcslashes( get_option( 'sbi_connected_accounts' ) ), true ); $connected_account = isset( $connected_accounts[ $slug_or_id ] ) ? $connected_accounts[ $slug_or_id ] : false; if ( $connected_account ) { return self::update_single_source( $connected_account ); } return false; } /** * Clears the "error" column in the sbi_sources table for a specific * account * * @param string $account_id * * @return bool * * @since 6.0 */ public static function clear_error( $account_id ) { $source_data = array( 'id' => $account_id, 'error' => '', ); return self::update_or_insert( $source_data ); } /** * Adds an error to the error table by account ID * * @param string $account_id * @param string|object|array $error * * @return bool * * @since 6.0 */ public static function add_error( $account_id, $error ) { $source_data = array( 'id' => $account_id, 'error' => is_string( $error ) ? $error : sbi_json_encode( $error ), ); return self::update_or_insert( $source_data ); } /** * Uses query results from the sbi_sources table to convert them * into connected account data and return them as a connected account * array as would be used in versions 5.x and below * * @param array $source_data * * @return array * * @since 6.0 */ public static function convert_sources_to_connected_accounts( $source_data ) { $encryption = new \SB_Instagram_Data_Encryption(); $connected_accounts = array(); foreach ( $source_data as $source_datum ) { $info = ! empty( $source_datum['info'] ) ? json_decode( $encryption->decrypt( $source_datum['info'] ), true ) : array(); $settings = array( 'gdpr' => 'no' ); $avatar = \SB_Instagram_Parse::get_avatar( $info, $settings, true ); $connected_account = array( 'id' => $source_datum['account_id'], 'user_id' => $source_datum['account_id'], 'type' => $source_datum['account_type'], 'account_type' => $source_datum['account_type'], 'username' => $source_datum['username'], 'access_token' => sbi_maybe_clean( $source_datum['access_token'] ), 'privilege' => $source_datum['privilege'], 'expires_timestamp' => Util::get_valid_timestamp( $source_datum['expires'] ), 'is_valid' => empty( $source_datum['error'] ), 'profile_picture' => $avatar, 'last_checked' => isset( $source_datum['last_updated'] ) ? strtotime( $source_datum['last_updated'] ) : time(), ); if ( ! empty( $info['private'] ) ) { $connected_account['private'] = $info['private']; } if ( ! empty( $info['biography'] ) ) { $connected_account['bio'] = $info['biography']; } $connected_account['local_avatar_url'] = \SB_Instagram_Connected_Account::maybe_local_avatar( $source_datum['username'], $avatar ); $connected_accounts[ $source_datum['account_id'] ] = $connected_account; } return $connected_accounts; } /** * Returns a batch of accounts that have expiring access tokens * * @return array|bool * * @since 6.0 */ public static function get_expiring() { $args = array( 'expiring' => true ); $results = SBI_Db::source_query( $args ); return $results; } /** * Updates Personal Account Bio * * @return array|bool * * @since 6.0.8 */ public static function update_personal_account_bio( $account_id, $bio ) { $source = SBI_Db::get_source_by_account_id( $account_id ); if ( isset( $source['info'] ) ) { $encryption = new \SB_Instagram_Data_Encryption(); $info = json_decode( $encryption->maybe_decrypt( $source['info'] ), true ); $info = array( 'biography' => $bio ) + $info; $to_update = array(); $to_update['info'] = json_encode( $info ); SBI_Db::source_update( $to_update, array( 'id' => $account_id ) ); } } } instagram-feed/inc/Integrations/Divi/SBInstagramFeed.php000064400000003733151435171370017230 0ustar00name = esc_html__('Instagram Feed', 'instagram-feed'); } /** * Module's specific fields. * * @since 6.2.9 * * @return array */ public function get_fields() { $feeds_list = SBI_Db::elementor_feeds_query($default = true); return [ 'feed_id' => [ 'label' => esc_html__('Feed', 'instagram-feed'), 'type' => 'select', 'option_category' => 'basic_option', 'toggle_slug' => 'main_content', 'options' => $feeds_list, ] ]; } /** * Module's advanced fields. * * @since 6.2.9 * * @return array */ public function get_advanced_fields_config() { return [ 'link_options' => false, 'text' => false, 'background' => false, 'borders' => false, 'box_shadow' => false, 'button' => false, 'filters' => false, 'fonts' => false, ]; } /** * Render module. * * @since 6.2.9 * * @param array $attrs Module attributes. * @param string $content Module content. * @param string $render_slug Module slug. * * @return string */ public function render($attrs, $content, $render_slug) { $feed_id = $this->props['feed_id']; if (empty($feed_id)) { return ''; } return do_shortcode( sprintf( '[instagram-feed feed="%1$s"]', absint($feed_id) ) ); } } instagram-feed/inc/Integrations/Divi/SBI_Divi_Handler.php000064400000006676151435171370017330 0ustar00load(); } /** * Load an integration. * * @since 6.2.9 */ public function load() { if ($this->allow_load()) { $this->hooks(); } } /** * Indicate if current integration is allowed to load. * * @since 6.2.9 * * @return bool */ public function allow_load() { if (function_exists('et_divi_builder_init_plugin')) { return true; } $allow_themes = [ 'Divi' ]; $theme = wp_get_theme(); $theme_name = $theme->get_template(); $theme_parent = $theme->parent(); return (bool) array_intersect([ $theme_name, $theme_parent ], $allow_themes); } /** * Hooks. * * @since 6.2.9 */ public function hooks() { add_action('et_builder_ready', [ $this, 'register_module' ]); if (wp_doing_ajax()) { add_action('wp_ajax_sb_instagramfeed_divi_preview', [ $this, 'preview' ]); } if ($this->is_divi_builder()) { add_action('wp_enqueue_scripts', [ $this, 'builder_scripts' ]); } } /** * Load scripts. * * @since 6.2.9 */ public function builder_scripts() { wp_enqueue_script( 'sbinstagram-divi', // The unminified version is not supported by the browser. SBI_PLUGIN_URL . 'admin/assets/js/divi-handler.min.js', [ 'react', 'react-dom', 'jquery' ], SBIVER, true ); wp_localize_script( 'sbinstagram-divi', 'sb_divi_builder', [ 'ajax_handler' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('sbi-admin'), 'feed_splash' => htmlspecialchars(SBI_Integration::get_widget_cta('button')) ] ); $upload = wp_upload_dir(); $resized_url = trailingslashit($upload['baseurl']) . trailingslashit(SBI_UPLOADS_NAME); $js_options = array( 'font_method' => 'svg', 'placeholder' => trailingslashit(SBI_PLUGIN_URL) . 'img/placeholder.png', 'resized_url' => $resized_url, 'ajax_url' => admin_url('admin-ajax.php'), ); // legacy settings $path = Util::sbi_legacy_css_enabled() ? 'js/legacy/' : 'js/'; wp_enqueue_script( 'sbiscripts', SBI_PLUGIN_URL . $path . 'sbi-scripts.min.js', array('jquery'), SBIVER, true ); wp_localize_script('sbiscripts', 'sb_instagram_js_options', $js_options); } /** * Register Divi module. * * @since 6.2.9 */ public function register_module() { if (! class_exists('ET_Builder_Module')) { return; } new SBInstagramFeed(); } /** * Ajax handler for the Feed preview. * * @since 6.2.9 */ public function preview() { check_ajax_referer('sbi-admin', 'nonce'); if (! sbi_current_user_can('manage_instagram_feed_options')) { wp_send_json_error(); } $feed_id = absint(filter_input(INPUT_POST, 'feed_id', FILTER_SANITIZE_NUMBER_INT)); wp_send_json_success( do_shortcode( sprintf( '[instagram-feed feed="%1$s"]', absint($feed_id) ) ) ); } /** * Determine if a current page is opened in the Divi Builder. * * @since 6.2.9 * * @return bool */ private function is_divi_builder() { return ! empty($_GET['et_fb']); // phpcs:ignore WordPress.Security.NonceVerification.Recommended } } instagram-feed/inc/Integrations/Elementor/SBY_Elementor_Widget.php000064400000003100151435171370021267 0ustar00start_controls_section( 'section_content', [ 'label' => esc_html__('Instagram Feed Settings', 'instagram-feed'), ] ); $this->add_control( 'feed_id', [ 'label' => esc_html__('Select a Feed', 'instagram-feed'), 'type' => 'sbi_feed_control', 'label_block' => true, 'dynamic' => ['active' => true], 'options' => SBI_Db::elementor_feeds_query($default = true), 'default' => 0, 'description' => esc_html__('Select a feed to display. If you don\'t have any feeds yet then you can create one in the Instagram Feed settings page.', 'instagram-feed'), ] ); $this->end_controls_section(); } /** * Render Instagram Feed widget output on the frontend. * * Written in PHP and used to generate the final HTML. * * @since 6.2.9 * @access protected */ protected function render() { $settings = $this->get_settings_for_display(); if (!empty($settings['feed_id']) && $settings['feed_id'] != 0) { $output = do_shortcode(shortcode_unautop('[instagram-feed feed=' . $settings['feed_id'] . ']')); } else { $output = is_admin() ? SBI_Integration::get_widget_cta() : esc_html__('No feed selected to display.', 'instagram-feed'); } echo apply_filters('sbi_output', $output, $settings); } } instagram-feed/inc/Integrations/Elementor/SBI_Elementor_Base.php000064400000014252151435171370020710 0ustar00apply_hooks(); } return self::$instance; } /** * Compatibility check. * * Check if the current environment is compatible with the plugin. * * @since 6.2.9 * * @return bool True if the plugin can run, false otherwise. */ public static function is_compatible() { // Check if Elementor is installed and activated. if (!did_action('elementor/loaded')) { return false; } // Check for required Elementor version. if (!version_compare(ELEMENTOR_VERSION, self::MINIMUM_ELEMENTOR_VERSION, '>=')) { return false; } // Check for required PHP version. if (version_compare(PHP_VERSION, self::MINIMUM_PHP_VERSION, '<')) { return false; } return true; } /** * Apply hooks. * * @since 6.2.9 * @access private */ private function apply_hooks() { add_action('elementor/frontend/after_register_scripts', array( $this, 'register_frontend_scripts' )); add_action('elementor/frontend/after_register_styles', array( $this, 'register_frontend_styles' ), 10); add_action('elementor/frontend/after_enqueue_styles', array( $this, 'enqueue_frontend_styles' ), 10); add_action('elementor/controls/register', array( $this, 'register_controls' )); add_action('elementor/widgets/register', array( $this, 'register_widgets' )); add_action('elementor/elements/categories_registered', array( $this, 'add_smashballon_categories' )); } /** * Add Smash Balloon categories. * * Add the Smash Balloon category to the Elementor widget categories. * * @since 6.2.9 * @access public * * @param object $elements_manager The Elementor elements manager. */ public function add_smashballon_categories($elements_manager) { $elements_manager->add_category( 'smash-balloon', [ 'title' => esc_html__('Smash Balloon', 'instagram-feed'), 'icon' => 'fa fa-plug', ] ); } /** * Register widgets. * * Register the Elementor widgets. * * @since 6.2.9 * @access public */ public function register_widgets($widgets_manager) { $widgets_manager->register(new SBI_Elementor_Widget()); $installed_plugins = SBI_Feed_Builder::get_smashballoon_plugins_info(); unset($installed_plugins['instagram']); foreach ($installed_plugins as $plugin) { if (!$plugin['installed']) { $plugin_class = str_replace('.', '\\', self::NAME_SPACE) . $plugin['class']; $widgets_manager->register(new $plugin_class()); } } do_action('sbi_elementor_widgets_registered'); } /** * Register controls. * * Register the Elementor controls. * * @since 6.2.9 * @access public */ public function register_controls($controls_manager) { $controls_manager->register(new SBI_Feed_Elementor_Control()); } /** * Register frontend scripts. * * Register the frontend scripts. * * @since 6.2.9 * @access public */ public function register_frontend_scripts() { $upload = wp_upload_dir(); $resized_url = trailingslashit($upload['baseurl']) . trailingslashit(SBI_UPLOADS_NAME); $js_options = array( 'font_method' => 'svg', 'placeholder' => trailingslashit(SBI_PLUGIN_URL) . 'img/placeholder.png', 'resized_url' => $resized_url, 'ajax_url' => admin_url('admin-ajax.php'), ); // legacy settings. $path = Util::sbi_legacy_css_enabled() ? 'js/legacy/' : 'js/'; wp_register_script( 'sbiscripts', SBI_PLUGIN_URL . $path . 'sbi-scripts.min.js', array('jquery'), SBIVER, true ); wp_localize_script('sbiscripts', 'sb_instagram_js_options', $js_options); $data_handler = array( 'smashPlugins' => SBI_Feed_Builder::get_smashballoon_plugins_info(), 'nonce' => wp_create_nonce('sbi-admin'), 'ajax_handler' => admin_url('admin-ajax.php'), ); wp_register_script( 'elementor-handler', SBI_PLUGIN_URL . 'admin/assets/js/elementor-handler.js', array('jquery'), SBIVER, true ); wp_localize_script('elementor-handler', 'sbHandler', $data_handler); wp_register_script( 'elementor-preview', SBI_PLUGIN_URL . 'admin/assets/js/elementor-preview.js', array('jquery'), SBIVER, true ); } /** * Register frontend styles. * * Register the frontend styles. * * @since 6.2.9 * @access public */ public function register_frontend_styles() { // legacy settings $path = Util::sbi_legacy_css_enabled() ? 'css/legacy/' : 'css/'; wp_register_style( 'sbistyles', SBI_PLUGIN_URL . $path . 'sbi-styles.min.css', array(), SBIVER ); } /** * Enqueue frontend styles. * * Enqueue the frontend styles. * * @since 6.2.9 * @access public */ public function enqueue_frontend_styles() { wp_enqueue_style('sbistyles'); } } instagram-feed/inc/Integrations/Elementor/CFF_Elementor_Widget.php000064400000003110151435171370021231 0ustar00 false, ]; } /** * Render control output in the editor. * * Used to generate the control HTML in the editor using Underscore JS * template. * * @since 6.2.9 * @access public */ public function content_template() { $control_uid = $this->get_control_uid(); ?>
<# if ( data.label ) {#> <# } #>
<# if ( data.description ) { #>
{{{ data.description }}}
<# } #>
<# if( data.controlValue != undefined && data.controlValue != '0' ) { #> | <# } #>
'instagram', 'cta_header' => __('Get started with your first feed from Instagram', 'instagram-feed'), 'cta_header2' => __('Select an Instagram feed to embed', 'instagram-feed'), 'cta_description_free' => __('You can display feeds of Instagram photos, videos, albums, events and more using the Pro version', 'instagram-feed'), 'cta_description_pro' => __('You can also add Facebook, Twitter, and YouTube posts into your feed using our Social Wall plugin', 'instagram-feed'), 'plugins' => SBI_Feed_Builder::get_smashballoon_plugins_info() ]; } /** * Widget CTA * * @param string $type - dropdown or button. * @since 6.1 * * @return HTML */ public static function get_widget_cta($type = 'dropdown') { $widget_cta_html = ''; $feeds_list = SBI_Db::elementor_feeds_query(); ob_start(); self::get_widget_cta_html($feeds_list, $type); $widget_cta_html .= ob_get_contents(); ob_get_clean(); return $widget_cta_html; } /** * CTA HTML * * @param [type] $feeds_list - list of feeds. * @param string $type - dropdown or button. * @return void */ public static function get_widget_cta_html($feeds_list, $type = 'dropdown') { $info = self::get_widget_info(); $feeds_exist = is_array($feeds_list) && sizeof($feeds_list) > 0; $cta_heading = $feeds_exist ? $info['cta_header2'] : $info['cta_header']; $cta_description = sbi_is_pro_version() ? $info['cta_description_pro'] : $info['cta_description_free']; ?>

$plugin) : ?>
set_url( $connected_account_or_url, $endpoint, $params ); } elseif ( ! is_array( $connected_account_or_url ) && strpos( $connected_account_or_url, 'https' ) !== false ) { $this->url = $connected_account_or_url; } else { $this->url = ''; } } /** * Returns the response from Instagram * * @return array|object * * @since 2.0/5.0 */ public function get_data() { if ( $this->is_wp_error() ) { return array(); } if ( ! empty($this->response['data'] ) ) { return $this->response['data']; } else { return $this->response; } } /** * Returns the error response and the url that was trying to be connected to * or false if no error * * @return array|bool * * @since 2.0/5.0 */ public function get_wp_error() { if ( $this->is_wp_error() ) { return array( 'response' => $this->response, 'url' => $this->url ); } else { return false; } } /** * Certain endpoints don't include the "next" URL so * this method allows using the "cursors->after" data instead * * @param $type * * @return bool * * @since 2.2.2/5.3.3 */ public function type_allows_after_paging( $type ) { return false; } /** * Returns the full url for the next page of the API request * * @param $type * * @return string * * @since 2.0/5.0 */ public function get_next_page( $type = '' ) { if ( ! empty( $this->response['pagination']['next_url'] ) ) { return $this->response['pagination']['next_url']; } elseif ( ! empty( $this->response['paging']['next'] ) ) { return $this->response['paging']['next']; } else { if ( $this->type_allows_after_paging( $type ) ) { if ( isset( $this->response['paging']['cursors']['after'] ) ) { return $this->response['paging']['cursors']['after']; } } return ''; } } /** * If url needs to be generated from the connected account, endpoint, * and params, this function is used to do so. * * @param $url */ public function set_url_from_args( $url ) { $this->url = $url; } /** * @return string * * @since 2.0/5.0 */ public function get_url() { return $this->url; } /** * If the server is unable to connect to the url, returns true * * @return bool * * @since 2.0/5.0 */ public function is_wp_error() { return is_wp_error( $this->response ); } /** * If the server can connect but Instagram returns an error, returns true * * @return bool * * @since 2.0/5.0 */ public function is_instagram_error( $response = false ) { if ( ! $response ) { $response = $this->response; } return (isset( $response['error'] )); } /** * Connect to the Instagram API and record the response * * @since 2.0/5.0 */ public function connect() { if ( empty( $this->url ) ) { $this->response = array(); return; } $args = array( 'timeout' => 20 ); $response = wp_remote_get( $this->url, $args ); /** * Api response for instagram connection * * @since 6.0.6 */ do_action( 'sbi_api_connect_response', $response, $this->url ); if ( ! is_wp_error( $response ) ) { // certain ways of representing the html for double quotes causes errors so replaced here. $response = json_decode( str_replace( '%22', '”', $response['body'] ), true ); if ( empty( $response ) ) { $response = array( 'error' => array( 'code' => 'unknown', 'message' => __( "An unknown error occurred when trying to connect to Instagram's API.", 'instagram-feed' ) ) ); } } $this->response = $response; } /** * Determines how and where to record an error from Instagram's API response * * @param array $response response from the API request * @param array $error_connected_account the connected account that is associated * with the error * @param string $request_type key used to determine the endpoint (ex. "header") * * @since 2.0/5.0 */ public static function handle_instagram_error( $response, $error_connected_account, $request_type ) { global $sb_instagram_posts_manager; delete_option( 'sbi_dismiss_critical_notice' ); $type = isset( $response['error']['code'] ) && (int)$response['error']['code'] === 18 ? 'hashtag_limit' : 'api'; $sb_instagram_posts_manager->add_error( $type, $response, $error_connected_account ); if ( $type === 'hashtag_limit' ) { $sb_instagram_posts_manager->maybe_set_display_error( $type, $response ); } } /** * Determines how and where to record an error connecting to a specified url * * @param $response * * @since 2.0/5.0 */ public static function handle_wp_remote_get_error( $response ) { global $sb_instagram_posts_manager; delete_option( 'sbi_dismiss_critical_notice' ); $sb_instagram_posts_manager->add_error( 'wp_remote_get', $response ); } /** * Determines how and where to record an error connecting to a specified url * * @since 2.0/5.0 */ public function has_encryption_error() { return isset( $this->encryption_error ) && $this->encryption_error; } /** * Sets the url for the API request based on the account information, * type of data needed, and additional parameters. * * Overwritten in the Pro version. * * @param array $connected_account connected account to be used in the request * @param string $endpoint_slug header or user * @param array $params additional params related to the request * * @since 2.0/5.0 * @since 2.2/5.3 added endpoints for the basic display API */ protected function set_url( $connected_account, $endpoint_slug, $params ) { $account_type = ! empty( $connected_account['type'] ) ? $connected_account['type'] : 'personal'; $num = ! empty( $params['num'] ) ? (int) $params['num'] : 33; if ( $account_type === 'basic' || $account_type === 'personal' ) { $access_token = sbi_maybe_clean( $connected_account['access_token'] ); if ( strpos( $access_token, 'IG' ) !== 0 ) { $this->encryption_error = true; $url = ''; } else { if ( $endpoint_slug === 'access_token' ) { $url = 'https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=' . $access_token; } elseif ( $endpoint_slug === 'header' ) { $url = 'https://graph.instagram.com/me?fields=id,username,media_count,account_type&access_token=' . $access_token; } else { $num = min( $num, 200 ); $url = 'https://graph.instagram.com/' . $connected_account['user_id'] . '/media?fields=media_url,thumbnail_url,caption,id,media_type,timestamp,username,permalink,children%7Bmedia_url,id,media_type,timestamp,permalink,thumbnail_url%7D&limit=' . $num . '&access_token=' . $access_token; } } } else { $access_token = sbi_maybe_clean( $connected_account['access_token'] ); if ( strpos( $access_token, 'EA' ) !== 0 ) { $this->encryption_error = true; $url = ''; } else { if ( 'header' === $endpoint_slug ) { $url = 'https://graph.facebook.com/' . $connected_account['user_id'] . '?fields=biography,id,username,website,followers_count,media_count,profile_picture_url,name&access_token=' . sbi_maybe_clean( $connected_account['access_token'] ); } else { $num = min( $num, 200 ); $url = 'https://graph.facebook.com/' . $connected_account['user_id'] . '/media?fields=media_url,media_product_type,thumbnail_url,caption,id,media_type,timestamp,username,comments_count,like_count,permalink,children%7Bmedia_url,id,media_type,timestamp,permalink,thumbnail_url%7D&limit=' . $num . '&access_token=' . sbi_maybe_clean( $connected_account['access_token'] ); } } } $this->set_url_from_args( $url ); } } instagram-feed/inc/class-sb-instagram-display-elements.php000064400000117247151435171370017706 0ustar00init(); $post = $single->get_post(); if ( isset( $post['thumbnail_url'] ) ) { return $post['thumbnail_url']; } elseif ( isset( $post['media_url'] ) && strpos( $post['media_url'], '.mp4' ) === false ) { return $post['media_url']; } return trailingslashit( SBI_PLUGIN_URL ) . 'img/thumb-placeholder.png'; } } else { if ( isset( $post['media_url'] ) ) { return $post['media_url']; } return trailingslashit( SBI_PLUGIN_URL ) . 'img/thumb-placeholder.png'; } } } return $media_url; } /** * Images are normally styles with the imgLiquid plugin * with JavaScript. If this is disabled, the plugin will * attempt to square all images using CSS. * * @param array $post * @param array $settings * @param array $resized_images * * @return string * * @since 2.0/5.0 * @since 2.1.1/5.2.1 added support for resized images */ public static function get_sbi_photo_style_element( $post, $settings, $resized_images = array() ) { if ( ! $settings['disable_js_image_loading'] ) { return ''; } else { $full_res_image = self::get_optimum_media_url( $post, $settings, $resized_images ); /* * By setting the height to "0" the bottom padding can be used * as a percent to square the images. Since it needs to be a percent * this guesses what the percent would be based on static padding. */ $padding_bottom = '100%'; if ( $settings['imagepaddingunit'] === '%' ) { $padding_bottom = 100 - ( $settings['imagepadding'] * 2 ) . '%'; } else { $padding_percent = $settings['imagepadding'] > 0 ? 100 - ( $settings['cols'] / 2 * $settings['imagepadding'] / 5 ) : 100; $padding_bottom = $padding_percent . '%'; } return ' style="background-image: url("' . esc_url( $full_res_image ) . '"); background-size: cover; background-position: center center; background-repeat: no-repeat; opacity: 1;height: 0;padding-bottom: ' . esc_attr( $padding_bottom ) . ';"'; } } /** * Creates a style attribute that contains all of the styles for * the main feed div. * * @param $settings * * @return string * * @since 6.0 */ public static function get_feed_style( $settings ) { $styles = ''; if ( ! empty( $settings['imagepadding'] ) || ! empty( $settings['background'] ) || ! empty( $settings['width'] ) || ! empty( $settings['height'] ) ) { $styles = ' style="'; if ( ! empty( $settings['imagepadding'] ) ) { $styles .= 'padding-bottom: ' . ( (int) $settings['imagepadding'] * 2 ) . esc_attr( $settings['imagepaddingunit'] ) . ';'; } if ( ! empty( $settings['background'] ) ) { $styles .= 'background-color: rgb(' . esc_attr( sbi_hextorgb( $settings['background'] ) ) . ');'; } if ( ! empty( $settings['width'] ) ) { $width_unit = ! empty( $settings['widthunit'] ) && $settings['widthunit'] === '%' ? '%' : 'px'; $styles .= 'width: ' . (int) $settings['width'] . $width_unit . ';'; } if ( ! empty( $settings['height'] ) ) { $height_unit = ! empty( $settings['heightunit'] ) && $settings['heightunit'] === '%' ? '%' : 'px'; $styles .= 'height: ' . (int) $settings['height'] . $height_unit . ';'; } $styles .= '"'; } return $styles; } /** * Layout for mobile feeds altered with the class added here based on settings. * * @param $settings * * @return string * * @since 5.0 */ public static function get_mobilecols_class( $settings ) { $customizer = sbi_doing_customizer( $settings ); if ( $customizer ) { return ' $parent.getMobileColsClass() '; } else { $disable_mobile = $settings['disablemobile']; ( $disable_mobile == 'on' || $disable_mobile == 'true' || $disable_mobile == true ) ? $disable_mobile = true : $disable_mobile = false; if ( $settings['disablemobile'] === 'false' ) { $disable_mobile = ''; } if ( $disable_mobile !== ' sbi_disable_mobile' && $settings['colsmobile'] !== 'same' ) { $colsmobile = (int) ( $settings['colsmobile'] ) > 0 ? (int) $settings['colsmobile'] : 'auto'; return ' sbi_mob_col_' . $colsmobile; } else { $colsmobile = (int) ( $settings['cols'] ) > 0 ? (int) $settings['cols'] : 4; return ' sbi_disable_mobile sbi_mob_col_' . $colsmobile; } } } /** * Layout for mobile feeds altered with the class added here based on settings. * * @param $settings * * @return string * * @since 6.0 */ public static function get_tabletcols_class( $settings ) { $customizer = sbi_doing_customizer( $settings ); if ( $customizer ) { return ' $parent.getTabletColsClass() '; } else { $colstablet = (int) ( $settings['colstablet'] ) > 0 ? (int) $settings['colstablet'] : 3; return ' sbi_tab_col_' . $colstablet; } } /** * Creates a style attribute for the sbi_images div * * @param $settings * * @return string * * @since 6.0 */ public static function get_sbi_images_style( $settings ) { if ( ! empty( $settings['imagepadding'] ) ) { if ( ! is_admin() && Util::sbi_legacy_css_enabled() ) { return ' style="padding: ' . (int) $settings['imagepadding'] . esc_attr( $settings['imagepaddingunit'] ) . ';"'; } else { return ' style="gap: ' . (int) $settings['imagepadding'] * 2 . esc_attr( $settings['imagepaddingunit'] ) . ';"'; } } return ''; } /** * Creates a style attribute for the header. Can be used in * several places based on the header style * * @param $settings * * @return string * * @since 6.0 */ public static function get_header_text_color_styles( $settings ) { if ( ! empty( $settings['headercolor'] ) ) { return ' style="color: rgb(' . esc_attr( sbi_hextorgb( $settings['headercolor'] ) ) . ');"'; } return ''; } /** * Header icon and text size is styled using the class added here. * * @param $settings * * @return string * * @since 2.0.1/5.0 */ public static function get_header_size_class( $settings ) { $header_size_class = in_array( strtolower( $settings['headersize'] ), array( 'medium', 'large' ) ) ? ' sbi_' . strtolower( $settings['headersize'] ) : ''; return $header_size_class; } /** * Creates a style attribute for the follow button. Can be in * the feed footer or in a boxed header. * * @param $settings * * @return string * * @since 6.0 */ public static function get_follow_styles( $settings ) { $styles = ''; if ( ! self::doing_custom_palettes_for_button( $settings ) && ( ! empty( $settings['followcolor'] ) || ! empty( $settings['followtextcolor'] ) ) ) { $styles = ' style="'; if ( ! empty( $settings['followcolor'] ) ) { $styles .= 'background: rgb(' . esc_attr( sbi_hextorgb( $settings['followcolor'] ) ) . ');'; } if ( ! empty( $settings['followtextcolor'] ) ) { $styles .= 'color: rgb(' . esc_attr( sbi_hextorgb( $settings['followtextcolor'] ) ) . ');'; } $styles .= '"'; } return $styles; } public static function doing_custom_palettes_for_button( $settings ) { if ( ( empty( $settings['colorpalette'] ) || $settings['colorpalette'] === 'inherit' ) ) { return false; } if ( $settings['colorpalette'] === 'custom' && ! empty( $settings['custombuttoncolor2'] ) ) { return true; } return false; } public static function get_follow_hover_color( $settings ) { if ( ! empty( $settings['followhovercolor'] ) && $settings['followhovercolor'] !== '#359dff' ) { return esc_attr($settings['followhovercolor']); } return ''; } /** * Creates a style attribute for styling the load more button. * * @param $settings * * @return string * * @since 6.0 */ public static function get_load_button_styles( $settings ) { $styles = ''; if ( ! empty( $settings['buttoncolor'] ) || ! empty( $settings['buttontextcolor'] ) ) { $styles = ' style="'; if ( ! empty( $settings['buttoncolor'] ) ) { $styles .= 'background: rgb(' . esc_attr( sbi_hextorgb( $settings['buttoncolor'] ) ) . ');'; } if ( ! empty( $settings['buttontextcolor'] ) ) { $styles .= 'color: rgb(' . esc_attr( sbi_hextorgb( $settings['buttontextcolor'] ) ) . ');'; } $styles .= '"'; } return $styles; } public static function get_load_button_hover_color( $settings ) { if ( ! empty( $settings['buttonhovercolor'] ) && $settings['buttonhovercolor'] !== '#000' ) { return esc_attr($settings['buttonhovercolor']); } return ''; } /** * Returns the html for an icon based on the kind requested * * @param string $type kind of icon needed (ex "video" is a play button * @param string $icon_type svg or font * * @return string * * @since 2.0/5.0 */ protected static function get_basic_icons( $type, $icon_type ) { if ( $type === 'carousel' ) { if ( $icon_type === 'svg' ) { return ''; } else { return ''; } } elseif ( $type === 'video' ) { if ( $icon_type === 'svg' ) { return ''; } else { return ''; } } elseif ( $type === 'instagram' ) { if ( $icon_type === 'svg' ) { return ''; } else { return ''; } } elseif ( $type === 'newlogo' ) { if ( $icon_type === 'svg' ) { return ''; } else { return ''; } } else { return ''; } } /** * Returns the list of CSS classes * * @param array $settings * * @return string * * @since 6.0 */ public static function get_feed_container_css_classes( $settings, $additional_classes ) { $customizer = sbi_doing_customizer( $settings ); $mobilecols_class = self::get_mobilecols_class( $settings ); $tabletcols_class = self::get_tabletcols_class( $settings ); $cols_setting = ( $customizer ) ? ' $parent.getColsPreviewScreen() ' : $settings['cols']; $additional_customizer_classes = ( $customizer ) ? ' $parent.getAdditionalCustomizerClasses() ' : ''; $palette_class = self::get_palette_class( $settings ); if ( $customizer ) { return ' :class="\'sbi \' + ' . esc_attr( $mobilecols_class ) . ' + \' \' + ' . esc_attr( $tabletcols_class ) . ' + \' sbi_col_\' + ' . esc_attr( $cols_setting ) . ' + \' \' + ' . esc_attr( $palette_class ) . ' + \' \' + ' . esc_attr( $additional_customizer_classes ) . '" '; } else { $classes = 'sbi' . esc_attr( $mobilecols_class ) . esc_attr( $tabletcols_class ) . ' sbi_col_' . esc_attr( $cols_setting ) . esc_attr( $additional_classes ) . esc_attr( $palette_class ); $classes = ' class="' . $classes . '"'; } return $classes; } /** * Palette class * * @param array $settings * @param string $context * * @return string * * @since 6.0 */ public static function get_palette_class( $settings, $context = '' ) { $customizer = sbi_doing_customizer( $settings ); if ( $customizer ) { return ' $parent.getPaletteClass() '; } else { $feed_id_addition = ! empty( $settings['colorpalette'] ) && $settings['colorpalette'] === 'custom' ? '_' . $settings['feed'] : ''; $palette_class = ! empty( $settings['colorpalette'] ) && $settings['colorpalette'] !== 'inherit' ? ' sbi' . $context . '_palette_' . $settings['colorpalette'] . $feed_id_addition : ''; return esc_attr($palette_class); } } /** * Palette type * * @param array $settings * * @return string * * @since 6.0 */ public static function palette_type( $settings ) { return ! empty( $settings['colorpalette'] ) ? esc_attr($settings['colorpalette']) : 'inherit'; } /** * Returns the list of CSS classes * * @param array $settings * * @return string * * @since 6.0 */ public static function get_feed_container_data_attributes( $settings ) { $customizer = sbi_doing_customizer( $settings ); $atts = ''; $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-res', 'vue_content' => '$parent.customizerFeedData.settings.imageres', 'php_content' => $settings['imageres'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-cols', 'vue_content' => '$parent.getColsPreviewScreen()', 'php_content' => $settings['cols'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-colsmobile', 'vue_content' => '$parent.customizerFeedData.settings.colsmobile', 'php_content' => $settings['colsmobile'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-colstablet', 'vue_content' => '$parent.customizerFeedData.settings.colstablet', 'php_content' => $settings['colstablet'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-num', 'vue_content' => '$parent.getModerationShoppableMode ? 10 : $parent.getPostNumberPreviewScreen()', 'php_content' => $settings['num'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-nummobile', 'vue_content' => '$parent.customizerFeedData.settings.nummobile', 'php_content' => $settings['nummobile'], ) ); $atts .= self::print_element_attribute( $customizer, array( 'attr' => 'data-item-padding', 'vue_content' => '$parent.customizerFeedData.settings.imagepadding', 'php_content' => $settings['imagepadding'], ) ); return $atts; } /** * Global header classes * * @param $settings * * @return string * * @since 5.0 */ public static function get_header_class( $settings, $avatar, $type = 'normal' ) { $customizer = sbi_doing_customizer( $settings ); if ( $customizer ) { return ' :class="$parent.getHeaderClass(\'' . $type . '\')" '; } else { $size_class = self::get_header_size_class( $settings ); $avatar_class = $avatar !== '' ? '' : ' sbi_no_avatar'; $palette_class = self::get_palette_class( $settings, '_header' ); $outside_class = $settings['headeroutside'] ? ' sbi_header_outside' : ''; return ' class="sb_instagram_header ' . esc_attr( $size_class ) . esc_attr( $avatar_class ) . esc_attr( $outside_class ) . esc_attr( $palette_class ) . '" '; } } /** * Header Link * * @param array $settings * @param string $username * * @return string * * @since 6.0 */ public static function get_header_link( $settings, $username ) { if ( sbi_doing_customizer( $settings ) ) { return ' :href="\'https://www.instagram.com/\' + $parent.getHeaderUserName() "'; } else { return ' href="' . esc_url( 'https://www.instagram.com/' . $username . '/' ) . '"'; } } /** * Header Link Title * * @param array $settings * @param string $username * * @return string * * @since 6.0 */ public static function get_header_link_title( $settings, $username ) { return self::print_element_attribute( sbi_doing_customizer( $settings ), array( 'attr' => 'title', 'vue_content' => '$parent.getHeaderUserNameTitle()', 'php_content' => '@' . esc_attr( $username ), ) ); } /** * Follow button attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_follow_attribute( $settings ) { return self::should_print_element_vue( sbi_doing_customizer( $settings ), '$parent.customizerFeedData.settings.followtext' ); } /** * Load more button attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_button_attribute( $settings ) { return self::should_print_element_vue( sbi_doing_customizer( $settings ), '$parent.customizerFeedData.settings.buttontext' ); } /** * Photo wrap prepended HTML * * @param array $post * @param array $settings * * @return string * * @since 6.0 */ public static function get_photo_wrap_content( $post, $settings ) { return ''; } /** * Header data attributes * * @param array $settings * @param array $header_data * * @return string * * @since 6.0 */ public static function get_header_data_attributes( $settings, $header_data ) { $atts = ''; if ( sbi_doing_customizer( $settings ) ) { if ( isset( $settings['generic_header'] ) ) { return self::vue_check_header_enabled( $settings, 'header-generic', $settings['vue_args'] ); } $header_vue = $settings['vue_args']; $header_vue['condition'] = $settings['vue_args']['condition']; $header_enabeld_vue = self::vue_check_header_enabled( $settings, 'header', $header_vue ); $atts .= ' ' . $header_enabeld_vue; } $avatar = SB_Instagram_Parse::get_avatar( $header_data, $settings ); $story_data_att = ''; if ( sbi_is_pro_version() ) { $story_data_att = SB_Instagram_Display_Elements_Pro::get_story_attributes( sbi_doing_customizer( $settings ), $settings, $header_data, $avatar ); } $atts .= ' ' . $story_data_att; return $atts; } /** * Header image data attributes * * @param array $settings * @param array $header_data * @param string $location * * @return string * * @since 6.0 */ public static function get_header_img_data_attributes( $settings, $header_data = array(), $location = 'default' ) { $instagram_cdn_avatar = SB_Instagram_Parse::get_avatar( $header_data, $settings, true ); $doing_customizer = sbi_doing_customizer( $settings ); $return = ''; if ( $settings['headerstyle'] === 'boxed' ) { if ( ! empty( $instagram_cdn_avatar ) ) { $return = self::print_element_attribute( $doing_customizer, array( 'attr' => 'data-avatar-url', 'vue_content' => '$parent.getHeaderAvatar()', 'php_content' => $instagram_cdn_avatar, ) ); } else { $return = self::create_condition_vue( $doing_customizer, '$parent.getHeaderAvatar() === false' ); } } else { if ( $location !== 'centered' ) { if ( ! empty( $instagram_cdn_avatar ) || $doing_customizer ) { $return = self::print_element_attribute( $doing_customizer, array( 'attr' => 'data-avatar-url', 'vue_content' => '$parent.getHeaderAvatar()', 'php_content' => $instagram_cdn_avatar, ) ) . self::create_condition_vue( $doing_customizer, ' $parent.customizerFeedData.settings.headerstyle !== \'centered\'' ); } } else { if ( ! empty( $instagram_cdn_avatar ) || $doing_customizer ) { $return = self::print_element_attribute( $doing_customizer, array( 'attr' => 'data-avatar-url', 'vue_content' => '$parent.getHeaderAvatar()', 'php_content' => $instagram_cdn_avatar, ) ) . self::create_condition_vue( $doing_customizer, ' $parent.customizerFeedData.settings.headerstyle === \'centered\'' ); } } } if ( empty( $return ) ) { return $return; } return ' ' . $return; } /** * Header text classes * * @param array $header_data * @param array $settings * * @return string * * @since 6.0 */ public static function get_header_text_class( $header_data, $settings ) { $bio = SB_Instagram_Parse::get_bio( $header_data, $settings ); $should_show_bio = $settings['showbio'] && $bio !== ''; $bio_class = ! $should_show_bio ? ' sbi_no_bio' : ''; return self::print_element_attribute( sbi_doing_customizer( $settings ), array( 'attr' => 'class', 'vue_content' => '$parent.getTextHeaderClass()', 'php_content' => 'sbi_header_text' . esc_attr( $bio_class ), ) ); } /** * Avatar header image element data attribute * * @param array $settings * @param array $header_data * * @return string * * @since 6.0 */ public static function get_avatar_element_data_attributes( $settings, $header_data = array() ) { $avatar = SB_Instagram_Parse::get_avatar( $header_data, $settings ); $name = SB_Instagram_Parse::get_name( $header_data ); return ' ' . self::print_element_attribute( sbi_doing_customizer( $settings ), array( 'attr' => 'src', 'vue_content' => '$parent.getHeaderAvatar()', 'php_content' => $avatar, ) ) . self::print_element_attribute( sbi_doing_customizer( $settings ), array( 'attr' => 'alt', 'vue_content' => '$parent.getHeaderName()', 'php_content' => $name, ) ) . self::create_condition_vue( sbi_doing_customizer( $settings ), '$parent.getHeaderAvatar() !== false' ); } /** * Hover Avatar Attributes * * @param array $settings * * @return string * * @since 6.0 */ public static function get_avatar_hover_data_attributes( $settings ) { return ' ' . self::create_condition_vue( sbi_doing_customizer( $settings ), '$parent.getHeaderAvatar() !== false' ); } /** * HEader Avatar SVG Icon Attributes * * @param array $settings * * @return string * * @since 6.0 */ public static function get_avatar_svg_data_attributes( $settings ) { return ' ' . self::create_condition_vue( sbi_doing_customizer( $settings ), '$parent.getHeaderAvatar() === false' ); } /** * Post count in header data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_post_count_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::should_show_element_vue( $settings, 'showfollowers' ) . self::should_print_element_vue( sbi_doing_customizer( $settings ), ' $parent.svgIcons[\'headerPhoto\']+ \' \' + $parent.getHeaderMediaCount()' ); } /** * Follower count in header data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_follower_count_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::should_show_element_vue( $settings, 'showfollowers' ) . self::should_print_element_vue( sbi_doing_customizer( $settings ), ' $parent.svgIcons[\'headerUser\'] + \' \' + $parent.getHeaderFollowersCount()' ); } /** * Heading in header data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_header_heading_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::should_print_element_vue( sbi_doing_customizer( $settings ), '$parent.customizerFeedData.headerData.username' ); } /** * Bio in header data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_bio_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::create_condition_vue( sbi_doing_customizer( $settings ), '$parent.checkNotEmpty( $parent.getHeaderBio() ) ? $parent.valueIsEnabled( $parent.customizerFeedData.settings[\'showbio\'] ) : false' ); } /** * Hover display vue condiition * * @param array $setting_name * * @return string * * @since 6.0 */ public static function hoverdisplay_vue_condition( $setting_name ) { return self::create_condition_vue( true, '$parent.customizerFeedData.settings.hoverdisplay.includes(\'' . $setting_name . '\')' ); } /** * Display vue condition * * @param array $setting_name * * @return string * * @since 6.0 */ public static function display_vue_condition( $setting_name ) { return self::create_condition_vue( true, '$parent.valueIsEnabled( $parent.customizerFeedData.settings.' . $setting_name . ' )' ); } /** * Hover username data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_hoverusername_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::hoverdisplay_vue_condition( 'username' ); } /** * Caption data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_caption_data_attributes( $settings, $caption, $post_id ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } $caption = self::sanitize_caption( $caption ); return ' ' . self::display_vue_condition( 'showcaption' ) . ' v-html="$parent.getPostCaption(\'' . htmlspecialchars( $caption ) . '\', ' . $post_id . ')"'; } /** * Hover caption data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_hovercaption_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::hoverdisplay_vue_condition( 'caption' ); } /** * Some characters in captions are breaking the customizer. * * @param $caption * * @return mixed */ public static function sanitize_caption( $caption ) { $caption = str_replace( array( "'" ), '`', $caption ); $caption = str_replace( '&', '&', $caption ); $caption = str_replace( '<', '<', $caption ); $caption = str_replace( '>', '>', $caption ); $caption = str_replace( '"', '"', $caption ); $caption = str_replace( ''', '/', $caption ); $caption = str_replace( '\', '\/', $caption ); $caption = str_replace( array( "\r", "\n" ), '
', $caption ); $caption = str_replace( '<br />', '
', nl2br( $caption ) ); return $caption; } /** * Hover instagram data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_hoverinstagram_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::hoverdisplay_vue_condition( 'instagram' ); } /** * Hover date data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_hoverdate_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::hoverdisplay_vue_condition( 'date' ); } /** * Hover likes data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_hoverlikes_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::hoverdisplay_vue_condition( 'likes' ); } /** * Hover meta data attribute * * @param array $settings * * @return string * * @since 6.0 */ public static function get_meta_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showlikes' ); } /** * Load button data attributes * * @param array $settings * * @return string * * @since 6.0 */ public static function get_button_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showbutton' ); } /** * Follow data attributes * * @param array $settings * * @return string * * @since 6.0 */ public static function get_follow_data_attributes( $settings ) { if ( ! sbi_doing_customizer( $settings ) ) { return ''; } return ' ' . self::display_vue_condition( 'showfollow' ); } /** * Show header section * * @param string $section * @param array $settings * * @return bool * * @since 6.0 */ public static function should_show_header_section( $section, $settings ) { if ( sbi_doing_customizer( $settings ) ) { return true; } if ( $section === 'image-top' ) { return $settings['headerstyle'] === 'centered'; } elseif ( $section === 'image-bottom' ) { return $settings['headerstyle'] !== 'centered'; } return true; } /** * Returns & Checks if Header is Enabled * Shows & Hides * * @param array $settings * @param string $header_type * * @return string * * @since 6.0 */ public static function vue_check_header_enabled( $settings, $header_type, $vue_args ) { $customizer = sbi_doing_customizer( $settings ); $vue_args = !empty($vue_args['condition']) ? $vue_args['condition'] : false; if ( $customizer && $vue_args ) { $result_vue = '$parent.valueIsEnabled($parent.customizerFeedData.settings.showheader) ' . esc_attr($vue_args); return ' v-if=" ' . esc_attr($result_vue) . '" '; } return ''; } /** * Should Show Element * * @param array $settings * @param string $setting_name * @param bool $custom_condition * * @return string */ public static function should_show_element_vue( $settings, $setting_name, $custom_condition = false ) { $customizer = sbi_doing_customizer( $settings ); $setting_name = !empty($setting_name) ? $setting_name : false; $custom_condition = $custom_condition != false ? $custom_condition : ''; if ( $customizer ) { return ' v-if="$parent.valueIsEnabled($parent.customizerFeedData.settings.' . esc_attr($setting_name) . ')' . ( esc_attr($custom_condition) ) . '" '; } return ''; } /** * Should Print HTML * * @param bool $customizer * @param string $content * * @return string * * @since 6.0 */ public static function should_print_element_vue( $customizer, $content ) { if ( $customizer ) { return ' v-html="' . esc_html($content) . '" '; } return ''; } /** * Should Print HTML * * @param bool $customizer * @param string $condition * * @return string * * @since 6.0 */ public static function create_condition_vue( $customizer, $condition ) { if ( $customizer ) { return ' v-if="' . esc_attr($condition) . '" '; } return ''; } /** * Print Element HTML Attribute * * @param bool $customizer * @param array $args * * @return string * * @since 6.0 */ public static function print_element_attribute( $customizer, $args ) { $print_element = ' ' . sanitize_key($args['attr']) . '="' . esc_attr($args['php_content']) . '"'; if ( $customizer ) { $print_element = ' :' . sanitize_key($args['attr']) . '="' . esc_attr($args['vue_content']) . '"'; } return $print_element; } /** * Get Footer Attributes * * @param bool $customizer * @param array $args * * @return string * * @since 6.0 */ public static function get_footer_attributes( $settings ) { $customizer = sbi_doing_customizer( $settings ); if ( $customizer ) { return self::create_condition_vue( $customizer, '!$parent.getModerationShoppableMode' ); } return ''; } } instagram-feed/inc/class-sb-instagram-feed-locator.php000064400000043710151435171370016764 0ustar00 $transient_name, * 'atts' => $atts, * 'location' => array( * 'post_id' => get_the_ID(), * 'html' => 'unknown' * ) * ); */ $this->feed_details = $feed_details; $this->matching_entries = array(); $this->expiration_time = time() - 2 * WEEK_IN_SECONDS; } /** * Returns records that match the post ID and feed ID * of the feed being located * * @return array * * @since 5.11 */ public function retrieve_matching_entries() { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $results = $wpdb->get_results( $wpdb->prepare( " SELECT * FROM $feed_locator_table_name WHERE post_id = %d AND feed_id = %s", $this->feed_details['location']['post_id'], $this->feed_details['feed_id'] ), ARRAY_A ); return $results; } /** * Add feed being located to the database * * @since 5.11 */ public function insert_entry() { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $two_minutes_ago = date( 'Y-m-d H:i:s', time() - 120 ); $results_recent_entries = $wpdb->get_results( $wpdb->prepare(" SELECT COUNT(*) AS num_entries FROM $feed_locator_table_name WHERE last_update > %s; ", $two_minutes_ago ), ARRAY_A ); // Only allow 5 new entries within 5 minutes if ( isset( $results_recent_entries[0]['num_entries'] ) && (int)$results_recent_entries[0]['num_entries'] > 5 ) { return; } // Only allow 1000 total entries $results_total_entries = $wpdb->get_results( " SELECT COUNT(*) AS num_entries FROM $feed_locator_table_name", ARRAY_A ); if ( isset( $results_total_entries[0]['num_entries'] ) && (int)$results_total_entries[0]['num_entries'] > 1000 ) { $this->delete_oldest_entry(); } $affected = $wpdb->query( $wpdb->prepare( "INSERT INTO $feed_locator_table_name (feed_id, post_id, html_location, shortcode_atts, last_update) VALUES ( %s, %d, %s, %s, %s);", $this->feed_details['feed_id'], $this->feed_details['location']['post_id'], $this->feed_details['location']['html'], sbi_json_encode( $this->feed_details['atts'] ), date( 'Y-m-d H:i:s' ) ) ); } /** * Update a record based on the existing "id" column. Location can change * from "unknown" to one of footer, content, header, or sidebar. * * @param $id * @param $location * * @since 5.11 */ public function update_entry( $id, $location ) { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $query = $wpdb->query( $wpdb->prepare( " UPDATE $feed_locator_table_name SET last_update = %s, html_location = %s WHERE id = %d;", date( 'Y-m-d H:i:s' ), $location, $id ) ); } /** * Processes a feed being located based on whether or not the record * exists as well as whether or not an unknown location needs to be * updated. * * @since 5.11 */ public function add_or_update_entry() { if ( empty( $this->feed_details['feed_id'] ) ) { return; } if ( empty( $this->feed_details['location']['post_id'] ) ) { return; } $this->matching_entries = $this->retrieve_matching_entries(); if ( empty( $this->matching_entries ) ) { $this->insert_entry(); } else { $matching_indices = array(); $matched_location = false; $non_unknown_match = false; $unknown_match = false; foreach ( $this->matching_entries as $index => $matching_entry ) { $details_atts = is_array( $this->feed_details['atts'] ) ? $this->feed_details['atts'] : array(); $matching_atts = json_decode( $matching_entry['shortcode_atts'], true ); if ( ! is_array( $matching_atts ) ) { $matching_atts = array(); } $atts_diff = array_diff( $matching_atts, $details_atts ); // determines if the shortcode settings match the shortcode settings of an existing feed if ( empty( $atts_diff ) ) { $matching_indices[] = $matching_entry['id']; if ( $matching_entry['html_location'] === $this->feed_details['location']['html'] ) { $matched_location = $index; $this->update_entry( $matching_entry['id'], $matching_entry['html_location'] ); } if ( $matching_entry['html_location'] !== 'unknown' ) { $non_unknown_match = $index; } else { $unknown_match = $index; } } } if ( false === $matched_location ) { // if there is no matched location, there is only one feed on the page, and the feed being checked has an unknown location, update the known location if ( count( $matching_indices ) === 1 && $this->feed_details['location']['html'] === 'unknown' && false !== $non_unknown_match ) { $this->update_entry( $this->matching_entries[ $non_unknown_match ]['id'], $this->matching_entries[ $non_unknown_match ]['html_location'] ); } else { if ( $this->feed_details['location']['html'] !== 'unknown' && false !== $unknown_match ) { $this->update_entry( $this->matching_entries[ $unknown_match ]['id'], $this->feed_details['location']['html'] ); } else { $this->insert_entry(); } } } } } public function delete_oldest_entry() { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $affected = $wpdb->query( "DELETE FROM $feed_locator_table_name ORDER BY last_update ASC LIMIT 1;" ); } /** * Queries the locator table for feeds by feed_id * * @param $args * * @return array|object|null * * @since 4.0 */ public static function instagram_feed_locator_query( $args ) { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $group_by = isset( $args['group_by'] ) ? self::sanitize_group_by( $args['group_by'] ) : ''; $location_string = 'content'; if ( isset( $args['html_location'] ) ) { $locations = array_map( 'esc_sql', $args['html_location'] ); $location_string = implode( "', '", $locations ); } $page = 0; if ( isset( $args['page'] ) ) { $page = (int) $args['page'] - 1; unset( $args['page'] ); } $offset = max( 0, $page * InstagramFeed\Builder\SBI_Db::RESULTS_PER_PAGE ); if ( isset( $args['shortcode_atts'] ) ) { $results = $wpdb->get_results( $wpdb->prepare( " SELECT * FROM $feed_locator_table_name WHERE shortcode_atts = %s AND html_location IN ( '$location_string' ) $group_by LIMIT %d OFFSET %d;", $args['shortcode_atts'], InstagramFeed\Builder\SBI_Db::RESULTS_PER_PAGE, $offset ), ARRAY_A ); } else { $results = $wpdb->get_results( $wpdb->prepare( " SELECT * FROM $feed_locator_table_name WHERE feed_id = %s AND html_location IN ( '$location_string' ) $group_by LIMIT %d OFFSET %d;", $args['feed_id'], InstagramFeed\Builder\SBI_Db::RESULTS_PER_PAGE, $offset ), ARRAY_A ); } return $results; } /** * Queries all legacy feeds that have been located * * @param $args * * @return array|object|null * * @since 4.0 */ public static function legacy_instagram_feed_locator_query( $args ) { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $group_by = isset( $args['group_by'] ) ? self::sanitize_group_by( $args['group_by'] ) : ''; $location_string = 'content'; if ( isset( $args['html_location'] ) ) { $locations = array_map( 'esc_sql', $args['html_location'] ); $location_string = implode( "', '", $locations ); } $page = 0; if ( isset( $args['page'] ) ) { $page = (int) $args['page'] - 1; unset( $args['page'] ); } $offset = max( 0, $page * InstagramFeed\Builder\SBI_Db::RESULTS_PER_PAGE ); $limit = InstagramFeed\Builder\SBI_Db::RESULTS_PER_PAGE; $results = $wpdb->get_results( " SELECT * FROM $feed_locator_table_name WHERE feed_id NOT LIKE '*%' AND html_location IN ( '$location_string' ) $group_by LIMIT $limit OFFSET $offset;", ARRAY_A ); return $results; } public static function update_legacy_to_builder( $args ) { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $data = array( 'feed_id' => '*' . $args['new_feed_id'], 'shortcode_atts' => '{"feed":"' . $args['new_feed_id'] . '"}', ); $affected = $wpdb->query( $wpdb->prepare( "UPDATE $feed_locator_table_name SET feed_id = %s, shortcode_atts = %s", $data['feed_id'], $data['shortcode_atts'] ) ); return $affected; } /** * Simple count of rows based on args * * @param array $args * * @return int * * @since 4.0 */ public static function count( $args ) { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; if ( isset( $args['shortcode_atts'] ) ) { $results = $wpdb->get_results( $wpdb->prepare( " SELECT COUNT(*) AS num_entries FROM $feed_locator_table_name WHERE shortcode_atts = %s ", $args['shortcode_atts'] ), ARRAY_A ); } else { $results = $wpdb->get_results( $wpdb->prepare( " SELECT COUNT(*) AS num_entries FROM $feed_locator_table_name WHERE feed_id = %s ", $args['feed_id'] ), ARRAY_A ); } if ( isset( $results[0]['num_entries'] ) ) { return (int) $results[0]['num_entries']; } return 0; } /** * Old feeds are only detected once a day to keep load on the server low. * * @return bool * * @since 5.11 */ public static function should_clear_old_locations() { $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $last_old_feed_check = isset( $sbi_statuses_option['feed_locator']['last_check'] ) ? $sbi_statuses_option['feed_locator']['last_check'] : 0; return $last_old_feed_check < time() - DAY_IN_SECONDS; } /** * Old feeds are removed if they haven't been updated in two weeks. * * @since 5.11 */ public static function delete_old_locations() { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $two_weeks_ago = date( 'Y-m-d H:i:s', time() - 2 * WEEK_IN_SECONDS ); $affected = $wpdb->query( $wpdb->prepare( "DELETE FROM $feed_locator_table_name WHERE last_update < %s;", $two_weeks_ago ) ); $sbi_statuses_option = get_option( 'sbi_statuses', array() ); $sbi_statuses_option['feed_locator']['last_check'] = time(); if ( ! isset( $sbi_statuses_option['feed_locator']['initialized'] ) ) { $sbi_statuses_option['feed_locator']['initialized'] = time(); } update_option( 'sbi_statuses', $sbi_statuses_option, true ); } /** * Feeds are located with the page load randomly (5% or 1/30 loads) * to decrease load on the server. * * If the locating just started (within 5 minutes) it is run more often * to collect feed locations quickly. * * @return bool * * @since 5.11 */ public static function should_do_locating() { if ( is_admin() || isset( $_GET['page'] ) && strpos( $_GET['page'], 'sbi' ) !== false ) { return false; } $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( isset( $sbi_statuses_option['feed_locator']['initialized'] ) && $sbi_statuses_option['feed_locator']['initialized'] < ( time() - 300 ) ) { $should_do_locating = rand( 1, 10 ) === 10; } else { $should_do_locating = rand( 1, 30 ) === 30; } $should_do_locating = apply_filters( 'sbi_should_do_locating', $should_do_locating ); return $should_do_locating; } /** * Simliar to the should_do_locating method but will add an additional * database query to see if there is a feed with an unknown location that * matches the details of the feed in question. * * @param $feed_id * @param $post_id * * @return bool * * @since 5.11 */ public static function should_do_ajax_locating( $feed_id, $post_id ) { if ( is_admin() || isset( $_GET['page'] ) && strpos( $_GET['page'], 'sbi' ) !== false ) { return false; } $sbi_statuses_option = get_option( 'sbi_statuses', array() ); if ( isset( $sbi_statuses_option['feed_locator']['initialized'] ) && $sbi_statuses_option['feed_locator']['initialized'] < ( time() - 300 ) ) { $should_do_locating = rand( 1, 10 ) === 10; } else { $should_do_locating = rand( 1, 30 ) === 30; } if ( $should_do_locating ) { $should_do_locating = self::entries_need_locating( $feed_id, $post_id ); } $should_do_locating = apply_filters( 'sbi_should_do_ajax_locating', $should_do_locating ); return $should_do_locating; } /** * Feeds are located with the page load randomly (1/30 loads) * to decrease load on the server. * * If the locating just started (within 5 minutes) it is run more often * to collect feed locations quickly. * * @param $feed_id * @param $post_id * * @return bool * * @since 5.11 */ public static function entries_need_locating( $feed_id, $post_id ) { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $one_day_ago = date( 'Y-m-d H:i:s', time() - DAY_IN_SECONDS ); $results = $wpdb->get_results( $wpdb->prepare( " SELECT id FROM $feed_locator_table_name WHERE html_location = 'unknown' AND last_update < %s AND feed_id = %s AND post_id = %d LIMIT 1;", $one_day_ago, $feed_id, $post_id ), ARRAY_A ); return isset( $results[0] ); } /** * A custom table stores locations * * @since 5.11 */ public static function create_table() { global $wpdb; global $sb_instagram_posts_manager; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; if ( $wpdb->get_var( "show tables like '$feed_locator_table_name'" ) !== $feed_locator_table_name ) { $sql = 'CREATE TABLE ' . $feed_locator_table_name . " ( id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, feed_id VARCHAR(50) DEFAULT '' NOT NULL, post_id BIGINT(20) UNSIGNED NOT NULL, html_location VARCHAR(50) DEFAULT 'unknown' NOT NULL, shortcode_atts LONGTEXT NOT NULL, last_update DATETIME );"; $wpdb->query( $sql ); } $error = $wpdb->last_error; $query = $wpdb->last_query; $had_error = false; if ( $wpdb->get_var( "show tables like '$feed_locator_table_name'" ) !== $feed_locator_table_name ) { $had_error = true; $sb_instagram_posts_manager->add_error( 'database_create', '' . __( 'There was an error when trying to create the database tables used to locate feeds.', 'instagram-feed' ) . '
' . $error . '
' . $query . '' ); } if ( ! $had_error ) { $wpdb->query( "ALTER TABLE $feed_locator_table_name ADD INDEX feed_id (feed_id)" ); $wpdb->query( "ALTER TABLE $feed_locator_table_name ADD INDEX post_id (post_id)" ); $sb_instagram_posts_manager->remove_error( 'database_create' ); } } /** * Counts the number of unique feeds in the database. * * @return int * * @since 5.11 */ public static function count_unique() { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $results_content = $wpdb->get_results( " SELECT COUNT(*) AS num_entries FROM $feed_locator_table_name WHERE html_location = 'content' ", ARRAY_A ); $results_other = $wpdb->get_results( " SELECT COUNT(*) AS num_entries FROM $feed_locator_table_name WHERE html_location != 'content' AND html_location != 'unknown' GROUP BY feed_id ", ARRAY_A ); $total = 0; if ( isset( $results_content[0]['num_entries'] ) ) { $total += (int) $results_content[0]['num_entries']; } if ( isset( $results_other[0]['num_entries'] ) ) { $total += (int) $results_other[0]['num_entries']; } return $total; } /** * Creates a summary of the located feeds in an array * * @return array * * @since 5.11 */ public static function summary() { global $wpdb; $feed_locator_table_name = $wpdb->prefix . SBI_INSTAGRAM_FEED_LOCATOR; $locations = array( array( 'label' => __( 'Content', 'instagram-feed' ), 'html_locations' => array( 'content', 'unknown' ), ), array( 'label' => __( 'Header', 'instagram-feed' ), 'html_locations' => array( 'header' ), 'group_by' => 'feed_id', ), array( 'label' => __( 'Sidebar', 'instagram-feed' ), 'html_locations' => array( 'sidebar' ), 'group_by' => 'feed_id', ), array( 'label' => __( 'Footer', 'instagram-feed' ), 'html_locations' => array( 'footer' ), 'group_by' => 'feed_id', ), ); $one_result_found = false; foreach ( $locations as $key => $location ) { $in = implode( "', '", $location['html_locations'] ); $group_by = isset( $location['group_by'] ) ? self::sanitize_group_by( $location['group_by'] ) : ''; $results = $wpdb->get_results( " SELECT * FROM $feed_locator_table_name WHERE html_location IN ('$in') $group_by ORDER BY last_update ASC", ARRAY_A ); if ( isset( $results[0] ) ) { $one_result_found = true; } $locations[ $key ]['results'] = $results; } if ( ! $one_result_found ) { return array(); } return $locations; } public static function sanitize_group_by( $group_by ) { if ( in_array( $group_by, self::COLUMN_NAMES, true ) ) { return 'GROUP BY ' . $group_by; } return ''; } } instagram-feed/inc/class-sb-instagram-education.php000064400000011712151435171370016370 0ustar00hooks(); } /** * Hooks. * * @since 5.5 */ public function hooks() { $this->plugin_version = sbi_is_pro_version() ? 'pro' : 'free'; } /** * "Did You Know?" messages. * * @since 5.5 */ public function dyk_messages() { $free_messages = array( array( 'title' => esc_html__( 'Get the Most out of Hashtags', 'instagram-feed' ), 'content' => esc_html__( 'You can use hashtags on Instagram for so many things; targeted promotions, engaging with your audience, running contests, or just for categorizing posts. Learn more about how you can display Instagram hashtag feeds on your website using the Instagram Feed Pro plugin.', 'instagram-feed' ), 'more' => 'https://smashballoon.com/instagram-feed/features/?utm_campaign=instagram-free&utm_source=dyk-messages&utm_content=hashtag#hashtag', 'item' => 1, ), array( 'title' => esc_html__( 'Keep Visitors on Your Site', 'instagram-feed' ), 'content' => esc_html__( "You've done the hard work of getting a visitor onto your site, now keep them there by displaying your Instagram content inside a pop-up lightbox, rather than sending your visitors away to Instagram. Learn more about the Instagram Feed Pro lightbox feature.", 'instagram-feed' ), 'more' => 'https://smashballoon.com/instagram-feed/features/?utm_campaign=instagram-free&utm_source=dyk-messages&utm_content=popuplightbox#popuplightbox', 'item' => 2, ), array( 'title' => esc_html__( 'Highlight Your Posts and Create Carousels', 'instagram-feed' ), 'content' => esc_html__( "Feature specific Instagram posts in your feeds by using the Highlight layout to feature specific posts, either by using their ID or a hashtag in their caption. Also create rotating carousels of your photos and videos to best utilize the space on your site. These layouts and more are available in our Pro version.", 'instagram-feed' ), 'more' => 'https://smashballoon.com/instagram-feed/features/?utm_campaign=instagram-free&utm_source=dyk-messages&utm_content=highlight#highlight', 'item' => 3, ), array( 'title' => esc_html__( 'Moderate your Feed Content', 'instagram-feed' ), 'content' => esc_html__( "Control exactly which posts show up in your feed by using the Visual Moderation Mode feature to pick and choose what to display. Remove specific posts or create a whitelist of approved content using Instagram Feed Pro.", 'instagram-feed' ), 'more' => 'https://smashballoon.com/instagram-feed/features/?utm_campaign=instagram-free&utm_source=dyk-messages&utm_content=moderation#moderation', 'item' => 4, ), ); $pro_messages = array( array( 'title' => esc_html__( 'Automated YouTube Live Streaming', 'instagram-feed' ), 'content' => esc_html__( 'You can automatically feed live YouTube videos to your website using our Feeds For YouTube Pro plugin. It takes all the hassle out of publishing live videos to your site by automating the process.', 'instagram-feed' ), 'more' => 'https://smashballoon.com/youtube-feed/', 'item' => 1, ), array( 'title' => esc_html__( 'Display Facebook Pages and Groups', 'instagram-feed' ), 'content' => esc_html__( 'Have a Facebook Page or Group? Easily embed a feed of posts into your website, delivering fresh content automatically to your site from Facebook. Posts, Photos, Events, Videos, Albums, Reviews, and more!', 'instagram-feed' ), 'more' => 'https://smashballoon.com/custom-facebook-feed/', 'item' => 2, ), array( 'title' => esc_html__( 'Adding Social Proof with Twitter Feeds', 'instagram-feed' ), 'content' => esc_html__( 'Twitter testimonials are one of the best ways to add verifiable social proof to your website. They add credibility to your brand, product, or service by displaying reviews from real people to your site, helping to convert more visitors into customers. Our free Custom Twitter Feeds plugin makes displaying Tweets on your website a breeze.', 'instagram-feed' ), 'more' => 'https://wordpress.org/plugins/custom-twitter-feeds/', 'item' => 3, ), ); if ( $this->plugin_version === 'pro' ) { return $pro_messages; } return $free_messages; } /** * "Did You Know?" random message. * * @since 5.5 */ public function dyk_message_rnd() { $messages = $this->dyk_messages(); $index = array_rand( $messages ); return $messages[ $index ]; } /** * "Did You Know?" display message. * * @since 5.5 * */ public function dyk_display() { $dyk_message = $this->dyk_message_rnd(); if ( ! empty( $dyk_message['more'] ) ) { //utm_source=plugin-pro&utm_campaign= $dyk_message['more'] = add_query_arg( array( 'utm_source' => 'issueemail', 'utm_campaign' => 'instagram-'.$this->plugin_version, 'utm_medium' => $dyk_message['item'], ), $dyk_message['more'] ); } return $dyk_message; } } instagram-feed/inc/Platform_Data.php000064400000032644151435171370013451 0ustar00remove_error( 'platform_data_deleted' ); global $sbi_notices; $sbi_notices->remove_notice( 'platform_data_deleted' ); $sbi_statuses_option = get_option( self::SBI_STATUSES_OPTION_KEY, [] ); if ( empty( $sbi_statuses_option[ self::APP_PERMISSION_REVOKED_STATUS_KEY ] ) ) { return; } $sbi_revoke_platform_data = get_option( self::REVOKE_PLATFORM_DATA_OPTION_KEY, [] ); $revoked_account_username = isset( $sbi_revoke_platform_data['connected_account']['username'] ) ? $sbi_revoke_platform_data['connected_account']['username'] : ''; if ( empty( $revoked_account_username ) ) { return; } $api_response_username = json_decode( $response['body'] )->username; if ( $revoked_account_username !== $api_response_username ) { return; } // Cleanup the revoked platform status and revoke account data. $this->cleanup_revoked_account( $sbi_statuses_option ); $sb_instagram_posts_manager->reset_api_errors(); } /** * Handle the app permission error. * * @return void */ public function handle_app_permission_error() { global $sb_instagram_posts_manager; $sbi_statuses_option = get_option( self::SBI_STATUSES_OPTION_KEY, [] ); if ( empty( $sbi_statuses_option[ self::APP_PERMISSION_REVOKED_STATUS_KEY ] ) ) { return; } $sbi_revoke_platform_data = get_option( self::REVOKE_PLATFORM_DATA_OPTION_KEY, [] ); $revoke_platform_data_timestamp = isset( $sbi_revoke_platform_data['revoke_platform_data_timestamp'] ) ? $sbi_revoke_platform_data['revoke_platform_data_timestamp'] : 0; $connected_account = isset( $sbi_revoke_platform_data['connected_account'] ) ? $sbi_revoke_platform_data['connected_account'] : []; if ( ! $revoke_platform_data_timestamp ) { return; } $current_timestamp = current_time( 'timestamp', true ); // Check if current timestamp is less than revoke platform data timestamp, if so, return. if ( $current_timestamp < $revoke_platform_data_timestamp ) { return; } // Revoke platform data. $this->delete_platform_data( $connected_account ); $this->send_platform_data_delete_notification_email(); // Cleanup the revoked platform status and revoke account data. $this->cleanup_revoked_account( $sbi_statuses_option ); $sb_instagram_posts_manager->reset_api_errors(); // Adding a notice to the admin page to inform the admin that platform data has been deleted. $sb_instagram_posts_manager->add_error( 'platform_data_deleted', __( 'An account admin has deauthorized the Smash Balloon app used to power the Instagram Feed plugin. The page was not reconnected within the 7 day limit and all Instagram data was automatically deleted on your website due to Facebook data privacy rules.', 'instagram-feed' ) ); } /** * Handle the app permission status. * * @param array $connected_account The connected account data. * * @return void */ public function handle_app_permission_status( $connected_account ) { $sbi_statuses_option = get_option( self::SBI_STATUSES_OPTION_KEY, [] ); if ( isset( $sbi_statuses_option['app_permission_revoked'] ) && true === $sbi_statuses_option['app_permission_revoked'] ) { return; } $this->update_app_permission_revoked_status( $sbi_statuses_option, true ); // Calculate the grace period for revoking platform data. $current_timestamp = current_time( 'timestamp', true ); $revoke_platform_data_timestamp = strtotime( '+7 days', $current_timestamp ); update_option( self::REVOKE_PLATFORM_DATA_OPTION_KEY, [ 'revoke_platform_data_timestamp' => $revoke_platform_data_timestamp, 'connected_account' => $connected_account, ] ); $this->send_revoke_notification_email(); } /** * Delete any data associated with the Instagram API and the * connected account being deleted. * * @param $to_delete_connected_account * * @return void */ protected function delete_platform_data( $to_delete_connected_account ) { $are_other_business_accounts = false; $all_connected_accounts = SB_Instagram_Connected_Account::get_all_connected_accounts(); $to_update = []; foreach ( $all_connected_accounts as $connected_account ) { if ( (int) $connected_account['user_id'] !== (int) $to_delete_connected_account['user_id'] ) { $to_update[ $connected_account['user_id'] ] = $connected_account; if ( isset( $connected_account['type'] ) && $connected_account['type'] === 'business' ) { $are_other_business_accounts = true; } } } SB_Instagram_Connected_Account::update_connected_accounts( $to_update ); SBI_Db::delete_source_by_account_id( $to_delete_connected_account['user_id'] ); $manager = new SB_Instagram_Data_Manager(); $manager->delete_caches(); $manager->delete_comments_data(); if ( empty( $to_update ) || ! $are_other_business_accounts ) { $manager->delete_hashtag_data(); } else { $manager->delete_non_hashtag_sbi_instagram_posts( $to_delete_connected_account['username'] ); } } /** * Update the app permission revoked status. * * @param array $sbi_statuses_option The option value. * @param bool $is_revoked The revoke status. * * @return void */ protected function update_app_permission_revoked_status( $sbi_statuses_option, $is_revoked ) { if ( $is_revoked ) { $sbi_statuses_option[ self::APP_PERMISSION_REVOKED_STATUS_KEY ] = true; } else { unset( $sbi_statuses_option[ self::APP_PERMISSION_REVOKED_STATUS_KEY ] ); } update_option( self::SBI_STATUSES_OPTION_KEY, $sbi_statuses_option ); } /** * Handles events before the deletion of old data. * * @param array $statuses * * @return void */ public function handle_event_before_delete_old_data( $statuses ) { global $sb_instagram_posts_manager; $sbi_statuses_option = get_option( self::SBI_STATUSES_OPTION_KEY, [] ); if ( ! empty( $sbi_statuses_option[ self::UNUSED_FEED_WARNING_EMAIL_SENT_STATUS_KEY ] ) ) { return; } if ( $statuses['last_used'] < sbi_get_current_time() - ( 14 * DAY_IN_SECONDS ) ) { $sb_instagram_posts_manager->add_error( 'unused_feed', __( 'Your Instagram feed has been not viewed in the last 14 days. Due to Instagram data privacy rules, all data for this feed will be deleted in 7 days time. To avoid automated data deletion, simply view the Instagram feed on your website within the next 7 days.', 'instagram-feed' ) ); $this->send_unused_feed_usage_notification_email(); // Setting the flag to true so that the warning email is not sent again. $sbi_statuses_option[ self::UNUSED_FEED_WARNING_EMAIL_SENT_STATUS_KEY ] = true; update_option( self::SBI_STATUSES_OPTION_KEY, $sbi_statuses_option ); } } /** * Handles the reset of unused feed data for deletion. * * @return void */ public function handle_unused_feed_usage() { //Security Checks check_ajax_referer( 'sbi_nonce', 'sbi_nonce' ); if ( ! sbi_current_user_can( 'manage_instagram_feed_options' ) ) { wp_send_json_error(); } global $sb_instagram_posts_manager; $sb_instagram_posts_manager->remove_error('unused_feed'); global $sbi_notices; $sbi_notices->remove_notice( 'unused_feed' ); $manager = new \SB_Instagram_Data_Manager(); $manager->update_last_used(); $sbi_statuses_option = get_option( self::SBI_STATUSES_OPTION_KEY, [] ); // Unset the flag to allow the warning email to be sent again. unset( $sbi_statuses_option[ self::UNUSED_FEED_WARNING_EMAIL_SENT_STATUS_KEY ] ); update_option( self::SBI_STATUSES_OPTION_KEY, $sbi_statuses_option ); wp_send_json_success( [ 'message' => '
' . esc_html__( 'Success! Your Instagram Feeds will continue to work normally.', 'instagram-feed' ) . '
' ] ); } /** * Cleanup revoked account data. * * @param array $sbi_statuses_option * * @return void */ public function cleanup_revoked_account( $sbi_statuses_option ) { $this->update_app_permission_revoked_status( $sbi_statuses_option, false ); delete_option( self::REVOKE_PLATFORM_DATA_OPTION_KEY ); } /** * Sends a notification email to the admin when the app permission is revoked. * * @return void */ protected function send_revoke_notification_email() { $link = admin_url( 'admin.php?page=sbi-settings'); $title = __( 'There has been a problem with your Instagram Feed.', 'instagram-feed' ); $bold = __( 'Action Required Within 7 Days', 'instagram-feed' ); $site_url = sprintf( '%s', esc_url( home_url() ), __( 'your website', 'instagram-feed' ) ); $details = '

' . sprintf( __( 'An account admin has deauthorized the Smash Balloon app used to power the Instagram Feed plugin on %s. If the Instagram source is not reconnected within 7 days then all Instagram data will be automatically deleted on your website due to Facebook data privacy rules.', 'instagram-feed' ), $site_url ) . '

'; $settings_page = sprintf( '
%s', esc_url( $link ), esc_html__( 'Settings Page', 'instagram-feed' ) ); $details .= '

' . sprintf( __( 'To prevent the automated deletion of data for the account, please reconnect your source for the plugin %s within 7 days.', 'instagram-feed' ), $settings_page ). '

'; $details .= '

' . __( 'More Information', 'instagram-feed' ) . '

'; Email_Notification::send( $title, $bold, $details ); } /** * Sends a notification email to the admin when the feed has not been used for a while. * * @return void */ protected function send_unused_feed_usage_notification_email() { $title = __( 'There has been a problem with your Instagram Feed.', 'instagram-feed' ); $bold = __( 'Action Required Within 7 Days', 'instagram-feed' ); $site_url = sprintf( '%s', esc_url( home_url() ), __( 'your website', 'instagram-feed' ) ); $details = '

' . sprintf( __( 'An Instagram feed on %s has been not viewed in the last 14 days. Due to Instagram data privacy rules, all data for this feed will be deleted in 7 days time.', 'instagram-feed' ), $site_url ) . '

'; $details .= '

' . __( 'To avoid automated data deletion, simply view the Instagram feed on your website within the next 7 days.', 'instagram-feed' ) . '

'; Email_Notification::send( $title, $bold, $details ); } /** * Sends a notification email to the admin when the platform data has been deleted. * * @return void */ protected function send_platform_data_delete_notification_email() { $link = admin_url( 'admin.php?page=sbi-settings'); $title = __( 'All Instagram Data has Been Removed', 'instagram-feed' ); $bold = __( 'An account admin has deauthorized the Smash Balloon app used to power the Instagram Feed plugin.', 'instagram-feed' ); $site_url = sprintf( '
%s', esc_url( home_url() ), __( 'your website', 'instagram-feed' ) ); $details = '

' . sprintf( __( 'The page was not reconnected within the 7 day limit and all Instagram data was automatically deleted on %s due to Facebook data privacy rules.', 'instagram-feed' ), $site_url ) . '

'; $settings_page = sprintf( '
%s', esc_url( $link ), esc_html__( 'Settings Page', 'instagram-feed' ) ); $details .= '

' . sprintf( __( 'To fix your feeds, reconnect all accounts that were in use on the Settings page.', 'instagram-feed' ), $settings_page ) . '

'; Email_Notification::send( $title, $bold, $details ); } } instagram-feed/README.txt000064400000105723151435171370011147 0ustar00=== Smash Balloon Social Photo Feed – Easy Social Feeds Plugin === Contributors: smashballoon, craig-at-smash-balloon, am, smub Tags: Instagram, Instagram feed, Instagram photos, Instagram widget, Instagram gallery Requires at least: 4.1 Tested up to: 6.6 Stable tag: 6.5.1 Requires PHP: 5.6 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Formerly "Instagram Feed". Display clean, customizable, and responsive Instagram feeds from multiple accounts. Supports Instagram oEmbeds. == Description == Display Instagram posts from your Instagram accounts, either in the same single feed or in multiple different ones. The perfect Instagram gallery plugin for your WordPress site. https://www.youtube.com/watch?v=517rApIqzbw = Features = * **New:** Now automatically powers your **Instagram oEmbeds** * Super **simple to set up** * Display photos from **multiple Instagram accounts** in the same feed or in separate feeds * Completely **responsive** and mobile ready - layout looks great on any screen size and in any container width * **Completely customizable** - Customize the width, height, number of photos, number of columns, image size, background color, image spacing and more! * Display **multiple Instagram feeds** on the same page or on different pages throughout your site * **GDPR Compliance** - automatically integrates with many of the popular GDPR cookie consent plugins and includes a 1-click easy GDPR setting. * Use the drag-and-drop customizer to completely customize each of your Instagram feeds * Display thumbnail, medium or **full-size photos** from your Instagram feed * **Infinitely load more** of your Instagram photos with the 'Load More' button * Includes a **Follow on Instagram button** at the bottom of your feed * Display a **beautiful header** at the top of your feed * Display your Instagram photos chronologically or in random order * Add your own Custom CSS and JavaScript for even deeper customizations * Handy block for easily adding your feed to posts and pages using the block editor * Integrations with Elementor and Divi page builders. Instagram for Elementor is super simple = Benefits = * **Increase Social Engagement** - Increase engagement between you and your Instagram followers. Increase your number of followers by displaying your Instagram content directly on your site. * **Save Time** - Don't have time to update your photos on your site? Save time and increase efficiency by only posting your photos to Instagram and automatically displaying them on your website * **Display Your Content Your Way** - Customize your Instagram feeds to look exactly the way you want, so that they blend seamlessly into your site or pop out at your visitors! * **Keep Your Site Looking Fresh** - Automatically push your new Instagram content straight to your site to keep it looking fresh and keeping your audience engaged. * **Super simple to set up** - Once installed, you can be displaying your Instagram photos within 30 seconds! No confusing steps or Instagram Developer account needed. * **Powers all Instagram oEmbeds on your site** - With WordPress removing support for Instagram oEmbeds, the plugin will now power all Instagram embeds on your site, old and new, to allow them to continue working. = Pro Version = In order to maintain the free version of the plugin on an ongoing basis, and to provide quick and effective support for free, we offer a Pro version of the plugin. The Pro version allows you to: * Display Hashtag feeds * View photos and videos in a popup lightbox directly on your site * View post comments for user feeds * Display the number of like and comments for each post * Create carousels from your posts * Use "Masonry" or "Highlight" layouts for your feeds * Display captions for photos and videos * Filter posts based on hashtag/word * Advanced moderation system for hiding/showing certain posts * Block posts by specific users * Create "shoppable" Instagram feeds, and more. * Add custom links to each post like link in bio * Quick create templates for easy feed creation [Find out more about the Pro version](https://smashballoon.com/instagram-feed/?utm_campaign=instagram-free-readme&utm_source=proversion&utm_medium=profindout "Instagram Feed Pro") or [try out the Pro demo](https://smashballoon.com/instagram-feed/demo/?utm_campaign=instagram-free-readme&utm_source=proversion&utm_medium=readmedemo "Instagram Feed Pro Demo"). = Featured Reviews = "**Simple and concise** - Excellent plugin. Simple and non-bloated. I had a couple small issues with the plugin when I first started using it, but a quick comment on the support forums got a new version pushed out the next day with the fix. Awesome support!" - [Josh Jones](https://wordpress.org/support/topic/simple-and-concise-3 'Simple and concise Instagram plugin') "**Great plugin, greater support!** - I've definitely noticed an increase in followers on Instagram since I added this plugin to my sidebar. Thanks for the help in making some adjustments...looks and works great!" - [BNOTP](https://wordpress.org/support/topic/thanks-for-a-great-plugin-6 'Great plugin, greater Support!') = Feedback or Support = We're dedicated to providing the most customizable, robust and well supported Instagram feed plugin in the world, so if you have an issue or have any feedback on how to improve the plugin then please open a ticket in the [Support forum](http://wordpress.org/support/plugin/instagram-feed 'Instagram Feed Support Forum'). For a pop-up photo **lightbox**, to display posts by **hashtag**, show photo **captions**, **video** support + more, check out the [Pro version](http://smashballoon.com/instagram-feed/?utm_campaign=instagram-free-readme&utm_source=feedbacj&utm_medium=support 'Instagram Feed Pro'). == Installation == 1. Install the Instagram Feed plugin either via the WordPress plugin directory, or by uploading the files to your web server (in the `/wp-content/plugins/` directory). 2. Activate the Instagram Feed plugin through the 'Plugins' menu in WordPress. 3. Navigate to the 'Instagram Feed' settings page to connect your Instagram account. 4. Use the shortcode `[instagram-feed feed=1]` in your page, post or widget to display your Instagram photos. 5. You can display multiple Instagram feeds by using shortcode options, for example: `[instagram-feed num=6 cols=3]` For simple step-by-step directions on how to set up the Instagram Feed plugin please refer to our [setup guide](http://smashballoon.com/instagram-feed/free/?utm_campaign=instagram-free-readme&utm_source=installation&utm_medium=setup 'Instagram Feed setup guide'). = Display your Feed = **Single Feed** Copy and paste the following shortcode directly into the page, post or widget where you'd like the Instagram feed to show up: `[instagram-feed]` **Multiple Feeds** If you'd like to display multiple Instagram feeds then you can create multiple feeds and specify which feed you'd like to display using the feed ID like so: `[instagram-feed feed=2]` If you'd like to display feed from more than one account, connect multiple accounts and then create an additional feed. Embed it with the feed ID in the shortcode: `[instagram-feed feed=3]` You can display as many different Instagram feeds as you like, on either the same page or on different pages, by just using the shortcode options and the assigned feed ID below. For example: `[instagram-feed feed=1]` `[instagram-feed feed=2]` `[instagram-feed feed=3]` = Setting up the Free Instagram Feed WordPress Plugin = 1) Once you've installed the Instagram Feed plugin click on the Instagram Feed item in your WordPress menu 2) Follow the onboarding steps to connect an account and create your first feed. 3) Customize your feed with tons of settings and options to display it just how you would like. 4) Once you've customized your feed, copy the [instagram-feed feed=1] shortcode. 5) Paste it into any page, post or widget where you want the feed to appear. Alternatively, use our handy block to add it to a page. 6) You can use our handy Instagram Feed widget to display a feed in a sidebar or other widget area. == Frequently Asked Questions == = Can I display multiple Instagram feeds on my site or on the same page? = Yep. You can display multiple Instagram feeds by using our built-in feed creation tool, for example: `[instagram-feed feed=2]`. = Can I display photos from more than one Instagram account in one single feed? = Yep. You can connect multiple accounts and include them as sources when creating a feed. = Does the plugin work with Instagram oEmbeds? = Yes. In version 2.5, support was added to allow the plugin to power your Instagram oEmbeds as official support for these is no longer available in WordPress core. Just connect your account on the oEmbeds settings page inside the plugin and we'll do the rest. No developer app or account required. = Can I display a feed with in a widget or with a block? = Yes. Use the Instagram widget or Instagram block to display your feed in a sidebar or other widget area. = How do I connect my Instagram account? = We've made it super easy. Just follow the steps outlined when onboarding and you will have a connected account with simple clicks. = My feed isn't displaying. Why not!? = There are a few common reasons for this: * **Your Access Token may not be valid.** Try clicking on the blue Instagram login button on the plugin's Settings page again and copy and paste the Instagram token it gives you into the plugin's Access Token field. * **The plugin's JavaScript file isn't included in your page.** This is most likely because your WordPress theme is missing the WordPress [wp_footer](http://codex.wordpress.org/Function_Reference/wp_footer) function which is required for plugins to be able to add their JavaScript files to your page. You can fix this by opening your theme's **footer.php** file and adding the following directly before the closing tag between two php tags: `wp_footer();` * **Your website may contain a JavaScript error which is preventing JavaScript from running.** The plugin uses JavaScript to load the Instagram photos into your page and so needs JavaScript to be running in order to work. You would need to remove any existing JavaScript errors on your website for the plugin to be able to load in your feed. If you're still having an issue displaying your feed then please open a ticket in the [Support forum](http://wordpress.org/support/plugin/instagram-feed 'Instagram Feed Support Forum') with a link to the page where you're trying to display the Instagram feed and, if possible, a link to your Instagram account. = Are there any security issues with using an Access Token on my site? = Nope. The Access Token used in the plugin is a "read only" token, which means that it could never be used maliciously to manipulate your account. = Can I view the full-size photos or play Instagram videos directly on my website? = This is a feature of the [Pro version](http://smashballoon.com/instagram-feed/?utm_campaign=instagram-free-readme&utm_source=faqs&utm_medium=fullsize 'Instagram Feed Pro') of the plugin, which allows you to view the photos in a pop-up lightbox, support videos, display captions, display photos by hashtag + more! = How do I embed my feed directly into a WordPress page template? = You can embed your feed directly into a template file by using the WordPress [do_shortcode](http://codex.wordpress.org/Function_Reference/do_shortcode) function: ``. = My Feed Stopped Working – All I see is a Loading Symbol = If your Instagram photos aren't loading and all your see is a loading symbol then there are a few common reasons: 1) There's an issue with the Instagram Access Token that you are using You can obtain a new access token on the Instagram Feed Settings page by using the "connect" button to reconnect the account. Occasionally the connect button inside the plugin does not successfully update the access token. You can try [this link](https://smashballoon.com/instagram-feed/token/?utm_campaign=instagram-free-readme&utm_source=faqs&utm_medium=faqconnectionissue) as well. 2) The plugin's JavaScript file isn't being included in your page This is most likely because your WordPress theme is missing the WordPress wp_footer function which is required for plugins to be able to add their JavaScript files to your page. You can fix this by opening your theme's footer.php file and adding the following directly before the closing tag: 3) There's a JavaScript error on your site which is preventing the plugin's JavaScript file from running You can find out whether this is the case by right clicking on your page, selecting 'Inspect Element', and then clicking on the 'Console' tab, or by selecting the 'JavaScript Console' option from your browser's Developer Tools. If a JavaScript error is occurring on your site then you'll see it listed in red along with the JavaScript file which is causing it. 4) The feed you are trying to display has no Instagram posts If you are trying to display an Instagram feed that has no posts made to it, a loading symbol may be all that shows for the Instagram feed or nothing at all. Once you add an Instagram post the Instagram feed should display normally 5) The shortcode you are using is incorrect You may have an error in the Instagram Feed shortcode you are using or are missing a necessary argument. = What are the available options that I can use to customize my feed? = There are plenty of options to customize your feed! See the list below: * **General Options** * **width of feed** - The width of your feed. * **height of feed** - The height of your feed. * **background color** - The background color of the feed. Any hex color code. * * **Photo Options** * **sorting** - Sort the Instagram posts by Newest to Oldest (none) or Random (random) * **number of posts** - The number of posts to display initially. * * **desktop columns** - The number of columns in your feed when displayed on desktop devices * **tablet columns** - The number of columns in your feed when displayed on tablet devices * **mobile columns** - The number of columns in your feed when displayed on mobile or phone devices * * **image spacing** - The spacing around your photos * * **Header Options** * **show header** - Whether to show the feed Header. * **show bio** - Whether to show the account's bio in the feed Header. * **custom avatar** - URL of a custom Avatar image for the header (use whatever image you want for your account). * * **header color** - The color of the feed Header text. * * **'Load More' Button Options** * **show load more button** - Whether to show the 'Load More' button. * **button color** - The background color of the button. Any hex color code * **button text color** - The text color of the button. * **button text** - The text used for the button - Example: "Load More Photos" * * **'Follow on Instagram' Button Options** * **show the follow button ** - Whether to show the 'Follow on Instagram' button. * **follow color** - The background color of the 'Follow on Instagram' button. * **follow text color** - The text color of the 'Follow on Instagram' button. * **follow text** - The text used for the 'Follow on Instagram' button - Example: "Follow me" For more options, check out the [Pro version](http://smashballoon.com/instagram-feed/?utm_campaign=instagram-free-readme&utm_source=whatare&utm_medium=proshortcode 'Instagram Feed Pro'). For more FAQs related to the Instagram Feed plugin please visit the [FAQ section](https://smashballoon.com/instagram-feed/support/faq/?utm_campaign=instagram-free-readme&utm_source=whatare&utm_medium=faqs 'Instagram Feed plugin FAQs') on our website. == Screenshots == 1. Easily display feeds from any of your Instagram accounts 2. Your Instagram Feed is completely customizable and responsive 3. Combine multiple accounts into a single feed 5. Super quick and easy to get started. Just click the button to connect an Instagram account. 5. Customize layouts, styles, colors, and more 6. Just copy and paste the shortcode into any page, post or widget on your site. You can also use the block editor with our handy Instagram Feed block. == Other Notes == Add beautifully clean, customizable, and responsive Instagram feeds to your website. Super simple to set up and has tons of customization options to seamlessly match the look and feel of your site. = Why do I need this? = **Increase Social Engagement** Increase engagement between you and your Instagram followers. Increase your number of Instagram followers by displaying your Instagram content directly on your site. **Save Time** Don't have time to update your photos on your site? Save time and increase efficiency by only posting your photos to Instagram and automatically displaying them on your website. **Display Your Content Your Way** Customize your Instagram feeds to look exactly the way you want, so that they blend seamlessly into your site or pop out at your visitors! **Keep Your Site Looking Fresh** Automatically push your new Instagram content straight to your site to keep it looking fresh and keeping your audience engaged. **No Coding Required** Choose from tons of built-in Instagram Feed customization options to create a truly unique feed of your Instagram content. **Super simple to set up** Once installed, you can be displaying your Instagram photos within 30 seconds! No confusing steps or Instagram Developer account needed. **Mind-blowing Customer Support** We understand that sometimes you need help, have issues or just have questions. We love our users and strive to provide the best support experience in the business. We're experts in the Instagram API and can provide unparalleled service and expertise. If you need support then just let us know and we'll get back to you right away. = What can it do? = * Display Instagram photos from any Instagram account you own. * Completely responsive and mobile ready –your Instagram feed layout looks great on any screen size and in any container width * Display multiple Instagram feeds on the same page or on different pages throughout your site by using our powerful Instagram Feed shortcode options * Display posts from multiple Instagram User IDs * Use the built-in customization options to completely customize each of your Instagram feeds * Infinitely load more of your Instagram photos with the 'Load More' button * Plus more features added all the time! = Completely Customizable = * By default the Instagram feed will adopt the style of your website, but can be completely customized to look however you like! * Set the number of Instagram photos you want to display * Choose how many columns to display your Instagram photos in and the size of the Instagram photos * Choose to show or hide certain parts of the Instagram feed, such as the header, 'Load More', and 'Follow' buttons * Control the width, height and background color of your Instagram feed * Set the spacing/padding between the Instagram photos * Display Instagram photos in chronological or random order * Use your own custom text and colors for the 'Load More' and 'Follow' buttons * Enter your own custom CSS or JavaScript for even deeper customization * Use the shortcode options to style multiple Instagram feeds in completely different ways * Plus more customization options added all the time! = What's Next = If you like our WordPress Instagram plugin, then consider checking out our other projects: [OptinMonster](https://optinmonster.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – Get more email subscribers with the most popular conversion optimization plugin for WordPress. [WPForms](https://wpforms.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – #1 drag & drop online form builder for WordPress (trusted by 5 million sites). [AIOSEO](https://aioseo.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – The original WordPress SEO plugin to help you rank higher in search results (trusted by over 3 million sites). [MonsterInsights](https://monsterinsights.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – See the stats that matter and grow your business with confidence. Best Google Analytics plugin for WordPress. [SeedProd](https://seedprod.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – Create beautiful landing pages with our powerful drag & drop landing page builder. [WP Mail SMTP](https://wpmailsmtp.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – Improve email deliverability for your contact form with the most popular SMTP plugin for WordPress. [WPCode](https://wpcode.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) - must have WordPress code snippet management plugin to help you future-proof website customization (trusted by 1.5 million sites). [Duplicator](https://duplicator.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) - popular WordPress backup and migration plugin used by over 1 million websites. [WP Simple Pay](https://wpsimplepay.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – #1 Stripe payments plugin for WordPress. Start accepting one-time or recurring payments without a shopping cart. [PushEngage](https://pushengage.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – Connect with visitors after they leave your website with the leading web push notification plugin. [RafflePress](https://rafflepress.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – Best WordPress giveaway and contest plugin to grow traffic and social followers. [TrustPulse](https://trustpulse.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – Add real-time social proof notifications to boost your store conversions by up to 15%. [SearchWP](https://searchwp.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – The most advanced custom WordPress search plugin to improve WordPress search quality. [AffiliateWP](https://affiliatewp.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – #1 affiliate management plugin for WordPress. Add a referral program to your online store. [Easy Digital Downloads](https://easydigitaldownloads.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) – The best WordPress eCommerce plugin to sell digital products (eBooks, software, music, and more). [WPCharitable](https://wpcharitable.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) - Top-rated WordPress donation and fundraising plugin for WordPress. Visit [WPBeginner](https://wpbeginner.com/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) to learn from our [WordPress Tutorials](https://www.wpbeginner.com/category/wp-tutorials/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links) and about the [best WordPress plugins](https://www.wpbeginner.com/category/plugins/?utm_campaign=instagram-free&utm_source=readme&utm_medium=whats-next-links). == Changelog == = 6.5.1 = * Fix: Plugin hardening; = 6.5.0 = * New: Added webp image support for the local image optimization feature. This will improve the performance of your feed by serving images in the webp format when possible. * New: Added Blocks to easily use our other social media feeds. * Fix: Fixed an issue with images not loading in the post editor when using the Instagram Feed block. = 6.4.3 = * New: Added support for new version of CookieYes GDPR plugin. * New: Updated the URL for oEmbed auth flow. * Fix: Resolved conflict with TikTok Feeds and removed assets when callout is not shown. * Fix: Fixed issues with admin notices not dismissing properly. = 6.4.2 = * Fix: PHP fatal error caused by dependencies not being prefixed with the correct namespace. = 6.4.1 = * Fix: PHP fatal error that could occur in some circumstances when using the plugin. * Fix: JS error that occurred on the frontend. = 6.4 = * New: Added a checklist and callout feature to help users get started with all Smash Balloon products installed * Tweak: Added some improvements to our onboarding wizard to make it clear what certain steps do. * Tweak: Made improvements to our oEmbed connection process. * Fix: Fixed AJAX themes not loading jQuery dependency causing the feed to break in some circumstances. * Translations: Updated our translation .pot file. = 6.3.1 = * Fix: Fixed some admin notices not dismissing as expected. * Fix: Fixed an issue that would cause a fatal error when trying to delete the plugin. = 6.3 = * New: Updated CSS floats to flexbox and grid for better layout support and compatibility with themes. If you have made customizations in form of CSS, JS, or custom feed templates, make sure your feed looks as expected after updating. If you need time to update your customizations, use the "Legacy CSS" setting on the "Advanced" tab to revert the CSS file to version 6.2. * New: Improved how images are displayed to support lazy loading. * Fix: Added support for Borlabs Cookie v3.0. = 6.2.10 = * New: Added a menu item to easily install our new [TikTok Feeds](https://wordpress.org/plugins/feeds-for-tiktok/) plugin! = 6.2.9 = * New: Added Elementor widget and Divi module for Instagram Feed. * Tweak: Enhanced the secure custom login tool for the support team to troubleshoot certain API issues on your site. * Tweak: Improved and hardened our code base to improve reliability. * Fix: Updated settings info to display in the debug report. = 6.2.8 = * Fix: Menu items for our other plugins were not working when clicked. = 6.2.7 = * Tweak: Improved and hardened our code base to improve reliability. = 6.2.6 = * Fix: Resetting optimized images would also reset Instagram Feed settings. = 6.2.5 = * Fix: Fixed a problem with our code that would remove admin footer text from other sources. * Fix: Fixed an issue causing the minified CSS file to not actually be minified. = 6.2.4 = * Fix: Disabled translation for a string that would cause an error in some languages. = 6.2.3 = * Fix: Fixed translation bugs that would cause PHP errors on certain settings pages. * Fix: Fixed a PHP error that would occur when the database record for translations was corrupted. = 6.2.2 = * Translations: Fixed many translation issues and added translation files for German, French, Japanese, and many more. * Fix: Fixed an issue that would cause extra slashes to be added to text settings that contained single and double quotes. * Fix: Fixed an issue that would cause the customizer to not work the first time it was accessed. = 6.2.1 = * Fix: Fixed a deprecation warning that would occur in PHP 8.2+. * Fix: Fixed a PHP error that would occur when using PHP 8.0+, legacy feeds, and a shortcode with no arguments. = 6.2 = * New: Added an onboarding wizard for new users to easily get started with Instagram Feeds. = 6.1.6 = * Fix: Changed code related to account connection for increased reliability. * Fix: Only 20 feeds were available for export when using the tool on the settings page. * Fix: Fixed an issue causing a PHP error "creation of a dynamic property" when using PHP 8.2. = 6.1.5 = * Fix: Fixed personal accounts unable to retrieve new tweets and showing an error with the code 100. * Fix: Updated API calls for business accounts to work with upcoming changes from Instagram. = 6.1.4 = * Fix: Removed the option to add a feed to a widget if the current theme does not support widgets. * New: Added a menu item to easily install our new [Reviews Feed](https://wordpress.org/plugins/reviews-feed/) plugin! = 6.1.3 = * Fix: Fixed a PHP Warning: strtotime(): Epoch doesn’t fit in a PHP integer. * Fix: Header bio was not updating when the bio for the connected Instagram account was updated. * Fix: Fixed a few text items not being translatable. = 6.1.2 = * Fix: When enabling Facebook oEmbeds from the oEmbed page, an Instagram icon would appear when the Custom Facebook Feed plugin was being activated. * Fix: Fixed a CSS parsing error. = 6.1.1 = * Fix: When using the customizer to enable the setting for the header "show outside scrollable area" and adding a background color, the preview would not show the same result as the actual feed. * Fix: Disabling the JavaScript image loading on the "Advanced" settings tab would cause the customizer preview to look distorted. * Fix: When customizing a feed, the load more button would become active when switching the device preview. * Fix: Fixed a PHP warning that would occur when bulk deleting feeds. = 6.1 = * New: Added the ability to filter "Reels" posts in feeds. When customizing a feed and using the moderation settings you can now choose to show or hide Instagram "Reels" posts. * New: Add a header image and bio text for personal sources. Go to the settings page and click on the gear icon to add this to an existing source. * New: Added support for Instagram "Reels" oEmbeds. Use WordPress' embed block to create rich oEmbed links in blog posts and pages. * Tweak: Vue.js code is now loaded from a local file shipped with the plugin rather than an external CDN for use with the customizer in the admin area. = 6.0.8 = * Tweak: Added a workaround to retrieve missing images if none were returned by Instagram for a post. * Fix: Custom colors assigned to the Follow button would not apply when using a custom color palette. * Fix: Added additional plugin hardening. * Fix: A fatal error would occur with older versions of PHP and WordPress in some circumstances. = 6.0.7 = * Fix: Removed legacy "disable mobile" setting support as it was causing confusion for users updating from 2.x where changes to feed columns would not have an effect. * Fix: Removed the reference in the feed CSS file to an image file that didn't exist.in the feed CSS file. * Fix: All sources would be removed when the grace period to address app permission issues ended. Now only the single source will be removed. * Fix: The number of posts would be inaccurate in the feed preview when using the customizer for mobile devices. = 6.0.6 = * Tweak: Added a warning notice to allow a grace period before Instagram data is permanently deleted from your site after deauthorizing the Smash Balloon Instagram app. Due to Instagram requirements, any Instagram data on your site must be deleted within a reasonable time after the app has been deauthorized. The new warning notice provides a 7 day grace period to allow you time to reauthorize the app if you don't want the data to be deleted. * Tweak: Reconnecting an account now results in deleting the original connection in the database and adding a new one. This will prevent issues with some caching systems like Redis. * Fix: Only the first 20 sources were available when creating feeds and changing sources for a feed. * Fix: The link in some error messages were incorrect resulting in "access denied" error messages when clicking on them. = 6.0.5 = * Tweak: If WordPress cron is broken or behind schedule and causing background caching to not work, the plugin will update the feed when the page loads. * Fix: Jetpack's "Master Bar" feature was causing the sidebar in the customizer to be partially hidden. * Fix: Added back support for the "class" shortcode setting for all feeds. * Fix: Removed all Font Awesome icons and no longer include the CSS file from the Font Awesome CDN. = 6.0.4 = * Fix: Added back the ability to use up to 10 columns in feeds. * Fix: The reconnect link that would display when an account had an error would not redirect to connect.smashballoon.com. = 6.0.3 = * Tweak: Updated our logo throughout the plugin to match our new [website](https://smashballoon.com/). * Tweak: Changed how the hover color for follow and load more buttons is applied to prevent theme conflicts. * Fix: Fixed JavaScript file not being added to the page when using the plugin GDPR Cookie Consent by WebToffee. * Fix: Dismissing dashboard notifications would cause the "Add new feed" button to stop working until the page was refreshed. = 6.0.2 = * Fix: Fixed Instagram Feed JavaScript file missing from the page when using the "AJAX theme loading fix" setting causing blank images to display. * Fix: Added the ability to create the custom database tables if there was an error when first trying to create them. * Fix: Fixed the error message not displaying if there was an error when trying to connect a personal or basic account. = 6.0.1 = * Fix: Custom HTML templates were not applying to new feeds. * Fix: Some custom tables were not being created for specific versions of MySQL. * Fix: The shortcode setting "showfollow=false" was not working for legacy feeds. * Fix: The shortcode settings "showheader" and "showbio" were applying for non-legacy feeds causing confusion when trying to change these settings in the customizer. * Fix: The customizer would not resize images causing blank images to show when GDPR features were enabled. * Fix: Fixed PHP warning "Undefined array key tagged". = 6.0 = * Important: Minimum supported WordPress version has been raised from 3.5 to 4.1. * New: Our biggest update ever! We've completely redesigned the plugin settings from head to toe to make it easier to create, manage, and customize your Instagram feeds. * New: All your feeds are now displayed in one place on the "All Feeds" page. This shows a list of any existing (legacy) feeds and any new ones that you create. Note: If you updated from a version prior to v2.8 then you may need to view your feeds on your webpage so that the plugin can locate them and list them here. * New: Easily edit individual feed settings for new feeds instead of cumbersome shortcode options. * New: It's now much easier to create feeds. Just click "Add New", select your feed type, connect your account, and you're done! * New: Brand new feed customizer. We've completely redesigned feed customization from the ground up, reorganizing the settings to make them easier to find. * New: Live Feed Preview. You can now see changes you make to your feeds in real time, right in the settings page. Easily preview them on desktop, tablet, and mobile sizes. * New: Color Scheme option. It's now easier than ever to change colors across your feed without needing to adjust individual color settings. Just set a color scheme to effortlessly change colors across your entire feed. * New: You can now change the number of columns in your feed across desktop, tablet, and mobile. * New: Easily import and export feed settings to make it simple to move feeds across sites. == Privacy Policy == =**Data Collection**= Instagram Feed does not collect any personal data from your Meta accounts (Instagram, Facebook). All data retrieved from the Meta API is used solely for the purpose of displaying your feed on your WordPress site. =**External Connections**= This plugin connects to three external sites: * **Smashballoon.com**: Used for connecting and authenticating your sources. Occasionally, it sends dynamic notices to users. These notices can include information about major API changes, critical updates, and marketing messages. * **Instagram.com and Facebook.com**: Used to fetch posts so your visitors can view them directly on your site without needing to leave. =**Data Usage**= All data retrieved from the Meta API is used solely for displaying your Instagram feed on your WordPress site. No personal data is collected, stored, or shared beyond this purpose.instagram-feed/widget.php000064400000004563151435171370011445 0ustar00 __( 'Display your Instagram feed', 'instagram-feed' ), ) ); } public function widget( $args, $instance ) { $title = isset( $instance['title'] ) ? apply_filters( 'widget_title', $instance['title'] ) : ''; $content = isset( $instance['content'] ) ? strip_tags( $instance['content'] ) : '[instagram-feed]'; echo $args['before_widget']; if ( ! empty( $title ) ) { echo $args['before_title'] . esc_html( $title ) . $args['after_title']; } echo do_shortcode( $content ); echo $args['after_widget']; } public function form( $instance ) { $title = isset( $instance['title'] ) ? $instance['title'] : ''; $content = isset ( $instance['content'] ) ? strip_tags( $instance['content'] ) : '[instagram-feed]'; ?>

>](https://www.embedplus.com/embed-youtube-video-gallery-livestream-wordpress-gutenberg-block-editor.aspx) The plugin is also compatible with several popular page builders like [Elementor](https://www.youtube.com/watch?v=ldNfIGRTxDU), [Beaver Builder](https://www.youtube.com/watch?v=bPgz0jyt7TE), [SiteOrigin](https://www.youtube.com/watch?v=7QNYw_g-7WM), and [Visual Composer](https://www.youtube.com/watch?v=FWBQc9XhAqM). For these and pretty much any other page builder with a short code widget, you can also embed your video, gallery, live stream, or premiere by creating the short code in the plugin's wizard and then embedding the code in the page builder's short code widget or text widget. * Privacy and Consent - Improved privacy and GDPR compliance options like YouTube no cookie, YouTube API restrictions, and a customizable GDPR consent message. Note: if you have a full-blown consent plugin installed on your WordPress site, you may not need these particular features of this YouTube plugin. * YouTube gallery capability: channel and playlist – The ability to make playlist and channel embeds have a gallery layout. By default, the plugin can generate a grid-based [responsive playlist or channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Your visitors can browse through pages of video thumbnails and choose from videos that are pulled from an entire YouTube channel or playlist. * YouTube gallery auto continuous play - embed a playlist or channel gallery and allow it to play one video after the next without requiring viewers to click a thumbnail. * YouTube Premieres - The plugin provides you the same embedding methods for YouTube live streams as it does for premiere embeds. * Simultaneous playback control - you can enable/disable the ability for visitors to have separate videos running at the same time on the same page. This also works with YouTube livestream and gallery embeds that are embedded by our YouTube plugin. * Improved accessibility by using title attributes for screen reader support. Hopefully this plugin can help your site pass functional accessibility evaluations (FAE). * Improved AJAX WordPress theme support. * Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed). * Easy "Insert" button for both the Visual and Text mode of the editor (for YouTube gallery and live stream embedding as well). * Embed an entire YouTube channel as a (non-gallery, single embedded player) playlist. * Start video settings for playlist embeds. You can now choose to start a playlist with a specific video or have the plugin automatically start with the most recently added video. **Note: If you're embedding a YouTube gallery, the order will be defined by the order of the channel or playlist on YouTube.com**. * [Volume level initialization](https://www.embedplus.com/mute-volume-youtube-wordpress.aspx) - helpful when autoplay is checked. Applies to all videos embedded with this YouTube plugin. * iOS playback preferences. * Automatic localization/internationalization so you can set the player's interface language from English to another. * Instant HTTPS support. It can even convert past non-HTTPS videos to HTTPS. Did you know that Google uses HTTPS/SSL support as a ranking signal for SERP? * "At a Glance" direct access to your YouTube posts/pages. * Shortcode support for embedding multiple videos on one line. * General playlist embedding support. * YouTube WordPress plugin migration support (allows you convert other YouTube plugin embeds to ours). **Click the Download button to start exploring this YouTube WordPress plugin**, or take a look at some more introductory details below. This plugin helps you easily manage the growing complexity of YouTube embedding. It provides a spectrum of basic and advanced features of the YouTube embedded player and will have you posting videos in seconds after installing it. The settings page has plenty of default options that you can automatically apply to your embedded YouTube video, gallery, and/or live stream: * Modest branding - hide YouTube logo while playing (note that the YouTube watermark is shown instead) * Turn on/off all annotations by default * Automatically center all your videos * Automatically start playing your videos * Autohide controls until hovering * Loop your videos * Show/hide related videos at the end * Show/hide the video title and other info (YouTube/Google has deprecated this feature) * Use the light theme * Show/hide player controls * Turn on/off closed captions by default * Make your video, gallery, or live stream responsive so that it dynamically fits in all screen sizes (smart phone, PC and tablet) Customizations can be also made to each YouTube embed by adding more to the link as shown below. Adding these will override the above global defaults that you set: * width - Sets the width of your player. If omitted, the default width will be the width of your theme's content. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"` * height - Sets the height of your player. If omitted, this will be calculated for you automatically. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"` * autoplay - Set this to 1 to autoplay the video (or 0 to play the video once). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&autoplay=1"` * cc_load_policy - Set this to 1 to turn on closed captioning (or 0 to leave them off). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&cc_load_policy=1"` * iv_load_policy - Set this to 3 to turn off annotations (or 1 to show them). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&iv_load_policy=3"` * loop - Set this to 1 to loop the video (or 0 to not loop). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&loop=1"` * modestbranding - Set this to 1 to remove the YouTube logo while playing (or 0 to show the logo). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&modestbranding=1"` * rel - Set this to 0 to only show related videos from the same channel as the current video (or 1 to show videos from any channel). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&rel=0"` * showinfo - Set this to 0 to hide the video title and other info (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&showinfo=0"` (YouTube/Google has deprecated this feature) * fs - Set this to 0 to hide the fullscreen button (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&fs=0"` You can also start and end each individual video at particular times. Like the above, each option should begin with '&' * start - Sets the time (in seconds) to start the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&start=20"` * end - Sets the time (in seconds) to stop the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&end=100"` > **About the Pro version of the [YouTube WordPress Plugin](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme)** > > If you like this free version, you may even upgrade to a separate Pro plugin with features like: > > * Full visual embedding wizard > * [Alternate playlist and channel gallery styling >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx) (list layouts and slider layouts, popup/lightbox player, thumbnail hiding for text only paging, and more) > * Caching to avoid making frequent requests to YouTube.com and speed up your page loads > * Automatic video thumbnail images: each post or page that contains at least one video will have the thumbnail of its first video serve as its featured image > * [Lazy load YouTube embeds >>](https://www.embedplus.com/defer-parsing-of-javascript-improve-gtmetrix-speed-of-page-with-youtube-embed.aspx) with eye-catching [effects and animations](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx) > * [YouTube live chat >>](https://www.embedplus.com/embed-youtube-live-chat-box-with-live-stream-embed-wordpress.aspx) Add more interaction to your site by including the YouTube live chat box as part of each live stream embed. Note that live chat can also be an option for earning money from your audience by using the Super Chat and Super Stickers feature. > * Automatic tagging for video SEO > * Automatic Open Graph tagging for Facebook > * Deleted video alerts (i.e., did Google remove or take down videos I previously embedded?) > * Mobile compatibility checking (i.e., see if your embeds have restrictions that can block your site's mobile visitors from viewing) > * Alerts when visitors from different countries are blocked from viewing your embeds > * Priority support > > You also get access to our deleted video alerts to help avoid showing embedded videos that are later removed from YouTube.com. You even get an embedder-centric [analytics dashboard](https://www.embedplus.com/dashboard/easy-youtube-analytics-preview.aspx?platform=sim) that adds view tracking to each of your embeds so that you can answers questions like: > > * How much are your visitors actually watching the videos you post? > * How does the view activity on your site compare to other sites like it? > * What and when are your best and worst performing YouTube embeds? > * How much do the producers of the YouTube videos you embed rely on **your site**, versus other sites and YouTube.com, for views? > * Are you embedding videos that are blocked in other countries? > * Have your visitors tried to view a page and/or gallery on your site with deleted/unavailable videos? See more details after installing. Enjoy! [This WordPress plugin is maintained by Embed Plus for YouTube >>](https://www.embedplus.com/) == Installation == 1. Use the WordPress plugin installer to install the plugin. Alternatively, you can just extract the folder in our download package and upload it to your plugin directory. 1. Access the Plugins admin menu to activate the YouTube embed plugin. 1. Make your default settings after clicking the new YouTube menu item that shows up in your admin panel. This is where you can make global settings on the appearance of each video and gallery, as well as activate: defer JavaScript (defer CSS coming soon), GDPR mode, user restrictions, and more. 1. To embed videos in your post, use the wizard to embed the shortcode. Example: `[embedyt]https://www.youtube.com/watch?v=ABCDEFGHIJK&width=400&height=250[/embedyt]` If you don't know exactly which video you want to embed, use the free built-in search feature to find and insert one. 1. You can also [embed a playlist and channel gallery with this plugin >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx). Please install the plugin and visit the settings page for instructions. 1. To get video SEO, an analytics dashboard and many other premium features, [sign up for one of the options here >>](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme) **Manual codes (adding these will override the default settings in the admin):** * width - Sets the width of your player. If omitted, the default width will be the width of your theme's content. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"` * height - Sets the height of your player. If omitted, this will be calculated for you automatically. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350"` * autoplay - Set this to 1 to autoplay the video (or 0 to play the video once). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&autoplay=1"` * cc_load_policy - Set this to 1 to turn on closed captioning (or 0 to leave them off). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&cc_load_policy=1"` * iv_load_policy - Set this to 3 to turn off annotations (or 1 to show them). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&iv_load_policy=3"` * loop - Set this to 1 to loop the video (or 0 to not loop). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&loop=1"` * modestbranding - Set this to 1 to remove the YouTube logo while playing (or 0 to show the logo). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&modestbranding=1"` * rel - Set this to 0 to only show related videos from the same channel as the current video (or 1 to show videos from any channel). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&rel=0"` * showinfo - Set this to 0 to hide the video title and other info (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&showinfo=0"` (YouTube/Google has deprecated this feature) * fs - Set this to 0 to hide the fullscreen button (or 1 to show it). Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&fs=0"` You can also start and end each individual video at particular times. Like the above, each option should begin with '&' * start - Sets the time (in seconds) to start the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&start=20"` * end - Sets the time (in seconds) to stop the video. Example: `"https://www.youtube.com/watch?v=quwebVjAEJA&width=500&height=350&end=100"` **We recommend using the wizard, but if you're manually pasting a link, always follow these rules:** * Make sure the url is really on its own line by itself. Or, if you need multiple videos on the same line, make sure each URL is wrapped properly with the shortcode. Example: `[embedyt]https://www.youtube.com/watch?v=ABCDEFGHIJK&width=400&height=250[/embedyt]` * Make sure the url is not an active hyperlink (i.e., it should just be plain text). Otherwise, highlight the url and click the "unlink" button in your editor. * Make sure you did **not** format or align the url in any way. If your url still appears in your actual post instead of a video, highlight it and click the "remove formatting" button (formatting can be invisible sometimes). * Finally, there's a slight chance your custom theme is the issue, if you have one. To know for sure, we suggest temporarily switching to one of the default WordPress themes (e.g., "Twenty Thirteen") just to see if your video does appear. If it suddenly works, then your custom theme is the issue. You can switch back when done testing. == Frequently Asked Questions == = How do I add this YouTube plugin to WordPress? = Watch the following YouTube video which shows the process for our specific plugin: https://www.youtube.com/watch?v=9RveWWsrmuw = How do I embed a YouTube video with a facade? = See a demo on this [YouTube WordPress Test Page](https://youtube-wordpress-plugin.embedplus.com/youtube-embed-with-facade/) = How do I create a YouTube gallery in WordPress? = Here's a video that shows the steps with our YouTube plugin, along with the full set of gallery features: https://www.youtube.com/watch?v=iMX5TMobCw4 = Why use a YouTube plugin? = You can certainly embed YouTube videos in WordPress with oembed using the default embedder. However, a good YouTube WordPress plugin helps you easily embed and customize a video, playlist, channel, gallery, premiere, live stream, and facade. The premium version of this plugin has additional features like embed playback analytics. = How to get a YouTube API key? = To embed a gallery, livestream, schema tags, and more, you'll need to get a YouTube API key from Google. The Data API is free and comes with a decent quota, which can be extended. See here for [steps on creating a YouTube API key](https://www.embedplus.com/how-to-create-a-youtube-api-key.aspx). You can also learn plenty of other tips on the [EmbedPlus How To Page](https://www.embedplus.com/youtube-plugin-documentation.aspx). = How do I embed a YouTube livestream on WordPress? = Assuming you already have the EmbedPlus plugin active, you can embed a YouTube stream (premiere or livestream) in a very similar manner. * [Steps for a premiere](https://www.youtube.com/watch?v=PqroYZ1qVtY} * [Steps for a standard live stream](https://www.youtube.com/watch?v=PQ5mY2WaqcI&t=218s) == Screenshots == 1. Embed Plus for YouTube WordPress Plugin Screenshot 1: Paste a YouTube link on its own line and it will become a YouTube embed on your website. Or, use the shortcode method. 2. Embed Plus for YouTube WordPress Plugin Screenshot 2: How to get to YouTube's admin settings 3. Embed Plus for YouTube WordPress Plugin Screenshot 3: Visual YouTube Wizard and Search Tool 4. Embed Plus for YouTube WordPress Plugin Screenshot 4: Wizard Insert Search Result Screenshot 5. Embed Plus for YouTube WordPress Plugin Screenshot 5: Wizard Search Results Screenshot 6. Embed Plus for YouTube WordPress Plugin Screenshot 6: Gallery layout for a playlist or channel 7. Embed Plus for YouTube WordPress Plugin Screenshot 7: YouTube playlist galleries are also easily supported. Here's the Billboard Top 25 Songs for example. 8. Embed Plus for YouTube WordPress Plugin Screenshot 8: Localization/internationalization so you can set the player's interface language 9. Embed Plus for YouTube WordPress Plugin Screenshot 9: Optional YouTube channel subscription button above gallery thumbnails == Changelog == = Embed Plus for YouTube WordPress Plugin 14.2.1.2 = * This update addresses issues with the [channel-based automatic live stream detection/loading feature](https://www.embedplus.com/how-to-embed-a-youtube-livestream-in-wordpress.aspx) for the [Pro version](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx), and provides better compatibility with PHP 8.3+ for both Free and Pro versions. = Embed Plus for YouTube WordPress Plugin 14.2.1 = * This update fixes issues with the [channel-based automatic live stream detection/loading feature](https://www.embedplus.com/how-to-embed-a-youtube-livestream-in-wordpress.aspx) for the [Pro version](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx), and better responsive sizing HTML validation for both Free and Pro versions. = Embed Plus for YouTube WordPress Plugin 14.2 = * This update gives guidance to YouTube's recent API limitations on the [channel-based automatic live stream detection/loading feature](https://www.embedplus.com/how-to-embed-a-youtube-livestream-in-wordpress.aspx), with a solution available to [Pro users](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx) = Embed Plus for YouTube WordPress Plugin 14.1.6.3 = * Fixes a compatibility issue with Contact Forms 7 = Embed Plus for YouTube WordPress Plugin 14.1.6.2 = * Updated API key instructions = Embed Plus for YouTube WordPress Plugin 14.1.6.1 = * Fixes a YouTube API referer issue that occurs on some hosts = Embed Plus for YouTube WordPress Plugin 14.1.6 = * Tested for compatibility with WordPress 6.2+ = Embed Plus for YouTube WordPress Plugin 14.1.5 = * Ability to turn on/off maxresdefault image quality * Prevent iframes from affecting main frame browser history * Better calls to htmlspecialchars function * Wizard window size fix * Fix livestream fallback issue = Embed Plus for YouTube WordPress Plugin 14.1.4.1 = * Better compatibility with older browsers = Embed Plus for YouTube WordPress Plugin 14.1.4 = * Fixes issues from 14.1.3 * Higher quality facade images * Better compatibility with Jetpack and Short Pixel lazy loaded images * Fixes an issue with the Classic/TinyMCE editor = Embed Plus for YouTube WordPress Plugin 14.1.3 = * Better compatibility with Jetpack images * Avoids unused javascript when not using responsive sizing * Fixes obscure livestream fallback issue = Embed Plus for YouTube WordPress Plugin 14.1.2 = * Higher quality facade images * Avoid unused javascript with facade mode = Embed Plus for YouTube WordPress Plugin 14.1.1 = * Better compatability with WordPress 6.0 * Easier channel live stream wizard * Cleaner uninstalls * Add intro helper video = Embed Plus for YouTube WordPress Plugin 14.1 = * Adds the live stream fallback feature to channel-based live stream embeds = Embed Plus for YouTube WordPress Plugin 14.0.1.4 = * YouTube Wizard compatibility for WordPress 5.9+ = Embed Plus for YouTube WordPress Plugin 14.0.1.3 = * Patch for 14.0.1.2, JS fix for compatibility with jQuery 3.0+ = Embed Plus for YouTube WordPress Plugin 14.0.1.2 = * Fix facade playlist embed issue * Improve compatibility with AJAX themes = Embed Plus for YouTube WordPress Plugin 14.0.1.1 = * Patch for 14.0.1, higher resolution for facade images = Embed Plus for YouTube WordPress Plugin 14.0.1 = * Higher resolution for facade images * Fix CSS issue with GDPR embeds * YouTube shorts support = Embed Plus for YouTube WordPress Plugin 14.0 = * New facade mode for lighter and faster page loads (see Performance tab) * CSS fixes = Embed Plus for YouTube WordPress Plugin 13.4.3 = * Automatically turn on default dimensions for new installations, to skip oEmbed width/height lookups. Improves performance (recommended for all users, given most YouTube videos are 16:9 ratio) * Better compatibility with cookie compliance plugins that overtake the player with a placeholder = Embed Plus for YouTube WordPress Plugin 13.4.2 = * Compatible with latest jQuery updates * Compatible with WordPress 5.7+ = Embed Plus for YouTube WordPress Plugin 13.4.1.2 = * Allows you to specify the default language (when available) that the player will use to display closed captions = Embed Plus for YouTube WordPress Plugin 13.4.1.1 = * Prevent deprecated notice for wp_make_content_images_responsive filter = Embed Plus for YouTube WordPress Plugin 13.4.1 = * Better compatibility with WordPress 5.5 = Embed Plus for YouTube WordPress Plugin 13.4 = * Better compatibility with themes that use the Gutenberg block editor and responsive sizing * Fix notice on new installs * Add pagebuilder tips to Wizard tab of the documentation = Embed Plus for YouTube WordPress Plugin 13.3.1 = * Fix simultaneous playback control issue * Add support for premiere video embedding = Embed Plus for YouTube WordPress Plugin 13.2.3 = * Defer JavaScript for performance * Compatibility between loop and hide relative videos features * Simultaneous playback control = Embed Plus for YouTube WordPress Plugin 13.2.1 = * Provides more compatibility with other lazyload plugins and responsive themes = Embed Plus for YouTube WordPress Plugin 13.2.0.2 = * Fixes the "Hide related videos at the end of playback" feature (fixes issue with galleries) = Embed Plus for YouTube WordPress Plugin 13.2.0.1 = * Compatibility with legacy versions of PHP * Fix Responsive sizing issue with lazyloading plugins = Embed Plus for YouTube WordPress Plugin 13.2 = * Add ability to embed a live stream from a given channel * Reduction in live stream YouTube API quota usage * Compatibility with other plugins having tabbed sections (e.g. Yuzo) * Show YouTube API errors to admins only = Embed Plus for YouTube WordPress Plugin 13.1.2.5 = * Improve responsive sizing aspect ratio in widgets * Fix issue: some users receive 403 error when saving = Embed Plus for YouTube WordPress Plugin 13.1.2.4 = * Pagination and autonext allow the current video to play * Pagination on mobile fix * vi deprecation announcement = Embed Plus for YouTube WordPress Plugin 13.1.2.3 = * gallery thumbnail mobile tap/scroll fix = Embed Plus for YouTube WordPress Plugin 13.1.2.2 = * Wizard open/close fix * iOS gallery thumbnail click fix * class-oembed deprecation fix = Embed Plus for YouTube WordPress Plugin 13.1.2.1 = * Compatibility with legacy versions of PHP = Embed Plus for YouTube WordPress Plugin 13.1.2 = * More descriptive plugin name * Gallery column size and YouTube API message fixes = Embed Plus for YouTube WordPress Plugin 13.1.1 = * Fixes gallery autonext issue * Fixes deprecated controls parameter * Fixes "not live" content issue * Remove deprecated showinfo parameter = Embed Plus for YouTube WordPress Plugin 13.1 = * Brings back the ability to hide related/suggested videos at end of playback * Allows monetized sites to select multiple IAB categories * Option to run shortcode in admin (compatibility tab) * Lowers quota usage for live videos * Fixes "missing dependencies" block editor CSS reference * Fixes default dimensions issue = Embed Plus for YouTube WordPress Plugin 13.0.1 = * Clearer instructions * Feature deprecation (rel, showinfo) = Embed Plus for YouTube WordPress Plugin 13.0 = * Compatible with the new Gutenberg block editor, and stays backwards-compatible with the classic editor * Marked deprecated features * Improved wizard instructions = Embed Plus for YouTube WordPress Plugin 12.2 = * Improved ads.txt verification management * Fixed gallery box-sizing bug * Remove some deprecated YouTube parameters = Embed Plus for YouTube WordPress Plugin 12.1 = * Improved autoplay compatibility * Improved sign-up process for the new monetization feature = Embed Plus for YouTube WordPress Plugin 12.0.1 = * Force HTTPS for the YouTube API if the API is enabled * Makes the wizard's lightbox expand/contract responsively for different size screens = Embed Plus for YouTube WordPress Plugin 12.0 = * Improves the admin interface, and includes a new optional feature for users that want to monetize their sites through contextual video from vi.ai. = Embed Plus for YouTube WordPress Plugin 11.9.2 = * Makes the GDPR consent message display more compatible with other plugins (fixes content filter) = Embed Plus for YouTube WordPress Plugin 11.9.1 = Improved GDPR compliance, with new Privacy section containing: * GDPR consent mode * YouTube no cookie * YouTube API loading restrictions = Embed Plus for YouTube WordPress Plugin 11.8.7 = * Helps with GDPR compliance by allowing you to choose when YouTube.com's API is loaded = Embed Plus for YouTube WordPress Plugin 11.8.6.1 = * Rollback jQuery Updater plugin compatibility = Embed Plus for YouTube WordPress Plugin 11.8.6 = * Updated YouTube API key video tutorial * Improved channel wizard process * Better compatibility with jQuery Updater plugin = Embed Plus for YouTube WordPress Plugin 11.8.5 = * Adds the YouTube wizard button to the new built-in WordPress text widget * Fixes a Mac/iOS gallery scrolling issue = Embed Plus for YouTube WordPress Plugin 11.8.4 = * Fixes gallery AJAX issue * Adds ability to hide fullscreen button * Adds ability to hide private videos from galleries * Changes localized script dependency to jquery = Embed Plus for YouTube WordPress Plugin 11.8.3 = * Improved compatibility with PHP 7 * Improved compatibility with Divi theme * Improved AJAX compatibility * Improved accessibility * Fix gallery scrolling * Fix "not live" content output * Modernize and improve wizard interface (Pro) * Ability to hide thumbnail images from galleries (Pro) = Embed Plus for YouTube WordPress Plugin 11.8.2 = * Fix auto-next gallery issue * Make settings form more secure = Embed Plus for YouTube WordPress Plugin 11.8.1 = * Fix playlist gallery issue = Embed Plus for YouTube WordPress Plugin 11.8 = * Improved AJAX theme compatibility * Ability to choose which roles can use the editor wizard * Volume + autoplay fix = Embed Plus for YouTube WordPress Plugin 11.7.1 = * Remove gallery thumbnail translucency * Various bug fixes for galleries and the wizard = Embed Plus for YouTube WordPress Plugin 11.7 = * Separate Free and Pro codebases * Remove deprecated features * Clean up code = Embed Plus for YouTube WordPress Plugin 11.6 = * Fixed issue where Free version had some remnants of Pro analytics codebase supporting features here: https://www.embedplus.com/dashboard/easy-youtube-analytics-preview.aspx?platform=sim * New feature: live streaming from a channel * Optimized player and gallery loading that may improve Lighthouse reports * Improved compatibility with pagebuilders * Improved compatibility with later versions of jQuery * Removed frameborder for W3C validation * Gallery pagination enhancement * PHP 7 compatibility testing = Embed Plus for YouTube WordPress Plugin 11.5 = * thumbnail stacking for mobile galleries * better support for ajax themes * alt text to images = Embed Plus for YouTube WordPress Plugin 11.4 = * (Free) Improved subscribe button CSS and a new migration option. * (Pro) Improved accessibility for popup lightbox galleries. = Embed Plus for YouTube WordPress Plugin 11.3.1 = * (Free) improved debug mode messages * (Pro) autonext for popup lightbox galleries and hide clear cache button option = Embed Plus for YouTube WordPress Plugin 11.3 = * Improved responsive sizing for AJAX-based themes * Popup lightbox display option for Pro galleries = Embed Plus for YouTube WordPress Plugin 11.2 = * Adds improved wizard and gallery options for Free and Pro users. * Improved handling of PHP notices. * Clear cache shortcut added for Pro users. = Embed Plus for YouTube WordPress Plugin 11.1 = * Automatic continuous play for playlist and channel gallery embeds. * Ability to add a YouTube channel subscription link to all galleries. * Ability to hide Previous/Next buttons and page numbers. * Featured images can now be pulled from playlists (using the thumbnail of the first video). = Embed Plus for YouTube WordPress Plugin 11.0.1 = Improves HTTPS support for structured data tags, and HTTPS support in Firefox. = Embed Plus for YouTube WordPress Plugin 11.0 = Improves playlist and gallery embedding functionality. = Embed Plus for YouTube WordPress Plugin 10.9 = This version offers a host of updates: compatibility fixes, higher quality featured images, selective responsive sizing, wizard enhancements, and circular shaped thumbnails. = Embed Plus for YouTube WordPress Plugin 10.8 = This update improves compatibility and adds features to Free and Pro galleries. = Embed Plus for YouTube WordPress Plugin 10.7 = Adds legacy option. = Embed Plus for YouTube WordPress Plugin 10.6 = Enhanced debugging support for galleries. = Embed Plus for YouTube WordPress Plugin 10.5 = Enhanced gallery settings for scrolling, video titles, and thumbnail styling. = Embed Plus for YouTube WordPress Plugin 10.4 = Addresses limitations some users were getting when pasting a YouTube channel and/or playlist gallery. = Embed Plus for YouTube WordPress Plugin 10.3 = Adds the ability to make playlist and channel embeds have a gallery layout. By the default, the plugin can generate a grid-based [responsive playlist and channel gallery >>](https://www.embedplus.com/responsive-youtube-playlist-channel-gallery-for-wordpress.aspx) = Embed Plus for YouTube WordPress Plugin 10.2 = Adds start video settings for playlist embeds. You can now choose to start a playlist with a specific video or have the plugin automatically start with the most recently added video. = Embed Plus for YouTube WordPress Plugin 10.1 = Adds the ability to automatically migrate from another plugin's shortcode. Caching feature now allows lifetime settings. Improved compatibility with other plugins using the YouTube API. = Embed Plus for YouTube WordPress Plugin 10.0 = This update includes improved tips (Free and Pro) and adds caching to the Pro version for faster page loading. = Embed Plus for YouTube WordPress Plugin 9.8 = Upgraded code to use YouTube API v3. = Embed Plus for YouTube WordPress Plugin 9.7 = Adds improved accessibility for screen readers and video thumbnail as featured image support. = Embed Plus for YouTube WordPress Plugin 9.5 = Site origin information with each embed code as an extra security measure. In YouTube's/Google's own words, checking this option "protects against malicious third-party JavaScript being injected into your page and hijacking control of your YouTube player." We especially recommend checking it as it adds higher security than the built-in YouTube embedding method that comes with the current version of WordPress (i.e. oembed). = Embed Plus for YouTube WordPress Plugin 9.4 = Adds Autofit Widget option for Free and PRO users. Also adds slide from left animation to [PRO effects >>](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx) = Embed Plus for YouTube WordPress Plugin 9.3 = Improved volume functionality and interface updates (Free and PRO). [Special effects added to PRO version >>](https://www.embedplus.com/add-special-effects-to-youtube-embeds-in-wordpress.aspx) = Embed Plus for YouTube WordPress Plugin 9.2 = HTTPS/SSL detection is now fully automatic. The manual checkbox is no longer needed. = Embed Plus for YouTube WordPress Plugin 9.1 = With this version, the plugin can now automatically detect your site's default language and set the interface of the embedded YouTube player to match. = Embed Plus for YouTube WordPress Plugin 9.0 = Adds automatic localization/internationalization so you can set the player's interface language from English to another. = Embed Plus for YouTube WordPress Plugin 8.9 = Allows volume level initialization. = Embed Plus for YouTube WordPress Plugin 8.8 = * Better embedplus plugin conflict notifications. * Greater emphasis on HTTPS support due to Google's recent announcement about [HTTPS/SSL as an SEO/SERP signal](https://embedplus.com/convert-old-youtube-embeds-to-https-ssl.aspx). * Supports latest version of WordPress (3.9.2). = Embed Plus for YouTube WordPress Plugin 8.7 = (PRO) Extends the plugin's existing tagging capabilities by also adding Open Graph markup to enhance Facebook sharing/discovery of your pages. = Embed Plus for YouTube WordPress Plugin 8.6 = Expanded HTTPS/SSL support. = Embed Plus for YouTube WordPress Plugin 8.5 = This update features a new iOS related option for both Free and PRO users. PRO users additionally have the new mobile compatibility checker. = Embed Plus for YouTube WordPress Plugin 8.4 = This update features improved responsive theme support for both Free and PRO versions. It also adds refined schema tag support to the Pro SEO feature. = Embed Plus for YouTube WordPress Plugin 8.3 = Now compatible with WordPress 3.9. = Embed Plus for YouTube WordPress Plugin 8.2 = An at a glance regex improvement (all users). Dashboard now warns you of embeds that are blocked from your visitors in other countries (PRO). = Embed Plus for YouTube WordPress Plugin 8.1 = Fixes rare YouTube ID issue. = Embed Plus for YouTube WordPress Plugin 8.0 = Fixes rare ajax issue. = Embed Plus for YouTube WordPress Plugin 7.9 = YouTube searching and inserting now works in Text mode of the editor too. = Embed Plus for YouTube WordPress Plugin 7.8 = "At a Glance" direct access to YouTube posts/pages. = Embed Plus for YouTube WordPress Plugin 7.7 = Fixes black bar issue when no height/width is specified. = Embed Plus for YouTube WordPress Plugin 7.6 = Added notice about Google's HD problem. = Embed Plus for YouTube WordPress Plugin 7.5 = Ability to embed an entire channel as a playlist embed. = Embed Plus for YouTube WordPress Plugin 7.3 = Change the color of the progress bar from red to white. = Embed Plus for YouTube WordPress Plugin 7.2 = Added music video extras to inspire your posts (PRO). = Embed Plus for YouTube WordPress Plugin 7.1 = Added autohide controls feature = Embed Plus for YouTube WordPress Plugin 7.0 = Shortcode support for embedding multiple videos on one line = Embed Plus for YouTube WordPress Plugin 6.4 = Fixes for some users of WordPress 3.8 = Embed Plus for YouTube WordPress Plugin 6.3 = Removed possible e_notices. = Embed Plus for YouTube WordPress Plugin 6.2 = Given the increasing focus on privacy, the no-cookies options was added as a free option to all users. Priority support enhancements also made. = Embed Plus for YouTube WordPress Plugin 6.1 = Easier access to general settings and dashboard. = Embed Plus for YouTube WordPress Plugin 6.0 = This version opens up the ability to view Internet video discussions to all wizard users. **Also, due to numerous users being unable to find the wizard button, we moved it up next to the "Add Media" button.** Finally, we added Video SEO tags as a PRO option. = Embed Plus for YouTube WordPress Plugin 5.1 = Added ability to set default dimensions. Enhanced compatibility with SSL sites. = Embed Plus for YouTube WordPress Plugin 5.0 = Built-in YouTube video search, viewing, and insertion right from your editor tab (for all users). The ability to review the latest web discussions about a video you want to embed before embedding it (PRO users). Other minor optimizations. = Embed Plus for YouTube WordPress Plugin 4.8 = Works when pasting embed link in sidebar text widgets = Embed Plus for YouTube WordPress Plugin 4.7 = Improved separation of PRO and Free features in the UI = Embed Plus for YouTube WordPress Plugin 4.6 = Added optional responsive video layout to fit all screen sizes. (smart phone, PC and tablet) = Embed Plus for YouTube WordPress Plugin 4.5 = Added support for playlists. added support for wmode. = Embed Plus for YouTube WordPress Plugin 4.1 = Fixed spacing issue. Also added ability to fall back to old spacing format. = Embed Plus for YouTube WordPress Plugin 4.0 = New features for all users: lazy loading for the flash player by default and the ability to hide player controls for a cleaner look. = Embed Plus for YouTube WordPress Plugin 3.7 = Enhanced deleted video checker for PRO users = Embed Plus for YouTube WordPress Plugin 3.5 = Added ability to try to force HTML5 player to speed up page loading = Embed Plus for YouTube WordPress Plugin 3.3 = HTTPS: Added secure YouTube embedding = Embed Plus for YouTube WordPress Plugin 3.2 = Ensures video-specific height overrides defaults properly = Embed Plus for YouTube WordPress Plugin 3.1 = Fixed obscure height problem = Embed Plus for YouTube WordPress Plugin 3.0 = Added Visual YouTube Wizard for PRO users Added autologin to analytics for PRO users Added priority support form for PRO users = Embed Plus for YouTube WordPress Plugin 2.6 = Compatible with WP 3.6 = Embed Plus for YouTube WordPress Plugin 2.4 = Added auto HD support Support for shorthand (i.e. `"https://www.youtu.be"`) Fixed editor issue = Embed Plus for YouTube WordPress Plugin 2.3 = Start/end time shortcut bug fix = Embed Plus for YouTube WordPress Plugin 2.2 = Minor changes = Embed Plus for YouTube WordPress Plugin 2.1 = By request from several users, we've added easier access to the video analytics dashboard = Embed Plus for YouTube WordPress Plugin 2.0 = This upgrade specifically integrates a user-friendly YouTube Analytics Dashboard to this plugin so you can learn a lot more about the videos you post. Download it if you would like it to use your site's YouTube-related activity to help answer questions like: * How much are your visitors actually watching the videos you post? * How does the view activity on your site compare to other sites like it? * What and when are your best and worst performers? * How much do the producers of the YouTube videos you embed rely on **your site** for views? We think these are all interesting questions; however, note that there's no need to upgrade if you don't. = Embed Plus for YouTube WordPress Plugin 1.1 = Fixed minor bug. = Embed Plus for YouTube WordPress Plugin 1.0 = First release uploaded to the plugin repository. == Other Notes == This YouTube plugin can include premium features like lazy load (with animation), alternate playlist and channel gallery styles, automatic video thumbnail support, automatic schema tagging for video SEO, mobile compatibility checking, and deleted video alerts when you [upgrade to PRO](https://www.embedplus.com/dashboard/pro-easy-video-analytics.aspx?ref=readme). youtube-embed-plus/index.html000064400000000312151435171370012273 0ustar00 youtube-embed-plus/scripts/jquery.cookie.js000064400000006061151435171370015121 0ustar00/*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * * Copyright 2013 Klaus Hartl * Released under the MIT license */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD define(['jquery'], factory); } else if (typeof exports === 'object') { // CommonJS factory(require('jquery')); } else { // Browser globals factory(jQuery); } }(function ($) { var pluses = /\+/g; function encode(s) { return config.raw ? s : encodeURIComponent(s); } function decode(s) { return config.raw ? s : decodeURIComponent(s); } function stringifyCookieValue(value) { return encode(config.json ? JSON.stringify(value) : String(value)); } function parseCookieValue(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape... s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { // Replace server-side written pluses with spaces. // If we can't decode the cookie, ignore it, it's unusable. // If we can't parse the cookie, ignore it, it's unusable. s = decodeURIComponent(s.replace(pluses, ' ')); return config.json ? JSON.parse(s) : s; } catch(e) {} } function read(s, converter) { var value = config.raw ? s : parseCookieValue(s); return $.isFunction(converter) ? converter(value) : value; } var config = $.cookie = function (key, value, options) { // Write if (value !== undefined && !$.isFunction(value)) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setTime(+t + days * 864e+5); } return (document.cookie = [ encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // Read var result = key ? undefined : {}; // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling $.cookie(). var cookies = document.cookie ? document.cookie.split('; ') : []; for (var i = 0, l = cookies.length; i < l; i++) { var parts = cookies[i].split('='); var name = decode(parts.shift()); var cookie = parts.join('='); if (key && key === name) { // If second argument (value) is a function it's a converter... result = read(cookie, value); break; } // Prevent storing a cookie that we couldn't decode. if (!key && (cookie = read(cookie)) !== undefined) { result[name] = cookie; } } return result; }; config.defaults = {}; $.removeCookie = function (key, options) { if ($.cookie(key) === undefined) { return false; } // Must not alter options, thus extending a fresh object... $.cookie(key, '', $.extend({}, options, { expires: -1 })); return !$.cookie(key); }; })); youtube-embed-plus/scripts/embedplus_mce.css000064400000006207151435171370015314 0ustar00.wp_themeSkin span.mce_embedplus_youtubeprefs, span.mce_embedplus_youtubeprefs { background: transparent url("../images/btnprefsoff.png") no-repeat scroll center center !important; } .wp_themeSkin span.mce_embedplus_youtubeprefs:hover, span.mce_embedplus_youtubeprefs:hover { background-image: url("../images/btnprefson.png") !important; } .wp_themeSkin span.mce_embedplus_youtubeprefs_wiz, span.mce_embedplus_youtubeprefs_wiz { background: transparent url("../images/btnwizoff.png") no-repeat scroll center center !important; } .wp_themeSkin span.mce_embedplus_youtubeprefs_wiz:hover, span.mce_embedplus_youtubeprefs_wiz:hover { background-image: url("../images/btnwizon.png") !important; } /********** media button */ .wp-core-ui a.ytprefs_media_link span, a.ytprefs_media_link span, #media-buttons a.ytprefs_media_link span { background: transparent url("../images/btnwizoff.png") no-repeat scroll top left; display: inline-block; height: 16px; margin: 2px 2px 0 0; vertical-align: top; width: 16px; } .wp-core-ui a.ytprefs_media_link:hover span, a.ytprefs_media_link:hover span, #media-buttons a.ytprefs_media_link:hover span { background-image: url("../images/btnwizon.png"); } .wp-core-ui a.ytprefs_vi_embed_shortcode span, a.ytprefs_vi_embed_shortcode span, #media-buttons a.ytprefs_vi_embed_shortcode span { background: transparent url("../images/icon-monetize_16x18bw.png") no-repeat scroll top left; display: inline-block; height: 16px; margin: 4px 2px 0 0; vertical-align: top; width: 18px; } .wp-core-ui a.ytprefs_vi_embed_shortcode:hover span, a.ytprefs_vi_embed_shortcode:hover span, #media-buttons a.ytprefs_vi_embed_shortcode:hover span { background-image: url("../images/icon-monetize_16x18.png"); } body #TB_overlay.epyt-thickbox { z-index: 100000000 !important; } body #TB_window.epyt-thickbox { z-index: 100000001 !important; } #media-buttons a.ytprefs_media_link, .wp-core-ui a.ytprefs_media_link, a.ytprefs_media_link { background-attachment: scroll; background-clip: border-box; background-color: #F3F3F3; background-image: linear-gradient(#FEFEFE, #F4F4F4); background-origin: padding-box; background-size: auto; border-radius: 3px; box-sizing: border-box; /*color: #333;*/ cursor: pointer; display: inline-block; /*font-family: sans-serif; font-size: 12px; height: 24px; line-height: 23px;*/ margin: 0px 5px 0px 0px; outline-color: #333; outline-style: none; outline-width: 0px; padding: 0px 10px 1px .4em; text-decoration: none; text-shadow: #FFF 0px 1px 0px; white-space: nowrap; } #dashboard_right_now .page-count a.ytprefs_glance_button:before, #dashboard_right_now .page-count span.ytprefs_glance_button:before { content: "\f236"; } /* menu button */ #toplevel_page_youtube-my-preferences > ul > li.wp-first-item { display: none; } #wpadminbar #wp-admin-bar-ytprefs-bar-cache > .ab-item:before { content: "\f311"; top: 2px; } .ytprefs-pointer .wp-pointer-buttons, .ytprefs-pointer .wp-pointer-buttons a.close { display: block !important; opacity: 1 !important; }youtube-embed-plus/scripts/jquery.cookie.min.js000064400000002424151435171370015702 0ustar00/*! jquery.cookie v1.4.1 | MIT */ !function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});youtube-embed-plus/scripts/index.html000064400000000312151435171370013762 0ustar00 youtube-embed-plus/scripts/chartjs/moment.js000064400000400727151435171370015276 0ustar00//! moment.js //! version : 2.20.1 //! authors : Tim Wood, Iskren Chernev, Moment.js contributors //! license : MIT //! momentjs.com ;(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.moment = factory() }(this, (function () { 'use strict'; var hookCallback; function hooks () { return hookCallback.apply(null, arguments); } // This is done to register the method called with moment() // without creating circular dependencies. function setHookCallback (callback) { hookCallback = callback; } function isArray(input) { return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]'; } function isObject(input) { // IE8 will treat undefined and null as object if it wasn't for // input != null return input != null && Object.prototype.toString.call(input) === '[object Object]'; } function isObjectEmpty(obj) { if (Object.getOwnPropertyNames) { return (Object.getOwnPropertyNames(obj).length === 0); } else { var k; for (k in obj) { if (obj.hasOwnProperty(k)) { return false; } } return true; } } function isUndefined(input) { return input === void 0; } function isNumber(input) { return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]'; } function isDate(input) { return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]'; } function map(arr, fn) { var res = [], i; for (i = 0; i < arr.length; ++i) { res.push(fn(arr[i], i)); } return res; } function hasOwnProp(a, b) { return Object.prototype.hasOwnProperty.call(a, b); } function extend(a, b) { for (var i in b) { if (hasOwnProp(b, i)) { a[i] = b[i]; } } if (hasOwnProp(b, 'toString')) { a.toString = b.toString; } if (hasOwnProp(b, 'valueOf')) { a.valueOf = b.valueOf; } return a; } function createUTC (input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, true).utc(); } function defaultParsingFlags() { // We need to deep clone this object. return { empty : false, unusedTokens : [], unusedInput : [], overflow : -2, charsLeftOver : 0, nullInput : false, invalidMonth : null, invalidFormat : false, userInvalidated : false, iso : false, parsedDateParts : [], meridiem : null, rfc2822 : false, weekdayMismatch : false }; } function getParsingFlags(m) { if (m._pf == null) { m._pf = defaultParsingFlags(); } return m._pf; } var some; if (Array.prototype.some) { some = Array.prototype.some; } else { some = function (fun) { var t = Object(this); var len = t.length >>> 0; for (var i = 0; i < len; i++) { if (i in t && fun.call(this, t[i], i, t)) { return true; } } return false; }; } function isValid(m) { if (m._isValid == null) { var flags = getParsingFlags(m); var parsedParts = some.call(flags.parsedDateParts, function (i) { return i != null; }); var isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || (flags.meridiem && parsedParts)); if (m._strict) { isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined; } if (Object.isFrozen == null || !Object.isFrozen(m)) { m._isValid = isNowValid; } else { return isNowValid; } } return m._isValid; } function createInvalid (flags) { var m = createUTC(NaN); if (flags != null) { extend(getParsingFlags(m), flags); } else { getParsingFlags(m).userInvalidated = true; } return m; } // Plugins that add properties should also add the key here (null value), // so we can properly clone ourselves. var momentProperties = hooks.momentProperties = []; function copyConfig(to, from) { var i, prop, val; if (!isUndefined(from._isAMomentObject)) { to._isAMomentObject = from._isAMomentObject; } if (!isUndefined(from._i)) { to._i = from._i; } if (!isUndefined(from._f)) { to._f = from._f; } if (!isUndefined(from._l)) { to._l = from._l; } if (!isUndefined(from._strict)) { to._strict = from._strict; } if (!isUndefined(from._tzm)) { to._tzm = from._tzm; } if (!isUndefined(from._isUTC)) { to._isUTC = from._isUTC; } if (!isUndefined(from._offset)) { to._offset = from._offset; } if (!isUndefined(from._pf)) { to._pf = getParsingFlags(from); } if (!isUndefined(from._locale)) { to._locale = from._locale; } if (momentProperties.length > 0) { for (i = 0; i < momentProperties.length; i++) { prop = momentProperties[i]; val = from[prop]; if (!isUndefined(val)) { to[prop] = val; } } } return to; } var updateInProgress = false; // Moment prototype object function Moment(config) { copyConfig(this, config); this._d = new Date(config._d != null ? config._d.getTime() : NaN); if (!this.isValid()) { this._d = new Date(NaN); } // Prevent infinite loop in case updateOffset creates new moment // objects. if (updateInProgress === false) { updateInProgress = true; hooks.updateOffset(this); updateInProgress = false; } } function isMoment (obj) { return obj instanceof Moment || (obj != null && obj._isAMomentObject != null); } function absFloor (number) { if (number < 0) { // -0 -> 0 return Math.ceil(number) || 0; } else { return Math.floor(number); } } function toInt(argumentForCoercion) { var coercedNumber = +argumentForCoercion, value = 0; if (coercedNumber !== 0 && isFinite(coercedNumber)) { value = absFloor(coercedNumber); } return value; } // compare two arrays, return the number of differences function compareArrays(array1, array2, dontConvert) { var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i; for (i = 0; i < len; i++) { if ((dontConvert && array1[i] !== array2[i]) || (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) { diffs++; } } return diffs + lengthDiff; } function warn(msg) { if (hooks.suppressDeprecationWarnings === false && (typeof console !== 'undefined') && console.warn) { console.warn('Deprecation warning: ' + msg); } } function deprecate(msg, fn) { var firstTime = true; return extend(function () { if (hooks.deprecationHandler != null) { hooks.deprecationHandler(null, msg); } if (firstTime) { var args = []; var arg; for (var i = 0; i < arguments.length; i++) { arg = ''; if (typeof arguments[i] === 'object') { arg += '\n[' + i + '] '; for (var key in arguments[0]) { arg += key + ': ' + arguments[0][key] + ', '; } arg = arg.slice(0, -2); // Remove trailing comma and space } else { arg = arguments[i]; } args.push(arg); } warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack); firstTime = false; } return fn.apply(this, arguments); }, fn); } var deprecations = {}; function deprecateSimple(name, msg) { if (hooks.deprecationHandler != null) { hooks.deprecationHandler(name, msg); } if (!deprecations[name]) { warn(msg); deprecations[name] = true; } } hooks.suppressDeprecationWarnings = false; hooks.deprecationHandler = null; function isFunction(input) { return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]'; } function set (config) { var prop, i; for (i in config) { prop = config[i]; if (isFunction(prop)) { this[i] = prop; } else { this['_' + i] = prop; } } this._config = config; // Lenient ordinal parsing accepts just a number in addition to // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. // TODO: Remove "ordinalParse" fallback in next major release. this._dayOfMonthOrdinalParseLenient = new RegExp( (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + (/\d{1,2}/).source); } function mergeConfigs(parentConfig, childConfig) { var res = extend({}, parentConfig), prop; for (prop in childConfig) { if (hasOwnProp(childConfig, prop)) { if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { res[prop] = {}; extend(res[prop], parentConfig[prop]); extend(res[prop], childConfig[prop]); } else if (childConfig[prop] != null) { res[prop] = childConfig[prop]; } else { delete res[prop]; } } } for (prop in parentConfig) { if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) { // make sure changes to properties don't modify parent config res[prop] = extend({}, res[prop]); } } return res; } function Locale(config) { if (config != null) { this.set(config); } } var keys; if (Object.keys) { keys = Object.keys; } else { keys = function (obj) { var i, res = []; for (i in obj) { if (hasOwnProp(obj, i)) { res.push(i); } } return res; }; } var defaultCalendar = { sameDay : '[Today at] LT', nextDay : '[Tomorrow at] LT', nextWeek : 'dddd [at] LT', lastDay : '[Yesterday at] LT', lastWeek : '[Last] dddd [at] LT', sameElse : 'L' }; function calendar (key, mom, now) { var output = this._calendar[key] || this._calendar['sameElse']; return isFunction(output) ? output.call(mom, now) : output; } var defaultLongDateFormat = { LTS : 'h:mm:ss A', LT : 'h:mm A', L : 'MM/DD/YYYY', LL : 'MMMM D, YYYY', LLL : 'MMMM D, YYYY h:mm A', LLLL : 'dddd, MMMM D, YYYY h:mm A' }; function longDateFormat (key) { var format = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()]; if (format || !formatUpper) { return format; } this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) { return val.slice(1); }); return this._longDateFormat[key]; } var defaultInvalidDate = 'Invalid date'; function invalidDate () { return this._invalidDate; } var defaultOrdinal = '%d'; var defaultDayOfMonthOrdinalParse = /\d{1,2}/; function ordinal (number) { return this._ordinal.replace('%d', number); } var defaultRelativeTime = { future : 'in %s', past : '%s ago', s : 'a few seconds', ss : '%d seconds', m : 'a minute', mm : '%d minutes', h : 'an hour', hh : '%d hours', d : 'a day', dd : '%d days', M : 'a month', MM : '%d months', y : 'a year', yy : '%d years' }; function relativeTime (number, withoutSuffix, string, isFuture) { var output = this._relativeTime[string]; return (isFunction(output)) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number); } function pastFuture (diff, output) { var format = this._relativeTime[diff > 0 ? 'future' : 'past']; return isFunction(format) ? format(output) : format.replace(/%s/i, output); } var aliases = {}; function addUnitAlias (unit, shorthand) { var lowerCase = unit.toLowerCase(); aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; } function normalizeUnits(units) { return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined; } function normalizeObjectUnits(inputObject) { var normalizedInput = {}, normalizedProp, prop; for (prop in inputObject) { if (hasOwnProp(inputObject, prop)) { normalizedProp = normalizeUnits(prop); if (normalizedProp) { normalizedInput[normalizedProp] = inputObject[prop]; } } } return normalizedInput; } var priorities = {}; function addUnitPriority(unit, priority) { priorities[unit] = priority; } function getPrioritizedUnits(unitsObj) { var units = []; for (var u in unitsObj) { units.push({unit: u, priority: priorities[u]}); } units.sort(function (a, b) { return a.priority - b.priority; }); return units; } function zeroFill(number, targetLength, forceSign) { var absNumber = '' + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign = number >= 0; return (sign ? (forceSign ? '+' : '') : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber; } var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g; var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g; var formatFunctions = {}; var formatTokenFunctions = {}; // token: 'M' // padded: ['MM', 2] // ordinal: 'Mo' // callback: function () { this.month() + 1 } function addFormatToken (token, padded, ordinal, callback) { var func = callback; if (typeof callback === 'string') { func = function () { return this[callback](); }; } if (token) { formatTokenFunctions[token] = func; } if (padded) { formatTokenFunctions[padded[0]] = function () { return zeroFill(func.apply(this, arguments), padded[1], padded[2]); }; } if (ordinal) { formatTokenFunctions[ordinal] = function () { return this.localeData().ordinal(func.apply(this, arguments), token); }; } } function removeFormattingTokens(input) { if (input.match(/\[[\s\S]/)) { return input.replace(/^\[|\]$/g, ''); } return input.replace(/\\/g, ''); } function makeFormatFunction(format) { var array = format.match(formattingTokens), i, length; for (i = 0, length = array.length; i < length; i++) { if (formatTokenFunctions[array[i]]) { array[i] = formatTokenFunctions[array[i]]; } else { array[i] = removeFormattingTokens(array[i]); } } return function (mom) { var output = '', i; for (i = 0; i < length; i++) { output += isFunction(array[i]) ? array[i].call(mom, format) : array[i]; } return output; }; } // format date using native date object function formatMoment(m, format) { if (!m.isValid()) { return m.localeData().invalidDate(); } format = expandFormat(format, m.localeData()); formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format); return formatFunctions[format](m); } function expandFormat(format, locale) { var i = 5; function replaceLongDateFormatTokens(input) { return locale.longDateFormat(input) || input; } localFormattingTokens.lastIndex = 0; while (i >= 0 && localFormattingTokens.test(format)) { format = format.replace(localFormattingTokens, replaceLongDateFormatTokens); localFormattingTokens.lastIndex = 0; i -= 1; } return format; } var match1 = /\d/; // 0 - 9 var match2 = /\d\d/; // 00 - 99 var match3 = /\d{3}/; // 000 - 999 var match4 = /\d{4}/; // 0000 - 9999 var match6 = /[+-]?\d{6}/; // -999999 - 999999 var match1to2 = /\d\d?/; // 0 - 99 var match3to4 = /\d\d\d\d?/; // 999 - 9999 var match5to6 = /\d\d\d\d\d\d?/; // 99999 - 999999 var match1to3 = /\d{1,3}/; // 0 - 999 var match1to4 = /\d{1,4}/; // 0 - 9999 var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999 var matchUnsigned = /\d+/; // 0 - inf var matchSigned = /[+-]?\d+/; // -inf - inf var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123 // any word (or two) characters or numbers including two/three word month in arabic. // includes scottish gaelic two word and hyphenated months var matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i; var regexes = {}; function addRegexToken (token, regex, strictRegex) { regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) { return (isStrict && strictRegex) ? strictRegex : regex; }; } function getParseRegexForToken (token, config) { if (!hasOwnProp(regexes, token)) { return new RegExp(unescapeFormat(token)); } return regexes[token](config._strict, config._locale); } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript function unescapeFormat(s) { return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) { return p1 || p2 || p3 || p4; })); } function regexEscape(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } var tokens = {}; function addParseToken (token, callback) { var i, func = callback; if (typeof token === 'string') { token = [token]; } if (isNumber(callback)) { func = function (input, array) { array[callback] = toInt(input); }; } for (i = 0; i < token.length; i++) { tokens[token[i]] = func; } } function addWeekParseToken (token, callback) { addParseToken(token, function (input, array, config, token) { config._w = config._w || {}; callback(input, config._w, config, token); }); } function addTimeToArrayFromToken(token, input, config) { if (input != null && hasOwnProp(tokens, token)) { tokens[token](input, config._a, config, token); } } var YEAR = 0; var MONTH = 1; var DATE = 2; var HOUR = 3; var MINUTE = 4; var SECOND = 5; var MILLISECOND = 6; var WEEK = 7; var WEEKDAY = 8; // FORMATTING addFormatToken('Y', 0, 0, function () { var y = this.year(); return y <= 9999 ? '' + y : '+' + y; }); addFormatToken(0, ['YY', 2], 0, function () { return this.year() % 100; }); addFormatToken(0, ['YYYY', 4], 0, 'year'); addFormatToken(0, ['YYYYY', 5], 0, 'year'); addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES addUnitAlias('year', 'y'); // PRIORITIES addUnitPriority('year', 1); // PARSING addRegexToken('Y', matchSigned); addRegexToken('YY', match1to2, match2); addRegexToken('YYYY', match1to4, match4); addRegexToken('YYYYY', match1to6, match6); addRegexToken('YYYYYY', match1to6, match6); addParseToken(['YYYYY', 'YYYYYY'], YEAR); addParseToken('YYYY', function (input, array) { array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); }); addParseToken('YY', function (input, array) { array[YEAR] = hooks.parseTwoDigitYear(input); }); addParseToken('Y', function (input, array) { array[YEAR] = parseInt(input, 10); }); // HELPERS function daysInYear(year) { return isLeapYear(year) ? 366 : 365; } function isLeapYear(year) { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } // HOOKS hooks.parseTwoDigitYear = function (input) { return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); }; // MOMENTS var getSetYear = makeGetSet('FullYear', true); function getIsLeapYear () { return isLeapYear(this.year()); } function makeGetSet (unit, keepTime) { return function (value) { if (value != null) { set$1(this, unit, value); hooks.updateOffset(this, keepTime); return this; } else { return get(this, unit); } }; } function get (mom, unit) { return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN; } function set$1 (mom, unit, value) { if (mom.isValid() && !isNaN(value)) { if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) { mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month())); } else { mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); } } } // MOMENTS function stringGet (units) { units = normalizeUnits(units); if (isFunction(this[units])) { return this[units](); } return this; } function stringSet (units, value) { if (typeof units === 'object') { units = normalizeObjectUnits(units); var prioritized = getPrioritizedUnits(units); for (var i = 0; i < prioritized.length; i++) { this[prioritized[i].unit](units[prioritized[i].unit]); } } else { units = normalizeUnits(units); if (isFunction(this[units])) { return this[units](value); } } return this; } function mod(n, x) { return ((n % x) + x) % x; } var indexOf; if (Array.prototype.indexOf) { indexOf = Array.prototype.indexOf; } else { indexOf = function (o) { // I know var i; for (i = 0; i < this.length; ++i) { if (this[i] === o) { return i; } } return -1; }; } function daysInMonth(year, month) { if (isNaN(year) || isNaN(month)) { return NaN; } var modMonth = mod(month, 12); year += (month - modMonth) / 12; return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2); } // FORMATTING addFormatToken('M', ['MM', 2], 'Mo', function () { return this.month() + 1; }); addFormatToken('MMM', 0, 0, function (format) { return this.localeData().monthsShort(this, format); }); addFormatToken('MMMM', 0, 0, function (format) { return this.localeData().months(this, format); }); // ALIASES addUnitAlias('month', 'M'); // PRIORITY addUnitPriority('month', 8); // PARSING addRegexToken('M', match1to2); addRegexToken('MM', match1to2, match2); addRegexToken('MMM', function (isStrict, locale) { return locale.monthsShortRegex(isStrict); }); addRegexToken('MMMM', function (isStrict, locale) { return locale.monthsRegex(isStrict); }); addParseToken(['M', 'MM'], function (input, array) { array[MONTH] = toInt(input) - 1; }); addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid. if (month != null) { array[MONTH] = month; } else { getParsingFlags(config).invalidMonth = input; } }); // LOCALES var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/; var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'); function localeMonths (m, format) { if (!m) { return isArray(this._months) ? this._months : this._months['standalone']; } return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()]; } var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'); function localeMonthsShort (m, format) { if (!m) { return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone']; } return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()]; } function handleStrictParse(monthName, format, strict) { var i, ii, mom, llc = monthName.toLocaleLowerCase(); if (!this._monthsParse) { // this is not used this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; for (i = 0; i < 12; ++i) { mom = createUTC([2000, i]); this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase(); this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); } } if (strict) { if (format === 'MMM') { ii = indexOf.call(this._shortMonthsParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._longMonthsParse, llc); return ii !== -1 ? ii : null; } } else { if (format === 'MMM') { ii = indexOf.call(this._shortMonthsParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._longMonthsParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._longMonthsParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._shortMonthsParse, llc); return ii !== -1 ? ii : null; } } } function localeMonthsParse (monthName, format, strict) { var i, mom, regex; if (this._monthsParseExact) { return handleStrictParse.call(this, monthName, format, strict); } if (!this._monthsParse) { this._monthsParse = []; this._longMonthsParse = []; this._shortMonthsParse = []; } // TODO: add sorting // Sorting makes sure if one month (or abbr) is a prefix of another // see sorting in computeMonthsParse for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); if (strict && !this._longMonthsParse[i]) { this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i'); this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i'); } if (!strict && !this._monthsParse[i]) { regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) { return i; } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) { return i; } else if (!strict && this._monthsParse[i].test(monthName)) { return i; } } } // MOMENTS function setMonth (mom, value) { var dayOfMonth; if (!mom.isValid()) { // No op return mom; } if (typeof value === 'string') { if (/^\d+$/.test(value)) { value = toInt(value); } else { value = mom.localeData().monthsParse(value); // TODO: Another silent failure? if (!isNumber(value)) { return mom; } } } dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); return mom; } function getSetMonth (value) { if (value != null) { setMonth(this, value); hooks.updateOffset(this, true); return this; } else { return get(this, 'Month'); } } function getDaysInMonth () { return daysInMonth(this.year(), this.month()); } var defaultMonthsShortRegex = matchWord; function monthsShortRegex (isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); } if (isStrict) { return this._monthsShortStrictRegex; } else { return this._monthsShortRegex; } } else { if (!hasOwnProp(this, '_monthsShortRegex')) { this._monthsShortRegex = defaultMonthsShortRegex; } return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex; } } var defaultMonthsRegex = matchWord; function monthsRegex (isStrict) { if (this._monthsParseExact) { if (!hasOwnProp(this, '_monthsRegex')) { computeMonthsParse.call(this); } if (isStrict) { return this._monthsStrictRegex; } else { return this._monthsRegex; } } else { if (!hasOwnProp(this, '_monthsRegex')) { this._monthsRegex = defaultMonthsRegex; } return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex; } } function computeMonthsParse () { function cmpLenRev(a, b) { return b.length - a.length; } var shortPieces = [], longPieces = [], mixedPieces = [], i, mom; for (i = 0; i < 12; i++) { // make the regex if we don't have it already mom = createUTC([2000, i]); shortPieces.push(this.monthsShort(mom, '')); longPieces.push(this.months(mom, '')); mixedPieces.push(this.months(mom, '')); mixedPieces.push(this.monthsShort(mom, '')); } // Sorting makes sure if one month (or abbr) is a prefix of another it // will match the longer piece. shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); for (i = 0; i < 12; i++) { shortPieces[i] = regexEscape(shortPieces[i]); longPieces[i] = regexEscape(longPieces[i]); } for (i = 0; i < 24; i++) { mixedPieces[i] = regexEscape(mixedPieces[i]); } this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._monthsShortRegex = this._monthsRegex; this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); } function createDate (y, m, d, h, M, s, ms) { // can't just apply() to create a date: // https://stackoverflow.com/q/181348 var date = new Date(y, m, d, h, M, s, ms); // the date constructor remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0 && isFinite(date.getFullYear())) { date.setFullYear(y); } return date; } function createUTCDate (y) { var date = new Date(Date.UTC.apply(null, arguments)); // the Date.UTC function remaps years 0-99 to 1900-1999 if (y < 100 && y >= 0 && isFinite(date.getUTCFullYear())) { date.setUTCFullYear(y); } return date; } // start-of-first-week - start-of-year function firstWeekOffset(year, dow, doy) { var // first-week day -- which january is always in the first week (4 for iso, 1 for other) fwd = 7 + dow - doy, // first-week day local weekday -- which local weekday is fwd fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; return -fwdlw + fwd - 1; } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday function dayOfYearFromWeeks(year, week, weekday, dow, doy) { var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear; if (dayOfYear <= 0) { resYear = year - 1; resDayOfYear = daysInYear(resYear) + dayOfYear; } else if (dayOfYear > daysInYear(year)) { resYear = year + 1; resDayOfYear = dayOfYear - daysInYear(year); } else { resYear = year; resDayOfYear = dayOfYear; } return { year: resYear, dayOfYear: resDayOfYear }; } function weekOfYear(mom, dow, doy) { var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear; if (week < 1) { resYear = mom.year() - 1; resWeek = week + weeksInYear(resYear, dow, doy); } else if (week > weeksInYear(mom.year(), dow, doy)) { resWeek = week - weeksInYear(mom.year(), dow, doy); resYear = mom.year() + 1; } else { resYear = mom.year(); resWeek = week; } return { week: resWeek, year: resYear }; } function weeksInYear(year, dow, doy) { var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy); return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; } // FORMATTING addFormatToken('w', ['ww', 2], 'wo', 'week'); addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES addUnitAlias('week', 'w'); addUnitAlias('isoWeek', 'W'); // PRIORITIES addUnitPriority('week', 5); addUnitPriority('isoWeek', 5); // PARSING addRegexToken('w', match1to2); addRegexToken('ww', match1to2, match2); addRegexToken('W', match1to2); addRegexToken('WW', match1to2, match2); addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) { week[token.substr(0, 1)] = toInt(input); }); // HELPERS // LOCALES function localeWeek (mom) { return weekOfYear(mom, this._week.dow, this._week.doy).week; } var defaultLocaleWeek = { dow : 0, // Sunday is the first day of the week. doy : 6 // The week that contains Jan 1st is the first week of the year. }; function localeFirstDayOfWeek () { return this._week.dow; } function localeFirstDayOfYear () { return this._week.doy; } // MOMENTS function getSetWeek (input) { var week = this.localeData().week(this); return input == null ? week : this.add((input - week) * 7, 'd'); } function getSetISOWeek (input) { var week = weekOfYear(this, 1, 4).week; return input == null ? week : this.add((input - week) * 7, 'd'); } // FORMATTING addFormatToken('d', 0, 'do', 'day'); addFormatToken('dd', 0, 0, function (format) { return this.localeData().weekdaysMin(this, format); }); addFormatToken('ddd', 0, 0, function (format) { return this.localeData().weekdaysShort(this, format); }); addFormatToken('dddd', 0, 0, function (format) { return this.localeData().weekdays(this, format); }); addFormatToken('e', 0, 0, 'weekday'); addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES addUnitAlias('day', 'd'); addUnitAlias('weekday', 'e'); addUnitAlias('isoWeekday', 'E'); // PRIORITY addUnitPriority('day', 11); addUnitPriority('weekday', 11); addUnitPriority('isoWeekday', 11); // PARSING addRegexToken('d', match1to2); addRegexToken('e', match1to2); addRegexToken('E', match1to2); addRegexToken('dd', function (isStrict, locale) { return locale.weekdaysMinRegex(isStrict); }); addRegexToken('ddd', function (isStrict, locale) { return locale.weekdaysShortRegex(isStrict); }); addRegexToken('dddd', function (isStrict, locale) { return locale.weekdaysRegex(isStrict); }); addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid if (weekday != null) { week.d = weekday; } else { getParsingFlags(config).invalidWeekday = input; } }); addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { week[token] = toInt(input); }); // HELPERS function parseWeekday(input, locale) { if (typeof input !== 'string') { return input; } if (!isNaN(input)) { return parseInt(input, 10); } input = locale.weekdaysParse(input); if (typeof input === 'number') { return input; } return null; } function parseIsoWeekday(input, locale) { if (typeof input === 'string') { return locale.weekdaysParse(input) % 7 || 7; } return isNaN(input) ? null : input; } // LOCALES var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'); function localeWeekdays (m, format) { if (!m) { return isArray(this._weekdays) ? this._weekdays : this._weekdays['standalone']; } return isArray(this._weekdays) ? this._weekdays[m.day()] : this._weekdays[this._weekdays.isFormat.test(format) ? 'format' : 'standalone'][m.day()]; } var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'); function localeWeekdaysShort (m) { return (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort; } var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'); function localeWeekdaysMin (m) { return (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin; } function handleStrictParse$1(weekdayName, format, strict) { var i, ii, mom, llc = weekdayName.toLocaleLowerCase(); if (!this._weekdaysParse) { this._weekdaysParse = []; this._shortWeekdaysParse = []; this._minWeekdaysParse = []; for (i = 0; i < 7; ++i) { mom = createUTC([2000, 1]).day(i); this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase(); this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase(); this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); } } if (strict) { if (format === 'dddd') { ii = indexOf.call(this._weekdaysParse, llc); return ii !== -1 ? ii : null; } else if (format === 'ddd') { ii = indexOf.call(this._shortWeekdaysParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._minWeekdaysParse, llc); return ii !== -1 ? ii : null; } } else { if (format === 'dddd') { ii = indexOf.call(this._weekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._shortWeekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._minWeekdaysParse, llc); return ii !== -1 ? ii : null; } else if (format === 'ddd') { ii = indexOf.call(this._shortWeekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._weekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._minWeekdaysParse, llc); return ii !== -1 ? ii : null; } else { ii = indexOf.call(this._minWeekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._weekdaysParse, llc); if (ii !== -1) { return ii; } ii = indexOf.call(this._shortWeekdaysParse, llc); return ii !== -1 ? ii : null; } } } function localeWeekdaysParse (weekdayName, format, strict) { var i, mom, regex; if (this._weekdaysParseExact) { return handleStrictParse$1.call(this, weekdayName, format, strict); } if (!this._weekdaysParse) { this._weekdaysParse = []; this._minWeekdaysParse = []; this._shortWeekdaysParse = []; this._fullWeekdaysParse = []; } for (i = 0; i < 7; i++) { // make the regex if we don't have it already mom = createUTC([2000, 1]).day(i); if (strict && !this._fullWeekdaysParse[i]) { this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\.?') + '$', 'i'); this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\.?') + '$', 'i'); this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\.?') + '$', 'i'); } if (!this._weekdaysParse[i]) { regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, ''); this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); } // test the regex if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) { return i; } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) { return i; } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) { return i; } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { return i; } } } // MOMENTS function getSetDayOfWeek (input) { if (!this.isValid()) { return input != null ? this : NaN; } var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); if (input != null) { input = parseWeekday(input, this.localeData()); return this.add(input - day, 'd'); } else { return day; } } function getSetLocaleDayOfWeek (input) { if (!this.isValid()) { return input != null ? this : NaN; } var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; return input == null ? weekday : this.add(input - weekday, 'd'); } function getSetISODayOfWeek (input) { if (!this.isValid()) { return input != null ? this : NaN; } // behaves the same as moment#day except // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) // as a setter, sunday should belong to the previous week. if (input != null) { var weekday = parseIsoWeekday(input, this.localeData()); return this.day(this.day() % 7 ? weekday : weekday - 7); } else { return this.day() || 7; } } var defaultWeekdaysRegex = matchWord; function weekdaysRegex (isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); } if (isStrict) { return this._weekdaysStrictRegex; } else { return this._weekdaysRegex; } } else { if (!hasOwnProp(this, '_weekdaysRegex')) { this._weekdaysRegex = defaultWeekdaysRegex; } return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex; } } var defaultWeekdaysShortRegex = matchWord; function weekdaysShortRegex (isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); } if (isStrict) { return this._weekdaysShortStrictRegex; } else { return this._weekdaysShortRegex; } } else { if (!hasOwnProp(this, '_weekdaysShortRegex')) { this._weekdaysShortRegex = defaultWeekdaysShortRegex; } return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex; } } var defaultWeekdaysMinRegex = matchWord; function weekdaysMinRegex (isStrict) { if (this._weekdaysParseExact) { if (!hasOwnProp(this, '_weekdaysRegex')) { computeWeekdaysParse.call(this); } if (isStrict) { return this._weekdaysMinStrictRegex; } else { return this._weekdaysMinRegex; } } else { if (!hasOwnProp(this, '_weekdaysMinRegex')) { this._weekdaysMinRegex = defaultWeekdaysMinRegex; } return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex; } } function computeWeekdaysParse () { function cmpLenRev(a, b) { return b.length - a.length; } var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i, mom, minp, shortp, longp; for (i = 0; i < 7; i++) { // make the regex if we don't have it already mom = createUTC([2000, 1]).day(i); minp = this.weekdaysMin(mom, ''); shortp = this.weekdaysShort(mom, ''); longp = this.weekdays(mom, ''); minPieces.push(minp); shortPieces.push(shortp); longPieces.push(longp); mixedPieces.push(minp); mixedPieces.push(shortp); mixedPieces.push(longp); } // Sorting makes sure if one weekday (or abbr) is a prefix of another it // will match the longer piece. minPieces.sort(cmpLenRev); shortPieces.sort(cmpLenRev); longPieces.sort(cmpLenRev); mixedPieces.sort(cmpLenRev); for (i = 0; i < 7; i++) { shortPieces[i] = regexEscape(shortPieces[i]); longPieces[i] = regexEscape(longPieces[i]); mixedPieces[i] = regexEscape(mixedPieces[i]); } this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); this._weekdaysShortRegex = this._weekdaysRegex; this._weekdaysMinRegex = this._weekdaysRegex; this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i'); this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i'); this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i'); } // FORMATTING function hFormat() { return this.hours() % 12 || 12; } function kFormat() { return this.hours() || 24; } addFormatToken('H', ['HH', 2], 0, 'hour'); addFormatToken('h', ['hh', 2], 0, hFormat); addFormatToken('k', ['kk', 2], 0, kFormat); addFormatToken('hmm', 0, 0, function () { return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); }); addFormatToken('hmmss', 0, 0, function () { return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); }); addFormatToken('Hmm', 0, 0, function () { return '' + this.hours() + zeroFill(this.minutes(), 2); }); addFormatToken('Hmmss', 0, 0, function () { return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2); }); function meridiem (token, lowercase) { addFormatToken(token, 0, 0, function () { return this.localeData().meridiem(this.hours(), this.minutes(), lowercase); }); } meridiem('a', true); meridiem('A', false); // ALIASES addUnitAlias('hour', 'h'); // PRIORITY addUnitPriority('hour', 13); // PARSING function matchMeridiem (isStrict, locale) { return locale._meridiemParse; } addRegexToken('a', matchMeridiem); addRegexToken('A', matchMeridiem); addRegexToken('H', match1to2); addRegexToken('h', match1to2); addRegexToken('k', match1to2); addRegexToken('HH', match1to2, match2); addRegexToken('hh', match1to2, match2); addRegexToken('kk', match1to2, match2); addRegexToken('hmm', match3to4); addRegexToken('hmmss', match5to6); addRegexToken('Hmm', match3to4); addRegexToken('Hmmss', match5to6); addParseToken(['H', 'HH'], HOUR); addParseToken(['k', 'kk'], function (input, array, config) { var kInput = toInt(input); array[HOUR] = kInput === 24 ? 0 : kInput; }); addParseToken(['a', 'A'], function (input, array, config) { config._isPm = config._locale.isPM(input); config._meridiem = input; }); addParseToken(['h', 'hh'], function (input, array, config) { array[HOUR] = toInt(input); getParsingFlags(config).bigHour = true; }); addParseToken('hmm', function (input, array, config) { var pos = input.length - 2; array[HOUR] = toInt(input.substr(0, pos)); array[MINUTE] = toInt(input.substr(pos)); getParsingFlags(config).bigHour = true; }); addParseToken('hmmss', function (input, array, config) { var pos1 = input.length - 4; var pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); getParsingFlags(config).bigHour = true; }); addParseToken('Hmm', function (input, array, config) { var pos = input.length - 2; array[HOUR] = toInt(input.substr(0, pos)); array[MINUTE] = toInt(input.substr(pos)); }); addParseToken('Hmmss', function (input, array, config) { var pos1 = input.length - 4; var pos2 = input.length - 2; array[HOUR] = toInt(input.substr(0, pos1)); array[MINUTE] = toInt(input.substr(pos1, 2)); array[SECOND] = toInt(input.substr(pos2)); }); // LOCALES function localeIsPM (input) { // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays // Using charAt should be more compatible. return ((input + '').toLowerCase().charAt(0) === 'p'); } var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i; function localeMeridiem (hours, minutes, isLower) { if (hours > 11) { return isLower ? 'pm' : 'PM'; } else { return isLower ? 'am' : 'AM'; } } // MOMENTS // Setting the hour should keep the time, because the user explicitly // specified which hour he wants. So trying to maintain the same hour (in // a new timezone) makes sense. Adding/subtracting hours does not follow // this rule. var getSetHour = makeGetSet('Hours', true); // months // week // weekdays // meridiem var baseConfig = { calendar: defaultCalendar, longDateFormat: defaultLongDateFormat, invalidDate: defaultInvalidDate, ordinal: defaultOrdinal, dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, relativeTime: defaultRelativeTime, months: defaultLocaleMonths, monthsShort: defaultLocaleMonthsShort, week: defaultLocaleWeek, weekdays: defaultLocaleWeekdays, weekdaysMin: defaultLocaleWeekdaysMin, weekdaysShort: defaultLocaleWeekdaysShort, meridiemParse: defaultLocaleMeridiemParse }; // internal storage for locale config files var locales = {}; var localeFamilies = {}; var globalLocale; function normalizeLocale(key) { return key ? key.toLowerCase().replace('_', '-') : key; } // pick the locale from the array // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root function chooseLocale(names) { var i = 0, j, next, locale, split; while (i < names.length) { split = normalizeLocale(names[i]).split('-'); j = split.length; next = normalizeLocale(names[i + 1]); next = next ? next.split('-') : null; while (j > 0) { locale = loadLocale(split.slice(0, j).join('-')); if (locale) { return locale; } if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) { //the next array item is better than a shallower substring of this one break; } j--; } i++; } return null; } function loadLocale(name) { var oldLocale = null; // TODO: Find a better way to register and load all the locales in Node if (!locales[name] && (typeof module !== 'undefined') && module && module.exports) { try { oldLocale = globalLocale._abbr; var aliasedRequire = require; aliasedRequire('./locale/' + name); getSetGlobalLocale(oldLocale); } catch (e) {} } return locales[name]; } // This function will load locale and then set the global locale. If // no arguments are passed in, it will simply return the current global // locale key. function getSetGlobalLocale (key, values) { var data; if (key) { if (isUndefined(values)) { data = getLocale(key); } else { data = defineLocale(key, values); } if (data) { // moment.duration._locale = moment._locale = data; globalLocale = data; } } return globalLocale._abbr; } function defineLocale (name, config) { if (config !== null) { var parentConfig = baseConfig; config.abbr = name; if (locales[name] != null) { deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'); parentConfig = locales[name]._config; } else if (config.parentLocale != null) { if (locales[config.parentLocale] != null) { parentConfig = locales[config.parentLocale]._config; } else { if (!localeFamilies[config.parentLocale]) { localeFamilies[config.parentLocale] = []; } localeFamilies[config.parentLocale].push({ name: name, config: config }); return null; } } locales[name] = new Locale(mergeConfigs(parentConfig, config)); if (localeFamilies[name]) { localeFamilies[name].forEach(function (x) { defineLocale(x.name, x.config); }); } // backwards compat for now: also set the locale // make sure we set the locale AFTER all child locales have been // created, so we won't end up with the child locale set. getSetGlobalLocale(name); return locales[name]; } else { // useful for testing delete locales[name]; return null; } } function updateLocale(name, config) { if (config != null) { var locale, tmpLocale, parentConfig = baseConfig; // MERGE tmpLocale = loadLocale(name); if (tmpLocale != null) { parentConfig = tmpLocale._config; } config = mergeConfigs(parentConfig, config); locale = new Locale(config); locale.parentLocale = locales[name]; locales[name] = locale; // backwards compat for now: also set the locale getSetGlobalLocale(name); } else { // pass null for config to unupdate, useful for tests if (locales[name] != null) { if (locales[name].parentLocale != null) { locales[name] = locales[name].parentLocale; } else if (locales[name] != null) { delete locales[name]; } } } return locales[name]; } // returns locale data function getLocale (key) { var locale; if (key && key._locale && key._locale._abbr) { key = key._locale._abbr; } if (!key) { return globalLocale; } if (!isArray(key)) { //short-circuit everything else locale = loadLocale(key); if (locale) { return locale; } key = [key]; } return chooseLocale(key); } function listLocales() { return keys(locales); } function checkOverflow (m) { var overflow; var a = m._a; if (a && getParsingFlags(m).overflow === -2) { overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1; if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) { overflow = DATE; } if (getParsingFlags(m)._overflowWeeks && overflow === -1) { overflow = WEEK; } if (getParsingFlags(m)._overflowWeekday && overflow === -1) { overflow = WEEKDAY; } getParsingFlags(m).overflow = overflow; } return m; } // Pick the first defined of two or three arguments. function defaults(a, b, c) { if (a != null) { return a; } if (b != null) { return b; } return c; } function currentDateArray(config) { // hooks is actually the exported moment object var nowValue = new Date(hooks.now()); if (config._useUTC) { return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()]; } return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; } // convert an array to a date. // the array should mirror the parameters below // note: all values past the year are optional and will default to the lowest possible value. // [year, month, day , hour, minute, second, millisecond] function configFromArray (config) { var i, date, input = [], currentDate, expectedWeekday, yearToUse; if (config._d) { return; } currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { dayOfYearFromWeekInfo(config); } //if the day of the year is set, figure out what it is if (config._dayOfYear != null) { yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) { getParsingFlags(config)._overflowDayOfYear = true; } date = createUTCDate(yearToUse, 0, config._dayOfYear); config._a[MONTH] = date.getUTCMonth(); config._a[DATE] = date.getUTCDate(); } // Default to current date. // * if no year, month, day of month are given, default to today // * if day of month is given, default month and year // * if month is given, default only year // * if year is given, don't default anything for (i = 0; i < 3 && config._a[i] == null; ++i) { config._a[i] = input[i] = currentDate[i]; } // Zero out whatever was not defaulted, including time for (; i < 7; i++) { config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i]; } // Check for 24:00:00.000 if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) { config._nextDay = true; config._a[HOUR] = 0; } config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input); expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed // with parseZone. if (config._tzm != null) { config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); } if (config._nextDay) { config._a[HOUR] = 24; } // check for mismatching day of week if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) { getParsingFlags(config).weekdayMismatch = true; } } function dayOfYearFromWeekInfo(config) { var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow; w = config._w; if (w.GG != null || w.W != null || w.E != null) { dow = 1; doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on // how we interpret now (local, utc, fixed offset). So create // a now version of current config (take local/utc/offset flags, and // create now). weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year); week = defaults(w.W, 1); weekday = defaults(w.E, 1); if (weekday < 1 || weekday > 7) { weekdayOverflow = true; } } else { dow = config._locale._week.dow; doy = config._locale._week.doy; var curWeek = weekOfYear(createLocal(), dow, doy); weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week. week = defaults(w.w, curWeek.week); if (w.d != null) { // weekday -- low day numbers are considered next week weekday = w.d; if (weekday < 0 || weekday > 6) { weekdayOverflow = true; } } else if (w.e != null) { // local weekday -- counting starts from begining of week weekday = w.e + dow; if (w.e < 0 || w.e > 6) { weekdayOverflow = true; } } else { // default to begining of week weekday = dow; } } if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { getParsingFlags(config)._overflowWeeks = true; } else if (weekdayOverflow != null) { getParsingFlags(config)._overflowWeekday = true; } else { temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); config._a[YEAR] = temp.year; config._dayOfYear = temp.dayOfYear; } } // iso 8601 regex // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; var basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/; var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/; var isoDates = [ ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], ['GGGG-[W]WW', /\d{4}-W\d\d/, false], ['YYYY-DDD', /\d{4}-\d{3}/], ['YYYY-MM', /\d{4}-\d\d/, false], ['YYYYYYMMDD', /[+-]\d{10}/], ['YYYYMMDD', /\d{8}/], // YYYYMM is NOT allowed by the standard ['GGGG[W]WWE', /\d{4}W\d{3}/], ['GGGG[W]WW', /\d{4}W\d{2}/, false], ['YYYYDDD', /\d{7}/] ]; // iso time formats and regexes var isoTimes = [ ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], ['HH:mm:ss', /\d\d:\d\d:\d\d/], ['HH:mm', /\d\d:\d\d/], ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], ['HHmmss', /\d\d\d\d\d\d/], ['HHmm', /\d\d\d\d/], ['HH', /\d\d/] ]; var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i; // date from iso format function configFromISO(config) { var i, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat; if (match) { getParsingFlags(config).iso = true; for (i = 0, l = isoDates.length; i < l; i++) { if (isoDates[i][1].exec(match[1])) { dateFormat = isoDates[i][0]; allowTime = isoDates[i][2] !== false; break; } } if (dateFormat == null) { config._isValid = false; return; } if (match[3]) { for (i = 0, l = isoTimes.length; i < l; i++) { if (isoTimes[i][1].exec(match[3])) { // match[2] should be 'T' or space timeFormat = (match[2] || ' ') + isoTimes[i][0]; break; } } if (timeFormat == null) { config._isValid = false; return; } } if (!allowTime && timeFormat != null) { config._isValid = false; return; } if (match[4]) { if (tzRegex.exec(match[4])) { tzFormat = 'Z'; } else { config._isValid = false; return; } } config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); configFromStringAndFormat(config); } else { config._isValid = false; } } // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 var rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/; function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) { var result = [ untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10) ]; if (secondStr) { result.push(parseInt(secondStr, 10)); } return result; } function untruncateYear(yearStr) { var year = parseInt(yearStr, 10); if (year <= 49) { return 2000 + year; } else if (year <= 999) { return 1900 + year; } return year; } function preprocessRFC2822(s) { // Remove comments and folding whitespace and replace multiple-spaces with a single space return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').trim(); } function checkWeekday(weekdayStr, parsedInput, config) { if (weekdayStr) { // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check. var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay(); if (weekdayProvided !== weekdayActual) { getParsingFlags(config).weekdayMismatch = true; config._isValid = false; return false; } } return true; } var obsOffsets = { UT: 0, GMT: 0, EDT: -4 * 60, EST: -5 * 60, CDT: -5 * 60, CST: -6 * 60, MDT: -6 * 60, MST: -7 * 60, PDT: -7 * 60, PST: -8 * 60 }; function calculateOffset(obsOffset, militaryOffset, numOffset) { if (obsOffset) { return obsOffsets[obsOffset]; } else if (militaryOffset) { // the only allowed military tz is Z return 0; } else { var hm = parseInt(numOffset, 10); var m = hm % 100, h = (hm - m) / 100; return h * 60 + m; } } // date and time from ref 2822 format function configFromRFC2822(config) { var match = rfc2822.exec(preprocessRFC2822(config._i)); if (match) { var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]); if (!checkWeekday(match[1], parsedArray, config)) { return; } config._a = parsedArray; config._tzm = calculateOffset(match[8], match[9], match[10]); config._d = createUTCDate.apply(null, config._a); config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); getParsingFlags(config).rfc2822 = true; } else { config._isValid = false; } } // date from iso format or fallback function configFromString(config) { var matched = aspNetJsonRegex.exec(config._i); if (matched !== null) { config._d = new Date(+matched[1]); return; } configFromISO(config); if (config._isValid === false) { delete config._isValid; } else { return; } configFromRFC2822(config); if (config._isValid === false) { delete config._isValid; } else { return; } // Final attempt, use Input Fallback hooks.createFromInputFallback(config); } hooks.createFromInputFallback = deprecate( 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged and will be removed in an upcoming major release. Please refer to ' + 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) { config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); } ); // constant that refers to the ISO standard hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form hooks.RFC_2822 = function () {}; // date from string and format string function configFromStringAndFormat(config) { // TODO: Move this to another part of the creation flow to prevent circular deps if (config._f === hooks.ISO_8601) { configFromISO(config); return; } if (config._f === hooks.RFC_2822) { configFromRFC2822(config); return; } config._a = []; getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC` var string = '' + config._i, i, parsedInput, tokens, token, skipped, stringLength = string.length, totalParsedInputLength = 0; tokens = expandFormat(config._f, config._locale).match(formattingTokens) || []; for (i = 0; i < tokens.length; i++) { token = tokens[i]; parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0]; // console.log('token', token, 'parsedInput', parsedInput, // 'regex', getParseRegexForToken(token, config)); if (parsedInput) { skipped = string.substr(0, string.indexOf(parsedInput)); if (skipped.length > 0) { getParsingFlags(config).unusedInput.push(skipped); } string = string.slice(string.indexOf(parsedInput) + parsedInput.length); totalParsedInputLength += parsedInput.length; } // don't parse if it's not a known token if (formatTokenFunctions[token]) { if (parsedInput) { getParsingFlags(config).empty = false; } else { getParsingFlags(config).unusedTokens.push(token); } addTimeToArrayFromToken(token, parsedInput, config); } else if (config._strict && !parsedInput) { getParsingFlags(config).unusedTokens.push(token); } } // add remaining unparsed input length to the string getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength; if (string.length > 0) { getParsingFlags(config).unusedInput.push(string); } // clear _12h flag if hour is <= 12 if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) { getParsingFlags(config).bigHour = undefined; } getParsingFlags(config).parsedDateParts = config._a.slice(0); getParsingFlags(config).meridiem = config._meridiem; // handle meridiem config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); configFromArray(config); checkOverflow(config); } function meridiemFixWrap (locale, hour, meridiem) { var isPm; if (meridiem == null) { // nothing to do return hour; } if (locale.meridiemHour != null) { return locale.meridiemHour(hour, meridiem); } else if (locale.isPM != null) { // Fallback isPm = locale.isPM(meridiem); if (isPm && hour < 12) { hour += 12; } if (!isPm && hour === 12) { hour = 0; } return hour; } else { // this is not supposed to happen return hour; } } // date from string and array of format strings function configFromStringAndArray(config) { var tempConfig, bestMoment, scoreToBeat, i, currentScore; if (config._f.length === 0) { getParsingFlags(config).invalidFormat = true; config._d = new Date(NaN); return; } for (i = 0; i < config._f.length; i++) { currentScore = 0; tempConfig = copyConfig({}, config); if (config._useUTC != null) { tempConfig._useUTC = config._useUTC; } tempConfig._f = config._f[i]; configFromStringAndFormat(tempConfig); if (!isValid(tempConfig)) { continue; } // if there is any input that was not parsed add a penalty for that format currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; getParsingFlags(tempConfig).score = currentScore; if (scoreToBeat == null || currentScore < scoreToBeat) { scoreToBeat = currentScore; bestMoment = tempConfig; } } extend(config, bestMoment || tempConfig); } function configFromObject(config) { if (config._d) { return; } var i = normalizeObjectUnits(config._i); config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) { return obj && parseInt(obj, 10); }); configFromArray(config); } function createFromConfig (config) { var res = new Moment(checkOverflow(prepareConfig(config))); if (res._nextDay) { // Adding is smart enough around DST res.add(1, 'd'); res._nextDay = undefined; } return res; } function prepareConfig (config) { var input = config._i, format = config._f; config._locale = config._locale || getLocale(config._l); if (input === null || (format === undefined && input === '')) { return createInvalid({nullInput: true}); } if (typeof input === 'string') { config._i = input = config._locale.preparse(input); } if (isMoment(input)) { return new Moment(checkOverflow(input)); } else if (isDate(input)) { config._d = input; } else if (isArray(format)) { configFromStringAndArray(config); } else if (format) { configFromStringAndFormat(config); } else { configFromInput(config); } if (!isValid(config)) { config._d = null; } return config; } function configFromInput(config) { var input = config._i; if (isUndefined(input)) { config._d = new Date(hooks.now()); } else if (isDate(input)) { config._d = new Date(input.valueOf()); } else if (typeof input === 'string') { configFromString(config); } else if (isArray(input)) { config._a = map(input.slice(0), function (obj) { return parseInt(obj, 10); }); configFromArray(config); } else if (isObject(input)) { configFromObject(config); } else if (isNumber(input)) { // from milliseconds config._d = new Date(input); } else { hooks.createFromInputFallback(config); } } function createLocalOrUTC (input, format, locale, strict, isUTC) { var c = {}; if (locale === true || locale === false) { strict = locale; locale = undefined; } if ((isObject(input) && isObjectEmpty(input)) || (isArray(input) && input.length === 0)) { input = undefined; } // object construction must be done this way. // https://github.com/moment/moment/issues/1423 c._isAMomentObject = true; c._useUTC = c._isUTC = isUTC; c._l = locale; c._i = input; c._f = format; c._strict = strict; return createFromConfig(c); } function createLocal (input, format, locale, strict) { return createLocalOrUTC(input, format, locale, strict, false); } var prototypeMin = deprecate( 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () { var other = createLocal.apply(null, arguments); if (this.isValid() && other.isValid()) { return other < this ? this : other; } else { return createInvalid(); } } ); var prototypeMax = deprecate( 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () { var other = createLocal.apply(null, arguments); if (this.isValid() && other.isValid()) { return other > this ? this : other; } else { return createInvalid(); } } ); // Pick a moment m from moments so that m[fn](other) is true for all // other. This relies on the function fn to be transitive. // // moments should either be an array of moment objects or an array, whose // first element is an array of moment objects. function pickBy(fn, moments) { var res, i; if (moments.length === 1 && isArray(moments[0])) { moments = moments[0]; } if (!moments.length) { return createLocal(); } res = moments[0]; for (i = 1; i < moments.length; ++i) { if (!moments[i].isValid() || moments[i][fn](res)) { res = moments[i]; } } return res; } // TODO: Use [].sort instead? function min () { var args = [].slice.call(arguments, 0); return pickBy('isBefore', args); } function max () { var args = [].slice.call(arguments, 0); return pickBy('isAfter', args); } var now = function () { return Date.now ? Date.now() : +(new Date()); }; var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond']; function isDurationValid(m) { for (var key in m) { if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) { return false; } } var unitHasDecimal = false; for (var i = 0; i < ordering.length; ++i) { if (m[ordering[i]]) { if (unitHasDecimal) { return false; // only allow non-integers for smallest unit } if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { unitHasDecimal = true; } } } return true; } function isValid$1() { return this._isValid; } function createInvalid$1() { return createDuration(NaN); } function Duration (duration) { var normalizedInput = normalizeObjectUnits(duration), years = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months = normalizedInput.month || 0, weeks = normalizedInput.week || 0, days = normalizedInput.day || 0, hours = normalizedInput.hour || 0, minutes = normalizedInput.minute || 0, seconds = normalizedInput.second || 0, milliseconds = normalizedInput.millisecond || 0; this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove this._milliseconds = +milliseconds + seconds * 1e3 + // 1000 minutes * 6e4 + // 1000 * 60 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 // Because of dateAddRemove treats 24 hours as different from a // day when working around DST, we need to store them separately this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing // which months you are are talking about, so we have to store // it separately. this._months = +months + quarters * 3 + years * 12; this._data = {}; this._locale = getLocale(); this._bubble(); } function isDuration (obj) { return obj instanceof Duration; } function absRound (number) { if (number < 0) { return Math.round(-1 * number) * -1; } else { return Math.round(number); } } // FORMATTING function offset (token, separator) { addFormatToken(token, 0, 0, function () { var offset = this.utcOffset(); var sign = '+'; if (offset < 0) { offset = -offset; sign = '-'; } return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2); }); } offset('Z', ':'); offset('ZZ', ''); // PARSING addRegexToken('Z', matchShortOffset); addRegexToken('ZZ', matchShortOffset); addParseToken(['Z', 'ZZ'], function (input, array, config) { config._useUTC = true; config._tzm = offsetFromString(matchShortOffset, input); }); // HELPERS // timezone chunker // '+10:00' > ['10', '00'] // '-1530' > ['-15', '30'] var chunkOffset = /([\+\-]|\d\d)/gi; function offsetFromString(matcher, string) { var matches = (string || '').match(matcher); if (matches === null) { return null; } var chunk = matches[matches.length - 1] || []; var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; var minutes = +(parts[1] * 60) + toInt(parts[2]); return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; } // Return a moment from input, that is local/utc/zone equivalent to model. function cloneWithOffset(input, model) { var res, diff; if (model._isUTC) { res = model.clone(); diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api. res._d.setTime(res._d.valueOf() + diff); hooks.updateOffset(res, false); return res; } else { return createLocal(input).local(); } } function getDateOffset (m) { // On Firefox.24 Date#getTimezoneOffset returns a floating point. // https://github.com/moment/moment/pull/1871 return -Math.round(m._d.getTimezoneOffset() / 15) * 15; } // HOOKS // This function will be called whenever a moment is mutated. // It is intended to keep the offset in sync with the timezone. hooks.updateOffset = function () {}; // MOMENTS // keepLocalTime = true means only change the timezone, without // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset // +0200, so we adjust the time as needed, to be valid. // // Keeping the time actually adds/subtracts (one hour) // from the actual represented time. That is why we call updateOffset // a second time. In case it wants us to change the offset again // _changeInProgress == true case, then we have to adjust, because // there is no such time in the given timezone. function getSetOffset (input, keepLocalTime, keepMinutes) { var offset = this._offset || 0, localAdjust; if (!this.isValid()) { return input != null ? this : NaN; } if (input != null) { if (typeof input === 'string') { input = offsetFromString(matchShortOffset, input); if (input === null) { return this; } } else if (Math.abs(input) < 16 && !keepMinutes) { input = input * 60; } if (!this._isUTC && keepLocalTime) { localAdjust = getDateOffset(this); } this._offset = input; this._isUTC = true; if (localAdjust != null) { this.add(localAdjust, 'm'); } if (offset !== input) { if (!keepLocalTime || this._changeInProgress) { addSubtract(this, createDuration(input - offset, 'm'), 1, false); } else if (!this._changeInProgress) { this._changeInProgress = true; hooks.updateOffset(this, true); this._changeInProgress = null; } } return this; } else { return this._isUTC ? offset : getDateOffset(this); } } function getSetZone (input, keepLocalTime) { if (input != null) { if (typeof input !== 'string') { input = -input; } this.utcOffset(input, keepLocalTime); return this; } else { return -this.utcOffset(); } } function setOffsetToUTC (keepLocalTime) { return this.utcOffset(0, keepLocalTime); } function setOffsetToLocal (keepLocalTime) { if (this._isUTC) { this.utcOffset(0, keepLocalTime); this._isUTC = false; if (keepLocalTime) { this.subtract(getDateOffset(this), 'm'); } } return this; } function setOffsetToParsedOffset () { if (this._tzm != null) { this.utcOffset(this._tzm, false, true); } else if (typeof this._i === 'string') { var tZone = offsetFromString(matchOffset, this._i); if (tZone != null) { this.utcOffset(tZone); } else { this.utcOffset(0, true); } } return this; } function hasAlignedHourOffset (input) { if (!this.isValid()) { return false; } input = input ? createLocal(input).utcOffset() : 0; return (this.utcOffset() - input) % 60 === 0; } function isDaylightSavingTime () { return ( this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset() ); } function isDaylightSavingTimeShifted () { if (!isUndefined(this._isDSTShifted)) { return this._isDSTShifted; } var c = {}; copyConfig(c, this); c = prepareConfig(c); if (c._a) { var other = c._isUTC ? createUTC(c._a) : createLocal(c._a); this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0; } else { this._isDSTShifted = false; } return this._isDSTShifted; } function isLocal () { return this.isValid() ? !this._isUTC : false; } function isUtcOffset () { return this.isValid() ? this._isUTC : false; } function isUtc () { return this.isValid() ? this._isUTC && this._offset === 0 : false; } // ASP.NET json date format regex var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/; // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere // and further modified to allow for strings containing both week and day var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; function createDuration (input, key) { var duration = input, // matching against regexp is expensive, do it on demand match = null, sign, ret, diffRes; if (isDuration(input)) { duration = { ms : input._milliseconds, d : input._days, M : input._months }; } else if (isNumber(input)) { duration = {}; if (key) { duration[key] = input; } else { duration.milliseconds = input; } } else if (!!(match = aspNetRegex.exec(input))) { sign = (match[1] === '-') ? -1 : 1; duration = { y : 0, d : toInt(match[DATE]) * sign, h : toInt(match[HOUR]) * sign, m : toInt(match[MINUTE]) * sign, s : toInt(match[SECOND]) * sign, ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match }; } else if (!!(match = isoRegex.exec(input))) { sign = (match[1] === '-') ? -1 : (match[1] === '+') ? 1 : 1; duration = { y : parseIso(match[2], sign), M : parseIso(match[3], sign), w : parseIso(match[4], sign), d : parseIso(match[5], sign), h : parseIso(match[6], sign), m : parseIso(match[7], sign), s : parseIso(match[8], sign) }; } else if (duration == null) {// checks for null or undefined duration = {}; } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) { diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to)); duration = {}; duration.ms = diffRes.milliseconds; duration.M = diffRes.months; } ret = new Duration(duration); if (isDuration(input) && hasOwnProp(input, '_locale')) { ret._locale = input._locale; } return ret; } createDuration.fn = Duration.prototype; createDuration.invalid = createInvalid$1; function parseIso (inp, sign) { // We'd normally use ~~inp for this, but unfortunately it also // converts floats to ints. // inp may be undefined, so careful calling replace on it. var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it return (isNaN(res) ? 0 : res) * sign; } function positiveMomentsDifference(base, other) { var res = {milliseconds: 0, months: 0}; res.months = other.month() - base.month() + (other.year() - base.year()) * 12; if (base.clone().add(res.months, 'M').isAfter(other)) { --res.months; } res.milliseconds = +other - +(base.clone().add(res.months, 'M')); return res; } function momentsDifference(base, other) { var res; if (!(base.isValid() && other.isValid())) { return {milliseconds: 0, months: 0}; } other = cloneWithOffset(other, base); if (base.isBefore(other)) { res = positiveMomentsDifference(base, other); } else { res = positiveMomentsDifference(other, base); res.milliseconds = -res.milliseconds; res.months = -res.months; } return res; } // TODO: remove 'name' arg after deprecation is removed function createAdder(direction, name) { return function (val, period) { var dur, tmp; //invert the arguments, but complain about it if (period !== null && !isNaN(+period)) { deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'); tmp = val; val = period; period = tmp; } val = typeof val === 'string' ? +val : val; dur = createDuration(val, period); addSubtract(this, dur, direction); return this; }; } function addSubtract (mom, duration, isAdding, updateOffset) { var milliseconds = duration._milliseconds, days = absRound(duration._days), months = absRound(duration._months); if (!mom.isValid()) { // No op return; } updateOffset = updateOffset == null ? true : updateOffset; if (months) { setMonth(mom, get(mom, 'Month') + months * isAdding); } if (days) { set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); } if (milliseconds) { mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); } if (updateOffset) { hooks.updateOffset(mom, days || months); } } var add = createAdder(1, 'add'); var subtract = createAdder(-1, 'subtract'); function getCalendarFormat(myMoment, now) { var diff = myMoment.diff(now, 'days', true); return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse'; } function calendar$1 (time, formats) { // We want to compare the start of today, vs this. // Getting start-of-today depends on whether we're local/utc/offset or not. var now = time || createLocal(), sod = cloneWithOffset(now, this).startOf('day'), format = hooks.calendarFormat(this, sod) || 'sameElse'; var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]); return this.format(output || this.localeData().calendar(format, this, createLocal(now))); } function clone () { return new Moment(this); } function isAfter (input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; } units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); if (units === 'millisecond') { return this.valueOf() > localInput.valueOf(); } else { return localInput.valueOf() < this.clone().startOf(units).valueOf(); } } function isBefore (input, units) { var localInput = isMoment(input) ? input : createLocal(input); if (!(this.isValid() && localInput.isValid())) { return false; } units = normalizeUnits(!isUndefined(units) ? units : 'millisecond'); if (units === 'millisecond') { return this.valueOf() < localInput.valueOf(); } else { return this.clone().endOf(units).valueOf() < localInput.valueOf(); } } function isBetween (from, to, units, inclusivity) { inclusivity = inclusivity || '()'; return (inclusivity[0] === '(' ? this.isAfter(from, units) : !this.isBefore(from, units)) && (inclusivity[1] === ')' ? this.isBefore(to, units) : !this.isAfter(to, units)); } function isSame (input, units) { var localInput = isMoment(input) ? input : createLocal(input), inputMs; if (!(this.isValid() && localInput.isValid())) { return false; } units = normalizeUnits(units || 'millisecond'); if (units === 'millisecond') { return this.valueOf() === localInput.valueOf(); } else { inputMs = localInput.valueOf(); return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf(); } } function isSameOrAfter (input, units) { return this.isSame(input, units) || this.isAfter(input,units); } function isSameOrBefore (input, units) { return this.isSame(input, units) || this.isBefore(input,units); } function diff (input, units, asFloat) { var that, zoneDelta, delta, output; if (!this.isValid()) { return NaN; } that = cloneWithOffset(input, this); if (!that.isValid()) { return NaN; } zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; units = normalizeUnits(units); switch (units) { case 'year': output = monthDiff(this, that) / 12; break; case 'month': output = monthDiff(this, that); break; case 'quarter': output = monthDiff(this, that) / 3; break; case 'second': output = (this - that) / 1e3; break; // 1000 case 'minute': output = (this - that) / 6e4; break; // 1000 * 60 case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60 case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst default: output = this - that; } return asFloat ? output : absFloor(output); } function monthDiff (a, b) { // difference in months var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()), // b is in (anchor - 1 month, anchor + 1 month) anchor = a.clone().add(wholeMonthDiff, 'months'), anchor2, adjust; if (b - anchor < 0) { anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month adjust = (b - anchor) / (anchor - anchor2); } else { anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month adjust = (b - anchor) / (anchor2 - anchor); } //check for negative zero, return zero if negative zero return -(wholeMonthDiff + adjust) || 0; } hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; function toString () { return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); } function toISOString(keepOffset) { if (!this.isValid()) { return null; } var utc = keepOffset !== true; var m = utc ? this.clone().utc() : this; if (m.year() < 0 || m.year() > 9999) { return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'); } if (isFunction(Date.prototype.toISOString)) { // native implementation is ~50x faster, use it when we can if (utc) { return this.toDate().toISOString(); } else { return new Date(this._d.valueOf()).toISOString().replace('Z', formatMoment(m, 'Z')); } } return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'); } /** * Return a human readable representation of a moment that can * also be evaluated to get a new moment which is the same * * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects */ function inspect () { if (!this.isValid()) { return 'moment.invalid(/* ' + this._i + ' */)'; } var func = 'moment'; var zone = ''; if (!this.isLocal()) { func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; zone = 'Z'; } var prefix = '[' + func + '("]'; var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY'; var datetime = '-MM-DD[T]HH:mm:ss.SSS'; var suffix = zone + '[")]'; return this.format(prefix + year + datetime + suffix); } function format (inputString) { if (!inputString) { inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat; } var output = formatMoment(this, inputString); return this.localeData().postformat(output); } function from (time, withoutSuffix) { if (this.isValid() && ((isMoment(time) && time.isValid()) || createLocal(time).isValid())) { return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } function fromNow (withoutSuffix) { return this.from(createLocal(), withoutSuffix); } function to (time, withoutSuffix) { if (this.isValid() && ((isMoment(time) && time.isValid()) || createLocal(time).isValid())) { return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix); } else { return this.localeData().invalidDate(); } } function toNow (withoutSuffix) { return this.to(createLocal(), withoutSuffix); } // If passed a locale key, it will set the locale for this // instance. Otherwise, it will return the locale configuration // variables for this instance. function locale (key) { var newLocaleData; if (key === undefined) { return this._locale._abbr; } else { newLocaleData = getLocale(key); if (newLocaleData != null) { this._locale = newLocaleData; } return this; } } var lang = deprecate( 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) { if (key === undefined) { return this.localeData(); } else { return this.locale(key); } } ); function localeData () { return this._locale; } function startOf (units) { units = normalizeUnits(units); // the following switch intentionally omits break keywords // to utilize falling through the cases. switch (units) { case 'year': this.month(0); /* falls through */ case 'quarter': case 'month': this.date(1); /* falls through */ case 'week': case 'isoWeek': case 'day': case 'date': this.hours(0); /* falls through */ case 'hour': this.minutes(0); /* falls through */ case 'minute': this.seconds(0); /* falls through */ case 'second': this.milliseconds(0); } // weeks are a special case if (units === 'week') { this.weekday(0); } if (units === 'isoWeek') { this.isoWeekday(1); } // quarters are also special if (units === 'quarter') { this.month(Math.floor(this.month() / 3) * 3); } return this; } function endOf (units) { units = normalizeUnits(units); if (units === undefined || units === 'millisecond') { return this; } // 'date' is an alias for 'day', so it should be considered as such. if (units === 'date') { units = 'day'; } return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms'); } function valueOf () { return this._d.valueOf() - ((this._offset || 0) * 60000); } function unix () { return Math.floor(this.valueOf() / 1000); } function toDate () { return new Date(this.valueOf()); } function toArray () { var m = this; return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]; } function toObject () { var m = this; return { years: m.year(), months: m.month(), date: m.date(), hours: m.hours(), minutes: m.minutes(), seconds: m.seconds(), milliseconds: m.milliseconds() }; } function toJSON () { // new Date(NaN).toJSON() === null return this.isValid() ? this.toISOString() : null; } function isValid$2 () { return isValid(this); } function parsingFlags () { return extend({}, getParsingFlags(this)); } function invalidAt () { return getParsingFlags(this).overflow; } function creationData() { return { input: this._i, format: this._f, locale: this._locale, isUTC: this._isUTC, strict: this._strict }; } // FORMATTING addFormatToken(0, ['gg', 2], 0, function () { return this.weekYear() % 100; }); addFormatToken(0, ['GG', 2], 0, function () { return this.isoWeekYear() % 100; }); function addWeekYearFormatToken (token, getter) { addFormatToken(0, [token, token.length], 0, getter); } addWeekYearFormatToken('gggg', 'weekYear'); addWeekYearFormatToken('ggggg', 'weekYear'); addWeekYearFormatToken('GGGG', 'isoWeekYear'); addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES addUnitAlias('weekYear', 'gg'); addUnitAlias('isoWeekYear', 'GG'); // PRIORITY addUnitPriority('weekYear', 1); addUnitPriority('isoWeekYear', 1); // PARSING addRegexToken('G', matchSigned); addRegexToken('g', matchSigned); addRegexToken('GG', match1to2, match2); addRegexToken('gg', match1to2, match2); addRegexToken('GGGG', match1to4, match4); addRegexToken('gggg', match1to4, match4); addRegexToken('GGGGG', match1to6, match6); addRegexToken('ggggg', match1to6, match6); addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) { week[token.substr(0, 2)] = toInt(input); }); addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { week[token] = hooks.parseTwoDigitYear(input); }); // MOMENTS function getSetWeekYear (input) { return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy); } function getSetISOWeekYear (input) { return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4); } function getISOWeeksInYear () { return weeksInYear(this.year(), 1, 4); } function getWeeksInYear () { var weekInfo = this.localeData()._week; return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); } function getSetWeekYearHelper(input, week, weekday, dow, doy) { var weeksTarget; if (input == null) { return weekOfYear(this, dow, doy).year; } else { weeksTarget = weeksInYear(input, dow, doy); if (week > weeksTarget) { week = weeksTarget; } return setWeekAll.call(this, input, week, weekday, dow, doy); } } function setWeekAll(weekYear, week, weekday, dow, doy) { var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); this.year(date.getUTCFullYear()); this.month(date.getUTCMonth()); this.date(date.getUTCDate()); return this; } // FORMATTING addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES addUnitAlias('quarter', 'Q'); // PRIORITY addUnitPriority('quarter', 7); // PARSING addRegexToken('Q', match1); addParseToken('Q', function (input, array) { array[MONTH] = (toInt(input) - 1) * 3; }); // MOMENTS function getSetQuarter (input) { return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3); } // FORMATTING addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES addUnitAlias('date', 'D'); // PRIOROITY addUnitPriority('date', 9); // PARSING addRegexToken('D', match1to2); addRegexToken('DD', match1to2, match2); addRegexToken('Do', function (isStrict, locale) { // TODO: Remove "ordinalParse" fallback in next major release. return isStrict ? (locale._dayOfMonthOrdinalParse || locale._ordinalParse) : locale._dayOfMonthOrdinalParseLenient; }); addParseToken(['D', 'DD'], DATE); addParseToken('Do', function (input, array) { array[DATE] = toInt(input.match(match1to2)[0]); }); // MOMENTS var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES addUnitAlias('dayOfYear', 'DDD'); // PRIORITY addUnitPriority('dayOfYear', 4); // PARSING addRegexToken('DDD', match1to3); addRegexToken('DDDD', match3); addParseToken(['DDD', 'DDDD'], function (input, array, config) { config._dayOfYear = toInt(input); }); // HELPERS // MOMENTS function getSetDayOfYear (input) { var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1; return input == null ? dayOfYear : this.add((input - dayOfYear), 'd'); } // FORMATTING addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES addUnitAlias('minute', 'm'); // PRIORITY addUnitPriority('minute', 14); // PARSING addRegexToken('m', match1to2); addRegexToken('mm', match1to2, match2); addParseToken(['m', 'mm'], MINUTE); // MOMENTS var getSetMinute = makeGetSet('Minutes', false); // FORMATTING addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES addUnitAlias('second', 's'); // PRIORITY addUnitPriority('second', 15); // PARSING addRegexToken('s', match1to2); addRegexToken('ss', match1to2, match2); addParseToken(['s', 'ss'], SECOND); // MOMENTS var getSetSecond = makeGetSet('Seconds', false); // FORMATTING addFormatToken('S', 0, 0, function () { return ~~(this.millisecond() / 100); }); addFormatToken(0, ['SS', 2], 0, function () { return ~~(this.millisecond() / 10); }); addFormatToken(0, ['SSS', 3], 0, 'millisecond'); addFormatToken(0, ['SSSS', 4], 0, function () { return this.millisecond() * 10; }); addFormatToken(0, ['SSSSS', 5], 0, function () { return this.millisecond() * 100; }); addFormatToken(0, ['SSSSSS', 6], 0, function () { return this.millisecond() * 1000; }); addFormatToken(0, ['SSSSSSS', 7], 0, function () { return this.millisecond() * 10000; }); addFormatToken(0, ['SSSSSSSS', 8], 0, function () { return this.millisecond() * 100000; }); addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { return this.millisecond() * 1000000; }); // ALIASES addUnitAlias('millisecond', 'ms'); // PRIORITY addUnitPriority('millisecond', 16); // PARSING addRegexToken('S', match1to3, match1); addRegexToken('SS', match1to3, match2); addRegexToken('SSS', match1to3, match3); var token; for (token = 'SSSS'; token.length <= 9; token += 'S') { addRegexToken(token, matchUnsigned); } function parseMs(input, array) { array[MILLISECOND] = toInt(('0.' + input) * 1000); } for (token = 'S'; token.length <= 9; token += 'S') { addParseToken(token, parseMs); } // MOMENTS var getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING addFormatToken('z', 0, 0, 'zoneAbbr'); addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS function getZoneAbbr () { return this._isUTC ? 'UTC' : ''; } function getZoneName () { return this._isUTC ? 'Coordinated Universal Time' : ''; } var proto = Moment.prototype; proto.add = add; proto.calendar = calendar$1; proto.clone = clone; proto.diff = diff; proto.endOf = endOf; proto.format = format; proto.from = from; proto.fromNow = fromNow; proto.to = to; proto.toNow = toNow; proto.get = stringGet; proto.invalidAt = invalidAt; proto.isAfter = isAfter; proto.isBefore = isBefore; proto.isBetween = isBetween; proto.isSame = isSame; proto.isSameOrAfter = isSameOrAfter; proto.isSameOrBefore = isSameOrBefore; proto.isValid = isValid$2; proto.lang = lang; proto.locale = locale; proto.localeData = localeData; proto.max = prototypeMax; proto.min = prototypeMin; proto.parsingFlags = parsingFlags; proto.set = stringSet; proto.startOf = startOf; proto.subtract = subtract; proto.toArray = toArray; proto.toObject = toObject; proto.toDate = toDate; proto.toISOString = toISOString; proto.inspect = inspect; proto.toJSON = toJSON; proto.toString = toString; proto.unix = unix; proto.valueOf = valueOf; proto.creationData = creationData; // Year proto.year = getSetYear; proto.isLeapYear = getIsLeapYear; // Week Year proto.weekYear = getSetWeekYear; proto.isoWeekYear = getSetISOWeekYear; // Quarter proto.quarter = proto.quarters = getSetQuarter; // Month proto.month = getSetMonth; proto.daysInMonth = getDaysInMonth; // Week proto.week = proto.weeks = getSetWeek; proto.isoWeek = proto.isoWeeks = getSetISOWeek; proto.weeksInYear = getWeeksInYear; proto.isoWeeksInYear = getISOWeeksInYear; // Day proto.date = getSetDayOfMonth; proto.day = proto.days = getSetDayOfWeek; proto.weekday = getSetLocaleDayOfWeek; proto.isoWeekday = getSetISODayOfWeek; proto.dayOfYear = getSetDayOfYear; // Hour proto.hour = proto.hours = getSetHour; // Minute proto.minute = proto.minutes = getSetMinute; // Second proto.second = proto.seconds = getSetSecond; // Millisecond proto.millisecond = proto.milliseconds = getSetMillisecond; // Offset proto.utcOffset = getSetOffset; proto.utc = setOffsetToUTC; proto.local = setOffsetToLocal; proto.parseZone = setOffsetToParsedOffset; proto.hasAlignedHourOffset = hasAlignedHourOffset; proto.isDST = isDaylightSavingTime; proto.isLocal = isLocal; proto.isUtcOffset = isUtcOffset; proto.isUtc = isUtc; proto.isUTC = isUtc; // Timezone proto.zoneAbbr = getZoneAbbr; proto.zoneName = getZoneName; // Deprecations proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth); proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth); proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear); proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone); proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted); function createUnix (input) { return createLocal(input * 1000); } function createInZone () { return createLocal.apply(null, arguments).parseZone(); } function preParsePostFormat (string) { return string; } var proto$1 = Locale.prototype; proto$1.calendar = calendar; proto$1.longDateFormat = longDateFormat; proto$1.invalidDate = invalidDate; proto$1.ordinal = ordinal; proto$1.preparse = preParsePostFormat; proto$1.postformat = preParsePostFormat; proto$1.relativeTime = relativeTime; proto$1.pastFuture = pastFuture; proto$1.set = set; // Month proto$1.months = localeMonths; proto$1.monthsShort = localeMonthsShort; proto$1.monthsParse = localeMonthsParse; proto$1.monthsRegex = monthsRegex; proto$1.monthsShortRegex = monthsShortRegex; // Week proto$1.week = localeWeek; proto$1.firstDayOfYear = localeFirstDayOfYear; proto$1.firstDayOfWeek = localeFirstDayOfWeek; // Day of Week proto$1.weekdays = localeWeekdays; proto$1.weekdaysMin = localeWeekdaysMin; proto$1.weekdaysShort = localeWeekdaysShort; proto$1.weekdaysParse = localeWeekdaysParse; proto$1.weekdaysRegex = weekdaysRegex; proto$1.weekdaysShortRegex = weekdaysShortRegex; proto$1.weekdaysMinRegex = weekdaysMinRegex; // Hours proto$1.isPM = localeIsPM; proto$1.meridiem = localeMeridiem; function get$1 (format, index, field, setter) { var locale = getLocale(); var utc = createUTC().set(setter, index); return locale[field](utc, format); } function listMonthsImpl (format, index, field) { if (isNumber(format)) { index = format; format = undefined; } format = format || ''; if (index != null) { return get$1(format, index, field, 'month'); } var i; var out = []; for (i = 0; i < 12; i++) { out[i] = get$1(format, i, field, 'month'); } return out; } // () // (5) // (fmt, 5) // (fmt) // (true) // (true, 5) // (true, fmt, 5) // (true, fmt) function listWeekdaysImpl (localeSorted, format, index, field) { if (typeof localeSorted === 'boolean') { if (isNumber(format)) { index = format; format = undefined; } format = format || ''; } else { format = localeSorted; index = format; localeSorted = false; if (isNumber(format)) { index = format; format = undefined; } format = format || ''; } var locale = getLocale(), shift = localeSorted ? locale._week.dow : 0; if (index != null) { return get$1(format, (index + shift) % 7, field, 'day'); } var i; var out = []; for (i = 0; i < 7; i++) { out[i] = get$1(format, (i + shift) % 7, field, 'day'); } return out; } function listMonths (format, index) { return listMonthsImpl(format, index, 'months'); } function listMonthsShort (format, index) { return listMonthsImpl(format, index, 'monthsShort'); } function listWeekdays (localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); } function listWeekdaysShort (localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); } function listWeekdaysMin (localeSorted, format, index) { return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); } getSetGlobalLocale('en', { dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, ordinal : function (number) { var b = number % 10, output = (toInt(number % 100 / 10) === 1) ? 'th' : (b === 1) ? 'st' : (b === 2) ? 'nd' : (b === 3) ? 'rd' : 'th'; return number + output; } }); // Side effect imports hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale); hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale); var mathAbs = Math.abs; function abs () { var data = this._data; this._milliseconds = mathAbs(this._milliseconds); this._days = mathAbs(this._days); this._months = mathAbs(this._months); data.milliseconds = mathAbs(data.milliseconds); data.seconds = mathAbs(data.seconds); data.minutes = mathAbs(data.minutes); data.hours = mathAbs(data.hours); data.months = mathAbs(data.months); data.years = mathAbs(data.years); return this; } function addSubtract$1 (duration, input, value, direction) { var other = createDuration(input, value); duration._milliseconds += direction * other._milliseconds; duration._days += direction * other._days; duration._months += direction * other._months; return duration._bubble(); } // supports only 2.0-style add(1, 's') or add(duration) function add$1 (input, value) { return addSubtract$1(this, input, value, 1); } // supports only 2.0-style subtract(1, 's') or subtract(duration) function subtract$1 (input, value) { return addSubtract$1(this, input, value, -1); } function absCeil (number) { if (number < 0) { return Math.floor(number); } else { return Math.ceil(number); } } function bubble () { var milliseconds = this._milliseconds; var days = this._days; var months = this._months; var data = this._data; var seconds, minutes, hours, years, monthsFromDays; // if we have a mix of positive and negative values, bubble down first // check: https://github.com/moment/moment/issues/2166 if (!((milliseconds >= 0 && days >= 0 && months >= 0) || (milliseconds <= 0 && days <= 0 && months <= 0))) { milliseconds += absCeil(monthsToDays(months) + days) * 864e5; days = 0; months = 0; } // The following code bubbles up values, see the tests for // examples of what that means. data.milliseconds = milliseconds % 1000; seconds = absFloor(milliseconds / 1000); data.seconds = seconds % 60; minutes = absFloor(seconds / 60); data.minutes = minutes % 60; hours = absFloor(minutes / 60); data.hours = hours % 24; days += absFloor(hours / 24); // convert days to months monthsFromDays = absFloor(daysToMonths(days)); months += monthsFromDays; days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year years = absFloor(months / 12); months %= 12; data.days = days; data.months = months; data.years = years; return this; } function daysToMonths (days) { // 400 years have 146097 days (taking into account leap year rules) // 400 years have 12 months === 4800 return days * 4800 / 146097; } function monthsToDays (months) { // the reverse of daysToMonths return months * 146097 / 4800; } function as (units) { if (!this.isValid()) { return NaN; } var days; var months; var milliseconds = this._milliseconds; units = normalizeUnits(units); if (units === 'month' || units === 'year') { days = this._days + milliseconds / 864e5; months = this._months + daysToMonths(days); return units === 'month' ? months : months / 12; } else { // handle milliseconds separately because of floating point math errors (issue #1867) days = this._days + Math.round(monthsToDays(this._months)); switch (units) { case 'week' : return days / 7 + milliseconds / 6048e5; case 'day' : return days + milliseconds / 864e5; case 'hour' : return days * 24 + milliseconds / 36e5; case 'minute' : return days * 1440 + milliseconds / 6e4; case 'second' : return days * 86400 + milliseconds / 1000; // Math.floor prevents floating point math errors here case 'millisecond': return Math.floor(days * 864e5) + milliseconds; default: throw new Error('Unknown unit ' + units); } } } // TODO: Use this.as('ms')? function valueOf$1 () { if (!this.isValid()) { return NaN; } return ( this._milliseconds + this._days * 864e5 + (this._months % 12) * 2592e6 + toInt(this._months / 12) * 31536e6 ); } function makeAs (alias) { return function () { return this.as(alias); }; } var asMilliseconds = makeAs('ms'); var asSeconds = makeAs('s'); var asMinutes = makeAs('m'); var asHours = makeAs('h'); var asDays = makeAs('d'); var asWeeks = makeAs('w'); var asMonths = makeAs('M'); var asYears = makeAs('y'); function clone$1 () { return createDuration(this); } function get$2 (units) { units = normalizeUnits(units); return this.isValid() ? this[units + 's']() : NaN; } function makeGetter(name) { return function () { return this.isValid() ? this._data[name] : NaN; }; } var milliseconds = makeGetter('milliseconds'); var seconds = makeGetter('seconds'); var minutes = makeGetter('minutes'); var hours = makeGetter('hours'); var days = makeGetter('days'); var months = makeGetter('months'); var years = makeGetter('years'); function weeks () { return absFloor(this.days() / 7); } var round = Math.round; var thresholds = { ss: 44, // a few seconds to seconds s : 45, // seconds to minute m : 45, // minutes to hour h : 22, // hours to day d : 26, // days to month M : 11 // months to year }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); } function relativeTime$1 (posNegDuration, withoutSuffix, locale) { var duration = createDuration(posNegDuration).abs(); var seconds = round(duration.as('s')); var minutes = round(duration.as('m')); var hours = round(duration.as('h')); var days = round(duration.as('d')); var months = round(duration.as('M')); var years = round(duration.as('y')); var a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days] || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years]; a[2] = withoutSuffix; a[3] = +posNegDuration > 0; a[4] = locale; return substituteTimeAgo.apply(null, a); } // This function allows you to set the rounding function for relative time strings function getSetRelativeTimeRounding (roundingFunction) { if (roundingFunction === undefined) { return round; } if (typeof(roundingFunction) === 'function') { round = roundingFunction; return true; } return false; } // This function allows you to set a threshold for relative time strings function getSetRelativeTimeThreshold (threshold, limit) { if (thresholds[threshold] === undefined) { return false; } if (limit === undefined) { return thresholds[threshold]; } thresholds[threshold] = limit; if (threshold === 's') { thresholds.ss = limit - 1; } return true; } function humanize (withSuffix) { if (!this.isValid()) { return this.localeData().invalidDate(); } var locale = this.localeData(); var output = relativeTime$1(this, !withSuffix, locale); if (withSuffix) { output = locale.pastFuture(+this, output); } return locale.postformat(output); } var abs$1 = Math.abs; function sign(x) { return ((x > 0) - (x < 0)) || +x; } function toISOString$1() { // for ISO strings we do not use the normal bubbling rules: // * milliseconds bubble up until they become hours // * days do not bubble at all // * months bubble up until they become years // This is because there is no context-free conversion between hours and days // (think of clock changes) // and also not between days and months (28-31 days per month) if (!this.isValid()) { return this.localeData().invalidDate(); } var seconds = abs$1(this._milliseconds) / 1000; var days = abs$1(this._days); var months = abs$1(this._months); var minutes, hours, years; // 3600 seconds -> 60 minutes -> 1 hour minutes = absFloor(seconds / 60); hours = absFloor(minutes / 60); seconds %= 60; minutes %= 60; // 12 months -> 1 year years = absFloor(months / 12); months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js var Y = years; var M = months; var D = days; var h = hours; var m = minutes; var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; var total = this.asSeconds(); if (!total) { // this is the same as C#'s (Noda) and python (isodate)... // but not other JS (goog.date) return 'P0D'; } var totalSign = total < 0 ? '-' : ''; var ymSign = sign(this._months) !== sign(total) ? '-' : ''; var daysSign = sign(this._days) !== sign(total) ? '-' : ''; var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; return totalSign + 'P' + (Y ? ymSign + Y + 'Y' : '') + (M ? ymSign + M + 'M' : '') + (D ? daysSign + D + 'D' : '') + ((h || m || s) ? 'T' : '') + (h ? hmsSign + h + 'H' : '') + (m ? hmsSign + m + 'M' : '') + (s ? hmsSign + s + 'S' : ''); } var proto$2 = Duration.prototype; proto$2.isValid = isValid$1; proto$2.abs = abs; proto$2.add = add$1; proto$2.subtract = subtract$1; proto$2.as = as; proto$2.asMilliseconds = asMilliseconds; proto$2.asSeconds = asSeconds; proto$2.asMinutes = asMinutes; proto$2.asHours = asHours; proto$2.asDays = asDays; proto$2.asWeeks = asWeeks; proto$2.asMonths = asMonths; proto$2.asYears = asYears; proto$2.valueOf = valueOf$1; proto$2._bubble = bubble; proto$2.clone = clone$1; proto$2.get = get$2; proto$2.milliseconds = milliseconds; proto$2.seconds = seconds; proto$2.minutes = minutes; proto$2.hours = hours; proto$2.days = days; proto$2.weeks = weeks; proto$2.months = months; proto$2.years = years; proto$2.humanize = humanize; proto$2.toISOString = toISOString$1; proto$2.toString = toISOString$1; proto$2.toJSON = toISOString$1; proto$2.locale = locale; proto$2.localeData = localeData; // Deprecations proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1); proto$2.lang = lang; // Side effect imports // FORMATTING addFormatToken('X', 0, 0, 'unix'); addFormatToken('x', 0, 0, 'valueOf'); // PARSING addRegexToken('x', matchSigned); addRegexToken('X', matchTimestamp); addParseToken('X', function (input, array, config) { config._d = new Date(parseFloat(input, 10) * 1000); }); addParseToken('x', function (input, array, config) { config._d = new Date(toInt(input)); }); // Side effect imports hooks.version = '2.20.1'; setHookCallback(createLocal); hooks.fn = proto; hooks.min = min; hooks.max = max; hooks.now = now; hooks.utc = createUTC; hooks.unix = createUnix; hooks.months = listMonths; hooks.isDate = isDate; hooks.locale = getSetGlobalLocale; hooks.invalid = createInvalid; hooks.duration = createDuration; hooks.isMoment = isMoment; hooks.weekdays = listWeekdays; hooks.parseZone = createInZone; hooks.localeData = getLocale; hooks.isDuration = isDuration; hooks.monthsShort = listMonthsShort; hooks.weekdaysMin = listWeekdaysMin; hooks.defineLocale = defineLocale; hooks.updateLocale = updateLocale; hooks.locales = listLocales; hooks.weekdaysShort = listWeekdaysShort; hooks.normalizeUnits = normalizeUnits; hooks.relativeTimeRounding = getSetRelativeTimeRounding; hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; hooks.calendarFormat = getCalendarFormat; hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats hooks.HTML5_FMT = { DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // DATE: 'YYYY-MM-DD', // TIME: 'HH:mm', // TIME_SECONDS: 'HH:mm:ss', // TIME_MS: 'HH:mm:ss.SSS', // WEEK: 'YYYY-[W]WW', // MONTH: 'YYYY-MM' // }; return hooks; }))); youtube-embed-plus/scripts/chartjs/chart.js000064400001412207151435171370015075 0ustar00/*! * Chart.js * http://chartjs.org/ * Version: 2.7.1 * * Copyright 2017 Nick Downie * Released under the MIT license * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md */ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o lum2) { return (lum1 + 0.05) / (lum2 + 0.05); } return (lum2 + 0.05) / (lum1 + 0.05); }, level: function (color2) { var contrastRatio = this.contrast(color2); if (contrastRatio >= 7.1) { return 'AAA'; } return (contrastRatio >= 4.5) ? 'AA' : ''; }, dark: function () { // YIQ equation from http://24ways.org/2010/calculating-color-contrast var rgb = this.values.rgb; var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; return yiq < 128; }, light: function () { return !this.dark(); }, negate: function () { var rgb = []; for (var i = 0; i < 3; i++) { rgb[i] = 255 - this.values.rgb[i]; } this.setValues('rgb', rgb); return this; }, lighten: function (ratio) { var hsl = this.values.hsl; hsl[2] += hsl[2] * ratio; this.setValues('hsl', hsl); return this; }, darken: function (ratio) { var hsl = this.values.hsl; hsl[2] -= hsl[2] * ratio; this.setValues('hsl', hsl); return this; }, saturate: function (ratio) { var hsl = this.values.hsl; hsl[1] += hsl[1] * ratio; this.setValues('hsl', hsl); return this; }, desaturate: function (ratio) { var hsl = this.values.hsl; hsl[1] -= hsl[1] * ratio; this.setValues('hsl', hsl); return this; }, whiten: function (ratio) { var hwb = this.values.hwb; hwb[1] += hwb[1] * ratio; this.setValues('hwb', hwb); return this; }, blacken: function (ratio) { var hwb = this.values.hwb; hwb[2] += hwb[2] * ratio; this.setValues('hwb', hwb); return this; }, greyscale: function () { var rgb = this.values.rgb; // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; this.setValues('rgb', [val, val, val]); return this; }, clearer: function (ratio) { var alpha = this.values.alpha; this.setValues('alpha', alpha - (alpha * ratio)); return this; }, opaquer: function (ratio) { var alpha = this.values.alpha; this.setValues('alpha', alpha + (alpha * ratio)); return this; }, rotate: function (degrees) { var hsl = this.values.hsl; var hue = (hsl[0] + degrees) % 360; hsl[0] = hue < 0 ? 360 + hue : hue; this.setValues('hsl', hsl); return this; }, /** * Ported from sass implementation in C * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 */ mix: function (mixinColor, weight) { var color1 = this; var color2 = mixinColor; var p = weight === undefined ? 0.5 : weight; var w = 2 * p - 1; var a = color1.alpha() - color2.alpha(); var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; var w2 = 1 - w1; return this .rgb( w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue() ) .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); }, toJSON: function () { return this.rgb(); }, clone: function () { // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, // making the final build way to big to embed in Chart.js. So let's do it manually, // assuming that values to clone are 1 dimension arrays containing only numbers, // except 'alpha' which is a number. var result = new Color(); var source = this.values; var target = result.values; var value, type; for (var prop in source) { if (source.hasOwnProperty(prop)) { value = source[prop]; type = ({}).toString.call(value); if (type === '[object Array]') { target[prop] = value.slice(0); } else if (type === '[object Number]') { target[prop] = value; } else { console.error('unexpected color value:', value); } } } return result; } }; Color.prototype.spaces = { rgb: ['red', 'green', 'blue'], hsl: ['hue', 'saturation', 'lightness'], hsv: ['hue', 'saturation', 'value'], hwb: ['hue', 'whiteness', 'blackness'], cmyk: ['cyan', 'magenta', 'yellow', 'black'] }; Color.prototype.maxes = { rgb: [255, 255, 255], hsl: [360, 100, 100], hsv: [360, 100, 100], hwb: [360, 100, 100], cmyk: [100, 100, 100, 100] }; Color.prototype.getValues = function (space) { var values = this.values; var vals = {}; for (var i = 0; i < space.length; i++) { vals[space.charAt(i)] = values[space][i]; } if (values.alpha !== 1) { vals.a = values.alpha; } // {r: 255, g: 255, b: 255, a: 0.4} return vals; }; Color.prototype.setValues = function (space, vals) { var values = this.values; var spaces = this.spaces; var maxes = this.maxes; var alpha = 1; var i; this.valid = true; if (space === 'alpha') { alpha = vals; } else if (vals.length) { // [10, 10, 10] values[space] = vals.slice(0, space.length); alpha = vals[space.length]; } else if (vals[space.charAt(0)] !== undefined) { // {r: 10, g: 10, b: 10} for (i = 0; i < space.length; i++) { values[space][i] = vals[space.charAt(i)]; } alpha = vals.a; } else if (vals[spaces[space][0]] !== undefined) { // {red: 10, green: 10, blue: 10} var chans = spaces[space]; for (i = 0; i < space.length; i++) { values[space][i] = vals[chans[i]]; } alpha = vals.alpha; } values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); if (space === 'alpha') { return false; } var capped; // cap values of the space prior converting all values for (i = 0; i < space.length; i++) { capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); values[space][i] = Math.round(capped); } // convert to all the other color spaces for (var sname in spaces) { if (sname !== space) { values[sname] = convert[space][sname](values[space]); } } return true; }; Color.prototype.setSpace = function (space, args) { var vals = args[0]; if (vals === undefined) { // color.rgb() return this.getValues(space); } // color.rgb(10, 10, 10) if (typeof vals === 'number') { vals = Array.prototype.slice.call(args); } this.setValues(space, vals); return this; }; Color.prototype.setChannel = function (space, index, val) { var svalues = this.values[space]; if (val === undefined) { // color.red() return svalues[index]; } else if (val === svalues[index]) { // color.red(color.red()) return this; } // color.red(100) svalues[index] = val; this.setValues(space, svalues); return this; }; //if (typeof window !== 'undefined') { // window.Color = Color; //} if (typeof window !== 'undefined') { window.Chart = window.Chart || {}; window.Chart.Color = Color; if (typeof window.Color === 'undefined') { // maintain backward compatibility ONLY if no other Color lib has been defined window.Color = Color; } } module.exports = Color; },{"2":2,"5":5}],4:[function(require,module,exports){ /* MIT license */ module.exports = { rgb2hsl: rgb2hsl, rgb2hsv: rgb2hsv, rgb2hwb: rgb2hwb, rgb2cmyk: rgb2cmyk, rgb2keyword: rgb2keyword, rgb2xyz: rgb2xyz, rgb2lab: rgb2lab, rgb2lch: rgb2lch, hsl2rgb: hsl2rgb, hsl2hsv: hsl2hsv, hsl2hwb: hsl2hwb, hsl2cmyk: hsl2cmyk, hsl2keyword: hsl2keyword, hsv2rgb: hsv2rgb, hsv2hsl: hsv2hsl, hsv2hwb: hsv2hwb, hsv2cmyk: hsv2cmyk, hsv2keyword: hsv2keyword, hwb2rgb: hwb2rgb, hwb2hsl: hwb2hsl, hwb2hsv: hwb2hsv, hwb2cmyk: hwb2cmyk, hwb2keyword: hwb2keyword, cmyk2rgb: cmyk2rgb, cmyk2hsl: cmyk2hsl, cmyk2hsv: cmyk2hsv, cmyk2hwb: cmyk2hwb, cmyk2keyword: cmyk2keyword, keyword2rgb: keyword2rgb, keyword2hsl: keyword2hsl, keyword2hsv: keyword2hsv, keyword2hwb: keyword2hwb, keyword2cmyk: keyword2cmyk, keyword2lab: keyword2lab, keyword2xyz: keyword2xyz, xyz2rgb: xyz2rgb, xyz2lab: xyz2lab, xyz2lch: xyz2lch, lab2xyz: lab2xyz, lab2rgb: lab2rgb, lab2lch: lab2lch, lch2lab: lch2lab, lch2xyz: lch2xyz, lch2rgb: lch2rgb } function rgb2hsl(rgb) { var r = rgb[0]/255, g = rgb[1]/255, b = rgb[2]/255, min = Math.min(r, g, b), max = Math.max(r, g, b), delta = max - min, h, s, l; if (max == min) h = 0; else if (r == max) h = (g - b) / delta; else if (g == max) h = 2 + (b - r) / delta; else if (b == max) h = 4 + (r - g)/ delta; h = Math.min(h * 60, 360); if (h < 0) h += 360; l = (min + max) / 2; if (max == min) s = 0; else if (l <= 0.5) s = delta / (max + min); else s = delta / (2 - max - min); return [h, s * 100, l * 100]; } function rgb2hsv(rgb) { var r = rgb[0], g = rgb[1], b = rgb[2], min = Math.min(r, g, b), max = Math.max(r, g, b), delta = max - min, h, s, v; if (max == 0) s = 0; else s = (delta/max * 1000)/10; if (max == min) h = 0; else if (r == max) h = (g - b) / delta; else if (g == max) h = 2 + (b - r) / delta; else if (b == max) h = 4 + (r - g) / delta; h = Math.min(h * 60, 360); if (h < 0) h += 360; v = ((max / 255) * 1000) / 10; return [h, s, v]; } function rgb2hwb(rgb) { var r = rgb[0], g = rgb[1], b = rgb[2], h = rgb2hsl(rgb)[0], w = 1/255 * Math.min(r, Math.min(g, b)), b = 1 - 1/255 * Math.max(r, Math.max(g, b)); return [h, w * 100, b * 100]; } function rgb2cmyk(rgb) { var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255, c, m, y, k; k = Math.min(1 - r, 1 - g, 1 - b); c = (1 - r - k) / (1 - k) || 0; m = (1 - g - k) / (1 - k) || 0; y = (1 - b - k) / (1 - k) || 0; return [c * 100, m * 100, y * 100, k * 100]; } function rgb2keyword(rgb) { return reverseKeywords[JSON.stringify(rgb)]; } function rgb2xyz(rgb) { var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255; // assume sRGB r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); return [x * 100, y *100, z * 100]; } function rgb2lab(rgb) { var xyz = rgb2xyz(rgb), x = xyz[0], y = xyz[1], z = xyz[2], l, a, b; x /= 95.047; y /= 100; z /= 108.883; x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); l = (116 * y) - 16; a = 500 * (x - y); b = 200 * (y - z); return [l, a, b]; } function rgb2lch(args) { return lab2lch(rgb2lab(args)); } function hsl2rgb(hsl) { var h = hsl[0] / 360, s = hsl[1] / 100, l = hsl[2] / 100, t1, t2, t3, rgb, val; if (s == 0) { val = l * 255; return [val, val, val]; } if (l < 0.5) t2 = l * (1 + s); else t2 = l + s - l * s; t1 = 2 * l - t2; rgb = [0, 0, 0]; for (var i = 0; i < 3; i++) { t3 = h + 1 / 3 * - (i - 1); t3 < 0 && t3++; t3 > 1 && t3--; if (6 * t3 < 1) val = t1 + (t2 - t1) * 6 * t3; else if (2 * t3 < 1) val = t2; else if (3 * t3 < 2) val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; else val = t1; rgb[i] = val * 255; } return rgb; } function hsl2hsv(hsl) { var h = hsl[0], s = hsl[1] / 100, l = hsl[2] / 100, sv, v; if(l === 0) { // no need to do calc on black // also avoids divide by 0 error return [0, 0, 0]; } l *= 2; s *= (l <= 1) ? l : 2 - l; v = (l + s) / 2; sv = (2 * s) / (l + s); return [h, sv * 100, v * 100]; } function hsl2hwb(args) { return rgb2hwb(hsl2rgb(args)); } function hsl2cmyk(args) { return rgb2cmyk(hsl2rgb(args)); } function hsl2keyword(args) { return rgb2keyword(hsl2rgb(args)); } function hsv2rgb(hsv) { var h = hsv[0] / 60, s = hsv[1] / 100, v = hsv[2] / 100, hi = Math.floor(h) % 6; var f = h - Math.floor(h), p = 255 * v * (1 - s), q = 255 * v * (1 - (s * f)), t = 255 * v * (1 - (s * (1 - f))), v = 255 * v; switch(hi) { case 0: return [v, t, p]; case 1: return [q, v, p]; case 2: return [p, v, t]; case 3: return [p, q, v]; case 4: return [t, p, v]; case 5: return [v, p, q]; } } function hsv2hsl(hsv) { var h = hsv[0], s = hsv[1] / 100, v = hsv[2] / 100, sl, l; l = (2 - s) * v; sl = s * v; sl /= (l <= 1) ? l : 2 - l; sl = sl || 0; l /= 2; return [h, sl * 100, l * 100]; } function hsv2hwb(args) { return rgb2hwb(hsv2rgb(args)) } function hsv2cmyk(args) { return rgb2cmyk(hsv2rgb(args)); } function hsv2keyword(args) { return rgb2keyword(hsv2rgb(args)); } // http://dev.w3.org/csswg/css-color/#hwb-to-rgb function hwb2rgb(hwb) { var h = hwb[0] / 360, wh = hwb[1] / 100, bl = hwb[2] / 100, ratio = wh + bl, i, v, f, n; // wh + bl cant be > 1 if (ratio > 1) { wh /= ratio; bl /= ratio; } i = Math.floor(6 * h); v = 1 - bl; f = 6 * h - i; if ((i & 0x01) != 0) { f = 1 - f; } n = wh + f * (v - wh); // linear interpolation switch (i) { default: case 6: case 0: r = v; g = n; b = wh; break; case 1: r = n; g = v; b = wh; break; case 2: r = wh; g = v; b = n; break; case 3: r = wh; g = n; b = v; break; case 4: r = n; g = wh; b = v; break; case 5: r = v; g = wh; b = n; break; } return [r * 255, g * 255, b * 255]; } function hwb2hsl(args) { return rgb2hsl(hwb2rgb(args)); } function hwb2hsv(args) { return rgb2hsv(hwb2rgb(args)); } function hwb2cmyk(args) { return rgb2cmyk(hwb2rgb(args)); } function hwb2keyword(args) { return rgb2keyword(hwb2rgb(args)); } function cmyk2rgb(cmyk) { var c = cmyk[0] / 100, m = cmyk[1] / 100, y = cmyk[2] / 100, k = cmyk[3] / 100, r, g, b; r = 1 - Math.min(1, c * (1 - k) + k); g = 1 - Math.min(1, m * (1 - k) + k); b = 1 - Math.min(1, y * (1 - k) + k); return [r * 255, g * 255, b * 255]; } function cmyk2hsl(args) { return rgb2hsl(cmyk2rgb(args)); } function cmyk2hsv(args) { return rgb2hsv(cmyk2rgb(args)); } function cmyk2hwb(args) { return rgb2hwb(cmyk2rgb(args)); } function cmyk2keyword(args) { return rgb2keyword(cmyk2rgb(args)); } function xyz2rgb(xyz) { var x = xyz[0] / 100, y = xyz[1] / 100, z = xyz[2] / 100, r, g, b; r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); // assume sRGB r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) : r = (r * 12.92); g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) : g = (g * 12.92); b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) : b = (b * 12.92); r = Math.min(Math.max(0, r), 1); g = Math.min(Math.max(0, g), 1); b = Math.min(Math.max(0, b), 1); return [r * 255, g * 255, b * 255]; } function xyz2lab(xyz) { var x = xyz[0], y = xyz[1], z = xyz[2], l, a, b; x /= 95.047; y /= 100; z /= 108.883; x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); l = (116 * y) - 16; a = 500 * (x - y); b = 200 * (y - z); return [l, a, b]; } function xyz2lch(args) { return lab2lch(xyz2lab(args)); } function lab2xyz(lab) { var l = lab[0], a = lab[1], b = lab[2], x, y, z, y2; if (l <= 8) { y = (l * 100) / 903.3; y2 = (7.787 * (y / 100)) + (16 / 116); } else { y = 100 * Math.pow((l + 16) / 116, 3); y2 = Math.pow(y / 100, 1/3); } x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); return [x, y, z]; } function lab2lch(lab) { var l = lab[0], a = lab[1], b = lab[2], hr, h, c; hr = Math.atan2(b, a); h = hr * 360 / 2 / Math.PI; if (h < 0) { h += 360; } c = Math.sqrt(a * a + b * b); return [l, c, h]; } function lab2rgb(args) { return xyz2rgb(lab2xyz(args)); } function lch2lab(lch) { var l = lch[0], c = lch[1], h = lch[2], a, b, hr; hr = h / 360 * 2 * Math.PI; a = c * Math.cos(hr); b = c * Math.sin(hr); return [l, a, b]; } function lch2xyz(args) { return lab2xyz(lch2lab(args)); } function lch2rgb(args) { return lab2rgb(lch2lab(args)); } function keyword2rgb(keyword) { return cssKeywords[keyword]; } function keyword2hsl(args) { return rgb2hsl(keyword2rgb(args)); } function keyword2hsv(args) { return rgb2hsv(keyword2rgb(args)); } function keyword2hwb(args) { return rgb2hwb(keyword2rgb(args)); } function keyword2cmyk(args) { return rgb2cmyk(keyword2rgb(args)); } function keyword2lab(args) { return rgb2lab(keyword2rgb(args)); } function keyword2xyz(args) { return rgb2xyz(keyword2rgb(args)); } var cssKeywords = { aliceblue: [240,248,255], antiquewhite: [250,235,215], aqua: [0,255,255], aquamarine: [127,255,212], azure: [240,255,255], beige: [245,245,220], bisque: [255,228,196], black: [0,0,0], blanchedalmond: [255,235,205], blue: [0,0,255], blueviolet: [138,43,226], brown: [165,42,42], burlywood: [222,184,135], cadetblue: [95,158,160], chartreuse: [127,255,0], chocolate: [210,105,30], coral: [255,127,80], cornflowerblue: [100,149,237], cornsilk: [255,248,220], crimson: [220,20,60], cyan: [0,255,255], darkblue: [0,0,139], darkcyan: [0,139,139], darkgoldenrod: [184,134,11], darkgray: [169,169,169], darkgreen: [0,100,0], darkgrey: [169,169,169], darkkhaki: [189,183,107], darkmagenta: [139,0,139], darkolivegreen: [85,107,47], darkorange: [255,140,0], darkorchid: [153,50,204], darkred: [139,0,0], darksalmon: [233,150,122], darkseagreen: [143,188,143], darkslateblue: [72,61,139], darkslategray: [47,79,79], darkslategrey: [47,79,79], darkturquoise: [0,206,209], darkviolet: [148,0,211], deeppink: [255,20,147], deepskyblue: [0,191,255], dimgray: [105,105,105], dimgrey: [105,105,105], dodgerblue: [30,144,255], firebrick: [178,34,34], floralwhite: [255,250,240], forestgreen: [34,139,34], fuchsia: [255,0,255], gainsboro: [220,220,220], ghostwhite: [248,248,255], gold: [255,215,0], goldenrod: [218,165,32], gray: [128,128,128], green: [0,128,0], greenyellow: [173,255,47], grey: [128,128,128], honeydew: [240,255,240], hotpink: [255,105,180], indianred: [205,92,92], indigo: [75,0,130], ivory: [255,255,240], khaki: [240,230,140], lavender: [230,230,250], lavenderblush: [255,240,245], lawngreen: [124,252,0], lemonchiffon: [255,250,205], lightblue: [173,216,230], lightcoral: [240,128,128], lightcyan: [224,255,255], lightgoldenrodyellow: [250,250,210], lightgray: [211,211,211], lightgreen: [144,238,144], lightgrey: [211,211,211], lightpink: [255,182,193], lightsalmon: [255,160,122], lightseagreen: [32,178,170], lightskyblue: [135,206,250], lightslategray: [119,136,153], lightslategrey: [119,136,153], lightsteelblue: [176,196,222], lightyellow: [255,255,224], lime: [0,255,0], limegreen: [50,205,50], linen: [250,240,230], magenta: [255,0,255], maroon: [128,0,0], mediumaquamarine: [102,205,170], mediumblue: [0,0,205], mediumorchid: [186,85,211], mediumpurple: [147,112,219], mediumseagreen: [60,179,113], mediumslateblue: [123,104,238], mediumspringgreen: [0,250,154], mediumturquoise: [72,209,204], mediumvioletred: [199,21,133], midnightblue: [25,25,112], mintcream: [245,255,250], mistyrose: [255,228,225], moccasin: [255,228,181], navajowhite: [255,222,173], navy: [0,0,128], oldlace: [253,245,230], olive: [128,128,0], olivedrab: [107,142,35], orange: [255,165,0], orangered: [255,69,0], orchid: [218,112,214], palegoldenrod: [238,232,170], palegreen: [152,251,152], paleturquoise: [175,238,238], palevioletred: [219,112,147], papayawhip: [255,239,213], peachpuff: [255,218,185], peru: [205,133,63], pink: [255,192,203], plum: [221,160,221], powderblue: [176,224,230], purple: [128,0,128], rebeccapurple: [102, 51, 153], red: [255,0,0], rosybrown: [188,143,143], royalblue: [65,105,225], saddlebrown: [139,69,19], salmon: [250,128,114], sandybrown: [244,164,96], seagreen: [46,139,87], seashell: [255,245,238], sienna: [160,82,45], silver: [192,192,192], skyblue: [135,206,235], slateblue: [106,90,205], slategray: [112,128,144], slategrey: [112,128,144], snow: [255,250,250], springgreen: [0,255,127], steelblue: [70,130,180], tan: [210,180,140], teal: [0,128,128], thistle: [216,191,216], tomato: [255,99,71], turquoise: [64,224,208], violet: [238,130,238], wheat: [245,222,179], white: [255,255,255], whitesmoke: [245,245,245], yellow: [255,255,0], yellowgreen: [154,205,50] }; var reverseKeywords = {}; for (var key in cssKeywords) { reverseKeywords[JSON.stringify(cssKeywords[key])] = key; } },{}],5:[function(require,module,exports){ var conversions = require(4); var convert = function() { return new Converter(); } for (var func in conversions) { // export Raw versions convert[func + "Raw"] = (function(func) { // accept array or plain args return function(arg) { if (typeof arg == "number") arg = Array.prototype.slice.call(arguments); return conversions[func](arg); } })(func); var pair = /(\w+)2(\w+)/.exec(func), from = pair[1], to = pair[2]; // export rgb2hsl and ["rgb"]["hsl"] convert[from] = convert[from] || {}; convert[from][to] = convert[func] = (function(func) { return function(arg) { if (typeof arg == "number") arg = Array.prototype.slice.call(arguments); var val = conversions[func](arg); if (typeof val == "string" || val === undefined) return val; // keyword for (var i = 0; i < val.length; i++) val[i] = Math.round(val[i]); return val; } })(func); } /* Converter does lazy conversion and caching */ var Converter = function() { this.convs = {}; }; /* Either get the values for a space or set the values for a space, depending on args */ Converter.prototype.routeSpace = function(space, args) { var values = args[0]; if (values === undefined) { // color.rgb() return this.getValues(space); } // color.rgb(10, 10, 10) if (typeof values == "number") { values = Array.prototype.slice.call(args); } return this.setValues(space, values); }; /* Set the values for a space, invalidating cache */ Converter.prototype.setValues = function(space, values) { this.space = space; this.convs = {}; this.convs[space] = values; return this; }; /* Get the values for a space. If there's already a conversion for the space, fetch it, otherwise compute it */ Converter.prototype.getValues = function(space) { var vals = this.convs[space]; if (!vals) { var fspace = this.space, from = this.convs[fspace]; vals = convert[fspace][space](from); this.convs[space] = vals; } return vals; }; ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { Converter.prototype[space] = function(vals) { return this.routeSpace(space, arguments); } }); module.exports = convert; },{"4":4}],6:[function(require,module,exports){ 'use strict' module.exports = { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255, 235, 205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategray": [47, 79, 79], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "grey": [128, 128, 128], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "rebeccapurple": [102, 51, 153], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50] }; },{}],7:[function(require,module,exports){ /** * @namespace Chart */ var Chart = require(29)(); Chart.helpers = require(45); // @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! require(27)(Chart); Chart.defaults = require(25); Chart.Element = require(26); Chart.elements = require(40); Chart.Interaction = require(28); Chart.platform = require(48); require(31)(Chart); require(22)(Chart); require(23)(Chart); require(24)(Chart); require(30)(Chart); require(33)(Chart); require(32)(Chart); require(35)(Chart); require(54)(Chart); require(52)(Chart); require(53)(Chart); require(55)(Chart); require(56)(Chart); require(57)(Chart); // Controllers must be loaded after elements // See Chart.core.datasetController.dataElementType require(15)(Chart); require(16)(Chart); require(17)(Chart); require(18)(Chart); require(19)(Chart); require(20)(Chart); require(21)(Chart); require(8)(Chart); require(9)(Chart); require(10)(Chart); require(11)(Chart); require(12)(Chart); require(13)(Chart); require(14)(Chart); // Loading built-it plugins var plugins = []; plugins.push( require(49)(Chart), require(50)(Chart), require(51)(Chart) ); Chart.plugins.register(plugins); Chart.platform.initialize(); module.exports = Chart; if (typeof window !== 'undefined') { window.Chart = Chart; } // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.canvas instead. * @namespace Chart.canvasHelpers * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ Chart.canvasHelpers = Chart.helpers.canvas; },{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"35":35,"40":40,"45":45,"48":48,"49":49,"50":50,"51":51,"52":52,"53":53,"54":54,"55":55,"56":56,"57":57,"8":8,"9":9}],8:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Bar = function(context, config) { config.type = 'bar'; return new Chart(context, config); }; }; },{}],9:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Bubble = function(context, config) { config.type = 'bubble'; return new Chart(context, config); }; }; },{}],10:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Doughnut = function(context, config) { config.type = 'doughnut'; return new Chart(context, config); }; }; },{}],11:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Line = function(context, config) { config.type = 'line'; return new Chart(context, config); }; }; },{}],12:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.PolarArea = function(context, config) { config.type = 'polarArea'; return new Chart(context, config); }; }; },{}],13:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Radar = function(context, config) { config.type = 'radar'; return new Chart(context, config); }; }; },{}],14:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Scatter = function(context, config) { config.type = 'scatter'; return new Chart(context, config); }; }; },{}],15:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('bar', { hover: { mode: 'label' }, scales: { xAxes: [{ type: 'category', // Specific to Bar Controller categoryPercentage: 0.8, barPercentage: 0.9, // offset settings offset: true, // grid line settings gridLines: { offsetGridLines: true } }], yAxes: [{ type: 'linear' }] } }); defaults._set('horizontalBar', { hover: { mode: 'index', axis: 'y' }, scales: { xAxes: [{ type: 'linear', position: 'bottom' }], yAxes: [{ position: 'left', type: 'category', // Specific to Horizontal Bar Controller categoryPercentage: 0.8, barPercentage: 0.9, // offset settings offset: true, // grid line settings gridLines: { offsetGridLines: true } }] }, elements: { rectangle: { borderSkipped: 'left' } }, tooltips: { callbacks: { title: function(item, data) { // Pick first xLabel for now var title = ''; if (item.length > 0) { if (item[0].yLabel) { title = item[0].yLabel; } else if (data.labels.length > 0 && item[0].index < data.labels.length) { title = data.labels[item[0].index]; } } return title; }, label: function(item, data) { var datasetLabel = data.datasets[item.datasetIndex].label || ''; return datasetLabel + ': ' + item.xLabel; } }, mode: 'index', axis: 'y' } }); module.exports = function(Chart) { Chart.controllers.bar = Chart.DatasetController.extend({ dataElementType: elements.Rectangle, initialize: function() { var me = this; var meta; Chart.DatasetController.prototype.initialize.apply(me, arguments); meta = me.getMeta(); meta.stack = me.getDataset().stack; meta.bar = true; }, update: function(reset) { var me = this; var rects = me.getMeta().data; var i, ilen; me._ruler = me.getRuler(); for (i = 0, ilen = rects.length; i < ilen; ++i) { me.updateElement(rects[i], i, reset); } }, updateElement: function(rectangle, index, reset) { var me = this; var chart = me.chart; var meta = me.getMeta(); var dataset = me.getDataset(); var custom = rectangle.custom || {}; var rectangleOptions = chart.options.elements.rectangle; rectangle._xScale = me.getScaleForId(meta.xAxisID); rectangle._yScale = me.getScaleForId(meta.yAxisID); rectangle._datasetIndex = me.index; rectangle._index = index; rectangle._model = { datasetLabel: dataset.label, label: chart.data.labels[index], borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) }; me.updateElementGeometry(rectangle, index, reset); rectangle.pivot(); }, /** * @private */ updateElementGeometry: function(rectangle, index, reset) { var me = this; var model = rectangle._model; var vscale = me.getValueScale(); var base = vscale.getBasePixel(); var horizontal = vscale.isHorizontal(); var ruler = me._ruler || me.getRuler(); var vpixels = me.calculateBarValuePixels(me.index, index); var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); model.horizontal = horizontal; model.base = reset ? base : vpixels.base; model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; model.height = horizontal ? ipixels.size : undefined; model.width = horizontal ? undefined : ipixels.size; }, /** * @private */ getValueScaleId: function() { return this.getMeta().yAxisID; }, /** * @private */ getIndexScaleId: function() { return this.getMeta().xAxisID; }, /** * @private */ getValueScale: function() { return this.getScaleForId(this.getValueScaleId()); }, /** * @private */ getIndexScale: function() { return this.getScaleForId(this.getIndexScaleId()); }, /** * Returns the effective number of stacks based on groups and bar visibility. * @private */ getStackCount: function(last) { var me = this; var chart = me.chart; var scale = me.getIndexScale(); var stacked = scale.options.stacked; var ilen = last === undefined ? chart.data.datasets.length : last + 1; var stacks = []; var i, meta; for (i = 0; i < ilen; ++i) { meta = chart.getDatasetMeta(i); if (meta.bar && chart.isDatasetVisible(i) && (stacked === false || (stacked === true && stacks.indexOf(meta.stack) === -1) || (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { stacks.push(meta.stack); } } return stacks.length; }, /** * Returns the stack index for the given dataset based on groups and bar visibility. * @private */ getStackIndex: function(datasetIndex) { return this.getStackCount(datasetIndex) - 1; }, /** * @private */ getRuler: function() { var me = this; var scale = me.getIndexScale(); var stackCount = me.getStackCount(); var datasetIndex = me.index; var pixels = []; var isHorizontal = scale.isHorizontal(); var start = isHorizontal ? scale.left : scale.top; var end = start + (isHorizontal ? scale.width : scale.height); var i, ilen; for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { pixels.push(scale.getPixelForValue(null, i, datasetIndex)); } return { pixels: pixels, start: start, end: end, stackCount: stackCount, scale: scale }; }, /** * Note: pixel values are not clamped to the scale area. * @private */ calculateBarValuePixels: function(datasetIndex, index) { var me = this; var chart = me.chart; var meta = me.getMeta(); var scale = me.getValueScale(); var datasets = chart.data.datasets; var value = scale.getRightValue(datasets[datasetIndex].data[index]); var stacked = scale.options.stacked; var stack = meta.stack; var start = 0; var i, imeta, ivalue, base, head, size; if (stacked || (stacked === undefined && stack !== undefined)) { for (i = 0; i < datasetIndex; ++i) { imeta = chart.getDatasetMeta(i); if (imeta.bar && imeta.stack === stack && imeta.controller.getValueScaleId() === scale.id && chart.isDatasetVisible(i)) { ivalue = scale.getRightValue(datasets[i].data[index]); if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { start += ivalue; } } } } base = scale.getPixelForValue(start); head = scale.getPixelForValue(start + value); size = (head - base) / 2; return { size: size, base: base, head: head, center: head + size / 2 }; }, /** * @private */ calculateBarIndexPixels: function(datasetIndex, index, ruler) { var me = this; var options = ruler.scale.options; var stackIndex = me.getStackIndex(datasetIndex); var pixels = ruler.pixels; var base = pixels[index]; var length = pixels.length; var start = ruler.start; var end = ruler.end; var leftSampleSize, rightSampleSize, leftCategorySize, rightCategorySize, fullBarSize, size; if (length === 1) { leftSampleSize = base > start ? base - start : end - base; rightSampleSize = base < end ? end - base : base - start; } else { if (index > 0) { leftSampleSize = (base - pixels[index - 1]) / 2; if (index === length - 1) { rightSampleSize = leftSampleSize; } } if (index < length - 1) { rightSampleSize = (pixels[index + 1] - base) / 2; if (index === 0) { leftSampleSize = rightSampleSize; } } } leftCategorySize = leftSampleSize * options.categoryPercentage; rightCategorySize = rightSampleSize * options.categoryPercentage; fullBarSize = (leftCategorySize + rightCategorySize) / ruler.stackCount; size = fullBarSize * options.barPercentage; size = Math.min( helpers.valueOrDefault(options.barThickness, size), helpers.valueOrDefault(options.maxBarThickness, Infinity)); base -= leftCategorySize; base += fullBarSize * stackIndex; base += (fullBarSize - size) / 2; return { size: size, base: base, head: base + size, center: base + size / 2 }; }, draw: function() { var me = this; var chart = me.chart; var scale = me.getValueScale(); var rects = me.getMeta().data; var dataset = me.getDataset(); var ilen = rects.length; var i = 0; helpers.canvas.clipArea(chart.ctx, chart.chartArea); for (; i < ilen; ++i) { if (!isNaN(scale.getRightValue(dataset.data[i]))) { rects[i].draw(); } } helpers.canvas.unclipArea(chart.ctx); }, setHoverStyle: function(rectangle) { var dataset = this.chart.data.datasets[rectangle._datasetIndex]; var index = rectangle._index; var custom = rectangle.custom || {}; var model = rectangle._model; model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); }, removeHoverStyle: function(rectangle) { var dataset = this.chart.data.datasets[rectangle._datasetIndex]; var index = rectangle._index; var custom = rectangle.custom || {}; var model = rectangle._model; var rectangleElementOptions = this.chart.options.elements.rectangle; model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth); } }); Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ /** * @private */ getValueScaleId: function() { return this.getMeta().xAxisID; }, /** * @private */ getIndexScaleId: function() { return this.getMeta().yAxisID; } }); }; },{"25":25,"40":40,"45":45}],16:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('bubble', { hover: { mode: 'single' }, scales: { xAxes: [{ type: 'linear', // bubble should probably use a linear scale by default position: 'bottom', id: 'x-axis-0' // need an ID so datasets can reference the scale }], yAxes: [{ type: 'linear', position: 'left', id: 'y-axis-0' }] }, tooltips: { callbacks: { title: function() { // Title doesn't make sense for scatter since we format the data as a point return ''; }, label: function(item, data) { var datasetLabel = data.datasets[item.datasetIndex].label || ''; var dataPoint = data.datasets[item.datasetIndex].data[item.index]; return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; } } } }); module.exports = function(Chart) { Chart.controllers.bubble = Chart.DatasetController.extend({ /** * @protected */ dataElementType: elements.Point, /** * @protected */ update: function(reset) { var me = this; var meta = me.getMeta(); var points = meta.data; // Update Points helpers.each(points, function(point, index) { me.updateElement(point, index, reset); }); }, /** * @protected */ updateElement: function(point, index, reset) { var me = this; var meta = me.getMeta(); var custom = point.custom || {}; var xScale = me.getScaleForId(meta.xAxisID); var yScale = me.getScaleForId(meta.yAxisID); var options = me._resolveElementOptions(point, index); var data = me.getDataset().data[index]; var dsIndex = me.index; var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); point._xScale = xScale; point._yScale = yScale; point._options = options; point._datasetIndex = dsIndex; point._index = index; point._model = { backgroundColor: options.backgroundColor, borderColor: options.borderColor, borderWidth: options.borderWidth, hitRadius: options.hitRadius, pointStyle: options.pointStyle, radius: reset ? 0 : options.radius, skip: custom.skip || isNaN(x) || isNaN(y), x: x, y: y, }; point.pivot(); }, /** * @protected */ setHoverStyle: function(point) { var model = point._model; var options = point._options; model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); model.radius = options.radius + options.hoverRadius; }, /** * @protected */ removeHoverStyle: function(point) { var model = point._model; var options = point._options; model.backgroundColor = options.backgroundColor; model.borderColor = options.borderColor; model.borderWidth = options.borderWidth; model.radius = options.radius; }, /** * @private */ _resolveElementOptions: function(point, index) { var me = this; var chart = me.chart; var datasets = chart.data.datasets; var dataset = datasets[me.index]; var custom = point.custom || {}; var options = chart.options.elements.point; var resolve = helpers.options.resolve; var data = dataset.data[index]; var values = {}; var i, ilen, key; // Scriptable options var context = { chart: chart, dataIndex: index, dataset: dataset, datasetIndex: me.index }; var keys = [ 'backgroundColor', 'borderColor', 'borderWidth', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth', 'hoverRadius', 'hitRadius', 'pointStyle' ]; for (i = 0, ilen = keys.length; i < ilen; ++i) { key = keys[i]; values[key] = resolve([ custom[key], dataset[key], options[key] ], context, index); } // Custom radius resolution values.radius = resolve([ custom.radius, data ? data.r : undefined, dataset.radius, options.radius ], context, index); return values; } }); }; },{"25":25,"40":40,"45":45}],17:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('doughnut', { animation: { // Boolean - Whether we animate the rotation of the Doughnut animateRotate: true, // Boolean - Whether we animate scaling the Doughnut from the centre animateScale: false }, hover: { mode: 'single' }, legendCallback: function(chart) { var text = []; text.push('
    '); var data = chart.data; var datasets = data.datasets; var labels = data.labels; if (datasets.length) { for (var i = 0; i < datasets[0].data.length; ++i) { text.push('
  • '); if (labels[i]) { text.push(labels[i]); } text.push('
  • '); } } text.push('
'); return text.join(''); }, legend: { labels: { generateLabels: function(chart) { var data = chart.data; if (data.labels.length && data.datasets.length) { return data.labels.map(function(label, i) { var meta = chart.getDatasetMeta(0); var ds = data.datasets[0]; var arc = meta.data[i]; var custom = arc && arc.custom || {}; var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; var arcOpts = chart.options.elements.arc; var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); return { text: label, fillStyle: fill, strokeStyle: stroke, lineWidth: bw, hidden: isNaN(ds.data[i]) || meta.data[i].hidden, // Extra data used for toggling the correct item index: i }; }); } return []; } }, onClick: function(e, legendItem) { var index = legendItem.index; var chart = this.chart; var i, ilen, meta; for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { meta = chart.getDatasetMeta(i); // toggle visibility of index if exists if (meta.data[index]) { meta.data[index].hidden = !meta.data[index].hidden; } } chart.update(); } }, // The percentage of the chart that we cut out of the middle. cutoutPercentage: 50, // The rotation of the chart, where the first data arc begins. rotation: Math.PI * -0.5, // The total circumference of the chart. circumference: Math.PI * 2.0, // Need to override these to give a nice default tooltips: { callbacks: { title: function() { return ''; }, label: function(tooltipItem, data) { var dataLabel = data.labels[tooltipItem.index]; var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; if (helpers.isArray(dataLabel)) { // show value on first line of multiline label // need to clone because we are changing the value dataLabel = dataLabel.slice(); dataLabel[0] += value; } else { dataLabel += value; } return dataLabel; } } } }); defaults._set('pie', helpers.clone(defaults.doughnut)); defaults._set('pie', { cutoutPercentage: 0 }); module.exports = function(Chart) { Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ dataElementType: elements.Arc, linkScales: helpers.noop, // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly getRingIndex: function(datasetIndex) { var ringIndex = 0; for (var j = 0; j < datasetIndex; ++j) { if (this.chart.isDatasetVisible(j)) { ++ringIndex; } } return ringIndex; }, update: function(reset) { var me = this; var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; var arcOpts = opts.elements.arc; var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; var minSize = Math.min(availableWidth, availableHeight); var offset = {x: 0, y: 0}; var meta = me.getMeta(); var cutoutPercentage = opts.cutoutPercentage; var circumference = opts.circumference; // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc if (circumference < Math.PI * 2.0) { var startAngle = opts.rotation % (Math.PI * 2.0); startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); var endAngle = startAngle + circumference; var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); var cutout = cutoutPercentage / 100.0; var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; minSize = Math.min(availableWidth / size.width, availableHeight / size.height); offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; } chart.borderWidth = me.getMaxBorderWidth(meta.data); chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); chart.offsetX = offset.x * chart.outerRadius; chart.offsetY = offset.y * chart.outerRadius; meta.total = me.calculateTotal(); me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); helpers.each(meta.data, function(arc, index) { me.updateElement(arc, index, reset); }); }, updateElement: function(arc, index, reset) { var me = this; var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; var animationOpts = opts.animation; var centerX = (chartArea.left + chartArea.right) / 2; var centerY = (chartArea.top + chartArea.bottom) / 2; var startAngle = opts.rotation; // non reset case handled later var endAngle = opts.rotation; // non reset case handled later var dataset = me.getDataset(); var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; helpers.extend(arc, { // Utility _datasetIndex: me.index, _index: index, // Desired view properties _model: { x: centerX + chart.offsetX, y: centerY + chart.offsetY, startAngle: startAngle, endAngle: endAngle, circumference: circumference, outerRadius: outerRadius, innerRadius: innerRadius, label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) } }); var model = arc._model; // Resets the visual styles this.removeHoverStyle(arc); // Set correct angles if not resetting if (!reset || !animationOpts.animateRotate) { if (index === 0) { model.startAngle = opts.rotation; } else { model.startAngle = me.getMeta().data[index - 1]._model.endAngle; } model.endAngle = model.startAngle + model.circumference; } arc.pivot(); }, removeHoverStyle: function(arc) { Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); }, calculateTotal: function() { var dataset = this.getDataset(); var meta = this.getMeta(); var total = 0; var value; helpers.each(meta.data, function(element, index) { value = dataset.data[index]; if (!isNaN(value) && !element.hidden) { total += Math.abs(value); } }); /* if (total === 0) { total = NaN; }*/ return total; }, calculateCircumference: function(value) { var total = this.getMeta().total; if (total > 0 && !isNaN(value)) { return (Math.PI * 2.0) * (value / total); } return 0; }, // gets the max border or hover width to properly scale pie charts getMaxBorderWidth: function(arcs) { var max = 0; var index = this.index; var length = arcs.length; var borderWidth; var hoverWidth; for (var i = 0; i < length; i++) { borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; max = borderWidth > max ? borderWidth : max; max = hoverWidth > max ? hoverWidth : max; } return max; } }); }; },{"25":25,"40":40,"45":45}],18:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('line', { showLines: true, spanGaps: false, hover: { mode: 'label' }, scales: { xAxes: [{ type: 'category', id: 'x-axis-0' }], yAxes: [{ type: 'linear', id: 'y-axis-0' }] } }); module.exports = function(Chart) { function lineEnabled(dataset, options) { return helpers.valueOrDefault(dataset.showLine, options.showLines); } Chart.controllers.line = Chart.DatasetController.extend({ datasetElementType: elements.Line, dataElementType: elements.Point, update: function(reset) { var me = this; var meta = me.getMeta(); var line = meta.dataset; var points = meta.data || []; var options = me.chart.options; var lineElementOptions = options.elements.line; var scale = me.getScaleForId(meta.yAxisID); var i, ilen, custom; var dataset = me.getDataset(); var showLine = lineEnabled(dataset, options); // Update Line if (showLine) { custom = line.custom || {}; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { dataset.lineTension = dataset.tension; } // Utility line._scale = scale; line._datasetIndex = me.index; // Data line._children = points; // Model line._model = { // Appearance // The default behavior of lines is to break at null values, according // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 // This option gives lines the ability to span gaps spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), }; line.pivot(); } // Update Points for (i = 0, ilen = points.length; i < ilen; ++i) { me.updateElement(points[i], i, reset); } if (showLine && line._model.tension !== 0) { me.updateBezierControlPoints(); } // Now pivot the point for animation for (i = 0, ilen = points.length; i < ilen; ++i) { points[i].pivot(); } }, getPointBackgroundColor: function(point, index) { var backgroundColor = this.chart.options.elements.point.backgroundColor; var dataset = this.getDataset(); var custom = point.custom || {}; if (custom.backgroundColor) { backgroundColor = custom.backgroundColor; } else if (dataset.pointBackgroundColor) { backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); } else if (dataset.backgroundColor) { backgroundColor = dataset.backgroundColor; } return backgroundColor; }, getPointBorderColor: function(point, index) { var borderColor = this.chart.options.elements.point.borderColor; var dataset = this.getDataset(); var custom = point.custom || {}; if (custom.borderColor) { borderColor = custom.borderColor; } else if (dataset.pointBorderColor) { borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); } else if (dataset.borderColor) { borderColor = dataset.borderColor; } return borderColor; }, getPointBorderWidth: function(point, index) { var borderWidth = this.chart.options.elements.point.borderWidth; var dataset = this.getDataset(); var custom = point.custom || {}; if (!isNaN(custom.borderWidth)) { borderWidth = custom.borderWidth; } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); } else if (!isNaN(dataset.borderWidth)) { borderWidth = dataset.borderWidth; } return borderWidth; }, updateElement: function(point, index, reset) { var me = this; var meta = me.getMeta(); var custom = point.custom || {}; var dataset = me.getDataset(); var datasetIndex = me.index; var value = dataset.data[index]; var yScale = me.getScaleForId(meta.yAxisID); var xScale = me.getScaleForId(meta.xAxisID); var pointOptions = me.chart.options.elements.point; var x, y; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { dataset.pointRadius = dataset.radius; } if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { dataset.pointHitRadius = dataset.hitRadius; } x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); // Utility point._xScale = xScale; point._yScale = yScale; point._datasetIndex = datasetIndex; point._index = index; // Desired view properties point._model = { x: x, y: y, skip: custom.skip || isNaN(x) || isNaN(y), // Appearance radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), backgroundColor: me.getPointBackgroundColor(point, index), borderColor: me.getPointBorderColor(point, index), borderWidth: me.getPointBorderWidth(point, index), tension: meta.dataset._model ? meta.dataset._model.tension : 0, steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, // Tooltip hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) }; }, calculatePointY: function(value, index, datasetIndex) { var me = this; var chart = me.chart; var meta = me.getMeta(); var yScale = me.getScaleForId(meta.yAxisID); var sumPos = 0; var sumNeg = 0; var i, ds, dsMeta; if (yScale.options.stacked) { for (i = 0; i < datasetIndex; i++) { ds = chart.data.datasets[i]; dsMeta = chart.getDatasetMeta(i); if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); if (stackedRightValue < 0) { sumNeg += stackedRightValue || 0; } else { sumPos += stackedRightValue || 0; } } } var rightValue = Number(yScale.getRightValue(value)); if (rightValue < 0) { return yScale.getPixelForValue(sumNeg + rightValue); } return yScale.getPixelForValue(sumPos + rightValue); } return yScale.getPixelForValue(value); }, updateBezierControlPoints: function() { var me = this; var meta = me.getMeta(); var area = me.chart.chartArea; var points = (meta.data || []); var i, ilen, point, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used if (meta.dataset._model.spanGaps) { points = points.filter(function(pt) { return !pt._model.skip; }); } function capControlPoint(pt, min, max) { return Math.max(Math.min(pt, max), min); } if (meta.dataset._model.cubicInterpolationMode === 'monotone') { helpers.splineCurveMonotone(points); } else { for (i = 0, ilen = points.length; i < ilen; ++i) { point = points[i]; model = point._model; controlPoints = helpers.splineCurve( helpers.previousItem(points, i)._model, model, helpers.nextItem(points, i)._model, meta.dataset._model.tension ); model.controlPointPreviousX = controlPoints.previous.x; model.controlPointPreviousY = controlPoints.previous.y; model.controlPointNextX = controlPoints.next.x; model.controlPointNextY = controlPoints.next.y; } } if (me.chart.options.elements.line.capBezierPoints) { for (i = 0, ilen = points.length; i < ilen; ++i) { model = points[i]._model; model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); } } }, draw: function() { var me = this; var chart = me.chart; var meta = me.getMeta(); var points = meta.data || []; var area = chart.chartArea; var ilen = points.length; var i = 0; helpers.canvas.clipArea(chart.ctx, area); if (lineEnabled(me.getDataset(), chart.options)) { meta.dataset.draw(); } helpers.canvas.unclipArea(chart.ctx); // Draw the points for (; i < ilen; ++i) { points[i].draw(area); } }, setHoverStyle: function(point) { // Point var dataset = this.chart.data.datasets[point._datasetIndex]; var index = point._index; var custom = point.custom || {}; var model = point._model; model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); }, removeHoverStyle: function(point) { var me = this; var dataset = me.chart.data.datasets[point._datasetIndex]; var index = point._index; var custom = point.custom || {}; var model = point._model; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { dataset.pointRadius = dataset.radius; } model.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius); model.backgroundColor = me.getPointBackgroundColor(point, index); model.borderColor = me.getPointBorderColor(point, index); model.borderWidth = me.getPointBorderWidth(point, index); } }); }; },{"25":25,"40":40,"45":45}],19:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('polarArea', { scale: { type: 'radialLinear', angleLines: { display: false }, gridLines: { circular: true }, pointLabels: { display: false }, ticks: { beginAtZero: true } }, // Boolean - Whether to animate the rotation of the chart animation: { animateRotate: true, animateScale: true }, startAngle: -0.5 * Math.PI, legendCallback: function(chart) { var text = []; text.push('
    '); var data = chart.data; var datasets = data.datasets; var labels = data.labels; if (datasets.length) { for (var i = 0; i < datasets[0].data.length; ++i) { text.push('
  • '); if (labels[i]) { text.push(labels[i]); } text.push('
  • '); } } text.push('
'); return text.join(''); }, legend: { labels: { generateLabels: function(chart) { var data = chart.data; if (data.labels.length && data.datasets.length) { return data.labels.map(function(label, i) { var meta = chart.getDatasetMeta(0); var ds = data.datasets[0]; var arc = meta.data[i]; var custom = arc.custom || {}; var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; var arcOpts = chart.options.elements.arc; var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); return { text: label, fillStyle: fill, strokeStyle: stroke, lineWidth: bw, hidden: isNaN(ds.data[i]) || meta.data[i].hidden, // Extra data used for toggling the correct item index: i }; }); } return []; } }, onClick: function(e, legendItem) { var index = legendItem.index; var chart = this.chart; var i, ilen, meta; for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { meta = chart.getDatasetMeta(i); meta.data[index].hidden = !meta.data[index].hidden; } chart.update(); } }, // Need to override these to give a nice default tooltips: { callbacks: { title: function() { return ''; }, label: function(item, data) { return data.labels[item.index] + ': ' + item.yLabel; } } } }); module.exports = function(Chart) { Chart.controllers.polarArea = Chart.DatasetController.extend({ dataElementType: elements.Arc, linkScales: helpers.noop, update: function(reset) { var me = this; var chart = me.chart; var chartArea = chart.chartArea; var meta = me.getMeta(); var opts = chart.options; var arcOpts = opts.elements.arc; var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); me.innerRadius = me.outerRadius - chart.radiusLength; meta.count = me.countVisibleElements(); helpers.each(meta.data, function(arc, index) { me.updateElement(arc, index, reset); }); }, updateElement: function(arc, index, reset) { var me = this; var chart = me.chart; var dataset = me.getDataset(); var opts = chart.options; var animationOpts = opts.animation; var scale = chart.scale; var labels = chart.data.labels; var circumference = me.calculateCircumference(dataset.data[index]); var centerX = scale.xCenter; var centerY = scale.yCenter; // If there is NaN data before us, we need to calculate the starting angle correctly. // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data var visibleCount = 0; var meta = me.getMeta(); for (var i = 0; i < index; ++i) { if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) { ++visibleCount; } } // var negHalfPI = -0.5 * Math.PI; var datasetStartAngle = opts.startAngle; var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); var startAngle = datasetStartAngle + (circumference * visibleCount); var endAngle = startAngle + (arc.hidden ? 0 : circumference); var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); helpers.extend(arc, { // Utility _datasetIndex: me.index, _index: index, _scale: scale, // Desired view properties _model: { x: centerX, y: centerY, innerRadius: 0, outerRadius: reset ? resetRadius : distance, startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) } }); // Apply border and fill style me.removeHoverStyle(arc); arc.pivot(); }, removeHoverStyle: function(arc) { Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); }, countVisibleElements: function() { var dataset = this.getDataset(); var meta = this.getMeta(); var count = 0; helpers.each(meta.data, function(element, index) { if (!isNaN(dataset.data[index]) && !element.hidden) { count++; } }); return count; }, calculateCircumference: function(value) { var count = this.getMeta().count; if (count > 0 && !isNaN(value)) { return (2 * Math.PI) / count; } return 0; } }); }; },{"25":25,"40":40,"45":45}],20:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('radar', { scale: { type: 'radialLinear' }, elements: { line: { tension: 0 // no bezier in radar } } }); module.exports = function(Chart) { Chart.controllers.radar = Chart.DatasetController.extend({ datasetElementType: elements.Line, dataElementType: elements.Point, linkScales: helpers.noop, update: function(reset) { var me = this; var meta = me.getMeta(); var line = meta.dataset; var points = meta.data; var custom = line.custom || {}; var dataset = me.getDataset(); var lineElementOptions = me.chart.options.elements.line; var scale = me.chart.scale; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { dataset.lineTension = dataset.tension; } helpers.extend(meta.dataset, { // Utility _datasetIndex: me.index, _scale: scale, // Data _children: points, _loop: true, // Model _model: { // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), } }); meta.dataset.pivot(); // Update Points helpers.each(points, function(point, index) { me.updateElement(point, index, reset); }, me); // Update bezier control points me.updateBezierControlPoints(); }, updateElement: function(point, index, reset) { var me = this; var custom = point.custom || {}; var dataset = me.getDataset(); var scale = me.chart.scale; var pointElementOptions = me.chart.options.elements.point; var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { dataset.pointRadius = dataset.radius; } if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { dataset.pointHitRadius = dataset.hitRadius; } helpers.extend(point, { // Utility _datasetIndex: me.index, _index: index, _scale: scale, // Desired view properties _model: { x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales y: reset ? scale.yCenter : pointPosition.y, // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), // Tooltip hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) } }); point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); }, updateBezierControlPoints: function() { var chartArea = this.chart.chartArea; var meta = this.getMeta(); helpers.each(meta.data, function(point, index) { var model = point._model; var controlPoints = helpers.splineCurve( helpers.previousItem(meta.data, index, true)._model, model, helpers.nextItem(meta.data, index, true)._model, model.tension ); // Prevent the bezier going outside of the bounds of the graph model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); // Now pivot the point for animation point.pivot(); }); }, setHoverStyle: function(point) { // Point var dataset = this.chart.data.datasets[point._datasetIndex]; var custom = point.custom || {}; var index = point._index; var model = point._model; model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); }, removeHoverStyle: function(point) { var dataset = this.chart.data.datasets[point._datasetIndex]; var custom = point.custom || {}; var index = point._index; var model = point._model; var pointElementOptions = this.chart.options.elements.point; model.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius); model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth); } }); }; },{"25":25,"40":40,"45":45}],21:[function(require,module,exports){ 'use strict'; var defaults = require(25); defaults._set('scatter', { hover: { mode: 'single' }, scales: { xAxes: [{ id: 'x-axis-1', // need an ID so datasets can reference the scale type: 'linear', // scatter should not use a category axis position: 'bottom' }], yAxes: [{ id: 'y-axis-1', type: 'linear', position: 'left' }] }, showLines: false, tooltips: { callbacks: { title: function() { return ''; // doesn't make sense for scatter since data are formatted as a point }, label: function(item) { return '(' + item.xLabel + ', ' + item.yLabel + ')'; } } } }); module.exports = function(Chart) { // Scatter charts use line controllers Chart.controllers.scatter = Chart.controllers.line; }; },{"25":25}],22:[function(require,module,exports){ /* global window: false */ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { animation: { duration: 1000, easing: 'easeOutQuart', onProgress: helpers.noop, onComplete: helpers.noop } }); module.exports = function(Chart) { Chart.Animation = Element.extend({ chart: null, // the animation associated chart instance currentStep: 0, // the current animation step numSteps: 60, // default number of steps easing: '', // the easing to use for this animation render: null, // render function used by the animation service onAnimationProgress: null, // user specified callback to fire on each step of the animation onAnimationComplete: null, // user specified callback to fire when the animation finishes }); Chart.animationService = { frameDuration: 17, animations: [], dropFrames: 0, request: null, /** * @param {Chart} chart - The chart to animate. * @param {Chart.Animation} animation - The animation that we will animate. * @param {Number} duration - The animation duration in ms. * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions */ addAnimation: function(chart, animation, duration, lazy) { var animations = this.animations; var i, ilen; animation.chart = chart; if (!lazy) { chart.animating = true; } for (i = 0, ilen = animations.length; i < ilen; ++i) { if (animations[i].chart === chart) { animations[i] = animation; return; } } animations.push(animation); // If there are no animations queued, manually kickstart a digest, for lack of a better word if (animations.length === 1) { this.requestAnimationFrame(); } }, cancelAnimation: function(chart) { var index = helpers.findIndex(this.animations, function(animation) { return animation.chart === chart; }); if (index !== -1) { this.animations.splice(index, 1); chart.animating = false; } }, requestAnimationFrame: function() { var me = this; if (me.request === null) { // Skip animation frame requests until the active one is executed. // This can happen when processing mouse events, e.g. 'mousemove' // and 'mouseout' events will trigger multiple renders. me.request = helpers.requestAnimFrame.call(window, function() { me.request = null; me.startDigest(); }); } }, /** * @private */ startDigest: function() { var me = this; var startTime = Date.now(); var framesToDrop = 0; if (me.dropFrames > 1) { framesToDrop = Math.floor(me.dropFrames); me.dropFrames = me.dropFrames % 1; } me.advance(1 + framesToDrop); var endTime = Date.now(); me.dropFrames += (endTime - startTime) / me.frameDuration; // Do we have more stuff to animate? if (me.animations.length > 0) { me.requestAnimationFrame(); } }, /** * @private */ advance: function(count) { var animations = this.animations; var animation, chart; var i = 0; while (i < animations.length) { animation = animations[i]; chart = animation.chart; animation.currentStep = (animation.currentStep || 0) + count; animation.currentStep = Math.min(animation.currentStep, animation.numSteps); helpers.callback(animation.render, [chart, animation], chart); helpers.callback(animation.onAnimationProgress, [animation], chart); if (animation.currentStep >= animation.numSteps) { helpers.callback(animation.onAnimationComplete, [animation], chart); chart.animating = false; animations.splice(i, 1); } else { ++i; } } } }; /** * Provided for backward compatibility, use Chart.Animation instead * @prop Chart.Animation#animationObject * @deprecated since version 2.6.0 * @todo remove at version 3 */ Object.defineProperty(Chart.Animation.prototype, 'animationObject', { get: function() { return this; } }); /** * Provided for backward compatibility, use Chart.Animation#chart instead * @prop Chart.Animation#chartInstance * @deprecated since version 2.6.0 * @todo remove at version 3 */ Object.defineProperty(Chart.Animation.prototype, 'chartInstance', { get: function() { return this.chart; }, set: function(value) { this.chart = value; } }); }; },{"25":25,"26":26,"45":45}],23:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); var Interaction = require(28); var platform = require(48); module.exports = function(Chart) { var plugins = Chart.plugins; // Create a dictionary of chart types, to allow for extension of existing types Chart.types = {}; // Store a reference to each instance - allowing us to globally resize chart instances on window resize. // Destroy method on the chart will remove the instance of the chart from this reference. Chart.instances = {}; // Controllers available for dataset visualization eg. bar, line, slice, etc. Chart.controllers = {}; /** * Initializes the given config with global and chart default values. */ function initConfig(config) { config = config || {}; // Do NOT use configMerge() for the data object because this method merges arrays // and so would change references to labels and datasets, preventing data updates. var data = config.data = config.data || {}; data.datasets = data.datasets || []; data.labels = data.labels || []; config.options = helpers.configMerge( defaults.global, defaults[config.type], config.options || {}); return config; } /** * Updates the config of the chart * @param chart {Chart} chart to update the options for */ function updateConfig(chart) { var newOptions = chart.options; // Update Scale(s) with options if (newOptions.scale) { chart.scale.options = newOptions.scale; } else if (newOptions.scales) { newOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) { chart.scales[scaleOptions.id].options = scaleOptions; }); } // Tooltip chart.tooltip._options = newOptions.tooltips; } function positionIsHorizontal(position) { return position === 'top' || position === 'bottom'; } helpers.extend(Chart.prototype, /** @lends Chart */ { /** * @private */ construct: function(item, config) { var me = this; config = initConfig(config); var context = platform.acquireContext(item, config); var canvas = context && context.canvas; var height = canvas && canvas.height; var width = canvas && canvas.width; me.id = helpers.uid(); me.ctx = context; me.canvas = canvas; me.config = config; me.width = width; me.height = height; me.aspectRatio = height ? width / height : null; me.options = config.options; me._bufferedRender = false; /** * Provided for backward compatibility, Chart and Chart.Controller have been merged, * the "instance" still need to be defined since it might be called from plugins. * @prop Chart#chart * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ me.chart = me; me.controller = me; // chart.chart.controller #inception // Add the chart instance to the global namespace Chart.instances[me.id] = me; // Define alias to the config data: `chart.data === chart.config.data` Object.defineProperty(me, 'data', { get: function() { return me.config.data; }, set: function(value) { me.config.data = value; } }); if (!context || !canvas) { // The given item is not a compatible context2d element, let's return before finalizing // the chart initialization but after setting basic chart / controller properties that // can help to figure out that the chart is not valid (e.g chart.canvas !== null); // https://github.com/chartjs/Chart.js/issues/2807 console.error("Failed to create chart: can't acquire context from the given item"); return; } me.initialize(); me.update(); }, /** * @private */ initialize: function() { var me = this; // Before init plugin notification plugins.notify(me, 'beforeInit'); helpers.retinaScale(me, me.options.devicePixelRatio); me.bindEvents(); if (me.options.responsive) { // Initial resize before chart draws (must be silent to preserve initial animations). me.resize(true); } // Make sure scales have IDs and are built before we build any controllers. me.ensureScalesHaveIDs(); me.buildScales(); me.initToolTip(); // After init plugin notification plugins.notify(me, 'afterInit'); return me; }, clear: function() { helpers.canvas.clear(this); return this; }, stop: function() { // Stops any current animation loop occurring Chart.animationService.cancelAnimation(this); return this; }, resize: function(silent) { var me = this; var options = me.options; var canvas = me.canvas; var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; // the canvas render width and height will be casted to integers so make sure that // the canvas display style uses the same integer values to avoid blurring effect. // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); if (me.width === newWidth && me.height === newHeight) { return; } canvas.width = me.width = newWidth; canvas.height = me.height = newHeight; canvas.style.width = newWidth + 'px'; canvas.style.height = newHeight + 'px'; helpers.retinaScale(me, options.devicePixelRatio); if (!silent) { // Notify any plugins about the resize var newSize = {width: newWidth, height: newHeight}; plugins.notify(me, 'resize', [newSize]); // Notify of resize if (me.options.onResize) { me.options.onResize(me, newSize); } me.stop(); me.update(me.options.responsiveAnimationDuration); } }, ensureScalesHaveIDs: function() { var options = this.options; var scalesOptions = options.scales || {}; var scaleOptions = options.scale; helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); }); helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); }); if (scaleOptions) { scaleOptions.id = scaleOptions.id || 'scale'; } }, /** * Builds a map of scale ID to scale object for future lookup. */ buildScales: function() { var me = this; var options = me.options; var scales = me.scales = {}; var items = []; if (options.scales) { items = items.concat( (options.scales.xAxes || []).map(function(xAxisOptions) { return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; }), (options.scales.yAxes || []).map(function(yAxisOptions) { return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; }) ); } if (options.scale) { items.push({ options: options.scale, dtype: 'radialLinear', isDefault: true, dposition: 'chartArea' }); } helpers.each(items, function(item) { var scaleOptions = item.options; var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); var scaleClass = Chart.scaleService.getScaleConstructor(scaleType); if (!scaleClass) { return; } if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { scaleOptions.position = item.dposition; } var scale = new scaleClass({ id: scaleOptions.id, options: scaleOptions, ctx: me.ctx, chart: me }); scales[scale.id] = scale; scale.mergeTicksOptions(); // TODO(SB): I think we should be able to remove this custom case (options.scale) // and consider it as a regular scale part of the "scales"" map only! This would // make the logic easier and remove some useless? custom code. if (item.isDefault) { me.scale = scale; } }); Chart.scaleService.addScalesToLayout(this); }, buildOrUpdateControllers: function() { var me = this; var types = []; var newControllers = []; helpers.each(me.data.datasets, function(dataset, datasetIndex) { var meta = me.getDatasetMeta(datasetIndex); var type = dataset.type || me.config.type; if (meta.type && meta.type !== type) { me.destroyDatasetMeta(datasetIndex); meta = me.getDatasetMeta(datasetIndex); } meta.type = type; types.push(meta.type); if (meta.controller) { meta.controller.updateIndex(datasetIndex); } else { var ControllerClass = Chart.controllers[meta.type]; if (ControllerClass === undefined) { throw new Error('"' + meta.type + '" is not a chart type.'); } meta.controller = new ControllerClass(me, datasetIndex); newControllers.push(meta.controller); } }, me); return newControllers; }, /** * Reset the elements of all datasets * @private */ resetElements: function() { var me = this; helpers.each(me.data.datasets, function(dataset, datasetIndex) { me.getDatasetMeta(datasetIndex).controller.reset(); }, me); }, /** * Resets the chart back to it's state before the initial animation */ reset: function() { this.resetElements(); this.tooltip.initialize(); }, update: function(config) { var me = this; if (!config || typeof config !== 'object') { // backwards compatibility config = { duration: config, lazy: arguments[1] }; } updateConfig(me); if (plugins.notify(me, 'beforeUpdate') === false) { return; } // In case the entire data object changed me.tooltip._data = me.data; // Make sure dataset controllers are updated and new controllers are reset var newControllers = me.buildOrUpdateControllers(); // Make sure all dataset controllers have correct meta data counts helpers.each(me.data.datasets, function(dataset, datasetIndex) { me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); }, me); me.updateLayout(); // Can only reset the new controllers after the scales have been updated helpers.each(newControllers, function(controller) { controller.reset(); }); me.updateDatasets(); // Need to reset tooltip in case it is displayed with elements that are removed // after update. me.tooltip.initialize(); // Last active contains items that were previously in the tooltip. // When we reset the tooltip, we need to clear it me.lastActive = []; // Do this before render so that any plugins that need final scale updates can use it plugins.notify(me, 'afterUpdate'); if (me._bufferedRender) { me._bufferedRequest = { duration: config.duration, easing: config.easing, lazy: config.lazy }; } else { me.render(config); } }, /** * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` * hook, in which case, plugins will not be called on `afterLayout`. * @private */ updateLayout: function() { var me = this; if (plugins.notify(me, 'beforeLayout') === false) { return; } Chart.layoutService.update(this, this.width, this.height); /** * Provided for backward compatibility, use `afterLayout` instead. * @method IPlugin#afterScaleUpdate * @deprecated since version 2.5.0 * @todo remove at version 3 * @private */ plugins.notify(me, 'afterScaleUpdate'); plugins.notify(me, 'afterLayout'); }, /** * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. * @private */ updateDatasets: function() { var me = this; if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { return; } for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { me.updateDataset(i); } plugins.notify(me, 'afterDatasetsUpdate'); }, /** * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` * hook, in which case, plugins will not be called on `afterDatasetUpdate`. * @private */ updateDataset: function(index) { var me = this; var meta = me.getDatasetMeta(index); var args = { meta: meta, index: index }; if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { return; } meta.controller.update(); plugins.notify(me, 'afterDatasetUpdate', [args]); }, render: function(config) { var me = this; if (!config || typeof config !== 'object') { // backwards compatibility config = { duration: config, lazy: arguments[1] }; } var duration = config.duration; var lazy = config.lazy; if (plugins.notify(me, 'beforeRender') === false) { return; } var animationOptions = me.options.animation; var onComplete = function(animation) { plugins.notify(me, 'afterRender'); helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); }; if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { var animation = new Chart.Animation({ numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps easing: config.easing || animationOptions.easing, render: function(chart, animationObject) { var easingFunction = helpers.easing.effects[animationObject.easing]; var currentStep = animationObject.currentStep; var stepDecimal = currentStep / animationObject.numSteps; chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); }, onAnimationProgress: animationOptions.onProgress, onAnimationComplete: onComplete }); Chart.animationService.addAnimation(me, animation, duration, lazy); } else { me.draw(); // See https://github.com/chartjs/Chart.js/issues/3781 onComplete(new Chart.Animation({numSteps: 0, chart: me})); } return me; }, draw: function(easingValue) { var me = this; me.clear(); if (helpers.isNullOrUndef(easingValue)) { easingValue = 1; } me.transition(easingValue); if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { return; } // Draw all the scales helpers.each(me.boxes, function(box) { box.draw(me.chartArea); }, me); if (me.scale) { me.scale.draw(); } me.drawDatasets(easingValue); me._drawTooltip(easingValue); plugins.notify(me, 'afterDraw', [easingValue]); }, /** * @private */ transition: function(easingValue) { var me = this; for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { if (me.isDatasetVisible(i)) { me.getDatasetMeta(i).controller.transition(easingValue); } } me.tooltip.transition(easingValue); }, /** * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` * hook, in which case, plugins will not be called on `afterDatasetsDraw`. * @private */ drawDatasets: function(easingValue) { var me = this; if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { return; } // Draw datasets reversed to support proper line stacking for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { if (me.isDatasetVisible(i)) { me.drawDataset(i, easingValue); } } plugins.notify(me, 'afterDatasetsDraw', [easingValue]); }, /** * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` * hook, in which case, plugins will not be called on `afterDatasetDraw`. * @private */ drawDataset: function(index, easingValue) { var me = this; var meta = me.getDatasetMeta(index); var args = { meta: meta, index: index, easingValue: easingValue }; if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { return; } meta.controller.draw(easingValue); plugins.notify(me, 'afterDatasetDraw', [args]); }, /** * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` * hook, in which case, plugins will not be called on `afterTooltipDraw`. * @private */ _drawTooltip: function(easingValue) { var me = this; var tooltip = me.tooltip; var args = { tooltip: tooltip, easingValue: easingValue }; if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { return; } tooltip.draw(); plugins.notify(me, 'afterTooltipDraw', [args]); }, // Get the single element that was clicked on // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw getElementAtEvent: function(e) { return Interaction.modes.single(this, e); }, getElementsAtEvent: function(e) { return Interaction.modes.label(this, e, {intersect: true}); }, getElementsAtXAxis: function(e) { return Interaction.modes['x-axis'](this, e, {intersect: true}); }, getElementsAtEventForMode: function(e, mode, options) { var method = Interaction.modes[mode]; if (typeof method === 'function') { return method(this, e, options); } return []; }, getDatasetAtEvent: function(e) { return Interaction.modes.dataset(this, e, {intersect: true}); }, getDatasetMeta: function(datasetIndex) { var me = this; var dataset = me.data.datasets[datasetIndex]; if (!dataset._meta) { dataset._meta = {}; } var meta = dataset._meta[me.id]; if (!meta) { meta = dataset._meta[me.id] = { type: null, data: [], dataset: null, controller: null, hidden: null, // See isDatasetVisible() comment xAxisID: null, yAxisID: null }; } return meta; }, getVisibleDatasetCount: function() { var count = 0; for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { if (this.isDatasetVisible(i)) { count++; } } return count; }, isDatasetVisible: function(datasetIndex) { var meta = this.getDatasetMeta(datasetIndex); // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; }, generateLegend: function() { return this.options.legendCallback(this); }, /** * @private */ destroyDatasetMeta: function(datasetIndex) { var id = this.id; var dataset = this.data.datasets[datasetIndex]; var meta = dataset._meta && dataset._meta[id]; if (meta) { meta.controller.destroy(); delete dataset._meta[id]; } }, destroy: function() { var me = this; var canvas = me.canvas; var i, ilen; me.stop(); // dataset controllers need to cleanup associated data for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { me.destroyDatasetMeta(i); } if (canvas) { me.unbindEvents(); helpers.canvas.clear(me); platform.releaseContext(me.ctx); me.canvas = null; me.ctx = null; } plugins.notify(me, 'destroy'); delete Chart.instances[me.id]; }, toBase64Image: function() { return this.canvas.toDataURL.apply(this.canvas, arguments); }, initToolTip: function() { var me = this; me.tooltip = new Chart.Tooltip({ _chart: me, _chartInstance: me, // deprecated, backward compatibility _data: me.data, _options: me.options.tooltips }, me); }, /** * @private */ bindEvents: function() { var me = this; var listeners = me._listeners = {}; var listener = function() { me.eventHandler.apply(me, arguments); }; helpers.each(me.options.events, function(type) { platform.addEventListener(me, type, listener); listeners[type] = listener; }); // Elements used to detect size change should not be injected for non responsive charts. // See https://github.com/chartjs/Chart.js/issues/2210 if (me.options.responsive) { listener = function() { me.resize(); }; platform.addEventListener(me, 'resize', listener); listeners.resize = listener; } }, /** * @private */ unbindEvents: function() { var me = this; var listeners = me._listeners; if (!listeners) { return; } delete me._listeners; helpers.each(listeners, function(listener, type) { platform.removeEventListener(me, type, listener); }); }, updateHoverStyle: function(elements, mode, enabled) { var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; var element, i, ilen; for (i = 0, ilen = elements.length; i < ilen; ++i) { element = elements[i]; if (element) { this.getDatasetMeta(element._datasetIndex).controller[method](element); } } }, /** * @private */ eventHandler: function(e) { var me = this; var tooltip = me.tooltip; if (plugins.notify(me, 'beforeEvent', [e]) === false) { return; } // Buffer any update calls so that renders do not occur me._bufferedRender = true; me._bufferedRequest = null; var changed = me.handleEvent(e); changed |= tooltip && tooltip.handleEvent(e); plugins.notify(me, 'afterEvent', [e]); var bufferedRequest = me._bufferedRequest; if (bufferedRequest) { // If we have an update that was triggered, we need to do a normal render me.render(bufferedRequest); } else if (changed && !me.animating) { // If entering, leaving, or changing elements, animate the change via pivot me.stop(); // We only need to render at this point. Updating will cause scales to be // recomputed generating flicker & using more memory than necessary. me.render(me.options.hover.animationDuration, true); } me._bufferedRender = false; me._bufferedRequest = null; return me; }, /** * Handle an event * @private * @param {IEvent} event the event to handle * @return {Boolean} true if the chart needs to re-render */ handleEvent: function(e) { var me = this; var options = me.options || {}; var hoverOptions = options.hover; var changed = false; me.lastActive = me.lastActive || []; // Find Active Elements for hover and tooltips if (e.type === 'mouseout') { me.active = []; } else { me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); } // Invoke onHover hook // Need to call with native event here to not break backwards compatibility helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); if (e.type === 'mouseup' || e.type === 'click') { if (options.onClick) { // Use e.native here for backwards compatibility options.onClick.call(me, e.native, me.active); } } // Remove styling for last active (even if it may still be active) if (me.lastActive.length) { me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); } // Built in hover styling if (me.active.length && hoverOptions.mode) { me.updateHoverStyle(me.active, hoverOptions.mode, true); } changed = !helpers.arrayEquals(me.active, me.lastActive); // Remember Last Actives me.lastActive = me.active; return changed; } }); /** * Provided for backward compatibility, use Chart instead. * @class Chart.Controller * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ Chart.Controller = Chart; }; },{"25":25,"28":28,"45":45,"48":48}],24:[function(require,module,exports){ 'use strict'; var helpers = require(45); module.exports = function(Chart) { var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; /** * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', * 'unshift') and notify the listener AFTER the array has been altered. Listeners are * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. */ function listenArrayEvents(array, listener) { if (array._chartjs) { array._chartjs.listeners.push(listener); return; } Object.defineProperty(array, '_chartjs', { configurable: true, enumerable: false, value: { listeners: [listener] } }); arrayEvents.forEach(function(key) { var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); var base = array[key]; Object.defineProperty(array, key, { configurable: true, enumerable: false, value: function() { var args = Array.prototype.slice.call(arguments); var res = base.apply(this, args); helpers.each(array._chartjs.listeners, function(object) { if (typeof object[method] === 'function') { object[method].apply(object, args); } }); return res; } }); }); } /** * Removes the given array event listener and cleanup extra attached properties (such as * the _chartjs stub and overridden methods) if array doesn't have any more listeners. */ function unlistenArrayEvents(array, listener) { var stub = array._chartjs; if (!stub) { return; } var listeners = stub.listeners; var index = listeners.indexOf(listener); if (index !== -1) { listeners.splice(index, 1); } if (listeners.length > 0) { return; } arrayEvents.forEach(function(key) { delete array[key]; }); delete array._chartjs; } // Base class for all dataset controllers (line, bar, etc) Chart.DatasetController = function(chart, datasetIndex) { this.initialize(chart, datasetIndex); }; helpers.extend(Chart.DatasetController.prototype, { /** * Element type used to generate a meta dataset (e.g. Chart.element.Line). * @type {Chart.core.element} */ datasetElementType: null, /** * Element type used to generate a meta data (e.g. Chart.element.Point). * @type {Chart.core.element} */ dataElementType: null, initialize: function(chart, datasetIndex) { var me = this; me.chart = chart; me.index = datasetIndex; me.linkScales(); me.addElements(); }, updateIndex: function(datasetIndex) { this.index = datasetIndex; }, linkScales: function() { var me = this; var meta = me.getMeta(); var dataset = me.getDataset(); if (meta.xAxisID === null) { meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; } if (meta.yAxisID === null) { meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; } }, getDataset: function() { return this.chart.data.datasets[this.index]; }, getMeta: function() { return this.chart.getDatasetMeta(this.index); }, getScaleForId: function(scaleID) { return this.chart.scales[scaleID]; }, reset: function() { this.update(true); }, /** * @private */ destroy: function() { if (this._data) { unlistenArrayEvents(this._data, this); } }, createMetaDataset: function() { var me = this; var type = me.datasetElementType; return type && new type({ _chart: me.chart, _datasetIndex: me.index }); }, createMetaData: function(index) { var me = this; var type = me.dataElementType; return type && new type({ _chart: me.chart, _datasetIndex: me.index, _index: index }); }, addElements: function() { var me = this; var meta = me.getMeta(); var data = me.getDataset().data || []; var metaData = meta.data; var i, ilen; for (i = 0, ilen = data.length; i < ilen; ++i) { metaData[i] = metaData[i] || me.createMetaData(i); } meta.dataset = meta.dataset || me.createMetaDataset(); }, addElementAndReset: function(index) { var element = this.createMetaData(index); this.getMeta().data.splice(index, 0, element); this.updateElement(element, index, true); }, buildOrUpdateElements: function() { var me = this; var dataset = me.getDataset(); var data = dataset.data || (dataset.data = []); // In order to correctly handle data addition/deletion animation (an thus simulate // real-time charts), we need to monitor these data modifications and synchronize // the internal meta data accordingly. if (me._data !== data) { if (me._data) { // This case happens when the user replaced the data array instance. unlistenArrayEvents(me._data, me); } listenArrayEvents(data, me); me._data = data; } // Re-sync meta data in case the user replaced the data array or if we missed // any updates and so make sure that we handle number of datapoints changing. me.resyncElements(); }, update: helpers.noop, transition: function(easingValue) { var meta = this.getMeta(); var elements = meta.data || []; var ilen = elements.length; var i = 0; for (; i < ilen; ++i) { elements[i].transition(easingValue); } if (meta.dataset) { meta.dataset.transition(easingValue); } }, draw: function() { var meta = this.getMeta(); var elements = meta.data || []; var ilen = elements.length; var i = 0; if (meta.dataset) { meta.dataset.draw(); } for (; i < ilen; ++i) { elements[i].draw(); } }, removeHoverStyle: function(element, elementOpts) { var dataset = this.chart.data.datasets[element._datasetIndex]; var index = element._index; var custom = element.custom || {}; var valueOrDefault = helpers.valueAtIndexOrDefault; var model = element._model; model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); }, setHoverStyle: function(element) { var dataset = this.chart.data.datasets[element._datasetIndex]; var index = element._index; var custom = element.custom || {}; var valueOrDefault = helpers.valueAtIndexOrDefault; var getHoverColor = helpers.getHoverColor; var model = element._model; model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); }, /** * @private */ resyncElements: function() { var me = this; var meta = me.getMeta(); var data = me.getDataset().data; var numMeta = meta.data.length; var numData = data.length; if (numData < numMeta) { meta.data.splice(numData, numMeta - numData); } else if (numData > numMeta) { me.insertElements(numMeta, numData - numMeta); } }, /** * @private */ insertElements: function(start, count) { for (var i = 0; i < count; ++i) { this.addElementAndReset(start + i); } }, /** * @private */ onDataPush: function() { this.insertElements(this.getDataset().data.length - 1, arguments.length); }, /** * @private */ onDataPop: function() { this.getMeta().data.pop(); }, /** * @private */ onDataShift: function() { this.getMeta().data.shift(); }, /** * @private */ onDataSplice: function(start, count) { this.getMeta().data.splice(start, count); this.insertElements(start, arguments.length - 2); }, /** * @private */ onDataUnshift: function() { this.insertElements(0, arguments.length); } }); Chart.DatasetController.extend = helpers.inherits; }; },{"45":45}],25:[function(require,module,exports){ 'use strict'; var helpers = require(45); module.exports = { /** * @private */ _set: function(scope, values) { return helpers.merge(this[scope] || (this[scope] = {}), values); } }; },{"45":45}],26:[function(require,module,exports){ 'use strict'; var color = require(3); var helpers = require(45); function interpolate(start, view, model, ease) { var keys = Object.keys(model); var i, ilen, key, actual, origin, target, type, c0, c1; for (i = 0, ilen = keys.length; i < ilen; ++i) { key = keys[i]; target = model[key]; // if a value is added to the model after pivot() has been called, the view // doesn't contain it, so let's initialize the view to the target value. if (!view.hasOwnProperty(key)) { view[key] = target; } actual = view[key]; if (actual === target || key[0] === '_') { continue; } if (!start.hasOwnProperty(key)) { start[key] = actual; } origin = start[key]; type = typeof target; if (type === typeof origin) { if (type === 'string') { c0 = color(origin); if (c0.valid) { c1 = color(target); if (c1.valid) { view[key] = c1.mix(c0, ease).rgbString(); continue; } } } else if (type === 'number' && isFinite(origin) && isFinite(target)) { view[key] = origin + (target - origin) * ease; continue; } } view[key] = target; } } var Element = function(configuration) { helpers.extend(this, configuration); this.initialize.apply(this, arguments); }; helpers.extend(Element.prototype, { initialize: function() { this.hidden = false; }, pivot: function() { var me = this; if (!me._view) { me._view = helpers.clone(me._model); } me._start = {}; return me; }, transition: function(ease) { var me = this; var model = me._model; var start = me._start; var view = me._view; // No animation -> No Transition if (!model || ease === 1) { me._view = model; me._start = null; return me; } if (!view) { view = me._view = {}; } if (!start) { start = me._start = {}; } interpolate(start, view, model, ease); return me; }, tooltipPosition: function() { return { x: this._model.x, y: this._model.y }; }, hasValue: function() { return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); } }); Element.extend = helpers.inherits; module.exports = Element; },{"3":3,"45":45}],27:[function(require,module,exports){ /* global window: false */ /* global document: false */ 'use strict'; var color = require(3); var defaults = require(25); var helpers = require(45); module.exports = function(Chart) { // -- Basic js utility methods helpers.configMerge = function(/* objects ... */) { return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { merger: function(key, target, source, options) { var tval = target[key] || {}; var sval = source[key]; if (key === 'scales') { // scale config merging is complex. Add our own function here for that target[key] = helpers.scaleMerge(tval, sval); } else if (key === 'scale') { // used in polar area & radar charts since there is only one scale target[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]); } else { helpers._merger(key, target, source, options); } } }); }; helpers.scaleMerge = function(/* objects ... */) { return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { merger: function(key, target, source, options) { if (key === 'xAxes' || key === 'yAxes') { var slen = source[key].length; var i, type, scale; if (!target[key]) { target[key] = []; } for (i = 0; i < slen; ++i) { scale = source[key][i]; type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); if (i >= target[key].length) { target[key].push({}); } if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { // new/untyped scale or type changed: let's apply the new defaults // then merge source scale to correctly overwrite the defaults. helpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]); } else { // scales type are the same helpers.merge(target[key][i], scale); } } } else { helpers._merger(key, target, source, options); } } }); }; helpers.where = function(collection, filterCallback) { if (helpers.isArray(collection) && Array.prototype.filter) { return collection.filter(filterCallback); } var filtered = []; helpers.each(collection, function(item) { if (filterCallback(item)) { filtered.push(item); } }); return filtered; }; helpers.findIndex = Array.prototype.findIndex ? function(array, callback, scope) { return array.findIndex(callback, scope); } : function(array, callback, scope) { scope = scope === undefined ? array : scope; for (var i = 0, ilen = array.length; i < ilen; ++i) { if (callback.call(scope, array[i], i, array)) { return i; } } return -1; }; helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { // Default to start of the array if (helpers.isNullOrUndef(startIndex)) { startIndex = -1; } for (var i = startIndex + 1; i < arrayToSearch.length; i++) { var currentItem = arrayToSearch[i]; if (filterCallback(currentItem)) { return currentItem; } } }; helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { // Default to end of the array if (helpers.isNullOrUndef(startIndex)) { startIndex = arrayToSearch.length; } for (var i = startIndex - 1; i >= 0; i--) { var currentItem = arrayToSearch[i]; if (filterCallback(currentItem)) { return currentItem; } } }; // -- Math methods helpers.isNumber = function(n) { return !isNaN(parseFloat(n)) && isFinite(n); }; helpers.almostEquals = function(x, y, epsilon) { return Math.abs(x - y) < epsilon; }; helpers.almostWhole = function(x, epsilon) { var rounded = Math.round(x); return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); }; helpers.max = function(array) { return array.reduce(function(max, value) { if (!isNaN(value)) { return Math.max(max, value); } return max; }, Number.NEGATIVE_INFINITY); }; helpers.min = function(array) { return array.reduce(function(min, value) { if (!isNaN(value)) { return Math.min(min, value); } return min; }, Number.POSITIVE_INFINITY); }; helpers.sign = Math.sign ? function(x) { return Math.sign(x); } : function(x) { x = +x; // convert to a number if (x === 0 || isNaN(x)) { return x; } return x > 0 ? 1 : -1; }; helpers.log10 = Math.log10 ? function(x) { return Math.log10(x); } : function(x) { return Math.log(x) / Math.LN10; }; helpers.toRadians = function(degrees) { return degrees * (Math.PI / 180); }; helpers.toDegrees = function(radians) { return radians * (180 / Math.PI); }; // Gets the angle from vertical upright to the point about a centre. helpers.getAngleFromPoint = function(centrePoint, anglePoint) { var distanceFromXCenter = anglePoint.x - centrePoint.x; var distanceFromYCenter = anglePoint.y - centrePoint.y; var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); if (angle < (-0.5 * Math.PI)) { angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] } return { angle: angle, distance: radialDistanceFromCenter }; }; helpers.distanceBetweenPoints = function(pt1, pt2) { return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); }; helpers.aliasPixel = function(pixelWidth) { return (pixelWidth % 2 === 0) ? 0 : 0.5; }; helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { // Props to Rob Spencer at scaled innovation for his post on splining between points // http://scaledinnovation.com/analytics/splines/aboutSplines.html // This function must also respect "skipped" points var previous = firstPoint.skip ? middlePoint : firstPoint; var current = middlePoint; var next = afterPoint.skip ? middlePoint : afterPoint; var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); var s01 = d01 / (d01 + d12); var s12 = d12 / (d01 + d12); // If all points are the same, s01 & s02 will be inf s01 = isNaN(s01) ? 0 : s01; s12 = isNaN(s12) ? 0 : s12; var fa = t * s01; // scaling factor for triangle Ta var fb = t * s12; return { previous: { x: current.x - fa * (next.x - previous.x), y: current.y - fa * (next.y - previous.y) }, next: { x: current.x + fb * (next.x - previous.x), y: current.y + fb * (next.y - previous.y) } }; }; helpers.EPSILON = Number.EPSILON || 1e-14; helpers.splineCurveMonotone = function(points) { // This function calculates Bézier control points in a similar way than |splineCurve|, // but preserves monotonicity of the provided data and ensures no local extremums are added // between the dataset discrete points due to the interpolation. // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation var pointsWithTangents = (points || []).map(function(point) { return { model: point._model, deltaK: 0, mK: 0 }; }); // Calculate slopes (deltaK) and initialize tangents (mK) var pointsLen = pointsWithTangents.length; var i, pointBefore, pointCurrent, pointAfter; for (i = 0; i < pointsLen; ++i) { pointCurrent = pointsWithTangents[i]; if (pointCurrent.model.skip) { continue; } pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; if (pointAfter && !pointAfter.model.skip) { var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; } if (!pointBefore || pointBefore.model.skip) { pointCurrent.mK = pointCurrent.deltaK; } else if (!pointAfter || pointAfter.model.skip) { pointCurrent.mK = pointBefore.deltaK; } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { pointCurrent.mK = 0; } else { pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; } } // Adjust tangents to ensure monotonic properties var alphaK, betaK, tauK, squaredMagnitude; for (i = 0; i < pointsLen - 1; ++i) { pointCurrent = pointsWithTangents[i]; pointAfter = pointsWithTangents[i + 1]; if (pointCurrent.model.skip || pointAfter.model.skip) { continue; } if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { pointCurrent.mK = pointAfter.mK = 0; continue; } alphaK = pointCurrent.mK / pointCurrent.deltaK; betaK = pointAfter.mK / pointCurrent.deltaK; squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); if (squaredMagnitude <= 9) { continue; } tauK = 3 / Math.sqrt(squaredMagnitude); pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; pointAfter.mK = betaK * tauK * pointCurrent.deltaK; } // Compute control points var deltaX; for (i = 0; i < pointsLen; ++i) { pointCurrent = pointsWithTangents[i]; if (pointCurrent.model.skip) { continue; } pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; if (pointBefore && !pointBefore.model.skip) { deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; } if (pointAfter && !pointAfter.model.skip) { deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; } } }; helpers.nextItem = function(collection, index, loop) { if (loop) { return index >= collection.length - 1 ? collection[0] : collection[index + 1]; } return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; }; helpers.previousItem = function(collection, index, loop) { if (loop) { return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; } return index <= 0 ? collection[0] : collection[index - 1]; }; // Implementation of the nice number algorithm used in determining where axis labels will go helpers.niceNum = function(range, round) { var exponent = Math.floor(helpers.log10(range)); var fraction = range / Math.pow(10, exponent); var niceFraction; if (round) { if (fraction < 1.5) { niceFraction = 1; } else if (fraction < 3) { niceFraction = 2; } else if (fraction < 7) { niceFraction = 5; } else { niceFraction = 10; } } else if (fraction <= 1.0) { niceFraction = 1; } else if (fraction <= 2) { niceFraction = 2; } else if (fraction <= 5) { niceFraction = 5; } else { niceFraction = 10; } return niceFraction * Math.pow(10, exponent); }; // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ helpers.requestAnimFrame = (function() { if (typeof window === 'undefined') { return function(callback) { callback(); }; } return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { return window.setTimeout(callback, 1000 / 60); }; }()); // -- DOM methods helpers.getRelativePosition = function(evt, chart) { var mouseX, mouseY; var e = evt.originalEvent || evt; var canvas = evt.currentTarget || evt.srcElement; var boundingRect = canvas.getBoundingClientRect(); var touches = e.touches; if (touches && touches.length > 0) { mouseX = touches[0].clientX; mouseY = touches[0].clientY; } else { mouseX = e.clientX; mouseY = e.clientY; } // Scale mouse coordinates into canvas coordinates // by following the pattern laid out by 'jerryj' in the comments of // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); return { x: mouseX, y: mouseY }; }; // Private helper function to convert max-width/max-height values that may be percentages into a number function parseMaxStyle(styleValue, node, parentProperty) { var valueInPixels; if (typeof styleValue === 'string') { valueInPixels = parseInt(styleValue, 10); if (styleValue.indexOf('%') !== -1) { // percentage * size in dimension valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; } } else { valueInPixels = styleValue; } return valueInPixels; } /** * Returns if the given value contains an effective constraint. * @private */ function isConstrainedValue(value) { return value !== undefined && value !== null && value !== 'none'; } // Private helper to get a constraint dimension // @param domNode : the node to check the constraint on // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) // @param percentageProperty : property of parent to use when calculating width as a percentage // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser function getConstraintDimension(domNode, maxStyle, percentageProperty) { var view = document.defaultView; var parentNode = domNode.parentNode; var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; var hasCNode = isConstrainedValue(constrainedNode); var hasCContainer = isConstrainedValue(constrainedContainer); var infinity = Number.POSITIVE_INFINITY; if (hasCNode || hasCContainer) { return Math.min( hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); } return 'none'; } // returns Number or undefined if no constraint helpers.getConstraintWidth = function(domNode) { return getConstraintDimension(domNode, 'max-width', 'clientWidth'); }; // returns Number or undefined if no constraint helpers.getConstraintHeight = function(domNode) { return getConstraintDimension(domNode, 'max-height', 'clientHeight'); }; helpers.getMaximumWidth = function(domNode) { var container = domNode.parentNode; if (!container) { return domNode.clientWidth; } var paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10); var paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10); var w = container.clientWidth - paddingLeft - paddingRight; var cw = helpers.getConstraintWidth(domNode); return isNaN(cw) ? w : Math.min(w, cw); }; helpers.getMaximumHeight = function(domNode) { var container = domNode.parentNode; if (!container) { return domNode.clientHeight; } var paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10); var paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10); var h = container.clientHeight - paddingTop - paddingBottom; var ch = helpers.getConstraintHeight(domNode); return isNaN(ch) ? h : Math.min(h, ch); }; helpers.getStyle = function(el, property) { return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property); }; helpers.retinaScale = function(chart, forceRatio) { var pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1; if (pixelRatio === 1) { return; } var canvas = chart.canvas; var height = chart.height; var width = chart.width; canvas.height = height * pixelRatio; canvas.width = width * pixelRatio; chart.ctx.scale(pixelRatio, pixelRatio); // If no style has been set on the canvas, the render size is used as display size, // making the chart visually bigger, so let's enforce it to the "correct" values. // See https://github.com/chartjs/Chart.js/issues/3575 canvas.style.height = height + 'px'; canvas.style.width = width + 'px'; }; // -- Canvas methods helpers.fontString = function(pixelSize, fontStyle, fontFamily) { return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; }; helpers.longestText = function(ctx, font, arrayOfThings, cache) { cache = cache || {}; var data = cache.data = cache.data || {}; var gc = cache.garbageCollect = cache.garbageCollect || []; if (cache.font !== font) { data = cache.data = {}; gc = cache.garbageCollect = []; cache.font = font; } ctx.font = font; var longest = 0; helpers.each(arrayOfThings, function(thing) { // Undefined strings and arrays should not be measured if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { longest = helpers.measureText(ctx, data, gc, longest, thing); } else if (helpers.isArray(thing)) { // if it is an array lets measure each element // to do maybe simplify this function a bit so we can do this more recursively? helpers.each(thing, function(nestedThing) { // Undefined strings and arrays should not be measured if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { longest = helpers.measureText(ctx, data, gc, longest, nestedThing); } }); } }); var gcLen = gc.length / 2; if (gcLen > arrayOfThings.length) { for (var i = 0; i < gcLen; i++) { delete data[gc[i]]; } gc.splice(0, gcLen); } return longest; }; helpers.measureText = function(ctx, data, gc, longest, string) { var textWidth = data[string]; if (!textWidth) { textWidth = data[string] = ctx.measureText(string).width; gc.push(string); } if (textWidth > longest) { longest = textWidth; } return longest; }; helpers.numberOfLabelLines = function(arrayOfThings) { var numberOfLines = 1; helpers.each(arrayOfThings, function(thing) { if (helpers.isArray(thing)) { if (thing.length > numberOfLines) { numberOfLines = thing.length; } } }); return numberOfLines; }; helpers.color = !color ? function(value) { console.error('Color.js not found!'); return value; } : function(value) { /* global CanvasGradient */ if (value instanceof CanvasGradient) { value = defaults.global.defaultColor; } return color(value); }; helpers.getHoverColor = function(colorValue) { /* global CanvasPattern */ return (colorValue instanceof CanvasPattern) ? colorValue : helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); }; }; },{"25":25,"3":3,"45":45}],28:[function(require,module,exports){ 'use strict'; var helpers = require(45); /** * Helper function to get relative position for an event * @param {Event|IEvent} event - The event to get the position for * @param {Chart} chart - The chart * @returns {Point} the event position */ function getRelativePosition(e, chart) { if (e.native) { return { x: e.x, y: e.y }; } return helpers.getRelativePosition(e, chart); } /** * Helper function to traverse all of the visible elements in the chart * @param chart {chart} the chart * @param handler {Function} the callback to execute for each visible item */ function parseVisibleItems(chart, handler) { var datasets = chart.data.datasets; var meta, i, j, ilen, jlen; for (i = 0, ilen = datasets.length; i < ilen; ++i) { if (!chart.isDatasetVisible(i)) { continue; } meta = chart.getDatasetMeta(i); for (j = 0, jlen = meta.data.length; j < jlen; ++j) { var element = meta.data[j]; if (!element._view.skip) { handler(element); } } } } /** * Helper function to get the items that intersect the event position * @param items {ChartElement[]} elements to filter * @param position {Point} the point to be nearest to * @return {ChartElement[]} the nearest items */ function getIntersectItems(chart, position) { var elements = []; parseVisibleItems(chart, function(element) { if (element.inRange(position.x, position.y)) { elements.push(element); } }); return elements; } /** * Helper function to get the items nearest to the event position considering all visible items in teh chart * @param chart {Chart} the chart to look at elements from * @param position {Point} the point to be nearest to * @param intersect {Boolean} if true, only consider items that intersect the position * @param distanceMetric {Function} function to provide the distance between points * @return {ChartElement[]} the nearest items */ function getNearestItems(chart, position, intersect, distanceMetric) { var minDistance = Number.POSITIVE_INFINITY; var nearestItems = []; parseVisibleItems(chart, function(element) { if (intersect && !element.inRange(position.x, position.y)) { return; } var center = element.getCenterPoint(); var distance = distanceMetric(position, center); if (distance < minDistance) { nearestItems = [element]; minDistance = distance; } else if (distance === minDistance) { // Can have multiple items at the same distance in which case we sort by size nearestItems.push(element); } }); return nearestItems; } /** * Get a distance metric function for two points based on the * axis mode setting * @param {String} axis the axis mode. x|y|xy */ function getDistanceMetricForAxis(axis) { var useX = axis.indexOf('x') !== -1; var useY = axis.indexOf('y') !== -1; return function(pt1, pt2) { var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); }; } function indexMode(chart, e, options) { var position = getRelativePosition(e, chart); // Default axis for index mode is 'x' to match old behaviour options.axis = options.axis || 'x'; var distanceMetric = getDistanceMetricForAxis(options.axis); var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); var elements = []; if (!items.length) { return []; } chart.data.datasets.forEach(function(dataset, datasetIndex) { if (chart.isDatasetVisible(datasetIndex)) { var meta = chart.getDatasetMeta(datasetIndex); var element = meta.data[items[0]._index]; // don't count items that are skipped (null data) if (element && !element._view.skip) { elements.push(element); } } }); return elements; } /** * @interface IInteractionOptions */ /** * If true, only consider items that intersect the point * @name IInterfaceOptions#boolean * @type Boolean */ /** * Contains interaction related functions * @namespace Chart.Interaction */ module.exports = { // Helper function for different modes modes: { single: function(chart, e) { var position = getRelativePosition(e, chart); var elements = []; parseVisibleItems(chart, function(element) { if (element.inRange(position.x, position.y)) { elements.push(element); return elements; } }); return elements.slice(0, 1); }, /** * @function Chart.Interaction.modes.label * @deprecated since version 2.4.0 * @todo remove at version 3 * @private */ label: indexMode, /** * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item * @function Chart.Interaction.modes.index * @since v2.4.0 * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use during interaction * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ index: indexMode, /** * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something * If the options.intersect is false, we find the nearest item and return the items in that dataset * @function Chart.Interaction.modes.dataset * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use during interaction * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ dataset: function(chart, e, options) { var position = getRelativePosition(e, chart); options.axis = options.axis || 'xy'; var distanceMetric = getDistanceMetricForAxis(options.axis); var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); if (items.length > 0) { items = chart.getDatasetMeta(items[0]._datasetIndex).data; } return items; }, /** * @function Chart.Interaction.modes.x-axis * @deprecated since version 2.4.0. Use index mode and intersect == true * @todo remove at version 3 * @private */ 'x-axis': function(chart, e) { return indexMode(chart, e, {intersect: false}); }, /** * Point mode returns all elements that hit test based on the event position * of the event * @function Chart.Interaction.modes.intersect * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ point: function(chart, e) { var position = getRelativePosition(e, chart); return getIntersectItems(chart, position); }, /** * nearest mode returns the element closest to the point * @function Chart.Interaction.modes.intersect * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ nearest: function(chart, e, options) { var position = getRelativePosition(e, chart); options.axis = options.axis || 'xy'; var distanceMetric = getDistanceMetricForAxis(options.axis); var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); // We have multiple items at the same distance from the event. Now sort by smallest if (nearestItems.length > 1) { nearestItems.sort(function(a, b) { var sizeA = a.getArea(); var sizeB = b.getArea(); var ret = sizeA - sizeB; if (ret === 0) { // if equal sort by dataset index ret = a._datasetIndex - b._datasetIndex; } return ret; }); } // Return only 1 item return nearestItems.slice(0, 1); }, /** * x mode returns the elements that hit-test at the current x coordinate * @function Chart.Interaction.modes.x * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ x: function(chart, e, options) { var position = getRelativePosition(e, chart); var items = []; var intersectsItem = false; parseVisibleItems(chart, function(element) { if (element.inXRange(position.x)) { items.push(element); } if (element.inRange(position.x, position.y)) { intersectsItem = true; } }); // If we want to trigger on an intersect and we don't have any items // that intersect the position, return nothing if (options.intersect && !intersectsItem) { items = []; } return items; }, /** * y mode returns the elements that hit-test at the current y coordinate * @function Chart.Interaction.modes.y * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ y: function(chart, e, options) { var position = getRelativePosition(e, chart); var items = []; var intersectsItem = false; parseVisibleItems(chart, function(element) { if (element.inYRange(position.y)) { items.push(element); } if (element.inRange(position.x, position.y)) { intersectsItem = true; } }); // If we want to trigger on an intersect and we don't have any items // that intersect the position, return nothing if (options.intersect && !intersectsItem) { items = []; } return items; } } }; },{"45":45}],29:[function(require,module,exports){ 'use strict'; var defaults = require(25); defaults._set('global', { responsive: true, responsiveAnimationDuration: 0, maintainAspectRatio: true, events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], hover: { onHover: null, mode: 'nearest', intersect: true, animationDuration: 400 }, onClick: null, defaultColor: 'rgba(0,0,0,0.1)', defaultFontColor: '#666', defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", defaultFontSize: 12, defaultFontStyle: 'normal', showLines: true, // Element defaults defined in element extensions elements: {}, // Layout options such as padding layout: { padding: { top: 0, right: 0, bottom: 0, left: 0 } } }); module.exports = function() { // Occupy the global variable of Chart, and create a simple base class var Chart = function(item, config) { this.construct(item, config); return this; }; Chart.Chart = Chart; return Chart; }; },{"25":25}],30:[function(require,module,exports){ 'use strict'; var helpers = require(45); module.exports = function(Chart) { function filterByPosition(array, position) { return helpers.where(array, function(v) { return v.position === position; }); } function sortByWeight(array, reverse) { array.forEach(function(v, i) { v._tmpIndex_ = i; return v; }); array.sort(function(a, b) { var v0 = reverse ? b : a; var v1 = reverse ? a : b; return v0.weight === v1.weight ? v0._tmpIndex_ - v1._tmpIndex_ : v0.weight - v1.weight; }); array.forEach(function(v) { delete v._tmpIndex_; }); } /** * @interface ILayoutItem * @prop {String} position - The position of the item in the chart layout. Possible values are * 'left', 'top', 'right', 'bottom', and 'chartArea' * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) * @prop {Function} update - Takes two parameters: width and height. Returns size of item * @prop {Function} getPadding - Returns an object with padding on the edges * @prop {Number} width - Width of item. Must be valid after update() * @prop {Number} height - Height of item. Must be valid after update() * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update */ // The layout service is very self explanatory. It's responsible for the layout within a chart. // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need // It is this service's responsibility of carrying out that layout. Chart.layoutService = { defaults: {}, /** * Register a box to a chart. * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. * @param {Chart} chart - the chart to use * @param {ILayoutItem} item - the item to add to be layed out */ addBox: function(chart, item) { if (!chart.boxes) { chart.boxes = []; } // initialize item with default values item.fullWidth = item.fullWidth || false; item.position = item.position || 'top'; item.weight = item.weight || 0; chart.boxes.push(item); }, /** * Remove a layoutItem from a chart * @param {Chart} chart - the chart to remove the box from * @param {Object} layoutItem - the item to remove from the layout */ removeBox: function(chart, layoutItem) { var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; if (index !== -1) { chart.boxes.splice(index, 1); } }, /** * Sets (or updates) options on the given `item`. * @param {Chart} chart - the chart in which the item lives (or will be added to) * @param {Object} item - the item to configure with the given options * @param {Object} options - the new item options. */ configure: function(chart, item, options) { var props = ['fullWidth', 'position', 'weight']; var ilen = props.length; var i = 0; var prop; for (; i < ilen; ++i) { prop = props[i]; if (options.hasOwnProperty(prop)) { item[prop] = options[prop]; } } }, /** * Fits boxes of the given chart into the given size by having each box measure itself * then running a fitting algorithm * @param {Chart} chart - the chart * @param {Number} width - the width to fit into * @param {Number} height - the height to fit into */ update: function(chart, width, height) { if (!chart) { return; } var layoutOptions = chart.options.layout || {}; var padding = helpers.options.toPadding(layoutOptions.padding); var leftPadding = padding.left; var rightPadding = padding.right; var topPadding = padding.top; var bottomPadding = padding.bottom; var leftBoxes = filterByPosition(chart.boxes, 'left'); var rightBoxes = filterByPosition(chart.boxes, 'right'); var topBoxes = filterByPosition(chart.boxes, 'top'); var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); // Sort boxes by weight. A higher weight is further away from the chart area sortByWeight(leftBoxes, true); sortByWeight(rightBoxes, false); sortByWeight(topBoxes, true); sortByWeight(bottomBoxes, false); // Essentially we now have any number of boxes on each of the 4 sides. // Our canvas looks like the following. // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and // B1 is the bottom axis // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays // These locations are single-box locations only, when trying to register a chartArea location that is already taken, // an error will be thrown. // // |----------------------------------------------------| // | T1 (Full Width) | // |----------------------------------------------------| // | | | T2 | | // | |----|-------------------------------------|----| // | | | C1 | | C2 | | // | | |----| |----| | // | | | | | // | L1 | L2 | ChartArea (C0) | R1 | // | | | | | // | | |----| |----| | // | | | C3 | | C4 | | // | |----|-------------------------------------|----| // | | | B1 | | // |----------------------------------------------------| // | B2 (Full Width) | // |----------------------------------------------------| // // What we do to find the best sizing, we do the following // 1. Determine the minimum size of the chart area. // 2. Split the remaining width equally between each vertical axis // 3. Split the remaining height equally between each horizontal axis // 4. Give each layout the maximum size it can be. The layout will return it's minimum size // 5. Adjust the sizes of each axis based on it's minimum reported size. // 6. Refit each axis // 7. Position each axis in the final location // 8. Tell the chart the final location of the chart area // 9. Tell any axes that overlay the chart area the positions of the chart area // Step 1 var chartWidth = width - leftPadding - rightPadding; var chartHeight = height - topPadding - bottomPadding; var chartAreaWidth = chartWidth / 2; // min 50% var chartAreaHeight = chartHeight / 2; // min 50% // Step 2 var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); // Step 3 var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); // Step 4 var maxChartAreaWidth = chartWidth; var maxChartAreaHeight = chartHeight; var minBoxSizes = []; function getMinimumBoxSize(box) { var minSize; var isHorizontal = box.isHorizontal(); if (isHorizontal) { minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); maxChartAreaHeight -= minSize.height; } else { minSize = box.update(verticalBoxWidth, chartAreaHeight); maxChartAreaWidth -= minSize.width; } minBoxSizes.push({ horizontal: isHorizontal, minSize: minSize, box: box, }); } helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) var maxHorizontalLeftPadding = 0; var maxHorizontalRightPadding = 0; var maxVerticalTopPadding = 0; var maxVerticalBottomPadding = 0; helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { if (horizontalBox.getPadding) { var boxPadding = horizontalBox.getPadding(); maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); } }); helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { if (verticalBox.getPadding) { var boxPadding = verticalBox.getPadding(); maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); } }); // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could // be if the axes are drawn at their minimum sizes. // Steps 5 & 6 var totalLeftBoxesWidth = leftPadding; var totalRightBoxesWidth = rightPadding; var totalTopBoxesHeight = topPadding; var totalBottomBoxesHeight = bottomPadding; // Function to fit a box function fitBox(box) { var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { return minBox.box === box; }); if (minBoxSize) { if (box.isHorizontal()) { var scaleMargin = { left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), top: 0, bottom: 0 }; // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends // on the margin. Sometimes they need to increase in size slightly box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); } else { box.update(minBoxSize.minSize.width, maxChartAreaHeight); } } } // Update, and calculate the left and right margins for the horizontal boxes helpers.each(leftBoxes.concat(rightBoxes), fitBox); helpers.each(leftBoxes, function(box) { totalLeftBoxesWidth += box.width; }); helpers.each(rightBoxes, function(box) { totalRightBoxesWidth += box.width; }); // Set the Left and Right margins for the horizontal boxes helpers.each(topBoxes.concat(bottomBoxes), fitBox); // Figure out how much margin is on the top and bottom of the vertical boxes helpers.each(topBoxes, function(box) { totalTopBoxesHeight += box.height; }); helpers.each(bottomBoxes, function(box) { totalBottomBoxesHeight += box.height; }); function finalFitVerticalBox(box) { var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { return minSize.box === box; }); var scaleMargin = { left: 0, right: 0, top: totalTopBoxesHeight, bottom: totalBottomBoxesHeight }; if (minBoxSize) { box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); } } // Let the left layout know the final margin helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) totalLeftBoxesWidth = leftPadding; totalRightBoxesWidth = rightPadding; totalTopBoxesHeight = topPadding; totalBottomBoxesHeight = bottomPadding; helpers.each(leftBoxes, function(box) { totalLeftBoxesWidth += box.width; }); helpers.each(rightBoxes, function(box) { totalRightBoxesWidth += box.width; }); helpers.each(topBoxes, function(box) { totalTopBoxesHeight += box.height; }); helpers.each(bottomBoxes, function(box) { totalBottomBoxesHeight += box.height; }); // We may be adding some padding to account for rotated x axis labels var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); totalLeftBoxesWidth += leftPaddingAddition; totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); totalTopBoxesHeight += topPaddingAddition; totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); // Figure out if our chart area changed. This would occur if the dataset layout label rotation // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do // without calling `fit` again var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { helpers.each(leftBoxes, function(box) { box.height = newMaxChartAreaHeight; }); helpers.each(rightBoxes, function(box) { box.height = newMaxChartAreaHeight; }); helpers.each(topBoxes, function(box) { if (!box.fullWidth) { box.width = newMaxChartAreaWidth; } }); helpers.each(bottomBoxes, function(box) { if (!box.fullWidth) { box.width = newMaxChartAreaWidth; } }); maxChartAreaHeight = newMaxChartAreaHeight; maxChartAreaWidth = newMaxChartAreaWidth; } // Step 7 - Position the boxes var left = leftPadding + leftPaddingAddition; var top = topPadding + topPaddingAddition; function placeBox(box) { if (box.isHorizontal()) { box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; box.top = top; box.bottom = top + box.height; // Move to next point top = box.bottom; } else { box.left = left; box.right = left + box.width; box.top = totalTopBoxesHeight; box.bottom = totalTopBoxesHeight + maxChartAreaHeight; // Move to next point left = box.right; } } helpers.each(leftBoxes.concat(topBoxes), placeBox); // Account for chart width and height left += maxChartAreaWidth; top += maxChartAreaHeight; helpers.each(rightBoxes, placeBox); helpers.each(bottomBoxes, placeBox); // Step 8 chart.chartArea = { left: totalLeftBoxesWidth, top: totalTopBoxesHeight, right: totalLeftBoxesWidth + maxChartAreaWidth, bottom: totalTopBoxesHeight + maxChartAreaHeight }; // Step 9 helpers.each(chartAreaBoxes, function(box) { box.left = chart.chartArea.left; box.top = chart.chartArea.top; box.right = chart.chartArea.right; box.bottom = chart.chartArea.bottom; box.update(maxChartAreaWidth, maxChartAreaHeight); }); } }; }; },{"45":45}],31:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { plugins: {} }); module.exports = function(Chart) { /** * The plugin service singleton * @namespace Chart.plugins * @since 2.1.0 */ Chart.plugins = { /** * Globally registered plugins. * @private */ _plugins: [], /** * This identifier is used to invalidate the descriptors cache attached to each chart * when a global plugin is registered or unregistered. In this case, the cache ID is * incremented and descriptors are regenerated during following API calls. * @private */ _cacheId: 0, /** * Registers the given plugin(s) if not already registered. * @param {Array|Object} plugins plugin instance(s). */ register: function(plugins) { var p = this._plugins; ([]).concat(plugins).forEach(function(plugin) { if (p.indexOf(plugin) === -1) { p.push(plugin); } }); this._cacheId++; }, /** * Unregisters the given plugin(s) only if registered. * @param {Array|Object} plugins plugin instance(s). */ unregister: function(plugins) { var p = this._plugins; ([]).concat(plugins).forEach(function(plugin) { var idx = p.indexOf(plugin); if (idx !== -1) { p.splice(idx, 1); } }); this._cacheId++; }, /** * Remove all registered plugins. * @since 2.1.5 */ clear: function() { this._plugins = []; this._cacheId++; }, /** * Returns the number of registered plugins? * @returns {Number} * @since 2.1.5 */ count: function() { return this._plugins.length; }, /** * Returns all registered plugin instances. * @returns {Array} array of plugin objects. * @since 2.1.5 */ getAll: function() { return this._plugins; }, /** * Calls enabled plugins for `chart` on the specified hook and with the given args. * This method immediately returns as soon as a plugin explicitly returns false. The * returned value can be used, for instance, to interrupt the current action. * @param {Object} chart - The chart instance for which plugins should be called. * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). * @param {Array} [args] - Extra arguments to apply to the hook call. * @returns {Boolean} false if any of the plugins return false, else returns true. */ notify: function(chart, hook, args) { var descriptors = this.descriptors(chart); var ilen = descriptors.length; var i, descriptor, plugin, params, method; for (i = 0; i < ilen; ++i) { descriptor = descriptors[i]; plugin = descriptor.plugin; method = plugin[hook]; if (typeof method === 'function') { params = [chart].concat(args || []); params.push(descriptor.options); if (method.apply(plugin, params) === false) { return false; } } } return true; }, /** * Returns descriptors of enabled plugins for the given chart. * @returns {Array} [{ plugin, options }] * @private */ descriptors: function(chart) { var cache = chart._plugins || (chart._plugins = {}); if (cache.id === this._cacheId) { return cache.descriptors; } var plugins = []; var descriptors = []; var config = (chart && chart.config) || {}; var options = (config.options && config.options.plugins) || {}; this._plugins.concat(config.plugins || []).forEach(function(plugin) { var idx = plugins.indexOf(plugin); if (idx !== -1) { return; } var id = plugin.id; var opts = options[id]; if (opts === false) { return; } if (opts === true) { opts = helpers.clone(defaults.global.plugins[id]); } plugins.push(plugin); descriptors.push({ plugin: plugin, options: opts || {} }); }); cache.descriptors = descriptors; cache.id = this._cacheId; return descriptors; } }; /** * Plugin extension hooks. * @interface IPlugin * @since 2.1.0 */ /** * @method IPlugin#beforeInit * @desc Called before initializing `chart`. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#afterInit * @desc Called after `chart` has been initialized and before the first update. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeUpdate * @desc Called before updating `chart`. If any plugin returns `false`, the update * is cancelled (and thus subsequent render(s)) until another `update` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart update. */ /** * @method IPlugin#afterUpdate * @desc Called after `chart` has been updated and before rendering. Note that this * hook will not be called if the chart update has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDatasetsUpdate * @desc Called before updating the `chart` datasets. If any plugin returns `false`, * the datasets update is cancelled until another `update` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} false to cancel the datasets update. * @since version 2.1.5 */ /** * @method IPlugin#afterDatasetsUpdate * @desc Called after the `chart` datasets have been updated. Note that this hook * will not be called if the datasets update has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @since version 2.1.5 */ /** * @method IPlugin#beforeDatasetUpdate * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin * returns `false`, the datasets update is cancelled until another `update` is triggered. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart datasets drawing. */ /** * @method IPlugin#afterDatasetUpdate * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note * that this hook will not be called if the datasets update has been previously cancelled. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeLayout * @desc Called before laying out `chart`. If any plugin returns `false`, * the layout update is cancelled until another `update` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart layout. */ /** * @method IPlugin#afterLayout * @desc Called after the `chart` has been layed out. Note that this hook will not * be called if the layout update has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeRender * @desc Called before rendering `chart`. If any plugin returns `false`, * the rendering is cancelled until another `render` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart rendering. */ /** * @method IPlugin#afterRender * @desc Called after the `chart` has been fully rendered (and animation completed). Note * that this hook will not be called if the rendering has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDraw * @desc Called before drawing `chart` at every animation frame specified by the given * easing value. If any plugin returns `false`, the frame drawing is cancelled until * another `render` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart drawing. */ /** * @method IPlugin#afterDraw * @desc Called after the `chart` has been drawn for the specific easing value. Note * that this hook will not be called if the drawing has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDatasetsDraw * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, * the datasets drawing is cancelled until another `render` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart datasets drawing. */ /** * @method IPlugin#afterDatasetsDraw * @desc Called after the `chart` datasets have been drawn. Note that this hook * will not be called if the datasets drawing has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDatasetDraw * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing * is cancelled until another `render` is triggered. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart datasets drawing. */ /** * @method IPlugin#afterDatasetDraw * @desc Called after the `chart` datasets at the given `args.index` have been drawn * (datasets are drawn in the reverse order). Note that this hook will not be called * if the datasets drawing has been previously cancelled. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeTooltipDraw * @desc Called before drawing the `tooltip`. If any plugin returns `false`, * the tooltip drawing is cancelled until another `render` is triggered. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Object} args.tooltip - The tooltip. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart tooltip drawing. */ /** * @method IPlugin#afterTooltipDraw * @desc Called after drawing the `tooltip`. Note that this hook will not * be called if the tooltip drawing has been previously cancelled. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Object} args.tooltip - The tooltip. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeEvent * @desc Called before processing the specified `event`. If any plugin returns `false`, * the event will be discarded. * @param {Chart.Controller} chart - The chart instance. * @param {IEvent} event - The event object. * @param {Object} options - The plugin options. */ /** * @method IPlugin#afterEvent * @desc Called after the `event` has been consumed. Note that this hook * will not be called if the `event` has been previously discarded. * @param {Chart.Controller} chart - The chart instance. * @param {IEvent} event - The event object. * @param {Object} options - The plugin options. */ /** * @method IPlugin#resize * @desc Called after the chart as been resized. * @param {Chart.Controller} chart - The chart instance. * @param {Number} size - The new canvas display size (eq. canvas.style width & height). * @param {Object} options - The plugin options. */ /** * @method IPlugin#destroy * @desc Called after the chart as been destroyed. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * Provided for backward compatibility, use Chart.plugins instead * @namespace Chart.pluginService * @deprecated since version 2.1.5 * @todo remove at version 3 * @private */ Chart.pluginService = Chart.plugins; /** * Provided for backward compatibility, inheriting from Chart.PlugingBase has no * effect, instead simply create/register plugins via plain JavaScript objects. * @interface Chart.PluginBase * @deprecated since version 2.5.0 * @todo remove at version 3 * @private */ Chart.PluginBase = Element.extend({}); }; },{"25":25,"26":26,"45":45}],32:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); var Ticks = require(34); defaults._set('scale', { display: true, position: 'left', offset: false, // grid line settings gridLines: { display: true, color: 'rgba(0, 0, 0, 0.1)', lineWidth: 1, drawBorder: true, drawOnChartArea: true, drawTicks: true, tickMarkLength: 10, zeroLineWidth: 1, zeroLineColor: 'rgba(0,0,0,0.25)', zeroLineBorderDash: [], zeroLineBorderDashOffset: 0.0, offsetGridLines: false, borderDash: [], borderDashOffset: 0.0 }, // scale label scaleLabel: { // display property display: false, // actual label labelString: '', // line height lineHeight: 1.2, // top/bottom padding padding: { top: 4, bottom: 4 } }, // label settings ticks: { beginAtZero: false, minRotation: 0, maxRotation: 50, mirror: false, padding: 0, reverse: false, display: true, autoSkip: true, autoSkipPadding: 0, labelOffset: 0, // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. callback: Ticks.formatters.values, minor: {}, major: {} } }); function labelsFromTicks(ticks) { var labels = []; var i, ilen; for (i = 0, ilen = ticks.length; i < ilen; ++i) { labels.push(ticks[i].label); } return labels; } function getLineValue(scale, index, offsetGridLines) { var lineValue = scale.getPixelForTick(index); if (offsetGridLines) { if (index === 0) { lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; } else { lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; } } return lineValue; } module.exports = function(Chart) { function computeTextSize(context, tick, font) { return helpers.isArray(tick) ? helpers.longestText(context, font, tick) : context.measureText(tick).width; } function parseFontOptions(options) { var valueOrDefault = helpers.valueOrDefault; var globalDefaults = defaults.global; var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); return { size: size, style: style, family: family, font: helpers.fontString(size, style, family) }; } function parseLineHeight(options) { return helpers.options.toLineHeight( helpers.valueOrDefault(options.lineHeight, 1.2), helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); } Chart.Scale = Element.extend({ /** * Get the padding needed for the scale * @method getPadding * @private * @returns {Padding} the necessary padding */ getPadding: function() { var me = this; return { left: me.paddingLeft || 0, top: me.paddingTop || 0, right: me.paddingRight || 0, bottom: me.paddingBottom || 0 }; }, /** * Returns the scale tick objects ({label, major}) * @since 2.7 */ getTicks: function() { return this._ticks; }, // These methods are ordered by lifecyle. Utilities then follow. // Any function defined here is inherited by all scale types. // Any function can be extended by the scale type mergeTicksOptions: function() { var ticks = this.options.ticks; if (ticks.minor === false) { ticks.minor = { display: false }; } if (ticks.major === false) { ticks.major = { display: false }; } for (var key in ticks) { if (key !== 'major' && key !== 'minor') { if (typeof ticks.minor[key] === 'undefined') { ticks.minor[key] = ticks[key]; } if (typeof ticks.major[key] === 'undefined') { ticks.major[key] = ticks[key]; } } } }, beforeUpdate: function() { helpers.callback(this.options.beforeUpdate, [this]); }, update: function(maxWidth, maxHeight, margins) { var me = this; var i, ilen, labels, label, ticks, tick; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); // Absorb the master measurements me.maxWidth = maxWidth; me.maxHeight = maxHeight; me.margins = helpers.extend({ left: 0, right: 0, top: 0, bottom: 0 }, margins); me.longestTextCache = me.longestTextCache || {}; // Dimensions me.beforeSetDimensions(); me.setDimensions(); me.afterSetDimensions(); // Data min/max me.beforeDataLimits(); me.determineDataLimits(); me.afterDataLimits(); // Ticks - `this.ticks` is now DEPRECATED! // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member // and must not be accessed directly from outside this class. `this.ticks` being // around for long time and not marked as private, we can't change its structure // without unexpected breaking changes. If you need to access the scale ticks, // use scale.getTicks() instead. me.beforeBuildTicks(); // New implementations should return an array of objects but for BACKWARD COMPAT, // we still support no return (`this.ticks` internally set by calling this method). ticks = me.buildTicks() || []; me.afterBuildTicks(); me.beforeTickToLabelConversion(); // New implementations should return the formatted tick labels but for BACKWARD // COMPAT, we still support no return (`this.ticks` internally changed by calling // this method and supposed to contain only string values). labels = me.convertTicksToLabels(ticks) || me.ticks; me.afterTickToLabelConversion(); me.ticks = labels; // BACKWARD COMPATIBILITY // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) for (i = 0, ilen = labels.length; i < ilen; ++i) { label = labels[i]; tick = ticks[i]; if (!tick) { ticks.push(tick = { label: label, major: false }); } else { tick.label = label; } } me._ticks = ticks; // Tick Rotation me.beforeCalculateTickRotation(); me.calculateTickRotation(); me.afterCalculateTickRotation(); // Fit me.beforeFit(); me.fit(); me.afterFit(); // me.afterUpdate(); return me.minSize; }, afterUpdate: function() { helpers.callback(this.options.afterUpdate, [this]); }, // beforeSetDimensions: function() { helpers.callback(this.options.beforeSetDimensions, [this]); }, setDimensions: function() { var me = this; // Set the unconstrained dimension before label rotation if (me.isHorizontal()) { // Reset position before calculating rotation me.width = me.maxWidth; me.left = 0; me.right = me.width; } else { me.height = me.maxHeight; // Reset position before calculating rotation me.top = 0; me.bottom = me.height; } // Reset padding me.paddingLeft = 0; me.paddingTop = 0; me.paddingRight = 0; me.paddingBottom = 0; }, afterSetDimensions: function() { helpers.callback(this.options.afterSetDimensions, [this]); }, // Data limits beforeDataLimits: function() { helpers.callback(this.options.beforeDataLimits, [this]); }, determineDataLimits: helpers.noop, afterDataLimits: function() { helpers.callback(this.options.afterDataLimits, [this]); }, // beforeBuildTicks: function() { helpers.callback(this.options.beforeBuildTicks, [this]); }, buildTicks: helpers.noop, afterBuildTicks: function() { helpers.callback(this.options.afterBuildTicks, [this]); }, beforeTickToLabelConversion: function() { helpers.callback(this.options.beforeTickToLabelConversion, [this]); }, convertTicksToLabels: function() { var me = this; // Convert ticks to strings var tickOpts = me.options.ticks; me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); }, afterTickToLabelConversion: function() { helpers.callback(this.options.afterTickToLabelConversion, [this]); }, // beforeCalculateTickRotation: function() { helpers.callback(this.options.beforeCalculateTickRotation, [this]); }, calculateTickRotation: function() { var me = this; var context = me.ctx; var tickOpts = me.options.ticks; var labels = labelsFromTicks(me._ticks); // Get the width of each grid by calculating the difference // between x offsets between 0 and 1. var tickFont = parseFontOptions(tickOpts); context.font = tickFont.font; var labelRotation = tickOpts.minRotation || 0; if (labels.length && me.options.display && me.isHorizontal()) { var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); var labelWidth = originalLabelWidth; var cosRotation, sinRotation; // Allow 3 pixels x2 padding either side for label readability var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; // Max label rotation can be set or default to 90 - also act as a loop counter while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { var angleRadians = helpers.toRadians(labelRotation); cosRotation = Math.cos(angleRadians); sinRotation = Math.sin(angleRadians); if (sinRotation * originalLabelWidth > me.maxHeight) { // go back one step labelRotation--; break; } labelRotation++; labelWidth = cosRotation * originalLabelWidth; } } me.labelRotation = labelRotation; }, afterCalculateTickRotation: function() { helpers.callback(this.options.afterCalculateTickRotation, [this]); }, // beforeFit: function() { helpers.callback(this.options.beforeFit, [this]); }, fit: function() { var me = this; // Reset var minSize = me.minSize = { width: 0, height: 0 }; var labels = labelsFromTicks(me._ticks); var opts = me.options; var tickOpts = opts.ticks; var scaleLabelOpts = opts.scaleLabel; var gridLineOpts = opts.gridLines; var display = opts.display; var isHorizontal = me.isHorizontal(); var tickFont = parseFontOptions(tickOpts); var tickMarkLength = opts.gridLines.tickMarkLength; // Width if (isHorizontal) { // subtract the margins to line up with the chartArea if we are a full width scale minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; } else { minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; } // height if (isHorizontal) { minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; } else { minSize.height = me.maxHeight; // fill all the height } // Are we showing a title for the scale? if (scaleLabelOpts.display && display) { var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; if (isHorizontal) { minSize.height += deltaHeight; } else { minSize.width += deltaHeight; } } // Don't bother fitting the ticks if we are not showing them if (tickOpts.display && display) { var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); var lineSpace = tickFont.size * 0.5; var tickPadding = me.options.ticks.padding; if (isHorizontal) { // A horizontal axis is more constrained by the height. me.longestLabelWidth = largestTextWidth; var angleRadians = helpers.toRadians(me.labelRotation); var cosRotation = Math.cos(angleRadians); var sinRotation = Math.sin(angleRadians); // TODO - improve this calculation var labelHeight = (sinRotation * largestTextWidth) + (tickFont.size * tallestLabelHeightInLines) + (lineSpace * (tallestLabelHeightInLines - 1)) + lineSpace; // padding minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); me.ctx.font = tickFont.font; var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned // which means that the right padding is dominated by the font height if (me.labelRotation !== 0) { me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; } else { me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges me.paddingRight = lastLabelWidth / 2 + 3; } } else { // A vertical axis is more constrained by the width. Labels are the // dominant factor here, so get that length first and account for padding if (tickOpts.mirror) { largestTextWidth = 0; } else { // use lineSpace for consistency with horizontal axis // tickPadding is not implemented for horizontal largestTextWidth += tickPadding + lineSpace; } minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); me.paddingTop = tickFont.size / 2; me.paddingBottom = tickFont.size / 2; } } me.handleMargins(); me.width = minSize.width; me.height = minSize.height; }, /** * Handle margins and padding interactions * @private */ handleMargins: function() { var me = this; if (me.margins) { me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); } }, afterFit: function() { helpers.callback(this.options.afterFit, [this]); }, // Shared Methods isHorizontal: function() { return this.options.position === 'top' || this.options.position === 'bottom'; }, isFullWidth: function() { return (this.options.fullWidth); }, // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not getRightValue: function(rawValue) { // Null and undefined values first if (helpers.isNullOrUndef(rawValue)) { return NaN; } // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values if (typeof rawValue === 'number' && !isFinite(rawValue)) { return NaN; } // If it is in fact an object, dive in one more level if (rawValue) { if (this.isHorizontal()) { if (rawValue.x !== undefined) { return this.getRightValue(rawValue.x); } } else if (rawValue.y !== undefined) { return this.getRightValue(rawValue.y); } } // Value is good, return it return rawValue; }, /** * Used to get the value to display in the tooltip for the data at the given index * @param index * @param datasetIndex */ getLabelForIndex: helpers.noop, /** * Returns the location of the given data point. Value can either be an index or a numerical value * The coordinate (0, 0) is at the upper-left corner of the canvas * @param value * @param index * @param datasetIndex */ getPixelForValue: helpers.noop, /** * Used to get the data value from a given pixel. This is the inverse of getPixelForValue * The coordinate (0, 0) is at the upper-left corner of the canvas * @param pixel */ getValueForPixel: helpers.noop, /** * Returns the location of the tick at the given index * The coordinate (0, 0) is at the upper-left corner of the canvas */ getPixelForTick: function(index) { var me = this; var offset = me.options.offset; if (me.isHorizontal()) { var innerWidth = me.width - (me.paddingLeft + me.paddingRight); var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); var pixel = (tickWidth * index) + me.paddingLeft; if (offset) { pixel += tickWidth / 2; } var finalVal = me.left + Math.round(pixel); finalVal += me.isFullWidth() ? me.margins.left : 0; return finalVal; } var innerHeight = me.height - (me.paddingTop + me.paddingBottom); return me.top + (index * (innerHeight / (me._ticks.length - 1))); }, /** * Utility for getting the pixel location of a percentage of scale * The coordinate (0, 0) is at the upper-left corner of the canvas */ getPixelForDecimal: function(decimal) { var me = this; if (me.isHorizontal()) { var innerWidth = me.width - (me.paddingLeft + me.paddingRight); var valueOffset = (innerWidth * decimal) + me.paddingLeft; var finalVal = me.left + Math.round(valueOffset); finalVal += me.isFullWidth() ? me.margins.left : 0; return finalVal; } return me.top + (decimal * me.height); }, /** * Returns the pixel for the minimum chart value * The coordinate (0, 0) is at the upper-left corner of the canvas */ getBasePixel: function() { return this.getPixelForValue(this.getBaseValue()); }, getBaseValue: function() { var me = this; var min = me.min; var max = me.max; return me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0; }, /** * Returns a subset of ticks to be plotted to avoid overlapping labels. * @private */ _autoSkip: function(ticks) { var skipRatio; var me = this; var isHorizontal = me.isHorizontal(); var optionTicks = me.options.ticks.minor; var tickCount = ticks.length; var labelRotationRadians = helpers.toRadians(me.labelRotation); var cosRotation = Math.cos(labelRotationRadians); var longestRotatedLabel = me.longestLabelWidth * cosRotation; var result = []; var i, tick, shouldSkip; // figure out the maximum number of gridlines to show var maxTicks; if (optionTicks.maxTicksLimit) { maxTicks = optionTicks.maxTicksLimit; } if (isHorizontal) { skipRatio = false; if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); } // if they defined a max number of optionTicks, // increase skipRatio until that number is met if (maxTicks && tickCount > maxTicks) { skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); } } for (i = 0; i < tickCount; i++) { tick = ticks[i]; // Since we always show the last tick,we need may need to hide the last shown one before shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); if (shouldSkip && i !== tickCount - 1) { // leave tick in place but make sure it's not displayed (#4635) delete tick.label; } result.push(tick); } return result; }, // Actually draw the scale on the canvas // @param {rectangle} chartArea : the area of the chart to draw full grid lines on draw: function(chartArea) { var me = this; var options = me.options; if (!options.display) { return; } var context = me.ctx; var globalDefaults = defaults.global; var optionTicks = options.ticks.minor; var optionMajorTicks = options.ticks.major || optionTicks; var gridLines = options.gridLines; var scaleLabel = options.scaleLabel; var isRotated = me.labelRotation !== 0; var isHorizontal = me.isHorizontal(); var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); var tickFont = parseFontOptions(optionTicks); var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); var majorTickFont = parseFontOptions(optionMajorTicks); var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); var scaleLabelFont = parseFontOptions(scaleLabel); var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); var labelRotationRadians = helpers.toRadians(me.labelRotation); var itemsToDraw = []; var xTickStart = options.position === 'right' ? me.left : me.right - tl; var xTickEnd = options.position === 'right' ? me.left + tl : me.right; var yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl; var yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom; helpers.each(ticks, function(tick, index) { // autoskipper skipped this tick (#4635) if (helpers.isNullOrUndef(tick.label)) { return; } var label = tick.label; var lineWidth, lineColor, borderDash, borderDashOffset; if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { // Draw the first index specially lineWidth = gridLines.zeroLineWidth; lineColor = gridLines.zeroLineColor; borderDash = gridLines.zeroLineBorderDash; borderDashOffset = gridLines.zeroLineBorderDashOffset; } else { lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); } // Common properties var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; var textAlign = 'middle'; var textBaseline = 'middle'; var tickPadding = optionTicks.padding; if (isHorizontal) { var labelYOffset = tl + tickPadding; if (options.position === 'bottom') { // bottom textBaseline = !isRotated ? 'top' : 'middle'; textAlign = !isRotated ? 'center' : 'right'; labelY = me.top + labelYOffset; } else { // top textBaseline = !isRotated ? 'bottom' : 'middle'; textAlign = !isRotated ? 'center' : 'left'; labelY = me.bottom - labelYOffset; } var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); if (xLineValue < me.left) { lineColor = 'rgba(0,0,0,0)'; } xLineValue += helpers.aliasPixel(lineWidth); labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) tx1 = tx2 = x1 = x2 = xLineValue; ty1 = yTickStart; ty2 = yTickEnd; y1 = chartArea.top; y2 = chartArea.bottom; } else { var isLeft = options.position === 'left'; var labelXOffset; if (optionTicks.mirror) { textAlign = isLeft ? 'left' : 'right'; labelXOffset = tickPadding; } else { textAlign = isLeft ? 'right' : 'left'; labelXOffset = tl + tickPadding; } labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); if (yLineValue < me.top) { lineColor = 'rgba(0,0,0,0)'; } yLineValue += helpers.aliasPixel(lineWidth); labelY = me.getPixelForTick(index) + optionTicks.labelOffset; tx1 = xTickStart; tx2 = xTickEnd; x1 = chartArea.left; x2 = chartArea.right; ty1 = ty2 = y1 = y2 = yLineValue; } itemsToDraw.push({ tx1: tx1, ty1: ty1, tx2: tx2, ty2: ty2, x1: x1, y1: y1, x2: x2, y2: y2, labelX: labelX, labelY: labelY, glWidth: lineWidth, glColor: lineColor, glBorderDash: borderDash, glBorderDashOffset: borderDashOffset, rotation: -1 * labelRotationRadians, label: label, major: tick.major, textBaseline: textBaseline, textAlign: textAlign }); }); // Draw all of the tick labels, tick marks, and grid lines at the correct places helpers.each(itemsToDraw, function(itemToDraw) { if (gridLines.display) { context.save(); context.lineWidth = itemToDraw.glWidth; context.strokeStyle = itemToDraw.glColor; if (context.setLineDash) { context.setLineDash(itemToDraw.glBorderDash); context.lineDashOffset = itemToDraw.glBorderDashOffset; } context.beginPath(); if (gridLines.drawTicks) { context.moveTo(itemToDraw.tx1, itemToDraw.ty1); context.lineTo(itemToDraw.tx2, itemToDraw.ty2); } if (gridLines.drawOnChartArea) { context.moveTo(itemToDraw.x1, itemToDraw.y1); context.lineTo(itemToDraw.x2, itemToDraw.y2); } context.stroke(); context.restore(); } if (optionTicks.display) { // Make sure we draw text in the correct color and font context.save(); context.translate(itemToDraw.labelX, itemToDraw.labelY); context.rotate(itemToDraw.rotation); context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; context.textBaseline = itemToDraw.textBaseline; context.textAlign = itemToDraw.textAlign; var label = itemToDraw.label; if (helpers.isArray(label)) { for (var i = 0, y = 0; i < label.length; ++i) { // We just make sure the multiline element is a string here.. context.fillText('' + label[i], 0, y); // apply same lineSpacing as calculated @ L#320 y += (tickFont.size * 1.5); } } else { context.fillText(label, 0, 0); } context.restore(); } }); if (scaleLabel.display) { // Draw the scale label var scaleLabelX; var scaleLabelY; var rotation = 0; var halfLineHeight = parseLineHeight(scaleLabel) / 2; if (isHorizontal) { scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width scaleLabelY = options.position === 'bottom' ? me.bottom - halfLineHeight - scaleLabelPadding.bottom : me.top + halfLineHeight + scaleLabelPadding.top; } else { var isLeft = options.position === 'left'; scaleLabelX = isLeft ? me.left + halfLineHeight + scaleLabelPadding.top : me.right - halfLineHeight - scaleLabelPadding.top; scaleLabelY = me.top + ((me.bottom - me.top) / 2); rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; } context.save(); context.translate(scaleLabelX, scaleLabelY); context.rotate(rotation); context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillStyle = scaleLabelFontColor; // render in correct colour context.font = scaleLabelFont.font; context.fillText(scaleLabel.labelString, 0, 0); context.restore(); } if (gridLines.drawBorder) { // Draw the line at the edge of the axis context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); var x1 = me.left; var x2 = me.right; var y1 = me.top; var y2 = me.bottom; var aliasPixel = helpers.aliasPixel(context.lineWidth); if (isHorizontal) { y1 = y2 = options.position === 'top' ? me.bottom : me.top; y1 += aliasPixel; y2 += aliasPixel; } else { x1 = x2 = options.position === 'left' ? me.right : me.left; x1 += aliasPixel; x2 += aliasPixel; } context.beginPath(); context.moveTo(x1, y1); context.lineTo(x2, y2); context.stroke(); } } }); }; },{"25":25,"26":26,"34":34,"45":45}],33:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); module.exports = function(Chart) { Chart.scaleService = { // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then // use the new chart options to grab the correct scale constructors: {}, // Use a registration function so that we can move to an ES6 map when we no longer need to support // old browsers // Scale config defaults defaults: {}, registerScaleType: function(type, scaleConstructor, scaleDefaults) { this.constructors[type] = scaleConstructor; this.defaults[type] = helpers.clone(scaleDefaults); }, getScaleConstructor: function(type) { return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; }, getScaleDefaults: function(type) { // Return the scale defaults merged with the global settings so that we always use the latest ones return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; }, updateScaleDefaults: function(type, additions) { var me = this; if (me.defaults.hasOwnProperty(type)) { me.defaults[type] = helpers.extend(me.defaults[type], additions); } }, addScalesToLayout: function(chart) { // Adds each scale to the chart.boxes array to be sized accordingly helpers.each(chart.scales, function(scale) { // Set ILayoutItem parameters for backwards compatibility scale.fullWidth = scale.options.fullWidth; scale.position = scale.options.position; scale.weight = scale.options.weight; Chart.layoutService.addBox(chart, scale); }); } }; }; },{"25":25,"45":45}],34:[function(require,module,exports){ 'use strict'; var helpers = require(45); /** * Namespace to hold static tick generation functions * @namespace Chart.Ticks */ module.exports = { /** * Namespace to hold generators for different types of ticks * @namespace Chart.Ticks.generators */ generators: { /** * Interface for the options provided to the numeric tick generator * @interface INumericTickGenerationOptions */ /** * The maximum number of ticks to display * @name INumericTickGenerationOptions#maxTicks * @type Number */ /** * The distance between each tick. * @name INumericTickGenerationOptions#stepSize * @type Number * @optional */ /** * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum * @name INumericTickGenerationOptions#min * @type Number * @optional */ /** * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum * @name INumericTickGenerationOptions#max * @type Number * @optional */ /** * Generate a set of linear ticks * @method Chart.Ticks.generators.linear * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks * @param dataRange {IRange} the range of the data * @returns {Array} array of tick values */ linear: function(generationOptions, dataRange) { var ticks = []; // To get a "nice" value for the tick spacing, we will use the appropriately named // "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks // for details. var spacing; if (generationOptions.stepSize && generationOptions.stepSize > 0) { spacing = generationOptions.stepSize; } else { var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false); spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true); } var niceMin = Math.floor(dataRange.min / spacing) * spacing; var niceMax = Math.ceil(dataRange.max / spacing) * spacing; // If min, max and stepSize is set and they make an evenly spaced scale use it. if (generationOptions.min && generationOptions.max && generationOptions.stepSize) { // If very close to our whole number, use it. if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) { niceMin = generationOptions.min; niceMax = generationOptions.max; } } var numSpaces = (niceMax - niceMin) / spacing; // If very close to our rounded value, use it. if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { numSpaces = Math.round(numSpaces); } else { numSpaces = Math.ceil(numSpaces); } // Put the values into the ticks array ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin); for (var j = 1; j < numSpaces; ++j) { ticks.push(niceMin + (j * spacing)); } ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax); return ticks; }, /** * Generate a set of logarithmic ticks * @method Chart.Ticks.generators.logarithmic * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks * @param dataRange {IRange} the range of the data * @returns {Array} array of tick values */ logarithmic: function(generationOptions, dataRange) { var ticks = []; var valueOrDefault = helpers.valueOrDefault; // Figure out what the max number of ticks we can support it is based on the size of // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on // the graph var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min)))); var endExp = Math.floor(helpers.log10(dataRange.max)); var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); var exp, significand; if (tickVal === 0) { exp = Math.floor(helpers.log10(dataRange.minNotZero)); significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); ticks.push(tickVal); tickVal = significand * Math.pow(10, exp); } else { exp = Math.floor(helpers.log10(tickVal)); significand = Math.floor(tickVal / Math.pow(10, exp)); } do { ticks.push(tickVal); ++significand; if (significand === 10) { significand = 1; ++exp; } tickVal = significand * Math.pow(10, exp); } while (exp < endExp || (exp === endExp && significand < endSignificand)); var lastTick = valueOrDefault(generationOptions.max, tickVal); ticks.push(lastTick); return ticks; } }, /** * Namespace to hold formatters for different types of ticks * @namespace Chart.Ticks.formatters */ formatters: { /** * Formatter for value labels * @method Chart.Ticks.formatters.values * @param value the value to display * @return {String|Array} the label to display */ values: function(value) { return helpers.isArray(value) ? value : '' + value; }, /** * Formatter for linear numeric ticks * @method Chart.Ticks.formatters.linear * @param tickValue {Number} the value to be formatted * @param index {Number} the position of the tickValue parameter in the ticks array * @param ticks {Array} the list of ticks being converted * @return {String} string representation of the tickValue parameter */ linear: function(tickValue, index, ticks) { // If we have lots of ticks, don't use the ones var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; // If we have a number like 2.5 as the delta, figure out how many decimal places we need if (Math.abs(delta) > 1) { if (tickValue !== Math.floor(tickValue)) { // not an integer delta = tickValue - Math.floor(tickValue); } } var logDelta = helpers.log10(Math.abs(delta)); var tickString = ''; if (tickValue !== 0) { var numDecimal = -1 * Math.floor(logDelta); numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places tickString = tickValue.toFixed(numDecimal); } else { tickString = '0'; // never show decimal places for 0 } return tickString; }, logarithmic: function(tickValue, index, ticks) { var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); if (tickValue === 0) { return '0'; } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { return tickValue.toExponential(); } return ''; } } }; },{"45":45}],35:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { tooltips: { enabled: true, custom: null, mode: 'nearest', position: 'average', intersect: true, backgroundColor: 'rgba(0,0,0,0.8)', titleFontStyle: 'bold', titleSpacing: 2, titleMarginBottom: 6, titleFontColor: '#fff', titleAlign: 'left', bodySpacing: 2, bodyFontColor: '#fff', bodyAlign: 'left', footerFontStyle: 'bold', footerSpacing: 2, footerMarginTop: 6, footerFontColor: '#fff', footerAlign: 'left', yPadding: 6, xPadding: 6, caretPadding: 2, caretSize: 5, cornerRadius: 6, multiKeyBackground: '#fff', displayColors: true, borderColor: 'rgba(0,0,0,0)', borderWidth: 0, callbacks: { // Args are: (tooltipItems, data) beforeTitle: helpers.noop, title: function(tooltipItems, data) { // Pick first xLabel for now var title = ''; var labels = data.labels; var labelCount = labels ? labels.length : 0; if (tooltipItems.length > 0) { var item = tooltipItems[0]; if (item.xLabel) { title = item.xLabel; } else if (labelCount > 0 && item.index < labelCount) { title = labels[item.index]; } } return title; }, afterTitle: helpers.noop, // Args are: (tooltipItems, data) beforeBody: helpers.noop, // Args are: (tooltipItem, data) beforeLabel: helpers.noop, label: function(tooltipItem, data) { var label = data.datasets[tooltipItem.datasetIndex].label || ''; if (label) { label += ': '; } label += tooltipItem.yLabel; return label; }, labelColor: function(tooltipItem, chart) { var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); var activeElement = meta.data[tooltipItem.index]; var view = activeElement._view; return { borderColor: view.borderColor, backgroundColor: view.backgroundColor }; }, labelTextColor: function() { return this._options.bodyFontColor; }, afterLabel: helpers.noop, // Args are: (tooltipItems, data) afterBody: helpers.noop, // Args are: (tooltipItems, data) beforeFooter: helpers.noop, footer: helpers.noop, afterFooter: helpers.noop } } }); module.exports = function(Chart) { /** * Helper method to merge the opacity into a color */ function mergeOpacity(colorString, opacity) { var color = helpers.color(colorString); return color.alpha(opacity * color.alpha()).rgbaString(); } // Helper to push or concat based on if the 2nd parameter is an array or not function pushOrConcat(base, toPush) { if (toPush) { if (helpers.isArray(toPush)) { // base = base.concat(toPush); Array.prototype.push.apply(base, toPush); } else { base.push(toPush); } } return base; } // Private helper to create a tooltip item model // @param element : the chart element (point, arc, bar) to create the tooltip item for // @return : new tooltip item function createTooltipItem(element) { var xScale = element._xScale; var yScale = element._yScale || element._scale; // handle radar || polarArea charts var index = element._index; var datasetIndex = element._datasetIndex; return { xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', index: index, datasetIndex: datasetIndex, x: element._model.x, y: element._model.y }; } /** * Helper to get the reset model for the tooltip * @param tooltipOpts {Object} the tooltip options */ function getBaseModel(tooltipOpts) { var globalDefaults = defaults.global; var valueOrDefault = helpers.valueOrDefault; return { // Positioning xPadding: tooltipOpts.xPadding, yPadding: tooltipOpts.yPadding, xAlign: tooltipOpts.xAlign, yAlign: tooltipOpts.yAlign, // Body bodyFontColor: tooltipOpts.bodyFontColor, _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), _bodyAlign: tooltipOpts.bodyAlign, bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), bodySpacing: tooltipOpts.bodySpacing, // Title titleFontColor: tooltipOpts.titleFontColor, _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), _titleAlign: tooltipOpts.titleAlign, titleSpacing: tooltipOpts.titleSpacing, titleMarginBottom: tooltipOpts.titleMarginBottom, // Footer footerFontColor: tooltipOpts.footerFontColor, _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), _footerAlign: tooltipOpts.footerAlign, footerSpacing: tooltipOpts.footerSpacing, footerMarginTop: tooltipOpts.footerMarginTop, // Appearance caretSize: tooltipOpts.caretSize, cornerRadius: tooltipOpts.cornerRadius, backgroundColor: tooltipOpts.backgroundColor, opacity: 0, legendColorBackground: tooltipOpts.multiKeyBackground, displayColors: tooltipOpts.displayColors, borderColor: tooltipOpts.borderColor, borderWidth: tooltipOpts.borderWidth }; } /** * Get the size of the tooltip */ function getTooltipSize(tooltip, model) { var ctx = tooltip._chart.ctx; var height = model.yPadding * 2; // Tooltip Padding var width = 0; // Count of all lines in the body var body = model.body; var combinedBodyLength = body.reduce(function(count, bodyItem) { return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; }, 0); combinedBodyLength += model.beforeBody.length + model.afterBody.length; var titleLineCount = model.title.length; var footerLineCount = model.footer.length; var titleFontSize = model.titleFontSize; var bodyFontSize = model.bodyFontSize; var footerFontSize = model.footerFontSize; height += titleLineCount * titleFontSize; // Title Lines height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin height += combinedBodyLength * bodyFontSize; // Body Lines height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin height += footerLineCount * (footerFontSize); // Footer Lines height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing // Title width var widthPadding = 0; var maxLineWidth = function(line) { width = Math.max(width, ctx.measureText(line).width + widthPadding); }; ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); helpers.each(model.title, maxLineWidth); // Body width ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); // Body lines may include some extra width due to the color box widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; helpers.each(body, function(bodyItem) { helpers.each(bodyItem.before, maxLineWidth); helpers.each(bodyItem.lines, maxLineWidth); helpers.each(bodyItem.after, maxLineWidth); }); // Reset back to 0 widthPadding = 0; // Footer width ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); helpers.each(model.footer, maxLineWidth); // Add padding width += 2 * model.xPadding; return { width: width, height: height }; } /** * Helper to get the alignment of a tooltip given the size */ function determineAlignment(tooltip, size) { var model = tooltip._model; var chart = tooltip._chart; var chartArea = tooltip._chart.chartArea; var xAlign = 'center'; var yAlign = 'center'; if (model.y < size.height) { yAlign = 'top'; } else if (model.y > (chart.height - size.height)) { yAlign = 'bottom'; } var lf, rf; // functions to determine left, right alignment var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges var midX = (chartArea.left + chartArea.right) / 2; var midY = (chartArea.top + chartArea.bottom) / 2; if (yAlign === 'center') { lf = function(x) { return x <= midX; }; rf = function(x) { return x > midX; }; } else { lf = function(x) { return x <= (size.width / 2); }; rf = function(x) { return x >= (chart.width - (size.width / 2)); }; } olf = function(x) { return x + size.width > chart.width; }; orf = function(x) { return x - size.width < 0; }; yf = function(y) { return y <= midY ? 'top' : 'bottom'; }; if (lf(model.x)) { xAlign = 'left'; // Is tooltip too wide and goes over the right side of the chart.? if (olf(model.x)) { xAlign = 'center'; yAlign = yf(model.y); } } else if (rf(model.x)) { xAlign = 'right'; // Is tooltip too wide and goes outside left edge of canvas? if (orf(model.x)) { xAlign = 'center'; yAlign = yf(model.y); } } var opts = tooltip._options; return { xAlign: opts.xAlign ? opts.xAlign : xAlign, yAlign: opts.yAlign ? opts.yAlign : yAlign }; } /** * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment */ function getBackgroundPoint(vm, size, alignment) { // Background Position var x = vm.x; var y = vm.y; var caretSize = vm.caretSize; var caretPadding = vm.caretPadding; var cornerRadius = vm.cornerRadius; var xAlign = alignment.xAlign; var yAlign = alignment.yAlign; var paddingAndSize = caretSize + caretPadding; var radiusAndPadding = cornerRadius + caretPadding; if (xAlign === 'right') { x -= size.width; } else if (xAlign === 'center') { x -= (size.width / 2); } if (yAlign === 'top') { y += paddingAndSize; } else if (yAlign === 'bottom') { y -= size.height + paddingAndSize; } else { y -= (size.height / 2); } if (yAlign === 'center') { if (xAlign === 'left') { x += paddingAndSize; } else if (xAlign === 'right') { x -= paddingAndSize; } } else if (xAlign === 'left') { x -= radiusAndPadding; } else if (xAlign === 'right') { x += radiusAndPadding; } return { x: x, y: y }; } Chart.Tooltip = Element.extend({ initialize: function() { this._model = getBaseModel(this._options); this._lastActive = []; }, // Get the title // Args are: (tooltipItem, data) getTitle: function() { var me = this; var opts = me._options; var callbacks = opts.callbacks; var beforeTitle = callbacks.beforeTitle.apply(me, arguments); var title = callbacks.title.apply(me, arguments); var afterTitle = callbacks.afterTitle.apply(me, arguments); var lines = []; lines = pushOrConcat(lines, beforeTitle); lines = pushOrConcat(lines, title); lines = pushOrConcat(lines, afterTitle); return lines; }, // Args are: (tooltipItem, data) getBeforeBody: function() { var lines = this._options.callbacks.beforeBody.apply(this, arguments); return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; }, // Args are: (tooltipItem, data) getBody: function(tooltipItems, data) { var me = this; var callbacks = me._options.callbacks; var bodyItems = []; helpers.each(tooltipItems, function(tooltipItem) { var bodyItem = { before: [], lines: [], after: [] }; pushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data)); pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); pushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data)); bodyItems.push(bodyItem); }); return bodyItems; }, // Args are: (tooltipItem, data) getAfterBody: function() { var lines = this._options.callbacks.afterBody.apply(this, arguments); return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; }, // Get the footer and beforeFooter and afterFooter lines // Args are: (tooltipItem, data) getFooter: function() { var me = this; var callbacks = me._options.callbacks; var beforeFooter = callbacks.beforeFooter.apply(me, arguments); var footer = callbacks.footer.apply(me, arguments); var afterFooter = callbacks.afterFooter.apply(me, arguments); var lines = []; lines = pushOrConcat(lines, beforeFooter); lines = pushOrConcat(lines, footer); lines = pushOrConcat(lines, afterFooter); return lines; }, update: function(changed) { var me = this; var opts = me._options; // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time // which breaks any animations. var existingModel = me._model; var model = me._model = getBaseModel(opts); var active = me._active; var data = me._data; // In the case where active.length === 0 we need to keep these at existing values for good animations var alignment = { xAlign: existingModel.xAlign, yAlign: existingModel.yAlign }; var backgroundPoint = { x: existingModel.x, y: existingModel.y }; var tooltipSize = { width: existingModel.width, height: existingModel.height }; var tooltipPosition = { x: existingModel.caretX, y: existingModel.caretY }; var i, len; if (active.length) { model.opacity = 1; var labelColors = []; var labelTextColors = []; tooltipPosition = Chart.Tooltip.positioners[opts.position].call(me, active, me._eventPosition); var tooltipItems = []; for (i = 0, len = active.length; i < len; ++i) { tooltipItems.push(createTooltipItem(active[i])); } // If the user provided a filter function, use it to modify the tooltip items if (opts.filter) { tooltipItems = tooltipItems.filter(function(a) { return opts.filter(a, data); }); } // If the user provided a sorting function, use it to modify the tooltip items if (opts.itemSort) { tooltipItems = tooltipItems.sort(function(a, b) { return opts.itemSort(a, b, data); }); } // Determine colors for boxes helpers.each(tooltipItems, function(tooltipItem) { labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); }); // Build the Text Lines model.title = me.getTitle(tooltipItems, data); model.beforeBody = me.getBeforeBody(tooltipItems, data); model.body = me.getBody(tooltipItems, data); model.afterBody = me.getAfterBody(tooltipItems, data); model.footer = me.getFooter(tooltipItems, data); // Initial positioning and colors model.x = Math.round(tooltipPosition.x); model.y = Math.round(tooltipPosition.y); model.caretPadding = opts.caretPadding; model.labelColors = labelColors; model.labelTextColors = labelTextColors; // data points model.dataPoints = tooltipItems; // We need to determine alignment of the tooltip tooltipSize = getTooltipSize(this, model); alignment = determineAlignment(this, tooltipSize); // Final Size and Position backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment); } else { model.opacity = 0; } model.xAlign = alignment.xAlign; model.yAlign = alignment.yAlign; model.x = backgroundPoint.x; model.y = backgroundPoint.y; model.width = tooltipSize.width; model.height = tooltipSize.height; // Point where the caret on the tooltip points to model.caretX = tooltipPosition.x; model.caretY = tooltipPosition.y; me._model = model; if (changed && opts.custom) { opts.custom.call(me, model); } return me; }, drawCaret: function(tooltipPoint, size) { var ctx = this._chart.ctx; var vm = this._view; var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); ctx.lineTo(caretPosition.x1, caretPosition.y1); ctx.lineTo(caretPosition.x2, caretPosition.y2); ctx.lineTo(caretPosition.x3, caretPosition.y3); }, getCaretPosition: function(tooltipPoint, size, vm) { var x1, x2, x3, y1, y2, y3; var caretSize = vm.caretSize; var cornerRadius = vm.cornerRadius; var xAlign = vm.xAlign; var yAlign = vm.yAlign; var ptX = tooltipPoint.x; var ptY = tooltipPoint.y; var width = size.width; var height = size.height; if (yAlign === 'center') { y2 = ptY + (height / 2); if (xAlign === 'left') { x1 = ptX; x2 = x1 - caretSize; x3 = x1; y1 = y2 + caretSize; y3 = y2 - caretSize; } else { x1 = ptX + width; x2 = x1 + caretSize; x3 = x1; y1 = y2 - caretSize; y3 = y2 + caretSize; } } else { if (xAlign === 'left') { x2 = ptX + cornerRadius + (caretSize); x1 = x2 - caretSize; x3 = x2 + caretSize; } else if (xAlign === 'right') { x2 = ptX + width - cornerRadius - caretSize; x1 = x2 - caretSize; x3 = x2 + caretSize; } else { x2 = ptX + (width / 2); x1 = x2 - caretSize; x3 = x2 + caretSize; } if (yAlign === 'top') { y1 = ptY; y2 = y1 - caretSize; y3 = y1; } else { y1 = ptY + height; y2 = y1 + caretSize; y3 = y1; // invert drawing order var tmp = x3; x3 = x1; x1 = tmp; } } return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; }, drawTitle: function(pt, vm, ctx, opacity) { var title = vm.title; if (title.length) { ctx.textAlign = vm._titleAlign; ctx.textBaseline = 'top'; var titleFontSize = vm.titleFontSize; var titleSpacing = vm.titleSpacing; ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); var i, len; for (i = 0, len = title.length; i < len; ++i) { ctx.fillText(title[i], pt.x, pt.y); pt.y += titleFontSize + titleSpacing; // Line Height and spacing if (i + 1 === title.length) { pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing } } } }, drawBody: function(pt, vm, ctx, opacity) { var bodyFontSize = vm.bodyFontSize; var bodySpacing = vm.bodySpacing; var body = vm.body; ctx.textAlign = vm._bodyAlign; ctx.textBaseline = 'top'; ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); // Before Body var xLinePadding = 0; var fillLineOfText = function(line) { ctx.fillText(line, pt.x + xLinePadding, pt.y); pt.y += bodyFontSize + bodySpacing; }; // Before body lines ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity); helpers.each(vm.beforeBody, fillLineOfText); var drawColorBoxes = vm.displayColors; xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; // Draw body lines now helpers.each(body, function(bodyItem, i) { var textColor = mergeOpacity(vm.labelTextColors[i], opacity); ctx.fillStyle = textColor; helpers.each(bodyItem.before, fillLineOfText); helpers.each(bodyItem.lines, function(line) { // Draw Legend-like boxes if needed if (drawColorBoxes) { // Fill a white rect so that colours merge nicely if the opacity is < 1 ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); // Border ctx.lineWidth = 1; ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); // Inner square ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); ctx.fillStyle = textColor; } fillLineOfText(line); }); helpers.each(bodyItem.after, fillLineOfText); }); // Reset back to 0 for after body xLinePadding = 0; // After body lines helpers.each(vm.afterBody, fillLineOfText); pt.y -= bodySpacing; // Remove last body spacing }, drawFooter: function(pt, vm, ctx, opacity) { var footer = vm.footer; if (footer.length) { pt.y += vm.footerMarginTop; ctx.textAlign = vm._footerAlign; ctx.textBaseline = 'top'; ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); helpers.each(footer, function(line) { ctx.fillText(line, pt.x, pt.y); pt.y += vm.footerFontSize + vm.footerSpacing; }); } }, drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); ctx.lineWidth = vm.borderWidth; var xAlign = vm.xAlign; var yAlign = vm.yAlign; var x = pt.x; var y = pt.y; var width = tooltipSize.width; var height = tooltipSize.height; var radius = vm.cornerRadius; ctx.beginPath(); ctx.moveTo(x + radius, y); if (yAlign === 'top') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x + width - radius, y); ctx.quadraticCurveTo(x + width, y, x + width, y + radius); if (yAlign === 'center' && xAlign === 'right') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x + width, y + height - radius); ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); if (yAlign === 'bottom') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x + radius, y + height); ctx.quadraticCurveTo(x, y + height, x, y + height - radius); if (yAlign === 'center' && xAlign === 'left') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x, y + radius); ctx.quadraticCurveTo(x, y, x + radius, y); ctx.closePath(); ctx.fill(); if (vm.borderWidth > 0) { ctx.stroke(); } }, draw: function() { var ctx = this._chart.ctx; var vm = this._view; if (vm.opacity === 0) { return; } var tooltipSize = { width: vm.width, height: vm.height }; var pt = { x: vm.x, y: vm.y }; // IE11/Edge does not like very small opacities, so snap to 0 var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; // Truthy/falsey value for empty tooltip var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; if (this._options.enabled && hasTooltipContent) { // Draw Background this.drawBackground(pt, vm, ctx, tooltipSize, opacity); // Draw Title, Body, and Footer pt.x += vm.xPadding; pt.y += vm.yPadding; // Titles this.drawTitle(pt, vm, ctx, opacity); // Body this.drawBody(pt, vm, ctx, opacity); // Footer this.drawFooter(pt, vm, ctx, opacity); } }, /** * Handle an event * @private * @param {IEvent} event - The event to handle * @returns {Boolean} true if the tooltip changed */ handleEvent: function(e) { var me = this; var options = me._options; var changed = false; me._lastActive = me._lastActive || []; // Find Active Elements for tooltips if (e.type === 'mouseout') { me._active = []; } else { me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); } // Remember Last Actives changed = !helpers.arrayEquals(me._active, me._lastActive); // If tooltip didn't change, do not handle the target event if (!changed) { return false; } me._lastActive = me._active; if (options.enabled || options.custom) { me._eventPosition = { x: e.x, y: e.y }; var model = me._model; me.update(true); me.pivot(); // See if our tooltip position changed changed |= (model.x !== me._model.x) || (model.y !== me._model.y); } return changed; } }); /** * @namespace Chart.Tooltip.positioners */ Chart.Tooltip.positioners = { /** * Average mode places the tooltip at the average position of the elements shown * @function Chart.Tooltip.positioners.average * @param elements {ChartElement[]} the elements being displayed in the tooltip * @returns {Point} tooltip position */ average: function(elements) { if (!elements.length) { return false; } var i, len; var x = 0; var y = 0; var count = 0; for (i = 0, len = elements.length; i < len; ++i) { var el = elements[i]; if (el && el.hasValue()) { var pos = el.tooltipPosition(); x += pos.x; y += pos.y; ++count; } } return { x: Math.round(x / count), y: Math.round(y / count) }; }, /** * Gets the tooltip position nearest of the item nearest to the event position * @function Chart.Tooltip.positioners.nearest * @param elements {Chart.Element[]} the tooltip elements * @param eventPosition {Point} the position of the event in canvas coordinates * @returns {Point} the tooltip position */ nearest: function(elements, eventPosition) { var x = eventPosition.x; var y = eventPosition.y; var minDistance = Number.POSITIVE_INFINITY; var i, len, nearestElement; for (i = 0, len = elements.length; i < len; ++i) { var el = elements[i]; if (el && el.hasValue()) { var center = el.getCenterPoint(); var d = helpers.distanceBetweenPoints(eventPosition, center); if (d < minDistance) { minDistance = d; nearestElement = el; } } } if (nearestElement) { var tp = nearestElement.tooltipPosition(); x = tp.x; y = tp.y; } return { x: x, y: y }; } }; }; },{"25":25,"26":26,"45":45}],36:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { elements: { arc: { backgroundColor: defaults.global.defaultColor, borderColor: '#fff', borderWidth: 2 } } }); module.exports = Element.extend({ inLabelRange: function(mouseX) { var vm = this._view; if (vm) { return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); } return false; }, inRange: function(chartX, chartY) { var vm = this._view; if (vm) { var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); var angle = pointRelativePosition.angle; var distance = pointRelativePosition.distance; // Sanitise angle range var startAngle = vm.startAngle; var endAngle = vm.endAngle; while (endAngle < startAngle) { endAngle += 2.0 * Math.PI; } while (angle > endAngle) { angle -= 2.0 * Math.PI; } while (angle < startAngle) { angle += 2.0 * Math.PI; } // Check if within the range of the open/close angle var betweenAngles = (angle >= startAngle && angle <= endAngle); var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); return (betweenAngles && withinRadius); } return false; }, getCenterPoint: function() { var vm = this._view; var halfAngle = (vm.startAngle + vm.endAngle) / 2; var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; return { x: vm.x + Math.cos(halfAngle) * halfRadius, y: vm.y + Math.sin(halfAngle) * halfRadius }; }, getArea: function() { var vm = this._view; return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); }, tooltipPosition: function() { var vm = this._view; var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; return { x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) }; }, draw: function() { var ctx = this._chart.ctx; var vm = this._view; var sA = vm.startAngle; var eA = vm.endAngle; ctx.beginPath(); ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); ctx.closePath(); ctx.strokeStyle = vm.borderColor; ctx.lineWidth = vm.borderWidth; ctx.fillStyle = vm.backgroundColor; ctx.fill(); ctx.lineJoin = 'bevel'; if (vm.borderWidth) { ctx.stroke(); } } }); },{"25":25,"26":26,"45":45}],37:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); var globalDefaults = defaults.global; defaults._set('global', { elements: { line: { tension: 0.4, backgroundColor: globalDefaults.defaultColor, borderWidth: 3, borderColor: globalDefaults.defaultColor, borderCapStyle: 'butt', borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', capBezierPoints: true, fill: true, // do we fill in the area between the line and its base axis } } }); module.exports = Element.extend({ draw: function() { var me = this; var vm = me._view; var ctx = me._chart.ctx; var spanGaps = vm.spanGaps; var points = me._children.slice(); // clone array var globalOptionLineElements = globalDefaults.elements.line; var lastDrawnIndex = -1; var index, current, previous, currentVM; // If we are looping, adding the first point again if (me._loop && points.length) { points.push(points[0]); } ctx.save(); // Stroke Line Options ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; // IE 9 and 10 do not support line dash if (ctx.setLineDash) { ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); } ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; // Stroke Line ctx.beginPath(); lastDrawnIndex = -1; for (index = 0; index < points.length; ++index) { current = points[index]; previous = helpers.previousItem(points, index); currentVM = current._view; // First point moves to it's starting position no matter what if (index === 0) { if (!currentVM.skip) { ctx.moveTo(currentVM.x, currentVM.y); lastDrawnIndex = index; } } else { previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; if (!currentVM.skip) { if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { // There was a gap and this is the first point after the gap ctx.moveTo(currentVM.x, currentVM.y); } else { // Line to next point helpers.canvas.lineTo(ctx, previous._view, current._view); } lastDrawnIndex = index; } } } ctx.stroke(); ctx.restore(); } }); },{"25":25,"26":26,"45":45}],38:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); var defaultColor = defaults.global.defaultColor; defaults._set('global', { elements: { point: { radius: 3, pointStyle: 'circle', backgroundColor: defaultColor, borderColor: defaultColor, borderWidth: 1, // Hover hitRadius: 1, hoverRadius: 4, hoverBorderWidth: 1 } } }); function xRange(mouseX) { var vm = this._view; return vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false; } function yRange(mouseY) { var vm = this._view; return vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false; } module.exports = Element.extend({ inRange: function(mouseX, mouseY) { var vm = this._view; return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; }, inLabelRange: xRange, inXRange: xRange, inYRange: yRange, getCenterPoint: function() { var vm = this._view; return { x: vm.x, y: vm.y }; }, getArea: function() { return Math.PI * Math.pow(this._view.radius, 2); }, tooltipPosition: function() { var vm = this._view; return { x: vm.x, y: vm.y, padding: vm.radius + vm.borderWidth }; }, draw: function(chartArea) { var vm = this._view; var model = this._model; var ctx = this._chart.ctx; var pointStyle = vm.pointStyle; var radius = vm.radius; var x = vm.x; var y = vm.y; var color = helpers.color; var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) var ratio = 0; if (vm.skip) { return; } ctx.strokeStyle = vm.borderColor || defaultColor; ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); ctx.fillStyle = vm.backgroundColor || defaultColor; // Cliping for Points. // going out from inner charArea? if ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) { // Point fade out if (model.x < chartArea.left) { ratio = (x - model.x) / (chartArea.left - model.x); } else if (chartArea.right * errMargin < model.x) { ratio = (model.x - x) / (model.x - chartArea.right); } else if (model.y < chartArea.top) { ratio = (y - model.y) / (chartArea.top - model.y); } else if (chartArea.bottom * errMargin < model.y) { ratio = (model.y - y) / (model.y - chartArea.bottom); } ratio = Math.round(ratio * 100) / 100; ctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString(); ctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString(); } helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y); } }); },{"25":25,"26":26,"45":45}],39:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); defaults._set('global', { elements: { rectangle: { backgroundColor: defaults.global.defaultColor, borderColor: defaults.global.defaultColor, borderSkipped: 'bottom', borderWidth: 0 } } }); function isVertical(bar) { return bar._view.width !== undefined; } /** * Helper function to get the bounds of the bar regardless of the orientation * @param bar {Chart.Element.Rectangle} the bar * @return {Bounds} bounds of the bar * @private */ function getBarBounds(bar) { var vm = bar._view; var x1, x2, y1, y2; if (isVertical(bar)) { // vertical var halfWidth = vm.width / 2; x1 = vm.x - halfWidth; x2 = vm.x + halfWidth; y1 = Math.min(vm.y, vm.base); y2 = Math.max(vm.y, vm.base); } else { // horizontal bar var halfHeight = vm.height / 2; x1 = Math.min(vm.x, vm.base); x2 = Math.max(vm.x, vm.base); y1 = vm.y - halfHeight; y2 = vm.y + halfHeight; } return { left: x1, top: y1, right: x2, bottom: y2 }; } module.exports = Element.extend({ draw: function() { var ctx = this._chart.ctx; var vm = this._view; var left, right, top, bottom, signX, signY, borderSkipped; var borderWidth = vm.borderWidth; if (!vm.horizontal) { // bar left = vm.x - vm.width / 2; right = vm.x + vm.width / 2; top = vm.y; bottom = vm.base; signX = 1; signY = bottom > top ? 1 : -1; borderSkipped = vm.borderSkipped || 'bottom'; } else { // horizontal bar left = vm.base; right = vm.x; top = vm.y - vm.height / 2; bottom = vm.y + vm.height / 2; signX = right > left ? 1 : -1; signY = 1; borderSkipped = vm.borderSkipped || 'left'; } // Canvas doesn't allow us to stroke inside the width so we can // adjust the sizes to fit if we're setting a stroke on the line if (borderWidth) { // borderWidth shold be less than bar width and bar height. var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); borderWidth = borderWidth > barSize ? barSize : borderWidth; var halfStroke = borderWidth / 2; // Adjust borderWidth when bar top position is near vm.base(zero). var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); // not become a vertical line? if (borderLeft !== borderRight) { top = borderTop; bottom = borderBottom; } // not become a horizontal line? if (borderTop !== borderBottom) { left = borderLeft; right = borderRight; } } ctx.beginPath(); ctx.fillStyle = vm.backgroundColor; ctx.strokeStyle = vm.borderColor; ctx.lineWidth = borderWidth; // Corner points, from bottom-left to bottom-right clockwise // | 1 2 | // | 0 3 | var corners = [ [left, bottom], [left, top], [right, top], [right, bottom] ]; // Find first (starting) corner with fallback to 'bottom' var borders = ['bottom', 'left', 'top', 'right']; var startCorner = borders.indexOf(borderSkipped, 0); if (startCorner === -1) { startCorner = 0; } function cornerAt(index) { return corners[(startCorner + index) % 4]; } // Draw rectangle from 'startCorner' var corner = cornerAt(0); ctx.moveTo(corner[0], corner[1]); for (var i = 1; i < 4; i++) { corner = cornerAt(i); ctx.lineTo(corner[0], corner[1]); } ctx.fill(); if (borderWidth) { ctx.stroke(); } }, height: function() { var vm = this._view; return vm.base - vm.y; }, inRange: function(mouseX, mouseY) { var inRange = false; if (this._view) { var bounds = getBarBounds(this); inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; } return inRange; }, inLabelRange: function(mouseX, mouseY) { var me = this; if (!me._view) { return false; } var inRange = false; var bounds = getBarBounds(me); if (isVertical(me)) { inRange = mouseX >= bounds.left && mouseX <= bounds.right; } else { inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; } return inRange; }, inXRange: function(mouseX) { var bounds = getBarBounds(this); return mouseX >= bounds.left && mouseX <= bounds.right; }, inYRange: function(mouseY) { var bounds = getBarBounds(this); return mouseY >= bounds.top && mouseY <= bounds.bottom; }, getCenterPoint: function() { var vm = this._view; var x, y; if (isVertical(this)) { x = vm.x; y = (vm.y + vm.base) / 2; } else { x = (vm.x + vm.base) / 2; y = vm.y; } return {x: x, y: y}; }, getArea: function() { var vm = this._view; return vm.width * Math.abs(vm.y - vm.base); }, tooltipPosition: function() { var vm = this._view; return { x: vm.x, y: vm.y }; } }); },{"25":25,"26":26}],40:[function(require,module,exports){ 'use strict'; module.exports = {}; module.exports.Arc = require(36); module.exports.Line = require(37); module.exports.Point = require(38); module.exports.Rectangle = require(39); },{"36":36,"37":37,"38":38,"39":39}],41:[function(require,module,exports){ 'use strict'; var helpers = require(42); /** * @namespace Chart.helpers.canvas */ var exports = module.exports = { /** * Clears the entire canvas associated to the given `chart`. * @param {Chart} chart - The chart for which to clear the canvas. */ clear: function(chart) { chart.ctx.clearRect(0, 0, chart.width, chart.height); }, /** * Creates a "path" for a rectangle with rounded corners at position (x, y) with a * given size (width, height) and the same `radius` for all corners. * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. * @param {Number} x - The x axis of the coordinate for the rectangle starting point. * @param {Number} y - The y axis of the coordinate for the rectangle starting point. * @param {Number} width - The rectangle's width. * @param {Number} height - The rectangle's height. * @param {Number} radius - The rounded amount (in pixels) for the four corners. * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? */ roundedRect: function(ctx, x, y, width, height, radius) { if (radius) { var rx = Math.min(radius, width / 2); var ry = Math.min(radius, height / 2); ctx.moveTo(x + rx, y); ctx.lineTo(x + width - rx, y); ctx.quadraticCurveTo(x + width, y, x + width, y + ry); ctx.lineTo(x + width, y + height - ry); ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height); ctx.lineTo(x + rx, y + height); ctx.quadraticCurveTo(x, y + height, x, y + height - ry); ctx.lineTo(x, y + ry); ctx.quadraticCurveTo(x, y, x + rx, y); } else { ctx.rect(x, y, width, height); } }, drawPoint: function(ctx, style, radius, x, y) { var type, edgeLength, xOffset, yOffset, height, size; if (style && typeof style === 'object') { type = style.toString(); if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); return; } } if (isNaN(radius) || radius <= 0) { return; } switch (style) { // Default includes circle default: ctx.beginPath(); ctx.arc(x, y, radius, 0, Math.PI * 2); ctx.closePath(); ctx.fill(); break; case 'triangle': ctx.beginPath(); edgeLength = 3 * radius / Math.sqrt(3); height = edgeLength * Math.sqrt(3) / 2; ctx.moveTo(x - edgeLength / 2, y + height / 3); ctx.lineTo(x + edgeLength / 2, y + height / 3); ctx.lineTo(x, y - 2 * height / 3); ctx.closePath(); ctx.fill(); break; case 'rect': size = 1 / Math.SQRT2 * radius; ctx.beginPath(); ctx.fillRect(x - size, y - size, 2 * size, 2 * size); ctx.strokeRect(x - size, y - size, 2 * size, 2 * size); break; case 'rectRounded': var offset = radius / Math.SQRT2; var leftX = x - offset; var topY = y - offset; var sideSize = Math.SQRT2 * radius; ctx.beginPath(); this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2); ctx.closePath(); ctx.fill(); break; case 'rectRot': size = 1 / Math.SQRT2 * radius; ctx.beginPath(); ctx.moveTo(x - size, y); ctx.lineTo(x, y + size); ctx.lineTo(x + size, y); ctx.lineTo(x, y - size); ctx.closePath(); ctx.fill(); break; case 'cross': ctx.beginPath(); ctx.moveTo(x, y + radius); ctx.lineTo(x, y - radius); ctx.moveTo(x - radius, y); ctx.lineTo(x + radius, y); ctx.closePath(); break; case 'crossRot': ctx.beginPath(); xOffset = Math.cos(Math.PI / 4) * radius; yOffset = Math.sin(Math.PI / 4) * radius; ctx.moveTo(x - xOffset, y - yOffset); ctx.lineTo(x + xOffset, y + yOffset); ctx.moveTo(x - xOffset, y + yOffset); ctx.lineTo(x + xOffset, y - yOffset); ctx.closePath(); break; case 'star': ctx.beginPath(); ctx.moveTo(x, y + radius); ctx.lineTo(x, y - radius); ctx.moveTo(x - radius, y); ctx.lineTo(x + radius, y); xOffset = Math.cos(Math.PI / 4) * radius; yOffset = Math.sin(Math.PI / 4) * radius; ctx.moveTo(x - xOffset, y - yOffset); ctx.lineTo(x + xOffset, y + yOffset); ctx.moveTo(x - xOffset, y + yOffset); ctx.lineTo(x + xOffset, y - yOffset); ctx.closePath(); break; case 'line': ctx.beginPath(); ctx.moveTo(x - radius, y); ctx.lineTo(x + radius, y); ctx.closePath(); break; case 'dash': ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x + radius, y); ctx.closePath(); break; } ctx.stroke(); }, clipArea: function(ctx, area) { ctx.save(); ctx.beginPath(); ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); ctx.clip(); }, unclipArea: function(ctx) { ctx.restore(); }, lineTo: function(ctx, previous, target, flip) { if (target.steppedLine) { if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { ctx.lineTo(previous.x, target.y); } else { ctx.lineTo(target.x, previous.y); } ctx.lineTo(target.x, target.y); return; } if (!target.tension) { ctx.lineTo(target.x, target.y); return; } ctx.bezierCurveTo( flip ? previous.controlPointPreviousX : previous.controlPointNextX, flip ? previous.controlPointPreviousY : previous.controlPointNextY, flip ? target.controlPointNextX : target.controlPointPreviousX, flip ? target.controlPointNextY : target.controlPointPreviousY, target.x, target.y); } }; // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. * @namespace Chart.helpers.clear * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.clear = exports.clear; /** * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. * @namespace Chart.helpers.drawRoundedRectangle * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.drawRoundedRectangle = function(ctx) { ctx.beginPath(); exports.roundedRect.apply(exports, arguments); ctx.closePath(); }; },{"42":42}],42:[function(require,module,exports){ 'use strict'; /** * @namespace Chart.helpers */ var helpers = { /** * An empty function that can be used, for example, for optional callback. */ noop: function() {}, /** * Returns a unique id, sequentially generated from a global variable. * @returns {Number} * @function */ uid: (function() { var id = 0; return function() { return id++; }; }()), /** * Returns true if `value` is neither null nor undefined, else returns false. * @param {*} value - The value to test. * @returns {Boolean} * @since 2.7.0 */ isNullOrUndef: function(value) { return value === null || typeof value === 'undefined'; }, /** * Returns true if `value` is an array, else returns false. * @param {*} value - The value to test. * @returns {Boolean} * @function */ isArray: Array.isArray ? Array.isArray : function(value) { return Object.prototype.toString.call(value) === '[object Array]'; }, /** * Returns true if `value` is an object (excluding null), else returns false. * @param {*} value - The value to test. * @returns {Boolean} * @since 2.7.0 */ isObject: function(value) { return value !== null && Object.prototype.toString.call(value) === '[object Object]'; }, /** * Returns `value` if defined, else returns `defaultValue`. * @param {*} value - The value to return if defined. * @param {*} defaultValue - The value to return if `value` is undefined. * @returns {*} */ valueOrDefault: function(value, defaultValue) { return typeof value === 'undefined' ? defaultValue : value; }, /** * Returns value at the given `index` in array if defined, else returns `defaultValue`. * @param {Array} value - The array to lookup for value at `index`. * @param {Number} index - The index in `value` to lookup for value. * @param {*} defaultValue - The value to return if `value[index]` is undefined. * @returns {*} */ valueAtIndexOrDefault: function(value, index, defaultValue) { return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); }, /** * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the * value returned by `fn`. If `fn` is not a function, this method returns undefined. * @param {Function} fn - The function to call. * @param {Array|undefined|null} args - The arguments with which `fn` should be called. * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. * @returns {*} */ callback: function(fn, args, thisArg) { if (fn && typeof fn.call === 'function') { return fn.apply(thisArg, args); } }, /** * Note(SB) for performance sake, this method should only be used when loopable type * is unknown or in none intensive code (not called often and small loopable). Else * it's preferable to use a regular for() loop and save extra function calls. * @param {Object|Array} loopable - The object or array to be iterated. * @param {Function} fn - The function to call for each item. * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. * @param {Boolean} [reverse] - If true, iterates backward on the loopable. */ each: function(loopable, fn, thisArg, reverse) { var i, len, keys; if (helpers.isArray(loopable)) { len = loopable.length; if (reverse) { for (i = len - 1; i >= 0; i--) { fn.call(thisArg, loopable[i], i); } } else { for (i = 0; i < len; i++) { fn.call(thisArg, loopable[i], i); } } } else if (helpers.isObject(loopable)) { keys = Object.keys(loopable); len = keys.length; for (i = 0; i < len; i++) { fn.call(thisArg, loopable[keys[i]], keys[i]); } } }, /** * Returns true if the `a0` and `a1` arrays have the same content, else returns false. * @see http://stackoverflow.com/a/14853974 * @param {Array} a0 - The array to compare * @param {Array} a1 - The array to compare * @returns {Boolean} */ arrayEquals: function(a0, a1) { var i, ilen, v0, v1; if (!a0 || !a1 || a0.length !== a1.length) { return false; } for (i = 0, ilen = a0.length; i < ilen; ++i) { v0 = a0[i]; v1 = a1[i]; if (v0 instanceof Array && v1 instanceof Array) { if (!helpers.arrayEquals(v0, v1)) { return false; } } else if (v0 !== v1) { // NOTE: two different object instances will never be equal: {x:20} != {x:20} return false; } } return true; }, /** * Returns a deep copy of `source` without keeping references on objects and arrays. * @param {*} source - The value to clone. * @returns {*} */ clone: function(source) { if (helpers.isArray(source)) { return source.map(helpers.clone); } if (helpers.isObject(source)) { var target = {}; var keys = Object.keys(source); var klen = keys.length; var k = 0; for (; k < klen; ++k) { target[keys[k]] = helpers.clone(source[keys[k]]); } return target; } return source; }, /** * The default merger when Chart.helpers.merge is called without merger option. * Note(SB): this method is also used by configMerge and scaleMerge as fallback. * @private */ _merger: function(key, target, source, options) { var tval = target[key]; var sval = source[key]; if (helpers.isObject(tval) && helpers.isObject(sval)) { helpers.merge(tval, sval, options); } else { target[key] = helpers.clone(sval); } }, /** * Merges source[key] in target[key] only if target[key] is undefined. * @private */ _mergerIf: function(key, target, source) { var tval = target[key]; var sval = source[key]; if (helpers.isObject(tval) && helpers.isObject(sval)) { helpers.mergeIf(tval, sval); } else if (!target.hasOwnProperty(key)) { target[key] = helpers.clone(sval); } }, /** * Recursively deep copies `source` properties into `target` with the given `options`. * IMPORTANT: `target` is not cloned and will be updated with `source` properties. * @param {Object} target - The target object in which all sources are merged into. * @param {Object|Array(Object)} source - Object(s) to merge into `target`. * @param {Object} [options] - Merging options: * @param {Function} [options.merger] - The merge method (key, target, source, options) * @returns {Object} The `target` object. */ merge: function(target, source, options) { var sources = helpers.isArray(source) ? source : [source]; var ilen = sources.length; var merge, i, keys, klen, k; if (!helpers.isObject(target)) { return target; } options = options || {}; merge = options.merger || helpers._merger; for (i = 0; i < ilen; ++i) { source = sources[i]; if (!helpers.isObject(source)) { continue; } keys = Object.keys(source); for (k = 0, klen = keys.length; k < klen; ++k) { merge(keys[k], target, source, options); } } return target; }, /** * Recursively deep copies `source` properties into `target` *only* if not defined in target. * IMPORTANT: `target` is not cloned and will be updated with `source` properties. * @param {Object} target - The target object in which all sources are merged into. * @param {Object|Array(Object)} source - Object(s) to merge into `target`. * @returns {Object} The `target` object. */ mergeIf: function(target, source) { return helpers.merge(target, source, {merger: helpers._mergerIf}); }, /** * Applies the contents of two or more objects together into the first object. * @param {Object} target - The target object in which all objects are merged into. * @param {Object} arg1 - Object containing additional properties to merge in target. * @param {Object} argN - Additional objects containing properties to merge in target. * @returns {Object} The `target` object. */ extend: function(target) { var setFn = function(value, key) { target[key] = value; }; for (var i = 1, ilen = arguments.length; i < ilen; ++i) { helpers.each(arguments[i], setFn); } return target; }, /** * Basic javascript inheritance based on the model created in Backbone.js */ inherits: function(extensions) { var me = this; var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { return me.apply(this, arguments); }; var Surrogate = function() { this.constructor = ChartElement; }; Surrogate.prototype = me.prototype; ChartElement.prototype = new Surrogate(); ChartElement.extend = helpers.inherits; if (extensions) { helpers.extend(ChartElement.prototype, extensions); } ChartElement.__super__ = me.prototype; return ChartElement; } }; module.exports = helpers; // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.callback instead. * @function Chart.helpers.callCallback * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ helpers.callCallback = helpers.callback; /** * Provided for backward compatibility, use Array.prototype.indexOf instead. * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ * @function Chart.helpers.indexOf * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.indexOf = function(array, item, fromIndex) { return Array.prototype.indexOf.call(array, item, fromIndex); }; /** * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. * @function Chart.helpers.getValueOrDefault * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.getValueOrDefault = helpers.valueOrDefault; /** * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. * @function Chart.helpers.getValueAtIndexOrDefault * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; },{}],43:[function(require,module,exports){ 'use strict'; var helpers = require(42); /** * Easing functions adapted from Robert Penner's easing equations. * @namespace Chart.helpers.easingEffects * @see http://www.robertpenner.com/easing/ */ var effects = { linear: function(t) { return t; }, easeInQuad: function(t) { return t * t; }, easeOutQuad: function(t) { return -t * (t - 2); }, easeInOutQuad: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t; } return -0.5 * ((--t) * (t - 2) - 1); }, easeInCubic: function(t) { return t * t * t; }, easeOutCubic: function(t) { return (t = t - 1) * t * t + 1; }, easeInOutCubic: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t * t; } return 0.5 * ((t -= 2) * t * t + 2); }, easeInQuart: function(t) { return t * t * t * t; }, easeOutQuart: function(t) { return -((t = t - 1) * t * t * t - 1); }, easeInOutQuart: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t * t * t; } return -0.5 * ((t -= 2) * t * t * t - 2); }, easeInQuint: function(t) { return t * t * t * t * t; }, easeOutQuint: function(t) { return (t = t - 1) * t * t * t * t + 1; }, easeInOutQuint: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t * t * t * t; } return 0.5 * ((t -= 2) * t * t * t * t + 2); }, easeInSine: function(t) { return -Math.cos(t * (Math.PI / 2)) + 1; }, easeOutSine: function(t) { return Math.sin(t * (Math.PI / 2)); }, easeInOutSine: function(t) { return -0.5 * (Math.cos(Math.PI * t) - 1); }, easeInExpo: function(t) { return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); }, easeOutExpo: function(t) { return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; }, easeInOutExpo: function(t) { if (t === 0) { return 0; } if (t === 1) { return 1; } if ((t /= 0.5) < 1) { return 0.5 * Math.pow(2, 10 * (t - 1)); } return 0.5 * (-Math.pow(2, -10 * --t) + 2); }, easeInCirc: function(t) { if (t >= 1) { return t; } return -(Math.sqrt(1 - t * t) - 1); }, easeOutCirc: function(t) { return Math.sqrt(1 - (t = t - 1) * t); }, easeInOutCirc: function(t) { if ((t /= 0.5) < 1) { return -0.5 * (Math.sqrt(1 - t * t) - 1); } return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); }, easeInElastic: function(t) { var s = 1.70158; var p = 0; var a = 1; if (t === 0) { return 0; } if (t === 1) { return 1; } if (!p) { p = 0.3; } if (a < 1) { a = 1; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(1 / a); } return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); }, easeOutElastic: function(t) { var s = 1.70158; var p = 0; var a = 1; if (t === 0) { return 0; } if (t === 1) { return 1; } if (!p) { p = 0.3; } if (a < 1) { a = 1; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(1 / a); } return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; }, easeInOutElastic: function(t) { var s = 1.70158; var p = 0; var a = 1; if (t === 0) { return 0; } if ((t /= 0.5) === 2) { return 1; } if (!p) { p = 0.45; } if (a < 1) { a = 1; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(1 / a); } if (t < 1) { return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); } return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; }, easeInBack: function(t) { var s = 1.70158; return t * t * ((s + 1) * t - s); }, easeOutBack: function(t) { var s = 1.70158; return (t = t - 1) * t * ((s + 1) * t + s) + 1; }, easeInOutBack: function(t) { var s = 1.70158; if ((t /= 0.5) < 1) { return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); } return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); }, easeInBounce: function(t) { return 1 - effects.easeOutBounce(1 - t); }, easeOutBounce: function(t) { if (t < (1 / 2.75)) { return 7.5625 * t * t; } if (t < (2 / 2.75)) { return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; } if (t < (2.5 / 2.75)) { return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; } return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; }, easeInOutBounce: function(t) { if (t < 0.5) { return effects.easeInBounce(t * 2) * 0.5; } return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; } }; module.exports = { effects: effects }; // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.easing.effects instead. * @function Chart.helpers.easingEffects * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.easingEffects = effects; },{"42":42}],44:[function(require,module,exports){ 'use strict'; var helpers = require(42); /** * @alias Chart.helpers.options * @namespace */ module.exports = { /** * Converts the given line height `value` in pixels for a specific font `size`. * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). * @param {Number} size - The font size (in pixels) used to resolve relative `value`. * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height * @since 2.7.0 */ toLineHeight: function(value, size) { var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); if (!matches || matches[1] === 'normal') { return size * 1.2; } value = +matches[2]; switch (matches[3]) { case 'px': return value; case '%': value /= 100; break; default: break; } return size * value; }, /** * Converts the given value into a padding object with pre-computed width/height. * @param {Number|Object} value - If a number, set the value to all TRBL component, * else, if and object, use defined properties and sets undefined ones to 0. * @returns {Object} The padding values (top, right, bottom, left, width, height) * @since 2.7.0 */ toPadding: function(value) { var t, r, b, l; if (helpers.isObject(value)) { t = +value.top || 0; r = +value.right || 0; b = +value.bottom || 0; l = +value.left || 0; } else { t = r = b = l = +value || 0; } return { top: t, right: r, bottom: b, left: l, height: t + b, width: l + r }; }, /** * Evaluates the given `inputs` sequentially and returns the first defined value. * @param {Array[]} inputs - An array of values, falling back to the last value. * @param {Object} [context] - If defined and the current value is a function, the value * is called with `context` as first argument and the result becomes the new input. * @param {Number} [index] - If defined and the current value is an array, the value * at `index` become the new input. * @since 2.7.0 */ resolve: function(inputs, context, index) { var i, ilen, value; for (i = 0, ilen = inputs.length; i < ilen; ++i) { value = inputs[i]; if (value === undefined) { continue; } if (context !== undefined && typeof value === 'function') { value = value(context); } if (index !== undefined && helpers.isArray(value)) { value = value[index]; } if (value !== undefined) { return value; } } } }; },{"42":42}],45:[function(require,module,exports){ 'use strict'; module.exports = require(42); module.exports.easing = require(43); module.exports.canvas = require(41); module.exports.options = require(44); },{"41":41,"42":42,"43":43,"44":44}],46:[function(require,module,exports){ /** * Platform fallback implementation (minimal). * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 */ module.exports = { acquireContext: function(item) { if (item && item.canvas) { // Support for any object associated to a canvas (including a context2d) item = item.canvas; } return item && item.getContext('2d') || null; } }; },{}],47:[function(require,module,exports){ /** * Chart.Platform implementation for targeting a web browser */ 'use strict'; var helpers = require(45); var EXPANDO_KEY = '$chartjs'; var CSS_PREFIX = 'chartjs-'; var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; /** * DOM event types -> Chart.js event types. * Note: only events with different types are mapped. * @see https://developer.mozilla.org/en-US/docs/Web/Events */ var EVENT_TYPES = { touchstart: 'mousedown', touchmove: 'mousemove', touchend: 'mouseup', pointerenter: 'mouseenter', pointerdown: 'mousedown', pointermove: 'mousemove', pointerup: 'mouseup', pointerleave: 'mouseout', pointerout: 'mouseout' }; /** * The "used" size is the final value of a dimension property after all calculations have * been performed. This method uses the computed style of `element` but returns undefined * if the computed style is not expressed in pixels. That can happen in some cases where * `element` has a size relative to its parent and this last one is not yet displayed, * for example because of `display: none` on a parent node. * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value * @returns {Number} Size in pixels or undefined if unknown. */ function readUsedSize(element, property) { var value = helpers.getStyle(element, property); var matches = value && value.match(/^(\d+)(\.\d+)?px$/); return matches ? Number(matches[1]) : undefined; } /** * Initializes the canvas style and render size without modifying the canvas display size, * since responsiveness is handled by the controller.resize() method. The config is used * to determine the aspect ratio to apply in case no explicit height has been specified. */ function initCanvas(canvas, config) { var style = canvas.style; // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it // returns null or '' if no explicit value has been set to the canvas attribute. var renderHeight = canvas.getAttribute('height'); var renderWidth = canvas.getAttribute('width'); // Chart.js modifies some canvas values that we want to restore on destroy canvas[EXPANDO_KEY] = { initial: { height: renderHeight, width: renderWidth, style: { display: style.display, height: style.height, width: style.width } } }; // Force canvas to display as block to avoid extra space caused by inline // elements, which would interfere with the responsive resize process. // https://github.com/chartjs/Chart.js/issues/2538 style.display = style.display || 'block'; if (renderWidth === null || renderWidth === '') { var displayWidth = readUsedSize(canvas, 'width'); if (displayWidth !== undefined) { canvas.width = displayWidth; } } if (renderHeight === null || renderHeight === '') { if (canvas.style.height === '') { // If no explicit render height and style height, let's apply the aspect ratio, // which one can be specified by the user but also by charts as default option // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. canvas.height = canvas.width / (config.options.aspectRatio || 2); } else { var displayHeight = readUsedSize(canvas, 'height'); if (displayWidth !== undefined) { canvas.height = displayHeight; } } } return canvas; } /** * Detects support for options object argument in addEventListener. * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support * @private */ var supportsEventListenerOptions = (function() { var supports = false; try { var options = Object.defineProperty({}, 'passive', { get: function() { supports = true; } }); window.addEventListener('e', null, options); } catch (e) { // continue regardless of error } return supports; }()); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. // https://github.com/chartjs/Chart.js/issues/4287 var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; function addEventListener(node, type, listener) { node.addEventListener(type, listener, eventListenerOptions); } function removeEventListener(node, type, listener) { node.removeEventListener(type, listener, eventListenerOptions); } function createEvent(type, chart, x, y, nativeEvent) { return { type: type, chart: chart, native: nativeEvent || null, x: x !== undefined ? x : null, y: y !== undefined ? y : null, }; } function fromNativeEvent(event, chart) { var type = EVENT_TYPES[event.type] || event.type; var pos = helpers.getRelativePosition(event, chart); return createEvent(type, chart, pos.x, pos.y, event); } function throttled(fn, thisArg) { var ticking = false; var args = []; return function() { args = Array.prototype.slice.call(arguments); thisArg = thisArg || this; if (!ticking) { ticking = true; helpers.requestAnimFrame.call(window, function() { ticking = false; fn.apply(thisArg, args); }); } }; } // Implementation based on https://github.com/marcj/css-element-queries function createResizer(handler) { var resizer = document.createElement('div'); var cls = CSS_PREFIX + 'size-monitor'; var maxSize = 1000000; var style = 'position:absolute;' + 'left:0;' + 'top:0;' + 'right:0;' + 'bottom:0;' + 'overflow:hidden;' + 'pointer-events:none;' + 'visibility:hidden;' + 'z-index:-1;'; resizer.style.cssText = style; resizer.className = cls; resizer.innerHTML = '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; var expand = resizer.childNodes[0]; var shrink = resizer.childNodes[1]; resizer._reset = function() { expand.scrollLeft = maxSize; expand.scrollTop = maxSize; shrink.scrollLeft = maxSize; shrink.scrollTop = maxSize; }; var onScroll = function() { resizer._reset(); handler(); }; addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); return resizer; } // https://davidwalsh.name/detect-node-insertion function watchForRender(node, handler) { var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); var proxy = expando.renderProxy = function(e) { if (e.animationName === CSS_RENDER_ANIMATION) { handler(); } }; helpers.each(ANIMATION_START_EVENTS, function(type) { addEventListener(node, type, proxy); }); // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class // is removed then added back immediately (same animation frame?). Accessing the // `offsetParent` property will force a reflow and re-evaluate the CSS animation. // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics // https://github.com/chartjs/Chart.js/issues/4737 expando.reflow = !!node.offsetParent; node.classList.add(CSS_RENDER_MONITOR); } function unwatchForRender(node) { var expando = node[EXPANDO_KEY] || {}; var proxy = expando.renderProxy; if (proxy) { helpers.each(ANIMATION_START_EVENTS, function(type) { removeEventListener(node, type, proxy); }); delete expando.renderProxy; } node.classList.remove(CSS_RENDER_MONITOR); } function addResizeListener(node, listener, chart) { var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); // Let's keep track of this added resizer and thus avoid DOM query when removing it. var resizer = expando.resizer = createResizer(throttled(function() { if (expando.resizer) { return listener(createEvent('resize', chart)); } })); // The resizer needs to be attached to the node parent, so we first need to be // sure that `node` is attached to the DOM before injecting the resizer element. watchForRender(node, function() { if (expando.resizer) { var container = node.parentNode; if (container && container !== resizer.parentNode) { container.insertBefore(resizer, container.firstChild); } // The container size might have changed, let's reset the resizer state. resizer._reset(); } }); } function removeResizeListener(node) { var expando = node[EXPANDO_KEY] || {}; var resizer = expando.resizer; delete expando.resizer; unwatchForRender(node); if (resizer && resizer.parentNode) { resizer.parentNode.removeChild(resizer); } } function injectCSS(platform, css) { // http://stackoverflow.com/q/3922139 var style = platform._style || document.createElement('style'); if (!platform._style) { platform._style = style; css = '/* Chart.js */\n' + css; style.setAttribute('type', 'text/css'); document.getElementsByTagName('head')[0].appendChild(style); } style.appendChild(document.createTextNode(css)); } module.exports = { /** * This property holds whether this platform is enabled for the current environment. * Currently used by platform.js to select the proper implementation. * @private */ _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', initialize: function() { var keyframes = 'from{opacity:0.99}to{opacity:1}'; injectCSS(this, // DOM rendering detection // https://davidwalsh.name/detect-node-insertion '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + '.' + CSS_RENDER_MONITOR + '{' + '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + '}' ); }, acquireContext: function(item, config) { if (typeof item === 'string') { item = document.getElementById(item); } else if (item.length) { // Support for array based queries (such as jQuery) item = item[0]; } if (item && item.canvas) { // Support for any object associated to a canvas (including a context2d) item = item.canvas; } // To prevent canvas fingerprinting, some add-ons undefine the getContext // method, for example: https://github.com/kkapsner/CanvasBlocker // https://github.com/chartjs/Chart.js/issues/2807 var context = item && item.getContext && item.getContext('2d'); // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is // inside an iframe or when running in a protected environment. We could guess the // types from their toString() value but let's keep things flexible and assume it's // a sufficient condition if the item has a context2D which has item as `canvas`. // https://github.com/chartjs/Chart.js/issues/3887 // https://github.com/chartjs/Chart.js/issues/4102 // https://github.com/chartjs/Chart.js/issues/4152 if (context && context.canvas === item) { initCanvas(item, config); return context; } return null; }, releaseContext: function(context) { var canvas = context.canvas; if (!canvas[EXPANDO_KEY]) { return; } var initial = canvas[EXPANDO_KEY].initial; ['height', 'width'].forEach(function(prop) { var value = initial[prop]; if (helpers.isNullOrUndef(value)) { canvas.removeAttribute(prop); } else { canvas.setAttribute(prop, value); } }); helpers.each(initial.style || {}, function(value, key) { canvas.style[key] = value; }); // The canvas render size might have been changed (and thus the state stack discarded), // we can't use save() and restore() to restore the initial state. So make sure that at // least the canvas context is reset to the default state by setting the canvas width. // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html canvas.width = canvas.width; delete canvas[EXPANDO_KEY]; }, addEventListener: function(chart, type, listener) { var canvas = chart.canvas; if (type === 'resize') { // Note: the resize event is not supported on all browsers. addResizeListener(canvas, listener, chart); return; } var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); var proxies = expando.proxies || (expando.proxies = {}); var proxy = proxies[chart.id + '_' + type] = function(event) { listener(fromNativeEvent(event, chart)); }; addEventListener(canvas, type, proxy); }, removeEventListener: function(chart, type, listener) { var canvas = chart.canvas; if (type === 'resize') { // Note: the resize event is not supported on all browsers. removeResizeListener(canvas, listener); return; } var expando = listener[EXPANDO_KEY] || {}; var proxies = expando.proxies || {}; var proxy = proxies[chart.id + '_' + type]; if (!proxy) { return; } removeEventListener(canvas, type, proxy); } }; // DEPRECATIONS /** * Provided for backward compatibility, use EventTarget.addEventListener instead. * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener * @function Chart.helpers.addEvent * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.addEvent = addEventListener; /** * Provided for backward compatibility, use EventTarget.removeEventListener instead. * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener * @function Chart.helpers.removeEvent * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.removeEvent = removeEventListener; },{"45":45}],48:[function(require,module,exports){ 'use strict'; var helpers = require(45); var basic = require(46); var dom = require(47); // @TODO Make possible to select another platform at build time. var implementation = dom._enabled ? dom : basic; /** * @namespace Chart.platform * @see https://chartjs.gitbooks.io/proposals/content/Platform.html * @since 2.4.0 */ module.exports = helpers.extend({ /** * @since 2.7.0 */ initialize: function() {}, /** * Called at chart construction time, returns a context2d instance implementing * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. * @param {*} item - The native item from which to acquire context (platform specific) * @param {Object} options - The chart options * @returns {CanvasRenderingContext2D} context2d instance */ acquireContext: function() {}, /** * Called at chart destruction time, releases any resources associated to the context * previously returned by the acquireContext() method. * @param {CanvasRenderingContext2D} context - The context2d instance * @returns {Boolean} true if the method succeeded, else false */ releaseContext: function() {}, /** * Registers the specified listener on the given chart. * @param {Chart} chart - Chart from which to listen for event * @param {String} type - The ({@link IEvent}) type to listen for * @param {Function} listener - Receives a notification (an object that implements * the {@link IEvent} interface) when an event of the specified type occurs. */ addEventListener: function() {}, /** * Removes the specified listener previously registered with addEventListener. * @param {Chart} chart -Chart from which to remove the listener * @param {String} type - The ({@link IEvent}) type to remove * @param {Function} listener - The listener function to remove from the event target. */ removeEventListener: function() {} }, implementation); /** * @interface IPlatform * Allows abstracting platform dependencies away from the chart * @borrows Chart.platform.acquireContext as acquireContext * @borrows Chart.platform.releaseContext as releaseContext * @borrows Chart.platform.addEventListener as addEventListener * @borrows Chart.platform.removeEventListener as removeEventListener */ /** * @interface IEvent * @prop {String} type - The event type name, possible values are: * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) */ },{"45":45,"46":46,"47":47}],49:[function(require,module,exports){ /** * Plugin based on discussion from the following Chart.js issues: * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 */ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('global', { plugins: { filler: { propagate: true } } }); module.exports = function() { var mappers = { dataset: function(source) { var index = source.fill; var chart = source.chart; var meta = chart.getDatasetMeta(index); var visible = meta && chart.isDatasetVisible(index); var points = (visible && meta.dataset._children) || []; var length = points.length || 0; return !length ? null : function(point, i) { return (i < length && points[i]._view) || null; }; }, boundary: function(source) { var boundary = source.boundary; var x = boundary ? boundary.x : null; var y = boundary ? boundary.y : null; return function(point) { return { x: x === null ? point.x : x, y: y === null ? point.y : y, }; }; } }; // @todo if (fill[0] === '#') function decodeFill(el, index, count) { var model = el._model || {}; var fill = model.fill; var target; if (fill === undefined) { fill = !!model.backgroundColor; } if (fill === false || fill === null) { return false; } if (fill === true) { return 'origin'; } target = parseFloat(fill, 10); if (isFinite(target) && Math.floor(target) === target) { if (fill[0] === '-' || fill[0] === '+') { target = index + target; } if (target === index || target < 0 || target >= count) { return false; } return target; } switch (fill) { // compatibility case 'bottom': return 'start'; case 'top': return 'end'; case 'zero': return 'origin'; // supported boundaries case 'origin': case 'start': case 'end': return fill; // invalid fill values default: return false; } } function computeBoundary(source) { var model = source.el._model || {}; var scale = source.el._scale || {}; var fill = source.fill; var target = null; var horizontal; if (isFinite(fill)) { return null; } // Backward compatibility: until v3, we still need to support boundary values set on // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and // controllers might still use it (e.g. the Smith chart). if (fill === 'start') { target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; } else if (fill === 'end') { target = model.scaleTop === undefined ? scale.top : model.scaleTop; } else if (model.scaleZero !== undefined) { target = model.scaleZero; } else if (scale.getBasePosition) { target = scale.getBasePosition(); } else if (scale.getBasePixel) { target = scale.getBasePixel(); } if (target !== undefined && target !== null) { if (target.x !== undefined && target.y !== undefined) { return target; } if (typeof target === 'number' && isFinite(target)) { horizontal = scale.isHorizontal(); return { x: horizontal ? target : null, y: horizontal ? null : target }; } } return null; } function resolveTarget(sources, index, propagate) { var source = sources[index]; var fill = source.fill; var visited = [index]; var target; if (!propagate) { return fill; } while (fill !== false && visited.indexOf(fill) === -1) { if (!isFinite(fill)) { return fill; } target = sources[fill]; if (!target) { return false; } if (target.visible) { return fill; } visited.push(fill); fill = target.fill; } return false; } function createMapper(source) { var fill = source.fill; var type = 'dataset'; if (fill === false) { return null; } if (!isFinite(fill)) { type = 'boundary'; } return mappers[type](source); } function isDrawable(point) { return point && !point.skip; } function drawArea(ctx, curve0, curve1, len0, len1) { var i; if (!len0 || !len1) { return; } // building first area curve (normal) ctx.moveTo(curve0[0].x, curve0[0].y); for (i = 1; i < len0; ++i) { helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); } // joining the two area curves ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); // building opposite area curve (reverse) for (i = len1 - 1; i > 0; --i) { helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); } } function doFill(ctx, points, mapper, view, color, loop) { var count = points.length; var span = view.spanGaps; var curve0 = []; var curve1 = []; var len0 = 0; var len1 = 0; var i, ilen, index, p0, p1, d0, d1; ctx.beginPath(); for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { index = i % count; p0 = points[index]._view; p1 = mapper(p0, index, view); d0 = isDrawable(p0); d1 = isDrawable(p1); if (d0 && d1) { len0 = curve0.push(p0); len1 = curve1.push(p1); } else if (len0 && len1) { if (!span) { drawArea(ctx, curve0, curve1, len0, len1); len0 = len1 = 0; curve0 = []; curve1 = []; } else { if (d0) { curve0.push(p0); } if (d1) { curve1.push(p1); } } } } drawArea(ctx, curve0, curve1, len0, len1); ctx.closePath(); ctx.fillStyle = color; ctx.fill(); } return { id: 'filler', afterDatasetsUpdate: function(chart, options) { var count = (chart.data.datasets || []).length; var propagate = options.propagate; var sources = []; var meta, i, el, source; for (i = 0; i < count; ++i) { meta = chart.getDatasetMeta(i); el = meta.dataset; source = null; if (el && el._model && el instanceof elements.Line) { source = { visible: chart.isDatasetVisible(i), fill: decodeFill(el, i, count), chart: chart, el: el }; } meta.$filler = source; sources.push(source); } for (i = 0; i < count; ++i) { source = sources[i]; if (!source) { continue; } source.fill = resolveTarget(sources, i, propagate); source.boundary = computeBoundary(source); source.mapper = createMapper(source); } }, beforeDatasetDraw: function(chart, args) { var meta = args.meta.$filler; if (!meta) { return; } var ctx = chart.ctx; var el = meta.el; var view = el._view; var points = el._children || []; var mapper = meta.mapper; var color = view.backgroundColor || defaults.global.defaultColor; if (mapper && color && points.length) { helpers.canvas.clipArea(ctx, chart.chartArea); doFill(ctx, points, mapper, view, color, el._loop); helpers.canvas.unclipArea(ctx); } } }; }; },{"25":25,"40":40,"45":45}],50:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { legend: { display: true, position: 'top', fullWidth: true, reverse: false, weight: 1000, // a callback that will handle onClick: function(e, legendItem) { var index = legendItem.datasetIndex; var ci = this.chart; var meta = ci.getDatasetMeta(index); // See controller.isDatasetVisible comment meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; // We hid a dataset ... rerender the chart ci.update(); }, onHover: null, labels: { boxWidth: 40, padding: 10, // Generates labels shown in the legend // Valid properties to return: // text : text to display // fillStyle : fill of coloured box // strokeStyle: stroke of coloured box // hidden : if this legend item refers to a hidden item // lineCap : cap style for line // lineDash // lineDashOffset : // lineJoin : // lineWidth : generateLabels: function(chart) { var data = chart.data; return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { return { text: dataset.label, fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), hidden: !chart.isDatasetVisible(i), lineCap: dataset.borderCapStyle, lineDash: dataset.borderDash, lineDashOffset: dataset.borderDashOffset, lineJoin: dataset.borderJoinStyle, lineWidth: dataset.borderWidth, strokeStyle: dataset.borderColor, pointStyle: dataset.pointStyle, // Below is extra data used for toggling the datasets datasetIndex: i }; }, this) : []; } } }, legendCallback: function(chart) { var text = []; text.push('
    '); for (var i = 0; i < chart.data.datasets.length; i++) { text.push('
  • '); if (chart.data.datasets[i].label) { text.push(chart.data.datasets[i].label); } text.push('
  • '); } text.push('
'); return text.join(''); } }); module.exports = function(Chart) { var layout = Chart.layoutService; var noop = helpers.noop; /** * Helper function to get the box width based on the usePointStyle option * @param labelopts {Object} the label options on the legend * @param fontSize {Number} the label font size * @return {Number} width of the color box area */ function getBoxWidth(labelOpts, fontSize) { return labelOpts.usePointStyle ? fontSize * Math.SQRT2 : labelOpts.boxWidth; } Chart.Legend = Element.extend({ initialize: function(config) { helpers.extend(this, config); // Contains hit boxes for each dataset (in dataset order) this.legendHitBoxes = []; // Are we in doughnut mode which has a different data type this.doughnutMode = false; }, // These methods are ordered by lifecycle. Utilities then follow. // Any function defined here is inherited by all legend types. // Any function can be extended by the legend type beforeUpdate: noop, update: function(maxWidth, maxHeight, margins) { var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); // Absorb the master measurements me.maxWidth = maxWidth; me.maxHeight = maxHeight; me.margins = margins; // Dimensions me.beforeSetDimensions(); me.setDimensions(); me.afterSetDimensions(); // Labels me.beforeBuildLabels(); me.buildLabels(); me.afterBuildLabels(); // Fit me.beforeFit(); me.fit(); me.afterFit(); // me.afterUpdate(); return me.minSize; }, afterUpdate: noop, // beforeSetDimensions: noop, setDimensions: function() { var me = this; // Set the unconstrained dimension before label rotation if (me.isHorizontal()) { // Reset position before calculating rotation me.width = me.maxWidth; me.left = 0; me.right = me.width; } else { me.height = me.maxHeight; // Reset position before calculating rotation me.top = 0; me.bottom = me.height; } // Reset padding me.paddingLeft = 0; me.paddingTop = 0; me.paddingRight = 0; me.paddingBottom = 0; // Reset minSize me.minSize = { width: 0, height: 0 }; }, afterSetDimensions: noop, // beforeBuildLabels: noop, buildLabels: function() { var me = this; var labelOpts = me.options.labels || {}; var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || []; if (labelOpts.filter) { legendItems = legendItems.filter(function(item) { return labelOpts.filter(item, me.chart.data); }); } if (me.options.reverse) { legendItems.reverse(); } me.legendItems = legendItems; }, afterBuildLabels: noop, // beforeFit: noop, fit: function() { var me = this; var opts = me.options; var labelOpts = opts.labels; var display = opts.display; var ctx = me.ctx; var globalDefault = defaults.global; var valueOrDefault = helpers.valueOrDefault; var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); // Reset hit boxes var hitboxes = me.legendHitBoxes = []; var minSize = me.minSize; var isHorizontal = me.isHorizontal(); if (isHorizontal) { minSize.width = me.maxWidth; // fill all the width minSize.height = display ? 10 : 0; } else { minSize.width = display ? 10 : 0; minSize.height = me.maxHeight; // fill all the height } // Increase sizes here if (display) { ctx.font = labelFont; if (isHorizontal) { // Labels // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one var lineWidths = me.lineWidths = [0]; var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0; ctx.textAlign = 'left'; ctx.textBaseline = 'top'; helpers.each(me.legendItems, function(legendItem, i) { var boxWidth = getBoxWidth(labelOpts, fontSize); var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) { totalHeight += fontSize + (labelOpts.padding); lineWidths[lineWidths.length] = me.left; } // Store the hitbox width and height here. Final position will be updated in `draw` hitboxes[i] = { left: 0, top: 0, width: width, height: fontSize }; lineWidths[lineWidths.length - 1] += width + labelOpts.padding; }); minSize.height += totalHeight; } else { var vPadding = labelOpts.padding; var columnWidths = me.columnWidths = []; var totalWidth = labelOpts.padding; var currentColWidth = 0; var currentColHeight = 0; var itemHeight = fontSize + vPadding; helpers.each(me.legendItems, function(legendItem, i) { var boxWidth = getBoxWidth(labelOpts, fontSize); var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; // If too tall, go to new column if (currentColHeight + itemHeight > minSize.height) { totalWidth += currentColWidth + labelOpts.padding; columnWidths.push(currentColWidth); // previous column width currentColWidth = 0; currentColHeight = 0; } // Get max width currentColWidth = Math.max(currentColWidth, itemWidth); currentColHeight += itemHeight; // Store the hitbox width and height here. Final position will be updated in `draw` hitboxes[i] = { left: 0, top: 0, width: itemWidth, height: fontSize }; }); totalWidth += currentColWidth; columnWidths.push(currentColWidth); minSize.width += totalWidth; } } me.width = minSize.width; me.height = minSize.height; }, afterFit: noop, // Shared Methods isHorizontal: function() { return this.options.position === 'top' || this.options.position === 'bottom'; }, // Actually draw the legend on the canvas draw: function() { var me = this; var opts = me.options; var labelOpts = opts.labels; var globalDefault = defaults.global; var lineDefault = globalDefault.elements.line; var legendWidth = me.width; var lineWidths = me.lineWidths; if (opts.display) { var ctx = me.ctx; var valueOrDefault = helpers.valueOrDefault; var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor); var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); var cursor; // Canvas setup ctx.textAlign = 'left'; ctx.textBaseline = 'middle'; ctx.lineWidth = 0.5; ctx.strokeStyle = fontColor; // for strikethrough effect ctx.fillStyle = fontColor; // render in correct colour ctx.font = labelFont; var boxWidth = getBoxWidth(labelOpts, fontSize); var hitboxes = me.legendHitBoxes; // current position var drawLegendBox = function(x, y, legendItem) { if (isNaN(boxWidth) || boxWidth <= 0) { return; } // Set the ctx for the box ctx.save(); ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor); ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle); ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset); ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle); ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth); ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor); var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0); if (ctx.setLineDash) { // IE 9 and 10 do not support line dash ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash)); } if (opts.labels && opts.labels.usePointStyle) { // Recalculate x and y for drawPoint() because its expecting // x and y to be center of figure (instead of top left) var radius = fontSize * Math.SQRT2 / 2; var offSet = radius / Math.SQRT2; var centerX = x + offSet; var centerY = y + offSet; // Draw pointStyle as legend symbol helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); } else { // Draw box as legend symbol if (!isLineWidthZero) { ctx.strokeRect(x, y, boxWidth, fontSize); } ctx.fillRect(x, y, boxWidth, fontSize); } ctx.restore(); }; var fillText = function(x, y, legendItem, textWidth) { var halfFontSize = fontSize / 2; var xLeft = boxWidth + halfFontSize + x; var yMiddle = y + halfFontSize; ctx.fillText(legendItem.text, xLeft, yMiddle); if (legendItem.hidden) { // Strikethrough the text if hidden ctx.beginPath(); ctx.lineWidth = 2; ctx.moveTo(xLeft, yMiddle); ctx.lineTo(xLeft + textWidth, yMiddle); ctx.stroke(); } }; // Horizontal var isHorizontal = me.isHorizontal(); if (isHorizontal) { cursor = { x: me.left + ((legendWidth - lineWidths[0]) / 2), y: me.top + labelOpts.padding, line: 0 }; } else { cursor = { x: me.left + labelOpts.padding, y: me.top + labelOpts.padding, line: 0 }; } var itemHeight = fontSize + labelOpts.padding; helpers.each(me.legendItems, function(legendItem, i) { var textWidth = ctx.measureText(legendItem.text).width; var width = boxWidth + (fontSize / 2) + textWidth; var x = cursor.x; var y = cursor.y; if (isHorizontal) { if (x + width >= legendWidth) { y = cursor.y += itemHeight; cursor.line++; x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2); } } else if (y + itemHeight > me.bottom) { x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; y = cursor.y = me.top + labelOpts.padding; cursor.line++; } drawLegendBox(x, y, legendItem); hitboxes[i].left = x; hitboxes[i].top = y; // Fill the actual label fillText(x, y, legendItem, textWidth); if (isHorizontal) { cursor.x += width + (labelOpts.padding); } else { cursor.y += itemHeight; } }); } }, /** * Handle an event * @private * @param {IEvent} event - The event to handle * @return {Boolean} true if a change occured */ handleEvent: function(e) { var me = this; var opts = me.options; var type = e.type === 'mouseup' ? 'click' : e.type; var changed = false; if (type === 'mousemove') { if (!opts.onHover) { return; } } else if (type === 'click') { if (!opts.onClick) { return; } } else { return; } // Chart event already has relative position in it var x = e.x; var y = e.y; if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { // See if we are touching one of the dataset boxes var lh = me.legendHitBoxes; for (var i = 0; i < lh.length; ++i) { var hitBox = lh[i]; if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { // Touching an element if (type === 'click') { // use e.native for backwards compatibility opts.onClick.call(me, e.native, me.legendItems[i]); changed = true; break; } else if (type === 'mousemove') { // use e.native for backwards compatibility opts.onHover.call(me, e.native, me.legendItems[i]); changed = true; break; } } } } return changed; } }); function createNewLegendAndAttach(chart, legendOpts) { var legend = new Chart.Legend({ ctx: chart.ctx, options: legendOpts, chart: chart }); layout.configure(chart, legend, legendOpts); layout.addBox(chart, legend); chart.legend = legend; } return { id: 'legend', beforeInit: function(chart) { var legendOpts = chart.options.legend; if (legendOpts) { createNewLegendAndAttach(chart, legendOpts); } }, beforeUpdate: function(chart) { var legendOpts = chart.options.legend; var legend = chart.legend; if (legendOpts) { helpers.mergeIf(legendOpts, defaults.global.legend); if (legend) { layout.configure(chart, legend, legendOpts); legend.options = legendOpts; } else { createNewLegendAndAttach(chart, legendOpts); } } else if (legend) { layout.removeBox(chart, legend); delete chart.legend; } }, afterEvent: function(chart, e) { var legend = chart.legend; if (legend) { legend.handleEvent(e); } } }; }; },{"25":25,"26":26,"45":45}],51:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { title: { display: false, fontStyle: 'bold', fullWidth: true, lineHeight: 1.2, padding: 10, position: 'top', text: '', weight: 2000 // by default greater than legend (1000) to be above } }); module.exports = function(Chart) { var layout = Chart.layoutService; var noop = helpers.noop; Chart.Title = Element.extend({ initialize: function(config) { var me = this; helpers.extend(me, config); // Contains hit boxes for each dataset (in dataset order) me.legendHitBoxes = []; }, // These methods are ordered by lifecycle. Utilities then follow. beforeUpdate: noop, update: function(maxWidth, maxHeight, margins) { var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); // Absorb the master measurements me.maxWidth = maxWidth; me.maxHeight = maxHeight; me.margins = margins; // Dimensions me.beforeSetDimensions(); me.setDimensions(); me.afterSetDimensions(); // Labels me.beforeBuildLabels(); me.buildLabels(); me.afterBuildLabels(); // Fit me.beforeFit(); me.fit(); me.afterFit(); // me.afterUpdate(); return me.minSize; }, afterUpdate: noop, // beforeSetDimensions: noop, setDimensions: function() { var me = this; // Set the unconstrained dimension before label rotation if (me.isHorizontal()) { // Reset position before calculating rotation me.width = me.maxWidth; me.left = 0; me.right = me.width; } else { me.height = me.maxHeight; // Reset position before calculating rotation me.top = 0; me.bottom = me.height; } // Reset padding me.paddingLeft = 0; me.paddingTop = 0; me.paddingRight = 0; me.paddingBottom = 0; // Reset minSize me.minSize = { width: 0, height: 0 }; }, afterSetDimensions: noop, // beforeBuildLabels: noop, buildLabels: noop, afterBuildLabels: noop, // beforeFit: noop, fit: function() { var me = this; var valueOrDefault = helpers.valueOrDefault; var opts = me.options; var display = opts.display; var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize); var minSize = me.minSize; var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1; var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0; if (me.isHorizontal()) { minSize.width = me.maxWidth; // fill all the width minSize.height = textSize; } else { minSize.width = textSize; minSize.height = me.maxHeight; // fill all the height } me.width = minSize.width; me.height = minSize.height; }, afterFit: noop, // Shared Methods isHorizontal: function() { var pos = this.options.position; return pos === 'top' || pos === 'bottom'; }, // Actually draw the title block on the canvas draw: function() { var me = this; var ctx = me.ctx; var valueOrDefault = helpers.valueOrDefault; var opts = me.options; var globalDefaults = defaults.global; if (opts.display) { var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize); var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle); var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily); var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily); var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); var offset = lineHeight / 2 + opts.padding; var rotation = 0; var top = me.top; var left = me.left; var bottom = me.bottom; var right = me.right; var maxWidth, titleX, titleY; ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour ctx.font = titleFont; // Horizontal if (me.isHorizontal()) { titleX = left + ((right - left) / 2); // midpoint of the width titleY = top + offset; maxWidth = right - left; } else { titleX = opts.position === 'left' ? left + offset : right - offset; titleY = top + ((bottom - top) / 2); maxWidth = bottom - top; rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); } ctx.save(); ctx.translate(titleX, titleY); ctx.rotate(rotation); ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; var text = opts.text; if (helpers.isArray(text)) { var y = 0; for (var i = 0; i < text.length; ++i) { ctx.fillText(text[i], 0, y, maxWidth); y += lineHeight; } } else { ctx.fillText(text, 0, 0, maxWidth); } ctx.restore(); } } }); function createNewTitleBlockAndAttach(chart, titleOpts) { var title = new Chart.Title({ ctx: chart.ctx, options: titleOpts, chart: chart }); layout.configure(chart, title, titleOpts); layout.addBox(chart, title); chart.titleBlock = title; } return { id: 'title', beforeInit: function(chart) { var titleOpts = chart.options.title; if (titleOpts) { createNewTitleBlockAndAttach(chart, titleOpts); } }, beforeUpdate: function(chart) { var titleOpts = chart.options.title; var titleBlock = chart.titleBlock; if (titleOpts) { helpers.mergeIf(titleOpts, defaults.global.title); if (titleBlock) { layout.configure(chart, titleBlock, titleOpts); titleBlock.options = titleOpts; } else { createNewTitleBlockAndAttach(chart, titleOpts); } } else if (titleBlock) { Chart.layoutService.removeBox(chart, titleBlock); delete chart.titleBlock; } } }; }; },{"25":25,"26":26,"45":45}],52:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { // Default config for a category scale var defaultConfig = { position: 'bottom' }; var DatasetScale = Chart.Scale.extend({ /** * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those * else fall back to data.labels * @private */ getLabels: function() { var data = this.chart.data; return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; }, determineDataLimits: function() { var me = this; var labels = me.getLabels(); me.minIndex = 0; me.maxIndex = labels.length - 1; var findIndex; if (me.options.ticks.min !== undefined) { // user specified min value findIndex = labels.indexOf(me.options.ticks.min); me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; } if (me.options.ticks.max !== undefined) { // user specified max value findIndex = labels.indexOf(me.options.ticks.max); me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; } me.min = labels[me.minIndex]; me.max = labels[me.maxIndex]; }, buildTicks: function() { var me = this; var labels = me.getLabels(); // If we are viewing some subset of labels, slice the original array me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); }, getLabelForIndex: function(index, datasetIndex) { var me = this; var data = me.chart.data; var isHorizontal = me.isHorizontal(); if (data.yLabels && !isHorizontal) { return me.getRightValue(data.datasets[datasetIndex].data[index]); } return me.ticks[index - me.minIndex]; }, // Used to get data value locations. Value can either be an index or a numerical value getPixelForValue: function(value, index) { var me = this; var offset = me.options.offset; // 1 is added because we need the length but we have the indexes var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); // If value is a data object, then index is the index in the data array, // not the index of the scale. We need to change that. var valueCategory; if (value !== undefined && value !== null) { valueCategory = me.isHorizontal() ? value.x : value.y; } if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { var labels = me.getLabels(); value = valueCategory || value; var idx = labels.indexOf(value); index = idx !== -1 ? idx : index; } if (me.isHorizontal()) { var valueWidth = me.width / offsetAmt; var widthOffset = (valueWidth * (index - me.minIndex)); if (offset) { widthOffset += (valueWidth / 2); } return me.left + Math.round(widthOffset); } var valueHeight = me.height / offsetAmt; var heightOffset = (valueHeight * (index - me.minIndex)); if (offset) { heightOffset += (valueHeight / 2); } return me.top + Math.round(heightOffset); }, getPixelForTick: function(index) { return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); }, getValueForPixel: function(pixel) { var me = this; var offset = me.options.offset; var value; var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); var horz = me.isHorizontal(); var valueDimension = (horz ? me.width : me.height) / offsetAmt; pixel -= horz ? me.left : me.top; if (offset) { pixel -= (valueDimension / 2); } if (pixel <= 0) { value = 0; } else { value = Math.round(pixel / valueDimension); } return value + me.minIndex; }, getBasePixel: function() { return this.bottom; } }); Chart.scaleService.registerScaleType('category', DatasetScale, defaultConfig); }; },{}],53:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var defaultConfig = { position: 'left', ticks: { callback: Ticks.formatters.linear } }; var LinearScale = Chart.LinearScaleBase.extend({ determineDataLimits: function() { var me = this; var opts = me.options; var chart = me.chart; var data = chart.data; var datasets = data.datasets; var isHorizontal = me.isHorizontal(); var DEFAULT_MIN = 0; var DEFAULT_MAX = 1; function IDMatches(meta) { return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; } // First Calculate the range me.min = null; me.max = null; var hasStacks = opts.stacked; if (hasStacks === undefined) { helpers.each(datasets, function(dataset, datasetIndex) { if (hasStacks) { return; } var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) { hasStacks = true; } }); } if (opts.stacked || hasStacks) { var valuesPerStack = {}; helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); var key = [ meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), meta.stack ].join('.'); if (valuesPerStack[key] === undefined) { valuesPerStack[key] = { positiveValues: [], negativeValues: [] }; } // Store these per type var positiveValues = valuesPerStack[key].positiveValues; var negativeValues = valuesPerStack[key].negativeValues; if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } positiveValues[index] = positiveValues[index] || 0; negativeValues[index] = negativeValues[index] || 0; if (opts.relativePoints) { positiveValues[index] = 100; } else if (value < 0) { negativeValues[index] += value; } else { positiveValues[index] += value; } }); } }); helpers.each(valuesPerStack, function(valuesForType) { var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); var minVal = helpers.min(values); var maxVal = helpers.max(values); me.min = me.min === null ? minVal : Math.min(me.min, minVal); me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); }); } else { helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } if (me.min === null) { me.min = value; } else if (value < me.min) { me.min = value; } if (me.max === null) { me.max = value; } else if (value > me.max) { me.max = value; } }); } }); } me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero this.handleTickRangeOptions(); }, getTickLimit: function() { var maxTicks; var me = this; var tickOpts = me.options.ticks; if (me.isHorizontal()) { maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50)); } else { // The factor of 2 used to scale the font size has been experimentally determined. var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize); maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize))); } return maxTicks; }, // Called after the ticks are built. We need handleDirectionalChanges: function() { if (!this.isHorizontal()) { // We are in a vertical orientation. The top value is the highest. So reverse the array this.ticks.reverse(); } }, getLabelForIndex: function(index, datasetIndex) { return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); }, // Utils getPixelForValue: function(value) { // This must be called after fit has been run so that // this.left, this.top, this.right, and this.bottom have been defined var me = this; var start = me.start; var rightValue = +me.getRightValue(value); var pixel; var range = me.end - start; if (me.isHorizontal()) { pixel = me.left + (me.width / range * (rightValue - start)); return Math.round(pixel); } pixel = me.bottom - (me.height / range * (rightValue - start)); return Math.round(pixel); }, getValueForPixel: function(pixel) { var me = this; var isHorizontal = me.isHorizontal(); var innerDimension = isHorizontal ? me.width : me.height; var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; return me.start + ((me.end - me.start) * offset); }, getPixelForTick: function(index) { return this.getPixelForValue(this.ticksAsNumbers[index]); } }); Chart.scaleService.registerScaleType('linear', LinearScale, defaultConfig); }; },{"25":25,"34":34,"45":45}],54:[function(require,module,exports){ 'use strict'; var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var noop = helpers.noop; Chart.LinearScaleBase = Chart.Scale.extend({ getRightValue: function(value) { if (typeof value === 'string') { return +value; } return Chart.Scale.prototype.getRightValue.call(this, value); }, handleTickRangeOptions: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, // do nothing since that would make the chart weird. If the user really wants a weird chart // axis, they can manually override it if (tickOpts.beginAtZero) { var minSign = helpers.sign(me.min); var maxSign = helpers.sign(me.max); if (minSign < 0 && maxSign < 0) { // move the top up to 0 me.max = 0; } else if (minSign > 0 && maxSign > 0) { // move the bottom down to 0 me.min = 0; } } var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; if (tickOpts.min !== undefined) { me.min = tickOpts.min; } else if (tickOpts.suggestedMin !== undefined) { if (me.min === null) { me.min = tickOpts.suggestedMin; } else { me.min = Math.min(me.min, tickOpts.suggestedMin); } } if (tickOpts.max !== undefined) { me.max = tickOpts.max; } else if (tickOpts.suggestedMax !== undefined) { if (me.max === null) { me.max = tickOpts.suggestedMax; } else { me.max = Math.max(me.max, tickOpts.suggestedMax); } } if (setMin !== setMax) { // We set the min or the max but not both. // So ensure that our range is good // Inverted or 0 length range can happen when // ticks.min is set, and no datasets are visible if (me.min >= me.max) { if (setMin) { me.max = me.min + 1; } else { me.min = me.max - 1; } } } if (me.min === me.max) { me.max++; if (!tickOpts.beginAtZero) { me.min--; } } }, getTickLimit: noop, handleDirectionalChanges: noop, buildTicks: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; // Figure out what the max number of ticks we can support it is based on the size of // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on // the graph. Make sure we always have at least 2 ticks var maxTicks = me.getTickLimit(); maxTicks = Math.max(2, maxTicks); var numericGeneratorOptions = { maxTicks: maxTicks, min: tickOpts.min, max: tickOpts.max, stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) }; var ticks = me.ticks = Ticks.generators.linear(numericGeneratorOptions, me); me.handleDirectionalChanges(); // At this point, we need to update our max and min given the tick values since we have expanded the // range of the scale me.max = helpers.max(ticks); me.min = helpers.min(ticks); if (tickOpts.reverse) { ticks.reverse(); me.start = me.max; me.end = me.min; } else { me.start = me.min; me.end = me.max; } }, convertTicksToLabels: function() { var me = this; me.ticksAsNumbers = me.ticks.slice(); me.zeroLineIndex = me.ticks.indexOf(0); Chart.Scale.prototype.convertTicksToLabels.call(me); } }); }; },{"34":34,"45":45}],55:[function(require,module,exports){ 'use strict'; var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var defaultConfig = { position: 'left', // label settings ticks: { callback: Ticks.formatters.logarithmic } }; var LogarithmicScale = Chart.Scale.extend({ determineDataLimits: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; var chart = me.chart; var data = chart.data; var datasets = data.datasets; var valueOrDefault = helpers.valueOrDefault; var isHorizontal = me.isHorizontal(); function IDMatches(meta) { return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; } // Calculate Range me.min = null; me.max = null; me.minNotZero = null; var hasStacks = opts.stacked; if (hasStacks === undefined) { helpers.each(datasets, function(dataset, datasetIndex) { if (hasStacks) { return; } var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) { hasStacks = true; } }); } if (opts.stacked || hasStacks) { var valuesPerStack = {}; helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); var key = [ meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), meta.stack ].join('.'); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { if (valuesPerStack[key] === undefined) { valuesPerStack[key] = []; } helpers.each(dataset.data, function(rawValue, index) { var values = valuesPerStack[key]; var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } values[index] = values[index] || 0; if (opts.relativePoints) { values[index] = 100; } else { // Don't need to split positive and negative since the log scale can't handle a 0 crossing values[index] += value; } }); } }); helpers.each(valuesPerStack, function(valuesForType) { var minVal = helpers.min(valuesForType); var maxVal = helpers.max(valuesForType); me.min = me.min === null ? minVal : Math.min(me.min, minVal); me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); }); } else { helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } if (me.min === null) { me.min = value; } else if (value < me.min) { me.min = value; } if (me.max === null) { me.max = value; } else if (value > me.max) { me.max = value; } if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { me.minNotZero = value; } }); } }); } me.min = valueOrDefault(tickOpts.min, me.min); me.max = valueOrDefault(tickOpts.max, me.max); if (me.min === me.max) { if (me.min !== 0 && me.min !== null) { me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1); me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1); } else { me.min = 1; me.max = 10; } } }, buildTicks: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; var generationOptions = { min: tickOpts.min, max: tickOpts.max }; var ticks = me.ticks = Ticks.generators.logarithmic(generationOptions, me); if (!me.isHorizontal()) { // We are in a vertical orientation. The top value is the highest. So reverse the array ticks.reverse(); } // At this point, we need to update our max and min given the tick values since we have expanded the // range of the scale me.max = helpers.max(ticks); me.min = helpers.min(ticks); if (tickOpts.reverse) { ticks.reverse(); me.start = me.max; me.end = me.min; } else { me.start = me.min; me.end = me.max; } }, convertTicksToLabels: function() { this.tickValues = this.ticks.slice(); Chart.Scale.prototype.convertTicksToLabels.call(this); }, // Get the correct tooltip label getLabelForIndex: function(index, datasetIndex) { return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); }, getPixelForTick: function(index) { return this.getPixelForValue(this.tickValues[index]); }, getPixelForValue: function(value) { var me = this; var start = me.start; var newVal = +me.getRightValue(value); var opts = me.options; var tickOpts = opts.ticks; var innerDimension, pixel, range; if (me.isHorizontal()) { range = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0 if (newVal === 0) { pixel = me.left; } else { innerDimension = me.width; pixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start))); } } else { // Bottom - top since pixels increase downward on a screen innerDimension = me.height; if (start === 0 && !tickOpts.reverse) { range = helpers.log10(me.end) - helpers.log10(me.minNotZero); if (newVal === start) { pixel = me.bottom; } else if (newVal === me.minNotZero) { pixel = me.bottom - innerDimension * 0.02; } else { pixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero))); } } else if (me.end === 0 && tickOpts.reverse) { range = helpers.log10(me.start) - helpers.log10(me.minNotZero); if (newVal === me.end) { pixel = me.top; } else if (newVal === me.minNotZero) { pixel = me.top + innerDimension * 0.02; } else { pixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero))); } } else if (newVal === 0) { pixel = tickOpts.reverse ? me.top : me.bottom; } else { range = helpers.log10(me.end) - helpers.log10(start); innerDimension = me.height; pixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start))); } } return pixel; }, getValueForPixel: function(pixel) { var me = this; var range = helpers.log10(me.end) - helpers.log10(me.start); var value, innerDimension; if (me.isHorizontal()) { innerDimension = me.width; value = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension); } else { // todo: if start === 0 innerDimension = me.height; value = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start; } return value; } }); Chart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig); }; },{"34":34,"45":45}],56:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var globalDefaults = defaults.global; var defaultConfig = { display: true, // Boolean - Whether to animate scaling the chart from the centre animate: true, position: 'chartArea', angleLines: { display: true, color: 'rgba(0, 0, 0, 0.1)', lineWidth: 1 }, gridLines: { circular: false }, // label settings ticks: { // Boolean - Show a backdrop to the scale label showLabelBackdrop: true, // String - The colour of the label backdrop backdropColor: 'rgba(255,255,255,0.75)', // Number - The backdrop padding above & below the label in pixels backdropPaddingY: 2, // Number - The backdrop padding to the side of the label in pixels backdropPaddingX: 2, callback: Ticks.formatters.linear }, pointLabels: { // Boolean - if true, show point labels display: true, // Number - Point label font size in pixels fontSize: 10, // Function - Used to convert point labels callback: function(label) { return label; } } }; function getValueCount(scale) { var opts = scale.options; return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; } function getPointLabelFontOptions(scale) { var pointLabelOptions = scale.options.pointLabels; var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize); var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle); var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily); var font = helpers.fontString(fontSize, fontStyle, fontFamily); return { size: fontSize, style: fontStyle, family: fontFamily, font: font }; } function measureLabelSize(ctx, fontSize, label) { if (helpers.isArray(label)) { return { w: helpers.longestText(ctx, ctx.font, label), h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize) }; } return { w: ctx.measureText(label).width, h: fontSize }; } function determineLimits(angle, pos, size, min, max) { if (angle === min || angle === max) { return { start: pos - (size / 2), end: pos + (size / 2) }; } else if (angle < min || angle > max) { return { start: pos - size - 5, end: pos }; } return { start: pos, end: pos + size + 5 }; } /** * Helper function to fit a radial linear scale with point labels */ function fitWithPointLabels(scale) { /* * Right, this is really confusing and there is a lot of maths going on here * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 * * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif * * Solution: * * We assume the radius of the polygon is half the size of the canvas at first * at each index we check if the text overlaps. * * Where it does, we store that angle and that index. * * After finding the largest index and angle we calculate how much we need to remove * from the shape radius to move the point inwards by that x. * * We average the left and right distances to get the maximum shape radius that can fit in the box * along with labels. * * Once we have that, we can find the centre point for the chart, by taking the x text protrusion * on each side, removing that from the size, halving it and adding the left x protrusion width. * * This will mean we have a shape fitted to the canvas, as large as it can be with the labels * and position it in the most space efficient manner * * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif */ var plFont = getPointLabelFontOptions(scale); // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); var furthestLimits = { r: scale.width, l: 0, t: scale.height, b: 0 }; var furthestAngles = {}; var i, textSize, pointPosition; scale.ctx.font = plFont.font; scale._pointLabelSizes = []; var valueCount = getValueCount(scale); for (i = 0; i < valueCount; i++) { pointPosition = scale.getPointPosition(i, largestPossibleRadius); textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || ''); scale._pointLabelSizes[i] = textSize; // Add quarter circle to make degree 0 mean top of circle var angleRadians = scale.getIndexAngle(i); var angle = helpers.toDegrees(angleRadians) % 360; var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); if (hLimits.start < furthestLimits.l) { furthestLimits.l = hLimits.start; furthestAngles.l = angleRadians; } if (hLimits.end > furthestLimits.r) { furthestLimits.r = hLimits.end; furthestAngles.r = angleRadians; } if (vLimits.start < furthestLimits.t) { furthestLimits.t = vLimits.start; furthestAngles.t = angleRadians; } if (vLimits.end > furthestLimits.b) { furthestLimits.b = vLimits.end; furthestAngles.b = angleRadians; } } scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles); } /** * Helper function to fit a radial linear scale with no point labels */ function fit(scale) { var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); scale.drawingArea = Math.round(largestPossibleRadius); scale.setCenterPoint(0, 0, 0, 0); } function getTextAlignForAngle(angle) { if (angle === 0 || angle === 180) { return 'center'; } else if (angle < 180) { return 'left'; } return 'right'; } function fillText(ctx, text, position, fontSize) { if (helpers.isArray(text)) { var y = position.y; var spacing = 1.5 * fontSize; for (var i = 0; i < text.length; ++i) { ctx.fillText(text[i], position.x, y); y += spacing; } } else { ctx.fillText(text, position.x, position.y); } } function adjustPointPositionForLabelHeight(angle, textSize, position) { if (angle === 90 || angle === 270) { position.y -= (textSize.h / 2); } else if (angle > 270 || angle < 90) { position.y -= textSize.h; } } function drawPointLabels(scale) { var ctx = scale.ctx; var valueOrDefault = helpers.valueOrDefault; var opts = scale.options; var angleLineOpts = opts.angleLines; var pointLabelOpts = opts.pointLabels; ctx.lineWidth = angleLineOpts.lineWidth; ctx.strokeStyle = angleLineOpts.color; var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); // Point Label Font var plFont = getPointLabelFontOptions(scale); ctx.textBaseline = 'top'; for (var i = getValueCount(scale) - 1; i >= 0; i--) { if (angleLineOpts.display) { var outerPosition = scale.getPointPosition(i, outerDistance); ctx.beginPath(); ctx.moveTo(scale.xCenter, scale.yCenter); ctx.lineTo(outerPosition.x, outerPosition.y); ctx.stroke(); ctx.closePath(); } if (pointLabelOpts.display) { // Extra 3px out for some label spacing var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5); // Keep this in loop since we may support array properties here var pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); ctx.font = plFont.font; ctx.fillStyle = pointLabelFontColor; var angleRadians = scale.getIndexAngle(i); var angle = helpers.toDegrees(angleRadians); ctx.textAlign = getTextAlignForAngle(angle); adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); } } } function drawRadiusLine(scale, gridLineOpts, radius, index) { var ctx = scale.ctx; ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1); ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1); if (scale.options.gridLines.circular) { // Draw circular arcs between the points ctx.beginPath(); ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); ctx.closePath(); ctx.stroke(); } else { // Draw straight lines connecting each index var valueCount = getValueCount(scale); if (valueCount === 0) { return; } ctx.beginPath(); var pointPosition = scale.getPointPosition(0, radius); ctx.moveTo(pointPosition.x, pointPosition.y); for (var i = 1; i < valueCount; i++) { pointPosition = scale.getPointPosition(i, radius); ctx.lineTo(pointPosition.x, pointPosition.y); } ctx.closePath(); ctx.stroke(); } } function numberOrZero(param) { return helpers.isNumber(param) ? param : 0; } var LinearRadialScale = Chart.LinearScaleBase.extend({ setDimensions: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; // Set the unconstrained dimension before label rotation me.width = me.maxWidth; me.height = me.maxHeight; me.xCenter = Math.round(me.width / 2); me.yCenter = Math.round(me.height / 2); var minSize = helpers.min([me.height, me.width]); var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2); }, determineDataLimits: function() { var me = this; var chart = me.chart; var min = Number.POSITIVE_INFINITY; var max = Number.NEGATIVE_INFINITY; helpers.each(chart.data.datasets, function(dataset, datasetIndex) { if (chart.isDatasetVisible(datasetIndex)) { var meta = chart.getDatasetMeta(datasetIndex); helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } min = Math.min(value, min); max = Math.max(value, max); }); } }); me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero me.handleTickRangeOptions(); }, getTickLimit: function() { var tickOpts = this.options.ticks; var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize))); }, convertTicksToLabels: function() { var me = this; Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me); // Point labels me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); }, getLabelForIndex: function(index, datasetIndex) { return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); }, fit: function() { if (this.options.pointLabels.display) { fitWithPointLabels(this); } else { fit(this); } }, /** * Set radius reductions and determine new radius and center point * @private */ setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { var me = this; var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b); radiusReductionLeft = numberOrZero(radiusReductionLeft); radiusReductionRight = numberOrZero(radiusReductionRight); radiusReductionTop = numberOrZero(radiusReductionTop); radiusReductionBottom = numberOrZero(radiusReductionBottom); me.drawingArea = Math.min( Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); }, setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { var me = this; var maxRight = me.width - rightMovement - me.drawingArea; var maxLeft = leftMovement + me.drawingArea; var maxTop = topMovement + me.drawingArea; var maxBottom = me.height - bottomMovement - me.drawingArea; me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left); me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top); }, getIndexAngle: function(index) { var angleMultiplier = (Math.PI * 2) / getValueCount(this); var startAngle = this.chart.options && this.chart.options.startAngle ? this.chart.options.startAngle : 0; var startAngleRadians = startAngle * Math.PI * 2 / 360; // Start from the top instead of right, so remove a quarter of the circle return index * angleMultiplier + startAngleRadians; }, getDistanceFromCenterForValue: function(value) { var me = this; if (value === null) { return 0; // null always in center } // Take into account half font size + the yPadding of the top value var scalingFactor = me.drawingArea / (me.max - me.min); if (me.options.ticks.reverse) { return (me.max - value) * scalingFactor; } return (value - me.min) * scalingFactor; }, getPointPosition: function(index, distanceFromCenter) { var me = this; var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); return { x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter, y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter }; }, getPointPositionForValue: function(index, value) { return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); }, getBasePosition: function() { var me = this; var min = me.min; var max = me.max; return me.getPointPositionForValue(0, me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0); }, draw: function() { var me = this; var opts = me.options; var gridLineOpts = opts.gridLines; var tickOpts = opts.ticks; var valueOrDefault = helpers.valueOrDefault; if (opts.display) { var ctx = me.ctx; var startAngle = this.getIndexAngle(0); // Tick Font var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle); var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily); var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily); helpers.each(me.ticks, function(label, index) { // Don't draw a centre value (if it is minimum) if (index > 0 || tickOpts.reverse) { var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); // Draw circular lines around the scale if (gridLineOpts.display && index !== 0) { drawRadiusLine(me, gridLineOpts, yCenterOffset, index); } if (tickOpts.display) { var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor); ctx.font = tickLabelFont; ctx.save(); ctx.translate(me.xCenter, me.yCenter); ctx.rotate(startAngle); if (tickOpts.showLabelBackdrop) { var labelWidth = ctx.measureText(label).width; ctx.fillStyle = tickOpts.backdropColor; ctx.fillRect( -labelWidth / 2 - tickOpts.backdropPaddingX, -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY, labelWidth + tickOpts.backdropPaddingX * 2, tickFontSize + tickOpts.backdropPaddingY * 2 ); } ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillStyle = tickFontColor; ctx.fillText(label, 0, -yCenterOffset); ctx.restore(); } } }); if (opts.angleLines.display || opts.pointLabels.display) { drawPointLabels(me); } } } }); Chart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig); }; },{"25":25,"34":34,"45":45}],57:[function(require,module,exports){ /* global window: false */ 'use strict'; var moment = require(1); moment = typeof moment === 'function' ? moment : window.moment; var defaults = require(25); var helpers = require(45); // Integer constants are from the ES6 spec. var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; var INTERVALS = { millisecond: { common: true, size: 1, steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] }, second: { common: true, size: 1000, steps: [1, 2, 5, 10, 30] }, minute: { common: true, size: 60000, steps: [1, 2, 5, 10, 30] }, hour: { common: true, size: 3600000, steps: [1, 2, 3, 6, 12] }, day: { common: true, size: 86400000, steps: [1, 2, 5] }, week: { common: false, size: 604800000, steps: [1, 2, 3, 4] }, month: { common: true, size: 2.628e9, steps: [1, 2, 3] }, quarter: { common: false, size: 7.884e9, steps: [1, 2, 3, 4] }, year: { common: true, size: 3.154e10 } }; var UNITS = Object.keys(INTERVALS); function sorter(a, b) { return a - b; } function arrayUnique(items) { var hash = {}; var out = []; var i, ilen, item; for (i = 0, ilen = items.length; i < ilen; ++i) { item = items[i]; if (!hash[item]) { hash[item] = true; out.push(item); } } return out; } /** * Returns an array of {time, pos} objects used to interpolate a specific `time` or position * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other * extremity (left + width or top + height). Note that it would be more optimized to directly * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need * to create the lookup table. The table ALWAYS contains at least two items: min and max. * * @param {Number[]} timestamps - timestamps sorted from lowest to highest. * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. * If 'series', timestamps will be positioned at the same distance from each other. In this * case, only timestamps that break the time linearity are registered, meaning that in the * best case, all timestamps are linear, the table contains only min and max. */ function buildLookupTable(timestamps, min, max, distribution) { if (distribution === 'linear' || !timestamps.length) { return [ {time: min, pos: 0}, {time: max, pos: 1} ]; } var table = []; var items = [min]; var i, ilen, prev, curr, next; for (i = 0, ilen = timestamps.length; i < ilen; ++i) { curr = timestamps[i]; if (curr > min && curr < max) { items.push(curr); } } items.push(max); for (i = 0, ilen = items.length; i < ilen; ++i) { next = items[i + 1]; prev = items[i - 1]; curr = items[i]; // only add points that breaks the scale linearity if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { table.push({time: curr, pos: i / (ilen - 1)}); } } return table; } // @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ function lookup(table, key, value) { var lo = 0; var hi = table.length - 1; var mid, i0, i1; while (lo >= 0 && lo <= hi) { mid = (lo + hi) >> 1; i0 = table[mid - 1] || null; i1 = table[mid]; if (!i0) { // given value is outside table (before first item) return {lo: null, hi: i1}; } else if (i1[key] < value) { lo = mid + 1; } else if (i0[key] > value) { hi = mid - 1; } else { return {lo: i0, hi: i1}; } } // given value is outside table (after last item) return {lo: i1, hi: null}; } /** * Linearly interpolates the given source `value` using the table items `skey` values and * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') * returns the position for a timestamp equal to 42. If value is out of bounds, values at * index [0, 1] or [n - 1, n] are used for the interpolation. */ function interpolate(table, skey, sval, tkey) { var range = lookup(table, skey, sval); // Note: the lookup table ALWAYS contains at least 2 items (min and max) var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; var span = next[skey] - prev[skey]; var ratio = span ? (sval - prev[skey]) / span : 0; var offset = (next[tkey] - prev[tkey]) * ratio; return prev[tkey] + offset; } /** * Convert the given value to a moment object using the given time options. * @see http://momentjs.com/docs/#/parsing/ */ function momentify(value, options) { var parser = options.parser; var format = options.parser || options.format; if (typeof parser === 'function') { return parser(value); } if (typeof value === 'string' && typeof format === 'string') { return moment(value, format); } if (!(value instanceof moment)) { value = moment(value); } if (value.isValid()) { return value; } // Labels are in an incompatible moment format and no `parser` has been provided. // The user might still use the deprecated `format` option to convert his inputs. if (typeof format === 'function') { return format(value); } return value; } function parse(input, scale) { if (helpers.isNullOrUndef(input)) { return null; } var options = scale.options.time; var value = momentify(scale.getRightValue(input), options); if (!value.isValid()) { return null; } if (options.round) { value.startOf(options.round); } return value.valueOf(); } /** * Returns the number of unit to skip to be able to display up to `capacity` number of ticks * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. */ function determineStepSize(min, max, unit, capacity) { var range = max - min; var interval = INTERVALS[unit]; var milliseconds = interval.size; var steps = interval.steps; var i, ilen, factor; if (!steps) { return Math.ceil(range / ((capacity || 1) * milliseconds)); } for (i = 0, ilen = steps.length; i < ilen; ++i) { factor = steps[i]; if (Math.ceil(range / (milliseconds * factor)) <= capacity) { break; } } return factor; } /** * Figures out what unit results in an appropriate number of auto-generated ticks */ function determineUnitForAutoTicks(minUnit, min, max, capacity) { var ilen = UNITS.length; var i, interval, factor; for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { interval = INTERVALS[UNITS[i]]; factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { return UNITS[i]; } } return UNITS[ilen - 1]; } /** * Figures out what unit to format a set of ticks with */ function determineUnitForFormatting(ticks, minUnit, min, max) { var duration = moment.duration(moment(max).diff(moment(min))); var ilen = UNITS.length; var i, unit; for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { unit = UNITS[i]; if (INTERVALS[unit].common && duration.as(unit) >= ticks.length) { return unit; } } return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; } function determineMajorUnit(unit) { for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { if (INTERVALS[UNITS[i]].common) { return UNITS[i]; } } } /** * Generates a maximum of `capacity` timestamps between min and max, rounded to the * `minor` unit, aligned on the `major` unit and using the given scale time `options`. * Important: this method can return ticks outside the min and max range, it's the * responsibility of the calling code to clamp values if needed. */ function generate(min, max, capacity, options) { var timeOpts = options.time; var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); var major = determineMajorUnit(minor); var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize); var weekday = minor === 'week' ? timeOpts.isoWeekday : false; var majorTicksEnabled = options.ticks.major.enabled; var interval = INTERVALS[minor]; var first = moment(min); var last = moment(max); var ticks = []; var time; if (!stepSize) { stepSize = determineStepSize(min, max, minor, capacity); } // For 'week' unit, handle the first day of week option if (weekday) { first = first.isoWeekday(weekday); last = last.isoWeekday(weekday); } // Align first/last ticks on unit first = first.startOf(weekday ? 'day' : minor); last = last.startOf(weekday ? 'day' : minor); // Make sure that the last tick include max if (last < max) { last.add(1, minor); } time = moment(first); if (majorTicksEnabled && major && !weekday && !timeOpts.round) { // Align the first tick on the previous `minor` unit aligned on the `major` unit: // we first aligned time on the previous `major` unit then add the number of full // stepSize there is between first and the previous major time. time.startOf(major); time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor); } for (; time < last; time.add(stepSize, minor)) { ticks.push(+time); } ticks.push(+time); return ticks; } /** * Returns the right and left offsets from edges in the form of {left, right}. * Offsets are added when the `offset` option is true. */ function computeOffsets(table, ticks, min, max, options) { var left = 0; var right = 0; var upper, lower; if (options.offset && ticks.length) { if (!options.time.min) { upper = ticks.length > 1 ? ticks[1] : max; lower = ticks[0]; left = ( interpolate(table, 'time', upper, 'pos') - interpolate(table, 'time', lower, 'pos') ) / 2; } if (!options.time.max) { upper = ticks[ticks.length - 1]; lower = ticks.length > 1 ? ticks[ticks.length - 2] : min; right = ( interpolate(table, 'time', upper, 'pos') - interpolate(table, 'time', lower, 'pos') ) / 2; } } return {left: left, right: right}; } function ticksFromTimestamps(values, majorUnit) { var ticks = []; var i, ilen, value, major; for (i = 0, ilen = values.length; i < ilen; ++i) { value = values[i]; major = majorUnit ? value === +moment(value).startOf(majorUnit) : false; ticks.push({ value: value, major: major }); } return ticks; } module.exports = function(Chart) { var defaultConfig = { position: 'bottom', /** * Data distribution along the scale: * - 'linear': data are spread according to their time (distances can vary), * - 'series': data are spread at the same distance from each other. * @see https://github.com/chartjs/Chart.js/pull/4507 * @since 2.7.0 */ distribution: 'linear', /** * Scale boundary strategy (bypassed by min/max time options) * - `data`: make sure data are fully visible, ticks outside are removed * - `ticks`: make sure ticks are fully visible, data outside are truncated * @see https://github.com/chartjs/Chart.js/pull/4556 * @since 2.7.0 */ bounds: 'data', time: { parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/ unit: false, // false == automatic or override with week, month, year, etc. round: false, // none, or override with week, month, year, etc. displayFormat: false, // DEPRECATED isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/ minUnit: 'millisecond', // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/ displayFormats: { millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM, second: 'h:mm:ss a', // 11:20:01 AM minute: 'h:mm a', // 11:20 AM hour: 'hA', // 5PM day: 'MMM D', // Sep 4 week: 'll', // Week 46, or maybe "[W]WW - YYYY" ? month: 'MMM YYYY', // Sept 2015 quarter: '[Q]Q - YYYY', // Q3 year: 'YYYY' // 2015 }, }, ticks: { autoSkip: false, /** * Ticks generation input values: * - 'auto': generates "optimal" ticks based on scale size and time options. * - 'data': generates ticks from data (including labels from data {t|x|y} objects). * - 'labels': generates ticks from user given `data.labels` values ONLY. * @see https://github.com/chartjs/Chart.js/pull/4507 * @since 2.7.0 */ source: 'auto', major: { enabled: false } } }; var TimeScale = Chart.Scale.extend({ initialize: function() { if (!moment) { throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com'); } this.mergeTicksOptions(); Chart.Scale.prototype.initialize.call(this); }, update: function() { var me = this; var options = me.options; // DEPRECATIONS: output a message only one time per update if (options.time && options.time.format) { console.warn('options.time.format is deprecated and replaced by options.time.parser.'); } return Chart.Scale.prototype.update.apply(me, arguments); }, /** * Allows data to be referenced via 't' attribute */ getRightValue: function(rawValue) { if (rawValue && rawValue.t !== undefined) { rawValue = rawValue.t; } return Chart.Scale.prototype.getRightValue.call(this, rawValue); }, determineDataLimits: function() { var me = this; var chart = me.chart; var timeOpts = me.options.time; var min = MAX_INTEGER; var max = MIN_INTEGER; var timestamps = []; var datasets = []; var labels = []; var i, j, ilen, jlen, data, timestamp; // Convert labels to timestamps for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) { labels.push(parse(chart.data.labels[i], me)); } // Convert data to timestamps for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { if (chart.isDatasetVisible(i)) { data = chart.data.datasets[i].data; // Let's consider that all data have the same format. if (helpers.isObject(data[0])) { datasets[i] = []; for (j = 0, jlen = data.length; j < jlen; ++j) { timestamp = parse(data[j], me); timestamps.push(timestamp); datasets[i][j] = timestamp; } } else { timestamps.push.apply(timestamps, labels); datasets[i] = labels.slice(0); } } else { datasets[i] = []; } } if (labels.length) { // Sort labels **after** data have been converted labels = arrayUnique(labels).sort(sorter); min = Math.min(min, labels[0]); max = Math.max(max, labels[labels.length - 1]); } if (timestamps.length) { timestamps = arrayUnique(timestamps).sort(sorter); min = Math.min(min, timestamps[0]); max = Math.max(max, timestamps[timestamps.length - 1]); } min = parse(timeOpts.min, me) || min; max = parse(timeOpts.max, me) || max; // In case there is no valid min/max, let's use today limits min = min === MAX_INTEGER ? +moment().startOf('day') : min; max = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max; // Make sure that max is strictly higher than min (required by the lookup table) me.min = Math.min(min, max); me.max = Math.max(min + 1, max); // PRIVATE me._horizontal = me.isHorizontal(); me._table = []; me._timestamps = { data: timestamps, datasets: datasets, labels: labels }; }, buildTicks: function() { var me = this; var min = me.min; var max = me.max; var options = me.options; var timeOpts = options.time; var timestamps = []; var ticks = []; var i, ilen, timestamp; switch (options.ticks.source) { case 'data': timestamps = me._timestamps.data; break; case 'labels': timestamps = me._timestamps.labels; break; case 'auto': default: timestamps = generate(min, max, me.getLabelCapacity(min), options); } if (options.bounds === 'ticks' && timestamps.length) { min = timestamps[0]; max = timestamps[timestamps.length - 1]; } // Enforce limits with user min/max options min = parse(timeOpts.min, me) || min; max = parse(timeOpts.max, me) || max; // Remove ticks outside the min/max range for (i = 0, ilen = timestamps.length; i < ilen; ++i) { timestamp = timestamps[i]; if (timestamp >= min && timestamp <= max) { ticks.push(timestamp); } } me.min = min; me.max = max; // PRIVATE me._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max); me._majorUnit = determineMajorUnit(me._unit); me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); me._offsets = computeOffsets(me._table, ticks, min, max, options); return ticksFromTimestamps(ticks, me._majorUnit); }, getLabelForIndex: function(index, datasetIndex) { var me = this; var data = me.chart.data; var timeOpts = me.options.time; var label = data.labels && index < data.labels.length ? data.labels[index] : ''; var value = data.datasets[datasetIndex].data[index]; if (helpers.isObject(value)) { label = me.getRightValue(value); } if (timeOpts.tooltipFormat) { label = momentify(label, timeOpts).format(timeOpts.tooltipFormat); } return label; }, /** * Function to format an individual tick mark * @private */ tickFormatFunction: function(tick, index, ticks, formatOverride) { var me = this; var options = me.options; var time = tick.valueOf(); var formats = options.time.displayFormats; var minorFormat = formats[me._unit]; var majorUnit = me._majorUnit; var majorFormat = formats[majorUnit]; var majorTime = tick.clone().startOf(majorUnit).valueOf(); var majorTickOpts = options.ticks.major; var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; var label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat); var tickOpts = major ? majorTickOpts : options.ticks.minor; var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback); return formatter ? formatter(label, index, ticks) : label; }, convertTicksToLabels: function(ticks) { var labels = []; var i, ilen; for (i = 0, ilen = ticks.length; i < ilen; ++i) { labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks)); } return labels; }, /** * @private */ getPixelForOffset: function(time) { var me = this; var size = me._horizontal ? me.width : me.height; var start = me._horizontal ? me.left : me.top; var pos = interpolate(me._table, 'time', time, 'pos'); return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right); }, getPixelForValue: function(value, index, datasetIndex) { var me = this; var time = null; if (index !== undefined && datasetIndex !== undefined) { time = me._timestamps.datasets[datasetIndex][index]; } if (time === null) { time = parse(value, me); } if (time !== null) { return me.getPixelForOffset(time); } }, getPixelForTick: function(index) { var ticks = this.getTicks(); return index >= 0 && index < ticks.length ? this.getPixelForOffset(ticks[index].value) : null; }, getValueForPixel: function(pixel) { var me = this; var size = me._horizontal ? me.width : me.height; var start = me._horizontal ? me.left : me.top; var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right; var time = interpolate(me._table, 'pos', pos, 'time'); return moment(time); }, /** * Crude approximation of what the label width might be * @private */ getLabelWidth: function(label) { var me = this; var ticksOpts = me.options.ticks; var tickLabelWidth = me.ctx.measureText(label).width; var angle = helpers.toRadians(ticksOpts.maxRotation); var cosRotation = Math.cos(angle); var sinRotation = Math.sin(angle); var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize); return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); }, /** * @private */ getLabelCapacity: function(exampleTime) { var me = this; var formatOverride = me.options.time.displayFormats.millisecond; // Pick the longest format for guestimation var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride); var tickLabelWidth = me.getLabelWidth(exampleLabel); var innerWidth = me.isHorizontal() ? me.width : me.height; return Math.floor(innerWidth / tickLabelWidth); } }); Chart.scaleService.registerScaleType('time', TimeScale, defaultConfig); }; },{"1":1,"25":25,"45":45}]},{},[7])(7) });youtube-embed-plus/scripts/chartjs/chartjs-plugin-deferred.js000064400000010435151435171370020500 0ustar00/* * @license * chartjs-plugin-deferred * http://chartjs.org/ * Version: 1.0.0 * * Copyright 2018 Simon Brunel * Released under the MIT license * https://github.com/chartjs/chartjs-plugin-deferred/blob/master/LICENSE.md */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('chart.js')) : typeof define === 'function' && define.amd ? define(['chart.js'], factory) : (factory(global.Chart)); }(this, (function (Chart) { 'use strict'; Chart = Chart && Chart.hasOwnProperty('default') ? Chart['default'] : Chart; 'use strict'; var helpers = Chart.helpers; var STUB_KEY = '$chartjs_deferred'; var MODEL_KEY = '$deferred'; /** * Plugin based on discussion from Chart.js issue #2745. * @see https://github.com/chartjs/Chart.js/issues/2745 */ Chart.defaults.global.plugins.deferred = { xOffset: 0, yOffset: 0, delay: 0 }; function defer(fn, delay) { if (delay) { window.setTimeout(fn, delay); } else { helpers.requestAnimFrame.call(window, fn); } } function computeOffset(value, base) { var number = parseInt(value, 10); if (isNaN(number)) { return 0; } else if (typeof value === 'string' && value.indexOf('%') !== -1) { return number / 100 * base; } return number; } function chartInViewport(chart) { var options = chart[MODEL_KEY].options; var canvas = chart.chart.canvas; // http://stackoverflow.com/a/21696585 if (!canvas || canvas.offsetParent === null) { return false; } var rect = canvas.getBoundingClientRect(); var dy = computeOffset(options.yOffset || 0, rect.height); var dx = computeOffset(options.xOffset || 0, rect.width); return rect.right - dx >= 0 && rect.bottom - dy >= 0 && rect.left + dx <= window.innerWidth && rect.top + dy <= window.innerHeight; } function onScroll(event) { var node = event.target; var stub = node[STUB_KEY]; if (stub.ticking) { return; } stub.ticking = true; defer(function() { var charts = stub.charts.slice(); var ilen = charts.length; var chart, i; for (i = 0; i < ilen; ++i) { chart = charts[i]; if (chartInViewport(chart)) { unwatch(chart); // eslint-disable-line chart[MODEL_KEY].appeared = true; chart.update(); } } stub.ticking = false; }); } function isScrollable(node) { var type = node.nodeType; if (type === Node.ELEMENT_NODE) { var overflowX = helpers.getStyle(node, 'overflow-x'); var overflowY = helpers.getStyle(node, 'overflow-y'); return overflowX === 'auto' || overflowX === 'scroll' || overflowY === 'auto' || overflowY === 'scroll'; } return node.nodeType === Node.DOCUMENT_NODE; } function watch(chart) { var canvas = chart.chart.canvas; var parent = canvas.parentElement; var stub, charts; while (parent) { if (isScrollable(parent)) { stub = parent[STUB_KEY] || (parent[STUB_KEY] = {}); charts = stub.charts || (stub.charts = []); if (charts.length === 0) { parent.addEventListener('scroll', onScroll, {passive: true}); } charts.push(chart); chart[MODEL_KEY].elements.push(parent); } parent = parent.parentElement || parent.ownerDocument; } } function unwatch(chart) { chart[MODEL_KEY].elements.forEach(function(element) { var charts = element[STUB_KEY].charts; charts.splice(charts.indexOf(chart), 1); if (!charts.length) { helpers.removeEvent(element, 'scroll', onScroll); delete element[STUB_KEY]; } }); chart[MODEL_KEY].elements = []; } Chart.plugins.register({ id: 'deferred', beforeInit: function(chart, options) { chart[MODEL_KEY] = { options: options, appeared: false, delayed: false, loaded: false, elements: [] }; watch(chart); }, beforeDatasetsUpdate: function(chart, options) { var model = chart[MODEL_KEY]; if (!model.loaded) { if (!model.appeared && !chartInViewport(chart)) { // cancel the datasets update return false; } model.appeared = true; model.loaded = true; unwatch(chart); if (options.delay > 0) { model.delayed = true; defer(function() { model.delayed = false; chart.update(); }, options.delay); return false; } } if (model.delayed) { // in case of delayed update, ensure to block external requests, such // as interacting with the legend label, or direct calls to update() return false; } }, destroy: function(chart) { unwatch(chart); } }); }))); youtube-embed-plus/scripts/chartjs/chart.min.js000064400001445722151435171370015667 0ustar00/*! * Chart.js * http://chartjs.org/ * Version: 2.7.1 * * Copyright 2017 Nick Downie * Released under the MIT license * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md */ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o lum2) { return (lum1 + 0.05) / (lum2 + 0.05); } return (lum2 + 0.05) / (lum1 + 0.05); }, level: function (color2) { var contrastRatio = this.contrast(color2); if (contrastRatio >= 7.1) { return 'AAA'; } return (contrastRatio >= 4.5) ? 'AA' : ''; }, dark: function () { // YIQ equation from http://24ways.org/2010/calculating-color-contrast var rgb = this.values.rgb; var yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000; return yiq < 128; }, light: function () { return !this.dark(); }, negate: function () { var rgb = []; for (var i = 0; i < 3; i++) { rgb[i] = 255 - this.values.rgb[i]; } this.setValues('rgb', rgb); return this; }, lighten: function (ratio) { var hsl = this.values.hsl; hsl[2] += hsl[2] * ratio; this.setValues('hsl', hsl); return this; }, darken: function (ratio) { var hsl = this.values.hsl; hsl[2] -= hsl[2] * ratio; this.setValues('hsl', hsl); return this; }, saturate: function (ratio) { var hsl = this.values.hsl; hsl[1] += hsl[1] * ratio; this.setValues('hsl', hsl); return this; }, desaturate: function (ratio) { var hsl = this.values.hsl; hsl[1] -= hsl[1] * ratio; this.setValues('hsl', hsl); return this; }, whiten: function (ratio) { var hwb = this.values.hwb; hwb[1] += hwb[1] * ratio; this.setValues('hwb', hwb); return this; }, blacken: function (ratio) { var hwb = this.values.hwb; hwb[2] += hwb[2] * ratio; this.setValues('hwb', hwb); return this; }, greyscale: function () { var rgb = this.values.rgb; // http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale var val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11; this.setValues('rgb', [val, val, val]); return this; }, clearer: function (ratio) { var alpha = this.values.alpha; this.setValues('alpha', alpha - (alpha * ratio)); return this; }, opaquer: function (ratio) { var alpha = this.values.alpha; this.setValues('alpha', alpha + (alpha * ratio)); return this; }, rotate: function (degrees) { var hsl = this.values.hsl; var hue = (hsl[0] + degrees) % 360; hsl[0] = hue < 0 ? 360 + hue : hue; this.setValues('hsl', hsl); return this; }, /** * Ported from sass implementation in C * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209 */ mix: function (mixinColor, weight) { var color1 = this; var color2 = mixinColor; var p = weight === undefined ? 0.5 : weight; var w = 2 * p - 1; var a = color1.alpha() - color2.alpha(); var w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0; var w2 = 1 - w1; return this .rgb( w1 * color1.red() + w2 * color2.red(), w1 * color1.green() + w2 * color2.green(), w1 * color1.blue() + w2 * color2.blue() ) .alpha(color1.alpha() * p + color2.alpha() * (1 - p)); }, toJSON: function () { return this.rgb(); }, clone: function () { // NOTE(SB): using node-clone creates a dependency to Buffer when using browserify, // making the final build way to big to embed in Chart.js. So let's do it manually, // assuming that values to clone are 1 dimension arrays containing only numbers, // except 'alpha' which is a number. var result = new Color(); var source = this.values; var target = result.values; var value, type; for (var prop in source) { if (source.hasOwnProperty(prop)) { value = source[prop]; type = ({}).toString.call(value); if (type === '[object Array]') { target[prop] = value.slice(0); } else if (type === '[object Number]') { target[prop] = value; } else { console.error('unexpected color value:', value); } } } return result; } }; Color.prototype.spaces = { rgb: ['red', 'green', 'blue'], hsl: ['hue', 'saturation', 'lightness'], hsv: ['hue', 'saturation', 'value'], hwb: ['hue', 'whiteness', 'blackness'], cmyk: ['cyan', 'magenta', 'yellow', 'black'] }; Color.prototype.maxes = { rgb: [255, 255, 255], hsl: [360, 100, 100], hsv: [360, 100, 100], hwb: [360, 100, 100], cmyk: [100, 100, 100, 100] }; Color.prototype.getValues = function (space) { var values = this.values; var vals = {}; for (var i = 0; i < space.length; i++) { vals[space.charAt(i)] = values[space][i]; } if (values.alpha !== 1) { vals.a = values.alpha; } // {r: 255, g: 255, b: 255, a: 0.4} return vals; }; Color.prototype.setValues = function (space, vals) { var values = this.values; var spaces = this.spaces; var maxes = this.maxes; var alpha = 1; var i; this.valid = true; if (space === 'alpha') { alpha = vals; } else if (vals.length) { // [10, 10, 10] values[space] = vals.slice(0, space.length); alpha = vals[space.length]; } else if (vals[space.charAt(0)] !== undefined) { // {r: 10, g: 10, b: 10} for (i = 0; i < space.length; i++) { values[space][i] = vals[space.charAt(i)]; } alpha = vals.a; } else if (vals[spaces[space][0]] !== undefined) { // {red: 10, green: 10, blue: 10} var chans = spaces[space]; for (i = 0; i < space.length; i++) { values[space][i] = vals[chans[i]]; } alpha = vals.alpha; } values.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha))); if (space === 'alpha') { return false; } var capped; // cap values of the space prior converting all values for (i = 0; i < space.length; i++) { capped = Math.max(0, Math.min(maxes[space][i], values[space][i])); values[space][i] = Math.round(capped); } // convert to all the other color spaces for (var sname in spaces) { if (sname !== space) { values[sname] = convert[space][sname](values[space]); } } return true; }; Color.prototype.setSpace = function (space, args) { var vals = args[0]; if (vals === undefined) { // color.rgb() return this.getValues(space); } // color.rgb(10, 10, 10) if (typeof vals === 'number') { vals = Array.prototype.slice.call(args); } this.setValues(space, vals); return this; }; Color.prototype.setChannel = function (space, index, val) { var svalues = this.values[space]; if (val === undefined) { // color.red() return svalues[index]; } else if (val === svalues[index]) { // color.red(color.red()) return this; } // color.red(100) svalues[index] = val; this.setValues(space, svalues); return this; }; //if (typeof window !== 'undefined') { // window.Color = Color; //} if (typeof window !== 'undefined') { window.Chart = window.Chart || {}; window.Chart.Color = Color; if (typeof window.Color === 'undefined') { // maintain backward compatibility ONLY if no other Color lib has been defined window.Color = Color; } } module.exports = Color; },{"2":2,"5":5}],4:[function(require,module,exports){ /* MIT license */ module.exports = { rgb2hsl: rgb2hsl, rgb2hsv: rgb2hsv, rgb2hwb: rgb2hwb, rgb2cmyk: rgb2cmyk, rgb2keyword: rgb2keyword, rgb2xyz: rgb2xyz, rgb2lab: rgb2lab, rgb2lch: rgb2lch, hsl2rgb: hsl2rgb, hsl2hsv: hsl2hsv, hsl2hwb: hsl2hwb, hsl2cmyk: hsl2cmyk, hsl2keyword: hsl2keyword, hsv2rgb: hsv2rgb, hsv2hsl: hsv2hsl, hsv2hwb: hsv2hwb, hsv2cmyk: hsv2cmyk, hsv2keyword: hsv2keyword, hwb2rgb: hwb2rgb, hwb2hsl: hwb2hsl, hwb2hsv: hwb2hsv, hwb2cmyk: hwb2cmyk, hwb2keyword: hwb2keyword, cmyk2rgb: cmyk2rgb, cmyk2hsl: cmyk2hsl, cmyk2hsv: cmyk2hsv, cmyk2hwb: cmyk2hwb, cmyk2keyword: cmyk2keyword, keyword2rgb: keyword2rgb, keyword2hsl: keyword2hsl, keyword2hsv: keyword2hsv, keyword2hwb: keyword2hwb, keyword2cmyk: keyword2cmyk, keyword2lab: keyword2lab, keyword2xyz: keyword2xyz, xyz2rgb: xyz2rgb, xyz2lab: xyz2lab, xyz2lch: xyz2lch, lab2xyz: lab2xyz, lab2rgb: lab2rgb, lab2lch: lab2lch, lch2lab: lch2lab, lch2xyz: lch2xyz, lch2rgb: lch2rgb } function rgb2hsl(rgb) { var r = rgb[0]/255, g = rgb[1]/255, b = rgb[2]/255, min = Math.min(r, g, b), max = Math.max(r, g, b), delta = max - min, h, s, l; if (max == min) h = 0; else if (r == max) h = (g - b) / delta; else if (g == max) h = 2 + (b - r) / delta; else if (b == max) h = 4 + (r - g)/ delta; h = Math.min(h * 60, 360); if (h < 0) h += 360; l = (min + max) / 2; if (max == min) s = 0; else if (l <= 0.5) s = delta / (max + min); else s = delta / (2 - max - min); return [h, s * 100, l * 100]; } function rgb2hsv(rgb) { var r = rgb[0], g = rgb[1], b = rgb[2], min = Math.min(r, g, b), max = Math.max(r, g, b), delta = max - min, h, s, v; if (max == 0) s = 0; else s = (delta/max * 1000)/10; if (max == min) h = 0; else if (r == max) h = (g - b) / delta; else if (g == max) h = 2 + (b - r) / delta; else if (b == max) h = 4 + (r - g) / delta; h = Math.min(h * 60, 360); if (h < 0) h += 360; v = ((max / 255) * 1000) / 10; return [h, s, v]; } function rgb2hwb(rgb) { var r = rgb[0], g = rgb[1], b = rgb[2], h = rgb2hsl(rgb)[0], w = 1/255 * Math.min(r, Math.min(g, b)), b = 1 - 1/255 * Math.max(r, Math.max(g, b)); return [h, w * 100, b * 100]; } function rgb2cmyk(rgb) { var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255, c, m, y, k; k = Math.min(1 - r, 1 - g, 1 - b); c = (1 - r - k) / (1 - k) || 0; m = (1 - g - k) / (1 - k) || 0; y = (1 - b - k) / (1 - k) || 0; return [c * 100, m * 100, y * 100, k * 100]; } function rgb2keyword(rgb) { return reverseKeywords[JSON.stringify(rgb)]; } function rgb2xyz(rgb) { var r = rgb[0] / 255, g = rgb[1] / 255, b = rgb[2] / 255; // assume sRGB r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92); g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92); b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92); var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805); var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722); var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505); return [x * 100, y *100, z * 100]; } function rgb2lab(rgb) { var xyz = rgb2xyz(rgb), x = xyz[0], y = xyz[1], z = xyz[2], l, a, b; x /= 95.047; y /= 100; z /= 108.883; x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); l = (116 * y) - 16; a = 500 * (x - y); b = 200 * (y - z); return [l, a, b]; } function rgb2lch(args) { return lab2lch(rgb2lab(args)); } function hsl2rgb(hsl) { var h = hsl[0] / 360, s = hsl[1] / 100, l = hsl[2] / 100, t1, t2, t3, rgb, val; if (s == 0) { val = l * 255; return [val, val, val]; } if (l < 0.5) t2 = l * (1 + s); else t2 = l + s - l * s; t1 = 2 * l - t2; rgb = [0, 0, 0]; for (var i = 0; i < 3; i++) { t3 = h + 1 / 3 * - (i - 1); t3 < 0 && t3++; t3 > 1 && t3--; if (6 * t3 < 1) val = t1 + (t2 - t1) * 6 * t3; else if (2 * t3 < 1) val = t2; else if (3 * t3 < 2) val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; else val = t1; rgb[i] = val * 255; } return rgb; } function hsl2hsv(hsl) { var h = hsl[0], s = hsl[1] / 100, l = hsl[2] / 100, sv, v; if(l === 0) { // no need to do calc on black // also avoids divide by 0 error return [0, 0, 0]; } l *= 2; s *= (l <= 1) ? l : 2 - l; v = (l + s) / 2; sv = (2 * s) / (l + s); return [h, sv * 100, v * 100]; } function hsl2hwb(args) { return rgb2hwb(hsl2rgb(args)); } function hsl2cmyk(args) { return rgb2cmyk(hsl2rgb(args)); } function hsl2keyword(args) { return rgb2keyword(hsl2rgb(args)); } function hsv2rgb(hsv) { var h = hsv[0] / 60, s = hsv[1] / 100, v = hsv[2] / 100, hi = Math.floor(h) % 6; var f = h - Math.floor(h), p = 255 * v * (1 - s), q = 255 * v * (1 - (s * f)), t = 255 * v * (1 - (s * (1 - f))), v = 255 * v; switch(hi) { case 0: return [v, t, p]; case 1: return [q, v, p]; case 2: return [p, v, t]; case 3: return [p, q, v]; case 4: return [t, p, v]; case 5: return [v, p, q]; } } function hsv2hsl(hsv) { var h = hsv[0], s = hsv[1] / 100, v = hsv[2] / 100, sl, l; l = (2 - s) * v; sl = s * v; sl /= (l <= 1) ? l : 2 - l; sl = sl || 0; l /= 2; return [h, sl * 100, l * 100]; } function hsv2hwb(args) { return rgb2hwb(hsv2rgb(args)) } function hsv2cmyk(args) { return rgb2cmyk(hsv2rgb(args)); } function hsv2keyword(args) { return rgb2keyword(hsv2rgb(args)); } // http://dev.w3.org/csswg/css-color/#hwb-to-rgb function hwb2rgb(hwb) { var h = hwb[0] / 360, wh = hwb[1] / 100, bl = hwb[2] / 100, ratio = wh + bl, i, v, f, n; // wh + bl cant be > 1 if (ratio > 1) { wh /= ratio; bl /= ratio; } i = Math.floor(6 * h); v = 1 - bl; f = 6 * h - i; if ((i & 0x01) != 0) { f = 1 - f; } n = wh + f * (v - wh); // linear interpolation switch (i) { default: case 6: case 0: r = v; g = n; b = wh; break; case 1: r = n; g = v; b = wh; break; case 2: r = wh; g = v; b = n; break; case 3: r = wh; g = n; b = v; break; case 4: r = n; g = wh; b = v; break; case 5: r = v; g = wh; b = n; break; } return [r * 255, g * 255, b * 255]; } function hwb2hsl(args) { return rgb2hsl(hwb2rgb(args)); } function hwb2hsv(args) { return rgb2hsv(hwb2rgb(args)); } function hwb2cmyk(args) { return rgb2cmyk(hwb2rgb(args)); } function hwb2keyword(args) { return rgb2keyword(hwb2rgb(args)); } function cmyk2rgb(cmyk) { var c = cmyk[0] / 100, m = cmyk[1] / 100, y = cmyk[2] / 100, k = cmyk[3] / 100, r, g, b; r = 1 - Math.min(1, c * (1 - k) + k); g = 1 - Math.min(1, m * (1 - k) + k); b = 1 - Math.min(1, y * (1 - k) + k); return [r * 255, g * 255, b * 255]; } function cmyk2hsl(args) { return rgb2hsl(cmyk2rgb(args)); } function cmyk2hsv(args) { return rgb2hsv(cmyk2rgb(args)); } function cmyk2hwb(args) { return rgb2hwb(cmyk2rgb(args)); } function cmyk2keyword(args) { return rgb2keyword(cmyk2rgb(args)); } function xyz2rgb(xyz) { var x = xyz[0] / 100, y = xyz[1] / 100, z = xyz[2] / 100, r, g, b; r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986); g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415); b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570); // assume sRGB r = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055) : r = (r * 12.92); g = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055) : g = (g * 12.92); b = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055) : b = (b * 12.92); r = Math.min(Math.max(0, r), 1); g = Math.min(Math.max(0, g), 1); b = Math.min(Math.max(0, b), 1); return [r * 255, g * 255, b * 255]; } function xyz2lab(xyz) { var x = xyz[0], y = xyz[1], z = xyz[2], l, a, b; x /= 95.047; y /= 100; z /= 108.883; x = x > 0.008856 ? Math.pow(x, 1/3) : (7.787 * x) + (16 / 116); y = y > 0.008856 ? Math.pow(y, 1/3) : (7.787 * y) + (16 / 116); z = z > 0.008856 ? Math.pow(z, 1/3) : (7.787 * z) + (16 / 116); l = (116 * y) - 16; a = 500 * (x - y); b = 200 * (y - z); return [l, a, b]; } function xyz2lch(args) { return lab2lch(xyz2lab(args)); } function lab2xyz(lab) { var l = lab[0], a = lab[1], b = lab[2], x, y, z, y2; if (l <= 8) { y = (l * 100) / 903.3; y2 = (7.787 * (y / 100)) + (16 / 116); } else { y = 100 * Math.pow((l + 16) / 116, 3); y2 = Math.pow(y / 100, 1/3); } x = x / 95.047 <= 0.008856 ? x = (95.047 * ((a / 500) + y2 - (16 / 116))) / 7.787 : 95.047 * Math.pow((a / 500) + y2, 3); z = z / 108.883 <= 0.008859 ? z = (108.883 * (y2 - (b / 200) - (16 / 116))) / 7.787 : 108.883 * Math.pow(y2 - (b / 200), 3); return [x, y, z]; } function lab2lch(lab) { var l = lab[0], a = lab[1], b = lab[2], hr, h, c; hr = Math.atan2(b, a); h = hr * 360 / 2 / Math.PI; if (h < 0) { h += 360; } c = Math.sqrt(a * a + b * b); return [l, c, h]; } function lab2rgb(args) { return xyz2rgb(lab2xyz(args)); } function lch2lab(lch) { var l = lch[0], c = lch[1], h = lch[2], a, b, hr; hr = h / 360 * 2 * Math.PI; a = c * Math.cos(hr); b = c * Math.sin(hr); return [l, a, b]; } function lch2xyz(args) { return lab2xyz(lch2lab(args)); } function lch2rgb(args) { return lab2rgb(lch2lab(args)); } function keyword2rgb(keyword) { return cssKeywords[keyword]; } function keyword2hsl(args) { return rgb2hsl(keyword2rgb(args)); } function keyword2hsv(args) { return rgb2hsv(keyword2rgb(args)); } function keyword2hwb(args) { return rgb2hwb(keyword2rgb(args)); } function keyword2cmyk(args) { return rgb2cmyk(keyword2rgb(args)); } function keyword2lab(args) { return rgb2lab(keyword2rgb(args)); } function keyword2xyz(args) { return rgb2xyz(keyword2rgb(args)); } var cssKeywords = { aliceblue: [240,248,255], antiquewhite: [250,235,215], aqua: [0,255,255], aquamarine: [127,255,212], azure: [240,255,255], beige: [245,245,220], bisque: [255,228,196], black: [0,0,0], blanchedalmond: [255,235,205], blue: [0,0,255], blueviolet: [138,43,226], brown: [165,42,42], burlywood: [222,184,135], cadetblue: [95,158,160], chartreuse: [127,255,0], chocolate: [210,105,30], coral: [255,127,80], cornflowerblue: [100,149,237], cornsilk: [255,248,220], crimson: [220,20,60], cyan: [0,255,255], darkblue: [0,0,139], darkcyan: [0,139,139], darkgoldenrod: [184,134,11], darkgray: [169,169,169], darkgreen: [0,100,0], darkgrey: [169,169,169], darkkhaki: [189,183,107], darkmagenta: [139,0,139], darkolivegreen: [85,107,47], darkorange: [255,140,0], darkorchid: [153,50,204], darkred: [139,0,0], darksalmon: [233,150,122], darkseagreen: [143,188,143], darkslateblue: [72,61,139], darkslategray: [47,79,79], darkslategrey: [47,79,79], darkturquoise: [0,206,209], darkviolet: [148,0,211], deeppink: [255,20,147], deepskyblue: [0,191,255], dimgray: [105,105,105], dimgrey: [105,105,105], dodgerblue: [30,144,255], firebrick: [178,34,34], floralwhite: [255,250,240], forestgreen: [34,139,34], fuchsia: [255,0,255], gainsboro: [220,220,220], ghostwhite: [248,248,255], gold: [255,215,0], goldenrod: [218,165,32], gray: [128,128,128], green: [0,128,0], greenyellow: [173,255,47], grey: [128,128,128], honeydew: [240,255,240], hotpink: [255,105,180], indianred: [205,92,92], indigo: [75,0,130], ivory: [255,255,240], khaki: [240,230,140], lavender: [230,230,250], lavenderblush: [255,240,245], lawngreen: [124,252,0], lemonchiffon: [255,250,205], lightblue: [173,216,230], lightcoral: [240,128,128], lightcyan: [224,255,255], lightgoldenrodyellow: [250,250,210], lightgray: [211,211,211], lightgreen: [144,238,144], lightgrey: [211,211,211], lightpink: [255,182,193], lightsalmon: [255,160,122], lightseagreen: [32,178,170], lightskyblue: [135,206,250], lightslategray: [119,136,153], lightslategrey: [119,136,153], lightsteelblue: [176,196,222], lightyellow: [255,255,224], lime: [0,255,0], limegreen: [50,205,50], linen: [250,240,230], magenta: [255,0,255], maroon: [128,0,0], mediumaquamarine: [102,205,170], mediumblue: [0,0,205], mediumorchid: [186,85,211], mediumpurple: [147,112,219], mediumseagreen: [60,179,113], mediumslateblue: [123,104,238], mediumspringgreen: [0,250,154], mediumturquoise: [72,209,204], mediumvioletred: [199,21,133], midnightblue: [25,25,112], mintcream: [245,255,250], mistyrose: [255,228,225], moccasin: [255,228,181], navajowhite: [255,222,173], navy: [0,0,128], oldlace: [253,245,230], olive: [128,128,0], olivedrab: [107,142,35], orange: [255,165,0], orangered: [255,69,0], orchid: [218,112,214], palegoldenrod: [238,232,170], palegreen: [152,251,152], paleturquoise: [175,238,238], palevioletred: [219,112,147], papayawhip: [255,239,213], peachpuff: [255,218,185], peru: [205,133,63], pink: [255,192,203], plum: [221,160,221], powderblue: [176,224,230], purple: [128,0,128], rebeccapurple: [102, 51, 153], red: [255,0,0], rosybrown: [188,143,143], royalblue: [65,105,225], saddlebrown: [139,69,19], salmon: [250,128,114], sandybrown: [244,164,96], seagreen: [46,139,87], seashell: [255,245,238], sienna: [160,82,45], silver: [192,192,192], skyblue: [135,206,235], slateblue: [106,90,205], slategray: [112,128,144], slategrey: [112,128,144], snow: [255,250,250], springgreen: [0,255,127], steelblue: [70,130,180], tan: [210,180,140], teal: [0,128,128], thistle: [216,191,216], tomato: [255,99,71], turquoise: [64,224,208], violet: [238,130,238], wheat: [245,222,179], white: [255,255,255], whitesmoke: [245,245,245], yellow: [255,255,0], yellowgreen: [154,205,50] }; var reverseKeywords = {}; for (var key in cssKeywords) { reverseKeywords[JSON.stringify(cssKeywords[key])] = key; } },{}],5:[function(require,module,exports){ var conversions = require(4); var convert = function() { return new Converter(); } for (var func in conversions) { // export Raw versions convert[func + "Raw"] = (function(func) { // accept array or plain args return function(arg) { if (typeof arg == "number") arg = Array.prototype.slice.call(arguments); return conversions[func](arg); } })(func); var pair = /(\w+)2(\w+)/.exec(func), from = pair[1], to = pair[2]; // export rgb2hsl and ["rgb"]["hsl"] convert[from] = convert[from] || {}; convert[from][to] = convert[func] = (function(func) { return function(arg) { if (typeof arg == "number") arg = Array.prototype.slice.call(arguments); var val = conversions[func](arg); if (typeof val == "string" || val === undefined) return val; // keyword for (var i = 0; i < val.length; i++) val[i] = Math.round(val[i]); return val; } })(func); } /* Converter does lazy conversion and caching */ var Converter = function() { this.convs = {}; }; /* Either get the values for a space or set the values for a space, depending on args */ Converter.prototype.routeSpace = function(space, args) { var values = args[0]; if (values === undefined) { // color.rgb() return this.getValues(space); } // color.rgb(10, 10, 10) if (typeof values == "number") { values = Array.prototype.slice.call(args); } return this.setValues(space, values); }; /* Set the values for a space, invalidating cache */ Converter.prototype.setValues = function(space, values) { this.space = space; this.convs = {}; this.convs[space] = values; return this; }; /* Get the values for a space. If there's already a conversion for the space, fetch it, otherwise compute it */ Converter.prototype.getValues = function(space) { var vals = this.convs[space]; if (!vals) { var fspace = this.space, from = this.convs[fspace]; vals = convert[fspace][space](from); this.convs[space] = vals; } return vals; }; ["rgb", "hsl", "hsv", "cmyk", "keyword"].forEach(function(space) { Converter.prototype[space] = function(vals) { return this.routeSpace(space, arguments); } }); module.exports = convert; },{"4":4}],6:[function(require,module,exports){ 'use strict' module.exports = { "aliceblue": [240, 248, 255], "antiquewhite": [250, 235, 215], "aqua": [0, 255, 255], "aquamarine": [127, 255, 212], "azure": [240, 255, 255], "beige": [245, 245, 220], "bisque": [255, 228, 196], "black": [0, 0, 0], "blanchedalmond": [255, 235, 205], "blue": [0, 0, 255], "blueviolet": [138, 43, 226], "brown": [165, 42, 42], "burlywood": [222, 184, 135], "cadetblue": [95, 158, 160], "chartreuse": [127, 255, 0], "chocolate": [210, 105, 30], "coral": [255, 127, 80], "cornflowerblue": [100, 149, 237], "cornsilk": [255, 248, 220], "crimson": [220, 20, 60], "cyan": [0, 255, 255], "darkblue": [0, 0, 139], "darkcyan": [0, 139, 139], "darkgoldenrod": [184, 134, 11], "darkgray": [169, 169, 169], "darkgreen": [0, 100, 0], "darkgrey": [169, 169, 169], "darkkhaki": [189, 183, 107], "darkmagenta": [139, 0, 139], "darkolivegreen": [85, 107, 47], "darkorange": [255, 140, 0], "darkorchid": [153, 50, 204], "darkred": [139, 0, 0], "darksalmon": [233, 150, 122], "darkseagreen": [143, 188, 143], "darkslateblue": [72, 61, 139], "darkslategray": [47, 79, 79], "darkslategrey": [47, 79, 79], "darkturquoise": [0, 206, 209], "darkviolet": [148, 0, 211], "deeppink": [255, 20, 147], "deepskyblue": [0, 191, 255], "dimgray": [105, 105, 105], "dimgrey": [105, 105, 105], "dodgerblue": [30, 144, 255], "firebrick": [178, 34, 34], "floralwhite": [255, 250, 240], "forestgreen": [34, 139, 34], "fuchsia": [255, 0, 255], "gainsboro": [220, 220, 220], "ghostwhite": [248, 248, 255], "gold": [255, 215, 0], "goldenrod": [218, 165, 32], "gray": [128, 128, 128], "green": [0, 128, 0], "greenyellow": [173, 255, 47], "grey": [128, 128, 128], "honeydew": [240, 255, 240], "hotpink": [255, 105, 180], "indianred": [205, 92, 92], "indigo": [75, 0, 130], "ivory": [255, 255, 240], "khaki": [240, 230, 140], "lavender": [230, 230, 250], "lavenderblush": [255, 240, 245], "lawngreen": [124, 252, 0], "lemonchiffon": [255, 250, 205], "lightblue": [173, 216, 230], "lightcoral": [240, 128, 128], "lightcyan": [224, 255, 255], "lightgoldenrodyellow": [250, 250, 210], "lightgray": [211, 211, 211], "lightgreen": [144, 238, 144], "lightgrey": [211, 211, 211], "lightpink": [255, 182, 193], "lightsalmon": [255, 160, 122], "lightseagreen": [32, 178, 170], "lightskyblue": [135, 206, 250], "lightslategray": [119, 136, 153], "lightslategrey": [119, 136, 153], "lightsteelblue": [176, 196, 222], "lightyellow": [255, 255, 224], "lime": [0, 255, 0], "limegreen": [50, 205, 50], "linen": [250, 240, 230], "magenta": [255, 0, 255], "maroon": [128, 0, 0], "mediumaquamarine": [102, 205, 170], "mediumblue": [0, 0, 205], "mediumorchid": [186, 85, 211], "mediumpurple": [147, 112, 219], "mediumseagreen": [60, 179, 113], "mediumslateblue": [123, 104, 238], "mediumspringgreen": [0, 250, 154], "mediumturquoise": [72, 209, 204], "mediumvioletred": [199, 21, 133], "midnightblue": [25, 25, 112], "mintcream": [245, 255, 250], "mistyrose": [255, 228, 225], "moccasin": [255, 228, 181], "navajowhite": [255, 222, 173], "navy": [0, 0, 128], "oldlace": [253, 245, 230], "olive": [128, 128, 0], "olivedrab": [107, 142, 35], "orange": [255, 165, 0], "orangered": [255, 69, 0], "orchid": [218, 112, 214], "palegoldenrod": [238, 232, 170], "palegreen": [152, 251, 152], "paleturquoise": [175, 238, 238], "palevioletred": [219, 112, 147], "papayawhip": [255, 239, 213], "peachpuff": [255, 218, 185], "peru": [205, 133, 63], "pink": [255, 192, 203], "plum": [221, 160, 221], "powderblue": [176, 224, 230], "purple": [128, 0, 128], "rebeccapurple": [102, 51, 153], "red": [255, 0, 0], "rosybrown": [188, 143, 143], "royalblue": [65, 105, 225], "saddlebrown": [139, 69, 19], "salmon": [250, 128, 114], "sandybrown": [244, 164, 96], "seagreen": [46, 139, 87], "seashell": [255, 245, 238], "sienna": [160, 82, 45], "silver": [192, 192, 192], "skyblue": [135, 206, 235], "slateblue": [106, 90, 205], "slategray": [112, 128, 144], "slategrey": [112, 128, 144], "snow": [255, 250, 250], "springgreen": [0, 255, 127], "steelblue": [70, 130, 180], "tan": [210, 180, 140], "teal": [0, 128, 128], "thistle": [216, 191, 216], "tomato": [255, 99, 71], "turquoise": [64, 224, 208], "violet": [238, 130, 238], "wheat": [245, 222, 179], "white": [255, 255, 255], "whitesmoke": [245, 245, 245], "yellow": [255, 255, 0], "yellowgreen": [154, 205, 50] }; },{}],7:[function(require,module,exports){ /** * @namespace Chart */ var Chart = require(29)(); Chart.helpers = require(45); // @todo dispatch these helpers into appropriated helpers/helpers.* file and write unit tests! require(27)(Chart); Chart.defaults = require(25); Chart.Element = require(26); Chart.elements = require(40); Chart.Interaction = require(28); Chart.platform = require(48); require(31)(Chart); require(22)(Chart); require(23)(Chart); require(24)(Chart); require(30)(Chart); require(33)(Chart); require(32)(Chart); require(35)(Chart); require(54)(Chart); require(52)(Chart); require(53)(Chart); require(55)(Chart); require(56)(Chart); require(57)(Chart); // Controllers must be loaded after elements // See Chart.core.datasetController.dataElementType require(15)(Chart); require(16)(Chart); require(17)(Chart); require(18)(Chart); require(19)(Chart); require(20)(Chart); require(21)(Chart); require(8)(Chart); require(9)(Chart); require(10)(Chart); require(11)(Chart); require(12)(Chart); require(13)(Chart); require(14)(Chart); // Loading built-it plugins var plugins = []; plugins.push( require(49)(Chart), require(50)(Chart), require(51)(Chart) ); Chart.plugins.register(plugins); Chart.platform.initialize(); module.exports = Chart; if (typeof window !== 'undefined') { window.Chart = Chart; } // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.canvas instead. * @namespace Chart.canvasHelpers * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ Chart.canvasHelpers = Chart.helpers.canvas; },{"10":10,"11":11,"12":12,"13":13,"14":14,"15":15,"16":16,"17":17,"18":18,"19":19,"20":20,"21":21,"22":22,"23":23,"24":24,"25":25,"26":26,"27":27,"28":28,"29":29,"30":30,"31":31,"32":32,"33":33,"35":35,"40":40,"45":45,"48":48,"49":49,"50":50,"51":51,"52":52,"53":53,"54":54,"55":55,"56":56,"57":57,"8":8,"9":9}],8:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Bar = function(context, config) { config.type = 'bar'; return new Chart(context, config); }; }; },{}],9:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Bubble = function(context, config) { config.type = 'bubble'; return new Chart(context, config); }; }; },{}],10:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Doughnut = function(context, config) { config.type = 'doughnut'; return new Chart(context, config); }; }; },{}],11:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Line = function(context, config) { config.type = 'line'; return new Chart(context, config); }; }; },{}],12:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.PolarArea = function(context, config) { config.type = 'polarArea'; return new Chart(context, config); }; }; },{}],13:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Radar = function(context, config) { config.type = 'radar'; return new Chart(context, config); }; }; },{}],14:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { Chart.Scatter = function(context, config) { config.type = 'scatter'; return new Chart(context, config); }; }; },{}],15:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('bar', { hover: { mode: 'label' }, scales: { xAxes: [{ type: 'category', // Specific to Bar Controller categoryPercentage: 0.8, barPercentage: 0.9, // offset settings offset: true, // grid line settings gridLines: { offsetGridLines: true } }], yAxes: [{ type: 'linear' }] } }); defaults._set('horizontalBar', { hover: { mode: 'index', axis: 'y' }, scales: { xAxes: [{ type: 'linear', position: 'bottom' }], yAxes: [{ position: 'left', type: 'category', // Specific to Horizontal Bar Controller categoryPercentage: 0.8, barPercentage: 0.9, // offset settings offset: true, // grid line settings gridLines: { offsetGridLines: true } }] }, elements: { rectangle: { borderSkipped: 'left' } }, tooltips: { callbacks: { title: function(item, data) { // Pick first xLabel for now var title = ''; if (item.length > 0) { if (item[0].yLabel) { title = item[0].yLabel; } else if (data.labels.length > 0 && item[0].index < data.labels.length) { title = data.labels[item[0].index]; } } return title; }, label: function(item, data) { var datasetLabel = data.datasets[item.datasetIndex].label || ''; return datasetLabel + ': ' + item.xLabel; } }, mode: 'index', axis: 'y' } }); module.exports = function(Chart) { Chart.controllers.bar = Chart.DatasetController.extend({ dataElementType: elements.Rectangle, initialize: function() { var me = this; var meta; Chart.DatasetController.prototype.initialize.apply(me, arguments); meta = me.getMeta(); meta.stack = me.getDataset().stack; meta.bar = true; }, update: function(reset) { var me = this; var rects = me.getMeta().data; var i, ilen; me._ruler = me.getRuler(); for (i = 0, ilen = rects.length; i < ilen; ++i) { me.updateElement(rects[i], i, reset); } }, updateElement: function(rectangle, index, reset) { var me = this; var chart = me.chart; var meta = me.getMeta(); var dataset = me.getDataset(); var custom = rectangle.custom || {}; var rectangleOptions = chart.options.elements.rectangle; rectangle._xScale = me.getScaleForId(meta.xAxisID); rectangle._yScale = me.getScaleForId(meta.yAxisID); rectangle._datasetIndex = me.index; rectangle._index = index; rectangle._model = { datasetLabel: dataset.label, label: chart.data.labels[index], borderSkipped: custom.borderSkipped ? custom.borderSkipped : rectangleOptions.borderSkipped, backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleOptions.backgroundColor), borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleOptions.borderColor), borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleOptions.borderWidth) }; me.updateElementGeometry(rectangle, index, reset); rectangle.pivot(); }, /** * @private */ updateElementGeometry: function(rectangle, index, reset) { var me = this; var model = rectangle._model; var vscale = me.getValueScale(); var base = vscale.getBasePixel(); var horizontal = vscale.isHorizontal(); var ruler = me._ruler || me.getRuler(); var vpixels = me.calculateBarValuePixels(me.index, index); var ipixels = me.calculateBarIndexPixels(me.index, index, ruler); model.horizontal = horizontal; model.base = reset ? base : vpixels.base; model.x = horizontal ? reset ? base : vpixels.head : ipixels.center; model.y = horizontal ? ipixels.center : reset ? base : vpixels.head; model.height = horizontal ? ipixels.size : undefined; model.width = horizontal ? undefined : ipixels.size; }, /** * @private */ getValueScaleId: function() { return this.getMeta().yAxisID; }, /** * @private */ getIndexScaleId: function() { return this.getMeta().xAxisID; }, /** * @private */ getValueScale: function() { return this.getScaleForId(this.getValueScaleId()); }, /** * @private */ getIndexScale: function() { return this.getScaleForId(this.getIndexScaleId()); }, /** * Returns the effective number of stacks based on groups and bar visibility. * @private */ getStackCount: function(last) { var me = this; var chart = me.chart; var scale = me.getIndexScale(); var stacked = scale.options.stacked; var ilen = last === undefined ? chart.data.datasets.length : last + 1; var stacks = []; var i, meta; for (i = 0; i < ilen; ++i) { meta = chart.getDatasetMeta(i); if (meta.bar && chart.isDatasetVisible(i) && (stacked === false || (stacked === true && stacks.indexOf(meta.stack) === -1) || (stacked === undefined && (meta.stack === undefined || stacks.indexOf(meta.stack) === -1)))) { stacks.push(meta.stack); } } return stacks.length; }, /** * Returns the stack index for the given dataset based on groups and bar visibility. * @private */ getStackIndex: function(datasetIndex) { return this.getStackCount(datasetIndex) - 1; }, /** * @private */ getRuler: function() { var me = this; var scale = me.getIndexScale(); var stackCount = me.getStackCount(); var datasetIndex = me.index; var pixels = []; var isHorizontal = scale.isHorizontal(); var start = isHorizontal ? scale.left : scale.top; var end = start + (isHorizontal ? scale.width : scale.height); var i, ilen; for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) { pixels.push(scale.getPixelForValue(null, i, datasetIndex)); } return { pixels: pixels, start: start, end: end, stackCount: stackCount, scale: scale }; }, /** * Note: pixel values are not clamped to the scale area. * @private */ calculateBarValuePixels: function(datasetIndex, index) { var me = this; var chart = me.chart; var meta = me.getMeta(); var scale = me.getValueScale(); var datasets = chart.data.datasets; var value = scale.getRightValue(datasets[datasetIndex].data[index]); var stacked = scale.options.stacked; var stack = meta.stack; var start = 0; var i, imeta, ivalue, base, head, size; if (stacked || (stacked === undefined && stack !== undefined)) { for (i = 0; i < datasetIndex; ++i) { imeta = chart.getDatasetMeta(i); if (imeta.bar && imeta.stack === stack && imeta.controller.getValueScaleId() === scale.id && chart.isDatasetVisible(i)) { ivalue = scale.getRightValue(datasets[i].data[index]); if ((value < 0 && ivalue < 0) || (value >= 0 && ivalue > 0)) { start += ivalue; } } } } base = scale.getPixelForValue(start); head = scale.getPixelForValue(start + value); size = (head - base) / 2; return { size: size, base: base, head: head, center: head + size / 2 }; }, /** * @private */ calculateBarIndexPixels: function(datasetIndex, index, ruler) { var me = this; var options = ruler.scale.options; var stackIndex = me.getStackIndex(datasetIndex); var pixels = ruler.pixels; var base = pixels[index]; var length = pixels.length; var start = ruler.start; var end = ruler.end; var leftSampleSize, rightSampleSize, leftCategorySize, rightCategorySize, fullBarSize, size; if (length === 1) { leftSampleSize = base > start ? base - start : end - base; rightSampleSize = base < end ? end - base : base - start; } else { if (index > 0) { leftSampleSize = (base - pixels[index - 1]) / 2; if (index === length - 1) { rightSampleSize = leftSampleSize; } } if (index < length - 1) { rightSampleSize = (pixels[index + 1] - base) / 2; if (index === 0) { leftSampleSize = rightSampleSize; } } } leftCategorySize = leftSampleSize * options.categoryPercentage; rightCategorySize = rightSampleSize * options.categoryPercentage; fullBarSize = (leftCategorySize + rightCategorySize) / ruler.stackCount; size = fullBarSize * options.barPercentage; size = Math.min( helpers.valueOrDefault(options.barThickness, size), helpers.valueOrDefault(options.maxBarThickness, Infinity)); base -= leftCategorySize; base += fullBarSize * stackIndex; base += (fullBarSize - size) / 2; return { size: size, base: base, head: base + size, center: base + size / 2 }; }, draw: function() { var me = this; var chart = me.chart; var scale = me.getValueScale(); var rects = me.getMeta().data; var dataset = me.getDataset(); var ilen = rects.length; var i = 0; helpers.canvas.clipArea(chart.ctx, chart.chartArea); for (; i < ilen; ++i) { if (!isNaN(scale.getRightValue(dataset.data[i]))) { rects[i].draw(); } } helpers.canvas.unclipArea(chart.ctx); }, setHoverStyle: function(rectangle) { var dataset = this.chart.data.datasets[rectangle._datasetIndex]; var index = rectangle._index; var custom = rectangle.custom || {}; var model = rectangle._model; model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.hoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.hoverBorderColor, index, helpers.getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); }, removeHoverStyle: function(rectangle) { var dataset = this.chart.data.datasets[rectangle._datasetIndex]; var index = rectangle._index; var custom = rectangle.custom || {}; var model = rectangle._model; var rectangleElementOptions = this.chart.options.elements.rectangle; model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.backgroundColor, index, rectangleElementOptions.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.borderColor, index, rectangleElementOptions.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.borderWidth, index, rectangleElementOptions.borderWidth); } }); Chart.controllers.horizontalBar = Chart.controllers.bar.extend({ /** * @private */ getValueScaleId: function() { return this.getMeta().xAxisID; }, /** * @private */ getIndexScaleId: function() { return this.getMeta().yAxisID; } }); }; },{"25":25,"40":40,"45":45}],16:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('bubble', { hover: { mode: 'single' }, scales: { xAxes: [{ type: 'linear', // bubble should probably use a linear scale by default position: 'bottom', id: 'x-axis-0' // need an ID so datasets can reference the scale }], yAxes: [{ type: 'linear', position: 'left', id: 'y-axis-0' }] }, tooltips: { callbacks: { title: function() { // Title doesn't make sense for scatter since we format the data as a point return ''; }, label: function(item, data) { var datasetLabel = data.datasets[item.datasetIndex].label || ''; var dataPoint = data.datasets[item.datasetIndex].data[item.index]; return datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')'; } } } }); module.exports = function(Chart) { Chart.controllers.bubble = Chart.DatasetController.extend({ /** * @protected */ dataElementType: elements.Point, /** * @protected */ update: function(reset) { var me = this; var meta = me.getMeta(); var points = meta.data; // Update Points helpers.each(points, function(point, index) { me.updateElement(point, index, reset); }); }, /** * @protected */ updateElement: function(point, index, reset) { var me = this; var meta = me.getMeta(); var custom = point.custom || {}; var xScale = me.getScaleForId(meta.xAxisID); var yScale = me.getScaleForId(meta.yAxisID); var options = me._resolveElementOptions(point, index); var data = me.getDataset().data[index]; var dsIndex = me.index; var x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex); var y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex); point._xScale = xScale; point._yScale = yScale; point._options = options; point._datasetIndex = dsIndex; point._index = index; point._model = { backgroundColor: options.backgroundColor, borderColor: options.borderColor, borderWidth: options.borderWidth, hitRadius: options.hitRadius, pointStyle: options.pointStyle, radius: reset ? 0 : options.radius, skip: custom.skip || isNaN(x) || isNaN(y), x: x, y: y, }; point.pivot(); }, /** * @protected */ setHoverStyle: function(point) { var model = point._model; var options = point._options; model.backgroundColor = helpers.valueOrDefault(options.hoverBackgroundColor, helpers.getHoverColor(options.backgroundColor)); model.borderColor = helpers.valueOrDefault(options.hoverBorderColor, helpers.getHoverColor(options.borderColor)); model.borderWidth = helpers.valueOrDefault(options.hoverBorderWidth, options.borderWidth); model.radius = options.radius + options.hoverRadius; }, /** * @protected */ removeHoverStyle: function(point) { var model = point._model; var options = point._options; model.backgroundColor = options.backgroundColor; model.borderColor = options.borderColor; model.borderWidth = options.borderWidth; model.radius = options.radius; }, /** * @private */ _resolveElementOptions: function(point, index) { var me = this; var chart = me.chart; var datasets = chart.data.datasets; var dataset = datasets[me.index]; var custom = point.custom || {}; var options = chart.options.elements.point; var resolve = helpers.options.resolve; var data = dataset.data[index]; var values = {}; var i, ilen, key; // Scriptable options var context = { chart: chart, dataIndex: index, dataset: dataset, datasetIndex: me.index }; var keys = [ 'backgroundColor', 'borderColor', 'borderWidth', 'hoverBackgroundColor', 'hoverBorderColor', 'hoverBorderWidth', 'hoverRadius', 'hitRadius', 'pointStyle' ]; for (i = 0, ilen = keys.length; i < ilen; ++i) { key = keys[i]; values[key] = resolve([ custom[key], dataset[key], options[key] ], context, index); } // Custom radius resolution values.radius = resolve([ custom.radius, data ? data.r : undefined, dataset.radius, options.radius ], context, index); return values; } }); }; },{"25":25,"40":40,"45":45}],17:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('doughnut', { animation: { // Boolean - Whether we animate the rotation of the Doughnut animateRotate: true, // Boolean - Whether we animate scaling the Doughnut from the centre animateScale: false }, hover: { mode: 'single' }, legendCallback: function(chart) { var text = []; text.push('
    '); var data = chart.data; var datasets = data.datasets; var labels = data.labels; if (datasets.length) { for (var i = 0; i < datasets[0].data.length; ++i) { text.push('
  • '); if (labels[i]) { text.push(labels[i]); } text.push('
  • '); } } text.push('
'); return text.join(''); }, legend: { labels: { generateLabels: function(chart) { var data = chart.data; if (data.labels.length && data.datasets.length) { return data.labels.map(function(label, i) { var meta = chart.getDatasetMeta(0); var ds = data.datasets[0]; var arc = meta.data[i]; var custom = arc && arc.custom || {}; var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; var arcOpts = chart.options.elements.arc; var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); return { text: label, fillStyle: fill, strokeStyle: stroke, lineWidth: bw, hidden: isNaN(ds.data[i]) || meta.data[i].hidden, // Extra data used for toggling the correct item index: i }; }); } return []; } }, onClick: function(e, legendItem) { var index = legendItem.index; var chart = this.chart; var i, ilen, meta; for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { meta = chart.getDatasetMeta(i); // toggle visibility of index if exists if (meta.data[index]) { meta.data[index].hidden = !meta.data[index].hidden; } } chart.update(); } }, // The percentage of the chart that we cut out of the middle. cutoutPercentage: 50, // The rotation of the chart, where the first data arc begins. rotation: Math.PI * -0.5, // The total circumference of the chart. circumference: Math.PI * 2.0, // Need to override these to give a nice default tooltips: { callbacks: { title: function() { return ''; }, label: function(tooltipItem, data) { var dataLabel = data.labels[tooltipItem.index]; var value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]; if (helpers.isArray(dataLabel)) { // show value on first line of multiline label // need to clone because we are changing the value dataLabel = dataLabel.slice(); dataLabel[0] += value; } else { dataLabel += value; } return dataLabel; } } } }); defaults._set('pie', helpers.clone(defaults.doughnut)); defaults._set('pie', { cutoutPercentage: 0 }); module.exports = function(Chart) { Chart.controllers.doughnut = Chart.controllers.pie = Chart.DatasetController.extend({ dataElementType: elements.Arc, linkScales: helpers.noop, // Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly getRingIndex: function(datasetIndex) { var ringIndex = 0; for (var j = 0; j < datasetIndex; ++j) { if (this.chart.isDatasetVisible(j)) { ++ringIndex; } } return ringIndex; }, update: function(reset) { var me = this; var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; var arcOpts = opts.elements.arc; var availableWidth = chartArea.right - chartArea.left - arcOpts.borderWidth; var availableHeight = chartArea.bottom - chartArea.top - arcOpts.borderWidth; var minSize = Math.min(availableWidth, availableHeight); var offset = {x: 0, y: 0}; var meta = me.getMeta(); var cutoutPercentage = opts.cutoutPercentage; var circumference = opts.circumference; // If the chart's circumference isn't a full circle, calculate minSize as a ratio of the width/height of the arc if (circumference < Math.PI * 2.0) { var startAngle = opts.rotation % (Math.PI * 2.0); startAngle += Math.PI * 2.0 * (startAngle >= Math.PI ? -1 : startAngle < -Math.PI ? 1 : 0); var endAngle = startAngle + circumference; var start = {x: Math.cos(startAngle), y: Math.sin(startAngle)}; var end = {x: Math.cos(endAngle), y: Math.sin(endAngle)}; var contains0 = (startAngle <= 0 && endAngle >= 0) || (startAngle <= Math.PI * 2.0 && Math.PI * 2.0 <= endAngle); var contains90 = (startAngle <= Math.PI * 0.5 && Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 2.5 && Math.PI * 2.5 <= endAngle); var contains180 = (startAngle <= -Math.PI && -Math.PI <= endAngle) || (startAngle <= Math.PI && Math.PI <= endAngle); var contains270 = (startAngle <= -Math.PI * 0.5 && -Math.PI * 0.5 <= endAngle) || (startAngle <= Math.PI * 1.5 && Math.PI * 1.5 <= endAngle); var cutout = cutoutPercentage / 100.0; var min = {x: contains180 ? -1 : Math.min(start.x * (start.x < 0 ? 1 : cutout), end.x * (end.x < 0 ? 1 : cutout)), y: contains270 ? -1 : Math.min(start.y * (start.y < 0 ? 1 : cutout), end.y * (end.y < 0 ? 1 : cutout))}; var max = {x: contains0 ? 1 : Math.max(start.x * (start.x > 0 ? 1 : cutout), end.x * (end.x > 0 ? 1 : cutout)), y: contains90 ? 1 : Math.max(start.y * (start.y > 0 ? 1 : cutout), end.y * (end.y > 0 ? 1 : cutout))}; var size = {width: (max.x - min.x) * 0.5, height: (max.y - min.y) * 0.5}; minSize = Math.min(availableWidth / size.width, availableHeight / size.height); offset = {x: (max.x + min.x) * -0.5, y: (max.y + min.y) * -0.5}; } chart.borderWidth = me.getMaxBorderWidth(meta.data); chart.outerRadius = Math.max((minSize - chart.borderWidth) / 2, 0); chart.innerRadius = Math.max(cutoutPercentage ? (chart.outerRadius / 100) * (cutoutPercentage) : 0, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); chart.offsetX = offset.x * chart.outerRadius; chart.offsetY = offset.y * chart.outerRadius; meta.total = me.calculateTotal(); me.outerRadius = chart.outerRadius - (chart.radiusLength * me.getRingIndex(me.index)); me.innerRadius = Math.max(me.outerRadius - chart.radiusLength, 0); helpers.each(meta.data, function(arc, index) { me.updateElement(arc, index, reset); }); }, updateElement: function(arc, index, reset) { var me = this; var chart = me.chart; var chartArea = chart.chartArea; var opts = chart.options; var animationOpts = opts.animation; var centerX = (chartArea.left + chartArea.right) / 2; var centerY = (chartArea.top + chartArea.bottom) / 2; var startAngle = opts.rotation; // non reset case handled later var endAngle = opts.rotation; // non reset case handled later var dataset = me.getDataset(); var circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / (2.0 * Math.PI)); var innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius; var outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius; var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; helpers.extend(arc, { // Utility _datasetIndex: me.index, _index: index, // Desired view properties _model: { x: centerX + chart.offsetX, y: centerY + chart.offsetY, startAngle: startAngle, endAngle: endAngle, circumference: circumference, outerRadius: outerRadius, innerRadius: innerRadius, label: valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index]) } }); var model = arc._model; // Resets the visual styles this.removeHoverStyle(arc); // Set correct angles if not resetting if (!reset || !animationOpts.animateRotate) { if (index === 0) { model.startAngle = opts.rotation; } else { model.startAngle = me.getMeta().data[index - 1]._model.endAngle; } model.endAngle = model.startAngle + model.circumference; } arc.pivot(); }, removeHoverStyle: function(arc) { Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); }, calculateTotal: function() { var dataset = this.getDataset(); var meta = this.getMeta(); var total = 0; var value; helpers.each(meta.data, function(element, index) { value = dataset.data[index]; if (!isNaN(value) && !element.hidden) { total += Math.abs(value); } }); /* if (total === 0) { total = NaN; }*/ return total; }, calculateCircumference: function(value) { var total = this.getMeta().total; if (total > 0 && !isNaN(value)) { return (Math.PI * 2.0) * (value / total); } return 0; }, // gets the max border or hover width to properly scale pie charts getMaxBorderWidth: function(arcs) { var max = 0; var index = this.index; var length = arcs.length; var borderWidth; var hoverWidth; for (var i = 0; i < length; i++) { borderWidth = arcs[i]._model ? arcs[i]._model.borderWidth : 0; hoverWidth = arcs[i]._chart ? arcs[i]._chart.config.data.datasets[index].hoverBorderWidth : 0; max = borderWidth > max ? borderWidth : max; max = hoverWidth > max ? hoverWidth : max; } return max; } }); }; },{"25":25,"40":40,"45":45}],18:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('line', { showLines: true, spanGaps: false, hover: { mode: 'label' }, scales: { xAxes: [{ type: 'category', id: 'x-axis-0' }], yAxes: [{ type: 'linear', id: 'y-axis-0' }] } }); module.exports = function(Chart) { function lineEnabled(dataset, options) { return helpers.valueOrDefault(dataset.showLine, options.showLines); } Chart.controllers.line = Chart.DatasetController.extend({ datasetElementType: elements.Line, dataElementType: elements.Point, update: function(reset) { var me = this; var meta = me.getMeta(); var line = meta.dataset; var points = meta.data || []; var options = me.chart.options; var lineElementOptions = options.elements.line; var scale = me.getScaleForId(meta.yAxisID); var i, ilen, custom; var dataset = me.getDataset(); var showLine = lineEnabled(dataset, options); // Update Line if (showLine) { custom = line.custom || {}; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { dataset.lineTension = dataset.tension; } // Utility line._scale = scale; line._datasetIndex = me.index; // Data line._children = points; // Model line._model = { // Appearance // The default behavior of lines is to break at null values, according // to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158 // This option gives lines the ability to span gaps spanGaps: dataset.spanGaps ? dataset.spanGaps : options.spanGaps, tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), steppedLine: custom.steppedLine ? custom.steppedLine : helpers.valueOrDefault(dataset.steppedLine, lineElementOptions.stepped), cubicInterpolationMode: custom.cubicInterpolationMode ? custom.cubicInterpolationMode : helpers.valueOrDefault(dataset.cubicInterpolationMode, lineElementOptions.cubicInterpolationMode), }; line.pivot(); } // Update Points for (i = 0, ilen = points.length; i < ilen; ++i) { me.updateElement(points[i], i, reset); } if (showLine && line._model.tension !== 0) { me.updateBezierControlPoints(); } // Now pivot the point for animation for (i = 0, ilen = points.length; i < ilen; ++i) { points[i].pivot(); } }, getPointBackgroundColor: function(point, index) { var backgroundColor = this.chart.options.elements.point.backgroundColor; var dataset = this.getDataset(); var custom = point.custom || {}; if (custom.backgroundColor) { backgroundColor = custom.backgroundColor; } else if (dataset.pointBackgroundColor) { backgroundColor = helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, backgroundColor); } else if (dataset.backgroundColor) { backgroundColor = dataset.backgroundColor; } return backgroundColor; }, getPointBorderColor: function(point, index) { var borderColor = this.chart.options.elements.point.borderColor; var dataset = this.getDataset(); var custom = point.custom || {}; if (custom.borderColor) { borderColor = custom.borderColor; } else if (dataset.pointBorderColor) { borderColor = helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, borderColor); } else if (dataset.borderColor) { borderColor = dataset.borderColor; } return borderColor; }, getPointBorderWidth: function(point, index) { var borderWidth = this.chart.options.elements.point.borderWidth; var dataset = this.getDataset(); var custom = point.custom || {}; if (!isNaN(custom.borderWidth)) { borderWidth = custom.borderWidth; } else if (!isNaN(dataset.pointBorderWidth) || helpers.isArray(dataset.pointBorderWidth)) { borderWidth = helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, borderWidth); } else if (!isNaN(dataset.borderWidth)) { borderWidth = dataset.borderWidth; } return borderWidth; }, updateElement: function(point, index, reset) { var me = this; var meta = me.getMeta(); var custom = point.custom || {}; var dataset = me.getDataset(); var datasetIndex = me.index; var value = dataset.data[index]; var yScale = me.getScaleForId(meta.yAxisID); var xScale = me.getScaleForId(meta.xAxisID); var pointOptions = me.chart.options.elements.point; var x, y; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { dataset.pointRadius = dataset.radius; } if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { dataset.pointHitRadius = dataset.hitRadius; } x = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex); y = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex); // Utility point._xScale = xScale; point._yScale = yScale; point._datasetIndex = datasetIndex; point._index = index; // Desired view properties point._model = { x: x, y: y, skip: custom.skip || isNaN(x) || isNaN(y), // Appearance radius: custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointOptions.radius), pointStyle: custom.pointStyle || helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointOptions.pointStyle), backgroundColor: me.getPointBackgroundColor(point, index), borderColor: me.getPointBorderColor(point, index), borderWidth: me.getPointBorderWidth(point, index), tension: meta.dataset._model ? meta.dataset._model.tension : 0, steppedLine: meta.dataset._model ? meta.dataset._model.steppedLine : false, // Tooltip hitRadius: custom.hitRadius || helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointOptions.hitRadius) }; }, calculatePointY: function(value, index, datasetIndex) { var me = this; var chart = me.chart; var meta = me.getMeta(); var yScale = me.getScaleForId(meta.yAxisID); var sumPos = 0; var sumNeg = 0; var i, ds, dsMeta; if (yScale.options.stacked) { for (i = 0; i < datasetIndex; i++) { ds = chart.data.datasets[i]; dsMeta = chart.getDatasetMeta(i); if (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id && chart.isDatasetVisible(i)) { var stackedRightValue = Number(yScale.getRightValue(ds.data[index])); if (stackedRightValue < 0) { sumNeg += stackedRightValue || 0; } else { sumPos += stackedRightValue || 0; } } } var rightValue = Number(yScale.getRightValue(value)); if (rightValue < 0) { return yScale.getPixelForValue(sumNeg + rightValue); } return yScale.getPixelForValue(sumPos + rightValue); } return yScale.getPixelForValue(value); }, updateBezierControlPoints: function() { var me = this; var meta = me.getMeta(); var area = me.chart.chartArea; var points = (meta.data || []); var i, ilen, point, model, controlPoints; // Only consider points that are drawn in case the spanGaps option is used if (meta.dataset._model.spanGaps) { points = points.filter(function(pt) { return !pt._model.skip; }); } function capControlPoint(pt, min, max) { return Math.max(Math.min(pt, max), min); } if (meta.dataset._model.cubicInterpolationMode === 'monotone') { helpers.splineCurveMonotone(points); } else { for (i = 0, ilen = points.length; i < ilen; ++i) { point = points[i]; model = point._model; controlPoints = helpers.splineCurve( helpers.previousItem(points, i)._model, model, helpers.nextItem(points, i)._model, meta.dataset._model.tension ); model.controlPointPreviousX = controlPoints.previous.x; model.controlPointPreviousY = controlPoints.previous.y; model.controlPointNextX = controlPoints.next.x; model.controlPointNextY = controlPoints.next.y; } } if (me.chart.options.elements.line.capBezierPoints) { for (i = 0, ilen = points.length; i < ilen; ++i) { model = points[i]._model; model.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right); model.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom); model.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right); model.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom); } } }, draw: function() { var me = this; var chart = me.chart; var meta = me.getMeta(); var points = meta.data || []; var area = chart.chartArea; var ilen = points.length; var i = 0; helpers.canvas.clipArea(chart.ctx, area); if (lineEnabled(me.getDataset(), chart.options)) { meta.dataset.draw(); } helpers.canvas.unclipArea(chart.ctx); // Draw the points for (; i < ilen; ++i) { points[i].draw(area); } }, setHoverStyle: function(point) { // Point var dataset = this.chart.data.datasets[point._datasetIndex]; var index = point._index; var custom = point.custom || {}; var model = point._model; model.radius = custom.hoverRadius || helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); model.backgroundColor = custom.hoverBackgroundColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth || helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); }, removeHoverStyle: function(point) { var me = this; var dataset = me.chart.data.datasets[point._datasetIndex]; var index = point._index; var custom = point.custom || {}; var model = point._model; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { dataset.pointRadius = dataset.radius; } model.radius = custom.radius || helpers.valueAtIndexOrDefault(dataset.pointRadius, index, me.chart.options.elements.point.radius); model.backgroundColor = me.getPointBackgroundColor(point, index); model.borderColor = me.getPointBorderColor(point, index); model.borderWidth = me.getPointBorderWidth(point, index); } }); }; },{"25":25,"40":40,"45":45}],19:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('polarArea', { scale: { type: 'radialLinear', angleLines: { display: false }, gridLines: { circular: true }, pointLabels: { display: false }, ticks: { beginAtZero: true } }, // Boolean - Whether to animate the rotation of the chart animation: { animateRotate: true, animateScale: true }, startAngle: -0.5 * Math.PI, legendCallback: function(chart) { var text = []; text.push('
    '); var data = chart.data; var datasets = data.datasets; var labels = data.labels; if (datasets.length) { for (var i = 0; i < datasets[0].data.length; ++i) { text.push('
  • '); if (labels[i]) { text.push(labels[i]); } text.push('
  • '); } } text.push('
'); return text.join(''); }, legend: { labels: { generateLabels: function(chart) { var data = chart.data; if (data.labels.length && data.datasets.length) { return data.labels.map(function(label, i) { var meta = chart.getDatasetMeta(0); var ds = data.datasets[0]; var arc = meta.data[i]; var custom = arc.custom || {}; var valueAtIndexOrDefault = helpers.valueAtIndexOrDefault; var arcOpts = chart.options.elements.arc; var fill = custom.backgroundColor ? custom.backgroundColor : valueAtIndexOrDefault(ds.backgroundColor, i, arcOpts.backgroundColor); var stroke = custom.borderColor ? custom.borderColor : valueAtIndexOrDefault(ds.borderColor, i, arcOpts.borderColor); var bw = custom.borderWidth ? custom.borderWidth : valueAtIndexOrDefault(ds.borderWidth, i, arcOpts.borderWidth); return { text: label, fillStyle: fill, strokeStyle: stroke, lineWidth: bw, hidden: isNaN(ds.data[i]) || meta.data[i].hidden, // Extra data used for toggling the correct item index: i }; }); } return []; } }, onClick: function(e, legendItem) { var index = legendItem.index; var chart = this.chart; var i, ilen, meta; for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { meta = chart.getDatasetMeta(i); meta.data[index].hidden = !meta.data[index].hidden; } chart.update(); } }, // Need to override these to give a nice default tooltips: { callbacks: { title: function() { return ''; }, label: function(item, data) { return data.labels[item.index] + ': ' + item.yLabel; } } } }); module.exports = function(Chart) { Chart.controllers.polarArea = Chart.DatasetController.extend({ dataElementType: elements.Arc, linkScales: helpers.noop, update: function(reset) { var me = this; var chart = me.chart; var chartArea = chart.chartArea; var meta = me.getMeta(); var opts = chart.options; var arcOpts = opts.elements.arc; var minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top); chart.outerRadius = Math.max((minSize - arcOpts.borderWidth / 2) / 2, 0); chart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0); chart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount(); me.outerRadius = chart.outerRadius - (chart.radiusLength * me.index); me.innerRadius = me.outerRadius - chart.radiusLength; meta.count = me.countVisibleElements(); helpers.each(meta.data, function(arc, index) { me.updateElement(arc, index, reset); }); }, updateElement: function(arc, index, reset) { var me = this; var chart = me.chart; var dataset = me.getDataset(); var opts = chart.options; var animationOpts = opts.animation; var scale = chart.scale; var labels = chart.data.labels; var circumference = me.calculateCircumference(dataset.data[index]); var centerX = scale.xCenter; var centerY = scale.yCenter; // If there is NaN data before us, we need to calculate the starting angle correctly. // We could be way more efficient here, but its unlikely that the polar area chart will have a lot of data var visibleCount = 0; var meta = me.getMeta(); for (var i = 0; i < index; ++i) { if (!isNaN(dataset.data[i]) && !meta.data[i].hidden) { ++visibleCount; } } // var negHalfPI = -0.5 * Math.PI; var datasetStartAngle = opts.startAngle; var distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); var startAngle = datasetStartAngle + (circumference * visibleCount); var endAngle = startAngle + (arc.hidden ? 0 : circumference); var resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]); helpers.extend(arc, { // Utility _datasetIndex: me.index, _index: index, _scale: scale, // Desired view properties _model: { x: centerX, y: centerY, innerRadius: 0, outerRadius: reset ? resetRadius : distance, startAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle, endAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle, label: helpers.valueAtIndexOrDefault(labels, index, labels[index]) } }); // Apply border and fill style me.removeHoverStyle(arc); arc.pivot(); }, removeHoverStyle: function(arc) { Chart.DatasetController.prototype.removeHoverStyle.call(this, arc, this.chart.options.elements.arc); }, countVisibleElements: function() { var dataset = this.getDataset(); var meta = this.getMeta(); var count = 0; helpers.each(meta.data, function(element, index) { if (!isNaN(dataset.data[index]) && !element.hidden) { count++; } }); return count; }, calculateCircumference: function(value) { var count = this.getMeta().count; if (count > 0 && !isNaN(value)) { return (2 * Math.PI) / count; } return 0; } }); }; },{"25":25,"40":40,"45":45}],20:[function(require,module,exports){ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('radar', { scale: { type: 'radialLinear' }, elements: { line: { tension: 0 // no bezier in radar } } }); module.exports = function(Chart) { Chart.controllers.radar = Chart.DatasetController.extend({ datasetElementType: elements.Line, dataElementType: elements.Point, linkScales: helpers.noop, update: function(reset) { var me = this; var meta = me.getMeta(); var line = meta.dataset; var points = meta.data; var custom = line.custom || {}; var dataset = me.getDataset(); var lineElementOptions = me.chart.options.elements.line; var scale = me.chart.scale; // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.tension !== undefined) && (dataset.lineTension === undefined)) { dataset.lineTension = dataset.tension; } helpers.extend(meta.dataset, { // Utility _datasetIndex: me.index, _scale: scale, // Data _children: points, _loop: true, // Model _model: { // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, lineElementOptions.tension), backgroundColor: custom.backgroundColor ? custom.backgroundColor : (dataset.backgroundColor || lineElementOptions.backgroundColor), borderWidth: custom.borderWidth ? custom.borderWidth : (dataset.borderWidth || lineElementOptions.borderWidth), borderColor: custom.borderColor ? custom.borderColor : (dataset.borderColor || lineElementOptions.borderColor), fill: custom.fill ? custom.fill : (dataset.fill !== undefined ? dataset.fill : lineElementOptions.fill), borderCapStyle: custom.borderCapStyle ? custom.borderCapStyle : (dataset.borderCapStyle || lineElementOptions.borderCapStyle), borderDash: custom.borderDash ? custom.borderDash : (dataset.borderDash || lineElementOptions.borderDash), borderDashOffset: custom.borderDashOffset ? custom.borderDashOffset : (dataset.borderDashOffset || lineElementOptions.borderDashOffset), borderJoinStyle: custom.borderJoinStyle ? custom.borderJoinStyle : (dataset.borderJoinStyle || lineElementOptions.borderJoinStyle), } }); meta.dataset.pivot(); // Update Points helpers.each(points, function(point, index) { me.updateElement(point, index, reset); }, me); // Update bezier control points me.updateBezierControlPoints(); }, updateElement: function(point, index, reset) { var me = this; var custom = point.custom || {}; var dataset = me.getDataset(); var scale = me.chart.scale; var pointElementOptions = me.chart.options.elements.point; var pointPosition = scale.getPointPositionForValue(index, dataset.data[index]); // Compatibility: If the properties are defined with only the old name, use those values if ((dataset.radius !== undefined) && (dataset.pointRadius === undefined)) { dataset.pointRadius = dataset.radius; } if ((dataset.hitRadius !== undefined) && (dataset.pointHitRadius === undefined)) { dataset.pointHitRadius = dataset.hitRadius; } helpers.extend(point, { // Utility _datasetIndex: me.index, _index: index, _scale: scale, // Desired view properties _model: { x: reset ? scale.xCenter : pointPosition.x, // value not used in dataset scale, but we want a consistent API between scales y: reset ? scale.yCenter : pointPosition.y, // Appearance tension: custom.tension ? custom.tension : helpers.valueOrDefault(dataset.lineTension, me.chart.options.elements.line.tension), radius: custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius), backgroundColor: custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor), borderColor: custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor), borderWidth: custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth), pointStyle: custom.pointStyle ? custom.pointStyle : helpers.valueAtIndexOrDefault(dataset.pointStyle, index, pointElementOptions.pointStyle), // Tooltip hitRadius: custom.hitRadius ? custom.hitRadius : helpers.valueAtIndexOrDefault(dataset.pointHitRadius, index, pointElementOptions.hitRadius) } }); point._model.skip = custom.skip ? custom.skip : (isNaN(point._model.x) || isNaN(point._model.y)); }, updateBezierControlPoints: function() { var chartArea = this.chart.chartArea; var meta = this.getMeta(); helpers.each(meta.data, function(point, index) { var model = point._model; var controlPoints = helpers.splineCurve( helpers.previousItem(meta.data, index, true)._model, model, helpers.nextItem(meta.data, index, true)._model, model.tension ); // Prevent the bezier going outside of the bounds of the graph model.controlPointPreviousX = Math.max(Math.min(controlPoints.previous.x, chartArea.right), chartArea.left); model.controlPointPreviousY = Math.max(Math.min(controlPoints.previous.y, chartArea.bottom), chartArea.top); model.controlPointNextX = Math.max(Math.min(controlPoints.next.x, chartArea.right), chartArea.left); model.controlPointNextY = Math.max(Math.min(controlPoints.next.y, chartArea.bottom), chartArea.top); // Now pivot the point for animation point.pivot(); }); }, setHoverStyle: function(point) { // Point var dataset = this.chart.data.datasets[point._datasetIndex]; var custom = point.custom || {}; var index = point._index; var model = point._model; model.radius = custom.hoverRadius ? custom.hoverRadius : helpers.valueAtIndexOrDefault(dataset.pointHoverRadius, index, this.chart.options.elements.point.hoverRadius); model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBackgroundColor, index, helpers.getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderColor, index, helpers.getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : helpers.valueAtIndexOrDefault(dataset.pointHoverBorderWidth, index, model.borderWidth); }, removeHoverStyle: function(point) { var dataset = this.chart.data.datasets[point._datasetIndex]; var custom = point.custom || {}; var index = point._index; var model = point._model; var pointElementOptions = this.chart.options.elements.point; model.radius = custom.radius ? custom.radius : helpers.valueAtIndexOrDefault(dataset.pointRadius, index, pointElementOptions.radius); model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : helpers.valueAtIndexOrDefault(dataset.pointBackgroundColor, index, pointElementOptions.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : helpers.valueAtIndexOrDefault(dataset.pointBorderColor, index, pointElementOptions.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : helpers.valueAtIndexOrDefault(dataset.pointBorderWidth, index, pointElementOptions.borderWidth); } }); }; },{"25":25,"40":40,"45":45}],21:[function(require,module,exports){ 'use strict'; var defaults = require(25); defaults._set('scatter', { hover: { mode: 'single' }, scales: { xAxes: [{ id: 'x-axis-1', // need an ID so datasets can reference the scale type: 'linear', // scatter should not use a category axis position: 'bottom' }], yAxes: [{ id: 'y-axis-1', type: 'linear', position: 'left' }] }, showLines: false, tooltips: { callbacks: { title: function() { return ''; // doesn't make sense for scatter since data are formatted as a point }, label: function(item) { return '(' + item.xLabel + ', ' + item.yLabel + ')'; } } } }); module.exports = function(Chart) { // Scatter charts use line controllers Chart.controllers.scatter = Chart.controllers.line; }; },{"25":25}],22:[function(require,module,exports){ /* global window: false */ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { animation: { duration: 1000, easing: 'easeOutQuart', onProgress: helpers.noop, onComplete: helpers.noop } }); module.exports = function(Chart) { Chart.Animation = Element.extend({ chart: null, // the animation associated chart instance currentStep: 0, // the current animation step numSteps: 60, // default number of steps easing: '', // the easing to use for this animation render: null, // render function used by the animation service onAnimationProgress: null, // user specified callback to fire on each step of the animation onAnimationComplete: null, // user specified callback to fire when the animation finishes }); Chart.animationService = { frameDuration: 17, animations: [], dropFrames: 0, request: null, /** * @param {Chart} chart - The chart to animate. * @param {Chart.Animation} animation - The animation that we will animate. * @param {Number} duration - The animation duration in ms. * @param {Boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions */ addAnimation: function(chart, animation, duration, lazy) { var animations = this.animations; var i, ilen; animation.chart = chart; if (!lazy) { chart.animating = true; } for (i = 0, ilen = animations.length; i < ilen; ++i) { if (animations[i].chart === chart) { animations[i] = animation; return; } } animations.push(animation); // If there are no animations queued, manually kickstart a digest, for lack of a better word if (animations.length === 1) { this.requestAnimationFrame(); } }, cancelAnimation: function(chart) { var index = helpers.findIndex(this.animations, function(animation) { return animation.chart === chart; }); if (index !== -1) { this.animations.splice(index, 1); chart.animating = false; } }, requestAnimationFrame: function() { var me = this; if (me.request === null) { // Skip animation frame requests until the active one is executed. // This can happen when processing mouse events, e.g. 'mousemove' // and 'mouseout' events will trigger multiple renders. me.request = helpers.requestAnimFrame.call(window, function() { me.request = null; me.startDigest(); }); } }, /** * @private */ startDigest: function() { var me = this; var startTime = Date.now(); var framesToDrop = 0; if (me.dropFrames > 1) { framesToDrop = Math.floor(me.dropFrames); me.dropFrames = me.dropFrames % 1; } me.advance(1 + framesToDrop); var endTime = Date.now(); me.dropFrames += (endTime - startTime) / me.frameDuration; // Do we have more stuff to animate? if (me.animations.length > 0) { me.requestAnimationFrame(); } }, /** * @private */ advance: function(count) { var animations = this.animations; var animation, chart; var i = 0; while (i < animations.length) { animation = animations[i]; chart = animation.chart; animation.currentStep = (animation.currentStep || 0) + count; animation.currentStep = Math.min(animation.currentStep, animation.numSteps); helpers.callback(animation.render, [chart, animation], chart); helpers.callback(animation.onAnimationProgress, [animation], chart); if (animation.currentStep >= animation.numSteps) { helpers.callback(animation.onAnimationComplete, [animation], chart); chart.animating = false; animations.splice(i, 1); } else { ++i; } } } }; /** * Provided for backward compatibility, use Chart.Animation instead * @prop Chart.Animation#animationObject * @deprecated since version 2.6.0 * @todo remove at version 3 */ Object.defineProperty(Chart.Animation.prototype, 'animationObject', { get: function() { return this; } }); /** * Provided for backward compatibility, use Chart.Animation#chart instead * @prop Chart.Animation#chartInstance * @deprecated since version 2.6.0 * @todo remove at version 3 */ Object.defineProperty(Chart.Animation.prototype, 'chartInstance', { get: function() { return this.chart; }, set: function(value) { this.chart = value; } }); }; },{"25":25,"26":26,"45":45}],23:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); var Interaction = require(28); var platform = require(48); module.exports = function(Chart) { var plugins = Chart.plugins; // Create a dictionary of chart types, to allow for extension of existing types Chart.types = {}; // Store a reference to each instance - allowing us to globally resize chart instances on window resize. // Destroy method on the chart will remove the instance of the chart from this reference. Chart.instances = {}; // Controllers available for dataset visualization eg. bar, line, slice, etc. Chart.controllers = {}; /** * Initializes the given config with global and chart default values. */ function initConfig(config) { config = config || {}; // Do NOT use configMerge() for the data object because this method merges arrays // and so would change references to labels and datasets, preventing data updates. var data = config.data = config.data || {}; data.datasets = data.datasets || []; data.labels = data.labels || []; config.options = helpers.configMerge( defaults.global, defaults[config.type], config.options || {}); return config; } /** * Updates the config of the chart * @param chart {Chart} chart to update the options for */ function updateConfig(chart) { var newOptions = chart.options; // Update Scale(s) with options if (newOptions.scale) { chart.scale.options = newOptions.scale; } else if (newOptions.scales) { newOptions.scales.xAxes.concat(newOptions.scales.yAxes).forEach(function(scaleOptions) { chart.scales[scaleOptions.id].options = scaleOptions; }); } // Tooltip chart.tooltip._options = newOptions.tooltips; } function positionIsHorizontal(position) { return position === 'top' || position === 'bottom'; } helpers.extend(Chart.prototype, /** @lends Chart */ { /** * @private */ construct: function(item, config) { var me = this; config = initConfig(config); var context = platform.acquireContext(item, config); var canvas = context && context.canvas; var height = canvas && canvas.height; var width = canvas && canvas.width; me.id = helpers.uid(); me.ctx = context; me.canvas = canvas; me.config = config; me.width = width; me.height = height; me.aspectRatio = height ? width / height : null; me.options = config.options; me._bufferedRender = false; /** * Provided for backward compatibility, Chart and Chart.Controller have been merged, * the "instance" still need to be defined since it might be called from plugins. * @prop Chart#chart * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ me.chart = me; me.controller = me; // chart.chart.controller #inception // Add the chart instance to the global namespace Chart.instances[me.id] = me; // Define alias to the config data: `chart.data === chart.config.data` Object.defineProperty(me, 'data', { get: function() { return me.config.data; }, set: function(value) { me.config.data = value; } }); if (!context || !canvas) { // The given item is not a compatible context2d element, let's return before finalizing // the chart initialization but after setting basic chart / controller properties that // can help to figure out that the chart is not valid (e.g chart.canvas !== null); // https://github.com/chartjs/Chart.js/issues/2807 console.error("Failed to create chart: can't acquire context from the given item"); return; } me.initialize(); me.update(); }, /** * @private */ initialize: function() { var me = this; // Before init plugin notification plugins.notify(me, 'beforeInit'); helpers.retinaScale(me, me.options.devicePixelRatio); me.bindEvents(); if (me.options.responsive) { // Initial resize before chart draws (must be silent to preserve initial animations). me.resize(true); } // Make sure scales have IDs and are built before we build any controllers. me.ensureScalesHaveIDs(); me.buildScales(); me.initToolTip(); // After init plugin notification plugins.notify(me, 'afterInit'); return me; }, clear: function() { helpers.canvas.clear(this); return this; }, stop: function() { // Stops any current animation loop occurring Chart.animationService.cancelAnimation(this); return this; }, resize: function(silent) { var me = this; var options = me.options; var canvas = me.canvas; var aspectRatio = (options.maintainAspectRatio && me.aspectRatio) || null; // the canvas render width and height will be casted to integers so make sure that // the canvas display style uses the same integer values to avoid blurring effect. // Set to 0 instead of canvas.size because the size defaults to 300x150 if the element is collased var newWidth = Math.max(0, Math.floor(helpers.getMaximumWidth(canvas))); var newHeight = Math.max(0, Math.floor(aspectRatio ? newWidth / aspectRatio : helpers.getMaximumHeight(canvas))); if (me.width === newWidth && me.height === newHeight) { return; } canvas.width = me.width = newWidth; canvas.height = me.height = newHeight; canvas.style.width = newWidth + 'px'; canvas.style.height = newHeight + 'px'; helpers.retinaScale(me, options.devicePixelRatio); if (!silent) { // Notify any plugins about the resize var newSize = {width: newWidth, height: newHeight}; plugins.notify(me, 'resize', [newSize]); // Notify of resize if (me.options.onResize) { me.options.onResize(me, newSize); } me.stop(); me.update(me.options.responsiveAnimationDuration); } }, ensureScalesHaveIDs: function() { var options = this.options; var scalesOptions = options.scales || {}; var scaleOptions = options.scale; helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) { xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index); }); helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) { yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index); }); if (scaleOptions) { scaleOptions.id = scaleOptions.id || 'scale'; } }, /** * Builds a map of scale ID to scale object for future lookup. */ buildScales: function() { var me = this; var options = me.options; var scales = me.scales = {}; var items = []; if (options.scales) { items = items.concat( (options.scales.xAxes || []).map(function(xAxisOptions) { return {options: xAxisOptions, dtype: 'category', dposition: 'bottom'}; }), (options.scales.yAxes || []).map(function(yAxisOptions) { return {options: yAxisOptions, dtype: 'linear', dposition: 'left'}; }) ); } if (options.scale) { items.push({ options: options.scale, dtype: 'radialLinear', isDefault: true, dposition: 'chartArea' }); } helpers.each(items, function(item) { var scaleOptions = item.options; var scaleType = helpers.valueOrDefault(scaleOptions.type, item.dtype); var scaleClass = Chart.scaleService.getScaleConstructor(scaleType); if (!scaleClass) { return; } if (positionIsHorizontal(scaleOptions.position) !== positionIsHorizontal(item.dposition)) { scaleOptions.position = item.dposition; } var scale = new scaleClass({ id: scaleOptions.id, options: scaleOptions, ctx: me.ctx, chart: me }); scales[scale.id] = scale; scale.mergeTicksOptions(); // TODO(SB): I think we should be able to remove this custom case (options.scale) // and consider it as a regular scale part of the "scales"" map only! This would // make the logic easier and remove some useless? custom code. if (item.isDefault) { me.scale = scale; } }); Chart.scaleService.addScalesToLayout(this); }, buildOrUpdateControllers: function() { var me = this; var types = []; var newControllers = []; helpers.each(me.data.datasets, function(dataset, datasetIndex) { var meta = me.getDatasetMeta(datasetIndex); var type = dataset.type || me.config.type; if (meta.type && meta.type !== type) { me.destroyDatasetMeta(datasetIndex); meta = me.getDatasetMeta(datasetIndex); } meta.type = type; types.push(meta.type); if (meta.controller) { meta.controller.updateIndex(datasetIndex); } else { var ControllerClass = Chart.controllers[meta.type]; if (ControllerClass === undefined) { throw new Error('"' + meta.type + '" is not a chart type.'); } meta.controller = new ControllerClass(me, datasetIndex); newControllers.push(meta.controller); } }, me); return newControllers; }, /** * Reset the elements of all datasets * @private */ resetElements: function() { var me = this; helpers.each(me.data.datasets, function(dataset, datasetIndex) { me.getDatasetMeta(datasetIndex).controller.reset(); }, me); }, /** * Resets the chart back to it's state before the initial animation */ reset: function() { this.resetElements(); this.tooltip.initialize(); }, update: function(config) { var me = this; if (!config || typeof config !== 'object') { // backwards compatibility config = { duration: config, lazy: arguments[1] }; } updateConfig(me); if (plugins.notify(me, 'beforeUpdate') === false) { return; } // In case the entire data object changed me.tooltip._data = me.data; // Make sure dataset controllers are updated and new controllers are reset var newControllers = me.buildOrUpdateControllers(); // Make sure all dataset controllers have correct meta data counts helpers.each(me.data.datasets, function(dataset, datasetIndex) { me.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements(); }, me); me.updateLayout(); // Can only reset the new controllers after the scales have been updated helpers.each(newControllers, function(controller) { controller.reset(); }); me.updateDatasets(); // Need to reset tooltip in case it is displayed with elements that are removed // after update. me.tooltip.initialize(); // Last active contains items that were previously in the tooltip. // When we reset the tooltip, we need to clear it me.lastActive = []; // Do this before render so that any plugins that need final scale updates can use it plugins.notify(me, 'afterUpdate'); if (me._bufferedRender) { me._bufferedRequest = { duration: config.duration, easing: config.easing, lazy: config.lazy }; } else { me.render(config); } }, /** * Updates the chart layout unless a plugin returns `false` to the `beforeLayout` * hook, in which case, plugins will not be called on `afterLayout`. * @private */ updateLayout: function() { var me = this; if (plugins.notify(me, 'beforeLayout') === false) { return; } Chart.layoutService.update(this, this.width, this.height); /** * Provided for backward compatibility, use `afterLayout` instead. * @method IPlugin#afterScaleUpdate * @deprecated since version 2.5.0 * @todo remove at version 3 * @private */ plugins.notify(me, 'afterScaleUpdate'); plugins.notify(me, 'afterLayout'); }, /** * Updates all datasets unless a plugin returns `false` to the `beforeDatasetsUpdate` * hook, in which case, plugins will not be called on `afterDatasetsUpdate`. * @private */ updateDatasets: function() { var me = this; if (plugins.notify(me, 'beforeDatasetsUpdate') === false) { return; } for (var i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { me.updateDataset(i); } plugins.notify(me, 'afterDatasetsUpdate'); }, /** * Updates dataset at index unless a plugin returns `false` to the `beforeDatasetUpdate` * hook, in which case, plugins will not be called on `afterDatasetUpdate`. * @private */ updateDataset: function(index) { var me = this; var meta = me.getDatasetMeta(index); var args = { meta: meta, index: index }; if (plugins.notify(me, 'beforeDatasetUpdate', [args]) === false) { return; } meta.controller.update(); plugins.notify(me, 'afterDatasetUpdate', [args]); }, render: function(config) { var me = this; if (!config || typeof config !== 'object') { // backwards compatibility config = { duration: config, lazy: arguments[1] }; } var duration = config.duration; var lazy = config.lazy; if (plugins.notify(me, 'beforeRender') === false) { return; } var animationOptions = me.options.animation; var onComplete = function(animation) { plugins.notify(me, 'afterRender'); helpers.callback(animationOptions && animationOptions.onComplete, [animation], me); }; if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) { var animation = new Chart.Animation({ numSteps: (duration || animationOptions.duration) / 16.66, // 60 fps easing: config.easing || animationOptions.easing, render: function(chart, animationObject) { var easingFunction = helpers.easing.effects[animationObject.easing]; var currentStep = animationObject.currentStep; var stepDecimal = currentStep / animationObject.numSteps; chart.draw(easingFunction(stepDecimal), stepDecimal, currentStep); }, onAnimationProgress: animationOptions.onProgress, onAnimationComplete: onComplete }); Chart.animationService.addAnimation(me, animation, duration, lazy); } else { me.draw(); // See https://github.com/chartjs/Chart.js/issues/3781 onComplete(new Chart.Animation({numSteps: 0, chart: me})); } return me; }, draw: function(easingValue) { var me = this; me.clear(); if (helpers.isNullOrUndef(easingValue)) { easingValue = 1; } me.transition(easingValue); if (plugins.notify(me, 'beforeDraw', [easingValue]) === false) { return; } // Draw all the scales helpers.each(me.boxes, function(box) { box.draw(me.chartArea); }, me); if (me.scale) { me.scale.draw(); } me.drawDatasets(easingValue); me._drawTooltip(easingValue); plugins.notify(me, 'afterDraw', [easingValue]); }, /** * @private */ transition: function(easingValue) { var me = this; for (var i = 0, ilen = (me.data.datasets || []).length; i < ilen; ++i) { if (me.isDatasetVisible(i)) { me.getDatasetMeta(i).controller.transition(easingValue); } } me.tooltip.transition(easingValue); }, /** * Draws all datasets unless a plugin returns `false` to the `beforeDatasetsDraw` * hook, in which case, plugins will not be called on `afterDatasetsDraw`. * @private */ drawDatasets: function(easingValue) { var me = this; if (plugins.notify(me, 'beforeDatasetsDraw', [easingValue]) === false) { return; } // Draw datasets reversed to support proper line stacking for (var i = (me.data.datasets || []).length - 1; i >= 0; --i) { if (me.isDatasetVisible(i)) { me.drawDataset(i, easingValue); } } plugins.notify(me, 'afterDatasetsDraw', [easingValue]); }, /** * Draws dataset at index unless a plugin returns `false` to the `beforeDatasetDraw` * hook, in which case, plugins will not be called on `afterDatasetDraw`. * @private */ drawDataset: function(index, easingValue) { var me = this; var meta = me.getDatasetMeta(index); var args = { meta: meta, index: index, easingValue: easingValue }; if (plugins.notify(me, 'beforeDatasetDraw', [args]) === false) { return; } meta.controller.draw(easingValue); plugins.notify(me, 'afterDatasetDraw', [args]); }, /** * Draws tooltip unless a plugin returns `false` to the `beforeTooltipDraw` * hook, in which case, plugins will not be called on `afterTooltipDraw`. * @private */ _drawTooltip: function(easingValue) { var me = this; var tooltip = me.tooltip; var args = { tooltip: tooltip, easingValue: easingValue }; if (plugins.notify(me, 'beforeTooltipDraw', [args]) === false) { return; } tooltip.draw(); plugins.notify(me, 'afterTooltipDraw', [args]); }, // Get the single element that was clicked on // @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw getElementAtEvent: function(e) { return Interaction.modes.single(this, e); }, getElementsAtEvent: function(e) { return Interaction.modes.label(this, e, {intersect: true}); }, getElementsAtXAxis: function(e) { return Interaction.modes['x-axis'](this, e, {intersect: true}); }, getElementsAtEventForMode: function(e, mode, options) { var method = Interaction.modes[mode]; if (typeof method === 'function') { return method(this, e, options); } return []; }, getDatasetAtEvent: function(e) { return Interaction.modes.dataset(this, e, {intersect: true}); }, getDatasetMeta: function(datasetIndex) { var me = this; var dataset = me.data.datasets[datasetIndex]; if (!dataset._meta) { dataset._meta = {}; } var meta = dataset._meta[me.id]; if (!meta) { meta = dataset._meta[me.id] = { type: null, data: [], dataset: null, controller: null, hidden: null, // See isDatasetVisible() comment xAxisID: null, yAxisID: null }; } return meta; }, getVisibleDatasetCount: function() { var count = 0; for (var i = 0, ilen = this.data.datasets.length; i < ilen; ++i) { if (this.isDatasetVisible(i)) { count++; } } return count; }, isDatasetVisible: function(datasetIndex) { var meta = this.getDatasetMeta(datasetIndex); // meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false, // the dataset.hidden value is ignored, else if null, the dataset hidden state is returned. return typeof meta.hidden === 'boolean' ? !meta.hidden : !this.data.datasets[datasetIndex].hidden; }, generateLegend: function() { return this.options.legendCallback(this); }, /** * @private */ destroyDatasetMeta: function(datasetIndex) { var id = this.id; var dataset = this.data.datasets[datasetIndex]; var meta = dataset._meta && dataset._meta[id]; if (meta) { meta.controller.destroy(); delete dataset._meta[id]; } }, destroy: function() { var me = this; var canvas = me.canvas; var i, ilen; me.stop(); // dataset controllers need to cleanup associated data for (i = 0, ilen = me.data.datasets.length; i < ilen; ++i) { me.destroyDatasetMeta(i); } if (canvas) { me.unbindEvents(); helpers.canvas.clear(me); platform.releaseContext(me.ctx); me.canvas = null; me.ctx = null; } plugins.notify(me, 'destroy'); delete Chart.instances[me.id]; }, toBase64Image: function() { return this.canvas.toDataURL.apply(this.canvas, arguments); }, initToolTip: function() { var me = this; me.tooltip = new Chart.Tooltip({ _chart: me, _chartInstance: me, // deprecated, backward compatibility _data: me.data, _options: me.options.tooltips }, me); }, /** * @private */ bindEvents: function() { var me = this; var listeners = me._listeners = {}; var listener = function() { me.eventHandler.apply(me, arguments); }; helpers.each(me.options.events, function(type) { platform.addEventListener(me, type, listener); listeners[type] = listener; }); // Elements used to detect size change should not be injected for non responsive charts. // See https://github.com/chartjs/Chart.js/issues/2210 if (me.options.responsive) { listener = function() { me.resize(); }; platform.addEventListener(me, 'resize', listener); listeners.resize = listener; } }, /** * @private */ unbindEvents: function() { var me = this; var listeners = me._listeners; if (!listeners) { return; } delete me._listeners; helpers.each(listeners, function(listener, type) { platform.removeEventListener(me, type, listener); }); }, updateHoverStyle: function(elements, mode, enabled) { var method = enabled ? 'setHoverStyle' : 'removeHoverStyle'; var element, i, ilen; for (i = 0, ilen = elements.length; i < ilen; ++i) { element = elements[i]; if (element) { this.getDatasetMeta(element._datasetIndex).controller[method](element); } } }, /** * @private */ eventHandler: function(e) { var me = this; var tooltip = me.tooltip; if (plugins.notify(me, 'beforeEvent', [e]) === false) { return; } // Buffer any update calls so that renders do not occur me._bufferedRender = true; me._bufferedRequest = null; var changed = me.handleEvent(e); changed |= tooltip && tooltip.handleEvent(e); plugins.notify(me, 'afterEvent', [e]); var bufferedRequest = me._bufferedRequest; if (bufferedRequest) { // If we have an update that was triggered, we need to do a normal render me.render(bufferedRequest); } else if (changed && !me.animating) { // If entering, leaving, or changing elements, animate the change via pivot me.stop(); // We only need to render at this point. Updating will cause scales to be // recomputed generating flicker & using more memory than necessary. me.render(me.options.hover.animationDuration, true); } me._bufferedRender = false; me._bufferedRequest = null; return me; }, /** * Handle an event * @private * @param {IEvent} event the event to handle * @return {Boolean} true if the chart needs to re-render */ handleEvent: function(e) { var me = this; var options = me.options || {}; var hoverOptions = options.hover; var changed = false; me.lastActive = me.lastActive || []; // Find Active Elements for hover and tooltips if (e.type === 'mouseout') { me.active = []; } else { me.active = me.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions); } // Invoke onHover hook // Need to call with native event here to not break backwards compatibility helpers.callback(options.onHover || options.hover.onHover, [e.native, me.active], me); if (e.type === 'mouseup' || e.type === 'click') { if (options.onClick) { // Use e.native here for backwards compatibility options.onClick.call(me, e.native, me.active); } } // Remove styling for last active (even if it may still be active) if (me.lastActive.length) { me.updateHoverStyle(me.lastActive, hoverOptions.mode, false); } // Built in hover styling if (me.active.length && hoverOptions.mode) { me.updateHoverStyle(me.active, hoverOptions.mode, true); } changed = !helpers.arrayEquals(me.active, me.lastActive); // Remember Last Actives me.lastActive = me.active; return changed; } }); /** * Provided for backward compatibility, use Chart instead. * @class Chart.Controller * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ Chart.Controller = Chart; }; },{"25":25,"28":28,"45":45,"48":48}],24:[function(require,module,exports){ 'use strict'; var helpers = require(45); module.exports = function(Chart) { var arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift']; /** * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice', * 'unshift') and notify the listener AFTER the array has been altered. Listeners are * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments. */ function listenArrayEvents(array, listener) { if (array._chartjs) { array._chartjs.listeners.push(listener); return; } Object.defineProperty(array, '_chartjs', { configurable: true, enumerable: false, value: { listeners: [listener] } }); arrayEvents.forEach(function(key) { var method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1); var base = array[key]; Object.defineProperty(array, key, { configurable: true, enumerable: false, value: function() { var args = Array.prototype.slice.call(arguments); var res = base.apply(this, args); helpers.each(array._chartjs.listeners, function(object) { if (typeof object[method] === 'function') { object[method].apply(object, args); } }); return res; } }); }); } /** * Removes the given array event listener and cleanup extra attached properties (such as * the _chartjs stub and overridden methods) if array doesn't have any more listeners. */ function unlistenArrayEvents(array, listener) { var stub = array._chartjs; if (!stub) { return; } var listeners = stub.listeners; var index = listeners.indexOf(listener); if (index !== -1) { listeners.splice(index, 1); } if (listeners.length > 0) { return; } arrayEvents.forEach(function(key) { delete array[key]; }); delete array._chartjs; } // Base class for all dataset controllers (line, bar, etc) Chart.DatasetController = function(chart, datasetIndex) { this.initialize(chart, datasetIndex); }; helpers.extend(Chart.DatasetController.prototype, { /** * Element type used to generate a meta dataset (e.g. Chart.element.Line). * @type {Chart.core.element} */ datasetElementType: null, /** * Element type used to generate a meta data (e.g. Chart.element.Point). * @type {Chart.core.element} */ dataElementType: null, initialize: function(chart, datasetIndex) { var me = this; me.chart = chart; me.index = datasetIndex; me.linkScales(); me.addElements(); }, updateIndex: function(datasetIndex) { this.index = datasetIndex; }, linkScales: function() { var me = this; var meta = me.getMeta(); var dataset = me.getDataset(); if (meta.xAxisID === null) { meta.xAxisID = dataset.xAxisID || me.chart.options.scales.xAxes[0].id; } if (meta.yAxisID === null) { meta.yAxisID = dataset.yAxisID || me.chart.options.scales.yAxes[0].id; } }, getDataset: function() { return this.chart.data.datasets[this.index]; }, getMeta: function() { return this.chart.getDatasetMeta(this.index); }, getScaleForId: function(scaleID) { return this.chart.scales[scaleID]; }, reset: function() { this.update(true); }, /** * @private */ destroy: function() { if (this._data) { unlistenArrayEvents(this._data, this); } }, createMetaDataset: function() { var me = this; var type = me.datasetElementType; return type && new type({ _chart: me.chart, _datasetIndex: me.index }); }, createMetaData: function(index) { var me = this; var type = me.dataElementType; return type && new type({ _chart: me.chart, _datasetIndex: me.index, _index: index }); }, addElements: function() { var me = this; var meta = me.getMeta(); var data = me.getDataset().data || []; var metaData = meta.data; var i, ilen; for (i = 0, ilen = data.length; i < ilen; ++i) { metaData[i] = metaData[i] || me.createMetaData(i); } meta.dataset = meta.dataset || me.createMetaDataset(); }, addElementAndReset: function(index) { var element = this.createMetaData(index); this.getMeta().data.splice(index, 0, element); this.updateElement(element, index, true); }, buildOrUpdateElements: function() { var me = this; var dataset = me.getDataset(); var data = dataset.data || (dataset.data = []); // In order to correctly handle data addition/deletion animation (an thus simulate // real-time charts), we need to monitor these data modifications and synchronize // the internal meta data accordingly. if (me._data !== data) { if (me._data) { // This case happens when the user replaced the data array instance. unlistenArrayEvents(me._data, me); } listenArrayEvents(data, me); me._data = data; } // Re-sync meta data in case the user replaced the data array or if we missed // any updates and so make sure that we handle number of datapoints changing. me.resyncElements(); }, update: helpers.noop, transition: function(easingValue) { var meta = this.getMeta(); var elements = meta.data || []; var ilen = elements.length; var i = 0; for (; i < ilen; ++i) { elements[i].transition(easingValue); } if (meta.dataset) { meta.dataset.transition(easingValue); } }, draw: function() { var meta = this.getMeta(); var elements = meta.data || []; var ilen = elements.length; var i = 0; if (meta.dataset) { meta.dataset.draw(); } for (; i < ilen; ++i) { elements[i].draw(); } }, removeHoverStyle: function(element, elementOpts) { var dataset = this.chart.data.datasets[element._datasetIndex]; var index = element._index; var custom = element.custom || {}; var valueOrDefault = helpers.valueAtIndexOrDefault; var model = element._model; model.backgroundColor = custom.backgroundColor ? custom.backgroundColor : valueOrDefault(dataset.backgroundColor, index, elementOpts.backgroundColor); model.borderColor = custom.borderColor ? custom.borderColor : valueOrDefault(dataset.borderColor, index, elementOpts.borderColor); model.borderWidth = custom.borderWidth ? custom.borderWidth : valueOrDefault(dataset.borderWidth, index, elementOpts.borderWidth); }, setHoverStyle: function(element) { var dataset = this.chart.data.datasets[element._datasetIndex]; var index = element._index; var custom = element.custom || {}; var valueOrDefault = helpers.valueAtIndexOrDefault; var getHoverColor = helpers.getHoverColor; var model = element._model; model.backgroundColor = custom.hoverBackgroundColor ? custom.hoverBackgroundColor : valueOrDefault(dataset.hoverBackgroundColor, index, getHoverColor(model.backgroundColor)); model.borderColor = custom.hoverBorderColor ? custom.hoverBorderColor : valueOrDefault(dataset.hoverBorderColor, index, getHoverColor(model.borderColor)); model.borderWidth = custom.hoverBorderWidth ? custom.hoverBorderWidth : valueOrDefault(dataset.hoverBorderWidth, index, model.borderWidth); }, /** * @private */ resyncElements: function() { var me = this; var meta = me.getMeta(); var data = me.getDataset().data; var numMeta = meta.data.length; var numData = data.length; if (numData < numMeta) { meta.data.splice(numData, numMeta - numData); } else if (numData > numMeta) { me.insertElements(numMeta, numData - numMeta); } }, /** * @private */ insertElements: function(start, count) { for (var i = 0; i < count; ++i) { this.addElementAndReset(start + i); } }, /** * @private */ onDataPush: function() { this.insertElements(this.getDataset().data.length - 1, arguments.length); }, /** * @private */ onDataPop: function() { this.getMeta().data.pop(); }, /** * @private */ onDataShift: function() { this.getMeta().data.shift(); }, /** * @private */ onDataSplice: function(start, count) { this.getMeta().data.splice(start, count); this.insertElements(start, arguments.length - 2); }, /** * @private */ onDataUnshift: function() { this.insertElements(0, arguments.length); } }); Chart.DatasetController.extend = helpers.inherits; }; },{"45":45}],25:[function(require,module,exports){ 'use strict'; var helpers = require(45); module.exports = { /** * @private */ _set: function(scope, values) { return helpers.merge(this[scope] || (this[scope] = {}), values); } }; },{"45":45}],26:[function(require,module,exports){ 'use strict'; var color = require(3); var helpers = require(45); function interpolate(start, view, model, ease) { var keys = Object.keys(model); var i, ilen, key, actual, origin, target, type, c0, c1; for (i = 0, ilen = keys.length; i < ilen; ++i) { key = keys[i]; target = model[key]; // if a value is added to the model after pivot() has been called, the view // doesn't contain it, so let's initialize the view to the target value. if (!view.hasOwnProperty(key)) { view[key] = target; } actual = view[key]; if (actual === target || key[0] === '_') { continue; } if (!start.hasOwnProperty(key)) { start[key] = actual; } origin = start[key]; type = typeof target; if (type === typeof origin) { if (type === 'string') { c0 = color(origin); if (c0.valid) { c1 = color(target); if (c1.valid) { view[key] = c1.mix(c0, ease).rgbString(); continue; } } } else if (type === 'number' && isFinite(origin) && isFinite(target)) { view[key] = origin + (target - origin) * ease; continue; } } view[key] = target; } } var Element = function(configuration) { helpers.extend(this, configuration); this.initialize.apply(this, arguments); }; helpers.extend(Element.prototype, { initialize: function() { this.hidden = false; }, pivot: function() { var me = this; if (!me._view) { me._view = helpers.clone(me._model); } me._start = {}; return me; }, transition: function(ease) { var me = this; var model = me._model; var start = me._start; var view = me._view; // No animation -> No Transition if (!model || ease === 1) { me._view = model; me._start = null; return me; } if (!view) { view = me._view = {}; } if (!start) { start = me._start = {}; } interpolate(start, view, model, ease); return me; }, tooltipPosition: function() { return { x: this._model.x, y: this._model.y }; }, hasValue: function() { return helpers.isNumber(this._model.x) && helpers.isNumber(this._model.y); } }); Element.extend = helpers.inherits; module.exports = Element; },{"3":3,"45":45}],27:[function(require,module,exports){ /* global window: false */ /* global document: false */ 'use strict'; var color = require(3); var defaults = require(25); var helpers = require(45); module.exports = function(Chart) { // -- Basic js utility methods helpers.configMerge = function(/* objects ... */) { return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { merger: function(key, target, source, options) { var tval = target[key] || {}; var sval = source[key]; if (key === 'scales') { // scale config merging is complex. Add our own function here for that target[key] = helpers.scaleMerge(tval, sval); } else if (key === 'scale') { // used in polar area & radar charts since there is only one scale target[key] = helpers.merge(tval, [Chart.scaleService.getScaleDefaults(sval.type), sval]); } else { helpers._merger(key, target, source, options); } } }); }; helpers.scaleMerge = function(/* objects ... */) { return helpers.merge(helpers.clone(arguments[0]), [].slice.call(arguments, 1), { merger: function(key, target, source, options) { if (key === 'xAxes' || key === 'yAxes') { var slen = source[key].length; var i, type, scale; if (!target[key]) { target[key] = []; } for (i = 0; i < slen; ++i) { scale = source[key][i]; type = helpers.valueOrDefault(scale.type, key === 'xAxes' ? 'category' : 'linear'); if (i >= target[key].length) { target[key].push({}); } if (!target[key][i].type || (scale.type && scale.type !== target[key][i].type)) { // new/untyped scale or type changed: let's apply the new defaults // then merge source scale to correctly overwrite the defaults. helpers.merge(target[key][i], [Chart.scaleService.getScaleDefaults(type), scale]); } else { // scales type are the same helpers.merge(target[key][i], scale); } } } else { helpers._merger(key, target, source, options); } } }); }; helpers.where = function(collection, filterCallback) { if (helpers.isArray(collection) && Array.prototype.filter) { return collection.filter(filterCallback); } var filtered = []; helpers.each(collection, function(item) { if (filterCallback(item)) { filtered.push(item); } }); return filtered; }; helpers.findIndex = Array.prototype.findIndex ? function(array, callback, scope) { return array.findIndex(callback, scope); } : function(array, callback, scope) { scope = scope === undefined ? array : scope; for (var i = 0, ilen = array.length; i < ilen; ++i) { if (callback.call(scope, array[i], i, array)) { return i; } } return -1; }; helpers.findNextWhere = function(arrayToSearch, filterCallback, startIndex) { // Default to start of the array if (helpers.isNullOrUndef(startIndex)) { startIndex = -1; } for (var i = startIndex + 1; i < arrayToSearch.length; i++) { var currentItem = arrayToSearch[i]; if (filterCallback(currentItem)) { return currentItem; } } }; helpers.findPreviousWhere = function(arrayToSearch, filterCallback, startIndex) { // Default to end of the array if (helpers.isNullOrUndef(startIndex)) { startIndex = arrayToSearch.length; } for (var i = startIndex - 1; i >= 0; i--) { var currentItem = arrayToSearch[i]; if (filterCallback(currentItem)) { return currentItem; } } }; // -- Math methods helpers.isNumber = function(n) { return !isNaN(parseFloat(n)) && isFinite(n); }; helpers.almostEquals = function(x, y, epsilon) { return Math.abs(x - y) < epsilon; }; helpers.almostWhole = function(x, epsilon) { var rounded = Math.round(x); return (((rounded - epsilon) < x) && ((rounded + epsilon) > x)); }; helpers.max = function(array) { return array.reduce(function(max, value) { if (!isNaN(value)) { return Math.max(max, value); } return max; }, Number.NEGATIVE_INFINITY); }; helpers.min = function(array) { return array.reduce(function(min, value) { if (!isNaN(value)) { return Math.min(min, value); } return min; }, Number.POSITIVE_INFINITY); }; helpers.sign = Math.sign ? function(x) { return Math.sign(x); } : function(x) { x = +x; // convert to a number if (x === 0 || isNaN(x)) { return x; } return x > 0 ? 1 : -1; }; helpers.log10 = Math.log10 ? function(x) { return Math.log10(x); } : function(x) { return Math.log(x) / Math.LN10; }; helpers.toRadians = function(degrees) { return degrees * (Math.PI / 180); }; helpers.toDegrees = function(radians) { return radians * (180 / Math.PI); }; // Gets the angle from vertical upright to the point about a centre. helpers.getAngleFromPoint = function(centrePoint, anglePoint) { var distanceFromXCenter = anglePoint.x - centrePoint.x; var distanceFromYCenter = anglePoint.y - centrePoint.y; var radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter); var angle = Math.atan2(distanceFromYCenter, distanceFromXCenter); if (angle < (-0.5 * Math.PI)) { angle += 2.0 * Math.PI; // make sure the returned angle is in the range of (-PI/2, 3PI/2] } return { angle: angle, distance: radialDistanceFromCenter }; }; helpers.distanceBetweenPoints = function(pt1, pt2) { return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2)); }; helpers.aliasPixel = function(pixelWidth) { return (pixelWidth % 2 === 0) ? 0 : 0.5; }; helpers.splineCurve = function(firstPoint, middlePoint, afterPoint, t) { // Props to Rob Spencer at scaled innovation for his post on splining between points // http://scaledinnovation.com/analytics/splines/aboutSplines.html // This function must also respect "skipped" points var previous = firstPoint.skip ? middlePoint : firstPoint; var current = middlePoint; var next = afterPoint.skip ? middlePoint : afterPoint; var d01 = Math.sqrt(Math.pow(current.x - previous.x, 2) + Math.pow(current.y - previous.y, 2)); var d12 = Math.sqrt(Math.pow(next.x - current.x, 2) + Math.pow(next.y - current.y, 2)); var s01 = d01 / (d01 + d12); var s12 = d12 / (d01 + d12); // If all points are the same, s01 & s02 will be inf s01 = isNaN(s01) ? 0 : s01; s12 = isNaN(s12) ? 0 : s12; var fa = t * s01; // scaling factor for triangle Ta var fb = t * s12; return { previous: { x: current.x - fa * (next.x - previous.x), y: current.y - fa * (next.y - previous.y) }, next: { x: current.x + fb * (next.x - previous.x), y: current.y + fb * (next.y - previous.y) } }; }; helpers.EPSILON = Number.EPSILON || 1e-14; helpers.splineCurveMonotone = function(points) { // This function calculates Bézier control points in a similar way than |splineCurve|, // but preserves monotonicity of the provided data and ensures no local extremums are added // between the dataset discrete points due to the interpolation. // See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation var pointsWithTangents = (points || []).map(function(point) { return { model: point._model, deltaK: 0, mK: 0 }; }); // Calculate slopes (deltaK) and initialize tangents (mK) var pointsLen = pointsWithTangents.length; var i, pointBefore, pointCurrent, pointAfter; for (i = 0; i < pointsLen; ++i) { pointCurrent = pointsWithTangents[i]; if (pointCurrent.model.skip) { continue; } pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; if (pointAfter && !pointAfter.model.skip) { var slopeDeltaX = (pointAfter.model.x - pointCurrent.model.x); // In the case of two points that appear at the same x pixel, slopeDeltaX is 0 pointCurrent.deltaK = slopeDeltaX !== 0 ? (pointAfter.model.y - pointCurrent.model.y) / slopeDeltaX : 0; } if (!pointBefore || pointBefore.model.skip) { pointCurrent.mK = pointCurrent.deltaK; } else if (!pointAfter || pointAfter.model.skip) { pointCurrent.mK = pointBefore.deltaK; } else if (this.sign(pointBefore.deltaK) !== this.sign(pointCurrent.deltaK)) { pointCurrent.mK = 0; } else { pointCurrent.mK = (pointBefore.deltaK + pointCurrent.deltaK) / 2; } } // Adjust tangents to ensure monotonic properties var alphaK, betaK, tauK, squaredMagnitude; for (i = 0; i < pointsLen - 1; ++i) { pointCurrent = pointsWithTangents[i]; pointAfter = pointsWithTangents[i + 1]; if (pointCurrent.model.skip || pointAfter.model.skip) { continue; } if (helpers.almostEquals(pointCurrent.deltaK, 0, this.EPSILON)) { pointCurrent.mK = pointAfter.mK = 0; continue; } alphaK = pointCurrent.mK / pointCurrent.deltaK; betaK = pointAfter.mK / pointCurrent.deltaK; squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2); if (squaredMagnitude <= 9) { continue; } tauK = 3 / Math.sqrt(squaredMagnitude); pointCurrent.mK = alphaK * tauK * pointCurrent.deltaK; pointAfter.mK = betaK * tauK * pointCurrent.deltaK; } // Compute control points var deltaX; for (i = 0; i < pointsLen; ++i) { pointCurrent = pointsWithTangents[i]; if (pointCurrent.model.skip) { continue; } pointBefore = i > 0 ? pointsWithTangents[i - 1] : null; pointAfter = i < pointsLen - 1 ? pointsWithTangents[i + 1] : null; if (pointBefore && !pointBefore.model.skip) { deltaX = (pointCurrent.model.x - pointBefore.model.x) / 3; pointCurrent.model.controlPointPreviousX = pointCurrent.model.x - deltaX; pointCurrent.model.controlPointPreviousY = pointCurrent.model.y - deltaX * pointCurrent.mK; } if (pointAfter && !pointAfter.model.skip) { deltaX = (pointAfter.model.x - pointCurrent.model.x) / 3; pointCurrent.model.controlPointNextX = pointCurrent.model.x + deltaX; pointCurrent.model.controlPointNextY = pointCurrent.model.y + deltaX * pointCurrent.mK; } } }; helpers.nextItem = function(collection, index, loop) { if (loop) { return index >= collection.length - 1 ? collection[0] : collection[index + 1]; } return index >= collection.length - 1 ? collection[collection.length - 1] : collection[index + 1]; }; helpers.previousItem = function(collection, index, loop) { if (loop) { return index <= 0 ? collection[collection.length - 1] : collection[index - 1]; } return index <= 0 ? collection[0] : collection[index - 1]; }; // Implementation of the nice number algorithm used in determining where axis labels will go helpers.niceNum = function(range, round) { var exponent = Math.floor(helpers.log10(range)); var fraction = range / Math.pow(10, exponent); var niceFraction; if (round) { if (fraction < 1.5) { niceFraction = 1; } else if (fraction < 3) { niceFraction = 2; } else if (fraction < 7) { niceFraction = 5; } else { niceFraction = 10; } } else if (fraction <= 1.0) { niceFraction = 1; } else if (fraction <= 2) { niceFraction = 2; } else if (fraction <= 5) { niceFraction = 5; } else { niceFraction = 10; } return niceFraction * Math.pow(10, exponent); }; // Request animation polyfill - http://www.paulirish.com/2011/requestanimationframe-for-smart-animating/ helpers.requestAnimFrame = (function() { if (typeof window === 'undefined') { return function(callback) { callback(); }; } return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { return window.setTimeout(callback, 1000 / 60); }; }()); // -- DOM methods helpers.getRelativePosition = function(evt, chart) { var mouseX, mouseY; var e = evt.originalEvent || evt; var canvas = evt.currentTarget || evt.srcElement; var boundingRect = canvas.getBoundingClientRect(); var touches = e.touches; if (touches && touches.length > 0) { mouseX = touches[0].clientX; mouseY = touches[0].clientY; } else { mouseX = e.clientX; mouseY = e.clientY; } // Scale mouse coordinates into canvas coordinates // by following the pattern laid out by 'jerryj' in the comments of // http://www.html5canvastutorials.com/advanced/html5-canvas-mouse-coordinates/ var paddingLeft = parseFloat(helpers.getStyle(canvas, 'padding-left')); var paddingTop = parseFloat(helpers.getStyle(canvas, 'padding-top')); var paddingRight = parseFloat(helpers.getStyle(canvas, 'padding-right')); var paddingBottom = parseFloat(helpers.getStyle(canvas, 'padding-bottom')); var width = boundingRect.right - boundingRect.left - paddingLeft - paddingRight; var height = boundingRect.bottom - boundingRect.top - paddingTop - paddingBottom; // We divide by the current device pixel ratio, because the canvas is scaled up by that amount in each direction. However // the backend model is in unscaled coordinates. Since we are going to deal with our model coordinates, we go back here mouseX = Math.round((mouseX - boundingRect.left - paddingLeft) / (width) * canvas.width / chart.currentDevicePixelRatio); mouseY = Math.round((mouseY - boundingRect.top - paddingTop) / (height) * canvas.height / chart.currentDevicePixelRatio); return { x: mouseX, y: mouseY }; }; // Private helper function to convert max-width/max-height values that may be percentages into a number function parseMaxStyle(styleValue, node, parentProperty) { var valueInPixels; if (typeof styleValue === 'string') { valueInPixels = parseInt(styleValue, 10); if (styleValue.indexOf('%') !== -1) { // percentage * size in dimension valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty]; } } else { valueInPixels = styleValue; } return valueInPixels; } /** * Returns if the given value contains an effective constraint. * @private */ function isConstrainedValue(value) { return value !== undefined && value !== null && value !== 'none'; } // Private helper to get a constraint dimension // @param domNode : the node to check the constraint on // @param maxStyle : the style that defines the maximum for the direction we are using (maxWidth / maxHeight) // @param percentageProperty : property of parent to use when calculating width as a percentage // @see http://www.nathanaeljones.com/blog/2013/reading-max-width-cross-browser function getConstraintDimension(domNode, maxStyle, percentageProperty) { var view = document.defaultView; var parentNode = domNode.parentNode; var constrainedNode = view.getComputedStyle(domNode)[maxStyle]; var constrainedContainer = view.getComputedStyle(parentNode)[maxStyle]; var hasCNode = isConstrainedValue(constrainedNode); var hasCContainer = isConstrainedValue(constrainedContainer); var infinity = Number.POSITIVE_INFINITY; if (hasCNode || hasCContainer) { return Math.min( hasCNode ? parseMaxStyle(constrainedNode, domNode, percentageProperty) : infinity, hasCContainer ? parseMaxStyle(constrainedContainer, parentNode, percentageProperty) : infinity); } return 'none'; } // returns Number or undefined if no constraint helpers.getConstraintWidth = function(domNode) { return getConstraintDimension(domNode, 'max-width', 'clientWidth'); }; // returns Number or undefined if no constraint helpers.getConstraintHeight = function(domNode) { return getConstraintDimension(domNode, 'max-height', 'clientHeight'); }; helpers.getMaximumWidth = function(domNode) { var container = domNode.parentNode; if (!container) { return domNode.clientWidth; } var paddingLeft = parseInt(helpers.getStyle(container, 'padding-left'), 10); var paddingRight = parseInt(helpers.getStyle(container, 'padding-right'), 10); var w = container.clientWidth - paddingLeft - paddingRight; var cw = helpers.getConstraintWidth(domNode); return isNaN(cw) ? w : Math.min(w, cw); }; helpers.getMaximumHeight = function(domNode) { var container = domNode.parentNode; if (!container) { return domNode.clientHeight; } var paddingTop = parseInt(helpers.getStyle(container, 'padding-top'), 10); var paddingBottom = parseInt(helpers.getStyle(container, 'padding-bottom'), 10); var h = container.clientHeight - paddingTop - paddingBottom; var ch = helpers.getConstraintHeight(domNode); return isNaN(ch) ? h : Math.min(h, ch); }; helpers.getStyle = function(el, property) { return el.currentStyle ? el.currentStyle[property] : document.defaultView.getComputedStyle(el, null).getPropertyValue(property); }; helpers.retinaScale = function(chart, forceRatio) { var pixelRatio = chart.currentDevicePixelRatio = forceRatio || window.devicePixelRatio || 1; if (pixelRatio === 1) { return; } var canvas = chart.canvas; var height = chart.height; var width = chart.width; canvas.height = height * pixelRatio; canvas.width = width * pixelRatio; chart.ctx.scale(pixelRatio, pixelRatio); // If no style has been set on the canvas, the render size is used as display size, // making the chart visually bigger, so let's enforce it to the "correct" values. // See https://github.com/chartjs/Chart.js/issues/3575 canvas.style.height = height + 'px'; canvas.style.width = width + 'px'; }; // -- Canvas methods helpers.fontString = function(pixelSize, fontStyle, fontFamily) { return fontStyle + ' ' + pixelSize + 'px ' + fontFamily; }; helpers.longestText = function(ctx, font, arrayOfThings, cache) { cache = cache || {}; var data = cache.data = cache.data || {}; var gc = cache.garbageCollect = cache.garbageCollect || []; if (cache.font !== font) { data = cache.data = {}; gc = cache.garbageCollect = []; cache.font = font; } ctx.font = font; var longest = 0; helpers.each(arrayOfThings, function(thing) { // Undefined strings and arrays should not be measured if (thing !== undefined && thing !== null && helpers.isArray(thing) !== true) { longest = helpers.measureText(ctx, data, gc, longest, thing); } else if (helpers.isArray(thing)) { // if it is an array lets measure each element // to do maybe simplify this function a bit so we can do this more recursively? helpers.each(thing, function(nestedThing) { // Undefined strings and arrays should not be measured if (nestedThing !== undefined && nestedThing !== null && !helpers.isArray(nestedThing)) { longest = helpers.measureText(ctx, data, gc, longest, nestedThing); } }); } }); var gcLen = gc.length / 2; if (gcLen > arrayOfThings.length) { for (var i = 0; i < gcLen; i++) { delete data[gc[i]]; } gc.splice(0, gcLen); } return longest; }; helpers.measureText = function(ctx, data, gc, longest, string) { var textWidth = data[string]; if (!textWidth) { textWidth = data[string] = ctx.measureText(string).width; gc.push(string); } if (textWidth > longest) { longest = textWidth; } return longest; }; helpers.numberOfLabelLines = function(arrayOfThings) { var numberOfLines = 1; helpers.each(arrayOfThings, function(thing) { if (helpers.isArray(thing)) { if (thing.length > numberOfLines) { numberOfLines = thing.length; } } }); return numberOfLines; }; helpers.color = !color ? function(value) { console.error('Color.js not found!'); return value; } : function(value) { /* global CanvasGradient */ if (value instanceof CanvasGradient) { value = defaults.global.defaultColor; } return color(value); }; helpers.getHoverColor = function(colorValue) { /* global CanvasPattern */ return (colorValue instanceof CanvasPattern) ? colorValue : helpers.color(colorValue).saturate(0.5).darken(0.1).rgbString(); }; }; },{"25":25,"3":3,"45":45}],28:[function(require,module,exports){ 'use strict'; var helpers = require(45); /** * Helper function to get relative position for an event * @param {Event|IEvent} event - The event to get the position for * @param {Chart} chart - The chart * @returns {Point} the event position */ function getRelativePosition(e, chart) { if (e.native) { return { x: e.x, y: e.y }; } return helpers.getRelativePosition(e, chart); } /** * Helper function to traverse all of the visible elements in the chart * @param chart {chart} the chart * @param handler {Function} the callback to execute for each visible item */ function parseVisibleItems(chart, handler) { var datasets = chart.data.datasets; var meta, i, j, ilen, jlen; for (i = 0, ilen = datasets.length; i < ilen; ++i) { if (!chart.isDatasetVisible(i)) { continue; } meta = chart.getDatasetMeta(i); for (j = 0, jlen = meta.data.length; j < jlen; ++j) { var element = meta.data[j]; if (!element._view.skip) { handler(element); } } } } /** * Helper function to get the items that intersect the event position * @param items {ChartElement[]} elements to filter * @param position {Point} the point to be nearest to * @return {ChartElement[]} the nearest items */ function getIntersectItems(chart, position) { var elements = []; parseVisibleItems(chart, function(element) { if (element.inRange(position.x, position.y)) { elements.push(element); } }); return elements; } /** * Helper function to get the items nearest to the event position considering all visible items in teh chart * @param chart {Chart} the chart to look at elements from * @param position {Point} the point to be nearest to * @param intersect {Boolean} if true, only consider items that intersect the position * @param distanceMetric {Function} function to provide the distance between points * @return {ChartElement[]} the nearest items */ function getNearestItems(chart, position, intersect, distanceMetric) { var minDistance = Number.POSITIVE_INFINITY; var nearestItems = []; parseVisibleItems(chart, function(element) { if (intersect && !element.inRange(position.x, position.y)) { return; } var center = element.getCenterPoint(); var distance = distanceMetric(position, center); if (distance < minDistance) { nearestItems = [element]; minDistance = distance; } else if (distance === minDistance) { // Can have multiple items at the same distance in which case we sort by size nearestItems.push(element); } }); return nearestItems; } /** * Get a distance metric function for two points based on the * axis mode setting * @param {String} axis the axis mode. x|y|xy */ function getDistanceMetricForAxis(axis) { var useX = axis.indexOf('x') !== -1; var useY = axis.indexOf('y') !== -1; return function(pt1, pt2) { var deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0; var deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0; return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)); }; } function indexMode(chart, e, options) { var position = getRelativePosition(e, chart); // Default axis for index mode is 'x' to match old behaviour options.axis = options.axis || 'x'; var distanceMetric = getDistanceMetricForAxis(options.axis); var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); var elements = []; if (!items.length) { return []; } chart.data.datasets.forEach(function(dataset, datasetIndex) { if (chart.isDatasetVisible(datasetIndex)) { var meta = chart.getDatasetMeta(datasetIndex); var element = meta.data[items[0]._index]; // don't count items that are skipped (null data) if (element && !element._view.skip) { elements.push(element); } } }); return elements; } /** * @interface IInteractionOptions */ /** * If true, only consider items that intersect the point * @name IInterfaceOptions#boolean * @type Boolean */ /** * Contains interaction related functions * @namespace Chart.Interaction */ module.exports = { // Helper function for different modes modes: { single: function(chart, e) { var position = getRelativePosition(e, chart); var elements = []; parseVisibleItems(chart, function(element) { if (element.inRange(position.x, position.y)) { elements.push(element); return elements; } }); return elements.slice(0, 1); }, /** * @function Chart.Interaction.modes.label * @deprecated since version 2.4.0 * @todo remove at version 3 * @private */ label: indexMode, /** * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item * @function Chart.Interaction.modes.index * @since v2.4.0 * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use during interaction * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ index: indexMode, /** * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something * If the options.intersect is false, we find the nearest item and return the items in that dataset * @function Chart.Interaction.modes.dataset * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use during interaction * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ dataset: function(chart, e, options) { var position = getRelativePosition(e, chart); options.axis = options.axis || 'xy'; var distanceMetric = getDistanceMetricForAxis(options.axis); var items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric); if (items.length > 0) { items = chart.getDatasetMeta(items[0]._datasetIndex).data; } return items; }, /** * @function Chart.Interaction.modes.x-axis * @deprecated since version 2.4.0. Use index mode and intersect == true * @todo remove at version 3 * @private */ 'x-axis': function(chart, e) { return indexMode(chart, e, {intersect: false}); }, /** * Point mode returns all elements that hit test based on the event position * of the event * @function Chart.Interaction.modes.intersect * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ point: function(chart, e) { var position = getRelativePosition(e, chart); return getIntersectItems(chart, position); }, /** * nearest mode returns the element closest to the point * @function Chart.Interaction.modes.intersect * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ nearest: function(chart, e, options) { var position = getRelativePosition(e, chart); options.axis = options.axis || 'xy'; var distanceMetric = getDistanceMetricForAxis(options.axis); var nearestItems = getNearestItems(chart, position, options.intersect, distanceMetric); // We have multiple items at the same distance from the event. Now sort by smallest if (nearestItems.length > 1) { nearestItems.sort(function(a, b) { var sizeA = a.getArea(); var sizeB = b.getArea(); var ret = sizeA - sizeB; if (ret === 0) { // if equal sort by dataset index ret = a._datasetIndex - b._datasetIndex; } return ret; }); } // Return only 1 item return nearestItems.slice(0, 1); }, /** * x mode returns the elements that hit-test at the current x coordinate * @function Chart.Interaction.modes.x * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ x: function(chart, e, options) { var position = getRelativePosition(e, chart); var items = []; var intersectsItem = false; parseVisibleItems(chart, function(element) { if (element.inXRange(position.x)) { items.push(element); } if (element.inRange(position.x, position.y)) { intersectsItem = true; } }); // If we want to trigger on an intersect and we don't have any items // that intersect the position, return nothing if (options.intersect && !intersectsItem) { items = []; } return items; }, /** * y mode returns the elements that hit-test at the current y coordinate * @function Chart.Interaction.modes.y * @param chart {chart} the chart we are returning items from * @param e {Event} the event we are find things at * @param options {IInteractionOptions} options to use * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned */ y: function(chart, e, options) { var position = getRelativePosition(e, chart); var items = []; var intersectsItem = false; parseVisibleItems(chart, function(element) { if (element.inYRange(position.y)) { items.push(element); } if (element.inRange(position.x, position.y)) { intersectsItem = true; } }); // If we want to trigger on an intersect and we don't have any items // that intersect the position, return nothing if (options.intersect && !intersectsItem) { items = []; } return items; } } }; },{"45":45}],29:[function(require,module,exports){ 'use strict'; var defaults = require(25); defaults._set('global', { responsive: true, responsiveAnimationDuration: 0, maintainAspectRatio: true, events: ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'], hover: { onHover: null, mode: 'nearest', intersect: true, animationDuration: 400 }, onClick: null, defaultColor: 'rgba(0,0,0,0.1)', defaultFontColor: '#666', defaultFontFamily: "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif", defaultFontSize: 12, defaultFontStyle: 'normal', showLines: true, // Element defaults defined in element extensions elements: {}, // Layout options such as padding layout: { padding: { top: 0, right: 0, bottom: 0, left: 0 } } }); module.exports = function() { // Occupy the global variable of Chart, and create a simple base class var Chart = function(item, config) { this.construct(item, config); return this; }; Chart.Chart = Chart; return Chart; }; },{"25":25}],30:[function(require,module,exports){ 'use strict'; var helpers = require(45); module.exports = function(Chart) { function filterByPosition(array, position) { return helpers.where(array, function(v) { return v.position === position; }); } function sortByWeight(array, reverse) { array.forEach(function(v, i) { v._tmpIndex_ = i; return v; }); array.sort(function(a, b) { var v0 = reverse ? b : a; var v1 = reverse ? a : b; return v0.weight === v1.weight ? v0._tmpIndex_ - v1._tmpIndex_ : v0.weight - v1.weight; }); array.forEach(function(v) { delete v._tmpIndex_; }); } /** * @interface ILayoutItem * @prop {String} position - The position of the item in the chart layout. Possible values are * 'left', 'top', 'right', 'bottom', and 'chartArea' * @prop {Number} weight - The weight used to sort the item. Higher weights are further away from the chart area * @prop {Boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down * @prop {Function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom) * @prop {Function} update - Takes two parameters: width and height. Returns size of item * @prop {Function} getPadding - Returns an object with padding on the edges * @prop {Number} width - Width of item. Must be valid after update() * @prop {Number} height - Height of item. Must be valid after update() * @prop {Number} left - Left edge of the item. Set by layout system and cannot be used in update * @prop {Number} top - Top edge of the item. Set by layout system and cannot be used in update * @prop {Number} right - Right edge of the item. Set by layout system and cannot be used in update * @prop {Number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update */ // The layout service is very self explanatory. It's responsible for the layout within a chart. // Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need // It is this service's responsibility of carrying out that layout. Chart.layoutService = { defaults: {}, /** * Register a box to a chart. * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title. * @param {Chart} chart - the chart to use * @param {ILayoutItem} item - the item to add to be layed out */ addBox: function(chart, item) { if (!chart.boxes) { chart.boxes = []; } // initialize item with default values item.fullWidth = item.fullWidth || false; item.position = item.position || 'top'; item.weight = item.weight || 0; chart.boxes.push(item); }, /** * Remove a layoutItem from a chart * @param {Chart} chart - the chart to remove the box from * @param {Object} layoutItem - the item to remove from the layout */ removeBox: function(chart, layoutItem) { var index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1; if (index !== -1) { chart.boxes.splice(index, 1); } }, /** * Sets (or updates) options on the given `item`. * @param {Chart} chart - the chart in which the item lives (or will be added to) * @param {Object} item - the item to configure with the given options * @param {Object} options - the new item options. */ configure: function(chart, item, options) { var props = ['fullWidth', 'position', 'weight']; var ilen = props.length; var i = 0; var prop; for (; i < ilen; ++i) { prop = props[i]; if (options.hasOwnProperty(prop)) { item[prop] = options[prop]; } } }, /** * Fits boxes of the given chart into the given size by having each box measure itself * then running a fitting algorithm * @param {Chart} chart - the chart * @param {Number} width - the width to fit into * @param {Number} height - the height to fit into */ update: function(chart, width, height) { if (!chart) { return; } var layoutOptions = chart.options.layout || {}; var padding = helpers.options.toPadding(layoutOptions.padding); var leftPadding = padding.left; var rightPadding = padding.right; var topPadding = padding.top; var bottomPadding = padding.bottom; var leftBoxes = filterByPosition(chart.boxes, 'left'); var rightBoxes = filterByPosition(chart.boxes, 'right'); var topBoxes = filterByPosition(chart.boxes, 'top'); var bottomBoxes = filterByPosition(chart.boxes, 'bottom'); var chartAreaBoxes = filterByPosition(chart.boxes, 'chartArea'); // Sort boxes by weight. A higher weight is further away from the chart area sortByWeight(leftBoxes, true); sortByWeight(rightBoxes, false); sortByWeight(topBoxes, true); sortByWeight(bottomBoxes, false); // Essentially we now have any number of boxes on each of the 4 sides. // Our canvas looks like the following. // The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and // B1 is the bottom axis // There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays // These locations are single-box locations only, when trying to register a chartArea location that is already taken, // an error will be thrown. // // |----------------------------------------------------| // | T1 (Full Width) | // |----------------------------------------------------| // | | | T2 | | // | |----|-------------------------------------|----| // | | | C1 | | C2 | | // | | |----| |----| | // | | | | | // | L1 | L2 | ChartArea (C0) | R1 | // | | | | | // | | |----| |----| | // | | | C3 | | C4 | | // | |----|-------------------------------------|----| // | | | B1 | | // |----------------------------------------------------| // | B2 (Full Width) | // |----------------------------------------------------| // // What we do to find the best sizing, we do the following // 1. Determine the minimum size of the chart area. // 2. Split the remaining width equally between each vertical axis // 3. Split the remaining height equally between each horizontal axis // 4. Give each layout the maximum size it can be. The layout will return it's minimum size // 5. Adjust the sizes of each axis based on it's minimum reported size. // 6. Refit each axis // 7. Position each axis in the final location // 8. Tell the chart the final location of the chart area // 9. Tell any axes that overlay the chart area the positions of the chart area // Step 1 var chartWidth = width - leftPadding - rightPadding; var chartHeight = height - topPadding - bottomPadding; var chartAreaWidth = chartWidth / 2; // min 50% var chartAreaHeight = chartHeight / 2; // min 50% // Step 2 var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length); // Step 3 var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length); // Step 4 var maxChartAreaWidth = chartWidth; var maxChartAreaHeight = chartHeight; var minBoxSizes = []; function getMinimumBoxSize(box) { var minSize; var isHorizontal = box.isHorizontal(); if (isHorizontal) { minSize = box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight); maxChartAreaHeight -= minSize.height; } else { minSize = box.update(verticalBoxWidth, chartAreaHeight); maxChartAreaWidth -= minSize.width; } minBoxSizes.push({ horizontal: isHorizontal, minSize: minSize, box: box, }); } helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize); // If a horizontal box has padding, we move the left boxes over to avoid ugly charts (see issue #2478) var maxHorizontalLeftPadding = 0; var maxHorizontalRightPadding = 0; var maxVerticalTopPadding = 0; var maxVerticalBottomPadding = 0; helpers.each(topBoxes.concat(bottomBoxes), function(horizontalBox) { if (horizontalBox.getPadding) { var boxPadding = horizontalBox.getPadding(); maxHorizontalLeftPadding = Math.max(maxHorizontalLeftPadding, boxPadding.left); maxHorizontalRightPadding = Math.max(maxHorizontalRightPadding, boxPadding.right); } }); helpers.each(leftBoxes.concat(rightBoxes), function(verticalBox) { if (verticalBox.getPadding) { var boxPadding = verticalBox.getPadding(); maxVerticalTopPadding = Math.max(maxVerticalTopPadding, boxPadding.top); maxVerticalBottomPadding = Math.max(maxVerticalBottomPadding, boxPadding.bottom); } }); // At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could // be if the axes are drawn at their minimum sizes. // Steps 5 & 6 var totalLeftBoxesWidth = leftPadding; var totalRightBoxesWidth = rightPadding; var totalTopBoxesHeight = topPadding; var totalBottomBoxesHeight = bottomPadding; // Function to fit a box function fitBox(box) { var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBox) { return minBox.box === box; }); if (minBoxSize) { if (box.isHorizontal()) { var scaleMargin = { left: Math.max(totalLeftBoxesWidth, maxHorizontalLeftPadding), right: Math.max(totalRightBoxesWidth, maxHorizontalRightPadding), top: 0, bottom: 0 }; // Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends // on the margin. Sometimes they need to increase in size slightly box.update(box.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin); } else { box.update(minBoxSize.minSize.width, maxChartAreaHeight); } } } // Update, and calculate the left and right margins for the horizontal boxes helpers.each(leftBoxes.concat(rightBoxes), fitBox); helpers.each(leftBoxes, function(box) { totalLeftBoxesWidth += box.width; }); helpers.each(rightBoxes, function(box) { totalRightBoxesWidth += box.width; }); // Set the Left and Right margins for the horizontal boxes helpers.each(topBoxes.concat(bottomBoxes), fitBox); // Figure out how much margin is on the top and bottom of the vertical boxes helpers.each(topBoxes, function(box) { totalTopBoxesHeight += box.height; }); helpers.each(bottomBoxes, function(box) { totalBottomBoxesHeight += box.height; }); function finalFitVerticalBox(box) { var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minSize) { return minSize.box === box; }); var scaleMargin = { left: 0, right: 0, top: totalTopBoxesHeight, bottom: totalBottomBoxesHeight }; if (minBoxSize) { box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin); } } // Let the left layout know the final margin helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox); // Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance) totalLeftBoxesWidth = leftPadding; totalRightBoxesWidth = rightPadding; totalTopBoxesHeight = topPadding; totalBottomBoxesHeight = bottomPadding; helpers.each(leftBoxes, function(box) { totalLeftBoxesWidth += box.width; }); helpers.each(rightBoxes, function(box) { totalRightBoxesWidth += box.width; }); helpers.each(topBoxes, function(box) { totalTopBoxesHeight += box.height; }); helpers.each(bottomBoxes, function(box) { totalBottomBoxesHeight += box.height; }); // We may be adding some padding to account for rotated x axis labels var leftPaddingAddition = Math.max(maxHorizontalLeftPadding - totalLeftBoxesWidth, 0); totalLeftBoxesWidth += leftPaddingAddition; totalRightBoxesWidth += Math.max(maxHorizontalRightPadding - totalRightBoxesWidth, 0); var topPaddingAddition = Math.max(maxVerticalTopPadding - totalTopBoxesHeight, 0); totalTopBoxesHeight += topPaddingAddition; totalBottomBoxesHeight += Math.max(maxVerticalBottomPadding - totalBottomBoxesHeight, 0); // Figure out if our chart area changed. This would occur if the dataset layout label rotation // changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do // without calling `fit` again var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight; var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth; if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) { helpers.each(leftBoxes, function(box) { box.height = newMaxChartAreaHeight; }); helpers.each(rightBoxes, function(box) { box.height = newMaxChartAreaHeight; }); helpers.each(topBoxes, function(box) { if (!box.fullWidth) { box.width = newMaxChartAreaWidth; } }); helpers.each(bottomBoxes, function(box) { if (!box.fullWidth) { box.width = newMaxChartAreaWidth; } }); maxChartAreaHeight = newMaxChartAreaHeight; maxChartAreaWidth = newMaxChartAreaWidth; } // Step 7 - Position the boxes var left = leftPadding + leftPaddingAddition; var top = topPadding + topPaddingAddition; function placeBox(box) { if (box.isHorizontal()) { box.left = box.fullWidth ? leftPadding : totalLeftBoxesWidth; box.right = box.fullWidth ? width - rightPadding : totalLeftBoxesWidth + maxChartAreaWidth; box.top = top; box.bottom = top + box.height; // Move to next point top = box.bottom; } else { box.left = left; box.right = left + box.width; box.top = totalTopBoxesHeight; box.bottom = totalTopBoxesHeight + maxChartAreaHeight; // Move to next point left = box.right; } } helpers.each(leftBoxes.concat(topBoxes), placeBox); // Account for chart width and height left += maxChartAreaWidth; top += maxChartAreaHeight; helpers.each(rightBoxes, placeBox); helpers.each(bottomBoxes, placeBox); // Step 8 chart.chartArea = { left: totalLeftBoxesWidth, top: totalTopBoxesHeight, right: totalLeftBoxesWidth + maxChartAreaWidth, bottom: totalTopBoxesHeight + maxChartAreaHeight }; // Step 9 helpers.each(chartAreaBoxes, function(box) { box.left = chart.chartArea.left; box.top = chart.chartArea.top; box.right = chart.chartArea.right; box.bottom = chart.chartArea.bottom; box.update(maxChartAreaWidth, maxChartAreaHeight); }); } }; }; },{"45":45}],31:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { plugins: {} }); module.exports = function(Chart) { /** * The plugin service singleton * @namespace Chart.plugins * @since 2.1.0 */ Chart.plugins = { /** * Globally registered plugins. * @private */ _plugins: [], /** * This identifier is used to invalidate the descriptors cache attached to each chart * when a global plugin is registered or unregistered. In this case, the cache ID is * incremented and descriptors are regenerated during following API calls. * @private */ _cacheId: 0, /** * Registers the given plugin(s) if not already registered. * @param {Array|Object} plugins plugin instance(s). */ register: function(plugins) { var p = this._plugins; ([]).concat(plugins).forEach(function(plugin) { if (p.indexOf(plugin) === -1) { p.push(plugin); } }); this._cacheId++; }, /** * Unregisters the given plugin(s) only if registered. * @param {Array|Object} plugins plugin instance(s). */ unregister: function(plugins) { var p = this._plugins; ([]).concat(plugins).forEach(function(plugin) { var idx = p.indexOf(plugin); if (idx !== -1) { p.splice(idx, 1); } }); this._cacheId++; }, /** * Remove all registered plugins. * @since 2.1.5 */ clear: function() { this._plugins = []; this._cacheId++; }, /** * Returns the number of registered plugins? * @returns {Number} * @since 2.1.5 */ count: function() { return this._plugins.length; }, /** * Returns all registered plugin instances. * @returns {Array} array of plugin objects. * @since 2.1.5 */ getAll: function() { return this._plugins; }, /** * Calls enabled plugins for `chart` on the specified hook and with the given args. * This method immediately returns as soon as a plugin explicitly returns false. The * returned value can be used, for instance, to interrupt the current action. * @param {Object} chart - The chart instance for which plugins should be called. * @param {String} hook - The name of the plugin method to call (e.g. 'beforeUpdate'). * @param {Array} [args] - Extra arguments to apply to the hook call. * @returns {Boolean} false if any of the plugins return false, else returns true. */ notify: function(chart, hook, args) { var descriptors = this.descriptors(chart); var ilen = descriptors.length; var i, descriptor, plugin, params, method; for (i = 0; i < ilen; ++i) { descriptor = descriptors[i]; plugin = descriptor.plugin; method = plugin[hook]; if (typeof method === 'function') { params = [chart].concat(args || []); params.push(descriptor.options); if (method.apply(plugin, params) === false) { return false; } } } return true; }, /** * Returns descriptors of enabled plugins for the given chart. * @returns {Array} [{ plugin, options }] * @private */ descriptors: function(chart) { var cache = chart._plugins || (chart._plugins = {}); if (cache.id === this._cacheId) { return cache.descriptors; } var plugins = []; var descriptors = []; var config = (chart && chart.config) || {}; var options = (config.options && config.options.plugins) || {}; this._plugins.concat(config.plugins || []).forEach(function(plugin) { var idx = plugins.indexOf(plugin); if (idx !== -1) { return; } var id = plugin.id; var opts = options[id]; if (opts === false) { return; } if (opts === true) { opts = helpers.clone(defaults.global.plugins[id]); } plugins.push(plugin); descriptors.push({ plugin: plugin, options: opts || {} }); }); cache.descriptors = descriptors; cache.id = this._cacheId; return descriptors; } }; /** * Plugin extension hooks. * @interface IPlugin * @since 2.1.0 */ /** * @method IPlugin#beforeInit * @desc Called before initializing `chart`. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#afterInit * @desc Called after `chart` has been initialized and before the first update. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeUpdate * @desc Called before updating `chart`. If any plugin returns `false`, the update * is cancelled (and thus subsequent render(s)) until another `update` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart update. */ /** * @method IPlugin#afterUpdate * @desc Called after `chart` has been updated and before rendering. Note that this * hook will not be called if the chart update has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDatasetsUpdate * @desc Called before updating the `chart` datasets. If any plugin returns `false`, * the datasets update is cancelled until another `update` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} false to cancel the datasets update. * @since version 2.1.5 */ /** * @method IPlugin#afterDatasetsUpdate * @desc Called after the `chart` datasets have been updated. Note that this hook * will not be called if the datasets update has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @since version 2.1.5 */ /** * @method IPlugin#beforeDatasetUpdate * @desc Called before updating the `chart` dataset at the given `args.index`. If any plugin * returns `false`, the datasets update is cancelled until another `update` is triggered. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart datasets drawing. */ /** * @method IPlugin#afterDatasetUpdate * @desc Called after the `chart` datasets at the given `args.index` has been updated. Note * that this hook will not be called if the datasets update has been previously cancelled. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeLayout * @desc Called before laying out `chart`. If any plugin returns `false`, * the layout update is cancelled until another `update` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart layout. */ /** * @method IPlugin#afterLayout * @desc Called after the `chart` has been layed out. Note that this hook will not * be called if the layout update has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeRender * @desc Called before rendering `chart`. If any plugin returns `false`, * the rendering is cancelled until another `render` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart rendering. */ /** * @method IPlugin#afterRender * @desc Called after the `chart` has been fully rendered (and animation completed). Note * that this hook will not be called if the rendering has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDraw * @desc Called before drawing `chart` at every animation frame specified by the given * easing value. If any plugin returns `false`, the frame drawing is cancelled until * another `render` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart drawing. */ /** * @method IPlugin#afterDraw * @desc Called after the `chart` has been drawn for the specific easing value. Note * that this hook will not be called if the drawing has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDatasetsDraw * @desc Called before drawing the `chart` datasets. If any plugin returns `false`, * the datasets drawing is cancelled until another `render` is triggered. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart datasets drawing. */ /** * @method IPlugin#afterDatasetsDraw * @desc Called after the `chart` datasets have been drawn. Note that this hook * will not be called if the datasets drawing has been previously cancelled. * @param {Chart.Controller} chart - The chart instance. * @param {Number} easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeDatasetDraw * @desc Called before drawing the `chart` dataset at the given `args.index` (datasets * are drawn in the reverse order). If any plugin returns `false`, the datasets drawing * is cancelled until another `render` is triggered. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart datasets drawing. */ /** * @method IPlugin#afterDatasetDraw * @desc Called after the `chart` datasets at the given `args.index` have been drawn * (datasets are drawn in the reverse order). Note that this hook will not be called * if the datasets drawing has been previously cancelled. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Number} args.index - The dataset index. * @param {Object} args.meta - The dataset metadata. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeTooltipDraw * @desc Called before drawing the `tooltip`. If any plugin returns `false`, * the tooltip drawing is cancelled until another `render` is triggered. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Object} args.tooltip - The tooltip. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. * @returns {Boolean} `false` to cancel the chart tooltip drawing. */ /** * @method IPlugin#afterTooltipDraw * @desc Called after drawing the `tooltip`. Note that this hook will not * be called if the tooltip drawing has been previously cancelled. * @param {Chart} chart - The chart instance. * @param {Object} args - The call arguments. * @param {Object} args.tooltip - The tooltip. * @param {Number} args.easingValue - The current animation value, between 0.0 and 1.0. * @param {Object} options - The plugin options. */ /** * @method IPlugin#beforeEvent * @desc Called before processing the specified `event`. If any plugin returns `false`, * the event will be discarded. * @param {Chart.Controller} chart - The chart instance. * @param {IEvent} event - The event object. * @param {Object} options - The plugin options. */ /** * @method IPlugin#afterEvent * @desc Called after the `event` has been consumed. Note that this hook * will not be called if the `event` has been previously discarded. * @param {Chart.Controller} chart - The chart instance. * @param {IEvent} event - The event object. * @param {Object} options - The plugin options. */ /** * @method IPlugin#resize * @desc Called after the chart as been resized. * @param {Chart.Controller} chart - The chart instance. * @param {Number} size - The new canvas display size (eq. canvas.style width & height). * @param {Object} options - The plugin options. */ /** * @method IPlugin#destroy * @desc Called after the chart as been destroyed. * @param {Chart.Controller} chart - The chart instance. * @param {Object} options - The plugin options. */ /** * Provided for backward compatibility, use Chart.plugins instead * @namespace Chart.pluginService * @deprecated since version 2.1.5 * @todo remove at version 3 * @private */ Chart.pluginService = Chart.plugins; /** * Provided for backward compatibility, inheriting from Chart.PlugingBase has no * effect, instead simply create/register plugins via plain JavaScript objects. * @interface Chart.PluginBase * @deprecated since version 2.5.0 * @todo remove at version 3 * @private */ Chart.PluginBase = Element.extend({}); }; },{"25":25,"26":26,"45":45}],32:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); var Ticks = require(34); defaults._set('scale', { display: true, position: 'left', offset: false, // grid line settings gridLines: { display: true, color: 'rgba(0, 0, 0, 0.1)', lineWidth: 1, drawBorder: true, drawOnChartArea: true, drawTicks: true, tickMarkLength: 10, zeroLineWidth: 1, zeroLineColor: 'rgba(0,0,0,0.25)', zeroLineBorderDash: [], zeroLineBorderDashOffset: 0.0, offsetGridLines: false, borderDash: [], borderDashOffset: 0.0 }, // scale label scaleLabel: { // display property display: false, // actual label labelString: '', // line height lineHeight: 1.2, // top/bottom padding padding: { top: 4, bottom: 4 } }, // label settings ticks: { beginAtZero: false, minRotation: 0, maxRotation: 50, mirror: false, padding: 0, reverse: false, display: true, autoSkip: true, autoSkipPadding: 0, labelOffset: 0, // We pass through arrays to be rendered as multiline labels, we convert Others to strings here. callback: Ticks.formatters.values, minor: {}, major: {} } }); function labelsFromTicks(ticks) { var labels = []; var i, ilen; for (i = 0, ilen = ticks.length; i < ilen; ++i) { labels.push(ticks[i].label); } return labels; } function getLineValue(scale, index, offsetGridLines) { var lineValue = scale.getPixelForTick(index); if (offsetGridLines) { if (index === 0) { lineValue -= (scale.getPixelForTick(1) - lineValue) / 2; } else { lineValue -= (lineValue - scale.getPixelForTick(index - 1)) / 2; } } return lineValue; } module.exports = function(Chart) { function computeTextSize(context, tick, font) { return helpers.isArray(tick) ? helpers.longestText(context, font, tick) : context.measureText(tick).width; } function parseFontOptions(options) { var valueOrDefault = helpers.valueOrDefault; var globalDefaults = defaults.global; var size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize); var style = valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle); var family = valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily); return { size: size, style: style, family: family, font: helpers.fontString(size, style, family) }; } function parseLineHeight(options) { return helpers.options.toLineHeight( helpers.valueOrDefault(options.lineHeight, 1.2), helpers.valueOrDefault(options.fontSize, defaults.global.defaultFontSize)); } Chart.Scale = Element.extend({ /** * Get the padding needed for the scale * @method getPadding * @private * @returns {Padding} the necessary padding */ getPadding: function() { var me = this; return { left: me.paddingLeft || 0, top: me.paddingTop || 0, right: me.paddingRight || 0, bottom: me.paddingBottom || 0 }; }, /** * Returns the scale tick objects ({label, major}) * @since 2.7 */ getTicks: function() { return this._ticks; }, // These methods are ordered by lifecyle. Utilities then follow. // Any function defined here is inherited by all scale types. // Any function can be extended by the scale type mergeTicksOptions: function() { var ticks = this.options.ticks; if (ticks.minor === false) { ticks.minor = { display: false }; } if (ticks.major === false) { ticks.major = { display: false }; } for (var key in ticks) { if (key !== 'major' && key !== 'minor') { if (typeof ticks.minor[key] === 'undefined') { ticks.minor[key] = ticks[key]; } if (typeof ticks.major[key] === 'undefined') { ticks.major[key] = ticks[key]; } } } }, beforeUpdate: function() { helpers.callback(this.options.beforeUpdate, [this]); }, update: function(maxWidth, maxHeight, margins) { var me = this; var i, ilen, labels, label, ticks, tick; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); // Absorb the master measurements me.maxWidth = maxWidth; me.maxHeight = maxHeight; me.margins = helpers.extend({ left: 0, right: 0, top: 0, bottom: 0 }, margins); me.longestTextCache = me.longestTextCache || {}; // Dimensions me.beforeSetDimensions(); me.setDimensions(); me.afterSetDimensions(); // Data min/max me.beforeDataLimits(); me.determineDataLimits(); me.afterDataLimits(); // Ticks - `this.ticks` is now DEPRECATED! // Internal ticks are now stored as objects in the PRIVATE `this._ticks` member // and must not be accessed directly from outside this class. `this.ticks` being // around for long time and not marked as private, we can't change its structure // without unexpected breaking changes. If you need to access the scale ticks, // use scale.getTicks() instead. me.beforeBuildTicks(); // New implementations should return an array of objects but for BACKWARD COMPAT, // we still support no return (`this.ticks` internally set by calling this method). ticks = me.buildTicks() || []; me.afterBuildTicks(); me.beforeTickToLabelConversion(); // New implementations should return the formatted tick labels but for BACKWARD // COMPAT, we still support no return (`this.ticks` internally changed by calling // this method and supposed to contain only string values). labels = me.convertTicksToLabels(ticks) || me.ticks; me.afterTickToLabelConversion(); me.ticks = labels; // BACKWARD COMPATIBILITY // IMPORTANT: from this point, we consider that `this.ticks` will NEVER change! // BACKWARD COMPAT: synchronize `_ticks` with labels (so potentially `this.ticks`) for (i = 0, ilen = labels.length; i < ilen; ++i) { label = labels[i]; tick = ticks[i]; if (!tick) { ticks.push(tick = { label: label, major: false }); } else { tick.label = label; } } me._ticks = ticks; // Tick Rotation me.beforeCalculateTickRotation(); me.calculateTickRotation(); me.afterCalculateTickRotation(); // Fit me.beforeFit(); me.fit(); me.afterFit(); // me.afterUpdate(); return me.minSize; }, afterUpdate: function() { helpers.callback(this.options.afterUpdate, [this]); }, // beforeSetDimensions: function() { helpers.callback(this.options.beforeSetDimensions, [this]); }, setDimensions: function() { var me = this; // Set the unconstrained dimension before label rotation if (me.isHorizontal()) { // Reset position before calculating rotation me.width = me.maxWidth; me.left = 0; me.right = me.width; } else { me.height = me.maxHeight; // Reset position before calculating rotation me.top = 0; me.bottom = me.height; } // Reset padding me.paddingLeft = 0; me.paddingTop = 0; me.paddingRight = 0; me.paddingBottom = 0; }, afterSetDimensions: function() { helpers.callback(this.options.afterSetDimensions, [this]); }, // Data limits beforeDataLimits: function() { helpers.callback(this.options.beforeDataLimits, [this]); }, determineDataLimits: helpers.noop, afterDataLimits: function() { helpers.callback(this.options.afterDataLimits, [this]); }, // beforeBuildTicks: function() { helpers.callback(this.options.beforeBuildTicks, [this]); }, buildTicks: helpers.noop, afterBuildTicks: function() { helpers.callback(this.options.afterBuildTicks, [this]); }, beforeTickToLabelConversion: function() { helpers.callback(this.options.beforeTickToLabelConversion, [this]); }, convertTicksToLabels: function() { var me = this; // Convert ticks to strings var tickOpts = me.options.ticks; me.ticks = me.ticks.map(tickOpts.userCallback || tickOpts.callback, this); }, afterTickToLabelConversion: function() { helpers.callback(this.options.afterTickToLabelConversion, [this]); }, // beforeCalculateTickRotation: function() { helpers.callback(this.options.beforeCalculateTickRotation, [this]); }, calculateTickRotation: function() { var me = this; var context = me.ctx; var tickOpts = me.options.ticks; var labels = labelsFromTicks(me._ticks); // Get the width of each grid by calculating the difference // between x offsets between 0 and 1. var tickFont = parseFontOptions(tickOpts); context.font = tickFont.font; var labelRotation = tickOpts.minRotation || 0; if (labels.length && me.options.display && me.isHorizontal()) { var originalLabelWidth = helpers.longestText(context, tickFont.font, labels, me.longestTextCache); var labelWidth = originalLabelWidth; var cosRotation, sinRotation; // Allow 3 pixels x2 padding either side for label readability var tickWidth = me.getPixelForTick(1) - me.getPixelForTick(0) - 6; // Max label rotation can be set or default to 90 - also act as a loop counter while (labelWidth > tickWidth && labelRotation < tickOpts.maxRotation) { var angleRadians = helpers.toRadians(labelRotation); cosRotation = Math.cos(angleRadians); sinRotation = Math.sin(angleRadians); if (sinRotation * originalLabelWidth > me.maxHeight) { // go back one step labelRotation--; break; } labelRotation++; labelWidth = cosRotation * originalLabelWidth; } } me.labelRotation = labelRotation; }, afterCalculateTickRotation: function() { helpers.callback(this.options.afterCalculateTickRotation, [this]); }, // beforeFit: function() { helpers.callback(this.options.beforeFit, [this]); }, fit: function() { var me = this; // Reset var minSize = me.minSize = { width: 0, height: 0 }; var labels = labelsFromTicks(me._ticks); var opts = me.options; var tickOpts = opts.ticks; var scaleLabelOpts = opts.scaleLabel; var gridLineOpts = opts.gridLines; var display = opts.display; var isHorizontal = me.isHorizontal(); var tickFont = parseFontOptions(tickOpts); var tickMarkLength = opts.gridLines.tickMarkLength; // Width if (isHorizontal) { // subtract the margins to line up with the chartArea if we are a full width scale minSize.width = me.isFullWidth() ? me.maxWidth - me.margins.left - me.margins.right : me.maxWidth; } else { minSize.width = display && gridLineOpts.drawTicks ? tickMarkLength : 0; } // height if (isHorizontal) { minSize.height = display && gridLineOpts.drawTicks ? tickMarkLength : 0; } else { minSize.height = me.maxHeight; // fill all the height } // Are we showing a title for the scale? if (scaleLabelOpts.display && display) { var scaleLabelLineHeight = parseLineHeight(scaleLabelOpts); var scaleLabelPadding = helpers.options.toPadding(scaleLabelOpts.padding); var deltaHeight = scaleLabelLineHeight + scaleLabelPadding.height; if (isHorizontal) { minSize.height += deltaHeight; } else { minSize.width += deltaHeight; } } // Don't bother fitting the ticks if we are not showing them if (tickOpts.display && display) { var largestTextWidth = helpers.longestText(me.ctx, tickFont.font, labels, me.longestTextCache); var tallestLabelHeightInLines = helpers.numberOfLabelLines(labels); var lineSpace = tickFont.size * 0.5; var tickPadding = me.options.ticks.padding; if (isHorizontal) { // A horizontal axis is more constrained by the height. me.longestLabelWidth = largestTextWidth; var angleRadians = helpers.toRadians(me.labelRotation); var cosRotation = Math.cos(angleRadians); var sinRotation = Math.sin(angleRadians); // TODO - improve this calculation var labelHeight = (sinRotation * largestTextWidth) + (tickFont.size * tallestLabelHeightInLines) + (lineSpace * (tallestLabelHeightInLines - 1)) + lineSpace; // padding minSize.height = Math.min(me.maxHeight, minSize.height + labelHeight + tickPadding); me.ctx.font = tickFont.font; var firstLabelWidth = computeTextSize(me.ctx, labels[0], tickFont.font); var lastLabelWidth = computeTextSize(me.ctx, labels[labels.length - 1], tickFont.font); // Ensure that our ticks are always inside the canvas. When rotated, ticks are right aligned // which means that the right padding is dominated by the font height if (me.labelRotation !== 0) { me.paddingLeft = opts.position === 'bottom' ? (cosRotation * firstLabelWidth) + 3 : (cosRotation * lineSpace) + 3; // add 3 px to move away from canvas edges me.paddingRight = opts.position === 'bottom' ? (cosRotation * lineSpace) + 3 : (cosRotation * lastLabelWidth) + 3; } else { me.paddingLeft = firstLabelWidth / 2 + 3; // add 3 px to move away from canvas edges me.paddingRight = lastLabelWidth / 2 + 3; } } else { // A vertical axis is more constrained by the width. Labels are the // dominant factor here, so get that length first and account for padding if (tickOpts.mirror) { largestTextWidth = 0; } else { // use lineSpace for consistency with horizontal axis // tickPadding is not implemented for horizontal largestTextWidth += tickPadding + lineSpace; } minSize.width = Math.min(me.maxWidth, minSize.width + largestTextWidth); me.paddingTop = tickFont.size / 2; me.paddingBottom = tickFont.size / 2; } } me.handleMargins(); me.width = minSize.width; me.height = minSize.height; }, /** * Handle margins and padding interactions * @private */ handleMargins: function() { var me = this; if (me.margins) { me.paddingLeft = Math.max(me.paddingLeft - me.margins.left, 0); me.paddingTop = Math.max(me.paddingTop - me.margins.top, 0); me.paddingRight = Math.max(me.paddingRight - me.margins.right, 0); me.paddingBottom = Math.max(me.paddingBottom - me.margins.bottom, 0); } }, afterFit: function() { helpers.callback(this.options.afterFit, [this]); }, // Shared Methods isHorizontal: function() { return this.options.position === 'top' || this.options.position === 'bottom'; }, isFullWidth: function() { return (this.options.fullWidth); }, // Get the correct value. NaN bad inputs, If the value type is object get the x or y based on whether we are horizontal or not getRightValue: function(rawValue) { // Null and undefined values first if (helpers.isNullOrUndef(rawValue)) { return NaN; } // isNaN(object) returns true, so make sure NaN is checking for a number; Discard Infinite values if (typeof rawValue === 'number' && !isFinite(rawValue)) { return NaN; } // If it is in fact an object, dive in one more level if (rawValue) { if (this.isHorizontal()) { if (rawValue.x !== undefined) { return this.getRightValue(rawValue.x); } } else if (rawValue.y !== undefined) { return this.getRightValue(rawValue.y); } } // Value is good, return it return rawValue; }, /** * Used to get the value to display in the tooltip for the data at the given index * @param index * @param datasetIndex */ getLabelForIndex: helpers.noop, /** * Returns the location of the given data point. Value can either be an index or a numerical value * The coordinate (0, 0) is at the upper-left corner of the canvas * @param value * @param index * @param datasetIndex */ getPixelForValue: helpers.noop, /** * Used to get the data value from a given pixel. This is the inverse of getPixelForValue * The coordinate (0, 0) is at the upper-left corner of the canvas * @param pixel */ getValueForPixel: helpers.noop, /** * Returns the location of the tick at the given index * The coordinate (0, 0) is at the upper-left corner of the canvas */ getPixelForTick: function(index) { var me = this; var offset = me.options.offset; if (me.isHorizontal()) { var innerWidth = me.width - (me.paddingLeft + me.paddingRight); var tickWidth = innerWidth / Math.max((me._ticks.length - (offset ? 0 : 1)), 1); var pixel = (tickWidth * index) + me.paddingLeft; if (offset) { pixel += tickWidth / 2; } var finalVal = me.left + Math.round(pixel); finalVal += me.isFullWidth() ? me.margins.left : 0; return finalVal; } var innerHeight = me.height - (me.paddingTop + me.paddingBottom); return me.top + (index * (innerHeight / (me._ticks.length - 1))); }, /** * Utility for getting the pixel location of a percentage of scale * The coordinate (0, 0) is at the upper-left corner of the canvas */ getPixelForDecimal: function(decimal) { var me = this; if (me.isHorizontal()) { var innerWidth = me.width - (me.paddingLeft + me.paddingRight); var valueOffset = (innerWidth * decimal) + me.paddingLeft; var finalVal = me.left + Math.round(valueOffset); finalVal += me.isFullWidth() ? me.margins.left : 0; return finalVal; } return me.top + (decimal * me.height); }, /** * Returns the pixel for the minimum chart value * The coordinate (0, 0) is at the upper-left corner of the canvas */ getBasePixel: function() { return this.getPixelForValue(this.getBaseValue()); }, getBaseValue: function() { var me = this; var min = me.min; var max = me.max; return me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0; }, /** * Returns a subset of ticks to be plotted to avoid overlapping labels. * @private */ _autoSkip: function(ticks) { var skipRatio; var me = this; var isHorizontal = me.isHorizontal(); var optionTicks = me.options.ticks.minor; var tickCount = ticks.length; var labelRotationRadians = helpers.toRadians(me.labelRotation); var cosRotation = Math.cos(labelRotationRadians); var longestRotatedLabel = me.longestLabelWidth * cosRotation; var result = []; var i, tick, shouldSkip; // figure out the maximum number of gridlines to show var maxTicks; if (optionTicks.maxTicksLimit) { maxTicks = optionTicks.maxTicksLimit; } if (isHorizontal) { skipRatio = false; if ((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount > (me.width - (me.paddingLeft + me.paddingRight))) { skipRatio = 1 + Math.floor(((longestRotatedLabel + optionTicks.autoSkipPadding) * tickCount) / (me.width - (me.paddingLeft + me.paddingRight))); } // if they defined a max number of optionTicks, // increase skipRatio until that number is met if (maxTicks && tickCount > maxTicks) { skipRatio = Math.max(skipRatio, Math.floor(tickCount / maxTicks)); } } for (i = 0; i < tickCount; i++) { tick = ticks[i]; // Since we always show the last tick,we need may need to hide the last shown one before shouldSkip = (skipRatio > 1 && i % skipRatio > 0) || (i % skipRatio === 0 && i + skipRatio >= tickCount); if (shouldSkip && i !== tickCount - 1) { // leave tick in place but make sure it's not displayed (#4635) delete tick.label; } result.push(tick); } return result; }, // Actually draw the scale on the canvas // @param {rectangle} chartArea : the area of the chart to draw full grid lines on draw: function(chartArea) { var me = this; var options = me.options; if (!options.display) { return; } var context = me.ctx; var globalDefaults = defaults.global; var optionTicks = options.ticks.minor; var optionMajorTicks = options.ticks.major || optionTicks; var gridLines = options.gridLines; var scaleLabel = options.scaleLabel; var isRotated = me.labelRotation !== 0; var isHorizontal = me.isHorizontal(); var ticks = optionTicks.autoSkip ? me._autoSkip(me.getTicks()) : me.getTicks(); var tickFontColor = helpers.valueOrDefault(optionTicks.fontColor, globalDefaults.defaultFontColor); var tickFont = parseFontOptions(optionTicks); var majorTickFontColor = helpers.valueOrDefault(optionMajorTicks.fontColor, globalDefaults.defaultFontColor); var majorTickFont = parseFontOptions(optionMajorTicks); var tl = gridLines.drawTicks ? gridLines.tickMarkLength : 0; var scaleLabelFontColor = helpers.valueOrDefault(scaleLabel.fontColor, globalDefaults.defaultFontColor); var scaleLabelFont = parseFontOptions(scaleLabel); var scaleLabelPadding = helpers.options.toPadding(scaleLabel.padding); var labelRotationRadians = helpers.toRadians(me.labelRotation); var itemsToDraw = []; var xTickStart = options.position === 'right' ? me.left : me.right - tl; var xTickEnd = options.position === 'right' ? me.left + tl : me.right; var yTickStart = options.position === 'bottom' ? me.top : me.bottom - tl; var yTickEnd = options.position === 'bottom' ? me.top + tl : me.bottom; helpers.each(ticks, function(tick, index) { // autoskipper skipped this tick (#4635) if (helpers.isNullOrUndef(tick.label)) { return; } var label = tick.label; var lineWidth, lineColor, borderDash, borderDashOffset; if (index === me.zeroLineIndex && options.offset === gridLines.offsetGridLines) { // Draw the first index specially lineWidth = gridLines.zeroLineWidth; lineColor = gridLines.zeroLineColor; borderDash = gridLines.zeroLineBorderDash; borderDashOffset = gridLines.zeroLineBorderDashOffset; } else { lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, index); lineColor = helpers.valueAtIndexOrDefault(gridLines.color, index); borderDash = helpers.valueOrDefault(gridLines.borderDash, globalDefaults.borderDash); borderDashOffset = helpers.valueOrDefault(gridLines.borderDashOffset, globalDefaults.borderDashOffset); } // Common properties var tx1, ty1, tx2, ty2, x1, y1, x2, y2, labelX, labelY; var textAlign = 'middle'; var textBaseline = 'middle'; var tickPadding = optionTicks.padding; if (isHorizontal) { var labelYOffset = tl + tickPadding; if (options.position === 'bottom') { // bottom textBaseline = !isRotated ? 'top' : 'middle'; textAlign = !isRotated ? 'center' : 'right'; labelY = me.top + labelYOffset; } else { // top textBaseline = !isRotated ? 'bottom' : 'middle'; textAlign = !isRotated ? 'center' : 'left'; labelY = me.bottom - labelYOffset; } var xLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); if (xLineValue < me.left) { lineColor = 'rgba(0,0,0,0)'; } xLineValue += helpers.aliasPixel(lineWidth); labelX = me.getPixelForTick(index) + optionTicks.labelOffset; // x values for optionTicks (need to consider offsetLabel option) tx1 = tx2 = x1 = x2 = xLineValue; ty1 = yTickStart; ty2 = yTickEnd; y1 = chartArea.top; y2 = chartArea.bottom; } else { var isLeft = options.position === 'left'; var labelXOffset; if (optionTicks.mirror) { textAlign = isLeft ? 'left' : 'right'; labelXOffset = tickPadding; } else { textAlign = isLeft ? 'right' : 'left'; labelXOffset = tl + tickPadding; } labelX = isLeft ? me.right - labelXOffset : me.left + labelXOffset; var yLineValue = getLineValue(me, index, gridLines.offsetGridLines && ticks.length > 1); if (yLineValue < me.top) { lineColor = 'rgba(0,0,0,0)'; } yLineValue += helpers.aliasPixel(lineWidth); labelY = me.getPixelForTick(index) + optionTicks.labelOffset; tx1 = xTickStart; tx2 = xTickEnd; x1 = chartArea.left; x2 = chartArea.right; ty1 = ty2 = y1 = y2 = yLineValue; } itemsToDraw.push({ tx1: tx1, ty1: ty1, tx2: tx2, ty2: ty2, x1: x1, y1: y1, x2: x2, y2: y2, labelX: labelX, labelY: labelY, glWidth: lineWidth, glColor: lineColor, glBorderDash: borderDash, glBorderDashOffset: borderDashOffset, rotation: -1 * labelRotationRadians, label: label, major: tick.major, textBaseline: textBaseline, textAlign: textAlign }); }); // Draw all of the tick labels, tick marks, and grid lines at the correct places helpers.each(itemsToDraw, function(itemToDraw) { if (gridLines.display) { context.save(); context.lineWidth = itemToDraw.glWidth; context.strokeStyle = itemToDraw.glColor; if (context.setLineDash) { context.setLineDash(itemToDraw.glBorderDash); context.lineDashOffset = itemToDraw.glBorderDashOffset; } context.beginPath(); if (gridLines.drawTicks) { context.moveTo(itemToDraw.tx1, itemToDraw.ty1); context.lineTo(itemToDraw.tx2, itemToDraw.ty2); } if (gridLines.drawOnChartArea) { context.moveTo(itemToDraw.x1, itemToDraw.y1); context.lineTo(itemToDraw.x2, itemToDraw.y2); } context.stroke(); context.restore(); } if (optionTicks.display) { // Make sure we draw text in the correct color and font context.save(); context.translate(itemToDraw.labelX, itemToDraw.labelY); context.rotate(itemToDraw.rotation); context.font = itemToDraw.major ? majorTickFont.font : tickFont.font; context.fillStyle = itemToDraw.major ? majorTickFontColor : tickFontColor; context.textBaseline = itemToDraw.textBaseline; context.textAlign = itemToDraw.textAlign; var label = itemToDraw.label; if (helpers.isArray(label)) { for (var i = 0, y = 0; i < label.length; ++i) { // We just make sure the multiline element is a string here.. context.fillText('' + label[i], 0, y); // apply same lineSpacing as calculated @ L#320 y += (tickFont.size * 1.5); } } else { context.fillText(label, 0, 0); } context.restore(); } }); if (scaleLabel.display) { // Draw the scale label var scaleLabelX; var scaleLabelY; var rotation = 0; var halfLineHeight = parseLineHeight(scaleLabel) / 2; if (isHorizontal) { scaleLabelX = me.left + ((me.right - me.left) / 2); // midpoint of the width scaleLabelY = options.position === 'bottom' ? me.bottom - halfLineHeight - scaleLabelPadding.bottom : me.top + halfLineHeight + scaleLabelPadding.top; } else { var isLeft = options.position === 'left'; scaleLabelX = isLeft ? me.left + halfLineHeight + scaleLabelPadding.top : me.right - halfLineHeight - scaleLabelPadding.top; scaleLabelY = me.top + ((me.bottom - me.top) / 2); rotation = isLeft ? -0.5 * Math.PI : 0.5 * Math.PI; } context.save(); context.translate(scaleLabelX, scaleLabelY); context.rotate(rotation); context.textAlign = 'center'; context.textBaseline = 'middle'; context.fillStyle = scaleLabelFontColor; // render in correct colour context.font = scaleLabelFont.font; context.fillText(scaleLabel.labelString, 0, 0); context.restore(); } if (gridLines.drawBorder) { // Draw the line at the edge of the axis context.lineWidth = helpers.valueAtIndexOrDefault(gridLines.lineWidth, 0); context.strokeStyle = helpers.valueAtIndexOrDefault(gridLines.color, 0); var x1 = me.left; var x2 = me.right; var y1 = me.top; var y2 = me.bottom; var aliasPixel = helpers.aliasPixel(context.lineWidth); if (isHorizontal) { y1 = y2 = options.position === 'top' ? me.bottom : me.top; y1 += aliasPixel; y2 += aliasPixel; } else { x1 = x2 = options.position === 'left' ? me.right : me.left; x1 += aliasPixel; x2 += aliasPixel; } context.beginPath(); context.moveTo(x1, y1); context.lineTo(x2, y2); context.stroke(); } } }); }; },{"25":25,"26":26,"34":34,"45":45}],33:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); module.exports = function(Chart) { Chart.scaleService = { // Scale registration object. Extensions can register new scale types (such as log or DB scales) and then // use the new chart options to grab the correct scale constructors: {}, // Use a registration function so that we can move to an ES6 map when we no longer need to support // old browsers // Scale config defaults defaults: {}, registerScaleType: function(type, scaleConstructor, scaleDefaults) { this.constructors[type] = scaleConstructor; this.defaults[type] = helpers.clone(scaleDefaults); }, getScaleConstructor: function(type) { return this.constructors.hasOwnProperty(type) ? this.constructors[type] : undefined; }, getScaleDefaults: function(type) { // Return the scale defaults merged with the global settings so that we always use the latest ones return this.defaults.hasOwnProperty(type) ? helpers.merge({}, [defaults.scale, this.defaults[type]]) : {}; }, updateScaleDefaults: function(type, additions) { var me = this; if (me.defaults.hasOwnProperty(type)) { me.defaults[type] = helpers.extend(me.defaults[type], additions); } }, addScalesToLayout: function(chart) { // Adds each scale to the chart.boxes array to be sized accordingly helpers.each(chart.scales, function(scale) { // Set ILayoutItem parameters for backwards compatibility scale.fullWidth = scale.options.fullWidth; scale.position = scale.options.position; scale.weight = scale.options.weight; Chart.layoutService.addBox(chart, scale); }); } }; }; },{"25":25,"45":45}],34:[function(require,module,exports){ 'use strict'; var helpers = require(45); /** * Namespace to hold static tick generation functions * @namespace Chart.Ticks */ module.exports = { /** * Namespace to hold generators for different types of ticks * @namespace Chart.Ticks.generators */ generators: { /** * Interface for the options provided to the numeric tick generator * @interface INumericTickGenerationOptions */ /** * The maximum number of ticks to display * @name INumericTickGenerationOptions#maxTicks * @type Number */ /** * The distance between each tick. * @name INumericTickGenerationOptions#stepSize * @type Number * @optional */ /** * Forced minimum for the ticks. If not specified, the minimum of the data range is used to calculate the tick minimum * @name INumericTickGenerationOptions#min * @type Number * @optional */ /** * The maximum value of the ticks. If not specified, the maximum of the data range is used to calculate the tick maximum * @name INumericTickGenerationOptions#max * @type Number * @optional */ /** * Generate a set of linear ticks * @method Chart.Ticks.generators.linear * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks * @param dataRange {IRange} the range of the data * @returns {Array} array of tick values */ linear: function(generationOptions, dataRange) { var ticks = []; // To get a "nice" value for the tick spacing, we will use the appropriately named // "nice number" algorithm. See http://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks // for details. var spacing; if (generationOptions.stepSize && generationOptions.stepSize > 0) { spacing = generationOptions.stepSize; } else { var niceRange = helpers.niceNum(dataRange.max - dataRange.min, false); spacing = helpers.niceNum(niceRange / (generationOptions.maxTicks - 1), true); } var niceMin = Math.floor(dataRange.min / spacing) * spacing; var niceMax = Math.ceil(dataRange.max / spacing) * spacing; // If min, max and stepSize is set and they make an evenly spaced scale use it. if (generationOptions.min && generationOptions.max && generationOptions.stepSize) { // If very close to our whole number, use it. if (helpers.almostWhole((generationOptions.max - generationOptions.min) / generationOptions.stepSize, spacing / 1000)) { niceMin = generationOptions.min; niceMax = generationOptions.max; } } var numSpaces = (niceMax - niceMin) / spacing; // If very close to our rounded value, use it. if (helpers.almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) { numSpaces = Math.round(numSpaces); } else { numSpaces = Math.ceil(numSpaces); } // Put the values into the ticks array ticks.push(generationOptions.min !== undefined ? generationOptions.min : niceMin); for (var j = 1; j < numSpaces; ++j) { ticks.push(niceMin + (j * spacing)); } ticks.push(generationOptions.max !== undefined ? generationOptions.max : niceMax); return ticks; }, /** * Generate a set of logarithmic ticks * @method Chart.Ticks.generators.logarithmic * @param generationOptions {INumericTickGenerationOptions} the options used to generate the ticks * @param dataRange {IRange} the range of the data * @returns {Array} array of tick values */ logarithmic: function(generationOptions, dataRange) { var ticks = []; var valueOrDefault = helpers.valueOrDefault; // Figure out what the max number of ticks we can support it is based on the size of // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on // the graph var tickVal = valueOrDefault(generationOptions.min, Math.pow(10, Math.floor(helpers.log10(dataRange.min)))); var endExp = Math.floor(helpers.log10(dataRange.max)); var endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp)); var exp, significand; if (tickVal === 0) { exp = Math.floor(helpers.log10(dataRange.minNotZero)); significand = Math.floor(dataRange.minNotZero / Math.pow(10, exp)); ticks.push(tickVal); tickVal = significand * Math.pow(10, exp); } else { exp = Math.floor(helpers.log10(tickVal)); significand = Math.floor(tickVal / Math.pow(10, exp)); } do { ticks.push(tickVal); ++significand; if (significand === 10) { significand = 1; ++exp; } tickVal = significand * Math.pow(10, exp); } while (exp < endExp || (exp === endExp && significand < endSignificand)); var lastTick = valueOrDefault(generationOptions.max, tickVal); ticks.push(lastTick); return ticks; } }, /** * Namespace to hold formatters for different types of ticks * @namespace Chart.Ticks.formatters */ formatters: { /** * Formatter for value labels * @method Chart.Ticks.formatters.values * @param value the value to display * @return {String|Array} the label to display */ values: function(value) { return helpers.isArray(value) ? value : '' + value; }, /** * Formatter for linear numeric ticks * @method Chart.Ticks.formatters.linear * @param tickValue {Number} the value to be formatted * @param index {Number} the position of the tickValue parameter in the ticks array * @param ticks {Array} the list of ticks being converted * @return {String} string representation of the tickValue parameter */ linear: function(tickValue, index, ticks) { // If we have lots of ticks, don't use the ones var delta = ticks.length > 3 ? ticks[2] - ticks[1] : ticks[1] - ticks[0]; // If we have a number like 2.5 as the delta, figure out how many decimal places we need if (Math.abs(delta) > 1) { if (tickValue !== Math.floor(tickValue)) { // not an integer delta = tickValue - Math.floor(tickValue); } } var logDelta = helpers.log10(Math.abs(delta)); var tickString = ''; if (tickValue !== 0) { var numDecimal = -1 * Math.floor(logDelta); numDecimal = Math.max(Math.min(numDecimal, 20), 0); // toFixed has a max of 20 decimal places tickString = tickValue.toFixed(numDecimal); } else { tickString = '0'; // never show decimal places for 0 } return tickString; }, logarithmic: function(tickValue, index, ticks) { var remain = tickValue / (Math.pow(10, Math.floor(helpers.log10(tickValue)))); if (tickValue === 0) { return '0'; } else if (remain === 1 || remain === 2 || remain === 5 || index === 0 || index === ticks.length - 1) { return tickValue.toExponential(); } return ''; } } }; },{"45":45}],35:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { tooltips: { enabled: true, custom: null, mode: 'nearest', position: 'average', intersect: true, backgroundColor: 'rgba(0,0,0,0.8)', titleFontStyle: 'bold', titleSpacing: 2, titleMarginBottom: 6, titleFontColor: '#fff', titleAlign: 'left', bodySpacing: 2, bodyFontColor: '#fff', bodyAlign: 'left', footerFontStyle: 'bold', footerSpacing: 2, footerMarginTop: 6, footerFontColor: '#fff', footerAlign: 'left', yPadding: 6, xPadding: 6, caretPadding: 2, caretSize: 5, cornerRadius: 6, multiKeyBackground: '#fff', displayColors: true, borderColor: 'rgba(0,0,0,0)', borderWidth: 0, callbacks: { // Args are: (tooltipItems, data) beforeTitle: helpers.noop, title: function(tooltipItems, data) { // Pick first xLabel for now var title = ''; var labels = data.labels; var labelCount = labels ? labels.length : 0; if (tooltipItems.length > 0) { var item = tooltipItems[0]; if (item.xLabel) { title = item.xLabel; } else if (labelCount > 0 && item.index < labelCount) { title = labels[item.index]; } } return title; }, afterTitle: helpers.noop, // Args are: (tooltipItems, data) beforeBody: helpers.noop, // Args are: (tooltipItem, data) beforeLabel: helpers.noop, label: function(tooltipItem, data) { var label = data.datasets[tooltipItem.datasetIndex].label || ''; if (label) { label += ': '; } label += tooltipItem.yLabel; return label; }, labelColor: function(tooltipItem, chart) { var meta = chart.getDatasetMeta(tooltipItem.datasetIndex); var activeElement = meta.data[tooltipItem.index]; var view = activeElement._view; return { borderColor: view.borderColor, backgroundColor: view.backgroundColor }; }, labelTextColor: function() { return this._options.bodyFontColor; }, afterLabel: helpers.noop, // Args are: (tooltipItems, data) afterBody: helpers.noop, // Args are: (tooltipItems, data) beforeFooter: helpers.noop, footer: helpers.noop, afterFooter: helpers.noop } } }); module.exports = function(Chart) { /** * Helper method to merge the opacity into a color */ function mergeOpacity(colorString, opacity) { var color = helpers.color(colorString); return color.alpha(opacity * color.alpha()).rgbaString(); } // Helper to push or concat based on if the 2nd parameter is an array or not function pushOrConcat(base, toPush) { if (toPush) { if (helpers.isArray(toPush)) { // base = base.concat(toPush); Array.prototype.push.apply(base, toPush); } else { base.push(toPush); } } return base; } // Private helper to create a tooltip item model // @param element : the chart element (point, arc, bar) to create the tooltip item for // @return : new tooltip item function createTooltipItem(element) { var xScale = element._xScale; var yScale = element._yScale || element._scale; // handle radar || polarArea charts var index = element._index; var datasetIndex = element._datasetIndex; return { xLabel: xScale ? xScale.getLabelForIndex(index, datasetIndex) : '', yLabel: yScale ? yScale.getLabelForIndex(index, datasetIndex) : '', index: index, datasetIndex: datasetIndex, x: element._model.x, y: element._model.y }; } /** * Helper to get the reset model for the tooltip * @param tooltipOpts {Object} the tooltip options */ function getBaseModel(tooltipOpts) { var globalDefaults = defaults.global; var valueOrDefault = helpers.valueOrDefault; return { // Positioning xPadding: tooltipOpts.xPadding, yPadding: tooltipOpts.yPadding, xAlign: tooltipOpts.xAlign, yAlign: tooltipOpts.yAlign, // Body bodyFontColor: tooltipOpts.bodyFontColor, _bodyFontFamily: valueOrDefault(tooltipOpts.bodyFontFamily, globalDefaults.defaultFontFamily), _bodyFontStyle: valueOrDefault(tooltipOpts.bodyFontStyle, globalDefaults.defaultFontStyle), _bodyAlign: tooltipOpts.bodyAlign, bodyFontSize: valueOrDefault(tooltipOpts.bodyFontSize, globalDefaults.defaultFontSize), bodySpacing: tooltipOpts.bodySpacing, // Title titleFontColor: tooltipOpts.titleFontColor, _titleFontFamily: valueOrDefault(tooltipOpts.titleFontFamily, globalDefaults.defaultFontFamily), _titleFontStyle: valueOrDefault(tooltipOpts.titleFontStyle, globalDefaults.defaultFontStyle), titleFontSize: valueOrDefault(tooltipOpts.titleFontSize, globalDefaults.defaultFontSize), _titleAlign: tooltipOpts.titleAlign, titleSpacing: tooltipOpts.titleSpacing, titleMarginBottom: tooltipOpts.titleMarginBottom, // Footer footerFontColor: tooltipOpts.footerFontColor, _footerFontFamily: valueOrDefault(tooltipOpts.footerFontFamily, globalDefaults.defaultFontFamily), _footerFontStyle: valueOrDefault(tooltipOpts.footerFontStyle, globalDefaults.defaultFontStyle), footerFontSize: valueOrDefault(tooltipOpts.footerFontSize, globalDefaults.defaultFontSize), _footerAlign: tooltipOpts.footerAlign, footerSpacing: tooltipOpts.footerSpacing, footerMarginTop: tooltipOpts.footerMarginTop, // Appearance caretSize: tooltipOpts.caretSize, cornerRadius: tooltipOpts.cornerRadius, backgroundColor: tooltipOpts.backgroundColor, opacity: 0, legendColorBackground: tooltipOpts.multiKeyBackground, displayColors: tooltipOpts.displayColors, borderColor: tooltipOpts.borderColor, borderWidth: tooltipOpts.borderWidth }; } /** * Get the size of the tooltip */ function getTooltipSize(tooltip, model) { var ctx = tooltip._chart.ctx; var height = model.yPadding * 2; // Tooltip Padding var width = 0; // Count of all lines in the body var body = model.body; var combinedBodyLength = body.reduce(function(count, bodyItem) { return count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length; }, 0); combinedBodyLength += model.beforeBody.length + model.afterBody.length; var titleLineCount = model.title.length; var footerLineCount = model.footer.length; var titleFontSize = model.titleFontSize; var bodyFontSize = model.bodyFontSize; var footerFontSize = model.footerFontSize; height += titleLineCount * titleFontSize; // Title Lines height += titleLineCount ? (titleLineCount - 1) * model.titleSpacing : 0; // Title Line Spacing height += titleLineCount ? model.titleMarginBottom : 0; // Title's bottom Margin height += combinedBodyLength * bodyFontSize; // Body Lines height += combinedBodyLength ? (combinedBodyLength - 1) * model.bodySpacing : 0; // Body Line Spacing height += footerLineCount ? model.footerMarginTop : 0; // Footer Margin height += footerLineCount * (footerFontSize); // Footer Lines height += footerLineCount ? (footerLineCount - 1) * model.footerSpacing : 0; // Footer Line Spacing // Title width var widthPadding = 0; var maxLineWidth = function(line) { width = Math.max(width, ctx.measureText(line).width + widthPadding); }; ctx.font = helpers.fontString(titleFontSize, model._titleFontStyle, model._titleFontFamily); helpers.each(model.title, maxLineWidth); // Body width ctx.font = helpers.fontString(bodyFontSize, model._bodyFontStyle, model._bodyFontFamily); helpers.each(model.beforeBody.concat(model.afterBody), maxLineWidth); // Body lines may include some extra width due to the color box widthPadding = model.displayColors ? (bodyFontSize + 2) : 0; helpers.each(body, function(bodyItem) { helpers.each(bodyItem.before, maxLineWidth); helpers.each(bodyItem.lines, maxLineWidth); helpers.each(bodyItem.after, maxLineWidth); }); // Reset back to 0 widthPadding = 0; // Footer width ctx.font = helpers.fontString(footerFontSize, model._footerFontStyle, model._footerFontFamily); helpers.each(model.footer, maxLineWidth); // Add padding width += 2 * model.xPadding; return { width: width, height: height }; } /** * Helper to get the alignment of a tooltip given the size */ function determineAlignment(tooltip, size) { var model = tooltip._model; var chart = tooltip._chart; var chartArea = tooltip._chart.chartArea; var xAlign = 'center'; var yAlign = 'center'; if (model.y < size.height) { yAlign = 'top'; } else if (model.y > (chart.height - size.height)) { yAlign = 'bottom'; } var lf, rf; // functions to determine left, right alignment var olf, orf; // functions to determine if left/right alignment causes tooltip to go outside chart var yf; // function to get the y alignment if the tooltip goes outside of the left or right edges var midX = (chartArea.left + chartArea.right) / 2; var midY = (chartArea.top + chartArea.bottom) / 2; if (yAlign === 'center') { lf = function(x) { return x <= midX; }; rf = function(x) { return x > midX; }; } else { lf = function(x) { return x <= (size.width / 2); }; rf = function(x) { return x >= (chart.width - (size.width / 2)); }; } olf = function(x) { return x + size.width > chart.width; }; orf = function(x) { return x - size.width < 0; }; yf = function(y) { return y <= midY ? 'top' : 'bottom'; }; if (lf(model.x)) { xAlign = 'left'; // Is tooltip too wide and goes over the right side of the chart.? if (olf(model.x)) { xAlign = 'center'; yAlign = yf(model.y); } } else if (rf(model.x)) { xAlign = 'right'; // Is tooltip too wide and goes outside left edge of canvas? if (orf(model.x)) { xAlign = 'center'; yAlign = yf(model.y); } } var opts = tooltip._options; return { xAlign: opts.xAlign ? opts.xAlign : xAlign, yAlign: opts.yAlign ? opts.yAlign : yAlign }; } /** * @Helper to get the location a tooltip needs to be placed at given the initial position (via the vm) and the size and alignment */ function getBackgroundPoint(vm, size, alignment) { // Background Position var x = vm.x; var y = vm.y; var caretSize = vm.caretSize; var caretPadding = vm.caretPadding; var cornerRadius = vm.cornerRadius; var xAlign = alignment.xAlign; var yAlign = alignment.yAlign; var paddingAndSize = caretSize + caretPadding; var radiusAndPadding = cornerRadius + caretPadding; if (xAlign === 'right') { x -= size.width; } else if (xAlign === 'center') { x -= (size.width / 2); } if (yAlign === 'top') { y += paddingAndSize; } else if (yAlign === 'bottom') { y -= size.height + paddingAndSize; } else { y -= (size.height / 2); } if (yAlign === 'center') { if (xAlign === 'left') { x += paddingAndSize; } else if (xAlign === 'right') { x -= paddingAndSize; } } else if (xAlign === 'left') { x -= radiusAndPadding; } else if (xAlign === 'right') { x += radiusAndPadding; } return { x: x, y: y }; } Chart.Tooltip = Element.extend({ initialize: function() { this._model = getBaseModel(this._options); this._lastActive = []; }, // Get the title // Args are: (tooltipItem, data) getTitle: function() { var me = this; var opts = me._options; var callbacks = opts.callbacks; var beforeTitle = callbacks.beforeTitle.apply(me, arguments); var title = callbacks.title.apply(me, arguments); var afterTitle = callbacks.afterTitle.apply(me, arguments); var lines = []; lines = pushOrConcat(lines, beforeTitle); lines = pushOrConcat(lines, title); lines = pushOrConcat(lines, afterTitle); return lines; }, // Args are: (tooltipItem, data) getBeforeBody: function() { var lines = this._options.callbacks.beforeBody.apply(this, arguments); return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; }, // Args are: (tooltipItem, data) getBody: function(tooltipItems, data) { var me = this; var callbacks = me._options.callbacks; var bodyItems = []; helpers.each(tooltipItems, function(tooltipItem) { var bodyItem = { before: [], lines: [], after: [] }; pushOrConcat(bodyItem.before, callbacks.beforeLabel.call(me, tooltipItem, data)); pushOrConcat(bodyItem.lines, callbacks.label.call(me, tooltipItem, data)); pushOrConcat(bodyItem.after, callbacks.afterLabel.call(me, tooltipItem, data)); bodyItems.push(bodyItem); }); return bodyItems; }, // Args are: (tooltipItem, data) getAfterBody: function() { var lines = this._options.callbacks.afterBody.apply(this, arguments); return helpers.isArray(lines) ? lines : lines !== undefined ? [lines] : []; }, // Get the footer and beforeFooter and afterFooter lines // Args are: (tooltipItem, data) getFooter: function() { var me = this; var callbacks = me._options.callbacks; var beforeFooter = callbacks.beforeFooter.apply(me, arguments); var footer = callbacks.footer.apply(me, arguments); var afterFooter = callbacks.afterFooter.apply(me, arguments); var lines = []; lines = pushOrConcat(lines, beforeFooter); lines = pushOrConcat(lines, footer); lines = pushOrConcat(lines, afterFooter); return lines; }, update: function(changed) { var me = this; var opts = me._options; // Need to regenerate the model because its faster than using extend and it is necessary due to the optimization in Chart.Element.transition // that does _view = _model if ease === 1. This causes the 2nd tooltip update to set properties in both the view and model at the same time // which breaks any animations. var existingModel = me._model; var model = me._model = getBaseModel(opts); var active = me._active; var data = me._data; // In the case where active.length === 0 we need to keep these at existing values for good animations var alignment = { xAlign: existingModel.xAlign, yAlign: existingModel.yAlign }; var backgroundPoint = { x: existingModel.x, y: existingModel.y }; var tooltipSize = { width: existingModel.width, height: existingModel.height }; var tooltipPosition = { x: existingModel.caretX, y: existingModel.caretY }; var i, len; if (active.length) { model.opacity = 1; var labelColors = []; var labelTextColors = []; tooltipPosition = Chart.Tooltip.positioners[opts.position].call(me, active, me._eventPosition); var tooltipItems = []; for (i = 0, len = active.length; i < len; ++i) { tooltipItems.push(createTooltipItem(active[i])); } // If the user provided a filter function, use it to modify the tooltip items if (opts.filter) { tooltipItems = tooltipItems.filter(function(a) { return opts.filter(a, data); }); } // If the user provided a sorting function, use it to modify the tooltip items if (opts.itemSort) { tooltipItems = tooltipItems.sort(function(a, b) { return opts.itemSort(a, b, data); }); } // Determine colors for boxes helpers.each(tooltipItems, function(tooltipItem) { labelColors.push(opts.callbacks.labelColor.call(me, tooltipItem, me._chart)); labelTextColors.push(opts.callbacks.labelTextColor.call(me, tooltipItem, me._chart)); }); // Build the Text Lines model.title = me.getTitle(tooltipItems, data); model.beforeBody = me.getBeforeBody(tooltipItems, data); model.body = me.getBody(tooltipItems, data); model.afterBody = me.getAfterBody(tooltipItems, data); model.footer = me.getFooter(tooltipItems, data); // Initial positioning and colors model.x = Math.round(tooltipPosition.x); model.y = Math.round(tooltipPosition.y); model.caretPadding = opts.caretPadding; model.labelColors = labelColors; model.labelTextColors = labelTextColors; // data points model.dataPoints = tooltipItems; // We need to determine alignment of the tooltip tooltipSize = getTooltipSize(this, model); alignment = determineAlignment(this, tooltipSize); // Final Size and Position backgroundPoint = getBackgroundPoint(model, tooltipSize, alignment); } else { model.opacity = 0; } model.xAlign = alignment.xAlign; model.yAlign = alignment.yAlign; model.x = backgroundPoint.x; model.y = backgroundPoint.y; model.width = tooltipSize.width; model.height = tooltipSize.height; // Point where the caret on the tooltip points to model.caretX = tooltipPosition.x; model.caretY = tooltipPosition.y; me._model = model; if (changed && opts.custom) { opts.custom.call(me, model); } return me; }, drawCaret: function(tooltipPoint, size) { var ctx = this._chart.ctx; var vm = this._view; var caretPosition = this.getCaretPosition(tooltipPoint, size, vm); ctx.lineTo(caretPosition.x1, caretPosition.y1); ctx.lineTo(caretPosition.x2, caretPosition.y2); ctx.lineTo(caretPosition.x3, caretPosition.y3); }, getCaretPosition: function(tooltipPoint, size, vm) { var x1, x2, x3, y1, y2, y3; var caretSize = vm.caretSize; var cornerRadius = vm.cornerRadius; var xAlign = vm.xAlign; var yAlign = vm.yAlign; var ptX = tooltipPoint.x; var ptY = tooltipPoint.y; var width = size.width; var height = size.height; if (yAlign === 'center') { y2 = ptY + (height / 2); if (xAlign === 'left') { x1 = ptX; x2 = x1 - caretSize; x3 = x1; y1 = y2 + caretSize; y3 = y2 - caretSize; } else { x1 = ptX + width; x2 = x1 + caretSize; x3 = x1; y1 = y2 - caretSize; y3 = y2 + caretSize; } } else { if (xAlign === 'left') { x2 = ptX + cornerRadius + (caretSize); x1 = x2 - caretSize; x3 = x2 + caretSize; } else if (xAlign === 'right') { x2 = ptX + width - cornerRadius - caretSize; x1 = x2 - caretSize; x3 = x2 + caretSize; } else { x2 = ptX + (width / 2); x1 = x2 - caretSize; x3 = x2 + caretSize; } if (yAlign === 'top') { y1 = ptY; y2 = y1 - caretSize; y3 = y1; } else { y1 = ptY + height; y2 = y1 + caretSize; y3 = y1; // invert drawing order var tmp = x3; x3 = x1; x1 = tmp; } } return {x1: x1, x2: x2, x3: x3, y1: y1, y2: y2, y3: y3}; }, drawTitle: function(pt, vm, ctx, opacity) { var title = vm.title; if (title.length) { ctx.textAlign = vm._titleAlign; ctx.textBaseline = 'top'; var titleFontSize = vm.titleFontSize; var titleSpacing = vm.titleSpacing; ctx.fillStyle = mergeOpacity(vm.titleFontColor, opacity); ctx.font = helpers.fontString(titleFontSize, vm._titleFontStyle, vm._titleFontFamily); var i, len; for (i = 0, len = title.length; i < len; ++i) { ctx.fillText(title[i], pt.x, pt.y); pt.y += titleFontSize + titleSpacing; // Line Height and spacing if (i + 1 === title.length) { pt.y += vm.titleMarginBottom - titleSpacing; // If Last, add margin, remove spacing } } } }, drawBody: function(pt, vm, ctx, opacity) { var bodyFontSize = vm.bodyFontSize; var bodySpacing = vm.bodySpacing; var body = vm.body; ctx.textAlign = vm._bodyAlign; ctx.textBaseline = 'top'; ctx.font = helpers.fontString(bodyFontSize, vm._bodyFontStyle, vm._bodyFontFamily); // Before Body var xLinePadding = 0; var fillLineOfText = function(line) { ctx.fillText(line, pt.x + xLinePadding, pt.y); pt.y += bodyFontSize + bodySpacing; }; // Before body lines ctx.fillStyle = mergeOpacity(vm.bodyFontColor, opacity); helpers.each(vm.beforeBody, fillLineOfText); var drawColorBoxes = vm.displayColors; xLinePadding = drawColorBoxes ? (bodyFontSize + 2) : 0; // Draw body lines now helpers.each(body, function(bodyItem, i) { var textColor = mergeOpacity(vm.labelTextColors[i], opacity); ctx.fillStyle = textColor; helpers.each(bodyItem.before, fillLineOfText); helpers.each(bodyItem.lines, function(line) { // Draw Legend-like boxes if needed if (drawColorBoxes) { // Fill a white rect so that colours merge nicely if the opacity is < 1 ctx.fillStyle = mergeOpacity(vm.legendColorBackground, opacity); ctx.fillRect(pt.x, pt.y, bodyFontSize, bodyFontSize); // Border ctx.lineWidth = 1; ctx.strokeStyle = mergeOpacity(vm.labelColors[i].borderColor, opacity); ctx.strokeRect(pt.x, pt.y, bodyFontSize, bodyFontSize); // Inner square ctx.fillStyle = mergeOpacity(vm.labelColors[i].backgroundColor, opacity); ctx.fillRect(pt.x + 1, pt.y + 1, bodyFontSize - 2, bodyFontSize - 2); ctx.fillStyle = textColor; } fillLineOfText(line); }); helpers.each(bodyItem.after, fillLineOfText); }); // Reset back to 0 for after body xLinePadding = 0; // After body lines helpers.each(vm.afterBody, fillLineOfText); pt.y -= bodySpacing; // Remove last body spacing }, drawFooter: function(pt, vm, ctx, opacity) { var footer = vm.footer; if (footer.length) { pt.y += vm.footerMarginTop; ctx.textAlign = vm._footerAlign; ctx.textBaseline = 'top'; ctx.fillStyle = mergeOpacity(vm.footerFontColor, opacity); ctx.font = helpers.fontString(vm.footerFontSize, vm._footerFontStyle, vm._footerFontFamily); helpers.each(footer, function(line) { ctx.fillText(line, pt.x, pt.y); pt.y += vm.footerFontSize + vm.footerSpacing; }); } }, drawBackground: function(pt, vm, ctx, tooltipSize, opacity) { ctx.fillStyle = mergeOpacity(vm.backgroundColor, opacity); ctx.strokeStyle = mergeOpacity(vm.borderColor, opacity); ctx.lineWidth = vm.borderWidth; var xAlign = vm.xAlign; var yAlign = vm.yAlign; var x = pt.x; var y = pt.y; var width = tooltipSize.width; var height = tooltipSize.height; var radius = vm.cornerRadius; ctx.beginPath(); ctx.moveTo(x + radius, y); if (yAlign === 'top') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x + width - radius, y); ctx.quadraticCurveTo(x + width, y, x + width, y + radius); if (yAlign === 'center' && xAlign === 'right') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x + width, y + height - radius); ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); if (yAlign === 'bottom') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x + radius, y + height); ctx.quadraticCurveTo(x, y + height, x, y + height - radius); if (yAlign === 'center' && xAlign === 'left') { this.drawCaret(pt, tooltipSize); } ctx.lineTo(x, y + radius); ctx.quadraticCurveTo(x, y, x + radius, y); ctx.closePath(); ctx.fill(); if (vm.borderWidth > 0) { ctx.stroke(); } }, draw: function() { var ctx = this._chart.ctx; var vm = this._view; if (vm.opacity === 0) { return; } var tooltipSize = { width: vm.width, height: vm.height }; var pt = { x: vm.x, y: vm.y }; // IE11/Edge does not like very small opacities, so snap to 0 var opacity = Math.abs(vm.opacity < 1e-3) ? 0 : vm.opacity; // Truthy/falsey value for empty tooltip var hasTooltipContent = vm.title.length || vm.beforeBody.length || vm.body.length || vm.afterBody.length || vm.footer.length; if (this._options.enabled && hasTooltipContent) { // Draw Background this.drawBackground(pt, vm, ctx, tooltipSize, opacity); // Draw Title, Body, and Footer pt.x += vm.xPadding; pt.y += vm.yPadding; // Titles this.drawTitle(pt, vm, ctx, opacity); // Body this.drawBody(pt, vm, ctx, opacity); // Footer this.drawFooter(pt, vm, ctx, opacity); } }, /** * Handle an event * @private * @param {IEvent} event - The event to handle * @returns {Boolean} true if the tooltip changed */ handleEvent: function(e) { var me = this; var options = me._options; var changed = false; me._lastActive = me._lastActive || []; // Find Active Elements for tooltips if (e.type === 'mouseout') { me._active = []; } else { me._active = me._chart.getElementsAtEventForMode(e, options.mode, options); } // Remember Last Actives changed = !helpers.arrayEquals(me._active, me._lastActive); // If tooltip didn't change, do not handle the target event if (!changed) { return false; } me._lastActive = me._active; if (options.enabled || options.custom) { me._eventPosition = { x: e.x, y: e.y }; var model = me._model; me.update(true); me.pivot(); // See if our tooltip position changed changed |= (model.x !== me._model.x) || (model.y !== me._model.y); } return changed; } }); /** * @namespace Chart.Tooltip.positioners */ Chart.Tooltip.positioners = { /** * Average mode places the tooltip at the average position of the elements shown * @function Chart.Tooltip.positioners.average * @param elements {ChartElement[]} the elements being displayed in the tooltip * @returns {Point} tooltip position */ average: function(elements) { if (!elements.length) { return false; } var i, len; var x = 0; var y = 0; var count = 0; for (i = 0, len = elements.length; i < len; ++i) { var el = elements[i]; if (el && el.hasValue()) { var pos = el.tooltipPosition(); x += pos.x; y += pos.y; ++count; } } return { x: Math.round(x / count), y: Math.round(y / count) }; }, /** * Gets the tooltip position nearest of the item nearest to the event position * @function Chart.Tooltip.positioners.nearest * @param elements {Chart.Element[]} the tooltip elements * @param eventPosition {Point} the position of the event in canvas coordinates * @returns {Point} the tooltip position */ nearest: function(elements, eventPosition) { var x = eventPosition.x; var y = eventPosition.y; var minDistance = Number.POSITIVE_INFINITY; var i, len, nearestElement; for (i = 0, len = elements.length; i < len; ++i) { var el = elements[i]; if (el && el.hasValue()) { var center = el.getCenterPoint(); var d = helpers.distanceBetweenPoints(eventPosition, center); if (d < minDistance) { minDistance = d; nearestElement = el; } } } if (nearestElement) { var tp = nearestElement.tooltipPosition(); x = tp.x; y = tp.y; } return { x: x, y: y }; } }; }; },{"25":25,"26":26,"45":45}],36:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { elements: { arc: { backgroundColor: defaults.global.defaultColor, borderColor: '#fff', borderWidth: 2 } } }); module.exports = Element.extend({ inLabelRange: function(mouseX) { var vm = this._view; if (vm) { return (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2)); } return false; }, inRange: function(chartX, chartY) { var vm = this._view; if (vm) { var pointRelativePosition = helpers.getAngleFromPoint(vm, {x: chartX, y: chartY}); var angle = pointRelativePosition.angle; var distance = pointRelativePosition.distance; // Sanitise angle range var startAngle = vm.startAngle; var endAngle = vm.endAngle; while (endAngle < startAngle) { endAngle += 2.0 * Math.PI; } while (angle > endAngle) { angle -= 2.0 * Math.PI; } while (angle < startAngle) { angle += 2.0 * Math.PI; } // Check if within the range of the open/close angle var betweenAngles = (angle >= startAngle && angle <= endAngle); var withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius); return (betweenAngles && withinRadius); } return false; }, getCenterPoint: function() { var vm = this._view; var halfAngle = (vm.startAngle + vm.endAngle) / 2; var halfRadius = (vm.innerRadius + vm.outerRadius) / 2; return { x: vm.x + Math.cos(halfAngle) * halfRadius, y: vm.y + Math.sin(halfAngle) * halfRadius }; }, getArea: function() { var vm = this._view; return Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2)); }, tooltipPosition: function() { var vm = this._view; var centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2); var rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius; return { x: vm.x + (Math.cos(centreAngle) * rangeFromCentre), y: vm.y + (Math.sin(centreAngle) * rangeFromCentre) }; }, draw: function() { var ctx = this._chart.ctx; var vm = this._view; var sA = vm.startAngle; var eA = vm.endAngle; ctx.beginPath(); ctx.arc(vm.x, vm.y, vm.outerRadius, sA, eA); ctx.arc(vm.x, vm.y, vm.innerRadius, eA, sA, true); ctx.closePath(); ctx.strokeStyle = vm.borderColor; ctx.lineWidth = vm.borderWidth; ctx.fillStyle = vm.backgroundColor; ctx.fill(); ctx.lineJoin = 'bevel'; if (vm.borderWidth) { ctx.stroke(); } } }); },{"25":25,"26":26,"45":45}],37:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); var globalDefaults = defaults.global; defaults._set('global', { elements: { line: { tension: 0.4, backgroundColor: globalDefaults.defaultColor, borderWidth: 3, borderColor: globalDefaults.defaultColor, borderCapStyle: 'butt', borderDash: [], borderDashOffset: 0.0, borderJoinStyle: 'miter', capBezierPoints: true, fill: true, // do we fill in the area between the line and its base axis } } }); module.exports = Element.extend({ draw: function() { var me = this; var vm = me._view; var ctx = me._chart.ctx; var spanGaps = vm.spanGaps; var points = me._children.slice(); // clone array var globalOptionLineElements = globalDefaults.elements.line; var lastDrawnIndex = -1; var index, current, previous, currentVM; // If we are looping, adding the first point again if (me._loop && points.length) { points.push(points[0]); } ctx.save(); // Stroke Line Options ctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle; // IE 9 and 10 do not support line dash if (ctx.setLineDash) { ctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash); } ctx.lineDashOffset = vm.borderDashOffset || globalOptionLineElements.borderDashOffset; ctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle; ctx.lineWidth = vm.borderWidth || globalOptionLineElements.borderWidth; ctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor; // Stroke Line ctx.beginPath(); lastDrawnIndex = -1; for (index = 0; index < points.length; ++index) { current = points[index]; previous = helpers.previousItem(points, index); currentVM = current._view; // First point moves to it's starting position no matter what if (index === 0) { if (!currentVM.skip) { ctx.moveTo(currentVM.x, currentVM.y); lastDrawnIndex = index; } } else { previous = lastDrawnIndex === -1 ? previous : points[lastDrawnIndex]; if (!currentVM.skip) { if ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) { // There was a gap and this is the first point after the gap ctx.moveTo(currentVM.x, currentVM.y); } else { // Line to next point helpers.canvas.lineTo(ctx, previous._view, current._view); } lastDrawnIndex = index; } } } ctx.stroke(); ctx.restore(); } }); },{"25":25,"26":26,"45":45}],38:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); var defaultColor = defaults.global.defaultColor; defaults._set('global', { elements: { point: { radius: 3, pointStyle: 'circle', backgroundColor: defaultColor, borderColor: defaultColor, borderWidth: 1, // Hover hitRadius: 1, hoverRadius: 4, hoverBorderWidth: 1 } } }); function xRange(mouseX) { var vm = this._view; return vm ? (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false; } function yRange(mouseY) { var vm = this._view; return vm ? (Math.pow(mouseY - vm.y, 2) < Math.pow(vm.radius + vm.hitRadius, 2)) : false; } module.exports = Element.extend({ inRange: function(mouseX, mouseY) { var vm = this._view; return vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false; }, inLabelRange: xRange, inXRange: xRange, inYRange: yRange, getCenterPoint: function() { var vm = this._view; return { x: vm.x, y: vm.y }; }, getArea: function() { return Math.PI * Math.pow(this._view.radius, 2); }, tooltipPosition: function() { var vm = this._view; return { x: vm.x, y: vm.y, padding: vm.radius + vm.borderWidth }; }, draw: function(chartArea) { var vm = this._view; var model = this._model; var ctx = this._chart.ctx; var pointStyle = vm.pointStyle; var radius = vm.radius; var x = vm.x; var y = vm.y; var color = helpers.color; var errMargin = 1.01; // 1.01 is margin for Accumulated error. (Especially Edge, IE.) var ratio = 0; if (vm.skip) { return; } ctx.strokeStyle = vm.borderColor || defaultColor; ctx.lineWidth = helpers.valueOrDefault(vm.borderWidth, defaults.global.elements.point.borderWidth); ctx.fillStyle = vm.backgroundColor || defaultColor; // Cliping for Points. // going out from inner charArea? if ((chartArea !== undefined) && ((model.x < chartArea.left) || (chartArea.right * errMargin < model.x) || (model.y < chartArea.top) || (chartArea.bottom * errMargin < model.y))) { // Point fade out if (model.x < chartArea.left) { ratio = (x - model.x) / (chartArea.left - model.x); } else if (chartArea.right * errMargin < model.x) { ratio = (model.x - x) / (model.x - chartArea.right); } else if (model.y < chartArea.top) { ratio = (y - model.y) / (chartArea.top - model.y); } else if (chartArea.bottom * errMargin < model.y) { ratio = (model.y - y) / (model.y - chartArea.bottom); } ratio = Math.round(ratio * 100) / 100; ctx.strokeStyle = color(ctx.strokeStyle).alpha(ratio).rgbString(); ctx.fillStyle = color(ctx.fillStyle).alpha(ratio).rgbString(); } helpers.canvas.drawPoint(ctx, pointStyle, radius, x, y); } }); },{"25":25,"26":26,"45":45}],39:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); defaults._set('global', { elements: { rectangle: { backgroundColor: defaults.global.defaultColor, borderColor: defaults.global.defaultColor, borderSkipped: 'bottom', borderWidth: 0 } } }); function isVertical(bar) { return bar._view.width !== undefined; } /** * Helper function to get the bounds of the bar regardless of the orientation * @param bar {Chart.Element.Rectangle} the bar * @return {Bounds} bounds of the bar * @private */ function getBarBounds(bar) { var vm = bar._view; var x1, x2, y1, y2; if (isVertical(bar)) { // vertical var halfWidth = vm.width / 2; x1 = vm.x - halfWidth; x2 = vm.x + halfWidth; y1 = Math.min(vm.y, vm.base); y2 = Math.max(vm.y, vm.base); } else { // horizontal bar var halfHeight = vm.height / 2; x1 = Math.min(vm.x, vm.base); x2 = Math.max(vm.x, vm.base); y1 = vm.y - halfHeight; y2 = vm.y + halfHeight; } return { left: x1, top: y1, right: x2, bottom: y2 }; } module.exports = Element.extend({ draw: function() { var ctx = this._chart.ctx; var vm = this._view; var left, right, top, bottom, signX, signY, borderSkipped; var borderWidth = vm.borderWidth; if (!vm.horizontal) { // bar left = vm.x - vm.width / 2; right = vm.x + vm.width / 2; top = vm.y; bottom = vm.base; signX = 1; signY = bottom > top ? 1 : -1; borderSkipped = vm.borderSkipped || 'bottom'; } else { // horizontal bar left = vm.base; right = vm.x; top = vm.y - vm.height / 2; bottom = vm.y + vm.height / 2; signX = right > left ? 1 : -1; signY = 1; borderSkipped = vm.borderSkipped || 'left'; } // Canvas doesn't allow us to stroke inside the width so we can // adjust the sizes to fit if we're setting a stroke on the line if (borderWidth) { // borderWidth shold be less than bar width and bar height. var barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom)); borderWidth = borderWidth > barSize ? barSize : borderWidth; var halfStroke = borderWidth / 2; // Adjust borderWidth when bar top position is near vm.base(zero). var borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0); var borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0); var borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0); var borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0); // not become a vertical line? if (borderLeft !== borderRight) { top = borderTop; bottom = borderBottom; } // not become a horizontal line? if (borderTop !== borderBottom) { left = borderLeft; right = borderRight; } } ctx.beginPath(); ctx.fillStyle = vm.backgroundColor; ctx.strokeStyle = vm.borderColor; ctx.lineWidth = borderWidth; // Corner points, from bottom-left to bottom-right clockwise // | 1 2 | // | 0 3 | var corners = [ [left, bottom], [left, top], [right, top], [right, bottom] ]; // Find first (starting) corner with fallback to 'bottom' var borders = ['bottom', 'left', 'top', 'right']; var startCorner = borders.indexOf(borderSkipped, 0); if (startCorner === -1) { startCorner = 0; } function cornerAt(index) { return corners[(startCorner + index) % 4]; } // Draw rectangle from 'startCorner' var corner = cornerAt(0); ctx.moveTo(corner[0], corner[1]); for (var i = 1; i < 4; i++) { corner = cornerAt(i); ctx.lineTo(corner[0], corner[1]); } ctx.fill(); if (borderWidth) { ctx.stroke(); } }, height: function() { var vm = this._view; return vm.base - vm.y; }, inRange: function(mouseX, mouseY) { var inRange = false; if (this._view) { var bounds = getBarBounds(this); inRange = mouseX >= bounds.left && mouseX <= bounds.right && mouseY >= bounds.top && mouseY <= bounds.bottom; } return inRange; }, inLabelRange: function(mouseX, mouseY) { var me = this; if (!me._view) { return false; } var inRange = false; var bounds = getBarBounds(me); if (isVertical(me)) { inRange = mouseX >= bounds.left && mouseX <= bounds.right; } else { inRange = mouseY >= bounds.top && mouseY <= bounds.bottom; } return inRange; }, inXRange: function(mouseX) { var bounds = getBarBounds(this); return mouseX >= bounds.left && mouseX <= bounds.right; }, inYRange: function(mouseY) { var bounds = getBarBounds(this); return mouseY >= bounds.top && mouseY <= bounds.bottom; }, getCenterPoint: function() { var vm = this._view; var x, y; if (isVertical(this)) { x = vm.x; y = (vm.y + vm.base) / 2; } else { x = (vm.x + vm.base) / 2; y = vm.y; } return {x: x, y: y}; }, getArea: function() { var vm = this._view; return vm.width * Math.abs(vm.y - vm.base); }, tooltipPosition: function() { var vm = this._view; return { x: vm.x, y: vm.y }; } }); },{"25":25,"26":26}],40:[function(require,module,exports){ 'use strict'; module.exports = {}; module.exports.Arc = require(36); module.exports.Line = require(37); module.exports.Point = require(38); module.exports.Rectangle = require(39); },{"36":36,"37":37,"38":38,"39":39}],41:[function(require,module,exports){ 'use strict'; var helpers = require(42); /** * @namespace Chart.helpers.canvas */ var exports = module.exports = { /** * Clears the entire canvas associated to the given `chart`. * @param {Chart} chart - The chart for which to clear the canvas. */ clear: function(chart) { chart.ctx.clearRect(0, 0, chart.width, chart.height); }, /** * Creates a "path" for a rectangle with rounded corners at position (x, y) with a * given size (width, height) and the same `radius` for all corners. * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context. * @param {Number} x - The x axis of the coordinate for the rectangle starting point. * @param {Number} y - The y axis of the coordinate for the rectangle starting point. * @param {Number} width - The rectangle's width. * @param {Number} height - The rectangle's height. * @param {Number} radius - The rounded amount (in pixels) for the four corners. * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object? */ roundedRect: function(ctx, x, y, width, height, radius) { if (radius) { var rx = Math.min(radius, width / 2); var ry = Math.min(radius, height / 2); ctx.moveTo(x + rx, y); ctx.lineTo(x + width - rx, y); ctx.quadraticCurveTo(x + width, y, x + width, y + ry); ctx.lineTo(x + width, y + height - ry); ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height); ctx.lineTo(x + rx, y + height); ctx.quadraticCurveTo(x, y + height, x, y + height - ry); ctx.lineTo(x, y + ry); ctx.quadraticCurveTo(x, y, x + rx, y); } else { ctx.rect(x, y, width, height); } }, drawPoint: function(ctx, style, radius, x, y) { var type, edgeLength, xOffset, yOffset, height, size; if (style && typeof style === 'object') { type = style.toString(); if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') { ctx.drawImage(style, x - style.width / 2, y - style.height / 2, style.width, style.height); return; } } if (isNaN(radius) || radius <= 0) { return; } switch (style) { // Default includes circle default: ctx.beginPath(); ctx.arc(x, y, radius, 0, Math.PI * 2); ctx.closePath(); ctx.fill(); break; case 'triangle': ctx.beginPath(); edgeLength = 3 * radius / Math.sqrt(3); height = edgeLength * Math.sqrt(3) / 2; ctx.moveTo(x - edgeLength / 2, y + height / 3); ctx.lineTo(x + edgeLength / 2, y + height / 3); ctx.lineTo(x, y - 2 * height / 3); ctx.closePath(); ctx.fill(); break; case 'rect': size = 1 / Math.SQRT2 * radius; ctx.beginPath(); ctx.fillRect(x - size, y - size, 2 * size, 2 * size); ctx.strokeRect(x - size, y - size, 2 * size, 2 * size); break; case 'rectRounded': var offset = radius / Math.SQRT2; var leftX = x - offset; var topY = y - offset; var sideSize = Math.SQRT2 * radius; ctx.beginPath(); this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius / 2); ctx.closePath(); ctx.fill(); break; case 'rectRot': size = 1 / Math.SQRT2 * radius; ctx.beginPath(); ctx.moveTo(x - size, y); ctx.lineTo(x, y + size); ctx.lineTo(x + size, y); ctx.lineTo(x, y - size); ctx.closePath(); ctx.fill(); break; case 'cross': ctx.beginPath(); ctx.moveTo(x, y + radius); ctx.lineTo(x, y - radius); ctx.moveTo(x - radius, y); ctx.lineTo(x + radius, y); ctx.closePath(); break; case 'crossRot': ctx.beginPath(); xOffset = Math.cos(Math.PI / 4) * radius; yOffset = Math.sin(Math.PI / 4) * radius; ctx.moveTo(x - xOffset, y - yOffset); ctx.lineTo(x + xOffset, y + yOffset); ctx.moveTo(x - xOffset, y + yOffset); ctx.lineTo(x + xOffset, y - yOffset); ctx.closePath(); break; case 'star': ctx.beginPath(); ctx.moveTo(x, y + radius); ctx.lineTo(x, y - radius); ctx.moveTo(x - radius, y); ctx.lineTo(x + radius, y); xOffset = Math.cos(Math.PI / 4) * radius; yOffset = Math.sin(Math.PI / 4) * radius; ctx.moveTo(x - xOffset, y - yOffset); ctx.lineTo(x + xOffset, y + yOffset); ctx.moveTo(x - xOffset, y + yOffset); ctx.lineTo(x + xOffset, y - yOffset); ctx.closePath(); break; case 'line': ctx.beginPath(); ctx.moveTo(x - radius, y); ctx.lineTo(x + radius, y); ctx.closePath(); break; case 'dash': ctx.beginPath(); ctx.moveTo(x, y); ctx.lineTo(x + radius, y); ctx.closePath(); break; } ctx.stroke(); }, clipArea: function(ctx, area) { ctx.save(); ctx.beginPath(); ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top); ctx.clip(); }, unclipArea: function(ctx) { ctx.restore(); }, lineTo: function(ctx, previous, target, flip) { if (target.steppedLine) { if ((target.steppedLine === 'after' && !flip) || (target.steppedLine !== 'after' && flip)) { ctx.lineTo(previous.x, target.y); } else { ctx.lineTo(target.x, previous.y); } ctx.lineTo(target.x, target.y); return; } if (!target.tension) { ctx.lineTo(target.x, target.y); return; } ctx.bezierCurveTo( flip ? previous.controlPointPreviousX : previous.controlPointNextX, flip ? previous.controlPointPreviousY : previous.controlPointNextY, flip ? target.controlPointNextX : target.controlPointPreviousX, flip ? target.controlPointNextY : target.controlPointPreviousY, target.x, target.y); } }; // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.canvas.clear instead. * @namespace Chart.helpers.clear * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.clear = exports.clear; /** * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead. * @namespace Chart.helpers.drawRoundedRectangle * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.drawRoundedRectangle = function(ctx) { ctx.beginPath(); exports.roundedRect.apply(exports, arguments); ctx.closePath(); }; },{"42":42}],42:[function(require,module,exports){ 'use strict'; /** * @namespace Chart.helpers */ var helpers = { /** * An empty function that can be used, for example, for optional callback. */ noop: function() {}, /** * Returns a unique id, sequentially generated from a global variable. * @returns {Number} * @function */ uid: (function() { var id = 0; return function() { return id++; }; }()), /** * Returns true if `value` is neither null nor undefined, else returns false. * @param {*} value - The value to test. * @returns {Boolean} * @since 2.7.0 */ isNullOrUndef: function(value) { return value === null || typeof value === 'undefined'; }, /** * Returns true if `value` is an array, else returns false. * @param {*} value - The value to test. * @returns {Boolean} * @function */ isArray: Array.isArray ? Array.isArray : function(value) { return Object.prototype.toString.call(value) === '[object Array]'; }, /** * Returns true if `value` is an object (excluding null), else returns false. * @param {*} value - The value to test. * @returns {Boolean} * @since 2.7.0 */ isObject: function(value) { return value !== null && Object.prototype.toString.call(value) === '[object Object]'; }, /** * Returns `value` if defined, else returns `defaultValue`. * @param {*} value - The value to return if defined. * @param {*} defaultValue - The value to return if `value` is undefined. * @returns {*} */ valueOrDefault: function(value, defaultValue) { return typeof value === 'undefined' ? defaultValue : value; }, /** * Returns value at the given `index` in array if defined, else returns `defaultValue`. * @param {Array} value - The array to lookup for value at `index`. * @param {Number} index - The index in `value` to lookup for value. * @param {*} defaultValue - The value to return if `value[index]` is undefined. * @returns {*} */ valueAtIndexOrDefault: function(value, index, defaultValue) { return helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue); }, /** * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the * value returned by `fn`. If `fn` is not a function, this method returns undefined. * @param {Function} fn - The function to call. * @param {Array|undefined|null} args - The arguments with which `fn` should be called. * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. * @returns {*} */ callback: function(fn, args, thisArg) { if (fn && typeof fn.call === 'function') { return fn.apply(thisArg, args); } }, /** * Note(SB) for performance sake, this method should only be used when loopable type * is unknown or in none intensive code (not called often and small loopable). Else * it's preferable to use a regular for() loop and save extra function calls. * @param {Object|Array} loopable - The object or array to be iterated. * @param {Function} fn - The function to call for each item. * @param {Object} [thisArg] - The value of `this` provided for the call to `fn`. * @param {Boolean} [reverse] - If true, iterates backward on the loopable. */ each: function(loopable, fn, thisArg, reverse) { var i, len, keys; if (helpers.isArray(loopable)) { len = loopable.length; if (reverse) { for (i = len - 1; i >= 0; i--) { fn.call(thisArg, loopable[i], i); } } else { for (i = 0; i < len; i++) { fn.call(thisArg, loopable[i], i); } } } else if (helpers.isObject(loopable)) { keys = Object.keys(loopable); len = keys.length; for (i = 0; i < len; i++) { fn.call(thisArg, loopable[keys[i]], keys[i]); } } }, /** * Returns true if the `a0` and `a1` arrays have the same content, else returns false. * @see http://stackoverflow.com/a/14853974 * @param {Array} a0 - The array to compare * @param {Array} a1 - The array to compare * @returns {Boolean} */ arrayEquals: function(a0, a1) { var i, ilen, v0, v1; if (!a0 || !a1 || a0.length !== a1.length) { return false; } for (i = 0, ilen = a0.length; i < ilen; ++i) { v0 = a0[i]; v1 = a1[i]; if (v0 instanceof Array && v1 instanceof Array) { if (!helpers.arrayEquals(v0, v1)) { return false; } } else if (v0 !== v1) { // NOTE: two different object instances will never be equal: {x:20} != {x:20} return false; } } return true; }, /** * Returns a deep copy of `source` without keeping references on objects and arrays. * @param {*} source - The value to clone. * @returns {*} */ clone: function(source) { if (helpers.isArray(source)) { return source.map(helpers.clone); } if (helpers.isObject(source)) { var target = {}; var keys = Object.keys(source); var klen = keys.length; var k = 0; for (; k < klen; ++k) { target[keys[k]] = helpers.clone(source[keys[k]]); } return target; } return source; }, /** * The default merger when Chart.helpers.merge is called without merger option. * Note(SB): this method is also used by configMerge and scaleMerge as fallback. * @private */ _merger: function(key, target, source, options) { var tval = target[key]; var sval = source[key]; if (helpers.isObject(tval) && helpers.isObject(sval)) { helpers.merge(tval, sval, options); } else { target[key] = helpers.clone(sval); } }, /** * Merges source[key] in target[key] only if target[key] is undefined. * @private */ _mergerIf: function(key, target, source) { var tval = target[key]; var sval = source[key]; if (helpers.isObject(tval) && helpers.isObject(sval)) { helpers.mergeIf(tval, sval); } else if (!target.hasOwnProperty(key)) { target[key] = helpers.clone(sval); } }, /** * Recursively deep copies `source` properties into `target` with the given `options`. * IMPORTANT: `target` is not cloned and will be updated with `source` properties. * @param {Object} target - The target object in which all sources are merged into. * @param {Object|Array(Object)} source - Object(s) to merge into `target`. * @param {Object} [options] - Merging options: * @param {Function} [options.merger] - The merge method (key, target, source, options) * @returns {Object} The `target` object. */ merge: function(target, source, options) { var sources = helpers.isArray(source) ? source : [source]; var ilen = sources.length; var merge, i, keys, klen, k; if (!helpers.isObject(target)) { return target; } options = options || {}; merge = options.merger || helpers._merger; for (i = 0; i < ilen; ++i) { source = sources[i]; if (!helpers.isObject(source)) { continue; } keys = Object.keys(source); for (k = 0, klen = keys.length; k < klen; ++k) { merge(keys[k], target, source, options); } } return target; }, /** * Recursively deep copies `source` properties into `target` *only* if not defined in target. * IMPORTANT: `target` is not cloned and will be updated with `source` properties. * @param {Object} target - The target object in which all sources are merged into. * @param {Object|Array(Object)} source - Object(s) to merge into `target`. * @returns {Object} The `target` object. */ mergeIf: function(target, source) { return helpers.merge(target, source, {merger: helpers._mergerIf}); }, /** * Applies the contents of two or more objects together into the first object. * @param {Object} target - The target object in which all objects are merged into. * @param {Object} arg1 - Object containing additional properties to merge in target. * @param {Object} argN - Additional objects containing properties to merge in target. * @returns {Object} The `target` object. */ extend: function(target) { var setFn = function(value, key) { target[key] = value; }; for (var i = 1, ilen = arguments.length; i < ilen; ++i) { helpers.each(arguments[i], setFn); } return target; }, /** * Basic javascript inheritance based on the model created in Backbone.js */ inherits: function(extensions) { var me = this; var ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() { return me.apply(this, arguments); }; var Surrogate = function() { this.constructor = ChartElement; }; Surrogate.prototype = me.prototype; ChartElement.prototype = new Surrogate(); ChartElement.extend = helpers.inherits; if (extensions) { helpers.extend(ChartElement.prototype, extensions); } ChartElement.__super__ = me.prototype; return ChartElement; } }; module.exports = helpers; // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.callback instead. * @function Chart.helpers.callCallback * @deprecated since version 2.6.0 * @todo remove at version 3 * @private */ helpers.callCallback = helpers.callback; /** * Provided for backward compatibility, use Array.prototype.indexOf instead. * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+ * @function Chart.helpers.indexOf * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.indexOf = function(array, item, fromIndex) { return Array.prototype.indexOf.call(array, item, fromIndex); }; /** * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead. * @function Chart.helpers.getValueOrDefault * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.getValueOrDefault = helpers.valueOrDefault; /** * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead. * @function Chart.helpers.getValueAtIndexOrDefault * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault; },{}],43:[function(require,module,exports){ 'use strict'; var helpers = require(42); /** * Easing functions adapted from Robert Penner's easing equations. * @namespace Chart.helpers.easingEffects * @see http://www.robertpenner.com/easing/ */ var effects = { linear: function(t) { return t; }, easeInQuad: function(t) { return t * t; }, easeOutQuad: function(t) { return -t * (t - 2); }, easeInOutQuad: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t; } return -0.5 * ((--t) * (t - 2) - 1); }, easeInCubic: function(t) { return t * t * t; }, easeOutCubic: function(t) { return (t = t - 1) * t * t + 1; }, easeInOutCubic: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t * t; } return 0.5 * ((t -= 2) * t * t + 2); }, easeInQuart: function(t) { return t * t * t * t; }, easeOutQuart: function(t) { return -((t = t - 1) * t * t * t - 1); }, easeInOutQuart: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t * t * t; } return -0.5 * ((t -= 2) * t * t * t - 2); }, easeInQuint: function(t) { return t * t * t * t * t; }, easeOutQuint: function(t) { return (t = t - 1) * t * t * t * t + 1; }, easeInOutQuint: function(t) { if ((t /= 0.5) < 1) { return 0.5 * t * t * t * t * t; } return 0.5 * ((t -= 2) * t * t * t * t + 2); }, easeInSine: function(t) { return -Math.cos(t * (Math.PI / 2)) + 1; }, easeOutSine: function(t) { return Math.sin(t * (Math.PI / 2)); }, easeInOutSine: function(t) { return -0.5 * (Math.cos(Math.PI * t) - 1); }, easeInExpo: function(t) { return (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)); }, easeOutExpo: function(t) { return (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1; }, easeInOutExpo: function(t) { if (t === 0) { return 0; } if (t === 1) { return 1; } if ((t /= 0.5) < 1) { return 0.5 * Math.pow(2, 10 * (t - 1)); } return 0.5 * (-Math.pow(2, -10 * --t) + 2); }, easeInCirc: function(t) { if (t >= 1) { return t; } return -(Math.sqrt(1 - t * t) - 1); }, easeOutCirc: function(t) { return Math.sqrt(1 - (t = t - 1) * t); }, easeInOutCirc: function(t) { if ((t /= 0.5) < 1) { return -0.5 * (Math.sqrt(1 - t * t) - 1); } return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1); }, easeInElastic: function(t) { var s = 1.70158; var p = 0; var a = 1; if (t === 0) { return 0; } if (t === 1) { return 1; } if (!p) { p = 0.3; } if (a < 1) { a = 1; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(1 / a); } return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); }, easeOutElastic: function(t) { var s = 1.70158; var p = 0; var a = 1; if (t === 0) { return 0; } if (t === 1) { return 1; } if (!p) { p = 0.3; } if (a < 1) { a = 1; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(1 / a); } return a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1; }, easeInOutElastic: function(t) { var s = 1.70158; var p = 0; var a = 1; if (t === 0) { return 0; } if ((t /= 0.5) === 2) { return 1; } if (!p) { p = 0.45; } if (a < 1) { a = 1; s = p / 4; } else { s = p / (2 * Math.PI) * Math.asin(1 / a); } if (t < 1) { return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p)); } return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1; }, easeInBack: function(t) { var s = 1.70158; return t * t * ((s + 1) * t - s); }, easeOutBack: function(t) { var s = 1.70158; return (t = t - 1) * t * ((s + 1) * t + s) + 1; }, easeInOutBack: function(t) { var s = 1.70158; if ((t /= 0.5) < 1) { return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s)); } return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2); }, easeInBounce: function(t) { return 1 - effects.easeOutBounce(1 - t); }, easeOutBounce: function(t) { if (t < (1 / 2.75)) { return 7.5625 * t * t; } if (t < (2 / 2.75)) { return 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75; } if (t < (2.5 / 2.75)) { return 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375; } return 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375; }, easeInOutBounce: function(t) { if (t < 0.5) { return effects.easeInBounce(t * 2) * 0.5; } return effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5; } }; module.exports = { effects: effects }; // DEPRECATIONS /** * Provided for backward compatibility, use Chart.helpers.easing.effects instead. * @function Chart.helpers.easingEffects * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.easingEffects = effects; },{"42":42}],44:[function(require,module,exports){ 'use strict'; var helpers = require(42); /** * @alias Chart.helpers.options * @namespace */ module.exports = { /** * Converts the given line height `value` in pixels for a specific font `size`. * @param {Number|String} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em'). * @param {Number} size - The font size (in pixels) used to resolve relative `value`. * @returns {Number} The effective line height in pixels (size * 1.2 if value is invalid). * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height * @since 2.7.0 */ toLineHeight: function(value, size) { var matches = ('' + value).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/); if (!matches || matches[1] === 'normal') { return size * 1.2; } value = +matches[2]; switch (matches[3]) { case 'px': return value; case '%': value /= 100; break; default: break; } return size * value; }, /** * Converts the given value into a padding object with pre-computed width/height. * @param {Number|Object} value - If a number, set the value to all TRBL component, * else, if and object, use defined properties and sets undefined ones to 0. * @returns {Object} The padding values (top, right, bottom, left, width, height) * @since 2.7.0 */ toPadding: function(value) { var t, r, b, l; if (helpers.isObject(value)) { t = +value.top || 0; r = +value.right || 0; b = +value.bottom || 0; l = +value.left || 0; } else { t = r = b = l = +value || 0; } return { top: t, right: r, bottom: b, left: l, height: t + b, width: l + r }; }, /** * Evaluates the given `inputs` sequentially and returns the first defined value. * @param {Array[]} inputs - An array of values, falling back to the last value. * @param {Object} [context] - If defined and the current value is a function, the value * is called with `context` as first argument and the result becomes the new input. * @param {Number} [index] - If defined and the current value is an array, the value * at `index` become the new input. * @since 2.7.0 */ resolve: function(inputs, context, index) { var i, ilen, value; for (i = 0, ilen = inputs.length; i < ilen; ++i) { value = inputs[i]; if (value === undefined) { continue; } if (context !== undefined && typeof value === 'function') { value = value(context); } if (index !== undefined && helpers.isArray(value)) { value = value[index]; } if (value !== undefined) { return value; } } } }; },{"42":42}],45:[function(require,module,exports){ 'use strict'; module.exports = require(42); module.exports.easing = require(43); module.exports.canvas = require(41); module.exports.options = require(44); },{"41":41,"42":42,"43":43,"44":44}],46:[function(require,module,exports){ /** * Platform fallback implementation (minimal). * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939 */ module.exports = { acquireContext: function(item) { if (item && item.canvas) { // Support for any object associated to a canvas (including a context2d) item = item.canvas; } return item && item.getContext('2d') || null; } }; },{}],47:[function(require,module,exports){ /** * Chart.Platform implementation for targeting a web browser */ 'use strict'; var helpers = require(45); var EXPANDO_KEY = '$chartjs'; var CSS_PREFIX = 'chartjs-'; var CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor'; var CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation'; var ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart']; /** * DOM event types -> Chart.js event types. * Note: only events with different types are mapped. * @see https://developer.mozilla.org/en-US/docs/Web/Events */ var EVENT_TYPES = { touchstart: 'mousedown', touchmove: 'mousemove', touchend: 'mouseup', pointerenter: 'mouseenter', pointerdown: 'mousedown', pointermove: 'mousemove', pointerup: 'mouseup', pointerleave: 'mouseout', pointerout: 'mouseout' }; /** * The "used" size is the final value of a dimension property after all calculations have * been performed. This method uses the computed style of `element` but returns undefined * if the computed style is not expressed in pixels. That can happen in some cases where * `element` has a size relative to its parent and this last one is not yet displayed, * for example because of `display: none` on a parent node. * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value * @returns {Number} Size in pixels or undefined if unknown. */ function readUsedSize(element, property) { var value = helpers.getStyle(element, property); var matches = value && value.match(/^(\d+)(\.\d+)?px$/); return matches ? Number(matches[1]) : undefined; } /** * Initializes the canvas style and render size without modifying the canvas display size, * since responsiveness is handled by the controller.resize() method. The config is used * to determine the aspect ratio to apply in case no explicit height has been specified. */ function initCanvas(canvas, config) { var style = canvas.style; // NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it // returns null or '' if no explicit value has been set to the canvas attribute. var renderHeight = canvas.getAttribute('height'); var renderWidth = canvas.getAttribute('width'); // Chart.js modifies some canvas values that we want to restore on destroy canvas[EXPANDO_KEY] = { initial: { height: renderHeight, width: renderWidth, style: { display: style.display, height: style.height, width: style.width } } }; // Force canvas to display as block to avoid extra space caused by inline // elements, which would interfere with the responsive resize process. // https://github.com/chartjs/Chart.js/issues/2538 style.display = style.display || 'block'; if (renderWidth === null || renderWidth === '') { var displayWidth = readUsedSize(canvas, 'width'); if (displayWidth !== undefined) { canvas.width = displayWidth; } } if (renderHeight === null || renderHeight === '') { if (canvas.style.height === '') { // If no explicit render height and style height, let's apply the aspect ratio, // which one can be specified by the user but also by charts as default option // (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2. canvas.height = canvas.width / (config.options.aspectRatio || 2); } else { var displayHeight = readUsedSize(canvas, 'height'); if (displayWidth !== undefined) { canvas.height = displayHeight; } } } return canvas; } /** * Detects support for options object argument in addEventListener. * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support * @private */ var supportsEventListenerOptions = (function() { var supports = false; try { var options = Object.defineProperty({}, 'passive', { get: function() { supports = true; } }); window.addEventListener('e', null, options); } catch (e) { // continue regardless of error } return supports; }()); // Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events. // https://github.com/chartjs/Chart.js/issues/4287 var eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false; function addEventListener(node, type, listener) { node.addEventListener(type, listener, eventListenerOptions); } function removeEventListener(node, type, listener) { node.removeEventListener(type, listener, eventListenerOptions); } function createEvent(type, chart, x, y, nativeEvent) { return { type: type, chart: chart, native: nativeEvent || null, x: x !== undefined ? x : null, y: y !== undefined ? y : null, }; } function fromNativeEvent(event, chart) { var type = EVENT_TYPES[event.type] || event.type; var pos = helpers.getRelativePosition(event, chart); return createEvent(type, chart, pos.x, pos.y, event); } function throttled(fn, thisArg) { var ticking = false; var args = []; return function() { args = Array.prototype.slice.call(arguments); thisArg = thisArg || this; if (!ticking) { ticking = true; helpers.requestAnimFrame.call(window, function() { ticking = false; fn.apply(thisArg, args); }); } }; } // Implementation based on https://github.com/marcj/css-element-queries function createResizer(handler) { var resizer = document.createElement('div'); var cls = CSS_PREFIX + 'size-monitor'; var maxSize = 1000000; var style = 'position:absolute;' + 'left:0;' + 'top:0;' + 'right:0;' + 'bottom:0;' + 'overflow:hidden;' + 'pointer-events:none;' + 'visibility:hidden;' + 'z-index:-1;'; resizer.style.cssText = style; resizer.className = cls; resizer.innerHTML = '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; var expand = resizer.childNodes[0]; var shrink = resizer.childNodes[1]; resizer._reset = function() { expand.scrollLeft = maxSize; expand.scrollTop = maxSize; shrink.scrollLeft = maxSize; shrink.scrollTop = maxSize; }; var onScroll = function() { resizer._reset(); handler(); }; addEventListener(expand, 'scroll', onScroll.bind(expand, 'expand')); addEventListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink')); return resizer; } // https://davidwalsh.name/detect-node-insertion function watchForRender(node, handler) { var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); var proxy = expando.renderProxy = function(e) { if (e.animationName === CSS_RENDER_ANIMATION) { handler(); } }; helpers.each(ANIMATION_START_EVENTS, function(type) { addEventListener(node, type, proxy); }); // #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class // is removed then added back immediately (same animation frame?). Accessing the // `offsetParent` property will force a reflow and re-evaluate the CSS animation. // https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics // https://github.com/chartjs/Chart.js/issues/4737 expando.reflow = !!node.offsetParent; node.classList.add(CSS_RENDER_MONITOR); } function unwatchForRender(node) { var expando = node[EXPANDO_KEY] || {}; var proxy = expando.renderProxy; if (proxy) { helpers.each(ANIMATION_START_EVENTS, function(type) { removeEventListener(node, type, proxy); }); delete expando.renderProxy; } node.classList.remove(CSS_RENDER_MONITOR); } function addResizeListener(node, listener, chart) { var expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {}); // Let's keep track of this added resizer and thus avoid DOM query when removing it. var resizer = expando.resizer = createResizer(throttled(function() { if (expando.resizer) { return listener(createEvent('resize', chart)); } })); // The resizer needs to be attached to the node parent, so we first need to be // sure that `node` is attached to the DOM before injecting the resizer element. watchForRender(node, function() { if (expando.resizer) { var container = node.parentNode; if (container && container !== resizer.parentNode) { container.insertBefore(resizer, container.firstChild); } // The container size might have changed, let's reset the resizer state. resizer._reset(); } }); } function removeResizeListener(node) { var expando = node[EXPANDO_KEY] || {}; var resizer = expando.resizer; delete expando.resizer; unwatchForRender(node); if (resizer && resizer.parentNode) { resizer.parentNode.removeChild(resizer); } } function injectCSS(platform, css) { // http://stackoverflow.com/q/3922139 var style = platform._style || document.createElement('style'); if (!platform._style) { platform._style = style; css = '/* Chart.js */\n' + css; style.setAttribute('type', 'text/css'); document.getElementsByTagName('head')[0].appendChild(style); } style.appendChild(document.createTextNode(css)); } module.exports = { /** * This property holds whether this platform is enabled for the current environment. * Currently used by platform.js to select the proper implementation. * @private */ _enabled: typeof window !== 'undefined' && typeof document !== 'undefined', initialize: function() { var keyframes = 'from{opacity:0.99}to{opacity:1}'; injectCSS(this, // DOM rendering detection // https://davidwalsh.name/detect-node-insertion '@-webkit-keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + '@keyframes ' + CSS_RENDER_ANIMATION + '{' + keyframes + '}' + '.' + CSS_RENDER_MONITOR + '{' + '-webkit-animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + 'animation:' + CSS_RENDER_ANIMATION + ' 0.001s;' + '}' ); }, acquireContext: function(item, config) { if (typeof item === 'string') { item = document.getElementById(item); } else if (item.length) { // Support for array based queries (such as jQuery) item = item[0]; } if (item && item.canvas) { // Support for any object associated to a canvas (including a context2d) item = item.canvas; } // To prevent canvas fingerprinting, some add-ons undefine the getContext // method, for example: https://github.com/kkapsner/CanvasBlocker // https://github.com/chartjs/Chart.js/issues/2807 var context = item && item.getContext && item.getContext('2d'); // `instanceof HTMLCanvasElement/CanvasRenderingContext2D` fails when the item is // inside an iframe or when running in a protected environment. We could guess the // types from their toString() value but let's keep things flexible and assume it's // a sufficient condition if the item has a context2D which has item as `canvas`. // https://github.com/chartjs/Chart.js/issues/3887 // https://github.com/chartjs/Chart.js/issues/4102 // https://github.com/chartjs/Chart.js/issues/4152 if (context && context.canvas === item) { initCanvas(item, config); return context; } return null; }, releaseContext: function(context) { var canvas = context.canvas; if (!canvas[EXPANDO_KEY]) { return; } var initial = canvas[EXPANDO_KEY].initial; ['height', 'width'].forEach(function(prop) { var value = initial[prop]; if (helpers.isNullOrUndef(value)) { canvas.removeAttribute(prop); } else { canvas.setAttribute(prop, value); } }); helpers.each(initial.style || {}, function(value, key) { canvas.style[key] = value; }); // The canvas render size might have been changed (and thus the state stack discarded), // we can't use save() and restore() to restore the initial state. So make sure that at // least the canvas context is reset to the default state by setting the canvas width. // https://www.w3.org/TR/2011/WD-html5-20110525/the-canvas-element.html canvas.width = canvas.width; delete canvas[EXPANDO_KEY]; }, addEventListener: function(chart, type, listener) { var canvas = chart.canvas; if (type === 'resize') { // Note: the resize event is not supported on all browsers. addResizeListener(canvas, listener, chart); return; } var expando = listener[EXPANDO_KEY] || (listener[EXPANDO_KEY] = {}); var proxies = expando.proxies || (expando.proxies = {}); var proxy = proxies[chart.id + '_' + type] = function(event) { listener(fromNativeEvent(event, chart)); }; addEventListener(canvas, type, proxy); }, removeEventListener: function(chart, type, listener) { var canvas = chart.canvas; if (type === 'resize') { // Note: the resize event is not supported on all browsers. removeResizeListener(canvas, listener); return; } var expando = listener[EXPANDO_KEY] || {}; var proxies = expando.proxies || {}; var proxy = proxies[chart.id + '_' + type]; if (!proxy) { return; } removeEventListener(canvas, type, proxy); } }; // DEPRECATIONS /** * Provided for backward compatibility, use EventTarget.addEventListener instead. * EventTarget.addEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener * @function Chart.helpers.addEvent * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.addEvent = addEventListener; /** * Provided for backward compatibility, use EventTarget.removeEventListener instead. * EventTarget.removeEventListener compatibility: Chrome, Opera 7, Safari, FF1.5+, IE9+ * @see https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener * @function Chart.helpers.removeEvent * @deprecated since version 2.7.0 * @todo remove at version 3 * @private */ helpers.removeEvent = removeEventListener; },{"45":45}],48:[function(require,module,exports){ 'use strict'; var helpers = require(45); var basic = require(46); var dom = require(47); // @TODO Make possible to select another platform at build time. var implementation = dom._enabled ? dom : basic; /** * @namespace Chart.platform * @see https://chartjs.gitbooks.io/proposals/content/Platform.html * @since 2.4.0 */ module.exports = helpers.extend({ /** * @since 2.7.0 */ initialize: function() {}, /** * Called at chart construction time, returns a context2d instance implementing * the [W3C Canvas 2D Context API standard]{@link https://www.w3.org/TR/2dcontext/}. * @param {*} item - The native item from which to acquire context (platform specific) * @param {Object} options - The chart options * @returns {CanvasRenderingContext2D} context2d instance */ acquireContext: function() {}, /** * Called at chart destruction time, releases any resources associated to the context * previously returned by the acquireContext() method. * @param {CanvasRenderingContext2D} context - The context2d instance * @returns {Boolean} true if the method succeeded, else false */ releaseContext: function() {}, /** * Registers the specified listener on the given chart. * @param {Chart} chart - Chart from which to listen for event * @param {String} type - The ({@link IEvent}) type to listen for * @param {Function} listener - Receives a notification (an object that implements * the {@link IEvent} interface) when an event of the specified type occurs. */ addEventListener: function() {}, /** * Removes the specified listener previously registered with addEventListener. * @param {Chart} chart -Chart from which to remove the listener * @param {String} type - The ({@link IEvent}) type to remove * @param {Function} listener - The listener function to remove from the event target. */ removeEventListener: function() {} }, implementation); /** * @interface IPlatform * Allows abstracting platform dependencies away from the chart * @borrows Chart.platform.acquireContext as acquireContext * @borrows Chart.platform.releaseContext as releaseContext * @borrows Chart.platform.addEventListener as addEventListener * @borrows Chart.platform.removeEventListener as removeEventListener */ /** * @interface IEvent * @prop {String} type - The event type name, possible values are: * 'contextmenu', 'mouseenter', 'mousedown', 'mousemove', 'mouseup', 'mouseout', * 'click', 'dblclick', 'keydown', 'keypress', 'keyup' and 'resize' * @prop {*} native - The original native event (null for emulated events, e.g. 'resize') * @prop {Number} x - The mouse x position, relative to the canvas (null for incompatible events) * @prop {Number} y - The mouse y position, relative to the canvas (null for incompatible events) */ },{"45":45,"46":46,"47":47}],49:[function(require,module,exports){ /** * Plugin based on discussion from the following Chart.js issues: * @see https://github.com/chartjs/Chart.js/issues/2380#issuecomment-279961569 * @see https://github.com/chartjs/Chart.js/issues/2440#issuecomment-256461897 */ 'use strict'; var defaults = require(25); var elements = require(40); var helpers = require(45); defaults._set('global', { plugins: { filler: { propagate: true } } }); module.exports = function() { var mappers = { dataset: function(source) { var index = source.fill; var chart = source.chart; var meta = chart.getDatasetMeta(index); var visible = meta && chart.isDatasetVisible(index); var points = (visible && meta.dataset._children) || []; var length = points.length || 0; return !length ? null : function(point, i) { return (i < length && points[i]._view) || null; }; }, boundary: function(source) { var boundary = source.boundary; var x = boundary ? boundary.x : null; var y = boundary ? boundary.y : null; return function(point) { return { x: x === null ? point.x : x, y: y === null ? point.y : y, }; }; } }; // @todo if (fill[0] === '#') function decodeFill(el, index, count) { var model = el._model || {}; var fill = model.fill; var target; if (fill === undefined) { fill = !!model.backgroundColor; } if (fill === false || fill === null) { return false; } if (fill === true) { return 'origin'; } target = parseFloat(fill, 10); if (isFinite(target) && Math.floor(target) === target) { if (fill[0] === '-' || fill[0] === '+') { target = index + target; } if (target === index || target < 0 || target >= count) { return false; } return target; } switch (fill) { // compatibility case 'bottom': return 'start'; case 'top': return 'end'; case 'zero': return 'origin'; // supported boundaries case 'origin': case 'start': case 'end': return fill; // invalid fill values default: return false; } } function computeBoundary(source) { var model = source.el._model || {}; var scale = source.el._scale || {}; var fill = source.fill; var target = null; var horizontal; if (isFinite(fill)) { return null; } // Backward compatibility: until v3, we still need to support boundary values set on // the model (scaleTop, scaleBottom and scaleZero) because some external plugins and // controllers might still use it (e.g. the Smith chart). if (fill === 'start') { target = model.scaleBottom === undefined ? scale.bottom : model.scaleBottom; } else if (fill === 'end') { target = model.scaleTop === undefined ? scale.top : model.scaleTop; } else if (model.scaleZero !== undefined) { target = model.scaleZero; } else if (scale.getBasePosition) { target = scale.getBasePosition(); } else if (scale.getBasePixel) { target = scale.getBasePixel(); } if (target !== undefined && target !== null) { if (target.x !== undefined && target.y !== undefined) { return target; } if (typeof target === 'number' && isFinite(target)) { horizontal = scale.isHorizontal(); return { x: horizontal ? target : null, y: horizontal ? null : target }; } } return null; } function resolveTarget(sources, index, propagate) { var source = sources[index]; var fill = source.fill; var visited = [index]; var target; if (!propagate) { return fill; } while (fill !== false && visited.indexOf(fill) === -1) { if (!isFinite(fill)) { return fill; } target = sources[fill]; if (!target) { return false; } if (target.visible) { return fill; } visited.push(fill); fill = target.fill; } return false; } function createMapper(source) { var fill = source.fill; var type = 'dataset'; if (fill === false) { return null; } if (!isFinite(fill)) { type = 'boundary'; } return mappers[type](source); } function isDrawable(point) { return point && !point.skip; } function drawArea(ctx, curve0, curve1, len0, len1) { var i; if (!len0 || !len1) { return; } // building first area curve (normal) ctx.moveTo(curve0[0].x, curve0[0].y); for (i = 1; i < len0; ++i) { helpers.canvas.lineTo(ctx, curve0[i - 1], curve0[i]); } // joining the two area curves ctx.lineTo(curve1[len1 - 1].x, curve1[len1 - 1].y); // building opposite area curve (reverse) for (i = len1 - 1; i > 0; --i) { helpers.canvas.lineTo(ctx, curve1[i], curve1[i - 1], true); } } function doFill(ctx, points, mapper, view, color, loop) { var count = points.length; var span = view.spanGaps; var curve0 = []; var curve1 = []; var len0 = 0; var len1 = 0; var i, ilen, index, p0, p1, d0, d1; ctx.beginPath(); for (i = 0, ilen = (count + !!loop); i < ilen; ++i) { index = i % count; p0 = points[index]._view; p1 = mapper(p0, index, view); d0 = isDrawable(p0); d1 = isDrawable(p1); if (d0 && d1) { len0 = curve0.push(p0); len1 = curve1.push(p1); } else if (len0 && len1) { if (!span) { drawArea(ctx, curve0, curve1, len0, len1); len0 = len1 = 0; curve0 = []; curve1 = []; } else { if (d0) { curve0.push(p0); } if (d1) { curve1.push(p1); } } } } drawArea(ctx, curve0, curve1, len0, len1); ctx.closePath(); ctx.fillStyle = color; ctx.fill(); } return { id: 'filler', afterDatasetsUpdate: function(chart, options) { var count = (chart.data.datasets || []).length; var propagate = options.propagate; var sources = []; var meta, i, el, source; for (i = 0; i < count; ++i) { meta = chart.getDatasetMeta(i); el = meta.dataset; source = null; if (el && el._model && el instanceof elements.Line) { source = { visible: chart.isDatasetVisible(i), fill: decodeFill(el, i, count), chart: chart, el: el }; } meta.$filler = source; sources.push(source); } for (i = 0; i < count; ++i) { source = sources[i]; if (!source) { continue; } source.fill = resolveTarget(sources, i, propagate); source.boundary = computeBoundary(source); source.mapper = createMapper(source); } }, beforeDatasetDraw: function(chart, args) { var meta = args.meta.$filler; if (!meta) { return; } var ctx = chart.ctx; var el = meta.el; var view = el._view; var points = el._children || []; var mapper = meta.mapper; var color = view.backgroundColor || defaults.global.defaultColor; if (mapper && color && points.length) { helpers.canvas.clipArea(ctx, chart.chartArea); doFill(ctx, points, mapper, view, color, el._loop); helpers.canvas.unclipArea(ctx); } } }; }; },{"25":25,"40":40,"45":45}],50:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { legend: { display: true, position: 'top', fullWidth: true, reverse: false, weight: 1000, // a callback that will handle onClick: function(e, legendItem) { var index = legendItem.datasetIndex; var ci = this.chart; var meta = ci.getDatasetMeta(index); // See controller.isDatasetVisible comment meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null; // We hid a dataset ... rerender the chart ci.update(); }, onHover: null, labels: { boxWidth: 40, padding: 10, // Generates labels shown in the legend // Valid properties to return: // text : text to display // fillStyle : fill of coloured box // strokeStyle: stroke of coloured box // hidden : if this legend item refers to a hidden item // lineCap : cap style for line // lineDash // lineDashOffset : // lineJoin : // lineWidth : generateLabels: function(chart) { var data = chart.data; return helpers.isArray(data.datasets) ? data.datasets.map(function(dataset, i) { return { text: dataset.label, fillStyle: (!helpers.isArray(dataset.backgroundColor) ? dataset.backgroundColor : dataset.backgroundColor[0]), hidden: !chart.isDatasetVisible(i), lineCap: dataset.borderCapStyle, lineDash: dataset.borderDash, lineDashOffset: dataset.borderDashOffset, lineJoin: dataset.borderJoinStyle, lineWidth: dataset.borderWidth, strokeStyle: dataset.borderColor, pointStyle: dataset.pointStyle, // Below is extra data used for toggling the datasets datasetIndex: i }; }, this) : []; } } }, legendCallback: function(chart) { var text = []; text.push('
    '); for (var i = 0; i < chart.data.datasets.length; i++) { text.push('
  • '); if (chart.data.datasets[i].label) { text.push(chart.data.datasets[i].label); } text.push('
  • '); } text.push('
'); return text.join(''); } }); module.exports = function(Chart) { var layout = Chart.layoutService; var noop = helpers.noop; /** * Helper function to get the box width based on the usePointStyle option * @param labelopts {Object} the label options on the legend * @param fontSize {Number} the label font size * @return {Number} width of the color box area */ function getBoxWidth(labelOpts, fontSize) { return labelOpts.usePointStyle ? fontSize * Math.SQRT2 : labelOpts.boxWidth; } Chart.Legend = Element.extend({ initialize: function(config) { helpers.extend(this, config); // Contains hit boxes for each dataset (in dataset order) this.legendHitBoxes = []; // Are we in doughnut mode which has a different data type this.doughnutMode = false; }, // These methods are ordered by lifecycle. Utilities then follow. // Any function defined here is inherited by all legend types. // Any function can be extended by the legend type beforeUpdate: noop, update: function(maxWidth, maxHeight, margins) { var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); // Absorb the master measurements me.maxWidth = maxWidth; me.maxHeight = maxHeight; me.margins = margins; // Dimensions me.beforeSetDimensions(); me.setDimensions(); me.afterSetDimensions(); // Labels me.beforeBuildLabels(); me.buildLabels(); me.afterBuildLabels(); // Fit me.beforeFit(); me.fit(); me.afterFit(); // me.afterUpdate(); return me.minSize; }, afterUpdate: noop, // beforeSetDimensions: noop, setDimensions: function() { var me = this; // Set the unconstrained dimension before label rotation if (me.isHorizontal()) { // Reset position before calculating rotation me.width = me.maxWidth; me.left = 0; me.right = me.width; } else { me.height = me.maxHeight; // Reset position before calculating rotation me.top = 0; me.bottom = me.height; } // Reset padding me.paddingLeft = 0; me.paddingTop = 0; me.paddingRight = 0; me.paddingBottom = 0; // Reset minSize me.minSize = { width: 0, height: 0 }; }, afterSetDimensions: noop, // beforeBuildLabels: noop, buildLabels: function() { var me = this; var labelOpts = me.options.labels || {}; var legendItems = helpers.callback(labelOpts.generateLabels, [me.chart], me) || []; if (labelOpts.filter) { legendItems = legendItems.filter(function(item) { return labelOpts.filter(item, me.chart.data); }); } if (me.options.reverse) { legendItems.reverse(); } me.legendItems = legendItems; }, afterBuildLabels: noop, // beforeFit: noop, fit: function() { var me = this; var opts = me.options; var labelOpts = opts.labels; var display = opts.display; var ctx = me.ctx; var globalDefault = defaults.global; var valueOrDefault = helpers.valueOrDefault; var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); // Reset hit boxes var hitboxes = me.legendHitBoxes = []; var minSize = me.minSize; var isHorizontal = me.isHorizontal(); if (isHorizontal) { minSize.width = me.maxWidth; // fill all the width minSize.height = display ? 10 : 0; } else { minSize.width = display ? 10 : 0; minSize.height = me.maxHeight; // fill all the height } // Increase sizes here if (display) { ctx.font = labelFont; if (isHorizontal) { // Labels // Width of each line of legend boxes. Labels wrap onto multiple lines when there are too many to fit on one var lineWidths = me.lineWidths = [0]; var totalHeight = me.legendItems.length ? fontSize + (labelOpts.padding) : 0; ctx.textAlign = 'left'; ctx.textBaseline = 'top'; helpers.each(me.legendItems, function(legendItem, i) { var boxWidth = getBoxWidth(labelOpts, fontSize); var width = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; if (lineWidths[lineWidths.length - 1] + width + labelOpts.padding >= me.width) { totalHeight += fontSize + (labelOpts.padding); lineWidths[lineWidths.length] = me.left; } // Store the hitbox width and height here. Final position will be updated in `draw` hitboxes[i] = { left: 0, top: 0, width: width, height: fontSize }; lineWidths[lineWidths.length - 1] += width + labelOpts.padding; }); minSize.height += totalHeight; } else { var vPadding = labelOpts.padding; var columnWidths = me.columnWidths = []; var totalWidth = labelOpts.padding; var currentColWidth = 0; var currentColHeight = 0; var itemHeight = fontSize + vPadding; helpers.each(me.legendItems, function(legendItem, i) { var boxWidth = getBoxWidth(labelOpts, fontSize); var itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width; // If too tall, go to new column if (currentColHeight + itemHeight > minSize.height) { totalWidth += currentColWidth + labelOpts.padding; columnWidths.push(currentColWidth); // previous column width currentColWidth = 0; currentColHeight = 0; } // Get max width currentColWidth = Math.max(currentColWidth, itemWidth); currentColHeight += itemHeight; // Store the hitbox width and height here. Final position will be updated in `draw` hitboxes[i] = { left: 0, top: 0, width: itemWidth, height: fontSize }; }); totalWidth += currentColWidth; columnWidths.push(currentColWidth); minSize.width += totalWidth; } } me.width = minSize.width; me.height = minSize.height; }, afterFit: noop, // Shared Methods isHorizontal: function() { return this.options.position === 'top' || this.options.position === 'bottom'; }, // Actually draw the legend on the canvas draw: function() { var me = this; var opts = me.options; var labelOpts = opts.labels; var globalDefault = defaults.global; var lineDefault = globalDefault.elements.line; var legendWidth = me.width; var lineWidths = me.lineWidths; if (opts.display) { var ctx = me.ctx; var valueOrDefault = helpers.valueOrDefault; var fontColor = valueOrDefault(labelOpts.fontColor, globalDefault.defaultFontColor); var fontSize = valueOrDefault(labelOpts.fontSize, globalDefault.defaultFontSize); var fontStyle = valueOrDefault(labelOpts.fontStyle, globalDefault.defaultFontStyle); var fontFamily = valueOrDefault(labelOpts.fontFamily, globalDefault.defaultFontFamily); var labelFont = helpers.fontString(fontSize, fontStyle, fontFamily); var cursor; // Canvas setup ctx.textAlign = 'left'; ctx.textBaseline = 'middle'; ctx.lineWidth = 0.5; ctx.strokeStyle = fontColor; // for strikethrough effect ctx.fillStyle = fontColor; // render in correct colour ctx.font = labelFont; var boxWidth = getBoxWidth(labelOpts, fontSize); var hitboxes = me.legendHitBoxes; // current position var drawLegendBox = function(x, y, legendItem) { if (isNaN(boxWidth) || boxWidth <= 0) { return; } // Set the ctx for the box ctx.save(); ctx.fillStyle = valueOrDefault(legendItem.fillStyle, globalDefault.defaultColor); ctx.lineCap = valueOrDefault(legendItem.lineCap, lineDefault.borderCapStyle); ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, lineDefault.borderDashOffset); ctx.lineJoin = valueOrDefault(legendItem.lineJoin, lineDefault.borderJoinStyle); ctx.lineWidth = valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth); ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, globalDefault.defaultColor); var isLineWidthZero = (valueOrDefault(legendItem.lineWidth, lineDefault.borderWidth) === 0); if (ctx.setLineDash) { // IE 9 and 10 do not support line dash ctx.setLineDash(valueOrDefault(legendItem.lineDash, lineDefault.borderDash)); } if (opts.labels && opts.labels.usePointStyle) { // Recalculate x and y for drawPoint() because its expecting // x and y to be center of figure (instead of top left) var radius = fontSize * Math.SQRT2 / 2; var offSet = radius / Math.SQRT2; var centerX = x + offSet; var centerY = y + offSet; // Draw pointStyle as legend symbol helpers.canvas.drawPoint(ctx, legendItem.pointStyle, radius, centerX, centerY); } else { // Draw box as legend symbol if (!isLineWidthZero) { ctx.strokeRect(x, y, boxWidth, fontSize); } ctx.fillRect(x, y, boxWidth, fontSize); } ctx.restore(); }; var fillText = function(x, y, legendItem, textWidth) { var halfFontSize = fontSize / 2; var xLeft = boxWidth + halfFontSize + x; var yMiddle = y + halfFontSize; ctx.fillText(legendItem.text, xLeft, yMiddle); if (legendItem.hidden) { // Strikethrough the text if hidden ctx.beginPath(); ctx.lineWidth = 2; ctx.moveTo(xLeft, yMiddle); ctx.lineTo(xLeft + textWidth, yMiddle); ctx.stroke(); } }; // Horizontal var isHorizontal = me.isHorizontal(); if (isHorizontal) { cursor = { x: me.left + ((legendWidth - lineWidths[0]) / 2), y: me.top + labelOpts.padding, line: 0 }; } else { cursor = { x: me.left + labelOpts.padding, y: me.top + labelOpts.padding, line: 0 }; } var itemHeight = fontSize + labelOpts.padding; helpers.each(me.legendItems, function(legendItem, i) { var textWidth = ctx.measureText(legendItem.text).width; var width = boxWidth + (fontSize / 2) + textWidth; var x = cursor.x; var y = cursor.y; if (isHorizontal) { if (x + width >= legendWidth) { y = cursor.y += itemHeight; cursor.line++; x = cursor.x = me.left + ((legendWidth - lineWidths[cursor.line]) / 2); } } else if (y + itemHeight > me.bottom) { x = cursor.x = x + me.columnWidths[cursor.line] + labelOpts.padding; y = cursor.y = me.top + labelOpts.padding; cursor.line++; } drawLegendBox(x, y, legendItem); hitboxes[i].left = x; hitboxes[i].top = y; // Fill the actual label fillText(x, y, legendItem, textWidth); if (isHorizontal) { cursor.x += width + (labelOpts.padding); } else { cursor.y += itemHeight; } }); } }, /** * Handle an event * @private * @param {IEvent} event - The event to handle * @return {Boolean} true if a change occured */ handleEvent: function(e) { var me = this; var opts = me.options; var type = e.type === 'mouseup' ? 'click' : e.type; var changed = false; if (type === 'mousemove') { if (!opts.onHover) { return; } } else if (type === 'click') { if (!opts.onClick) { return; } } else { return; } // Chart event already has relative position in it var x = e.x; var y = e.y; if (x >= me.left && x <= me.right && y >= me.top && y <= me.bottom) { // See if we are touching one of the dataset boxes var lh = me.legendHitBoxes; for (var i = 0; i < lh.length; ++i) { var hitBox = lh[i]; if (x >= hitBox.left && x <= hitBox.left + hitBox.width && y >= hitBox.top && y <= hitBox.top + hitBox.height) { // Touching an element if (type === 'click') { // use e.native for backwards compatibility opts.onClick.call(me, e.native, me.legendItems[i]); changed = true; break; } else if (type === 'mousemove') { // use e.native for backwards compatibility opts.onHover.call(me, e.native, me.legendItems[i]); changed = true; break; } } } } return changed; } }); function createNewLegendAndAttach(chart, legendOpts) { var legend = new Chart.Legend({ ctx: chart.ctx, options: legendOpts, chart: chart }); layout.configure(chart, legend, legendOpts); layout.addBox(chart, legend); chart.legend = legend; } return { id: 'legend', beforeInit: function(chart) { var legendOpts = chart.options.legend; if (legendOpts) { createNewLegendAndAttach(chart, legendOpts); } }, beforeUpdate: function(chart) { var legendOpts = chart.options.legend; var legend = chart.legend; if (legendOpts) { helpers.mergeIf(legendOpts, defaults.global.legend); if (legend) { layout.configure(chart, legend, legendOpts); legend.options = legendOpts; } else { createNewLegendAndAttach(chart, legendOpts); } } else if (legend) { layout.removeBox(chart, legend); delete chart.legend; } }, afterEvent: function(chart, e) { var legend = chart.legend; if (legend) { legend.handleEvent(e); } } }; }; },{"25":25,"26":26,"45":45}],51:[function(require,module,exports){ 'use strict'; var defaults = require(25); var Element = require(26); var helpers = require(45); defaults._set('global', { title: { display: false, fontStyle: 'bold', fullWidth: true, lineHeight: 1.2, padding: 10, position: 'top', text: '', weight: 2000 // by default greater than legend (1000) to be above } }); module.exports = function(Chart) { var layout = Chart.layoutService; var noop = helpers.noop; Chart.Title = Element.extend({ initialize: function(config) { var me = this; helpers.extend(me, config); // Contains hit boxes for each dataset (in dataset order) me.legendHitBoxes = []; }, // These methods are ordered by lifecycle. Utilities then follow. beforeUpdate: noop, update: function(maxWidth, maxHeight, margins) { var me = this; // Update Lifecycle - Probably don't want to ever extend or overwrite this function ;) me.beforeUpdate(); // Absorb the master measurements me.maxWidth = maxWidth; me.maxHeight = maxHeight; me.margins = margins; // Dimensions me.beforeSetDimensions(); me.setDimensions(); me.afterSetDimensions(); // Labels me.beforeBuildLabels(); me.buildLabels(); me.afterBuildLabels(); // Fit me.beforeFit(); me.fit(); me.afterFit(); // me.afterUpdate(); return me.minSize; }, afterUpdate: noop, // beforeSetDimensions: noop, setDimensions: function() { var me = this; // Set the unconstrained dimension before label rotation if (me.isHorizontal()) { // Reset position before calculating rotation me.width = me.maxWidth; me.left = 0; me.right = me.width; } else { me.height = me.maxHeight; // Reset position before calculating rotation me.top = 0; me.bottom = me.height; } // Reset padding me.paddingLeft = 0; me.paddingTop = 0; me.paddingRight = 0; me.paddingBottom = 0; // Reset minSize me.minSize = { width: 0, height: 0 }; }, afterSetDimensions: noop, // beforeBuildLabels: noop, buildLabels: noop, afterBuildLabels: noop, // beforeFit: noop, fit: function() { var me = this; var valueOrDefault = helpers.valueOrDefault; var opts = me.options; var display = opts.display; var fontSize = valueOrDefault(opts.fontSize, defaults.global.defaultFontSize); var minSize = me.minSize; var lineCount = helpers.isArray(opts.text) ? opts.text.length : 1; var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); var textSize = display ? (lineCount * lineHeight) + (opts.padding * 2) : 0; if (me.isHorizontal()) { minSize.width = me.maxWidth; // fill all the width minSize.height = textSize; } else { minSize.width = textSize; minSize.height = me.maxHeight; // fill all the height } me.width = minSize.width; me.height = minSize.height; }, afterFit: noop, // Shared Methods isHorizontal: function() { var pos = this.options.position; return pos === 'top' || pos === 'bottom'; }, // Actually draw the title block on the canvas draw: function() { var me = this; var ctx = me.ctx; var valueOrDefault = helpers.valueOrDefault; var opts = me.options; var globalDefaults = defaults.global; if (opts.display) { var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize); var fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle); var fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily); var titleFont = helpers.fontString(fontSize, fontStyle, fontFamily); var lineHeight = helpers.options.toLineHeight(opts.lineHeight, fontSize); var offset = lineHeight / 2 + opts.padding; var rotation = 0; var top = me.top; var left = me.left; var bottom = me.bottom; var right = me.right; var maxWidth, titleX, titleY; ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour ctx.font = titleFont; // Horizontal if (me.isHorizontal()) { titleX = left + ((right - left) / 2); // midpoint of the width titleY = top + offset; maxWidth = right - left; } else { titleX = opts.position === 'left' ? left + offset : right - offset; titleY = top + ((bottom - top) / 2); maxWidth = bottom - top; rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5); } ctx.save(); ctx.translate(titleX, titleY); ctx.rotate(rotation); ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; var text = opts.text; if (helpers.isArray(text)) { var y = 0; for (var i = 0; i < text.length; ++i) { ctx.fillText(text[i], 0, y, maxWidth); y += lineHeight; } } else { ctx.fillText(text, 0, 0, maxWidth); } ctx.restore(); } } }); function createNewTitleBlockAndAttach(chart, titleOpts) { var title = new Chart.Title({ ctx: chart.ctx, options: titleOpts, chart: chart }); layout.configure(chart, title, titleOpts); layout.addBox(chart, title); chart.titleBlock = title; } return { id: 'title', beforeInit: function(chart) { var titleOpts = chart.options.title; if (titleOpts) { createNewTitleBlockAndAttach(chart, titleOpts); } }, beforeUpdate: function(chart) { var titleOpts = chart.options.title; var titleBlock = chart.titleBlock; if (titleOpts) { helpers.mergeIf(titleOpts, defaults.global.title); if (titleBlock) { layout.configure(chart, titleBlock, titleOpts); titleBlock.options = titleOpts; } else { createNewTitleBlockAndAttach(chart, titleOpts); } } else if (titleBlock) { Chart.layoutService.removeBox(chart, titleBlock); delete chart.titleBlock; } } }; }; },{"25":25,"26":26,"45":45}],52:[function(require,module,exports){ 'use strict'; module.exports = function(Chart) { // Default config for a category scale var defaultConfig = { position: 'bottom' }; var DatasetScale = Chart.Scale.extend({ /** * Internal function to get the correct labels. If data.xLabels or data.yLabels are defined, use those * else fall back to data.labels * @private */ getLabels: function() { var data = this.chart.data; return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels; }, determineDataLimits: function() { var me = this; var labels = me.getLabels(); me.minIndex = 0; me.maxIndex = labels.length - 1; var findIndex; if (me.options.ticks.min !== undefined) { // user specified min value findIndex = labels.indexOf(me.options.ticks.min); me.minIndex = findIndex !== -1 ? findIndex : me.minIndex; } if (me.options.ticks.max !== undefined) { // user specified max value findIndex = labels.indexOf(me.options.ticks.max); me.maxIndex = findIndex !== -1 ? findIndex : me.maxIndex; } me.min = labels[me.minIndex]; me.max = labels[me.maxIndex]; }, buildTicks: function() { var me = this; var labels = me.getLabels(); // If we are viewing some subset of labels, slice the original array me.ticks = (me.minIndex === 0 && me.maxIndex === labels.length - 1) ? labels : labels.slice(me.minIndex, me.maxIndex + 1); }, getLabelForIndex: function(index, datasetIndex) { var me = this; var data = me.chart.data; var isHorizontal = me.isHorizontal(); if (data.yLabels && !isHorizontal) { return me.getRightValue(data.datasets[datasetIndex].data[index]); } return me.ticks[index - me.minIndex]; }, // Used to get data value locations. Value can either be an index or a numerical value getPixelForValue: function(value, index) { var me = this; var offset = me.options.offset; // 1 is added because we need the length but we have the indexes var offsetAmt = Math.max((me.maxIndex + 1 - me.minIndex - (offset ? 0 : 1)), 1); // If value is a data object, then index is the index in the data array, // not the index of the scale. We need to change that. var valueCategory; if (value !== undefined && value !== null) { valueCategory = me.isHorizontal() ? value.x : value.y; } if (valueCategory !== undefined || (value !== undefined && isNaN(index))) { var labels = me.getLabels(); value = valueCategory || value; var idx = labels.indexOf(value); index = idx !== -1 ? idx : index; } if (me.isHorizontal()) { var valueWidth = me.width / offsetAmt; var widthOffset = (valueWidth * (index - me.minIndex)); if (offset) { widthOffset += (valueWidth / 2); } return me.left + Math.round(widthOffset); } var valueHeight = me.height / offsetAmt; var heightOffset = (valueHeight * (index - me.minIndex)); if (offset) { heightOffset += (valueHeight / 2); } return me.top + Math.round(heightOffset); }, getPixelForTick: function(index) { return this.getPixelForValue(this.ticks[index], index + this.minIndex, null); }, getValueForPixel: function(pixel) { var me = this; var offset = me.options.offset; var value; var offsetAmt = Math.max((me._ticks.length - (offset ? 0 : 1)), 1); var horz = me.isHorizontal(); var valueDimension = (horz ? me.width : me.height) / offsetAmt; pixel -= horz ? me.left : me.top; if (offset) { pixel -= (valueDimension / 2); } if (pixel <= 0) { value = 0; } else { value = Math.round(pixel / valueDimension); } return value + me.minIndex; }, getBasePixel: function() { return this.bottom; } }); Chart.scaleService.registerScaleType('category', DatasetScale, defaultConfig); }; },{}],53:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var defaultConfig = { position: 'left', ticks: { callback: Ticks.formatters.linear } }; var LinearScale = Chart.LinearScaleBase.extend({ determineDataLimits: function() { var me = this; var opts = me.options; var chart = me.chart; var data = chart.data; var datasets = data.datasets; var isHorizontal = me.isHorizontal(); var DEFAULT_MIN = 0; var DEFAULT_MAX = 1; function IDMatches(meta) { return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; } // First Calculate the range me.min = null; me.max = null; var hasStacks = opts.stacked; if (hasStacks === undefined) { helpers.each(datasets, function(dataset, datasetIndex) { if (hasStacks) { return; } var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) { hasStacks = true; } }); } if (opts.stacked || hasStacks) { var valuesPerStack = {}; helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); var key = [ meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), meta.stack ].join('.'); if (valuesPerStack[key] === undefined) { valuesPerStack[key] = { positiveValues: [], negativeValues: [] }; } // Store these per type var positiveValues = valuesPerStack[key].positiveValues; var negativeValues = valuesPerStack[key].negativeValues; if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } positiveValues[index] = positiveValues[index] || 0; negativeValues[index] = negativeValues[index] || 0; if (opts.relativePoints) { positiveValues[index] = 100; } else if (value < 0) { negativeValues[index] += value; } else { positiveValues[index] += value; } }); } }); helpers.each(valuesPerStack, function(valuesForType) { var values = valuesForType.positiveValues.concat(valuesForType.negativeValues); var minVal = helpers.min(values); var maxVal = helpers.max(values); me.min = me.min === null ? minVal : Math.min(me.min, minVal); me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); }); } else { helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } if (me.min === null) { me.min = value; } else if (value < me.min) { me.min = value; } if (me.max === null) { me.max = value; } else if (value > me.max) { me.max = value; } }); } }); } me.min = isFinite(me.min) && !isNaN(me.min) ? me.min : DEFAULT_MIN; me.max = isFinite(me.max) && !isNaN(me.max) ? me.max : DEFAULT_MAX; // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero this.handleTickRangeOptions(); }, getTickLimit: function() { var maxTicks; var me = this; var tickOpts = me.options.ticks; if (me.isHorizontal()) { maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.width / 50)); } else { // The factor of 2 used to scale the font size has been experimentally determined. var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, defaults.global.defaultFontSize); maxTicks = Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(me.height / (2 * tickFontSize))); } return maxTicks; }, // Called after the ticks are built. We need handleDirectionalChanges: function() { if (!this.isHorizontal()) { // We are in a vertical orientation. The top value is the highest. So reverse the array this.ticks.reverse(); } }, getLabelForIndex: function(index, datasetIndex) { return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); }, // Utils getPixelForValue: function(value) { // This must be called after fit has been run so that // this.left, this.top, this.right, and this.bottom have been defined var me = this; var start = me.start; var rightValue = +me.getRightValue(value); var pixel; var range = me.end - start; if (me.isHorizontal()) { pixel = me.left + (me.width / range * (rightValue - start)); return Math.round(pixel); } pixel = me.bottom - (me.height / range * (rightValue - start)); return Math.round(pixel); }, getValueForPixel: function(pixel) { var me = this; var isHorizontal = me.isHorizontal(); var innerDimension = isHorizontal ? me.width : me.height; var offset = (isHorizontal ? pixel - me.left : me.bottom - pixel) / innerDimension; return me.start + ((me.end - me.start) * offset); }, getPixelForTick: function(index) { return this.getPixelForValue(this.ticksAsNumbers[index]); } }); Chart.scaleService.registerScaleType('linear', LinearScale, defaultConfig); }; },{"25":25,"34":34,"45":45}],54:[function(require,module,exports){ 'use strict'; var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var noop = helpers.noop; Chart.LinearScaleBase = Chart.Scale.extend({ getRightValue: function(value) { if (typeof value === 'string') { return +value; } return Chart.Scale.prototype.getRightValue.call(this, value); }, handleTickRangeOptions: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; // If we are forcing it to begin at 0, but 0 will already be rendered on the chart, // do nothing since that would make the chart weird. If the user really wants a weird chart // axis, they can manually override it if (tickOpts.beginAtZero) { var minSign = helpers.sign(me.min); var maxSign = helpers.sign(me.max); if (minSign < 0 && maxSign < 0) { // move the top up to 0 me.max = 0; } else if (minSign > 0 && maxSign > 0) { // move the bottom down to 0 me.min = 0; } } var setMin = tickOpts.min !== undefined || tickOpts.suggestedMin !== undefined; var setMax = tickOpts.max !== undefined || tickOpts.suggestedMax !== undefined; if (tickOpts.min !== undefined) { me.min = tickOpts.min; } else if (tickOpts.suggestedMin !== undefined) { if (me.min === null) { me.min = tickOpts.suggestedMin; } else { me.min = Math.min(me.min, tickOpts.suggestedMin); } } if (tickOpts.max !== undefined) { me.max = tickOpts.max; } else if (tickOpts.suggestedMax !== undefined) { if (me.max === null) { me.max = tickOpts.suggestedMax; } else { me.max = Math.max(me.max, tickOpts.suggestedMax); } } if (setMin !== setMax) { // We set the min or the max but not both. // So ensure that our range is good // Inverted or 0 length range can happen when // ticks.min is set, and no datasets are visible if (me.min >= me.max) { if (setMin) { me.max = me.min + 1; } else { me.min = me.max - 1; } } } if (me.min === me.max) { me.max++; if (!tickOpts.beginAtZero) { me.min--; } } }, getTickLimit: noop, handleDirectionalChanges: noop, buildTicks: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; // Figure out what the max number of ticks we can support it is based on the size of // the axis area. For now, we say that the minimum tick spacing in pixels must be 50 // We also limit the maximum number of ticks to 11 which gives a nice 10 squares on // the graph. Make sure we always have at least 2 ticks var maxTicks = me.getTickLimit(); maxTicks = Math.max(2, maxTicks); var numericGeneratorOptions = { maxTicks: maxTicks, min: tickOpts.min, max: tickOpts.max, stepSize: helpers.valueOrDefault(tickOpts.fixedStepSize, tickOpts.stepSize) }; var ticks = me.ticks = Ticks.generators.linear(numericGeneratorOptions, me); me.handleDirectionalChanges(); // At this point, we need to update our max and min given the tick values since we have expanded the // range of the scale me.max = helpers.max(ticks); me.min = helpers.min(ticks); if (tickOpts.reverse) { ticks.reverse(); me.start = me.max; me.end = me.min; } else { me.start = me.min; me.end = me.max; } }, convertTicksToLabels: function() { var me = this; me.ticksAsNumbers = me.ticks.slice(); me.zeroLineIndex = me.ticks.indexOf(0); Chart.Scale.prototype.convertTicksToLabels.call(me); } }); }; },{"34":34,"45":45}],55:[function(require,module,exports){ 'use strict'; var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var defaultConfig = { position: 'left', // label settings ticks: { callback: Ticks.formatters.logarithmic } }; var LogarithmicScale = Chart.Scale.extend({ determineDataLimits: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; var chart = me.chart; var data = chart.data; var datasets = data.datasets; var valueOrDefault = helpers.valueOrDefault; var isHorizontal = me.isHorizontal(); function IDMatches(meta) { return isHorizontal ? meta.xAxisID === me.id : meta.yAxisID === me.id; } // Calculate Range me.min = null; me.max = null; me.minNotZero = null; var hasStacks = opts.stacked; if (hasStacks === undefined) { helpers.each(datasets, function(dataset, datasetIndex) { if (hasStacks) { return; } var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta) && meta.stack !== undefined) { hasStacks = true; } }); } if (opts.stacked || hasStacks) { var valuesPerStack = {}; helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); var key = [ meta.type, // we have a separate stack for stack=undefined datasets when the opts.stacked is undefined ((opts.stacked === undefined && meta.stack === undefined) ? datasetIndex : ''), meta.stack ].join('.'); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { if (valuesPerStack[key] === undefined) { valuesPerStack[key] = []; } helpers.each(dataset.data, function(rawValue, index) { var values = valuesPerStack[key]; var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } values[index] = values[index] || 0; if (opts.relativePoints) { values[index] = 100; } else { // Don't need to split positive and negative since the log scale can't handle a 0 crossing values[index] += value; } }); } }); helpers.each(valuesPerStack, function(valuesForType) { var minVal = helpers.min(valuesForType); var maxVal = helpers.max(valuesForType); me.min = me.min === null ? minVal : Math.min(me.min, minVal); me.max = me.max === null ? maxVal : Math.max(me.max, maxVal); }); } else { helpers.each(datasets, function(dataset, datasetIndex) { var meta = chart.getDatasetMeta(datasetIndex); if (chart.isDatasetVisible(datasetIndex) && IDMatches(meta)) { helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } if (me.min === null) { me.min = value; } else if (value < me.min) { me.min = value; } if (me.max === null) { me.max = value; } else if (value > me.max) { me.max = value; } if (value !== 0 && (me.minNotZero === null || value < me.minNotZero)) { me.minNotZero = value; } }); } }); } me.min = valueOrDefault(tickOpts.min, me.min); me.max = valueOrDefault(tickOpts.max, me.max); if (me.min === me.max) { if (me.min !== 0 && me.min !== null) { me.min = Math.pow(10, Math.floor(helpers.log10(me.min)) - 1); me.max = Math.pow(10, Math.floor(helpers.log10(me.max)) + 1); } else { me.min = 1; me.max = 10; } } }, buildTicks: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; var generationOptions = { min: tickOpts.min, max: tickOpts.max }; var ticks = me.ticks = Ticks.generators.logarithmic(generationOptions, me); if (!me.isHorizontal()) { // We are in a vertical orientation. The top value is the highest. So reverse the array ticks.reverse(); } // At this point, we need to update our max and min given the tick values since we have expanded the // range of the scale me.max = helpers.max(ticks); me.min = helpers.min(ticks); if (tickOpts.reverse) { ticks.reverse(); me.start = me.max; me.end = me.min; } else { me.start = me.min; me.end = me.max; } }, convertTicksToLabels: function() { this.tickValues = this.ticks.slice(); Chart.Scale.prototype.convertTicksToLabels.call(this); }, // Get the correct tooltip label getLabelForIndex: function(index, datasetIndex) { return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); }, getPixelForTick: function(index) { return this.getPixelForValue(this.tickValues[index]); }, getPixelForValue: function(value) { var me = this; var start = me.start; var newVal = +me.getRightValue(value); var opts = me.options; var tickOpts = opts.ticks; var innerDimension, pixel, range; if (me.isHorizontal()) { range = helpers.log10(me.end) - helpers.log10(start); // todo: if start === 0 if (newVal === 0) { pixel = me.left; } else { innerDimension = me.width; pixel = me.left + (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start))); } } else { // Bottom - top since pixels increase downward on a screen innerDimension = me.height; if (start === 0 && !tickOpts.reverse) { range = helpers.log10(me.end) - helpers.log10(me.minNotZero); if (newVal === start) { pixel = me.bottom; } else if (newVal === me.minNotZero) { pixel = me.bottom - innerDimension * 0.02; } else { pixel = me.bottom - innerDimension * 0.02 - (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero))); } } else if (me.end === 0 && tickOpts.reverse) { range = helpers.log10(me.start) - helpers.log10(me.minNotZero); if (newVal === me.end) { pixel = me.top; } else if (newVal === me.minNotZero) { pixel = me.top + innerDimension * 0.02; } else { pixel = me.top + innerDimension * 0.02 + (innerDimension * 0.98 / range * (helpers.log10(newVal) - helpers.log10(me.minNotZero))); } } else if (newVal === 0) { pixel = tickOpts.reverse ? me.top : me.bottom; } else { range = helpers.log10(me.end) - helpers.log10(start); innerDimension = me.height; pixel = me.bottom - (innerDimension / range * (helpers.log10(newVal) - helpers.log10(start))); } } return pixel; }, getValueForPixel: function(pixel) { var me = this; var range = helpers.log10(me.end) - helpers.log10(me.start); var value, innerDimension; if (me.isHorizontal()) { innerDimension = me.width; value = me.start * Math.pow(10, (pixel - me.left) * range / innerDimension); } else { // todo: if start === 0 innerDimension = me.height; value = Math.pow(10, (me.bottom - pixel) * range / innerDimension) / me.start; } return value; } }); Chart.scaleService.registerScaleType('logarithmic', LogarithmicScale, defaultConfig); }; },{"34":34,"45":45}],56:[function(require,module,exports){ 'use strict'; var defaults = require(25); var helpers = require(45); var Ticks = require(34); module.exports = function(Chart) { var globalDefaults = defaults.global; var defaultConfig = { display: true, // Boolean - Whether to animate scaling the chart from the centre animate: true, position: 'chartArea', angleLines: { display: true, color: 'rgba(0, 0, 0, 0.1)', lineWidth: 1 }, gridLines: { circular: false }, // label settings ticks: { // Boolean - Show a backdrop to the scale label showLabelBackdrop: true, // String - The colour of the label backdrop backdropColor: 'rgba(255,255,255,0.75)', // Number - The backdrop padding above & below the label in pixels backdropPaddingY: 2, // Number - The backdrop padding to the side of the label in pixels backdropPaddingX: 2, callback: Ticks.formatters.linear }, pointLabels: { // Boolean - if true, show point labels display: true, // Number - Point label font size in pixels fontSize: 10, // Function - Used to convert point labels callback: function(label) { return label; } } }; function getValueCount(scale) { var opts = scale.options; return opts.angleLines.display || opts.pointLabels.display ? scale.chart.data.labels.length : 0; } function getPointLabelFontOptions(scale) { var pointLabelOptions = scale.options.pointLabels; var fontSize = helpers.valueOrDefault(pointLabelOptions.fontSize, globalDefaults.defaultFontSize); var fontStyle = helpers.valueOrDefault(pointLabelOptions.fontStyle, globalDefaults.defaultFontStyle); var fontFamily = helpers.valueOrDefault(pointLabelOptions.fontFamily, globalDefaults.defaultFontFamily); var font = helpers.fontString(fontSize, fontStyle, fontFamily); return { size: fontSize, style: fontStyle, family: fontFamily, font: font }; } function measureLabelSize(ctx, fontSize, label) { if (helpers.isArray(label)) { return { w: helpers.longestText(ctx, ctx.font, label), h: (label.length * fontSize) + ((label.length - 1) * 1.5 * fontSize) }; } return { w: ctx.measureText(label).width, h: fontSize }; } function determineLimits(angle, pos, size, min, max) { if (angle === min || angle === max) { return { start: pos - (size / 2), end: pos + (size / 2) }; } else if (angle < min || angle > max) { return { start: pos - size - 5, end: pos }; } return { start: pos, end: pos + size + 5 }; } /** * Helper function to fit a radial linear scale with point labels */ function fitWithPointLabels(scale) { /* * Right, this is really confusing and there is a lot of maths going on here * The gist of the problem is here: https://gist.github.com/nnnick/696cc9c55f4b0beb8fe9 * * Reaction: https://dl.dropboxusercontent.com/u/34601363/toomuchscience.gif * * Solution: * * We assume the radius of the polygon is half the size of the canvas at first * at each index we check if the text overlaps. * * Where it does, we store that angle and that index. * * After finding the largest index and angle we calculate how much we need to remove * from the shape radius to move the point inwards by that x. * * We average the left and right distances to get the maximum shape radius that can fit in the box * along with labels. * * Once we have that, we can find the centre point for the chart, by taking the x text protrusion * on each side, removing that from the size, halving it and adding the left x protrusion width. * * This will mean we have a shape fitted to the canvas, as large as it can be with the labels * and position it in the most space efficient manner * * https://dl.dropboxusercontent.com/u/34601363/yeahscience.gif */ var plFont = getPointLabelFontOptions(scale); // Get maximum radius of the polygon. Either half the height (minus the text width) or half the width. // Use this to calculate the offset + change. - Make sure L/R protrusion is at least 0 to stop issues with centre points var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); var furthestLimits = { r: scale.width, l: 0, t: scale.height, b: 0 }; var furthestAngles = {}; var i, textSize, pointPosition; scale.ctx.font = plFont.font; scale._pointLabelSizes = []; var valueCount = getValueCount(scale); for (i = 0; i < valueCount; i++) { pointPosition = scale.getPointPosition(i, largestPossibleRadius); textSize = measureLabelSize(scale.ctx, plFont.size, scale.pointLabels[i] || ''); scale._pointLabelSizes[i] = textSize; // Add quarter circle to make degree 0 mean top of circle var angleRadians = scale.getIndexAngle(i); var angle = helpers.toDegrees(angleRadians) % 360; var hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180); var vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270); if (hLimits.start < furthestLimits.l) { furthestLimits.l = hLimits.start; furthestAngles.l = angleRadians; } if (hLimits.end > furthestLimits.r) { furthestLimits.r = hLimits.end; furthestAngles.r = angleRadians; } if (vLimits.start < furthestLimits.t) { furthestLimits.t = vLimits.start; furthestAngles.t = angleRadians; } if (vLimits.end > furthestLimits.b) { furthestLimits.b = vLimits.end; furthestAngles.b = angleRadians; } } scale.setReductions(largestPossibleRadius, furthestLimits, furthestAngles); } /** * Helper function to fit a radial linear scale with no point labels */ function fit(scale) { var largestPossibleRadius = Math.min(scale.height / 2, scale.width / 2); scale.drawingArea = Math.round(largestPossibleRadius); scale.setCenterPoint(0, 0, 0, 0); } function getTextAlignForAngle(angle) { if (angle === 0 || angle === 180) { return 'center'; } else if (angle < 180) { return 'left'; } return 'right'; } function fillText(ctx, text, position, fontSize) { if (helpers.isArray(text)) { var y = position.y; var spacing = 1.5 * fontSize; for (var i = 0; i < text.length; ++i) { ctx.fillText(text[i], position.x, y); y += spacing; } } else { ctx.fillText(text, position.x, position.y); } } function adjustPointPositionForLabelHeight(angle, textSize, position) { if (angle === 90 || angle === 270) { position.y -= (textSize.h / 2); } else if (angle > 270 || angle < 90) { position.y -= textSize.h; } } function drawPointLabels(scale) { var ctx = scale.ctx; var valueOrDefault = helpers.valueOrDefault; var opts = scale.options; var angleLineOpts = opts.angleLines; var pointLabelOpts = opts.pointLabels; ctx.lineWidth = angleLineOpts.lineWidth; ctx.strokeStyle = angleLineOpts.color; var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max); // Point Label Font var plFont = getPointLabelFontOptions(scale); ctx.textBaseline = 'top'; for (var i = getValueCount(scale) - 1; i >= 0; i--) { if (angleLineOpts.display) { var outerPosition = scale.getPointPosition(i, outerDistance); ctx.beginPath(); ctx.moveTo(scale.xCenter, scale.yCenter); ctx.lineTo(outerPosition.x, outerPosition.y); ctx.stroke(); ctx.closePath(); } if (pointLabelOpts.display) { // Extra 3px out for some label spacing var pointLabelPosition = scale.getPointPosition(i, outerDistance + 5); // Keep this in loop since we may support array properties here var pointLabelFontColor = valueOrDefault(pointLabelOpts.fontColor, globalDefaults.defaultFontColor); ctx.font = plFont.font; ctx.fillStyle = pointLabelFontColor; var angleRadians = scale.getIndexAngle(i); var angle = helpers.toDegrees(angleRadians); ctx.textAlign = getTextAlignForAngle(angle); adjustPointPositionForLabelHeight(angle, scale._pointLabelSizes[i], pointLabelPosition); fillText(ctx, scale.pointLabels[i] || '', pointLabelPosition, plFont.size); } } } function drawRadiusLine(scale, gridLineOpts, radius, index) { var ctx = scale.ctx; ctx.strokeStyle = helpers.valueAtIndexOrDefault(gridLineOpts.color, index - 1); ctx.lineWidth = helpers.valueAtIndexOrDefault(gridLineOpts.lineWidth, index - 1); if (scale.options.gridLines.circular) { // Draw circular arcs between the points ctx.beginPath(); ctx.arc(scale.xCenter, scale.yCenter, radius, 0, Math.PI * 2); ctx.closePath(); ctx.stroke(); } else { // Draw straight lines connecting each index var valueCount = getValueCount(scale); if (valueCount === 0) { return; } ctx.beginPath(); var pointPosition = scale.getPointPosition(0, radius); ctx.moveTo(pointPosition.x, pointPosition.y); for (var i = 1; i < valueCount; i++) { pointPosition = scale.getPointPosition(i, radius); ctx.lineTo(pointPosition.x, pointPosition.y); } ctx.closePath(); ctx.stroke(); } } function numberOrZero(param) { return helpers.isNumber(param) ? param : 0; } var LinearRadialScale = Chart.LinearScaleBase.extend({ setDimensions: function() { var me = this; var opts = me.options; var tickOpts = opts.ticks; // Set the unconstrained dimension before label rotation me.width = me.maxWidth; me.height = me.maxHeight; me.xCenter = Math.round(me.width / 2); me.yCenter = Math.round(me.height / 2); var minSize = helpers.min([me.height, me.width]); var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); me.drawingArea = opts.display ? (minSize / 2) - (tickFontSize / 2 + tickOpts.backdropPaddingY) : (minSize / 2); }, determineDataLimits: function() { var me = this; var chart = me.chart; var min = Number.POSITIVE_INFINITY; var max = Number.NEGATIVE_INFINITY; helpers.each(chart.data.datasets, function(dataset, datasetIndex) { if (chart.isDatasetVisible(datasetIndex)) { var meta = chart.getDatasetMeta(datasetIndex); helpers.each(dataset.data, function(rawValue, index) { var value = +me.getRightValue(rawValue); if (isNaN(value) || meta.data[index].hidden) { return; } min = Math.min(value, min); max = Math.max(value, max); }); } }); me.min = (min === Number.POSITIVE_INFINITY ? 0 : min); me.max = (max === Number.NEGATIVE_INFINITY ? 0 : max); // Common base implementation to handle ticks.min, ticks.max, ticks.beginAtZero me.handleTickRangeOptions(); }, getTickLimit: function() { var tickOpts = this.options.ticks; var tickFontSize = helpers.valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); return Math.min(tickOpts.maxTicksLimit ? tickOpts.maxTicksLimit : 11, Math.ceil(this.drawingArea / (1.5 * tickFontSize))); }, convertTicksToLabels: function() { var me = this; Chart.LinearScaleBase.prototype.convertTicksToLabels.call(me); // Point labels me.pointLabels = me.chart.data.labels.map(me.options.pointLabels.callback, me); }, getLabelForIndex: function(index, datasetIndex) { return +this.getRightValue(this.chart.data.datasets[datasetIndex].data[index]); }, fit: function() { if (this.options.pointLabels.display) { fitWithPointLabels(this); } else { fit(this); } }, /** * Set radius reductions and determine new radius and center point * @private */ setReductions: function(largestPossibleRadius, furthestLimits, furthestAngles) { var me = this; var radiusReductionLeft = furthestLimits.l / Math.sin(furthestAngles.l); var radiusReductionRight = Math.max(furthestLimits.r - me.width, 0) / Math.sin(furthestAngles.r); var radiusReductionTop = -furthestLimits.t / Math.cos(furthestAngles.t); var radiusReductionBottom = -Math.max(furthestLimits.b - me.height, 0) / Math.cos(furthestAngles.b); radiusReductionLeft = numberOrZero(radiusReductionLeft); radiusReductionRight = numberOrZero(radiusReductionRight); radiusReductionTop = numberOrZero(radiusReductionTop); radiusReductionBottom = numberOrZero(radiusReductionBottom); me.drawingArea = Math.min( Math.round(largestPossibleRadius - (radiusReductionLeft + radiusReductionRight) / 2), Math.round(largestPossibleRadius - (radiusReductionTop + radiusReductionBottom) / 2)); me.setCenterPoint(radiusReductionLeft, radiusReductionRight, radiusReductionTop, radiusReductionBottom); }, setCenterPoint: function(leftMovement, rightMovement, topMovement, bottomMovement) { var me = this; var maxRight = me.width - rightMovement - me.drawingArea; var maxLeft = leftMovement + me.drawingArea; var maxTop = topMovement + me.drawingArea; var maxBottom = me.height - bottomMovement - me.drawingArea; me.xCenter = Math.round(((maxLeft + maxRight) / 2) + me.left); me.yCenter = Math.round(((maxTop + maxBottom) / 2) + me.top); }, getIndexAngle: function(index) { var angleMultiplier = (Math.PI * 2) / getValueCount(this); var startAngle = this.chart.options && this.chart.options.startAngle ? this.chart.options.startAngle : 0; var startAngleRadians = startAngle * Math.PI * 2 / 360; // Start from the top instead of right, so remove a quarter of the circle return index * angleMultiplier + startAngleRadians; }, getDistanceFromCenterForValue: function(value) { var me = this; if (value === null) { return 0; // null always in center } // Take into account half font size + the yPadding of the top value var scalingFactor = me.drawingArea / (me.max - me.min); if (me.options.ticks.reverse) { return (me.max - value) * scalingFactor; } return (value - me.min) * scalingFactor; }, getPointPosition: function(index, distanceFromCenter) { var me = this; var thisAngle = me.getIndexAngle(index) - (Math.PI / 2); return { x: Math.round(Math.cos(thisAngle) * distanceFromCenter) + me.xCenter, y: Math.round(Math.sin(thisAngle) * distanceFromCenter) + me.yCenter }; }, getPointPositionForValue: function(index, value) { return this.getPointPosition(index, this.getDistanceFromCenterForValue(value)); }, getBasePosition: function() { var me = this; var min = me.min; var max = me.max; return me.getPointPositionForValue(0, me.beginAtZero ? 0 : min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0); }, draw: function() { var me = this; var opts = me.options; var gridLineOpts = opts.gridLines; var tickOpts = opts.ticks; var valueOrDefault = helpers.valueOrDefault; if (opts.display) { var ctx = me.ctx; var startAngle = this.getIndexAngle(0); // Tick Font var tickFontSize = valueOrDefault(tickOpts.fontSize, globalDefaults.defaultFontSize); var tickFontStyle = valueOrDefault(tickOpts.fontStyle, globalDefaults.defaultFontStyle); var tickFontFamily = valueOrDefault(tickOpts.fontFamily, globalDefaults.defaultFontFamily); var tickLabelFont = helpers.fontString(tickFontSize, tickFontStyle, tickFontFamily); helpers.each(me.ticks, function(label, index) { // Don't draw a centre value (if it is minimum) if (index > 0 || tickOpts.reverse) { var yCenterOffset = me.getDistanceFromCenterForValue(me.ticksAsNumbers[index]); // Draw circular lines around the scale if (gridLineOpts.display && index !== 0) { drawRadiusLine(me, gridLineOpts, yCenterOffset, index); } if (tickOpts.display) { var tickFontColor = valueOrDefault(tickOpts.fontColor, globalDefaults.defaultFontColor); ctx.font = tickLabelFont; ctx.save(); ctx.translate(me.xCenter, me.yCenter); ctx.rotate(startAngle); if (tickOpts.showLabelBackdrop) { var labelWidth = ctx.measureText(label).width; ctx.fillStyle = tickOpts.backdropColor; ctx.fillRect( -labelWidth / 2 - tickOpts.backdropPaddingX, -yCenterOffset - tickFontSize / 2 - tickOpts.backdropPaddingY, labelWidth + tickOpts.backdropPaddingX * 2, tickFontSize + tickOpts.backdropPaddingY * 2 ); } ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillStyle = tickFontColor; ctx.fillText(label, 0, -yCenterOffset); ctx.restore(); } } }); if (opts.angleLines.display || opts.pointLabels.display) { drawPointLabels(me); } } } }); Chart.scaleService.registerScaleType('radialLinear', LinearRadialScale, defaultConfig); }; },{"25":25,"34":34,"45":45}],57:[function(require,module,exports){ /* global window: false */ 'use strict'; var moment = require(1); moment = typeof moment === 'function' ? moment : window.moment; var defaults = require(25); var helpers = require(45); // Integer constants are from the ES6 spec. var MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; var MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; var INTERVALS = { millisecond: { common: true, size: 1, steps: [1, 2, 5, 10, 20, 50, 100, 250, 500] }, second: { common: true, size: 1000, steps: [1, 2, 5, 10, 30] }, minute: { common: true, size: 60000, steps: [1, 2, 5, 10, 30] }, hour: { common: true, size: 3600000, steps: [1, 2, 3, 6, 12] }, day: { common: true, size: 86400000, steps: [1, 2, 5] }, week: { common: false, size: 604800000, steps: [1, 2, 3, 4] }, month: { common: true, size: 2.628e9, steps: [1, 2, 3] }, quarter: { common: false, size: 7.884e9, steps: [1, 2, 3, 4] }, year: { common: true, size: 3.154e10 } }; var UNITS = Object.keys(INTERVALS); function sorter(a, b) { return a - b; } function arrayUnique(items) { var hash = {}; var out = []; var i, ilen, item; for (i = 0, ilen = items.length; i < ilen; ++i) { item = items[i]; if (!hash[item]) { hash[item] = true; out.push(item); } } return out; } /** * Returns an array of {time, pos} objects used to interpolate a specific `time` or position * (`pos`) on the scale, by searching entries before and after the requested value. `pos` is * a decimal between 0 and 1: 0 being the start of the scale (left or top) and 1 the other * extremity (left + width or top + height). Note that it would be more optimized to directly * store pre-computed pixels, but the scale dimensions are not guaranteed at the time we need * to create the lookup table. The table ALWAYS contains at least two items: min and max. * * @param {Number[]} timestamps - timestamps sorted from lowest to highest. * @param {String} distribution - If 'linear', timestamps will be spread linearly along the min * and max range, so basically, the table will contains only two items: {min, 0} and {max, 1}. * If 'series', timestamps will be positioned at the same distance from each other. In this * case, only timestamps that break the time linearity are registered, meaning that in the * best case, all timestamps are linear, the table contains only min and max. */ function buildLookupTable(timestamps, min, max, distribution) { if (distribution === 'linear' || !timestamps.length) { return [ {time: min, pos: 0}, {time: max, pos: 1} ]; } var table = []; var items = [min]; var i, ilen, prev, curr, next; for (i = 0, ilen = timestamps.length; i < ilen; ++i) { curr = timestamps[i]; if (curr > min && curr < max) { items.push(curr); } } items.push(max); for (i = 0, ilen = items.length; i < ilen; ++i) { next = items[i + 1]; prev = items[i - 1]; curr = items[i]; // only add points that breaks the scale linearity if (prev === undefined || next === undefined || Math.round((next + prev) / 2) !== curr) { table.push({time: curr, pos: i / (ilen - 1)}); } } return table; } // @see adapted from http://www.anujgakhar.com/2014/03/01/binary-search-in-javascript/ function lookup(table, key, value) { var lo = 0; var hi = table.length - 1; var mid, i0, i1; while (lo >= 0 && lo <= hi) { mid = (lo + hi) >> 1; i0 = table[mid - 1] || null; i1 = table[mid]; if (!i0) { // given value is outside table (before first item) return {lo: null, hi: i1}; } else if (i1[key] < value) { lo = mid + 1; } else if (i0[key] > value) { hi = mid - 1; } else { return {lo: i0, hi: i1}; } } // given value is outside table (after last item) return {lo: i1, hi: null}; } /** * Linearly interpolates the given source `value` using the table items `skey` values and * returns the associated `tkey` value. For example, interpolate(table, 'time', 42, 'pos') * returns the position for a timestamp equal to 42. If value is out of bounds, values at * index [0, 1] or [n - 1, n] are used for the interpolation. */ function interpolate(table, skey, sval, tkey) { var range = lookup(table, skey, sval); // Note: the lookup table ALWAYS contains at least 2 items (min and max) var prev = !range.lo ? table[0] : !range.hi ? table[table.length - 2] : range.lo; var next = !range.lo ? table[1] : !range.hi ? table[table.length - 1] : range.hi; var span = next[skey] - prev[skey]; var ratio = span ? (sval - prev[skey]) / span : 0; var offset = (next[tkey] - prev[tkey]) * ratio; return prev[tkey] + offset; } /** * Convert the given value to a moment object using the given time options. * @see http://momentjs.com/docs/#/parsing/ */ function momentify(value, options) { var parser = options.parser; var format = options.parser || options.format; if (typeof parser === 'function') { return parser(value); } if (typeof value === 'string' && typeof format === 'string') { return moment(value, format); } if (!(value instanceof moment)) { value = moment(value); } if (value.isValid()) { return value; } // Labels are in an incompatible moment format and no `parser` has been provided. // The user might still use the deprecated `format` option to convert his inputs. if (typeof format === 'function') { return format(value); } return value; } function parse(input, scale) { if (helpers.isNullOrUndef(input)) { return null; } var options = scale.options.time; var value = momentify(scale.getRightValue(input), options); if (!value.isValid()) { return null; } if (options.round) { value.startOf(options.round); } return value.valueOf(); } /** * Returns the number of unit to skip to be able to display up to `capacity` number of ticks * in `unit` for the given `min` / `max` range and respecting the interval steps constraints. */ function determineStepSize(min, max, unit, capacity) { var range = max - min; var interval = INTERVALS[unit]; var milliseconds = interval.size; var steps = interval.steps; var i, ilen, factor; if (!steps) { return Math.ceil(range / ((capacity || 1) * milliseconds)); } for (i = 0, ilen = steps.length; i < ilen; ++i) { factor = steps[i]; if (Math.ceil(range / (milliseconds * factor)) <= capacity) { break; } } return factor; } /** * Figures out what unit results in an appropriate number of auto-generated ticks */ function determineUnitForAutoTicks(minUnit, min, max, capacity) { var ilen = UNITS.length; var i, interval, factor; for (i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) { interval = INTERVALS[UNITS[i]]; factor = interval.steps ? interval.steps[interval.steps.length - 1] : MAX_INTEGER; if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) { return UNITS[i]; } } return UNITS[ilen - 1]; } /** * Figures out what unit to format a set of ticks with */ function determineUnitForFormatting(ticks, minUnit, min, max) { var duration = moment.duration(moment(max).diff(moment(min))); var ilen = UNITS.length; var i, unit; for (i = ilen - 1; i >= UNITS.indexOf(minUnit); i--) { unit = UNITS[i]; if (INTERVALS[unit].common && duration.as(unit) >= ticks.length) { return unit; } } return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0]; } function determineMajorUnit(unit) { for (var i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) { if (INTERVALS[UNITS[i]].common) { return UNITS[i]; } } } /** * Generates a maximum of `capacity` timestamps between min and max, rounded to the * `minor` unit, aligned on the `major` unit and using the given scale time `options`. * Important: this method can return ticks outside the min and max range, it's the * responsibility of the calling code to clamp values if needed. */ function generate(min, max, capacity, options) { var timeOpts = options.time; var minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, capacity); var major = determineMajorUnit(minor); var stepSize = helpers.valueOrDefault(timeOpts.stepSize, timeOpts.unitStepSize); var weekday = minor === 'week' ? timeOpts.isoWeekday : false; var majorTicksEnabled = options.ticks.major.enabled; var interval = INTERVALS[minor]; var first = moment(min); var last = moment(max); var ticks = []; var time; if (!stepSize) { stepSize = determineStepSize(min, max, minor, capacity); } // For 'week' unit, handle the first day of week option if (weekday) { first = first.isoWeekday(weekday); last = last.isoWeekday(weekday); } // Align first/last ticks on unit first = first.startOf(weekday ? 'day' : minor); last = last.startOf(weekday ? 'day' : minor); // Make sure that the last tick include max if (last < max) { last.add(1, minor); } time = moment(first); if (majorTicksEnabled && major && !weekday && !timeOpts.round) { // Align the first tick on the previous `minor` unit aligned on the `major` unit: // we first aligned time on the previous `major` unit then add the number of full // stepSize there is between first and the previous major time. time.startOf(major); time.add(~~((first - time) / (interval.size * stepSize)) * stepSize, minor); } for (; time < last; time.add(stepSize, minor)) { ticks.push(+time); } ticks.push(+time); return ticks; } /** * Returns the right and left offsets from edges in the form of {left, right}. * Offsets are added when the `offset` option is true. */ function computeOffsets(table, ticks, min, max, options) { var left = 0; var right = 0; var upper, lower; if (options.offset && ticks.length) { if (!options.time.min) { upper = ticks.length > 1 ? ticks[1] : max; lower = ticks[0]; left = ( interpolate(table, 'time', upper, 'pos') - interpolate(table, 'time', lower, 'pos') ) / 2; } if (!options.time.max) { upper = ticks[ticks.length - 1]; lower = ticks.length > 1 ? ticks[ticks.length - 2] : min; right = ( interpolate(table, 'time', upper, 'pos') - interpolate(table, 'time', lower, 'pos') ) / 2; } } return {left: left, right: right}; } function ticksFromTimestamps(values, majorUnit) { var ticks = []; var i, ilen, value, major; for (i = 0, ilen = values.length; i < ilen; ++i) { value = values[i]; major = majorUnit ? value === +moment(value).startOf(majorUnit) : false; ticks.push({ value: value, major: major }); } return ticks; } module.exports = function(Chart) { var defaultConfig = { position: 'bottom', /** * Data distribution along the scale: * - 'linear': data are spread according to their time (distances can vary), * - 'series': data are spread at the same distance from each other. * @see https://github.com/chartjs/Chart.js/pull/4507 * @since 2.7.0 */ distribution: 'linear', /** * Scale boundary strategy (bypassed by min/max time options) * - `data`: make sure data are fully visible, ticks outside are removed * - `ticks`: make sure ticks are fully visible, data outside are truncated * @see https://github.com/chartjs/Chart.js/pull/4556 * @since 2.7.0 */ bounds: 'data', time: { parser: false, // false == a pattern string from http://momentjs.com/docs/#/parsing/string-format/ or a custom callback that converts its argument to a moment format: false, // DEPRECATED false == date objects, moment object, callback or a pattern string from http://momentjs.com/docs/#/parsing/string-format/ unit: false, // false == automatic or override with week, month, year, etc. round: false, // none, or override with week, month, year, etc. displayFormat: false, // DEPRECATED isoWeekday: false, // override week start day - see http://momentjs.com/docs/#/get-set/iso-weekday/ minUnit: 'millisecond', // defaults to unit's corresponding unitFormat below or override using pattern string from http://momentjs.com/docs/#/displaying/format/ displayFormats: { millisecond: 'h:mm:ss.SSS a', // 11:20:01.123 AM, second: 'h:mm:ss a', // 11:20:01 AM minute: 'h:mm a', // 11:20 AM hour: 'hA', // 5PM day: 'MMM D', // Sep 4 week: 'll', // Week 46, or maybe "[W]WW - YYYY" ? month: 'MMM YYYY', // Sept 2015 quarter: '[Q]Q - YYYY', // Q3 year: 'YYYY' // 2015 }, }, ticks: { autoSkip: false, /** * Ticks generation input values: * - 'auto': generates "optimal" ticks based on scale size and time options. * - 'data': generates ticks from data (including labels from data {t|x|y} objects). * - 'labels': generates ticks from user given `data.labels` values ONLY. * @see https://github.com/chartjs/Chart.js/pull/4507 * @since 2.7.0 */ source: 'auto', major: { enabled: false } } }; var TimeScale = Chart.Scale.extend({ initialize: function() { if (!moment) { throw new Error('Chart.js - Moment.js could not be found! You must include it before Chart.js to use the time scale. Download at https://momentjs.com'); } this.mergeTicksOptions(); Chart.Scale.prototype.initialize.call(this); }, update: function() { var me = this; var options = me.options; // DEPRECATIONS: output a message only one time per update if (options.time && options.time.format) { console.warn('options.time.format is deprecated and replaced by options.time.parser.'); } return Chart.Scale.prototype.update.apply(me, arguments); }, /** * Allows data to be referenced via 't' attribute */ getRightValue: function(rawValue) { if (rawValue && rawValue.t !== undefined) { rawValue = rawValue.t; } return Chart.Scale.prototype.getRightValue.call(this, rawValue); }, determineDataLimits: function() { var me = this; var chart = me.chart; var timeOpts = me.options.time; var min = MAX_INTEGER; var max = MIN_INTEGER; var timestamps = []; var datasets = []; var labels = []; var i, j, ilen, jlen, data, timestamp; // Convert labels to timestamps for (i = 0, ilen = chart.data.labels.length; i < ilen; ++i) { labels.push(parse(chart.data.labels[i], me)); } // Convert data to timestamps for (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) { if (chart.isDatasetVisible(i)) { data = chart.data.datasets[i].data; // Let's consider that all data have the same format. if (helpers.isObject(data[0])) { datasets[i] = []; for (j = 0, jlen = data.length; j < jlen; ++j) { timestamp = parse(data[j], me); timestamps.push(timestamp); datasets[i][j] = timestamp; } } else { timestamps.push.apply(timestamps, labels); datasets[i] = labels.slice(0); } } else { datasets[i] = []; } } if (labels.length) { // Sort labels **after** data have been converted labels = arrayUnique(labels).sort(sorter); min = Math.min(min, labels[0]); max = Math.max(max, labels[labels.length - 1]); } if (timestamps.length) { timestamps = arrayUnique(timestamps).sort(sorter); min = Math.min(min, timestamps[0]); max = Math.max(max, timestamps[timestamps.length - 1]); } min = parse(timeOpts.min, me) || min; max = parse(timeOpts.max, me) || max; // In case there is no valid min/max, let's use today limits min = min === MAX_INTEGER ? +moment().startOf('day') : min; max = max === MIN_INTEGER ? +moment().endOf('day') + 1 : max; // Make sure that max is strictly higher than min (required by the lookup table) me.min = Math.min(min, max); me.max = Math.max(min + 1, max); // PRIVATE me._horizontal = me.isHorizontal(); me._table = []; me._timestamps = { data: timestamps, datasets: datasets, labels: labels }; }, buildTicks: function() { var me = this; var min = me.min; var max = me.max; var options = me.options; var timeOpts = options.time; var timestamps = []; var ticks = []; var i, ilen, timestamp; switch (options.ticks.source) { case 'data': timestamps = me._timestamps.data; break; case 'labels': timestamps = me._timestamps.labels; break; case 'auto': default: timestamps = generate(min, max, me.getLabelCapacity(min), options); } if (options.bounds === 'ticks' && timestamps.length) { min = timestamps[0]; max = timestamps[timestamps.length - 1]; } // Enforce limits with user min/max options min = parse(timeOpts.min, me) || min; max = parse(timeOpts.max, me) || max; // Remove ticks outside the min/max range for (i = 0, ilen = timestamps.length; i < ilen; ++i) { timestamp = timestamps[i]; if (timestamp >= min && timestamp <= max) { ticks.push(timestamp); } } me.min = min; me.max = max; // PRIVATE me._unit = timeOpts.unit || determineUnitForFormatting(ticks, timeOpts.minUnit, me.min, me.max); me._majorUnit = determineMajorUnit(me._unit); me._table = buildLookupTable(me._timestamps.data, min, max, options.distribution); me._offsets = computeOffsets(me._table, ticks, min, max, options); return ticksFromTimestamps(ticks, me._majorUnit); }, getLabelForIndex: function(index, datasetIndex) { var me = this; var data = me.chart.data; var timeOpts = me.options.time; var label = data.labels && index < data.labels.length ? data.labels[index] : ''; var value = data.datasets[datasetIndex].data[index]; if (helpers.isObject(value)) { label = me.getRightValue(value); } if (timeOpts.tooltipFormat) { label = momentify(label, timeOpts).format(timeOpts.tooltipFormat); } return label; }, /** * Function to format an individual tick mark * @private */ tickFormatFunction: function(tick, index, ticks, formatOverride) { var me = this; var options = me.options; var time = tick.valueOf(); var formats = options.time.displayFormats; var minorFormat = formats[me._unit]; var majorUnit = me._majorUnit; var majorFormat = formats[majorUnit]; var majorTime = tick.clone().startOf(majorUnit).valueOf(); var majorTickOpts = options.ticks.major; var major = majorTickOpts.enabled && majorUnit && majorFormat && time === majorTime; var label = tick.format(formatOverride ? formatOverride : major ? majorFormat : minorFormat); var tickOpts = major ? majorTickOpts : options.ticks.minor; var formatter = helpers.valueOrDefault(tickOpts.callback, tickOpts.userCallback); return formatter ? formatter(label, index, ticks) : label; }, convertTicksToLabels: function(ticks) { var labels = []; var i, ilen; for (i = 0, ilen = ticks.length; i < ilen; ++i) { labels.push(this.tickFormatFunction(moment(ticks[i].value), i, ticks)); } return labels; }, /** * @private */ getPixelForOffset: function(time) { var me = this; var size = me._horizontal ? me.width : me.height; var start = me._horizontal ? me.left : me.top; var pos = interpolate(me._table, 'time', time, 'pos'); return start + size * (me._offsets.left + pos) / (me._offsets.left + 1 + me._offsets.right); }, getPixelForValue: function(value, index, datasetIndex) { var me = this; var time = null; if (index !== undefined && datasetIndex !== undefined) { time = me._timestamps.datasets[datasetIndex][index]; } if (time === null) { time = parse(value, me); } if (time !== null) { return me.getPixelForOffset(time); } }, getPixelForTick: function(index) { var ticks = this.getTicks(); return index >= 0 && index < ticks.length ? this.getPixelForOffset(ticks[index].value) : null; }, getValueForPixel: function(pixel) { var me = this; var size = me._horizontal ? me.width : me.height; var start = me._horizontal ? me.left : me.top; var pos = (size ? (pixel - start) / size : 0) * (me._offsets.left + 1 + me._offsets.left) - me._offsets.right; var time = interpolate(me._table, 'pos', pos, 'time'); return moment(time); }, /** * Crude approximation of what the label width might be * @private */ getLabelWidth: function(label) { var me = this; var ticksOpts = me.options.ticks; var tickLabelWidth = me.ctx.measureText(label).width; var angle = helpers.toRadians(ticksOpts.maxRotation); var cosRotation = Math.cos(angle); var sinRotation = Math.sin(angle); var tickFontSize = helpers.valueOrDefault(ticksOpts.fontSize, defaults.global.defaultFontSize); return (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation); }, /** * @private */ getLabelCapacity: function(exampleTime) { var me = this; var formatOverride = me.options.time.displayFormats.millisecond; // Pick the longest format for guestimation var exampleLabel = me.tickFormatFunction(moment(exampleTime), 0, [], formatOverride); var tickLabelWidth = me.getLabelWidth(exampleLabel); var innerWidth = me.isHorizontal() ? me.width : me.height; return Math.floor(innerWidth / tickLabelWidth); } }); Chart.scaleService.registerScaleType('time', TimeScale, defaultConfig); }; },{"1":1,"25":25,"45":45}]},{},[7])(7) });youtube-embed-plus/scripts/chartjs/chartjs-plugin-deferred.min.js000064400000004240151435171370021257 0ustar00/* * @license * chartjs-plugin-deferred * http://chartjs.org/ * Version: 1.0.0 * * Copyright 2018 Simon Brunel * Released under the MIT license * https://github.com/chartjs/chartjs-plugin-deferred/blob/master/LICENSE.md */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(require("chart.js")):"function"==typeof define&&define.amd?define(["chart.js"],t):t(e.Chart)}(this,function(e){"use strict";var t=(e=e&&e.hasOwnProperty("default")?e.default:e).helpers,n="$chartjs_deferred",r="$deferred";function a(e,n){n?window.setTimeout(e,n):t.requestAnimFrame.call(window,e)}function i(e,t){var n=parseInt(e,10);return isNaN(n)?0:"string"==typeof e&&-1!==e.indexOf("%")?n/100*t:n}function o(e){var t=e[r].options,n=e.chart.canvas;if(!n||null===n.offsetParent)return!1;var a=n.getBoundingClientRect(),o=i(t.yOffset||0,a.height),d=i(t.xOffset||0,a.width);return a.right-d>=0&&a.bottom-o>=0&&a.left+d<=window.innerWidth&&a.top+o<=window.innerHeight}function d(e){var t=e.target[n];t.ticking||(t.ticking=!0,a(function(){var e,n,a=t.charts.slice(),i=a.length;for(n=0;n0)return n.delayed=!0,a(function(){n.delayed=!1,e.update()},t.delay),!1}if(n.delayed)return!1},destroy:function(e){l(e)}})});youtube-embed-plus/scripts/chartjs/moment.min.js000064400000144617151435171370016063 0ustar00!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";function e(){return Qe.apply(null,arguments)}function t(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function n(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function i(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function r(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function a(e,t){var n,s=[];for(n=0;n0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}function P(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(ut[e]=i),t&&(ut[t[0]]=function(){return b(i.apply(this,arguments),t[1],t[2])}),n&&(ut[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function W(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function H(e,t){return e.isValid()?(t=R(t,e.localeData()),ot[t]=ot[t]||function(e){var t,n,s=e.match(rt);for(t=0,n=s.length;t=0&&at.test(e);)e=e.replace(at,n),at.lastIndex=0,s-=1;return e}function C(e,t,n){Yt[e]=S(t)?t:function(e,s){return e&&n?n:t}}function F(e,t){return o(Yt,e)?Yt[e](t._strict,t._locale):new RegExp(function(e){return U(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i}))}(e))}function U(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function L(e,t){var n,s=t;for("string"==typeof e&&(e=[e]),i(t)&&(s=function(e,n){n[t]=g(e)}),n=0;n=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function B(e,t,n){var s=7+t-n;return-((7+J(e,0,s).getUTCDay()-t)%7)+s-1}function Q(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+B(e,s,i);return o<=0?a=V(r=e-1)+o:o>V(e)?(r=e+1,a=o-V(e)):(r=e,a=o),{year:r,dayOfYear:a}}function X(e,t,n){var s,i,r=B(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+K(i=e.year()-1,t,n):a>K(e.year(),t,n)?(s=a-K(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function K(e,t,n){var s=B(e,t,n),i=B(e+1,t,n);return(V(e)-s+i)/7}function ee(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],d=[];for(t=0;t<7;t++)n=l([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),d.push(s),d.push(i),d.push(r);for(a.sort(e),o.sort(e),u.sort(e),d.sort(e),t=0;t<7;t++)o[t]=U(o[t]),u[t]=U(u[t]),d[t]=U(d[t]);this._weekdaysRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function te(){return this.hours()%12||12}function ne(e,t){P(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function se(e,t){return t._meridiemParse}function ie(e){return e?e.toLowerCase().replace("_","-"):e}function re(e){var t=null;if(!Xt[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=Jt._abbr;require("./locale/"+e),ae(t)}catch(e){}return Xt[e]}function ae(e,t){var n;return e&&(n=s(t)?ue(e):oe(e,t))&&(Jt=n),Jt._abbr}function oe(e,t){if(null!==t){var n=Qt;if(t.abbr=e,null!=Xt[e])M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Xt[e]._config;else if(null!=t.parentLocale){if(null==Xt[t.parentLocale])return Kt[t.parentLocale]||(Kt[t.parentLocale]=[]),Kt[t.parentLocale].push({name:e,config:t}),null;n=Xt[t.parentLocale]._config}return Xt[e]=new k(D(n,t)),Kt[e]&&Kt[e].forEach(function(e){oe(e.name,e.config)}),ae(e),Xt[e]}return delete Xt[e],null}function ue(e){var n;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return Jt;if(!t(e)){if(n=re(e))return n;e=[e]}return function(e){for(var t,n,s,i,r=0;r0;){if(s=re(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&p(i,n,!0)>=t-1)break;t--}r++}return null}(e)}function le(e){var t,n=e._a;return n&&-2===d(e).overflow&&(t=n[xt]<0||n[xt]>11?xt:n[bt]<1||n[bt]>Z(n[Tt],n[xt])?bt:n[Pt]<0||n[Pt]>24||24===n[Pt]&&(0!==n[Wt]||0!==n[Ht]||0!==n[Rt])?Pt:n[Wt]<0||n[Wt]>59?Wt:n[Ht]<0||n[Ht]>59?Ht:n[Rt]<0||n[Rt]>999?Rt:-1,d(e)._overflowDayOfYear&&(tbt)&&(t=bt),d(e)._overflowWeeks&&-1===t&&(t=Ct),d(e)._overflowWeekday&&-1===t&&(t=Ft),d(e).overflow=t),e}function de(e,t,n){return null!=e?e:null!=t?t:n}function he(t){var n,s,i,r,a,o=[];if(!t._d){for(i=function(t){var n=new Date(e.now());return t._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()]}(t),t._w&&null==t._a[bt]&&null==t._a[xt]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=de(t.GG,e._a[Tt],X(pe(),1,4).year),s=de(t.W,1),((i=de(t.E,1))<1||i>7)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=X(pe(),r,a);n=de(t.gg,e._a[Tt],l.year),s=de(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r}s<1||s>K(n,r,a)?d(e)._overflowWeeks=!0:null!=u?d(e)._overflowWeekday=!0:(o=Q(n,s,i,r,a),e._a[Tt]=o.year,e._dayOfYear=o.dayOfYear)}(t),null!=t._dayOfYear&&(a=de(t._a[Tt],i[Tt]),(t._dayOfYear>V(a)||0===t._dayOfYear)&&(d(t)._overflowDayOfYear=!0),s=J(a,0,t._dayOfYear),t._a[xt]=s.getUTCMonth(),t._a[bt]=s.getUTCDate()),n=0;n<3&&null==t._a[n];++n)t._a[n]=o[n]=i[n];for(;n<7;n++)t._a[n]=o[n]=null==t._a[n]?2===n?1:0:t._a[n];24===t._a[Pt]&&0===t._a[Wt]&&0===t._a[Ht]&&0===t._a[Rt]&&(t._nextDay=!0,t._a[Pt]=0),t._d=(t._useUTC?J:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&e>=0&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,o),r=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Pt]=24),t._w&&void 0!==t._w.d&&t._w.d!==r&&(d(t).weekdayMismatch=!0)}}function ce(e){var t,n,s,i,r,a,o=e._i,u=en.exec(o)||tn.exec(o);if(u){for(d(e).iso=!0,t=0,n=sn.length;t0&&d(t).unusedInput.push(a),o=o.slice(o.indexOf(s)+s.length),l+=s.length),ut[r]?(s?d(t).empty=!1:d(t).unusedTokens.push(r),G(r,s,t)):t._strict&&!s&&d(t).unusedTokens.push(r);d(t).charsLeftOver=u-l,o.length>0&&d(t).unusedInput.push(o),t._a[Pt]<=12&&!0===d(t).bigHour&&t._a[Pt]>0&&(d(t).bigHour=void 0),d(t).parsedDateParts=t._a.slice(0),d(t).meridiem=t._meridiem,t._a[Pt]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}(t._locale,t._a[Pt],t._meridiem),he(t),le(t)}else me(t);else ce(t)}function ye(o){var l=o._i,y=o._f;return o._locale=o._locale||ue(o._l),null===l||void 0===y&&""===l?c({nullInput:!0}):("string"==typeof l&&(o._i=l=o._locale.preparse(l)),_(l)?new m(le(l)):(r(l)?o._d=l:t(y)?function(e){var t,n,s,i,r;if(0===e._f.length)return d(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ir&&(t=r),function(e,t,n,s,i){var r=Q(e,t,n,s,i),a=J(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}function Ne(e,t){t[Rt]=g(1e3*("0."+e))}function Ge(e){return e}function Ve(e,t,n,s){var i=ue(),r=l().set(s,t);return i[n](r,e)}function Ee(e,t,n){if(i(e)&&(t=e,e=void 0),e=e||"",null!=t)return Ve(e,t,n,"month");var s,r=[];for(s=0;s<12;s++)r[s]=Ve(e,s,n,"month");return r}function Ie(e,t,n,s){"boolean"==typeof e?(i(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,i(t)&&(n=t,t=void 0),t=t||"");var r=ue(),a=e?r._week.dow:0;if(null!=n)return Ve(t,(n+a)%7,s,"day");var o,u=[];for(o=0;o<7;o++)u[o]=Ve(t,(o+a)%7,s,"day");return u}function Ae(e,t,n,s){var i=xe(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function je(e){return e<0?Math.floor(e):Math.ceil(e)}function Ze(e){return 4800*e/146097}function ze(e){return 146097*e/4800}function $e(e){return function(){return this.as(e)}}function qe(e){return function(){return this.isValid()?this._data[e]:NaN}}function Je(e){return(e>0)-(e<0)||+e}function Be(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=An(this._milliseconds)/1e3,s=An(this._days),i=An(this._months);t=y((e=y(n/60))/60),n%=60,e%=60;var r=y(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Je(this._months)!==Je(h)?"-":"",m=Je(this._days)!==Je(h)?"-":"",_=Je(this._milliseconds)!==Je(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var Qe,Xe;Xe=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s68?1900:2e3)};var Ut,Lt=I("FullYear",!0);Ut=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;tthis?this:e:c()}),hn=["year","quarter","month","week","day","hour","minute","second","millisecond"];De("Z",":"),De("ZZ",""),C("Z",Dt),C("ZZ",Dt),L(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=ke(Dt,e)});var cn=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var fn=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,mn=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;xe.fn=ve.prototype,xe.invalid=function(){return xe(NaN)};var _n=We(1,"add"),yn=We(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var gn=v("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});P(0,["gg",2],0,function(){return this.weekYear()%100}),P(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ue("gggg","weekYear"),Ue("ggggg","weekYear"),Ue("GGGG","isoWeekYear"),Ue("GGGGG","isoWeekYear"),Y("weekYear","gg"),Y("isoWeekYear","GG"),x("weekYear",1),x("isoWeekYear",1),C("G",Mt),C("g",Mt),C("GG",mt,dt),C("gg",mt,dt),C("GGGG",pt,ct),C("gggg",pt,ct),C("GGGGG",wt,ft),C("ggggg",wt,ft),N(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=g(e)}),N(["gg","GG"],function(t,n,s,i){n[i]=e.parseTwoDigitYear(t)}),P("Q",0,"Qo","quarter"),Y("quarter","Q"),x("quarter",7),C("Q",lt),L("Q",function(e,t){t[xt]=3*(g(e)-1)}),P("D",["DD",2],"Do","date"),Y("date","D"),x("date",9),C("D",mt),C("DD",mt,dt),C("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),L(["D","DD"],bt),L("Do",function(e,t){t[bt]=g(e.match(mt)[0])});var pn=I("Date",!0);P("DDD",["DDDD",3],"DDDo","dayOfYear"),Y("dayOfYear","DDD"),x("dayOfYear",4),C("DDD",gt),C("DDDD",ht),L(["DDD","DDDD"],function(e,t,n){n._dayOfYear=g(e)}),P("m",["mm",2],0,"minute"),Y("minute","m"),x("minute",14),C("m",mt),C("mm",mt,dt),L(["m","mm"],Wt);var wn=I("Minutes",!1);P("s",["ss",2],0,"second"),Y("second","s"),x("second",15),C("s",mt),C("ss",mt,dt),L(["s","ss"],Ht);var vn=I("Seconds",!1);P("S",0,0,function(){return~~(this.millisecond()/100)}),P(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,function(){return 10*this.millisecond()}),P(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),P(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),P(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),P(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),P(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),Y("millisecond","ms"),x("millisecond",16),C("S",gt,lt),C("SS",gt,dt),C("SSS",gt,ht);var Mn;for(Mn="SSSS";Mn.length<=9;Mn+="S")C(Mn,vt);for(Mn="S";Mn.length<=9;Mn+="S")L(Mn,Ne);var Sn=I("Milliseconds",!1);P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");var Dn=m.prototype;Dn.add=_n,Dn.calendar=function(t,n){var s=t||pe(),i=Ye(s,this).startOf("day"),r=e.calendarFormat(this,i)||"sameElse",a=n&&(S(n[r])?n[r].call(this,s):n[r]);return this.format(a||this.localeData().calendar(r,this,pe(s)))},Dn.clone=function(){return new m(this)},Dn.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Ye(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=O(t)){case"year":r=Re(this,s)/12;break;case"month":r=Re(this,s);break;case"quarter":r=Re(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:y(r)},Dn.endOf=function(e){return void 0===(e=O(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},Dn.format=function(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var n=H(this,t);return this.localeData().postformat(n)},Dn.from=function(e,t){return this.isValid()&&(_(e)&&e.isValid()||pe(e).isValid())?xe({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Dn.fromNow=function(e){return this.from(pe(),e)},Dn.to=function(e,t){return this.isValid()&&(_(e)&&e.isValid()||pe(e).isValid())?xe({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Dn.toNow=function(e){return this.to(pe(),e)},Dn.get=function(e){return e=O(e),S(this[e])?this[e]():this},Dn.invalidAt=function(){return d(this).overflow},Dn.isAfter=function(e,t){var n=_(e)?e:pe(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=O(s(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()9999?H(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):S(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this._d.valueOf()).toISOString().replace("Z",H(n,"Z")):H(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Dn.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},Dn.toJSON=function(){return this.isValid()?this.toISOString():null},Dn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Dn.unix=function(){return Math.floor(this.valueOf()/1e3)},Dn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Dn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Dn.year=Lt,Dn.isLeapYear=function(){return E(this.year())},Dn.weekYear=function(e){return Le.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Dn.isoWeekYear=function(e){return Le.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},Dn.quarter=Dn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},Dn.month=$,Dn.daysInMonth=function(){return Z(this.year(),this.month())},Dn.week=Dn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},Dn.isoWeek=Dn.isoWeeks=function(e){var t=X(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},Dn.weeksInYear=function(){var e=this.localeData()._week;return K(this.year(),e.dow,e.doy)},Dn.isoWeeksInYear=function(){return K(this.year(),1,4)},Dn.date=pn,Dn.day=Dn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},Dn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},Dn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},Dn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},Dn.hour=Dn.hours=Bt,Dn.minute=Dn.minutes=wn,Dn.second=Dn.seconds=vn,Dn.millisecond=Dn.milliseconds=Sn,Dn.utcOffset=function(t,n,s){var i,r=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=ke(Dt,t)))return this}else Math.abs(t)<16&&!s&&(t*=60);return!this._isUTC&&n&&(i=Oe(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),r!==t&&(!n||this._changeInProgress?He(this,xe(t-r,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?r:Oe(this)},Dn.utc=function(e){return this.utcOffset(0,e)},Dn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Oe(this),"m")),this},Dn.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=ke(St,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},Dn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?pe(e).utcOffset():0,(this.utcOffset()-e)%60==0)},Dn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Dn.isLocal=function(){return!!this.isValid()&&!this._isUTC},Dn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Dn.isUtc=Te,Dn.isUTC=Te,Dn.zoneAbbr=function(){return this._isUTC?"UTC":""},Dn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Dn.dates=v("dates accessor is deprecated. Use date instead.",pn),Dn.months=v("months accessor is deprecated. Use month instead",$),Dn.years=v("years accessor is deprecated. Use year instead",Lt),Dn.zone=v("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),Dn.isDSTShifted=v("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(f(e,this),(e=ye(e))._a){var t=e._isUTC?l(e._a):pe(e._a);this._isDSTShifted=this.isValid()&&p(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var kn=k.prototype;kn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return S(s)?s.call(t,n):s},kn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},kn.invalidDate=function(){return this._invalidDate},kn.ordinal=function(e){return this._ordinal.replace("%d",e)},kn.preparse=Ge,kn.postformat=Ge,kn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return S(i)?i(e,t,n,s):i.replace(/%d/i,e)},kn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return S(n)?n(t):n.replace(/%s/i,t)},kn.set=function(e){var t,n;for(n in e)S(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},kn.months=function(e,n){return e?t(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||Nt).test(n)?"format":"standalone"][e.month()]:t(this._months)?this._months:this._months.standalone},kn.monthsShort=function(e,n){return e?t(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[Nt.test(n)?"format":"standalone"][e.month()]:t(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},kn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=l([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ut.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ut.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ut.call(this._shortMonthsParse,a))?i:-1!==(i=Ut.call(this._longMonthsParse,a))?i:null:-1!==(i=Ut.call(this._longMonthsParse,a))?i:-1!==(i=Ut.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=l([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},kn.monthsRegex=function(e){return this._monthsParseExact?(o(this,"_monthsRegex")||q.call(this),e?this._monthsStrictRegex:this._monthsRegex):(o(this,"_monthsRegex")||(this._monthsRegex=It),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},kn.monthsShortRegex=function(e){return this._monthsParseExact?(o(this,"_monthsRegex")||q.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(o(this,"_monthsShortRegex")||(this._monthsShortRegex=Et),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},kn.week=function(e){return X(e,this._week.dow,this._week.doy).week},kn.firstDayOfYear=function(){return this._week.doy},kn.firstDayOfWeek=function(){return this._week.dow},kn.weekdays=function(e,n){return e?t(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(n)?"format":"standalone"][e.day()]:t(this._weekdays)?this._weekdays:this._weekdays.standalone},kn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},kn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},kn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=l([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ut.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ut.call(this._weekdaysParse,a))?i:-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ut.call(this._weekdaysParse,a))?i:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ut.call(this._minWeekdaysParse,a))?i:-1!==(i=Ut.call(this._weekdaysParse,a))?i:-1!==(i=Ut.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=l([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},kn.weekdaysRegex=function(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||ee.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(o(this,"_weekdaysRegex")||(this._weekdaysRegex=zt),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},kn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||ee.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(o(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$t),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},kn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||ee.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(o(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},kn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},kn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ae("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===g(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),e.lang=v("moment.lang is deprecated. Use moment.locale instead.",ae),e.langData=v("moment.langData is deprecated. Use moment.localeData instead.",ue);var Yn=Math.abs,On=$e("ms"),Tn=$e("s"),xn=$e("m"),bn=$e("h"),Pn=$e("d"),Wn=$e("w"),Hn=$e("M"),Rn=$e("y"),Cn=qe("milliseconds"),Fn=qe("seconds"),Un=qe("minutes"),Ln=qe("hours"),Nn=qe("days"),Gn=qe("months"),Vn=qe("years"),En=Math.round,In={ss:44,s:45,m:45,h:22,d:26,M:11},An=Math.abs,jn=ve.prototype;return jn.isValid=function(){return this._isValid},jn.abs=function(){var e=this._data;return this._milliseconds=Yn(this._milliseconds),this._days=Yn(this._days),this._months=Yn(this._months),e.milliseconds=Yn(e.milliseconds),e.seconds=Yn(e.seconds),e.minutes=Yn(e.minutes),e.hours=Yn(e.hours),e.months=Yn(e.months),e.years=Yn(e.years),this},jn.add=function(e,t){return Ae(this,e,t,1)},jn.subtract=function(e,t){return Ae(this,e,t,-1)},jn.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=O(e))||"year"===e)return t=this._days+s/864e5,n=this._months+Ze(t),"month"===e?n:n/12;switch(t=this._days+Math.round(ze(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},jn.asMilliseconds=On,jn.asSeconds=Tn,jn.asMinutes=xn,jn.asHours=bn,jn.asDays=Pn,jn.asWeeks=Wn,jn.asMonths=Hn,jn.asYears=Rn,jn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},jn._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*je(ze(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=y(r/1e3),u.seconds=e%60,t=y(e/60),u.minutes=t%60,n=y(t/60),u.hours=n%24,a+=y(n/24),i=y(Ze(a)),o+=i,a-=je(ze(i)),s=y(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},jn.clone=function(){return xe(this)},jn.get=function(e){return e=O(e),this.isValid()?this[e+"s"]():NaN},jn.milliseconds=Cn,jn.seconds=Fn,jn.minutes=Un,jn.hours=Ln,jn.days=Nn,jn.weeks=function(){return y(this.days()/7)},jn.months=Gn,jn.years=Vn,jn.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var s=xe(e).abs(),i=En(s.as("s")),r=En(s.as("m")),a=En(s.as("h")),o=En(s.as("d")),u=En(s.as("M")),l=En(s.as("y")),d=i<=In.ss&&["s",i]||i0,d[4]=n,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,d)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},jn.toISOString=Be,jn.toString=Be,jn.toJSON=Be,jn.locale=Ce,jn.localeData=Fe,jn.toIsoString=v("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Be),jn.lang=gn,P("X",0,0,"unix"),P("x",0,0,"valueOf"),C("x",Mt),C("X",/[+-]?\d+(\.\d{1,3})?/),L("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),L("x",function(e,t,n){n._d=new Date(g(e))}),e.version="2.20.1",function(e){Qe=e}(pe),e.fn=Dn,e.min=function(){return we("isBefore",[].slice.call(arguments,0))},e.max=function(){return we("isAfter",[].slice.call(arguments,0))},e.now=function(){return Date.now?Date.now():+new Date},e.utc=l,e.unix=function(e){return pe(1e3*e)},e.months=function(e,t){return Ee(e,t,"months")},e.isDate=r,e.locale=ae,e.invalid=c,e.duration=xe,e.isMoment=_,e.weekdays=function(e,t,n){return Ie(e,t,n,"weekdays")},e.parseZone=function(){return pe.apply(null,arguments).parseZone()},e.localeData=ue,e.isDuration=Me,e.monthsShort=function(e,t){return Ee(e,t,"monthsShort")},e.weekdaysMin=function(e,t,n){return Ie(e,t,n,"weekdaysMin")},e.defineLocale=oe,e.updateLocale=function(e,t){if(null!=t){var n,s,i=Qt;null!=(s=re(e))&&(i=s._config),(n=new k(t=D(i,t))).parentLocale=Xt[e],Xt[e]=n,ae(e)}else null!=Xt[e]&&(null!=Xt[e].parentLocale?Xt[e]=Xt[e].parentLocale:null!=Xt[e]&&delete Xt[e]);return Xt[e]},e.locales=function(){return nt(Xt)},e.weekdaysShort=function(e,t,n){return Ie(e,t,n,"weekdaysShort")},e.normalizeUnits=O,e.relativeTimeRounding=function(e){return void 0===e?En:"function"==typeof e&&(En=e,!0)},e.relativeTimeThreshold=function(e,t){return void 0!==In[e]&&(void 0===t?In[e]:(In[e]=t,"s"===e&&(In.ss=t-1),!0))},e.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},e.prototype=Dn,e.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},e});youtube-embed-plus/scripts/alertify/alertify.js000064400000420624151435171370015775 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ ( function ( window ) { 'use strict'; /** * Keys enum * @type {Object} */ var keys = { ENTER: 13, ESC: 27, F1: 112, F12: 123, LEFT: 37, RIGHT: 39 }; /** * Default options * @type {Object} */ var defaults = { autoReset:true, basic:false, closable:true, closableByDimmer:true, frameless:false, maintainFocus:true, //global default not per instance, applies to all dialogs maximizable:true, modal:true, movable:true, moveBounded:false, overflow:true, padding: true, pinnable:true, pinned:true, preventBodyShift:false, //global default not per instance, applies to all dialogs resizable:true, startMaximized:false, transition:'pulse', notifier:{ delay:5, position:'bottom-right', closeButton:false }, glossary:{ title:'AlertifyJS', ok: 'OK', cancel: 'Cancel', acccpt: 'Accept', deny: 'Deny', confirm: 'Confirm', decline: 'Decline', close: 'Close', maximize: 'Maximize', restore: 'Restore', }, theme:{ input:'ajs-input', ok:'ajs-ok', cancel:'ajs-cancel', } }; //holds open dialogs instances var openDialogs = []; /** * [Helper] Adds the specified class(es) to the element. * * @element {node} The element * @className {string} One or more space-separated classes to be added to the class attribute of the element. * * @return {undefined} */ function addClass(element,classNames){ element.className += ' ' + classNames; } /** * [Helper] Removes the specified class(es) from the element. * * @element {node} The element * @className {string} One or more space-separated classes to be removed from the class attribute of the element. * * @return {undefined} */ function removeClass(element, classNames) { var original = element.className.split(' '); var toBeRemoved = classNames.split(' '); for (var x = 0; x < toBeRemoved.length; x += 1) { var index = original.indexOf(toBeRemoved[x]); if (index > -1){ original.splice(index,1); } } element.className = original.join(' '); } /** * [Helper] Checks if the document is RTL * * @return {Boolean} True if the document is RTL, false otherwise. */ function isRightToLeft(){ return window.getComputedStyle(document.body).direction === 'rtl'; } /** * [Helper] Get the document current scrollTop * * @return {Number} current document scrollTop value */ function getScrollTop(){ return ((document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop); } /** * [Helper] Get the document current scrollLeft * * @return {Number} current document scrollLeft value */ function getScrollLeft(){ return ((document.documentElement && document.documentElement.scrollLeft) || document.body.scrollLeft); } /** * Helper: clear contents * */ function clearContents(element){ while (element.lastChild) { element.removeChild(element.lastChild); } } /** * Extends a given prototype by merging properties from base into sub. * * @sub {Object} sub The prototype being overwritten. * @base {Object} base The prototype being written. * * @return {Object} The extended prototype. */ function copy(src) { if(null === src){ return src; } var cpy; if(Array.isArray(src)){ cpy = []; for(var x=0;x 0) { var args = []; for (var x = 0; x < arguments.length; x += 1) { args.push(arguments[x]); } args.push(context); return method.apply(context, args); } return method.apply(context, [null, context]); }; } /** * Helper for creating a dialog close event. * * @return {object} */ function createCloseEvent(index, button) { return { index: index, button: button, cancel: false }; } /** * Helper for dispatching events. * * @param {string} evenType The type of the event to disptach. * @param {object} instance The dialog instance disptaching the event. * * @return {any} The result of the invoked function. */ function dispatchEvent(eventType, instance) { if ( typeof instance.get(eventType) === 'function' ) { return instance.get(eventType).call(instance); } } /** * Super class for all dialogs * * @return {Object} base dialog prototype */ var dialog = (function () { var //holds the list of used keys. usedKeys = [], //dummy variable, used to trigger dom reflow. reflow = null, //condition for detecting safari isSafari = window.navigator.userAgent.indexOf('Safari') > -1 && window.navigator.userAgent.indexOf('Chrome') < 0, //dialog building blocks templates = { dimmer:'
', /*tab index required to fire click event before body focus*/ modal: '
', dialog: '
', reset: '', commands: '
', header: '
', body: '
', content: '
', footer: '', buttons: { primary: '
', auxiliary: '
' }, button: '', resizeHandle: '
', }, //common class names classes = { animationIn: 'ajs-in', animationOut: 'ajs-out', base: 'alertify', basic:'ajs-basic', capture: 'ajs-capture', closable:'ajs-closable', fixed: 'ajs-fixed', frameless:'ajs-frameless', hidden: 'ajs-hidden', maximize: 'ajs-maximize', maximized: 'ajs-maximized', maximizable:'ajs-maximizable', modeless: 'ajs-modeless', movable: 'ajs-movable', noSelection: 'ajs-no-selection', noOverflow: 'ajs-no-overflow', noPadding:'ajs-no-padding', pin:'ajs-pin', pinnable:'ajs-pinnable', prefix: 'ajs-', resizable: 'ajs-resizable', restore: 'ajs-restore', shake:'ajs-shake', unpinned:'ajs-unpinned', }; /** * Helper: initializes the dialog instance * * @return {Number} The total count of currently open modals. */ function initialize(instance){ if(!instance.__internal){ //no need to expose init after this. delete instance.__init; //keep a copy of initial dialog settings if(!instance.__settings){ instance.__settings = copy(instance.settings); } //in case the script was included before body. //after first dialog gets initialized, it won't be null anymore! if(null === reflow){ // set tabindex attribute on body element this allows script to give it // focus after the dialog is closed document.body.setAttribute( 'tabindex', '0' ); } //get dialog buttons/focus setup var setup; if(typeof instance.setup === 'function'){ setup = instance.setup(); setup.options = setup.options || {}; setup.focus = setup.focus || {}; }else{ setup = { buttons:[], focus:{ element:null, select:false }, options:{ } }; } //initialize hooks object. if(typeof instance.hooks !== 'object'){ instance.hooks = {}; } //copy buttons defintion var buttonsDefinition = []; if(Array.isArray(setup.buttons)){ for(var b=0;b= 0){ //last open modal or last maximized one removeClass(document.body, classes.noOverflow); preventBodyShift(false); }else if(requiresNoOverflow > 0 && document.body.className.indexOf(classes.noOverflow) < 0){ //first open modal or first maximized one preventBodyShift(true); addClass(document.body, classes.noOverflow); } } var top = '', topScroll = 0; /** * Helper: prevents body shift. * */ function preventBodyShift(add){ if(alertify.defaults.preventBodyShift && document.documentElement.scrollHeight > document.documentElement.clientHeight){ if(add ){//&& openDialogs[openDialogs.length-1].elements.dialog.clientHeight <= document.documentElement.clientHeight){ topScroll = scrollY; top = window.getComputedStyle(document.body).top; addClass(document.body, classes.fixed); document.body.style.top = -scrollY + 'px'; } else { scrollY = topScroll; document.body.style.top = top; removeClass(document.body, classes.fixed); restoreScrollPosition(); } } } /** * Sets the name of the transition used to show/hide the dialog * * @param {Object} instance The dilog instance. * */ function updateTransition(instance, value, oldValue){ if(typeof oldValue === 'string'){ removeClass(instance.elements.root,classes.prefix + oldValue); } addClass(instance.elements.root, classes.prefix + value); reflow = instance.elements.root.offsetWidth; } /** * Toggles the dialog display mode * * @param {Object} instance The dilog instance. * * @return {undefined} */ function updateDisplayMode(instance){ if(instance.get('modal')){ //make modal removeClass(instance.elements.root, classes.modeless); //only if open if(instance.isOpen()){ unbindModelessEvents(instance); //in case a pinned modless dialog was made modal while open. updateAbsPositionFix(instance); ensureNoOverflow(); } }else{ //make modelss addClass(instance.elements.root, classes.modeless); //only if open if(instance.isOpen()){ bindModelessEvents(instance); //in case pin/unpin was called while a modal is open updateAbsPositionFix(instance); ensureNoOverflow(); } } } /** * Toggles the dialog basic view mode * * @param {Object} instance The dilog instance. * * @return {undefined} */ function updateBasicMode(instance){ if (instance.get('basic')) { // add class addClass(instance.elements.root, classes.basic); } else { // remove class removeClass(instance.elements.root, classes.basic); } } /** * Toggles the dialog frameless view mode * * @param {Object} instance The dilog instance. * * @return {undefined} */ function updateFramelessMode(instance){ if (instance.get('frameless')) { // add class addClass(instance.elements.root, classes.frameless); } else { // remove class removeClass(instance.elements.root, classes.frameless); } } /** * Helper: Brings the modeless dialog to front, attached to modeless dialogs. * * @param {Event} event Focus event * @param {Object} instance The dilog instance. * * @return {undefined} */ function bringToFront(event, instance){ // Do not bring to front if preceeded by an open modal var index = openDialogs.indexOf(instance); for(var x=index+1;x -1) { triggerCallback(instance, function (button) { return button.key === keyCode; }); return false; } } /** * Keydown event handler, attached to the document.body * * @param {Event} DOM event object. * @param {Object} The dilog instance. * * @return {undefined} */ function keydownHandler(event) { var instance = openDialogs[openDialogs.length - 1]; var keyCode = event.keyCode; if (keyCode === keys.LEFT || keyCode === keys.RIGHT) { var buttons = instance.__internal.buttons; for (var x = 0; x < buttons.length; x += 1) { if (document.activeElement === buttons[x].element) { switch (keyCode) { case keys.LEFT: buttons[(x || buttons.length) - 1].element.focus(); return; case keys.RIGHT: buttons[(x + 1) % buttons.length].element.focus(); return; } } } }else if (keyCode < keys.F12 + 1 && keyCode > keys.F1 - 1 && usedKeys.indexOf(keyCode) > -1) { event.preventDefault(); event.stopPropagation(); triggerCallback(instance, function (button) { return button.key === keyCode; }); return false; } } /** * Sets focus to proper dialog element * * @param {Object} instance The dilog instance. * @param {Node} [resetTarget=undefined] DOM element to reset focus to. * * @return {undefined} */ function setFocus(instance, resetTarget) { // reset target has already been determined. if (resetTarget) { resetTarget.focus(); } else { // current instance focus settings var focus = instance.__internal.focus; // the focus element. var element = focus.element; switch (typeof focus.element) { // a number means a button index case 'number': if (instance.__internal.buttons.length > focus.element) { //in basic view, skip focusing the buttons. if (instance.get('basic') === true) { element = instance.elements.reset[0]; } else { element = instance.__internal.buttons[focus.element].element; } } break; // a string means querySelector to select from dialog body contents. case 'string': element = instance.elements.body.querySelector(focus.element); break; // a function should return the focus element. case 'function': element = focus.element.call(instance); break; } // if no focus element, default to first reset element. if ((typeof element === 'undefined' || element === null) && instance.__internal.buttons.length === 0) { element = instance.elements.reset[0]; } // focus if (element && element.focus) { element.focus(); // if selectable if (focus.select && element.select) { element.select(); } } } } /** * Focus event handler, attached to document.body and dialogs own reset links. * handles the focus for modal dialogs only. * * @param {Event} event DOM focus event object. * @param {Object} instance The dilog instance. * * @return {undefined} */ function onReset(event, instance) { // should work on last modal if triggered from document.body if (!instance) { for (var x = openDialogs.length - 1; x > -1; x -= 1) { if (openDialogs[x].isModal()) { instance = openDialogs[x]; break; } } } // if modal if (instance && instance.isModal()) { // determine reset target to enable forward/backward tab cycle. var resetTarget, target = event.srcElement || event.target; var lastResetElement = target === instance.elements.reset[1] || (instance.__internal.buttons.length === 0 && target === document.body); // if last reset link, then go to maximize or close if (lastResetElement) { if (instance.get('maximizable')) { resetTarget = instance.elements.commands.maximize; } else if (instance.get('closable')) { resetTarget = instance.elements.commands.close; } } // if no reset target found, try finding the best button if (resetTarget === undefined) { if (typeof instance.__internal.focus.element === 'number') { // button focus element, go to first available button if (target === instance.elements.reset[0]) { resetTarget = instance.elements.buttons.auxiliary.firstChild || instance.elements.buttons.primary.firstChild; } else if (lastResetElement) { //restart the cycle by going to first reset link resetTarget = instance.elements.reset[0]; } } else { // will reach here when tapping backwards, so go to last child // The focus element SHOULD NOT be a button (logically!). if (target === instance.elements.reset[0]) { resetTarget = instance.elements.buttons.primary.lastChild || instance.elements.buttons.auxiliary.lastChild; } } } // focus setFocus(instance, resetTarget); } } /** * Transition in transitionend event handler. * * @param {Event} TransitionEnd event object. * @param {Object} The dilog instance. * * @return {undefined} */ function handleTransitionInEvent(event, instance) { // clear the timer clearTimeout(instance.__internal.timerIn); // once transition is complete, set focus setFocus(instance); //restore scroll to prevent document jump restoreScrollPosition(); // allow handling key up after transition ended. cancelKeyup = false; // allow custom `onfocus` method dispatchEvent('onfocus', instance); // unbind the event off(instance.elements.dialog, transition.type, instance.__internal.transitionInHandler); removeClass(instance.elements.root, classes.animationIn); } /** * Transition out transitionend event handler. * * @param {Event} TransitionEnd event object. * @param {Object} The dilog instance. * * @return {undefined} */ function handleTransitionOutEvent(event, instance) { // clear the timer clearTimeout(instance.__internal.timerOut); // unbind the event off(instance.elements.dialog, transition.type, instance.__internal.transitionOutHandler); // reset move updates resetMove(instance); // reset resize updates resetResize(instance); // restore if maximized if (instance.isMaximized() && !instance.get('startMaximized')) { restore(instance); } // return focus to the last active element if (alertify.defaults.maintainFocus && instance.__internal.activeElement) { instance.__internal.activeElement.focus(); instance.__internal.activeElement = null; } //destory the instance if (typeof instance.__internal.destroy === 'function') { instance.__internal.destroy.apply(instance); } } /* Controls moving a dialog around */ //holde the current moving instance var movable = null, //holds the current X offset when move starts offsetX = 0, //holds the current Y offset when move starts offsetY = 0, xProp = 'pageX', yProp = 'pageY', bounds = null, refreshTop = false, moveDelegate = null ; /** * Helper: sets the element top/left coordinates * * @param {Event} event DOM event object. * @param {Node} element The element being moved. * * @return {undefined} */ function moveElement(event, element) { var left = (event[xProp] - offsetX), top = (event[yProp] - offsetY); if(refreshTop){ top -= document.body.scrollTop; } element.style.left = left + 'px'; element.style.top = top + 'px'; } /** * Helper: sets the element top/left coordinates within screen bounds * * @param {Event} event DOM event object. * @param {Node} element The element being moved. * * @return {undefined} */ function moveElementBounded(event, element) { var left = (event[xProp] - offsetX), top = (event[yProp] - offsetY); if(refreshTop){ top -= document.body.scrollTop; } element.style.left = Math.min(bounds.maxLeft, Math.max(bounds.minLeft, left)) + 'px'; if(refreshTop){ element.style.top = Math.min(bounds.maxTop, Math.max(bounds.minTop, top)) + 'px'; }else{ element.style.top = Math.max(bounds.minTop, top) + 'px'; } } /** * Triggers the start of a move event, attached to the header element mouse down event. * Adds no-selection class to the body, disabling selection while moving. * * @param {Event} event DOM event object. * @param {Object} instance The dilog instance. * * @return {Boolean} false */ function beginMove(event, instance) { if (resizable === null && !instance.isMaximized() && instance.get('movable')) { var eventSrc, left=0, top=0; if (event.type === 'touchstart') { event.preventDefault(); eventSrc = event.targetTouches[0]; xProp = 'clientX'; yProp = 'clientY'; } else if (event.button === 0) { eventSrc = event; } if (eventSrc) { var element = instance.elements.dialog; addClass(element, classes.capture); if (element.style.left) { left = parseInt(element.style.left, 10); } if (element.style.top) { top = parseInt(element.style.top, 10); } offsetX = eventSrc[xProp] - left; offsetY = eventSrc[yProp] - top; if(instance.isModal()){ offsetY += instance.elements.modal.scrollTop; }else if(instance.isPinned()){ offsetY -= document.body.scrollTop; } if(instance.get('moveBounded')){ var current = element, offsetLeft = -left, offsetTop = -top; //calc offset do { offsetLeft += current.offsetLeft; offsetTop += current.offsetTop; } while (current = current.offsetParent); bounds = { maxLeft : offsetLeft, minLeft : -offsetLeft, maxTop : document.documentElement.clientHeight - element.clientHeight - offsetTop, minTop : -offsetTop }; moveDelegate = moveElementBounded; }else{ bounds = null; moveDelegate = moveElement; } // allow custom `onmove` method dispatchEvent('onmove', instance); refreshTop = !instance.isModal() && instance.isPinned(); movable = instance; moveDelegate(eventSrc, element); addClass(document.body, classes.noSelection); return false; } } } /** * The actual move handler, attached to document.body mousemove event. * * @param {Event} event DOM event object. * * @return {undefined} */ function move(event) { if (movable) { var eventSrc; if (event.type === 'touchmove') { event.preventDefault(); eventSrc = event.targetTouches[0]; } else if (event.button === 0) { eventSrc = event; } if (eventSrc) { moveDelegate(eventSrc, movable.elements.dialog); } } } /** * Triggers the end of a move event, attached to document.body mouseup event. * Removes no-selection class from document.body, allowing selection. * * @return {undefined} */ function endMove() { if (movable) { var instance = movable; movable = bounds = null; removeClass(document.body, classes.noSelection); removeClass(instance.elements.dialog, classes.capture); // allow custom `onmoved` method dispatchEvent('onmoved', instance); } } /** * Resets any changes made by moving the element to its original state, * * @param {Object} instance The dilog instance. * * @return {undefined} */ function resetMove(instance) { movable = null; var element = instance.elements.dialog; element.style.left = element.style.top = ''; } /** * Updates the dialog move behavior. * * @param {Object} instance The dilog instance. * @param {Boolean} on True to add the behavior, removes it otherwise. * * @return {undefined} */ function updateMovable(instance) { if (instance.get('movable')) { // add class addClass(instance.elements.root, classes.movable); if (instance.isOpen()) { bindMovableEvents(instance); } } else { //reset resetMove(instance); // remove class removeClass(instance.elements.root, classes.movable); if (instance.isOpen()) { unbindMovableEvents(instance); } } } /* Controls moving a dialog around */ //holde the current instance being resized var resizable = null, //holds the staring left offset when resize starts. startingLeft = Number.Nan, //holds the staring width when resize starts. startingWidth = 0, //holds the initial width when resized for the first time. minWidth = 0, //holds the offset of the resize handle. handleOffset = 0 ; /** * Helper: sets the element width/height and updates left coordinate if neccessary. * * @param {Event} event DOM mousemove event object. * @param {Node} element The element being moved. * @param {Boolean} pinned A flag indicating if the element being resized is pinned to the screen. * * @return {undefined} */ function resizeElement(event, element, pageRelative) { //calculate offsets from 0,0 var current = element; var offsetLeft = 0; var offsetTop = 0; do { offsetLeft += current.offsetLeft; offsetTop += current.offsetTop; } while (current = current.offsetParent); // determine X,Y coordinates. var X, Y; if (pageRelative === true) { X = event.pageX; Y = event.pageY; } else { X = event.clientX; Y = event.clientY; } // rtl handling var isRTL = isRightToLeft(); if (isRTL) { // reverse X X = document.body.offsetWidth - X; // if has a starting left, calculate offsetRight if (!isNaN(startingLeft)) { offsetLeft = document.body.offsetWidth - offsetLeft - element.offsetWidth; } } // set width/height element.style.height = (Y - offsetTop + handleOffset) + 'px'; element.style.width = (X - offsetLeft + handleOffset) + 'px'; // if the element being resized has a starting left, maintain it. // the dialog is centered, divide by half the offset to maintain the margins. if (!isNaN(startingLeft)) { var diff = Math.abs(element.offsetWidth - startingWidth) * 0.5; if (isRTL) { //negate the diff, why? //when growing it should decrease left //when shrinking it should increase left diff *= -1; } if (element.offsetWidth > startingWidth) { //growing element.style.left = (startingLeft + diff) + 'px'; } else if (element.offsetWidth >= minWidth) { //shrinking element.style.left = (startingLeft - diff) + 'px'; } } } /** * Triggers the start of a resize event, attached to the resize handle element mouse down event. * Adds no-selection class to the body, disabling selection while moving. * * @param {Event} event DOM event object. * @param {Object} instance The dilog instance. * * @return {Boolean} false */ function beginResize(event, instance) { if (!instance.isMaximized()) { var eventSrc; if (event.type === 'touchstart') { event.preventDefault(); eventSrc = event.targetTouches[0]; } else if (event.button === 0) { eventSrc = event; } if (eventSrc) { // allow custom `onresize` method dispatchEvent('onresize', instance); resizable = instance; handleOffset = instance.elements.resizeHandle.offsetHeight / 2; var element = instance.elements.dialog; addClass(element, classes.capture); startingLeft = parseInt(element.style.left, 10); element.style.height = element.offsetHeight + 'px'; element.style.minHeight = instance.elements.header.offsetHeight + instance.elements.footer.offsetHeight + 'px'; element.style.width = (startingWidth = element.offsetWidth) + 'px'; if (element.style.maxWidth !== 'none') { element.style.minWidth = (minWidth = element.offsetWidth) + 'px'; } element.style.maxWidth = 'none'; addClass(document.body, classes.noSelection); return false; } } } /** * The actual resize handler, attached to document.body mousemove event. * * @param {Event} event DOM event object. * * @return {undefined} */ function resize(event) { if (resizable) { var eventSrc; if (event.type === 'touchmove') { event.preventDefault(); eventSrc = event.targetTouches[0]; } else if (event.button === 0) { eventSrc = event; } if (eventSrc) { resizeElement(eventSrc, resizable.elements.dialog, !resizable.get('modal') && !resizable.get('pinned')); } } } /** * Triggers the end of a resize event, attached to document.body mouseup event. * Removes no-selection class from document.body, allowing selection. * * @return {undefined} */ function endResize() { if (resizable) { var instance = resizable; resizable = null; removeClass(document.body, classes.noSelection); removeClass(instance.elements.dialog, classes.capture); cancelClick = true; // allow custom `onresized` method dispatchEvent('onresized', instance); } } /** * Resets any changes made by resizing the element to its original state. * * @param {Object} instance The dilog instance. * * @return {undefined} */ function resetResize(instance) { resizable = null; var element = instance.elements.dialog; if (element.style.maxWidth === 'none') { //clear inline styles. element.style.maxWidth = element.style.minWidth = element.style.width = element.style.height = element.style.minHeight = element.style.left = ''; //reset variables. startingLeft = Number.Nan; startingWidth = minWidth = handleOffset = 0; } } /** * Updates the dialog move behavior. * * @param {Object} instance The dilog instance. * @param {Boolean} on True to add the behavior, removes it otherwise. * * @return {undefined} */ function updateResizable(instance) { if (instance.get('resizable')) { // add class addClass(instance.elements.root, classes.resizable); if (instance.isOpen()) { bindResizableEvents(instance); } } else { //reset resetResize(instance); // remove class removeClass(instance.elements.root, classes.resizable); if (instance.isOpen()) { unbindResizableEvents(instance); } } } /** * Reset move/resize on window resize. * * @param {Event} event window resize event object. * * @return {undefined} */ function windowResize(/*event*/) { for (var x = 0; x < openDialogs.length; x += 1) { var instance = openDialogs[x]; if (instance.get('autoReset')) { resetMove(instance); resetResize(instance); } } } /** * Bind dialogs events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function bindEvents(instance) { // if first dialog, hook global handlers if (openDialogs.length === 1) { //global on(window, 'resize', windowResize); on(document.body, 'keyup', keyupHandler); on(document.body, 'keydown', keydownHandler); on(document.body, 'focus', onReset); //move on(document.documentElement, 'mousemove', move); on(document.documentElement, 'touchmove', move); on(document.documentElement, 'mouseup', endMove); on(document.documentElement, 'touchend', endMove); //resize on(document.documentElement, 'mousemove', resize); on(document.documentElement, 'touchmove', resize); on(document.documentElement, 'mouseup', endResize); on(document.documentElement, 'touchend', endResize); } // common events on(instance.elements.commands.container, 'click', instance.__internal.commandsClickHandler); on(instance.elements.footer, 'click', instance.__internal.buttonsClickHandler); on(instance.elements.reset[0], 'focus', instance.__internal.resetHandler); on(instance.elements.reset[1], 'focus', instance.__internal.resetHandler); //prevent handling key up when dialog is being opened by a key stroke. cancelKeyup = true; // hook in transition handler on(instance.elements.dialog, transition.type, instance.__internal.transitionInHandler); // modelss only events if (!instance.get('modal')) { bindModelessEvents(instance); } // resizable if (instance.get('resizable')) { bindResizableEvents(instance); } // movable if (instance.get('movable')) { bindMovableEvents(instance); } } /** * Unbind dialogs events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function unbindEvents(instance) { // if last dialog, remove global handlers if (openDialogs.length === 1) { //global off(window, 'resize', windowResize); off(document.body, 'keyup', keyupHandler); off(document.body, 'keydown', keydownHandler); off(document.body, 'focus', onReset); //move off(document.documentElement, 'mousemove', move); off(document.documentElement, 'mouseup', endMove); //resize off(document.documentElement, 'mousemove', resize); off(document.documentElement, 'mouseup', endResize); } // common events off(instance.elements.commands.container, 'click', instance.__internal.commandsClickHandler); off(instance.elements.footer, 'click', instance.__internal.buttonsClickHandler); off(instance.elements.reset[0], 'focus', instance.__internal.resetHandler); off(instance.elements.reset[1], 'focus', instance.__internal.resetHandler); // hook out transition handler on(instance.elements.dialog, transition.type, instance.__internal.transitionOutHandler); // modelss only events if (!instance.get('modal')) { unbindModelessEvents(instance); } // movable if (instance.get('movable')) { unbindMovableEvents(instance); } // resizable if (instance.get('resizable')) { unbindResizableEvents(instance); } } /** * Bind modeless specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function bindModelessEvents(instance) { on(instance.elements.dialog, 'focus', instance.__internal.bringToFrontHandler, true); } /** * Unbind modeless specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function unbindModelessEvents(instance) { off(instance.elements.dialog, 'focus', instance.__internal.bringToFrontHandler, true); } /** * Bind movable specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function bindMovableEvents(instance) { on(instance.elements.header, 'mousedown', instance.__internal.beginMoveHandler); on(instance.elements.header, 'touchstart', instance.__internal.beginMoveHandler); } /** * Unbind movable specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function unbindMovableEvents(instance) { off(instance.elements.header, 'mousedown', instance.__internal.beginMoveHandler); off(instance.elements.header, 'touchstart', instance.__internal.beginMoveHandler); } /** * Bind resizable specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function bindResizableEvents(instance) { on(instance.elements.resizeHandle, 'mousedown', instance.__internal.beginResizeHandler); on(instance.elements.resizeHandle, 'touchstart', instance.__internal.beginResizeHandler); } /** * Unbind resizable specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function unbindResizableEvents(instance) { off(instance.elements.resizeHandle, 'mousedown', instance.__internal.beginResizeHandler); off(instance.elements.resizeHandle, 'touchstart', instance.__internal.beginResizeHandler); } /** * Bind closable events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function bindClosableEvents(instance) { on(instance.elements.modal, 'click', instance.__internal.modalClickHandler); } /** * Unbind closable specific events * * @param {Object} instance The dilog instance. * * @return {undefined} */ function unbindClosableEvents(instance) { off(instance.elements.modal, 'click', instance.__internal.modalClickHandler); } // dialog API return { __init:initialize, /** * Check if dialog is currently open * * @return {Boolean} */ isOpen: function () { return this.__internal.isOpen; }, isModal: function (){ return this.elements.root.className.indexOf(classes.modeless) < 0; }, isMaximized:function(){ return this.elements.root.className.indexOf(classes.maximized) > -1; }, isPinned:function(){ return this.elements.root.className.indexOf(classes.unpinned) < 0; }, maximize:function(){ if(!this.isMaximized()){ maximize(this); } return this; }, restore:function(){ if(this.isMaximized()){ restore(this); } return this; }, pin:function(){ if(!this.isPinned()){ pin(this); } return this; }, unpin:function(){ if(this.isPinned()){ unpin(this); } return this; }, bringToFront:function(){ bringToFront(null, this); return this; }, /** * Move the dialog to a specific x/y coordinates * * @param {Number} x The new dialog x coordinate in pixels. * @param {Number} y The new dialog y coordinate in pixels. * * @return {Object} The dialog instance. */ moveTo:function(x,y){ if(!isNaN(x) && !isNaN(y)){ // allow custom `onmove` method dispatchEvent('onmove', this); var element = this.elements.dialog, current = element, offsetLeft = 0, offsetTop = 0; //subtract existing left,top if (element.style.left) { offsetLeft -= parseInt(element.style.left, 10); } if (element.style.top) { offsetTop -= parseInt(element.style.top, 10); } //calc offset do { offsetLeft += current.offsetLeft; offsetTop += current.offsetTop; } while (current = current.offsetParent); //calc left, top var left = (x - offsetLeft); var top = (y - offsetTop); //// rtl handling if (isRightToLeft()) { left *= -1; } element.style.left = left + 'px'; element.style.top = top + 'px'; // allow custom `onmoved` method dispatchEvent('onmoved', this); } return this; }, /** * Resize the dialog to a specific width/height (the dialog must be 'resizable'). * The dialog can be resized to: * A minimum width equal to the initial display width * A minimum height equal to the sum of header/footer heights. * * * @param {Number or String} width The new dialog width in pixels or in percent. * @param {Number or String} height The new dialog height in pixels or in percent. * * @return {Object} The dialog instance. */ resizeTo:function(width,height){ var w = parseFloat(width), h = parseFloat(height), regex = /(\d*\.\d+|\d+)%/ ; if(!isNaN(w) && !isNaN(h) && this.get('resizable') === true){ // allow custom `onresize` method dispatchEvent('onresize', this); if(('' + width).match(regex)){ w = w / 100 * document.documentElement.clientWidth ; } if(('' + height).match(regex)){ h = h / 100 * document.documentElement.clientHeight; } var element = this.elements.dialog; if (element.style.maxWidth !== 'none') { element.style.minWidth = (minWidth = element.offsetWidth) + 'px'; } element.style.maxWidth = 'none'; element.style.minHeight = this.elements.header.offsetHeight + this.elements.footer.offsetHeight + 'px'; element.style.width = w + 'px'; element.style.height = h + 'px'; // allow custom `onresized` method dispatchEvent('onresized', this); } return this; }, /** * Gets or Sets dialog settings/options * * @param {String|Object} key A string specifying a propery name or a collection of key/value pairs. * @param {Object} value Optional, the value associated with the key (in case it was a string). * * @return {undefined} */ setting : function (key, value) { var self = this; var result = update(this, this.__internal.options, function(k,o,n){ optionUpdated(self,k,o,n); }, key, value); if(result.op === 'get'){ if(result.found){ return result.value; }else if(typeof this.settings !== 'undefined'){ return update(this, this.settings, this.settingUpdated || function(){}, key, value).value; }else{ return undefined; } }else if(result.op === 'set'){ if(result.items.length > 0){ var callback = this.settingUpdated || function(){}; for(var x=0;x 0) { var self = this; this.__internal.timer = setTimeout(function () { self.dismiss(); }, this.__internal.delay * 1000); } return this; }, /* * Sets the notification message contents * @param {string or DOMElement} content The notification message content * */ setContent: function (content) { if (typeof content === 'string') { clearContents(this.element); this.element.innerHTML = content; } else if (content instanceof window.HTMLElement && this.element.firstChild !== content) { clearContents(this.element); this.element.appendChild(content); } if(this.__internal.closeButton){ var close = document.createElement('span'); addClass(close, classes.close); close.setAttribute('data-close', true); this.element.appendChild(close); } return this; }, /* * Dismisses all open notifications except this. * */ dismissOthers: function () { notifier.dismissAll(this); return this; } }); } //notifier api return { /** * Gets or Sets notifier settings. * * @param {string} key The setting name * @param {Variant} value The setting value. * * @return {Object} if the called as a setter, return the notifier instance. */ setting: function (key, value) { //ensure init initialize(this); if (typeof value === 'undefined') { //get return this.__internal[key]; } else { //set switch (key) { case 'position': this.__internal.position = value; updatePosition(this); break; case 'delay': this.__internal.delay = value; break; } } return this; }, /** * [Alias] Sets dialog settings/options */ set:function(key,value){ this.setting(key,value); return this; }, /** * [Alias] Gets dialog settings/options */ get:function(key){ return this.setting(key); }, /** * Creates a new notification message * * @param {string} type The type of notification message (simply a CSS class name 'ajs-{type}' to be added). * @param {Function} callback A callback function to be invoked when the message is dismissed. * * @return {undefined} */ create: function (type, callback) { //ensure notifier init initialize(this); //create new notification message var div = document.createElement('div'); div.className = classes.message + ((typeof type === 'string' && type !== '') ? ' ajs-' + type : ''); return create(div, callback); }, /** * Dismisses all open notifications. * * @param {Object} excpet [optional] The notification object to exclude from dismissal. * */ dismissAll: function (except) { var clone = openInstances.slice(0); for (var x = 0; x < clone.length; x += 1) { var instance = clone[x]; if (except === undefined || except !== instance) { instance.dismiss(); } } } }; })(); /** * Alertify public API * This contains everything that is exposed through the alertify object. * * @return {Object} */ function Alertify() { // holds a references of created dialogs var dialogs = {}; /** * Extends a given prototype by merging properties from base into sub. * * @sub {Object} sub The prototype being overwritten. * @base {Object} base The prototype being written. * * @return {Object} The extended prototype. */ function extend(sub, base) { // copy dialog pototype over definition. for (var prop in base) { if (base.hasOwnProperty(prop)) { sub[prop] = base[prop]; } } return sub; } /** * Helper: returns a dialog instance from saved dialogs. * and initializes the dialog if its not already initialized. * * @name {String} name The dialog name. * * @return {Object} The dialog instance. */ function get_dialog(name) { var dialog = dialogs[name].dialog; //initialize the dialog if its not already initialized. if (dialog && typeof dialog.__init === 'function') { dialog.__init(dialog); } return dialog; } /** * Helper: registers a new dialog definition. * * @name {String} name The dialog name. * @Factory {Function} Factory a function resposible for creating dialog prototype. * @transient {Boolean} transient True to create a new dialog instance each time the dialog is invoked, false otherwise. * @base {String} base the name of another dialog to inherit from. * * @return {Object} The dialog definition. */ function register(name, Factory, transient, base) { var definition = { dialog: null, factory: Factory }; //if this is based on an existing dialog, create a new definition //by applying the new protoype over the existing one. if (base !== undefined) { definition.factory = function () { return extend(new dialogs[base].factory(), new Factory()); }; } if (!transient) { //create a new definition based on dialog definition.dialog = extend(new definition.factory(), dialog); } return dialogs[name] = definition; } return { /** * Alertify defaults * * @type {Object} */ defaults: defaults, /** * Dialogs factory * * @param {string} Dialog name. * @param {Function} A Dialog factory function. * @param {Boolean} Indicates whether to create a singleton or transient dialog. * @param {String} The name of the base type to inherit from. */ dialog: function (name, Factory, transient, base) { // get request, create a new instance and return it. if (typeof Factory !== 'function') { return get_dialog(name); } if (this.hasOwnProperty(name)) { throw new Error('alertify.dialog: name already exists'); } // register the dialog var definition = register(name, Factory, transient, base); if (transient) { // make it public this[name] = function () { //if passed with no params, consider it a get request if (arguments.length === 0) { return definition.dialog; } else { var instance = extend(new definition.factory(), dialog); //ensure init if (instance && typeof instance.__init === 'function') { instance.__init(instance); } instance['main'].apply(instance, arguments); return instance['show'].apply(instance); } }; } else { // make it public this[name] = function () { //ensure init if (definition.dialog && typeof definition.dialog.__init === 'function') { definition.dialog.__init(definition.dialog); } //if passed with no params, consider it a get request if (arguments.length === 0) { return definition.dialog; } else { var dialog = definition.dialog; dialog['main'].apply(definition.dialog, arguments); return dialog['show'].apply(definition.dialog); } }; } }, /** * Close all open dialogs. * * @param {Object} excpet [optional] The dialog object to exclude from closing. * * @return {undefined} */ closeAll: function (except) { var clone = openDialogs.slice(0); for (var x = 0; x < clone.length; x += 1) { var instance = clone[x]; if (except === undefined || except !== instance) { instance.close(); } } }, /** * Gets or Sets dialog settings/options. if the dialog is transient, this call does nothing. * * @param {string} name The dialog name. * @param {String|Object} key A string specifying a propery name or a collection of key/value pairs. * @param {Variant} value Optional, the value associated with the key (in case it was a string). * * @return {undefined} */ setting: function (name, key, value) { if (name === 'notifier') { return notifier.setting(key, value); } var dialog = get_dialog(name); if (dialog) { return dialog.setting(key, value); } }, /** * [Alias] Sets dialog settings/options */ set: function(name,key,value){ return this.setting(name, key,value); }, /** * [Alias] Gets dialog settings/options */ get: function(name, key){ return this.setting(name, key); }, /** * Creates a new notification message. * If a type is passed, a class name "ajs-{type}" will be added. * This allows for custom look and feel for various types of notifications. * * @param {String | DOMElement} [message=undefined] Message text * @param {String} [type=''] Type of log message * @param {String} [wait=''] Time (in seconds) to wait before auto-close * @param {Function} [callback=undefined] A callback function to be invoked when the log is closed. * * @return {Object} Notification object. */ notify: function (message, type, wait, callback) { return notifier.create(type, callback).push(message, wait); }, /** * Creates a new notification message. * * @param {String} [message=undefined] Message text * @param {String} [wait=''] Time (in seconds) to wait before auto-close * @param {Function} [callback=undefined] A callback function to be invoked when the log is closed. * * @return {Object} Notification object. */ message: function (message, wait, callback) { return notifier.create(null, callback).push(message, wait); }, /** * Creates a new notification message of type 'success'. * * @param {String} [message=undefined] Message text * @param {String} [wait=''] Time (in seconds) to wait before auto-close * @param {Function} [callback=undefined] A callback function to be invoked when the log is closed. * * @return {Object} Notification object. */ success: function (message, wait, callback) { return notifier.create('success', callback).push(message, wait); }, /** * Creates a new notification message of type 'error'. * * @param {String} [message=undefined] Message text * @param {String} [wait=''] Time (in seconds) to wait before auto-close * @param {Function} [callback=undefined] A callback function to be invoked when the log is closed. * * @return {Object} Notification object. */ error: function (message, wait, callback) { return notifier.create('error', callback).push(message, wait); }, /** * Creates a new notification message of type 'warning'. * * @param {String} [message=undefined] Message text * @param {String} [wait=''] Time (in seconds) to wait before auto-close * @param {Function} [callback=undefined] A callback function to be invoked when the log is closed. * * @return {Object} Notification object. */ warning: function (message, wait, callback) { return notifier.create('warning', callback).push(message, wait); }, /** * Dismisses all open notifications * * @return {undefined} */ dismissAll: function () { notifier.dismissAll(); } }; } var alertify = new Alertify(); /** * Alert dialog definition * * invoked by: * alertify.alert(message); * alertify.alert(title, message); * alertify.alert(message, onok); * alertify.alert(title, message, onok); */ alertify.dialog('alert', function () { return { main: function (_title, _message, _onok) { var title, message, onok; switch (arguments.length) { case 1: message = _title; break; case 2: if (typeof _message === 'function') { message = _title; onok = _message; } else { title = _title; message = _message; } break; case 3: title = _title; message = _message; onok = _onok; break; } this.set('title', title); this.set('message', message); this.set('onok', onok); return this; }, setup: function () { return { buttons: [ { text: alertify.defaults.glossary.ok, key: keys.ESC, invokeOnClose: true, className: alertify.defaults.theme.ok, } ], focus: { element: 0, select: false }, options: { maximizable: false, resizable: false } }; }, build: function () { // nothing }, prepare: function () { //nothing }, setMessage: function (message) { this.setContent(message); }, settings: { message: undefined, onok: undefined, label: undefined, }, settingUpdated: function (key, oldValue, newValue) { switch (key) { case 'message': this.setMessage(newValue); break; case 'label': if (this.__internal.buttons[0].element) { this.__internal.buttons[0].element.innerHTML = newValue; } break; } }, callback: function (closeEvent) { if (typeof this.get('onok') === 'function') { var returnValue = this.get('onok').call(this, closeEvent); if (typeof returnValue !== 'undefined') { closeEvent.cancel = !returnValue; } } } }; }); /** * Confirm dialog object * * alertify.confirm(message); * alertify.confirm(message, onok); * alertify.confirm(message, onok, oncancel); * alertify.confirm(title, message, onok, oncancel); */ alertify.dialog('confirm', function () { var autoConfirm = { timer: null, index: null, text: null, duration: null, task: function (event, self) { if (self.isOpen()) { self.__internal.buttons[autoConfirm.index].element.innerHTML = autoConfirm.text + ' (‏' + autoConfirm.duration + '‏) '; autoConfirm.duration -= 1; if (autoConfirm.duration === -1) { clearAutoConfirm(self); var button = self.__internal.buttons[autoConfirm.index]; var closeEvent = createCloseEvent(autoConfirm.index, button); if (typeof self.callback === 'function') { self.callback.apply(self, [closeEvent]); } //close the dialog. if (closeEvent.close !== false) { self.close(); } } } else { clearAutoConfirm(self); } } }; function clearAutoConfirm(self) { if (autoConfirm.timer !== null) { clearInterval(autoConfirm.timer); autoConfirm.timer = null; self.__internal.buttons[autoConfirm.index].element.innerHTML = autoConfirm.text; } } function startAutoConfirm(self, index, duration) { clearAutoConfirm(self); autoConfirm.duration = duration; autoConfirm.index = index; autoConfirm.text = self.__internal.buttons[index].element.innerHTML; autoConfirm.timer = setInterval(delegate(self, autoConfirm.task), 1000); autoConfirm.task(null, self); } return { main: function (_title, _message, _onok, _oncancel) { var title, message, onok, oncancel; switch (arguments.length) { case 1: message = _title; break; case 2: message = _title; onok = _message; break; case 3: message = _title; onok = _message; oncancel = _onok; break; case 4: title = _title; message = _message; onok = _onok; oncancel = _oncancel; break; } this.set('title', title); this.set('message', message); this.set('onok', onok); this.set('oncancel', oncancel); return this; }, setup: function () { return { buttons: [ { text: alertify.defaults.glossary.ok, key: keys.ENTER, className: alertify.defaults.theme.ok, }, { text: alertify.defaults.glossary.cancel, key: keys.ESC, invokeOnClose: true, className: alertify.defaults.theme.cancel, } ], focus: { element: 0, select: false }, options: { maximizable: false, resizable: false } }; }, build: function () { //nothing }, prepare: function () { //nothing }, setMessage: function (message) { this.setContent(message); }, settings: { message: null, labels: null, onok: null, oncancel: null, defaultFocus: null, reverseButtons: null, }, settingUpdated: function (key, oldValue, newValue) { switch (key) { case 'message': this.setMessage(newValue); break; case 'labels': if ('ok' in newValue && this.__internal.buttons[0].element) { this.__internal.buttons[0].text = newValue.ok; this.__internal.buttons[0].element.innerHTML = newValue.ok; } if ('cancel' in newValue && this.__internal.buttons[1].element) { this.__internal.buttons[1].text = newValue.cancel; this.__internal.buttons[1].element.innerHTML = newValue.cancel; } break; case 'reverseButtons': if (newValue === true) { this.elements.buttons.primary.appendChild(this.__internal.buttons[0].element); } else { this.elements.buttons.primary.appendChild(this.__internal.buttons[1].element); } break; case 'defaultFocus': this.__internal.focus.element = newValue === 'ok' ? 0 : 1; break; } }, callback: function (closeEvent) { clearAutoConfirm(this); var returnValue; switch (closeEvent.index) { case 0: if (typeof this.get('onok') === 'function') { returnValue = this.get('onok').call(this, closeEvent); if (typeof returnValue !== 'undefined') { closeEvent.cancel = !returnValue; } } break; case 1: if (typeof this.get('oncancel') === 'function') { returnValue = this.get('oncancel').call(this, closeEvent); if (typeof returnValue !== 'undefined') { closeEvent.cancel = !returnValue; } } break; } }, autoOk: function (duration) { startAutoConfirm(this, 0, duration); return this; }, autoCancel: function (duration) { startAutoConfirm(this, 1, duration); return this; } }; }); /** * Prompt dialog object * * invoked by: * alertify.prompt(message); * alertify.prompt(message, value); * alertify.prompt(message, value, onok); * alertify.prompt(message, value, onok, oncancel); * alertify.prompt(title, message, value, onok, oncancel); */ alertify.dialog('prompt', function () { var input = document.createElement('INPUT'); var p = document.createElement('P'); return { main: function (_title, _message, _value, _onok, _oncancel) { var title, message, value, onok, oncancel; switch (arguments.length) { case 1: message = _title; break; case 2: message = _title; value = _message; break; case 3: message = _title; value = _message; onok = _value; break; case 4: message = _title; value = _message; onok = _value; oncancel = _onok; break; case 5: title = _title; message = _message; value = _value; onok = _onok; oncancel = _oncancel; break; } this.set('title', title); this.set('message', message); this.set('value', value); this.set('onok', onok); this.set('oncancel', oncancel); return this; }, setup: function () { return { buttons: [ { text: alertify.defaults.glossary.ok, key: keys.ENTER, className: alertify.defaults.theme.ok, }, { text: alertify.defaults.glossary.cancel, key: keys.ESC, invokeOnClose: true, className: alertify.defaults.theme.cancel, } ], focus: { element: input, select: true }, options: { maximizable: false, resizable: false } }; }, build: function () { input.className = alertify.defaults.theme.input; input.setAttribute('type', 'text'); input.value = this.get('value'); this.elements.content.appendChild(p); this.elements.content.appendChild(input); }, prepare: function () { //nothing }, setMessage: function (message) { if (typeof message === 'string') { clearContents(p); p.innerHTML = message; } else if (message instanceof window.HTMLElement && p.firstChild !== message) { clearContents(p); p.appendChild(message); } }, settings: { message: undefined, labels: undefined, onok: undefined, oncancel: undefined, value: '', type:'text', reverseButtons: undefined, }, settingUpdated: function (key, oldValue, newValue) { switch (key) { case 'message': this.setMessage(newValue); break; case 'value': input.value = newValue; break; case 'type': switch (newValue) { case 'text': case 'color': case 'date': case 'datetime-local': case 'email': case 'month': case 'number': case 'password': case 'search': case 'tel': case 'time': case 'week': input.type = newValue; break; default: input.type = 'text'; break; } break; case 'labels': if (newValue.ok && this.__internal.buttons[0].element) { this.__internal.buttons[0].element.innerHTML = newValue.ok; } if (newValue.cancel && this.__internal.buttons[1].element) { this.__internal.buttons[1].element.innerHTML = newValue.cancel; } break; case 'reverseButtons': if (newValue === true) { this.elements.buttons.primary.appendChild(this.__internal.buttons[0].element); } else { this.elements.buttons.primary.appendChild(this.__internal.buttons[1].element); } break; } }, callback: function (closeEvent) { var returnValue; switch (closeEvent.index) { case 0: this.settings.value = input.value; if (typeof this.get('onok') === 'function') { returnValue = this.get('onok').call(this, closeEvent, this.settings.value); if (typeof returnValue !== 'undefined') { closeEvent.cancel = !returnValue; } } break; case 1: if (typeof this.get('oncancel') === 'function') { returnValue = this.get('oncancel').call(this, closeEvent); if (typeof returnValue !== 'undefined') { closeEvent.cancel = !returnValue; } } if(!closeEvent.cancel){ input.value = this.settings.value; } break; } } }; }); // CommonJS if ( typeof module === 'object' && typeof module.exports === 'object' ) { module.exports = alertify; // AMD } else if ( typeof define === 'function' && define.amd) { define( [], function () { return alertify; } ); // window } else if ( !window.alertify ) { window.alertify = alertify; } } ( typeof window !== 'undefined' ? window : this ) ); youtube-embed-plus/scripts/alertify/alertify.min.js000064400000105710151435171370016553 0ustar00/*! alertifyjs - v1.11.0 - Mohammad Younes (http://alertifyjs.com) */ !function(a){"use strict";function b(a,b){a.className+=" "+b}function c(a,b){for(var c=a.className.split(" "),d=b.split(" "),e=0;e-1&&c.splice(f,1)}a.className=c.join(" ")}function d(){return"rtl"===a.getComputedStyle(document.body).direction}function e(){return document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop}function f(){return document.documentElement&&document.documentElement.scrollLeft||document.body.scrollLeft}function g(a){for(;a.lastChild;)a.removeChild(a.lastChild)}function h(a){if(null===a)return a;var b;if(Array.isArray(a)){b=[];for(var c=0;c0){for(var c=[],d=0;d=0?(c(document.body,Ca.noOverflow),w(!1)):a>0&&document.body.className.indexOf(Ca.noOverflow)<0&&(w(!0),b(document.body,Ca.noOverflow))}function w(d){v.defaults.preventBodyShift&&document.documentElement.scrollHeight>document.documentElement.clientHeight&&(d?(Ea=xa,Da=a.getComputedStyle(document.body).top,b(document.body,Ca.fixed),document.body.style.top=-xa+"px"):(xa=Ea,document.body.style.top=Da,c(document.body,Ca.fixed),t()))}function x(a,d,e){"string"==typeof e&&c(a.elements.root,Ca.prefix+e),b(a.elements.root,Ca.prefix+d),za=a.elements.root.offsetWidth}function y(a){a.get("modal")?(c(a.elements.root,Ca.modeless),a.isOpen()&&(pa(a),N(a),u())):(b(a.elements.root,Ca.modeless),a.isOpen()&&(oa(a),N(a),u()))}function z(a){a.get("basic")?b(a.elements.root,Ca.basic):c(a.elements.root,Ca.basic)}function A(a){a.get("frameless")?b(a.elements.root,Ca.frameless):c(a.elements.root,Ca.frameless)}function B(a,b){for(var c=p.indexOf(b),d=c+1;d-1?(S(b,function(a){return a.key===c}),!1):void 0}function V(a){var b=p[p.length-1],c=a.keyCode;if(c===n.LEFT||c===n.RIGHT){for(var d=b.__internal.buttons,e=0;en.F1-1&&ya.indexOf(c)>-1)return a.preventDefault(),a.stopPropagation(),S(b,function(a){return a.key===c}),!1}function W(a,b){if(b)b.focus();else{var c=a.__internal.focus,d=c.element;switch(typeof c.element){case"number":a.__internal.buttons.length>c.element&&(d=!0===a.get("basic")?a.elements.reset[0]:a.__internal.buttons[c.element].element);break;case"string":d=a.elements.body.querySelector(c.element);break;case"function":d=c.element.call(a)}void 0!==d&&null!==d||0!==a.__internal.buttons.length||(d=a.elements.reset[0]),d&&d.focus&&(d.focus(),c.select&&d.select&&d.select())}}function X(a,b){if(!b)for(var c=p.length-1;c>-1;c-=1)if(p[c].isModal()){b=p[c];break}if(b&&b.isModal()){var d,e=a.srcElement||a.target,f=e===b.elements.reset[1]||0===b.__internal.buttons.length&&e===document.body;f&&(b.get("maximizable")?d=b.elements.commands.maximize:b.get("closable")&&(d=b.elements.commands.close)),void 0===d&&("number"==typeof b.__internal.focus.element?e===b.elements.reset[0]?d=b.elements.buttons.auxiliary.firstChild||b.elements.buttons.primary.firstChild:f&&(d=b.elements.reset[0]):e===b.elements.reset[0]&&(d=b.elements.buttons.primary.lastChild||b.elements.buttons.auxiliary.lastChild)),W(b,d)}}function Y(a,b){clearTimeout(b.__internal.timerIn),W(b),t(),Ga=!1,l("onfocus",b),r(b.elements.dialog,s.type,b.__internal.transitionInHandler),c(b.elements.root,Ca.animationIn)}function Z(a,b){clearTimeout(b.__internal.timerOut),r(b.elements.dialog,s.type,b.__internal.transitionOutHandler),da(b),ja(b),b.isMaximized()&&!b.get("startMaximized")&&J(b),v.defaults.maintainFocus&&b.__internal.activeElement&&(b.__internal.activeElement.focus(),b.__internal.activeElement=null),"function"==typeof b.__internal.destroy&&b.__internal.destroy.apply(b)}function $(a,b){var c=a[Ka]-Ia,d=a[La]-Ja;Na&&(d-=document.body.scrollTop),b.style.left=c+"px",b.style.top=d+"px"}function _(a,b){var c=a[Ka]-Ia,d=a[La]-Ja;Na&&(d-=document.body.scrollTop),b.style.left=Math.min(Ma.maxLeft,Math.max(Ma.minLeft,c))+"px",b.style.top=Na?Math.min(Ma.maxTop,Math.max(Ma.minTop,d))+"px":Math.max(Ma.minTop,d)+"px"}function aa(a,c){if(null===Pa&&!c.isMaximized()&&c.get("movable")){var d,e=0,f=0;if("touchstart"===a.type?(a.preventDefault(),d=a.targetTouches[0],Ka="clientX",La="clientY"):0===a.button&&(d=a),d){var g=c.elements.dialog;if(b(g,Ca.capture),g.style.left&&(e=parseInt(g.style.left,10)),g.style.top&&(f=parseInt(g.style.top,10)),Ia=d[Ka]-e,Ja=d[La]-f,c.isModal()?Ja+=c.elements.modal.scrollTop:c.isPinned()&&(Ja-=document.body.scrollTop),c.get("moveBounded")){var h=g,i=-e,j=-f;do{i+=h.offsetLeft,j+=h.offsetTop}while(h=h.offsetParent);Ma={maxLeft:i,minLeft:-i,maxTop:document.documentElement.clientHeight-g.clientHeight-j,minTop:-j},Oa=_}else Ma=null,Oa=$;return l("onmove",c),Na=!c.isModal()&&c.isPinned(),Ha=c,Oa(d,g),b(document.body,Ca.noSelection),!1}}}function ba(a){if(Ha){var b;"touchmove"===a.type?(a.preventDefault(),b=a.targetTouches[0]):0===a.button&&(b=a),b&&Oa(b,Ha.elements.dialog)}}function ca(){if(Ha){var a=Ha;Ha=Ma=null,c(document.body,Ca.noSelection),c(a.elements.dialog,Ca.capture),l("onmoved",a)}}function da(a){Ha=null;var b=a.elements.dialog;b.style.left=b.style.top=""}function ea(a){a.get("movable")?(b(a.elements.root,Ca.movable),a.isOpen()&&qa(a)):(da(a),c(a.elements.root,Ca.movable),a.isOpen()&&ra(a))}function fa(a,b,c){var e=b,f=0,g=0;do{f+=e.offsetLeft,g+=e.offsetTop}while(e=e.offsetParent);var h,i;!0===c?(h=a.pageX,i=a.pageY):(h=a.clientX,i=a.clientY);var j=d();if(j&&(h=document.body.offsetWidth-h,isNaN(Qa)||(f=document.body.offsetWidth-f-b.offsetWidth)),b.style.height=i-g+Ta+"px",b.style.width=h-f+Ta+"px",!isNaN(Qa)){var k=.5*Math.abs(b.offsetWidth-Ra);j&&(k*=-1),b.offsetWidth>Ra?b.style.left=Qa+k+"px":b.offsetWidth>=Sa&&(b.style.left=Qa-k+"px")}}function ga(a,c){if(!c.isMaximized()){var d;if("touchstart"===a.type?(a.preventDefault(),d=a.targetTouches[0]):0===a.button&&(d=a),d){l("onresize",c),Pa=c,Ta=c.elements.resizeHandle.offsetHeight/2;var e=c.elements.dialog;return b(e,Ca.capture),Qa=parseInt(e.style.left,10),e.style.height=e.offsetHeight+"px",e.style.minHeight=c.elements.header.offsetHeight+c.elements.footer.offsetHeight+"px",e.style.width=(Ra=e.offsetWidth)+"px","none"!==e.style.maxWidth&&(e.style.minWidth=(Sa=e.offsetWidth)+"px"),e.style.maxWidth="none",b(document.body,Ca.noSelection),!1}}}function ha(a){if(Pa){var b;"touchmove"===a.type?(a.preventDefault(),b=a.targetTouches[0]):0===a.button&&(b=a),b&&fa(b,Pa.elements.dialog,!Pa.get("modal")&&!Pa.get("pinned"))}}function ia(){if(Pa){var a=Pa;Pa=null,c(document.body,Ca.noSelection),c(a.elements.dialog,Ca.capture),Fa=!0,l("onresized",a)}}function ja(a){Pa=null;var b=a.elements.dialog;"none"===b.style.maxWidth&&(b.style.maxWidth=b.style.minWidth=b.style.width=b.style.height=b.style.minHeight=b.style.left="",Qa=Number.Nan,Ra=Sa=Ta=0)}function ka(a){a.get("resizable")?(b(a.elements.root,Ca.resizable),a.isOpen()&&sa(a)):(ja(a),c(a.elements.root,Ca.resizable),a.isOpen()&&ta(a))}function la(){for(var a=0;a-1&&a.navigator.userAgent.indexOf("Chrome")<0,Ba={dimmer:'
',modal:'
',dialog:'
',reset:'',commands:'
',header:'
',body:'
',content:'
',footer:'',buttons:{primary:'
',auxiliary:'
'},button:'',resizeHandle:'
'},Ca={animationIn:"ajs-in",animationOut:"ajs-out",base:"alertify",basic:"ajs-basic",capture:"ajs-capture",closable:"ajs-closable",fixed:"ajs-fixed",frameless:"ajs-frameless",hidden:"ajs-hidden",maximize:"ajs-maximize",maximized:"ajs-maximized",maximizable:"ajs-maximizable",modeless:"ajs-modeless",movable:"ajs-movable",noSelection:"ajs-no-selection",noOverflow:"ajs-no-overflow",noPadding:"ajs-no-padding",pin:"ajs-pin",pinnable:"ajs-pinnable",prefix:"ajs-",resizable:"ajs-resizable",restore:"ajs-restore",shake:"ajs-shake",unpinned:"ajs-unpinned"},Da="",Ea=0,Fa=!1,Ga=!1,Ha=null,Ia=0,Ja=0,Ka="pageX",La="pageY",Ma=null,Na=!1,Oa=null,Pa=null,Qa=Number.Nan,Ra=0,Sa=0,Ta=0;return{__init:m,isOpen:function(){return this.__internal.isOpen},isModal:function(){return this.elements.root.className.indexOf(Ca.modeless)<0},isMaximized:function(){return this.elements.root.className.indexOf(Ca.maximized)>-1},isPinned:function(){return this.elements.root.className.indexOf(Ca.unpinned)<0},maximize:function(){return this.isMaximized()||I(this),this},restore:function(){return this.isMaximized()&&J(this),this},pin:function(){return this.isPinned()||G(this),this},unpin:function(){return this.isPinned()&&H(this),this},bringToFront:function(){return B(null,this),this},moveTo:function(a,b){if(!isNaN(a)&&!isNaN(b)){l("onmove",this);var c=this.elements.dialog,e=c,f=0,g=0;c.style.left&&(f-=parseInt(c.style.left,10)),c.style.top&&(g-=parseInt(c.style.top,10));do{f+=e.offsetLeft,g+=e.offsetTop}while(e=e.offsetParent);var h=a-f,i=b-g;d()&&(h*=-1),c.style.left=h+"px",c.style.top=i+"px",l("onmoved",this)}return this},resizeTo:function(a,b){var c=parseFloat(a),d=parseFloat(b),e=/(\d*\.\d+|\d+)%/;if(!isNaN(c)&&!isNaN(d)&&!0===this.get("resizable")){l("onresize",this),(""+a).match(e)&&(c=c/100*document.documentElement.clientWidth),(""+b).match(e)&&(d=d/100*document.documentElement.clientHeight);var f=this.elements.dialog;"none"!==f.style.maxWidth&&(f.style.minWidth=(Sa=f.offsetWidth)+"px"),f.style.maxWidth="none",f.style.minHeight=this.elements.header.offsetHeight+this.elements.footer.offsetHeight+"px",f.style.width=c+"px",f.style.height=d+"px",l("onresized",this)}return this},setting:function(a,b){var c=this,d=D(this,this.__internal.options,function(a,b,d){C(c,a,b,d)},a,b);if("get"===d.op)return d.found?d.value:void 0!==this.settings?D(this,this.settings,this.settingUpdated||function(){},a,b).value:void 0;if("set"===d.op){if(d.items.length>0)for(var e=this.settingUpdated||function(){},f=0;f0){var b=this;this.__internal.timer=setTimeout(function(){b.dismiss()},1e3*this.__internal.delay)}return this},setContent:function(c){if("string"==typeof c?(g(this.element),this.element.innerHTML=c):c instanceof a.HTMLElement&&this.element.firstChild!==c&&(g(this.element),this.element.appendChild(c)),this.__internal.closeButton){var d=document.createElement("span");b(d,n.close),d.setAttribute("data-close",!0),this.element.appendChild(d)}return this},dismissOthers:function(){return u.dismissAll(this),this}})}var k,l,m=[],n={base:"alertify-notifier",message:"ajs-message",top:"ajs-top",right:"ajs-right",bottom:"ajs-bottom",left:"ajs-left",center:"ajs-center",visible:"ajs-visible",hidden:"ajs-hidden",close:"ajs-close"};return{setting:function(a,b){if(d(this),void 0===b)return this.__internal[a];switch(a){case"position":this.__internal.position=b,h(this);break;case"delay":this.__internal.delay=b}return this},set:function(a,b){return this.setting(a,b),this},get:function(a){return this.setting(a)},create:function(a,b){d(this);var c=document.createElement("div");return c.className=n.message+("string"==typeof a&&""!==a?" ajs-"+a:""),i(c,b)},dismissAll:function(a){for(var b=m.slice(0),c=0;c' + iabTextParent + ' : ' + iabText + ' ×'); $('.iab-cat-tags-display').append(tagText); $('.iab-cat-tags-display .iab-cat-tag-button').sort(function (a, b) { return $(a).text() > $(b).text() ? 1 : -1; }).appendTo('.iab-cat-tags-display'); }; $.fn.ytprefsFormJSON = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }; $(document).ready(function () { if (window.location.toString().indexOf('https://') === 0) { window._EPYTA_.wpajaxurl = window._EPYTA_.wpajaxurl.replace("http://", "https://"); } // Create IE + others compatible event handler var epeventMethod = window.addEventListener ? "addEventListener" : "attachEvent"; var epeventer = window[epeventMethod]; var epmessageEvent = epeventMethod == "attachEvent" ? "onmessage" : "message"; // Listen to message from child window epeventer(epmessageEvent, function (e) { var embedcode = ""; try { if (e.data.indexOf("youtubeembedplus") === 0 && e.data.indexOf('clientId=') < 0) { embedcode = e.data.split("|")[1]; if (embedcode.indexOf("[") !== 0) { embedcode = "

" + embedcode + "

"; } if (window.tinyMCE !== null && window.tinyMCE.activeEditor !== null && !window.tinyMCE.activeEditor.isHidden()) { if (window._EPYTA_.mceBookmark) { try { window.tinyMCE.activeEditor.selection.moveToBookmark(window._EPYTA_.mceBookmark); } catch (err) { } } if (typeof window.tinyMCE.execInstanceCommand !== 'undefined') { window.tinyMCE.execInstanceCommand( window.tinyMCE.activeEditor.id, 'mceInsertContent', false, embedcode); } else { send_to_editor(embedcode); } setTimeout(function () { window._EPYTA_.mceBookmark = null; }, 500); } else { embedcode = embedcode.replace('

', '\n').replace('

', '\n'); if (typeof QTags.insertContent === 'function') { QTags.insertContent(embedcode); } else { send_to_editor(embedcode); } } tb_remove(); } } catch (err) { } }, false); $('body').on('click.tbyt', "#ytprefs_wiz_button, .ytprefs_wiz_button_widget_text, .ytprefs-onboarding-launch", function () { window._EPYTA_.widen_ytprefs_wiz(); }); $('body').on('click.tbyt', "#ytprefs_wiz_button_vi, .ytprefs_wiz_button_vi_widget_text", function () { send_to_editor('

[embed-vi-ad]

'); }); $(window).on('resize', window._EPYTA_.widen_ytprefs_wiz); $(document).on('wp-before-tinymce-init.ytprefs-media_button', function (event, init) { var $media_buttons = $(init.selector).closest('.wp-editor-wrap').find('.wp-media-buttons'); if (!$media_buttons.find('.ytprefs_media_link').length) { $media_buttons.append(' YouTube'); if (window._EPYTA_.manage_options && window._EPYTA_.vi_logged_in) { $media_buttons.append(' Video Ad'); } } }); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if ($('.wrap-vi-settings').length) { window._EPYTA_.adstxtLookup(); } $('.wrap section a[href^="#jump"]').on('click', function (e) { e.preventDefault(); var tab = $(this).attr('href'); $('.nav-tab-wrapper a[href="' + tab + '"], .nav-tab-wrapper a[rel="' + tab + '"]').trigger('click'); }); $('.ytprefs-ajax-form').on('keypress', function (ev) { if (ev.which == 13) { ev.preventDefault(); $(this).find('.ytprefs-ajax-form--submit:not([disabled])').trigger('click'); } }); $('.vi-cover-prompt-no').on('click', function () { $.ajax({ type: "post", dataType: "json", timeout: 120000, url: window._EPYTA_.wpajaxurl, data: { security: window._EPYTA_.security, action: 'my_embedplus_vi_hide_feature_ajax' }, success: function (response) { if (!response || response.type === 'error') { alertify.alert(response.message); } else { if (window != window.top) { window.location.reload(); } else { window.top.location.href = response.url; } } }, error: function (xhr, ajaxOptions, thrownError) { alertify.alert('Sorry, there was a network error. Please try again, or turn off this feature using the "Hide Monetize Feature" checkbox on the "Defaults" tab of the YouTube settings. If the issue persists, please contact ext@embedplus.com'); }, complete: function () { } }); }); $('.vi-cover-prompt-yes').on('click', function () { $('.vi-cover-prompt, .vi-cover-clear').fadeOut(500); var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); document.cookie = "vi_cover_prompt_yes=1;expires=" + date.toUTCString() + ";path=" + window._EPYTA_.admin_url; }); $('.vi-cover-prompt-maybe').on('click', function () { var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); document.cookie = "vi_cover_prompt_yes=1;expires=" + date.toUTCString() + ";path=" + window._EPYTA_.admin_url; if (window != window.top) { window.location.reload(); } else { window.top.location.href = window._EPYTA_.admin_url_ytprefs; } }); if ($('.vi-demo-screen').length > 1) { var demoInterval = setInterval(function () { $('.vi-demo-screen-2').toggleClass('demo-hide'); $('.vi-demo-mobile-caption').toggleClass('demo-hide'); }, 20000); } $('.ytvi-step-1--submit-register').on('click', function (ev) { var regEmail = $.trim($('.ytvi-register-email').val()); if (!regEmail.length) { alertify.alert('Please enter your email address.'); } else { $('.ytvi-step-1--submit-register').prop('disabled', true); $('.ytvi-step-1').hide('fade', {}, 500, function () { $('.ytvi-step-2-loading').show('fade', {}, 500, function () { $.ajax({ type: "post", dataType: "json", timeout: 120000, url: window._EPYTA_.wpajaxurl, data: { security: window._EPYTA_.security, action: 'my_embedplus_vi_cache_endpoints_ajax', email: regEmail, domain: window.location.href }, success: function (response) { if (response.type == 'success') { $('.ytvi-step-2 .ytvi-registration iframe').attr('src', response.signupURLParams); setTimeout(function () { $('.ytvi-step-2-loading').hide('fade', {}, 500, function () { $('.ytvi-step-2').show('fade', {}, 500); }); }, 3000); var date_attempt = new Date(), date_expire = new Date(); date_expire.setTime(date_expire.getTime() + (365 * 24 * 60 * 60 * 1000)); document.cookie = "vi_signup_attempt=" + date_attempt.toUTCString() + ";expires=" + date_expire.toUTCString() + ";path=" + window._EPYTA_.admin_url; } else if (response.type === 'error') { alertify.alert(response.message); window._EPYTA_.ytvi_cancel(); } }, error: function (xhr, ajaxOptions, thrownError) { alertify.alert('Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com'); window._EPYTA_.ytvi_cancel(); }, complete: function () { $('.ytvi-step-1--submit-register').prop('disabled', false); } }); }); }); } }); $('.ytvi-registration--cancel').on('click', function () { window._EPYTA_.ytvi_cancel(); }); $('.ytvi-step-1--confirm').on('change', function () { if ($(this).is(':checked')) { $('.ytvi-step-1--submit-register').prop('disabled', false); } else { $('.ytvi-step-1--submit-register').prop('disabled', true); } }); $('.ytvi-step-1--submit-login').on('click', function (ev) { var loginEmail = $.trim($('.ytvi-login-email').val()); var loginPassword = $.trim($('.ytvi-password').val()); var errorMessage = ""; errorMessage += loginEmail.length ? "" : "Please enter your email address. "; errorMessage += loginPassword.length ? "" : "Please enter your vi dashboard password."; if (errorMessage.length) { alertify.alert(errorMessage); } else { $('.ytvi-step-1--submit-login').prop('disabled', true); $('.ytvi-step-1').hide('fade', {}, 500, function () { $('.ytvi-login-loading').show('fade', {}, 500, function () { $.ajax({ type: "post", dataType: "json", timeout: 12000000, url: window._EPYTA_.wpajaxurl, data: { security: window._EPYTA_.security, action: 'my_embedplus_vi_login_ajax', email: loginEmail, password: loginPassword }, success: function (response) { if (response.type === 'error') { alertify.alert(response.message); window._EPYTA_.ytvi_cancel(); } else { $('.ytvi-login-loading').hide('fade', {}, 500, function () { document.cookie = 'vi_signup_attempt=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; $('.ytvi-login-success-message').html(response.message); $('.ytvi-login-success').show('fade', {}, 500, function () {}); }); } }, error: function (xhr, ajaxOptions, thrownError) { alertify.alert('Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com'); window._EPYTA_.ytvi_cancel(); }, complete: function () { $('.ytvi-step-1--submit-login').prop('disabled', false); } }); }); }); } }); $('a.vi-logged-in-goto').each(function () { if ($(this).attr('href').indexOf(window.location.pathname + window.location.search) > 0 || window.location.search.indexOf('youtube-my-preferences') > 0) { $(this).removeAttr('target'); } }); if ($('.wrap-vi-settings').length) { $('.vi-how-works').on('click', function () { var hash = $(this).data('jump'); // jstab $('.nav-tab-wrapper > a[href="' + hash + '"]').trigger('click'); }); $(document).on('click', '.wrap-vi-settings .nav-tab-wrapper a', function () { $a = $(this); $('.wrap-vi-settings .nav-tab-wrapper a').removeClass('nav-tab-active'); $a.addClass('nav-tab-active'); $('.wrap-vi-settings section').hide(); $('.wrap-vi-settings section').filter($a.attr('href')).fadeIn(200); return false; }); var iabValRaw = $('.iab-cat-tags').val(); if (iabValRaw.length > 0) { var iabCurrent = iabValRaw.split(','); iabCurrent.forEach(function (iabVal) { var iabText = $('.iab-cat-child option[value="' + iabVal + '"]').text(); var iabTextParent = $('.iab-cat-parent option[value="' + (iabVal.split('-')[0]) + '"]').text(); window._EPYTA_.iabAdd(iabVal, iabText, iabTextParent); }); } $('.iab-cat-parent').on('change', function () { var iabPrefix = $(this).val(); $('.iab-cat-child').val(iabPrefix); if (iabPrefix == "") { $('.iab-cat-child-box').addClass('hidden'); $('.iab-cat-child-box select').prop('disabled', true); } else { $('.iab-cat-child-box').removeClass('hidden'); $('.iab-cat-child-box select').prop('disabled', false); $('.iab-cat-child option').addClass('hidden'); $('.iab-cat-child option[value^="' + iabPrefix + '-"], .iab-cat-child option[value="' + iabPrefix + '"], .iab-cat-child option[value=""]').removeClass('hidden'); $('.iab-cat-child-box select').val(''); } }); $('.iab-cat-child').on('change', function () { var iabCurrent = $('.iab-cat-tags').val() ? $('.iab-cat-tags').val().split(',') : []; if (iabCurrent.length < 4) { var iabVal = $(this).val(); var iabText = $(this).find('option:selected').text(); var iabTextParent = $('.iab-cat-parent').find('option:selected').text(); if (iabVal && iabCurrent.indexOf(iabVal) == -1) { iabCurrent.push(iabVal); $('.iab-cat-tags').val(iabCurrent.join(',')); window._EPYTA_.iabAdd(iabVal, iabText, iabTextParent); } } else { alertify.alert('You can choose up to 4 categories maximum. In order to add a new one, you must remove one of the existing ones.'); } }); $('.iab-cat-tags-display').on('click', '.iab-cat-tag-button', function () { var $tag = $(this); var iabVal = $tag.data('tag'); var iabCurrent = $('.iab-cat-tags').val() ? $('.iab-cat-tags').val().split(',') : []; iabCurrent = iabCurrent.filter(function (ele) { return ele != iabVal; }); $('.iab-cat-tags').val(iabCurrent.join(',')); $tag.remove(); }); window._EPYTA_.demoBackgroundColor(); window._EPYTA_.demoTextColor(); window._EPYTA_.demoFontFamily(); window._EPYTA_.demoFontSize(); $(window._EPYTA_.escId('vi_js_settings[backgroundColor]')).wpColorPicker({ change: window._EPYTA_.demoBackgroundColor }); $(window._EPYTA_.escId('vi_js_settings[textColor]')).wpColorPicker({ change: window._EPYTA_.demoTextColor }); $(window._EPYTA_.escId('vi_js_settings[font]')).on('change', window._EPYTA_.demoFontFamily); $(window._EPYTA_.escId('vi_js_settings[fontSize]')).on('change', window._EPYTA_.demoFontSize); $.ajax({ type: "post", dataType: "json", timeout: 12000000, url: window._EPYTA_.wpajaxurl, data: { security: window._EPYTA_.security, action: 'my_embedplus_vi_reports_ajax' }, success: function (response) { if (response.type === 'error' || !response.data.mtdReport.length || typeof (response.data.mtdReport[0].date) === 'undefined') { $('.vi-report-error').removeClass('hide'); $('.vi-report').addClass('hide'); } else { var mtdReportXY = response.data.mtdReport.map(function (point, idx) { return { x: moment(point.date, 'YYYY-MM-DD').format(), y: point.revenue }; }); $('.vi-total-earnings-num').text(window._EPYTA_.moneyFormat(response.data.netRevenue)); var thisMonth = moment(mtdReportXY.length ? mtdReportXY[0].x : new Date()).format('MMMM YYYY'); var ctx = document.getElementById("vi-report-canvas").getContext("2d"); var config = { type: 'line', data: { datasets: [{ label: thisMonth + " Earnings (USD)", backgroundColor: '#1193aa', borderColor: '#1193aa', fill: false, data: mtdReportXY }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { deferred: { delay: 1000 }, }, title: { display: false }, legend: { labels: { fontSize: 15, fontColor: '#000000' } }, tooltips: { position: 'nearest', mode: 'index', intersect: false, callbacks: { label: function (tooltipItem, data) { return window._EPYTA_.moneyFormat(tooltipItem.yLabel); }, title: function (tooltipItems, data) { return moment(tooltipItems[0].xLabel).format('LL'); } } }, scales: { xAxes: [{ type: "time", time: { unit: 'day', unitStepSize: 1, displayFormats: { 'day': 'MMM DD' } }, display: true, scaleLabel: { display: true, labelString: 'Date', fontSize: 15, fontColor: '#000000' }, ticks: { major: { fontStyle: "bold", fontColor: "#000000" } } }], yAxes: [{ display: true, scaleLabel: { display: true, labelString: 'Revenue', fontSize: 15, fontColor: '#000000' }, ticks: { // Include a dollar sign in the ticks callback: function (value, index, values) { return window._EPYTA_.moneyFormat(value); } } }] } } }; Chart.defaults.global.defaultFontFamily = "'Segoe UI', Roboto, 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif"; var revenueLine = new Chart(ctx, config); } }, error: function (xhr, ajaxOptions, thrownError) { alertify.alert('Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com'); }, complete: function () { } }); $('.ytvi-btn-logout').on('click', function () { var multiCatWarning = ''; var iabValRaw = $('.iab-cat-tags').val(); if (iabValRaw.length > 0 && iabValRaw.split(',').length > 1) { multiCatWarning = ' (Note: If you selected more than one video category, you must stay logged in to this settings page for your categories to automatically add variety to your ads)'; } alertify.confirm().set({ title: "Logout of Monetize settings", message: "Logging out won't delete your settings. However, it will require you or any other admins to re-login to change vi ad settings in the future" + multiCatWarning + ".

To actually disable monetization, make sure the 'vi ads are: On/Off' button is set to 'Off.'", onok: function () { $.ajax({ type: "post", dataType: "json", timeout: 12000000, url: window._EPYTA_.wpajaxurl, data: { security: window._EPYTA_.security, action: 'my_embedplus_vi_logout_ajax' }, success: function (response) { if (response.type === 'error') { alertify.alert(response.message); } else { location.href = response.url; } }, error: function (xhr, ajaxOptions, thrownError) { alertify.alert('Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com'); }, complete: function () { } }); } }).show(); }); } $('.ytvi-btn-toggle').on('click', function () { var $btn = $(this); alertify.confirm().set({ title: ($btn.hasClass('ytvi-btn-active') ? "Turn off" : "Turn on") + " your vi ads", message: $btn.hasClass('ytvi-btn-active') ? "Are you sure you would like to deactivate your video ads? Please note that your ads will no longer appear on the front end and your revenue will be paused. If you would like them to reappear later, simply click on this button again." : "Click OK to confirm turning on your vi ads. They will appear on your site according to your Placement settings.", onok: function () { $.ajax({ type: "post", dataType: "json", timeout: 12000000, url: window._EPYTA_.wpajaxurl, data: { security: window._EPYTA_.security, action: 'my_embedplus_vi_toggle_ajax' }, success: function (response) { if (response.type === 'error') { alertify.alert(response.message); } else { $btn.find('strong').text(response.button_text); $btn.toggleClass('ytvi-btn-active ytvi-btn-inactive'); if ($btn.hasClass('ytvi-btn-active')) { $('.ytvi-msg-congrats').show(200); } else { $('.ytvi-msg-congrats').hide(); } } }, error: function (xhr, ajaxOptions, thrownError) { alertify.alert('Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com'); }, complete: function () { } }); } }).show(); }); $('.ytvi-intro-video-modal').on('click', function (e) { e.preventDefault(); var w = Math.min(document.body.clientWidth * .8, 800); var h = 9 / 16 * w; alertify.YoutubeDialog('BcrNPnWUkVI').set({frameless: true, resizeable: true}).resizeTo(w, h); }); $('#vi_show_gdpr_authorization').on('change', function () { if ($(this).is(':checked')) { $('.opt_vi_show_privacy_button').show(300); } else { $('.opt_vi_show_privacy_button').hide(300); } }); /////////////////////////////// onboarding if ($('.wrap-ytprefs-onboarding').length) { // global $('.ytprefs-ob-nav-close').on('click', function () { window.parent.tb_remove(); window.top.location.reload(); }); $('.ytprefs-ob-nav-prev').on('click', function () { window._EPYTA_.onboardPrev($(this).closest('.ytprefs-ob-step')); }); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// step 1 $('.ytprefs-ob-filter li').hover(function () { var sel = '.' + $(this).find('input[type="checkbox"]').data('obfilter') + '-icon'; $(sel).addClass('yob-icon-visible'); }, function () { var sel = '.' + $(this).find('input[type="checkbox"]').data('obfilter') + '-icon'; $(sel).removeClass('yob-icon-visible'); }); $('.ytprefs-ob-filter input[type="checkbox"]').on('change', function () { var $chk = $(this); var obfilter = $chk.data('obfilter'); var $allChecked = $('.ytprefs-ob-filter input[type="checkbox"]:checked'); if ($allChecked.length && !($allChecked.length === 1 && $allChecked.is('[data-obfilter="yob-monetize"]'))) { $('.ytprefs-ob-step1 .ytprefs-ob-nav-next').prop('disabled', false); } else { $('.ytprefs-ob-step1 .ytprefs-ob-nav-next').prop('disabled', true); } if (obfilter == 'yob-monetize') { $('.ytprefs-ob-step3 .ytprefs-ob-nav-ultimate, .ytprefs-ob-step3 .ytprefs-ob-nav-penultimate').toggleClass('ytprefs-ob-nav-hide'); } else { if ($chk.is(":checked")) { $('.ytprefs-ob-step2 .' + obfilter).addClass(obfilter + '-visible'); } else { $('.ytprefs-ob-step2 .' + obfilter).removeClass(obfilter + '-visible'); } } }); $('.ytprefs-ob-step1 .ytprefs-ob-nav-next').on('click', function () { window._EPYTA_.onboardNext($(this).closest('.ytprefs-ob-step')); }); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// step 2 $('#form-onboarding').on('submit', function (e) { e.preventDefault(); (window.tinyMCE || window.tinymce).triggerSave(); var $formOnboarding = $(this); $formOnboarding.find('.ytprefs-ob-nav-next').prop('disabled', true); var formData = $formOnboarding.ytprefsFormJSON(); formData.security = window._EPYTA_.security; $.ajax({ type: "post", dataType: "json", timeout: 30000, url: window._EPYTA_ ? window._EPYTA_.wpajaxurl : ajaxurl, data: formData, success: function (response) { if (response.type == "success") { window._EPYTA_.onboardNext($formOnboarding.closest('.ytprefs-ob-step')); } else { } }, error: function (xhr, ajaxOptions, thrownError) { }, complete: function () { $formOnboarding.find('.ytprefs-ob-nav-next').prop('disabled', false); } }); }); //////////////////////////////////////////////////////////////////////////////////////////////////////////////// step 3 $('.ytprefs-ob-step3 .ytprefs-ob-nav-skip').on('click', function () { window._EPYTA_.onboardNext($(this).closest('.ytprefs-ob-step')); }); $('#form-onboarding-apikey').on('submit', function (e) { e.preventDefault(); var $formOnboarding = $(this); $formOnboarding.find('.ytprefs-ob-nav-next').prop('disabled', true); var formData = $formOnboarding.ytprefsFormJSON(); formData.security = window._EPYTA_.security; $.ajax({ type: "post", dataType: "json", timeout: 30000, url: window._EPYTA_ ? window._EPYTA_.wpajaxurl : ajaxurl, data: formData, success: function (response) { if (response.type == "success") { if ($formOnboarding.find('.ytprefs-ob-nav-ultimate').hasClass('ytprefs-ob-nav-hide')) { window._EPYTA_.onboardNext($formOnboarding.closest('.ytprefs-ob-step')); } else { window.parent.tb_remove(); window.top.location.reload(); } } else { } }, error: function (xhr, ajaxOptions, thrownError) { }, complete: function () { $formOnboarding.find('.ytprefs-ob-nav-next').prop('disabled', false); } }); }); } // end onboarding }); // end ready $(window).on('load', function () { if (_EPYTA_.onboarded != '1') { $('.ytprefs-onboarding-launch').trigger('click'); } }); // end onload })(window, jQuery); youtube-embed-plus/scripts/fitvids.min.js000064400000005653151435171370014572 0ustar00'use strict';var epdofitvids=epdofitvids||function(b){b.fn.fitVidsEP=function(h){_EPYT_.epresponsiveselector.constructor!==Array&&(_EPYT_.epresponsiveselector=JSON.parse(_EPYT_.epresponsiveselector));var d={customSelector:null};if(!document.getElementById("fit-vids-style")){var f=document.createElement("style"),l=document.getElementsByTagName("base")[0]||document.getElementsByTagName("script")[0];f.className="fit-vids-style";f.id="fit-vids-style";f.textContent=".fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}"; l.parentNode.insertBefore(f,l)}h&&b.extend(d,h);return this.each(function(){var e=_EPYT_.epresponsiveselector;d.customSelector&&e.push(d.customSelector);e=b(this).find(e.join(","));e=e.not("object object");e.each(function(){var a=b(this);if(!("embed"===this.tagName.toLowerCase()&&a.parent("object").length||a.parent(".fluid-width-video-wrapper").length||"absolute"===a.css("position"))){a.is("[data-origwidth]:not([width])")&&a.attr("width",a.data("origwidth"));a.is("[data-origheight]:not([height])")&& a.attr("height",a.data("origheight"));var k="object"===this.tagName.toLowerCase()||a.attr("height")&&!isNaN(parseInt(a.attr("height"),10))?parseInt(a.attr("height"),10):a.height(),g=isNaN(parseInt(a.attr("width"),10))?a.width():parseInt(a.attr("width"),10);k/=g;a.attr("id")||a.attr("id","fitvid"+Math.floor(999999*Math.random()));var m=a.attr("width"),n=a.attr("height");if(a.parent().hasClass("epyt-video-wrapper"))try{a.parent().addClass("fluid-width-video-wrapper").attr("style","padding-top: "+100* k+"% !important;"),a.removeAttr("height").removeAttr("width"),setTimeout(function(){if("function"===typeof Event)var c=new Event("resize");else c=document.createEvent("Event"),c.initEvent("resize",!0,!0);window.dispatchEvent(c)},10),setTimeout(function(){parseInt(a.parent().css("padding-top"),10)>a.height()+20&&(a.parent().removeClass("fluid-width-video-wrapper").css("padding-top",""),a.attr("width",m),a.attr("height",n))},100)}catch(c){}else{g=document.createElement("div");g.className="fluid-width-video-wrapper"; try{a.wrap(g).parent(".fluid-width-video-wrapper").attr("style","padding-top: "+100*k+"% !important;"),a.removeAttr("height").removeAttr("width"),setTimeout(function(){if("function"===typeof Event)var c=new Event("resize");else c=document.createEvent("Event"),c.initEvent("resize",!0,!0);window.dispatchEvent(c)},10),setTimeout(function(){parseInt(a.parent().css("padding-top"),10)>a.height()+20&&(a.parent().removeClass("fluid-width-video-wrapper").css("padding-top",""),a.attr("width",m),a.attr("height", n))},100)}catch(c){}}}})})};b(document).ready(function(){b("body").fitVidsEP();b(document).ajaxSuccess(function(h,d,f){d&&d.responseText&&-1!==d.responseText.indexOf("';c=c.replace(/~ytid/g,b);a("#watch"+b).html(c);a("#closeme"+b).css("display","inline");a("#moviecontainer"+b).css("display","block");if(document.getElementById("scrollwatch"+b)){setTimeout(function(){a("html, body").animate({scrollTop:a("#scrollwatch"+b).offset().top-50},250,function(){})},800)}};window._EPYTWIZ_.closeme=window._EPYTWIZ_.closeme||function(b){a("#moviecontainer"+b).css("display","none");a("#watch"+b).html("")};a(document).ready(function(){a(".wiz-accordion").accordion({header:"> h3",collapsible:true,active:false,icons:{header:"ui-icon-circle-arrow-e",activeHeader:"ui-icon-circle-arrow-s"},heightStyle:"content",autoHeight:false}).find("h3.header-go").on("click",function(){window.open(a(this).find("a").attr("href"),"_blank");return false});a(".playlist-tabs").tabs();a(".livestream-tabs").tabs();if(window._EPYTWIZ_.acc_expand){a(".wiz-accordion #"+window._EPYTWIZ_.acc_expand).trigger("click")}a("form.wizform").each(function(){$thisForm=a(this);$thisForm.find(".txturlpastecustom").on("paste change",function(){$thisTxtUrl=a(this);setTimeout(function(){var d=a.trim($thisTxtUrl.val());var c=/<.*/i;if(c.test(d)){var e=new RegExp("(?:https?://)?(?:www\\.)?(?:youtu\\.be/|youtube\\.com(?:/embed/|/shorts/|/v/|/watch\\?v=))([\\w-]{10,12})","ig");var f=e.exec(d);if(f){var g=f[1];$thisTxtUrl.val("https://www.youtube.com/watch?v="+g)}else{$thisTxtUrl.val("https://www.youtube.com/watch?v=")}$thisForm.find(".badpaste").show()}else{$thisForm.find(".badpaste").hide()}},100)})});var b=a("#epyt_wiz_wrap");b.on("click",".copycode",function(){window._EPYTWIZ_.selectText(this)});b.on("click",".inserttopost",function(){var d=window.location.toString().split("/")[0]+"//"+window.location.toString().split("/")[2];var e=a(this).attr("rel");var c=window._EPYTWIZ_.getUrlParameter("clientId");parent.postMessage("youtubeembedplus|"+e+(c?"|clientId="+c:""),d)});b.on("click",".resultdiv .load-movie",function(){window._EPYTWIZ_.loadmovieplain(a(this).closest(".resultdiv").data("vid"));return false});b.on("click",".moviecontainer a.closeme",function(){window._EPYTWIZ_.closeme(a(this).data("vid"))});b.on("paste change input propertychange","#txtUrlChannel",function(){if(a(this).val().indexOf("/c/")>0){a(".error-channel-format").addClass("orange bold");a(this).val("")}else{a(".error-channel-format").removeClass("orange bold")}})})})(jQuery);youtube-embed-plus/scripts/ytprefs-admin.min.js000064400000047240151435171370015702 0ustar00'use strict';(function(b,a){b._EPYTA_.widen_ytprefs_wiz=b._EPYTA_.widen_ytprefs_wiz||function(){setTimeout(function(){var f=Math.min(950,a(b).width()-100),c=-1*f/2;a("#TB_window").addClass("epyt-thickbox").animate({marginLeft:c,width:f},150,"swing",function(){a("#TB_window").get(0).style.setProperty("width",f,"important")});a("#TB_overlay").addClass("epyt-thickbox");a("#TB_window iframe").animate({width:f},150)},750)};b._EPYTA_.ytvi_cancel=b._EPYTA_.ytvi_cancel||function(){a(".ytvi-step").hide("fade", {},500,function(){a(".ytvi-step-1").show("fade",{},500)})};b._EPYTA_.moneyFormat=b._EPYTA_.moneyFormat||function(f){return"$"+parseFloat(f).toFixed(2)};b._EPYTA_.escId=function(f){return"#"+f.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1")};b._EPYTA_.demoBackgroundColor=function(f,c){setTimeout(function(){a(".vi-story-demo--info").css("background-color",a(b._EPYTA_.escId("vi_js_settings[backgroundColor]")).val())},0)};b._EPYTA_.demoTextColor=function(f,c){setTimeout(function(){a(".vi-story-demo--info *").css("color", a(b._EPYTA_.escId("vi_js_settings[textColor]")).val())},0)};b._EPYTA_.demoFontFamily=function(){a(".vi-story-demo--title").css("font-family",a(b._EPYTA_.escId("vi_js_settings[font]")).val())};b._EPYTA_.demoFontSize=function(){a(".vi-story-demo--title").css("font-size",a(b._EPYTA_.escId("vi_js_settings[fontSize]")).val()+"px")};b._EPYTA_.onboardNext=function(f){a(".ytprefs-ob-step").removeClass("active-step");setTimeout(function(){b.scrollTo(0,0);f.next().addClass("active-step")},600)};b._EPYTA_.onboardPrev= function(f){a(".ytprefs-ob-step").removeClass("active-step");setTimeout(function(){b.scrollTo(0,0);f.prev().addClass("active-step")},600)};b._EPYTA_.selectText=function(f){if(document.selection){var c=document.body.createTextRange();c.moveToElementText(f);c.select()}else if(b.getSelection){var d=b.getSelection();c=document.createRange();c.selectNode(f);d.removeAllRanges();d.addRange(c)}};b._EPYTA_.adstxtLookup=function(){b._EPYTA_.adstxtLoading(!0);a.ajax({url:location.protocol+"//"+location.hostname+ "/ads.txt?c="+Date.now(),dataType:"text",type:"get",data:"",headers:{"Cache-Control":"no-cache"},async:!0}).always(function(f,c,d){if("success"===c)switch(d.status){case 200:case 301:case 302:case 304:case 307:b._EPYTA_.adstxtVerify(f);break;default:b._EPYTA_.adstxtVerify("")}else 404==f.status?a.ajax({url:location.protocol+"//"+location.hostname+"/ads.txt",dataType:"text",type:"get",data:"",headers:{"Cache-Control":"no-cache"},async:!0}).always(function(e,g,h){if("success"===g)switch(h.status){case 200:case 301:case 302:case 304:case 307:b._EPYTA_.adstxtVerify(e); break;default:b._EPYTA_.adstxtVerify("")}else b._EPYTA_.adstxtVerify("")}):b._EPYTA_.adstxtVerify("")})};b._EPYTA_.adstxtVerify=function(f){a.ajax({type:"post",dataType:"json",timeout:12E4,url:b._EPYTA_.wpajaxurl,data:{security:b._EPYTA_.security,action:"my_embedplus_vi_adstxt_status_soft_ajax",current_adstxt:f},success:function(c){2==c.code?a(".nav-tab-adstxt").addClass("nav-tab-valid"):0>=c.code&&a(".nav-tab-adstxt").addClass("nav-tab-invalid");a(".adstxt-verify-message").html(c.message)},error:function(c, d,e){a(".nav-tab-adstxt").addClass("nav-tab-invalid");a(".adstxt-verify-message").html("Could not validate ads.txt: "+e)},complete:function(){b._EPYTA_.adstxtLoading(!1)}})};b._EPYTA_.adstxtLoading=function(f){f?a(".nav-tab-adstxt").addClass("nav-tab-loading"):a(".nav-tab-adstxt").removeClass("nav-tab-loading")};b._EPYTA_.gbPreviewSetup=function(){b._EPADashboard_.loadYTAPI();b._EPADashboard_.apiInit();b._EPADashboard_.log("YT API GB");b._EPADashboard_.pageReady();"undefined"!==typeof a.fn.fitVidsEP&& a("body").fitVidsEP()};b._EPYTA_.iabAdd=function(f,c,d){f=a('
'+d+" : "+c+" ×
");a(".iab-cat-tags-display").append(f);a(".iab-cat-tags-display .iab-cat-tag-button").sort(function(e,g){return a(e).text()>a(g).text()?1:-1}).appendTo(".iab-cat-tags-display")};a.fn.ytprefsFormJSON=function(){var f={},c=this.serializeArray();a.each(c,function(){f[this.name]?(f[this.name].push||(f[this.name]=[f[this.name]]),f[this.name].push(this.value||"")):f[this.name]= this.value||""});return f};a(document).ready(function(){0===b.location.toString().indexOf("https://")&&(b._EPYTA_.wpajaxurl=b._EPYTA_.wpajaxurl.replace("http://","https://"));var f=b.addEventListener?"addEventListener":"attachEvent";(0,b[f])("attachEvent"==f?"onmessage":"message",function(c){var d="";try{if(0===c.data.indexOf("youtubeembedplus")&&0>c.data.indexOf("clientId=")){d=c.data.split("|")[1];0!==d.indexOf("[")&&(d="

"+d+"

");if(null===b.tinyMCE||null===b.tinyMCE.activeEditor||b.tinyMCE.activeEditor.isHidden())d= d.replace("

","\n").replace("

","\n"),"function"===typeof QTags.insertContent?QTags.insertContent(d):send_to_editor(d);else{if(b._EPYTA_.mceBookmark)try{b.tinyMCE.activeEditor.selection.moveToBookmark(b._EPYTA_.mceBookmark)}catch(e){}"undefined"!==typeof b.tinyMCE.execInstanceCommand?b.tinyMCE.execInstanceCommand(b.tinyMCE.activeEditor.id,"mceInsertContent",!1,d):send_to_editor(d);setTimeout(function(){b._EPYTA_.mceBookmark=null},500)}tb_remove()}}catch(e){}},!1);a("body").on("click.tbyt","#ytprefs_wiz_button, .ytprefs_wiz_button_widget_text, .ytprefs-onboarding-launch", function(){b._EPYTA_.widen_ytprefs_wiz()});a("body").on("click.tbyt","#ytprefs_wiz_button_vi, .ytprefs_wiz_button_vi_widget_text",function(){send_to_editor("

[embed-vi-ad]

")});a(b).on("resize",b._EPYTA_.widen_ytprefs_wiz);a(document).on("wp-before-tinymce-init.ytprefs-media_button",function(c,d){c=a(d.selector).closest(".wp-editor-wrap").find(".wp-media-buttons");c.find(".ytprefs_media_link").length||(c.append(' YouTube'), b._EPYTA_.manage_options&&b._EPYTA_.vi_logged_in&&c.append(' Video Ad'))});a(".wrap-vi-settings").length&&b._EPYTA_.adstxtLookup();a('.wrap section a[href^="#jump"]').on("click",function(c){c.preventDefault();c=a(this).attr("href");a('.nav-tab-wrapper a[href="'+c+'"], .nav-tab-wrapper a[rel="'+c+'"]').trigger("click")});a(".ytprefs-ajax-form").on("keypress",function(c){13==c.which&&(c.preventDefault(), a(this).find(".ytprefs-ajax-form--submit:not([disabled])").trigger("click"))});a(".vi-cover-prompt-no").on("click",function(){a.ajax({type:"post",dataType:"json",timeout:12E4,url:b._EPYTA_.wpajaxurl,data:{security:b._EPYTA_.security,action:"my_embedplus_vi_hide_feature_ajax"},success:function(c){c&&"error"!==c.type?b!=b.top?b.location.reload():b.top.location.href=c.url:alertify.alert(c.message)},error:function(c,d,e){alertify.alert('Sorry, there was a network error. Please try again, or turn off this feature using the "Hide Monetize Feature" checkbox on the "Defaults" tab of the YouTube settings. If the issue persists, please contact ext@embedplus.com')}, complete:function(){}})});a(".vi-cover-prompt-yes").on("click",function(){a(".vi-cover-prompt, .vi-cover-clear").fadeOut(500);var c=new Date;c.setTime(c.getTime()+31536E6);document.cookie="vi_cover_prompt_yes=1;expires="+c.toUTCString()+";path="+b._EPYTA_.admin_url});a(".vi-cover-prompt-maybe").on("click",function(){var c=new Date;c.setTime(c.getTime()+31536E6);document.cookie="vi_cover_prompt_yes=1;expires="+c.toUTCString()+";path="+b._EPYTA_.admin_url;b!=b.top?b.location.reload():b.top.location.href= b._EPYTA_.admin_url_ytprefs});1 a[href="'+c+'"]').trigger("click")}),a(document).on("click",".wrap-vi-settings .nav-tab-wrapper a",function(){$a=a(this);a(".wrap-vi-settings .nav-tab-wrapper a").removeClass("nav-tab-active");$a.addClass("nav-tab-active");a(".wrap-vi-settings section").hide();a(".wrap-vi-settings section").filter($a.attr("href")).fadeIn(200);return!1}),f=a(".iab-cat-tags").val(),0c.length){var d=a(this).val(),e=a(this).find("option:selected").text(),g=a(".iab-cat-parent").find("option:selected").text();d&&-1==c.indexOf(d)&&(c.push(d),a(".iab-cat-tags").val(c.join(",")),b._EPYTA_.iabAdd(d,e,g))}else alertify.alert("You can choose up to 4 categories maximum. In order to add a new one, you must remove one of the existing ones.")}), a(".iab-cat-tags-display").on("click",".iab-cat-tag-button",function(){var c=a(this),d=c.data("tag"),e=a(".iab-cat-tags").val()?a(".iab-cat-tags").val().split(","):[];e=e.filter(function(g){return g!=d});a(".iab-cat-tags").val(e.join(","));c.remove()}),b._EPYTA_.demoBackgroundColor(),b._EPYTA_.demoTextColor(),b._EPYTA_.demoFontFamily(),b._EPYTA_.demoFontSize(),a(b._EPYTA_.escId("vi_js_settings[backgroundColor]")).wpColorPicker({change:b._EPYTA_.demoBackgroundColor}),a(b._EPYTA_.escId("vi_js_settings[textColor]")).wpColorPicker({change:b._EPYTA_.demoTextColor}), a(b._EPYTA_.escId("vi_js_settings[font]")).on("change",b._EPYTA_.demoFontFamily),a(b._EPYTA_.escId("vi_js_settings[fontSize]")).on("change",b._EPYTA_.demoFontSize),a.ajax({type:"post",dataType:"json",timeout:12E6,url:b._EPYTA_.wpajaxurl,data:{security:b._EPYTA_.security,action:"my_embedplus_vi_reports_ajax"},success:function(c){if("error"!==c.type&&c.data.mtdReport.length&&"undefined"!==typeof c.data.mtdReport[0].date){var d=c.data.mtdReport.map(function(g,h){return{x:moment(g.date,"YYYY-MM-DD").format(), y:g.revenue}});a(".vi-total-earnings-num").text(b._EPYTA_.moneyFormat(c.data.netRevenue));var e=moment(d.length?d[0].x:new Date).format("MMMM YYYY");c=document.getElementById("vi-report-canvas").getContext("2d");d={type:"line",data:{datasets:[{label:e+" Earnings (USD)",backgroundColor:"#1193aa",borderColor:"#1193aa",fill:!1,data:d}]},options:{responsive:!0,maintainAspectRatio:!1,plugins:{deferred:{delay:1E3}},title:{display:!1},legend:{labels:{fontSize:15,fontColor:"#000000"}},tooltips:{position:"nearest", mode:"index",intersect:!1,callbacks:{label:function(g,h){return b._EPYTA_.moneyFormat(g.yLabel)},title:function(g,h){return moment(g[0].xLabel).format("LL")}}},scales:{xAxes:[{type:"time",time:{unit:"day",unitStepSize:1,displayFormats:{day:"MMM DD"}},display:!0,scaleLabel:{display:!0,labelString:"Date",fontSize:15,fontColor:"#000000"},ticks:{major:{fontStyle:"bold",fontColor:"#000000"}}}],yAxes:[{display:!0,scaleLabel:{display:!0,labelString:"Revenue",fontSize:15,fontColor:"#000000"},ticks:{callback:function(g, h,k){return b._EPYTA_.moneyFormat(g)}}}]}}};Chart.defaults.global.defaultFontFamily="'Segoe UI', Roboto, 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif";new Chart(c,d)}else a(".vi-report-error").removeClass("hide"),a(".vi-report").addClass("hide")},error:function(c,d,e){alertify.alert("Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com")},complete:function(){}}),a(".ytvi-btn-logout").on("click",function(){var c="",d=a(".iab-cat-tags").val(); 0
To actually disable monetization, make sure the 'vi ads are: On/Off' button is set to 'Off.'", onok:function(){a.ajax({type:"post",dataType:"json",timeout:12E6,url:b._EPYTA_.wpajaxurl,data:{security:b._EPYTA_.security,action:"my_embedplus_vi_logout_ajax"},success:function(e){"error"===e.type?alertify.alert(e.message):location.href=e.url},error:function(e,g,h){alertify.alert("Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com")},complete:function(){}})}}).show()}));a(".ytvi-btn-toggle").on("click",function(){var c=a(this);alertify.confirm().set({title:(c.hasClass("ytvi-btn-active")? "Turn off":"Turn on")+" your vi ads",message:c.hasClass("ytvi-btn-active")?"Are you sure you would like to deactivate your video ads? Please note that your ads will no longer appear on the front end and your revenue will be paused. If you would like them to reappear later, simply click on this button again.":"Click OK to confirm turning on your vi ads. They will appear on your site according to your Placement settings.",onok:function(){a.ajax({type:"post",dataType:"json",timeout:12E6, url:b._EPYTA_.wpajaxurl,data:{security:b._EPYTA_.security,action:"my_embedplus_vi_toggle_ajax"},success:function(d){"error"===d.type?alertify.alert(d.message):(c.find("strong").text(d.button_text),c.toggleClass("ytvi-btn-active ytvi-btn-inactive"),c.hasClass("ytvi-btn-active")?a(".ytvi-msg-congrats").show(200):a(".ytvi-msg-congrats").hide())},error:function(d,e,g){alertify.alert("Sorry, there was a network error. Please try again. If the issue persists, please contact ext@embedplus.com")},complete:function(){}})}}).show()}); a(".ytvi-intro-video-modal").on("click",function(c){c.preventDefault();c=Math.min(.8*document.body.clientWidth,800);var d=.5625*c;alertify.YoutubeDialog("BcrNPnWUkVI").set({frameless:!0,resizeable:!0}).resizeTo(c,d)});a("#vi_show_gdpr_authorization").on("change",function(){a(this).is(":checked")?a(".opt_vi_show_privacy_button").show(300):a(".opt_vi_show_privacy_button").hide(300)});a(".wrap-ytprefs-onboarding").length&&(a(".ytprefs-ob-nav-close").on("click",function(){b.parent.tb_remove();b.top.location.reload()}), a(".ytprefs-ob-nav-prev").on("click",function(){b._EPYTA_.onboardPrev(a(this).closest(".ytprefs-ob-step"))}),a(".ytprefs-ob-filter li").hover(function(){var c="."+a(this).find('input[type="checkbox"]').data("obfilter")+"-icon";a(c).addClass("yob-icon-visible")},function(){var c="."+a(this).find('input[type="checkbox"]').data("obfilter")+"-icon";a(c).removeClass("yob-icon-visible")}),a('.ytprefs-ob-filter input[type="checkbox"]').on("change",function(){var c=a(this),d=c.data("obfilter"),e=a('.ytprefs-ob-filter input[type="checkbox"]:checked'); !e.length||1===e.length&&e.is('[data-obfilter="yob-monetize"]')?a(".ytprefs-ob-step1 .ytprefs-ob-nav-next").prop("disabled",!0):a(".ytprefs-ob-step1 .ytprefs-ob-nav-next").prop("disabled",!1);"yob-monetize"==d?a(".ytprefs-ob-step3 .ytprefs-ob-nav-ultimate, .ytprefs-ob-step3 .ytprefs-ob-nav-penultimate").toggleClass("ytprefs-ob-nav-hide"):c.is(":checked")?a(".ytprefs-ob-step2 ."+d).addClass(d+"-visible"):a(".ytprefs-ob-step2 ."+d).removeClass(d+"-visible")}),a(".ytprefs-ob-step1 .ytprefs-ob-nav-next").on("click", function(){b._EPYTA_.onboardNext(a(this).closest(".ytprefs-ob-step"))}),a("#form-onboarding").on("submit",function(c){c.preventDefault();(b.tinyMCE||b.tinymce).triggerSave();var d=a(this);d.find(".ytprefs-ob-nav-next").prop("disabled",!0);c=d.ytprefsFormJSON();c.security=b._EPYTA_.security;a.ajax({type:"post",dataType:"json",timeout:3E4,url:b._EPYTA_?b._EPYTA_.wpajaxurl:ajaxurl,data:c,success:function(e){if("success"==e.type)b._EPYTA_.onboardNext(d.closest(".ytprefs-ob-step"))},error:function(e,g, h){},complete:function(){d.find(".ytprefs-ob-nav-next").prop("disabled",!1)}})}),a(".ytprefs-ob-step3 .ytprefs-ob-nav-skip").on("click",function(){b._EPYTA_.onboardNext(a(this).closest(".ytprefs-ob-step"))}),a("#form-onboarding-apikey").on("submit",function(c){c.preventDefault();var d=a(this);d.find(".ytprefs-ob-nav-next").prop("disabled",!0);c=d.ytprefsFormJSON();c.security=b._EPYTA_.security;a.ajax({type:"post",dataType:"json",timeout:3E4,url:b._EPYTA_?b._EPYTA_.wpajaxurl:ajaxurl,data:c,success:function(e){if("success"== e.type)if(d.find(".ytprefs-ob-nav-ultimate").hasClass("ytprefs-ob-nav-hide"))b._EPYTA_.onboardNext(d.closest(".ytprefs-ob-step"));else b.parent.tb_remove(),b.top.location.reload()},error:function(e,g,h){},complete:function(){d.find(".ytprefs-ob-nav-next").prop("disabled",!1)}})}))});a(b).on("load",function(){"1"!=_EPYTA_.onboarded&&a(".ytprefs-onboarding-launch").trigger("click")})})(window,jQuery); youtube-embed-plus/scripts/embdyn.min.css000064400000150046151435171370014551 0ustar00 @charset "UTF-8";.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}@-webkit-keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{0%,100%,20%,53%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-transition-timing-function:cubic-bezier(0.755,.050,.855,.060);transition-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;-ms-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,100%,50%{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;-ms-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{0%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{0%{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{0%,100%,60%,75%,90%{-webkit-transition-timing-function:cubic-bezier(0.215,.61,.355,1);transition-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY;-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{0%{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{0%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{0%{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{0%{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{0%{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInDown{0%{-webkit-transform:translateY(-100%);transform:translateY(-100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight{0%{-webkit-transform:translateX(100%);transform:translateX(100%);visibility:visible}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideInUp{0%{-webkit-transform:translateY(100%);transform:translateY(100%);visibility:visible}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}@keyframes slideOutDown{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(100%);transform:translateY(100%)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes slideOutLeft{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes slideOutRight{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideOutUp{0%{-webkit-transform:translateY(0);transform:translateY(0)}100%{visibility:hidden;-webkit-transform:translateY(-100%);transform:translateY(-100%)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}youtube-embed-plus/scripts/ytvi-gdpr.js000064400000025761151435171370014267 0ustar00/* Begin IAB API V 1.1 Implementation */ var __vicmp = (function () { return typeof (__vicmp) == "function" ? __vicmp : function (c) { var b = arguments; if (!b.length) { return __vicmp.a; } else if (c == '__vicmp') { return false; } else { if (typeof __vicmp.a === 'undefined') { __vicmp.a = []; } __vicmp.a.push([].slice.apply(b)); if (typeof __vicmp.execute != 'undefined') { __vicmp.execute(b); } } } })(); function wp_insert_vi_consent_onload_cmp() { if (typeof __vicmp.execute === 'undefined') { __vicmp.execute = function (b) { var data = {}; if (typeof b != 'undefined') { if (b[0] == 'getUserConsentStatus') { var ViconsentCookie = wp_insert_vi_consent_popup_get_cookie('Viconsent'); var gdprStatus = false; if (document.getElementById('wp_insert_vi_consent_popup_is_eu').value == '1') { gdprStatus = true; } if (ViconsentCookie != '') { var ViconsentCookieData = wp_insert_vi_consent_popup_decode_cookie_content(ViconsentCookie); data = { gdprApplies: gdprStatus, hasGlobalScope: false, consent: ViconsentCookieData['PurposeAllowed'][1], } } else { // Cookie Missing / Corrupted data = { gdprApplies: gdprStatus, hasGlobalScope: false, consent: false, } } } b[2](data, true); } }; if (__vicmp.a && typeof func === 'undefined') { for (var i = 0; i < __vicmp.a.length; i++) { __vicmp.execute(__vicmp.a[i]); } } } } //setTimeout(wp_insert_vi_consent_onload_cmp, 500); wp_insert_vi_consent_onload_cmp(); /* End IAB API V 1.1 Implementation */ /* Begin Consent Cookie Implementation */ function wp_insert_vi_consent_popup_disagree() { var cookieData = wp_insert_vi_consent_popup_create_cookie_content('000000000000000000000000'); wp_insert_vi_consent_popup_set_cookie('Viconsent', cookieData); var ajaxFrame = document.createElement('iframe'); ajaxFrame.src = document.getElementById('wp_insert_vi_consent_popup_url').value + '?wp_insert_vi_consent=' + document.getElementById('wp_insert_vi_consent_popup_auth').value; ajaxFrame.style.display = 'none'; document.getElementById('wp_insert_vi_consent_popup_wrapper').appendChild(ajaxFrame); document.getElementById('wp_insert_vi_consent_popup_wrapper').style.display = 'none'; //document.getElementById('wp_insert_vi_consent_popup_overlay').style.display = 'none'; var wp_insert_vi_consent_popup_settings_button = document.getElementById('wp_insert_vi_consent_popup_settings_button'); if (wp_insert_vi_consent_popup_settings_button) { wp_insert_vi_consent_popup_settings_button.style.display = 'block'; } } function wp_insert_vi_consent_popup_agree() { var wp_insert_vi_consent_popup_vendor_list_purposes = document.getElementById('wp_insert_vi_consent_popup_vendor_list_purposes').value; var cookieData = wp_insert_vi_consent_popup_create_cookie_content(wp_insert_vi_consent_popup_vendor_list_purposes); wp_insert_vi_consent_popup_set_cookie('Viconsent', cookieData); var ajaxFrame = document.createElement('iframe'); ajaxFrame.src = document.getElementById('wp_insert_vi_consent_popup_url').value + '?wp_insert_vi_consent=' + document.getElementById('wp_insert_vi_consent_popup_auth').value; ajaxFrame.style.display = 'none'; document.getElementById('wp_insert_vi_consent_popup_wrapper').appendChild(ajaxFrame); document.getElementById('wp_insert_vi_consent_popup_wrapper').style.display = 'none'; //document.getElementById('wp_insert_vi_consent_popup_overlay').style.display = 'none'; var wp_insert_vi_consent_popup_settings_button = document.getElementById('wp_insert_vi_consent_popup_settings_button'); if (wp_insert_vi_consent_popup_settings_button) { wp_insert_vi_consent_popup_settings_button.style.display = 'block'; } } function wp_insert_vi_consent_popup_create_cookie_content(purposeAllowed) { cookieConsentTimeStamp = Math.round((new Date()).getTime() / 100); var cookieConsent = new Object(); cookieConsent['Version'] = wp_insert_vi_consent_popup_create_binary_string(1, 6); cookieConsent['Created'] = wp_insert_vi_consent_popup_create_binary_string(cookieConsentTimeStamp, 36); cookieConsent['LastUpdated'] = wp_insert_vi_consent_popup_create_binary_string(cookieConsentTimeStamp, 36); cookieConsent['CMPId'] = wp_insert_vi_consent_popup_create_binary_string(999, 12); cookieConsent['CMPVersion'] = wp_insert_vi_consent_popup_create_binary_string(0, 6); cookieConsent['ConsentScreen'] = wp_insert_vi_consent_popup_create_binary_string(0, 6); cookieConsent['ConsentLanguage'] = wp_insert_vi_consent_popup_create_binary_string(4, 6) + wp_insert_vi_consent_popup_create_binary_string(13, 6); var wp_insert_vi_consent_popup_vendor_list_version = parseInt(document.getElementById('wp_insert_vi_consent_popup_vendor_list_version').value); cookieConsent['VendorListVersion'] = wp_insert_vi_consent_popup_create_binary_string(wp_insert_vi_consent_popup_vendor_list_version, 12); cookieConsent['PurposeAllowed'] = purposeAllowed; return window.btoa(cookieConsent['Version'] + cookieConsent['Created'] + cookieConsent['LastUpdated'] + cookieConsent['CMPId'] + cookieConsent['CMPVersion'] + cookieConsent['ConsentScreen'] + cookieConsent['ConsentLanguage'] + cookieConsent['VendorListVersion'] + cookieConsent['PurposeAllowed']); } function wp_insert_vi_consent_popup_decode_cookie_content(cookieData) { if (cookieData != '') { var binaryCookieData = atob(cookieData); var cookieConsent = new Object(); cookieConsent['Version'] = parseInt(binaryCookieData.substring(0, 6), 2); cookieConsent['Created'] = parseInt(binaryCookieData.substring(6, 42), 2); cookieConsent['LastUpdated'] = parseInt(binaryCookieData.substring(42, 78), 2); cookieConsent['CMPId'] = parseInt(binaryCookieData.substring(78, 90), 2); cookieConsent['CMPVersion'] = parseInt(binaryCookieData.substring(90, 96), 2); cookieConsent['ConsentScreen'] = parseInt(binaryCookieData.substring(96, 102), 2); cookieConsent['ConsentLanguage'] = parseInt(binaryCookieData.substring(102, 108), 2) + '' + parseInt(binaryCookieData.substring(106, 114), 2); cookieConsent['VendorListVersion'] = parseInt(binaryCookieData.substring(114, 126), 2); cookieConsent['PurposeAllowed'] = binaryCookieData.substring(126, 150); var purposeConsents = new Object(); for (var i = 24; i > 0; i--) { if (cookieConsent['PurposeAllowed'].substring(i - 1, i) == '1') { purposeConsents[(24 - i) + 1] = true; } else { purposeConsents[(24 - i) + 1] = false; } } cookieConsent['PurposeAllowed'] = purposeConsents; return cookieConsent; } return false; } function wp_insert_vi_consent_popup_create_binary_string(dMask, dBitSize) { var bMask = ""; if (dBitSize <= 32) { while (dBitSize--) { bMask += (dMask >> dBitSize) & 1; } } else { bMask = dMask.toString(2); while (bMask.length < dBitSize) { bMask = "0" + bMask; } } return bMask; } function wp_insert_vi_consent_popup_set_cookie(name, value) { var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); document.cookie = name + "=" + value + ";" + "expires=" + date.toUTCString() + ";path=/"; } function wp_insert_vi_consent_popup_get_cookie(cookieName) { var name = cookieName + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } function wp_insert_vi_consent_popup_settings() { document.getElementById('wp_insert_vi_consent_popup_wrapper').style.display = 'block'; //document.getElementById('wp_insert_vi_consent_popup_overlay').style.display = 'block'; var wp_insert_vi_consent_popup_settings_button = document.getElementById('wp_insert_vi_consent_popup_settings_button'); if (wp_insert_vi_consent_popup_settings_button) { wp_insert_vi_consent_popup_settings_button.style.display = 'none'; } } function wp_insert_vi_consent_popup_load() { if (document.getElementById('wp_insert_vi_consent_popup_is_eu').value == true) { if (wp_insert_vi_consent_popup_get_cookie('Viconsent') == false) { document.getElementById('wp_insert_vi_consent_popup_wrapper').style.display = 'block'; //document.getElementById('wp_insert_vi_consent_popup_overlay').style.display = 'block'; var wp_insert_vi_consent_popup_settings_button = document.getElementById('wp_insert_vi_consent_popup_settings_button'); if (wp_insert_vi_consent_popup_settings_button) { wp_insert_vi_consent_popup_settings_button.style.display = 'none'; } } else { document.getElementById('wp_insert_vi_consent_popup_wrapper').style.display = 'none'; //document.getElementById('wp_insert_vi_consent_popup_overlay').style.display = 'none'; var wp_insert_vi_consent_popup_settings_button = document.getElementById('wp_insert_vi_consent_popup_settings_button'); if (wp_insert_vi_consent_popup_settings_button) { wp_insert_vi_consent_popup_settings_button.style.display = 'block'; } } } else { document.getElementById('wp_insert_vi_consent_popup_wrapper').style.display = 'none'; //document.getElementById('wp_insert_vi_consent_popup_overlay').style.display = 'none'; var wp_insert_vi_consent_popup_settings_button = document.getElementById('wp_insert_vi_consent_popup_settings_button'); if (wp_insert_vi_consent_popup_settings_button) { wp_insert_vi_consent_popup_settings_button.style.display = 'none'; } } } setTimeout(wp_insert_vi_consent_popup_load, 500); /* End Consent Cookie Implementation */youtube-embed-plus/scripts/embedplus_mce.min.css000064400000005064151435171370016076 0ustar00.wp_themeSkin span.mce_embedplus_youtubeprefs,span.mce_embedplus_youtubeprefs{background:transparent url(../images/btnprefsoff.png) no-repeat scroll 50%!important}.wp_themeSkin span.mce_embedplus_youtubeprefs:hover,span.mce_embedplus_youtubeprefs:hover{background-image:url(../images/btnprefson.png)!important}.wp_themeSkin span.mce_embedplus_youtubeprefs_wiz,span.mce_embedplus_youtubeprefs_wiz{background:transparent url(../images/btnwizoff.png) no-repeat scroll 50%!important}.wp_themeSkin span.mce_embedplus_youtubeprefs_wiz:hover,span.mce_embedplus_youtubeprefs_wiz:hover{background-image:url(../images/btnwizon.png)!important}#media-buttons a.ytprefs_media_link span,.wp-core-ui a.ytprefs_media_link span,a.ytprefs_media_link span{background:transparent url(../images/btnwizoff.png) no-repeat scroll 0 0;display:inline-block;height:16px;margin:2px 2px 0 0;vertical-align:top;width:16px}#media-buttons a.ytprefs_media_link:hover span,.wp-core-ui a.ytprefs_media_link:hover span,a.ytprefs_media_link:hover span{background-image:url(../images/btnwizon.png)}#media-buttons a.ytprefs_vi_embed_shortcode span,.wp-core-ui a.ytprefs_vi_embed_shortcode span,a.ytprefs_vi_embed_shortcode span{background:transparent url(../images/icon-monetize_16x18bw.png) no-repeat scroll 0 0;display:inline-block;height:16px;margin:4px 2px 0 0;vertical-align:top;width:18px}#media-buttons a.ytprefs_vi_embed_shortcode:hover span,.wp-core-ui a.ytprefs_vi_embed_shortcode:hover span,a.ytprefs_vi_embed_shortcode:hover span{background-image:url(../images/icon-monetize_16x18.png)}body #TB_overlay.epyt-thickbox{z-index:100000000!important}body #TB_window.epyt-thickbox{z-index:100000001!important}#media-buttons a.ytprefs_media_link,.wp-core-ui a.ytprefs_media_link,a.ytprefs_media_link{background-attachment:scroll;background-clip:border-box;background-color:#f3f3f3;background-image:linear-gradient(#fefefe,#f4f4f4);background-origin:padding-box;background-size:auto;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;margin:0 5px 0 0;outline-color:#333;outline-style:none;outline-width:0;padding:0 10px 1px .4em;text-decoration:none;text-shadow:#fff 0 1px 0;white-space:nowrap}#dashboard_right_now .page-count a.ytprefs_glance_button:before,#dashboard_right_now .page-count span.ytprefs_glance_button:before{content:"\f236"}#toplevel_page_youtube-my-preferences>ul>li.wp-first-item{display:none}#wpadminbar #wp-admin-bar-ytprefs-bar-cache>.ab-item:before{content:"\f311";top:2px}.ytprefs-pointer .wp-pointer-buttons,.ytprefs-pointer .wp-pointer-buttons a.close{display:block!important;opacity:1!important}youtube-embed-plus/scripts/epyt_mce_wizard_button.js000064400000001730151435171370017110 0ustar00(function ($) { // https://github.com/WordPress/gutenberg/issues/10509 if ($('body').hasClass('block-editor-page')) { tinymce.PluginManager.add('epyt_mce_wizard_button', function (editor, url) { editor.addButton('epyt_mce_wizard_button', { title: 'YouTube Wizard', icon: 'icon epyt_mce_wizard_button--icon', onclick: function () // mousedown? touch? { try { window._EPYTA_.mceBookmark = editor.selection.getBookmark(2, true); } catch (err) { } setTimeout(function () { tb_show('YouTube Wizard', window._EPYTA_.wizhref); window._EPYTA_.widen_ytprefs_wiz(); }, 600); } }); }); } })(jQuery);youtube-embed-plus/scripts/ytprefs-wizard.js000064400000014145151435171370015326 0ustar00window._EPYTWIZ_ = window._EPYTWIZ_ || {}; (function ($) { $.fn.followTo = function (pos, startTop) { var $this = this, $window = $(window); $window.on('scroll', function (e) { if ($window.scrollTop() > pos) { $this.css({ position: 'absolute', top: pos }); } else { $this.css({ position: 'fixed', top: startTop }); } }); }; window._EPYTWIZ_.getUrlParameter = function (name) { name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); var results = regex.exec(window.location.search); return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' ')); }; window._EPYTWIZ_.selectText = window._EPYTWIZ_.selectText || function (ele) { if (document.selection) { var range = document.body.createTextRange(); range.moveToElementText(ele); range.select(); } else if (window.getSelection) { var selection = window.getSelection(); var range = document.createRange(); range.selectNode(ele); selection.removeAllRanges(); selection.addRange(range); } }; window._EPYTWIZ_.loadmovieplain = window._EPYTWIZ_.loadmovieplain || function (vid) { var codetemplate = ''; codetemplate = codetemplate.replace(/~ytid/g, vid); $("#watch" + vid).html(codetemplate); $('#closeme' + vid).css('display', 'inline'); $("#moviecontainer" + vid).css('display', 'block'); if (document.getElementById('scrollwatch' + vid)) { setTimeout(function () { $('html, body').animate({ scrollTop: $('#scrollwatch' + vid).offset().top - 50 }, 250, function () { }); }, 800); } }; window._EPYTWIZ_.closeme = window._EPYTWIZ_.closeme || function (vid) { $("#moviecontainer" + vid).css('display', 'none'); $("#watch" + vid).html(""); }; $(document).ready(function () { $('.wiz-accordion').accordion({ header: "> h3", collapsible: true, active: false, icons: { header: "ui-icon-circle-arrow-e", activeHeader: "ui-icon-circle-arrow-s" }, heightStyle: "content", autoHeight: false }).find('h3.header-go').on('click', function () { window.open($(this).find('a').attr('href'), '_blank'); return false; }); $('.playlist-tabs').tabs(); $('.livestream-tabs').tabs(); if (window._EPYTWIZ_.acc_expand) { $('.wiz-accordion #' + window._EPYTWIZ_.acc_expand).trigger('click'); } $('form.wizform').each(function () { $thisForm = $(this); $thisForm.find('.txturlpastecustom').on('paste change', function () { $thisTxtUrl = $(this); setTimeout(function () { var thepaste = $.trim($thisTxtUrl.val()); var badpaste = /<.*/i; if (badpaste.test(thepaste)) { var reg = new RegExp('(?:https?://)?(?:www\\.)?(?:youtu\\.be/|youtube\\.com(?:/embed/|/shorts/|/v/|/watch\\?v=))([\\w-]{10,12})', 'ig'); //get matches found for the regular expression var matches = reg.exec(thepaste); //check if we have found a match for a YouTube video //will support legacy code, shortened urls and if (matches) { var ytid = matches[1]; $thisTxtUrl.val('https://www.youtube.com/watch?v=' + ytid); } else { $thisTxtUrl.val('https://www.youtube.com/watch?v='); } $thisForm.find('.badpaste').show(); } else { $thisForm.find('.badpaste').hide(); } }, 100); }); }); var $epyt_wiz_wrap = $('#epyt_wiz_wrap'); $epyt_wiz_wrap.on('click', '.copycode', function () { window._EPYTWIZ_.selectText(this); }); $epyt_wiz_wrap.on('click', '.inserttopost', function () { var targetdomain = window.location.toString().split("/")[0] + "//" + window.location.toString().split("/")[2]; var embedline = $(this).attr("rel"); var gbclientId = window._EPYTWIZ_.getUrlParameter('clientId'); parent.postMessage("youtubeembedplus|" + embedline + (gbclientId ? '|clientId=' + gbclientId : ''), targetdomain); }); $epyt_wiz_wrap.on('click', '.resultdiv .load-movie', function () { window._EPYTWIZ_.loadmovieplain($(this).closest('.resultdiv').data('vid')); return false; }); $epyt_wiz_wrap.on('click', '.moviecontainer a.closeme', function () { window._EPYTWIZ_.closeme($(this).data('vid')); }); $epyt_wiz_wrap.on('paste change input propertychange', '#txtUrlChannel', function () { if ($(this).val().indexOf('/c/') > 0) { $('.error-channel-format').addClass('orange bold'); $(this).val(''); } else { $('.error-channel-format').removeClass('orange bold'); } }); }); })(jQuery);youtube-embed-plus/scripts/ytprefs.min.js000064400000034626151435171370014620 0ustar00'use strict';(function(b,d){b._EPYT_=b._EPYT_||{ajaxurl:"/wp-admin/admin-ajax.php",security:"",gallery_scrolloffset:100,eppathtoscripts:"/wp-content/plugins/youtube-embed-plus/scripts/",eppath:"/wp-content/plugins/youtube-embed-plus/",epresponsiveselector:["iframe.__youtube_prefs_widget__"],epdovol:!0,evselector:'iframe.__youtube_prefs__[src], iframe[src*="youtube.com/embed/"], iframe[src*="youtube-nocookie.com/embed/"]',stopMobileBuffer:!0,ajax_compat:!1,usingdefault:!0,ytapi_load:"light",pause_others:!1, facade_mode:!1,not_live_on_channel:!1,maxres_facade:"eager"};b._EPYT_.touchmoved=!1;b._EPYT_.apiVideos=b._EPYT_.apiVideos||{};0===b.location.toString().indexOf("https://")&&(b._EPYT_.ajaxurl=b._EPYT_.ajaxurl.replace("http://","https://"));b._EPYT_.pageLoaded=!1;d(b).on("load._EPYT_",function(){b._EPYT_.pageLoaded=!0});document.querySelectorAll||(document.querySelectorAll=function(a){var c=document,e=c.documentElement.firstChild,g=c.createElement("STYLE");e.appendChild(g);c.__qsaels=[];g.styleSheet.cssText= a+"{x:expression(document.__qsaels.push(this))}";b.scrollBy(0,0);return c.__qsaels});"undefined"===typeof b._EPADashboard_&&(b._EPADashboard_={initStarted:!1,checkCount:0,onPlayerReady:function(a){try{if("undefined"!==typeof _EPYT_.epdovol&&_EPYT_.epdovol){var c=parseInt(a.target.getIframe().getAttribute("data-vol"));isNaN(c)||(0===c?a.target.mute():(a.target.isMuted()&&a.target.unMute(),a.target.setVolume(c)))}var e=parseInt(a.target.getIframe().getAttribute("data-epautoplay"));isNaN(e)||1!==e|| a.target.playVideo()}catch(h){}try{var g=a.target.getIframe(),f=g.getAttribute("id");b._EPYT_.apiVideos[f]=a.target;b._EPYT_.not_live_on_channel&&0a.naturalHeight)if(c=d(a).attr("src"))d(a).attr("src",c.replace("maxresdefault", "hqdefault")),d(a).off("load.epyt");2c.indexOf("maxresdefault")){c=c.replace("hqdefault","maxresdefault");var e=new Image;e.src=c;d(e).on("load.epyt",function(){d(e).off("load.epyt");200k?d("html, body").animate({scrollTop:k},500,function(){b._EPADashboard_.setVidSrc(c, h)}):b._EPADashboard_.setVidSrc(c,h)}}).on("touchmove",function(f){b._EPYT_.touchmoved=!0}).on("touchstart",function(){b._EPYT_.touchmoved=!1}).on("keydown",".epyt-gallery-list .epyt-gallery-thumb, .epyt-pagebutton",function(f){var h=f.which;if(13===h||32===h)f.preventDefault(),d(this).trigger("click")});a.on("mouseenter",".epyt-gallery-list .epyt-gallery-thumb",function(){d(this).addClass("hover")});a.on("mouseleave",".epyt-gallery-list .epyt-gallery-thumb",function(){d(this).removeClass("hover")}); a.on("click touchend",".epyt-pagebutton",function(f){if(!b._EPYT_.touchmoved&&!a.find(".epyt-gallery-list").hasClass("epyt-loading")){a.find(".epyt-gallery-list").addClass("epyt-loading");var h="undefined"!==typeof f.originalEvent;f={action:"my_embedplus_gallery_page",security:_EPYT_.security,options:{playlistId:d(this).data("playlistid"),pageToken:d(this).data("pagetoken"),pageSize:d(this).data("pagesize"),columns:d(this).data("epcolumns"),showTitle:d(this).data("showtitle"),showPaging:d(this).data("showpaging"), autonext:d(this).data("autonext"),thumbplay:d(this).data("thumbplay")}};var k=d(this).hasClass("epyt-next"),n=parseInt(a.data("currpage")+"");a.data("currpage",n+(k?1:-1));d.post(_EPYT_.ajaxurl,f,function(l){a.find(".epyt-gallery-list").html(l);a.find(".epyt-current").each(function(){d(this).text(a.data("currpage"))});a.find('.epyt-gallery-thumb[data-videoid="'+a.data("currvid")+'"]').addClass("epyt-current-video");"1"!=a.find(".epyt-pagebutton").first().data("autonext")||h||a.find(".epyt-gallery-thumb").first().trigger("click")}).fail(function(){alert("Sorry, there was an error loading the next page.")}).always(function(){a.find(".epyt-gallery-list").removeClass("epyt-loading"); if("1"!=a.find(".epyt-pagebutton").first().data("autonext")){var l=Math.max(d("body").scrollTop(),d("html").scrollTop()),m=a.find(".epyt-gallery-list").offset().top-parseInt(_EPYT_.gallery_scrolloffset);l>m&&d("html, body").animate({scrollTop:m},500)}})}}).on("touchmove",function(f){b._EPYT_.touchmoved=!0}).on("touchstart",function(){b._EPYT_.touchmoved=!1})}});d(".__youtube_prefs_gdpr__.epyt-is-override").each(function(){d(this).parent(".wp-block-embed__wrapper").addClass("epyt-is-override__wrapper")}); d("button.__youtube_prefs_gdpr__").on("click",function(a){a.preventDefault();d.cookie&&(d.cookie("ytprefs_gdpr_consent","1",{expires:30,path:"/"}),b.top.location.reload())});"eager"===b._EPYT_.maxres_facade?d("img.epyt-facade-poster").on("load.epyt",function(){b._EPADashboard_.resolveFacadeQuality(this,!1)}).on("error",function(){b._EPADashboard_.resolveFacadeQuality(this,!0)}).each(function(){this.complete&&d(this).trigger("load")}):"soft"===b._EPYT_.maxres_facade&&d("img.epyt-facade-poster").on("load.epyt", function(){b._EPADashboard_.maximizeFacadeQuality(this)}).each(function(){this.complete&&d(this).trigger("load")});d(".epyt-facade-play").each(function(){d(this).find("svg").length||d(this).append('')}); d(".epyt-facade-poster[data-facadeoembed]").each(function(){var a=d(this);if(!a.data("facadeoembedcomplete")){a.data("facadeoembedcomplete","1");var c="https://www.youtube.com/"+a.data("facadeoembed");d.get("https://youtube.com/oembed",{url:c,format:"json"},function(e){e="eager"===b._EPYT_.maxres_facade?e.thumbnail_url.replace("hqdefault","maxresdefault"):e.thumbnail_url;a.attr("src",e)},"json").fail(function(){}).always(function(){})}});d(document).on("click",".epyt-facade",function(a){a=d(this); var c=a.attr("data-facadesrc");c=b._EPADashboard_.cleanSrc(c);for(var e=document.createElement("iframe"),g=0;gi#¤wP4LÈs†€$zq@«ð¶>ÑKðgþm¿øº?ál|,ÿ¢—àÏüÛñuù5[Z·„¼W¤iãQÕ|3­XYœqsa,Qœôù™@æ€?Rÿál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòj­>¨"Z;ØÝ*Þ Ú±‰€Ÿ¿'7ÑKðgþm¿øºü¸¿ð_Œt÷·Kÿ ëÖs ŠÝfÓ¥C+žŠ¹_˜ûk Õ‘ÙJ²œ2‘‚¥~±ÿÂØøYÿE/ÁŸø=¶ÿâèÿ…±ð³þŠ_ƒ?ð{mÿÅ×äÕXk+ŰMA­'o!‰. gËg¡ºôú»ÿ cágý¿àöÛÿ‹£þÇÂÏú)~ ÿÁí·ÿ_”÷šF«g§Úêšeí½ÞMµÄ°2G6:ìb0Øö¨´û+ÍFò;->ÒâòæLùpÁ‘ß' 9< ý]ÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯ÊGÓïÓMMMìnVÆI Irba8*$ÙÍU Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºü¡°³»¿º[[Yî®±Cw IsÀŸ`j%G`ÅU˜(Ë:zýcÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Ê+++Ëé;+Iî^8ÚWXc.Ue˜ÐÉ=©,,îõ Ȭ¬-g»¹™¶Å 1—w>G$ý(õ{þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿'Y‘Ô«)Ã) úShõ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºüš¢€?Yál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòjŠýeÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Éª(õ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºüš¢€?Yál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòjŠýeÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Éª(õ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºüš¢€?Yál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòjŠýeÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Éª(õ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºüš¢€?Yál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòjŠýeÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Éª(õ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºüš¢€?Yál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòjŠýeÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Éª(õ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]ð¶>ÑKðgþm¿øºüš¢€?Yál|,ÿ¢—àÏüÛñtÂØøYÿE/ÁŸø=¶ÿâëòjŠýeÿ…±ð³þŠ_ƒ?ð{mÿÅÑÿ cágý¿àöÛÿ‹¯Éª(õ—þÇÂÏú)~ ÿÁí·ÿGü-…ŸôRüÿƒÛoþ.¿&¨ Ö_ø[ ?è¥ø3ÿ¶ßü]mxcÅžñGÚ?áñ.­ý›oÚ?³¯¢¸ò·gníŒvçkc=p}+ò¾Ìÿ‚eÿÍAÿ¸oþÝPÙ”QExÏíµÿ&ÅâïûrÿÒØ+ó6¿L¿m¯ù6/Û—þ–Á_™´èZGü›ö¿ÿaûOý%z6£àh¾McUð䌚kOuÚ#‚î9ÈYJLga(]ÙÊG“ȯêÆq¥ô73Y[ÞÇkyˈäömŒ­¡ô=ŸƒÕ/ú-àfýÎÐÞW l+¹³kÁè ¡n>ø0ßOm©hØz47ÖišßÛd?ÚÉ+(q—cÊ’ÙŒ.Îõñ{N“Høc¦ZËá!á¥OÝùv…æo1(WÌŒÌrP@8ÈÆkÆh §/ïmî­µ:Ϻt×ÀoQ5Ó;¦PùaD¿usžî9'œù_Àí>óJøå¡Øj–“Ú\E$žl2®×P`r8=2?y½ôŸ è~9Ö4=TE4Þ‡Iš ;G„åὉAkVã.ï̙ޅñÔb£Ô|1àM>Ñ/€ïiµ; )-5WžÔÃæ‡ócK‡u( ;’\Ž+À¨ ¦ü9à#þ'·—Ãþ}J“WŽïWk‰Xéæ1*G‚ ®>ú’Û²Ï`x^-W]Ð-ì[F±‡F°’êêû€ÒùÒ[ïi“aUÄ)\¼ñ¢€>Ñü-¦èþ"Õ„þ Ù-¾¥k ê^I3]ÚˆïDR1.q†Þ…SæÛŒ×#á­"ÛGý£|7k¦é±Ziq–E;Ì·p•;gÞÝKwF8¯¢€=‡Á5 |G¯\x¯Â©Š(¤šÒÖ}>äÉrÞhÅÉ K€rq šéµxFñJérx]/a½ñLZdmqwpZÃ!Û²A’FÁbÜpwu¯ž( |Ñ|àývh®-ü5 ¨µÔuGµŠ{™ÍâÁ²a<Ðï/?uç¥CñWÁ¾ðŸ„o5KO bîål–(ï%ž3fÒÅ!|F&l0)÷Yß9$q^EQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE{5‡†uÏxnwÓ¬´Ûß]G¦]ζñ,vÂÜ€òBÂI.èÁ8!½j[Ÿ„66¬4ïÙêl‘Èt{©#–ê(þÔ"yX,jJ;‡Ê1‚rÚñJ(Úõ¨­´ox‡KŠËFuÓ|I‘ äú5“\‹b®é|¬—àçæÈë]†>Aá¥ñ#¶¯]=Õ¶§cmjVK»eXŒmòÎYò@`Ë_8Ñ@ó{ðoÂvúN¯xÚ¶®¯l÷agÓØ[¤¡.P0's%šÇÔìQKIHŠ( ŠP3F(Å¥¢ØLQŠZ( Š1KEa´Râ@ƒ”êLPQKŠ1@XJ)qF( E.(Åa(¥ PŠJSõ£”¸ RÐbŒQš3@(Å£4”QEQJô b–Šv1F)h¢À6Š(¢ÀQEqF(Í/àh1INçÐÒ`ú1F(ü(Í£KÏ¡£@”Râ E(b€Š\PE%Q@Q@Q@ EPWÙŸðL¿ù¨?÷ ÿÛªøÕFE}•ÿËÿšƒÿpßýº ³(¢ŠòŸÚâÚ+ÏÙïÄÖÓ©hÜÚdù{„×ç±¥Y[LËdþÑ5úIûUÉñÖÓÿJá¯Îxfå¾µ½8§™Í´ìaýŠßnvœýhû¶3´çëVOLsMÚj¹Q7ecgd?*ÙAÝOçVæK• 6WPgåRÖ½áÿô=^÷H]FÚGŽæeY¶ÊËXÝ+„׳ø~Ù­|'k} ’#ÄåT¢‰”šGÓV¿²—Á†·Ÿ@½ÜTÿ zãýêä>&þÈ>¸Òd›ÁBâÂñ•Š[†‘_ÛæéVþþÒÖ:¥Ì~ñÜ‘X݃åÛê ½€~Ê}øJúf7Ydƒ£ «)È#ÔV 4»’?'|màM[Áú¤šv·a4)ÀfkPkYÁýÓù×éGí1á #Ä_ïæ»µˆÜÛDdŽM£wÖ¿9&Œ$®ŸÝb+d“W3Œß3‹*-•¹ê§ó ØÛvSùš³EM‘\̬,mû©Oo¦ÛHÀm?8ŒÕÍ1z(²34¬¼1¥Èˆ^',G#y§jÒaˆ”…ƒc»šÝÓ;i5¥ÂŸ¥m«lg)»œšm¢1çQý‚×û§ó«÷_ëOÖ¡¨i¤ÊÿÙÖ¸ÎÒŸLÓ,¦» *ÆêRxÅ>Ñü©7R²3:oøE|:-ĆéÏïZ¹«Ý/NûK,² 819­ui ~Zž(´„Êw°¢È9™ÚM®~áüëGOÐ4Ù@2ÆOü ÕÙmýOa€ŽZi"\Ù,~ÐÊsm&qÿ=[üj ð¾‘ö‚žCàÓF®ÂÂÝä)Ç¥{ ·,JÓåDûIZ¼;,%åµ—Û·øÓ.¼áø×rÚÉúêÕÛéQn·Ú0>µ`éó]b­Ë“Ü ¤ (¹·¹ãZ¿‡´ÛvýÔ,£ÝÍR²Ñ-&œ+FØÿx×Ð6ÿ ïµ0o*5ÿhs[zoÂmÕsu(w€¬Ü¢”eÜð»?é(/m)ÿš©­øWI¶_ôx$Ïýt5ôÅ¿ƒ<;m+8ÇåIsàÏ \¡  7lu¤êA„Ï’F‹üïÑ´ðæœã牿ï³_F^|;ѱ˜ýáT§øp æ ao ©S‹èW,‘à—žÒãX˜ÀÍbÍ¥Ú,„`?Þ5îº÷€¦’q0+Ï5ÿO‘,L„t8ª\¬—tqGM´î7ýõIýŸgýÃÿ}Óº³šÛ™íìj¡9éNÈ.ÊÿÙö_ÝoûèÒgكʜ¼jÎ &*l‚ìlôá÷àfïO’×Iò±£‡õ.H¥¤=(² ²±±µÿžgþú4Ÿaµþáÿ¾X4”ì…v6-:Ñú!ÿ¾Jt‹@3±¿ï£RÙš´|”ùP]˜’iÖ«ü-ùÓ>ÁiÙ[ó«÷š‰‹ »*ÿgÛu¿ïªŸl„ÿßUtÒ¢äÓ² ²‡Ø-¿¸3Nþ϶þáüÍ\Ú3OUéY ™™æÂÜüé¹þùšÐe¦¢e…AÌʉ¦ÚŸá?÷ѧÿeÚu¿ï£ZÇN)Š9Pù™žºU™þÿ¾Lš5™þÿ¾\‰y«± Å¨\ÌÛI³_àoûèÔ#L´?Àß÷Ñ­{ÐAªÑ©&ŽTÌ­‘hÇî7ýôj×ö¨ˆ²¡ÏnMZµ_œVÜq·õú-ûTÿÉñýºÿéT5ùѯó1ú×M/˜Ïâ3‘NÅŽLËòÑp "“Ò­ÛÄóW¢R¸HzW¹Ø ¿ О?s^FÖŠ àw¯a¼_'áÄ@w„V”õ"{xäÞÈ}½Çàí¯ø ¡Ñµ·›VÐ7`G#æKqþÃÃû¦¼6ëýsŸöª™$ÙQzaþÑ´?„õ6•á ç½»½k“Q=sžõñæI9c’zÓrjAÍ+ +J⊠=gš”…+ŒT”G{MŒ¬£5{C³BNÜœÖÁѧ‰D† 늫ÙsJ^œTzøÂŸ¥hiñ_ªx~Aô­’ÐÉ»³…¹½o­CVfÈÃÞ¢+Y=ÍQ)0sRí£m æ@+©Ò!SÈ®zÕ \(º«ÊD8íA-ˆð/Úõ³e¦fáxÍféªfÕMz5…‚ ;8¦ˆlÎÒí£P¹Çr="[«ƒåBÏŸAZVZg"ì¼W_¤Ù }§zŒTNV4§˜š?…§TkvÒº7Ike! õ·ks ߗǽ:kÈ%Cp½ `ê3¦4Ò"’gµˆ4¨Î¸ê½ª“ë–Änê¬yªº•åݱ$1 út5ÌßÍkq.óþ?b£­bæÍQÐÝê–Ó>Ôv…ýϲ/™¼ÀÅÊ¿f^†±®|Íûn—Ý‘z³mw"(ŠB;0¨l´Zk§¹SipíÝR\ñUí5ûIÍ­ã±oá˜}ÜU£š>v²öe<Šc’?²]m*>ã´®ÆhC¬„!nÑ[£”ýOBÓu»BDq’GQXrÀm”Æëæ!è}+9®õ &o´XÊÒÅœ²fªh‰E3“ñ¿îì7<(f€Ÿn+̵;‘°¯µ}9¤x›MÖbò/csÁ \ÏŽþ[j n4Önp+¥U0q>y‚¹»âo êÑŽâ Ÿ½Ž+oªw2z2Ó«iŒ´À€ŠB*R‡4Œ¸  ìÆ iئqÅP±\½mø÷ªÌiÑwbš‘¯Ò¤~sHªqNÂc*j]¦¾´ì.b"‚¢¥ÛFÚ,""€Šb¦§ÛB¯ÍI”‡F¼Ts6*ý´y^•Å¿ÍÒ¥‚+@I5¡vÔ0Äj² @6P½ûÕ+RÝŽi-Å0'·S¼Vå¨>McÛœVÜ_ñî~”ÍêÿññøÕ­4ñTõøøoN¤‰>ôøÎO$Ô;©Ñ0ÝHLÜÒÉ 0k¨²—å8®FÂP¤s[P]ªÍH¬]פ&¼³_bÚ–sšïµ[ÀÑ‘žÕçºÃn½'Þ¨f¦“.Ô¤'9àÖ%ƒá\ó±@ÍËK“šÔ·¸ä×-mp7u­¹"> ³ª¶½Ö¬®¦ªIÎ+‹‡P`ØÍ,Úƒô®$˜Ï]bpZ÷ßø'?OŽÿñ/ÿÛšù^»iAæ¾™ÿ‚rdŸgþ¡ßûsS'¡¤#f}yEVFç˜~Õ?òA|Iÿn¿úU ~tëŸë~‹þÔÿòA¼Gÿn¿úU~ujã7ñ®š_1ŸÄg¤¨À«ùtÒZ 0úÖ¶ÒaÎ)BÂ&Ýó V¢Æ¾µIË(ãŠå›³PöXª¼÷¯SÖ?äŸB?éx¬2LלnìÞ >_ÃøAÿžBµ¤Dö<>è~ýþ´Ûh Ò,ã2“êM[ÒÓœT½Ç‰C î>µJæÔDp5ÐOv#€ƒÇÌ_Þn”àÒ(AÇ•H“Uzi˜‘Ö‹ët„×5Ô³Æñœ+èxÊ-¤pr¥x¯ì}—Å׳1Ì×Öž-Ž(´ydf"g&®;™Ïcä ûE³Ôç·8#Ò±¼D’µtZÜ¢ßK޲ŸÊ±µ¸¼ÈqZ³$p21òiv^ðëk~!´ÓsŸ{0Zß·ÐÖÒd‚Vbç­]´¾»¶;UÎsÊW;! ‰ÖmÏ#œŠqÔeÆf‰‹x Sµ9}§ëP6°„•*ð¬›6±¡m« ;LÃ?ÝQum§Þ)}ÞL§þù5‰<¶³·*?à'šG€~賯÷Z³l,K5•õ¡fŒ¤Ñ{ÕE½·Ý²hÚõŠ´—¬ä®Öˆûô§¯[›u¸SüKSq‘Ã+¨ß Ybï´óSJésGàVgötRÖwnßÝ&®[¥ôhL‰Âú¯‹¡‚\²)†fÈíTçIØß!ëW.,êÑ’èkU»¶sÈ@õ LËÔá+1–TÿxUïø¶÷N˜Eu™!þñíU50€vĸf9F`ҕɱé×±é>'±+$HKަ¼Ç> ŸG¸y­ÉlOQÚ¶ô­R{)ŽC´v®¿MÔ-µ;s À¸a­iUqz‘:w< ¡9éP¼d•êž,ðtkº[ùzן^ÙËæ&R®Ôîr½ ‚§=)¬¦¯I Þ¢xÎ;ÕX.-€ùëa‡î+*Íq%k?úš¤„e̹sB¯,‹óÓ@ª%±¸£ò´m4ÉŠ1N"€(¸¢%ËÓ±D#÷¸©–ÅDÖӭʵ6ŸžvÔºyÆkvH—ef)JÇ&ö›;Uy-nê* VÁÃ;™÷z‹qM¹?5>ߥQe¸>õlEÿÍô¬xOÍZÑôsô oVæâ¬Øœ ¯ª Ü~5=ˆÈ¤À¹º€ç4ÓÁÅ ÖᘧSVã¼ã­PHÞC„Fo «iZ¤¤,nŸHÍ¤Ž»ºÜ:×5ó\äÖÕý¥Ý¾Ræ‰ÇUaƒX²(Y2EV-Z‚¤9Í%¹]”æe dšÒŒ­eÇ*ƒW ¹QŽhd½1º½+FÌ´ë‰×ÍGÒàŒÔ‰I˜Úª0&¾§ÿ‚s.?á;ÿ¸þÜ×˺»†$Šú‹þ ÎÙ><ŸÙÿûsJ[Á¶Ï®¨¢ŠÈØó/Ú—þHGˆÿí×ÿJ¢¯Î­Sþ>›ñ¯Ñ_ÚgàGˆÿíÛÿJ¢¯ÎýB<Îçë]4¾c?ˆ¥nvàûÖ¢\EäãpÍgˆŽÁR5œ‹qžE ,ªNæ£(HÍ hûVSš¶l½6´ ´ý&?÷…{Œ>_@üóåv¨>ÑÿhW©øÛ@¿ôÌUÓ3–ÇŒÜÃêi$»û'êÊŒ&ïsXZ¬›åëS'©qC¯59æ$gФ–ËS ¤%Ø“94´”ø}Äbš=ßög¿CÔ¾Ñ(8qƒÍ{—ÄË{£yĪ0!JùÛáÌ¢ÍQ‰ÅwZÖ°&³TÝ[AÉœ»×’“ÎMAz»À2s#7­9Æ{U³3{àÌI´Ù_€'5ö¼0"é„7q_h’Ëg"Ý۾ɢpÊ}Å{¯…¾:Z7û?Ä)äL‰…–5Èo­e4îiI¥{œ7í7ao¯k2*ï9Jñ&·RzW üQñZx£_kˆø¶ˆmßÞ¸ÂÑö«zœôî‰4k\0|qšÛº_”}*†˜Ë´*úÖÃ@dÚ©5¹†,µ#Ž3ÅzS-º¬y¬­&Ò+Ko=ð C’Þ_å Ø rV©mÚ塚B1.܃Yz„°&~\V°Œ‚ž¸¬NÝ[5ÍsµDûԭcÈØìk.ãÄќڮßÙI¹½OMvÎÊhwO“Îì*Hõ7nmîÉ=ƒW gs%sYŸn¾µoâ©jä´zƒkW°|ÓqíD~+xÚè{ךGâK‚Û\“ìjÒêï É·VúRä!žˆæŽT;8µHæ @ÏjÈÕprñŽ{V?Ù®!ëx íSÛÜN§8qO•ÄŠëc€üZÚ=óCpv·'‘Xª¾i” Eiu²à ܃E‚ç¨Øêž|&):‘\÷ˆ´x®CHŠê‚j…’6äVÔw‰yl™zŠÚŒììaV7W8 »#᪒B¤t®ÃW¶LnÇZÀ¸ˆ ñ]Ç)‘ad«ì?sQ2âSS¿úš ¹Ÿ(ù© T’˜Ó@ M‰ŠLT˜¤Å¦0ŠnÚŽ)¸4 @)!¾§ªæ’!ûüRžÃ‹Ôè´vÚ*õÝæÅÆk3M;V’ýòk"j º¹2Ys±ÍYìj´½M…ÀæÅõ§@™ª6,Ã÷«U ?JÌ„a…h¯0¥`j?ëóïW,åÍVÔ÷™«V\ô¤ÆNê:×Qð¯D‡^ñ}µ•‡–e=ñ\ɬyüGm#’“)ÏlÖvgBh±sm5“wbžLúš?F¹V<µY÷ZDnNV±õÆàíA]„’FFr*”ó ô¦ˆhóM[Ã$Qpkž{[í>BFæµz½ôð6CŠçõ³ Ê>µhÍÄäí5ØU‚]Á·ß¹mq£Ý ÙrŠÇ±¬mU,‰#`cí\Ýâ„ba>”ír=ìѨýÌñ0úÔ[F[ç¸Ûô¯?‚úî.VR1êkcN×QˆIÏãRâIÙÙÚédmšä·¾jïö5£Ö’?æbKk¥Ý߀«vÍ5§1Ìà}j,2äúMÊî  :ü —<ç5ÑÅâG!›qŒÖ~¬ðÜ.øpsL ör•Læµ4{¢—Ÿ”õ¬ŸaÁ5vÞ`„HOS¨¿Û,y‰s šÔ·2Û®xª}¯BæW8§WcEýé§IÄ"Ÿ(ùé³ÿ«­H(¿Þ4€Rž´¢šB”b”ŠLP@Ò8¤Å<ô¦Ñ`¸-5xžž½iÄ”¦´*SZÍð´—š‚Õð´ù$ˆM¿©ÌÝi÷U î4aRÍWí ÊôªðšÔµ*Q© DTÔéŸ,Š•öšDšÊ¼„³SàWéVn° VF"†+’ç4ªÅH àŽ†š ÐH©=7Á¿|kg¶“o«:[‚8ù±õ¯L³ÕõÍYÛíZ­Ì§Óy¾xÑ&^Âàô"½×ÀÚœ3º´Š3cüE¦»ÚHÓ3HØã'5óÿ¢_mjúwWžlÜñÒ¾gø–ùÖ@ãu6‡—I Í9~í1fÍÑ•u©å<Ô ÒȘZªVTmŠCDf¾Âÿ‚mÌýÿpïýº¯ñšû þ ¸0<{ÿpïýº©–Ã[Ÿ`QE‘gš~ÔòBüGô¶ÿÒ˜«óŸUlKzýý¨øøâ?¥·þ”Å_œÚª’ù÷5ÑKá2žá îSŸJ¬ƒæ9<Õˆª¸æb{UØ‹—lFdÏQN™v½^76i×_{ŠLL’À¾ƒßν[âa#ÂÖ£ýü«Êô€´ ÿ|:õ/Ї·ÇPƒùUÁhC<ñì„ÚHW½kÏÒ"×E1Ÿ›èzmòIáÇ!kŒ´ý8’8ÝXAÞv7–‘¦˜!(ÈÇ5—]Ÿˆ i¥àcq®GÊ=kYÆÌPw£Š¿`Bã&«E>LǶ¦Åh=ësÃm™žõÊA!5Ñø]²ÊÚ§DÑÝ‚vVV» XÛ'øk]Wð®kÅNWpÝ5«z­Ét 7h‡þZ×âÃÿ‰+®ð¨'DõÒ¹/©þÔ”Ô7¡qÑ™‘V´¨{¥ã5UAé]…­KJ­ŽõF²v='ÂPùVéÇU_ß1f@x¯¦ †Àjä|[6%5œØA´ À½žKW«5ç“¢†i06×h“Ží]Ä N{8ÔzÖ»:âô35ï@¥Ò93Ï\×?ý±#8hîHöÍqó<’ÈIbKZèì<#©ÝY-Ô(ÄšßÙ«íÔiºõʯ#0ó]MŽ«ç ÃdšòËW¼³¹òn£eÁÅu-ÁK˜ö’A¬§ Ó•ìw¦i<­Ù5‘}¨2“óbº»];ÍÒ|öî+ñI‡ÇZÆ*ìÚ{zƹ.Q…r—Z¬îùi[ZMAÜ–’+"k‹…ˆ?Þ8­ÔYLÖ[õæ|Ô«lÜ4jjô¾º+r²d0Î+›½Ó®-$*ù­9Hç5'ŽÚár )ö¬¹ÐDø›o#ƒ·q«o t݌Դ ‰§ÞËk pìG¥vZV¡gYÁë\: ’¤SážH%±²h£µ½µA1¾GÖ¨C$¨ûsòUm.üHÁ]³[Ke×ú§ Þ•6•Àùw¡§Úɹinì® ùJš© ¸qƒRÀìô¦Í·áU®ÁÜiú,Šmúö¦^1Üq]Xw£9kîeKÃÓ.>å>^^›q÷+¯Cœ¢ßzœ¢‡58 hÃXRSȤÀô¡0ô¤§•¦b :ÔrŸ5 "™?‰l8nK `Sg~)‘·ÛákV®U¸›œS#|Õi¤ËRÆÄÐ 18êÜr:Ö:¹ Ö´-ŽáÖ¨l¾·½H³¹ªv÷¦xë@^L'5J9ùÍ™23Mx &h LÀsJeëY®ç¦i¯+Ö•†m[\ùnEvžñ;Z¨Gn¥yˆ€ëGÛ%"©;ÑïÏâ¸$² MÎ=kÇüct.õ6e9æ±"¿º +cëLidy·14ÛV%ZñÿBMÛ&8Í}­@ÀG³ ¯ñ®žñ^3íàšÊ3ÔÖ¢Ðã×C·¾€ÆSœU)|mH–$ù”äWU£…Œ÷®ìÂXÅlªœü‡Ÿ<ºÂ@!Ú£V£aytÇΟjõ–°n U&Ò£s÷Ø^ÌòkoÈ;MjE¤Œ†^ÕèI¤F?„TWÖ¤GQÏpä<ªöÃË‘°+hØOŠîu›pŒÜW#r„\LBZ§ àŠØÓ¯ˆp}kžJ¹jc8Q÷ªY'Sö鼯ިuõ¬«æF>f8¥¶–HÀYWÒ¬]ǰf1ózT0-ø~ñì-Z7ÇœÍrúqx¦Ë0kRâåy­ðïs ëad`\â™pÀ'&¢÷UïåÚ¦º®sØ”àœŠpà,Ö´cù‡i“% bŒSöÒ`æ©™ŒÅ&*LQ@‘UîÍV˜UÆ©–ÆãU°j;£¸b¡i¶3Q½À.kq¦ÑØnªî|£´õ®šÉc{\ñœW9¬FEÁ+@Zsº´l§ã­bJ²g S¢šTìj‡czy‰èjÒ§o4Ž@ Ö¬18 ,6ÏqZh|Ž=*¼Q²88«2HXmÅ1J6óMdlô«æ3¼ñOŽ ýEei»y«÷m ©±½(°4Ø¥Ž>íMylQUÀûÔýí•”Ž¢µï‘ZÀse¥4ÅíZOÍMhH®f¼GoJϹR¥t-Èk*ò?š‚“)ÅÒ¤cÅ74ìdQb† }ÿÜmßðžÿÜ;ÿn«ä+5öü}6{ÿgíÍLöw>¾¢Š+CÍ¿i»oµüñ ¾3¿ìߥÌGúWÂ:…dXŒ£·lWßßð>k[º~ãÿGÇ_&]¬RZ0À®š? ÍYÚG‘&›(*»§¾±•PmŒçÚ›Dó2u§OjŽ1´VÖ2æ1|!¢µÌ{¥LLW]oá(N”?*“ÃF;eÚ@×_ole€¦KÔÀÁÐy„C8ô®nm(u"ëé^¡­h£Æ+Œñ¥n5/1HÆh3o<=ÀÁåX:‚D +²»Ö-ZÄÃ5Äjš¬rLÊR¸Ò8jÌÉtp1ÍA‘žX’ t~[É»Šp1ªŽ”™kAþÓ’;vGäEH4øZä¶Ê/<µÂ)ðߢ» ,šlJ8QPÇj‘0àpjgÔálüªËn¢¤¥’£wÖ´l¢F VÛ<·o¨mÇ4Û¬t-,G¯5ÎjqªÈÇjÔš§îúÖ£¹HÊ÷`m u&¶4 Q ©<×=$û¹­- —˜5KѹÙÎÿè­Žâ¸=Xó>µÙÌÄZdúW't¾dr7ûUÍ-Í ´Á3}ŸZ¶™ëè(rAÈó=­ÑµÖ­ˆàíêeí¢enª+ ­NÊKC±†TiîUÈÑAÜ;×e|L –ë[–÷ÿ'&‘¿*±±!T’GJŸF½³¶6G\úæçÔUKnûiË/Je¨)6jÞ ¡bªÆlÐÓdK”5|†Llé\¤ïm:òv×_¤È—sÍCAp„$’gn¥P¾f[®Åm^[˜&(àÖ.­!Žì.>õ:nÄÍ\žÉ·‡R\OÓZ¤Ô“Šë‹9^æ@‰8õ®ƒM%£æ²?Þwë]ÏÃ?xƒÆºÂéz ‰•€Ì³9ÛCÕ›µh¤'Ì¿/"˜ë·5îölø€>ìºC_´7ÿ^eñÁúçƒ5vÒõÛC »w#¯1È=U»Õs£>F·9bã4Ó'wHÒ/5{£mf™p3ÉâªëšUö“⨒\m*r:ã®)s ±J}ªÑ'9Åm¿†5u,#89cÇéR'ƒu‰A*"lŽOéIÉœ5Û²½V31lŽÕ×øw§Šnä·Ó‘ÆpwœzçùT^&ð^¥áme4ÝTFex–PPñ´ûšÊæ–)iw‡ÈÁ©=·]Gÿ‡Ú׌õtÓ4;mÎOÍ+ñ}Mzå·ì»ãýGF_ûhÿüM0³>{:zã8ÍDÖ OݯRñ—Ã?xSÄöÚ« aî˜-½ÂdÃ'ѱúWl¿³7ޤ·I’ëHÚêffÏ?ð.=Oža³XØdVÅ´(d õO|ñ¦‰¦Üêréí´M+ùr18Q“Ú¹-Àºæ¯¥¦¡döÆ&ᜂ23éNâ³9׊3ÐSVÝšêfð¹ įn§ÙÉþ•ÌÏkyªúkBÆppèG¯Ò‹ŠÄm {³Š–Þ€'­kàývï q ú¿ÿZ­ê~ñ•£>§, 4Qó Œ’Tzž:S¸Xæ.íÖAòU—Oà’zw€~x·Æ–¦çFûEEvóf+€zv5×Çû6|A#-&¿YÛÿ‰¡É Ìðx,‚L ¸ÑÆ{Wk¬|;ñâ–ðæ©l¶×`nG91ʹr¶9Ô_|¬x þÒÏXšÒI.áó£ò¶$s9È¥t =Î0Y#5HtÕ#¨®¿Â~×|MM¦r&”‡b>Pp{UK? ëwp¬¶ßf‘J†?9ý)¦„âÎjM#÷dî‰}¤I’T×{.…ª[+ Ÿ%1Ø1$þ•KÊ·DÀoh-Qçré³ÅI›6+¯¸´@ý"À€tX|ç1•)ô¯­àž¶­mÿ ÆïâþÏý>Ó_:,h; ú{öÂeúqÿÛŠ™¯t¸JìúvŠ(®scÍië£gð7Ä7#ª}›õ¹ˆZøŽ?¹R¤×Ú_µ˜Ïìýâaÿ^¿úW |c`zê¡ðœõV§Zšîy§ {,k–ÀéJ¡óžkc+Bx“ xŠOï傱ìiÁÒØê¾çøçYºÆ³˜‰ÝÏ­flj¡«‡ž´CŸ_™£1‡8¬—Ôf3,k<ï {RaCe¤iIªIž´ÇÕ%ÇSYâ6Ï4ÉÔö©¹V/FR>ù^MFLó)5P+cšãËEÂÈÔŠñØ}ãR¤ÎyÝPÁˆÇ°©@àR¸XÕ±Üèš¾Ч§Ý ÐÇÊ)’Æ; dÞ¯Ï[@|•‘|?y@Š¢&#ŠÜÑFÀzÉWظ­-PÒâ¦[Žªé”Ø zW5–·”wÝ] ¾Ê•‘§Åºâhý¹YÑ“»ŒM†é¶s4VqdôJáï`ë@žk¬†e’ØmçhÅEDtÒfÍÓ4ˆs[PÞÆk•±s¼{VÄW>µŠ:ÙÐÁÝesÉÃx«ÂR @ܸgLñ^‹¢…DVÛ–5¥¨Çjm‹Ý2 ÇCMnÐðMCMrâ!ö¬ñᛟ;zÄwW®]iö2\}¡dM€Ð§N‘¶$¨qTÑ.'áíê4f˜ŒzÜ[icL©·%ª*ŠÒ³îeTBòÔ²mc:y 1¬Ë©†O5nåמk&è‚M ž~O5Uå'½6ä‘Pi¢Y,¬JǹMÒÕâ#Y{ÃLEmŒ?¼ãµK ‰õibùËYÆ_*ûÛ<Õ™²´èw`ŽA­vŠUÉâ‰íRd%V€2K·¡¨bGµ.mU«šÖ¡ëæ\c½O¡jL¯äÈzUhG(óŽhŽá-Œý9pjkåÊÓlF Iy÷k®²ÜÉ ‡Î;×Öß±x1xÅrÇ…N…[|–Ä?ZúÛö3ø Å¡A$J¸©ýÓR–ˆ¨ìϼñ'‰çÕ¥»—Ä‹Iç—ɸ~»½3ŠÞøÕñ5ü{¢è¶Simm>š¤<í6ó1Æ Æ=k‰¸w’Eå¸5—iRw1[ÿþkÞÒ´½KRšÑâÕòV&b둜0 `óIjd¯Ô¿ðŸN^Ö|Mv›b†#±¨…ñ23ªx[Nñ¾ #¶úõê~$Ó47áá­SZM+í1+¼œnsÔŽk†±µÑ¤ð½Þe¬ Z2Žˆ!#+ÓßÙiuðâIn¼NÞtŽê¶ä€X‘’qÞ¯xïWÔí|M=œZÔ6ñƸD•‚Œ¨=¬ï†gËñTиÃÇ #g×p©¼y¼øƒ%¬}g1F?ZE«ðvÞßAð6¡âK¬F'˜–8'ŒÏ¾ÑøÖÇí ¢C«ü?ð¿Žìã Hò.¦à?“SkV>“Ápx{RדDµœ'ÌC8LsÛ"½FÐü=®üÖ¼!¡x…5ãk Ï €¥£a†uýi=Çc'ö3 ÿÖ¸mÝß*ƒ ãŠã¤ð÷Ç«_Év¶~'sö’ß»¸Ý|ݹÆ+ö}ðïï^çÄ> ÔìmÐ47,ß6;º+ßÿ¶â³ºƒK•Äþ\‘-ŽÖ<àŒƒhȾ;üCÕüEiaáýcÃZ¥¦J%’If%Ù¶ã# 1ëÁ«¿²Ö««ßüC }ªÞÝD‘’#–weéèMuŸµÌ6òø;úµÅŒ1_Í.Ó \8R€í'©õ®+öV"‰@dñ1ô§Ð´Î'ãþ±­ÇñOÄÖIªÞ¥²Ý2DìiÆF3ކ» é÷2ü¾{$•®d³q‹ïŒb¸ÿ–b‹$”õk¶þ•èþ½¸Ñþ<ÖLâÞÕ¤F#8%Wµ8ìEÏðf•â»oÅ6±¥êmh¹Ü²88ëïŠéukDŸâ%¢Fñ–6¯”eyqÒ—Á>5ñOˆÕëÿ³Ý´º€õg™ÚB,Ÿ;˜‘œòŒ’oñ¸Øú>3ö{ìåz–ÞÕbm¼Ù9 zªøk;|#ñYG+Ü=‰HV,ï-´ãïšóχþø¸¾!³ôïÅ H¤¼òQÈäî=+Ò~jSiÿ 5ÍBЪÜZÛ4Ñ–‚’8¯2´?ÄdÊý§Klw{ ‘r¥+Ùñ®6“ÆÞÝ|ÜI¸zƒ$B¹?ÚÛÁþ'ñˆ4Iô ÷RŽ 9f·‹pC¿ qß“^iàêÞ'ø»o¬k·¦êægLœaP\*áQé^ÅûJ|Mñ/€õÍ"ßÃóÚÆ—6’K(š&æVu¦MÿgO k:]•ÌZÎ{`ÿÙò ²|ų޸ßéRÜx?U’%ÉKvEÀÉÝÎ1^ŸðÇž%ñžws¯]A*­¡tH¡ÜFxöÍpÔÓÁzÙ‰¶ÊªÒ!ô#v)ómʼníä-q§ê ÓH\ mô‘ÆáÆ<úÕÝWâ‹o[ý#P£ÈAý+ÈI>÷brI'ëVˆcîµ7ßÖ¡:›ã­AwnÛêb­d[þÒ“Ô×ÕßðO‹–¸ÿ„ãwðýƒÿnkäO!«ëOø'rÿ„ë=ÿ³ÿö榧ÂT¹õ­Q\ÆÇ˜~ÕC?|Hý:ÿéT5ð—–¾•÷oíSÿ$Äöëÿ¥P×Âa«ª‡ÂsÕz‡–¾”ÿ-6ãÜÓƒq[\p})ëúS©ó@\”¸éYÚÔ* aNàZN#JEëR(ùÒ˜ƒš:…Í8~èUÓÐU=4'š´M2òp‡šÇ¼ Èy­fCY—eúÑq'«Újˆs#Thªƒš…¥.å­Ke£µðÓùÒ<§ Z«§©]Veï5jøBÁâÒgEEcþÓŒÕÍ-Έ#˜ñdRCteæ¥ð]ÿÚ–Hdæ¶¼ul¦Õ˜k…ðÕÁ³Ö€' Ʀz£ZnÌôhT‰xéVÒM¬=A ê]¥†kޤît6úì6†IŸ• á|Gã ‹ë†Gò‡E©x¥ï¼’mÔ¾:Šóã©^AtK¯Ì*EkWµ¶‡f5ËÒ…JµAý£vŽ®k µ T›"ºlD~•ÏAsºåÇ¡­MRm±7=«—µ˜ý¥ÎzšÕÉ}‹‡¶f#œV<–åçf>µ¯¥ k"Täâ  ‘È I Vø<бºÉ:H½ U»"ÀéRéór9ùE '½µ{{Ï”¸dtÒ°µvNk¥šÖ=OGIàÇù½Ås“C•éŒ#¹2bعïRÝž)¶‘ã­+²+C™½L¦yØ>µêþ'ë?õG¸±Eº³¸\Ú;mY1Ðçë^Q6DõvÖb3@Ñõ ¿´„íæŸ‡kIÛžE'>¹Ù^cñGâf±ã¯[jŒ) •¡ l¢zóÜŸ\WŸÁs…¢iÔ­ Û¹±ñÆ^+ºµ’{u·Kh¼µE}ÃëÐW?¡k³h“I,qy¡Àã~ÞŸ…Sºlš¥qÒ”ŠEËMxÚxŠãVŠÐ6w¿É®=ªçü$>w‰ÿ·$³RB€"߯Bm8üzW6TÓ‘¶œT”uÞ(ñLjîâžX¼•Š/-c¸u<ôÓüø§yðÚòå¡Ó–þ ¥+$fmœÏc^sjü~Ûã§Za{§ðÃã¥à_êZ]ží6ög’K“åŽp¾•êÉûRib_1~Z‰IÉo93Ÿ\ìÍ|³”-–5$WG#æ¢Â=Ãâ¿ÅWâV¯nÓÀ¶66ÿêmU·{±=ÏáZ?üA/„üE°-Vç` ¡m¹ÈõÁ¯ Ð_Ì[< îl/ŠEŽ”Ò&M£¨ñ­Êø‹ÄºŽ¶ÐùFöS!9Ù“Ó=êéñ3'ƒ&ðïÙ@Y!y›ú`zb¹ µ7Û÷ñYÒj`±Ìµj$s¾¸‹Ãúôz¬p Ý—am¹Ê‘×ñ¨u]jòmV=FÛýXÔ¨ÝzŠÉ“PŒ·2΢žúÜ&Lƒó©qlè?á*vÛö2Ör¿ß‘U©¼{¨&“6¦ÙÛié0+#CÁ õèyíÞ¯lŒx?:¥&¹l"J,^¬ö/ üR¹ðï„u?¦›ñ_[ ™J”àŒãד]Þ*¹ù«ãÄ)‚5w¬´„íZ›™èž ñ2èZÊjB#9EÀPØç çô®¯ãOÄÖø‘©é÷çJþÎû«[ìù›òÙÏAŠñ}.òY=kÅ;†4(Üw=‡áoÆOøA4¹m#ÑÚñä„ÂI›n2Äç¡õ¬ýâÇöE­ÄØÞzL»Né@÷¯1‹27ÉCÍ>Pæ;=oÇv·¯º/ ØÄ=ð¥dAr/f3 xà~â+0ÁÍmiG÷@JiCvƒyª¬Jµrs!ª¯Ö˜¬4Šú³þ óÿ3Çý¸íÍ| M}]ÿ÷9ÿ„ãþáÿûsQ?„¨/xú¾Š(¬ Ï/ýªÎ>xÿׯþ•C_n¯»¿jî>x“þÝô®ø7uuPØç­¹"žiù¨§­ŒITÔˆÜÔ y©ó@Aâ¨k'÷®ÅQÖOî)1Çs™~¦™N~§ëIX³d4ŠB)ôR*?â©›¥DGÌ(ØÿWøScïà¢1Í>¢4ìîªÆj­ŸœTù¦"BISYÓ1ó*þï–©H ÉJã±’ãh©´{.oR4RÇ5wJÒ.oçT†2A=q^¥á/ ZèvÆòô.üdYMØhm­¯Ùt…·aƒ·šÅ•í"êšÙ»½ûeÜŽœD‰l_ûP`eI®y>§Dø²m4“×ד^Šý]xÚs^­ãy–;o)O&¼ÏX„¨ÞJw4;O _­Õ˜$出ÊÞ¼ÇÂ:‰¶»òݰ¤×¤ÛH¯ÈÒ”´6ƒ¹vÎÒ'f(lúÕ-cÀºn¥“oIˆÏ¶ô+[‹ûÈí­c/+œŽ•ížðuž™f³^"KuŒ’z \ö7K¹ò³ðûS³C"ÚÌÈ$)¬éü)s¢NÃ`c™H¯²µé­!„§‘\ò0:WüTžÖëK6vp( á²£UF·qºqZža øF(¢7§Ž¸­rÖȾUº*¨ãŠê<)àmÄVb{›…±° #ò[è+Bëá‚ZÄÆÏZ[‰!Yp 9;Å[CήHª¬9­›ý+RŠôÚIÀþÍgÞXÞZô«Y¢ôÜ„f³±ƒL¡)ÃTç—ny©®dÀÍd^OךÒ(Í”µkŒÄÃ5…m”µ¨ÈOMT–ZÕ#&uÞœîhXä·J×– ’³*ýk•ÒdheIS¨<×n‘Þ[$Ñú|Â¥’s7JÎäcН䔨±{n‹pX>Sû9Y2sHƒÂ·ßf—d‡äa‚=jƳ`™áû„æ³l­—Éù«ZÂïåû=ÇÝ÷£mDÕÌhÆÒj®k~òÒÒ±®!*ÇuvBWG$•™q_v)#BJ»1QQ‚µB¸‹‘JÌH¦–\õ¦»½hC#““Uî4¿5Eq(ÛQ"Î1U$|5$—ª4ÛŸ­IFåܹ¦_ð &šß ¢üði 1å$±§B uúÐãš–Õx¿Zc:]"AÓ´ÛUaÔ85Œƒm¹4Ëu-7^Ô½KwZ…ãËR*°¸¾ô†:óPGj ²Ï)oõ†‹‡“Ëûæ€zTwmˆÍ+²•Œ[Æbç,j¹u5-ÁËži˜ã­fŠÄ8ÅFýjÃ-0&æÍ]?—5©ÈàU}6-ƒŠ™› šhÎ[—ôμÒê8Q‚èÆiòÎeÉx­í/ˆÒ¹ôë]›þ§ð Ek†ýãUi55ÁýãUg4„澯ÿ‚zÿÌñÿpÿý¹¯“‰¯¬?àžg?ðœÿÜ?ÿnj'ð• Ϭh¢ŠÀØòßÚ¿þH‰?íÓÿJᯃkï/ÚÃþH‰íÓÿJᯂ³]469ën<Q“MÍ­ÌITÔˆÕšzži ƒU=W˜MN5[R?¹?JM”–§6çæ4R1ùÏÖ€kAÔ†ŒÒ#t¦óS‰¦½@¿†•8Å7?-*š½ ÛjEmÀI¨a?(â´´ø¡',ÔÉÚÂæäk«ð÷'ºa-Ó†´›¦\^àÓ¾j,Þåèf[¬ÏÙâS¸õ5¦-"Ól¼Ù˜Íh\¾¥DC:@®SY¿–ÿp\…©’º±¤ŽoÄ:ººbÇå°®™."eã5{YFLåqXHå_õ¬Ò±¦æ{BÑÝ"ŒŒäW£è;¬âé\x¶f9k¦ÑAKp1Þ‰jmOCÜ< ,>”·1ª5ÜÃ;ÏðJè—\½•NâÄŸzåü¥ÜÍ¡A.ÇÀ•ÖÛi6cÚw…ÈÉ"³äfüñ8¿ëwVvÇËîf` ïšçæÓï^ÐGs{‰1»"ºí_J†ÿ\²¹K»e‚Ô³JòHW¦«éwÖz޲n#¿†TGÈ à}iªm‘Rk¹ÕZÚχklb$@m½ëö aSŽ=ëjï_´DeEcÐÇã\·‰¼Akn…d»µ GÊ€“G,Šö±µ‰´McÕžØÅ›nw2óгâ}·v’Asm ˆÀà•ä}+”ðUè¼Ög»s´•r{WaªO°¯Ýã­Ñ4և͞/OìíJ{`2 ü§=«˜Ërx¯§ìaÑgyc¹Ñm.‰à´‘†?yoÆ¿ izli«höÂÙ\þö%è>•¬YÏ8ØñÛù©±uÔÙÛ2éR[Œ‘Z6s3BÈ•Zì|;tÐ&:©í\hVJ×SáÖ W¨b±Ðw¾}êÝ¸æ¡ 7Ÿ­[zV¬ã5-lVžšLr8ª#)W¡;\T°:k;–à­G–#û×;bÀA«Æpß)4€s'–|ÛgÚ}*ÒÈ·ÐywæõªñÀ²DJ¾ Uó$…ðÇŠ´®´3õãM‘3±‹-fÜFÈ šè­n’A·5«mG‘ŒÓ†¯Q=68}Fɱ¦‰Ëp+§½· óUŒ ·¥nˆæ9ñnät©`»Ö±ŒtÛBEÏJbæ**0P¤’6d9Íi,B”B=*„s/Üx¥·\KÒº-#<íM­T?R°îKfØZžeß@‹°U¨~eÅ!·0I¥²%dZÕ¹·IÅQH¶¿ã@R90ŠŠÖM¤Ô»3ªê6“T"v›¯5Nr9¨Žy¤ šy—5çp§ùtÒ†¤ .0j&æ´{Tr@ËÈ\ÐQ´•"´4¸SqT¶Ú|×sª¬düVåՇح1è(ƒpÁîGðõ«hA޳"}×l}kFJÉ7S^25vÖ=ݨ»‹mQ,¨:ŠÚ´ÿ±GÞµmÅ¿áMNSóš…Í>Cóš…诬ÿàžó<ÿÜ?ÿnkäªúÓþ ßÿ3×ýÃÿöæ¢oÝ*ŸZQEÎly_íiÿ&ûâoûtÿÒ¸kà0x¯¾ÿkoù7ÏÛ§þ•Ã_]v1©¹04¹ïQNÍlfH >¢š”TýÑ©Aª÷Ç÷gé@-Ì'ê~´”Hß1úÓwVLÐvh&›ºÔ€SÒš¿z‚x¤O½@±â‘O4Ò…4rÞM¤ Tí>*‚Xb‹¦*¹ F¤W?‹?ÛRA‚s\ÊÜy«ö»çAm¨¤De~Q]‡„|C6õ“í^oq¸BqÀ­¯‡¾ñˆõ4KeKr~g#ŠSбQn端ˆ`Ô&X¡‡Ì“ØWO§xbK¸Öêõ /P tþ øw¦xzÅ쬗 e™‡z_êÑÄÍp1\3’= tï©Îê’Ak··ààW3{3¾FM[Ô®„“ª@†zËse×ñ–ÍXðºbi#=jKõñSxQ7ßÈݱBC7´ÈöÝýx®¡m¸Éè+‘»¼[ ÷·5VO*ϵ\b‹1ÜîÅ´*ß8w«L°€01޵çWÞ.Ë ÏÖ¦Å?èa~@£‘…ÑÜÊÉ>H;…qZ¿úaqÀ&°ƬîûŸ€}jÓR”Œ UVU5˜ã­4I“Í\ŽEÙƒMÚ¤ñÞ¨Í>ÊHozÑp/ˆ7;Õˆl$aòŒÔ6s†a]ƒÇµrFi¡k¢^¸á8©cðüÙýãbº…¹E‰P¹¾EÎX~uB2ÿ±?‹4øôèPå×8¢ëU‰AùÀük:MnNeŠQfì‡Êª=ëŸñ^ ±Dá31T¯´¢Š+cÊkù7¿ÿÛ§þ•Ã_Ÿà×èíqÿ&õâûtÿÒ¸kó÷utRØÊ¦ä€ÒƒQ†§fµ3± 4»ª<Òæ€dÁªãû£ô§)梽?»?JbF$Ÿxýi´²}ãõ¦æ²f‚ÑIš3H¡~õ}ê˜ô¦çþÕð(H[æ—Î â«™6šŠâlŠlcç­}>9Õ"Ï@AáÝÿZ»H,bg,q+èÿ„Ÿ Å–ÛPn”€pGJ™MDÒœÎ_áÏÃc¨4wÚÉ ÁòÍ}'à#IµÓŠék +ò0kãL·´‹b/Œ ι”Z!ònZ0z€kŽ­W#Ð¥B1%ñOˆˆy —RzW˜ëš´ÒHI~õ·¬²4…üÌç©®n鬥c°Vþõ`Ííb¸¸gÚ[©© |½B-Ll ¯cSÃÖ«HL†ù‡9§ø~ò+)œ±Ô:‚nCƒÍa܉–ÉIͯßy¶;¢ëí^mì¦FV'5Ú\Î’Xª9Íq÷ð¢]^•i¹E4ì˜,qWMäÉoåî8¬? òšd·Ì\UÌX»v1“Y–z̶2É9«­.øÎkX•¦9è1µý¦nOz¥u;‰CŒÒŤB˜@2h1"£°ÜI$Õ¨md’Ž3ó2KEløbs©¬'€x§{wG“\ÀðÜÉŒb I\W]ñSGM3RW‰N×<šå-Ѳ;ÓÜÅ«2§ÊH©m‰^¦Ÿ Gn $±·ðö©cT(ÛÅ_ÒnÈR ½6ž¢‹hØK‘JÀuSÛ ÆCgµ"£Ã|µBÖædqV¾ÚeâAŠ¥rÑNrUÎ SœnëW'$ЬâºÖÇ3(<\æ¬B¸>3@l bÅ p*-üÓd”ÐãP ¡N+2öRònõ¦ùrÉéM‘ñ@Ñ‹˜I˜!ù« \Sd¤Qq[å¨$?5;8椚Màw¨ålT,üu  .0ª;ȓԮã֢ߚc±±§—Ûš³.£5¸ÈÇj«§Êb‹¯Ÿ?JÁ7‰/åTUZ¥&¡yqϘÃéU$ÕÏU«$Ñp²+ÎóíË;®I=ÍhßÙÅfÔ¶XQE7oN?=k!â±ì>ýk%hŒäL¦œ F´ñÒ¬‘àüâµ!?¸ü+)yaZ*q+¹äÔfœç“L&“ƒ5õ¯ü·þg¯û‡ÿíÍ|O¥}mÿìÿ™ëþáÿûsQ?„qZŸ[QE©åµ×³Ï‰ÿíÓÿJá¯Ï°r+ôö½ÿ“wñGýºé\5ùì ­éle=Ëœ WÓƒÖäç4¹¨C7Qp'šŠìþìÒ+sMºÿVhcÌ~sMÍçyÅ ÍK(vii´¢¤SGÞ¥-P´ 5\ÏËPJئ Ž:Ô2¾ê HdÎIãšéþx/SñUú¤Pº[7HGª> Ðå×5Ø­W;27ý+ë/évz&›¬(«€3YÔ¨¢éPs~Dÿ¾i^Óâ@¾oœõ5èªC;V"\£ Š{^ì^Z¹oVw(ò«!5–;[a®Vi¿$×W¨ÄÊA5Ëê³Fáe#DrZŒŒ3É®SXÞÄœ‘Jë5Œõƒ¨Ä‡5#fE–µs¬rI•^™®†×T‰ÔFH®/T‹Ë›+RéÓ1 g¥Z%„²¬™ Öeò’¤ ŽÞcÜÓå”Íj‰f5óº&Òx¬K¼¾I­Í_çQŠÃ¸8R*‘”•ÊYÚØíN/ÖéÔ¦gaTîȪr¨ÕˆÌj¬Íûê°Ç*4dœP9,*  Dð¶º/þïSW÷¬Ejh×_f¹Bqó6(e#¬ñ†“mâ 4Æ6ùá¯8Ô<w¦¨wù—<â»É.ÂȬ„‚y55Ôë{n!“޵š•‡(ÝU< àSeNz×Sâ==aB@®XpÄVÉ\ÅèU <Ê»mQ¹Ik€Y€9©_Œp+xÓ0”Æ£méJœÕga¸Ò­9¹svEV›‚qNG¦ÉÉÍH折¨¦°æ€ "€»Ž*B)SŠ•"ùÀ¨dˆNN% *¬÷8 cJÚ£+Í -Fe cZ€1œJ§Š‘ÏŽyª¬=ê̸5 ²Žô˜6Üö¦”9èh,t32*ì2ù£žµŸ±½ [ÓÔù˜#µ‹r£iª‚_/#µ^¼²¥nhšá¤àô¨h4‚¡²Ð´QEH¬G5±Ȭ‹¢µ¢m V¨ÎE˜íÝ’ÆÑõ«ö3&Îj½üŠç¨’´\¸­,~æ³`ÿX+EÎ"¡I¾ñæ˜zÒ±ù0žj@Zúãþ Õÿ3×ýÃÿöæ¾EÜ+ëŸø'AÏü'÷ÿÛš™ì8î}qEV&§“~×ßònÞ(ÿ·Oý+†¿=A¯ÐÛU‡öpñTŽp£ìyÿÀÈ+ó¤jv¿ßµ9$ˆ’mšÓ¬ïí;?ùîá@Õ-ÿ^?ïšÓÊÍ,ÒÖoö­§ü÷÷É¥­§ü÷÷Í.t¬ÓO¼(¹Ï–zVjêÖ€çÏ÷Í$úµ›¦<Ñù|è9YÉù»~tÕõ^K»bÙúR}²ØéS̃•–調m·þýúßûÆ•ÐY’Ü>Úª\sQÝL²¡È¨DŠ&—1|¥ ÙéNŠŽ9à“NûD´î4Uø)n¶Åï[ï¿B}ÿ®½ªÏVUÆH¯ðŠü=§é1G=ç• ê“[ñ|Dðâ´Kcý†ÿ å«fwQ”b·=Â-Wr˜S.µ3·ïμ’/Š>UêÀü)døŸáfò?÷Ã…eÉ#_iç¢\ß“Ÿœ~u‘y|NFàâÛâG…›þbgþøoðªóxÿ­ÿ1#ÿ|7øT8K°{Xw:û‚NAeOsêkïÇqò_çê‡ü+*ènx¼ÿÇ =¤{šÚƒ«±5Ÿo7—'³$ñ>ŽÀuŸø ªCÄZX“?hãýÓZ(³7Qí”ãžhºr¿Jæ´ÿhiv÷SO¼ñv„ã vüÓI‡:îh]Ë•ëY7q<ÕY¼I£°âïÿ5ROiDñsÿŽš¤ˆr.2S: T[^ÒÏü¼ŸûàÓµ¥Ÿùy?÷Áª°¹‹Ãƒš†qóƒUN³¦c‹ƒÿ|šõ<õßøé¢Âr4TñS@ÜÖ?öņÞ'ÇàiSZ±Sþ¿ô4XŽc|¹$S¤D=kuëüÍÇÐÔ±ëÚh1˜qìi2Ô‘è¨À¤ã¥U–ä£ã —§xÃÃë¬× 9MUÔ¼S ;*좚ÍEÜÓš645›¡=©äŠä¤KøÓ®RlŸZP¾ê[9¤Ýs>ÁèšÙKß¿ÿÇM>aXÅ*;n ÷ü«uu//I—ñSN¶‚?å¬÷Á©¸ìsæ[¢±ü(û$çþYµocEí:ø¤þÙÑÿçáï“MŒ»}>cÿ,ÿ:²4É&5üê×öæ–:\ûäÒNÇúÿütÓ´{Œ®4ßïªÆ¥[¢€úÔo®Xþ·ÿ4ɵ›OütÑd+î ƒTæÑ¥`¦]JМ—Ç>•©­¦ˆ†éWò¢è,ÎZ}>î,æ"GµV(êpÊGÔWc6«¥°ÿùV}ÍÞ•( ¸>ûk6‘I³ž#’´¦M8ƒ²lÜU'ò¸o‘e‹ 2+MGÊ+&ÞhÐòqWöÁÒ©2$‹ñ1^”ãÏ&©-í·üô§}ºÛë)óÊ\‹Å]•¿uY j|Úõb˜fŽ`寣=j¾¶ÿž”Ã}mŸõ”\9K5õ×üŸþg¿û‡ÿíÍ|yöÛoùé__Á8'ŠoøO|¶ÝììÿäÕLžƒŠÔúúŠ(¬ý¶¿äؼ]ÿn_ú[~gs_¦?¶×ü›‹¿íËÿK`¯ÌÚwÙ>”~›E߀¤Í%\ͤ¢Q@QNà.O­%\—šJ(¸ E%€Z1E aŠ_Ëò¤Í ¢›EqÔsëM¢€¸î}h¦Ñ@\\ûÑŸzJ( ‹š2i( W&Æ’Š^ôRQ@î:“4”PQšJ( ŠM%P ¢Š(E¤¢À\ÑšJ)¹£4”PEPKIE;€¹¥Ï½6Š.À\ûÑøÒQEØ øÑ“IEÌÍ”Qp”Þ›KšwNAF½&hÍ~_JLÒQEÀu&(Í%+€êN)(¢à/qIEx¥Í6Š.ñG”QpŠû3þ —ÿ5þá¿ûu_WÙŸðL¿ù¨?÷ ÿÛª@}™EPŒþÛ_òl^.ÿ·/ý-‚¿3kôËöÚÿ“bñwý¹élù›@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@žðܺÝÝØÔ¬,!µ’(Ý®¼ß™¤T1éuÇjÒÿ„ ÐÕ¡ß7üb¬xþE oþ¿ì¿ô]Õkè¦ÕoƒÝùR©'Î W?Eå·÷"€0?áô5h_÷Íßÿ¨uKi¤Þê1kšMêÙÆ²KpûZD#|J>ó¯zëu««K¸–XX4¡‚ЈßôO”Œ¨éÍP›þE?ÿׄúWoCÎh¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ìÏø&_üÔû†ÿíÕ|g_fÁ2ÿæ ÿÜ7ÿn¨ìÊ(¢€ÿÐÿ•kßþ=@™´Wé—ü2çÀŸú¿ò­{ÿǨÿ†\øÿB7þU¯øõ~fÑ_¦_ðËŸèFÿʵïÿ£þsàOýßùV½ÿãÔù›E~™Ã.| ÿ¡ÿ*׿üzøeÏ?ô#åZ÷ÿPæmúeÿ ¹ð'þ„oü«^ÿñê?á—>ÿÐÿ•kßþ=@™´Wé—ü2çÀŸú¿ò­{ÿǨÿ†\øÿB7þU¯øõ~fÑ_¦_ðËŸèFÿʵïÿ£þsàOýßùV½ÿãÔù›E~™Ã.| ÿ¡ÿ*׿üzøeÏ?ô#åZ÷ÿPæmúeÿ ¹ð'þ„oü«^ÿñê?á—>ÿÐÿ•kßþ=@™´Wé—ü2çÀŸú¿ò­{ÿǨÿ†\øÿB7þU¯øõ~fÑ_¦_ðËŸèFÿʵïÿ£þsàOýßùV½ÿãÔù›E~™Ã.| ÿ¡ÿ*׿üzøeÏ?ô#åZ÷ÿPæmúeÿ ¹ð'þ„oü«^ÿñê?á—>ÿÐÿ•kßþ=@™´Wé—ü2çÀŸú¿ò­{ÿǨÿ†\øÿB7þU¯øõ~fÑ_¦_ðËŸèFÿʵïÿ£þsàOýßùV½ÿãÔù›E~™Ã.| ÿ¡ÿ*׿üzøeÏ?ô#åZ÷ÿPæmúeÿ ¹ð'þ„oü«^ÿñê?á—>ÿÐÿ•kßþ=@™´Wé—ü2çÀŸú¿ò­{ÿǨÿ†\øÿB7þU¯øõ~fÑ_¦_ðËŸèFÿʵïÿ£þsàOýßùV½ÿãÔù¹¤ë:Æ‘æÿdê×ú›3ì·ügÚFq“ùš¿ÿ ŸŒ?èk×ða/ÿ_¢ŸðËŸèFÿʵïÿ£þsàOýßùV½ÿãÔù×ÿ ŸŒ?èk×ða/ÿUõx“P´{;ÿj×vÒc|3ÞHèØ Œ©8<€ ýÿ†\øÿB7þU¯øõðËŸèFÿʵïÿ ÌÚ+ôËþsàOýßùV½ÿãÔÃ.| ÿ¡ÿ*׿üz€?3h¯Ó/øeÏ?ô#åZ÷ÿQÿ ¹ð'þ„oü«^ÿñêüÍ¢¿L¿á—>ÿÐÿ•kßþ=Gü2çÀŸú¿ò­{ÿǨó6Šý2ÿ†\øÿB7þU¯øõðËŸèFÿʵïÿ ÌÚ+ôËþsàOýßùV½ÿãÔÃ.| ÿ¡ÿ*׿üz€?3h¯Ó/øeÏ?ô#åZ÷ÿQÿ ¹ð'þ„oü«^ÿñêüÍ¢¿L¿á—>ÿÐÿ•kßþ=Gü2çÀŸú¿ò­{ÿǨó6Šý2ÿ†\øÿB7þU¯øõðËŸèFÿʵïÿ ÌÚ+ôËþsàOýßùV½ÿãÔÃ.| ÿ¡ÿ*׿üz€?3h¯Ó/øeÏ?ô#åZ÷ÿQÿ ¹ð'þ„oü«^ÿñêüÍ¢¿L¿á—>ÿÐÿ•kßþ=Gü2çÀŸú¿ò­{ÿǨó6Šý2ÿ†\øÿB7þU¯øõðËŸèFÿʵïÿ ÌÚ+ôËþsàOýßùV½ÿãÔÃ.| ÿ¡ÿ*׿üz€?3h¯Ó/øeÏ?ô#åZ÷ÿQÿ ¹ð'þ„oü«^ÿñêüÍ¢¿L¿á—>ÿÐÿ•kßþ=Gü2çÀŸú¿ò­{ÿǨó6Šý2ÿ†\øÿB7þU¯øõðËŸèFÿʵïÿ ÌÚ+ôËþsàOýßùV½ÿãÔÃ.| ÿ¡ÿ*׿üz€?3h¯Ó/øeÏ?ô#åZ÷ÿQÿ ¹ð'þ„oü«^ÿñêüͯ³?à™óPîÿ·UìßðËŸèFÿʵïÿ®Ïá—Âß|5þÐÿ„+BþÊþÑò¾×þ—<Þg—¿gú×lc{tÆsÏjì袊(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(®OÂFÇÅÞ%¯.ïCm#Ks fÉV઀€?I½ã«û½?EˆÙÝ-œ—7¶ö¦é7²H¨\ÝÎA# Ž)_`îoQ^W¬Û]k·–z«¬Í¨ZØx•-šG¶·av¿eó‚̦"…•‰_•TwÆàïüY‰&…0ñˆé ©•$'dŸ0Ú…GßÉÀÙÎìã8§ÒÿÖÉþ£¶¶þ·kô5h¯1ŸÂS]h6z\pèše•î°×i•¸–¡6ØD T3n_4 `–äíç°ð ±?†£† >ÒÂ;YçµZB"€˜¦xËÆƒî«,N3Ôõ.Ú_ןõøÿ•Íê(®â%Ž£wã]hò•Ô´û ë«T-„ƒÚ†‰ÿÙuf\ö$7j]mýmq¥s¿¢¼SOñn«ªk7±xqux­ï.®/Ù%˜¸VÈcqvÊ¡P–-9QÉêáñ&·5߇¡–êÞ«ZÛÍzÑl‘lXöW]ÈË3e–8 •'"šWI÷·ãÿ ɾþWü@¢¸ÿ†ñÞZøgTs>¥0Õuºhз2€»‘#$q¸ãŒ{Á*‡Å\I¤¶Æ/-€fÜ$@êwØ<¯=ˆ%YX¢š³kͯ¸è¨¢ŠQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQETw3ÁkOs4pĸÜò0U8äŸz§ý»¢ÐcNÿÀ”ÿТ³ÿ·4Sÿ1?ÿSüi¶ôoú éÿøŸã@\¿EPþÛÑ¿è/§ÿàJÛZ7ý¬?ð!?Æ€¹~Š¡ýµ£ÿÐZÃÿühþÚÑÿè-aÿ þ4 è¿EQþÙÑÿè-aÿ þ4léô±ÿÀ„ÿè½EQþØÒ?è)cÿ þ4¿ÚúOý,ð!ÆÜ»ERþ×Òè'eÿ×ühþÖÒ¿è'eÿ×üh —hª_ÚÚWýì¿ïúÿ2msD7ͬiñ/÷žåýMhQX¯âï F¿‰ôE pÄßÄ0}>õOmâ/Ü€mµÍ2`Fwvü+ 4èª_ÚÚWýì¿ïúÿÚÚWýì¿ïúÿ0.ÑT¿µ´¯ú Ùßõÿ_ím/þ‚V÷ýÆ€¹rЍº¦šÇ ¨Ú1ô/øÔ‚öÌãvç'MOE1&…ó¶TluÃH·4¾RÏ“û¡Æ*’Š+/_ñ‡¼?äÿokÚ^“öÞOÛnãƒÌÛÛw‘œnÇLZÔ¢¹oøXÿ?è|ð·þ àÿâèÿ…ðóþ‡Ï àÞþ.€:š+–ÿ…ðóþ‡Ï àÞþ.øXÿ?è|ð·þ àÿâè©¢¹øXÿè|ð·þ àÿâêIüàH%hgñ¯†â‘NT€õ¨ H Iä!e—c…Ÿ2{â’òÚÚòÖ[KËx®-æR’E*GSÔx#ڱόü4ÅÔÏŠô!`Ò˜VçûB/(ÈJÝØíœÕSñáøë㟠àÚþ*êmYiM¥µ–—emmjûíá†D…¹å )ù›‘ê}iÚ¾—¦kFËWÓ¬õ V!Œ7P¬±’:¬ȬAñÀ§Ž|1ÿƒh?øªÄ?ƒãŸ ÿah?øª¡f‹±øO±iiøkFM6Y<Ù-Æ! ¿1M»IàsŽÂµmá†ÚÞ;{x£†Ô*G…UQÐ8¹ÏøXŸÿèyðÇþ  ÿâ¨ÿ…‰ðÿþ‡¯ àÚþ*=FÖð5ÌwMm}BÇÄZEÕ¹Ä×ÞÆñÆqœ3Ç<нÌÂÄøÿC׆?ðmÿH~#|=|wáqÿqx?øºê(®[þ?ÃÏú<-ÿƒx?øº?ácü<ÿ¡óÂßø7ƒÿ‹ ¦Šå¿ácü<ÿ¡óÂßø7ƒÿ‹£þ?ÃÏú<-ÿƒx?øºêh¬mÅž×®ÚÏCñ.ª\¤fF†Îú)P V$ 3î+f€ +7T×ô*åmµ=oM±“zÇst‘±\‘ƒŽ>ƪ7Œü£-âÍ g'Q‹§ýõE…tnÑYþ(ðÍ̾U¿ˆ´‰¤Æí‘ÞÆÇ¸¥K6¿¡Bʳkzle¾èk¤ýi]!­M*+ ¼eárâ­0m¥N¡AôûÝiGŒ|"[hñV‡»±ý¡O_½Ò˜®Ê*…¾µ£Ü@“ÛêÖÄÿuÒá[èA棽ñdÊ·ºæ™lÌ2¢[´B{q“M¦·eÜ訬«ørÞÝ®.5ý*TÒ=äj£=2IÅQÿ„÷À¹Çü&žÎBÿÈR§·ÞëS¥¬u*IÁÚZ”|KáÅ8> ÒA÷¼üj9|Yáh‘¤—ĺ4h£,Í}zŸš‹¡XÙ¢¹”ø…àûž8ðË}5XþÍZú&µ£ë¶¯w¢jÖºHcilîdW¤© qî*œZýQH{â0σoÇýsÿÑ‹^@‹ë^ÅñgÂÃþ¹ÿèů#ÙØ ¸ìsÖø†*Ó‚zš(§硪2³#´.-Ñ-ƒ¢dq“\¼ž*ÓSY“Kx®Ë/”TŸ®x®¶ÉæHLwïîˆìGb1\î¼9”o©º£5´g…¿¥9PÕ‡ A\{P©í[ÜÁ¢Lö4õAéR„§…'®=&ÒÜi\„'=)á Rm{Oçcy’È9¦+nÎomÖ{gÈe ´žF}k%ˆ§)Y2Õ7¹Q“ŒI銳wcqh¦ha{UË Z|îØWœžÕÐOkú{E)\ƒéU)ظÂëSˆ/åUÁn£×ñTÖ­A›ËQg2r„cž»Gһ맶·È¸™!íÒ²5½SÓf°³ÕìZ冨âgå‰íƒÁ®Z÷fJÇ€kúªÛ›¨-Œ¶Eq*))œ` õë^±à À– q:Q±ŽHë\v©¦ßxÄo¦ê7.ÐKjU•NèÔ·L™º¡´† YöÝ!àHNÜtõäþuÉ òÏR¹ZÕ¯Û.\‰…xŸð«ÆÞQ•(r½p(Ñ.ŒëæˆvcéƒÁyjb@"lc w¯J3ÒèÏ“¹Ël#“SÙÛ™ÄAÂg¹­‡Ó"k`©¸N½rxoð§Úéð,Y“>hîJ~ЕTm>;}Ž’q×=ë[O¶Ydn‹ÈŒZ¢±‚OÍòŽôÉõhtè§Ç ‚sYɾ¦«M ³{ š|²c×&§Òõ{iµ;k]àÍ&좓ý+À|eñ"]/X’›¢Â´r‡$cŸLf´¾ø’ëXø¹áð¯æA"ÎØÝÑ|‰0Ø÷#¨RWAsèúùsööÿ™/þß¿öÞ¾£¯—?ooù’ÿíûÿmë¤gË”QEQE*ýáõ®×[Õ ×|¢~í­¤‰-. ¦[PBçŸ2’zq\\@1ÀÈÍj*çdÖH§BAT$’1÷õlj˜¯fu>Xñ›©x*Å¡hî“íðÅ/iáçåoá,…õùs\ŒèVF‚®«áþ½â]']· º²»SvªÛcšÝ¾W!qò ÝŽ à`×Kãœ~6Õå{½#NÓ¦Ô[O<¦8œÎKF‹…<ã©è=k9Î4×4ž‡L'̬yw8ÈíAË>ãÞ»Û/†z×öeÍì·FÑé (.%U—Ë+žÇ0àäKsà=2Ê÷X´Ô|S™t˜Œ·FÖɤXÆàIf_œ’>QŸ­aõÚiJþ—c³±À”<žp+§ømàù•·“á0úíâ‹&²²šÚÊÎâê)¤Ydùƒ?——*HìjØñ7´Ÿ ÞÁtþ}PÜ‹k(ì wMÓº;O"÷v ð;ô®Úu(Ò¨›½þJú/óîcR2hñ¦f½Nâ}WÂÿ³„0_$kâ}RY™þB&Â>„¯8ìEcø£Ã0OãËOèz<Ö7&ql.'¸iMÆâ”ŒaÃ;WWûR,zmß…¼-fжzN”»v‚2IÙ¸ŽœìÏ®IÍzôê*R]Nj¨ñcÇ ý*¼ç2¶…mé»*@ù±ƒëïôª“ÿ¬5hÊ#(¢Š¢ÂŠ( zý†ÿä¬êŸö›ÿGÛ×Ù•ñŸì7ÿ%gTÿ°ßú>޾̠›¿j ±Ï_ì¨ÿôlÕäoþŒÀôò~l+éoŒšƒ%ñE·‡üYhc2Ù¤°_¯-Ò:ãpä}Üó‘Ï5ä>9øc«iöO©h2sJhÁWƒE\ç%GÞî¿•D1OgSÝìÞÏæpW¤Ûrޤ›þ*ƒáµô5Óx•™õPA8NMr ݛķ,F ÁíÐbº|Ô­Ï àséÉ®\KýïÈõ°k÷3Ëoe)ªÜ9ÉÍÔ„ÆŸÀóÈqfO^¹=+>ñõI”rÿŽZ´ô»9âFeÉ€W¥&’W<ˆ'&ýN×á÷‰$ÓnM…ó¦¼Q·NbsÆáìxÏç^‹â}%5í#ì§i„‰!~¹™÷~Uæš~švÈ1ÿ,£Ýh7—ÒÍ…#›lyê ÇÒ´£ˆXû Ÿ'ØæÇ`'üz?Ôæmôò²„eäL^•%¾žDú«8ü³]µÆ÷°^Bƒl²©|v=*¬v‹¶,(¼”=ڼꗄœ^ç©„­M%R?Ó9c›Du…Íi‹`| "cÓùŠº-O—në ƒ8©"P|3,Xì§•–§©„÷e/8³º¶6\Ë#ó¨n ‡Êr2ŠH­»È‰Oý;QTg·>Sñÿ.ùýj”>Ö3­ôVÕ5·-åÇ•gEÇ? 5/#¼Kk#Û¬ƒ øT~ ü먱xí4k­L¯Êêv=8®'SOøø,yÜŒsÛšêsÖ0]5~¿ðæm(Ɔ¿µSðŠÿäŸàŽkìø».?ZªcÚ#8?ëy­Ù-ÿÒ'Êœy™ä}*¬g¹¹ŽÚÚšV¼(±ªä’Et*‰jÏ ÒmÙ-Lk ¬ˆŠ^GR¨£ÇÐ ô-Ãzg„ôäñŠ[!ŠÔ̤rßß «:l:7€à+Tñ1QÇjNx'××ýpž!Ôõ nú;ÝJvšWY#T‚ÀçÔu1Ï’–ŸWÖ^ž^}OZ‡±Ë´šæ«Ñt›îüºx×ĺˆ§˜Í#Ed’ To’1žÿÞos\õèÙòc”t“ù³´y|ôòHÏÓ¹à? Iã-N{nc·‚o6êâU%#QÇAÉ$ðz°…,5+E%yε|]ni^Rlï|C­išM±»¿›Ë$`eäÈßëÒ¼òû[ñŒ'k-*ÙílHÃíäíõwþƒõ®‚×áÉžú[ísV7Ñ#í@›”²Ž™' övúm¥¼Km¥é¶AC0Ç€3ž¿ýzó¨Ê%ÍIsË¿DzÕ¯j—ó>m¹º*Þòd﩯¯ÿaïù$úŸý‡eÿÑWÏž2øc©Úø€ÙèslÏ4®^8"*!ç<±8Ç8Ïõ'ì±á[ÁŸ®´ÝdB·Sêr\ì÷lVŠ%Ÿ_”ŸÄVÒÄ*ðæNä:N“åhõŠ(¢±ÇŠ[Â—Š½O—ÿ£¼³ìÓª1 ã5ê~<¸KO ^\I©åç'™WŒk~6‡M¸Íµi,&]¦M¤|ýÓë‘ÐÒrq3’R•¯©¤«ÏJs•Ž2îp^*{Y­dýê Ñ0z®GB;jÊÖüGa¦;¤QMq2vS…К9îG#GškWž"»‘ÍÁ”ÎĆù9÷Æ?ô_x»ÁpØÁiý¥nú¤¥QVi[$ôÏ#õ¯ø¡'Ûõ¯íce±º1BH.;óÜŒV§À µŸÛy²¢ÛÙƒqq&ܬj ù¶®9R\×;!/p÷ÉæŽd!¡PÝ7 ®#—Š×Ôt™¬í~Ô“CuìoˆôÏLŠÏILWL]Žy-F.È¢y^6“„^I>•Îx£V¼²‘¶Z2.²WèzVô×ÐG} ŸÌe‘Kð¹ £±è:ÖNµu&¦Z×Mkƒ ÜÙôô¬k§8Ù2ãt<®÷Yg×[<…g $8çvÜ‘]÷‚uïìÛ ¢™%eA(bJ)õÿÈ®{XÐßO¹±I–Þ ï§ ŸZîü;¥ÙÇfN˜ÏÊà®Ðæ¹!NnH¥dµ:«[ÿ´Â®0 ô«ö’¾É#”gR/U÷¬+i-Ž<òÑÿtŽÿZÐŽB9QÍwÛMLùµ!Õ|/¤^Ú¬ÂÇ\±,Þ¤žæ³ï´/éüÉ+‡€wv޵Ýç¸`‘ ËóÞ¸èa¹ñv¬eº2Cg1¦p>Þ¼u÷¬f­¶æ‘×S‚ÕômoÄ^;²Óù–¯x"f_—`+¿oÚ+¾‡JÑ­&ûŽãm¨PŽA,ȈÏ9÷Å%¼I ö÷(Àoñ@z½ü±R|DÖ4ý"aæÊëvSzl^@íQ(5ìÑ>g¡­¢hÉ¥Ê^Þá嵑NÌœ†àÖÕ«Í/=yÇhÚm–©¡ý„Þ%™7$2H§î#_»ÿ‚º•§Æ_øim¼Ù!Žm²‡%bqm.ྪFxõ54÷êÊùsööÿ™/þß¿öÞ¾£¯—?ooù’ÿíûÿm묗(¢Š(¢Št_ë§ZÒYäR›Y—aܧ=¨›úÅúÕâ¤ò/ èo åк›í>lå¥Çsó÷‰çŽkеiþ,>N§à_ O×çžõÕ†{‡XÃ~jä>ð߈<‹wð>d`\iZüˆO×1áºwç5¬°t[»_Ÿ{þljµÏ2oÜêž&²ÖeдHnl)PÇ fO,Ur[%@ŽƒÒ›¢øã^Ò-µ+XÄL·³\Kæ°>bI",¾˜É#ޤóÍzæ™ð§ÀVþeÅô:­²I/–ö“gå$wÉ­k¯ üðÕ·úFŸ¡0áÍÆù¥8ä1psÅ/ªÒ~ï.†ÞÚ š¾çΰëWšn™gmoäa½Šùc‘7‘ »Õ}½ëZÓâ‹í£*×V× Êf-qn‹3–l1丯Âq^‘¨øÃán™Ý#áþ›)vÎ.”¨Èb>•Ãx§ÄÔ.&¹´ð…o\b«ˆœïapŸ­%†¥?Ž)™TÄ)JèÔÒ¼}áø4釧ÉaâíIâGÔb¶ nÓbvnç'«qŸJgí-«Ë¨|HÔ¬žDhí!‰!I03Õ‡ÌÄzn®-o<2æ¾»·ºÞ¾[[jlTĈB(ø‰â9fý«¤ ãý?ßKÿFË^cá_xƒÂ—]&ù„'a{y~hŸŸîö>ã½öº§ÄM?ÛGCÿ‘f¯º$1Ç1€Ô×G²…XrÍ]eFÕVÓ>’ð¦·áÜ\^}û \LG4É’’22z7ãƒïPø¿FÔ´yRæî35°ûD|§¶}?á~ Äe‹XvÇ(¿øåz;ø›PÐPRæÐ¨o7*A=¥yÏ:_ÂÕv£ÿ3ª8‰$®íývÆÈ~û œyb·í­;»£ùyQú-fjz…¶‡¥êZÜr46¦&uŒÄ{f·­gŠñò ȓͪ`á•HϾ D¯kqµìZ´Q ØÍ¾„c‘YV^!Ôn—MðÕ´$.Íqy;m†-Ù!}K`ƒœqZ…ý¾•b××NË»m¨Xž˜¤’ãYKñKÁÚ¾¨Éw¤H‡/˜„È;ž&l篥mÏR¢O—™£š8¬§r©n¼ûœ‡‰¾|MÓÿң׬d‘ `©pÃ?Zçü)ã]vÇ[O ø®×É7$G ä`íÏBøW¡x“ÇúEå Ô4ýfÚêVI%‡luÏ5åzƨºíá†à«Á¢`yF=«(æsä© =,ÑèÃ.P‡=9kë¹è7~é?ë“ÔVˆ&– $‚Ò3%åÚý–ÿiˆçðÖõ„ò]hö Y¤…‹ŽÛ±Ïê+3OŽK½[ûG!·Cêòc ÃùVÑ—+»èaF‡¶—.Ëvû.¿ð<Æê¨ñZ.œ$ µ¶ÕÇBÀòkö%ÿHÂŒ˜Gèj·«¾®—‹,Hoº!·8aµXŸ÷«_Eðù¿Qy}/Ù´õ€™&'ñŸçNuÜÙŠ„ñS\Šÿ¢ÿ€sÚeÝíÕÊ[Æv€$‘Ù°‘®:³tŠš}F="Îî-™. ©çÞãæ`ØÊÇýÅ÷ê}«GÆô3Ä£Km´¨¢ª8i#{úû\½Û£GvÒ0 Q°vázÿ:ºjU¬æ´íþäaRQ¡uMëßü¿Ì§µîdí¸ñ$súÖmäÁ"Æ[{Ç;°Dä°=½©o¦k©gh¡„퓆qÚžðà w)d¼SÄUÈË{W©|Oäyr×c(@×c9†Ûv¯-øšô?È4/‡Z¦¥ $rO"Ã’:…9?Î¹Ï øo]ñ©5®‹¤ÜݼW3Û ç,ç…üë²Õ,®,4ȼ*ÛìDî¹e,NNùé\9¦!Nš¤ºµ¡êä´eíG´Q?¡Õ¼Wo¶ÐI.ð]öŒG'’Oñ®›Æ’ÙøÃò_ ¥›Shü¨Š ª³qò÷?ZÛþÞ±Ó<+ ¾ŸÖVVÈÚ›t|u`ælœÄ ×–i’ÝxÓÆ/¯j77)¡é²bÖ8×ýtãОËëô®5]×ýÍ8òÅ´°±£'ˆªîÞ×:m&àøg@Kïëº%ÝÚn³…›oP«œ°÷Ú3žõë_o´íKÁ×wzT‰lúƒâ[˜6¸>\¼‰f¦ãÉÚ}+ļXd]J×S³±Ñ,–4>n«©Eö™ãÁÈ«|¤òyÇã^×û=ëÍâÜÞ4·³ùwïšïïɈã;°ðÅE Êvrmþ ä‹­ïCŸ¿õÖß‘èÔQEwG3ñDƾÔL®¨ƒÊÉfÚ?Ö¦9¯ »Ó,õÍ>Kdò–T'rK¼! äuÁ¯oø»w?58f@èÞNAïûä5óòhÖNËm£¾ýi8¶·1©QAê†ø _ðM§Ëæý¹]ÙælŸ4±ûÄúã¥(»¸àkÍtÏE¢\M ´óãiJü­† ž¹ç5Û[kZ•ƒKbîÄ) ®›J“Ž=+š-Æ'S÷šeÛ:×S¶ò. Ibaó!þ|t>õÓø.ÇEðdž¯ÓL†Hîî¶›8œ('“Ü×1a3£(>¸ô­Kû“œ‘’ p1µÏÓçÏ%jmìZw[WÃÝBêkõÓlÁ6åu'¯Ëð«÷wY[Ésw2C *ZIà(I¯5ÿ„—NðÝÕ½ÔÓÊ2$D vÁÇÓµAñ?ââ-1¬´X¦‰5¾á$ÀhÔòc㌓éÚ»èI¸.mÌjÂò²'ðâ^xžúK«[‰e…gi 9¹l®TrNJï4Ùéóý£Í–iÏ$±ÂçÔ(é\ï€ Ò¼7 Ál²\yΡ¦ß’H‡ÿZºUÖl¶†ó_§îÍiÛS×¾—9Ÿêúÿô­òÊv»Šà/˜êvËúç•u7p­ž£o=ååXåÇFB_Ƽ¯â¯ˆaÓ׬ŸAŽ)n‹Ê€ÈbT0Èž¤tÍ p´®»¸º`SÄçÐVu¦§§¸m× Û¨5Æj^"Ôl¾"AiìRé÷¿v9òÐ.KŸ¡¡¶•ËŠŒ‘ÝßZŨªC9†­hÛC²ùh yÅy^¥ñCvÐÙ:ª)Ú.I=ª |u­HʰÝÅæ(ÎР {úÖ.´{8ò5õÍ¥Ž…hn.V+”Ôšì)ä°Y[<{ƒï\—ÄAÆ—s}¨k‘rWI Ó‘÷*F8(HæÛÏ\vªº„—}²ý%K¼ª‰"|awsÜòyâ–Øß^°¸wµó/!ùÈ ÅŽ>‚¥TçÕÂÉyžs§i7úŽ£+A§O3•yX§  žÿNµêÞø‹o¢øNÒÒh‘ei¥*ŽLcj€XVÉã8ÎkœÕmš×Tû=š¶øÈòöõ ä{Ö^© ·w0^Ë,ke$ªXò¤ÀäävÜ;Z¸É·b§+³Ó|YñF÷Iñ–Ÿbºj2Kešå¥Sæ’Ù .^MrpxïÄ–ÓÅâ 5+‹ˆ%™KfÇ–QÏ £¶}«˜5+jöI/&Ê¿¼ò$ÈÇ#¾9«ºeŠ4vºG–ΑN9ÝŒà{ÕU¼]—B(Zjï©èQj·1Ãt×Ò‹Å»}ÐÂv‡ÀÀÉ#©qÏ­q·²Nn®ïo¡º-p¦¹Œ4q '28òGãÅ/ˆ¢»oEc¦[,A]ØÈÃ#÷ˆÈ8ãÓhëެáëW6—²ÜjfHV’[E*ÆÎ¹ÎFá‚GLõ¬9e4Û2sQ—/Sœ·ÒEñXæâA®³¨”vŽ™lôéÏÔ×yðnÇOŽ:%Ì™­¢• q3Hú<‹¹Ý¹é޹>‚¹†â[kM>ñ ØË"¼¸Á/ž3Àï¾ߨ¯ÄëK7µk CÌš !XÀVl±õ JÊh¥$Ϧ«åÏÛÛþd¿û~ÿÛzú޾\ý½¿æKÿ·ïý·¯HGË”QEQE:/õ«Ó¨ëZ“JÒ€ï· cä]¹üºÖ\_ëWê+Cîçpèy¤È™íZM¤z'‡­¶$‹um,¸írxô'¯çíÇ|`[u]!í`Ž5‘%:¾êÀ Ž£‚>¾Õ×ü6×bÔt2·(›OµkxÔó€pIUïÞ³þ9Cayáý6ûMBZWÙŒ~ðe³ßïëëI²Rêrþ´i¼=¼Ì±DXŒœòrzcð?‡Ò­%®e´\Ë,Ç™ Æ®{ñüÿÑøuieyá+xî]ÏúD…‘AìxÏ[—Ãw¶÷/u§.Ê´Œ7†SÆ9ç¯çZ]X›jsÚ;Œ%‰ôÈîÑ|‘8Û¸æ>›Æ@ã9ç¥lxGQº³™~Å~@sƒ™;‡^qÐÿõ«cDðæ§¡¬ŸÙëp·ÛˆI0ÁS;¶å²žô£½½å´Q*¼®Ääàeˆå† }?:W¬uš„÷1øuä›Ïów+Ï8ôüþµå¾#¸»×5лJ™1Ø7p=z’zšôÓ`†ï"k„ß°à‚Øì}¿ž+Ï| $–#žh&’ ”b•['Žx=*•µÇ.ˆÂƒI¶™ P··2ÜDó@‹ Q$jH,29VÉp}+x-³[´£_®~ŸzJh­¢êq¦Aqkw$mù·ü­×aÉÆIëùu®fÛBû8šæV%•Øužx'×ßÔU-Ijƶý¶kõ-²ÎO g¬ÄOÈ’ ʺTH!$1$gÐV¶¤?>4†-ß‚?­c^ ºÖ|{iuõ½´CHH{ž¾lÄŸN„W•·C0wñžy^g§ã^ûTø“ÄÚÄÛ$Ñ5«Ë8[E‰š`Ñ3æ(À©8tí^}Ùø“ÁÞÖÁ`CgöI±Ÿž¼þ\µ¾Ì´ô9å* ûÑ׿w 4¨´»+ÄŽú;¿6çyhÆù@ÇSWüW 7s}–[¯²£"ƒ.ÝÛ ÐøZ|q¢ÜI§hºŽ„²]1t[¯´¦ð$näj××¼-¥ê“2éþ&°°ʹ&ýj¡+i'ó"qOáZv9-+AÑtøáS­™>éÀŸñ¯GÓ¤š-?ìú§ufà*%â?ðpMpÚÂùt RÏWÕá†k[Y|æf ²6“íœê>/Ťø³ÃP[Å­*eI–k)•¤VF©•xØÈEÊÍßÎǯ„¦ª$œmå#â.‰k⯠jÚo†.üÝQ™]¬%”E&WøpØ$}}ª§‚uM;Bðí¦“â+ëˆu8#C4W?+©xä c>ÕÄxæ{»¯k^'žÖãLÕí(";,ƒc‘ƒžù®ÇÁ:ÌÞ C§x®Î N8! Ó(®UIËwäÓµhQZÞ7ù¯ó0šöušZ–¼isaâÿ ê‡,Ò]MQ’M˜Ƚ9 W¾µóŸ‰<1¬®ªš}º¼òÊÀy ••ñ´¡ÁÏÓ9¯«›IÓô{{«í4«&Àtdv®*óWÒo|l¶úŨºx­[ìòK2@±Œ|ì%b0À0=O¯ Ž•98Å]~(îT£V•öwÔñOˆÿ®¼áòù¿Ó· ÄÜv<Ï«†²½»´™e¶¸’'SCJõ¯ŒZ> K«Wd±UØÏI£ÙžpO9Ï&¼óLҼˈ¾ÄææáÀ nsÀ>æ½*r…ç®çxªr÷t>‚øo⛿iÑk–Â}A¢cæ¤Ac9Á=²$‘NOx`ÀlaÒgž0†8‡rr?>Ed|;ÓînÕ¦¹d6±Bmá m9ß&;rû8®†Â -6<F²gæÀù=3Óë\åæj*ïÔíœgFRvæWzknŸç÷Ÿ†â°ð<7ºŽ¿äÇ-áA’¯™" P¼óÖºX¾$èò@–ÃDº¸V`»Z ßN1Ò¼®Þݯ Ž;›O}–ÖA“qy²·^Oà v–Öv6qo»†;é† ¦ÈWêÇ“úW«üIÖïv 8 ¶YC`íÜÀ­aiwˆ|k©Fº…õä¶n[Ì*©Ï@:n#¥C¤åïKEý] Ô©ÃÝæç—–ßü9ê—#ó,$M İ%¨wzdw¯#º- Åî¡q0‹t¡£$g{^£2é:-Œv¶Ë ´pÄUpFÈSõ¯š¼eâŸøKÀúUa()7VÖHÚ¥E©ÅjÍOø³_ñMÔV·î²iA×ÏhÓk²ƒÏ#¾+vOi?e‹Lðý„’ùCl6ðÅ’8â°ô{-úïÝb m*£îžõ§á [LÑ!¼Ò¡°E"Mþpà¾yÁ8äÕ­:w‹v^DbèÔÒ¢4¿#’ñ\ž%Ó¬â×uçIåy¼¸íåb c‚xé_G~Ç:¥Î¯ðÏR¹ºÆõÖ¥AAú׃xóS´ñ—>—X%Ždq#œ®Fr8†½×ö1³ûÂÝF1:LZ•ƒ ©€wúWo5Z(bæ¬o¢Š)œÏÅ(’j1I÷[ÊÎXŒ~õ;Žkà Ó,£¸lÒËpÅ[aã$çèkÚ¾34IðÛUi×tcÉÈÎ?å²w¯›MΘ1Ë,?ÃqYÎ|§£„Ê£Œ¦æÝ¬ìyæ«`öúõæ–ªò0£Œc–çåéê1]ñÒàðöªÌøQ»mÉ.y<z‚æíbº[Û]ZÜ\¢íWcb =jÖ­ysà×»ºòä¸ó 0ãv¬“æeâ²ùa¡ÌÚ1lj Ý€c@?2ä‚ãÐúUùõE´[Í3¹üÝ=?àîŒßh9ÆIÏ&·tëk×X¡[g‘8cŒsYJŠnç ªÒ±ÛøÂÖÚÇú+Ë–ÔáËÃj-ÉG\üß?÷ˆþU…ð¿ÃWº‹Ï®\ϧZÛr®mË—»AÉ&»mRãTÑô­mP¼’{3!{bJ©ó`íSÏãXãMS!Éã#†Y&ÜùÎ0AJÑÉGsº†^ëFêkSТO ù[·‹¯ZäÆ,@çÖ«ÞÛøFÚ§‹ÅzœÙNÕKCóäciõϽpí¬ø†S–ðìÏŸïB* eÕ%¿…]sÝ@_äiªˆµ“SëU~)ñÚîïŦâ¤1È"`#FazG“Ô^•é> дֵžmGX“M•Ê U€¾õ ÷9Èü+ÒÈÛ«H·i(ÎŒ¡uFÏ#¯¨­»;ˆî!XÒ'ŒD¸‡Ožù§~fŽLNa#xÍJçFº‡ã "ñJ=3f漡 –çÇ1O,«”uy9b¹Ç®è/¨ËézTrjw2 %RÒ$˜lÓ––9°Õ ›|§A´4(Åö¹\€ÆÊ@F}qÖ¥ÿ„@òŠY`œìû$¸úç­M·¿•ü){v9§Zì®Þ ³*TøßM`@›9³ùÔBÞ >i,’ò’®O›WÏp"¦½¼:uœ÷‰¸h£fâ8éYZìóC£Gs'”·«6Áò³ žÕW M.æ´dæZ¹Ó?Ñu«è˜´òØ:D»~ërA÷ ä ‚Ht1arp· ›&'VÊÿ ô&ºÏ ë %£ÞK1T‡ýdLÙ^AõÎ1UuÓ®.BÙ,¢ÝÕr²•cÔèJš£ªé«3‘Ò’i£¿!vH¤‚¬qÊŒ‘õÀ8­‹X¬b3ŽFÒ:çÖ©x…nl4¦¿±BeŒ‘8 ’½T1ôÏ#ÿ×Xz‹®"òÕí  ¤Àž+_gVµå(Ê$‘ßÛi¥¤]gÏ·2—6Ò‚äÊvŒäŒp¯sÖ«êz%þ¼'ÒìuK+¸Œeîä)PrF@8'б§L^Öi“>]Äk:žÀ·Qýi¶d÷HK1P¤ü½° çÚ‡UÊÌ&ù¦æ¶1$øQ®ÚȰÙx¯EŒÈeŽý•Ç 3“Ïl{×]ð7áν üQÒ5K½o@žÚÞ[Ó#¹kym\vÈü¤]GÂ’á=Óyÿž¿ú)ëE™„fîx¯—?ooù’ÿíûÿmëê:ùsööÿ™/þß¿öÞµ:—(¢Š(¢Š|ëÓ8ûíh6 íÒ³àæd~aZŒ>‡L‰›^Ö¿±.ÝÌeã•|¹=½½Ç?z7‰­£Ô>\ÜiЛ˜>Îò–L±‰ÈÝô WÓÖºOøžëG½ŽÖiô©åU¹…‰Û°œ18ÎÒzäR!~xÂÏBH-.l¥˜™±½d fïÁé“ù×¹ÝéZ¬Y[m2ÞUF8 }°‘ëÊ ~uòæ£m&©ÜZI¹$¶™£>£iëúf¾ÅÓ¯b¼Óa»™Þs,(èA' ¨ÁÇæjdìiNFVñ¨i_Á·7Q+–Þºœ ¸¼ã?—å\ž­âMRF’ÚÇÁ÷ÑÝŽ2."m€tû§ôãÚ½\š= ñ?!géëžõå±ß$rZÇk§G9ܾkùÁYsÔ•nHÉ<þ”DlÇþßÕ4Í6A}à½qw`™é×§|ö®#N×^ßVûtz=ô¨rJO9=ñï^¿âÏÛÏ ZØ-¸yÌ›ü´HìIëõ=*‡†¡6wìeòŒÐ‰„ƒl—~ݧ©½=ê®Ò&ɳ“ÿ…¡hªës¡_ m<å] }WüûÖ^­ñKº„Ço£Op|Ì̧$÷éÍ{[B— cç"3@Û›$sÃc9öþ•äž3h帚Y- Ù·7’ztþT£®Ã–‡ %ôs´Ž±2nrÀ÷©Þ!*’ AžxÿõÔ÷`™Ú1àŒp´ðUìå¶8$üèHçpÿš¢˜xëUåûæ¦5 ¿|ÒEGq´QEQaEP½~ÃòVuOûMÿ£íëìÊøÏöÿ’³ªØ oýo_fP̵Œ*ÿlœõþÈGþK^N-ž!ë3!^»ûVçþ‡ý‚áÿÑÓW”Dům@<¤<þUjç [s3Õ>‡_¶nå?®)|a:­Ûò0GéIðÜÅ5gïO)úüæ–î®üRér»íâo1О 0?3ZÃB'ªI§Ô/-ü:"Žâ_&eÚñ‰HR:ò?*ò/ëW:uße¶9‹uW9Q_Sø“ŸðôÚ¼6÷wV¸ŽerŒ1㌰ O8çó~¥á£o ψ¾Ø³\Û>Ëd„-܉2Ø*°8#9ôÁ«£ ùº÷ó6…)×ÄESÖɽ<•ÿàž™£kzOŒ~ŧëÖZ{^Ü*Ç651k!Úç–È`À<Žkqôí;ÂZ$ÚôúŒrZÃ"ÎýF@¥xf™g©xÄRiZÍµÍ¥Åæg·ót|ä‡W†qkK@»Õ­ïu–Âm,Æhî‚«u üYãÓ×¥pb05”±šjû[õ¹Û†ÅP–/—mî¾ý¿àžÁâÏiZjÞAsöƒD%UÇ#ê:qF‡©Ák£4ßÙ‘_’O”2Ÿ\ŒŠñ_Š^;Ô¼U§Zé6¶v–šU±%ÌcÜ‘’]Ù€8ë…éÇzèmu h öfV¹° ‘³$ “UÛù×./ *0ƒkÞêw`k'RiJñèkxÏA±ñ-ˆÔ4ý2ÂÌC(FFBF~l:ó\U•Þ =ýùÍÌ“†¶­ðL#vãßíŸZÎñ'Ä?\é?Ø–¶VÚlRœHðÓKŸáÞyØ`ÖW„|Mo ZÞØßé‰}Èhv˜äA=Ôçœç¥vЃ„=õ$Ì1uI©S²k¿ôÏNÐþ!hñYÅekg5ºŽ’:p03Ó>•¹eqád³·Ô|C¬ÞM¸òÈ–!µŒàF8èsП¥y$ZÖ“¯ßÛ¬šv†2Q Œþi$nnzãó®ÎÉ´íkÅZm–°ï6¡¬nì– ÆwFî3Ïzì–›÷£ty1µ}­ªjÛêzVŸ®x'DÕ®@ðÕÅÕûþòK‰­Ën9=3ïž•§yãêãÊ´žÊê¡v?JåneÔ/¾"ÛÙ\.›ey©Z­Ýœ0Bë¶f%`Ø Bôñ®‚K=NŒ-Ηmz1Ò†aùšðqãNjòI¾÷=ÊXÈF*Ñ·§/êÛG9x5k¢L©pçÌl€;`Ôš^yfÏ­pÞ2Õ`´ð5ö©¨xJÕìcj‹a¤tm¸ëÆ}«æé/nKÄË<«ä±ÄƒÓžkU—:ÑçKú-†1R|±¥ÊüÞ§Õ£Ó‡ÃÍo\k¶‚5µ1ÇËÈÃj¨÷$ôå¿ü6·V t¶ææêSò©û¨;é\ïÃöojñÇâÛ.—h»˜jwM´dã7 ±Èð2{W¶Á­Ä­%§„4ˆ­´?=¢Âa¦F¤œ1éŠé©†q¤£'eÔ)â\¦åNR[$?NÑt˜u&ŠêQuxê_ÉVýÒªqÁ9"µ¤ÓìÌo›{T]¸?»ÜqøÕ-"[¨å„Ýé6ÆUüÆ ÌÀÿ{÷«wZÆŸ*[û„VÇ }*µèÍá^¤Ýoê›ÿøÏŠ­ta¢^y:mÌòˆË*à …˜Žx` zOì™söŸ‡Z‹gÝØ„Ö%AÌí+ÜÃÎæŽzŽ yÞ±>¯uc:Y]0‘¢`ž\Š„c¦+Ñ?dȼCíE|J÷Oxuy ‰|ÆÙäÃŒž3»õ®¥ *>ä›~·8çrOÛÒå_á·ãcØ(¢ŠFGñÎ!7­mŠ‘6F3ÄÈ{ý+å…wžx&˜ÅnSs¼Q.@'€N:öÍ}IñæQÂmrB¡¾H—€̃©ã½|‘&¡¼6O$Ú|«å²KÚ2ß)ïŽ+9-GÍ%¢'¼Ó-#µº¹…åsn(Nr%G=k­ðí´Ú·XÁضT`zןÞkö²,èÒ$’=˜‚IÈ$œwâ©]øž[—0ÚXáB#1¸ù†ß¯Jš“Õžïá_ؼñÞý’ÆvQ˜â’t›é»­në†ÇLÑ›íÚv“a#.1,ñ‰†NrB>•àž´»ÔáŒ[ÚǼ¨ùç”'šÇ¾Oo¥cø¡î¢Ö™=µ¬SBÛ€† [ÅÞªËs>cÔ¾$ë×iáý!tíUv$³ÆDS«`aHç$þµçÒk:Ĥ«j7 ógïûšµi§”ðÚ… È—Ê© œxÍ-½œ±n"ÒïæÇÝ´÷>«Y´ºšÁN_ d «ÈíB÷OïZ’ÛTº™W„î\| ÊsüëGÉ»ÚØî@èK„LþmP&—Íå#Í}ùg9ÈÚ3ôúÕËÓíGÊŒˆÛxÆÒÃqÛ¿5ÈEaâ9‘¢·ºš8p¥¢¶ù°vŽü}y®×Á7© iRCu©MçË&÷eeiƒ*5EW£«ó/BÖñý×?ðþŸ Y'’¤iD¬™¿1Çó®ÇIέ§­å¶¿«yr¤f0TŽ£îñWt. -&[IoÍ'›#Ë9ffé’ Îu<Œ#M­Ž2-ó†hm®™C8…Žê:T¡Ô­–&‡DÔnD޶Bß þñã¥zM£MkŠÛ1!bä)<±9'êM9§¸¾Å½É4Õ"^=nyе¾nxsÛÈjóßÚÏi¯O`cžÞr w' Íž@=+èRd'Œrkçßê­ªøÛVº1”D‘mÑO]±år~¸&”ê)-(ÑP–åhÉ·€D*ÊÀ2“€{óùUÏÇ­jÙßgæ1…f‰gBÅwäœcƒYší­Â^èæh˜[]«˜÷ 9ÛŸ§"½sÁ¾ñ™²ÝˆmÖLÊ›fíÀ6GcœTÓ•–¦µæÐåàðn«jþE·Ú"+Éõ$¨nIló×½S¶Ó¬ô›«.ëO·‰dÂÈ aŠ7U`Nzgéƒ^¥yá亾Šòqr×&Ôd•c9è:ךxÀË'‹¯”d…p„Ä*g6–…S‡}GÞY_ ×H¶®§ ‘±1Àã…éú6ªIôÇH…ÔJÌÊ&zýáÇC[Þ³Õ,nîg¸Ñ¯ä’pвUØ¡qŽ[§NkSJÒ5êy-Liænä·1°ô÷«¾K·,ÿÖµ¼ßZ·™œoãþÔF¬¹’a©èµòçííÿ2_ý¿í½}G_.~Þßó%ÿÛ÷þÛ×X.QEQE="‘þälß@MI½†§ßZÒI ‹±ÈR£¯¯ÿ^ª-¥Öà~Í63ÿ<ÏøUŸ³ÏÇú<ùÇüó?áRکϱ-ÂßÒ– ‹½?&ÚÓ28ÿ_ À篧¥¦[Í©ûuäðLæ8 Œ_<Œg ÏcŠÑ.S7©—ã+]tûIÐ\¬‰¤¡ÔŒpOâyâŸái·yL‡Ë³a’I=zõïÍ\ñŸw› ê©u½¶âEeaÜõ㌀xâ¹™ZYRdUÿXÞnÙü?•†Ìõë}ieH¤vÚ3— ÔdÀçÿ×^uãë©IByaž¤ç<~UOGÔe‰^Í’;‘À˸Ͻdxžü\^ÌSK’1Œ V°7s±ÞNy=NjDb¥H=__zˆ”t¸,4¨Øç¯jB)Ü€·*ô qUeûæ¬JÛ¥v=ØŸÖ«Ë÷Í%¹QÜmQTXQEï_°ßü•SþÀSèûzû2¾3ý†ÿä¬êŸö›ÿGÛ×Ù”óí^âäiÃ'K‡ûk=y-£ÄÂГüNsøšõÚË#âFœ@ò ‹ÿFÏ^KmÍå¶r0þµ´Uâyµ_ï뿎<'länœwùÍK5½™¹+SLK±èO ÏÐWoû6éqIàû}VhÃ2æ8wºrK¯ ~ué2itK‹=Å® ùJ¹>çRæQz›ÆŒ§g¹òtºmîµâ(m,à’êåÛ*ˆ ÛŽ V¤ÚW‰®-´›7C‚îÝ.% 0PÒK‡;™³•eV ÙÉéÇ5ì?W[mâÂ#7—€$«c¶5…»žXŸNN+ç_ ÌÞñ«è>7:ýµšï¸Y¯<ˆÚ~ŒbÇ ÷#=1QˆÆ9Q“åµ»8<Õë' ·'‡³Óç}NïÅZÅÆ¯á£c­ÛE5Ý‹}¢6–ÜyÈ0FäaЃ‚vð@}ÊÃæ´1·1œ±è£Üÿ:«á7S±ðMæ§upÄ"–íRL—”ª’¹ô^^M|þ†"´½«ræÓVþýOzt(¨JU¢­t’Ú÷>yŽ÷Äß¾,È–©6Ÿ4w%¸Û°XAv Î1޼òYºq^ÿae5‡¯/¼Az5k8þFPL’7mÎÜI8¯›þxÎ×Fñ„š·ˆï$[k§šYcE,dvä: ·9ö<ö®Çâ׎u]gÄðèšt 6Ô˜¡pÈq,8'œg¶8¯­ú¾&®`¨KøqüŸ#æqUhÒ¹Å^Wµì®­øëù™â/W×_L¹‚{XÜÁx|´Ú3’­×¦8êkÐ4]3R¹µh~0°ÔˆuŽêfÐŽ¢¼øºÚÃK>Ò4·ê÷o¶s3®Às’£?6 c“Ÿ¬¼%¬êš”¶Úí¾ÞÎÇ—„­Zn<ïG×úÜúwâO€ ñÃ‹ß ¼C}"$ÑN‰±EÂýÖ  åO±¯‚52óIÖ.´­F·»µ™¡ž7ꌧWÕ~%øÕo¡ø—Gñ]¼SêZ¯¥ ’É;‡#nàqÇ|jðýrÞïâ¿Ä F÷ÃÚ|¨Ó?˜^òåG–˜ 9ÀÀÆ|ÖºpÔ8r»(¯êÇW;“²LÅðì:M«Gur $xgw œz(õ5ìKiᣠrÚx’H¿Ò˜žÉò ™\ú×á„p¯ˆ¿‰üA§ù6î¦{{Y÷;îï8UϯZö-Oá߇¥…¥ôú˜ÊÃÌœc'Œqë\¹Ž&.QQ½—mWõè]<º»NkVûîqš ò¼Amj¶Ó"^þ±”0u#`9äq]íÖŸy-±û=²ÈO÷ œ×5'ÃÝ^Úù.ì®mo"[¨§ùN F}GLÖ¾»Ü1äÊ1ÝAþ•Ë ð©¥9«ù¯ø(Êt±¯Î™Ìêþñ,N™w·=“?ʽö>Ó/´¯‡ZÅ®¡iqk'öôì«4e /“ÛƒÍyÔºî³e)jWJð—Èüzÿìã®jºï…u™5y–imu©mâa_݈a`:Ÿœó[´m>[y\ŠNOWó=>Š(¦uyûGÙCàÆ½hdHüϳüÎÁ@ÅÌG© võ¯¶(?y­Ø!ô#&5ö¯Ç«d»øK®@ñT¬,P1Û4mÔéé_(*Ä€ÑiÓýÐ&l~¢³“I‡<¢¬Ž^Oèæ¹ ŽûA?ú š¤–Z^)ŠõnQ‰M«€€F9%@¯H·ÐìL¶—;HFvýšB3ø“[Zo‚l®ÔËw¥Û¢î_/jBã–l÷ÏASÌsIœg‡µtýd2€A®ßÁlzŸ‡õwöˆ^Ý›fϸËód~#éM驘Ý/Q·°ÑmÒK±5ÆÒ±W #1u0ÿEð­Ì¾óHíüÍs~&±’MsFÑ¡¹X#kY&“µA'ì¸Ï½uÚEÕ¦§Ûiç\Ó·Æ¡xK3éŸz›–›Ks.âæþÞ'¹—ÃÖpÇËI0/ó®o\ñ<³l5!Óoú<$ç·šî|G6š|8n5m^dÒe&3,QWe#* ö®*<:÷P&¥6ªÒ¿”îO+,Ožýx¥pd¾ ‡íºö¯nnncùüÆhÛhrŽ}Îky4=NãQYiòÞ"³N`àqŒs޵Ùü;ðTš4ú¼Úµ½³}ªç|1«oÇ?á]ìh‘F0ˆ£¢ªà ÊU-¡¬cÜ‹L³·ÓôØ-m­Ò(ãAò¯ÿ­NdQÔbœ÷¤Æz¶=«Çy‚“Ìö¨n%‚Þ3$ó¤j9%Ø?: Þ аIÕ¬¿ïð¢Í¬¯ÐúsÅx8Òmµêþ'‰f“Wqí僂?3úW£x›ÄúTºUÝ…†¨Ÿl¸…âŠH×rÆÌ¸ OëXöÖ6gÂq£ëY$ŠÝœºÊ§{îÝž;Ói¤8µs–Ö.«§x]%‰ck}I-p½ÕðßÍM{hžubVF9=ëÂt;&Ô52 Å’+Äœ =@ÈÏášö™5HÎXSýé4–¥OF]7SîçŸÂ¼™fÓï•©àÙ¤Z+1 ïÿЪ ÞA+4z5|¹û{Ì—ÿoßûo_Q×Ï_¶'‡gñ ÿƒcV)oÛLÎHìøzœôe%vNSV4©+Éì|—¤é—Ú¥ÏÙìmÞg=Iè+»Ñ¾ÀdÕ®ÚFïéVž1Õµ-NÜAá»8VhãÉ ä¯+×8© UÝ/Áš$zRëáxï§¾"H¬ ë[DGÊ>vÁl`“Ï'Œ çú¥i|Lè\K–áâ½-,¶I+½mºÕuìx-êß›ûÍù׸ÿÂáÐõûÞhòjZØQ%ËB³gÆÐpx^ƒæß´[ø¾÷K´v{xö¼{ŽJ«(m¤÷ÆqšÎ®Tã{Üî˳ÚXêÞÉBQºæWê¯k£'ûÇó®gÄ:”OªAa+¶G 6NÐävÏ þ†¦ñƹý¥”…‡Û.X¿ÙÛðíï\)¹š \·˜^å³Î@Ç~¼WV…ß´—Èùž3ι#õOWñzvùõ=T%µþ‚@_ÍÆàzöÇù<{Ô q©én 6Fãž[n}³Ÿn¾Æ°ü¯Ac‹4¥’UdäOÞÃß½zf—%…å²Ü1ˆü¹ãïuê};õ¯Y»›-N+W×o®´Ë[i´i`‰‹K…mÄ’ryÇ·5ÆÏg<š”ŽðˆÔĸãšõ½vcjò~í¼¿U*xž•å~#Ô&i‘ˆãÿ*jÖŒ]FèÚO*E°:¹çÜßJÇ•÷€#^´\9‘›nqœþµÎÜŽ0J†î ç §$‚ d'‘Î:dö¢4;\Ÿ»Œš©#î< (éHÙ„ù.S†j¬¿|ÖŽÑý¿œ‹¾ßv³¥ûæ”Y¬¢“Vì6Š(«¢Š(Þ¿a¿ù+:§ý€¦ÿÑöõöe|gû ÿÉYÕ?ì7þ·¯³(æÚÀøYZYQ¸.!´uÇ›?5äÚm½ÅÅô‹Œî=†Os^ÓûLi3êtÙ+zTy+ËæÍÀôëÖ¸ûm>HaX¡¶òÐt+*Ø™ArÒ‹“ôØú,„g˜¿oˆ—%>åéÙyýÇYáOêžð]‡‡ô›;Xås&d.å‰%W€AÎzVn§ãj$›­vø©þäò×ò\V§ÂÍ+O¾ñ|VÝ‚\Û\DêªÌF Àð}tÖÒ´A®ë>#²k‹8.:Óy_;-òNI >„šógKWYÝ_ä}ªy>Q7B4}ä•´MÊîÚ6÷¾ûY,ÓJÅ¥šYõ.å‰üê:÷‹?‡Ú™ ´w>:½ÅÃfæUœ$vÙìªÌÑœ dàuªÀž"ÑàµÜ­ªÝX¹‘‹Ã½XmëÈ™ìÕ›ÀÔêÍaÅØµ»/M®•÷Ó~½úQšõ­ÀZU®‹§iº­²Iâ-_,7±?cŒ »mTqÏV t¡§è ïüAsàÛ}"àÞÛÆÛî÷6w.7a³ÔdvÆx©X)»]¤mSŠp±r䄤•Ûi+Y;9oµÏ4Y‚¨%‰À’O¥YÖ,ÿ³õ{Ë0IöiÞ-ãø¶±ý+¾ø7áÛw¹ÿ„§XÛ•¬›-CŽ$›ûØîùý+ tœçÈW0̨à°-­§öG}ðÃÂáÝ4ê£Q»îtþì‡|×A}¦½Ô/ÌI4n¥NyàŒG¡©òë¶Ik-ÄlÒ,j[©úW‰üMø±¬ýáÓ-VÒ.ŒÅÉsù` ÷!F6Q‰øŽ7SVXŠÏW«=À:~™§ |5=²4ÖoçÂïÏÚb' çû̇ä9Î0§½h|LÔíôÿê-4Šžd j߯ì0zõÏá_i¼G¡øöÛV—P2„ù|¹X˜Õ[®G¡ïíÏP*çÅω:¯‰&xÌ“) £; ›GtE…§9?JëX*“š„~e`«R“öÕç¤uK«ò_«èpRi³jŽ‘Ù(’Dy¶¨?yAÝÁúf¬ZÝßÉ©ÛhÓOý• “$2›LJHóÍt´H´YuwuD¶e ëûÍÉŸ§"·Ê,ž)_6."™bcÑ««ü§‚ZôqUJ+ªß­Ï*§Vw¨´»þ¿C×>xOÃÞ¶¸Õl-% °ï¹º‘Œ’2¯?€$Ž^+æˆZd–ZÒK¯”Ý¡dÛ¿{¶JŽÃ ¾‡_jrZ›b³M>âÕPÃQã ˜ÈÈêÚzv5zÏÄ>¿{!­x|M{,W­ É•RY‡¨çcø|†UNêU¼¹¯w¸úZõpXŠÚæMy4½·¹ò¦œ×24Ù$™-¦™IBHRsŒãú×ÒÞ Ð ðç„õ!¦„7w1„„ÉÊ–ÇÏ¿O­sÿô-Ä>0°×t¦¸8„e WqÆR1銦«¬\]Ç2Å|Ï-¶ØßË”Œp8úWÑbñQ¯F0¾ûüž«”ê7EÙ¥£ìÊ^ Óoá–úk˜Ÿl–À™sXžjƃâc@¼º“M½t ±…þxØû©âµ,.¼BÞDWzUåÜ2Ãó–·`Û€èN1ϽUÔtº·vš>£æÒ ØŽŸeÁksÉU1j\•¡{õ[|û¶…ñ#@½`×t1o9ŒIö›"@>§h Ì×s¶Ÿ©E»H×%Îò܉1ìC|Õó垃®,ÖŽúEòf#„Ç÷~µÒ;ÜCö}þdS$J8e yê:ô’Lô!ŠÆPWŒÚõÕ}Îèô-kB¿ÜÞ~™§ê)êŸ#þF»‚ÖV–>Ô×O’À˨¼’Æùåü¨†F{a@ãÒ¼Müu¯ér ûBÝÃŽRànÿǺ׶üñü$Þ¸¿6ßghïZ]û!#9Óæ©ú:+ž×•ôûášËýJqæþe£ÿ/Èîh¢Š“SÏhíN÷Fø3¯jZs*ÝCö}…”0¸‰OØšøå k>N³kú¿7÷M”,@ô#Ó¯ãPhGã6‘´[ø{Ųƽ"ŸLžEýW?‘«|/ãKå¹»ð_ˆRV”¼¦M:tÞI'%¶ôäÔ(ÊÎâi\ŸÄ·V1|HžoéãQÓôûO³KføH $CøÈ'8îô¬¯‡º…{¯é(m£†mJÚãïÞÑ1fÊ9ÚT;ñš—â—„> Mã«›í7Ã"¹¶!|†‡O—÷`€ªú湘¼'ñ2Þà\ÛxÅ\òD«¦LÆwÎiò; Ñø‰vVá4k[¹#{©…Æ«d‡0 ˜ÉO9?ë ù±Ø“í]/Áß˨x† æFû.žÞk·c'ð/õü+ ÀßüO.²eñ'‡<]m™%G™Ý|’¼}pkèýï¥é±YiÚEí¼2Ùbz–ÈÉ'Þ¢wJÅEkre .I¥ Ç$S›LÔÉÀ°»öÁ¿Â¦j`çì7¿÷å¿Â°åf·AÐóÓØæ™4QÜ@ð¹m¬0J±SùŽEEwaâ ]"i¬×ù)¬mboÙH#‹ÂW#ßr¸’С'ÐWA'ƒô—ÍšÞ[†Ïüµ›?^idð§‡\cû*žèÄúÖÚÄFR±øNý à¦ÌHý*šØüQÔä*4ý^ÜcœÛ4+úŠÑB¡<ÑgU…¼?náÆ—:Éóð®cân­¦YégA²%õÓ¢ùQ RªO|zð?·¥xÅÏuçjÉs*`’Å,Üý8Ð'„u(£)Ÿ—•#1é#?™Í' ud–©Oa¥ê–~)}»C4ÐÀþl w2“íÓë^‹gáìðË&› JPÉb2FOÕïø}IÒÆëtœH~À¸÷`3[m¥j}´ÛÀ?냅O,£±n\Ûœøðþ†M ?îU衊–(bFU@´‘ªù‡^ß–ÿ ˆèú©ÿ˜eïýøoðªjL•b®r94 ñVN«ÿ ÛßûðßáM:F®eïýøoð©äcº+ð{â¶|ñ5§ÌßÿгN“«ÿÐ.÷ÿÛü+cÁš~£ˆíe¸°ºŠ5ß—xY@ù¹PƒæBmXôjòߟóÿ¶ÿûN½J¼ããf›¨êÙ`°º»òüíþD,ûsåã8t?•z˜v•EsÔáéÆ9IÙkÿ¤³ÈèVd`êpÊAÐŽ•©ÿçˆèªà$ŸáGü#~!ÿ ©ÿ€’…z|ñî~˜ñ˜f¬ç½~6ñÍLj´Ø4øíšÖ†¸ù÷y¬:ÀsÏÿª¬Øø×K›D´Ó¼E .¦Ö@pÁÀÀÈ=ñ€zç+›ÿ„oÄ?ôÕðOð£þ¿ÿÐTÿÀI?²ä¥nSÊx¯Ù*JI$î­-nüïrhµØ¡ñ•§ˆm4Ëk$¶o–ÚÙB)LA8äO5¼]©ë^"µÕ!ŒÛA`ÊÖ‘îݵ³{’à1Iÿ߈èªà$ŸáGü#~!ÿ ©ÿ€’…r×ÁQ«X¾_Cª<ºcRñn+•{Ý>ÿ7©ÑIñSIyUo ÄÚâEå­ÁuÚ¿FÆìu㯽yw‰5™.n/uÍZp]É–gÇ@? Òº+¿xxt Q[ºý’LÒ¼ãâ†üy}rºu§‚¼O%¤Gt•9?`Þ@¯¶»¨©ÔzwF51^K†ž# g7¢W»ôÝÙu<Û^ÔæÕõIofãw™ûŠ:óÞµ¤×šŸ$„îHÚ8ÛìØúŽqíWô߆Þ:œ]‰üâXŠ[;Å»Jœq‚îu# {×Kàï xÅÚ×HÖ<â;Ku;b¼EÉxó/+ÉÉ^Gšô#Ê«Tiº“woVpÝX©YÀ¨=søÖ®â‹ë ÍÆ7»¾}¹ü zeçÃÁ=”ºã,hH–+¤…‡\© œûž1ŠÎo Ãc¨(›á/"rÛlm‘ÖG=¡uñ_ÄÅÙEµˆÛŽ~sÇçTÛá÷Ž ?ñFø‹ù…ÍÿÄÔs|<ñ»;‘à¿üÃò ›ÿ‰®Èàð«ì£®÷l}çÄß.ã²Ä`,ž¿møoÄúƯIx-™%¶¦Ò§8ãšÀ¸øyã†xŒ“ù…ÍïþÍu^ðW‹í´¿.O kÑ¿˜Ü6(8λ[Ç†ŠºHLj¯*kr=fBñ©ô&½ïöYÿ’ÿai?ôT5â×ÞñsBBø[]'9ãO—ÿ‰¯rýšôÍOJð5õ¾«§^XNÚœŽ±ÜÂÑ1_*!¸ã ŒûUÚövLçÁ){{µÐõ (¢¼óÚ (¢€ *+Ö™lçkuÝ0ŒcÕ±ÀüëÎînà“M•4_jRÙ¿öúk»[¾ A?¸}Ä€«·¿pé4Wœÿkê—kºk›¨<2{rŠì£Î‰£ »™€>‚»}^þêÈGömÿSßßexg×Í‘:ûg¥_¢¹Ï]Ä-ôçÕnn46V&íþÓä4m·*,mò çÀÏ<æI©Þ[Ëc>•~×6Im–7ŠÎÓ'ž¨ G8<9 ‘޹ÍvÔWš·õ‘k©Kö+Dû<Ê„³Áþ‹–#÷ªnAíÕÌ=zUùa’ [²ñf½{§Û\ÀºXeØ…‘edŒò¦uO¿œn»Žüw´WqâMRÖ%–H­®o#Yc1D²(¸dŸËÄi¹°Ä ó»<ã&·4[Ù®5 r<§ 3±ÈË,~›hÒ¨®>çÄZ²]¤Ö­ayb"‹)$™Þ7l«o!FTpA<õ©¼«Ý_Ç«]½Ý¾¬cd1‹•îÁ(¡Ü€Ùàå€Ï\tU•m¨jvWnt;í:xã&ºxÌlcÊ‘ûã®:×9¦kMžŸw{g¯ÝÝ\Çgæ^yòµÄpKÇ.ŒÃÊl“òƒä dwW¥ø³^½³·¹S¦…BÆã6ç2¨™Qvm™•2­»;œtõ®‹D{¨|E¨é³j+q@ðE ÌÀ6íÌÍŸ˜1Ðt  Ú+Ó%Õt­TñÚË;¨”Âͬ\\i0ɶ8À?+tdj¬~<ÖiCì–,.Ø0Olã·~ÔU[¾¥>€="ŠãuYµ)|lö—w x×£c‰f"f“ÜG§JËÄ·qKÄŒÓI§:[Üy&;rÒ&ä\ðNÕcÇJïè®_Ä­ªÜøRÀ2¿¸šÜKW’Ú ±“Í.£¶Fk?\×/<3§DÐ-Ĥíæ™îØ¡p¬òÈŽväœír8€;Š+€½ñ¦£•{t’i“I¨&Ã,À‰üÉQ ^>½1‚wÓTº¼ðÖ™y*­¼—’²´R«VnHdf0cÝ{ÐAEyô%Õ-n¯õK‹[¸¬/ÞÊK™ÀDwb«–£ çp^”í_Å—Ac³Ôtø-ä¸Û ƒqkµÛ!~bpÀƒÐh¿¢¸{^K©ÛéÍ-š,²y_f&Cs2³02ÆåøTÇ<‡•àWSáÛ‰n´KIç;¤hÆæþþ8Ýøã?_¢Š(¢Š(¢Šãþ!]Cm=«O« @#r6£%‘•ò0QÔbGy Šó­cÅŽ›5ÍÜ ÛW(Dì D OÖIQÆ7 çó¹‰Ö’[ˆ€=N ¡ð;ü¹ãŒÐ•Æx¥õFÕï4«»¨¤¸o`d¾Z°e𠈲:Çֲ߯7vðX^[\ÄÿÚ·-2Á<[Ù÷„ •6€£qÚ¯×$@EpÖ%Ô¢ûµÖ©¤™$šEv’ pÂržLaXáÔrxnÜ’4ü©M<–·ÓC$Ú7Üà¸o”ËGÐ¥QYÚÒËmp’3?“u,HìrYCsß? Ñ Š( Š( Š( Š( Š( Š( ±õ}jM>úH~Æ%†+O=˜K‡,_j"®0r{–ã¯mŠÇÔt¹ou‰d‰¬'²ò%"fYUƒd{õÜ p{g_øŸPÓSÉÔthÒöI"X#·¸’xÜ;ìÉe‹r‘ßä#‘‚sOÓ¼_k=³Ý^@Ö±o‘bAÏ4dØÊ’sÂçñç-ü;¿›w©jó‰#ešá£ ¡r ЏÏSŒžçL¸ðŤ‹ŠòöÞhK´3Fɾ6i ’7)’G Œèóx›L†ºw–KUHÜ=½´Ó¬ Ë*!Ú0:þx¨åÖ"·Óõ-^ 0ë¬ÄJFèÀ\ÉÓ¨SœwÛŒÕ}cÁZv«†òòþE*«(vŽO4*‘óoCÏ9ÈÁ¡±§évÖvsZ‚óG1&A.r¡Hà0(…ljm­õk›Y•ÚÜ(yË1,å ”UU9!vwçvO¶>,ÒîL†xKÌñ 6ò’¶ÝÒ|¿ºñóãž)ÂZzé°Ù›Öò¤3©¹1;pJàcáÍTŸÀzEÍÕ­ÝÜÓ]ÜÁ#He¹··•¤Ën çûO¿J¹qâ{FãNé㸊)D‚HFÇG¾2SÇøN=Åo×1qá‡Sì72\~þ ©u0 mʲ2ǵ2ܨá‰=>`+§ Š( Š( £H"IäWHvÏP:§'ó5%QEQEQEQEQEQEQEQEQEU}BÊÛP·]£Iur¡ÙA*r3‚23Øð{ÕŠ(¢Š(¨î`Šâ˹ Ç äއ T”PEPH¡Ñ‘³†ÌRCCE„*¨èè)ÔPEPEPEPEPEPEPÒYXÍw %bBħØ{šÆŸ^¾ŽYfTM§[J!¸ŸíX‘[€ÅcÛ†U'’YOñm^Óíúlö›¶ ßÝn þYÒøz9îŒò_^Å ®²ÜXÆëäI Ç$•Þ@È î94•iãV¸¸TcC ‰<É„èq¸@Oîq¸·lð;’q[øLžFŽÖ1’d‰·Å"¸‘”;~qFGÈ¡ü;dИŒ·LrÇ÷†q$‚CÛ®GÕ ~·Xݵ-IàÞ­ FU ©…õ9nœñ@¯‰4è•ÿ³­ny’´ñÍ ¶î…SÌbE‘ÈÀ“]n²F²!ʰQ\µ‚¬ôË9“O¹œÜI¸™$ .Éå—"4Q¾Ã$ ÷5ÓÛÄAŒ$jG €m¡7‚ïgïÄf0Ù?tœã:Š–Š(¢Š(¢Š(;h"·„E í@IÆsÉ9''©É5%PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP—~Õßò@|Kÿn¿úU |_ _´Ž•y­|×ôËG¹›ìû8QòÜÄÇ“ì |fŸ üZÀ‘mj1ÿO+YN½:nÓ’LÖ*TW„[GEvñü-ñl‡å‚Ïñ¹Z”|%ñ‘émfíé+?®aÿ}æŸSÄ#ûŽŠô(~xâ`JZYñëvŸãL›ááÆû+^}.Óüi}{ ¿åâûÅõJÿÈþ〢»ÓðÆ lí}o#ÿX¾xÖ@Å,ìÛo\^Gþ4}w ÿ?ÞŠú–#ùÜp4WY¨|<ñ5Žï´[[§iÅÊ}:Õ;Ïë–‹™à‰xÏúåð­9£ÜÇÙϱJж4ë¢2ï¡J4˳ü ÿ} |È=œûè«ãH½ÿžkÿ}Šš/êr’8ÉôÐRsŠêR£QíeQ[ÐøKY–o)"‡w¼Ê3Wô¯‡~'Ôæxm-­ÚDûÊ×(§õ5œ±£¼‘k ^[AýÇ%Ez |ñËÍä­¦þxûd~™õ¨Â)öpÀAºOñ¨úîù×ÞŠú–#ùÜp´W¡GðoÇr ®lGý}Çþ5^ãá? ÿ[cl?íî?ñ¥õÜ7üü_zÁ×aýÇ Eu2xÄ‘ç}´ ƒøø_ñ¨dð^½nh`Çýw_ñ«úÕç_yK‰òíýÌç+Ôeù/Þÿ·¯ý%š¸¿øE5`2VÜ}fZô_Ù{F½³øïáÙ¦ìOµd¬€ÿˬ¢­V§-š"XJðW”ùrWËŸ··üÉöýÿ¶õõ|ÇûuÙ]Þ‹[i§ÛöíÞZÆ~ÏŽ•¡Î|«Ei [=4›Óÿlü)G‡µãÓG¾ÿ¿ þ®‡ffQZŸðŽkÿô¿ÿ¿ þŸðk¹Çö=÷ýøoð¢è,ÌÊ+Oþíwþ€÷ß÷á¿ÂøGµïúßÿ߆ÿ .‚ÌÌ¢µ‡5óÿ0kÿüoð§ x„ÿÌPÿÀvÿ .‚ÌÉ¢µÿáñýµüoð¥ñ)é ê_ø ÿáEÐY˜ôVÈð§‰MSÿÀgÿ _øD¼QÿBö©ÿ€¯þ]™‹EmÿÂ#âŸúuOüð¥ÿ„CÅ_ô.ê¿ø ÿáEÐY˜tVçü!þ+ÿ¡sUÿÀWÿ ƒüV:øoV[Gÿ .‚Ìâ¶ÿáñWý º¯þ¿øQÿŠè^Õ?ðÿ‹ ³1(­¯øDüOÿBþ©ÿ€¯þŸð‰øŸþ…ýOÿŸü(º 3ŠÙ>ñ0ÿ˜¥ÿ€Íþ‡ÂÞ$óÔ¿ð¿Â‹ ³1è­øFk+¸\¤¶Ò£*r(ºsý†ÿä¬êŸö›ÿGÛ×Ù•ñ¯ì=§ÅSz2ÿÄŠ^£þ›Á_eSã?Û“þJΗÿ`(ô}Åx-{×íÉÿ%gKÿ°?ú>â¼€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ û3öÿ’MªØvoýo_×ÙŸ°ßü’mSþóè‹z÷ª(¢€9ï‰$ð]úþ_þŒZñÛ[ z×±|G;|~Oý3ÿÑ‹^Ok»×¥|¶vÚÄ/OÕŸM“«áŸ¯è†Ë§"ǤtTÚãMyœçœâª‹Ô|ÝkÅm³ÖP‘`^,7kì+ÖµÒÆaSÆk8ÖæA.ÞV®Ï,‚¥MVœRBåjDW ¤ •*0zU”·ºq” (FcŽæ°šæä\ì†=ëRòâXü?#±Ûû¶Ç¸5•5ï#e̬qZ¼mÊK+)nP2I=OæJã<_r³Jñªm‚>•èm6±ù¿+:—EÈ玿yn¼æK™X7Üšú,\×}l|›†Nzv'åsì¥FÁ_Ü÷Çó§JKëùÔÚw^áóòNàñ´Nµ.ÐFzJEf#ŸJEq»c|§ô¡‚DÖùÈ]ßCZ–'cn ѽ«: S†ÏCVàvòð¿ÞŒõ:iû¬ÝT7`“ÂsÜœ_æ+ú«%ô7ÑíI27Íí\…½Ô¶³¥Ü?0n­hÙË•¤ŒŸ*_˜{wé^}jwVg§FªRÐöý>ñnöNƒG‰q=;óëVnR§YÂüŽ7ãÓÔå¼z²Â°³m‘NTç¨?Ó·å]eÚùÑ(^¤äg¯¸ükÀ©YXôfµO£$MZˆª.xíXZ„’Þ¹u(­+K$eÙ•`xô©m­…£µ¯Ûzï5Ÿ*ZœÍ¨NÈó[N‹¹AÏ`ZäõµÂsÄñ“È 1šöë8Mîù€À Œôçß&¶û]¤p•ÏÍœW~\ÎÖ=orç}q]ŸìâOü.=þÑÿ¤ò× u…ø\ŠôOÙêübÐe (¸Èõï%{ÔR‰ãã¥zS¿gù^׉þÔXá²éëÿh×¶WŠþÔù‡Ã¼µí*õj;EŸˆòi@­$ËÚ¨GÕjÄQÉêŸp6u¤j[ÊŒðI‰¡è–÷ÖrÏsu{nžtì0[’p«ü#ÒnÅÆ·5 ë]4ö¶Ðœ´r¹ô'hª“Ê:-¼Kõ®uZæ®—sx¡ Å[3±Ã1Ú  žWâ?èzph­ŸûBq‘ˆNwéùfµFÌ¥ FkkI.®æXaA–f?çŸjó­ÇÓyÍ“$C2eË7áœù×?âoê:Üû®åýÒœÇ p‰ôϹæ¹é¤'šÞ72“EÝS[Õo².µ ‰G÷wá!ÅbÊÔé_5šÖ(ųۿbÓŸŠšŸ?ó—ÿGÁ_^×È?±_ü•MOþÀ’ÿèø+ëêÞ;|gûrÉYÒÿìþ¸¯ðöœuMQ,ù•˜àó…R¥{WíÉÿ%gKÿ°?ú>⼫á–?á3²"@sþãS“²li]ØéOtíÔ—wí9ØWv~˜¦ÅðâÞ[¤Q±XäÄÒ)p¿\c5Ùê1G¦Ý¬Ð1ÃZ.ÆœfŽí­Í³ÚÆŽO›/ï úçÒ°…ncJ”œË¿€<+ˆWL¸Õ/ãE@dq´–'°Àã·ZOü2±Ò¬>Õmq{/˜Áak$ð8ÝÛhÿÚØ»†í-¯‚äc÷XÿZ‚-3Ä—#³õ;!mfÊÑ¥ÆUd>§Þ´»1êszwÂNµø¶MZ9C@-J’xäTÖ&‘á/êzÍÕ Ôo¬â€<éP³~;p+Õ™©ü/¡kã/$Àй%dŽ7è>¾•Ó‘^½ä·*-¦ó‘BîV÷õ¢ì%|!§Q!½…ú1”.~¸­;hjß]_Œ®à!*˜§üKÖ Û¥Ä.Yw:¨ ¯Ö¹ý[Õd¶Ù™CÒNr¢–½ÊrºØ·â øZØ4zmþ¡$êØÄ¡qú ²~7öA½êeÛ¹aR ?aÝ^Œ4›÷?|ÔVzíý«ƒoq"†;J†àŠ«²Kgƒ/®m丒ÚäÇa¼¼d_zÓÑ|¦ê:­”Üݘ.iè}{RYj7N^ÒþHY£-"n$éŠí¼§Íy¨Ø\¤»\7œÿìÛõ©”˜õƒ~Óô›­RóSÕ’ÞÖ&‘ÿyN:òõ'Ƽ³FðæŸ¨;5ÂämÝ«×>?k¦ÛM°ðìaîí7wEáAúœŸø¯.ðª»M8‹æ%Éü+9Jj76£å©»kà ;¬Rj—~n>eGSÒªÞøGˆÏ¶þá6±‰sŸSÇ­tV6÷÷P$0i·3ªŒœvæº;­šÒmjÍ`žE ü#8É«™Ö¨º^ÎXç>|(ð׈ô¸¿¾Ôà¿·™ ºŠ6MªÀñŒ®pF t¿ð¡ü%Œÿië?÷ÜüM'ƒuEÒ~#> Õ-'%Làþ"½ZÜ+uVM\ãœm+Wÿ Â_ôÖï¸ÿøšl¿ü&±³ KXÈR~ü~Ÿî׬œTsÅ'û§ùSö’"ÈørE #(è öWì7ÿ$›Tÿ°ìßú"Þ¾6›ýkÿ¼}“û ÿÉ&Õ?ì;7þˆ·®¡õEP/ñU¶x RaÿL¿ôjW‘éwÉöc‡ZõŒ‡Z¡ôÇÿG%|ýoäÉ´[Šù|î7ÄGÓõgÕäpæÃ?ñ~ˆìÊÇ¡’ÕQ&^ÂáìFâ8«²Ü¦ãƒ€çp¯Ÿ”y[hôùd‹QCåGû±’zÔéûØ0p1Á¨à/ö}ꛇ·8«pÛ2FK¨ y¬•É}™˜¶0´ùw;’v‘ù•‘ã½^ßM´»†w*B¯aÇò­íkR‡FÓåžywª3ú ðŸë’jwòÏ3sòŽ»úõê`pδ®ö"½_e ­úëÚåÕåù“*¡pª…ÛëT®ÝÂ\d‘Œ×¥dEp²G6[;{VÆŽi~kÄ‘íŠúÓQI#ÊI¶Üî`ÝÚ:1ù[תdî?[º…Ú«[Ø$NÁÈRX\½å9î+šß£&¡7¹‹µÓœv4å*üV­îœûw¦1Õy”ñ•;Xj¸ÔRØÍÁÅêM4@—„ô#µZ~ä?uÇj¥€ÐÔö®¤íËoâCÊŸqJHÖ,Òµ- çÕº®q»ÿ¯ZúrÃæ"Æÿºü¬„çüñX°œ¬vç±þ•zÞGŠ`w#˜×ðõ®J±lî£$·::íô›õóC, ²rv·§Ò½C¿°nV$¯'Aâ+Ï´gµ¾…- ѳœŽ0I3ž?µ¥§ÿjh÷k ÆÄ‘œÔ‘¯#m:žÅ+r¾Ç­Ú4k9êTrjö£æGÏ'$æ±,µmJoÝ5™duIÇËô« ¶Ø—›õí^\âÔÒg* îûœ¯Žïï!‘¢‹å,8$WšK³Ìf¹•¤`~ó×¥xÊx/Z20€æ¼÷Q’$ÈPwçðÅ{8/v6GL•Õ‘Æß(5Ú~Ïa‡ÅÍ=?ÿ¢$®¦py¯HýŸ¶ÿÂÐÑŽ9>~=¿q%zT›Œâ¼Ñçc ¥Jo²‘õex¿í:¡‡yÿŸŸý¥^Ñ^%ûRH#>ÉÆ~Õÿ´k×­ð3ã©üHòAÝåV¢UìXþ›Âÿz­EtŸÞ®s­$jD¼ŸÂ­D꟥eEtŸßýjÔ7ˆ?Œ~u‹LÑXÖ‰Geˆ« ¶6„¬ØuÆ \‡R‰q—›Rìh¬_†Þe9ÙŸ§5v‘GÜþT"Õ îÀ¥ZW·ê\þU“çìZQî_ˆ¹çš¿jŽÄdƲ“[´&\cÚ©ÚxãDž ™ãº—e¾7æ2 g8ǯJžZ²Ú#¼#»;Ë%@ÉûdÕ“<(ÀUö$ ð¿øÃWÔ­æ˜ßÏ¥X¨>\0ÿ¬“Ós{úWŸÉ©_³ûT¬þ¥Îk®–[9«ÊV9§„]’¹öq*=2”ßZ ü­ gAÓçÜBŽ?vkåM Wñ=Ì¢ }næƒ9óÈÇåÍt xãQ†[Vñ8¹‰âetžîD@¸ç9Ç׊Îxe5ÍQñN¤}Ø…«Gga³ÀPÄôôÍ{'Ã9þÝá4Aö²´L;€~`?_Ò¼+JÕ-®@†B‹‘‚²¸õÕü7ñ%ß…®/¼à.­$ÎØÑ°vã)׸9C]XÚr7˺Ԋ9d¬zíäAw3É$ô®Å^=Ðt‡has¨\)ÁHÚ¿Wéùf¸|CÕué%‚Iü‹MÇñp¸ôcÕÿ=«Ïnn÷Z¸0ô$ÕävÕª–ÇIâßjÚë¼sLaµ,JÛÅÂèÇø¿äå—œTÜ žj³Ï“Ö½HBÇ åridæ«ÈÄÔm'=i¬Ù­’1lkš‰Û¬Üðj'>µ¢D3Ü¿b“ŸŠºŸý€åÿÑðWØñïìNsñ[Sÿ°¿ú> û ´B>3ý¹?ä¬éö‡ÿGÜW˜ü#€ÜøòÆfI±õò˜×§~ÜŸòVt¿ûCÿ£î+Ï~ÿÉSÑþ²ÿ覥?…;3Ñ5)š[h÷'Ýn¤r*“E )b¿6:Ž w¾=ÐlbÓfÔ VŽ`À²ƒòœžxí^ytIŒ(<šòÞŒôã%4jè%´Eb¹dRsŒæµµk›U Gš5®Óògp®êij+Ž)¢ïP‰så”v&´ŒçÜ™BަóMž]¬Ú”¸PT{ÛéXóèÄzµÒ€w( ÐúJÏù*©?ãJ|Ci2äL{UÏ2i3.çÃ÷Q^5Ô”þ'~îMe_ZkHŽpêÀ)Rç;WKý©nljU¿¯wwnùËi{I¢ý”ÊiëöKó6£ ÜFÜ}k¥{½ 4)VÊÝ ¹||Û³¸wÍdj-r[9=+úìãj+ª ³–¤ ¶!¾A-ÉÀì*핔ᢟË,ªAÅ7D€HÆFýk~6Û҉ϗ@§MHf›4¦‰í6ÈϹ\ŒW³|/±Ž;9®Õyì0[¨r>•äИÚ@Ïzô¯‰ÄÍK I-Þ1.ò6#‚Mc*®é©(žkñcRûwŽîîÙ‹DÀE²'Ê?Çñ®¯à÷ëۉ?¶õÃ5¦ Ì0t’|u :úšuæ§Çã­;ÇhÏÚ2ÇnK8åA„×±ZÜË,Π >^,ÿ€|ÉôaÈüj§++s8ì_Ò¬,4ÛyÊ´Š#¶Gæ8îMs?"¢Çsmq òçåß *¸=}y¶.5->Gk0ÉöˆvȨ~á2}qü«Ÿøƒ¨ÇiáMNâ%2$6ªáHã*ñÑìTÔ”™ä>#Õ™â="ûÍ,ÖïæoPÜ~uïúUä7‰!ð²ÿüô¹L‘Î9«¦ÿî«®vðG¥Mw¡\Ä€ñ/²jk­-%…¤EØì  ê8äû÷¯ 3ÛŒ"ÍÝî9ãVŽi7ðUs‚=¸íI­ë¢Ô>AwQƒž€ÖVšZÕI2'ûª:U=vÈêd*îTÎNZºTÕõ؉R„eÍ#Ï¡zŠç5=qï'ªU;ç­:;³7ï‰!Øí Õ˜£e ñó.0Óü+Ê£B)Þ[Š¥iËX†¥dóiîÉ’ÄgŠó=Nr’:ÉTò zÖ“{`¤¬+…&¼ÿÇcê:㵜gi1©õ®¼4Ôj5=ŽÊu}¥+ÇsŠíœ+Ô¿g[3âÆ†¹ÿŸŒà<•çWþ½¶yS]—ìÚeO R+/ü|õôí-{Ý:’‹‹êyØžxRŸ:Ý?Èû2¼ö¸r§Ã=~×ÿ´kÞ«À¿kÆ[ÂÂIQ3ö¼n8Ïúšõ'ðŸ#ÏŽFþõX‰óÞ …u$ÔñùgXcëšæm¢ÔmïSÆ~µ Xõ«)·œH8ëÈ⤡f¸ŽÚ4òãKUQ«Fm¸NÎG$};W3âk‹›ù…YáCò€r?¹`ÞU¬hÙ(ºéÐV¼Žj•쎂Úü¦÷–g\‚wJ®|Crì´á_X~¼ô®TÖ¢´>DeZb9Éá~¾õ‘Ú5G’Ò²ßËè¾çúV܈˞…¦øµI0 ᾓ¾ví_Ç©¨¯u ]’çLµ¸‘‰,6çõä÷¯8Õ´­#NH¸šæç¿E õÇòªö6Ò `\à äŸlVjŒo{ê½®w·¯†•þÌ…ì…þu-–—¦êyÑZÝ[DÃ!Œ™ÏКÊÒü7k•5îé¦VݳqÙìï]œsÐ¥W%¶5÷3îü5áì57Ýž’Æ8üEQºÐ…Xçdo”‘øÕøe“g˜ìqÚ»-áñû:ËrÁÜõPzVÓü:‚á ’%QÚ›”nO$ºQspòHzÕ}ŽÏÈ8ÏZô=GÃ6–vï±2SŒšÁ»Ò|ÈX&±iƲ{ì\w3í.VÞŽ$ÉMZ‚k™_å{Ödv—q¹=Üö³¦[ÜÈWäڽɢ}ʃèvß ¼*šÎ¬$Ô3$0ì àA^ãäAkh±@‹(¸U{Wð‚ÔãÏ9Ë&ÇPRøéâgÒt%Ó-–æÿ ²œA÷Ôð*b¹Œª½N'â7Š?²¼_k>žÖ×sXÊÇó §øO¿'ÜWIiã#­ø~9¬V{BÇ÷ÂVáõÃwüð™>f=‰5齄i¶Ì#UhÀÜxvü謭E'-NÎËSW)%Üs%”cäŽ.CØŸ\ž‚ºx¬eÖ|1¨iw€g¶xÀ8Ý÷9úâ¸äóE"\F¼€Ä¸Ž¼Wgá[‡Ó4››™ Ê$ËÝ“æ2ÿì àW477¯ð4Þ[5¬×6†2%VÚàŒ#¨Ç­o|.¶ó|o¥»1T‚C4‡8ùPúð?ë.4H×Å7‹â‹s겎ñîÖRÇ žŠNx©tO ^xk\Ô’WˆÀÑùpK ûê[×¶@Û)û§,4’=ïZ¶0¤r»,I“#m$nëÎ;g½!ÓŽ›"Û”›‹ %˜ŽõÉBédJi×- Ó¯ipxØõ¨¦ÜiðΗ6ïiv å£Ç#ð᫉hοcYž7úÖÿx×Ù_°ßü’mSþóè‹zøÖOõõ5öWì7ÿ$›Tÿ°ìßú"Þ½SÏ=êŠ(  ˆQ™|!zŠ$ÇŒÿ×E¯!ÓìÌ(Vì¬Ò3=«Øüqÿ"µæ}ÿCZñûù|„É¡¯“ÏÞþêüÙõü>äðò‚ïú!—n¨»a^Þ³±X#ÝþÓ žîæKŒ„!öëY·6òI•Ëþb¼ªqî}]<«]É´‰iXHûŸ8Ú;VêE‡Q»¯jäah¬7Ü+í#€GSXÚ·Œ/´âd+³}ÐO WG°u]¢a‹§¹æìzœ+,RoÆS=«3Çgöž4q bÈGJà´ï‰Í4>\Ö’†Q–u €+{Iø‡¦\Ø9šo/øø¥%j2æ¶Ç—í)ÔÙîxî‰oq¥xžÞ)£m¼¥¥Vc¿éVÙ~ϫφ[;§K¸}¬§ÝCÞ¯ë×jzµæ¥l y«äÄOsô³4K¨­¡¹Óîˆ6Ó£˜XÿË7Á‡±èJúÍËÞ{žUJ<±Im{Z»#ûU³&èÈïX^ÔPÓ3:’Aߎ‡ñ­PÝfÓ‹°””•ж%À2°ûÄs^…l`:Zã#…çd“H…¤X`73`WaáûdI¤¶¹š9ò 0ùøê=h¬Ý‘Tm©y-ñ‘·+ë\oŽWÊ‚ŒkЦQ`W ñi´8®X|hÚNñg’Ëþµ½éÖRí-ó±Ž>”ë‘ûÒïKC•ë×½†×)çÆ<®å¨-$†ì;/*r=Ækµ²…H˜|­°g®:ËùRi1j¾h‰ õäãµK`©/Øå‰› g=AÿõבZ·´~‡«F•´[=NÂÎ<àõßçò¤Ö""æ\0çVt¤ b¤‡F:zƒÁ…Kp¨DS̉ÁVÇbZó%[•ž¬0påk©†‘¢ÄŤ%Õ°¨_R}*Ý£D²åf¥·¶ŒHÙe`~`jµÛˆy^yíXÎN¡œ)“²A¬¬rD>QÍhü±>*h÷  :ùÿú"AXWo$ª1éÒº‚ìãↄc>wþˆ’ºp^Ú >«ó#—Õª…þGÒÕóíà®ÇÁ…X }»¯ý»×Óõóí׌ø7?ôýÿ¶õöÏcó³æ%7`\0Ï\1ÿ=ªÄ7W‘8uºmà`0<ÔaAä΀¤W¥E€Ð}cT’ˆßʨØÈSŒàb£[«¦Øw;(aºª1‘´48bžðy¯€£p_ïJjÙrMZ;5C>íÏÎf­Gâ+³»¬ß:©!Iô¬¿é“HEͺnU*½@ö®sϽt]£5ÑvK—šF•ßs1$ŸS]D+s¢iFrc”Þ.zÃúW?*±%Ýܱˆ¥¸•Ð…fÈŽ`q&3»9vvfc’Os]—‚ìXZÿhËòdE‘Ñ{ŸÆ¸-íë]5Œ&·‚8ZÂ"‘¨QµÈà W èÜ}*–¹wygl¤“LÝd ¹PÔcëX6Þ5³$ ­'Ô© þ¿¦ê¶š„^m¤Ë xt+õ-•cŽž×W¼·ÙnK1É,¤“õ5§¦ø{P¸ºS4 m6ç=‡Ð*ër?½ÿ|“NP‚IþÏæ¨”¸Wi?ãRêvòËŸ`|¸öEo ¯:{&½ð”·Radiä»®O?˜®§ÆwF/ Þ`òê#‰¸‰oç›DƒOV+/>ã©f»–Ñ…nA‘2qó Ýç=x®uI?•nÂûÑ\tašÒd¢S’=i§=1A'Ö“xõ#8£<õ¦yƒqïH[žEØÅ0ç)™$ð šb¹íß±†áijYÇü%ÿÑðW×Uò'ì\Iø§©gþ€’ÿèø+ëºcGÆ·'ü•/þÀPÿèûŠã?f®~3è_Y¿ôK×gûrÉYÒÿìþ¸®#öt”[ü^Ñçn‘¥ÃŸÂ?Ò“Øg²|H¹:¯ŠîØ0ò¢>DgÙzþ¹¯=¹Ô—w¾ÿ­K¢C5õÒàNíŠ1VLëôk‰=x>µ¾³±”qÁ¬Ètï³@’)$ iÇû`Hâ’½ÄÑÅx€‘Ùîk–rí]†¹ ´n#5ÂꛣŸ8Åkg=Ë"2îU½jK"ǫ̀8ɪ¶æt³1ÀrMzƒ#Ó>Ýê—8{æÚÄcýP8nìɵ{ÀÖéI`n9UŽŽ3ô®öƒ±‘µM6ñ±åùMOLç5‰s¨Ë Éý⪠ÏÖ­ßjM®è¿Ùšƒ»B~hÎrÑŸQš¸K•jc:wzmaçË+÷ݰ¾•ÒOiö{d·„Œg×Þ®èz–3;‹•»m‹ £¾EkÛ[!sî)Uª›².++³;Ãwš£M°»Áf>•×Éâ-'Cö@Ë´(ÈGP~§œÕË-ÅIçÒªÜhs¬­p‰\.ìô¬¬÷DÔjZ3­Ñç´¾/Š’FÃ%XeH÷«~ ÐåÔÒ1nahÑHòØ‘ž¿ãXZ-glŠGÏ´gükF}VkHYã$8­Sv1å<úñ¯¬5,5kqq¤Œ©¿ïF=›®9Íjh:Žy¨¦”.È:ÆýXÐóÒ¹ÏÜÉy­\jrùë‘'ʃ* ¨Ý»Ô-M•ÓÜØÞÆd…Ÿ†1HàŒA®.òâ+KY.gm±Æ»˜ÿJÂpœ%Ê÷=\5l+±K‘÷]·¿¡²°¶Žw·¶¶·e‰™cYÉ2\CÇB;V4W·šŒrÉ!(“ɸ¨ô*ýýsVtýñ°\ñ[ªN???Ìó xÊ×¥EmÐÍšû{Gqu)ùw¶A±Wá‚2ýª< Ç9QìIâ¶àÓ-oÈY€?κ Âú{e‘º‚ç5Sª’9¨¸%©GÃ0;X ¦šéòrV \Þ²|svBˆº·a]Ö·sc§A… “Â/s^e­7Ÿrò±,[®k–2æÇV¢KC\±ùÁÍI*± òœf‹·XŠŒœ­Vó÷0qØâ»T[<ùOÚ_‚µ&€ÜÂåϯOð©´Û«%¾r<Á":dò®[KwŽì Ÿ¥u: s¨ †ß¹yÏ=ÇÐ⸫Â0r—sÜÀ)8EuLô{ÊŽÃÆ6÷ô5vòŒäªœœzÖ_„îQõkËL€Ø Ïnâ·o”Lû$'¨8¯¢jV=YI¹h`Ü´Q/ÉÖ±÷Ÿ4–õ­íBÅbrX•ÜGW/}w9P»Ñò­ÙwtLsÂû×Kð€(ø›¤àç>v?ïËל\ß1ÊÄø5Óü¾¸“âæ£ƒçóÿnòW¡Ã¿my¯ÌäÇÝaê[³ü«+æ/Û³9ðn?éûÿmëéÚùƒöð8> ÿ·ïý·¯±gçÇÍHv¨ Š‘I dŠ«¨©ÎyÏJ›¯\Q—(ÛƒŽAâ•OP@Å4-Á¯ÞB»X$ÀwqÏéM¿Ö"º´(lÑfÉ=®Ì3©^{g‘ôëùÕ5ñ6šßœý#"«]øº8Ô‹K•½]‚ñ¬¬Š¸ÿˆw{4xí׬ÓÉF¸ù§ k± VÀgS¿¾Õîc{¥ ©Ñ@ÂD±«™C~–€Ì¨Œ^[, ‚(G¯¡«}Ó+$L7&p=G5dÚBãîô¨šÀ‘õäUÝ2M{Ð#°¨­„±©YŸ§µK“ÐŒþ5 dÁÆáFØñÎOlcžj&b=½0hŒE&£cê*F|ýïÖ¡‘°zΚG·þÅ„Šº˜ô—ÿGÁ__WÇß±Knø¯©óÿ09ô|ö PÑñŸíÉÿ%gKÿ°?ú>â¼Çá=ߨ|eÞqåÙÝãêmäù×§~ÜŸòVt¿ûCÿ£î+Äô;Õ°¿ûCnÇ–éÇûJGõ¥%tRÜúIŽ(´«C½âO!2éö(ä/ñjÂøŒò¿õ‡y§™€„—š·î—ªŽ•‘gñ7BŠÊ6jQ¼q…ß.A¨æ²ücãÍTñΡ«Ù¶£%•Ìhƒí* £j(çŸPJâ9%±ÔêE½ÍØJ¤¢«Ë áXçùÖ-Ó"—vË’?ÜãRiAËîïþ4¥JO¡¬*Áu7ì4C;n˜ð9Ç­t6QEd€ £¯µq1øóMLŽìè£üjÂüAÒ !á»*à 6ñ¨tfú*ðîztZæŸ=Œm8ÈéLª¥”« ñ;¿iërÓXI{';JŒ:»Ž û%Žrþ  Öa>Ãöôú³µÕ/£[yo¸®WRHn pæ±î|Sm1ÉIÿ!RøÄš<:Í´Ú¢]HÜ;¬h ltjãJK¡•JÐèz·€< 4Ëxu;ôÍÔƒ1ÆßÀCõ®çS_ë0Ž«¸ü0kÎõŒžžå+mL"ムÿñTöøÉáFÓ¯mM¶©ûøÝGîW+Ž~jÛÙÉ#‰ÏšWg 2î$¸Îj(æX[ð:VU׉ì¤ÿWÿˆãYÏ­BͲcè+%J]QÕí#Üìíîˆel~5·az7£J›À={ל[x‚† ËøZö^0Ó"_ÞErO²ñ¤è˰ý¬{žñàûË-^P›‘%Œec'–íÇÐ:é.´ØVÞFUÁÚ_8Úx÷Mµ¸Ià[ØäC¹YTdνÓã§…ßOU¼³ÔÅÁ\>È”©>£æ­!õG-D·Lî5-%•Ä0åXz…£AnÓΉÌkoŽ~xö ]WÜù)ÿÅVŒ~/躖‹&Ÿ¥Ç{š6»Içiÿ_#ìJ“1ïõßí{íFÒÛ`¸Œ8'¾¯¬ÚÛÛZ¨žÚ5FÎýÀr[¹ý+”_hÐéÖ¶Cp J|ÆòÀÜÄõëSEã-0Aå´w=EãYT§6ôGU9×]ÎNdo©¯²¿a¿ù$Ú§ý‡fÿÑõñ£±>õö_ì7ÿ$›Tÿ°ìßú"Þ»N3Þ¨¢Šå~-(o‡ú˜`ý×þº¥x(P:>•ïÿä@Ô¿í—þJð_Àס„K•³ô^vÁKüOòˆœŠô]'ÇðiÞŠÂ!!Õ¡ŒÃ)ò(ÏŸaÛÔWþ“ZÞpŒísÜÇ`hccÕÙ;ÿ^GwàOéözÖ‹¬\^Ú¬²´©wlNð[äŽAÈÎyÎNk/ÇZÝ¥ì0Ù蚎µ2Fë#Í{vî®Êr¸BqԟʹŒ}hÇÖ²ž”þ#š>8—ˆ[½m}/ýyÇÄÿˆjžKÒVt7j>Ý!M»WÆ=rzž˜úÒCâ¿x‡Ãz]§‹c»ŽçLPĬVL(SÊö ƒŠâ1íTî¬Ceá[û½y˜¼X·R“¿“*–IÒ‹qqm©'­Þ›úhküHñ_ü%Z¼R[ÀÖö±ùVѶ7`õcŽ„àqØ^ñÄÏ-ÿöm“+Aýãuÿà?žk§øƒ®M0Dvß\±Žè;·ôÿJñòI9=kÎÂÑs“«SsÃâ\Æž „r̲[þvùîÍØ|U©ÅÆ‹m…»ÿëӗź²œmŸúçÿ׬ +¿ÙAô>ÛT]Nš?kq¶äû(?õËÿ¯WâW‰Ô‚%µÓþ½q´T<='¼Q_Y«üÌêî<â ä/+Z»æ/þ½T—Åú¼‡,-¿ï×ÿ^¹ú(XzKh¡}b«ûLÓ»Öï®Wy@g?*☺½Ú¦ÑåãÝk>Š¿g¬%Z¢wLØ‹ÄzŒJˆ89ÇÈ«ÚwŽ5Ë nm#1gú×3ECÃÒ–ñF±Çbc´ßÞv±|Lñ,Z¢jQ‹¸U+‘oÃê3Väø»âç9c§çþ½¿úõçôT<ý…÷ý£Š½ý£ûÎæŠ~*™X3Ù`p ÿëÖUÏu«‡/!¶É눱\ÝGB;A}ÀóSÞ£ûÍåñf¬§ Áÿ~ëÒ¿f?ê‡ÇOÛÜy;í9ژ⼽ëöäÿ’³¥ÿØ ýq^ @Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@}™û ÿÉ&Õ?ì;7þˆ·¯ŒëìÏØoþI6©ÿaÙ¿ôE½{ÕQ@µ; RÆKJÊÚöÒ\y\D²Fø Œ«ê+þ/ЗáÏüÃÿÄ×GERkcœÿ„ Àßô%øsÿpÿñ4Âàoúü9ÿ‚¸øšèë7Äój6Ú%ÍÖ—=¬3ÁK››v•X*’W èA8ëŸÀÑqó˹ÿ¿èKðçþ áÿâhÿ„ Àßô%øsÿpÿñ4—~"}ÓMáŽê{Ùy¶«¥ˆ <¹&.~ðû»| KZùBH#‘7í&TÿT¬î¬§ïê:u¢áÏ.ã¿áð7ý ~ÿÁ\?üMðxþ„¿à®þ&¤µñЇáoüAÿÄV¼þ Ðmõ1¥Ï­é‘_– -^éROA°œääcŠÁ×¼I¨XxœÙG$+iÙ÷«i“ɸHÄ17 Þ\XÞ΀'ÿ…qðóþ„? à¢þ"øW?èCð·þ ÿâ)ãÆVM¨^iÑØ^Kym" ‚)mÝ¥,[Ĥ/Ýc‡Øp)š‡ˆ/ÓÁ¶z¼"8.ndNl¥¹Ø°ucŽÀÐÿ ãáçý~ÿÁDüEð®>ЇáoüAÿÄU}3Å× æÙ®æq",VÖͲȲmË•‡—•ùˆsÇ­^0Óøsi|¶ÊžàÆ»-ä þíÆíÛ¸ÇÊéÏ4ü+‡Ÿô!ø[ÿñ¸øyÿB…¿ðQÿW4ræú-NgÓ.-þÈÅ›® {¹!Êóۑ‹Ášæ¡«FcÔtö·•m¡œÈª1ÚHä`ÔóúPð®>ЇáoüAÿÄQÿ ãáçý~ÿÁDüE[×µæÓux4õXËÜØK€ûÕAb: ÝϹrER—ÇZ4æ˜ìÓÞYÆÆE…âÝ#(•có7¯üèM;þÇÃÏúü-ÿ‚ˆ?øŠ?á\|<ÿ¡Âßø(ƒÿˆ¢óÅÄ[²é7Âä8YÒUŒ‹oÞ„Ëí~rs…½O!ñ\fQ³N¿3r[À#̸`ûr§ÌÀ7ÞÛМôÈð®>ЇáoüAÿÄQÿ ãáçý~ÿÁDüE[Ó¼D—^!m$Á*JÖñÜ$l›d;Œ€ž0p09ÉôäoP-ÿ ãáçý~ÿÁDüE[Ò|àÝ#P‹PÒ¼% X^EŸ.âÛN†) ©Ã*‚2 BkzŠ+/_ð燼Aäÿoh:^­ö}ÞOÛm#ŸËÝÛwƒŒíÇ\JÔ¢€9oøW?èCð·þ ÿâ(ÿ…qðóþ„? à¢þ"ºš†õ§[9ÚÔ!œFÆ0à•ÝŽ3ŽÙ sþÇÃÏúü-ÿ‚ˆ?øŠ?á\|<ÿ¡Âßø(ƒÿˆªâû×pÐAmäÜÛ ´,&äùySÏ+ûÕà`ü­Íjé¾"kJßO:m뙕Ø]*ı¤ŽWÍ.¼Œd® ý*ÿ¸øyÿB…¿ðQÿGü+‡Ÿô!ø[ÿñfï^•F^}H{ç· ¿ð®>ЇáoüAÿÄQÿ ãáçý~ÿÁDüEYÿ„ˆÚH–Úœí*ª‹™íÕ|ˆ¥a•–ÜIŽFHÎ+KMÕ-¯–V‰dA#±pÇCÍb¸øyÿB…¿ðQÿGü+‡Ÿô!ø[ÿñ[ÃÞ:´Ôíɿ™nmàÓåGvGÉ@Û˜*¾‰Œb­Ëã;žÂms_Ä^w‡ €Ç?3Ì?tòzoü+‡Ÿô!ø[ÿñ¸øyÿB…¿ðQÿVô_C¨ß%²¼BÉ•¹tEŠF ¬Á@rÇF:òjµŸˆu)ЇáoüAÿÄQÿ ãáçý~ÿÁDüEohÚ®­¥ÛêVNÞtÜŒ?¨$} n€1´? øWA»kÍÃZ6—rñ˜Úk;¡vBA*YT2ǰ­š(  msÂ~×®Öó\ðÖª\¤b5šòÆ)PB†e$ ’qîk?þÇÃÏúü-ÿ‚ˆ?øŠêh [þÇÃÏúü-ÿ‚ˆ?øŠ?á\|<ÿ¡Âßø(ƒÿˆ§ø£XÔ¬õË->ÆxàY¢gfm"âô“¹@ºeòÇ=[Š­©ø÷L¶½¿ÓmbkÍBÍOîRxA‘—”)}ëŒç,=‰  ¿á\|<ÿ¡Âßø(ƒÿˆ£þÇÃÏúü-ÿ‚ˆ?øŠ”ø®+qxÚŽwjM,Q±(Þo–ð0Çæ œéVüA«Ë¥›YŒKäL²† >q Œº9ÚÃëŠÏÿ…qðóþ„? à¢þ"øW?èCð·þ ÿâ* ?ÞGm,š¬ ö07Û–Hñ/šQv™dU B3|ÍÜsW´ïXßIiäY_.R&ûF#1ÆeÎÅb’IÊ‚:sƒšƒþÇÃÏúü-ÿ‚ˆ?øŠ?á\|<ÿ¡Âßø(ƒÿˆ­yüA ÛêcKŸ[Ó"¿,Z½Ò,¤žƒa9ÉÈÇOS›_OÙÚÚ_é‘ÙNŽå%±w”Ù¸o(çqÁÛÇ¡  Ÿð®>ЇáoüAÿÄQÿ ãáçý~ÿÁDüE>ïÆVV©k-ÆŸy77&Þ'ym×qÜpS(f? àñŒgCF× ÔîÞÝ,ï-ÈVhÞeP³*¶Æ+µ‰àÿx£  ÏøW?èCð·þ ÿâ(ÿ…qðóþ„? à¢þ"–kWQoª\-“iw2X#„ñ/;\¹l6p2»WêqɬøçEÒaŽ[¿1<Í›CÉy ó™GŽ3“ØOøW?èCð·þ ÿâ(ÿ…qðóþ„? à¢þ"£ÿ…ƒáö½º´ÞâH"2ŠH‹K€ UMûÁÁêÊ ö&µ“[Y4HYÏ—ŒÛÏ·x¡IVeäãOZÍÿ…qðóþ„? à¢þ"øW?èCð·þ ÿâ*KWZCq~‡OûœÞL°˜ŸÍ—u}Ø^I•làr3Æe¯ŠµÉ'V¸°¶Û.ef0#•Xå¢ñ?'<“ŒÖ€/ÿ¸øyÿB…¿ðQÿGü+‡Ÿô!ø[ÿñn/%Â,‘Ù^ÁOE,°©K…f#rü?‹pvj Åk7ñ[ÙÀcáàœI$RV=ã ²úwϰ ÿá\|<ÿ¡Âßø(ƒÿˆ£þÇÃÏúü-ÿ‚ˆ?øŠu߈/àYm<¨?´P0å±O'o›æcvÕñת ¼m]ÄÖÓ%‚Àï-Ûª";(\ª|ÿ.°w`z4/ü+‡Ÿô!ø[ÿñ¸øyÿB…¿ðQÿKeã*öÖ;›K{«ˆ¹7 E"Ú¨m»•Ê‘Ÿîè}+sI»k¸%óVXfxd Ó*x?ˆÁüh þÇÃÏúü-ÿ‚ˆ?øŠÚÐôMA´k=I°ÒížC#Cgl£9* pϰ«ôPEPEPQÜÁÍ´¶Ó®ø¥B޹#*F⤢€2õJÔ.!žê á@‰¶y 0V°FFsƒÒ¡Ó¼9g7kv‘\Éwx×sŒ¢—à—'€“““ßµEeéš•§:=­¼Ñ‹+É<’0ÊíÆ]‰ÀÐv}¡i··ë{qÆQÁ.dHäÇMè¬ñþÐ5¥EdÃὑsЬ¡æpÛÛïMþ°õïö*ht]6…¡£0Ëæ¦Ù\a¶lçžFÐg­ (¬][HÑ_RR¾ûHšGŽ «u2Å#ò‰[crz²šÚ¬Ï[_\ÙBtèí¥¸†æ9•.&h‘‚¶H,ªÄß&€+'„ô$Y-®Ì9Ü/& œî~PNã8êjÔú›6’b™-!*c\É¡SC«sZ·†õÍ[ÄVz½Å¾lÐG‚bpòr¬¥7˜C•ù²eŠ÷©4ßgÏ ÍœtSÄà«…= ¾Ç9 &ŽøÉæ€6›Ã+[,ÞbIö©|ÐKnÝænß»#ïg>ô/…ô5š)E‘ýÒ ç?–Àdݵۓó0'žµÏxWÁw67K¨Á¥˜–ìÝyªìü½ ¨X£\†³·>䌞ê€3ô­OÓ!šHå 9̆Iä•›Œ]‰ÀØS­ô›y$±‘qagp6Ç÷3ƒ×ñнEVº°³º‘Þâ¼-n' É\tªKáÝ)^f u¶dÙ$fòctçam»¸ld÷5­EdÝøsGºfšÚMâC!Ùq"bÛ¾`¬ à €zRÜø{H¸…b’ÙÀ@B4sÈŽ™mùVV §<äþ«Eg[hz]´Ðͯ—$Dl$l€¨yàœç¯S“Z4Q@Q@Q@e/ˆt³ª¶™¾èN²ùE”ÂøÎß4¯—žG½«V¹Øü/n×·÷·/;Ï<ï$Kö¹Œ)” ‹w—¸c®ÜûЉtÚGe–éÚÜ=ݲ™+&™‡9<prp*;MB´—þ cw1y¥–ò-“äÅ»iá‰å{úÖ=¯…õ7žÚêþÛIià;l¬þZýŸÊܬcq `pzñÍý7@:6ªÚÛÁ¬öÃlvê~i!Xã–aœõ=èÚ†©á†_2ïíé±E3Ÿ³O˜Ð£É…Ì89!›oOjŠú/ M/ØdŽìÉË ›qrs™@WOL’H<ƒ€qDvšÄ–¾v•¡‡Qµ%ûo› ¶ä&ÜìØKqü ³‘מ ‡ÁVÐÜ,±ÚiåÒêI–Sßó[ˆÁ'oÞÜ2hWûAŽÈ7Ø$ò|­¡A”°RÆÜîèÄc…Ht½NÕ?µLrGs<ÛUŒÒ2ï~%W¦¸«jvúH·š 6ô‰Y­Äëäd®ÃÊ·@$žT“Ÿ¾5Òx~Ús³nævc(…ež&O4¬¡q¸r ÈÈ=³@žžñ÷ö¬6—í"*××6ÑÉv¶É¤„pØ$g¨«vº‘§ióØÃÇ‘wˆ¥iefmq%”ÇPôªøv}?Ãö¶ºk¼÷pK¥ou ä™1÷”qj¡ƒîþÎI,ã¾Ù -Äy-RŶ’3Ô‚| ô  Ÿøv-ZÖ1o(³º…BÃ0…PAÆÑ»u õÁ ŧøCG¶ŠØË³Ï H†O>EV*1»`m¹Á#8Î8ÍbAáMbÚ;Åi£Z»O³E<‚&F—>^w’A#ãïÍixsÃ׺oŠ.õŽÍ-çQ™Yd–G@9ò••FÊ]ÇL  zsè6úÚi–Ö·±^B½­ÂÆFÕ VF]ÀQÁ4<Þ}xYfáoEÁ—z,ëœcÁ_0|…¶}ñÞ´ ´k7Ò²hÒ(@<ªŒ–údŸÐV&¡¢ëë3KjÖÖ0ÊXµÔr«°)· <¶nŸ>ìð0(zóO´¼ÓþÃr$™x#¡ÁîÎsÎj­¾¥Al KweÉi'‘Ý‹®Ö,ìŘ‘ÆI'¥rðxSX¶³o±Zh֮œìÑO „‰‘¥Ï—äHÇ8ûÄóSMàÉwOq X-ÔáÖYA™6Æ7`¹Úv0#œèhN×EðÄ÷Óù³ÎK¬‘›‰p0B¾¶8É“Ï&¯]ø{Iºyd–ÞA$ŒXÉÄ‘¸$ƒ•e`Tð9~µÌ[ø.u†QýŸ£Û´Öóö&$@¯"º¢,¸»ÛÑ·ž ¿“^»¼¶‹H´·hÞ$…?2?—j>؃cåÚ~v9cÚÛ=µ´‘i©$†D‡z‰¤b€’í’NHêsVk¶ð½ôwzeÒE§ZGg»6Hío†6WøG̸ òÓ² Š( Š( ´&ð]ìýøŒÆ'c§QT&ðþ™,×r:\ÿ¥¡Y£[ÉV3ž¤ mªßí½jQ@z—†í/$€¶z—“¤›¤2:i-„ä àóÜ“Zz…¦¡q^B%HåIn#§ ñüº³EdÜøoF¸k·’ÕÕîæIæxç’7.ƒ C+¼qÆ3“ž¦³.t}@¹ÅÀºò£ò¢·‚<¡X÷h[Ì9n2¤¯lWSYž$Òÿµì¡µ2\³—vþQ\îä ¥Eà‹M!!¸¹ÓÚîIÌŒ³¨ç‰Ó,_hŠ^c0<ZÐñ•Þ§á»ÛX’âxÙyì«×œ.åÈÇ dvÎ+ºðÞ©¼Píx®/o<¶T»žøGnÑí›tò(a•ܪh_]Óü+£_Ǭ_ZêK+Èv›e»š0Ìps[‘wîâ{š·aá­]:&¶ƒQ…‰QÚêæ×åÀ–(ÀiÇ@1Åik6/w¥ý’ßb$L7pIˆãÙk[ðååïˆüQØÁvÝHì. H1 FÆÎOÌ:ž×:˜g¸”¥ÉûBâXþ×/”Ý9ò÷m ÇÞ'Ö«ø‚M#NÓe´ºKµ]AܶµšáËX°XÕˆÆ3ÓÌÞxJK [[ 6­ÍÌÑÂÿf…¶š —ˆ);r ê@ï]V½¡ÇªÍ§+É4Vö®ÌÂÞê[wå €29éœPG¢iW³ÃªÉÍ3„•ƒ4±#¸ðpÀû˸`zQ%ž„î7åµÖq¹þUsæ·×$g§µbø‹Âº–£â{mBÝì`†Ú=‘Üpn@(ÊAcsÛq‚;Ö{ø&ù¬fˆiz ,Œqh%%XÆL—þ°X|¿Ä~lò@:›hM’GhÏÉóHÊ$á$«ÏJ—Kðö“¦ºIi¡Ðä<—JÙÛ·’ìIãŽ{cÐV…œm ¤0±’5SŽ™-R›IÓåÔ›Q’Ü5Ó@mËïo¸O#Çã×Þ© hbG²IóFcÛö™v¨ UwaXí0äœÖÕŽþÒmıÝÌmþãK{3³ îÚ圙<í|éWôÛAgG¿{¼+¶1–f$ñøãð«4PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP'ñ{]¹ð×íW[³ºû,öÂ"²ìVÛºTSÃCÓ½|§ªü{øœ×ŽÖ~$ò`?q~ÁlN=ó}ûN«?Àïë‹cù\Äká§$žzÔòû׸–¿>,»a|Wÿ”û_þ7[~'´{î"Ï£-•¿ÿªünø›08=¿â_mÿÆëƒÎ×QòǵMÅ<0ãŽ+>fj¢Ž²oŽ_Éù|O´{XÛXêñËâÀ¿`¶ÿãuÌÙhóÀUïšë´ ý¾uóÖ8¢U¬Ê+‚|gø¬ÀcÄÄç¿ö}·?ù¯ÚüYø«)9ñ;m>Øäÿߺê´ÏÙCÍb8ëZÖ¾ÓâB†_aG4úª<âóâßÅ»n_ÄÍ·8Ïöu·ù©Ïñ³â¢`õÉÏØ-¸÷ø=®íñjªÌ9 N9÷õ®Xð¥"´ëd°*.@9ü;RU]ìÅ* tDß¾*.ü%;—ùp¶ÿãt/ÇŠ%‡üU×…·ÿ®ñR4x*ÊÄ2žªGUuûõÛMw<úò¶ÇÐ? ~'ø÷[ñ¦¡¯á’OÞ/Ù \€ <„µz·Š<[ªhú,—É:»«*€È¸É?Jð`Â]ežÂOý×°øú×íº4V»Ê,— 81®ÈÂ/¡ñ¸üexÕiM¥êÎ6ûâïŒ ÄC¨ÇþêÛFGꦖ×â—¥`WëÿN°ÿñ ^Ò£;æiå>¬ûGéZ6B±‘a·«/`Ÿ3~ýz5}Œþ¿UGIËïgI øÓÅw@®¤p{ýž1ÿ²×K½®0Ë]ãþÙ§øW©cå#ý÷¬gw $céÍ7N+tc ˹ßÞοûoWêoÏá…2_jh9¿ê‰þÉ=ó¸æcùÔFáOSš™ÆšFþÛ5u7÷³¢»ñ~©ÝÔ ЧÿRøCÆ7ú—Š-4éïVD›~Sjdá»jàõÂ^Tæ£øLÍÿ 7J¦fÿÑ/^\±QRåHôòúxš“RGeÒçÐõçüc¨x3J´Ô,®¼•+.äòÕ¼Ö/Ì9cÒ½¾sýµæ‘mü)b#v»f_R èF´œ\£dÏ¥½5oŽŸËÛÿÐ>9üT=]æ?í’…Kg­ë³·:‘Qè!ÿ‰®Rð o»K¥êS‰q´ô§®ûŠÇE­ë¾#³ˆÉ¨p;#ÿâkŠÕ¾"ø¶ ˆu€¤Ó´Gù­u¨÷¶å\žk޼ð©–è¶òW=©u\¥£I#ïâ·Äc³_ÀôûüEgÍñ{âFìGâÿ€VÿüEmkþŠVu…rP+ÏE³-ñ‹aà×Jž†vg¸|ñÇ‹¼Oâ»›-QûM´v*¨·>q$`ªƒÑ|s^Ù^ûâ¼cÿu¿*ÐG§ÿÃAü^ÿ¡»ÿ)¶¿üjøh?‹ßô7å6×ÿW˜Ü 0'§¦)GXßþù4Nÿ†ƒø½ÿCwþSmøÕðпènÿÊm¯ÿ¯0òßûùQå¿÷ò Oÿ†ƒø½ÿCwþSmøÕðпènÿÊm¯ÿ¯0òßûùQå¿÷ò ,zü4Åïú¿ò›kÿƨÿ†ƒø½ÿCwþSmøÕy†ÇÀß•œ?•zü4Åïú¿ò›kÿƨÿ†ƒø½ÿCwþSmøÕyŽ@pQôÅû­ùP;Ÿÿ ñ{þ†ïü¦Úÿñª?á þ/ÐÝÿ”Û_þ5^_µ¿º*6ŸC@Pÿ†ƒø½ÿCwþSmøÕðпènÿÊm¯ÿ¯/ÚßÝ?•>†€=Cþâ÷ý ßùMµÿãTÃAü^ÿ¡»ÿ)¶¿üj¼¿iô?•XuR? õøh?‹ßô7å6×ÿQÿ ñ{þ†ïü¦Úÿñªó-ðÆç§hòß8ØÙúP=?þâ÷ý ßùMµÿãTÃAü^ÿ¡»ÿ)¶¿üj¼ÀÆãª0úŠ6?]­ùP;Ÿÿ ñ{þ†ïü¦Úÿñª?á þ/ÐÝÿ”Û_þ5^_µ‡U?•[ÐþTõøh?‹ßô7å6×ÿWÓ?²§Œ|G㇗ú¯‰õ·ÞE«In’yňÄ0°\"¨êìsŒó_ moCùWÙŸ°è#á>©GüOeëÿ\-èÞh¢Šó_Ú|ãàgˆNçÛÿJ¢¯‰m­L¬Ž==«í¿ÚwþHwˆsÿNÝÿéê*øÄ’lp1úu¤À‰â£x© S@8õ„²8©«6PyŽ«†Î8À¬Û-ZÚ4¼ö¿½mÚ馓€HFj}ЕMÈ@ôô­ËHPå{õÉíøÖ™¼QB =§CA‰[Ä}+F%äl…àÿŸJ½mŒô÷<Öåš*‘Ç'½g{³E ¢gf\åEt¾ìò‚U•¶óÏAZ[‰@ýÞxÉ>žÕ¡a¥la#FA<äôùuº)#jÕ÷F Å6aƒFiЃíÎqê*I” Æ+fô)"ŸãâªÞ.Ñ»nF+E•? «pŠrŽ+ ¶óïÆ-!4ÿ­äÉê—n0ƒƒ¨Á®&/õ‚½Ûão|5ÄK™-\cý‘ò·èsøW„Ã÷Åz8isCSÇÆC–z±ð7?ð–YqÙÿô¯lñ8ÍŒ'¸˜üu«Ç¾Á¿Ä±¾?ÕÁ#~˜þµëþ(aä[¦~ôŒ%ÿë×|:˜»Ô‘áÞ5¿‘5Û¸÷±U”€7p? ‹Ã¥¯×œŸütÖgŒ¥ß®Þ¶å»ÿ:w…úcHdÿÐM4ÝÏJûÚ6íõÈ%‰úœÖ­¦¦ü|ƹåÀ¡e/Ì9®,UúGìv–ú™ dš²oÁÝ\ÔM•¡¡i·ºÅãZY‘¼.ï˜â¸&Qvg§‡¢§.XšŸlYAF=kWá| |IÒÜÓoýõÀÍzö÷O ·ÌŽT‘ê+ºø?t³ø÷Kç÷¿ú)ê/ ’R[ÜÛS©cèùÃöÙéá/û|ÿÚô}|áûlÿÌ¥ÿo¿ûB»QŸ8QERRæ€8 {ÓyÍMy ‘ÇaëI%¤-,€sWÎØÔ*½*8AŽd‡×ï}}*Fù®BŽŠ+6ËHÐ±å …ÏÒ´íàCõJÓ ­¦]¸ô¬^çLv,¤#°æ¯=«µ©œ##nÖ¨A.X ×G¡¨¸¡êZ6ëŒÒ–ˆ´w_ n~×àûXeb^Ùš" ì¡®®iR%Åyçç{=^ëO' : P}85èBÙOÌÍ^eWfüÌÚ WyW­öªŒš©q4vèqÉq«¾ì("³…ïp:˜äBØŸ8VNµÍÚI{0 ™ü«fÈ\0oå]‘zY¢JêÊ9_$f¥ƒOM¿(æ´ÙÉ¥‰} h–‚±îœ•+E9›qz‘/5œoÖW#qÓÛ`ªÃˆÈW­rSøbÑ®Lʘ9í]lÑ W!óU1}æÍa)4Í¡¹©ðšÍm|E8óæÃÿJôúóφî­âñÿ>­ÿ¡¥zz8Wzf~#æßÚ~fø§Ë-ÀGTcf@Èófæ¸ý:Ö[BÕâ“|G%ãu8"ºoÚ²+'ø`׃H&F<éºšä¼ ­ÚÀïiö7ÊŒìb9Æz~ªR”æ¬zT+ÂZk[iêf|G‰Ý­e*RâÁ w ŸÎ»ï^Û_øGBÕ¤qÝ*Í/–>ë•ù¿&Íp¾?º[¹­|³¹FÿÏŠ»¦±Õ<¾hÅùt®\böŠ{&wåïëSrz6‡´PÝì6º­´Ž 69ü©¿gÔ‘$* v!Z̵µÒ¦ïÞ)qóÇåçëúÕØ¬lÄ{ Ö$QƒÓõ<Ó²[?ÀÉÉ^Î6k³*ÜÞß[“£ÄÛ~]ðã?­eÜÝ\¿ÍÁÆ+¦Çw§3ûI¯Î ŒT—\‚={V]ÕŽiyä^ÞLƒ -úg<~5½9Ånµ0«FRW‹ÐÜøs wæ8H¶–á‹džiê’©ûñ°¼¡çµYñ/ÃËÍ.ãVÔw´šTVÍ%›DÊ%yI#aìI$Ž V\¬zÖÍkt¤#åD°®1Ügïyî:×o7‰lü]áë7O»ŠÖkh¼ÙCI $ ¨î{qPêI7%±Ñ0’Œ%º<ÒÞWÒ%p³^îç%@ô?Öºh_ÛºV©uolšxKÅT¸¸BL›cLŽØ#?‰ÄA6Ÿ%›™nÚ'9 2\dáî ztÞ0’ëÃ?b o$‘*Ë&ü‡8Ž098õ¢§,sÝ‘T›Q¤¬—õó<ŃFw¸µh-&b¥1€B¶>«ÛÔÖ8••˜Œñ2ó].´Ð}¹R[‘Ùœ18'=?ëT¾žó2›ÛHã,1´çŒry÷®Š4æks \#~Tõ_©•¯µüÁ¸ qê1]5Ë}Q´ä·Òm,¾É§­·îgîozœxSÔ´FÔôW·£%K¨êW·__Jä®mïlu³Õ£’o㨭á8T—ºõ]iS8ëR(ƒ»úQ3Ììwo©«{à :Ïy'ÈO›Ê™èzsï\-Þ£suq,‘D%ɡóã¥uàéJ1iìrcëS¨ÓŽäwO+q¼ôË”Á+ÆrOáIÂÊBH¡wíS°‹¼©ÇLïÛty–ó$Ò®uK[Y•V)fUrby¯­¿f¢ßð‡jÈÑy~^³*íäÃðü+ähRt‘dMÈÁ‡=Á¯°ÿgy¡ºðMÕÜ O¨3ñëåEŸå\õ?ˆ´ÐÙµõy/4zEQTpžoûMÿÉñý»éLUñ”d2 8P;Ô×Ù¿´ÞáGø‡o_ôoý)о-F)úz–4^µýä€9'$WEáí5îæi¤PF~ydà åc¹1üÙäÒ½“áÔ¯àk[ˆÌîÌäŒóŸð®z·KC¯ IU•žÅm;KÓ.Á‚Ç_²’å;l-ì3Nm6êÊcÔ cð?Jê¼[¡h÷ÞQ+ÛØÎ©æyÜ)_Nzôô©¼.ÃPð¤7În%h]‡ÌOc϶+•»nwNŒ-xœµ§?9ùˆÆ+fÍÀcÀÆzz¡¨[=”ëàÊÇ!¿¥Ob¯¹~V%A#š\Æ çg£¢¥º’9=ëUfP6·5`v¨ǠÅ\PÅ€ê+xÈ·ieÜÁ™„j;ç­gêZÂÆ»-#iXub8©ç±’@X¿Ðçõ‹]`O²Þò8á#±àþf¦S{¡¬x‡P€~ñ‚÷Up swZ÷ˆ§¸ÃLñGÕvu­ßxz{ÍVWÕ.\í'`ÀÁ㢻O–×PøÊS;?ȦÔòìÇ8ú渫!™GÖ½œ-.XÞûžF:¯3jÛãû?AFê`>å®?6á^‘â–ýý¢z+±üÔWð-5ˆè"Oý×Wâ¹q©â;Lý2Çü+ÑŠÔüóùªKÔùëÄyšŒÍýéXþ¦­xdâYßû–ÒÒ³5FÝpIîsZ~Ï•zGüú?ó(ê{©Z’D[ñš¥ ÕÉ,ÛK®Nåa‘Œñôü+ÅÒJ·0Ç’aܹÇ9‘Åoëú®‰£¢ßÄfd öB>nqË펵åâåÎÒ‰õÜ?ƒr«QjÑÖhs<º|2J ».pǟƧÔ%šÚÕç‚Y"m¤BAqÿ õÝYµèò’@ÈŒ«¸#g€éž*í5+›‹Ø„ws¼Ñ©Ü#< #Ð âÄÅÇ[\ý…Cœ§«w²_Ò1¯ƒžõÙü ºAñ?H·iöó°½ÿÔH¥pž#¿["Á—Îí'¡îßA×ò«ß³N¬ïñA±À“{Ý™†¿Ñå8üû×6)¿hÝ’üNšpR÷ϳ+ç?Û^ß³„&4k´fì y$Çiü«èÊùãöÓ¼ž+ Ù#b+†ºi®Ï'νrÙó=- £4)@Í 70ð£'µ&€Ý ­;$ ûÇ>>QéïTãdEWŸSR,’7Ë<þ5R–„а{Ò߀þ‚¬ÚGÉsË75V4òA¬‡ï{J½lÃ¥D™¬l#T–ñ»¶<áõÆjÅ¢£'5šcÊêÀï@rPô5 =‰£ŠÍæ M¼Þ€:×Sàëkë{˜Ã—¸-:¢ÔäàþËZik ÓLðÅQ”*r3ô¯KøX—SÝyé,ko¼˳ÓØTÔvEE¤®÷5%µÆwÁ2y-ø‚ò®Æy§Êàq\ž²L§GŸœÝ4ƒÙA5_R×§¶% q89'cnòLg|Ÿ­c™<ËŒ'#5—m{u¨N 6ÕÍm;Ákf‘r>KhEîoé—öðF„/¢Ú”.?vr}«Ê®¯oï.öÚ+žÕ³¦IªÚ×Ì¿JÚ1•ˆrG~4€8ªW—RÛ˜ñïUm¬&ig€ª¤ Ç9èrI÷âJÒWµÏCUÙE«¢ 놖M¬åŠädœÖ÷ƒ®–ÚY-¤?»•23ê+IÑo.&_7!빆Oø~5ÚÁ M«\ZÂ\* ³.:ð™↺ɸ*¿w?ÀQ‘×Ö¶…ýªKtc((R’em k?ÙI¨A·’»‹ÇÏ<ŒäuÆ+œñ ÆtèV.#'ˆÐ¦áÜ ÷JÿV¹x„Ou!ŒŒî|‘ùVz%”‘“U`ÙÎ<¦"½tœeÌßÜy3|Ñå±Ò^[išÖŸúZ¼WˆøxâC‚¸c9÷ÆVT– Í–ª¦Š@†E¸ÞAޤ~U³ð‹D´Öu-RÒk†1%¢_Ôgª-CMsbO–@nOÞÈçð=}kXPèÛ2k»Ùg£ø£I±·ƒ@ÕÚ{f‘¤º/$j2ã …*zcœs‘ŽÜ¯Žt¹e³›X½¿¶yÒ8ÂÄTËë·žçüšÒðçÄ!s`ÖÌ¢ÎhaÂ<û„¡F: cþô®7ÄWrj7^t(ñÀ?v±¹äsüˆ©¥ ÞÛßV·[ntÖ«CØ>G{ô¾Ã¬©³ŠImá-Œd Ë`×MàÛ 7P×ì-n,àa, ÛÔOè+†Íè ˜Ž+²ø6·rxòÐÌÌÁ"”œÿ»ë]µ£î·sͧ-R±Øÿ¹º†ææ6hZÖ0ï nØg#î†8ý{â¬jÞ»»{}#Q#©!°«œ“޼à~$×¢ZËsȤ€\í= ÿõW?ã%÷6³J“¤{T¯l“ïØ~>õóuªÊ5¹íP“qpê&o½ý³(ü<˜k)E§{™NW¬{5QR`yÇí3ƒðCÄ œqoÿ¥1WÅ0Kº-¤ôÿ ûOöžÏü(ßãþ¿ô¦*øŽ Á‰äv©e$IppÄ/"½áˆmgðÍÛª-ÎZÕÉÀwñ¯8u$ýî*KghXI”e9V{Vs2±½ Žœù‘õ¬6zŸ‡ßÏ@nˆÝ[ªà`ŠÈðUãØøž};Pp#1Ú2o¹߆Þ<´Ôü« Pˆu»Ý£ükÒnôËß*k˜–I¡mÐɬ‡ê:ŠáœZ~hõ¹ã$ÚÙ˜¾-·õÚ,nH÷¦ØÙˆˆmÜ‚©ê7R6¦Èç;Ž>µ¥m&å’=ª¯©’V.ÆåXZv“FOÖ²“ŸsR©#¡JvW7ÝÕ£ùqÍQò® qTãºdÉëVDé"`u¢RRÜ… ¶ŠÞ6(=…:bžif~=+>æå"|3…Ï¥*ÈÒH}¿ÞˆÊÚ$5Ÿø±áøuïÜK {®íš:ä ‘øŒ×Ï≮ï_VÛäÊŽ2¤gžõóoˆôäÓ|e¨YF1w`ÿdüÃùׯŸ7ºy9œ-sÛ~©þÈÔ¬‘Ñ«sÆåËy/÷lÿ£šÎøÏ]˽:¯äŸýz·ñ P-µCžRÔ)úíÿëפ¾#ólC½O™á“XT–ÆQ(R<ÔŸ›±*A\V—‡o¥¶Ònd†xg†%Ý2©fr[¦Xð>€W?|ÒÖµ´ÏùjöËÿB¢Tã-ϧUçN ÇGèŽwÅ*³'Úg±.é!KgŽ8Æk¼Kue6³4ˆPa•»ƒÛò­ß±@òëXv6××qÛZDÓM!Â"ŽXú ã«yÎR;ÉÝÜôoØÛØéqÉo{…W‘óÔã öÑHIå×ð”ø^D·¹†öÃ<¢KQ¾™È?…uþ›Ä3Á4Ú‹Û²y¸ o\ŽÝ¹ï\ø— Âèññ˜:´ª:“’×ï9¿ÞG>£u$ŽZ(_d|ðqØ®Mtß³~;xzF㛬8ÿYk‡·'LÖáŸ[Òžê¤; ”YHëÏ~kÖ?f+]/Rø¿«ek=¢Ú¼†Œ•CÛÊ¥™üª£N ¶‹ïÐúFÐIv>Á¯œ?mŸù”í÷ÿhWÑõóíµÿ2ý¾ÿí ²ó†i:ÑJªK;ÐHøGSØPijdŽ3À©%¨~´Ò0BúTŒyÚ=jú:Û*¢ãÌa×Ò©Dy\úÔóŒL¯T²–ƒäB²oÏ üûÔÐ1 Òºþár;šH×½fmkYÈA5¿dÀ¨®fÐôÍoéÄàTš¤_‘T©ÝÒµ¾ëQéšÄ³êTç±ê+W˜£Hò7M3AÓnîõXcµµ¸iýç\/×5-«X·vºŽ¬ñËöÇ\’¥!ƒ=k_5ÔùsÆ{ÒxÒè[Ý‹VP%àqšÀ‚é‰àÒ;#–¤ï#­7«iP‚k ÿX»»¨áj+È0ƬYÛ)aÐÓQFNLëü}k 9 Þõè qc44g"¼óG±Ðo`+NEŠÕr’΋ 2?‹x¤,Ÿ¥s+ÊOÔÞ!ÔP©_0¥r_Ú‰Š9X›/]¤Q±Æ*œ“(?(æ™%Á—¨4‘Åó"„nøv Båó•Zé_NÕ#]Æ}ÞÆ°4=YlàWY§ëÑÝaX(ªMŽ£àŒ3§‹nZcÿ.?ò$uìuæ ž'ñ Åîû#tÿ}+Ó+hl3åÚúݦø©¦Ÿá,Yÿ¿óÕ6|ilíY%òÙ?ζ?jÈZ‰Úlj:éäú:nk3ÂÆ8|4Â1&C·ØäŒLýÔC¥ëaµÔÕ\!Ø0àÿQ]>™b­§´$’ú’¿­swá^HnPŠUÉ_î·zë|74MoÆßð0ßy}Ey­»êz/mz »KËc£^m¶º†/.0Ü,¼pÙìG§zóß<–Ö–Ñ2~òÌc9ùd\äøžkФþ•ËV²¥V7ÛsÔÁÅÖ£.ý ?Þ‰`¹ìѲ Ž„ƒøôéíš¿oÆû¡9 üÊ9úýkœÐíõMPáYO–óWï‚GâqŠÐÔµÓ:’eGPÑŸ­Mzr•{ÒÕ3¯57«£[œÜÖ`Þ¤“ {ŠY4ÈÞíA’%‹o.ëôª“®÷2È»‰ç©ã4ØãhÂäŸz÷#NvÜñ>»Ehá}ORø-k¶©¨ˆdGg¶QòõáwÚ¥ÿ”ˆžC2oðÙ žàõõäÿ®ÏÅ.i-˜}BƽrîR·p"·É"È:¯õÃZ.2Õ’ê­N~[#Ì~)›6Ô-5Û[b&'dûâÃ3¸[׌Šãµ=RÞ×ÃM4L>ß3²(ÇÝ'9orôô®Ïƺ¾Ÿ©ZÜh–¶“µì’,0H±ïM ‚ÒqÈ‚@¯5Ôü3¬« ¼„ËH;™FJŒ9÷ǵzI.KTÑœxÈÇšôuVüGøwG#LšþfÂ0 ãæ<ãŒðFG'¶=knM2²’p¦Ü27ïJÙTã-ƒÇÆj§‡¼Ik–m¯ìZ[›x•-<¥?6 Ém¹é׌÷¤º¹›ìÑÉ9’Il ?v8Øð±Ž€òGÐQUU”ÝôÔΗ"ކ;!Ë0u$6O½vÿceñ•‰1¥»‡bx\•õ®)sŒ¶rÜœ×Aà­þëË‚Öâx.âL  ‚§ØöïZU»ƒHÆæÔ÷S>­*£pT2çרþUym…Ò$r‚”îÇ`8üÿ•yV©ãµŒ6™)KŒ1Oº3É ðxô¯Jðn½§jöîl¥y(ǘ$nO§øW…^“ömÈõœd’èPø›h±øjv§ÙL8†VþY¥¾¿¹_Ø_´É†±YJÉJ(NJ¶xéùšÖñÅ³ÝøRðE’XN±Ž®–Qõ]Ãò®JwÑ­ì®nf—FDGŽE”1ä¾Í¼“œŽséšæ´T¯ùT’´žßðLï iöOá‰~Ý m³'˜Ž8,UYWK|À{šóÚ]YøÍÆó8ÛÓÓéŒW¡^½À·x#ýÜïwö„nÊ~ESm¤×ñ1ÚãV‚i‚‡ØÀí\Èí^ž«uÕ¶w0ÆE¼?3þµ9‹UY⾤ý“Ógý@tÿ‰¼Ÿú&ùjÝãŽPåÂŽþõõGì¦Û¾jö“ÿDÃ^«Üñ'ð¹EPsoûM(o‚ SßìßúS|M0ýÜE}·ûK ü׆qóZóÿoQWÆW:|ÿhòU-’=Ç_åQ'©¬W¹s9»˜ô­{m8É f\U;H$79iR\`ƒ]æ™b`»W æ±©+RŠ–§)‘3H¦Á³ÁA¯EðÞ¥â«HÝêŽmÔ†P_™¨ôËŽEb¹ÇjµâY|‹`q€Ü甜™ß¨­ š}ÃÏ;31 žç5ÒÙ’c¯zâ¼=)ÊçŠììŸåÖ-X®daÔv«ß.CUU°±RÀÃ8?­"Óë‚<ž•4AÑQó7ÛÞ›#à€95[RÕ,t«su¨\ÅmMÒ6$µe»ËKy­ ƒó »Ö¹]{JP½Íž­©ÛHp“eIÿtäU¸W‚boùé4ŒAý++â$Ÿñ.×?Ű~o|(ñCÙñŒ¼Ÿús¾MWíºàü|WL~&|õª½O »9¸?Zرù<=xÿÞ–$þf±nïÏ=ë[îx`ùéuü—ÿ¯Tô>–KÝHÂÕ¢ûM«ÂÍÕsê*ƒuGÒ5'ž Ye» U rÈ;Ö„ó×Aá;ä‚îê`!µ g—<ãל~uçã’p¹íå—´PGQáÍPñ’eÔôøŸJz[¶qÝ{‚1ÔU_6ÊRͦ¬‹hØ‹®7QßÎ ëT&Ô$Õ8™<«(x†Ù~è¦ïSZ |£é^|èJœŸÜp癕*íQŠ»Oâÿ#•ø“n£ÃzÅÌÊ#c€§9ãê+ÐÿdÝ6îËÄÉ%Õ¼™nnåê»sô;«Í~$êP‹Xô”`d,%”ÿtp?æ½›öq²šÂ÷ÃpÝFÑÎÉ4Ž­ÔŽB3øcŠó%UÂ8ËíM[Òç§–Bs¡ytOò>¯œ?m‘ŸøDí÷ÿhWÑõó‡í±ÿ2Ž?é÷ÿhW¶[>o<#hÜGlÔ Ô±ž¼æ¥ˆD;¤.~´åRÍšjJ·m1ô›°Ò¸²ÀW‘íùÔÐFf™ œâ¥pLA<ÖŽ…áÀÜxAüÍfäkjW¿@’$CøFOãQÆ™4Û‰ — ùÈ'ŠšÜå…MÍQjˆ"¶ôÄÀ³ ŒÖ¥»€ªœ1{T6k[že\‚sÒ»ÿBM[§•N61Œwæú)¸³¼Vò~Ña¹$²>½kÔüU¨}ƒÃ1\ǵšh—t1“Ûð¥%{ ”¬ŒižÕ/Úâ¼µ¹#‰ã]ÀýEqÿ‡îôr%Y£¹¶còÈ™˜íW¯|OªÎ‚7Ÿp±ƒTàÔg•^Úy¤‘\çµÙRi³*9\Õˆ.å†2i­úUs&׿‘›:Kmnxbàb³õrâbGš@ö5•=àÛ´f©—f9Åe©¯ÌÄԖ̲b¨sÓ5ký¨Äcâ%‹ϳ±Òc?¾›Ö¹¯ ÞÔ@¸óÀ™J·Õ>žÆ¶?k<‰{qÿ ˜ˆç¡MúWà Zugy*ÇmzÝ÷YA?\ðzd{Öu`Ú¹ìa×îÑÖé×P‹A»Æ0y烊ÕЮŤòƒ.Øúàõ8èqô¯>Ôï¾ÂKÅ}ì¼¢I÷¬‹bk—k‰îÎà Ãå#òé\óúŽèÞ2厧±ø†üImgo(Qp­æQqŸsý rÒ\4Íá­.gAÕ£ w~„²ü/4M¦åd/)|Ë““žÙïÒµštŽé”¢í˜– ½€1ù ð1)ªÍ5·è} 4#n¥}nX¬ôíàå)B9)>܃øW¨GÃ(1¾âˆÎHÛ[úƒKi±À‚âÜ©Sûñƒéê¿Ê¹»]‹ls“ƽ<¶•—1ççZ‡-ˆ!GººxƒmD ç'ÿ­VæÒÚ-­ö•ò8ý(ÐÔ9yp]dv;G8ëVõDž çhàñƒŽ§ʽ9Ô—?*f$QÓ O úšgdÆ´a#˜”üÀðÀôÇåùb¹Ör“$£«8ÏzîÎ ™|ªJ3Ñ­¸ðäÁVmÖÍ’;ɸ« #…¹?çßu7¶È‘ÄIÚ¹ÿ’ý[æ`rOÍÇjlî*HJäŽ3ô¬¡nt;·k‹3ÿ?i××¥Koe;¸T™]`2j«E$rm‘YsŒçù~µ$rË…ž6QÔ pO'ÐU;ÛF8Ò…õFΡ ŦÚÛ´‘¤' ÿtôÈõ¯Oø%lbÑ/®]•ØÈ GQÉÜ@üÅxìRÊ—Ø´ŒÏó.#= ÷ï‡v¢ËÁZRl1´ÿé,§®\çŸÃmy›p£ËÝ´ìçuÚÇY¿dœlãm­ãÓ–÷I´Iok!ž° mÊßäcÚº¹;’ݳÅsÞ-K–µKý:5’æ8Ú&Lã|L9 Žêpqõ¯&QoBéÚæ^•޽¡|"Oí(®dh±ÿ,ãÚ¨õ!ükÎþ&ÉmÕ´*Ù¹PY—?uO@}Î3Rx—u®‘ZÞM ÂÞYtr„‚0sSڸǑ%‹=YŽr~µëà°Þò¨ž‹¡†.»Št»JÁ¸+šú‡öA”ËðÓP%v‘¬J¸ÿ¶0×Ëέ»¤}kê/Ù@øq©¬Êpý1‚½‡±äÍû§²ÑE'9ç´Ç¼AÎ?ãÛÿJb¯—ü6öwí•gA…cБÓúŠú×ãTQÍðÓUŠkqs´â?ľ|y•|Í«x[Ö—Iý‘szTÒ!o‘ÙÉçŠóq˜¨B~ÆW»[£Õ˲ÚùéQûùy˜¦ŽS]sËJNÙý+£Ó#û5¯”ëÍH (ôÉçŠé¼Ià½_D¼Ó-] ¼“Sÿo³C8äïô®G^¤ãî­¶Àð®¡OWšNöè´ÕýÞ¨ÀŠcÈPN{Ó5fþÒ·Ì ç)Á®Ô|1ñ jë¥Ç=„³„·²7—n§ sާgž”j_ µÛ+»ÞŸ4²ˆRæ7bˆä¡¸Ï8À#<ÒäÄofz+Erê¯×úÿ>‡ c´@±’@þõhǪ\'EŒýA­tðF¹'Œeð¼B»…CÉ cå*ìã8äkSKø]¯ê7+»¶†C¹fm’°á‚ d€xÏ ã4”+ËcZÈ(¤æ¢´OäöûÎmuëÁÒ8?#þ4ÿøHï€ÿUoõÚÆxkTðÆ¤¶Z’Ç—]ñKe$2>Á¬` $“€+)J¤]™ÝG+ÊëSUiÓ‹‹êtÚ>¯©jéÇ^®ÛOÊ£ñ¦üJð´šõµÄRe홳=þµ¥á»U°µÚFg~d>þŸA[Ë"íçñÙE5¬Ï³jØj˜–°ÐJ M:ùÿ‘á:†&‹Xx$-ÆU÷‚s·Ø×-â Æ¾Ö.n ³)r±îbHQÀ¯}Öm`Y„±"+{uµx_‹lRÃÄWvñ‘´>áŽÙçíeÉ9»î|þgÝFKk™{VŽŒ3r¿Z£ZZ ÍÊýkÙµ®ÿvϨ~&ߨû™þrhÇ>ôûK[›™6[A$®8!8ÿ ê´_ ¢mG<ò!ÿB?ÐWa iê:…¾“¦C Í1+¤€O_¸*ãR|°WgØåÜ!V­?oŒ—³†þvý?­?³ð¾¤à|˜ûM“ù ÔÃûý˜ÿÄ×zž×$ñ4žŽÏ~£ùÑ\mQ€r[¦0G>õ£¦ü=ñN¡ysmkg g1É1œy[ÇU üDt8èx®W[7¢ü¡†Ka¢½¤ÓÑ=eÑìô¶çCáøcëríÿe´¤(WÎa‘Žp+ºÀ)}b}'ì1­ÔQ °Ó(WBq¹OFçnõŸáï ë:ñº:u²˜íg’Yi^ =ø'ð¬Ü±¶§\rìÁÍrÙZþóë·^§|7 ?ñõ ÿ€ rxz$9Rø¯HÒ¾x·RÓÖúÞÂ4‰ÆèüÙ‚4ƒ±ö=³Šåïmnlo%³»…ḅŠIŒ#µ)T¯yhi‡Ê²,LÜ(Æ2k{Iÿ™ŽºJ®?ÒöEJ-Ò'Pd,OlV®gq¨_Cek’yœ"(õÿõÑCð»Ä2j¹²Ú­Œ—aǰÅk‡•ZŽíèxÜG†Ë2ê*é¯i-µz.ûýÅoى´4™+»§·sX¾/Õ®ukÜ1aˆ¡Ï$÷cï^ÉáC¤Z‘,Í-Äœ;'  ¨®¾x~æf–U¼,Ç'à~X¯F¶ççµ§Ìô< Fj=ÄI‘}«ßGà ã˜oý¼–ßá§…¡pâÎvaýéɧÊccÂ-¬o®Î!·vÏ|V¥¿‚5‰Æï'n}kßìü9¥Z¨XmvïW—O¶Q`ãW¥Š´zŸ5_ø+Z·ù¾Ê\CYuÍ·Ë5»¡÷õciÖ¬0Ðçñª7~ЮÁ:zÉŸV#úÕÂ5>Õ¥Ðùm-¤cÂU¨ôɤF*ú9< áE9:ßÇÿ·„ü;4˜ÇúÖ¼¢±óº<ã¬gòªÒéRª*ú¥¼3 ?ÞÒ-àÆ¡øe¾ö…hà'üiØV>S{_á5µ`zWÕmàß ù—,ÕúôÃàÏ öðÎÿ|ЂǘþÊð˜þ!_±Γ ÿȰ×ÒõÇø+@Ò4­V[?F³²‘ (d„|ÄnS§ò®Â´[óGíOt|C°Sl’9Ò¢>c0G7\Ž•ã²Üy“4‚8£ 3´|½O\zý+Õ¿kpOÄ}=B®Hˆ1 gýtÝý=kÉÄ«ûÃ’±+÷Aü=©r«Üõ¨ÎÔÑgÄÑ‹8íÌ`m’5Va‚:T´Ôk‰<×V ‘ŸJš{©îmü¦+±v…€ã¡eغý;}hæå…žåIûIi±‘ ÝÕô“A3Ç ldtö^(†xÒ-Fܫה>‡«ŽºcºWÄçùÓmä2'–z‚á]uð4q1Jk^ýN\6a_ 'ìÞº‹qq`ö¬ëw±à;ƒ´ûw®X¤’irÞä™XwÏ~kýžƒ¥oÉçC¥YéŒHìV MyðÀG ðÊ÷;êæ2ÇZ2¬ihv¾U¤(q÷=j tÇöŽ»”1$ Ž€søk¦²Ñ$-å˜  a爵õÍj -½ÌÂæ%Éà¹ç8ÏÖ±„Ôª6gMÂ)µ¡„Ï’07°rÄô籯KÑÉ4ME­îæÝ S<ò.Ò¸,Aû£8êx®mí¦ØÄ™[<÷'&¨HÒÆ‚¨I•ΫW,ª>nµXþðȯB ÈòÛ6' "pUƒc%›ºã¸õÍhÇ¿—¶3ÏÝ_N=+.yY­ÁÞÎθ|õZ¶óÜUª¨û¸8ÝùtÅpÔ‹g«§"íÔ(¶Á§RÄà'=È?ãŸÂ«X¥˜€ àvfVÆGÓoÖ£hÙ¶–ýçð‚ì[yôàôsNY²Xž€å› sÀäÜpk%+\èQD†.n ŽÞ9)]S-èNÓô>¤ý+踊GkkI¶$@¨=ü±^ðöÑo|AdÜ–ð¼Žwç áT~múW¹^a;ò3){ê"º—g| ŽkòVŠi­Kmþ8½ÁíøÙ‘¾LúŒÖˆd_$Í´3Æ>_\×D‡G{?ÄX‘´‰'ÀIÒÉÜÝEy«ÎåpË•õÅz?ŠíΘîròº“õ d*óÉÜJƒ-ÇP3^æ\ײ·™Ç‹SOÈ­#)(õ쇟øVÚ†GüÆ%ÿÑ0×ËŠüÈ÷¯©¿d€Ã}@ú Kÿ¢a¯EžeO„ö*(¢¤Àå>. “áæ¦„•Èëþ¹+çô³·Qþ¯?ï×Ð_ÿä@Ô¿í—þJðZëÃáéMsN)³ô~m`§oæ’"û< )¥{6®hÑxK×u ×zd- )¸ocfõ }9¯¤Ç9®‰á©Ëd‘ëæytsÆ3“Vwùl×ÌõŸ‡º²êÞÕíÞkÕî®^ic¼'Ë”0qÔ¨nL Êñγy¡iVºE£è;’â9ÚÛN…—Êáú–ÀÉÆ2rkÎÈ£§JÊxM½l¼Ž(d4£‰u¯xÞü¶ëëÛäzßÄ¿iš‘5öŽðgX…#IQeŒ‡>˜Üqî}ª­Þ›iãh6ÚV¿Ÿofˆ.¢-È! Œ˜HÏ9¯+’ä\:Y×VM]>tïÇ"¼¼fµ&ä—4ðü;N8*U\jEß™¤ï¥’³ì¶ìvß¼A§êÚ­ŽŸ¦Î.¡Óbdk€wvÆ@=ðsêMs¾²F˜ÝÌ3³ýP=ϯá\Æ¥y©šO\*ޤÔÞñB¨X`v<^:æ«7Q£,ãO*ÁÇ.ým«ò{ýïð=7’;ûTóÙò×=i®[>š¿Ÿ5¤º¬Çç[\ø”qu«½2Õ0Ë,ŒDmžž¦¼¢y$žVšiäs–f9$×mñjú+­JÖÚ9˜U‹ã±'¥qôôùe(ÆŠ’Ýž>¤¥UÆú!=«WA\Ý/Ö²ñ[žLÜŠî›<ŒKµ&}OàˆüŸ i)él‡óçúט|U“v‰?Çp[ô?ã^³¥/Ù´+DéåZ'肼âv[J±AêXÿß#ükšú3ä¨ë^•FŸø×^t뛽3Lû<(• ±®YmßÎÎZß²¿Ôã K™R4P00+Ë{ŸQUÝ.Vh[øjôüÒ$qöÜJ³'‡åh ªY¤e÷²žAãËÞ¨B·w-ËË1>å«sOÑu)0VÎ`=YvÖ¹ä—H‘OR„¹£;2Îb¶×1î½KˆÆw(^zqƒÇõ®ÞÎÒ ËV·’$xd]ŽŽ2 ŠÂÓ4å ¸>¯þØé/ ò)úW'Û8>H£Ž®"Ÿ4ž¾Z~GÁð÷Wðwˆ¥Õü5Œ¶WQlºƒPr¾Z Ë’}çšé>ê“Ü|WÒí÷b&iò0?狚ëuX‘¬ŽÁÇ“ðóLÒàñå„ðªùêeÚL¤ŸõNôÍreô±³|ÕÞß©éÇ0¡R¤®ÛZžÏ^EûDØAwqáéå<ä!ôÝågùW®×–ü|ÿ˜/ý·ÿÚuîÒ§’Q’ÐûnIæT¯çù3ÉÊÜ ?SWtV‡MÖ,õÓk[N’ƒ“Øóúf£Í®åƒ ¶‚ûÕj7Rz=hñÕþ›á¸/5»¿Û:´I Rg$*Ž{sîqKijºŸ4{m+OƒS·žjÉ|ðp9f)É;·=y¯wwÛ½Ù¶Œ ’p=µ>‹ˆU–æˆ7ÞåAúàóYýJ<¶ê|›á›QŒUOy;ÝßkY-ô[jz‰ñ-ÊüNÑtë¨,âE-´¯mpÓ ÈUfe‚‹ëÖªxçXÑ|3ugáKÛÝ_-Ö¬Ùɼ›™O׸ì£ëÍA ‚ ä‚îÙn¤bÞk—'$Ÿ|õ®\F¢ƒtß™×G‡(F¤¥î¥f—W­žý/¡îZΑ¯^xóOסÖãƒÃö±+²,ä+c;t†Èù‰àWŒüKÕm5¯jö$=¹eŽ7ǵBîú~X¬YÞö>É$óýŸ´~cl?†qOÓtÇÔ¼ÔYŒ 0 áˆâ¼,Då7ìùlï©ÙË!“ÅâëÔRP*²¶—¾½Û£ê¶ZMÐ’ö7 :â+˜äâ3žAÇ ×{à¿Ã&°úåÀóÜnµ™Û+(þî}kÁµí>ûEßm9h¥VËEÖ9”ÿQMðôÜó&x™0L˜ŸlÚ–•#\Yõˆyx~¾£Þ¯“MNcÖW⦚Ç(üiãâ~Ÿßgç_:+·­J$SJÈ£èøYºwªþuŸ4Õ8ë_>‰zƒ#Ö•Ï}ŠÚrô\þ4‹ñ_O?ÀkÀ ­ëM36zÑdÐ⾟œ4¿ðµ´ÿî‘_?yÏKç¿©§ ®{ë|U²ì)‡âµŸpÕàÞsz—ÎoSF€{ŒŸ!àj©'žʟx±‘­=2ÆSéƒ^7oø¦æÄ‚vO7äè?öjõºùßöZÓ/Š/õS Abðy‡¡s$mëšú"š·A5cäÿÛWŠÇâ^o!›G‰þQÿM§Ò¼U|Gd¨I ‹^ûrÉYÒÿìþ¸¯§cHÖ’VGgŠ4äÛºŽ1ü"¯·4£ UŠá[ŸýzóÚ*\-bfŽšMjÅÓ¤Ïû”YëtJÍ#I¸·NƒÌÑ]?X™ÎtÒjút—(YäîŽÎÙæµ®|U¥6£ÊÓãSÝ÷?ptVU&êniN¬©ü'»hŸüº:ÙßÜj ¸ùSìåšÿeÁäwë›ñŒü?w&è§žsŸ¼öø'õë^[Es,<¹‘Øó:Î<ŽÖ;ɱ}¦_ZˆíŸÊi°=6;)'·ÍùT2øŸLŽèÀLÌÛ|ÄM˰Œ–9w¬”"ºÕ1jÉÊrm¾ìóh¿g¯ D /Š£ ⯤ößüb»õñ,K‚ëJÔ­.—o—k"Fd›qÂì(켟Vêp)£ÅVI5­½íõÄ÷gh¦EÌ,Wr—*Åvž*HÉÇ®${ó˹æ’þÍÞ‘Ë¿ˆò;ës%qÂüÖƒ”Õè“^Ãͤ3¢Þ[. ð»²OÒ«G®éDD&½·µ’iž£žUG‘•Ê žrG©ç—s/©áÓ¿"û‘æ«ðÃ!³ÿ ‰±{_þ1W`ø+ ÁÌZö¸¤wÙf½z%ö©¦X\Ao}¨ÙÚÍrÛ`ŽiÕSè œ±ät¨?·ô#ÔŸÛZnËBå¾Ô˜„“€çåçÖ—3-ᨿ²¾ãáUœc âϯÑlÇþÛÓÇÂûqÿ3‰?+?þG®¢}zÐíõ[k;«Å¹tHa„Æ$rÇ–`¿øõ$~$Ò’ÄÝjw £í›È’;ùc‰’L·;Š’A`œƒG3'ê”?‘}Èæ×á¤C§‹üIùYÿò=H¿öýßx~ü]HÖ´ss=¨Õ¬ öñù“Eö„ßy†r#“BëZ3%£®­`VôâÔ‹”ÄçÑ9ù¿ Òzî/©aÿçÚû‘ÈÞ|3Žî?.ø™—Ð}Œ+z<+ð¿Kð÷ˆmµ«}w[ºšß~"¸6þ[nB¼ì…[ø³Á×{E(ÅGb–ŠwP_pV‹¼)§xŸì¿ošê/³oÙä2ŒîÛœåO÷EoÑT›‹º;(Ö©Bj¥7fºœü*ŸÏî«ÿcÿâ(ÿ…SáïùýÕïìüEvz½òiºmÅô‘K2Â…Œqc{{ Ä ýHBÛÄV~EÔº¬RheÙç BXT(lí;‘Ù0pG\ñÓ¥_¶Ÿs»ûgÿ?_Þsðª|=ÿ?º¯ýýÿˆ£þO‡¿ç÷Uÿ¿±ÿñÖ¶µ¤å5+9d–qqÎ¥åŒ îQŸ˜{Ž*+h3i±êÚöÛ»ˆ÷½Ê²Ÿ,œà??w­Ú}Ãûgÿ?_Þrÿðª|=ÿ?º¯ýýÿˆ£þO‡¿ç÷Uÿ¿±ÿñÕ\ë6ði×÷¢ å['dt@»€ ’9Hª¶þ'µ3u ;­*T$È·m¨BÛ™‘Ù@À=ûsŠ=´û‡öÎ?þ~¿¼ç_á7†ÝJ½Þ¨Aìeÿˆ¥±øSáû5+ö­‚s†–?þ"ºxb¼Ö×,?³›€ñά¦0Á ÌqWßYÑÒYá}VÁd·ŒK2„4=†x_sÅg?}óKVe_3Åׇ%J®×8Ý{á'…õ«g}6¢Bœ¤‹"CìvV—ìóà«K¯´&¥¯¾AVGž¬PG•^±ayij—v7P][¾vK Ñ»pG™«ß&›¦Ü_I³,(XÇ7·°Ü@ÏÔBÓc‰»îy¬?ü+¡ ü:¶¿ñ.ÝÂx¾qØ7îùô®‰>èkœ\ßüÊUtÃê6Öõ¾±û…›Q°¸ÒA/‘y4jªî,JHÃ{äc4Áâ] ®­ ]RÍ…Òæ EÂå9jœòÜôîÅcÏàƒ þÐ×FNp'‹ÿ!Ñÿ Á¸ÿ޽ÿâÿãuèñëÚ\ºÚݽÊÜYD³ÄC}ÂA\ŠdýšÙ­UD`ˆ.¡$i¹ˆÈÚÊìŸf56C»<ëþƒè%¯ßø¿øÕð <ÿA={þÿÅÿƫӵ£‹›‹S«X íÉ<_hMñ êÌ3•æžš¦Ÿ&˜ú”\Z"2à u uÁ,‚ìòóû?x4ÿÌO_ÿ¿ðÿñªOøgÏÐO_ÿ¿ðÿñªô)¼G WF3§jÚ7X绞T.qò·Í¸ã ªTw<§gãòémíI•ŸÎ*EÄ)/Ì™Án~@Ñd8øgÏÐO_ÿ¿ðÿñª?áŸ<ÿA=þÿÃÿÆ«ÓÆ±¦»È^Û\<3fXçBbsÙ²x>Ý}ª;M{I¾–Óï­ïÖi1%´Ë"+*î!ˆ<Qa\ó_øgÏÐO_ÿ¿ðÿñª?áŸ|ÿA=þÿÃÿÆ«ÑeñœVopÐÜnKϱ˜p¡üÍØîØÆ>|çîóNÿ„‹HûbY›ëq9„Ï*ùè|„ /†ùAƒÐúÑd;žr?gïù‰kÿ÷þ/þ5RGðÁÈsý¡®Ÿc<_ün½%u½’Ñ×WÓÊ^¶¬.SŸDçæ?LÕ›+˜îàóbÜvFVꬤ‚â AvQÐ4?C·ŠÛNWŠ¢òÒ>6sÓ¯}ëRŠ(JÂnç™üUø)á_ˆþ!ƒ\×5 jÞæ E´U³š$BŠîàѱÎ\÷ô®GþSáçý|Sÿ0ñš÷ª)à¿ðÊŸ?è3âŸü ƒÿŒÑÿ ©ðóþƒ>)ÿÀ˜?øÍzÝç‹4ÛXuY%Šç:d˨wHX sÈäõÇÝ5zmsIŽâ{EÔ-$¼7Ëj·1‰Qxä©aÈäâ€<[þSáçý|Sÿ0ñš?á•>ÐgÅ?øÿ¯jmsEU¹fÖ4õ®à›”ýËŠüü§ØÕ¶Eý¢¶ 1‘¡3Û´?>hÃá•>ÐgÅ?øÿ£þSáçý|Sÿ0ñšöY|KáÈ–á¥ñ“Û8Žrבœá[Ÿ”ðx>•:ëCM ªX™g‹Î…Ân’ÐgÅ?øÿ¯f‡^Ó‚Û-üË¥Ý\±H­odHåfq Ïu$ƆñŒdx­õ[©#`™ ™¡f8À?/C×Ò€ÐgÅ?øÿ¯n]WLk¸mQ³k‰ãóaˆN»äOï(ÎH÷r€<þSáçý|Sÿ0ñš?á•>ÐgÅ?øÿ¯r†ò)onm`öêŒäã0$còªoâ?%½}wK[S/”&7q„/ýÝÙÆïn´ã?ðÊŸ?è3âŸü ƒÿŒÑÿ ©ðóþƒ>)ÿÀ˜?øÍ{t®™q&Ÿ¥g-äkºKtZD¥AÈΩ\ø†/ž°_Ém‚)¯QɉÎ89mç¨ÉU w#=ÿ ©ðóþƒ>)ÿÀ˜?øÍðÊŸ?è3âŸü ƒÿŒ×·ØjšmüÓÃc¨Ú]InÛfHfWhÏ£x<µAüO¥¦«œÒ…‘ãšRí$j©Gk9ÜÀíÎF@= às@?ÿ ©ðóþƒ>)ÿÀ˜?øÍðÊŸ?è3âŸü ƒÿŒ×´A hç[ÓBÞZŸµ&'9ÇÉÏÍϦj}'R±Õ¬–÷O¹Žâf@èÀŒ©*Gæ(Ä?á•>ÐgÅ?øÿ¯LøUðÿFøqáéô=æþâÚ{¶»f¼‘ò" ªŒaoZ먠Š( Š(  ½[G[ýSN½3ùdv.›3æ©Á œñ†Uný1Þ±­|n±%½Þ¡s5²\Ép© ’[°%BF7Æá°ˆ õç9ö®¶Šåôÿjš{´ºÅ¡±xVŽk'yv.à Iæ¤ •9Æ{Ö‡´8ôDX,æÅ·”ªðíàÈ €ç‚ÝÇ9<õÎuè  }CCŽöÛW·–U1êEw+E¸(ªAùÛíÖ²µ/iou•i£ØÃpÐ3[¶š¯nÍ1ËÆ¬¡³¸£k­¢€1-t7Âí¢»iÐ_°Øýžçˆ÷¶=ùæ¨Úx:8dmBWóeVòÀhÃ4f09#ä¨×SEs¯ jW.n﵈dÔ#ÛöYa³òã‹iÏ(]‹g¡ù‡6õ¥O ½ÄßhÕïc¼šBÂ.ßÊ”ÆP*®æ*IÉ,r~˜èh  }3BþEÝõÕÎ]ÙçŽW·•·9½<àŒþ8©áÒRÓKšÊÂîî6“%e¹¸’픑ÿMY‰tÎ:ôëZ4P+gáŽ&]Y+1””´²òaRñ”ÊÆ]°yÉ9çÚ’o ÝÈó¨Õ¢2?”†Ð–GeE,ÇÌ2€àÔóÞºº(3Y°½»KY¬¯aµ½¶ré$–æXÛ*U@ÊpsÙ†kçÃÒ\Û[¥äBÛì²%äÏn¥/(v7 „œ~`=Ï5×Q@ÿŠt ½jæØ¦®ö¶Ð•g€+áÙX09WPG!ƒ tÁæ¡ HžL¶·ñGqÍIm½7yŽÙe r1‘Ï9í]5‚úÔ~²Ó,ïàŽæÍãtž[RèJ¶yŒ:œfªz¯…µCL’ÚMxÅ5Ô­%ìÂñ¬  @,—F2Ì:äÝUÌMá!-¹Œß(}ÎûÄn+äÈî*µ÷ƒ'½ºµº¹Õ#2©?jX¢š¦÷ð‘L¸9îæOzì( Š( Š(  Z¤\éÒ•Ü&ÆÜ›†PGqXÏáE´°¼²ðýÌ43,Þ\åUN0ã÷lŒ:AH8®šŠäôÏÍ`‘A©–ËY¶åfTdVXí<ðI9Á5«àsw^F¦`’5D"•,l•,lr½Ü쨠 3áØNƒ}£´ªÐÝ“Ñî ¥UvIÜ0½ÏzŽ÷ÃÉiÙt?(ÈÉökP«¹—np¥B¡k ¢€9?\[XËn5u‘¥Šdy$…ÜîwW –±à’H dc%²ø$Ë©ß]É©oŽè;,mçŸ-߈S7—ƒƒÇ–¹®ÂŠÍG‡ì7vsM?—spó¯®æÎ£PFjZ>w£G-ËCrswq-ÑÁÆFebqÓ8­Š(™ñ†mÆ•µ§ÙKK ­¼);Ÿn¨Ï8ÏLŒäTÑ|9}sb×:£-­Üììñù+òî™dè®À}Þ›¯SŠìh  Ë=6æÛE—OKÔÅ0€|˜°I!±œ™ö¬8¼!w%àÔ4ë{’Ï•‡LÛl×km‹Ì8sŒîÝר=+¯¢€9 K–âÂS<Ñnxce¹ÄaA$€Õޏ8ÈëV43S—Â7v÷Ѭ÷RË>Ì*…bÛ”¬Àr@fëÔ×OEsóèwÓË,k¨¤mÔ¢{‹V¶ .î *ÈIü¬y8#Œ$žÝnbûn3 ÑgÊÿž“ 3×¶1ïÖº(˜ƒÂ÷1ÂaþÔˆ,N†Ù£³U‘Y˜bÇ{eºð?ÙÉ&øZçL½·z³^Îe2ÈJ?ÌL{8ß#1ƒŒã®1Û§¢€0®ü:·䚇ÚvÄñ“äyyyC›œÿpãük&_K-¹´}YE²Æâ –ì’«¾ÒXÈ2ƒm qž„vtPoà¹á·X†©fR—¬ÐË)•wîÊ4³;#{–aì0+£Ñm¥¶‚v˜m’{‰&+œí Ü8éŒûæ¯Q@Q@Q@®§à彿¸ºþÐhÄâmш² uÚ„óÎÌ¿×wµV×¼3©Í¨\jK-ñpa‚Ø¢$r¹'t›>]¹Ê¨ld|Æ»:(—³ð¤ÜÃ$ÚŒrÇjéöd[]¤F$߇;ŽöÎ>l¦I5£ªiÚ¤ºÄ†›¨YÛlˆÃ*\Y´ÛÔ°?)Yiã¾k^Šãdð޵ç^Ü'‰U§»ÚŽg¶’EòƒÙ·ÎÎpvmv,þ’ãXP—PR agŽ?1Sj²"ÎfW>õ…e¦ê«,{Ø] H5$ÔUŒgžà¿‡ïúSI¤Z=çˆbgѯ-ï"¹awq%“ ¹L¶çy˜ñãŽ;-SCk¿ äEq yIfX<Ȥ 1µã 2§ÓpíÍE…xžŸF—V7º°K™bfÛ“ —ɦ71Îy0Ç$ïá]+Î,É$Ð$¬z´eÀý~\ýMbÇ`†áRßK¾·ñšCw¨ V£;²|â6Ȥµ2Øãåà|iÙŽâáµ»A©Í± ©`D"5Ý…òÌ…¿ŒœïëŽÜwT¿ðE¥YÜÅŠ$ˆ4öâhÝT‡LŒƒß}k‹Ò´=CJŠ;›;Yg¹K;(âI¬âOÎ΂¿6 sÁ9<óW…ö°4Ôº?ÛWKûÉ4µŠá ‹‹åžgg#Ÿ¸•¯„|«Q]ÀË+¶_.$ýêɈÓqØ¿.6äõÎ{U9¼ -ì·oªës]‹–@Ãk©ŽY@Ì„)䃴(<|¾²xõ«›¸®u˜î¼Õ·š?2h¶’¾h)ŸÝÆ3·À¿N bÙiºªËžöBÒ I5cÆç¸¯áûÇ>”ÐB<)3xŽÛXŸS3´ÑþýäEÚUf£#ýk^}ÊmLj/6¦& jjW GOÝ Ž9p{×+¨êþ#{ µ€êVòÛ¨VìçË?œÃD2gäÛóuürCï¯uåtcÔìcšZI-ôõ¸ŸÌØHF9¸cTÎ@æ¡£j7¥Ü°êV±XÞ±\BöŒÒं@†î§¥b/oWG“O_IžØžE7%¤Œ.йk†`G±Ûꆶ|J·ßa×míf¸¹³Ü’Ãe¤’9 €3Ñ‚7ü×/{g­ištÖ(/£Y Ý<övgšáÕ˜©ùì.Í“ü2v™[$ché[>¸¿—P±yä»—x¸Q-Õ¿‘4° …]ÓjímÄ€6¯8§£h«¦Ü‰„âOܘÈíÎdgÏ_ö±YÓx]ïté,ç¹x6Ã-º2g$4«">Uãhzò:×QEqgÁW­ikmý¼ËrùÓª‹†I¼0l¼ìÇ 9qèºMÆãO·Ïs±+HˈJ·Ìå—Ç $9ëÇJТ€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ GUt(êX`‚2¥¢€ñFñyO4dciúS¨¢€ (¢€ (¢€ (¢€ (¢€ nÄó<Í‹¿wcœzfEQEQEQEQErßü]ÿ'€5/ÿgÿhý‡ÊÿFó¼­ûåHþöÖÆ7ç¡é^ ÿ sÿTûÿ+?ý¢½Kö®ÿ’â_ûuÿÒ¨kàªú™?kmÃ?ð¯ñÿqþÑKÿ iÿRþV?ûM|¹ÝüjQZ¨«\†Ýϧÿá¬ÿê@ÿÊÇÿi¤ÿ†´ÿ©ÿ+ý¦¾b(Æjl‡séßøkOú?ò±ÿÚ)Ãö²ÏüÈ?ùXÿí5ó)â‹!ÜúwþÇþ¤ü¬öšQûXgþdü¬öšùŠØ¬4}5'íg³þdÿÜcÿ´ÔðÖÿõO¿ò³ÿÚ+æãD4²@I4ÒB>žÿ†¸ÿªÿ•ŸþÑJ?k|ÿÍ?ÿÊÏÿh¯™n-$€àzT[HäÕ(ŃºÜúƒþ×þ©ÿþV?ûE(ý­ê@ÿÊÇÿh¯˜Ä4~`RTTxæµ8²[húˆ~Öyÿ™ÿ+ý¦ž?jüÿÌ…ÿ•þÓ_.­M­•>„9´};ÿ ]ÿRþUÿûM!ý«¿êBÿÊÇÿi¯™é§¥WÕéö;>™ÿ†°ÿ©ÿ+ý¦þÖ8ÿ™ÿ+ý¦¾d&ši:×@ç‘ôáý¬±ÿ2þV?ûM!ý­?ê@ÿÊÇÿi¯˜XÓ ¬]8.…©3éÃû\`ãþ÷þVûEu? ?h¿øNü¦øSþïìï·y¿é?Ú~nÍ‘<ŸwÊ\çf:޵ñ£}ã^¡û(ÿÉ~ð×ý½é,ÕÊͽh¢Š@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEywí]ÿ$Ä¿öëÿ¥P×ÁU÷¯í]ÿ$Ä¿öëÿ¥P×ÁT,=*AÖ¢‡¥IžkDô%­G ZAKHBâ”RJ(ÔRî÷ÅJj¼„ç©üèbÆ´]$9ÁcŠÞ𭽺j÷í6+TåˆÎ0qNðuŒeÅÌŠóòçµ\ð³Í.«=¬)Žâáä™AÝ;vû¾õ”›w±ÕJš¼nbx…ÒVœ“ŒqPëQ@­ÛîÁÅ×8þ¦¶À±úf½N/ éò´ªe˜ª€¹<äÿõ«™øue__¾: ŸO1‡þËZ®zWæÜÆU(â9}“º9û9-%1È0EWSŒW]ñ(ãkvUù9>ÃÉ çÒ»(Ïš)œu¡Ë&‰âšM ´†¶1i¬iÌj6¬¥"Ʊ¦šSMë\òe¤DzšõÙGþK÷†¿íëÿIf¯.=Mzì£ÿ%ûÃ_öõÿ¤³W+4>õ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ÿÙyoutube-embed-plus/screenshot-8.jpg000064400000041463151435171370013336 0ustar00ÿØÿá6ExifMM*bj(1r2އi¤Ð¥z'¥z'Adobe Photoshop CS5 Windows2014:10:02 00:18:47  Z :&(.HHÿíöPhotoshop 3.08BIM%8BIM:‰ printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT Adobe PDF8BIM;²printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@Wÿ$€ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMí_ü’_ü’8BIM&?€8BIM 8BIM8BIMó 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM8BIMM:Z screenshot-6Z:nullboundsObjcRct1Top longLeftlongBtomlong:RghtlongZslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong:RghtlongZurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMÿá#http://ns.adobe.com/xap/1.0/ ÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿîAdobed@ÿÛ„       ÿÀ:ZÿÝLÿĹ  !ÑÒ“T1"2”UAQSaq‘BRr¢²±b‚#34³’Ccs6 !1"2ABQaq‚’Cð‘¡ÁÑRbr¢#±ÂÒ3ñ²Sc“£³ÿÚ ?üÿ & BH (B@„€¡H$ ‘h‚€ A °I‚@#C£KÌFi0M ”ù8h7LÒå6§Ó"3èIûmV¥tøç#V‘MÞy´Õ¥Ó6£$cJVk¿ìÅß1ŽŒ„r=;Ãm –b·>Bã-/¥¦¸Dn É&FâR¤ŸY*;ªÒ3F¡&•ÙV”‹¸nh®êïå™,gLñZEh°ólÝjµ9©»š"|’DêDª|eAóA±VeÉIf¢CO¹WÈȬ;Í+¢Ýqj#ºFüs Ýk³©†];cDy¥2D²ú­)·­H£Ò¥×*qi '.[„ÓWÔHAôšŒú‹I‰Ôg\Û#nX©m;çȸÓ{M)ñQ [‘[”ÌÔ7e’£Í•ÚD}]âP­Ù¥$9âyu†˜•û-K¾IhùN±Â<¬45;K[,ü…aiP b;P›’~S¨a³QØ›Î(’V™[¢ÓåÉÒ^w,LüE˜±ÎG„í0¿5/S*é² '"ÎGtÐv¤ÖÒ °ÎÍŒ9c*+ÆæˆohœØ§FFÞ³+ìì,B£J›L©Õ¤"-,›êY™×%ÍÛm ˆŽÕ—¦Âº… ²j2&9­^´õb¬ÓæÝ–‚ÜZfÉòE-ÇJúóEXóïoBÉŒ –^_ÍœÁ"LvX’âÛ‡jWx|šRRâД¤ÒIIªÃ¼¤ŸMÒ1Š5k9§D̬q7enå‰ÛÓæ‰6Ηf™ˆ†™µvÞÖóLl¥#Ï0pÁ£É¨SêUêA¦–ÛoÈdÌ÷¦Ë®F´‘‘’T¤´ýbeÔ.7DšñÌÄOEÑS®"iè8bÓ6LnëOˈ™Ž›fm¯TÊ×Òc†“(gh´èrâ­É ßY8i#¼¢ÐIIû ½à Ž Lø{@ Lø{@ Lø{@ Lø{@ Lø{@ Lø{@ Lø{@ Lø{@ÿÐð“ I‰Ž' ;'&B—PÊ“ 1è Zå¾¼ÃÝ“ÆÛŽ›cËqÄ™´IºfÚ’®Ó½Ž…-â9¥ZZ–;«¥2E[ù˜–9ëÚ"s³Ã1>M+$,§3wÖÃãš/òò³rS³>Wåé3tú$–òt–ª¹”ײû•«E>3Px‘½BS(xä„ò½ÛJ­I u+:¨”áhËÜm9klþ_*âžÏG-6†+F’aêË8e×#µ._Íæl«Úéæ®ÃêA,Ìn’p`»No'¦¦¶ˆË›Ù‘é¥!·\R’jQ’®Ùn޲­Œ˜ª³’æ†GwXfáFËc*í¦æøR ÇšíYXÓw”•Y»"â½Y¶Wzü+'•\•ªrbD•V›H¯%Ýã,´ËîFjQ1½IêèM㳪Eièõ_™‘Y•&––XyKíÞÇ 'ç¾eVvÇš»¥!ìº6/YrŽÍEº–Rw4ÄL,اêéÝvâ>ªraéN¶ÚQao ÒlÍ:SÙêŠ5 ŽqçŒ v*bíK¯{­5ìÙwœÑ¦\‘“ç[sW/f»®ï†åˆŽÝöyŠ´¢DË”h’ë4‡â?7 #\ƒuÒq2RMÆ”†Éµ7¥$”Ø´t¨]ªf|ùa².7†Žêöe˜Z-¶'+Ã5×o¬ð·AF‘U4ø¥q¶D•nöÅV‰zµÝãó$ªÛnêGôš.@i™õ™}ô!xì9øêYÜ–¤ï#)&}o6„Ú^Åô*ÓetÐó÷9r~iê<ç„,dÍ8gÞ«c¿ÍñªÇY¿ÖàPàÓ&fŒ0JÊÐäåWII“ÕKl7 Èô(ÔOÈp•ÿ„¾Aç4Ùs>EÄÓ?žË©û¸¶»'àÄ´ÿ°ôÚ¬XqãlËù Úo½—…üüùZ¿õŸ4×*LLªÓ2û$©òòm%øÑa·\zJ€µ]A¡Fµ ÅlëvºHNhÆÈ–xWQ’%¦eaR¹c}vq[ ‘]Ó q6›ªÂÃK=1Nêm›nŸ”ùËÕ÷žšåé1£¹¨™ U~3N8ëoUe¶¦ÍKIšRV™‘"ï[O±6N¯ ÓW™fnKe(ÓE•îٿ®»Ñæjèð´-¯r½V&Z6E·nïV›z;Ó/AÏpŠ2‰7ŠKJ5%+µ$ÊÕõˆìÒ’ÒC¼ñ¤‡Ñµßf¼ã×-¿j? —_­ËgÓ˜óˆå>¯V©G3»2o~ë”Ú Ñbï[Õº~ã!4ÊÚù]¶ãÆŒ«s[uïÅ;xºÍªuðøm—dÉ‘Y­[­³ láê6,öÜXTÚäH”9N囌 ¤˜Œ" '&ÞjRy{ÄZ•‘ªòÔ³¿ÖHë<.Yòcfȱ—oz—7xÛ&äls±mm«³†#‡d¯‹B¦<ЏÚqp÷Oj÷I¶-uËZõØÛx¥¸¶ÁÅ™%&düûBr$TS)”ôL‚ÛQšmmÉD¨h7 Ĥ–jQ:²UªÒGw³az4±4ÙašçyV«LÕlÉ6ÛËØZër_“UŠUmD‡Z*ů~8ºîm·µvü„ÖcVخҦӛoÓä?IU2j"²L¬”lõÑ&åõ:¥š·…|×Ú¿ÕNˆÓ¾Âòï3¨¦KÖæ»µ³»­!!ig »¨N¥3.|p‰§®+Õ·³¶2RévjßÅvûŠ® ºÜ ð™¬G,"®Î¦Xi•´N¿!· úJQ,ˆWÍV¨¯t:Q…ôöÌþf9¾³-uvNÈ·¢ Þ!šs¦¦è_ËÉQam«:¶ØÛ7tÝÓ´ÀG$Ÿ¥Ó.t¦¿åtªáÃMü–ï?Ôv/_î+_øšßm.ýÓ¬JmjÌ·{oï­~˜êÍ L§2×§ŒÁYå¹…¤2§zÍqäIN:³?æØµ(ÈÜÞ“*·s*ó:‰oÎ[¦êmïaÓr¢ö8c³iè5x™{ødˆÓBOrÖŵÙÝN<”«;vø§µq¨úRx§Ç 2Óé‘¡Räl²Ûk[îÓ˜Zœ[„›êQï ºnØIÐ;¿ÃNY™––È»fyc+E±»'GãYæøÃª¸ÛdFÖlK73sv¢‹P“5ŸIé²·nÂz ¤:ÊšhÉIfz[Iݶ˺í}kGQ©Ä©:×ZÃBo¬ö±×áäè;6fuУRV_u#³’‘Ñþ½&;#¼¬Ù˜³jÓ"S""ƒ>:WºDx̳jPÒli%b[ZÒ«NÕ]M–™Ø4øšÿIƒv¬óÞ£o¹Ù··7Ö…ôm2ø[N¯Q—¼eHîwZŠ»——ê³W˰«þ+‚ïö¹ó,ªÞôå1ôÚÙØ.þøñͦÏÔ—|å?ØRyuX:Þߘ‡êkþÛ3e¹^íÍQoÒ‚òq͇2úqÏÒ?Ç2O.l-èÉ@ÿ g5ÿlå6W»sPŽ™DäšHæ‡_J0ÿÖO,£zHW¡ž¨^nˆ—‘öš— Eþõ¢cõ?‡t䧪ÿÂDþ–ñ.Œuô2MßG}Lk·—$ŸÜSKü«1rþ¡ðù÷±òý úsÄcÜ·Éô”ôËÔ&»Yf¢r3‹ü¤cBøÖ†}ò{Pgo×ǹfJNäŒèÇõ²åQ¿¿ BjëâzFÝ•'×_¤ÎÞ¬]ørG¨ßAIÚuëS%·÷Øq?µ#Bê°¶çYëƒ;i3®ôhõd¤ã2v<Ú›?rÒiý¢øhÒge•ß7œééoÉm÷ÙûýÒJÄb­#+šžÒ>sêþðóþãú]lÛkýFýß­û|Ç£ñ?Óº½]1z}uýï«û<æ'.bçþÓü©ˆóG¬ª¾žúkN«È¥U¨Ô:eéd@žÝmõW©Èi¥¥¾äªƒª4­j2þÕ²»ÖJÀüóú}Ëp*uiÑó, ³çæ¦J"2[¹‰—›9·úî¥&ÓlÑ~è’µús£œúkg˜›¥É­<˜È0©»ä"ž‰¦§‘Quh%™(È×Öì¶IÐ4ŸF²;–j¹º§:— “K4SËf–NDô©æî|Ø,ÚÒmY^qgoe—â¬zIB¡ÒâI›"»RªÊÅ ˆQW2Æ"ÌLE8™lº¤¥Gi­)4\êÝ7HÀ„?ÓM2}f©E‹›¤)ÚTöé2$.’Ó w§PNZN=Pm*AV!K~ò´1vꔳèT= éJÍîbbˆöc:YSÍ1Î4gÊ;‰ï=àÎõãµ?Éë~覀ÿÑÐ} ýLÏYv6nõ"§*O¨$§R!¶”Ï\u[c®­ô©-_+„ÜYšNò®öD’G®¢™/JÍÞœTåW©Ôô›µ DÄ%SÒÁZãJa K·KJÓqt¯&÷@ÊwÊåøwv@ »årü;» ]ò¹~Ý®ù\¿îÈ€W|®_‡wdÀ+¾W/û²`ß+—áÝÙ0 ï•Ëðîì€wÊåøwv@ »årü;» ]ò¹~Ý®ù\¿îÈ’À+ÞW/û²`ï+—áÝÙ0 ÷•Ëðîì€{Êåøwv@ ½årü;» ^ò¹~Ý®ù\¿îȉàß+—áÝÙNC®ù\¿îÈ€W|®_‡wdÀ+¾W/û²`ß+—áÝÙ0 ï•Ëðîì€wÊåøwv@ »årü;» ]ò¹~Ý®ù\¿îÈ€W|®_‡wdÀ+¾W/û²`ß+—áÝÙ0 ï•Ëðîì€wÊåøwv@Tù¤©“.ŸIn°ìþ ¨: |Ȉé“,.‚Ü;a[ü!AR0 ï•Ëðîì€/Ò#æz$§&D¥HS®G“DägTÜÆg ‹I%gwåõṵ­º%[­>U4éµ-¥–•˜eêu”Ÿ‘Š'A¯ÚtɆ~óaÝ‘ ÍR0*ù‘S&Iéü!B*F^ò¹~Ý‘$ ½årü;» * }'ji“ËÚL;²¤`ï+—áÝÙ0 ÷•Ëðîì€{Êåøwv@€×컆LºZH·Ùoý"(MHÀ+ÞW/û²$‚pý„œ2eÒè-ö~P¡5#¯y\¿îÈ_‡5B§ÔimS$œ*šZL–×Óë0á8ÚÓ£B‹Jmû+Q{F|štwGžd­=h¶cÑóÄqê1¾8åz]êÍË>Ÿ™¤£€×ÌˆŽ™2Âè-þßá Õ#¯y\¿îÈ€W¼®_‡wd~|Ó BŸ™% UÛ2×ÝÞM8NÜ%Y II«ßt†|šuÈêí½++阶¿ié4âÔ>4t]Ï å¶&ê|t¯ ¡€W¼®_‡wdh3 ½årü;» ^ò¹~ݦ…˜w‘M˜“÷“‘þQ&&cqq¨ùÑŸèµToî&B`¥´ø›zÄõAzêr®æhë’ëURØþŒºëqɉý†3·‡é[~$ŸU~ƒBø–©wexõ›é.µš=]g±S¯ŸßrZÿ5¢†ð}û”öTо5®}“Úo¤¼Ö}õžÅB¬v}¶¿ÌÙŒíà>éM ú‡Äcß1yT=mmIJ¦M6Ìì]ús.uLôö£˜Îߦ|:}×ââ4'ê{³î§ðœ=w© œ…“2Ô¹&diÄ'Æu-{­C)+Ê/¾¤ýÁäü?ôcMRôû ¿Ûú+é=ˆþ¶Hªé’ï¶ûº“ø©÷N“Šª‹«•*«ºL”úžSDÂb'¬E¥-¥(I¥ì!ôÜX£BEiY–Ÿ¶Ÿ-Í–r¼¼Ò³äˆXöWa°UóUz½Xj¿U—Þ*Ì%„5#vÒ,LD¥-Ô%);¤’úº~°´¨ÙÞõ³Ôé–‡ë—Õ1O¸ãÇùµKMÇ·î/±¼"ënTÝ ‰>³ú•2M:\ŠÝù—ûÝ=}ÖnÞ8åõ„É¿”D›i}nÖ+gÌÓ“)¬¿5 Gšm*Ti£MakaWÛ^êSN –ƒÒ•’o'ÞÉ«ÕßQWN“Jr¸·"KyÉ›ŒÇ[æ·ÞKî>¦Ô¡n$”¦Ò²mVv@"zÓêT)³*,Vﳦâ¼ä/)3wik|Öñ…n”hI$÷W-NƒcçúŸžjjusj›Å=Nvˆå‘ã ŽŸ!ÒyƬCEe«+o\º V5ÿÒõùœß‘i“²“͹N˜ÃF&VWÅË7d¢;:§ þTØÌå ‹S›_mèl>ô’yeq \³vj3³¬z åU€ÍœN›Î1ÅF°¦óŒqQ¬Äé¼ãTk1:o8ÇÀ‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X‰ÓyÆ8¨ÖbtÞqŽ*5€7œcŠ`'Mçâ£X1:o8ÇÀ N›Î1ÅF°âtÞqŽ*5€7œcŠ`'Mçâ£Xœ¢Ëó\'e>ÂÜ$Ý#ß’t™û^ðrÊß{`rÊß{`rÊß{`rÊß{`sÊß{` $Ê|TËJ"LaQ= 7QÔ÷ÞÓô3 AË(m)qö\YYfý†gï°–Dûîy[â1âlÿÓèOL¿P>¥zQTÜ·9©4E(Ü*ME³‘ QÚ£l‰HZ/Ú«‹I(ôžÔßÔ©^«ÆM72Nj5*'“NmQâ­i;Rn©k]Ó+S}j$ž’ÒëÊE&er Õ2ž”ª[ijm Q$ŒÐƒY•§£I'@Ž}:u.J¢Tc®4”v›q&“ùÊÞ’ùHTôç‡]BKpಹ;ÓdjQŸú8:4ƒ@㔚£QŠcŸDC"2}M,›°úñ•€ ` rœY)I­L¬”¥Å(ÐdD…èJ­³ ý†án=8®Jm…¹&Gd% n4™(mû+QjŒíQ¤@ çéf%¥³“œY¡ú‰FIé°®Zv[¤Ž®ús˜è©KKÄdËz¦¾¤’ŽÂQ‘’NËNÀ¢Ür÷§Ò«ô73êÔÚ]=ýIóyä œ°Žé‘ÚG£HOQ]Q•¶ØvZÜižÊ­P®Â«ÓMQc?1úa¾g9 G3%šJËlêÚY >é€?ÿÔñ˜Û½2ÿí©Ÿ;ßì8ï:õ:…P§¬³Lª Ejž|ɽßÊ—-#IüÆó¶d—ãT–Þ[”ô¸õÞEËoBU Ô_¼iH2TÌL­ÓbIMøÒ%2ÓÈ´ÓjâR¢´¬2Ð`EÑòÕ /¡ã£ÃDu:FKrÕ8³".‹ë5Ÿ!Ï3áÅfK–„Ü™%RIâ½zûm-$‡,öZf´;gô÷ß?æ5ƒ¢o?åå—+'•;¹['(ª6·ÝíÍå˽k{#Ÿu’ß"Ö›ìï1ßNžZîè)jw¸ëºéûµ±ì¿³NòÞm—Zvme™®ú½ésùò”©†˜Ê­ç ÌÔH9jkzI²Ä³5“Dãí“Jt¤!N«uÔRS¼½vXÏ’R)3-kv_?ôÉÂŽ ´•îéÆÛJÞ2ÿKÇÙ5­xpQ<ø¸8øx¾µ¦æÚ½\<‰?Å¿Î鋘O,ZNã˜IÔ©$ñ²Vo:;ÆàÛÿ³{qÕ´¯rß=¸»ß¯Kó[jŸÊï.û7µ1ÿQ’îKòw5仺Ÿåù¹mûw%ê¤uÊõÁn׉*©CKšI=“Ÿ ‘é©?rÄ)*/¶hD².Lχ‘_$ãöæÿd™]!±aY­Ì‹.æÛ3¿íF Y¼õ4ÿNŸ¦Ëͨ«Ö&°Šºæ0¸LÊmõ¡çä¿üÅÚËNä—`—q;Å%W¬A‰Ä°« wÕ§Á}®›J³µÓ3;¶Ï_GWOU½%© ¯,ëN0Í%™2ÖÕImÌ6&:ÕÓKhmj$šo]i+$¬ï}K)Ã4Hž›bß>Ú]ðÙ6Û³i£Q·#y%¶ýŸ7§£§ëmSi©ÈCYë24ƒ‰-Si2\\–ÚY)«´Å™¡½âröƒ;©ìØ›Å×H˜Ž ‘äiÿë³ýß[†JÖjØçÌ¿ìøSÍç:¤r ÀFbœÙJb¤ITU½¥+ì©d“4$íöîÐ*[ʬ»RrŸ** ²RMQÍm©{䫨“4©:Ú.ŽÈÍ5dEn©5¸'zu1”ZHÚ%™$íù€=€ǤÉQËt˜ÒÙ7”ã’#JµF”»–Ã’™lî™—°ì>„æF\¢÷9›†HQ±.BRKpɵ64”$­QèKŽ*í¿ëhrÌíGRƒ=†Z)lQj2|ÛB”NÆe³iv¨ŽÓAömèaª•š²ÌêMÎSs)íÏTwR–Ìî¦4%š4¤ÊÃRÕoÖsTêÕzŒ,ÐÔç‰Tîï=,°{®ª¢Jm´iO^Ë4,×õ» šdŠ·W*&O Þ;çw¸›;ÅÍÝû×ovtYzïÈÆ€2TšÝZŽS –ñ²S£¹]ˆJïÇvËèë$ì¶Î’ë|  u¦ÿÕñ˜ÊeêÓÙz¬Å]†’óÑÉwpÌf´)Ý:/[`ê¹™kYýõZRž$­°]F[ûˆ-óö¾P$ôeiX} æYÍ•|ªù®žåøŽ^–›.|¶e_¼??@zLÏÞ v¥Ò@ ãùË5J‚tÙiBRwjhÔV©å,Šú‹çPŸ`Ó*„d²˜ò\i1œ7˜$(ÓqÅ©6t‘›­$6sß6åš•)&⌜5¦â¯ºmN€íÕcLhÍÔ¨lN•ƒ‰ÞMÃA©•¤²»uDWˆŠ÷¼?Qòñ´–'Å6P£Z7Jé)D’3"ÝtÄÛó(W½BE^Øð¨±éÒjWS:bkuÄ%D«¶ÝOI‘Z` Ø9w2ä²Éne\ÒÍIGˆ*¢Û´âcà“D“7•óÛÕuú¬¼w{6èù€ƒ•s.JËÙ~¤Kf¤æf©S¥SQ;óê)6¨–V&÷ñ:þñ?ÿÖñ˜èA€ ì>€è>€è>€@ÿÙyoutube-embed-plus/screenshot-6.jpg000064400000446612151435171370013341 0ustar00ÿØÿá6ExifMM*bj(1r2އi¤Ð ü€' ü€'Adobe Photoshop CS5 Windows2015:07:30 20:22:14  Ú Â&(.HHÿí,Photoshop 3.08BIM%8BIM:‰ printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXT Adobe PDF8BIM;²printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHH8BIM&?€8BIM 8BIM8BIMó 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMGÂÚ ssgalleryÚÂnullboundsObjcRct1Top longLeftlongBtomlongÂRghtlongÚslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongÂRghtlongÚurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMÿáRhttp://ns.adobe.com/xap/1.0/ ÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿîAdobedÿÛ„         ÿÀÂÚÿÝ<ÿÄß !"1A2QaqB#Rb3Ó‘¡±Ár‚¢â´UuV’C“$d”¤Ô•7ѲÒScs£46áƒDT%ð³t„5Ee&ñòÃF !1"A2QaBRðqbr‚’¢Ò#¡²Â3‘±âÑáòCSƒ£Ács$“³ÃÓ4ÿÚ ?ó ½²ô­o—L°ª´*ÕÎÕ,‰ŽBì!¬'«OitJ¼7ÃUJÒ¬ì6¥L¢K¯b´žŽ‰èšå¤U!*u°Žªëÿó$žu®}žò³ÕºVµ•ðP¦g-) œDá-cf·I³‰`Ò:8m*Àê!J´Ù¶šfN¦&èÕo.ï"¼A'´JÍÃXäîÛ«V«¶c‚ 'µ÷iískQÔ„ö53Ñ׺='­à'¢¯^2°ƒ|w×Ó\öghjÊo-_Zi•¿VõŽB©¶à˜­•éY[ªvAÃÏÈ„[UÕ.ˆŽ ’nдpѾšÓ\±©äzèËxŽ ¥¥žE®[O©Çº9:Q»]9á: ë×$äEªÓªwO y¤4Nø?^©³«ž9FÝŸ5RW6>ÍeiRÁžÒTÔ¢SŸûƒ>š´7´psÌ©i '™j63¬"–© ¡#ˆJIÓ[Q–ÃYÍh”µúšÍÕ7«9mŽC‰ºµ ¿Bøõ»¨•z9¥/›i"/™+K"ŠòÖ 0ÎÛT& "nÔ7ö2Ò\Vµ£–HšmµVÝF¢•\¦Ö¦«KKÒY±×z¬ŒÔ Q"€ ( ÿÐóv•|õ³¦@ö’­&õ.{X=†5„¯=K¢Vèˆ`’´…- *.Ê™WwkOcy޼¬7fO¢§[ ê­KKJ/²_«\×÷•·VÕ¤4ÁFÓe]¥ ¡'³ZÆÍ§Ý6t}˜¯ž¯‚±‡y“.¯¼œLì¥VÒêòzm*®Ç'ˆ›µz»¦87kãª=®]~ñä„ö WžŽÍ±è/þF¦:<ª¢]qÞ ‘*¢¦ÕU¬-*ZnVð›;•~Gñhä»×5O2W=ü˜¯FúõK§â<Á2(STêUé÷¹mçY×¢_¨®H•p‰U²(•ª‘åÞSjDªÜÍû; ›¸™KaÚ¹µ>oO/éWEœÀe0²J.A‚iÄ쯪Iåë®ý{"ÑÂm"ÛMµµÖZص³ZšLøÄ®kõrîŽNÛKÇJé¯Dê„§(5¯/o ­5õgäÎ —;·£*#ä¯UÙÕ†®ˆ%øºÊZû Ë¢³–S!žÕ*µ:¤ñ¥¦cEçúÕxtÌp[>çC~dªÞTÂ>ÕXh•Áªqµ£K2Þ™(] UÙÕ]Hõí¥c.Ÿh>ÅBoÆÿÌ%^ŽYŽÙáNá2V¶RU‚¬%¼²•ŒÅDº"8úU+Z9,MÔ±T[ªI§Mg0T§’­U䚦ÚK)bª†j( € (?ÿÑóô­jê`{IS ¶u7Ҧ鎡ô± a-vÆ0Xz¯ ¡…­"U©ÑVÊ0p¿Z{Ň“ÛÔÔŸ%ªu¸íÕXÈ ¥¸žC_«Xíê›õ›©V†‘[M•f´‚ŠžÄ¼Õœ´·Cw‘8é«{6(ÎÍ5º`¬¾ÈÔËo Í;UYqW©Øöji.Ïa¾:§<¹µÇ¨õïˆ_E_ØîÛ""%Õv"tª­Z:<˜‡Lðû Æœ2ŽÏTRÊ€½H¾zò÷l™–”¬;Vâ2ÝÆÆI2"y+Žü»)œ\aŽÓÙTš/ßQ¸âÚ¢ŠmêZŒâ"¶âÝ bûµ8geg<0Ås.èŽXdYJ3è›Dú½Ï-kªóIÊ2òO+““Ž– b¸M:+ï…m^î«E£0§o$Å6ÖÍ"¦“;W®}“Ë—tÄÚ¢Öôž¦¼Œ7ÌŸ˜­N®3¡¯>ªü÷oöiõV©·« =ݺ+&Ä ÕKK9†YíR²¶¾©"¥)´N›Õ¡×-ó£$Q|•[©cUM• ¤p‹ííZQŽÈà§0 !Šùê62×ÕªÆ]q¶q7*¼pÛÿ05z9qÂÜÛÜJÖÌé ±t%a-ìÈ¥DQ;5L·ŽŒÆí­mG%šHú›& 'MfGVê•5ZZ/ML³–¨P € ( ÿÒóm­p´•hU¹öÒ—Z½Dž‘¬nö7Í^¯FkC ’XR¬‹AtOeZ{ý•“’ÑU¹(•mn;õUòæ{©ð×êÖ;:—j=š´6Ž…ÛM•-õÃ{]ƒªOBÝ UAÏQ—vÑn)Qhvëö˜›¢[ù1Ä'j«2Ꭷh‹¢¦’ìÇOmSž\ú£Ô~ê{ôVžÇ~Èô`T¸¬¨ö„‚ûw“³ôöÕooKÅ—jä¼|‡žeBöª©.ñ˪יµ®˜œºÛB2·d°€ ÛÍzã‹rô;s C”Ù5t[¢¥ÑkI³(¦$€Ñ~º®Vˆh’‘éQ’jT父ˆ‹e¨›p¬QçŸÚ+—˜c7?´É7(“­æ‘,«ö@µêü¿fco.EÕ^œ´ÁœšÃc‹qx7VÖ¶ÕÑm²ò ÿîÏ*õ׫׫›Ì޼ôHYãO '׬öÏ,ut@'f²jIR©hT1Ú¥ª9Màšâd@|ËZV9tÞq ù¡ŽÆÓÊ5Œ2‰Ê.Û*â8<Å™)V«-•àó˜EDªnçס’¹åÛXdÓr¥{Ç ãoÞ*Ôr{<àÿíþâVöèʓʬI²¹¥½£€=JceQÑÃ1Rî­o­ÇveŽ“©±Ýu™[Ú¦KSK-L²–…ÓTVE@( € (?ÿÓótÖŽ±×S’–ÔiSe©Õ¬®‘JÁ®ÿaPMÔ«ÃZÇ ­Wƒ Ÿf¯%ã‚Áµ¤«ÇF±î¬œ“ÚžT«ër^9Wù‰¥ “¾MkYmê¥Í7išGÛè©Ë¦Q½¬¸žj®xE£„uöÛÏU‡ è…ˆ*öŒ;©^a¼Þ„¬å¿’d)¾•IpV9B˜‰K.ú¯MÓêVWêÊ E6TBH8›k;³ÂoÕh¶®«! .i.ž¢×Eò½Öþ#lË2‰ïêÕvõWLzUtè¬µŽ Ä oŠ%MQ=3qI¶„­²­xrÌò‹Æ]1 7© ­6Ã%榴§WŸ=.di>g%ø)]6èÃWUSer˶c†ƒäªÊ•,WMNqõQzëmnÇüDZ4è­62Ô¯[mbÖ Š¢YVÒÝHu·jf\Ö’"µBQ"€ ( ƒÿÕó%_.Ø SÁÌaºÔË3$e¦ÿ¢°”ùÉV»50ÖZ´„á“MÊÓ<"ÑÁf~*­Y᾿u`äÂA”âyR´Ôå¼roÍbï“8Ãü Áƒ(ælœl¤²¡‰#tò‰R<›OUãUb:$`òîr7ØÎ/Ÿ\blQ@TDMJÿfÚZù’":3‹å(%3S ‚…¬ÍuNÄM§çªZSZÄt\ùcó–8®ûšT×ÖPMåút¬Ê¶¤B—/“ð‹bð›sZ‰‚ø.Åû+U~4­¢aHçþõËܤ.J0u쌿bÚ ¶‚Šâi/WZоû³]~4æÊü8žEÅUEUÚ½jµêL·Æ ÙîÊÔû[zˆkÒ•:em o&¶„ä…_"VðÃÉžUÎ`·Ï2mÑ«ëVê¥zTBØ"ÿj©vWûuJ­«ªÝÈå£0‹ð·¤´òkšâe›óרÙÕ«Š«©Ð•œºëÐó)ß[EòÒ¨¼p°ó\QLhš'B"Ö—èàŽªxô%s˾°USqjÚÑÀĪ áò^´¬¼þÞ«§0˜–­ÖZºf\úëʆ½Ígn8h=5šY´ÙQ—M cVÓÆµ×.-МæAE‚„V­®æÖª*V8nÔœ¾Ä¨Ê“c(ÉÛZôTáF ,µ b @PÿÖóíÛVwÀZ´"O¡BÔ˫ÎM¦'´ZÂO'«v“q¦×Ѻ%^lCpZÓØZ8(ÇÅU«Ñ¦¯u5Ê'¦YùÒ¯ªXMyÛ}FU;\Û«‰W˜¶„®wNž‡›*²ì¯FÍõÔÄŽ/ùv«^e½ô¨¥Ðjû^ƨá¤Ôè¬å_* m¼•K8}§¿½¥MÓ“v>>´Ž®MQë<˜ŸÅ—ÑW·Go“…ÏÁNw QqùRÂÎ+>+ÐÛ‰Ùq==“®mº{áåøÛ{aê<‚68d&,ŒÉÒVEE„ÞN­5çÞ1Ãxœòˆ‹!A±D]½åehZ²“d›u\]CÒˆ´‰X”ö@˜tâš°LŽ¢PKÚÞDNºœe5áļ$(ïÇ•B*ñd†„=í¤‹çR«ÄL+5̟Ì˃³XXäá êM7TDºíê½cxålaÄ|}Í£óñ¸–É#‹’ Êj€?H ½/¾Õ«FæÄ®é”Û¡¹íE­#£‡gV±v¥W_Téêºò[~ÂIû•×o+ª¥š-YY+ðÖ¹­<­XàÐ:mH0JHí½Sc=Ò?ÆVpiêµr‚ªev{Å­èéÝѯ9Ýrh«Ó¡>­WaXô¡…6Vrè¬psŽÙ1µóÔÕŽže=X”ûU¬àÇ*Hô%c.êÇí¹U‡DÇaª¤„Té½iW c™Y2Ò‰qšWÞÖó<3ŠFU‹W<µÁ4J¢pÚlªË¦Ì5´Á­u¹7GTþuQq½;l•½º8©<ª]5”Êö³fšÚеXZ(’y´îÕ¬ôgíFšlJÍikjª@Pÿ×óôUõ S¤  Ú¿’­.¿ Þ3—Ú/Ma(òz¶k°”_WB–«CL7¶åkTÌpÙŽÂ¥ÕÑ1ÊßóÅè­u"#–ü×µÍVØåòkʺÇe+•}=“bUf]ÕŽص(©§·÷jkÕæÞ=iQèÓc××Ò Ì[Ú²™WÉ3¶òU,âˆäì¾.¦ŽÛ{¦ñ×ÛÖ‘ÕɧÞ>—ÿ,^姇w“‚·ušÚ|:¶·ÏÄðô+Ó˾œÈQPXˆ)}"*Ø¡¢Rë[W—åÆ,íÑÍW)1`ŒÚ·tÔ7ë®^æ˜8ŽèŒu$^ÆÕµ0´#_çÜ1§›‘1˜ŠML“Rªù¥kzB–‰•G+Íþæm铈–9£ˆH¤ƒÕkùjØMiDza¹— &2RIaDŒ :RÛ,©ÕjÇerŠÄ׫ξ d×!ÍÙo¨Z4`ÌÒY~ëUz¾5qWE:+nôV–Zý —nÊÖ½7êÃ{®ÔWÞ+ĺ$GRÆH;t­uC“ÉŸR‡•Û““þð¾­rÛ«jô7š˜êœ1!.º›#ƒxßXÃ=WIk^Umï+}}]^GB|ô×*‰ðêÕv”÷PAÙ¬Ý5è^ ÚS~šVQ1ÂÛšm ‹ðk[GŽT„K%s[«¶ [qj®cLx¡L^…ZÒŽë+Nv+]¶ ÖóÑ'2¨Ú¹¥ÓÁ4Mê†Q—j³—N¸$NpžCòVºÜ»ø–fe’(Ý÷Rµµž~94ëZ£JÐå±½½4‡V8I<Ò¤TU­g£†z¡K*§ž³Yªõz*£@PÿÐó ô%KЀµ0™„¶,P£­üµxuøQê1˜;Åé¬fäÇ!žÂUQª8*•1-ðÝ;+ZÖSŽg²µ9N¸á-Ë+l‚§šµÔW©NfKñ<Õk°òê®GMÔ®I•tG~­Veߎ·Ðµ*PÈÿæ}ÚµeçÞ=iUõ*û%ëR:––QäA¢¥‰*³.=¡µ…÷C^o™=Öwx³é$ç6æÏ.'˜ AÀEFÞDÒÿ÷Jâxå¬Ù<3š(m¹w ^¢ºz«W°i‘åþT(öGÜ·ÃxÌÆçuÛV¬Ì4¬DõTsÂg\žÂ‘<…¥ÊËûšÖ6Jñ®‡¹ÓåþXÀÉÍA€0^&´ B–¹*û1TòÝj±›Yž9ÃÏfáºá8âÝÇ H×ÊD·U¯V8‡M`›½š¬É~†éÓ[R\S°Igj'©1˨ò§Ì—Võ×^;È÷ÜÓ$¨¹+þÔþ­rÚyvR8 ‰¶¦%ly•îÊ]V¥º+xáãksi÷—ß ÀK0w÷•Ñ©Óäô'âCh9´DÿVŸUj»§–š£Ð¬6›©Y:i† ²A­jÕêLp¶åtqÉÕZÛ£©VÙ\¶uÖ8(‰¸µL·ˆà”Ó8áUë. z¥tÎ<„TøÑ3Ã*פ"ºkžaÑÝ"„(K¶«†3hÉD|zvÓµޏ®êðàÛy´ˆý»-Jºã2YSm*Úv}4†˜á-%?‰¥m=|õ@¼·UôÖRК®Ôª P@PÿÑóô%z6^Š”Ì&0ãv ¯W‡™Ohuã•|kHèª5K#DpVÕèÃ{n­k±†me¨‰5¥yp„r ~´­õJk¢ÜÀH¤å¼•{©æF!]Ñ\vêÇÇèwÕT™w{¶›™V°dIüa=5j¸-´°¦¥¥ìöi\àœÁÚ‰TSɃ5Mä¤Ë‡œ—ÅÒŽ»û¦ñæ+Jõqé÷ÒO°ëí£L‚¸á캭êòîòí­cÁ`Å0¨d‡)ÅN)'Blì§š¯WÉÚîéàKí/KŒI¼ÄƒO*)ýEó|ˆõ=?Ù¢Äø999æYe²ï¹¢+›l}‹{ï«ýnŒ)ðùñèÏ|›DÔ˜†­*(®ÅÚž‘«v#¶].>rü¼{fó€dˆš•U6§ž«5Á’Qùï•Åå²Ò;Ϋä§-;ŸÆwš˜Î3HPã/㺪–D¿^„®¿^9Nº}.t5Õ2è¬5q7j³(¼pAå[kqÌrˉe©·TìŒ:Ÿ$žV"ò¡-uS£ËÝÍܶ^Ùo/”É~š×%º»ëí¶¶FÚ.5KàÕíÑI@µ±Úç‡.¿yÐ<4 Yƒû éÔêòcˆiâPªg,¿êÓê­SwVڣЪ´›•Ž]ãƒü;hyEzÖ¯N¦Î’éy¼PüÀ¤‰·Eë¢c‡“]ž§%Ód$ò*¥qYêS¡AMÊÎ]5Ž £§ñÁô¥iWŸT­Ù–Kæu[ìÓ]ÑOjŠð¸[Ö1.]´´4ÈÒèµ*S\Ø Ã2^š§{zø“-Ö?§¥jbÉ·ÚJ:{kyêðç§¼U{KRßÙjˆiŽòð‘|Õ·±ç[ª¾ïM¼õše¥ª  ( € ÿÒóÔ=oe¤Êò™Ã|C•¥:=/¦y ®*Õ63ßɽ•¬ì§Ðá*"]LÛei˜j×iR¡]}Oqg¢X•oª[êQ\±ª‘méKÖ»ùxCÇÚ•ÅyåÉãGh›+9—|CPëªåƒGøÊV”—Ÿ²?˜–e6%Wd½½1Á9i½Q–~My3$ÞJL¸f9.HºÏÑSGFÏu-€äü¤÷ÑÓímg 6¯¡+jÕåO“í•õ01±8×hT‰´ÔnZäKtëê­\>O•m“ÕáuÃ4í"ªz¥Ä¾xE˜(<Á6.É’™}¢ÍºŸ¹ÐUÅåGµèxwö:æTÙwB¢"¢ïm©u®'¡W1ñ7–¾sÆ:°ã|Õ«JoÛÕ¿¾·b­Yå¥c—#å¼,Œ¦I˜"á8¾Ô“¤@zkkKiˆˆ/—„‘Ïs°n7ÂÇDÚé qÓÅÕå#U×ï«muáãíò'¼†WÃÌ„w 1î$´nú™[ ÉoƒÐ^åmœ:ôùu·¬:ÃÌ8­<Ù6àö€ÑQSÜZeèRbc‚nvj²›ô7ß®n,rÚJn¢ÒënŽo”ã¨òZû2_¥]t÷^-çùŽDõÕÒ_*¯Õ®KuzµaR¢²´ÂY[ÿÚU|£ZÛ¢‘ Ðì{Ý®XqǾèž²çö ]Z]W» |MÞÎÝ?ÕÕZÏwWVŠÿ-Se.5†]£„Ž-’cìªôêmK°e[å²UOQ~¥vOG¯ßpòhâ|%úµçÞ^ö¨á°&íg—EcƒfSøàúSêÖ´yÖ÷åwË üÈ·OSëWLÇ «ï(’Q8U̶øô“a, U³=5àí”ÛYKÑÔNVÅ«ësù}Mb"¬”Dé½m2žñR*§ž¦]l;¢{_Èkei.KZ燙~¨Ç›!+O]Pj½UT±@PAÿÓó#uW§Võ+a1‰TNýiW×/_į¤Òm”ê»XoêB/BÖV–^1Ò"Urìˆmm•x”Ìo¶TË-}N¡§µJ×\º4Ç©¾EGÜ­-)ó«˜FÅN”ó×5ÞŠx#XËÒ¬5±-¬rhêOMiGØþb]¤Ø”ÚöôG¥&õQŸ‘ÔëËsò®!6<8éÚ|“g¡<«W­&^Výõ§WBÁò# h6ÚÔh7Y&Ä_2Võ¤Uæoóo³ê„ì“ÆâUº¼òyz̉VqL«<Ô¹@BEf‰-ÃN„©VeÞø1+Ù¹†¾MIº_LjÊå7.xŒ¬ È ¨Á|IáO^;—GÝýÕe·_u[j¿låÝÍÃÈB X×DWSÙ<;QSÑÔµåZ&'öuÌJ?#<ŒªéYNþAKÝjB·Êhîäfdm½–¤AK¡Zö«emÃsSœzÌh¨ƒ=宇+¿_ºñ6u—\Ç"g9}©mÿù8`€ê¢Ù\MÕû$«Ë8ž²Ù‹‘5”i$ì ºðl½”½ðô-[>]¨¦óO(ÉÂHmÔ“ÖÂê%ˆW© *“W­«Ê®ÈúÕ€íÖÚÏiI ìªn¾ØôºæñcÒÝLÔ®¸÷^Vfî>îÒ½qÝêÕŽª­eyY:|À¥ð/zÖÝS™Â–[_Ms8狺…⥕;{ÊéÓ.Ý!ÁG6H¿êÇê­g¾yz:£ùJ¬tܬWÓ$1 ÿ¹1öIW×Õ;cÓ.Í8ymS§q~¥wLpùêGó0‡Ú»öKõkοWÐjŽ&ÊŽc†ZCʲ+Ф•¶¾¯3tbÒéùÜHþo"mFïô«²z<ý[3w&”žÅkŽ]ûãÒÑ‘öiQe4Ç,¦ÚÆÒïÕæ'BÕµË2b[CŸo%tÕä×Þ&— :—êÔKªMœyWthÂûfx„¦63BƲÚkÒµ¬9-ÉŒûq–©)5^šªX ( € ÿÔó(&ʫԬ6¦WÂ^ ‘…ZVܽ¯=²¶¯¹KË—trBI%g,<^²v‰U‡|7¶Ê´-0nŸµ.X÷Žâ"ñkJK¯Dz‹NP÷*óÕ§™_J.:*"ÖW‹Ôøeë­Hh)¾´…"94u-)=5­^~ØþbY­ºj//gJÃåNþàËš¼8‰´v+Ÿ{W×L¼Ÿ™ù±YÅzº+vª‚´Ò{6›èDN»y«¥óV¼Ús)9y&¦ú®ˆˆPŽåaØÍ¾á›ªD¥å^EJ²ŒÈbää{¸©ÒiÓAIËL Xàb¨€Egº‘USp¼•«"T! “‰§oe:®«A/É\Ã?“²âÞF2BÚLE]ŠfõĪÛL^>¶š÷Ú“õ;ÔHNdƒ^8ÆD9[zöÙTL}RN‚ó¯ªk8z´ò"јKÇ则V™mQKŽ”²^ý‰™y?Æ|/wçÌ»Ñ@öˆH+²æ¦_Â-wꯥæï¼wåüùrê"£êûê(¤Ð%ÁÝ«ÓîU§ !¬^jeƒpуtÜUU2$EÛ·nÅ©îC3ù½%Ãr)Ä»n ŠÝËô§Of“fºöMg0§ 6.›Ò¶Ã¾<îzkgÖ6½ªml­?1îÿoýËPófŽ_ùµ[ðÔ8š¶ttÚÕ¯ÆãXßÎd¬–ÛjÊm—M|ºûZYz©èæ3 >´üÝTN•m+y÷UÕ^Tw¶<¾šæyû}÷Oðm´<«×ê êÒÓÈŸLš@æDÿR?UkþóÕñyÔ¥GMÕJÇ.5IaÁW&Žõ_\òÕô˹9‹—WeýŸÖ®ÿcæ"ØØàO™oÉ>‚­yÛ:¾›OF£X·«ñÿÞ#ýšVÚº¼¿.9—bÍ-û¥ú•Û=.¯ó>Z{ â—³äG £1"£–ص6ŽøóÃv“msYèj'57jÚØù‘Á,AˆK"%²W]^N,o-å7ͬ—êÒe{ì›q Øa.½5Lº4êÄfO¢’£vê­b\»ã“ ¿«U³#u验P@PÿÕó0tU%ëU·ZTJÑÕ*ÆÈÕœ[—¹ª1¬Ýý¨•{8ö›ÄøÂJ¤¹üzO*"^„C~¥©…¤Ù~6¥É>ñì$»‰ZkêîñúKQZÚ:¶ó#Ò‰³Ä•†×âu“ÐÚå™{T¯Ñ=¢ÔıǨÙôþ2>šÖ%ź=p³ræ4d>²OâìZè½KÐ?å«Ö¹•¼ï*uSzV–¥¼n'R"ìêJêˆ|­­39”«/ºÑŽò­öÛ­h©I¦¤#Ùݢd›vúÞ_r‰(Ú"‚¡^ý_R¥ Ô¼\7䢊¢“ÀHšt¦Ò%JªKB;ÄpÐÎ¥Ò(¾UÚ¾• G0ƒÝõ&ĺýEúµzJ–9ä®wÊò¶@eÂs‰É;ÌB]ÇîOÈTÙª,kÛ5—wÆ~Q^\w2ÓÚ¤iql{Š©º*žöþ½q| ÎÿÔW1æòoå$N™)u=)M×WáÝ-]Ñ^ÚáÁ3›e ª>zçhÊ-´’o-†‰(«ìªPJ $ê%ïå¨ö½_ Ù¤ÇЙ/™“Éd­¯î½=5ê©IOl^šçËÆò=÷Gð†B5“u|¡]:%µ©ÝX+âkÜlñ‘¡O¦µ‡‘>§·£Wn¥:2tÖ)ЖÁ¥²±þÍ+MSËMõôKЀ¯.ÛgcëW¡ì|†?šóŒáDÊËÿZç-yמ_WãÁ½¬«X7Ã8ôÿÞc§^´­ôõy^o͘dÿ6Žÿê—êWlôxz¿Ìp©‰ì¸½¯oÊBa˜ú°¨VèÞc‡/(æÓz¸lõµ´˜›”ÖÏËŽ4û¯ègµ]u|õ£68ÊÙ*iËQ.ÍZqÉ[lªºŽcö+hyžGT|ÛqV¢ÌM—¦ª1@PAÿÖó0VoZ¢]R¢Í)¥tÆJç‰õ=è®5š»Ù½m. ½ ⯵_=Eº9¼oxøR©ôâTÙVLÁ±'´JeÉ1êHcBïZ´×/Cį¨êZY·¯Vþm}2‡EN𶬷t|ÿ‰ï‚n¥qL¾†‘ÁßV¦%ÏQ¼’kZÎ\~G‡BÆEøØìªYtñó‘íú–Jì¥qÏß7¿ÕQn.*¢tªZ´pÜ9-ªôW›ÿ…¨ÈÆN@7 Sb‰"]|Ë@Ð$½E®)¼‹å袱¥  «tE[­Ó¦Õ(VrM¸ÞYnöTE·Ré½ÇݨJEµmµM ›«åEèZ%‰`Ž ZÄŠ?GeLJ%VxiT‡«a õÛejÊ!§xEB é+"–ξ¥ëJa$¤"¤r[Y6yï×Qu1ÕÚô¥rµ(´o `BÈx‡Ë°g2aÉžÃRq€À„‘|´ÏÄOÙ6…v$JH®í/š%‘K×fŸ]Faw_ûТ՗œù•y‹–²ÏcÞÇËKØ!"lÔÙ¥ÁÁøm‘ E©nÚˆkA£ÉÑQ/GÀû_“ÿªtYÿؾ VÖ÷^ÆŸj)=¡zkž/“©^gÅÿ1,)»^|¾–±Áº§´«C–}æc’ŒÍ¯Åt} IzèÕÕçy¶Ç.‰%QL‘‰ôº­]ðùkNfYbɳʩEJJUGÓj-†ÿF¡Ùgød–Ú){y|Ô VR“"j»Í.’òÙÈ´1óÇWO™R†ÝŠ¢%ìIbó§U(N[ŠÁ%•²ÔT[}Él våÕ-¶ÉÓæ©B%BBªöO}=Ý‹[W£+u5VD´©Š-ºÓS%Oℨ›,›}Ú­ú-^¨AØK\­ŠÐ[|$Ùâ‡+~RÿÌJnóO:r¿*@ïÜÁ’f ~8·qÅN”m±»Ž˜¨˜Œ¼¿âÿíÏ7ãÞÀáð̆(×þw Ø="ýÙox#—ûŽ{ވÇYh0”:[=?—ý¯ÉÿÕ`Ö?0 ßn•µý׳¦½T¹_^šç«ÄòcÕ+ׄ–\›ˆ½C]:[øÝ ˆüøåº4×®O+Þ}Nºÿ*(龩\òæÑ¤ž45Le<¦ŸV´ÓÕ×xô»Æ1„¾ z±Ñò›?Íp,ÈhÍÊOö§õkËÛÖ_CHÄÁ±¥c–öiTr± :QÄ­ôÛ—‘ó ðíÙ‚Eåc_ö+õ+Ñ·Gã×ùŽ =-¸=¯wÌBãËÍqyqÊ ŸJºã£ËÓï*¨–;y6W~¯~$'²_EV“ÊÞE})E%&þAú«^–§Èï÷¹4æå}’/Ò¬ïÕêxþì#Ñ6UXcR)/UkW—åG(çÝC5ZYÈÑv¥Tb€ ( ƒÿÐó0ôÖrõê]»‰YÚ]Z+›Beô´qO5r׫èwF5™º;•Û1ÃÌÙ1²MRÝ~ŸóB‰zƼ7¶Å©†¼’{J»ŠÑêHc~4j±<½O=Pw˜K%üÕi·.¿™W…r2ÿ·ž¯²x|¯þjpSv¸eõ5Ž ,åZV÷0Mkæ«ÔÚ“‹ö¢«]::¼Ÿ™Î*¶ ˆã¤= åê®÷Ëœ²©÷_GeHË€DhI·e‘?øóUPe) Èmu¤Bs¦‚,¤.(ªôŠôùSmFRD%/ÜÖÈ‹·ÑR-xé|f€ÓbªlUÛR©žUÞçj]¬Ñm©ïT’tFÚvmÚŠjDnH[ ›Fé2ÕèÎðŠR²ÙvVª“‘í!<=`—ú[ôMz =jånYe@u‹Ëd0Ù8™\sœÐ£;¤KK€·ÒH¢¶_|”f³y|Ü÷29yNœ÷ÆH|ÔÉQ:ëÐ)êŠn©ˆö’‹6wªˆ–‰B¹ÕT³Öùux´¦ml0ú+kû¯{M}2©JOh^šç«çü˜õJçáa¨åÞöºtË2”çRSÌ:«äO©\~\úŸ_Z.VÛ-až:këJÁD -½$[ûµm3êz3¯0î8ù ¸+¢ú›>…zñ<>Vú?œáy‘Õ™^W ê×™³Þ—½4ÄÁ»­¢W4Ë{ÐÙW‡.9ù«[hž^GŸ_K²æåTÿR¿R½KÏ Å׎!’Oâë^|u{t-kå‰:pžDZëŽ7Çל+vMk^vίv$'²Z¥'”ù1èHøpB™Ih]b6ú+^¦—Æï÷šóhϯéèT©Yìž^ω\Ñd ZδV ›e»Ã ÖµÑW…¿gt´–À²zèÕlÆ*ô¥BX ( € ÿÑó2-в™zñÔê/Æ¥eww‹¤¼Ÿ‰æ§W¿ä{†…m ]Ó<<ËGÑ[I÷j²òëÆÄtÖf’Y6¥2ß®'µ«8¯£ü~Ç©ËÔðºžå†ñï×jwrïùs­X²_»[[£ã¼ó“⛵Ã/¬¤phýÐÒ´«ƒ|r’ååÓ‘pýa`ô¯‘VÉ]^?Wóq`…m&çNõ‘~­w>\ù««(ª—"RTú!vÐtНE¬©åªˆÇ]¦"ÞÀ«bO*/ý”L+sÅbät§`•lžš®LÏ[® t%ªP³á M¦‡©zÓ©jU’œÆˆPŒmuE[ù:¥$ð3Uø*É­Þ†¨~’K} ßµ u(56^DM‰ç«VyVÊô›ÞÞEµm,‰Ã;ºãeÙ$TT ‰–±#‡}]÷k–Ô˜mU˜sMÆ$ó/ÔJ¦(æ; ¤Q]@NÑ("'G’§™¢\…Sm¶¥¶Ô6Õ®Öé!–Ü7@T‹©WéRG‹¶zVß³"PE¥ÑV×ÈIeút”_ÆÙ^µ´~¬“EØ•[_‹²ÓÄ2c±*¶{Ú|‡HªYüX§kkû¯OM}ªÉMõ_=sUóžLz—? ,â/M«£KoÞKó¸[2êZÛ£õ+ÌŸSík_å¨ÈûzÂ'‡®¾´ƒ7BJsꇩXá×q2‡æU_SëW¯ž&Íñœ‡*©ó“„j¿N¼éŸT½ÑÛh$ò]/XZyixá6è(^E¿Ð­uO/ͯ¥Ôœrq]zXú©^§Òó|M¼¹FOc \ž]?1ŒQhå`Â*|ú•Ù~t@˜ÙÅô׳«Ùˆå‡ÓÙ-gN§‘†y(ÌrÏi^‘úõêé|vÈõ–æcVò‹µl©ô+=‘™{öV´Ê¼fä“°öRŽZÛgމ* '_B­mYa¿Oi†@ОUJ­¡Íª›*©b€ ( ƒÿÒó7®‰Y=iô»©Xìèôü*æÉIŸ•ÏN¯oÊ÷LoºµÑ6yrŽ%ÒõüõcÊž.’mn‰XËÙ×9‚ãÑUtÁ«×G*ðâÛÅñ龋YKÔ𣔎A/}Xž^¯›Öª6Š3}Úë´ú_®1¹bm.)\—×êŽ %%•*õ—“—Æ<ÏKúí§¦×®¿yx¿6®h´ÃEØG¨½>Jî|´Šûëéºûµ(ÁFˆ¸j—¿’þjQ#ºz«{ÐEæ…¢HϪÙÕ!óééúÕ†ÍNìÛ}µ §p“¦ÆÉ³£mJ§ÙG‘ØÎ'J¨¯ÑD½Jpæ÷­K_‰5àÉÿvv±}¡Ùh-–º{݉çÛÓVD«³AEÒèBú•¶X£c9¦Y_bߦ¢‚9}+5z¶ ê·Z«õ±6]¤Ùo:V-SûL|†Öê¤ÑÙʉtúudB†êÞr½õܯéD¬¯/{å1Ä•Ä.™HIÕQªÜ¾“ælK˜\]uM—ÍÙüÖ¸˜0Tîåæ šl«Ì·´Ý{…¼Õ¦Ûz]Ôå«’Gmëž–áó~Mq+_…¯ yåEè!®­R·ï¬œðˆ¹s.­o¡\tú¡÷´¯òáPùŠç‰áæÖ?˜i7Ò«Iõ=:Ut‡-ôåòAê{•ëE™[L|E$+ÞQkε½RÃ̧ª$¸{•…­ËY¯¥8}’ÖÚ­ËÈókéLBʼîc_wM—ЕèÚþƒÀÕ\«ùt³+\šç—Ícаr“‹óA§™kº'‡'ƒB-Ô³‹é¯7oW·ŽI¿ñKT×ÕŸ‘îrÞQœvIÇ]Ø$6O£^®©|^î,ÆfqeòFà_…ЋåµWeimœ{il,‰XåìkÓ©Ó0£q¥Uk¦½O™np…˜ˆ*R\&ËU@PÿÓó1l4ZÉëÛªG7q¹÷KØù}}I)©»jÃ[Øó#ƒJÝåÄ>6qV´Ž/uqcøÛE+=_˜:ª;«²FÎUêáò#Ô}Ží%RÏOÁê“”—i}—µìyš*Ž ¦ûµÝëávW–í'¢¼û>»ÇI¼±ÙW£“Ê©º¸­¾Ë‰ê’}ŠéÕ8—‘çSº¸\Ús\F-Ò!d_ukщ|…£ƒ»Y‘ò ¢ùºjePÑ.µ.•·£jì¨B>bj;t]VÔòØâD$T¹´¼A¿›bý*‰J;`¡ŠZåPãn õÝ£éT‡äâ+GuéEKõôTˆWÝlÚV‹hªi/:Zª'ù{ R±h.•äE^ÞU·d¾Ù*І™@DröµÓo¥6VÔghå[CÓ/ݨö£ 2F«8ü‰§é¢TL­Täáɺl½fºÍÐ.‹kÙ} R…|cŠáF/Þ]xìPö}*Ãdáô¿)¯¢d¦0}¢­s÷áôþ=F¹­¯^³‹f\ß5Qœn›Uæ^~ƒ•KբΫTíÛŒ;y©²ù‡e£ÐRGuV©GÏù5á#É’û®m·lŠŠ•Ù«ª¿-®vÄ.\ÀúJ‘Å鸧Ү>y‡èŸˆVHtÉOMsDðñm\lH°—$ªë÷ž®¸t vžÁ*/½T_M{W>Ù˜Øç¹v$ªyßB¼ÍÓ‹Éåט’h—ôV·+Ö¹©„àÜZ×\òòüÚze¦)ÕС]{/érü¶ÜL̘ZËDòÃçÅ|œb˜×º’½èåùu3X0>ÙkÍÛ>©{7¯&³m¶WRí©ÕLË‹ÌÝZÓ”~ó–D[-€·_MzTcåcTÞ{½‰ü¾)Œ|i¤Ø¢Š¾šÇ÷ü=qGžÄ¬ë-®U·Ha(ùk²“ÃÀókÊA)ªÔË„Š®Ôª P@PÿÔó3› =5“׿T¶0nHµÉº^ÿËkÉäÕºVZÞ—ÐÅ.•»ÌƒII¼«ZUçùÉ̸VwvøSÁèÖOJI¨µz˗ȯ'xîÒVvwø=R¯¥Â³Ï/otzUY‰i©o-wW£á¼¨ÆäôdöCèJóï<¾³ÆD˜>ÎõjK›Ë¯ù=Zè«Éò#…¯þ¼|b-«¡oåØJ•èêœÃ伺ãd¥ŒSJõ"lô%i.VQQmµSÉPIÔª‹té¢ÓÍBŪÇÃTEóÿÛQ)F2$W^º€þ-Á U:zêFyx"uuùíA»Û-}–¨N8‡{–Y¥U´yãÁvýN†Ö×ÝM•0¬¦r@ªˆ¾uKÖôgeJIh˜·ò¥DÊa¬åþ6…ïѵúH‹õ*²˜M4¾ÔWÏ¶Õšéø®îŠß§mNPæt¾XÖÝ ú)zçÝ/«ùL(–06*× åõ/§]®­5ËÍù—61Ž»ö­m/7GSÔKªTD»â9:”*‘SÉYM¹wï®5 ÞPZÚ¯›Ý\ÃLSŠÔÖËÏjß»—ÏnØ•åÒâ2æ¯7ÊÙÝ/ÓkÍ!ø¢HOMR'‡‹º¸ØŽ= YÖØ³ÖÕ^,nU豜hâiÑäU¯oVØšµ¿œ«Ym®ßÏ^fùÍÜ>mpI¤¸%sXÕÍM¦†âֺ痛NØõÒò§žºöÏ¥ãx‹á¾m?‹-SÇžZ|ê?–[—]!†¢‹d^šïïÄ3ù5sF™9M°ªª»|•ÅyU×U IMnõWFb¯›šlò&gì¥pŽwW…Àé«k¿/GÅѸHd¤”§ø¥³e’³ò/ËÒ¦¨¬`ÁÄÝZʲËex5vA6ÑR×~»pðüÊ"Œ®¾z»È’uf @PÿÕó3½)鬡ëlMb“b-qn—Óü®8-5vÕ5º<ÉäÑ+gŸ²z ¯W‘í+Q*·máO M•Œ½zÁ)²­ 7Ôë›ÉT´»|å(â\=ÊÏÚö¶Fj«dÓ|õÝOuðþtcrv-•ôWŸ³«êüNi e ÚZŠJ¾U}(Ù#vo䮪KÄò+èXpD…Ža:쨟ºZôtû¯‘ó¿ÌL™”Õ4§—Í[KˆáQ ¥1[[ª¡â^ ¯]¯z ÿ2«Á:xí¡[­lŸN¢S ­#uN•Z„d£Š¨Ò ®Õè«$›Š© ÷®»6ùUV¡&Œ ’Ý|µ >’½ Ï œaS©ÀÚ5*¦HÍų,z D•<‹{}×\³²©” KôR–+ÐŒÂGq}í¿r_öÒJ¥Ùu•Sª²hšŠàª môÔˆÞcDYͪu² ¢•˾púß“Æu³ŽnÍõ×y}Ÿ¯Eäî•_\¼:=R` g+YyTŒXõ´¹ŠUb^#3 9­Úz+ úžÇ•LiWÌn+]1/–½sM.—‘zÑk[tyš§¶ù]¡8ŽD¯#oWéžûµA””öéW§GŸäGó’â•§—­ãÇí.ÊëÕ~‘¬§ij“9—‘瑎[•˜øóÃIIpTòÕ©,¼¨Ì!Ø-•<õ×ouóº'·ilÞØ«èªøý[üçFX¼“q¢*ïuWm«9y>Ÿµ}dQ©žâ»t¤ªÚñXá•tìòoÝou*,ƒqÔE:«Žm™{õÓZkÄÁí/¦¶™ÃÃë'ÎíµRöåéZ ÜØ7¨«—gD<Ù ©E6סª8|ß›¾3ˆ2Mµ«ÊfÕ @PÿÖó9¥ïæ¬2öoNâ‡Ù"ù«‹tòúŸ•×Ð&­ïQ¬ó$ÜvÖÎ8 øÞõz¹w×,AêO=FÄxIQM•Î÷©y6Tðq6¥Ròëð¡(]ŠÍìÚ8U2¨©/Ý®í] ó8ÆÔî9o+‡wWÕ|»pV@û"¬ë."¾™G(jd“É]Už^%éšJ_–‹ø“h«Ùp¾‚*/ׯODðø¿˜×;Ez\ÎkqEÚµ³ÏHÈAŒ× }h„{n¢§ž 6œÃhÑ:ñ' T}ö´Q_£I ÙÕØ‚›ƒW6 /WO^Ê$”£ÒΔëTúTI6}Õëÿ%@“ÝDTÛÕmu0†1%Â9°o¹ÿ0Ê|ÚhžƒJµ'•l‹Î¶‚bi×{ýZÖÊÑ⋌2ï´ªù•j’´ÂX›X³_Škrdȼàª5’ÉXî"ŽÕ½­Ræ æþÎß@–¹<—×|†biƒˆhʾjò­gßøÔÆ´,´»…é­õô|ï—´˜˜é4­aåÞ1'q·œ yj%ßãóhLdRÐí\µŸSè<èÆ•vÛº²ù,*8U¼O&ÔÅ¥iýª*%y~Drû¯”íα+¶‹QE¼ŸxúÜ++½?s¡Ñ[jž³¬’íZ·µãyòmºR¢î?Å^KV®ÑÂÒÑ1=5ßëäöÏnâù‚¼4_5SÇS§æÖΔnÞ \.Â.Ä®­Û{cå_/ø³™èq‘h4ŠY¸3—ÕÛLR1Õn •0ÊÞ鬎yëkôyþ'½'Ž-¶­g<Ëн¢‚"+aÓ×]štûeóß0ù„G¦¨•+­×¥k¯¤>zÓ39µ6 (‘@Pÿ×óR¥*ç{±NbåÑk‡wWÔ|¯ü¶²ì·©Ö§”nR¶qÕ£©°ªbYìŽ$Œ%öŠžzþú’à•Í—ÐÒ8&òTıÝXôºÖw—wƒH/E«<½_b¯šKI®íóˆÆÄÆokÈêú/”NuÁãÃìÉ+*½-ÕôÊ9 RlÓÉzé™xÔ®k'wÉœl•N5Dô’Ù^Ÿ9‡Å|Ö¸´,hé'xwkÏo"y?Ë] œqãWÜE^½žz.ÌÆ1ñ¯Š’õ¤œ–.x“ êo%Û$^‡h*ùµ%$Á' ìIo?š ,Ù8‹tN¯v‰4–»E<—U¢[FÛÑÑДh*ìZ•Mµp'Æ‘Ð(JÓŸ`æÍ¿me¤u&fYu鬶­ç£*ñ(|s$þB4tí:ó@7躸(•F’µsœ^éÎy¦-¥kÅo&¢×oº¬å5èo ì=;VÈ• :™‰XB$Ey³=e°Ä+Uµ"щuø¾eôNjy4gã¸1Ä =.[jy.uÁ·ÂÇ0ûO—º"ÑÙx± WŠH»Ê•…xáÙ²ÑiÌÉ m«Ä¸w×Ë£-Wdâ_/ŒÚ¹Uþ/jå×ÕïüÊ–€e.K]™|¦ºæM¤7¥åóÖµ·-úñt¾ÄAQZãòjú’ìŒ`êgJVTwyrs·R²ÙßxH ì©Õ/Re’-守Ž^nL¢úß®¦ñÃſ¨õŸÖz['…vvÉóס¯£ãüÞ6e¶QËÁE4Ç©?1Ù¹p®Ê§’§Éêßý¿lÑ!)v×-^Ï“&¨W«¸{¸!Q+­i~ŽOb-95ÊdSkm®Þµ®½²óþeó³T9­ÕVë]oœ›Lõk×L¡ºT%µDŠ€ (?ÿÐós)r_=sZ_C¦8ÍŒ*/R­qnêúO–ñI‚o­ÐªÔg¾z›´»+Iqë–M.…è¤&ñ˜“X6G‰<õ{ôqø^ü¦›è®Y}¦¯ŠZôª›ªs²-g±Ûàj«FüJ¹ >‹]¾<ðøßW×”žþ\k—Èê÷>Mþ\»ñeè®z½m¾ì˜ÄQrÕ½ååxÕÌYŒ+%!âm„øê_2%ëÕñz>æÓëÂk5Ÿ‹TÚ?Ð-ŽÛ"y«ªeã##GËe¤ K" I¬bŠÚÀž³¥ê@̼sè¤Þ.8--×,^„-«R„$˜8áfCò£¹cA¨Zð̺”U|«P“Æq5&õ“W¥í¨NEÃVî{Wbz6Ñš›Û«jÑ'€µ"¯BuR–´Ò‚+¶ÛSÍDL6ÉURÃõ–‰m‘]pTפ„KÝÙ[Dæã” 2 <€’¶ Kk©>¥V\yòXKæü¤°Úº¡Ö[sþõRz­TtUM*¾ê-BLäº?:@  ‘!i[_¤–ˆ\Zr Ãj9¶jˆ—2²‘/¾©,L›¯t^!lÖ¦¨©n»ÖVÓYzZ>k¶‘ì…{9ˆ±Ù”ɩœ«„«ÒšËî{Õ®=š»_Aãy±¾œûÈìQ'Ñ\ûº=O–[֒ɹ©»W6®¯gæ6ô¢XKWUžšâIdÆ…å«k–m19oŠwKÊ”ß^|¯omð“˜[¨µËH{ž]øÉXìM»+=èðvp“CÙQ¯«×›ð‰È¯´®šÃÀóíɃe¤Ò¦Ðóuß¶É W¬0õ¦Ù„M,åë»OGÊüÊ1cYjŒƒæ­µ×—ŸåìθƒÞ[]ÃôÖ~OW¡þÞž%!)k–°öü›¡¢tÖ½¯:vDB"T ^žºî׫Ž_;åy“žÓ%UºíZèÌCʵ¦g2-UW,Q0Ý(³j‰@PÿÑóŒD¹×Χñk™KFÜGËÑ\¶åïxþœÁ'bÕªËdk¥kIrkêÜ“b¥D/h0ŒV–¾u­¯—™ãÛSôWŸQ©—RãQTíŽ c“jU6:~_®¥*‘/GlrφÔ*ìñåò¿<§´ó¿ÅÒ±òz½’O¡$ïakš¯oo»&”½ª'ž·¼ty>$Ϩž A3:Y"ÙPUG̽›ý:ôüiáñ?6¯ªgë:iˆã)B!$¬ƒˆ„oš\¿¬¾Tk¯ 9V3k!)¾{ÒdžÝEå_òTª’hR3H.½©÷<ßPR¬™ŽãDÌË:ê’^ÝuBäqM±wXK¶©u´ÛÓU˜I€¸–Dôýþ &ãÄSµ…Q=Ê”²ÚŠ-úè¦ÂèòTòŒQ•.›t"%×èPk­Å—Nè’'—bßëִ襺 O¦ª²]É‹-¶TßZh×ʬ‚7ÜŠUe1 ØyİôõߣܨJ;&d™œa íED¿þ"Ñ S¹$hôªmõA6ªû”ʹ5×Y ¶€.Ò"íTò^‰„–;+r0Å:™o`"¢¢k–Ú÷Z% xî[˜ˆ¨ Û‰± †]m‹Y_Ç‹C¿ÄùžÍVÎQ™>Qxš#‹ \Nlöù¯Ñ\“áÌt{óþà®Èˆ²µ'>!¢>Á‚ßbÚè¾êU-I‡F¯"–æ$ÞkDãC¥Mz:j´âZù±¦R8NAç)Α12 µýð‡HýµmxÌ<«®ù™[Ùð‡›f6¨÷Š^Κ]}Ĭ)ª^Ÿ“ó:LDB[àé´è¦W" ÒÒëû¥ÙKi̲×óŽÊâ±Êg™9;’1ø)&Á8Ô¶›Rmãr÷4M‰§áRuV#‡G‡ó]÷Ù>ì¸Ô÷.uGÌ¿&{èµl<»[~Ñܱ˜ÃÖÕ|Õ•MúêÒð>gÕù*¦Ÿ%tÒûf0“åå°aä=Ÿ‘N"RÜDEU^ŠÂ•åìy;": ¦NUU]žZïÕ«é|¯™ææq µÑÑäLå‹Úª†R€¢a²QfÔ( € ÿÒó¬ßZáÛ<>·Â¯©"æé"ùR°ˆË׿¦H®Ú¼CšÒI¾•©—='’ÖºTC¢c0Œ ÙžítO5x´ãjy®Êz+ŠÏ«Óѹ%ÒÕFÖ‚¸ý‡j¦Éoàñ8<’¶4ZÎ%èoâP¹áUZìñåó_;®`® }«?'«’O¡*ïÅû•ÍW¿º}&0–ÄêV÷é+Åžl‹]ÚD·:Ѳ²yî•èøòøßšÇªÉ^ZkÙÙ7®×T¥]±/ž”Ä\‚0š[Ñù}(IÁ4#WísDëò¯EJñÚP'œ-v]* µH¼žŠ žUS5•EM¨Š” ²XðQK §Z'—ÑA(lÕ­bÛ§P˜3C¶Ú„àºìžNŠ„0NYÁ²®¤ôôÐ%ŽG¹êÜÜp‰oµwï}½u¥²‘z:Ò’D”a×[iIí©è÷U/T•¡"Ù"šÝ|”„¢óF¡:ŽÅ¨¯ ïz‰Ç û†J‹e%Þ>º€ä$Ÿ UWm®«åµHÒ$£lïÚ_¯A%i# æ¥BM>Zœ‰3­hÖ£eèéEZd*ÞeÂ]$jª½=Ij®ËGGSä¾Qj*ƒ ZäT ºõ]*Õ†7Û˜EC{ª«jº<]ÆùW5*%m¦®?™ìÊ;MtD¼I‚g±vTåšßeJŒõPkD¶J!š(˜l‰E¡µDŠ€ (?ÿÔóÜdQu<é^uù‡ÚøÑÛbÓ u«­ÓåÛƒd]•«Š%TÕIEg’ⵜºk(é‰gÑk¢?•ÆÄÔE»#è®;õ}/‰9¬¾ÚÉד˜Ûõ¾?Rò×r©GO•<"r«x©]z:¾{æ“d0„¶$«ùæù5¸L¸~ÍkŽ:¾’öô›Ä õ*ÒóÃŧ3(©‚©“OX‘>viŒ×œùŒön™')Ð %µ¨’ÚþZô"1•Ûyµ¦e¬€²…© AM ׺§¢¬Í"ç1ÇмU$éÙD6zPˆƒ«ë §–õ&¡¼ò¸ŽšØ:‡ëÑ –&7§UöõßÏR·•;(‡—¦‰.ÔKR¦Í©þZHß¿‘+m¶—uÒÚ[\‰lžç–¢g ­s8\¿UÏa’‘›>)"+¡Â *t öÖ¼è·Í~ åqÑ^Ÿˆy21Á:"„ŠªƒëZÝUz]õ¹†]»<"[XÙ}#²·³Jø~ØÉÎ?!ÕóŒQ‘§R·¨WèA(uRº!l$K/§¡j‹&pÎ\ <Š›kÌùx‰}ÇûFø›C9DÑ <ЕɦfAçë¥ç˜C½‰ŒKqRm|Ë]•ß0ùß'×nœ;LeUøÆºÉ:Rº©º%áy_-¾¾c˜`$µ©W§Ë[D¼Ùƒ€uzzjUo<ö/"/2JŠ€‰éE[ªUo\Ãm"¶åÐ1*\6Í 6*¦ÝµÉ<=}z¾$fñ1:Ûš\^Wž£(·Œ¯âyË+šËæ7†8ª‚Zþض![àÔrÛ³Å]1s±çF†ððß«%õ"íôtU¦\T¬ç•o;ÍlSí,´ì¥]&¶ ½$·êJ«®šæÈi>+ã"¨£-+„´¡uéµúªÑTZ‘ >o›rY¢’Ë(@yÍa©âžåmðøiª"z«n¸ ÅÙTíË-»c\ðjóüU½kXÃvîòiRÂd™¦Ú³;5D[Òez*F´H ÛÉS†Q*f ¶JªÐÚ‰H ( ƒÿÕóò ¥–¼ÇÝDc–’OUªÔŒ3ò/’HU£–%¨ôÔà‰ä¸-ggMdÏ ›âµ®®;ÎŒZ%)®Àú+—lr÷| Í ë®±—¡luVvwi†ò—r«^«ùÂ'%ÿ*µÙ§«ÀùùFØsµíWß/”Ù.FˆÚú+–#—Ñ^þ–c-†õOÑ P²¢]:EKèl¯CćÉüúر¼¼zš“]\RºŠ¯—É]òùdr¦“$$²¦ÅêZdkªÄŠ6Bµ¯P”¤I¦#-‘h&Ev*é©BO¼²—±&Í‹äO5J‹¨©tZ £ï'A/žAxöj]‹²ˆ=Áe¢³ÍxÔ’ª¬5¨‹ìR³ÙѾyÛ£ä#ºƒÁ%A."[ª¸â^”Õ!Ê¢8Š‚¶²/E^¶g}|9w‹¼€û¹$Ìâš%åièmîƒ%DèÝ/²®š_‡Ís•+–±+ŠÌÅË$öW¸8.›B«¨Ån$!~›ŠÒÛ¢' Er³§ b3°¥LÆH0œôµ0Gwm“5]*ž±ië¬çtg¸ñ'·*¼¼Sø<¬Ìkî®0¢ˆèvHHu"¥üË\þgª°÷ÿÛ–ø{-ô<íÉV¸éWÒnÛ™#{Ö˜r䛎 ô­Z!ŽËÄuFÏj)¥ô¢õ¦Êß]¬ñ|ÝíÏ´À›u½à;¢t%tÅž>ϘÐÊy5ª‰­‘,—EµLÛ†ôÍ­œ&™U6¯•zÖ¸33l¾Â5WV¨ˆCJpµÝQº©Ÿò¯9É&ä/M[±<‰ª]žrÍÇc‚Ô•áÚÃ~”DêE¨øp™ò½¨ÇrÒ]q\tÈÍzUVõ?ýt›¹1ëÅX_ʵšw‡|µfßKB2%º­ê0Î×™êÝ¾Š…èQ*&{V¦Ø-J¬TŒi -¶ƒd«@ÊTŒ§MD¯ ­P „Š€ (?ÿÖà%Ù¯6{n†n–ÛVµy»oËDZ´³¬„]«PšÏ%ÁvUeÓI7È%ÅÉWÔå󣌞âŠìz+ ÑËÓùe³DŠW3؈9gbVVwiv¦ªïžsÖñ•+¯WW‡çÏòäÃv%­·CËùm±)crád®H«Þ¾ÌÁÃ;Eª[«³Tb†.Ì‘õÙéÞ½/8|gϧÕ-äºûµØùÓip›tÉWa¯A'×¢Q4m8¢ibJ„›¾+}C°’„ˆÓ\fè»ÀJŠH¾je 6ä¸`o´j!©JyU/ÑL¤ñœ‘&ëãbNÙ'B[eJ0~Ó÷.”^ÍH¯å&eÌÛUÜÒ"©æM¿Mj;r´[é¼…Îå±lÝTu(ûE·Í­<Þú¹6kš½-[¢ðè’ñÅ1´“ ÎбŠîu¡']g &p_ÌB’!U©l­žhöÜU.„ˆ½¡*´K;kÊ“â,œb« ã[k„[^V=›‰Ñ§J^Î ÷j´µby—Ïk9„F"c­€€³)ÔE½›díî^ÉUš«læsåíšvã„Êd1ð#ÏÉÏļ믷•5±‚ €¥ýkiûª­¼ŠZ{brÓěųÑÊŽXßbÙ<•o†÷gʈö´)à%SÙÛάHÈ!.Å­«©çîóâLÞ”¥ZE0ó¶ùY$¯ª¥ªÝ¬gtÌâ” ` …`%ÚµŽìöðîùglEé¼4'£Ù,ëÚ¾Šòk{åúGô:-X…_; cù¿Ûÿstå•OüÏÜ}õWàým#æ¸û?½ÿKGùWŠ6ïVóðïÿz¦º±íSwÌ»ã¿ÛÿqH|¶±…S¼ê¿À·ýåªlñû½­|_›Î˜ÇowëÒt˜›~û÷?öÖÑýoB?Ü¿ý¿ßÿ ¨ãÔ|¿¹ÿmR|¯ûWý×ü¿ßÿ¡‡1Êiñ¶û_ûjcÁÇ·ûÙþéîÿËýÿú žÀñ[PãÚýz/ÿz¶¯k‹wÏ{ëŽÏÞÿ¤Ú7*««½jÿ÷ýê½µeÇãüËáÎ{sùî:\ìöÿq÷Õ—ô¿[»ýó?{þ’É‹T <_¹ÿ¶©>×ýŽ˜ÿsâ1ðÿþ‚%‚U+ñþãþÚêÕNÈÃÄó¼ÿê-œvþV¨¨½ã¡oØûê×.æå…R[ñþçþÚdî$ÿ.4ðØÝô.©ô铸Éy2ëÿ9ÿï©”÷’.FE[¤Ûy¸_PŽæÁÉF pž¢·EØßZmO^‰î;Y5lÙHzÌMIÒ»½)°ºèwœ†A.—¬×ïmé쥼·©Ê;‰~o.ø«à@â’ª+WTÔ·º.®šß^þßfYl§w=XXš’âËV\Ö†V ßJZݤÝòÕ7l‹û0¾™šNr¾ã9ÚT(Àɰޓ}‡¡>…‹ê×'ÂúݳægØ×1ÌØÌ²‹’qj2A,}@Òþ€§ÂúÑdý ìIY˜]¯9Âc͘ö!¹¶nG˜Øi—ŸF¢R •ïÔ»F·§ZÎKy³=# šòc‹ÿŸÿ…÷õ¾O“ih¼ŽKÓ?þßÓ §l˘«ÿ®ÿ…÷õ(˿á}ýÜ‘—ÂûúÍ“‘Õ:'[ÿ ïê0¼m˜?‚È0ÞÈ®Ÿ÷Y| ç/OWÎ÷Ò½±&Ò9IçÉH窪ôû?¿­b±{üÛìœÉ¿æ/òïø_Ræî˜¿Ë¿á}ýÈüÅþ[ÿ ïèd~bÿ.ÿ…÷ô2?1—Âûú È—ÿÏÂûúdyßùÛÿá}ýF‹·NIþ[ÿ ïê;Vø¿SRä‹ÿçá}ýLB³³!9ùoü/¿©GxüÇþ[ÿ ïêNáù‘ü·þßÔÅ‘Ü?2?–ÿÂûúwÌþd-ÿ…÷ôî;‡æOòßø_Nä÷ÌŸå¿ð¾þ£)ïgó+ùgü/¿¨> üÊþ[ÿ ï蟈?2¿–ÿÂûú~e-ÿ…÷ô> üÊþ[ÿ ïè|Aù•ü·þßÐøÿÐé^xÊþ!rÜf^’ æ€DfãÈÐ^…,®6‹n iP»Zzƒ!xÊþrÜ–”fŒacÄО'4£Ž üXiH´êÓ 7è<•ùÍü›îþö€üæþM÷{@~s&û¿½ ?9¿“}ßÞМßɾïïh3ùËü›îþö€üåþM÷{@~rÿ&û¿½ ?9“}ßÞМ¿É¾ïïhÎ_äßw÷´ç/òo»ûÚó—ù7ÝýíùËü›îþö€üåþM÷{@~rÿ&û¿½ ?9“}ßÞМ¿É¾ïïhÎ_äßw÷´ç/òo»ûÚó—ù7ÝýíùËü›îþö€üåþM÷{@~rÿ&û¿½ ?9“}ßÞМ¿É¾ïïhÎ_äßw÷´ç/òo»ûÚó—ù7ÝýíùËü›îþö€üåþM÷{@~rÿ&û¿½ ?9“}ßÞМ¿É¾ïïhÎ_äßw÷´ç/òo»ûÚó—ù7ÝýíùËü›îþö€üåþM÷{@~rÿ&û¿½ ?9“}ßÞМ¿É¾ïïhÎ_äßw÷´üæþM÷{@~s&û¿½ ?9¿“}ßÞМßɾïïhÎoäßw÷´ç7òo»ûÚó›ù7ÝýíùÍü›îþö€üæþM÷{@~s&û¿½ ?9¿“}ßÞМßɾïïhÎoäßw÷´ç7òo»ûÚó›ù7ÝýíÿÑó½A5ɸ˜™nb‹–…À}BкI4´DŠ‹· ’‚o˜ü.Ìãµ¿Ž¾B"m°%žó‡­é Y (’*-•b¢¥( iÇ\šqÇQTˆ•lˆˆ*´®\ðç9”}JcG†ÚûG.»•Wávh*®2è8Š­’¢¢"¨ª¢õíKPi@PKr×.Læ ‘BŒó1…¦•&\•!e–#¶®:áè°ˆô6Ù™{Ú˜Ž&}•ÿÃýë"mÌWÛyí¯÷¿»[Y2ï…¼Ô™¬~6+a6>Ub÷ »ïqpf ›D®¸ “{¢æ¦ÝlöN{:Ds1Ìw~¯¼n¸Ç>sr”6Ì€ß#@krú—QéºlÙ³Qz‚U4õt-àõ®[RɽŒw!<Ƥ,QlÒAq MÁ[dÓJ—¿ÑJó-Çü 1ËòœuôuÖãE`Õšê:Œ“|N›z@œ177GKtŽc=:~÷«û¤Ç8ü¸r|¡mL‘·Ðì)“èÀ¡‘4¨ TWsˆm먙ÄgðëÛoîßöHæáûÞï÷«ûH*P@P@P@P@P@PA… ˜åŽXŸÌ9‹E°Öûç} 7·WJªöF‚c?áļf-Ì”I>3C#@i-¶U]H$–* }‘šd4ÓŽ#@ሓª—AE[)*y¨&r\Ÿ”†HÛ`rŸN1:Ó-‘(4ËŠÚ8V¾ëŠ$£A¯/rÔœ†f IM:ÄY.6&ö•MÓu,«²æÚj Î;•ù=éÒ¢LÄ!Šâ2O»7R¤AAQº“w:1y[ɤCFDgA4«(ý³dÊ<®jì®Õ «sç-òôp²8‘Ø™²æ—8¡¬ è]7Ûµ()tlë¼­ ,M½=øŒ:þ@$™pÞ_Œkx5níMÝ:¨+)AeË9ÊÒ¹heãá7ŽÉ ´h£$“xÉ”iIOIÚïgf‚µAÿÒó½Agð×þ´ÇâÿòNƒ¤sˆØ>¶Z>ÿ8vpTÐ+ðÜÚ)èEAÉ9‡˜%çr6Km4j–Adß»F¿Ê‚.€ {‡˜Ü,´)Ž¡qŸmã¶¥4%Dº¢_ekåî{ÀçÜ6#±)TcHA4·HiRûê ãr =ŠƒµÅ7ÜpÊÖ»Ä6ø(«ìˆ¨#è #gñØl¬¢É Ë!f:C‘„MæÆ[$ßɰq@•A8Þ¯V‰ôÌ}èþíë³ü Z™µm÷-Ýú]Ô¶«~îÅŸóÿ•ãso-fâŒ×˜å–a@i‡Yi³“€>;äBûˆËºÜ.žÜ¨¬ú­3ÓguBŸ 4Wôíö¿òÕ¾¼×rk²¿Ÿ²»¾?m¾å?;×ú?ŸÜŽœ¤œ’%“\*Äp.±£÷¤sÛ˜‰Ý;Ï Z@d[Õß5ê-Z=Zg3ÏOåÿñü^ÿÛþ¢Ý¾÷ggþgw¦ý•ÑÓùŸüŸ ³ÙêìþžÞïu½Ås™9³šç¼—2´‹kÇ2òjqI†E˜êzQAp4ìðj/Z•Î-ŸzÓoþ[ÿ‚—ý¥¢#Óf½¿üuÿoï*7ÞºíÛu­)8˜’yM»œ†¹¬¶U¡q’¯.>艠Ÿ%E3T-„ ‘iÓ«~³ˆôãðíû_Áú6²sÌ~lGíV?‹Õú¤q’ñLG•C£S˜uÖÚ&Ü…ÄÒ*ࣀ¨*Mv»;»×œc\[û-_ñ«søëø~ÊXyɰ“:@+Š ­1щ¦KJ›HÏŸ+ºÊé#m”ö…ºG¦«<ÖsÖÝß«ñ'»õ½ë}5ôÌc¥{[áþáTêA@P@P@P@P@P@P‚çáŸ4cð™ ,Ï.y¢’-tmVÚ­·Jê]´neæì,J LƒY'2 êFm”Eá êªçÓuQ‹‡ëÿAɨ èùŸæA‘9oæ²CÞҽg׺^úæ5‰9Ø@nPÆô16lB¡Ã„qËRª üau-æW ˜)s¤3 ÞBɳ!±Sha“$I©Q7L¬· ‹^VÏ:# *Ç·”¾kîÚo«ã—OFšnwŒì.\ŠÄ†\"L×á¾@Nƒ ¶¦H£rK ¥þW +‘òI‘›–Ö…U°;}(WDÞÙ@Âúá¥&ç… îÝçºhºë×£‰{ZÚmð¨PÿÓã¿«ÿD³?Ùò¾N€ýXx—ú%™þÏ•òt7ᧉ햦ùW6eMCZ-•,©±¾´ ×õ_â_è–gû>WÉЫÿD³?Ùò¾N€ýXx—ú%™þÏ•òtêÃÄ¿Ñ,Ïö|¯“ ÏêÃįÑ,Ïö|¯“ Èøeâhr¦hLVâI–ŠŠh¨Ý?V%þ‰æ³å|ú°ñ+ôK3ýŸ+äèÕ‡‰_¢YŸìù_'@~¬WÉЫ¿D³?Ùò¾N€ýXx•ú%™þÏ•òtêÃįÑ,Ïö|¯“ ?V%~‰f³å|ú°ñ+ôK3ýŸ+äèÕ‡‰_¢YŸìù_'@~¬WÉЫ¿D³?Ùò¾N€ýXx•ú%™þÏ•òtêÃįÑ,Ïö|¯“ ?V%~‰f³å|ú°ñ+ôK3ýŸ+äèÕ‡‰_¢YŸìù_'@~¬WÉЫ¿D³?Ùò¾N€ýXx•ú%™þÏ•òtêÃįÑ,Ïö|¯“ ?V%~‰f³å|ú°ñ+ôK3ýŸ+äèÕ‡‰_¢YŸìù_'@~¬WÉЫ¿D³?Ùò¾N€ýXx•ú%™þÏ•òtêÃįÑ,Ïö|¯“ ?V%~‰f³å|ú°ñ+ôK3ýŸ+äèÕ‡‰_¢YŸìù_'@~¬WÉЫÿD³_Ùò¾Nƒ)ቈ¨©Êy¤Tè_›å|€r—aÙÂó"ul‹;ý ¯*øÚIeÃs"§“ºÏÿFœ¯WÉÐKÈåÏ$b“÷/f £5¼›­ÙA5#({4§­Ažx–ŸÿÉf³å|¾[–ükËÆ¹^Í>À8!ó[ÁbDQE¸2+д«ÿD³?Ùò¾NƒÿÔõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÕõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÖõM@P@P@P@P@P<Ìépq¯Ê‡Ü” DF ²@á‘ ¢kp€n·3%Ü E½Ù¨œû?Ãõ–¬DÏ(ÎGÍås82—–i†'·.dWšŠ¦M'v’ã)¤ŽÄ[µ¤5{ÀìÕ±µŸ½ZÙIÏtÄû'ü5·ø’YŒÖ3 fd^౬ ¸f㋤m¶ÐœuÃ%°6Ø•Vg—ðÿ«ókê÷VˆÎ~¥w=âV*e³P8²$cEÈNÆ”ÓÍ<@¤ßy`šIÚ.×ÖÀ4zÔ¶qûvì­½ïWwoÙû¿ú~õ½5ûuM139û1Ýùß«ú_{Ý÷¾å“|±:lì3fºHqKQ¤)8ÔØJˆÚYáöF[ý±Ý«Ú0Ê“ŸÃðîCó¯4óøAŒÆ ÑD0’’hŒ€J–¸M6 ÅvEO{C-ñ—²¨×¼Dô™ýovÖü?v¿jšZ=1ïDM¿gï~³ö¤óNs[“cDÂh̲²“[) ŠŠ¢!·£8FwÖ®+‚Ûb¹íc9Ÿ£ûßøÅ_Î'úÿ»ø~ ‹æ.pÍ` ¹Ž‹©®Ê“vHõ; ±†á´¯´Â:Óï ’oضŽû-~ÑãáûYŽ{f=5µ>'Þ÷½Úâéýžëv¢ÜM£ÞšÛ³ø­úŸåöê~jK”s³ò_:ÃÈðniA~LD!aåá6ð˜¶Fé4H.ˆ8Ñ:æ—·êcX´{{¿øí:ÿÃþ²‰‰‹LOÑ[~ßáúÞ÷ÚX*®ø‰•Èây/+‘ƽÝçGi ‡”ÄS¾ƒÝ.š¥³šÄ}«ë¯íì­-?E/oÙ¥¬ˆÊó–Ly+,ýÆ3b8mN`Q AÂ1Au¤q\wÁu²j?½«né8›RcݶÍt·æ÷l¥vk·êßõ©j쯽U-˜­³Öºï²¶ûß˽©Ú¯»êí½mORc'ΑaL—¬|܃XÔÊˈ,«QP‡‰¾Ž:Ó®µíI¸­ÈsFÍFU‹GYô×ïýŸÎýŸµsó½;4íœÄG6Ÿ³øz}_‡Ù!+Ä^^ŠsÚuãÄj;ñ™9ÍÌTå Çg¸®¯n.öô†“+bzcÕßð»;ø{}}ßv›;½Ë)‰û3_‰Ýù¿kó½>ŸOçÓ·»¸œlËÈç¹ø"ÄK1¢Äq$*ÃÐÙÏÃÿè÷ßÝ¥ûd( € ( € ( € ( € ( € ( ƒÿ×õM@P@P@P@P@P3d;+¯³É޶—¬+há¯Uãi«ý›Q3„Ä+j4)òxiXÂ)³f6ëîDp %JqàîϾZÄ 5êzeVr±÷kZ¢Ó›Ìû-ü5©×9bòr “ÇGI¯ág$³¨žlØv9£dâ‹|P¸­q ˆ4ñµU‰í¶qž-OÛǪ¿³êÿí[gÚô¦c5˜üVý‰îíü>ßj¯Ì\µÍüw8OiÁ‘—ŵŒÆây…|É…tøn`ÔOèlQóÜFA«EZ‘Ûÿ6½¿¡Mv§ïvÓºÿ©_RbÞ¨ú+K×ô­³ü?wô®éM¢  /J""Òz²×¬GÔ©øˆ9©Xèðq˜iY#ïpåÌ9 °‹-·ŒK¼H`õ6Z4¾1¨¤âñ>Êÿ ªÖ}ÛGÞ­«ý…3³’@_,|íV$–Leô%["b9N.;Œ}ÉS¤>N2#<æ*š“L·Þßh$>ÛKÃoÚwvKýc-¶­=µ´çælû[-ù½Þ¯Íø×þgo¯üËz\Gt×éþ]>Í}=½ÝµôþÂ÷}]¾êÓÉ‘›‡ˆH-aåáÚ`–Ã9ÈÏ<ùšëqãr;òµ›†ªN‡¬Ž¯iÌG³ó~íú”¬cø¾÷áÿ…=UYÎø9yîUÈâ!›mÉ–Úfò’*–òŠu{ÚŒsYû·×ÿev…9âcïVõýºZˆÏ9"O0ãõc$ <ª°Nø/ÆWÍ—P–È£Ädôêm߀ã¢sN/öwR×ÿÚÙkúõþíïOµÝZ^3®kíí½kÿ¹O‡ûû_«°Ëør‡ÌL›8,u2æÛÄy€³Ñ]…•ÐIR¾É#`|-Qô½ÿkìëHÄvýsêý?WªžžþÛw[ßû]žžÎåï9œýXíýÎõvýÛz-î÷Îrc%’o0̈Ñ28å&ZBÍØS޲³)?‹ðÃ‰ÝØ6‹ŠUx´Å¦ýmkz»¿ô¾çwÞõ|O‰ÛþggÙ§ó+ÛX§JÄ}ŸýO½Û÷uöúiúz½’Ìâ9‚?:=™i¸Ž@ÉC‰p“ÎÌR|îУ$‰¬‹oœ}:iYÆkö{»ëû§»ÿ·_´[3Û?j±ÛûÝßÅöJs7(‡0>×z”¡ ¶É¥Œ ‹¨^TI;ôºÂwtÙìÁNj㠲j)Å»¿ýOÿ«M7ÿÚìûwLôÄ}µŽÎïÔ¥ööþuû¾Âˆˆ–N„è¢"0(‘@P@P@P@P@PAÿÐõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÑìÿ¯ÿ ?D›ò5=²žÙgõýá%¯óîÏþ’oÈÒ"SÙ-‡ÇŸ H‡9tÔKÝflKÛýMOd’Âxùá2ôg¢LùvJc\È<&+Û;{%×ø¤Ï‘§d‘I–SÇ¿ ÖÖÎôìOâ³>F²Ÿ…o ^€¡vÈW·ñY_ø4í•f³ªÙ3›úYŸ#H¤Ê~¾†CÇ LG9r%Ò‰ÝftÿSðì¯d´/|%œí¿ûI_ø5Y„vËo×Ï…>'Ï›—Ó~ë3¦×ÿSNÙOd…ñëÂtDUÎl.…î“>F£¶SÙ,>Žrè rþ+3bLJ&’Óõûá*ÿûßè“>F ì‘úþð•ß>íÿé&üNÙcõÿá'ãïè“~F¡²ÏëûÂOÇßÑ&üÛ+O+s.óV=̆_|†Ó«ÇxnµgDDÔtº-—dÃm´ÑLQò2ã¹ÃyͧU¬«±US©<Õ1(›D5g'ï‹vþ‘$ú¨•3Y„Eâzrí»k|_¨”ŠLôE¶V½d’gqKÐÿÜù*ÿßC?êuý%[ÉÁuQÛªô%‹ü•Y¤ÂõÛYé'è/_ÒZ£@®¶+ô–ƒ^òϾúKþJ`¥Çº½Å©Ä¢m$fq±Øq÷žÐÓB¦ái%°§JÙõ=’¯Ä¯ÒÞ>J†}—5´è¡X’âIt[*_¢£´Z%²ÍŒ'÷%þJŒþ'¿úEþJg¾Æ÷Ëû’ÿ%Ç~‰þ³è"¯Ö Ç‰ïþ‘’€\„4ýóéù*pŒ’5‹Ž oÈ…:ÎâŸM*³1Sžˆ¶ü@å&³¼‚—ÜZmÕB3$MH6ªûêÎ7RgkðoŒáa­Yärñ¸ùY®p¡ÂeÉ]±–š3-"ŠKaEØ)ª‚‹þ <"ü}ýoÈÐâÂ?ÇßÑ&ü?Ä„_¿¢Mùü@xEøûú$ß‘ Ïø€ð‹ñ÷ôI¿#Añáãïè“~F€ÿ>~>þ‰7ähñáãïè“~F€ÿ>~?þ‰7äh3þ <"ü}ýoÈÐâÂ/ÇßÑ&ü?Ä„_¿¢Mù ÿˆ¿D›ò4ø€ð‹ñ÷ôI¿#@ˆ¿D›ò4ÿ~>þ‰7äh3þ <"ü}ýoÈÐcü@øEøûú$ß‘ Ïø€ð‹ñ÷ôI¿#AÿÒäH—¿¹õk\ðß·Ý·ž¢¢8=ˆÞ¦%y£’ýÒV¾ÂÑIJ7JbúêËHˆŽ[ÉþJ‰”é¯D³eQ½#¢Ã˨ç1În:Œ´\Bé%ºôt_εží°ÆôÍæq¹<#£o6úžŸù„yu]zíms\SäÝ¿dC–óç"Êå<»L«âW"HèUA[½pÙöµßãmîühÇ(<bîJ8GoнtR\׌VQ2{EöEõk+Ë)èrˆ}ÀRÛªêmó騞â:7xQ`0]zŒ~½-ÑXS0“d´_õ+U©²93Ø^…ª-XêEGΈ¿J­fpÑSmVQ"¡R~Ë_ÝþCò³ßƒG£;õv*(¬ó[,Ú#š.Èîý¹V´èÃgSVK%ºHa{éK^¯Ä²Žè>îìJv]i²Ë²‘iªmH¹&1ñIµQë¾ÊÖÛ£zx³žœ%˜ˆÓe±´ ›kš×™wS\G°æÉY´hF”ÀMl½U(jã[nŸV¦-„Mr†ææIû.¼²õ%_ºXÍ!#‚Òhˆˆ‰¯"z‰YËzô;qG§eü¶½Ub k~Ÿr­…rÑÉšN¨‡œÕêÕ-h޲¼DÊ._1ãEÒjâùE_¦¶JÆÞU#ÚÖ<{ϱ+›Ú‘ã"|' ÿr?å¬-ç}Ö¾Ó(‰yÜÛ©ÇVÅ}V‘é¦÷Ó®{ùwŸnׯ¤{SqÕSx•Â÷ƪKôï\óiž®ŠÄGBx(ˆ<ˉTÙ6:®Ï#£Zé·ª?6{“øò½§Œ¯x‹ýßs?ä™ßƒ…h€´@Pq8ñ›'K®pc¶*o;kª u -®EÐ5œ7ñô|KcØŸÇ¿£bG‚vJ¸ø’úú‰oðt鬦'Û.øÙJqZÇé[ÞYå|ØÄ É™èóŠà3Èæ"»w”D‡URvÂf&zÄÁÏ¡¼”Ëw¬uÈ•£]—T¾‹ú¥Ù«jÝÝ8qïñûc*enä@Z€ ( PJÿÓäÍËWö:ë^`£It÷V¢’Þ•á'‰oZI}Äúhµ½Q²¼A”aØ7óU3Ã]UÌGÙ8¾”úuYž¦¾™ 'Å}•V²µ#Ýün•á‹S 4yæä†_2F»º#ŽØKB®…QÝÔ¶ÿ:°ßh·Ã+VbýØÏ.˜3Oa†1pŽèN:j†öà]ƒö+ûªä툎­;¦}œ(ž-d&Mǰ`,‹(Ð5š¸$E&ÎÍÉ+«Äˆ‰žQYœóm‚R“z{Hz“ܯBŒ-™Dº—ù×éÖvchK«aùºÑúë)SÜFÒ¦z4ˆõ~Cceß›ÁÏÞøª>ô^cÔ[ÒÍ¿TrT÷*(®èå)´½ õ+9Z±Ô´æ‘²`“ ÚúÕ¥œõ“3TUº&Ϊ¬¢dT!êOÙkû¿È~V{ðhôg~®ÅE~e8ƒ–kŒ‹©Y%e·hºú+Zg 6De¬tmÑN%ú‹býJœáY®R±TE7Ó}:Ö©ikHã’Å&Û*± L´Stú‘Ëza ÚéííóT˜`@ï¼wúTAd$µÒ¡f† ‰°½ÊA&Xàæ6KN :ÚïeÛä½-hŽªöL˜/1a±x˜¥2@µÃd”•„Q5¢^±õϦõÓlsÁ»å $¸·|G´Bâ9oJEa³É´{Sljö«9¯!ÈÜYit¼Ô”Ä=S1°¢§“Ug·ööÂýºëìÉ–›0™©]&æíþ-$t8¶ò]U èê¬6i´s-µì¬ñ —›i¦×I°E#2²""mUUZÆ!¶x5ŠäY‘Û“Áy‡SSnB¢ÔMf'’'!ÈöEÙQ0±›Ì¢¢ìÛUKfU9ƒ¶è–Çÿ0kM>ü~8Sg¹?‰ÙëÝxê÷ˆ¿Ý÷3þIø1ÐxVˆT@P˜p¡@ÇÇIˆ‰"j#ˆ‚º·-»ªÝòVS™—·JWNˆ™÷¶&àÍkäYqAKË’8¨Wݰ®”èíU/Ë‹¿—d嬾Œlf§saSX´êЍ©­ô§GЮ8wÞ³Œª^+'.g¹c†1n8m è'ÐvkôD‚µÑÅÜÛó4Â%w¼±@Pè €J ÐÿÔåQGSžeúIW‡¡ª=PËI±}+YÖ[ëù¥0ûq?Ù8ŸJ·¤¯4Ì3°Ì¿^²›cÒË)ìÒ_V¢g…õG¢Xi6´Ÿ ¢³ÉX÷§x;––•€nY$Š*d šÔ4íÛ¹¬mêÖ>LF3íaÝë˜t|†iÆà#ÑÑ\+™@ëM¨*í»—Ùê×%+ 3—+ñ_:ìéP!ÑÈÌ«²T x¯/I+{—P]ß}]ž5q+Öî\k^OÉf;ý‹e]ÔêãÙÄ!ÌY%N¤½Rz+zð—VWóm‡z–Qü4¤û­k°¢«„_ ÈEOÜÕgÝ^ÕõA<{zŽJjÒ©—Ónª®¹7G(ôQB[ª"[ëU%X˜‰aé ZK C¡<«×¶´™rV¹–e¶‚[¬ieg©½UR~Ë_ÝþCò³ßƒG£;õv*(¬ó¶™FÌ̇؊X~̶֔èÇgR ÄQWy:í·éRfHˆ.ˆm¦ëÅoMÿν ,ÊÈ1K8*žU}EúÔ˜"rx(ê%•¼èVú©U^STéDëÙ©P–œM½+oBýz•Id¦÷VÚ3"ÒˆKѲ÷ÙXîÛÙ†ÚuE§Wry'vqt"ú š~ŸMp[ȼû]µÑXVË0ùKe;ÉK¹HØn+L jCM(¨š»ZÏv¹ëôltW2Ì$È9<œ•'—á¢8ˆçti´Ti¦[]Þ<’҂⧯¯Õ­©ž":2´Äç=LÝ€1¹VOÒÄ—¯-.Ê׺à6Њ«¡mZsOÅë ÚwæóÏæ˜¤JÏŽmìS-Ëùâ#´Ñû¤&ÝFE]R]G«x´[Åö¶¹·³–³?3ĪÜù5ÊLÓx˜òŽ˜ü„tE$“q2 7”L\zz=ýkMSXçõ˜[moÌ~Bó ó„¦rMyˆ±§°­<Ì««jØj³€(¢QÕw„÷µïVZû&3eÙ/5›Lá¿)aÆE®; öV<¡PfføM›‰±MPÊ©mó=?÷j›­Ý8˜Ã=TíŒÄå!5Žz“uiØñ^ËJ.I4û#]± Æ>uÌ´žùú![ÉæùÛ—ÉËÆb~=U¤Å¸(ßË~ÏÛŸ‡ZWN»û³Û*NËÓÞæÞRÉBÉÏÅ̈zÚrC*—ب¨â\I:•+Rk²"~ô5µ¢Ô™¡Ú+Ûy*÷ˆ¿Ý÷3þIø1ÐxVˆ@P «î›*Wá]©mDC{l›R"gÜu¨rí¤vN^n—Ø’N;ª ãvBVÌ]º^â`¤%ÓÔµéD¼i‚4@J€ ( € ÿÕå¸ÿùô/Ô¥eëxõÍ¡³C´½5Iž[ê¯S¸FM¼J:I>ŠVºíËmtÌÿÄݤ¸*ùþ½cyåMô”Ž ¬8‰µT•=Ú‰žtÖ;,žÆrl³e¹yî‘oeÚáy‘*ô¬¼í¾]kŽÞpµrFW‰Î¨™€è¹å%²h}6ÙŠ!7S5áÉ«w¯3ö’œË+€o#3 %æ1ñâñ܈ŠVÐFÄHVBÕ³Þ×%#3‰wÞbµ™…7‡—0Üʵ$§ ï&®*qTU6íMÒQ¶;½Ñ®¸®#¦Ÿ.³Äð唘ó„¶@‡$¯ö–O«]FúñËZãITõZºýªg‰Mㄨù:)iÙßO{ÿ *&}0¾ˆÌÿÀõ¦¹*I[xf7eô¥OØ^õþtGÔŽÃÄ7ß”‚ˆºb8J‹äJÏ_9O‘é˜Ê–AMn7Û×T´Êš´ÄÚxh‚ˆ$k±5Ûè%^:9ã3øÛKR&Ú5²%¬#×dëZ¼¹­ÖMª¨z“öZþïò•žü=ß«±QE;›ßáåÚETVÑÛ:Ö‘Ã ³É”i"›md©˜V$ôéZŒ'%‚@—O’‰Ép•qÝv£ ÉFŸTºªª/¦“Iq–ví¥¼‹U˜Oq–dÕÈà—¾ýþ’×/•—W‹>¤,y-‡ÓD‚KtDÖ¨… zÔU½ípaÝ•6ðyØë‘5t¢¤¨BO+ÑõkgŠéÑ¿¼$5Ñ38é݈Êb8|L‰"ärfÎXµ¦6iª2ÓÂZ´]S~æ@è9í÷½Úë׎ØrZ'âNgŒ šñ)Ë™¡…›Š½‰i–DiB胩¢dâðÕYú›¾ú°uîÍY×[ÌDwôü=ÓçÙH“ –q)—sæÙÓ탢ª|F{B…µzÃ]‰sù3IÇnp{ 0‡Ÿj:d£ «SÍו &H2!uÑQM&;½^j¨Ý‰üJxœc>ÉXs¹<ŒÞbÄ ë2F+Ûäá4iÃwtAô¡<‚¤¢•æxuþ\Ìñ÷^Æè´Ûæ)ïÅæŒÜL„éìF9˜‡&—„ìDfá"o¾-jõ޶q1Œú¿¼å“Ÿ³ýÕÚÅf##ð$€^”ÐùˆxWÓ\·¤ÖytVñnˆþgwÆ.hÎ$F;„à—X[M“Ϩ…áTk‰îŒ˜ÄåXðJ$ Ϻ‹Áz{JÊ/Á!Tô•uüŽm1ü¹ü¯GW¢áW¼Eþ﹟òLïÁŽƒÂ´@ 6PA”EUKmUêJ&Lv3/ Ž#Ì8Üg•PKèRÐêMš‡Ö ÃdÄòõ4êÙ®f¶ãí.¼»Îe–ÙœÑ8ÛjŠ‡Æ º¹m¯=³‰Ls;rŽ_•rbâ$“±œEN!ª]lš®kV×KE¡†Ý‘Û1.jïy"€ ( Ð@l ÿÖåГ}WÈ*µ•­‡·âG3øŠ2›æžz‰–Ú£™8ˆ*¯—¡~¥Z“˧Ǯo-[ÒvèBúõžÙÅ•ñëèŸÆåˆ¨(²U7øª-ßm­Ò©ç­µFyy~nù¬vGë-d’틤¤ˆŸA/jÙå#Ü眑8‚›Ý(I׳£¦ÑsÆq¾\—Ë.ˆ?äF‚Cˆªà3}­¢õŠ¢Xuv=Z|*Ìå?ØÂ:Åóhš* €("YFÊ!YR#’n¨M¸Ò[Èkd¨ÎìFknÀ1+«Ø­ý’©ì•¦œ~D“rTfí¸3\[ùô VöÅcñž¸šÌ¦á ¯ dÇFÑ”Éj÷R¦¶þ\¶Ý«ùõŸ¨Ë”ÛE™=z ?o¥Q¢z±ù…q5üh bÑzÝ.˜ªú©³Ý„è÷æ>³næ½Ýd)\8äÚUÐQoWuËÙ`Œ»pÛN½µc›lz¤Ö¡“ÔŸ²×÷ü¬÷àÑèÎý]ŠŠ8?Ùù¸aœ}. ˜¶„˜tÏEÊS¢„‚ :Jþ½êÕ¬ÏIg{Du„3<ÓÍÂÚ8 UኺjªK¤lFZ‡jûâ­m¢õŒå|ŠZq„¤^cçÆle7ÆCˆÓj‹¥l¥Ð];¢¾µ']âQ©=2™s™¹¡‹jÇ„›t“k¥WªÛÄžšM-µ”Ç-ç2YSu·ñAV‘.ë„*«Ô=JTsí^&'¤¬¡lŠ®¢/’£¹1TfK˜ñ8ÙíA™5¦d»¥A²ÕtC]"¤¨Š-¡ÁSQ¨î„öϰ¶Ye,[¶ˆ®!j¶­= ª½“erù“°éñ3Ý.gÌs¬ŠŒfÞOœ$!.¶‘0Fßî÷NŠóAaÐe¤»5Í®¹‡MçE‰oK–ÉàÁpÐÑ—að£¸+1ÀhMåWÊ€hA§o¶ö¾µ[Ž}JÄæx᜾/ y i&†ñ޼Ït— ×$ |É× c-¶BG¶áWN¬ö~W-ññqù¨ÉÓˆ²é*J£xñy±{(qødûj+`ŒÁñ âÆÜE];Ū¼úR¿g>¯»üOzÞUÿ§­'ÜûÖîädÍs™Øžl.±¥W¯.„lÒüA :.‡¬„½]ßZ½ÃËó{¢+=¾Ÿ²oÌ™–ÞÇ4/«ŒèÎ?Ma–—™|Um¤•zoë{êÛlæ^w‹KV³œ²ù¸¬y= ÖæFe‘–«½óƒ¡ÄtöÜœ!Ñtìilk‡Lg9ü*ök¾uÖqÒñï~qèÀŸ•Ƿ†՚r«]ˆÃ‡m¦g*‡1x9.0›øYi)´ETŠýÝBiìÏÝÑLªæÄ$$¢H¨¨¶T^”Tê©@¨@PAÿ׿Pc«ä¯\מaô^qiú›5n;‰Õ±jo+j÷æ 'ñ¢O*/ÓJ¤ÛCįó&Æà½åCZ®ÉæøÕô[ô¥dÁ’$0DèJ¾•UU®Ý^ì>sÎÿ6Ìæ AAUtÙWÐ[è-^\£M$Æĺ“K§ZB§Ð¢ å @ÅÑÚˆ·ò§ÿÚµ¬ð¥£‘‰!q‰±•l—;{©YÏU£¢´$i¥kª  ßÎHµœÏWÒi×9ú"ŽÖ_^µjßM*³n%´S‰ýø ¥Ê·`ÌréöƒYîŸL~5¾[¯:¬˜‹ C”r1Uv¸ëD‰å²íú•¿òåèíñsh·ÑT~Sp群¶¢¾Ò/œ†éõ*4_™ry¾?u«ô£ÚÛÓ}ƒ$ö}ªSdú!ÏãÓ×iüâð¦0Ú²)¤²!]å»hJֳ臧­ô£e¶¢Ø"ë+Ýz­æ­=Ž-Ñ=Ó“j†OR~Ë_ÝþCò³ßƒG£;õv*(óç1’Gˆq‘VÚ1Q”J×ÛÞäýÚéñ©Ý2åòoÛ¬+’ï –C»¶õúÕʕӺ¼Gãqê·3DzV7æI ‘šŸñ”Òˆ6élöm%¨¾3 ëé?‰%?1)§ñÚQ[’"àÙR(‡÷V¬ïìi¯œþ"ÒùüpÏ5¡–ÜÍxÁ­PÁn(7¶Ë.®×ÜÖ•ÓßíDlíö%§óôx̽!@N;cuQ=«tèÝÛuÎ|ijiå÷N"ï5Í%šÍÅÊ4"ÜS"eQx‚‘“V¥ÖZKZz§º? ³¿…݉‰wkò»bc öž›ËIŽHˆ™ïBHØ£jH§¥io{ß°¯/ˉŽ~&s2ÎÃo+A‰ÄÈîˆO®Ômæû*©ïVúJ¸élK¶õÌ)ÜÀÔ̦Ù<¾ó9ÆÑ4d".Gp“£ˆ¤A©¿³öê•oKDtžZ³>ÎL°X4v|3 ~,“ûÔfÛÄe.¨½ç‹ñŠœDp}þízkšçëyóyø½¿šS!ƒÇþpÌv4Ç_æ&]mqò¦¸GíÃI"ZÈ.ªh-#ëWýM¾?oÙî}/ú|ÿM#è&ÿ6â2òï*@rß0cÖA*JH¦h‚m8„š\lÓ³ö5ìV¯ÌÛ®±ÎsîýÓ(ù.bʳ",‹2 ðÿ÷%ÅFÅ[Ó¥@]@„›°ûbè½f^w‰Æq˜ý$',Ëk ÔÏ™ãDZâÒz!™«bˆóêÑ(é ûßµì×Kf&'™û_Â÷4øñi™îøqXôw¯I“ñÁ‰x‰mª"¶ÿµ ¡&êÚê;ký½ÊÇÄüÙ&8aÌš0æ@à—oEhÞ©¹°ˆi;+_v9üãáÚ}é[#5$`±i†…¶ÂÈ")Ј‰\Ó9æ[ÄÆ»|ÌÓÿ™kmÓýbUµ{ñúPžäþ'P¯uã«Þ#w¼Ïù&wàÇAáJ!š( W 2MÎs%tŠ¢"ê¢*‰½¿AgRoU« úÝ“)ÇZÖèûK¦­·Ú½u6œ+“ÉÜI8÷Ûe¶ÝyAPZ{kd¶ìš{Ҫį5kŠ‘¦â<Ó Ìvô¢°;Š+bogdSMRV‰7ñ—8W •’2&äˆÆˆhšÕÁPínÕð{4„ÚxL–ŒŠî"C\n0‰Œ•+*õ/U¿sQ”Y–;4æ•è_'FÚ”8ˆøÇóL¢i#Í^òÒ'B)®øû‡z´+*µÍ@PbôAÿÐæ°ÑÞ/r¸öÏ0ú?—ia´´”ó¥LôF¸ÆßÈ m1WÊ••§‡«â×ù¿‘¬v÷¥Ã_¦•'¢¾59Ùœ•À8¨Ë ½Ko¶D®íé|¿Ìé™-—]-ª]l‚‰ÓµU-[KÎG«„Ôrí.Õ÷U*î–$À–æÎÑûÚŸAn•z«fp’4È5½õÝ<Ëe¨ž©ƒiM ³)6q4§¡k‚÷õaöšuú¹ývJ+„B—ú5a¯^uÌýEqÀ•Wt\â"yÕ-õª»ïÄCO”Ö'^Êýi–Ӊʊ*:‚º—¥k:mŽÙ‡¹ðs¯»êDÊÝV\O*"û»*5Û«Ìò«ŽË}f£'COGÔçHGÜDºù«¦g4Œ¼ºìŠÍâ=Wïè#¶"˨B*ù9rw®È”óRvzqÓãbfÓï#g=¨Ñ¾”·Ó½tÖxx¾^>$àÚ¥Êõ'ìµýßä?+=ø4z3¿Wb¢5~Òa7óú FxšÿÚÙBÒVè‘#§èÔ|Yª¶¬OW6ŽyÓT’ûÝ`JV$ì’'”j-¾f9•c]c¤$YÎg¡ÅzkŠ…bSEE[é1E]½¯V³Ÿ&gÚŸƒõ&ø3žÇ¶-=“s.&`N ´Ñô–“-VëÍe>]³‰mý.+˜‚Lâ9–KÍüâÓó àmçvÝ6ª …´’­©>eý’Î|LûÜá‹"Û.²å!O¼*.÷ºéTUÖï­VÕåZÜZeXð«\â;Qœ·8üÆ £ŠÖ“4Ô ` o6%}}‚ªõ¿©Å1—?ÁŽìáqÂr¤\0H8bë°ç1ÅeÓ+'©ÆË¡,í„ÛÙ¹¼áoÙÝ^^ÇLJÐ%åZäË«AA:*`k B,—Óæ®¶tŠ }È¥viòæµíÇKø‘7ïÏ«ª×28ÓSf¢‚+òØâ0h¤*š·;a¾;S´;Õæw÷û3ÜôçʈÑðóùªÇ-ž6.<|ô&æ: ½P_Q5QQ-f‹Ùûšöi¶"^O“o‰¦´z’~¼Þ™u–¢7Á&D[°ŠméÓjê·•oãN©œÏwrN6ÀãdȌٸ‘ô Žˆ}#æò§½õkÁÓiÕkgÚúŠm¤ó5îôö¤Ú8øÍÄ`E†@t²ØìM‰T´åŒD@7‡MÑRÝU `ÑÙf7Òj>…©ÂpÛ’|¹‹MBSc¢¦ÅétR¯ª‘Ýžßv»W®ñÕï¿»Þgü“;ðc ð¥(3z‚õÉL'#eØÔä×ÊH¨ÓWôYJ¯F·œR#õ6#¬ 8ˆH®®«.ÔTM[j–•)¦6O(ЦÔÔžtZ®V’ïpÄî›8ä‰~®%¶~íßeDó¶MÃb5»±Âc7_%š!û•_ÜÑ3Ðï—³?9øËÏ*ÝØ/9Õ_öb¢+öÀ ÕSì6ËžòªHH^;jTsÿ1i'—aäÑ.ô3@x¼¡"ë÷'§÷UhD¹}J.´@-.”ÿÑçÐÜó•þ•ql÷ŸWâÆ4Ïãjˆœv—Ë©Sž%Xÿ2²’Š?Æ/ðo\öž×_æ~F°Çøä±ó¢ý¦Éôž%¶qÆÛDjêû$@2K]Iv “¦ë]¾,ñ/™ùÕ1zþ"³™ÃW9¨•MzFûSb"¥þ uƒÇV~¢qÉ{ÿ~•Zñè†>=±ä_ë­I+ê̆É~/B)–ʨ—ó]v×_‹=^Ω˜¬ýI¸ùvÑ´Ô©¥Rèi×èO®µÛ—ÎáºããËMM:,êKªª*¥ýÏ-$ƒ9XÙ솭 ࢑·sDDÛ·eÆ£)‘!7ÉâÙ ÓÌJ¨‹ôªeÙN\Q]Wá‘¶£µ,K}¶¬k¶³8Ë·g¶•‹M}7ŽïIä~a“Àá™ñZµ´žò[з­'æ­­Yâpéܽ丏f§Ä~B7Äñˆ’¢Úú[BÕdê;ÕÍ1Câmœs2‹æ¬G0ÉŽÄæÝ€âñZ†B1v¢-‘HQz×Uejòô|o&µ¬æ=_yÍg늒#:¢¦ Ò†*¾b¢Õ¢ž¨NÏ'ùv„PËu¶Í¡[!­Õzü•ÑÙ9xõò¯JÍc¥ïz»‘°TáhoP—©?e¯îÿ!ùYïÁ£Ñú»qPç(d‹k@néaT·ï*Vc–´žé†âÛÐÒ ¶¬&O2inÖ­¨«©l‰îT ß`»K}Ÿül©AG%CFœ4…Ø?N³²%¼ø¬  B;h tÛb¡’E¿^ª”áÌ_8NÃM€‘A× ò.Ä%K*^£)„ž.D—`<ÙDtt‹q$E·ªIº´BE·6Y ­?Ê•(e\$"$N³RNwª£¡Ûu£]Bæ´[ é$Q_2%LNI€`ɪ!^È·²*Š{¨*—©Â2ÜCM‚MôuêôíZó[”í‘§½*‹t+úTîŸA)00ú®à+½$²yÖ©ô©(2t' JŠ¥ÁË\“¯I—áUVŒ˜LÆ’d}áÛ¡SP ö¥Lf:Yü¯ˆ7If6R–âûËÄTºtjµLÚRGÊXæ¼<–ÁÆ'FpDI-pt.Š*i²s…m^†®¶*÷ˆßÝï4~Iø1ÐxNô@½o@y(.\·,ZXn¯C ‰ç"R%ú5hZÑÂçœÈ¶óå¢íl’Ä>íSU\l’Q¶H(Ø ˆŠÝkµmÒ´ÈÜÀ ˆ:öõÔ`ʧ7+óO1;*÷Çå…9¾«ÚÚ­åN×îêÈ3 “°¦"î¸ó*â¢ìTiÄTZL&%fÉf56òjAEºùÖZŒ*‡Ææ±m1¤"|·IÇ”ô§§²6ì¥H£J .‚&Ä2Dô_eT@Pbƒ4ÿÓæ‰©:=Úä¬>›vȉÃB/d‹ïIéÔã–V¼vÇÕ0™Ž©´¼ÕÅx}'xë“4wLã[ô‚}Zß·5y±º+¾gó[ÉÍDO³¥éÞ¶ñkÕæüïdLÒ#èG8D=bˆaÑ·¡}5ÖðŽâæ”ÕWBùmõi”asä^p8sǼhËr»vkADÒ{~­g¶“Õ¾‹×Ý“¼¶ó±>Ä[ŒÛ”ƴƲ-õ2ઠ&¤Õþγօþ w)‰øø³NG‘M–ÌF¤¹!2±¤oÛ}¡EK/NÕë¬ëîœÃ·È¶ªé¯Ã·«î›ÈÌå$6 =)Çm4¶J¨‰äD­»!æO‘¤×ˆdI¨•m婘SâZg™dÓjR 1¦­…[ TÊaµUg©?e¯îÿ!ùYïÁ£Ñú»p/gób.1²¿þ;éYl^²¦AÈÉ!K-ÚÛu[%ü–ê¬m a3)?ЍË:–Qó¡-앜ÂSìçž$}ÂDééòìÿ¶£&cLe]UW7»6ÚW²Ð:<´-§êE·ÿåG|'¶[15-bÚµkÞöºªõ]QWܤ[$Áú‚‹F.Ýà4¶‚Aè^”êO²J²¬ãÕ†c£ØXD²0 ‚½+kzjbI/ÅmWEöô*%—«Î•(#"ÇRHÍ‹HD«º‚„©·b[¦¢0–èù­ì‹Ð¤‰¥.žjœ¡£“ZmÔ½˜_ˆîÔAéUO7šœ±•“S&N(‰ ¥ÐU;+¶ýª¶3X˜ê¬ÌŦ'§Þ(o9 ®! ­®›÷TEëÚµ ‰‰GË˰ã[ñ‰Ò[&•KŠ*ômD^Ÿ}§v«2´A‚fs$BD1Eö¢ðº¨»4S$Ä2öb17¬lk~¡^‘ôPÀÁNŠï1â4©¬Èè‹{íWG£VõMc˜Eº;Õv¹Õï¿»Þhü“;ðc ð•( Þ‚Z’Ø]‰u/seZ=¡–SŽ­‘lM©uÙPª#¯4ñ8[.ªº}+{Ô,”c$hJª^åJ Ï[&Ü[‰uõ¢§ZPE¸ëàÐÕ­‚IÖ(·J r˜/6BnhEÚµ@C‹ÝÐBŧÖ.¿E¾­FS…vZŠÊwJY5-’¥¯@^ƒ½zôÿÔôGêëÃïÑŒOóßèQ9«ŸF1?Ìc¡C,þ®ü?ýÄÿ1þ…FéúXý]x}ú1‰þcý “2ï—§–1?Ìc¡Bfd~®|=ýÄÿ1þ…ÇêãÃßÑ|Góß'AŸÕχ¿£Ÿæ1¿Ð Ïêó-§óg§ÉÜc[üÊ'-W>þ‹â?˜FÿBˆ«?EñÌ#|ú¸ðóô_üÂ7ÉЫ?EñÌ#|ú¸ðóô_üÂ7ÉЫŸEñÌ#|ú¹ð÷ô_üÂ7úý\ø{ú/ˆþcý õsáïè¾#ùŒoô(%qX\69FÄÀŽŒf®1MQIE´ÕaÕðhPGä9w—òO¤ŒŽ2$×ÄQ±vC ºhª¨(F*ºnD¶¦™¼¡k|Ç·ÿJÏú5„å²rŸ+ éL4èDŒÍ¿Í§l–ËÊü´¶¾&ÛbkgÜÓ¶ ËqåÞ_¸ã" ô]m:>Ö£¶>ƒ2Ùp%[®:*¯–ÿѧd}t³ó&÷î¯åà·©NØú Ëo™ñ·qo÷AþJžØ3,=˜ÒûVÍ}jvÁ™d°ø’K(êžEhëS¶ Ë?4â¿ôlä§l ‰Å'D&?‚òS¶ µ<.ÁP8ÌW¤I T_qR°fIÇåìb"ŒˆÉl›a±UôØSÉS‚勯X¢2IÑelëRy#‚K‚Á¯N:2õíe¿òTvÂs-7°·Í‘,½\ÿѧl–«Ë´·¾&Ýn¿ÅÚÚ¿¹§l×-rãNƒ­b¡¶ëd†Ûƒ¡!1[‰" Ý ¡iˆ2’©A91£ÊŽìi-ñŸmö004ÒBBW± Ð@þ®<<ýÄ0òtêãÃÏÑ|Góß'@~®<<ýÄ0òtêãÃÏÑ|Góß'AŸÕχ¿¢øæ1¿Ð ?W>þ‹â˜ÆÿB€ý\ø{ú/‰þcý õsáïè¾'ùŒoô(Õχ¿¢øŸæ1¿Ð ÇêçÃßÑ|GóßèPgõsáïè¾#ùŒoô(Õχ¿£Ÿæ1¿Ð ÇêãÃÏÑ|Góß'@~®<<ýÄ0òtêãÃÏÑ|Góß'@~®<<ýÄ0òtêãÃÏÑ|Góß'@~®<<ýÄ0òtêãÃÏÑ|Góß'AÿÕõM2ÊG »x¢GÝ`ä´j‰ …³1E¾­c¬³Ù*öyÇþ"~Q”uÆ1ï9ÖÑ7$@B$âêkQ¡1 ’Æä˜È2ã̉´ûÑÉ \wI£T²®î ]4¨ÆÈ³"\È $ŽB0T‘4ª¸Ú8šl«ê—]q¹rÂ["BÙ‘Š!¢!]³P^…^± s@P Î\q‘Úw»=1ÇÝ„†Fw¶×¦Ó£Ö:™k$§Ø’¢9Á•FŽ#f¢. Õ£u²BlÀÄÃï}¨hÐ%*Tx‘ÎD‚ÐËvÖVUµÖÝнt IƒÊ½A.;,5$ÉQ4(ø„h‰™G&D‘pžHâÄ”%2DQ±0o6BWí#Ÿ¨$h ¤J‡Æ-ÝÓwr‚šö(db[,”iyœ<<›G ç(nHš‘U´u2Mw—Râ5Æ íjoIÐHJÀ?!y¦T8ªÖLì8yDÞ“( wr==J*Ù{äÏÙî„SX9«€È&5[f3‡$ãØÃK€ 9©ò(μŽJW]/pLIào…í; – àc;.sñÍd›} ³‡‘XiG†â7Þ;ú ý¡è %¨M›š#Ï/ˆÒKtUçœdÜe¶N*‹€$ׯ¶×ˆÙi2÷´sñyÖã䱓¾Œ¹p'4ô(î°Òj–ÐÉN#ä$<>ðeÅýôÏÕ*ã€ÀãùÊ­aÚh;šµ øð® :.*¯´iµû…°Œ›ÕÙy‹—NNk)>\’âÄaÎFÄ]ãktH[}SqÕjÁ«Vîíd¬Tiðà1OÁÄšÁQÆ+иŒöLY!hõ6Â@·ÙÑíK…ìÂÍ̘†Ã•ÏŠÝ@\ŽŒ5 ±Nw€" mƒwiö4ûêr°y¦3XLJ+3#§¼¢,–â£l‘0H«;*›Û»êCðh+Rà6ÖBÂÇ= s©£Ìr\Žãw*¦ûÄ 3\WîbódþŸií‹íÆCrY–x.„M1ó²'€e8’ÞUaV;³‚Žq²þ0ÂÕ¢‚ÏÉ0V.5í ç”ØŒÔñm²šDHB4‚3"sÕ#" °Ð@PEs4Äc!¤aùËmÆ#µ—UpÁPP”E¡¿ïm¬t|Ž!– —Ç;’0ÇG…q˜îIáIl \ᘠ÷7TøEÞ Ùõ=·±Ü —$›Y³a+ùÆ$A8“QµWPÂ4TtãµiS8}­:Ì< 4ìlˆÀ ÉŽnV©\5G»£’[)ÛWw!=z~+{‰ÚÞ –šéây‚FIæz øÌ±ÆŠË’\iØäé “L‹Žèp]¸˜· H ‰§XPE,9¹hø°ž²0~vqP¦ÇF\(Ñàöì‹Lim]R :Èq‡V¡=àhîPóiß…ÒK‹’˜© ¨­{f´èLjÒéu£hÛÑ‘ ñwƒl ß3“ÒŒÈ7&K²$|×%}ƒSFÛ,—£Z ¢´îpÀ8`mÐ8å\ cÓ–¥7£Lr 5•yPp•o@È[]Tlß±Ø ³å<ŽK^=×¹‰Ù-ž&1Ü4i„ôé–"ÆmµG¸Ì›­ñ=¦ã¼h ÃÀð‘H1ÍÊÕ/†¨÷trCëe;jîä'¯OÅoq;[Ô™®††¶§7Wywh¹ÌPI1nÁq©Ñr’V3rXtM´ÒÓ®) ¡;+:-óh™ÍpásDL –ɵšÏ<ͼ5uH‘-–1lÉ»–þ’ s b|‰Î5, %ɺ ÞÄBR-":”ôÚYÀ ™ÒrQX…&ÉS¶ 9©.š ‰î‰}Õ m+š1p³'ŽžûÁaÖd>ð6Žæè#B‡¦äœ[ {Wf‚b€ ( € hÖcöAÜsSc¹`u¿ xfÓmX¦ðô§­A¬<ækæÄ<„i/´ë­2ón¢(™ªª "¢‰P6Æó63'“v&9öf0ÓòËŽð:ˆÈ½Ë¥ÇEû^µ{ÜדeÉ2Ƴóö‚ ÊʈÅä±§ tŒtÇÍÖWˆDÛM‰²žƒÐd$|7ý]Ñ1ÜØÞ\¹L™çÜa¢¸.vŠBl«ª,ñ‹ÚËe- ºö—;:h1‹ÀçAخʜTÌ,çQøÈÁÀ&®âG@gZ:\2‡áoµ “ÌrÓY‰³ÙšÚ÷)0Øi·À‘›uÓCm{@ãZ€ÀíÚ …Å`¹¦hò²-|ç6Iù6Á6%£ÝÛ|Ç¡wn³ ?}Ñê ]ÄóB #ÞˆÎIéO8V?_Vô¥#ˆ×ìnÊîÀûœo‹#ýðBåÜ’Fc!œ¿¼@ZŸˆÚí]›á½Ø* N9§ZÇÅiä³­²Ø¸Š·ÞAD]©ç q@PAN‹æg¹Ž,©m¼Ôh’¤‘6Ìb+n¶è¶ãÞ©dEpã÷‡Úž kOÅGùK.ï,a 7[•üY"¦"ˆn´­© ®ë¦:MCXúÔ˜†òOóÙ)ÓÇ0pYŽñ°nkm×IEQƒtPQ T7ýoVÒy¹™r$|ƒNe»ës–[ì:¸®ùÿ.±šAtM=µ×£^þ½ÒqY<\¬|æáÌȉ3%·›}Èc!‡e>/š6MFЪ*‡ÀÔC»¤ q ¨<‰¶‘™,4È:È’‰#ƒqBMЉAg ( € ( ž`.[˜•ŽÒ4öŸj&–Ä ¶ª_i&Ä ŽÌÁÉ·‘ɸÎ4²låá·M‘T8¨¢ú×Õ ™çLVVl8¯áÅ'ïdªH Ã| ‡•T¶*9ÅÓëC@ÖW,KcÆ,!Á€4S‚ã±È"IWjëWEH“³Ý‚€c8b°x›‘8ö‚û^yQËßÖiÁÝíé-4rn9ÖÞ–á¸.C€ncpú:3N*’}ž˜ÅÿÒ PZh € ÿÑõMA–Ƚ ìp4"©2XÇwR*Ø·ãeMë‚PjþT™Í÷74 A„ä·[êEzom:Uz¨kÁ”7¦ÎGf3´úIaøîW2µ+b\!™$$9&QÄtš^‹ 2’@‚üMºŸrÎ)5ɳ1Y.ä! N«Ì N²þ¤22lµ6à|G;:õïéŽ \â¼ÈX²ŸŽV8ËSH/¡¨¤?ùÅD+Æ[ÿ‚a¬þ1Ü‘c@ÜIC«J›/F­öÅ·È—H=`mÂ!Ò~ðè!p¼äã윟 –>l…8É qK-ÇA@È®­€´Ø‰8FZwè'ÍcÝÉ9¥täµñ¤,<¬‚éBÒO pôª/ \×ðhP@P@Pjê:­4B¨¯ ‰… ÛET’ýZ†‚·‡—ͯæçC—6ÆÇBê5 æÍÔu¤stŠ[‚Þ›Û°åܳ+™rbä¦Ë„°ä‚¹ÝYˆè:7¾”ã—g_°Þø4ñóüÐÎ9Žk°ŸÇ#}âL&c<ËÀÅ÷È^'Þ&ÃOx½MÐLó$œÄ|KÓ±R#4±Yq÷Kú8€ H#¡æ4tv·èƒ•Üüä†ä„l™äkMc«B4KuÒM«¨±½¦žo›œ$ãxoGs>{dèš/"4 $* CµÂ@“‰êŋa§É÷W\Tg¼‹m¸â¡¾ˆ­¶(Jã¥qöMëw|7} jÑ%5*3r·â.¶ã&ŸdÛ¢Û ´@P@PGÊȼÎoDU™mÈ7 Qu"³ÃÓ§m½u¾Ê r<ʼnÇIÒ4xÅ$m§]FÛUÒŽ ÊÂ&¡À ;-“šËPîï ͸ãªÈ>W8½Á{„.ñû¿ ]ÑÃ×ÅTMµiöŸ¿@—ç4iNBL{ÂI‰S2ÙÃÉì í"Ñ€8¢"bO¶MêøFç.\*mÊ!o€²Á×y¦Í‘A"&ÀwF±Ö-‘éïP8Ås7(ûÌEI"ìttdD“È}Ÿù†Ú½íÕ@Ò74FQšç÷%Ie†àÇ”úðã¼­]ÁÌÇFèºí¸C¼, Øš·ÞD”SOiDDÖ]“ ê,gðïñx2EÅfRÀu Td¥®Ý‘:RûÞ­¹³ q¹Glž'œiæÛ6lN2ã€!!´÷샼üh7.dÅŽÓOqv>†QeHÁy5))2Àè”û1^;šZÓºÙï ƒ©|½5è\ÎÀ›hy¡$Šª¥aÕ ¸þÓwfø*îëÝ aÞ8TÕ© )¨¢ª"ª*¯šƒÉŒ'‡vë†Ñ!8ªƒfÝ¡ zÉAÍœ¼öR^=ñÇ@ʳG!äA»º¤ÇØJMC¡}OZ€‘ŽÏâ%À·`4ócûË0â4àF%To³Ànæ5¹³2¹.d&‹M+,M2Æ¥1pµ8ᓜ6ûZ4nj Pq§2žSPwr„nºõ‹¤j¶µ´Ø½õ4^YÎ/0±’œø¸‘d>à¹Þ¤8Ë­º ¢DQ±Í¡&ÃÙë'wŒœÕ«ˆ âr.V1c儆’~.8ñ‡[ŠÁ½⋦Ü7Ý ½£ŒÉo€úޏa²‰Í i¶aÃUR”lÉ|–MÚЂäEŽ. è^ô†ohdìèXh € ( € ( Ìv1øÙŒ´Ó V§›$ÈŠ®¤FšFËUÑ¥6Yh!yG–¦a\l\Â⣚6MÈËEt–S¨«ªæ+«ë$z¤~êƒHøh{¹5¨Lc•¾ï&k2^yãbûâ,“ ˆ¹«Ž\.Ö—(,™xG/6 *"r#ºËjWAE0QKÙfÚ̶#2î‚«@Ìa$½ mFÃ%€7ÚÒæ‡7uéÐ[„T%É$ÄŒ}¢ ƒ–ˆ†fé*–AÁ6IHÍt ûR"#Õþ²ë|³:&&^-¦˜ÈC#á ™2è¸E­Ä) ½­³N+wŸÕ»ûß‚c|  MJÇB@å´¼Ó=ž×´Ý ò­š—™‰ä(Q䯑 –\‘Ai‚mI‚ˆ‘Íw\1éºî­!»ºMƒ¢å¹Ë„z¶¸ÎdÖx•ËO r .ʺo¯†šz4ëõ´ïPfW.Íw>6‘‘˜Ì•RÕ¡¸GT¶›jÖè¯Of‚>_-å#rÖ1FßØÏƒiÄÔN2-êl}¢ ”´ê>ÏjnEjcE0M èä¨Î~<ø¯››ÈMäž‘!Àltž¡kÚi î%39S4±ôCá5eMy¬Ê‘Øã*B¼›T’(Š$ìWˆqÆÇV®ÕÞæc¹FtÔ 4÷_ ×x•±^µ¤ÆÎ¨¸¤.{1÷ÔrsÌQ¬k·jklÈŽ³‘ Ã!®Ó„ãªëŠÚèa s…º;ÔnN3â‡Z8mƼ¦Å ç¨Døõi&Þvú·µh m†ä·áÅu‰PÚ–LD(‘ ü”é,¼ˆ$.F|M¨ âjF¸ú;#Ù Z/.ó xñ¤êiÙ°¥8üH/Ë~CBˬðI¥šóG —R“ÂdÉiÕÀìoÐ/Žå¬“YVòRM”uÑšršlŒ„–¬ jBšÀ=ŒÈ[Ô[Ü!Õ¤A²òL·±±ÒlQœ)bÞ0S_l\ÙU´V—Ölè$ycô‘"\~ ·P×óŒÌ–¦Âê›eˆ+v"-ÐO¶ ž (?ÿÓõM@P@P@P@P@P@P@P@P@P@P@PAŒ30 {u‡Üþ6ÞƒtU v§]òoP@cÝη‰ÎäÍÊ”æ<§3§[†ÿEášð£¶jio£àP)ʶx–B4nDhFá7ª‚ü51%H̶H·°¸¤?cw1†$þVFN4‡£1.<¦âŽ””bЛE˜ä„©kâ 7«×Þ _¾uŒ<„ ¬ˆÊ´B)¶\G„‹ŽËÇ«IìÒb4•3 ›ŸžvæFèŒAp@vª—ü›Nö¥ïKz‚-̳R[§Oñ3côuÐ+t›8šp·‡W´gHíìúºJ‚QîkŠ,´äx’%”™ mpEd«`®®4$rÄfôjoX„ËdFØ™¶DˆªÙ[Pª§BéR§Á* ¨ € (?ÿÔõM@P@P@P@P@P@P@P@P@P@P@P@Ë èØÆxt:º†è¶¹*ô¥Ò£|½£•Þ/ó›’œâhø¾õ}–Õ½¢þQÕ@“X|û˜ÉXìŽF#Ì?ã4Qá¸Á‚hÖJr_C²zºCì¨4c—³”Fó9ò¡Â6ÞjòyVIáKÔˆ¯AGnË5°c¤YQã5¯„å÷ &CÄ ›ÇCîXøÐø¦ÿvhã:·3Ð(:‰zÈ­u q@PAÿÕõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÖõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pÿ×qþ(¼@ü_‰þOõŠ¿jp?ň‹ñ?ÀÉþ±NÓ /íGâíó~'ø?Ö)Ú`Š??â“ýb¦ø£ññ~'ø?Ö)Úa²~Ô<ÿ×ÅyýŒŸë1DK¥x±â¿0rŽ33#ÿ:›Ýä$K6š48Ý»~¶ªŽÔDåá/<ÅÎ9ÙX|”xQÞî¤ôŽŠ+€¨Š††éê­Ý4íŒ)Ì×8øƒ ”1Y8Ÿ5IÍd%5 «/ j㦭éï®ÙþªžÈÊ"ÜeÌ|çâæ&©P——³'ŽKå!à +"=’ä¤Úȹõúߣ¶“ntñ“™°¼ÊÜÃ4'$fÁJ[o¤Ø’6…ìÐ]DÕ~Ñ&„(+ûPø€Ÿþ¿ü Ÿëí[ /íEââüOð2¬S´ÃUý©|Aü_‰þOõŠŒcüSxƒø¿ü ŸëÁ†?Å7ˆ?‹ñ?ÀÉþ±LâŸÄÅøŸàdÿX¦ 6ڗĽñøŸìdÿX¤Tôx5ϹŽvåyY\«1ØÄ×"€EPšqQÃqu]Âõª&0…ò ro¼SæÎNÍ3 °N#o™ËIÅtÝtG†ëi§Kb½šÒ´Ì1Ù·¶p¬rÿí Ís¸‰2>1¢Ø6øª¯Zï?¥}†¢ÕÃm^¨äòo|þÂnÂÆ•ö¢ðdzvûm”ˆizÚ:uFí Î÷T88Ô_' ÿ—®ªøõŸkÌÙæ^³‰ˆ,?´:/þKüÿ/Sý-~¶êú*“ÄxÁâ6Yî \ËÖ$iôû"W¬•ãÖ=«WÍÙ="?ʽ㹓šYD„r/ÁˆÓ¶2‘ºW¬f•öeÑïíÁù¿™ÍòUb#L"†ké± ¥'\+Mþˆ#+Ä‹F É6*i>ŸpêcL)o6ÑôBç¹ï‚©´Ètl;/ÝUgV§—3ôÄæ‰ïê»m"Š^È…þ•Rkß^é´™M穌ªm4®ÙT¬ˆŸmYw7穞#Ÿ³¹ ÚGŽ Ò\ÉÏrÛõÉó/úm}ÓEmÝ8„ÉsT¶šW_à6Ú"BDO¢UäøŸ:ÙºqŒþV“TGÅ1`¬Â°IïŒ þhµô3…ëª}¨Iþ1ç˜e^í"ÙLEÅ·Ù'*Ñ[áÕ]—ûAóƒ ¿dÛëõJÚ5ý,oˆèsöç±èŒþ GËÒu³î;å¯Ú²œÍˆÅÈ…óæÇŠñ6Óèh:-’Š«äš¬[·¬Õl½ TJ/šò²1¯˜ÊÆ9ø2e2"¨)²É8(H*+¦ã½b8ÿŠ??â“ýb­…;›'íCÏëÿëñ_ÀÉþ±ZÓTJ³y>ûIsë¶¼ ^ß#R>^½Oå•¿Y·áùÛ<©ªÁñ¿œä¢)Ãǧ¡·þ»Ë]¿èš¾›þïð¼½ß8½:E·ø–&sD„»‘¡¢yÔú®-sìù^šûmû¿Âæ¯ÏwO²Ÿ½üI!çÜâô³÷.§XOËõý6ü?U§úÖߢŸ½üFYO9‚#z›b"¯Âê8•¶¯•ë·¶ßÙü*ß監ÙOÞþ%}ï¹¥»ÿƒ³ý›ß+]_èš~›þïð¯_œîŸe?{ø‘þÐ<à¨0ñʉåmÿ–ªÛäÚcÛÝþe>c²}•þßûLÝý£¹ÐVà ¾–Ÿùzó÷x:«ÒmýŸÂé×å^ÞÈ'þ$9ãÿCŒþ GË×-¼zÇÒê²Õi.yÿÐã?‚‘òõÍjÄ/Ý,‰.zÿÐâÿ‚‘òõL'¹ñ'Ï_ú_ðR>^ îai^{ÿÐbÿ‚‘òôOq2ý¦9õ?ò¯à¤X¡ÜL¿iÎ~Oü†+ø?Ö(e¢þÓüþŸþ¿ü ŸëNXÿ<ÿø¿ü Ÿë2ÿÐäõ²ÂƒUé (3Aº%ÑSÌ´»Ç{×!r¿õ‘öúV;_ä§¶T§EKÀó}¯ñ.´…Ãu$"¨‹DÑ"©¯@í´©ìMŒ.5¾a ŽY¾seUÄSîRTHA lÙ’Ý Oj™Vc "ç§a|m™=¢QSÌ8Ħúœe׸fh¢µ0›G…âÏ'¹'“ùw Š#™wbº® "¯P‚"}­Gµ8sNwð’O.âO-)1 3ýÓ"QÑD£ÈØš Jé©tûáõ†¡h•ìtÖAMØî¶¨$F(ŠItEUK]Sm0œš-BIÔ (1jë©ê_Ùwþ€È~U{ðhõ[uD»U5~ÓN¸¼íbþÌq­žŸ„¯¾—úU¶¾Ž]ÑêÏÔå ‚¢Ý6/–¶Š°µðÇfr‘eòáÿ«+íó/E_áD«nÊûX5šì‘pÖÎ4 ¤ÕUvpÓ³ƒëRºíOw˜Sg“¯wŽË}ú¯ü‡Éx¬¼§>p“gã®þÄÔ¯Kš ˆ}†¡øu6ÝôugÇ3Ì~k°AÄFˆÀÇa¡ŒÀ%…–‘=ÛViž®šÓ æ´¡AÚ»,• ·N¼«4 lŠô¸+ZÖ!ɳ»¢¾ÖÖܸ¯Jí½jåÂscM*n ©ùÒ±Ù<:üjæÜ§˜ÐÜåìèO§zå—©Xˆ“ ¯/µ!ÒuµP#í(ôÙ6Õb1+_3Gàg²RC–×§N¯5ï^/Ïé}•¬UM5ÄÊ·Íæ¤åÜRz¨Šw{eMÍÌŸ& 9!ÄÖÒ¨Ž#kt¦êmµz1²b[[\L °óríÍÝH¢DÙ6¶; M.›¾„"®˜ß‡=%g¢‘š·>râÿü¤/©háx{6°Y_ñû¿æoÉ3¿:"^JÒ–du%vxô̲Ù8Yq5(쯨ñ©Š¼o'nDºU·_e»¥t…D,‰^^ËæV¬e¹ØoUˆÊp®s @µëÐñê¥ùœ(Ù b—Û]W¶º5 $ÉE½«‹n积Y’•Ö¼­·z醻}Úóö_.ªÂÙÊþds-Œ—ÝPÈUÀSøÇ’ê ›=ß{ª¹­.z³Ì¬`¹£$É#š¬íÉHl¦DºEó‰U&a˜ò¬)N·"4qHÙFÚPh=êl"²úÅ«WÝTv™…3'‹tÛq R Š*!(ôÙ`'ÙT3´B(Ü`^á‰uª-¾Y”Ô‰…z¨4ÓD¿ÿÑäõ²Âƒ @PfÔ m¢^‰ænFÏsŸ…¼’ÞuØ‘€ÞW\FŘAéT[ï 3̲¯ žaZ|yoð±?9Hi.rž Ž—h…M ·Ù­vÏïORú£ºWÌ8à^Çî´.ÍÇpÞIDëë w]Ô$öžö¼î­³í{ÛzãØi™ð™üç>2c21ÅÊ”Ìì“DâÑo¥ÓEº®;Ew{UìRÜeã^&3 ®˜1ùøäT(ñù Û`ú•P6Iö|M•8þê²ä|‡*LÜï2r6ET¢ç;æ–¤'°DãN•CoÚÔ¦]S/•‹”æŒW$ä£ásxe•$mcWÂÄ$„›GH4I²ˆÃŸMðó9†ç|IË|²Ð<ÔöE8ªy][® ¡S ̨Ù_ 9¾cs‡ms"±ÂtiQì€äW;o-†ý:»UOr¥7ˆo¨Î²Qœà¾†:éÐWK!yª0œ™**T%³}tê_Ùwþ€È~U{ðhõ[uD»U4þÒÉ~|ù-¯Â$Vú£‡'‘8—1`etÆò–Äã&df7Jô‡Â)Љ֪½HžZÒLeÛùÃØx„ "IÈÛzA%Á»ô‹H¿çVWÛž!¾½Os-Œü;¯DŒÓ¹˜ˆcä9qpM²BQDÇX¡Z+–ñ3=Ñ[F}ß´äܱâŸ0DtcÈqù.•^è냡¶ÍWHêÒnØ>ʹbóÞݵRýcÿ ´á3s .•ÏBªZè`Š·&ר«£^ȳÈò¼i×?›'îÀmæô/g«ÍZeË4Ê&^Æ“ˆÚq6ª'J{•¬]´c”Œ dZG›DCQ±yR²µ¥¶ºGX''Bªë&¨çž«Ä¯5˜å&d¨agÂËuM]UY®¼Ï 77g„mªê»*iÒê×NØÊŸhÏ©„µxÍò@…1’¼n-ÈÕRÂ)¼Fºw«‹Ê׋æ¯Wži‰è}ÍQ£BÇ´ Ê0êÈ‚ãŽ)-”ÔG²5Ǚî""8Rš˜aöEÆšMÁDCA%¹ô ‰kÖ/}ZJ‘ív®L€ÊrÎ:9¶ ½Ù§Uz5 ßJ•½m–¯[_5|ÖúÌm™¤ÿ#:´àÈu48*M6^žš½xS··™—%ÅáSâ^–ˉ²Éƒø=à6/œj׎2Þ–ËÖ5ÊÕ_ñû¿æoÉ3¿:"^D­+ äî ÝįOÆ«›t®ü¿ê›+éõÆ*ùÏ6‚Hت¥«‡ÈØòé+ ^Í-jáž]àÇ% [%[Vú«™gis¬þU]x‘ezqŠCVy•Nl’%® ›&eëêׄqª×ÝC]½pm»ª°Â5Ž)|L޾èÈ®%Ô´t —¦¹/l7×\Éìsæ|ɺl¢ÅŠÀ¢ ,©" ‚i½ïî~æ¸÷níuë×;?o!áœèìG?œ ¦Í¢¤¨».¾U_¶¬?¨–ßÓGÒ€É⹓¨Û”ø´aÃ7ÓÒ‚¾ªÙz<µ¶½ñf4ÍUc™1.(êºÚ**"ï%ÓÍ[åÉæ²ì<è ÍÞ;ÂBšU,‰¥zFË»z'3Ë/ðœA}”³O"‡JŠÞÊ+è©…lhiR©=´ÿÒäõ²ÂƒJ%µò‚oÎãñ½þJÂmðb£Î b†h„‚ˆHƒª­YåYŽ çd$¯1;-²à¼² À_zZ®¨·óöª<®sÅôN&_—³3²ÜÌ%ÞÁ T‚2‚4î±¹) ªo®ö­=šñ¦‘ö+lÊ›â²ÌkœäqÏÛ;1:ApB»IԋѲ½/?g‘ŽùÂËáf{÷(e¹iü«8ŒŸ{c'Š“)t²N0 j*[-µ¤ûR­ÜÓ 3”9â&Ÿùl›w2JKÊ¢¡D|{À-—I¯gì½íFqA쬤WüOð÷*Ò¡EŸDf:Üÿ9*~“؆Æ@uÿ¹ÛÚ*œ ¤‡:ô²à'îEi'´ùÇ'-e¡:lÏ kL,†•EÄn<µ½‰6¥…jdŽª¤Ü„Ü÷ƒ¹\´ç8³—0ÂÍuL[l5[à­j§â¿/bð|Îqp";;âÝÔ¬F*„·_-¯U´&ªk}u³Ô¿²ïýüª÷àÑê–ê‰v ªlý¤Òüùò[_„?]z8¼ž®y†ÅLÉÌn$@Ôéõ¯@Yùº!Å1—wä®S…ˆ€ÒkxÑ8òU7œ_"{ÐóVW¾[kÕ…â.”D؉ÑY·ÁÁè $Ô$Š$‹Ð¨»(9o0ø1ÅyÇ0o°Ë$Š£ñ$!Ûtm·Uƒáë÷Ú«žÚ>‰zz<øz»™òÅËyˆxÕiÌdœJ‘2M®•"q~0 >0NÛ ³êüj×5_Êß]¸íèëÜ“âëY­CÉ üì¤Ü%FAÒN±AÔžšÖ,ƾ,OI_ðyø9vÙEmĺ:ÁÛPªlTÙ±jrÃn‹S¯BNc'iM±ÝÚúiîU§—'»cÿzè½j0×½Wç ¸E†%Ñ×(´´KìÚªžŠÖ”îa{ÌLeÌ&ã'Í’„ËF@Kº¶UéZDv½Þ-Xœ¦$r^J6 fÅh^˜Ê‘¼"šœáiÞFº”ÿuðwë—ɬÚø¾Ebßšå<Éš.S*Á•ÁP §§È»z«ŽšÞŒíäð1‡Ã¥avUÝ' Q:.«ÔuŽ{­Ã{F+™^±¼û9ܤTXâä"ïs㦫ªñ‰ÝG† o{¦½=\<_+\^Ó0°fqMuZ¸¶éj5U_z•ÓMZoyÅa[”ór9ç• EÈÄAK&ÙW˜þ\­m7×|[¬½!\-ÿÿèfü“;ðc¢%áñJÚYJC N§¦½Ÿ¹—‘8‡Kå,wÐÙ±:kÝÛ~Ú>cÊ·u°ê8ø¡4¦Ä¯nÎMz¦[ÏAaµRÙjs”ìŒ(<É›ERl btׯ§_lfXV½Ò‰ÀÇÀ8k/7&10òðÚŒDñ>„„‰~J ½Ð:ÜûZñ>mçl¬öëîîû^Ÿ²û“ü»\׿f;~Ï«·Ô·þkx}“4ŒÔF˜—M ñá•Ñ;%bQÕdݸïWÎÓæ[£íw~”>‚ÿ,Ó3Í{?+“óo/ž 6ü-«üHŽI2Jºoð†ÊðƽJyzD¼­Ú>æ=ˆdÚµ§*6á î’i1÷É{Ùk+-[L:g†….£B$ú¸‰![Q5UQ@%غS¦¼óê{~.&‰8®e)64ËMF°8ì—›'_yÂÚd¦ª‚ K«µÙ ®s[NÜOæHpqÐhˈ¤š]Ù³jZ³é+MsRÆ4yŽÉln€„ëZ–ÚTQU/Ò©Ò? º~,Ïmz"³–Üò±Ã †aY–ˆªz‹YY[h¤¿{OªZëo¬µùû«\ûÈX¤‡Œl¶ltÑ<¶²WSÆ’N%FÞj%ÿÓäõ²Â€D¤ Ô¥”¢[¶d ¤D¶N•U¤FDž1¸q3Ê[šÛaöÝ’ ¥÷[4%/|¶ÓÑS8‰Ä©œÇ ÒåÈ\Ç—;%\%ë±ÆL·ƒZ/m²Û¾ÃTò6ÄÛ1Ñ}UÄ&¼?Áó^+𡯮ãÙ’¦Ž*Ù Ál5*"mØœD®KÒ¶êê¦ËTÇÆLTÈ|äì§œ7XÈ6Æ3U]"“IæmSu=á tëž׎TkÖŠDÊä¡´óQe½©¦Cm8@.EQ Ý¢0“‘ÎY§qø8`hÇæò¸¸é "‹¢®9u+ú„›µ'jÍÈ^*.Ÿ!ò#“š&’’o´`MÉEé3BÔ5 ÍWþ-xm<§Ç9i#÷ahšìùXªê³hZ„“Ö”vÉŽ*#ÁÂå909ª4¸ÙáI1f(é ¢p•m¬Á/êöhŽU–#¼Å“ÑØ¯cYàº+t 1BEóÕlµ\ØzV¡g©?eßú!ùUïÁ£Õ-ÕìT<ãûE0ô±¬2*n¹d@S­VCõѧ£‹É÷¹'—£â¢"l7ܲ¾ï¾_zŸjÖ¶TׯڿC=ˆ•FØK0{†‘oEf Q1 ?‹<3š±CÃ’Šê˜<ñðÕÒªM‰t/ôö÷GµQ-+8—Ébò˜™k#È’Ço ñQ]›5QÂÚÊaÝ[D¥°<ÿ—ÄIiäpŸPÔ:‰nz j¦¥ò/E"ØköOGC‹âä,„T^@– ÷AI:AWi7¯Ô;–’ínÖ‘f{hÙ¥½á*(–Ï) LNX×Áú%SæOžòüÐ&m(é!j+H¨\0UÝ"Ò«Ó}Z»5Ó]‘Xádz´Dž×Ðè Ä…¶ÛnB ²"Ú’ot&Õ²u¯MsÅ¥´xs8Á¬ÞoÙJ‘˜'Õ:Ì@unîÝR©˜‰mñ=äbd²ÙÅÌdšSÈó¨6l¬ªŠ€*¨š½š&ñzÕíœá¾½}³ z—‹–˜¬n5Ãy²º(ëUÒ&:¯¨—ÿñ®_“Y™—o“²¶ˆˆc”p-C̲Ÿ!‚ß´’Àp²§¯F´øU×[ræ×¯•×%âg’‘Zï±ÅG½Í ªêØ(7¾‹¦õ_¿—GÄÄð[3•³\у“‚g#Äï¸D/‚é/~½‚JßãLÓÇ6í´Íóêz*¹œjÿˆô3~Jø1Ò/MoN¬e-†â¥üµïø0óü©áØ9VDM«jîó-ˆ|Ôó±ÖãÇm˜hª›m_;kÌÙík×£sÆxYBl ykÚð´ûeãížûâ¯%“SUÞ½ë³mÝÚ4`¯+dq$žJj«î±‹ ŸW ËÄT]{"C¿«³_;ó]·¼FºûzÛó_OòšS\ÎËvú}Úý®ïÑ^ùzv%"Cn7+ûii1R«h½‡ \N&¥-¼Q=_¾of‡Å¿j¯~<™Û9‰éö[ø•‡åd˜Ç¶Èb½©ÌiT›y—IźÙ{I¬“÷³ø.WG³9¼Í3j÷O±Çb×\ËÈ,5I!ä\‹q®ä§L0c=Ù†.ª¥rNÑÏ÷5æù5Ÿyìø3Ý_Ñ_¹SšÊÄyÁŒóq™QHÒ^i]CEU°—PÿÞ¬q5â]3=œÑ+ÄWÊt^ôD½¥p›Ð;vŠh¯Ñ«v³ç-g§W>js-o°Ú·¾â©&¤è¸¦”«ç 3Ê·ÍÒûâ´rUUÒ"Tutîª::4Ýz»5ÕâÏW/›nìÂmÆáƒfšU•SΫo­]¯6C‰B Y(?ÿÔäõ²Â€J˜¢Y y îêÓÓãNï -µ×_¦&Ê_è446d½6®IXú,‰Ì]aÅQDRN¾…Kû»j²´K«xož<Ö_’[N÷ ¹®Ú÷AK"ú£¨¯£÷5œ¶¬äŸù|d±‡‹dħÂ}ÇE¸¶m¢"!ZÖ"O¸­5ÎØä–[Úº‹-( UjôÁæJ SÒ ‚‚ò¨µ$Z2l”VʈHŠ›­…fбøÃÌây<$µ$q(´icWN¤^‹K+UzVª¼½Iû.ÿÐʯ~ ³·TK°UPã^-DŒœõ{ª‚­ã2Ø€ûÊ«)^µ¤ðæÛ£6V‘Nêûnˆì]‹j¶‹DôY¡½ÑP²f;»(6w p%²ƒmT s8L>j'tÊÄnc·q.¢^ø 7€¾Åj%139Íþäb+’¹uÕ™EH¢øs#sOG'J.: £“%êTÔ¶Æû5žß±é‰Ä1´£9ÿ–Xå®nÈác¸oGˆbŒ¸åµ¨˜ ¦«Y=kTÁ¯(-¨dë…Êed¬llW%È@'U¦‡Qh¹¡(M°$²Ñeç’|`æUÅ–-–Y›R¸Óo©"¶E´HW²«½¥h¯j±ÍœÓ“ælùL‚Ñ  @Š-ê&HŒ!G¥h=Iû.ÿÐʯ~ ³·R]‚ª‡?hõɧ9À(¢ê¶˜ö­ÃETÖ¯¿Óo5«ZO}µ‰·(îAÃ;†®ÊKHZɵéêEóÕ¦Tìç.ƒ “1è ’eÚ åšê0 U â""ª­‘6ªù-L'8pÞ~‹ÊY~a$ÄãEd™*H”Ù Î/I bºýå·ëhÑå•|»góT\Ÿ(+OºÜ)`÷ ×[)ôˆn•¾Ö¹ï¦aß«ÈîŒÌaü Ñö¿À^ÒŠ ­ºµtV3â9 ËæËàðô‰*ìóÞÿIjÒW¾_œøs9ØÍ ­d”"Ì[/ åÐèìTÚbUm}M“íƒ8¬œqFŠ*çÃBغUU="H¨µKukYö@‘&9œwæ©­¤^´[¸•¬áÌPÅö’ÜE^0Û`žÎ2ôÕªÇd¶ Ë«k¼H𼂛Uõ9DF!-áÇ´ñ•¶[FBÄóJ+/pU™«þ!ÿÐÍù*wàÇDKÄ ZÖYeÍzô4ní–)•·ÍÎÁoH–½Í~M/—‹äøÓ˜%šæy3TVþzmò+XáoÁŠ«®H3[ª×“»ÉËÕ¦¬4®+ío, µ…¬¶<³ÌpYVç°šÑ[y¥Ù­²éOOXÖ©®èÛð핇š<@Š1ó"¹Ç…™1»è+tFÛ/ÞÔ÷µ½®Wlæ]~O“â¤àç£ç“m©,¶øà|®•Ý"Jôë1håÜõ5Wbc'%´"áµ(“Z‚/iTH'ÙU'Nz#Çñ¹8Ä\h®·Ã]® hhšmð‘k¤˜•ÃÎxXçòO²rsîw-¤h@›D‘t…ýkzÕæíÓ18ŽkÇò{ëêžaDÏf²)g&Z¨©öBÖD¤J½)­í™'Šqˆ±Ýœú­Ëq‘ë_-¯VšÍ§Æ×ŠÆeÒyÔqï=›x™ÆöÖ")I~„t‘Pœ/zÒW¡£Mk ﵸÏÎmÎòÞzSQ±°[aˆj¨r,»vX¬ >A2'+YÅ”ˆANÄB&@5k]mH÷+¸_F“®@üÖçúÁí[¯³åÿ²±øcÿÖäõ²Â€¤ Ô¤tì ÚMÖQÝ,ˆºE<È–¦ùõ3§BnZQU<‹X¬Ã âz«ô(•Ç É×>0“P rÎލ¶**; .·µ—ÉYÆúW«hÑ{GC¹Þs£· %0‚º’3€ê¡*u…Г¢×ÓQ;ën‡ô÷«§þÏÆmC–†Üac­Åã5! *Ÿ½¥tÄf¹sÌbÈ®dåFù«ÇI˜ç”’šzi é$i¶è+å"Q¼q ÊùšðÛÃ|„ùnh°ò¬°2mÌ·©lªê0"íjªæC/¹<¹6TöQ¼¬™&ÁÝ7…¦ F”_zgsýÍMˆåçNce¦s¹š[¶Ü§Äࣄ‰I…á«P±2Z„ë©¥ý—è ‡åW¿YÛª%Ø*¨qŸÜÑͱSù üçjõguvŽŠ²‰Ør:*UME‘ÑA$Ä„²m zÛÉj…ä NfN(Å"S¢ÓCÒK׿DëZasŽbçŽaÞéM¨…} Æ:‰Övèƒûª´}Hµ8Í•'§%qˆÊ‡9äQyäì‚.Å_"{ïZµ¾È­Xë×7¶~ËLn>êÛDã„J ‚JŠ»Q6"W$^eÛ1ìX¡rÖiˆŸ7Ie6Qé2š2E4dI:u©f­1ím®ýªß3—‡ùWSÙ= EÐ[LkdÚN<ØŠ¡Riz½zÎ)--¶±XǼ‚è±ÌÏd[FZ}¤ÕÅDE!Rái-WËtôðêÑ1–1Ðï,!ó‚ÎhÑÆqÕiäU+ÝuÑU‰ >õexåÙIá4µ¸$¶önÅDª¦Le¸°M½´ìЦ‰ÒžUøIEg”\¼vM"²²š6Ø]]ÙÓErÖ¾•^žšWefgœ3µ'¥<6&Úçî\Kë?a6ˆžy ªµ£>pT¨¯ø‡ÿ@s7ä™ßƒ/ŠÕá™D­k(–àJ‹]Û0ÎÔË$j½+z›ï™Euá­ö×4ݤCt]µœÙb€U\……j¡ ±ÞuQÀ[ª"\= m”Z$Ñ·ÜhÕQT 6*t}DàL7ÌnñÚDn@ж‰Ò6.´OòÖ¿LÀÏO8Î:ÉŸBhЖÂcÓº»,µ¥vLÀväž_›ŒùÅØÜ7œ%IN6J:JÝ" »ð´éÞ¨˜¬ÆS’ò”©QÌká7Rk•8F©åJ¨_F±¿˜Ì6Õ²j˜ÆrŽ#ç~Ë«²B $QD¹öPv®¢÷Õ¦½QV;-6“<öW!Ay€Åщg„÷»«ºKÐo*«VžHŒ _ÒÅÌf#öÐBi~»º+ïª#$‘xæk'qW×qT„½Ô¸Ó!÷þÉzmÒ5Èÿ×äõ²Âƒ¤*FÈV[ù(qœCUU[ÝUoå½g3™D6I.T`ÈWÉzWg]F ­­øŸÌËQÜáˆ2Ûf¤¬‰aÕeÞ¬'LJm|¿dœàùÖHävT™ Ith‘ÄVՈІ£*_UVÚ›ÓfW ó —‰ò¥¶­§xŒò;ÁSVÕÄ@Ô£¯zÊI]ZsÙ‰yþF;ø\±3ÙóÏìÖp#Ùr‹õµö0ö©0ùšC5¿0Ý-/K8‡uýì‡@¡§ØK ÁÎ>ψXäégáG’Ódª¢„ zS¡5Y5Rzן¹Á´k™²  -ëzÕ~½D¯T-BÄÖˆd:è=Kû.ÿÐÿ*½ø4zÎÝQ.ÁUC‡øÜîŽq†ŸÿÚÿÆz­U,©Â“ÑWf‰'£mLÅ•ÑA&į=H|Ô” ŒÍs®?„Ój’%¢lhWb/ÂZ‰œ5×¢×éÓï)råå³Ïò]@ŽÝµ:J¨ÃwêDÛ·à¦ùUk3imyצ¿œg/- Ö1Tß$TvQ¦ñ_©{•6¼UÏ­³Õn#î«n3•3Œl´¦ìã$h×zúÅaMåÞݪǺ'›{­{gªÑ†äŒŽ¾x™“R xbFJ¤„ò(ˆîîÝIwGßT||ÌãˆZº»zÏu!$0ŸÈÏuÇ㸢Ñ*iè^НºUiŸjÜG±C‹‹åŒ¬ù€×^Šè‡^â*͇bÔJán®íc¶Ö¯Z³Îoòì.ZæÀŸ’uÉXÙi(ÉEU$B2+iÕ¨ƒ§ìk]wî‚kõp„xÂN ±œPmÂiS´ŠÑ]³DµÓÙvô•G·œLðÎ;¬l€Î+fùœ[ºLºH¶-зiEP“_h{5KZa¦ºÇKÙ<\7[¦…T_#WM SRk¸îßÞÖ{"/^Ùé-b‘^UÞH'6ÔÉ2•0¶:Óž®Î‘T¶âûÚ×FšR1X×}æÜÌå3áÄÌqó—-‹1…©?:BBÙ­;À\‘Mu §Á­Øf0ö­K5Ä?ú™¿$ÎüèKÃÉÓS Ê%^%VQjÝÃ5Y²Eê³)ˆe*²`qÁm±SpÕDRꪽ‰@¨-½4AQZ ^ŒËãcM½D›†Qò1ª¶¼Aóv“ܨ^$ƒ2lÔšpƒoª¶©‰$¢Jyp—K±¾Å·BªTfQ„®7˜æÃm¶›=-Šêõ‡Êˆµ­vL \1¯uz‚E”^RÞ[úl¾JÒ—çOÓ4½Ø†Ai”Þ¡ÂfÙ/³RÓk•ºêùŒ@ä³rL‘‰†H ³Œ$¤+ﯵuYÚßH„–ãm¢iÕSP¢Šé^¢E¬¬´w—}òÕL?ÿÐäõ²ÂƒUé /@^ƒ"Û*"j¶íömZ˜ˆÄ«bØ–Å-«ä¬“†âÂ"íÛ¶È”0ˬ™’"߬W¥-S «­ªX”U6¥–ÊŸB˜LZW? ¤,^f`»:šy-éµaY[Ó8‘¼Nxˆ¬’âƒ(·ëABOójÞÄ 2qÞgÄv]õ$J —•:Kè*TžÅ·çeüúpж&=¿…ºT{0æ×8œÅ‘>O’ýT-"Z%ªÐd:è=Kû.ÿÐʯ~ ³·TK°UPà>>Ki¾x„Ñ!®5¢AU²ÛŽú}j´3´ò¥Ã”»6Ôª›‰-6]mR‰H&w.ü u)"¯ÐJ”~# ž&ã# FÎS‚¨žðvù×mOí´ÄÌGB.sfW0 1]6ÀŠÊÓb¨K³£eÕj—ÎxmãM"3~dü0‘àzȹ¡ oÀEß%éÚ©ÙûZR‘ÖZmòoMa“æ^$n*pYÒ Šî•Q<þ^Õc³²:/§ÅŠóoUÐ’dFdx’Þǧyl«îW7tÏGE±íX¹##„@Ÿ™EBHÂÇ¡D·•u ªö—UÀ~ o·\vG<¹)yu‰™Æä0±¤äÙàÆ™§ø»—%ÕªãØOƒ¯W½¬+òÖgèXÑðQhlÒ ièÓm–­åš•!1>L–‘"Kˆû–ÚZ\;_ЕË{rÚ!Í­ã&›1'„‡›.ê{Rè+¼)ê—khûÚWº9…âs“‘ÆNŒÉ¤=“ ’  …Å."·ÚI½ÚøU¶»wp‹FNp×UË fÂÜ­r½÷-³jù÷F‘=~–“^bU÷¤ºâš  «»UHQ/Ô—_«WìGÅ1’Ûˆ6Q÷kHc{p˜ðßgˆœ±}Ÿû´ÂB¬ÅîÊ!_ñû¿æoÉ3¿:"^E¢‘R­”aµé“ ¢Ô%²T Ñ%GÁFЕÅ]ÄU+õZÛoI"!9)Ìç&a`ž+˜ãº…!%™ÍvÛG·‡¤»"çÙ•gñk×M|M–éYÊ¡—Àf°®4ÞR!Ä7‡[Bj ¨|»„_N¯ç¾»W¬`Í ¬£tT dþ.9Š«i úQQV×óÔ-F8²Z\O]BÀ\ú0Lœ!$Q[*mE©ƒ ’djjjDKuU[ªÚ§2`?1ç’Æ´™É‚jÍÿÑ…ýBø·øÂùzÓ¹9¨_ÿ/ó¸_/Nã,/€ž-ßÿÀ/ó¸_/Nè2?Pž-þ _çp¾^Ðd~ ü[ü@¿Îá|½;̶¼ZA$üßU¿ò¸_/V‘žZ€~-Šÿøþw åë9‘²ø âÒš/Ì d]¿Æá|½2œ²>x¸‹eÀ)ž\+ÿóê{Áx âÚ¸†˜óÿƒòôîJã†ð»ž±ÑšåG@ŠqI8õ%+o.¥‘{T÷BËxoâ<†ÕÈü¬}ù-Ârqè@©ÐH©!We;ÂÍxâKˆËÒù]ŘÒ*!Œ˜ ˆ«Ó¥VB*^á”o |J £™7pRVC¢ M¤œ~„¤EïÙjwˆ¼÷‚ž#Í{¼Då×Aã%Wõʃb¿ZZBÓ¹1(uðÅ¿Ä üîËӸ˨/?/ó¸_/Nã,€ž-¥ï€_çp¾^Æ]ïÀ^Qæ.Väù˜üô>å1܃’i\iÛ´L2Z™7´–¾ª¥§(tšÂ|xðËy«› ä08îõ˜-°ãüfÒà¼ñ¨èuÆÉví«D©hPðCÅÑ-4žòw¸ˆ|ÈUo3Ž_^cˆJ‡ƒž'£F'ˆU÷–•ÿMÚ¥fØåmt˜ˆÏR!࿉—T\¢*-•eDíu^έZ±Ï-æó"øÏM9'O\Е¦¤EK}‘›©÷#[GoÒÂö¼Æ"&¼?ñ6 –ŒQ}tv(ª%»*ªíËO«Q;1Ó”kÓ™çÒŽËxwâ´µC,)ºh–²Jˆ›<ФòV›Y×I­#„ Ÿ sË‹ßÁ–bS¶Ó½°ÌVA:}»fé¾¾Šç¦‹}z7ókÖ&gþ5Dd¼çì„wk0à¶c_Š€(w‡TÐÚ/Œs‡½ê×E)5—7“äWugø½ø‡ú\/— ?Ãï‹ßˆ?¥Âùjü>ø½øƒú\/— ?Ãï‹ßˆ¥ÂùjÿÒõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÓõMAÌ%‘ ç1§ÃžÓ$är²ÌR ‰ 7í£¢‚ Þi˜öwä%EÁ¾Ó=ô¬+sž$Q•àB$ƒÚï!@„~fÍüêÈËó¢M,‰F€ÀÇCV¢ºÃ-„Èéøç·ÞÞâúÞÌh%ÝæØÁ6A¸RÞǼؼü¡„#-•^GC{X²iìö5˜üäÉ<Á‘Æ=ÖãCFôLUgB©Ž«-'7½Ocöt ^æ7 å3'[ñã&¡FmC'e\P[¸âƸ">úgs“1ŒeØÌȇ5ùL[qÝl v‰ÔRDp÷[pµj Êsdp!ÉpeC~3±Úr¼vÒÜFš4V]u¥2_ß5îçgP'œXrH°æ6duGÆ$§F4Gâ"¶ÛеpMµcŒß´!kÒ s~TaKÅ´ökæ(rIî<»Å ¨(©mºÚ]~ªñœÑ5¼|v¤E“”ȼr8Ç[qèŒ: Ü£GN; Ž´»x„z™kG`$&sDxñ£Í’dãžl_vsHÚ4ÃGÐn#Ž6âÙ7ˆYL=`ìê¹9ü£YÇØ °FFH™\ZÉVÑUi<šµjÕêêÑA9=qBÈgßc,À["hkuˆŠº„‰OJ ½S÷´4@Pn æóHüör®ãXÞbVŽ`CÂk[êón8Já.–œcÙiŒÔ嬿§„ÌØ,w²Ö[LD‹CA8:[Î-ÛQ™ju߀> P8‡Ìøé*Â(¸ÇxaÙ®  w4mö̈QƉw¶éõ€ÌhÇæ©æcÅkáøC0¥¸¬ 6$»ÄWµ ¢l$ȵ| ~{AÎK~¸ñ;³³!¾àµ¦S,‡•¤€•½ñ Áú»®høÜësf= âH†û`/6’»:É’ˆ¸ Ù¹²ãØs†èúítAÍæ‘ùìå]ư/¼Ä8¬5À†;„Ö·ÕæÜp•Ã]-8DzÒ?©Ê yÔ‰j+Ф¤wLùŤŽ.»°Q\G×Q(Ž dÛÔ]¾Þd|çF›ÇMy\}ø‘ˆ‹=&1˜¸ÐêtTWK.:†ï žï¼_g@¢ótcb!Dƒ*d¹bá¤Q”y±`¸n«Šã­²<7=žÇKY|^ºš¡»1˜Ñc¿%ŽÌÃØ´ÜwÔÑp6í§„ºÀPœ÷ [ú·ç´Œä·áK»;2î Ze2Èq Z@pˆ [ß,«ºæ€X9¨Çš,dà}¾ ¶Î†ÌÝe÷xBð#n³Þt\Ðóa¼mP+ÌÓ'5 ¸¸çQœ”÷‚4WTPøz·œwI"‰pš{wU°y›h“2òãÀyÕîï£Îƒ`’ÛUZ5K¨¸d ™ ( € ((©â1yD\ùòç´(¬ñ£ñ¸ÊHŠ<ö¾Š ¼Ï¼‰ÄÒa—B<¬€#]ݧÝÓ¡²Ôà¼K¾Ýɶœ×¾c¿¤c›b»1¶;œ Žä—a â¸=á“p»#Šö÷´ …Ù|MÊ cyº,ñ€êB•.MPaI|[@2&•ÛX3 €Cí˱¬Hi™ž/.drPu6¬3%cºH+ra ÁMäPR A«´4ËO}Œ RA0óŽCxVï>Øh5±ëÐEê k á MžmŒìÀe!J’ô!œB×¼2n·dq]Þáƒáp»#¯^åy¬Ô¶ùqŒÜpv4lH—H:‘”ѵh!mHö/©Ú n<Å89¶CO*6%AKJŽû…©v¨›NüŒTøÞlÍF5w#Tæ—ÆEÖXèQÅ÷¤©j&upÙ›ÐGKFèk* üÄÓ2ã´Pä,)$Ûa“Di#£'³Eq]J¢:‚oQöûzCN_ÎMÉ» ÷bIÃN¸¬¨šÚÞÍ×KRzÚ„ÞÐaŽmżþ9„AÜ‘>ÛBB‹Ã8ʢ༢¤ ºÅ@vïíΰÈÑ$ËeIRžeÒÄr"@uÍn˜¸ Ê:ï÷¾Í…Qn‹µ€ (?ÿÔõM@PV"r;Q¹s!† …ª[†ìy\1Eލ©Ý´…ì½Û†Ö»Ú=ZðymˆObI‡4³‰†ì kNÓG8;êWØ©Àòok ‚›á¸Ëd#½-‡™êȬˆ¼gsQš;‰Ý1È”ÇfÌÜá†øné |\¸ùÉS‚KkX6ŽÆV‹ˆŽ4šP…ÔqFžVujýò´Î^y×rβû YAd ™Qûà ‰ ñâ‹‚^ø4ü*AÉ&cFo Lœx“b‹Œ´€³LEeîËLpô2ÒioHq7(…È-FbP‘cœ·!:èA†‘XB…#qi5»£¤‰Â-[ÿìÄ$]åg,»Í»ÖF>JÚ;=ÜYkn®ïÛõuöwhNŹðä¸H­Æ€Ø!ÔŽ#‚¨·_7“z‚½7Ãöä3 Ès˜:BI 1\Q!l…]l‰Æt 6ò8>ÏãÃö”Íx}&¢Þ¨D£¦ 9ÝŒ5YÈWq.¥!â ¶dbØ{@Ò$!$\±|ªÏï=3Ã!ÃÑï!w>õuüf«| >µËX5ǽ“”`MœÙNM!pØ"$ÒnÒ}^>V‚r€ ( € €ùƒ1×ÛÃäÚ‡K†ñ°ì^;8é):±Íh•\Ay™]"-æý•^MriÊ4”Ѥ©a)ÈÒ㬈ÆcðÞeiÚ`¹ƒšw7(—ÉM¦„e£±0Ü7›@eŒâºN¶ Š›Ž4âÅÒÚ~ù¯HéÝ ‰˜gÞÌ79·Ûå¢LŒm“ªêN‚ã|"ºï\ûZ—y*l˜ÂnH#Ðñš#èq´y•cˆù+§Çp[{1Œ=½ÞÆ€œkÃÊŒþ-ôż=>ôõê½þæÔÿ0f":ûx|›PàIpÞ6‹Çq§%'V9£­!«ˆ/3#K¤E¼ß² k3‘Æ^sç7¤2℆%GqØÈä¶••V‚I9¹ôð›h=£„z‹xL±Ë'!ŸyÕÝ22ò6Ñm]íNkfŽñÛõ´vGUlïãIf5û”™1ŽR¢äa ÆT%>¯ªp•ÆÈLÂ. ¾ÿPonÄN]c¯6„ÌæË|&ÄY'ITWtKdìiíPE;ÉSdÀîr@ìhчŒÑC£Ì«GÉ]>;€ÚÛÙŒaíîö4¤¼$Ø2áÎî¯ GÕÂG7y>Ñ[ÚVº+ËXì¾E‰FY3F ÁȺÚ:á “«¯P© †€ÜÝÔ{Ûô ap1°å-¨HÛ0$:1 ¦Ñ°d´š éÒd×WN¿ƒÙ m;–ä%±‚Œá»&8Ge‰mÙ¢lÚ0Ó!‹g OF¢Õ§Fõ«ø† æ:ð(¥¥¶­­ðÇeÒúSÏA¸ ìœrAÈäbºÓnEq’ ÆI;«Àí‹\—е£zvhÓÚÞìÐ*ß-(Gi”“uk"îI GO×áÛW«ÅÓ¯àöh†5çp«ŽÉÈï®:±.G [GuЉ .#ªýš7ù¹£üã7Z4q܆„CpŒ‹Žºo»ÆiÇZín ”’0ìÉòälfÁn¶°µuuÞéŽìüÕ:òžI™IaåŒäg£¼ä]r›XÜ4V›N/9ðÍx-¶:\tYæ+. ¹äRv§ŠC,£D.¶nvМâ¸7ìÙ¦ôü:¹|˜O|ð­d9äM·"6+ÝY(Ý}§ÝN¯}¦<— ãdÎbKQ±ÎlµÆro²bú8%Ähš-$¢Wâcsw|-"""‚(‚"–Mˆˆ” (?ÿÕõM<ÈäK4q„‘&HdV²< ºj*v¼´¬V4H™4§ÆÉCi·%ãórÜ ÞN8Êt¤w+Æ ÃÙ|N½Ó˜žtj{žá2m90 H•BIŒÛº5´@î†ø­»qoVÒñpôúÔ¿În c‰¸ñÚk$nwid¬fM±q­p\Öü.+Q÷u7«v÷7怓%d7×4Ç!âuåFÀȉPPAKY_Õ ãôs”žfSç'ñ™‘;ó£„ëG-•oS»äL8<º·‰ª‚]y«(‹æ9”΂ Ç&±‰³lâ”…aDmÀ·v/i§Õß_Í3(Þ1ب̤ =íÎ ¶ìSdTAt`j–žÓB]i‰æ<ÞK5 ŠÃxÉ0FSˆO—Fè(Æú¢¦›q@tï| f2Òñ¬†“'{ö=ưdªéƒà¨×Hñø÷Dû*ø3ò,ÆÇ`fN7'Àœâd%+†HcÞDÉRÄ\@r(;︅@ýÞu››£IˆôÌbn8Œ²¯ðßh‡ ´¿³)!ÛÞìë Êæü´g& ˜¶t@m¹r%*ÿx‰8Ò=“Šl.†ÇwL“ÕºËñ <æ1N¶Ä†¢?Ř ÌW^Óef"‚«­Š¸]o÷Íz7ÁÌ~iœì¶µãÀ1ÎÎÞQýN£Ì¸ãb\ø]®6±#ø½#Ä ’OúŒ¿ú4ÿæ­@PAÊ–+³…’Hë ‹(H ªûÀÎÂ]›8š¨+ò³\Ë55ÎäËËL˜I0ÑDvNµd‰héˆo´Àîﻺ4MóX8¤ÐÆT–RXf3vWZ輊ˆ¶i"M=¦…A /5Ì®brn¾Ûl÷|¬hñN<‚W{ã M—±eHVÚµž­d%ð‚Ey«(Û©ìk#•)IDQý¤S’Ùñ•‘=+ÃáŸñ}AÚ'¬bù²l©1FN<#Ŕ䈠辮¹ÞbkGG† pn˼'xœCÝÔÃz÷@ÌsÆ: ÒA£–úÇcçN.-¤!p‰Ã’Ò”ÝQhõžèúÚA¬~lÉä¤áOÔG¢L)!1RRjŽº„à0ç¶Ñû.'¯Ã ÛžŸ¬àã#,éÎJÈ8}úQm´Ä¢kc¢Ë¤ˆ¤¨Œ²†ûNno…¤Ûâ²M¹qÖ*' ˆU.–]&:I<ÄšJ‚©ÃGo™2éÞ§¸cº¶îBk +Ÿ½ê׺ ãsvZF74qMÏ Àh¥-ÑN;jyQ•@MiÜâ–‚âi×ìh?žÉ9ÊÙIÌÆmŒ¤’Ù°N©´.±{¹Ã¹“XjduvLBž+•ˆŒâ܆*¬EjtéOO~N–ž7P”MÖ•çöZÑ»{ÄÃ@qgyÖlhþn4&#Ó1ˆ5¸â2Ê¿Ã|U F6Òþ̤‡o{³¬3+›òÑœ˜.bÙѶåÊ4”«üMâ$àoHöN)°ºÝ2OVèZ¨ € (?ÿÖõMR£÷ˆÎ±Ä6¸¢£Åh´87Kjê$ê …s“Ø}—»ÞF\©®“;²:×usŠÊ6ÈGÜrç¾Áêõõi !¬þS°sñ­ºr&ënJ‘$‘ Ùº Ø" ‚-q{³ÃÈ;ËrëY½¿6¬??y•DñpÄt¦›²m w+Ä™p¤8Ex&N2Ò*hS VõÒ÷3Ó½ëP4ÉòÔ,ƒî¼ã¯4oŒqq!DUˆÿxh·„·î?`_c@ßóA…t§Ë<§ºð;À‚´ˆ"$m2 ÑÝôïq>7ÚPe9F0w˜-‰¬“¤ôÐVU×ûÂ<ŽëhÛD5i¿‰¸z4³Ã àr´l{¸ó‰.Kc?u᪴hûH·yM²;‰ojhš/ªÎW)'"Jš5ô’ÂiB$EM&–]A}'o~A„åìjgÍ(‘K‘"8$¨­ðе* Û´{¢kë aAß&ã^ŠôSŸ&T@aè1X#eF#n‡ŵĈŽÁ)$ùÛ¹¬K嘻ÿÇSç­B{JŽÆÙWTn+¿íŠ÷ÕêîÐ(8Eo&S£Ï“·I“8$您¸ ª"7á:ØîêíkԷ˰¦ÚCwKs\ÈŠªø®¸n¨®ïcS…o[áP9HŽ|ì³.œ%a¶ÝZÔ¼è € ( ¹EDTaBqNꮩ.¥q4 î Y²EýõþÍO•ã{—!cK’ÔÅì´6ó.ƒ×áñ,á¶:ÑÇýžŠ]åØNäÇ"Fê>/„”QÑ­¶:%´ßN‡Iz{TËc¬Eu{œ©3ºŽ×%«ªhVÊqÏGÚö¨eqam«Hv$ˆçÄ.>Ž#d¢ ¶GÆÉ…EÆÌ~ßIP!#O®=ÂÈIIxòUIh‘õº„–1tU¥kI§k„Ûeïh(ÆaÍ•X»%Ô–Ç\Q–ê¼ëJŽ´ëDßÊoXiíöõœ s) ’_’G_>"7fŽ-Ý. º5ÛýazÔ‹ŒtÙ€F®Ï&Éä%M(­6šlˆ½ ¶ô ”±_7Á€jë‘ G8¡"“n6–²Õ¥6hÞ }Œ&fä$dT–ârQ„!K[Jpa>ÏQP< ( € ( ƒ`@h„Š„+µ¥‚95Žà°%4¢´M%`»¢°â8× ìûM nõÞ7Gì¨Gåxm8Ó¥!÷žng'\ ¹¿ÝÖ2© €Ž’Õ¤7ûCrg0ÜÆä±ênprŠúÈ$QÔ=àtž…Ód·«© ƒV°\ ‚Ë‹>LvDäA0éˆ#z‹ˆÑº ¢!«‚ëC»«µ¯P!”âE˜Ûã*A·CÒ¢Å%ihä#œT ‹††¯{W!õKN­@´~\‚ÄÐɇÀV%»d1%’ª") â) ^´çñ‚!i½'A)Ê™¹XR N×âH8æâGz»šw¤ó[® é2/Ù* Ÿ.dr8lFœ'få[G¹}Ç6¢+û_·« ˆŸÿpB#«MŸ#H~¼—? &fû—Wˆ¢Î…UQPw‘ÒSÝíP9Âss).0"Å Æ,É· —ŠãÀm‡´ ‹…¯G¼s_³¼3ËŸ‹ÏÁuÆä²æ"d¨Ï³LfÐD4éŸRn`8*2#è[G´ 9œŽI¦‡”³}`ÈŠƒÍpÓ¿0ÚƒŠŽ’¸AÄmÄá ï3§v‚_•\Í8îT²ÚÈMy¨àÛN6@€¨£yÔQµ´ˆ€i w‰i§YÈ4è 9)ñq²D!!U²¢¢ìTT ‚åÞXå¨üÓ›r>&.Dv2Å6ã´$Ò”tR᪠hº®Ý4ø{Ť8r‡–†±eKç¢j+ÊKeQ6œ974[ûFÃáP1k †ƒáòg Âb&n<^ôÆA†„'ÇxDŒ Ät·l—Ú‰h*ˆ J¤šIQSÈ´ ( € (g罎Ádr “Ñ"¼ûBwQRmµ4B²¢Úéå ®Îæ.gˆæBçšÆÇg å˜u Æ'm`tƒþ1¾¬‹àq”æ™13ìFiÖžˆRŠüvâÉpÀß²\æ‰wV uwwˆMéÞöÁA5Ìó˜\©L–Ä Ìf¢€´ãj ˜Mâ'¸tnˆê 6vQÉ9"aÙ0´I›6@ÁÖÐÓÙ™¼ Bº‡ãOWkàÐTñ\Å—ÀržKà̸ã¯+-¸/‹ŒÇG[šÜGô–­,wã}`V~o-? %‰@¦ãRqŽ3)`LÇ4¤s›EkD½Dj (J`[Â}€õëÙç–Ê„iRbeFå2°6r Ή‹Jëš\{î:;Úuv¹Ë= +9¸¯±‘‚rYŠÀ8Ѷð6‚NŽ ƒŠEûÛd×ûj ,HeC›d¦IææöŒÑ°WÝÝÐn>»=ö½ïx4ó\Ï9…Ê”ÉlHÌÆj( N6 ¡9„Þ"yÛ‡Fè€iÞ s?›3Ø÷O!{!ÞAŸ§Ú‰…QCeÇ_#M*Ý…ý?¾ë‹ ±òöFNC܉-Oê6Í —ckÐj(à²ú#­‹ˆšÄ³«´]ª € ( ‚»ÍY¬¼£3ŽVÄžmÓÔQ$O2 QAf1¶àjÞ~È7@»c@Ã9Í9ŒLXæû±Ê[Áü”6¡É|•Iv޶\q¸!a!méðkõZ*Ì›°gs 1!¸òÈ0 +Œ=0‹øƒHÜhê>zG²¸-Öè0çàipCˆ}Bö{Ÿ ¡ç¤aò1lœS†Ó‘à¿ "ض÷€3‹J˜˜Äs[œ->ÓÚ…Ç/ä2ù—"IGmI•–løª±ähá8F£´kh×k‰½Ãæh’¦s6 ’r*Àm’㣫éÄa[³ˆ¼VÄLDׄz „Z‹~ó¶@C*¨lËàc¤d`º%GgØt :ñ(Mlµ…ŸÃ ?ï‚Êԩѱ/LÉHŠ& O!¢ 6u¸fn)hõÝÜÕþ¨(+Ðy¿*C%@¹?¼¼°¥@¼iF­’‹Lœ»D÷Qj´>lÍJ“24Ub{Ëæc”bÊŒÉpÌS†/¼JÅÄ1Ñ&>†ý}Lh&ðyÑ̼ûðÔOÊ4í—QºàqM/{iͤìüf±õh%è ÿÐõM@ƒPbµ-ù`‘%qT–èÚ*"*ª Ë`ûêNrÆ Ås\]HêHE3µ¦(“öMV!–ïd·‡´T')àÒ;Ì+N’>£¯™ú«¦ÑqÉÅ} ²%Ðhæ±ìöDhã±pq͸Ü@PGOˆé›„g CYŠDD¢¨•w‹x·¨7‹$Va†ZŒ:E¹(Š%¬„W.Š îP¼>†ó0ò(°$Ä7m¢ž±^ò\W¬ënn–ñ6~È·wh%p¸¾^f3R1ÑE8ÍÆaÆ\WZ(í)“b+¨EÃÛ@Íž^åØH¨Jè9Ž6”릀ûbáF#„@œ G Ó 7ÛÓ¨¨7ʸ0G}‰¸¯FfóïºIÀqhDœ2 i·P² -| Q10¢K•*:8Ì$7Å]tšR÷ÂÑ´Ù¬­€ëõ¨…º£é¯_ã{¢ÖÖ··JôPeˆ“&SA¥ùj î«©[±VÉaOV†7•±8רk,´TNlÇXD.¤aÇMŸ±ÜÝõh‰É¸®4m¶ùƒ†ÄwåÊ}€![‰ ºlŠo7fý™v(&è € ( ‘#͆ü9!Ä%²i຦ 4Q$¸ª*]ª´Œ*Gzã1«¾°dïje­j±v[Š{ý½@“œ³†rqÍ6M^7x‡Œ÷ ŠÒŠƒ¨ÊN§YánÐeyoNI2iÅïn·!öÕç•®+&.‹Zøm–°.÷ÍTU¬|7_˜j,¢l^tÎÈE±¶Óyt¢ªªÛ´T aò/ÄØÔe6ø Z}ןl!A&Ûmã0lMxœ1'g–ñmD(нœmí2%I¨l˜¸Þ’yÃ!A0Ð+¢g0¸Ç&$ÓfòEÑ}Ô "V¾¸cÑ÷T /.aVxEJ,VN3 ‘ 4àpÈ꺮 mýTÆrö+ñ?·A¶,›ï>ô‡ °"!7ÂT2Ó·vƒUå¼A9$ɧ½ºÜ‡ÛWžV¸¬˜¸-ká¶ZÀH¸b :œ1N"²ÂÝ Ùþ_ǹ"pÙïc8‘î¯#ýåJú‘wÞ÷¿ÛÐb=%©.·©æÀh•VÈ.ÛZZúWV‘é c“ù}–`c™6ëD$u÷ÝTŽò @®7¸:4‹½éÔTraE“ ÈO¶ŽFt§U] ©eK¦ÞŠ ò¾"ËŠ¬›­Ng»Ì'žyçk}M× Ü[#†ˆZõiÝõf°8†¥1)¸ /ÆÜ™=»±î‹Ã²­´î¥xÞ[Äca´bëm“-¯<úƒd¢¼1â™ém±ÒØî©§QP+„Å7ŠÆµ H…IÇœІ뤮:h7-:Ü"-:·hPÿÑõM@P@P@ó_Ç`¿*3ÿËv‚73óà8ë˜÷¥©ã™ X`"$tG tw““gHÐBƒ Ûö®ÛT™™ÃÍI•+“^k8ÑV”PÍ~e]‰©Séj/x{”Sòyfqxìšdž‘ŠFNVFv<"#–%CáÉNèÛ|ATkTÏ‹øÓÖT[¥Ó®€ ( € ( € ( € ( w¿Ì {ä íD^úÎÞª–g˜áO<,iR²:¥4ÚÎh` ÀCŽãäÀ£©ى﷫‚çdÏI/?/̉ŽÃË‹—ñ51¥ ã°ZAçÍâ( :Iµt.!{- ˜Ç2ü šÍqž6©% Ež“‹uRlžÑ«{uÝ_ Ní‡)ÍÈ™J‡•zIåY}·Ò/ÝH‡£ê`Í·8}ãøÆ‘ö‚4€ ( € ( € ( € ( € ( € ( € (?ÿÒõM@P@PhìvVÕæÁÅhÑÆ”Å I¢*! ú oMiXl<É!*\ò$¶ÓoºÐ‚Š„DŠH$„Z†U]ã,v¸ÜD{‰ uqP8Hwµõðýž®ÖÎÍwù{ù2oã":QÜ'£‘°Ù+n™k3QÝ2=ò!Þ"Þ @P@P@P@Pr#F’Ò³! y¥Q%mÁCQT![-Ót‘ (/`X±ÆÅLa.¢‚Œ6Œ*ßUÕ­:;I~ÍK‚&¢4Xè¤ÔB‚Ú²Ú‹ Òi³k³Ô Üðøƒv+§9;T!8­“"©¥Q¥µÛE¶åÄbq›XØQà´ákp#4 ‰­©Pn¾zt@P@P@P@P@P@P@PÿÓõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÔõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÕãɶõéwuWvÚ­áVáØ®6ôþDÌpQ”ÔÑ'Эt[5˜gn¤Ò©Kp¼Ã)×M6Q1ÄN辑úô×hìi5èq’~9Q]0Ót$¶Å·MªÓ¾‘LLǺˆ×3DÛÜŠ$–T_B×=m®ÚÊ'Å­Gl^²Òñé&} Q¶z³Ã+ÙOEkiôÇâF>ªó"ºrG»eâi©VÞKý«kž'ôPÔ}_MeYô×ñ¦:²%[kŸyY†²•íé„Ä=Oû,wÙÊÏ~ ¹ü‰õ~DòW:^Uýªÿ¼%¹›,O·á®Qƒo,0QÅ3žiU£SŠš×p–þq¯Æù–êtµ¡Ùäx´™â2å<ÕÉñ#4æG òÊǧ =£:º5yGoj¾«å7þ¢{/ÅþÏç<Ÿ7ÀøQÝ^ŠsW³m:¶"AXÛCH”× ¹÷–ÿ*Âü +ƒÌÓvýÉ®¹æׯ‘v yú;Òy˜ã° ãÏbæ¶Ð'IG4OJ­†ÚÂÏpLÈ–ÚMN¤¥l›{îh1Ý oÈW È ¤oé-ïøt†=‘¿žÚ—è’Š}ÅBa{ð^kMx‰s†é q—H**Û€w]ƒ})u²o{ÚÏdâ˜à¯‹ò5x‹—6ѳ&H^AREdVßr«˜gHáVfLÂtô/«©Q>‚Y)-¢BU%e»—yšãËD7x„*¨­[J§¾ÒVv‰Î`žŒf9VD5~IºÃM©Ý¨· uu/d[TÙ¦ý ¦ŸóLIšaœ|•Ö‘¨Ê¢ó—[!¥ÓM•—y4ôi¤Ìg ö2ÙV[&Kˆ«´ÎÊ=ˆ½Uy…bÅ#Aw°Uvy*¸&K½*4} ¼H¸E+Ój¡B¯O­UšÏ±5ŒÊÑ‘ÁF"ž;'ˆ L:J®Œ¤U=pESfÞÉ|¬«¥Ù>4c„ȧe ¢ñ&†¶ù¬»zo[Ö"^~ÜÖR‰Šc¬V¯† c£Š.îڴ³fé¤èJˆVlß»½J·r½ÏÿÖãí%ÎÕÛå5†í¥Z’¤·M'»[ê·‘3CðþY*Ú-ˆghÌT²ªy+8»nÖËÚ$¦»ú¥{Õ)€‚Ô· UFuÛZꂽ”¿¾¬o¿²’½k˜‡oå^CÉʈrJ.ã@m‰¶ý[‘.êéõkÆœÏWTAtð©eaß6ïOûo :Ù ^Æž¸fú·kM;¦“ù¬öR&1íp‡VØm 4¸.’/J(Ûezô¿IsÌt5q,‹çO¯M“Ã<6^Êz*ýÜ&c†‹ÕVÙn!”C-m×XÖx–´†ðí©Ëõ6VôÚš­Äþ%"‡h}5•gˆMc–â;Jµ×<ÊÝ­K³îVW·¦ =Mû+w¹ÊÏ~ ²Û9•!Ù+$¼½ûP°xƒ#êIJ–ÿîdUé\£.PТ.ÀÜN”Jïñ¼kLæk6¬2¾ÌGSÖÑlÍ=˜&ѯ©ñgf­shƺ}šYÁ{DÎ:ËVæ¶£¿°½*þ7ϵÚ"/é²Öñí¹!DÄ@u_oÑ­|¯›Z—Šë¯~U¦¨˜™™:m£+]4§ž½ZîÌtsÚÑ û±!ß]ÇÞÚ³¬Þ/œú~ê¿1Т4 ç«ÎÉVm-‘:³›J¹fõ]·¢BÝj0Mµ1]“¥e ŽB^c®œˆ¢¼N&–ÅulÒ7ÖwõF¿5ÿqkšùvÏÚÃì~S~í5º•Ä¿„ù‰H¡cÚÉÄÔ¨ÛZ$Ž”[©kTÚ¨·Ô•áÛ0õ{#Úk!†²8ÙÆm±Ép$ÇTbCn )*(“WROô4×VÖ×1zûÕWáVó‹{“ï9vbBÈÈŠ††ŒšŠu×ê>éÛ¦·˜í›Uñ~V¸×¶Ô¬æµ”q ^ÐÎ%3ÈCÿõç-þT…ø@WæÇò¯úþë]sꇴ«ážŠ½â/÷}Ìÿ’g~ tQ©ÂØcM0Œ¨!м TOð{zMïÁܬíºx˶üAÊ«A¤u7©¢äÐ’Y= XÇ'_0«@cˆ¨J›V­-,cÛè-µ ÉülszÇ@Ü®šS§o¢£§Y9¤Ù‰y˜“Ùu¢"ÜIèšS²TŠ¡›nC™GÝm¶Q HŰÒH¥¨ŠýIzÊ#=Iâ á›@³JZº“g^Õ­e–Sl´ò'Á_­Q“(¾m€ÒÁjq2|Þóož¾¶“XìòÑ:í‰t|`ÈÒ1ÑѼ!FÔþ…i¶$EUUÜS"û'í«Ë›uÏW¹šåLˆQ¦æ³vQ/èlía1íÙMwøñ1HËÈó/·©=o‡D꩘C:)„LŽš­ÚÏ/ÿ×ä übWDO-+° ¿V¤ð¥¡•ø¤÷kZ[þI´zR˜–Pû¡/GSé¥kªx†S¥žq¨‰>a6taº‹ÿŽª¥-ê^cªÏÉïÃm³E'Vêb‰µDw“£m’×®O#‘Kë¤DÆ{#Òøï'U«{LÇȃé´2‰KòÿýwËŸ•!~çyÑü›þ…¿ºÛTú¡ìúø7¦¯xýÞó?ä™ßƒ ‡…+L.È¢*íè¦iqÔ¶ØU’«ÿ‚D‰ânÎë‰ôXr«$ôLxÉ·Ä|»}FÕ>ÈYOòV2>곇ҩtÛqº-%tÌPŽ®"È|c³tÖé"ª%ÖÝ é©ÂagÂfy%fñê¢Ý’a¶“hH¢׫FŸ|^µGâMé0qñk)Ž^íËУEÅŠ)5)¦AMÐETöÂè®§×ÓëzåQÝ3Ó†qITåg&eÕ²yÙ„®MéqÅRÔŠ@Ú£H¡ÙcÕ¬ùÊÓÄ@‹Ö’ÍBà¢ÜÊÝ®ŽŽºÛ)ÂɈüÉ̱×]Ð)Ö›÷^«m½e²õ¥fÖžÚÔíáwƒÈ “'ó’ƒê` ±lªÒ¡%·‰{]>JùO;ýËOwT~»Jjç2¬Fð‰á˃c$ÙÁ’ê~¸Dé -ˆG¥²Ù¼zOìªÖùî®Þìw[÷]ýõZñܬ.¬±Ÿ cÇ´¨Z[Þúè7{=šçÝóé§lë·týºý—ÊDÊ?7Ê}Å•“Ây‘_h&ˆ„ Ô»:R½–|ú¾E»-–a³V9B#vꯡrä Z¦!Y–tTªÿÐä-lq+Xž[Ò9`UÄéUµ_[;ðÉ%šOJ¥Z²›G¢˜wRÑzžUú•¶©âŠûL^[ÉwȦUk že¶¯h½Ï©YÄòÖcª“dÇ,øèZ P\!éF•læÎ½Õè¬÷Vf©¤Äc.ãº1;Ù$ZyµD $ ¼:|©^|ÌÄ»""`¬G²k”¸‚86œ|œiß‹`*€¿n5|F1Æ\OÅç)Š%­Q[ß}¥uè÷!Ë·™TÝOd5½½×=£†M; æ©ÊÖŽ„—ÉIžLrÜâ¶òÒ:/Xâ[Æ$ldŠô¨iOÝ%+8‰gX"ÝБSʵH”Â[ Ø9!ÖÍ7Q—Ý[Vúg™©}œ#7/æZ瞉ˆáê/Ù[û¼È~V{ðhõ`ìµT<áûH/ÿ×0&5øCõ÷í¯ÿ×·ÿ’»GŸåûß‘Ëké!Ç-ÑjU–ãz+%«2«)z®PÝV«7DÉÔllé ì#¸êt\‹o¸•…üšW¬Â¹I¹É|ÌÓ(ë˜ç…µÛ}?Z¹ãæZfq„ÌOÐŒ8O(˜¨ªt¢×Lm‰èÏâCN "íJ·yÞ8~jwÌ(Û§®§¹9dURúVר¾t^¥¬·j¦ÊöÞ;«-5íµ-šÎ$“Wr3ņ¥>õ„ÕR"-ˆ(–¹-Òû}];ÕùïμxÛ1Ovßgî>³å¾M·WÕïywÇr¾.5–u“êæ³ïü@Œ.8Š›cÝÃ죫گÖ̽ºÓ·‰1缆rN3mpæÁy–ٚˬ€’ÕEÁwµ".ƒíëîñ|‰¬ÄÖqj¼ï3TÄçìØ–Wʸæßpáäȶï !²;pT+ªöÒ{úõ§ç^OÞþÇôz£ØŽäü¾1þ{åöƒÔtùÖ6m)ëEã…®¤E«mc?2ßh˜›f-ªÎª{#_×ï»îgü“;ðc©Ž£Â«Z¯,O¥(‚IÓXª¾x,¨ž%rýÿõ*ŸE£J¥“=~6·²6UV£**u/ ?ÉY£_D)±WwRÂBª‰ä½V¼´”‹±öeUGX¨Ý:¼ŸN­‰oƒg!³uÄm™.*ƒ®ª‘8àÚ×#Ô¥§àjø5[DÌñÑ3höŸ5…‚§ÅpQ÷ zåÙE]»7R£›Ÿ¨"" ³emÈ–·Ðصyè¬ÚJ h/´×;·¹]EÑ/Ô%Óÿv©=9D¯¾ãŘ%4mVYE0U$D¬¨Š¨=§/Õê鯔ÿrù³Qö½Vk®2¾o/›ª¾Ü·™`DD•}bí/Ô©›LÆ µ1.ÕÝòÒ,‰FdM #À¨„. MMt¢%üеéxÕŸ­³hsÙÌœ)¯Åvêl8MªÙ}UؾêWêÔæ2ó-Ä´CBè«3³{T+—ÿÑ䌵KÖ±Õ×Hä7a’>cúõ4žYm†®|WÛ-"IDc5X¥}„å’¶×ìZ ›`+4€º5’/Ó¬ãÞ^Ñÿ6Š>нÊÎz¶íæR˜8RTø»Ì7dÒý­·R*iòôVºã9ÏFÙ­Õð2ËᛎÛï7–Æ {Q[¡6§»º»6éQ® ú{-õK£ÆÙß_®k˜¹­dE”3 ×5( ^×ÛÓjÊ"Z15’fz<ÍW$);Æ-¨ç{RA^õÝ1‡[1 µ¾ZLð¦=%M6‡¢§-mÁ"NšLðÆ`¬dN §V´¿Ñ«U8âK´ØäÌ»MÛOºåª~ó-f@›/ç¬áx„×/´§*J§«âûš×Dó?‰}ÑÑ_Ú[ß%cnšÃÓß²¿÷y?ò³ßƒG¨—,»%Boý¤ë¨?“ü!úûöÏùÿòO÷hóü¿{ò9bWÒC¨é2¤ÉÃ1žul¦¾AE_©XÛlGYg6MÂäÞa“n#D^³°ýZàÙó=Uö£+3Â|»ê‹%öãŠôÚæ¿Z¼íß<¤{±”Æ«JãËþa±ñ¤*N};Å4¡+Èò¾m·lb=Òºb:ò¶2¶:l[¡AO¥^]¦g¬·ƒq7ÈxB*¦«ÑdéªcžÎ[4ËOΑ Z!3!PDA²®Ä²×Öx»fµˆËÊÙLÎPÂ&œ1$²¢]/n…òZ½ î‰g4˜46TUéåº}*Ú»2˜"IuD^„èZ¼Yh!=™ãùšR&të%쎥DºÞ¼ÿšyŸTÍf"óî»|=?ÜÇ¥ŒÖdûæ^ÙBªìÒ›l¿m_Ÿì´Ús<Ëé)ÇE¥îw“ä$!ˆÐ‰;HòªWEgˆ[\tkƒ‘”àhÝTÛѶûkæØi³ŒýR´BÂâ£*’H[ÃKŠ*{ÑèýÕtWMc«o“kO3%"u«)kD&‰<©µ6¯’¯.|³…Êʇ$fFuEÖWK­XH­ö-azEãÖ›&“˜u\4äªÎe±3”Ú¼„¶²§N…RÛ·£ßW 鈗Dù¶˜ÆÜ¢=Œ–Þ>a ‚Ñ»›QBmE tÝ6î›v®êDaËÝ*×4á¡Æd%Âe³=G½Ð Râ«·JÛ¢©¶±Ã£^ÌÆf›ãè¬b]¶Ž`‘&Ŧxch-nóin—>šV”ÿêLzdéXT,ÇW Å=.-LǼËJ=½€^šÎ%xŽ?)ôIgž1¾ûÚÙ/°¶m¦»c-öÄGS^ТЕÉ|õáÍkO±êOÙhE<;™dÚ¹G”¼ëÀb“ìs»@óí Š¼õß‹ü!úûöÔÿúöÿòO÷hóü¿{ò(8n[Èd®MŠCÒeÑèJõ÷ùµÖá›} †’`ůd׉ S^¡[']yGÌ­1éáLOµfäܶ#%7¢Än:2é7ÂMˆ‹ºJ«ï’¼m›¦üç-f³‰…¥—e’ê½5Ëh2zŠ ˆ‹±W¦°˜ÊÙÑWÑç©Á–áG’©+AÂ0.‚ƒ©©²K*/]W8[Gù4‚' í(·PDÙz鯛j©ð"Lßðâíã­Ò×°ÛjlNŠÚ¿2¼"|xF ÃlÜeÀ”á¾Vé_§[¨Û¬)ð"YNEHÑ$MqÑi¸È¤]iaºªÛ˲ºµüÛUþ›2æòòRhÀÈ],3êŠ'Júví*ùÏ'}¶ÞmokèukŠV+ !3Á† ÐEs/I­ë–ZC\’ "yv[oJuR†îÅ@p.ª†{oÖµ3H•«ºÕŒ“|…Y|{ÌwKQ´Wؽ*B½"^г>ìõX¼6bóŸ/:Óįüí ÙéEð²ªÜ’¥Œ=­RÍ^ñû½æÉ3¿:˜ê<* Fh"ŠD½‰u_q+EŽ!ƒˆ¯3×¥vŸîSoî´Õ¢bg„ÌLO'x!ˆy$g…­ .å—n•êèJäÝ3ùWÓ\ÊgÂÅáxË…{ŠÎfßm²¦ÝÌp±þЪCâ!¢-¡Ç[~é>µV½Ö‰ðÓ“ÎäÎ¸ŽƒzÍUtˆŠ"ôªô_²5®ZM£»$Ÿ²!!ää !”7›Vìd—$â ê¾íû55Óíö°±•.+&Y ÷GC.i}”Kª.ÔUÚ‰U´Ä4ˆ™Mó^"&1nð† 0§4rm•G\]"!zÂÄÕ¯ßU~,GU«¯ž2ùË ‹ÃFjÿ‡‹cݲµ¶%οhõåüFZkê³)ÈÏÃ[¾Ñz?z믿ù“;uM¾µ6Lg G…É ˜È”N'wâ·¡²’nmETD¯yŽ}á¥K—ÿÓäÀ›â¾j¬ËѬs K8^šµežØõHyn ~_Z­3Ë9÷?)Ìgl1‘zÑmîÖÑ•¢EéJL#+LJ™Ó&Î –л¬}Š®ðû…¶¹ö×ÚJ7O-)Ccˆãnþé¡¿Ó¾¾‰„13®Ô$º*«ƒé[Õ¶èô¯«Þ…)Äö¾âWKÙ¼z‰nûµ9ahàï:¦FO+íÿœ•¶¹æ?xôIÓÚ¸¹Ý—EyWÿjןy‡Éœ&áÌ"ýíQ|÷ªR3¿³ò•ŽÉr•èȗЊ•ž¿k"q÷¾'ݧ±ŽØô½Eû,¯gù,ò'óxëõê\vêìtCxóç¨.Ÿ`qÍ%¼«Ç}kê~K»·DÇçÏ÷jò¼ïz#ê@‘ã²+§¬C¡=5½¹œË¡‡7ÌÈÏÆK ”˜åì„D¶FÆÝ:}jó<©œN~4GtL·ð¶íIbZ8…j¼Ãì¯B"† ôë—Omåã?‰×šQÈï[jù¢Ü¹"pØÕWJõ¯UV%/m—óÕfSŒ¶¾O£YLµˆ;lÉT™^ ¡†¼É媤ÜOQ&Ô´è©DI¬ÖÖÕU6§ÖÛW¬á[)^#,¢å¥ƒÙyI EŠ¢W7ëМ0]Kïj»mŠº<=}׌9<þIæ&§° À¸ˆ ¡æQ¥‰t’•½]Z+‹ãUíÿK 0ë@º:]@1^¥ Š•19c5˜œI¾I}˜v„­SW§£jd +©Tv¦òy*ÊɃ.£JW¾¥Ùµ:¬ªÍáÁ"óç-‡På û² {‚¬¢ž@’y€ 5cf!•ƒºlªÞqY˜txšâûiYékÖ¿¼òdv›Ri a¡êhP.¾”Ûôë˶Û[¬¿AÑòý:ø­aRÎ3’qQ;h„‹îm¯GÅÙ=ŽùÞ¾Ï&ßZG– Š4“ž[+ï¤fÛoe#T÷6U<‹8üjû[xtöŽ{åÛ¥”21ì¾euRµ—<Îx[ÿhÖíÏí¾€ÏÒ7«¯£*&ÿf‰Ñ£Í̃©g\t¦ÅDR¸ßÝè«glŽþNV85¨‰*fðæÄ©9ÏqX˜.k¾‘‘?%Í(¶Â·]ŠV®-»¹ÅcÔô™e=¥'Ï‚JBTöšUtû—ÛÑ_–|ÒŸÏœ{]'53‰$%8ª:ÚtSÚGtt’'Q ûB¾ú¹6éšuçóªÓÆKâÑEµUUTé$èAòíª|c&X‘$5ª¢ôY/æ^¥©×¯è„L³gB溄`«‚¢¤·½’ýVõ«£Èñ¾3ò‘9@x·Ž‹ðÃ#t[Æq™$¤šl­¸(Ko&‚ZûöôRº1E-ï9G‡Ž$im*#¤/ –²-Ób} ú—õÚéäõjî~ÿÔå›ÁTz•Ža£éí Ïtz¥‡É mm©õ+KO,f=3øÛ²»û$úµ9á¶¿³ø×Çj#rtÜ%_JÛëWVŸuÍóó¬g)å 8bŠ=F ¶ÞEúÕ3.CEžÓQº´@œE¨ˆ©k­Wº2D$˜ÈGx.Ù¢¢lôUâÑ(˜<Ä䃘‹0—Lr=*ukÝ¿¢«xàˆ=æ©—ÎJ$ÚŠ )î ªºú!?.nèeÑ/ݵDENTÔª«Õz^xÃ]^ôJ²àûeô%yñ/{e}rH‡Ùûµ1,m_Ix[%0·µ¿º•®¹æ˜à‚âdB÷G |ö5_¯S{q,¼zóbØåQÄä•°Š«Õr©×>™VÕãõ›Á$Hó¶ôÄ4úcTÓ=O2=0y¸jëâ*_ÜJGF;=¯N~Ë)o²•žü=!Ͳ1.ÇR£†xÛ)€ç˜L:¶RÇ´£éWÞJú/•V~ Ì}ÿðÕåù¾ü~%wæÉR#èh‚8¹ap–ú¸~¶„OYk[ÝÊ®KL–k0 Ú¨;¸®ó†Tœ¾Ý¶ë¯7lÍâqîÆy´þêùÉ8F¡rþ1ãI-¡HÒ‹d»ÉeÔŸcJña¶Ù´ÊÚª;6ßnʤʇ 6Dˆ½éòÖs+D$azQ6ý*ÊlÖ õ¦®ÞŠÎexƒm<‰UÊØhnD+6nëè$ÛC0É0"6 Š}*œ˜F½© vú<•0Î\×›2±Þç&0ϼÂb;K¥Â}òA°—@û $[úšë—Ê™˜{?'¬DÌ rÜÀÎ)Ž ÊgnŒv$EÉäGd­ÆþúÜO²®J×/rm…üÓ%#F`‘A’™"Ô ^±Y{UÕÃÈÙïII®°ŠH‚H©téé©…PSKKÍŸQl_sjU”“L€¢š—_RÔÂ%+á¹øƒËEËAK÷ •*½×R„?9޾O·¾ÇËO¢ÁÕ6{³ø^ùúÿü”þóÉï’á§dv"%xÖ—éÕŒ+|Áçe¶M ® ²úQk»Ä¼EfþãÓ?¶újšs‘e¼;qÚ×£®:*:M×ç§nö”Ù²¢vG9ö¼˜®1“yO.ÕŠ–1ÏK3˜uUFÖy z~ i;ãyÓ1—tæ¿ ñ|×Íé•ɸ©#É5«@­”ŽåmòítÛU'dÇÃV"‹9ȸ(K…ÁÀ‹¤:F,q°ªùܰ¯^泬§tGÖè®›_¯ªäâsÓÑ]pâpc6$⢺ªHŠV¶ÛØR³øÙ…«¢±=U'ü3æ¼³mOpÁæä<͖àÅl= V¯“Zñí^Ôö"¦xYÍ ¦Èâ^aTU­kæUŸÁ” ¾EÏÇ+9ÿs[Fúý,çT·Àb2˜®`Æd ‚m"Kaâ5„U~…'lJ'Táê®`yYˆ *(¤Bˆ½Ir·JuZ¾+æº?ZOÚûF™êj &Shb"·SfФ*½¡[}mÒ¯žÙXÕnÛJùÏ'')ƒhM6j7Ú)cKußµZmÛnÈŠÊbILXZGÈ•–}{© *ûÔD^×ÁÕmã×3KDwóêRò«ó>Ns×Êò@]ù™ âÅDVÛt …Ulj ½%¨D´×Öy¾'ÅñíôÇmèÊ“„ç9B—'ÃÎ`eW‚ñ ¸ª¶iUQ;=J·û~vÖ³[ÇèþŠÛf&ч•°¹Îh„ómŘûBj(¨[ãdØ—CBM‰_K3 æ™Zÿ;ù¯ÿVß“âªw«ðcèÿÕå)±BÕ”Ï/Z#£Wþ0¾LJ›£™"Kº©è«KžziwšO„•6žêë_Ƴ”“ÀžTº’ tªõ×V™ôC˜ÇóíøÑÏå[á+›‘QþD¿j“wJé:d-¢ª*¢¢.Þ­—ôV}V?… I­°Ô ³UÐGèÖ•‰VedåÜ:äg5™)¶š’ª7Ò®Yl«néµMæk\¦•Ìáo™áˆ‹ba˜WP8Œ*®‘K Ô Wg–ÕÍñìtL‹È8û0îQótÑ$:áÆ4V,Š-²‚» x…©7»5K:5×ããê‚›‡åFžÈˆÈ–§U²Ô‚ˆF©»¡DKR_´…¢¹³höpî–½¥U1ö~í^%­ëélÊ º ä$_¡ZëžTÁ« üeÏ…«z‹Ï]æIÛ.«xé­¢|b×з«ÒÜKKSÑiú$’>¡ÿÚ4¡ôU*šç(Ýθ éÿP¿I]Ü«GF'‡¨?e_«ì†®ŸžÙÿÛG©‡.Ìç—c©QæÿÚ@Ôyê ¢íLcVþpý}‡È+¢N»G—·äV9oŸ¤AØœÏzdI4¹{8#äO-tù?-îæ³‡ ×X(Ó ™æ@!d2Pˆé§žM¤¢)^ÿ f¹ž3Ÿ¡¥vÄÄDõ‰tÎ^lÏ ÅESXíÝWË¥+’ÖgíMB‚jj*‹åE¬/v”¢B<%QQè謦Í+CæšEx[·E¿¦«2¼W’ü5ÝTKìUôtÕW =˜ÇÇŒhüÆã.û†V]¶°ù×ÍFvœñ{œçHM³¬xvlwä‚-1!±KjáÝÒ¿IGµÛ¬vÆxz¾i*.o6É•à·uTW› Þ¤ôڲׯéz;üž==Q¤(/A8n-Ïm¬ké­f1)^úóÀHB‚Í‘:-oNÕªÂÙ3Ÿ½=U¿Ó«"M]%6QzÑÜ¢2žðð¹ï•ÖÛS-Qû¤#qÕ•EskO=Ê™¦X7œ$éR&IÒµžßv§Ã´Wu&zEëýç±þó’B’ãPÁzQnéÛÐ6ýÝx“²‘Örúÿ#ç_r?ii‹È½ûñ÷‡‹°†:Œ—È Õ~ê«ñ§>—äyWÝÍÖ<&D$Á?MÈD·˜SÙ·öÚþÆ¢´´ÎeÃ}¸èÑì§,aäwX ”Ù!ºÛi&ê[í‹àÖñ1v^Ñ™è}ŸÀIÌÎr9Î8ø¾¤˜ìì7Šëk—¼·—÷5"ø—?1`8ÑcG=Lƒ’Im‰µBt™¹hÜÒ»/‰¶1Ë\ÄJ¡ÄîepØiÜŒ±vC€Ôq”Äe%'  w†JçÝ«_ÄŒgýªÆêç bøÃ›Y Œ$:„ Ö¨Hjj‹kXÕþu[ú8ÆQ;ëœ.‘2Øj™åßhÒüh­+D"©} d`¿Â7T¶ˆÇTNÈ•¹Îw¡pRÇ(èÐÞx(¹r²–Eoo†®iû*óüÍ´ÄÌfÕkãøsh™Ï 8g)àq7Jë³­SJþê¾OÍñëß™èÆk‰Áì·dÄ„äÙsîl§=-é÷Ú­õkÖñ´Mµsêû?œÇ13Á”YÇ<Ùœ 0Û*šš–f†‚= ¡´íø+û®ÍpRk¯dk÷}^ªÖ?¼´ÂâVA~~åñnS ,8²VO`T„D7t%û]ªú}½³ꆺ)Ôßš|DË?ºÁž€ãÄè¼ËZic8Š‚…¨KCŠ+µwk£ÅÍ+Ûìvù>¨ŒÇW4f2'UÑ>µuç‡in _N©Üv¿ÿÖå=k±ŽŒ<›ëèJB»c’›«éµhå˜à£;^i<éKO tózÇÖšuX#!»Šªˆ—éDK­ú´¢VÞ<ú!ŸÍ+ö /²ˆ è¡¡¸ZPA6ìèÛZæ~ Ù ”$’û4§JùªÕ´A‰j¹G䨇kZÆ CɸĦŸÞhЕl›«{lòÕm9Œ&¼NV)$Dy”l ÆÜ½ÏQf6èÒmö¾ÜJ¸f’ôé¶ŸJ¥‘æì”‰¤ûNhKiBDÐF—½ÜÒºTªÑ®O—1⩺Jfª½vO2VwÄ=m5Ìñ’O¥šO:Õ+<·Ý¤~6¦õü—_¥V™eHäѽ’|µ¤ôpëãaË‹¢4„ê%JŠÚz:¶DW]ÿ³¥hÃô*kï96Ïò¡¨ ‘IvªõÒeZWÛ=^¤ý–Öþä?+=ø4z½z9·O.ÅVdóoí$H<÷ò[_„?_eþÝÿ"N»G•¯Èå"ê§G¹^þxsMN’bº¯µ+;bYZ’…ÌYˆj%kÍ*t ™[ètW>Ï]ºÄ)Ú»`üfæ-6Ü€fh¢í'QP×ͨÉ^Fï“ë´æ¹ªk¶õ]šñÖ^í¡Éi丂 úÑé^eþK²'‰†ßÕý0”kÅnO8èQ_U’½–mn]JJšvW&Ï—n§3 Ç“S8³y·*ÑN¢ÜrtA#Æ@Tè¾¥º®Úóí‰æN'ÚÚO"£ùù=òÔmÆ@ì£uílô­S·2sÃI!{0eÅeàŽâ!ª%‡Nß§jœ©Žˆþsˬ(10‰ZmÃBxÒè¢ÀÙl{Õ­5ÚüV¬Äg&S¼IHðœ…ænl!ztªX¶/^®Ê­z^?Ëç9³ mãáÜÉ*d|ƒ­Á7IÇ•R–µÕe_v¸<]›&Ç~êDÂ9–Í{Q]+ªôØFÝ é®vǰ¢Em¢Qmõ­ÍvÙv%Ve1 Þ|TuªùS´ŸGª¢ “'SD+îÕÐTE%Y|8¿çç,¢þ6ƒøHQ/qU”5Ê’.a/@°â¯¸ Xù?åÛômÿ&šc׎-ÏPq®³bÈ“1åEíÕ Ú÷²þå5Ø×ÏhÕö¥ìÛTÌã'y¯yOµ§FL‚»T\uvÂÕ]¬û!ͦzί™|l™=åa¤W!ß~4rV[Qò)ØŒýÔÓðk²¾-¦=SÚ‰®žïªKàühv–aòÔfì$ê¾â𢭷‰Fëè«OXö³¾Û[«¡x…â ÞQÈÄК“ZSRtÌU¢¶Í7éÕQ³L[«ŸOµS_s×ÝÄC7âúéYümÙ ß;ø§—æœ`aæBa¨î:$¼4%Tèíª‡ØêÞÕtøúâ²¦ÊÆ˜Žj~O*†T·âãQçTfA²Š Úâ$¨]Ýó^›û«>˜Œµñâ¶Q’ÛÊC(ïêF ]6×RkqõGÉXgdç«^Ý}ñN;ñ±y/œpîÆiì[ ±§8;xÄ—Q®ÝšP·}ým[ÚÑo´¥õÖ&qì#™ñGò®GI{º©6‘=‚ܺUxvºù/Z×E³yèqË|唯ãÞuÙNÈ}¸ˆ²Uî ®Ä.½ßzU]ž5&êó/¯£ÒŒ°±Xi’yu2<0’jˆ«§f¥Ójø¿™Ò~%qè·Ùüæq=Ù™ûJÿ‰:V¨ŒpÝINŒyž.°Ùô¸» t•¸db;º«Øðk6¶m<×÷¬§» ,bD‰}„nDT2EQ+ˆB««zõçF»[Ìœ¢}ÕÄ—W󳄊„ÛL6ˆ u¾«’ª¯MÖ½ú׌º|{zU¦ZŒíîIUl‹ÑSlÃxåžâ؉*%ŠöµOy5#ÜÃÍVË.×ÿ×é û/rÛÿrËlÿkúµW¶Ï‘¥’ý—¹–ë’Ëy>6/õjvÂ'ȼûZ…ž@µ¾qËÙÛFþ­S…~-™ÙoD“%—ºt{h¿Õ©1”×u«9‚…û1ò1äò÷$Q_k¡zòÕ5ôÆ!¶Ûe»­Ì´_Ùs–×ÉåölOmúµOt³cü-rã,¾ÏöÑ«S ÿ |…øÏ/äøèßÕ©™—ì±ÈÓ’Ì*y8Ñ¿«Ó# û*øz¿þÇ/ü4oêõ`ý–<>EL†YU:.ìUú±ª&2µo5œÁUý˜ùVÿ9å¿…‹ýZ«ðáÑýnϤìÅȤ(…“ËY6§µ‹ýZ‘®o3e£,'ìÃÈ©{d²ÛQSãbõÿöÔì‚<½‘íiþ¹è¿9eîŸí¢ÿV«vÃ/lå±þË܆b¢Y,µ—§ÚÅþ­Qˆ^ÞMí™h¿²Ï (é\Ž^ßï£V©Ä3–˜Àÿ ÝôS÷¿‰â×ëe?fþGD·~Éÿ ä*cçûþŠ~÷ñ#úJýmÇösäè“þ?ÈSýÑOø[ø‘>>™lŸ³¿%"ì“þ¨ÿ^ÝôSþþ4OƒO­”ýžy1düŸð¬|…Dü÷tû)ÿ ? §ÖsÀÎ[ˆ¨±²ÙfTWRh}‘Ú{¬oó[Û­uÿ‰ÐSé²]¿ÿ8sØ–´z:ܯ}¾Âë\Öò¢~Å?{ø—þŽ¿M’ò£ Ë,ùGÅ%"2àj¹lêi+ ¼O²?·þգŦ߇ä@Jð{)ãyüŽDÜ;]UÆ:¡>'¢º)æÚ±ˆŠÿoñ+ý>™ ¾ò²©)MÈÍJãOG±­#æ[#Ù_íþ$O…O¦QS?fÞD—§‰7&„>°ºÂ*õí» Xy^TîœÚ+ŸÍtiÕãM¯Ù—ÛÑiùBÒª»ÏG[Ýn·öˆÝÌìÑȈ„‰?)b%$Ev:¢*ùj`îkþù"Ê‹“Ë*/W*'ÒL#,†.Bµ»þWoûhÿÕ郸øYðûV¯œ2×ÿ}ú½0dÿ û9rF#/+vLäcä5)qØê lš8(H, é¸ïX†˜2ê•('*;rc=ËðÞlí±tšYmôj·¤Z³íZ¶ÄÄý 6KÁ®]œëÎ|á‘Þ-ÅFdn":D.MpÓÞjÓ«QV1â×C¢<» _ý™¹õN>K.è¦Ñz: z#¢Vµ×èÊÛ­n¡¿Ù—[K ÌšâÇù ‰×Ÿj#dÁQý›ù-iÙ=›~6?ÈT|OÅ•ƒ›¼$åÎi8§“1¢†$ ¬shn…kêÖÙûÚN˜R¶š«éû7r:-ûþQ}.Çù ƒ >4°³o#„“òœ@Ú>Ù„N‹u1z½uÄ+m“%¢þÎü•#цnHÁýfn°¤€Ø€"£ aE-~ûXEµÅ¦&}‰¦Ù¯Dwø[ä Z¾qËߦühßÕêýªüI;?Ù³‘ sY™4u7ÖÈ„TþÂÖ±{Ú¤kŒåiÝ8À‹û5ò m\)Y#E5u…$EKl»53L«–q³#ãrQr NÉ“ñÚCv:Š“d„š‘EµÓËSجˡ¯.ãÈU L‘zn©þJâÝòÝ[#‚&`Ög&aå¸Ñ¹Äe GI#ƒ µ¢ŠêÝݨ§ËuÖ½±6ˆüŸö'º[ãyOŽ 4óî aÃt„Èš´¢ìM•þW®¶µ¢m›þB&r¯d|弆BDù3'«òKQ"8ΑK  ÚUAM•Ñ_µŒFZFÙ‚ à‡)¢§ñ©û½ ÄgäªgƪѾÅÁnWTIs¬½Jã?%Uþ’¿Z©·ÔÇêW•¿õS¿„g䪥¯Öê,ÿÐõM®ºÓM®˜¶Ób¤ã„¨""‰uUU؈‰A©ÉŽn€ƒ¤"Ù"!öPUzT½Z( y–q÷Ü™hTÝtÕDE.¤D»:V¾71ˆÊ4Oc'GœÐƒr3 ð‰ZúUAIl´è5uÖšhÝtŶ›'%AKªª®ÄDJ¸œßÊS$·n™.®–˜fS&d½6RZ j€ (0`C$˜³ÉE™*"A'ÛGÕI5"p”µíîÍú€ ( € (#&óG-A—Üçe¡E—³ø»òmÍîÎáÞª Ÿa†ø8-6Šˆ¦j‚7%AºùIl”²Ò‚:à‚ºZBTMF¨«¤oÒVEÙA½,žw ŠF×)¿ e<Û:ôÛVj:­t½¨€˜! Ýj**Pf€ ( ]u¦š7]1m¦ÅIÇ PDEꪫ±ƒ !…c¼#€±Ô8œmI£E¯«WF›m½Zy§š™1q§ ·P„„’訩±QRƒj€ ( € (QŠAÆ€¤´"n0„Šbª‚D=¤ÒZWàÐeÇÙiApA]- !*&£TUÒ7é+"ì Þ€ Blø0#©Ò‰»q|ŶÆëd¹ ¥Õh6‰2$ÈÍʈûrc:šš}¢N‹‰ ¨­îºÓM®˜¶Ób¤ã„¨""‰uUU؈‰A‘!!BBK‰&ÔTZ Ð2û‰. ¢$M‘!"‰ŠÛÖEOT¨7 ( € ÿÑõMo3ÓyoþŽGÿ(¨+’äs)ÅÁŒè˜‰ß!{f&:ó¤ÓìÊ+#·¯Úîü* ¦S:ã dC"`s绎g …m”Gi[GÕöQ¾3œGoußc§O §9攚N4¬‹7[¥Í kÓÄOWW±ÑïËßnÐNsèLd‰f6“Ü4Dq>8ˆˆ:VW NÍ<^o;K(YA™Œ4o/=é(„£"e\E¸ª$¤¿öº| K3˜æy„Šü·¢72>>Ph†ÐÞÓ¨MOLÓ{K‚à”âý€õ^ “È«‹ÊÙ½s‡ ¨ÜäG@@xhˆvat-µ3ñd«¿»¿½A\\|áÆ$ <˜Þfï(üÙ¦ë‹þ·‰ü[N­}ÛÚö¨ƒ˜Êcñ8ˆMž¥Ëcb5‡]¼)(.ê[X„[1’‚^«/Ð^EUIQ,¤¶ºùöY(3@P@PH"¤KaDºªô"%<ÅO–x¼Äî*S e$“oä8܉+Cq,"ñ?Új5µ0x¯P9rl©Oaò“2 ¡Ü³­6ÌðšHã ,*€’ Ôîî·Luköa»¤NhÍ6ÖTÛ‘,Ús''‘1¸`(­¢+g¶.è²Zï¢pñ·Gý­ù,‡0Ås*A—xƒŒ›`­FöŠù;ª9¯ þ\QÍdo–¹»A?̸Ù†B˜ÌL”Iæ H+N8Œ¸ Úf© ÉujÝ}þaÉ?ˆlàå[)§)ŒJDp b¼­:ú=©Ž0Ò4¢ñJaÂ.*¼hȨh´]¿iïbËå ܓs‰‘ĺÄf±H «O¡6ʧŒ8üG¸ÞË„óañ[Žoñ^jÉÄ|{ä¶Ò6׿1 D8¡î("Öæ—eíä¹…™8¹YW¤3@GF*DP 2\TáJGC£SŒ´ÉEødþžÝ±šöJ^,]<{a/(óF¢Ù,²Yn‚ðÕu „e!'t:npÿxøàuÍerQå´sGî*#¬e&«aà ÛG‹¥ÄÓÃhï:ui&ßkU­›«!sGWJ]IJ!lílÙ¶ƒz€ ÿÒõM®´Ó­N€¸Ó‚¢ãdˆBB©eEEب©A˜Êa±Ã©ÍŠáÞ#,EzQji5jØmÒûNíŒË³ùúXå*H¨ôdBB ®‚„] Ùï‚Ú Àpk5Ì`²ÏyoNAƤDBqÂÒýôéâ+€kªüM[Ôå„sŠðImŒ@HóDÆfp¸v%9-ˆ1Ú–ññ^ ¸gbdhšˆ´™Ž¥÷Å@³Pa4, QÛlc „dFÅRÊ!dÜK%·h ( € (#&ò¿-N—ß'baJ—³øÃñÚqÍÞÎù –ΪžÂa_™ßŸÇÆvn”ôl¶NéÔ#­SV”$Ô‰z0˜Pšs‚ašé!¹)m"T#¶¥TE²-è4Ç>$ÉPtœškߤëMåIB ¤‚ ¨<.'hA±Õï¨7Éà°™Tm2˜øÓÑ›ð’S-½£UµiÖ…¦öKÚ»ðùj^]#¿3ù8±…\`HÂ3ÊmØL‡`—@Kíh$F4`'H'×Sꂈ¦¨(?}¸";}ZAË\¸ Fd1PŘf®Äm#´‚ËŠ·Sm4Ø ûu ¥Šˆ²¡¾‰  „hâ‚ š êADº(•Ӡ΀,6§òƒ§œµhÕ@$ ErÚ·HD‡néÐ,aGí )“Í «ªªâ¢Xµª®»ö¨Ð4iM¶›l·’Ô ¼ÃxS@@±ÁZhƒ©è@­†•Ó Ïvå@P@P6" bÛ4¨M>ì ©‰‘‰.…K*YDKµ»A«¥ŒqÔĺ š“Ñk*cáá5Tw¼·5Ç” Ÿ‹Ò&šPH4´(£ñ`:µP<D°ŠlDD Í@PÿÓõMA[æpÊžg ˜§˜fb$µ”ѼÒÙ±ÝQ$¿¾Õ»ï ‚ —ƒŽ›Œ932ÈŽE¹.#có«’pÚQºä÷wí³¼Þ±-D cå²cZ4›$UÈxS×Ä44'òFÛ…½µÛÜ=]¡Ý: w/4Q2Ylx¾ûÑc¸ÉGI/9 ÊÒ)â7Hu&­ó-:½í~7±ù“*¬¸Þ=¾.*!vvv§ëÛ¨ÛÜìðÅÇwJ‚¾öEóÄá²r¥æÆÊ<ã %×\ c© «JFž²Ò1ëû2á{0Ìósä¾X|¡9…ŒA‘ÝM¡;‘á¹ Æí©¨n9û‡(&¹©˜¸îSp8¤1£»‰é/¤‚’›"#uâ3[{ã:òYÌfQÜ8ârmÊŽîAcË(2“ICZÙ+¦ÔM½¡ ¨‚;Áà[ïI"3޼äܼÌx,”P”(ùæ²ÂM6{îi=‰]÷óI®üãoLá±Çu’ÖÙž°¹ i H]7Ð4 sVO )%Èmƒ’Ó¬ÆlÉÝtP[h{N8^¨^kÍC‰™È=Œr.62a›jC‘ø²P Ð ’$ÇEÁh{¹ƒÞ§±öÛá‚s*ä|®J\©,äqÒ «l¶û Ëdäh¤ódÊ4àÜ\Ó¨‰½Z¨:@P@P7Ÿ_’2!²ÊÊq §”™ˆäöt-Áâ,koÈ-;È ¸ß÷½ ˜Ž v|(+%ñ’옥ˆÆ7ßVCŒ£²dÙ.)¼Ãw/lî¢yÕ£Ú Pò–1¶²SJ. 2FÔ™¬Î}Ñå^a>q> Ž YýÏÞÙâpË|Í䥷ÞÇ 0œÇ q#ÎJ{BG9oƒÏ$›>àêhwå ¸B׶׸'A˜nM“ÊdD±ó2¤ÓgŽÉ¿9UŽæò¸ÑM1iâö ¥ÚÖÖî‡@h ¾jq¨Œc“-ØXE{‡‘˜¸Ñ D­#’ÅÖÄÝ@Bw‰¨‹HžÓx+¼×œŒÈ4ÞQ›±" ˜.»“߉xŒ´äè9ŽÉ?+—ò¯NÃãšjtç{ÛÓA §SŠßÒÔqxªqõéœà޽ðuˆ›˜w- ²4ÈŸÏJN!! §vKYw»Ü Õ3íP;É7 žyiãmÎv|Ýå:Óo<·gˆ »»b0Ñðþ>YžÛ¹ ZBȽ6kì™sg$8÷Äm}’#N#÷e´c÷Ïf\/fJ›˜.rz9L‹PÊe1ì?“~1D#FñâÑ3+ˆŠðñHȸž³|ÐU“’ß(³¥#ÿ<ˆhrV;²H( ÉrÈ¢z8ƒ¤G_r‚ ¹ ËJrTøÓ[ÄÊ8ÂûùOlbÞ¢’)$ZŠÛƒqöq @7¯Ù; uKÌ)d¹¬‡}”/ãeÃî`„Mˆ¤à“H\'ÍE¨]íƒ-Ta¦çžæ'D¥ÄùЕÞa9“}]VLYÆBËBžÀÅà=FüSâ•fK2X<¼ŸœYmb¤¹’m¼¤‰RÛ—ÃÔ±\i¡€Mš8*ÛZ{:}˜Ð^áb9rT¥9O 2r^>)<ú’…É[ã€yDC!ê€?!ÎyéY&àzŒw¢›SßÊ6ªç BT$»VVÇSm˜—­®‚á@PÿÔõMA”æ…<`±Œ—‘}Yï‘V2 ­;xï1u¿Pj Ÿ!<è‡Ä)±u“²¥ÄÒét[*zÅ@P Yɺî%'µÇÜ$UŒ“|B±i°“¤Ë~}ãÈ\â²X› ðó¢ÆÇ£ýåç–¢dU6Ñá©lÝÝÑðèGæ7މ²°ó`Ťñ(…¬DuifCÅ«O¿@…A¬>hâ½¹¸É˜À˜¨_•݉³2MB£¼þ‚$MÞ..ÀïîÐcšsAˆ«'.|%ÑÅv1GA'@U}‡/¯OdHh% J~TduøoAqUQcÈVHÒÝwaÇ›Ûöt ²É §c<“ŒŒS%KM±›µÉ;&7?ÙÕÙ • ( € ( € (#òX,vEÀvGmEØÒŠj*·ÒGÚ#íÒK¦&r°£ÈL\XohŠóPìËh­4„Ç l»Œˆ"7ªÝ² • ( ¼ùÎ7€ìöÄÀë?hb´Ý7CV³_TŠÅ@P@P@PxS;ÓnÖ8n¸Î—ÇB—Ô5Š]nÙÛSe늸¬‹ß\1î¯q8_ÆÍÆÁÍÇF–õl\»(ãåfM„¯æãÈ‚äIˆÚ“ˆàFŠs¶¤B01q[íéÐåùÀÿ0GÃÅ#‘%‰$¹3†ä)œevèÂÌq%¡¡9ÝÜgH° 7¬ËP¹@œœ\g…ÔåüSÐqD°FTdˆô$qñžÉ©‹$-“l¡ñd zHtûRá{0³òö-œfK-T‡Wr3- DÒ#ŠØ¢ %Ôwôzß ç.ÿøXÞ‚ÿ9h!˜…19o™YVG_"L6 ZBР–¹kõmÚ kç弤!••Ÿ$ SàTFˆt4I"8D«m:?{ëP+"_ϰ±¸¸Qfµ"#òŸ“LPh"¸ŠCmk3Vø`-k-ýe¹½A+ÎQß‘ËÒa³yÕr:£mŠ‘* †Év&݈— Œç¸Ç4¢A\{R›t]VäH„öE {t@8-bÉš(ËuÀtþøT1ùùÑ—»ó˜ü«®´ã–}©ÄnëP"V¯Äxu‰iíi Z~4—żŒW>pfi¹8\ǽ”.B¶©Åq†E æ µ`„€c´Ïï<* ¦$ž,\2~2CyXm\ˆ6ÒÑhK¶–Ù`]ÚT@P@PBó{N»‡Ò-8üt}‚‘W ÈÈà«ÀŠ)8*¶ÇyÆõ’Õ¢‚³)”lñ¸Çàã>uiÖ@cœt¾kpÁiDU¡âàkêê* c ØqqÄxÖÞˆrÞÀ•1søËo´âq%º“΀ˆJâ8ÓmêÔåCåâr¹ƒ2å`iðk˜ÇHQ*:P•tu : é±»¿þ¸x€Øq<ÂÌxQ;æÞu”…’U]K¶Ü#tДÊ9\â¶(3# 4¹ÁÓt›iå”˘ék‹“%Æã6욜ӨÄVËK­›nv̈O‹¼ ®Nd‘ǯÎof5+¼%WÖ2eÑÔ²ªkàhöÛ=Ÿï¿ ¾ <9‘Çe8-dùNÈ’8¹"ûìš6Úäø¥ÛÐMmiö|6Äݯ Æ¡23ѸÂPžP]Ç? ìHI D7Þ@#”" ºNîè* e@P@PAR—ȯ2®0c™ág¼ÞQù½ÇDCfék¯gPWV±ï4 à`;Öb d ÐÅüÛ†´ªÕܜٰ¦$š Z'­^÷ˆšàGœç9µ=¼pC^ñ%œ'Áâo†çždÊiÅm³i­ {&¸›¡¬†>jøu‡†QÝï-üØŽÇÐHàðä²Njj$§ïh‡,±d—áã—"fbŽ0ÛfÜføéÉìØ"9^³ÔNëõ¨6Ž2‡¹bÖ¾F™;e¯øð‹ñ÷ôI¿#RŒ%1^.xy–EXduPv±%½«}‰ÄloÑÕU›D/]Vž…r(ò6=Ån^D€“µ¦4“D²éÚ Ñ"m¤^:mÄXøñáAŠgw“b¢Å˜vëf§0ˆÕi>ýnøyÃ-p4EHòv¢ÿáU>5~”üý³¼pð¾ ˆKÍpˆÒâÖZÝ>Õ•«VñnŠÚ“^¤‡Ç¯ ÉÄm3›ådDî“§£÷šœ£¶J=ã—…¬º­9›ÒcÒÖZýFi‰¬“_|'OÿyýgÈÓ&ëïÂÇ¿Ñf|2agå~nåîiǹÀËïÚuc¸ï Ö¬àˆšŽ—D ²c¶ÚjP˜ MÙ,´¶2²Úý »=ÊžÉBa•y×4‚[n’UUU²""%ÕUz(3ßâûÿ¹/òP`òp[7@K™*"'U(ÉC0CC["¥ÀÅl¾TTEJŒ„ÜÍc[-$ê© ©¨’ uªªú)’ó&†¤mººZ -kðtŠêDëQ¤Ú!8hÿ4a[8ñúE—‰>ˆ‚Öq¾“í[²I/8òòŽðzüœ×þå[âU²q˜ðóŸ6#>Dè&¢mв"Û×òÕ«1nŠÛÓÔû¼³ï¾’ÕûeO‰Vxí{蘆²|HCæùÛ•0f!–ɳÃQAlÕT÷ÖºE´Ý;VÓLð„Æ c‰¹uÒ®wYj7Õ§a#*+·ÉQ™Ä-–`xÏá¦BPŇ™G_4UHò“`¥×i4‰Vµ&±™;¡qnCN6\ …l»QRéÓQƒºqËLÐΰòÓt1^º`Ì3P’çEÇÁ“>Yð¢Dhßå”´¶Ø©™XQIl)ê¥Z”›LDu²&qS]þþ:þ/ä«¿ý'Èû¿½OâeýE>‘úïð¿ñ×ôi%OôŸ#îþõ?ˆþ¢ŸI©~Ð> (–zÄ+eNé7¥?ðk‚ÔšÌÄõ†±9múýð—ñïôIŸ#VøVúijúüð›ñïôIŸ#QðìžÙ¯¿ ¿ÿD™ò4쓲GëïÂoÇ¿Ñ&|Gl§²GëïÂoÇ¿Ñ&|GlŸGëïÂoÇ¿Ñf|;dør?_~~=þ‹3äi‰>×߄ߢÌù`ørŽñ{Ãì›ã’9/˜ëFÛ‰0‹JõªpwS쪖¼W©í3ˆƒ§|Lä†V\ÉitWJ‚²ýïkÚÜ>ššÎy„Z³‰D9ã¿…M¸M¹›Q0U‰1:¾&­„ü9kúûð›ñïôIŸ#LÌþ¾ü'ü{ýgÈÓðý}xOø÷ú,Ï‘¦‡aúúðŸñïôYŸ#LÃõõá?ãßè³>F˜“áÙÿÑ‹a•åL½X„kLçB#šÕ¤Òd-í%·E­ZÚ–­#ù‹ó²ZïPÍÖo–¤ÒJVêNºóæ#ézÝӘㄾ+;Ë‘ù€geDÛÇ -!: ˆJzu'ŸPôVþzÒ*®YÒÛª¯_JVÞ?Ë0›@®¼¹b Ë3f#Ï ›`F(áh Š_x¬ZGÊZj2´Uåÿ9¿%Ì|Å‘-’‰Hc]Jªà¢8EÕѽ§u½ê¥º­XW5Ç nŽÈ(êâ+Lº:vÊ‹sD¾¯²ûªÎxè¼,¸VñøÖE˜±š.8’«‹¸egÏJ!*®¢]¤{ªnîÏÕƒ.±È>!5Ý"™Æš!BI.¼®ªßJ­Õt Šm©×¶:#”2c˜ ¢¨æÖöôú+ra–žE ²BMH©¶è½ R©P½ÓÓP´ª´As÷ý Ì’æþu¿‹þmJ¿ÞSg»?‰ã-•öõ³Ë˜eJÈ«äÛI¶#)ˆÌ«jªG~²_«_ iî¶~™zѶ®¶ñ Ú©2¶ª’œ3j¤­†Q(–-Q µd¨·ÁùÙ4ÃæÝÇCheË]þ?us\Ïœb¿a !ÉhQ娮 %×g•½vˆ#+Õ¢pÂJ¢T™ˆ&RZN…¿¢£,çl)‹êºµRv´ïOyi•>$¿ÿÒm»§Eyzõ21ˆ\ÖDòéCiI|«jÒÕδk´Wg+¼‡w#ˆ¨:L }UDÙ\½i´MeÏ“£NÄÁy•¸ iô*i½u艌¼ÿ.Ñh‰‡&È¢¤×Ev\ºWÏ^–¿uäß«¡c8Ÿ„,íi±ÅØD€Ýµ/—Rן¯«·b£Íᣘf‘ã½wëèä¿T!•öy+Fe§ã¤ã§9Héy½*B›{B„ŸIj)x´f5˜œ,|Äü¬¤eöÍ£¡z «íóʲ˜‰´Ãª“1H—FÍó~g!†‹" bÆ®* ÄRUU¶ÁÛÕTž®ŽüÛäawrî%¥6á+¨DCÙO±ÙV¬©5X¹k" 6MOˆH¨¶ÛÓôë-Ú§9k˜á¶yáŸÙÖ û­(4¤¶EÒ·]µ#¶Xìžès§b¹`´â¢­Ån>Zôëh´eÁjâp·óCvÊ¢[géeN‹Ûª ÀÛWPŠ…ôÏìÄ–ä,‡åW¿V…eתPi0cºJȇ¨SSk·uW­<— LúÑVƽ Õé¦ £MŽ<®jÙæ!Ùãñ*Û'‹ï»açÛp”ƒ»¨¢êU^›×Òn¦ÊD|(‡‡¯m/3ñ$í™Ø6ä+¡uáKðÛ’ê 'P7вìòöužÖŸƧHî ‹Ûq°Ú¶؉~¤½{ÍkíyV·u³ì_ù9÷“”#‘‘©¼Š¾‡ ¾7Μí³ëü5B<ñ¬f¤½Zî Ê •ÏßÉ·¤‡œ¾pÔw/ªÞ~‹Ó×.,—‘˘÷TUâSКFéЈˆŸZ­‰ƒ79s—]7^šžéGi‹øLjtGšÒv»_Úc”fia\ƒ‹îð­i<2¼rèõu÷ŸÔ‡<Ñ&ßâÍÙ<èëŸå®mýZë莀á#®y“éÚ±­¹^HãFWwŒˆ$€ÚŽÛªl‰Qkòa‡x‹‘Ô¨…%æÕ/³ÚkEÿ:“>¢#‡=&$-štê·™?ì©\õÆb¸· EÔ—Ò*¶¦dÁ¼˜ŒæâìRUëÙS”`ˆDÓµ[tôÓ¹8*QB)º·[Ý?þõFyhSÕÕ8ãÓö%[éžP¢Š¢Ú×·Ut¢e//½†È'Dê›Q4 ôy¯²­h—*j dSè´CÜÛ&ûÊŠ-õ/ ÏÓ¯³[ÄN’“ˆçµÝÁt"ˆ•ÖÖÔ(ЉVÙ„G9ç¦Ïñ6jt1UEéEM‹_c£>_áNH¬´òÕgrß ‹™QPEv^¹öùìkM.¹ÊJAɰ¶)º¿nd_R¾gɶvL¾›Ä®)¢s73d±Ï\à¸ùÕR÷·×ZUÊžUøˆAˆÔ[;âû‚•¿Ã‡t“.væe¬ÒÛæJŽÈ;¤‚s_1š $ÃU%²&Ε©ìƒºN].t;¡¤…EéÙUÄ—¤¿f„ȧ"OùÁ ùÑÝ:út÷xöúw«B–uª”9÷?‰'0Å+*£ÈRÉ} æ¯¨µËä6Ö‰ˆJŽ/J.ËÝ-³ËÓ\Ñ<´˜i 4_§qã÷_­Ku9`iŒö:3a¨dÏWèŠ:C³³jj.×ùÕ{}$Bµ1¦…ç4VÌÁv].$©±}ÊŒ­bA°êyAI.‹eú•9N ߌ#«…- ÖK*TÄ£ ÒéM좫t_:*-2a—T‡h¨¨­÷n¶E_%ê2a“ŒÓí/¥ÑUÈš—­6ߢ·ñçÔÇe Ìðpô-…vˆ¢¥­m¿BºØå âDCD Ӧ׶îÍ‹mµ9Ccİ¥< ­&vE@µiTõID“íjÝÓ€Í1’x—'G¡£ÉQÝc”æ"’k%‚%m¸ D";|dU6œÙäÖ¯Z“YÈ‹ƒŠ)sY‹kïš@Š‚$J»U~½F$Nå<4æ,v9ÙÏ«$ÄpCx@‘‚]³m¶UªÅ¢}¦žî¶Øjª‹´W§Ó±*øÞ¢/;`;c’†¤Vêã…“éRkÁ—°k4 yûþ„æ?És:×G¿_Ò„ÇWŒÉÕ_O×µ—4W@SÕªµã|Ëfmõ3´bL‰ȶ½yÙDHº­BÌ»"«îU¢³)ˆ™.Þ>IúºSÏ[Gyö4®›IÀb­Û?q)ý>:ËzøŸL–1.£©|õX‡F¿¾Ò­ˆ¶H@š話QS®±—]uÄt‡¥9_›°™.L‡‘”mŽD[V¤†ÁRx7 •:õì?¶® µÄ©¼O뜸nó¦C''r8>ëÚ-eUB°'ÑÞ®¨éO.ù¶ æ9áxhÌ ÖH„z6zU*¸rÌ©®ºF¦D»QWm]R –@Dé5½B –é¢ôY} W¨’ ­ßÊ—¯F“ÃÓ‰É7 ª³½—­XEªD¦a›Õ²Œ?ÿÖç-ÕB@ÿüs_fU*«A‹y*~V,NCÌØ¯ÝTD'*Jô­tCÇ)%ùŽíØâYSÊ»¢ÑÄ­^°{âýG mnÊýOòVZº/³ªº‰Z©‡nðÔžHaÅ['µU_K…\·S·_¹u›0‘›º–mÞŸ.­µéêò¦+‡™»Nm2dãmôŠ%•vù’õ½¼™´úc cV:™ÌDmå@²iDú:nµÏo"e¬jˆvvˆbr†9²T(­%—gH"×—²si—µª1Xqþk–²2Ê7¸´)é]åúµÓª1/"Ù²µs¶UÝJ€¬¼èéåtî’’˜êê™IŽ0ûbÒ"ëEºªV1 Ì»W€¯8ï(L'-©2&Ï÷ ¯×­"Ú]"¥U'ž›UËcœKXWA_Èป}Ôäò[êB£`²ÄQl. ¦»lEºôýâïå¶÷c¦²ÚkQuIQQ7€I:/å©Ù|J±ÑPÌÉHùÒ¦<7ŒŒIxRÂ#¡VèTA¸6ZRäEKZm½1ïg9hß{¼JV›'Ü&\ =*†JIm;um¬'ºg£hôÇ-ääye“W&Ú‘v[»ˆ[z¬£~ŠÒ+yWãQ©OÀ¶od£4¦š€MäQêÝ]å§mäø”“QÏrÒª¶3›túSB:íÒÞQm}=›š…Ír±&£–Ñu"olºô|Mé4د}!XÏœ§÷˜q´  T&ÐÖéeB“gj»|,ô—é¬Î`ͦÍÄß4M ª¨£}£Õç¯Ba‹w{yÑ$Ûe½ú6¦Ë¯’ G»Ç\¤&Ý" ÙHª+dBº[®¯% Ü`…Ë Â¶N‹¢¥×{«ª¢. _~;€á4ԃǥHµ*"yÉkIÂV†CÍXÇÅ.)»©t§_RÕfE뙥F,nu¶™á¾Œº„ò¯ï€„¶·]x-µÏ—hŠú¹õ÷…ÕxžÎ¼9Š6ꦒMmšÛM–È©³©:ëßržò" bƒ†– ¸õº¦ÔU}-Òµ<%ëÊÅd?МÇù.oàçZé÷ëúPšõxµUkݵåÛZ™J‚ãÏkBD"} ó7é›[*_LÚZ†0/¼J¶òVUÑĦ¾4{OƒU7|ë¶½Å×Å­¦°tú‹b(‰µWby«£Ëˆ¯lD{MU䊕pmÚë­Z*× îÒ!…[ÛЕÍ2µYD¤FWXùUÇÉÞì ›–ìs%TrÀvTõ¶šÇËÕÄNpZ-1éXâøy?˜rËG—ÛC³½åx‚á®Ò߯§o­\Ú¶Mx´÷<Ëhµ§>Ó¼—„ÙŽW̳1åOg©Ä¿WM_ãÔgЄoÁ¾kuØ`*·UWÑoOê)ô£úMŸAy>ó'vzGˆ¦Ø*¶À©”¾”^„U¨þ¦§ô—úàá8M»±b­ì©²º«.IŒ&4VQnšk¾“ézzy¬I2[­sÌæ]1 ¥LJ&½[*¿ÿ׿í­Ux?2_››ø&w÷mP±³G¼•Râüב·ú”úEUö­­c±R' ÄÒ¢p‡^÷­æO=kkáJ×)þL€¿9Es¡Þ0*Šô¦•ÙYÞÙ^±†ž"mæiQnºRÝwЉM] ˆIè"ãc£C‚.§ÂM•j«.­ÈÍ:÷‡È•2{†©Õs[}:Çdúz£4Qûš”™/?ttÝ]aç Ú÷¼/·¬Z^—åZ·šÀu–‹¥-Õ²»öøzíìÃŽžEàó—yqœÆ}–º´¥Å‘äÐ)öÝšó<Ï^ªM£«Ððö[eâ=‹ß7M„Åáâ+iÃŒÂlUK^Þd¯‘6œ=ûÚ+ŸcŠÎ' säêXÔ•mæêúUÛÙÛÃÊïîçé6¨BTqûgÆÿzç%&HtÜ›¨„k²ü5AO£TªÖ—pðoÊ6¢Û â-¼Ì3WR]&ˆT9ã ÄS¶¦ëbË©dNȽ·o£Uyþ^Ø‹Ä}N=÷§äHia•º)ª%ÓnË%®UÅ;gØÖUŒŸ9á.þ9g:óïèi‘'MLJfÀ·~/YšÓáÞñ•sÕZs—$žI‰YI­Æ†k¡˜*À8z¶¶·Ö ZW§x½J|HˆÄGu¾óùŸJ× +jâ6€&æú©‘:¶MŠºÖ‰²Â5Ïm“.kì›Nd†BgqdA†ÀIn¼R![ªÕÕº»EU»4­fÊÄLÎ!DæþgŽMT>3f«¨öo'N–î:Ãì×{ÞéìÓ«úõE#2åŽYÇEmŒ¬˜Ž³)Ä»Ÿq]á¡vLÁ: zµïù¹nÝ9í‰c¿tt¬,É¥–ÕÆ÷ÌÆ—TÐ…Óoò×6\¹*Ä'óˆ°‰[lÛUq‰wÑ»ÒÈ Uè|ºb/3BÔä¨r$¦•t«J«±W§£ÒµíNÈ–±YcÉÔz²§_ýŠ•ðsô!2<’ŽHëL1  QÁq…×UBTûU¤m…&’o—ÜWµr2_¤AI¯b¥–ð+üµ€”ÜI%%EYŽpÑÆˆˆ…-bA5Ò½U8\>&T,œ|‡ é 0hjÔx¥¨‘/kj¨µ¸œ„h™83ƒÈ3:{dßèÄM !ª’ËnÛí«ƒW‰¯^ÉÙõšÍæc £žó‚°¯7 Ö#F›DA÷U}Å®øÛV}²Û”È<ß“kÑÅ»­{Ö§Ž.*º(®]Ú•k—âîÛí—­zx~&"ÕõþѬ™ÍLz3 6 (ðªÙ6"ù*õÑjDÚ~ëƒÉóiä_^ºW¶>%ls˜É?Ðm¥DÔ*ªª—ëµcãé‹Feßó˜ìÓx­8à´ +2 Šê%Òà^EÙU߯áÞ0ßÀògÉñíßõÕY`-tNŠ÷4N_ J`í±¯F¾ -•,½ Óè«Y3r–åã¸stFÊ[„¤HŠª€¢;+Ê·W„e‘î<74:O<}*[þj…e—RØH(©}©t·ùR¥ÌÃ{j-H‘†©Ý›Kô%¾†Êì¤ðö|ni ËmVÒèˆa¨a²mZ´"`¥k…pÿÑçÑá‰ô^¨±÷ÍêØ¬Ê®ò§Jl¦RpÖ³T0"6í{ŠT哇¹}R+²ê::öK^¢Vˆ–Zå\‹Q„(‰bº%íæªJÐ}Š“ŠÐ®ªJ–¾”[•R32¿HU9ÞH¹œãŠ[uµ· kMp­ÕâqInK×{V¸g2²ø{8¢s9«K"4÷“}Qè^4NÊÏæÁ]Ý–Îáuç^_™5ÆgBi\ ³n ZêŠH¨©è«xã]§=%§›¦vDc¬" ònfDÖ;à Ìd5Wˆ•tÛ¡¥kÔò|úDzg2ó¼ó>¨ÄøÌa€ÆÅ² "õ%¬‰^+6—µ³dR|k*œ=çO´«^÷§²>·Ïù;fÒ×(¨qöö„ÒÙªšU—•ÌKO‰B-y’îl]T cçã[ýh}Z‰DJí%åã—¡è]j*´»÷ìêzù&jÿü“©³ýÃeeÔ¨‡2ñ; ë<Ã$6x³dF%TÝFÑÇ-©n)dß]½¶¯/ͬ÷çìö²¾U©*Î=Ué Ø¾:„%DoaZûÚv&Ò5àÌÌ➬äñΣŠÁ‹ku×Â6„µ*­ôhÔ?wïjö×l£Ù™ÜPä Ü!&UÄK"Ý@zP­µÜÝ­©®qË}Z¦ß‰NÏgŸtDL#ÇM,² dKÙ.—U¹•·Ì«ªµË¿8iÊ|¬î~jMŸì±l•´©[Œ}<_sÚŸ©öeS»lk¯Öç¾Ìs.–nGz@·›p4´ ˆ*;²"éM›5jݯ3¶ffg«Šy’ϺqÌDÐaum pÔ–Ûê꽠ÕTœ¢LÕ¸À+"S€‚¤ˆVS²­…zWAÝ>ÛOkÕ©®gˆF ò”fóYÇ¡C˜#-¶ é$·M61ѧoG«^Ÿ‰õa®¸åoNFË.âdÚEM¶»Ý «^†[aä×^Mµó»zœ˜j¾eÈy ÙÔˆïÑé§q‚áôŸ_" ½;þºÓ¸Á¶_“‚пÇY ¢ª»ÂM. '­µVéSFç[t•Ujé§_Jߣ¢¥Pn«gTS©<Ôˆ>ÙjiãÙµRÿAzh&9aØ¥—‹ßyÇÕöÕ‡PîŠZÒÈb·[_ÏQ#¬T%Ïßô'1þK›ø9ÕõǪ?úýèüo¥ÅQQl¨¨¨¾tÛ^¶ÝQjMgÚõõÚkh˜ë ¬\§œŽû­ »î ëä<ïºöEa÷(ó6lÕ{ÞsÛü(|aóZSU%Ö‹uÛÔ«][+ªÒùï—ÚvyÏ>¤Ôö1dø¹,Ñ°Š•¶^ý ^n›ìˆÅ_Qçèñ-²-¶}QîL•`¹‘†1²â‘’"§«³¦º&vvZo/.§·“ª4ÇKú¿dߘù½ dôªÕüHôçës|úùòb?61AabLœØEr·v"V­ñ6ðõüZOáÌÛÞ¶mû^êT½{^,g—ÉvวUzœ˜÷ 3…Ö©dô®Ê¦Ûb¬<»ö럭ˆeÃßmI7/d²Ü«ád¨œbF‰ÂílØ+jƒ&sÅ´àŽëj»¶òu¥ »El–òTÂO!p”|‹£]ž¯9¬ÁtZ=† Ãp«UY‚–­”ÿÒæ-e„VÈJ(½VëªâVÉØæ˜VMÕèÞM»oU핲լ«`$ËP²¨¥ÒëNÔ÷µŸßW†H©i[¥Òý²œÁÓyèKcv@ºæ›{MZSoU©$àâv .‰”"TT]ª)Uˆœ¦f0¬ó+ì=9 —ÁP¢·èKZ´¤a[ÎPõ¦TLa.-8iÚS}ª_ë×§àW1g—lL:,¾vŠ[á8ƒ&BiA_QzÕ} ^VïÔ´ÃØÑ¾·ˆœ›æ|Daˆ#ÝMieQ[Ùm¶³ŠL¯m‘ç‹"NFqËJnìUòÿÙ^‡‰«3—™äíÊDK'@¦ÚõºCÎë&2\â4áyP¾èoÿv¸·sYukŒJ'®¼·c$»hÆÏÇÿx?V¢HZ¥<õÈÄn6²®ÚˆKÐß³q r<åBBOœÝÚŸý;dK«QgâlŽu—m©ŠÚ¸7[¨«®lDKmÝë^ί…^g›3ÝôÿÞÎóο Yi¯„˜¯µŒ.hFQVÕý#©WÙ¥c®•§^fQ]qž[È’ôzüâûReêb#@‚Š*¶W]# "ùyß±Þ­b®Újˆö©¹œÃ¦fì‡HÒݵºE:µ­Zñ|±€—ÌùbNÃÅšõÐP½­©vq /VÙx×\¹ïlº‘”XC# „hí¶L°Þ’!;"í2W¼Ëlµú¹-²gƒè)‘ÒÀª>7Ux‡¡VÉÑo}ëvª–™Â¨éÍiñb:ºd ÅqÅØBJJ·E;¾éì—©V¤g™UŸâ±YG\/dM‚"ÖFà¢)'ª;Rî ¢véß!9Ir÷1ÎÇdŠaDPmƉ¨âj:HGA)nÜõ}Év«¿Ã¦,Û\¬‰â<ðE†ÊYt¢)’tôl¯Kµ¦Iþ²ä–‚ޤ]Š&{méO%;L°~%ÊUXZûYmEô"Ӵˬ™v[Ai .ŠšÉV÷ëÙNÓ$WĹ‹`(L©Zèšnvú4í2…<„'%›¥·c ¸­ ¯Z ªZ3Y¬*™ª*-­ÿÇ’ƒtšƒ –ÖºªôY:V‚C—å!gñh'tYl]W®î&ÊáUJ Ÿè^cü—7ðs­5{ñø××ïGãx¾½[ÙìÖ©8¥ÃÂÉ>µC·Ðµ|·=ÞOüWàOg²~žïá0Á%å6¾K¯ÐKVžLãLývyŸ$Œï¯åKJÉe$ÝTº" ¥º’ÕçëòfµÄCè|¯“WvéÙk`ÏDhyhè.n ªßoBVó{l×9yŸWæSéí·qûÙ ja¸h7_£\õÓ³zÛ~aâ÷w{ÖüHùÓÊJ¢&ëCµ­WʵգǘywŸ;¾ªGÙ6¯kUb#"yl›6ÖùÁ˶Òt’Ý} \»o—™ó+t©Åôƒaä%_BY+”V¶ba¾Ø²j·Ø)h.…èZa.)¾QÁà)é2„Šhª‚j7¾’Q-%A\›Ï BåÂË¿xíÉ8¯B¹ 2á#Ê„¢š¸l¶äŽÆð £ÜÁ¬¡Åp›¬CïÒæ›ˆÐéoUÓN“Atµ©ŽžÉžÁ¬È&F*ÀsWg¾ hB#Òåô.”RÛ» ½íWù¿–™Ñd£/ÎwîN#Íhqb(®­íE¸:5oîÐLP@PBå3–²£ŽÅÀ,û¿ypäJ8ÖMzE‰—Ó¢ƒx\׃‘ûÒÚ„æPQaÅ’ëm¼dª‚ "¥¾BK§Ùê tþo ÄžêþB3Rwý¼Ø¹ìÁ=Õ][¸^ô7û43“‹3S±nµmDÕƒeÑ&Ü!ºiGXö“JûÚWùâP°R¸ Cš6ÐÓU»¸9¤Îé¼€ûŒ²]ŸŒ |\Ëf^H&:Ì88Õe·g>è¶g‡R¶ºÐDt‰5ëïq?tŸÎaXŽÔ—òšŽø#Œt†!·Àaæd¾ð6Žƒt±BÓrö:¶ö®ÍÓËâ[È·Œ9±Ã$èëj:ù •u jºÕ7KnŸV–/šqs_8ŽHb<ñzKMÂ'^0Œñ´® .“Ò\5.Îï¾ “jdG¢Œ¶^bqð$ Pµõ!%ÑF‚7–y…3œ±Š#ž•aŹpÌÖO¡>1—´ú‡©¿R‚^€ ( ÿÕõM6o ™IñÛ}µ8%S E]V´iÛ«VáötÐE3ÊÙfœÇºü„—‘)9‘É #vEˆävTAJèpÝøÂ7=b ÐqÙ‰ž\¾x§"¹†#ñEæE·•³"ŽM¹ÅÒ$zFìîëì†ïòÖQœNW—b*ž6s/œ„cÄeÇ®¦ËäZÔpÉHQxôë´‰º G—²²±ò æò-×±í«Æ¢+e‹Ä¡ÜPCH‚¹ñ›þôhKÀÏs™B`ÇE‹ó‹Œî–à¼Ê•u]&ƒ£WÚ9xŽemÇ£ÄeÖbË“4ÕøÍ]9‚‚šÊÖÏho#Mb¾ø$¥a²ò#’l–jEŒË­‹ˆ$„5ÙÄ$²¦’Þû d¹V;±Œ¹"PÈ%äû¯¼øFuFxÒ\2²X‰78"ï¼ÖgA’k xy‡±Ž¶²òl“8µ8êù$Š™(¸±ÑÃØüc°ÛzŒ;½ËÜÂ3C2ÓSc›ÎKRƒ±å!‘’M¨êïˆq—Z5w¸.êÖB"O¢ ³á`,ˆ0˃ †Qâe_sBšp Dø¤ßº{-NnPG1˲ÿ;g:ûBX7D¥3¨‘o.Ccá@í #M‘{Ò'Ê–; Í0“ÈüdÉöŽƒÁ7V EÛqµuEžðBŽIoŒºãßVƒlo/æÑÈŽK^Ó™YærJ2ºŒ”mÒ::ÅâТÐö··ÇÚÐ.Î/+ )P@7ÙL„Ó dÙE¥ÛKÊŽ8ÚiÔ„F‚¼_öeAm ( € ¯äùl2|Ä2ew†øHqå?î+ªJ%ÝÜh4ûýÊ®jÂ矱˜ˆç°Á¨© !6Ò“z׃!_Bx[DÑÝû¨’3Öàv€d9!!Ì¢÷dpee±²Úº†ó1»¯¶¯©Âwuw·wh&p°¥F“–'ƒ@Iš¯GÚ‹vÕ–†öE[o‰ôÐ@ÀåĹÈrņHëGˆ[’e$Í-´8o ¨ 3šãà"ºlÎÒå¹+*û¡Égˆ&€‘ÊR¤k¶<&L_±×£z\/e"ËÂœÖø‹¼˜ºùdHRd¶M.â]ÆÐþ-±ìéo±A³\¿=!² ÑÍÉšKpº2ëÏ*9{õ´àìíé-4'ƒæI(˜ÅÅ›G 3®¬*:ù°ÛM«H³q@·áúà4\ÃÊ6ÂÅ9(ì ?¢¤pм)-È+ð€Š(wöd:·ÁWØÈ³’Î/Í%60(¦Â0é¶Ò‚Æ>!ëq}edšÑÚ/V~`û”Ša6ÚjSnÉ& ¶Å§t¸Ñ6ib!f_sA’ä·•ùÍãÍõn^1ØÜY’äIN)8*wÜuÀT=´Èc3W¤eÆ9DH­Œ(¯9~Dw’C{Ì›­‹H£Â7?~wSb=°ÛË9(Ùxdã Ü"Oœ²—,™6h£ÒbHî½ìF‚á@P@PeÄ>ÿ0w£ÆdrÎ1|tÁ‰cG ˆ]Nõ LTI-ñƒA”Âs“øÄÆ f"PE°8}ÄS5F$“£ÄÒÃ{£M޲sSÚ–žó|Ŧ:“¥Äz"Ü.bÃQÓUÕwtG§W½Ý dö'™Ûeb°Ó­5&NHø½Í^“)Me+ˆ ÆË[¢ÓNHÔ-îú¤MCÇ(C…/™7[ŠÃ2ñÄM½""àûUàšŽÕ±˜{ú\O,Mް80]‡g+Þãã$<”F-¬ã "R X2ËŽkÕ»¼ ÌåÌë%ÈÆ‚(üäqÅ]Ñ)ÆÜGg!3¤ôIÚ´n–ök–$3ß™øç„cä+Já˜+ú›=C¡ÆõXEªnây­ù‘Zq·›D½’ÃHÎ6Ï WHµÌ) ¨çaZg„Øvû.ñ±YmÁ,i4—&Y6¾ÉqÀ5y^tCy¡lþ3Pè ‘Ÿ#7•ÆÇ…óS³¨òc0m*D`Õ8ú,ÙioP€-òÍ47“Æg†BM‘’‰.?IÈHÁÁ&S ÃQÑDÞÝ2ø¿R‚Ã@PÿÖõM@PD¹Ìq[æ Á“/«ÆÏ&ÒëdBp[V…6vÉÎÖçjƒ|2aò{´WŒœQSi\eæàD#aÇ qß`œà÷ã@Èy¶+lŒ)ê­iMGŽël¼`ˆë ¸Šû¢&ÓZœuD ÂhK÷T˜æ,CùÇ´é”"oW Ôdœo¶Ø> ŒbÖØ8F:Owpè6È籘çÛfY¸$í—X2ó­‚iByÆÀ›`}w‰±í{Ò JO4á#M(O>hónƒª2ñ4ÛŽ bë¢ Ó\N(hW DËtwµP/•Í@ŶKWUözIXRäJ „ >±’häs%‰1ãqyé".41™zM›5°8jÀ86KÙqÍZK{t¨#?<TY¥ 3Ðæ5\›P2HoƒKbá…̵ˆŽ­ ötšÆ8ÜgëŒÇIˆÛ¥rtÔÇMµžšµvtÐGáù¢4˜øæ¤9ÇÈLa·aG”ätGQt‘¶¼;.Žð­Ði™K)$8òîcÝ&ÎTø²;ºk¼{ýÔK ®"÷³í—  Ù“qLI˜Ú6ùêBÒ*h&¢.ˆ‘:(ŽˆžTè € ( € g+/ŽˆãÍÈy&#”·u!Y±«iݶÔíP"ç2a K)H±ÜŽÛ1-M8¨-¨ ¢ª“„B-·ñŽè ŒvNF:¿OH’ƒ­¸Ã€I¶ÆÓÂÙP·Ã³¤»4 #óFC$2Oœx芯¤Y<7WHð‡¦N¥ìw~.½Ý=¡ ÂóV!51]qyÒŽÛkôŒF­+ qs@ˆzwGl5˜¹œd¬qäZ}hâ¼ã¨L«|%Tq µmEu‹‚$4FælDˆÊlÞFã «¹COXû ¸Ø¼â8»­ðÛ.!n¢ i71QáE–Ûr_nL”Š eq›=ºÙF‰à$M¢Øú´™ ´|`‘(Â@i¶Úq×L‰tƒ-‰ºe¥”D5‰«@”,ö&kŒµýnÈm×[m@À‘1mÔ1!lÛ7M·4¸%êö¨kšpH‡ç¥6ÛÍl¼kÂtˆEÂÒ ÃoSd„niÝ×§Xj Z€ ( € ("³üà ÜS}—žIO‹Œ2óÄš®ªºYmÒêØ>µ6¹Âyyðg)4 Éfãr ŽÙÇäcÏÞ»¨ÚCF;§û7Á·-çÓA›ùzZû)J ¬,°yæže£`QÌt·´!âè"á~ù¦Î/=É“œZD#fCFsA]Ñ·Á³&ÉQP\Ѻ[ÔAÿ×õM@PCNÅÏw82ZŽˆ‡Z“„Û­¢’’b¸.^ö±Z~0’ųñ›û—¹0ëvŽ‘ÞÈ1>3üSSQ-¼à|+Š6¢\s_­Ã _Ër¢ó$¹äð.0µ»(¢¡‰:{É«eVЛõµ="‚6*f¢&¶R;.Àf332,ÊbÂï´Q‘´fSd:£|Ę⛆¾ÐI7‹Î37¶a:2Üuø Ü03y6„–Q´ÒØ®ÍÇ\Ö>ò‚Àzh € ( € (!9‹#%'ôrl8.+s¸—]pÜQ'ZzÆm5ÚÝÓª‚%îG”ôLˆ:èÅ!—1š æ4ÇŒê¾Ó&ëJ.4ZÜx8ŒöAé=:h%ðX.ë’̆V;óT–M¦ÉÈ*Ü´$~X‹—Љ»£HÐ1 _71@±X€Ë1ße÷[)-4B††¨Î¨JãB£©•`GìÌtj KÊY¥ÀöyEȸ$ûòI¡u3论BávN¦ýçÅP?{–œ“…ÌãpE2nÈ6Ü K¥ì)[A\U7´—ÛÐG1Ë9–±ÒÉ€H™GÕ–Ô—+>b;³Ômñä6®ÅÖ$à¡°Ù˜jÖ%ªƒ¹W3| ³$ÞE¦•!Á²4Mœ§AçÉEP´¸M–­ÝÖû Y¬vBC˜ùÐ…“pœïN#“Fò~Ôž‰ž¶3±;ÇsX‡ÅÙƒxœ±ž¸ø“€ü\\à$ë¦2PÁ°l»( #kÄôêÝ3 Ý9šG1‘ô[ÊWNÎ2öFVô£I’VÖnÇ“Øý>®hà¹^n5üY8è8Üò ¸ºÜ3.÷ mnæ¢+/Lõj÷ýªöùO˜¢A™Ãsç(KCθè«.€E²ã#©¨H™Ñðè'røÌ‹¸ØYrd˜yyÂi³á&’ ƒ¤;g²*‹Ë™Ì÷õ6‘µÉ·=A•Q±Ç÷EÊoqvý‡ÂÜ Ö?+K ´ñ¶ Äì„—ô©]Z˜²4 Ü{hޝ¶íP2Ãr[ðâºÄ¨mK&"H„þJt–^D#>&ÔPq5#\}‘ìÐMòÎ;' ­Orän‘°ÇxzgµMæ@ƒÏ\ÐÜßÍ|1Ü ˆw’¦ÈÀbqN¾Óg ‘_tniÄ6„„UX!ŽòÚ \d ÙeÊeBÏٹ넆+™'Ëo&nâdŠAl°#ÝÔžÒ¨(¥ó±ß´NpšÓëöô†ÅÍц3N}íÙEæôFIñ-Ȣ곾Ø] á ý¶+?>nnv=Ücñ˜Š-*Hqcª!8”K†ó„«·wKzwKQvh3#›qq‹KÂðŸLj‚ ‹¤(he¥WK:OZú¥@Ë'Íܵ8J󡌂”@m•܆­ Ü™Ÿß=§¼oX%ùјY8W>m’«:—žÆ7Ýx¤m”tC'¸B.%äéov‚a9Šâ¢e]î“ EÑbm_$lx¢«qA5@?yö4 ÊæhŒ›5ùrGtb;<-O:-ñMW °³A~!8mŽ¡ÑÛ ÛÌЦÌf´ó2œmóq—DQZ(ÆØ8ÛšH“]Þ *Þ¶ÌwÅÍ:u0¹¶4é1ãÃ…)âÃRˆ‘i—ÀCqIÁì“K¨Yïn ïè ŸÏÊk™“°](}Û¼99”l7•5§EÍ m+fujø ÿ=á u”ôŒÅ6NL7È$’Ëh†fжá¸6mx¼7Á—H;D&"òϼ<7$IáØÜ–|6Z3âÙwÈIý”GÝ~3n»È®\£º­©‡˜•¢q¿Ü™P+@P@PW3N• Æ>«*Z¬…¸ô¦›4±"¦ð G<)–{ФÇTÂ,Ǥeãlu‚ „ò.”2Eq–À´ncP0ÏXÇnTˆÒ¡B~)L-ñoC­€‰Š6ãŽ!޾ɶOÞx” ˛䱔¾A•‘»ãÜHÊóÈl†“M¯hºFÎ>}mr¹ˆ˜H­&2[Ù@n¦1µÆm¶ÕÃ'†:" l|µjÝõô‚’³És1߃$#¼m´³Õà®ö_iÆURQ m²mk/ŒíéÍó|2‚q$µ d; r.#HÂ>ˆڂÙÅwx›Ýs…ÂÞF'»A£|ëX¯L‘LHcæFð¶ƒ";vR6„3„ ¥ðd÷û=½!/Ž–ü¸ÈóÐÞ€jªœ ɓֻ<Ý—ìèÐ@P@P@P@P@P@PÿÑõMA ’ÂerU§ò .žiòˆ±¿Œ"²Bà€ÈGPÆÐ¶Ç'4ê'd„ÊåiïÆÉÄí Y²S-”s+˜›­H³Â’wN‚iŸfZ ŽƒL_%3ÈÓ¬´ O\г8°Î¢Š±É¶ÛTl5¸=¿zZËÚPJGÅËc9*xHmbLø±•¢â#¦”!yAѧ¤Z¿| g;•B^VlÕ”@ÔÈ‹cˆ¦ëź²ï}|1l=] ƒF¹DA˜Mœ¥5 TGÜЂO91['غ@”Û#Óo^|vk/ã$L˜Ûïc£?ذL‰‹ÊÖ’±:òŠ‚1½¼Zõz”á;¿*HÄèYÿÅÞm4N)¡* )w­«]-r¼†qXÆ£LFò¸å'RcÍ«ÀëÏ $‚u±6”ø¤ážë¤ôú»„ 5ÊsãÊg! ØäÔŸYÏ9M·RR´¦¶.‚µ£€Ø´¤ãÚGã8¥½@ç—¹ap’¡ <U^º|E²ªoñ»6ÝÓ@¼Ì4‡ó ÎmöÆ9G(³c8Ñ8Ú®¤á¸.7Â+®ö wíhc¹f[CYÓBd\[dÖ5‘c†v áj}ÂqÄyÎíÀ#†ñ‘g@!†åyyP±ÉÂnL»›íÎi&6€VaУˆGØïïz·¨%ðŸšq,@â#¼-kpi¬Ôô4ÝφÓz´4Þ¢á¶"¨$( € ( € cšÆ|ç"ñxVz;úôêÿ—|Ókk‡§àÐBAäqž »¯°ëì¾ó;‘­,Û|\òIÃ'E¾ #:E°ÛÑ£³ 7s’[w Æ9,´ãâN0‚!›bâ"‘ éQÕ¥uÐl|µ™|¥¿3!L©Q[†m¹V"€8fZ˜WÔψ.i!WþÀ Ö/)NDZ±™™·™2v19š}Î*¶ Í@Ñ" tGˆ׳.%r¹½f“%"K/oÇ’ËÎÅC–Ù0¡© ®{8îh5á6ÐiqÒ=E¼&ã¹_*ê›YÛ `äeÍBÕÝ59›JO£¤<%8hȹïœíø.Gk /¤Fñ»ÁV!Ëk-HDè¼—ÛH½‡‰ #ëø4\³€ù’±õ²¼g•îV{¬fî":c[¼1ÝÖ^е:n­A/@P@P@P@P@P@P@PÿÒõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÓõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÔëqüQÎ=—4dqÁºŽ‡,Ÿñ+Ó Ÿ[ÔòüêÛjD÷E~Ñuñ#8ƒµˆ·û>RŸÑSé—$iŒ òÞ5磙ÄÇÁ; "¦L¶¨¶)ë8¨æÏ±íV´ùu'›LÖ¨¶¨Î+›Iÿ,øµ”ËCl!”¿ßÚÝoJù,NšÛáVG…ž3‡_áRñÌÏr|yã «~(“éôë®IÖéÿK§ÓoÃò7üõž¥¥iWìOý*†¤ü¶¿L–NnÈiÙU¾Õ±ª"/ÛS²OƒO¦J§4OUAᵫ­ m÷UEcïÓ*Oˆ>.ó6/…Ãá¢ÂrnT‹QÊHu ÆÜéÔEðk=“Œ°ß¢´˜ˆö­¬8 4H—ìƒmêz4tR5$E¥´3!èØ$Z«Š<›Lg |WcøÇ6z[ŠM‰$tŽ*¢ÙÐTW©ÄÖ^­mñ-õ¦~xÛÌyܦCœ‰ ‡¡›`Ø] j2lõ#Žô’½®ÝZâðÆb"'=]ͽ÷˜¤aÚi "4ŽI+º«dmSßV—ñûkÝôº¯áÍ4FÛN;çÑOñ'ø«æ®|8rÕdYm²þJv§•iîy‘Åu¸¸,Œ’l”5#(ª‹k¡&ítGôÍaëWåqˆ›mÕ\þr_ˆ<ïî4Ž\&à­ÀBÆN©ªnï ÙËìëZø´˜âܽ-_'ñ/ÙÙûŸ‡ë!ßñcžm]{¦µiÖlH¿’êâm­'§ÒôiþÞð­8—™ý=À¼x}Ìóù ôéÍ´Û­É&DXBÒ-"®¢5½Ízë~¨¤â=ó¯—ÓÅÛ¤Úbißëý+}Uû«=`òWÆ¿¹«‘¹¦.' ñŸ‚ܳ9m¼f†o:Ú¢+n´št´>­?ÿ~!þ.Ä'úÅþ*üCü]ˆþOõŠ ÿНÿb?“ýb€ÿ^!þ.Ä'úÅŸµWˆKÿëñÀÉþ±@/íUâúüGð2¬PdjŸ—ÿ×â“ýb¢S ‡íQâ8#ó~!Uü=kÿÔT‘¹á߉\ÁÌqf½=˜÷w‘¦Ò8:7EJ«­Ã¬'låß%f3™ZϘ¥):Unˆžê•^m8Z<:þwáùNvñ?-…Á?Æ„94`#­ ÀMKeÕ¡Á_§\µòmßÛ8ÃKøŠLú³ø}N\´ç?‹‚ ¶÷ö2z?œWTßó§^ Üýª|B!L~&È»=ŒŸëxžÌ0ŸµWˆj¶ù¿ü Ÿë(â«Ä?ÅØàdÿX ?ÅWˆ‹ñÀÉþ±AñWââìGð2¬PKrŸí+ÏYŽiÃbdÁÅ„lŒèÑ6Ú†€ûÂÙ(©>I«InÜJƒÒ” 9‡ ö;’È0"OÊü†„ÑTTÚlŒP‘MÓnÚÓUb׈ŸlŽ%úýç/ý;ø'þZ½Ÿô½M¿³øVÀO9ÇÿGŽþ ÿ–¨Ÿ–kúmø~Ee²x÷Îú<ðoüµGún¿¦ß‡äVe²xóÍÿú<ðo|µWý;_ÓoÃò#¹·ëß›ÿô˜ÿàßùj§ëúmø~C¼~½ù¿ÿGþ ÿ–©—kúmø~Dw•ÆøßÎS¦”p‡nÜW·¬—êOmÓ^O›ÙªqÏDìZ™ñ˜ ½fÄAK“Š.§_[•çQ¢“áR=²^_;scgsabbGÔ‹ÞüN=[âìú!œhÓœfȪd7\ã!­C&‹caõ²ÿ8¯oÅðuí®bg?‡ÔÏ^¨³eñÇž½Xø¥ô³%?ÿr×GúM~™ü?U§ôÌ'ŽœúŸùY}Š<ŸUÚ¬ü®±÷¿³øQý;dñ㓵‰„¿`./ÿîªÏËéû?…>¶_¼Ö¼daÿÁy~£Õ_è5þáùðkõ±þ ¹ƒ®4!_„ËéÿûjcÀÕôÛðýTüýl§ÜÂ]–±¾è<ŸUê¼|»WÓoìÿ°ø5ú[/Ô½˜øÕûG¾Z§ý3_Óoìþ| µý{óþ“üß-Qþ›O¦ßÙÿað!ÿÕ¹ŒTS;ˆÝzQ+ÞÎ^•íܯ=–Èç(ØEV¡‰i(©±|¢Â/h¾kh®¸ÍúýÕuÖ×⟴°â10pñ‘˜¥Iu:é-Üp½ñ–¼ý»­²y{º¼jj¦#«h8È-OrsE·Mç“eïÒ‰Ô—õ©m³5ÄË—N¿TÌF@ª¨€›Ý§é^¹åÙ'$â®HŠ» û/UÃÁÄuÛ¥ yWjýz¤²±ø€níNµZ¬Kk“xÅÄÌü³žA³ ‘ÆtÕ:M >ä‹OØÔm¤LsÑÅåu‰Hec1ËØ×³PÞb>DÜãÈ ¥¡+ëQm½Hv ¥ËQy?º{}ˆŠŸòW>ãf¶ ¾Û¯ÎÒJEެ0愽‡¥±$ïÜÕíY¯*Ì0ÄX’3³ŸaïDâ#J$D†ˆ¥uTÚCÛDÕð«Óù}æ3?Q:âÉZÏ/¿.xŽä³’_pžln‚‚—Ó¨Öê»7–½mºþ$Dûµ}›áO“Û{Z4è¥bü+œË‘0™<×)í;§K¦½„øš½õplŠWˆõKÀò©ãꉥ'âßÿSݧê§:+ ¼Ùb¥ Q9#*;2c¹áÔÓ¢ cæ$²Õ¢f'0Ó^É¥¢ÑÖ ræ„€Q1À­²N+„„Jj¦¢"«uó SvÙ¼æ]>_›³È¿~Éͱڕ¬\¯+~ÕÞ;òC?„È ãR€Z:h2´ ‰L0& hC°…QQ|éReèß q2drt‡Z–Œœ÷Ò@ª .…áŠuì-¨_¹mï=¿qX™ç¹:ë8¨q{”¬â·_C@SqH‘wD¨¯ä¨Ùy‡]s3Оc–à3ƒ–ܧJSN°b¼BèK]4 ô/Eqy5´L/´LKÏüÆ L茉‘«±‚B¡t¢9Ñä·»]´ÙßYŸ­ãyzc]¢"~Ï©Z5¹’ùVº££Ï–µI!޵©CÃï •ÿ+Áü$(=ÛAÎ)~PÎ'—)?à•mãÿ™_Ò¯üÓ^VVmÒ•õM&áÔa\ 5I…&%RYL6J¬©-­×U™Â2”äã’ëÈà¹>Cƪbˆ-¢­…UJÉ{E|¿—ë¼½¯ñJ.Ò2œf[O@Ù•—Y!â"9dMJ(»À:¯þ•q{³‡DÌZ3 ›w-=‘# üƒmsXP ’jô§›UZwq…?¦Å³daj:qHÑË[ŒZKˆ>ôö"¨ü¬bóèøq1…ÌfN.QÂV º­õ¸;[ön«osÖ¯{å¾eixÌñoKÏ­úh¯¬o  Ud˜l€¾JÎUfÄ oEQxaP—¥oé«ÅQ$É€.Ð úE?ÉVšGФr Uéd}Ä·Ô¬ç]QÛ{„OõMËTøPŽØÿÖ~!æ2I 8˜kÝœxß[öèWU:¾ }ï]QŠú¯÷ž÷‰òûmõ_ÓO»ö–ø#Çe·¸`Û Žà¶–‹ yV¼«l›N=¯RkJñЙÎbCÀÖ„hH¬Õ|‚•x¤Ö3Õ”[¹.m=±ª *"W4ì™èMþ†²§ðÉ#C)EØl’÷Dé%_"V”§žŽ{ì&ªÖöÑÚљ̹ÿ6Ì-ÄÊÅ'ØiÔ8 ël´¢Štë!E¾ƒÕ^4øw¬÷C+ÛY|ìùÁq–ÁãnBûi“^W=;¶À}VÀiùåœÚeÒü%å™­á×0 —ñ†[aS¡¦Éxd‹Ó¨…T­nÍuéÙ3 um­gŸk¡ràÀQ‘)–€eºd;¦ÆJ(–º®Úí·v"'£;}í1YŸE}Õ±èŠ{k‘Ä/D1R–hdòqÑÕù ÞÈF¶ºÙVÉç[UéI´âøþ=öÛ¶‘Ý(ßs¯fñùÆ¥ÃYî p+\FšQž›Õ¼švÌGÔôþqáÇzR:ü(îý>ë­5ÌòVýªÿ¼,wä† ‘AÆ( ¥´ÛB*%°õÔHÖ¥³á7?ÇÄ`åãe*‹šÚ¶Û6IЉöwýÝezó—©àO±q€Rç®7"Üé"ñ[i¦Q±TUÝ#1#ôÙkÇöinìJ™ùÎcÒ²êºÒ8­#Û.hJˆˆº|‹ä¬{8î—=÷sÛ°~»Í<âûyÜÀ£ 4{‘Px¢ËD€Øª’ o£IÕüKÖñŠÇGŸæé¼Ou¿F®eâ'*±Ê¼áÁǕߊ@­¾¨ˆZ\qÑ6kZJ»aåÌa]o·I!…éZ”1@PX¼8þð¹_ò´Â[ ÷m_5‰+fQ– ”DUAK«%Ò«±+]3ë¯éBkÕæ£Çd¢&¿÷n²÷«èc~:Ä·ŸÄnxùã{À’ž†õš«W&ªÎ \Œaöüº™q?îÕ¾5'Ú¤YQEwœAóÇêÔwWég0ÈÉŒ]‚ý²TfÚ­4àŠ+–ÝK¯–ÞzËgI‘•„ÛŠàCUa|cM¶«bUTT%èìŠ[³_9æGm³[ǯta`oš9ª;ïb"ÅF *ŒDí ŠšÛwþíqvDÆ]6¼ÄöÄ,°å;„阬•Tï$Ú4wéÔÚ*éû:Æk‰á¯ÂnH·$MWon>eZ¯R³„ µÂtY4BmÒá:+k*u.Þ½:’­ìi?J£:3lÏ’Ók¨Â@^—Ù_ x{~&šÛ髞:‘ëiM ª5YK<š¢˜cƒZÃ9aZ¨“ìn>Y›rç ' 4ÆB¡¸½«êž¼ÿ7Î3Œ÷-àóæÌ§þ‰ŽžáÒŸÂ}ýxŸ×OÞû}ߨÛÿ×½âá4¦†Ë­ºÚmuÅMJJ‰k'½øUÓ¿lûc—Ýî¾#©“llƒbŠ%‘/±+’-1.)Wä;‡tKÞ=b‚(·²*ßq.š/öÕéR-hÌ"bb>£¶ÜÈMlI¶áºD$ir4ÚŠ(»tŸ ³˜­9ûLs’ÍáĦ‹í{0m4ê]Wè¶Í_ÿDù®%ŒÔü…Änƨˆ‚㊶ºtî­ö'¾¬bsʹÂ''ÌBn¹9ª¶6±"[ÌIÿmwhðæ#2ˆ¬Ê¼;ÆE!TKë]ª–òW_da•ï=ØÇ§ï%±­7!lãˆtQ[v‰|žU®}“1ÐÙ1–Ùd<ƒg Kh¬<(Ø‘lí¯eèÓÚÕmUYŸL¼é‹^r ·áyÅÏ1]Ý‚ë‹yBš¬"*j6K¥ÖÖÕÙõ«Ã‹Í§§kI´DeÑùoÄ «”_Å®FTö‹ØÐ=”vÃe°Ù5§½Ý®šëí‡%­™^ EF‡Q²‘äH[¾Ø’!‘ [R"jTR=ï‚53²~•fsÔá5 ²)Ø6ù Û{º[®PIœ“ì‚9¯ŠÚ™ ÝT”v••v‰l-ßôjÑ(”»rZtÀ®(B½.•|&!XŸÎo?%ì/Br|Ö‰[uóEn3D›Q­µ[ÞtSG´öÃØÓòÊÒ±³}£]'ìûÛ.¤ó® 8Þ7ç,ÞS¼Ë'E¶!´>ÉýíÕ:à×V›W8¬>‡äÿ0Óm¿N¾ÊE}[-ï¯Þà¦áùl™šˆÈ|¤+iµAPKánW—xµøx?=óiäoî§»Zöm¿‰m®WŒò·íWýác¿$3øLŠ1Aš€ Ý¾š‰LÔ‚YUEZL¦ Ôª°r.3%æ8ÌÁˆº¥¸ª‚ ÇO3"ÝAû­>µg·dR¹–þ©LòÏ/âŸA|±Ò\?V\·IT•zW†*‚?cYl´ÃJâV)/œ­µuVÛUFÑv•­Ñ¶±å5ˆTó\À'þ¤Óí ¸Û€—QTº¢UÆÝµ)Ï(µøœ#Ù)ޏë±ÞtÑ Â⪒¥×´÷þÄ»Q¢2Ò¶Û@Ø*Þɱ.µËÝižz¹¤Ònj šqQ «/R!yºuWV¯ó9úP¯ä³ÏÉë´´«rTثփèJôôø±^gª‘Xë&  ˆ¦›¢§J’mZ螪Úy¨ünxï/9þ®½ºù[׆/òñmöjžåm_!nø”dž_[.ïÑJÚ»¢QÙIEHååÛº¾çMZÓ [GÐä\Û”›È»†¸"Š„o8šœ5éí/B'‘+Æò¯4œcõž4Zfg?²‡g˜,«{WVÕ-K{Ö1åb:ZÏX;Áó,hnj˅¤ÅQÑ eГnʤl›ñ„Ök®bÞì/‹—aÇE¹6T޶B_'M½çmÓ9zµÝqcÞÆÿ˜ï½µþìüݪäÂÝïÿÑc>Ón«BÓŽ:èiuhEÓpArébDí©W±of3žu¶bc‰æ`fò:ñ…À,Ó€:u"öw•}J¦ÝXÄ{\ö®c0ÙþbeÙ-&,xs\QGD„¬½K~”ÝNÝÿîÔW؉ï÷T¥c©)ÈrFòÑÆ‘åGA¥ÀÕÞÚZ>—n­£^#º#œ9ï˜æ™#³,£³%$šªºH–KÙQTöêó×v›Ì×3ªuŒˆæÞñ* Š_H¢lº'W’¦ÊÚà°á8ÓœyB‰­TP—£JËí¬oxéžXî´DIÑ>QUÅÚ#¤Y->ÏU•Ý­«ÑTÆz<ºG}¸Ir¾%¹“’íÝ@ÞA4º‘YJËðEvW/—¾k‡VøÅ}ëÿuzn1!):›`‡¡vW”ó="[oFAy`›v5ìâ¶«»©=év½ðÕ jq’úÝfët²¡,t]¨½áÑ¥ªYåEÚHú¢'• ·’‚;-ä‹‘Ä Xy]m×BÊH:†Š#qÕÒ½{µO‹X•þ¢p9æ3 %·¤c^83ÁÆÍ–^|m¬ô9bAu¿Œÿkíáë5ö¨’V2ŒW›t…0]ãÅlÝ;D×Å?nÓz\¨Žôœ³ cŸ•.ñÛŒ¤’T¶éÓײûRVÚã3Âúµ[e¢µŒÚÇq„8"Ak!jòÝ:jl­³œIô~Âú~µe~¤ª¥åoÚ¯ûÂÇ~Hgð™bƒ4A³k½Q)‚ŽöR¢)^ÃIËËHqì*©©×W²$¿ä¨ž«ë¯w÷áÖ-ˆRãb GU^-ºMS}×U6íI«Ô¨½fVó4çWl 3ü©3ÍÙEËe!óáŸR9.*.å‹v·§L#ÃÓ¦Íà`eù‰c¿'»¶ØñT5ëTE"ßHº5î×Fª÷Z!¶ÊûWîgÏ9“aa9v0+Œ6@ÝÝN"®†©éÖÁzPÇüµ=ÑõÐLÙ”½¨Ì¹è5Oª51húe1sG ‰|f2þp0_®•¬müåâÿZ 5É|¯•ŽãøZ•=ÑZ¿Ä™ë5•mJߙÔxáç/aŸŠ¸ŒC¯6𒼯£ ‚H©aKUéãÖÑÅk—™jiˆ™Ž¿Z¬Ö:P1ü_ ê‡a$ÝêÞ]«Vv¬ñ^×›o#]½’˜Àò\lÔIR²SJ 4¨ÜwP€•6’ôÝ:4וçlí´F9zÞ |ZLû!UÎb_Ãe$F†øÊŽ6Ñ,FÚÁQË{y듾%µõÍg g&a]~3y HŠÝû+Ó³É\›­‰Ä:tÓÚ³gy÷—0mF…fODXílUMˆá®ÁûÔU¼{[êƒo“ãÚæEœ9Ó¤H—¥§54@E@D_V½ïdR½³ìx¾E~%»‹¶ø’!6è’u*-w×ÉÇIq[įтã:Ht-ý5µ|ÙŽ«R›)ÒÇ,s ¶W³E-æV]uòwWè?kœÏ2«åëªÇ“Wn¯™^=ê¡äç-ŒJÛ:µ—H/½Ûê×ä׳g~¾×É‹Nc†œÝÎQ9‹ –ØáɯˆZ¬‹ªÛžåqÚÖµæÖûK_dZn+žýz<«VÛº_ÿÒfÀºgÂhUÃy4•IW©:ë믈ŒÏH}Œ[2Ó‘›6¤=ÝÅTP€IÑv®¤A¾ßv²´Å§1Ê÷ϰœwŒ+ “Z+h»È—·N¤ëNÒ%ZÕ‹pkn•õ¥$E]ª·Û×Sˆ„JNiÃ5q°»©[¯t…:ìV°ÙfV¯°ù”eÓqífè!«l¢«ƒµU@£Rô­ci˜éÞ{bg%žt¢²Ëªûƪ+Àˆú&”Ò{Qm{yíö4¤wLñ¤ó»§e¾¡_™)Gæ>Äl–D[ª"jT°ÕvZ+^ºµEÂc11WJ® :{/¼åÓªÛ4-x›ïÝl¼Ÿ.ýÛ%,êAÅySR ©.Å!D/B%fæ-‡6Üœ${ÐvójDGÜuµýÕvÝ"4ãˆJC¡¢DºªªŒ§Ò4ªì¿le5®g¼Ï6EÆÀ„Ë¥ÅJujFxŠ©}#­>«\Ÿl즮pO7?˜Ýc Ãdˆ$.LräÛnˆ)£aí PSg«Zj×Ýö+6¬uSðs|™“~6[‚ ΔäùSTpØ–¹6^óRi/Z»«†V­g˜\YÈÏj3²DEc.§ ªHÔ…}HbK¬zzsìF­—> 'd~wÇÉj Ô’Ø„€EW£èѦÚx̹³fèïŽöªÒž™ËotéÙ[ÇØ—@Æ:Û¸è®6Z€š $¨¢«º‰Ð»SÑQ3Ê›-ÝiŸ¦Rq—Ù¯§ëVWêˆ+TKÊßµ_÷…ŽüÏá2(9\[ÎÏ€æB¤ÃiÄeÇZh&¨‹eDÞëNª‰˜…ë®ÖŒÄ`ðøö9¶6/š¸°bü,‚" 8ÞŵÕP´¦­7+vw©3Ç ­=X· ^~ðß%Ê臘5LÀHTXy±öÔTwEϸsÔ÷µ-7hšOÔ¦/MYÎݱ¹%D¦ <»-Q •ëÐ!c‰ÒGç)f½<6¬6ôjUZÛ]2èÑÄ:W,s'ÌY–²F ë$4; @ÑSvöKßJí©š¶½{£’y»“y£™›ÊfØE ‘ˆñ' ÖÛwÙ¢¨ìSß7 uvw+:Òñ3ž‹k­b1Püåâ>V9ìd(í£àãn0ó ÂmDR-–1¶‘"í¼ÞR-6á¶ÎÚF>¥é_˜K¤û*ŠË¤á—Vâ¯g{jé¯C™æypLG°‰š©’ê%U"/*®Õ¬ì˜ka¿4™-!0H¨²ÄBTÝM(©Òµ¯Žz¯®‘kc=«+x¨Ø×!¬¸‘Ø%mZiùfoCšd±1ØÓ—!Ò…Ù×¾£]pìò-iœ{uèSÇ¥qž±ï~qcç)9¬aãÈb­7ˆ€(ÓŒßX¥¶éÙë/j¹µVÖÙ>ÆžGmtÌGÚrC 4± ª/R§Mw>yŠ ‡?Þ+þWƒøHP{¶ƒWí’y—êTÇTÇS%n¶Ë|´PJœ­–ºR§)Ë L§-T*reÍxã˜Ã@+&*J…¥ ¥-×]~-ûf\¾^©Ù\Dö¨9,øhrdd…lUPI­«èJíÛçë×\Ì8)òÝÖ·þÇ7æ•ñÑɆÒÙ’D[&Ã$·YWÌÞm¶ýÖ{Ù®ªvÕE'JI“ÖÓ®ÊˆŠª‰²ÖÛ]8cϛ̬|’t&”22â)FhÕQ²TKª]W´‰µ¸üyåÕâíçašÝÍK6ß›qÕ>#{QUv­‹®Ë²º5G¦û½é2pSe“ÓZ²jÚ* ‘mµja,ñØe·Îµ9@Wœë%UôÔfRQ’}H• nžUê©î”IÔ np¾Ì…M Ó‡tÙ})±Sݨ¼úVÓYï¡WUQ"Ò»g¹\òÖxîoÓDáÿÓÛËÙÙÅ aÅpÊ"]åD¶…êOJù«êvyŒfz¾Ÿg‘Jã3ÔÐØr3Ž4øé}µÒM¯ª©ÓzÒ-ÝÓ£§]â~°®ºã\>"£@·®ºn½hžú±ûQ„¹á™‹ ‹Ò@&È4(ÑЉYDÞUMнW®hß6ÙÛéï1›Îq0 Á8KL-\KªÝ:v®Ëúµ]º3nìôG|G^§1{& ¡5ÄTK ˆ’YꚇRzÉQx›ÏëËÙYÛn=Ñ&I²¨bú6ª¥qTºYon”-½¡-U”yt›Z•÷µã¿õ½×E&•ýU™®Pæ9XˆØï9!Á]jŠŠ‰`Þ¶ÊÊoçÚ‹üÇ]x‰Êç8Í`¶M†•lDѲˆŽÔETUKX½x×êñm9™”.*CRŒJªbÚ¶ûw]ˆ–ÛDø"JcöµYáˆ1* >¨Fë† ©ÖJÖ÷îÕµ:”#²Qòrad#Ä>‘ï-6â¦Ä± ¿A «²½Ñ…µÛʧÌx`kæÌ{ ¸óg'=ÔTF¸PlL2KÓ·VÛ&ö²¬>ô‡e7W™•Ï\¼N1†Zr`¡!qH[oP»¼d¿ Pûjê¥qqZÙœ¹ç=`²³!§0ǚķá2}øA[(â­®”%K8‚;W{vº)‰âSKr®å9C›0XÖ3xàqˆrmõz© ‚†ˆè&òYµ Û¨šâqª^¶œJÎxž/ŒÇãÎ ¶YÌ‘2D)±T6}©&Ÿ±­sÇ-/ãÆÿÃ,™ä¹Q™jڴ㈠uKk["ª/´Õ¾ª­£à½;g ¬O‹_²úÉXߪ*Z¨—•¿j¿ï ù!ŸÂdPrÞ\æ,† "ÜÈŽéTâ6„¨„ž{}*­«èñü‹j¶c£¸òŽs’¹—»Ç™,òÔªmIdëúˆª[ŦåëW-¢hö¦uï¬Ìc¹Ôr±0-òëðßi†ñ"Á#±PYPn©¥,"ˆ•¬sìqÖ¼óDâ0Že›-‘,‹·ÐµÐä*­!ª‰"-­uÚ—O%Ò£N”°ŠW¹R5 Ûj …±AÛÑA„i®”¡’ÌUQo±z¨Œ´D'Do­w}Õè Ù›²z×k÷Io«U´p×TâUçÛPt…S¡k)i0Zéïz½BÙÿÔèüµ˜ÈªHŒ† ûKünŠ+¨‚–ÖҧƉu‰v+²i^¾Ç·ó?ubÕõjŸvÊG;G&ó¯É%BnbñG´†–T’½þŒ}Öž&þ1dÓ˹ùæ…ó£{‰«jôOHÚ¶¾ÚÇYuO•¦±=ÖYñ^óª‹=XŒ ÛßRsO½M®]žE~ˇwÍéÒ±2š‹áÆ' ÒäçÌvRÄEp´Ûj ¦²UNªÎþTÛˆ‡ñöyŠGÚ÷M¤Of3rßÇàÆd‰M¡aeéWUáØ §®úM¥[˜Ú¸ü½–¦¼ÅžŽßuÒ=\Ö{vëû¶û?ª‚ŒÎv?8œpæ˜ËÓÖ¡‹M‘º"( ›z5jìׇÙñfcÕšv÷~‰àk‰µ¦ñö-nßÕtþdçžMå©còrËç'ÐUˆ8k¬´‚®”Ò(Eµøû6Wº=߯ùùÁ¬õârëè¤(h6ÚBª·¥:v]˦¼Ùi Ç':Í9xš¬À/Bû¨ão§Ù²œ3ø:i1ÂÓe|ŒãñÞ=„Û­¥‹©D–Þï Ý?kP©ÓüN, o¶¦êô"/wØKRƒiηQq§¼®p‘n¨$HÓe ÝoS0°8öÞ,¯1:’žºš¶÷ĶŠé6èƒ]}±[–¯µ©î rÜׄ‹ ÊC !«É¥²º÷sM>µÍ°ÕðN¦¹™àˆ[ñÒaKÅÅz–Ì‚°ˆ›8j(ˆ6ó&í«lLIÒ\0|¶×0Ê/FE¸ªî’öÂè©«J×}iˆ™‡èß/ñ)»Moº‘?g¹Ñ¼8ç ’Ü^_"±¥·X· ¤…4jÿ:°Û§¾ç_%®˜µ·¦gÜþDÄ΋-§û»ˆçâeÝ>«€‰¨WΗ®=‘1/ž¾›kÇtcº;ãôO«5Výªÿ¼,wä† ‘AÆ(.LW…èΓ.‚ÜLQQSΕ^—µg18Yžñ ™²µÆÏɱUS[d–SAèB4K’|«RµŽ]ó/hÄɃr[ K_Pª©u*ªýJÞ9†9‚§ ©’ˆœ^\DÝEº¯kvè›*¶Õ™àÆJã°˜±œ}úI›-/²Xè‚D¢½*¤‹oER5ÊkXÏ2Ó#Ý»ÛÃøŒ¡ª¶ªŠ$ˆ¿l»+¢'0‹c+ž§â[›Í ÛܵýÚ«¢‘ÁiB¢ Рª¢"Yz<÷·jEÉQRºlDKª'EúkjË95yÄFÑv[mZeYEÄq]ˆ·Dú•¥\£'º¦hª–$EÙæT½f¥ˆƒÆL‘!ªl$º õÚ™œ+ ˜”Ê8žÍG¬zת÷¬ï9^¬È"|n—±Û¡R³‚Ü¢êÌ–??¼.Wü­ð–è=Û@×*hÞ.a¯@0á/¸ µ}^ô~4Ö38s6ù†; j§k¯A-íè¯bÔË¢<8ŽÉL“=šL6i¥ÀŒ—R9/G¹[j˜¯³(·…_j:6.?RCG v¸«¨¯éT®›ù·W ü®¹Ïu•_±×;Ü».‚¶®•̉S¨»5Ëæysðû~–Uùm5_º-6ý'9sBÛVͺQ}âºVÜ|f¹{Göä¤6‹=à—B"{â®M¶›N#£ÑѪ)ÓÕ/'*<•CNõ”˜Žªï#w-ZÐ5\qõ/6ÿ‹ÞÌÎûÉkíŽ:)'Xª"Šú+m×ˉî„*-«w+pD#ÙµIQÓAµ®´‹h«¶Di¾)îÑ iK%’ˆn¶FïÖ”$Á…Ršò¯@ÚÞ•¨IcUGG¥µB*¨­Ò’šÏ&üÖËèd°šAä׳£{msUÙ¥ ¡ïz½Ÿ"ôU™òÿÕèܹ†‘žÇ†Jc+˪ãÍ•1p-tâ)lº*íAõ«ÒU×8êú/™|ÇàßáÓÕùŸÂÉ&ÁÊÌÂåÁ³žª²ãÊ!OlÙ-‰QmÚéO…WÛjã5püÃU6k®íQÛOrõû—^’¿5_2W/ÄxØ*#©«Ó¶«7”â ¨6¢£¥4*YFÛª«ÊÑ8擞c9‚ïX¡GÂd¼Â6I@Ùy>5°$¾s²^ôKPök¢úãn¹ûÏ­ñëýnŽüÿû£¶ÿýÊ}ŸÖsþIâçV@AHÑ1æÖ¨`£Úqát̵8û£{‚/­½ðkˬ[\ļ®ëV&kÇ´½s?…-çyéÎd“ŸäO4é0-*˜6Æ-ëפwaW¯O;·_lCÅšržæ¼fA#I• Krc6Ùñâ¾H€Úh"SGt¡p¸B^¸ïW CŸò›|ÚŸBšÓöâ"¢—ú|»‡{j­¯¯4Ì{Þ}.Ê. BÑ_Vƒnê›VÂàŠ/¸*7®f%^#ﲚ3]Dâ*4‰{qY1ÛæRJ"QÓstÁ•B–öæ»_‡ÞXCoÓí©É„Œ‹yDßU1 KªûkJÙ"'Á|«”ª|Ôè2ÊÌqÇ8`Ž„V€oÄ5Éw®‰¥öSZûÓÕ[èŒÎ!1”Ç„¾"C{%²uyVèŠF¤Ø[§ ­ª»öéŸz­~Wkè¶êOùsîÿˆÿ<1‚˜¼ŒüA<Ü€dÜj"‘"^Ã}í¾J¾þ¨‹:cýͺ4Í-iÇ¿ö’~w|–ÖIèeh£5ɨd@ºP÷‘†·ÜU|ºÏÄí‰î‡“å|Ïo“‰¼ñ_v«Þ x0{»`C"%^’"Þ"%ë"U® Ö™žYíßm“Ýd…dÍå_Ú¯ûÃÇ~Hgð™4f€ ÏBÞü)ºURéu-)åòÖ´¾‰H²ò zÀµª­“nÕZÖ'Ú»E;¿qº* ©ÙzËV„,­Bªék#±!.ÒETÚ·ôÕ;¸F]ï Ê÷à‚]vlD²}$¨—e'ˆ%’ªª[ä¨(;z6í¿EMQiC»)U‘Võ´C,š>N¸Iº¨ˆá޶b¨‹Ò¾_%c2Œ#ç¢ñFéeQ²§»TRÆÂ:I4Úý>jœ*ES†HHŠ—K§^Ŭe8*²I¨äЪ{TMIÒ¨•LΠͥL,žÿx\¯ùZá!P—ºêU1Ï"J¶AŠòªù‘µ­tFoXüèMmœÏ±ÆK)ŽK©¸‹³`¦Û×Ð΋}¸óµÏ´³ˆœ$ýí zýÚ¬xöM¼­sí5Ègñ°á¿-÷`u*u‘u§¾%ÙQ³4ŒÊߘêâù|¼¬¶Iü„®Û»n€ °A<•ã^ói̸/néÉÏ.a¾tÉŒsKÇG_2*Y>Ú¹öß¶è×ÝoİóÑçç#ÂJ0ÝIUQz+޹ˆË¾üÎ ›Ä 2ÎK+¾;¨KÔ¾ï–ÙDWw™{> )™4v8›O#J"á"*m]H·µZ—šñ Û®·ˆ™!Ïòf:SNµ%5¡xˆýÞ=WÙ±SHþæ­3ye®­¹»;ˈì|ÙŠ2€®ó€(Cmˆ¢–¾ß5kª¶Ž®}ö¤ÇU¡½nå* ÓA¶”N”½ˆ’uÑ-u¢µèƒΣ„«e2_¥³ëT$»j'×{TˆL„—õ«&ºÛÝEꬭXi–õÿ"v4õöj½°·|¿ÿÖôÓp‰¶Å°DK""'B"VÓxVs3™GeyuÙ’ Ímxr ;ÄlÒ× $Qq¥ÛÙ4«×lDL}.¯ÉuµqšìŒ ¿U$ ÉTMMÙzö¢ýz§t9f­»»Þ÷é¥Gt#8{ߦ”î„áμ¬ösì`nò[ö±vŠ]ÁE°ÝUÅ{Vº·Egêz)ó¦ßŸr}7ý"cÂNw…(fÇÄ“®j–Lt²ªôÜAÝøu;&“[õpô|í¾,Nu_º¶ÿËí¿§÷V8x[’¹^ìu¾,5!·B-ÍPÃ÷'\Ü<{ü9é+,Üg7$5X˜¾+È" ćÚTQ;©pÕ†<5õɽ^ö¦0ç­c<Ë›`<6ñJ9af5ÁÄã\Q r¢Ÿ ‡P‘ÁDGuißèµwÆÍ_ ÕϪß;¦&b+ÒyÜL¢“HÍ”z o©6ŽÛûáó0Ìë-/Þœv$2yT0!6†î6â.•ÔH½U0©HäÞht;µŠé½Äo÷‰F•WZ©¶DŸ£“Èþ¼ ¨çeÑE]#Ìí"TØ·žÔÏä¸rc¹±Bìg Â=JÚÝKÈŠº“ÚŽÚ½'¶s¦÷ƒÈŒÌ‰Š44tÅÚâÐ!E]IÔ‡^†Ÿ2±ïÇsÐñ~a³V«Ò:^>O‡Îãy™9âé uK+~ª•¶^©ä_Ww£8y•‹OXL¿Ž'ÛVÞemU@¬¨ª‹tؾt¬cdGDöžÅlÁµCK*­ëÎex‚ÕT¸íáo=óg9CÈòþ3¾ÃkÔwãÇj΋\l».Ûi æ_áóÅïÄÒá|µþ<^üAý.ËÐgü>ø½øƒú\/– ö~ñ|U06Tè^÷ 娳àW‹Íô`,©Ñün¿ùÕx¾‹4_|_µþcU%í/{‡òÕòe øâí„WklRïpúßTdáy |Em€i¼B € Š$ˆÝ ±?}òV½ÐèµÁ›þø–â¥ð×D[ß¼ÅùZÒ6WéVvD›§ƒ%~&þ“åj~-~”wà ࿉w¿ÌßÒbü­R׉"ðNG‚¾&†ú“¥dÄùZ§txD½àŠšõ7…ºyTO–§t3™ƒrðÅÞ„Àû½îËUfÈË2¼ñd•¼¡A¿{†›Q6ô½Y¦ÒnŸ³ç‹ßˆ?¥Âùj•ÿ¾.þ!þ— åªÊk’ü ñGÎXŒÜ/ ,ŒI]ïQ KM>e¤^R[ .ÁMTF^°©AŽ~3ò°Y±Ç[ïÅy¦‚è—3l„RꨉuZÛÇ´WefzE«ÿ56DÍf#èq…ðËœ•7±«è£§ÓâWÔªhûß»oáy_Ómú?äÔü7çåM-âÛN…'ÙUúGQ2ñþ÷îÛøVÿGü‘9ï |A™ÆÆ:é’Š¢¬˜‚ÞΛõÇçùºvkÅg3ø¬êѪ՞a^cÀ¿”Ãè·Iw˜‹³ÍgkÃî‡Vè^s–# ­ÀÅñ'ºÞïÇERTèÔ®"X:+’Ñk[žŽúl¥kˆžUÜ?ƒÞ(ǘü¹8EWê?Æ¢*¯‘>:­²¹â]Ñ™"ï…2šš&cˆ¨¿Æáõõüw–‘©äýFø¤þô¼R’ª©pÆTTUéýöµ­k /¶d¸ø!â@%ƒ ‚ži1>V¯˜eË©?ES }©Ñ&'×y)ÝÃdðWÄïĶÿîb|­; Ã`ð[ÄÁÿôßÒb|­; À_¼L_ÿKî÷˜¿+NèF$‚Þ&*lÃßÿ¹‰ò´îƒHüñ9ZQL6ÕþSåi݃à'‹·L5¶­Ó½C[íÿ}Q•°Ùïü^ +ß´k.ÔãS¹2À/Ý+®ååïp¶ÿƨ™Lÿ¾/~!êÿÕÂùjª_ÿ×õM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÐõM›.n+Nª¢ˆª*©d$BEŸ (+ çrÒpx¦@‘¬ÜÉ) Y¢£g‹¾‰"´²çVîût EæƒjñøR²³‘?»´ËqÚ$rQ¢næëmÙ½c ÌÄÞö›”]æØÁ6A¸RÞǼؼü¡„#-•^GC{X²iìö5’æ(CÞAÞ4yMÂ&4¢8î… ª!ƒšõ_²'ï(5Ÿ6lN`ÆŠñ³…ØÆ ‰¹$SŠÑ![U°x ë§Wí„ne|L·AÙa.iÄÂãã‹hãƒ\4' ±Þ6Þs[®ˆpÄ4ö·ÁÉóc6Š @—&d |†hÂ8ÀmæÌœtsýn‚ÒZ ·5ƒ&yÁ³È¸ðq]„ìoB„ (ùÈóà ˆZ}§²$#á· Œ´³ •—žH™£= JFtÁŸœl×w]좸®¢Q`É·¨»}½!œ]Hù3ñ²cÇ…0b6bŒš¸¦è²("ÛΑ¢žèîö5í¹œÈä8íH•‰šÓ*:æ÷eH¡«N§T_]~ýR7x!׫A¤îo‰Sì9N„gÛŠô†…¥yàlÙ +ˆáq‰àlH[Òñ¼6ý¥Ìó?É ã%œ¶^XïcS»ñÁÄD-âãwd ‡«¼iõ~3ræØäÜ>ëT¹3›yÆ¢4Œ£‚±Œx œu¶„Û'?Öh- ËsX;ÅgXɨ,xò—#·$$8ޖ׈D*Õïñͨ{@¶îí•@Pxù„áås#(‰ØñVp£6!Ä'dŠ¢6ÓrpôöÏ@ûà T8GÜÇÌ >‘¾mTe^G “}½áuXPp-&/hÝsF—4Ÿñé.>.l‡ÝnL@FÖ …³œEqàel½ž®q;Më æg¤g£Á‹ ×ñòaŒ°ž*Ê ‹ºJ„軦Û,ŒëÕðhr·6¿/ŽŒYI*L$’ÈáÉ&ÀIÞ´Db[ÛÆš×ûÖªŸ±Û!ÙeC~+‘ÛvˆÉ»in#Mð]uµ5_ß5îçgP=ÄæG#Þ(¯Á•Ћ'‡¬u –¦MÖˆHWÔp½ïj‚½ÉyVòhÃÇÍÈp‰Éx( íÒº–B@ §iϳ yËÜÎRØÇEää仉3' G`[´­«¢©¯AîÇ´é yš"ÉœŒY Ç\$H×wuæµkl,â½³†æù²-pËsP5‹ÎѤ0†6r5"!Í‚º"’-€™¶Ð¤|TÕaE¾'ïDc½AžpÊæáã HÆ©.Jm\Œâ&§Í×YÚ‹¥Ãô‡ûOZžw›%œ#x3-è¯Ï‘d$’\F›º-ò%Óðv‚R?5C~g #¾ÉÇg(|$Œã¬¡+€>Ñ^Ýá¹¾lƒEÃÜs±¨þxƒ°dIc(mɘõu”Óh—6Ó‹¨Sx LŽš ³Ú ”ÂO‘ÅF™")Ãyà&VÕRéÒœ#tt—HïêÓÚ }@P@Ç;%è¸L„– CìFyƎȶ0mHVËtéJ3w1†$þVFN4‡£1.<¦âŽ””bЛE˜ä„©kâ 7«×Þ –ð¦XqïB“]S³F‘—±ÔB.ȺPÉÆ[Ѹ]A#˜‘‡~CLLÇ‹ø÷¦ãç¸Ó!#m!’ƒhé{Fµ_†ú4éÜ2 êãÍ1ÆRFîòe£j<¼˜‹I·ÝAÒŠâ;©UÆõpšq¶ø›æ;úCH9IîòöVY»yŸÈƒ¤SHÇyÐi,‰eÒ ==¯Z‚#–ù…צÆÙ²æ(ÎC7òZ3¥ÐAP(m´"®ª¸<u¸z=ŸaÊ  æÈèÛî˜R~3î8ñÄi—.Ë®·ÃSU¿´Ö: s³¨ËsäâDˆŽjjzG˜ ¼Q(NÉ@ ¯”[÷›ßÏçDŠÔˆ¬H—Æ„ye€Ew„*ƒ ˆWŠjZ¿~%ïh5ætžX)¡O‘z,wd 4ÉIEµ!öŸèTõ4PE¹;3‹ƒx¦ËË;’ó$†óœ&ô7±Epµ8_dîŠéÎ1Ü‚6>dŒƒ„ð¹ŒmGÚîä€é8®: i!AÒññ5{-{ÔPå±2#2ã–¦q²µ®$—M‹Ñ@­@PÿÑõMA •£ÆæyYÔx‹¼7¥¨Š›:z÷EoÒð²Âvwxí ƒþXîyfw|#ÈE¯ó„€~×Ô¿£OÃøÓ|7l„w¥°ó#Y‘Œã.j3Gb‘;¦9˜ñ¬Ù›œ0ß Ý!2x5{›Ûʳ(Š.¤Ðëê¦"ZQn„ÃFèêQÞïtss—¡ëB¨¹X¦¢eæÉ ·n:´’vo½Ù ÊrV:^Œi¸ê8­ÐfÇIŒ* jÒ£­ĵ]âi-]¡ _Ë,‘y¤ 1!“:F`ÊI4d`Úðì­vnzµv¨#›ä›}©-#;lÁ˜o4m¼ë¤«¿¾ÓÈ÷ æn:À{z´ðÃyœ“3Ÿ:>ûÈbSmršVTZnA8º#ƒö@Øé7õ–ø˜9w–%¸£”Öûœ©¬Ïd‚â¶m¾Ûæ$|]. «zFÍ·Ãÿi@ß™¹ s³uçØV\a‘¼8éQئN°D¤Ú/§¹ð=Ÿkn¾ïÚõuöKM|§'œÀƒ%’{鯗dE1VžÌ£­qTx ª[®i-” aùI¬[˜åeôV±ÍÌi¶…´Q˜ð:ˆˆ+¤®‹ï|ͬ&f0A’›Ç†Û(ÛqøHsˆfNk¹êÑÙ½j Z€ (0hJ*€¨‡eÒª—D^«¥ÒÿF‚¿ù­)Øò]—4/!ödŒ¶™V™‹n£*á‘7»íŸÔzÜÒmîhžV’SØÉNšdPIxÚaZh¦a¶€ÇH-Ç'×wýèéÐ r\Š3žUvCÆqù=\nòÕ¤(®¦Àœ  ¶ùƒšuŸ² }—eÁ“r<ÆÕ¨p‚ q•"t¶’l‘ÁFKWkP½@rqüÏŽÇ76O ؃)¡P5WFÑÁ±Ü4ÛVÂûjй¨ÌJr,s–ä']0Ò+P¤q®-#†·tt8E«ý˜…‚.7»ägLâjïªÒðím< ÑÓ}ëÐGà0Ùü[LC{#F:8(a ÆŸTۦg­ìw¾ &ù%á#%*93†·û§ñÍLª)p¤q}‹oéy¾šÛÖ÷·AL_#ÀÇfNsqñÄÚ¸ëÍ8°'¼JKüqÞR!a¯‡ºGë*×+JŒÅÅ‹àÉÅÄr3¸({æÒ6.ðÔ­¸©¯B©jìÐJJÇ’€Föü'‘ò-?¨Ñ¶©±SMøš¨#ÿ41­2ãp¯=¬‹Ê·ræÛ¢ê€¢ªhÓº#º»4 1܉…–vZFÇ9ÃyÀ%€)8IõU/ãˆæð¦²öø{ºýb pœ…Ô–Eœxƒ‘Ê+c@Ó²M*¯>&Bñ*[V–™=í4Øx“aãX‹1öä¼È£|fZ&Dvá8òÞݯi@ò€ ( ¶N~ÆË…¯‡Þ™qž%µiâ ít½¯å ˆc—³”Fó9ò¡Â6ÞjºDH{‚âÚËI{AÝáƒÈü«3¿„ù“Åù 5¹Î#lp‚á¢ðÀUÃ!×ÄÞ7 Õ Æ#—¥Eg4뙞în ÝݽF­¨Ž¥+ŽÉÕ~á•Äø'3"»c’Á°OéèS=(©å¾›Ð6{ Ä 8q­óK¢íôüf˜î1nÏÕëvh!²œcë){”‰<øüÍà ¡^;ïF;§ûF ³·ÁÕANÂdb`9-Œô©$I’€ÑéÏ›JãŽè"ã° hà‡cßöhÂçžÿǵnQÉ+[3‹â×½‹Z´#_Éõñ}ž>Ò9¹žb‡›˜àDjGwÅÆ“*{1iµG$«ŠÉ++ÄtG[lkÓ¾a@áÞp•Ä’óñs æ• ŸÐî‰-²à›mpÈOGÚ :ßcsYZæ™&ëOœ 4™+ <Î2ñÕÔ2hHã«b"Ѹ "Bù¹¼Þ¦‡†¸fË.FŠ™bã£ÊÉ¿"A4⣠¤ˆÒ«nñžTl‰x†Èv=®ñhÏž_w)±^$ϘLË6žqdaaå&Kã8 =ZtÐIÃæE’ôh©Dç$HbTu;«!´íÐw„µ1£³¨d7A¼Œ¾D³ŽÇCjBGœœûï“òª 6‚ÓÜW4 ðƒ±í7·³Ç‘z.FbBa¨pœÀ<ü¾Æxš#sÙ(´Æ‘âšÍÁÞ î‘„$þfÈç10‡1_È÷¥"è4ZW‘™ž&ƒDf ÙŽó[Ôcó6r&;+.|HêÌ9k1$“QCRkxL4‹ÄqÿjZuëÚ 9ÙyëÊr±1ËHŽ>ʲú½è*H@÷ 8ƒmáö;ÝŸ…A‹Ìfa@ŒãÆSÐc„¬™=}âÒî¢e×ÙRyÒ"á¹ÝÙoP6.éì¦#˜¤e§¾"ͱմ9†ò¡’=¹ èi+ün“Öàií²9@P@P r9>ã"JQå½ÝÎF¤DhÈU[Ô‹Ò.p¾ÌÃßPF3Ï—Ý›ÅÀmùÁÙ,¤‡É†»£n#`ê¸,¼ZžÔ&Ûhßc´ç¾ "s›R£dj)"@‚3HÓRš“àl®”!‡ZêÕ@ëÉÉŽÜ ‘ù&úëUv;o ´mu[‹¤õ¸ß¾z´4Èódè²å¶Î8[0\qdhp” « !Ã!ÑĀ꫃Ãâ»ñt =̺°;óg Dl™Æ–ÜYm\":þñ+@O´­é. ¯iþï|üèËç‡ñmŒWÊ2Ad$©>c)àlx¢Mm ‚zEçGÔ×ëÐlÿ1fÛ7YoÃÒ ²22`2Íõ¨„r&Žæ†È½¢F à'k@GFæ‰í¿˜É2ÊLÃ6üwMÇ 6c»9Ý–´8%mdé‰8ÇÛ° ºnq8 ­{-Â-Êò|B:xÓ(`,>ÔIäÁ jóÚ~"*†§Zp58N4_¡²Ñ¾›A9¡0o$D7ÅjX»-‰©ø¨ ÁlÁ @ø®~÷¨G^è5‰Ì,Ü8ñÜŒ˜Æ³°\<|Ö$+¯4|1UÖÐC¯SDž­Ü" ‹ÌN?Ìoá¸qÚHÉuGd(Kq4 qZ‹Ãߨ´q¸Ý±1Ó»@Læ#c˜ãá…¸áÆ>,© ÃŽêRÔ1[ášI6Ð.èñáë}A…Ïe™qBTt{#)6L)O¤‡¸cÁPÓÁlW¨Ôè …‰“悈 ¯E‡… Ì,œ‹âê¸èÍômŽ’¸i³ÛŸ¾v‹M»üÁ‘‰‘È´½í¼TéÇ<•Xîp‚N"+-ÜËVêéöÿªÔ®mÈCI3ÓN6ÓRcz»*î«jrV‡»ð»oiÀ²g¦ÿ,fåæ!»)æ#´Ðº­Çv$‚”ËÂ(—pV˜Eî¦T@PÿÓõMAß.BoÖtYcJ±!xÀ`|@4]:5 íÚ ²bCA«üºR!°Óù)nMŠê½)hà QEQYä*@¢lîô•Á˱õHqÙ¾ô¸ƒ÷œPÔ@ákÝ5Wϲ<>ΆƃAålxÄ™w‡4™7Vã©;m´:wzÅ€Õ…A«<«©bâJ°šx¥1‹Ui#6ùª’˜ém]ó3ÍãhH·[Üo@ <“ ¨Ìlj:\FÂ3p¤ðI”),4Š€.‘4J$ˆFœHü7»{­è+ÊyFó äRHñUöLΖҋM ' qà=ÑßfߊãòÎÌ 1ŸÉåÌ^˜4Ú‚ª¯  K‘]K†[¥§W³iš ¦`ü’d™" ÆÜ¡Ž­i}¶ÕTÎ#n(éÔi­’iÝ%ÛìiÞåˆNc€<ع,§ƒâ­«¾R;ÊkoqÎÊg»ÚÕ@Gåˆ(H}çFXÏ7\PÔo£<RÒ:Hw´€Ž÷cHnPe9xÛYË'.*MuAm#*2âª)«\FMW‰mñ{Š>óE±ðÁ»ˆG6d Âûä£Å2’¤N¸¶"7·@@}PÓ@Þo+Gæ¶fI…Äd#LHêÒw†[º¸¦Ù*!šq&]Þíî· ãpðñÎJ8Ú…%fM­´‡ `D,‰aÐÐôê {@P@PœÉ‰,¾üj ÚJ€™(¨ 8*F (KÅMm´ÓÙ Ö/³ £;KØÉ1V‘ÕÁ-7iEöÞmBà žÏPéÜ!ßÔ ŸäŒq´LÇ—*Åî2Û`ÃÛµ¾¨®€ãºÐžp¸¸Ùþª \v"6=ÙN2FE,ÛqÍjŠˆ­² &›"zÛP7–à¾rˆÍÔYrãNrÊ;‰Âá îö»†¿[µ¼4>ZÇœž9“„«1g¨*ŠŠ¸±Ö*ЦŸ‹á¯gµ«Öõhg”X}Äò‚Ù°Q#8Mi`c:/ bf7lï›Îhì˜ïP-“å¶gJr@L“¤6ŒMÊÒ$†‡V‘5q· ,†cÄ`™w{ã7C@7s“`“ΨJ’Ô)4äœsjÒ0ç¶Úl UµxA¸ƒ¡¯x\Ô´!á ·\b|”†â¸iŽ^ °é)+]á7Ô‹O@êÝF€ÄàÒ‰›"|¹"Ûg"O gR€"0Û!aW u(kÞÞ>Í@P@P¶!¬ˆ2¼gbÉŒ|X³ÑÅl”T J:6H@D$&ÙÛi*ÿÍà;|¸¹WÜ“jÉ>÷PœGQÖœaPˆQ‘áiÒÏ 7h5‚V2î6BS ‰É†ŠÉ²ñˆ#zÍ\lÞQÕÂu½Zuvµê!òœH³|eH6ãÈzTX¤­#M„sŠƒ¡±pÐÕâ/jã„>©iÕ¨ƒË°¡µ‹m£qGÑ1IET„Tì)u°úºh2æ ˵‘~l‡‚9«±`—iÂmZSÅõÜ3Ý7Œ7û dpI˜ËÏÍ‘Y6\xðQƒqƒâ6dªÚ¾Š&‚V€KFðöµ—a-´†î–æ¹Uñ]pÜ!]ÞÆ§ ޷ N*ã¡°,ºmŒÆØÈv²Þ«*éß]kuûšO“â½ ¸²¦Ê“‡'/Oƒ-Jü6€5´(Úèû=tæZ)Íñ¢–©" 5Á7M€6ÚsŠˆ´$ó©Qæ÷‡OfÇ-c2"¼3\-N»­¸ë)ùÈÈéÒ’$ ¼æ¢sxDC^Ýfô@PÿÔõM@P k™ç0¹R™-‰˜ÍEiÆÔ'0›ÄO;pèÝ ;Ôgóf{éã$#Od;È2ãB”ûBÑ0¯ê(l¸ëäi¥[°¿§÷Ýcñt­s åGó"ŸyŽ.§Úv'›%$môâ´îQ—ï”üÊdZÉÉLºÅœá5‹ObÓ±Û±dô¦ïÃÔÚï qt‘v›ÓÚ Lvo™fç{¸« ·_ ¤Xh”CLåxc¤ÜÀ$pTdGжháe]Æe2r Lqäc39ÓUEiÇÇ¢Ümw÷ú½Z 6l‰ØÖ¦¼ÚIÔ눨¨Á«:®«¾­é#øT¨ € ( € ( € ( € ( € ( € ( € ( € ()oNËc²<ˈQû¤YŒ¶lÍÇC¹ÆBFÌL¢A¾M½¬½Q t×5K^en8Ô¸’MöYbÉdöÎ5X¯•Û0q¦€M£ÝÞáTç«Y/ÊA,°»•€0e6qŠI蹆·\˜Ø½.ÅAnG …¯|ËMȽ…YŸŒº¶/”I0áX’±*%mwÏx5|ø|Öh0‘ÙÄ· #°Ñr<'[}Ô^'S"¼d d:]%tƒÞ;ꃀç|”Œ®˜ñ\îm¼Ã`M|ÜG„ÝI'udZâßA‰ê÷¾&à]h € ( ƒÿÕõM@PbòÞ œ’dÓ‹ÞÝnCí«Ï+\VL\µðÛ-`$\1'6›Ëø™Šñ>Ñ#8o4ë­:†Ø¨ E¡H.Ù¡"íP(Ôôh$¨ € ( ƒÿÖõM@P|Õ2\ZÊ̈|9Q¢<ëd-& ©"Ø‘El©Ö”ÜßÈÇÈ?¡±¤ƒ¤JÊŸÁ2TT¾û[¿æïP"Sóe¿7‹*ꣲ„*mÆI"ÚÅ'øbˆÒF#S ÒV>+Vî¿iA%œŽr[à쬛ÎÌózÈp™’ÙRb„})®îðƒV½:xCA?_1ÌÌyR QñÑ%É„Á"ÈpßÜT{Ù/ u#G«wÙº;úÂ4óüÃ-‡Ž[ÙÑr<& nð¸°È8MdBâ1ßO‰«G=S 7šÑ˜ä9*ÊÉ,`—(`œ£ŽQuUF7(˜ºÌ´zÄl÷õ‚îfr‘ó›…)N{ϰìI$ ©¬:ß"oR.³¨GwŒÅL^o›$OriD˜ä4‘)§˜U€Ûm…p† k=^ÖØ ñNûžÈ74†ø‡e?›åé’²K1Ü„2¸d[kX°ªŒpÀ„ŠZ}±<}Ÿiï‚é@P@P@P@P@P@P@P@P@P@P@P@Pÿ×õM@P0D $T!Tº*/J*P1‹ËøŒðbãbÇguxm0Ø Àøƒ°EuÍñø{Ô LÃâ'4ëS`Ç”Óê$ûo4 ¨vБP´ú·ìÐ''—ð2¢$9XدÄWF;¬6m£‹{š Ž­«½@è"DlÕÀe°5lYSD^]D.‰ØE¤~X¸ HÃ‰Ž‹$›÷˜Í2Ø6æ¤ÒºÀEî;7¨7‰†ÃÃa¦"A† ]a¦šp‘ELQIP‰5'¾ p±£¬’­È&ÁåÖ€jŠB…Ò‚J"¤?¸a°á‘<˜AŽ9#M'9|†È–Wm­RȉڠÄ<&Äü8£KÀo:ü—N,6›D±> ÉUxȽ›"×gY™­Xægêü=?âû¿¯Rqø~÷áêý®ØÈ¼ë“Ÿ‰„ö7ãÙY2_†üW]VâÆv“r é`Û¶k[d,²Fþ öAí8S×÷m_‰êôúÿ'wÙý+÷vz‘n3Ö¶ìÿwèv¼“å®`{,3˜—¹d±rV$èâç­zÐ&Qi\lÚt äÓeêTõ¬Z:Nr{-ø}Ôs‰ü«oÃö“5 AsÎrn”òYx Ó’â6†È?«†¤¦#½¡P­·ª«i˜Æ>ÕéOÿ’õ§ø“ÄÏÝ­íûµÑÙxu9&vr#ÎO¨ÌÌ|õbJ‹9¡FöCÖÙ‰{FÉ·GpêóÝ\{»/®¿«³eu[õéêýÕI™ŠÛ>õ){þλl§ê_û¿vÉL§9rö.aC˜ûˆóB.I&£È}¸àwÒr]e·Š ˆ¥®A´:±U¬æq…¾ïw»Ýù¾÷ªŸ~«ÌOáï~ϼÙþoåÈã”W¦‹3 g‘B€^MŽ›º.ô6¬ñ8‡ìÃÚšgŒþwÃÿÜãÑÛúõý¤æö}îïwô¾ïÚ0‡Ï0äó”¾\Hò‘c±ÀyaLAW'µ!¸­#M¶‚ÐpÜ3põ€Õ«‰Ÿ¢ÓOØÃûßù”-1üïú{?Åß÷~×j}ÜŽ=—ч¤´Ûë¢ÍˆŸµ- îªß|÷ßíDs8í¿»Kþ͉ã™ü:?j§@P@P@P@P@PAÿÕõM@P@P@P@P@P3f5+²ž ¦“Q 8ûŠŸ¦DÝ5óDΕOÃIâæ:tC‹63éŸ)d)qZ“1×!) 4¤% KXúâ5xE6µª/9½§ï*qϱ$৤G'ÀÅä›—†À+®+hÓƒ¢Ð¢›«óiþ 9ìõ6cT¬öÞ&~‹Wô/·ýý_›ñ{ýÞäÌf“×Ö­mÝj~÷ogÚTy›‘Ìcyó)‹ÆKjOÄXì9Ö$L–Ç[£ÄdlmÆ™Bq 74nêlªÚã\ÿëë¿èS¿_Ä¿ëöw~§ÛZ¶‰¿èë½moøöSõ?þçk«6ŠŠ/M“êRz±×˜üJ‰¹ ThAl©6”p¥Ëj<ÖuHã´è ˆ‚-eê E-üÊþlÿ†õk1è·çVÕýÓœÇ1²` ÌÆå>bÈGCo#™ã(B[²äx­†B*éA!wN’Þlø{¼H˜æb~«Wó¿gîýË{ß·TDñ]mù¿µúÞ¯³úÝÊÜ\ÿ0òß%Ä‹4åΓ qj°^ºC'Tš Ü&”ÑÞkVtw‡œÝx…Î; œÏmgÓnßæ[ìÓóiÛü¾þÞÚz?“ÝÿÚì1Ý1êŽïM~÷¯{×Ùñ;ývþe«ùëG!±‰Šu¸=õ×Íâ#7#L'äÊvÊoÈiW²ðdžÐ4;¡Wœb"8¬{¿Þýë[ºÖûVR3™Ìæß‡»ùµû¿eeª¬®ø…‰Èeù3)ŽÇµÇ›%±ZÔ!©PÅ{F¢)±:Ö£ªÏÝٮ߫M”½¿u>Ë}t½j–ªÄnOËd`H•ËÂ+–ÛQ²PÉDSâ¢TA~>ÒlÕw›â2]¦É¹¤bñ?gâk½¿7ál¥þ'ìS²ÿz½ŸúUª—‰soáÞ•ýzZ¿÷»©÷où·Øc—äùmsvKجžf&iÀ}›r®ÀmµHáÙ”Ï{† Í]i¹@fÌéÍ{&=¶÷¿Ëµvz½^ÿçVÝ´÷;=ëwU¥­ê‹Gѧèûžï½úuõ÷4ÏòFn^^6g¦•ÚŽÆ#f™eEœ%ØÛ6¶=^Q6¥‰Ipté­bó›Ï«¾Þ¯ÐõSâ}ßüËí/ÿ2ý”ìŽÈט­{Óü¿½ð¿—üÏ¿ÿµë°F™‹Ï²²+ŒyÜvZ&H9ÑœŠrLÅð'EÅ¿U€~¢¼D×óæýßgÜ¥?Kÿ/îý¢ÜöÏæööþ·wèÿámΧ;?)Ž­GŽÓDʼš¸ö}À⨪&Î4†Æ÷ü× òÿ–$S‹fzzøíñk¾”§æk¾ÿ¾µ§Óˆüïîü/ÙíٲׯÛí×_¼´¢Y-䢱H ( € ( € ( € ( € ( € ÿÖõM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@Pÿ×õM@P@P@P@P@P@P@P@P@P@P@P@P@P@P@PÿÙyoutube-embed-plus/includes/gutenberg/gutenberg_hooks.php000064400000000646151435171370017776 0ustar00 youtube-embed-plus/includes/vi/vi_admin_menu.php000064400000000571151435171370016054 0ustar00  Monetize', 'manage_options', 'youtube-ep-vi', array(self::class, 'vi_admin_dashboard')); }youtube-embed-plus/includes/vi/vi_login_success_content.php000064400000000647151435171370020336 0ustar00

Hooray!

Click here to complete setup » Click here to begin customizing » youtube-embed-plus/includes/vi/vi_login_complete.php000064400000000246151435171370016737 0ustar00
youtube-embed-plus/includes/vi/vi_actions.php000064400000003254151435171370015401 0ustar00

A game blogger posts Nintendo Switch game reviews and monetizes them using vi. The player combines a funny ad about Switch's chipmaker with an interview about Switch game quality.

A food blogger posts a tasty pasta recipe that's monetized using vi. The player intelligently combines a food promotion followed by directions for a complementary salad into one ad unit.

1) { $multiCatWarning = ' Note: If you selected more than one video category, you must stay logged in to this settings page for your categories to automatically add variety to your ads.'; } } if (self::$alloptions[self::$opt_vi_token] === false) { ?>

You now have the option to make money embedding quality video ads that offer up to 10 times higher CPMs than display advertising. The ads that you will embed are privacy/GDPR friendly, powered by vi video intelligence, completely separate from your YouTube embeds, and can provide extra income on top of revenue from your current ads.

Instead of an ordinary video ad, vi ads are so effective because they wrap an ad with additional useful video content that you yourself don't have to produce. Embed the vi player, and the content will automatically match your site's topics to attract your visitors' attention. You get free related content that you're paid to embed.

Check out the demos on the right. Below, sign up for free in minutes.

Need help signing up or signing in? Contact support at ext@embedplus.com

vi.ai Terms & Privacy

Not interested? You can hide this by checking Hide "Monetize" Feature found in the YouTube Settings "Defaults" tab.

Loading sign up form...

Step 2 of 2 - Complete Registration

  1. Register below.
  2. Check your email for a confirmation link. Vi will verify your site for quality standards, so it may take about 48 hours for approval. Weekend signups will be processed starting on Monday.
  3. Come right back here after creating your password id, 'youtube-ep-vi') !== false || strpos($curr_screen->id, 'youtube-my-preferences') !== false ? 'and refresh this page.' : 'and click here.' ?> (Note: Skip the "integration tags" step that you might see after confirmation, because this plugin will automatically do that step for you.)
  4. Login below to complete the setup.

Note: The vi feature is being deprecated in the next version.
Please contact ext@embedplus.com for questions.

youtube-embed-plus/screenshot-1.jpg000064400000426504151435171370013332 0ustar00ÿØÿá6ExifMM*bj(1r2އi¤Ð ü€' ü€'Adobe Photoshop CS5 Windows2013:12:23 01:38:51  % Õ&(.HHÿí2Photoshop 3.08BIM%8BIM:“ printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;²printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHH8BIM&?€8BIM 8BIM8BIMó 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMCÕ%sshowto%ÕnullboundsObjcRct1Top longLeftlongBtomlongÕRghtlong%slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongÕRghtlong%urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMÿá#http://ns.adobe.com/xap/1.0/ ÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿîAdobedÿÛ„        ""   ÿÀÕ%ÿÝ¥ÿÄÙ "2#!ÑBRb31¡’ÁrCS$AQ‚Òcaq‘¢âs“£Ó4T²ÂD±d%5ðÔ¤–ƒ³ãtÔUf "2BR!br‚’¢ð1²AQaÂÒ#âò3CScsƒ“£q‘¡ÃÓ±Áѳá$ñ4¤ãd„ó´ÿÚ ?ú^€P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @(ÿÐú^€Ö• ‰šœo‰ZÖàW·²%ìÜ}êÙ ‹.ç–šÇí"iZÖÿ\è btsV1١dž@Ò+qÿl»¢Wóã?ëVÑ+ù‹ñŸõ¨D¯æ/ÆÖ ¿˜¿ÿZ€tJþbügýjÑ+ù‹ñŸõ¨D¯æ/ÆÖ ¿˜¿ÿZ€tJþbügýjÑ+ù2µÿ\¿IPcØ 2ûHm{ÿíµ… r‚íuÎås;z †Ö°‘½CîÐåª4FX\Ó/°ÅŒ/OºCbÏõqΩUÐ TW¿EBÒ ÊçªËZ×ãÂÃãôÿáÿ:ŠÕNðŽEî&~SûOö¬þ½ICò˜ÿÚµgõèå1ÿ´ÿjÏëÐÊcÿiþ՟נ”ÇþÓý«?¯@?)ý§ûV^€~SûOö¬þ½ü¦?öŸíYýz5‚Éh Þá`¶W½ïkÞçkó7±@n €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @(‰‡ÒWµ­þÍuûÖÿ-ÿÑú^€ò‰¿¯ÿ”(Ï{òR¯¾"&âÖÝp`ZåÚ~Àÿìâ^*œ½*±íI¯Š&ŽÕvÉv‰¾²7mÙ¸*æZdv ûÄ9Ž^Ùôªšª¨½¯4*$S·‘ÇsÚÔÝÌ;’ÁOCn»ˆ}ž‹Zþó?ñVù#ûIòÃös·Mõ‘&ª:ÆÄ›cyôñ2úQñþNfå©ð ct¯.ý¯ƒ·›–jèNÖkÅ7Ýæû—ºŽ"e® œlŒ»äà°\wÀNÌ=C¾7-4´G1ÏÚ£tªmµ¼É7³7²l!û¦íÚnSÎã‰a N6F]óxX. ;Ž`'f¡ß-4´G1ÏÚ­n•O4ío2MìÍì˜Û³ví7)3º·‰;\U¾ L¸Þ׿àFbÁæ†!ìåìÔ+ ©7¶Z×=ÞZ‘Mmí=Íg¬GÝûœÔèa·àÅÈ%“ üok)„* 1½¼Æ2^\¸©µÑT«­Ç#Þßø6î"ÔÌžY|Mkÿäi)}Γ“h÷SEDÂP>ö2`åšÇŸ[у3H¨ˆ9OÁ”"èŽöïj¶+²Z¤;b ‡u2l˜vŒ—*,†ƒ…–Ó LÚ¹0uA$cý*ÞèÇßÅžÕ“£Š^Ý¥å7ߺ®¹›ç!‰³˜Õ €xfDj7êøy°WQý*¥H:±¼Tš©ß;¹Kû_¸Ú¤”X¡|…þ ÿ’›x;d‰Céºm íýaP>}5Ý;‹»7°[· .pJ»o`<yr€eðêU5`¤¹"‡dSçÈîxÛ\ô”¡ Rb¦YŠ`øi¸~Ì€O5´}¾\G"Æ•QR¢*,OÕ·½Øö».QãÒXñy_í/@»/˜ÍËØ-L‡O›”`º{;áXÛë ;6÷·ºAÝ&J[4 Í•›•Xlz#šÒ{«qÈÆ4•R¢¦‹×õuv®í5÷ ôݲÝoƒiÍÔ–ó‰p{š4Æ%+±ØÞ-¿µ­…ÒB·-žŸ±˜òæ¥ÏŽ9!þHî!þòÿwªWïÜâŽ3¶¶)j×äIewô„v%ÈM±Ž<Þð{8‰Md›“¨oŸVnT,áîd.-¾QY’”¡q˜{0G&8ì^W7ÿDªUÃþÓwkG–_lªìk% FC䥱ñZì»åvdfNb‡Ã¦8 àVªAUä=më¸Gz&´ü²{D¹]á@.JÛ!ZV{ v YqÅŒšÏÙ?-@×yeåøk;—OÓ#ûpÞíw³wþøÙ»}vnç)j±Z×ã‘Þ×û.* ˜Vø±®Y™­Ë´²ŸCôÛó¿YòMvfµœ¿Äuå{¿ÿ¸Èk˜g·ÂcÓqÉŒ²ïËr¿ ܼõóýÅt$yOØäý9îHæ=¹nÂÆuy¦Ê:ßûÕÚõßî]ÿ ½_÷2üÿÁßì|/þ7úÌ™“ýAÿz»Oþ»ýË¿áSþæ_Ÿø;ý‡ÿýfÌÉþ ÿ½]§ÿ]þåßð©ÿs/ÏüþÃÿþ³ædÿPÞ®Óÿ®ÿrïøTÿ¹—çþÿaÿÆÿYƒó2¨?ïWiÿ×¹wü*ÜËóÿ°ÿã¬Áù™?Ô$Lî[OqÞ,æòÉ Êâ6¶,O¥ãc°ä^W™ÌUK˜­|·Ãhå—úFgþ–f'þÆ^sró4­yyÿ%OÚQIQÛÙ¹™lÿ™™‘î·”ÛÙb ±D,‡D˜ÎN` jO›ÌÕð×¼×S7ÎMæÝº{ÿYú ¤Lî’5ô}¹ÔsßšçIšÿ•‘•Ré²óM2geýL>è™t* ®=ÄÈNÒ”lµ†øÚî‡kÙê±OÃØ,êòSÔXC™¾ GŸû—öTý&W«³)k™ÑÍfUIó©ù,Î[ר$Eú‡¯·@ܺn|ËEÃSÁÌÅêe‡?Éðb/R~¢-GBÛ¤9?ûD¹¹™söù?ö&–Ý,|–©ùKUlšwO¨Ò6­å;LØ6Z$8T¶õ+» Ç|ÝdÛ(ŽÞ2¿ùþ]K¿P­tª–—|LìíÏÈ\Ö>gå±s—ÑÌé¶JŸ—ÿeÞï©%ßR²boR÷KîV˜z6àô/Ñkb°Çå°åȹ«¦CÕÓFëÕ§—û§é™“Ò‘%êþ›/5ýõf>iWÅ9íïº÷Í’TŠüdLšVüµØ ­k+EØÁüÏHsޏ?5ìUm§;äÛõMúÓþ¥Ïù,¬„ÿÞÊ™×,tætßû6-Sp¸Ý;¶vÕ!;Ç»îb‹5Ås[8j\±ÓÈÏöb5ÕÙªÕ•¨øUpðdoËÏjçæ9¿¢ý?S§•KÿPé­Iß=-¾lÛ~¡§q=´‚µ·xwàJ$ÈÀƒ…óæ|Aï|5­ýB:X%¸îÈFwö‡e&j¹Éÿ¬™nlµ79Ÿ¨ušï0üÚrÄ–;[ÿ-|9lF¦ìÅ_o#,™|XcI×1U’WKŽÈèeþì\ÖÿÚf~K3d™ß§‘ÙÚÌši9Žk´{«zFÝ {Ý¥uËÜ^…:@­+› zÚª7†/ñx«Í•šäj9Ë<ë,¶eÒ}î¡Èvkòr™ÿ]ߥËv{³g~wY¬ËGôºow»·ngÝåß2¢ÄÞUÚ6ËGżlYjâ_,ÃÆÜ¾ÝuÎÏTGCæåæ陘¬z`Tw-G“ô£oê2ÿØËÌÊ•Ñ_’ÎwJYl[9=ë¿ßm(ÒoÍ&¤ôÂØ®H‹xaŽ€ƒƒ2ö«ÊÜçËZÕÌ—ï¿›ý·ôÝYšßýl¼¯Ôu3êÍý#—.Üf®l§J_|î ‹>\X…6Ðç='f=J°-v±j é+Ëþ̵[ï8ë·]ÐUDšW+m5¿è|µþ×”¯Ëcž™|Œ¼ÖÉ•›ÔÍÍ[õ3+×oO/êšow~n‹Ù‘½þX6ÖâF ”µ Âþ…ñ_3²Ö,¹j—=Ò£¥æFËÄroö¬•ÏvOVÅ-s233›™ófVJ¿äï:mÛÄV}Ucam²öø%Û¥Ø"­[ Ä—ÊVÎá‰_´ääç©ÿµj¢MÔô“û735™™‰”ÏÒHçfI<ÌÍÔši¥¹]Tš·ï©š×1vã»aG±Ih´/hí5Ýaâ…_´!ø¹1ñÎgê¥,¶­6c§é³e*±ÏÌl¹ù²äeÈöÿÙÉËÌ‘Ó9«î:—ñéjg <~Î8×¢uéÍzI¹O”Ÿ§gýΔ=×ýŽ”º~O«$³Z³¼~oÛQ§¾VÜ#½çIjÁñ(¦Ác·›ÂO‰š‹•x|ÓÇ”¼5ó²ÿPª©TóZd²ó¯ýgö|¶³1z.ý;2˜÷å~¡™îÏêIò~â¹™ió|›8ŽògÔ>ŸoÜw›åÒºl58g̰ÔËOàÄü>*÷/ê ÕXXt§æ2ÿ´O›——7ÿs“ך_“¥î’Õ'j’žo~ïéÝ÷ˆ€,D4fªôzH^wñ þÈqÃ{š¹;=èåDK)çæ>†Wö¯Ó;#-îÌV¿?2GPíì¦á“é/l™mRw"ÚàjÁ)[´ûÔ¡`˜¬E ™Ã7*ÊÔgê*h™ïí6©?¨þÍ”™ÙKô¿§—©˜æ=îËÌ}-Ék-fí“$}Qº ZQÁe¦Á†èÙÛ!2ôùlჭîx3÷†­SŒ*šG4ó³ûÙ’£ÛÒvK¿U•Ÿ*Êü¶ãe¬½{rý¡Ý¯ÞÙ*ø—ƒ2€±we™n9YaþÞ/w®Vj¾(©#›¼x?¸ooé‘ËýŒ¬ôt•r¾MÒ¾‡-zŽ( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P øÃü¢ôúÿÒú^€ò‰¿¯ÿ”( fm¦•ŽR⵸ZæWµ¿›šÔ²Ûr\¹’GnT~Gdˆ&Á‘ñäàÏ8‹Lð/éT¢¬±½OÃ5Q&‡“OÁ-ûsn™2÷]-ûž7ò[Ù>k[üuÒDOÚDbèúœ$™}‘·Ï¼†ÏRŸ"EïÁ¤±Íc–±Q–Fv²7&rÔiDÑK±ëF—nÒÝät驸{btÜF‰=§1«z0ESÚüSÄ®Ì,“bKTEBËd²ûXåËqÓª×NÞ.¤œ^"FÔ%í¯ðiųríi2/)QdŠcN·‰+2±ae\”Í@^`jgµ‰\²ÝÕtüÝIxüFÿ´½µ¾8­÷ »«ºo–:-}œxð±?àñV*EQv¹˜ì¿\Ï$6y\×ú…<Ê`@.¹ZòÐâ>¬µ=?,9ñ/Ž©«jͽ3'Á&Ô“_I£­UÜO›—„.ÇD9å-k‰u‘›8”[kÚç‘ –`ûgËäe§ååíÔ¢h‡¢^Û´”«nÞ· ·oíyQŠ*Ù(N,ßD,®Ž‘7Põü`µ|CÍ˪³F6œÙ<5r©äO<ݵ~ Xªçý5´Ä®3£Š¸¶=˜A…ˆu¢Ü™Œs<¹ùànZ¨Õ6´úÛ3`öŸˆµ]1ô»ÓqklÐvÃlmk5bœÚH¡|…þ ÿî¬(ò"BDSC-Ä œ%oð\Î× ?/ô »[{fìØÚ¡u•Á\ á{ذ¹‹GÝ4žÖú cÜÓº¶a>è<ì:xñ+}—"ÍŸË@~•¼@üÊà冺ypãÃ1¸e.\8ûÕŠ‘)Ž•QH³öw1‰• ™(]ˆ×vcrX±%Ç% y~,ª•tªâì߸ˆD‚"aíÛt…nÖt}Ã’!-WuÍŒVbz÷³åAæiy¼€8yž*Îîîéeõ¦Úµ6ÑQžnôü„öÝ×vòuÎâû>ì¸Ûïguxãkðæðqþ–>ÅT`©ª’òtÌO.´Ü绎É!Òï6A1VKlJÔâ#r %_QZLFs¸<>_/75H¢§‘ÅG»V<Òûev̸vUöùb³\eƽ؛²×²òó1§sró7)åÉoY•Wjx°á%4"jÍÏ/°D—ôö)]$ŒwRAë#ZO8ù‘î¶sž§ˆO—q§—ÑÙ¾xv‡íïÓÍW‹¶-ÿ²ö~à]•¹Å[xZÖ±pÄ­k ±x°Gáʸæe72ÒG¶#è~û†wé>IÊÍ_›ü7LÃòÝ×ÿÛ¤7K0ÛæšaÅ‹³/Ír· <¼•óý¹t,9ØäýÅíHf1¹ŽÄÇô¹eÍ:ÿû+Úô?ïÿ½_ôòüßÅßî|/þIúÌ—“ý1ÿe{Oþ‡ýó¿âÓþž_›ø»ýÇÿ$ýf?ËÉþ˜ÿ²½§ÿCþùßñiÿO/Íü]þãÿ’~³åäÿLÙ^Óÿ¡ÿ|ïø´ÿ§—æþ.ÿqÿÉ?Yòò¦?ì¯iÿÐÿ¾wüZÓËó¸ÿ䟬Çùy?Ó,{ó²ݱ•xæ¦gcq½Æö¸5^ åh5^~OU!dòkþæ¿¡zºD{e‘Ø£>^gs¾MÆý˵^ã·n fí¶m…v9Ye[›&Ÿpê•"à‰Ë'õë—•™–©?ý®q³ÒSz}¦”;WÒ⋼†ó.X¿HØ`!I;‘ñ/|{?Ð\ÜDr>o†¸7ôÐtʱÝk8œÛGÔÏþøÈ\–1rçF±Îvvoê+>‹+:n—-4CúS&3c‡æfP"K´¤Çº‡€ó,Y™súÂ<þW=b~•RR×NÖÀë™ýùG/I©“ÐÍÎê:ªZɤ–VÙ³zŸyI¦ßFl;‡æ2Ü]¥¬o.v¾z¤ “ÆÏh_Â<â#âĪééŒoOgÖ´tÿäqËéÉß“ÿ]þõòK'N|¼‘Ëvë°Ìuý±Û_‘ÞeõuzÉl•áÇL|¿eŽ>>_Õ¯^V\‘ÖtçÀýoëìÉ¢N†K2;柧û›.Ï0Ý»kó Òí«‡AwrcÇ=PÓñål0û|'•—3‘Ø#Ì?OúÞ–NfT&ÿ³Ó®?'Ñ|öaTÛ¥qö\™ÓÇxÚ'ß7KDÊˉ‡ík­˜Û!/n£3%UfjÈë8Wèÿ¹3//£œÄýNLÝV6wd¹™–m²î©GÓª$íSY\1ƒ ‚͹m}{šÊâ<ÿøyy¼UÍM¡%Y\ËÖ­Z=Lþ÷½Ù¬nnWêÖtZåÉ‘¹?%+Û5žÒ—£ÚEÛñdFd‚’r^Ç]„8—µ¸åÂüÅèñr~­uÊÊ‘#4Ë1óÿ¸~½?Tö¹Òée³*F¬Í÷}µ¶Š«ý6½»~6¹wÃh¹R,¿°ÄÉ‚Z7?‡Ìø¾çÿZ„llÕ1îOï?û.ÏVLÌæ.VfLß6æ#>R]\ÑÿKä:&åfàO~édæâU­qº¾1KÙM1÷êë*£‘V=Hi†¯ÿöÚ×å9™}6~“©._R×[]ÍâuSê’"}6&½ïß'3p»#”Eñ]ÁE~n7˜ßíy~/†“ôÑUW,ôɺrÌþòk[Æþš\ÔýCêvoS9›v2þ¬ÕÚ?Kï°L M’—­#{,Fvôcb9 $ã¾?—ˆ½šÌ¯ÓH±Š.ã[Ì_÷ïö˜­F¿-϶åýF~v^*rî“jÚ–émß½’=Ûq.ëÇ5³;2Õø\Il_ ƒÆ]3òz© '‡ûW÷%ý Õòõfl²FKÍ{zÚa7±U'{‹½Ù¸P°Ý8ñ±ÜlÁIÜòôik±GdEèì7JÊþè¬ý;òafºn¬Öù:Œ“ë:M¼Un_Ldɇ* yú!2qÌ?"Çkر¸Ç!&b`&ï=ÊäïÓ*¢¢-§ÏÝÊ{²½µcÝ—?Côíý3=ä–c漣—JíÌf½ßé„íæÑ™¸îv|˜÷;fqCp?ÝÌÏÓ«•UYíh+ôŸÞ[”Æ73-¹ïý3¦ÈÌÙrLéìßԚΠ.ÝËd¾Å©öÅéµ1ø4µ0ËúXçý*ïÓ¢]YO”Ÿ¬‡ê:ðùÞ¼‘×êI<9¥9hŸL·;„H[–íy;t3Y -{é|¡Ö&p·µï^dý3´"ºf6ì¸O·™ýë*/~^OKõèö»;¬üß–ùOu,‡›ÏÒ™3Ù0¹š Íu¤}!+jq"&d&AÉà=Çþ•]: zÍ,鿾³)®ÊnfvC:-Îê9¾ê«’Ë5V«½frâWd1»»÷U˸"\}£N×Ë€‹¯~+Ç,¸a]W&.WFÒJæŸ=ŸÜѹ ÊVLüœÎ¶VlëMM{šì»ómQþ˜L"Õ¹OÛîc@ x ÎÖA¢äBß³ÆG\Óôʈ•TË.…Ý“Üÿïl{Þ«”ŽÈýL½lž£ªÍgγ6_w³)-?M°Ž l²l«N\÷¸‚Þa‡°+Hpô ¤ý6Žú§ê9ØŽþó*£™_õßúL¬¦»ä™™~x{ÇpÎ^m}»Ðns·MLúíLxa¤~,¹óñxF»7.W+±Ã”ù¹ÿ¬êåeåBõú•FßYóÙ…2ï5Øù€P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( 1¿Œ?Çú/@o ?ÿÓú^€Ñ›eu…ŒNö¿ÛÂö¿ þZÞ²GîmøÿÑ dÜÛñÿ£@:ɹ·ãÿF€u’?soÇþë$~æßýÖHýÍ¿ú4¬‘û›~?ôhY#÷6üèвGîmøÿÑ dÜÛñÿ£@:ɹ·ãÿF€^\›Û…”6¿óçÇÿ-šW¦n6µ¿É@E]åFȱ`\ˆ­{–7æ¾~é)Põs?p?í?Р\ÏÜûOô(W3÷þÓý ÕÌýÀÿ´ÿB€us?p?í?Р\ÏÜûOô(W3÷þÓý ÕÌýÀÿ´ÿB€us?p?í?Р\ÏÜûOô(cI†÷ZÂEa ¯Ç…‡/åþ&€P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( 7ñ‡øÿEè ôÿÔú^€ðçÇÓ{p¿G \§¢ Øä:Êß…®d#oó¨ßmßõŠÿhó­»þ±_í€Û|IE„yÂáÇ€•øF€•£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïUÑø¯÷z¨Å»Õ@4~+ýÞª£ñ_îõP Šÿwª€hüWû½TGâ¿Ýê ?þïU²}6½ï{ðÿ²€ÿÕú^€#Úÿèµ[¹ÛŒä[û'âE_Ü;ê6$ ‰f&v]¬»Z÷ã{^öôÇÝ¬Ž˜é"ìýÝr”P.·G“kee¼0½íðúJ©$®‚ùaÁÊ¿Åü%Xig@Pw7xÇíâXÉL†Yž‹‚×7û" ¶eîV"Å`j¦ˆ–{NãùŒq“¢Ôe{ò8q;p¿Hq.J%™Xh €Ó2PÄK$2׸¬nwµ­ÆüÙz-Xå‚DÔH¬ ˜ßleL‘ƒ­rY ?E¯p溡ìûõJ%%ŒÍSrÒŽ<8ê)‹û}Ý`^_Ѭ4—@B“¸ôò¸˜Ë•¸Þü—QX‰ñÔö VDØœ½¸HÿÞX¾äŸÿ ÿø5¦¶ <½ì6ãE­X«UìÝÏ y'ÚÜÂ9bGÂöú8òØVÿíàÄ‹|‘XlÏ {7¹Ú9XHørÞ÷·ìËÚÿíìâTM)tÀ¶¡¥é¼ï1¤¡m½JmÃu}žC¶Vá~ZÄ5Iû,Ù²ÕsÜ"ôŒ±p°j 8Û…¹²ü5D–†Š›—¾ïªq­Nª„¯a>¥c•­~RÆöâ9{µˆj—ÑƤðÒi ®AÆÅïnaÎÞ‚ÇÞªRPÝXiªSµ¤5#{ˆq°å{[”r¿ r÷«Ô9¯ïpÿþ›ÿͯúµHaÕ[ìôÖ‚†šd¿JÖ°Û‰Ùj½–1c{½M’È ãÂÜ?’ÿo/éP\ÜÞ$Àmöq·Û@nŒÛµv;ú/zsííÜtõt±äËÓò·ñžxûÃå¤Lø<ÞÍónßÜ“%¥20„oœbUùÔÇòH}®kÓÁ£‡)U"¯, UÑÛ‡WXh €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( ?ÿÖú^€#ÚÿèµhñÜþ¥ßø‘@rŸTÔWÁ|Jò—k_‡à~ž¶¼Ál®Éy{©*Üßi®bVvÂÜùÔ|G›ÛªbÚOÙÛ·¬cÓ¹{vítýƒƒUú×ÿÂu†“h/¹?ù¯píû`úWÅ)¶þOG¡\¥ÿŽ™v•p7™ýšàû(˜Ýáìó´ çÛïjoÒ›&j%q»¬ÄYZkù<ä±Ì‹båýàç©ðT¢A ¾Z»g—µâ£¦8aþ“ö½&ÉV=“¾X-k—ðú—-ž5ý8êô÷oIð|Üÿi‡9U§§ÓâífÎñ þßëŽkîÚ~¤‘°€­­k[‡¢Ü?ÁËËEï1©5Ï»-·IŠÙ`,L¼#~‚/„–¡ÝÇF÷”Û8îï„–^dVÆù0Uv _"ô­±Ã†8ËñWG…¬Ì ºÆ©œxc¦²Ï–m~_æÔšK (w}·d‹ ŽÖ½îÛËc’„zRÃÅÌå<½ìGœß/ìÿVö§zÕ%òm§nOM»ÿÔÆÿðÇÿùT­¨sê%ßmŠWMÇ<-LJÛj»Ë/†¹¿ý{sÎóÙ»”¥öÄͲ.£Š‘ÈÆüs±œWåy2ö‹—õk¦n”Eôµ½·ÈËаÚqÐ}#î5K‹}©hÒ¼a±\ì\s¹^ùrŽ7üæ×EÒ‘óA§4аóÅÇè5Ìèp=ÓÛfàÇþKÖåÕéåÀmo•—.>–¡JlÙ>írÕvn_FÛ Rlãnçȇôk§v” î­náj‰.éµÇÝ#”9¨–pÈxÞÜx_+zFâ_m«"R,ÎåöZÔãZ;UBW°Ÿ]qÊÖ¿)crâ9{´@§gÚýµgN¤XÝ+^#v†¡3…íoDEnL‹˜|Uj¾BÎ]Ô”s{ÿcí[‰¶{¢uîÁP·¯oÞ“hÓÔlP•ŠÖŃ鵯n‹ý”h[dX#pˆ•¤JüJË ¯ðãjwè‘ m‹nÒ´‰_ì±°Ú÷þ{ãjMAºvͺÈ)“cê8ødY¸ð¶6ôˆý•ˆ5T‰ÿkû{þ—ýã?âU"À굸[…« DtÚãî‘ÊÀÔK8dÖÛ¶,ï·+KW†\Ä\xqÇæ{Õ±ò)kXi]·öü-¹î—. ‘|™|Šö+ñËŽ$W }¾ÈÑ4$éX›·Mª>ꂉ0ni> ˆ‡OÚ¬T‰¨°6Ĉ¸iȶ*XØÜo~µ¸ ¸ßÓT«Q @Þ»y[µÀšd  ÊÅb¸ìa!nƒZ˜µ]WÉl¸ß…íÆÈ‹oEí‰[þSÚ[Ö˜J…Ú)ŠõɳŒ®»Úö¿$†ZQ•–³!Ï–µÅNßã1{Xh €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( ?ÿÐú^€#Úÿèµìfv½­Æ×¿¦Ü~κ>•þð’þºÒ¿Þò_×@:WûÁþKúèJÿx?É]é_ïù/ë +ýàÿ%ýt¥¼ä¿®€t¯÷ƒü—õЕþð’þºÒ¿Þò_×@:WûÁþKúè mUÇ;ìWáèµÿš÷þðPP @( €P @( €P @( €P @( €P kñû(  €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @(ÿÑú^€#Úÿèµ¹:ߪ_ûÆ€£î®åfÙ6φ¥½Å8Ú]çhT—iN}ùŠö—vÛ Ùo˜†d2Ä>WËòˆùk¢it;vøÄy¶ôä¶Î`ñµŠÖ½²µÆþŸçàCú¥X©‹ B ¿ ÖCEä%v+Z× qåþ[P£¼\9þÚeÒŒEâVûoüÔ•*FµïÇù²¿ò^€± ({ß¹/ÛÛiÌ X{Øký™_ùÿTr*‡/‘ j—m›¾ç¸©Ûnr…ñ×wˆ8"×µùÇWO&{ÓãV´¤S´ÞÉ Rõ'éýÜ×î´e²Ö î µ¾Ì­ü¶ýa¸•[“ÊžR¾E: ‚Å €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( ?ÿÒú^€#Úÿèµ¹:ߪ_ûÆ€ÁÛV¦â­Ç>Ij°áöê,¸û:>ïµZš#­/$ÞØ])LßÀƒÜý´[ÕÕÀÕ€X¬J«¹E–<÷N¢|åáå0ˆðÌù9ª±ígcmiª:;sj‘¶¾Ì(Î8É+\᪌+6Âà¾EÏçG[•\‹étü­ö1š ÜÆfÞ©R¦Op¦â#мÄܧ\_#žeæê<5|U‘‚hÅ6ÍǶ\g Rêâ${ð¹ºÎ›[¶"FÇÛóä¸w-ÒúN´­{#kÞÖEâcŠÛ âÔÿ˜‘úÜø®’ æçs§ñ­8«^G9þ·­&cØÇmÌ7CrŒ”ãh•ÑÅ÷±Ù r®ßJBÍò€R.¹Â©ª­ÚÚ×±Ví›:å›—vXYízbÓØóŸ´Íâ'hg`+·]–°²ì1a È1Åxhòx³"κªéŽÇ ¯ç•³lÒÓfª7g{ø¦—•îâ¨êcm:ݸgÇY*V<>Í;´²Ëµ­îû51Ñ i¹ZßT„M˜R…a¢€ªÞ;SkÞ¤D›¹FT‰{nèÆcÆë;ÛƒüÓÇê´»æ¥&L›ì~·þR 5И7ºÓÛówðåG¸¹¤|.±-·åoÊC¡Ëïõ¡4¶;»])mGЇaØiŒž8Cnº­bó8\x–E©ÀNÂ\3Ê»<æÝ1}âþ £îŸþ Ïþ·ìÿÉüŸ ¾_þ*–”¥Oÿ©*‰;îÖÿéëÿ™ö¿ç>wŠÿ3ÿ'ÁS‰C.âî(ûq•(L€ŽÁk­{ñ½ˆ½¢r¤£ñàþíîzó;‚;߸Éc콄-{â Yª±i¯ü_ D°lÔ-}c¯«Fï“`ïþ›wm·©ÚŸb¼Èéç?F%`½–%—²!!˓ޮÏtËÓ^9µ²èýÛ%¿|v>×ÞÛ[6]éz‘Ùé· Övð=éÁ¡ÇõHr[ÔlYAE†Ã°Áíø)Ú¶¤ŒxqǬ>Ë[íþ^b2.v0ò6™•ùç×_Wÿ ûºæ–¿À»¿ãþç0=é&Ûãõëú¬­|Ï-,8|Ïw?c?è×Gi‡øÌCtGö$§Iô?׿ö_ýåt»þ$-¯ð?T/²¸?¹K? ì®â‹µŒ”O+…­qr}¿š¼±[_òñ|5j´è´‘—ï¬)É^›7·1ï^⋹ª2aÎ÷½Üþ[ÛÍ;ó[›}Ÿz©½RÎþcŸì’‹Nžýn1~î¿ ¿ÅjÅ!Èsýò‰Å rvÁ³Âí;ÛŽV®6h¹²÷½Î|j#*¢ö¨ê‰Tíß1Ê®T館bQ6…p»}<Ì;zn»µÿÌ>|­yw;vÂÛÎ!\½É¼~ `¤#F -K·}–µb n¬4àí¸º'q“â—uIà‡‘*ö#|W!l¶Y/XrsÓ/ʘªí´ä\>h;qt®ãJ…/B-÷ ‘ßHc/Ž+ÇÃŽ|¼ÿ 2ü«åw‡ÚpÌóyª;ÊÎÜ-ÃÑ~>›q "±ÖÞßg£í¸ZöüW $¥d±Ä‹/æôp 6POqötéfÙÌ– ±.ðRÓ°Û‰ @™Ì¼U=ÈWy/·6¹.ƒç¦+IÜð|K(ìV#æ©Â¤–ÉåŸïk¢÷ÇÑÛ¶éÍ<§WRP 8q6[‡ãè &Pöн„®VôÞôÊ@P÷¿m߸vÓ†°º×±®÷û2·óþ°ä5O*Õ?¿iï"¯Êï N®µ‹¯}³wG/íõ¼<µ}ÿÇ·kDwݬŸ°ö7lß·¶ÑˆËØœW¹²öû2¿ò[õFÂ5n_"yjyTè* €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÓú^€#Úÿèµ²Ä@v1µ¯Â×· ߇ÛÃüþjgVÏpÿ«@:¶{ƒø¯ýZÕ³ÜÅêЭžàþ+ÿV€ul÷ñ_ú´«g¸?ŠÿÕ [=ÁüWþ­êÙîâ¿õhVÏpÿ«@:¶{ƒø¯ýZÕ³ÜÅêÐÚÃmÇ!µ¬7ãè¿ä½½Û=í €P @h—<вå,¿XÆÅn?ÏÀ¨ŸÝ¯þŽ?û þ­¾&Ï Ý‘P¥íÂ÷¿æâ6 %Ð @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @(ÿÔú^€Ù82ÅrãÇ/ä½íü–þjD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€tKø¿zèD¿‹ñ®€ÿÕú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÖú^€“Â_­ú-@sßT÷¹{mÎܶãÒ”•Ø€øX¸_! ,Aé rÍr¢$17ÄuËDUÓ…Þ?>_Õ-çûŸ|ŽßÞn³òû_ù·,ÅšxéãÓg†U×;É/¦}N‡ËxjÃÔ9eyfôI­Öù/?f^ö§Õ;Çí·qÞ,ùûœë3EM¬ÀË2«Mx¨1ÏÁøªó`Ž‚ak¶imNß#-UQUq+~ ·}ú½Ê‘ºlqXÒ9ëpX 'rb³rHd~^:‰ù¦#P¶š—sWŠÕz/ÓÊ]×/s²Ò÷cf®ykOêü›zÝÓºG˜ø±F1­@0$«¶IÈj¯¤"%ŽDrYý–A•©.œnl÷eù¿[X·7JCÊË8ª:mçêÎ×·Œn•2·ÌM¤­PÓv2É¿Øö]x³ÍÍ—³GRª‹rÓ®·{·„„Òˆ¸©öŒg}_Ù‘ádM-Ç-ñ•›‹åq“ág7êåZ䃥µ¢jpcííÝ)¦íV§ÁÚž&¦Ý#¹¿3{Œ)œÅ"ƽ2ØBúfäE–¯=(EÅ6œMšŽ@åª …œwùŠÁï>â>õ‹²MŒ0vÆ.EÜO²ü¹:ÁйK˜³#ö5MMc].ÚÝëÃ5e–ŸkîÕÒñÆËÜp7»È¶ÞÝ[ÅqGo),sˆåÃÞ ‚³½|޲jèX)Ë+»¦mûäRË_sÛZØö½Ämv^×|Âh>8òŽ9åR±s[ Ì÷{9³tžïçl8´‚9ca¾÷îeêrו¸oÛ»¡›X¾>â×n×!1@K6’ãbKQ y’ ŽÐsc]Ql¥¥{g›iҜѬ s¶žç7ÅO­hÂ}3ó-ÆÓÖè芈˜Ç`Ùf´Þ š)Çé½—'#5F±,ÆÓº’7ðòÝ-ÛÎ}N¦ZçéTk“Jl9îÝu®‹1inúŠ}÷¾£ˆÒÑ2_MDž•’VíFùB f¦§Œ0Ë?eWe½5ßòvê÷y’ê&ŸðWp[áöIWtÚl«íò¢¾ «¯TúwÌ-|L–Èͯ,ˆuì`XbU¨‘M’cü{v›vËåÓù´Ÿï/å™ÿ ÐëaÂÞ=]<²áŸƒÙËÆi›W§ÏÕ›ÀÐíëu9:RøÜQ÷os΃}ÚÊ‘ U –x‡—ªf>-þ×0˜èHý2eýÜ2¨ò—¿Gйûþ÷Øi†ÙÜ[¤4m½÷¤´Œeðì²BÀFÔ€”i°‡Xˆ[¨XcÚy|Ò«¦×¦F᪽jfºâ\°Mi“F­þÖŽ²÷Gn4yÓO6˜\Œ¸ZßeËùÖ²¥V E\ {¿ ¯qP‹•ÛÂ÷5¦­—½wºXˆr†ŸJe®ê;pÈ 5’,r„'Ü<@Hž}&%WÍUßWÅÚJ‰»×p†ØÅFZ[*Sò¸%8eqŒ¹=ˆHd61ˆ†U=ëÝ»]qPÑÞݽR >£Eu¢„h²Ÿ"eŸ‚@C+s²d-¤Æ‚K<¹õ´OF‘…šš{°·3s2ÈîïÅÓÞ7Û¿#µ1Î,y“&ìŒ]š7MôäꓸëÑg–EÔs–¦Tý˜Qû¯³ñmZÂã?nŠ¤Þøµá”Dz{‚FôÍȤXÀQ3Ik`ØIv²Pf¢ÃÐx¸ÛÏ›ÿfÃVP¥Ï?üky~AÚ Vÿ‘«þâÇóÝh’ï#˜™1^šî²ÓaÜnÝv,|y¡-Ä®mî¦[|/pv„M´nïO5Þ£H}Ѿ̃5©ŽÌ@6É2-lFþ`ì³æ·³‘rø>ä÷*5ë.÷VoNŒH¹‰Î›òý§ä>éa„&í;å÷i­b,ØvéYlâ2L†!=83P›€³<±¯R¢#àšYUX[+¥Öš[RœÔEmÊ”ëè§Åâ;NÔÜŸ<%ÞIguLzƒÑkp.<¿Íø«‹tµÏ7üg…§GZTÙæÊcüN4FïeÊqZ,I.ˆ$ ²î»–“<½^³·Ë6t¸ÌËGÍ­mP\v{kkhŠaµÛÙñ»ƒ¸“² .ÕµÇ%¶BÁCb+ÄØ6æ °‰ic™âa³`JÃöò”‰¡W 9œŒõŠ6ýKJT÷6ÐW½¥ñyácÉ—×ÅÖÒ-_àÊQˆxÄK-n˜k:Mùº{V¯Yæ%|Þ‰·a6Î.ÖGwÄB7 $,¸m|uxZÜK‚ÂO•ÍÍå°|xsþ*Ï".'IÍÓ)©2¢%äGqGÙ#»¾®äC‰*XÆÆÏ4Yw²îCfáu±ËÓ3ɋ͜”OZI¶mp‹ì3˵gV­¡µwD©»äͤâ˜F޵:øp¾yø¼âgÃÊòY«‡—FéEUºõg Yíͱ-ùš°TD¼Ù¼^̸§Ô%îýÍhé#Æ|Ù¦¸ú|@/{ˆ™ÞCc‡9àdÓÀ¹9k#û¯;µNÜkµ­åÏPæíë6תékßõ#jacîÀCQÔ%·W[ÑbJmÇWª ™‹[y¹¹±yU/S/Öu,»/uµ›qÍqŸ qÙq¯ÝcݸãLžõ ¾KÛ;Y`¢¢/+1ÌjVh0ÄœãUÀAX‰ës3 ôZYÑàš_„<ˆ¶Rs¶Y/mìGÁß36ýª\ÕíÒU*0Xì·ÙWÚÿ´ÔL‚I€ðóê—ÊÄÃ,ò¦³ÚÎ5O–kÛ¦aä]—;‡´Û6*:KWÜ&â¬v2̸Þák["ÏHš¿²†"¸©…Þ«{Ô‰1%D6+ÇcÄ,,ÆÚ˜[M­bXJóR—˜‰òæ4]±ïbM/‹QÒír„ÓÝg‡Z¬VwœÉ´lP£n÷ŠaJcϵúw8@@ÊÃv]X‹MâXƒ1#H©š~S tÈê]0ÕŸvŸl;G›=ý¶©7wrËÚ÷-¾ x¦õLa‹ n¶#åÔr¹‡Ïü¬°óq–ét5fçc9f«i’ß1úiy]ìÓ½5Ò£`ú€ÌÛ‚d1vžè·•`]”×4FQ[0qú4W¬¤5y˜ÜŸk*Fë·‰ÒºoŠzJ«« ÖÊߊRáÝïN½®‡Þ·@¦ZÁ¢,ËKó:œEÞI8c’ž6â !ÆéÞ±¯ñ®O/RäÝL¹ñÚ#«kV÷‚ª}W6þ÷aí"l§ºm” µ…ïhíÓ%zZ*¶˜´Úà @^LÁ¥kt¢l±Üwý®YœS’ »Mo\ý½†ÌtÞú¡@Ɖ±;-J]­saÞ×½–n!á"6)`$l`5O– Û·Á¶æ´Äî‰SýþŒ«Ë"3ÖÔ)Še—Y変%µ‰8äÎB4µ˜BaËT‰Bò«wÚÙåÞ¹Šf’º#èIö›z]‹÷šÚ¯2lßßR[€`â=²ë³Ãn,»-åÚ?àÌ™äóaæ‰ JiD\OéoL™|38ÕѺÙùzœRJíö#}EŒóãh²†5¤Þ!È!]– ±èXKÍÖ1&b"Õ)ŠçÄÌLX+¦Õ {?¹ÎõLumjÙöªâ&wFé" ¹qÏ‘$–ÏE¯Äl—·‡7Ùΰ.Z…^ÿ³{¸e*#ég3ÚÒ›gú‡c8"^å2ð“,ÉkRî@y¡XÞ´-™/ä 2æòu1f34E|ŒµÃ8—NÓŸ.ãåìâÙî†mŽùäÔŒŒcÙ|EGòÍCPø– &–ÉËXä•Uí§]öІºî<¹åºQ5®ìÚÙ—[Õq–ûÜ>Ý•½mLû"5É<~ËØÂ÷[Ä%âÂc\óbÔýÇL”G9qJïß+ˆÛg{Ù “R¯!w$Šíg†® mÍL` ×)q¿ã]³iWjEÒ^‘½›znc†\U7¥‹îÌîÖ¬kU—<è½ÝX@b‡ù•¯uÛ…­qµ‚í2uˆ­†ŸË?j…J¦˜jÏ5Ù)«~vJltGZIoO¦Ù6ɸû–^×¹mðcÅ7ªc Xcpå°.£•Ì8æ|‡åe‡›ˆÖ7K¡«7;Ë5[L–ù¯ÐØëKÊïf鮕Ô`vÜ!‹´÷E¼«ì ¾¹¢2ŠÙƒÑ¢½e!«È¼Ææ-ÃYR7]¼N•ÓxSÒU]Xn¶VülR—ïxêuít>ð…º2Ö fZX™Ôâ.òIà ñ·a7Nõryz—&êeÏŽÑ[Z·¼S금ï©1S›o]âªAEcÅcp‰èX0³:†ÙŒÀ@І‡˜"d-“L!~Ç7 ‹ò·X§$±Õ„Ú­r5óp¿oVÌÛ êXá#¯"#âèñK,»™k•ÕLç#Îh’¹ÜÍÓzy¡yý=ø5þÝߢ™æÕ%wŠ’×n$Ã%aÀ WfwÓP¤¢²BXÃg—¥««–€öi»/o†Êéå”´ÑÙµ­í\˜ªÞûÙÖŽJRzßÄ·Ùw+©ÏZHÀ’rP`vÔ_+5^!_–E­H¹6¥wêö•殄]‡¹»žÉjžóŒØ,TìŽOI£qK2Çt•ˆsÃÄœE©ò<ÊÄÓ¬öUΛbG5úí”ÅÑOüI/ÚNÉ6ŒÞñÔëÚè}á t e¬"Ì´°/3©Ä]䓆9 ãn ÂtïX×ø×'—©rn¦\çhŽ­­[Þ ©õ\y½—)Åh±$º 8R‚˺ìbZLòõzÌß,ÙÒà?3-6ª ŽÏmm`íL6»{>#£ ?0Þ¦SæCŸ»~K9}4w‚ Pß=”’7ŒƒË>–RHCMdÓ–Å[©÷˜ìS/»Ça¶ë·6ä‚Âî&ìµÏvùdÔ;Ðpî†+fͲ…­\\/`ú3ÎK# ÄÌOHDµYyun„V•/v½-©&—.xlU0‹»;v«Þ«åÖÞ÷ŽÁYmˆ~àLUŸq`µÅeÆÀlê™2OÏÈÊä*ÅѳŽï-ºk÷sÓ/ÒeÏ©§øò[áv/UÆ[ïpXûvVõµ3ìˆ×$ñû/`# Üo—ˆ FlZŸ¸é’ˆç".)]ûåq§eï1•xÊ—Dn¨<—8BÀÛØu/–ÃjH—bh„”Ç,D¹rk»ÑU;¥:Ÿ›ÓsKçbªµ×uZý¯XÖ¯.oc÷Â$šíd=Q¥q´iG`Òip¹ƒÃPD‰E! ãÈ\ëσ•Q«uÒ«¥u®×ºn÷˜™Fd¡Þ•ß¾OYâi·»á®Û` %û†äø‹ÑE–7µŠÜ5XNdXá¨y`±=BçÁxãÛ1 «æöíÍi“L!Äö·qÞ­%žßß0g1+X°uÐ×Zæ6I ¤¡‚E˜HIŸ8aÇPå•p5´ÇƦpîÌÓQ`žwI²ým«’Òùfm'›?|CݕіïþavX†Ö%ée«y—&:|¹ù†JØ,ºO7¼ñÖ“Äé¶ddû'ERP €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( ?ÿ×ú^€“Â_­ú-@RýEíÉ˰ËÙáä„nËÞÃkØ„¹®"eìûµÏ1³&óW…NŒt«þæl§(?InèûT:-"OãyB»ÅcŽi,óö*ߥ ýN–§^^§§&¤š’u5ú68J‚ú-¹+iÚW#qÚ…Ë%KlV‹JåÍÉ©’üAåøªÞèºd¼Æeºo«KLÞåáv5´Áq¹í—_oi¶²~—î—íÞ‚9Á^çÖ.m…H²c  YhëÄGç77µ³ïb§Í:j¯Rïh¤ÒŽEùÆÉOo‹â• °w‚-úLóÔoQ¡²®x E†å˜d)Õ?/柋šD’TúG?uÒóRtcàö¹n{SQôë¸ö+ÁÜ;yðï=[zàÉ Z—Uì¾ajMVÕË/ä!«{•\èX̃µÚö6OgMOµ ‘´É¸3?nÓjOÒ]ßdFÛ;b•÷˜W}Ûy"VKo"ù;åy¦_/rö±©J ±#rjÁ–³µÜªO¥ÖçêÓfgPæð|Z¨ê~œö¦å° óÞ—È›,ää›^ÃÀ„ܘÜ}ærûyU$¨Ô»73¦ tË…¼¦íÛµdÌîm»~Y.Ñ¡¥ë1½ïîË[ -Ž<=ìŒjréW.65œ/œ=&Fê=Ïâd…ÆËù¯þoÓðÖ.ŸC?“û=}_Ûûú~]¹1^új÷è³Úbƒvì‡Ìß•¹­€0I’•~9cÜŠ£rfMË÷Æ™tªñ3íÎŽfïKœ>¤DÝwÙÍÕo<Û™5Ììɽs·hěȣ-w+ N0Z–˜‰®~a €;NBðѪ­D†»]±šùùeo‚ôå:®qå¹Îõ¥æ!n}‹ºwOvíhƒyA6¹9bQ˜×éÈ»e:çÏ}1ä3 ?/&»‘/*=s4Ù©Ê–öµ[úV:.Êæq_åm >›±ªsU×#ŠI ˆ»f–ZH²CÅœÐcHÇ€jdl?/b­Òñš[–]—.ó3ï.S.].êÌt.fµPðHÚoÞ/ ìû”íÕ[¾ðGH¦-*C ¼I· V±¬T_e@ P¨½³&xF‚E|®§r×3¸eÖ1b°Mýè+7m¿Ó]’¼÷–pnkß6­8RQØ—‘,H.Z¢`õƒÉfìè3PKöu)¢:òþ\ÿÔõµ]«¦³~d³ÆÚ·oLÚÙ]Ÿ¸î1ç>Y$'N(þX–´ŒX– i—˜dz æ=Ö  ÎÊCî\m‘±op±s‰9ó{5NôK=7d³•Œ›‚²XåTÓiÎkùú’îØféFߦò¯ IQ¡n6H½šd“K|®è“SÒ±o.Cäá¤$0Ƶë*§~‰_z›»3W¼óWOï}6›ïWÅÚåW;?ln›l½¾CZ4"²4†1‡fq#‰¯ˆ;_†žŸšÕŸ·™lt¯™É—ù(û¿Y<Ú¤*wz÷næ«i›êå—[T±î]ŽT¹7=ºëêà™ÜA·½‚ÁÓjÉc5`n›qÇåU ¡c«'3ËÓÞÕ´RéHkOüÞf½Û6µJçöÞ麜¹»Ž‚^Èl†…)„À3˜ÚךdFx,ÄÂg$æ6-r%¬ÈnÉ<¿ò:­ÙiªØè9ª½Ù~´¿Ó%o·&fÕ${¯«†Ø­‘\GŠL œâvÍbÀð{uÝÎŽdÞIÁ˜×³×81°dº’ï¶o;HÛlàÚ)qcCz_%¯9LYpeòÄ–0žÕ›gèÝŒë{‡fväè MÆÖ‰*Ï<¯HÙnWákódÑñcFèr/¡Üí”Õ²©Š^\Æfz…>íÙÒæBß"¬×cÝo}Þ÷àÇ?oÝ›)„·F|d,™s½›¨œírÑÓÓ!n¦YkŽ?»«Œcvg®cw›–É,„l!zVHïÞçMÌU÷GbuÛ¡nëƒq»P %η .2¥šüZ¤-^˜e‚üÊæ‰¦%škÍÑ&ý–Þo==Uc ^fü_T/éÌ©Ê ®ZQ·,N!G /ø¯TÈË©iMùU ‚Ák5K^ó¢©# E‚˜+͂˵‹F£uÙŸÈ <yùŠ‹¡)·2fUf|¯‘ὊmP‹I¬$ÍÛnl:¼MlœÓWDh݉?[o|†&ø²}­Æú‡©Ö£@±TË÷ðòýŠ´‚:)Ý+xÚÇåsu³_ö’¨ªšmGò駃'+/c©<Ä«öt»íE·f½RÜ:¾ï-B¤cécÙÇ(EÑKyŽ*;7³¥ì—É5— ¾4NKÞü黳.a.úǵð^jÌŽD¾¿ËFéEó;3ó9FŸ¥ÍŠ1ZÈ{væà„˜­ |qVXº;oIbz„,]Ò¬°_?³Z劬/Õ5æÒŒß²Ûíç§NŸKø^ù÷\ÝëZ§TþÖ`öÛvµN+bÙKÌć+%#Š—™x@K—ß*ŒÔ ž‹Z¦ä¬ŽE\SSµ1 ;ï-Ðué‚6ÚVn¢Lîn`¬(Ö±Œ¿0ØC¯'Ù èç$ÊõÖç½ÁwZÝrkU"jòAòñµµòWDNÁ‚§îw¬mËaª¤qmÆTÛñ!`õ^XrŽŽ,Ek4ùâÊWôy^æë±¹N-ú]Ìïµ|'ð5ú®ÎÍi{Ü[LÉS6ù°¬£¼G°È8¬ÒW»‰†y`B"¼ ÆètuUœùoþYŽÒÖGò½¾¹W~Η}¨¶ìת[‡WÇñêëqðñÔÒåðã©ícÏZÕ„¿V•p9…¹c6»}DaR¿¥öL†(am¦–I'Úc'$DϨ4è²;ÂãrJÞR‡MxžŽJÀó.˜]éÂÍù,lkÚš[“û¹Ìª:ø®âÚÇËfÕ©vl»í­ƒšõ¹u–¿ðê˜ø~f•±÷u=¼y¨Êeú»\þÙNX«µÛ/å3+ÄÓf÷Ú3&ËŸ)$‹„¤EX­ÃcÐ75©³ƒEZ›ÌÁ €rÄî‚Õï:›²1œMs'nèŒU<”9œKͳ{˜ ÿµo‰HÒ ;t˜¸@ÆHv­F©­ËŒ c ÄÇFy?‚µ4kJé›6>vÍU¾«¾ÎVROzá‹U®—rGKOÉtþòk¤ úvãbbmûi“"Þʈ6áŠ\ZÆI´hÎ3`† F–a–e©åSV ‹­7#Ù½nÓ¶[{©‹¦;gâx[Û nŽÐ’¾á=Îæ»í·âñW§;J ´So¹§Óëj0êYJ/îfÆb·33óYNÛÍ~˜sëtæ“ÇùYE"þ—Ù2¡…¶šY$ŸiŒPœ‘> Ó¢Èì[ É+yJ5âz9+eÓ ½8Y¿%{SKrv̪:ø®âÚÇËf×»ÓÉÒ'^J—RuîÁÜ”f™6Y™u:4d‚¥â»tÞ|¬i¯<€™tªz-ÃçtÏS~²þó˜3*EôÙúªzt>Õ›gèõÎëm븻¯ÒáªZ:Y|¯Fž®¶ñg‡%»Ó{ŠžIw‚÷ú?ñW7)ÎѾ¡R6Ü"nPžm¸”¶°HA¤Gt5:‚BÕž óQåb¬êU³6UٟÙ->ó~§UAª°X§«6 ÊuÊKý)¼H‰u²â*)Z}±Æê¹\“Ñ›Ã=RN#Ê óy*Õb«­zÓì¦^¯RÃ]r©±ÓžmíšÝÔÜ’©mÒíZ³ÒûFj¤*Û¹L0”¡H ÙÑ…QåÄõŒMcá_œUžtÅ í>ÊeêÏKôrÝ·A<ž‰©mšÝ?&ôóU­Ò?µ˜=¶Ý­SŠÄX…vRó1!ÊÉHâ¥æ^å÷ʳ5'H'¢Ö©Y+#‘WÔíLA·m»ôãóÍ&w7–QÇŠkËóXd:Òrå ¬È=UVò=¿‹{‚*æÈ±¨ÔÔüµkåãkkÕ±]=»ôÆûaEEáí«WôKZ†òaµÁZ‚qÿ†ar1Ï Oaù1ÕÉxåW"Ýrµ[+lVÙw[õ|ò·ÞTšmš§ÞÁ6õ«36.ÑÝûlcº£HwDˆ²ÖšÇ$e¦Ô8S"øù­Y rä<ǘNžèªÂË«Ù|­fó]#pË-éèÕÓ§Òþ ÇOÄÓ ŸN¥7k\prí¸‡=ì· õ:4ã1S¼ŸxÔ¼È(El,1$t×òæêóæ±»,¤År¬Vþ‡3êóÞž^Ô¹TÙ®Ô…”Õ›r¸$“u˜¡í~Ce„äëco–Ç¥GÉÍâ¨H£U×-§æ7Ÿ?2mVåˆ$S î\ºvr²Û.³óšQ ¾³£ÔÓã†|9ôóæÃ/Un„twØÃIº¤¡@( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P ÿÐú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÑú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÒú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÓú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÔú^€“Â_­ú-@Swîöí“lëW‹ã‰\G;Ü Ë[DCȉdCÊ9ûœÔKH˜/+½b‘4.ËŠ½÷ê¡ÀœÔAzçÂX2é~—€ò²ß’¤ÉY-‚BÖåùtO'§1¹NÞ—Å=ö©˜•ч=ºÒ{6ŸfbhwlÒÞãíE«C¢“ÈŠêâbæÂAòxÂÔ ÓÉy•b-¨Ü—™ìJÝf¾jdq*ºZnY}©¶e¿3L6¯¨Ñ·G›h’“Q.KEv Îø‹N@dß([¡ GánVòbI›­Lþ^ÉN¦:Š­v¬®“´¶oË.d–{›F¹VCVq˜IX´qÕg('GíÍNkk:æ±THZ~†êÕ%z¿9öU”ŽžæÔí™zŽ—µ²¯xßål€‘{Xþ†5åO%€fck]b6Øc5]Éá„~+UIµ42¬yŽ•®~Ãf~l¶g˦BQª¨˜ÝJœÌ½çeååÏvkõ–mï8*œÝ¸ó±¦/WsÇ’ëµù¬'ÇÒÀå"uPå•åùª]Ã9­I•>rÏ«ÅT»+¯õ2öçn²%#‹[@:–Ô´aާ Ÿ”AžåtVéFãzåï²k\lJJ,R)…·=‰6ŸîöÉîï8©Ýg%¶æd+Öµ‡JÌ%²@ªåž¦zIËåãξnj–ÕDÜ7;þ^\Ì!V —n½ÎcyÙ/ ª'~–«µ q^Ó:1µŠìãó‰c¡§çêeòy±Ë–Ó/Ö¤ÍásêÝËðšíÔöºtýåMqhííIܵ°NÌr |-…𸋗µ1á%€Ë×ÇZÜø($ù|ø—#1æ çøy©äEÄé9úfµªª‰çDw}’’7{J ËrÓIš˜Æ«’ ¶’É o5ÚÄ]ÄFL-5uø9•‘4$WÈ÷¶m™w¹I]0…æ5Òïæn¶Ë-9¾2ÞGz"ö]öÔ;q»28F°r¨þ[©dqó1,bÖ,Ë墤ª¨·m;âÛÅîç».ri†·«kf]yy_-‚÷øLÛÿ9³-Ñi]×eí{p ["¹ Æãí9û8åGSÚm™qMw­I´&ÉW¾£e{n|ºMë9 XÖ±4ÇEŽ% ’ž)w7ËäfÑÚm¦^Ãviê§ÝÍT¸šbUiš–»¶®#8æ¹2DIQ-*Åxìx……—µµ0òÚÖ%„¿0U)hf"|¹…!÷µ&—Å©N×)‘ò¥œ^j®ºÎó™5to©Ñä®4…Á›tηÇ‚üÓÆç #­¨²ä?5਼„ΣKÃL=îSíÞ«z’œ’ÇUÒ;j*ßUKT³­Þ‹vß.`%‰“ô Ç-kØ4Å&å¶²q%´þg½RäUD–ý-â\ºµXæÌýJƒ{à·kvijøHŸß”lÛsÛº]ÍvÜÕÇVÈŒ…g® ]Ä4. Õö1XŸ&AW¡ÊùÇ+»7ÊpO¼J"§}©QôëÝËß÷MÖ½xŸ¸÷¬hRÊsž¥ˆ®Ãæ1¶& Us0Á+Öi7M@¿ÚT"Ç»·­{ݲÙÛ½Cj7ÙGñ»¦Î'ûN•¥NëõÊŒ.ƒäñš¸Iéd+cǨ‘±M [˜¼‹ÍÚµ4«p¾ÊGúù| ué v„_;eüÅolSê–{—|&KÂ%¬R˜¡ Š8ޝ™›A W˜a$ž?dSvÌ÷}­ùdÖ¥òÔyRi/{<Þ©L¿¨eVèOSåB†Õ–ªAx%$”·2¹šMÜÄÖb‘àcVT‰¡#Ù{ÓÈßT.˜K¦,GËÆnïY{¾Þ—î±æYV ¬aEXÚAß…ôdj¬© òP V«M^n^,qºo>Y~®öó>cœê-™Zéò(©³$Ókéåù9[mÎÚapÎòŒ¤MsVÑ=¼ì _̯qV‡ÄõõUÌ<ü¥dt"¥çt÷æ“Ù~ÚàžeÑOSvY¹e{všg3¾v( ¼iÛ„Hò†jkÖ&7½²à`GèôVþÀUný×m–Rw‡ÊöôÁ°]–Æà–x’ë9væ'味háȬŒ±EóNÍÛY{̯/eͼÃ{Ò)ä¥ÛΖ}ÇÒýZ®8®¶û¼¢Ñ7ù¬%@—,VQ.k-¶ŒFá®.×Ñk²n!¬JÇË«jAQ®´ävæoÊ1šÔ³£¯˜é°’«W's!.¾[iÌ7WìòÙ¯4ùýÞØ›ÓìÍKíÆ:`½µä—+EÀÅQÕ¥ž™ê2 ,yešwŸÓfãgâ9ìÊf¹¯Ñþ \×ìÍ#xdÎ{Ë ï¾!ì÷‘®·Eº,ÂXX­“ËMkËPØž˜–@ 'õ^G.JëåE[ˆÇm{´—gžÎµ6þ÷"^~k6g{Úý®Yf½%}m»œé‹¾ãÓôhy¸,»žEkZÃ̶‰ZÂù‹Fâ!†èÒ¶ ¼NU«ðhÖê>Ì•ã´èNêyjÿ›‘ºÄ³g1¼·nlÆV7µ•ki%Y†÷òùϗ浸ûÕ*ضU½öŸð$ËÖ’i[dØÁÓ'’îÕãsÜqÃôÓp´Å'(gàâ.7±ÄÓ„‘å·šÈéI„5²æö«¢:.G-¯œÖÌê7õêõ2Ù—öZĪhTJ~‡êÛ+™ÉÕÍsoO%R—»¯eÞvò3®AѸ=ÊLj\8cqÑ”Üò/Ù§”½žRÅ‹})Û|¬Ìáå1­ß*0‚¥Û_fÏy–ÍÜÚÈ0û#q^ÂQÔžó¬2Öã`»UpùråÃA S|¿®™Š®‚§~ŸÎŸ¯/ãf7+rbZÔH¢ée–ìåÃ£ÎÆæ;^c~ÓØÎÛ÷HÒ‹(ã°½¯ä€^6¿t£dYe[.T½c§7C.M¬ÃQ#kç5­¿þLìÇîåÊBïKÍ(“!ÑÕÜ%"ÖdܯkØÊèq-g}SCq5×ð,Ç?v¹Ë2¢yÛ.wÙ¹ž÷gÞ2l­f±§HÁ|Ë6^Û]î[´ÿ“|·^û¥´ÞבЦìB¢8((º/2$–Ÿ…«]lY¡wËA™ŽaËÊcÑ^ªå_¤µ»4²ñ½²ëZ¢WÂ%(˜j›•ómZ›ÑZ}™ºj~snœ·Rš2ÉY“ˆ¨¡,ý3fB’Ô×é¹Ûû6˜C^m¬Ü;21»5«2,uß»Sš½™šÚ¤™Ø·´7–.TƒéŠ[÷óAz‡eØT(I;D’X·CŸÇ¦¼°S,..gæ·1¿Ì1õGÒÖ7ðß?1îýÚ{ÔÝ¢@étwpãv1‡bQÝ#ƒHRbà-!źª ̼¦a‰âw"a|ûM¹›·±ŽÒŽÕ—ÇW9%;&ýµÌŸ'o´GÒUÂÍcë¸%h& v®F'ÊåÏŠñt¢·žé¾Ò[¿æ‰j1¬Ú•Ïu«¶ð»–º’úT ˆwM8ŠŠC>Øð%\ˆ^“Ñ›ÃSTõ€øWæòÕ.•XRŽâd­L¿¼¥Œ¼ËØé¨ÇJÚªmn£º›²ºlVµK§vl§íeÛl4ÜÈD’5+Lìâ¿h^1Â?µ§ãËÚö¨åUÓ‡§Ó½ò_IÁ—b[öi1”óÏ÷˜8ŸSµu%ìßpFfÛ¼š#D8ìIÚ1.Ò1ÂÍ-d¦ñÁ^;%fÝLñ6àat齡̼Ö=ŽêMw©f[”Í«!”A;Ñ-k²Y%ÕÄd;&óºÈ…}èb­[ŠfMm€’²ÁŠM£/Ì6jJö>R#ÅÓ½+šÖáê[®öÚ¦B *YÑV®[§m;MlÕ]–Zæf_fˉdˆÃ]Ïk;okß…íd¹W/7;GLJ-R.˜ý_Oø3Ø)˵ß?æõ|&pûNXnûªð›2ó-k^÷;¥ 9MmvYøûXct"jÏù¹wüO“[¨ìãô®ÔŸ•ÿêIìlÝ{0§ï#<ˆz#W®ÿi0E¨Q}˜éKnyìÓÊ^Ï9bŽE¾”í¾Vf;ðò˜Öï•4 ©Þ–µ²Ùï2Û»›YL‡»ŽÔˆïbdÊ´‹¶Zõ•I ã-MjÖÆb*I4»O]\èª/}©¾Ó1Ýi›ŠGÌÆOr«m!©**&¬˜ºytË©5§9—æÄa°·(Qd&*`ªç><ä¥DKPØ,X÷Á†:¯¾Z„„x)Kåéõ8s™ý[¶Ã’hù&k8²ß?4¾­Òض-ïn‘4¶{ÆÓÜNι´ÊĆÜ 5¨RÀ– 6EæÈ±.YNén¢º½+ÝÔ³fóªÖ³Eu3^•[´kvæ§É1w¨—hw;^Ë2ôzoQrvÀ8±d~P—/á­^äO3çüΧ„¦:E[­kxfö‹Y»<‡NÛž ƒDMK°Žç¨$A¤²aò¯â`³ZÞ—[•|í—‰í}\[§H5æVòµÝ°ïJWï]¡&n÷qI¬`ÞÁyk.9"äØW_NG3&åî.¥”ª®ó~ÑÍè¿ò¹ØÂߥ!»÷qküM—c70²Ÿ°L’âr·IqÀ¾Å¬#\GÑìÝÑßðó°«ÓOuvì×bvЧjHbìk¸[+Úö,™ ±äýš¿£Z½è¸_–ÿÃ{^ï ‰Ü©‰¯o\ßX›Ü{o›l±·ÆÏ]ÂÅo´oì¿Â‰KãÞÛM©›l©œÆ² ßf˶l»”¦Ùû9×Ù$íûɃ'n‡)ŠãŽgm;iea‹äM·$vƱqs0¹âµér^ijrJ$ai\ÌÍ—dÙÚšõ›-iˆµ"áG7k© ¶ló¸Ü[OpO·¾}¢*<³IŒ2mî–Ç4¨QÀ™––£¼;ÊóN]U¼Ç6\3+]j™¬ao±(l©çmZ¬Õ(;?fÝ·®ÛÛ6çtã·b†›¬g«qYÚ@$céé‰d²UáÈôr䮞TU¸Œv×»IvyìëSOïr%çæ³fw½¯Úå–kÒWОѾ¡R6Ü"nPžm¸”¶°HA¤Gt5:‚BÕž óQåb¬ë’¶fÊ»3øs%§ÞoÔê¨ °X§«6 ÊuÈ7ÒáC•mÁÌ4AЏ±.‡¹'ÂÜÒXËÇ4ã¬zb)Ôh оow¤c¼è~ZQ´ûo}$¯‘6÷™Ž»…m,¨Ä{pÛâºÝtœeÏLÈ‚ç3. t„½Ä¹n.Ô5³Ï"Ôç©jªKõs·îÞdz/ƒ©.ÑÖKøsfãéñLIÝûKuoæ1!-xáw™f›’Â,ÙDrJÇOQ±ðg¼5+a®›ZIº>9ëúË>QfKrîÎÛøÕ&½=¢)X¨Oƒš¥šb‹u¨îi v„Š^tœ®ª\nå·ì÷é÷Üä)v7](iˆ[‡Ív€ÈéVX‘PÏ—9`EUUÑÛV{=›ˆÈ*&Ÿá{e–Ý˽ßnÙ¥nðî ºc›×{ú@±°<¶@_ V:žüHÞiKÊDz¦±§iïm³q½Ö¶ÜLU¯{±f°%ÛÄôµÀ zÎI±|ÁÏÎ5NÑKZ½ö¸\rlVwx°üHýDÙn¶8šÅ‚U®WbUkØnõj(5Ò9lN BEÊT‡ùµ»Ù”²l;Åç’ª]{Öº[¿zˆ‡ŒF2ÂÓQºÞ‹ðÓ sa€ÙŒ‡á©U„crÖ¯i]ÂL!zÏnÜÄ]£»6ýÙ×ÏVÁ©k1LVadžª5Ázêðù©Ôuóy•CD~3v™i›Ø]„Èö»ÅdÃwï·i}áÊaÞ@®ÎºÔ–´ôïr\#­¥¦$&~òjc¨¼¦:pÚÕ.UýÿøöŒ6îøÚw®4W\Éö½Ôzl²™ÂÙ¢QLãË SLÇ~ìñ¨/wiqlÔÚµŽs$#Ûàöiâ;çi|€ˆ·ÉŒºšL²M–ãÅJ—péXÎCÄYŒkWwšmÜMÅŠ›•Ø)Ô÷ü]¬8j½E£`w–Öz׳¯ŒmK4ð<ë-&,Û†ž®~e¨ÑçP˜sVGDfôöeÄíVÕgMT‚Á{S<ÎÂÉoÙµ…ÄŸ¸áï`E#³Ã5µLKÅà+¦H)¸6 ÃÄñ.Bª†ˆ˜sÛßÔ;D-Ú,dŸQ¶E»Äئé‘be‰ ^6Àqóüî}/–u±HëÉàþ§¼°âÚÚ‘«y=¯fÖ*-»O{m›îµ¶âb­{Ý‹5.Þ'¥®[Ð<~rM‹æ~q«vˆêZÕïµÂã“b°ó»Å‡à˜'êÎÐk5L))v!Ëâ¡ñ¹:Ê¡cËÌO{ãXº;ý³Ù› h‘TD½g ·¬’v~íÛ·‡^<&ƒ’˜adžªÐÈW‡ÌA09ƒßØ.[_ÇÙq1þ=½cfïÜðv–$‘“™k©*c™½ÍÀæŠì\º„eË–U1íÛµ.ÂT<¤G÷æÌ ŒË>ì´Ð&G²–Æ“,êi­Æ†|ëÇPyË-˜Ò¤o ¯lë{F&”Žîö­\TÚ6Ÿxí£S¬Ã5Ƚì±Z˜l+ÆÑ–²“’ñ-QÒò¿ibèÿ›sÍM«Y­¼Oï—{Õ.ᘛz‰2æQR6$\DJ÷åã˜Ý|5lÀ! 5aª'ågËXõ•"»[¸jEaºhæ€ÄÅz›b öãö¾|BîãÊ<@tÇ"#ÇÖ¦d[¼Ôs¸;{&5QR>HÊUÂï¨a g3VT¤ ±ˆ‡¶×ÚÙ4Rµ²BÑ•ùMàȈ°ìݧXol"'7…{M/¬Ó^ÃßÑåm¹M+^î|…¨c¬Ûv šÕ©(³ÜÏ%bÆß T®ˆbsþ&¶m–Ìéx[iÃʺ®—¶·k¥“{Ëk\TÍÖ¹®Eî*¬Í†CÇP2€äj+Ö^–iÀõpÀ¨ºةDZf»57õtoa&ìûÔMáLÌ,Dk‰ ñ5±L°1Lil:ÕH‰ˆ½»v–¢ºg|í0ÞQœâµÖb¶2Êa)f\,+| ŒƒçF¸ œ=ñ¬m]ßgoÑh×Sßµ»‹föÅvIkîH,š[ZÌŽRËYÞÁ{…œ:¦#¦±%—!™ùbZœ”M=·MT‡nÜ»Í4n½ã¶ír¿/l)zvn’’×¹¦œu´°ÈL½ŽLñÔ ±;¢^ÔÃÚí+ˆ×îõ6t@ŽÅ–ß&,‰Ûú8iGÅ{ˆ€Ž«5lcû•Wtcq­wܸGz"§•òr»žfžÔM˜&±`¥kÞìCƒŠ¸Ønõj¨5’9mN ‘òÒæÖïfRɰïõÖ±S¥Å»jé³»{©{49‚š%Aq"ÙV·1z,{aŸ±S凥“}ãäö¸NŒDr¦±©=â˜÷’[ƒC9iX%m6^䥿KH@ÍÍç6 ,GÀÚ¥Ñûßùní9ͺQQ¯ãíMãFíõ(Ë–s¬rWÂÈu˜»•ÇŽª4nà, Xµ±`OåÒñbw¢c›òÚïY¾½–8ÕЊ¸eçwj±QhèæîQàÆ)²Ø)Ž±ÈŒùl6ø²ðÑÚ;v›W­I»Š”÷ÖÒŽ„Æ+¥UÞÑr£²íÇνkkÊ\ëæåñQt$}2ïkaí„ÆÔ°KÖ{v´ÜM7ìýÛ·o¼xL"<5%0à T1  ¯˜‚`s¾5°]:¶¿²ã#ü{zÄyà¨ÛÈl7SnÆ ÝfYl¸Zãqµ†æ+ÒÇ›™š¸b²ç`W5v‡*|ßû=Þ¦ýMmLqK¢ÿÚÜ´ëDÍú‡} Î2²c[€ræÌ0ƒ"çÈé°ò‘›Þ›Zãª^¡˜¼ˆV S · ù£Ò­g&Äœ|á%y?µÆµÒmÜ[>µ&víâØ®É¬ûóg!ÖqUf] a°ôï`p ²vªˆ¼Äéê†,È<¦`‡ù#÷eÆ¢—{O³ÚfšâýCÙe."³ŽËÑm‚̽ñ²ë¯E2åéÞkvXŽžF5¨‘î½gZ™éÅNl$ªÃvÖ­Ú°öu’S{ÇlT»@6•™•–›4¬ËøRR°éAÅáÒ'jf@æcXÚ»¾4¶¤Ç-SIøjèígkö&¸ó¸w§m¯€”Øn2ä]GrµïÀl§?ˆãi{—*˜÷ì=ü• ô·èÒ²Ôm¸"ÇëfLdeÉ1Ї²×ãç-b£}‘3ËäÕÇP2èø$umj蚣%^g5»®—ˆ´ŸÞl[Ãeœ½P²Ç_O÷×ÀÓhb!ñT®…‚ݵ…»n²ÛÖ°¿ŒmHŠ—¬ëvõ›ˆ™#z‡ n¦Ñ¼ UÝv0éÚÙêf8srQÔ÷šÔ›¸…¶w–×¹™.3K•zÙذ%þù-p-oOö©6/˜y¹†‹¡WD–µ{íp8ÄÒ¨˜¬öÞ²iO~m-°XÛY+»¯bŽá¹.ßk£¨NJ‡—&F€äøV9eH¯’Ö¦Ûm3 ð8ÔH¬õm—Yw¬g+½6å,'yhýU… lâ»ü³âf:¿³Ë™˜™–™Öf*±êüXfñ`en 2¥M~Ö{WE³n÷ ÷­­;°­‹®Ì¸ŠÞŒˆDLø æø—â®™‰"¯£µ‹[¶ˆËYûzÖwŠÝ“êÃl¾ï"ÌŠ»4“‰­–"+-b5-cx|´­‡©äüÀ*Ÿ".4o3gåÇfFÏd¤Òª˜#ʲöm«¥¶ÍÜP·›3£2¹¤¬,[j`^öÈu TàÌy€ˆ9ýšØh‰‘òvíð°š7^ðÛ6§^<¶Ønd+a‚ì^’å¦(ßÞjyü5©`ƒnÍ«f6©Û·j]„Ãvï]¯ji"[JÄ» 0L`.Åá)JبÞkäçðQ4¬=2ïáÚ©¼MÄg’;Û¸»avÝÓ¼ö½±ÅSJƱ2ඪÅá9-H¢…üYH5þ &•†îö±êÚ©¸š<‘ÞÝÄUÔhqfω¹À"KS³R›fÊb…«@]Œf-nбýÛ µ©O:¹ÌÞžF·h×$;»¤ŸÅ7„ê'îöôÉl!c‘™_€ÚßÏ{ÔªÀ5&î)‡¾¶æªA§Z팭bIÇrÛpôØLÕؼ‡E¬Äk²µ]‡Å­ƒiÚØ\“*&.ÔãÙn&ciP©©aí®bÍQ÷ÍmÃEÄí@Ñà´(W¬áÅ­,׳Xk••uVÁÎL0ñ9µ6í’Z³5­/,ÛÅéwžÙÒ*x0˜§Þâ±Z˜l+0zeÉÉX–°éy_´Æ¡to$Û˜öjmZÍm§ñw°ö»U“Ãï}¤V–Ù×;I%-†e§q’°&ê¨# `çÉ~[1Øi‡ìç²ík2ÕdØy}2ïvoiš^[ÓXaÂNúž±2B–I´‰Žg!l¸¥lnlƒO“2Ãiùl1f•qªí|ä¿ñî»ÝÛ5SK“få›¶;m:çµÉ[Ýf’­Ö&ÙÊbHl^Ò eŘ–™bÂåj.„¦]ýKjzÛMéŒòÃ{V\SY—7ïÝœ#¶[ÜH\rX¶ÏSa©|F—­m0¼.ÃK”ùü³ÇaÝ­Nö­]œM5ü¦Ý'lÝÇx»%ÙcO ÁªbNÙx NH)˜²xà\Ô†ˆîöâi1ÓÝ©#Ëï-ª*KôÓÃÄBVÅ…†!ùµ—Î>^'žXÖ&˜CçV~÷7Ôq«¢1¸“;f×nÝüv½¾EâJv.µÀq°ù˜,bƒ ±€†b¿‡÷‹ÏOø|1œFÃü¦Ý›§7jM{óiƒ{ZC< ï ëÙB~ Ë!V0ýßÅhâ<ÅU 0ôÉ«>¬Þoqÿ×Z]›W]Âá;¿6˜R ¬a:7 aZÍ;Ù¢n$-‚¥Z§åøù¼¶c‰§Nîñ©üjn·}–Þ³áÄÒÏpÝ• î#ũݖӵÏ+pÈp²¬Â,¾/z£1dEU»ÛwÕ¼nZN©/nØŽQSRÃÛ\Åš£îšÛ†‹‰Ú£ÁhP¯YËZY®9f°Ö+*ì­ƒœ˜aâsjmÛ$5fj;Z^Y·‹Òï=³¤Tða1O½Åbµ0ØW6`ôÊ“’±-aÒò¿iBèÞI·1ìÔÚµšÛN7âïaív«& ï­¡kCu®}P™$V¶žÄ\…»U7/58k/fSpØ{[®½³¬l?Î]í>ɪ/Ô=–Q¨â+8ì±=Ø,Ëß!κôQ#.^æ·eˆéäcDH÷^³­Lôâ§¶Ua»kVíX{:Éq/vèˆòŲˆ…VÆ÷±ÚC•­€ßLH¹Èrı¬M+DÛºë´ÕБÝ+Ǽö¶ ä©ö ‰{ØJþu‹KK~?k0ó2Ú¥WB*_Es7Zç-æ÷*Æå­é}¶ï?Ô!”ø{{Bì|¨}MÜ•;G._@]ŠåQeóÁÓå[<Æ Vf‰¡ópµ¬×;Ôß²Ú˜ãB¦³œÞIñ°Ú°æ›;7ê=ö4+8ñ›-V.¦ ˆì9¹Hc Ã_>J±ƒ2ùg]Ý0M­ÚjÙ­¡twâVÿK7 a¿wr¶yð¶æ)¬¼Ó!Ȱð.>RØ7æaÌ4ÃÎ/, ¹·JÃVnf³Öµv™¾Q¡Ô¤}2ÿwfÞÜq[°ýE‡(Š<ãÂE¥º-® eÕk‹M([dbhSÚ¿-Ž=@À<ÅÖ¶¤H_lܳ:^ô•WÌØ“mo8·ox튗hÒ³3²²Óf•™ JV(8¼:DíLÈÌkWwÆ–Ô˜åªi0?Ì]¬íaÞÄ×ßT{¯ríÈQY³ T¹ŠŠ=EŠámK5ôˆÄ#ï~­bE\KÑå* +œ·73L·?©»?m^<æš„nlX]€«0‚Å{[+úÉJÏåÝørUEÊþ>µÒ`¨‘RGp}OíÞÞ`«tš #H¼9H¬K"ÓY,LY‘{‘áæc§ÍXºS &¢En¸ÑêïkO™m‹¸-’eXn¡í|¼ GŽš›ý‹H—.R5UUïmíÒUQ+ÚéK²ýkÚ†Dˆü”F”3 "~¬Ý4U–_1„¥þ¬Ë­ NlËûÝìÙµÄÓ_B¬l·ÙkŽ‹¹>¦öïmJ¼ÐD†Z×°p"½­²ìÓ²†þóp©EŠÁ¤&Îáú‹°vñGÒjÓyvµÕö•Š×ûÅv;¿µ¨³ pIià¨j̨‰}Ž{]áøNù»Æ¹%E\/LµíÚ{¦_O»³{Ü÷MÓfî‹gmÚ”[2Ã}Q6sk•ËÐ"À{UѨŠÉµœÎ Cô;E—$ÍÅÞ6þëß7ï™±¤b[jÛÅDÒ+3^ú«Ì4ïbºoæø²òþ*̽-U_:±½¶FbKKÍ›žRVÝõ6‰;|ݘ¨ÛB$c²ö¾F+ò˜Ëð#ÔÔx°R ^xµQ2#Z«óšw]ò|žñÚ¡QfTK–¶ïøšÍ²DOª=¹/kvü‰‚p#ÞÖiØOˆ\¯€æœ5Ç"¿/—V©kRÓRÁ. ëwg¸ï¹+„r°Ÿ;Þ÷½ñòFÁ”÷Ž>¨ó—-g’ ¿}\¶ÉÚ¤‹Óù.à© 7•‹¬¡]—oAfFX®£n\˜ç[ÜåG]c\Ý÷{5söÅ1ÉÊïd½OÔŽßvÑ~â ‹ü´oq»ob·5½"mOuzyŸ²5¢½g·ijšÈmQ…ÛG»WÔmƒvۼÚ³…Ž©ßˆáúëeƒ—±Éæ{QÔ¤W»·6¨mKïíˬrÉúß´ÊÜøD¶ìË„Éh­·`0SÀ•kj ñ<½1ÿ´ËN‰åUòI.ú¹¦¯’ñtÛ,gPê7ÎÿÚö‘#'=‘ÊJ–¥±—5¼~BÛ€zGœêsY6,¤™Íø[C-ðÙgÅá8¹?U·‰³n°…í››ãÆp<¬,møž•£¥Èx"`L÷«³[\«yªöî²j·¸šLbÅrZdv{åoÂÂ~•»ïqv… ¦ÆÆVa™_ØRR,kK…ˆ±X ‘øF¹GL ÏnßQ"F´7 ¼‡K¼gÙª`´/¤Ç cȳ˜B­ Ñ"h°t€µ©4®ëÁ…0†…Õ—™Ýª-Þ»QÄ9ú×-š$&¶ ,ËðÅ)€ÉÖ<‡MZZŒÈpʱ|šÖŒÜ2:l2¸Ï>¯yŠ»ßi8í–Nº—Ám³VÅÉ—Vª\ rÅšƒ‰šðÇŸ,2­‡v·ªNDÛ¾µ—p¹¶ˆÈïÈÒ7dí L=&Û0൮%`Æú‰°¤µˆÅ~Þ®±ºc«/:9Û¶x¦e¼·˜å„5£êñZݵeĸ]éµÍ’1Ò#;¬î¶YL!ã˜"Q€ÆyŽ'È–™r3Ü:6®í­Ü[Ölâ5Ú;öw°í|SwÎÒùn+“u4™d›-ÇŠ•.áÒ±œ†8ˆ³ѵwy¦ÝÄÜX©¹]€ê{þ.Ö5^¢ÑYÞR!lЦœSÔ—…î–’,Ñ…-”hâË–#¥Ô3!_Ì!£jT…çµ¼èÇÉŠZ¬ÍeØR'ŸÍ7ð§¶ßrï·lf„Æ•¬$°Áv/ Ir€Ó/ïH5Ž<þÔÒ°Mìvhµ[1°æÕŠ"ú&ìÜ6¸]„ºµøÖr?šï{Žñ;nÛÝ:!Y<5c±¤W`j_˜%FÇõ+¥uÜαßÌX,5üOÌgòÌö>úS¶¤ÏÜí‹ØlV([¨J#Q¶2R.y¤ôõG”ôÖ\çíVª¦ˆ_jfK†dGUÅn›LÆÖ*¦+6¾®£ð›×Þ*“>"âšÊ˜ÒL¿\n’HbYc¥†«àÐÔY†%†%[ÝÝk_«\ÕM†Sa¡!j~Ÿ+°»ïi˜ziiñ%“W’Zh²3ŠlXŒ»cÏü5ÛÉÎ<µ‹¡Ví¬MܶbiXyÖ]Y¶ìövJ;³l{b!oµÙ¸*înæØLŠÞŽ^CÄñ*¥j¢«o2×ï—ÄLÉ\T’aoQ&Ƽô2׌7;]…kˆùw aqf<‚@^g€¼BXÔ*Á#vÑ"°ô˼VFïÝ¢@´Å¬JJAj!«â¡ñ¹:Ë¡cï#SÄøUCý9ìÓº"¨‰zÎoÙ6³¼öÐM¤fÂ;‚ìi“/kgrŽ¥¬™!Xók ŸŽ±tvæÕn³±3 M=¹võ-6Wa'ÀÝãnm>!ê ­{Úâ7ãËè0Óá©f « Qg–AŸ-Oi¸eµ»h&•IÛ?P!ojI²;d¹ÉX1M+;ß1J”½O‡_1gZ‰l&gƒÖÌmWí4ÅXGUÒx¥ðn^''¼v§(¤)ö5ŒžŽø‰^úÙiicŽ^?k†ù™ióV&˜Cç,kZw¨ð«êZþÛMHï¥ò"ÜW&2êi2É6[*]Ã¥c9 pf1£jîóM»‰¸±Sr»ºžÿ‹µ‡ W¨´YLÝãCz"È<[(ˆnàD#vçk`%€‘så-JÃÑ6îh.„Žé[/¹ÕÖ&$F¯UÓ:Æ,ãÇDäé¤Ätõ~Y‘ia˜|ÜFÓû ÿËYx{6ñ«¡wݹn•[×Ô˜j†ÚZŒl´G±š[eÀ‡tòn+ŽötœÏ–G‰ε‰2¦´Ü=7æ5Û4¶«5k4ÇRЏ|ZÅÓ{ÇlT»@6•™•–›4¬ËøRR°éAÅáÒ'jf@æcXÚ»¾4¶¤Ç-SIøGk;Xw±5Æ©ó´ÃyFsŠ×YŠØË)„¥™p°­ò€ 2œ9à.p÷Æ«»ãlâÃMú-Sßµ»‹föÅvL·õÛ6çœi fJáª@–°ÆÙô­‰É泂üÂ俬Eï—xÕHv«†Ñ;xß!lÑo?ph¦0Ümv_ fVXqÇÙȇ›Â>"å­òÀ"G»h‡¼vÉ*{ìÂPEµ®Û9LI ‹ÀZrL!?`„yË”9¨º>™wôQ-©«m:Æya½«.)¬ËKª4ÿvCe5¬P €[f¡Ë0Ï屩j«AÔhrŸ™Ètók:Mü:»Ø™£ý¦ÝÕźjî^ý…³E˜õØä¶ †ìƒ/k[!Y9khcλf"aX‹Ý¬ôËþ<Òøý×Êes;mx}冖²·µ#o-Ó]b»³&XøpãÃC q/‡K!÷js"*öíà¼nZN°íÛÅt«ß°¶EÝdY‰¼ÁµÁ:M&‘c™Š*ê!nmU§ ?7åóWW¤®—öòÞsnobn&Å™#Ú­kÛ¥¾Ï½DÞÔÁ<ÂÄ@V¸ß[ËÁö–À¬T‡øš‹Û·ij!·¼vÅK´iY™ÙYi³JÌ¿…%+”^"v¦dŽf5«»ãKjLrÕ4˜殎Öv°ïbkŒÞ»Z¥ô$ÒÔÕ²s²™uY—𤥊úQoØtÉÙçÉã£jîôïKj\V]Âàº;YÚÃìÕdõ½éµ®UáK;2ʹÙlº…—ð¤åØ:U»ÄtÚ™9˜Ñµw|mŒ{¸]…ÁÔ÷öÚÃÙÅVÃõ¢(ó –趸)—U®-4¡m‘‰¡Oh ü¶8 õóZÚ‘!}³rÌéx\kÒU_3aþMµ¼ã¤Ý·x»J:™§¦¾6z.DDWà ZÂÄÆ°ïàZÄŒý‘©nÜ[5;¯Ôh6É[¤akŠ 17SVÁ+Û ÕI«] cÌ-btþ*ß6»‘œÒ»y¸/PÛì3ϪÙûjëíày¥¿Q#FÜ™M™hý"d,F;‰Üäái28¸»-y 4ÈüÂç w"ªÝw,“Ôl"‰ ÓrËd¶›Þ[d5©ÄÂh½zÁ ¦>÷_ï®Ä)ôüÓ>*-+»k vÝe·­a~Ú’)åífÖÖLïÝ»eÞ¸«v«\ hY@LÉl¹ÝbP˜èñfüµø˜@$5²¬aÛnCÉÔük>Ë‹zÀ( ÿÓú^€“Â_­ú-@sßTöI{çmÎÛvàÕ”åØ@8Øxß!/.!oérÍjª$17ÄuËTEÓ…Þ8ú]¹ÛºUÂß’ÜFaCÂÓWŽ9güºÙã§ñWG¦‡Ãëz?ÿ&YýcƒSC#õ}_¸Œ…b>›w §b’¸¤ù{`H[¡„»Ç;Ù¥{‰ªdvŽ>ß™Ì<µÑî®)R?-™{?Ó7Ú`º ÷?nnݬ¾ÎO`ï+í¢´X* À÷O¼@fWÄ„®™1®IÄ|Ö† ÷‹ÅÍÚÓÒtØn¾Ïv‘È´õ&.Ú¼Ú³"v–ó-½Ë:\;!»´$‚QgæY¶§PKön! ÏLÆ<µl­M>ñÎÚdRGxެumrÝJ¸ý’ßÚÝÉÚíÛ÷xxn.­P]žµˆ/Èy(Ö^Ëð×LÇTäM-Í•Ól6IÜ7»UÁ­Ð‹åb¾·M>ß«ËÓžàí¥lû´(ÊÜ&Á)Wl;0V#Ôß/ášÏ,4<%þfUˆ²,¶ôÛ“=ïv³Ï½gg—U:šV…êudÚƒ$Ý·†}šû¥{é´†æÝÞ8ElÉÌ Q‰&!á!ø²ñŠò.lieˆÔÓ$Þ+º¸0´-NUÄíµXãâÇï);Ý÷}ób)¶[xÄ ÎH*0}™Œq»,Ù/‘<Ë?ÝáˆÓ%!ßiÖŸ®·&¯Šfv˜Â¦¶Ë,Îë³ö¢­ßÓûal ËÕÛ—·q’w¬€µíèþ,ôDq6ûBÏ3Þ¬K)àÀk­~ê»a4î[L—w ÁaÆ2#Éz —F±ã•òÓ?Ö3BªùØç˜;J"kÍÈö•ú{¦Å7p8°Op\öYê0b‚ÂZaé‘®j!X艋29 ü¼ƒÌÈE²mUwÞºmª&ÃbM–RªFoBSzŒ7jÚ·1ë»RT^Îgo*úòíÑoO Ü.8‰<.PÏZ¼Ø9}g ¶½crEq9ük1£»{wr˜k=¹k" ºZ-«‰˜Í 5Ÿ1-#ö _¼£—K—Ï&ÕW>Y¯ËbkÄåRÖ¢ÝwòÜÛºØj+öNÚ–{º¥J‡,b²ˆÏ)rA§‘Ý'—N§¶2ÁY€Œ1~SŒ•ÈŽDr9¸ååžÓ­M\Øu¦¤ÄUIVó»fçi¬Z¬÷jì½ÖnѸÁÝx*[cþ_óËŠT$)w_‚ò ¤m8åXåUI¾qÎnkîÖÉ}ÜØh{Û‡¬S ×hù6E¬ßø<º¯dÌLíŽÞwæšèrbÞ2ŽÄRæ²O;ã:¹+Òå=F=JgÉÁ^=:Eï\TëÚGÕÃqÕ;U¾ó”º0®å•g­†–òÜÛj“ùü‰øÈ*H—zLXó!ÇŽ^68×J\˜¡/ŽÑ³«?7KØqGµ·Ûј»ÁôHàCÅ|bº?óXåçøk¶dçkå9›ÎvW°âcý¬û³¹Ätì›»¶ˆ}ªÈf«F8às5W¥uÇ0e𑼭gY!å²:ÅfÃóq2§Èõ¦ZåÖÀ߫ڗÝ]ž‚V”TJ§™¿‹yúÌšìÞóV¶ÈŸÙó%lra\dßpd±e×v ¤ÞRÇ]7ÉD䈈Y(°ðaËϺ]D©»®k¼saqÑV*ív£fû¶7ÄÉ]ªNí ˆÑ9Û‰E‘n¡HÚ\£âàWaÿꦡh·.ž%ªG«–Ž¥&„]hrMkgjowÉtªz#Ï-ž ˆ}˱î2½&,Ö-Vw'´HüæÁáÑê2ãnR;ÇÓxåéÒg‡—–¶:\¸¥ñ8æÔƒ˜WÔsHó£ÏÚ·¦îÑ¢²z%GRHTjY(˜CË%‘ÖJmžYpn`aòÈK“š,Sγòµ’;†fZùË4ÏnÓÃñU7µ¸VöÇjn·“¥®ÖÈgµ¶±Ø¬£’Ô½h ò‘â"yçï [Q£QŒ›®sŸ»‡VS³i×›u¹].,Zνh«>Êœ–¦s£Èp­ÓÄÓUÐÜ$?¨C‹‘ qXê(äÌÀxÔ7B"}[²ü¹½»[8œ[ÖeXb›kݵœSzçeÙ{1mpn V¹¬u×v›ŠÙß—YÎcîÇᎶ ÒÔËO1ó—¹z¿Ö½jÕ6ÏÊ«ÚËYêð”ݱÛ3ánXX`Ä®X­|†Aë·ˆ~ÏCÇ^^Æ^ÍsT÷j—åé}ÞTd«ë}ÜúÙ3«V¬z¿xÿgß;ïµH=­³n½®1ä”&K»6øÑ˜µ1Y©ˆÔýûR’Qëx”âç–Ye]Þ誢^tón7.W^¹M.¿«>.•§3óµÞÖá/fnj\9Ób8˜£œ. ]ÒciêTÅ5oˆ AÍfåüÁ-<×…Gv«ÊfËò›‡yج¶íF¹fŽÜÛM–N?ÿP°Úûj~ÆøÛÄxfßù¡lQ~m<–Ðn¼×Ý zp?żÃÐ&aæ‘eÑßJYºæ¹ùœ꺫sµŽ’W{©TÚoP™_R›GEÚ[lµ:vç9wŽsßf .BWá¨KÉz¬ÓÔf™°”5&†¢m;ŽîïŽp«Žª3†gMÏÀÖì7ž‘´nñöÉݲ¨dûKd›.^¢¬«“6$c$XcäTf‹4Ãsùr‰2#V™%lßeyšÏÖ—ÞêVî“JéÒ«òë`v§»»5'EÚû#¶ÉSͶåsS¦w½¯sB‘pæù‹gŠº+¢›ÏwŽP„[YÂìÏh¨›6L>ì{cE9–ü¹!Q²Ü]#zƒB®,üá/ ~Ï6.‡m3ÀòÞš÷¿ÉíÚªsìÍêÊ»T¥u¹•Á—ZÙ)Šzc—+};#žYd¼rÛ)ù[”Ý®›ÜüÉ&ü©å¸R:+y¸rºMš]ÙäÄéI;'mK=ÝR¥C—h¬‡"3Ê\iäwIå §¶2ÁY€Œ1~SŒ•È©QÕ¿/,÷TÕÍyºÓRsETF­æ;vÍÞÓXµYgاn›éÆÖ|¢ŽÝ¶5ò·:ãê¡ḻ)¹‘û>jÅUr#–Öc™œþNKy¬ûbòàÇÂæ]-Þ«‰¾ï%úÙ$©½§4ŽKÛòyÊxŠÝ¤û…£.12Öèú.rµË'T} ¢ÃGíͳõާiŽm¦ìºáÍB&¦_~,·;›ýYœÝKÙ7áÛïf®L•¢dVÇL– ¥i¬„ßf< c³›+§RI³˜Ü¹(‹j®˜+ø]’ì¦Mf¹­ËˆÇ$QQ<¨Þ>¯QÒÚ¢Ima:ÎñÚ¤îÛu‚­Ô)©+;ØlwKF³ÇSO ¹±ýZÈʨ¶¤æ¥Ì§Z©™4µa´[t¢¢Ó;eÙí{Tæ;£gÝ{¦Ï}¡2” HRÚÅ\ÜÉcä5ê¯Hy˜áɇà ©õĬlºŒQÏw«¾[HÝtñÝs%o[–ª“£=¢Gç0&ˆQ—r‘Þ>˜ãÇ/N“<<¼µqÒåÅ/‰Ç¤Ô¾£ša¹Â—mþ<Õ ›¢9bAk,ˆÖÀ»† ¸–™[Êóx«Š¤QÉ­—s«ýF–½í\*î~Ÿ²TAíYÁµìx2Ǩµˆy-Ó¹~"\ÞkååïW\ÄG*Â˲ÜÎ) E‚.ÜÿÔð•ݯÙ2b_o…&$‹ÞCsé­dr²Æà(Ë,XÎNGDJR½QæälÑY¬÷ÓiÓ=²Rì6«·-Ú½Ü9;Ó¾®Yú•ë2«6¯»çclçÇ’¸Î+®ç ÷D¥ÜðÀÔÛ¾*M…¬¦™yš'âuÆWfY›ûoâÔÁV2üŸ±f«ÕÃë7e³P~IÜ7éY¹.L´P%d2:¦X•x¡&XAð,ºŽ‚Jóf–¡<2®ž]>Vݧ.yŸjõ—²Z\É››E‚SBA1^µ,’ÓvÜõ;ÞHæk’{3µ÷=¾L ÊuKîV;êÙ¶óÜ·Ç!a=¹†\ín@Z 9Z‹ÿ2÷Ù/³6É®Ó}+_»Ò{x¦uZÖi$—lnÚmKζíi8ä?+­êµ8åÈçÃÇìãŸ-°Vj6üÆxœ34Ï ð—÷eû%Xv,&íÌ‹%Öd³pÈ)Í´]3oUæD\µ3]v"XEÓcÄnÄÌÆrôKõrëÍÒ³&Õ6þN«r¶|ÌÓ6¿¬Ù%v®ÏÍÓ³ØwNÕ"t¹‘Ã!$˜Ëñµ¸ ÒõeÍ~o1€<µ ÿföï:RÑt‹9^ׇÛö²˜­;Ûk‰ŽC1w~ªù¼:Íà/d«¦uHè__å£|FGJ.¶g>c\Ò“nì™ûhÅ|˜²ä^û|xæ¸sn‚[SŸL%CSTzÞ!ktÈ9CÌÊ©ëTKË3]rÃYWÖ:ö¬ØºxŸÎùÚæúÛ‡Q+¶d+´]±¡aÕ6(V³+Žf%È ”dÂË܃ÃPý0O4œ9rÝÙmŸ¹+*Åq9Ø­*¸‹ÝýŸ/{%ÇE´Ö[l¸×fVµ€Û¡¥nÏ–~/ k—K—aÍÖéæ.fé™K+Z‹ujü70…¶lób¼75í’ìøˆe¬g“îÆ„0‰«5Èø®æÉ3-4ç–òª^¡&ÚG{ËTSós¹Û¾òZÞä[«¦[4µÍ¥¸53RßÎÔí Ƕú¾ë ÜVn7/²ŸqÄãéß(Ÿô˜æJçróW<ÆÇ-X—[._ÖS-_YËÓ•“{º­Ž­·–¶ýSïZtßYï~uÒtý”©Ù¢Fš“Œô$`w¿Y Ú¼K#ÏúÂ5èÍr9Ê©yUNMV¶ ä9X[ëFZ)Ýûd÷»Fæ«k­·9 ì®Nk?8`x|ÊäÕ‚5~©¹.ÄÚrëÃo/ÉϪÇõTŒÉ‰ýFñ«äízB÷`…6Ví'|˜ƒ† B£-&`G{1¤æôæä3´Ô"ærŽEŽxÖ¦„]wM³*KÄëÛV0Ô›zyy['ŸN>w{ìé]vãq‹&XîcQ®s½ÖÉsP¹1ŠëVdhL–KOبFÅ%]j[e{§³Š§6JYbºŸ%«´£½ fÔÌö¼SÓŠ¿¹;3v’Çn\W:Î]†!"@ÇÂÉZ¿‹pL”ò5X2ÓòCQ+Ö:莊̷s:›½N§»m‰¥µ3Yï&vX‚]‘½¦ÕþžÃ¬bÌ/•wÛpí÷—m̅˹š°Y—ãÎnzJ%d](ÊÍdB<Þ)TŠIéuWÜÇÏfÕéeØ«·DªÖË~l¾Z¼SS‹Çö´ûí»ôk(5§X1?áUn^Pk€‹K—õy«W¹>Ñ_ù³ø™k"¯‘nYý¢ïºöY;ŽÔ‰k^J‡ˆñºL¢GÀ±³4ðÎŽt2U+—™Î*æf¶G<´¦U¦fI³Úö©ZØ;Žý¸Œ÷DdFŠôˆ¸Õsi¿f3$,R«'Äm̘/“*æöÒèZ{dky¦õ[¾tc´¶7^™Žþ-•¼Ul²ÕÍ]±²Ïlï•‘hP¶2]î'ü0‡ 7!f‹H}Ÿ™rסÎEsŽñ¹ÞÉÁ‰#p»Ôw´SŸeNKS9Ñä8Véâi‹*ènÔ!ÀÅÈŠ8¬uræ `F¼k‹t"'Õ±»/˛۵³‰Çw¬Ê°Å6×»k8¦õË~Úí9gC–qô–#4ÎÄÒi8ãÝ6k^×±5¨õ‰FIÔÌ@±ÄÙѺ4j£iÛvc¼WíÚ¦Ãat§Þ5Û¬ÊvWfáÞ:}“vnãy:©Ò²$Fö;ŒG7–ܾ›ÜI~Á sT&”EÅ™êÌBª~Îfµþ±ÈÎíýÅã¸D´R¸·r)l¹/Xœbo3PIB†d,Xeû=JܽÇæÜþgg=®ç`w{µÙ/å·.S.òìùÛ¼¹ŽŽ7À“ ëàÛ®æqÞÙ M˜²ÕIˆ7—1,ù9eº4ýdÛ.—l[%ªÅ5^Ý™¤—ÃV©Ý›*e™%ž‹ÝÆÃ2Y=Ä+\N\ÈË@,|±Ö3ÕåMKf…EÖ›–mçÓ-Ÿøù®”_³Ìnöd,ðTç„M²B÷ù[í‹b\mé 9c¹E¡ìÖ7B*kÍÈÒ¦‰ù¤)·ÞÍ~ã¼±µö¹‹ÎO¦ß4ØÁl8äZ€õB<½'1ø+œ49?kòõ¹ˆÜ¾Feñf•4= Ùå;®Íî¯!eí­ÕŠ/tHÚw_ÔIµŒJ †ÄQ‰qôøRx†D&Òø«º*F:¹ŽßÎY¥Üg¹›^š$S¾Ã±”ö;›Þfï½çÚ»¾é}Ú8Åsº¡¿JIxGÃHýX©©“&A©1þJòŽ­Ryk.ͻԟÝ6ÌÒã–¹5ƒ¬R:²Ëâ·©öw.ÎNÚ7=Â.鼜m½’nÆGå(H¦O$V€iøyÐr?iÉáÏ&bµ<¯ÌªåÍþCšh–?Dͯ”ͳw™·wz]‡`v×ÛéÙ̬Ǫ5•{Ûì¹c/‡“‡á¬ýEh¨˜eNKËt2㟉óò”ݱ²Ïlï•‘hP¶2]î'ü0‡ 7!f‹H}Ÿ™r×w9Îv8KÆç{'$ÂïQÞÑN}•9-LçGá[§‰¦,«¡¸HP‡"(â±ÔQȘ%ñ®-ЈŸVÆì¿.onÖÎ'Þ³*ÃÛ^í¬â›×-;w´åÁŸ^†Š†ÓM–»‰¤q"é5í{òyÄ¢$‹2×2›£GÕËM™ºJ}§ZÕ°Ø])÷vë2Ÿ•ìÓ‡yÀ»cp¾Óhš^u·kIÇ!ù]oU©Ç,~G>?gùkX°Vj6üÆxœnf™á~þì¿d¾ïM²DØVl³&Äjä o{[" ó/"¸ˆë*ìO1cæsW5ŒQS·Q«–î ú›†¤Ëê/QœìiÎí=›:ãF(+HHc2·˜+(e’ý¬ÔZ¹ãã ×¢AÈÕ7'g1ÚpIÒ~×ý‡kX*ÞùVݶüîlÜßɵPí½‡rÚÏj³£Y[iEuÄ×ÁLâ£ó2`ÜÇË!ÉÜß5VmS¢_k%ÜLßm¡{Ñ|ÏÌáÌse7í}³:>ßÛÑX²…ä[!äáÉ/°¸šÁ/:誓ÆìŽoƒÙ ÜäÄù¿6 oÜðåý²dT€Žó»l¸‰¨Õ©ç¬B$|ø3Ý®MÐïÚÇ3Ÿ)Þ£Œ~–ï#¹_í×í‰ÿ“;+Ï-Ó©Ç!ô¯¬êu2Ë‘ÏØÇ>ZÖh“Q*àw¬âܱWë¶ŸÃk  ìY MÛ™K¬ÉfáS›hºfޫ̈¹jfºìD°‹¦Çˆ0݉™Žeè—êå×›¥fMªmüVåló™¦mY²Jí]Ÿ›§fG× isÈV Ý¢‘^Ö°ÚÚ—""¿ DkrÖŽ¿„¥H±û»Nw¸»7xvë>~×۾߽‚ȃ#­vÃKø•!«ëcÞÜã§—•Ê%ÍPTIºgk»&{6¬´®Ó2a–Vêa~·‹ §ôû'dKÛû’$ÂJú(»8ñ…ùE¶e¯¦°s'/ ž|œ¤Ì«£ÖdÖK.µ.›šRnµ0½îvú!ÎAúu¼'µöM²ñ­i÷@’ðÍ|«³\wfyà^Y¯”á«ED{Vë.ôžÙY^¤>r2q7Õ4ï‰ÜꇹöüH1eFÞ¦1ý]k]fç¡ Óƒ@‹Úóµ“5¬Zzwù¸®k2cUÐr½*™²Ë¹'¬7ß§{ì-ÊwGû¬MÍj ç¶0ªà¾œ­1 jº´ûx6žA—5TfŠ.7fMi¾ñÓYÔöv[’Áp±¬–˽Þkø¸ŸjîÐß{gw‹ºlÐQ¸®ûzà1zºVMÂüurnöƒ&º©Ëzy3Viݳ%mæíVCCVö\hn²ÏK±]øÔqûîÓ7³{_jk´cw )OºQc ÜÁæj0@  yÉ,GÀ^[?e/ 5ßÇV®»4½ò8¶ûKi’_ôËwÞvmÌΠNšh0Ke6S§¾V ’œæ¨õ<*ÓÀqÕ/wc,ª•I™Õ“——ÕËQE¦,éÏÍNózóãlû¶ë½³|î½^Û}­±{ÈYðµÎ×¾³ÓÈƒÄ *\‰+ÑWå%—kú–y ET– ònõãÕÛ*þŒì2·Xs÷ ,£–Ñ–¿º•— ˆfÃì¯Ú¦j+ò—ê7_E¼ÓΨÜÄÁ’åçÌêr²Vg>\ «¶¶ é+…¸ÄÝ!ˆ§]l6(y:¬~E“2_ô|Uèb£³Sèß6§»—šY‰–L·' ±W7)úÇ{í,Ü—òì‡Ù„ a%ö¶&Ã-¦á#³pª,kÏ 1Ú³Ú¦bnˮފŸ³¿WÖÀïUÓæÑÛ›Ù>K³Ù4Û1v˜Äœ…®ÈrŠïlr oñ /1ïÙ‡îtf+ß+ÿ–ÖoÒù¥ÄB÷*&¥:ÝIß.¤’ÚÂH›Û[’·nèN®Žâ2A60µÚ»ÅLÂå|E«"a,\JÓñ†BÊ–¬¨Ÿx×}ãçkùjÔsïPë}Z5YÅ–ç:N×¥0Ý;{rß_'slRf^ B; w"H´§½ÚFÔ)˜¬Ì,½¦iÕ2•EןbF«½ð UŽ33[´ìæøinóŸv§^nÛt³ßQ%J3ŒÈŽŽm iÌ ÄÌqä/’ æ®JÙ‘Íî­«c«ýFˆÁZ½ò+¹º~ÁU°íû²¡@ØBЬ ÉlºÍwÔ.†Î d·”‡] y¿3”YÓ3ÞÅV‰ší©žÙ(Ôþ]2WF%õMÏÔ¯[ù•MI;&îí¢j²ªÑŽ8ÍUé]qÌf¤Dï+YÖHylޱY°üÜC̹çr=i–¹u°7êö¥÷Wg Å¥©æoâÞ~³&»7¼Õ­ºw}Ÿz±î=¹K9%(”ýUYW™¿ÍÕ`H¯SOäšóùÂá—Qttús}Ó›S>µÏj™ú¢ÁÊì^̲»WùcxìÙv™¸p‹&Xî&£\æ%!{¨#šæ¡r£,IY‘¡2Xi-?`B¦I}.©Õ¶Wº{8ªu²Åu>Hj æklÚ™ž×Šzqw?R‚( E—0(RÛVg/™åÞäÕé^Øù¦yûÕntʪ¸—‡‹„æÖʈš½›ÛÆn]²¿O¸ì_š¦E‘¢Ìbž8,^–7º5ÍšSË;»&_²ó£´ªl#w§Ìw®Â ö^âž’sãÈb•Ô…¡Å—tµ q-±Ô TÁ£¦iê &PBêÑaßZ«[3õØç»zŒÉ:Ÿ)3&¾óLaMsK«$ŽÞŸÞa•ï=gÓ¹²Õ  éBL]À äâi,¤4ì{^Æ´_Ĉ“žzeác Ošžœ·Xçeæ»9ÍÅ-VÝS­Kóm¶ª"Ç_~^—Joa»;Eá'tßemÃ* À\뵄Õˆ…f‘Lmc gw½q¼ ùyž!©Uv«›+­{Ìw(Úurœ‘%l»5]÷nGíU/ õc¥>ÏÞ`%퀑dˆ ÛBçkZêͦ|Ùy~D¾›Ÿùo8W8E¨–]òOû&åô2žìRÿ÷2úÇE]+‡å>ñïn~n^ËŸ”ܶašñÖî ãöã6}²ÀR%Ò«6Ö!"à j Úày—‹Pp÷Æ«5b±DÑ¥¸¶YvÇÉ™“¢Z½·»¯j]Óˆ“Ú›¬–9Ê….ÚÛdȤRå-‡w2Ê5ßD$2$t3Oé4üÏ™ V)‹¦ïÃs¦šj¯ÍyºÓRVRÁZ«qõlÂçÅšÅªŽƒº{aÍ•pRdHTd1 LI7ŽËg¤@Ř¾ #Y<|B|úuе*ãõUÞ)ö¸œrbP‰‡Ù—‹á—]—³ž×àÅhZÇ]wi¸‡;òë9Ì}Øü1ÖÁšZ™iä>aêèDL8lÚWÓÅzÕªl7|ª¾e¬õxNuä;Ð1H7L{¯ƒ|ãw–`Ëà/ŽÓOŸ¢\üãsÓªZk—ù]ðÍ>áHˆªä[/sŸÏÕËæc&<Ú»*t]Á1·@(±Ö+ey–YC//ÚÉG­ž?0©ÍE™ÍLÊÕfb1”áé·-û_ö¬dʰUï_”mÚ^üþlìßɵQ­;&îí¢j²ªÑŽ8ÍUé]qÌf¤Dï+YÖHylޱY°üÜCÌé<îG­2×.¶ý^Ô¾êìô´¢¢U<Íü[ÏÖd×f÷šµ·¨ïM²Dí¾å·ŽscH@Þö˜²ÎË̹GXrIºÊâ±EEK«ÊïvþG¸¤DTT[ÉÍiœ9iH­8£mBÀóÂK$˽ŠÜ„åHÕĸóàé ÃÙÇÙªsRÊ-='eM­Mrýc¦Ì v…U´ç5òêµí£s)²n•ß•ïCµmݽm¾åx/‡©&íV‘- Y‘mN£P€3 jû\HË ^ˆùžŽZmÆöS©6ô²ÑjLT‚9©¦—}ÓW­ëš±d7ndY.³%›†ANm¢é›z¯2"婚ë± Â.› Ãv&f<òôKõrëÍÒ³&Õ6þN«r¶vf™µýfÉ+µv~n™²6Þ>Ù;¶U Ÿil“eËÔU•`’fÂcÄŒd‹¬|ŠŒÑf˜bÎ/&DjÓ$­›ì¯3YúÒûÝJÝÒi]:U~]lÔâ÷wf¤½v¶åCÏlL±”Zd‰pä\V)·æqf;E¥¨>cU äqôñóC,V0¦g9ز½æ­Ýio¶{Ç6µ5A­oÖû¾WjO¬ÇS+ŽŸº6‰›†Ò˜¶l‘tCf<o¦Õ1ä9ãˈc]RtT²ŽWrºSÔŠÝùJ^òìùÛ¼¹ŽŽ7À“ ëàÛ®æqÞÙ M˜²ÕIˆ7—1,ù9y·FŸ¬›s¥Òí‹dè«DÕ{vf’_ Z¦„ìS•iRàmÎÈHÅ*òš÷Õsµ&KGF›–’ˆ¤¸õGÍ™¿I ´Ycfâ}Né¶Æ7Uî¥ ŽÀŽòÚ}4· ŠßÃf½HìÝËiØ7ÕŒ›ÈM”EFKmϘÒñ¹/~ã¢jÓÉ‚cV®ŒèóN,¶f&dûRü¥™³+¿L#aÆÇn¾N”›zxîþm³wŒÕ›­u’ZÕ^ÚgqÈo{xNê&/ð0Çâ®9Í™ª‰åjÿ‘Ó)`¨«äSÚöÝÖöË¢i¶B†èº‰³-ÆÉþ!%«Ó•õN¦Ycò9ññûçËZÍj%\õœS–*ývÓømauÝÛl·œ- õÙFµÑb»–Èç3ꀻQz†°,p#J,«UgµrU¨çÞ¡ÙÞÕOØî »Þ)NwzØwMñ{®áÒœvH†QØ»™áv:ìeÔÆG ‘7M_Ä(äÌ3ªJ`½þ÷/3e¹No3½ƒfÑ©˜Ýìæø[+xŸN;Í»o”ÝÞFèÔVøQÔ6;…ÊÆ% ˜²Ò6.¢ù„‰~é•C’‡"w¹—í‹gVo=“Û»&~Ú1_&,¹¾ß9®Û –ÔçÇS PÔÕ·ˆZÝ2Pó2®¯Xª¢^Yšë–ʸ.±×µf.ž'ó¾v¹¾¶áÓvwj¿f™cj€0P›]fF6;2C\°7‘È Uó·Çþ`#¡SgVœ¼¹;7ÅhÏ"~Ü×~+˜ïŒvP @(ÿÔú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P U¢&μ›ÙÄ6 Ÿ eqµîB?"DWÇâ 6ÐäÆT¥$±LµÄ€ík‰Zþ‚ôÞ±R&¢Àò,UDPGŒ¤®Öµ„FÖûDyDmT«òQ m¬4P @( €P @( €P @( €P @( €P @( ¥DJLÚ°cok™ZÖµÊöµ€nwö¯`of€Û@( €P @( !î»,ÝV¹GT¤Ø²°8Æ×·£,Yb½560$FŒ¨ªñÀV¥„-k­ÀDD}#üÕJ±Ò¤¢@ÙXh €Pæl°g9R¥ÇSŸüTÆ,H‚ÿΣ+d¿ ¼M  §B“( ý§·vÝžç}²""ݼ3ÑP¯.qÏLG,r/lt@.•Š‹öæÙy¿šÞ":ÿú!Õû0ùØêx9<^ZÄÑÜOya@( €Õ*"e¨ãÉjYk‰ÚÄ%ký¢B\¤7¬T‰±1·ÆÛÒ1a(€ô Ö6·òò€pªU‰(#MíͲt•Η”žmb„Œ1¾cƒs K˜qö«F”5t¤ @( €P @( €P @( €P @( €P @( €P @( €P ÿÕú^€“Â_­ú-@e>|}½.cHU²3;ðµ­þÖ*ÀÔH÷éï­¥‹{ ŒWJ«½¢ä5GeÛœ)zÖÖ/”¹ÖÍËâ­] L»ÚØ{a1µ,õžÝ­7Mû?víÛï AÉL0ãÃU hä+Ãæ ˜ÁïlN­¯ãì¸ÈÿÞ±gx*6ò ÔÛ±ˆ7Y–[.¸Üma¹Šô±ææf® X¬¹ØÍ]¡ÊŸ7þÏw©¿S[SR膿Áö·-:ѳ~¡ÃßcB³²Õbà*`¨ŽÃ›”‰: 5óä {3/–uÝÍÓÚݦ­šÚbèïÄ­þ.–nÖxí“%Z ZWaܬu°VˇŒQ$ÀcÈ1à\©k ÿvu͵$Skwƽš™¡txw°ízÔ›÷Žâ‡´\QØÞ8-Jc™{Œ¬˜ÀÖ๳  ȹƲ:`l<¤f÷¦Ö¸ê—¨f/"‚ÔÃmÈ>hô«Yɱ'8I^Oíq­_ô›wÏ­I»x¶+²k>üÙÅHuœEÕY—H˜l=;Ø…¬ª¢/1:z¡‹2)˜!þHýÇÙq¨ŸÁeÞÓìö™¦¸¿PöYF Kˆ¬ã²Äô[`³/|l‡:ëÑDŒ¹zwšÝ–#§‘j${¯YÖ¦zqS‡[ *°Ýµ«v¬=d”ÞñÛ.Ð ¥fgee¦Í+2þ”¬:Pqxt‰Ú™9˜Ö6®ï-©1ËTÒ`~šº;YÚý‰®<îéÛkà%6Œ¹QÜ­{ð)Ïâ8ßÅšGÞåʦ=û¥CD}-çz4¬ƒõn±úçY“rLb¡ìµÀøùËX¨ßddÌÁòù5qÔ º> [Zº&¨ÉW™Ínë¥â-'÷†ÛÆ0Ùg/T,…1×ÓýõÂ04Á_Úˆ|U+¡`·manÛ¬¶õ¬/ÀãR"¥ë:ݽfâ-cIT¥ˆæ,SÄ7µÄ†öâ$%oA ZµRÄXŸ›}Qîîîí[–ávÓÛ ŠRìÛ:îÈø™-Xêeá/Cb®Fý#¤oÂá)ðF«°6wþûœ¦ûwrí[®Ó³oƒ™¸²M˜Q¬ÛÚÀ + ¸†ö<òÔÈLqǨ¢ÇS.}ù—–RUv·uÇ'êÇy–Ä]ÞÔíeµ©—Uµ×f‰X23H•ýŸú²ðR(Ø+¯á:9±sšß›WZÕ¨ý“nÞáîuGh€@˜«®ac¶kÕ]¯’òUNl} / É®Š"âIŽw¿»ÒOo ÁØØ¤Ê±q½Æ*î"ö/ÛÎóO>^FT5j‚ØÑ3°»5ÒenÛsõ2ÜZ¢ÃE«Å#gwªÍ¼Æ›¯rÁÚì¾ Œ‰ün°J˜ã+[ÒF)Œ n˜ä93  æçÕа14¤|„³u¹Ç´¸‡’‹¸Þ×Úã|L Âk0+b`Áå*.;Á Èñ¶Me‘‡rfZFIh©—\¼‰,XG(‘Ž‹O00ä©r¬S æÃLÏ/oÕ6ŠþÍú‡} ÎY$ :Ö$ÊšÓpôߘ×lÒÚ¬Õ¬ÐêQW‹Xºox튗hÒ³3²²Óf•™ JV(8¼:DíLÈÌkWwÆ–Ô˜åªi0?Âèígkö&¸Å½éµ®UáK;2ʹÙlº…—ð¤åØ:U»ÄtÚ™9˜Ñµw|mŒ{¸]…ÁÔ÷öÚÃÙÇ¡Þ[Yë^ξ1µ,ÓÀð ¬´˜³nz¹ø–£GBaÍYý›ÓÙ—µ[Uœm5R íLó; %¿fÖGï=­È|›´”1mk´^¦$ÆÅà+¢@)س¢ÓóO ^F5«¡#»Š¬z–ªn#>6î-œXLSßST÷ݦ«FÇP–©–ÏЮÞµ¼õ‹‘:k-VykÈùiþòoáæDÛ¸Œâ÷ŽÙ!NuØi´a±2ÏSb7𞔕©¤q!ÄÏyèº;»ØeÄé©m룷µV­ü7‰?qÃÞ.ÀŠGf'†kj˜– ‹ÀWLSp>l†‰â\…[ =½ýC´BÝ¢ÆIõd[¼MŠn™&X‘`µãl?ÎçÒùgP‹޼žêpûË-­©·“Úömb¢Ñm´w¦Ù¹–’›{2ÊÖâk5‰.Þ'!®[ÐÅ€<„'à!­T‚¾g|í0ÞQœâµÖb¶2Êa)f\,+| ŒƒçF¸ œ=ñ¬m]ßgoÑh:žý­Ü[7¶+²CÚ»±»—pKÚWk„h`*ÄÒ°óÿ´Þ©1Ñ![¿w:¡\£ÇjÆJÎ6vh²ãa{l‘¶Jù¬çÒ·²x›qW5¥Sj^Iéåí)K¡eÏáÅ«ð¥+;ÃêD-šÓŠz’âð½ÒÒEš#¥²€mYrÄtº€fd+ù„4mJ¼ö·ù1KU™¬»Dóù¦þöÂ[î]ã¶íŒÐ˜Âµ„˜B¶.Åá).Pb…ýé±ÇŸÃZšV ³½ƒnÍ«f6Ú±D_DÝ›†× °žnýéµí-$JaÜÖc4”ÆÙc±’ :Ú1À¬$BOÓå/dªQcáÕ›jÏfâ+Ö³­²ÛE£7ëy¦Ð´k¥Ùr¶pËS?óeZê{ÃjîÓ³mï·p;­fÅ•‚íóÒÔq xؾ©iÔÈs%å†CŸˆhºUnÚÕ §ºõ“¯½v½Ñá3Q£sVjbÅ¢<28ÍrÖ©#À„²A³“ŸÁZˆ«þ\6ŒU‡jx¬üWa1ß»¹[<ø[sÖ^iä aXx )ló0æaç–XÝ+ Y¹šÏZÕÚfùFšêR>™‚»³on8­Ø~¢Ã”Eqá"ÒÝ×2êµÅ¦”-²14)í_–Çž `bë[R$/¶nY/ zJ«æl?ɶ·œZ7½vµKèI¥©«dçe2ê³/áIKô¢Þ7°é“³Ï“ÇXÚ»½;ÒÚ——p¸ÅÑÚÎÖf«&=µÝÊߟ2:ÔÕ^®®&¶ ŠÖ°–Y5j¹¾VFXâÏÒÔv/iÍõ7Cª ¡ÊÞÖSÚß¶ÚJ­ïê¢í2O¨Û"ÝâlStȱ2Ä‹¯`8ùþw>—Ë:”X¤uäðS‡ÞXqmmHÕ¼ž×³k‹m£½6ÍÌ´”ÛÙ–V·Y¬Ivñ9 pÞâ>jM‹æ~q«vˆêZšï}®›‡Þ,?Ô?P6k­®'Á+Ö+±-+ãÞE†º!ÍÈÔXde‰!þmn´Ï±;noË{ ŠÿÎµŠ©ÅNÜ·XÃ)p.|d5dÑZ÷âq;•­€úX"æök<é‡Öø¦G¹q‡v÷ä·r=¶%ÁVD6ÉcC{¸®ÚÈÄ¡ñ5¾ý8âúÆéUÕ“óöú”cÜyÒÉŽ<’{wzÛK§¼U¸n²6k)–de¬õ4Ù`,òËš…ckcåù¾w6ŸË:¤ÓÂç3†_nÎyaç÷k5þ~Ï©lÍýÜ¤ï‹Ø.¦ÜÚ’n¥–˯kˆã˜¯KÌÝ\@±Ys°+Tu%æ›Øß²Û-ÔÃZ>¯µ¹jðG|í/â¹1—P3I–I²Üx©Rî+Èc€8‹0 ñWwšmÜMÅŠ›•ا¿âíaÃUê-n}ÿ³í„Ñ–âÆÍe”ÒP^ÖËLä‚Ê8·ìòuuHȆfFÕÝç—iÖiÇV2¿͇“¶öëµÙÞ[båZ 4¬Ë•ž›4¬ËøRR°éAÅÊ:DíLÈÌhÚ»»KjLrÕ4˜äÇD{U‹ö&œôï©ëÓ$)d›A˜˜ærÀ šVÆæÀ@‰4ù3,1Ÿ–Á£iW®×ÎKÿë½Ý²•4¹06nY»c¶Ó¡‰Þ{\•½Öi*Ñmbmœ¦$†Åà-)¦\Y‰i†,.Pæ¢èHúeßÑD¶§­´Þ˜Ï,7µeÅ5™q8Á}ñ´’%$‚ bÛ=LQ†¡Yi#KÖ¶ŠØeˆ» /?–Ìv¹¼&¢G÷MºÒÎ.æ‰1úÁ¹xïv.ö°Þù …f#Ëâ!ćœy+”Šöö}SJÁ;lâ+vÞöÚ·' hí<Ø$k¹©«ˆøŽ3\µ®HâByG6rsø(ºUnÚÄÝËCË ÝY¶¬üWa0ÙûóhÞ¥Aq3¨’Žéh¬ø[#½‹›ÛP³P0<ÃËñÛF*§Y†k‘{Ùbµ0ØW9£-e'%âZ£¥å~Ó.ñI·1ìÔÚµšÛĦŸß.öª]Ã1a¶n‘·Há2Ù‰>]XM7Žm›sÙ“eÆq{Çl’—¿T”1mk´^¶$Æ×ð&@)Ø3ìYa‹H"­] ÜU`¦ýš-TÜFümÜ[-½„ß³÷=âì¤vbxf¶©‰`ؼtÉ7æÁ˜`xž%ÈU°ÑsÛßÔ;D-Ú,dŸQ¶E»Äئé‘be‰ ^6Àqóüî}/–u±HëÉàþ§¼°âÚÚ‘«y=¯fÖ*-ÛGzm›™i)·³,­n&³X’íârà½Ä|Ô›ÌüãVíÔµ5Þû\96+;¼X~ »hîÍ¿vuãÄ3Õ°jZÌS˜qáªp^º¼>ju|Þ`d†ˆüfí2Ó7°» ±íwŠÉ†ë¹Ï91ã'8çŽg_'‰s ñÍÍRÝ+íFs¼yy-ûÍf‡hM«Êoƒ35Ûš®1ímñÛ·[¯ašcc†6½¸ˆcËËŸ››ÿ ktµܹËõÚTÃ/6[3=r¿cï´³jFãºÞÀé jÁiY°Žë6•ZÏf+^lÀKcå ”X£|ïËfg÷nLÿ m©¥Þf=Ìæ•»Åœ.ðÛ&ÝC¯r’Æ(-p1¾¢ísjZ&Hhi¿Lþ¸xgÜÐ߉ùËìöÙÄОñÚœ¢§ØÖ2z;â%{ëe¥¥Ž9xý®cæe§ÍXšaœ±­iޣ¬#©kø{m"wÖáºí[|Óllq¨cInA²çpµÏ€±r#éýŸ»es{¥Óû?ÌêÆÌ¨†p÷‰d.¿¸d ˜iÙ5ß#û+×˜É 2åX(s/p«³Ñ²ùfVöo«²pËUrM«6Îñ?fî([͙љ\ÒV-‹50/{d:ˆ*pf<ÀDþÍd4D¨ù;vøXJÇo–é>D ˜…¸ƒ\õ“ra ›¢´­±xi¨ÖfÒq|Í=/n¥4¤|‘VíKfi™¬é¬Ë].…‡¢mœ¢Øåª Þo˜¿7O2¤«JkS‡¦éµi»Ls_#,¶VžýZ±u,øͶË1c#ºvøâó6_øfY'a+ê„ÅJ'³Djôªc¢8¢œ6¸euVh~èíUž,:ÌÆÒ=»ßiÐDëˆn‹ -‚vm„™¢h0­¤$Ï/ µW*CÅ‹µTËjjB'~¯~÷«U¢&íß•OFÎТ;Ù¨~+¾—R,Az©^™‹"É!çùuŠŸçëÉŇŠË\S[HÞÿË}^Ó4‘¹w¾Ý·\æÞ ±ž i‚ìVâ!ª\`/R ^_?‡š§1`‹ ±âÁµ«¬ÜM'-&„ovš[D]³¿c~U~år´™qW —-mÆÄ"Fzh±i,sg/³vÍDkÕ¸{Vû-ÞÂü!‘r~þÞ&â.æî€;s7d $š²µò¶9qÂUçÏUËj­æ#¹N¹HTLJrÿw-©}Ã,âI‹dŒ‡%Hb™eÜuJqÉ’il #­Ž9ª»æ¢e¹QqI6ô³ËÛRÈþYJ¹EKNlÈßRo[ã“û×j€v +r‰‘ ˜@±?ÉrÀÕKÅ”“W/?†¦eôË¿‚k3êZ©˜Øj,R)æ›w¶¾+°•*ïà¾ñ:+ËBÞ¡¹“#º×".‚ôøy«#¡pµÎÚ•þå]§&ìÔò6þõÚ÷„xìeîÛÞË2KAL½­rò$±aü¢F:-<ÀHà ­M?ºmк;vÙڦќ>ñÛ&J´´®Ã¹X ë`­—¢I€ÇcÀ¸ŠZÂä?ÝRE6·qìkÙ©˜ÚG‡{×­I®7|mR]Ó¥¦DW+i7M—70#OBKò㱇È|¼…X‹¢miq5¶œÝ\FªAaé—{ °ï›7~ÛzT9ǧ´‰lŽ`õºÄVq[§"R‡Rú"eŸ–¿5$ZãTÔŒ5™?ðc¸+µ~á*½úŽ—žN͹|²G|í/â¹1—P3I–I²Üx©Rî+Èc€8‹0 ñcjîóM»‰¸±Sr»ºžÿ‹µ‡ W¨´bŽþÙß#¥SˆZñîVKtŶ+¯A’4ôÜ­Ê `‘ä¼2/#tªnµïUÁÔ÷ö›ãû÷»ÛñÑhÖ¾¼§‚„ºv¼F×½³2\\HË–­U›=Œð*ÄÒän(ò±ïõ7[]–›ÜоiyÜÖvà´ö’$wÖÕ·!×ÈVÆ [t— t‘ùÃËs„Ã0ËÄ5IRÁ7u¶qá¦ý‰] §Í7–ãoUr«$Õ÷$M-­fG)e‰ˆ¬ï`½ÂÎSÓX’ËÌ„ ü±-NJÄÓÛt¥Hwöí˼ңqï¤í{öټt—O )Mk/‘8D¸ââÑ^’üÍ<@œù± ª·]Ë,Õ­î…é½[%„ÞòÛ!­N&EëÖ 1÷ºÿ}pŒ!O§æ˜áñV­+»k vÝe·­a~Ú’)åífÖÖMVî¸Ã%æÉè2lc•ïÁ—mµ.Ï’j`¬ttˆ™–~òèºcuÒ¦[S͇Äo|!znHpË~r£ú£·ÂGìÓ“cQå%©¸¤œ˜îy€Aˆ¿Ëeùòñé7jESöÊî˽EŸi¢u].ÓRbVíõ'o‡·ÊÜ.k!Øni$9læùdKbuAG‰yúZ<¥ÏYæÖzeø}WY¿KSŒóú¯ÚíËjÉÒ'pK#Zmïu¦áîÑ%ÜG‡,X xûZ‚8ÑÔ÷†ÕÜS'êÎÐk5L))v!Ëâ¡ñ¹:Ê¡cËÌO{ãEÑßèÝžÌØMDŠ¢%ë8]½dß¶÷ž×¸‘‚{X­“Å.ß·S\ SÓýªM‹æna¢èŠ­ÛZ½þÃŒM*ˆ—¬öÞ*Kê$iSöè[uȆkLJîKW’얾͌O‹‡5¯&/Yx0x²ªkb«#ÚÓM–Ú›i¶Ýêã¡#¬Öêñ#wˆª—m¼Ï„‚Q:Ãq¿ €Ü@Ë>r†C–|ÃËP«UÁkzoaÅC»ZÉG¹÷öÝm wX{ISN1˜2á{¬ ¤M°­ze©Ê>çÌ ÕEE†Ë·&gõY¼ãY]é7êöHÜ»ßnÛ®Hs ïØÏ4Áv+qÕ®0‹)¯/ŸÃÍS˜°E…Øñ`ÚÕÖn&™–“B7»M-¢§·þ£uå·Ä“´™°Y)ºv+Ø |åæü¾UŸ;ºg$ªôOšÅ¿ìoÔÖØq ^èßWr¹Û «.$voÔ8{ìhVqã6Z¬\LØsr‘ ÇA†¾|”ceòΩÍÓÚݦ­šÚRèïÄ­þ.–nËzî5í2Àe5k‰hÏÞ"wg]\ëÓ^˜ PKÌ//H|u;>IyÝ-]¶Š–0‡•Òò«„÷ÚfÝšN¸ŠÕwÜØ³X]Vû^¦¼§§ûT›Ì<ÜÃEЊ«vÖônҨ‰{»¶ñ¦Ýû¶ššÅk楬ë#ûI Ô‰¼mg¢,ÓÌsñT½eE\=·v®Þ)©2¢b½ÚÖ«oÝ5íßPvé0¢L~¢Y5WjÓ¢Ò;ã`Õ/KUØjŽ8/Í5y/"®®lí¦]Ýë7©9±flÝ»¦í­M¢ËûÍ·ô×›«äYÝ=Ëùš.ã—ÏäËÁíe‡5J$a¯gÄWŸV×îŸÂhozmk•xDÒÎ̲®v[.¡eü)9v•nãq#v¦dŽf5«»ãlcÝÂì.§¿¶ÖÎ*êÌ VŒŽq&&5ÊBŸ`+¨/”ij,9°-6·É<¨Ê¥\qÚ¿ý:°|›« ¡U06nY»cmL-&wÎÓ åÎ+]f+c,¦–e·Ê(È>päk€¹Ãß6®ï³‹ 7è´O~Öî-›ÛÙ1›ß»<) ˆç¬rv)iÙYXL ìZÍiY òµ¤ ñóùlÄÚ»¼«&üe”×S¥|Ón›7õÚöçw±™+†©--`/²þ!é[“Ì-f/ù…åóQ4þùw‚§kÜ&›wz`u¶ÝØ ´+ÜÀJöº[ÿ.ÌP²Ï4–9dJÔäÀu4¢b›¥÷´øº™{6nÌJ®Yz›šgð:ÍÙŠÞšÃE ?ÿÖú^€“Â_­ú-@U÷¦Ñ#tÛôáp'©©x_;¥€ý>…›§†XòÖFUGwË친UÌÍkÍ´RiEE¼’öõµN_º6}׺l÷Ú!é@”…-¬UÍÌ‘a¶>C^ Jô‡™Ž˜~ʶë‰XÙuþ£žïW|¦> ‘ºéãºæJÞ:·-U'F{DÎ`Lþ£.6å#¼}1ÇŽ^&xyyjã¥ËŠ_Ž-H1©…}G4Ãs….ÛüyªA61Dr Ä‚ÖY­v q-2·” æñWH£“[.çWú-{Ú¸UÜý?d¨ƒÚ³ƒkØ!ðd+Qkò[§r üD¹¼ÖËËÞ®¹ˆŽU…—e¹œR‹]¹ÿ;©á+»_²dÄ¾ß LI-¼†ç!ÓZÈåeÀ$Q–X±œœŽˆ”¥z£ÍÈ Ù¢³Yï¦Ó¦{d¥ØmWn[µ{¸rw§}\³õ+ÖþeVm_wÎÆÙÏ%q V ]Îî‰K¹á©·|Tš9 YM2ó4OÄëŒ4®Ì³7ößÅ©‚¬eù?bÍW«‡ÖnËf ü“¸oÒ³r\™h JÈduL°*ñBL°8ƒàYu•æÍ-Bxe]<º|­»N\ó>Õë/d´¹“76‹¦„‚b½jY%¦í¹êw¼‘Ì×$ögkî{|˜•ê—ܬwÕ³mç¹oŽBÂ2{s ¹ÚÜ€µ@rµþ&eï²_fm“]¦0úV¿w¤öñL구ÒI.ØÜ/´Ú&—mÚÒqÈ~W[ÕjqË‘χÙÇ>Z1`¬Ôlø9Œñ8fižá/îËöJ°ìY MÛ™K¬ÉfáS›hºfޫ̈¹jfºìD°‹¦Çˆ0݉™Œåè—êå×›¥fMªmüVålù™¦mY²Jí]Ÿ›§g°îªDés#†CI1—ãkp¥êËšüÞcyj;þÍíÞt¥¢èÿr½®);¶'íd1Zw¶×7†þbîýUòxu›À^ÉWLê‘о¿ËFøŒŽ”]lÎ|ƹ¥&ÝÙ3öÑŠù1eȽöøñÍpæÝ¶§>:˜J†¦¨õ¼BÖér‡™•SÖ*¨—–fºå†²® ¬uíY±tñ?óµÍõ·×µ¡ËÚh8À×"jÚD"Û—¦8 îrLy²×aÿD|5Š±Ý‘­Ö¦[7%•¼V©!4o+ݳ¦mé¦w Sõ·'÷Ìöµk>ÒPËŽB< Yqaú*£1ŽºÌɳ+~–=<¯bµ»QhîþÛŸ¸w6ǹÅVqa^N¹ä6Ç5ØÊEc<‹Ü¬jA]­—&ñOÒÈkµÇ'ôÛè6Ò½R{Ÿnî¢Ó2ɤCÂÇrVKSJ1Žòó~ÒºµeD…¨s Å™î[®r˰~‘µ)ƒºÍ"Û—w²±˜$)<Óf¨tþÕ"ø*ݽg×Þ1{ÓgƒP¡þæNÞ7û”Ù2 ‹íh«Z­òŽûY®™xë5Aþ/Úç®-YS[-É&¾Tý|ÖïÍÑØakRÃÈô­ØÓÿ¬É~ê­»Í&ì·6<íºt•XLcË97ÊѤ1/ºí~9­Á $<¸/õk£QÔc&Ç$zŽßw¼Þ!U\‘[]I÷$sÀÉ\vvÙ#n†ÔÊ åJe­Æ×åc˜Õ—-ïâÿÅ\Ü‘b'Õ£w S´¹Wöxr;^ɽ3aÛ2`”v(£“dYªºÀTÁ‘ˉ“ÊAiˆcÓéjÎ æ.¨±sWèåÞ—.Y[½jiiŸVcÖÔ4õ2_½sªw͵rÍRkÅ’ݹ‘dºÌ–n9¶‹¦mê¼È‹–¦k®Ä@+ºlxƒ Ø™˜Æ^‰~®]yºVdÚ¦ßÉÕnVÏ™šf×õ›$®ÕÙùºvfí½¿ºlÒUºŒb“u·p@ìzrÔ¦BµMi+ùAšÍË,²¢'Ÿ-Ø~TÜ®Ÿ‰¬Úe>¥]¤v×»n_-Ýó7vÖç"<ÝàQ§¸²b¦GŒF7¸èˆ#`–ˆºR‚ÌZJ QRƱRTHZ‹¿>‡~]ÔÖÍhŠ:1ÐÙQšÞéÝfþm?g†ËrÙ;:t Ò00,P Æen%,Wx‡’ý¬ÔZ¹ãã ½« -KaòpHܧíØv±ÍU\ˆ«Þï”mÛOÎæÎÍü›UNŸ³{ÛFKÕÓ¬vÆÇcák,LZ8جcm@!÷«›Û3a‰»ÔgªtEƒ¶\¼Ž8¿Ê÷¡Ú¶îÞ¶ßr¼ÃÔ“v«H–†¬‰È¶§Q¨@5 ý®$e†¯d|ÏG-6¿ã{)Ô›zYhµ$ªA‰TÓK¾é«ÖõÍز@›·2,—Y’Íà §6ÑtͽW™rÔÍu؈aMa»3yz%ú¹uæéY“j›'U¹[;3LÚþ³d•Ú»?7Nͦ߶îûlflCd‰ÊcFS®²F›yY9:£.ïVd’ PYksšeEÑÓ•«÷W²õÝ­aó[–³ûÜ©Öl’¿Qº¶²ðÝògÌ•±É„!q“}Á’Ä—]Ø6“yKtß%’" yd¢ÃÁ‡+º]D©»®k¼saqj±Wkµ7ݱ¾&JíRºWjî T‰›t7ÇmíeÉ´™$ Û=÷GW&~ÞœCþVìæ×ÌËK‰ÝÄ“InY^Û{Y—òSUÔ|¬eö¬Lùnîx.O6¡íìdó¶ÞÒD”ĸÉwkJèk Ë×´¦²4¢Î%åg±Š=EŽè‡ìÌêSjÃ[C±±Ì®{L÷s9µºx\ʬï7èö3]3¤±7²;GzÜ#I޾°! %É6H®Å¸d1i™rÐj 5“å›AÜã¦!bh‚­Rºí/’Wµøó¾ïbW¸ÏBS3\ÝY¨éâuÇuvè:>ÐØ¸”YFê¥Ê9.vþªj‹réâZ¤z¹`êRhEÖ‡$Ö¸öv¦÷rºU=ç–ÏD>åØ÷NÞ“107 ¼V–X—aÔph‚Ñ"ÕKOKÞ`×4H¤éS3sÜÿMçV¬ŽÕ—™îõŒû¿³åïd¸è¶šËm—ìÊÖ°t4­ÀyñòÏÀ%á«rérì9ºÝ<ÅÌÝ')ekQn­_†æöÇo;óMt91oGb)sY'‰„qˆ\•érž£¥3ä௞¢÷®*uí#êá¸êªßyÎ]˜WrʳÖÃKy}ï‚DÂóQæ~Ý Rð 2;Œ€“!d¢ùŽk~~aÎÍ4FñGj:\mÅ­-L¦áÕ`¨›ÍÖ«›ÚlS:ZñƒÝ[hºx¢Ò÷6ÂŒŒÀ•kjY’ ÌÀÊ:̧ãä­Ìå GÁNî•/9³9¸zMkÞɵÛîðÓIžeÃÔ¥ÚÏoI—RܸO$v³Ÿ£@šŸËäk0JÖù€Õ=¡&²þ#6ꖳѩò³À«UtÆì®Ë‘·K›µgÆûv±#E´è>|Nø¶.·Ý¶Ëié;+d8T£C#u&7{ÍîÄ ¤5–¼²ËC1ÒÓ̳ä^÷$=*î)xM\-³;óËB7ÄîÊ)FïlÛ*†O´¶I²åê*ʰI3a1âF2EˆÖ>EFh³L1g?—“"5i’VÍöW™¬ýi}î¥në4®*¿.¶jq{»³Rt½²ÈÛ÷9Îm¯t5qAg{Ú÷=0 eïn9}¾õ\cl×?uÙy-ñ1çl!«–Öo5ù¾ÛNg{ìé]vãq‹&XîcQ®s½ÖÉsP¹1ŠëVdhL–KOØ®hؤ«­S«l¯töqTæÉK,WSäì®ÒŽô%›S3ÚñON*þäìÍÚJw¹q\ë9v„‰? %jþ,AÁ2SÈÖ@=`ËOÉ D¯Xë¢:+2ÝÌênõ:ží¶&–ÔÍg¼™Ø bB vDfö›Wú{±‹0¾T]ßl=ÀS·Þ]·2.æjÁdJ\s8M¹é(•‘t£+5‘óx¥R)'¥Õ\ss=›W¥—b¬Ýv«[-ù²ùjñMN/ÚÓï¶ïѬ Öœ<`ÄDÿ…T~A¹yA¬-._Õæ­^äûEæÏà:e¬оF5º5göŽ›{Ùoºí-ÛJøˆ—ºv·–Ðf%Sš«¶Ó];6˜éØsÉH"#»¡+öa+ÎU]¿»ÍÙ®éè°n²æÆåXĬ¦¦Ø‹8àXF©Ëíç5tH5Í…”W=ßxðLÌŸ» :8:máþfdùŸxDÝö}ê6ǸöäH,䔢SõUe\^fÿ7U ^½M?’kÌWçdK–]EÑÓéÍ÷NmLøR×=ªgê‹+±{2Êí_åã³eÚfáÂ,™c¸šs˜”…î Žkš…ÊŒD±%fF„Éa¤´ý ˜E%ôº§VÙ^éìâ©ÔRËÔù!«/™­³jf{^)éÅgçÚ혨OpT«ƒkbÆÂB¥ÆÑTÐh¨t‹ê,Ç0óuë:+}/©Ö}ó•õKy“`³$¸Y(’Á|ÍkeoÕà›³íÚ,av³¡öÀìT‡ŒK§Î±]DWq•õN¦Ycò9ññûçËZÍj%\õœ[–*ývÓømaG;¶7–•õ!ÈkÓ¸›HZ£]#&Ò1 NP¶M×Îg¸#=MSêÈ…[”°•Ví.àv][•³+ä¸çL34ͬ”~äùKÓq2ylå¯kÄ•nä`§I×Sr ‰‰-AÀl&MYe¨ øª[e üù¹™ž¶•qKÊÆ0¦î]q”íé1ãpÛÅie‰vA‰ØØ--QÄ´ô½æ J$R ô©™¹î¦ó£VGjËÌ÷zÆ}ßÙò÷²\t[Me¶ËvekX ºVà<øùgàðÕ¹t¹vÝnžbæn“”²µ¨·V¯Ãs jœ©klÈ2c‚Ųòæ²NDËYdC«’½sÔcÔ¦|œãÓÇ"9]²}g|ÕpÜš­Ÿy-‹açc¦Ô¥ªß[ -å“ôÒÉn2ö3]úŸ9&)…¼}ç³3?Õ ©•Reµ›ï_œ–³YöÆ+`°K9t³z¾&·§’ýl“ÎõíÉÛ“æEæ.ÚŸ/Û‹H²óý¾÷ƒâ®hšWk#ò›Ôá§V¬ÕÃÔ›¥/ņÑ\MòKX‚é¤Fauˆ1±+RƳõ²óTKøë¤{þÑÏâfS=G!.Â3™î2Ý6ùe¿"RÒgâ:9´-¦DK`‘‹ ‡¾P7›Ä5ÊX£›Ý;YVÇWú:ªÁZ¸ÜÝ?`çÓ²nîÚ!ö«!š­ãÌÕ^•×Á–jDNòµd‡–Èë›ÍÄ<ÎóÎäzÓ-rë`oÕíKî®ÏA+J*%SÌßżýfMvoy«[iû¢L¨·»m2–m”6”.U×k¹„ÝާR3@ÝÓ‚F9Ž®—˜E‡6i‘;¥vS~Ó¦öÕ—µ-sK'½·#z`®]UvÇ»½»S12BZ;Rõ6ÖÅ’íIdëH)Í´]3oUæD\µ3]v"XEÓcÄnÄÌÇY¢W.¼Ý+2mSoäê·+gä©]vø›#šý]Ÿ›§fÊwoî/Â%¢•Å»”iKeÉxÄãxyš‚J3!bÃ/ÙêS/D±ù·?™ÙÏk¹ØS»Ý®É-¹r™w—gÎÝåÌtq¾˜W_Ýw3ŽöÈblÅ–ªH€„A¼¸™‰gÉË-ѧë&Üét»bÙ-V(‰ªöìÍ$¾µHGÙÒ& ¤*Ó‘D ÉE!Ä+¹¿<¹‘–€Xòž±ž¯(òjôe*‹¬Žàkå›yôËgþ8ïü<Æïf¶ï NqÛwVÌ{ÞÕ/lY霔š¬_Ír§üõs_:]V»Ó˼[ ¤çŸußß$Á8—{XMQXŠË4 chk2qÂ7”/3ÄÓj9­mï{Žåvå!´¤»5]—-Èýª¥Ãf}—áµöÌèûoF5bÈ‘l‡“„w$¾Âà~k|¼ë²ªO²9¾d/s“æüÙü%¿sÔsöÉ‘PR;Îí°Zâ&£V§œj±‘óàDÏt ¹7C¿kÎ|§zŽ1ú[¼Žå´S_¶'þLpì¯<·N§‡Ò¾³©ÔË,~G>>?cùkY¢MD«Þ³‹rÅ_®Ú ¬*ƒ±d7ndY.³%›†ANm¢é›z¯2"婚ë± Â.› Ãv&f9—¢_«—^n•™6©·òu[•³Îf™µýfÉ+µv~nž³½ö–n ŽKyvCì°’û[ áÈÆÓp‘ŽY¸‰Õ50Ó«=ªf&ìºá]è©û;õ}lõ]1ÉþCÜVޱ1–芔7µ‘Šx§I‹f2Ð “挮·§Ï ÂÆ©4B:mY§N{?O]ªÉóÃVÕWÜçÉoêäêá~¡žËÚ›šd‰^#›n¡2×l‹8´¯ñüƱ­q¹måhdb9y rCR©4K¨™­ãšN)ö±iŒ/7/òóZçò·‚[ô–{×lî`wu+&n.žÙ ³ãIþRäó@‡ÌÃðÖ7B7W6wlõºžãT~®]ïyíÛÇfË´ÍÄY2Çp!5ç1) ÝA×5 •‰bJÌ ’ÃIiû0ŠKéuN­²½ÓÙÅS¨¥–+©òKV_3[fÔÌö¼SÓ‹§îmïÚQXÍ.‰~¿ b¦¨Ù~-+ß•k"æ3?×:讋ÑÚÊîWÄ•Šß«Vr•·Ûáîh•!X©e¹Þå߆¼…º?ØYyŠ/ƒÂx•K4'Ý峂iΙ‹Ñù2xŠ£ì©Éjg:<‡ ÝÃôënkgÉÞöè®s湋7)L+¬±Ó罌­o!~Ƥ‰åªoÄ{¼…UW*ìËøYmñÎWvïlî}º­º`D»¯%¡‘Vj±9ÖzšC\rÇH–O_–|¼Á¦Z×*"GLÙyMv®fK=i6³Yiµ4¨‹}+ÞÝf>=›¼Iwmnr#ÍÞ{‹&*dxÄc{Žˆ‚06 h‹¥ ,Ť ÕÕ,k%D…¨»óèwá5ÝMlÖ•tc¡²£5½ÓºÍüÚ~Ï –ç²vtè¤``X -A!ŒÊÜJX®ñ%ûY¨µsÇÆiU…–Ç¥°ùN”ý¯ûÖ9ª«‘{Ýò»iùÜÙÙ¿“j££ï]¹û–É> AÍïŒÕ¬xÚÜH€„G"Ämé÷«†b*¤Ñâ;å9äU oÛDÛ§m™zÎÛš,$X„nvºŽ3,~^ªõµ™‚ÏuÇ^‡ºµriGLÞ75ÓòU¨çÞ¡Þ|¶û¹WBÁ¼Yw{^”Ë`…6Ví'|˜ƒ† B£-&`G{1¤æôæä3´Ô"ærŽEŽxÔ¦„]wM³*KÄëÛ…ªÆ“oO/+dâséǬbÎííÂd˜‘Nt9æ.¸¤”,[l–d2Yd––BBÝAf~^<õ-X$¾—K²úåwÞ9în®>»JÇÑ+·l»†—l¶Ôî’¶Ojî,ƒ3sÓÎ%sT›¸ Óe‚"ÝހɉV›™òò{1"ÌšX‰ •®s­Õ£3ò+qI<°-ªÆ–«dn¬žñŽt¿]_)¯qìé­ÚööØÉqä¹)Cî“"p·¨È[Γ‘åùÊZôõ1*ÕDj¤*kYÒÇÞË®öNöýcSÌEW"Æ•zÏÃg/w*¶3hómí “hÅbBóÅÄ$Ýe„w Y!Ž‘)yë3Ë\f*ÓË›=+m<ÿ™#v¦••]¹®òéEÙcx3zœ=°“·~Û˜øÂµ*×nákÙ‘µÏøe }´³M&öÕ6ª²î91ÊjcciÃ<-l·>Ç‘Läª,™j›ÒKœÄ¤< uÍBäÆ+¨t³#Bd°ÒZ~À…BÖ\N©Õ2\Çu,â©ÔRËÔù:%0TºÖ·_Ýû^)éÅ+tímÕ#>Ûzí{åöW 2"_Ïéí2íX<ä¯ÚbYåæQ]U_.só5ä~V^^­ö×,®’i.Ô‡à¦_–Içͧ—ûWÊÂí-Й5ñáHhÁj†L«9¤Q^ojXÆÈ‘¤Æ‰y 8¿¼jLŒÚ²ÃW2zpfe¦_/M²É‹]?‡˜ÍçYÜv®½6Iû®Ë¼o3dN¼"޶~]eƒ«ŸI7ÈÔÒk8¬³Xyö™,3.•Óô“îô¤ñ‡,RW˜Ý÷À“/`œôîÐΰ:`IVl°‹BÖFB†%Á"< Ñ=0Rí"Ï «šw67íº³33öq·j¦yuÚ›&Ö{σ¶Mì­»t‹-÷wV½²ãåª{Væ‹.W#ÒrY%6Ž2$µ™øq§vÝš¦›Š“¿F÷,²ð¾{µRv †ãèôÛ‡¦Ümÿ¶¡ÉH°Só-“¶7xo"dÁXp\¡¼€l X²()k¤ÍŽDXtâV7ÁϪّRì’×Ve…c+ÞªgTÆY˜.…ŠwÍ54¶Û^éÙ±5–ü£­IQ†ÁØ’”¸[lˆÒ@áp±Élæ±ÀI`ÈqF_+O„)Hj7–¯®+b-v»¦Ìl”» N®Ü·ftÙnåÅZ;v~­zÞ½U6ÕÏmÃÝ¢ÅÛ¶7À ’›ušÈT7X¶ƒz‘Þ_œ• ²o”YjéÝ2ÓßMé¡-ŸË¦Jè…H"¥¨»×êW­üʦ¤‰·væäH±Í=&á%†w5Þ×[^›Õƒ ±ã!c‰ˆ7/ÙãÍ\‘"ˆ‹O¸èïÉ–ÏUÇHÂoNgQ¿‹Ôð˜§dÝÝ´CíVC5Z1Ç™ª½+®9ƒ,Ôˆåk:É-‘Ö+6›ˆy§Èõ¦ZåÖÀ߫ڗÝ]ž‚”TJ§™¿‹yúÌšìÞóV¶Ê¿lOü˜áÙ^ynN9¥}gS©–XüŽ||~Æ9òÔ3Dš‰W½g势]´þX_wnÙ"xôaÏFj~›[€ø™s^ßgóxªRÒ/š~lœÜ¿ÚC´µSc—7-þœÌ£w¶Ní•C'Ú[$ÙrõeX$™°˜ñ#"Äk"£4Y¦³ŸË"LˆÕ¦I[7Ù^f³õ¥÷º•»¬ÒºtªüºØ©ÅîîÍIÑv¾Èí²Tóm¹\ÔéïkÜÄ„ä\9¾bÙ⮊è¦óÝÆã”!ÖÖp»3Ú=VÓ wÙsîCa¡@|mé!9cÃŽ^‹1 qT¡Éårú’–«¥º³s+=“‰Û»&~Ú1_&,¹¾ß9®Û –ÔçÇS PÔÕ·ˆZÝ2Pó2®ÏXª¢^Yšë–ʸ.±×µfÅÓÄþwÎ×7ÖÜ2•Ù²v¸æÆÙÔˆû}ÆäëÙDÔId£­$ÍØ™(ï0Pq*誴•¶goG¡Cq}&´ÖÌÿœ1t¤;©Î›S¨ä̯ùº³š;™{—r÷0‰Dp;­¬UÙ¥Ãq±š-rEZhf¨ÂSü¿l­ «æv^í?¨æ«ÀëÔž´Ãs|û'CÝÝ·>{wfEVv“·¥*ædÀ9Kæ!ÇÐÀæoûE\Q;ãåérfLþS«‰CæäsMÉÛ2÷ ÐJ˜±ÛåG½éVlÐÒ[@ ͺÏHòÒðþ×éWyf—zW¹Îªë°»Ë.–µ0»ùnföÍâ·dØ÷p’AsbÀ40Z‰Ò s¸Yiè™fË”Ùjj¹jǬ¼šŠæ¹-L×IŽwú´Þs«y¬¥[ªæÍ/ÉÈÙ½i%¡´6¢wlìÓ¬{3¥Æ$^ 'Gm˜K½ÄïÓc¢ÆÚâË%¸—‡æaá¯CÜŠç;¶®öNlH1·\ßý²¶F˼ŒSÙ•ˆ3´®£QVY*ò†eðN£X¹€ÒÈx0ü±g,µ±›¥Ü/e<§G­¨_m< oµÊLÛöÝßmŒÍˆa ‘9LhÊuÖHÓc¯+''TeÝêÌ€@Aª -a`Æi•GNV¯Ý^Ë×vµ‡ÍnZñýîT¿ë6I_¨Ý[Yxnë™°îM¶ácîQ¥-™¯Xœbn>f¨’… ÈX°þÏR·/D±¸çó»9ßÌ`^÷k³›¦Ü¿„£w¶Ní•C'Ú[$ÙrõeX$™°˜ñ#"Äk"£4Y¦³ŸË”I‘´É+fû+ÌÖ~´¾÷R·tšWN•_—[µ8½ÝÙ©7¿´çÛ¿DX\Ù4n1ïr,áQír¾\¾hù˜ûÞ§,Q>Ñ_ù³ø ʃ\š¬c8g ﵺ.Kß·G”©ŒÀÓ&€ܬ»+Ê,·h6âÁçb¡¼Š>–`cR©ß :×ÉWz[M¦Ü·Û=ã›8ZÚ~Vk.Ô›YަWQpNå?pŒ¡™%bFºÀì±7 ØçâglBÀ¹ ?éc]Qc /ÍáË¥“ë_ÞÊ”Í:m3-fÖÌ}Í_“áÍcŽâÕ @ÿ×ú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P \˜Ê”¢D€)–¸­q+_ÐBB^‚Ö*DÔXEЍŠñ€T•Ú°ˆÚß`ˆ(ª•cÞJ$ µ†Š@( ÖvÎÔÉ–ÝrkÚö}Ôo[ó±Ôô/Љ£¸.žòÊ€P @( €P @( €P Z£)$f &–G{ZÖ¹ Gï#•ý‘e €P @( €P @( €P @( €P @( €P @(„ˆë’²CÄX¦ Ä„­k‰ZöàBCA Z±R&¢ÃJ6‡oÙ€—¶FLP;ñ!JÅv½ÿœ¬»¨“ua¢€P @( €P @( €P Tx©Œ7¬nDW°Úֵȯ™—/´e|ˆ½¢ 6Ð @ÿÐú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÑú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÒú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÓú^€“Â_­ú-@AîÍÎFÙ·2L<5ìK»ä6¹˜+"%cŸ‡P*Ut¢bsYÆéMò*ákŸÀÕy¦gwAÚ.1·7qx]Æ´²ê ¿hó =pÖ^!ê_Ê´Äs«H9`µ&³=šmVÊka‡k»=¬» †ãß»>ÞæÇâ±Ç¸ÙØ©†*ÈE€rµšÐ¢ô9¤ ùœþS0Ï÷—xÕMôM»§Øí3H›—Ô]ÖíÇr•+d¬Z¦€0@oÁŠ& †J3Ë#°Ãœ9ù¡ꨊ¸eçÄÛW\VZ#œ‰{Ud›±÷¦ß»£+9¡˜ä¦3…­s¼g4RD|^CÉÏàæ®îlQ.ñK‹álâiÁ®Ð‘½â…­KT»°ûÇl™*ÐRÒ»å`+­‚¶\Y$ :ÖT©ætÜ=7æ5Û4¶­mv‡hE\>-bø;§n8ƒ¸ xÇ6Ù¾ÇRçÓéiã«cÖä.N_k–±4Ã^Ï þÁtGR×o;§5;êåBܤmA¢í­…bêcºâÀ±ß—I¦Â"÷Ý€yšd- 2©WÈ÷#8óz_ Í.÷n¨Ç,³&ÍÉÔø:ß(ÚIAõ$I³áîe¦0ÜbZ˜v%)º²˜±jㆣ"×h¯—îØU­Ò‰¬åg<Þ)É üSxMíïøë>ÐûÞE·!KŠÇÇ."8¦ãìŽ$z¼ú)•É_«°ª·†_Yû¬÷¿&j$\Ä“x½ž/wlBú¶69’uRÙë» ã`»EKj» NRù‹ó—å w{`åjy<1—tæÅ™#Ûºk]ª¢Ñ`á¶&νϴa±جÛß%Š ³Rë€1öªa¥عÜ2;y²Z6:pÚþÛw]5“#Þù‘ƀČI_mˆ¯å–X†+[Ü„¼JðÔLˆŠå²Ï™ÀΟâj• (‰ÞïŠÞ7MønÅM~ÓÞÑÎåî†)8Êêš6¶š™Ç"ñjžŠüÍ/Ú‰†áªu)ØÛS37znµ£¥‚yjf¶]™÷¥ŸQ¼n›'½6¨ÇL4ÁO2µÄÈ¢#!]˜Æ¬Vá•T«2¶ó~¿“™ÂLÉ ®ü_ê0ÉÝáµ§¬Íöã¶ãÔÚÂW¸d:ËaâÌÆüºYûž:”Òˆ¸ÓûÉ‘’ñ8¥Ð°ÕŸs³LG¼ö¢Tgëð ¼dä&7&ÌIW‰L3a­DŠ¢boQ»Ï7 аŠáYWjÉ1;ÜWÚA(®VˆWð¿³G—͸‰ÊÏ›“ÇËP®Dl×tò,ŽækŠDŠË{G=“ZûŽB#VÛOáÓÜlWψ]Ü}å1Ë#ÇñWEj¢Ë{O)äT‰ ó´¾@D[ŠäÆ]@Í&Y&Ëqâ¥K¸t¬g!Žâ,ÀƒÆ5-«»Í6î&âÅMÊìê{þ.Ö5^¢Ñ.ýÍ·Ú=æêùwOrľf§K‡ rùü™x=¬°æ­M0׳â5RÔµû¦ð•[_ÔS ]œ Ž1$ŒlMµŠçu‚¼jbkpÛŧ嘕c*DT¿ó«—¸ïvêÌ] ©&åG;µûM2ïòVÇÄ£¢=ã,Ë^Â*s­P|:Þß&-biTóNŒqPл{~鿟¶÷f߸“Fk5¡ ÔÄ_ވʑ«ûPòþ*ÕБ[¶µv°ïavå‡glcÝÄÜMGvmû³¯!ž­ƒRÖb˜¬Ã Tk‚õÕáóS¨ëæó-†ˆüfí2Ó7°» ‘íwŠÉ–ñÝ06† %ÝÄ7;-*cŽÃoEØKŒ`/.¡ŽråS×[´ë-ÞÖÂâ j™Þ[\QIjÝÝ@j¨c­"_טּ æh󛎞D#–U«¡`·mjö»ŠWa14¤{vð˜;¾v…*;¬ýA˜h²€ØL°c©¦´ƒfó¯Aó )˜j¤o-`šR;¸jÓNÕ§1~¡ì²@—YÇe‰è¶Áf^øÙu×¢‰rôï5»,GO#"Gºõjg§8u°˜« ÛZ·jÃÙÖL÷é{˜ÄiE,w+ë<´â&×UqÄó&íÌsc*UMÖíµ½\Î ©6§Õ5Ú™ÛÆþ›¶™!Ýáµ§¬Íöã¶ãÔÚÂW¸d:ËaâÌÆüºYûž:&”EÄîŸÞLŒ—‰Át,5gÜìÓQ÷¾Ô­šz—e“–“n«0¼)9Z}0;Ät¹çåãŸ-Ow§zHÍ.+.³…Æ*Á#Ù³bÁi¶¶ˆÛW™iç"Ç[{n³cVÀÚÖå“V¡ÎäxèŽlðíWX‹£±qZsM§9ÒÙÇîíš©R·Í죳ì×d½ýD‰ &D< Ž-JbHÖ‚‰Ä©¸`LÓo ,À¼XÕ"iO3/,ÒíY54ÇÏ"½¤ïïe·(ïŒ Ó“…´^‹Ž¥ø ˜¹ –hˆæÎ >n‘­\õUîóË6 Öv]gãOÝ6ÞËìÚ½T¤¿¼l³bH’Q„…0÷‘)-Y­&Ù‹ñ“° r|Ö¶¤Ñß3™µ#7Âë:ºÒ˜êxgÙ¯§Û Ò«tŽÙL€ÆB@cÂü,'r²ùøaÄ´Ï“,ëO‡Ö5t ÒÒ]c/éÝ£r ¿“1Yc„ÿ«Rè¢h)°Ž“•_~7sLHÛX·I&@å²×+FѾ3Ià¢-#òUάjKÁ]!HX—©6¥Æý£ßF¬™¿FsXµ4ÛŒ›ö¦û9=îÌùÃdn÷j69ÛŽâ!Öí¦õ4kØHÂþFDgüBÍ#™|ÚæåUj+mfA­O­›£/ãreE²Ú¦ú©z³~;\YmýÒÛÛ+qhYÐmŒÜí`e€XÁ–l!ç¶ž:šƒŽ×Gý,¹efµ}?Í‘^ý„ÎÕ¦ „¿¨/–ïšQI²}J‚èI“¸2Ú²›(P([v‚I±(g› KM…‡‹‚:`Xl;±HÌÇoµ=b¡¥pµÒzݸm;‹ê X{r§Ã`X_$bݲ,@+ñÈæ-š-^–?)šDKE êÔùQ1Æ­†¹ÒíÑ&«¦Á!‰¥p]Ús[Ã\ÿgQc°JÝM· åTV,Z™Q†ëñý‘$Ý(¼8±né˜òâ8óÔ!] ÞÛ®g¬ÝbcÝ -^Üþ®ÉUÛ]ï#tÞౄË0 °8ñ` úyzœoÍ!$áû*ÆTØÞÐÿºÌ›¤îZ¾Ó,§Ò°òXûÖµ/‰»YY†©RÄãͼHì´ˆÒ—VjÚfÒZ”dLZ½c¼Å4Ç?Ú®±±z68¼2«êü<§>\^éÒ¸*Ê«›lÛT¶ž'JßIJJWrnŽ| «\¹±# ¤Þ8Å¢Z‚*Ò6I0eš‚˜y‰-bº•\ +¯Z«©â£S\¦¶¤E²ÿVÛyÙV¶©§¶;îÒvù[¦äå6[í*:˜+!¸ ³‚®rYü9–›LXCÊYi鲺ªwk?¦Ýz¤cö^ú7gšWÚª¼3»S½ÎËÚkjß–YŽ„ûo ŒÛIÃiJE¤˜_¡W½ÇS.ðÈ}êä®DE[¹võtMá)4ª"_²TÀï¸lT‰Ïp^ µ@›Û«}U)ËY$ƒU¯f®@´,¼¼}±eZ¤ºÔ\Þõoû"1Ò–eGÿŸ+®bÞiS7ꢣäõ¨Ý#²Á¤Ðn£ âkzÍwj¬Ä™9SÀÅÑ;’7³zX©—/š·Ó‹Ý| vŽfpöõ¬´œß¨‘£nL‰&Ì´~‘2#Äîrp´™Ü ]–¼ˆÐd~as…gr*­×rÉ=FÂ(½7,¶N®µLHIŒvbZ601¿•²ðªœÕjÁIEŽ”!wóù\|Ö:²[}4+ Ù{^ö>ȉ1§û5Ÿ³\žª‰£¶³¶y¬6·4¶§žÏföæ¤ç"wnå¹£jAS·[Xk#Pг°$Z–ͲC'ò^:ìöÁîD³—ë,¬o+ݹ­Lw&žù•œ™Ý±jš¡w¦åº”m² ¥‰ÞUžlbƒ¥;FmÖ b õškÓÉæ,Ê¡*Ò–dkøééòf×õvk§V ji9z½N (ÄûTT—ß’•´*s4b:ÒŽ$—0HÐ’Y1Fû€±'u5ª^N =pÔ2ßÉ¡RËÛ?/ÉmRê¯ÉKki¨ÕÒ‹iÞžJÿ 2w`ݘÞþù|(Lùëuì°8nr·5¡¢«yº­bÖ+N,g>–$ÚµH:]Ut¶=4kI3¦Ù˜ÆéjªyÕ–¹“É?e»ÏllCœ,+-lÑ!%0[fz8'¥ ´RÈH£™‰d#J膵Ÿã7 Ž› ®s©éÙ¼Wq:›Fïr%œKÀh`é% å´kÙln–‘È þ$:ÃãVT‰§uÎáöoÞ›x/rú%ç^Òž;êβӻŠÙ2ÉYÝ-²—-!Rdéôï=Oe-? À¶òUŠE<ÊæðÏ6Ä·ìÙÆÒ¡§O’Ö¯o6ˆ]£õó!H+Úd”ç{[¦F#¨åGuÀ”æ/ä•9® qÈ»= « ©>­]%R i?ŠË6âÓ³û©}ÍóT¦'ƒ»‹ÇÀDFîZsÊÃÍË/(¹Àªa¡Zî&£»>Ëî™*˜Uϵ7I˸Lƒç¶§^Y˜-c{^â72²õ‡6ŠlZ­ø‡ÅXšU›‰½Y[¯)]É76¯k-¨ç›Þ²öÜQ¹è>D¥‚ÅñBÏ^äµ%š§+@ìÀæ-FylÃÙ¬ŠB:ý%äwSe¬Ì¯ “^§ ±‡}̦ÕSÉO Ê…ß’oµ·rPBuîÕGEâK¼»Zb‘³B6²bȰ̈}Ê¥EЉië»-çëJÖ?†Ñ‘M+&_gxÂwuîÛe¦mòoç #5N¨ìé¼È÷y³5þ§ÌäðTÆ=ßḨ}ä+ñS©¬ov•î‘ïÞÉmLÿŽ­mRöVí&4˜°HÕsÓ'JeÆâ"°¶7 °´µC†£ŠÁ¾*¤NøÝ“ó:ŸÓ!]Ý ÓrKí›$nÒ‡yèìi\ƳÛs Üï‘09[ª H†žeš›ýB:Ô{™/<ö¿ µNäN÷ÍÉÓþ¡ä~ûÚ\eš`(IH-Dµy(|oFªÃ©Pþò>¨ó/÷•w$Wá6lm´Ííl.‘TD½g ¶]dÓo¨»-ËLZÂ2–#×»G÷‘U”ÅûDȺÀ!æaÍ['šÖ®×´Ln-K\."Nú‹2 ]'©jä_ˆ©„Ûš® ²—_Psn²´ ¡¦Ya¦ÊÄïTÔG·yS–B¡¢:ò;‡3ÖceøM.»¶Ò‡}ÆÍ¾O†™êjqÇC¦Ã©×þÃKWà¢è†µ›Þ2º|>{14îîöš™1ÌÉ-´ÂÝéµt—Ÿv•”,ѸÝl³lËøQÒ\:­bãbhêy‚8sQtCZÍïø%tÖGúv滈©õ$ÎDVœU Q š˜ ³¤×¥!m4å¤=U+æ‰dBÕÕ5"ž™ÜÆîe·7Šß –ÌrËÃ3¸äá'wW|DØ#Ên&÷ÄX0”wôÈW“¶ˆe¦©â?f¡*›mË㇪ï-=¥*x\þ…ë:ãʽÿ¼§íב%eòçÌ@1 [•§ÊýF ÙàÐŽÀðÖ÷F7]•Üçødø!•+SÓnKíIúƒ¶¹,b‰Œb‘wãdºÚoÚFâ¯â•‘›X9À¼$5™«"*àÿ̳a³jé™i4ovvö¥¢o©‘Ü;Qtò-ù¥¿rëéß Ÿî<ÁÏ—>AÒþ'äóWEl­ó$Üé—»êS7Ê0掦oL¼³ïnÚª[,/õfÕ4ëô›t°ì–Ýk`–™-ò4ô|ÿzÀå ?T6¨Bõo…ªtu=ý´M6Ä·ìÚÀòÍ{ì6>L[2Ú°ÄIö½¯kŽ×0¾El/Ê>ÉrûU*äDW]lyQáq°Ò‰åwûËâiH]Ï4`Eb"c.baÙ<ˆÖ%¨Æ„Aö?õ ObµË*¢:ëgÍÕ‘+üÇ3*÷Òj˜•Fy2õ¦²î³å¦w7Έîͱ툅¾×fૺ5¸˜a2+z9y KÄªÕªŠ­¼Ë_¾_3$qRFG}ìïL© ÿ*]+¬ía ]ƒ¨9š!¸’u2Ö¢4ÍwG;Zöò泈¸i—˧•ew ›Q¶OzmQŽ2˜þi‚žek‰)DFB»1X­Ã*¹Vemæü7'3„‰’]ø¿Ôa“»ÃkOY›íÇmÇ©µ„¯pÈu–ÃÅ™ùt³÷çf“$îñ¢¹žx6UÈUkùˆGP‡.‰`$Xž9bXøhšV‰¿É¾±‘ÑÕd÷^ÛÆ»…£4R|¥{Ý…a0J„G'´µ£PòäñÖG¹qE­ÝµÃ+¸_…ÅC•&^Ý®âiª?zíoQ¾Í ²š´˜1L[Ûq‹Ð†­Ø/k,j¡kYÝ&=ú©6î.Úͺhî¾÷‰Ûñä¶ân‘@ÒPÞøÈ{šÖË‘)œÞÆ<øòÔÇ»m¹|ŠÅ·©¢:®wáöõ¬´²ƒ¿ÄšË¥DVh¨@k0+ÜÄ…¢7½Ô|…æ<ÃZºWûOá14Ã[Õ9Û}H‰ù¢×&Ct4ÊEÒ‡1§¨m-ƒ¤ µóhŽ|çÎDNøÜVó4¥HCïﻓÚ tþîÛU3lÛµR>U’³iŸ@1÷Óý¯—å~Ó.…‡Â§ÅM®ÅlÆÒSJG´ØvíQj—aq;lÝ#î‘Âd3³|x_…íéµñ!!.È؉¬ù D«U è]éµÍ’1Ò#;¬î¶YL!ã˜"Q€ÆyŽ'È–™r3Ü:ÆÕݵ»‹cZÍœAÚ;öw°í|SwÎÒùn+“u4™d›-ÇŠ•.áÒ±œ†8ˆ³ѵwy¦ÝÄÜX©¹]€ê{þ.Ö5^¢Ñ©ßQv4™$\l¶’M—[4ƒ{%Òtúu3+rƒ$y,ƒ!jò&˜kYרÄêl¶£\’÷öšl×jÏ ‰»_umûtFµ‰¢å1&#{\„ÉrA,Ó,Kc‡!ór•c–T™l§«W„ÄÒ°ó•ÛO{G8O—º¤ã+ªhØÚhfg‹Åªz+ó4¿j&†µÔ¤WaÿmLÌÝê5ºÖ‚T°O-LÖ˳>ô³ê7Óäw~×DÚñ°/$K^Ú\Du2°ðç&¬>cK•bU®H*¢÷¶O™¬n´Ò:Ɉ¨¨‹Š<•?e­¼çY*÷o©;|=¾Và€sYÃsA¡Êg7˹-©Õ%çéir—5g›Yé—áõ]¿KSóú¯íÚ‹N,fwžÝ Uw]Ù¸5AÆÛïj7¤8òäå‡7/бV ŠÝ§Ynö`pM)Û¸¾.&•Mú‹>äq˜vdKÄL””u±ÆV2p±˜Æ€ Õæiàœìç ÞäXÜt9f¨ØERôÞ©+xÝ·I ê¶CЏ#¨´—Úì^ö¹ ÀTä€@uAæ<ã‚Ëž§1W.*ë—1bªî.å¯YÁ÷.ïidÖ¦Onw|]ê8³Ò™Ž™-QØ­u‹‡0æ!1å1È=Ê阈Èác•¼5xNYk4<ïÿyi-víÁ;ŒeÍ‹{’60½ÆãÄJÜFø„íÇâÅHhR‘cÜ`[´a˜;i F»´Bö¿¤ö!._1Èr˘kLuaÏ|&®ˆkz§%ÜŸPÊà3n²ÛÎhJ3µÄB–±W¾ÁL,Œñ5’À°¬bÌäK¯dÜJÖdñ¿1œShj­æº^¿73zL¾:\Jïð•´OÛà@³©pZEÏðQ nù¬c<¼²VÞZÖTèy ¼r?3/þÉ·LzÊØùtpÌÖ¿‡©—ÄByîv…'¸—ÓŽ× ®A]Ä2C›i6m”³âkOL̹WÌÉxÛª¿;&çZ–mZ™öp]™Ô©¥Q.GyÌlû¸yõ CÞ·Úlˆ[!!*‡€µïY6ÄÂ7EI[büµÌÜN/™§¥íÖ¢/¥[µ-§qÌÍgMfZò)£f~+œl´jÝ»³xØ[&,Â)·Èš³RVO `õäÜÁ×>C«å°y¼AŽv…Ô“ó&ö7·jèÆÅÍEùÇIáö‹ÍŸ¼ánöñ™q’ÕÜ—sKEg{[‰v4V©@>/áÜ~_6xó×W·J¢]Åâ’—Kðq4àÇhI¯v’lz¶©v÷åfòݘ¥Aà˜ê}ÎÐÛéÔ6/ zþ\t|y‹ÃPÅŒcqÍoL[´CZnI}²ÛsïýŸk&Œ·Œ~6k,–’‚ö¶Zg$QÅ¿g“««™ðÌÀhÚ»¼òí:Í8êÃ…øl»·ÁÞ»QBϨ/t¿áÊê4§a’ñtîzLܱ Z-ÒOLí]š$ß(ÄŒ#{Ͳãõ©÷®ú·b%ëÃÉÎý“V×Oí =ß»ïû=­ÒI„×Én”HÅ™™_ìm§"ƒïÑä#Óð…JEU÷ªÛoÝñJËÅ,|‰âºÝçv¤˜¾ï¹Êt ´£¦ð¬!íQ°IÄ"ÒJŒBªo?™§§â:¾ý)bg5¸-î*,ÔéìË\÷Aܳ;gZÕl–§£D®ô”®kذ û{E/ô¨m}2êñòØhíêIy òšuyu«#-”{¥«æê—WuôÒöf9¬©…"AUL­¿YM2Ú¿3%ª¦ºÑ+·û¾ÎÛ—;s0°¶Mã©ÊYÙmâzQܰââRŸ~´Ö\¥«‹¶†'¥ž'ÿÆÞ§%¢#ßæeîÝ&ìÄ÷w†Öž³7ÛŽÛSk ^áê-‡‹3òégîxëJ"âwOï&FKÄâ—BÃV}ÎÍ ÅïXÉgÏh›!éXFSŒËHÌ1´qYÈ#Pñ Òð–ž4ók6o…±´j÷¯øs5Åê츧ªªXH’J' wÃV’›r° Ìœ¶˜½Ls@–¦††ÙV¥Ý~¦·É.d¼R7›2à vˆê£?3·«}¤ÕýG‡lø»‘]a "@–– 5)º²ÌuÁ³ ¼V_»e‘Dó«œÍY§‘µíë^š›WNÆ×ãXaÌ÷÷u··¶ö¶ §i1«ã…c›\Üy´—Ê?MJÈu3t¹Y³jµÎ—‰×8ì1åµ±ð¦ßk^Ü­0Ý7ÍÒNâÍ«eÐ[#F 7Šì¹ŠRmFŸfÒÔÇ—Ê*•X"ºë)Ût'uWel—]oV®mX£cÞú¶7oq\Ö+¡w¦åÜwXì"”D©lê@™kÝ×;*0i1|–æÿ3ÙÅ%TúbëLfë³)êîPì¼U?R­O"-/ªkÝ>›º{õ͆Ʊ£}úõm78v\qœƒm®ð&Úì°‰ª X›õ/s7ÊÄÂ>]v‡A*ÐŽcl»6uo¦âµ5–<ÔMiƒ¤}æåË<ïÙ™›ÛNiq»w§åSàŘ.\w0€@ÚÝ@ºx)KEŒÙÀZÒf >Uêrl.Nùa/šbEZŽôÕ®ñ‹¼öΑSÁ„Å>÷ŠÔÃa\xÙƒÓ(NJĵ‡KÊý¦5+£y&ÜdzSjÖkm8|]ì=®ÕdÔžë*TkÆzo è{o•ŽÇ倾ÛYjÑÌÂJ߃˜Ž<Ç{£­k¸£TØ0Êl<ÝóIü¢¯}ú£¶Å€çÃeú­²0¹mÁfü”Lk§ämIéø<Ï5YOþ&ºæ¶f²¦Úm»Þ«Šcb¾Ž×‰éúƒ¶¹,b‰Œb‘wãdºÚoÚFâ¯â•‘›X9À¼$4ÍYWþe› ›WHËI ‹{³·µ-=±¿ý·#sX¬ðÀĆö½íÆöóADcî³ ãZèöʰíðHc¦HšûŽv⎞6Ò±'Énki 0ÚÐY,Á¤°ÕVM`óÔ&•‡¡]þTí:n¼éÜ‘íñ[ð/LsÍú‚í¾‹Í´b—e¡ÜÉ—Žƒ½Ä_­¨ËIºi2Ô_Ÿ‰¨Ç*È¢£U/ͻҜïË•ºÙË2 ‘Nù%u?[/‚zµk½)!½á9±"tÃòw(b\R‘a°›˜â1\2f–Ž{xùÞ,iQbˆ˜UîØo·>_×jȤcwܲòÚÝ”Ð]×»_ŽÛkÇ ÅS‚!¶ê2Q «ª5Á‚W^ K)%‰åÌUˆ±Vë+Úÿ¹kÏNÌòÕ)«Lcæc›÷¹‰•Êéö¥šñy/¸ziÌ[ k…’\xØÎþJÛ—f8™iÃÅX‹Þ¿±ÖÌÃÍ•+e­Ù´ˆw'ísµXßjºæ£¤í¦ánûÚ-ÒÜâBãÜ,Û=LI¥ì 3T€SEL;ò» .SçòÙC»Zì;Z»8Dî›u¦›ýFÙ­s ›õWé%t²5l<8êÞ6޾‡ÿ§¡—&¦U1Ñ-]¼;Þ¨†˜vvÆ=Ò3¾¡EFëÒjÄd4ÉMЦ9‡¨m;.0¸î‹×Ï¥ˆ‘óŸ8UARd[Šÿ1Þˆ©z~NŸ¶úuu\[?»¶ÕELÛ6íT•d¬ÚgÃÅ‚ }ôÿkåù_´Æ±t,>8ö*mv+f6˜šR=¦Ã·j‹T» ŒÞ›Rã&ešL 7¸¨T¶1…qã¨6Œ9'Ö/$¹[Qt,7±Sc^Í‘ñw°í½·ßÑ·Y/ŽÃµå”h܆7,P©,çòäÍÙ)šGå᧨³ªDŠ'žvã3W*fòx¬˜å‚ðq=> »¸~ BÚ-Ê C)qYe©¥‰J”ÜÈ‚XÌ/(|Ê„XªkOùHïY²q»æÞk´"êËù‹ÙÜHÂVͺLvç2 ¢Y©@–¦à²YX[vùmÔcs0Ñqÿª¤M”z³—-ÿÌ%WNŽéÿÅÍõKÚÂ…ÿÔú^€“Â_­ú-@TwïÿI?õ±ÿþrªW½¿i—ãh[.û<ÏøÜrÛßgJë·ŒY2Çp+s˜”…î°ŽKš…ÉŒWX’³#Bd°ÒZ~À…±IWZ§VÙ^éìâ©Í’–X®§Éjí(ïBYµ3=¯ôâ–þÒœ~ý *µï1B¸Ö±[ãq¿hdAæœ^ÕZ¬©»3fT­ÔËk8]™í´ÙÞµ?paUgkíbø†Þkt4WÌVñéŸ?€}¢©ÌÓ”]#7\Hãr£yaïÕfV®\I˜ßÅõobšJmKÏ.†£v?-ÍÌâ¦L6ëÇQÛ½‹%#n“H”Û9-œÖ ¬±%ƒ!Æ|­g!:"RÕlV®+f-v»¦Ìl”» N®Ü·fw»®íj‘Û³õkÖåŸVÖÿÊ÷¡Ú¶îÞ¶ßr¼ÃÔ“v«H–†¬‰È¶§Q¨@5 ý®$e†¯D|ÏG-6¿ã{)Ô›zYhµ!RäJ¦š]÷M^·®N‰´™wCb[…à"ã¸ðãǃÚ'ËÇÝòÛ+ýk2®yzu&ËgÞËœýæLö}žxÌòk¹¥¼~ë{ôî#ïPåCÛ;ˆ$ N»¦äRÀØLœ$²ËQAðQ—kyÿSÔð¸—÷¹qe¯.L„½Ã¶ç:p©jâÍÃ.žÙ?ÊE½9ry cæaøi Q>²oÍ›Àvc‘‹¨Öøý¢J6©ªÜçqA]2á¤Ö ÆÆ»4IF9ëeæŽ$*%üu©3‰yÏsu§ËËg©xå•JµVëZ×jÊç¼çãá·Êíð8,¼˜Ð¤­ˆ¹«Sb®ä’³J9d^I òòËòë»3Ü©y¿Í%†Z"ÝÌoüY½¶µj: ™;¬&JÜï÷=ÆbÊñîÕØ’¡XG»˜CsQ·ÊÔ$©§âÔñW4Ј›ovõMg…»os¬«™­bkUS¿1Û¬Äá}’d¿¦rn.ÜßœÎqòÖ^%X¹ÿ†RàùóyžzÔЭLoü¥?~ëòûÖ^õM–j¶ÄÚ”ûÚ~yÛǽÕÛr¦îQdÂ]-°¢_¦Öò)wá{óÛËt|DKþkÝʱ©RÆËªûÌ©º\Ù“;ìšgG~–jôó©Îåcdõн»²&ºãh ™£A+\‚7AwÛå–«!ñy!SF¢ÚÌj·3iÙ25­sþ³¦üÏÿíb–§,l:oÿ"n´»®n_ÝLjGiî­‘ òa´Ã»w{q ­½lEr•ììLºbÃ?/ÚÆº"#V e¨ŽûÙ_?noZo©Ù9ª«“[K~íÒ3þ‰>öá³sìÍÀåÏéÂ׎69Pírµ­y,º[‹ ÂDRf|ƒü_µÏ\Ú²¦¶[’M|©úù­ß›£°Ã¢Ô°ò=+vôÿë2_º«nóKþÝNá¶Ç‰±ms“vºa٣䱜_qáö¾Ú§¢8x}Ú¸"Su¬µôÝúÊó~1Î*ºVÓÉwðÚܼ²—´¶Vå5á6Òlx¥kñ½ºŒ%»ù8 G\uüW4lrôÞoGîòfË碬È:*Áÿ÷í›™±úƒBvMÝÛD>Õd3U£p9š«Òºã˜2ÍH‰ÞV³¬òÙb³aù¸‡™ÞyÜZe®]l ú½©}ÕÙè!iEDªy›ø·Ÿ¬É®Íï5kn6]äbžÌ¨DCù¥uвÉW”3/€êuÀÌCÁ‡å‹#-lGæéw ÙO)O[P¾Úxßk”߸l;›º!QHˆ§¦jK5Ø\+¼v—æf¶ÿcç‚—–f<ÃŒX#~­ÎáÌ~m\9†/{µÙ.÷I¬ñ;‡dÞ÷¶N˜¨7Uܨ•¹«ã{¢I½Ú×I½al/—!7Ëðù¾Pë)‡Ú·3rF”«WšÍüÆÓÛˆ™Ü}½¹w{cŽ{r˜ÂM5Þì7éÚÜ:V?/G"# agò¼U)¢+±OÙ¿«T¼Íóš³j:Miœí×eÑÇ5RÙfëdØ¥ªPn6Ûä©ÑÏD¹ì~m+Z¨™K” QbZŽ’¥ÉÅ^=:U„U<Òµ·íOS¬¶ËlÍV«}ç6·¹ÈêrʲÍ8øyfáºíû™ïv‚É6› 4)ªÍ UØw ¤2:˜£×ùŠ?þ_=DZšj™¯»e¬®õɯZ~þÚ‚­2¤®nÒÍ7mMÝvݺì3-¸”!•ÔÅR˜˜WXY&¢k,* lŽƒ´‚Èõu5–Ž,òò2¢µ=k·—.«h÷Vï5Ök-P]º~ÑÓÍ·ô¸­vçjî0§Â›$-n?˜9Â'b–)Ë@ønxây‰{ÃZÔ—F´Ë›§Ÿâêå™#çÌk¥ÔfSò¸¬M¬ëÖöÎáùE¢Ù<]mÚÒ±È~U¦õYñˑώYû8çËF¬$\ «ðsãp~™µá/åû%‰vË÷ ’RdŽ”ù×'Þ×½¯¦ßEâÚä7ÇŒk*8qÇÊå©tZ‰ —ífMÕvãß3~ÌÔƒ•ceÑËû¨tü>óíâ‘§º¶D'ÈM†ÓíÜyíÄ.¶õ±ÊW³±2é‹ ü¿k´DjÁ,µß{+çâÍÍëMõ;'5UrkioݺFÑ'ÞÜ+çvÆòÒ¾¤9 zw“b Tk¤dÚF1á©ÊɺùÌ÷g©ª}Y  ”°•Ví.àv][•³+ä¸çLtÌÓ6²Qû“å/MÄÉå³–[OíÍÎ@n(R Åù‚g ˆÂË}— ÎŸ”É«"éÈ<ä€es KTjýŸN.£³¬ì·6j¥«ˆ•Ò®úÆ£fÃCW Û¼&íöëÜ"Lü¾Ñ€Y…u^AYr!×»ç$c-CȽMV3>AäÔÖ"#‘W…·­;è–ÆõX¢¦£øŸ‡†½Ì%ô]²B÷ù[ðí‹b\mé 9c¹E¡ìÖ"Á«µ7#Mv˜z&æ«Û;Xåvã¶ù((råë1–6 NÍ2#Ô !-2^@_±Rø¢$½ùhÉ>Ó.«ï>Q×Ý3¯™ceÎtÚÙV7}Õ†Ý5í=µ?rÙÝ}å1—¸ÎmšåI]¥$pÅj ¬X‘g$ qo#K*·"hDô¿Ž<Ì™¹SÞfY —ÐÍÖ{oŸ7ï ¯Øÿ’Ëê´¶Àä¸ñ‰·ôìôðý·RþOx0¢(T‰¿díó‡Ü¦çtˆ.XF°2Øñ;€˜³,yýž:–hj§Ö+·dËþgW™×v—"êK½;½NŸf•[ÏhΑ¿X6¾Ñ0Ñ"]òµ¯fE¾JˆúŸá³/dcsxërô.žæªæ³í3Òsw>]ºã3JhïrtösOÍïrv_ªnß{ntñG-}²^‘Ì,­k‰F½ÚŽâgRZjgÙ§š™zcÜžõ¿i/K—Ýç7[,?Jhµònû8Ïýl¼^ûTÇrí¹Î‡ÜJZ¸³p˧¶CÏÆ2‘oN\žhù˜~ÄJQ5æüɼV¹躭oÚ*w®Ò˜çÍ×Û¯>L‹C/Qvéx,V!“¹4$ HÕ‚·52æhãZí(²Ðùï5\êuée+Šó“4"F¦Èéë_Ô÷ŸIkðò˰ƒ¹ì{…÷!›ž¼D!—Q¬LX›²÷f2™zNÖö˜˜ü¾lªœí*ˆšþ£r2GpÓ,×õg–¢ÊØ­LlŽþû[‡5¶FÜöyÛOQÅ*ß›4ã¨Ã…Ž[G@Ì–’¿Ìb|¼²ÄüºÆ¬ äÉËg ±½½c£ô¢¯×6…›Ûkˆ¸¶Ï½^Ò·;G„ÉVcöæ’ŠìdÚ&‘™Ò €_†¶‰b)7=b$kµ6«žæ¹’Í/ÉËVÞc›4¬›c¥)Vµ­näÎvÌóÊÝ–î×ßµæEý×¶6»í-¼SEÓ’\øôî$ÅscCóXm˨<´Ál¬TUEliÌ•¿gô™¿‡KZËNµ%ò*E*Ûоëyø¬Ójä—ý<›±£o~Õ*LÖml .;:p¬¼™#fcžZ$Gmg–FÙtš´[«îÝ«•ð̧nœÕZ©{å>÷ÿÔ›1›õ¦öîäõîH\{ØúôÏŽdAƒtïš<¦MYÜ£’üÕs dUÍ«*5~ϧ3_›gîóišùj‘W'Ò54ásXË[í»tÓ½l;¶øs7;Å4Ø×6†Æ.Ìr”Ã|•›Æ - ZIÖÄñóðQßT_3›ªÖHËVœÜÇue³+Ut%2µÒ»_2Y¶hÊk'´×=κÓ›¶ç+pbÆcvô´±Ü® &s=ý*Lãôíሠ¤9ª2i^Ê+fjµËjÃþŽXÑÄú%šV³-³µ²·/f‚£›uj׳+÷%ªÄÖ¤š¬È—ì½ðᬚ)­eá¼µ-kÚ,"±Âyx‹§b¾cɾªã2¢­úó›iIÛ›.·»Ëÿ­¿5’l¢£~nN‘ÖO¬×g¿3î唳“Úû„}Á»¤tj 7´ØÄnÕtƒôò+,X³¹i‹‰_/ÆeX×B º~Q®ûÜÉçå«QνANDT‚aËü§:ŽyM¦Ï¼o6Þ¤^ ãõpИë6*ì2]äÙšl5ùƒ‡›§†fZ€²R‰öÍÍÜoGúníPvW˜ÍìÏTè6í¾Swy£PI[áGPØî+”‚bËHØ<º‹æ%û¦UJ‰Þåþ_´lêÍâg²sð~›¾FÝrѶk¢"’v™Ò™bs¸ÉHáÏÍ]_¥Ê©åöPÏ>Ó¹žç©úzi12º'!lXŽÞ„¥ ³+ŒiA?M‡Ë¨Ào=qzEVËâášjꪜ-5=i¿Éµb–îœÒ·díÍ×·Ó´MºÛ9Ñ!”W¢Ä›05,“ò‹(ÑÌÈÚ\ÍÏÏQ¥]Þú šøU­–çK6ÓsgR›F*Güçî¿Ö²þ=Vží}»ºì®½^=伯7^2Œ,aiMa¦obRÍP)¾o´F¼«›hImPÖÍõ™jç~ºÙºÿ'M°êô÷U6䉓ø”e» ½R;.^níó8í9mt05ùMÍe2ÖÄ!Ä•æM\Ögš6±+kÙÛ klx;SnábÜËn&–2QX¬Lf²dH·UÁ|ToÓRÛ¥† .—D!fk-´Ù¯·ZmiÝÂd#;’ÒÙØv¤´ÓgÅsí½ÏylÍÙqºF•ᚣ´Ã6œFÞNN(æä†­±Ž¢Ö?L±´AmW<ºŽËè?ï%«9u[5jÑÝC™6ÔÏ»c·«Ì¦ÌÚ÷è“eu›ÜØå У­, &^Á#TÚ};¡È€³.L‹”HC_;)Û¬sZÝë|šÁË]L¬î,ÆU»îÙÎ]n=³'{ƒ» íÓÉÜã«"ãŠÀIhÊë¹r±†Ù¼Ø¿æå¦™SÏ7WzfÑ6Æ[íy䘶ºÕJ}·íU×—1ÍÈìù›„gáJ0dªÝ\ã‘“Z½!–)’*ñj6H$þN+ñé‘E…êuíµõ]»qÕ;gÞfU.ln=ìÓg{ -åëg•mÛn—pòcÃz˜\mè3¼l‡‹Ž“<<¼µÙV§.(KÄã“ jyZ©ÿšs{vÁ»íR Ì´;¼c³t&€±v–¡ŠÈØØ“ˆg™‰ò6¬?//}’MáöN®Óµênɘß[³jngî;žôÔ8 §ŒžR4›¥dt>‰ÚµŒ’ùøŒ­,<­nc¢S Öæ–ïUÍ~¬ÒôÛ>Þc›53b¬Ñ»¡‰µÓsŸ­k©FÆ\ÒÝÙ´¦Gb÷¨Ñ,L»;¦t’kØ»%‘ QÒ$I®7q/i ¸L¼½E—ZÝ›½NŸ½Ózš³tæ—Þâ¤c¹ùns娮Ÿ¬©Ú²í²Mß$nÏÜ¢ßo.*’3]ÙbUäÚÍp¨Ø³s0çÏ0\9ebª[kúÍÃCrä›{.¾Î-4ª$"Ù\Ç}å¦ð‘áí“÷ÎÓ—4•bÜ÷ukiØ­îˆ!BlÀ~RÇÅ€æg]^’*& Ææ;ñS5ûÙl÷ZÝ#“tÆ+uÙMuÛdÛ9™“fýá|7oðØÅ’L >÷YÜnC}HÜ¥¤L_ÔaÅXÛßuüòVïÞ,Üû1ïs·±E¦rv»,Kík\â,ÍÎê[KäDîo‰ÞÃlíæIö~ó/l‹$@hÚ;Z×Vm3æËËò%ôÜøÿËx1¦j%—|“þɹ} §»¿ý̾±JºWÊ}ãÞÜüܽ—?)¹lÃ5âÏp쇡»r¶ñɥŗ{ÞÜn¥ä–Wó2%¹%ÊEü^^릅zè÷n«eÙ3tßÄü–œô˧NfŸÿ#ÿ¸~Õ4xMwdMt Æ$Ð3F‚V,¸)n‚ï·Ë-VCâòB¹ÅQ¨¶³­ÌÚvLk\ÿ¬é¿3ÿä;Xèµ9caÓùu¥ÝsrþêcR;OulˆO› ¦Û¸óÛˆ]mëb+”¯gbeÓù~Ö5ѰK-DwÞÊùø³szÓ}NÉÍU\šÚ[÷n‘ŸðäI÷· ~ð|¦í'HE£7mmäF½ÙbÔ²85gÄmåu<èÓñó×8ªJäµ5·.L»ùo§]ÍÂtDš-º©oó'ÙÊ̵°F>ÚÝ5+×›ILzlB7aSh‚÷×;µ[*åqU;µZ•fHjf7{6”7‰ôãóyÙ·ëóy=£ª€”¡lb®d`o3Ókó7 Hyij›Oãeæn3§ì¸;NLÖoæ'‡án Í¡îh€Ö„ØjN:‰µÒÅ“Køž.ÇNýGŽ)I.CäðeHµÍÅSx%”5lªÜšnOeÅGkmÏo6,†À)Th¬1YÙ l#³š¥ œõ½Í=N|:¹Ú] Îd»¬q‹¥k7óÉ|=¬»O÷"zJ6ç!2W9„èÑ%],_TÑ’»- èknŽn~$G˜ji…BS¢Õ dÚÙsr{Ç5·èe6¥×,ÚlÕ6쉕ÇDøjÌ«EÛÛ\ݲ0A—Zæ2CwL4en)»Mì{$Hg.¶‹t¹a˜y‡/lÍ“QÕ6Ìîu–ÞùÇ:wZ–äò4Õ•f×o [k‘´av«ˆ[ß»* ðD-  –ˬ×qXÝBè` êKyHuСW›ó9E—™ïb«DÍvÔÏl”j.™+£z¦çêW­üʦ¤Š“wvѵY ÕhÇfªô®¸æ ³R"w•¬ë$<¶GX¬Ø~n!æ\ó¹´Ë\ºØõ{Rû«³ÐbÒŠ‰Tó7ño?Y“]›ÞjÖÙ'Û;…ö—D²¼ãÝz›CéWX2u8åÉçÇÇìãŸ-sËÑ$nFoÌöš[–*ívJßÁf_¦íã·çËÝåØS{Áž˜ˆc3ZËYJd¡¸å«Î³r‡íòðã¬Ñø‹›Ã—•ÓüÖp5ú“Ë—¹Sœnµ¸ÊÛ¯)#º»nTÝÊ,˜Ck¥¶KôÚÞP0%.ü/~{ynˆ‰Í{¹V5*XÙu_y•7K›2g}“C¬èïÒÍ^žu9ܬlž±@=§¼¦±ZFÎSPˆÖµÖexˆn°m'8ꕃO_ÂjQrr•b,#ßyô”åômíÍŠLìÆü¡J±UýŽ’k3ç/S3ÔÊû¬ƒí=Í‹ÝìˆRgBP&ÒeY̹¨šÚmý"=Q% Úq°æ6)„jE‚&®s3w=×3zwµeœ—iü<Æo=)ÝÙ×Õ:+†ç·îŒÞÕÒW6*Wt‰¦ÍIªí,OUà‚[5üI{10ð–YT÷"·§ší†²GÞ»u®¿¾ï†¬[üm·³nneÛ{è“Û*bR­H(Wöµ—cÆ)A{çˆj¯œ„u<_ËÛCš¥ÊFn¶k ºÓQb­U×ç{]¼ìzÄUvì»vîӳɊNºÊ(Ê]šaó0›– HP˜h_Í÷±®ÎTW¢ù¢íé(ç±íkÌ^çk+¸_™Ëîùfe£}öîá>BµŠÒ¡K¾vŒv\Lž<|fœX+æóë“R­6+Ÿ÷.™¬ûÙ³2Ý´j¬)m–>ñ²ò?¥›÷r›»›±Gx’/m„"± u{Pvµ¸ú½L~ ÷W‡/775<ª¾sB"'ªî=•ý¿µE~Þ1F|Ydôê.¦ý1†r?z//3œÓ—-&TD¾ŽÊv«ï'oÙ»-¯ãÄB*­ß{†Åß¼lùMÛae'²Ç=¶¯RhÒ#º÷½½60óZüÄMày|^*=&rÜGe«-Êòä—a¬§d5U¨—ŸÔLÇkQ›;·žþbžjï.Œ75‰O‘÷±ÿ‡ŠCÁÙqý©kÊÓñùº~1®ˆèª:ÌË™™˜ÜÌÊ~T›?'ÄâÝ Ô²Ôn^^³[šÜÉõ]-.ÅÒi¯¹»2VæÉÐ-÷´ærÈÜcXÃc|˜&ûØç«Á š7Q|Ú|Ù¢¯™Û3õ=ΣhuŠÝ˜ë.«£œ©L4íK'½ÆÆÚ½îå˺\¶éÛ’f·i‹yˆÁ¡`%ä§ØÔ\†ÄÇ0R’F®yŽ<Ú‚W,!és›†ºäwÞ9òÚ¥Ú•‘©_CXíË.ní.âªgKEµgobOÞá ¤ÈÜ’éQÏP©iÑ^&~T‘ð‘á‘jÅj"S…®ÎWm=¯“ù5x]<³2ª.ÎS[²ÜÆ¿3›­NM’iÝÇÙLˆR#öä@LI›t´1HÓRîûØ:Vò]³/5Z¢>טXT9Qɰæn¹ÝN&Ëøg\µF¹®ÂúþÏ๼ûDÅBÝ77mqäC(a·œÖÝ‹ +ŠTk,ÍÄ&Næ'¦?–õwUEz»oó=[ئ’›RùÚ’²]ŽEkøé— ºñÚÅÚd‡rI܈8Ed4(O½& y˜ãÇ?@°=œk“4#µœß ÑúeÕŸšOdàû¢L¨·»m2–m”6”.U×k¹„ÝާR3@ÝÓ‚F9Ž®—˜E†³L‰Ý+²›ö7¶¬½©kšY=í¹ÔµX+—U]±îïnÔÌL³gkN‡¶n=·oÕ¶àç°%XÕe[\³³dØÙiZѲCòÑN>d"mžœ*ØtóeëíKï5*!«*Í ¦D§vG±Ú“M¸û3ö{îÈÜ[ºn›TÇÈ^Mó6ÞÔÝ3ö×!ª)VèÞÒ]\M b€±×àÅvJòic‡Eu‘TLy™nLÖ»é%–\©íMG¼Å>eyŽ©û¡]…Ge¿Vyº™ÛžŒ×HÍèí=Õ²!>Bl6˜wnãÏn!u·­ˆ®R½‰—LXgåûXÕ¢#V e¨ŽûÙ_?noZo©Ù%U\šÚ[÷n‘ŸðäI÷· ›goî{4•nÖŒR.¶nH[cÂD‹HCժţ±ÔrÏ{Á…KVTDÔËnò¦å®íé6›Ñõ*í͵îÛ—ÅðÍWÙ·†Ç—1nfí`G*æJXƾW`£[Ê<ÄŽbX†z”˫՛ïzßÔi9•Gg-¼k‹ ý¹:D.áX'ƒw´ädŽ©ZžÝ/-j÷¯í_ó8³B$|ÉþFŽâús%›l»mò˜¹-‡ÓÚÑÙ7Ä΄Íñdm†™kl›´X,6š¯„8 L­4ÇËÓªEM+f–3ðíqÛňÅó}dû®kölXæÄ@>Êœ–¦s£Èp­ÓÄÓUÐÜ$?¨C‹‘ qXê(äÌÀx×6èDO«cv_—7·kgŽY•aŠm¯vÖqMë˜KìIŒz‚0è{šly3JïºI]K¤5ÆlÓQ“Y’óıÄÙ±•<”ôáw-Îfk³¥ÙªÓªu©~m¦÷ù~S~^—Fm¬ ÙÚ!wã÷>æ¶ß·&“©W.Ij\¢9BQ®–³ø\š9ý?Íåó¹c†Ë­ü¾OÊ]»‰óW†¹ËTkSm•6Å(ë;µ|c¶Ý6)OÜ"¹Aå* ¤øÚÜ >˜ðãÇ›Hü<¼µµ#áó§ŸÚ4£Qn=®w•hìپѷ"lXJ|D L7,­q°š%Ö†^#Ï“-™³ Äu„"© ©ò]Ó?ÁÚ-¢Ãnß7å›=ÁQr¼w’I÷µÄ­y1iF¾lóD€cC[›"ÝÊžiU´üßÀÅ.)±4”M ûfªÿÃÃñ]nÛÜÁ¿Ÿ.6-Æó- ÆàHè[ÏŸMÔžE'}/g[*6ˆ^Ðö»Wªî«e³aìlûy²MDÚêãvÆ÷KÓ(fÆ\ÒÕ/·-R—¹ÍUÐÉÛ¢Ø(½Äˆ#œp³ djÔ=,ù@9cJR­K_,þ<§ÓÃ.ü×C–dUîÑ”ÏÏc¦ãÌvä·‰{·jLÜö6Ø‚á¸È¹¬]›p½î [7P’ä1Ž•Ç¬ñ Ÿ·Uf[Ý;RëÍÔ–ÅìÇtç–ë)H±’d‘º¸1Zµ™.<ªOgK˜·ÈB ¯eË'¸¬¹ ’âÈåËŒ´ÇË=c=_&®·B¢ýc»—5®;-æ›ÝÂéÙæ·{5’ÓÃSœu”ÉüêlÜ<‡BJ€¸ÛÒbRÇ9z,ÕúK—š¹=#–æù\´þ§T]-\3MÄÏdæ{ghÞ;y±$ ÚbD`©ŠÔ®ì¹€ÙÍRˆ.sÖ÷4õy°ôæ:.z¥÷£›ûœrD¥5zŸ˜¹rø{S4îDô”mÎBd8®s Ñ¢JºX¾©£%v[AÐÖÝ4Ü$üH0ÔÓ ä”èµCY6¶\ÜžñÍmúM©iË6›5M»"eqÑ>³*Å7jí™Ûão†môJEÝŽ<ÔÕ²îœû©¯œFWñ ¼Œ´upó5]ô¢SuÍsó8Õµnyhk]îñR-£cð¾VȈßÓCQ`H°Û…½µ D[<%J=ÁhPÌhØMÖ³ ÖáÀM¼3!åQ4h5tÿ€vÏ Ò—¸5 9iµÅn °-~92öÌ-|‹ÂTMÞPºtè €¸m±·$”YÊ\„ –ѱø_+dÄo顨°$ØmÂÞ‹Z„¢@ˆ­ž¥à´(f4l&ëÙ…kpà&Þòˆ¨š4ºÀ—@( Qâ&5®(]ˆˆïaµ­ÄŠù߇´eÌEíSÐ ´€P @(Ӷȳð´Ä­ÚGf X±1ð°2·)²cÍDбHh €P @( €P @( #HÛ"Èr¥=+cÑÇI„¹Vàzg{d[Å@ïÐI €P @(ZÎÙÚ™2Û¡ÃŽS­{^Ϻ‚íãkb>v:žåñQ4wÓÞYP @( €P @( €P»Wlí[A“6Øqâ›-ÀÉ*¹[âºÄr§ .•Š÷–T€P @DÜöˆ{ªº}Å ’ž6,cÆßabv!ãO,|ÆÄ—kp¡‚€P @(Ӷȳð´Ä­ÚGf X±1ð°2·)²cÍDбHh¶xPX×DB’É›I`#s/}¤6âÂæñB@.•‰.€PÿÖú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿ×ú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÐú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÑú^€“Â_­ú-@@îíü»lvæ ³‰6rÂ×¹¯Ç‹1ñ{…YåDKîk8Ý(îEUº×?³¹·(s¢ÂÞb%!4jdyî »°`24LDÖ¶sާ0âCÍ•St¬<²Ïà ¼f;BGÒâ-—Ü{cf_k\´áãÅh]–ál¯Å9jxy¼5‰§»µÓWGyDß©›c  HdYIŒÀ³ö¦´ë[ ³Ë_hG#SËF¬Ð[¯Žž?NfêTj¤SÊÆÍË7ÁvÕ¾@ÝÀ›¶ÉL  âD– Ú×÷Jë¹p*zLòÀÕ3¹v¸Mò¦GKˆôÄ  %s½„´ì$Yg‹Xx¼À÷¨š{‚èH¯nÒ»„Îÿ·n-lxR’÷"ü `™øãÁ‚¹0ÞÜÔM) ¡`Fþøìä‰U2;WÜ_phŸÛègòîXŽxÔ9Èšï‹d¤lV_/o V©{SºGÙª2ã±÷{+¸CEž’^¦R0?7Ãjê­‚ª-ØoÌ®m<5fH§ž]šg/_Ütxƒ¹:RZד˽‹ÃÁ·->ogš¥twšš{=Ûú?Í:”ô<2×Ô>qË[ŽŸ ¹|Tu=ý¦ WwiJÍ·½àî¥--IBŠ…>ò…¢K½ŒžÍnAôÅ‘ê~+aŠèªNF?ùƒÊˆ—“ýK=§}Û÷€&í’S)a|H’Áe­·%ܽ4‘2-긤*ËS4Œ®cÀO‡HË+2! ›˜kL5¬ëêüo sîÃ’˜Kº˜æ ¸Àn `3H¹Û™ €@?´g…GR«¡W \¼0§˜Ø§ŠNÜ$Ôï?ÏÌCG8qåøòù×m´ü!òô|~Ö^®ªØGUÒò£ýcG?å:B×pî=³nrâΖ„=Ü4ÖÆˆq¾6À ¬GÍËËPšVBEMsû«hÛÙ¡6ld7,1c€K.Xbekå‰cî˜{ÔM:.„Šöïö]Âã=Ó¹6ͦü7h{Xoç4ÐYaó|zgê»YaÛ¶Óxˆ“»²49±ã0—hÒPÇõe¬°@>³zŽSÏñeT‰¥SÊÙxžåd¦*¤³y=Y™?)ns ÆÁ³™b •²+ ÈGÄB^îU€‹»wݳžé)—½†î`®Å{}¸êåY!°òš÷èÚ¶ËqŸ2<{pù­ôZwç!ñéžöîÖ®&”‰13ã¼jh®Ãs°•¯q±[ ÎÖðæ<ÃïQtw˜‹(²Ó-C"1‹RËd&± ZþÐò•¨i/tí2ìâ6;F-¸ºàÐ+.Öãév%åxKÇîÑ4¤S¹M†˜^óJj‚›°,ØŽVãq˜´#˜ä_ÑtnÚ14•AÞû#ùQçFr¢†mºÜ²Âß'À2û*—:T›¶ÎÓ®”ŠËåí7 ãØ=ç´ËÚ×¾uITˆßQŒ½ÿfÃËLX%ÈAŸ–º=%X/ÆÙ9µfHönÑ/ûÁ·tÁ;ªGJÎ7êÂÄeƒ8àX‚ØEðûµ+£¼¦Õݧÿ¬ž*vˆÖï=Žâ“¶áã&÷ß]|{_sy…b¾<žÕ<°2>RÜÌ@ng{Xmn7½þËZ±VT¤H•°;£iÜÙ0¦Gzn-5´BÜ2âø‡-²æ­] 14¬¼ö/síSÔF™­E®Mh­â&—Ø~*.„ŠÙhM*‰ŠÎ·iн§¿aokŽý¨–õ>AÇ?9v ¸‹ ,,GªG¤$ }kø«Q#KgðÑÏ^#ߪ¾´“làÆZ¯¸öÆÌ¾Ö¹h)ÃÇŠ,л-ÂÙ_ŠrÔðóxkOwk¦®ŽóŒLyL¹XUª•Æä'a^Y–%î»DÓÜGyéw6Ô3+)‘í:÷á¡v†¯üœµ<<Þ Op]äÖLJ˜cZÞ8ÊÖ"ÆÜOûKx± 4·w„‘sõFù×#Y~ŒüëñòùOŸÙ¬Žˆÿ°ò¢wÛ2?[Rçeꃃ;ÞÂ+ÔÇ2"ÇÞ*¨sY%;¶ˆýÇÜ#´Å{!"JCP@¯c,Å— ùôù|Ó5óÖ&•OKšÎ5íIPð¹Ü Ú«„ÛnÐôšýuéG¹YŘ⻲1iqà»…¼yøktG¶‰§G”Õ/¸¶ØnTiR§Há¤Ñgâ:@E“2/rªa{m‘»ç&H’¨Á¨ó‡%{ZÜJö7þS2аï†È¼»î0ô,zwfºñφZyçŽxóaâ¡ªÑæ%îǶm Üe¢07ÀNh…‹ùy.¿£Eаò˜šR(7>ãÛ6î2Ñà'4BÅú—a_Ñ­†™oa¼JGÈ@Û{ζëîFMhØx©¬kê˜ùšYãýjÅЈ¸Ú×q³©(òª%Å.ãIT¥ˆæ,SĵĆöâ$$>‚þzÕHhSbl©U¥ÁÜß›lã¼éiä,-<¸øÃLjø°÷*s+fÔng:’”Ä™Òë»/ý3w¶Ø¨'î’Q¬P´îñ™“4óÃ?v»f6W+pœØ³6bIw—-‘ÞJZi1mÜ×iÄ4¼aéÓeù\G‚ù€ª|ñÅ/,Ý›¼W™SËpÀÝ·wÛ¹(äÁ”‰ Uïc50LG…²¾dB<¼ÜÕ*°H­“a¦¼Æ;_rm›·Ë¥¢O¸h´ÃŽ,‹Á¨¼ýÝ@÷ƪ Û¶©…6ëõm†[Œd˜:nÛï4ê ®\Žà<.gb <ß+ËÔ_½R‹Šcéø[7<»msJFÔ[ßùöfب¹Úû‡oÝ ÓJ\õpÕZØ&K½ý–_ ôòóU*yŽh±„|©1–Ù¿íÛ©1{|¤É4߃,¦ Ü/~>†X.XxKÅîÖ&”ŠYó”º c»÷&Ù³aù¤´DÔㆻAypñc¨C–üÛ2,¹È˜RIeÒá+ªöS¤Zæ+ÏÅÓbX™“~ÉUól»-¿Í5Ô¦œHÓ£a`7/æ·‡:TU5*Pv¿{mûúQƒ’\qE³D˜!æVpçm1®®l ¦.Žÿ:·…WÙ'¯¸öÆÌ¾Ö¹h)ÃÇŠ,л-ÂÙ_ŠrÔðóxjN”ít.Žój÷¨,4$(–óÓQXÆö2·-wãÎ|‡Ê>éSãnÚ˜§ÅñæwÛÙr•¤ì¶#`;ÚÄ+ar `\ØÖGø›tmÚ¢¡êa1vpXLor]þÇ7æUÿyàªT†Œ6‰‰¦Wqm±S$JB£ÝdÃhˆXí| ddXØÄ­Ž,ªbš5¬ëS×÷Ü„Œ§J@!ª & „ƒ—͹bKóÏáçz©R OwnÒ¸ŸÇ¦°w×½A`)¡!D·žšŠÆ7±•¸ùk¿sä>Q÷JŸvÔÃý>/ˆ¦î.õ^Ó¯t ¤tÑÞæ ž1% Ø)º¹Ûæ²&cåreóB‰§—ý>O‚[[Dôúªâ~Ç¿þhéiÓÓé ã—²R¤eö?;kÕR¦ˆú\ÞHrEŒ5š×ñÇÙ73¸öÅ̶ÖrÐ3‹ìEÚ6eøÛ/BrÔðóxjSOqK£¼¨Ù»×ó)ª…¡†­æ[,øðéZ1¼8[çgŸö~kR)F?ñ#ìšô—ŠOËê–‘{§i–mTi±ÚÈö¹4A W]‡ÐdÛ yvk:˜èšî+¦CL/a%é„ ,Š@ÜÕk¯sp½Í^Ÿ0-ó½U 0ÂdtDÆû¼+ ¥ÝêéÀ®$ÌÇ ‹L„Ž6!g–CïòÖyµ¬ëMf]£|ú¶µMÇ1 ÑŒl9–"¹["°ðÌ„|D!åîå@CÜ›fâæF…-zxêÚAÂøßP®AÀ¹y©]Åt.……â@n‘ `9d= +¯fqµÏÊ¿3Hù=žjØi€+÷žðÛvi‘vùξi\Wb1²×¿Ì„±2òÃ,šBÒ²§|&æ—‰×v„:”Šöø·¶šH‘Ü{dia¶¾Z1œ0I4,ÂãáÅW,Ë/g–‰§»µàº;É’e¦ jÈ1ZøÚÙì6âWÀ-Ä¿”Œ„Gâ¤AtmS”Ù1&GrcÛ‹Mm·>i b¿E½ªy"l4Âöfç¾ÁÛN˜å¬EdÞc½Àxfc•Ç–Ù…²øÃÞ©{¥EU»Ù¼V[¬kRnï/o ['¿¿Dßà«s€vb6+^×µø81³ÂÁË”«£Û/Á9µÓ-Þ).ÓâÜÁzÅm`â+ácÖ+eʬKSÁIjí†×…Ü$˜{þß5k|Y)rœW0HL­kÜd7àf6åt«`LH{¿tÇÛß=®ªû¡·ÎÖÒ½”ÉY3Åì,yKCÔ¬Eó÷JçÍöp.8t}£¤!í=ýz\wíD·©Ò9ñrìAˆ°²ÂÄz¤zB@ çÑf¿€JµÃ?†ÙëÀD{õWÖ’mœË(Õ´Ì‘hQfÆl’Å@à#¸ÞÙçe‰eŽÙ{´D‰«£¿·i]ÂEÞ0Î7ÀÕ èù5‚#Ål4Zú‡¦>fžXGš¦:q¢8ÕM*˜Ù¾Ùnãœ{M…ã\5,Û®jjxpÇ›? k©ïÐbiî0=Ò(‚›¬¼_ÃFùÛƒ/{]ƒe|€såö9«NÖšvBiÓä+UÞ4ýÙñ ÞPX†Ì»Û"¿![±ãã]Z¤*wöº<þ…”Ãmï8nÛ¯ºî¨H¹5£a⦲=¯¨zcæigôyªWB"ãk]ÆÎ¤£Ê¨—±“¿mñbã"JW ¬7W{‚öi_g›š‹JÁBiî<.áÛ‚æ…)ƒ{q³îÁÒá{ãó²Óñrø¼T]á4÷¶ÝÒ&è›JÛܹ+ÞÖbŽÆ7½½àarEl ‰Gqí‘¥†Úùh\ÆpÁ$г ‡\³,½žZÄÓÝÚñ«£¼Æ_tmPÝhÒ¦GSÈôìйðÓ°eŸ/—ÅÎõOp]Tó¹{’nAfç¸ ·ó¯{ÿ dF^ÈåY(˜•ÅìÚv©°ï\)7oÑZ_Pv¤Ë4É‘1,„¹rMá`f­Ü"EÀ/è—aeýÔòþÙyQþ±žDTòÍ»$­õ‹mϸvÝ©`íÆR#-¾€&°BÅü¼„d9ì§–[ØoÒ‘òmÃòQtÒVí=˵ïa¶L(—Âçd´qãöe¦E=!t, a÷^Ñ6Î(³c:Ñ­ruÁÀZv·$ÜKËRñÑ4¤M†˜^Â`}ã²…rŸÖ{YÜ^]ï|Íæòïsåçö©>6ïg4ß#¸¶ØÑr|¤.ðÅäÁ²ï—‡ܰ,½žj.Žðš{‰J–§¢Ò£µF60 ½®$7¶BBCè!/z±ë",nšÝ'?Ûýì½ÍK“$W-ö¹\¬¶lÉo/Vw«îeú3¾f•XcGíû¶¶mÇøµLm¶I¼ŸÏmÖÚÿ4êºmÙ˜ÙŽS:NùÏât´úÛhêV¶ˆGf·KªæôìêõM޽V_,º¸Ãêþó¤êíjôۯТ™&׸öó+wšˆÆ;Co+–Hk -i²BU!W&6(Ø?‡jr~5Yâ$.ûÙñIC+— kyß(Ó]VŽÿvöáµós]Úâ ¿ì—Onã$Ÿs•Lp—"DŠã‚a©f-\d¬sǘˆñÖ÷,|üvª—Wݳ_t…ïHzw,YÛ¯f]’rö›·Ñû^‘_mܬ2Z|9EŠY£ÅÀ0 jÿÔ°±å*æ‘DXZÊ›3'o2™wÖÍwÚ4µTŠ*Õ4¹on¦Sº³;SäeÃÂDÛ n…ào3"µRäN¹¸/’Áq_3ánU“r`Ô|UoD‚Âó3_½›/O¢Ü¦9˜˜âZŠˆ¨·:Y{]7Ì÷~#³]°NúgµË†Õ^JX«[j‚»æq¼Eó[æC˜x‡*ìåµ·ü¶‡w§íÎæÌIJ>ù‡>U÷¸«Tµ²@pRâÆ»-$lç‘5ë€çá¸q<5Þõ×µ„5s'ra÷¯k¤’ÌßG'»qÖöä³qÑõu:þ.¤Ò–[fï&ë½¹ðä:Ò/muÆcíÓ*ý;@˜Ÿþ¨T¯7Åó1—$X­ó¿3fíûÇ&è•på7sÞfݵÇ`‰ÛYöîíwtµ²³FQ±*'’ïªî*Â=œâË€¿+œ‡’º«¢®òÕ—¿C¦ãµPTÐØRÙ³œÖ`lr¤àmøf7ì}¬ùNމÑÌ!HFçm2R¤9,BöŠÙ¥Ä…^ǃöeQ-*ÕµÓËlÚìWYû,ᘵ~˜§ÒÍùR½ÒýndÎûʪ.>ž©Ìnã¸ÚúÑGòá½ý« ˆe<~°ÿ±©¢“Yë{Ép¶³w3­´Ç°å,«/“*ÏÞUÿC¨EîÀ•}鸌”"Öè‘îæ8®MÊ19Á"% îë%:¹œ°Zq®*‘k“ÏvëÛ&?Äls\Ü.ê‘`­_ÛV -¹º×MV/Ó½•‚Å>LV,׳CŪ!½ˆná0GÚæ>×–~ +·ê*GÃç¦ôéñz¤7B·Us©ß%bæ'™èí–Y“}ÒYú*¾niðól±¶èŽŒP/ci kZ´IF€yXRýS5ð¬prjxB½NùEuÚÛÍKweŸ Í<Œù4KÔ;Övfó'f?{fÙk‡)±öØÀ—-Ñw9WeÍ, ˆfÝmÈÄDÓ}Uù«"_>9å^tETHhÿ×éìætòšwŒ&ÒO´Î´ÞTxÍnË·öÚ¡ÈVëȹ°£•–³S,É3m2ãÓ3\EÅå8Üî£fãÙŽz9(cnÙ—.Y:Ê¢‹ö*%Úȵ+æÞsêËÌÕéÓ™Užœ¶åi%{Ó²´UÆK7{ÚÁ{íÖõþÌ±é‡æ~çà¨fŽž«xfcæñý*ýš ²óó]pÛÞqvõȹ”Ãa@‘ïŒy¶Í)ÜÁ)åñC­)Ú òt³XÖe$%K­âʪ¹]~VÏ-®«]ˆœÏ*âüÊ$•í¹3¥k¬µ–¾Hìûý:{wæ¡n.ÛÓ‡7²í}uÞÆ»•ý:•YU»¹™C¸~Sm):KŠÏÚ6¬¾jv\ãŸ~Ï!¶ýÒBMöëo>b@5ÌYW²‡™½ ~E‰³ø|Ô$À«ù5D[v]5{çÛÌÅ+ßÖn«s®åÍ,"ÎÕT¿+¶²™e›]6³iíÖ!o‘$n®¼íñž18À¹ ÖÇwÚCÞ˜! ´£b¡ÉY» žZÊ «ô“l6N“Ÿ¾ùwY9J³"¢}cx¾O/v½O}·/EÛÒOpî ›€!êŠq#ÍÊ5gq97gx­ƒ†cã/oå˜jǨӱ—ö?ÄÞß¯î žU÷«íèA–ß»ÝMÁ éx¸¿øÄ„xãïsÔå÷Á{²ÝÖo°ÝŒöåçof÷E;ÜÞÂü'ç6lMÊ*»‹f•ÖnÑäžàC¸\t:˜§Ô 2KbJépp³šC¥‰ëí¥©…镨/LÌÉõY.,ßuOÍ9É*7™¦d›Ó`wR\GOßKevðÀºÊIçLomK•…ÉÕÏ€Ž¥°&˜Ž9#]±ÌEúÄwl'<ºX©åé=7ºnæ”ßûÃ>f‡)íèP³¶ùÈÔXŸoÙfêþâô÷oLKÅ‚9š³nÔÃŒÛ!ÏŒ˜QÚ©q ò˜©íkÖ=Hmd…ȇ°Ô×J3"9@´ã]¿QR½ó—aí–ÔÿˆÙî.©Ï/D¿µõ`­.nµÓU„ŸÙ—fÅh“·(²®³ÚâÅ c5†¦'S©A¥K7¯Rä²Ô%è³Oæ|º¼×"«“¿¨ùöò峫%TæKòº¹’â'v§Q8ŸkZfÞf b»jÙæBFÝ2ë›¶ÄIîuÆŽ-jn×Ý‘øÇ$L-2HšõP’Ç ó4XYsîïú,¦ð§¼f,…]rú£¤›’IþÖj—eå´GL"D¯Ñ6ˆr ïvç$R¸Á¨ù‹FŽ`Æ`ÌYŽù›žµ‰ï9³Ý¢FQC&t/z¯|Îõ-lÑë_; …Hš~w²Ïvòo¾$¦n ³–±ZKfdd“`K=AË]ÊÑæÖ¨z.c©k¦Ü½—7-2ÝíQ7âP[G«–ÏQÙ›®zæq\ÚÔ¨‡7f•²|.?Q=楗UËQ"-r¬r0X[ãÉ5Û1Ñs•/¾ieííC›6b8å¶ lnµ[ßSèqmKvW\+ål[†â›„í¿NÍFÖ•*úV°Ka5bÔ¢âmVg¢ÏËTÝHý#]ù°·2™¯tnçó9:zÓæZÄ^÷vË2\ùÅ&Ä];yX}Èkd xò1…—Oâöë›]+w6Ê—©­ÓÌ“2š½Ý5Êk’)ïéæ3Ã+7«n¬î6AÜÓºw’dÆŽåíÏ µÉ4‘ù±ÊÁ§ üUÇ”È4ËP´È°f4Ä‚;î¿Wj©Ã!] OK¼=¸=×ìvÿã9{hY7 ÜF@’Å 7V¯•ž¡{#\‘"Ø}j;r õ\ubÁí]Yyó{ݵ-䘻B®’¶Ó20"~›A9ø–€—Åî×G¬UʵG§÷’æ:vÕM+¶8¸}Û«ã”÷´àÎ, -Äí9¬º´*0*Å…†0ŠáE)\Á—ÓŽ­³ç^u*¸¯^}SXõ³>’FÚÌ“” ˆ˜VÍÖÓ-¯fÕ«†ÎðŽøÛ±ÎŒÉšØë|xט¦`fD‰1‡98XùX·GÖÕ.|“\SD}*Úeú;2Y°¿ÙR0ôM´É¡ÅŠinÊ놴É9ç7q‚›}®:l ¾ 2A1 ñˆrè‘¢Æz|‚UY‰C’ó¡­ó)Å+çlׂ.–®¶g²?UÏe\DÏ[»vðæî±¤Ïkw\v4Òk¹„1H½ZÙ¤¾VŸ‘–`¼ºæ9"äijm²[Õ}5?9.*y»šìÎgÒþ ~9#´ûvBfíÏ“”¶âå,‡‡N.jN2+[4Hü¿cœåÑ4h[MËc#þ+ào»›ÕprÌŠ©{1®ü·Ìùuó}íWŸUf½Óo—!´EÇiÜw$Ê5ÝEar¦6‚Xcd<ŒRÁÒeû2ñ×6,ª¿6çͽ™Ó|·¤›/6ŸŠ‘W"_bIølc¶o2£wrªýÄ%mÛ{ˆckVi9 SµÛ"Jêy:žk9W@ró06•™lÎŽÅuÞö_ªMÿI™Ó³FTÛß¡-Hö£°O 7êû-÷û–$žëçlj|{ŽÝ&9µÈ8÷a7š8õ@––™S %jr³#:BU©ª¬£é:oÿ—ÔÕ)ŽD‚wJ³GèÛ,¾>›åoÐÕósl–õîÛŽÊ| ((fÑ&œcPÇÇrì¬Ø³f’5Qå‡?:³Õ‹•Ê‹o-ÕY™Ó²ZmkUíœÙKÈæS³h­í=ŽU¯µÂ’{‰K€Ìš J”…\DÁÍ –†=P<‹4Ìcœ.ÍÇÊÓEEY’̲ÕL´ËÒ’›?‚ÞœÿE9É¡SÎù©¿_R}]kõtï8ì·¸ŸÜ{\«ªæ´&_™N!Ï쎠¼9üU Ы±ë´§Y‡Ö7Á›ëJsA°9;-’¨Ä,¾ö/¸ŠïkÜ-:ǯqµ¸áÓÛ-OÜüYz$ÕbîûœßYÜC2þ´7¾L¯¶Á0®í®S7’{=Çn“Úä{°›Mz KKL‡©†’µ9Y‘!ªÔÕVQô7ÎÿË÷UZêj†9 Ý*Í£l²øúo•¿CWÍͽ’“¹î›¡íòUÑ1–3df(P7ŽÕèæÀ13ÀrA1XyœéÎÑbç;¿^[¬º®/lä‰+%^ø³–ñØí;¸o0zÅ-бê N×%Ck—´Ã1"ݦMÆÉŽ];.—…Ngí÷ÅÚ;mŽIj&ywµ×s#PÛnC'™–90½êËù§1«ørxyDRÒMùÞÇ!¯™˜**A©¢ft»éË¿”ç»ê¾O÷7.fÚÝ _#“3jV·/6Vë2}lǵŽ%ný¹'gfÔbékS[ ã³™¦zä‚DÃóñ~lR3gˆÆeJ¨ŽXY•¬ËØËù¼Vzz®éU\„¤UºmOÔ~Óæ³²ç9»/Õ=ínÛ4n{Ø™HÛpp‹Cvš4ÌÁ)Œ¨ÆñÕhǺõ™çæf!MÐó1­Å}ÔÍzFQM-m ÷u;]¥Óš×på9³K·ŠõwŽãjÞr) bïÄ‚Ôn6Í~›ä² ¡4¢.(ò¹Ìõ÷Ãös6Xü÷uí¹–“.:go6nQ/a¿q’ä”\^'upÏ, ˆäš{lé% ¶öØd‘¡€ ¸Gz~iˆ­ÀlðµÅxr?1yõšgÍurÝÅîé5ÚÉõœ½Y¦:žëÍ[–Ó+M¦¥ÈeŽëY³ÔÅ’&@–:…ÈÙW&Zý¹nn÷S+Ùq³¾×ræ´´1;FçÛÏ„÷ns €Æ9’ØM;œIW—a(ÊéÀ“óܶ§¦åTçÒD¡Ì—qì«37Zz³hµ<Ÿ)3Nªäk•ËSw%“£üº¨¿`¼úœ‚·lšdRYÄG™}tX‡Ÿó>.Z¥T\ƪ}"òÑQ«ÓÒÌ«îœT÷Lg÷3^[Dw—¶ËŽwjM†Ì:hëê7f¶ äÏÇæTFwÙí;¦ùæ–Õ,Åk©ªã¦Z¢+S ¸,²Íf§Icè¶ ˜ÝërŒè±e W·KYÅpaôø§‚Ë._Ë?Ù™àÌYÉÌ…æQ­ò„d¬¨Ä[¯lÚ´vìã¤ìV\ö(@@Åšã­d Y¬¬@6¶›„Åo8—³]R³+•/LqÉH5|‡#±öá¯j픲%Ä£>ÌhÝ\.»èÈ+±ƒ–Zäåû\}ºÔZ‘~ª^\ºNïÒôæÍùÞÇ “ LÁÛ‘ÇqGNóg–šŒÊë(AYjX“ç‰èû~áÔ1`Žæñf¹íâöL~™¿fO#›1ä(òæïŸhÏZw³FìQ ôú8„†Ä°&ry˜â~[1o%n^ˆGw6bKıŽÎWü•pü#=š,‚V؉ÄÝ%]¹¥ƒa„ ÈÀDÔZ«Å¡’²ù=C2Ò¤›O»kÏ?Â:^ùŒù=·-*cŠ=øÈ¯~`€ó|>*9`ä_6cºÜÖœrÑd‡—¦î.šàB»üÓ@ôÙ·!kcAIÈ&«ƒ„ Kåj¨‡/c\Þ”=1/»:¢ÙÕ›üØqûFÕ;moœ{„T–×h±Eä&ëÇr™k“žjö³À……å¬G¶eJäµ:¦ËÛ$²ÏªùþQß;OÎåEK®ÌÝ›2f»eÍÃôm;HݾÅö•ösC}+§7 ŽüFøÇêT.V`½ øƒš¹çUß«gVYŸ]·_¯å/ZK޳­k9pXݰrL=ÕÀõB[÷DtO èeʽÀDc.Z ¤ƒu¡yùb]GË­rÆ*½Ú*Å[~jü¬êæYoÑßi*µ™nᕯ©¹–-tòïã³1t9r‰¤¡$g3…t,{$Â,th.H!åu&ñ>U&C]«LÍ(ï,Ý7k>W>oïX+&¬»+ìý?ÔÞ6šv;/yÚ1±TX]ŠËáeÞý0‚øðà²ÃTD}ÝOŠº¹kzâ—z·œží±ï›ùn›˜åcìÓátSy±c%Û˜•ãG° ²I‘ÛÓ²<¶i5"cª¤{aÎ*aåÉ«O±Êo}ã†æ¯ºª¹¯Ò«öªþYgnÏó×±öõ˜^ϵš×4-# 3•ÊÆJJ£5~wO¥šµ1g™ æ¥ù™./=3^–Í4\e-˜6Ò®·ú7¶µ»ÇçÈí™ÛÕLF=f¢á|$™HYÇöK¾N`š½ÝÊR ôyŒðÊÍêÛ¾ã~ÈÒƒ*fýkns‚ÈR¯w ÆŒ¸¡ Xf€³-vrbÒåƒ0¤ÐÆöû»èÛfkîéác'…Ò¨¸Zÿj]gSMßÄ?AµI¢€P @( €P @( €P @( €P @( €PÿÓú^€“Â_­ú-@I €P @( €P @( "ÅÛ#Åsä¤ql’møÞù\DT7á{ð,yhšÜAtþé|NõÜlŽ2Ëq°ÿkñ¿¤ä`8ñÇÐL?N9Q4GX.˜jÇžY¼ 7IŽ2I;•„íq½Àˆ …ýÖ.â`_•b¤ME«lÛ#í‘ÂAÁ+· [ïMò"#;‘™‘s™™s5R¬ID&°Ñ@AnËÓCr`‘HPÜC‰Äxøˆ–ˆ²öåÖÓÕÓ<(š?Ç·ªI:€P @( Âwí‡(sCÀ–cÆöâ%lLx·÷k#¡Jk•«6©B …¸ÚÖµ¿Áj¥X¬T†¤eXh €ƒ»ì±·uZ<Ñ#UŠÅq±˜Ø¸{-k/ÞSsQûADбóví„y!ç'P @( €P @( ]ÓkºÆd)˳PÛp!¿ùm{^ÜÂB\ÀcÎÎÔ5M£¶ í,7Æ™k 1ÍczD5d›˜+µï–˜–sVÇÈL ZÃE €P @( €P @( 0B€$l ppµ­üÖPÐ @(  BÓkÙC`µïr½†Ö·Þùz=¢/ €P @k“d(’w+ Úã{ û¬]ÄÀ¾ !*ÅHš‹VÙ¶GÛ#„8ƒ‚Wn·Þþ›äDFw#3"æ32#2æ.j¥X’‰Ma¢€P .ç¶GÜÓÓKÕráÆöô W~#q¿+JžT\5õEo.%P @( Š‘л^ÙkŒ¸0ÇN:FÀÆ÷ák}–ÈîEøª•b=>uWqTJ¬€P @( €P @( €P @( €P @( €P @( €P @( €P @( ÿÔú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÕú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÖú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿ×ú^€“Â_­ú-@Tw÷vt¶YÞQÓØo§–db¿,ÇÇ—‚¡Î„ cfXzÜ-˜æöª÷({opl嶆ãb´vÚJßb!¶¦*ÓÈ?Îö(²@‰¨IÁk˜ŸË%\X,ö|~ÍT4ÂñаH–õ†œ³{›u‘¹ËÛ6¸qÚ0ì¬ÒMW½Ø:–ÄO‡õë¥#¬¬áküÀº³ñ9ìþY'jïXRv±Ý·\±š›¬Á°ƒ@‰,^±`æ,´Ë—Py± jª$#™¼“ñŒU0,®$ysâÁaj¦Gl€p®8…ÓaÇ61f¾YçìûYV¢iT[æ²¹Z^W;Õ6Åî¦YµQ¦Çk#ÚäÑ]vA“l%åØ}¬êc¢k¸®ˆi…ì$ Ý"0”å‘Hš­cµîcn¹«Óæ²a÷ª¡¦LŽˆ‘· íiÛän0î¹@2ü5DBä¾9¬Þ^Z±1Á„+Û©ókKÍÛx¶¤V2»§k„ÕÅ›.eXÝ*‰é—f—?Õ)SB®«Ÿµ!Šû¶"Þnêèð—gµ6&=xÞàfæñÔ1^dŸ˜®eŸ0#¡5’nض‚¦•Õ5Î~¡Gd¥_óß@¬ÀÆöárË>`eüµg“B‰¥e½,ßå/Ý—’«›É}®Û¥ý 99?R6í¼Ý̆0Û“Ù^ØyÞf–+ L›ãÓjƬa¯Ôü—æ3ù\yŒ`]Ô“óÇÿ3…Žqs3ºv˜N\Ysc¥î°Ýk6€‘دˆ\‹#̼8ø«a¦S#¢7qçÞÿ#۸᫣k_8ñã{‹{Þí<¨˜žÆ~#Û—ëЊ¸ZçþUþ©Y#¸÷WnRvÝ®$vŒAUÈÝ$Õ{Ý–"¶ ¸²¼8ûõÓó:NFf4Õа՟™ìþYcÛÛøîëed‰QÎêzJö½Àík ‡Ðk0!b™í¬¼ YïzE;½›®Öì×9µܰ^ÚÍÕ4¯»a¢-æî® v{Sbc×î`>o CæIùŠæYóR:Y&í‹h¥M+ª[D–™Š 1X-K-b± Zÿa )ZµR¢Äå_õƒn™¸„k\¢ÞÁvp±\ˆ—ãÓ,<>áÔ"ÅRû²ÙøÍÉw/ýŽ@«XÜkßøNÍoò9‰î}Îȱ·˜ˆJf2é[$›Á˜“@X `¬ñ0&sãÉÍ•RwÃË*»‚×µºjèHþÎz|Rñ¹½~s·+r²ôõF凸p½Ç†\ŸÍYäEÄÖ¿³›åTÂç3ÒcÞÌ ‘àKÛfF97ö“:b!ì1Ñ(Ó,×<“l´Äl!QeúØWH,U0Kù“ÿL˜¤Z}Þ”“o{ÂdÎäÑV{¬¢+- uÉvô››%‰I-KµÇ5ÙYH¶ªnó"ïQÇ$|[:wJÝÑíß¿YåZ-¯´ ®Žò5o©ž}6§M¥Oi>N§Q©ûM,+›*„~säÿŒ³aêKE«Yvf§£´F7oÄéqtÚêìÙ~¬ÕÝ,|³‹¦©MÑ)tYv½±Ì¸2@H ^\ø#Ù,3£jHír9Ìñ0.oY¨ÿ ˆlîù†Ö6-}¹éØÑeõnV-'11EGf¥ åa”…–ìx¡ºaö}W? ^îIs´GWãÊÝi9¨53¾ž-'Ú(ßk v„OÕóu3éóºXÝ6’ZYu:˜ùš^ñ•Cë#&ìÖ°ÍÓt¶®M-Rk’ÔDs¿s_NÎ[æ»{{k{›u‘¹ËÛ6¸qÚ0ì¬ÒMW½Ø:–ÄO‡õë¥#¬¬áküÃBÃV~'=ŸË1‡ß¶•4…C{¥HcTQÓuÞài¹5쌢P1x‹2çÉ|œØÖù¡y]Ê9½ãqÝÝOz§xXZÊîCÛÿ0–† þÁŽw °Ž÷Áj99´±ÃÍö¼Ì9ñ—¬½Õv›–û®µ®qMH÷ÓÛ¶³IX®ót¸[{aFNÜÓg‚M¸€"Æ“^+a`½@XáÈØaÈ#‘‡W¶V¥ÛܼNöð“äŠâ“z¯`ÂÝç5¤˜ ƒÃunµÉ-eÁ@)!7©²˜lS ªéÈ#dÝNpW>0š{¼ÈçjÍÉ·3«#gšÄúº;ñJÝkópóшÙnö¸Ã7µÉDŽ™ê±ñ°Ÿ n>bÉf Yi¬°>pYòT=ÐDv&½ß‚ÜÇ;Ÿ&NcQ"°_;?5Ìk]ùœM—Xè Kê£*Uí˜|8ñᕲûk®bHª˜NltÈ‹ˆ¬÷Ù‡Ê:3•3mÖå–øñ>—Ø9W7:T›¶ÎÓ®Q±Y|½¦á¼!÷¶Ï'lVöR’¨N°ðcZ6+Ûåç§f„Ã?[ÒU‚üm“›dŠ|]¢[{lR[% c°.ÁeÚ6 ck°O,I~`søyÃÞ¤<Ÿ³žÏÒ“OwnÒ»„§OÔ-¾pȶØÅHlY+ŽÁ»Ö>2ZõD².O0´Ç”œÕ’Cž±•ARËþŽI›©X] ©…³rÍð_Ũ÷FÔRF ¦G¼¦\¬*Õ Êãr°¯,Ë÷H Ý¢iî £¼K•2:¤ØnwQ´ì6µÌL‹<,G—»ÍDÓÝÛ´Íâ6ÖÍB˜´1€-w0¹ZÄxÛ"Ó´ñbƆzM½B²‰öz®±f•ËPqÔËOFåÇ7SËÃÅŸ-J®ˆ¦î·iMÿKZ¥Ýõo’øÛ{ÍJÜ%Fê,¡rÙk}žP° Í2Ë5é†,XÕ=a44ôý—?–Z¶ÙˆÅЩÊæðºNoͺIí~öÛ÷ô£$&¹ â‹f‰0,B'̬áÎ<ÚcVæÁ`š`G[«ì—]j5úM@ê0ÏO+gsÃņ\¹ToËtÕCu5f.¹0ZDÔ@²^Œù˜Z„?$ƒs0hštúßç욺?|¼³önñ^}ù·:dX;s‘0¤<’Ë¥ÂWUì§HµÌWŸ‹§ İÿ3֤߲U|Û.ËoóLu)§4µ¿íÒ¥܉IdÅZ÷bEƒv ­ÃŽjæ>!ñ biH ]æ+î=±³/µ®Z pñâ‹4.Ëp¶W✵<<Þ&žî×Bèï1î ëò„ Œ521x}¿Ëös{åçü¼·æÿ.R‘#ËÎöåúä(ÖG:<9I²U5lvØò±•­›£à4Ì_1ê¬X|šd5Ý[sps2Ìû®´Ýf‘Ñj;#®ñbÝÂWÆïò‘)Ö¶×&QÄT«²üHÄJöf†Ÿ ¹lB™­ÏÊxâu ªísÙ²ßo*lí‚Ý¢:Žk½Fô™<·kO‚»7wbS¼~NxŠ€Í¦ËiFŽ{yŒv›ÇìxK*6¨ú)Útª÷þ%s¶Ã´CÓÖÒÞw¾RÊFï1ÝOz–Á°^âF6½¬e¦«Þ׿íÈ¿|ùF²=¹¼&öÉU;½öÐÛ¹íîTàQ ø!‚v» …jQ\…yÅáj,tBúÈÑçÔW»eˆ®õM›ÿ&\§í»’<´ ÙÁM»@–Ì„XjŒyæ¦ +Ý!"Ê«½#æY„Þ·‹{D5»;Õâ#Ÿ~í®™ÜäL)$²ép•Õ{)Ò-sçâéÈ1,?ÌÆ±ºveWͲæ7ù¡Ô¦ò6]¢Â'um3$ZY±›$‡1P8î7¶yÙbYc‡6^íj$BèïíÚWp”çÞå^K¶xA*,&šYr}ÁÄjùÃ=’Ð>ëHªÏux4â0DrÙv$ÒM.ë©õè5SL©kFÌÎlíåsI=ÙÞØöÕî1㧺ãeGã¦eÆ×iøìX’ a>Æ®YV é™Ö¥c-f$ÉÙÄõF5šµ;tÏuïͧk…s”ðÓIvQ\„xÙœ83Ì òÀK6ûTä•Ò-ª¹;K´öb!«Íû9»r¸º÷ãc¶ÃŒ2`í¶Ên®%n#gŸL›-ƒ#I <Üt2©O:ÒÙº~¬ßf×ÒçjæQMUß¡µ:Yý–í¾Zw*ªžƒv݆ #ž¨"6+[6½íü¼/üõJTEÄÖq½LÑErasø[9–͹~eeã†W+cÇ„ˆ>Þ÷jc¡Zþ6£Êòªas›Àé Ñïå÷ ˺oLlˆÐEÆ÷k¥ xŽKp‡‹S/öu.t>¬ÛÒu$ásw]ºZ6¹5¥›]9¸æof– ï ½{l]×sz`®ZÀÇY¢6âc©¦&Í<î5Û1²9[ûyN,t͘ósïm«l“$™ Ÿ&ù…­{pÈO˜Ç‘Ÿ-dæÂ©Dª[ÉíI.×°ü%*Á³]ÿÄÓlûM3OtETCŸ¹±Òbr7…ÃÉAżDÏ ´¼k/,ùƦ)×í¼R¦•L?øö‰R{ƒn‹w¸gk\\l.ö/-"À²öy«V•‚˜š{‰+š†¢ÒÖÀ(ä–eŠ× ³±øpÇ›*:žú`OqË#ê~Õ-1¦DbÎ3ä2;í YZ`ç]ŒÆì Hcä9yLÑ=>VOà£oÞU¬;ã ªçéͳ‡~¾ãÛû¢å  /³Fë· ã~.ËOÅËâ¢èï §¸­Ý> ì{tTî –“‹!¢`5wÞ÷À‹<ì+ÄìKËyQ1G“´›nkG‘W­Úm‚ñóQV{˜«ãk¬<×°‡5ýäB!ïQthP‹)´SMïmºÛdÍÓlzgZ†)h—¤Fçõ4òÇÝ¢ù£Š{Eµ±t¾Rd®çÛ!Q:R#½ö­lh‰^‹`q#æåå­TÓ*‘bÙ”“}Ö%”×ÝËÒr³O;bK,ÒãÁx{yxjc¢=°ø©-+ØŠdw}ß8á-Ap c;¸mÆ×iš«·›~m=%æXùÞ*¦¤{õÿ)ÒvÂbèîÂÇ~#¥íˆžŽëÚ$=Ó61ÈMŠìX¸.a`ùšbÈ0öòðÔÅ!¦ÃL<¦¯Ý{sF¼Í±¢Å‰¬BWµÆ÷m2i0TÒ sx4Ρ2Ãç:Ÿ“Öñ׿5VFäŸÒþ¿).7rL107¸ËyW¸¡‰uܲ1µÌ’Âbb±m¸ ü³ÄüÁ>R¤Ò°½kwWfö­Mš¹1tiòYí«wkvk͵M”{|Y‘Û-|sH4 ƒñ<–%˜ã-N”5thS~é¼BÚUÔî/Tdñ°æã7û&\GdMW+¼á"Te]м9(kí'Tl»X <Þu=OÅ•R$USg{©dÅ¼-sÝà.:øúÅT5€, ­•‚÷½¬ÂD¹¼51òá´?Ô‚îíÙÒIÎŒ&Ö$Øœ»,^€$ñ/0KÙªa{ ‘Ñ!.û¬K)¯»—¥åfžvÄ.>–Y¥Ç‚ðöòðÔÇD{añRR$V±¦wNÓ Ë‹.lt½Ö­fÐ;ñ €dy—‡l4ÃÊLtFî"|™*Š¢|ƒ©v¹ía[ÒDD^V*À¤H”;‡ÔŽ&Úíà&"DT_$µgͱV¾xj²V÷CYÒvÙ¶ýJŒóê¤Ý¶¬·X›/»6xhTÉSc&<‹qS À"vû|³"Äÿ£Eа ¥"n—¿íиuR’®8^Ù°GÇ{Ù^+þÒàz~þ%Gijw-F¢GJví3xˆý±Ý{sF¼Í±¢Å‰¬BWµÆ÷m2ÍPA—»ØÐ]À’,ô’õ2‘ù¼†sWElQnÃ~esià!«2E<òìÓ9ÓÄ–™Š 1X-K-b± Zÿa )Z±R'*ÿ¨tÍÄ#ZåFö ³…ŠäD¿™aá÷¡(Š—Ý–ÏÆnK¹ìrX*Æã^ÿÂvk‘ÌH¿sîp&E¼ÄBS1—J؉$Þ ÄšÀlh˜‹g‰3ŸNlª“¾YUܽ­ÓWBGösÓâ—ˆµí½çó­½;ŽZÃ{áÇ./qñpæ÷iäEÄÖ¿¨ñåTÂç3ÊÂÊ€¥î^äü’˾–®¦^Ö<1¶^éV"ÅÈß<9³r²6éŽX$o.^foò¥Þ-5 iÇ[œ¬uÅkåé ÇÄ9û9x«M7P @( €P @( €P @( €P @( €P @( ÿÐú^€“Â_­ú-@r[6é;iO‹ F÷—ŠÖ72¿¬¯ˆ.ZäôŒ6ŽÙKÝÆŽ×úKn“x—2|ùQ—}˜ýAQØNë Ç“›—áÌ@‡¾jÂhiŒ[5îÎ<¬ÒÔŽ‹.—¶óˆ¿¾GÚ;xAO€qY4ÎM¢6KPDlÓÛÇÙxÍbL ´*Õ©c|=F}_­dôf¬U×¦Íø™šæPö-Ælî;´}§íÛ¹nJcÓt“Dtõ§{ؽ[à¾ÅJ¾Dc°{·³S5ÊÙ9Ù_ IÕɉ•п–“5Ý«mâÒ7mÎ~Ë´îšÉ{ŽøÊE€HôÖw" ø[•jFžD\¡]XÞ›šÕù¶>w}kÙVôÔn™4è÷cl¹{ sdo‰ÆÃµwDœZ2ã˜÷ e-êY¬x®`DÀŽr2öúùqn„eÙXýkëC™õŸiŽ™°Uuè³+VËq}^ å=•·oç°H|¸ìšJÝQ PúwÈXj¼à–ÍN<£¨„<ÄZ|Õ‘‚±a 3\ç50W+÷ûbw5I§HÚËkZçb¦–{Rá4wNÛ½I¸n{RæE-ÉqŽÐß ªTžQ°ˆ–HÛM?-ë\¥æjéã‰Y¢ß¼³vßÊõiÚ¦WQjÉ®Xé³B¶{Û>ÍtömÍúkƈ½Ös ãn¸ýL‚²]{(Å"3Ððu×Dgw}­½â4ÓR]²ÍCž"»‹r~è½ÈVÛFÒ8c:ÀV½™Ä¶Ï,®%ûÎjäÎåO¬w ™_·w¦Âqu3~ _iÜ"tÎóaíÈê֞׬@Q ñŽ<¶äj­ŒÐ)#u&,lŠ´XZµ#[Mš\´SgÝôlK“>WÙºc¤Ÿ‰•>¯­vf¼™“t÷&§FÈ‘sÓ7ØD¬O4µ,…FTB“ÎáFÅdzœâÀ „ –[—F6³1ïvTÖ]îýßѶÇÉÖtjéŒ~r×ÝIÔ—oŽÕòúÄÔ­¥l'ÄèäÛ¶1$T­"IÃ`‚Ûªd°Æ)9^V¦X‚ò«J®],s\×}gRÍ6þ²«6m8â”¶[ñnë˜êó'Ù˜ÕÃ<´“î[Rï5qöì(†7¹µDMÒôyѺ(—ö‘‹› ¨ŠªGç3=ËæÔdŒÍ~¿õ^ùÎú:‹THª]O{ønkòÙ­——–ì–bêKIÖo !v|¦8“^0Xx‘²àYÞÀ?iµ·"åöŠ©ðŠKe®d¿fÇ6^ºQ]ÞêݶúßÌs;ìI_6ð†R'Lô %æE—mN¸$Nƒ“T°Ã[6T¬tÃMotŽÖ²ææpæ^‘Ó6̤1 ˆ«M lí´Ù>¯Ø·7ÒNu]êÛ°XmZëÞ=Ú« ¶ÁkÉÅd –ÙVG1èùØcÏà*z¢=,Ïn÷–G˵-ßwò—])rÆíLí²Vö8>Ûäé¼×.DhÚo—ÉÏL¤Y‚ ´EÓÓ»ÈXH?˜9£U&†ªkÍÄÆKà»fü®5ÚUUÛµvìÇ£îQvýë~¼˜Ž~± 8¥íKZ:ÿ‡=f¹¿o¦Ÿ7ÇãÇ„&ËV¥çæz·¬ñ¡Í_6[w}æn÷‚öÚ2L˜×ж)™6ºÜÒw—ÀæUâgmó~ < »¦1ùÔ¯î“ÞË­›z_wná4%Üïw¨÷6L­_wá‘„Ø[âVè²)Œ)1bœiS#Ù\ZƒyÄt´Jäxƒùƒš0eB¬ŠZfgW¾Õ ÿ’Ge¾[-¶ÓVTE²æ»-ú³/–¹ ëL÷e¾ý¢}Få2¬»["©É²Ç“.Ql’÷uJº"H榳³÷tŸ•ÑËv»HÒ¨èÚL·epFÎêK©!ûT˜¶T²°Ú7! 1“¬Aªû±BØIµuëÇLGPEÙWЉ ]Òcqn»™»5XZt~•_-mvšFS‹¯â¶ãž7Ú¦OŒC`›#‰¢+!bÚ –胬طÂɺ¾,Û§•tozy#”æËuž÷-ÌdßfÝÛ7N.Œ1Aìto:\§MÏG ´îÛ¹u×u´Z’¼ÑÇ,k«á:BÏ[/‡¬Ê¸j8$dXÚé>n“©!†ì6ÿ¹2Ze]oÚf¨¯p–"v>xÉprå\غ>±Îü¬–úŽ:9*Eú¶·ó3½¶“û2’líÞRŠ=÷‹£ô¬´/Tmr°1šz„ È@ùò´I[,\ço¯°ÖêÍ4´…Y–7ekÌù¸óºq×ڤŲ¥Í†Ð‘¹IŒb WÝŠÀ(òM¨#¨/X:b:‚.Ê¡4"B—t˜Ü[®ÀænÍV–ý*¾ZÚì?4Œ§ _Ä;^Ã9‡·\·™v²ãpMѨ7.6’qLŒãµüÌbÏŸ.bËè½Éû,àÒ²·‚]›'$ï_.¶*[ëLÝÚi1ú Óv qã ›LÃeŽEÇ!ðãÃõkš¤U¿i•»ïYVéKeßg™½îÝNñ’;:÷–‰»„éSŠ-ÈÔ²DÈn½\bÇ™ˆˆêˆçáËš·»O– Þ.ݦp])Ô•‰Ü)ƒ¶ÅÚå"bä‡!Zð¤ãkܯö»CGí54þ*ÖéFì3—-¡ÚÛyŽâ{œXìp[:nå¹JY-†wˆA½¯d®Þ ËØtƒk3˜:~àT9±ËT½™4ÜÙy|•ýëñ=èåæ—33ÕËû£Ø‘.Bv=£9OÚLo$سÚÉK"ÛIæ"™æÀ%èù|ÇŽ5Ý];úÔ»j|Úz{µ×bvá+U¸ÈÜδü¢ÝzŽ$v¯rÓ³ßhsY¸6®‘Â7"aÜ?‰j×C˜H˜OÃóÁ\ÄDµÒËeTÊæå5®›g‹ Å¢"9cÝÔÌv*]˜çs|b•=´$è÷aœJµŠnØ6—ÃVÌÈÂç¶ù˜ø±ò×X¤]ªk5›–ÜÆìÍcˆ•ŠÁWʹÏ~«³]–ý¬|%þ˜D“~ÛU1ðãã8 @‹n¦ëŠç[­x-‰ÃÔ<ÉÓˆ²ªÆËÚÞ,·Qcïäs¨¬*Lš;Øé¹j–mÞvü¥$Ó½w\‰û\ºdì,ŽÐsŸ{”¤!‚4@yžÛÆ!ýÙym¨X§+Yûýæcå¹—†—»†kDŠ¢m9þ£®ýâ£lEæÂÜ$Ë)r÷¹Ú7#‡! ½¯ŒHA!+s!öÙ&Ay‡î„ç6‡#tÇú)§Š–YœÜ—EíWScøîÂVÀ‹À€­±;™o ¼{ˆÉºc޹3ó t+^¨‰êþ“ÍÓ¯S–9‘K3.—}ëUÏ&ö?wÔ<ÍEL¸-©?6åš%êK«.é<¡Ë´í~ÝQnWu™¦z:7•ùŽ¿UOèW—£©­­É…qf™>ªYþá²S«+,Ùž«;=a7ÖM'ß6MÞV­IM¶‰;Tc’#·mm‰¾Œë2ò,³¸éݺ²}È„TÄHŒLþ[,Û£¡ÉL¯$47ç8l}mRôÝUÌÊd¥™¦1«èÿw»wÕK~ÍöWÔ®¾WkÇ…|€÷o§"C!I™ãv°Ÿ‰Ü,:0–£fMQ=°\zg­“q‘ƒQ)s%k±‹éÒ¹UæÕ%9ReWTÇU.Ójn£ú—ö3'–χ´L¶ še—qÚv¨^ËgFV±ÛM÷åü¯‡GãkxK¨U¶l;¾sVhõå›Ï“£jjí看*Ç Mkzs}ëkêî{¾‘g:EwäýÑ{­¶¤pÆu€¬!{3‰mžY\K÷œÕÍÊŸXî2¾ÑÝé°œ]Lß‚iÛöȉwí¥’6õÞHŹ žjQšT-‡›@2×jÍÁ¦=I Úu_¶ÜÙ¥]M4e¹™rX£åÊVyáby¹mâ{z®ÍµU‡ìÍÙ{Sz8Ѥ©á#õ’Lµ‘tå8þ[ÅK±æ‘HEtÁÚôÍ»3Øÿ›ù S ܘu+«©˜ÎF=¿9^uT¸ê¾í,ˆ¹³Z. N”N ?›q°-6kBÿ,Ýu´pVˆ«EXi&†¢m;fw¹ÒðK5ªæ¨˜ÅÊ»,Ú‘-qS²Ù‹žêƒyûT¸‚«È»PÀÒ±éÜøí§gztî~ýšâôŠ·‹w ë'V,·oXáökî/—¢«È›¥hç6ã¾=îaJäéDT‘{jAã¦&nðeYÑs_ékªm÷]dŸˆû-–É9t«SºW6fÚkeš¹øiÓZmâ:Û"ѶCÒ•h†Jd€†æ=L°¥wJâšš)ÕÁŸÅ:€ÓZ‰zº•ß1c˜åKö5ë[NwÉüÛ¥t“â÷g,´ƒ<­^ ­{Nn^6ö.Êñ“·^dg‰D-Òåw¯…ÄØõ±DD±äMI‘ #É/3KÁˉÝ÷YMà¥ý°ê¼êÿ/ÚµÛ^íõqp:›féñd07(b‡Ý·Ý¢¼|–bKÎ'-¸i0CIš˜iãæcQ•sUÙ“o?=Þ³Lw{µ²éü&·Ä±=;+EQŒd³y×½¬±ÞÝhß_ì˘~gî~ 3GOU¼31óxŠ~•~Í?†ÙyùÊ®ï?Ë»gwÙæÄ{¦9’[c²Jë;“‘"òñé„1Ó6‹ó@©kùYf^•b%Çå#¶ºÚÝi¦¢o•÷’ûÙ*0s—Èä^œ¿—­†|'sÞ±[Ñ'qвl½Ë½È­o*BÀFÄDGŽh±¬rª,SÒÏħ…™<ß»9e¤[*èÐßË÷œÒô÷Î[dí™q'£nr§!ÉͰùw“¦QÚŸð0Ÿp•ýǵ»)¯fNËÚÖ3jŸûSý« ŒÐ^íÁ+ÝŸâèe·W)ô´ÛÚ‘d@fÎ2Pð½ö’Eü–^ÀÎ)=7…ì‚Ä çiû¾*¼í3¢^k%ÜntÞ&…ïEúÌÞw²S-‡al=³¶T‰g–' —{]w(ò5I¾/7™ŸíÞ®®Zý5oür·”/s¾ÒoÍö9 žÿp-~Û#œ©q—u(r3[­…Æß>ÑÜ_ʼðXÁ>q:z¬u¬¼Çì:œÇ¡SMÅGú¹ü7;iíaC¿ötáL}³o±mµMMÛkp¹=ùÙàÍSæøÊ­a‚Qî¥f,¬§üŸáRnZÁV×Rwj½ì}{-{ÒÞ½ÛqÙCo% Ú$ÓŒjãxî]•›VbLÀrFª<°ççVe‹•Ê‹o-ÕY™Ó²ZmkUíœÙKÈæS³hªí­†mÃm€Ön7›²`±*RV[\Æõ@â>i˜Ç<]›•¦'Um49š™&l¬Ë‘²Øt¿TÞœíù©õth\sSÞu'Ô™»õtï8“3[²íý¶¨rºÆr.l(åe¬ÔË2LÛL¸ôÌ×qyN7;¨ÀÙ¸Ú9ôrPÆÝ³.\²t?•EìT¡‹R¾mç>¬¼Í^9•YéËnVŸ©W0rT¶{î›…©FÙ+ʼnÓËPNÅnuiy–¾‹®ÓUQÑïé®[xjüçfI‰’;×kœé{•â!‡±¡Y–Ø®`.wV1õ-¦rB7€y™àÓó4ê-ž¬ß–Ù_M*ܹœÊ馢Õ4$-I˜ß uÜrÏîñÑ9v93CwNÀ2‚,¸7XœË4ZRxˆ7ãttq0ºp#ò1=zÈhXéIØéi­Ÿ?6ܬg¼«îå X=UÓ;ÑpûÇQ«x˜éIÜ÷=’Ðöù*è˜Ë²3(Çjôs`™à9 ˜,<ÎtçNXÌìYn«lu—UÅíœÑ%d«ß34lÞ);dúÞ×Ú¶x¹¶dw è”¶Ïl®¯‡Mæ*Ìäu«¤KË*¾÷5p5³lô¬ëu&–ŒZ®/3B¿]Ù²íNé6zNª¯££ææ›?gÛÙ&\Îè;Ó.ÅŒ¬$ÚÍ]ÈŠ3uajF&á§«ÖþÔ<ÀÑÓ® m6¯6ïWÝÈÿ^·5óåÓ¦Í×^“v¹›‡‚bFݵw.ë6#%±h~×DÙ"90!öóî»)Ñ®…5djÍÎøz*"«—E^ëÂü×l?2Y~ÌŽäDô®g‰™-v¼“ÏQ<9ûNÓmžZœëm[Œr&;.'ì QÔì1Ž$I%8×¥ÍFºÊ­Ùòݹ•™•–ÿ¼oO~c‹Rc—1»ÙŒ~cw_ÔÜ”—½¨Ëß6ÀŒö·w½Ê)Žá}T.&.p†œ]Vlê ~_†¡[3Q˜\»2;3«Ôçu¨×aÕ¯•É™ªÝ©òîoQUšµvûTËêÝu4omR fCûöðÇÌ÷+«2«µ—Úá«•Ç6TFê§³êøK+×5î,üÁ}½:Ãw‚ƒ¾å;Ô\ocr äFŒoͬ²óãüy+öå\Þ”CSý¾š5¯ÚËu/ú¹ï5‡FévÎkÞÍìÏk9ºo²oíáoo¾,íÎ4ƒYíqc¬•$šò)(b zµ³Qe§§ä`ÂÌ/Vk’g¦'Í·—ƒqÓº¯¦£ç%óå¢ÈÝTZu†]ã^Ó·ÉÛi{ã¹hë¥0R #ºñwL¦®=™¤#¨9~Í`D8Ô¦…D[]œ×gêeS6«,ßVVbÌŠ©ô彯|¶½æg¼Çï*¬×µD“´ÎºNŽó†§ncÀl5›¤j&F‚€ÞKjÂÍZËæ{ŒÊ¡‹Hùr²ÛÁ£5f¡ßwŠS¦f•XcG~SXÞMÅÃŒÈLMÙ*›¶ÀÊeøFUžÑ'1rYÑå±H‹³ZѨAij8+N…Àmé*s•?á»èýßNæQ‹WÛ^ï§Ôݳ‰íS×vÚP6ë‰YÂ-sZ6‘…+žd¤ª0GÕùÚY«Sy™ÚèDL)µ»6­šh¸Ê1>U_:ú­olVï®Ù¶2Zv¨¯ŒÛÞí!³v°ÿ͵.É€ kÈÒ@àÉyáÏf]ÕÓ&ÿO-ŽõwsÓæÜvw³ðŒw¸S#̔ЎÁAn Ý`CKª_<õ¼¡a*B’ß5‰fŸ.1`‰­æ}N£:•î|áoÓÔåò½x¤¢‹\$H±å"4ƵS›knñ%fØ÷ÕbqçÙ1R»Ê<”´ë§ÿP¥·*¤YdÕëM¾ÜÿQµXª“žbF0¼Ì¾LÆøeõ¯_Õk »u¶ºîá6Åâ»ÚÖ¹ÚïO—Á˜?‡ŸЧ¹íûF–ÕЫõyŸñ¸¢ïvÿy/Ú£HNÙ- ¹Çb®Âeƒ§Ž h-À–ÃÉ@Å|¥“+ʸ—+“2iñ6FbǪâ²ÕZ˜]ÀÉe–k5ºK?E°Uw|ò¼DKS^«YJçi6²ÙHšõÈBì³"Ç8nO w½uh©áÍØ~QµâÍt’:‰¾ŽOvâ2Ó»ìѳq{¿«©Î¶ÛÝI¥/wxíØ6Ôt{à®C¸ÇFéÕŃyI(±ñ Èy³£RTòe»­Åu»9ìËÎ×›7{Ä\Mè;·ÙuÛ»”bý¢YodÛ!—U÷k3,JÇA£©Ÿ—«åj~ó“ÅPÔ¦™üÏIxŽÎ_W.jøH=²ÂöèBI¡ È“b^ö‹ŒXØ›°**]§k臦S$¬ü\Ç·¿¾-–ÝŒËe×wNfµ·g˜æô„aŠÍ¶>lÄtÚ´Ï™[µ%êwÓ¼×¶”W-ªjdH±Y‹0ñ5Œ]Ø"-ÔVañT¥–ýž[w™–Ù…çm½ÜNqÍΉ"*šö!÷ßE÷°$Ì®«aÅ µ°×ñ•KGÉ×çÿµ'ìâhzFx}O'ýi¼á-· 'ÝS¡.$XN¼–µéd{^úmJ¡)q‘s3Ácã̰¤½ë¨ö÷Ûve;­’j±K$ÕËSh‚^swXÇum×'ÅîË^íî]V'Zsu/6£›íŽÙtë#nÜ#È];²w/ÛZBؼb1îMQjGòKŸKÁT©¬)^–Lº¹™QÞ÷oöš ^ö}¶ôýn[5žÙ¼½#¹¶31—ÇkmÄ9D°IJ,­éHLSdøtò•Xw3?Þf3 m¡Øõ[™—ö¯”æ‘gv—dA¬wÒË=[Ù¹¹s·LÓw†×.ëÞvè©”EX˜‘®c "OšõÈBÅxš×9Ãpàxk½ë­k¢¨«ô½Gþ#]ÔÅšé$u}žíÇFµ¨‰Ý$“q{½KWÛ{©4¥æïݻڀ.|Èw¸ãhØu: x°o)%>$6tjAÊžL·u¸®·g=™yÚófïq¸‹‰½vû.»wrˆÑ\)»A´•¶I è^%æD—m!V-%¤Nƒ&©`!­Ž›k“QQ ˜C±:ós8s53lÊvÑ[4µ'n£¾Ø·69Ž£» ¶vÅe½ &Žƒ qÎÙ…ÀÖÃ4d |u$³ê4ô½ºé™ ‘Ql¾iýi|[S6¦œòÑU°[Ì–[½Ö&»áÅAÈK Ò|ÙxºzJ/Èl"$¯b"„½4±XsƒC‘à9™•°‚¯“7)ÔÞ—2g¾Z¬6M­Ðí1DÁ™»3%l®úÇO³N©?t‰{¡=!.:Ÿ `¦¢!›[{“rŠÒ–§FÛÖ9}Lxæy‰²H-8×76(äóݺöÉyÿˆÞ›\×3 Ù…µa*áX4¶æã]=muÓoÓm¥‹lY#±F¢~-YÄÀŸg«ÌæC/‡ð׫1QUÊ—Ÿ6ì½½k$CB&fÿ›%õ¥vÔ¥çÓ¼×¶”W-ªjdH±Y‹0ñ5Œ]Ø"-ÔVañW²ß³Ënó2Û0¼í·»‰Î9]×¶æZL¸êAœ}¼Ù¹D½†ü ÆK Qpñëà ¹$¿XÅ•Ú}Ô2¶òéó%ÙÈéä3eÅ9&X}-Q»—˜Öt6ÿþÄ×u‰;vÍ.ò"Ì$0Y*&àæØ‡…Á’ Z´äر©Ìl¬s~©­¦öeo͓ٯs·Šc¢¨åúdwݱ‹–ÏËk&Ö3íˆ.NÃ%‘›kCÛܲ»’au¶ÖŒ®pÙÂû@Ï ‚½/TW½É~ñ»àœËF­×UÀîÛGEØPÛTå’¯ÖK!)=¦#`IJz¹%–ì7üŽ®´¿·ÔiçÔhn›°KLÚ`6,r.9„x«P©oÚenûÖUºbÙwÙæo{·S¼dŽÎ½å¢ná:Tâ‹r5¬‘2¯W±ãfbb:„b9øræ­îÓå‚·‹·iœJCµ%Gbw `m±v¹H˜¹!ÈV¼)8Ú÷+ý®ÐÑÇûMM?еºQ6Ë–Ðí í¼Çq=Î:]ÉÕt¿ÂK_Uv[ÌW ->?ó<ÞV®>O‹:{3øhûJìê¼.Ž)æžšXæ«7·¤Z»ñùXTò¢á¨ª+x©q*€PS²ÅTÆnB%y,ÈŒÊÖ{ "ZD¸dz"…ÌÌŠ‰¡!ÛµAtÿ:€P @( €PS²ÅTÆnB%y,ÈŒÊÖ{ "ZD¸dz"…ÌÌŠ‰¡!ÛµAtÿ:€P @( €P @( €P @( €P @( €P @( €P @( €P @( ?ÿÒú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÓú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÔú^€“Â_­ú-@I €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €ÿÕú^€“Â_­ú-@DîMòÛ,[K¸jZîJ¸e V2ãÀ¼™üTNôL^Ê»Õ6pµ]ÂBÜ> löço-/‹ø‘%«>oäU¯ž¥ü•d{µÝ'm›oÔ¨C¿U&íµeºÆJïÍÛŠv•JQ¾JnåâÀ½ˆ}ˆð<ˆÌo¨2ÀËÙ­M1Ô‡4]ÊÚªöb%V\_ÅNÓ\K‰Ý[LÉ…lfÉ!ÌT;ížvX–XáÍ—»Z‰WGnÒ»„Üýê"£¾]š&¸¹êá{ÆálŒ ±ƒîxª°H¥XuîÓ¿NÑH‘Xvíx­u^CëÖÙ$nÇfÛXkfDÒ±ßU‰H—‘³ÅË]*—´ñ‘ŒnÛ¬j1Û'4X¤Ý¥ÒùŸ†\¶×jWÊË5—=|}bªÀaVÊÁ{ÞÖa‹"\ÞˆùpÚ+ýH¨î=±ñï52Ðq¬V ´Z7 ‹CRņE˜b?ûÕPæþãÞ!«mäõZY[+&æ:—·§šÊãž<‡ìû%Xš{~Ïm¼M  óó˜ZwwP­;3Få˜ð³2ÓÑËÍÔòôüyòÑ4ÃZζÈ]¶ýbuº]A×Ç=<­–÷-d{µ¬ëàgy…%jz$)Š‘|RBcqeøb¢µø2øø=Òª‡“üIEŽžØ|Ewpw¾Ó°”ù .^Úk‰7ó30Ä@ ZÏu\õ(ºQ1MÉkØÛsZR¤?³™eí°òÏóhx5ÚëÓG¥¥˜ð[3Ì.<žY 9½Žj¥HvÝñš{ŠQï͵3dÁ܈š ,šá\–·ùbxxu„1ÿάm[S+%Ù‡´£MÙQó]©Ïoò¦-·mÿoÙÄOs’˜¢wà7sv½ÿ˜u.9Q4¬/):×ãCopmÛ¡±[|¤I4߃L¸_Óo2ÀE‡„¼TM)²BÁLvþäÛ7'2,h{ÓÇQjh ã|À äܼÔM)¸‚èXyM6ï ”ˆ—iñn`½b¶°qð±ë²åV%©àƆªC¶^p›‡¸ 6 ¹Ö&wbJÆ7°xñ ½Æ÷ôV9eHþímŸmK^ßÜQÝfLbcÜAê%e4±þÙÉæØŒCˆ–UjX%^FëÝ£S‹ŽöË-W†Š½bL½î -NªB• "lÍ‚8 ^â̯ÈBB$^*ˆùww°—§túƒ±íÑS¸2ZN,†ŠA€ÕÜo{ß,ó°`¯±/,k|¨˜£ÉÚM·5¦ypúݦØ,¦wÙ ª*Zé4€Ú"GÆøŽ‘dÎ7÷) 0½„ÈèÜEr»ão²6ùÎLF%â…Y­»ou©ÞXŸìT¥Yj(î±ñ³}.A#¦Ñ1|ìÕX°¹tʱºc«Væ-×ZÚfî»Dwe×x¾¢7”‰H¸Æµ¶¹2Ž"¥]—âF"W³44øhµËbÍn~SÇ£*†»\öl·ÛÊ›;`;DuÖ;zé3:ynÖŸvnîħxüœð›M–Ò öóí7Øð–TmQôS´éUïü6Jçm‡h‡¦;­¥¼ï|¥”Þcºžõ-ƒ`½ÄŒm{XËMW½¯Ú3‘~ùòd{sxM‡m’ªw{í¡·;sÛÜ©À¢ðCív Ô¢0¹ ò6‹Â<ÔXè…õ‘£Ï¨¯vË]ê›6-þL¹OÛw$yh³‚›v-™°ÕóÍLWºBE•WzG̲ÿ ½oö.ˆkvw«ÄG>ýÛ]2,¹È˜RIeÒá+ªöS¤Zæ+ÏÅÓbX™ctìʯ›eÌoóC©Mäl»E„NêÚfH´(³c6Ib pÜoló²Ä²Çl½ÚÔH…ÑßÛ´®á)ϼ'ʼ—lð‚TXM4²äûƒˆÕó†<{% |< Ö‘UžêðiÄ`ˆå²ì5:I¤š]×SëÐj¦™RÖ™œÙÛÊæ’{³¼/±í«ÜcÆ9OuÆÊÇLË®Óñذ%$Â}Œ+\²¬Ó3­JÆZÌ I’?³‰êŒk5jvéžëß›N× .ç)঒좹ñ³8pg˜A倖m÷©É+¤[Urv—iìÄCV-›ösvåquïÆÆ9m‡dÁÛl7”Ý\JÜFÏ>™6[F’ y¹èeRžu¥³týY¾Í¯¥ÎÕÌ¢š«¿Cjt³û-Û|´îUU9÷~~U,#)"Õà–0‰¸ÅÌé•Ò«MIçó˜Œr_1òÒ$V ‰2÷ÝJmêæSAŠ´Ì˜\ýܹ|SÓ­´JÜû´¡ÎlHÔ1O"h®×´†œ{üËc’´óË'—”ôjMÅ''S·NH$u^ïǵjé`]͵ ßÊÊd{N½øh]¡«Ç†'-O7‡ÃXš{Œ]惼6ÝùÒcíî24Ùa1+ý–¾c`#òýŒ‹p1öhÚ‘Ëþëâ–vjTBʽ¾-—k;”Ί+¥c–ŠÈñãÃŽ6ˇç˜ù®ÂŠâØÙ•œ˜÷¶é$mÛq‚…íò.›ªQ1‹³î £%2,p!`jâî_ç]ÜÙ]"÷Í&ÿ²qk¦lɇ©»kÂt[õù¨¼°ÓÐÔ}¼xéßþÁá—»\Ú±D\Qå{²ýB×Bªa—™Ìõʽ˽[·8#l™akÅ eŠ5ìDWà$ 2õðÇÍ/+ P›#V¶¥Dî›ã;„;B*áø¤[÷ë3¼«Eµö•ÑÞF­õ3ϦÔé´±éí'ÉÔê5?i¥…T#óŸ'üe›RZ-Z˳5'hŒ>n߉ÒâéµÕÙ²ü5mOso3›*ÛtìLGš8²YÂÂWÅvˆÕŽYòäÿÖ!©jÅ&]k?W˜ü­O£øA{ÕÉ/;™­ŒÔîþl«Á^Ï\éÄñ¸HmÓ¤H·œ¶é*_˜%ròüxÕ&•ÑfN¬Ú³1ŸÌÝ °M=óôù^ÿ]8¦i:_rNÚâêîqWÔµ¢˜éŒë¶ì2û7&¯H̹„ <È–š[5¯ƒ³3(O*­–ÿ¼¾)e敵Çî Ê^ wÂæü©çÿÛAtF7eüÙeæyn÷mŸ¸¡°ž7+>ë+ãkqÎÝ+dÂ#–¦^džŽÐ¸vœj{èä튞1HeÉÈ©ŒGk^æ b¼ÖZÅeˆ‚ ÎÄ[¤xk9ꦔD¼Ùõ[Lîö[Òâ5tGSšidâŸtñ½ç65†$˜8îm}£©veî–^áyÃ,”¢ jÿ ¨ Y,T|¹biîÖšk­d=¶I¬éi•òâèïÕç»íjUy¥žÅ¿:kßrF<èØ€3P. ËI‹mÁ&BZlÍ+!5—ˆ12ÔÒ‘ôɽK¼/i‹¡aè›Õíº\Ö( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P ÿÖú^€“Â_­ú-@Q}EÛ/¹íV‰e]ârbæ»\BÏQ7!÷,¼³øÜ5í]²–D¸”gÙ«…×}v0qòË\ƒœ¿k·V‹R/ÕKË—IÑúQþœÙ¿;Øä&DÛdHܧmÌKF4ÊÒLî°”ˆ·á©{`ZÒ„í${‡PÎæêu¿ÖÌé]¸zlÆÉ¥ýë®Ö3—Þr{¯¼¦É¯¹{MÛŽèý¯H¯¶îV->¢Å,ÑâáÀGÐ5êXXò•sH¢,-eM™“·™L»Žëf»íRªEjš\··S)ÝY‹©ò2áá+ [Œˆq÷™‘‰2f‰¸´ ÍŒ*IÇSW?4®Ñ#I5/ZzcŽÌk¦„T…3u½™a—ºnÿ­.^fòþp„E‚¢Õ,™z¯éº~¦¿¾Í–Y›.\Xò‘cZ©Íµ·x’³l{ê±8Æó옩]‹åJZuÓÿ¨RÛ•j,²jõ¦ßn‹¨Ú¬UHÌHÆ™—É˜ß ¾µâá÷è_¼#q‚ù·ÜÈIZL…ªºA¯XDÓh³.¨’+ÕÕ÷ê!Ëzgjߣ3©ªÉM~ꟛšãR:ìÚ¦3·§­6˧—±äöó¯·w/…i—` XHîvª0‡9Ô/ÞeíÕªèH}*¿ó’¹nÒÓr´9±ú6·fÜÍ:-þ'ævͺH<ã ¼”WXdµÌnC¦¥˜/±xmõ\57nvÊæë²©Ö[N Ov‰ç•ŽÅ,®›wáüáSÜ<«ïWÛЃ-¿wº›!‚<@/Òñqñ‰ñÇÞç¨Ëï‚÷e»¬ßa»íËÎÞÌ:?º)Þæô~á?9³bnQ/}í½ÆTÖ::3Y^Ü ó‰±øú-oùXÉ4+ÿá—7ÄUˆj˜wæÀÙ¬qtLæ$@Ô+k\Á`ÞÜÊ’V Mëí¾«b=»mSc€Qµ¸XX‹‹cZßÌ9¬Gõi˜õEžÓšéöñ³ï;7†[R®„{d⽺êÊ( ÿfŸ¸ÉIFÜ7#×RÚ< WM„` ü&‘q¼Ó­»D…NcºÛnši?L‡ïVµhk›ÒÝ¿ù¯ÍÌËÜ!JÛ$÷ÈÝÂt6 ÆdB8Ì]ó©É^›Wî`y{.<ªÑ®nÚæñ5Ý>¾‹®ÓUQÑïé®[xjüçfI‰’;×kœé{•â!‡±¡Y–Ø®`.wV1õ-¦rB7€y™àÓó4ê-ž¬ß–Ù_M*ܹœÊ馢Õ4$-I˜ß uÜrÏîñÑ9v93CwNÀ2‚,¸7XœË4ZRxˆ7ãttq0ºp#ò1=zÈhXéIØéi­Ÿ?6ܬg¼«îå X=UÓ;ÑpûÇQ«x˜éIÜ÷=’Ðöù*è˜Ë²3(Çjôs`™à9 ˜,<ÎtçNXÌìYn«lu—UÅíœÑ%d«ß34lÞ);dúÞ×Ú¶x¹¶dw è”¶Ïl®¯‡Mæ*Ìäu«¤KË*¾÷5p5³lô¬ëu&–ŒZ®/3B¿]Ù²íNé6zNª¯££ææ›?gÛÙ&\Îè;Ó.ÅŒ¬$ÚÍ]ÈŠ3uajF&á§«ÖþÔ<ÀÑÓ® m6¯6ïWÝÈÿ^·5óåÓ¦Í×^“v¹›‡‚bFݵw.ë6#%±h~×DÙ"90!öóî»)Ñ®…5djÍÎøz*"«—E^ëÂü×l?2Y~ÌŽäDô®g‰™-v¼“ÏQ<9ûNÓmžZœëm[Œr&;.'ì QÔì1Ž$I%8×¥ÍFºÊ­Ùòݹ•™•–ÿ¼oO~c‹Rc—1»ÙŒ~cw_ÔÜ”—½¨Ëß6ÀŒö·w½Ê)Žá}T.&.p†œ]Vlê ~_†¡[3Q˜\»2;3«Ôçu¨×aÕ¯•É™ªÝ©òîoQUšµWoÛL±šÉ©Mß Ü?*!I²6X,ŠØÃV³5FK%5O_–kfª§9V.m·9óÍËL³SNS¦¢®¬ítÿ&þlDDFºÄ¬³¿s¥-Yuf4äî;¡^KcÊ»´¶eÚ‹]‰”e*üt‹šDœ“§æ i×VªM²¹³·c£{ô"²ÁmtóZíº,í\öŒÝpÛÞqvõȹ”Ãa@‘ïŒy¶Í)ÜÁ)åñC­)Ú òt³X×,¤„©u¼YUW+¯ÊÙåµÕk±™å\_™D’½·&t­u–²×ɱ!É}÷ˆ+CuŽeœ1ñÂà›d¹ñ–wý™ä ÏÜn"U‰¥©ª¯æÍÍvõ­¶—YÊÆp˜ÇíÍÆ2e£ÜlQš#Ãt™.÷+(Ú4µ-^ŸŽ~g¤r܉ÇL­jë!·aìvÈÛ ë6c”C/–HvX3F2db–ßLÝâ7:öfªN«j§Jïß]4ö› åÊJ,ň×7Ô«‡ço÷vc›j&XÊkØ7RX7. BÔ!‹+ÂuÃ.Ê&×ü¯w¬wrT«±ÿ[}RÎ,vnÀé’vL‚£ÜÆö›|É-^^.K!9{h{GTÝ«ås¤û¼¸;Ÿ1ÛÝ&í0OGS}Ó3òØßÎ9b‡.ÐKµúwuE¹]Öf™èèÞWæ:ýV=?¡^^ަ¶·&ŒÓ'ÕK?Ü6Jqõee›3Õaæ½a7ÖM'ß6MÞV­IM¶–{.þw$Ê4˜sZÕÙPÞËÜC µ9±öš#ïcRÅ¥Ëï5mgæ¾ô·\ÝP©R¯žOørÛwY§?/·Ý›dÝ2Ä"|—Ú¹®ûê)DÍ·'[Ä x‘~!­j#ULžYzL·»ù’χr«¢¿XßÃfSò›êM."êD51Q· ‘SŸùl»<Õ*Òu MlŒÎœ·lH‰`ÝQZÏL~c*‘eTU³+òÝŠ©_55Ûc7g“ Š“"¶õ.Õ¡láŽ$ô–îï 2œ7Úâ¼¢¤M²MÑœ¢¸ˆ–š"­â†ºCYûµ¸<\ì]C•R+ª»OÌÑ+uuœïjZDŒ·XËÎqGÙS¼NVë¿Z_æD%¡ðäªlBÑÆOíIVªýO‰Œ’f꽜uÑ!OŠÍ G7rYªØ›}¶ƒvEê¾~ÏLm­GÔ)Uã±nµØ¦Ã‚ä‘1صµ%ƒ©ˆ´‡›)Þ·–[òe˽îósn|ßËë°^äòUvwLÙ>ó-³º{ôdÍi­è{le÷)ÛÉ^I-à„ƒ%…ÖÖÝZ„méîÐ_š*é‘–‘·ÔÔ:n†ÃæÝ•¬æs_»%›$ªÅSQ¾7M.å5bs°µIB€P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( €P @( ?ÿ×ú^€“Â_­ú-@I ±R:kÛ#íq—éÇHØxÞü-o²ÙÈ¿R¬G§Îªî*‰U€P @(~Ëpj_$HÊ9f»fv ¿Í"VSHget_results("SELECT option_name FROM $wpdb->options WHERE option_name LIKE 'youtubeprefs\_alloptions\_backup\_%'"); foreach ($backup_plugin_options as $option) { delete_option($option->option_name); } // delete vi data $vi_table_name = $wpdb->prefix . 'vi_consent_logs'; $wpdb->query("DROP TABLE IF EXISTS $vi_table_name"); }youtube-embed-plus/screenshot-5.jpg000064400000223176151435171370013336 0ustar00ÿØÿàJFIF``ÿáàExifMM*;J‡iRœÊê >êfisayo ´’‘94’’94ê ”ê2013:12:23 09:11:102013:12:23 09:11:10fisayoÿá http://ns.adobe.com/xap/1.0/ 2013-12-23T09:11:10.940fisayo ÿÛC   '!%"."%()+,+ /3/*2'*+*ÿÛC  ***************************************************ÿÀÆ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úFŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ŠÄ½ñ"i^#OÕ¢ŽÖÎæ’Öù¦ù]Ð’6ŒnÁ[¦Úe—ŠíO‡¶õã…c$¤[Ép±îŒœ#¾ì,9 ’@#<äàoQT Öt»›kK›mJÒh/[e¬±Î¬· ‚p„1±ÀÏCéSÃwmq4ðÁq²Û°I‘‰ˆ ÐàƒƒØŠšŠÎè±ëk£I«Ø.¨ã+b×('aŒñwtôéHž$ÐåÖÛF‹YÓßT\î±[¤3Œ œÇÝ9éÒ€ØÒ¢³“Ä:,ºÛèÑëª ËØ­ÒÔc<ÇÂN”‘x‹DŸRM:cO’ù÷ìµK¤2¶ÂCa3“‚¬}(JŠåõ¿ipxs_¹ðþ­¥êŽ‘e4ímÊÊcdSê¶à7 •©£x‹KÖ·Ãc©ØÝ^[¢ýªÞÞá]àcÙ”WF¥ _ëúì6¬¯ýZš”Vjx“C—[m-gO}QsºÅnÎ02swtç§JÅñ玴ÿ h“E©é‹­Áf×ÖW \Ýî ÃÓÐе·˜–®ÇYEW¹¾¶°Óä½Ô."¶·†?2Y¥pˆŠ$“ÀÌx?ÆQëޟ冱£¦–ß:¤,ØG]³Êd*_iBFÔÚN9àÑßȪç_EfÚø‹D½Ó?´lõ>âÇÌ}ª+¤h·’.ðq’HÎrE6ßÄÚ Ý¼WšÞ<3\}š)"»–I¿çšp_ý‘ÍÒæ¥KY¼“NÐïo ÒAÈ¡ÆA gœTZ.³m«éðÌ·EfèÚþŸ®Û™,&RA9‰˜oP2T€{SnêZV•á½NÚúßCž­åÒ%‹È&-¾R1P®Ib2ÀãÓ}ô‹˜|]áo°Z=¬Úݱ’8HŽÜŸ#bœ ºp¿ìŸJî(¦õm¾¿ðÌQvIvÿþGŽøoÃNÚ.‘á{QñlWv·É5²iP‹Už7ó<ÕºØÚÌ7nówØ?1"—]†âÓÀ~4ðõ扩ÜëZ•ÅÜÑMo¦Íqê»…¼ÔB ªmM¬A0Lû Ó³¿õÓü¿­,__ëÏüȘ±‘ƒŸ/ü+Í,ô­B×ᯀåºÓn¥Gš õ nÍ0Q¨o+˜£²>Ð |¹z…ºÝy~ZG—úìy‰4»˯ê:5éÓ/äÒ­Ú ‹)"{¶Žäd0º‡Ú#eRÌ£!Oe½^–ÊÝô¥¼Ñ&Õ7_F-afø8™³þ­W‘¼r3ï[P´ÐmßëúüLßÅ$þÔ¢‚6’G¶‘UrXí<:×#¦iòÝ^é+§h—Tö0²ÝÝË„HL{x#ïå¹ÉþµèW%\,jÔSo·àï¿C¶†2Ti:ioÅ[n§•辿:¥•­â^ZMo?˜fJlܤžnn`zdñÍmé¶žG‹e‚ÃF¹kY¤”\Ëb (;²c—«+ ­ž+¹¢¹éeФ¢“Ùß×mªÙ­J­óGuoø'àH³á—O¸Ñ®-/"2y—mn%øÿ‹¯°)ºõªZxÚÛS›D›Q¶{Rö{a)áˆì@Æ ü:WeEl°‰Q…+ü6¶‹¡ÎñÍוk|IÝ]õ<ªãÃÚŒº½Íê^!¸»,.bÒ’u›!¼íÁ”zÒµ5‹G¶Õ5‘¨hWz¬—p*ÙÝÅoçþM¿ð 7Öš§Ëk7ç¿O@¢Š+¤ã (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ +Áþ+|V×¼âëÛ{mBHì£x’8£¶‰Ê–‰XòÃ=sÞ¸Oøiþ‚7øoþÝõ;$åR*é=[ëò8>»vÔiÉÙµ¢]>gÖtWÉŸðÒ:ÿýnÿð ßü(ÿ†×ÿè#wÿ€VÿáGÕ#ÿ?c÷¿òÖåÿ>¥÷/ó>³¢¾Lÿ†×ÿè#wÿ€VÿáGü4†¿ÿA¿ü·ÿ _TüýÞÿÈ>·/ùõ/¹™õògü4†¿ÿA¿ü·ÿ ?á¤5ÿúÝÿà¿øSú¤çì~÷þAõ¹Ï©}ËüϬ诓?á¤5ÿúÝÿà¿øQÿ !¯ÿÐFïÿ­ÿªGþ~Çïä[—üú—Ü¿ÌúΊù3þC_ÿ ßþ[ÿ…ðÒ:ÿýnÿð ßü(ú¤çì~÷þAõ¹Ï©}ËüϬ诓?á¤uÿúÝÿà¿øQÿ #¯ÿÐFïÿ­ÿ—Õ#ÿ?c÷¿ò­Ëþ}Kî_æ}gEx?ŸŠÚ÷<]eou¨I%”*I–Ñ!b±3Tg®;×¼VUè:-&Óº¾†Ô+ªé´š³¶¡EW¾½‹O³{™÷yiÛFO'Ö‹;û[ø¼Ë9ÒUï´ò>£¨ükœè,QEgkå–… ¼šƒ”[‹„·?3¿AÔÕF.NÑÜM¨«³FŠ(©QErºg¿´°ÿâ_åÿkKqúìù^Vî~ï;Ø÷­!NsMÅmþMþI“)Æ;UTWw)gg5Ì¡ŠCHÁzx¬Ê%¢¹M/⛩ÝZDö¥„w§mµÅå¶È¦cÑU “ÚººÒ¥)Òvš±œ*B¢¼]ŠÈþÝÿŠÈh?gëdnüýÿí…Û·ùÎhÔußìÿi:WÙüÏí#(ówãËØ»ºcœôê(öSm+n¯òþÜâ¯åý~¦½STÔ?³,ëì—W›YG“i™!ÉÆ@ÏAœŸj·Qgk•u{QHaEekšïöQHtÍKP1aoæ”Çvä`V-Ä;}NÒ[‹=X¤2Ê·Û„„ìRH. •Ç~khЩ8óÅhfêÂ2PoVuôU=PþÕÑ,µ/ÊûT 7—»vÝÊ3žµr²”\[L¸ÉI&º…QHaEW¿¿¶Òôù¯oåÛ»¤r ÀúMM‹,K$g(êN:ƒNÎ×Õì:Š+ Ä^#—Gº²±Ó´æÔõÒÞU²Ì± ª2ÌXð*¡ N\±ÜR’ŠæfíØË´HePŽTPs´÷ïN¨((ª—Ú‡Ødµ_²]\}¢amãÞ"Ïñ¿<(îjÝ;4®+«Ø(¬¯kØV¶³}ŸÏûEÜVØß·nóÝqéV­uµ_ÞZý’ê²²:XöÇ6ᜡÏÌCïUÉ.^nŸ×ù‹™)rõÿ‡ÿ&[¢Š* )’ÊBòÌÁ#K3ÀrMg˯[=ZÊ ­BÞP­ZBZG q§äûUF2–È—%Í:(¢¤ ¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(äÿÚ2)&ñ…úÄŒçí(Ïü»ŠñeÓoñm/ýðkß~6€~ j[¿ç¤=³ÿ,¼Â{™Žå´Taù‹psí^Åz §#¿Ùäy˜jœ‘Ÿø¥ùœ’é·l…ÖÞB à½)é¢ê2¨1ÙÌÀŒŒ!æ¶¡½•-–Ý£ Hä–ï}+¥‡P·Ž%G4{F>hûVrÀIh…WRžÑ¹ÀQ.éö9·G÷ÆÎ™õ¥‡DÔ®0YO Î2¨Mtv×Ѿ¢âáÙ-å}ÏŽI ®Š+›YcY®nVÖПÝÃð÷Åu<¦I\™ãªAÛ”óè¼9¬M¸Ã¦Ü¸VÚvÆN¥6ç@ÕmuÍ„ñŒã,„W´xKÃpjº:Ìòˆ-ÚfeBܲ†Æs×'µcøšêO jKm «IÔ•Ž~Hã­pá0ôñ8—‡Žç¡]biÑU”SLòsar˜?ìš‘t{÷PRÒR¡ Ö»K=^ÞâÞK ô lä´eFvAí]'„t(|_nÖv¶ˆ†Ì’7ç^®+)¥…ƒœäÒGqU§%ÂížPt=Ll¦ÿ¾ Dúmäë-ä_ª×­x§ÂoáëˆÕî VC…øã¨Ï¯ó®MÕFB0až§šÃ —áñPç§;£JÕêП%HÙœ”º]ìY–ÖT¦øË!×Ô{Tmi2œœu¯BÔ-m¼A>Ÿ8‚ñQSìs°íÄoÓþpyï\å½¼Ðj/£Çå7ÌpTú¹åQ¦ÝÛ±qÄsBéjzoìé xÃOYT©7íös_XWÌŸX?Ä5—2MŒ×¯¦ëƒ0Š„©Å*üÙŽNJ£Ìÿ$dø gÃw`z/þ„+—Ñ|/ªI2ÜOQÑÎDŸ÷Ïøãñ®úŠóV‡¢6$hã ò4¤uw'ò~•æÞ-’ÿÄ~)¼Óô½ûZßO³h ”ˆE4£ïåº1õé^—EoB·±—=®ÿ®Æu ç[ØòŸjöúÏÃÝ ]lœC©Åo©)ÎT¦D™ÛÏ#ž9æ«Û‡þÌñ)øuöÏìŸ&/g™þ·?¼ò÷üÙÙ׿OjôÝcD¶Ö…˜ºySìwIu–@Ë!È ñZ5ÙõÈÆŒzÞ×Ótöë±Ëõfæ›{+_¯^½7<¯ÃÃA>.Òá^ý«Ë çTÁ—ËÙ·åß¿Œç8Ǩ¼?2Æž ùÕZ+Ûø[qÆÉvÕ>„äqï^³EL±¼×ÑüÝÞÒ[ÛûßPÃr­×ÉYté#Ä\iͦJ.?´?á`È ¢]ûøÇðmÙúW®jÞgü"×¾~<ß±¾üzì9­*+*ø¯mm6ó¿Év]‘¥ >ÊMßúóîüÏ"ÑẰ³ðµï‰µ)'ÐI-ÂF±¥¤ÿÁæ2ËþÑ=zñÖ=Xè§R×?á0ûgü${ÿeìósåã÷>Vß—ïz÷ükØh­þ¿yó8ÛÑÛ­û}ýÌ~©h¨§}·WÙ[¿Ív<QM,xƒI?D…EE‘ŸÌ$M»Æ>s€Ý}ê½ÂZ?ÂçÅ‚àèë%ÑS>òâßí¿7R¸öÇjöŠ(Xû[G§Ÿ®ÚhõóØ}wòצúê´Øñ«û;iþj—i;i6úœm¤4Ìÿ*U}¡¹Û’qŸ~ù­oB°Ö¼Mã uÞV±³Š[p%eæ&ù°'åkÓh©úô·[ë×]yù{ܨábž¶¶š[Mv¶]’}{¥ùZæÕ(F£¼¿­]!°…&Ð|w6縃Xû,r3’DBFÂõÇWðoM:UÄùVÉ—ZÔ§¹—32MfpA?»tŒŒžüW©Ñ[KÍͦ÷ëÝß·ù\Çê©4Õºtíý| GÑ$:s_™Ï‹Î­Û<ÿ38ó{1·ëgQ´‚ÆÇâ$©åÆÝ‚äžXn=}ɯY¢ªXû½Ÿßæžšh´²].(á,ïÃÊK]uzêü1ñw‡ÓÃþ €èP”†êâ6Õf•å56œ™JÛ2yÛŽ¼VN‰«ƒ|Asá›ËG·`жúc\f'oeÀ”=A==«Ù(©Ž>JŸ,•Ýï¯]·û­è7„:’v²·ü7cÍtk/êz^¯káH®g–kö„ÌÛXŽW;¸Ý»¦=ýë™Þ›át¦Æµmd¶{Ì™É •Ï?/BÝ+Ü(§{Œ¯®éü]»é­ÿ«“,”9]¶knê×ßø'—ø—ûþ]CþŸö?)?²¿ÖùxÇï1³ø³ŒçÛÚ«Ûi·­·ƒ´ï‹§Žâ[°É<Œ²aøß(‡ÇÚ™'’Ó?òÁkÉ^â(Í´œØ<â½oãr†ñþ¥“·÷óÿl¼ºé¾Í,Sí ¤lrGQ_H¢¤àŸòÇò>z”ïRqÍ/̨÷0ÉgiåÈ¢Hs‘Æ¥»Öe¼³H[ålå±Þ«Åk%ÂÌQ8„î<`â¬ÜØEÀÛ°‘‚ûzkÜ¡BÒgKŒ/¯Aú Œ7š„+;ª!o›'œš·«@ ƒnˆL߼؃>ZôÚ²"}²gßµIö–šWU%UHÆÞ3Zf¨à`ªoÒçBU«^ú‰à[÷“N“Oœ´SĨªÑ\ÙžäñÓü+âÉ©Á ´ñÈè\,ÞfÝÍ¥ûŸåÅgý­l-t˯!nHæ¡;w‚øÆG#¥Vž$‹C´º¬m5ÄùT<*œø×ÂÓÆJ–1â ¬ût>šu9°ÞÁ²ðµä÷ßfÞ¢68Ô«Rø²;šô¿èwÕµe¸–fž(äaêwg†ààãŸÀV/ÂíKN[鿵WY3A2<Ÿ—kdz`ð}~µØÏq xŸU7ºEýÄwv¼p²9s…ÜÞÈÈ=0+«0Ï*c)ºSVMƒÁ{6ªÞîæÄb±)”ÜMtÈb„ÈFc-É,=@¼ÖH˜9¡®‡Å[®½r-âÖÒB É/˜CÏ׎øÇ^k™¸Ôndù¡ÉÆ2©5Y62hªR[³4£,E^x½Š×!ÈÈ8àWY§7›d–zª ¨•v‰âXÿÝoOc‘\­­åŒš—™sš–òù°»ÎèÅJœy.¸#ê§§ô­|ÉðVúÞÿâ-£—ŒK89`ù O_¯ë_M×Çæ¼ª¬9våýY××Ú‰þH¡¨ëúeæ›m:HÏ©\›hŠB°äËdð1éžqFŸ¬[êWú•¤ "ɦÜ-¼ÅÀ˜Æ’epyq׿±ücáù|CuáøÕn µ¶¢f¹{k¦·’4ò%PC£+™”|§<úf¹=KÀºŠZêúu¾5î›{¬Ç9óä†úᡨ»Õ¯×"EÁ/– £¥y=õÕÁ='oÃüÿàÖ«âk}yîÊôÆl¢tˆynÓËå*«2Tà°ì<ç³^Kiàz-9å›MÝzº~&+,Eîæ´¸fnÜbŠ»Yˆ* 8¹¢x+R·ø€ú­ìZºû\󶣺Åa–ÝåŹc7/´2-ÈA³!ˆUšKEçúJ×^_‘ßͬ[Áâ MÒCqwo-Â0`XÊç9ýàÇ_¯3ðo…¯´ßé·—~ûͶq§«î·?Ú7ñ&QÌŽÙuR3Ðt©üqáÍoVñ•†¡§éæUÓÍ´¶×0Gj® Ϻdy$ýèÊ *ǵNX9ÁÅ+/uwßï ¥e#Ñk#Uñ6¤Cª5ÃÉ$º]—Û®!‰ o+çÁáI>[ g·8¬/è³èþ#ÖŒZ°±¹s)»ºŽÜ\ÜÊÒ;žbñ€~_0êÙùr¼gá ‹í^½±ðôw÷®„l­¯cò­æ 0;™ÙXoŠ îéó`K°â““OËó_¡èñ¸–$‘s†PÃ>ôêó-WÀW‘G­ÚørÅtëÛ;ðÙc2$Î× µMïÕ%×kd8Î:/‡Þh·0›{ÛH¦¸2EkxmCD6¨8ŽÕ(Á œ)lçq9bYjJ½•ήŠð8´ëmgľ%Ó¬¢µºÖÚËT¶·{ShóLdl´Ì— ç*®øã ¤çì¼_à3u‘–›qq¦À²›«¬]ä¸}˜ÖíLn~W³¿-ÆAj•²}Çe·¯èzUU´Ô­/®¯-íeß-Œ¢…ÚFÇ(®HçåuU™Pþûç!ÈÎÂyÈÉm/ýn‘N);[\î&Ö-àñ¦Žé!¸»·–á°,esœþðcŽÆ¯×œë>Ôõ94ƒ¡iË¢[[é·q›7hÂ)i!d·pŒB£„`Þ^BŒ€zV%†&©ã Uì<#ö=F-ZÅÆ¦M²ÿgD[´oW2 dÚ€¡ß‚pM8«»[Ûúÿ†º¶—=†©k:¤‡{ªÝ¬”<‹Šª’@ž=Eq†5|e ÑѼ‹Èõ+››­Í‹ý.ÕÄž\7šÛwÄ6:„_+ œ.kÅákÏøBµÝ1|0b×n4©­§ÕÙíÇö¤ÅH ¹\»dó™BíÎ=q=?¯ëï·¡j+žÍésÒ£q,I"ç ¡†}ê½Þ¥icqgÔ¾\—³yë´ï±Ÿ>Tc“Åy¶³àÍrçN–ÆâÚâþ/·Gus=°´2ê0˜ÝD,“ƒ19W6… ï¬\x!ÓÂþIô)u…Òµ¹}:ìÚI2Âë TQˆà]¥ã;…]¸RÛFjÊÿqš¿.»Ùþ¶=îûì—q}–æµMåo†=ËÈ͹Ïð¯ËŒú²Žõj¹Ÿè“jšÏ†¯­¬ÒGÓïd’IhhckyTà“œ(ǵax/Á—>¾ðÝÂipÙHº#ÛjÒDP4“'`©ýádÃs‘‘žRWßúÑÿ—â6•“_Ö§q>©io©C§Ë..§†Iãi;’2¡Žq‚ëÔ÷úÓ4]Z wB²ÕmD‚öž5”ÁXd#<úšçXô•’iå‚ãÍ–@#s,›T30,PnÀÒÍá[õ(º¿…Û_Ó¡½Ô\Ø·a#O(–)ÂÉ _•K¡$†RÇh 橤—õåÿþ$šþ»?ø¡ë:¬:‡}ªÝ¤”q"Äbª¤ gŽäU=ĉ¬ÜÜZM¦ÞéwGÍm{å–hßpW ºJ0Æì¼‘œ»Ý V“àìúÍöÍ]´fµcçgÍ›ÊÛ÷ÛÉþ#SY~ÔltÍSNÓí®/í¯­Ã=ÕûK,‰§›f^V,Q6ÐNÌÈà•$i&дi]¿¯øfvºŽ±o¦^i¶Ó¤Œú•ɶˆ +ÞL¶Ož™çM¬[Áâ MÒCqwo-Â0`XÊç9ýàÇyÅׄ.^ÆÕ‚üí!5ß¶'‡sjÞDdhÏÈÒFe%ö«óg© øJïÌÐåÕ¼ºå•¼WátÀmd"Y‘ LM"¨ÚŠWä,¢ü¸¢Ëúôÿ?éËúõðLKíú´Ö?e¹_*—í !}ņÕnì6äŽÁ—Ö­W•Kà=hÆëqeÌ÷š4ws,ª|ù ¹-1,Ä3mo-Ë'Š]_Àò[Ùjv¶>û]¤z¯Úô>­ÐfÕ™!•ÑDfMù Uó’1œ‘¤¿¯5þ€4ºZ™ê•VMJÒ-V 6Iqwq“EÓó" sŒ ^§½bx³I:Ï‚þÅ}¦Ï{!0¼––Ce••±‹‚±²dr¨íœW?ÿÅÔº—„u]O¶2Íec%¬°YE‹fŒÆê®øU@­Â3-…Ü9©ëývÿ2V¨ôZÆ»ñ5½¦¯q¦­•íÍżvÒ8·ˆ?Ë4­=s…(YŽ8Qžk„Ó¼;⦱Ó,"ÓfÒ®4¯]é‰-ÌEá„"7MŽÎùdä¨#ÒªEàY§¼¹›NðJh‘+éOoö@^X.Y¦”yR7>[}âC‘ÍZK™k§ü¿à•d“þ»¿Ey~•à}BßÇ“êwðê’Oö«‰žþ9,R)á}û"í-€È¾[°@S!°ªAðçG¸Ð´›«&ÑH³IWìÂX­Òæa°y¾ÎÍ6F #Œ´-UÉ–ŽÆ½÷Š´Û®˜´“5¥ì3¤IÊK1Œ ù°ĨIñžüVÍy~±ày¦Ö|@°xj)Ž­©Y]A ­IoæÄä°“9ŽGÆÒ§Ô“ŠWð ð±Ô¬4Ý>HtO픺LÓÅ®&ƒìʤ$SƒÙrŽ q–¾¿ëoówÌ«.‡ªQX> ÑåÑ<'oa ¹ˆ©vHîž&xU˜•OÝ*Ƹ ¨6¯Ý€ ó#ák—Õ¿±N‚¶:Õ߇5+{QÄj“óKFÌäs™#wN´}«zþMÿ_¨F)õ=‡Q¾þϵY¾Ësu™c‹Ë¶{ îv?º3’{ME¬ëú‚]ݤ\Cn@ºY5<‘ÆXgÛ=kÏ5ë^"Õ%Ô.<5-™Œi"¼šÝZ §y]vHÀb7<ç$1Ú¬¿ïG…oǬÜkŸhËi¿ö‡œ0ÄýП>ÌõÏ5VZ_¿á§üikú~_¦Ç¤Ñ^[?…u(n4¶ÿ„gûKSÓ®ÝRúámdµ¸ $ln¤âT”¨ûÑŒ†SÃ.ÐzßiSj–:x]3ûbÎÞðKy¦f?ô¸ü·P¸„l;#íbÉž  މ‚Õ´iêZÒiú…ŠZ\^]^³lŠ €¤kò1vQµw.q–ä`|Úż ´ÑÝ$7vòÜ#6Œ `NsŸÞ qØ×áßÏmâMS¿Ñ­ãV÷â=þ\b²N¯o9?r2ê6eWæàŒìx—ÂøÅÚ\Úž•m¨éX]Ç"Ü¢H‹+´%>Fê~Fçc·ÞŸëoÈvW:Ú+É&ðߊm|/qiýs¨Ýê^‡KvK¨qqÊ˜Ï È>hù—wCžÙ½uàK«ÿ½ÝþÔjƒ{Nc}Ö`P‚~çžS¹±ÆiÉZöþµ°Ywþ¬Ÿü‘é´W\xCÅÇág—Mf»Ñì¬vÍ´.¯€ÏÌù“”Q Im̓[ZW‚®¬5m+TM*u×o¥»ºRžkYÈn `rÊKÆvsƒƒ€G*¾ý_õó'£þº7ÿí¦Ö-àñ¦Žé!¸»·–á°,esœþðcŽÆ¯× ãûKÅ=íׄÿá'±¶´º‰íÊÛ7—#´EºŽˆÃ#$~5Îk^×uÒ†ª/õ)!Òá¶ŽK)lØYÜ©mò.£i9LK2|™ ´–©]ʲ=7OÖ-õ+ýJÒ‘dÓnÞbàÌcI2¸<Œ8ëŽsWëͯü s6©ªê‰¥Ç.¦u«쯙£ó„¶ë)WÈ*I^7 ðr*Œ~Õïüe¨ÞÞØ›5¼*÷GkbE•$´B~õÊùy-),œ¤Ñ¦—þ´LLôÙ/¼½V ²Ü¿’ý¡cÌQí*6³vc»ßkzUªóKëW7çV†Ú-oQÑ¼Ža˜n%ò|˜÷˜ª 0m'‚y®|{s§ßG¤øi¼?e<ÚoüK–h³Ås¾iÀ‰Ê ¦Ñ»;Ûg#…ËKoë­‡ekÿ]?¯‘êtU5¶HÑš O…VÞ&6öp… Á!G\žþõWûCXÿ ü¸yÿñöŸññÿ>ý?ñþ• ¯ëúòþ®‰þ¿¯¿ú³5¨¨­$šk8dºƒìó¼jÒC¼?–Är»‡Œ÷©i½ÕŠ( aEPEPEPEPÊ?´Dò[øËPh\£ˆGý{ŠñvÔnÝvµÃ•î3^ÇûHÈÝÿ_6ÿúN+ÄEzx©É8[ùcù~1jm¯µ/Ì´5 °Y„òno¼wuÏ´ÍÚWê7T"ŒæöÕ{³¹F=‰RI€ÜÜœu­[wò®™:íÅPÓ£ó5+dc€Òª“õ5ÑëÚÑ5”n|ÿ5 ýݤÜXU«);IÜé§M¸¹"áY® ³H"óÊ£þìI¿_¬é÷ðhZz\ÚËl†iù ³@Çnå^‡ðäiRøfKÝRþÞÎ;F{ycÜYs†R ÝÀÆÝüùüj†“â«6å.#uYwï‰Á äŠÅÓ£PF• «ÆÌFzý}k¦ð…´ž±§-ôIöyoUvåßÓÞ“„w¯7Å uhï'å•™§fgBz’søUMBæ(¬6Æâ6¯ÏžµwÄZD–šµõ¢0Ä3ºçŽ@<~•ÏIhÿfvs–9è*âµÐÎMØ£ƒÞŒÒí9æœ`# ×R§9lŽ;£Ú¿gùì?ëæãÿIÍ}e_'~ÎHSÆÿÏÄÿúNkëךöiÿ*üÙŃøªÿ‰þH(¨®n#µ¥™‚¢Œ’kˆÔ>'ZÛ\˜í óBœ&°¡†­ˆv¥›ÖÄR¢¯QØï(¯9ÿ…¬Ÿóæ¿™£þ²Ïšþfºÿ²±ŸÉùÿÚ8_æ=ŠóŸøZÉÿ>kùš?ák'üù¯æhþÊÆ'äÚ8_æ=ŠóŸøZÉÿ>kùš?ák'üù¯æhþÊÆ'äÚ8_æ=ŠóŸøZÉÿ>kùš?ák'üù¯æhþÊÆ'äÚ8_æ=ŠóŸøZÉÿ>kùš?ák'üù¯æhþÊÆ'äÚ8_æ=Šó‘ñZ=Ã6cS]vâ[/Û³Ú68’3ÕúÞõ…l"„yªFÈÖ–.…irÂZ›QT5]bÛHµ3]8tµË¹>XîtÊJ*ì¿Eyä¿aYXEhAà’iŸðµ“þ|×ó5è,¯þÇäpÿhῘôj+Îák'üù¯æhÿ…¬Ÿóæ¿™§ý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó4ÂÖOùó_ÌÑý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó4ÂÖOùó_ÌÑý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó4ÂÖOùó_ÌÑý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó4ÂÖOùó_ÌÑý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó4ÂÖOùó_ÌÑý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó4ÂÖOùó_ÌÑý•ŒþOÈ?´p¿Ìz5ç?ðµ“þ|×ó5»áïXk·Ø"àŒªÃý¯µgW/ÅR‹œá¢.ž7R\±–§SEWØQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|£ûD§™ã-@ÓÄúN+ÅþÏŽÕí¿´Ïµúïþ“­y _júÓRŒþXþG‡¨ãο½/ÌÏò(ù«Û=©BÚ£ØÄëö¬‚Î#õ»á•Oäk«ñ¤žgŠxQ 8üMs¨eFn®ÓWÓåñ$ðK¤¬24qrÀ,½¿\×›¦¡(´G Sšœ£s—F;—Cg;ˆéOwýËãÃ-Æ“fÅnì䌎 Ç6-:öçå‚lrJŒâ¼ÖθӜºÓcŒêÑ.,˜Æ{Šé¾ÀŸð’ÛFÊažb =RGëŠçí¬eƒZ±<Á# $ùg5ßhÚ*øâ í¥´ÆáV6¸‰ð27Á÷È5m8¥~¤Å{ÍuFgÄ;ˆ®.B¦ÛÈPGBàßÈƼôïš9\ò¢×šöŸX›ý]C4¶Ò :ä˜Øa¿?…x˳\Nƒ8a¸`fœn˜äRû/$Ðâ¦KQÜU˜‘J¡AŒ¨È59R;WÝ`éBTTšÔùêÕ›Hõ€(#ñ¾œüöŸÿIÚ¾§¯—>ÿÈõ§×YÿôCWÔuàç)*ñKùVs¼j?ï?ÉgÄÛÙ,ü;–Äy’8úW‹ùÙêkÖþ/¶Ï [úlôñA?=kÙÉ,°ß3ÉÍnëü‹þuu{?Šü á«Û'¾º’-\st¬¨„ž›”à“ÛúׇޘmïeŠÖé.áVÂNˆÊzá€#éüú×fO¯Ó_Öç.'<;\ÏëbÏG]Ö£¯jž‹@°ð­²‹k«Dœâ3í²·Þã$ôáH Û›iáKKéü0ÒµÊiçûHjˆöˆ6ü½ø9¢8Õni«-m®º_uÓo1<7H»»&ôïoó9::º« øz-ê{[FúêÒGûJA$#ÈE“i,‡~_âŒút­sÂÚ§ãK='NغÛ,÷;Bÿ™rxïÏC/1¤žÎÚþ,F·]?Ï<ê<êì켡ë-£Ýé7:”z}üòÛÈ·AªË0+Œ|¸?çÙø?—ßÙÖ²Uy"·åe2Û‹œt8úðå˜ÑŽ÷û½ÉŽ8²WVûÎΣήÚçMÓ—Aðõ­ôÚ½Õ¼“\B¶ö©ñ0`Ì®v–ÏRxÇJ–OxrMnêÒÎþøÅ¦[™¯÷ÍàOHÕˆ Á,IÀàz¿´)¯‰>¿ƒ°Þ§GÛñ8O:º¿†WÒGñÚc²â UÇ®áü«źf‘¤Ëhú¢.¢¸Œ—‰§ŠY aŽÆJóŸÐÕ†oø›§úe7þ€jq•cW9-¬<-9SÅÆ/¹ôy/ÅkùXŽØ1#S­zÕx§Åù6x¢1ÿLWú×Íe }n7ó=ìÊÿVvò8ï:: Óõ±Ô`¹xc¸X¤ ÐÊ¡–AžT‚äW²x®ãÃg¿µìt4½ìamÙ#ÎæÏNÃ'ðÅ}V'èN1å¿6Ÿ3ç0øUYIóZÚžEçQçSü76|U¥ ÿËì?ú®óRðþs¨ßêZìú‚5Æ´ö1­¡Lyî:çùUÖÅÆŒÔd·<3©4övüýΣή¿þý/í[?µÞßjÖ“H±ZÛ¨#‡Y‚ ¥G¼LSŒcv>ðõâ¹^c(ÓŒ¥]´ßFíÙQ^ÑÁKE½'çäywG^…©YhøÄwZºÞ\\Ū4Ot‰›»øppSŸ›U(¼ ¤¢Ñ¥¼¿:ä¶l"¯Ù—®ñ»Û?þª¸æTÜo$×ü5Ûù x ‘Ÿ*kúvüN+Ω-¯ä³¿µ¸…мW°#ýá[:ö•áýútžn£&«eÊ.äòSv3ž3ë€?\‰›2Â3ÿ-SÿB»­´dÖÚ£JTªÅ=ôgÕ´Q\ÿŠešIô}-.%¶ƒS¼0\K†96,2Iµ\`©b€d@Î0yžltW>µ?‚u-Rεê¶%ƒA ÍÓË,Oq;ÂËæÈY˜p®Œ‘1Ž“XÔõ3Á:†©5¬)¨ZÙK8‚ dÞªHŠ©aÀþCÑ\¥ä¢mQ\’ľðÿöš]j:Ååב wîé<òº¢° JÂ¥ŸŸ-@ýÓ…^oê±´V ¡Úeµ?ìé }E…º“nn¬¢ÄlÀÁŒät5Ë­—õý\•v¹‘ÚÑ\Œ^=T°ûN£¦Én+¥qžfn-ܣœ Û¶’‡‚À¨©kö‹&¾³I’&k¸—Ø#‘¾o>VÚNᎇéÿ"üz_ÏÉ’¡'´ŸáþGAý±©Ðÿ&—ü(þØÔ¿è ÿ“KþFçS–WÒ"µI ’ùÄŽ’ J»˜09ÁÎÔ>…ªý{û>óS¸•d{ .Õ^q©;˜îcÎ>âÝz7BqEéÞÜ‹ñÿ1(Éí'ø‘©ý±©Ðÿ&—ü(þØÔ¿è ÿ“KþŒÞ6ÒÚæîÚÕg»º¶º[Q!wLå7å70@WäsŽÕxÿD›på•þÉÒ"ªƒ(™¶¤k’ü²dcÌNy¡:oì/Ç׿aòKùŸáéØÝþØÔ¿è ÿ“Kþlj_ôÿÉ¥ÿ Ã=ÑH£¸’Kgxnfu”äù UÕÈ$ù\ÎB1íZ·:ÄVzm­íÜÅÃÄŒ¬t&B߃€  ÇÓš/O~Eøÿ˜8Io'ø‘?öÆ¥ÿ@oüš_ð£ûcRÿ 7þM/øV5ÏŒ­’AŸ§_êw ,èÚÃ:ÂBÊàÈê»UØ/'$ôsM>9ÒM…åì+q5½¦—ªÎ±¾T(bïÝž:Ž} Ójü‹ñÿ1û9íÌÿöíÜÛþØÔ¿è ÿ“Kþlj_ôÿÉ¥ÿ æ/¼o6›â=V *âM/OÒ£Ôæ/pϘH È È@ Ô0i<]âù4ûY Òc¸7Ð5„Ä*F|Èç¹ì]çˆVà Ž}¹ü‹ñÿ0örþgøyyy£¨þØÔ¿è ÿ“Kþlj_ôÿÉ¥ÿ ç5ˆzV‘¤½Þ¯Å…Â\‹V±º–äÞó'•‚Ÿ6|ÌvÎï–¶<=âhqjºd›­ä,§.­µ”•a¹IS‚*H=A#šW§ü‹ñÿ1rKùŸáþE¿íKþ€ßù4¿áGöÆ¥ÿ@oüš_ð¬›_ÚÜi÷:œ–W¶ÚLírš„ª†+ˆ”d²bý9•I횯ÿ ͬ6× ¨iz•ÄôIÒ3#¬ïåÄÊQÙpX‚ÀŒr/Oùãþcösþgø‘½ý±©Ðÿ&—ü(þØÔ¿è ÿ“Kþ¢øÎ×ZÔ’É,/m$’9äEµšr§Èìw+0±ê¤Š-¼M6ð\êlÑÛê‹iˆQq¢³.OæHÙÁç¿#Š/M+¸/ÇüÅÉ-¹ŸáþFÏöÆ¥ÿ@oüš_ð£ûcRÿ 7þM/øV~<Ó.4s¨ÚÃ<±%ˆ¾•YâˆÂ¥ŠíÈê¨ÙWê@'¦hMñÝØørÿÃÚtº…¶­}%¬ˆ tØ’y¡ ÝP̤‚r¹~åíÈ¿NáÉ/æ‡köìuŸÛ—ý¿òiÂíKþ€ßù4¿áYÖÞ#[ûéà²Óï$¶‰¤ˆê Gäy©Éûò#;6äc5Ìh~3›Uð”:»êÚUüúP¾”PÛ·Ú5ùÀå€Ã¢ýî¢R¦ö‚ü|üü‡ìåüÏðÿ#¸þØÔ¿è ÿ“Kþlj_ôÿÉ¥ÿ ç´Om¦­ž¿ ÓêöòÑ„Bóyœ¤ƒa @]ÛˆÀÌr`` ºÿÆP¾“+éP_Grf‚Þ6¿Òîm‘ZYV5oÞ¢nÁlx§û»ÙA~?æJŒŸÚ‡ùÿÛ—ý¿òiÂíKþ€ßù4¿á\õ´„WEê¦òÍcž[¹¬áŽH#lœ«N‡crˆÃsž™ºV£­ÿÂ=¦¥Î­u,úýû%¥ÕÄ0‰mm¼·‘NÕP¹Hò7)¸È `«ÂÿüÏú³$¿™þ½ŽÏûcRÿ 7þM/øQý±©Ðÿ&—ü+”“Ä2iš%Õô­î­…vɪ­Õ†f‹h-ÆÄ `à ”cæ$d·ž ¿m:Áõ)´›»ûkEÞ¡v·T1ˆàÃ+)Çš I*p@<§ü‹ñí~ý¿!û9^ÜÏðÿ/êç]ý±©Ðÿ&—ü(þØÔ¿è ÿ“KþÌh4ÝCKÒ$½[ÝßÉ»FT’4+(có!€WQÔÖ³ãg›\¸{O¾•Òâ»Ó,mÏöŒ¬ó²´Ž$xXÙ[ :N^Î.Ü‹ñõî œßÚ‡{v=ûcRÿ 7þM/øQý±©Ðÿ&—ü+š¾ñ>¡mâ2ßÉtð±Å©œüÐÍ?€OQ¹H=ÿxœU‹_Z]jPÛgjÃ=Ìö‘^H±ùO4%÷ ËŽ"b P®x¥zÈ¿Ÿ1rI«ó?ÃüßíKþ€ßù4¿áGöÆ¥ÿ@oüš_ð¬ |}¥Å¤Új-ß“w¦K©Æ»pŠ0„ƒó`7ï|prEniWí©éÞ5¤Ö~pܱLñ»c±ÌnêAŒ1àÓ÷?‘~?æ’_iþänÑEÄj|£ûDÎmüe¨0PÙ¸€sÿ^â¼\ênåšþµî?´‰õ¯ê6ö¯:Í“! cÈQØZòø@µOùïiÿ}·ÿ^åj8©¨:IµËÈñhb0ÔÜãRI>i~f'ö“ÿqZQ©È?ZÚÿ„ TÿžöŸ÷Ûñ4ªÏ{Oûí¿øšÃêøïågO×0_ÌŒsª¹ÄŸ­jhÞ4¼ÑSmm žf2$-Ž>„TŸðjŸóÞÓþûoþ&ø@µOùïiÿ}·ÿQ<&6jÒƒ*8ì$vš.]|KÔ.íä†K 0®6’äûêŸÄëûv‘¢ÒìI÷›Ÿý ¨ÂªÏ{Oûí¿øš?áÕ?ç½§ýößüMcý›‰ÿŸlÙf´ÕHuÝê7Évmmà‘0G–ù4º—µ}GQ{Á)´‘†?ј¯ûäóRÿªÏ{Oûí¿øš?áÕ?ç½§ýößüMWÔ1M[‘‘ý¥†½ý¢1¥Ö/gžêypó1ÏëVcñE$v©Q‚Ùb[ëÍhªÏ{Oûí¿øš?áÕ?ç½§ýößüM/ìüWò1ÿiáÿçâ2×[™[>Z}9§6¹+u‰?3Z_ðjŸóÞÓþûoþ&ø@µOùïiÿ}·ÿ]±Žcd™ƒÅà[»’=Cöy¹k¯iîÊ‹‰ÇõîkêÊùkà.‘>‹ã:Þéãwi§pc$Œy ;é_RÖ?5?i¿*¿ÞÇ€”$ª8mÌÿ$yÏÆ–Ùá[cÿMÏþ‚kÁüÿz÷oÑHÞ ŽHÔ•ŠmÏŽÃÏæE|óçW·“Ëý›æyyœò7õoêzíиÕïeº}ÝçåO÷Tp½;T<ÿzÏó¨ó«Ö¢¹b¬6W“»; 'â‰t;e¦ê²En§+Æ’möÀöSô߈Þ'Òm µ†ªév“kEüÌrNYIääþ&¸Ï::²thÊ÷‚×É*µRIIéæuóxÿÄsèòérjGìsnÃîÜÅ›æ žI=ûâ–_ˆ>%š;$“VýÕíÛbR¯-Œ·ƒ¸œçœ×çQçSö4WÙ_rkSùŸÞv¼IwªZê7£=Í ayH7ÊnH8ɪÖÞ1ÖlÖÄ[Þì{¼–ߺCå³çqäsœž¹®cΣΣÙRJÊ+îõÿ7÷°öµ[»“ûÙÖÚøï_²kv¶¿ mšW„˜#; ‡.y^çòíV¥øâÉ® ¹}aüØ7l+ j0Ã@\0àuÏL×çQçRt(·w÷!ªÕVŠOïfþ³â-CÄÿmÕîÅÆÀ›Äjœœ(½t? dßñGNôÆoýןùÕÞ|†KωÑM&;KiFì (úžOàk›ã $¢´V7ÂsOõw>’¯ øÕ&ÏÄ?é‚Z÷jð?Ž©$^(µ˜©ò¤„(nÙGê+çr¦–)|Ïo1Wÿ‘ç¾½YŸY¼¹Óí¬g¸g¶´.`Œã ¸å¿3XÞuu}‹³Üù…u±«k¨Kgw Õ³ìšY#lµÈ8Ûû¿±}ƒo”Ÿê?¹ÓõëïN¶ñ¶»g=ŒÖºƒFö˜-È>T=TŒa‡ûÙ®WΣΥìéÿ*û‡í*^üÏïþ»/¸í-¾$x¢ÒòêæßVe–ñÃ͘c*ÌPB•À8pp3Ò±WY¼]Yu?´;^,Âq3üÇx9 sןZÅó¨ó¨:qwŒRùªT’´¤ßÌí5‰(Õ-„º«uu?cEý•÷.›}ÂöÕo~g÷¾»›š†¹{ª-ªßOæ‹HÞ‘WdkÐp~§š¨“fâÿM“ÿBçU.95 {N±·¥žæ5v'è'ð¥VQ…)tVaMJuW¡ö-TÔ´ËM^Å­/â2DÄ0Ú쌌C+© ¬!”‚CV诀>ÌŃÂ:,sÙ-¬’E%ÄwR<÷2Ë,²ÆÊÈÏ+±vÁEÆIàÓŠÙe ¥XÁu¥¢Ž–žƒÀ¾·µžÚ;YͼÉåˆ$½ã…Cg"¤yaqµq£/þéwVúu½´×v°Úß›é/'7.bxþk0Kœ2üÛ §N²Šëð9ËiòA¤XÃézeÈ»[wˆÈï2Êþc19ÜY˜Y‰åºçnþÆÛS±–Îö?2 W »ŠŸbÁA@ æ¬QFú1u¹‡ƒ´X-$·0\\,³E;Éw{5ĬÑ0xÿy#³íV ¼ž995?èšµÃÜ][Γ<ëpeµ¼šÝ¼ÕCpcu ìb¤Ž£ç”S» ŒËiÚuäwvé;ÜÇoöUžâêYÜÇ»~ÒÎÄ·ÍÜäöÎ*¤_ò1ê¿öÇÿ@­ê˹С¹½–è]]Âòãp†@ à`v­¨Ê1º“Ý~©™N.éÅuý,VÖ4Èu­÷Kºi È 2`A# ŒóéTn|+§ÞM¨=ÉšEÔlOž=à)wôÀÈ'ÌnséZŸðާýµûÿÿÖ£þÔÿ –£ÿÿúÕ­é7à>z‹§ãýv1_Â…ŽŸ3kZ‹ÞØ+Æ·l ß4nT´n[6‹Êª·zç7Âþ—HÑ­#Õu‹Û«è4ß°Æé"*Z+ßäíOU\3îo”s×=gü#©ÿA-Gþÿÿõ¨ÿ„u?è%¨ÿßÿþµ¥¯½ø]ÁJiYGñ+[i1[]ApÓÏ<°Z‹Uyœ1+KŽY°¹>Ÿo¦[ÁÚe’¼“y¸;· c§@ (ö7ü#©ÿA-Gþÿÿõ¨ÿ„u?è%¨ÿßÿþµ Ò{Ëðs[Gñ2´ï i\ú|Ö0—O·kxYœ±*Ç%›ûÍß1ççoïl ÑmÞÕ¢¶!­o$½Œî?ë9ÕFFA±1÷EkÿÂ:ŸôÔïÿÿZøGSþ‚ZýÿÿëQzW¿7áó Ïù­Œ‹Ÿè·mxÓÛ7—QÝKó]1€=àät;ß?xÒë$÷Vº[L÷/©Ä°ùw °À6í,›A*pK`u r½F·ü#©ÿA-Gþÿÿõ¨ÿ„u?è%¨ÿßÿþµ/Ý5noÀ9§{ò˜rx:°i°Ùêwö:t n—¶Ì+£mÞÍWqUbqœŽÉÍKÿ‡zmÝŸÙ-/õ 6Ù´åÓ&ŠÕã"x0Uc";dno™H'<“]?ü#©ÿA-Gþÿÿõ¨ÿ„u?è%¨ÿßÿþµ;ÓþoÃúî U²_‰¨øBÏR¼–i.®¢K›/°ÝÁM—1a‚†Ê–R7± õç5žÿ`ž+ŸµëÚ½ÅÍÂ[ ºÛ‡ˆ[ÊdhX‚}ãÎT溟øGSþ‚ZýÿÿëQÿêÐKQÿ¿ÿýj/O~oÀ9§Ûñþ»#x.ÜZŸøšj?Ú&ïíŸÚ›¢óüÝž^qåùXòþM»1Žq»šÑƒDò^ÅŸRÔ&6žfÿ6pEÉ~¦@ ½®ÿÂ:ŸôÔïÿÿZøGSþ‚ZýÿÿëQz_Íø4û~&-§„-­´ë­2kûÛ­*{v¶O”Ʊ[ÄÃP¢+ž8™ˆêð=«Ç/ö†§¨êÉlÆæá¢ <ÈãWnìäíÜwž˜è?áOú j?÷ÿÿ­Gü#©ÿA-Gþÿÿõ¨Nšû_€ùêvüLKoXÚ\‹ˆ.nÒU[À¬~_´È$r>^¡€Ûè:æ®ÞøwMÔ4X4«˜7Z@b1 8Ç–F}#¸$w«ßðާýµûÿÿÖ£þÔÿ –£ÿÿúÔ^—ó~å6ïoÄÆ¼ðf—uo~‘ù¶Ò_]GvóDT´rÆU‘”8eá—v#,Çš‹þ«UÓb¶ƒRÔ!š 翆íZ6–9_vò7!B÷à©ÆãŒ`c{þÔÿ –£ÿÿúÔÂ:ŸôÔïÿÿZ„é/µø]…Í?åü®ì˲ðÚØjÍm©ß-¤®ò®ÚM/Wû$Lså>\/Ðã8úæ½¶ŠÖj”¾c:”¡SãW<þßQÿ¡†/ûôÂøg}Gþ†¿ïÑÿ ÷š+®â™}R‡ò£Á¿áõúbÿ¿Gü(ÿ†wÔèa‹þýð¯y¢®â‡Õ(*<þßQÿ¡†/ûôÂøg}Gþ†¿ïÑÿ ÷š(úî'ùØ}R‡ò£Á¿áõúbÿ¿Gü(ÿ†wÔèa‹þýð¯y¢®â‡Õ(*<þßQÿ¡†/ûôÂøg}Gþ†¿ïÑÿ ÷š(úî'ùØ}R‡ò£Á×öv¾,<ß®Ìó²<{W¦x'Àv> ³ò,UrNç’Í#c$õ®²ŠÆ¦"­UiÊæ£Nž°V æü]àëOؽµê++`‚IHèA t”VI¸»£F“Vg„Ëû<^y­ö*ÇŸ”:dõS?áõúbÿ¿Gü+Þh®¯®âœÿT¡ü¨ðoøg}Gþ†¿ïÑÿ ?áõúbÿ¿Gü+Þh§õÜOó°ú¥åGƒÃ;ê?ô0Åÿ~øQÿ ï¨ÿÐÃýú?á^óE]Äÿ;ªPþTx7ü3¾£ÿC _÷èÿ…ðÎúý 1ߣþï4QõÜOó°ú¥åGƒÃ;ê?ô0Åÿ~øQÿ ï¨ÿÐÃýú?á^óE]Äÿ;ªPþTx7ü3¾£ÿC _÷èÿ…ðÎúý 1ߣþï4QõÜOó°ú¥åGƒÃ;ê?ô0Åÿ~øQÿ ï¨ÿÐÃýú?á^óE]Äÿ;ªPþTx7ü3¾£ÿC _÷èÿ…ðÎúý 1ߣþï4QõÜOó°ú¥åGƒÃ;ê?ô1Eÿ~øWaàŸ„^º7’MöËÆLò=`?Zôš+:˜šÕ,äÚ.)AÞ1°QEÎlQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEDëp\ùrÆ«Ø4dŸÏp¦ìºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôP.¿ç´?÷äÿñTlºÿžÐÿß“ÿÅTôPEPÎ?¡‡ìÿð)™éð»üIÿ?º§þ dÿ ?áwø“þuOüÉþæ”QõüGu÷Güƒê~Ïÿ—ùž—ÿ ¿ÄŸóûªàÖOð£þ‰?ç÷TÿÁ¬Ÿá^h)ÛM_¯Ý}Ñÿ!ÿgÐìÿð)™é_ð»üGÿ?º§þ dÿ Oø]þ$ÿŸÝSÿ²…y¡ëE/¯â;¯º?ä/¨aû?ü _æ}+ð_Çzߊ¼iaöíFý 2ÍA5ëÊ­ˆY ñÔŽÝ«èêù3önÿ‘ºÃþ¾n?ôœ×ÖuXÙ9{9=ÜWæÉÁECÚEl¤ÿ$TÔ§KvÈdã*3’õ¨´ÝvÃTZ̘æ'ùX~ÿ Ô~#†KÜÅm$Œ ƒ$ü¹í/Á39Yu9|‘ÔE¿ÐvéŸÂ¸è­szÇŠ®-uì H—X¿DÌ‹2¡é—n2}=+¢Š5†0ˆX…è]ËÌòkЏ’ûÂ~3Õ5ì‹ÝNÃVX›}„^d‘H‹·i^8#œ×N1”ÕôÑmwÿ vcZRŒtӻ쿯ó: _Bº-½î¾±è’J̆ÉÕv°$`1ÆsŒj½ý¥bmbº¶ÿg˜…Š_5v9=9Áü+‚ñV§­ë:šëáû¨-ç–S2¶š—³C´‘òŸnIéØúäéÚ&¡'‚¿³®ôËÖ^ŠS¶†<ÂÛrv.B¯\À®¥„„£Ï'g}·²½¿­Nwˆ’—*WV½üíÇÐô“â][‰Îµ§y,åŸjM¥€ŒçÁ{Õ«ÝNÃM‰eÔomí#s…yåT }&¸¼#iý½âͺ ^GØSìX´|Ï,çËã³»ÎkUеµC»žÒòHIŠßdzZ^¼2ªÑHFÞ1óuãC Fm%;zù«„ëÕ‚mÆþž«üÏZŸUÓ­¡Šk›ûXb™KÄòLª® n$yçŽÔÉ5Í&+ïeÕ,’ÖVÛíp‚7<ð8'ƒùWká6[_ YÝAq¨Y­ÌÓÌ—f?$2î "d…ù»ƒÒ¯xKM;Å–w÷>“WÑc²6ÑYÚZ¬ÂÞMÙÏ•ÓqŸþµGÕés(©_Âýú²½µN^kvüDv©Ø%œwo{l¶Òÿ«˜Ê¡ŒðÙÁàøS¬µ -J6wÜA¶—‚Pê¦Aëȯ3×’h1«hóAe{â®SO1–0Ûž utc¨í]7‡4Ÿì¿xƒì¶ÎÂH­üŸ.‘3;¶à`œžqSSN1•¥ªÿøëøÓ“Ziÿþ_‰g^ñF¡¦ëöÚF“¢j\OŸkXv€p~ðÇëV´OZjºoÚ.€Ó¦[“g,¶qüº7^1Ö°|QáûÍoÇ–_g¸Ô,#]:@/lÉ@»…,;L‚k$Ù^Zx>ÒÒ= ño4Z‹´Š'sw†9–6?w <{ V±£Ft¢—Äí›k½»t"U*F¤ŸEÿȧÚûùž&¥cÜ,·¶èÖªpÒ¨1)è[Ÿ”{š…uÝ!ìõuK&´FØ×á<µoBÙÆy{ן<Û÷ž(¾Õ´r ¨­|¨VØ‹‡(qò©àyÇÖKeÓoÕ˜ýa¨+o}|·=.÷R±Ó"Yu+Ë{HÙ¶«Ï*Æ ôžµ•â6Ÿ¥é÷š[[ÜÇw{ ó½J;`•*zúä'ÑnôkíçÄ,úýœZÚ-á&Îv£½¾•\øU>“ìVéËy®Çsil"Þö‘çÙ:.1’½*¡…¤œ[•õù=mëæL«Ôi®[ióÚþ›èzSjºrIrj¯j»®Ì Â=XgåZ}–¡e©BfӮ່6ÒðJAôÈ=yÀ&–m|7¬øwÄn¥x±Íö”¼°·-%ðg6NA=‡|Vï€Zóû"â;­,ið¤øƒu’ÚI0ÀËóHÖ“š‹[ßúÿƒ×óܺÖô«¥¶½Ôìíîb–áQÎzpNi÷š¶§¶ÛýBÖÕ¶ïÄó*¹Æy=2@Íy§­µ­WÄ–ßÙ3´+ŽÖk};Ÿ4“ºf9#åé׺š~†uMï¬éRO Yݹ*“0Æî¼­iõZjœg)nµû®KÄOžPŒvÛïKõ;KsI´HZëT²n|&K„Q"ú®O#‘ÒŸy«éºscPÔ-mNÄó*pzO±ü«Êü[ jiâíJi-o&´ºTïk£Çµà¯ÌA‹Ó¯^ÕÐYxMGŠ´»]RÔê–vš!ˆOskòp9‚ž™ÍÂÑŒ#7=Õÿ úy W¨ç(òíþvÿ‚u·7·kÓæ±û4ºTŠïwrÎ>DÙ”e9Á÷犇AñN•â8Üé·(ÎŒÀÂξfãvÐIÚ{qY¿ì&¶ð<6z…¬‘$Ê`ž2>Rí´ö ÖoûQ¥Mu¦ÜøzâÎö9&&ý­Ç${ÆKߨÀéQ*4Ò¨ºÇo=^¥ûIû¾ÿðÎûR±Ó#Y5+Û{DcµZâUŒè 4俳–hâŽê’XüèÑd?¼uç¯Jóˆ:>©/‹!Ô#‚ææÉ­Iö}6;óîÉ7 .Gñ~b/jG‚ô»ý Ow©éò4ðE5·’û%áâ)“ŒnÎ3ŒŠ¥…§ì£.}XyûYC—DwO¬é‘ÚËrú¢Á žT²™Ô,oýÒs€}/ö®ö8®þßköi˜$sy˱؜8'#ç*ð–£a¦h+e×PY¬Ÿkò,Öíšg2y.@|œòzTPø^á¼fÛ˜ïµxe–Ò];ì­ ƒµÉ ¤r01V°”\¹÷vümÿ‡ˆª¦ãÉÒÿ…ÿà•g­iZ„¢; JÎéÈ$,«œ dàÙgê4ÐtÛËkiõvyæhK$ÈV£ç?/§ÔÖG4ø´ ×\ÐímíeÑå2,q $ù]p9È?…a_ødéz/…®n4I5V·‘¤ÔcŠÜM+™b ÿ O^84°ôgi6ìîº^öoü¾òªU«ÆÚÚþ_ÖçUoãAâmRËQ¾Óí¬íãífy‚y¾b–?1l0éŒzÖÆ´±xŽÏJ‰mä3£¼ŒnÑdˆ•ÄGæ`py1\ch0ê÷¾&»Ÿ@‘c—Mƒì qiµ£>K|¨1ô½¥Ò´›¸õ¯\ɧÌ$WR˜(D@*¹ÇÀÞœ¨ÑµÖémçËÍ}äûZ«æ×þ”“üþã´‡\ÒnnÒÖßS³–áÆR¸FvÎ@'Ži·~ Ѭ.ÞûV±¶™pZ9®Qg§æ¼æ×ÃAá â=HõEÖUæ[2Çæ·,q¸.õã¥bë:|I®k"òËT‹NŽõšyaÒâ¹lpÄý¤á£È ÎïšÒ*S›Š–ŠÿƒKõLMJq¿/o×üo2‚¤FAë#ÅìžÒò?¶Èó$)›åî,p>lš×W†}B+k[·…íVâ;Ï(ù §¢ïþö9Æ:V/Ä{9/|*±GgqzÜM$ñ—v@ß6ç¥pѦ½´c5£héœÿu)GtŸßbÖâk­SV»Òõ]"M.úÚ5”Çç¬ÊQºÊ0µk[júmíÌ–ÖZ…­ÄñæEÊì˜89äsÅyÖ›¢ÝÎÚ¤~ÒµM N›N’# û´~eÁÆÒªÌH8ãwáTüáËÓâ-9®c¿±“ORçÌÐã·ÈY<ôl¾ryaÏ&»jahµ))ZËoêÿŸÌäŽ"¬yU¯w¿Ýéùt:ýÆSÞhúD÷1Y›­Bíáh…ÒñŒ»Õ\’çòŽI5ÑM«é¶÷Éeq¨ZÅw&6@ó*ÈÙé…''5çV5ØÐü*¯¥Ü-Ý–¶Þs5³Ž3#¶s¹Êœôü«Pð¶«/ˆ5 =F+à/oY–ê;µÌ6·žX:`uQÐz·…¡R£\Ü«_Ïü…,EX-öýOaþѲòî$ûe¾ËRDíæ®! d†9ùp=j+sI´HZëT²n|&K„Q"ú®O#‘Ò¹-kÃï®Ekkº[b8£ÕfÆ?Ôó»ØºüµÍø·@ÔÓÅÚŒ²ZÞMitˆ-Þ×GŽÿjÁ\±,N½{Vp´ªI'=Õÿ%ùßä¼Íª×©¶£ý?ë_6zýPöŽÓ,KªØ™Kª ”ÉQœ3Ðm?‘ô¦è{i^²°{†¹6ð„ºl,O—'qŠóqá-þÓ^M šùõ¬Üµ>a‡Ìlîã;6㯕4ç&¥.¶_Ž¿¤êMAI-m{¡g©Øjï=…í½Ô(Hi!•]Tœ›cªéú s¦ßÛ^ñ¼Û̲mÏLàñÒ¼ç[ð½ùŸÅ¶~ÓÚÖ â´hR¼¸æÛ˪ôõÈJ—À:-ÂxŠMNQ}kö{s†} ,V`Üñ±°Ä:Œô­^—²•E>Ö]vOõ±—·¨ªF»õùÿLôÊç.õýF{íoMÑ,b’ûMH#,Ÿ,Þg$Æ0ïÍièzÔþ–·Ö±O 3ºîk©V*A=Åehö·xÿÄwÁ*A4v¢)YWÂ6pzwÅsSŠ‹—:Ö+ñºÿ‚tJ\É8½Í{­kK°f[ýJÎÙ€ÂiÕ6’2Éî?…>WO¹¾’ÎÞþÖ[¨Á/s+:×*GQùתøyuø¦âïJûNtèÖÎI-÷û; { tæªé^m>ëÁ6ºC[αÉöéÛk)1c÷‡“÷«u‡¤á~mmåü·ý,e*µ¬–Ÿðßçø…w{kann/îa¶…HI¤£=9ÍapÚö˜‘êGl÷‘præùŽHællQYóxƒF¶¼6—µŒW •0½Ê+‚’6“žŽ§èÃÔTz¦±-ÂAciöézÌ‘¹Ýž„€^qœgi  uMÕî-gÔ­åìܼ;É“ßA×5~¢·»·»ó>Ëly7r]¢Ã) ÉÁÎCÚ“@×¢Ö|#a¯L©g Ý¢]2¼ ¬JWqË`p~(èß`5©®‚HÙ;XpH?˜éYcÅ~m)u5״ç»2-ؼÊfPKùÆ@‘ž0jý¥í­ý”w–70ÜÚʻ㞣¯¨aÁôë[X,mc¶´‰b†%Úˆ£€*Z¢u½)mãµ;1 5ÊHnkÄ¸Ý 9ÁQ¸eº Ze¯ˆ´[ë[»›-bÂæÞȰº–¤u€¨ÉÞAÂàrsŠm»Ý‚VÑ4W3¥x÷CÔíõ‹ïí>-+Lº[í¶£A.c·oû£™6ã'‘ïŠÔ“ÄzV]K¬ééos›Ít%L¨Ü§8#.£#»QE€Ò¢«E©XÎ"0^ÛÈ&¤Œ¤ªw¢† =²*·ü$šö…­öΟöËÈĶÖÿjO2t ȹËäz@iQY«â= ç¾…5=¥ÓÔµäbé [ÔÈ3ò;â­Zj6Z„RKayÌqHÑHðÊ®×ï) ðGqÚ0,QYQø«ÃÓ\¥¼:ö™$òKä$Kyf“Ør[uÁ©ã×4©µ‰tˆu;95(S|¶Kp†d^9)Àr9#¸  ÔW;4»ŸGáÍ>îÎòqo<·F ¥vµhš5Øè2A;Ï\ciàö/Aßü© ±)ÃH€ú©‹ôwḮî^s;©cœb²Š3æg­ˆ«‰§F2ÃÁIúØ×G‘ûÄëýáTtb £‘ÎejψŸøü“þùÿëÕÝ/'NØ !dlÞ´q‚ƒåw<Ú±uq°úÅ>][ö4‹*ýâ«õ8§pGàErþ1‘•`ÁÁçùÔ^Ôe{†µ‘‹)\®}E\píÓçLΦ YƒÁÎw;‹i¶:†§ ¹’à"Æ…'9ü1V'ÓæñG…-õKR½½wVIYúJ b—K—íþÄ9Wº¾H•Iù@çÿ¯]Eí¶›¦ü>þÎ[¨¢•n pKqÀuæœã(K“v|Ž/ Õ§R*Èå æƒ£h6¶FUkˈ7òœ÷þuå^!šYµW2ÆÑ â5oîÖ¶¶  ¹—€ýÜcøA“Ü÷Ídê— t»¤Á+€ó¯VŽÂ<ÒÜùÜN)ÎÊ? Ï[ý›¿än°ÿ¯›ý'5õ|™û7ÿÈÝaÿ_7úNkë:ô1 /ð¯ÍŸ?„øªÿ‰þHÆñ“u¨Ãgs¦4+¨i·"êØ\ÈÛY¯ 2; À<Ï‹<1â¿éKkw%ŒsAq ¶¶º¥ÂÆŒê¢9K¤hÓã˜Ø"Üço=ýÃý_×âwÝÞç ‚µC®®£4–kY/ÝVFc´X}œ®vŒüöùyëÅc·ÃKì:|´7Ÿñ&ƒK»_í{ËXãò÷Á!Çž§Ì?#ìé÷†ãR¢«›ôü4&•¿®ç |$¶~0µi¢„kãˆTË´iöd„nÃ+gzóT.|®k sw©G¥ÙÜÊÚtkom;ËŽÖàÊX¹Nâ€]¸1Ïõ”šwôüîÖþº’1´M}3X×î¦hŒz•òÜĨNT"Œîã®c=3Æ+žÑ¼Ú&§ý¯gœš¤××fòeL5Ŭó3…/·;Ôydg#å+œŽêŠ_åo7ucͬ|¯%µ…ž©i¤ÜÙéz=Æ™&¡25æóÖb"Ì›y ·2¸‹s£ض<¬m*¹ÝÔcžæŠnMÿ^Vü˜®ÕŽsÁÚ^±¤ØÏo«"¶VU±³†íîÅ´a@Ûçµà=Búòþò "v}a5-Öþ{?0}‘``ÓB7ÆÙË¡Ôã¿¢ßõòÿ!ßúü$xCP±Ðô_ì¨lþݦê2_µ´÷Ó´r4‹*²›‡HHós¼¯ÌGÝ\ñ§…5Í"K]BÅ,//mîµû,÷o &;™üÀÛÄNC¨cnæç׺¢‹°»{ÿ[ÿ›25MgÁ·Ú3´VòÞX½±h×ä™ ð=?•s/áv{™b–=--u ë=Bêqpï-´skå &‡,„o?)Ç=í'gtv·õýhq·ÞÔî›Å¶*Ö‹câ™’äÊÞl¦-¸eù7nÞ8ÛÞ²µk:å÷Û/í­7ÞX%…Õ¼ZõìQB¨Ï†%O´Æá0F|ÙEØ|Ïúù‘ÊÛøf =|U6©Ïgªº±Hå¶é] -•bäò;ÔþÓ/ìt´ëæj—Ïç\¹B„áB +“´ìUÈÏÞ-ë]¿à/¸“?H´¸´ûoÚ­ìaó®ä–?±!]èq†“=d=ÏÒ¸ù¼¯]-å¢ý†ËKkÛ{¨,Åì— ²] ¤“-˜÷(Ç– .zmä· QBѧØZðýõî¡{nñ3ɬ&£ =Ÿ˜¢Õ`!¦„o³¹ÔãE<+5¯—L‚ÂÞ{¿´}«ÊmZå%2ù›…É)`Nw7ð àuÔQÒÞŸ‡ü0Û¾ÿ×õvghÖÚ”^µ·×n’ëQ…¸ž53÷<ês× œûÀ>(¿ðm‡$¹´ŠÒÒÊ[ÜjsIJüбÜ8HÔ±lÀX§Í’Í^¡E;ë &ÒÐááÕã×—SSfáu85†wÉ?eû4©þ¯°ùÔÿùH_½]F—.¡s ¬š¬Q¥Û‡ÊÄŒ ®ã°íbJ’»IäEiQJ^ò³TûO£x;Äzß,àÔ­lt¹"ðÔÚ]¬fYWi–>f5ò¶ùcåù'ž9é¡=ã¯ú#@WÍ•w9ݵ8à‘´gÑ(¢î÷þ»‹¥¿­t8(<#®é2ZÞi£O¼¸·¸ÔHµ¸¹xbòî§óÈ܇P0FÜÍóqÎÆ™ êºoÃmÚò+mVßL[d¹ˆ–D”&ÐÀ•éžå éh¥Ñ¯ëúÔ§&ÝÏ;Ñ|«XêV·7On#X]IÑõ ïѾl«¹Îí¬ ÇŒ £=O†4YômæÊéãc-íÝÂùDYÞEΟ|õ­º)·ufN¶_×ó<¿þÜh‘iW'JŽ+ïG·™.dvœÈ# #©ˆl ã<[ZÏ‚ïïïu‹Y­PMgaQ³0Im;ÊQð8F #$dü§=µùŸõó©\Ïúù’<ÞïÀúö¨.ïï㳆õõ…Ô#³´ÕîbFQj Únc$FêÙGc×#WDðLºf³¢ß2[¢YA{æÆ.f¸e–âHß"Irϰ.ÄNBŒàvtRNßו„Û{œ÷Ãg¹¸½š Mài.Z”Èò-¦%®càõrîAìV/îÓnþÏ/‹î.Õ#›O»»‚í™õk¸|ƒÆ}–2"—ýRÌËŒònE(û¶·õýoÿÂý¯ëúè2Ô~x‹Q¾Õî./ šKËû(å›PIö˜ˆ‹nÈBlU!Ý÷‰$`ú,¢ßMŽÖ5UÄ#P½?*±EXòÿ_Ö¡wý^GšÙ|:Õ­tÛK´Y‚ËIŠ»ãu­Á–B>^„—ÔõÇZԳ𖭵ißa]6ÇTºÔâ»IÜÊÓ vcØq矜;d ùFxí¨ªroñüFäÚþ»[ò<Ò/‡úíÕœ:N£&Ÿ¦‰w¥Gyos#Í9›ËVŒÆ¡?Õ’@‘¹n½êh<¨&õÞ {}EÞÑ¢WÖo/–Ao7š¥œeœ€Ü“–΢ÑII­­îMÿ_×bžý¥¶ãûXZƒç·-‹Ýq·vïâëœq\FƒàmOMñܵž‘d¨Ý]Í©YÎæêö9BÊžRŒ0]À(03‚=ŠDô·õýjp~ð–½§j*êƒN[=K›NŽK{‰$’ãq‹k”1¨N"9]ÍÉêk{ÁúV£¢øV×GÕÙMŒKm ÖÓ³ùѪ€ƒ"ìcýѸïÞ¢›m«?ëwú±Ýœ‡á_iWºnõÒ|½J¸±µ¸2;]Hæ2²I–6åå€v9n§­u?ñQÔ3þÑö8~Ýå}§Ë_;ÉÎÍøù¶çœg8ÍKEÞ¬•¢°QE†QEQEQEQE|™ûHÿÈÝÿ_6ÿúN+Éü4q¬Ãøÿ#^±ûH øºÿþ¾mÿôœW’ø|íÖ"ü•tæ_ ÁÈy ¶%?úxÿ3·½lé³ÿ×3^uü'ûÕß^9þÏŸ¯ú³\ ?ñø§ýªñp‰¨HûÎ)¨¥‰¢ÏONUyDZnüD-nži#m$n ×ô­el¨=ò§ûÊ¿ˆÃ”Ÿ2¹÷á^µ,=NW§™ƒÿ lcè’uþ÷ÿZ´47ótÕ“¦÷cÆ®í‹#äSÿSH*¶·ÎÜ~5¤œ*±Á†¥‹¥Œ‡Öj)hí¥»¾2–ßžO­CáÓÜºŠ¤}MuN±IĨ¯ìÀª =t«Ž"ÐäH孑Ʀ`ñ²žŠö:üº4wv–ÄyŸjß?Á¹qÇÖ²Ÿ]u’F¹gžDù<Æ=½½+ÑþøÃ~ ›RÔ|E,€FáyÞJ"•ÎýÝÎ O|<øic/Ùãñ”ÖÓ1zOŽÜ{P¯N1WZŸžã)ÏÛÎ1Úìñ}Fù¯%,NAé‘À&E^víf'è+§ñW¬´+ÛxlüIg¨Cs•%HÊàŒM`\Æ,aò#»0%FoZÞ2çNG“8Ê.ÌõÙ¿þFëúù¸ÿÒs_Y×Éß³‘ÏŒlO_ô›ý'5õkŒÚ—øWæÏ7 ñUÿü‘Zþú->Ñî.j(ɯ:Ô>(η,¶Q/–2FsZÿ®^ßÑl8ß!ò¯ó«×ÊpkSuj«ž~eŒ«Jj7cÑ?áij?óÎ?ûäQÿ KQÿžqÿß"¼ñÝ£‘’E(êHea‚¡¤ó«ÚþÎÁÿ"<¯¯bž‰ÿ KQÿžqÿß"øZZüóþùÃÙ麞¡ Ka§ÝÝF§k<3€zà*ŸIeø&ì ‡õÜRWrg¢ÂÒÔçœ÷È£þ–£ÿ<ãÿ¾EyßGOû; üˆ_^Äÿ;=þ–£ÿ<ãÿ¾Eð´µùçýò+Îüê<ê?³°ŸÈƒëØŸçg¢ÂÒÔçœ÷È£þ–£ÿ<ãÿ¾EpÄv±ÜÉ©Ĉåd!\ޏ=*/:’˰oh!ýw·“=|SÔC Åî×ká_Ûx–7G•uËÇž£Ô{W‚ùÕÔ|3ºuø‹g¶°L¬=FÜÿ0+‡0˰ÑÃÊpš:ðXêò¬£7tÏu¬x†ßA´2ÎrÇk×üWºu×c‡? N?:ùÜ8ŒB§-sYТçËüS¾2·•Ï(¦ÂÒÔçœ÷ȯ;ó¨ó«ì³pŸÈ—úö'ùÏDÿ…¥¨ÿÏ8ÿï‘Gü--GþyÇÿ|ŠóØÙæ•"…ZI‚ª(Ébz;šY¼ÛižˆÞ)Pítu*Ê}=)g`ïnD?®â­~fzü--GþyÇÿ|Š?áij?óÎ?ûäWùÔyÔÿ³°ŸÈ…õìOó³Ñ?áij?óÎ?ûäQÿ KQÿžqÿß"¼ïΣΣû; üˆ>½‰þvz'ü--GþyÇÿ|Š?áij?óÎ?ûäW›Í¶™á¸â•×GR¬§ÐƒÒ™çUÿg`ߨD¼n);93Ñ?áij?óÎ?ûäWAៈ‘j·©e¨"Ã4‡¸èÇÓØ×ùÔGvð][Kmx甃І†#,ºRåhcñ ¢æ•ÑôíQ_}hQEQEQEQEQEb\jZ›j×V¶Ki²ßg3Éܹì~µ¥:n£vèD¤¢mÑXj×}4ïÉèûV»é§~OZ}]÷_y>ÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹Eaý«]ôÓ¿'£íZï¦ù=W}×ÞÓÉ›”VÚµßM;òz>Õ®úiß“ÑõwÝ}áí<™¹EW9©ògí!ÿ#uÿý|Ûÿé8¯Gd`Èv‘ÜößÚGþFëÿúù·ÿÒq^]¸ÏŠáäq`]”ß÷¥ù–ýÓ!S;àŒº¢Y*Øü*,Òæ¸RKcÑ•IÉÞLÑö ¿òòçñ§ê#þ^ó¬¼ÑSìáØèXìRÚ£ûÍqâ=KñðÔØ5­B5Xíæn[…Éô¬¬Õí#X¼Ðõ¾Ó#¹ŒŽÑ«mÈÆFGßµ/g ZÅhb›MÔyéšïˆÚ嘻[D²·)¼=ô‹þçÞý)þ,ðí·„4(nîœqYŽåܱÆIÉÀ¬ç(¿…ÝÙSâû  ô™ó“Ÿùw5õ•|™û7ÈÝaÿ_7úNkë:éÅü4¿Â¿6pa>*¿â’<ûãlðͱÿ¦ÇÿA¯óÖ½ŸãSlð¥±ÿ¦çÿA5àÞ½}M+a¾gš+×ùIxÚ× `²x©á·•“ʇžß(,z@ï^ {5 ½”iÒLöÛ¿vgP¯p ü.••s¨OypóÝÏ$ó9ËI+–fú“ɨüÿzéÁa^6soò^‡>+±ê)~g°ê‡ÄâßÃcÁ)t4ãeŒÙÿ«2“óùºãïñ×Þ¢Ó|!¤Þž]6iÅÔ—U3‘¹X¸ƒòœ‚8ÆMy—ˆµm6‡NÕ/-"fÜÉâ“Ó8¯–Óĺń&ZúÚ"ÅŠCrè¹=NëYý^¬chI-õÖî÷ß↑)V¦íΛÑzim¾ï¹³Ónt xjòæÃÃóI-“ÊóMs<ñ‰/>YÛå¸ÚûÁ†:[zö‰§ë~6Ó­n´™­íź¿Ú’F r ëØ<àG‹ËâM^{6´›U½’Ù¾ôrå9ås޼ýi¯âVHmâ}Nñ£µekt7 D%~éQŸ”ŽØéQõJ׿>ºõ}~¢ÄÒJܺ.‡¬ÛxSFÔ.´)î4;í“Ï º|ÓÈYÕbf a† ŽÝÇâí;Iðž 4WxƱ$Ðû|„@b-óïއ®|šOjòßG{.«z÷Q)Xçk—.€ç 6r'ó¨â×µ(DFê1lÌÐl‡”[ïç‚{ã­7…¬×ñÞüüõÝoØqÄÑ_a?’òò=U´ë#¦xzÞ}PË5͹µ7ò¢³#m2u!:8síZRø;A›^¹†æ4ûf‡{€·²tÚ­‚ÅWÕ$°í×Ç!ñ.¯nPÁ«_Dc,SeË¥Ž[Ù­ä!ÏpznÕí^.ñÕ¼?!Ô4éq6©— ó&GÏÓºò>¸¯žüÿz{ßM$1Ã$ÎÑEŸ-‰TÏ\Ù¯¦Äá!ˆœ'/²þõØðpø™áÔ”z¯Ç¹Ñxnlø¯Ië{þ†+Ñ5 /Çsy¨kK_Íu¯½ˆ"åãØ9À88Áã¾z׌Ey$$°ÈÑÉGFÁR:{³&»©L»fÔ.¤wÚ0Ó±ýï÷úýï~µUèʬԔ­÷¯ÈšU•:n-_[þ ~§¬§„´’5› {ËëyåXg¸–hâUÙ• è¥ 8r3ëRÍá? éš,cQ¶Ñ¬„ϪÇö—*ì3÷R3_«gGzòsâlÅ4gY¿òç$ÊŸj|I‘ƒ¸gœZŽ?j°éæÂ-Nñ,Ê•6ëpÂ2Q·8ÁÉ®oªâõN¯úùmÜèúÅïȺô]ôÿ/Èô²žÑæð¼  ý¦óQ‚Úy.îE X€NÌyÏ+3âyXü[3.“5ŽælÜ;9[³Ç̹éÅpÍØˆ]\Ë0…q $-±Eè ©/µÍCT1JþêðÆO´LÒmÏ\dñÐVÔðò…XÔr¾÷ÕõùþS¯S”m{t]7=€Ùi—¶ZtúÍ¡¼†Çà t"´y*sÕOqÅZð压o®Z^išS¢êZ3Ü-¹ŸÊ €Ê¤òwÆ}¸ë^/ý¿©ù~_öÞÏ'ìû|öÇ•ÿ<ñŸ»þÏJ^Ô¢’ÞHõ¤{U)nË; ž¡N~Qô¬%‚©(¸óï~öëÓÖÆË%.]­Úúrõù?¼õ=7ÃÚciÿÚøRöîk@[6œ³Ê§OLg,GÌsrØ#§SÏIco£|Z·Ó¬¤ó ‡S…P“œêvçÛ8ü+‘‹ÄúÌ3\A«ßÇ=Æ<éRåÃIŽâN=ê”wÒÅp³Å+¤ÈÁÖEbX‚\ç½tS£V2nRºjÖ×õíøõ0Zn)(ë/>Ýþåmcñ@¾×Ÿ«iškßùSÞKq3Ã8,íV'¦8ɯ¶Ÿc£ÝZ'‡®´ëUÖ € .%V¸ù‰U#å=º×‰Ýx£Z¾ƒÉ½Ö/î"$.k§uÈäK7ŠõÛ”T¸Öµ UX:¬—nÀ09“ÔA®W‚¨ásY/7寯åÐèx¸9ÊvßÉyéøú¾§¯Í¨ð׉ ‡C¸Õ-U£dIäi$#•ryo—>ùïÖ«ÁàíÞt«‰c“LûSkþ{•È'îýÌtïœ~uäxV¶šy­µ[Øe¹9ã¸uiO<±ž§¯­4kÚšé¿Ùë¨Ý‹.Ÿf·—×?w8ëÍ5ƒ­Ôgkù¾Öïÿ×dÅR”ÓpÓ^‹½û|¿-ÎçÄÉ èþÒ¡·Ò3¨ßéðܵá¹|!8Î8$àúšâüìËÏü¶OýUKNæìD.®eœB‚8„’؃¢ŒôÐTQÍ››qÿM“ÿBÚ¢éÑ’nïS‘ÉN¬\U–‡×õÍxÅ#¹—D±¿´»ÍCɽGû’¯•!HßÕZ@ƒ†8S×¥¨nìí¯ìå´¿·ŠæÚe),3 tu=ASÁƾû#Ï.¯?á Õ5˜|#mj–16›±Q¶Þ ‰§) U\cFÄ2Cóõú̚ŗõb’;­^+)š&¶„Ư(RWj31ã‚Æ­Ûh:E–ššuž•coc‰Ö+dX•Ãn  Ÿ^jýXØ¥+IJÇ ©¡øGÂpêž·°ûV¢¶Ñ­á9ûW›*F.&e9›]ʼnÉɆìÔRø«Äj‹FŠãIÖ¿³e¾û )´7„>peaÂd=3ߪ‡Âþ¶kÖ·ÐôØ›P^í#Srr$Àùó“œç©ªwþðæ£§éÚtºMšiº}ɹŠÂ;hÅ»1W\4{v‘ó–ãàÕ]6ïýkýzßÈQ²½# |yi£Ã}¨Ãg*Ê÷V15»[‹Øeds v6Ic'­ixá.Á¶¿hØÓ®¡§´Æ0Bä]E¸€IÀëߥlKáû9NHÁ·³Óˆh,`THw(ÂçäìžAÀÅû‹xní¤·ºŠ9 ™ IŠ]HÁ#µ+ÙÝw¿Ý¯õå`ûWéý_yåŸ-η® µ‚í^ 3ÁÄR“'Èçkp{ü§ƒÐѤڭž¡¡Â-m´Ç_ÊI´}ÐØe(Ÿ*ðà xU½éœ“è–^ÐôÛc§hº}¥£J'6ðZ¢Fdû@ÆàUH=x”º—†ô=d8Ö4m>ü9RßjµIw);Î6=2}i©r­?­¿ËúÖí»ïýiaßk¸ÿ„›ì~}Ù¾ÉæùÏÚwïÆí½<¼qŸZ£üŒz¯ý±ÿÐ+FÇEÒô±Ó4Û;1^Lg·XöG»vÁ€0¹ç3ÍgEÿ#«ÿlô Þ†ÒôÿÛ‘„ïÍ_ÐÏñ½ÄÖž×®-e’âÓçx䉊²0BAr½súŸ‹µ» xޱ·²Õ´Í(^Á,w~z2°p¬KF0àÆÄ®Ò:|Üœvº……¶©¦ÜX_ÇæÛ\ÄÑK⻕†ÈÁÕ^]Lšk©&´YòÕm'IB»°„ão~hwÔÝ5¥úÀÿ‚s’kž%ÅZ£Úج7Z}Ä÷±-ã Õ,º™1œËc ›‹ˆîe%~ü±íØçÜl\}*¶£áè.­õO±yV÷:²,WSK™]Û…€ÎÒ@í“’¡T|ÿ¯øoO0Ýù²ø¶úâæ+]HŠæâw¹h¾Õv`¡•÷Ü什£ÎGJƒþ Ri:†¡o§»Ei¢E«¢É(VpâCåœ/¨'¯·:ÓøCF¸ÒìlÞX¢ÓâÛ5­Ì–òF›B•ß+m Œààdp*-GÀþÕ"Ž+›H’×ì~U­Ì¶èÐ â6XÙC(ÉÀ`@ÉÇZ­´þºÿÀþ´)5ÕWÿ-?«˜ÚŸ‹u/Äzä¿d·¸Òtý+ñ¹) cçÝœî(å°d’)¾2ñ5êÃ=†—ŠêÓ.O´´bO:ëaŒ•RUp˜'œ†û1'.ÍÔ³d’IÎNh×Q?#*ÓÅ×xvçÄWzbE£-›^ÛIÏ™<±…݇Œ¢„$tÛÜŠ¯?oôøîbÕ´Xb¿‹ì†8mïL±È·˜—1©0;†Ò1Œœ ›_ ifèEo+Åt–óÜË,!ï"DìQú(T6þ Ðí­¤…m¦”I$2;Ü]Í4„ÄÁãÝËmV ¼ž99ŸõýI§õýz”4ÜjÚÄv7ºl6‚XîJÉÙ—÷–ò¬R©5ùrÙVÎHê¥,~'þËÒíuMMY¬µ)æ“ÎÞO›¢qÑ‘§ÌÚÔÂÚ ‰tynÖÅ-ç·µG¹·»™ÔÃpòÖßäÙ˜²¸ùT“òáNáU%ñž³©ÙxbïE²†¾Õ&´¼µº•âÿV“¹hw˜÷d¢·2qÕÝø{K½·»†kP«{2Ï;Bí´Š+‡BXl\Aâ«·ƒôS¦-‚ÛM+pnÅw,rG)ÎçYƒ©9làŒîlç'/¨¿àþ_Ó"°×¯µk›—´ÓáTRMoö£tDÞdd«+f6îRßž‡mr¾×õ ÿ éZf¿au1¼Ñ~ÛoscªKö›Ÿ(G¸9PŒŒÅ×î»gœŸ^Ö é¶ú«ê¥ÂÍ&K'Û&òw‚ÞNï,1îÛrrNrMC'ƒô)tøld±Í´2iñ§œÿ-»… ™Ý“‹Ï^:ÒIÛ_ëGúØ««™:^µ¨è¶É¡êvæïR‚HR77%„и,\»Œü$vKy`’ ñ‰«üI·Ö¼7q.…ÂÏiwdÌ–º…œÒJ­rŠPy¾7 ›h9Æz× *Ä^Û^}™ ͬ-žY#m»”}‹ùRêu®©l¶÷ñy±,±Ìq_:žèÊáO­üÉŽ‡ž_ëzãxFÖæÎi—Ä–«†³w*¶æò5°†ÈJï-»¡cHñȺñV¥¬\]…ð̺y{9 e?Ñö´Ïè 3õýÍvƒAÓFµý¬-Ƚ'qq#m-·fí™Û»n8Ω`дÛchm­V/±¼F*ÉüÎrx9©I¯ëÊÀõþ¼ïÿóÝ;Å÷¦Ÿ¯ëVz¬7ÓéÚŒOiemv)UàŒ o“pbÌÌ¡°~qžØ­kÍ izZZA6»ªÇ%ë¸//˸*]TUUØÉ¯T¾Ò×S:€¶ÿIkµ21o”"ß·8ÎÁŽœsÜš¯sáé´ÂVi'Y-o&Ѥ9“kÆá‚±ä¨;IäŒÓ³éýiýL:ëý_¯•Žb÷ÆWø†Â{3X¶Òìì"Ô.Ö0‘´-1thVu}¨‰U “É(ÍK7º³Òd×àÔ5)o__–Í¢’úYb’¼h¶Š.ÕÁ‘³®2gyá=ÿì«=£,v¨±Ç3ÉlŠATtF "‚8Wuã“L²ðv‰§ê‡P·¶˜ÏæÉ:¬×sKrHIwHÝŠ#ÍÊ€pÄt&‹_?é˜Ûý?'úêr:'Ž5kO ØŸìäÔ£±Ðmµ-Bê{öYÙX>íŠc`íˆØüι$r:ÕNê{­^ÿQ—ѵž¯e§Á7rGC2ÿt`íb|÷;ˆÜ6®ÅiµÑ[X’â_´=‰µŽÝ4ñu:ÄÉ#àI‰ù˜°* ` VäžÒå×W{wûZíé<‚6*VhÃlfà1RGcÅS³wk¯ëþZ|Ç&µ·õ¢ýnbx^}Zû]»µÔîÅ 1³²ó{#(q,€Ò&N:og8áMuõV×Nµ²¹¼¸¶‹d·²‰§mÄïpŠ€òxùUGéV©t_ש:_CFŠ(®QŸ8ühð&·â¯_ý‡N¿h °È³Ãdò«bRu'¿jó_øR$ÿŸ-SÿR}±Ew¼U9%ÏM6’[¾‡ž°µbß%F“m캟ÿÂñ'üùjŸø*“ühÿ…!âOùòÕ?ðU'ø×ÛRöøùò¾ù™_WÄÏç÷Gü‰ÿáHx“þ|µOüIþ4Âñ'üùjŸø*“ükíŠ(öøùò¾ù˜}_ÿ?ŸÝò>'ÿ…!âOùòÕ?ðU'øÑÿ CÄŸóåªàªOñ¯¶(£ÛáÿçÊûåþaõ|GüþtÈøŸþ‡‰?çËTÿÁTŸãGü)Ï–©ÿ‚©?ƾآo‡ÿŸ+ï—ù‡ÕñóùýÑÿ#âøR$ÿŸ-SÿRð¤Z§þ ¤ÿûbŠ=¾þ|¯¾_æWÄÏç÷Gü‰ÿáHx“þ|µOüIþ4Âñ'üùjŸø*“ükíŠ(öøùò¾ù˜}_ÿ?ŸÝò>qø/àMo¾4°ûv~° f‘§šÉâUÌ, xê~õôuV8ŠÊ³V’V5ÃÐtT¯+¶îyׯ«Iî|$·Bÿg“Íp;q‚ çð¯Ù¾Ç½²Žú½¶k͵/€¾Ô/â+™ìËœ²@0¤ý3øb½c49­Lfןw½w½{—ü3ƉÿA{ïóøÑÿ ñ¢Ð^ûüþ5èlÑìÎ/캽Ñá¾w½w½{—ü3ƉÿA{ïóøÑÿ ñ¢Ð^ûüþ4lÑìÃû.¯txoïGï^åÿ ñ¢Ð^ûüþ4ÃçÞ¸ñ™¤kRtà·:p¹{¥QNocv¼ã½´Ñkö·»Oñˆ·v 9Áúçô5ï5‘¯xnËÄ6r[_¢¼R 2²n¼¼.!áꪖ¹èâ(ªÔÜ‘¼ïz<ïz÷Yg­åf‹R¼‰IáäÌæ™ÿ ñ¢Ð^ûüþ5ôÛ4{3ÅþË«Ýç{Ñç{×¹Ã?‚Ìé^Ëÿ ñ¡ÿÐ^ûüþ5ÕøSᎋáͧ.éïÊêK¿Ô’.•|Þ¦ãM;³Z9d£5)½ÙÑEó‡¸QEQEQEQEŸu¡i×—-=;ù_›{ àc±ö­ *£9AÞ.ÄÊ1’´•̯øFtùôÿȯþ4Â3¤ϧþEñ­Z+O¬Vþg÷²}•?å_q•ÿΑÿ>ŸùÿÆøFtùôÿȯþ5«EX­üÏïaì©ÿ*ûŒ¯øFtùôÿȯþ4Â3¤ϧþEñ­Z(úÅoæ{eOùWÜeÂ3¤ϧþEñ£þ#þ}?ò+ÿjÑGÖ+3ûØ{*ʾã+þ#þ}?ò+ÿðŒéóéÿ‘_ükVŠ>±[ùŸÞÃÙSþU÷_ðŒéóéÿ‘_ühÿ„gHÿŸOüŠÿãZ´QõŠßÌþöÊŸò¯¸Êÿ„gHÿŸOüŠÿãGü#:GüúäWÿÕ¢¬Vþg÷°öTÿ•}ÆWü#:GüúäWÿ?áÒ?çÓÿ"¿øÖ­}b·ó?½‡²§ü«î2¿áÒ?çÓÿ"¿øÑÿΑÿ>ŸùÿƵh£ë¿™ýì=•?å_q•ÿΑÿ>ŸùÿÆøFtùôÿȯþ5«EX­üÏïaì©ÿ*ûŒ¯øFtùôÿȯþ4Â3¤ϧþEñ­Z(úÅoæ{eOùWÜeÂ3¤ϧþEñ£þ#þ}?ò+ÿjÑGÖ+3ûØ{*ʾã+þ#þ}?ò+ÿðŒéóéÿ‘_ükVŠ>±[ùŸÞÃÙSþU÷_ðŒéóéÿ‘_ühÿ„gHÿŸOüŠÿãZ´QõŠßÌþöÊŸò¯¸Êÿ„gHÿŸOüŠÿãGü#:GüúäWÿÕ¢¬Vþg÷°öTÿ•}ÆWü#:GüúäWÿ?áÒ?çÓÿ"¿øÖ­}b·ó?½‡²§ü«î2¿áÒ?çÓÿ"¿øÑÿΑÿ>ŸùÿƵh£ë¿™ýì=•?å_q•ÿΑÿ>ŸùÿÆøFtùôÿȯþ5«EX­üÏïaì©ÿ*û‚Š(¬MŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ЉávrVâDÝP¸˜¦ùÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=‘'üýÍù'ÿG‘'üýÍù'ÿ@ÑPyÏÜß’ñ4yÏÜß’ñ4=Q@ò×Ç­^}ÇZŪFîÓ@„H òö#Ò¼£þÝSþxZß ÿÅW¡,5(óÔ³i?‡¿Ì󣉯7.Ji¤Úø»|¿(¯€ÿá=Õ?ç…§ýðßüUðžêŸóÂÓþøoþ*§ØáçëÿÀà—íq_óéà_ð¿(¯€ÿá=Õ?ç…§ýðßüUðžêŸóÂÓþøoþ*e…ÿŸ¯ÿÿ‚Ûÿ>—þÿûòŠøþÝSþxZß ÿÅQÿ î©ÿ<-?ï†ÿâ¨öX_ùúÿðø!í±_óéà_ð¿(¯€ÿá=Õ?ç…§ýðßüUðžêŸóÂÓþøoþ*c…ÿŸ¯ÿÿ‚×ÿ>—þÿûòŠøþÝOþxZß ÿÅQÿ î©ÿ<-?ï†ÿâ¨ö8_ùúÿðø!íq_óéà_ð¿(¯€ÿá=Õ?ç…§ýðßüUðžêŸóÂÓþøoþ*e…ÿŸ¯ÿÿ‚×ÿ>—þÿûòŠùkà.¯>³ã:âé#GY§@# y {“ë_RÖXŠ1¢ãË+¦¯µ»ÿ‘¦´«)sFÍ;o~ßæU-bùôÝ&k¸•]£Á Ý Z¡¦x³O¿ÂJße˜ÿ §å?Féùâ¹·:Ê(®;PÖüS7е 3ðéOŒ1ÊÂìH÷‚p œvïŠÖ7Q´­®¤Nj ììh®fÛÇšOü#6úƪϧ¤²´#Hc•s•%TúuÀ«­âí tHµvÔcû¯±fÚØÝ‚pF2‚)ºSÖ/{|ĪÓ{??‘³Efhž#Ò|G’è·«r±6×YYOl«qïÓƒéYþ³âüUm£xu4ÝÒÚ5Ã5ð“ Œ‡Üv¢4fçÈô~z«Nuªòõ±ÕQ\E—öÛEW{;KëËÃo42 $Y¶Ö12‚2N1¸ãž§­kxfÓR6:¬q\‰LLáX`¶09îN;ÕË Y;r·é®Ä*ôívíëæt4W,ŽÚe¶ .óku8·†O)þi7ÛŒdrÉ⳦øá[{Ù-%Õ¸ŽCF-¥c¸ÂóÏ¥ThV“´bßÉŠUiÇâ’_3§¢¹ÍKÇþÒ5 luKɹ„€ñýžVÛä)¦&½,Þ9··ŽçdºA¼Úñ„çÌ1$)è*kV×i¥këÔ^Úi;µþv:j+Kñ§‡µ­I´ý3SŽ{¡œ&Ö]Øë´zðOô­-KR³Ò,$½Ô®ÞÞ!–wþ@u'Ørj%Nq—,¢Ó*5!%x»¢ÕÏ[xë׺uÝ힤“Gf†I—c+…õÚ@$d1Ígü>×/|Iku©Þj«p¬å‚[[S“¿«åp}«O«TP”ä­néõ#ÛÓn*.÷íäv4V­ã_hwomªj+ñíÝ–ì~ax#¯jvã/êÚ±Ó4íN)îÀ$"†Ãc®Ö#k~÷ô©öyy¹]»Ø§Vš|®Jþ¦ÝÏIãÏ E«6›&¯ Ü«ì`Cl è_^¼USñGÅ·Øš"±¤¥\ù’Ê`/ã’pi¬5g´^×Û jKí-íó:º+™Ð|ag¨Ú¬·WÖ®.¯žÚÍíâ•U°Ubê0ø?CÚ¯Ýx«G²ŽþK‹¶TÓÝcºa Œ#fè2ž£¦qߥB¬eËÊïéòüôÕ„£ÌžŸ×ùôW/}ñD‡Â×ÞŸp·ÑÂÂ5C!iE9\ú‘PÂ}§_¾º=ý®ëÛ¡‰q Ù#Ê„.7e—°*ֳוöÛæKÄR_iw:ú+RñLJ4Oû?PÕ#Šècrlf ž›˜ñ5&«ã-D1KRŽ/:5–=¨Ï½pÃh9T*]­®Ún_µ¦¯ï-7×cnНakªXE{§Î³ÛÌ»’DèGô>ÝEX¬šiÙ–šjè(¢ŠC (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€>Lý¤?än¿ÿ¯˜?ôœWˆ¢îlW·~Òò7_ÿ×ÌúN+Å#îÞ‚½,To(†?‘Áƒøgþ)~c6f”à(®^DvÝŒÛAR)ê7H£Þ‡ÿXqëSÊ­qŒÅ%--fÆI ´·ù´˜;TœQ-¬Ð€eäW°ø'@ðöŸðæ=k[ŽkÙï%eñ„ùr\àœšÄñ–igkîaåZÈÛ$!‰\öàçÍí—7)Ö°òpæ<Ô!4á =ÅwVÓn<=$»O:äJÌT[¶~æ|޼äW#yi-…ôÖ·|È\£ílŒzÖ2RvDT¡*iIõ*‹f=Å8Y±èëúÓ÷bžÕ= l{/ì釯6 H9¸œñÿ^æ¾°¯”¿gƒŸéÿõÞý'5õmvâ¾_á_›80¿_ñ?ÉÚõ¤×Ú%޲ï•ÂíøïXúg‚`‡jryïÿ<Ѓñê{z~5ÔÑ\GhØ¢ŽÄp¢Æ‹ÑP`¸»Ø|K¦xÓT¿Ñ´4¿ŠúcIží#XÙAä©äŒžœt®ÚŠÖ•Of۵ü 8s«^ß×™çÞñF—áí6ÇI–kœÉ,Ú€ÓîÖÒG‘ÎAY}Ðr=øàvƒK𖹃 ¥Õƒï]~+çón’V1`nfn7ƒž2{ ôê+©cªrÚË{ßç~ç;ÂÁ»ÝíoÂß×™ÎiZUå·5ÝFX6Z]ÅÃ&åùÊ© À9Sñ„"ñm'Õl~Ó¦EdèÍçÄ»Áå`Ý3í]}„qŒÔã£Jß…¥J2‹‹Ù»þ79]sÃŒ#ð嶇d‰k§jQLèŒG-Éääû“šÊ¾ð¾©7…|YikGQi­—ÌOÞ&Pƒœàtn+¿¢ª8ª‘·–¿ÿ2]^ÿÖÍ~§êÞ Õ5/ßê0¼–Òô–ÌS“Æ?yÎÀ'ûÇ­u¶úޱ#i‹>†Ñ‹„o¶¹¹OôVŒNðOL_J×¢”ñ©$í·Ýoø>¡*-¸»_úþ½}¹ÏéWšYÖþÝ•ö­NYáùƒnBƒÇCÁæº:+6¢ãÜÕÅ6ŸcÏ"𮬞 Ðì–z°¹•|ÄÊ'ší»9ÇB85•sàMiu{Û9!Ôî´»ëÆ™ä³Õc†0ŽÀкÌ;óÎzÅÙ}X¶ìµ»ë׿sÏ ­oý_üÌ_Â-¼¨À…™b°tŽIæ¹Yëšä>k"; .•/ ÊÈ×Ë ¡Tr¹êAþœú,±Gr°¶™›vÓƒ–² ×qEf±RJ*1JÞ½~vþ»ìm¶õ·nŸ/ë^§™øW´ZÕƒk¶ú´q髺 dÕ£žà…‹nåR3߀®§Æš-毧Yɦ¤s\X]¥ÚÛÈÛV}¹ù3Ðg=ø®ŽŠ*bêN¢¨ít(aá8-™ÅYišÞ­âiµÝ[K‹I1Ø=¤vëp³<ÅŽw^0=+[ÀúmÞà½>ÃQ‹É¹…XH›ƒc.Är ­ú**b%8òY%§áóeÆŠŒ¹¯w¯ãoòG#u ßK®ø¢äZ†ŽûNH-œ²üìr9#®TƒÃzš/ƒ¶ØtؤKÂ$\ź-¾¼óéšîh¦±3JßÖÎ?“¥ïýt¡æ_ðŽx™<-'ƒWFµ{F”«µÊíÚ_~ãÞÝÛëíÍm®Ÿ­èþ<’öÇL]FÆö ’´¬f œ*yn9Àüë²¢´–2R½âµ½÷Õ»k¿’ÚËÈÍaâ–ùm¥¾_ÎÏ·ïá}jÖx¼‹É5I¯¬[zœ0`Ñ·ã$c’ûBñ —‚míôvvÔ§¸ûF¥öyÖe/’á$`Bp3è¿…w4Týjw»K{ØFÖWëøÿZ]§xCÄ¢øžÞîÒxæÔàˆÂ×wÉq#:g*Îç¦1ÓšÙžËÄÍŸ‡Íî‹ötíR'•Ôrf%^dÈ>§îòx®âŠ©cg'wøö·~È……Š-ß^Ý~GžÉ£øIæ—§è¶ú®¯<’­ëÝ*y^`Á‡–Û׊ÑÑ|1y¥x—LyUg¶³Ñ~È×ówƒ€ ÏLóŠìh©–*r-–»ùéný»¨E;Ýÿ–·üÑÎøJ¼Ñ¼)ž£‘:Ë+ܹ#Hèk¢¢ŠÂ¥GRnovm¨Ç•QY”QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQE|™ûHÈÝÿ_6ÿúN+Å@I9ç8½«öÿ‘¾ÿþ¾mÿôœW‰ž€W©ˆÑÇü1üŽ Ã?ñKó (¤®6ÎáÈx3ÐsIŠE8Éö Qº°Rb¤BA8éÖ˜j\U®¸|;½x;J–ÜÏrÉ$ÑMn"M™ÝÁg<ç`zTþ&Ö`O,H•Ž$¼éë^wà=GYF¸Ótç¸S%ÁŒac#€Ì{ÕÖ °ÒVK»õœûeÜv¡#"0z—î…@ï^|è?is×¥^>É\‚}R BK§ŠÚTÛ*ÆÏ+òp¹\Æìgüâ¼ßUÈÕ®÷|Öë]µ¼í}¡,VÂ>u˜Ç;Tí*H±õõ¬]WJŠîÑgWúG}üü­ŒaqëŽþõtàâÃQT¡ž§/šU4‡=éIšÜómýN|e§ÿ×ÄÿúNkêúù?ös9ñ…‡ý|Oÿ¤æ¾°®ì_ÃKü+ógŸ„øªÿ‰þHç¼UâVðÜú)1™ ½¾6ó„·’iù2?È‘å‹e@xÏê­ÿÄ 2Ö æÒ+›ëmZñíÁk3<%QËnP°`É´¡ŽIû¦µõ}ûSPÑî¼ÿ+û2ðÝmÙ»ÌÌRG·9ÿYœóÓÞ±[ÁWiÖ©§ê‘G{g«\jpM=©’<ÌÒå© ,Ì2rö®%n§{µ´íøëÿUø‰¥Å®Ûê0^ÚÇ£ÝGne[+‰ÅÄ{ví–- P ’F¡­;h·6°Î—R šílDs[K‰; „xÙC!#æ‚B+œñ?ƒõ¹SR—B¼¶“ûFþÊñ šÔ–ŽX¤„ßæ¨1„‹;1¸œáº ÙÓ|9ªØù×kˆ×ך‚]ßKHåEEÉDfbƒj/͹Žr{à ÖWòý/úÿZ []_×õÜÕPy¼A5„j¾U½ºI+ãîÇjƒžÁI?UüjØø†ÞvOµ:Â.®gŠÏälH±d1-Ó'k0é•éКžßK’Ú-I¢¹j¾•åóŒ|Fv…A·<íU^ã8=3Tµ?Yj~³Ñ^I#†ÌÇåÈŸ 6°ÏûH]IôsS­¿®¿ä_úþµ%‹ÅúñéÒC}æG©F’Zȱ9WW !']Ä€7c'ŠI|a¡Ceö·¿ 4ã‰Ü+DÅdÎÀR¤í¨ŒOÝpI覩é>°Òµ6ùgš{‹8]dyÍÌÍŸß?û@I(±!ô5ÿ†õKÝ3Jß­Dú¶™tnc¼žË1ÈJºa¢G^6HG 9óȧ¦ßÓñ.Câ­"}déqÏ)¸ó%sk(…äPKF³òÙÆ*‘µ¸ùN3-,Ñ­5¥Òî.nK¤lÂÞFŠ7¸(_-²0¬ÀËó ԛú¬z¤:–¬[Å{%¤V—òÜØ™|õŒ± dAeß®áÈãŽ`¾ðmÍÞ±s$ZªE¦^ÞÁwjmwJÒÃåí .ð“AF?{da«__ëú_ðÂÒß/ëúüI®>!xjÖIÒkÙ¿Ñ÷ùŒ–Sº€²C¹P‚¸b#v2+GÄZÃhš·°B·3îŽ+xKíK#ª -ƒ€Y†Nx®fçá·Úm.`þÕÛçÛêpnû6vý²Q&~÷;1Œµu®‹¯ ¶™<¯! M¢‘duÊÈ#ŽsFœªãvRÓoëó*&¡¨èZ\—*ž;â}#K¸$:”ÊÜ÷³Žz s$^-Ñg¿¶³¶º{‰îaŠâ%‚ÞIŠMÛ$%T…S´üÄ€8Î23«x;XñŸ¿ˆu2ûɸYD'Io²Ê¡YH’™·œ¶àKmTíã›ðBxr@Zô]"évúb#Ë;"ibA<‘  ®{àÿ®„«[úïþEë?hWÒL°Þ4i M9šâÞHb’%ûÒG#¨YdÈXAΨÓDzšê[©ícâIÝ”öî<ÆØ²D T·€ÛÁ烎IøM¦iú}îŸ*ibÚ{,[-"+{“€7M.[ÌpäRrYO–Ëáœ6ú\ÖÄèÖ²Ëqk+>•¢¥š2Á0”PìÌÌA–Ú8ÂŽw ×þ»ÿ‘Z_ðÇc¡ Κ/£K Bûd¶‘$Àÿ¦l¡óÇLdÖOü':±K–žéCÜU´û?š#2lòvy€ì€+ÈÆ3‘ZzÖœu} ÷N[™-Zê„O!£Ü1¸`ƒÇÔW%¡ü6MêÚhn¬¡ŽEumc§ x·ý™ *ªínrr$çnïýHŸø?–Ÿ‰¹'4H´h5fžå¬gg_=,gqBCù¸BbÚAÌÛŒã£ÒüN·>#Õt»ÖŠ3ðµ³Ú­™GÙ£™²yù›ÓìkŸÖ>ǬiâÊãQ‚XZ[çe¹±ó•>Ó!pñ©}«*g ! Álš±¬x;Qû%ôzm˵Υsm2ÜÁFÖ3$kÍ—c”)³eˆÉ*i¯õÕÁ’: _éÚœVRÜ\M*o ”Í®XÒ„Ø¹ØØÜFx#9ž*‡ÅV·’ÃislÖ·s[2͈dŒ•6vä¤àóUdð|‰â *ïNº´Óì´èãˆGofËs,h¬M0)‹vÏ# ƒ‚/x{C¹Ðšú{ÅŒ÷2ÜÁÙÊKHí#†}ä8ÜÜaW®zÑ º}ß­ÿý‡ŠõЫjO¦É¤¶¯&™öxm¤ŽhGÚL !ÈÊÿ6Ü®Õቌ³ãm `º–iîmŤ‘G2\XÏ€Èû#!2³p ž fYx"ú)ÚÿZŠm jê1ÚÁdb”Êò´ªS#UfÈÚªIUÉÀ æiŸ Æu+Ui™™àÓü¶˜ÛÜyË$‡Ì%ä˜;’rH `ŠÚ'ýmÿr·3·õ¯ù®®ØkÖÒͦÉ+e0ËöòA$N;Z9YN@È ô5ÈZxÇ[ÖÿRk ´éõK½>;[k9EÄb—nóÍ8„å玘=^•¢ÿfjšÅçŸæÿiÝ-ÆÍ˜ò± qíÎyÿWœñ×CÃÞ Ò´ /nâ´³}JòââY5´T™–YYö刯;G“ÛNߎƒÒß?óÿ€S²ø‡£Ã¢XϬß+\Ëc åÄ–V7/i 8„ÇQ¹|câ®iÞ)YµíWO¾(¦ßPKK5†7g#–ÆxÎ[…õ9Vß>ÏáûÝ3ûWwÚ´to7ìøÛ剛ÜçÍû¹íךµ§ˆç×lõ¡-ÚKæ2< qI ܆òÃgŒ0Sƒ·ß/3¶ßðWéýtµ´þ´_­þ«ëú~†!ÍpÒMŸ.ne`1¹¼¸•›hÈËc#'‘PÿÂY¢E[åv’8åˆ$nÞrÈp¦<Þ õÛœwÅføÃÁþ)¼±½hô¹.,ÒHÕ5m4_@Qö“û²ÈCƒ ¡ ƒž'Ú4éíµ‚]$KÛŽ1)xЪ¾ñòà >î5 úþ¾á=´5%ñnow{ow<Ö¯c ÜLnm&‰ iîŽÊE([µV?h3ËäÁqtf>b„m>à|ȆBœÇ÷Š Á~ó/*5ÏOð¤M{ªÜNÙ&Ômïmžqa™Ù.0{!“2*¡~è 6ã¸×Ʋ/ÿ´zjkåù–fÙßð,þïE½ß—âR·çÿïeñG‡D±ŸY¾V¹–Æˉ,¬n^Ò@q!; Ž<£røÆ9ÅkÜø«H´Õ†›=Ä¢}ÈŒëm+C¾6«ÌÆŒr¸V`Nåãæçí¾}ŸÃ÷ºgö®ïµh0èÞoÙñ·Ë7¹Ï›÷sÛ¯4²ü5²“ŇXòô™D³Eq3]iÏt¯ª*v?"‹UˆËm*H+o—›M„íÓúÛþÜtºV¿a­Kršq¹qlæ7’K9bˆb§cº…“HÊ+ñ/ÿ±¯5ý:ÚÊV»Ó4í¦{yZm²¬ÁB¨Xä¸Ý’ Ö–…ỽ'^Ôu ï­L7rÎÆÑ­â ]˜ÈêdpÒœ€]BgƒÆ+xÁ·:Õî¥-ž§¤Z®˜të´–ÐÊÛ@“c!»H2œ‚ 6õ¨ì8Û™ßËó_¥Ëv~6Ñ.¬®¦k™¡k4®"žÎhdάn¡œ3ªTÇ“Z:Nµe­Û¼Ö/îßË’9íä‚XÛᣑU— ‚2ApkŸ×|o¯K~×W1²ÝZZ@±Mj%^ÞW‘YÔœ:’Àã€yç#Ož‹Ã:l°G›Ï/›"éšrYBKƒ’ÌÇ$ò­5%hÛ/èWú£iö÷3‰Ä²Â­-”ÑE$‘’V@ŽÃkp¬N@jAâíím.!¸št½´kÛe‚ÒYXWfX"©lþñ~\gžœç|;àýd]¤ºåäXÚj×·Ö¶Q[âF2<¡YæóÙ+¡‚FOiÞִϲ}›Äv éšlÚ~œßÙ‡tJæ=¯&fÄŒ¢!Ð(9éÚ––ù~õ·ù”Ôyšþ·4[â7‡ÒÚK†]dE˜äc ß~í†2÷<}áÖ£Ó}kZ†âöW²Kk k´þp]†F%˜–·c‘…àåÙ7nŸðËÐjÉ_©ÐϪE£hq^k·QŒÒY£·tWv!FØòÌ2Ĺ'œsT¬|m j"Ãzñùvïrísm, ±ÆvÈKHª2„€Ëœ©ûÀU¯è¿ÛÚZYùÿgÙuoq¿fìùS$›q‘×f3Û9æ¹ãðâ–Xîµxf‡R†EŽ ­¶òQ! ’pSès׎”ovüÿ-?ŠŽ—eËßéQx_XÖ,æåô«cq%¤Ö³[ÊéØèc`€ûJðÜü§ Ó|ue}âO°¼­oÐÁöxn,.`›ÍJß1‘v• ¼H]_Yë+âZ;»VÁtã%§ÙÒ(T>Vw%ó+sŽ˜1ŸÞ]ýº}SW…ïnl`¶Ž{K#·’$xæUy]x'_C€ô¸´åóÿ†ÿ‚j·‹ôešÞ35ÆÛ™ŒÎ,¦0™†=¦]›.02ÃwÎEb^|Cu-KN† -n,uKk=Í•ËÁ(ÄOΑíF>aUÉÆv’pÕ·ðÎ ST²¹‚êÞ$±ŠÝ-ÖâËÏ{v†Má¢bàF>Xó UÍGÁ77š– ðê‘Ee¨^ÚßË Z‘f…¢é'˜°‚¤‚IÉéDmuëUú\µ5bñn‹6´Ú\wNnC¼a¼‚'‘/JWËwPQX°ÚÙ)Ã4_èž ºK}.æi$’Ü\ÅæÚM Í•k}>¡mj-q*Í0“vùwÈ Ò)û¹cƒ–Ùx:mÏFk[çš}H›OË…U¦gáÆæ*¤ºŽzñÊÒ×Öõ·ß¸ÚW²gM¨_ÛiZuÅýüžUµ¼fI)bz 'Ø šçõOYé©¢J,uaÕ®ÚØgO¹IbÂ;n1÷õL`Á-ÐÖ’ÂòëÂÿ`½–ÒâòKQò\[y°HåpÅ¢w)9ùr85‚µ´]:$Öâ:Ž~÷¶óIhïoåtò–#.ñIQæpq”£iY’Õý-?ZèÖ“ßÃy5ųéð=ÌÞ}”Ñ©‰1½Ñ™” ŒìÝÔzŠ£ªxöÃN:CÅk}u¥zÖ‚Hì® \FϽTFK©Ú#‚ `HSXs|(ó¯5[“©Û,Úµí³Ü ?÷Η?¼É™ ôFÜwF¹áùõm,é×±Z^iw{y&·3DO–ÑÈ ]±†8ëЊÖWþ¿¤=-÷þZ~&u‡ôßìÔŸS¸y%žk¯&+6íÜÅ Ûèü²á—rÈÆrGrïÇž³¦Ké%K¤†Hå¶´št )"ïMÄŒn#5[IðIÓ5X/[P˜~ß”mÝö©Ö^»Ž6íǾsÇJäo¼­iz®‡m¥Y>©oeigo,²F#¶•¡rCÈñ Çn†m¸rr(ÓO—ëÿï [V¼ÏO¹Ô­,îí­®eòåº.!Nªî#v08'¡¬ SÇtz^™s¤ßC'ö“Û=¼²[O$m’ªä˜Ôì$1 _v3ÐÖŸˆü=mâ]5,îÝâ 2ʲG÷€2MÈ·ÙcËðúÈE|–WßíwÖ×@ya–†e›ÊP—óØÈz€ß^ëîþ¿/0)jߣë0[YL’é:•­£É-¬Í±Èð‡`B¸ NN`ƒ]V¯iúý¼²é²ÈÞD¦)£ž ’'À;Z9YNK%e«&N7‚“¸ô­½SÃúž§c¥Èu[dÕ´ÛŸµ%ɲ&rŽ„„¶íã÷™Iä¥þïø"[|Ÿß­¿Box–? h‹©Mk5ÒµÌþ\1»°ó$TÎXœœc’êElA2Ü[Ç4aÂÈ¡”HŒŒåX±ŠÌñŠÚö†ÖKr-æYbž)Œ{ÕdŠE‘r¹®åÇqÖ¢m7Äix­âÒâu„C$V Ý—a ÌŃó÷=M.Ÿ0} º*¥½½äz•ä×Þu´Û>Ïmä…û>æ¶ãÏ=*ÝQEQEQEQEQE|›ûGÿÈßùù·ÿÒq^$ÜšößÚ;þG ÿúùƒÿIÅxzx¯±þþGiÿŠ_˜PM-­ÍôœNê¥ÊÄ…ˆ©Àí\Rgz"ÆV—¥vãá}÷Ø­IÔ­ÅÞÑo™Ød!b>Rzzf¸©¡’ÚâHfB’FÅ]Xr¤IM=ÜZáX÷Í0õÅ?rù!@ù‹dš³¤Ú6¡ªCl‹½¤`1÷‰8ó5sÑ"Që_,.îïõ/´Ú«i ’y¼tèF2pz`Êñv­oªøŽîãM‰ µ.VA…Ú ãßô¯SñÁ¶økð’ÓÃz{¬wW€¥Ä«ÁqŒÌÿ‰Âjð×`T0Xgƒ°¬$Û,Ž|ÍAÁǶ+®çFØÌp¼cü÷«Ws¼r1L?­Sº]¬’) ¬9#Ö¦Åð_F¬«t›@~sÈo\{ÕjÉlÇ"·Ld}j§z¨¢g£=»öqÿ‘ÂÃþ¾gÿÒs_X×É¿³üöõó?þ“šúÊ»q›Rÿ üÙça>*¿â’ *ޝ©Å¤éïs9áGÔ×–j59®XÚ?—<F[wOd^#Kn}Ïa¢¼Oþ·ÿ?'ó£þ·ÿ?'ó®ÿìŒ1]ßÁÍ µ¯‰:J'óØöÙÞß®Ñ\çÚVKm—J½~aœ}=+Ô>Úý‹Ã¾2ñ@UˆéúKZÀ@à;©f#ð ùÖ¼×9íc⟋[Æ¿ç[WݥطÙá9â@§æ#ضOå\䄱ª¶l‡yë´(Àöæ­Æj@ɼ3U•ÄYFÜdëZ7+ºCY·±´+†èÇŠh¯2³H[ÛØRR SÀ­SÛgŸØ×ÌÿúNkë*ù3öoÿ‘ºÃþ¾gÿÒs_Y×V3j_á_›8pŸ_ñ?É7ÅYš/A´ãt¤ʼgί]øÂÛ<3lé±ÿÐkÄDüõ¯¥Éݾg‰š«â>FÍõ­Þ™tmõ ym¦ì‘H$zQî8ªþu{gŒüSá+câ¡(ñ金:ç#aÁëqÒ¼&öòÚ[Ùd±í­Ù²¼žaAé»?—ø×V «§éçIš56·@¨ûLå H˜äå=0NNpgûQ_áÓ^½¿_"Ö^Úß·Nÿ§™ä^uuz”ZE¤š¿‡bñ‹¥Øj³Í8–ÂÕcÂ"r”3¸ ÿõ›¥O¦jÃÏ/‡te:¼×O²Ð«m¥x>§œþ©æi+¨ßæ¼þÿ…Ž9s{Êß'åþgMcyo¦[jE¶Öé™a“p;Šœ3‘øÕO:½ ?ζðúhú&“5Ì“][Èn­ƒ!Ž7Û½û±uõ>õ·s¡Ù·‰ž;iÖ«»50ÿ§LÎÆ0ãpVaÁ$ŸîÏö¢‹´—ÁÛoë«ös íøÿ_ÕÏó«§øi9ÿ…‘` ðÐ̿ɟéP|Fû%¦©gzIÒïV Ü¢ÅQÉ“ò²ª;Ñ»Ô? eßñ;NôÆoýÕb«*ØM-ÑzN–.1}ô-x÷ʼnÙ|Cyù|¥8üëØkÄ~0ɳÅ1úb¿Ö¾w(ÿ{_3ÛÌÿÝŸÈä­Ök»„‚Ö)&™Î8Ô³1ö­hkÊ¥›DÔ€$›I8ý+ž·¿’Öê+‹w),. :õï|A†ãὤÖNëVC <Ä~¼~9¯¨Äâ+Sœ#N7Rvôþ—ä|þ…*ŠN¤­esÌ­–[»¨­­×|³8 e‰À>ôëÈgÓïf´»O.x\¤‰v‘ÔdqQøj|ø¯I·°ÿèb½2úâÇNûMÜÚ>Ÿ}5ωÍÞîÜ9y8>¼qõ§_*UR½Ð©aãR“›v³ýý1ó¨ó«Ô—Ãðuû;ÆÞ®&Û©]Â’¢ ™ÛˆŒ{R¶›¡YøU. Ñ#Ô´aa¾[È ‰æÎæóL¡¨ ÇLñÏý©‘íÛ¯ëäoý+ÚýÿcËVBÌA,N­>ušÖw‚ê)!•9«)÷¥v×ZÍ–€þ·‹GÒ]ZZÏqw=²ï‘–ÝÆ:I¬ïŠË{‰„·zu­­¼¥¾Ï•ÑOªJQŠÙ_úý;£ àÜ"¤ß[~å¯auOxƒE°{ÝNÃÈ·B?`“Àbj ?A¾Ôôyu C$w oå–ó¹qÆ1’:‘]Š4kë¿Á>¿¢XØhkµïmö$“+°ÈCîçŽp1’k~xg±Ò®"¿ðþ—gjÚ¼A q)Iâi‡p'<ÛŠâþÒš§œ›[mºÓw¯äu<=¤’½’{ú=vZhy5Õ…ý”—+qk"ý–O*v ¹coBÃÖªyÕê‘y³h~'Òô-#Mºš×Se[WŸâ 29Ú}½©–úN“ý‘.—¥·†N˜d“W}¦àMÎ~lî=±ÁãýšÖ9“çõkþ=_‘2˽þX¾ÿ¿áÏ.ó©>ÐRhNfB§Ì+©ñv¡k¦xoEÓí49÷K‚ynþÌ<íÇÑ»gžIÍp¾~f„ÓdÿÐ…vûgVŒ¥knr:>ʬc{íøê}cPÝÞ[XYËwqµ´*^Y¦pˆŠ:’Ç€=ÍM\׌^;itKëòK³Ô<ë×¹ùR‘ýd(rxS†=2?=>ÐÛÓuM?Y±[Í"úÚþÕÉ =¬Ë*1 ¤Ž Z¯1Ôµ¦kýgÄ ½…­n¥ÒìþÛC<Æä¤…O*øŽDBÃÓnr¼všÍ–¤¾Ôl¬/&»Ô”ÉÄÛG©ÚNÅU$t‡¤yŠQ¼’¹sO×4ZâêßKÕ,¯f³}—1Û\$dŒ8RJœ‚0} ^¯?ŸÅš> Xügö0Á« +K¥Û™$i##÷esmp0P’R+&ëÅ÷)cj§ÆžNúïØÓÄXµ_>²4‡çhÌ'‚›•@ùqÔjÚ»]?¯ÖŠn<ßÖ×=Z¢¸º·³ˆIwa·O]ô§µþ÷þ}µ6|­_þƒù*”yZ¿ý?òU+”³ñ¾¡«ê g¦ZÅÛäótˉc.’Z*ò° ß\ ıæ ¶ø©]¼Q¦˜±5ÚÅilÌ¥€¾ý!nT ž?º—ž ¥Ý¬¾åþ_/]7³ŠÖïïçóôÔì¼­_þƒù*”yZ¿ý?òU+ŽŸâ£a4±Þi«(²2Û^<*GúIcöePOI $cõ®‡RÖåÓtw¸3YÏs§ùO©Æ‡\g™.âW –Î@ïÖku{/¹—ÏÐ8§m~÷þf‡•«ÿÐcÿ%R+Wÿ ÇþJ¥sð”k¤ÖPèòiÖƒP[««k«¨štkxYp«"ä¾ýû·`.8=j§ü, ÙtKRŽÚÖ‡!ÕáG,ÃÌq)*NFäZôò}x~ÑÚö_róòòe*)÷ûß{w;/+Wÿ ÇþJ¥V¯ÿAü•Jâu}o^Ó|Iâ-BÖòÝíl|?âYKŒ þü‚ÊòväŒ1šÆÚÝåð¹Ò­ÚÚ?'û"êZ2ûd–ó0 2£bœ^}wt¬¾åßÐ^Éow÷¿/?4w^V¯ÿAü•J<­_þƒù*•Çj1׬ }6ÚÚÛQÕ×SxžÖ±`óóåI:üÁ~]¾oûYþè|;®Ï{¤[¶¸YêR<Ñý™fŒ´¦&!ŠªHà2T3m<qš^Ó­—Ü¿ÈN’]þ÷þf‡•«ÿÐcÿ%R+Wÿ ÇþJ¥sv¾'ÕSÂ7^'½û–­§I}m§ÇÇ4aWvÇ»ô$"àö5VëÅšî”.ìïK½¼ìöð§MåjÿôÿÉT£ÊÕÿè1ÿ’©\zxÛV}&äÍk®¡cV×¥±œ5ü’mXÐy‰•ÆæeâT%€ªøƒ\±ð¥Å½Ä:eäšÍÅ¥Ú4%ÑÌI:U&Æ?w»ØÇÌvòùße÷/òùú4/gu{í~þOæ™ÝùZ¿ý?òU(òµú äªV>™ªêº­ÅÕÓËeo¦¥ÅÅ¢Ú< ö‚Ñ–]þfý¼•'n·ïWáûû¨¼£é:ý¾©éw^kÈa¹ƒËX¼‘­#²8;Á݄۷¿iUZ%÷/7Û²+د?½ÿ™é~V¯ÿAü•J<­_þƒù*•Êiwwþ6Þ·6·~îK¶FµÆfù?p‚ª€$ˆsÞ»xû\}*yÿ°â´š;‹X£%ê«ù³¬gýu´=g‚ÞãÖ½¦¶I}ËüˆTÓZßïggåjÿôÿÉT£ÊÕÿè1ÿ’©X1êzüž(ŸE–}9£´±†êâu´u2—yT¢¯švð‹‚Kcƒž9? øÃQ±ð•¼ö–ÚlÛÝ#oftŒÌlåÔpNå$ñ€R©~‹î^~^E{ç÷¿ó=+ÊÕÿè1ÿ’©G•«ÿÐcÿ%R°½­XêãFÔŸO’öWŽh.#…¢­€ÌìPÈÇ)´ŒîÇï#Ï|ðÒëÒêZgŠ›:“ůéWW0Gue4QÄÑ¡THÝÑU÷õ°¤òŒs‚){_%÷/òþ¬¥Ò»éÕõùž±åjÿôÿÉT£ÊÕÿè1ÿ’©\Ä ^ÉÈ_ êD‘Û" TšÕþ¨úcèú´Öw“ZÍ¥]ùöp4QîÔmdg~G–Ní܃Ðc&ùÖ‹î]Úíä ”\S»×Íùyùß•«ÿÐcÿ%R+Wÿ ÇþJ¥qúîq­ø»^µµ9:vžÍÉ"ÂÜLí ÚÀ< ŽD ©iÞ ´Ö´¥²Ó®>ÞövÑÀZ[qkq?–›rr«2Èœ€Õ>ÑÞÖ_rô]:ÿŸÌt¢®þ÷ÚýÏGòµú äªQåjÿôÿÉT§éº|V›¨"((,rÍêÄ÷$ä“Ü’jÕ>%÷/ò'Ù¯?½ÿ™£EW ±ògí#ÿ#uÿý|Ûÿé8¯Í}Wñ[áN½ãO^Ü[iòIe#ÄñËÌHX¬J§†9ëžÕÂÃ7kÿô»ÿÀÛñ¯VµmÉ(Î? ZÉv<šÝxÊø¤ô‹îx}¯pÿ†n×ÿèwÿ¶ÿãGü3v¿ÿ@ë¿ü ·ÿÃêrþxÿàHèúì’_ø cãŽ=3ZVž&Öì4{*ËV¼·Óî‰3ÚÇ3,räcæQÁè+×?ᛵÿú]ÿàm¿øÑÿ ݯÿÐ:ïÿmÿÆ—ÔåüñÿÀ}v?É/üž./îÀÀ¹—ï?´.ÿçæ_ûì×´Ã7kÿô»ÿÀÛñ£þ»_ÿ ußþÛÿS—óÇÿAõØÿ$¿ðx©¼¸'&g'Ý©’O,  $fÇLœ×¶ÿÃ7kÿô»ÿÀÛñ£þ»_ÿ ußþÛÿR—óÇÿAõÕü’ÿÀYáù4d׸Ã7kÿô»ÿÀÛñ£þ»_ÿ ußþÛÿ?©Ëùãÿ úì’_ø Ù»þFëúù¸ÿÒs_Y׃ü)øS¯x/ÅÖW:|‘ÙFò¼’És•-(áNzãµ{ÅË/gÓ´RÑß« ïÚI¦¯&õVè7øÖÛ<'lé¹ÿÐMx/_AüaÒ®uOâÉ ’ÀþhE°|_5‹€{ý}«ÞÉêGØrß[ž^gí¯ähùÔyÕŸç_ÖcåùM::³üñëúÑç_ÖŽ`å4<ê<êÏóǯëGž=Z9ƒ”Ðó¨ó«?Ï¿­xõýhæSCΣάÿÝ·±ö2gƒÏÊì0r9«TP[6ÖîúÖîåIm A‘¶+Û3´¶: 8ÆMZ¢Š(¢Š+ûD6þ#Ôüù£‹w•ì~Oz誼º}œò&´‚Gn¬ñ‚OãŠÚ”ã óu_ª3œ[³] ›‹2îÚK{©­'‚U)$R2²ºž ðAô¦ùš@šIwYy’F"wÊeÐg Op7:r}kWû+OÿŸ oûò¿áGöVŸÿ>ß÷å´ö”¼ÿ~óÈç?²<(,m¬–ÃG[kI<ÛhV‚@ùÎô¶I9ÕøwžÒ~Á¥Á§"<+ Ä¥"]1™J¼œœçÔ×Wý•§ÿÏ…·ýù_ð£û+OÿŸ oûò¿áG´¥çøï<Œ¸fÒmʘ$³ˆ¬k(È0‹÷WŽÃ'¶iÑ]i°+,3ÚÆ‹°GQ–'$ýIç5¥ý•§ÿÏ…·ýù_ð£û+OÿŸ oûò¿áOÚRó Tò3RçLËòæ´_-v&×Q±xàzÂs¦ ¸šÐmrë‡^ç${œž}Íieiÿóámÿ~Wü(þÊÓÿçÂÛþü¯øQí)y‡ï<ŒÓs¦6ìÍhw°v˯ÌÃ'Ü`sì*ôUå½Üq^Ãg%àU¸¸¶xÖYq‚ÄÙ\õðAÁ­ïì­?þ|-¿ïÊÿ…ÙZüø[ß•ÿ NtZ³OðÞ-t0/,<5¨éÐéú•¶—{go·Ê‚å#•hÀ 6@ qšMGNð¾±$/«YéÏ•‰®bŠC=B–ûWAý•§ÿÏ…·ýù_ð£û+OÿŸ oûò¿áOÚRßPµE¦†%Ä»¼‚îê-6{›ee‚i6x•†+TÁÇZ§àÈ,f²ƒIУµ¸ &-¡ #r㑞õÓÿeiÿóámÿ~Wü(þÊÓÿçÂÛþü¯øRö”»?À?yäsãMð¸Ñ±Åž4Ïùñò¢òzîÿW½yéךž$Ðà[Qéñ‹4)l òŒ˜û£`v­Ÿì­?þ|-¿ïÊÿ…ÙZüø[ß•ÿ ~Ò—˜Z§‘…iiáË Û›Ë}.ÚêìææxR4yŽs—aËrIæ™i¦ø_O³kK ="ÖÙ¥40Å!C•PAëÀô®ƒû+OÿŸ oûò¿áGöVŸÿ>ß÷å—´¤»þûÏ#A  â-4dH§å‘!̃þyoSÖ­5æœñ„{‹VE ….¤Gä@­ì­?þ|-¿ïÊÿ…ÙZüø[ß•ÿ ~Ò—˜~óÈÈ»%ý¬ö×ß`¹·¸ÿ]Û%é÷àô}W—OðÅÆšú|öšL¶R0w¶x¢1³ `•#Œ}…oÿeiÿóámÿ~Wü(þÊÓÿçÂÛþü¯øRç¥ÙþûÏ#,¼7¬Ú¤vÚRêž[^,q‰™pÒýq€3ÚœÖÞ{t·x4Ɔ8Ù#)U‰°0:8^‡·?²´ÿùð¶ÿ¿+þeiÿóámÿ~Wü(ö”¼ÿý瑚.tÅtušÐ4hQ:åTã zÂ’â}.î!Ô¶s ep²2° ¤2œà€AìEiÿeiÿóámÿ~Wü(þÊÓÿçÂÛþü¯øSö”¼Ã÷žFXŸJOr$³È‚7—rîe¤õ n<{ŸZ¬Ö~e·V·Òȵ@–हPÊÁWû SÝAì+wû+OÿŸ oûò¿áGöVŸÿ>ß÷åÂiKÌ?yäeÍ6•sŸ´Ig.chÎöFÊ67/=ŽG| m)Ìä³cnÛ¡%ùGi\¯¡Á#ŽÄŠÔþÊÓÿçÂÛþü¯øQý•§ÿÏ…·ýù_ð¥í)yþûÏ#œ³Ñü%§[ÝA§éÚ-¬7‹¶æ8 ‰qÏÃO_SO²Óü1¦éÓØiÖzM¥•Æ|ëh"‰#—#rƒ‘Ç=« þÊÓÿçÂÛþü¯øQý•§ÿÏ…·ýù_ð£ÚRóüûß#ÂËÃZ^Ÿ-Ž™m¥YÙÌI–ÞÞ8ãÉ9Q€rö«3K¤Ü@°NöRÄŒ¬±¹BªT‚¤Üô V¯öVŸÿ>ß÷åÂì­?þ|-¿ïÊÿ…?iKÌ_¼ò(hÙÏå¿ýý_ñ£ûFËþ-ÿïêÿ_þÊÓÿçÂÛþü¯øQý•§ÿÏ…·ýù_ð£ÚRóÞy袊ä5 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€"¸¶Žê=’Œ­qºŸÂ/ê×msy`LÌr΄)o®5ÛÑMIÇTÄÒ{žyÿ ;Á?óã7ýýÿëQÿ ;Á?óã7ýýÿëW¡ÑWí'Ý“ìáØóÏøQÞ ÿŸ¿ïïÿZøQÞ ÿŸ¿ïïÿZ½Š=¤û°öpìyçü(ïÿÏŒß÷÷ÿ­Gü(ïÿÏŒß÷÷ÿ­^‡EÒ}Ø{8v<óþw‚çÆoûûÿÖ£þw‚çÆoûûÿÖ¯C¢i>ì=œ;yÿ ;Á?óã7ýýÿëQÿ ;Á?óã7ýýÿëW¡ÑG´ŸvÎ>O‚G ýœíƒœ<™‘×c¥è–Z<) „^\h6ª€Ð+BŠ—)KvRŠ[ ªZ†“kªDÑݦåa‚8ä~5vŠ‘ž7Á?M+HÚs©c’ÂÈ gü(ïÿÏŒß÷÷ÿ­^‡Eií'Ý‘ÉǞŽðOüøÍÿúÔÂŽðOüøÍÿúÕètQí'݇³‡cÏ?áGx'þ|fÿ¿¿ýj?áGx'þ|fÿ¿¿ýjô:(ö“îÃÙñçŸð£¼ÿ>3ßßþµð£¼ÿ>3ßßþµz{I÷aìáØóÏøQÞ ÿŸ¿ïïÿZøQÞ ÿŸ¿ïïÿZ½Š=¤û°öpìyçü(ïÿÏŒß÷÷ÿ­Gü(ïÿÏŒß÷÷ÿ­^‡EÒ}Ø{8v<óþw‚çÆoûûÿÖ£þw‚çÆoûûÿÖ¯C¢i>ì=œ;yÿ ;Á?óã7ýýÿëQÿ ;Á?óã7ýýÿëW¡ÑG´ŸvÎ<ÿ…àùð—þþÿõ«¤Ð¼¢xr‘j Lç Éõ8šß¢¥ÎRÝF+dQEIAEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPOn’9fi?Ý•€ü¦ý’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€²Gýé¿ïûÿdûÓß÷ÿ( ì‘ÿzoûþÿãGÙ#þôß÷ýÿÆŠ(û$Þ›þÿ¿øÑöHÿ½7ýÿñ¢Š>É÷¦ÿ¿ïþ4}’?ïMÿßüh¢€?ÿÙyoutube-embed-plus/styles/index.html000064400000000312151435171370013616 0ustar00 youtube-embed-plus/styles/ytprefs.min.css000064400000020200151435171370014607 0ustar00 .epyt-debug{cursor:pointer;text-align:left;background-color:#ddd;color:#000}iframe.__youtube_prefs__{border-width:0}.epyt-gallery{text-align:center}.epyt-gallery .epyt-figure{margin-inline:0;margin-block:0}.epyt-gallery iframe{margin-bottom:0}.epyt-gallery.epyt-lb iframe{display:none;height:0!important}.epyt-gallery-list{margin:0 -8px 0 -8px;position:relative;transition:opacity ease-out .3s;display:block}.epyt-gallery-list .epyt-gallery-thumb{box-sizing:border-box}.epyt-gallery-list p{display:none}.epyt-gallery-clear{clear:both}.epyt-gallery-list.epyt-loading{opacity:.5;transition:opacity ease-out .3s}.epyt-gallery-thumb{position:relative;box-sizing:border-box;overflow-y:hidden;display:block!important;cursor:pointer;opacity:1;float:left;padding:0 8px 10px 8px;height:auto}.epyt-gallery-thumb.hover{position:relative;opacity:1;transition:opacity ease-out .3s;height:auto}.epyt-gallery-img-box{width:100%}.epyt-gallery-img{height:0;width:100%;padding-top:56.25%!important;position:relative;overflow:hidden!important;background-size:cover!important;background-position:center!important}.epyt-gallery-playhover{opacity:0;position:absolute;top:-10px;left:0;width:100%;height:100%;vertical-align:middle;text-align:center;transition:opacity ease-out .3s}.epyt-gallery-thumb.hover .epyt-gallery-playhover,.epyt-gallery-thumb.epyt-current-video .epyt-gallery-playhover{opacity:1;top:0;transition:all ease-out .3s}.epyt-gallery-thumb .epyt-gallery-playcrutch{display:inline-block;height:100%;vertical-align:middle;width:0}.epyt-gallery-playhover .epyt-play-img{height:auto!important;max-width:15%!important;padding:0!important;margin:0!important;min-width:30px!important;vertical-align:middle!important;display:inline-block!important;width:auto;border:0;box-sizing:border-box}.epyt-gallery-title{font-size:80%;line-height:120%;padding:10px}.epyt-gallery-notitle{padding:4px}.epyt-gallery-notitle span{display:none}.epyt-gallery-rowtitle{text-align:center;width:100%;position:absolute;left:0;top:100%;opacity:0;z-index:10;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.epyt-gallery-rowtitle.hover{opacity:1;transition:opacity linear .2s}.epyt-gallery-rowbreak{clear:both}.epyt-pagination{clear:both;text-align:center;padding:10px 8px 10px 8px}.epyt-pagination.epyt-hide-pagination *{display:none!important}.epyt-pagination>div,.epyt-pagenumbers>div{display:inline-block;padding:0 2px 0 2px;vertical-align:middle}.epyt-pagination .epyt-pagebutton{cursor:pointer;display:inline-block;padding:0 10px 0 10px}.epyt-pagebutton>div{display:inline}.epyt-pagination .epyt-loader{display:none}.epyt-gallery-list.epyt-loading .epyt-pagination .epyt-loader{display:inline-block}body .lity-container{width:100%;max-width:964px}.epyt-curtain .lity-opened iframe{opacity:0;transition:opacity .3s linear .5s}.epyt-gallery-allthumbs.epyt-cols-1 .epyt-gallery-thumb{width:100%}.epyt-gallery-allthumbs.epyt-cols-2 .epyt-gallery-thumb{width:50%}.epyt-gallery-allthumbs.epyt-cols-3 .epyt-gallery-thumb{width:33.333%}.epyt-gallery-allthumbs.epyt-cols-4 .epyt-gallery-thumb{width:25%}.epyt-gallery-allthumbs.epyt-cols-5 .epyt-gallery-thumb{width:20%}.epyt-gallery-allthumbs.epyt-cols-6 .epyt-gallery-thumb{width:16.666%}.epyt-gallery-allthumbs.epyt-cols-7 .epyt-gallery-thumb{width:14.285%}.epyt-gallery-allthumbs.epyt-cols-8 .epyt-gallery-thumb{width:12.5%}.epyt-gallery-allthumbs.epyt-cols-9 .epyt-gallery-thumb{width:11.111%}.epyt-gallery-allthumbs.epyt-cols-10 .epyt-gallery-thumb{width:10%}.epyt-gallery-allthumbs.epyt-cols-11 .epyt-gallery-thumb{width:9.090%}.epyt-gallery-allthumbs.epyt-cols-12 .epyt-gallery-thumb{width:8.333%}.epyt-gallery-allthumbs.epyt-cols-13 .epyt-gallery-thumb{width:7.692%}.epyt-gallery-allthumbs.epyt-cols-14 .epyt-gallery-thumb{width:7.142%}.epyt-gallery-allthumbs.epyt-cols-15 .epyt-gallery-thumb{width:6.666%}.epyt-gallery-allthumbs.epyt-cols-16 .epyt-gallery-thumb{width:6.25%}.epyt-gallery-allthumbs.epyt-cols-17 .epyt-gallery-thumb{width:5.882%}.epyt-gallery-allthumbs.epyt-cols-18 .epyt-gallery-thumb{width:5.555%}.epyt-gallery-allthumbs.epyt-cols-19 .epyt-gallery-thumb{width:5.263%}.epyt-gallery-allthumbs.epyt-cols-20 .epyt-gallery-thumb{width:5%}.epyt-pagebutton.hide,.epyt-pagenumbers.hide{display:none!important;opacity:0!important;visibility:hidden!important}.epyt-gallery-subscribe{text-align:center;padding:15px 0 10px 0;clear:both}.epyt-gallery-subscribe a.epyt-gallery-subbutton,.epyt-gallery-subscribe a.epyt-gallery-subbutton:hover{display:inline-block;padding:5px 10px;background-color:#e62117!important;color:#fff!important;text-decoration:none!important;border-radius:3px}.epyt-gallery-subscribe a.epyt-gallery-subbutton img{width:20px!important;height:auto!important;vertical-align:middle!important;padding:0 6px 3px 0;display:inline-block;background:transparent;-webkit-box-shadow:none;box-shadow:none;margin:0}body div.__youtube_prefs__.__youtube_prefs_gdpr__{background-color:#000;background-image:-webkit-linear-gradient(top,#000,#444);background-image:linear-gradient(to bottom,#000,#444);padding:25px;height:auto;text-align:left}body div.__youtube_prefs__.__youtube_prefs_gdpr__ *{color:#e3e3e3!important}body div.__youtube_prefs__.__youtube_prefs_gdpr__ a{text-decoration:underline}body div.__youtube_prefs__.__youtube_prefs_gdpr__ button.__youtube_prefs_gdpr__,body div.__youtube_prefs__.__youtube_prefs_gdpr__ button.__youtube_prefs_gdpr__:hover{display:inline-block;padding:5px 10px;background:#e62117!important;color:#fff!important;text-decoration:none!important;border-radius:3px;font-weight:normal;border-width:0;box-sizing:border-box}body div.__youtube_prefs__.__youtube_prefs_gdpr__ button.__youtube_prefs_gdpr__ img{width:20px!important;height:auto!important;vertical-align:middle!important;padding:0 6px 3px 0;display:inline-block;background:transparent;-webkit-box-shadow:none;box-shadow:none;margin-left:8px}body .epyt-gallery-img-gdpr{background-color:#000;background-image:-webkit-linear-gradient(top,#000,#444);background-image:linear-gradient(to bottom,#000,#444)}.epyt-facade{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:100%;-webkit-transition:.4s all;-moz-transition:.4s all;transition:.4s all}.epyt-facade:hover{-webkit-filter:brightness(90%);-moz-filter:brightness(90%);filter:brightness(90%)}.epyt-facade img.epyt-facade-poster{display:block;margin:0;max-width:100%;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border:0;height:auto;cursor:pointer}.epyt-facade button.epyt-facade-play{background-color:transparent!important;position:absolute;left:50%;top:50%;width:68px;height:48px;margin-left:-34px;margin-top:-24px;-webkit-transition:opacity .25s cubic-bezier(0,0,0.2,1);transition:opacity .25s cubic-bezier(0,0,0.2,1);cursor:pointer;border-width:0!important}.epyt-facade button.epyt-facade-play svg{height:100%;left:0;position:absolute;top:0;width:100%;pointer-events:none}.epyt-facade button.epyt-facade-play svg .ytp-large-play-button-bg{-webkit-transition:fill .1s cubic-bezier(0.4,0,1,1),fill-opacity .1s cubic-bezier(0.4,0,1,1);transition:fill .1s cubic-bezier(0.4,0,1,1),fill-opacity .1s cubic-bezier(0.4,0,1,1);fill:#212121;fill-opacity:.8}.epyt-facade:hover button.epyt-facade-play svg .ytp-large-play-button-bg{-webkit-transition:fill .1s cubic-bezier(0,0,0.2,1),fill-opacity .1s cubic-bezier(0,0,0.2,1);transition:fill .1s cubic-bezier(0,0,0.2,1),fill-opacity .1s cubic-bezier(0,0,0.2,1);fill:#f00;fill-opacity:1}.wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper .epyt-is-override.epyt-facade{position:absolute;top:0;right:0;bottom:0;left:0}.wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper .epyt-is-override.__youtube_prefs_gdpr__{position:relative}.wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper .epyt-is-override.__youtube_prefs_gdpr__{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto}.wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper.epyt-is-override__wrapper:before{padding:0}.wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper.epyt-is-override__wrapper .epyt-is-override.__youtube_prefs_gdpr__{position:relative;top:unset;right:unset;bottom:unset;left:unset}.ytvi-story-container{display:block;max-width:100%}youtube-embed-plus/styles/epyt_mce_wizard_button.css000064400000000363151435171370017121 0ustar00i.epyt_mce_wizard_button--icon { background: transparent url("../images/btnwizoff.png") no-repeat scroll center center !important; } i.epyt_mce_wizard_button--icon:hover { background-image: url("../images/btnwizon.png") !important; } youtube-embed-plus/styles/jquery-ui.css000064400000107270151435171370014300 0ustar00/*! jQuery UI - v1.12.1 - 2016-09-14 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright jQuery Foundation and other contributors; Licensed MIT */ /* Layout helpers ----------------------------------*/ .ui-helper-hidden { display: none; } .ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } .ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; border-collapse: collapse; } .ui-helper-clearfix:after { clear: both; } .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); /* support: IE8 */ } .ui-front { z-index: 100; } /* Interaction Cues ----------------------------------*/ .ui-state-disabled { cursor: default !important; pointer-events: none; } /* Icons ----------------------------------*/ .ui-icon { display: inline-block; vertical-align: middle; margin-top: -.25em; position: relative; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } .ui-widget-icon-block { left: 50%; margin-left: -8px; display: block; } /* Misc visuals ----------------------------------*/ /* Overlays */ .ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; } .ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin: 2px 0 0 0; padding: .5em .5em .5em .7em; font-size: 100%; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; } .ui-autocomplete { position: absolute; top: 0; left: 0; cursor: default; } .ui-menu { list-style: none; padding: 0; margin: 0; display: block; outline: 0; } .ui-menu .ui-menu { position: absolute; } .ui-menu .ui-menu-item { margin: 0; cursor: pointer; /* support: IE10, see #8844 */ list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); } .ui-menu .ui-menu-item-wrapper { position: relative; padding: 3px 1em 3px .4em; } .ui-menu .ui-menu-divider { margin: 5px 0; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } .ui-menu .ui-state-focus, .ui-menu .ui-state-active { margin: -1px; } /* icon support */ .ui-menu-icons { position: relative; } .ui-menu-icons .ui-menu-item-wrapper { padding-left: 2em; } /* left-aligned */ .ui-menu .ui-icon { position: absolute; top: 0; bottom: 0; left: .2em; margin: auto 0; } /* right-aligned */ .ui-menu .ui-menu-icon { left: auto; right: 0; } .ui-button { padding: .4em 1em; display: inline-block; position: relative; line-height: normal; margin-right: .1em; cursor: pointer; vertical-align: middle; text-align: center; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; /* Support: IE <= 11 */ overflow: visible; } .ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } /* to make room for the icon, a width needs to be set here */ .ui-button-icon-only { width: 2em; box-sizing: border-box; text-indent: -9999px; white-space: nowrap; } /* no icon support for input elements */ input.ui-button.ui-button-icon-only { text-indent: 0; } /* button icon element(s) */ .ui-button-icon-only .ui-icon { position: absolute; top: 50%; left: 50%; margin-top: -8px; margin-left: -8px; } .ui-button.ui-icon-notext .ui-icon { padding: 0; width: 2.1em; height: 2.1em; text-indent: -9999px; white-space: nowrap; } input.ui-button.ui-icon-notext .ui-icon { width: auto; height: auto; text-indent: 0; white-space: normal; padding: .4em 1em; } /* workarounds */ /* Support: Firefox 5 - 40 */ input.ui-button::-moz-focus-inner, button.ui-button::-moz-focus-inner { border: 0; padding: 0; } .ui-controlgroup { vertical-align: middle; display: inline-block; } .ui-controlgroup > .ui-controlgroup-item { float: left; margin-left: 0; margin-right: 0; } .ui-controlgroup > .ui-controlgroup-item:focus, .ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { z-index: 9999; } .ui-controlgroup-vertical > .ui-controlgroup-item { display: block; float: none; width: 100%; margin-top: 0; margin-bottom: 0; text-align: left; } .ui-controlgroup-vertical .ui-controlgroup-item { box-sizing: border-box; } .ui-controlgroup .ui-controlgroup-label { padding: .4em 1em; } .ui-controlgroup .ui-controlgroup-label span { font-size: 80%; } .ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { border-left: none; } .ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { border-top: none; } .ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { border-right: none; } .ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { border-bottom: none; } /* Spinner specific style fixes */ .ui-controlgroup-vertical .ui-spinner-input { /* Support: IE8 only, Android < 4.4 only */ width: 75%; width: calc( 100% - 2.4em ); } .ui-controlgroup-vertical .ui-spinner .ui-spinner-up { border-top-style: solid; } .ui-checkboxradio-label .ui-icon-background { box-shadow: inset 1px 1px 1px #ccc; border-radius: .12em; border: none; } .ui-checkboxradio-radio-label .ui-icon-background { width: 16px; height: 16px; border-radius: 1em; overflow: visible; border: none; } .ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, .ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { background-image: none; width: 8px; height: 8px; border-width: 4px; border-style: solid; } .ui-checkboxradio-disabled { pointer-events: none; } .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } .ui-datepicker .ui-datepicker-header { position: relative; padding: .2em 0; } .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position: absolute; top: 2px; width: 1.8em; height: 1.8em; } .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } .ui-datepicker .ui-datepicker-prev { left: 2px; } .ui-datepicker .ui-datepicker-next { right: 2px; } .ui-datepicker .ui-datepicker-prev-hover { left: 1px; } .ui-datepicker .ui-datepicker-next-hover { right: 1px; } .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } .ui-datepicker .ui-datepicker-title select { font-size: 1em; margin: 1px 0; } .ui-datepicker select.ui-datepicker-month, .ui-datepicker select.ui-datepicker-year { width: 45%; } .ui-datepicker table { width: 100%; font-size: .9em; border-collapse: collapse; margin: 0 0 .4em; } .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } .ui-datepicker td { border: 0; padding: 1px; } .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding: 0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width: auto; overflow: visible; } .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float: left; } /* with multiple calendars */ .ui-datepicker.ui-datepicker-multi { width: auto; } .ui-datepicker-multi .ui-datepicker-group { float: left; } .ui-datepicker-multi .ui-datepicker-group table { width: 95%; margin: 0 auto .4em; } .ui-datepicker-multi-2 .ui-datepicker-group { width: 50%; } .ui-datepicker-multi-3 .ui-datepicker-group { width: 33.3%; } .ui-datepicker-multi-4 .ui-datepicker-group { width: 25%; } .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width: 0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear: left; } .ui-datepicker-row-break { clear: both; width: 100%; font-size: 0; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } .ui-datepicker-rtl .ui-datepicker-buttonpane { clear: right; } .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, .ui-datepicker-rtl .ui-datepicker-group { float: right; } .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width: 0; border-left-width: 1px; } /* Icons */ .ui-datepicker .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; left: .5em; top: .3em; } .ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; outline: 0; } .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } .ui-dialog .ui-dialog-title { float: left; margin: .1em 0; white-space: nowrap; width: 90%; overflow: hidden; text-overflow: ellipsis; } .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 20px; margin: -10px 0 0 0; padding: 1px; height: 20px; } .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; } .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin-top: .5em; padding: .3em 1em .5em .4em; } .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } .ui-dialog .ui-resizable-n { height: 2px; top: 0; } .ui-dialog .ui-resizable-e { width: 2px; right: 0; } .ui-dialog .ui-resizable-s { height: 2px; bottom: 0; } .ui-dialog .ui-resizable-w { width: 2px; left: 0; } .ui-dialog .ui-resizable-se, .ui-dialog .ui-resizable-sw, .ui-dialog .ui-resizable-ne, .ui-dialog .ui-resizable-nw { width: 7px; height: 7px; } .ui-dialog .ui-resizable-se { right: 0; bottom: 0; } .ui-dialog .ui-resizable-sw { left: 0; bottom: 0; } .ui-dialog .ui-resizable-ne { right: 0; top: 0; } .ui-dialog .ui-resizable-nw { left: 0; top: 0; } .ui-draggable .ui-dialog-titlebar { cursor: move; } .ui-draggable-handle { -ms-touch-action: none; touch-action: none; } .ui-resizable { position: relative; } .ui-resizable-handle { position: absolute; font-size: 0.1px; display: block; -ms-touch-action: none; touch-action: none; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px; } .ui-progressbar { height: 2em; text-align: left; overflow: hidden; } .ui-progressbar .ui-progressbar-value { margin: -1px; height: 100%; } .ui-progressbar .ui-progressbar-overlay { background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); height: 100%; filter: alpha(opacity=25); /* support: IE8 */ opacity: 0.25; } .ui-progressbar-indeterminate .ui-progressbar-value { background-image: none; } .ui-selectable { -ms-touch-action: none; touch-action: none; } .ui-selectable-helper { position: absolute; z-index: 100; border: 1px dotted black; } .ui-selectmenu-menu { padding: 0; margin: 0; position: absolute; top: 0; left: 0; display: none; } .ui-selectmenu-menu .ui-menu { overflow: auto; overflow-x: hidden; padding-bottom: 1px; } .ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { font-size: 1em; font-weight: bold; line-height: 1.5; padding: 2px 0.4em; margin: 0.5em 0 0 0; height: auto; border: 0; } .ui-selectmenu-open { display: block; } .ui-selectmenu-text { display: block; margin-right: 20px; overflow: hidden; text-overflow: ellipsis; } .ui-selectmenu-button.ui-button { text-align: left; white-space: nowrap; width: 14em; } .ui-selectmenu-icon.ui-icon { float: right; margin-top: 0; } .ui-slider { position: relative; text-align: left; } .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; -ms-touch-action: none; touch-action: none; } .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } /* support: IE8 - See #6727 */ .ui-slider.ui-state-disabled .ui-slider-handle, .ui-slider.ui-state-disabled .ui-slider-range { filter: inherit; } .ui-slider-horizontal { height: .8em; } .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } .ui-slider-horizontal .ui-slider-range-min { left: 0; } .ui-slider-horizontal .ui-slider-range-max { right: 0; } .ui-slider-vertical { width: .8em; height: 100px; } .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; } .ui-sortable-handle { -ms-touch-action: none; touch-action: none; } .ui-spinner { position: relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } .ui-spinner-input { border: none; background: none; color: inherit; padding: .222em 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 2em; } .ui-spinner-button { width: 1.6em; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } /* more specificity required here to override default borders */ .ui-spinner a.ui-spinner-button { border-top-style: none; border-bottom-style: none; border-right-style: none; } .ui-spinner-up { top: 0; } .ui-spinner-down { bottom: 0; } .ui-tabs { position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ padding: .2em; } .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom-width: 0; padding: 0; white-space: nowrap; } .ui-tabs .ui-tabs-nav .ui-tabs-anchor { float: left; padding: .5em 1em; text-decoration: none; } .ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } .ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, .ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { cursor: text; } .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { cursor: pointer; } .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tooltip { padding: 8px; position: absolute; z-index: 9999; max-width: 300px; } body .ui-tooltip { border-width: 2px; } /* Component containers ----------------------------------*/ .ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } .ui-widget.ui-widget-content { border: 1px solid #d3d3d3; } .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff; color: #222222; } .ui-widget-content a { color: #222222; } .ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x; color: #222222; font-weight: bold; } .ui-widget-header a { color: #222222; } /* Interaction states ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, /* We use html here because we need a greater specificity to make sure disabled works properly when clicked or hovered */ html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { border: 1px solid #d3d3d3; background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #555555; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited, a.ui-button, a:link.ui-button, a:visited.ui-button, .ui-button { color: #555555; text-decoration: none; } .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus, .ui-button:hover, .ui-button:focus { border: 1px solid #999999; background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited, .ui-state-focus a, .ui-state-focus a:hover, .ui-state-focus a:link, .ui-state-focus a:visited, a.ui-button:hover, a.ui-button:focus { color: #212121; text-decoration: none; } .ui-visual-focus { box-shadow: 0 0 3px 1px rgb(94, 158, 214); } .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { border: 1px solid #aaaaaa; background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; font-weight: normal; color: #212121; } .ui-icon-background, .ui-state-active .ui-icon-background { border: #aaaaaa; background-color: #212121; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } /* Interaction Cues ----------------------------------*/ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { border: 1px solid #fcefa1; background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x; color: #363636; } .ui-state-checked { border: 1px solid #fcefa1; background: #fbf9ee; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a, .ui-widget-header .ui-state-highlight a { color: #363636; } .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { border: 1px solid #cd0a0a; background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x; color: #cd0a0a; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); /* support: IE8 */ font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); /* support: IE8 */ background-image: none; } .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ } /* Icons ----------------------------------*/ /* states and images */ .ui-icon { width: 16px; height: 16px; } .ui-icon, .ui-widget-content .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-widget-header .ui-icon { background-image: url("images/ui-icons_222222_256x240.png"); } .ui-state-hover .ui-icon, .ui-state-focus .ui-icon, .ui-button:hover .ui-icon, .ui-button:focus .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-active .ui-icon, .ui-button:active .ui-icon { background-image: url("images/ui-icons_454545_256x240.png"); } .ui-state-highlight .ui-icon, .ui-button .ui-state-highlight.ui-icon { background-image: url("images/ui-icons_2e83ff_256x240.png"); } .ui-state-error .ui-icon, .ui-state-error-text .ui-icon { background-image: url("images/ui-icons_cd0a0a_256x240.png"); } .ui-button .ui-icon { background-image: url("images/ui-icons_888888_256x240.png"); } /* positioning */ .ui-icon-blank { background-position: 16px 16px; } .ui-icon-caret-1-n { background-position: 0 0; } .ui-icon-caret-1-ne { background-position: -16px 0; } .ui-icon-caret-1-e { background-position: -32px 0; } .ui-icon-caret-1-se { background-position: -48px 0; } .ui-icon-caret-1-s { background-position: -65px 0; } .ui-icon-caret-1-sw { background-position: -80px 0; } .ui-icon-caret-1-w { background-position: -96px 0; } .ui-icon-caret-1-nw { background-position: -112px 0; } .ui-icon-caret-2-n-s { background-position: -128px 0; } .ui-icon-caret-2-e-w { background-position: -144px 0; } .ui-icon-triangle-1-n { background-position: 0 -16px; } .ui-icon-triangle-1-ne { background-position: -16px -16px; } .ui-icon-triangle-1-e { background-position: -32px -16px; } .ui-icon-triangle-1-se { background-position: -48px -16px; } .ui-icon-triangle-1-s { background-position: -65px -16px; } .ui-icon-triangle-1-sw { background-position: -80px -16px; } .ui-icon-triangle-1-w { background-position: -96px -16px; } .ui-icon-triangle-1-nw { background-position: -112px -16px; } .ui-icon-triangle-2-n-s { background-position: -128px -16px; } .ui-icon-triangle-2-e-w { background-position: -144px -16px; } .ui-icon-arrow-1-n { background-position: 0 -32px; } .ui-icon-arrow-1-ne { background-position: -16px -32px; } .ui-icon-arrow-1-e { background-position: -32px -32px; } .ui-icon-arrow-1-se { background-position: -48px -32px; } .ui-icon-arrow-1-s { background-position: -65px -32px; } .ui-icon-arrow-1-sw { background-position: -80px -32px; } .ui-icon-arrow-1-w { background-position: -96px -32px; } .ui-icon-arrow-1-nw { background-position: -112px -32px; } .ui-icon-arrow-2-n-s { background-position: -128px -32px; } .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } .ui-icon-arrow-2-e-w { background-position: -160px -32px; } .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } .ui-icon-arrowstop-1-n { background-position: -192px -32px; } .ui-icon-arrowstop-1-e { background-position: -208px -32px; } .ui-icon-arrowstop-1-s { background-position: -224px -32px; } .ui-icon-arrowstop-1-w { background-position: -240px -32px; } .ui-icon-arrowthick-1-n { background-position: 1px -48px; } .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } .ui-icon-arrowthick-1-e { background-position: -32px -48px; } .ui-icon-arrowthick-1-se { background-position: -48px -48px; } .ui-icon-arrowthick-1-s { background-position: -64px -48px; } .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } .ui-icon-arrowthick-1-w { background-position: -96px -48px; } .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } .ui-icon-arrow-4 { background-position: 0 -80px; } .ui-icon-arrow-4-diag { background-position: -16px -80px; } .ui-icon-extlink { background-position: -32px -80px; } .ui-icon-newwin { background-position: -48px -80px; } .ui-icon-refresh { background-position: -64px -80px; } .ui-icon-shuffle { background-position: -80px -80px; } .ui-icon-transfer-e-w { background-position: -96px -80px; } .ui-icon-transferthick-e-w { background-position: -112px -80px; } .ui-icon-folder-collapsed { background-position: 0 -96px; } .ui-icon-folder-open { background-position: -16px -96px; } .ui-icon-document { background-position: -32px -96px; } .ui-icon-document-b { background-position: -48px -96px; } .ui-icon-note { background-position: -64px -96px; } .ui-icon-mail-closed { background-position: -80px -96px; } .ui-icon-mail-open { background-position: -96px -96px; } .ui-icon-suitcase { background-position: -112px -96px; } .ui-icon-comment { background-position: -128px -96px; } .ui-icon-person { background-position: -144px -96px; } .ui-icon-print { background-position: -160px -96px; } .ui-icon-trash { background-position: -176px -96px; } .ui-icon-locked { background-position: -192px -96px; } .ui-icon-unlocked { background-position: -208px -96px; } .ui-icon-bookmark { background-position: -224px -96px; } .ui-icon-tag { background-position: -240px -96px; } .ui-icon-home { background-position: 0 -112px; } .ui-icon-flag { background-position: -16px -112px; } .ui-icon-calendar { background-position: -32px -112px; } .ui-icon-cart { background-position: -48px -112px; } .ui-icon-pencil { background-position: -64px -112px; } .ui-icon-clock { background-position: -80px -112px; } .ui-icon-disk { background-position: -96px -112px; } .ui-icon-calculator { background-position: -112px -112px; } .ui-icon-zoomin { background-position: -128px -112px; } .ui-icon-zoomout { background-position: -144px -112px; } .ui-icon-search { background-position: -160px -112px; } .ui-icon-wrench { background-position: -176px -112px; } .ui-icon-gear { background-position: -192px -112px; } .ui-icon-heart { background-position: -208px -112px; } .ui-icon-star { background-position: -224px -112px; } .ui-icon-link { background-position: -240px -112px; } .ui-icon-cancel { background-position: 0 -128px; } .ui-icon-plus { background-position: -16px -128px; } .ui-icon-plusthick { background-position: -32px -128px; } .ui-icon-minus { background-position: -48px -128px; } .ui-icon-minusthick { background-position: -64px -128px; } .ui-icon-close { background-position: -80px -128px; } .ui-icon-closethick { background-position: -96px -128px; } .ui-icon-key { background-position: -112px -128px; } .ui-icon-lightbulb { background-position: -128px -128px; } .ui-icon-scissors { background-position: -144px -128px; } .ui-icon-clipboard { background-position: -160px -128px; } .ui-icon-copy { background-position: -176px -128px; } .ui-icon-contact { background-position: -192px -128px; } .ui-icon-image { background-position: -208px -128px; } .ui-icon-video { background-position: -224px -128px; } .ui-icon-script { background-position: -240px -128px; } .ui-icon-alert { background-position: 0 -144px; } .ui-icon-info { background-position: -16px -144px; } .ui-icon-notice { background-position: -32px -144px; } .ui-icon-help { background-position: -48px -144px; } .ui-icon-check { background-position: -64px -144px; } .ui-icon-bullet { background-position: -80px -144px; } .ui-icon-radio-on { background-position: -96px -144px; } .ui-icon-radio-off { background-position: -112px -144px; } .ui-icon-pin-w { background-position: -128px -144px; } .ui-icon-pin-s { background-position: -144px -144px; } .ui-icon-play { background-position: 0 -160px; } .ui-icon-pause { background-position: -16px -160px; } .ui-icon-seek-next { background-position: -32px -160px; } .ui-icon-seek-prev { background-position: -48px -160px; } .ui-icon-seek-end { background-position: -64px -160px; } .ui-icon-seek-start { background-position: -80px -160px; } /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ .ui-icon-seek-first { background-position: -80px -160px; } .ui-icon-stop { background-position: -96px -160px; } .ui-icon-eject { background-position: -112px -160px; } .ui-icon-volume-off { background-position: -128px -160px; } .ui-icon-volume-on { background-position: -144px -160px; } .ui-icon-power { background-position: 0 -176px; } .ui-icon-signal-diag { background-position: -16px -176px; } .ui-icon-signal { background-position: -32px -176px; } .ui-icon-battery-0 { background-position: -48px -176px; } .ui-icon-battery-1 { background-position: -64px -176px; } .ui-icon-battery-2 { background-position: -80px -176px; } .ui-icon-battery-3 { background-position: -96px -176px; } .ui-icon-circle-plus { background-position: 0 -192px; } .ui-icon-circle-minus { background-position: -16px -192px; } .ui-icon-circle-close { background-position: -32px -192px; } .ui-icon-circle-triangle-e { background-position: -48px -192px; } .ui-icon-circle-triangle-s { background-position: -64px -192px; } .ui-icon-circle-triangle-w { background-position: -80px -192px; } .ui-icon-circle-triangle-n { background-position: -96px -192px; } .ui-icon-circle-arrow-e { background-position: -112px -192px; } .ui-icon-circle-arrow-s { background-position: -128px -192px; } .ui-icon-circle-arrow-w { background-position: -144px -192px; } .ui-icon-circle-arrow-n { background-position: -160px -192px; } .ui-icon-circle-zoomin { background-position: -176px -192px; } .ui-icon-circle-zoomout { background-position: -192px -192px; } .ui-icon-circle-check { background-position: -208px -192px; } .ui-icon-circlesmall-plus { background-position: 0 -208px; } .ui-icon-circlesmall-minus { background-position: -16px -208px; } .ui-icon-circlesmall-close { background-position: -32px -208px; } .ui-icon-squaresmall-plus { background-position: -48px -208px; } .ui-icon-squaresmall-minus { background-position: -64px -208px; } .ui-icon-squaresmall-close { background-position: -80px -208px; } .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } .ui-icon-grip-solid-vertical { background-position: -32px -224px; } .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } .ui-icon-grip-diagonal-se { background-position: -80px -224px; } /* Misc visuals ----------------------------------*/ /* Corner radius */ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { border-top-left-radius: 4px; } .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { border-top-right-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { border-bottom-left-radius: 4px; } .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { border-bottom-right-radius: 4px; } /* Overlays */ .ui-widget-overlay { background: #aaaaaa; opacity: .3; filter: Alpha(Opacity=30); /* support: IE8 */ } .ui-widget-shadow { -webkit-box-shadow: -8px -8px 8px #aaaaaa; box-shadow: -8px -8px 8px #aaaaaa; } youtube-embed-plus/styles/alertify/alertify.rtl.min.css000064400000050270151435171370017363 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer{position:fixed;z-index:1981;top:0;left:0;bottom:0;right:0;padding:0;margin:0;background-color:#252525;opacity:.5}.alertify .ajs-modal{position:fixed;top:0;left:0;right:0;bottom:0;padding:0;overflow-y:auto;z-index:1981}.alertify .ajs-dialog{position:relative;margin:5% auto;min-height:110px;max-width:500px;padding:24px 24px 0 24px;outline:0;background-color:#fff}.alertify .ajs-dialog.ajs-capture:before{content:'';position:absolute;top:0;left:0;bottom:0;right:0;display:block;z-index:1}.alertify .ajs-reset{position:absolute!important;display:inline!important;width:0!important;height:0!important;opacity:0!important}.alertify .ajs-commands{position:absolute;left:4px;margin:-14px 0 0 24px;z-index:2}.alertify .ajs-commands button{display:none;width:10px;height:10px;margin-right:10px;padding:10px;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.alertify .ajs-commands button.ajs-close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAh0lEQVQYlY2QsQ0EIQwEB9cBAR1CJUaI/gigDnwR6NBL/7/xWLNrZ2b8EwGotVpr7eOitWa1VjugiNB7R1UPrKrWe0dEAHBbXUqxMQbeewDmnHjvyTm7C3zDwAUd9c63YQdUVdu6EAJzzquz7HXvTiklt+H9DQFYaxFjvDqllFyMkbXWvfpXHjJrWFgdBq/hAAAAAElFTkSuQmCC)}.alertify .ajs-commands button.ajs-maximize{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAOUlEQVQYlWP8//8/AzGAhYGBgaG4uBiv6t7eXkYmooxjYGAgWiELsvHYFMCcRX2rSXcjoSBiJDbAAeD+EGu+8BZcAAAAAElFTkSuQmCC)}.alertify .ajs-header{margin:-24px;margin-bottom:0;padding:16px 24px;background-color:#fff}.alertify .ajs-body{min-height:56px}.alertify .ajs-body .ajs-content{padding:16px 16px 16px 24px}.alertify .ajs-footer{padding:4px;margin-right:-24px;margin-left:-24px;min-height:43px;background-color:#fff}.alertify .ajs-footer .ajs-buttons.ajs-primary{text-align:left}.alertify .ajs-footer .ajs-buttons.ajs-primary .ajs-button{margin:4px}.alertify .ajs-footer .ajs-buttons.ajs-auxiliary{float:right;clear:none;text-align:right}.alertify .ajs-footer .ajs-buttons.ajs-auxiliary .ajs-button{margin:4px}.alertify .ajs-footer .ajs-buttons .ajs-button{min-width:88px;min-height:35px}.alertify .ajs-handle{position:absolute;display:none;width:10px;height:10px;left:0;bottom:0;z-index:1;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMS8xNEDQYmMAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQ0lEQVQYlaXNMQoAIAxD0dT7H657l0KX3iJuUlBUNOsPPCGJm7VDp6ryeMxMuDsAQH7owW3pyn3RS26iKxERMLN3ugOaAkaL3sWVigAAAABJRU5ErkJggg==);-webkit-transform:scaleX(-1);transform:scaleX(-1);cursor:sw-resize}.alertify.ajs-no-overflow .ajs-body .ajs-content{overflow:hidden!important}.alertify.ajs-no-padding.ajs-maximized .ajs-body .ajs-content{right:0;left:0;padding:0}.alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body{margin-right:-24px;margin-left:-24px}.alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body .ajs-content{padding:0}.alertify.ajs-no-padding.ajs-resizable .ajs-body .ajs-content{right:0;left:0}.alertify.ajs-maximizable .ajs-commands button.ajs-maximize,.alertify.ajs-maximizable .ajs-commands button.ajs-restore{display:inline-block}.alertify.ajs-closable .ajs-commands button.ajs-close{display:inline-block}.alertify.ajs-maximized .ajs-dialog{width:100%!important;height:100%!important;max-width:none!important;margin:0 auto!important;top:0!important;right:0!important}.alertify.ajs-maximized.ajs-modeless .ajs-modal{position:fixed!important;min-height:100%!important;max-height:none!important;margin:0!important}.alertify.ajs-maximized .ajs-commands button.ajs-maximize{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAASklEQVQYlZWQ0QkAMQhDtXRincOZX78KVtrDCwgqJNEoIB3MPLj7lRUROlpyVXGzby6zWuY+kz6tj5sBMTMAyVV3/595RbOh3cAXsww1raeiOcoAAAAASUVORK5CYII=)}.alertify.ajs-maximized .ajs-dialog,.alertify.ajs-resizable .ajs-dialog{padding:0}.alertify.ajs-maximized .ajs-commands,.alertify.ajs-resizable .ajs-commands{margin:14px 0 0 24px}.alertify.ajs-maximized .ajs-header,.alertify.ajs-resizable .ajs-header{position:absolute;top:0;right:0;left:0;margin:0;padding:16px 24px}.alertify.ajs-maximized .ajs-body,.alertify.ajs-resizable .ajs-body{min-height:224px;display:inline-block}.alertify.ajs-maximized .ajs-body .ajs-content,.alertify.ajs-resizable .ajs-body .ajs-content{position:absolute;top:50px;left:24px;bottom:50px;right:24px;overflow:auto}.alertify.ajs-maximized .ajs-footer,.alertify.ajs-resizable .ajs-footer{position:absolute;right:0;left:0;bottom:0;margin:0}.alertify.ajs-resizable:not(.ajs-maximized) .ajs-dialog{min-width:548px}.alertify.ajs-resizable:not(.ajs-maximized) .ajs-handle{display:block}.alertify.ajs-movable:not(.ajs-maximized) .ajs-header{cursor:move}.alertify.ajs-modeless .ajs-dimmer,.alertify.ajs-modeless .ajs-reset{display:none}.alertify.ajs-modeless .ajs-modal{overflow:visible;max-width:none;max-height:0}.alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin{display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQklEQVQYlcWPMQ4AIAwCqU9u38GbcbHRWN1MvKQDhQFMEpKImGJA0gCgnYw0V0rwxseg5erT4oSkQVI5d9f+e9+xA0NbLpWfitPXAAAAAElFTkSuQmCC)}.alertify.ajs-modeless.ajs-unpinned .ajs-modal{position:absolute}.alertify.ajs-modeless.ajs-unpinned .ajs-commands button.ajs-pin{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAO0lEQVQYlWP8//8/AzGAiShV6AqLi4txGs+CLoBLMYbC3t5eRmyaWfBZhwwYkX2NTxPRvibKjRhW4wMAhxkYGbLu3pEAAAAASUVORK5CYII=)}.alertify.ajs-modeless:not(.ajs-unpinned) .ajs-body{max-height:500px;overflow:auto}.alertify.ajs-basic .ajs-header{opacity:0}.alertify.ajs-basic .ajs-footer{visibility:hidden}.alertify.ajs-frameless .ajs-header{position:absolute;top:0;right:0;left:0;min-height:60px;margin:0;padding:0;opacity:0;z-index:1}.alertify.ajs-frameless .ajs-footer{display:none}.alertify.ajs-frameless .ajs-body .ajs-content{position:absolute;top:0;left:0;bottom:0;right:0}.alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog{padding-top:0}.alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog .ajs-commands{margin-top:0}.ajs-no-overflow{overflow:hidden!important;outline:0}.ajs-no-overflow.ajs-fixed{position:fixed;top:0;left:0;bottom:0;right:0;overflow-y:scroll!important}.ajs-no-selection,.ajs-no-selection *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:568px){.alertify .ajs-dialog{min-width:150px}.alertify:not(.ajs-maximized) .ajs-modal{padding:0 5%}.alertify:not(.ajs-maximized).ajs-resizable .ajs-dialog{min-width:initial;min-width:auto}}@-moz-document url-prefix(){.alertify button:focus{outline:1px dotted #3593d2}}.alertify .ajs-dimmer,.alertify .ajs-modal{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-property:opacity,visibility;transition-property:opacity,visibility;-webkit-transition-timing-function:linear;transition-timing-function:linear;-webkit-transition-duration:250ms;transition-duration:250ms}.alertify.ajs-hidden .ajs-dimmer,.alertify.ajs-hidden .ajs-modal{visibility:hidden;opacity:0}.alertify.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-duration:.5s;animation-duration:.5s}.alertify.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-duration:250ms;animation-duration:250ms}.alertify .ajs-dialog.ajs-shake{-webkit-animation-name:ajs-shake;animation-name:ajs-shake;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}@-webkit-keyframes ajs-shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}}@keyframes ajs-shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}}.alertify.ajs-slide.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-slideIn;animation-name:ajs-slideIn;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1.275);animation-timing-function:cubic-bezier(.175,.885,.32,1.275)}.alertify.ajs-slide.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-slideOut;animation-name:ajs-slideOut;-webkit-animation-timing-function:cubic-bezier(.6,-.28,.735,.045);animation-timing-function:cubic-bezier(.6,-.28,.735,.045)}.alertify.ajs-zoom.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-zoomIn;animation-name:ajs-zoomIn}.alertify.ajs-zoom.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-zoomOut;animation-name:ajs-zoomOut}.alertify.ajs-fade.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-fadeIn;animation-name:ajs-fadeIn}.alertify.ajs-fade.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-fadeOut;animation-name:ajs-fadeOut}.alertify.ajs-pulse.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-pulseIn;animation-name:ajs-pulseIn}.alertify.ajs-pulse.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-pulseOut;animation-name:ajs-pulseOut}.alertify.ajs-flipx.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-flipInX;animation-name:ajs-flipInX}.alertify.ajs-flipx.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-flipOutX;animation-name:ajs-flipOutX}.alertify.ajs-flipy.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-flipInY;animation-name:ajs-flipInY}.alertify.ajs-flipy.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-flipOutY;animation-name:ajs-flipOutY}@-webkit-keyframes ajs-pulseIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes ajs-pulseIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes ajs-pulseOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes ajs-pulseOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@-webkit-keyframes ajs-zoomIn{0%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes ajs-zoomIn{0%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes ajs-zoomOut{0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}100%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}}@keyframes ajs-zoomOut{0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}100%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}}@-webkit-keyframes ajs-fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes ajs-fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes ajs-fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes ajs-fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes ajs-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-90deg);transform:perspective(400px) rotate3d(1,0,0,-90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,20deg);transform:perspective(400px) rotate3d(1,0,0,20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-10deg);transform:perspective(400px) rotate3d(1,0,0,-10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,5deg);transform:perspective(400px) rotate3d(1,0,0,5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes ajs-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-90deg);transform:perspective(400px) rotate3d(1,0,0,-90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,20deg);transform:perspective(400px) rotate3d(1,0,0,20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-10deg);transform:perspective(400px) rotate3d(1,0,0,-10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,5deg);transform:perspective(400px) rotate3d(1,0,0,5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes ajs-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,20deg);transform:perspective(400px) rotate3d(1,0,0,20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-90deg);transform:perspective(400px) rotate3d(1,0,0,-90deg);opacity:0}}@keyframes ajs-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,20deg);transform:perspective(400px) rotate3d(1,0,0,20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-90deg);transform:perspective(400px) rotate3d(1,0,0,-90deg);opacity:0}}@-webkit-keyframes ajs-flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,-90deg);transform:perspective(400px) rotate3d(0,-1,0,-90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,20deg);transform:perspective(400px) rotate3d(0,-1,0,20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,-10deg);transform:perspective(400px) rotate3d(0,-1,0,-10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,5deg);transform:perspective(400px) rotate3d(0,-1,0,5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes ajs-flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,-90deg);transform:perspective(400px) rotate3d(0,-1,0,-90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,20deg);transform:perspective(400px) rotate3d(0,-1,0,20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,-10deg);transform:perspective(400px) rotate3d(0,-1,0,-10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,5deg);transform:perspective(400px) rotate3d(0,-1,0,5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes ajs-flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,15deg);transform:perspective(400px) rotate3d(0,-1,0,15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,-90deg);transform:perspective(400px) rotate3d(0,-1,0,-90deg);opacity:0}}@keyframes ajs-flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,15deg);transform:perspective(400px) rotate3d(0,-1,0,15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,-1,0,-90deg);transform:perspective(400px) rotate3d(0,-1,0,-90deg);opacity:0}}@-webkit-keyframes ajs-slideIn{0%{margin-top:-100%}100%{margin-top:5%}}@keyframes ajs-slideIn{0%{margin-top:-100%}100%{margin-top:5%}}@-webkit-keyframes ajs-slideOut{0%{margin-top:5%}100%{margin-top:-100%}}@keyframes ajs-slideOut{0%{margin-top:5%}100%{margin-top:-100%}}.alertify-notifier{position:fixed;width:0;overflow:visible;z-index:1982;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.alertify-notifier .ajs-message{position:relative;width:260px;max-height:0;padding:0;opacity:0;margin:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-transition-timing-function:linear;transition-timing-function:linear}.alertify-notifier .ajs-message.ajs-visible{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.275);transition-timing-function:cubic-bezier(.175,.885,.32,1.275);opacity:1;max-height:100%;padding:15px;margin-top:10px}.alertify-notifier .ajs-message.ajs-success{background:rgba(91,189,114,.95)}.alertify-notifier .ajs-message.ajs-error{background:rgba(217,92,92,.95)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95)}.alertify-notifier .ajs-message .ajs-close{position:absolute;top:0;left:0;width:16px;height:16px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAFBJREFUGBl1j0EKADEIA+ve/P9f9bh1hEihNBfjVCO1v7RKVqJK4h8gM5cAPR42AkQEpSXPwMTyoi13n5N9YqJehm3Fnr7nL1D0ZEbD5OubGyC7a9gx+9eNAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:center center;background-color:rgba(0,0,0,.5);border-top-left-radius:2px}.alertify-notifier.ajs-top{top:10px}.alertify-notifier.ajs-bottom{bottom:10px}.alertify-notifier.ajs-right{left:10px}.alertify-notifier.ajs-right .ajs-message{left:-320px}.alertify-notifier.ajs-right .ajs-message.ajs-visible{left:290px}.alertify-notifier.ajs-left{right:10px}.alertify-notifier.ajs-left .ajs-message{right:-300px}.alertify-notifier.ajs-left .ajs-message.ajs-visible{right:0}.alertify-notifier.ajs-center{right:50%}.alertify-notifier.ajs-center .ajs-message{-webkit-transform:translateX(50%);transform:translateX(50%)}.alertify-notifier.ajs-center .ajs-message.ajs-visible{right:50%;-webkit-transition-timing-function:cubic-bezier(.57,.43,.1,.65);transition-timing-function:cubic-bezier(.57,.43,.1,.65)}.alertify-notifier.ajs-center.ajs-top .ajs-message{top:-300px}.alertify-notifier.ajs-center.ajs-top .ajs-message.ajs-visible{top:0}.alertify-notifier.ajs-center.ajs-bottom .ajs-message{bottom:-300px}.alertify-notifier.ajs-center.ajs-bottom .ajs-message.ajs-visible{bottom:0}youtube-embed-plus/styles/alertify/alertify.min.css000064400000050237151435171370016566 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer{position:fixed;z-index:1981;top:0;right:0;bottom:0;left:0;padding:0;margin:0;background-color:#252525;opacity:.5}.alertify .ajs-modal{position:fixed;top:0;right:0;left:0;bottom:0;padding:0;overflow-y:auto;z-index:1981}.alertify .ajs-dialog{position:relative;margin:5% auto;min-height:110px;max-width:500px;padding:24px 24px 0 24px;outline:0;background-color:#fff}.alertify .ajs-dialog.ajs-capture:before{content:'';position:absolute;top:0;right:0;bottom:0;left:0;display:block;z-index:1}.alertify .ajs-reset{position:absolute!important;display:inline!important;width:0!important;height:0!important;opacity:0!important}.alertify .ajs-commands{position:absolute;right:4px;margin:-14px 24px 0 0;z-index:2}.alertify .ajs-commands button{display:none;width:10px;height:10px;margin-left:10px;padding:10px;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.alertify .ajs-commands button.ajs-close{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAh0lEQVQYlY2QsQ0EIQwEB9cBAR1CJUaI/gigDnwR6NBL/7/xWLNrZ2b8EwGotVpr7eOitWa1VjugiNB7R1UPrKrWe0dEAHBbXUqxMQbeewDmnHjvyTm7C3zDwAUd9c63YQdUVdu6EAJzzquz7HXvTiklt+H9DQFYaxFjvDqllFyMkbXWvfpXHjJrWFgdBq/hAAAAAElFTkSuQmCC)}.alertify .ajs-commands button.ajs-maximize{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAOUlEQVQYlWP8//8/AzGAhYGBgaG4uBiv6t7eXkYmooxjYGAgWiELsvHYFMCcRX2rSXcjoSBiJDbAAeD+EGu+8BZcAAAAAElFTkSuQmCC)}.alertify .ajs-header{margin:-24px;margin-bottom:0;padding:16px 24px;background-color:#fff}.alertify .ajs-body{min-height:56px}.alertify .ajs-body .ajs-content{padding:16px 24px 16px 16px}.alertify .ajs-footer{padding:4px;margin-left:-24px;margin-right:-24px;min-height:43px;background-color:#fff}.alertify .ajs-footer .ajs-buttons.ajs-primary{text-align:right}.alertify .ajs-footer .ajs-buttons.ajs-primary .ajs-button{margin:4px}.alertify .ajs-footer .ajs-buttons.ajs-auxiliary{float:left;clear:none;text-align:left}.alertify .ajs-footer .ajs-buttons.ajs-auxiliary .ajs-button{margin:4px}.alertify .ajs-footer .ajs-buttons .ajs-button{min-width:88px;min-height:35px}.alertify .ajs-handle{position:absolute;display:none;width:10px;height:10px;right:0;bottom:0;z-index:1;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMS8xNEDQYmMAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQ0lEQVQYlaXNMQoAIAxD0dT7H657l0KX3iJuUlBUNOsPPCGJm7VDp6ryeMxMuDsAQH7owW3pyn3RS26iKxERMLN3ugOaAkaL3sWVigAAAABJRU5ErkJggg==);-webkit-transform:scaleX(1);transform:scaleX(1);cursor:se-resize}.alertify.ajs-no-overflow .ajs-body .ajs-content{overflow:hidden!important}.alertify.ajs-no-padding.ajs-maximized .ajs-body .ajs-content{left:0;right:0;padding:0}.alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body{margin-left:-24px;margin-right:-24px}.alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body .ajs-content{padding:0}.alertify.ajs-no-padding.ajs-resizable .ajs-body .ajs-content{left:0;right:0}.alertify.ajs-maximizable .ajs-commands button.ajs-maximize,.alertify.ajs-maximizable .ajs-commands button.ajs-restore{display:inline-block}.alertify.ajs-closable .ajs-commands button.ajs-close{display:inline-block}.alertify.ajs-maximized .ajs-dialog{width:100%!important;height:100%!important;max-width:none!important;margin:0 auto!important;top:0!important;left:0!important}.alertify.ajs-maximized.ajs-modeless .ajs-modal{position:fixed!important;min-height:100%!important;max-height:none!important;margin:0!important}.alertify.ajs-maximized .ajs-commands button.ajs-maximize{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAASklEQVQYlZWQ0QkAMQhDtXRincOZX78KVtrDCwgqJNEoIB3MPLj7lRUROlpyVXGzby6zWuY+kz6tj5sBMTMAyVV3/595RbOh3cAXsww1raeiOcoAAAAASUVORK5CYII=)}.alertify.ajs-maximized .ajs-dialog,.alertify.ajs-resizable .ajs-dialog{padding:0}.alertify.ajs-maximized .ajs-commands,.alertify.ajs-resizable .ajs-commands{margin:14px 24px 0 0}.alertify.ajs-maximized .ajs-header,.alertify.ajs-resizable .ajs-header{position:absolute;top:0;left:0;right:0;margin:0;padding:16px 24px}.alertify.ajs-maximized .ajs-body,.alertify.ajs-resizable .ajs-body{min-height:224px;display:inline-block}.alertify.ajs-maximized .ajs-body .ajs-content,.alertify.ajs-resizable .ajs-body .ajs-content{position:absolute;top:50px;right:24px;bottom:50px;left:24px;overflow:auto}.alertify.ajs-maximized .ajs-footer,.alertify.ajs-resizable .ajs-footer{position:absolute;left:0;right:0;bottom:0;margin:0}.alertify.ajs-resizable:not(.ajs-maximized) .ajs-dialog{min-width:548px}.alertify.ajs-resizable:not(.ajs-maximized) .ajs-handle{display:block}.alertify.ajs-movable:not(.ajs-maximized) .ajs-header{cursor:move}.alertify.ajs-modeless .ajs-dimmer,.alertify.ajs-modeless .ajs-reset{display:none}.alertify.ajs-modeless .ajs-modal{overflow:visible;max-width:none;max-height:0}.alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin{display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQklEQVQYlcWPMQ4AIAwCqU9u38GbcbHRWN1MvKQDhQFMEpKImGJA0gCgnYw0V0rwxseg5erT4oSkQVI5d9f+e9+xA0NbLpWfitPXAAAAAElFTkSuQmCC)}.alertify.ajs-modeless.ajs-unpinned .ajs-modal{position:absolute}.alertify.ajs-modeless.ajs-unpinned .ajs-commands button.ajs-pin{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAO0lEQVQYlWP8//8/AzGAiShV6AqLi4txGs+CLoBLMYbC3t5eRmyaWfBZhwwYkX2NTxPRvibKjRhW4wMAhxkYGbLu3pEAAAAASUVORK5CYII=)}.alertify.ajs-modeless:not(.ajs-unpinned) .ajs-body{max-height:500px;overflow:auto}.alertify.ajs-basic .ajs-header{opacity:0}.alertify.ajs-basic .ajs-footer{visibility:hidden}.alertify.ajs-frameless .ajs-header{position:absolute;top:0;left:0;right:0;min-height:60px;margin:0;padding:0;opacity:0;z-index:1}.alertify.ajs-frameless .ajs-footer{display:none}.alertify.ajs-frameless .ajs-body .ajs-content{position:absolute;top:0;right:0;bottom:0;left:0}.alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog{padding-top:0}.alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog .ajs-commands{margin-top:0}.ajs-no-overflow{overflow:hidden!important;outline:0}.ajs-no-overflow.ajs-fixed{position:fixed;top:0;right:0;bottom:0;left:0;overflow-y:scroll!important}.ajs-no-selection,.ajs-no-selection *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:568px){.alertify .ajs-dialog{min-width:150px}.alertify:not(.ajs-maximized) .ajs-modal{padding:0 5%}.alertify:not(.ajs-maximized).ajs-resizable .ajs-dialog{min-width:initial;min-width:auto}}@-moz-document url-prefix(){.alertify button:focus{outline:1px dotted #3593d2}}.alertify .ajs-dimmer,.alertify .ajs-modal{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-property:opacity,visibility;transition-property:opacity,visibility;-webkit-transition-timing-function:linear;transition-timing-function:linear;-webkit-transition-duration:250ms;transition-duration:250ms}.alertify.ajs-hidden .ajs-dimmer,.alertify.ajs-hidden .ajs-modal{visibility:hidden;opacity:0}.alertify.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-duration:.5s;animation-duration:.5s}.alertify.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-duration:250ms;animation-duration:250ms}.alertify .ajs-dialog.ajs-shake{-webkit-animation-name:ajs-shake;animation-name:ajs-shake;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}@-webkit-keyframes ajs-shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes ajs-shake{0%,100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.alertify.ajs-slide.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-slideIn;animation-name:ajs-slideIn;-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1.275);animation-timing-function:cubic-bezier(.175,.885,.32,1.275)}.alertify.ajs-slide.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-slideOut;animation-name:ajs-slideOut;-webkit-animation-timing-function:cubic-bezier(.6,-.28,.735,.045);animation-timing-function:cubic-bezier(.6,-.28,.735,.045)}.alertify.ajs-zoom.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-zoomIn;animation-name:ajs-zoomIn}.alertify.ajs-zoom.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-zoomOut;animation-name:ajs-zoomOut}.alertify.ajs-fade.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-fadeIn;animation-name:ajs-fadeIn}.alertify.ajs-fade.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-fadeOut;animation-name:ajs-fadeOut}.alertify.ajs-pulse.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-pulseIn;animation-name:ajs-pulseIn}.alertify.ajs-pulse.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-pulseOut;animation-name:ajs-pulseOut}.alertify.ajs-flipx.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-flipInX;animation-name:ajs-flipInX}.alertify.ajs-flipx.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-flipOutX;animation-name:ajs-flipOutX}.alertify.ajs-flipy.ajs-in:not(.ajs-hidden) .ajs-dialog{-webkit-animation-name:ajs-flipInY;animation-name:ajs-flipInY}.alertify.ajs-flipy.ajs-out.ajs-hidden .ajs-dialog{-webkit-animation-name:ajs-flipOutY;animation-name:ajs-flipOutY}@-webkit-keyframes ajs-pulseIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes ajs-pulseIn{0%,100%,20%,40%,60%,80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes ajs-pulseOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes ajs-pulseOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@-webkit-keyframes ajs-zoomIn{0%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes ajs-zoomIn{0%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@-webkit-keyframes ajs-zoomOut{0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}100%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}}@keyframes ajs-zoomOut{0%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}100%{opacity:0;-webkit-transform:scale3d(.25,.25,.25);transform:scale3d(.25,.25,.25)}}@-webkit-keyframes ajs-fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes ajs-fadeIn{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes ajs-fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes ajs-fadeOut{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes ajs-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes ajs-flipInX{0%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes ajs-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes ajs-flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@-webkit-keyframes ajs-flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes ajs-flipInY{0%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes ajs-flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes ajs-flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@-webkit-keyframes ajs-slideIn{0%{margin-top:-100%}100%{margin-top:5%}}@keyframes ajs-slideIn{0%{margin-top:-100%}100%{margin-top:5%}}@-webkit-keyframes ajs-slideOut{0%{margin-top:5%}100%{margin-top:-100%}}@keyframes ajs-slideOut{0%{margin-top:5%}100%{margin-top:-100%}}.alertify-notifier{position:fixed;width:0;overflow:visible;z-index:1982;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.alertify-notifier .ajs-message{position:relative;width:260px;max-height:0;padding:0;opacity:0;margin:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-transition-timing-function:linear;transition-timing-function:linear}.alertify-notifier .ajs-message.ajs-visible{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.275);transition-timing-function:cubic-bezier(.175,.885,.32,1.275);opacity:1;max-height:100%;padding:15px;margin-top:10px}.alertify-notifier .ajs-message.ajs-success{background:rgba(91,189,114,.95)}.alertify-notifier .ajs-message.ajs-error{background:rgba(217,92,92,.95)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95)}.alertify-notifier .ajs-message .ajs-close{position:absolute;top:0;right:0;width:16px;height:16px;cursor:pointer;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAFBJREFUGBl1j0EKADEIA+ve/P9f9bh1hEihNBfjVCO1v7RKVqJK4h8gM5cAPR42AkQEpSXPwMTyoi13n5N9YqJehm3Fnr7nL1D0ZEbD5OubGyC7a9gx+9eNAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:center center;background-color:rgba(0,0,0,.5);border-top-right-radius:2px}.alertify-notifier.ajs-top{top:10px}.alertify-notifier.ajs-bottom{bottom:10px}.alertify-notifier.ajs-right{right:10px}.alertify-notifier.ajs-right .ajs-message{right:-320px}.alertify-notifier.ajs-right .ajs-message.ajs-visible{right:290px}.alertify-notifier.ajs-left{left:10px}.alertify-notifier.ajs-left .ajs-message{left:-300px}.alertify-notifier.ajs-left .ajs-message.ajs-visible{left:0}.alertify-notifier.ajs-center{left:50%}.alertify-notifier.ajs-center .ajs-message{-webkit-transform:translateX(-50%);transform:translateX(-50%)}.alertify-notifier.ajs-center .ajs-message.ajs-visible{left:50%;-webkit-transition-timing-function:cubic-bezier(.57,.43,.1,.65);transition-timing-function:cubic-bezier(.57,.43,.1,.65)}.alertify-notifier.ajs-center.ajs-top .ajs-message{top:-300px}.alertify-notifier.ajs-center.ajs-top .ajs-message.ajs-visible{top:0}.alertify-notifier.ajs-center.ajs-bottom .ajs-message{bottom:-300px}.alertify-notifier.ajs-center.ajs-bottom .ajs-message.ajs-visible{bottom:0}youtube-embed-plus/styles/alertify/themes/semantic.rtl.css000064400000005222151435171370020047 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer { background-color: rgba(0, 0, 0, 0.85); opacity: 1; } .alertify .ajs-dialog { max-width: 50%; min-height: 137px; background-color: #F4F4F4; border: 1px solid #DDD; -webkit-box-shadow: none; box-shadow: none; border-radius: 5px; } .alertify .ajs-header { padding: 1.5rem 2rem; border-bottom: none; border-radius: 5px 5px 0 0; color: #555; background-color: #fff; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1.6em; font-weight: 700; } .alertify .ajs-body { font-family: 'Roboto', sans-serif; color: #555; } .alertify .ajs-body .ajs-content .ajs-input { width: 100%; margin: 0; padding: .65em 1em; font-size: 1em; background-color: #FFF; border: 1px solid rgba(0, 0, 0, 0.15); outline: 0; color: rgba(0, 0, 0, 0.7); border-radius: .3125em; -webkit-transition: background-color 0.3s ease-out, border-color 0.2s ease, -webkit-box-shadow 0.2s ease; transition: background-color 0.3s ease-out, border-color 0.2s ease, -webkit-box-shadow 0.2s ease; transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease; transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease, -webkit-box-shadow 0.2s ease; -webkit-box-sizing: border-box; box-sizing: border-box; } .alertify .ajs-body .ajs-content .ajs-input:active { border-color: rgba(0, 0, 0, 0.3); background-color: #FAFAFA; } .alertify .ajs-body .ajs-content .ajs-input:focus { border-color: rgba(0, 0, 0, 0.2); color: rgba(0, 0, 0, 0.85); } .alertify.ajs-resizable .ajs-content, .alertify.ajs-maximized:not(.ajs-resizable) .ajs-content { top: 64px; bottom: 74px; } .alertify .ajs-footer { background-color: #fff; padding: 1rem 2rem; border-top: none; border-radius: 0 0 5px 5px; } .alertify-notifier .ajs-message { background: rgba(255, 255, 255, 0.95); color: #000; text-align: center; border: solid 1px #ddd; border-radius: 2px; } .alertify-notifier .ajs-message.ajs-success { color: #fff; background: rgba(91, 189, 114, 0.95); text-shadow: 1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-error { color: #fff; background: rgba(217, 92, 92, 0.95); text-shadow: 1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); border-color: #999; } youtube-embed-plus/styles/alertify/themes/semantic.css000064400000005224151435171370017251 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer { background-color: rgba(0, 0, 0, 0.85); opacity: 1; } .alertify .ajs-dialog { max-width: 50%; min-height: 137px; background-color: #F4F4F4; border: 1px solid #DDD; -webkit-box-shadow: none; box-shadow: none; border-radius: 5px; } .alertify .ajs-header { padding: 1.5rem 2rem; border-bottom: none; border-radius: 5px 5px 0 0; color: #555; background-color: #fff; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1.6em; font-weight: 700; } .alertify .ajs-body { font-family: 'Roboto', sans-serif; color: #555; } .alertify .ajs-body .ajs-content .ajs-input { width: 100%; margin: 0; padding: .65em 1em; font-size: 1em; background-color: #FFF; border: 1px solid rgba(0, 0, 0, 0.15); outline: 0; color: rgba(0, 0, 0, 0.7); border-radius: .3125em; -webkit-transition: background-color 0.3s ease-out, border-color 0.2s ease, -webkit-box-shadow 0.2s ease; transition: background-color 0.3s ease-out, border-color 0.2s ease, -webkit-box-shadow 0.2s ease; transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease; transition: background-color 0.3s ease-out, box-shadow 0.2s ease, border-color 0.2s ease, -webkit-box-shadow 0.2s ease; -webkit-box-sizing: border-box; box-sizing: border-box; } .alertify .ajs-body .ajs-content .ajs-input:active { border-color: rgba(0, 0, 0, 0.3); background-color: #FAFAFA; } .alertify .ajs-body .ajs-content .ajs-input:focus { border-color: rgba(0, 0, 0, 0.2); color: rgba(0, 0, 0, 0.85); } .alertify.ajs-resizable .ajs-content, .alertify.ajs-maximized:not(.ajs-resizable) .ajs-content { top: 64px; bottom: 74px; } .alertify .ajs-footer { background-color: #fff; padding: 1rem 2rem; border-top: none; border-radius: 0 0 5px 5px; } .alertify-notifier .ajs-message { background: rgba(255, 255, 255, 0.95); color: #000; text-align: center; border: solid 1px #ddd; border-radius: 2px; } .alertify-notifier .ajs-message.ajs-success { color: #fff; background: rgba(91, 189, 114, 0.95); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-error { color: #fff; background: rgba(217, 92, 92, 0.95); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); border-color: #999; } youtube-embed-plus/styles/alertify/themes/semantic.rtl.min.css000064400000004435151435171370020636 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer{background-color:rgba(0,0,0,.85);opacity:1}.alertify .ajs-dialog{max-width:50%;min-height:137px;background-color:#f4f4f4;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;border-radius:5px}.alertify .ajs-header{padding:1.5rem 2rem;border-bottom:none;border-radius:5px 5px 0 0;color:#555;background-color:#fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:700}.alertify .ajs-body{font-family:Roboto,sans-serif;color:#555}.alertify .ajs-body .ajs-content .ajs-input{width:100%;margin:0;padding:.65em 1em;font-size:1em;background-color:#fff;border:1px solid rgba(0,0,0,.15);outline:0;color:rgba(0,0,0,.7);border-radius:.3125em;-webkit-transition:background-color .3s ease-out,border-color .2s ease,-webkit-box-shadow .2s ease;transition:background-color .3s ease-out,border-color .2s ease,-webkit-box-shadow .2s ease;transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease;transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease,-webkit-box-shadow .2s ease;-webkit-box-sizing:border-box;box-sizing:border-box}.alertify .ajs-body .ajs-content .ajs-input:active{border-color:rgba(0,0,0,.3);background-color:#fafafa}.alertify .ajs-body .ajs-content .ajs-input:focus{border-color:rgba(0,0,0,.2);color:rgba(0,0,0,.85)}.alertify.ajs-maximized:not(.ajs-resizable) .ajs-content,.alertify.ajs-resizable .ajs-content{top:64px;bottom:74px}.alertify .ajs-footer{background-color:#fff;padding:1rem 2rem;border-top:none;border-radius:0 0 5px 5px}.alertify-notifier .ajs-message{background:rgba(255,255,255,.95);color:#000;text-align:center;border:solid 1px #ddd;border-radius:2px}.alertify-notifier .ajs-message.ajs-success{color:#fff;background:rgba(91,189,114,.95);text-shadow:1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-error{color:#fff;background:rgba(217,92,92,.95);text-shadow:1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95);border-color:#999}youtube-embed-plus/styles/alertify/themes/default.min.css000064400000003047151435171370017655 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dialog{background-color:#fff;-webkit-box-shadow:0 15px 20px 0 rgba(0,0,0,.25);box-shadow:0 15px 20px 0 rgba(0,0,0,.25);border-radius:2px}.alertify .ajs-header{color:#000;font-weight:700;background:#fafafa;border-bottom:#eee 1px solid;border-radius:2px 2px 0 0}.alertify .ajs-body{color:#000}.alertify .ajs-body .ajs-content .ajs-input{display:block;width:100%;padding:8px;margin:4px;border-radius:2px;border:1px solid #ccc}.alertify .ajs-body .ajs-content p{margin:0}.alertify .ajs-footer{background:#fbfbfb;border-top:#eee 1px solid;border-radius:0 0 2px 2px}.alertify .ajs-footer .ajs-buttons .ajs-button{background-color:transparent;color:#000;border:0;font-size:14px;font-weight:700;text-transform:uppercase}.alertify .ajs-footer .ajs-buttons .ajs-button.ajs-ok{color:#3593d2}.alertify-notifier .ajs-message{background:rgba(255,255,255,.95);color:#000;text-align:center;border:solid 1px #ddd;border-radius:2px}.alertify-notifier .ajs-message.ajs-success{color:#fff;background:rgba(91,189,114,.95);text-shadow:-1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-error{color:#fff;background:rgba(217,92,92,.95);text-shadow:-1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95);border-color:#999}youtube-embed-plus/styles/alertify/themes/semantic.min.css000064400000004437151435171370020040 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer{background-color:rgba(0,0,0,.85);opacity:1}.alertify .ajs-dialog{max-width:50%;min-height:137px;background-color:#f4f4f4;border:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;border-radius:5px}.alertify .ajs-header{padding:1.5rem 2rem;border-bottom:none;border-radius:5px 5px 0 0;color:#555;background-color:#fff;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1.6em;font-weight:700}.alertify .ajs-body{font-family:Roboto,sans-serif;color:#555}.alertify .ajs-body .ajs-content .ajs-input{width:100%;margin:0;padding:.65em 1em;font-size:1em;background-color:#fff;border:1px solid rgba(0,0,0,.15);outline:0;color:rgba(0,0,0,.7);border-radius:.3125em;-webkit-transition:background-color .3s ease-out,border-color .2s ease,-webkit-box-shadow .2s ease;transition:background-color .3s ease-out,border-color .2s ease,-webkit-box-shadow .2s ease;transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease;transition:background-color .3s ease-out,box-shadow .2s ease,border-color .2s ease,-webkit-box-shadow .2s ease;-webkit-box-sizing:border-box;box-sizing:border-box}.alertify .ajs-body .ajs-content .ajs-input:active{border-color:rgba(0,0,0,.3);background-color:#fafafa}.alertify .ajs-body .ajs-content .ajs-input:focus{border-color:rgba(0,0,0,.2);color:rgba(0,0,0,.85)}.alertify.ajs-maximized:not(.ajs-resizable) .ajs-content,.alertify.ajs-resizable .ajs-content{top:64px;bottom:74px}.alertify .ajs-footer{background-color:#fff;padding:1rem 2rem;border-top:none;border-radius:0 0 5px 5px}.alertify-notifier .ajs-message{background:rgba(255,255,255,.95);color:#000;text-align:center;border:solid 1px #ddd;border-radius:2px}.alertify-notifier .ajs-message.ajs-success{color:#fff;background:rgba(91,189,114,.95);text-shadow:-1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-error{color:#fff;background:rgba(217,92,92,.95);text-shadow:-1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95);border-color:#999}youtube-embed-plus/styles/alertify/themes/bootstrap.min.css000064400000002726151435171370020251 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer{background-color:#000;opacity:.5}.alertify .ajs-dialog{max-width:600px;min-height:122px;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.alertify .ajs-header{color:#333;border-bottom:1px solid #e5e5e5;border-radius:6px 6px 0 0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px}.alertify .ajs-body{font-family:Roboto,sans-serif;color:#000}.alertify.ajs-maximized:not(.ajs-resizable) .ajs-content,.alertify.ajs-resizable .ajs-content{top:58px;bottom:68px}.alertify .ajs-footer{background-color:#fff;padding:15px;border-top:1px solid #e5e5e5;border-radius:0 0 6px 6px}.alertify-notifier .ajs-message{background:rgba(255,255,255,.95);color:#000;text-align:center;border:solid 1px #ddd;border-radius:2px}.alertify-notifier .ajs-message.ajs-success{color:#fff;background:rgba(91,189,114,.95);text-shadow:-1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-error{color:#fff;background:rgba(217,92,92,.95);text-shadow:-1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95);border-color:#999}youtube-embed-plus/styles/alertify/themes/default.rtl.min.css000064400000003045151435171370020453 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dialog{background-color:#fff;-webkit-box-shadow:0 15px 20px 0 rgba(0,0,0,.25);box-shadow:0 15px 20px 0 rgba(0,0,0,.25);border-radius:2px}.alertify .ajs-header{color:#000;font-weight:700;background:#fafafa;border-bottom:#eee 1px solid;border-radius:2px 2px 0 0}.alertify .ajs-body{color:#000}.alertify .ajs-body .ajs-content .ajs-input{display:block;width:100%;padding:8px;margin:4px;border-radius:2px;border:1px solid #ccc}.alertify .ajs-body .ajs-content p{margin:0}.alertify .ajs-footer{background:#fbfbfb;border-top:#eee 1px solid;border-radius:0 0 2px 2px}.alertify .ajs-footer .ajs-buttons .ajs-button{background-color:transparent;color:#000;border:0;font-size:14px;font-weight:700;text-transform:uppercase}.alertify .ajs-footer .ajs-buttons .ajs-button.ajs-ok{color:#3593d2}.alertify-notifier .ajs-message{background:rgba(255,255,255,.95);color:#000;text-align:center;border:solid 1px #ddd;border-radius:2px}.alertify-notifier .ajs-message.ajs-success{color:#fff;background:rgba(91,189,114,.95);text-shadow:1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-error{color:#fff;background:rgba(217,92,92,.95);text-shadow:1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95);border-color:#999}youtube-embed-plus/styles/alertify/themes/default.css000064400000003454151435171370017075 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dialog { background-color: white; -webkit-box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.25); border-radius: 2px; } .alertify .ajs-header { color: black; font-weight: bold; background: #fafafa; border-bottom: #eee 1px solid; border-radius: 2px 2px 0 0; } .alertify .ajs-body { color: black; } .alertify .ajs-body .ajs-content .ajs-input { display: block; width: 100%; padding: 8px; margin: 4px; border-radius: 2px; border: 1px solid #CCC; } .alertify .ajs-body .ajs-content p { margin: 0; } .alertify .ajs-footer { background: #fbfbfb; border-top: #eee 1px solid; border-radius: 0 0 2px 2px; } .alertify .ajs-footer .ajs-buttons .ajs-button { background-color: transparent; color: #000; border: 0; font-size: 14px; font-weight: bold; text-transform: uppercase; } .alertify .ajs-footer .ajs-buttons .ajs-button.ajs-ok { color: #3593D2; } .alertify-notifier .ajs-message { background: rgba(255, 255, 255, 0.95); color: #000; text-align: center; border: solid 1px #ddd; border-radius: 2px; } .alertify-notifier .ajs-message.ajs-success { color: #fff; background: rgba(91, 189, 114, 0.95); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-error { color: #fff; background: rgba(217, 92, 92, 0.95); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); border-color: #999; } youtube-embed-plus/styles/alertify/themes/default.rtl.css000064400000003452151435171370017673 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dialog { background-color: white; -webkit-box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 15px 20px 0px rgba(0, 0, 0, 0.25); border-radius: 2px; } .alertify .ajs-header { color: black; font-weight: bold; background: #fafafa; border-bottom: #eee 1px solid; border-radius: 2px 2px 0 0; } .alertify .ajs-body { color: black; } .alertify .ajs-body .ajs-content .ajs-input { display: block; width: 100%; padding: 8px; margin: 4px; border-radius: 2px; border: 1px solid #CCC; } .alertify .ajs-body .ajs-content p { margin: 0; } .alertify .ajs-footer { background: #fbfbfb; border-top: #eee 1px solid; border-radius: 0 0 2px 2px; } .alertify .ajs-footer .ajs-buttons .ajs-button { background-color: transparent; color: #000; border: 0; font-size: 14px; font-weight: bold; text-transform: uppercase; } .alertify .ajs-footer .ajs-buttons .ajs-button.ajs-ok { color: #3593D2; } .alertify-notifier .ajs-message { background: rgba(255, 255, 255, 0.95); color: #000; text-align: center; border: solid 1px #ddd; border-radius: 2px; } .alertify-notifier .ajs-message.ajs-success { color: #fff; background: rgba(91, 189, 114, 0.95); text-shadow: 1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-error { color: #fff; background: rgba(217, 92, 92, 0.95); text-shadow: 1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); border-color: #999; } youtube-embed-plus/styles/alertify/themes/bootstrap.rtl.css000064400000003274151435171370020266 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer { background-color: #000; opacity: .5; } .alertify .ajs-dialog { max-width: 600px; min-height: 122px; background-color: #fff; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); border-radius: 6px; } .alertify .ajs-header { color: #333; border-bottom: 1px solid #e5e5e5; border-radius: 6px 6px 0 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 18px; } .alertify .ajs-body { font-family: 'Roboto', sans-serif; color: black; } .alertify.ajs-resizable .ajs-content, .alertify.ajs-maximized:not(.ajs-resizable) .ajs-content { top: 58px; bottom: 68px; } .alertify .ajs-footer { background-color: #fff; padding: 15px; border-top: 1px solid #e5e5e5; border-radius: 0 0 6px 6px; } .alertify-notifier .ajs-message { background: rgba(255, 255, 255, 0.95); color: #000; text-align: center; border: solid 1px #ddd; border-radius: 2px; } .alertify-notifier .ajs-message.ajs-success { color: #fff; background: rgba(91, 189, 114, 0.95); text-shadow: 1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-error { color: #fff; background: rgba(217, 92, 92, 0.95); text-shadow: 1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); border-color: #999; } youtube-embed-plus/styles/alertify/themes/bootstrap.css000064400000003276151435171370017470 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer { background-color: #000; opacity: .5; } .alertify .ajs-dialog { max-width: 600px; min-height: 122px; background-color: #fff; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); border-radius: 6px; } .alertify .ajs-header { color: #333; border-bottom: 1px solid #e5e5e5; border-radius: 6px 6px 0 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 18px; } .alertify .ajs-body { font-family: 'Roboto', sans-serif; color: black; } .alertify.ajs-resizable .ajs-content, .alertify.ajs-maximized:not(.ajs-resizable) .ajs-content { top: 58px; bottom: 68px; } .alertify .ajs-footer { background-color: #fff; padding: 15px; border-top: 1px solid #e5e5e5; border-radius: 0 0 6px 6px; } .alertify-notifier .ajs-message { background: rgba(255, 255, 255, 0.95); color: #000; text-align: center; border: solid 1px #ddd; border-radius: 2px; } .alertify-notifier .ajs-message.ajs-success { color: #fff; background: rgba(91, 189, 114, 0.95); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-error { color: #fff; background: rgba(217, 92, 92, 0.95); text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.5); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); border-color: #999; } youtube-embed-plus/styles/alertify/themes/bootstrap.rtl.min.css000064400000002724151435171370021047 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer{background-color:#000;opacity:.5}.alertify .ajs-dialog{max-width:600px;min-height:122px;background-color:#fff;border:1px solid rgba(0,0,0,.2);-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5);border-radius:6px}.alertify .ajs-header{color:#333;border-bottom:1px solid #e5e5e5;border-radius:6px 6px 0 0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:18px}.alertify .ajs-body{font-family:Roboto,sans-serif;color:#000}.alertify.ajs-maximized:not(.ajs-resizable) .ajs-content,.alertify.ajs-resizable .ajs-content{top:58px;bottom:68px}.alertify .ajs-footer{background-color:#fff;padding:15px;border-top:1px solid #e5e5e5;border-radius:0 0 6px 6px}.alertify-notifier .ajs-message{background:rgba(255,255,255,.95);color:#000;text-align:center;border:solid 1px #ddd;border-radius:2px}.alertify-notifier .ajs-message.ajs-success{color:#fff;background:rgba(91,189,114,.95);text-shadow:1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-error{color:#fff;background:rgba(217,92,92,.95);text-shadow:1px -1px 0 rgba(0,0,0,.5)}.alertify-notifier .ajs-message.ajs-warning{background:rgba(252,248,215,.95);border-color:#999}youtube-embed-plus/styles/alertify/alertify.css000064400000062004151435171370015777 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer { position: fixed; z-index: 1981; top: 0; right: 0; bottom: 0; left: 0; padding: 0; margin: 0; background-color: #252525; opacity: .5; } .alertify .ajs-modal { position: fixed; top: 0; right: 0; left: 0; bottom: 0; padding: 0; overflow-y: auto; z-index: 1981; } .alertify .ajs-dialog { position: relative; margin: 5% auto; min-height: 110px; max-width: 500px; padding: 24px 24px 0 24px; outline: 0; background-color: #fff; } .alertify .ajs-dialog.ajs-capture:before { content: ''; position: absolute; top: 0; right: 0; bottom: 0; left: 0; display: block; z-index: 1; } .alertify .ajs-reset { position: absolute !important; display: inline !important; width: 0 !important; height: 0 !important; opacity: 0 !important; } .alertify .ajs-commands { position: absolute; right: 4px; margin: -14px 24px 0 0; z-index: 2; } .alertify .ajs-commands button { display: none; width: 10px; height: 10px; margin-left: 10px; padding: 10px; border: 0; background-color: transparent; background-repeat: no-repeat; background-position: center; cursor: pointer; } .alertify .ajs-commands button.ajs-close { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAh0lEQVQYlY2QsQ0EIQwEB9cBAR1CJUaI/gigDnwR6NBL/7/xWLNrZ2b8EwGotVpr7eOitWa1VjugiNB7R1UPrKrWe0dEAHBbXUqxMQbeewDmnHjvyTm7C3zDwAUd9c63YQdUVdu6EAJzzquz7HXvTiklt+H9DQFYaxFjvDqllFyMkbXWvfpXHjJrWFgdBq/hAAAAAElFTkSuQmCC); } .alertify .ajs-commands button.ajs-maximize { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAOUlEQVQYlWP8//8/AzGAhYGBgaG4uBiv6t7eXkYmooxjYGAgWiELsvHYFMCcRX2rSXcjoSBiJDbAAeD+EGu+8BZcAAAAAElFTkSuQmCC); } .alertify .ajs-header { margin: -24px; margin-bottom: 0; padding: 16px 24px; background-color: #fff; } .alertify .ajs-body { min-height: 56px; } .alertify .ajs-body .ajs-content { padding: 16px 24px 16px 16px; } .alertify .ajs-footer { padding: 4px; margin-left: -24px; margin-right: -24px; min-height: 43px; background-color: #fff; } .alertify .ajs-footer .ajs-buttons.ajs-primary { text-align: right; } .alertify .ajs-footer .ajs-buttons.ajs-primary .ajs-button { margin: 4px; } .alertify .ajs-footer .ajs-buttons.ajs-auxiliary { float: left; clear: none; text-align: left; } .alertify .ajs-footer .ajs-buttons.ajs-auxiliary .ajs-button { margin: 4px; } .alertify .ajs-footer .ajs-buttons .ajs-button { min-width: 88px; min-height: 35px; } .alertify .ajs-handle { position: absolute; display: none; width: 10px; height: 10px; right: 0; bottom: 0; z-index: 1; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMS8xNEDQYmMAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQ0lEQVQYlaXNMQoAIAxD0dT7H657l0KX3iJuUlBUNOsPPCGJm7VDp6ryeMxMuDsAQH7owW3pyn3RS26iKxERMLN3ugOaAkaL3sWVigAAAABJRU5ErkJggg==); -webkit-transform: scaleX(1) /*rtl:scaleX(-1)*/; transform: scaleX(1) /*rtl:scaleX(-1)*/; cursor: se-resize; } .alertify.ajs-no-overflow .ajs-body .ajs-content { overflow: hidden !important; } .alertify.ajs-no-padding.ajs-maximized .ajs-body .ajs-content { left: 0; right: 0; padding: 0; } .alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body { margin-left: -24px; margin-right: -24px; } .alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body .ajs-content { padding: 0; } .alertify.ajs-no-padding.ajs-resizable .ajs-body .ajs-content { left: 0; right: 0; } .alertify.ajs-maximizable .ajs-commands button.ajs-maximize, .alertify.ajs-maximizable .ajs-commands button.ajs-restore { display: inline-block; } .alertify.ajs-closable .ajs-commands button.ajs-close { display: inline-block; } .alertify.ajs-maximized .ajs-dialog { width: 100% !important; height: 100% !important; max-width: none !important; margin: 0 auto !important; top: 0 !important; left: 0 !important; } .alertify.ajs-maximized.ajs-modeless .ajs-modal { position: fixed !important; min-height: 100% !important; max-height: none !important; margin: 0 !important; } .alertify.ajs-maximized .ajs-commands button.ajs-maximize { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAASklEQVQYlZWQ0QkAMQhDtXRincOZX78KVtrDCwgqJNEoIB3MPLj7lRUROlpyVXGzby6zWuY+kz6tj5sBMTMAyVV3/595RbOh3cAXsww1raeiOcoAAAAASUVORK5CYII=); } .alertify.ajs-resizable .ajs-dialog, .alertify.ajs-maximized .ajs-dialog { padding: 0; } .alertify.ajs-resizable .ajs-commands, .alertify.ajs-maximized .ajs-commands { margin: 14px 24px 0 0; } .alertify.ajs-resizable .ajs-header, .alertify.ajs-maximized .ajs-header { position: absolute; top: 0; left: 0; right: 0; margin: 0; padding: 16px 24px; } .alertify.ajs-resizable .ajs-body, .alertify.ajs-maximized .ajs-body { min-height: 224px; display: inline-block; } .alertify.ajs-resizable .ajs-body .ajs-content, .alertify.ajs-maximized .ajs-body .ajs-content { position: absolute; top: 50px; right: 24px; bottom: 50px; left: 24px; overflow: auto; } .alertify.ajs-resizable .ajs-footer, .alertify.ajs-maximized .ajs-footer { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; } .alertify.ajs-resizable:not(.ajs-maximized) .ajs-dialog { min-width: 548px; } .alertify.ajs-resizable:not(.ajs-maximized) .ajs-handle { display: block; } .alertify.ajs-movable:not(.ajs-maximized) .ajs-header { cursor: move; } .alertify.ajs-modeless .ajs-dimmer, .alertify.ajs-modeless .ajs-reset { display: none; } .alertify.ajs-modeless .ajs-modal { overflow: visible; max-width: none; max-height: 0; } .alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin { display: inline-block; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQklEQVQYlcWPMQ4AIAwCqU9u38GbcbHRWN1MvKQDhQFMEpKImGJA0gCgnYw0V0rwxseg5erT4oSkQVI5d9f+e9+xA0NbLpWfitPXAAAAAElFTkSuQmCC); } .alertify.ajs-modeless.ajs-unpinned .ajs-modal { position: absolute; } .alertify.ajs-modeless.ajs-unpinned .ajs-commands button.ajs-pin { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAO0lEQVQYlWP8//8/AzGAiShV6AqLi4txGs+CLoBLMYbC3t5eRmyaWfBZhwwYkX2NTxPRvibKjRhW4wMAhxkYGbLu3pEAAAAASUVORK5CYII=); } .alertify.ajs-modeless:not(.ajs-unpinned) .ajs-body { max-height: 500px; overflow: auto; } .alertify.ajs-basic .ajs-header { opacity: 0; } .alertify.ajs-basic .ajs-footer { visibility: hidden; } .alertify.ajs-frameless .ajs-header { position: absolute; top: 0; left: 0; right: 0; min-height: 60px; margin: 0; padding: 0; opacity: 0; z-index: 1; } .alertify.ajs-frameless .ajs-footer { display: none; } .alertify.ajs-frameless .ajs-body .ajs-content { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog { padding-top: 0; } .alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog .ajs-commands { margin-top: 0; } .ajs-no-overflow { overflow: hidden !important; outline: none; } .ajs-no-overflow.ajs-fixed { position: fixed; top: 0; right: 0; bottom: 0; left: 0; overflow-y: scroll!important; } .ajs-no-selection, .ajs-no-selection * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } @media screen and (max-width: 568px) { .alertify .ajs-dialog { min-width: 150px; } .alertify:not(.ajs-maximized) .ajs-modal { padding: 0 5%; } .alertify:not(.ajs-maximized).ajs-resizable .ajs-dialog { min-width: initial; min-width: auto /*IE fallback*/; } } @-moz-document url-prefix() { .alertify button:focus { outline: 1px dotted #3593D2; } } .alertify .ajs-dimmer, .alertify .ajs-modal { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transition-property: opacity, visibility; transition-property: opacity, visibility; -webkit-transition-timing-function: linear; transition-timing-function: linear; -webkit-transition-duration: 250ms; transition-duration: 250ms; } .alertify.ajs-hidden .ajs-dimmer, .alertify.ajs-hidden .ajs-modal { visibility: hidden; opacity: 0; } .alertify.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-duration: 500ms; animation-duration: 500ms; } .alertify.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-duration: 250ms; animation-duration: 250ms; } .alertify .ajs-dialog.ajs-shake { -webkit-animation-name: ajs-shake; animation-name: ajs-shake; -webkit-animation-duration: .1s; animation-duration: .1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } @-webkit-keyframes ajs-shake { 0%, 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } } @keyframes ajs-shake { 0%, 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } } .alertify.ajs-slide.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-slideIn; animation-name: ajs-slideIn; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); } .alertify.ajs-slide.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-slideOut; animation-name: ajs-slideOut; -webkit-animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045); animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045); } .alertify.ajs-zoom.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-zoomIn; animation-name: ajs-zoomIn; } .alertify.ajs-zoom.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-zoomOut; animation-name: ajs-zoomOut; } .alertify.ajs-fade.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-fadeIn; animation-name: ajs-fadeIn; } .alertify.ajs-fade.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-fadeOut; animation-name: ajs-fadeOut; } .alertify.ajs-pulse.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-pulseIn; animation-name: ajs-pulseIn; } .alertify.ajs-pulse.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-pulseOut; animation-name: ajs-pulseOut; } .alertify.ajs-flipx.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-flipInX; animation-name: ajs-flipInX; } .alertify.ajs-flipx.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-flipOutX; animation-name: ajs-flipOutX; } .alertify.ajs-flipy.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-flipInY; animation-name: ajs-flipInY; } .alertify.ajs-flipy.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-flipOutY; animation-name: ajs-flipOutY; } @-webkit-keyframes ajs-pulseIn { 0%, 20%, 40%, 60%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes ajs-pulseIn { 0%, 20%, 40%, 60%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @-webkit-keyframes ajs-pulseOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @keyframes ajs-pulseOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @-webkit-keyframes ajs-zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes ajs-zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @-webkit-keyframes ajs-zoomOut { 0% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 100% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } } @keyframes ajs-zoomOut { 0% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 100% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } } @-webkit-keyframes ajs-fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes ajs-fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @-webkit-keyframes ajs-fadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes ajs-fadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } @-webkit-keyframes ajs-flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes ajs-flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); transform: perspective(400px) rotate3d(1, 0, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); transform: perspective(400px) rotate3d(1, 0, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @-webkit-keyframes ajs-flipOutX { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; } } @keyframes ajs-flipOutX { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); transform: perspective(400px) rotate3d(1, 0, 0, -20deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); transform: perspective(400px) rotate3d(1, 0, 0, 90deg); opacity: 0; } } @-webkit-keyframes ajs-flipInY { 0% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); transform: perspective(400px) rotate3d(0, 1, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes ajs-flipInY { 0% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg); transform: perspective(400px) rotate3d(0, 1, 0, -20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg); transform: perspective(400px) rotate3d(0, 1, 0, 10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg); transform: perspective(400px) rotate3d(0, 1, 0, -5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @-webkit-keyframes ajs-flipOutY { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; } } @keyframes ajs-flipOutY { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg); transform: perspective(400px) rotate3d(0, 1, 0, -15deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg); transform: perspective(400px) rotate3d(0, 1, 0, 90deg); opacity: 0; } } @-webkit-keyframes ajs-slideIn { 0% { margin-top: -100%; } 100% { margin-top: 5%; } } @keyframes ajs-slideIn { 0% { margin-top: -100%; } 100% { margin-top: 5%; } } @-webkit-keyframes ajs-slideOut { 0% { margin-top: 5%; } 100% { margin-top: -100%; } } @keyframes ajs-slideOut { 0% { margin-top: 5%; } 100% { margin-top: -100%; } } .alertify-notifier { position: fixed; width: 0; overflow: visible; z-index: 1982; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .alertify-notifier .ajs-message { position: relative; width: 260px; max-height: 0; padding: 0; opacity: 0; margin: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transition-duration: 250ms; transition-duration: 250ms; -webkit-transition-timing-function: linear; transition-timing-function: linear; } .alertify-notifier .ajs-message.ajs-visible { -webkit-transition-duration: 500ms; transition-duration: 500ms; -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); opacity: 1; max-height: 100%; padding: 15px; margin-top: 10px; } .alertify-notifier .ajs-message.ajs-success { background: rgba(91, 189, 114, 0.95); } .alertify-notifier .ajs-message.ajs-error { background: rgba(217, 92, 92, 0.95); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); } .alertify-notifier .ajs-message .ajs-close { position: absolute; top: 0; right: 0; width: 16px; height: 16px; cursor: pointer; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAFBJREFUGBl1j0EKADEIA+ve/P9f9bh1hEihNBfjVCO1v7RKVqJK4h8gM5cAPR42AkQEpSXPwMTyoi13n5N9YqJehm3Fnr7nL1D0ZEbD5OubGyC7a9gx+9eNAAAAAElFTkSuQmCC); background-repeat: no-repeat; background-position: center center; background-color: rgba(0, 0, 0, 0.5); border-top-right-radius: 2px; } .alertify-notifier.ajs-top { top: 10px; } .alertify-notifier.ajs-bottom { bottom: 10px; } .alertify-notifier.ajs-right { right: 10px; } .alertify-notifier.ajs-right .ajs-message { right: -320px; } .alertify-notifier.ajs-right .ajs-message.ajs-visible { right: 290px; } .alertify-notifier.ajs-left { left: 10px; } .alertify-notifier.ajs-left .ajs-message { left: -300px; } .alertify-notifier.ajs-left .ajs-message.ajs-visible { left: 0; } .alertify-notifier.ajs-center { left: 50%; } .alertify-notifier.ajs-center .ajs-message { -webkit-transform: translateX(-50%); transform: translateX(-50%); } .alertify-notifier.ajs-center .ajs-message.ajs-visible { left: 50%; -webkit-transition-timing-function: cubic-bezier(0.57, 0.43, 0.1, 0.65); transition-timing-function: cubic-bezier(0.57, 0.43, 0.1, 0.65); } .alertify-notifier.ajs-center.ajs-top .ajs-message { top: -300px; } .alertify-notifier.ajs-center.ajs-top .ajs-message.ajs-visible { top: 0; } .alertify-notifier.ajs-center.ajs-bottom .ajs-message { bottom: -300px; } .alertify-notifier.ajs-center.ajs-bottom .ajs-message.ajs-visible { bottom: 0; } youtube-embed-plus/styles/alertify/alertify.rtl.css000064400000061767151435171370016616 0ustar00/** * alertifyjs 1.11.0 http://alertifyjs.com * AlertifyJS is a javascript framework for developing pretty browser dialogs and notifications. * Copyright 2017 Mohammad Younes (http://alertifyjs.com) * Licensed under GPL 3 */ .alertify .ajs-dimmer { position: fixed; z-index: 1981; top: 0; left: 0; bottom: 0; right: 0; padding: 0; margin: 0; background-color: #252525; opacity: .5; } .alertify .ajs-modal { position: fixed; top: 0; left: 0; right: 0; bottom: 0; padding: 0; overflow-y: auto; z-index: 1981; } .alertify .ajs-dialog { position: relative; margin: 5% auto; min-height: 110px; max-width: 500px; padding: 24px 24px 0 24px; outline: 0; background-color: #fff; } .alertify .ajs-dialog.ajs-capture:before { content: ''; position: absolute; top: 0; left: 0; bottom: 0; right: 0; display: block; z-index: 1; } .alertify .ajs-reset { position: absolute !important; display: inline !important; width: 0 !important; height: 0 !important; opacity: 0 !important; } .alertify .ajs-commands { position: absolute; left: 4px; margin: -14px 0 0 24px; z-index: 2; } .alertify .ajs-commands button { display: none; width: 10px; height: 10px; margin-right: 10px; padding: 10px; border: 0; background-color: transparent; background-repeat: no-repeat; background-position: center; cursor: pointer; } .alertify .ajs-commands button.ajs-close { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAh0lEQVQYlY2QsQ0EIQwEB9cBAR1CJUaI/gigDnwR6NBL/7/xWLNrZ2b8EwGotVpr7eOitWa1VjugiNB7R1UPrKrWe0dEAHBbXUqxMQbeewDmnHjvyTm7C3zDwAUd9c63YQdUVdu6EAJzzquz7HXvTiklt+H9DQFYaxFjvDqllFyMkbXWvfpXHjJrWFgdBq/hAAAAAElFTkSuQmCC); } .alertify .ajs-commands button.ajs-maximize { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAOUlEQVQYlWP8//8/AzGAhYGBgaG4uBiv6t7eXkYmooxjYGAgWiELsvHYFMCcRX2rSXcjoSBiJDbAAeD+EGu+8BZcAAAAAElFTkSuQmCC); } .alertify .ajs-header { margin: -24px; margin-bottom: 0; padding: 16px 24px; background-color: #fff; } .alertify .ajs-body { min-height: 56px; } .alertify .ajs-body .ajs-content { padding: 16px 16px 16px 24px; } .alertify .ajs-footer { padding: 4px; margin-right: -24px; margin-left: -24px; min-height: 43px; background-color: #fff; } .alertify .ajs-footer .ajs-buttons.ajs-primary { text-align: left; } .alertify .ajs-footer .ajs-buttons.ajs-primary .ajs-button { margin: 4px; } .alertify .ajs-footer .ajs-buttons.ajs-auxiliary { float: right; clear: none; text-align: right; } .alertify .ajs-footer .ajs-buttons.ajs-auxiliary .ajs-button { margin: 4px; } .alertify .ajs-footer .ajs-buttons .ajs-button { min-width: 88px; min-height: 35px; } .alertify .ajs-handle { position: absolute; display: none; width: 10px; height: 10px; left: 0; bottom: 0; z-index: 1; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMS8xNEDQYmMAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQ0lEQVQYlaXNMQoAIAxD0dT7H657l0KX3iJuUlBUNOsPPCGJm7VDp6ryeMxMuDsAQH7owW3pyn3RS26iKxERMLN3ugOaAkaL3sWVigAAAABJRU5ErkJggg==); -webkit-transform: scaleX(-1); transform: scaleX(-1); cursor: sw-resize; } .alertify.ajs-no-overflow .ajs-body .ajs-content { overflow: hidden !important; } .alertify.ajs-no-padding.ajs-maximized .ajs-body .ajs-content { right: 0; left: 0; padding: 0; } .alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body { margin-right: -24px; margin-left: -24px; } .alertify.ajs-no-padding:not(.ajs-maximized) .ajs-body .ajs-content { padding: 0; } .alertify.ajs-no-padding.ajs-resizable .ajs-body .ajs-content { right: 0; left: 0; } .alertify.ajs-maximizable .ajs-commands button.ajs-maximize, .alertify.ajs-maximizable .ajs-commands button.ajs-restore { display: inline-block; } .alertify.ajs-closable .ajs-commands button.ajs-close { display: inline-block; } .alertify.ajs-maximized .ajs-dialog { width: 100% !important; height: 100% !important; max-width: none !important; margin: 0 auto !important; top: 0 !important; right: 0 !important; } .alertify.ajs-maximized.ajs-modeless .ajs-modal { position: fixed !important; min-height: 100% !important; max-height: none !important; margin: 0 !important; } .alertify.ajs-maximized .ajs-commands button.ajs-maximize { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAASklEQVQYlZWQ0QkAMQhDtXRincOZX78KVtrDCwgqJNEoIB3MPLj7lRUROlpyVXGzby6zWuY+kz6tj5sBMTMAyVV3/595RbOh3cAXsww1raeiOcoAAAAASUVORK5CYII=); } .alertify.ajs-resizable .ajs-dialog, .alertify.ajs-maximized .ajs-dialog { padding: 0; } .alertify.ajs-resizable .ajs-commands, .alertify.ajs-maximized .ajs-commands { margin: 14px 0 0 24px; } .alertify.ajs-resizable .ajs-header, .alertify.ajs-maximized .ajs-header { position: absolute; top: 0; right: 0; left: 0; margin: 0; padding: 16px 24px; } .alertify.ajs-resizable .ajs-body, .alertify.ajs-maximized .ajs-body { min-height: 224px; display: inline-block; } .alertify.ajs-resizable .ajs-body .ajs-content, .alertify.ajs-maximized .ajs-body .ajs-content { position: absolute; top: 50px; left: 24px; bottom: 50px; right: 24px; overflow: auto; } .alertify.ajs-resizable .ajs-footer, .alertify.ajs-maximized .ajs-footer { position: absolute; right: 0; left: 0; bottom: 0; margin: 0; } .alertify.ajs-resizable:not(.ajs-maximized) .ajs-dialog { min-width: 548px; } .alertify.ajs-resizable:not(.ajs-maximized) .ajs-handle { display: block; } .alertify.ajs-movable:not(.ajs-maximized) .ajs-header { cursor: move; } .alertify.ajs-modeless .ajs-dimmer, .alertify.ajs-modeless .ajs-reset { display: none; } .alertify.ajs-modeless .ajs-modal { overflow: visible; max-width: none; max-height: 0; } .alertify.ajs-modeless.ajs-pinnable .ajs-commands button.ajs-pin { display: inline-block; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAQklEQVQYlcWPMQ4AIAwCqU9u38GbcbHRWN1MvKQDhQFMEpKImGJA0gCgnYw0V0rwxseg5erT4oSkQVI5d9f+e9+xA0NbLpWfitPXAAAAAElFTkSuQmCC); } .alertify.ajs-modeless.ajs-unpinned .ajs-modal { position: absolute; } .alertify.ajs-modeless.ajs-unpinned .ajs-commands button.ajs-pin { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNy8xMy8xNOrZqugAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAAAO0lEQVQYlWP8//8/AzGAiShV6AqLi4txGs+CLoBLMYbC3t5eRmyaWfBZhwwYkX2NTxPRvibKjRhW4wMAhxkYGbLu3pEAAAAASUVORK5CYII=); } .alertify.ajs-modeless:not(.ajs-unpinned) .ajs-body { max-height: 500px; overflow: auto; } .alertify.ajs-basic .ajs-header { opacity: 0; } .alertify.ajs-basic .ajs-footer { visibility: hidden; } .alertify.ajs-frameless .ajs-header { position: absolute; top: 0; right: 0; left: 0; min-height: 60px; margin: 0; padding: 0; opacity: 0; z-index: 1; } .alertify.ajs-frameless .ajs-footer { display: none; } .alertify.ajs-frameless .ajs-body .ajs-content { position: absolute; top: 0; left: 0; bottom: 0; right: 0; } .alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog { padding-top: 0; } .alertify.ajs-frameless:not(.ajs-resizable) .ajs-dialog .ajs-commands { margin-top: 0; } .ajs-no-overflow { overflow: hidden !important; outline: none; } .ajs-no-overflow.ajs-fixed { position: fixed; top: 0; left: 0; bottom: 0; right: 0; overflow-y: scroll!important; } .ajs-no-selection, .ajs-no-selection * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } @media screen and (max-width: 568px) { .alertify .ajs-dialog { min-width: 150px; } .alertify:not(.ajs-maximized) .ajs-modal { padding: 0 5%; } .alertify:not(.ajs-maximized).ajs-resizable .ajs-dialog { min-width: initial; min-width: auto /*IE fallback*/; } } @-moz-document url-prefix() { .alertify button:focus { outline: 1px dotted #3593D2; } } .alertify .ajs-dimmer, .alertify .ajs-modal { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transition-property: opacity, visibility; transition-property: opacity, visibility; -webkit-transition-timing-function: linear; transition-timing-function: linear; -webkit-transition-duration: 250ms; transition-duration: 250ms; } .alertify.ajs-hidden .ajs-dimmer, .alertify.ajs-hidden .ajs-modal { visibility: hidden; opacity: 0; } .alertify.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-duration: 500ms; animation-duration: 500ms; } .alertify.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-duration: 250ms; animation-duration: 250ms; } .alertify .ajs-dialog.ajs-shake { -webkit-animation-name: ajs-shake; animation-name: ajs-shake; -webkit-animation-duration: .1s; animation-duration: .1s; -webkit-animation-fill-mode: both; animation-fill-mode: both; } @-webkit-keyframes ajs-shake { 0%, 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } } @keyframes ajs-shake { 0%, 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 20%, 40%, 60%, 80% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } } .alertify.ajs-slide.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-slideIn; animation-name: ajs-slideIn; -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); } .alertify.ajs-slide.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-slideOut; animation-name: ajs-slideOut; -webkit-animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045); animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045); } .alertify.ajs-zoom.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-zoomIn; animation-name: ajs-zoomIn; } .alertify.ajs-zoom.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-zoomOut; animation-name: ajs-zoomOut; } .alertify.ajs-fade.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-fadeIn; animation-name: ajs-fadeIn; } .alertify.ajs-fade.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-fadeOut; animation-name: ajs-fadeOut; } .alertify.ajs-pulse.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-pulseIn; animation-name: ajs-pulseIn; } .alertify.ajs-pulse.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-pulseOut; animation-name: ajs-pulseOut; } .alertify.ajs-flipx.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-flipInX; animation-name: ajs-flipInX; } .alertify.ajs-flipx.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-flipOutX; animation-name: ajs-flipOutX; } .alertify.ajs-flipy.ajs-in:not(.ajs-hidden) .ajs-dialog { -webkit-animation-name: ajs-flipInY; animation-name: ajs-flipInY; } .alertify.ajs-flipy.ajs-out.ajs-hidden .ajs-dialog { -webkit-animation-name: ajs-flipOutY; animation-name: ajs-flipOutY; } @-webkit-keyframes ajs-pulseIn { 0%, 20%, 40%, 60%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes ajs-pulseIn { 0%, 20%, 40%, 60%, 80%, 100% { -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @-webkit-keyframes ajs-pulseOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @keyframes ajs-pulseOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @-webkit-keyframes ajs-zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes ajs-zoomIn { 0% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @-webkit-keyframes ajs-zoomOut { 0% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 100% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } } @keyframes ajs-zoomOut { 0% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 100% { opacity: 0; -webkit-transform: scale3d(0.25, 0.25, 0.25); transform: scale3d(0.25, 0.25, 0.25); } } @-webkit-keyframes ajs-fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes ajs-fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @-webkit-keyframes ajs-fadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes ajs-fadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } @-webkit-keyframes ajs-flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -90deg); transform: perspective(400px) rotate3d(1, 0, 0, -90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 20deg); transform: perspective(400px) rotate3d(1, 0, 0, 20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -10deg); transform: perspective(400px) rotate3d(1, 0, 0, -10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 5deg); transform: perspective(400px) rotate3d(1, 0, 0, 5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes ajs-flipInX { 0% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -90deg); transform: perspective(400px) rotate3d(1, 0, 0, -90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 20deg); transform: perspective(400px) rotate3d(1, 0, 0, 20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -10deg); transform: perspective(400px) rotate3d(1, 0, 0, -10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 5deg); transform: perspective(400px) rotate3d(1, 0, 0, 5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @-webkit-keyframes ajs-flipOutX { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 20deg); transform: perspective(400px) rotate3d(1, 0, 0, 20deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -90deg); transform: perspective(400px) rotate3d(1, 0, 0, -90deg); opacity: 0; } } @keyframes ajs-flipOutX { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 20deg); transform: perspective(400px) rotate3d(1, 0, 0, 20deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -90deg); transform: perspective(400px) rotate3d(1, 0, 0, -90deg); opacity: 0; } } @-webkit-keyframes ajs-flipInY { 0% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, -90deg); transform: perspective(400px) rotate3d(0, -1, 0, -90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, 20deg); transform: perspective(400px) rotate3d(0, -1, 0, 20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, -10deg); transform: perspective(400px) rotate3d(0, -1, 0, -10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, 5deg); transform: perspective(400px) rotate3d(0, -1, 0, 5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @keyframes ajs-flipInY { 0% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, -90deg); transform: perspective(400px) rotate3d(0, -1, 0, -90deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; opacity: 0; } 40% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, 20deg); transform: perspective(400px) rotate3d(0, -1, 0, 20deg); -webkit-transition-timing-function: ease-in; transition-timing-function: ease-in; } 60% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, -10deg); transform: perspective(400px) rotate3d(0, -1, 0, -10deg); opacity: 1; } 80% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, 5deg); transform: perspective(400px) rotate3d(0, -1, 0, 5deg); } 100% { -webkit-transform: perspective(400px); transform: perspective(400px); } } @-webkit-keyframes ajs-flipOutY { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, 15deg); transform: perspective(400px) rotate3d(0, -1, 0, 15deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, -90deg); transform: perspective(400px) rotate3d(0, -1, 0, -90deg); opacity: 0; } } @keyframes ajs-flipOutY { 0% { -webkit-transform: perspective(400px); transform: perspective(400px); } 30% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, 15deg); transform: perspective(400px) rotate3d(0, -1, 0, 15deg); opacity: 1; } 100% { -webkit-transform: perspective(400px) rotate3d(0, -1, 0, -90deg); transform: perspective(400px) rotate3d(0, -1, 0, -90deg); opacity: 0; } } @-webkit-keyframes ajs-slideIn { 0% { margin-top: -100%; } 100% { margin-top: 5%; } } @keyframes ajs-slideIn { 0% { margin-top: -100%; } 100% { margin-top: 5%; } } @-webkit-keyframes ajs-slideOut { 0% { margin-top: 5%; } 100% { margin-top: -100%; } } @keyframes ajs-slideOut { 0% { margin-top: 5%; } 100% { margin-top: -100%; } } .alertify-notifier { position: fixed; width: 0; overflow: visible; z-index: 1982; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .alertify-notifier .ajs-message { position: relative; width: 260px; max-height: 0; padding: 0; opacity: 0; margin: 0; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transition-duration: 250ms; transition-duration: 250ms; -webkit-transition-timing-function: linear; transition-timing-function: linear; } .alertify-notifier .ajs-message.ajs-visible { -webkit-transition-duration: 500ms; transition-duration: 500ms; -webkit-transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); transition-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275); opacity: 1; max-height: 100%; padding: 15px; margin-top: 10px; } .alertify-notifier .ajs-message.ajs-success { background: rgba(91, 189, 114, 0.95); } .alertify-notifier .ajs-message.ajs-error { background: rgba(217, 92, 92, 0.95); } .alertify-notifier .ajs-message.ajs-warning { background: rgba(252, 248, 215, 0.95); } .alertify-notifier .ajs-message .ajs-close { position: absolute; top: 0; left: 0; width: 16px; height: 16px; cursor: pointer; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAFBJREFUGBl1j0EKADEIA+ve/P9f9bh1hEihNBfjVCO1v7RKVqJK4h8gM5cAPR42AkQEpSXPwMTyoi13n5N9YqJehm3Fnr7nL1D0ZEbD5OubGyC7a9gx+9eNAAAAAElFTkSuQmCC); background-repeat: no-repeat; background-position: center center; background-color: rgba(0, 0, 0, 0.5); border-top-left-radius: 2px; } .alertify-notifier.ajs-top { top: 10px; } .alertify-notifier.ajs-bottom { bottom: 10px; } .alertify-notifier.ajs-right { left: 10px; } .alertify-notifier.ajs-right .ajs-message { left: -320px; } .alertify-notifier.ajs-right .ajs-message.ajs-visible { left: 290px; } .alertify-notifier.ajs-left { right: 10px; } .alertify-notifier.ajs-left .ajs-message { right: -300px; } .alertify-notifier.ajs-left .ajs-message.ajs-visible { right: 0; } .alertify-notifier.ajs-center { right: 50%; } .alertify-notifier.ajs-center .ajs-message { -webkit-transform: translateX(50%); transform: translateX(50%); } .alertify-notifier.ajs-center .ajs-message.ajs-visible { right: 50%; -webkit-transition-timing-function: cubic-bezier(0.57, 0.43, 0.1, 0.65); transition-timing-function: cubic-bezier(0.57, 0.43, 0.1, 0.65); } .alertify-notifier.ajs-center.ajs-top .ajs-message { top: -300px; } .alertify-notifier.ajs-center.ajs-top .ajs-message.ajs-visible { top: 0; } .alertify-notifier.ajs-center.ajs-bottom .ajs-message { bottom: -300px; } .alertify-notifier.ajs-center.ajs-bottom .ajs-message.ajs-visible { bottom: 0; } youtube-embed-plus/styles/ytprefs-onboarding.css000064400000013177151435171370016164 0ustar00/*https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/ */ #wphead {display:none;} #wpbody{margin-left: 0px;} #adminmenuback {display: none;} #adminmenu, adminmenuwrap {display: none;} #wpcontent, .auto-fold #wpcontent {margin-left: 0px;} #wpadminbar {display:none;} html.wp-toolbar {padding: 0px;} #footer, #wpfooter, .auto-fold #wpfooter {display: none;} #screen-meta-links {display: none;} #wpfooter {clear: both} .clearboth {clear: both;} .pad20 {padding: 20px;} .center {text-align: center;} .bold {font-weight: bold;} .orange{color:#f85d00; } .smallnote { font-size: small; font-style: italic; } .indent-option { margin-left: 25px; } .ui-widget, .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: inherit; } .ui-accordion .ui-accordion-header { margin-top: 15px; font-weight: bold; } .ui-accordion .ui-accordion-content.header-go-content { display: none !important; height: 0 !important; } .ui-widget-content a { color: #0073aa; } input.ui-widget[type=text] { margin: 0; padding: .4em 1em; width: 450px; } .txt-button-align input.ui-widget[type=text], .txt-button-align button { vertical-align: top; } #epyt_wiz_wrap .ui-button { font-weight: bold; } .ui-button .ui-icon { transform: scale(1.35,1.35); } .copycode { background-color: #eeeeff; border: 2px solid #c7d6e4; display: inline-block; font-size: .9em; overflow-x: hidden; vertical-align: middle; white-space: nowrap; width: 400px; padding-left: 15px; padding-right: 15px; } .pointer { cursor: pointer; } .relative { position: relative; } .epyt-fitvid { width: 100%; padding-top: 56.25%; position: relative; } .epyt-fitvid iframe { position: absolute; top: 0; left:0; right: 0; bottom: 0; width: 100%; height: 100%; } /* STEPS ************/ .wrap-ytprefs-onboarding h1 { line-height: 40px; } .wrap-ytprefs-onboarding h2 { line-height: 2em; } .wrap-ytprefs-onboarding .box-vi-not-interested { display: none; } .ytprefs-ob-step { position: absolute; visibility: hidden; opacity: 0; transition: opacity 300ms, visibility 300ms; width: 100%; height: 0; top: -200000px; } .ytprefs-ob-step.active-step { visibility: visible; opacity: 1; height: auto; top: 0; } .ytprefs-ob-title { font-size: 2em; line-height: 2em; text-align: center; } .ytprefs-ob-subtitle { font-size: 1.4em; line-height: 2em; } .ytprefs-ob-content { max-width: 800px; margin: 0 auto; } .ytprefs-ob-nav { text-align: center; margin-top: 20px; padding-top: 20px; border-top: 2px solid #dddddd; clear: both; margin-bottom: 50px; } .ytprefs-ob-nav .ytprefs-ob-nav-hide { display: none; } .ytprefs-ob-nav button.button-secondary, .ytprefs-ob-nav button.button-primary { display: inline-block; margin: 0 10px; } .ytprefs-ob-nav button.ytprefs-ob-nav-prev, .ytprefs-ob-nav button.ytprefs-ob-nav-close { margin-right: 25px; } .ytprefs-ob-step1 ul.ytprefs-ob-filter li { margin-bottom: 15px; } .ytprefs-ob-step1 .ytprefs-hover-icons { width: 160px; float: right; margin-left:30px; min-height: 200px; position: relative; } .ytprefs-ob-step1 .ytprefs-hover-icons img { position: absolute; top: 0; left: 0; opacity: 0; display: block; width: 100%; height: auto; transition: opacity 200ms; } .ytprefs-ob-step1 .ytprefs-hover-icons img.yob-icon-visible { opacity: 1; } .ytprefs-ob-step2 .ytprefs-ob-setting { display: none; margin: 10px 0 25px 0; } .ytprefs-ob-step2 .ytprefs-ob-setting.yob-single-visible, .ytprefs-ob-step2 .ytprefs-ob-setting.yob-gallery-visible, .ytprefs-ob-step2 .ytprefs-ob-setting.yob-standalone-visible, .ytprefs-ob-step2 .ytprefs-ob-setting.yob-privacy-visible, .ytprefs-ob-step2 .ytprefs-ob-setting.yob-live-visible { display: block; } .ytprefs-ob-step2 form #responsive ~ #boxresponsive_all, .ytprefs-ob-step2 form #facade_mode ~ .box_facade_mode { height: 0; visibility: none; opacity: 0; pointer-events: none; transition: opacity 300ms, visibility 300ms; } .ytprefs-ob-step2 form #responsive:checked ~ #boxresponsive_all, .ytprefs-ob-step2 form #facade_mode:checked ~ .box_facade_mode { height: auto; visibility: visible; opacity: 1; margin-top: 10px; pointer-events: all; } .ytindent { padding-left: 15px; border-left: 5px solid #e0e0e0; } .gdpr-options-left { width: 65%; float: left; } .gdpr-options-right { width: 33%; float: right; margin-top: 20px; } .gdpr-options-right .img-gdpr-message { width: 100%; height: auto; } iframe#gdpr_consent_message_ifr { min-height: 250px !important; } .ytprefs-ob-step4 .ytprefs-ob-content { max-width: 100%; } .ytprefs-ob-step4 h2 { /* max-width: 600px; text-align: center; margin: 0 auto;*/ } .wiztab-screenshots { float: right; max-width: 50%; height: auto; clear: right; margin-left: 30px; margin-bottom: 15px; display: block; border: 5px solid #dddddd; } .ytprefs-ob-success { color: #00a000; font-weight: bold; } .ytprefs-ob-success:after { content: url('../images/adstxt-valid.png'); } input.checkbox[disabled], input[type=radio][disabled] { border: 1px dashed #444444; } input[type="checkbox"] + label .check-note { display: none; } input[type="checkbox"]:checked + label .check-note { display: inline; } #not_live_on ~ #wp-not_live_content-wrap { opacity: .3; } #not_live_on:checked ~ #wp-not_live_content-wrap { opacity: 1; } youtube-embed-plus/styles/ytvi-gdpr.min.css000064400000006423151435171370015053 0ustar00 #wp_insert_vi_consent_popup_overlay{position:fixed;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,0.5);z-index:10000}#wp_insert_vi_consent_popup_wrapper *{box-sizing:border-box}#wp_insert_vi_consent_popup_wrapper{max-width:480px;background:rgba(255,255,255,0.9);padding:20px 30px 20px 30px;position:fixed;right:0;bottom:0;color:#000;z-index:10001;-webkit-box-shadow:0 0 16px 1px rgba(0,0,0,0.75);-moz-box-shadow:0 0 16px 1px rgba(0,0,0,0.75);box-shadow:0 0 16px 1px rgba(0,0,0,0.75);border-top:1px solid rgba(0,0,0,0.2);border-left:1px solid rgba(0,0,0,0.2)}#wp_insert_vi_consent_popup_wrapper2{text-align:center;margin:0 auto}#wp_insert_vi_consent_popup_wrapper h1{line-height:42px;font-weight:400;font-family:sans-serif,Helvetica,Arial;font-size:36px;text-align:center;margin:0;padding:0;border:0;background:0;color:#000;display:none!important}#wp_insert_vi_consent_popup_wrapper p{font-size:14px;font-family:sans-serif,Helvetica,Arial;line-height:20px;margin:10px 0 30px;padding:0;border:0;background:0;color:#000;text-align:justify;font-weight:400}#wp_insert_vi_consent_popup_wrapper p a,#wp_insert_vi_consent_popup_wrapper p a:hover{font-size:14px;font-family:sans-serif,Helvetica,Arial;line-height:20px;margin:0;padding:0;border:0;background:0;color:#000;text-decoration:underline}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper{text-align:center;margin:0}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_disagree_btn,#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_disagree_btn:hover{cursor:pointer;color:#000;background:0;border:0;padding:10px 30px;text-align:center;font-weight:600;font-size:15px;font-family:sans-serif,Helvetica,Arial;margin:0}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_agree_btn,#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_agree_btn:hover{cursor:pointer;color:#000;background:rgba(226,226,226,1);border:2px solid rgba(197,197,197,1);padding:10px 60px;text-align:center;font-weight:600;font-size:15px;font-family:sans-serif,Helvetica,Arial;border-radius:18px;margin:0}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_links_wrapper{text-align:center}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_links_wrapper a,#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_links_wrapper a:hover{color:#000;background:0;border:0;padding:10px;text-align:center;font-weight:400;font-size:12px;font-family:sans-serif,Helvetica,Arial;margin:0;text-decoration:underline;line-height:24px}#wp_insert_vi_consent_popup_settings_button{font-size:13px;color:rgba(146,135,131,1);background:url(../images/privacy-eye.png) no-repeat left center;padding:0 0 0 32px;position:fixed;bottom:10px;right:10px;cursor:pointer;z-index:10002;font-family:sans-serif,Helvetica,Arial;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_message{margin-bottom:15px}#wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_message p{display:inline!important;text-align:center}youtube-embed-plus/styles/ytvi-admin.min.css000064400000026057151435171370015214 0ustar00 body.admin_page_youtube-ep-wizard{background-color:#fff}.clearboth{clear:both}sup.orange{text-transform:lowercase;font-weight:bold;color:#f85d00}.align-middle{vertical-align:middle!important}.vi-registration-box{position:relative}.vi-cover-prompt{position:absolute;width:100%;height:100%;top:0;left:0;z-index:100;background-color:rgba(241,241,241,.88);text-align:center}.vi-cover-prompt::before{content:"";display:none;z-index:10000;position:absolute;width:100%;height:100%;margin:0;padding:0;-webkit-filter:url(#viblurfilter);-moz-filter:url(#viblurfilter);-o-filter:url(#viblurfilter);-ms-filter:url(#viblurfilter);filter:url(#viblurfilter)}.vi-cover-prompt-buttons button.button-primary,.vi-cover-prompt-buttons button.button-secondary{display:inline-block;margin:0 5px}.viblurfilter-svg{width:0;height:0;margin:0;padding:0;border:0}.vi-cover-prompt h1{text-align:center;margin-top:50px;text-shadow:0 0 14px #fff}.ytvi-wrap *{box-sizing:border-box}.ytvi-wrap .center{text-align:center}.ytvi-wrap input.regular-text{width:100%}.ytvi-step-1,.ytvi-step-2{text-align:left}.ytvi-step-1{width:auto;padding:0;max-width:870px;margin:0 auto}.ytvi-step-1 .button-primary{font-size:16px}.ytvi-step-1--form,.ytvi-login-success,.ytvi-step-2-loading,.ytvi-login-loading,.ytvi-login-complete{background:#fff;border:solid 1px #e5e5e5;padding:15px 0;width:100%;margin:30px auto}.ytvi-step-1--form .side-signup{width:49.5%;float:left;border-right:1px solid #ccc;padding:0 40px}.ytvi-step-1--form .side-login{width:49.5%;float:right;padding:0 40px 0 30px}.ytvi-step-1--form .side-login h2,.ytvi-step-1--form .side-signup h2{font-size:1.15em}.wrap .ytvi-step-1--form h2{margin:10px 0 15px 0;font-weight:normal}.ytvi-step-2-loading,.ytvi-step-2,.ytvi-login-loading,.ytvi-login-success{display:none}.ytvi-loading--message{text-align:center;font-size:16px}.ytvi-step-2 .ytvi-registration{max-width:870px;margin:0 auto}.ytvi-step-2 .ytvi-registration iframe{border-width:0;padding:0;margin:0 auto;width:100%;height:575px;display:block}.ytvi-step-2-msg{background-color:#d8ebf3;border:1px solid #d0d0d0;margin:0 26px;padding:10px}.ytvi-login-success,.ytvi-login-complete{max-width:100%;text-align:center;padding:25px 40px}.vi-adstxt-diff{text-align:left}.vi-adstxt-diff p{font-style:italic}.vi-adstxt-diff code,.adstxt-verify-message code,code.adstxt-block{white-space:pre;display:block;overflow:auto;margin:25px 0}section.pattern h2{background-color:rgba(255,255,255,0);transition:background-color 2s ease-out 0s}section.pattern h2.ytvi-hash-scroll{background-color:rgba(255,255,255,1);transition:background-color 0s}h3.sect{transition:background-color 2s ease-out 0s}h3.sect.ytvi-hash-scroll{background-color:rgba(255,255,255,1);transition:background-color 0s}.vi-forgot-pw{display:inline-block;float:right;padding-top:5px}.vi-contact-support{margin-top:30px;clear:left;padding-top:20px}.vi-logo-text{height:1.2em;width:auto;vertical-align:text-bottom}.vi-demo{max-width:1360px;margin:0 auto}p.vi-demo-lede,#ytform p.vi-demo-lede{font-size:17px;line-height:1.5}.wrap-vi-settings-pre p.vi-demo-lede{padding-top:.75em}.vi-demo-col-phone{float:right;width:330px;clear:right}.vi-demo-col-content{width:calc(100% - 340px)}.vi-demo-mobile{margin:0 auto;width:300px;background:transparent url(../images/vi-mobile-phone.png) no-repeat scroll;background-size:cover}.vi-demo-mobile-caption-list{position:relative;min-height:115px}.vi-demo-mobile-caption{font-style:italic;margin:0 10px;position:absolute;top:0;left:0;opacity:1;transition:ease-in-out opacity 3s}.vi-demo-mobile-ratio{position:relative;width:100%;height:0;padding-bottom:175.89%}.vi-demo-mobile-bg{position:absolute;top:0;left:0;width:100%;height:100%}.vi-demo-screen{position:absolute;top:5.5%;left:12%;width:76%;height:auto;z-index:1;opacity:1;transition:ease-in-out opacity 4s}.vi-demo-screen.demo-hide,.vi-demo-mobile-caption.demo-hide{opacity:0;transition:ease-in-out opacity 3s}.vi-demo-screen-2{z-index:2}p.vi-ad-source-row{text-align:center;margin-top:20px}.vi-ad-source-row img{vertical-align:middle;display:inline-block;margin-bottom:13px;padding:0 13px 0 13px;max-height:20px;height:auto;width:auto}.login-expire{background-color:#d8ebf3;border:1px solid #d0d0d0;padding:25px}.wrap-vi{max-width:1064px;margin-bottom:100px}.wrap-vi h1 .yt-admin-icon{width:16px;height:16px}.wrap-vi h1 a.button-primary,.wrap-vi h1 a.button-secondary,.wrap-ytprefs h2 a.button-primary,.wrap-ytprefs h2 a.button-secondary{float:right;margin-left:15px}.wrap-vi section{margin-left:20px;display:none;padding-top:15px}.wrap-vi th label{display:block}.wrap-vi th small{font-weight:normal;font-style:italic}.wrap-vi h2.nav-tab-wrapper{margin:22px 0 0 0}.wrap-vi section#jumphowitworks{display:block}.wrap-vi .no-js section{display:block}.wrap-vi h2{margin-bottom:30px;margin-left:0}.wrap-vi h3{font-size:1.2em;font-style:italic}.save-changes-follow{position:fixed;z-index:10000;bottom:0;right:0;background-color:#fff;padding:0 20px;border-top-left-radius:20px;border:2px solid #aaa;border-right-width:0;border-bottom-width:0;-webkit-box-shadow:0 0 10px 0 rgba(0,0,0,0.75);-moz-box-shadow:0 0 10px 0 rgba(0,0,0,0.75);box-shadow:0 0 10px 0 rgba(0,0,0,0.75)}.button-primary{white-space:nowrap}p.submit{margin:0;padding:15px 0 10px 0}.wp-core-ui p.submit .button-primary{font-weight:bold;font-size:21px;height:50px;padding:0 20px 1px;background:#2ea2cc;background:-moz-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#2ea2cc),color-stop(98%,#007396));background:-webkit-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-o-linear-gradient(top,#2ea2cc 0,#007396 98%);background:-ms-linear-gradient(top,#2ea2cc 0,#007396 98%);background:linear-gradient(to bottom,#2ea2cc 0,#007396 98%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#2ea2cc',endColorstr='#007396',GradientType=0)}p.submit em{display:inline-block;padding-left:20px;vertical-align:middle;width:240px;margin-top:-6px}.vi-red{color:#de1515}button.button-primary.ytvi-btn-toggle{float:right;position:relative}button.button-primary.ytvi-btn-inactive,button.button-primary.ytvi-btn-inactive:hover,.wp-core-ui button.button-primary.ytvi-btn-inactive[disabled],.wp-core-ui button.button-primary.ytvi-btn-inactive:disabled,a.button-primary.ytvi-btn-inactive,a.button-primary.ytvi-btn-inactive:hover{background:#e51f1f!important;border-color:#a22222!important;box-shadow:0 1px 0 #a22222!important;text-shadow:0 -1px 1px #a22222,1px 0 1px #a22222,0 1px 1px #a22222,-1px 0 1px #a22222!important;color:#fff!important}.wp-core-ui button.button-primary.ytvi-btn-inactive[disabled]:hover{background:rgba(229,31,31,.5)!important}button.button-primary.ytvi-btn-toggle .ytvi-notyet{display:none;position:absolute;background:white;width:540px;height:auto;top:25px;padding:15px 20px;border-radius:10px;box-shadow:5px 5px 10px 0 rgba(0,0,0,.2);right:0;text-align:left;color:#333!important;box-sizing:border-box;text-shadow:none!important;white-space:normal;border-top-right-radius:0;z-index:100}button.button-primary.ytvi-btn-toggle:hover .ytvi-notyet{display:block}.iab-cat-parent{margin-right:15px;display:inline-block}.iab-cat-child-box{display:inline-block}.iab-cat-child-box.hidden{opacity:.3}.iab-cat-child option.hidden{display:none}.wp-picker-container.wp-picker-active .wp-color-result-text{font-weight:bold}ul.list-ul{margin:15px 30px}ul.list-ul li{list-style-type:disc}.alertify .ajs-dialog{max-width:600px}.alertify .ajs-body .ajs-content{line-height:2em}.alertify .ajs-body .ajs-content code{white-space:pre;display:block;overflow:auto;line-height:1.4em;margin:1em auto}.ajs-button{cursor:pointer}.ss-vi-img{max-width:700px;height:auto}.ss-vi-wizbutton{max-width:100%;height:auto}.vi-how-works{margin-bottom:40px;position:relative;margin-left:10px}.vi-how-works::before{clear:both}.vi-how-works p{line-height:1}.vi-how-works img{width:50px;height:50px;float:left;margin-right:15px;transition:ease-in-out transform,opacity .1s;opacity:.5}.vi-how-works:hover img{transform:scale(1.1);opacity:1;transition:ease-in-out transform,opacity .2s}.vi-how-works h3{margin-bottom:0}.vi-how-works .vi-num{position:absolute;left:-20px;font-size:22px;font-weight:bold;color:#000;opacity:.2;font-style:italic;transition:ease-in-out transform,opacity .1s}.vi-how-works:hover .vi-num{transform:scale(1.1);opacity:1;transition:ease-in-out transform,opacity .2s}h2 .vi-num{font-style:italic;opacity:.5}.form-table.form-table--vi-appearance{width:100%}.form-table td{vertical-align:top}.vi-story-demo{width:65%;position:relative;margin:20px auto}.vi-story-demo--box{border:solid 1px #e3e3e3}.vi-story-demo--screen{width:100%;padding-top:57%;background-color:#888;position:relative}.vi-story-demo--screen span{color:#ccc;width:100%;text-align:center;font-size:20px;position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-style:italic}.vi-story-demo--screen span small{background:#ddd;border-radius:5px;display:inline-block;padding:5px 10px;box-sizing:border-box;color:#333;max-width:90%}.vi-story-demo--info{padding:8px}.vi-story-demo--featured{height:20px;font-size:9px;text-align:right;margin-top:8px;text-transform:uppercase;line-height:20px;font-family:Verdana,sans-serif}.vi-story-demo--title{font-weight:bold;line-height:1.33}.vi-story-demo--featured span{opacity:.5}.vi-story-demo--box .vi-story-demo--featured img{width:20px;height:20px;vertical-align:middle;margin:-4px 0 0 5px}@media(min-width:768px){.form-table.form-table--vi-appearance{width:53%;float:left;clear:left}.vi-story-demo{float:right;width:44%;position:relative}}.nav-tab-valid,.nav-tab-valid:focus,.adstxt-verify-message-valid{color:#00a000;font-weight:bold}.adstxt-help{float:right;background-color:rgba(0,0,0,0.07);width:390px;margin:0 0 20px 10px;border-radius:20px;box-sizing:border-box;padding:20px 35px}.adstxt-help img{width:50px;height:auto;display:block;float:left}.nav-tab-valid:after{content:url('../images/adstxt-valid.png')}.nav-tab-invalid:after{content:url('../images/adstxt-warning.png')}.nav-tab-loading:after{content:url('../images/ajax-loader.gif')}.vi-report-error.hide,.vi-report.hide{display:none}.vi-report,.vi-report-error{text-align:center}.vi-total-earnings,.vi-total-earnings-error{float:left;width:25%;margin-top:60px;color:#1193aa}.vi-report-graph,.vi-report-graph-error{float:right;width:75%}.vi-report-canvas-box,.vi-report-canvas-box-error{height:300px;width:100%}.vi-total-earnings-num,.vi-total-earnings-num-error{margin-top:20px;font-weight:bold;font-size:3.7vw;line-height:3.7vw}.vi-total-earnings-num-error,.vi-report-canvas-box-error{color:#ccc;font-weight:normal;font-size:45px;line-height:45px}.vi-report-canvas-box-error{background-size:10% 10%;background-image:linear-gradient(to right,#ddd 1px,transparent 1px),linear-gradient(to bottom,#ddd 1px,transparent 1px)}@media(min-width:1280px){.vi-total-earnings-num,.vi-total-earnings-num-error{font-size:45px;line-height:45px}}.iab-cat-tags-display{margin-top:20px}.iab-cat-tags-display:empty:after{content:'None selected yet';font-style:italic}.iab-cat-tag-button{display:inline-block;background-color:#0073aa;color:#fff;padding:5px 10px;border-radius:30px;font-size:12px;margin:0 12px 12px 0;cursor:pointer}.ytvi-msg-congrats{display:none}youtube-embed-plus/styles/ytprefs-wizard.css000064400000010153151435171370015331 0ustar00/*https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/ */ #wphead {display:none;} #wpbody{margin-left: 0px;} #adminmenuback {display: none;} #adminmenu, adminmenuwrap {display: none;} #wpcontent, .auto-fold #wpcontent {margin-left: 0px;} #wpadminbar {display:none;} html.wp-toolbar {padding: 0px;} #footer, #wpfooter, .auto-fold #wpfooter {display: none;} #screen-meta-links {display: none;} #wpfooter {clear: both} .clearboth {clear: both;} .pad20 {padding: 20px;} .center {text-align: center;} .bold {font-weight: bold;} .orange{color:#f85d00; } .smallnote { font-size: small; font-style: italic; } .ui-widget, .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: inherit; } .ui-widget .ui-widget li { font-size: 13px; } .ui-accordion .ui-accordion-header { margin-top: 15px; font-weight: bold; } .ui-accordion .ui-accordion-content.header-go-content { display: none !important; height: 0 !important; } .ui-widget-content a { color: #0073aa; } input.ui-widget[type=text] { margin: 0; padding: .4em 1em; width: 450px; line-height: 2; } .txt-button-align input.ui-widget[type=text], .txt-button-align button { vertical-align: top; } #epyt_wiz_wrap .ui-button { font-weight: bold; line-height: 2; } #epyt_wiz_wrap .ui-icon { display: inline-block; position: relative; left: auto; margin: 0; } .ui-button .ui-icon { transform: scale(1.35,1.35); display: inline-block; } .copycode { background-color: #eeeeff; border: 2px solid #c7d6e4; display: inline-block; font-size: .9em; overflow-x: hidden; vertical-align: middle; white-space: nowrap; width: 400px; padding-left: 15px; padding-right: 15px; } .pointer { cursor: pointer; } .relative { position: relative; } .epyt-search-results a.pointer.thumb.load-movie { float: left; width: 160px; height: 90px; background-position: center; background-size: cover; display: block; margin: 0 25px 10px 0; } .epyt-search-results .resultdiv { margin-bottom: 40px; } .epyt-search-results .resultinfo { text-align: left; } .epyt-search-results .resulttitle { font-weight: bold; } .epyt-search-results .moviecontainer { margin-bottom: 40px; margin-top: -30px; clear: both; } .epyt-search-results .closeme { right: 110px; top: -10px; position: absolute; font-weight: bold; font-size: 50px; cursor: pointer; } .epyt-search-results .resulttitle .ui-icon { transform: scale(1.35,1.35); } .epyt-pagination { clear: both; text-align: center; padding: 10px 8px 10px 8px; display: none; } .epyt-pagination > div, .epyt-pagenumbers > div { display: inline-block; padding: 0 2px 0 2px; vertical-align: middle; } .epyt-pagination .epyt-pagebutton { cursor: pointer; display: inline-block; padding: 0 10px 0 10px; } .epyt-pagebutton > div { display: inline; } .epyt-pagination .epyt-loader { display: none; } .epyt-gallery-list.epyt-loading .epyt-pagination .epyt-loader { display: inline-block; } .epyt-pagebutton.hide, .epyt-pagenumbers.hide { display: none !important; opacity: 0 !important; visibility: hidden !important; } .ui-tabs .ui-tabs-anchor { font-weight: bold; } .playlist-tabs { margin-bottom: 20px; } .icon-playlist { float: left; height: auto; margin: 15px 30px 0 0; max-width: 150px; } a.ythealth { clear: both; float: right; margin-top: 15px; position: relative; } a.ythealth .tip { position: absolute; width: 450px; right: 0; top: -100px; display: none; background-color: #ffffff; padding: 20px; border: 2px solid #dddddd; border-radius: 5px; } a.ythealth:hover .tip { display: block; } .h3_vi_monetize-content { background-color: #f0f0f0; } #wpwrap .ep-wizard-preview-video-wrapper { position: relative; padding-top: 56.25%; width: 100%; } #wpwrap .ep-wizard-preview-video-wrapper iframe { width: 100%; height: 100%; position: absolute; top: 0; left: 0; right: 0; bottom: 0; } youtube-embed-plus/styles/ytvi-gdpr.css000064400000010270151435171370014264 0ustar00#wp_insert_vi_consent_popup_overlay { position: fixed; left: 0; right: 0; top: 0; bottom: 0; background: rgba(0,0,0,0.5); z-index: 10000; } #wp_insert_vi_consent_popup_wrapper * { box-sizing: border-box; } #wp_insert_vi_consent_popup_wrapper { max-width: 480px; background: rgba(255,255,255,0.9); padding: 20px 30px 20px 30px; position: fixed; right: 0; bottom: 0; color: #000; z-index: 10001; -webkit-box-shadow: 0px 0px 16px 1px rgba(0,0,0,0.75); -moz-box-shadow: 0px 0px 16px 1px rgba(0,0,0,0.75); box-shadow: 0px 0px 16px 1px rgba(0,0,0,0.75); border-top: 1px solid rgba(0,0,0,0.2); border-left: 1px solid rgba(0,0,0,0.2); } #wp_insert_vi_consent_popup_wrapper2 { text-align: center; margin: 0 auto; } #wp_insert_vi_consent_popup_wrapper h1 { line-height: 42px; font-weight: 400; font-family: sans-serif,Helvetica,Arial; font-size: 36px; text-align: center; margin: 0; padding: 0; border: none; background: none; color: #000; display:none !important; } #wp_insert_vi_consent_popup_wrapper p { font-size: 14px; font-family: sans-serif,Helvetica,Arial; line-height: 20px; margin: 10px 0 30px; padding: 0; border: none; background: none; color: #000; text-align: justify; font-weight: 400; } #wp_insert_vi_consent_popup_wrapper p a, #wp_insert_vi_consent_popup_wrapper p a:hover { font-size: 14px; font-family: sans-serif,Helvetica,Arial; line-height: 20px; margin: 0; padding: 0; border: none; background: none; color: #000; text-decoration: underline; } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper { text-align: center; margin: 0; } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_disagree_btn, #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_disagree_btn:hover { cursor: pointer; color: #000; background: none; border: none; padding: 10px 30px; text-align: center; font-weight: 600; font-size: 15px; font-family: sans-serif,Helvetica,Arial; margin: 0; } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_agree_btn, #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_actions_wrapper #wp_insert_vi_consent_popup_agree_btn:hover { cursor: pointer; color: #000; background: rgba(226, 226, 226, 1); border: 2px solid rgba(197, 197, 197, 1); padding: 10px 60px; text-align: center; font-weight: 600; font-size: 15px; font-family: sans-serif,Helvetica,Arial; border-radius: 18px; margin: 0; } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_links_wrapper { text-align: center; } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_links_wrapper a, #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_links_wrapper a:hover { color: #000; background: none; border: none; padding: 10px; text-align: center; font-weight: 400; font-size: 12px; font-family: sans-serif,Helvetica,Arial; margin: 0; text-decoration: underline; line-height: 24px; } #wp_insert_vi_consent_popup_settings_button { font-size: 13px; color: rgba(146, 135, 131, 1); background: url(../images/privacy-eye.png) no-repeat left center; padding: 0 0 0 32px; position: fixed; bottom: 10px; right: 10px; cursor: pointer; z-index: 10002; font-family: sans-serif,Helvetica,Arial; -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_message { margin-bottom: 15px; } #wp_insert_vi_consent_popup_wrapper #wp_insert_vi_consent_popup_message p { display: inline !important; text-align: center; }youtube-embed-plus/styles/ytprefs-wizard.min.css000064400000006271151435171370016121 0ustar00 #wphead{display:none}#wpbody{margin-left:0}#adminmenuback{display:none}#adminmenu,adminmenuwrap{display:none}#wpcontent,.auto-fold #wpcontent{margin-left:0}#wpadminbar{display:none}html.wp-toolbar{padding:0}#footer,#wpfooter,.auto-fold #wpfooter{display:none}#screen-meta-links{display:none}#wpfooter{clear:both}.clearboth{clear:both}.pad20{padding:20px}.center{text-align:center}.bold{font-weight:bold}.orange{color:#f85d00}.smallnote{font-size:small;font-style:italic}.ui-widget,.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:inherit}.ui-widget .ui-widget li{font-size:13px}.ui-accordion .ui-accordion-header{margin-top:15px;font-weight:bold}.ui-accordion .ui-accordion-content.header-go-content{display:none!important;height:0!important}.ui-widget-content a{color:#0073aa}input.ui-widget[type=text]{margin:0;padding:.4em 1em;width:450px;line-height:2}.txt-button-align input.ui-widget[type=text],.txt-button-align button{vertical-align:top}#epyt_wiz_wrap .ui-button{font-weight:bold;line-height:2}#epyt_wiz_wrap .ui-icon{display:inline-block;position:relative;left:auto;margin:0}.ui-button .ui-icon{transform:scale(1.35,1.35);display:inline-block}.copycode{background-color:#eef;border:2px solid #c7d6e4;display:inline-block;font-size:.9em;overflow-x:hidden;vertical-align:middle;white-space:nowrap;width:400px;padding-left:15px;padding-right:15px}.pointer{cursor:pointer}.relative{position:relative}.epyt-search-results a.pointer.thumb.load-movie{float:left;width:160px;height:90px;background-position:center;background-size:cover;display:block;margin:0 25px 10px 0}.epyt-search-results .resultdiv{margin-bottom:40px}.epyt-search-results .resultinfo{text-align:left}.epyt-search-results .resulttitle{font-weight:bold}.epyt-search-results .moviecontainer{margin-bottom:40px;margin-top:-30px;clear:both}.epyt-search-results .closeme{right:110px;top:-10px;position:absolute;font-weight:bold;font-size:50px;cursor:pointer}.epyt-search-results .resulttitle .ui-icon{transform:scale(1.35,1.35)}.epyt-pagination{clear:both;text-align:center;padding:10px 8px 10px 8px;display:none}.epyt-pagination>div,.epyt-pagenumbers>div{display:inline-block;padding:0 2px 0 2px;vertical-align:middle}.epyt-pagination .epyt-pagebutton{cursor:pointer;display:inline-block;padding:0 10px 0 10px}.epyt-pagebutton>div{display:inline}.epyt-pagination .epyt-loader{display:none}.epyt-gallery-list.epyt-loading .epyt-pagination .epyt-loader{display:inline-block}.epyt-pagebutton.hide,.epyt-pagenumbers.hide{display:none!important;opacity:0!important;visibility:hidden!important}.ui-tabs .ui-tabs-anchor{font-weight:bold}.playlist-tabs{margin-bottom:20px}.icon-playlist{float:left;height:auto;margin:15px 30px 0 0;max-width:150px}a.ythealth{clear:both;float:right;margin-top:15px;position:relative}a.ythealth .tip{position:absolute;width:450px;right:0;top:-100px;display:none;background-color:#fff;padding:20px;border:2px solid #ddd;border-radius:5px}a.ythealth:hover .tip{display:block}.h3_vi_monetize-content{background-color:#f0f0f0}#wpwrap .ep-wizard-preview-video-wrapper{position:relative;padding-top:56.25%;width:100%}#wpwrap .ep-wizard-preview-video-wrapper iframe{width:100%;height:100%;position:absolute;top:0;left:0;right:0;bottom:0}youtube-embed-plus/styles/jquery-ui.min.css000064400000075000151435171370015055 0ustar00 /*! jQuery UI - v1.12.1 - 2016-09-14 * http://jqueryui.com * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px * Copyright jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup>.ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup>.ui-controlgroup-item:focus,.ui-controlgroup>.ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical>.ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label+.ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label+.ui-controlgroup-item{border-top:0}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:0}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:0}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc(100% - 2.4em)}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:0}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:0}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:0;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px .4em;margin:.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:0;background:0;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:0}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d3d3d3}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px #5e9ed6}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-icon-background,.ui-state-active .ui-icon-background{border:#aaa;background-color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #fcefa1;background:#fbf9ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}youtube-embed-plus/styles/ytprefs.css000064400000024175151435171370014044 0ustar00.epyt-debug { cursor: pointer; text-align: left; background-color: #dddddd; color: #000000; } iframe.__youtube_prefs__ { border-width: 0; } .epyt-gallery { text-align: center; } .epyt-gallery .epyt-figure { margin-inline: 0; margin-block: 0; } /*.epyt-gallery div[tabindex]:focus { outline: none; }*/ .epyt-gallery iframe { margin-bottom: 0; } .epyt-gallery.epyt-lb iframe { display: none; height: 0 !important; } .epyt-gallery-list { margin: 0 -8px 0 -8px; position: relative; transition: opacity ease-out .3s; display: block; } .epyt-gallery-list .epyt-gallery-thumb { box-sizing: border-box; } .epyt-gallery-list p { display: none; } .epyt-gallery-clear { clear: both; } .epyt-gallery-list.epyt-loading { opacity: .5; transition: opacity ease-out .3s; } .epyt-gallery-thumb { position: relative; box-sizing: border-box; overflow-y: hidden; display: block !important; cursor: pointer; opacity: 1; float: left; padding: 0 8px 10px 8px; height: auto; } .epyt-gallery-thumb.hover { position: relative; opacity: 1; transition: opacity ease-out .3s; height: auto; } .epyt-gallery-img-box { width: 100%; } .epyt-gallery-img { height: 0; width: 100%; padding-top: 56.25% !important; position: relative; overflow: hidden !important; background-size: cover !important; background-position: center !important; } .epyt-gallery-playhover { opacity: 0; position: absolute; top: -10px; left: 0; width: 100%; height: 100%; vertical-align: middle; text-align: center; transition: opacity ease-out .3s; } .epyt-gallery-thumb.hover .epyt-gallery-playhover, .epyt-gallery-thumb.epyt-current-video .epyt-gallery-playhover { opacity: 1; top: 0; transition: all ease-out .3s; } .epyt-gallery-thumb .epyt-gallery-playcrutch { display: inline-block; height: 100%; vertical-align: middle; width: 0; } .epyt-gallery-playhover .epyt-play-img { height: auto !important; max-width: 15% !important; padding: 0 !important; margin: 0 !important; min-width: 30px !important; vertical-align: middle !important; display: inline-block !important; width: auto; border: none; box-sizing: border-box; } .epyt-gallery-title { font-size: 80%; line-height: 120%; padding: 10px; } .epyt-gallery-notitle { padding: 4px; } .epyt-gallery-notitle span { display: none; } .epyt-gallery-rowtitle { text-align: center; width: 100%; position: absolute; left: 0; top: 100%; opacity: 0; z-index: 10; overflow-x: hidden; text-overflow: ellipsis; white-space: nowrap; } .epyt-gallery-rowtitle.hover { opacity: 1; transition: opacity linear .2s; } .epyt-gallery-rowbreak { clear: both; } .epyt-pagination { clear: both; text-align: center; padding: 10px 8px 10px 8px; } .epyt-pagination.epyt-hide-pagination * { display: none !important; } .epyt-pagination > div, .epyt-pagenumbers > div { display: inline-block; padding: 0 2px 0 2px; vertical-align: middle; } .epyt-pagination .epyt-pagebutton { cursor: pointer; display: inline-block; padding: 0 10px 0 10px; } .epyt-pagebutton > div { display: inline; } .epyt-pagination .epyt-loader { display: none; } .epyt-gallery-list.epyt-loading .epyt-pagination .epyt-loader { display: inline-block; } body .lity-container{ width: 100%; max-width: 964px; } .epyt-curtain .lity-opened iframe { opacity: 0; transition: opacity .3s linear .5s; } /* columns */ .epyt-gallery-allthumbs.epyt-cols-1 .epyt-gallery-thumb { width: 100%; } .epyt-gallery-allthumbs.epyt-cols-2 .epyt-gallery-thumb { width: 50%; } .epyt-gallery-allthumbs.epyt-cols-3 .epyt-gallery-thumb { width: 33.333%; } .epyt-gallery-allthumbs.epyt-cols-4 .epyt-gallery-thumb { width: 25%; } .epyt-gallery-allthumbs.epyt-cols-5 .epyt-gallery-thumb { width: 20%; } .epyt-gallery-allthumbs.epyt-cols-6 .epyt-gallery-thumb { width: 16.666%; } .epyt-gallery-allthumbs.epyt-cols-7 .epyt-gallery-thumb { width: 14.285%; } .epyt-gallery-allthumbs.epyt-cols-8 .epyt-gallery-thumb { width: 12.5%; } .epyt-gallery-allthumbs.epyt-cols-9 .epyt-gallery-thumb { width: 11.111%; } .epyt-gallery-allthumbs.epyt-cols-10 .epyt-gallery-thumb { width: 10%; } .epyt-gallery-allthumbs.epyt-cols-11 .epyt-gallery-thumb { width: 9.090%; } .epyt-gallery-allthumbs.epyt-cols-12 .epyt-gallery-thumb { width: 8.333%; } .epyt-gallery-allthumbs.epyt-cols-13 .epyt-gallery-thumb { width: 7.692%; } .epyt-gallery-allthumbs.epyt-cols-14 .epyt-gallery-thumb { width: 7.142%; } .epyt-gallery-allthumbs.epyt-cols-15 .epyt-gallery-thumb { width: 6.666%; } .epyt-gallery-allthumbs.epyt-cols-16 .epyt-gallery-thumb { width: 6.25%; } .epyt-gallery-allthumbs.epyt-cols-17 .epyt-gallery-thumb { width: 5.882%; } .epyt-gallery-allthumbs.epyt-cols-18 .epyt-gallery-thumb { width: 5.555%; } .epyt-gallery-allthumbs.epyt-cols-19 .epyt-gallery-thumb { width: 5.263%; } .epyt-gallery-allthumbs.epyt-cols-20 .epyt-gallery-thumb { width: 5%; } .epyt-pagebutton.hide, .epyt-pagenumbers.hide { display: none !important; opacity: 0 !important; visibility: hidden !important; } .epyt-gallery-subscribe { text-align: center; padding: 15px 0 10px 0; clear: both; } .epyt-gallery-subscribe a.epyt-gallery-subbutton, .epyt-gallery-subscribe a.epyt-gallery-subbutton:hover { display: inline-block; padding: 5px 10px; background-color: #E62117 !important; color: #ffffff !important; text-decoration: none !important; border-radius: 3px; } .epyt-gallery-subscribe a.epyt-gallery-subbutton img { width: 20px !important; height: auto !important; vertical-align: middle !important; padding: 0 6px 3px 0; display: inline-block; background: transparent; -webkit-box-shadow: none; box-shadow: none; margin: 0; } /********* GDPR */ body div.__youtube_prefs__.__youtube_prefs_gdpr__ { background-color: #000; background-image: -webkit-linear-gradient(top, #000, #444); background-image: linear-gradient(to bottom, #000, #444); padding: 25px; height: auto; text-align: left; } body div.__youtube_prefs__.__youtube_prefs_gdpr__ * { color: #e3e3e3 !important; } body div.__youtube_prefs__.__youtube_prefs_gdpr__ a { text-decoration: underline; } body div.__youtube_prefs__.__youtube_prefs_gdpr__ button.__youtube_prefs_gdpr__, body div.__youtube_prefs__.__youtube_prefs_gdpr__ button.__youtube_prefs_gdpr__:hover { display: inline-block; padding: 5px 10px; background: #E62117 !important; color: #ffffff !important; text-decoration: none !important; border-radius: 3px; font-weight: normal; border-width: 0; box-sizing: border-box; } body div.__youtube_prefs__.__youtube_prefs_gdpr__ button.__youtube_prefs_gdpr__ img { width: 20px !important; height: auto !important; vertical-align: middle !important; padding: 0 6px 3px 0; display: inline-block; background: transparent; -webkit-box-shadow: none; box-shadow: none; margin-left: 8px; } body .epyt-gallery-img-gdpr { background-color: #000; background-image: -webkit-linear-gradient(top, #000, #444); background-image: linear-gradient(to bottom, #000, #444); } /********* facade */ .epyt-facade { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; -webkit-transition: 0.4s all; -moz-transition: 0.4s all; transition: 0.4s all; } .epyt-facade:hover { -webkit-filter: brightness(90%); -moz-filter: brightness(90%); filter: brightness(90%); } .epyt-facade img.epyt-facade-poster { display: block; margin: 0; max-width: 100%; width: 100%; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); border: none; height: auto; cursor: pointer; } .epyt-facade button.epyt-facade-play { background-color: transparent !important; position: absolute; left: 50%; top: 50%; width: 68px; height: 48px; margin-left: -34px; margin-top: -24px; -webkit-transition: opacity .25s cubic-bezier(0,0,0.2,1); transition: opacity .25s cubic-bezier(0,0,0.2,1); cursor: pointer; border-width: 0 !important; } .epyt-facade button.epyt-facade-play svg { height: 100%; left: 0; position: absolute; top: 0; width: 100%; pointer-events: none; } .epyt-facade button.epyt-facade-play svg .ytp-large-play-button-bg { -webkit-transition: fill .1s cubic-bezier(0.4,0,1,1),fill-opacity .1s cubic-bezier(0.4,0,1,1); transition: fill .1s cubic-bezier(0.4,0,1,1),fill-opacity .1s cubic-bezier(0.4,0,1,1); fill: #212121; fill-opacity: .8; } .epyt-facade:hover button.epyt-facade-play svg .ytp-large-play-button-bg { -webkit-transition: fill .1s cubic-bezier(0,0,0.2,1),fill-opacity .1s cubic-bezier(0,0,0.2,1); transition: fill .1s cubic-bezier(0,0,0.2,1),fill-opacity .1s cubic-bezier(0,0,0.2,1); fill: #f00; fill-opacity: 1; } .wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper .epyt-is-override.epyt-facade { position: absolute; top: 0; right: 0; bottom: 0; left: 0; } .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper .epyt-is-override.__youtube_prefs_gdpr__ { position: relative; } .wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper .epyt-is-override.__youtube_prefs_gdpr__ { position: absolute; top: 0; right: 0; bottom: 0; left: 0; overflow-y: auto; } .wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper.epyt-is-override__wrapper:before { padding: 0; } .wp-embed-responsive .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper.epyt-is-override__wrapper .epyt-is-override.__youtube_prefs_gdpr__ { position: relative; top: unset; right: unset; bottom: unset; left: unset; } /********* YTVI */ .ytvi-story-container { display: block; max-width: 100%; }youtube-embed-plus/styles/ytvi-admin.css000064400000034436151435171370014432 0ustar00body.admin_page_youtube-ep-wizard { background-color: #ffffff; } .clearboth {clear: both;} sup.orange {text-transform: lowercase; font-weight: bold; color: #f85d00;} .align-middle {vertical-align: middle !important;} /* registration ************************************************************/ .vi-registration-box { position: relative; } .vi-cover-prompt { position: absolute; width: 100%; height: 100%; top: 0; left: 0; z-index: 100; background-color: rgba(241, 241, 241, .88); text-align: center; } .vi-cover-prompt::before { content: ""; display: none; z-index: 10000; position: absolute; width: 100%; height: 100%; margin: 0; padding: 0; -webkit-filter: url(#viblurfilter); -moz-filter: url(#viblurfilter); -o-filter: url(#viblurfilter); -ms-filter: url(#viblurfilter); filter: url(#viblurfilter); } .vi-cover-prompt-buttons button.button-primary, .vi-cover-prompt-buttons button.button-secondary { display: inline-block; margin: 0 5px; } .viblurfilter-svg { width: 0; height: 0; margin: 0; padding: 0; border: 0; } .vi-cover-prompt h1 { text-align: center; margin-top: 50px; text-shadow: 0px 0px 14px #ffffff; } .ytvi-wrap * { box-sizing: border-box; } .ytvi-wrap .center { text-align: center; } .ytvi-wrap input.regular-text { width: 100%; } .ytvi-step-1, .ytvi-step-2 { text-align: left; } .ytvi-step-1 { width: auto; padding: 0; max-width: 870px; margin: 0 auto; } .ytvi-step-1 .button-primary { font-size: 16px; } .ytvi-step-1--form, .ytvi-login-success, .ytvi-step-2-loading, .ytvi-login-loading, .ytvi-login-complete { background: #fff; border: solid 1px #e5e5e5; padding: 15px 0; width: 100%; margin: 30px auto; } .ytvi-step-1--form .side-signup { width: 49.5%; float: left; border-right: 1px solid #cccccc; padding: 0 40px; } .ytvi-step-1--form .side-login { width: 49.5%; float: right; padding: 0 40px 0 30px; } .ytvi-step-1--form .side-login h2, .ytvi-step-1--form .side-signup h2 { font-size: 1.15em; } .wrap .ytvi-step-1--form h2 { margin: 10px 0 15px 0; font-weight: normal; } .ytvi-step-2-loading, .ytvi-step-2, .ytvi-login-loading, .ytvi-login-success { display: none; } .ytvi-loading--message { text-align: center; font-size: 16px; } .ytvi-step-2 .ytvi-registration { max-width: 870px; margin: 0 auto; } .ytvi-step-2 .ytvi-registration iframe { border-width: 0; padding: 0; margin: 0 auto; width: 100%; height: 575px; display: block; } .ytvi-step-2-msg { background-color: #d8ebf3; border: 1px solid #d0d0d0; margin: 0 26px; padding: 10px; } .ytvi-login-success, .ytvi-login-complete { max-width: 100%; text-align: center; padding: 25px 40px; } .vi-adstxt-diff { text-align: left; } .vi-adstxt-diff p { font-style: italic; } .vi-adstxt-diff code, .adstxt-verify-message code, code.adstxt-block { white-space: pre; display: block; overflow: auto; margin: 25px 0; } section.pattern h2 { background-color: rgba(255, 255, 255, 0); transition: background-color 2s ease-out 0s; } section.pattern h2.ytvi-hash-scroll { background-color: rgba(255, 255, 255, 1); transition: background-color 0s; } h3.sect { transition: background-color 2s ease-out 0s; } h3.sect.ytvi-hash-scroll { background-color: rgba(255, 255, 255, 1); transition: background-color 0s; } .vi-forgot-pw { display: inline-block; float: right; padding-top: 5px; } .vi-contact-support { margin-top: 30px; clear: left; padding-top: 20px; } .vi-logo-text {height: 1.2em; width: auto; vertical-align: text-bottom;} .vi-demo { max-width: 1360px; margin: 0 auto; } p.vi-demo-lede, #ytform p.vi-demo-lede { font-size: 17px; line-height: 1.5; } .wrap-vi-settings-pre p.vi-demo-lede { padding-top: .75em; } .vi-demo-col-phone { float: right; width: 330px; clear: right; } .vi-demo-col-content { width: calc(100% - 340px); } .vi-demo-mobile { margin: 0 auto; width: 300px; background: transparent url(../images/vi-mobile-phone.png) no-repeat scroll; background-size: cover; } .vi-demo-mobile-caption-list { position: relative; min-height: 115px; } .vi-demo-mobile-caption { font-style: italic; margin: 0 10px; position: absolute; top: 0; left: 0; opacity: 1; transition: ease-in-out opacity 3s; } .vi-demo-mobile-ratio { position: relative; width: 100%; height: 0; padding-bottom:175.89%; } .vi-demo-mobile-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .vi-demo-screen { position: absolute; top: 5.5%; left: 12%; width: 76%; height: auto; z-index: 1; opacity: 1; transition: ease-in-out opacity 4s; } .vi-demo-screen.demo-hide, .vi-demo-mobile-caption.demo-hide { opacity: 0; transition: ease-in-out opacity 3s; } .vi-demo-screen-2 { z-index: 2; } p.vi-ad-source-row { text-align: center; margin-top: 20px; } .vi-ad-source-row img { vertical-align: middle; display: inline-block; margin-bottom: 13px; padding: 0 13px 0 13px; max-height: 20px; height: auto; width: auto; } .login-expire { background-color: #d8ebf3; border: 1px solid #d0d0d0; padding: 25px; } /* admin *****************************************************************************/ .wrap-vi {max-width: 1064px; margin-bottom: 100px;} .wrap-vi h1 .yt-admin-icon { width: 16px; height: 16px; } .wrap-vi h1 a.button-primary, .wrap-vi h1 a.button-secondary, .wrap-ytprefs h2 a.button-primary, .wrap-ytprefs h2 a.button-secondary { float: right; margin-left: 15px; } .wrap-vi section { margin-left: 20px; display:none; padding-top:15px; } .wrap-vi th label {display: block;} .wrap-vi th small {font-weight: normal; font-style: italic;} .wrap-vi h2.nav-tab-wrapper { margin:22px 0 0 0; } .wrap-vi section#jumphowitworks { display:block; } .wrap-vi .no-js section { display: block; } .wrap-vi h2 {margin-bottom: 30px; margin-left: 0;} .wrap-vi h3 {font-size: 1.2em; font-style: italic;} .save-changes-follow {position: fixed; z-index: 10000; bottom: 0; right: 0; background-color: #ffffff; padding: 0 20px; border-top-left-radius: 20px; border: 2px solid #aaaaaa; border-right-width: 0; border-bottom-width: 0; -webkit-box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.75); -moz-box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.75); box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.75); } .button-primary {white-space: nowrap;} p.submit {margin: 0; padding: 15px 0 10px 0;} .wp-core-ui p.submit .button-primary { font-weight: bold; font-size: 21px; height: 50px; padding: 0 20px 1px; background: #2ea2cc; /* Old browsers */ background: -moz-linear-gradient(top, #2ea2cc 0%, #007396 98%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#2ea2cc), color-stop(98%,#007396)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #2ea2cc 0%,#007396 98%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #2ea2cc 0%,#007396 98%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, #2ea2cc 0%,#007396 98%); /* IE10+ */ background: linear-gradient(to bottom, #2ea2cc 0%,#007396 98%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#2ea2cc', endColorstr='#007396',GradientType=0 ); /* IE6-9 */ } p.submit em {display: inline-block; padding-left: 20px; vertical-align: middle; width: 240px; margin-top: -6px;} .vi-red { color: #de1515; } button.button-primary.ytvi-btn-toggle { float: right; position: relative; } button.button-primary.ytvi-btn-inactive, button.button-primary.ytvi-btn-inactive:hover, .wp-core-ui button.button-primary.ytvi-btn-inactive[disabled], .wp-core-ui button.button-primary.ytvi-btn-inactive:disabled, a.button-primary.ytvi-btn-inactive, a.button-primary.ytvi-btn-inactive:hover { background: #e51f1f !important; border-color: #a22222 !important; box-shadow: 0 1px 0 #a22222 !important; text-shadow: 0 -1px 1px #a22222, 1px 0 1px #a22222, 0 1px 1px #a22222, -1px 0 1px #a22222 !important; color: #ffffff !important; } .wp-core-ui button.button-primary.ytvi-btn-inactive[disabled]:hover { background: rgba(229, 31,31, .5) !important; } button.button-primary.ytvi-btn-toggle .ytvi-notyet { display: none; position: absolute; background: white; width: 540px; height: auto; top: 25px; padding: 15px 20px; border-radius: 10px; box-shadow: 5px 5px 10px 0 rgba(0,0,0,.2); right: 0; text-align: left; color: #333333 !important; box-sizing: border-box; text-shadow: none !important; white-space: normal; border-top-right-radius: 0; z-index: 100; } button.button-primary.ytvi-btn-toggle:hover .ytvi-notyet { display: block; } .iab-cat-parent {margin-right: 15px; display: inline-block;} .iab-cat-child-box {display: inline-block;} .iab-cat-child-box.hidden {opacity: .3;} .iab-cat-child option.hidden {display: none;} .wp-picker-container.wp-picker-active .wp-color-result-text {font-weight: bold;} ul.list-ul {margin: 15px 30px;} ul.list-ul li {list-style-type: disc; } .alertify .ajs-dialog {max-width: 600px;} .alertify .ajs-body .ajs-content {line-height: 2em;} .alertify .ajs-body .ajs-content code { white-space: pre; display: block; overflow: auto; line-height: 1.4em; margin: 1em auto; } .ajs-button {cursor: pointer;} .ss-vi-img { max-width: 700px; height: auto; } .ss-vi-wizbutton { max-width: 100%; height: auto; } .vi-how-works { margin-bottom: 40px; position: relative; margin-left: 10px; } .vi-how-works::before { clear: both; } .vi-how-works p { line-height: 1; } .vi-how-works img { width: 50px; height: 50px; float: left; margin-right: 15px; transition: ease-in-out transform,opacity .1s; opacity: .5; } .vi-how-works:hover img { transform: scale(1.1); opacity: 1; transition: ease-in-out transform,opacity .2s; } .vi-how-works h3 { margin-bottom: 0; } .vi-how-works .vi-num { position: absolute; left: -20px; font-size: 22px; font-weight: bold; color: #000000; opacity: .2; font-style: italic; transition: ease-in-out transform,opacity .1s; } .vi-how-works:hover .vi-num { transform: scale(1.1); opacity: 1; transition: ease-in-out transform,opacity .2s; } h2 .vi-num { font-style: italic; opacity: .5; } .form-table.form-table--vi-appearance { width: 100%; } .form-table td { vertical-align: top; } .vi-story-demo { width: 65%; position: relative; margin: 20px auto; } .vi-story-demo--box { border: solid 1px #e3e3e3; } .vi-story-demo--screen { width: 100%; padding-top: 57%; background-color: #888888; position: relative; } .vi-story-demo--screen span { color: #cccccc; width: 100%; text-align: center; font-size: 20px; position: absolute; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); font-style: italic; } .vi-story-demo--screen span small { background: #dddddd; border-radius: 5px; display: inline-block; padding: 5px 10px; box-sizing: border-box; color: #333333; max-width: 90%; } .vi-story-demo--info { padding: 8px; } .vi-story-demo--featured { height: 20px; font-size: 9px; text-align: right; margin-top: 8px; text-transform: uppercase; line-height: 20px; font-family: Verdana, sans-serif; } .vi-story-demo--title { font-weight: bold; line-height: 1.33; } .vi-story-demo--featured span { opacity: 0.5; } .vi-story-demo--box .vi-story-demo--featured img { width: 20px; height: 20px; vertical-align: middle; margin: -4px 0 0 5px; } @media (min-width:768px) { .form-table.form-table--vi-appearance { width: 53%; float: left; clear: left; } .vi-story-demo { float: right; width: 44%; position: relative; } } .nav-tab-valid, .nav-tab-valid:focus, .adstxt-verify-message-valid { color: #00a000; font-weight: bold; } .adstxt-help { float: right; background-color: rgba(0,0,0,0.07); width: 390px; margin: 0 0 20px 10px; border-radius: 20px; box-sizing: border-box; padding: 20px 35px; } .adstxt-help img { width: 50px; height: auto; display: block; float: left; } .nav-tab-valid:after { content: url('../images/adstxt-valid.png'); } .nav-tab-invalid, .nav-tab-invalid:focus { } .nav-tab-invalid:after { content: url('../images/adstxt-warning.png'); } .nav-tab-loading:after { content: url('../images/ajax-loader.gif'); } /************* chart */ .vi-report-error.hide, .vi-report.hide { display: none; } .vi-report, .vi-report-error { text-align: center; } .vi-total-earnings, .vi-total-earnings-error { float: left; width: 25%; margin-top: 60px; color: #1193aa; } .vi-report-graph, .vi-report-graph-error { float: right; width: 75%; } .vi-report-canvas-box, .vi-report-canvas-box-error { height: 300px; width: 100%; } .vi-total-earnings-num, .vi-total-earnings-num-error { margin-top: 20px; font-weight: bold; font-size: 3.7vw; line-height: 3.7vw; } .vi-total-earnings-num-error, .vi-report-canvas-box-error { color: #cccccc; font-weight: normal; font-size: 45px; line-height: 45px; } .vi-report-canvas-box-error { background-size: 10% 10%; background-image: linear-gradient(to right, #dddddd 1px, transparent 1px), linear-gradient(to bottom, #dddddd 1px, transparent 1px); } @media (min-width:1280px) { .vi-total-earnings-num, .vi-total-earnings-num-error { font-size: 45px; line-height: 45px; } } .iab-cat-tags-display { margin-top: 20px; } .iab-cat-tags-display:empty:after { content: 'None selected yet'; font-style: italic; } .iab-cat-tag-button { display: inline-block; background-color: #0073aa; color: #ffffff; padding: 5px 10px; border-radius: 30px; font-size: 12px; margin: 0 12px 12px 0; cursor: pointer; } .ytvi-msg-congrats { display: none; }youtube-embed-plus/styles/ytprefs-onboarding.min.css000064400000010423151435171370016735 0ustar00#wphead{display:none}#wpbody{margin-left:0}#adminmenu,#adminmenuback,adminmenuwrap{display:none}#wpcontent,.auto-fold #wpcontent{margin-left:0}#wpadminbar{display:none}html.wp-toolbar{padding:0}#footer,#screen-meta-links,#wpfooter,.auto-fold #wpfooter{display:none}#wpfooter,.clearboth{clear:both}.pad20{padding:20px}.center{text-align:center}.bold{font-weight:700}.orange{color:#f85d00}.smallnote{font-size:small;font-style:italic}.indent-option{margin-left:25px}.ui-widget,.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:inherit}.ui-accordion .ui-accordion-header{font-weight:700;margin-top:15px}.ui-accordion .ui-accordion-content.header-go-content{display:none!important;height:0!important}.ui-widget-content a{color:#0073aa}input.ui-widget[type=text]{margin:0;padding:.4em 1em;width:450px}.txt-button-align button,.txt-button-align input.ui-widget[type=text]{vertical-align:top}#epyt_wiz_wrap .ui-button{font-weight:700}.ui-button .ui-icon{transform:scale(1.35)}.copycode{background-color:#eef;border:2px solid #c7d6e4;display:inline-block;font-size:.9em;overflow-x:hidden;padding-left:15px;padding-right:15px;vertical-align:middle;white-space:nowrap;width:400px}.pointer{cursor:pointer}.epyt-fitvid,.relative{position:relative}.epyt-fitvid{padding-top:56.25%;width:100%}.epyt-fitvid iframe{bottom:0;height:100%;left:0;position:absolute;right:0;top:0;width:100%}.wrap-ytprefs-onboarding h1{line-height:40px}.wrap-ytprefs-onboarding h2{line-height:2em}.wrap-ytprefs-onboarding .box-vi-not-interested{display:none}.ytprefs-ob-step{height:0;opacity:0;position:absolute;top:-200000px;transition:opacity .3s,visibility .3s;visibility:hidden;width:100%}.ytprefs-ob-step.active-step{height:auto;opacity:1;top:0;visibility:visible}.ytprefs-ob-title{font-size:2em;line-height:2em;text-align:center}.ytprefs-ob-subtitle{font-size:1.4em;line-height:2em}.ytprefs-ob-content{margin:0 auto;max-width:800px}.ytprefs-ob-nav{border-top:2px solid #ddd;clear:both;margin-bottom:50px;margin-top:20px;padding-top:20px;text-align:center}.ytprefs-ob-nav .ytprefs-ob-nav-hide{display:none}.ytprefs-ob-nav button.button-primary,.ytprefs-ob-nav button.button-secondary{display:inline-block;margin:0 10px}.ytprefs-ob-nav button.ytprefs-ob-nav-close,.ytprefs-ob-nav button.ytprefs-ob-nav-prev{margin-right:25px}.ytprefs-ob-step1 ul.ytprefs-ob-filter li{margin-bottom:15px}.ytprefs-ob-step1 .ytprefs-hover-icons{float:right;margin-left:30px;min-height:200px;position:relative;width:160px}.ytprefs-ob-step1 .ytprefs-hover-icons img{display:block;height:auto;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s;width:100%}.ytprefs-ob-step1 .ytprefs-hover-icons img.yob-icon-visible{opacity:1}.ytprefs-ob-step2 .ytprefs-ob-setting{display:none;margin:10px 0 25px}.ytprefs-ob-step2 .ytprefs-ob-setting.yob-gallery-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-live-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-privacy-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-single-visible,.ytprefs-ob-step2 .ytprefs-ob-setting.yob-standalone-visible{display:block}.ytprefs-ob-step2 form #facade_mode~.box_facade_mode,.ytprefs-ob-step2 form #responsive~#boxresponsive_all{height:0;opacity:0;pointer-events:none;transition:opacity .3s,visibility .3s;visibility:none}.ytprefs-ob-step2 form #facade_mode:checked~.box_facade_mode,.ytprefs-ob-step2 form #responsive:checked~#boxresponsive_all{height:auto;margin-top:10px;opacity:1;pointer-events:all;visibility:visible}.ytindent{border-left:5px solid #e0e0e0;padding-left:15px}.gdpr-options-left{float:left;width:65%}.gdpr-options-right{float:right;margin-top:20px;width:33%}.gdpr-options-right .img-gdpr-message{height:auto;width:100%}iframe#gdpr_consent_message_ifr{min-height:250px!important}.ytprefs-ob-step4 .ytprefs-ob-content{max-width:100%}.wiztab-screenshots{border:5px solid #ddd;clear:right;display:block;float:right;height:auto;margin-bottom:15px;margin-left:30px;max-width:50%}.ytprefs-ob-success{color:#00a000;font-weight:700}.ytprefs-ob-success:after{content:url(../images/adstxt-valid.png)}input.checkbox[disabled],input[type=radio][disabled]{border:1px dashed #444}input[type=checkbox]+label .check-note{display:none}input[type=checkbox]:checked+label .check-note{display:inline}#not_live_on~#wp-not_live_content-wrap{opacity:.3}#not_live_on:checked~#wp-not_live_content-wrap{opacity:1}youtube-embed-plus/styles/images/ui-bg_glass_75_dadada_1x400.png000064400000000503151435171370020417 0ustar00‰PNG  IHDR£‰DgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿ«1ÍtIMEà  "&~KIDAT8ËcxúŸ‰a"*£¯·n{11þabgb4a¸ÿ‡‰)‡áÑ&¦v†§žû1101š01þfb\ÁÄ 3ðECî _>o%tEXtdate:create2016-09-14T12:31:34-04:00-Ôî%tEXtdate:modify2016-09-14T12:31:34-04:00\‰©RIEND®B`‚youtube-embed-plus/styles/images/ui-icons_888888_256x240.png000064400000015707151435171370017231 0ustar00‰PNG  IHDRðEžr@gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDˆIî( tIMEß 5ûsƒ¢ªIDATxÚí{eE}Ç?H(bXˆ!°Â²[R‰`¢˜JùH•”!w’ªMÔbÉݱ¢FÉѨh™‘Ìð³âÜÑ ’Ú¥ÀXTÍ#»D T…;"baÜRqw}†¼‰»úGŒë)bÉÉçÕ}N¿Î9÷νsO§îÜsϯ»Owÿ~ý8ýûõ¯ƒ<šŒ3Á @Ãá@F›ö 3±‘ð ¢Í °Ò$èµ ¾ý´ +Ç\ö $åÁ—±‡ÀÜ†éŸ ¶ö£ÆOokÃØž0±Z "ö¯Æ"`Jy„úQzÑî©‘B7i‡åQ'.¬«†”ë”qè¤ëI“v C…ê¥TŠŸ´2ÝómÏkæÝ5e[7²ÀܺÂÔíÃGôt Í©Ôk›¦!HL¹^?3dJ¯š[‘© f•ZµíØS0·MsÞÍ}`–²­ŸÙT8«t óôUS¿Ë´§°Š©ÿ âê†@1å‘a•`´Ñfe”Øk‡€†Ã¯6^/ ‡€†Ã @Ãá áðÐpx{€|ÜAçƒQÆÀÍ"À¦ŒiíÌO°³§Ž=€]å}¤„¤œ=€›Ì\…zíÑ\»¦mc¿-õ•Ü·>õ‘±(ÚDЯ†'¡Lú6=ÝÛÅÀ”;óÓíñÍã´“ï‘€l º–±êÔ ¨ÃØÛ§‹=€©ý¹åM/>¡ÕÚ Ì“6ª(ƒÚ¬ÛØ0Û˜„ËÖÿ$%GI_Økmàà+Ç$ž.qÿ †W7~!¨áðÐpxh8¼4^/ ‡€†£üÆQG8ÀUþúk¥¥óV½è}©„Aæ ´æ º*Ès%—‡€Œº~ÿaJYT}†-ÿëc*vá¨Û­.¡JÄ=C `+~àP}üÀ¡‚\Š”=.ù 4ù»Ü3нÌ%4 Ph‰ ¶F,å_\‹¯³Ö±WRЃ>4j"m£h„iì@IŸ®zJÒ¼ôy tsÚYéÌÍ@Ìee'¡Cë±…r‘ÎjmܹCê&¹¤[µLMÐ%m{èe^³.Î%”šfîílNÃÖźuѶd{ºË$²*ì"n§K9(Ó¸uõf¹c/Ó¯<ÆÖ-ÝÀ!LU˜‡ió¨Œ{–&Ðà0èlæçWˆëW/ ‡€†Ã @Ãá áðÐpxh8äÍ¡‰³ÔÁÁp©hµx¶½Ñ®O)…L’Q.îÞ«U@ïP--[ÎÝjÀäj6ÓÆµKÇŽô”ÉŸ¾ íÊ5ær ¨7‡š·pºh´ÛŠ{½]Zn®!ôùw«Ý3Ú¹íµíR±³Øz z[Ó tå­a.îÔm[°uDÝ,iì9Ð¥cwánϹ›CzµÆ ÈÚ G·m,o}‡RÊf…±NaÔ÷ JÄu˹ ]žoßÛ¯¾-¶Mìu`f ]ÚgÖJ(÷U@•E ¤¡N=”¾Mϯ‚,ßU禧ɮö `z~S=°¥œùn0íoÎ粤=€©ä Œ©øæÌ™ŠhJC,šÝìKÅ»šJ°šs Ñ/§ù&ö®¦Ç޸咲C€›9UhuaëÄv«^u9ÜÆàú&m¦tªjcŸ(áýˆ0 àH @Ãá—‚/ ‡€†Ã @Ãá áðÐk R]y{Lú*—¢·kê»ûú¹ ,‹ÝCVö¢=€ &¹Ë*a¢±Ûã°ÁTº›«ÌÛÃëöW;ƒuñM©ÙB˜-»·ßâb£¸5²Úéß® Í`ÒØÙbÚpâ]¶Ó´y4t¢º—tC žèŒÌúªlh¨b´µ»Ù”Þ‡Aˆ«®/(qWõ\Õóí;›‡™ÈŠÂòÈG¬'ì+? ÓåUÛ@…©ë‚¢ÚsÝBÔññÑd * «È°í$»²µîè=ˆº‡¿U!zÓŠUO{¡é'Ä!`5Í”ª:øÈÜKU£=€‹¶ßîÂŒÌ@mRa®úlÒ{IB%©bˆª5}Z¨›Æ€‹²T7 ì…²ÕÍj±êDÓe‰!›ð0¯–14]óFÁ¯Êhû½4^/ ‡€†Ã @Ã1|ЖEÒf /nºl“Ê&t¢êB´ènȫؠý ʹ‹wSÅLÔÈO—DHZÆpU]Ög¡Àë@ó*µyµ;iÕ-ºJÓ…RõÞ½¨ëŸHCt5ñ“«jNÕÅÞ§¼Ær‘ €ìL®s™Äì_S>ËܵG]ÿ†½³ÉÓÕÏ—- ò©¸¹h_ÁY•™=^Û4Y û«ãkN®œÕ»ÿõNÕc¶Œ>BGÀ×A"IÕšL¦@<4AúG¢èúùéù<È!s¸"=; a[@õȼ…‹U¦w0b?õÂõX =°0HÁj¯ür~zåV¾(óU±Î&Ïv$“‰>‘R»@PèáéªÈlO$»ðH!Ÿ`;pÄdvY÷$‹µ4m—×ÈÀñ^‚Uü¬_‰üB©ó–Û`Ú‘yP«¾å«0l'‡z&m0†OౡðÐpxh8¼4£$³éJÃl_Ò¿Œ±øï²Aµwˆà`\q묜ÒcM¿ !OJÖe™8Ë|z=¯Œ=[K<.ãi®åǸ–§•"0kÍýÞ˜ºWó =ÝîËý™Ÿr)Úò0Oç1%Î^ɦ÷q£&él‘è» ;‹Š©GXâ)…°Ì[¤ÊÏ…Ÿc ºœCUîörHú=ŽÒï1®eqà3<Êqm ¨ŸáâLZò§íPì(DVó¶2¦K~‰,ðy)øšxQ@že‡¦z€RBÆÓëcŠ"~«„ß²Dš€É”–ß"2'‰ÀóZºoãÒï|Ç8Æ8Û€WðaÆ5p€—TÜa’,iÎ1„Yò"@¶”°¾›ã)à?æÓ†ìÅß»µ!¶b/ó”$y rHê«öC*sìÏõYê+r §××(ó°‹x‘!—i ™{@³:>P¤RNÄöŒŠ·³•À®%ü¸Fα./TØóDøUCú“|Íøü'ȔՇx¢ ™;ÿ­Üw1w×s:Ã?rð^f”ñOÏ×EÌ1Ÿ~6 ûïçY\—‚UìÏãÅœÁ Úçh&(¶ 8ÄÚ0h'yWç¾óØÂ'â«w(¨—Ѐ:ì* yMjÕm¦v/ ¶Ÿäí…{ûpðn€xÐ/¡ (²?_Àó­iüRz5^ Ùz¸,fü\ÆÓ ú,Osx‚YM`Æ/óÞô*6;xˆ½Ìg2Ë %sìW2i‡ðÑa l!Þ¦€)»9Ï£™ŽÕ•AEù~‘5Î]ñ÷¸‚fë"¦G" z ›•èª^`[î[UE0CÔÎå!f ¼,h†ó5ºøc5C¨m:î…X@`¿Iæ„ëb§Sdÿçù˜ô«s—hîæ¯yeè QÙw¾ŠîB~ùÂ+`$ù;\él“<¸Aø±œ¾åÀrÅz$" ±˜DÌ/~?U©¯‹ìïeê£öÞË!™ýÃ$Á(é<*À @Ãá áðÐpx-<.è3œ @Ëac¶.'oºaV©QŸtÙÅ·üƒ„Ò_Þ²ápŽ~Xñ\Q[¾·t€/Xê§“[_(ƒ×Çf,±ÄRòC| lÑe˜WØæ¯ó¦xê1å¥L)չϰ8ÂK¹*§¬÷wßD·/‡ŸãÖøn”Ú- }ß‘ô×îB|W}|´Â·Ðz&–$u7@‡}LÐ&èæß×iÑŽp=‡Ù Êýßgð—jw)^LZæóÜ/ @ÄþH›V=¹5eOö~Š7ó)ÞÌÃìÒTÐ,û9ÈTA§'nýT=Áåøöÿâ~ÈE<Ç6ƒ:„L³ ¥úW8Í~GIOª˜,Yƒ õHªné‡ Jø#\¯xþA¦X溉½…¨N–S癫ä¨EÜÒ¥ÖÞÊ÷Xç'9Æ”!f™g7ò\ÖŸáb¾Ë…|—Køž6T´–>c¤#ëÔ%œæ¸V]“´¾I%uBª5Ý9µµÅ¯9Üøà\Þ @‹µLž”VÓç™ãI­ÚT‡5lΜoáavñY~Ÿ/ðz…qÙ,óbª/쇗ò/ü&ÿÁoðMÞ®P©¼HŒ¥¦ñ:` oaLcø²$1>¿–ßa_š~´EvQù5®áŸy­ðûK “–wÛ]öV‰\MbL}ïï nå{ü7_æ$_f½@MØ?g|vhЇO¤îiT=Ðwx9ßæ×ù6¿•M‚R´¹‹Dß?­Pþdô3ù¹žÍddco„/–¬»‰\™ò=Äë¤Zyöù¹*N“Ö«¶Ig/7òÎØœ£(¡·8ÂÍ6ƒÝÄ~ù¼¢bC2XSÒßɇ˜áv>ÀGø[îè“‘UBuéûóS¿ ­Ü°f ë¨Ï©»óô%&ã±?gËé.n^ú[$CAÙ9DÄ`}ëOÞ¨Þ&R5j‘Q|Où cÌ]z@hd¿}‰€ê àvnâA®swò‰ºÄ$óS&óqóN¢²wù²8BHH—.al¬/¢.uSç?Ï-¯[ ýÉQÇßË0¥ ›~Ã-ûêÓ—­ìŒ´¢Ž}‚ÔdK Ù@ÿ3>Ïû¯çüLb“,ç㺪ƒ§k,Ox”AJLþÜ Qôö ‡×4^/ ‡€†£y©Uï4T•û‡tÎUÞºãám`:­€ê¯!ÕýÔE‹0Ý®u\kÕð¹øý_A>Ê>îå^ÞÅ»¸‹› 1£Úy(þu.pnüáf>NÈ­ÜJÈǹ¹ßì¾"oÍ·g(Òm!ŠždzŒì5pšžåà휪=‹‰ØNÙ†~Y½/1É ¦YP,ªDO>ÁÇÙ©ÉE² {÷Q\)|uz}šï(ÖBOðU¦˜¡§#/‡ÛÕáÉê}W©H6¯½ªÜgvs!‚ÔPf^áò3dBˆ‘ª³3uðB¼J|œ³y¾°ïe0 ,p%“ÀdAN°Ø™²ÿ„"…‹âoõöÔ§ùE~œÇÿ)é_åF¦xqªÓ/ßO^¯_†¨V=g™OwªšÐ VÅ.Á+…ë"þ”Ÿðýä†8<g''ød颹)cŠ­ì¤RDz¶IáZÄXÌò„ýE|‹7óð¿ü€ŸðFõ(S„@;fqYw\øSc^så˜gŒqÆ•-v‰»E˜Ý}t™a;¸”K3›!yo`Äþ1¥§ 0wUMÙcÊ¢ ¸õò²Z¿Šý]Éæ!¿ÖþN ŽpŽâ¿–°íètz[8]ºL.I¿þH⯀H‡1E¤÷“’‰U±ùÌ?~Ιlã6‹ngs€ç9;®ºu¶W0ùÂÂÍàÉôQK¯š£|#îþ h'³_ÅÀiþDøu÷ž®°È5F4xœVºÀ™Fíüƒt?äþÂ@TŸàC¥ç7Cl…±”Õn6Ìp6ÏóU²ÎvE›9ˆV»Š¶9“rfªê 1ó²k û£`[6Ê™ÁÛ"ÊöÛáAvÆEöÃ'xxŒh¦QÄŸå œËÙJs¬9‹ƒó9Ÿû8Ÿ_‰ÿ›±Sq/™\‰ºAíàLv°ƒÀÍIˆlˆü_DàÌN£ÍÑ3tø& ŠÍÑûŸc,¶Í{ˆØoš¸ÝÆuü'p±‚ý2MÈ1>J—ZË¿‡5©ïœFì-ì?>o®ÏþÊ…Ø–ÛT^ôr ZJ©­¦žÊjùhF‹nÚñŸm9­¹zޭν:ÿÑüâyþ˜µØ0c ?ÍÅ]åßyŠUm-…é~C/dÈ|l’7Ç?åú˜ƒ ûÙe_>DÑ¡ŸÒW‹ØÅ_Ö´â%ÎåžX¬Zå5¡Ñ,Î.Ž/ Gót¼4^޼Ôú ¿›¯§‹´_çîAgÜ£7—‚ÿ•Ë×sE!ܧ¥õñWñ*¶ñ¦AgÞ£>Äà—p9r¡îNÙŸ­Ð½QÙ œ$Œ=f«ð?qb_fÆ…¨“‚¢êdý䆢´€ &(ª_£Œ«º»5þ¨q^ü½Ï’«ŽÂ`–âÊ_ÒÆ³…°ÑCN¦æE¿Ds½©‘ @Ôþ×X£Ød‹ž¢šÖîÕ6€Àá\ÐhŸl^²Í“ÚB,1ÉÆ9 M¶2 ‰^ŒG ™´âÿ-áW¶C€f[Xò”.ð¬‚ÒI¿£þ!¿n?©¹–ï.3»_PÑpǹ‰š@çè}d‘@'ÿ»±ÎêòŠ£ð3d>óUè?RøÏI:}û]ñk<` Êß\LXfSœâôéXª Y Õ E•ˆìã¶ŽÇÛho~scÆv=ûí®˜C`™x+“Ê!bcÏ;yŸ6…SiçŸqRNÊ, ê²ÖÞ:ÿìîW”qUw;–9~ 8¦cûSë_Ö\Ëw'é¦^xŠô÷q'cÜÉû ¾¶·:QFf†¥¡Æß·ó~õŽÜô,%}Ï W'Û;»“[=ä÷ÄZº“š6^õ$!E$'•-vs+´sÔUö(âtØg¿Mö¶¸Ã‘,ð»é›ÿQ¾h<1c”ÑXðIxm`Ãá áðÐpxh8¼4^òèX¼ùo26ˆ²nQõîHˆAáIž4Ò;F[…ŽÕ’aÓAî¶³Ï*jdÂÓÒ¦Ða=Ö4tX/ˆ,~‡ôÃRJ*Ôo-Oâ]ÅU†ò¹³ßŪiS ï+8³¬*—dõÞ„C)^H~M?ª¼èÐf{ôlC ‡Ù] GG èâË%П֡£ÊΨíÔYT ¨Oœ° û‘•BÙ¯õ˜yXRÐ €>¾œF/X¬§†Ší×›êIà³,*±áYSö/ °ßÝÁ¢Ò(Ÿ‚¶øƒ‘`}„¢D,(¯“KâµXg±pæÆ4‹¬ÓbZËD·'OW“hŒ+RCCØMyÐýYý‰Ãs'!›«”§nJˆCì œC#\r=ÉhÝLÝ”ðêà†Ã¯6^/ ‡€†Ã @ÑÓÞ[„¸9ô3\È;4[C#=Ûç´G=6!hÑMÝ^NWÉä9Êè:,粇sžÀo0ÝCƒd!è8;ù2¯&äs\K¨t‡¡Å½l·:“-º*Îÿ–%ö›î¡A$-ºüˆ‹€G9Î4?äBÅÞ8Á=ÜÏ:Û5˜FáT¾ªÇcwê[8Í–‚?íkxœk‡ëjúã©/~}œcñ…¿n"]ÀÕÀ·¸€oñ®.0x†+™ä>`/]Þ­5®.`+g(ö"FÎe¶rð‚âíäâøsð‚"ý­ÀËbúËüÛ+"xx¥p÷•ñ=àºÜÂN°K™žÞLâBé×±gû [y¿ Eú…¼?þ˜âGa¶*èJ$s€u¶§›¦—˜ÌŸ2$JàƒLqW3¥õ‡­³[ú·7ê7ÝCƒD¢ó0~Ä·x%¢>1 ³Xö)Ϲ GË`jô!÷g±Ÿ ãïFÅæÕÃoÐpøÙrÃá áðÐpxh82°P—¾À—Rú—çþõ›Þïò š^É[À§ çå~F: .Ýæf®ßô~—oÐôÊ8ó÷îæ­Ê\À#ñu]úíüyþ ÎKµ ý¦÷»|ƒ¦×@4džÿÅmS¯Q\‰ÈÓWÓ£eWµñC|[úùúßV~[þÍñOIÓtñMt1êR—DÞU¬Ú´Í•l¶ûw؃zwpÝô]âÛÓW¹Ãv Þ`–ø ©é‘«ýÝÚúKî~ˆÛèÉ-ÕÖ°|1ót4ô0w‹ãq>Psßœ¾½ÀId‹hEÎ%u]þ\Ò1{¸Î˜ƒ›¹M`OpVý$¼ ü/ÐÚ#˜Ñë€=ÿö¸65ÙƒÚÍ|„ÐSö÷~XÞBõ! ~¯Ï_1…j]¸)}SþŠç/”£G" ²¿C@4 ´àF_&™Œ¯Dºxv¨¸{\ Úèé(érþÃÂݯH½jý$å +Óo“د~jIDpTÊ@‚£Š+yz;­À¶6~hˆoK?ŸB?âÛÊoË¿)~ÞyUY: uþêR—D´°Æ¼"GYNö©K„ß.FùÞ¶aô~—oÐôˆþs8ƒKã»GYæ/¤puéÏœÚü}ƒöl½ßå4½2¼AHÃáµ ‡€†Ã @Ãá áðÐpxh8DeítÞa§{T€¬ O¯Ž)C×¥{ ŠC@=Ö³¦P¯åµSðqÌHOÜ3è`c Î—w‚°¢®ßCƒ¼Œƒ‘ãŒ鑇=B̦_ÀnPáQÅ!`¼B*rls õÚ¯M€UÕUuN=ºÎ©SÁµx4g :ƒ…€†Ã €Œ6!íAgb3á ‹6+ÀJ“D ×0øöÓ&¬s؇Nâ”_ÆBs&&ØÚ>~=½­ c{vÌÄj%ì_DÀ”òõYèE¸¯F qܸ–G¸° ¬R®SÆ¡C¬ÄEŒÛ!ª' ‘NP)~ÜÊtÏ·=;¬™w×”meÜBH{sè S´âé&šS©×6MCP6åzýÌ!(½hnE¦6˜VjÕ¶cOÁÜ6Íy7÷iʶ~fK¡¼˜¼jÚ¬T0ó§<ø2ö½€­Ž6+£Ä^;¼4~%°áðÐpxh8¼4^/ ‡€†ÃÛäã:ÿ›Œ2ön6eLÛh`~‚=uììêp‘÷‘’rön0sê´Osíš¶ý¶ÔWrßúÔGÆ h  _ C™ômzº-¶‹=€)wæ§Ûã›FiÇß#Ù@u-cÕ©P‡±·O{SûsË›^|B«µA™'m TQ™®Ãn`.[ÿ—Ü«ƒ |åÔµtþ7^Üpø… †Ã @Ãá áðÐpxh8¼4^Žs¡C8ÀUþúk¥¥óN½è}©„Aæ ´æ º*Ès%—‡€Œº~ÿaJYT}†-ÿ‚õ1»pTíV—P%âž%°?p(€>~àPA.E Ê—üšü]î1Å^æš(´Ä[#–òŸ\‹¯³Ö±WRЃ>4j"m£h„Iì@IÍ>]õ”¸yéóèæ´ÓÒ™›A6—”†­ÇÊE:«µq7æ©›ä’nÕ05A—´íuP —y L»8—Pjš¹ ´K°9 [ëÖEÛZíé.“Ȫ°‹¸.å LàÖuÖ›å޽L¿ò;X·t‡0Ua¦Í 2î9š@ƒÃ s°•Ÿ_!®_ l8¼4^/ ‡€†Ã @Ãá á7‡ÆÎR»?ð~Â¥\4¢ÕâÙöF»>¥Rˆ7F¹¸{¯V½Cµ´l9w«“«ÙT×.[è)ã?}Ú•k ÌåPo5oátÑh·÷z'º´Ü\CèóïVºg´sÛkÛ¥b§%°õ@õ¶¦6èÊ[Ã\ܩ۶`ë6ˆºYÒØs KÇîÂÝžs7‡ôjA‘µAŽnÛXž2Gµ?1”R6+Œu ë ¦¬¸W@P"®[ÌUèò|ûÞ~ýóm±m`¯3í` ”{ H+ ŠÊ"Ȥ¡N=”¾Mϯ‚4ßU禧ñ®ö `z~S=°¥œún0íoÎ粤=€©ä Œ©øæÌ™ŠhJ#[4»Ù—Šv4•`5ç@bµt n0±w59öÆ-—”ÜÌ©B«‹ó(X'¶[õªËá6×7i3¥SýPû@ ï ‹¶õĤ‘ƒ€†Ã/7^/ ‡€†Ã @Ãá ×¤:»òö6˜ôU.Eo×Ôw÷õsX»‡¬ìE{Ls—UÂXc·Ïaƒ©u7W™·‡Öí¯vëâ›RÒ… l¶ìÞ~‹‹Ù­‘ÕNÿv]h“ÆÎ;ІËÞÕi;M›GC'ª{I7ê9€ÎèÀ¬¯J‡†*F ¢åØÍ¦ô> B\u}A‰»ªçªžoßÙ<”ÈŸVaÙ¸óCHP"nLuÛmß¼]Ý…„‰¶Â=e“€MFÚd…U²f;IÀ®l­;:™DÝCÈߪ½iŪ'Ƚǰ_V“L©:pÑÁ s/5Vö.Ú~»{3R[µI…¹êÓAHï]$”¤fCT5¨é ÔÚÀPÛ»(Ku“À^([ݬ«N4]&‘€E@‡†¹.ðê`CÓ5oüJ Œ†±ß @ãá áðÐpxh8¼4Ã'­áÒ–:òà¦Ë6©lB'ª.D‹î¦¼Š ÚÂРœ»xwÒ5òÓ%’–1\U—õ)Fèð:À¼Jm^íŽ[u‹®RÂd¡T½wOtýIˆ®&~|UÍ©z¶÷q;j~Ä‘ €ìT®s™Dì_S>Ëܵ‹® ÃÞÙøéêçËùTÜÜG4±¯à´Ê̯mš¬˜ýÕÇñ5'WÎ:m½Î" ¶VHé#t|dM‚Üô¦ nz£²˜÷:“ umîäÖ?bGÀ×Aê-<[ez#öS/\•ÐÑ…„…yD¬V{å—óÓ+·ò @™·€´Šu6y¶#™Lô‰„Ú‚Â<"È<]5™í‰d÷ äól–j&³Ëº'Y¬%i»¼FŽ÷b¬âgýJ ›AH¨}‡ðè †íäPß=o2†O౩ðÐpxh8¼4£$³ÉJÃl_Ò¿Œ±èï²Aµwp(ª¸ UNéQ‹¦ß†'$k²Lœe>¹žWÆž­%—ñײÎ:×ò”Rf­¹ßQ÷kž¡§Ûb½¹?ó.‰u€‡x8Ÿ©Làô•ìPrÿ07j’N‰Ž²×°³¨˜ºÀOfX˼IªÜù\ø9– Ë9Tån?‡¥ßSÜ#ýãZÖ™áŽkk@ý gÒú“?m‡b‹iÍÛʘ,ùŰÀç¤àk™Ä‹r’]šê= JO®×Eü*We~Ë 4“ -¿E,dN9æµûwuʬqéw>‡c¬3Îàe|ˆqœàEw…ÄKÚ3%Â,y ]ŠYß͈ð$p‚ó)CöÇ¢ï½ÚÛ ±—yR€<KÛ¿K}ÀAHD`Žƒ¹!­@}Enã±äúevpÏ7äò/ 4shVÇŠTʉXÌþ¿áÙÛéJ`×’À ~\#gá…‘./TØóüª!ýI¾j|þã¤*ãÃ<^€TŠ¿@+÷]ÌÝuÆœÎðOÜ ¼›eüÓÀÓ™ë"æ˜O>›‹˜ý÷ñÍ^à(/檜²Üß}cݾ~Ž[¢»"µ›ú¾£É¯½…ø®úx±Â·Ðz&–$u7@‡LÐ&èæß×iÑŽr=GØ Êýßgð —jw)ZLZæsÜ—Á~¡M+Š@È>‹7pÛZ¡ØOøIÞÈ'y#±GSA³äS^zäªúðU—ãÛÿ‹Kø!ñ ;4›Ogè0Í‚–è_æ Ûø]%=®þe`²d ÆÔ£‰º=K?RPÂåzÅó1Å2÷Óí-²êàx9už¹JŽZ²[ºÔšÃ[øœàëü@b–yvp#Ïôaði.æ»\Èw¹„ïiC‰µô#Y§.á ǵꚸõM*©R­é6È©­-~ÍáÀçñfZ¬¥ð„´š>ÏOhÕ¦:¬asæ|3±‡Ïðû|ž×*ŒËf™ç0S}a?¼˜å·ø~“oðV…Jå]@l,5­ˆÓ}c×%‰ñùµü’ôÅÙEåSÔ¸†áÕ™ß_T˜´¼Ø ì!co ÀÕÄÆâû`_Xp ßã¿ù§øjÌþ9ã³Cƒ>|"qO£ê¾ÍKù¿Á·øít” ÍÄúþi…ò'¥ŸÍÏ ôt #{¾P²î&reÊ÷¯‘jå5Úççhv·^µMÚ8û¹‘·GæEé ¥¸Å¶h¶è&öç]@¨ÆÈXÖ”ô·óAf¸÷óaþŽJôÉ‚HÈ*¡ºô”ýù©_ŠVnX3ÐuÔgêî<}‰ÉhìÏÙrº €›—þñPPv!¬oýñ[@ Õ[ÀDâ¢F- 2Šï)ào¹«Cì·O£SP½ÜÆ{y€ë#\Çí¼_¢.1ÉCü”É|ܼ“¨ô]¾,ŽÒ¥KY단KÝÔùÏssæ×Í…þd Ññw£2L)è¦ß°O˾úôe+û…‘–èØ'HL¶$¬1š ô?ããѼÿz>ÎÏ!ö0Ér>®«:xºÆò„Gt ÄäÏbˆ*ˆ ·h8¼. áðÐpxh8¼4Í¡6V½ÓtUî»Ò9Oyw莇·!+ÓIT ©î .Z„Év­ãZ«†ÏFïÿ "ðp÷ðÞÁ¼·SÔ΃ѯó€ó¢?›ø!·p !ã¦B|³ûм5CÞž¡H·…(zzéÒ×Ài8ÉÃÀ[97Q{±² ý²z_b’:L³ XTO>ÁÇÙ­ÉE¼ {÷R\)|er}†o+ÖBO𦘡¥#/‡ÛÕáñê}W©H6¯½ªÜgvs!‚ÄPf^áò3d"#Qg§êà…h•ø8çòlaßË0`XàJ&É‚œ`7°;aÿ E Eßêí©Oñ‹ü8ŸÿSÒ¿ÂLñ‚D§_¾Ÿ¼:Z¿ Q­zÎ2Ÿì*T5¡5ÌXQ{8!‚Wf®‹øS~À÷ãÙ!àaà8»9Á'JÍýHSle'•@èÙ&3×YŒE,Ù_ÔÉ·x1ÿËOø ¯WP1E´#ö—uÇ3jÌk®EþçyÆg\iQÐbp¡Ø-Âìî; Ë ;ØÅ¥\šÚ É{ûÇ”ž‚ÂÜU5e)‹6t¢ÖËÊþi,ÓúUìïJ6ùµöos&ãçX!þ«é؉N§·3¥Ë”â’äûAà!þ :Œ)„ÞOFH*VÅæ3 üø9g³ƒ[yTÜΞð,çFU·ÁÎ &_C¸<™žÕÒ«æ(_º?(ÚÅÉìW1pš?Éüº›û OW ˜p!3J8Ò¨ãoî‡ÜW˜d•Å'ø`é9ÀMYa,¥µ›3œË³|…Cl°SÑŦŽÖÕ.׳wU!‚ÜŸ™ªzÂBļô:‹˜ýb Ø‘Žr@jð¶È²ývx€ÝÑ_‘ý°À EÌ4ŠXã3|žó8WiŽ5gq°qp/ð+Ñ3v+îÅs€+Q7¨]œÍ.v± ¸)‘Âÿ…èg†p (6GÏÐá,(6G ö?ÃXd›÷ Øoš¸ÝÊuü'p±‚ý0MÈ:¡Ën­åßCšÔfœFì/ì?>m®OÿÎ…Ø‘ÛT^ôrµ”R[M)<#”Õò5ÐŒݤãÿ>;rZsõ¼[{uþÅüâYþ˜µÈ0c?ÍÅ]åßy’Um-…É~Ã/dÈ|d’7Ç?çú˜C ûÙe_>DÑ¡ŸÒWg±‡¿>¤iÅKœÇÝ‘Xµ8Æ« "–…J²fqvqÜxh8š§ ðà áðÐpäàÖ_ø]|-Y¤ýw :ã½¼üo\¼–+ á>%­¿‚W°ƒ7 :óõ‘íîàr.çŽ\¨»ö§+t¯Wö§#Ù*üOԃؗ™†q!êTFQuª~rì´€ &(ª_¥Œ«º»=ú¨q~ô}À’«ŽÂ`–¢Ê_ÒÆ³…°ÑCN%æE¿Hs½¥‘ €hÿk¬QìÒEϬšÖîÕ6€Àá\P±O6/鿯I m!–˜äƹC›lg>½Ò… 1þO 6X}GšÈ.Mþ.°Wãš@@,¢žT¸KîDëôñ6éüº½Ýk,s?ofR"äŽÈÔëvÞ£MátÂú2'zlYÄ=@'ÿ»‘ÎêòŠ£ðÓ¤>óUè?RøÏ‰;}û]q?kÜo Êß)\LXfÓœæ4ôéXª î²j¢JĽ°AìáÍonLÙ®gÿà{€S™aáô¨ÌD¶öVf˜Þý²2®ênÇ2ÇÃÃtdŸcjýËškùî$ÝÄ O‘þngŒÛyÁ×öv'ÊÈÌâC£4Ôèû6Þ§ ~4·=MIß3èÕÉöÎßîdÁÂF9ÍÝ‘–W= dH!à”R¢³ÝÜ íu•}Š8Ço“=-îp`$À ü^òæŒ/OÌe4V¾œF/X¬§†Ší×[êIàI V=zœd1aÿb¦‚£»»Xä¤C :ØâoF‚õE,(¯“‹ãµØ`±pæÆ4‹lÐbZËD·'OW“ïA]4ÆÍRCCØ-yÐýiý‰Ãs'/ÎUÊS·$²Cì œC#\r=ÉhÝLÝ’ðêà†Ã¯6^/ ‡€†Ã @ÑÓÞ[D*-> À…¼Mãk_èÙ>«¡zlIÄТ›¸½œ®’É3,rŒ×ÑuX(Î+dä<Ùdº‡ñBÐqvó%^IÈg¹–PéY Å=ì´:“-º*Îÿ–%ö›î¡€]~ÄEÀ#gšr¡boœànîcƒšLE8•¯êñÈú6ΰ­àO;ä㚌Ãu5ý±Ä¿Š>ÎzôAá¯ÛC¡ ¸ø&¢Cø&¯ãêƒg¸’IîöÓåZPã àb¶s–b/¢p.³³€ço'GŸ+€çéo^Ñ_âßn\!à àå™»/îÉè÷Óåfvq‚=ÊôôfJ¿>y¶O±÷eÄ¢H¿÷ES|f»‚î¡D<Ø`g²iz‰I¥¡>Ä7p5SZت!à{¥ßy{£~Ó=4ˆ@œ‡ñ#¾É˹õ‰©5À"p@yÎU8ZS£ì±qù ú?*6¯6x{€†ÃÏ–/ ‡€†Ã @Ñ €í<€ºô¾˜Ð¿¨8÷¯ßô~—oÐôŠˆß>U8/÷ÓÒyué67sý¦÷»|ƒ¦WÆÙ¿po.P®à…<]ץ߯Ÿè/ãüD›Ðoz¿Ë7hz ˆ! õüŸÝ6õ*ÅUyújr´ìª6~`ˆoK?ŸB?âÛÊoË¿9þiicš.¾‰žÍ…ºÔ%‘w«vms%›îþ]ö¡Þ\7}—øöôUî°]ã¨7˜…%~‡™TŠô£ìÕÖ_|÷ƒÜJOvh©¶†å‹™§£¡‡Ñ¸[ó鄚ûæôíŽ{ [ì@+r.©ëòç’~ˆÙ³ÀuÆÜÄ­ö÷çÔO"ƒç2ÿË#´öfô†Áú`Ï¿=®MMö€væÃô”ý½–€7Q}¨ßÅëóWL¡ZnJß”¿âù åèB²ìïÁ &¶óÜè+À$“ÑU–ž= ;TÜ=ž¡Úèé(érþÃÂÝ/K½jýÄå +Óo•د~jI8&e Æ1ÅUyz;©À¶6~hˆoK?ŸB?âÛÊoË¿)~ÞyUY: uþêR—„XXã ^–£¬fNö©K˜ß)FùiÞ²iô~—oÐôÿÈó8‹K£»ÇXæ/¤puéÿÀ 97±ùû:dسô~—oÐôÊð! ‡×6^/ ‡€†Ã @Ãá áÈ*ƒl§ó;Ý£dmàxrµ® ]—î1t(õX·nM¡^Ë j§à!!/6®³n¤Çît°1PçË;FXQ×ï¡A^ÆÁÈÀqÆtá¡C³Á„éÀ°Tx”Dq¯ŠÛœB½ök ’Ð3|³|ÿД9/`Øéà‚/ ‡€†Ã @Ãá áðÐpl]hû¡^@€úël!³„Ìö=ßmV$! À¾è3hØZ·`ÿê ³9 `…x_ß akÝžý=„kÒ.|Ê!,ü©!Ø«Øý~ÐÈA+¬²¢l[°šû”ƒ›ûö˜ýûŒôU?èd0õûÖÄŸrB0_¸S<Ò¥I_•ºÌ~?ôòÞÀúŽÞCæ˜Wž×S|3ȇɲ_•Ïþ>Àµ¨ûNåØßÖ„ó(…az X>E¨Øïç=€<´Y¥=”kuúùošðþŽ­« ðè þƒU§X›Þ0÷%tEXtdate:create2016-09-14T12:30:40-04:00<œWÚ%tEXtdate:modify2015-10-19T17:53:29-04:00‹(ãtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚youtube-embed-plus/styles/images/ui-bg_glass_65_ffffff_1x400.png000064400000000411151435171370020441 0ustar00‰PNG  IHDRG#7vgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÝŠ¤tIMEà  "&~IDAT(Ïch`…£p―hÈÓ4±i%tEXtdate:create2016-09-14T12:31:34-04:00-Ôî%tEXtdate:modify2016-09-14T12:31:34-04:00\‰©RIEND®B`‚youtube-embed-plus/styles/images/ui-bg_glass_75_e6e6e6_1x400.png000064400000000504151435171370020222 0ustar00‰PNG  IHDR£‰DgAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿ«1ÍtIMEà  "&~LIDAT8Ëcx—ÇÄÀ0ŠFuóg ÏžßabÜËÄx‰ñ+ã7&F&FN&ÆoLŒ_™3|dfbXÅðIމAxÀ<ІÔ0:Þð È%tEXtdate:create2016-09-14T12:31:34-04:00-Ôî%tEXtdate:modify2016-09-14T12:31:34-04:00\‰©RIEND®B`‚youtube-embed-plus/styles/images/ui-icons_222222_256x240.png000064400000015561151435171370017163 0ustar00‰PNG  IHDRðEžr@gAMA± üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGD"íbÖtIMEß 5ûsƒ¢TIDATxÚím%UyÇ $!,h ,»%•&†Êî@¥|I•”EMÔrÉݱ‚DÉÑÆ2;ãf† Â܉A^$5»Æ¢j^²K”@U¸£Æ-wW£„˜D`â®|ˆqý"–t>ôëéóÚÝ÷ν3}þS»÷Þ~Î9}ú<ÿ>§û<ÏyNp MÆ)ƒ®€Ç`á ÐpxˆhÒt%Öžy´Y–šD^`ð÷O›°rÎ%`: $%þ{‘æ0LÿL°Ý?úüa|ö¶6í܉«]A¤þ嘦’7P‘'@/:À]5JHò&÷ayÔÉ ËÀ2¡ä:×8tÒy€ä“û@‡¤æÉ#*'¨”?¹Ëtç·;¬Yw×’m׸ŽõæÐ¦{Ð>|Dg7©Ð\J½{Ó4åK®×Ï ‚Ò3æ»ÈtfZõÞ±—`¾7Íu7÷Yɶ~f]¡<ÌÞ4m–*Ì<%%þ{ˆ^`½£ÍÒFR¯ž ‡Ÿ l8<O€†Ã áðh8<O€†ÃûóºþkŒ2þn6cLÛè`>ƒ]=uüìæð¨îŠ$åüÜ,`æ&Ô+h—æ»kÙ6õÛJ_*|êKß0Þ²?@ýlx’ÊdoÓËm¹]üLµ3ŸÝžßŒ0.;ùÜýTßE,;õê4öûÓÅÀtÿ¹ÕMOŸÐêmPæLëUŒA&ƒë°û˜Èeë’+÷æ`ß8uý]ÿ5†77~"¨áðh8<O€†Ã áðh8<ŽÓ]¡C8ÀYþús¥¥ëZ½ì}i„AÖ ´Ö º)ÈžsW.!mý.ñ ’²¨z[ý#ÕÆRì䨚Ûí \R•È{ŠÀvùÃèó är ¡ÁØãR¿À ?Ë#‘Ø[À|…f…–Ü`»‰…úç‡×Ë×yëØ)èA-‘¶Q´N Â4w ”æÏ®:Kr{éëäæ²³«3ßùZPö!0t¸{l©\ØYíwSnàPºIA.åVmÓ-èR¶½ $y™×À¬‹sI¥–™»@;ƒÍeغX·.ÚvÙÎîòYvŠÛåB Êôn]g½§ÜÀ±—éWcëVnà¦*ÌôyTæ=M“hpt Öóù+äõ3 ‡'@Ãá Ðpx4ž ‡'@Ãá Ðpˆ‹C“`©ƒƒ=x?áÒ.Ñjùlk£]ÏR ’…Q.áÞ«5@ïP­,[ÍÝZÀj6³ÆµKçŽì”ÉŸþÚ•[ ,ÔP/5/át±h·ÇzG]Yn¡!ôõwkÝ9Ú…åµíR¹³+°õ@õ–¦K tÅ¥a.áÔmK°u DÝM篂¬ÞUŸ!LgßK“\AÀtþ$§úÀVr»Á´¾¹XË’þ¦`L—o®œéMeä/Íîö¥R€¦+X.X.]‚Lê]N·½q«%e‡7wªÐ"Â< ÖÉíÖ¼êëpƒë»´™Ê©¾©ý@  ¶uǤ O€†ÃO7ž ‡'@Ãá Ðpx4ž½Æ ÍÙPô°Ád¯r¹ôvM{w¿Q¿ve²{È®]ö0Ád1w™%L,v»˜êQwq•yyx`]þjW°.¿©ô!›ÊWËíWžlÌ/¬¶û·ëD3˜,v¶Ü6]þ¨ÎÚiZ<:IݯtM ~Ð9˜íUÙÐPÅi!ºsìnSú!®¶¾ ÄQÕyUç·¯lJ÷ Èš°ìÜÅ!$(‘7‘º-¶/Þ®B¤F[á^²)FÀ#ëò†Â*U³í$`7¶Öƒ\¢î!ÄOUŠÞÜŪ3ˆ½Ç¨_–ÓJ©:ð¨ƒÜ½ÔX6ú¸Xûíá!ÌÈ|Ô.æ¦Ï!}t‘$ePRšOQÕ¡¦/P[Cmîb,Õ=öÂØêæµXõAÓå!°th”ëo14]óZÁÏŠh˜ú=O€†Ã áðh8<Žá#@k¸¬eE¸Ù²M&›ÐIªKÑ¢»&¯bƒŽƒ04(.Þ%œtÀhútIHÒ2¦«²>ÃÚ¼D˜g©Í³ÝÉ]Ý¢«¤@˜N”ª×îE]ÿhš¢«ÉŸ|«T=ßû¸m5¿Á‘@ ÷.#³‡ëB¦±úW”ç2wíQ׿¨aílrvõùE‚b)ná#‡Äය݄Ä×F§þ¢/N±±ý6•%ÅtÅð¦]Î…¼KX€¬¦"ô® nz§²"t.êÚÂ'ˆß`[À×A-<ßdú#ö]/\·•ÐÉ# „ÒsDbVGåëÓ«°ò @™·€¬‰u>y¶-™LòÑTÚi rgW=˜ý‰Äð)Äýlžj&·Ëº;Y¬¤e»¼FŽÇ,ãŸú•6‡ýC¤G_0l;‡úîy1|¶5…'@Ãá Ðpx4‰SéLÃT_Ê¿„íñß½:ÕAD€ù¸áV™¯\ÒcK¿ !ÏÞe•8ÅLú}F™{ª=.áy®æ0‡¹šç•˜²Ö~w,Ý­9‡^nË ÷þÌgHµÍ„<ÂsÀÙŒçg¯dóéñ}Ü ):›$:ÈNÃÊ"¹ô <—S!,ò¡qg é§¹µ„\¬¡ªv»Ù'üg¿ð{;W3Ëp˜I¾Âm ¨ÏábnÓïüiÛ;J‘µ¼íÓ)¿„s<.$_É.ä[5Í{”I¿V\â·¸"÷[$@d KeÅ%b!Ó¦™Ñ®ßÕ³F„ßÅnç0#lÞ§Ñà8o¨¸Â($™Òœ%ùf)@6”¨¾[Lã9à(?æK†êo?wjSl2ä^ä9EìLÉû„¾ àVH)0Í­…!k@}Cnâ‰ôûUÊ:læ|Î4ÔòÏ 2s˜ÈÕPŠRÊQ,Qÿgødþp6صp”KiÄ*œÛòB…?O„_1”?Æ·Œç’Ìd¼'%d;ÿ­Â§\»÷k:É?r7p#“Êü'€rßeL3“þ[[$꿟3D ¸N«Ô_Äë8…×´)ÎÐ< Øz€„°'µiÐ>ä]Yø,bŸ¿}H!½ˆ0 LÒa‡4-©U—™Ú£$ØR|ë¤c‘úrðQ€xÐ/a Õ_¼Às¬eüRúmD’Ùz¸$Vü“\Âó ùÏ3<É”¦0ã—¹1ýVD›­<Ìn&S ™äLƒCÉ4·*•´5÷O‡íØ`KñAÆÙìä`ü5ÇD$¨n ’ù}¦5ÏÝñçˆBfë"¥GP½†M rU/°¹ð©j"˜$ºÏÅ!f+³{/˜Õ fjtñ‡k¦Pût쇘S¿‰Ó¹ïr§#«ÿq>#ü’aîÍ=À´â5¯Œ’!*û,6Ñ~ 䘑^#Jt Wg{ȃësÿd,¦o9°X1… õ“?ÀðæÜïç*uãu‚Bý½,=Â`ÌÞ»Ù'ª˜à1l$[€Gx4ž ‡'@Ãá °±ðDΞá‘-‡…Ùz¸ì¼é†)¥E}:gË–ßòç …¿¢gÂü€â¼ykùî>ȾfiŸNa~¡ Þÿ™±À Éük`‹.ÓÀŒÂ7•÷Æ3PñÞȸҜû;ƒ¼‘+ ÆZp÷Mlûbúin‰F¥Ý¬°÷Lí”ò»Ú㣾پȓ4° ˜»:ìa”.0J·ø¾N‹.pk8ÀNP®Ÿx‰ÍÀË\lhÝ…x2i‘ǹ?O€Hý‘5M¦@È.K4pÛ\a´žð‹¼/ò>a‡¦¦¸•yÆ%›^¶åªzóU—íÛÿ‹‹øçó2›5‹O'é0Á¬VäOs’MüŽRž4ÿ"0V²éÁÔÜž—Œð¹FqþyÆY争¿EÞœL§Î0])PK~I—Úrx /²ÊQŽs˜*SL1Ãfnàå>̾À…ü€óøñ¢6U4—>i”#ÚÔœäˆÖ\“Ü}cJé¨Ðjºrjo‹_u8ðnà,® ÅJF€g„Ùô¦yFk6Õa[0ç›y„|™ßãk¼Sá\6Å ûï‹úáü+¿Áðëü ×)L*g© EþD䛨®q|Y_œËï°'-?Z";§<‹Wñϼ=÷û —–[€äü­\IâL}ÞÚÜ‹ü7Oqœ§X•¤‰ú§ç öðÑ4<ªz–7ó=~ïñ›ÙCPŠ6w“Øû'ÆŸL~*?7ȳgÙØáë%Ûn´pMÅâB«¼C{þ šLî^µOÚ»¹Çî2;C!¯<ÂÊn›$7©¿B5F&XQÊ?̧˜ä>Áíü-Ÿäc%D“P]y¦þâ£_†VaX1ÈuÒ—‰ÌÝEùcñØ_ðåt'€[”þÉPP>Ä `¸û“·€ª·€Ñ4B‘š "ä÷”Oò7ÆÚÕ‘„FõÛ£3 ¨Þîàã<È5ÀÞÏ|B.0Æ#ü”±bÞb¨ì]¾,Ò¥K{ë/QWº©óŸáæÜ¯›¥þdœ¨ãïÆ×0®›~Ã.­úê˭Ꜵ¢Ž}”ÔeKÀ £ Y@ÿ3>?÷_Ãçù™"ÅÆX,æu5OÔ˜žð(ƒ”xøsG4DIôþ ‡·4ž ‡'@Ãá Ðp4‘ÙXõNÓIM¹s(ç,åÑ¡ÛÞ†<&Ò¨þR=>@]´ÓåZG´^ _ßÿ÷Høkö°Ÿý|„p7—rF­ópüë,à¬ø/Â^>GÈ-ÜBÈçØ+å7‡¯(z3ýd¹-…éA”ÇÈ^'˜å×qzjö” ±í² ýòz_`ŒI:L0«˜T‰Î|”ía›¦É„ìõ܇µé—ï'¯Œç/CT³žS̤« U·Ð ç¼(ä.¢àå¹ï2þ˜ŸðRr ?< aGùBéKsßRÆ”[ÙI¥ˆìlc¹ïylUž¨_¶É·x—±ÿËOø ïQH1N´cõËÓº#¹?5f4ߣúÏ3lg„¥GA‹À<‘aW†9Üw@—I6³•‹¹8ó×Fêß®Œ¾U3ö˜ªhC'¾ûaQÙ?mÏÝý*õwŸ‡â\û³œÌÂ9$å;`[ÐÙô6q²ô5e¸(ý|øEŠ¿"Æ8‘ÝODHF+ùö™~üœSÙÌm<Îïð*§ÇM·Ê– ._S¸9<™Î·Ò«žQ¾w ûʼnêW)p‚?Êýº—û gW,  '•!pF…Q»8Æ_/¹_zÈ‹ò©ÒÏ{!öÂXÈZ7&9Wù&ó¬²EÑÅfÖÕ!×óGU)‚ŸYª:Ãl¬¼ì{‰ú£`s6Ê™ÃÛ£Êû·Ãƒl‹ÿdõÃ,GyxŒèICÆ _ækœÅéJw¬iK€s8‡û8‡×Åÿ›±Mq,y¸õ µ•SÙÊV¶{“ycPÆñIí#à°¿¼Ìűo¬ÊÞos²:Â*üi¢@Z„Ìñ8]ä^À¼ext7û )æ%ó´-T,)¿OÙ\N¢Kî²Qãìå¶|”0w ’f´è¦ÿKl.XÍÕÏÝêÚ«ë=_¼Ê²;flâ§…¼Ëü;ϱ¬m¥ ]/°OŠBöûÌÄ.yÓüS¡™Wø/ˆ)¦ú)ãxsp;ø+àÓ<¢”.p÷Æ´jqˆ·IËCE€¼[œŽkO€†£y¶ž ‡'@ÃQ$À¼6^ø=|;¤ý6÷ ºâ½øøo\ |ŸË¤t_’æÇ⽃®¼G}ä{€»¸€K¹«êžTýÙ Ý{”½ÀqÂ8b¶ ÿ÷ vKãðÙ"£kKþŽ×/n8'@ eÙÔø6e^ÕÑ âjœî±Ôª£pØ€…¸ñ´ùl)lòã©»†¬â7h¾¯kdCÀ]ÜH¶4ìnnF“[:bŸ lÅ[Ãꑬ“'n„(™ªÙ|[ŠƸ‹¸–›4%¸t·]áºBF€hü%Z`%>ˆnj†ìÔ„&ˆ©ÿ˜"\r'V·ZývåD)y€kC­¾»bW¯;¹I[‰´k’! ÿÝØfuiÅQø²˜ù*tWñs’N_§~W<À ¤âg–)à'8}Ú–jHz€¼D6‰¸÷6Dkx‹‹3µëÕ?øàxîéæÄFy ˆz€ìnoå³£O+óªŽv,Ïøbcx˜ˆýsLwÿ¢æ»xtŒn…G–ßÄlçNn2ÄÚ¾ÀI¢OµÎl¥‘ÆŸwð ég kг’ô=ƒÞœlïüíAl)lòÜ[éŽkîñª; )"W2:ßÍ-Ñ.H—Ù¥ÈÓaqü6ùØò6$\0Ëï¦oþ‡øºqÇŒŒÆÀcCÂ[O€†Ã áðh8<O€":F›@Çj1XgÈ dÕbêÝ–ƒÂ3zˆEþLHWWþ÷œËé©+èwx0§žµ÷ûú-¯ ïÒpxk`Ãá Ðpx4ž ‡'@Ãá ÐpäAî›§§Ü£DkàHúí°2u]¹ÇÐAê©î°µ„zwnP»EØx˜ÃFyžA›u±¼„mý 0FŽ0b”G:ô1;L˜6|»C…GIÈCÀH…RÄÜæêÝ¿6y”„~˘á{Ê÷o}@™ý†]îQ~"¨áðh8<O€†Ã áðh8Ö/Ú~B¨ Pž-dŠ©¾×»Í’£"DìŠÿ ¶»;Rÿò «¹ `‰d]ß a»»½ú{× ¤-ý+‡PúS#R¯ž†‰úý3@O z-±Ì’òÞ €å¿r˜vJ•¨—Q¾ìŸz‘¦`Wªšä_9ÌHGäxþí\ùªÒEõûA ×Öô2ÍŒr³ùÍ ˜&¯~U¼úû× >ìûw”S[“Σ†é- `9þ'C¥~ÿ ЈC@›eÚCÙ¹†q§_üô¨  áX¿¶žàÿz˜ÄüßNï‚%tEXtdate:create2016-09-14T12:30:40-04:00<œWÚ%tEXtdate:modify2015-10-19T17:53:29-04:00‹(ãtEXtSoftwareAdobe ImageReadyqÉe<IEND®B`‚youtube-embed-plus/styles/epyt_mce_wizard_button.min.css000064400000000335151435171370017702 0ustar00 i.epyt_mce_wizard_button--icon{background:transparent url("../images/btnwizoff.png") no-repeat scroll center center!important}i.epyt_mce_wizard_button--icon:hover{background-image:url("../images/btnwizon.png")!important}youtube-embed-plus/screenshot-4.jpg000064400000105561151435171370013332 0ustar00ÿØÿàJFIF``ÿáàExifMM*;J‡iRœÊê >êfisayo ´’‘69’’69ê ”ê2013:12:23 09:12:192013:12:23 09:12:19fisayoÿá http://ns.adobe.com/xap/1.0/ 2013-12-23T09:12:19.694fisayo ÿÛC   '!%"."%()+,+ /3/*2'*+*ÿÛC  ***************************************************ÿÀð"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?úFŠ( ŠðŠßµïøºöÞÛP’;(Þ$Ž(í¢r¥¢V<°Ï\÷®þG_ÿ ßþ[ÿ…w}NÉ9TŠºOVúüŽ®Ýµrvmh—O™õògü4Ž¿ÿA¿ü·ÿ ?á¤5ÿúÝÿà¿øQõHÿÏØýïü‡õ¹Ï©}ËüϬ诓?á¤5ÿúÝÿà¿øQÿ !¯ÿÐFïÿ­ÿ—Õ#ÿ?c÷¿ò­Ëþ}Kî_æ}gE|™ÿ !¯ÿÐFïÿ­ÿÂøi þ‚7øoþþ©ùû½ÿ}n_óê_rÿ3ë:+äÏøi þ‚7øoþÃHkÿô»ÿÀ+ð£ê‘ÿŸ±ûßùÖåÿ>¥÷/ó>³¢¾Lÿ†×ÿè#wÿ€VÿáGü4Ž¿ÿA¿ü·ÿ >©ùû½ÿ}n_óê_rÿ3ë:+äÏøiþ‚7øoþÃHëÿô»ÿÀ+ð¥õHÿÏØýïüƒërÿŸRû—ùŸYÑ^ð§â¶½ãOY[ÝjIe#Ê’E%´HX¬LÕëŽõï•z‹I´î¯¡µ êºm&¬í¨QUï¯bÓìÞæ}ÞZcvÑ“ÉÇõ¢ÎþÖþ/2Ît•{í<¨ê?ç: QYÚÆ¹e¡Co& åâá-ãÀÏÌǯÐu5Q‹“´wj*ìÑ¢Š*FQ\®™ãoíì?ø—ùÚÒÜGþ»>W•»Ÿ»ógo¶=ëHSœÓq[“’dÊqŽçUEÝÊYÙÍs(bÆÒ0^¤ž+2‰h®SKø…¦êwV‘=†©aéÛmqym²)˜ôU`H$ö®®´©Jt¦¬g ¨¯p¢²?·â²ÙúÙ¿?ûavíǾsš5wû?ÄZN•ö3ûHÊ<Ýøòö.î˜ç=:Š=”ÛJÛ«ü¿¤78«ù_©¯ETÕ5ì˺û%ÕæÖQäÚGæHrq3Ðg'Ú­ÔYÚå]^ÁERQYZæ»ý‡R3RÔ„ŒX[ù¥1ݹ‹cñßS´–âÏCÖ) ²­Äöá!;’ ‚@åqßšÚ4*N<ñZº°Œ”Õ}OGÔ?µtK-CËò¾ÕMåîÝ·rƒŒàg­\¬¥Ó.2RI®¡ERQUïïí´½>kÛùD6ð®é‚p>ƒ“SG"ËÉÊ:†SŽ Ó³µÅu{¢ŠÂñˆåÑtí9µ=Fô·•l³,CjŒ³< ¨BS—,w¤¢¹™»E62íT#•”í=Æ{Óª *¥ö¡ö-Wì—Wh˜C›x÷ˆ³üoÏ ;š·NÍ+Šêö ++Äßö­¬ßgóþÑw¶7íÛ¼ãwCœzU«]CíW÷–¿dº‡ì¬£Î–=±Í¸g(sóÐûÕrK—›§õþbæJ\½áÿɖ袊‚‚Šd²¤¼³0HãRÌǰ“YòëÖãAV²‚ëP·”+F––‘Ãd)ÁÇ9>ÕQŒ¥²%ÉGsNŠ(©((¢Š(¢Š(¢Šù?öŒŠI¼a~±#9ûD 3ÿ.â¼YtÛÆ<[Kÿ|÷ß ˆ–ïùélÿ˯0žæc¹mF>bÜûW±^‚©Èïöcùf§$gþ)~g$ºmÛ!u·¨8$/JzhºŒª vs0##y­¨oeKe·hÈ9%€ûßJéaÔ-ã‰D‘ÍÑš>Õœ°Z!UÆT§´np#FÔKº}ŽmÑýñ³¦}iaÑ5+…ÌSÈ3Œª]µôo¨¸¸vKy_sã’@è+¢ŠæÖXÖk›•µ´'÷pÆpì=ñ]O)’W&xêvå<ú/kn0é·.¶±“ƒéM¹Ð5[DÝsa›yúËyêµë^)ð›øzâ5{‚Uác~8ê3ëüë“uQŒg©æ°Âåø|T9éÎèÒµz´'ÉR6g%.—{–eµ•©¾2ÈFõõÕZL§'Ýkе [oF§Î ¼TTûì;F1ôÿ€œ{×9oo4‹Ç¨ÄñùMó\>†®yTi·vì\qкZž›û:C$0ÓÖU*MÄä;}œ×Öó'ÁVñMeÆ “cõÁ«éºàÌ"¡*q_Ê¿6c€“’¨ßó?É>(ðÝØ‹ÿ¡ åô_ ê’L·GÓÔts‘'ýóþ8ük¾¢¼Õ¡è‰8¼)]ÀÉü€¥y·‹d¿ñŠo4ý/GþÖ·ÓìÚå"M(ûùn¤Œ}zW¥Ñ[ЭìeÏk¿ë±H9Ç–ö<§Ä½¾³ð÷B—['êq[êJs•)‘&vóÈçŽyªöáÿ³Ùÿ žÿÙ{<ÜùxýÏ•·åûÞ½ÿö+¯Þ|Î6ôvë~ßsªZ*)ßmÕöVïó]ÔSK ÒOÄQ!EÑQdgó nãqœà7_z¯p–‡Oð¹ñ`¸::ÉtTϼ¸·àE»oÍÔ®=±Ú½¢Š>ÖÑéçë¶š=|ö„ß]üµé¾º­6`sßµzDh’øÁ$dhµ÷° Q·‚°èƒï~5½EgWí"•šµú÷ékmù÷*ž‘Þë§Nß?»°ÙÔ¿û¦¸O ÿÉŸþ½ï?ô)+½¢¹áS–6ݧ÷_ü·ÍKµÏ(Ò4{}ÿÁwÚ:¼7z£‹’eb&>HaN1œ8•ÏèPßÝxžÍ^öÂÓÄ?jÝ+Ü5ÚÝ1–FàÅ‚£F{½ßÆJí«·çæßmµµ¼Ž`bÒIÚÞ^K_]7õ0¼kzºƒµ ä±ût~^Ç„’V8$‘ÎrqéÚ¼ÏÁ·1èkÖrÚ-Æ“3ˆì~Ñå4‹Ž}ónöãí4Vq*•)Så½üÿC¢¥:±öòý|Ï(icá jPY<ÚŒÖ1ÌÓ›Œp€èzWcà'ÐÃ`x_‹u“÷ÀùœKµw}þ}:q]5UÅʬe}]÷ü?ÈšxhÓqjÚ+lxö­ýý¥®ÂaöÏøH|÷þËÙæçËÇî|­¿/ÞõïøÕó¡%ߌ¼ý¿nï}5‹5Ñysˌ䑑°½qÆÕü[ÓN•cñ>U²eÖµ)îeÌÄL“YœAÏîÝã#g¿êtVÒÇssi½ú÷wíþW1úªM5n;_#ÃQôIœ×æsâó«GöÏ?ÌÎ<ÞßÁŒmÇzÙÔm ±±ø‰ªyq†·`¹'–_rkÖhª–>ïg÷ù§¦š-,—KŠ8K;ßðò’×]^º¿#Ì|]áôðÿƒ`:%!º¸µY¥y_ÍM§&R§vÌžv㯓¢EªÅàß\øfòÑíØ"­¾˜×‰ÁÙD£p%POOjöJ*c’§Ë%w{ë×mþëz á#Τ¬­ÿ Øó]ËÁzž—«ÚøR+™åšÀý¡36Ö#•Îî7nézæE·†¦ø]#鱟í[Y-žó&A²BåsÏËзJ÷ )Çã+ëºnúkêäË¥WmšÛºµ÷ßþ åþ%þÄÿ„×Pÿ……çýÊOì¯õ¾^1ûÌlþ,ã9ööªöÚmÆ«màí;Äbé㸖ì2O#,]ȃžÃðÅzÅ1ƸÅ$¶óÛF®•´Þï»4xdæäÞþZüßUÛ±Çü=ŒYÇ®iгý–ËT’+xÙËyi€v‚yÆI?‰®ÂŠ+’­Oi77Ôè§ò ¢Š+"Š( ˜~7Ê!ñö¦IÆd€tÏü°ZòW¸…Ê3m'68¯[øÜ¡¼©díýä<ÿÛ¯.ºo³KûC)‘ÔWÒ(©8'ü±üž¥;Ôœ_óKó*=Ì2YÚyr(’äcñ©nõ™o,Òù[9lwªñZÉp³N!;8«76A06ì$@ ¾Þ€š÷(P§t™Òã ëÐ~ƒc æ¡ Îêˆ[æÉçf­êÐ( Û¢7ï6 Ï–½ö¬ˆŸl™÷íR}¥¦•ÕIUR1·ŒÖ™†*8*›ô°éЕj×¾‡¢xýäÓ¤Óç-ñ**´W6d'¹<`tÿ Åø2jpCmU €'~5ð´ñ’¥Œx¨+>ݦNl7°cì¼-y=÷Ù·¨ŸÍŽ5*Á”†þ,ŽÀf½/ÁzÇ…5mBn%™§Š9#XzÙá¸88çð‹ð»RÓ–úoíUÇ–LÐL¤'åÚÙ˜<_­v3Üh'ÕMî‘qÝ/lŽ\áw÷²rL êÌ3ʘÊn”Õ“D`ð^ͪ·»¹…ñX¬Je7]2¡2˜ËrKP¯5’&€NAèF+¡ñdë¯\‹A8µ´¨2KæßÄsõã¾1ךæn5™>hD€rqŒêMVMŒ†*”–ìãÍ(ËWž/bµÈpâ2N8ÖiÍæÙ%žª‚ê%]¢F8–?÷[ÓØäW+kyc&¥æ\Ï"ò 'ŸJÔ:ö˜Ž6Ü.ÑÔ€Nkì15h8òó#Ä\ñ’Vg¦|°‹Oø¦¥¼¾l.óº1R§K®ú©éÅ}+_2|¾·¿ø…§KhåãÎA>C×ëú×Óuñù¯*«]¹VuàuöŸâ’(j:ž™y¦ÛN’3êW&Ú"€¬#y2Ù< FzgœQ§ëú•þ¥iH²i· o1pf1¤™\FuÇ9¬ø~_Ýx~5[ƒmm¨™®^Úé­ä<‰TèÊãæe)Ï>™®ORð.¢–º¾o§M{¦Þë1Î|ù!¾¸hEª.õkÆuÈ‘pKå‚çhé^OGýu_ðOIÛðÿ?øuªøšßGžD»²½1£[("[´òùJªÄŒ•8,;9Ål×’Úx'^‹NyfÓw^®Ÿ¤ ŠË{¹­.¤·X¢®ÖbÊ‚F.hž Ô­þ >«{¤.¾×<í¨î±Xe…÷yqnXÍËí ƒËrlÈbA¦’Ñyþ€Òµ×—äwókðx‚ÓGtÜ]ÛËpŒØ29Îx1ÇcWëÌüákí7Åúmå߆¾Åsm§\A©êû­ÏöüDI”s#çc¶]TŒô*xs[Õ¼ea¨iúy•tóm-µÌÚ«‚³î™I?z2ƒ ±íS–pqJËÝ]÷ûßè)Y_ÈôZÈÕ|M§iêpòI.—eöëˆbB[ÊùðA8RO–ÃíÎ+ Áº,ú?ˆõ£„l,n\Ên72´ŽÇç…Ø¼`—ÌÆz¶~\¯øBâû_ׯl|=ýÆ«¡+kØü…ky‚ÌævVâ‚»º|ØRì8¤äÓòü×èz’?´¢6¨•fT?¾ùÈr3°žr2[Kÿ[¤SŠNßÖ×;‰µ‹x¬£½Z®gÄú$Ú¦³á«ëk4‘ôûÙ$’FÚÚÞU8$犱íX^ ðeχo¼7pš\6R.ˆöÚ´‘ $ãÉØ$*xFÙ0Üàddg”•÷þ´åø¥d×õ©ÜOªZ[êPéòË‹©á’xãÚN䌨cœ``ºõ=þ´ÍVƒ]Ьµ[D‘ ½'e0V€HÏ>¦¹Ïø{í~8ÐõÏì(õUµ‚krʰ™-ÝÚ2’þñ—å]¯Ê’Ãwä×5¦|=Õ4ÝM‹F³‹GÔeðÝÅýÔ‘±»+ˆ».KD˜|6ÞqבmwýoþHvLõj+…øqái<<÷Òý‹PÓ¢c_³^}…:îÜâ;D È obY±‚Q–êþÖŽ¹y}¢Ü$q[Ëý©a}«%áO-Ѹá çÖv=TPôv$ï*–³ªA¡èwº­ÚÈðY@óȱXª©$HãÔWëÞ¾X¾Íý·+iImc}¾$:uîéK£¹ƒ!ftrñ|§Nt.ü=ü>5yí!kýI^-:æm¬@k8âb§’™u ô$Ôb‹i¿râ“’¿‘ØjºÝ¶‘¥År’´RÍ*#°idXשeÆ}³Ö´kÊu êšžª·W^’òò[Ý>{;ùÔ¶™m–L›”‚²ŸÝ†SÎ=JÔeÔ>Øe¶¥½ÓÁ¬›ÖeP>pp1É*Gb§“NÊßݧù™ì•ÆGâ :_Máô›:Œ6«vñc¤lÅAüÇê=kJ¼å<7â¤Ö!ñÄ–,í¨I4¶)n~ÐH¢"†s6Â7*dÇÁ'¯?à ßÞxBÖoh¿ðŽ4þ’ÞKÝñEý¡s"§•.!fc·kî3ɩޱ¿õÕÿÀó-E7¿õýjz¾³¬[èv wv’…3}³Wm­XùÙófò¶ýöÆrˆãÔÖE߃õ3TÓ´ûk‹ûkÁkpÏu~ÒË"FéæÙ—•‹d ´³28%AÉI´-_×oëþ®£¬[é—šm´é#>¥rm¢( Â7“-“ÀÄg¦yÅkðx‚ÓGtÜ]ÛËpŒØ29Îx1Çc^quá —±µcà¿;HMwí‰áÜÚ·‘Ù3ò4‚™I}ªÄ|ÙêHþ»ó49uo®¹eoø]0Yˆ–dhHª6¢•ù è¿.(²þ½?ÏúC²þ½_üÓû~­5ÙnWÊ…%ûCGˆ_qaµ[» ¹#°eõ«UåRøZ1ºÜYEs=ŦÜË*Ÿ>H.KLK1 ÛcÛËrÀÉâ—Wð<–öZ­…þ×i«ö½'O†+G´µD&HetQ“~B•|äŒg$i/ëÍŸà .ŸÖŸæz¥QRIòí<–þ2Ô(Æâ‘ÿ^â¼]µ·]­på{Œ×±þÒò7_ÿ×Í¿þ“Šñ^ž*rNþXþGŸƒŒZ›kíKó- Bìa<››ïÝE3í3v•ÆzÕ£¹½µ^ìîQbT’G`77'kVÝü«¦N»qT4èüÍJÙà4ª¤ýMtzö„4Me#[Ÿ?ÍBÿwi7ÖjÊNÒw:iÓn.H¸Vk¨,Ò¼ò¨ÿ»’Fï×ð§k:}üž—6²Û!šA¾A‚ìÄ1ÛùW¡ü9T¾’÷T¿·³ŽÑžÞX÷–\ᔂOö÷¨…âû=ú®œö{ï.d Ï·p1ƒ÷>¡¤øªãM¹KˆÝV]ûÁbpH9â±tèÁÔ¥Bêñ³ž¿_Zé¼!m§¬iË}}ž[Õ]ùwô÷¤áÄ«ÍÅC±B]Z;ÉçyefiٙО¤œþSP¹Š+ ±ƒ¸«óç­]ñ‘%¦­}hŒ1 î¹ã¥sÒZ?Ùœå‡Nz ¸­t3“v(à÷£4»Ny§Æ5Ô©Î[#Žèö¯ÙÃþFûúù¸ÿÒs_YWÉß³’ñ…€?óñ?þ“šúƵƦ½šÊ¿6q`þ*¿â’ *+›ˆí`if`¨£$šâ5‰Ö¶×&;h<Ч‰¬(a«b©Fæõ±¨«Ôv;Ê+Îák'üù¯æhÿ…¬Ÿóæ¿™®¿ì¬gò~G?öŽùF¢¼çþ²ÏšþføZÉÿ>kùš?²±ŸÉùöŽùF¢¼çþ²ÏšþføZÉÿ>kùš?²±ŸÉùöŽùF¢¼çþ²ÏšþføZÉÿ>kùš?²±ŸÉùöŽùF¢¼çþ²ÏšþføZÉÿ>kùš?²±ŸÉùöŽùF¢¼ä|Vp͘ÇÔ×] x–ËÄ6ìö‡N$Œõ_þ·½a[ˆ¡j‘²5¥‹¡Z\°–¦ÅU WX¶Ò-L×N­rÆ.O–;2’Š»/Ñ^y/ÅXVVZPx$šgü-dÿŸ5üÍz +Æ?±ù?Ú8oæ=ŠóŸøZÉÿ>kùš?ák'üù¯æiÿec?“òí/óEyÏü-dÿŸ5üÍðµ“þ|×ó4ec?“òí/óEyÏü-dÿŸ5üÍðµ“þ|×ó4ec?“òí/óEyÏü-dÿŸ5üÍðµ“þ|×ó4ec?“òí/óEyÏü-dÿŸ5üÍðµ“þ|×ó4ec?“òí/óEyÏü-dÿŸ5üÍðµ“þ|×ó4ec?“òí/óEyÏü-dÿŸ5üÍðµ“þ|×ó4ec?“òí/óEyÏü-dÿŸ5üÍnø{ÇVíÀ¶#ȸ#*„ðÿCëíYÕËñT¢ç8h‹§ÃÔ—,e©ÔÑEÀvQ@Q@Q@Q@Q@(þÑ)æxËPôñþ“Šñ³ãµ{oí3ãmGþ»Áÿ¤ë^BWÚ¾†tÔ£ÿ–?‘ãáê8ó¯ïKó3üоjöÏjP„ö¨ö1:ý« ³ˆÅ}nãøeSùêüi'™âƒžBN?\ê YQ› `k´Õôù|I<é+ \‡p /o×5æãi¨J-#ÑÂÔæ§(ÜåÑŽåÁPÙÎâ:SÝÿrøãpÀÅKq¤ßÙ±[»9##‚qÇçM‹N½¹ù`Û’£8¯5³®4ç.ƒ´Øã:´K &1žâºo†ð'ü$¶Ñ²†Xg˜‚OB‘úâ¹ûk`Ö¬DÀÄÏ0Bè þYÍwÚ6оøƒ{im1¸U®"| Àp}ò [N)_©1^ó]Q™ñÀÃâ+‹©¶ò”и7òñ¯=;æŽW<…è uæ½§ÇÖ&ÿAPÆÍ-´‚N¹&6oäá^2Çì× În§¦9¾ËÉt8©’Ôwf$R¨Pc*2 NTŽÕ÷X:P•&µ>zµF¦Ò=Cà üo§ÿ=§ÿÒv¯©ëåÏ€ÿò=ißõÖýÕõx9ÊJ¼Rþ_Õ†\ïûÏòGñ6öK?Çå±d…N>•âþvzšõ¿‹í³ÃVÇþ›ý¼POÏZörK,7Ìòs[ºÿ"ÿG^Ïâ¿xjöÉﮤ‹F—Ý+*!'¦å8$öÁ>µá÷¦{ÙbµºK¸U°“¢2‡¸`ú>µÙ„ÇÓÅ+Å4×õ¹Ë‰ÁÏ×3ßúسçQçWu¨ëÚ§„¢Ð,<+l¢ÚêÑ'8ƒÌûl­÷8É=8RvÅfÚxRÒú 4­r‡ZyþÒ#Ú¢=‡¢ ¿/~hŽ5[šjË[k®—ÝtÛÌO Ò.îɽ;ÛüÎ_ΣήªãÃ~‹EºžÖãQ¾º´‘þÒIòdÚK!ß—ø€#>+g\𶃩øÒÏIÓ„ö.¶Ë=ÎÄ@†¿Â&CÜž;óÐËÌi'³¶¿KQ­×OÄóÏ::»;/èzËh÷zMÎ¥Ÿ<¶ò-ÐA*²ÆÌ àc.ùÄö~ð¥÷öcCu¬ªê¯$Váü¬£Ç»q~: ýxrÌhÇ{ýÞ¿äÇ Y+«}ç çQçWks§i« øzÖú}^îÝ帅míR-â`À™\í-ž¤ñŽ•4žðÜšÝÕ¥ýñ‹M·3_ïš-Àž‘«‚X“Àõ!hÓ_úþÃxoÄá<êêþ_IÄ hŽËˆ%W¸‡ò¬oéšF“-£èzˆºŠâ2^&ž)d†8c+ÎCV>K»âfœ?é”ßú¨ÆU\ä¶°ð´åO¾çÐU俯ä]b;`Ä N>µëY¯ø½&ÏF?éŠÿZù¼¢ß[üÏ{2¿Õ¼Ž;ΣΨ4ýElu.^î)42¨eg• ‚9ì~*¹ð¾™àoí{#L/{[Cö8ó¹†sÓ°Éü1_U‰Æ:ŒyoÍ¡ó¸|*¬¤ù­mO#ó¨ó©þ›>*Ò†åöý Wy©hΣ©k³ê×ÓØÆ¶…0 ä¸tëŸåW[SQ’ÜšxgRiìíø7úG]ü!ú,CU³û]íö«i,‹­³Ä°.åb¯Ë]™>Ýêwð6ƒee¾«¬µ®£- œL÷0$EØÇÌ>™Æ·JÉæ4»ñ/ê5om:þOG]rhžÓ›Ã˨>©=æ§¼Æ41ùCy g<β¾ ®‘gâ»›})¡h܉ãeE[Œyaz zÖÆF¥EŸ]}4"xYBm­-ø˜Þuuz Æ‘§kšSêòÜÇoeáĺclWq y0=³Oм3á¸5˜gêòÎ÷J{¨#ºDf6áŒnÁ÷ϱ¬eN1m§uêÿ#o¨MÉ$×OÆÝ>gùÔyÕÔØø{Ão¦Ç«^O«ëÑic+š¾òqŽ£¢þ¹ã=4ßìŠ6š_›æ‹}F¯ê¥”ŒûàŠèŽ2n+t¿-þã a§¤öÿ;Ûò1¼ê™a¹{GºKyZÞ6 ó%ž€·@kºñfºÞ$ñxVÃQ½Q-é†án¡„D˜n6Ž0zœž+CKµÐm4;Ë2}PG³K x”8 Æ1»xzñ\¯1”iÆRŽ®Úo£v쎨¯h⥢¿Þ“óò<¿Î£Î¯BÔ¬´ü?â;­]o..bÕ'ºD‹ÍÝü88)ÏÍ€?•R‹ÀÚ9š-[Ëó®KaöÁ"*ý™záO½³ÿ꫎eMÆòMÃ]¿§€©ò¦¿§oÄâ¼ê’ÚþK;û[ˆX«Åq?Þ³¯i^Ñ|;§Iæê2j·öQ\¢îO%7c9ã>¸ñ5È™³$#þš§þ„+wZ5hÉ­µF ”©UŠ{èÏ«h£5Ïx¦idŸGÒÒâ[h5;ÃİHc“bÃ$›UÆ –(A ã‘ùáöÇCEp3ëSø'RÔìàû^«aX4ÜÝ<²Ä÷¼,¾l…™‡ à18Éé5}SPÓ<¨jsZš…­”³ˆ •¦M꤀ª–á=ÊQnJ&ÕÉ,iàïM.õbòëÈ„‹»÷tžy]QX%aRÏÏ– ü' *¼Þ7Õch¬C´:ËjÙÒ@ú‹ u&ÜÜYD%ˆÙƒ9Èè2k—[/ëú¹*ís#µ¢¹¼z©aöGM’Ü,WAÄry™¸·r¯ p7nÚJ r ñSøÆòö ÚÜFd³¹kë(†S” stÜ1‘‚Aé‘ÛšI]¥ýooëþ ¶:z+Ì|}¨jêúÌ׉mô€°YÝ4.L—²+„`˵FÜî^ÙQý¢g6þ2Ô(lÜ@9ÿ¯q^.u7?òÍZ÷ZDú׎u{WfÉ1ä(ì­yGü Z§ü÷´ÿ¾Ûÿ‰¯rµTÔ$Úåäx´1jnq©$Ÿ4¿3ûIÿ¸¿­(ÔäÀ¿­mªÏ{Oûí¿øš?áÕ?ç½§ýößüMaõ|wò³§ë˜/æF9Õ\ŽbOÖµ4o^h)¶¶†O3ÇB*Oø@µOùïiÿ}·ÿGü Z§ü÷´ÿ¾Ûÿ‰¨ž5iA•v;M.¾%êvòC%…˜WIòýõOƒâuý»HÑiv¤û͇Ïþ…T?áÕ?ç½§ýößüMðjŸóÞÓþûoþ&±þÍÄÿ϶l³Z j¤:Œnõä»6¶ðH˜#Ë ŒŽüš]KÆÚ¾£¨½à”ÚHÃèÌWŽýòy©áÕ?ç½§ýößüMðjŸóÞÓþûoþ&«ê¦­ÈÈþÒÃ^þÑÒ볌Ou<ƒ¸y˜çõ«1ø¢‰;HT¨Ál±-õæ´?áÕ?ç½§ýößüMðjŸóÞÓþûoþ&—ö~+ùÿ´ðÿóñk­Ì­Ÿ->œÓ›\•ºÄŸ™­/ø@µOùïiÿ}·ÿGü Z§ü÷´ÿ¾Ûÿ‰®ØÇ1вLÁâð-ÝÉ¡û<ܵ×4÷e EÄãú÷5õe|µðHŸEñÎotñ»´Ó¸1’F<†Àô¯©k ÇŸšŸ´ß•_ïcÀJU6æ’<çãKlð­±ÿ¦çÿA5àþ½{·Æè¤oÇ$jJÅ6çÇaŒgó"¾yó«ÛÉåþÍó<¼Î?¿ùú·ˆõ=vè\j÷²ÝH>îóò§ûª8^€ª½gùÔyÕëFÑ\±VG›+É݆“ñĺ€²ÓuY"·S•ãI6û Àà{)úoÄoé6†ÚÃUtˆ»Iµ¢þf9',¤òr\gGY:4e{ÁkäZ©$¤ôó:ù¼â9ôyt¹5#ö9·awnbÍóÏ$žýñK/ÄÍ’I«H~Àêöí±) W–Æ[‚AÜNsÎkó¨ó©û+쯹µ©üÏï;ˆ>%»ÕmuQžæÐ0¼¤ ›å ·$dŒÓ,¼O­À,Öì¯Øä¶$>[>wœç'®k˜·mî+Û~øÎãM–§š±dà6:“íž1ìkÍÆ×¥†ŠJ îþ»¿¼ïÂÓ«^M¹¿¼â-|IâkF·k{‡SnÒ<$Û!Ød9sÊ÷?ýj³/|e-Ô7¨ÏæA»aXGÌ9Ã\ôÍ{ˆðþŒ?²lð?Âì þ6?ø Ÿá^+Ç6îá¸õÊÊoï>xÖ/5zûíš±yî6ßä„àtá@ëKÀ%´¯YÞÝQÇ(.ãeHêkݰ4úØÿà2…Ø?ýlð?Š™…IÒt¬’`¡Š¥Ûfgü%úüþAÿø×—|I¹Ƽ“Ù‘2”næý+Ù?°4úØÿà2…Ø?ýlð?¹0õ¥B§t¿›TÔÖÙo¼ÉE¬+?ºb/AÀçêyª«aqçDLO"“òžÄWÒ¿Ø?ýlð?Âì þ6?ø ŸáVó:¼¼©+õ |Üͳ3þý?þ ÿ¿ƒüj®£®èºµ“ZßÜA$LC ³ìd`rYHe`y #±­ßì þ6?ø ŸáGöÿ@›üOð¯#”ô®rp¿… ÓÞÌÖÛP’Þ;{ã{+G¨Jn.ÄÑó8“ÍÎs¸ð¡zWA¯ÍáÛ«ÞiVo$ŸêáŽÙ 7¿N½aXø“ÂZ¤âÒ÷C‚Éd;V_-@VPúÒßõ÷¿ðŒé—vúEŒ1Àšf›r.ÖÝ¢2;̤²¿˜ÌNwf$byn¹é¯¬mµK m/có ™p˸©ö ŒAäAk‚)<7â$ÓD¯%•Ê-‹œ”#ªgÓ½v–ï¾0i>Ì:ÜɃÁÚ,’[˜..Y¢ä»½šâVh˜<¼‘Ùö« …ÎÞOœšŸƒtMZáî.­çIžu¸2ÚÞMnÞj¡Œ81ºv1RGQ€sÊ)݆ÁER¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ޝ¥Å«X½´ê¬Ž¥Y\dzƒ^A©~φk¶“KÕþÉùO— ô8Î>¹¯m¢µ§Z¥/ØÎ¥(TøÕÏÿ†wÔèa‹þýð£þßQÿ¡†/ûô½æŠß븟çf_T¡ü¨ðoøg}Gþ†¿ïÑÿ ?áõúbÿ¿Gü+Þh£ë¸ŸçaõJÊÿ†wÔèa‹þýð£þßQÿ¡†/ûô½æŠ>»‰þvT¡ü¨ð'ø{¦1õ¸ä°ÿ­^­à_ùì?í§þŒj½­ÿÇ»}*äK°ÿ¶Ÿú1«Ö©UÞnæ‘§ jÐV: (¢ °¢Š«©ß&§És'ÝAM&Ý›I]–¨¯Öó½èó½ëÑ´ÏNÓ@Ô¯/ô†Õãžá%{Ù’‘qÈièÛùäÕû]gGƒYÕL>#´—Yš(Yo¦¸Š5UfòŠ{ '#¸$a,¤[Nž«ÏÎݶëÀÒ8:rÕOðòõßÈò¯;Þ­Écy“¥$%lçÇ¥‡ÌèÆsø×u?"´“ÅW¶Siöº‚Ãj‘47):ܸ-ºD;T1à ü¼bªÏ⫽sánßøHlc½W›í°\º$³§$*.ÞIÈÆ1éš]¬ìù,®“׺¿Eø‡Õ)-9ï¿Nß3™Ð´;ÏK8´xa†Ý7Ïss&Èâ·|SõÝó@[i.&¶¹¶ºRa¹´—ÌñÔÈ©¼%yc¨xgZÐ.õ+}6{öó\¾Ø˜¡$«7nßý|W[ jÚ7‡fÑ495«·…ç¹¹ºI‡‘hØx9ÏùÍ*غ´ê;+Û¥·V½ïë¡pðœúõ¾ÎöÛÓ_Ÿ‘æžw½iiz=ö±gsdªÑØCçM“Î=¾?­xxƒÀÚEÞ¡uo>¬·2¤6‰>ÙQÐtí[>ñ‡|)á½-o¯g{«ÉÍÂØ•y¦^Y4qýŠÞ;èÖ[SµÖ`Tó‚äŒvèž#ðn¡y WF:Â¥ýÜÅ€óG·“Û;dÏ›ýªˆæy'o_Ÿn×ù«ÁSRåUÿ¥ùÛå¯CÎ,£{ûû{HYD—¬JXð  ûsV.¬%²×ŸJ¸ž–9ü‡”¹©Î2I|R§ˆµ¾"[ê׎°¤º„r1vFÆ2z`(ûWQ}kŸãÑâK_èr@úŠ¿— ê¼¢7p­•Æ8V99àdÖóÄÎI«]~=®g<% 4ïf¾íu·Üq׉ö;Ù­¼øgòœ¯›îGÇu=ÅCç{×¥ÜxÎ-*ŸIÕ,üÉüFÂLH›sÕ½”à|Ãó«ö:æ…mq©®©é–w_ÚIžKÈàIã# +´r\ç…Æ9ägžoí ª7tÿMôÓ3i`©¹´§×·®Úë±ä¾w½z_Á‰ Ç® ð%‹ÿAjóoj‘_ø–úæÞÞdyOîà:8%XH'8ï^…ð9÷ïúkþ‚դܰwj×±Y|TqVNûž­EWÇŸNQEr~-ÿ‘‹@úÏÿ ­túú…úW1âßù´¬ÿú ×O§ÿ¨_¥KÜh¹ERQE­Áså˯`Ñ’=›²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@lºÿžÐÿß“ÿÅQ²ëþ{Cÿ~OÿSÑ@ÒÜy ºX¢#ÿfªþÿ‘.ÃþÚèÆ«Úßü{·Ò¨øþD»ûiÿ£š: (¢¨A\ÄöÛà;³þÒ:뫞ñΖÚÏ„nìc;^Aò“ØŽGëŠÚŒ”jÆO£FubåNQ]S>có¨óª¥òͦ^Éi¨FÖóÆpÉ Çâ=G½Wûd_óÑ:û•V-]3ä9'f?::³>Ùüô_ζEÿ=ó§í#Ü\±§çQçVgÛ"ÿž‹ùÑöÈ¿ç¢þt{H÷GØÓó¨ó«3í‘ÏEüèûd_óÑ:=¤{‡#ìiùÔyÕ™öÈ¿ç¢þt}²/ùè¿Ò=Ñö4üê<êÌûd_óÑ:>Ùüô_ÎiáÈû~uuf}²/ùè¿l‹þz/çG´pä}?::³>Ùüô_ζEÿ=ó£ÚG¸r>ÆŸGYŸl‹þz/çGÛ"ÿž‹ùÑí#Ü9cOΣά϶Eÿ=ó£í‘ÏEüèö‘î±§çW°|}öÚùÿ¦Ðÿè-^öÄfTˆ™dc„Ž1¹˜ú:×Ñ_ü;u ø^âME<»»éDÏüó¯×ýI¯5­cÉ}Yéå´¥íyí¢=Š(¯—>„(¢Šä¼_“â iæ|3ü+]‚Üù+‰¢éÿ<ÿ\÷‹äbÐ>³ÿè+]=‡ú…úT½Æ‰v]ÏhïÉÿâ¨Ùuÿ=¡ÿ¿'ÿŠ©è¤0¢Š(ç;Öü+ãKÿ°ê7ë–Öo^%\¬HŽ öï^kÿ ¿ÄŸóûªàÖOð®—ö‘ÿ‘ºÿþ¾mÿôœW‡×­_R$akrÇ¢íèy|5*ÜòÛæ—WßÔô¿ø]þ$ÿŸÝSÿ²…ð»üIÿ?º§þ dÿ óJ+ŸëøŽëîù?PÃöø¿Ìô¿ø]þ$ÿŸÝSÿ²…ð»üIÿ?º§þ dÿ óJ(úþ#ºû£þAõ ?gÿKüÏKÿ…ßâOùýÕ?ðk'øQÿ ¿ÄŸóûªàÖOð¯4¢¯â;¯º?äPÃöø¿Ìô¿ø]þ$ÿŸÝSÿ²…ð»üIÿ?º§þ dÿ óJ(úþ#ºû£þAõ ?gÿKüÏKÿ…ßâOùýÕ?ðk'øQÿ ¿ÄŸóûªàÖOð¯4í¦¯×î¾èÿÿ³èvø¿Ìô¯ø]þ#ÿŸÝSÿ²…'ü.ÿÏî©ÿƒY?¼Ќu¢—×ñ×ÝòÔ0ýŸþ/ó>•ø/ã½oÅ^4°ûv£~Ðf šõåVÄ,ÀxêGnÕôu|™û7ÈÝaÿ_7úNkë:¬lœ½œžî+ódࢡí"¶R’*jwÃMÓ¥»d2ñ•ÉúÔZn»aª-fLsü¬?ÿ†j?Ã%LJîb‚6’F …A’~a\ö—à™œ¬ºœ¾Hê"ˆ‚߉è;tÏá\ôÖ¹½cÅWºÇöF…¤K¬_¢ fE™aHPôË·>ž•ÑEÃD,Bô.åæy5Å\I}á?êšöEî§a«,M¾Â/2H¤EÛ´¯Îk§ÊNêúh¶»ÿ†»1­)F:iÝö_×ù¯ˆ!]Þ÷_XôI%fC äê»X0ã9ÆGµ^þÒ±6±] Û³ÌBÅ/š»ž€àþÁx«SÖõMuðýÔóË)™[MKÙ¡ÚHŒùO€7¤ôì}rtíP“Á_Ù×zeë¯E)Š[Cam¹;!W®@àWRÂBQ瓳¾ÛÙ^ßÖ§;ÄIK•+«^þv¿ãèzIñ.„-ÄçZÓ¼–r‚Oµ&ÒÀFsŒàŽ=êÍö§a¦Â²j7¶ö‘¹Â¼òª>€“\Þ´þÞñfÝ/#ì)ö,Z ¾g–såñÙÇÝç5ƒªèZÚÇ¡ÝÏiy$ ¤Åo²=-/ZUh¤#oùºñŠ!…£6’½|ÕÂuêÁ6ãOUþg¢kÚ…”vI$—p*L»¢f•@c9<ŒsÅCà_ùì?í§þŒjãeðÜ–ÚO†í¦K‹ËušY¤Ú¼Ë¸+¦H\7lâ»/ÿÈ—aÿm?ôcW%Zq¦í}ÿ;ç)ÆòV: (¢²4 GE‘v¸Èô¥¢€1ï|'¡jDý2Œ3'­Tÿ…{á?úZß'ük£¢ØŽsþï„ÿèiÿ|Ÿñ£þï„ÿèiÿ|Ÿñ®ŽŠ.ÂÈç?á^øOþ€VŸ÷Éÿ?á^øOþ€VŸ÷Éÿèè¢ì,Žsþï„ÿèiÿ|Ÿñ£þï„ÿèiÿ|Ÿñ®ŽŠ.ÂÈç?á^øOþ€VŸ÷Éÿ?á^øOþ€VŸ÷Éÿèè¢ì,Žsþï„ÿèiÿ|Ÿñ£þï„ÿèiÿ|Ÿñ®ŽŠ.ÂÈç?á^øOþ€VŸ÷Éÿ?á^øOþ€VŸ÷Éÿèè¢ì,Žsþï„ÿèiÿ|Ÿñ£þï„ÿèiÿ|Ÿñ®ŽŠ.ÂÈç?á^øOþ€VŸ÷Éÿ?á^øOþ€VŸ÷Éÿèè¢ì,Žsþï„ÿèiÿ|Ÿñ£þï„ÿèiÿ|Ÿñ®ŽŠ.ÂȵðW‡,eólô‹xdþò󭨡ŽÛ…_AO¢…QHŠ( OÅ¿ò1hYÿô­ˆõýÀùÚµ´Ê1ÍrˆÃ>Äæ¹¯ˆ‰#êZ…YŸÏbŒž2Oå\V£aÕ5_¶ÙêqéévZy`Òâ¸lpÄý á£ãàù®¼.5åï;KüÎlEyRÒ¿ôÿÈ÷@C(*AdÞ²›¢Þ\JbŽ&Ô’VÏ7p…Žãh9ìx'„îØÙ¢³/|M¡i³É£­i֒ĆI#ží‘F2ÄÀûZu߈´Kf/µ‹ ch&ºDûFq/'æûæzZ7FŠ¥ý³¦hÿgÿhÚ}·,>Í篙•PÄmÎxVR}Þ ¶ñF{§Ég®i·qH"’æ+¸Ú4r@ XÈã¯"€5(ªšn«§kVBóG¿µ¿µbTOk2Ê„Ž£r’+šÒük}{ªÃÞ}Ö¡s§ÛÜE|d—̄ɖxŒjH‰¹Ø%r9$;Kšúßü{·Ò¨øþD»ûiÿ£¬êÚsؤÉjÑM ž7)WŒc.yQ‘ÏNE7À¿ò%ØÛOýÔ-Ä΂Š(ªŒÁFIÀ¬‹¿é6Rùs\ÝöóT|wª¾• ïˆá¤b™ü+Ååºy¤/#brI5íeùjÅEÎnÈò±¸÷‡’„UÙíÿð›hŸóò*?á6Ñ?çäþUá¾o½o½z¿Ø”?™žwöµnÈ÷/øM´Oùù?•ð›hŸóò*ðß7Þ7ÞìJÌÃûZ·d{—ü&Ú'üüŸÊøM´Oùù?•xo›ïG›ïGö%æaý­[²=Ëþmþ~OåGü&Ú'üüŸÊ¼7Í÷£Í÷£û‡ó0þÖ­Ùåÿ ¶‰ÿ?'ò£þmþ~Oå^æûÑæûÑý‰Cù˜kVìrÿ„ÛDÿŸ“ùQÿ ¶‰ÿ?'ò¯ ó}èó}èþÄ¡üÌ?µ«vG¹Âm¢ÏÉü¨ÿ„ÛDÿŸ“ùW†ù¾ôy¾ôbPþfÚÕ»#Ü¿á6Ñ?çäþTÂm¢ÏÉü«Ã|ßz<ßz?±(3íjÝ‘î_ð›hŸóò*?á6Ñ?çäþUá¾o½o½Ø”?™‡öµnÈ÷/øM´Oùù?•ð›hŸóò*ðß7Þ7ÞìJÌÃûZ·d{—ü&Ú'üüŸÊøM´Oùù?•xo›ïG›ïGö%æaý­[²=òÇĺV£0ŠÚéL‡¢·ý+W9¯œéá;âvF^C)ÁÖ½ßÂZ›ëÓ¯æÿY4 ¿»ƒúŠñó¾8KJéžžñ7RVhØ¢Š+È=3“ñoüŒZÖýjÂøÃZàÔ/4¨¤¹,Žö Äw*Óï‘Ïz«ã)sC–V ‰ö†f'«“Vô?xnóC±¿:Õ…´W¬#…n.£F2`/¾øÈÊŒžiƤàÛƒ· ¥Î6’º:•PŠUQ€À–¹sã\øêëÄ+³!~ÑI8ÿ—q\U¬ÐÈB¬‘¹=l×KûHÈÝÿ_6ÿúN+Êü0íý³9?ÈÓÍh©¸NûB?‘îð–k,,žFêS—æw(\œ\Õ{‹ˆ ´eBvžŒ)o¿ä?oÝšó«yíË“üUâP£í"Ýö?EÎó‰`*B’…ùÏLQòüåHe‰NDа¥Lì_ ¬{¿ Åwró™ÝKã”TyŸ3=lE\M:1– OÖÆ¸š<Þ'_ï ££mŽs+VxðœDÿÇäŸ÷Ïÿ^®è1y:vÀI #`žõ£Œ+¹æÐ­‹«‡Ö)òèúß±¤YWï_©Å8s‚?+—ñŒŒ«?΢ðž£+Ü5¬ŒYJåsê*ã‡nŸ:fu3øRÌpÓ¹ÜXãM±Ô58mÌ—4(0y9Ï኱>Ÿ7Š<)o¬êZ•í뺲H’ÏÒPHº\¿oðî!ʽÕòDªOÊ?ýzê/m´Ý7á÷örÝE«pHÛ‚[Œn¯4çB\›³äqxˆV­:‘VG(o4Aµ²2«^\@‘¸”ç¿ó¯*ñ Òͪ¹–6«vµµ°`Õ̸ îãÀ: žç¾k'T¸k¥Ý& \z´pÎæ–çÎâqNpöQønzßìÝÿ#u‡ý|Üé9¯¬ëäÏÙ¿þFëúù¸ÿÒs_Yס‹øi…~lùü'ÅWüOòF7ˆô›­F;1¡]CM¹VÂà°ŽFÚÈÈÅy‘ØnàpØÁæ|Yáø¿J[[¹,ìcš ˆeµµÕ.4gUÊ]#FŸ|ÆÁîç;yïè®ëúþ¿¾î÷8Xüªuu¤³\êÉ~ê²3¢Ãìås´dïç·ËÏ^+¾ê_aÓà•¡¼ÿ‰4]ÚÿkÞZÇ—¸ <õ>aùgO¼7z•\ß§á )4­ýw9à¹%³ñ…«M#_\2¦]£O³$#p8ÎXã<ƒ×š¡sàýsXk›½J=.ÎæVÓ£[{iÞXÌv·RÅÌjwÌíÀÀùŽx﨤¤Ó¿§àv·õÓü‘¢hóéšÆ¿u3DcÔ¯–æ%Br Agwséž1\öàÑ5/í{84äÕ&¾»7“*a®-g™œ)}¹Þ£Ë#9)\àäwTRÿ+|»«SÿŽ·ic§Újpi²Úéz\Ú|^Uä»®Cö»~ìy|GȰO×_à_ùì?í§þŒj½­ÿÇ»}*äK°ÿ¶Ÿú1ª“mê);QL“ƒø°Û<;né©þUã~½z÷Æ'Ùá{sÿMþ‚kþÑï_a“»a¾lùŒÍ^¿ÈöŸ|<ðÖ¿áÛmR;ÝE‰™ÍÆs±ð¯3Ô¤³MRá4¶‘íB°´¬ 2ŽçuëÒ¤xÖûGðÞ§£Ûóþ>}Ø1vlqÎåÀöÅ`}£ÞºpôëB¬ÝI]tôþ´9ëN”©AB6}OL¸ðhÔ“J]­¬Ùô„½º’æf I8-žqëØU?øWú¯ÛŒ-{¦¬×íBôÜþàÇœd63øãüŠ¡ÿ gý›û7þ`ßÙ[¾Ñÿ‘1·ÿýiÖ?­mÿ²ÍÖ,ͦÚhÚEà$’ l ÏN1Èæ°¾6+O>Þ~~ˆÚ_U“û»¯å¿ORkß_‰¤†™²\}š+©îvÇrþ‘œe¿.{w©að¨ÐÞKy{§iéepmåk»‚ƒvÐÀ‚‚aŽþÕ$_Ék´¼Ò ·šàÏ vwòZ´dŽC:}üõíÎO¦9ëÿ=÷‡n´¹!•Ú}@Þ ‰®LŽ«³hC‘–ÀæÏáUãdìÕ–Ÿ¯__Ð0‹g}ûùÛ§]?SľƒCðþŸ¨Cª[LóÄHüðL„ž±.9QÜšMB¶ñ‡­þÅËøµ‚åÕÉÌ2trÇ¥bê~1´Õ¼+e¦]hëöë„0ß-Ë ªÕã1É÷ã¥WðÇŒ.¼1%óZ¯˜níš7ãcÿ ô9#ž=êÒÄû¯¾ž›j¯åÒÝÌß°öªß ZùÞ£áM&ÃPÖn?wýŸöh~À^f¯1Ú¬[9!J±=x§Kà;[«ýi^{=+ì0Æc‰oKƬÊ÷w\ì?N¿Jà¯8´Òõh ÄÍ"Ëb§*ŒqA"¢â P^h2Ûé^\:4“2EöœïY!rWŒ3Îk;HñoöW?·Í¯ûéeû?›·ï†݃Ów§jÖ ©Ô‹ê¥n÷mÛ¯§¡ÎÝàûrßµ¬¯Óþô[[/i:u¦—¥Éæ¼­#Ûj-x…V7ùY]@8?…sV>ÔõKxîRæÂÏíNÿd‚ê}’\‘þz`×3áßÿ`x¢ cìâãÉg&&ÝÛ”¯\}ïJß°ø•omŸÛ4¯n´Ö“û>áîY|•n” 9¼tìy©”14_îµÑnïüÝß§ÈÛŸQ5;-tÒÝ»/QÐx[º–Ñ-’)MÔ2Ê0äyf3‡FÈáƒaqÓ'¯SYz¦“u¤YØ\^<@ßDeH•Žô\àã=ºô©­>$êöz4öP²‰¦¾ûgÚÁ_›s …€?˜ïYž(ñD¾&×¥ÔeÈVUHá¸F càwÉük¢œ±^ÒÕ-ËýŸáæsN8nOr÷þ¿Ëñò:X¼¬I§¬þ}’\µ¹¹]=§ÿIhývc¾=}ºñZ^-°¶ðïƒ4Ë[eÒf’éI®Q·Ü9<îCŽ#ãÿëç&?‰ê%Óh°¾»§ÙR3¶ôÏ•¹Ç|õöâ¹í{ÄßÛvú\BÛÈþϳK\ù›¼Í¿ÅÐcéÍcŠ©V.®‰?óóÛkuî¿Ù¡MòüMyùyo¿ôÎÛÃÃZ–¨Mwáß2}.ÐK$Ÿn} óž ÓÞ³m|9'‰]KM[-N’U†Ý/¯ñÊ£KŒþ8 sºŠ±´Í^ÓìÞö•·‘¿ÌÛåuç9ëÓŠ×ðßÄc¢hÙW¶]Û¤¦HšÞúKGRsY>ðöþ|`œkÓ”åJïk]ßN¶MÛøFT§Æ¥–÷Óî»Jå¨| ­\ÜOo¶’êÚàCqn%;ᤇ#ç “íÖ®Zø*Ú _ê?Û–k{)$` u•É'ø{|ÖF™ñé\ÜZiækË»€×·vxâ•Èã±$œ}0–^8Ò­týKL—ÿhÓ/'Ûµó+BØé½Tdp00=É¥)c_áµ¾}~ïÄ¨Ç ž¾}üíÓïü &Ÿå<ö¯xøhsðãH?ôÉ¿ô6¯MÇÊyí_Cü/9øg£údßúW&vïN§NR­9zeQ_.} Éx¼n×ô韴üukž¹ð?‰uoÚh&âÚH,å²"Jx„™EXçpˆ ‘†Ûì–lWEâßù´¬ÿú ×O§ÿ¨_¥KÑèRmü"¼zòêjlÜ.§¢PÎù'ì¿f•?Õö:Ÿâ?) ÷«¨ÒåÔ.t“UŠ4»pùX‘”Üv¬IRWi œ‚H­*)KÞVaÕ>ÁEPÉŸ´ü×ÿõóoÿ¤â¼ŸÃGÌ?ò5봀ϋ¯ÿëæßÿIÅy/‡ÎÝb/ÇùWNeðÇüü‡»bSÿ§ó;{ÖΛ?ýs5çPÇò½]õãŸìùúÿ«5ÀÃÿŠÚ¯š„¼âšŠXš,ôôåWœp+ïÄBÖéá6’6ÒFàÝJÖVÊ€sÐ*qŸ¼«ø\1iIó+Ÿq^ëQ‚ÃÔåzy˜?ð–Æ1þ‰'_ïõ«CC7MY:ov8üjîØ²>E?ðU4‚«`;|íÇãZIÁÁò«jXºXÈ}f¢–ŽÚ[±‹ã Ymð àôúÔ>±]=Ë©ª@'Ô×TëœJŠþÌ¡J Â£ÑGJ¸â-DŽZÙjf)騝c¯Ë£GwilG™ö­ñü—}k)õ×Y$k–yäO“ÌcÛÛÒ½áÿü7â µ-GÄRÈn'ä¢)\ïÝÜçð¤ñ'Ãφ–2ýž?Mm3±7¤øíÉqø×µ ôãu©ùî2œý¼ã®ÏÔošòRÄäÞ™dUçnÖb~‚ºxËB½·†ÏÄ–z„71™RTŒ®8ÁäÖÌbÆ";±#‚T``öõ­ã.täy3Œ¢ìÏWý›ÿän°ÿ¯›ý'5õ|û9øÆÄõÿI¸ÿÒs_Xָͩ…~lópŸ_ñ?ɯï¢Óíâá¶¢Œšó­CâŒërËeù`ã$g5¯ñJåíü9Ãò*ñŸ:½|§Fµ7Vª¹çæXÊ´¦©Óv=þ–£ÿ<ãÿ¾Eð´µùçýò+ÏÚ9$Rޤ†V úO:½¯ììò#Êúö'ùÙèŸð´µùçýò(ÿ…¥¨ÿÏ8ÿï‘\=ž›©ê´¶}ÝÔjv³Á8® ©ùÔ–_‚nÊ]Å%w&z'ü--GþyÇÿ|Š?áij?óÊ?ûäWùÔžu?ìì'ò!}{üìï.¾!ßÞ)W}…w~ÿ‘.ÃþÚèÆ¯ Ž\š÷?ÿÈ—aÿm?ôcWÍæ´)QœU5mÿCÝË«T«æîtQExç¨yÇÆ¶+á+víçóÿ|šð?:¾¦ñ~ˆô)l'RÈà—¨=ˆ÷WÏúŸÙ]´vvúü² *qîëô&¾ƒ-ÆR¥IÓ›±âãðµ*T点ÌùÔyÕ·ÿ ׯÿô—þú£þ¯ÿè/ýõ^§ö†ùÏ?êUÿ”Äó¨ó«oþ¯ÿè/ýõGü+_ÿÐ_ûêí 7ó‡Ô«ÿ)‰çQçVßü+_ÿÐ_ûêøV¾7ÿ  ¿÷ÕÚoç©WþSΣέ¿øV¾7ÿ  ¿÷Õð­|oÿ@ïª?´0ßÎR¯ü¦'G[ð­|oÿ@ïª?áZøßþ€2ÿßTha¿œ>¥_ùLO::¶ÿáZøßþ€2ÿßTµñ¿ýeÿ¾¨þÐÃ8}J¿ò˜žuumÿµñ¿ýeÿ¾¨ÿ…kãúËÿ}Qý¡†þpú•å1<ê<êÛÿ…kãúËÿ}Qÿ ׯÿô—þú£ûC üáõ*ÿÊbyÔyÕ·ÿ ׯÿô—þú£þ¯ÿè/ýõGö†ùÃêUÿ”Äó¨ó«oþ¯ÿè/ýõGü+_ÿÐ_ûêí 7ó‡Ô«ÿ)‰çQçVßü+_ÿÐ_ûêøV¾7ÿ  ¿÷ÕÚoç©WþS §Â’Ojúcáj²ü0Ð÷Œ·,3èX‘úñ} àÿ‰5+øÆ½lÖ6A‘%䙯÷ë_Eiv‰a¥ÛÚÆÚªŽÂ¼LÏN½¡ lz¸ 4èÞSêZ¢Š+Æ=S“ñoüŒZÖýk§ÓÿÔ/Ò¹ÿÈÅ }gÿÐVº}?ýBý*^ãEÊ(¢ÂŠ( “?iù¯ÿëæßÿIÅx’;#C´Žà×¶þÒ?ò7_ÿ×Í¿þ“ŠðúíÆ|Pÿ #‹ì¦ÿ½/Ì´oî™ ™ß`ÕÌèAVÇáQf—5Â’[ŒªNNòfˆ×µÿ——?8x‡Qòðÿe抟gÇBÇb–ÕÞkêXÿ†¦Á­jªÇo3rÜ(îO¥ef¯iÅæ‡¨¥öœéÌ`„v[nF228>ý©{8ZÖ+ûCÚn£ûÏLÐ~|F×,ÅÚÚ%•¹Máï¤XØ÷>÷éOñg‡m¼!¡CwqâkMZýˆÝkoò„Ï Žïøãé\}ïÄÿßhÒirê[-¥}òyQ*<‡ý§qúf¹V•Ü嘚ˆÒ´¯dtK2­(¸¹Éü΢âKÛíÜ’ËÜ’Q¼בøVRi¤JÇxp¤”ã&kâRÒÖÞÕ%ííƒa–%uMßx€GSRIâÝBHâFƒO!…ÛcãÐàsø×¡ÏM»´yœò{•n-÷cc°aÆ×=*‹’çËÁ9ëZ â §GSoc‡ô´ŒôãŠÌw.åŽ2NNg9Eü(–îÏpýœJŸØm¤Ïœœÿ˹¯¬«äÏÙ»þFëúù¸ÿÒs_Y×N/á¥þù³ƒ ñUÿü‘çßg†mý6?ú xŸžµìÿ›g…-ý7?ú ¯óýëèòi[ ó'þ K¡§(ÌfÏýY”ŸŸÌí×޾õ›áõ&ðÄòé³N.¤¸¬œÊÄ Ä”äÆ2kÌl¼E«i°´:v©yi6æH.ž™À=x¶ž%Ö,!0Øê×ÖÑ,R—EÉêpZÏêõcBIo®·w¾ÿ}ýQJµ7ntÞ‹ÓKm÷}Íž›s iÃW—6šIlžWšk™çˆIyòÎß-ÆÐGÞ 1КÛ×´M?[ñ¶ku¤Mon-Ãý¥$`·!P‘n½gŽpN£Ååñ&¯=›ZMªÞÉlßz¹r‡œò¹Ç^~´×ñ«$6ñ>§xÑÚ²µº†"¿t¨ÏÊGlt¨ú¥kߟ]z¾¿?ÀÑbi%nNÝCÔúeÇöEËh³èÏu,ÑIa4ÎÌÁQˆ|¶rnÿŸyàR‚ìqÛÌÏýüjùÜø‹S¸½ŽêçR»šâ5Ú“I;3¨ôœÉüëѼñ .ÔØj[šmÊËÕ~;ƒþ=s^Fc†«M»¯›¶¾zžž JWŠV%¸ö*+Ÿ;ðáÿhcþØIÿÄÑÿ ׇ?è#ÿ$ÿâkÆ=C ¢¹ÿøN¼9ÿAü'ÿGü'^ÿ þ@“ÿ‰ ‚Šçÿá:ðçýòŸüMðxsþ‚?ùOþ&€: +Ÿÿ„ëßôÿÈñ4ÂuáÏúÿä ?øšè(®þ¯ÐGÿ IÿÄÑÿ ׇ?è#ÿ$ÿâh ¢¹ÿøN¼9ÿAü'ÿGü'^ÿ þ@“ÿ‰ ‚Šçÿá:ðçýòŸüMðxsþ‚?ùOþ&€: +Ÿÿ„ëßôÿÈñ4ÂuáÏúÿä ?øšè(®þ¯ÐGÿ IÿÄÑÿ ׇ?è#ÿ$ÿâh ¢¹ÿøN¼9ÿAü'ÿGü'^ÿ þ@“ÿ‰ ‚Šçÿá:ðçýòŸüMðxsþ‚?ùOþ&€: +Ÿÿ„ëßôÿÈñ4ÂuáÏúÿä ?øšè(®þ¯ÐGÿ IÿÄÑÿ ׇ?è#ÿ$ÿâh ¢¹ÿøN¼9ÿAü'ÿGü'^ÿ þ@“ÿ‰ ‚Šçÿá:ðçýòŸüM5üu >MÔ“¿hã÷¦@—ãûá§ê:=ƺ öFX îUB¯Ô¶úÕÇ9ðU¯œ¥]COiJ (ÅÔ[ˆÏAÖ«ÁcqâMz=[S…àŠ>ËlOLs¹½óÏà=+´6ÜYÉmu sA*’)2º‘‚<Gj›ÙÝwüŠŽúžcñØÜëzâ X.ÕàÑc0\E)7ò|Žv·¿Êx= MªÙê"ÖÛLuñ<¡ô›GÝ R€‰ò¯—…QûÞ™É>‰eá½M°6:v‹§ÚZ4¢soª$f@A´ nTƒ×éK©xoCÖCcFÓïÕ-ö«T—qPB“¸à3cÓ'Öš—*ÓúÛü¿­oMßëKTQEI'Î?< ­ø«Æ—ÿaÓ¯Ú,2,ðÙ<ªØ…T€GIïÚ¼×þ‡‰?çËTÿÁTŸã_lQ]ïNIsÓM¤–ï¡ç¬-X·ÉQ¤Û{.§Äÿð¤Z§þ ¤ÿ?áHx“þ|µOüIþ5ö޾þ|¯¾_æWÕñóùýÑÿ#âøR$ÿŸ-SÿRð¤Z§þ ¤ÿûbŠ=¾þ|¯¾_æWÄÏç÷Gü‰ÿáHx“þ|µOüIþ4Âñ'üùjŸø*“ükíŠ(öøùò¾ù˜}_ÿ?ŸÝò>'ÿ…!âOùòÕ?ðU'øÑÿ CÄŸóåªàªOñ¯¶(£ÛáÿçÊûåþaõ|GüþtÈøŸþ‡‰?çËTÿÁTŸãGü)Ï–©ÿ‚©?ƾآo‡ÿŸ+ï—ù‡ÕñóùýÑÿ#âøR$ÿŸ-SÿRð¤Z§þ ¤ÿûbŠ=¾þ|¯¾_æWÄÏç÷Güœ~ ø[ð¯,>ݧ_¬Y¤iæ²x•s (ž:ß½}EŽ"²¬Õ£d•pô+Êí»žuñªÒ{Ÿ‰-пÙäó\ÎÜ`ŸÃ9ü+çA6FA¯±ïl£¾€Å/CíšómKà/‡µ Ç¸Šæ{2ç, )?Là~¯G˜Ç NkC“uçÏxïGï^åÿ ñ¢Ð^ûüþ4áˆþdx×ö“zÑý¤Þµì¿ðÏ'ýï¿ÏãGü3ƉÿA{ïóøÑý¥†þVPÄ2 div:not([class]) { height: 100%; width: 100%; display: block; } } iframe { width: 100%; height: calc(100% - 60px); display: block; } } .epytblock { .components-placeholder__fieldset { max-width: 100%; } } /*.edit-post-visual-editor .block-editor-block-list__block[data-type="epyt/youtube"] > div:first-child { padding-top: 16px; padding-bottom: 16px; } */ .wp-block { &[data-type="epyt/youtube"] { > div { &::after { content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; opacity: 0; cursor: pointer; } } &.is-selected > div, > div.components-placeholder { &::after { display: none; } } } }youtube-embed-plus/src/block/style.scss000064400000000074151435171370014221 0ustar00/** * #.# Styles * * CSS for both Frontend+Backend. */ youtube-embed-plus/src/block/block.js000064400000022766151435171370013630 0ustar00/* eslint-disable quotes */ /* eslint-disable space-in-parens */ /* eslint-disable valid-jsdoc */ /** * BLOCK: epyt/youtube * * Registering a basic block with Gutenberg. * Simple block, renders and saves the same content without any interactivity. */ // Import CSS. import "./style.scss"; import "./editor.scss"; const { __ } = wp.i18n; // Import __() from wp.i18n const { registerBlockType } = wp.blocks; // Import registerBlockType() from wp.blocks const { Component, Fragment } = wp.element; const { Button, Modal } = wp.components; const { serverSideRender: ServerSideRender } = wp; //const { withState } = wp.compose; import debounce from "lodash/debounce"; /** * Register: aa Gutenberg Block. * * Registers a new block provided a unique name and an object defining its * behavior. Once registered, the block is made editor as an option to any * editor interface where blocks are implemented. * * @link https://wordpress.org/gutenberg/handbook/block-api/ * @param {string} name Block name. * @param {Object} settings Block settings. * @return {?WPBlock} The block, if it has been successfully * registered; otherwise `undefined`. */ registerBlockType("epyt/youtube", { // Block name. Block names must be string that contains a namespace prefix. Example: my-plugin/my-custom-block. title: __("YouTube Wizard"), // Block title. // icon: ( YouTube Wizard Icon ), category: "embed", // Block category — Group blocks together based on common traits E.g. common, formatting, layout widgets, embed. keywords: [__("gallery"), __("live"), __("video")], // playlist description: __('Embed a video, playlist, channel, gallery, or live stream.'), attributes: { shortcode: { type: "string", default: "" } }, /** * The edit function describes the structure of your block in the context of the editor. * This represents what the editor will render when the block is used. * * The "edit" property must be a valid function. * * @link https://wordpress.org/gutenberg/handbook/block-api/block-edit-save/ */ edit: class extends Component { state = { show: false }; constructor(props) { super(...arguments); this.props = props; //this.onMessage = this.onMessage.bind(this); } componentDidMount() { window.addEventListener("message", this.onMessage); this.gbPreviewSetup("componentDidMount"); } componentDidUpdate() { this.gbPreviewSetup("componentDidUpdate"); } componentWillUnmount() { window.removeEventListener("message", this.onMessage); } showModal = () => { this.setState({ show: true }); }; hideModal = () => { this.setState({ show: false }); }; onMessage = e => { try { if ( e.data.indexOf("youtubeembedplus") === 0 && e.data.indexOf(this.props.clientId) > 0 ) { let embedcode = ""; embedcode = e.data.split("|")[1]; // if (embedcode.indexOf("[") !== 0) // { // embedcode = "

" + embedcode + "

"; // } this.props.setAttributes({ shortcode: embedcode.toString() }); this.hideModal(); // close modal this.gbPreviewSetup("onMessage"); } } catch (err) { } }; gbPreviewSetup = debounce(myContext => { setTimeout(() => { window._EPYTA_.gbPreviewSetup(); }, 1500); }, 50); render() { if (this.props.attributes.shortcode) { const ssr = ( ); return ssr; } return (
YouTube Wizard Icon YouTube Wizard
Click the button below to easily embed a video, playlist, channel, gallery, or live stream.
{this.state.show ? (
q = $search; $search_options->pageToken = null; ?>

title)) { echo 'Playlist: ' . sanitize_text_field($odata->title); } ?>

Insert as Playlist   Insert as Gallery   Customize (PRO)

Or Copy Code:

Playlist Layout: [embedyt] [/embedyt]

Gallery Layout: [embedyt] [/embedyt]

snippet->channelId); } } else { // channel id $chanmatch = array(); preg_match('@/channel/(.+)@', $search, $chanmatch); if (!empty($chanmatch)) { $thechannel = self::get_channel_snippet($chanmatch[1]); } } if ($thechannel) { $theplaylistid = $thechannel->contentDetails->relatedPlaylists->uploads; $rel = 'https://www.youtube.com/embed?listType=playlist&list=' . (esc_attr($theplaylistid)); ?>

snippet->title); ?>

Insert as Playlist   Insert as Gallery   Customize (PRO)

Or Copy Code:

Playlist Layout: [embedyt] [/embedyt]

Gallery Layout: [embedyt] [/embedyt]

snippet->channelId; } } else { // channel id $chanmatch = array(); preg_match('@/channel/(.+)@', $search, $chanmatch); if (!empty($chanmatch)) { $thechannelid = $chanmatch[1]; } } if (!empty($thechannelid)) { $rel = 'https://www.youtube.com/embed/live_stream?channel=' . (esc_attr($thechannelid)); $final_title = esc_url('https://www.youtube.com/channel/' . $thechannelid); $final_title_prefix = 'Live stream from channel'; $doing_live = true; ?>

Insert Into Editor   Customize (PRO)

  Or Copy Code: [embedyt] https://www.youtube.com/embed/live_stream?channel=[/embedyt]

id; $final_title = sanitize_text_field($live_attempt->snippet->title); $final_title_prefix = 'Live Stream'; } $rel = 'https://www.youtube.com/watch?v=' . (esc_attr($theytid)) . '&live=1'; $doing_live = true; ?>

snippet->title); ?>

Insert Into Editor   Customize (PRO)

Or Copy Code:

[embedyt] [/embedyt]

Is your live stream not working? Read more here: https://support.google.com/youtube/answer/2474026?hl=en', 'text_domain'); ?>

Check my general YouTube embedding instructions and settings.

Single video directions

https://www.youtube.com/watch?v=YVvn8dpSAt0 or https://www.youtube.com/shorts/J38Yq85ZoyY)', 'text_domain'); ?>

' . $step1_video_errors . '

' : ''; ?>

Note: You can also search YouTube videos by title in the text box above (example: TED talks). However, searching will use a significant amount of your YouTube API quota.

Embed a playlist.

Playlist directions

  1. Go to the page for the playlist that lists all of its videos (Example »).
  2. You may then click on the video that you want the playlist to start with (this step only applies to self-contained playlists. You cannot pick a starter for gallery layout directions).
  3. Copy the URL in your browser and paste it in the textbox below. You'll notice that a playlist URL contains the playlist ID (e.g. "PL...")
  4. Click "Get Playlist" to continue.
  1. Go to the page for the playlist that lists all of its videos (Example »).
  2. Copy the URL in your browser and paste it in the textbox below. You'll notice that a playlist URL contains the playlist ID (e.g. "PL...")
  3. Click "Get Playlist" to continue.
' . $step1_playlist_errors . '

' : ''; ?>

Embed a channel.

Channel directions

Example: https://www.youtube.com/channel/UCnM5iMGiKsZg-iOlIO2ZkdQ

Note: the following format will not work: https://www.youtube.com/c/customchannelname If you cannot locate the proper channel ID format above, then try the other method below.

', 'text_domain'); ?>

Or, simply enter a link to any single video that belongs to the user's channel, and the plugin will find the channel for you.
Example: https://www.youtube.com/watch?v=YVvn8dpSAt0

' . $step1_channel_errors . '

' : ''; ?>

Embed a live stream or premiere video.

Live stream or premiere directions

This will embed a specific live stream or premiere video.

  1. Paste in the direct URL of the live stream or premiere below and click Submit.
    Example: https://www.youtube.com/watch?v=5qap5aO4i9A
  2. On the next screen, customize or insert your video.
' . $step1_live_errors . '

' : ''; ?>

Unfortunately, Google has recently removed their YouTube API feature that used to support automatic channel-based live streams. It appears they won't change things back. However, you do have a couple of choices:

  1. Use "Direct link" live streams, as explained in the other tab. The trade-off is that you will have to manually post and take down your future live streams every time they start and when they end, respectively.
  2. Or upgrade to Pro, which has a solution that brings back all the "set it and forget it" features of channel-based embeds. We spent a significant amount of time developing a stable, long-term solution around YouTube's limitations, so we are releasing this effort exclusively to our Pro customers.
' . $step1_livechannel_errors . '

' : ''; ?>

Earn money embedding videos.

Check my performance, blocked countries, deleted videos, etc. (PRO)

0) { return true; } return false; } public static function get_live_snippet($channel) { $apiEndpoint = 'https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&maxResults=1&type=video&eventType=live&safeSearch=none&videoEmbeddable=true&key=' . self::$alloptions[self::$opt_apikey] . '&channelId=' . urlencode($channel); $apiResult = wp_remote_get($apiEndpoint, array('timeout' => self::$curltimeout, 'headers' => array('referer' => site_url()))); if (is_wp_error($apiResult)) { return false; } $jsonResult = json_decode($apiResult['body']); if (isset($jsonResult->error)) { return false; } if (isset($jsonResult->items) && $jsonResult->items != null && is_array($jsonResult->items) && count($jsonResult->items)) { return $jsonResult->items[0]; } return false; } public static function get_video_snippet($vid) { $apiEndpoint = 'https://www.googleapis.com/youtube/v3/videos?part=snippet&maxResults=1&key=' . self::$alloptions[self::$opt_apikey] . '&id=' . urlencode($vid); $apiResult = wp_remote_get($apiEndpoint, array('timeout' => self::$curltimeout, 'headers' => array('referer' => site_url()))); if (is_wp_error($apiResult)) { return false; } $jsonResult = json_decode($apiResult['body']); if (isset($jsonResult->error)) { return false; } if (isset($jsonResult->items) && $jsonResult->items != null && is_array($jsonResult->items) && count($jsonResult->items)) { return $jsonResult->items[0]; } return false; } public static function get_channel_snippet($channid) { $apiEndpoint = 'https://www.googleapis.com/youtube/v3/channels?part=contentDetails,snippet&key=' . self::$alloptions[self::$opt_apikey] . '&id=' . urlencode($channid); $apiResult = wp_remote_get($apiEndpoint, array('timeout' => self::$curltimeout, 'headers' => array('referer' => site_url()))); if (is_wp_error($apiResult)) { return false; } $jsonResult = json_decode($apiResult['body']); if (isset($jsonResult->error)) { return false; } if (isset($jsonResult->items) && $jsonResult->items != null && is_array($jsonResult->items) && count($jsonResult->items)) { return $jsonResult->items[0]; } return false; } public static function clean_api_error($raw_message) { return htmlspecialchars(strip_tags(preg_replace('@&key=[^& ]+@i', '&key=*******', $raw_message)), ENT_QUOTES, 'UTF-8'); } public static function clean_api_error_html($raw_message, $add_boilerplate) { $clean_html = '
Sorry, there was a YouTube error.
'; if (current_user_can('manage_options')) { $clean_html = '
Sorry, there was a YouTube API error: ' . self::clean_api_error($raw_message) . '' . ( $add_boilerplate ? self::$boilerplate_api_error_message : '' ) . '
'; } return $clean_html; } public static function get_search_page($options) { $gallobj = new stdClass(); $pageSize = 30; if (!self::has_api_key()) { $gallobj->html = '
' . str_replace('###', 'search', self::$get_api_key_msg) . '
'; return $gallobj; } $apiEndpoint = 'https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=' . $pageSize . '&type=video&safeSearch=none&videoEmbeddable=true&key=' . self::$alloptions[self::$opt_apikey] . '&q=' . urlencode($options->q); if (!empty($options->pageToken)) { $apiEndpoint .= '&pageToken=' . $options->pageToken; } $code = ''; $apiResult = wp_remote_get($apiEndpoint, array('timeout' => self::$curltimeout, 'headers' => array('referer' => site_url()))); if (is_wp_error($apiResult)) { $gallobj->html = self::clean_api_error_html($apiResult->get_error_message(), true); return $gallobj; } $jsonResult = json_decode($apiResult['body']); if (isset($jsonResult->error)) { if (isset($jsonResult->error->message)) { $gallobj->html = self::clean_api_error_html($jsonResult->error->message, true); return $gallobj; } $gallobj->html = '
Sorry, there may be an issue with your YouTube API key. ' . self::$boilerplate_api_error_message . '
'; return $gallobj; } $totalResults = $jsonResult->pageInfo->totalResults; $nextPageToken = ''; $prevPageToken = ''; if (isset($jsonResult->nextPageToken)) { $nextPageToken = $jsonResult->nextPageToken; } if (isset($jsonResult->prevPageToken)) { $prevPageToken = $jsonResult->prevPageToken; } $cnt = 0; $code .= '
'; if (isset($jsonResult->items) && $jsonResult->items != null && is_array($jsonResult->items)) { foreach ($jsonResult->items as $item) { $thumb = new stdClass(); $thumb->id = isset($item->snippet->resourceId->videoId) ? $item->snippet->resourceId->videoId : null; $thumb->id = $thumb->id ? $thumb->id : (isset($item->id->videoId) ? $item->id->videoId : null); if ($thumb->id) { $thumb->title = $item->snippet->title; if (isset($item->snippet->thumbnails->high->url)) { $thumb->img = $item->snippet->thumbnails->high->url; $thumb->quality = 'high'; } elseif (isset($item->snippet->thumbnails->default->url)) { $thumb->img = $item->snippet->thumbnails->default->url; $thumb->quality = 'default'; } elseif (isset($item->snippet->thumbnails->medium->url)) { $thumb->img = $item->snippet->thumbnails->medium->url; $thumb->quality = 'medium'; } else { $thumb->img = plugins_url('/images/deleted-video-thumb.png', __FILE__); $thumb->quality = 'medium'; } $code .= self::get_search_result_html($thumb, $options); $cnt++; $code .= '
'; } } } $code .= '
'; $totalPages = ceil($totalResults / $pageSize); $pagination = '
'; $txtprev = self::$alloptions[self::$opt_gallery_customarrows] ? self::$alloptions[self::$opt_gallery_customprev] : _('Prev'); $pagination .= '
«
' . $txtprev . '
'; $pagination .= '
'; $pagination .= '
1
/
' . $totalPages . '
'; $pagination .= '
'; $txtnext = self::$alloptions[self::$opt_gallery_customarrows] ? self::$alloptions[self::$opt_gallery_customnext] : _('Next'); $pagination .= '
' . $txtnext . '
»
'; $pagination .= '
loading
'; $pagination .= '
'; $code = $pagination . $code . $pagination; $gallobj->html = $code; return $gallobj; } public static function get_search_result_html($thumb, $options) { $get_pro_link = self::$epbase . '/dashboard/pro-easy-video-analytics.aspx?ref=searchresult'; $escId = esc_attr($thumb->id); $code = ''; $code .= '
' . sanitize_text_field($thumb->title) . '

Customize (PRO)   Insert Into Editor

  Or Copy Code: [embedyt] https://www.youtube.com/watch?v=' . $escId . '[/embedyt]
'; return $code; } public static function user_in_roles_any($user, $roles) { foreach ($user->roles as $idx => $r) { if (in_array($r, $roles)) { return true; } } return false; } public static function is_restrict_wizard() { $curr_user = wp_get_current_user(); if ( $curr_user->ID // logged in && isset(self::$alloptions[self::$opt_restrict_wizard]) && self::$alloptions[self::$opt_restrict_wizard] == 1 // restricting && is_array(self::$alloptions[self::$opt_restrict_wizard_roles]) && !self::user_in_roles_any($curr_user, self::$alloptions[self::$opt_restrict_wizard_roles]) ) { return true; } return false; } public static function media_button_wizard() { if (self::is_restrict_wizard()) { return; } add_thickbox(); $wizhref = admin_url('admin.php?page=youtube-ep-wizard') . '&random=' . rand(1, 1000) . '&TB_iframe=true&width=950&height=800'; ?> YouTube Video Ad ' . $_SERVER['QUERY_STRING'] .'
'; if ($pagenow == 'plugins.php' || strpos($_SERVER['QUERY_STRING'], 'youtube-my-preferences') !== false || strpos($_SERVER['QUERY_STRING'], 'embedplus-video-analytics-dashboard') !== false || strpos($_SERVER['QUERY_STRING'], 'youtube-ep-analytics-dashboard') !== false || strpos($_SERVER['QUERY_STRING'], 'embedplus-official-options') !== false) { ?>

×'; } ?> Seems like you have two different YouTube plugins by the EmbedPlus Team installed: YouTube and Advanced YouTube Embed. We strongly suggest keeping only the one you prefer, so that they don't conflict with each other while trying to create your embeds.

options . " set autoload = 'no' where option_name like '" . self::$opt_alloptions . "\_backup\_%'"; $wpdb->query($sql); } // backup settings for migration if (isset($arroptions[self::$opt_pro]) && strlen(trim($arroptions[self::$opt_pro])) > 10) { add_option(self::$opt_alloptions . '_migrate', $arroptions); } //vanilla defaults $_center = 0; $_glance = 0; $_autoplay = 0; $_cc_load_policy = 0; $_cc_lang_pref = ''; $_iv_load_policy = 1; $_loop = 0; $_modestbranding = 0; $_rel = 1; $_fs = 1; $_theme = 'dark'; $_color = 'red'; $_autohide = 2; $_pro = ''; $_nocookie = 0; $_gb_compat = 1; $_facade_mode = 0; $_facade_autoplay = 1; $_gdpr_consent = 0; $_gdpr_consent_message = self::$dft_gdpr_consent_message; $_gdpr_consent_button = 'Accept YouTube Content'; $_playlistorder = 0; $_acctitle = 0; $_migrate = 0; $_migrate_youtube = 0; $_migrate_embedplusvideo = 0; $_controls = 1; $_oldspacing = 1; $_frontend_only = 1; $_responsive = 0; $_responsive_all = 1; $_widgetfit = 1; $_evselector_light = 0; $_stop_mobile_buffer = 1; $_restrict_wizard = 0; $_restrict_wizard_roles = self::$dft_roles; $_ajax_compat = 0; $_maxres_facade = 'eager'; $_ytapi_load = 'light'; $_defaultdims = 1; $_defaultwidth = isset($GLOBALS['content_width']) && is_numeric($GLOBALS['content_width']) ? intval($GLOBALS['content_width']) : 800; $_defaultheight = intval($_defaultwidth * 9.0 / 16.0); $_playsinline = 0; $_origin = 0; $_pause_others = 0; $_defaultvol = 0; $_vol = ''; $_apikey = ''; $_hl = ''; $_dohl = 0; $_gallery_columns = 3; $_gallery_collapse_grid = 0; $_gallery_collapse_grid_breaks = self::$dft_bpts; $_gallery_scrolloffset = 20; $_gallery_hideprivate = 1; $_gallery_showtitle = 1; $_gallery_showpaging = 1; $_gallery_autonext = 0; $_gallery_thumbplay = 1; $_gallery_channelsub = 0; $_gallery_channelsublink = ''; $_gallery_channelsubtext = 'Subscribe to my channel'; $_gallery_customarrows = 0; $_gallery_customprev = 'Prev'; $_gallery_customnext = 'Next'; $_gallery_pagesize = 15; $_not_live_content = ''; $_not_live_on = 0; $_not_live_on_channel = 0; $_debugmode = 0; $_uninstall_data = 0; $_admin_off_scripts = 0; $_defer_js = 0; $_defer_jquery = 0; $_ajax_save = 1; $_show_pointer = 1; $_onboarded = 0; $_old_script_method = 0; $_vi_active = 0; $_vi_hide_monetize_tab = 0; $_vi_endpoints = ''; $_vi_token = ''; $_vi_last_login = self::$vi_default_date; $_vi_last_category_update = self::$vi_default_date; $_vi_adstxt = ''; $_vi_js_settings = self::$vi_dft_js_settings; $_vi_js_script = ''; $_vi_js_posttypes = array(); $_vi_js_position = 'top'; $_vi_show_gdpr_authorization = 1; $_vi_show_privacy_button = 0; //update vanilla to previous settings if exists if ($arroptions !== false) { $_center = self::tryget($arroptions, self::$opt_center, 0); $_glance = self::tryget($arroptions, self::$opt_glance, $_glance); $_autoplay = self::tryget($arroptions, self::$opt_autoplay, 0); $_debugmode = self::tryget($arroptions, self::$opt_debugmode, 0); $_uninstall_data = self::tryget($arroptions, self::$opt_uninstall_data, 0); $_old_script_method = self::tryget($arroptions, self::$opt_old_script_method, 0); $_cc_load_policy = self::tryget($arroptions, self::$opt_cc_load_policy, 0); $_cc_lang_pref = self::tryget($arroptions, self::$opt_cc_lang_pref, $_cc_lang_pref); $_iv_load_policy = self::tryget($arroptions, self::$opt_iv_load_policy, 1); $_loop = self::tryget($arroptions, self::$opt_loop, 0); $_modestbranding = self::tryget($arroptions, self::$opt_modestbranding, 0); $_rel = self::tryget($arroptions, self::$opt_rel, 1); $_fs = self::tryget($arroptions, self::$opt_fs, 1); $_playsinline = self::tryget($arroptions, self::$opt_playsinline, 0); $_origin = self::tryget($arroptions, self::$opt_origin, 1); $_hl = self::tryget($arroptions, self::$opt_hl, ''); $_dohl = self::tryget($arroptions, self::$opt_dohl, 0); $_theme = self::tryget($arroptions, self::$opt_theme, 'dark'); $_color = self::tryget($arroptions, self::$opt_color, 'red'); $_autohide = self::tryget($arroptions, self::$opt_autohide, 2); $_pro = self::tryget($arroptions, self::$opt_pro, ''); $_nocookie = self::tryget($arroptions, self::$opt_nocookie, 0); $_gb_compat = self::tryget($arroptions, self::$opt_gb_compat, $_gb_compat); $_facade_mode = self::tryget($arroptions, self::$opt_facade_mode, $_facade_mode); $_facade_autoplay = self::tryget($arroptions, self::$opt_facade_autoplay, $_facade_autoplay); $_gdpr_consent = self::tryget($arroptions, self::$opt_gdpr_consent, $_gdpr_consent); $_gdpr_consent_message = self::tryget($arroptions, self::$opt_gdpr_consent_message, $_gdpr_consent_message); $_gdpr_consent_button = self::tryget($arroptions, self::$opt_gdpr_consent_button, $_gdpr_consent_button); $_playlistorder = self::tryget($arroptions, self::$opt_playlistorder, 0); $_acctitle = self::tryget($arroptions, self::$opt_acctitle, 0); $_migrate = self::tryget($arroptions, self::$opt_migrate, 0); $_migrate_youtube = self::tryget($arroptions, self::$opt_migrate_youtube, 0); $_migrate_embedplusvideo = self::tryget($arroptions, self::$opt_migrate_embedplusvideo, 0); $_controls = self::tryget($arroptions, self::$opt_controls, 1); $_controls = $_controls == 2 ? 1 : $_controls; $_oldspacing = self::tryget($arroptions, self::$opt_oldspacing, 1); $_frontend_only = self::tryget($arroptions, self::$opt_frontend_only, $_frontend_only); $_responsive = self::tryget($arroptions, self::$opt_responsive, $_responsive); $_responsive_all = self::tryget($arroptions, self::$opt_responsive_all, $_responsive_all); $_widgetfit = self::tryget($arroptions, self::$opt_widgetfit, 1); $_evselector_light = self::tryget($arroptions, self::$opt_evselector_light, 0); $_stop_mobile_buffer = self::tryget($arroptions, self::$opt_stop_mobile_buffer, 1); $_restrict_wizard = self::tryget($arroptions, self::$opt_restrict_wizard, 0); $_restrict_wizard_roles = self::tryget($arroptions, self::$opt_restrict_wizard_roles, self::$dft_roles); $_ajax_compat = self::tryget($arroptions, self::$opt_ajax_compat, 0); $_maxres_facade = self::tryget($arroptions, self::$opt_maxres_facade, $_maxres_facade); $_ytapi_load = self::tryget($arroptions, self::$opt_ytapi_load, $_ytapi_load); $_defaultdims = self::tryget($arroptions, self::$opt_defaultdims, $_defaultdims); $_defaultwidth = self::tryget($arroptions, self::$opt_defaultwidth, $_defaultwidth); $_defaultheight = self::tryget($arroptions, self::$opt_defaultheight, $_defaultheight); $_pause_others = self::tryget($arroptions, self::$opt_pause_others, $_pause_others); $_defaultvol = self::tryget($arroptions, self::$opt_defaultvol, 0); $_vol = self::tryget($arroptions, self::$opt_vol, ''); $_apikey = self::tryget($arroptions, self::$opt_apikey, ''); $_gallery_pagesize = self::tryget($arroptions, self::$opt_gallery_pagesize, 15); $_gallery_columns = self::tryget($arroptions, self::$opt_gallery_columns, 3); $_gallery_collapse_grid = self::tryget($arroptions, self::$opt_gallery_collapse_grid, 0); $_gallery_collapse_grid_breaks = self::tryget($arroptions, self::$opt_gallery_collapse_grid_breaks, self::$dft_bpts); $_gallery_scrolloffset = self::tryget($arroptions, self::$opt_gallery_scrolloffset, 20); $_gallery_hideprivate = self::tryget($arroptions, self::$opt_gallery_hideprivate, $_gallery_hideprivate); $_gallery_showtitle = self::tryget($arroptions, self::$opt_gallery_showtitle, 1); $_gallery_showpaging = self::tryget($arroptions, self::$opt_gallery_showpaging, 1); $_gallery_autonext = self::tryget($arroptions, self::$opt_gallery_autonext, 0); $_gallery_thumbplay = self::tryget($arroptions, self::$opt_gallery_thumbplay, 1); $_gallery_channelsub = self::tryget($arroptions, self::$opt_gallery_channelsub, $_gallery_channelsub); $_gallery_channelsublink = self::tryget($arroptions, self::$opt_gallery_channelsublink, $_gallery_channelsublink); $_gallery_channelsubtext = self::tryget($arroptions, self::$opt_gallery_channelsubtext, $_gallery_channelsubtext); $_gallery_customarrows = self::tryget($arroptions, self::$opt_gallery_customarrows, $_gallery_customarrows); $_gallery_customnext = self::tryget($arroptions, self::$opt_gallery_customnext, $_gallery_customnext); $_gallery_customprev = self::tryget($arroptions, self::$opt_gallery_customprev, $_gallery_customprev); $_not_live_content = self::tryget($arroptions, self::$opt_not_live_content, $_not_live_content); $_not_live_content = empty($_not_live_content) ? $_not_live_content : trim($_not_live_content); $_not_live_on = self::tryget($arroptions, self::$opt_not_live_on, empty($_not_live_content) ? 0 : $_not_live_on); $_not_live_on_channel = self::tryget($arroptions, self::$opt_not_live_on_channel, $_not_live_on_channel); $_admin_off_scripts = self::tryget($arroptions, self::$opt_admin_off_scripts, $_admin_off_scripts); $_defer_js = self::tryget($arroptions, self::$opt_defer_js, $_defer_js); $_defer_jquery = self::tryget($arroptions, self::$opt_defer_jquery, $_defer_jquery); $_ajax_save = self::tryget($arroptions, self::$opt_ajax_save, $_ajax_save); $_show_pointer = self::tryget($arroptions, self::$opt_show_pointer, $_show_pointer); $_onboarded = 0; // self::tryget($arroptions, self::$opt_onboarded, $_onboarded); $_vi_active = self::tryget($arroptions, self::$opt_vi_active, $_vi_active); $_vi_hide_monetize_tab = self::tryget($arroptions, self::$opt_vi_hide_monetize_tab, $_vi_hide_monetize_tab); $_vi_endpoints = self::tryget($arroptions, self::$opt_vi_endpoints, $_vi_endpoints); $_vi_token = self::tryget($arroptions, self::$opt_vi_token, $_vi_token); $_vi_last_login = self::tryget($arroptions, self::$opt_vi_last_login, $_vi_last_login); $_vi_last_category_update = self::tryget($arroptions, self::$opt_vi_last_category_update, $_vi_last_category_update); $_vi_adstxt = self::tryget($arroptions, self::$opt_vi_adstxt, $_vi_adstxt); $_vi_js_settings = self::tryget($arroptions, self::$opt_vi_js_settings, self::$vi_dft_js_settings); $_vi_js_script = self::tryget($arroptions, self::$opt_vi_js_script, $_vi_js_script); $_vi_js_posttypes = self::tryget($arroptions, self::$opt_vi_js_posttypes, $_vi_js_posttypes); $_vi_js_position = self::tryget($arroptions, self::$opt_vi_js_position, $_vi_js_position); $_vi_show_gdpr_authorization = self::tryget($arroptions, self::$opt_vi_show_gdpr_authorization, $_vi_show_gdpr_authorization); $_vi_show_privacy_button = self::tryget($arroptions, self::$opt_vi_show_privacy_button, $_vi_show_privacy_button); } else { $_oldspacing = 0; } $all = array( self::$opt_version => self::$version, self::$opt_center => $_center, self::$opt_glance => $_glance, self::$opt_autoplay => $_autoplay, self::$opt_cc_load_policy => $_cc_load_policy, self::$opt_cc_lang_pref => $_cc_lang_pref, self::$opt_iv_load_policy => $_iv_load_policy, self::$opt_loop => $_loop, self::$opt_modestbranding => $_modestbranding, self::$opt_rel => $_rel, self::$opt_fs => $_fs, self::$opt_playsinline => $_playsinline, self::$opt_origin => $_origin, self::$opt_autohide => $_autohide, self::$opt_hl => $_hl, self::$opt_dohl => $_dohl, self::$opt_theme => $_theme, self::$opt_color => $_color, self::$opt_pro => $_pro, self::$opt_nocookie => $_nocookie, self::$opt_gb_compat => $_gb_compat, self::$opt_facade_mode => $_facade_mode, self::$opt_facade_autoplay => $_facade_autoplay, self::$opt_gdpr_consent => $_gdpr_consent, self::$opt_gdpr_consent_message => $_gdpr_consent_message, self::$opt_gdpr_consent_button => $_gdpr_consent_button, self::$opt_playlistorder => $_playlistorder, self::$opt_acctitle => $_acctitle, self::$opt_migrate => $_migrate, self::$opt_migrate_youtube => $_migrate_youtube, self::$opt_migrate_embedplusvideo => $_migrate_embedplusvideo, self::$opt_controls => $_controls, self::$opt_oldspacing => $_oldspacing, self::$opt_frontend_only => $_frontend_only, self::$opt_responsive => $_responsive, self::$opt_responsive_all => $_responsive_all, self::$opt_widgetfit => $_widgetfit, self::$opt_evselector_light => $_evselector_light, self::$opt_stop_mobile_buffer => $_stop_mobile_buffer, self::$opt_restrict_wizard => $_restrict_wizard, self::$opt_restrict_wizard_roles => $_restrict_wizard_roles, self::$opt_ajax_compat => $_ajax_compat, self::$opt_maxres_facade => $_maxres_facade, self::$opt_ytapi_load => $_ytapi_load, self::$opt_defaultdims => $_defaultdims, self::$opt_defaultwidth => $_defaultwidth, self::$opt_defaultheight => $_defaultheight, self::$opt_pause_others => $_pause_others, self::$opt_defaultvol => $_defaultvol, self::$opt_vol => $_vol, self::$opt_apikey => $_apikey, self::$opt_gallery_columns => $_gallery_columns, self::$opt_gallery_collapse_grid => $_gallery_collapse_grid, self::$opt_gallery_collapse_grid_breaks => $_gallery_collapse_grid_breaks, self::$opt_gallery_scrolloffset => $_gallery_scrolloffset, self::$opt_gallery_hideprivate => $_gallery_hideprivate, self::$opt_gallery_showtitle => $_gallery_showtitle, self::$opt_gallery_showpaging => $_gallery_showpaging, self::$opt_gallery_autonext => $_gallery_autonext, self::$opt_gallery_thumbplay => $_gallery_thumbplay, self::$opt_gallery_channelsub => $_gallery_channelsub, self::$opt_gallery_channelsublink => $_gallery_channelsublink, self::$opt_gallery_channelsubtext => $_gallery_channelsubtext, self::$opt_gallery_customarrows => $_gallery_customarrows, self::$opt_gallery_customnext => $_gallery_customnext, self::$opt_gallery_customprev => $_gallery_customprev, self::$opt_gallery_pagesize => $_gallery_pagesize, self::$opt_not_live_content => $_not_live_content, self::$opt_not_live_on => $_not_live_on, self::$opt_not_live_on_channel => $_not_live_on_channel, self::$opt_debugmode => $_debugmode, self::$opt_uninstall_data => $_uninstall_data, self::$opt_admin_off_scripts => $_admin_off_scripts, self::$opt_defer_js => $_defer_js, self::$opt_defer_jquery => $_defer_jquery, self::$opt_ajax_save => $_ajax_save, self::$opt_show_pointer => $_show_pointer, self::$opt_onboarded => $_onboarded, self::$opt_old_script_method => $_old_script_method, self::$opt_vi_active => $_vi_active, self::$opt_vi_hide_monetize_tab => $_vi_hide_monetize_tab, self::$opt_vi_endpoints => $_vi_endpoints, self::$opt_vi_token => $_vi_token, self::$opt_vi_last_login => $_vi_last_login, self::$opt_vi_last_category_update => $_vi_last_category_update, self::$opt_vi_adstxt => $_vi_adstxt, self::$opt_vi_js_settings => $_vi_js_settings, self::$opt_vi_js_script => $_vi_js_script, self::$opt_vi_js_posttypes => $_vi_js_posttypes, self::$opt_vi_js_position => $_vi_js_position, self::$opt_vi_show_gdpr_authorization => $_vi_show_gdpr_authorization, self::$opt_vi_show_privacy_button => $_vi_show_privacy_button ); update_option(self::$opt_alloptions, $all); update_option('embed_autourls', 1); self::$alloptions = get_option(self::$opt_alloptions); } public static function tryget($array, $key, $default = null) { return isset($array[$key]) ? $array[$key] : $default; } public static function wp_above_version($ver) { global $wp_version; if (version_compare($wp_version, $ver, '>=')) { return true; } return false; } public static function do_ytprefs() { //add_filter('autoptimize_filter_js_exclude', array(self::class, 'ao_override_jsexclude'), 10, 1); if ( !is_admin() || (self::$alloptions[self::$opt_frontend_only] != 1) //|| (function_exists('wp_doing_ajax') && wp_doing_ajax()) ) { add_filter('the_content', array(self::class, 'apply_prefs_content'), 1); add_filter('widget_text', array(self::class, 'apply_prefs_widget'), 1); //add_filter('bjll/skip_classes', array(self::class, 'bjll_skip_classes'), 10, 2); add_filter('sgo_lazy_load_exclude_classes', array(self::class, 'exclude_lazy_sgo')); add_shortcode('embedyt', array(self::class, 'apply_prefs_shortcode')); if (self::$alloptions[self::$opt_migrate] == 1) { if (self::$alloptions[self::$opt_migrate_youtube] == 1) { add_shortcode('youtube', array(self::class, 'apply_prefs_shortcode_youtube')); add_shortcode('youtube_video', array(self::class, 'apply_prefs_shortcode_youtube')); } if (self::$alloptions[self::$opt_migrate_embedplusvideo] == 1) { add_shortcode('embedplusvideo', array(self::class, 'apply_prefs_shortcode_embedplusvideo')); } } } if (self::$alloptions[self::$opt_defer_js] == 1) { add_filter('script_loader_tag', array(self::class, 'defer_scripts'), 10, 3); } } public static function ao_override_jsexclude($exclude) { if (strpos($exclude, 'ytprefs' . self::$min . '.js') === false) { return $exclude . ',ytprefs' . self::$min . '.js,__ytprefs__'; } return $exclude; } public static function exclude_lazy_sgo($classes) { $classes[] = '__youtube_prefs__'; return $classes; } public static function apply_prefs_shortcode($atts, $content = null) { $content = trim($content); $currfilter = current_filter(); if (preg_match(self::$justurlregex, $content)) { return self::get_html(array($content), strpos($currfilter, 'widget_text') === 0 ? false : true, false); } return ''; } public static function apply_prefs_shortcode_youtube($atts, $content = null) { $content = 'https://www.youtube.com/watch?v=' . trim($content); $currfilter = current_filter(); if (preg_match(self::$justurlregex, $content)) { return self::get_html(array($content), $currfilter == 'widget_text' ? false : true, false); } return ''; } public static function apply_prefs_shortcode_embedplusvideo($atts, $content = null) { $atts = shortcode_atts(array( "height" => self::$defaultheight, "width" => self::$defaultwidth, "vars" => "", "standard" => "", "id" => "ep" . rand(10000, 99999) ), $atts); $epvars = $atts['vars']; $epvars = preg_replace('/\s/', '', $epvars); $epvars = preg_replace('/¬/', '¬', $epvars); $epvars = str_replace('&', '&', $epvars); $epparams = self::keyvalue($epvars, true); if (isset($epparams) && isset($epparams['ytid'])) { $start = isset($epparams['start']) && is_numeric($epparams['start']) ? '&start=' . intval($epparams['start']) : ''; $end = isset($epparams['end']) && is_numeric($epparams['end']) ? '&end=' . intval($epparams['end']) : ''; $end = isset($epparams['stop']) && is_numeric($epparams['stop']) ? '&end=' . intval($epparams['stop']) : ''; $url = 'https://www.youtube.com/watch?v=' . trim($epparams['ytid']) . $start . $end; $currfilter = current_filter(); if (preg_match(self::$justurlregex, $url)) { return self::get_html(array($url), $currfilter == 'widget_text' ? false : true, false); } } return ''; } public static function apply_prefs_content($content) { $content = preg_replace_callback(self::$ytregex, array(self::class, "get_html_content"), $content); return $content; } public static function apply_prefs_widget($content) { $content = preg_replace_callback(self::$ytregex, array(self::class, "get_html_widget"), $content); return $content; } public static function get_html_content($m) { return self::get_html($m, true, true); } public static function get_html_widget($m) { return self::get_html($m, false, true); } public static function get_gallery_page($options) { $gallobj = new stdClass(); $options->pageSize = min(intval($options->pageSize), 50); $options->columns = intval($options->columns) == 0 ? 3 : intval($options->columns); $options->showTitle = intval($options->showTitle); $options->showPaging = intval($options->showPaging); $options->autonext = intval($options->autonext); $options->thumbplay = intval($options->thumbplay); if (empty($options->apiKey)) { $gallobj->html = '
Please enter your YouTube API key to embed galleries.
'; return $gallobj; } $apiEndpoint = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,status&playlistId=' . $options->playlistId . '&maxResults=' . $options->pageSize . '&key=' . $options->apiKey; if ($options->pageToken != null) { $apiEndpoint .= '&pageToken=' . $options->pageToken; } $code = ''; $init_id = null; $apiResult = wp_remote_get($apiEndpoint, array('timeout' => self::$curltimeout, 'headers' => array('referer' => site_url()))); if (is_wp_error($apiResult)) { $gallobj->html = self::clean_api_error_html($apiResult->get_error_message(), true); return $gallobj; } if (self::$alloptions[self::$opt_debugmode] == 1 && current_user_can('manage_options')) { $redactedEndpoint = preg_replace('@&key=[^&]+@i', '&key=PRIVATE', $apiEndpoint); $active_plugins = get_option('active_plugins'); $gallobj->html = '
CLICK this debug text to auto-select all. Then, COPY the selection.' . "\n\n" .
                    'THIS IS DEBUG MODE OUTPUT. UNCHECK THE OPTION IN THE SETTINGS PAGE ONCE YOU ARE DONE DEBUGGING TO PUT THINGS BACK TO NORMAL.' . "\n\n" . $redactedEndpoint . "\n\n" . print_r($apiResult, true) . "\n\nActive Plugins\n\n" . print_r($active_plugins, true) . '
'; return $gallobj; } $jsonResult = json_decode($apiResult['body']); if (isset($jsonResult->error)) { if (isset($jsonResult->error->message)) { $gallobj->html = self::clean_api_error_html($jsonResult->error->message, true); return $gallobj; } $gallobj->html = '
Sorry, there may be an issue with your YouTube API key. ' . self::$boilerplate_api_error_message . '
'; return $gallobj; } $resultsPerPage = $options->pageSize; // $jsonResult->pageInfo->resultsPerPage; $totalResults = $jsonResult->pageInfo->totalResults; $nextPageToken = ''; $prevPageToken = ''; if (isset($jsonResult->nextPageToken)) { $nextPageToken = $jsonResult->nextPageToken; } if (isset($jsonResult->prevPageToken)) { $prevPageToken = $jsonResult->prevPageToken; } $cnt = 0; $colclass = ' epyt-cols-' . $options->columns . ' '; $code .= ''; $totalPages = ceil($totalResults / $resultsPerPage); $pagination = '
'; $txtprev = self::$alloptions[self::$opt_gallery_customarrows] ? self::$alloptions[self::$opt_gallery_customprev] : _('Prev'); $pagination .= '
«
' . $txtprev . '
'; $pagination .= '
'; $pagination .= '
1
/
' . $totalPages . '
'; $pagination .= '
'; $txtnext = self::$alloptions[self::$opt_gallery_customarrows] ? self::$alloptions[self::$opt_gallery_customnext] : _('Next'); $pagination .= '
' . $txtnext . '
»
'; $pagination .= '
loading
'; $pagination .= '
'; // if ($options->showPaging == 0) // { // $pagination = '
'; // } $code = $pagination . $code . $pagination; $gallobj->html = $code; $gallobj->init_id = $init_id; return $gallobj; } public static function compare_vid_date($a, $b) { if ($a->snippet->publishedAt == $b->snippet->publishedAt) { return 0; } return ($a->snippet->publishedAt > $b->snippet->publishedAt) ? -1 : 1; } public static function get_thumbnail_html($thumb, $options) { $escId = esc_attr($thumb->id); $code = ''; $code .= '

If you're using a separate caching plugin and you do not see your changes after saving, you need to reset your cache.

$bpts) { $custom_css .= " @media (min-width:" . $bpts['bp']['min'] . "px) and (max-width: " . $bpts['bp']['max'] . "px) { .epyt-gallery-rowbreak { display: none; } .epyt-gallery-allthumbs[class*=\"epyt-cols\"] .epyt-gallery-thumb { width: " . round(100.0 / intval($bpts['cols']), 3) . "% !important; } }"; } } wp_add_inline_style('__EPYT__style', $custom_css); wp_enqueue_script('__ytprefs__', plugins_url('scripts/ytprefs' . self::$min . '.js', __FILE__), array('jquery'), self::$version); if (self::$alloptions[self::$opt_old_script_method] != 1) { $my_script_vars = array( 'ajaxurl' => admin_url('admin-ajax.php'), 'security' => wp_create_nonce('embedplus-nonce'), 'gallery_scrolloffset' => intval(self::$alloptions[self::$opt_gallery_scrolloffset]), 'eppathtoscripts' => plugins_url('scripts/', __FILE__), 'eppath' => plugins_url('/', __FILE__), 'epresponsiveselector' => self::get_responsiveselector(), 'epdovol' => true, 'version' => self::$alloptions[self::$opt_version], 'evselector' => self::get_evselector(), 'ajax_compat' => self::$alloptions[self::$opt_ajax_compat] == '1' ? true : false, 'maxres_facade' => esc_attr(self::$alloptions[self::$opt_maxres_facade]), 'ytapi_load' => self::$alloptions[self::$opt_ytapi_load], 'pause_others' => self::$alloptions[self::$opt_pause_others] == '1' ? true : false, 'stopMobileBuffer' => self::$alloptions[self::$opt_stop_mobile_buffer] == '1' ? true : false, 'facade_mode' => self::$alloptions[self::$opt_facade_mode] == '1' ? true : false, 'not_live_on_channel' => self::$alloptions[self::$opt_not_live_on_channel] == '1' ? true : false, 'vi_active' => false, // self::$alloptions[self::$opt_vi_active] == '1' ? true : false, 'vi_js_posttypes' => array() // self::$alloptions[self::$opt_vi_js_posttypes] ); wp_localize_script('__ytprefs__', '_EPYT_', $my_script_vars); } if ((bool) self::$alloptions[self::$opt_gdpr_consent]) { wp_enqueue_script('__jquery_cookie__', plugins_url('scripts/jquery.cookie' . self::$min . '.js', __FILE__), array('jquery'), self::$version); } ////////////////////// cloudflare accomodation //add_filter('script_loader_tag', array(self::class, 'set_cfasync'), 10, 3); } } public static function set_cfasync($tag, $handle, $src) { if ('__ytprefs__' !== $handle) { return $tag; } return str_replace(' admin_url('admin-ajax.php'), 'wizhref' => admin_url('admin.php?page=youtube-ep-wizard') . '&random=' . rand(1, 1000) . '&TB_iframe=true&width=950&height=800', 'manage_options' => current_user_can('manage_options'), 'security' => wp_create_nonce('embedplus-nonce'), 'onboarded' => self::$alloptions[self::$opt_onboarded], 'vi_logged_in' => self::vi_logged_in(), 'epbase' => self::$epbase, 'admin_url' => admin_url(), 'vi_js_settings' => self::$alloptions[self::$opt_vi_js_settings], 'admin_url_ytprefs' => admin_url('admin.php?page=youtube-my-preferences'), 'admin_url_vi' => admin_url('admin.php?page=youtube-ep-vi') //'epblogwidth' => self::get_blogwidth(), //'epprokey' => self::$alloptions[self::$opt_pro], //'epbasesite' => self::$epbase, //'epversion' => self::$version, //'myytdefaults' => http_build_query(self::$alloptions), //'eppluginadminurl' => admin_url('admin.php?page=youtube-my-preferences') ); wp_localize_script('__ytprefs_admin__', '_EPYTA_', $admin_script_vars); if (function_exists('add_thickbox')) { add_thickbox(); } if ((get_bloginfo('version') >= '3.3') && self::custom_admin_pointers_check()) { add_action('admin_print_footer_scripts', array(self::class, 'custom_admin_pointers_footer')); wp_enqueue_script('wp-pointer'); wp_enqueue_style('wp-pointer'); } if (self::$alloptions['glance'] == 1) { add_action('admin_print_footer_scripts', array(self::class, 'glance_script')); } if ($hook == self::$wizard_hook) { wp_enqueue_style('__ytprefs_admin__wizard_ui', plugins_url('styles/jquery-ui' . self::$min . '.css', __FILE__), array(), self::$version); wp_enqueue_style('__ytprefs_admin__wizard', plugins_url('styles/ytprefs-wizard' . self::$min . '.css', __FILE__), array(), self::$version); wp_enqueue_script('__ytprefs_admin__wizard_script', plugins_url('scripts/ytprefs-wizard' . self::$min . '.js', __FILE__), array('jquery', 'jquery-ui-accordion', 'jquery-ui-tabs'), self::$version); } if ($hook == self::$onboarding_hook) { wp_enqueue_style('__ytprefs_admin__onboarding_animate', plugins_url('scripts/embdyn' . self::$min . '.css', __FILE__), array(), self::$version); wp_enqueue_style('__ytprefs_admin__onboarding_ui', plugins_url('styles/jquery-ui' . self::$min . '.css', __FILE__), array(), self::$version); wp_enqueue_style('__ytprefs_admin__onboarding', plugins_url('styles/ytprefs-onboarding' . self::$min . '.css', __FILE__), array(), self::$version); } } public static function get_blogwidth() { $blogwidth = null; try { $embed_size_w = intval(get_option('embed_size_w')); global $content_width; if (empty($content_width)) { $content_width = $GLOBALS['content_width']; } $blogwidth = $embed_size_w ? $embed_size_w : ($content_width ? $content_width : 450); } catch (Exception $ex) { } $blogwidth = preg_replace('/\D/', '', $blogwidth); //may have px return $blogwidth; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// private static function ajax_referer() { return check_ajax_referer('embedplus-nonce', 'security', false); } public static function base_url() { $parsed = parse_url(site_url()); return $parsed['scheme'] . '://' . $parsed['host']; } public static function on_deactivation() { self::vi_cron_stop(); } private static function update_option_set($new_options) { $all = get_option(self::$opt_alloptions); $all = $new_options + $all; update_option(self::$opt_alloptions, $all); self::$alloptions = get_option(self::$opt_alloptions); } private static function vi_remote_get($endpoint, $options = array()) { $params = $options + array( 'headers' => array('Authorization' => self::$alloptions[self::$opt_vi_token]), 'timeout' => self::$curltimeout ); return wp_remote_get($endpoint, $params); } private static function vi_remote_post($endpoint, $options = array()) { $params = $options + array( 'headers' => array('Content-Type' => 'application/json', 'Authorization' => self::$alloptions[self::$opt_vi_token]), 'timeout' => self::$curltimeout ); // if (self::$alloptions[self::$opt_debugmode]) // { // echo $endpoint . '
' . self::vi_debug_json($params); // } return wp_remote_post($endpoint, $params); } private static function vi_remote_post_anon($endpoint, $options = array()) { $params = $options + array( 'headers' => array('Content-Type' => 'application/json'), 'timeout' => self::$curltimeout ); return wp_remote_post($endpoint, $params); } private static function vi_cache_endpoints_valid(&$apiResult) { $messages = array(); if (is_wp_error($apiResult)) { $messages[] = $apiResult->get_error_message(); } else { $jsonResult = json_decode($apiResult['body']); if (!empty($jsonResult->error)) { $messages[] = $jsonResult->error; } if (!filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL)) { $messages[] = "Please enter a valid email address."; } if (isset($jsonResult->status) && strcasecmp($jsonResult->status, 'ok') == 0 && isset($jsonResult->data) && is_object($jsonResult->data)) { $apiResult = $jsonResult; } } if (empty($messages)) { return true; } return $messages; } public static function vi_cache_endpoints() { $result = array(); $apiResult = wp_remote_get(EPYTVI_ENDPOINTS_URL, array('timeout' => self::$curltimeout)); $valid = self::vi_cache_endpoints_valid($apiResult); if ($valid === true) { $new_options = array( self::$opt_vi_endpoints => $apiResult->data ); self::update_option_set($new_options); $post_email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); if (!empty($post_email)) { $result['type'] = 'success'; $result['data'] = $apiResult->data; $result['signupURLParams'] = $apiResult->data->signupURL . '?aid=WP_embedplus&email=' . filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL) . '&domain=' . site_url(); } } else { $result['type'] = 'error'; $result['message'] = implode('
', $valid); } return $result; } public static function vi_cache_endpoints_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { $result = self::vi_cache_endpoints(); } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a problem submitting the data.'; } $result['message'] = wp_kses_post($result['message']); echo json_encode($result); die(); } public static function vi_notice_login_reminder() { if (filter_has_var(INPUT_COOKIE, 'vi_signup_attempt')) { $screen = get_current_screen(); $date_string = filter_input(INPUT_COOKIE, 'vi_signup_attempt', FILTER_SANITIZE_STRING); $date_attempt = strtotime($date_string); $date_wait = strtotime($date_string . ' + 7 days'); if (time() > $date_wait && !self::vi_logged_in() && in_array($screen->id, array('toplevel_page_youtube-my-preferences')) ) { ?> get_error_message(); } else { $jsonResult = json_decode($apiResult['body']); if (!empty($jsonResult->error)) { $messages[] = $jsonResult->error->message . ": " . (is_string($jsonResult->error->description) ? $jsonResult->error->description : json_encode($jsonResult->error->description)); } if (isset($jsonResult->status) && strcasecmp($jsonResult->status, 'ok') == 0 && isset($jsonResult->data) && strlen($jsonResult->data) > 0) { $apiResult = $jsonResult; } } if (empty($messages)) { return true; } return $messages; } private static function vi_adstxt_api_valid(&$apiResult) { $messages = array(); if (is_wp_error($apiResult)) { $messages[] = $apiResult->get_error_message(); } else { $jsonResult = json_decode($apiResult['body']); if (!empty($jsonResult->error)) { $messages[] = implode(': ', array($jsonResult->error->message, $jsonResult->error->description)); } if (isset($jsonResult->status) && strcasecmp($jsonResult->status, 'ok') == 0 && isset($jsonResult->data) && strlen($jsonResult->data) > 0) { $apiResult = $jsonResult; } } if (empty($messages)) { return true; } return $messages; } public static function vi_login() { $result = array(); $default = array( 'email' => '', 'password' => '' ); $input = shortcode_atts($default, stripslashes_deep($_POST)); $valid = self::vi_login_valid($input); if ($valid === true) { self::vi_cache_endpoints(); $loginAPI = self::$alloptions[self::$opt_vi_endpoints]->loginAPI . '?affiliateId=WP_embedplus'; $inputAuth = array( 'email' => $input['email'], 'password' => $input['password'] ); $apiResult = self::vi_remote_post_anon($loginAPI, array( 'body' => json_encode($inputAuth) )); $valid = self::vi_login_api_valid($apiResult); if ($valid === true) { $result['type'] = 'success'; $new_options = array( self::$opt_vi_token => $apiResult->data, self::$opt_vi_last_login => date('Y-m-d H:i:s') ); self::update_option_set($new_options); } else { $result['type'] = 'error'; $result['message'] = implode('
', $valid); } } else { $result['type'] = 'error'; $result['message'] = implode('
', $valid); } if ($result['type'] === 'success') { self::vi_db_init_schema(); } return $result; } public static function vi_login_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { $result = self::vi_login(); } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a problem submitting the data.'; } $result['message'] = wp_kses_post($result['message']); echo json_encode($result); die(); } public static function vi_logout_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { self::vi_cron_stop(); $new_options = array( self::$opt_vi_token => '' ); self::update_option_set($new_options); $result['type'] = 'success'; $result['url'] = admin_url('admin.php?page=youtube-my-preferences'); } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a problem submitting the data.'; } echo json_encode($result); die(); } public static function vi_toggle_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { $new_options = array( self::$opt_vi_active => self::$alloptions[self::$opt_vi_active] ? 0 : 1 ); self::update_option_set($new_options); $result['type'] = 'success'; $result['button_text'] = self::$alloptions[self::$opt_vi_active] ? 'On' : 'Off'; } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a problem submitting the data.'; } echo json_encode($result); die(); } public static function vi_hide_feature_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { $new_options = array( self::$opt_vi_hide_monetize_tab => 1 ); self::update_option_set($new_options); $result['type'] = 'success'; $result['url'] = admin_url('admin.php?page=youtube-my-preferences'); } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a network error. Please try again, or turn off this feature using the "Hide Monetize Feature" checkbox on the "Defaults" tab of the YouTube settings. If the issue persists, please contact ext@embedplus.com'; } echo json_encode($result); die(); } public static function vi_cover_prompt_yes() { return filter_input(INPUT_COOKIE, 'vi_cover_prompt_yes', FILTER_SANITIZE_NUMBER_INT) == 1; } public static function vi_cron_stop() { $timestamp = wp_next_scheduled('ytvi_cron_cache_js_hook'); if ($timestamp !== false) { wp_unschedule_event($timestamp, 'ytvi_cron_cache_js_hook'); } } private static function vi_reports_valid(&$apiResult) { $messages = array(); if (is_wp_error($apiResult)) { $messages[] = $apiResult->get_error_message(); } else { $jsonResult = json_decode($apiResult['body']); //$messages[] = $apiResult['body']; // COMMENT if (!empty($jsonResult->error)) { $messages[] = $jsonResult->error->message . ": " . $jsonResult->error->description; } if (isset($jsonResult->status) && strcasecmp($jsonResult->status, 'ok') == 0 && isset($jsonResult->data)) { $apiResult = $jsonResult; } } if (empty($messages)) { return true; } return $messages; } public static function vi_reports_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { $revenueResult = self::vi_remote_get(self::$alloptions[self::$opt_vi_endpoints]->revenueAPI); $revenue_valid = self::vi_reports_valid($revenueResult); if ($revenue_valid === true) { $result['data'] = $revenueResult->data; $result['type'] = 'success'; } else { $result['type'] = 'error'; $result['message'] = wp_kses_post(implode('
', $revenue_valid)); } } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a problem retrieving the data.'; } echo json_encode($result); die(); } private static function vi_cache_user_adstxt() { $adsTxtAPI = self::$alloptions[self::$opt_vi_endpoints]->adsTxtAPI; $iabResult = self::vi_remote_get($adsTxtAPI); $iab_valid = self::vi_adstxt_api_valid($iabResult); if ($iab_valid === true) { $new_options = array( self::$opt_vi_adstxt => $iabResult->data ); self::update_option_set($new_options); return $iabResult->data; } return false; } private static function vi_adstxt_status() { $user_adstxt = self::vi_cache_user_adstxt(); $current_adstxt = false; if ($user_adstxt === false) { return array( 'code' => -1, 'message' => 'Sorry, your publisher ads.txt info could not be retrieved. Please wait a few minutes and try again. Your ads.txt verification file will enable you to make money through vi. FAQ »' ); } else { $user_adstxt = preg_replace('~\R~u', PHP_EOL, $user_adstxt); } $adstxt_file = self::vi_get_home_path() . 'ads.txt'; $adstxt_url = self::base_url() . '/ads.txt'; $adstxt_http = wp_remote_get($adstxt_url, array('timeout' => self::$curltimeout)); if (!is_wp_error($adstxt_http) && in_array(wp_remote_retrieve_response_code($adstxt_http), array(200, 301, 302, 304))) { $current_adstxt = wp_remote_retrieve_body($adstxt_http); } if (empty($current_adstxt)) { $current_adstxt = file_get_contents($adstxt_file); } if (!empty($current_adstxt)) { $current_adstxt = preg_replace('~\R~u', PHP_EOL, $current_adstxt); // append if (is_writable($adstxt_file)) { if (stripos($current_adstxt, '# 41b5eef6') === false) { $to_write = PHP_EOL . $user_adstxt; file_put_contents($adstxt_file, $to_write, FILE_APPEND); return array( 'code' => 1, 'before_adstxt' => $current_adstxt, 'after_adstxt' => $current_adstxt . $to_write, 'message' => 'You successfully validated your account. Your ads.txt file has been updated, which enables you to make money through vi. FAQ »' ); } else if ($current_adstxt !== $user_adstxt) { $current_adstxt_lines = preg_split('/\r\n|\r|\n/', $current_adstxt); $current_adstxt_lines = array_filter($current_adstxt_lines, array(self::class, 'vi_not_vi_adstxt_line')); $former_adstxt = implode(PHP_EOL, $current_adstxt_lines); $new_adstxt = $former_adstxt . (strlen($former_adstxt) > 0 ? PHP_EOL : '') . $user_adstxt; if ($current_adstxt === $new_adstxt) { return array( 'code' => 2, 'message' => 'You successfully validated your account.' ); } else { file_put_contents($adstxt_file, $new_adstxt); return array( 'code' => 1, 'before_adstxt' => $current_adstxt, 'after_adstxt' => $new_adstxt, 'message' => 'You successfully validated your account. Your ads.txt file has been updated, which enables you to make money through vi. FAQ »' ); } } else { return array( 'code' => 2, 'message' => 'You successfully validated your account.' ); } } else { if (stripos($current_adstxt, $user_adstxt) === false) // $user_adstxt { return array( 'code' => 0, 'message' => 'Sorry, your current ads.txt file could not be automatically be updated. Please first download this updated ads.txt file and upload it to your site root, then try logging in again. Your ads.txt verification file will enable you to make money through vi. FAQ »' ); } else { return array( 'code' => 2, 'message' => 'You successfully validated your account.' ); } } } else { // create if ((!file_exists($adstxt_file) && is_writable(self::vi_get_home_path())) || (file_exists($adstxt_file) && is_writable($adstxt_file))) { file_put_contents($adstxt_file, self::$alloptions[self::$opt_vi_adstxt], FILE_APPEND); return array( 'code' => 1, 'before_adstxt' => $current_adstxt, 'after_adstxt' => self::$alloptions[self::$opt_vi_adstxt], 'message' => 'You successfully validated your account. Your ads.txt file has been created, which enables you to make money through vi. FAQ »' ); } else { return array( 'code' => 0, 'message' => 'Sorry, your ads.txt verification file could not automatically be created. Please first download this ads.txt file and upload it to your site root, then try logging in again. Your ads.txt verification file will enable you to make money through vi. FAQ »' ); } } } public static function vi_adstxt_status_soft_ajax() { $result = array(); if (self::is_ajax() && self::ajax_referer() && current_user_can('manage_options')) { $default = array( 'current_adstxt' => '' ); $input = shortcode_atts($default, stripslashes_deep($_POST)); $result = self::vi_adstxt_status_soft($input['current_adstxt']); if (isset($result['code']) && intval($result['code']) < 0) { $result['token'] = self::$alloptions[self::$opt_vi_token]; } } else { $result['type'] = 'error'; $result['message'] = 'Sorry, there was a problem verifying your ads.txt file. Please try again.'; } $result['message'] = wp_kses_post($result['message']); echo json_encode($result); die(); } private static function vi_adstxt_status_soft($current_adstxt) { $adstxt_url = self::base_url() . '/ads.txt'; $adstxt_note = ' Note: If you already have an ads.txt file at ' . $adstxt_url . ', you will just need to add in the additional lines found in the download.'; $user_adstxt = self::vi_cache_user_adstxt(); $current_adstxt = empty($current_adstxt) ? false : $current_adstxt; if ($user_adstxt === false) { return array( 'code' => -1, 'message' => 'For your security, a quick reauthentication is needed to begin setting up your ads.txt file. First, log out of this Ads Settings page with the "Logout" button right above and then log back in with your vi login and password. Then come back to this tab for next steps. Your ads.txt verification file will enable you to make money through vi. FAQ »' ); } else { $user_adstxt = preg_replace('~\R~u', PHP_EOL, $user_adstxt); } if (!empty($current_adstxt)) { $current_adstxt = preg_replace('~\R~u', PHP_EOL, $current_adstxt); // append / update manually if (stripos($current_adstxt, $user_adstxt) === false) { if (stripos($current_adstxt, '# 41b5eef6') !== false) // update { return array( 'code' => 0, 'message' => 'Looks like video intelligence has just updated its ad delivery partners. To get the most revenue out of your ads, open up your ' . ' ads.txt file and replace the vi lines (ending in # 41b5eef6) with the new lines you see below. Then, refresh this page. ' . ' Please do not reorder or double space the below lines. ' . ' If we helped you with your ads.txt in the past, feel free to contact us to help out again with this update. ' . '# video intelligence (vi.ai) ads.txt lines begin here:' . PHP_EOL . $user_adstxt . PHP_EOL . '# video intelligence (vi.ai) ads.txt lines end' ); } else // add { return array( 'code' => 0, 'message' => 'In your current ads.txt file, just add in the additional lines you see below. Then, refresh this page.' . ' Please do not reorder or double space the below lines. ' . '# video intelligence (vi.ai) ads.txt lines begin here:' . PHP_EOL . $user_adstxt . PHP_EOL . '# video intelligence (vi.ai) ads.txt lines end' ); } } else { return array( 'code' => 2, 'message' => '

You successfully validated your ads.txt file.

' ); } } else { // create manually return array( 'code' => 0, 'message' => 'You can download this ads.txt file and upload it to your site root (or copy the same text below). Then, refresh this page to verify.' . ' Please do not reorder or double space the below lines. ' . '# video intelligence (vi.ai) ads.txt lines begin here:' . PHP_EOL . $user_adstxt . PHP_EOL . '# video intelligence (vi.ai) ads.txt lines end' ); } } private static function vi_not_vi_adstxt_line($line) { return stripos($line, '# 41b5eef6') === false; } public static function vi_get_home_path() { $abs_root = get_home_path(); if (strlen($abs_root) <= 1) { $abs_root = trailingslashit(str_replace('\\', '/', ABSPATH)); $url_path = parse_url(site_url()); if (isset($url_path['path'])) { $relpath = trailingslashit($url_path['path']); $relpath_length = strlen($relpath); $path_intersect = substr($abs_root, -$relpath_length); if ($path_intersect === $relpath) { $abs_root = trailingslashit(substr($abs_root, 0, strlen($abs_root) - $relpath_length)); } } } return $abs_root; } public static function vi_adstxt_lookup() { $request = esc_url_raw(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); if ('/ads.txt' === $request) { if (function_exists('tenup_display_ads_txt')) { $post_id = get_option('adstxt_post'); if (!empty($post_id)) { $post = get_post($post_id); header('Content-Type: text/plain'); echo esc_html($post->post_content); die(); } } } } public static function vi_adstxt_download() { $inp_key = filter_input(INPUT_GET, 'key'); if (filter_input(INPUT_GET, 'ytvi_adstxt_download') == 1 && !empty($inp_key)) { $key = urldecode(filter_input(INPUT_GET, 'key', FILTER_DEFAULT)); self::$alloptions[self::$opt_vi_token] = $key; $user_adstxt = self::vi_cache_user_adstxt(); $adstxt_file = self::vi_get_home_path() . 'ads.txt'; $current_adstxt = file_exists($adstxt_file) ? file_get_contents($adstxt_file) : ''; $current_adstxt_lines = preg_split('/\r\n|\r|\n/', $current_adstxt); $current_adstxt_lines = array_filter($current_adstxt_lines, array(self::class, 'vi_not_vi_adstxt_line')); $former_adstxt = implode(PHP_EOL, $current_adstxt_lines); $new_adstxt = $former_adstxt . (strlen($former_adstxt) > 0 ? PHP_EOL : '') . ($user_adstxt === false ? '' : $user_adstxt); $new_adstxt = '# video intelligence (vi.ai) ads.txt lines begin here:' . PHP_EOL . $new_adstxt . PHP_EOL . '# video intelligence (vi.ai) ads.txt lines end'; header("Expires: 0"); header("Cache-Control: no-cache, no-store, must-revalidate"); header('Cache-Control: pre-check=0, post-check=0, max-age=0', false); header("Pragma: no-cache"); header("Content-Disposition:attachment; filename=ads.txt"); header("Content-Type: application/force-download"); echo $new_adstxt; exit(); } } public static function vi_logged_in() { return !empty(self::$alloptions[self::$opt_vi_token]); } public static function vi_settings_nav() { ?> get_error_message(); } else { $jsonResult = json_decode($apiResult['body']); if (!empty($jsonResult->error)) { //$messages[] = implode(': ', array('vi API - ' . self::vi_debug_json($apiResult))); $messages[] = 'If the issue is not resolved, please contact support at ext@embedplus.com and we will get you going. (Error code ' . wp_remote_retrieve_response_code($apiResult) . ', v' . self::$version . ' - ' . implode(': ', array($jsonResult->error->message, is_string($jsonResult->error->description) ? $jsonResult->error->description : json_encode($jsonResult->error->description))) . ')'; } if (isset($jsonResult->status) && strcasecmp($jsonResult->status, 'ok') == 0 && isset($jsonResult->data) && strlen($jsonResult->data) > 0) { $apiResult = $jsonResult; } } if (empty($messages)) { return true; } return $messages; } private static function vi_cache_js($options) { $readonly = array( 'domain' => parse_url(site_url(), PHP_URL_HOST), 'adUnitType' => 'NATIVE_VIDEO_UNIT', 'logoUrl' => 'https://example.com/logo.jpg' ); $options = $readonly + $options; $jsTagAPI = self::$alloptions[self::$opt_vi_endpoints]->jsTagAPI; $iabCategoryList = explode(',', $options['iabCategory']); $matches = array(); if (isset(self::$alloptions[self::$opt_vi_js_script]) && preg_match('/IAB_Category[ ]*:([^,]+),/i', self::$alloptions[self::$opt_vi_js_script], $matches)) { $currCategory = array(trim($matches[1])); $iabCategoryList = array_diff($iabCategoryList, $currCategory); } $options['iabCategory'] = $iabCategoryList[array_rand($iabCategoryList)]; $apiResult = self::vi_remote_post($jsTagAPI, array( 'body' => json_encode($options) )); //$js_valid = array(self::vi_debug_json($options)); $js_valid = self::vi_cache_js_valid($apiResult); if ($js_valid === true) { $mod_data = $apiResult->data; $new_options = array( self::$opt_vi_js_script => $mod_data, self::$opt_vi_last_category_update => date('Y-m-d H:i:s') ); self::update_option_set($new_options); } return $js_valid; } public static function vi_debug_json($json) { return '
' . json_encode($json, JSON_PRETTY_PRINT) . '
'; } public static function vi_script_setup_done() { if (empty(self::$alloptions[self::$opt_vi_js_script])) { return false; } return true; } public static function vi_admin_dashboard_valid(&$item) { $messages = array(); $all_post_types = get_post_types(array('public' => true), 'names'); foreach ($item[self::$opt_vi_js_posttypes] as $pt) { if (!in_array($pt, $all_post_types)) { $messages[] = 'Please choose only valid post types for your ad to appear in.'; } } if (!in_array($item[self::$opt_vi_js_position], array('top', 'bottom'))) { $messages[] = 'Please choose a valid placement position.'; } $item[self::$opt_vi_js_settings]['keywords'] = substr(sanitize_text_field(str_replace(array('\'', '"'), '', $item[self::$opt_vi_js_settings]['keywords'])), 0, 200); $item[self::$opt_vi_js_settings]['iabCategory'] = sanitize_text_field($item[self::$opt_vi_js_settings]['iabCategory']); if (empty($item[self::$opt_vi_js_settings]['iabCategory'])) { $messages[] = 'Please choose at least one IAB category under Video Categories.'; } $item[self::$opt_vi_js_settings]['language'] = sanitize_text_field($item[self::$opt_vi_js_settings]['language']); if (empty($item[self::$opt_vi_js_settings]['language'])) { $item[self::$opt_vi_js_settings]['language'] = 'en-us'; } $item[self::$opt_vi_js_settings]['backgroundColor'] = sanitize_hex_color($item[self::$opt_vi_js_settings]['backgroundColor']); if (empty($item[self::$opt_vi_js_settings]['backgroundColor'])) { $item[self::$opt_vi_js_settings]['backgroundColor'] = '#ffffff'; } $item[self::$opt_vi_js_settings]['textColor'] = sanitize_hex_color($item[self::$opt_vi_js_settings]['textColor']); if (empty($item[self::$opt_vi_js_settings]['textColor'])) { $item[self::$opt_vi_js_settings]['textColor'] = '#000000'; } $item[self::$opt_vi_js_settings]['font'] = sanitize_text_field($item[self::$opt_vi_js_settings]['font']); if (empty($item[self::$opt_vi_js_settings]['font'])) { $item[self::$opt_vi_js_settings]['font'] = 'Arial'; } if (!is_numeric($item[self::$opt_vi_js_settings]['fontSize']) || intval($item[self::$opt_vi_js_settings]['fontSize']) < 0) { $item[self::$opt_vi_js_settings]['fontSize'] = 12; } if (empty($messages)) { $js = self::vi_cache_js($item[self::$opt_vi_js_settings]); if ($js === true) { $item[self::$opt_vi_js_script] = self::$alloptions[self::$opt_vi_js_script]; } else { $messages[] = 'For your security, a quick re-authentication is required to save your most recent customizations. Simply log out of this Ads Settings page with the "Logout" button right above and then log back in with your vi login and password. '; $messages = array_merge($messages, $js); } } if (empty($messages)) { return true; } return $messages; } public static function vi_print_toggle_button() { ?> self::$alloptions[self::$opt_vi_js_settings], self::$opt_vi_js_script => self::$alloptions[self::$opt_vi_js_script], self::$opt_vi_js_posttypes => self::$alloptions[self::$opt_vi_js_posttypes], self::$opt_vi_js_position => self::$alloptions[self::$opt_vi_js_position], self::$opt_vi_show_gdpr_authorization => self::$alloptions[self::$opt_vi_show_gdpr_authorization], self::$opt_vi_show_privacy_button => self::$alloptions[self::$opt_vi_show_privacy_button] ); if (wp_verify_nonce(filter_input(INPUT_POST, 'nonce'), basename(__FILE__))) { $post_vars = stripslashes_deep($_POST); if (!array_key_exists(self::$opt_vi_js_posttypes, $post_vars)) { $post_vars[self::$opt_vi_js_posttypes] = array(); } $post_vars = shortcode_atts($item, $post_vars); $item[self::$opt_vi_js_settings] = $post_vars[self::$opt_vi_js_settings] + $item[self::$opt_vi_js_settings]; $item[self::$opt_vi_js_posttypes] = $post_vars[self::$opt_vi_js_posttypes]; $item[self::$opt_vi_js_position] = $post_vars[self::$opt_vi_js_position]; $item[self::$opt_vi_show_gdpr_authorization] = self::postchecked(self::$opt_vi_show_gdpr_authorization) ? 1 : 0; $item[self::$opt_vi_show_privacy_button] = self::postchecked(self::$opt_vi_show_privacy_button) ? 1 : 0; $item_valid = self::vi_admin_dashboard_valid($item); //$item_valid = array('
_post: ' . print_r(stripslashes_deep($_POST), true) . '
', '
item: ' . print_r($item, true) . '
'); if ($item_valid === true) { self::update_option_set($item); $message = 'Settings were successfully saved. Now you can turn on vi ads above. Note: changes may take a few minutes to appear on your website. If you are using a separate caching plugin, you need to reset your cache to see any changes.'; } else { $notice = wp_kses_post(implode('
', $item_valid)); } } ?>

Video Ad Settings Logout of vi settings

This feature is being deprecated in the next version. Please contact ext@embedplus.com for questions.


Congrats! Ads are now on. Here are some tips to maximize your fill rate and therefore revenue:

  • Visibility - The higher the player is placed, the greater the demand and fill rate. Inserting it near the top or middle of your pages are best.
  • Ad Unit Size - The recommended minimum width for the player is 336px
  • Give vi.ai about 2-3 weeks to optimize their inventory for your site
  • Contact us for help if you have any questions: ext@embedplus.com

'; // print_r(_get_cron_array()); // echo ''; ?>

How It Works

Before you begin, please turn off any ad blocker extensions you may have, so that you will see how your ads look. Then follow the steps below:


1

Video Categories

Categorize your site to help match with the right ads.

2

Appearance

Customize how the ad player should look.

3

Placement

Decide where the ad player should be placed.

4

Turn It On

Click the colored button at the top right of this page to make the ad player visible.

5

Ads.txt Verification

Verify your ads.txt file to start earning revenue.

6

Revenue Reporting

View reports on your CPM, revenue, and more.

7

Profile Settings

Collect your earnings in a few days via PayPal or bank transfer.

Trouble getting content that fits your site, even with the proper settings above/below? Contact support at ext@embedplus.com

1 Video Categories (Multiple Allowed)

Your video ad will be optimized to relate to your site's content and the one or more categories you select below. Note that the quality of the matches improves over time.

Tip: select more than one category to add variety to your video ads. If you select more than one, you must stay logged in to this settings page for your categories to automatically add variety to your ads.

Select the categories that most fit your website. You can select up to 4. Filter by:

Your Selected Categories:

2 Appearance

Customize your ad unit's visual appearance below.

Appearance Demo

AD + CONTENT
Example vi Story Title Text
featured by
languages)) { ?>
Select a background color that will enable the ad to blend in with your site's theme.
Select a text color that will enable the ad to blend in with your site's theme.
Select the font that matches your site's theme the most.
Select the font size for your ad.
Select from the available list of languages.

Sizing Tips

The video ad's player will be as large as the container it’s in. If you’d like to change the default size to something smaller, you’ll just need to add some CSS to your website's theme as follows:

  1. You'll be using your site's theme customizer. In the WordPress admin menu on the left, go to Appearance > Customize.
  2. On the customizer page, scroll down in the left menu to "Additional CSS" and click on it.
  3. You'll have a textbox to paste in the following CSS (change 480 to your desired max width in pixels):

  4. When done, click on the "Publish" button at the top to save your change, and then the X to close the theme customizer.

3 Placement

You can choose to place your ad automatically, or manually using a shortcode, or in a specific spot in your theme code. Each method is explained below.

After you finish choosing your placement preferences below, 1) Click on "Save Changes", and 2) turn on the ads using the button at the top of this screen.

Note: The ad player will auto-fit to its container when loaded.

Automatic: Top or Bottom

You can have your ad automatically placed at the top or bottom of your post content--right above your first paragraph (top), or right under your last paragraph (bottom). For optimal revenue, we recommend using the "Top" option:

Next, just check which types of posts you desire to have the ad appear, and the plugin will take care of the rest. You'll start seeing the ads on your pages after pressing the "Save Changes" button on the bottom right, and turning "ON" vi ads with the top right button.

    true), 'objects'); foreach ($all_post_types as $pt) { ?>

Note that only one ad can appear on a page, but if you'd like more control of exactly where it's placed, see the "Manual" or "Theme Code" directions in the next sections.

Manual: Shortcode or Gutenberg Block

If you didn't select any of the automatic options above, you can manually insert your ad in text widgets, and in specific posts or pages. See the below screenshot to find the button you can use to manually embed the ad code. (or, use this shortcode directly: [embed-vi-ad]). We're quite happy to help you if you aren't sure what to do, especially due the newness of the new Gutenberg editor. Just email us at ext@embedplus.com

By the way, if you did make an automatic selection above, do not make any manual insertions. Skip the remaining options on this page, since only one ad code/script is allowed per page and the above has got you covered.

Theme Code (advanced)

You can also position the ad directly in your theme code. Copy the PHP code below and paste it where you would like it to appear in your theme.

echo do_shortcode("[embed-vi-ad]");

Trouble with your ads.txt verification? Contact support at ext@embedplus.com

5 Ads.txt Verification

In order for your ads to start generating revenue, verify your ads.txt file.

Are you also running Google Adsense ads on your site? If so, also add the following line which is recommended by Google for ads.txt files (replace the 0000000000000000 with your actual publisher ID as provided by Google).

google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0

6 Revenue Reporting

Total Earnings

To view more detailed reports on your ad's performance and stats, click here to automatically login to your vi account. Then click on the "Reports" tab as shown below.

Total Earnings

No Data

Monthly Earnings Graph



No Data

Trouble showing the reports? Please try again later, or contact support at ext@embedplus.com

7 Profile Settings

To enter where you would like to receive your payments, click here to automatically login to your dashboard on vi.ai. Your deposit options, which include bank transfer or PayPal, are found in the "Settings" tab:

Trouble automatically logging in? Manually login here using the email you signed up with.

Privacy

FAQs

  • What kind of video ad unit am I embedding?

    It's a unique type of ad unit called a "vi story," which is essentially a video ad wrapped with engaging content related to your website. View a demo here (be sure to turn off ad-blocker to preview the demo).

    Your ad unit will display content from quality sources like:

  • Why embed an ad unit that also includes a story, rather than just an ad?

    Simply put, advertisers pay more for video advertising when it's matched with video content. With both, you'll increase your visitors' time-on-site and even command up to 10x higher CPM than regular display advertising.

  • What is my ads.txt file for?

    This is an industry standard (IAB-approved) text file that aims to prevent unauthorized inventory sales. Basically, it helps increase your revenue by verifying to ad buyers that you have a valid site that they are buying ad space for.

  • What is the best place to put my ad?

    To optimize your revenue, we strongly recommend embedding the ad "above the fold" when possible (lower placements tend to yield much less revenue). In general, the higher the placement, the better engagement and revenue. The automatic placement options place the ad at the top of your content area for you, but keep this tip in mind whenever you manually embed the ad.

  • Why are there no ads, even though I added the code (manually or automatically)?

    It's likely that you've added more than one ad script/code to your pages. Perhaps you selected the automatic placement on a post/page but also inserted a separate piece of code/script manually. At this time, only one ad is allowed per page. If you insert more, then no ads might be visible.

  • Is this video intelligence (vi) monetization feature compatible with Google Adsense?

    Yes. Many publishers are in fact running both Adsense and vi at the same time. Like vi, Google Adsense recommends that you have an ads.txt in your root folder. Therefore, you should also include the following line in your ads.txt -- either before or after the lines you inserted for vi (replace the 0000000000000000 with the actual publisher ID provided by Google):

    google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0

  • How do I resize the ad?

    The video ad's player will be as large as the container it’s in. If you’d like to change the default size to something smaller, you’ll just need to add some CSS to your website's theme as follows:

    1. You'll be using your site's theme customizer. In the WordPress admin menu on the left, go to Appearance > Customize.
    2. On the customizer page, scroll down in the left menu to "Additional CSS" and click on it.
    3. You'll have a textbox to paste in the following CSS (change 480 to your desired max width in pixels):

    4. When done, click on the "Publish" button at the top to save your change, and then the X to close the theme customizer.
  • I don't want my ad to follow me as I scroll.

    This is a feature that greatly increases your rate of revenue. If you would like to turn if off, please contact support.

  • When will I start seeing ads within the vi story?

    It can vary depending on which countries the bulk of your traffic is coming from. For most countries it takes about 1 to 2 days. If you have questions, email us at ext@embedplus.com

  • How do I change the number of ads that are shown for each vi story I embed?

    vi manages the maximum number of ads and time between them based on each publisher. This is to optimize the fill rates and monetization. If you would like some custom settings, please contact support.

  • Why am I seeing ads that do not match my site's topics?

    1. Wait for 24 hours to give the video intelligence service time to learn more about your site.
    2. Check each category and its subcategories to see if there is a better fit for your site’s topics than your initial selections.
    3. If you're still not seeing well-matched ads, it's likely that your site's topics are very specific or they are based on categories in which vi.ai is still building inventory. In the meantime, try and find other categories that you think will be of interest to your audience.
    4. If all else fails, please contact support.

To see a comprehensive list of FAQs, please visit vi FAQs.

Earnings & Payment Support

For issues on the advertising program, your earnings, and vi: video intelligence: please contact ext@embedplus.com.

Join over 40,000 publishers making money embedding high quality video ads
'; self::vi_print_toggle_button(); echo ''; } ?>

If you're using a separate caching plugin and you do not see your changes after saving, you need to reset your cache.

0 && self::vi_logged_in()) { $last_category_update = strtotime(self::$alloptions[self::$opt_vi_last_category_update]); $last_category_update_plus = strtotime(self::$alloptions[self::$opt_vi_last_category_update] . ' + ' . self::$vi_last_category_update_interval); if ($last_category_update_plus < time()) { $success = self::vi_cache_js(self::$alloptions[self::$opt_vi_js_settings]); if ($success !== true) { self::vi_token_expire(); } } } self::$vi_script_tag_done = true; $scriptTag = '
'; return $scriptTag; } return ''; } public static function vi_js_placement($content) { //$mainquery = is_main_query(); if (!self::$vi_script_tag_done && self::$alloptions[self::$opt_vi_active] && self::vi_script_setup_done()) { if (!empty(self::$alloptions[self::$opt_vi_js_posttypes])) { $singular = is_singular(self::$alloptions[self::$opt_vi_js_posttypes]); if ($singular && in_the_loop()) { return self::$alloptions[self::$opt_vi_js_position] == 'top' ? self::vi_script_tag() . $content : $content . self::vi_script_tag(); } } } return $content; } public static function vi_js_shortcode($atts, $content = null) { return self::vi_script_tag(); } public static function wp_insert_vi_api_is_eu() { $userIp = $_SERVER["REMOTE_ADDR"]; if (defined('VI_EU_TEST')) { $userIp = '185.216.33.82'; // force EU for testing } $isEU = get_transient('wp_insert_vi_api_is_eu_' . $userIp); if ($isEU === false) { try { $response = wp_remote_get( 'http://gdpr-check.net/gdpr/is-eu?ip=' . $userIp, array('timeout' => 15) ); if (!is_wp_error($response)) { if (200 == wp_remote_retrieve_response_code($response)) { $responseBody = json_decode($response['body']); if ((json_last_error() == JSON_ERROR_NONE)) { if ((isset($responseBody->is_eu)) && ($responseBody->is_eu == '1')) { delete_transient('wp_insert_vi_api_is_eu_' . $userIp); set_transient('wp_insert_vi_api_is_eu_' . $userIp, '1', WEEK_IN_SECONDS); return true; } else { delete_transient('wp_insert_vi_api_is_eu_' . $userIp); set_transient('wp_insert_vi_api_is_eu_' . $userIp, '0', WEEK_IN_SECONDS); return false; } } else { return false; } } else { return false; } } } catch (Exception $ex) { return false; } } else { if ($isEU == '1') { return true; } else { return false; } } } public static function wp_insert_vi_gdpr_popup_init() { if ((bool) self::$alloptions[self::$opt_vi_show_gdpr_authorization] || defined('VI_EU_TEST')) { add_action('init', array(self::class, 'wp_insert_vi_gdpr_data_init')); add_action('wp_enqueue_scripts', array(self::class, 'wp_insert_vi_gdpr_popup_wp_enqueue')); add_action('wp_footer', array(self::class, 'wp_insert_vi_gdpr_popup_wp_footer')); } } public static function wp_insert_vi_gdpr_popup_wp_enqueue() { wp_enqueue_style('wp_insert_vi_gdpr_css', plugins_url('styles/ytvi-gdpr' . self::$min . '.css', __FILE__), array(), self::$version); wp_enqueue_script('wp_insert_vi_gdpr_js', plugins_url('scripts/ytvi-gdpr' . self::$min . '.js', __FILE__), array('jquery'), self::$version, true); } public static function wp_insert_vi_gdpr_popup_wp_footer() { $showViConsent = true; $isEU = self::wp_insert_vi_api_is_eu(); if (isset($_COOKIE['Viconsent'])) { $showViConsent = false; } $labels = array(); $viConsentPopupContent = isset(self::$alloptions[self::$opt_vi_endpoints]->consentPopupContent) ? self::$alloptions[self::$opt_vi_endpoints]->consentPopupContent : false; if ($viConsentPopupContent != false) { $lang = isset(self::$alloptions[self::$opt_vi_js_settings]['language']) ? self::$alloptions[self::$opt_vi_js_settings]['language'] : 'en-us'; switch ($lang) { case 'de-de': $labels['popupContent'] = $viConsentPopupContent->es; $labels['accept'] = 'acepto'; $labels['donotaccept'] = 'no acepto'; $labels['showPurposes'] = 'Mostrar propósitos'; $labels['showVendors'] = 'Mostrar vendedores'; break; case 'fr-fr': $labels['popupContent'] = $viConsentPopupContent->fr; $labels['accept'] = 'J’accepte'; $labels['donotaccept'] = 'Je n’accepte pas'; $labels['showPurposes'] = 'Plus de details'; $labels['showVendors'] = 'Montrez les vendeurs'; break; case 'en-us': default: $labels['popupContent'] = $viConsentPopupContent->en; $labels['accept'] = 'I accept'; $labels['donotaccept'] = 'I do not accept'; $labels['showPurposes'] = 'View purposes'; $labels['showVendors'] = 'View vendors'; break; } } ?> prefix . 'vi_consent_logs'; $query = $wpdb->prepare("SHOW TABLES LIKE %s", $wpdb->esc_like($table_name)); if ($wpdb->get_var($query) != $table_name) { self::vi_db_init_schema(); } $viconsent = array( 'id' => 0, 'viconsent' => (isset($_COOKIE['Viconsent']) ? $_COOKIE['Viconsent'] : ''), 'date_created' => date('Y-m-d H:i:s') ); $result = $wpdb->insert($table_name, $viconsent); die(); } } public static function vi_db_init_schema() { try { global $wpdb; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE " . $wpdb->prefix . 'vi_consent_logs' . " ( id bigint(20) unsigned NOT NULL AUTO_INCREMENT, viconsent varchar(1000) NOT NULL DEFAULT '', date_created datetime NOT NULL, PRIMARY KEY (id) ) $charset_collate;"; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta($sql); } catch (Exception $ex) { } } public static function vi_cron_interval($schedules) { $schedules['ytvi_fifteen_days'] = array( 'interval' => 1296000, 'display' => esc_html__('Every 15 Days'), ); $schedules['ytvi_two_minutes'] = array( 'interval' => 120, 'display' => esc_html__('Every 2 Minutes'), ); return $schedules; } public static function vi_cron_cache_js() { } public static function vi_ever_logged_in() { return self::$alloptions[self::$opt_vi_last_login] != self::$vi_default_date; } public static function vi_last_login_valid() { $last_login = strtotime(self::$alloptions[self::$opt_vi_last_login]); $last_login_plus = strtotime(self::$alloptions[self::$opt_vi_last_login] . ' + 29 days'); //$last_login_plus = strtotime(self::$alloptions[self::$opt_vi_last_login] . ' + 2 minutes'); if ($last_login_plus < time()) { return false; } return true; } public static function vi_token_expire() { try { self::vi_cron_stop(); if (self::vi_logged_in() && !self::vi_last_login_valid()) { self::update_option_set(array( self::$opt_vi_token => '' )); } else if (self::vi_logged_in() && filter_input(INPUT_SERVER, 'REQUEST_METHOD') != 'POST' && ((is_admin() && filter_input(INPUT_GET, 'page') == 'youtube-ep-vi') || !is_admin()) ) // (&& not $_POSTing anything, && on monetize page) || NOT admin page...e.g. category randomization { $adsTxtAPI = self::$alloptions[self::$opt_vi_endpoints]->adsTxtAPI; $tokenCheck = self::vi_remote_get($adsTxtAPI); $tokenCheck_valid = self::vi_adstxt_api_valid($tokenCheck); if ($tokenCheck_valid !== true) // do a token check. if invalid, then: { self::update_option_set(array( self::$opt_vi_token => false )); if (is_admin()) { wp_safe_redirect(admin_url('admin.php?page=youtube-ep-vi')); exit; } } } } catch (Exception $ex) { } } ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// public static function gb_block_assets() { // frontend+backend styles. wp_enqueue_style('epytgb-style-css', plugins_url('dist/blocks.style.build.css', __FILE__), array('wp-blocks'), self::$version); } public static function gb_editor_assets() { // backend styels self::ytprefsscript(); self::fitvids(); if (!empty(self::$alloptions[self::$opt_not_live_on_channel])) { add_action("admin_print_footer_scripts", array(self::class, 'live_fallback_template')); } if (!self::is_restrict_wizard() && current_user_can('edit_posts')) { // Scripts. wp_enqueue_script( 'epytgb-block-js', // Handle. plugins_url('/dist/blocks.build.js', __FILE__), // Block.build.js: We register the block here. Built with Webpack. array('wp-blocks', 'wp-i18n', 'wp-element'), // Dependencies, defined above. self::$version, true // Enqueue the script in the footer. ); // Styles. wp_enqueue_style( 'epytgb-block-editor-css', // Handle. plugins_url('dist/blocks.editor.build.css', __FILE__), // Block editor CSS. array('wp-edit-blocks'), // Dependency to include the CSS after it. self::$version ); //wp_enqueue_style('__ytprefs_admin__vi_css', plugins_url('styles/ytvi-admin' . self::$min . '.css', __FILE__), array(), self::$version); // Tiny MCE wp_enqueue_style('__ytprefs_admin__tinymce_css', plugins_url('styles/epyt_mce_wizard_button' . self::$min . '.css', __FILE__), array(), self::$version); } } public static function gb_classic_block_setup() { if (!self::is_restrict_wizard() && current_user_can('edit_posts')) { add_thickbox(); add_filter("mce_external_plugins", array(self::class, "gb_add_tinymce_plugin")); add_filter('mce_buttons_2', array(self::class, 'gb_register_tinymce_button')); } } public static function gb_add_tinymce_plugin($plugin_array) { $plugin_array['epyt_mce_wizard_button'] = plugins_url('scripts/epyt_mce_wizard_button' . self::$min . '.js', __FILE__) . '?ver=' . self::$version; return $plugin_array; } public static function gb_register_tinymce_button($buttons) { array_push($buttons, "epyt_mce_wizard_button"); return $buttons; } public static function gb_svg_defs() { ?> array( 'shortcode' => array( 'type' => 'string' ) ), 'render_callback' => array(self::class, 'gb_render_callback_youtube'), ) ); } } public static function gb_render_callback_youtube($attributes, $content) { if ($attributes && $attributes['shortcode'] && strpos($attributes['shortcode'], '[') === 0) { $render = do_shortcode($attributes['shortcode']); if (empty($render) && stripos($attributes['shortcode'], 'live=1') !== false) { $render = 'This is a live embed that is not currently streaming. You can optionally fill out the Not Live Content field in the YouTube plugin\'s Default Settings.'; } return $render; } return isset($attributes['shortcode']) ? $attributes['shortcode'] : ''; } } // constants define('EPYT_BASE_URL', rtrim(plugins_url('', __FILE__), "\\/") . '/'); define('EPYTVI_INCLUDES_PATH', rtrim(dirname(__FILE__), "\\/") . '/includes/vi/'); define('EPYTGB_INCLUDES_PATH', rtrim(dirname(__FILE__), "\\/") . '/includes/gutenberg/'); if (!defined('EPYTVI_ENDPOINTS_URL')) define('EPYTVI_ENDPOINTS_URL', 'https://dashboard-api.vidint.net/v1/api/widget/settings'); $youtubeplgplus = new YouTubePrefs(); youtube-embed-plus/screenshot-3.jpg000064400000252142151435171370013327 0ustar00ÿØÿá6ExifII* ¶Âž¤¬(1´2Ði‡ä€ü '€ü 'Adobe Photoshop CS5 Windows2013:11:21 22:37:430221 ÿÿ  djr(z´HHÿØÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀn "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?õT’I%)$²2jǯ}„êv±­ç8ðÊØ>“’‰­ÙÙeu1ÖXàÆ4Kœã2¹<ê~²õìÛnèÝIÝ*œOÐ:‹&Ç=ö‡5Íýæ[³Òwé?ÒzÍ®˜ö^öäf,;ªÇZÃÙïÿK‘ü¯æéÿþžîk/®?êÿHëý]”Œ‡cd×mØ1¨Õðÿ£êïD€4Üõìg]‚?Øã%ŸC¯ÐÿëÔÏýæ±?ìÏñ¢Þ:¾ÿ¬À?êp–—Õï­gªb_nN;j»*ÜG¶‡úÌq¤Ô×ÙQ-ªÍ¿§ßüßóUú‹PuŒ@Þé$ì~¤­üÔÃ’ÑIJ Y$.1$x y“þ5+:eôû~Dî½i Æ¥gùžoßÿ¥*]3º¶æ=å®i ˆ'èÎç{w~ïç"ÑÔ0ò,ôé³sà˜‚4ô€ýä†HBBüÔqdÌ%]ëG˜§?üeC…ý? ¦°»Í;ú…;?’‰ûKëûC·têFݰ™õ'oP¹ÌÙìÙìý&ÿð{Mö\`ç´ýgi!ýÀ}úŸÝp-ÿ¤ºWác>±Yi ß s†¼k´û’f,ˆ/;]¸X÷Ó»ÜïÝú))çÖμžiiåÍuú@Cºslú÷ÔhyeßWsôüêØ÷´ÿUϦ¥Ô·­ag©a5ÜgC»é#$§ÿÇ"†=ÑzgÃÑ÷ç±#þ4:+t~PaîKþ]ŠÅëYéé9LÅ8ödXêýWl€K½6øþpOÇŽy%ÃÅ%³ÉGŠFƒ?Ƨՙ‡³)ŸÖ¨ßlrÕéŸ\z7Tevb:Ã]¶ú sš¾ZÝ¥›½O¥m~튈úÿ…ùØ—æ åsV®&VR«©Q^ÑapšÝÀµÞ“æ7}5ÛSòrÙ± ɵèuù¿Ed9ŒY B\GwÿÐõT•Ge^Š-p’fkOFE–—o®ÚKHÔ ‡cÛ·ù))žFP¨Š˜ßW!âk¤$^÷‚¥ŸŸgùž¥ÞJ8ø®cý|‡z¹.º!¬ü üÆ~ÿøKƒôñp²òÿh VÕ•úÃYcóv4±ÎuNÉþuØîc1êöâ×ïþsÙé«Í¿8‰-Ëih›#wè¶Ô}WoöƒO±¨‰¤zù"PœH3‰ãÛ‚_,CÂâú§YÉèëTÄev]FMA¬´VEŸe¡ûÚÇW»Ùk¿=t,~eõ×¹ùåö ÜËI$l63mNöþo¹rýfŠÝõs¯Õsßeg;qpk‰¦·k}lM"…ØP6jœ&ÿŒ¿¬ôÑ]•c`ׂí+»ì™-f§Hey.úQbT®T,øÝ¿fÍ'YJ·ZÏÍ\OPcpú®Et¿urH–†èFñ_™ùŠþv.E=¦ulk”,uîÞÙiÝú¥;,Ûô-÷×ûþÿðh4®º$]›z_üw:Ó]úZzvù->̦˜içÜÇ{Qþ8zu‹‹“E×·h>>µ nßí,.‹õBÊ-wVºªïÙ¹‚dºÏÝö»k”±òœ[–úp[qœÉ­sk‡ï6ߢí‰R¯ÅíYþ;ò‡Óè­wõo#òÐõcüt]âÑÀŽçåíl†—쟲}7ý-p©7åm¤ÒZ*a%ÀKšÏÐû¶¨W—Ð[~3ì¯ÜZÚ«m{^àÖ›=ÔÙ¿ÚÔ”5}«êß×Võš³m¿˜õàÕ{ŸEßid5öº£¶š6ß‹éúwÕúOÒ­¬~¯‡•_«ŽãeaÅ¥ÀG¸Fæû¶ýˆÿuÒóq²}bÜz¨v={+iÇåä»Ðs½¶zŽvïÖjßVÖÛc™m~ö¶ÖU.€~†Í襕¦ïBØûu_ºï¸z¶Óàï¹W¡†Ý®Íâ=71›Ú@úOky ¿ô¾‰­áÒZ]öf‡éú;vkþþˆì êŸm£ù_ræ>´t<î©Ôiê3‹Ã…0ë™mïvÿsþ;é·`uB\`“í)ík›C쮳e¡¥Ì«pis€–×¼û[¹ÞÔ”äb¿˜™EÔTF3Mín„Þ×d±»‹=»Ûqÿë*Ñf h}ÇŽmsí®°÷ýÖ1›œïä¡õ ]‹}6¹õƵœê ônÚ?7)¾‡þ…)eg[FU4²£km0ëû}Û?5®oò¾’t¤t6uüú­ˆPÑ]½:œå»ÚçÖìÚÒK€tÅvÒöìüßzä¾²¾Ö}JúËcmypÊÇ,°Àxø_IõíÜï宽ÝF:ÂkC­ÅϘ"Á®­§Û±ôïý'ïì\^,·êgÖ'eŽ×åc:Ö’æ{ð‹«ÝNö=ÿ™º¿Ñ I#R¸zhùÿE}97±C¨}š†Éq°‡º}•¼Zïæ´ý"?_4?.ü~›”ÜŒC¶úè ³Ñe¯V¼j«ÿDßÑÕíõŸô,XyiæjìL“ÿH5,|‹±®eô8²ÆAØÌ;lnj5-M×oØ’t­JúNe˜'*¼{½fXÇØòáQëÑþ“ô¿öÚ«~ü[™ëWed±Ðǰ±ñ»Úíþª×£ªuœ¼[²² –ãŠk¬õ-®==•Üì_CôMu6æS»Öw¡oó^ûfmõä´dö<TC½RÖ†Ùô^ó»ô¶5Ïú C1/H‰o#Ñ 3¿Ñ@êÙ§«›0›ÓÛS¾Ï½Ö¶v’YµönÝ¿nÐííú ÷JéPR-5–âŠus«_;ìkXö¹®õ¬pþkéúlýõ›ÐjËÈêm¯¶Œs­{×8V}¶6¶>÷Ù»jºìÌ®—˜ã‡k\úÿ:Êšø'Ƭ–Ù^ý¿á6(ýœbQ߆@Ë‹¾¿¢ØÁÀqk[\O =Çø¥Çm?µ]Mž­Œw‡j?KúÏÚé?ô•þgÒ^†¼ËüU;*ʺëêp$c ßa.7îs½ÝôZ»P>´³ Ö7iÛ`in¾®ÿ{»èz{QöÌ=6cÕƒ$Á™ .ÂÉÍéÙÉkñ……®p}ŽVSŸwè™]­±¬c·¶¿ ôJZ÷}©Ô6dxÎÿ[û?Esÿ×b\>!gõOØå»¥õ2+iÖXöçÛ, .cM{±ýí²»_¾¯äV•x=Uî-}7RÒZMƒ=î$±¤5Û}ðŸÍÛÿnÿ8µ'?ýv%=Cýv¥ÃâÅýSö"èÕgSSêËmœ‡6Ëo¸’!í–×NÍ»©ïý³“üõÖþä¨9[Ï­ôcN9þÊY?ÏQýoîK¯ÐþI»^¯ÿÒôóf0ivá´rA'ˆðþ²bì]»‹À2]NßÞDôjýÆó<xLqèp ÖÒ €Gýõ%52N·ÚÍÍd³ùÀéÚNçVæëî{]Vÿì(ÓÓŸUn¶ÆWkÁ63y†½§eÕ»_nËF­»æ]S»¸˜seß½ôÞ©Óƒ…^mô:ŠË.êÁhŽÕ_[Çzv»ÿ § bGoWýò„ú$³3¦VÇÛÏ Ùth·þ¡Û—õ»þª}dÇmµÒ×çcÖë¬qôØ}\&=Ö½‚Ç5µ;ùÏjî…†éÝEn–ƒ oÜö¬‘Óº¥k¦çR-ÿ-¦Ús7¶‹šwÔæYüålwÓMKâY1ÔÛmMÊÆ¸ÖH·<‡þ©«Ý[ÛúJÝþì—@3\ ºÀì^çÿ¿ÔÍÛÿgñ·w¯‘16îõþ†ÏfÔÿøÝ}NÚÖ}…Û;öŒ­Ÿ¥±ŸhÚÍÉ)ñZsz­w`S–Æa䈾€ïk¾‡2Ïø¾ú43U¯Å-cZMn¶àçw¶¦¿m{jÜë?9ÿ¤^Ùÿ§Ôü«oý»wþ–Sgø»úŸ]o¦¼Ê­V¶ßýº×êÖÛöYé»ù½ÿA%>=FoØjgرYNK¥}öXlõ Çé*º—Pʽîþj—·ù¯Ñþ“ùÛ+ïɰ¼ìx“aÞãûߣöì^ÐÅÏÔÒIwO’NâM×’\8óÿOùIÇø»úœ7GOó¿ô×ë<îý7¹ÈÆBQÒC¯šxUèò¿â›s¨ëÁ ³gé;_ùŽnÕÚ éÖÖðAÝ…`2µÅþÖþÎRéÿVz7DÇÉoGÅ8§$7ÕôžíÇfïOk®u›6oz#)Èjìà€ º’ÝA÷nú{Yþ¾¢2‘‘2–¤£ª6¹ŒÛeŽk‹\æ8Œ+?GÓþSv~ÿóV+˜˜Í×zVî‚ÂÚ}2 89Ïÿ¾*®fCšIãd¸Ã©—kvèïäú›ó…:™y{Xÿ¶´=ÃÜçTCHw»ÒsŸ³þ‡ÐMS{ìØÓ>“'ú¡I”ÔÃ,cZb$4´U«éïe­°ædY·–9ÌÚ¬ÖÖÕq%)WÉþzër°ƒ{A}nŸ¢FŸÖ¢?aAÿÓôñö©á‘-ñÐ…ÿÌ]™ýw¢úµ~ø×PgD…µžÓó )z÷í¤nï*Ùÿ£e>Îé°ÿÁ;ôwîþEm?hÿ¬+­Z{Û¯T]n5µ¹®{[„<"ì÷[è£DåH"Å$<,o«ßÒz¯þùê¥o 6éÛ{ ˜çÒ±ÅÀ“Ú­ü}nªïúê§õqÌvGU,ppûPÕ¤üÕ^ D…bÝ´’I©$’IJI$’RƵøÖ5á®k„óµ¤y»E–k†ØPk›¸NcÚîÝgÑk½?{V¦YŒkæ·Möïh>u¤²kn6½§ØÀã¸cÁíŽõ=û¿;cÒWTÕãÑö£SØÆÕ£ƒÆ]Ž~“·ô$7Ãý*¾3pËw ë-ñÞØÐnñýÒ²˜üM¬²«1žA¡ìÅq‚ÝÅßFÍÛ½ÞÄí¿hsmÇØß~ß²XÑ®Öþ“é7u_ëüÚKª31 }d“ooÏó’SYØX•gm4³ÒËai¢ ŒEß¿ëã¹ßKþ⪟V©¦›ú«jckoÚ‡µ¢óT·þ¤+YlêN¨¿k\úKm©¬ÅÌ.sënïôÌýà¬øEKê«­{ú›í-;òZöĺšÓ¢qÔþø¨>¿k¾’I&¥I$’JRI$’˜ZÒúËC‹ áë· 8fØà;vÖl}~O=~¬w¨ZæÁôgÔƒÞ½¾íßÕY-À¨Óu˦\÷ ¼?ÕfÖëþb"º”oAnˆÄ´5³Ô.uwèußoó3þ›Òô¤çÛ ü’ô§ó£þ-P¯¦TÝg9ì ;qtMõ·_¶÷7ù·úŠ×¥d²q®÷ 0ê}ºÄ:^ßÍ÷{¡Whâ–Ô—Ðo´}ºØiÕû€nÍ®>ží®ú~ßÏPû-;Óq"eÞ«A2÷mnßÍCk.uAãæ¾ucßP1-ÖXëô\ïûm#VWæâ<ñͬ<ç{R¨÷*¹ö ìMµ¶–Zm,IÎÜãü§¹=Ü·â?ꘕXÌ©ÅÍ$’#T®å¿ÿTÄ4½­jÿÿÕôÑŠá?¥~ Î½Ïç%öWmÛë< O FÑýdmÎýÃøzAÇ÷Hû¿½%!û5¿éßøy§8Ï$þ™àIÇ?›ý”]ÎÓØuøiÿI ç%„ <¬’Yˆç¸¸ß`†ƒi¬m÷,ªµ mêÔ‰†eû\{´ÕK™þgó_õµ»½Ð}Žü;ÿirWbu+2³Òs¯¦±oé릶“êmoçX×ÿ‚ôÿEu{—nÖ?IÔº‹ˆ$]GPÒýlúH.Äêa»ŸÖ ÿqµßÌ}*Û·ù)îÒ\±mÝÍëgR$טôý“þj©éû¿K‘Õæ5Ü̯uÿ7göÒSè‰/7u?UÄ—äg9À k™p’{nwîÿQ@³ê;y²×È“!¾ÇîÿÌÒSèÙ^ÙF§o?Êæ¬ËXXÿWž‰"²ûÆßlû¶îõÒzŸ£\s[þ/¹Þ‘yÛá·ùM¯üoL}c¾ÈäÓãþ¿AÃz×ÕtxëÓÅZü¾OWûBŠXXΡ…Egq6Hݺÿé·~çèÕ“×ú@ÝÔ±™¾±ÿ\•oú‰®ÖŸÌ“vÑîúNú Þ?üÈq#ÛX8Á‘¹T*«ÁìÝß[wŸõŸêã>—SÅùZÃÿRä7}oú²Ó¨ÒªK¿êTÏ©qí²¯¸ÿäQšßª=ŸWãÿ‘I ×O« ÇÛAþ­v‘ÿF´L_¬3©ä2œ }b ¼–XÈ‚× ¾­Lcøýô&ªÝWúü•Ü!Ò7þ¦X_üžRSÿÙÿí$Photoshop 3.08BIMZ%G‰ 8BIM%ÿ Ð.œ—ÍͨvYökÜÇ8BIM:± printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXTHP Officejet Pro L7500 Series8BIM;²printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHH8BIM&?€8BIM 8BIM8BIMó 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM8BIMMd screenshot-3dnullboundsObjcRct1Top longLeftlongBtomlongdRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongdRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM8BIM РnàÎ@´ÿØÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀn "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?õT’I%)$²2jǯ}„êv±­ç8ðÊØ>“’‰­ÙÙeu1ÖXàÆ4Kœã2¹<ê~²õìÛnèÝIÝ*œOÐ:‹&Ç=ö‡5Íýæ[³Òwé?ÒzÍ®˜ö^öäf,;ªÇZÃÙïÿK‘ü¯æéÿþžîk/®?êÿHëý]”Œ‡cd×mØ1¨Õðÿ£êïD€4Üõìg]‚?Øã%ŸC¯ÐÿëÔÏýæ±?ìÏñ¢Þ:¾ÿ¬À?êp–—Õï­gªb_nN;j»*ÜG¶‡úÌq¤Ô×ÙQ-ªÍ¿§ßüßóUú‹PuŒ@Þé$ì~¤­üÔÃ’ÑIJ Y$.1$x y“þ5+:eôû~Dî½i Æ¥gùžoßÿ¥*]3º¶æ=å®i ˆ'èÎç{w~ïç"ÑÔ0ò,ôé³sà˜‚4ô€ýä†HBBüÔqdÌ%]ëG˜§?üeC…ý? ¦°»Í;ú…;?’‰ûKëûC·têFݰ™õ'oP¹ÌÙìÙìý&ÿð{Mö\`ç´ýgi!ýÀ}úŸÝp-ÿ¤ºWác>±Yi ß s†¼k´û’f,ˆ/;]¸X÷Ó»ÜïÝú))çÖμžiiåÍuú@Cºslú÷ÔhyeßWsôüêØ÷´ÿUϦ¥Ô·­ag©a5ÜgC»é#$§ÿÇ"†=ÑzgÃÑ÷ç±#þ4:+t~PaîKþ]ŠÅëYéé9LÅ8ödXêýWl€K½6øþpOÇŽy%ÃÅ%³ÉGŠFƒ?Ƨՙ‡³)ŸÖ¨ßlrÕéŸ\z7Tevb:Ã]¶ú sš¾ZÝ¥›½O¥m~튈úÿ…ùØ—æ åsV®&VR«©Q^ÑapšÝÀµÞ“æ7}5ÛSòrÙ± ɵèuù¿Ed9ŒY B\GwÿÐõT•Ge^Š-p’fkOFE–—o®ÚKHÔ ‡cÛ·ù))žFP¨Š˜ßW!âk¤$^÷‚¥ŸŸgùž¥ÞJ8ø®cý|‡z¹.º!¬ü üÆ~ÿøKƒôñp²òÿh VÕ•úÃYcóv4±ÎuNÉþuØîc1êöâ×ïþsÙé«Í¿8‰-Ëih›#wè¶Ô}WoöƒO±¨‰¤zù"PœH3‰ãÛ‚_,CÂâú§YÉèëTÄev]FMA¬´VEŸe¡ûÚÇW»Ùk¿=t,~eõ×¹ùåö ÜËI$l63mNöþo¹rýfŠÝõs¯Õsßeg;qpk‰¦·k}lM"…ØP6jœ&ÿŒ¿¬ôÑ]•c`ׂí+»ì™-f§Hey.úQbT®T,øÝ¿fÍ'YJ·ZÏÍ\OPcpú®Et¿urH–†èFñ_™ùŠþv.E=¦ulk”,uîÞÙiÝú¥;,Ûô-÷×ûþÿðh4®º$]›z_üw:Ó]úZzvù->̦˜içÜÇ{Qþ8zu‹‹“E×·h>>µ nßí,.‹õBÊ-wVºªïÙ¹‚dºÏÝö»k”±òœ[–úp[qœÉ­sk‡ï6ߢí‰R¯ÅíYþ;ò‡Óè­wõo#òÐõcüt]âÑÀŽçåíl†—쟲}7ý-p©7åm¤ÒZ*a%ÀKšÏÐû¶¨W—Ð[~3ì¯ÜZÚ«m{^àÖ›=ÔÙ¿ÚÔ”5}«êß×Võš³m¿˜õàÕ{ŸEßid5öº£¶š6ß‹éúwÕúOÒ­¬~¯‡•_«ŽãeaÅ¥ÀG¸Fæû¶ýˆÿuÒóq²}bÜz¨v={+iÇåä»Ðs½¶zŽvïÖjßVÖÛc™m~ö¶ÖU.€~†Í襕¦ïBØûu_ºï¸z¶Óàï¹W¡†Ý®Íâ=71›Ú@úOky ¿ô¾‰­áÒZ]öf‡éú;vkþþˆì êŸm£ù_ræ>´t<î©Ôiê3‹Ã…0ë™mïvÿsþ;é·`uB\`“í)ík›C쮳e¡¥Ì«pis€–×¼û[¹ÞÔ”äb¿˜™EÔTF3Mín„Þ×d±»‹=»Ûqÿë*Ñf h}ÇŽmsí®°÷ýÖ1›œïä¡õ ]‹}6¹õƵœê ônÚ?7)¾‡þ…)eg[FU4²£km0ëû}Û?5®oò¾’t¤t6uüú­ˆPÑ]½:œå»ÚçÖìÚÒK€tÅvÒöìüßzä¾²¾Ö}JúËcmypÊÇ,°Àxø_IõíÜï宽ÝF:ÂkC­ÅϘ"Á®­§Û±ôïý'ïì\^,·êgÖ'eŽ×åc:Ö’æ{ð‹«ÝNö=ÿ™º¿Ñ I#R¸zhùÿE}97±C¨}š†Éq°‡º}•¼Zïæ´ý"?_4?.ü~›”ÜŒC¶úè ³Ñe¯V¼j«ÿDßÑÕíõŸô,XyiæjìL“ÿH5,|‹±®eô8²ÆAØÌ;lnj5-M×oØ’t­JúNe˜'*¼{½fXÇØòáQëÑþ“ô¿öÚ«~ü[™ëWed±Ðǰ±ñ»Úíþª×£ªuœ¼[²² –ãŠk¬õ-®==•Üì_CôMu6æS»Öw¡oó^ûfmõä´dö<TC½RÖ†Ùô^ó»ô¶5Ïú C1/H‰o#Ñ 3¿Ñ@êÙ§«›0›ÓÛS¾Ï½Ö¶v’YµönÝ¿nÐííú ÷JéPR-5–âŠus«_;ìkXö¹®õ¬pþkéúlýõ›ÐjËÈêm¯¶Œs­{×8V}¶6¶>÷Ù»jºìÌ®—˜ã‡k\úÿ:Êšø'Ƭ–Ù^ý¿á6(ýœbQ߆@Ë‹¾¿¢ØÁÀqk[\O =Çø¥Çm?µ]Mž­Œw‡j?KúÏÚé?ô•þgÒ^†¼ËüU;*ʺëêp$c ßa.7îs½ÝôZ»P>´³ Ö7iÛ`in¾®ÿ{»èz{QöÌ=6cÕƒ$Á™ .ÂÉÍéÙÉkñ……®p}ŽVSŸwè™]­±¬c·¶¿ ôJZ÷}©Ô6dxÎÿ[û?Esÿ×b\>!gõOØå»¥õ2+iÖXöçÛ, .cM{±ýí²»_¾¯äV•x=Uî-}7RÒZMƒ=î$±¤5Û}ðŸÍÛÿnÿ8µ'?ýv%=Cýv¥ÃâÅýSö"èÕgSSêËmœ‡6Ëo¸’!í–×NÍ»©ïý³“üõÖþä¨9[Ï­ôcN9þÊY?ÏQýoîK¯ÐþI»^¯ÿÒôóf0ivá´rA'ˆðþ²bì]»‹À2]NßÞDôjýÆó<xLqèp ÖÒ €Gýõ%52N·ÚÍÍd³ùÀéÚNçVæëî{]Vÿì(ÓÓŸUn¶ÆWkÁ63y†½§eÕ»_nËF­»æ]S»¸˜seß½ôÞ©Óƒ…^mô:ŠË.êÁhŽÕ_[Çzv»ÿ § bGoWýò„ú$³3¦VÇÛÏ Ùth·þ¡Û—õ»þª}dÇmµÒ×çcÖë¬qôØ}\&=Ö½‚Ç5µ;ùÏjî…†éÝEn–ƒ oÜö¬‘Óº¥k¦çR-ÿ-¦Ús7¶‹šwÔæYüålwÓMKâY1ÔÛmMÊÆ¸ÖH·<‡þ©«Ý[ÛúJÝþì—@3\ ºÀì^çÿ¿ÔÍÛÿgñ·w¯‘16îõþ†ÏfÔÿøÝ}NÚÖ}…Û;öŒ­Ÿ¥±ŸhÚÍÉ)ñZsz­w`S–Æa䈾€ïk¾‡2Ïø¾ú43U¯Å-cZMn¶àçw¶¦¿m{jÜë?9ÿ¤^Ùÿ§Ôü«oý»wþ–Sgø»úŸ]o¦¼Ê­V¶ßýº×êÖÛöYé»ù½ÿA%>=FoØjgرYNK¥}öXlõ Çé*º—Pʽîþj—·ù¯Ñþ“ùÛ+ïɰ¼ìx“aÞãûߣöì^ÐÅÏÔÒIwO’NâM×’\8óÿOùIÇø»úœ7GOó¿ô×ë<îý7¹ÈÆBQÒC¯šxUèò¿â›s¨ëÁ ³gé;_ùŽnÕÚ éÖÖðAÝ…`2µÅþÖþÎRéÿVz7DÇÉoGÅ8§$7ÕôžíÇfïOk®u›6oz#)Èjìà€ º’ÝA÷nú{Yþ¾¢2‘‘2–¤£ª6¹ŒÛeŽk‹\æ8Œ+?GÓþSv~ÿóV+˜˜Í×zVî‚ÂÚ}2 89Ïÿ¾*®fCšIãd¸Ã©—kvèïäú›ó…:™y{Xÿ¶´=ÃÜçTCHw»ÒsŸ³þ‡ÐMS{ìØÓ>“'ú¡I”ÔÃ,cZb$4´U«éïe­°ædY·–9ÌÚ¬ÖÖÕq%)WÉþzër°ƒ{A}nŸ¢FŸÖ¢?aAÿÓôñö©á‘-ñÐ…ÿÌ]™ýw¢úµ~ø×PgD…µžÓó )z÷í¤nï*Ùÿ£e>Îé°ÿÁ;ôwîþEm?hÿ¬+­Z{Û¯T]n5µ¹®{[„<"ì÷[è£DåH"Å$<,o«ßÒz¯þùê¥o 6éÛ{ ˜çÒ±ÅÀ“Ú­ü}nªïúê§õqÌvGU,ppûPÕ¤üÕ^ D…bÝ´’I©$’IJI$’RƵøÖ5á®k„óµ¤y»E–k†ØPk›¸NcÚîÝgÑk½?{V¦YŒkæ·Möïh>u¤²kn6½§ØÀã¸cÁíŽõ=û¿;cÒWTÕãÑö£SØÆÕ£ƒÆ]Ž~“·ô$7Ãý*¾3pËw ë-ñÞØÐnñýÒ²˜üM¬²«1žA¡ìÅq‚ÝÅßFÍÛ½ÞÄí¿hsmÇØß~ß²XÑ®Öþ“é7u_ëüÚKª31 }d“ooÏó’SYØX•gm4³ÒËai¢ ŒEß¿ëã¹ßKþ⪟V©¦›ú«jckoÚ‡µ¢óT·þ¤+YlêN¨¿k\úKm©¬ÅÌ.sënïôÌýà¬øEKê«­{ú›í-;òZöĺšÓ¢qÔþø¨>¿k¾’I&¥I$’JRI$’˜ZÒúËC‹ áë· 8fØà;vÖl}~O=~¬w¨ZæÁôgÔƒÞ½¾íßÕY-À¨Óu˦\÷ ¼?ÕfÖëþb"º”oAnˆÄ´5³Ô.uwèußoó3þ›Òô¤çÛ ü’ô§ó£þ-P¯¦TÝg9ì ;qtMõ·_¶÷7ù·úŠ×¥d²q®÷ 0ê}ºÄ:^ßÍ÷{¡Whâ–Ô—Ðo´}ºØiÕû€nÍ®>ží®ú~ßÏPû-;Óq"eÞ«A2÷mnßÍCk.uAãæ¾ucßP1-ÖXëô\ïûm#VWæâ<ñͬ<ç{R¨÷*¹ö ìMµ¶–Zm,IÎÜãü§¹=Ü·â?ꘕXÌ©ÅÍ$’#T®å¿ÿTÄ4½­jÿÿÕôÑŠá?¥~ Î½Ïç%öWmÛë< O FÑýdmÎýÃøzAÇ÷Hû¿½%!û5¿éßøy§8Ï$þ™àIÇ?›ý”]ÎÓØuøiÿI ç%„ <¬’Yˆç¸¸ß`†ƒi¬m÷,ªµ mêÔ‰†eû\{´ÕK™þgó_õµ»½Ð}Žü;ÿirWbu+2³Òs¯¦±oé릶“êmoçX×ÿ‚ôÿEu{—nÖ?IÔº‹ˆ$]GPÒýlúH.Äêa»ŸÖ ÿqµßÌ}*Û·ù)îÒ\±mÝÍëgR$טôý“þj©éû¿K‘Õæ5Ü̯uÿ7göÒSè‰/7u?UÄ—äg9À k™p’{nwîÿQ@³ê;y²×È“!¾ÇîÿÌÒSèÙ^ÙF§o?Êæ¬ËXXÿWž‰"²ûÆßlû¶îõÒzŸ£\s[þ/¹Þ‘yÛá·ùM¯üoL}c¾ÈäÓãþ¿AÃz×ÕtxëÓÅZü¾OWûBŠXXΡ…Egq6Hݺÿé·~çèÕ“×ú@ÝÔ±™¾±ÿ\•oú‰®ÖŸÌ“vÑîúNú Þ?üÈq#ÛX8Á‘¹T*«ÁìÝß[wŸõŸêã>—SÅùZÃÿRä7}oú²Ó¨ÒªK¿êTÏ©qí²¯¸ÿäQšßª=ŸWãÿ‘I ×O« ÇÛAþ­v‘ÿF´L_¬3©ä2œ }b ¼–XÈ‚× ¾­Lcøýô&ªÝWúü•Ü!Ò7þ¦X_üžRSÿÙ8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMÿá §http://ns.adobe.com/xap/1.0/ ÿîAdobed@ÿÛ„      ÿÀdÿÝAÿÄå     !1AQ"aq2#3 ‘±ÑBr’²Ò$t´¡ÁRCS“4DTUu7‚ƒÓ”%5ðb¢s³ÃÔE•WáÂc£d„Ä&vVâãeµFf'G8!1AQðaq‘¡"±ÁÑ2áBRr‚’3ñb¢²ÂS$Ò#Cs4TcâÿÚ ?ïåPPPPPPPPÔê}FÖ 5³Ä‰Ý¡áÚ>Ô•¹ð™Lã;±ùqãz«’¥2¨ˆmj+­Êp±òPîßÒqÐò3jï¼ÿšEWØ•@+FúK<==`üÛﱈWâ>ho¤OÃ4‹s3™È—þ#‡àj ú@¼/8@;Þc7ò¹Šš÷ìÑ bxåð¹,€:¡‹ù…9úìP|axe~ž±`…ÿ„Sퟬ¶…¨ÇŠ¿RHK]eÛ>EÍJ? ÅÄCgÛºõsi;~Ïô¼Dþ3‚€p5Õ~–¾g©[UÐ{ 30•ö Øß»U»¶ôÁH¿g+#Šá ˜Ìáå[ºåaÉ¿g)ö×ÁQ 3ƒÌžÇPÂ`ƒØoïPÐPè€(€(€/@@                      ÿÐïåPPPPPPPâ’O¹@G{§p'ËŠÕðE9;â‰[§Äìì>ØéÝ›¿&ôÚl§7#ð "3*–Ú[å!çœm.-µ6鸶¯ðw,Â2žªÒúÔßM‰ìÞkÚâavrŒ1ÓDÞÊî®õ´Ó¹>¼ID¹w¢Û™@vòc¶÷ýŠ­S`C{ç_Ø$;ÑMêýÆ[Ÿ²„*€M¡kŠ “Ò é'™Èúš¿+§=Cƒ~ù°7,kvó13So®Í†îßÜ,/íì«'Ê…!}vÅ„¼vA¯•ÆËGº¶e4"Ò6q²<ŠIdPKÑ¿„hä$ ÂäU}ÛJú© =07O*þB4ÐmÉy¿‘’ë~m)?ZÆ€ÎNg2ݹyœƒ~mžOâ¬P q÷¦óˆoxg£‘ÙÊÉËE¾³´‚7X:· Z/TwlqæFbhô´«]|ë“)®°ïÙþ–’¯ÆQ "ø¡ñïÖÕð97X>þ´šebõ ÆTø›~FÉë|îsøØYF£4˜ì:ÃyïweÎôÊAt˜²5%$„¥­Z½4ƒiF¬é‡jÕèiõˆø•ygOJ}%Äõ“ÆÌ(Å”u&lÍÖŒˆÇ9²ÕŒ„䀣FW˜$)°ÉOtq+¶­WômzˆÅʔƵîizd…s®§}iý–,Ìñ ãßn¡N¹)œÔhøÑ’ÉJk‹yÒ•¼Ì›©µ¨›]g䵎5+³UD|YrÏØÇn7Ä_Ž)½>ÆõB6CfÌÙ¹VVì9ÝÉ yE¶Ôâ›,4AcB€¥\l’j.?‡ƒÛËÛØÄ<.É  »Ÿáñ“Óo~ÌÉÆŸ…ùI\Æ4OܼįÏü¨â€UkÅ熇m§¬›x_³[®#ñÐ(Ⱦ&¼>M°Ö]¤¢{²‘Ûüu&€rÇë_G%$*?U¶ƒ ö[7ìs¨FzŸÓYýCÛ/“ØËCWØtÐ Q÷V×—në¹1roÙʘÂÿf€ULèKø3Uû,âOíÐ’ëKø%z h ”@—  ÐÐê÷(ÿÑïåPPPPPPPƒ:dh0åM%˜P¢4·¥Ì}a¶ši°Tµ­j %)äžTÂ2œ”bªÛ¢K6÷.r²šŠnN‰m9ãÕ}ÕŸëY£kH™¶zF¤IÝ© ‘Üv6SxÀ ÄCØd­ÎÆÀ‘ô2áíyOêÒ|GØÎ6·kß?åÉmÇ×<ËôÛµõ®}ÍÑþlÞÌ|ˆQw®ôÃc"5Æb11ƒ„„¶Ú …pH÷Ú|µÀ»vW¦ç7ªO7Ë–ã±jÜmEB ‰d¹£@XZ¨\ö€(€( .ÇañgÙmäþåi ²(‡ö¾Ú•~ó·q’/Û͈Êÿ€Js§==t’îÄÛΓÚW‹ˆ¯²Õ#¤](”“Ó=ªð=º°ð‰úüª·/ßAgeti:OiõTdþ*†ç… ®’\è¦Ó$öÛØûP r<øb’_F6ò/åe·ÿ£q4~Oo 2I'¥‘˜¿ð§µø²’ç€ +½¶¦¯ük(Ÿþª€I‘ôwxd|ÞÞÍÿð9©†ßÆ-t£[ëß%/wÄ÷Ë6¡ÿ¼ŒºÛGG#!hÇïÞ£ã’ëHei™Ž„–›_1 ˜BéBΤŽÀxŽ4 £§gwÓ“Öž£ÄÉóŒ”äœÈ´ô€ño•Íæ–’²¾_¡ª÷Óèöp ¢åÍ—.v!Nú<Óψ½ÜäW[[NÁÈG‹-µ¶áJ”Û‹ UÊA"à€E¬(ÕI©kô|gñ˜˜'‰ýËÂcÜ[Ð0èÆ²c4ãàµ%¾÷`UÞ¿»U®k,9v²¦\²ö ›à[«ë–‰Å&Aø¹ç“˜bN ™/=Eq×oñR˜²s¢QÕDñ§§“b¯1…¹~.´îGñRr{ÆO‘„eÖ1r—~3­¡õ;uÇp”D’M)‹–ן{ô·Ú9rìFfÔð7âKacÕ‹Ú=nÚp -פ= ÜCŽ%Ù©•óÜS¸¥8…GAmdÝtÛQ¼¼H¡Á—‹Å+ÔÝ“=[«6ÎáÜ :Ćۗ=‹”-i |ÙZ/§P µÀ5*MS›!C9ÿ~4ÆAY'&tã-)O¿ ¼ô‰€¥Rd‰Ž†Ijì‚õÖ9e%*R”’oTQK—OüN›‹7^]Á…þÈÞ.£nøÛÍx>že§CÂ\sÓv*)Xç%·šŸ©eez¸«‰[cçI>ª{=;ÈXS›éö‹Èè§Œd>àz'Ó™ìÌÄupeEeÇc³mM8¥›-Ù!Ĭl;m¯-þ¢§.þ‘·£>(qndœÿeí¶øÈâ£á߉Èb!ÆT6¤=imHuÆdjÔ´­Â²¡ÅÂ(ÝU9Óìiÿw—Z“\kÓëöû2)ë¶JB]ܾ ¢î&30™zVw)ÆXe¨ì£@gBRR½”^öìí¬U/éÇé+$èÒå…?¯¡{ý÷Bwƒ¼öKfå=^Þ7†˜SSŽT·Zn3šu<áçzI¶Ž R…^-RígÍ˨´óma‡§—&^WOr-)øø,ÞÍcÔ·PUíµ< h³!Ä´ …!J è7ø}µ‰*R¼¹w-´!~¢t‡vÌk솮 l‡ ¶ê3¦n;!%2”R×-I*JìR´»äO¢¤‹\²®ÒeMÄ3/¦ÝF…~ûÓíÏݼÜDÔý–ªJˆ®mÊÑ!ݵ˜l"àIO×»t¸¬«7çb'µî®+Éû( 0€ßZSvýÚ ~È9\.ÒY¿–ún€­# ŽSí#Ëè©#ì5¼œ”ŠÉ¼7.BÓøªƒ;‡pG±¹2¬ÍO’År€^‹Ôž£B·sêæoƒËËÍOØv€Xo­=cg亯»‘nËeåþÛ†€X‹â+¯°­ÝºÍ»Û·`97—øÄÐ(þ,üJFGY·ÀìæºÛ¿ŽÙ 'o~ |Cõ[«›S§Ù®¸ç±¬çz2òQ£AyöÄxëu:Rôu§Š’¸4óí,çQ÷Fçê–ÓÁxÝQ2=*y§ÌÍmí¿",÷–ÌBÊP§9-D +»gÓJ€ÕÒ¾µõtx&Ü]kÌäØ‘Ô ~ÑÝYˆ¹$Ee¶“+ÔÅÅ&:R!%”ÜZÇË@ÿÒïåPPPPPPP Û»vöÈÁÎÜ›§*Î t·I%J_6Ú œqjôP„‚¥^¶x>÷uZ³)=ž·¹-­à~+Š·Ã[w.KLW*-íî!û_rõ®Kî¤ãdí®šFpHÛ'|è““ÐBš™¸tŸƒpˆ`éOö¥ #»s‹³å1vøV§}á+«(o¯]ÌßÕ¢ÄãÆ»æRW8„áic{eºW=PÙõ«…ÖD!¼t†ÛBZm¦Êi% JE’àì¯4ñuyô©ø6þòºý™õ•ÔtŠ€(€(€(€(€(€(€(]ÀÆJV&l|D…EÈ<€˜Ò¤ ¡Z…Î¥%vá'½Æ£h#w¦u­R”ÌlNÞi€R”JuוY›•b൭{+þ)*•Ž/n\Ýäd¹Ç1ΤrPþ]¬B¤ó`ERÒ€ïĘˆS«ÔOkd \ Mœ²¯®ƒrçúÜ­Êúä'pc"ÁJBUÈÏó‚µ%%HP)IºU¨_Ê,l;*6k7^ñÝOÈn=ŠÞ—š†yªß/àÝŠÌ“F Œ•*IJœn€H½í]ï,—­ÏâÒ´ZkZV¸åÌiq*ã’ÑZm36¤þ­1´6›™¼,IYÖàŸhY›";O©km%¢¾Q ¸ƒpà Ÿ/–°ß—zz_†¸vú)‘’Zs§«ÚLé~W©d¸Ò§¹is»2R²drPm)[­!^˜Êu ðº‡msoá—9žÛßÌ ½Ý¯n”m¶)-„nwÎE HŠåÔ’êL…'@*ÉZ’Ü8ãtÖ÷Sœ ¬‰>Kêk‡”êÓfš.:’uYZBˆ=·±ª°•MxÖ|æ^vøŒØ“Œ=•”ò§;‘sDìŒb½0â”6°°êt¨qÙI®ß™yDx.Ý+™A/ŽËì´Ý)N³ÌyGî+žcÆÞáÕ‰Bp•Æü.u~ÓުƩáµdgžºá!­ØÙLó‹>±ãO±®ÉÞao㋨@lÝA6ì¸àq$ôåÐéôôbzeZb¹5_ |í DÞ˜—2˜oYйþ•a HEÒÓ¼ÎYJTÛ¢Úü¾J–¨—G·0Dœ_S”^!H‡•biè±âO*ˆâR©(y`­¤ªÁ-¥\/ÁcÌm)U¥¿ÙË•QYN˜òÏ—*×½ØÆa¦½Ù/eF”1$­nòÂÃm…5,›%7º’8šÖâ/«1««7ø\\Üc%*¶ö-ïr[^Ibð*•»ãA™îDªdÙŠÒ©!ÇyäkXPJB’Âü¾Ov¯+±Œ”v¶»Óö·Â\œ%8¥¦)Ë=‰¤èºd…I[€EÄ»šu|¸lr’àm’òŠœ(I jM‚J¸“ÀI6w†fºXјá8$«ù”˜H.=̈û RRâ›!/Ñ&è=žKʽ*˜ú°óTCÚ -:Ã/ /2‡SæZB‡ìÐ /í­¹*ýç‘~ÞlVWøÉ4röÅpÝÍ—Y=¥Xè§ì·@&IéGK¦™]8ÚïƒÛ¯ ÿÕP ¹^z6ýë¤Aëöß}†ÅŒç…Ÿ.ß_Döy¿i¸ãì&€H“àÿÃ$ C½Ûˆ¿ð,-Ÿ­ËZhü^d’OJ"3à'düI"€MsÀO…‡§6|…¬°ÿêèI_G—†9-í¬Ì+ör3Sx{ÜÇ@cb¾ŽˆmÜ´\öÕÏï­«›‚T`å±y°Ô†JÒR­*:ȺI€GÜÝ$Çmœû;zg_úÔÙȾ!By¬‹9YBÙiEÙnC–…8ú[{H>r6íðúãT«×ô·/i•¡7tÿ¢›_ntCpôì‹»NT îÉÏ8Ñš#eͼBÃioRCÊÒt[²÷­ChÿÓïåPPPPPP vÐçPz‚éôkœÜœ¶w4鋵¶Ž5ì–VU®ŒÍÇÚ·BŸIjº>]å—xé=-FÆS–‚Þß¡fÞHÑã¼Âß «Å)a¯zOr^—’Ú2¶§MóÙüì£uq²[¢.í=•|ÜFÚ »Z€fXÙrT8qKA)íÞã<ÎÕ›O†à“VÞ›÷îôý˜n‚é•Y§Ãy}Ë·Åã5îÁ{–ÿâžù?ÃBtsäÕïWí§Öä¾õTàÛûÊêGöd?ÖW@nçUz­°z)±ó]Fê^àkmm,Qßr.¡n©N: †še–’·qÅ”$“ï@iDO¥oÁD«s:‹•„Oô¿”üë 6§¢$ú)â/—Êt{|FݬàmœÜ`Ĉ’¢©à¢Ñr<¦Úp%zU¥Zt›å­>zÐA´@—z¸  =è7ì       -©´/á¡*÷À4¨-qOlV¾„ýªLŠ"¡„ ´l6MËa $ŸzÖ¨©%¥càžØQϾÒ>ÕuèÌÈaqži.0ât8Ñø%>kPëÛXg-®"Ž‘düs¢Þõ—¢”%¶ÊÕ‚ÃÉ÷—ÇýeIKX8 ‡CMºð@Sªun-:­:KŠU¬£zã˜çœÓ|¤´€nž͸TÉ4>ãÙ¸}Ñg“mÞæÂt4RB€ RÒ«`R¡é%@(Ec¹n7"ã%TÌü?s‡š·F¹S<šÚ°,«g0PrsW§à©ÒÊÈ6¶¡ñBÆÄñ«¤°æ0UãL*++b2a¶¦Õ!´­™-%ð¢ÐHJÊxú#êÔƒ &Ø o®+p¢*bCs"Z[ˆ¨BÏa&ÆÔ̪      ÚÝm¤©n--¡ëZ€é<(“nˆ†Ò1”Æ/àdb«Þyöë#³q}WØÊ+°{WixM†¯ƒ-•{Î'íÕ\$³L¶¸ï.‡ZWÁq*÷ˆ5RÕ.\TT\ ƒÙÆ€„7ž><Œžr{…Ô¿Lvåºãh»²­ERAW§kŸ °W[oM6Å%Zó¼ŸO4ÞµXL’wô»m{ùë‘\‰ÿÔïåPPPPP€‡÷÷TW„É1±öN$o.§dÙCÛ©p·FÂ~ZBAîñÒ{Ãpú-¤ž#³åÞR¯AñD¾ˆ¼e¶OìÛ_Z]ÑÍœ®;Ì]©«6c®ëÙ²+íMì{Ø]éÿKÛÛ3fîíÏ•Vòê^m°ÞkwIl!,³}B5‹‘*bn£é8¥*«æ>jøˆ«6cðìG(-¯íMýi½û2I"x-VdîÜ—Ä»,äö/³õcÍ·i-`r¡K¿&¿z€Õ.³ÿ •÷ª  ßßÞWR?³!þ²º³ô¿ÿÿÎ÷7Žì¿@pËÃ6×éÆëéïVr½Qév ô÷¦{g+’ÜýXT¬›Y¥f'´Û˜¼v‰I†\¤›!L/R5©ÏE57¨­9mÊ<òoo2YÓ`¶›º–ÌåÍŸnÃuþ„{üêuÀ_·iã¯þ|j;£±³»¯sí©Ûîvq GuÜ·«öÓšä²Ä7_ŽÂ]uWqNØZÍÀ¿£§Ë^sËïñ7ø_›œ×‰I¨$´¥Ž•\õ*x±Îª‡®óž „ศð0·V•ºÍÉÕ¹¨ÊT^ꊑ¿Z£/eõÏ'iá¦õ o¾Ä‰=;–f+ìH9T´YiÐ#´†Ã-ÇÑ¡$‘eq"ƹž_û¢pác..WÂÄÓOâU¨ä©¥ê”pxcÌv<Ûö]©ñ—!À]M.#á8µ(ü*ê’ñ6õÅ(ʯ<2uC³ç¢D1/›Ø¹ n÷D¼|L^ÐnTgÕ0åê£-¹AIi æ[FƒÛ·ÿú)A;s±%}J1Vë]i¸½~êTŒªÝ(Õgÿ#Ž7lñ1—¦r•×GG¢špÆMøá¦žö­…Ƚoƒ.~Þ·µ2iÏe§LÇdñn½ žã#ëmIl¼óí¶ú“ÍJÒ–J”´zIJ½Ü–ï\·j6åªnI¦â´8KD£‹Z¤ž4^œJÝýŸ;vîÞw¡ð¡Ê2JoâFâr‹Ó¹Ax\[šJ2ð¶_Åõãde·›{2;Ž¢D™ò1xü’Ý‹Ê~lP¢ã!”¾©(B‚¶’•t“Â÷á?rð¼Wð!Z·%…†xWRÛJ¥Z`S‰ý•Çðü âä•c9F’¬a*RZ´ü7š¬c7(×r[»sÏÞ­£³àãTîÚÆEÈf'eTðBÝž]îñšK6"éeJRÉ6¸Md½Çñ78›–8xƶ£'*âåV£e‚ÆXç‘©Ãùg o‚·Åqr.ÎQ‚…*”4ꜵsÉ%+GŠØÿ[UÜf!‘ÄfbwÌT|®eØñL¸ØÆ^}ØÊT—›>ŠPë*Z{8ùí§g÷_ +p¹(Í'ÊOMc uKT¶*¦«×‘Ó¿û‹ë–árÛÓ7§-2¸Ôc?^mÆK ç†ê×’ët8ìoÒ¿’…ìFM¬b²ÒaÈ~ÅÕ0…ÈèR“~uì:t¬ú*«ôjq½HJ.ÕχV›‹uQÎ9{ÙlÃy^ötç.·!/˜ƒž•(©ªjÂ’i?w=õŽhz£ª›(î7ö²r/“?¾bÈ×.3E÷¢7,·É[Ͷ ‹iV®Ê®„<ó„çeIêM¬ž–â«%SKqUªOcÜrí¾9p«‰pZR¦¨ëQ“Ó¸WZƒ– T¦[—‹ëLòвÛ„±'ž™LPäE¬6`<Ò Ã˜ ‹ ôˆOi‚Ïîo/» \W<0Iº©,$骖ª¼šã†f×û7Íl\¹Z¬¥'£(Ê’J´––ôøS—ŠžÞÆHX,î;qã"æ1.8ì E…¼Ë‘×è(¡AM<”8’’RA®ÇÄCˆ·Æ2Ë»ë8oû÷½mÛ± 5-N›qiz N㜞)ÈHó«·_[pƒÍ.Ä|×\¶Iö³)·.Ý´ff#Íiýj£áì¼áÅì,¯\YN]¬Ío~nV¾Oqd}ÉNýjÆøçn?•{ ‹‹âW%ÚÅúŸ½·/we‘ïKwò«¼«ƒ–vaùQuæRÊäûX ÏX:„ʶ÷®]*BIïKíù¬Rò//’£±ÊŒ±ó~5ev}§K|(õ{=Õ=§¹”‰Y}£5˜g*ž ”Ë̇[[£³ZMÒHí°=µðïßMÃùg£cN:©ö]ZisaÔ}oö—š^óÊö2‹Ó]ø'9#îÏ–Ü_§ÇýV5pøº½lìqyõûnÝù|ßéÒ×#aÑ?ÿÕïåPPPPPXÚ¡ºܽEÜ;Ã5?§Ý[äñî˜ÛÓ¨òçböùû¦ZOÁ—:ÝŒ¤éoµÒ> ô<7–Úám.'Ž÷eî[XNç;ûÿ›9}U´â_ãîqŽ5ïÏ8Ûæ_j|Ù/­¸ìžmîžã$Aáù™ ›Æ^ãܳÜ/ä²³=)3$+ÒZpJ¢€-\ï0ó;ÜtÔ®Q(áÇB;¢¶síoVop<¾4…[xÊOIï“åMƒø;<µ nžÐ;òk÷¨ Rë?ò _zª ðmýåu#û2ë+ 'ß~GŠŽ‰fzPÞæöF{óâeq•1ÞYL¨EE}°¤(¶°¢ I¸íãk9ð>.éã½,Û=Jè¶oc?”s7+ ¸öϬ’þAh ‰ªV=å-h@ A'ÑOÚ¦mÍ$öVdEim­¾£`¾ÏÛËÂn¨ûË~ï<.7¾"³Ž‹‡Ûì¼!Ça§Ì‚ê} (©J %°Â7°¤c¥%¸³u7ÉŽ“í¸y©yŒ|üÖ5‰ÏH•+nEȼÞ)re¶¶Þº_F¥…’GÁ¿7®5¯ ±jãœ%4ž¯§ðë4ÔžŒ«‹{«Cs÷?rÄm\¹¸¨¥7îéƒN1×ßL*b¯£›5Üvú&IÇa6ËûR#?ÄÁX*R–”¥\Ô˜è)X"Æ«/Û¼,­Æ 6£oá,~­S¯ÞN)¦]~ëã£vwc¥Jw•æéõã« }Ÿ¬q¨–:)†0§÷.znä“.Ø›ÎT†ÜÈDw˜ŸŠ iB]X)(!Z•ªäÖþrÛƒnäÝ×%/ˆÚsRŠqŽÍ4Iµ¦”ulØÿìo©ÇM›Q²£8»I5nJãNz±ÕVÔhÓZtªdcËèŽ2f„Vèˈhʯ7¹Zb:þZ{!õHqÕ°T›%‚)ôEV¶í¸[·ñ%¦3×/u¹ÏV­NN5‹¯Ù¦-~ò»nüï|z´+vé©FÕ´œt¤¥IÆzªñböÛé›[[pIÈãsÏ«ô‰SXÚïÆ´1"bË®)©|®ò¥ ®Âöì­žɾNëp¸þ4ƒQ¤\p•5ÑcDÞÓGÌqKŽá•»–×ÅJ1w¦œ£EXjÑZ$›Ó‰îæéþS%Ÿ‘¹¶¦ï‘³2ù8Åçf+2Û••)L,!ï€ó\Å„,_±I¨ã<žåËÒ½bóµ)ÅFtJZ”kG»$›J]ÃË|öÕžpÜU…~Ü&çäá¦M%%XçQjŽ`ÑKè®aY©Ûk–VÜéëûC·²VËråÎi™×!¤8¥¤²âƒ×S… Y°Ç—í˲¹rŹü>ÂÜ)Då% Y?ªñÅ´ë¨ôvÿxXV#Ä_‡Äâ•û—bªã7(¶’ñEiÂ)ªiÅâ9ó"ÊKg¨XŒnåmï—"ÍF=èJuø“£÷FÊÒøy!m¢SpMõy+~~EqÊücqh½r7hÖ*jP”±®)èʘTæð¿º­[|-Û–\¯pú£©I(ÎÖé§K¤”®7ª´¢¦¥?4Y[ˆçsG;&.~nèÇ`Ä2™‰ÈÌKÇ–ä®a”:úÜ (ümT³äaq/ˆ¾ e9Æ:|JW5UJUÆ+\ž n'ÿ«³ð+ðŸÌ;P³)êð|88â¡Jëqн¥gJ‰ÉèÞV>+fÀï8\ÉÚÛ"fÖ‘&ÃÆ$·ß\E¥Å%µ¥±ÝaÔ’RGek¿Û·»QNøv>ROLbë†+ÝÁæ6îëS»ÄN—!ñ¸˜ÞN:£©¦ªðrñ­”j©æJÝ;ÁgvÖׇÜy]åSë\®c®¥¶ÜuKj:]¥:âYB‚Ü:ˆkÐyW {‡á¡nôõÍV¯›m*¼]†¯LO3ç¼wÆñ’»ÃÛøpt‰U¤”¤ã \Ÿ‹LpU5Ñ9@@@@@@@@@@@@réÈw>¨mt^Ú°Qþ=Ñ_dÿm%N÷ýÏî£åß¿#^&×Üþó!ý˜çI³»Wo@Ü›¯µa­¦Ó¹§)¦ž9c”(RBݳ­Å0”…!m]´és›éØCÇq<}«ó˜N㯅Uü=9°×­4õxc§…Áðü5ÛP…ÉF+ë¼5×_>4ø{cUU-[ Dé–#Œ?4ÄÙ‘÷*àî\ƒ“Ú‘%˜nÄŠ´)˜Ñß}·™C…û8…¨Ý!+7–Ú@KZt‚nMŽ· çükº£+5É,ZqQÂ5Š®>ÉÖU­(°6x%àãaI\Ó(ÆUÅIËin˜$Ҋ™×špQ¶®7wG›žÈºQ’ÚHeAøHgZÞÔP¡è§È¤-ðUoM.ì¯ÎÛ¶Ô"°p–[6}èóòám«1¸¦œžqÝžÞÎÞc£Gl¾ù„ê³—¾œ¶8_ÿ”¯ÿ¹N¼u¿û~¶}/ö§ sïú‘·»³å·éñÿU^CË«ÖÏOÅ{Ý~ÁÛ·~[7útŸÆ5ÈØtOÿÖïåPPPPe&C1YzL‡ÑL”ø„®q;-¼cot®ï–Õo%õ÷ ^»æE–áclþµÍêÞèïžß«¼öÖÙÀìì.?nmŒL|.Øn>2t¡÷$ùT¥•)D•$“^Šâ®ñWÛ²rœ³o—bÙ’;|?nÄ»iF+b¬`  ‡~M~õª]gþA+ïU@A¾ ÿ¼®£ðÿ»bqÿæW@lÿ‰[OÂïLÜêžôÃ峘F²°ñKƒ†K+•̘V°$:Ê4§A¿¥5 ¬}4^²úŠÁòWãWö2T»L§„÷mÍÃoØÞ}x˜†ß9TܦÁëÖæÊÞ1½Åàïøª€Xcénð^í¹›¯qFÿÀL?ôi]®ÏÒ·à•û_©9& ò9·ò£ìF"€Xô¡ø&‘`:¶¶oü.(³€]ô’x)‘kuÃÍÿ…ƒ‘G×¼Zq¤#Á„€4x€Ûˆ'Èêe·øñŨ׎ÿO §Ä6ÍýÜÍŽ‘@*Gñ±á"Q³>!v:Éì¾U”þ1ì^¥Û‘×Í„»üça'ñœôo~fXÅë~Ávý–ÜXßÛ~€Xg­zÊg«»)à{ 3øå}‡è6z«ÒùýHÚÏ“ØÌBWØxÐ ìoM&ÝÛva¤_³—>:þÂͬÖ[#ä2qÿ›yµ}‚h ä©+’ ¤žÂ ÅUPPPPR (€(€(€(€(€â÷Ò\‰Øþ¥l,šØZqÙ ‘£J±Ð§ã¾µ¸Ýû5¸“o5}cý¸â!ð/[¯‰I:s4—¨ùÇï›2wmNž-u×éG6a\8þÍ}'Qá4• º® øŽÊl2©6H)7OÂ{H§Ä §&ص’‘¤Ý6óŽø¬hÚ^“û£Q¬h:ùôb¼¹{O«’t+’7Rí½´AJ”|à(_߯ޏwTøè%š‚¯k>¥û&Û&òrõÁ»>[qþŸõXÕåøº½lôW½×ì»wå³§Iüc\‡Dÿ×ïåPPPP íϺ6þÏÁÏÜ{Ÿ- „Æ£™3!%ZP‘{Ä©J<”‚TxMgáx[¼]ÅjÌ\¥,’å‚ç0q{›–è~mÆÇÇa˜¬3;(:Ó 4„!JR‘`ÀÊó.NM¶êÙèIQd^¨$(€( ù5ûÔ©uŸù¯½Uø6þòº‘ý™õ•Ð ¯¥ü_ÁäáçÞ8/²ýó£Ó¹Ý^67¨Iއ˜ù˜ä||·2H:㩇“)•!%€Ú]B› Ô må ðñÞ†Aë#4ü8‹ß;ÒЙžQ[M—TÂW ( êSm‚»ÛK!É!µ³ñ='•‚ÃÆÝ¯ÄÅ:¥,夸%&y˜™«RJÒKiŒ¸ZU¸8Q©+ E¥R5¦)çv¿@Ûm¯¹tnxaMÈŽä—[iò‹ÉXSŒ©*.?ÎJô”„$ñà*•%I;Kltj~Þƒ'uî'1yI[ièñ_Ze"knOSËReÖÒÒ›T;úa6V¢ Ô“•ÑŸObÜ“ª’%ËÇ0ó‰‹är<¥)M”—"„0©° E“Á|ÛÝ-H¶–`Œô¥8¶º²öm €µ0•3W)$G»­¬k:’5›$((iWCTyî‘tö{h`ðFo:w©MdeÃa¸ŒÄŽ…¡Å-çÞ–IoZ“¥>‰Ô¾j ’ú±f{Qº«lÖÖ1ÖÝÆä6‡žeÍ-ªx7V”´‹kíôj ‚ßEv‹ìäÕª˜ÇÜÇÃïM÷V!ÆÃ¼ÆQÌ™è¤ò®…ñZµ$r6¡4Æ‚“~ö¶Bj#cz¹‹hMýœƒ ³ù±ëaO-¹N%ÙRôùn€§Â*ZVåÑ™ÃT†th½G…;%öj4Hn;òüÕA++ù4&úRBV …º©(kFS#:dw¹Êz(‚â˜YmE<{.(îSƒî5œ )Äpš_nvI¢9S$µnÍ-?`ÐíîÊÍ‹YÜ›VìÑ)äý…P ïÍ÷Æ6óÏÇ#°·‘”°å¾ÏV:É :£õ+yÅJEõ7™È õÇo,Ÿ_zI³¡ÎÞž#·æ¨¹öñÙM£Ó輬ÄIÁÍmk\÷ò,K1ÙRH@KCZÕ«AMˆÒžŸø¾ê'Hq=FÇx¹ÞøœöëÆg²û#e9›Ê:‰‘6ò’‰&DÓ9)Ž·Hl–;5)7àø}]WêwT°r{©û?¾ÝÃÏÂ#æz{ó•/³(¸/©e!Z{vÚ€ëNîݨڨïR^…Ó ~lùÎYe)UŠœuKBŸtšÏjÚ’mºœMù[iETC‡Ôg!÷!&æâºX”ägy©iД¬¶²…+Jô­*ÒxÙ@öYþV;ÍWÇÍl]æhÞòÒHV=«ƒb5(U~Uo%qïr+åß.5'ÞxýCSòœå¾}ýžò¡¾—?ÿ÷u)Î?Ô?—¿è+äyq‡øëÿêSåò~ù{þ‚àß …p{ËIýª”{É\zû%c|CòÁ‘õ >بùG¼|úÜʽ·ý Oþïòê>R[Ñ?? ϸ¨olqí‰%?Q—O”—1?= ϸº7ž(öµ!>úí*£ågÌJã¡ÎV7–Êdñgö©òÓ-ó¶ùÊý²Âøÿ¿µQòÓ=kqPÞCûó£ßijŸ-2~rÞþâèÝx3üè}µýª—žâWoyuOcô“¬ûq{[¨P˜Ìâ‹èú‚Ûy‡GcŒº…8?±Y¸yq<õÚn2[QŠõÎôtÜ£\èÔ~ (©ƒv1sðQ˜tî ´kµÜ~o®¾ã˜ü£ÊßÔyˆ~Ž §ä·†ïG¿—QÿªþŸÍ×ýG؈ÿGò·õ"c»ôoø~p~kÔÏù ¦¡ÏÆ@«¯Ý¾oúŸÒŠ?"ò·õWiŠ~Œ—Ío›êžæCD”…„Æt\y.¤Ôÿö¾iæ¿*ü¿—MUEö˜Cè¯Ù\æÔ®±n…0 ¬&,•'Êùd|UŸïŸ4¦a ö—t¾Ó ý éÎè–ÉÇl=‘Q1T·uÕ—“!Ó©Ù¸®+qg‰'ìW–â8‹œEÇrãr“ͳÑZ³ 0P‚¢BfìùmÇú|ÕcWCË«ÖÍ.+ÞëöÝ»òÙ¿Ó¤þ1®FâÿÐïåPPPÂßÝEÛý=ÆÇ•—çÍÉå^î{klcÑÏÉefèLJqZ¿t£d zKRSƺ]å·xé¸ÃÇIáGíIìæÚòF—ÇÛá œ±“Â1XÊOr\’ÚGûc§›ƒvçqýBëX3_xÙ½;Žç?·Üºµpç[á>¡¥$|#Ñâ¼Î× ið¼ºðÇ„îó%½ÑÍç-ÆÀ\â.+üW¼½Øg|ïíOù¶lÞOiN›ñ½ëϲª    tè°™*”òY ¸l•(öÙ *>à¦uo fFš”Eq–ÚŠ]vÉRüˆâ@÷è{Á·÷•ÔìȬ®€Bú\—|$©µ€PæøÛéPa9· ÔUʈDßÏô_}í¼^K`tÌìy2 ”io©ÞzTØR HZ¬î\Ï;â¸+ñËEAí'‡\]–ÕÙê!ßcðkPH‚IQ°²Ô;~­yw9,ÍÅÄ\®c÷ÒÞ9›n1 ©ÇÓî$¨„Ü$~7«j’GG‡Æë'T=ö^Õé{+’Êa3Y°ŠQv9£‰ )VAM¢R{}ÊÄå=‡^0…1BbºuÒ ¦9ÙŽJŒ“ÊRe­ÓÜ—¯…ïÖX\’ŠQ„¡áÌ×íË·6|,öV.:VF+Qd:ÀCŒ¡Þ(:IÕÎ ‘òºiV¨×›Á$4fbà ÖáŒ[ˆ@Y6âH±µüÕ…æBf?ªØQ¹p•?üZ†MqļœjdÈl:é<Õ¡ Qm± y©6ËJr“xƒ†›•‰~ãz+Od^!¨Ð‹ÒN“ÝÝH piRSéÛVGnIT›vµº »§¥øÜÙÚYF3ŽÍõ¦K!B(Jb”PBŽ«êòÖ)2×,è#ǶÃ<Õòg¨·s ©¡{y/eV%'¸Ó”èËGk‚Žpx‚דðêuóÜ-®¡ÀMüYüª•r¥µJÚ.òÒ¤ÎI% Ø Û¬«5‰êÛ/¥*Q–Ö”I²¨±&.¬Øųgl<”< ìŒ|ƒïb1¹DIˆ –²‘!´übRu%+²¸Zý—ª³-(Å7~苳gtýŒÓÈÙ™,“9‰›x¥ `Ïa*Co ©%m«JˆV‚¸j½…A)"nè6èëŽñ“èNº€Öàg.Üót%1Z‘rr 1/”·£¦BôÃd+Írj²šŠ«/ z¶}Ý Ý}Ù›±ìsùQvžV:ñn—XÞFI¤JQeѸ·š¦ÔÔÕQK°ptfäxÙõh¿µ"H|±V:fN;Ò£1"¶¤´ê™aøêYB› ¯MþT›¤ïXŒ¥¢èêŽ_5 ¦ò£[XÈô©îfÓÂõ…¼4e3˜S’£·’%¹¹8ŒGjCQ#ÌL":Û[´ãE)+å6yZutyÖ™ímïç§y« É$š­)»b§§ÅÜO]0Úù핱0gtn—÷ž{Û©Èn)¸òž+ukBRãà:¤6‚’åÕÉì¬ÉQ%ÌkÉÕ·½òþíéR*¥I \TÔýÊ ¨^€/BBô"§œ/BOm@Z„P((¥ <µ=·»Jµ*ìál2çÜû"¹üO¾uø/Óë•®nnϖܧÇýV5u¸º½lçq^÷_°víß–Íþ'ñr6ÿÑïQÉüÆgñGíМ ÷|ãï2~ÝAËÿvÏ>óíÐÐ÷^DûÑÏÛ )9À ½U’ÿ7?n€ðç˜AI~ èªC̶FÃQ¹°¹í ÝRß¹ ‰‚Žîo¹º÷frO«ö¶ÝC‰a/Ê(RÊuWÒÛiIR´‚£Ø‘s]-àíñnôþ¨c)R®•¥Û&ÝÍøÿa~Iû›â¯ÿ‚ÿ4}¥:çÿ#÷/ùÖ;ü½OÉðŸû òOØ>kˆÿþhûCçC|ÿä~åÿ:Çÿ—§Éð¿û òOØOÍqà¿Íh|èoŸüÜ¿çXÿòôù>ÿa~IûÍqà¿Íh|èoŸüÜ¿çXÿòôù>ÿa~IûÍqà¿Íh|èoŸüÜ¿çXÿòôù>ÿa~IûÍqà¿Íh|èoŸüÜ¿çXÿòôù>ÿa~IûÍqà¿ÍhØGˆØnÎÌ`[é_Pgnl©›Ãã°ÆSQžu°ói\Ô¸˜þ›jzU¿ÛŽVãwæ,«r«NRÒÝ­YóOÏ4ÎVþ ×8æ”j·¯tšóÕΣõ//PÇô9ŠmIV™;ƒ-Œˆ“.†’±õEë Ï,àí/?䌥éQFhñüUÏw†’_Í(¯[Þ$î‰=Eê{›—ïÕ;¬hS0ñæ½k-¶<Ö°®W§Â“–ú­>¶t,JëýH¥ÐëêFoÒË%øžãÊŒúãHg}mõ6ûgJ’u> vp5«&ÒÀÙ‚¬’8¥ºñx /E¡nx«Ìµ™ËÖVTÂú³p¡é•ZÕŠ7Lò³Ƨ׹®IÎI]üªÐ¯ÆI­ˆAg¼Õ”hðñûÿ7?qšÌ<ÜU:šÑÔ•ŸD¦TÙìóÑÚ‹f9ÅK1îæc$ÛΘ›_ ûHp†UË~öEÿ9¿cÊ/_U„uÓ…¸:¶=¶7§Pw?fÀÁ`"JÊ­ifLÁ%–BJÈS¡õÜkÖ§È_ó#C…¥©OgúS»rû 7…ÀÊŸŒå)ù8çæ.;‰ui)q2P±ãµíÍIUbí½-â0Yê'-Ä©;n mÄ„=,|ÿ-Wª®(£L…Ø[K½99©Ñ‰;.¥ºê º–˜¹Yâ”-µ›ùý#sWr©VK[gÆÝÉ)jvD— ­ðÛ©Ió€Ž>ýU²į 8(¬‰¹!¶¨D}tÈ«AÑÔÎ{£;/´©MÌ’ë+J””´[±ãz7ì­Åv$E71œ…µò™¨qqfr2Êmä?)E·ã­55Ë&ÜM¸žÏ-`â%\³Ãñ åQUγ±? Áçúk·³Ñ0Ò]‘‰ZÝlsÒ”¸„ˆ´’ N«¨rxÖ§Ã3^ãϪŒœ}”¯”è¶•ŒºëÍSN'5ÛÕ‰}¾¡té\èì${­grƒñ”ª¾‚¿¸­ýÒÓÁ}$x{¬çåÇmU]4%Æ…c~ô‘@%]-Ë vVâ_g¹®"ªñ ¥[³¢n%A]7Ý …p!•?Ô¬ÌTc“!¾°ç9–ÜCa瓵öæ7Œ‘7šüÓ›…!…bä™ÏHr;8ôC yE´)Ò¢@m%-¯ŠÊEФöŠ+Òά—ÂÛ­4¬ËŠêGN¤2Î1÷¤<†TÒP&CéŽÂ åA §U’w jŸ*Ò¼¹wòöé]+’©˜7¯MÕ.LEÂu¥E/!×—Ä·ÌaôÇq or µŽÁbz·Æ+^\¹`UðÖ“£Ž%Œ¶óéÞcxéø™Îr›Ýjq) ¥å¶´…Ý*CkJ×{…q=¶NüáZ¼ºùr  jt¤s§ywÚ®œªÒû«Év:·à%µ—ÀCN:«'U”8Ñj|{›z9tv¢«„´öS’öúwss]9ÇË sŠˆö5a¹ªR])mJh:Ó}\ ¾›Ø¥W¶š¯ÍÊ´¯,}°•ÁÛ¥iNKÚŠÙÊtÞC2¤wÒÄhimoK|Ha­&i¤ÚÇèö‘òVÞIöôû ×ò}46V=ü×*lE”=˜æ® ¥ò±èØ !`êÝ¢÷SææòåËÚmïåË•El\-•*N0'8€¢ã,¾â¡ZÐF¤Ù^‰¸íáSós­0‚Þ.™Š=ŽIá§òj~j|Å~FÙAÙXÓÙ&J~ª?&Ÿ7-È‘†÷Ýì(;"ì›$~äÔüÜ·"ì¶vLÔ<·B¡–í+±ô»-Eîóêk©%Wé*Þ4_e>ׂå¼ÀÌõ£œCØ$g#䟂™yD´à‰©È[©æ¸HsB ‚-î “x¥n;0UöñW-²ÓéônñSÛó÷k­3cå3ð„¼T—#–âÊ´dÊZZ+PsƒdT€“b‰U´c$¶WÓO_$R´Iïåê9×o‡ž.x¡6ü4ÕI#Ž©›o.‹ÿ¹]ýUuÓá?ñ8ŽˆmOþEž™ešïâŸÅDN•îü^ÜìÆíc- ÂÝÔ”šÓ&«‚RÆ”¥O–yì/8¹fÏ›NÏ> Âj7.G?ùr¸7rÜ&–3”|5¬¼&æu'¨Ké¼LNãÉcûÖÌDÓye+Tœko ¦,”2”žceý-¹ÆéÖ’ã^q¼i½4¹åõcø±Iýª-¦T«Öj•ݧë?Û樃¬°áŒN;zã$àw¶£¹›§$ÁÄ¿ r’ˆM¤<Ú@°IH_ €RUv©^eŽç(­SQ{iÞ¹ð(¤ÝÚðߥºEËuLMãÕéqö¦Oplqù9x]¯ẏ›£6î&kO®?-l!e.¨ÇP)PôE%¤ÖÅ%Òéí2ÛŽ¦–×Z~ág© á¡d#ïG"µ¸°¬b¤eÙÄ"CÒŒìµÃÇòÖòRµjq_G·²“©f›â¦®Ê­7$¤ðM9/º³ë[Ä~Ö›´ág· †ßËK ØøX)\õNZÚhã–ùi/6\mIÖ²‹Zê° ”Õ)Nnœ«^eJöS< š^©-‰¼v`ôöÖ»±&¯ºðûÃoâ÷>ߙ߰ù–yÐdؤP¤©'±IRJHóŠ™EÇ>nÇŠî(zˆó§ÆýHëÑÿøÎÿäñ«¥ÅáðÿûF‡ ÿ“{ðdºÏü‚_Þª¹gB„àßûÊêGöd?ÖW@/ý$IÄ+¡{M9øíKž¢à}aäëmh Ë )>QªÆ±Ý÷–Çê.[mµ‚ÙrpKD\\ix¹ñÒ¦1o = i42椨+Jqu:hÖ4úÕ³ØÚ;±æáÅn €2"Æh–¸úHÁ[Ö§S—qQ‘ _.Ðó¸~¸¬õÄÆÕGlœ¶B<ɈjJ€êÑ¢ÂÖ¹ã[6xûÖ}É4C³fއø(é†K19Ô܆JC$+¶£4:ÙÖ© ºUp¢ˆí¯9çžwvOLE·òò¬Mpñm9­9WóŽ™32˜Ø2µ¦Á)-)´yÂT‚orxûÕ—Ëx‰kœÍvÿÅ–£Z Γt'Ü WD­M£éÞ“‡Úz€!QT¥1.¬~ÕNô‘œ$‰Xá=$°…6d”)F°@¶× :Õ¬oIàì¨n`[B²o¥­-¶ô]\ÆÖ¢ì54%º¢ÔS&Ym(( ºE‡ä쬸4Σ’w+ öQo®j—3 ·œÊGï˜üs’£kSAÔ©´h±R}5&ö¸½VN…Å(ì½ÙýA-GɧB¾ÂÍSZú)ö3vÞÇm丿Ø5)¦Gĉ}͇¼šJTî×Ê6•ü¨® û×™Úh;Þ6åD~ îÅ–ÊãIaEGpiZ;B’xƒTq¡eG‘PÑakiõ7ÓŒä©øhg&¯FÈ6ã©QIq® ¸Ùàµ_·È*$ç|SïMÉ! -µöÃM‡”‚‚ÌWšäµ–æ‚@~Ä6¥‚ÐUô[Ѷ¥ê=èü͛ݸY{Ê,ÙØØO¼û°àÉj*Üå²¥6‚ã ¤8 ó_Ë@}ýS0Y ·‰YûrŒv2lí¸ú I–ÔÕ2¥µ<”šá¤ = gZwfñÂl¬zrÛçb㊞ –†Ë‰o“Ù'^ž"éeA>uY=¤VÏ ÁÜ⧢ݰïiz_e^ÃëѵR­±ÿÎÒ“:ÙÓÌ|”ù¹„Fk*<%²êšmן’û‘ÚC-­iRÉ[+#€ºRT.nÃȸ¹Ê1Œk©7…ZI$ÛxnkµÍ8uZºR™ÓkiSž©®§¸ÌÚ}Mé†àrv+mçqJgÌY¦”Ë-:Ìòž[Í"à”—Q)pé‘CiHIZ@Ò8p¨j´æåë ¿:§¨n»Ò¸äF¢¥säe´ìY«,Hq§ZrCaXu¥’%-$- mÂâô®K•(£è]5Ä„¼Mïö×èèÃ"ÔÞ•a&©°ryˆñ”b9‚ì!©ÂiL²ûÿ›•jUˆl¡Éô}M¯s¯UU-ø–Œœ}¡=^“ ÑÝ·ƒÜ¸ÝÏfQs1.¸ü(Ï*:š v‚²µˆÉ}c””©Ò”€”Že6«Ï^Æõ>ý®¯œ«Uîîå’ÃndƒšÖ1Sn’íãÌMT‘ƒÕkû_Ñ‹Jw+¤ú*ë§Â?òœGD?¶'ÿ"ÏL¿²ÍmñáOuõo©›[©Û;?‹ÃäpQâ¢L,»/­·‚÷9…ŽJUtžÅjðþoä—x®"7­É'g]Ž«#ïßíßû§ÁþÞò‹þWÆÙ¹r\¨àス2^-»³Ù¿ýwê/TvÇPz¯Ôì.eŒøòH_o‘‡ƒýÞ+E¤¤¡÷FþrkRç‘qœO·îÅÑì® ›»Á»·|›Éïy•p7m»’¬¥ªRŽS•[Ër¦ÅC7f܉¼ðM·•D¦±Ùt¶™+ŠyoÛ¨y:T¤(I÷…{ËL”–i§Ù‰ùÉ,)½5Ú¨63½0ÂnÆæàžöY-Ìz¼Æ—R˜¤ãB“ ÷’ZSÉS!]:„ªÉÖ•i ÖÌzœ–—%ÎÖú­´®$´ö`ðËjN©>¿fB63£L~#ra_Ìn¼MË·cíGU5èåqq1â;‹1Z¶™ Ü R¸•s.Mç¶JO¦4§6Ìh_SRR[+‡Þu}âžåé^+så½k'%œÇ%öqleñ\a§§ ,ÌÏæÆuÁËpªü¥ -&ËÕahÚÞ÷^ºi¯g«iXøb¢²I®¦±ôr¨×O‡í¬q‘ LÊgò²1(†ÎÚËdSø¶`¸ã4„Xu%N¯WxiÒ t“d¦Ö”ÛuÛµíxR©öã5mºâžÍÍ´Û]iu*eR_ÁbŽÂÆT©,ãZ "L„£š¾$•(2ÛM‚IìB‘Øueh0:rOÎ/]É_3‡¿þºœ_þøÿ´hpïüÍïÁý‘‡ÖoäþõUÊ:àÛûÊêGöd?ÖW@+}%¡…t l‰ ‡XùÄÀsZQ (h•ÀÛݬW Ì–$ŽIDÎxƦ˜÷l¥ÅD¥jhÞþ‰ ÖŽ>jÐÉ< Åq]Ô|{ïæ&ÂǤä#!õ8ÖAjZÞãÀ¤©GÒ÷í[ö;‘m¶EéÁäÚy¢b¯HZxØù½l'S /OS¦”O vŸ-U—GO¼ ukí¾‘ä19ÝÀÔl²2Ž®$eO†#JR]w#߯'çüi‘¥JX‹~'šéÖRÞŸºöÍfs%{3¸ãÌUÙTd¹K@³–¹)'êVÏ”F²¢xí(äs+ÖX.ö†4jò¥ü‚O놽U¾T£pz†œ\FÆmLk(ˆ›0‘"r‰÷ʤÞùDcÖÐÿÅø—Þ[e°¬vÁÜÍ” O¿Ì6ú•Ž|œ[&7¯xÊêŽE–^+´°Ùm£Þd %BÄq¿×¬¼±/¨r]hÏf(›¶¡¤¨úN"|‹Ÿ®Ù¬ÖøiS"5¢ÞË‘f&lBõ|·ŸTWZKê} B5¥$›¥Û4X²Tª.m;«€'¿MþóÌ¿Ïã[LR¹Aõ…j93œ§-äñÐÞœâz…–šŒÎF6=ˆCLF¤D‰ p ö¥%J4­F­UO/àß*7_U°qb¥´c'²ú±®)‰P™ôšͺڼ ÚßZ·x2•ìÍž7Ë—ð5{=²²åfI{'‰‚f,>ÔiSPÛ¡@©$p½»/Y.q ¦çÂNPF nœæçHDH9,¹._–Ëy(ú…Ïj‡’±KˆŒUdmZòû·%¦*¬Ìw¢{Ñj+wŽu}—õ„2eÑX—gy²ü‹_Q˜«èžóãl.<[¶ù#ì¿Y>nÍ30OɸÈýFJÝ;èÿGÂd]ê–çÌm}ß¼¿‡{ ôWØiåµÌ~XPyÕ-§€ãƲؽju«5/yw âvgè§Ú8}—’ñŠÀµo'Ùi­Âˆ¨”¢ëYêGsqÆËd i7½ïW¸à߇#ìݵ…ÅGê:×ÛØË ¨¨hŸ ™‘g·d„óá¼—ÙR¬EÀZ ð=†â­gˆ¹bNVÝMuIQ÷3Û0»3UUO­:®ôG²:°_F5¶àÌ‚Œ[1"ÆgHnñáHeÏLëJÍ‹š¸¬€To](yçX§©¶ê–rÛÕ³q¤üªÃi¤Õ)“{+éÔë¼ÎÂt—líémOÅ=‘ftv“<ÅÊ.¸ˆèC ¥\J½Üd ÆÃ¶ükï6¿z.3£OR˜âë†Ú¶ÌÑàaTÝW?U:)&t¨v «˜nÑóU o ’6¶âfbÒùœÜ)øó ç¤GDe;ÝßR“t„!E:†¥訦‘n+JÁ{‡´WÅ«oñö’î"tÜ.3‰‰²sI‡ŒŒÔX©SЮ[I MÔe › –êêmÕæÌøÏä2YØÝÀÎÅG…B\vZ£¥:[Ò”†tßÑ= Tß@k¦OÞЙ1¹Ñ2q’W“<¢ØZÐ':$¿#ãËN4®à¥%*°6µGÖbà-./‡…èܹâIûݽáóI²¯w¿þ#üšÒÿSáZüˆÚÿOÿô¹ù˜|ÒlëÝïÿˆä?&Ÿêoü+_‘þŸÿésó3ÏšM‘ý{½ÿñ‡äÓýMÿ…kò!þž¿Ä¹ù˜|ÒlëÝïÿˆä?&Ÿêoü+_‘ôõþ%ÏÌÃæ“d^ïüG!ù4ÿSáZüˆ§¯ñ.~f4›#ú÷{ÿâ9ɧú›ÿ ×äCý=‰só0ù¤Ù×»ßÿÈ~M?ÔßøV¿"éëüKŸ™Ùý#FÝ”öèéóÏìýÞòRrÃ.‰™|No”’NJ+÷!IŠ]aHRGž·ìùí¹ÁXâìÂv—»¥(NßÜ’íjUMšW¼¢p›½Ã]”.<õ7(Ïï§é5ÿ¨j[ «ou[m?Ó½Ðù,Øy’0Y5öjƒ8¡%%_Á¼”,{µ‹‰òu(;Üþ5µ‹TÓvzÞQ’Ç™¸É[â£ð¦òyۗݖΉQžx0}õ#© @U†2º’¤Ü ±õÂ;J¾jfÝð½ ;Ž ™¸Í÷v0}´¼ÑQïôÛ]Â…”{j³UMŒœ]Qó­óí½Ö¥-Qp<Åü'F-„¬ûêMkÆÒFE~æñmõ##•o=?-·ðs׊e"*ÙÔâÖu©·"ÄÖ|2BíÙ:&»ç)©*{``J”—&$ýñ¤f‹ÎÔ¥*l/EúaÓŽ¬>ëÙÝ‘Ç*Cª.ÎÇg2”Wm ²ñ¸ó^±Jì-¶Ùµcƒ”Õy††öÊì.‹ï¬¶ÖÚ½;gq ;¨rLÇ‘~[EЀ¤¥e, ~=µ§vÒâUVFÛ7"ÚfF÷ñ÷T‹µ3+ŠV‰j‰+§BœAHl“èXÖN„‰àkjy3Pï/°W~2H¡ÄkØØû†·¬Ý©Žeì™ ix’l/Y8èêŠhÇk' –Ѩ[‡e`á–Eæ*€•žÞá]XƨÕi‰{©:0ø  ÿ>‘ÿDÝq¼ÅRFÅœ…m´HÛPÀ&Þ°ø±ë‡|Ñãýä-¤(ðoØ+ƒR›•ágs«eg{¾I+Ç·˜ZgÀžX/aÜ9fÇ€³ïöV·0=?¯‡W!ÕâJtïl´½¥®\,,A"Dd¡¦Ü9‹X(M¸èH…ïVòöÓ£7¼æ*vÞœÍ Þ-¹ß^›GlŽ>p«VKµø¬ìù<Ëc™ÓŽ7˜ËH̼–¡Ã§ ° p°§ævgv @èyˆ”®åL ƒhʉ¹äf%cÓ1R¶$<…4["é-4 ,AäÞ¸š9$úŠñ`¼IáZáÔ¥ê~)iêªSÜë'áÅÑ5‹'Ž›x—ÜÝ@…žÈ¡1ÛøœÆÝo!ReEDì{¯I™9©©‡ªR™S(uedX Lã¹áŒÞÔÚ]T—nÌ3à N²[¨9õ8¾ÊUóeZ‘ÞÓë¿\¶æ7¢Þß§—Èu‹Ìn²®FÆÆƒ'>$MBD(å PK©-!Iô‹º ¤¬Êº¡L2­q­$òéK§-¥/MÂÞ¥žÚŠì£}ìÝEñC¾zoÔ]猟²•Ø;g%:$,Ë.¶Úå:Þ%˜«²œu„µ'(·¦”„³Ø’Po‚nœõþÖ“+T®äñæZ\ŸO7`™—ñ‰¸¡µ.;z6w/LÜTYï¶„âšc'¥þXZe).JR” Ùº4„+…RäÚR¦ÎXôåÌù±&-5WË?E+ηdK½$ëöo¨›älŒ¾Í‰¶Ÿ…µœÊærI|dãdUö#²„s4:iÔ¤‚EmJ1ñ8ä¥EÔåW¢Q¥væcRj‰âè«Ö”—t²ØmâóÖ3!íPîë{qž „kÜüÖ7žºœ’Íìõ³ŸÅúýC³nü¾oôé?Œk–tvŸÿÕï!ó@$MÍâqòcCj4ɆÐ⬷~ñ?t|ö 3É÷h Dû´ýO©@Z$Ûj½·î3b£îJ<©/%L0¨é'–”IQ•é §ÓY¾‘€„úk¹†ÄÞÝO郛{>¨ ɹ»öTVqëZÆ7,³ß„j6Ôн$pié|ãüß Ãñ«:|+Ÿ~ߺÿ)Ó¥œ/,ÿ-ÄÞá^Uøû³÷—á•z*šaîs-=¡msP•ò]IC‰Ô/e§îHì"¼ÑÝù.¡âq]@ÂtòS+9]ÄšÆ<‡™*q8õ¡.0˜ÚùÅj ºN“e ð4”]Ø%IÙɼ-(ïq‹m¦õ}Ó‹+ôR<¦€v\~ê€Æ•6{ÄÙŒCcR[ç¾â[F·”'RˆQ å4½ö'zîížýÊç÷içr¯§˜[¾­:¸_²ôýCÏ@12LØÐ—fáK"-MIhÅ–­'K%'߀×α+ºö¼m1šÀåšU™’ÍÚy‘rÓÉ늽»³µ%87,šÌ¬íÆätÉ&žÆCÞöÜ]µÔN©ÅÆÌ”¬Rñ¸ó !Âóq-%ÝA•®ë UÇ¢IÜ+?ž!©M-[ZTÕÒaáøufª-éØžÎŽaGésãáß˽öÿã½Z#dù‹íÕ(MÞÑ:q»ºÃ²Jãÿ<*3ðþù8tG¢Ã©ÂnK1“·à-,—!¡.I}åXéBUÀƱÝ56ÛÚtSoô5Ñ·¥tftl«µŒû9YJK¶V“ÌmÀÑWI ã]¾Þ2ÊGc†»Æ©‘ï‰Îƒl8<÷Qž›6P“Ž9<«­¹xSTØJ E à’”u"ßV·ø8hŽ';Œ¾›é9õ³ðѧîVÜ ¹Òº]M‰Þû+´vžÑÇ`%îEIŽ2Òßi+\•Ìd¬¨©wÔ’¾Êñöø›WœÜ²FïÎ_áøÇì^u{¦2q˜é¸w„^í—e÷j´•>HR”.msµ8Ÿ?·ªÝŽÖ¹«Wrä'vgE>‡‹÷Ï@‹[7€àE­ù¼ÎôŽ¿ 5·Ê8µK²égm+1®@@@% ‚<ô büWáD6=qˆYÍgœ™'hí¸Ò#³2\çe"GB’ê ÞÆjzÇJæ›Ù78!wSÓLh›Ú¼PwWbZ_óv”tɪà:ÔÕ¼yêõSp»Ò¿[g«›”í³µó.¾ÖÝg7',ƒìz$¸Ë*”‡t©I€èø¥(-:MŽgîÊKg~ úýyx4žÞìשô`³#Í¡ã* ›ko9½6fYÍß›Âc3bp‡Zï9ÆŸÀ‘‘KŠPˆò©1«Ñ+C‡—V»ÿ-¥¶ºzdšRèU–ÜÖU"”«oV4éxQ/Ò-D$ÚTc†/e¥Ê»ù±F)I(¹n^ºSøwÓ⟦»G}oŸLÅæòÝ•#-#ÐÌyï°ÂÏx2’LC%µHï „¨):®.‚Ôª²­+ëíÃ}p-6£ÓJú;öô W¼ftX9ƒ˜Áîh2²™4Àƒ ‰K8ÐëÈFd¦#²Ìˆç¥ò£EË#…"h³ôežïy’Ó&°ôç—g°|í¾¹í½ñ¹}Ÿù»ÎÂÁdv|ÝÞÏš‡¨Ò 6ûqGÄ—Z“)¥*’””‘aI½1”ž )7×\:|5}!-RQN­¶—U;±¡ïN¹tÏewg¦<ÖìÄàîØXiXD‰¨Ïn:KiºÒÃ¥°—ЇQi:Ð= –”¥%¦µt]RiwjZ·V†+÷#jÞ©5LiÓßWºéÐ:×âK§Q}ñ€Z÷†ÙNâ@ŠÔ  5ˆ“‘/D^EبC2ž‹‡‘(Ç'Ò «J–Vk ÉVg6m{jÑ’JŽ–¼—Qµ0&ÇÉA…‘ˆ¾dIì7"+„©·RƒcÙpjÍQÐEÕ&eÔ%½aÅ•+0ä†C«‡”ŽôeF…÷HãW/Àùk«Á$×W­œþ)ãNqñ·~_7útŸÆ5ÉØtÿÖï Éáç "iN#/ÕÌ:HY‡µ°òËÊmal•i)Jȶ¤#·–€”O ^€eïv·L¬Ðv‹ˆ”ÈYÛTFÜIBREÑäoæ 5ÆFÄŒ™2%Çpã»ËHDèfc B’ÛL¥Óó¥ÇT…”ðMЉÔ8Åìøù8{z!3ÂßSˆ’àuÄ!n©M «[— I]DÀ“@5:›+1µêÑŒÛEÌšC§"R9ËáÊR.Ó× •&ÈÔøÄy@…º»1ݱº¶'S£u3§pYem½ÂÛLÁS±°ÙÇÓŠ[iY.ÒÒο‚5,פò?óV/ð/9Ç\?î[Çú£©v/7ÿ/vϲ„´Kî\¿†ZYµq×xÌ)IišØHK×(ŸDv‹p¯6wHydä±×ŽœcãæŦV{¯¡ÙSÎBЄeÃXGT¥¼…ú pMõüÇOusa%]\ÅeÒ§P9¦qÁÉ#ø4–Ü+_ñxù¨ Xóñÿ‡»@koYWÔØ½BéVWhl†·öØ„ûÍåñ(†aÊ}Ä Nt\¦™ÕËR 7òÐô•}Q‡ÔîªÀÞ»)¦0³2'âúŠWw'4]‡ ¾$šc°&Á&äñ4ÊkSÿ¯@húŒµnýСk ÉÉ:„(kë?t·¾Eèú†)¬f–Q·‘“î I‰Ö²ÖÔ?•,)L[ÎîP&ýHê_ölÖ 0~—NÏÿ›íÿÆzŒ1Vˆ°æÀdcÄŽôÄÂ^J"aõ¡n âT CaJìj«EíËK6s`u—nì}«ƒÂÁÜê‹2+¢VJDh’ÐKáÍFÇBu$ i!\+ËRšhÝ™·˜½‰ ¦'MÊóšmaÔµŒym:áV´“éà÷/ZKËk¤ÝVF«¹Ži×Ý,êÇÈàöÆk$2’ã8Ùeìk­!abÜ¢â»8ùj8n å·‹¨œÓÌÔ}¹?îG4ŒfâqïY‰rˆå¸ÐZË*ůçòWUˆƒ¨ÙÌíüC¸{=058Ê ‹HQrz¯ÎîÜ”ú-"À'_¤O¹]>Y~çÔ}æ¬ø»vðrF&?¥½AÈHe¨»Rzܽ-¬²BxùJ=úépþGÅJih}æ½Ï1±§Þï:³·ž:&V./ÐÈ/mh8Øø¬¶ëo¨S²Žòù.¹©¤j-©d¥)¿vö×Ò,ðÎÒør¶Òk3ËÝ¿O\e´Ö^¢ôyÃÞyÿe¶aknÈ’dacÂx¾Ó1ÞÄ4tê%Ø…q…y1ògBÀîØãá§Æñ#÷zEÔøn!KÙ¹Qé@Bxö‚k»°6WnK1¨ps¸ìn 9üj±r•&@j;€¤©¶øØ=hù´¥-)£7 ÓXg8Ø‹ âhFÑoQ¦„Ì68ÏL·•‘gÌ2Ò\yÔº½J{YH i*=ª÷¬–íU†Å'0ðþ ݉µ½ó·oðUžvt*É’±d§.Ûk :KX¨)SÉBÛ½Ñû‡BT;|¢´x…Gé¼²Õ#VmžÃèDI{Ô¼T›Ÿ<ÕÍÃ.ZØ»ÑÀ¥'A)€T8ð¯Çù”×ðÖG¯á¸XÆÖ­£“£Ý ³¤à7VðiŒ.zr²›b§x¥ËÈAÐê,°»ðQ±ã[>cæZl­§œÑàøW+’iÐ|øˆéÆ^ÞÛ‡jí,«¬I‰~]æô’ÚÛB›`éAX@KiH6±½É¡å,[zÚ£LËy[üÌæž|Æ©ìÿàrSœËâÙÜùI*,ÅõƒÊ%…¨Ø¯”G¤¯²±y¯íq™h§]Mÿ/ýÍðbá89TìÑÓ²væÈÞ> Û9æ3ð·<=¡¸&¹ô¾"ÌœÎGŸ©Ø¡H¾“Ä^뀷+V# f•—q×>%ùÊŽ5o†Ó©õ¸jPPPáì4v>ÓÛQJË;‚·¥H'»¶lìÕ©ÙJMÓèó–¥-v¶¥£Äš…‚ ÛS6. BeÁÄB…)ÓXŽÛnè ¥´¤ ·ö b«¶Tûr•·1†KQZ‚Ôƒžbb²´¸Ó V‹†Ð´%IO` Ø* µ‘ÙÛS1‘õÆ[lb²ynâö3Örá²ôŽå )/Fæ­\§ˆR/¤‚n8Ô%Jóæ*"+¥]3Sjm]=ÛªmQbÁ(8Ȥwh.¥è¬üŸÀeÄ¥h‰Pq­¶»p}k.Â3TÙŠí̱—éK3ù\Žs;Óm³™ÌæÊrùIب²”˜å¤¾ã©NÓ`¢~óT%LºKUú„­µÐ®‘í(Xè8NžaN/0îá‡1ÈL»(eÞqN.z¤-%Å>IùB­V°½€¥0¦â+w‹^’ôÃn¾‰XíÌ$–ÙŸÂÆFaig(´99°¤ ‰ i q=‹)öQªª<©N­Á6vÖ½{Ì\ŸF:Mš™™nší¬„´âÓƒL—ñ‘”àÆ¥¥°˜aEå%§€ŽÀ’@áE†\²ö.ŸråÚûL\§Dº[”^BC›#!“‰2 Ì´6ĵ1‘q×f'œ€ æC¡jøD8བ«ÊåÚŸ©vÖ\°¡)Ça˜Ì3;Iaˆí¥¦@²P„”Ø-ÕÔ%EBõA!@C{·å÷ö„Õ#W[Ë«ÖÎwïuŽí»òÙ¿Ó¤þ1®Fâÿ×îñP (+Q¹·šô¥ÐTG¹@ZR»{-@XR¼—áæ ;‡kàw:a#;3SÅ;kR>hQI›pƒÁV^îÙ{ym­Ç¶2Ø‚>ä"‡ÒÃzÑÏB’×Ô…¡Ç´V×Åσâ-߇½nJK«Û‘¯ÅðÑâlÎÔ²’k—¤jôOsMÜ}9ÂzâÈÜ»iOí½ÖÏaNK³åy>P 88[Òá]Ü8n2JßéΓ‡Ü¹â]™u~MÄÊÿ ~ü+ }èx_nc¦nÊÛ¹ՌޓX”þwÒÙÇL¹¶mM)}Ï_$¬¡e%e7µqN ¼Þ/ÊÐã8Èl¸ÙÔÚÐÃiRHì €"€PÖ|â€5Ÿ!ík<8ŽŸð½k÷¿áõh.C§;{òçMÚÐ$̘µ;&BÐJ–⸕«´šê„(8œñØØÍõ&W7e\ø”yÒ„L®žot)H^Ù˜•$ÙI²8­†Ê{½ÿÓS}ºh`XÇìÝÜÆ7,ÒöÖ@¸ûð‹M%’¢ „ÊÖF›ökO׬¶Ûƒ¨$n‘í¬ŒñfàÛÒ㱎irZvLe©¶ôRÛªôH%êÜì¨âî+–ÚfßçVl¿Tñø³™•g+tå³™qÉñç)M-¦’ive²R£¤Ý*±÷)ä>Yó²q“Å©ñ_ !Ô£læ›=§‰’¢ÜI”ìp¥v¯¦T‹ùojëñíõ›Õ”›O¢¥áûŽí¥M5]$•Œß]IÜÊkú·YS&¦d9‘•ÜRPÚÕÊa&ë¿ ñœOìøYn.UÇqгûâõ¿vÌ úÜ^±;B#9 ÝTÈnWŒq©¿/S-LZlP›•,¶UÀon<+Y~ÚŽÉ4ºŸþâN+ëÑô|ÈuBN2fG‘èâäÏ!è>™.ü&–PJA†«ñjñý»Gïºu›W?ÜÉJ-j²MV‹Ã]´kuè~™7 ÷‰)“ ;ŒuùûqMCy BÐÙfiOÂJIí¸×fþÒ|ÏŠšœêŽÒ½2,r"KL)Bé-)¿½r*ê-äG8Ç6‘kÖxïéÑÿGÛ©Ñ-̯ƇÚ]¥C#ÿ=üj>Ý4½ÌŸ‰èôO„{&0}çöê4½ÃâGz*bÉLþ~Ý4½ÄëŽôUÞ£HkðÓöéF5­ç½áƒØógü!öéF5ÇyW9£ØâOøBšY5L«Z?vŸ®)FHjOœ}z­@jzTÜyê@\PÇ¿@q@÷(h€òâ€ö€(ovü¾âþÐú¤jëp9uzÙÎâ½î±Ý·~[7útŸÆ5ÈØtOÿÐï§wý¿ÁcÇì,7ø"€´ãÛBÜq–†ÒVµ‹É¿½PØX”2Ö>K,Èa–]aô%Æ] )*{„TЊ—{„/è~¡%'Ë “þûT®ÇÿAcÝø±ö¨–Q¦£Î†–›ÒÙå /cä®=¹±&ëŽk˜ô,ZâÅÊíô¶Ã¯%{ŽL)qÐJ½'Øå9äO»^“ˆ9å0¹õøihoÿÎæ0} z£Öp¬ÿ•ó)Ãêߎµ÷áá’éqÓ.¢kÅï<g=Û8ù2Ím’œŠäWÚCÞ-‚ë‰QXô’MÇógtsë÷hòoV6F>\ˆ2ò›“e·Ð˜­!Ií²€±÷èm½¾öÞê}èØIR¤;nó¢ºÀ &Ü €hf³ç "n¢uŸkôÓqô÷mç‘!É=BÊ limi Á×è¶ü¥+±+sÐM¸“5+¼¥%.%@…&àtP¿Ö{Œ¾²U@G^ÍúÔßìØ?¬9@Sô³©)ð¢Ò–R7Î߸R‰<_íB¸«Esáø©Zl2ZŠ”ÒgØØ»u½‡ŒÏÌi§³Ùî*ŒÛHK**±ÐP6¹®‡•ñâï«s´Ò{N„¸D•H‹wǘÝÖWÌ:Ë(Ó‰½uÿpùd8HÆ‹ÎU(ØÄí¯0É „¤¹ç ï-«%S6æá•†–¶;³²£h)‹[–¢¤›¦ÂÖ5YAIQ£5›ò´ê‡Æ#}gr¸¼ÔÌþiùi‰&*£!A)l8¶äÜ!¦’„#Yí!>ýc¹ÃÂäiJ_/ó'!I¶øÁõ3kaòq]–¯[cžÇÉ—‡&*Õkuµ% q´­*q7= ð@o½7 æ¶8¸-MôšÒáçF†­2¦ÈÉÌJAà‡ý…UþVÌýè§Òaj† œæa@´¼´Õ´{T‡“õ ­Zóà8záW39ìò tg2( ¶%=aæá®ÕGåö~Â1´êv³è‹›3 ž¼É%ÙrvØSD$d€>a^;ÏíFß”U•éb­æt7Äfð™±¶Ë;†qŽòdÀ‚öc*¬v-‰óÙŠöJpBÚ%ˆ¨pºçÆ XqZEÔ9Ü;if•ZXòê\ç;ŒŽ©,2Mó³IñC¾Ñ)qáíݳ¸[Æ9C21ÙBVâljYv$̣̂ ³Öq;ËÁn&ë êPRVsÛ¼Ú«YUµü¿S®Çœj·¬3L×|:rqOuÞçÓú©-ÍW!鵜ãۖŸn­ó’6xƒµ±ÎÆZÔøs22Yw ' è ¡ô¥ ™,hjRJ™[Á!E3nî©5Ù³5«\½ìk°ÇrÖŠ-­Ó½×§ÝíSâ¢#‘]–×N²’cÆ…%R¥GÊbŒ2QT÷6+O‰d7ÇD¤ÑJx]GMc‡¥²•öEº®e5Ó°ÊøI$ÝS§ÿÕ;tõIŽ›'ŽÇd⸇¢å!Ç›ÖÔ…µ%¤º…%c‚J…ˆíke£Q:ª™–&aACÍ‚¥>kÐPªÂ‚r;~½((U­c±jTÔiDžó^8=åiC ûã±÷ _nšVâu=쫽Jþ’ðÿ¯·Q¥ RÞûO{Ü¿éoyÅýºiDë–÷ÚòoôÙƯíÓJ܆¹o}¤¡´\qÌBVë«ue÷µ¨¨Û‡”ÜÖ‡’™ÕàÛvñÞ:+¶9»Çn/íÿªÆ®·—W­œî/>¿PíÛ¿/›ý:Oãäl:'ÿÑì¿sÈã\ŒÃn1‹yæT¼z¤%­nò]J´«˜l½$j]Õo)áPÚJ4îåAÎgDÃå\ÂóÜŠûòf* RVòÔêc&;z´¡n!:ƒƒ±^ù²­:§‡8OĸŒû’\†ëFP©Š•©¦éu²VQq$ €}Ûi¨xÅõÿezÉʘtv §‚•‚p²¤-¨Žc !m—”èï‡änEÇVr­zpì)Lºý#îªX¥^J]:yá¿ltë©{·©w>çÌ/:Ð[g)–™+†KÉ=é1Yuå%\Õ‚°tE>zRÍ2O{¨oñM§* nÐzeÔLV§Ž”naŸÍÂæ¶Ü…ã’Ø ÂvJI qòÚ½í«‘—øYºCˆ‹¶ëöž6åÕ:_>„£eq^+2SéŠÂkòÔ•zq™VèÈo=æÜUcq;®F9ý¿’ë+šbG††ÃòeÇß1FèIUôöù«ƒrÜ­ÉÂJ6ŸJÍv{sŒâ¥TÕWCÈ•5Žû5BæŽîØÏ/ræÔ˜-&Rì¡ åƒÇ÷IXêPD[\¹q—» âäw¿:Ôo@lW3‹Ácäås›Çc!%*—9Òt6 MA.¹A|ìKŠ÷jÑÌVÛéÃ8ÌFvõ' ŒÞã¹ôón:\bnVL•%†f¸†Ö•µ •/YZ¬]ø(áuU¥0=ºá²¶NÙè߆þ§lÍiKê–#í<12LȲ$ãe*8”ÊqJh>”ê)HóV?‰\u'Y^INGzC!©ÆÊlé²U~.p;¸Ë4ù½¬–¶:#«|lE'tK…&Dœ@g¹’i»6¥s«ñà}Û×G„â®X†˜]œäÝ;]þÝÙꕸÉïi7ÛB0ÊjNS(â&È{ΨVúž Ö¦ÚTFÒ|•*h¨‘-$ûµÏã¡’Èøqé›{³0Ç:0™)1à@*/ʰ#]þå7¸—ïüuø ›åš—»±Ù±ûƒo¾Œ^µ™/©¦Rè%­>Š‚¼–¯'Å¥9ë=e¨¨ªù¾·¦)ìjñ¥„&à¥!•Ž)Pø$[°ƒ[¾WÆ]±z2[ N.ÜtºšÞëVR´› “c_ 8Y;Öcsz<½ÛZd$ÈAI÷«,£‰ƒ&c–} =åª8º £¶ßDÒÏ^»¶¿#^ ÷ ~eWì¯K1³¯‡n+8ãJï ¶ÚSN4â5¥agˆ"ö"Ü5ɳuA4ÖfŸû4éA¸®ž%eµ-è‹SM†šR£‚RØìBIìO¸8Voš[’ÊGƒ§a—ÛrYI[éŽÉBJus¥$¤qà8?6·òûHLÌô“¸bKž…ŒËÄÈ&:'±&>®z"¾‰,!Õ©hmÖÒ°•›ŽËT>"/g%‘eÁMe%üs3N\”cK©m,¥ãÃH)l+E•8HÆŠ‹ÍfUp2[}&3,€ìTÂw…z KH‚äTÀmÉ@iM”¤k%šåÉ.À¸¬Ÿ¤Qr@J%Æ ¤àv Ÿš[™!=ë¼=ˆÈÿKÿ/íTüÒÜ>B{Ñç±9?éq¿åþM>in!=èóØŒ§ô¸§ê¯òj>in#ä'½wž{•þ•ë¯òj~j;™?!=ë¼=‰ÊÿI‹õ×ù4ù¨ó‘ò7®óÏb²ÃùÄ_Â_äÔüÔyÇÈ\Þ»Ï=‹Ëÿ„¯É§ÌÇœ|…Íë¼ÌË ð•ù4ù˜ó‘ò77¢Ÿc2ÿÂÇü3ù4ù¨ó’¹Ìyìf`}Üsîk?jŸ3qòSæcsºcðÏÚ©ù˜s’¹Ìyìv`ÃÿÑO™‡9%s›´|íì|ŒnÕIÊ[w?„>ÕIËÛùº¿}ªƒ™·óU~ -œðÌ×øB€´wùÿ P ¼„£2S’E½iJB ¿ÁáÛîÐ ŒÎ¸X3øHY¨ƒU˜¹ …”RÆÞj˜ÍÁ©G±]%e$ÓÉçÐAýÇcö¾+utøcbÄÎôç4þTÆXm·æc^üë%Õ¥!N0àIR»Tƒæ¯Eû’1»vd=Þ" }÷n/Ì«Öq|ŠNݹð²÷¬ÉǦÁþ\:‰ûQóל;ƒYý‘²¥¼ì™[7 &KêÖô‡qñÖµ¨ö•)H$ŸtÐø½¹·pn:öoc±<.» #L)@q²Š å{3‡Æn,d¼.nr©á)— ¤¥a* ) ðRAàhÿæC¤ÿþˆ‹ücÿå(~ÞÚ›sg@•lbÃÖïx’ÃEj wHN²V¥ØZ€z¼¢`Êíø* ¾ÍúÔïìØ¬¹@Zú]xøGWÿ›à?ú欒@*6¨P€T€  ÁŒEð› ÞÀ±p÷e6*P;µžéˆ '…´nUœoPö.FØß[uèúñyˆ˜·[`Iw±,­*R…eX…DVÖ® ÄúUv–ÈØ[G Ggwh0°ëÈ÷ ¼wm¬2Cö«ç¿¹U8¥÷W¥•‘× Ò7zPËÛMPÜ}¤8^‰0z/Sa±{¤€YU”/`Þ¼ëÌŒF¥u=Ìl×^ÆacdÐìv AmÕ¼•§R‡œp­$ e(U¬u_Ñ©iaÕÕ½Ž<º 'æõUÚŠÞ/!;ÎQ–‘ÍX寿¥Eæ·Èi$¢ö‘÷B)ï§VÏ]IKj®µõ Mêj^ŠËX,CÉv4DÊœ_RÔ…!&RÃzÊ”„¨«Bxôý+¤Ö4DG,K/¿Õd®Rq(o\W¾4sPéѤ½è½ ¹àxŸ-’–+X{{‰Kycìï12Òº¶œ„–18ì8Ƭ³"ð+qR\eEÇ‹ñd¡í#IWÁ¹ºûE’u}˜÷Pª­-œ‘Liý]}·Ø“·10\AyLOD þ¤êÒÊÁR}-'R”`.BkŽ^¯¤µ.‡ë§h¥.OS„xÂÅâ)ÖÜDøÎ­A,¸^%¥¥AÏI!¡e ÞçPìÐgm)†‡_QZ>]>Ì{‚Lä9oa”ê2-"$ELXAä)n­Çtú æé@²M…Õe|­2åËwóåËÑßÌ[‰’êŠR]Êm¬:[CwSQ%¸ãŠ_u×èë w‹#Üñ½K[¹rå–$eC›Ô’©» -o-–¦8 ””#K!E )z½+½ój$WÚ'õ)¥§›·±rR‹SrT‡S<°…]>Š«êã{pÓéD–gÐ#Zã—¨±ë~¥6¹[Zm4‡œuÈòL…«“-(Kg—Åç‰JlN=.Ûˆ–Ö—Gª¾²ñXªó}=Æ|I@^>_|Ãã[ÜE¥å(IWº¾Ýzºðë«íЫ¡>¹ût‡öÇ\ýº“ŠÇžØ}u}ºƒ‡ÆžØ£ë«íÐ(öÄOá+íМ öÂOá/ò¨ ÝÃæIü%þU¯[³ ‹ØÝsØ»˜ÃJ6÷T๳wº‚•ˆ3úþÐbçþ(µé85óžWvÏÖ°þ,~ä©‹©é—k8\Où_0·wêÞ__yx û5DØ1¶°Ðøküªógt=šÁÿ@Oá¯ò¨Ù¬ôþÿ*€=šÁÿ@Oá¯ò¨Ù¬ôþÿ*€¡ÍµƒÐ¯ôz{?v¿Ê 5_¬¸ B ÊÑ #ÑWÝ/ò¨{Á|f#u'©A–ôca߉=’ç þ—B„e@ Þû|¨Ÿ¾z€ù„ç3ÇãQÃþ0©¨s?£ð…@s_£ð…sZþ?\PóZþ?\P1¿áøB€÷˜ßðˆü!@gCÉÈ‚eò„„>¡e¥* @Ü èÇu+{cb£tJ‹ŠA/ ºÖ²«ŸDpâxš†Vc¨›Çq©Ïî‰y¡In~t?ÈBÊ×})'È*”"£rN^D¦ùR$!ÆûB@BxÿƒjÉ £iz}³›ŸØ¹ã¸ $¨cT'CHÒ–ÙBl§ ½ìŸÚ«¦TÕÌ«©VK$°´ÙRß êWhÊÓ_em·Pwff` [î9h‡ RKL¡KfGêf{1“o1ˆjNE؇áäç bñÝÐEÞV§¥JO¥`”¡vqH‹ÉEåG¥:v×7\(·çÑ[YnQΫU+ꠔѯË2üAd†Z'MçäVVôèËa¤bÖ·ÏJR–Øp«Ê•Y*÷IU&öú«ËŸ,E˜ÉÊìY¹EÎÜRñ˜)8‡c7 qD‰-F[²f¾ËaJ iWÆ“t$vUãŒômþ>Â.%žUŠ}ʾ’DÞ½NÉmyó±Ñv^Vxƹ…yü°eJˆü\¦A˜Kn2‘ÅÉ(Ôá-}ÈZŽ•ŠK»Ù^Ì9aXŒu4·ªölå¿¤Š°'»ô̤iÛ"ävž2afã¹¼{XåéHuçž}.9Ý—èË[M),jN¿-]ÅR4y¬öc9EuQ'R%7Éá&ºjÙ²»Sp·ºöÞq³N5¬Ü6¦5 Zt<Ú]N •=¿b’ ®TË«˜qUI  <Ô´@@@@C›³å·éñÿU]n.¯[9ÜW½×ì»wå³§Iüc\‡DÿÔïåJ”’I ´žÊ•8lT†£0òÔÛr˜u*[/´êlµ¡a@Ûr _þñì =  L¨ðØzT§Û‹: ÈuA ¡ âT¥(€¤Ô7@“x"â JV’…R¡Äx‚ KÀ'R ëŽÛ;Ï`föî.[Lo8ÌÁ±ÛÖøÉánTgI7 :”!Jµ†¾=µØò:<' ÏÜ~¯äŸ†Uêg/ÎxWÄð²Œ}õâ‡ßŠ>ãÓÍã¨;jïX åÇܘÖ&–8üSŽ$sZ7ãvÜ A¿”V§™pRป–%œ$×NçÖ±6x.c÷õ¾+øÕ~Máè~âòeñGüj¿&€>c÷õ¶+øå~M|ÈnOë\OñÊüŠÃÑ ÉýkŠþ9_‘@yó!¹­1'üz¿"€>dw7õ¦'øõ~Eï̆çþ³Ä¿È <ù‘ÝÖXãÕþN€ðôGtXâ?_ù:ù‘ÝÖXó…“ )ù‘Ý_Ö8ó…ÿ“©¨=ù‘Ý_Öó…ÿ“¨wþ†mŸ“Ú8.¾1’~+Ê‘‘À”®ÒIJot¦ß €ìŽâÜÐöÒqFTi2ÝÍNõ|ñ…-Oww¤›óÚ@ °³r{mSj«ÜRrQ§8›~íÇlá‡ÈNÉIÅCÇdÛn»*$S9ô#JÖ•GIp« L᥮Šõd!=I½ÎI–Þ÷ÙÏd&âšÝx—2XÙ¢ä ‰ŒóY~`Z£4´ê¸S¡µiOiÒ|ƩϿ“25LÊÞûJ\¥E¸ >R–T$"B•!çm´¼ ­KmC@:½Î"‰ãMÞºû‹Yí¯u+ý¤[Ü›¯fâ°î;¸ó˜öqYEz½(uô)ÉÔòc6®µºÈ*JÅCˆª×óI6údº•3ªú œGi· Û³±‰‡")Ͷ¢¶’’J€Q:ˆòÞüjòN.aHº¤÷–ò;ãiâó“·6[‹ Ü„‡¹¡M·kRÅÒž. MÕ¨Zõ N‚ÒTô¡ní¯‹dlôVHÆDD8úqNLl:ÃEµ ãˆP!j>j¶–›[Q öÎj´$@ãåóÑ*ª@@@@@9»>[qþŸõXÕÖàrêõ³Å{Ý~ÁÛ·~[7útŸÆ5ÈØtOÿÕìóy|ú}SŽÉæÛÇÀÈÍ’_±"4‡’Û,%ÆÙqîJJÖ²®<¿‚›všˆãžæûðîÌ<2Þ½÷®ò©ó²Yî˜eäÉÕ"JCéD¤'Gyf$«&BR;ÛF®<Ü(Ý_ݯj© UÉW};01·dè¹ »†D MÌd䇙X[h/­*l)I6A #ËaQ%H˦>³-§YC¥ú†ÓŒ)ˆÕ£AÂI‹´SÈÔ–¥°ëe}íD„]M©%¾Ë)²…ZîRûݘúýF;5ÕŽßáë$ Ï–˜6þ9Í»˜Š‡[q‘9 KŠÌ‡Y )Jj;²Œ¥Ò@PÖ,@"ã´.:M½Š¤ZU‚Y:#3ºR½¡¶¦ÄÉä⽸f>>J<—V¦–åžrJUt¥›ö EC÷’ßuy,Ä…½ØwÓ“#œNêÞ[™œ,nÇq+VÝÜ2¦MÇ¢Î='‘DXî‡eMü‡¥*¹°O c”Þ‡/䌺ÝkèÈ´1¸£³[]JžÑ“½·žSvl-àÖsu'm5¦ð2Ìã›Dd·—) ÕIZ»Â¥6•¤6Ò’ROn*×’¤1Ö•7/ ¯~y`d°ÚœVõ,yÓk¹*õ’ÖýÏäqNt{uŒÝ3ݜɶ˜ÚË(ÃÉÚrR†ÕÌm$*dz°ŠËoŒè6éVG!}/GaSaqCŽ6¢”©Ä²áH'U’Oe`âbãfýwÛ]uŸ'Ҍܫ>¥¾ªD‰†=ÜvÞë#lf`d±= ·¶×1¸¹Ü|ØååfZÐÀS‘hÇ#AR5êRô¸Y8ÆôÝÇ+‘MlñÕ­Þ à*îYÝ¥ºí“k¿»ƒüU[EÏÛ’S½6Û®l׈[ÍŒzs-FÊãÙ•"(ŠVìxr¤‡ãµ é O56RB…ÒN¡~%¿ˆÞÊË-¹ú-n1p‰;I<è©^¬ù`ö ß¹Fs{›v壻)ögà`:‡¦¶†¤, CW@Q·‰íO ‡ìôUËf}&wÒÈðšíÿýk€üwj j§ÏÞÆÝ;Û>œGåïÝÈÇM3SÒÜÝ—'!ÐVJÊÄB¢Í†®)µèHØß[G´ó.ã±[Ÿºc¡JIv!%Ö“Ź ¶?â¬ýJ³ŠÇEÈä¡@‘‘‰…-ÐÛÙiĦ4p|uCˆH ÛÃc@Û2p¢çʧ †æ7§–ù”†Tti'‚ˤ·bn«Ð ¦q7¶~MÍߎۯBËDÇÓ’HåÈ[ [ê)V ^RÒ4CNêR½¯Õã:ræ·î3v'+\™E B\wCB+áPy+PmÑm)]ÂT° €®ÇNV^5¼ësöZnTfоb]Óu€^Hµ”T›(’«€l(ÝÆÒÛŽ6¬6¢»{^Lj½E…XP…éÙ8~æÞcnårÈÀã3™H2Çtè†Ì‡’Úä+Z’›6 Q¹‡m´ž)¼1ì_¸í´îÙëN¤f2ù0³FQ·±Í°Ãn¶ë©a÷”9…v€ì !]‘ÓlçÂÅÉÍÍÈ"D‡u†Ž”²ê5B•r•Ÿp pº€ÄlL'7;8G' cÕ”—”$„–yܾeÐmIâqóPN£í ÙF-Ü;²šT§$0ô ¯4û«m!™ˆ1Ê”IIæU«ˆ²l/@YØ;»!n YÚÎÛ^! ˜í9¢êJÒµ)÷5yH)èô¸ýp¸ˆQò9\t só =0ŸE­@€³ 6¿¹@L{C¥ø©nådd¦Ë!äc±N©9AÛ8³`¿KOÜi¹ã€µÔm“¶0;r6O†Ìâ' ‡=ðë iòàå€P…s äO= 5 ÄÈ‚ë±Öô‰ï8¥&mä:„©”Ø%-¤#GIPW¹@wCèyKB7ˆrÆ5ÜKNLÚÎ#òÔâ\Ǿ²¤©`(¡ÂJÑq}* ; ¸¶ë…xe¹:TðSÎBñyDóLgâ°ën$¤¢B¼—½ªÑžšóªw§ê)8j§3¯«ÖF›ƒ¡_sM’Ìg7“¢»)ö^fSL#›0±ÏR™m€Úõ&3I²Ò@ ì¹UâsÕ$é•0è¯^5Çp¨Œ)î½xz)‡X‹ÃfÈ„^[yLîɘ©Ó]xÁQ}Õºó®~h4k/ZíéR@ô’VU“ŠK§½©?êUîÈËrnç½Ë >Œ;óðžv¤ 6“Íe'K‰ Æd0"³cØx¨ÎïÝ””têlƒ«U”¥)I ¤Þ¼÷®æÞÎw6gY9=õþª{…àFË´²Ù o9>þâVJ1@WxuO¡¶SÏm߉f;Á†Å®”%:H°©Rj.)ç‚ɪ?â±tÇh^j[ëŽ<ýœÂ΢Û'nîÓ¼qÑ–rAO-¦žn2ÛeN»!ßÍÔ4e:P°’{j+Få¾½ùú¹TŠ*%ºÞ¾[„é]ÙEv&# &ÓÃE‡ ‡ˆÌí´µ·} R€ Où(ò£_àÍ o¨ýFB„bá%H°JD…€©Zæ: ¢ñ/áëâk¦Šé–åÏdvæ1YhYs‘Æ%¥?Ì‚TP‹<•&ÊÕÇ… #èuéx§«[Í'ÈRÜxðí ŠÑô:tpUw°à=ë3@Uþçnöüêï+ùôAÿ#@z>‡nŒð:[ÎðZ{âxPú:&² MÞ+  LöñåR>‡Nˆ7ð:“¼QÙðDØ,?xòʯ÷:ô4‹+¨ûÅCÈ?0ÿ³ÐGÐõÐñÿû'z~û=Wûžúÿ˜û×ðáÙè ÇÐùЯ/Q7±ÿôô_î}èGþaïcþ6ýš€¨}Ý~p7¹¸±èV#ÞîÔÃô@ôjR—¿·¹Rþùðµ+ß=Ø“õh Ð÷áõFëß;Ùg²åø$ÛêÅ +ÿs÷‡ãÀï­óo7z…oÕh ‡Ðÿáìûq¾ok%Ãìƒù/` *ÿsÿ‡‚AVõßJ·y¸?òJ¯÷@xv? zo³ÿÎÃÿ²PXú!¼=FQ\móÔÎ(X¸ÎF#j#ÌJb@^{èðý%!2·ïQe!&éCÙXËö\D4Ç>‰¯G‹íõÔGbÁÕÜ£/)¶Îµj_-&“©\M¼´Øxnð£±<1 ìv^qî·ëð¤fån9mKp*KežZ›e¢•ØÞýƒ²€u­Ä¼NÝsnBw!"6iNʈ”ó oÕóR)¸WxµÎSw)ÇIµ]kÓ5mÅN˜jʵ^ªš|oÄÑÿ-&ë¶´Éç§È’*z«Ž~xî9²Ù+‘€‰&'qÅNy®X–œ’_BŒFž Qh »aG¶“Œã(¦õRRj˜¿¦¹ýÞU2p±—ÁJO¼iM‘Æ›½‡Ð&zûÄ€eÝÑê§2Y&0±ÄmÖ`¿"廓’¹}å—ŠÍ1ã´ÈQl¡iq HS…P¨¦“Å:UîUuÃ}1î6gGkÄ“~…§«?Náwº:ã”ܸ¹“ðy=·Žo#ƒƒ™ŠÞ4Èaèí©ä劷TP’ëíi}å´&éBM¤µ',œqûÔ–_ŠÄÞK(ä›ì¬iý5ïг½f‹¾.\7'm÷÷töÒòñiKHÂGTd÷ÆÞJRmN8RT¥¯âH²–ùL¸•%<À‹Y5Š*‘‡C¯NרlIAüV°Æ:yÖÑ”wˆåoŠâbÌ\FFC0Ýï˜÷ÝQÜž ÒÚÔ—™[NŠÒ…,!µ S‹…6øz¡NŒuÓ{é1R)õ®Ì~ƒ"/ûEáñÇoäÚ‹ˆikÍKŒ—¦Hœî*Z[[²•£DÕ>¿H¯Ð,š¬¤Ú^áJúU7º™tZίk^Œ{…§rÝwƺښscÖ.Ã}NášBP–òrP‰ÔÛÑËI2¯d¨¦åZ/ª”O<:Ý1Mì\üÉm5#T±¯,zÞηöG|X¦ìà¼ìTc7÷#ipå©8÷c6ûiåó\ Ë_!ÂT56’NžÚÇyÉ7ðÖ V{iãÛ*#b‡†¯=5æñ%%Õ±´äβí¹ò¥Y ¦öÍn˜íbr²!¨t6ÛP‘%-6Ùy+KŽ ©Åö^²J^âTuÕ_êj¯bÂ*¸ÓuHQ“Á%—Rn›^n›pòÛÏÄ‹(¦6Ûm8ÙÊra³‡\ Û¬¥*ŠÛ/"AKí'ƒ„%KuÐt0à5ÅôcÓ³×X­þó¢uUZq¯6úmú$󧺛b$×üIFÜ™7ác2YHnæÈ7´ÇŽ˜‘›u,6Ô†ŸRB]|2Óì„ql®G4˜q•Ú²Üð§~fy;xG™×¦©ö¥·ÄÍÒœTgÏaÍü›söúœ–ๆå‰òRÀC.©jKÊ`p¹M’Ò…µqÊ—½»ÃOêÕýÞÖj¿«LüUþ?ßìè¬íPHPPPPÖíXLÌó ç=.;¬¶¥#»°CH<.’>¥ux)$±Ýëg?ŠU•vÞPææÕG¾É7÷5äÓ ÿ×ïåPPPPP õ´±ûïhnm”˜î\lŒ{΄Ùy²”:‹ƒe6«)'È@­¾ŸÄÛ¿ á$û6u¬«Æð±â¬ÎÔ²’kéê} Ýy ÛÓl ÙÓ§umå=·wƒ&ú“”Ä8bH'WŒ( ö¥@ùk{÷Œš·ús¤á÷'â]™užKÄÊÿ ?~>}èx_ndÅ\cª@Pïɯޠ5K¬ÿÈ%}ê¨7Á·÷•ÔìȬ®€éPPPPPPPPPPPËÞ–fݱض²³wPãXiù*ŠÛe1$ËSŠZ£èÆ)°G—¶¯©)6ð^Ô½f;’j‰*ÕŒåõUì|˜‘3;B[)s+3“ËÁ—ì|C†g¸ëë”ä9":T³Ëa]–âmIÁFI'ƒU«é§¦‚m:¬S¡˜ß[úRìõãÞž˜ÜÑu´%å%‹ªc”§zƒ‰)UÏ£Âö¸½"µ*­þ‡Gßšp”0kwzªîÄÌÈõ¦¸¬´¬GvD–†ùŠü-.­\Ô$-Ô§JÉIÒ ‚9šn*=´íÀ†šì¯Qs7Õ ¡Ê=‰›’Dèͺ„¨·ì æ®ÚT¥'M›A+:“èñ¨Ž/~í¥dô÷wˆnõ÷£‘{¹™ÔL*kÖ-Ór¢?Æ„ü`l…)=©jµë"‹t¢Ï/G§Ý*ÞÌÌÜgX¶6Qw›ÉòÚÇd BÌŒ‡:,Y)z$@’û‘) ("ÆÅ@豨q¤bþ×µ¬+ âÖï£ÚŒ<]ºWŽõ¨su3*F R[ÉD†Û’eØ¥´­•„$„8¥¼Ú•T¥¥#‰UŠª-¥×®¥lõ¿§ëeù2/ãgÒ¼ˆîh1˜’âZ -)Hx¡Í+QJH)&ÓƒŒœ[UM®´Úþëêè -¥ƒÆôǽ.’†:éÓWãÇ=ÊŽĂ˪K8ÂmvJIF½z—T¥ ^צ¤ÚUźv*ú1.ìÉ*ÓÕ¶›yÉ3˜Çn<./?‡|ÉÅæ¢µ7 ¡M•°úТ…©$¤Ž\UåG°ÄEMï½Ux’{§ïƤjÚ       V¥ ¬€@(G ðì­ªÊF¿ýF!íîÜßér~É­S`ÿÐïåPPPPP”ƒ@k®{â umËrp=cÆ#uaSÄ!9¼PD<£iš`°ñò’æ¯KÄÿœò«w~¿/‡/ûsñ[}RÕ³ƒcü¯˜ÎßÕ¼µ¯¿&ºÖ—Úley£¼@Pïɯޠ5K¬ÿÈ%}ê¨7Á·÷•ÔìȬ®€éPPPPPPPPPPPÚܘí½>4Eî5´ÌxR„ˆR]’¸…©·Ô‡P¶Ô mŧ⠫Âr‹zLsŒ_¼`CÛ;:V03 Lž1Ǥ½Íæ™aÇd²¸¯­N©kR”¦–¦É*>‰µDå&ü[©ÕŸ¨˜F1^Ó-ƒ‹ˆ ÀÚ˜øñRúäòùzŠžuaÇR–J”µ-!EDÜž5]”å‹M÷¤Ì®rn­îîT]ØtNôóc¿”™škcžÊωS–ÂTµw¦‹;xsgK–øbÚ¯aE‡¤†ê¨Êòeå¥M›’ÛpfÉÈ­·'8ë`ó\i´8´ö„z:­ªÀ ð Pƒ-éÓ±-½™Š¢ª:£È1Ò\Gu éQâ4óWqåÔ­W¹«UÖ¤S Qºy±£c]ÄFÚ˜Ö1®ÉDÅÄm„%=á°„¡Ô.•!-¥) ú! Ej—6\ºÙ;ùóåÔ#³Ñ¾™GÏ7¸£ìÜ[›"0a¸Í&1ï/ÝuLèSŠPød^Ü;(•5ª§=ETtÓ§­˜…+ ËQrdèAi iðM!Ìe+vý5ôº‘»›"Æ_¥û/…Ë`Õ¶±ØøÙ˜ÝÒSðáÆmÐðJJšZnŸ%Ò@¬nÔZ¥0ú)èàËñ§Z¶ßñ¯§‘Ë·0ý­Ãí¼PxcppÙƒ>êžw”­Œ¥ÓY¥''VaJ‚ÕT          ëgþõ`VÚý$k¿Ô6÷noô¹?dÖ¡°ÿÑï„ùðñäOŸ!1¡ÅN¹®úPžË›_ÏG€2’   ¸ƒAR«ŠË=ƒ # #R ÈL˜éqÆ”ê/mm(¡ÁÇÌ EEU*6йll„V&Â}2bI@r;è7JÒ{5 ˽PP¯¾!áKƒ´ñKݧs}Ì1ºšB¦î9 ¦2Ìær®“÷¢ÜkÑ~Ú¸¥~\,Ý!ÄEÛæRÎÛêš]§Ï`ãfR·cY¸Ññ˜T-B;ص¹Žr~mM•­N”¨ZâÀRªéuæXÓº”ÞÄÖ™*tÑz]z‰l9Ø2Õ#;$ÒrS§òAÄ-2Ò5%–ÙôQÃàÄÕcîÇ£¯n|ãë>Ÿ`ç«@cL‰|IPf4—âLelJabé[n$¥i#ÌA"­ ¸IJ.:¢³Š’qy2ðï*F+mî–dÝS™~f_ÛÈ.­ÜJ€•‡|ß—Ô"ç´ ×¢ýËrô8È{¼DTú'îÜ]RUë8¾E7 sá¥ïY“àÎòºu^lîC¿&¿z€Õ.³ÿ •÷ª  ßßÞWR?³!þ²º¤T@@@@@@@@@@@{¿3™\Bö”\TÆ /?šT rßBW¡”ãæËº5 •ÇHãä½d·%'JÑzÒ1\›‹J´«õ7êhêê0 Þ-n7ÚÉ1µÙrD9qŠ"eœCie-¦È6RÀ+8ªÀXïø)õSímz‘{5šÏëI~Uë}ƒ=ÏS 1´rNK~J1©mɘæ[óÝ^mO8øHaµqLŸ‘p[B‰ Tèj¯–Êôg‚y¬V—Œusa_OnXîxï5(G»@zjPhíãÛRBm娠<)¿–”¡6÷üõ ª€(€e®{”û×Í—ºÒ9X.­c׳·ûN^\ÌC«<§[ç°i:’½/ þsÊ®ÙÎ\<¾$wè•#qu=2í86åÄâ G'À„bC òÕ*;…Pc¶›|ZÁ(GÁIò ‹qrmÇ5fÞ¢úœWJ§nk¬r>ærñè–¸*%+g‡KE×ÑÌZÕÄ‚†õžÐ›ö ­*#/¶²_Ëá¥Â\IRŸnTÖŠ[æHŠ¥0ðp’T‚ÑI'È<Õ ÕUm-rÛ„œd¨Õ=]Χ™ÌæÛÁbò‡=6ªly™Y¸sœl<Šq ¦kˆŽ™SVã­"•¨sU­• 'ÜóÕÜZåÌŸ¡£vòͯQ?¬:Æå^ÃÊÝxÑ&œs/&K*gêà“ N^¿ˆ±]½!Úí©«·ýÓ/––Þ¦i*Ñô`\Èõs§8™,GŸ¼1,¥èÏKT¾øÁe¦Øy¸ç˜­wN¸‘n*vŠ”ë—I].•ØMÛ·7+™6¶þjaxgÄl¢b:—9©:Ò•ió¤ÜÂ;*V)=Œ«ÁÓhâ   þ¶ïQöm¯ÒF»ýAovæÿK“öMjÿÔïåPPPPPP'\6|ÍçÓMà ñ{Ÿ–³›:ObšËbœâ«‰–ß,‘÷*5Øò2<' OÜ•c5ü“ZeØzŽ_œð²â8YFú¤£÷£â¢ƒ¯§ûºþÙ[cyãÆˆÛ“ÄàÉজq#šÒ‡)µ… ƒÄZžcÁK‚ânX–p“];ŸZÄÙàx¨ñV!v9I'í]LxV‘¶Pïɯޠ5K¬ÿÈ%}ê¨7Á·÷•ÔìȬ®€éPPPPPPPPPPPÌÝÛr^á^ÝvIœt¿”9&ŒˆÆ[nê‡*mHKÌ‘ÂN«êí·½»Š5MVª™Ój{žãÈ9Q§FwìkzÞC»«ÃÛ{Î[YÞñ‘{3U9™8¨‰‹ËZœeòÚ ÞyA zG5zE„ßµEÙ¹I8áD’Û¿˜ã{QQMI)U¾lÒTxó é—/õ&YC‹[pœml-„¬&F9bqTI ï1àV^°Ð"õh]ÑT’U‹X,ªë¿Ý_g§^=µî§æçî{KÃÃ[S;´óÍî„dÚÎÃÌy0äH¼ÌIÐd»Í›>SèSM³Z\ÒÖž)sQ¨W6lå·§>l9È¥9f½^–÷ÌxhdzÍåëy©™21ñÆ<Ún1ÈH•$ÊqÅódþxã+x)L„!<µ#YÃHéMÓ.Ö›þÍ:Í›÷ÝÙ¹=´î‹Ž{wªäËYo Û'ŒVå–ˆ,\×äFjBe1’!)[í©@-舸Šâ‰å¥Äн†ìÜŒ×ÕiÓîäaÕák~Þ¯ ·º|1a²°F7$•ä%Omùod[¥Ç 6ʘq,¸´ÝÒ´ÙJ*J’«(VÝmÊ2O%Nú™o^ø‘qk=Ý™’vçèþÙÞ8üúÞy¼9á‰nBòNòØJ IP&¡Æª…cqÕó‘ôÿ ý?Érš™;!*3-©„ûPeE}Ø(8‡"¨8Ý¢#KJø´¨©ÀžaÔ&*‘Ӛù8úë.¹É¶’¯¶½µîë$ÝÏÒ·¹Ú‚‰Éǯˆõ61qS¥–",”+–û¶½+ˆß ´©µ …!BÖmmmkú[~¶SW‡NÌ{Ð×Ú^¶–ÎqkÆåóO±ÏÃÈ K‘ ^ĺޅ7 !Õ§SJW™½…Z¾Îª·ëxæOÄ{yW–Ì7 uøRØ2qòqY,æàÊA”Ç%Ö^\+SH Åp8Ä&– t‹%!Zûê\ª5Œž×'.¶¨ðË-y—w¤Ò[’]I×ÓìÈze:³²x¼/¼ä1ìàðÎ`ä#®|Wî™ÆÌu4•¼—J”ÚnbŠ4¨!H—Ý_7bM%Ù&QMÆ4[WMSôÅ {SÃþÞÛ¹·3ò³òÓ}xs1ÛCMFo⋆ …8è‰Îp6­báZV”¤'"œ¨•pJžžÏyôí*÷­¾ºW·Jeô¦Rò9±Ã<ÎK-)éy MJu%k}/!BÚŠR—Ô pH†VÔ£¥åü}½Ëì£%»ŽÔ³G³½ïb“}جî?jš‰$eûß{qj§ZËËR¦—©:K‹ÕÀ}ÊlxVYKTµ<ÿ‡ü+­ãU’ú}¬n½áç§Óæå2y‘“Êär32¯7-Sž`Ƙžr2 ²–T„†øJ–’½#UøÕ)MýækœD¦ëZaù.qR7Bº|ÊmèRä¶äµÉŠÉ–ú DDòå¬ÂCž‘?§WûâªËEÏýY˜á-m§ôåØ9öWO0›çQƒzjãg¦÷çcL}RC Ó§–ÃŽjq-m-•”#îMÑÂ*;\ºŠiZœ¶¼Çðì$ö€(ÿ­ŸûÔ}[kô‘®ÿPDÛݹ¿Òäý“Z†ÁÿÕïåPPPPPP«³Þ 5Ó£ÿý™½ú©Ò>*3"7†ÊkˆHÄn­ÇšlyjM¯÷@ùEzO;5ÃpünmÇáÏïÛÁ?Å =‡Ê¿Ëß½ÂìO\~íÌ×T«Úl`ì¯6wÊ]ù5ûÔ©uŸù¯½Uø6þòº‘ý™õ•Ð"                       "n¬ËÜð±˜vÌ,–I×#'·™uèâÅ% }†ž[I/¥¯KM¯¤Ú²rP›ŠNI`5[^TÔã'rNÔë•i\Ý„9•Ü]iÃmä3……˜Éåe¸û8þ^6Kü¹#ºëîOaKTðN²—OjC‚ÀEå:*ÓV•]>îªãÝ•:é™›ËÓj?{®geq¦ªçžÇ7¸ê/VU’~ :L·ÄH}Û<ó(ê]K.òd1¥d¨¡ Pp%:Ö’›ÒJ‰µÍ¿jYöãJÒŽ¸ÑVÊó÷WÙ·:­•c’fêêrp8ìœ^ž´¬¼µåW/n¹.î2Ô8¹¢úG/™&Chl(!+ íáVzRªÝëöb×5^{ùrè#Tõ®’#ËsÓ© ™¸ ßà L­¸ØØã„¶µ¥ñÝjš•2èJ´ßÒ£U’yw§³—o32Ö F½|þ'êÇø˜ûÏzuò~ z@ÚÛÜ|•E~6Ù϶Ë츸ËT'ÛŒéBGxXZ×x¦Áīɛ‡i]‡Ä^j»|)ãÝë1Æšk\h°§,‰OxÍêÓy Ìml,'±1&aäÀšÛí¦L¶™¡¸‡Ò¤7¡¤¼µº8”) lXª›Ã^×êÞéd“´çå¿ÛÍX§˜ñ>Ò§÷½±èòŒ©¿-,ó[/¨€Ë '!d÷@”š[šd]eOG!!RýÕO§ßܦ0Un¥§¦µ[²çÒ¿½Z¾ºØ™ïkÚ;ÎDÍŸkz01~ÅÁk»ªËì´&sJ²¯’æµ*å»E¾fJ´è–ÕýÇ~ù>Îñ·)^%°‡+’ÅÄ…2™r‘ˆ} :Ìýk¡–ÚæäY* ÇèÒ„©YÖµhváʬ’¦5}˜úéЫJ¼ ½5n»¡W×Ò÷,GnâÎõ¿·öÀÇ`àe·norä¢d‰®õî¯pЯpСæ4V¸&Ô¨ cëPîLŒÔˆñ\t"D ³£Ú°Øv÷Æ€¼ã¨iµº»„6’¥›_€5I*…‰…‹ÊCÌc`e -NAÉ0Ü˜Ž©%Mº¤’•GØjíQЄÓ3õ1$¥Jô{Õ¨`×n±ÿönñégWÚO.&&v¦öt\Rî¡”:áýÌy©a}—âkÓy#ù®ˆà¶Ê?~Þ4_z‘Àóoò÷¬ñ{"ôOî\ÁWîʌحZGxykÍñÚ[ÙÉ›a§V¼Ä,{Y)Lס¸ï¸¶š*rÚ.¥6«&÷°¿eBÆ´YSµãOnìT§={¿^ÌoëBV Kôp“ÂÞ~ϯR3ÁÂTž¥õ )%'Õøcü¥~C@t†€(€(€(€(€(€(€(€(€(€(€(€jnÖÎ×o«;3'7?ÕÐ À1Ã…ÑùEJT§ã¶Ž¿º½ì«Â:«)Óêé);ši…j3æõŸha ä&n6òyüP¼Ž:K }曊Y¸W É ”€ú/o' ­Å£mpOµÑw–³[­$¨ÛkéU÷ «]3/·ÛŒ:^v3S…JB~!ûrÖI n;{<µÛÙŸ§ÐZ)ɤ±®^M]@ÙI‹r·>‰¨Òê•3tï¡Y=5®Äßb«ìCR__ú $¬lÕˆ¶ú¦I{! 7ÊuÖ@QOƸûÌ©¶ÚkS…ZF‘¨^%áI¼ž_Òéýq/·«ù]ü,½ëÏNñOa\ÈÏ— žÁúú&år ¦ „ECr”[×Çq(@u)Ô²=2fžŠ÷ThzT¹éÏQ;â`f23¥c˜‹õåÃdš!ÉoIg–¨ÎEK͆LG ËZR”z7ø@ÕkFÓÙË».œj‘O~\º1èÄpazÛÓÕõ&7--Y1Š9µF>>˜A*Z\RÞa HAZRN¥'ˆ©špRo(Ö¼Ô¥}(ˆø¥¬\¨—^BüAldÉjC³¢³èpÁz+­ÈTÙº”ÔqiK„©i·¬q¸›kj}yW—VòÓŽˆêx,ëÍZT®__v46åÏR22p1aµ?×±csÚr*žr:ßm%Å¡·Ðt¤©Jà„ªÕzâÓ•¯5)í_Àˆ§'±rt].¯Ð³È’öŽê¼ðqw5‰âKqæÛnO(®ì8¦” ¦uµ$”Ü) гT§:©HÍJ´Øè9ê PPPP ÿ[?÷¨û¶×é#]þ ‰·»s¥Éû&µ ƒÿ×ìæ –!ÈnlŒVN.¼ÄÙ;e?ÛP¢ˆvqrR’PÓŠ å¥I6$p_u-ô—eSKïnZMǶ™ôo¢6ûñöì'’œÌµæòè¹$6ƒÎJO¸¦ÓæáVÓF—Ù]ÿŲªo{îþdÌ…¹qÎä…{þÊÉ•ÓzÈ–Î]JPPtÖÝÕÆÖUV1ªJ¸¿B[zð.Ý7½ôz{‹ò°¹¼L·±°cÍ~wGÚ+P~LfSÈ ßÓS… QMþè»’M´²x.gìĪM¤¶Éb÷5íðö2‡6þvCxøE¹¬ûm kÎÈJ– 'Û©‰ÖGÀ$9Ê…íj)`¶$ú\U;ÝÕ©jÇ×B—±z‡6ß\Éðd§?‡É4öõ~CRB‘dÄf[óZë¿oVFWïËñh{OfçC}l9[Ûhukìì_ Ó½ÐöÒ…Æ­‰1\Dôåë)lFtm¶yeåØ)*W£»åÜ\¸>&Íôý˪KîQêOùdò]8Qš\"ÅË_jÛOï7áym}/¢Ø,ÞKhÀÎ+>.îÙÝZÇá^Le/†nkÅ¿ûqŒßK¥zI.o&óò¶žs¬{o3=žÂïHù͹‡Æëqéø|QV(Çm´_X}—t }Ð6¸çâœt5œµW ¾"qVìt ÈŽ%§t°ôbn´­$ßX ±V…ÇòuÏÓéF9ÁJ˜Òƒ'-Ñý—¹"Ä‹œ9 ÌhùeÔš´ó§]¢—Ü[: (ä¤$ab Däç*½Ô/gþ_»¾µÌ¼®ŒôåÉY)2p&b2ÈZr$JìWëÉ}×y p£˜áBB–ÊF“è’ :µJåJsR™~TÞöªOʵö¾ÑÊÏOökXl6ßFߊ0›{ ÞS ‹RJ™1—Õ!§[J‰±C«*HìOp„²æöSÑžý£J£[ýµôŒ×ú Ò—ä¦K»iEä/ŸÓç%,ÈÖ— ¦ÒÛçHÔ²ŸGVžmrÞöwz°Ç{̳nYŽX9Ù0XÏÁ‰…Dv7NV:|Y¶ÜuÖÀæ^:ë®8„³ %jRÒ‰5TéÔëךìØQƵ®ÕNê?§~Ó WJzo’ë³6ÌIRÂO8§+[Î¥J³— ×!Å…ü+@ÞÖ?Ç%ô{b-Ž<ø¾|ý¯¼UÈô÷eeŸÅÈËíØyIxfe¤¼DbB¹KÖO0$(k½”5KKƼ³ÃÐ6%±:õ˜Žô×§¯7,­­Ž’1Àß5ÅppFºÜ*Zù!÷¹<¡Øj¬µ<ÇÕÓ³Ñ\Lã³ö„IÈ5‰…ŠuX¯S?=”¦9LÁ,ê)û›öy*³JQ’–RÏÐZÜÜ$¤³ñ1}*éÖ>7g⣷@D'Œf”êT PYZ’J•©EW7ãÆ¬Û{rT(’­iÎdáönÅg‰ÅÀ{2±QÞHC«ÒÃËÖ‚ñºŠÒþµ*æüËŸ…Q(¦©L§UEìE•c*í­zÞÞö+m]­…ÙxxØ ¿ÂÅÅS‹f6¢ êŠ×¤v$od€‘ä¬ÛeyÅ÷ä·‡¥IZXµ;!å›%@º”£æ^¡´•K%WC¼æ)èÍLk!È>ˆÍÈJÁIu”û¢H©’q–—ƒ­9vN«VÏië™ÌC,®C¹8‰a·œŒ·yÈ >ÈQqžá§B®žÑcÃ…D¥¥UàMë9¬[ñ£Ëk#Q¥Å¢¼]HJãÎ#в‡Áz³MfåÁcã.d¼¼6b¶Òßqâò 4àiÇ8è¡j Qì¨ xº =¼8ÐÐP ÿ[?÷¨û¶×é#]þ ‰·»s¥Éû&µ ƒÿÐﻬ2ón4óIu§AK­¬jJíÑQDv¡àÊÁ í† ‹ßMûm%( šG›²¤éjP‘æ (u–ÞiÆ\¡Ô”,%E&Ê6RH#ß”ˆP!㢳  8³M&æ×7$’I$“rI¹~eîN2Цtô5éñwd;º…²z·ÞP³s:ÌhX¤ºŒ3½äFDvå@1Þ_$0é\ ©aJ:9d&Ú‡)´¤·ûSõ>X*¦¨“ΘôÿæÇé÷V1» »wVñ—2±mÆÞ˜ä8¥¤¥ÙÎ6"¨Gh%†„·¤J•è rÜuI%ƒ¥7àåŸT’+’ZF½()!Z½%•ÞÕzRå…)‡>ìÌ—%ª´YÅ.´³e£›©¾ž/h±¾.¹r֬ʙÊ,LŠäGW Ì/sÖ_RùÚyä¬$j‰GT£,´ºÓf?Wx·' [kNœ=oi°ú;jä§ä2›ÖV]¹8'0° 7Íj<8ß'–ÒVâÔóvÕÔµ©õ-Õ+R‰£U‹‹y¤»»5(üjK 6é×Q$xx’îñ#%2>Sl¯ós_uA+LÇä¸úÄ"Ò“ •‚Jž#‚}IÕY.ÍÎMåVß:ªk×ʬªÂ1Š® .Êc×LGæ3¡Ø|nÕ¶YÉ¢6áwr£+&$wrl–aõ¼’Z¹Ë!Ãé‚SÄéã[ïã,z9s—S£t½٠èÞöŒyŒôùkÐ~å„n_wˆŠŸãÊâêš}§Èfãf\4½ë2pü9ÁþV†¯YÿJûÕW;„àÛûÊêGöd?ÖW@tŠ€(€(€(€(€(€(€(€(€(€(€(€kgwðï²Ê"¦G9µ,¨¯M´›yf³iN­ºPÕâ8‡i¥Jˆ{Êrîþ⓺ó§ùÒ¼ÒiòÐÜ>rîþâÙÜùÓüöÞò?j§åḇÅ]Þ[;:ïðQù4øÜGÌÝÞSísúÉ߬ŸÉ©øÜGÌ\ûLðçógþó{êiµO Ãæ.}¦[9¼Ê»roŸð­öOÁ†â>=Ï´Ëg-•=¹)üb‡Ø4øQÜŠüiï}¥²ÉÜŒŸãWöê~w!ñgöŸiáÈdOnBOñËûtVÖåØÙ½¯´ Ìš{f>¯}Õýº q]rÞûI;h-ÅáÒ§§ÏpjQ$Û‡”Ö‡¼g[ƒu·ŽñÕX ° þ¶ïQöm¯ÒF»ýAovæÿK“öMjÿÓï<¬³,ã$e!£ÖÍ2‚¤7m¨¹cb¥)(¿¾¡PÝ’‰Ñ–ÿuïZ9†.´óB|彩½Lè©}•)”ÉtÜr´ëQHº€Mîl%Áܘɰ×9O¢ ™"T¥¡½NÆuLª×U¸©&ÔN©=áàÚÜ+w¦,á/6$%å ›LJ;h,^æc,!¹„F–™g½¹ËmQ,©+õ]D,·mª®<Éö†èúÚì2]ܘVŸÇGVN1^YÇ€¤º…%Å´J…[‡g¿Â¥º;ó XíÖÎØÅáçc¶î´r;1×Ws'ú¶tNìŒâ¤¡¦¸„­nrˤEÁ©U[֜ܶ)*eº´êUË«q6®¸¥\]kè«étõ‘Þäðͽr)a8Ϊ¨3!ÌÒsØ9­‡´0ÛQ™]ý8¦ÜæLDtEmÇuo8¦ã6Kl£RΖÑè¤pH³UPËÄxÙ_¹?XÒ¨œJ‚=,ûÉ4Ô…u1e+àÅtù¬…}ªKy*2{XÇäOd 'ÞijšÖôOÖçØUêÜŸõt¯â\üš‰ë´Ÿ…?²û Æ+(®Ìl›ÿÍ+öÅGÄŽô«Ÿe—SƒÌ«³ÿÕM¾É§Å†òÊÅÇõKƒofÏýÚï×Hû*¨øðÞOË]û'¾Îç?«\ü$~U><7–»ö}cmgOó}Hüª‡ÄCy?-wì—Sµs‡ùªG¾â~ÝGÌCy?)uìûr œv4F–‡C«U’u Î5§zz¥Tt¸kn¤³¨à¬FÀP ÿ[?÷¨û¶×é#]þ ‰·»s¥Éû&µ ƒÿÔí"ñ‚gO÷%ø3äó‘`2ÄW_h©%*}¦”YK†ÆúH¶Ã²¡â£¿æBÁËu£ÚeBÄä"oYac^F>s¯;–~kqÖ€¢ÐJ‡!*çe )µ ^Ú|¨Ò>zvúû„i¿G¤l¯þW+»!ãðÚç«vDÇñAQ¨n8u•5$¤$:¸ð½M¶––òM¾÷‡Y3Î\é.ºrfDŒ{¸z±X2ägòYµ¿!,ÄúD—Ôäb×x*Bq+ô”RT-m#¶±QèKt{Ë,$Þùw!á'±’Ú¸9-‚œÖ> ×JC‹mü0A vÄêç„åÑYðsobñu¼=8õ’j {ðõgí]eè›[(¦"±‘ÄH\v±›‚ä0ëhy]òjh4½| Ð I'ÉÆ°ä±û1íFO­UöŸc\‘{…Ì0îÞ™?'EÅe$%ŸÍ¢17»=Co¾Ój jC‚Ä ‚E•¦²m®Ú>Œ×¦„U(´–SªµõP[Þ8L¦J^MÈQ%m|ŒˆR©/8Ò›lj#Š‚O±Ê5Õϧ¹³$$«fûÑ›‹‡‘Én^bN1ìT<6)èHL¢€ûÏHS%^‹kX@kÊnI÷+-|R{éélÁáŠÝì ãÜ1+š‹ä©%2ÃbÉ+qÆ”/ô‘X曋HÍnTšoxÍsiJjZß“+/žöuìf=©„†K¬¶› !¤]KHJ¹áÛjµæÞªmö”³Dã]‚›’³2v†R, <è9˜Ø¢Ää†\Y)O-IuC‚¼äTßñÖ™7Ü-x)]‚.G ÁËÂNÄb–b&ß{¨,Ò¶ÜYiM8yŠBt‚A¸í±¨¹âÖ–RXnT®|ÔdG çW×ôúF¼ãÚ«Éã"íÙÅÎÚ˜¬4­)”Ã2c"J©n¡º !‡eÏ ‹¯â)¥õŸU4¥_ ´^— =‰å¾µäĬÐÊíÎÀ“Ü™pð{{~B„ó¸öÝmó%•HmJH*“èÖMU”žùWÔKÔRKÃh¼¾ócCª3x7´z›€ÄmyÙœÄÝÃíÏN·,±Ëc#³)¦åó]mÄÜ`·è¶­#Ê+«û{‡ ÄÛøžãr„÷|;Õõj«Ã4™Îó¾ñ<Ý¿}%(ïS‚TíÓÞúõÃvî<×XqÙ>£ÏÚy|T<¶ÙÈcºu}ÕpÛbS_J}öä)\éO6J „«‰Uhy—σ»zÄf›áOžÝXI¼6-†ïÆÇ‰…«ÉR/LºÞmýÜR]/hô{ãŸÆïõd\ÜY±¶Ö,´æKÈ eד%×@DÜð¸ÓZói͵´Ë"‘ÖØ(IíPPPPPPPPPPP ͸v¾;9‰ÃçX×*tI““)À„G‹J¤>ó®­(N¡}:”€ž50ºÕRt¦=¸.ÜŠNÊ’MªãD5[êG»Ãì¹™ÃÆa m1òN¼ØŒøZnµ!ÝDiiD!Å*ÉBÊR¢ Gr{÷÷rô”\5½‘B®7ytó$œÓZuLà1ÈËdä¯5¶ÓÔ­iRät‡RÙW-YN›)$ÓãKrt}!Y¶²K–^Cª}6DZ¶å4>6îÅ=˜ÀÌ}ÈëŠÄˆq\/:":¹“šN—´›êÅ$T;’Y½ßÕ‘–ßä–Ù¶)·èf#ÝmèÔvÔìŒã $´%ül¶âJZ^¦ÃÑÑÌmwMý$ùEÛUOê"VT[McÕéÈQÜ}RØÛC!:n+ñQ#9䈇\E´ô‡ßl •©YaN¼tú)µµj)I½8ÕIÇ­$Ý^KÞYˆÛMU*àž ¹¶—¡˜[«©²6ÞcpaalŸX?‚b ––ôÆa ¬Ìq¶Tìp´+RqÔ¡f÷ àRIWg„ò¥~Ü'+´Rm`œ´µ±îm&×6ÜéÎâxÇfRŠ·]1ÕšZ–ÚtrÙT-Í×ü>ß¹›‰‹Dü¶ÔÉÃÆea¦F´$ÆuçJLvÞwâœaÆN¦ÀÔ5(¥¿Hlp¿·®^vÛ“Q¸¤Ó¥=Ö’÷šX¦¥ïe†/—¼Ö6ã:%ªj«_{î¦ðË,÷cGŽ+æ‹{Û)¹0pñx- †œR¢LT©e.Fjj‹Í©¦Ú@m—†¢—.bSbyœo fŸJrnµª¢Áµƒ­^+jXfmp×î]¹(Ê)$“XÕø•qŠ,`§ÄŽüƒÒ`á²3v¤l_y—K:eµ4-Ô÷q«SZP¤{l r¥sKÇ ×ZÅúéLèFãUÉaíO¡¦(cü@ãåGÉÈ™³ó8´âö–Su>‰¥ G-Rb ƒ©Hyµ¶²Täµg”h±xãÝŸeWMJÙƒºðÊ©~l½ eaüS5/3;/iMyùY&q»w -¼ûŠ›}÷{Ï4ÇÑ}Ô2…´G¦JHºSGTñéö׿»y3ŠI4ýðèYU¼‰1Ö~é¶önöÇâËÛ_s´ô¥¼ñÄkH5 B‰RiÎrP„-ÇR”'Q«ÛeG¹S®Q_ÞË mÈÁ)`š{_tdú±Ž~Ñ=Ôî¢bº…Ããp‘2ØVspxHkKÍj.â¢Í2_–•ËHzY P  J½J8âüZ_*%ô›nÒÒ¥]˜ïͬÖmË”…¾rOm˜.7¶ñi™†ÆÁ~SïJq¦C’²çwÐë ˜éQr8pØ!WH7¤§µµÔšŽ/™7,v¨³^5øŽ;“ëi¼> ‰z¡Ô´—Ñ'äÆçÌÌG…”j$¥DŠ”<âñö B.º—Y-ò\#JÁ%Í'N¢^\ë†úc³©fZ©ÜT~.ŠÒ5Ç­åêÀÇõ_«¢,8ٛʈû8¨e2’!L ã²LyZ tÆkCëaµ¸RÙº¬roMy»ú6íÇ™<˜YóUölíÃ’&.—d·6SjÆwv‡ažKnó¡È„éÕ‡T\CàjW1ÅqG¢ }4.¶o(©xLvÛ¦9’-«p° =  ëgþõ`VÚý$k¿Ô6÷noô¹?dÖ¡°ÿÕïÖ¡@òÔTÚe†Kªi¤4© æ>¤$$­v Ô«&À š]Ô( VâÄjCòÛŽÓr¤‰2R€p#‚B”ÈKÐWz¸¥@jµøÐÅ\R .;/J€¸  =jqç© PÒ«/@sn[^Ææº¯Ò…Ž\,>E[£e·Ø<¥¼¶P<‰,:€ |õè|åüÕ‹fÙGDþýº*ôÊ:_iÅòµò÷nðÛ#-qû³ÆŸ†U/ø7u'©‚?ѱ?Y]yã´t†€(€(€(€(€(€(€(€(€(€(€(€`íΡ±èmé˜È ƶ°ÚzÖCŠZSÍ@•¤!aIáU­+Ð×n`iüÂôÉÇ"»3r.FŠä%‰.¶ôwy·Z-ê@×d‹m]Íç—.Yod*,9r˱$ôÏjú»!Š29YlW©²MLÈJ_Š•©Hæ)ÇKˆÔR•ü ŸFöªSµÚ†Þ¦ºžÎ[ÏUÒý†¨X2F\ Øu)CŒ¶ÚR…% %% @BB@>@ecœå‚“ŠÇ(•tR¢E”_OÛ³‰áXÜK¬ í}¼æFX()Âʆî9ü[qÛmƒôrÝcB O ½w“8´Ö cÖ_NßÃ#œ;x¨ÑñÅ0Z„Ëii Ç(S|¦ô¡:TG£nÚ‡R(Ñ™ˆÃb²ˆÑ¢¶–£Çl¡  iJR‘À€żB2(€(€(€(€(ÿ­ŸûÔ}[kô‘®ÿPDÛݹ¿Òäý“Z†ÁÿÖìŽ_92tõÎZ«Ó‰Ü¢T-ÆÃÌÅ 6p¡@ÝJJìSbáÇQ¯ «ökßìÉS«Ú*³¸ò¬ÊÆãœK8xñ±ýM&C/¾‰O9YJd…éBЮzKàÕîU¹o«þ$[IF/c§{¥ ñ'æ¾kŸÊNȇòªÂ=)¹ì%M)*ä%\T²TßêT^ð¬7#%µã£Þý"<‡g?í¦Hç'B‘€ÆÀ•pIpGmbyEÆ5r–¡éj|â—|:šÙ&½‚×¥oKÒÅüVêÊÊÎCƒ•i¬CsÖ=ìª:^Zš’Ë JŠiCU“«]Æ’’Üßw¤­|1{1ç{#»¦AÜ‘ 0¦'ãÜȱœÃ1ÞR£.BAJ•~RUu‹µì{oXâÓ¢ß^äߨ–¨«ÑÞè5q«3‹Ûð"Çe©ó'Á–æÉRÉzr2 g’â¯Äiq[¨‹zVô£ØÖ=”%%Z¼«/N€ïISXü¢ÃBßWéo>ò£ ¶†P*R.hÄ“W’¦ žØô\û•zY‰å€Ì—±í5+-á#”­:§7'º>ÒÁ7°Zа8’oÙJjÁfôöIz…hªöj]qöŽ &áÉÉÏÎÃæ’Î6C\ÕAÇ)‡R·™iIHÌ‚Kn¥@ÝIH EÀ5 UrÃá‰/Ò53›¯pˆ{¦*¤3€ËCBÜÅÃv3ÜÃØ}·õ¥·‚’ N‹b*ª]*¼ÕyIj¦Ê:u*‹[›ve6ò› z.Eø 0þ^$)jCŽhS…Ä©HŽ›S¬ªäyªÊŽIlª]¦7„j÷7Ø„üî{sÊÄîyùñHÃf[ÆGs”ãŽ, Ƶâ-è¸A¶¡bãÎצ…Ò®¥º-ÿMGVâÏÊÛM`¥M,;ùF.rPJ‘ ©‡ÛJ ÔIøB£mçÛ=$%UÖ»§uQçwæ_)¶&DÉâb‰pñÊ•¹!²ûírÝïì3 ºÊÐà —/~6CVÓ“Üãù«GØÖE%îË¢_—MWmWx½2µ[w¬*6Ó±1›ƒ”:ñœǹ¡O%Õz$9e¤^äùmTŽ* æçë¡k±QÔ¶|:÷?aª>!2Ù¼føgug%?²²ÈÚ{—%ŽmÆZ ¹YCÑ”ãn)d*,°ŽÅXê*áÙ]ï*5Â_ávºÊ?~Ú«§Þƒ}‡'Ìáø‹7ö`¥÷féÝ8÷™>vùÀu ©1ÎEüнMŠ`¸úŠæÎ­½Bäñ_i®-ptÚýT:Íx«Ë:D(€(€(€(€(€(€(€(€(€(€(€eoˆ³²_Wã²á¤L› .äTê[QÑ!µÈSZÁJ–É"ÇËZaÃܽmFÛ£r‹orM7ÜŽ•qx{ÿôuF1•ÉÉŨ§–©R2Û;k91Íg·£/4ÄåKÊc¸êŽêÌi/pm*Jùò •ì‘èßM¹^[å¼\.Bå麬Zªi½4®U÷§<+D¢°Èïù—ðW,NÍ‹IV4Œ¨Ô’ÕmSD3iίÞήÕŠËnlV&v1ƒrIY–@JD—Sé¬2ÊT¬áRn8¥>—Øó.â8˜[„&áIj“¯‰ì¥y”›OcŒM)ó.„»rwm«ªPQI-+edÕsð¥Ï©¼^ÝÙùl{mç3[î¢`cFf^<áef6=pKÅÅ€JŠtž6*Qã¦Úþ_ä¼E›ð»;•Š^êËÜÑÒÝ]k¶Xbu<Ï÷'†½jÝ–¥qÉ©4“Z®+špÉV½‘YTtîq»¦& =É3ñÙcš–dHrZJqÅ4Ó†Ëø£b4¢åH±JMoñ~_zômà« êmÖ[ò®uXcîçR8þ]æv8[·$õ5+n N˜¶ÚYµ•5XÊ”•S䨢m­ºÖ-ì„–Ûò$i‚•ZCÎ)il)C[šA¶µúJû¢{k7–ð…°­ºa»$›ÁotËSÅæñ5üëÌ!Çq.ì¥ñfè©Z,~Ì|+eäo]²ã±šFQ+3nbZYæjcäÒð(*Ó{M„¦Dù9óaáåÊÉ#œ‹¢”ìXòCÊ„úR²Ì`•-°âHQUÀ Z¶lEJTn‹Êš×\’vc'•œæW<Æ6>A†q©È;ŠŠãZ=öBÒÚJÒ¾ZT.£b{l‘¯ÅÂ1IE×28iJMêCgFêŒEe%o ´Ü¬UcˆSÄÀÞ!¹Ë[ ©An—›–êV³4ÕÆžSuŒ­jZSJ‹<_ñK =¯M¾%ÁÂM>žw\75£NêK~.]¶÷P2R¦#t.^a,·’^!ÖñBCL*­¶…¨&ËujPÄa¥#òq1µH4Ù£c]|Jˆ©=øæýõÔ‰²ÛˆÍÌ–z֍ްâ[³8EÈZ-êÒ|Ë’mZ–å²Ç­îßîå\=lèNQ¥)ŽO¾~¿R,ã±ýD“ŸÞdç$íÕMÃ÷,˜AˆÐ“lGŸsšP…-!1É@Qºn¡éjNëŽÂ†ÅCn7uã—HöÂô‘ìNôgr9¸Ì¬>>\¹˜m¿Ý’‡X\¾ðHvf¢·ƒ%„)#IQº•dÚ—8ùJÛZi)$¥*¼cS ¶*ôBi×ÛŠÜÞxõ¾Ý¤ÝZ&ðPPPPPPPnîÞ¹=¿»F>>Ý‘”Ôw§30FF=°Ã +u»jZHRÈÓuj M‚IRz,;XÑWnè˜ùÛÈóm߇|’^åȽsÓÿÐïåPPPPPPPC¿&¿z€Õ´ —÷ª 5“Àþ"F+­]qy±lVo‰È2ŸÜËSε$¾ ¡Gß­»÷•Ë0_Z5_‡g¬ÖµiÂäÚÊT}{N¥ŽÊÔ6Oh€(€(€(€(€(€(€(5$}Ðúô<ÆÇï‰ú‧œÈíyü!@xd0?Gá ÎòǑԟxÞ€;Ã_ºúÀŸÚ )T¶ –½ ª!@}{P ÷Úgùv_ÖžÁ!æ‘oÃP OP:{ZU¼vû ýÉÈÃAúÅÑ@[w©½;i:Üß;})_ZCÿ-@7åõ×£°/Þú•·YÓÛ«#þ*ÍÞwŇÆTPçW6ÒT<†r?j€ÇsÅG‡¦Ó«çgm¬À‰‰QúÉÐR¼cxw‹}]C†ý¿£µ!ï­ËeTž8¼9¡e>ÖÊU¾é8œ’‡×MeÏþ›·¹§<pŒFHùqÒ?f€A•ãó¢ \0ŒüÛvrqªþ5ÆèU}!½# !;gw¬ň-û3ÁýŠÿHoKBnÆÓÝ®«È•Æõûê¾Å…+éÚÈ¿ré®zWîyÆgì(côF¹ èþL§È£–`~Çu4§¾‘U©?›t†rWçw,Éòbƒ@ ÉúC·’µw•AOî{ÎAÅÑ´š'ýá=T$Û¥Û~ÞKÍ™«a@ZÇÿWM£ôçoEWŽ~Áµƒ'Ç?_ÞÔbá6ä+ücIzß]äÐ í¯âUG€Û6¿õSßöªÛÞ1üKIp®-©œRÿ—!tZ|Oø™œúR­ÞÔT(Žñ‘ã¶å²+êWs²YýÐìð»k ‡ ú¨a&•òá•!¼RV«Kr3ï—tŽ.”«Ogo“²€ÿÑïåPPPPPPPC¿&¿z€ÕN³$÷\>åT¨xwêfÈén÷ß¹M÷žg|Í@[ÉZ¹Î6ú”¤¤!*7 7 6žOßñnòuûšíýí,P ÿí×áàönLÕÃd¿ìô|ŸdÄüÄËvñ2Sã(ô¤#¤M_‘€Ý·„ßøÉH 0¿ÞÒãÙ³÷x÷;œû}'éØé¿sØ[–G›š˜m}‰P>‘xIþIÒ|›ãÉÍÉ0רaÊýâîãÓAþÚgþÃ@'IúC÷Áî='J?sÞ2šþ¾ˆÈ $} ýNYüÓ¦X4 ~\µùh aô€uy\>möØ6íïÿ.€O“ã»®OÍvžÜ…~ÏF[¶ü'E‚ÿoO°6ìQûŸV¸çã?@cÿ¶_‰•‹w­¸=ßS›þËôtŸþ&¦mňOô|[)úÚÊè7¼Eøžn:*?üV`cÀÿ•T?þ'œ'©Ùþ ×(ù[ñ8|wT3ÂÿÀ©¦èšEŽîòëÌ•jwª[À+ÿg–˜Øú͸‘@x77\Ý+êŽóRUÚ“›žGý-!¾©dç»ÓrK¿o7'-wü'(W6^é’½r299 ?vä—Ô~¹UZ:¸ÀËžAí÷¿*€ºz]”{å‡oûµ-_^性æyõ˜GÎQs@e5Ñ—‰Ç'ßåµ@(·Ñ‰\-Þk#ÿE˜žŒÎµ„5æÓ@f5ÑiÊ·æjüE¾ˆN ~f®ÏÜÐ)ètïèj·ÞÐt.iþh€Ro óóCø4Rz 7ú!ü9žË=±OàÐ MôAþkoðh ¤x~‡æÇðh æ|?¹o?ƒ@e'ÃáþŽ€ÏgÃçÿ€SG‡ÄOø4J<>7Ãócø4‹>˜¼cõ¨h½ŒÚÒ®íÙîP>Îé‹8‡RYÒSo%°Ñqék"=¬eh·ß$ŠÿÒïÙ6ù¨ |ä W hød›[ß .zÚ    Í\mJƒÅ"þJBÒ´…¤…%BéP7yÁ * <½íP”´«R­ðoÆÞzŠ‚ê^ Ì„Y J Ô H9Ó¾:I2t·–˜ªV¢xZ€‡C§ZýÍ\8’G’•YŠ-t6bÂT˜ÅIPºTÁp|´xf¨¤×B&›èG¾( ätaþhG¾( ¦ú0›wCîú4‹=”EÌ_Ø 3Óáùóo;­¨ ¦ü??ÛÝü½€R€PG@ i u¤´’Bu.ÉQ°âxq<(ø|W–9ËèÐmø{7þOÙkð콦χÁÀçð|ôÍG‡Æø~lO›…–߇ƿ£?ñh23ZèF<)()o˜§9A“~`Š-~Ûq·m¨2ÌSG@"ðüÒ÷÷( ¦úZñGÖ šè41ùŽçѨ¨3SИ"׈Ÿ­Rð[} „8÷DØym@(µÑ)톑n€¥ª2ÇE §¶"SnÛ¦„™Mô^ l{¢mÃîb€Po£pSÛ "ÜO£L’žÁ´DðâxPHéŸä©㆚5¾”@ìîé6íà( Ò¸6›$^Öà( ”t¾Oòtûœ** ´ôÖxG˜p±R Óˆ 펟0á@_OOqã÷”ûö¨¨2‘°±ý”›ñì©á°àÞSõ¨ éÙ~E?Z€ÈNÌ€?yOÖ . Ÿ~ôŸ¬( ©ÚpSûÒ~° / ±~öŸ­@\nýé4ÄíøC÷¡õ¨ £~ö>µPÂý§ëP§ ~öŸ­@]ȃ÷¡õ¨ èˆÊ>  /„·5ÿÓíþ3ÛÛà½aÝyúW®µòûÇrå+»_•ñ|ÞeµhájˆÖª»ŸmpîÏœ‰V˜o]”ǼOÉõvíïšoë–}{Û~å©6ÿoÙ¤rO}}ut«èõ±V·Ü'xî]Û‘õ×f®n¡Ütiám?ÕUZsÓú‰Z«úhûò1 üá÷Lw|î]ë× zËà«y#£O \Ûéòé«í]AW·ª¸÷=óÝ·'wî=îèös™£Gò•êÕn?!§á}ÕUVйÕ}%*÷QöÓñ~G´¼ÏÉåsycÙ:> |¦®-~ß%K­0νØUW*cÓ´OÉûo ú·ºëõc7¾Ÿå¼ÑÏÓ¯ÿg~]ýü*™fé•U:1¯¨G%\ñ¯u=exïl¹XNÿÈþZÿ­õhæ÷>[œ\¿C›¯N®_£æ©T®;»öƧ»hۗ퇴»7ŸÏås2~±î}ß‘Éç'‘ÌæzWåZúxù¸ÕcM_‡¿ ÷–~ëûÞ¦8ÓíOsÇzË»Zù_hÓò6s»húš5TNš]~Ïõa_Y+ÞÃw* >ž{gìþ#Wvõg³ì÷v=ëBy:9_£OÊs8ßàÕç\wÑvíêÝ´Ç ›ªû=½ÃßlûKÉ—í›ëOtÕÊæüŒ¿#ÐÑ«à}Õ¾FÎ\ªXLO·ž±Ì_»w~\Sëå÷KØwmZ~?UþRþîj¸éçúvuoÚK¦¥¸ÆgçÔ“mÝ}qÞ¢ú¿½òµr5£½syÙ«—n?ºãVÝ×Ùíî+Ž=þÎòÎ3ç#¿AïüŽáßœçkäkî6U¹ü¯ß¯m¯FßJÏßï~ÍÂYaÍê¯VtÚ_Ö~Ú¯¹rµþgß¹¶¿ªùR5h¿]çOgÕ¨‡u]{<$Ëe3úqîy?o½S¿ú³Ö¶ÊúÃFŽ]õVéÕÿá{¶ÕÂõUZ*çLzj½Uæ©gJºe\>í}tê5·y{MêœO}ï=ÿÚ¨}ߺz·½÷ýëù·Ê^ÚxZÚêW¿—ÿóô•~캧®ñS/ë/]Ì·wöGº*ü¾ç~_v_?¼ëøþw3àr} vùkßruÝ.Êa×]åáœi½W§oU;Æ?LtûŽöû‘ókìf7G#G;›¥»ò{—ç<®OÊó}-_ѽlÜ¥^­ñ§¯«Ý渚ƪ*7fμëÕA[¤]ÛÖÓ}ŸäüÙ{E¸­Ì¿#»iêÏVsþ?•¯™®Þ†­vᦰۮŒsÒÿ6§N­&IÓW‡*Ç,´éñ~-[¹Ëñ¿Ú ›ŽÓó}ݵ#Ö^°çw”<ÝÛâ´è¶‹ñ·Ããz•L5eE^Ï6ü°Ü'›Ó•põÆWÙ¯eãúÿ×?3]ïûÈï~°çòêŽó§ã¹wïÒÿû-\mX^ºG=ÃӫëùþêÚ^Ý~77ÄZ¿.4þ]z©øv´Ÿl=°è¸öF'®5ÛÕüþñ×üý¿w/‘·¥«VŸ-mÊŸ5sìáùk-Tüz)ÍÍSUjùxS:Ê•ûTZkͧUvWœ{ožŸ^d½‘õW³û#Ý9>­õqî1=]Ý{÷Äó»çxæóý]´ýÍ`Z´?µ:káæÓO{ën6%MJžîß·W^TØESï?èŸmù^ßüÙ·ì¯qï^®öç¾£_ªû¯ïöµõýÆ>‡2²ýy|,õBŸkN:é\4Ó:ã¿`_¦µåã¯Mï=r¦ÐquÓÛîn/¾w/›ŸiöW+“ܯ«ÖQ{ß{×ùßyç|Ÿ'ât|?J¢:~2Õþ&©GJsý­\ÚHUøû_ Ö¿kovTÛ™'áþ|~põרý‡ö‡-Þy=Ç“ìïÆz»àþyë ZooˆÑðý:ÇŽß²õS~Í=Ú«‡Ù!æôï>îµwÒcKDZ¢û]Êùöæåý§Ñëóݻڹ^·×ù¿7F‹}Çð<*ñÓ¡|:WB­=Ý_Z•Û«~5®Â’¦¹kË[¦úlîËf[Hï í·Ì—‰ŸWúïÚ^õ7»üùëÞZ½kêþýèw]<ž^Ÿ.½tÖ´ÿñmÒ”ªË=>Z¹þ'ÄËe6‘ÓórÕO§Å§ùOG^~*ŠBõž©^ØzóÛ`1¿2¶åóý­ï29ú}WùŸzþMªÞ'Uýu¹wõ'£õ>$i÷>¶xiÏ^ÊPÒµúvõûše«ïa§ž´÷kŽ®qØ;ÿûTa=qÌÑÝ#òû¿?§Ô®÷Ž_óoVw›ómñç•÷«ÃF«šr¬ô×ìÿËÓëѶ¿» κ!Z×Ã\³ñê§>Zù´ÐÈÀz»ç5Ëöo›óï“äzï“Þoì‹:=Y¯Óïݹ^Ÿ+™ä½hÙÕáÓMZoSóvéËW1šõ5ËVZ¬öQeÏöyÄíóþОÉ`=më_{q·¹ž¡ö~ܾjû×v×ùëÑ£¼üoð¾êð¯ÄµZÒ®µÏÝúÔÃ:åé¡y{—köpÝïaO­•+^¬*MGý¡ý¶ÈöæëÖ,s{Ïzõ×p²9Ú¹_ξ«iôk*¥]rÇ-ØÓ>£òÃ<3ïäméײýû¥ÞÈwŸœ¬×Î#½÷¿P÷ü§yõŸ3Ðäòù:yœ/£—ÆÔá5h·ö~‹§NzéÎdâé®íi]kGæiøuuÒogÿÙòÎ?ú–ùh=qÍ¿wõ´<îgÆZÚtû–· Æ©ð­×ìCû(™þ­Í9k—¤×u=UÞý_쯫õF<;·3—Þ´þùÌæp©±]ø¹Våköþ­6Òštì­6”•uOG½HSþÝV¾ºêÕü¼Ô2‘ì¯èÿÎßxùµÓ¿½•õß{Óê¾ûÔœí>Ÿ3ºß“ÌôôZÜinµZë¯á*ïÕ«›ëi¦Xל¿Ô–wâ.Í/úuÖ› }Eë>Žüüw¿d}M½}ö£¼ëî>µêOX[‡yõ}­ÌøÍ=¾–ª[Ïþg¿ðã«ïWÅוyêLé¥è÷~#§ÝÓÛMU§5 _zûíÄ?œí_2ÞÈBù²ÓÞ½Mß¹Ž÷½}ßù×#“ÝõñÑ«•éj©××ïV4û´Æœú³¦4ÒS1Ñîã_½\+·M+üµ­q¡gr{íßO>n½ió—íNÖÝëÖ½÷Ù¾ïùÞ¾ùè÷^ïmZ½ûjËkWÄziO¿Êóç×§Oq†z4*ÿ.Œ÷¬¿ªóWQì_P{W±ý™ïŸ:?:Û£ÛîíÞ»ï¨{îZýû›ñ}ÖÝÞÚüš9^•«úp¥)ð¥Zýª=5ç×N~ª™8Ú|Kš«ïÇOdkJlÓ«›=¢di½œÍú—×8¿7ûëçó›Þµú×”¯TêÕÛÍ×Ýy\{½íèé¨z>Ïáè…ižºÇ_>­?_áæ/oWÇÛø®™Sáø´WfŸr›+_æŒ{;ó+ØUzטÏoe{õ½SËøÎóÌüçM¹}ç—érµÚ­N¸×Ü«®íTzrúµÓÝ\*a±_†ëïiYçJ­_Šš¨`ï/`=CÒ¾O/æÏ¹î~wqõŸ¨}{Èo¹wßõó¹ßî>OMMωâÑïèð}­UTÓÏÓ)L ŽM1Ëâ-{´ÑÖ¼Ùe…s»»¸Ûsüä÷Ï?™Í«ì77¾÷ïi9y>opîü{Ïyå_G¥«N®G]wtgñ#NÈõgøkÌbéÚø¾î™êíÃ/åë݉&ã=WóþŸœ^áë_Plÿfý}Þ}aß939ÝÇ“ù·3½[›o/¹¦³Ëá|Kº>Ûì¤tç³Þë!êø6µe£®µñWŸÝåRîwçý§7+¿÷ï›ÌïÍÖžw©{½ ÷kþñÞûï7Íô´r´z«V:¾ïµEéztþ×ù«\4“wOƱº¯£/®½4Ù§ž£:²ÿ73}Uß;ï­ößÏ_võ¯­½QÞÑëo]ó?ÕÍçò}.V«|]g<:?OWU4½9ãžUÛï鞺ëÐòÏUV­4™éæÈÙ~…ÿª·wª¹þÁ{E#æÓŸÍ·ªy jîüïK»÷žw'É¢Ú} 5Xjøk_½å¯ƒ®›ñ¥*Wþ¤©M4)•iâ§^{+Rr¡p             ?ÿÙyoutube-embed-plus/screenshot-9.jpg000064400000516737151435171370013352 0ustar00ÿØÿá6ExifMM*bj(1r2އi¤Ð ü€' ü€'Adobe Photoshop CS5 Windows2016:05:22 19:13:17  h ƒ&(.HHÿí€Photoshop 3.08BIM%8BIM:× printOutputClrSenumClrSRGBCNm TEXTAdobe RGB (1998)InteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT Adobe PDF8BIM;²printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHH8BIM&?€8BIM 8BIM8BIMó 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMMƒh screenshot-9hƒnullboundsObjcRct1Top longLeftlongBtomlongƒRghtlonghslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongƒRghtlonghurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMÿá#http://ns.adobe.com/xap/1.0/ ÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿîAdobed@ÿÛ„      ÿÀƒhÿÝmÿÄù    !1AQa"q2‘¡B#ÔÕ±ÁRb•µ–ÖWg Ñr‚3$%…¥åv†¦7áC4EU&FV'Gw8’²Sc“DTd„5euf(ðñ¢t”´ÄÅ6Âs³¤£¶Æ  !1AQa"q‘¡2¢â±B#c£ãdáRbÁÑr²3Ss$4’Cð‚³DtÒ%5ÓÿÚ ?ù—ñ=01ñ%ñ ‚¿tÎZ/ýÙ—Z~Ó=Ïõò)þÊüF‘‹8ÛBw¹þ¸|blØÇj1e6\7/‹Þçp½F¦}C!¥hY.î]µu¨M¦jò8Êè„zJT|‚à£[´ÊÒ<Ç'fôÅ„óï&;`¾ª'@EóÁ‰Û-{Ã-y&`â±ì1l—¹é*êvëaè©Ã}Ìè÷>pbÓ©Tjk†c/©EZßâü mäi£Ïprºd“xdòØ„µ.œÒ&ãyiˆ¡¸Jm©õW?f§ år§¥‘$ûÁt7ï·‡[Öíb?‰½ònÙ¼‹ë~6Do/¶”¾Òm¢@Ö¹œ†ÏyÚÒ¼IôxÑAuÆ›d›…ÔGªµU›=M±R¨Â+nÉasZŒÉe‚}Ý.¼jjÚdÓuqЭäž÷·hCˆt†»X>©ó®ÿE\ºï;uíöë1çá‚Jµðª°[ñUĽk¤£áZ™”ž—²¤š’q¼‹O»í«bouà+^¨õ|®áLXô›‘fR–ÔfÔ–ÓôN¦ÞªÚÆs¹uäŠÅä$A—dgü·Ø^äŸOª³'©«G ï†ü’s}£äاÖÜuñ.I)a*%>S9%ôýÓvNà«]@Vÿ.¾Ä›©É3“ØC¥ö/÷'Ìdÿú•þmqÜcZç%˜ yÒšlZćšOæKEJPc“˜9F-ǹ[ Ô–p¤©ô,ÜuBÖ þª±Ýhv;U²*É1žÌãø¶4,s=uä”ÉYºÉo©Yë× ­«>ŸÊåÛ…ÆJŠ[`± ŒXùžZÒ cšuo³MÒô«ûwUú$ziv¼_L¿œÏ¢,pû­Íq²$äp9Fıý„ÄÚÞÁhê¤%_s ±ÊF>e|ËMz"³—›äXÙ9"؃™†¤ªD6ˆ ¬¬Ü†³ai²rºyú•X}âtÞÒÝqô­õ#SåúíY9U5»NÛ$®’lÜ–&·™u œ`ùn-=V‘Ð[Ó\øvgÒ|ªV©ôc¼Ô Ž#ÈšÃs.Øqvt”dë£ÀÙwn5Mêo¼W5ÂŒ3fDøP–Æ1¸Ó\2\sbHm„ëpt7¬kŠÏÜyØ­‘¹Ð笧%L‰’$L.K}Ò Ù)DvÆÖ‘o¶×5³^#)Çø§mDÎ5È™H«—J .¶­6¦ÓòVžJ¼v>‹Ú9´ç`’n"Ì»+˜°S2YF›Ê~‰®† ¶|»ã~Ç}ÈmÇòx,jC㆜’Ÿ.8O@M’4ë´kjÇÈÈ’78|gsoò…' IJ¨[kŒYiim¥$¥HÞJR6Esx÷næÖb°r“.6ü†fለó]'îœW¦½TâÚÏ%à•ۉŽ*G•§œv»éÁ?žkC-­úÏÂ}¦«üˆŸÈ`ÌD{Î8Í‘)µy(eN‚!@ tµ"ÔÔèw||LÕuQ&ââ\/¸ÙÎq”LÈ8ó-9È0HC‘^Ø«¦CÊÚÚ™R”©›õ­l·vzOŠœkËò‹]œeþÉqäóxéSy¬{Ró"%Ñt3'næ\Il‹›¤Ö÷ ¿©ÊïÏ{„Wr|ËÍ8¤\^26üæY?WCãèÞà[Ì”„ºøYQC‰ê•ƒµIë[Ùiå£Ã¾ûÉ´ø·l±˜†1ØEcFbCeÜÇ'(K ” ÚêÐi\¼ÙçC·u1$o+À²Qqqäù~ø[Œ[HZ6SËÜl~jŒ6ñ1dèV9_fø[±üÖ!ª^Q¤yOuv+6ÖéO…o,ÐâVº9íþ€QyÓ°´)HØ‚@;IÖÕ…çr{þaÇ—m¼Ž1XØ’-KgÍ ©Â}­A[lìÌ]ǵW‰I§R—+85Ò´’ ξŠßUGϹÏ5o %Úž2¾KÇ2|ƒ-—q àR#2±¾Þ[EÃo”W7’Þý– y”ÜÍ3:ãYsàÊu%ÅûAV*A6ÚEu8Õ• árs{pJáqÐöÇË>R7r£·{ëÓr«[›Fº»áÞºWdÛ®%À¥……ŸÒ×:¸œžíäQŽm³%K ’[nÅÅŽ‚þjºr¼hѶ‘“˜8,Éä6l)¯zFÖ­q{Ü}ºÒäævF,üÖ²vßny/)Áñ¬òpS#CŒŽì\Z¤²TyqkR”•xí*éé­liYêy~J‡6s>îwë„N’—ÜH—,%bdÝ-Áµ{7Ùê½tÖ:ÛC‰Év¦¦íâ]ÞW{ø.<‹w4úQ’\A q ê“~¢º>%S5±ÝÜæ.I‡‰‰c·K’Ò€¹^, 9 c©í¾㾬 Í&:Õ„ó¡MܾÞân-X¨ªêkwî=ð·z²Ýå¹q1òsƒ—Å%[ÙÜôuJ•ë5JâMèxÅÉÉ“FÍc2J–ëÅ”8† ÔYMößAj—mŒpÌõH¹qÞ[8SÆ\šðÂ&AÛ²°µ¶¤ž‰ñµd½ªÑÑãaäÄ4àÎD†âH dRâƒ)K­)€,Y°RÐzÚõÏÉŽM"ëªg4ÄW’Ò䕆 ýÙâ:8­<Â>BE«sŒ’5icÌ•‡¨Œ†[O”7!`).}÷ñ½2[m¨vÛ×.%µ‹1Œw$êñèiÇüÄ̶‚¥¯­«ó«JhŒž6²®Ë|ÖdàÀ2˜Å³ ¦Ž÷^u`:@:áÞ×ÈÍ\Wáñ´IKŠg·cD·šD¦Â¼–ZÚµªç]á$×;%-'?6|yhÒܵP—ÉŒèÒ‘’!i̲RÒC°ž¶ÓÁwJê`ÁÛ+ʹ\r†Bžÿ”TÔ&€JÖ¯¸›WW¥Ñ¹|3t¦¨¡d°Ù7Þ>Tu0˜íº¶£:¡æ–Ú±Q:õµ^´†x¾WmÍŠe Ò¤.<-–O6Aùk.N.ärUáÃ.s'Ï.I%>[àê“k\’µ-‹f†Äµ©vK% EjT§ÐÙØ’µ¥XØ Mkf[Q|5óo êü_·0xu¼c.d¹60I’°¤¼ÁM·…4  rëžÊêOGî+Ë9~Lxó” ä¸ÝÜ6ƒëµz•:#ˆ¸Sf'ÑY]Ú3³svˉÏ'”+*£¼>(J‚¶íuÈ.mJÑaë©Ç϶")Çy­µu'ønË8p^ÁÇrL¦Ž'"óå)òÜU‹aEleî™DéÐÕOeÞ+u5/*ã™>(ÜyRå71©:¥Bàßç­º÷dêiòhñjŠž3"Ä©¬5 yl­i ]À°']N•©Ëªº•ÔŇœÞŒú_Áxgi%öÎ\¦b ÄvС%Ä$; KBFðIúZ¼Üä¦U=šÌ¬Ž'Ÿšs‰çòŽG†#Áz#@Y;šë·p:‹‹WkÊ®]J.G–jÜ×4Êå]{Ì{cj6 '@tp`TRsù<—b¹ y×úBæç×XsÛRÜJ6äy&;Š„éX·Éª€Ãa&å'72R^wèo;GÙ¬Ë.Ã\;˜ó3Æ9“;ëm~ú‘¹Þ±zʹ‰‹ñä¸Ý¶‘bŠÃ²'—k¢ R ìR öøTLÕãÙ©ÌQ%÷,ÃjZŽ¢ßfõŸNÉiûSdü+gf.ov±ù5È“ïØœfAÃä©E§. 8¥6ƒå€Ú†¤ [îÓãÛåa{ kWïÍÅ-Ãý¶nRÅ›˜?!ÊÉ?™^rØÝlM™®å¹‹;”§c!*ÿ»Í éò/$Ðû5³ô5W6ú±§12Ú|JŽt­e‰ /KíBÒü¡òYu‰¶Üý¿2Ç‘2yoN‹,¥—žhûÜho1Wê §æ­ ¾Åµ>•^åL´ZKH}Žã<·œò\4nY˜‡Ç`e_)T¬„¶Ø 1ö–¥!q! íE®M“ãSlª øùÙÞ‹Ù:F>€ppÄedåòõF–eÆÅá°êm™ 6²¢vs‰öVe½ F:ï/î¹ñ×Ûps‡4…€ä9i 6'ò‰K[p£#ÊBÔHBTÙ¶ÔÖK/,ØÁÛ­È]Kãìb°Æ2f&Aœé-LJv­@}ÖºØÖ¥òï±ëø]¾œöðE¯% ˜ ŽZZf]R‚ìI®ŽJ™w_‹2Úö­^ƒëï­00Í8=û"âÂOƒi¹¹'Õ[׫hÉØø´ywdé%ötæÚ…%ìjâDkïieÔ„ôÐu­\XâúŸUåw^>.#®'¬0ûŽ÷ÏñÞI´ÊúC±MŸm~ˉHÔ‚l}5ѵ+eÇßtÍ\­·£7ÞâO˜ñ„–c`œ€Á–™Mäžq W•¼,¤²I½Ê-XWI÷VÑ˼›‘e9&[-È3SU?3š–ì̔Š¥Ç\7&ÞÀ VÞ*l8|œ¯%¤›í¦Wà3‰äYϼÆÎÞì“Ež×rœzñþï*I’·å/©CqwzzÑÉ­¤É†ÑH8Fb”‘e j~mMux°q9ujÒXp©Èo¶ó¿z`‚€OMÝj9I4z߇y›i´¶Å’ÈJ“$¶‘Ô¦¹S ö8îì…Ñ ,6JV¡÷´ J•ì—[V†µ59Ü«`£µIìDŒ¶s9¹ØnÁƺ…(–ÔÙÜ/׿¬ko¡æ_|Ïe¯CxÊîž31Ã1Êè0‘•jœÙJJÒµÆBM¡¤‹ ¤øšÙã]nÔÒáð-’ÉÁHÜC‹;ÁJI)Ümöª9­>‡ÑøÁ‹Vü ¤DeCQ#¥ ´lÔ nHñÜkQeµí,ãrðR•Љã±oà yˆ’ä3’Ç-/µ!€.Ò¼ To®µ–Í4hàÂêäØy÷ggãÁÈŦT™À7‘Ê­” 3h-`ri-<2|o~v<¨Þôm¹†Âü²HðÝáX3Õµ¡¯ÅÈ•õ6d·bÈö礰© ”4…ol$ø÷½«,nu;Û˜Êá¢C†f Íä8B"\oÛ~¦Ý+zºŽEZa!N ÑBç䨶§6ÝM•ç)L"ÇÙJ¢±ìd¬¤Ï- í_JÌ«ÈÕ¼¬­>ømkz&.dp©E^£T-$C®ïWçUÔ“'Š}Ô§ÙQÒ «$Éz]ÕŠ?>\ÆÒÛî%ÈO¨T"ù3;(#ö”ÞúŠÊŒ‡ÙðÖ›’"oq®µAåVÎILß ¿õ¡øoÿ¥.ú÷±´Yu?ÿÑùQñC5m|M|F¡>Ðæûõ.±íRZUÂpXYn?#=/,ëIm Rc4‘©š­ª]#^5 CËqM6àa 8¡qaé5a³3¨ºã-´\HJÏM Z­¶ –屫)y·„cS°Œ|¶­#õä-ÕËŸ£ª;îÍ('û=ëm×Z;B9ܼ¾{‘ǶÒÃA%DŸd$œ³{…›Ë¬È;×g4(±­š#G¸fóœwØ"ö¥dƒŸFÑãÎî°Iùj 7 ˜8ÎÄ9•s"Ã~Q؈a*Sª>@½aÈàÍçY¨Ä11ÂÞ=^kiqA-‚v•ÓÉìpù¶¥a—®SÆÙÁ1É~[Ŏ}(JJ€íÛ¯Ù­¬läsrn´šëÆ÷éÒ·ªjTÄŸhXêj,Y¢ãÄ]ŠÛò—1€éŽ›EìUéVÉFw“%òÔ²‡—v™O´B}«{Á–”–J©–eÆŽÑÇ3Ch +zéZ”:’«+ó+_Ì“Óñ²á­±ƒì@ƒB›Ê°)B\)$ôö¤ Ï‚¯rhŽG/¬PÞ¼‰w+“Ê8çä{‹ Yõã–ÚlÚ˜uו6 L+Ú|+«—¸:¨g»–MÆîG+š´ÅÈp>K•ž•%¥=çKÚ?DZLid_úmkFÜê3 «‚Ésœ”vãà~yfYor]¾X)Fö¹÷fᯡU†ÜšÛ¢)$_s¾>$sü:o*ä<‹pØÎdge$N)}Ä»o¤™“e­Â›è”ŸMdá{YRkBixgÙŽ!ðKð£“íooù/2ív•GÅ¿˜ä->î1eÅÆBÖãÎ2ëIÜT¢I>5—™Ä¦K´½&î>å› æè>v|G¿üŸ½¨ÊHÄ£óâs\x#ã°¹µŒ\e­%h[³d¥à4ýR­è5öºÕIèxŸóS[cäþÓæö{¸î¾r6œSMen5n)ÿwŠâJHÞ¿iDƒª•©ñ¬5¨Sº÷Ìœ…Ô¦ñ¬£L±“ij*¡QØ'pJO²vÞ°ò+¹Ÿ†{“N,΄„ËN£´$Ze §ç×78g·ø›š±öæÓêTù–XÆ‹>CD!Ö†ÖAôô®®&~~—k6Ï{w‘÷þ7æÛÚae§O¤›¨Ÿ·[·Z‘9ÜîWîr*Bc¤`‰*Pè Ý"ú úk^UMÎ+v„ˆ^ŒJØ‹˜É:§_MýΡ-‹'î”|=Íäf×Cë öã%ÑjÈ<–Ùp%Eidîl«rʽ$Ÿ çijé9­\UŠ”92Óîâ¾åÄ©mƒ­Šu¹†Œñ]ú2b´•8ã½5±µ©L_OIð­ä ùŸlÇ_2È®KB" hŸ0=bO Vdô8|Ìq—IÕÌŽ ÈHZ””¤¨ØnV‚æ©g\x“ÇùW{mÆL¼T´8ÉóżƗ§†V¨nQ±\ ®M‰ÊyVGJø¯`ñpÛ ÉAóIL‡‰º‰#BAX+…'&Ç'”Ý6£\òŒƒ{´t¶Ð[IÌTwrÍ{!çd%¶\qke»”4O²|mé«™3òVÚ›[‰ý^¹d722(†àe²„¬–Éó6¨‹‘jÇdŠñù7·³fHÃ_Ö½:t6Ö¦\iÆ\K#jJ[€´€.zÚÕŽ·s³ãPAåò&L‹í:­£_ÐVÝ^‡5Ì•ÙE @ÜóhR¾‹jU”nm =zT«4 Sò¼ßÉ*^y‚úÀKª)JÂ’<{ŠÎá×S.+lrt§ î¾W,€ô¾-! ±¤¼î1)j?ÊâU`Më™ÈHëñ³;²ã•î?2&N$zKð!Ì`lÝÓVÝ$tù+œúž—‹Ûm–%{9ȧçyç\ GKDD{- {WHõÜ>xõ’+ \Q qcª‡€õú+5Q9ù02Åñ¼ï,š¸x˜Šq–’W7&°¡:®·ÚY+'î<­ G3íÏÃ`#³Š/)Ê™JLÕµrË»µ 耟 ȼOŸ'™h6?l9TÜWÉŞ—+&·”^QW²Pvú.‘cjÇg©z'UŸä „-Ì’ÃÂäDxÝ[Ù&·0åh×ˉX×øìY–ËñÕ¶MŸRú|Þšd˸èö^3óKqm¶@[­`ƒèÛŽ°^¸wœ™8þS=…ÆÁE}e©ËH(qæQ¸!7ên@ùj·´#…Ü3Õ¨7̹2‡N[̼ÀTu=>Ah¨%Dí!CîR«í­Zfu±çr:ªÁ¨¦ð ܲ|3€øîR# œ®•SqÜ{Tvº $ì'Jé<£—g0}§ýj#ò’Ç´¿¯0yD˜yHßÌŒáB_ZQ¨Â›¹jÞ fK•ãîÄiR£ºÄø‚dD_±ä(É:¤éÐ×G‘]”“s…Ã÷‹hIq©s™3W.J´Y´ïÓ\×/ËvÔëó¸ù)‰U‹e3޹%ÈM'E²Ÿ>QIO˳ú5Šé¢;Ojóu±Y.mIi‚¯,\¢æúž¤üõÊêÏ_‡…LnˆŒ‘í-Ô©VÔZ™3;JÑ$b”}Ý=-ZÛµ2¤Ýh²óEÄ9ì¯ç¬ôÌÑ­Êã,µh¬d8z–ÚÜÆ¸â"¯©ù mW<ž¸|.ÜÚ†¿q©ß-ÈaqÖž¨X±ù«n·<_#“ šh|Û—E^½M$Y¶{eÏŸã!Š’àú«&ê=§>îç@âmàzŒø·ô:Šóެ!Æ‚B”V\hHÔšÛÇipÌ99õ¦ÄI8°ãϨ-ù ÚU`ÔŸ]u6UTùoÄ}ιîö °XéÜž{Xn?¹-õ¥´¡ „oZ‚Bok\ê~jçg¾ÝQçxøíw,Þ™®Ã÷ojSÜ) à±ÌÙÉä2êRÒ Ü}à¥%DýÑ0­|y]ú7ªLÑ™g"2¥ÁÆ8‡XhÙ//bßW§i¹J}·UZF®{¡´YÙKhYÜƒÔøZ¯[´i+2I¬É4§äã¼§ÐáK¯ÅqHZ´¸öuù«*´³è‡¶×•‹T2Ép<…ÈÁÊ÷¸ãß²_ù†Š­ÅY<îÊñUºš¹÷î0ëkeæUµÆ–,¤‘àEk¼0x^B¶;´ÌÈ£rmW¥R)šêJFäêÆ¸å‡Óâ•iYìÔ s]˜ýŒ”þFù÷T–‚ð5¯&çlƒ"dl¬WeÉ/» ` ¯P6ž–¬Ôö´43Y³mOä¹)‘/q}·P G@z{C²díé­Åø¶Ö _–"RÒ^úI¸J}Ö•±:3³Z(+ 7Q>º²f½ÙåX§˜+,‰ï·*‘!Õ´ÊEʉªÛ"FŽM™´ÜÛÙÌ)pà®*<ÒÒœÜà[mjd­Œ8ðÚd}œäQÑ7#-¦X (IZJwÛ®Ô¤V<™*ž†õ]ž„LŽõ‡#‰yã ©-•·=*°O‰O]j‹2+“ d„þÎÎcj±¹øs-¨fBVˇÕp¬´È›5­Åe;&‰øP¸3»>رk¨Pôƒã[IJ1_ E&KËy`©WVf õ °…²`Vá@ûVª’6&ÊV·õÕÑ z^¦AâB¯¦¢’ (pÑ5ÀÐ’ˆåFÅn%D°*ŽìÏL;‰<–Žly¹äMxv#²¡öÕR™ŽôÚU•·qÙ}¿s~¶¬‰˜ Æ¡°o¯…QÿÍÃqþ¸ëÜJ‚WSÿÒùkñ=ŽRþ&þ"\·²®çòãösRëz™RÐÕ(•6FjJÑÞÛ@Ù'åWiBÌ%/µâŠÈš#S5ÕeÉTdH™jt•†Ö õTnIÇãRÝÚ§O^µŽÖ%(<|Á>sIJœý?£¯¦±7&Å^‚r#JiK}ÙͶ°.¤¶‘ ô „OœÑT’´­JVýÊ'U¦¶¨`½Û%ËßÕW*­©'ÓUl™6_SèPëaEÅÜè«•™±Ô²;)ˆkKá­þR·$XªÞºÖT–evu yW&ËrFY\Ø&+qNÖ@Ð$ø’~Jéa¤Ù&ÅG¨S[ ªÁëM…8ÞâJ’ >³U³.¨ìô6Ã|v$×JП  ®N§Â´òdƒ:ãdðD®+ÌÌSá%¼!µùfµoyFÖ>._î³<ö+/’v?¹à¥ym'èìêIªUŒÜEº&W“ ‘`s¼hŒAúÐÎbf3-¤¸ÛÊŽ°´•¶tRnAÒºœŠ­6cÅÂÍ[íhúÛO‰Î :¤w¿²“)“yJ^G”Aœ¹ÉqdÜDq@44 F–®ÖL8y)gÙ³]hާã?_p!¥à¹-‘÷™x“po¡Ü…kóÖ­»lý›'ô<ŽÑŸ‡ã6KÊ3ð›d}Q‘Î+“äa—»Ô.µŽµ5í [UqöŽFE¢8×â»ùE¢÷gµÜ‡·|µ¹|./©ærŒÚ’Ð ……´ÂÒ]­©¨x©…Ê´ÁL«67ª8?º}ÕøŒîö6'—OÌNÂãâ1‚†çºÁm–lZ)ÝìrkO/1;hl¾Ù™Vvœ¶Ž3Ês1›~*L¸¬îŒç– LÙ*Iù:V½¹L¦.ß•ølorYLo*úÏ :.K §ðkR¶7¹¥ÙÖÔ›{EI±­[e“#íù|QH™ˆó*n¤î@+³jÓÔk´‘¾\bS ø\÷œÆ8¹mù ¥¿¾è¢»k¡¬uª=/~î—äq–$uÎ¥Iq–ÚR›**qÁö«=m ñx¸Wu,}¯Än3¤7K–Kmº°•gÐMn<Š °Ùh6ËA\ÜÊå(á:”ya&àíëóW;>_Aï~ìuÍU{ç$#Zé'jP‚G€µhýf}_Î=6¢©•ÍyÄî^Ýz^¬¨sùΕêÊ„·¦ºÛ®Ãl¹´Um=k=¼wedÕE[‰“™îæ*6û“-gA®¦³«/wŽÍ¯K2²˜f3=; Ò÷êM_q©‘ï¶ælxñåcq)TÆBÖ¥¨õW¤ Æí,ÉŽÚ›>yŽÔfä<…&°‰4Qì]gE~u]vz£=–_ž†¢€d¨la¤ ,NƒìÕÍ;¹)Ù(ëŠâãÌÍuA*I…ML›”Û\^²Ef2›ŒKÎ ¬ëÙ}¿-¼)¼æ_W#iVÃf¦)3£:“â—ÖõJãqcoò\¬®5€„üPÞ›?!Kó_@óV¯å¤¥U )62ÞQ¡¤dL–Ö×´ê±×_[µ®‡5½Ní÷sÏox–GŠe8‡æ¸ÌùyîLÆRW8ùÉP+é4¦;vž¦²Q&YIÍ2a¹*c«ƒ öãHyB#JIQ 'Dîñ°¬ŒŠº«Y:÷–Ž=…ãÑ’ô8XË8äPl—œ·ÒrÝlk‘“$³Þö׋"–0Øm½Kô½b=ö-1­ ›«Ú¦™PJ•mÆú~µ)˜¹/M »êT6œqµØuDÜý7‰>„ú+jˆár½š¶ÄG2ÈÆ†¼b&L… âK¨Œ²”*þ lhk¡Ž‰ž¹÷¹¤É<_q‹jDlÜv9$gR·fR:½$e¾5mÖ6V?,¹¼rJDf`ù¬ÿcÆa;R”ŽŸj¹™4gM=94dg3+ºÝ^Õ@ñ5i„al¿Î¦ÛL!··jV®iÔÞ¦®Y¿Æä¶¼à4 ¯ãY èeî–²7,0±Ï¿…ä Çá aÝŽ˜.-ÅËÁKma%„¨ïej?I@Ø(ëQlrŽ>~M¬n:Ž#ƒÍrÜžj0øÉEˆRaI|+¸¡´©¤Æòôt)D@Ýàkãšï,š›‘ÏÏs­ñ¸X s¢cjOnù„w†*lGv……oMƨ­eªƒ µ%¦dùsïdãAγÏ2¸–‡ål¹V-†rÅ›YÏ*Kif¬´pVͧ¡Î¼†7 p ‡†üTdÜóWBÔ]Æ­²Rì-¤Ÿd+QY3fV¬Ëá¾%÷5¡M|)ÖÕô\IJ‡KƒSƈ=W/‹[õ#YukRYÜ¢– ·ssµ=ë[“TŒ\|K„J6›¥)@Ö´$ëbÆž§Ž"Ö=/U³66 ¶‚PMþJÅfP¤ƒb>Ȩ”ž¬„¤)&ÄxŠÉKj&Šîf 9XêK ›2u0³Ë÷~ß\Š`×F:ã¼XXÚ¤›[Òkgz>iÎãùW:ˆà8Ææ{.ËsòžAu :ACv%>5­Ÿ3 þh*Nò©“[m—dy‘Ú*01hÜï”…¸Ÿ ÆùWƒÚpxøñ¤Ù‹2r.í„”ûAk±Qù†µªÛ»;tæS9”ˆ]ØöP8âM•ºö¬ôã³Vÿb«‰- ׈ü—sRÒúÇ”Ë WRµ'款CLó½Ï½Ó*„Í}“™2œzóŒáR£¥ÄíRôJÇl%'‰Éš®Ì—ã\Ç5Çf'/†Ë/ 3<æži?IÃìØ\{Ö±f¢Kâä5¢7W&ïßw³üMÞžÎ%xÜ‹HZÖCo©¢ óµÂ¼kQÊì‘¡—,Ànk.FSù_BdíÛ&SqèMÜwþÄt­KdƒÒðû­‰R#Ahµ2¤!kóâ‘bOJ…œ÷}·Ž¸µ„?`»c­‘Бm~ÍlW’×C¥{ÖëR³ÉYÇäYw#(%™ÈóúO€W¤×SÝY<Ä\UNË©¨ÜZ<Ïe6µªÖPd·µ—LVÑ R¤5½‹F'Ò:šÖW“eR)$3n½ßìGVÑVžÉ·_’¤ÕÄ÷0’‰)]䨩Ë\î:ëW£‚ùéMO’ÍÐÛî!) 65·\î ׫Úä™bBg7g,_H¶ãÔŠY+#¯Å˽k+P"ÚÖ­Ô™@0ËÒÒJ‰¬6¶„aÀò³oöÇü\Ò² Ú;4½”¯çæÈÍìý®Øª¬Íј“!xÉᢧ[ ³X©’ÈÅXJ0,¾Þj* kïÎ }.§¯Y·b—[u+Ì@}̇å#–m· Œ°×¥ƲU6bW‘,ŽEM¯xö‰ömzøÖÕkITåÄg¢% SïÿXxýX&ºg¹Á†Ëq«à\€e1ܧEvr“ ¸¶·AœŽ'‹¢á…‘¯° kW/oh¯ºØ‚“lUxŠëVñRM¾Íj>>Ò–Ád4$}>…£4dUáz¨‘Ô9ÏDss!WЭ;¾Ñ¨¤¼æM`9´àÓiGæ ˆ3W+D(Còµ©Û«©&¤¥­'¾^‡ÓS%äz|ü*ÿÖ‡á¿þ”¸ëÜJÔÿÓù£ñ8¡üdþ!E¿ç3–þ¼J¬m—CH.•X*xÖ)¥ùçÆ ˜%ãã·õ”ýŠ’v“ˆ°Ÿe‘ö+Ù) -§Y²I ¿ZÃk6ú!DE}áì…,/T“-pßÁ ¥`rRR¦™Ç<ét[ÙA¦âÕàæ»Ñ âv«LLEÇ¿ýÓJºÉ¡¹NÅÈ¿9²™g|éì1êëO8ÝÇð·&å¦f#µ´ÊÊ…íúIJhó<f²Ô¸Cí¾(Ûïn¯M”Ø^°Zòtpüdµ'á} Õ™¨kí*¢¶ÔèWá *êk>ëÁ‡‹cA©AKQ½É)6µt°Øòï´Wˆô4w–$޽ elò—þÙñ†¹&dÊcÎÇãï2R~Šˆú Ö —„zχ{zäßTuûHm´$3–“od …sr^Oªqû -Pº\wÒõ$ ŸݯiÀ¿%RïªÈù*kc%»v´HÓ9Däï†ÇYRãÅÇ$C›´¤(-iômRf®HG‰åpÿïê’Ð݈Sͨ¬8»}ѽcÉšï£=µ8˜ÒM¢œàçç8/#,±¶4xþw¾»µ¦÷6nV«n>¡Y0dÍg ³Ï÷·Ç®6¼K§jø?8ç<ç0˜$僱ŠÓ#®@òNÛ©’°¡ ßäð¹j»’låvÞãÆ¥²(=öãÜËÀä¸ Ž,¼Ã^l‰lÚý?£áàkOŒ³'M»·7’ÕUŽ¥à‰J\²ÛgË•”©!I)öJIEaÌíKê´= \_vMDÁ§ûE-ÃÅf¥¥¤æfZ¶¬ÖKKF§gãáÊœ¯øÍ˜$=r\;½$Š×mÉè?Ë0¿•¼ãLGP̨ÔÖ}‹g-ïCˆód{“Vý׿©ÝßñïàB;Æqt—)>¨y Oá¬Ihˆ½½â² IeMÜÜ(¡ôéO:N_#áJY脜ౘˆÄhsÇ•%-ßC©¿Z£r®mÍĬW¡WÉvó*±¾,Ÿ0xí75Z¨0òíÌSŠÀ}ÔyÙD¼ê‡Ò%'oÚ¬‡’æ¾cnjË Iƒ¯",F”-b6ê~QCÏæÇ™õLda•oI`4ÒÊ¢¥6kªµÔd·1ØÇØ—u^)OSòÖMĺ‘óDœ³ƒÞÕî´&:~š’<=W¨L­\2ÀôÄd1Y7R•8´2ÓK7 ¶ØÓoæÕ•͇tÑ^àxÌ'ånæ·ZaÏ;Þ6’’¦ý ßÎk'˜ah€äO¥å t¬œB^šüf\Z\Z‰=lêõÊ‘•WSlq-Ö#Êh¸”Ÿ¢=7®g+&æg­`´É‚—w- :Wogìô­tާ¹ßŽôf»ô‡’Ó±Û &UýƒoMfU=—â•Ã#×åÞæ×ð5*‡fÜümÄy‡Uí«q$x ܥ߻²^ÍY^›Q”qÄS( }F·)¡óì¹í©ŠÞNCÊv:•0>kÛNÝÇ¢wt¹¦Kèt¸µ–n 28±<´Åh 6:sš›¶ÐªðwY{5-à.àh'íÚ²ZºjÒËÖMç Jƒ…*‚*‰A²˜ÂiÂÕ”°V’B¾ÍfLn,ñ²¾ò†ëmLBp<¿>ÊnÃ]ªJ´ øŠo‚<­Ä¯¿b2cÂZòù,‰b.;Kp»ˆŒ·ˆJ²q»d\¢utç©­’®¤¼l¦$¼¾9Ùòæ`_ȱ€Éò]åOJ›±N¿9*û’Ó¡!»tN””eãñ²e´$D湞OEÅÌÈÍß>âR— Ì¢YµKÇ'ÙOœGÓ%>šÃ|±Ðõ½¿áûd‡tQÜR7<êµqõ©Ç\=TµjT}dÖ-Ò{ž? ¼lpŠä¥‚¥[³cÈêŒy)`¢±eÈìb®9e²<”´ÓƵZgF–¦5«y™h% Š—P< ±ªÃ2&¯õX“IBIöa~€n*"ÕRðOÒJ¼H¢D.ƒ'ß IAÜzUêŒÈ‘2Bc¥^c‰ ÿ¹Mmã´®fe´©H/3#Þ#2¦ü»%J"ס­òx^gn¿&Ò‘g[rÑ1Þœ°È#{> ·¦µr³­Ãí~UfÇBqNÔñÕàaä2¿.|¶|Ç"¥^Z@êmWÁz½¯Ë娎ìRÌG‡¶Rž¶Q®¥0ã·C‹~~KhsœÜ6B"Ïš€µ ïÚno멽vô5òð²ºî#St¬%^Êèj­›«WF:Z­¡=:Uj‘‚Ȱq¬ì\NIs^÷H-ɉ` ­ÂÀÛÕXsÃFçµú–Îg‘ýR1!´[óÜV¤ßD„ús•öÛey’máÆŒß–Ø>Ö®*ú¨üµ͸ôœ^Í‹ ¥Ö6„¶GˆŸ²k–ukE ÎDÇö|çénûU±LRaÉ–Isbl¥©DúMí[xðxš–Ϩr¬šÔY† Â=µ|õÒÆö¨<Ä<×g5­Î8[ikÉäh¥“^ ±+ûÛ)Ñ7èOZÁ¡µw¤@J§D².‘éW€©I˜°UTa"JÞqn,ܬ޲"3ZXÎúü½*æ°öªiÍÀÕ·hmq/‚iÆÑ%))tô¨½£·l{Œþ)n ORk±êc®O&Ò_¸·8{6ÔŸ8íZ6"új…]ïjèqò6øÂŒæï4­"ÆþŠÞJO˜¥,ê.Æ¡¯É켄2S%Éa·#ªéZ|«|ÆödÝá³nŸ%sÙô˜h<ºÇqš’¢BT¥« Rjõ©L·U«³eSŠ»7‘ä|åkm¿ª0sÝPm–áÆÕ× ÕâêÍÀëjÙXÑã°óð¼ö½ŸNƒg{ ÇßÅðlœÇ1ôFEÀ[ǰ«ý+ÿ®TµR0ò;ÎnE¶áD>K‹òZêdw”HÈ”äá "ô!)°5j_c”cÇÙòg×+"žíã¸âᜎ~HLt¾âROôÈP"½â,˜”BfGÕ¯ÕdLržE';Ës³XL³,ýO”¹1#qyj:Ž•‹“ܽá¦ÒGŸÉÛW™¶Ìë®#?¹<2 .YÜžõ§ŠvÒ*·bñó1ìIÉä‚>„|l%£qInW²*Þe/_iCµ—FÙÌòy&_“Ìò 'œ®žÈÈ™$Ÿ-3 Y!†ìRI¸¸ù–ºt;ªù¸•—Ñ—|7%ÄòHÊs!Ku =æ©(y¢u²’u·®µG¯â÷/5$I¥*:žžVuÓ”*A ›iãX]‰WK©-Œã™ŒÁ¶3ôÛ}%$Y •,û |õ°ò¢`1ÛÎ0ûèçYg²9&ÚÝŽàÏž<༽¢¬ÐË’ÎÚ}±%ù‹e‡d©„¸, “ÐXßã¯gSß% $yzD]ã«ð[²HÚ) ¹­›‡KuHŒzÒב^/ ×i ¥ÙjO€•ö„”&û’ö*¬vkÅd=¸åy©Xú.k¨¿ˆ­¼xdÂìS¥dáæ K‡ò"ÈR]Rlâ5ÓÕY¼¨3àä”ÌD&”û­:.›'¡·¦©vÙÇçò+UÙùÞfÇŠô´yÊÚ­êÐt²jqÒO'•nrWòÜõ¬Î5™­¸¸Î-°´¸FÕJ~Jéa¶ÃGÊö ëª}÷]¾àµ’O¦æ³oÜÏEŽ©ã†Deà4ä7d¶›>ÝŠ­â/[ž\ÖO?ܸ©)D&:³G˜à>JF ÐÉ(Õâvõ—©j‰8Ä$-ÁÑn/r‡®°ùVÈz70K ‡™ªô>‹Ñvëú÷%E¦`)Ñ]4©¿n²/þj˜Ér޶:ŸÁî–©>þ˜›N’IR‰5¹‹†;òyô隯‘:š¹r¨z”ªË³\Q;õV¥ž÷[;d2ÂET©Í°‘u8âR-ë6ª^ÆŽ$us|#þ1¨ó!Ç}¶šså6p*×$*£[3e9ƒ•7Ž‹——O¸²­¨¹¾£­mµÕv*§­R nÌK[Ô•iË):Q™øÿX—d¨Aéb+´3Ñ×êŠäT)rþÒ‡¶}&¶[M„CÚÝ «FƒBÆcÅ!µ¸¥!=zˆ*™š]pX¡dz*¨;1vg² ɺÁ|t¬‰”w6>'“%m6ËÉJš@tj"Kn§!‹D·e;±â¡d$›„ü‚²Ó/¸ŒÊd ÈISjÁ¥‡£ÕS’º!ÕÁT.nVš“Z*’ÏD²Ê ¨§ZÛ¦ E^Q³­©°U[ ùo$[Ì¥fö-bz¬øUˆ—c¸…¶éôŠº8ùqí<*Y®<Ó[kBYØôU@ÔxxÕÐ=7E¨ ÿðžØsâwáÕW¶Îèqkÿ¾¢UY êÿÕæžþFû¼÷­~êÑYçÜ‘E{EÉ9I“\Ü—öŸÊ}‹µvÌVââ³]iWô#Y£pú $€ V'vvñðqW¢ÚUÖæ¢Mšàªð3 úoPf®4,”@&Õ ¶Ñd¢ö¨.ªzZ×¥ *%£è-°r†ô¡zÔY-к¨á)·ÍU“" ^Þš‚ÄØuÒÕf¢ÐÔ½ëŽáñÞJ<ű5$“Õ>fšVΩà¾.Ç59 £f Xu®½:%ÛN¦ì4’¼VnZ6²ão%«Ä¬k¥iòO©|ʪ¬6oEYÝ@kÒ¹öÐúÍVú˜• Æ_FR;‡•V'†æå2¢$ÉhB‹·¯™ „iòk%O=ßrºbiueOvµ˜˜¸1y.VNRHCíqÖÜSpÛu`€}¥t¬ŽçœíÝYn»fÏŒ˜xöSF Æ@Ú–XHBl=6ëU“ÖàâcĽ”`ô„(Y´]U Øu­o(ƒ³m¼iZɇ-aÏŽrIP;ȲX^MœC)N$äÁ0¡:›%R]nà/g܃¡5¿Xª>uÊÅ|ü‡Z–·1³çæ]å|Ã+#—rgõs!,ݦ=ŽÏÑB@,a¾c½Ûû2§µ}Y°8§ …')Ì›±£ÃŽ“T™1 ²ÓE!kS ¸ vȲUóµ·‚µu–;º…Z×Òku¤#™ñÜ»QTØÉcfcŒ·o0¨‚Ð)N¥_5ry‹ðSf×ê7S<0˜HÊçÃðÄn3ónËPë÷¶ß &°o“»NKh…<£‡bÜò¸öo:È ‘œ LxPû¤´=µ–ÔhËZZâY ÿ2ϰcæs#?C ŠHA±WÎMC©·Ò:,0Àò[g‹ŠÔÞ¡#:ÅQÊ”.¢Vêð_lî([JA05¬›T•±âš#­†6 žµqMÀ,4· wƙ┭› BÓk¡~´4²ð1dPÑîxõ’6.+šûlŸX¡Ãæ|5‹"p†ªƒ*"‹­>8Ô‹Ù@|•‡åü1“º‰ñòÂUß/J¦ÃÌò8¹0èÑ‘†…!cuÁú*ëö(ªjõF½“ǜ㋎’³í)iÚo[4¶ÓÉ< :½Ï$¹~©T[0Ù%Ëâaáf¡ç˜S°Œµ mZÈ@úE`¾Y2VnÈÅ­<Ç@H$©J>&µÝe™ Õܳ#ÙˆC£½-¥”5 Âl…» u­œ4lÅ} OÊpÒÞ[n£ r¯ÈÏØ’dtºN¦³±VcæcÝÔ¡H*½ª#¬IFÁ)WTï½ßªÀÖÿ-<Ã'Qê°MÇeäÆ;Ûzä©Ï¹õŠy„m+iÄBˆ åI¨«é¥]dEV&Íá0fHˆ\„³Á­çaoC’ëaZY3{PŽ®  §)vJ|íQ½ö« ·¦¶±)1fPVx®'&ö ”fâÃzLlZ[TÇ[ARZB•ª–GAY,õƒA©%T)––Â¥ ¬ü•–¯C…±ø‚óÉ[®îCwQ@ÐX ­œ•…¸™­ «ko!JK#¦‡JÔ¹ìþuÞ¤´´ŽÚ´ŸhhzÖ«>[ªô} PÔ6Kõ?  k˜QÇÝ@Ä)¤«è=›üÕ]¥-˜†‘%$¦þºËZšys²d @>ÑÐk-jäåó9Š•’;’j$Y;Í¥$©C彬kaa8ŸæÊ¸Þ¥I× Öã—ÕD›ÖÝ=”x^g—#³,®àZU+ë9ˆÑ–ä74¡ÄŸ(þ‰7éV“QÚ8þZ,7›2j¡r“é¶5tw»Otx\[¡}Nm¼Ù…!¦GÑqAä¹y±ígиÝ÷ Z–^7IJü—$¬f™Yì²_}- í@6¹=:šÔ¶†óï¸c©`Êv÷?Ç#»”ÏcÅcâ©!ÉN ‹¸BRº“}+c w^_Ü¢…aÏ«P’ã¡Ônh²  Aé¸kcê­ê`GÉÝ2OQ<>\Î÷3o0…´­¡¤)eË)éj®lIµåÛ#ÕŒ9nô<[Ï>àªï'iVºzÅEsÌ®†¿•!å, jÝ$6ß— H‘Yd£ámr"¥!´Ù±ìxÉG©´š­Hi9Æc=ä-²èP!ßUt«yPy¾o>©ífpeÂq;Xp$ø èkªgáó(í¤kê¤mRŽƒÎ¬4/+R ¸ª®KLD‰ûâÀ±¸¬Ë™:m¡˜™óÖEš–êWÌhÌÍq)%nšË]†¹ï/f^ ´†€J~í5=ke¡ÉÉÏË©3ÇãSš”æL¸©ŠX-¤'iÓókSd̹V[I—ŽÖ+ ¿p|– ÜÊÔ|õŽ ЖÇóþO‡¢'$·â¼‚‚ӾыhzÕ• ¦÷bœòÖ⋊Ú7Qõš¶ù%cljMdE-X<µÍ ô=l´|µ ÍÇSdM7 ù«‰é+¢yWz+2z9í# t7ªI¡hªû´¤˜…»X_J˜+"N†õ%X!å X(ØjI:nBÊ‚JŽº^§s.˜çËYýÈH¹Uëò%e’-¬%bähk/’äédå*בa>ÎáUoÊF}Dl‰ˆwD([Æõ‹%“)ïi—¾ Ö’l¯œ˜ÝÇÔ@ ƒáWF–x#‰ö¨Î{=¸¨ ÉlZVöëR˜•)O”•%)#BS ß ®¥¿©?wÜþ úµªÈ]OÿÖçný'þ]»Óqÿ9뤊ådúÏå>ïÚý–útÿu´ááX™ÓHU½I•!p*K¤(”ZªÉÚ.”zª¨Èª(R]TQ-ŸE Ê[ÓQBꢩGª…¶™ÚÚUY0fŸM@=QµU³--¸îº›<# ·U´"C›“Yðu<‡ÅMy-œsï>ÆÍċ训l|RÙ&̶q9sqó“*_óRT¿@|@ªäJÇc¶sm‚Ò™Ö¼Ù|œxÜ}|{ðÛY÷Ù¦(T›ZÛC§èÖŽJAôÙϾw«,‹•¡]ˆ›ZÍ×d’(œÅÑ”ÊðL2Û¼Gò¦T”ô ÷tÜ–­S‰ÝÓÉz¯ .ÎLuÅ©Eµ{fâÝ K:œjÅL¦B¶>½„øu?b ÎÜ&K(6µÏ®•w˯¶ÚP\¶ç°šØÅ›"ØÍwÛ¸K‘ÌsjMÌÉæ,{ {-ý/·Y/šÂí|zÛ=¬Í› •ËJD \fÉwT2ÒIÐu$ôx’kQå–wrä¥zS08,;Ù/!È¢^m Ç1ñ˜`r%×ЂYº ´ÔnÒºü]jy.ãwkh`{›Ç±=»âÞûm¥¹LÆŒü²Ô–¦Ü~è`à„ÜzkG’–ã¹Û¸ï-eux)™Yne¹.N_ É:w;&[Šs_é”oó ÕU;”ãV£ÐÒÚ†›KhN‰J…^ ꪢ¥d o¯Jˆ-"eÍ´º+w[_Ã¥L âduÒ¢wÜ[7¿Z˜+¼nì¯ ×>4‚›ŒîõzªFá’„; ¨Dˆ©´@ÔxÐ6"IIÒúUŒ6ª°‹èbk~T˜éZF‰XPùé+•ÙðçZ¢%ì’’!¼]@Ô2³¨õ^§iá{ŸÂîºÌ6²ùaÀZZMŠW¡©kCÇr8·Àá¢Ï Ú,í÷¨ýXZ0VÂ9tRX ±±ÔUcÛ&oÉ Ô©±¯«s i‚ÞÒÄ”ù—=OÅe¦9(í ÌJ ¸½Ž²·×1Ä n¹êw›šébÅÕÉ’H”Ëqád[ZÚÚ ×v'"JfjÛjaSmõÏ}&±¼H²d³øGJ›Zf¶üC«@Aõ›VžUj9CEâUÛ$8 í¶µ·R2Âãxþ&sïrxÁP[oû‡P¥$ºT僠ƫi6p´ž¡ÌylWà7 ä_%&è³ìéò+1¹–t2rëZÂ4óË™:Ì­·œ}óå´Ñ7$Ÿ‘[«"ª9nÖÈÍ£…ƒq̯˜üè§—Âr<ØñÍåÎà=“J_s1쬚Â,‹mKkÊH+©¶©; :ÔæU¹* ½ºh ê"¬œßs™Âl²Ú­Y¬v©Üìü'"%Ñ—B™Rʵ o¡ù«Ä}¼åe2 òhì ¶Ýœým»æ$|ÔòËûâô‘îå¥äœöAmBI*QùI§–c|Ñ'ß,€ 7ñ½]c0ß–£¨†(¹39‹i’ÉØú]pÈp6ÐBRŠÔz V|5Ôò߸6á ¹ƒ1˜Ìå…*<¸²e8¶Ÿ‹pÒ†ë]!@ ®+uã<ÓÍgâSŠŠÊ[];ò+öcÌÖY÷3J•âÛÑ iaÄýÏ”GæU•Lm’2Ôœ´Ufá·åIl„åâ'ÁDhêèUö]hˆ«ƒeqÎâvÿÃÝãù>æk7‘+VK8§Ò…¶Ö‹6øúkð« \¨67g;Õ·2ò™\wò†FR*#% |4ZBA¸Ööª®%_S#æ?Ibî×ÄW¹yž<ßgÆD†ßyß4:²¾Ä¦À[SãSäÖ ¯!³œáÌ_ IÜU{š+AÊÙ,þJKM”!å2±÷h;MþQXò92ñ&×ÌÊNȲÉ)R\a ¸£®ÑXOuÂN•Ô…R½“b MKå´‘’áJƒNÑ5‘84³}Vké Wœ²£¹@kr—Ðùÿ6ÏÌd† ?”‚Ü•GSÉ<{𛨷–¶¨Þ™N5(Ú¾Ôw쎥Ýi¡ÀÕ©mÊ­3ZMc.4¬|‡"ÌeL¼Ù²’4TɇÄébå&† p‘ÒµZfk^DåæQ81;![Á±ùêë+E©¨Öj>ôBï ¬ÔË';Ÿ4D4§ã”­¢E¼=5‘œ‰®†/IvB·:NꦒŒâ¸–ÞCŽ'ÍBMÊ=5;Q޶‚ô¬æL0äË€Y*MgóJ ’ÐqE«í=/Rbv–&€U`ä h¬M3w/w©­âµŽÆH†ü|sjœÂ@ß3ïÖU¶•$ ­t6Ò·±åtFÿ¹VÝK¶:T%¥zÚêtM¯o²u¬w¶æu8øÖ5s}çWVÚT‚H¬i)‰,¸ƒì/O¹½Hg ¾´}õ` P¤˜Û7%$›zhCcE nöSaBÜ|t¡ dã¦öûT*5òÊÕ{ÐvmJ€z/Ò¤‘`‘aB×ap «Æ®TLQ`µê.*æ;Õ[¨„–¢ÏkÊš’mýmôhâ¨Ï¡Äçö\\н5"œž)*÷yŠ›¢”GßP?L?î?dÁ.¨ylgšÕaN›}0ÛëQäž_.ê8e??’f;®6ÁCÓlêÆÐ+g(5­ 9æ8}£¸_­nÖ¦c&£o6:zÍ\ˆO’Jã0àJÐÒ&Á´zýgÀU[$C‹ófaÍú¶YÙ†t€Ã‡U6»ê¢O¬7ƬZ¶7K(G˜—’àS*²›XÔ›j+K&-¦Åle>[i¸nÀíMbÚfL¦d_ii°)J>íd IéáFŠÖÚê[á7Å0°ŽJMœ”ë”óáìN›~ÅëRû›:øv*É¡r<¢~C7ºt—Ÿe’´ÅŽ»mEΛk{ `äòóK„äˆÎ´Tã‹ÒêÔXVÆ7©ÉÏwr›š!r @éót­Ç} n„d4í/ËrÞT$“¯ŠÏѪ"­ÍËRú•’j膛C–d<ÁYiÅ6V’•í6Ü“à}U%& înMÉ©,…™ë+K8¤)&úS@܈ys’HijKoÛÄÛubÈŒØîL2ZˆÑQ·œ 7Öz´ö´BaÝËóŸo­«™èûoY‰:ú«`š¤ýРŒqã»K ½L¸ƒŽªù:Õу%Ó©DœÑCê·‰&Õ³W¡á;UnÉŽ1 YIÇ—˯í}fÁ6½õùéf_…}¨Ø™~0æ%´½É¬»²TBWoê©ÆfÏ’O!å˜äPœ–mLpŸ¦ŸAÑ[JÞ<‡R›>º¼¤6èyràEbÉS©ND¢4êuð­m¦Eyh„ú¯Pêl㾃iÇDÔÓCW˜äb‡ zú£’Ã):Z±ífâÅC=á€@zÔ›^µZÅ*qD¥$‹ÖÅjqòÚl.!(¥J)#JYAHÈ$xÕ«©Y<)±·_’²m z*X“ÑáT:iZEºV6‰%âµF‰‘O2ú›Uàn7¯ÂпÄ÷Éþ8‡ëÔJˆ!=OÿÐÐ=ùïŸyÿÇ®Eúç"¹9>³ùO¾vgÿcƒþ?ÝF«]*‡Q1T‚*DŠÐºb›íaUhºbž`ôÔ ÈÉ.±BSó}t&ArH—aB®æ*œÙ!&þšó‰’â¾èè¡›<܃¦—ôЫ¼ ^} Ñ+½"LvË¡­y‹¿YíŒÞÇü‘t¤7©VZ{¹cyÔÅX)º•¡=BNãödÞyuØ›d–;Šår ¡×Hñ ·æÕ^C¡ƒáæú—ìn "ËÉÈ~mú6VvÖ7y;Üo‡ë^¥þ3ˆ‹îð£ˆÍø„­½5Y;˜xu¡ Ýa¹l8 ÀuÔ½©~T¦gu1‰ÍÙ2]GV ´© "0q$¸vŽ–¡2*þa û h­>FõXÐ5ÇåóÞP ­,=e­¯$\ƒŒ-k›‰sÚ Zý"§q­lu1^Q%%¸m5?M¨HNŸ5B/D‘ë (n|-ÇuØR4©hÏ[ØÙqÛIÜB7 ¿6«ÅnM‰L/D:•ŸÐŠˆ2+‘¸ŠÍ¸ÅdW%Du :€¢–d8 ‡ôºÚ›Šm#ÙŠÆò•€Jª®¬Y89mÄ$iV“ÆéC‹P IQð\Õ-x"¬^Û×.Ò¼R°R~ÝC.ÙFAƒtA¸P«õ5Ý¡–œ6@>éns›ƒ)*eî—à+^Õ“¿Ú-Wh³’™ € hWÒµš>ƒGW]¹jDU7 µõñ¢©«™¤C.I¹$Ú³Ò‡+7"«ÄÁrAö­¥eòàÓ·6°W'¸åÒ ÓìÕàòüÜ‹%ÍÉãmJãQu±$´¥ÄmEœZ| W¬¥´2që¡‘Æ2qòÞT”Ûj\?H[@*ô2å(ð¦;KŠ]Ñæ'jôVeckC'Ywß½›‘Ò³¤š:œW(v;©Qöô6ª[¼êÆkóÖÆ°¼d'd"·TíµcÚEæÆ¥«¢M^ˆÂñ154½AI¬ÐkäÂ0p)ÄZõ ¤ Üúj²bÛ'h¿¦¬˜V2ÔÜ+5.¼Kù¬7²ð6;\ê/Ҳ쭊ùŒhòVÞ¤h|k±ò$”©Ód‚~jÂñ¹/Zn$˜†êÒ4±¡ÒŠ…¼†*¸k QHQé­d­'Éf.Cy(öÖÐTÛ Dù"lGJÕ·mÍc­aâéÃÎ ­–ÉO[ Ú¯L#«¹šÚÈP²¿C}j_ȹ,nägÑôРEb¾)lÍ#ýé¿hkè¬iA‹¨è<áAû"±ÝÉi#RÒßvȉ:о4clRkf*Д¥H¹·Êj×Ñ—¢Ð‹qjWUU–^˜.xòÕD# ãƒîȪ±¾kŸ£5l•)$“~µdŒwêoÿ…rGÄÿÀ¿üèðÿר”dW©ÿÑÐù¿îçÞñë‘þ¹È®NO¬þSï=žßöX?éÓýÔj›ÛCáT:ŠÆaÐ:éR7™ ôÐnT‚O³j†7ùËõUFã?9dkÓÑBÊáæ, ¡;Á%K"æ‚ÒÒ”FÔ›ú¨Y4>K ÇmlŒ”¥5p‡Z¯b§’”ðB’Uâ¡R™§{ÿ"Kª;·à£Òæ’kùrË/âSë R¾ät¤›˜°£cÁ†Ó "È‘í[ƪt±bH ²Ñð¨ƒfÏ +Ù°±>4ƒR7x)–ôPt"¥eJî==Ëá±W¨T˜]‰b‚, ·¬š ¼âQ퀳[P­¬C³“òü¶û'ABŽÃ)Ý”lE’:zhU³ZqJMÁµ Õí¸Z¶ÑÓÂ’dHY/-d•ièJ±ûªn&Eb~;Ë(ûà×ÀÔ2õbËR•×P<*¥Ï ¿ *è°=F€ÏÎqÁEG×BêŸéŸQ¡f­‡z”’³òб›kl´X>.5ínRÒòÑļ¶ÉÕr ¤£i° #.-Z ˆ \ZÉM¶õÔÑáƒz%;l(ThJÐw ”õ¢1^©­D$Âo „•(7,½¿÷*?¡_Ëé­¬wƒÇw®Å\ɺ­J~WëÉy DÖ…¬GlW$Ÿ/åðï‚Í4iŒ³sP㘰•…¨Þ[êйêù\ÑdCxT7íJu(mãC'긺¥¯=C¢”4«$ ò×]hÅa”²‡Ü¡ô´:XøUãBQ¶pÉR°ñ”^—°•(kdßÙ×Z™jg¨é¤¶‹’/n—­gS"d¤iq‹ÓwÒUNÐI4ÂѴݳ­Ícµ@é1Ã`ö+£.…ˆÐTl`ˆ›)A†Ôsu[ÂÕeFYXÁ¹$ ›t©Ø7yÈ@Ú 7«,cq›™(± +’µ6ÉPJ +K{ÒPØu5+;‹ög‚å"â~½[P¹O–¦y^õ‹íy"ëeCô¢ø IÍÙ‘Æx>z’âLHsÜÛ}·C)ÚáSaBÊHñ5EÅiɵVqFK€ó#+‹ÊÇ¿2R‘-+ÉH*²@rÖÐk]Ž6*:ëÔÅz&M÷G°-ð>*®[ŠÌÈœ˜òYg#ä½yÂÁAC¨Ü-Zk6f\WxÜ£C#“MB6)(tºP­KâIœ=îÕP!'0$ Î5gGB•UD‹dïNȈvcн´u+/.ÙŒf$Ìp!ž«Q²GÊjz”­›ê"ëIeÂèp ê¡ÒâkÝjm\0•5˜qÝU‘mÄ0Ú@úMÜ~ebÈŒÄH…<¿!«¡ÝYWÒ¦†ÆG(ÔÒ\^BG³`  T»õã»2s>Éê*VVŽÿˆ’$œ”½AP·JÎÙ¹j$1zB-í$+Ó¥I0Ù!¼´‹”²’Gª¢M{Ú F@î#ÉnÇÕRœ|Ñ59{©^:Ú²+˜/b"e”A>vÎvg¨Ñ#ƱšìÊõ2c1'ÑóÕ…ýj®¯‹!Åž£x/Yki*ô%aKi‹Ý_H¬Ž¦ly`L¶ÔV¥Ù#îmUHÏïP‘%ÓgvŸ¹4TÔÆù#ô@ I ~çÂý*öãÚÅ=ì{ ÙůzÓà+6>*L­¹-’j|¤(´ H7R¯à=U·)(1jõ¦C*^÷Zßu\ü•†Ù!‘å+d´øKÍ ¾0¯i$úEc»LI #ÊÔó‘ç¶ µ6Ú…ˆµÝQtWŸnDRRêH¡ð5­jjD’d\:ú†‚á5)AV…[‰%™‰!’8¸ÒÏ| ™*$ìZT’ntë¥aådµ+ºªZð˜:]¯‹‘š¸òäòêôÝ·v¾&º¿YzGi±ÏKÌBc–:üŒZ3Úkµ(·m ÿkèøW!÷[ªÕºB·OkÑøq_ðß&\uä·lQ¹,M¿jb=½zxµÚìkIˆ$ò·a¹“—î8öäcl­ãm¡@½tÜ› Ô®ég1I….-áóßÁx*©¿’êò[ewbjmá>Ö’jlÆ1ü>Nv.IJŸ‚ò™qHú$¤õ£ÖºtȲUYtgŠæñ/ÄÏ|7ëF×ÌGURJ%‹] ™2ª’Œï ¤B ÜxTÁc$¤ƒ ˆ.˜á*ZzP $<áÞhU²5ÂmuGZìÊô—<Ũ&†»¬ŽcE ±"äÐÏLeŽ mÇqÐCn”,aa EA²´ï®ÔÃ'Ü£íXT”Ü7rêEÍezJË/…ƒk(b²ƒçhhЧR=eçMÜY)ýÐP¢bû¥üh6ÚÇ HÔPË\cµG ôN¾V]R‹F×ÛóT´tÛ 6>J"UIˆÌVŠ™2*”¤Ž‚—Uƒá#]¨ ™…ÛhëD=ßoQ«A'…ED\jiÉZhj „†®k 6½NÒDÒŸˆ+& Mõ½ H™m·KjH3¤z½@Ü@MIm¢Jwvªð -Í‘Cf )= è@‘JA½Ï®…Zº0cb-éaUªwíI—äØÐLHÚÓŸ£¡WçVZ^)Þ{r¦ÒÔ×\‡r,-¤cäY¾ÕÛ[¹5³KÉò~_Ø,Ó4”†ËËaíÁ֎ׯMfHÓÛ#u ^¬CTí¿L*é•“lAqÐÓkA$müÕ†êLÊÄ‘yÕk¸‹øV/,¾âKÊä:„ZâãuUÖ 6 #ËH Ò£`*ׯ§Ë,˜–äï°êM©å‰Hƒ¶¥%^'SùµeŒIëIÛK\Pè7 \Y>:µ0I##Òš»6:{`øŠ¥´–O)áRÎS†å\ÂË]ýî÷Ã’Ÿ<®…òU$²±rþ Ì$!ŒÔVûSÌe›{óiS˜ îþ˜uŽT|F•O-0ìT96;Äf!ŒÜA©#t ›+”H[/§ÙUÀ½ºÔ<-’¡•GrŒ2ÙqÇ’R«„n u‡n¥Rvp]•SÜ¢:£ÊqM®#‡Ýet¨~„вÉCi¾mJÔÎ2ŒKNŸ±¹"žn¦í»Ú•Gñšq*IÐÖî<§ ?âeÿ÷Wž`[@É%! 'bq[Ð4Æõѧ%%©Î³†[ÿwžt¼”|«™E{äd! ´ÁÚEÊ‘âH¬”ËVËvoâO'á|‡Šçp©uÜËa•A(I Ú|AMm«V4"×9MÀ¤›ZÖ®V|q©1Ä«šða* RµÜzW:Ö6pcó¬ÈäÍØ†¹:”¥@»‡®¡\ÞXOÉã>ü7Z÷uÆYmÆÆš¤ÖdäÓÉhzÈgB⇲­A5dÉtödVꋉ%+-BÔ´õmóUdÀœjlyÉñÜ™,{‘XLb–-qÓJ–¡ $”ÖØ(m*FÚVµŽÞiÕ1ûK>Jm:8mMk$è «,lÇ’ã'– u¾½*Þ[4tñ¢«5­vÄnRI©0;,J½˜ífÆ‹*6¹½Y¦jdM³H=* vÐÀëS1vÒ•+jºV\uÔ‘gc¶Ÿ¢ozÏ|iD„´›XøÖ:¸*ЙRu¶•±[¢fJ€öúøTª«t*ÞæÖ=*Èh|‰#A»Z»»Ev &J“ÑZÕ-œÈª/Re¬6ÊK„›(Ecy›f_Á'ä œÞí†äZ²-QVŠÌÀó%`¤Þ¢Ê @ÇÏ7$GJÂîZG,•È! ;‘ãz£& TÛ µd¤t @žï#å8|Sl^ù.+%™‘î°›R.°wj¶î"ÃNµ‹*Ý¡›Þ;+.©ÏÌoÎ]Âû«ÛÌï &›LË6ÓœŽ7Tœ›xô°’¦Ä¯--¥ÍÃqÔ ×6ýº–­k/Ù˜ü'«Áñ'lÙvQ¼Ûw'1ìÌF¾±LÏî·Ác³“8<“H†î2.=2%ÊmÙð½ý·Ñmd]GÀýšªítŸ­mt~´g_òIaÇì½Õѽ¶ô©g7ç°Ü±¶Ûä¹ü6B$\òËѲ²c8Ó2¿jí­I Uú‹xWF´Tªªè%Éä_‘’Ù29µœ·ëe^úéCþ2ÈEº\šÉCÞ§C|+üN|8ÿÒ‡ýz‰Y›š²‹ª?ÿÓæNÿÿ§Žö¼“õÒEs2}gòŸpí/þËý:ºN-aT:É7éU2@°Jè]!@Ö¡ˆ3Hª—H[`µêQdŒ€ ©-´Ì¬{Ð%EHUý“S6"§jU$‘¸X€n:ÐÈ´3!GÀÔ2GÍG¤ªª¤’íÇB-ê§j­LÖI ü”2À’[*=h‹ŒªûF´)jûа"þº” ñ*Rµ?f¬IâÜQ#[@cæ( uõÐï]ú zhe>Сà°õÌ”ØT£Ž_DÐ H Þ„Éæ„ûZ Øš‚| -¡±¡E©I$n4D6aux›ÕŠÀ™QI¿®ªD%óqí­þÅ\‹QYAîE9£5¡¶K þÈHû´ºùEf£ƒÀ|EÙS«²F¬å8ò ýc Íi?~@ÿ\O§å­ª³æY)å¸fŸ–²•))P¸#ÄZ¯&’G‡viAGŽªYð©Ü63I†Ãl••M¿2ªÉÓAR”4’I6ªÉbûŽ„ˆ­o¾+é«Ôº$‚öéÖ¬ªÆÙ‘2Ý ßwohñ¬V,‡J”\½‡¢«ŒÈ6ܦËÈKͨ¦Ô.?-CL«e+.ÄÓk¬¬×0-,¿¥©Æ£?k$ØX^¶ÛÔšÖÖeEŒ[8x’†Ê®ÂPM”HÔ›Ô^òznÙÚÝõdº„å¤ÖÞ¬äö¸8”¢9®5+ÒŸ!)@Ñ>*>[8é&ŸrÏL5L̺¥•c¡)'ÙVÝj|ë›Ïó¥=B®Ñų–&W}/Q¿i ï^—>ÈÚ¶)È+j3$´ìe–œyGîP’¯Ì9.Ú-Ln ‡áüü–>K\g!**^IkJ u"´­Fü Ø[Çc¸q\g)3l†}Ñ´í\vR>ê³qø®þŲZÏCWóÝðÜT‰Ùìº*d¥oT@v§}t—R²Èłֶ§1ò%ç´ÆŒÉ>K ðËÉ¥´:™8¾ÁMRv›xÔ«<˜Úf(j°ÔÞ¯#7f[a2ãñ’•£nÐF¾5GCÔqq5T…[†„“u_ÕY*‘³²im¤jPõÖÍkS ÔŒ¤²ÛʺR+7—Vj^£3¢÷Þ|jËŒ™«dEÉ„ê5H*AHV+ñZ1í‘Ô,|w/<£tP=U(2Ó€r4%’¸W®©vQà’æKk)> b“K.&†ŠëW“Q­LmòÕÕ ˜ 6ÔÕüÖ Àº£¡:Ue0Üj7ƒÐµ'PmY+—ha#Aí^²¬äm;ÄTï‘©YUÏZÆÁ# "üïa`ôª$ú‰eߟ‰,ùrw×ÐÖzYOrò±^RüÍ®¨d¤Žµ–ÖЦ¦¹qÔ)d Y>µnÉÔrăÙ6>º¬–ÜxëÊpÞþT–NHÿx÷y±$¨oÜC›/kìPU¯XoÔ½NÑãÿØO Ëò'x,ç%ÎÍ7•e¦²(-£ \ eIÕaIHV»N•RÐ'âßÞw•Á ÇÅÄçÊ'%¹JˆÆ(ã•îÏnÊÊö¸¢Ãa"Ðkã÷ÇλqÇøC|~kSðÂc32b^ÚÌþî–†Ûop"Ä7µY•g8 B!’qÚRÚ¸ ­¼4ÜŒ9§B|*²¿ã9ðæHú=Ðâûõ²ÛU!JÛTÿÔæ>ÿÿ§Žö¼“õÒEs2}gòŸoí?øxé×ýÔj`’zU’C„ |¾š©•!pª3J®j0)ºÖ¨‚É…Ô¤OC®É?%HÜ2[æÄ_ä¡Ã`á7¡bó¾Íª ¥™âTó¶DÔ4Q)%@B@Å*8oéWJ&eZê²EýlÍVdâü=˜ÉÅ+@ IK3&ïas¨¡A]À‚j :}²MIVÆIeÛlºÐ®âM©l¿ì¤éßBÕcÖË$‚6›PËV: d\è/Ö…¤In²Áúª’A‚RSÔTA(˜m{’=&¥"èñGíR ›ŒâS­CBOþòH·J ’ÐI#­ €@­ªdƒÍ¨Ú>Í$)½ÖÜ@·€ñ¤"=©L¹Ó¯AS%OJ’«~J€{àèÉOQÐP ©múª€Aj è-RçÀÛå¡"¥kù‚  ÕFäÔ¢¬µbIéQ6›ŠI Á›rTÂб­Ž©ôƒÔ–®¬iòq¬Õi‘Hèˆò`ÿaËãþ—ôI?%lc¹ò?ˆ»[Ãgdk¬—‚äÇe{.›”âkcÀòÉGŠÜPŽ,šÅÕG¾YZl£sé¦áÞ%1cûO.Æ÷õе¹ÜGÞ\ -@"âõ¸?`Õ.t©"OIZ•¸'vš K"HyJZ”¢n-Ö€¯¼£soT³ }gÙ.nt½RK&Kù–·ª¨Ë¦`· ½uVÉ#ž’àÞIU´£q|iN¥FdÉKq)iKp(/pÕ*ÕXícÑöü­«eZtÙ,%Ý7,’Oª‰ÉèVZaZ2MLJRä%MGB¶Óu·ËcYéŽL;Õ(ºšë3›w"îÝÛkFÛO”Öʤ7»wg™Á[Ríë&­0yäÝœ!üTÌŠö´©ñq]+ óAÙãvœ™u‚͈XHp®þ ¬~c±èøßUVlI'†Ä­!ÐÚ”5!õ[êÌøœ|}I¨Üùì9ÛˆÄr4\VÏÛ"·©tºœ|öÅ_ªKÃï'p<ô¶ŽX¨‘¼~ò݇Ìl®M­‰ÒÏSÉ}ßæ.¸¤;Êä;¯ÓKIHûT|Ôº(7”ŠÖG”eówTÌ›“Çè—X2ó‘ÕãcÇu¡\QQ Ü+”òK7-…5bs *Rz º±Àåñ5Ћ‚”%.¼›¨Á&­¸ËÄák,ž[‡v†Þ ÇmcºÔGMo;Tjâ”|I¬¾c5ì„UõQ¬øò³["@zú롊úWFpt¾šŠÛpÑŒŽCÁÙ)_AázäæQbéè!&í9q 5‹%t‘[j%)!hJ†¦µQLðÑ ´oöjðr¯]LAÖ­&9=*ôT&ID˜Ìw Im¢Ô+Im‹›‘¥Z¯S/”>n;gEt­ìn¤{»$QUîG_Em-=ݘ*,MÄmé½WófEÇ1"iµjåªÍ ÷s$Äi`î'Ð.h­VWÝÌÅ$êÛ‰M‡‰«ÿŸùxïgøûÉ?]$W3'Ö)öþÓÿ‡‡þÝF¨IôV6tÅP¯MA–¦{… -րȟž…ŒK–>4"ãÚxP«°À¯q¹4(Ùæà5½‘'°Mè$nÊ/­µôÑ—ª$ÚתЪU­ I3Ý¿… Ö‹=M ÈÑJÖÄ|ô(Ô€vÔ&òT@½¨ï¡Å/r~‰hU¢æˆqD‚n~—¦… Q ½€нQ"Ú6§E|nh] YdÚähXÌ„¡FÇ„Éë/z:øÐ²dÔgî@©EÓ‡zîôeÄVA5VJ=Bm¨ÒªL+q:[Ñ@ÑêTµ ºu&×>º3WAù”›½4¶A»QÆêJz^®TEMè,ª€#u4ª =…”¢}¡z m)NŠù¨ºÐ1ªÇZD’uéé 3)Jzk@$U¯ª¬@ŠÀ ýª©[ë¸6=<*èŬ´'±#MÝ_ß “àê|?ªVZhyþùÁYñ¿IWu!ÄS´ OknºŸäcxîÓ Ú›p¤üÕ["*9kq6ÚMêQ”GQpú(A(ÚTÛd¤í¢ 1QS~Ú”vzÕ"NXt”>@'Dž–«AK2M™hºNÂ4Ö¦‘¬ÊŠl¬«M=5V$fÚÖÚ²T¯jõV¤Iiä©°–ÜM€µQ¨,™‚ö`A·Z£.4qCS訉!¸"êVµkcùÔÚFáˆu©’I 9óÑ7ðùÍO“&Zgµ5L¤LP™‡Ú²8rïÈR®¥”á謕đšüûÙu2ŸœFFØÓpá¸ØQSʺ’â5+ÄšÏU—›k>¦§™Ep·æ‡Hê±FÈ͆T ÇF$$¹pØÕu‡%އmâKM£fA,°Ûhl”úÍ Ü5C G¢¢ ¤‘æåQ]¢ð Qñµ[Íe`Ër½5Ù2c­ïzì‰Bvñ5‘]¢7 y§ÓR²Ø™GŠuV&ÿb²×1KU uZûV¨w“RÙ©{Ž *Ý Fcy$ÃOа* £¹ŽÔõÚ>Å1¶b¤§Od}Š‚ HQÛp]HJ½7Öï³0d³DÛHKI²=Z»˜°ª­§k7Ôß ¿õ˜øvÿ¤î#úó§‘ÿ ÿ#üCö×ÊÿÖ¼wWù>~#ù§t{“ÌpYÛ7„圧1™Ã¢v{0Ì¡|פ2i¬ÈC ’—¸ PÖµ­Ç–Üžã‰ñ—‘†˜¼™ÙUYÝÖOÕ(ƒù5¾(ÇûeÚÏÙoö·T|Iñ6ŽÿAöþé˜þMŠ1þØö¯öG›ý­ÓÝ=A+ãÏÐ}¿ºͳñGþèö³öG›ý­ÓÝ=A?Ç¿ ûtô&×Å ÿl{Yû#ÍþÖéîž¿ þƒíýÐ?ɵñIþév³öG›ý­ÓÝ=A?Çß ûtÀÿ&¿Å!ÿl»Yû#ÍþÖéîž¿ ~ƒíýÑ#üš„ßëNÕþȳµÊ{§¬‡ñïè>ßÝ1þmŠ?÷SµŸ²,ßíržéëúþ<ýÛû¡üÚî§k?dY¿Úå=Ó×ôã¿Ð}¿º`“;⌤§ë^ÖkÿÄY¿ÚåOºúÈþ;ýÛû§©þLïŠ$‹}iÚÃþQfÿk•‰>&Eñôì}¿ºÍŸñG¯ö×µšÿñoö¹Qî~¿ ¿õ÷·÷ Óüš_iÿm;Yû"ÍþÖê=Ï×ôüÁŸþßíýÁÊ?“gâ‘í—kùG›ý­ÓÜýGö…üÂýßíýÁCü›ß§ý±íg¯ýñæÿkt÷?_Ñý¤ÿP¿wûpE_ɱñH«ÿl»Y¯ÿæÿkt÷/_ÐOõ÷·÷ ›Wâ‹ýÑígì7û[§¹zþí'ú‰û¿Ûû†cù6~)L—k?dy¿ÚÝ=Ï×ôê'îÿoîä×ø£?í—k?dy¿ÚÝ=Ë×ôÿ˜sÿÛý¿¸&¯äÕø¤6¶OµbßüE›ý­ÓܽAÔ/ÝþßÜ1Gòi|Q¡[ŽOµ‡ü¢ÍþÖéî~¿ •üÃýßíýÁÁþMŸŠ?÷Gµƒü£ÍþÖéî~¿ Ÿê'îÿoîäÜø¢Âwjþ_Ê<ßínžçëú þ¢þïöþ኿“oâ‘_íjÇùE›ý­ÓÜý@þ¢þïöþá‚“câ7?Yv°Ÿñ7û[§¹úþ‚Wó÷·÷ 'Å3Fã#ÚÏ“ò7û[©\?_ÐY2#ÿ·ûpr?“£â—ÆwkùI›ý­Qñ=A?ÔŸÝþßÜæçø£ÿË;Yû%ÍþÖª ×ôhþ¤þíöþà§óu|QøJígì—7ûZ¨÷ñ}ÚOõ'÷o·÷ ›§âÿ+íf¿üK›ý­SÜÅôhþ¤þïöþáþN¯ŠAÿö°ÿ”¹¿ÚÕ=Çü_Gö‘ýIýÛíýÀ?É×ñFñ¾Ö~Ésµª{ø¾í'ú“û·Ûû†?ÍÓñIÿ–v³öK›ý­SÜÅôiÔŸÝþßÜ0?ÉÏñJñîÖèü¥ÍþÖ©î_âú?´Rwûpóù¹~(ÿòÞÖ~ÉsµªŸrÿÑý¤R?wûp÷ù¹¾):{ïk-þ2fÿkT÷/ñ}ú‘û¿Ûû‡‡ù9~(Ïþ;ÚÏÙ.oöµOrõýú‘û¿Ûû‡ŸÍÉñGÿ–ö³öI›ý­SܽGöêGîÿoîór|Qÿ彬ý’fÿkT÷/_Ñý£ú‘û¿Ûû†'ù8¾(•Öok?d™¿ÚÕ=Ëü_GöêGîÿoî«ù7~(•ÿö³öI›ý­ÔûŸ¯èÔÝþßÜ?ɯñFI?Yv³öG›ý­Ô{Ÿ¯è)ýEýßíýÃÑü›?cý±ígì7û[§¹zþ‚¨ß»ý¿¸yüÚÿ_îk?dy¿ÚÝ=Ë×ôhþ£~ïöþá‰þM_Š3þÙv°”y¿ÚÝ[Ý=AÔ_ÝþßÜþm/Š?÷OµŸ²,ßín£ÜýA_êîÿoî +ù3~(ÕþÚö°”Y¿ÚåJâzÊÿP¿wûpH&WÅ*T•£1ÚÄ)$‘Èsw“•uÆOw¨ò>ßÝIþLŠä¾ú3¬i/+w•ùA›6${ZþN§ZË\px¾o9r.ì«¶}sþ“ŸÉiñDá¹Îö°ýÿ›ý®ÔÕëÿ¶3ˆªû‹ãnŽQ’ÿ‘ÿâ•IR,ûX è~¸Íéýá­wŠ|NÕ{ËUŸOö±ülG3íbŠºŸ®3ˆj|³îçoÓýƒßæ„ø¤ÿý¬ýYÍþ!§–l.÷‘ôÿa‚¿’ â‘_ðõƒû³›üCSå–ÿ=ÿÓý‚*þGÏŠEÃ.ÖîÆoñ G—ë1¾ó?‘ôÿ`þGoŠCÿ {Yú¯›üESåúÌOºÏäý?Øb‘×âÿÃ^Ö~«æÿTì(û”þOÓý†ù¾(Ï^kÚÏÕ|ßâ*l+þaþ§ûSüŽ¿iÿ†¬?Ý|ßâ*ÍŽî¥:'éþÀ?ÈíñG×òϵŸªù¿ÄU{åÝàWß=_H‚ÿ‘Ãâ‘fÿ–ݬÝlßâ*«É* VäKè$‘¯âŒÿÃŽÖ~«fÿV()l³àx×ò5üR6oùsÚÅGÖÙ¿ÄU’—ÚU\Yßäoø¡q?–½¬Á_[æÿVwÈMt¼Œ™âþ=ö³õW7øŽµÝ¤ÇüÌ_ñﵟª¹¿ÄuV ?™‹âŽÿþýö³õW7øŽ„¡Dÿ#?Å"á×k?Usˆèe®XÈ×ñH?áÇk?U³ˆ¨d÷‡è2þfߊOøñÚÏÕlßâ*¬ï> þfߊ?øïÚÏÕlßâ*Ao{õ}!üÍ¿ñßµŸªÙ¿ÄT‚¾õêæmø£ÿŽý¬ýVÍþ"¤yõó6üQÿÇ~Ö~«fÿUˆ÷Qçó6üRÇŽÖ~«fÿP{ǨÄÿ#_Å)ÿ‡=¬Ýlßâ*ÈoÀÀÿ#?Å!ÿ‡=¬ýUÍþ#««¯VaüÌ¿ñ絪¹¿ÄtÞDÿ3/Åüzígê®oñ7¡üÌ¿ñ뵟ª¹¿ÄtvLOò2|QŸøuÚÏÕ\ßâ:Ãhî7ò7|RG?þûö±cÑõ¶lûÖÎW—àc¶Þ#ïæzø£ÿŽ]¬ýXÍþ!­õÝãò>Ÿì0>øýÊìÇòUüGöï¼=¨çùÎYÛi8N Ìp\ƒ1W0ä§"ã2 Ky !Ü+HS… ¥¤k¨ j™{®úºí꣯ö§kNOÿ×ûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÐûÑ@@@@@@@@@@@@@@@@@@@@'&ÏÁâœorœ˜qXÞ5—•È%”îp± •¾æÄ’.­¨6ëXóeX©kÛ¥Soðjmöþù¼œ||q»-ëE=&íUOªYóïåe.¸#öun°CN9ŸZ“àT‘ŽXÔ~Zò/âå:bû_tûÅ‘ ¥»þ”ý>büBÎCü œ_àÊâïÑ}¯ºOô÷ïÔþÔ?œ‡øÿ8¿Á”þ.ýÚû£úû÷êjÎCü œ_àÊ~‹í}Ñýýûõ?µç!þ¿Î/ðe?‹¿Eö¾èþƒþýúŸÚ‡óÿ_çø2ŸÅߢû_tAÿ~ýOíCùȯó‹üOâïÑ}¯º? ÿ¿~§ö¡üä?À×ùÅþ §ñwè¾×ÝÐß¿SûPþràküâÿSø»ô_kîè?ïß©ý¨9ð5þqƒ)ü]ú/µ÷Gô÷ïÔþÔ?œ‡øÿ8¿Á”þ.ýÚû£úû÷êjÎCü œ_àÊ~‹í}Ñýýûõ?µç!þ¿Î/ðe?‹¿Eö¾èþƒþýúŸÚ‡óÿ_çø2ŸÅߢû_tAÿ~ýOíCùȯó‹üOâïÑ}¯º? ÿ¿~§ö¡üä?À×ùÅþ §ñwè¾×ÝÐß¿SûPþràküâÿSø»ô_kîè?ïß©ý¨9ð5þqƒ)ü]ú/µ÷Gô÷ïÔþÔ?œ‡øÿ8¿Á”þ.ýÚû£úû÷êjÎCü œ_àÊ~‹í}Ñýýûõ?µç!þ¿Î/ðe?‹¿Eö¾èþƒþýúŸÚ‡óÿ_çø2ŸÅߢû_tAÿ~ýOíCùȯó‹üOâïÑ}¯º? ÿ¿~§ö¡üä?À×ùÅþ §ñwè¾×ÝÐß¿SûPþràküâÿSø»ô_kîè?ïß©ý¨9ð5þqƒ)ü]ú/µ÷Gô÷ïÔþÔ‘Ä(Î2VRlÏj^ÅbŸ}Ÿ’šœaµ)ݨ,…íëméùjøþ-«²VÅ Óº~ˆFWò+-1ZعŠ÷KJ¼{S~Þe£åÚÏ¥µìPPPPPPPPPPPPPPPPPPPPÿÑûÑ@@@@@@@@@@@@@@@@@@@@¯ïwúî÷ø•Ÿýn~´»—þ._ö-ø™è~ÿý®ÿ‘‹ÿ©Só¥_&?t_ÛoƒNñw?‹c9†#êL>2•;‹s/-Öy ¢èm†!$ƒmÖ$kk]¾'`äòq¬•„ŸIêLùÇ}þiv~ÏÊ¿/™|”ÒÛ*šOÑ6µuôÁ±üýí ¸äœ)Gô"vBÿomÿ ò¿½OÿüN"þwv_ùYÿôÓÿú¼ÝÇìjq29›ÇfÖã02¸ÉCÖ€R›Vô6´«i¸ºlEìt5Ëçö¬ü(y"Š=ŸÂÿöïˆëÅvV¤7[-®ަ¿ ¨p˜ç%ÉGÃqÌ4îA˜–bâq±Ý—%ÐÚ ‹ØË)RÕµ)*6MiáãeÎÚÇWf”¸M”¥Ç„´¾VMËæ`áãysÞ¸èºÚÍVª\)v…«ÓårNËøkÑ£rþ)˜â²&¡NCc1Dº„›)M¦BTБTˎد²éÖМ=9IÃÖN©ú <éÄçÕÛš™RpÝ-[¤ýkpFáñ þ_‚ÄG÷¼®nc1‘w¡¿6D—ÓHÞáJ¹jê S‡ ³^¸è¦Öi%ëz#?+•‹†ù²¸¥*íg«ŠÕKp¥¸KÃS̾*~-”Áåcû®S -ø9(»Ð¿.DwÓ¨ÞÙRUµI"é$Tj ãr1òqS.74ºV«é*ÊS‡¯OIPg N617“ÌÃÄÌ—‡Â–S˜Ê²ÃŽFˆd¨¡€ûÉIC~bÜFã ¬žMöy›^Ù‰'Ñ='ÔkäåáÇ’¸­z«ÞvÕ´­mºÛjêöøÇOÿ,â|ƒƒò ‡å0>«Ïb‹B|5§ü¿9¤<¾0·7C‰:(õôÔçÃ|9-Žê-VÓ^µò{orã÷=y{nÇy‡ L6ž–IõOª+µˆÞ       ÅË8Ÿ àüƒ!ŹLªóآПÍiÿ/Îi#ïŒ-ÆÍÐâNŠ=}5—>áÉlwQj¶šõ¯Ñí½ËÜxõäqí»æ50ÚzY'Õ>¨®Ö#x(€( ä¶{òTóopÿ{,0g'æµþÏ,{Ï“åoó­ Û¶íð½ô¬¯ Ö5’=–ÚOÖ’oýäi˜à÷¯tÝùÝžfØRvÌÆß­¤Lú ¯Ö#tý>×Ùç°PPPPPPPPPPPPPPPPPPPPÿÒûÑ@@@@@@@@@@@@@@@@@@@@¯ïwúî÷ø•Ÿýn~´»—þ._ö-ø™è~ÿý®ÿ‘‹ÿ©Só¥_&?t£žÃ¡¤vG´ Á(ÛôJ€É_ÿhšúÇlÿÅÅþÅ? übÛï|ÙÿŸ—ý÷AÍ? <ãâ/?̹F;’aþºíD\ÆU¨·2¥G–ÈjJÒÛPܲ—)‹YI²zy©Úy£“ÍÉ–ÊêqKöŸ^¾Ÿþ5=ïǧáî7ð_g1Òã§µW5Rîºc~:9Üs¸cü¢©löo‰¬ÛÎO3Š”§*û`U~+ÿƯûkñ37ò=¿óŒËÃÈ·ûøÏ˜½¤çðY|ÊSÜIîaÆsÜj^šAŽûÐÝg5ÖPDÖ›tG"G”ËmIVï,‹¬W“âr]8¹±ZŽØòm—WµÖÕmÑî‹/O³eˆi¤Óû÷Ä¡w*à­s,9qåY16•Ó½›«£ußìoq[+(ß>ɼøßcû{;žvf~@ü+È"ec¯ ݾcðB_C²[+l#r}’ž·ÏnßJæŠË¥ñ^õOK¦«“nê­?&¶«N/=#¯æü]Ü)ÀæÖþ]9Éó4AÛÉe÷¢FKÍwÚ„Âqï¶×”Wå‹8âŽàÚØ›U¸ø«‹•Ûy®îÞ·L¸ë_’šÒ&u“¡ñ/pÎów+·æ«ÀµÕa}{yµncwJ¥¢w¹¸~+ʱ¿œ¡|"Ìð.pÌ|W#ÆÈÉŸ­W7%-‰qä"|ÉL _ûÂ)Ú}†Ãjá¿etTk*«†ÿ9W[7ZîvÛzíVvö–ÛkEÔÕì<®W 7mã,öËLüvíK,šÙJ:Z¯)m³4öݦzîD‹ýµírrJ<½–#]ÕÚäbãÒ¼–±WóYU+­ú;]kíõöWÒxÑÜû¯3ü³7"÷Ï;|S³åVÖ®ÉÂãêë»wª £½®íþsœ+…c8ûX\¯q{c‹äœ –æLSP9à·=q˜/¼ò”̤¶ë{_.¨ ŠÕƒ•ÃÄù\þ6*ûX]^-eºÖ”É|q+uí[Ûm¥mØ´züEÏãp«Ëɑޜ~^LYfµ›àÞñ«Ûj¬_t›Øœ=Õf•ïGã¼/’bxNˆÙ^/ƒÇÇç¾ëÞ÷œy”ȘS½Å¥ dº BQªpNµÎî4Ç•zb‡JE%9Ýj(½¼v·}Ënæ’J!Ê=_œîGpâÛ—šÓ\¹.ñVÙ…Y×Ñ)vK|·m,µ,]ÐÆqNŠáœoÛüdé|—„a³îó¹ò²«žìœ«FC®Æm‰ÌÂKm(–P•G_Ð%EJ&¶{Í1`ädãc¢K¢YïÎ-´³ÉYv¦Ü’Ö’’om“J4¾ÏÊîy3r2rn«‘“•ZãØ«íJÎÔ¶Wk(»k%~¶‰# {ÙŒâ\ǹ¸Ü— ÇEÌð®#?Šæ0ää“vTv±H }§f¹ HSo©&2M¬A öŽÿXü¾feD¯6:§/U“.ËJm©‡*"ƒ/Û¾ÚqÞ™å|©¼HÆî,Þ*·¹[Ü‘¸ÍAÇ0‡Cqÿ&YZ“&G˜£¾EÐ~µZ¦¼[p¸|Œûβ?ÎM!ÕyuÙìîÛ7[Ý[V®Ž³c'rï}ϕίŒòWþÚ¹R°6ï’γoy²œtÚ”cö¦ÞÕ—²GsÆx¤~ÅòÖ¸,ÅOá‰ïSç‹ÊZmF °ëS )·JMÖ®Fµƒ/þ Rè³eK×T±ª¿þe<& Ýžü«wÜO—]¹ý¾b”ý¿7Úú¾Î¯]4]P®aôsôû_f?žÁ@@@@@@@@@@@@@@@@@@@@ÿÓûÑ@@@@@@@@@@@@@@@@@@@@¯ïwúî÷ø•Ÿýn~´»—þ._ö-ø™è~ÿý®ÿ‘‹ÿ©Só¥_&?tëÚoŽîGÛn€á.•GãqĪv×§÷W¡x݃·qkzáãb¢ºÛeZVªÕ}khKrõ=9p¹÷0f,~[Î9(Âô&2ù9SPË„X­´¾âÂTF—ÔÛ•šÙ+•ÞÎôú¶—ºº§ì¾«ZÕéâ—¡àö^·ÆÁ²‡²•¤¯CÚ”™òã÷—DgË9ç"äð#>$Ç…–ÊKšËo%*J]Coº´…¨€ /b}5kósݧl–n®T·£ô¯C+Áì}¿ƒg~7+5 Ò•£k¬7T´”´õçw[º9G±òr}Éå9•8¼[ò³^\e<Ú™qL©oÙ[j(QM®’AÐÕ2òrå²½ìídšM¶ÚWúÊ_…¡n^1©ï m\|\5WÉc¢V‡¹n…¬5*z=JŒ|¶V$ Ž*&N\\^`²rØÖžZ#Ê1”VÉ}¤—<µ(”îi:V=ÏnÙѹ SðKùߤé_Šù+’ÔNô¶i;WwÖÚú­Ð¦:ø–|çs{‘Éñ§ É{ƒÉy© 8œžZd¸Û›ú ò^uhº| ´¬œŽN^Dy·w‡+sv‡ JŸmO¡µâhpûnáäóxülXïýêRµ¶½uªOQ(ÝÅî .<¾%rœQÆ]Žçg'-¼z™|©N¶b¥ÐÑK…J*lnoÖ¯nf{Se²YÖ"%Ä.Š:B-~ÇÛòr=æÜ|O4§½Ò®òº=ñºT(s¤xLösd£æxæfwÌD rØÙÄ’Ðqµìy•%iÜ•›A"©‡“—o[Páµ*S‡“ùR6ù|<ÌozW%ZÙ+UÕ*Ò´zü¥ƒÜ®ãa²9|ÆŸòLV_-.g²ò³“5hÜR©.¶êVéŠÉµÏ¦§'.òïjîráµ/W.:¹mÏ­úM.GaíÜŒtÅ—ŠôÆ¢•µ+jÑi¥SQ^‹¤tEBT©3¤É›6K³&LuoË–úÔ㮺⊖µ­D•)D’I7&°t:xñ×Uj’ªP’Ñ$º$¼&¥òÞW=YµNäùiªäÉa<‘OÍ}Ô•°%•,ùÁµ!%ï´n••æÉmÓf÷9¶¯Úzêý/W«ô³Wmââòöb¥|©ÙKfí-²³¹8¶ØŸÝÛÞs Ü^ÌyÄìÖn z4ˆMG{Î’-xø­©÷Â]CiPJ†Ö÷lµnp9ïÈ·*Ól›l֯۾͕ßiÝ·¢·Öš­Ž¶«ƒ—ÞûE¹»?‰\t¶dÓ•ü㌗{V·uviµ­ãv’Qs¹™Ü‹7˜äG¹,ìé ƒ© ~KŠuÂÍ®¥æÕ4¡¶ß¥õ~¶vxœjqpÓ5¥UWÉU èDÓ=Áç±øê¸„~oŸc‰-µ´¾.ÞJRqÅ·\Z @àjÊY*#n§ZØËÉË——{ÚÔQì¶ÚöZuÑéì´šô4 Ô·eà[‘ïO7šgÌÙ]ò”'¾7h´ëÓAŒŽ]ÊåÍËä¥r|´œ!îYùîÍ}oNì"KŠYS¨ûÒ=•’=”é ªdÍ|ŠÊÖm]§is¹ÕîNÞ–­ªo£×©š·‹Ž”Ç\TUÆ÷Q*¤©m}ª¨Š½^ª¯ÒJ~é]Åú…<[òÿ‘þL"9ˆž9õ¬ÏpÊJK"7›ål)$mÛkVKòó^›-{:ÂPÛˆQ =P£äF²ì=¹g÷…ÆÅæÎíû+¿w]Û£tόɎYÊš›$ß%Ê·‘ÅAÌ\ôÍ|=mLˆ¬¸¹ ykR6$„í$ZƱ¼·jÉ·®Ûkõ© m~šÂKkÒFËí¼WKcx©¶ÖßeµE¯*ÛÚˆvÜ“Üõ”ŸQ¹/"``’Æ$Êx»ªŒ†å<‘Žun‡Ô¸vWÞ\d¢Ä«ÚëV§#&;+VÍ:¨M6šZè½ Wó¿Ikp8Öó7c£óT_Ù_œQ¶/§´¶û>Ôé§BWÜ{ÅŸÉJã<ß?Çdæœæ$bòR¢9-Ä•(-õ2â „¨‚«õ>“SÇäåãÑcÅ{R‹Â­Õz:-:$~geàsUkÈÁ"¢Š«Ò¶Ú´Ò»“Ž‹§¡2ù ÈE•~w!6ì‚òóaÈ”ë=q%+˜â¢•<¤’ „n õ¬o%v¶âf<%Ä¿•Âù‘³‹ƒÇÅuzc­mZª&ª“TZª'UxW§¨†ªGéö¾Ì=‚€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(€(ÿÔûÑ@@@@@@@@@@@@@@@@@@@@'&ÀAå|oql™q8ÞK—ŠÈ)•mp11•°æÅl­«66ëXóbYij[¥“Oðèmöþmø\œ|Œq»ëu=&YOªQó}ßäßh¸²Ïx”Û%GËBøøZ‚|PȤë°¯"þôeû?xûÅŸ5àëÿWölÃù·¿†_ówü'Qü#ú_³÷‰þ¼~ãúïÙóo ¿æïøNŸÂ?¥û?x^?qýwìƒù·¿†_ówü'OáÒýŸ¼?¯¸þ»öAüÛßÃ/ù»þ§ðé~ÏÞ×Ü]û þmïá—üÝÿ ÓøGô¿gïëÇî?®ý6÷ðËþnÿ„éü#ú_³÷‡õã÷×~È?›{øeÿ7Âtþý/ÙûÃúñûë¿dͽü2ÿ›¿á:þ—ìýáýxýÇõß²æÞþÍßð?„Kö~ðþ¼~ãúïÙóo ¿æïøNŸÂ?¥û?x^?qýwìƒù·¿†_ówü'OáÒýŸ¼?¯¸þ»öAüÛßÃ/ù»þ§ðé~ÏÞ×Ü]û þmïá—üÝÿ ÓøGô¿gïëÇî?®ý6÷ðËþnÿ„éü#ú_³÷‡õã÷×~È?›{øeÿ7Âtþý/ÙûÃúñûë¿dͽü2ÿ›¿á:þ—ìýáýxýÇõß²æÞþÍßð?„Kö~ðþ¼~ãúïÙóo ¿æïøNŸÂ?¥û?x^?qýwìƒù·¿†_ówü'OáÒýŸ¼?¯¸þ»öAüÛßÃ/ù»þ§ðé~ÏÞ×Ü]û þmïá—üÝÿ ÓøGô¿gïëÇî?®ý6÷ðËþnÿ„éü#ú_³÷‡õã÷×~È?›{øeÿ7Âtþý/ÙûÃúñûë¿dͽü2ÿ›¿á:þ—ìýáýxýÇõß²æÞþÍßð?„Kö~ðþ¼~ãúïÙ8俯EÊ@“™î³Ù\S¡sñ±ð¢+´“u6—Õ9àÝ/±_%_ÂUVNÙez6ÇÓ,ÁÊþzå¾+W Ríig“rOӷˬü›‘ô¶½ð                                         ÿÕûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÖûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿ×ûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÐûÑ@@@@@@@@@@@@@@@@@@@@@@¤ÂwAÌï-oŒFÀ¦3nN˰™²æ]1pþ[:#wU%ÀÈUÃ6}Å#{m­…¬•ÝþÞž¶t¯û¶ßÿ.Ûiom´™}†×X²¯áÛ½ý mÿ™íZ“J»Œ;Û9¨XÞ‰s3±1Sù\XÙ”qÇ2äލ’ÖZlaˆ˜ V„’–ýè+ž~4æÿO…,×OC‡èôèd×ÉÈÔJUë9(Ÿ_V×§XZ• &[3Â1]ÅæøÌW(“üœ[\CŽó\¬ó)ù‰ôyR’¬’çNˆÃÁÖl‡•Ý W’AVWkWjÒÝlµK¦•ÉåÒ²ë?”íhծޅ…ívvS¶˜ììõÕÑZЫhÕ%´V”Ô¤›³óíä¸~5 •ÀâXOÉš¨Íä¹B¡a-—¼¤œknT^BRÒb’nMö¤šÉÛjð¬¹ÓƯ]ÍõðI+OäîȪö;5¦åUõMͺBöZñ×o¥í8¿zágâq,œ¼lH8^JsñÏDÉ"t&r'¹¦^KM‰ Èa‡ßmá·ÙoT­'%–:Úö”–%“U¬h®Ÿ¡ÑÚ¿í)zFµ­mgµC{Õ4r½¥º–Ÿ^•iÆÛYWVm#œ‘ɸÆ‘JÆ/ îr3†-Ç<Ų‡Òm+VÔ{[Ü-¡Ó[^²eÇlvÙo¬ºú¿)'â“•:OX] RõºÝW5—ÓYömêܡDŽÁb¬eÍÝ'9>FGî~y¿:QÁ{vˆXY0åÉh$©µ¤ã=ðEHÕ÷L”ùi7óìŠaOÌ­~·´§Ã幸ˆJ²«âÜ%ºí'kÆÛYÊQuv‡µVflÚ˜éÞÚ&ÖúNàWmÖöíÒþ6½,Ò—àc¬Âž¥ ·¼§'ÁKäÓäùÐs¹I²8Ã!JZÄ¡ÒÌ"’„¤«Îm°ýÔIûå¯`”šÇMßYÕYø}yº«^•µhýulµ´ËtºVÛ ­þ{«5ꎆ­ÏNÊñ.ëq(¬÷–Nw—e[‹‘ÃgaÂgŒ"“-äF‰-è©÷­Ê i ¾·×µ>pR¹1Æ—gªJÍ·õ´ªÖ']®Ð¶*ùÙ·W!Å7tsT£§µe;ºÇ²š®ç»sªS¸Šî73åØNèÊÅLÈw'À׆€ü ï ãP²øøÒwÍ3œŸ"F+"è²PÈ h/r›kXñÝ%wwg«ÒªŠ•M·ëÓÒÑ|•~ÆÅ2µK®çf—Ñáפ&n!¹Ê8ÇË`»«šÆbÓD£Ê1ÍáVrl8Ò™2LÌd†S +ûËm$n7M¬—’¼«YßÙKªðQëÕý/C ,•J¾ÓoOOÉ|Ôéòýš•ɲÜr"ÎòŒ‡'Åçò/HáOdãÀbBpȳqžpãâDmFVÒún´'¨Q6iÖ•VQx›uÓvª­x:ֿǹt‚½r_kš§µzÝtµ—©ÚRÿ OÄÛÕBæ–ïd\ÞO°¸O‘âó|¦·8,yÊûÈ›õ™Š×¼{ÈŽbüÝ»÷† kuï³Ø¾Ý)_g¦~˜oçu¬úaz·µ×^ŸCm|Ͷ½ ¿HŽsŽBÏ¿Çߘëí/åËA ©) }¶]d%ÍÉUѵå ÛZ„¢õ¿gíUÕýç Í-O GÙµn¾š¯Á!Éøì.Yƒ›€Èºû0ç‹ÎÆRRèò]CÉÚV•T{Ž”j¯û¶­—ËK+¯Á+_PzÖÕþõmWò^®¯ðÃÓÖEr¾Ç'“†É±Êql÷SÿUò :£{””¢C nlyQÜm͈%+hÙHJ“b/Dš¶äâT?Z”õù”ú­TŬ·Mvµ*Sù•?3k]5é0Ôw'í¾;špö8‡)Íå3iÔ:îy~æÌ÷H*J½Þ+L$8ÒÖÊö2›¡FÖWµVqæS$)£”¼›\Ï…¥Êù ­«[U7¯ŠÕZ­zêÒuù5M†„!´!¶ÒÛi B° mË"µUI.ˆÊ “MÊà|ýžsÉ9¦ šñÖWœb,(1órVAø£ ^+2ÍBx©åýì¢.HJm¦”uþõ·7éðªù*ºzígùLœ‘kUÿv°¿ ›?–Ú'ê­äÉ|å¸ìöWˆç19Ñáò ž=Øq2Žoi¦}ZŸHHu@ (­)×P>5\Øë—ÙkØm+)×d­é?ïl”žšú `ÉlM[Gj©^‡d½™ÿèf=dÆ' ‹Æáñ̈ð11Y‡ „èË ¡#äJEgˑ廽º¶ßÎ`Ãb¢¢ðPk,¯æÜ¦v!®]Í0òx¾#56œ>ü o»ŽxI†ÓÓ$e''b^B½Œ¡KÛ`¤¤iìµommTãÁnµ]_Õµ¡OV›˜×&_j¶¥t­´~/l§¦®n:L$Újw”áû•”vc<_›à¸Î2TrËJ“ÇßÈdqI)SÍÈúÖ;7@\e~XÒ±¼{æ·ú¯Ñ£Ûâ¥Î¯]cI餻«*ÃKUéÕ7ò(qêŸÃèÉöÂ+ý°…Ú¬6aü>˜pñ¦)t©¶T„ËczTÈC’™J›S€{;Ê‚zV\¶YrVÖKjiíðj¿V¿ì¦«+Yªuñ’˜­ljÍ?mîö¼U­-ßå–ÚôZ„2±e7vZKm¯k9oån^šjô风ñôä>¶N œ¯¼™ŸYˆ­ ò¦R÷›·vòÈ ^û=Ÿ£¥+ìôÓªùÚoçi7éi?ok®½>‰š\z%úIŠ                                           ?ÿÒûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÓˆï7ÆÏÄ÷îÿux¾¹Æ óæ+ ê\+¾DHyØa¿1Ø q[[@RŠRI®æ>+R¶~)]ܲÝÃþ/>$³ü ™ýÑykŸ%LÊRpø4‚6¨€-ÓP+¯‹±ñÞ=Í9ùYÁÏÝ2Ó.Åòg ñß©¦z%w.R—ZÛH¼(³{R¤_û_èU`ävŒˆñõ–ÁÜòÞgÀK?ñߨ/:ÔNåÉFÌ<é¾Ö+ «8É@lëðÜtñ¬¼nÍÆº›'Ö:±—¹æ«…è9ÿ-ñ§ñ;ˆÎ5ÝGw8}K‚$§ÇO«ë{—ðïe'ó³»fËfœ|ƵoããâÍÅ»nì‰ )Q`|:µÕçø¿mÚt“Ð[#I/Ø¯ŠŸˆ®{‹ÉÊäÎ}÷¢>†Ú-b0{*Mõ ÇŠéq{. àW²rýläó;†\YvW ç½?< còÜ¹ï§ (yRæámᨺ•½”++ì\m’“ŸYtÈï¶ß€Öý»øÞø…ŸÊqØþ[Ü÷^Ådä·ˆÂ4[qZ!WN'lvÏ¿Ýòå[ •Ê÷"[³&°—Z1˜dMú°«ò>áQ&“ééë<Ýûï!eµTBqеrów§?Š3¸ÓRÆS#îÓ÷cpÆè-©@qú޵\ 𮜧¢ô³oˆ94k§ÌYŸî§w…÷uÀÿsðÿ€V:|/Ã~çeïß¹+Ñó'ÞoŒï‰îÎg`p]Óqˆ 2˶æâZnn¥c‰¯7ßûVuL}Lô››~V{õ˜5‚>=¾-U÷vNæÊvŸ¨°=_öº¹ãÕãvñGQÚ Àøôø²~TfœîÉ(uÀ•¨°#Cëúº¶ûW #‘Z]hÜÏwJ6‚ŸOŠ.{¦¿Ô\âúúe¾íÿÝ;ÿYç­ÝsxGÌy/ãS⨯ºßuÚ ’NÔsëO—ð7eW+ÖÿÖN.ëšÖIÆ£ wÆÇÅLÄÏßÝU¤ „Ä_Ô˜.¶ÿÝúë\¾ßð·:³iéÓVlr;ñºÇQ±øÛø¯g*T®é-¹M,„ƒÁ}«ëbŸ péÛ­—*ŒªÞ—Óç2.ákeU«Ñ2¿_1ÚÆ=»Z>ómÉGÔ¸mGö¿Jê÷‚»n |˜\»º«-ÍÌþ q»Ž[»+.“àYøÇø™Hº{¢æ¿ûø¾½ßô«³mOmºzßë9K¾goÃæ#^øÐøm #ºn?ö.ñ}p;‡òïµá«ÛWÿ©ÿ¬ÙÇÝó6¦ þ;¾+”v h°>ŸýÝ_5ÉØøÊÍ$á?K;+“xüw|WŸùØWêñuBì|CùÙ>ñqTüuüWþ•Οûøº²®ÁÆ~çe_*âÉøéø­={®Pð_‹«sÃ\KuOçf7˸õ¿Ž/Š•‘ÿ*ªÔëý¤Á~.®†?„¸6ð;ÿYŠÜüˆžoãOâIIWtܹÿip_‹ëj¿ðä¿ÿ¬Ñ·vÌž|ŸÇGâ÷Ósõø¾²p?ºþwþ²Ÿçý+æ%§ò<|)ÝÑuè•ÛN…{ ž£zµù­e“N5,àìÞIÞÎódøDNeÀûŸ,û’g‘ãUŒÂ¼¶ž=±÷vÆÞ‚ôT[“wMÕ-^-7C4K?ß;ÔÛ½Îyj‹}S„I7ÕõÌ·uÊ™´¸ý9ŠÏˆæ&En?tÞ1ÖÊ”õðøKïzqÞÔ׺e~‚7ßÃwy{åÜþ^ö7“w.dŒ\vÖ·c…eGh${IÇß·¸\Ëæ´3[“Ʀ*Ê5÷ÄGÄ—~xs'q^ÜÉ1±‘WåùOâð¯«p6>Úñäӑ̽-¶.%,“eÏ„÷Û½™¸Øõä{‘-n¼ ^R1¸d):\[§Jã_½gN4ùêöÜMt6#}Øî¨’„¯¸SlVpä‘òû…cÿ=κÇÌ_ü«] ÿÁyVs“)åó Êe‘5 b‚M…ÿò èð;½³_m‘Ïåöÿ);.…o¿\‹ð?ÊqÞãä¡HzG–ëoÃûæ 4ñúuð­ÎãËÉ­¦ fNN`Èwó¼ñÖk¸ÓBÒR•¨ãpÄ·qÿkë’»ÆwèùŽ»v$>Á÷ϼy<Ö¾ãÍ ž¥Qõvµ§þçéªES/yÏZ¶£æ-NÙ‰³q·Í»¬ ïp'íºH…ˆ>üÃÆ´¿ˆ¹>¯˜Øÿ(ÃÿÃÊç½Óe²àîHm>á‡>6¿þ¯§ñ'ÕóòŒ>¤×}Èîÿzø®“ÜI¨¾Q)KÆáÕì”Çé­gÃß¹ë1Kö¬+Ãé+øÞþwŽ\6_s¸óB–OÕ¸as{tú¿JÏnõ?˜¥{fº}$ÌŽô÷œbžÉ–e¹o"øì5®OB>¯ôUÎóú¾bÿå8I®ÝÎíç±ÙG¦÷zäA–‚‘ä´“Óê©ÿ;ÏêùŠ>Ù…1ÃýÓï\ ×?É£•>qØ{nØ^ºSüç?ÿòÌ_ü2©½]æ^YèkîdçÚCAIþÕá’•{ ý_êªÿçõ|Ãü³ º5ÜÎð<1*Oqf¥2Z%kð÷)O£û_¥OùÖWÌOù^"k)Ý>{‰J'¸Y+8v"ÐqLôÿÄ+'ùÆoWÌWü³ÍÞçwá•©fpq¦T¦|[üB·.·Ý7špoˆÁu=>¯ôVUÎÈWܱ•†þ3þ#ÔåÏtÜSI¸U°ø>£ûŸW÷Ì…}Ï´e|NüA³å÷2A h)_Ú¬)Ô‹ÿ¹õ‹üÃ$™=Ãâ—â9öз;˜úor 18KiýÏ«.}È÷ zbüW|A½:ò»“'v5‡–Éú«.¤ ©&ßWújW;$ÁácH֘ό߉ùђ⻢´;{¨}M‚éúYŸ*èÅ^%ÚGÆ—Å^YÓsSe©pV6ñ¿ÕÕUÌ»añ(ŠôŽ/ŠÑ”D(ýÒZå¶ÿi07¹ôk«cδI‹È¤ô3?_m)~gtV Ž©ú“ ¾ƒý®ª.E™/TlîÍüc|Cò¾èv¿È{œ¹x^Iʰؼ®4â0­yìKœÓ.µæ5'rSt(àA«W5’"Üz*·ê>çÖé knòçòÜS´Öå ~áã|?;•ÂÎòÛwÉ—ûì9底¶­«@6RJOB¡+©ð?¿jÿ’?¸XÅÕfòаøòø±ñîÉýBÀþ.¨‘å£/ãåña§ü¬Ô,âên'ËBˆøïø°Q×»&Þ¨°?‹ªàyhÄüx|Xkÿ+õ øº’Ç”ŒÅÿÒÁýBÀþ.¦áå£Ññãñaq~ìQÇík|ÍÍ·§ÈBĈ!ñåñ^zwe_/ÔXÅÕŸs'ÊG¿ÇÇâÇ÷Ø?¨XÅÔÜO”ƒøø|Xþû$ÿp°?‹©¸-/‹/ìŸÔ,âênZ<þ>Ÿ@_÷X?¨XÅÔÜ<´yü|þ,‰Ó»Dz¾¢Àþ.©L-øóø³ÿ•£ú…ü]S#ËF?ÇÓâÏ÷Ù?¨XÅÔ‘å£ßãéñgoô²oÿ¸°?‹ª7-O‹OßgûÅü]Q¸Ÿ-ÿ?‹=-Ý“¯þÂÀþ.¦â<´yü}>,ÿ}“ú…ü]MÄùHô|züYþûõ øº¦Iò‘çñõø³ñîÁÜ,âê6<¤(>=>,üì«õ øº£pX‘Ÿññø±=;°oÿ¸°?‹©¸Ÿ)‹" ýÖH·þÂÀþ.¦â<¤{ü|>,¿}ƒú…ü]MÄùH÷ø÷üY~û'õ øº›‡’Œñåñb ¿u“ú…ü]Ei!áB¯üw|W´Ó#»ÞavûÛ, ÓcmµÕ¼•XÓ‹?ßcûÅü]VÜO”Ž’øEø¸ø‡îÄ7o¸?9îÎqlçÖßZb¾©ÄFó}Û6K_}‹ §SµÖ¯ebö±¸¸¢eo%'ÿÔã߈ƒÿ/Ýò#¸\œÿ}dצÄÿ3O‘~#]­Y´»qÇø\W˜I\ˆOûÔtŽ¥M.å?8¸¯G†ÉQO‰äù”œ¶~ƒ}ÄyÞo>Âþ'(Ë~ø[‹KH²)Ñ^ŠÖ²Ý쾨µm·Ú]åÇÍs;%™m8ÓyćWÔ½>_½Ö^=-HOÒS&Ek;'àqÌåÆÉOÇbZ_™½ßì—Ñ"×µý&»¼´ÈÕ>sñÖÙù .ZSR% ![] ÓÂöãxYi䆼Ofðdu«Úü‘ì·s1}¾ãy/|dÉ›2cJj8ÿ¹¡(ü¾»ýºøýÒªÏÄó½Ï‹šÙæ«Àíl î1ß> “b3e-<•G}—ó#¿¶èW犾ï-Ïä³Bôµ\?¬œ|›â<ƒ%„˜’ÌÜL… +¥ö›¥Cå5kÍ-¡ÐÃu–ºøõ;#7—<£°ç0ꃒÅ¥/¯ßYVÅ_×¥ëÒp¢'Á£Ï]läUz,ŽwYÌ.ÞÎÔÞ²óýåøQëÖ˜Ú>¤ö/ÛÞ2 /x£_š§7D¾CÅd«÷‹ÿ´Í­Ëñe0°SB/õnjË>„-ÀÒ¾Òë_…}Zô£=BOÐÑk•èW³àj˜ž¦\•”|˜ø¢cÈîÎM/ "¾Ê xÏ‹¿ò*ÿ¿Òz¿†ý³ÿiÿ çöØ’½7EyÜð® ô7ÖÈW¤ø~·Sjévü¬íyŸðÙ·ÑÐWÜÚB>Ї‚‡›‹n«¡“MÝz£QeYJ¥*À$!>ÏËZ´ÐËe'z|ñᅜϼ‹$° ^"Ö7¿æ]®Þ¢®Ç3šæ*rs£»™ü‹¨Þ¥•zårs7voâ¤U+€°–ѱ¢ë´‘àTz}šääOq»WénÀåç'©ù ù0›ö”òÅ’‘~·=:Öl<;]ÌhcËÉTPt·vSê<2Q!øì©Rå¤^Ûl6ƒ]¾¥rªÕžfûQÚÚ©ñ“™~LÌ:uÛ/¼†ÒHÜ«±SÝr-ñ&NÝŽ1ÉÈó&ÎrKM·Õ!„©Ýª;•kj>jä'EâtZl²ñ'æ¹Ë¸Ã§")¶ró­B‰åÆÇ¥Ûrµ_Qê´ÚHÆ‹NQ(i˜á—|9r ¬mùµKKEäҼ绹ø0ÿ {_Ü—*ÏÈþʽè`^Êö†„«v§ÀWs·ð*Öì ùÚqU©B‹ÛˆÆƒYÜÎZtwôˆŠ’v%½›@Ù{hMþjèå¦$¶ª˜±×'VË[}ë¿ÅaøÎwœ‡ C‹uìÙTë$¦Vnl¤”¨ƒÒÖ£þ_æK©™çÙÔêÞË1<£ƒÎb$ f‚¶Ý%w²Ð¡àAÌˉâ¶Û5²µeCߣ4 Ï˜R´»b4MÁ¬vD&2™ìEÜEÛôxVJjƒ87šb³ÒyW#,E[Œ.C¦(IZOCök§ŽõI—£lÖNqÎC"Lp¨Š*h,:ÝÀpÐu×­eóMŒ¯þKf!ÃÖ‚›©Á}5¹o1òÙ¿lTç—Õ>CvÀí±¬/©›À‹ZÃj[mëå›ê6«$VXÛ ×âò?8Y+‰%ÂGK†Í]?h‹- %…[ž[Œ6˜­„4ézÛºƒVŒg/Þ m ¨‘¹(ûÕ!b5Æü¬£FÇ úÝÌk:n k©(QÅN¡N:êG˜¢4&ÚýŠÄåš6a ÁðìÀe¿1Msž>½ê¾„d£>CYqYî_*1eªØþF~–«®q=ñ þ€{åÿGü›õªM ¯T~WÒTÙÚ€ÌjmãÒªI¼»oØžWÝLŒ\wå4ñiÕ,ar«x\¼Ëg%`UnTÉUtk ®V"dì4æ½ß#‰yÈÓÛQÔ- Ú >q]%>%wjW‰ÓA­XÍ:‘Ò„ÚÆ‚'æ·¦‚E{‚4µ@< €B¯s@'´|µ,“Ð( ’* HÈŠHjDT,l(Ù'òÔõ@4µOB3e—d:Û,4§žuA-´‘u(ž€ ­™ÉÃqXwü©’¥:àß*$uä#qM–®»º ǾzvH¿? µ¸¦Ñõn7ëxó™!B{‡s/%)!HêI$Љl;"ˆaù>&t¬ ЉžÄ>ŸzÂ(—<øë¸óZ\¨ Þ€oVN:“W&¾Ÿ‰ÈcH2ã- “±·öŠ=t?!«§$‘gSÓ­I)žôùEªS$öàô¨l‘T‚zô¨ [Q®žŠbFŠž” øP‰2=(H™½‚“ú*’ÈõZÔ ì€€j‡ö÷õ‹#Rº”ÉõYÿÕãψôýß?úBäß®²kÑ㙯Ȍ«7Çc™óxÄC×ï®?ª®Õíùªú;‘N{#|FÁåq.»'–åÃ¢ãØ‡ÎЕ+©i}üAÒ°×=r8¶­ŠØçn¨¥dx¼üÎ;•fÆááÛR"CŽ«lt¨!¶ÈMʈ&º˜2UZ´n[4r¯eÞ!#$Å8îL¨m)iB_h›› :Û×\oˆ-~:¾ÇBø>f|>bMn.)…@Þ;fýn‘ý øÇ¾e®ªÏSõ5;?¨òëÓЌӉÇ £ò$UëÞ9TP®áü3Ûïõ±Uþ`ð®WšàI˜ž2ò!7RW)¥ -*R±ùk{Å\Üj7É¡Êþ]vŽSÜñ$ýDG0pó¼ºó™öšs$ëhmǘO–, ©·g·Æ¼æÔµ¡ƒò«³V­,}Gج¬ÈO!ÁѵxI+pÙCï‰ب|µÕÇüÆæáÇZÕ.‡òc´eÏl–Ý£PQ\àxGêT›Bücþ¤óíuf–‡bÿÉþÓz¸Ü¿ Ò¼ºJà¸,v¬:fÆÇ£Ëmâá PÔÜéoëWù£{U,˜åÁå¹þ¿ð²dwÇ™©fÅñ#Ž‘î6â<Ô€…¥ÄªuôY°ÿ31Vɼlär¿ýwó*ÕyA0×Ä~å-‡¸Ì´‚Gœlßp¹ÓÕ[+ù‹ÅúÛYÉþ¿ó-‘ÑfQTq·z°hî_8•ÊqOûŒWâ°Êc¾’VÒH=4ñ®}øß7%mZ½*‘ÜíÈ®o¯›]\š€ö§2ÚCRØwÌ[QÐÞ¹x¾*ĪÓ]M¬ßÉ®ãVÝlœÙ<{+€ÉÂo!MòB¡ZÛC^·á^㇑ÊDZë¹3ø›áŽoh­«È£R´~ÅOA­~†}”XUÔîŽú}(PûUÏæWv;/S­OÖWøûìE”}ýŰävÕap7 Ø|äWÌy×ܸÙÕ_µhKä=F¼e£}Õ8žÕs~]Ç>±Æ6£HJb%iÚK*iPñÔX}šøõùµY5ôê}kµ±)éàlžÙ|7M\DŽ[V=Ù”qéad8Ûé;’µU«b܊ݨÓÄ»}±'ë9§2æ :ú%Ëi´±=öü_dyn_ÖJnkõ×ò«º[›ÚU.åÑÇà>Iñ¸¹s^Œ§N*½oxQGòÎ;ÕÄÜéÒÕùÿ’£-¾SÑQû$d£wª­^†;Ù{³ÑÖp8céú+{¯w¡7·ØÖ»e ÓF(ÝÁ]J}¡[{J6< ökG550·¨ÉáÖ´2#=Y@ë\¼Ú˜ˆU°W{è+Ïó3A×ãávGë¾\z >[zÒø=}kÆLž™ò‡Ëœ[(Ø6¸hüáÄ­_¶\Ó¸“8•yÈ ”[È ý/þ—¬–~‚¨ìÎÒòÓŽ/·œ•ô¦BÖW”µhÌ‚,Iè‡tÐl¯MmâȲ­–1Z›^äi.sÆrÜ7;&R*’ÙYK UÁ°_´ iÛÆÚfe}úŸG{JË<[±rèZåGqÑFÑÿlk¯‰lã·ê9™ü©zf3¹^G%Èì­÷ò%Òv‹’IµyØv³;2’GaöË´ŒcqLrŽb÷Õq!•-¶×¡X$õèbàª{y <œ§ofºŒûÝc—ÆÍÁñ¨‘HCi`íR¬´§yPêmz×åòßLz#cÅK[êͽÚ5»Å¸–S”æÔ¥<ã!h[½Vvî ý.µ›‰ÿoO1øšü¯ÏÝcG5òÞhç8ËÊÉHp8@mBQ¥…q99Þ[»3©‡qÕUãæ3A öÒ“åØ}н¾ÍjYÉ bgÍjS,·]Sí†ÑéöU¨ª“©µ‹€ÄjCÁ^j“µH>ëU`e"S©i*i*ìo¥õПU+”ÉŸ:>1 Š´5çT´¡;ŠÆÀmë­Œn \¬—kòˆú@KIò×àGª³ÑÏSNçñr²0HF-O@ËfèO¨€·o¼êŠZ #Ö+¡ÁÇ[å×TaÌý“¬;?Ù^?Û~3¦FK8´¼³¨ºÔMŠ‚I¹«_I®Ê—2aVInY4Œ<·<Ä"2¤ÖBB6«ëÓK_ÕBkigljI0£gqOãßfJš”·Kˆ;’ BTô‚o[¼%-šûBPmƒnN§2¼Ïˆ)j\6c-ŠlÁ¤•–_H'ÓvíòV—z¶VéÛ²·gV}'iÆ‹D @µú× # Ù˜KéÀ¤XÿUYU4³gsùŽÂÍeÑkC‰}[ÔŸ-¥lcªJا±!ij"V½Î­!Å«­®t¿ÍYWA’\[’f®K«q²åÚJ¾å7éöè”bL€Ü|‹ _bÚH·Ì*SV^;Ê›&Ε%{l4ÐUÓ" he¾=È„’¯p‘í[þôª²úÅmõNAãreœ›;´°7_×szèÙ(4jõ.| ˜ü‹â0Ï4\„îF+JN©eo%.‘ò&æ”®¤ÚÇHcÇb3Ù(™åà_SkL™áb@X„¡(°*Ü|OJÜ[†c–µE®ojû3ŠÊ;Œ‘ÊÖÃé.%Òôe(%@Ø(\z‹V;c¡–¶³Z”^)Á ñÿöIÌ^M¼®3+˰ Jmµµ¹´åÐÁº¨!l¨V¾ÈÉ_•‘ûù÷êºÇÓÿßè¾?ôÉ¿Z¤Ð•Ôü®ƒccó ©1T2Â×Z©%Ó…óþWÀ²')Ås⥔)²¶•¡ 7OJ­kZÛtjFÅ2mÛv’w­®iÊnjé–7wm°QÊròw%ŒZŽ=¥Ÿ¢”)¤­A'B@vàz`Ëol~ßü:ó®î¸ÿ!Ì:¾;ƒ’ïšd< yýÊ$mG¨¦´ós–%¶º›x8#–oÅ|b1Ñ€…ž˜ûí½Î$mÜ:ºëZ ¹]¾†ûíTާ4òn’ìÏ3Ægñ™_zu‡ŠÜRS÷ 'ÌJÇKXÚÆº˜3ù•9ŒU´7$ˆ¼kšà&Ëy0܇61–Üt¾2ó!×v” µJÐj<=ž­£ ²8g9†•†˜–ŸiHbJÐ^#Ùu¥\¤ø‹‚+2Ô²'8*8šòï`§Dg {:—m슲 ¨Èò —ýÚþî\QcwÒÙs¶þ»Q–’eD:ØU¾*®·ùqü´É90ÿ´YÐݯƒ]ÃgìLTÐv„VÍìt!=+fí(9B:U6©ŒÍ YKõ~ÕE­Ð¾<0Øä"±¶mÖ‚dTªÉ•PŶìë¾´¤þmZÏDcÅOÎÛäC›Z±6nª™ZÕ¢ tLœeE”Øqµj“╊O ƒ]^ÑܯÛù4Í_ÉgâÃÆï[qóU5eøSôššd7qòÞˆïVUd«ôI:‚>jýÙ{¶>åĦz>«_”þ|üYðþ^ÇÜ2qr/ªÜ?JðûIXëp2·3kVyš¸dçf0XÎYÊäq<¨-G”•HKéIWßÒšm*·O¾-6'ƾñSÛ[5Õ3é í¾E[x£é‚03QÈñnaùs8¸-íò±L¹V°[jI!6²M´½|¹dvðÖO§¼Zz’1w)É|¿ßUN6/§˜ÈĺÁ¶Âö–­7¿Jëa­e_Ê•ôœNFHNÞ 5#D—g Bç8û>´¨(»Hëssó×ì?åaÏÛ8/Íñ5KÐ|C¿ó©ÊäE$†œt5ë{ÇÕ±Îã­Q[AÕ-|“_ÎÛå;´zÔCŠW®©of²‹UK$vÌ]«™›¸^†eÄ­…y^hºtôŠÇƒ½æ£›/dŒœ 5£,‰ZVe^â½—kî³}W©ÃÍÆ¶6z€=5츮Q‚݇…oª‡i7Mi橉Œ]ëòé\ÜÕƒbŠF«ŠHÜ¡^w›™U3µÂâîÔ} t¯ÏåC=7ýVW‰.ÁgZÒеŇÏ^-ž˜JN"K˜éŽIHTT†ÊÐNªö’+‰bêlb~ö"Ê{;ާÿ¡«¶B-Zh¹fÇŠ¤.;ÆëÜF©±ZÝÕîôѨ:Öá1½çáqW!¾cŠcycîå2ÐHRñZt¿¤k]¬J¼ŠÏ‰£vñ[Ôo׸¦Q®ÇcøÄ6r/Æiµ4:äÜŸšÆ·9Ÿ’ªºš˜²¯9¶Pxçá˜Ç5™å®³7”•3ŽŠ77_£ÃJЦ|e¹êÍËd¾mˆÓ\›»\‹¹3m!ß'•:=”¡e$<=šãòùvµãÀè`ÁZ×ÖgÙ)'“ò'!)*T`œ¿Aëöj0aón—l¹<ªIÐ}ää‘â¹á¸…ňÉaЃ¡6Ô›zmWî|…¥+Ñx8^·}YÈ8W›nc¨7#ÌRl|êWïS¦ºs¨:RJ“rM¾Íb’è²b ùSpòT½/"öôŸfÿn¨˜/܉„ùÑÛ@µÊ·ô:ëV$·6)7(Am R¯Ô€‡ËR¸»W<ådeHa§ARBµ'R/Yh`ä8FÙ8ø ¸\TVÕ½£±?ЩÖLåëßüBÜãîAŽˆ‡ÓƳ ̘ÂýŒëÅqbÃîKÃæ½u»VT²Ã)ž]JîW=ÉeG‡šãêÉä"4yxø”†£%—YCžcËP7Ü¥[héÖ½ ¬ÉE]ñ Èò8TöÇ$˜˜þI,½ÈXvêBœm¤}à„‘pM®/­­ãXÖŒ¶sįo6ÞO“ËÇgކû¸V£Gm—ñJS’Õ BuQÔÖÖ»o§‰­È­ÏËßÛ!Ã;¡‡0"¦qä®GÂJŽ J¼©2ØR‹vû¿bÃå¬ýǾ½œîÖÒ˯ ûLã´)´é°\ÿB¼‚;Í™=`)FçÙhƒWlŠu8Ÿ˜DvW#å-€v­õß­ì?:³VÅoÔ×1Xy+ˆÖë­ ±Ö÷H¸7ù+at(Å2©JC1ÀmåèuëkUªA¶¹#.52–å›@*>ˆ½Q4‰eVsNœšÚR JÚJ’| ´5jZ ¯oäM8=¯«¤Øz¼¥VJýb¶ú§ãá…6§ã«cɱo»Ï­þ¦•V¥ãµ¸i‘3y<ŒŠgÁ2LG»VË ZM£mêØœ²,Š<¥¬òu­µm’NÔX§J›øÀªÐênEÇr<—ƒà9”8*/cÈÇeJQKIHaÅ“ Ü‚Óôúª¬êÝS/W ·Cos†É*ŽZ‘–á±Ë'©̵$ù£WéjÏ¥¿Ô·ÈÿöÞºÓÿ¿è ¾?ôÉ¿Z¤Ðšõ?+ûIñ×ÓU6 ÍÒ¡–7¿ª ”.Ój]‚RNãaòÔJRý;$YÔ÷$â~t&§IÆ}bÈ÷¦YuI¶¡ PI¬XsùŠQJ]_TW¢¢7x³Ya™·²T•\ÛÛ>‹š£pcoSÄ ùŸJTƒoMýTÜKbJ^ã½Öô)ÚÝ¿6®]„±±6½C,Í¥'³|ö'o3q†ZÈ+¡%[A·¢þ5Tä©«.Eí¨ñ«—ê*J34‘é" ²èKâÆ)%+på<Û8‹{Ð}5y›µú¦4ìÙ¡èõVnºƒ7eJu”GvCŽ0ÍËl©D¥7ôÒ«LT¥æ¤koIµd]I:Cá혼˜ñ>46Ö.NEOguÀ†ýÙ-º¥U  ƒòŠÔäô“6íW9%ãݵã^tvœÈÇd¡˜âX—TS¼Ù]@°¹®®ûõ“Ë®„? æß•»Ôê`D+xÇ5-ÉJzÝiÝ,t¬¾í´Ã^[¶‡%üLpl®/ ï!mµIÂÌ>Ú’ ò–GÑW¢þ·ÅÈ“ƒŸÍÆÞ§"ÁȹŒC©…“÷w]‘æ"ºJî—£Ú°õ 蜸+]À–ì§1 ó ØeÄC> IuK) ²–«ÛÓYq™@ ¯Ë.„ XØØë©,Iñø°&æqq2²DLkòP‰’¼P…óT­\Í»ÝÎ;Û.<ŒB8 ^nS¾gÖI:¥?D‚=>Š›VjšPIÔŽ•RÁ±Dn %)¶ãm¢¢Hµ öÔ$É)*!)' oB狟˜ÈFÅ㢮Té‹ GŒu©GÀP׉ ?Åûw†s¶ò°ÜŒLÄòUò6`Ìå’ØðÙZ­íèQé«{/§R®ÇjüñÎÞð¾íÇÂa³02Ù¦²3aC˜ÚÁ}æÆ2K«Ú?B 6«ã£ªrj¶ÿ×åˆLzUߎ÷¹o¥Ï¹*¯òå$×S#Ùª~£/»J•è6ÿcs‘1xÅ}Ô¶¤>âõ6ÑVþ…z¼8<ü*É»ÅÈrml¿t0íeqÍ©ä¹\—H=]¡±o£òÚ¯‡‹«]Iâɓڭ4ääÅä¸üØ,8K²¶"ÄŽ›Á?hVßoÃE}Ë©£Îãr2QÑQšwr~aŽs$5§#:·–RB™mJGɨÜåð°rÛÑZNjî\¾Õ 8u´šYþM—k3Ƕò£>òQOܶµ˜W˹? ñ-|Š":}í¿Ì¾éåÒÎh¾ñùdaäùÅ$íÐik~m|Û¾ðkÃͶ½ ûïÁÛ/uá¬ÙRÝ>¿2§Áˆâü´ËÓ+pk´8 ’~k×+‰fËZ>ž¯—{qð["RëYùލï?b¸ŸjxC—+ÉvS^S¼{ˆGß亠‹ÞöµÔmà+éÕø+‹•=­Ìšñÿ<ù´äyvÃV·Gà9‘VY‡d© Òál ôþ}xÿÚnʨœÊ“ôÁÿŸqŸ!×k˜'’›\ú+‰+ÝUôlö7ŽÖ]RlßµíF;œð¾Ë_·Êu«õHÉ:¯iñ5GMÕƒ- 6Œž»-ì§N•£nÝ/©°ùJ â=5íû. fʳÆâ,éѽ¨¦[V­2A›öAtX¥Ÿ²æãÛÌÂe®JdPÇñrÁ*³£r|<+µÚ¾(¿ó|•ir»rjqêN¶êm¨,A¯£qyx¹VÇdÎ=ñZº4;B´ùjÙª™£$1æ®ööEpù¹S7øXߨYö†ÛkW„î\¸G±âqá"·-6½«Âs¹Sc·‡ª:æÀ >0Äí—2x·åâ\ U¬H>5å½Ó#=Ÿ_Ivؾm‘)· %Ô§bI×B M{}ÛÔ¥¹TEðÇ5KÝ—Ë56·ÒƒzØ]·ÒàÂù°ôRm,'dx)YLÓOARBÀµ½:ÕýǶ+ïW}°øî ¶ÐsX”áT©9œpFq•{)(”Uo Ûâ×~©­šù_^†Øk1 7)Žä£½:2Ò<µå¹bÀð­›äV«Tê`XÝ,º.{²Ža‰ÎeO*SË} QeK'j¯ÒÕæ9*û½£¿†ÕÛì•þD,;r!kÈ)m!„n¥¨\ž¹™“ßݤ*ùÛœD~ÚöæO ’”5“ɶ£J¶ïoª¾n•Ú—»úÌæ]¼Ù•WÕ]NjËdædrR2’µ¸§Zzz‚~[é^s%÷Z_‰Ø¥v¨5„(rŽRt·V[ƒç T­@µa³EÒ641¢qÁ÷Å$Ñh`lÈ‘v‰¤Ìƾrw‹ô½ïöê•džäfºg˜Ì%Ô- *ói½ïo±W*CdÑ*j™^ä2†ÈO˜tÜ@°ÕWZzvqÕ¥¼›NCj j5Qß-ªÈÁ™–b㥂^‘ºÉO¤Ô˜hµ*ù,;9ìO5;âd¢½ð ‰C¨(6>^¯†û.­è2Yxæ ÍpÎ=+ó“‚ŽÇ´~’ö %–ìO8ÆRc1£¸Û¾HÜ7¤Ý?ë‹ÖÀVÝtEo®‡0÷8ç2í#ÆyËqs^SÉ(óÜqn%;z]CÊ7·PAªa¬d©<¥8ìŠÂj¥rN^Ïq¥HmŒš,Ê+‘-L¬  ô¢R²~JËÝy•ÅMž,ãöþ3½÷z§)Èýd„ÈwuÂï¤ æW•V“дLykr/”á*x‘Ðt«©1““9lfYåyà¦BÉOõ µz–´¸Åi©é*I¶¢ã¦§ZÞð0gqðÓ2zêM÷hn…MzÍ£Ì<ÈíG},•)¶[#o‰(ªx’Ê£îºønBÙØúÑd“è«$Ts×'>‚:ãe'qð»K׿¬Øú•·Õ92&ö0Åå©o)±ºéöI ^âß-oHèÃAVc;!¹RÚ„eã² 6d--£tˆŽÇl¶êNµ›Ž–íJÞ`»d;Sàès*q‡J<ÉRdèRÜ mIi *UÑtmbn++¢KBµm‰ÆË÷UÙñÛ‰’¼+çË ¢Å°†Å ê>äz+ ÜŒíTÚÑÌNuðûLVàd$sŒL·" •äâGO°uGµBÞ«øÖ[ýjÏ¥oõ-†}Ž­ãiÿˆ_ôßú?äß­RhMzŸ– ÕM™2MPQÒ„¡t8 ”@맦‰uõ†¤}2có]K¯º·JRî›$VjR½¬¡GÝÒ¡©ÐÕš‚íɱçwƒŸÍíÜN×Êκ÷ˆïú½7W[­ªõzU© zƶ¤x™ÉþÁrøÝ g¼®9Ò/X±¨Ç“k’/ƒu>tvÿ°pùo2Éasé˜Ä¿wSØŒcªr3.,o%eí¤‘ $^æº/›µB9œ~Ý[Yîf„î¶qÞc›âÑÔ_gŽKq%d]CÍCKVãÒ÷ëë½t0ßÙOÒsóÒ¸îê¼ –ʼn²(û-±«V‰±øt¹OƒÆàŒÌLXtCmÆwí󔾧ƽÅ>>ç,K†’˜ù7?ù1Ø9y­™Ñî³—©3‘ïo5Êá³ø9† ârd>Œ²ÓjÖG–«*úY"­üÌŽ‹¦†…‘=†¶Ü“ë=MÆFÅ™ Å4æÕMÍìG_ óÓºæçµl‡Ñ¾øwÙ·âÀ¢®“EáÊ–e&¹üoø•ùN¯w_öy؈äœ&å¾û‘·ïˆ>‚4¯µößÎã¶7è? Ó#ßrÒO”fáàHY»Šh%Óúdû'ó+äÝ÷‹îÜ»Ðý¥ð=ó»^¯û©|Æ÷íi ÷34ÜŽI¹¾#€}¹%·Þ±(ŒáqªÏ‚~ZôŸrópóZõèê|ÏùÛÊãdàS‹g9“_!õZ4Ü7ˆò C€Ê#Äe m(H²R€,-¥zõke¶ë=Yù“ËtÐÖ<¢yT5)Æøù#ʘèkk\J–z\__ Úò¦°WGV|Úæ¼BV3žHÄáÞLèY¬Ÿ™¸kº[‹Nøåh6µÕìëÓO ãåíé_å=&.zØõèŽèì† ¹|/“qÙ÷œ?%\èÒ›&ÇkéT) Xþ•­>Zïñ±¾;«_’Óù-ÎÉæ³å&r±“fcVàuX÷ÜŒ§F›‹*(*·®×¯×ݳ'™Æ¥ý5OçGÎmXÈ׬¤Ì"ƹýÙû ÞÂVÒ}¥üµðžgük|§Z½Ù:8~Z¥L”èJD  VU©­•j:ŽÛm¬”¤$¨ÝVñ¬üzª½ Y,ì‰eÅbK~Ò,¯]ŒXfªÊèÈGñ–õõÖÆnËÆæÕ«(fþs©¶çCW˜Á$§ªGô+Îåì|îÖüÎ3Ü—¼³bÍ¥‹#*%íjB|—:\ôÒ·¸¿ÖËg!m¹«—´^Îiª/M¶†ÛIF–ñªs¹Õ½e=·ˆè¢ËQœ¥ i_9îÜÝZ=7…Nr€ ¯!›#³7¢Õlœ >ZJø…˵)Q#b·®î•Á¿=§ÐìÓ…HêVrýöåïÁÈ¥¦2‹gbÓ¡ú«RýÃ$èf¯ˆÔ÷OšeÐæüÓà´tùê™9W}Yzâªè‹‘Èùæá‰²qí¢Û”zéZõµ¯h2¸ªƒ¢y‡ ‰ÙnÆ>Cü³,Úýåõ¥2…€K`ø)Z\üÕ×µ—›gViV¯-åôG.ðNór ÉZΩå)œß61>Ê”IÒ´pr­KIµ—oX>‚OÇð‰æÄq¦s(hXÜyˆ]´ ñ"þ5Øt§*ž³š­n5½G;ö·°x|ýx\ÔE¢!å:‰ ÎÓ¨ ×'¼Ú­¿“”¼¹^%“¼ÝÁ”壉cÜòqxDí!³ìÙ»§_”›Ö§yË>Íz#g·c…/Ä£7bEcñ%Œ¦H[Ñ–»ËJv“Ó[ux(GÊjñÙ¹u: ÜPWB@+"@Ûݘ]åæKoyŒùI‹,õ¢1eRnœ°C7í„ìOO_…ZÏC3È«"#pƒ»ÖEc’Ñ,ÓœÆ[8ŒëRflLiŽÑߥ丧V‹Mš¿Í^£´W&Lmë ¹²V¯B­“â<ꬻÑ$EÇ7•B^ÏLU”·Ü-›•’€$|•׫n°7©R|¬ïO,„Î9þÝñ•¹3B¦gr.¯r^smÚ!CňӲàÄæY¯É͹4Žšø'ä8)ݸÈqHûÌá²R$d£›<Ô¢Ÿ-ëu l>‹W'½a³È¯àW·]V®¾'Zý^Î::a27¶…­ÄḒ6¹U¬ %†Ä¡ GÑê>jØ¡‚ÏSy“MÈ引i ‹1Ä}¡ULÞº¥¼¤-§[>Ú‚‰7kkv†—$ÇËAÇ: ]m/¥ Û©ºì ¦—l^M5·Ä`°¥yl°‘ý …«Шä<ȉÇb“oP¬ˆ¨¬Y±“Ë´¥¥ã¥¡_)iVüÚ½>±ꜭö„‚»–MЦ­â EþÕtQ¨‘œisÙÈ¥q_ThÌîl”Ä:x -g9~Z.M¯ì·B.¢½ª$ cöª]šEjѶ1½Þäm%œôÖ”ÊþôßžàG´uÐ*«\ŒÉ “½¾Îäùg~»9’ÊËq×Úç|wz–³uä£Ù?d šänõŸJ1寰ãÐÏÐÕuÎ)§þ!Ð|èÿ“~µI¨e«Õ–nµŽLë¨[Kа¢… VÓaÒ¤”f.z|õN†…’Õ IÚ¡ªT< i‰üÏ–çc1‹ÊòYÓ`²Ún;ï-M¥:'i=a¾*ZÊÍjˆˆèU\·T„«xIµÇCYSMÕp™s'"9Kj*”´§Î^ŸHõ&µò_Ë«²Rbob“×ñÞDùq”¡ 0µZJ4B‚or>ÅN,›”–!UbµY è+<™| ,Ž[Éœã‘x³Ù‰j㌼_gæ«Èó/r­—µ'À©ô %¦§ˆªn…´áèJzëX«’­íñ&–7§a;ß{3¹£j»¬êPöøõˆˆ=J Ö”'B»M$«>…ö#¶ív¿ðnLôÖgËåxŒ”H’-ÈþjV/úD)ÕV1YcfÏþu&n9GoäÓ0¸Ž'È9*1î*þ@¦ËÈfêVô¶¥ŠR‰ÐŸ æ¼>ÌÉéRMéÔØyÌ.ä|KŠà¼€ñ@Û̇22Yß% GSÑR½ž½SzÔÃeVåI\•o¡f}y8ˆZä–\º€MÑaÓçéUѳ*[*jlÇÄ'l¢³3ë(Ò——Á½,(èd¥ÕÊûáJíabµoà=U¹‹‹k¸9ù9~[mŸ2;“4d³“9"2ÌL‘È–_ËÇm|L•]Kºz„‘b/òWz”„‘çl÷9f´H¿]oW,‘>BE­­°1ݾÊdxVO›¶ó(ÇcK+iKj>6¯©Ra¦:¥ÇÔSN¤HZz„ˆùª™§kk¨‚ÏÍÙâìg\GuDZ¶ì·:•íöíê½iðgŠrõ’iëa¸®k= +ÆÅSñ°ìùÙŽˆHÕ—?7+*Ùñ.ÉÛº\‹|Õ¶µ${ è,¢ZfG/­ÖŠcm±~Ö;Õ·¡K&GXiš¯/DIÙÿpÝ¢ž$¡fB³É1Áö“·ÔŠÇ#wA‡-´ƒÿÑ䟈){ýßß§py0·É•“[ô¤Õë“CV¥ipT_†JÚE ‹i¸5ªðI™Ø‹qâTMBÄцÙ‚U}jêQTõ,XÙ~Z’’zt¬ØìѱŠËDn¾ðv<¤ƒ{-*·Ê5üÊñß©u±ú+ùQ“w%}eõ#oA@¯+Æs–±éG×¹UÃöYß}ÐÄAãž;Š.¼Úqþ~BMîëî<¯9×\WS¹g_U~˜àb—6þïúæçÄOÿì²mÒr¿Æ|×à¦ð&D“ÿj+ãßÿǧÈ~ÎþJÏùm×¢ÅÜ×ÏQö†x?6®±ÙôL¦ê¯7JŸ&þ†<ÊúQˆ·˜¯NÑq󚆴1ѧv× ³qwÍòLV–ædqü^uÅAo,ÃIwÊâ~ò•¥Dh³ìƒé·¦ºÝ£‡‘g.ˆ>üÄø—“Ù¸›±ãW¥Ó«~‰-Høä T¼Çåñ³˜b…åIJXQÞûA5õk`Ö&Qøï'&m-u5òx>w‰ÍÇq m·'"ü”ÊYXPqçÝÚ„×R +ÈwÞ×~W!åO©÷ï‚¿™ÜnßÀ¯6;-‹¯ÝñNvããx¦-aØ,6•¯ ”€_éûò—ò’@õXWw·qkÇĨ|Çâ>ù“¼óoÈ¿EèFÑÇÎS®J‚û :ÑJ£•Ÿam¾è õ)%:އZëcÑžg*Ðaõª2“ð<¢\Îg "|XÒ/bî,¡O¶¢>éiq±×aPúUÔªJÉÈášWŒöò6”¢[ B0p’©0qà•)£v¾>a¿É[7Ä­ ®…–gTÒñ7iq³c=ãÅǘì©Nk­Å•} móUs5DÛ5rkó%9B'GÌåãäÏöÊ<Ù äþz]Pw§é¯ÕýšÕ·¯M•üHð׫Y->’…9VÕËîùÖo`Em*º•ò×Ãyw^m¾S­Zè0”}£òÖ5rô¬à®é×­d­|è’EÊÀ¨úµÐãã¶G¢“]­ ˜ê&ÆõЭ-­Æ¦U Zö®ï©1ˆ<Ëdn6Iô×_Ûн.ú [‹¸•c}\O¦¼¿|ì¼^]^êí·¤épùÙ0Ýz=ÒüPUæ´¯¢zÚ¾OÜx\¾Øô{©é=Ï59 8†½¹ôבåsYðg[v•LƒÇÚ­*©+v~¬k pB€ùGõ/îC){ûxŒâÒ á¸ Z¯®Ãáס® ©LÝÕ]±õ5/àYì ¸•hClÛ–:؃o±\üœ[VñàmÓ-Z4î3¸(¨¼wmlh-XïVÜ"Õé,îÐáZàüZWpy#‘·cU:G³¡êÔ×C‹Ê®çÔÔÍw‘íG9ó™¼›žä}õ¸²e©ùl’­·[Ö¥ë|¶”l¦±ÖîÃïq98„ˆØ—BRµ­$ õúgÇÀ»êc¿"©³ØŸ‡žCÛŒ›9‰ÜVRG›m[’¯H>ÓãðÝ5®Ó}ñÛëÜœ¼æo54-[å¨ù·µ‰;€ûW‘ÍmÒzZhmhÓDw’Û¥AƼÄôÞ:W?i•¢MÖM¬Š•êH¬vEêÆ«È¹ ÖKj#ÌV z+n…÷[x—žä-€7tÕÔÜŸ³Th»è?zj“{ T”¿ =™T¡:KÞP”Ÿë‰$6•h5î?%dH†ÍÑÙ “Š{,©a(R™JHNš…š,{œ-dő–];ÜÎ#ÁñQ¤ç]}÷¤>¤A%K[Í…+b•Ñ:zk­þAʵSµa^ýŽtgwSã;?^7ÂñÐà&RÊ^TÃæÈ-BTwZº<>ÁVâÝL9¹t2åýÙ‹3 ‡'4œ·r»xæ?9ÌqRÞ䜢ßC’±ñœ²Cžì70Rõ­ëÚââcÅÇò©õ ã×’ÞYcN‚G/ÆÈËñ®Pû¸‰nÆ÷|{/”{o«b¡}-q{×›nØ­¶ÝNó¢ÉTêr1í>s:|Ym8c¥J1ÝQºVÞåwxýÜ¥ÕºÖ¦ÒéðåÀ9ŸÈÊîkn/„n<–¥)Ô+a‡¿ËT…§MéAO˜½uÐÏÛ^>ë¸ô¬Y3Bñ:kñ 9Œ¦œââþá+êö9™Ž“ ]êB’â\ô&õåsöÛcRœœ\¥kCÑÆI#·.#‰’Ô–Òó Ý*m]“â hmµ:£bõÐäþpñV’•¨¶¦å¯zzum5_#èjÜl·#7¹.‡âÉH7°ûw­Æ´0N£´KœBÕ5(Rð ÔFÓ’¨ôDÉläñÓD )N+ï‹YÔ[h |ÔÆVú•¼´æÚ‘ *¾õ%V·¤Y`‚>,G%AÌB‚ÄwÜdƒcrÚÀÕ{T×ën†ˆ…ˆË¦¸èt•P° ®‚¶†¤A]æi/8€ÖÄé`4ú&¥3¤b¨Y ÎK@GHWCíAëóÔÊ"µñ$pÍp•6`RnB[±Öã[üÕTõ‚éhn^ÂL÷ÞñöuKéç|uêFJ>¿f­Eí¯•‘ûägé ºçÓÿºö ¾#ø?äß­RhɯT~Wúž©É—‡ÉU$«PAÓRJE‡Z†H¶–š‚ÉžlzTƒ«i O¸¨‚R’¼¢uX·AWЖ”÷ž¨®°ÈadìI©kXë]\«"3$¹d±mŠjád¤M¯JÑ¥É!M9m¯dAÿézÊä¾â:•!Ô­Ók(ÞÄž V-é8OS ­àº“±1ÙÃ~êÔ¿* !Çb¶â¬Ø¶ª­{Þ´¼ø²»•XÛ‹rŒÇÏc³˜IÊÇäqo”‹ê |Gˆ­¤åJ3lÞ¤yÜ>áònæò)<Ÿ•N3òRR”nÚ”h: ÊìÙ‘hQ/Ó×PC=m~[‰pêP6õ :Ÿ|CGš;cõf5ÖO ™^L\9,8Ú–Òmà ‚ËQȪÉÔœfEoAô/†ÃƒÇ¹Sܽ2ad1±&1Ž.¤FoÍŽÝŠR:¨‹u®Ýëì³Õãä«ÖHýæáxì›Ñ±ó1×.†ä©`xÔúkQ`·S̘ó;5Íf!Ѓėqniiè¨uOBÞchÐ’8¯ä²ðÜ}Ø®rÆòLÉDIJä%1Í÷«`?DX›×c·ñr»Li¹ò1*íOY>ree ™)%!SÊ)BE‡ˆû'ƺ©B9èe¯AB犸 2ЂAÈ„æ93L—æ; ,†Ô¡Ð”ô©ÜÄ ôÿR ±î–éoMCR Ì_!Ìb"d ãæ¹&U°ÔöQ q>ƒZù¸˜òÙZÊ]zuL…°6¾ Ù.zÖÀë>`º7¤¯Ö Â"ÝÉÍð×si ýO“‰ÄÃq”Ì}+q$Ê—adØxÜüµƒO:vøªÜê[~»{Éx/Å/dŸÏÃ÷fy|ܬjÉúM}EÖ¶*¡ê[2ödÿÒ㿈soˆùëÿ8<›õÖMu1¯e|… PÛÛm­E­ ÍK@²ß*O[ÖjQ4Zù`b®·¿ËU¾3[t³Ô(ƒê­[PÍ[Àá”ؤØ*ÁzÜÝ]¶–]rR ê„ý¢kÉüMXÇWë>ûü ÎÞK×Ôn1§Í^?Œ£5>UøÏ¾òã²õ?Äwrg¡ÞÏò ] .`ï"¿SñqÎ4×÷Ð5þ"[{¾Tÿæ?Æ|Öà Ý ?C [çH¯…üuÿ‡ì¿ä¯þO•~"ý·^nSÐû6fÕznàA¼Ïz6A^\•K”P7#cÊ.E…~»øo³v¼½¯ íJ7ô“ùçñÏÆ_q{ÖjaÉ•cVp’p\rfjp9XéÃã\}˜ŽÛ&€­@PMºé]Wý¡ã³ÛU£ôÆ¿[-g&mZð~“™xD©òÚž¹î:êÂÛ ©Ñc¶Ê¯Ìñ°aËù˜‰gíOå?ËÅwËvv…õ‹}+8yËhôd -Ô*:ƒÉ·®è®gÌñrôèzoøæv|õ}R•ò£»{\œ&Ç;9ØïÊTæ±îÌÉò½´Ü”ì‘¶ý «ë|T©MÒÄWÃ’÷ˆ(qNÇáwO"É0¨øî*Ú…æ´½Ìx¨2ëJZ¶£bµ¾†Ç¸ΞfFýg¬äò-‡Š±§Ô“æ¼Â!eèò¢Üµ®D\);T‘pÚV5&öê:Vë«ZœÜié%ïËo‘a±Ù8¨KÙ|TTÃÌã ±‘?ÖÖ[¥6úEmàöÑ­™:¶l¨ÆA¼&a”‡ýÉà¬@nÅu aÖŸô-´®äýС[øî“ƒ›Fi¼ÆG‹–ʸñÈ‚Ãa«ÞÏ¡%)RG…ºmhu2OöK˜IäÎÊͰ¤F\ÙÏ?+š û!¿°/ZÙÒuÔ·G'Î߈\*øçx»‰ÀR$æ¤ä™6dWï`&ýB|Ý¿5~‘ø+—\½› ¦]kð8<§/ÜïÖsÜ÷IÖõ¥ÞyJ“]HΪõšø+‘ùÛ|§n˜´K6$üµ8óIb‘ 6·D&ö­3C\{œ3ð©”áùN_ȱ|‰1ÆRdV“ÇÌ”¥iº¢òPpT}›z¯[}¯»,Û©O­S.N'—TÙ²~"»kâ°ãòŒ(‡ä:Ôl› ‚´¯ØB’€Ý$šõ¼^[äa·™”¦sù%¤¼NYRÂP¥“¢u'ÕÖ˜sªSs9û%ÁeìÏ"âs¹ú ò–Ú8éQg©-‰{’ T=iJ€õ×ñ7¼r*¸¤îãí¾^=ÌØ=áà¸î"ü,ÎD9"<ØÃè,•'Ñr…ò×g'"ÙpYÛª5ëE[¦i“($[ô¾ó~÷ɲLõݽL1›òÁN‡Ã¥|ß/µiƒ¼í¡^’æûëãV­`ÃmOÖl@ > âx/<†óOcñòšq²= ào^aqò§¡ßy¨Ö§UðG9´è‡Ì8ðÊãvíWœŸhèQ±ñ5»‹{~Ò5r:õ«,L|>pI9˜¹x«S(i^c¸ð¤‘sàm[k‰I“]òì”2ûÍÛÌlX˜þM! Å‚ÞØøÄßm†£ç5«Zýn„áÞÛŽ¬Ô©îç!¼_nøCy (p´‡Ë[ìm×¥µ°¬4Èž”FÃÄ××fÛÄ·ËWNo¸Ü®7‰l“‰`†Í† icâ4­Ôö¯iÁ­hn*¤ÕÆø¨ƒ¹€á$/ÊAhän}ærùíiSoÂK[I‘å9ŽQ•ÊLËNvsžbˆZÔH Ñ@’õÁÏ’×rÎÆ¤´3ŸT¬kžBvîö–÷K ~aZ[½&h'ñíÊŠS$$#cl¤Ù ·¥b´OÀµ¶ ¢úŠ)¿ÍX[2!)·\m!²½›·*Þ¡cöMal±wZ¼¾15 ÝRYJ-ÿó[5Dý¢öèF¢bßl%@£j@ÐHM…l£™>â݆áq$l ²>Qm>ÝX‡©¸;1Œ˜˜L³Š-7)ß"3g©òÉ*UúX•XzÅ}áÑKÏ#"˜èy®õÌt{*È~ïðè¼¶ÌFAòÃsÖ‡q“Ò5‰9 ³aCЫ»Å$ ún:ËHôwW[Iñ¥yi9r‘–„eÍÇÍlT Ô¨ï¥jN¾‚“^Fôt¼z¿šî¡™ÈMÂòÌfvÅÎæld›Ì9“wî–ÛžðT»õ*XÖýk%-ÜkÚ±§‰Ü’±ç‰À‹ÜÌ\…ÄᜅÈÜ~%j*,Ä¡Õ2‹ÝÜ…úP«?ríë-<Ú­|MîßÍjÛ¼¤b8÷s œþuˆ|u´¤LZ–”®l‡ˆ­ø’J•nƒæ®gmã%9/õQ¹ÏÍù5êÍ7Î{”3¼«‰ËÄ´ö¶¯/ƒKÄ iak¦CŠJl´»•_¯”} Ö9|·’î¿“àaãñÕ·‰¢Fg†g‹c{ŽÊ3û{͘k/‚}•½‹ò˜aо݈µõÚ-áZµ³¶ž£c2T¬úΔ_w²Y·`ó ZÚÁÄ•Œz~CZí‹ÃC˜¥C ¡J–•Ù@jìuWwÚ)—ŽÝ–­ì¼æ¯ ¡@“Ëàò×¹? icÛ¸ÿ÷'ýݵ-£ëAVÓë½xnoÝòm]×2ËCYâù,p´¡äÚÏl‚Ú»P‚r^rr’¸ ·².…qXcRÄ伂ä8מIÚÚvêFµ’ª ¶Vr/!ù¨[гl5¸×p7üʹ ÀþTÆ~­\ˆÎímÈÊQ·[t¨ª†Cz÷ò€Ysˆzn%†Y,{¥`(6V€½gJ„È‚®¦R̰‡BÔV~SRÄ@ŠÙiMˆ¡)ö¹h³©ùïJ1A´{ Ôv;ÑÙýˆ¿5ã»RþÒŽ‘Yñýuò˜ò¯bß#?FõÖ8fŸø…ÿ@]ñ¿OÜÿ“~µI£&½Qù`ù:V96Œ€½Å  üÚW?êÔ8F¶7éB`]'_’„™*ÄZôðô  Á:Ð@¢V¤ìÖáE'æ7¨jHµdr VËÊZ~øMÒº…¡U£0J\Ú´«ÈM…úØú©¹t%´ZŸä¨#­”)¶óc¼Ǧç×Z+Š«—y‰aöäÃ6dÉj+Ž”°²6·{n*=-ë½eäºÖ²Ñ9’C|æ=üfJD9 Jd±&à¨ÔVN>Ezèf¥–Ýu´âR¤)EDhmè5˜1  +@lª„”­Hà_Ó@±ëÖ¥É;8ˆ˜É¹)Vom «C`ÚèèI±[ ³é©™rW¨ÚØŽãÄáaÆbâœÏÎ`Ì©—a¤í:‹M½±¾ÚîõÑ}ÉWêêÄ2Ÿ½ÑÌ"LVù"°xé-)•@Ç!,¤6 SmÖ*½PA­¼]»| <ÝÃ-º8#øfzó¨B%9»!±2Ÿ)Å©z-çU¹vI76ëã]®2ÖC‘ȶš²¿Ë{{—ÃÎÈÉ€×Ö8†–‡&2¼íÔo)QO_,Ýú¯Z|ŽJ6Ò”oñ¹Øî’˜f»Þ}>ŠÐjДx£~ºTI:ák_Jz ãZ “×KP‘OÌ=( »År}¸‰ÛÞ]=zO4”¤Ž;!?A°R~SR”•Z”Ÿh<>J‚ÌóM5è£IauG½l/¤¸Qôæ¶›T­•\t!ĵðWË9/,ø«ìâ3™7òMàâæ˜„‡•pËC9 'ç"²+ÍŠeQVÿÓ㯈sÿÌ|ý]Áäß®²k©û+ä13NÔºK¡ ¦ý+oLv´Š^¶i‰2›  -X²qÑeÆÖð­”Úg£“möÍÔ¦{žª@üÚò?ã~R>ãü¡Î—*Õô£|‹+Ác¾Ë«/~–qj´ýYßùRáäøs<†Ò…ÀÝqe{;ýUú´üSÅÉÀ¢Ûí:%>¸?¿|7Ÿø‡=·E|Öãð”îÞ*ñrcþü‚>tÿ©_øÕîÉF~²þN{<\µô4l?ί }žg «o:ȳN­ MÈBŠu?%t1wNV%Éd½Î~^ÓÄËm×ÅVߥ!EL– R©N©*RJÔAÀëV·yæ>¹mó²+ÙøU銟úPÌ!)t”¤$”ëan„Ö•ò["öœ›8°SÞÔ–€ã^{kd‹ù©(·ôÂߟS‚Ι*ýfç‰eâä«ñ«üFÏâ2rüG ŽÅãr°aFm•ºÙÚIHÖÖè/ÓZôy»ŽkÙ´ázŽvï…¸\\*–¢»ñoÓòtA`O)ä¨D†ÑžžÛrÔ%âCŠ €"öõÖ%Íκ^ß;7­Ø{}œÛ7òÕ?ƈU<òÖ—êÔâT— ‰!CP }>º>w!ÿî[ÿSÿY?ä]½öø¿ôWýD¤CžÆ8Çæ&Cu7³Œ¼´zê Z½Ã“^™-ó²—øw¶ß¯þ•þ£bqóóN3’mçòKËâŸ]²¸©A*KÍ«EY{w%V7xõ¿JÝâ÷ÞN+§kn^)œíðkæaµqâXïÍ«*†“ zÐiÞ÷s3Äû„ç™12é€ì•¥D%åEiÆVAéì­?2kìœS7ä“óNlo Þ6µM¯˜Þ]‡^Q˜8ÔÃB›a·ÍåìûK*þ ê~aZ™6ºAÉFøÎâ\Ñw'…ÍÄ`äfÍñ–Ð…cØRÂbT—\*Pú ‹ž•ïþ øƒoáäÇ{Gµ:ú!ž%òÝ:©g=q‡áròÉÆW•¤8ôà|â›Å zt'Kךø“ùÄÄÝq½ÏÔw;_Â|œÐî¶¢ÝÈ>XÆ:¦0¼Ùœ„ T=Æ`n+¢É;tR½«ªÃJù¥>#¶|“,îr>xkõ¦:ËGTYẟ ×t¥[RRHû긜­É6y|¸¶¸"[p†$&×öÚ®òµF× ×Ù6H‚ÇH‘càÏV;!ÐìwÒ¢’• AJ‡ˆ¯=Žñäw¥¶´u2ýTš”m>SÞnàs˜X®;Ès‰ÈããHiÅym„V‹%%Â>•ºüµÝ]ó5Ýp¦µzµòš×ãÕQÙ¯UD-µ$¤›óW¿Æ×”ÓôJ­«þPÃaCŠóýÙæÜ»j7àúGB+å.›¹{¶´ô=µoZN…êw5äÙ–qØŒ®mü”(oeûVÓq:ªÃAzëW¿r<ÊâݹzJ[‰M®ý\ÅÚõ¥Ýó'&ÿB™jV—Ò¼“©ÖÝ(AÇo}jv•lýhUŽ(PMîÇp6ØÌ´Ò€“¦¢´½ï·î¹ "ù ÍF}¯¯ yµ­í ©ëTy1YÌ–XòWÀ¥aø¯ DÄHÃwä:V™ )Q¿B ¬ÞÃZ2&˪6Nƒq.kµ\×Ú¾KÜqÇ‚<wŸ)IîÅÇ€¯4„%ÔyjQ>ɹ$+ÐVEÔimkÑ'£4ÔøÍÜY^ï—Ìç3$ä$§ÍXÇšâÊ´ð75xþZŒŒì'¶©ø•!ŽzKÎež»Ž(”ÇZµºÏŽ¿-kÑ uvö™×“yÎ#•vû‹q5É)ÇpÎ7>V3vóÄÙUci:8 a¯U¯z^.JÛj¾°j:ºdÜŽ\—ÎylNEdz@{ŒC¸<ÒÔcÅ÷WB‹j¶ª+± YÕW>ÍenCe^Û•ßS±Ÿãg‘q~zÖ —Îc6á¹WÔ¬Ëq,0ë V€,¶âÛPN¡M#×\;­­Uø3»G¾­¯;ŸïIó‘NW;™‰æY`ï"z‚Pàºt*qwU‡¦ºZnÑ/™Í³M&üê‰@âÜÀÊÉY§3xøˆó_™":.KM'R„ºµmR´¿´.u÷6aJ<*´³˜8\UÀÎsž2Vã)}1ä*2Ü-µÁß0¦à,…mÓJùß}Ä·Iè;]ú¢ÞÔ,|?ìVßCŽ’wo#rmþ¡®Ô&rQ°ËÞáp$žž³qUdô.²Ê[•(›^ÀME\ÑŽ•I[¨´–öú …¯YjRÄAG“æ…ÊZŽæð<@IéWKRB™‹}ĸÊW÷¶ÞO²“Ô\öÅmm„bD®X'ÚPè>Ö4 ;Ï)Ƽ¢² Yý) iRØ÷†<Å©VC€l½µ¿…(ˆ/ý•œ•w׳‘ÂI¿8ã×U´×'ƒY±}uò£_©o‘Ÿ¤zìCOüC øÿÑÿ&ýj“PɯT~W®AX͸2 ·…ZDN¶µ@“!{kPH¢Ukz(LŽFŸb„É×A§¯Ó@ycBd÷䤒{odxXßìО1ƒw9."C~K |oPHº=fµ9Yü¨Ó©‡%ö‘)qÔïŒn¶Ð£dŽ—½eªèˤš’_Žb±Ùí³——õtG¼ÃôEµ¬¬×ÇYª–cËv–†Îäü7ãxÎ/'€˜¬¦Q¤ù™GÛ°i¡gç®'¸gÉ–ÕËXF¦–n^æXaâøÞuˆÎ©9C™–w9è¿…Åmð9-ä¶7¤ãdÕÕõ6ou{¡ÚžcÂ{}Æ8Ç {#†ü¢Ë€Ë;TªçZëÙ5I]MË6”Ó÷4MŒzÔä4¨ù./EúM1nÚºŠô#ÅÁ¹¬­“&{¯k ™$õ.)6âG´…&ú‹ƒ}h­ ­µD¼Æ2sŸ÷‹(G"îÈxî)QÑ_K× 誶‘Ìvªn›Š„+r|§MÝoÿÓÕVÚaµË.l¤ìlnC ÞÍ m¸V¤57µla³«ÐÁ–Ô¼Eç31Í{´Y Ü­R¯Q½úÖÿ½Ù(4½Ù=G ü–ç@¢N-œÁ;“‰ì%deJkèF¶ª¼¹J"–¼¼ÜG¯´SÈ8ôî95q&$:›Ô„}íëkô>£\.OØ-µô;ü^UsÖWR¾Jo ­Dmô2N¿!¡2e¦¤xГ!¥…@BJÕµ(*°Ôz‹8%#Æz[íÆaµ8ó«B¹$ÔZêªXm"FvtÊ—)´°[x°¶IûàP×Tü•‚œšÝÂ+¹2Ïì ø ø©bBóÈ–‡VçF’Ö¢çó«S-r®R’Ñʱ՟œa+ïïo99Ê0Ò˜{2ÀÆnûó›°Ó{zïóVwËk•\[^³¯‡FW5´?ÿÔ㈃ÿÌ}?é “þºÉ­ìv„Š´iðªÏ[”ƒ?0 γ¤UÐÉ.ÕëˆG—"évúܦ}ÈÅjAîÛ‘è¬WüµoˇäQ‹ž‰Qk+o[W+¸ö‡ÊÆè{Ï‚¾$ÇÚyk%æ=Fêü»Á!7RÝMü<²m^ 7Â|š[Cô?›]¥SVäÔ™gðó3r F+÷‡Ôê+ nßί¦öÛqxüZãµôµs¤Ÿ˜~#åÛÝrò)oÍÚò¾BÉÆyLs[•½ï B™(ô‹Þ÷¯'ñl·9ÕÑÂGÓþøÿ‹Øñä®Z¶ßH,mw3â•x/$$ô$ÛÓ^z¿ d²öl›=¶?çgwµ‰¤JÀÚ£¥ÓjÂìÓEÚ“WÄÊå`ËKŒOÐJA¥{諸Ðà M£æüš3íæ¥&é6XpÛMOæUm–éu'e}7pçÈÊa“•›)×ä/æ-EW6·Î+Z¶vz™IB(XÉ®¯”_Qå•tƱd¬= µ®Bе>‹(ôúJŽYzÀÓ75¦1ÊŠ”,„*úX(›}ºWR[Пî%…¶I 'K*Þ[­KQ‹·%Z=kÙIš¬^c©m[ì*d7rd!QдXUhe]LëX6¾*%²¡mªÈðÔ ~JÑlÏT\y4Ï' BœóC ¥V"Ú‡i["rt4t ¼†éŠ?{p›#__¢·m¢5Ë«*ކ›UÓ¦ÕÞÆ¢Œ–vWn¶8G±.%QPéõ‡®åþÂëíÝ‹—ÂÇéhðÎÛ³_å!»…‰‡Èxþ_Â[^AèΈafÈSÁ¶—-àU`}UÜêiÕ¤õ>,÷WŇ•‘‘zk­EÈËK2¡:© J`(Kiiÿº}«øƒq¥y®ãƒm›:8ï¹A#+cÇ[‘P¶Ø]·¥${%Vññ­%mµƒkvÔW8ÿ'9S2w]ÈËuˆéËT”ù*X:mB½³éµ¼i+¯‰­mXÍÌ’s«ÞûêZ–•jMõ ?-ë´™%$twoyCœç„ã»o Þ—âÌdÝ‹‡”Ú&Â’·té÷m”mè^´y×qÑâfOÙ9÷ ™¼?•àòÒ`¦4œ<¸²S BÅJ†âT “úmšÖ^}¶OÐÌÃ9;ëç—ÄZÌðgÆ"[dÞa4…O,¾Ò\CH'FBR«Y=<+ÛäÍ¿äü-+ à“†?šÈ‡š¼§Ö­8ÓÓ õXPt­$êlu=o^»ÖhÜÉØíöŒ^òFJ9оŽ8›ŸP6S^~šÔí[©m˺ã±}Ýí%. ®ÑÓíÖ5Ô³6vC—J@Z„V€|H)A-ˆ<[ ¬°›¨úêè£#i(‰%D}&V›ÿROæ ºúÅ_CPÉÈGRÛ i…¡-×Qþ¥nø$˼óYFòÓ’ Ô€Ec²‚H7 þ÷t -Z«é^¨á}Õ¢B:ÞÖ¸'×­e§B–“av)×\ï¯f›onÔsn:]7Ôÿm#Þ²ãúËå0å~ÃùúZ®©È4ÿÄ/úïýòoÖ©5 µz£òÁ¥…PÛ1¸4^ͽuYæ·Ó§ G©è|£pæÓtì' ¸­~?óÏ3êcdž-¸× JBÜÞ<» ¥ºëL•ll•«n¤‘$Ë é¸ÛìÔ[ÙR„^óÜfX6Ø”ÎFFeMGaAJNïÑz:õ­.-òîëZÄžD”²Yž‹ÅÅCù žý“P%0·ßˆ+_U[Ð45éñðkU/©ÉÍÜ-g ¡ !„¸£½D‹‚úuéYvA¯¹½DÃ(I²4?/_MHv6àgm®vƒéWJºj£ë³ŸŸ}6Œ›©CÇP+ ­&Z(còŽÁ‡›YlHÃÆ˜³©âMüäú\·ÍzèöÚn¥¾S"Ð×ÈNñEíåqDí å",ŸR^JæV¿}º|\‰v߉_†^Þ寳}2Ñý¤wU|XýflÓ--÷G·+Z‚ŽMŠRÖ£`–ÕÉ&¶8Ÿñ©þÒügâ$ßlä¥ÿ*ÿî³èu>*øŸ÷œGK\»£{j…«ã84n§WH?rÙ·éÅz._v¦-)í? øïÃÿËîW:2rg?GåÙz—äü¶ù™ó·›sÎSÜ<Êó¼¯&¬ŒÝ¾\t†Ùa±Ñ¶›M’‘öÏRIÖ¼Þ~Eó[uܳí«´q»f+]µññmú[ñÿâ }a:F­Ìw¿™Á~F?5˜‘à-ÈL•’Û`´.+é\NE—ôV¿‰—;åÕ»‡!úrßýæQç÷cždaœt®]-mÜÕå© ö…&ÆÕ›Þoc“f™sâ½ëÈàxw>ãná1yoÊ^=7C±›´ãèÚ·¼ËnQØIõ«y®507i„s–+’©.!/ýù’v- ;J´7¿ª£|˜í5´jÏQ¦vKr°+[Vsr­¬€REë{.VF®Ôê£è®/.É=µÕ³-P‰h¤\õ=Ek[‹eYe· Tk•—•XJö>ºäò^ÝžƒÔŸfÕ¥jGSj¬ô+VÚ=JÍÀ¬L™$[Vu«"éŠï6«A2~º«Ï ó¬úB•\I5ä,L‹—6ìeiJûéV§aJ·XzkVÝLˆÕï8Z˜³°©² @Öõz|Ks!^ZJ® ›õ±ÖŒ²ä4¼cq×ì²J[ô\¥U¬ôeŸB¤€Ya¦Æ (__MCÔ”d%4ëì㔕%aD¸¡âzüµX,™=6$WfZA‘Î%e_rHIAüÚ¥L qy>²}˜Î\ƒp…~–Ã_–Õk¢*Ë’Œš’ÙûÓ¨²<@>Õb®†N¥Ód<Êßh¸˜«X ‹„¥) Z¹ü‡Å ÁŠu„4\bןž´“j¤w&š~¬Èºµû% ³o…$þu[ö‘>«5ô|’_a íA¸H:t:“jÛØÙ¨˜¬‰—l ›(„›h­Jêƒz¯ÅTò»cÇÜ…¸”` :ßÒ)DvŠöúIH:WÜûBÿµÅò#Àó¿âÛådTÇc%¶eBX}Å8–”mmÇi¸>:ë]cM7ñiÛ´M‚ßr¸ëic%„q‰Ã«!¦nÛsŸº( Ú¢:¤þ–¹}ËŽíMÈØÁ’óË'-îG9ÉAW$j’ma蹯92o»nЙÄ`0spÜ®DŒûX‰Ø–â¯tî^AN8´¸”[ôMý¹ÐUªMŵåªZÐ…­tüiÍ?©+öHYBODßZĬ­Ð†3w=.SÌ(t¹}@ðÖ²W¡jô#›È:ǘ”€ásé©z’~z½±¦‹º&g"Z—$¸PµõE´Ó¡¥k«j÷+Ú$¨ž¤ÕËô#oZJa0²³ù&1pvûÌ’B7aé5¯ÈÍ\Uv±K8-°áJÄË~,—Šæ£{Ksví „€…É7õWcµãªªºQ'#•›vˆ”}a¦“sô…ˆ:/­u[MXD Ä©CÖ~Ù¬v2#Í6X‘¦â>ÍQAË‘mÏ ýê"Ñaé$Üý€+¬fÇ]¤½td–•\ºêAõ$ ý²Gج)™¶Œ}µzüʯRì½q¹ƒ%ac|uíL†”7Ú•p|5Ö·ø¹¡ÁÎåãGÜ¿ =‰ªþË…“НpP'p-OR ›øÚ¹Ýß·"kÄèvÜÏ-#Ðk E…sºu:Ý5×B<*d²¥ 6—høŽG—óL\hXg3±±î&nRfÅQ™ ¸/ëElnNwÇû{Ü<—1äÜ=¶¸šàÊ‹ŽÃñ5Y+yë„8«x\Ö†~M«•U-6²F²ÊvÍþÏ£q~ok º2&Ì(:•·½)ñ&œ¬×X÷V²úG‹ã».ç/âëž–ñ*}è|“j¶"÷PQÓQV¥ë…)¬6Qªø#ðAÌyoâÈHÊæŸ’öy¼¸ÊnWû$µŠ˜âÇŠB‡É[X½˜K¡j¶ÉÿÖãOˆ’?Œ}?é “þºÉ­Š0iÚÉf¹¬KPz…Y f ^µš¶€Ç±•u+£ÂÍ Å’’‹DTínõØÍÈ[LXñC1pëoF•çsdÞÍ¡'>нd~ekäzøV9•ˆ-[@>ºÅõ\–}HrÎ^ÅZ ëðù3nôšù±î«3”í¸F¤ ×O›ÆYjì|Y6è4B¬·õ×x±ûƒ…b­‹å®ö‰ŒÝãYáÉ[×­Z1ÛxŽK‡ÌC*<öžBT¶âBÐHÔ“zùžn&LVi§òŸ¨;oáóð×%2VZÖ­¥düS]I´¾Ê¬Pò|6¨Ì­}­e––èÓü&w‘Pd‘5>Ê5[È@ý2€üÚ•VÊ[-+Õ¥øH ß+ÁàñÒòg²àŠÙWÒÒãŠW@”›ê~aã[8™2Ù$™Éî]ÿ‡ÀÃl™2WE¢M;7èHâ 9פÈ~B—÷Ù©DijÔ³^æ±T— üÍžï.K]õ³oçr,Ô—^-”ÚA#SÐ~˜ÖDkLÌòÒûË_šij${;€IÐ_JÍ^„AOÇGSkt› ÏÝ+åªS¨±j›w½Þé·”Â>{¯ÿ⯷ü+Ûÿþ¾–þö§•Î4D.8'^žªègíÉõ)\‚"*r‘¯¤Ö{n,UK/æ¶4y¸ê®G7½«©–Œfëa¦É==5Äæaò16ÌÕ{™ØÜT³ôÐ×’¥|Û<¢èm=H&ÀŸŸ%VøÛ[Ÿ‰’¶2½s2SSf®L‡ZÂÑt8Jü(‰ ¸«È?^•ˆÓ 󣑔ÛD”d­»Šò6=*&¸Ü…»5¦Rl6(•x´Ö»Z™Jˆ” óHp Ø l”D£¡¶Ý&á*O³ömV@gÉ‹Ìa”µ/Ím/²£¦©$XÒ–KèUœTÁ $-CØ!ª:jJdŒwƒ«Ým®mö•ò߯¡¨,‰Ã’fÃÀowËRQM€6ù«¦²dOC21­äŸS) }Ô5wñÓJZI£E²6Z6=ß=ç.•/ÖÕRu-fYø³þyp%ß-2]  ­MhrV¦Í·#¬Denù€6RBµñýZÐkS2pEfjV*cpºÒqâEN?®…í¡¯¡ÇC,©Ä!µ”‚zý-~É®‚5‡$ì!*X¶Ò”ÛAk‹Õ’Ô½1ÞýŸA;\âáÍ…{'  Ÿþîƒ_kìÿø”ÿe~#Áw5Ȳ~–Aóè3ãÙÄq”ENy ŒRä½y¥HÝ¿nº ’=uׯCEAÀüÓµ¼›"2Ø®OÍ^å9ü¤bÆ265ÿ"eºRBG´¥XõIÒ£.?2­jÒg1Ÿ‡¼³ÑòMàòç5”Áok;ŽŽÊ“¶S™ ´²l²Ú®›ôQé^zý©ª¶ªä^&–-bšÇ:Ê`ºãîº}ß2µ¸€<²[òÀØm®·û¯P®KÇj½L²ˆ'Pv‰ Pð ÞªÈ:ƒá-PÓÜ•ªB˜ºc4^ð²Úˆe2™EŸÅi#P‚³ÐìvzVùƒ3iÛ¹Ü%Øó9)˜&~Y¦ÚkP…9xÅÇV„¢”’7 Mu¯Ç~$W*ƒ[f»@Çlûižä<ÉhÄe2m¢Ne¦SiW¹í·ÑÇNûø +_> xq;~Pݹœ÷Û5ÈÉó— ¸¨ÝyÇVoqd²5þ®¼rÌÞ-NŸo¬ä7fJÈ< Ké ²o¥yÔô;ǰ1r#°Jž)Ò¥Ýà-óRD(¹ W²¢ÚO¬m¤«!²Ñ–òn•”©-û'繫 6R–Æ"“Õ1žö~DW¯Ö1ß¡ qR$*tu[O,î×]4üúܲÐÔ¯Ró2Pòö]VÔü½+3•…: ÅJ!²'Kü••­ ø¹I q—·ü¶ÆÚ®–lU“F_~$­Þûö`Ü~\ñÝ õ·Öqë:¯´¾T`»öÈ~ k¤rÍ?ñ þ€»áÿGü›õªMC-^¨ü±ƒã¥PÛ=¶””],j FjHÒ„™t £WÒõ Hž( Û._;‚ò¼o(ƒ‹F[ê—ÎCq;Ð@¸×ä½cµëWíî¤íÎÝîÙw½YèÍc¹c‹qˆø®%e- ÉO‰=MMÖíLq. !™²°¸ö±¾øïv¡ï®Ø&ä((ôÛ¶¢´ª.¡hÎj~a-2ZNÆÛHâOJPÂRÆiqn$„\¥*=}rf]*UÔ–¹·…LD• u.f¥Ûv»z Þ=×bÎŒûkS~Z÷$í6N§QéUñã®Km²êaä?`ºâÂÔãòQp’–ÂÕ©%ÞOÊu®æ$’Ó¡À»ÔÊS…Å›ëehŸš²•}ªNÓut5Cè*DL”ob ‰úVñµ`µàÍZI_uæ“Æ ¾û'Ú·Ép+]³b´ÖHèëûÛÖ겂©IŸU©•‹´“ªKØT•d¦:Cq¦´·FæTv>=(V‡íV\VÛcls_YÍÆ÷Î$´­^lÞ50!;u Œí‘¼|ªR+gŸE“ž.ß“fhðe *)è#Þšhƒät¹PkËò+l•„ឃ%[qè1ÎM‹‘ÉË™0‰ÕݦÜ‹TñèñÓÚÔ˜„3‹Lµ)1™[ªBJ””lf"`Ûí±ÜÌ7‰ä8ÌÕOò¨+KGP+òœMŠUëÖô—¯g ¬g¹¼ýUîÐ2f9ë)‰¿˜óÅ[‹‡×­h`ÂÓ³³”ÊJåy^Qìg#ÈÇšôlËig>Nâ ›P£à-YéìV ¨;Ûáó—ΙÚÇ»mÍqÍñì6v,¬_ä.4”4ò׸»æ8­.Ÿ Ù­VZÁUd™Oø-à“qŸ_«ÊrØŽîe¹™†ÛÚî2dvÔŽå*ÕM8ô›"uƒÿ×㈯úÁwÓþ¹?묚ÉVI§‡CY¤Ò²¤G¦¥VDžì*:u«:0LD‹´k.7´È‘8± ½ù ”hÅFúšÖÜ@’ºU,Ë!©úUНRÀµMÉ0…¶BE_¢è­œ"EÑd8¨UÈ5êòû[G:šÜ‹Ýe8DUo²+Ì,›wz΂CöœCQV¥$)( qHPÑDÙ e@Ôcªµ\™(ö¹2‰˜t%Iq>Ê~ŽÕaèƒY6ͺò’ë]íOL¤ ´ô–]ħh>[Zßáv Ü¥4z Ã]u<\Ùù\œÇçM}ù³¹3%¸w©Ç>ÚÔN¤©Fõ³³Û›Ê÷zÚñ‹7Ù8}q˜+ISï¸ÚE÷OÍ­wóü~6G[Ý8ôkÝp5*­ž>Q¶÷ÇjkÉfChZ¬­÷ê=UÑî_ qø\|M¿2É?Âiÿ™<¶´U$ÑìdXÈBÒ•}›ž‡ÀŠÏß> ãpxþulõE8ýÅä¶Ø&cÇö^Ò¤ø¡µ¾—¤×Îê Ü°“û¼‰fÚ®ÉM¼=°t•£”T!°T7,{J?Kæ¦:ËH†ô&\d«ÂÖÓìiùÕúƒáÎÝåöÜ)ÿuk‘“óŒ`¶Nãùµ“7 ¶È­¤j¶ìMÉÖæ¹9øûk¡–¶¥ µ¨'T£Wðµp«‚¹2?Ez³ct"RÕ6JXŽËÙ6¯ Ýr_¹rüŒUx›¸ª±Ö_S -¥²ÜTk³é‘âMjs¸´Ãjñéá×å-Žò·1U´[Ú“ÔNoË¢©òK0"Õæ98ö³¡ŽÒ £dÏIñ¤&At’dý€U 0 ?8¹FœtÈÛfî:¼J‹e¤¯qYe[Oõ5‰-K£S)×D¬›©Õ,z VÒF/È—÷ÈZ†‚Çú 1ç¥J¯ÌÞc²€}(ŸURÿXʺœckVnArI ºBÑ·ÐN¿Ð¬öIÔÆ–¦ÂJàÍJÐùܨ®…7Gˆ­}dv,øÇŸ‚VŸ1 ”H7²Höo\üêYµÂ6Ô.I‹™.‚‰ ä}É·ôkFõ3&EN’ì”Ì1–=Ú#(ÞáÐ’/ùÕ8먳Ю»1Äè·– ÜŸI$šÜª6û ò²ìð5î{’9:wì ÒãÆþšÍ‡µ¤õµÁ‹]´GÑŽÁó,_)íá.áàÇÃåQºÛ“ ”4¢§°XõúÿfÍ[ñëUà‘ñžÿž.eçò›hkÜ8Ü—?"ÃH^.>BkLä'·}â:P·uJð¶Ð”Ô¨Wq= $âñÞ5ı9HØÊsÍÂ"d³®&BšV×ÜQ¹$ ª7$𣋳Ãû{ˆF*9zNEØ*fAm¥8û²_¹vKË=âMLiÎyŽk€qŠÒåvÊ[Zu2×,_ ÊâÎÊAÏãWËdð«‹…¾ç½ê+Ïÿb¡åJA5¯Û°Ûhº†ÐËedoîîwï=À9þã-ËÃȊüòÚ—$Mp(8Ók±Ú„z+w•ÊÉŽê©J)Lzƒñ Ë3œƒ“Fk1“)MÇK¬°êTÚÒÿ­$ø‹Šå÷<ÒÒ“=+Ôü?’#ŽÍ}Ç£‰¦6’ßC°(+CéÒ¼÷3ÍX:õÇh騒aK)p¹PJ£ØtIÒÇÖ ÁõרÞ;mgn·­µ©“¯û¬G\K…@ŸcvžÕΖùê ³-òr)m¶]WÓSDéA©H©©ÅË,}–#ÑWÚŠÉ>BU $:c;ãúEU«àQýSp?²&äí$øŠÞÌ¡uz—©2â’pHp_¨=/Z©hgv!n ó*ÕÆ–¡sú]?2²-D0’“!.¶êR¦›GÑר=jôem©±þ£©®üöqV#qݨñÉÇüêΟ´¾S×°þF~Ÿk¢rM?ñ þ€»ãÿGü›õªMC-^¨ü±  Æl³.¢þ›EúÐK¢«%Ñu¡'¡½µ©ƒµJ_œÛA‘f’,¤øÍkä¹–”+O9æ\“¨>5¬Ù²ªFËOšÖ䑽âÞý-T¶¨ÉMÌ,) ð&׃­c«22Q±ì:Ú¶ÐÄÌ–€>SFVMÓÛlœG>È¢pŽŸ&\E؇ۖ*výŠèâk&6½G>ÕÙ•[ÂM=ž%˜Ÿ‹B‰1å¹(û„“ ¯7jÃkÐzz¹IúH°²ÆÝE…ê ½p.jç“’Sxög”UF%á.ú]7©’¶R_ù+áy8[O»'"Ö9L«%½FͶ Ö€?¡Zxñdó]­i¯ ¢Mâe°n_’›Ä™v6å#Ý[w©)HÚ¶UUgÐ^ Ì¿uùF[ Å8¶a-¯ÃRàÆÆJ6*ëT|mz®hÉHEv¶-î—+ä\+ Ååeƒ8Ž=!KÆãšT•,kpׯ«ŽÎT…VŽÝþOŽEˆÁw'a›•ïYnx©ÌËlªêiP±òåtôY»VjY»3äÿÐãoˆ¤ñß;½Áäß®²k-i$ɦÊ+-jÑhI'¥lãÆÙŽÖPUl, §˜;ŠÐ. JÉä“\š“Ä%ЊÓÏì›3 ˜]Åj«3Ü-jº`ÅDÖ«mK!½†ëÖ%£!ž‘qY,¤„&‘uè?™VÁOinƒç×µ¥o¥…znV_/ÊŽv:ÍÈr««mºu>¾µäíi:IŒäUþNqùˆ‹å"Q’=ãhOš–ÛzÝ[T¢*ÊÒYÕÔ©êmž„üµž•wj«ÄÅw K6|´¶‹kk¨ü•õžÍÅ\|JW†§6MÎ}¾Ì&ÌßÖaôÏv*Öµ@™-©it~„´ðU«Év¶ÅÞ¦ª[³úN§/Ú㯆‚§ßQÖõô~~~Eô9íHÆR‹l@]®Z”Ò­ý)$þer¾(öxX}WFn>¶·ÈÇ3I!¿Ñ%@[ç“ã,›»jB%ùÈCçÙNã¡7ð+âõêvÙã¥^ꢞ¥w$øXùõ–t(aÖËì6îŠq[|äê+c‡]ù©_M‘#вÒH ênI5ûÇTãÒž #Èå¼Ý±«Í€Ê;@êk/¥[n|m΄¼é®)˜É(e'ïŸEx\¶ÍÜ2í÷çó^F¥WVgÏuJGˆæKEN(ÛKé[½ß‰»#ii&w„4-Ex^åÆu±ÓãÚO6Z¸¾Y¾’ÒE¾ZÅjÀh@¨ƒj¤gì"±šá@~m'M÷Á´ù"ɯ)jž‘2Í‹žaˆËOŠ¿¦ãZª©tô5zeÝÙVOÑu~YñÕFõ°‘†E™žÚ¤ ¿C[Ø‘Rê[pÛ–d~ùi‡¥ºZ·Ï[4Ï[tf'ˆ”=ÁäÝ2íáÉ%² ˆƒ1¥¤’A%Wù½uw–Ý ‡B¶®âÃkLç¹\äeåáÃãñÒÚ†D‡R‹š€€’“§Sz·™ãâB¡RÆågwBJ¦äUµÌ&v,Æ"¬Ù)‰±æ þ”ºVÇ}Ì»®Ômi!™±r0msqÏ¡ÖT’AOB“×@l}U·)êü vŸTæ ã܃‹e3óeµùH‰-ä¨–ÊØqM6°´‚P¢W£­q2spävMÃGB¼{¤œh|Êå2S;+*BgKȲݛŠôÅ:Ÿ¸'Г{WšË—uÙµl;i0Ujªt7k¦Hsù sØ5mÇ'îRBVGɹD׸¨¹Üíöo&t8— vºáÓ¥€¾¢¹ÒÍâÉ’Ž´Ã„ât’€}[^¬†1¸LmÖÙm>ÝZ ä´z¶‚LgI·ôŠ&­I’–èh>?î7MÈ¡[¹Y«Zê>ȪNå¶×õÑ}ÀMë8ñ&ÉŒ :òe³ç•¡ J–t#Ù±¬·J4"­É!)i 8¦Îí‚ÆúøÚ°ÑêZÚo‡ùýöLnR¹ïJüR=ÅnRªWÊaÈý—ò¨jè£Q|A ö½Ã­ø%Þ¹5[h™|jl¾Sò­"YiÅ6–ÀÛéªWTldqhÆÖÙ¥_i‹ÌFm͹±Eísöª6–®I~>-Þ›Y>`{øÿ¹Šmdyˆ÷ßÀÿ[ÓÑzmaä3Dð«+AÒ¡Õ“L’d2×ïGOA©‚7©äRE‹gJ¥«‘4Z°|ÿ?ƒÇäñ˜¼ƒðáäÓ²c ªÁb¥U¢kdÊÛy”´\ÅwG¨ù*» o"‘$ä­öB€WQzŒVÈtœ»l²ã>QPX°>’¡P‡eÔhŒƒ6;›$ŸENÖ[zht¼Ón0–K$fÕ î<Tù;v”oo–žYm:Ú>ÙqîkŲ9ng”‘Ä1AæÆ 0Û!ïzss‰{v§b(’<}U¡žÏôgC‹Åyjïàl8ÿ ó–ùÉqq„å1ŠÏ¸°…–ÝÜ Ó¼Ü¤ χ¸W¦ÈgívÉVªÎ•ˆÒx°s¶œƒ·îdûZóqSõ²Yßi¨d4ô—JIUÜ-¡Wƒê­+ro{;«WÅÃǶtÔÖáøUN:™žÙåÕ=*Py|^QrP ›iÁô•{›+䮼٭·8œ®Ç£¶3ç¾QÉæH%‡#ÈŒáC¬:’… ƒb“¨®¯™½J8¾_—£êGºÔ„[{+NàÓÀôéHdÊ)§BVZQ¸ê›ÔY8Д ÅÃα¸›ú?úê•pdkBPKŠ‚ðM½5—z1:³6åÆyÔ7ç…ªÅg êjÕ½[†VÔiJ6<ž7•Çe´JÇ8 ¶å°w!ÖÒ±¼zˆö5ÐÁcÑèÎ~l›”=**60ër¡ûãp$ºÓ±”«Ö¤qëæòO™o”ô˜£Ë¯ÈWæd~C®±GiÅ’ÛÜ$Ð$ðæFÖÚ¼»•¤ßÇ­c«–eµRHiÕ<ûm–Óe¨~z½´D-XæSÊŒúKhHÚ«‹‹ô5Z-ëRÙk´žÃI{eÜs"”8RÉ6 ÏMkçKt2pé¾ÐÆyD¥—Ö†Nƒå­¼>ÕSc=Ulàê_€©/+â×´ì•ýìœñ)þàäMeÚ–¦†K3ÿÑäˆûâmÿ8›õÖMoᬤEôF C[º×F˜S5mtˆÂ·±qÑ…ä÷ajÏl<ÁfYتǓH¾;K3¿ óÜ»jt«ÐÁ'JÒ’½Uy©Ö¡²DÍü*FAí[s o{ µr:ôú) ¯ÚHð­ŸyvÒÌ¢¢CW[OÒm$#×TÎé¦Òi3¨”Ǥû´h‹qkf"T $¥%j*PHð›Ö½jÙ³{AŒT¤›’zW¥ì¼GlŠÑ'?“} +m,¥¶›oS_QuXp7gÕ|Ç"©ÞЄ GxKB|µ\’6›è.2¼7Ã\ºW½¬–Ò®bNÇ*ÝãÅëÄd|ÅŸp“íjegó«ë<‡…]ÙÙ|çªÛT#(xÇ¥ÌnØp-Ô¾Õ¶¥~RÒ O]Ex‹ù¸mÄ¥kdÚ±·Å«M¶†œ’ÆefÁó[|F|†ŸiAm¸‚B›ZT:…$‚+C¿skŸµÕ§£Kç3q«HèêqD-CrS`Sm:_3¡Ô°åh*Ú¤›’«ÛÁZZ֬ϡAlr’RCa-®êR>ŠÛÓÑ{WgáÜ>w?Ä~SŒlœK¾>šýk‹:J(ë©‹Œ¶â ä¬%£­«G¹ò¸ü|Nü‹E?“æâŠYãðÞAŒÌ¤CiZý×Jù}þbq¼·ƒ‡V½,íñ{]ßµ‘‘°Æ23ªÚðÿD­Z úk•Ù>*íü4ò^­Ý™¹¶öSÐŽÈ1=ç½¶ÊËš…§TÛÕj×çw¯ó|¾Ë™b¼o%jM„˜0GýÙíU龡Øûbíü(ü»ŒÙ¼Ëüƒ'[®??Ž›2ÖÄ{¨ Qà{× «ht¸™cA¹ù+Æß V;+Ò$àÒõ‡&-‘Ë:šÑñ(ÏØ]b5€üÄÁ’\Zˆ%A@×™²=e±.”B†¢u)¸?5R ‰èk¤>¯6Bmô–»œÖÄ|HÆäe§ÌQº•kFDëþT¥+7iÜ’YÝÿ„Oôk.¬2­ 3Hb.Õî$†÷}Bõk·fV«AXh•2CiˆÊ}Û%&ÝÿQ£¤è$ï>Ñü:µ;Œ½É{‰=ÁóO¼hã—ÉB¤’›[Ö<*qðá͈yãÙZ²_»Ý‘ãQx”^iÛ„nÄ­eÆ -²…©­ä–Éõ=<ž:‰E±es©Ã’¥¸Äy!BÄ(î¿[g§ÍZJ²ÌÖÐÚü|%ÌV%J6#G]z>¹•fþ?ª‡.Û‘Rè–“§él-ZûeU ñ쟳’)£sXöC’Ö³‚±jš[¡D©ƒ´ŸOÿ]m*é'sáîG—{QõfªæL]E`ju[ÇK~uoq-àwyu•%o¤1ý ØkjP:ÝËû_5z.Ý…ïÜÏñ.« ¢z±„Ù8·ÑäÊ(Ví¿OX5×{OÙŽˆa-nbrïÃ**'Ý"âþÅÒºkUVk£)å¦m7Ü,î'=—Ðç$,ºÓˆÉºãŒûªHX(umXYFÄ__fÞ5½‡›j(z˜ÞâWfw“œÈpû¤Ïw/Ìq¸ïÝñ³q¶ÒàkãKsò~ƧB!¾ësl{ï8Ćw¼âa§ˆÞºªîEÿwÎáE-ÉaµFí—ëê¨}Ç,AUDˆLx¹N Ž9Æã©¹qn¿u«ï„•uërk“|{­»ÄÞÇÌuQ?+É]Î8ô‰Ñ˜mâÐm¤Çl6 %D§Ú5UŽ ¾ø­[&º•jÌŽiÔœqF?½r*™>«ù ˜~½~T~S2IÛ)Áëªá~É›’½¡†Ý+"fŒãý3ò‹2q­LG ƒÖ¤«êz¡¥}XM÷Ÿ@¨eñ£¡WØ©*Ö§­ ¥Ãê£ê(´Œ›ù¾¡Ö¢Åñ®£eiWôÕŒ,Q¡ÖÔ‚õ=xPY@˜ÏJ‚ÐÂÕ%`°ñÜSY¬¾ü汌e'GˆöIûùQÐó‰B]¾åî5KÚ›x)½ªúO¢½¯íWà^èe÷VjwÌjvã^C¦êiiUÁ J>»úk‰Ëίe =Œð'Vå3dFá]†Æf&åð9‰Ø÷_Ü$cáJ[QÛ{i%ie7)>аôŠÃ’ö²†eÁEKJ6·ÊñíÎ3…Édr­:‚c—оÐt P"õ†‰½mu.®ä0° ä2’•åµ3²œiÍ PÊ7«OVÓVÇ]×HÒÏ‘Öúˆü¯Iä9l¶nvÕNËHrL¥÷O,©@z6ìñ%Z¤x,¶w»·¤‚2œ[Ž+u”»“noY$ÄÓ­Å%eA@@¶”2TUiŽ”8áiÅ ÝC ¿ªªÒ-,fŒ–À $íR…ƶÐÕv¢Ov²•íS)ÄûÂÿ¡5T –ëy&q~mñùGÈëU’ÓËö[tz,N¾‘q[\kµhð5ù8Õ«ë=æmÍäVS´¼ñyiô)ßl²ªårTf²:ü_k [ô†Ð\u*›TnuYdæU ,$htŠÃ‰ø›½fK³ØÐýª¶kEdŒ› e›³êZ×µWж~¥Ÿ·ñüÉÓÖEÂ#}©Ï¼$½,ÙíÕö˜Ï.ÞéXx†•Ô㨡‹”½£¤¾Óo‹¾Ôz†{õ‹#Yì´9™ÿÒãۿýñÿ¤Múë&·0ä’® >‡öÛÑ],YÍ[bµ I®¦ ©šöÆf¹A>ºË“2D,FMHÞ}­Ùå8pÑe#v·ÓÓ\ í¶m¶ T>Zׂ,Ý¿® øV˜%U³$ºÚE½£oUFä[e½É^ÿ¢ÂÖ|,“UyuÇÉn‰‹%‰Š¶Ì{ª¿ˆAþ…7£"áf’Å“ŒÌ;¢1oôºt¨ó2×¶g’Jõq2öü˜]jHcñX¹žIvIçd(nµ(fê#ªíp‘éôVÎ.BmU%,ÓäqòÖ®û\"Á/Œ¢ÆÚ‹Åœ˜ãVZŒiK}…_À‘`zj+§›¹gá[ji;wýÙJ¸˜1É9›Ã´rNq˜¸¿5ä7~H mÒ Ajê6#mÅjçïüœÕÛk¸:O±eãÅz²ÒˆÜ³Ç£¡|}µË‡%É*É2Bälp'xZmí\ UëBœ´µ—¹t7sü=É­w5(YœNs8ëYlW!÷„Hi>Ê”­Èq!!d„,IùºzŹÙW[8ùL}³´cå·VâËÀuƒòX²›œÆEkKÞ‡ÊJŽïI'SRù´·VÙÞ_ÇŽ¦©ä¸ÿn,,¤FÖ”JqØ9¤ V‚€Ÿ ú€NäƒÓ_Me¯pÉ“”ß²™ç»‡g· óe§¤€TŸ%’<»ºèö’€HoSVrÜ2Õ„áù|ÆëhÔðL¥0Ój;`ÅBþÒ±_:N ´Áº²Mc;sÊä!ÙŽA1¼ô­(CÊ›+nëRlk·Ø{Î.™oÑ9:X¾ÏÍÅ4jŸ¹ç,m[}Í/t¸5µ}ó;·µÕÏÈsr| ÎOD™¯y°,â­–³-LIësï¶é¶ËÜë:S¡©1œZUÇ'&÷)Kj#äql?X½µE`r®lLf:*äÈ”RÚRغ®­4ùëf´nÐaÜv·á¼Kµšä\M ´–%(¥×eHh¡KL$([`[d”,A:j-½\U¢ÔÇ;º{¹]õÍsß2 9 Æa"ˆ0QØ„'K\ê¢mrN¤×?“šÖfÎj¨è~Æs–¿sy±2 .|\{û2±IKЧ %Ýäý-ÆÚ|°k7Û« Ç–°å¾³O–î[¯}ã™t xÉèO²ãJZ­p4J“ÑIð7­l˜¶ÚLªÛ’!p…–øþ%Ä’\DT ôN–üÑ\K›³£û#Ø…añ©>b$tW‡Ø¬Ih]=M—ƒ1¼ÇKŽ>Ÿ¾•ë§¢µï2{~ÝÛq,JÍLšß˜Ëk²ël€÷)ÓåüÊÚãÕßC/‡LwW®Œ¢N›3²­Ö) EõêM¾ÕmcÇlW6­j禬…Âñl¬ù’ó‰ƒXRâç]¸±HO¯ÀšõÜÝO˜÷¯ÍòjåüÿåxwÖçÔ+› ty-$]I:‚¤“qÖ¶mF™ÃYd£=—›ŠqÄ_º:¤”5úÓ§[¬Áo0b¾Oœ8É8F¦91Ar 5ì¡Â•%AKñUŠE¯U–VÖls>~$#½”.¾"ÃC])ò˜l’”¦À {G×Sk6BM n;‹Þ¬™ "ê*m]}6ÇÑp±å‚¤ÎqÃ{˜îŸ@ëS¥$«ü 6–<öa¾ RV”­T¡êØÈ‚–ëN2âšu% ÙI>XÔ‡¡}à\5îOC'f2"Ò©+#úáþZ~_ÑæòÖljßì}šüìšýTv¤Žã(R’›]Bý x̹mfÜŸQãv¾>:¤ª´9÷™O`rÆŒÚ[%jYHµö‘jêñ1»bÜÏ'ߩҪ‰6d—Ë‘a¥?D2Õÿ©@¬‰I³ЄZ˜®4Au“­õ½¾zºF9­aPæ¶Ò-h¯”úìÙ5’¿Yþ©¦1Ëó#¡J¾æ¯¥üM«jê­^‚3ÞB nÁiYº¼¤þ}Zˆ­™&RÜu(Û¬BúêEíW­a8T%8W!k;J–•u¸ÐUU½šƒlü?6â;íÙ%¤€×åïI××'­Gí)ô”Ƚ—ò¨*蜣Swóý÷§üDä­’*™>«ù ˜~½~T~T²à{âôµõ¬x~©±ÈúÄaMeF´“ØãÚWÈj,F3Ô$êi&JÕ‰({Udb²ÔÍcARº“eq£¾ *¶-‹ ˜RϨÔž°=‡~J–Ô•¢Ðq\HùEŒ˜´‘‹¢Î(VCºŠ0:Þˆµ<‰¨ûQ$x T”$™Oö17·]kž¦Õ>¡Ýý—å©ÂÁÆÀ†sÜÇ”ÊÅ¥rpà’Ðq¶<ùIm 5-„ªÚôO¦¹|¬wm¸Ðïð²ÑU$åÀõ?œ? ñƒÁûnÈd.­z¿"KËÚ. AVãn‚±®3¶­™-É­<56$^mËñqàòŽvìN‹+Úö”ºÐI²€ÒýžšÁ|:Åu6©:Í´(œóâÊÀr(d;2¸­Èq{w‰ ©%I¹$õ¬ø8¶WMš\¾V'¤õ>¯ ^RA*X'ìŠô{úGb)~Ö‡¯ZË%D’þýÍ8ŸÓO ĺÀ²@)[HZÀüµ,¡*J N Ðø^¨ô,d’§ã›RG¤Q9BB+rT'ºd-môýáo·Yhöëè)mT¼®B'd&ME¶IykGô¥^ÏÚµrreó2ÚÞ“±ÜUE_ÖùÍn~mi—DN:Ëd½ÕYªbZʵ%8ËsŠÜ4¥_ѧúµƒ—h©“aÈß*.úˆo¥dãô#2.ýºaIk; #qn2@¿…ɽhóœÞ«ÖnöúÂdDïuåloöë¿‚¾É«K:Gà0ñsÚÅzwíಖê*rò¦ÿÓã߈æÏîýß<{ÉO÷ÖMt1án©–ÉxIVýAùªÍ:˜æOŠOJ¶>K«!Ñ kz™SP>ŠßF·+ÄÞ‹bÊ«mzü|D„'ÎMÉê ®+¶Ùt=¸nµ-Qxîv>ìƒ]뉛“ØÇÃã¿ÁaPLF‡¦â´mk# éR]œF)²-¡ëØ+³fÕ8¸º¤‰¦qøÑ·k ‘ UfÅpbô"Q¸ðÓô[OÉj†Ù³ZQx!ãmFñJ@ù*53UQÚn!¶ƒìTK2§Tk˜Yä}ÅÉÊu sÅÙLXÄ€R·–!@ét’¿°+3nµ8)^W6ÍýZ£hd ¥XÉMC/8€„%±cµJVþ¤šËÁ®üº³¥ÜöSm2‡FŽÙÉBi¡,RÉiûÓ¹AAŤõJI6ð­®ïK(mÉ£ðòÇEjUG‰Ê!³—ç<+ƒfa‡³Ô(3£ éGÏ\ÚiSgO?—ð[¬"·ae ÂÙè6Ö!\Ï Z_^_:˜ ¢ó±Rv²úÀµôÑ*#BzËL²¢Çî}‰Y¬¸tºôx’\W§9ï&ÄsšÅíNB"ÒBn¡¡Aù©’¥}£¹<íâË¥êR;™–ƽ0q© °ÓMËHu{ÒªÃQòÕ±Ê8¿r«ky-J^&¤‰Ça”U5!ÇYqajI°B‚Fâ==l¾LTñï Ñi\ÅÌ\V¡DˆÌH­HnJMÒ—M’° 4ìÜ›øV¶;;½KÝlPºg›d>Ö9=óDwÛYÝ£û¶,Jç_UNj¹ÐëvŽåloÙ7Ò׆Û•‚_¤úV<ôËIMIÞ5¸žm‘I&ÉK{†ÒE«©Ç^Éò߉Û÷§&§Þ¢n~JÛª<Ó=ÜA¸¬°T É?jªÔlv£ÞÍ»><‡#‘”…­µ\ÓmÁUýÿ'±Gw» ™òÎHi9ß&‰d(¹émÆžÙjk%{èP ¥[÷,£[Çl,´-m+>O‰9­ºìåæøˆÔV°l7{Åši§S*3oX{O6v¬ÚÀ“}+%9øò9´ž_™Ø|Ÿªô9‡“Ns!šÉdv‘õŒ‡$éœ;•öÉ­ŒüŸ6±N†Ž<;2®ªóSVfÛz±*¡Œ(ÊÖ6]€°WZóíÔËTIå¥J;R”ƒáíh*]Ç:ÿ•––”û@ÈXÕº¶ñÑA­g©)į`¶š”¨t kZ™+Ù5:ì9[IWŸ°?§M[ö…Þ‡fpŒGìŸnUÍ9tÍäù–?µ8Ë}ƒwVz€¿¢Ô‹øêQlRk?k¡Æ÷¹y¾u”zvJ[¤)_{A6 @Ð!)èð±Ý»½K­:|ÃåÌä%#_P­lØõ2Òú[ðã—zryW[èhrLL¨¬¤õSì—)õ®Dt |µlJ4E¬Í›ÛL÷åV3’ö¿”#~9¤¿#=Ásy¤—/Ô6[AÞ€¨©¯µ)‹¨†súÞTHmÈâV˜‹[I_Ú³ÿÕ^‘+³¡[{(nÖVR6ë¢U`¯ê«ÔJ³“sñù¾û¢÷z1WÊBïöt­[­O önB¾½ŸGÀ|]A*7õÍÅqbüúÍMÇX™;*`Çs˪ò =iUòëa^ŸdjOÌî6âÕº½zþ6pcÔ|l4Ãiy²ÝnºGEoUwëUEðù.ígf属oœKa‡“9§@$ÛM-ÒÞ½jà¤AÍü£š£6µ%1ÐB”|ÇJuPðf°^ÒKe1‰í¶Ò[S~ÓKÞÒÇMN XªÉ]óÓÙÌÊ–ìGÃQQòZ6JRHúÈ. »HÏàÚ•,-`¸ÞÈRt6'ÓùõzÖJÁÒØ±b—ŸJQöZ%Jñ7h+2ª!¡äžBî×äfCFá(X„ØÿBŒ”sgpÙÆHœ2BãªJ_-h•hnHð"µ²Úœ#€g!GÇFÆE)ml}5éí­Z“öëÊ÷wwmô>§ØoaTÆúƒ-›fÙ VÕ›õ=+•L{­¢½Õhß åá9ܶk#)gF™(oÓ¹D>ajôŽ‹%_Ió.åÊ|ŽKô#x¥ð[†Ñ7³hÝó$\V¥QªØÒKªÝJWµFúü†¬AÛŠj,ë’vD|ßÓvˆ«Q{D[DiHº)éÛµ[—F¢f\HÜ I¶ž«QÆ)–=´(Y _嬎®ݨâs…MìK–J‚AR~J®:Ák97éÙßʤاòÿmY:•¤jm›§ë+w!ú‰­ó–jnþv+½$ ‘ÀùžŸídЦOªþC?®ÙiUãeøÏË4Ü\¹/6‚+WETwóvŒÍŒÕ†•o ȳ£ »FXo)¢¥‚,EKÌ™†½«-A0HÕ#Zy¨.ßt7\B·iaVóQ‚ü ¦6Z Xkî¯kzêÓâkÛÛo‰3%¤¬) • + ³/­ƒ´eEQƒ­Äí•z3.É‘‹µÇ%$,nIß§ÉPù*L¸þËéEã’š.$­'Ì~J‡É^ƒcÃ9|YƒœBJÔUç$^¥ó·ÂYlæLÛâR’?®§åµ5/õøG/÷Œ•Ä$+«éÖ«ï³àYü#“ûÇŸ‘îýxt¨÷¿Q+á+ÿxðpåŸücíSÞýCøBÿÞOy –¼äí>6¨·'^…ëð­’‰/²Î£´Üó‰óY-*l,\ý™ïu’Ó‘äÛÄ6â¶úíY+“ÍMzŽopí6íÕ­æSz–|wxpœ2^vOn8ȃ%’–¸¢rCGŠó€¶Û)"ÈÚ5êjWÖI6s-Üi¸Rhœ÷"䜎S’3™V⋊C‹VÑsÕ)½«f˜4Hæååß/VD7[{nûcª¥ë<71»ˆH³‰HV¾Š†€äÈNóbùjÛ´!£ã½6ÕSf‚e-:Òª®6’)u© YD•–SEZ†3AKh(©@“ìøµMÛK%#ÌzÝúie7!~X¬³4Ž—‡çäU,îc_’”!Ç…’Šæ,äõ•ì.ÚIœlã/{o{Vԑ饳n3Sá¨ñäÖ<™w#=>KòŒǼå8ùQ>-R³GBëáj·«%ñq¥âš–ÄGö"bB]*6ŠÃ‘«µoA³‡áºã”˜Ýx8çÉÝ×¶½úËD?…1Û«:“àw޵â¶3µ)húê÷ý6xüúˇ™l—U~'¾|7‡Ã¾eÖ±ôÙ/ôŸÿÔä/ˆµnïï|<6÷’﬚ôœz'Ž¿"5ïif•)ÔÛà¬cåߥb|)/¼Q±»Æãí1ÚôWc #3-Öв+bimjeµ:2Á ‘?I Y°­G—:œnízhˬVÒÒ궂渞Լßã÷Š>¥™ŽAÀrÞ³\›ö¶Žž>åGâL³–aV³ éZY8n¦Ýyt·‰"œ”û¯JÔ¶6™µ\ëÀ[ë6R/æ |µ]¦Zç^'Œr,2œq§r¨Žód¤¡IQÔzúV ™z#¹é6 ¯ñÌŽs>~iÈä_–J[X\µ…üu½EóÙ¥£9ü Ϭߋ’Íùi)H‰”Ù-”³d(•|:Z÷­žF²t3wáKâui‘xnS„‹:T_¬RÈR[Oš[PARwh}xúëk¸e³KÐjö¾ãJ;Bð&Y{÷'k‘§’GL†`ª#›¥;K…eW#×\§ÊIB«:/’­È®_B‚Ìÿ#¯598ÏÚ÷(ü‚ÕlOµ—¾âÇ£Gæqu-‰A²I–v³Y^- z|G‰‘ÓU+ò³˜‹“†Ô_w[Y0$ïòÐègrm©O˜uªûÂT†|œµ~]sÕiš÷’àò™^G”Ê"L7ؘ–ËN›J~n•Oyª]_q­óçv¯B=¬t$„ù )ó!½À(›\ú ©çÕøï‘x¼? ÊnÈüãII%÷PáRP«êؾºkS\šèVØÜjR“‹Å2¼Œe‡#–¶›q—µ¶NÕ%*ð ×ä­¥ÓSVÉ/”œÉ²û6ÖbcÀÙ`)?n›6p÷ øâ,Í9ϲg/ž~zµS©JT| @µÇª·1(F§75³½ÖrÊ •cùµ3œÃ~–«nd75ÄÁ¸øT¨ØÌA]Ç)§ õhiæNǪí91aÅ-êËÜ€/çúA5Q³s'uÃ_W&†ÍçÐ+%hÎn^õ_É*“s¡ò Últð5³JÁÉÍξ^¥bL…¸w_¯KWSÈT«Lçd£nHµ›’mֹܛ+ZK×D~ÄëP ?&‘dæ‡K•ŽN½ll+EjQ¾Ô úF¿XvêfV5î}ƾ·œI°÷•êÖ݆½ž¢Ðæ6âdßDxÕK&<“)Ö H”“e´>ELkÚ-khuîœ>åñ|gÍÆ‡3;i±bX L–`åÆÅÚÉBŽ„i讵lžŒ×zjW•ÛYnäâä1ÒøŽU„ÆiW}–€>Øsx“{Ø ÇhL²é$ N^w‘Äù$±šÞèð×ÎÐT½í¸FÛ uVµ%SRM`àx>UÁù~+1î`ÈO”þÃå˜pàm6R| `ÇG¸Ïgì›Ûº Ãí¾?”¿‡ ‡+˜IS8—¢‘ŠÑô’:ýø8Õ¡+IëYr/,­m'2áÝpà¢<ò÷©EaJôçSóד®FoRÚ Ñ(©;´|æ±ùz&Íãùr’ÒöNŽH=kUÐô}‹—å_Ë~%Ç’DLˆfK_|ii?&·"©]ëó%jš“·ø4Çs;&J’ƒ*Ušÿ­£èŸDý^ã·%ljÇÇûîêò,§I'sRZ‚”¥CxövPÿV·¬Î;4>É®BØm¤Ç_WSÑJGQöÁ¬± ÖuŒ€ %q,ûÔ”0¥„ {{I°&à[Z”JêlÅ5" H)(]‚¿Kas­¿¥=k5\R6¦O¼¶ÒB‚Ø ßÊF·¹ùk1F>ÉñÏ{eÇáH+W³rv§Â¡•9ß•E•[‘V”©‹ÚÊHÜ“é½úÞõ¯w©-.¤ &î:kn%”ßÚ­.NznÍÎ||Ê^†ÊäüÁɘö£%vJO…–{níÞ«\QGÔ÷ 0ñH$R~ÿ ž¡JÕ#æTòrn»K¢<†£³êÍ"XCÈHÑIJ~O +.Ä•!*óuÔ"ÿ`UŠÈ‹²Aƒ8}Ò⸥zlÕ©õˆ»ÐÒq_HBUkéjÞµMDIJ+Yp¡ Z­hE˜Õæ1Ü@°qØñ¸¬‰•ƒ§EX¤Z×¥Qk3m|<¼ßÎÇ¡J$Žáq› ÿíXÕeXf+ZjþCõC[‰ª;ò/ØÞóOäCûÙ"©“ê¿ÝíªyX—øëøÑù÷~º|ÕÉÜ}bØ l¦}i0dÂý7¶¾5dÍ,˜PÉmõ¸«I§|I N†²#G% éMò O¥Áùµ³ù'›Ûÿp—¬Ø‰hÜ|ÕΓè”ÁÐ~Ürm¥U³¡‹ŽÉ&Øè+ |aãlzªŽÆÝ8éxRǨUwKŒ™—EÈñëS¸{¼47ñ¦â¾AˆÕ@u©Ü=ÜôFêHêj7v0TS¦—5;Š>8Ò\JŠüe¦áÄ‘óõ|†³`ÈécÝ;zäñ­Fµ a`/,¦Û.mŒÒ”ãkÒË'oÿÅ^ YÊ>ÊÇlMÖÝS$ó‘Z2Ú@BÙl¬z…ëc%Q«ŽòV•ÇE¶à¥é¬.¦mdž o鯣`Ü"¨ ùª6¸DÂ'úÚÏÈj2wˆ*ãÂçÑXÞ6Nä‡!jÚbjV6Ñ üOpˆáݹç—å)^ «}*-ìèdTn»‡J‡c5p£¨þ š ø”íÁô Çë<êÙá¿Î¯Ãø1ñ–-½«3ÿgýúŸÿÕãÿ/Ýòÿ¤Múë&½'þn¿"üF³êÍ7[U°=VUd"L«*²EZ2 Ö®²au‘e" ÷Õ¼Ò°f—T‚,¢(ìŸRT®ƒÖ²/·ÑdÕ/JØÉ\÷«Ñ“ð³Ë.Ç×Z¸•fþázõeœ²\H»–'Äägíèî`îSÔp% ›—T¡ë5ÇÍÇØÎµ9JÆi~5µÖ«¡“ÌL\MŒ,Ÿ²EFÂË*FB2HX@Ü<|jkVº3&úµ¢gÁéîÍ‹êz}º›n}HDz™˜…+η ¥8‘f®4ÜtJÐÅÊå֘ߤ®œ«›ZNímí[ÓÔÖUX<¥²»¹b*É(,³¡Ò­w’q¹2(D¶Òëw¶óÔUm…=Mî=෴嬱…)Xò‚U¨&Õ®ñ/AêkËÇjîP$¬¶0\´:Ø 'Ôc|ì>”0‘Ÿ„ÂãO©N$}í´,€UКÕÖ(4y<¾;OÒ@«*⊔áR*{ôË:ŸÍ«ªžnÖÜ䆑œáXTŸ%¿¹JG‡¢§`ÞU',?µ`•Y¿¤|MÍÍlסKÚQ GdLÖf'ä¤(„îPš± ’ù! C…4ª4[{0÷‡—ô–Uò›Ô¤Pô(žª5 Í 4$ÅÇÀI@MïóToƒ")W½Q¹ ýŠT€üŽÃ|ù–ô›W/%NY~Ç:¶Ð¥§P@ÜG…bƒ*)Y&ÖþVk£ToQ>Ž€Ö~Š Mþz›[ ;HöAôоßdIb’T¬LÀTwwêæ°ãúÅÛЧDÈÈÆ<ÓÑ\-© ÓÒ+}-M]çGÆÍb{·ƒj@·›ÂHD9Ë!#"4iÕ*ÖtZÈQúWÚ­lhÖíz؂⽥æRÖîEùC ‹iòÛù Žy $m ÜwjF¶¸§Ë-[ÃÜ1Û˜b23’ydä¥ÔˆáEÚU¶¥I ÜTB®AÄV7} ­IÎÝÍîÆo¸™Q/"¿ Ûl°ÊFÔ¥¦R€é ª:»êÊ¿gA ä+ µ¨§qV‡¥÷ª¹ª{lÝÇodBC®¶õ’Æä„§]=5ZSBÒZcÊy¨û÷m[h ¿ˆ#]kUÓÚ3âÉj5eàmN)É£ÏÇ6Ä¥]§S´ƒà ,¡ök\[ôßÌ\Œ*Þ, ·%P³ž9% Ôÿ"3~NŽé®Ï^Ç·?ÌTù‡~•̼¢'™e’Zö×µ^]Òo¨Ð[·8ˆçÜ„•8óÈK…ØÊVöoáqÔV»!‘µôkÐ^„¤(†Þ)(UÆ Q¹X®ü ~'7*;­¡ô-öö_iË›‹XOM*Ë".±ÙuL»3ÈQ†uRc:—ᛡ¤ëŽ:@!$xbk:±VmØY²ÌyyÓe$<[oè (kMͪäA£»œ´ƒlÛc€oà ¡cöÅ`È-ÐÕCÕÖ±”ZN=Sç%oñâ1Àz>Š~Íkr.±×Ow»#Õ莗—•+B’-áq\f¤é¦n1ÇÍy…,­+ØÖ>„Š®è-¶Fò°q"¸ ”H¿…J±F(0ãⲊn঻õVZZZ+‘ENe†â‹‰Eô×È´9ÔzŽòJR^ Ø€+$ZÏQIö·QôG…ªZÔu>½Ö±éÔÖDbµ·ðçãØÛë~àqº±ªË©Š\3õ_Y «ï ¿d»Æ=<ïlŠÇ—ê?‘Ò§™‡þ¥ÞGæÅM÷=kŠ}±â8ݺ ”Í\˜†N2}‘3G&/1æë"g;621Öì=W«ÕÉÌÍH*ÍÙV‡èž›[êS¼º¯YµÚhÒ¹-è}_%ØdZÖé¥Q³©ƒ $Ü{ ëGˆMìmóW¡í6n®O‹ÿ0xxðg¥¨¡Ù6Ê>YÍï©Â¢J¬ÚÓÊõ>‹¡ õ$uµc3>‚d¯¡ÞšG»®Eþz=-ÞÄÕŠIîÅ‹ƒ¯ þm `Ä‘.K1"€©\Km[_¤mš¯Ž®ÖU^%oeU/ÃSÞ[xÉW9o2K.ô*JFåR•s\ÜÕµ3Z¯ÀïæÙîØí_—NéÊþÖ·+¡Óø]O Ú¬·è®[>­‚š­ Ò±6tqc¡êj¦Ýj.°3*™%ð¡uQP‹ÐÉ´6Pl:àÝ~$;p}?[þ³Í­žüUøåþ6¤v|ßüŸïÔÿÖÑÝ÷ìO|3ðï.[Ù®s”Åe9Ï"—ŒÉÄã¹7ãÈŽþNC<Ë­ÇR…¥AIRIŠíáäÑQ&ü‰Õɪÿ‹ÏÄïÜ/ØÆ[ðjÍïxý(ˆaü^{ÿûÆw ö1–ü§ÞñúD3ßâóñûÆwö1–ü¬¹¸—ˆÚÏGÃÏÄÿ˜ÎàþÆ2¿ƒVEÎÅéDmg¿Åëâ÷Œîìc+ø5O¾âþò#c2]ÿýã;ƒóñŒ·àÕ~ÃýäFÆeü^»ýãØÎàþÆ2¿ƒTûþï"63Áð÷ßñÿ1ÁýŒe¿©÷ü?ÞCËfÅó¿÷ÿA½ÁýŒe©÷ü/ò—Î<¶;g°ÿmX~áýÁ#üYÊþ XíÌÀÿ)[êJ5Øþÿ^Êì‡p@ë¯Ë~ \üöÃeÕ,ËW¨ª»#ß°,;ÜòqŒ·àÕÆÉE:ÜjŸî+ßÔôÜ-øc,ý5bÚU÷8èƒ÷ïèÔv'¸$ÿ‹oÁ©å¢ŸæÐ`{7ñ ­» Ü|äÆ[ðj„>ëq»Ý‘ø„”—;ܤ§äÆTúj°kææ[*ÔPv#¿[d; öÞÎWðjAY$'û‚÷ð¤•vC¸7äÎ[©'ÿ6¤WBG°}ý7¿cû€Gø³–ü¤¥šW`þ ›5Ù.áíýäÎ[í^5^°ú…‘¯¢ûñ£³÷î’|&r ùj™)¹’Ð~ûñHrOe¹ó¡)J“·eˆÝÖ×÷o $†àÉv'¿ÏHsÈìopKd\«òg+ªSþƨµQzÜ…sáïâ Fÿ¸gpOù3•ü«ÞOQð÷ßò’ØÎà—Œe«"w•ðëñsÿ!ÂýŒe©“rcü]~ ?x¾á~Æ2¿ƒR@³þ)Þ{ܨx~Leoÿå©%L‹¿Ä è3¸?±Œ·àÔcü]þ F¿¸_p¿c_Á¨˜³ðéß÷•·÷ç̓ÕNq¬ªGÿ–©v©ÿ=öŠ–Ä^Ê÷Z•¸8´ñŒ¶–:âÕü]þ ?x¾áŸòc-ø5D–“ðïñ};Ü?ØÆ[ðj'êÚ…B€ü¹Eø~ïÂóÙ.~•"äÆr¢úÿ÷jÒ¾+3}d§¤µ5Øîù!½¿¸Ï=jÜk+ø5bòoè2yÔôƒ°}÷9) _eù÷»8»ßòg+b4ÿÍ«#ÅhèQå¤õ3_×zâ™ç›ºGäÖWðj…KÇB|ÊzEdö¾f æÑÙ^z¥­‚–Ò8ÖVäúö51â²´´VÙk2€¿‡ˆÓ±}Ã6ÿጷàÕº”v´±Ì>Á|DDZg±ÝÄmI"äqŒ·‡þPê^—‚Ù#µß²Û HírB±´9Ç2ê O ^9·J†ŒË*"›ì7ƒ‹ìp–áݺüg-â?ûµ`xÜ™VzúFŽü?wõÅ6´ö3¸  ’Aã9_›ÿ«Ò¶Z¿aà{ Þ…bjofùÜw™*! ãyP¯¤¢?ño]sù|ŽÒ‘µ‘-Xî7b{ÒuNvw#zUe~Må46°·ö5kû¶_A‘rqúI!Ù.ó’çüs›-$ž9”ô÷jÇîy[èO¼ã~!„ì¯z¡7µ]žçhöÊÀí©U’É]Þ,j¶8÷—NG%ÚŽQ¯ùdþ r/»äö7¸jnçig,Aßù·ª¶ïi8öh§_ˆ3ÿ1]ÃýŒe¿¬Eøº|Aþñ]ÃýŒe¿ %1ŸýúC„¿Ø¾àỌe¬9“kC«Û/жüã_„¿cû ÞFµ{²<öçÀñŒ¦Ÿÿm\¼¸³>‰žÏ7·ªÃµ~‚Îßdû¥å–Ÿìg;q É|¦¾«ˆÕ`ä¯I³nwlµaÚ¿A@Îü>w­S"#Ù.à*\S¨*ã9[·pŸa_ØÚgC]¾-ïu…îøðW$à²i’œ_³=ú‹&D齓îW½!¦×Ʋ×oìmln+¹!ùd{÷›u·ؾà­hÚOÊøÞàctªÚÒCrR‡Ã§ÄïÜ1þLe¿¬eQsÅ|?wÞd4{%ÏR§.·Õù5•Ôžƒýè­ øïwÐé`ÉLk©0÷a»âvvcž’ÍøÖW®¿ùµk.=Òèl{Å=&î…ÚŽî±ä)]¨æ× £uøîSC´^ÿØÕñr?ë“x˜äûMÝ×ÔJ;OÍT°·Ê~ Qî¹=ÞqúJîS³Ýäs=¦»CÎqØÎ¡(s(I%?±½5—êÉ´S'#ØL縿=ÿKÉR»Ü$xÆXzójêZ²Žm.“=؈’•v7¸*H:½Œ·àÕJÑ¢ï*1oá÷¿·*Wc{„ ¬äÆ[§ÿ†©uaeB øvïê–GîÜ$¤éÿîÆ[Oÿ¶©I”½“fÓì7b;áˆïfòÙnÍsœ^+Î8켞Ngɱ™ÎF½Ø>ú­½“çÇüšÊþ Y+ŽëÀægî<{UÅÑVcáç¿ÉȰâ»Ü Ú\Kü˜ÊÚ×ëþÆ­§W²1‹-W&¶$Û ö3½b×ìç:N¼s)ø5rÞ ‰t>§‡½ð7’½=(•k²æ¿gùÀÿ'2ŸƒU=ß'¡L]ÿ¶®¹«ó¢I•ïÐö‡›òw'ø5WݲzѧıïÓçC¤ö_»ãþi9µÿÅÜŸàõí“ÐͪüQÚçÓçFJì¿wÏNÒsoØîOðj{¶_C,þ*í?óéó£Ùžðþô|Ûö;“üží“ÐÈö¯ùôùÑçî5Þ¢.oûÉþOvÉèeŠ{Wüú|èÀöc¼_½7ýŽå?§»eô3ø£µøg§Îf{Æ/ÿ$\Üÿ“¹?Á©îÙ= öÏùôùÑŠ»1Þ/ÑsØîSðj{¶_C*þ(íóéó¡3Ù~ñêGh¹Ç«ýîå?©÷lž†cvÏùÕùÑ[Îv?½”©ŽÎ󵔦×OÊ¿ú5w;e|º½Ú)øûŸƒŸ°Y]$újS¥ü?wÉå þâÜø%=mÆr¤›[_ö5t^J?ÀÒ–K Õ]‚ï“{J;Ü(^çòc-c}òj®úúKªÙŒ×Øý­Zv;¸ âÎWðjõô“±˜‡îý^ç±ýÀýŒå¦ú“µž;Øÿ¨mo±üý&Çòc-ø5FôMhÐ×ø¼|A*Û»/Ü}\c+ø5Wzô–†Ha{#ñÇr°òû!Ïžv"ÊÒÅò¤‚’÷oMdßʺ¿X1æÂ²ÑÕé%“¸}’ïo%s›Çv/¸ Țϗ“ÇŽ1•»N²ýôT’ù)Ͻ2Ýd¯WÔÏÆËzáò­Ò½ ×ø}ïÔik\žÈw”ìÑKã9Qâ4Ö5r9Tµ–‡¤øs“‹iÉd”x›%®Ç÷¬m¿g9ÐÓ_÷¹”ü¹ïOAôœ]ÿ€¿÷kó¡ú;+Þ€5ì÷:äæSðj¯»äô”ø“·¯ýêüètŽÊ÷–Úö‡œòs)ø5G»dô4ø—¶¾¹«ó¡dö_¼cþh¹ÅÿÅ̧àÕí“ÐÌËânÙÿ>¿:3ýÆ;ÉûÑsØîSðj{¶OC-üOÛ|3Óç@;1ÞOÞ‹œ~ÇrŸƒÔ{¶OCÅ·þ}>t ìÏy|{EÍÿc¹OÁª}Û'¡’¾)í‹ÿ~¿::7áC¶}Êãýÿà|ÿnyVë_{Êä°³âEkÌÅLmcÏ2„'rÔ.u$¦³ñp^¹kOì<ÿŽÿƒÊíyqbË[Y턚/Wø‘ÿ×ûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÐûÑ@N[3 qžöÛÊFR{8æm!Im×¼²åȲT qiIÓÄYWq0A<ÑIj[Šá ß=´¡²©Cï‰é÷Ïl—™q‘»oßGKÌžWƒÇ5™•™ÈÄÁ@ÁÉj,Ü–B\VX<ÓN )^q-’HÚèB‰Ô’•(ž]Ü.3ĸú³²³8Ū\7eñènÎeƒ“(@ZQJ*ó7nMоÓQ@O¿Èøü\´,¼î:."ß즑1öý¯i¦ âǰ­@ð>Š:_<àðšÌþe‚„ö0nÉ4þF3jŽ<ß"î…8 ›ì{Vö½ž´ü—•áx¯ŸË2rq# >sn4<à«yiin­¶Êœ$]`F´q9¯˜q £‘â‘'<„¹…†gÅ[²Ò¢ •0uaÐ­Š±A= Ðcr®/1ÜÃ9&.Süwwå,Ìakƒ³pW½%+%«lU÷ÚÖ>Ь~s¦H‰'0ÂJ—ìXYÈF[¾Å¼ÖšB\%kFá¹ \\^€’Ír ˆ‰ü‹7ÀAqÐËsr2ZŠÒP* yIIQ $ ßC@ ®UÅÓ' \“™™¶Ûw Ì`;-·A-®:7ÝÀ°’AH7±µŠù—m9¥9ʰèORQÈ”©ÑÀ€¥¨¥"Q+ûÉR.×"€fçp83Rð0WËq"O)l¹Ç%´S5!ily,©k Hê7 ½€²½nµ"lvf:¥<ÛŽ%*C6Sª‚UÎN …I™›2nRä=%¦Ðy[t©JbÔl•t'A@W§w†cc/%;ãØÁð¤5È=ò3‘Þu†B n©Ë4¯l "×!Gbö4÷*ã‘…vG#Űß$Siã®91„¦ywilE%`F.[(FÈCy°àI)%6T•X‚ Z.1â9,|¬¾;”â'âa<#ÍÉÇØìº¢qÔ,¡*%i°&úM%‰Ìb3ÐZÉàò°ó8×ʃ/·!…”(¥A.4¥$Ø‚ ކ€g”q™ræãâr,d©øÙ ÄÈÁj[+z<‡JƒlºÚVT…¨¡@%@cn”¹OưðÜÈåù3jI†ìé’Ùa”È’ã‹JBų{Ð Éå¼V÷1Rù6&.Q¤ƽ5„HJI SJXPÚu·ˆôŠQÌ„—-·gGmÈ ¦LöÔê˜e{ö¸à'ÙIòÕe=“è4Neñ,¡.=”ˆÓkˆäô8·ÛJLF‚K’*þ¶´Ý}Åδ2¹×D<^A|Çœ~qų…œrƒ3m{ˆîy›\RUì’H:PCà—<}9ÌyÏ¥Åa–½ð %+*ò7y– P7·B=4’9‰—‡ÇåçqÑsùüØGe4‰¶7{m0¥=…jôPøuÇy6k‘`±Z“;ŒI1rHDˆÎÉJ ”m庲ÝÖ„ûiPðÔ PPÒ|—¡Ã“*<ò°‚¶±ÑTÊ^x¸Aã-L´]¯#w,»Œä9y|âñüm¹FcÒW‰QqøŠr3I‘x•’MŠ‚Q¡öú\ §9ƒð¸þoæxŽgÖ•<¬t¥ã]‘!)Nãäû¬çÚë§ßF¾­h·{5¡64Ž ÅæQéØ|Tã Ϭr„ºÛ.ã¤ÏHZ|Ä«²ˆ7HPJ¶oȸüÌ´Ü<î>Vw€æC ̦—-„¶S¬%EhÒuPñš#ÌL\ë¼{Ʋœ’t6#ÉÊ{˜öÑ©Jq,©ß}™JÝå,ýí*ééÒ€=‚‹–…“š;‘mNãð®ÉißmEKi…(-`(’‘¥¢€`žgÃÔ¬ºSÊðÊWq-g’'G& ŠYm(’7ýè•‚mtë@f®_ÄÐÖBùF!,r7\yã5€‰î(„„EVûUÕ¡i.'Z]®SÆ‘”ˆÏ#Ž+ÚÝÍFDÆTä6Û*J×!!wl$¤‚UkXÐ ÕθB!âò æ84ãóŽ-œ,㌘ãkØ´GsÌÚâ’¯d„’AÒ€[Ì8¶W9•ãXîAg Âí¦·’d²A*-ßqHó € (í'v”!îp3òðÑÄóy¶0ZÈæ²pŽKØt: H•:;«!,¨†Õê¹Ò€¸'3‰RàÉÅ iöb½¹Ô$¶ü”¶¦YX&é[Ô¤êw&ÃQ@@ñîo€ä3rxxù\zy&Tæ&ñææ4ìÆš‡)QÃÎ0q X V©°Ü΄€Ÿæ°3¦r“oÈÂÆÍä~TrÌf$yß× Z\H@eD­m¥}•„?ÎárøÁšÄe¡åñ.)98/"K µÆŠ’­¤lzÐþ=Íž„¬Ã¸ †Žªr0ùIüh‰"2’—PcM}Ä$¶wÝÔ"Ã­Ž”¾7”ñŒÎ:^_Èñy\L´ÎÊC˜ËñØ- 8àqÖÖ¤$¥$(Üè5 «p„CÅäÌpiÇç[8YÇ!31Æ×±hŽç™µÅ%^É $ƒ¥¦?’Æ—‘äXù)jÂešÄÆqÇ“ý”ã°#N ›*ϔ퓷w€·Î8¨…w!žÆáär£»‹ÇLŸ <ï½ßÉK~[î!Ò²ImJ ±ÚMúw*㼬,K‘âñÙ¼AÇaäÌe™RŠ(G”ÊÖ½Ê  Ü‹P dòßWKÀE÷;ëÌ‚ ù›öù[bÈ“¾Ö;¿¬m¶o},@Cr8üx«T)yYÙ&+-ªD§ÊáB Î4ÒBP…-JqiHÜô¸r¹Ëx¸X¬‡#ÿâOÈ® ¥ç%ÁhGm’$-Ȳe3´–v\I¹¿¢àL¿Ì8”h¸ÉÒyF"<,Ø 1Ù¬!©aE):ÊÂ\¹Z@ÚOQé ™ñ¨†C5™Ç¢9‘ŒþFtFóñq•%µ¥å ¨–Ôv¼tZR R´ÐPPnKÍ%ñ¹Ð¡ŽÎ5‘y¸Ð²÷1a•Èq+PjÒòÜI@Oé¨ ±œó //#”‘gÃí1N›O|¹ ‰k e·[óŠå©iºI "€°·žÁ=˜3š€î~+"L¬$´©²vÙŰæ%'z}¢-¨ôÐ ¤ò¼?ëUåòpð‘q“ùÓ¥Åi•8¨È•kùÄ †×r—a¸$£jˆÌåüOŽÇåò£—(¬¤‰¬5Qq;ÐuksrEÆÒn( ŸäøX-g%egÅÃã¸ü†£ä2“eEn:TóLºËó‰jþrEQ$ T•(\_p¸Ì¾0Ï-Éæq˜<$©²áÃÉJœÊb½îò^ŽÚÛ²„+ÎK[Òèt&× -\Î̦s- Œd¤;‘œûqØIY HSŽ©)‰k© !Øç<6Vr7Éñç¦ÄjtZ$¶§dGy+q2³€¡~ÍÎßhû$ÜnWÅæ;™b'$ÅJ{Žîü e™Œ-Pvn ÷¤¥d³mоûZÇÑ@)ŒäÜs6p܃—JÖ³ [2,–Õ±j>Z•¢T6“àt —žÁÀÄý;3 ËmﮟÓq<·ŠCkóÔ «*Mìn-@Vó}Çâ8%qa'1 æù‹¥¼–æDK. 4]%ÇŸm*B½”‚¢T´5 %²|Ëa3œc?™Î‚pøéO!§$´¶ÞâR”°”¦÷Q¾ÛØØ˜.mÍΗ‡NR‚$©Ì¹Ç„Æ—3É…)ÈÞybép%{¾…ísÖ€™žÁefd±ø¼Ô –C àk1,–žz#Š* Cí¡EM’R«Ðú( „®â7%>"¸¦mÜf3)?’¶qÞæÜ‰%„£ïjš™E È@%,œ ÊÏ,âÒ$åáÇ丧æ`¥ç¢71…9 (¾õI@Y-ØÜ¬ P Âå¸ £ñÄå!åâÊfcßYB™æî+i%[^ÞJKÀ„¨'¢ÊINàásø.GSøönz \,ªn:KR™$PVÊ”ÀH½õ  2\óÆ“8œ¦;?ÃO…/Љ5¥½É“‰gÒÙqM”•µI)#O»Í8Ì(Æ^c5À2eʆÊò¡¶—WAŒáB’ò“ýrÃi!i$%iJî©æ\Aq2Ùò¬: `],g&‰ÑË0 Ú[’æý­*úYdÐ Üîj^ ùn$Iå-—8âD¶Šf¤--!À¢…•-a)ÝFá7±°Mç°OfãÌæ ;ŸŠÈ“+‰-*cl¶qly‰IÞŸh‹j=4iä|yY¥ñ´ç±ÊäM·ç/%2f¥»o1÷y6 ßm­@5c™q Rò¸øÜ«"~ ¹›„Ôèëz;]T†Ò²¦‚Š*Ç­ƒœß†5Šçyv¬b ÊçÆLOx¯<¹³x±öozAüþ 6V Nn|æIµ=ŽÃ;%¤KÚŠ–ÓAkHQ% ¢€‡ýÐxOË|üö¢Ûë(¿×ä$­–¿®}7 Jz‘¨ &_Ïà¢å¡àef FÎd[S¸ü3²ZD·Û@QRÚaJ X $¥¢€‡_>á …™È§—b$Cã±Ó+8ìiŒ¾b´´•!N¥¥-IÞ²-u}Íè ÌFcŸÇÆË`òqs¹aF.B¨}—6¨¥[V‚AÚ A×B:ÐTÿÑûÑ@{•ážÏñìž.+­Çžëiw)ÐJ›i~#Ê[6ò­=÷=˩Χ¦ApBHW?Ûæ#ß_L„d’ìd“ýœ‚JV@صxè@Ë?³Òä3qlD“’ÉÍñùZ¿‹v kÆ8½½f¡ÅÝ·”ãKiHW·£@0ÍñàÌÄMˆ…á3™NKÆ"àùVl§ ©‰,üרK^KÉpÈ'fÖ@)ý5®W‰ri™,´&ùdzÙ|n^FiÙ##P=ÖíµF[n›Ä[…ôlßô³Ûî'…ä ÌÂH’äGÌòIï„•’XÌÊû(MÐ.B]HX6Pâ3lYá-9¼‹8&1ipÁÆ™Kw#v˧Oföð &ÙÁÊG.Ïg”ói…•Âãq¬% Wœ—a¿=×FÛD¤m “pn—W½ÛÞ_“À»ƒÈ5‚Ç«IJ¼g…&CŠš©ì´Ê’Úâ·îÍ$-M¡o]Fû½l ŽG†Ì›7;$*FO!ÇfÇ *¸ú¢KO:Uì(¥»"×Ö×) #»‘–G—ˆäŠÉñ¸ªD,†5¹&Wê„9ï%‡K‘Ÿò$•->FÒØoÚ ¾äí²€S·¼k'‹ŒÉN"eð¾;ˆTC¹2Y“K[ÛÒRmï)[Ü*àX\ v·½ÌÀãži®F˹\V>6+ŽOTÈžZâµ!§Im8˜êq¶¬’⥔n=O¶@³ax¯0ÆÍãù‡¢á×9¬ŽqÜÜOZf6jcr7Ç|Áå´–í±M¶OÓMµÉ̸¤®E' ü7˜e-)èô>V<üDÀ“)”lëRšn×Ò×Ö€­µÛ¼“Xé±<øeäf0c ½Ë¼$ÔØñÖ|»ù‰OšmÊuêh QÃó\‡$Écœ†WÇàÆÇ’ëHÃd¤ÎZ^Zsb¥!I ÜíÐ\WÁ¹®8ÆR6E¨03X¨8îW†e¤´c<ë®yIÂÍqäŸ<íÛîÆé¹7PòÀŸ{‡Oü‹Ëà‡/6fr~Z##+Ú|üù(Ë÷Èì:ón5¹ ö[#zvܧZìN?ʧöÿ#Çy>a™\‹'|eäÆÇЄÈS€â™.ìB’•²ÖëZ¼ÿåyפå2ñ0˜<ƒŽñÆÛƒ–ü¶ •NA×yÈq•¸¤© 7ån¿oÙ÷„ÂÊÇKåξò<¬öT΄R·6Ù‡9Ýt€½•.5÷½¨p=®æ11S fs-N™ˆÅ±†ÏT¶Ê^†ûrcºäxøˆN4<Øí¨…H@*”n¥#œíÏ/L.¾7šm¬¦:&J?"G¼1¹oeÝjL·’ìœ^Y )ä+ÙòHWÓJT»ÁÛÇbù†,´IÄr%0„§Í+pEo °ëž[CyTe¤t ètcÛù e¬îqÖgeù*[‘*kI!Gi¤GŒ´…¥*J]i°öÂ=•8¡ë P`p¼ÎwrHØÜ£QäbrMbxDô¨Œ~$d6ÒÔôy BŠÒc©E§R|¤8RçÑ Iá]ÏO•‰‘ƒ.W k.žO~I Ó¯Oa¸ì?ï1° •’’¯-¶ºÔâè ¡Åð0’ùKòœeÄfò1åÄ ”3Œ… A{’›22ˆµý’ä‡âÃ)Ú„”¥ lý"JºW㼯Ë2ÒoÃ&*t‘„k$æGÎ.J^÷´¢DŠWu•¶‰5¹^ÊºÈ ;Äs\¦HN7ŽàZ–Ü'ÏÝÈÉ‹šÅ8å÷;à©D"÷Ø%!.j…Ù$ÐÒ¸+s›ÉÈŒÚßâyœ<´˜Â\hï5"$fYHòUˆëžÓWLÖE”S³BV”n1Ëâ˜î)‰…„ß›€^;#cîûÛ©ñä>ã¬.^îµ¶ÅÒ„¸èÜ«Øn 2æÜ•g92²8|¹k˜ÇÄÆçñÂ\x‹ Å}çJÐ^ÄäÔ½Áó`‡ ¦ûÎàP׊b³8g9<ƒ0Ž:FV^G6<‡}ÔÎä…¡öÃih¶V \sw_g¥YWåÈñM³‰P9ñžã¯;%õ&YVCëǚЌ<€ …¡O~n›^'ˆËÂ{峌A‘äs›”ö3û’c²ŒÌdŸ=Ö#)Ŭ5¹J-&ÃjuÛ¹@UÙãÜ÷WƹŠú/©09JgÉ‹’oy¡¿sn#º¶Ò|½ÂJ7HN¢€Ï!Áó’86[ÂÉ3 2÷ —œÇJi`7eæ—”e¥©èï¥%H! %—•k±À, *òxWsÓÇ¥câd`Ë•È˧“ß’h4ëÓØn;ûÌl%A¤¤«Ëm†n£u8ºcqì.oÈ3î¼Ô°™”E’‰ˆ’ï½7&$ m@e@@sb$å㫎¶1vgÉó †æ›iÔ‹$ÝWXëaë +Ù~!žœï”ìT¯#Ê0™¸ŠZ–61V8¼•ƒe©1 Cqr.l{pNU‰æNÉåÎCÄÈerXd qÂæMÇP¸©Ä¡ïdÔ hy{VRPì-aGrmìÐ#Ì!æ±Y,¤ˆUÌã±1\§&\wÑ.!}Âüf[‹åº[Ö7,í¶à“ô@÷»{Ëòxpy°Xõbx–WŒàò¤ÈqSU=–™C²[\Výٱ䅩´-ë¨ßw±ídî66\—8¢qr[–ÊJw¾IRTæ7!j›å”ƒe´–úI¶­í¸Ý@X¹6(ë˜2Û*ÃÙ:› Û^ ʸ¼¤K•V±8´að¢Tw¦´¨©QÙÄÁ[Dùi .D‚.Fân¥eÄpX1³\—5•hd^Ëæ‘ÇÇvD‰˜ 2Âu1WÓé[Dù£}­íøPŒ× î!s‘ÆÊÍÅH‰'É1Ø,Š¥/Ì0DV—¬{A¦ÙK@(—žY:Üô]¹G‘œÈ1$Ɖ‘€Ž5›ÂÌÅI’ôQ%y5B)Ay–ÜSh)Œ°¥¤nMÁJO€ pŒW-Çbò19fA2rR¾¦e¹~þ¸ü¦Ð–U1P ­â•…§+±öÜYÖ€‚‹ÆycÜB?ÈCÃCFÌ:1ystKk)—]qæ ¯wRÐÍÂã£r¬Wa¸€Œn–iõ-×á-µEæL)œ7<‹(ÔØ·»Y- ‡= Ñ;†´Ò8,ƒKür|(9µà°8´JÜV¬cò%>k±%% [omBË.sì Û Åy†6oÌ=¹ÍdsŽæà"|‚Ó1³S‘¾;æ/-¤·mŠm°¢~šm¨ñ® ʱ<ÁÉÙ<¹Èq¸™ ®K .8RɸâÊ8”=쇊ITõ‚R°h”%’ãÜë#ËâH‘.Ž%,ÖF Œ¢Ô¨­¢Ñ”ËQ‘ÛRÝx¬­ÉgO¢„ô jìliüµYŒÆ2# À²üi¬¾(©Ì¦D£†U=¤FO¹©ÂÊ—å…ºt^§mÈ7¸C¸÷d#·ÿ’o¨©jmRÃaw-\µpMÈÝúZÉ •¯œ¿”N_Îâsò³ ‰qØ[OÃŒË)O’¼L‡˜éšÐÚ¢º°Û¼Â8ö ìÈhwÀ¥ñI¯!N)&\†¢! $©´–VnluΦÀlÜʧ¸‘!dÚoË“ —%°6””<㔫¤nرÓ[\-@ÿÒûÑ@@@@@h ßr3ñ¸<ü«lýyžÆqfh±îÍ .D÷%5æ­~÷ BL}Êm)l€=•¨«j»ÉçŸUµ,QsŽÌ¾Fˆ>¨!ŶÛÒÀšâJ~ö²Du¼«$½.öv|¸y"Äg|¶²™uÅœ©;Úù„Ü‚G¶ÒMÅŽ–ézÞW—“‚ÁIÉÄCN>ËÑ[J (³òZeW RN‰Y¶½hÌ8‡Ê® ðù9è²cÁÊòVPÁƒT­žSO>™þk{”Û+BwêM—´iÜøäpÝÀ{À˜Ðâq2Œ£’­PWëz•²–D‡$¶±¾°”¨ À©*IPÚî FÌö2¸,®~:V*3e‹[­æeˆQ$¶¨Ò^l´§w^ê 'ؽQþT­™¡Šã¹>A+‘N6dJ„ÛŠZ£µ'ÌB¦JŽÙ@KÉë ¿D‘­Ã?ÌÇo2\ß¶R”bU’ǹ= ò’ 7¤¾„­³dýÐ ÓxЬ_;ËÃk);-.4Á¡”àó¼k¸qåÉÉËT4ÇeÉSä°þÕ–Ê–‡‚Q¸…k@[&óñ‰Ä¿’âY˜0²%†æOZñËoì—ƒ µ%-M[ŠQZ“«(q"ãÚë`G<Šæv `²‚Fdœ|P¯t÷dÃi×l$É÷ä8Å€’S¢ŠH$óÜü`aÉ'˜ßD'xûÅË3>SPÙv 2n„ù·¸H (ƒn¶ÿ’ôÈQåHÇÈľú7;Ž”¦Tó'ô+1Ýy¢¥Z‡®€y@@@@@@@@@@@@@½å<³+†ÍââcâG‘‰ˆ–es .…©Ö"˘‘ËA*HטêÔ  Ò…® ¤€æO<‡6þ!Xl“‘¡å#á²ôû¯¹Ç™-˜ïGBÒ©A{Ëi C*GÚ k@CÌæódr¾/‹Æã'ÇÁIËM…?‘:!ˆRÌHRÔã-ò¥‡Ùúe”¤ì6YI€X÷?rIÀæwÑ Þ>ñD@2ÌÏ”Ô6]ˆ ›¡>cíîJ`Û­€‘O9B³¸¾48ÞSëɰ[Éd±ÅÜhs×”Â]‘yÃÌЫû··MÖÜÀ(Ï9†îaœiÃäÙÇË–ö;ÉÖ†>¯‘28Yq„m|ÈI§ã)mJM’³¹€ÃŒs¸|¡øm5†Éb[ÊãÌ`äÏ÷]“a¬7¹mòZJ È K©Aö´[y                          ·|·9vc·o.#)†6§ÙvCóâ·[qÜ–P,M…´êhlžK•dyÜ™ŠÄ# 4¬–G) ü‡š¹‹u-´Ó,Ë…°!,•)ej½À К/1Ìò\W-’úÚÌæ'‚ÇNÌKŵ¦¡•»4J˜¶¤ÊKÞ^ÖRv!N©!:u =ÍsÔÂgšû¦ Yá°ä»‘丯Ciö`7=-† Ö$:Ko$ؤ›¤¸ž´ö9£RùWãðÓ²Ò°-6ssã. l°óÑÄ–YSOËD‹º‚ª –îl\öW´|>—žÅðœ›ø|a\·#îA˜#L.·õ|‰»Ûv4»6ƒä´•\m- ´€íÎáGˆ2 å8Öc‚î= â¤.=%99b g\y4§´>c‰På6 Fæ2&â¥Î…ÃóR²XéÆOŒ¥xÔÍŽàB]ܵ¹91T’…¡Ccê6PÒ÷³ü¿ÉíæK›`B\)Ä«%Œ™qÁré2Ò’µ[Å)P' 4&—åÜA–É¢QÌæ•mg‹äð$!¸f(²“ Ÿë¤)?q²ä­8=ÑÇ6ÞJT®9š…‡ƒÈ dÞL?/!–V¸Í¢ZžIZ]IJ_m¢AÖÚÐ,‡1Åãdå">Ô•HÅÇǽ嶄!yG†n±wã[}­©ª× v;†Ü™8ükS‹%*Ð_J)]ÈÃBzzåÀÈ1„€ÎAc”2¨O;ŠJÕ1†’‡•#{a§5S! Ø­ªV—ÉÇ3kä8¶rªÃËÃ5&ˈ̷a>§YRR¤<‡ I–ÑB´öïêµ®õPPPPPÿÓûÑ@@@@@@kæ{mƒc;‰sÌ|† yeÆ·ˆÐW!m­'Ê·˜L•n$[AdnnSÚ¾3Ëy?“ä“‚Ó,,ª2jj;ªu´¬aKSVRÕu0¦ÔAÔ¨Ú³1‹‘Æ$²¶ÒÞ&©²‚ÉMª¨À"ÀÜî}'[i}| ùP[“šÈCÆFu·¦a¢û²XšZu6[Œ8ø ScúÓ¨¸¸7 "çpH³²òr ÎåXÇd%ÆŸ•ã *1*LO/Ëqeq×!?Ö[Ü–ÞB·ÚIܽÀ0¶XÙÙ¬æ{'›Èä§fñ30…N3eQáMPRšmØÐ™yÀÞѰ>·u=I$ |Ï ÆæžËIvdØ’²±1‘}æ:šÝX‰OLˆû!ÖœO˜—ž*;Â’lŸg­À{µÐäÄ Éå™YTgÈä/7‹rJf"2b!IeXómm#iò7$ûA@Ð6øv91®©RÝÆ7N8ÌR›÷•6”„ï*Ka½Æ×6@ª[7†‹ž„ÔŽ:Û,̓=*d¤+Ì)©mT• ¥l€­/k؃­Sä=¸Ær@×"w-ÇJ Bbdx¨„¤If¯|e¥¹"+϶4¤²â¬/®´f?Ì«žcVÂ'Âär92ÆIÌ;˜¥¹5‡Û_¹{¹s#¹nÊRìùJw°šÖ²œGŽ"K8Õ8ËHǾÊ[‡ŠŽëC1©¬µï1 ³!䕲²ûŽ)@_vóº€Ûô@@@@@@@@@@@@@3Û>É%ågò>9ÏÎÊ 4&ä"ÇôV’Ði-Eum•¶AX±¾õ)Wô»|–&2äùòW?-ÌÊ’êÚ..N-¸m5rjÄ$‹\’«ÜXÌpÌfáå(2ÎãñÓ¦d`q‡=ÍPY‘9!õ%^ëïD!Å©òM€ H½ì§㈒Î5N2ÃÒ1ï²–áâ£ºÐÆÌjk-{Ìh,Èy%l¤,¾ãŠPݼî ,ÜŸ‚Äå™<4ìžbp‡ƒ—|<+lãÔǽEwÍCÁ硹)µKO£ÙÓK›ä^.Y¼ÎådãcO‘”Çñ‡•Á2O™æ:Ú“2N¯8¤¡o) *ºR6£h°¼;‚üš÷Gå9ù-„Vç)|e{½ÖîÔ&ëþÆN¢ÃS§Kl                          Œ\†¹>S4¥¶bÍÆ@„Ó`Ÿ09én,¨ZÖ"Bm¯§Aâvkˆ£'’¬n{)Ås*Ž˜ròX¯uQ“µ)m´óScJe[µ«`Zw(mQ fpÈy,~rK'>sœ‹ŒW ³-” ¼L!´º¯yY6FΖ@ñI\33Íq®¿),s°àË­*@[~dqÇÈ%'ïL¤Á^ÕÏM ¥ð8“ùn#—OÌN–þN+ Œ[8àÌbë;·Ñ 36¬(©I2 J­q`Æð(8ø˜+ÌdòxÎAÉØ6ä*2 \7á&0Txì©M¡¹ )*%ÍÖ%¨,/h°˜Xæy¬¤¸œPƒÄcØDfñþ±a¶ÄHQîñ>bœÜµ}­ÞÕ-™íÖ/0·Ÿ9øé«Î7ÈcÍa0ßSˆˆi-·2,†l@ ©IV©P %áØäpƸB¥KwÞ=8ã1JoÞTÚR¼©-†÷\Ùz¨ \¦&ZVT¥8€œ¹ñ‚•¸¸²!”¸ MÓ²JöÖ× CÇø>FnZ|L»Š?ÇfñÈP3îáÜ"<×HD%ã Ž”!¦,U-eÃtu;ÍeµXÌ–;?ä\ƒ-ÊO fËÉ·RÙN1Õ¿cLÁi…íqeD<ÛEaIºH|_·XN&¼S¸çV\ÄGÈFgd\|&ÜNEØÎº§ÇDˆÖ䘨 )@Òû·^?´¼{ȳŸ%Ü^O,f8fOF~rŠÝy™nã×,«r”B]yhÛ³`J@.à pÈùfaL‘=ìÞAy<”¹ CaNHq´6¥yP#EdÞå•h …PPPPPÿÔûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÕûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÖúË'gË9:å\Ž;IËMKQØÍäši ¬¶ÛrR”$ RAU3ª¨!K4ÒJÜæœ%?HœþWðªIm¨vÔÜÓˆJÇ-ää,$ý•èôªHÚ‡i2ág&ý_ÊþIº\ÌøUÉ÷+øUÚ‡ V[©å\›õ{+øU$¨pŸ­M¿ß?%ý^ÊþB6!ÃiÉøònH»Ù_¨[b%¼‰ò^Iú½•ü*’6!t±<ÿÂ>Gú½•ü*„lB¢4ãבò?Õì¯áT’6!QgOÊ>Gú½•ü*’NÔ(˜sü"ä«Ù_¨6£# güa䫹_¨6 ÷)¿ñƒ‘þ®å ¨–NÊ™ˆ3mÿï#ý]ÊþIceOD)—·å"ý]ÊþR†ÊžˆRü ä_«¹_¨C¢<\Y ¡KW äA('ëܯáTPŸ”ám§SÈyCįr½UÓÿ¨‘µDîÿ"ý]ÊþRNÄyîRÝþEú½•ü*¢XØŒÄ ?îÿ"ý]ÊþIcb2úºIÿoùêîWðª”ÆÄWÉÿwùêîWðª‰#j÷ _îÿ"ý]ÊþIcj\)ž‡‘W×¹_©,lCuDœ:r.F?»¹_©,ˆIQæ‹ÿ¾>E ¹þÞå ¨’6!³^ôúT¶ù$²TRoÊõúUZFÄ{åOy'$ý^ÊþI%Ñ )¼†¿ï—’iÿ·²¿…TK!Qäÿ÷—’~¯e ¤²v!ýg©›’îöWðª™#b©Ì¡ÔržKèÿ×ù_©#j;n¬kù]½û$ß¾=Á:¾|·á5“BîŒP|AwìÿÏ—pdù_ÂjPãßûŸùrî ¿Æ|·á5K&Œÿ.àþÉòß„Ôme–Öeü`ûú:÷˸?²|¯á4†Z(yüa;ùûùwöO–ü&¢ ½¦Æ¿–ÿN=Áý“å¿  Š™þ~þ]Áý“å ¡XG¿Æ¿¿pdùoÂhV ‡ûöGúqî ÿÆ|·á4f;ÿß«÷Ǹ?²|·á4z;ýßÏßǸ?²|·á4 Žÿwë¡ï‡p/þ3å¿ ©+»ç~ºþîÀý“å¿ ©„ S÷{ïÉÿžþà~ɲ߄Ô@ƒßÝï¿·îßÜþSe¿ ¤Ýó¿¿wp?dùoÂi [sÊýcÞu'ÓR\ÄW}åÌyøýèçИQ³1›äÙ`‘ ¿öN§Òi ¿Œ.àþÉòß„ÒáŽûüCKXn/zûˆò‰µ“ɲÇÿÔÒ¹{݈‡z{AÌ÷›äñ3¹¯c/‹—Ér/²üW2L%æžerT•¡h%*Jhi´£J¨5g|²ñ=“ïW:F3)Œá‚^7%Õ±"<†q²Ó̺ÙJд(%I ‚.*j)²ùOÎ3}ýïÁëÞþàò›+øMRN•pÑø[ïÏ}H×½œüÿ”Ù_Âi&Ow§ tŽû÷ÈÚýêçß²l¯á5Ë{¾?@ñõïz9éÿ)r¿„ÒYuÆÇè<¾½ðG½<ô”Ù_Âh›!ññúÿÝã¾›ˆýÛ9÷ì›+øM$§‘Ð…Qߎù¯zùõÿÆl¯á4–O»ãô!Ë}õï~äß½<øßÃò›+øMRÖi\l~‚Ó½]çpýâçj¿§’å ­,¹îº3£ƒƒ‚Ýj†Ùnõ÷¥”(µÞ^xÙ·‡%ÊÿSL<‹ÙêÈäðpÕ6ªr¾ÿ÷à:¤þíýÀ°=?)ò¿„×Rº£Ïd¥UºSßþûi~öóÿÙ6Wðš1Z/Aê»ýß]å·ŸòŸ+øMVK¼Uô ø€ïÈ:w¿¸Œù_ÂjèÆñ¤4þ0]û*#÷rîã>WðšÉ¡]ˆ[øÀ÷êßéø²l¯á5F6!¹ø‚ïá½»ãÜþSå¿ ¨2¬uô ÿ>þþþ]Áý“å ¨ll¯ ñ_}þÓþ\û…û'Ë~DÈòêü?Œ'¿>àþÉò߄ԕxÒWÄ7·îçÜÙ>[ðšuPcüaûÿûù÷ öO–ü&¦ B=Ýþýüû…û'Ë~Hƿ߿Ÿp¿dùoÂiøÃwû÷óîìŸ-øM ˆ=þ0½þýüû…û'Ë~HƒøÂ÷û÷óîìŸ-øM B1?Ýþýüû…û'Ë~HLOÄ?¼{çÜ/Ù>[ðš@ƒßãßá×¾}Âý“å¿ ¤GŸÆ¿ÿ¿§p­þ3å¿ ¤1þ1¿§p¿dùoÂi ¿Œ?ÿNá~Éòß„Ò ŸˆŸˆúw öO–ü& ê¿‚ówƒ–|PvÇÊ{¯Ì¹.×^ý„Êç²b?åagºß˜Ãï­µíq P¸Ñ@¨¤Ö‡ÿ×îþS%cœòØÎ $ œ×¡úxpkT6kЯIyrqÒ^m°¦ÔOR:^¤8)"4qèm˜(Iœ§×2°€[qġŹÜmz9nB„ñ@¦ÊЯM¼(BcÁ$¡­ \-³ë· ‘äWœrB˜Z4Û¹Ÿ'ËB&RÙµ††…Æ­ÉxÆ”é@ÄYJ›>¯èÑl“eŸˆª@Ï”}×4 ²‡VÊB¼¢@Iꢞ¶ 2$yñšm›M)IÝÔZÚ³@:K\0 ”>”9â.zP‰CRä4Tãe¥¥E*u·ˆ¡d),:Ìwie±¸ úZI-A‚ßR‚’Ì« Þ‚EIYŸ4yê KbÈ©6ÔU[)qFLv´¦B ´û’<(˜“‡%F”ã@yI Joã·B~Õ²Æ;BRBËHUü7iDɸ™>ø# 'jš+JØ©&D›yÄÆšãȺᬠ„ô6êÔH“×)·!$­2χ…“z™ —KFÂô% R§Dåǰ(ò÷¤üö¢!‘ÆDc 'tW‘ë ¤'!ÉQÝŒã&<…% ô‚®†ô”I ¦zéRIÛNœ¤”•Ý)m< ?Ъ¥·Ñ{ŒË®,§ÓmMJ*(ã¥f*=§Úó µôüóR$N2d-O!ô[b¾ö»[ri¡(ÂZTÛ.¸„îZRJGÉ@ÙÒ¼ò Û׺ Òz…P‚{X§¤¥ÍÎ 8 Ué ?ЪÉwVCX(È)Fºúê²tQ‡—Ôƒo]%è„B5uc–f¡ÑU;‚Æd¡ÔÔ7%-Ž5 kU0Á˜¤´ „i@{åi@e°šQÒâ€X$Úƒ©’´ Ì'põšfAëS$@ewPi$(…ôê Žq)Y5'fG“¨ÂÇô“³ý±ý151u(àöÚ>j’Kï¼¹FuCjqx§ÛmG§/ï-œ“RWÄ×ÎX\tÐTa®Ò*%ha©MúPø¸ˆ8¬S9¬Ú<ç§õV(:º¿B/öjH/>Öô­X(q?ÖÔM¾PM%¢déy'¼é®©×@m‘èJF€Q‚>PÚñ¿ê‚DP…º´´Ú ‹Y J¹$ôZ•,®à`bÚ3sT‰n$-XøãzÛ ÿº€úªZ"D Üf·ÇfNEÞ­¥ë!°|7© ‚##“™”q ’à ´6±khO¡)‘ëG…5‡Áûëod&»îxˆv2e«©Wƒm ´ÙæG:V=ÓÏÕ¸öÆÔ!'ïŽ~™ÅI5Y€‘}øzRÏûJÔIçüjäž·ÊÆ¨–Ôý@5ÄúïøÉZäÔ2øþ²ùOË«G¥V­\’M ȵ6­:ÔA(zÚŽšÞ¡£"=zä@ÈÍw«ZÚAö}v¨% 6U¹³ëªÛS".xÕ¦¹Ù‘Õãh%š?{PªñÖ£–ý–j‡?¯9ý5vê¡[#› V• µ‚•j©v n¯³S0Q©ò”z²´”tD‚¯djO@5$š›8¬“˜îʳgÕ¸²Ã(.:[iGj@*$éèZM…XDñÓ›u挶ýu·R Aµ¬}tZ”hh´¨,SÔUHÄ‚-RÙF„V›kãDRÈJõcêQ@{@$Êö¡ÐPPP+¥€  :±¾¿ëmÚoî÷ëFŒ‹t?ÿÐîþ]Õó¾Vï–CKŸ9÷ñ2ÖÕCb½ óQ¦#ö81¹iAm§/¡IèjI-P¤°ÚTªJ@#ä¡#—â¦LwY?v›è> Ó}LÅspP./ÂÄmPû´¨n8ÔsÞte‡Iè¯Q©„!~Óì†m¦ÀnI¡ 'Qê4eÄ„"g)Ý=ÝÔ‚ò=+OOͨ‚®²Ç˜è*椫rBÈ`zMÿ>ˆ„ ñ¨Ó":òB^eÕ•6²uNîµ$ÀøÄ|ÍŠðHSl¡Iq^7W¢„¤(ìIMË£ºHC­«N h•a—6]ë© õP!Éd)*J´"„‘hèCu•+r…ýØþ„tЈ;Ãl6½¯)×?Lzš†J&²ô'|´ 0•%@u½"ˆ3"·"2•²éZ›Y6#}ÍÙ£$Á…¥;㩲»,ƒzˆÓÓ=2|±å†ÊºÜ›Õ„ KEg"·v„Èp©«úTÕ` ´—ÙòT¦R[° ¹¦•(‚| {[ÕRY®ÅxLD–BmåùkIñÖàÔEI„ëüŸ˜A)N=vþ…8\5ÊLD¸iIqDku¥Dác­X’pDç%!@!Ô%*¨ÚOôj°HÓÜCºo)K!^⤫C7qÏ솶–&*v_îHñ¤V™y —Ôµ[èô&d4µ´´£ÙYI5>âD”ÈRR•%%*ÛâO‰©F+ðˆü@±å¹¸#Ò‰5Xvµd5B€ü„›^§iº²/65WS&äÄj`$fÙ¨d¤dF”F<½ v›è4©5EG¦€qk zj•®t  ¨‹Ôƒ4¢Ç­©A)µ @”Z„A–ÛT4€T>ZŸUIJaqR3YH8¨ÂîÌu-ßô):©GÔ&¬Š²s˜åÈæS¶' Ò ã}<¶E”¿êÕuTÌ‚±æÛ¶Øþ‡­ /î¬âûnÃ{H“Ê2ªugÓ@HÿÂ*õ$ø‚±n¦ú ‚G,bçÉ ÄuÀÉB: Þ5Áòù¼¤HËÇ>Ü$+Í™!H 7,’}ZT¥%ICƹNs*üµc½Ö0³xøî8„ØFˆHé§_]d‹àÔ¡K†ßèÂäµ§Ûªª²[%±ÝªäóÐã¬%‡[d]ÇR»Õ•Y gv›.ÈJßÉcÚV…M…©E"öÖÂŽ¤L˜NxãRó²òP–Ѱl²=êÚ­IÛ½ƒ–­¶ÜPÞâNJ’ó¯ò(kê‰qK+*R‰×ªÓ&PàÀ€¤òrŠw(¥õ¸¨ÚÉ‘Èø f±Ë¹Ôù¶±û0Fä]xf2Ü£(ˆ®ä¢CÇùN¸þL,)(I)6õ)G¯¶\ÑÕ˜XìkCŠ%¸>[È vÆÅâ Ô®ÄÔ´È5Âû{Ê/õiU´öVƒ¯Ù¨kBS6Ga¸—#Çwï²oKÃÉi–¹÷SŽ””„å#’I€*°É“ôÿPA¨~ ÿÐ'{ÿÄKú×&…ñýeòŸ—F¼*§Q"E½VLÕ¨å 2Y!óiùêtzêMŽ•¢<6JÕ§Z‰+´r†M¯Uv.¨Çˆ`’:V7c"¢-S´¤Öž]NŽ$1Ìªí®«jcåýVjåÿ]_¬×n½1¬,ÒªË×C­Z«fD 6'€™Âaægç¦ “%@ìi¹GÖtÄÕ^ƒ©´âã±X©ÃŒÆ&[Ì´á“=c{ëßqû”'о5Š×o©–µIÂ6ŸîÃøltüãf{,£ÞI[-¯Ù²PåN·Ò¦–7z ‡³Î7Ès>QŒnSÆ”¦‚ß.®Âá·†½*u#lšÈv>C±ò¢˜®©6*$„©;Ð ùF•ÈЬ÷²Y¾' Fr/Ï/' ì¨K²H£Å$(¡àAñ¬‰Á¾&ˆp+*0] †Ö«¯¨[JÛPØÐN´$ðÐ3Êx4 = J6€h­¤\M 6{Ú€zÚAèlØXT’9CzÐÙôZ„ІýT¡½” ]-‹Xõ¡"ÞPÓJ ZÖÿ™@d"€<”ú4¡'¾R} E؈u$- ê“BZF1†È(nÞ{Ú„m µÖ„ô ú>z5‘·PP躡I6 1 $%"É îÛq»ÑãI$lR üllj$€F–?%Hcu z(D ߪ… l¦ÅAX­¾ºT’3q|4¡ ë*±¨ä §Z´›»@ì6ðñ£"ˆ½™€}64h²mXøšˆ1äz ! V©º‡ª¢ 2(¤ªÊÒúÒÓìTJ4Ý’¤t¤íV¿  3µ '»I üÕ0µÖd‚.”’¿¹¨ õHRH 7ôÔÀ“eq˜²0¼k)ÈÚeKÉåwb¸úR’¥{cïî‹~…'h>š´hQõ!cp|Ò›22œò¬Ëöì¬eË{Ê‘Ïxãn :½¥+ÉGIF Õ]ÙÓåT“Rwùgb;ÖßýÓrDýœ\U»Š·ê2àS’«Ö¿ù…Þ¾ŠÔÇžNõ°m!›Vi#hå ëS!!óME$ʪ(ëÝ*®ÅicÛVšÕ]ˆØ‚M`Ï’³ÅŽYøz™Âq«¹¬¹6[gÏ”°JÖâ’w(à.R.}uÏÉ–ËC±‡Vô6‡`ø~'‡!Yiب¹£äyRœm$¶Ÿžƒë¨Çš—7Ce÷ǸNâ¸va ÃR›žÊJ AöRNÓqâF•¼³ÇÆoSŠ»mÝÎ=Æ2YHYØI™ï¥.€R ¯ …\ê·§ÕYkyG>ôsï5ϰ|­r!:p–œ\XÎkVü•þˆ¶‚¤õHÛèª[!±Lm#„{—Ã#ñÉæn%ßyÄJuADë)J>_ô¤´údÅy0çÆ×CSžµ°h5¨Z¤j(Aî´òÐ#Jco–€ÀîõЦþ4†ô– <7*Ñè ì_€/úÛv›û½úѨd3ÿÒú Êä°9w%iKg-2É=OöBÅTÙODV¢>“‘ºJ[~]õ°)Ô+$˳™e†žz^RRÙê’Q/7 ¾¤^Þ¯OÚ ™$Ø)ZP¤ý ƒPYÐòÔ“ ü´Å,!@•<àBmëñ¡F̼Œœb\!¥2µ”ž—xT"'¢ÈeæÔê H]üëz’òÑM²ÙÜÿ…žÞsˆ^ÿÛF¹få-8wÜÝ–U¯–—«'Ñ} t8ݹ4±¡Éí·ÅªÕ‹áGÌqÓ‰1Þá‰)åÙ m]ã-Æ;IV‰Ð½+ª ä¹#ù^s„˜0šÞr‘·îÆEÙúRãÉ_H” ¼÷2ü(xì—ˆÇãÒ¤Bf2@ZµnUÖnI'Æ’JEAù²¥¯|©HYÔ©j*:úÍé$ÀÕ özÕP2²µ ôdúô 2ŒË¯8i uÇCm¤\•¡ΰcƒc1и¼ “ffv)ã0*{÷§Ïœñx›]@[j|k!BZKͧ‰¼ï%η%qeºX‚X\D»´4·4¸±MKz$#7Í1 Ç/Ç`£bmõnÉXm-„X]@ ƒã@EqþAÈçÊü›ãùsx)Îäœ%)yµ[úùYA¿¯¥–à…—àg1\‹*ÍœÇfJÛ  Zèý’mEÇ&žiËñoòLÌŒw¼AòÆIâ´¾Ú¯µæ…þ?KìÔ0klÏqbã±R0XøQ%8û¡Çe!°ŠE¬R¯Oµªäò|¬´¥:’ÒØÐM“§MZ®á¹ÜÓ?? Æùvư¿1,$Zææ×4Ü gCYfÛÆd”:=œ~A]P¯,ø¤Ÿ±Q ­ÊŒäI.Æ};eE.'ÐEIa¹ À6çÃ×ú~ìwý qŸ×XÕ$©ú‚ WßA~Éwˆ‡ƒòÖÙ‡‘ÿ ß#üFÇþ5?Ú_ŒüÓIiÒ¸üIg«ÎÌ2+¤(¶Î¢²HH’i‘è¨lÍD*ë@ ú«f]¤hØUͪR0¶¤Mé ¶…XÒÊ´m¸´ÜÖ<•-‡*l¶²ã“í ÑÊ™ÔÅdEåKAôÕøõi˜¹v[J ñ;ÖâÀÒúWbCÊå^ÐÉØÁ•X‹jCg …©f3R=?=dOÀÁmÜ ,ã—Ëóœ%! ÇÃcÙ÷gÜ!;U3Ì:ãfˆùë‘Í»I#½Ûh›lì~ìwÕÍ%˜%!ÆvÂi* ¹¨\ŸMj,žc:«¤ÒlwOpÖ|Ì¿Œ”­ÕÃià—ÒÚuQIWRì+fœgÔÖÉÍÖ#©Ì{µ‰æü~f& ir­êKËZNÁeZê “TÜ݌ؒk¡Ã¼¥‰xüŒ¥8Ç’\jÌ„›ûHÚ®µ¹‹"¶‡›ÒÓ› 9ü¼IiKc‚—kÍ@Põ)$S"†cÇiCÎNú9”ÉHLÖ£¥å\jTØÞ¬$¦«K:Ù‘n«g7*÷>>šê'(ãÝj&0"ô´ž7  (Iåå´ -é 1°¿[P‘-@v/Àým»MýÞýaÈÑ‘n‡ÿÓï¾R–¤s¬ûªq´˜Ù\‚Ýî¥(¾±ö­XßS*èDAT¬Ò”²Ókúbžƒn£÷/´WzÑ’ºn¡K§á¾–ßCIÞÚþŠÓ©n .¤Ä9my1  2¹ ö>‘Ö…‹iÔiòБ¶D«£ôS%%Jô ÇWmYxÇB‘e'ÖH«"|L’’¦s>H$‡’ „ø€íö*¤Û©1Pe®*ÐTãˆ7BAq­èUP‹Ú†D0kyXjP²K&öñ$Z„ BmdòwH7òíqÖÃ[P ØSHT¸sB²ê¼•‹P ¾D)PÖâ˜e‚ÒH¿°n¿Ë@<òâ9Ò€¤4멻îÿHù(xó'Ï}‡•ç% ID,MÉÐü– Dփ ±XŸ‡É-·C~öÁ[è$}í(!>b½Æ“]‰&1Úóò±ü„•; «›Zé¿ÉS¹ÜÆ1²0“-EÏ9‡ÔÓ¨Ô MªL¼Ž¤¥”}RkË@‘¹)·Du5%Œ§¨F›BÐ¥FSjB”‘ôI7Jcø^Jü×#·µ.¹d[qôД>Ù{ZÔ$¯0m‘ʧÚJ6i¡ B!eØÑ–¿1¹.4@@ ÖÔ t¢£™B‚NÏw)Ým.UÒ€J&“2¤¤„©Ä”’:ž:ÒN mlW™æbÚý;БY–÷ÜR‚M’\Þ@étØ^„o-¶¤döЉ öý’EÊl¢-RˆbæLhÑ£yiRš6i$qa÷U“)ÔxЙ ³h& ¨JJ–­¶JF¦Ê"N­¬¦¨PjõsvYâ‰ÐZ‚YåÈð ‘MÊôUY)³$ê~jrH­ý_5 ÆÑiÂry¸´¶Œ–1Ñg±Ò}¦È>)=R~J±X,C‹Ï§ßx”£rçpO¯k©PÔ–W÷^¡Ö‘ŸIŠ9,¦wbyf3ëVdøÙ)›iì/®žº‚IHÈÞqÜê=Ñ).ˇ'Ù”ÊBJˆB~ìø Sl‘%ÏÃ8Ú ¬ž)ÆLä­ØÌIt‰Ž´Ø%NùiBM¼j,¡]N™í¶=Üdüd†QîС#dÀ°i¯d•4¸6¹ù+‘ÊM£§Åp͹ÝÞn¸&[¾¤d§/ÊLÔ) ©@¤*÷I:\Êã«¶§r×¶ÓSö«º|’6b6•‰SÉ:ë-•´¢[6l²B¬:àžš^¶2ãªZ©’Ï«1+eàyÆ+ʃMæ}Ùö#!×Û²V)y(I½”SÓC]n&gj¤Î7/VlùÐõÒµ}$›ë­æhPzUYf,“cÔTe»®´:‘`n£Ð ¥øGmšÃòþE‡VG99LÉÃâÖÉb:×`êÓú%€ô«$D—ŽãrÜn7'•åü–™Ëf%Làxñ¡`²Ócto–§¡Æ÷Î~Vk3€úÕã¸ÔØk}[\Z줨ßа $”Cdù’2ÓšŸ&"Ûv;qÓ¥(e)7JP‘¦”Z3ýÁãSÛr&#S)9²èÞô‚Ÿ¾(Ÿ“áD‡‘€™‹›5QÀÅGc«M™–>ˆG‰ ÊH© ©òa#'xXíÐq-ûaÅi7[ÕáUlAAt Ýj $6oæŽÛ ëáP@‰ÜEôÑ@fƒkëÔiB&¥¥9lSy4‚gc¶ÆÈ¶tiÓÿj~j´+*G…H™6ïÃØ·»±ÀãWýUPÔõTƒUwÛNÈwÿð7"ým‘Xó)¥¾Ffã8Ë_•~3óJUsc\ü„zl–°ŒÆQqM\²$ZMÈ£3TVB>öMSÄÈúiï¸ÓÆÇCYª¤çgɵ‘2e8´XiWÚi_3fäºØ$ŸMEé$âÊÑ0ÖNQP ¹>ªÁ|UêoS“iÐvó²ÊwO¤U(Ô™rÚöZ„YÁGË^„“[[¢²rúÚ v; m‹Í…ŸMp¹œËW¡Ûâpén¥¡žŠZ7û²J«né–¾'R½·ð½Ãñ.̃Ä· ©reÙJËiZÂT³êÞ·¸\ûä²Mõ59\ uR‘¸øZ¸§ ;Ž“ˆžò^Ki [‹S!â H)v¿Íá]ܘâY¥Ky=°²Ñù4ìvfI‡fT•ÂÇol2¿½-J _¢@%ZnM‡ZÓ­iŠÍ›²å¬“{?oêÞOšänLcc.ÍX¬íXYm ¤‘qªMÔõ5°¹;TþæòY3ÅÇívŠÌÂã0 ”ròN-Ä€w*ú¥¾Íjß*JN¾>>Ó”9n-3^mjNðøßh¬TË®†Wy¬b=/5òÝÄgMÁérƒk‘óZ·ëtÑÁÈž7†4„ÍÈ¡¶Î“yµXßRB€9û[N†“˜Ê£ÈÊ­¹·•mépm]‡ÿÔú Éáù¼»’­QÛl'15Iu?HÚBÍþzÆú™W@j;IͧÚúZuùj ´Ã;vyiÙúi×ÑBÈ|ÜvUªšI=/oB£•FCŽÉlîM‡Î-BS%ÚÓÃÀP³лnHP¡¢*ñ¦[ÜU±7¶†ÚÔ—‚A–›HöPü@µA Ze´PÚPTu Z‚£Â ”,•¹ Û¡#¥Hc¦ÒÚNà ñ¶´"E|¶” ¢Ø*OBE͆*P…€•$(€ëBÐ,–ÛØ°m¨ T!$ õµA'9÷ÿ¹|ƒcqÐ8”@þW(µªDÒþîÊ|BDMíTµÒЭ“e_ernb£`s óù$˜l#3,‹-Ũ‚¦´û”-D’µ3gÚŽ6 ì®ädçñضˡÇcÅI|¢7úvÔX[ZÕ¯&Y»›·i(¿v‹ù’å¢kûW2îBZµeÛkaèVºŠÛÅ›S—“©ÒÑÞ1–¤0¤ºÓƒskŠÜ­¤#5ØèEÇ Õ‰BR·J»Ï %#[|õIEÚÚUI&÷·ÏBJS©°¹&„ˆ©)ŒœlØ BˆRÃO‚ÚÖUe‹‘¸ÜëB¦J†›u ÝGÒhIŠ“j¢Ò.tÔP£:F²˜€ü†µ'DÅ_JÞ¢€Í"õ ’Œ€µêQ©•êd*Æ)OC~¾-Kiiq¥–ÖR´’>EVD7,ƒ—i9”39 NÆ3LÙ2™ô\¦®§t‘#‘âsà#ë®94fqˆ²Ûë7Ô=¤‘Hh‰-\_™ÏäRSÇs2©¹xÃän‚$DKËJ5X·²7¿ATÍoe™1cÝt½'avçä9O*ÇcóNM†YÊ£犌û>d7S{Nóí( ŸdüÕ¿&t=5»zÅ -žÁq†„4ËÄÅ{j– ЕB­qq{šÐÉ]M¬vMA©¹æZ'€ó¼W#'9¶¼†|ÇCHAR¤•)WVÐ4öu𬸨¬á‘“%qô4Gtåçí²û›#ÀòÌþn&>~ÍÅßwŒ™%‰ ¨(mméºA®¯­ZGpi­Èá'T¥*ç©ÔüµÕ8¦]RªHƒÔ‹µ™‚ HEý'ìT0oŽÊð|fb{ü£“º"àðûþ¯C‚â\ä ¸†íâ”ØUÒ Ü-d2ñ¼™òaKãJ[ Õô™J'Ê1×ÐÚä <*S‚¾'#r^E’å9iYœ¬¥Ê“%dîY¹@ØVË$W´×ÓPH™Uª$‚ÅÇðj̾ó;órsÕô[GKJ•Ð ²L†eŸÎ‚Yƒ¯tÂÀ¸ÇÃ>—éQ£%"²ƒtÛ¥T1öhH…­R<*< h ®?!–rM±#ý‡“J¡K¿@—ì³ý"¬¯š„2duÄ“"#‚ÎÄqM9ý2Ó@§ðù¯» ¢nUÜ4OËõ¬kÔ–?SuB¦©ï¹·c»Ê}‘~¶Hªdú¯ä2àÿ‰_•~3óE¸qZt«=¬d+2©Mă  Uà½lI²EÅ3ÕŽÜ ‚4 Ö7]L›}šJRíþZÍDrùPWÉI– Ñë{j­‹„?% ê:Ö¦}Òá{v.“1ì¶Á ýÈ5Ì­Þã·—T5sêSrÖPtJ´®ÍÔó9m¶å’$• Ó`› ’kG?o®G©½‡j- 6;šO*ZJ€½sröz$t1wK¶#šä“dGZTþç¨ôt«q{mkdÊò¹öhéO‡Ît9ÿ5ÃñþOމï8lD×¢æ¥%-·ãº”:€-ì€âôñ*®'ótŸANß"û¬Ýêå2&8^7.~/ê™JÙB’7¨¡À|R¶ž"¸ô¿™vÙܶ%‹^%/‹óÜÃpâÙˆ*Iqx™N¶ã`Þ[еí{í7õUòn]86ÏC_Ï“&CëKïŠVBI7µúZ´²fs ÜiN„,¸ItÔ›oEªôÌ’ƒZô–hþc±¥¶Ò`–\%Ä>øUÒãvº-èõ×W‹¯SÎw CèW°1+äÿ[C›I>´¨éóýªÞuг›ŠÞÑYåM6œöL²>ö·Šý:¯ÚWÛ&¶pÌÜž¥x¤Z泚Æ$zô  Pڀ¤ÔxG®Ô£Õ@b®´ [A@*ð ;àþ¶Ý§þï~°ähÈ}ÿÕú/ÈWær^F²6Û/=I%Äþuc}L« Í­j 6šBÍ)ï<£ËûÎÀ|󿧴 ²I•m7Û¢½F„¢E¥ ­©%~_Ý}£Âý(U¸µà(Jc戰,,·ÓjZ\P¶ÔM­B¶3ÞL¦b*5}*Z=¡Ñ=hD’Ñ\qÍþk^QB­kßN·¡ É"’×°MI)ùÍCÊX"á_™PLŽÀMAaT:éé¡e»Ââý~j–93Žò~mÈã%)TLL¶š+"áIiµ¤úÇß¾B­L¯Y-eÜ9pQÅ.éjLÕ¡o8m¸4V¢«uÍhs-ÐévÚêj.MÞV1råcø¶5<…ø@yÑR—U½$ÙVRRQÕ@Zþ5¯ZB“¡|šÃ)|¿”sΟÂÌãÜBTÌ.^/ÖX1PW帢­ÞPAh¯JÍ…O‰§É¬ø?ØnâÈÏ*F$ÙjBš2šm@¥Mº’ÍlFë¥cå5ÑãenJm:[p=Mm˜Öl…EŠü”¤/ÈAZ’M´$3Ï»""¸€´§ÂÄi@˜ÂÉaªAJ¢VO ¦ã_ž„ŽÑ»ÊAuCÌÚ Èé&*U¶UáòЂ:·$4êßÚ•!çÓAì ­^†䈬:úÅÐÒ •ó ’eÍÓ%!· Pž _ª„œZEÉ6 ’+)ÈÑVûU´¦÷×B« Þ•X‚«jû™na9 2Üg(¼p–Êü ¥¶ ´¿[V|kÁ•VOVT{¤ŒÃ=Žƒ)™fi‰Ë£*:NçÐô9¦é¸jJ ýþªÝâ)³9üË(„r ‰Ü5ׯÕГwÚëI$Q"æ÷ëQ$Dž›^åU)ˆ&0I¼1ŽÂc]“ˆì$ ꣩ xr}U!£­ä5Ä_‘ÆøSƒk(5cj*3d$îqÅ j7(Iðµ]4uù,99#Å8ô—%ðŽ8c2Uì©å›¸» :“j­™)…$m:ô¨,b JZ‚bG0`ÊÈÌ  ²%:–Ùlu%U(­”"ñ›*RcpÎ2…J‹îËIkÿ–.¥Ð#¢oòÕÜ•D*ø–@7c>tiŸ=;õøTA3,ðüÛ ùM´ò®BA¿Ízˆd6†8¯"Œµ¡ÜcÁM’ ¸ûT†DS˜Œ«Z¹B}~Z¿¡Q>¢e –ÓÈsN þ™$~u5n6!T©$«k}=A¢{•ûys%)Ø'Ä‹,‘⧘mJ?:¯RÊ¢óðöGîýØínGp8Ïë¬j‚OÔýTƒSwðÛ±}é>Ž ÈÏ÷²EEº3&¯_•™t,Úàõ¬4©ÜnG-“zÉwLAdK±©ù:TAšŒm‘œ#¤ëm)´_&Ò‰6O¼ª÷«×C›šûˆÒ4°«I­^ÕõQ²`ŸÃIÖ•¢N•­š»‘»Ä˲Şvaµ4@7Ó¥hÓÜuòrÔP“&UújµtUjpíù̆ÕÂq(ÛA}²«H5æ¹ýÎøÞ‡§ávªd®¥< )Jô…×!÷¼ÇV½šø)CrÂÕoJE{ÖdFNˉ¡71žÛó 7)„ÉR1Êã¼…4ð½‹$zë­ƒ—nF=¯Äç[^.Uj‹žËrnH¸¸l¥ÇâS E‘ŠÉFRmÝöR·:¢ÉQ5³ÇǦ½Nºº²Ü”œëÊp™Ø¹ Æä {ÝžSo¬:l,zŸ“J³t¯Vkg¥º“8¶’Ôg%‘æ´”¶âÒ,°Y$ü¢×¯5ÜyJŽ›W޲ a¯1W Ôú-Öµ8ÙívŒ™*Q’ů(Üù¡ñ#­(&×*Zô#©'Õá­zþ*{N/&µs%»‚ü&÷g™©Sâ`Ó„Ž˜Æf-삼†Þ* != I'^–­>éñ€ë\–Õú°k(ÖÒørïGn›È9—yœRJff¢)/ÅKލÚî7ÓqõWS·wÎ'/ÙÅtß ÒÍ£Ÿm­vÍT”+O𤩿êÂ}5 ò ƒhGC@cÖ„Á‰6"„Û×@bM¨Àøÿ­¿iÿ»ß¬92-ÐÿÖúÊß[|§1{Öo'sÐÙ]U‡ËX™•tÀD¶ä½æ›ÆP¤¨Ý@øüÔ,‘akZˆ°·~·’ÊQkÝ’°T²4¡V‡X$Ü•îQþÈtX›ôU5E©º‚ätTerKÜ£å¶Ò’/ãbjd£R>†¥ÎǾjò–݂m{µB'±o*L(Ò[¨C×PY2a ½½U!‘k€?CßÍMàyOe=Ȩi€áÛqQüêaÇæ^ ”TËLZQ:Àû7ù©%œ¦Ð0Ô/sîç©û¥¤a÷JfF„ ¦–í‰µÈ Zÿ=„¤ÉŽÉHÑ#ÌŽuO¤^€]Ô˜ÎâC«+}^[×7;/Ò¡°Ž^Ვ#†r^T»8î[=”ÈJUϲ”ÌwjAõ6­ÌËE,£óŒÿûöâ2Ýi2bIbS AÕ;TË.'ìíP®o.Ò“;=²º’<¸ü ‰–Ö>EL¡ˆJ]™e¸ ºÖ¹¬X­½A½–•«’®çvçCÄÏž¹xÃ-`c[.[ •ªJR¥¤{^P$[©VUHM˜­dË_ÎËYD¶ˆ‘y¦Á@(:cº•§ú°ó¤V~-ÜÉÊçÖ-í¶O˜Ë+  (/Óq{×fdç!®VÿUÏ÷…þa ¤ùÇijö¤éo T„Fã¥àžöˆ#ϱ¥{ê¬bÒNÓå6:©¯Û¡Yi%yEºÂ2Z@ßêùª "¶!xܳ¥J eé+hƒk’EI0NFp¹;Š7RÛI'ÖEA"rËe— È;ÁñJÊœ†dâ¹óa¤n\Uëaê©’\”—ò[sF\涓Ш‘ù‚€e’i c2 C…`¨8×mÈÐP ä¡1ò¥4JL‚´:oô†ÍÂÿb_YM` ?!›RJ¦ötvm'æ©’±©˜n¦Kí3Ø)#hÕbË>ª²4ò-Bä–¬Ržå-Q=ûÝ÷0¿-S<µy[ÿCæ[mýWªîÖ Ö®%­$ñÖi -m- };ÛR’@P×MúЬ“ I:^§pZ™‘×ÓS$#kpäAÅ97jÇ$ÚÑšÁ5k—a Cí§Ö¦ÎƒÕH”Sê³°¾ â;ïë$a©[Â@a÷;‹ò%8íÕ¯ ÇX·€5ÆîÐëöêê+ÜÜ\€¹³q-"s³>{2üÌk§” Â{lˆä'Ú)6PYJ‡³²k…ñÅôá'‡›toÐrímìúXBPÐ 6Bms¯[øx×ʱòýç#É’Ûœ˜2Q’ÓqøÌÌñ¹8d1ó-ˇ!ÆÜIÖÊJ½'?”Õ¨áúMK×Ò|¼ø”øahÈs>˰y /Là·öWmÊR¡­F÷µ¬Ùù}/²|_í,<ž¯¥Ü}%'¤Æ~+ïG’ÊãÈŽ²Ûì:’…¡I6)RMˆ ×ÐñÙZ²µ4`ju?&•‘6ëRAå <¨ Å]hGJ|=”„Ú€ÀêA ; àþ¶ý§þï~°ähÈ}ÿ×úÌ1ÂO$äÍRk39ÖRU!fßn±7©•t…ÆA/<_p¤tzª—L˜j’X†DÕLßrãa²@â¦HA…îŠwk„¶âÔ°Ùð*ÔÔÉÛzš‰$‚·%T Àð;zRDÇyIu–Ý)Žñ$µèÝÖÆ¦Hdôt%¦ÐÚ†À À ‰,s(mˆ‘’‡ vÕªÐn¤„‹ŽžºIF„#µg[TwßRog-óБtãšC/±¹e¹;‹¢ýJ¾—Ù¤–i°Ë(i=Mζ_@uµ¶¯¢°R~CI!‘®ÂB‘å)KSV±h,< F\6eoTØûÒ“¡O¨&ŽÂaL§w–£w õQõš™"ˆÛŽ0┢¸Ú²oÐÚÕ êJÎkù ½ÎžˆéžÍ©’¾&b¢K™‚=5)šµV•‘3JÝBÄÿF¬Þ…`úØ Ö&Gf×Ä3ø¨ü¹üÞqøœc†­°|å °÷œ²6‘µ×N·ÐiÓJâs-jdN¬ô}¾‹6²Ñ2+”ð.CÜY²\õxþÝðÞ"©,ãa†ÚnS­©hiД¦À$y§w¤‘Ö­ñ-½YNOr/-mª9ÿ¸˜&C´XÜÆC…ŒòùFQзÙ%%;V…  ÄŸGÈkwK~W‰Íåc¯ä»ˆÊæä·••˜á¸Ñ[Ë$ôÑÖÒ4]Ïíp0O±œÉ­®6 ¼Øç«l·´”ÇMÕ±GK:Þ¡ÝT­½­¡]•å½µâük#‹{,Æ7’e廑ËG!9À†ØRº¤%;¾R£ã\N]-kJèvxYkްkžòbæå±9ñw™È*Rϼ¦3bÊ ¤úkS^¨édȬ´e·¿ròŒÌI1 ®s*9™‰!-=!…0Ò½!)R6Ö×­šòžõè52q–Æ×S‘ù¿j{‰Û™’ãrþ/;˜ÒSÔ‚¸Î,)I Cɺ´o­wª´8 šæêߨÐT5,è>qRLTn ]JPMº›Z¥Ð쌮;•vç‰ñLfòL6˜m>ü8$Ë•/ï®…ªÄÉN¾ƒYJI¯ûýʲó\ãœO$Û1Üã°ÐŒÂB@[ ,…[©›ßÑXîËPç$;±GØ $ôŸ©qT,Wª€q3óæÅƒ;ߘòen¥¨$~mMz‘cdOÈÂ=ÁãX¤(}IÆfBDz¯¹>SÉóœ>S…DŸE[«ÐÇ%¦S<ƒ4Ìä)„éFþ»¼Õ\ëéê*RèˆX&Þ ‘ºI²¬|t˜’«Üéè 07ÒÚDU–ÞP³6 ÉħOÓ~bCêYôóT»‰* JY$)ú.GçT6Leù,ò\ ±}鼌UFÛÔ¬< |õj¸"Ý w+ãü®SÈDL|õÃúÎ`Œ¶ÂÔ’ßœ ‹[­vÊ&‹a#r(½ûì“sX˜Â?/¸ß˜B€Ûõ¤kÞ㥪’ÉÐýATRwûýw¯üB䟭r(_Ö_)ù™ÐT£«#ä ±j’,ƒ¥ •%ÚÓKPËTÊ"~[šÜÏ Á?É2ðñÍ6KhTÇ÷ ÞÇ_I®Gsæ®6'gÔê|?Û-ÍΫÊëòH;oÛÌzÔVñÈe°”„¦×·¯Æ¾UŸ•—“fìå[år0ð1*âIAÐ/öþPU%IMútÒµÞ…ƒ¿Ýäêh.Á`J‹.3ÑšyÒHè}5›‹žø.­Wzü©ÏÃjdJÒš<ËŽ=ƳR ¬'q,*ÝSà>jú¿læûÖ%o>+ñh}¿’è–¡UmP>ºéîpyÇÔšjÖ¬NK×BÉŸnœç#qþ7S²N¿r†Ñ¥ÜqgD¤_Rj–¾Î¬ÙÅŠÙUÓÀxí¤ŒJrp©m<“š*:f:¹ï+Ù‰: l›uú_ƹ¹³Yôg©àöªc®ª[ô›Eüm{ù…Ƴ¬NÉr\4ÏyÂKžêã!Ió˜iô&Á"å§QY0g·¤Òî}¿]Ñ Ô|¬ä\s;ó“0ùÌ\œ&RëHŽúT…‚……7 +¨Þäyº§GòZî'8aI(ä³=€”¤ªöé{ƒzÐËÛxù~µS:x¹Ù’úÆáíï*ŸÍÐö#(¿Ÿ†Û² -âd¶‹7q`€n=#ä®G#µâã{tI/©Åæ[6–gYv±r¹_ O"å0Üo†x”GÙ×Ðl J´!&ö..|+À|Mñ5xôx0YKñ^3sÐ)Ïǃ¼v9¨±¬ v¡â}5ñnw-Þеô¿I|Xt‘ŒÐa{\rÖè~ZÕÁ{br‰ËD\açÀ²¯n–ù+Ópùí£C% 33š6!C¯æWs)d‰0:Ÿ.~;¾£¹îóp¼hnTR8?ך:&pHIísÒ,¯_Pø?â k‹•éù/ý?‘Fä|›'})F'Ƥ£F5$š‚ ½é@xHéã@'»Õ@z~Í‚M(Âøÿ­¿i¿»ß¬92-ÐÿÐú7É¿ýçäûÒgÿ×]`}LË ÁEA(r^m„ùެ!=.i¤“h‚¨Ò€zÙÖ 1Ϙ†P\qA H¹Q Cö—‡n•‹¤H#„ÒEÉBEÊŸ1Âǘ탭ºTÁ GJ€…¡adzèAü|) P+¡½H2ßë¨% r+Œ¨®±)†e$²å¯¨P±=ê]w"{œ‘*gæOpI®/zqò%@ V¤õÄÐS(ç!÷²¯·í¹•aòž&ò£rÌBüèúç£é0TOEýšV4åìµ$­¦×èX´p\j³œÏŒâJw"vI„:B€°¥_æ­TVݼ’9ök‘ÅÈÇ’‡ù112ßh…%AJ‹À€n.ÑU]”Hä~àgåreȲòW¹Ù²Ö§=èmê½ëŒµE1&ʽ@I%J7ö|( çoöCÈey Ãr8Ôæ1»¡’¡åGökæ«T¥ŠdX™¤Ô3 J›!gËm•’Mïöu½BõÒƒx?ŒãÙñžqž…‰äl! ;’Š¿0º„‹= X¬kŠ»¬˜·4ÆRû_ÇiJÆsøßT‡½<)åzÉWdJ{;žxŸ«2˜ìš@ºKO¦çìÔyeüÁŒÞÑó¨ÈÜqaí ›4âVmò ÞŠ”®Ë"¿`¦¤ƒ{†ÉüʬA.È›ÏaòY\6',Þ9ôÊÆFF?-ËPZ|e§mmB‘`O¤U¢T™AZ_qhoËZœ%-€IëÒÕT™-›‡‡qÖø”G9ß)´«­õ,ÛÎvRÁòÖSàô…ý’µYFçB™7¸œw•Žžî..âRÓK%G_¤µ›’OO˜<´tGÂÌîwËûËÛ²¨îr V”à¥å&;¢£6Œ‹-.x‘Ô§ÄGið*ê“?H5ˆ¹©;ýþ‚;×þ!òOÖ¹/ë/”üÍFè*ÈêA$Ú ¡š¨’e:Љ2Uí XRMŠ¢§ŸŠ·wƒUwƒ[‘Ðo‡¼*]T²°Ÿ’„¥DkdŽ—õ^¼Å9íU=¡|8¹/·Ôú{Âðf4HënjÄièë­yŠÒ*çÎy.ÓÔÞXlo¿§“v‚të[Ü^³½/ÉåyNQC¬ ¹Ì¶–ŸŒÉ6µÇ£íÖ§3å=OMð·w¿¼*·¡ñç¿pP‰Ñ\J~ùr@¯Uð¶Gµ¦v˜xkzÒë©ÎÈjÝuÖ½¢´Ÿ*xÇèÐUn ÕkZvË•àÛíëkŒ¥XÎF$®G5¹«Ê[ Cm¤¤úu5Íå¦Þ½YØë‰Ñ¥õü 8È÷kб‡ÇKž3ÜAù^ý‡É4×ÞŸrShQC¶%HZwmÚ­AUé‹Þ¦¶~W3X¶§Dö‹4©‘2ó›Šæ73±Q¥™T6ë¯A=T§…|ÚxV¼*½šòÕ+.¤GÆZårÛža†Ë39ø!ö€º›“ÎH*EØQ¶¸y®Ó<÷rÀ±¤Ñóû¼žR=É(†™o%¥Isè¢þ$ÖþKº©4(Ϥÿ ¿œpù]ÓÊfSÑø¾2JBB eM®C€h½ÀÙ§[øWÅÿ˜_äÅgÁÀµin~¦ux¿,ú4âšÇEòXJ[&÷Jž½>ZøÆl–ú›ÿZÅ:|Ö›[l\ð*i„ꢈØJ ¾Iå³uô¾¤ž·0U= Xiå%‡C%Zh/Eoy.ªQ«t™ˆÍ©Ô#Ú½@~qö­VÇȶ6`t,Ù`å±1™&‘*A•Æ™ÍRãO$¶´+Ô¤’+·Åî/^¯Z¹0ߨ?:èíû½®îw/á.(®>*r—‹t›•Âñ”O§ÊZwzï_¥;?>¼Þ-3/ôøœ,´ÛfZ uŠÂf¬PÆÞÄ‹PŽ”$kzÏI`4 WZ±>¿ëoÚoî÷ëF¡•}ÿÑúÊ'$òNH¦Ð¥+ë¹ÌZÝ™ ŸV•…­L«¡zT¹¸ -C¡I¿Ú£D˜d\Œa{Ê».”ygÄ¡­¨‹"u3̸ÑTÝòImëèl/o–„“ÞR䏨HØÐ]üH½ª Ž'kRƒ+6ùTƒÈrÝŽÎ5+fÌ<–Ú ¾¡E:iWhQ’îKu£&È‘»r·i{ A#´OJ™ˆ[Nçf$Û>×7ù*¾ N:–3k$%B Õ=µV`°­ä¶ÚœQ²P Qù*©ÑdG†w²ò“d¤®Š«ATœ˜·}¨á*÷bâ‰û²/aQ˜ÂfM×1Î:ÇÞiÐÓé=AÜìÔ¨ ’riaL2âÒ…¼ –~Žž‚$ÉéìÂ+!“ÜH›qér” ”6Ó@©n)G@EÍDI)Áñûºüã’ä§£†Hìö«¹ñû«ÛxœÏ”ÅrLr‰ñÜcKi6}¢J®ž‘cãXmX6êåF Öb0§â¤'_˜U,Xk’”¸Â2”©.¾†• ÆÚU=2O¿¦a6[EĬú© ØÂ•¿ï-ºr3…µÐÚÆâ¡–æãp$¸Òö))$ŸUB!‘“÷Ä-D)aÿgëfÕiÉD™lIRHa òV?C¯æZÆj ¡™l¸‡ w6‘Ñ*ñ¿ª¡¢‰Ö­ T±ì·]•)†ˆG»%&êû¢A5tІu½f5‚€ü†ªÚÖ ;¶JR,‘I5•LÀ4/´ôý|•%l´#Á¬‹¡¢Ì¨È:?±3>«Êr ’˜Ï(²¬*”¿³¢!Å"Àø„½q\îugk:·.˶]åä,rü_.–².d¦=–Z@ǘ­ªg¨·[šÔ¶ ]Õò+'êåó«Èå2è›!O¾©ÅÆ\Y¿°¸êt$zIºX’Hò¹²;ÙpóÞf3KBþŸÜ+PEôûTkSRK9˜/6ã‹gËHH(>Ⱥ´ûTHªC&¤HváЩRV‹Üíñ50:¾„ëOÀ^àà;Ò° µµµõkB7¤ÅÆ©šðSeÐ[oK¬Ž”’—²²ÙU’€ÂRO”ÔtéWD˜9•mÔ¼â͉¸¹#×òš˜*açR¸ÖZR£%°ò‚XÎ`ä ѧCt{m:ƒ¦¶6=A±е\?÷G‡·À¹¶G j{ûLdpnWs)}€U÷Jl+ÊYv…Vi’ÕÔ_´qÞÈwŒÃŒâûî%‡Vv¥+,¹´“á­MQ6:‡ ƒîž?'™…ÇÝuQQŒ¼®IÉa{ƒm#siFâP’=ZÕšeQÃyr|Õ¹më’éU½%fÿn±3"ë»­Hl“qmD‚ó{§o¹ ¤›9“Ê„=ie>¯¶WZT£ÕŽQ!\[‰D“A¬ß-óT% ÌUåÙ'Àº°­}“µÌ×`•9¼¨•r}5¶õ/ hfê¬m YYˆG‘çKaWfK¬‘жµ'ó Nö!èå\‚9JØÌÌi@Xê¿<ÓsdmFÉÃsÎ_Š€ŒÎkÉLU ã±êNȵÅý¡¢ñ««´cu=_~¹‚Ö…†¡Ñp[,¤•§Å*6Öõ>j#Ê0—™VzþMƘg™Ç$+?ŒCiP ¸­¢K‹€@Pð½Nh…7•K–îŠ0ûî>e±#!%åÜ©o¹!ÆÉëµ-*,åµ(…êÜ¡¬eΆøfåü‹ ÞnÑàqyWab³|ÿ§+³`úU‘ŽÙJÏR I«N„4~žª„“¿ßè#½â$ýk‘Bøþ²ùOÌÌc «DÉ–uY6"ØS-Iv£ä¨lØÆ{.\ð¾šÖ+½ Ûêm^ÍdZÅd¤Ä_³±Ä¾ßÈE¾B+ÇüCÅn.{/†l­ŠØWSèÏå‘D6ñ²É×åµy=ÞŸ7¶Y]ÇsQW•4à(Rn u;wp®äñœî%Õášw½öpÄ0ðÜ<ò_ÒÿF´;—)roìžßàþËmë-º#äïu¥7™È”7í¥“©õø×£ìxk,ê|_ž¹îª¼}€Ë«GèM{EïÙy­ž‹Ð¼Þ5Ú‡9 €)ūٿگ•²¹}YÐT„SqR“/’òeªê-Æ„"(ô ¨/xOõIÖºœš<|lqâÜý=FÙ­ä/r, W‹­Šc8iî=祵)¢£¡®¯¼Q(5n‹öé Ê› £j·ÂÖù¶×;:ÒQLÎ]¼gËäåäã¢.CÁ?KkI*6û·Û±[=–5Õ†¤ùañàÌ<‡2à<ÊrÃ<ŸÊÔ•-pÞ*¦Ù!#äWß—y›áßÿÛ´|ç¸WmþS„/ÖÕô4s­Ôò¤©‰6 0Q4$É=*<=jH0V@+­JW©d‹ðÿ[~Ów¿Xr5RŒÿÒúÍ=èr|ï–ÌœÜÓ% ÛvÏ=v??ck^†dÔ-ÆuÇr­¼”Ma)edM­Q¢w!èT§qH†¨Ä>Ñi+±!  üÕ;['r'g¤9ÍJÒÛѬë $h¤ø|ý*6´7"bÞÛHqÄù‹öUÇÒ5WWè*¬‡UæB’ÓjJÖëjJÔ‘EGè'z0wzØÅ¡ ޶”ðÜ4>5}¶ô[¤=RžqÉèp!iu$DYXÚSn—ôÓm½¥?ÖÃ7‹’•7æAl¶óÓr$kê¨Øýîªñ$Ù~TÊR†ŒpÝÊÓ{îÝé©Úýn¯¤˜yد²ó&K@:…&ûÆ—ôÕv?Y;—¤a’ëM3 Õ²À2<ÄØ¤zúÔì~‚—¤sÆ¡L˜´¾Ó¬ÌWš,ân•ZÄj|·è"Ö^‘'›aXù-¦[|—ƒêbmp võô ÐMoë½.èB\u6¤ûIóJHéãSåÛÐFïYÈ?ýÄ/³Nñx•–îÕc[d,-iÆ y’Õ¡:±£*Ê­u1ÞÈøÉ$Ÿ0[]áWùµ™WpaÔÍ|m'Ç¡üê‚Iþ%ÈÓÅò/XL‹b>^.§ÙJÒ´,Ô¡IÞ"ãÆ¥8"ÊQcS™&§MÏ@ç J÷܆@•$»Ç‚VâÂÆç\›øÖÖ ï”ir¸ÞrÚÉüg`ùrpñ¹–Lœ·ž˜P$/É[ï2ðeIèQê¯g×\.o{Á>Ëhÿ½ÅâZ¸ý0#Ép¼®n›Ì’ÞC9#‘ÙÊ%¼ÍÜ‚eI».<¤€>þ¦—Ðuž¢»89;±m™O¡¥~*ó·- PÛCÊO© Vv I¿öK¨V›Hÿµ¥Ï¢¿=ÀF?7Í{q›ä@ä>³Ä–Ór£}íä¦únuµ‚}MÕ2&àÉ‹"]O§‘3X¦ã4‡òФ%(>ƒôE¯Ö«j[Ðfó*0Éæ1/¥„5•‡÷·Ðê®ú‰7#­JÅo@Þ½#w38“’ngÖм´2[#Ïn÷*ÓSå?@ó¤N&kËÓ\^ZL‡|ÄYôi :úª7èe}'³ó¸Y1$GNbVëjJIy¿Ù¨XŸ o^’1üæ1ÄÀR²ðŒ°µxG@›zjÞ[ô6¨jæwg<û™˜§£†mç¢ýMͯë¦ÇèeXÁŽGŽ„Å9ìz˜oD¿ïݰz¯ÖžU½z¯•qÑps¿ðèþQâ±*è­JäØG&>ã9œs¡!-ªò“p.G]zÕ•,ˆwGrUÌ@~CV@I¬ïdj 7}l*ƺ²=óÒ7^¢ Þ‘‰’,l/z¶Ù+|Š¥^Ñ>jÆ‹r*ÅE)Fõ9d¤xÞþ’ Ó•ÀþNpÈ™³&&;)ÇØU¼µ¨·t¤ýÕ¼”ëö+rÌ”#;jFC–bW½r9.Ÿe>ët¹ %]JÙÓÓÆ«å¤lß“}±%ª|ä§92PûâÚd%‘÷JJ\`û)CìUü ba™|ÂJß ¼u~Ý|=Ud°”¹  ì Zéòt©N@ɹ޶à,8 µ éBŒµãa¥-nqĭŪÚ&ÆÄ~}Q•ñ1ÉLxCeÆÒ’UqôAû5d‰)òæ8òÉS…j°ŸUÐ#t¿[xU©Iyé5«F,e"ߦqw?ý«P]×L¬Ï áüÒWšþ ÷~ëÈ’Ø• ñMÉ?=Y­áù$âù> sÎy ±1¯=ñ÷QÚµjôpË[¡ÜA¯®¥‚·¹@誠l^Ù)÷ó™Hm#z28«&à]>èâÓ©ô-)5—Žñ$š8—$Ìqö 9Žy9<3®;޽ˆy‡€+i$©XÜ>ZD¢©¤kw±yV¦{“ð_að …´¦ÕtŸE­T†^QÓ_=»ÉCïOhsyôŒ|HÜ׸ 8BïÖ ÈIÔ$_J¾Ý ;j~–+cRwÿýw¯üB䟭r(ZŸY|§æZ&‰­2tÒ‚i“áXÙ´‰FH6«L™·J‹t6hÇËZE­X,lnƒ1øæÄVÇ™UÁ#ÄÔäa®jº³c‹Ì·"½z£¥øoq[“ ;$Gu?M¥[ä½x^wg½סô^?ͪµœXÚs!¸yRÒ,}¡czæû†_A³nÛûÝx4Ï-î:ò8Ûo™/ºHS—¸7ë[ü^ÒÓÝb¼ŽñÇâãò°©4vU[üÅ«ÚR½¥^ƒUUñ|Ì+ÜÍ+”^ÙÏ›Ž‚½6¨Í¿¶Æíu¬–Ri!ÀPèk FEdOñžK—á¹Ø‹#ÝòJIÕ+B…–ÚÇŠT4"©j«(fZdxœ£¾øW`÷7”À­¡‹äµÖsIÂ×”ÃÚâ¡ùØE8„]¹2¼ÆœJë¢}«t‹}ÁÏÁ“•…Ò–Û'ž|'W»Äè씉râýdÀ÷¸ª¥L«$ip…~rïý—‘ÇåZ¹,¬n`ÉD½f˜Îòd€âÒu¨ðéZÜ^Þå3ukªp à‘›—㬈ªòTz•4°möMl÷n+® ^ ¬ {{Üú Û¢Oú•ÃÂô)a$3•kÚ,Ù›}=_u­n*¦K²Å·ìù¡)WAòú-JG‰Œ«÷UÖàöû”¬[k°TÍ¿þq €?쫵ٰÿÜQ¯Ij9gÎ?ŒÁçñËÌޑ嵓h£ÅAMÁP·Éjú÷òêÐùÿg+»¨hà"u¯¨N‡žT¢ ½H< ›Ž•[b£èëVD˜ƒk †AééPüjJ‰ðù·í0ÿß߬9€ÏÿÓÕ]ñî'8…Þ¾ð‰Ê2âDæÜˆÌ!â†ÛÉHJ‘àUÕŠí5‡î—ÏÍ¿ßvKÑý}TÜ631Ü®}ÿ²øuT«¦G¹ícjùnMB÷Û窛Ä@¨îGKÿÄ9ýyŒ¾ÃßË~\uü§Éø‡?£S½§ƒšòÝoÉr'ÿHsú5a;@ó.Tzò,‰?ýáÏèÔïb g*Ïe3"µ’ÈHža6¢Ê¤8§ K¤nq6¸Jkœ’´)Ò ¼¢t;Ó¯ÊmT@U‘µô H‚€?:ªd-˜Š±óš–™EòïwR’²)P$xVM”h¾9È3w?ÛiøuÿF®¬Èº³Ùƒ×+/ÿ ¿èÕ·¿H„cõÞZßúÒ_þѦçéLg.?Û9øeÿF›™W€™ÍeŽŸYJÿÃ/ú5™;R0úç*Û)GÃúêÿ£M섆’òyE·¼ddîGýõѨveꈭòz[#$ ÝWýÏÒeHÅY|•öÂNŸ÷ÕÿF’ÄýiÔ‰ÒÍÏßU×ìÓp?WõŒ€ ? KiÁÕW½bGRøì€2|MÂØ¨`zoQ&E„õÆÒ––@¢erãU¨Òý+"èsÑ9Ç#¹3a£5mîÍfÄêJ”OÈ5[t$¿s,ª'C†KŠY’¥8²MÂßÞ¶5bEVóa)[ŠÚ›§wÎ}“ömR >ýíÌJ—q£H )YOÛò÷|ôöÆÍ vã¸D‹^!¬^`@–´<Ò%§òR¡A3‚î5&¯‰¯di`×my.Û.O ɺlR~ÿ¨úþ’]­IÕAÛ¬kpñXßsh9Èà,¾¾I‡Ù0äRÖ­%Ä’‚ÖZèU±ïp;&žeÅq<ž rþQ˜éo2ˉA[ŠqK ±#§ÉTµd•c“ùh³Y ¢;©—½![JJJ}­¥&àkzDZ—Ük¹¸<–4­3!8Ê«ƒ¯Éj4ÉP\xtO®±|ŸŠ#I“££!ŠEí¹øD©Hµ6¥ šêVú1×k# ¬? Ä8ãŽ8v)‡’-ç2£â±5*¥^º‘Sx×\¢Œ/mh_BûJ@O¨‘M„îü„’ùQšÆMJ@)J_Qù•j:ú Ýé!äp¾HÒ•²xºiIXûF¢,7¡“xÜÞ"\9’1²b>‡RKjµÐ ¯EJl†‡<«ì<‚òÐ\ÅåI• à4 tî-ŸAI$FJ ޹.!˜í©çBRÚA$“Ð*³$¸HÝP8†KŽ`@„ãyþNÉŒ· ؘ0” ¥ïQè·l‹ÖJ¦Œ.É–þÚÉÓ"FËÌåkrL½H-ý4RȽ‰Ú®‘G͆L½ﱲqò1\i(jXYSáÀ=²]P jÝzŒ»kÛ^Sâ#¶L¦Qy\yÇäÁZßó^Sc$Âѹ>©¬vFN‡è†±’j~ý ÝŒï:}<‘ïdŠ‹tfL?^¿*?3I@lÕqZNÅÒC„.ÖÖ²í(®I°ï6—V%ÙzÖÖ¡£5n8qúÄêgÞ ‡¾ø£zÁz–­õ$zÉV¶7ÒÕ‚ÔMXò5Ñ„‡,æ*Þ‹š×¶:ú ºò.×Vgæ{mŸEj^¦J]¦6ÉHÑZøkX±SÚ/›&†•Ê8U9Ãè65èp/`ñü»MÙãj°ÅN€·v›ÞÞºD†à,,ìWQãTµ ­äÍ©oĄ̃®4¦Ãí’•$EMC3+mÕu;×µ‰çÝÓínbL,ZRqψÙ•±ì’’¢†FŸA ­¡'Ó^;¼w/=k{Fí~CÑvþ{ÍX¹©gðÜô<Ë0!o Å 9r‚ÙNª$øm±&·Ÿ;Ãæ'¡¹–“Ðê. ßœ·) ™ hdî$©A"ÅWôžµòÎéÙ_/%²«{LçÛ§KbòݹîÃe>Ä””oSíY…¢Ú[¡¸&õæéƒ?&Ü«Ùô•ymŒÎkWƒÏãò¸ybsw­ðã»T–ÔÒ½“ô­Ö±s2<˜oM5Z¯&IÌü¹Ø–š\|\‰¡åŸ1æS¿b5éâo\n¾]zAl¹®5‰ËýéKq‡¶Ým86(– ‹Öââùn.jÚÒMIÇéó£¹¹Ò-ùõ\œV” ®j>óå]³Í!NÎ9°<Ù->À5Úør®ùëê“c›ñm1™´­^Ï2äÛ#Äw‹»í‘_Sø¦^Cð“•Þ´Ž×Ô8K¡‰éR h z  ‘n•I LØòÕÑS€zM@< ;à þ·¦þï~°ähÿÔçþ’;íÞ¯ñó‘þºH«"MP}:ÔÈ3Jˆñ½¢VOª¢ n6ëA~º™z#îª$ASqaåÚÛ¨‘˜yòµ”¶zzêÈÅ’ÐN¥†Ý@gèéì+Ä3Mݧ$S콇tôPÌWWZ oW¦¦ °e½^šd­.mèùi ¨åZæ¾PI7HÇÙHXìà…Vú!›°²Î4 `IXºT…yjØßBEª»êŒôâe¿J²^6'.ó!Á ØuÛ¨¯˜‹{ŽUÕ Ý‡-*ÚãaÖ´þq4óopÊü µÚ,KerÍåy/1a¤;-Û8˜ûJyÖìÐm•_åu¬<›·G·©—õ;ÚFk¶ØˆØ¦ñ\»ä˜)~*å&Uœwr’ò*pb¶Ò‚V ÀIPÛºþg•ÆÉt”N¦þ^Æ“®¦±ç<»r¬ÔßÍãdÁ‡¿i—Þ×uõ¬”¨ê§7% Bt²¶«îªxT¦¿ÞÃ"YAAБ§Ñ¯[LÉÕK<õø9ig¦†œÈñ>EbŸ“‹z3Hh"C‹ )?=úU¥zJl~)ƒ‹i/<±å$êŸMÍ´ù*Õ(ë©kLóip¨>¯M^ Ú`\ñôP£G¦–ÔPž£©ª¶]T„˜ÐÊB÷ô¥ÈŽ:ûgô*Ò÷õU–¦¯1[e¶uFÑËðvÔ ˜ç@'T¶¯Î5m§”âwǺ2Â|Øå–ä´¦È=HÐü†ªÓ=O“:öXÇ}ÒA=E ÚJg× z «/Q2Sc®¦ ³Fú ­©@~C]:Š×G ÊÄÁû.¦$ÅE¾z†‹¦&ù³DzMMQ‹;öFÿ©YNj6„•äæfHN:d©uÀR›ú‚B¾{U ©žp²ôˆ`îLwCJõ)w¿Øª¤d K*rÀ—Û… PqÊ#@>]jÆ+‘eÍÚˆŽ¿ç‡Õh¯ÞÛ‚ŽÛ+ä$U Æ™w’²!e Ã|©e´FB†›[Ýr”ŸAÛTˆ,ؤxï¢,VV┽¾cÀŸ ¨OÍRU¹$X;@H×h1 $ƒ»É ×íÔÒHécÓ¯ÿO’¡‰3S^bÔÍî™-©zí§Û©‘(_™+ V•:„*;¤ýÊÆˆQùÓD ˆ˜”,2ÝÊ¤Ê R Ô%>Ïç^­ïFü ˜¾<ÛͰyI8ôºêö6—aĶâÔtÚÛ+7ôT"ÒsT¶%A›/1T¸/8Ħ®×QBÅÇ Š¹aþ?šÀJLÜFVN=öH[.ÇqH;‡ÈmVVd:ÉѼO⟸W&a¶¹t*Ú£d‡ ÐÝIúDúë%n¼Ln°uîµÛÞLæ)í¦xÃY&‚FRSç&ÀÛÓªB¦¯£èWR*w á\‰ðŽ6Ó1COƒ Ä24–PÞÔn7Ü Î¢‘$nƒUrþÎe0\‡•âx¨ÙÇ’…ªlwƒ*iÛ‹·åžºßó*»a–™E$Ô;Í+LH“f¢ØGT]¼°•6¥$’E*Ù£ûŒÎ>+ȵŽd7í[-m4:i¨±¬VÑ™jô)‰ RC–)!;GÊ([CNœÑBZ”òMú¥jüÆ¢IмaŸîCÉ‹‘5æ– ÚKŸÖ–-Ö­VÙ‰Á½øÏî Ñ*PÁYÜ™WÚl­JÚWì•VšŠÉħÈgŽ“ãØü“иÇχµN¼ÓM¼ûˆS¾Y ¨Ü$¥$V‘Ë<‰Ó–‡–‹È²œ©‘”û¨):- µIÔZ£t¦¾å3ÎKi˜)ÆãPŒ#{Z\•)c¦õž¿b¡êJGœ`òFz–äüFTùo³BŠ›Qú.6/¢‘öÅ’àénÛáyì_ˆnÒ­Ì¢ã`šäœCÞ]}Ä¡ÙøaÆÐª”áXxš9OÐ}c$Ôýú;{Þ…~‡‚r3ö1’*¶R™“ ‹×åGæQO…Ô`¬\·“½­l˜7,::Þ…ëba—zj*¬Ø ºÝ¡½a³3®‚ ¹wXl‹¤I4¯dýšÂÌõ¥_GÕ­`±±S7]Ú¶õ­k£?‰‘‘¢¯èªc¯´W=´5,å1Û¦õÛÅÐòü‰v2ÒÖˆ«kÁlt“3Åý%€*ž|x»Xt¨‚§ÍX¯Ée©Æ½ŒŽÒt¹#ÄšÅNClÏl #ìOcƒˆío¡ãì^<§ñzHóÞ&Þ;ÖE~nøÓ“—7u͹½|ÇO‰ULzÁâÍIzf[1¿.Q\¤¤úÔ45±ÚûÞ_-aÉoe\6MAÈ܃#ñ+AÚo­{ž&¹- k‡ÏN¼ܘ2—KGrT‚GJÉŸ‹\ÚYJ0:ʃqˆl¤IÌ«Ìh:´½ |µ·oût¥UÀå|8’n†¥°ÇCuqþóÀ•0°ÄÄ„Hx´Ú/÷JkÞû8ßÌšáeìù°cv^‰úLV^’Á#œñ¹Ï=¶%;•h.'ǨµþzÐxù¦ªHгá¹jóqÏH’¤°ê·ìÚá^›nÖn:v¤YA[(9×â*[Äc0̪êÈä¼ÒŽ·C(W‡ôËI¯AðÿcÉ{ø%¡»ÁÖÒú#ç÷ĆJZrû à€ŒxŠ’ŸoÊp‘Ò¥Zê¢Îêf}£”©LFáÖ•¸ëìúµ³Léõ9¼žÑ’š×TC¸JžqFà…R~ZÉ2r¡×©žû‘coj襺ûÈ[‘ƒ…>C-†ä,‘¡û5±V ð÷Ýrhº³]ò>TæX*,t†áƒôȺ•cÖþ†Ö“Ðv®Øðkn¥;qôÕ$ïÄ å‹íUìz«eê0$új$´‚’ ýmT€ü„º¯k¯‰¬ Ì­HŸ˜‘ãVƒ˜‘ž<*+ç ¸áX±Ò¦¨Å—#hð6I}Q«š¨Ø\2Kl¹•`›yÑÒ²®ä$,+ìo½Q’º•N@ê•-D©HQ6ìQ˜¹LW–S½*öèJJSöÍJF+•¼›ŠuØêY7ÓK+KŸœëR”ÒãDe¾m¹Åhˆ 2͘™YÏïJ¾ü·zÙ:›tµª¥K4x²ÔÅ’n„ëIþSÍ’’|i#¡ãùäñ÷`ÏTFr~SÉ/bŸ¹L†þé:j,5½U©/ŠÉ=QÒ8~+Ä;›‰‹+ˆÂ“ÆòÌÃD„ù€®*Õr,Uòî\ÿ>ø­;8x²Ri¡¤2ø‰¸YÙ\T¦ƒ/:•Ý é¼…ŸÝÇ•\ãåÃloSF@c3r–äÖµ… Úê‰Ò¶#C²ð/å#å ;1í‘·%sÂQq ¤ÝÅ $î6êÕ2A÷AˆsÞS3ëRqY™Îå±.´6AFSH):‚„¸G¤i¥dEÓ(‘cIžû0â4^”úÂiåJV€ë¤“h='À0qí·“æJNÈÌJç¤øUÔ#­šÊlÉSd»&k®H’â÷8òÔT¢O¬Ô6[i7…äyì¦äáòÒ±î2nß’â€佨¬ÐuLÞâ?™b”˜ùv"çb«ošFŨ$Þû‡ˆôÕÖI(éÀÃw_·†c2y“S.‡c‰‰KéBw$}»­¡ð«Ê*ÑPÊvðó^ÊB‚Ï è¼®Ô…- Ð0³{€-¥Q×Ä+B)¸TLZT‡ø¶y×›º–—ZM½- n@˜ì¡-ñ§±ÒÁ)TÇ´€ Ôè$½m*<)²íÃäxtmƒx†#¸âŽö^u Úí“roÖ²UA¸îÇqFÚÕˆÕ’,¬§ç¨lËDK0µiTv6h‡…DšÃflÔ_ß+œ™j‰&”JOªµìÍŠ"A$Ù?%kÚÆÅDä(…#ZÁ&O ïÒ×¥_ÔÃøÒR¯)g×]œn*yŽCöô&á1!iJ’ÒÈô„šÓÍ’‰õ60㻂i¬t§m÷µêMiÛ“Jø›ëØùyÀÝ)Wªé5…òñ™ãi˜éÈnî+h¥5“#ž…saºZ×ð¿ÜŸ¬8±àÓÝOÖ|X­P€½Ü‚ê÷kâ‡Sòm¯”üØs.U³n¿(áäÓkð:jtô:½ý5ó¬x¡ÉÐY ÓÜ·ÎY·:*O¦þ]z^ÛËxœ3=3zNdÏcÞÇ>´¨bAîx™–JèM”ꊣ’H?%t+CZµ˜• ÖŸaÕ!L¬-Š56ãÖêð1Y"Ù#L›$ISRÜÜEíö+F®”·IF=¨Ú¹îJhcÌ’^œÌ€âÓ}|¯1M»öS'wõªçw.ÛŽ‰´¼ 76ÆY¸¹¾E7’W¿·‰ŒQ‹ÄõÉK7R–OD蟱\\9¼¼^ZÑ·«(²:èœ_Î:çy9‚ÝXRÈÇîRz_êø÷·ª÷¯³ü9U^4½é8<—9$ÒMw /©¯ãQ$IádÈlLš’$ÎõQ"g© “ËÐIáé@aBÆøÿ­¿i¿»ß¬9ÿÖäˆ|œ¤wû¾M¥@%¾àòd§O•’)%àÓ£+0¦>ÅD’€åf[é±S$´x2ÓúïÚ #'2“T¹ËÛÕQ%ž‚ÍÏ—å•ØŸUD™ëZ²ÄÓ–s÷Þžª—¡®ª›3k1 UžÔt6¤“J&à_òƒ-{ GÑÐT«2¯dÄò¿þT~Å%² Q‰äY~¢Qû¥6CÇQdòlÒF“>aI+äPIÞE˜xä² žš *$½1Ö½~ºÈéý’¯]Czkì´ÑvÅr8òšJ!‡ÆŠ¿EH5©“ jzþßÝk’›mÔ±’¡t¨(u¸7¬0ÎʽZ”ÊæaÃp“YhŽG>ÅUÅë¡éYÑij*¿^•&&Ï¡í õ¨*ìxÖå"æéZS»Ã[éö«&ÓMäÔU¯ë©ñª³f²ÔÃÅ Y$é{ýƒZù+&N‚Að˜R&ÞaÚŸM2§‰Œ«º›ësW} ø\ض´,‘ò kêwñ×CÇd6 ÜXBF¦æ¥U¶F|´Æµe!’uù¯ºË«KjPÛ¯P¯óõ­ÊÊGå]_#k ÅS%x>¿³W“Y¤-õ¦D0#ûëÞH;¼­Çmý6¢³1ùUvÜÖ¨Cßeÿå}šK.’“2]ÿÙÙ’¯¨{Ô¢5}dMBQçžÿ_5_dЙ12¿õÕýšÏص a@~?•î7¬GBÊÒz4’UR„ ƒ"¥AÍ  µL9ôF)W‡«Z²5S,\~raÍ Z’„¼’Ðpø\ƒ¯ªãZ4Jd6rþøâHòÔe'Ñcj¬Ü7ŽñZTØY(êW®Ö°©F7¨œÔ}é Bn¤¨oõ © °â`9=Qb¶6´ØIy߃×窶fÒ†Äx‰†ÃajÝXzMQ–‚OÏ6úT ÷ÎÞBTæÔ¨€¥ZöÔüÔn5I²Ó˜íßnQ%s|îsöÛN"3qГµI )J•§£¥j>[˜HêÓµ&“ž§FñL—âøXøN ¨%­ey\‹çzÊ”wÊ ›«G5žG,èáı¨F‹ïJ*ÙÇ! lLD÷•%{–Yò•¼“è*Ù]«c‚µg?¸Á«p…Ì|ÆL’$âå]Œ”5¤)%µ‚ãÄ)![’oÔ êIÆ‚Ó;?‹Œ˜,&¡dá­mÎuŸmh#kÍß®·özt-S(m5ïs&AÉf°ùX„Te± É•¡¹M8–ÏèoØ °ð«É1\û\—1²8|CÏcl.Pê”–Ë zP•S-%rR”½Û–¢JÖMÍΤ’|MW¡t7+×Óë©&Eå¿£A'Ž,ŸÎ¡ óÌ"Ã¥êQ XìÎ_àw‘‘Ô›…0⑯ÌEYY¢6›'z¹ìfÒÌŒš2-‘µI–ØpB®µ;Ù]¨r;¾^²¥q<\•ƒr¢›«Ò@4êOṂsü¬®„‰‰µrò²÷–ôû”…­FÚVNJ=Üy[€òÙáÜwŒe$¥sLqç;~§ô£ÕU’ʺ{½Î<µ³&œck J“ ¤3p£~ SpT‚ƒÍåò…JÈä$N$ÿ¯:¥‹øèMª²Ë@Áµk¨½Ò®¿% ’ýj “rü=;ÿØÐ“ºüûê¶V5hýOTjˆ/ô Þïñ’þµÉ¢-^¨üº"ÄÖDͦH5¶«¸È‘ Ú“éªZÆj"U…£MkfÍPén$ZÆÕŠÌÊ ‡‡˜ªÆÙubA§ÀOZÃc5l>D‘aí^°\Ù­Œ “¯M+ wRBÎpÆþºË‹©‡=¼M|âÒŒ€Þ}°k«®ÈGžËÿMËŸ-"ûlù+Ës±äv=-QiNb»oãÒ¹O•úNšäã^Ï×ðlm·ÕÒ«î™ ûå ¦çùE¡zÖº¼-äåòùthØ ΟÊNQ›ú(¨m¯×!Ò³ÿô+›ñÂŽ1úm'}×lì9\“h6WË_*ÇÂ:;Êóœ…n(íÒ·WyU³ÐágPtßµƒÃóý5Ñâå¾ê2SÓ4Vw3âˆOšÑ::E«ÕñyUÈ6¶)/-I$×JŠJ¶E¹$¶M´±\r`µ‹où*p™ÆgºàK ´ÿœM«mI×ìÖ¯?‰æÓo¤ÂÜ–\'p¹.K$÷¹¬¬Ê¥¡ I=/è¹ÜžÕ†•S¤µ)g7wjtÙÝÂä²2ÒKÍ7§Ša´6¯ê¯}ÙñÖœZV½ óÙ¬·³[’|+¦alówª‚@ªô52@k@xMªæê´$(AØß?õ·í7÷{õ‡#B$ÿ×㈡ÿÌ}é “þºÉ¨ñ2Ɔ›*CR‰·@OCF**¡ôEºŠ‚öCÖÓýŽŸN·û5Fnã¯æÆmUòÕ™©jÏ[}_ÏRÉĽ£Ã¢ê·SØU‘ŽèMU%î¿5T½Ž„аæ(¾í:TY›e= ™*:¬ÓËBO€:UUS2åÏ“Ѱ2f¼•­O)À‹]'ô×j¬ª|œœ«­÷®MÈ¿…[j0¼Öô˜y¤çXskqàƒrH:U]K×#z2Îî @ÈÉy¹m:Ըᴈh…¥Ór²4¾Ý>z”ô)·Úƒ CªzHkÎf*c 6ZšQ$íñµ’nGJ¡±½£z÷ ÇaDâ<Ÿ†8ÄØ±ÕǶé2­ºy¾ëz )ùüEWn¥üÃ^sœWÔüürv¢'‘D$6,Ÿ*DvÝIù}­O‰¬Šª {ç²(Ü\e¶Y;A|Ö×íÔ:™pò,6V[ 4÷…j<´g·;*ñ½*D•]ç”áð¹«*¤k_5ò}f'o’©¦…,{}( hG‰Š¼*Å_S+è(Iè5ÍI ýŽÐ P­ZÖ±w,È/Ö ¨nõTU¨«T×ÎÏ¡𮑍…c­þj’dõáçíÛE’O[ Ô 3m(JI mé¤ Dƹ’6Bö¡¥¶§Éý$Ulà*$Ç‹h¨³!A²¯ºRÏSóͪ8yŰðR‚þ&„‰œ‚#pu*:Z„2£›ä/\µÍ©INƒÔŸE ‚ÉÅ9TLž98Lû.c¥‚…-hI¿<ÁkÜéê­|¸|QÖás7Wmœü‡1âøütGÜÅ¥N2æÔ„¥?"ÉW²¿!&Àk•‡Éo¡¹ï¤Ë4Îoš¹ŸÊÈœð)BC½’„ܨ€=dýªÛŇb8¼œûÙ-µÿ= !©Lýõ¢~ŠÐzýªËlæØ 8°[N*!ˆ"ò™8cRJ CLt©Z\qõ™N¨VDˆ°¦ =/“g! IR›Ü‡YXºmBËmCÄ(iVL¥‰~i ºǵîñ2pãÎnêϼ#qlü‡§ªŒ"˜V›Ù=OAcźvƒ¥ô¤%9s Ó¤-7iz²*ÌTá*:ésj™šJ,¹jU‚F¤“ê¡Æ.¨ùNSu:âwÂãí›:íº)ã÷?dÐŽ¤w’d3kå&<t‡Œdme”Ž)>³­C~‚R+þa°>>?ö©$žÜu <¸=M¨ î³ROÝP SoMIn߇E÷ó±ßA%<÷…_©þÚÇ5©ê¨5Ä!·`ûà}’þµI¡5ê~ZP÷®¬l«!ÊdQÕ‡H•o«EÕÇÍ̵µª:™–A¦_ƨê_ÌL¿hëTu-\šŽQ3O¥§¢±ºVAÚfè,k ¨eYŒ›u |jŠšy\$˽ÅþZšÒ2Ê)RÖVû„|OÉ],}.k{BìH“ì¡·ºˆBI¹'Ð)luz´V¹l´EÂ?žb™9)ë„â—µ‰öÀT­t× ­¹qÓ¢“r•½”¶JGÀce8¨ífä°äfŠÜRÈW˜om‡QÒ°¼é)ÚdÙoïòøžMÇLyˆ’ÛŠ Üê¶‚muz‡Nv)ÕA&5¡ÐŸŒ÷ãÓD•'ÏŸ5Ç7 ÜÚ´Øø‹…ò×ø§"äåª]/ÆN“&Ð{=~«¸ùkÌW‡¸Å\´Üï×ÓY— ±¼‡›ËÃI .¶±vÖÞ¤;šë/Íß!IB‰¾„WgÚÒ#̆ç!ujQu âO¤[í×Z¼D–…×)¡«ÙϤ¢Ò޶WO³Y+‚Õ'Ï‘»­Ò¦Y^à»ADd°õ¯ë)ù*ŒÝÇÿ dßR=u,ÔÇÕ™#GURN?¬b¯§DEþ±Šü>Z²)~‚Jð©0øýÍTº1 2Gæ¡oÔ>ŠõÕnlpÌ%}!J‘ÉêIÅe)‡ï*UÔµì ú’oöUV©©•ôUÒÕŒ)Œœm *U¬u¡býÚì ùÎM44"D÷Kqᯢ÷u7:{&ßf±ÞÐf¢ÒO¡}ÆíëœÖGá ®>V^%òÐÚ‡Ü䬩(µÈ&ˆÅ»S…y'‘Âù¬Œ”‰Á.9N¦ín-§mÅüIéVƒ7š‰ìË%‡b#…¡CjS¨}E%%Bµ¨d¨-­šu6=z ÇkîzìËæ¸ßä…¸¨-Œ^ZÔ ìn\}:¼£ÔŠ•¡9©(sÆä4¿A#ì?2Œa"WÔTr´)QaÒ†T$¯¤hc·SÛ\P´­¨BZ˜«­J)e¨xPPLØUŠÁû¡Œ(ÇÑ>Òî|kÓµµ2óºüÕQ¸ÁO-RWÍIÀžð»’«XiW©«’û™êN—¾µcèY…d xõЬ7ƒEB Ï}ô‚™N¡”$ø†ÅôùJ¾Õb¹bÙ!qâ¶ À´xëjú•(“¹W¨C%‘/KC{®„Öõ›T Bdgš²õ>¢>PhIY–ãm´Ò}¤›¨ ˜’©(E’J‰ :u«%HÕt}S1E+wpB”’o먕àK׫ª@XK² ez6Jø ÔÉPL@Ê^¨ßÙ#Q­¬~z’Ë ÚIÝbmР v‘ÃI[ê ´•-Å% $ú-RD—(XxX$£%É Vêl¸˜4Ÿ¾8® »o¢Ÿ¶jûJIZËd¥eòr3ô¥n h”¤{)JG€X £%ÖÜ|õÌwtéë«•3*öo»@mjÚÒHE…'!%¨ÛSÒ;PÚEÍè& ‡ŸŒâ(Ùµ“ä€{rô[¡¢—ëè*È®¬¢Ê™&cîÉ”úß}ÒKެÝFþº«e’Ü Íê¥ ºB èAùªÈMyBo~¦€Ü_äˆÆXõî¿ê¬jõYUžø‡ÿ@òÿ£îMúÕ&ˆ•Ôü¬‘ãWƒ ª]>š‚É‹%Ò¯OJÆê]Xù¸Ö±í-¼Eé¾½*Ô®¥^B¼ëª­I6*Ðý›þumUB4n哸¨̉>X˜˜¦0HAWU*÷°ôZ¢ւØé¸±`ýݨƒ)›’äwÐ7 ¾íÅ a²«3Ñ[ÄC" \© Z” ¯u@;@è•zÍúV˜ÓPŒ”³&#e-¶tr÷ê-\¼œdœ™ÖCgqìàV- !zÆZÛX¿‰QPûJ®;Š÷Ë1^ÐÉS“R¯uýºÔXÞFHË$nµñ¬ôã•w!Ýœ—z[_B7Ée=Jxº£µ-‹!>³ZÕÂW܆üÈy}Û’ê g=JA*OÙýŠôªÞÆÓ^ýMR³Ö» ¡‰˜PƒÚ  µ“Ú@v7ÀýmûMýÞýaÈÐÿѯ÷£à‡âƒ–÷ƒºü§öÃë %æ9Ü®×XF¼ø“2¾Ãž[³Ðâw¶°l¤…„PeÜ¢ fŸ€‹qÿ4¿ßìãA²Gªøø¸#NÒÿ°?Œh‰µ“>-›*ÝÚk_§öûøÆI“eN§||[,½¦½¿ööñ—-lôGÀ?Ų[ ýÊ_£õöO_þ±«#í&Jøøµ"Éí1Ýìãþ ß¾=¦þÿ`Дm.ÏüüOðî]ˆÊfûR¦qñ§3!ùÍ`ÜZݬ$ÜG¨V7Y.­ƒ³2}–ï,žyÆsìvö_¸c‹2Ý9@)U »dûýͼÁÓ­NÓÊÝéø.øƒÎrØü“‚öòNEÅÉ÷ù^ó•ÂG{~ð„…ä XTÁ(‰ð7ß—b*®Õ¸Ã )ÃHÍaÕgž+?Xa ÒÂå@ u5ƒ*É>ÈE_ð9ñ8Ì.W‹‘ÚW}ÖzDœ þ½Á.SN¶TŸ¬l TÙ=ë:Zw'X*Nü|Y8ÑGîNn,Sý½Àõ¿þñ©jJã{Y¯€/‹scû“°?Œj2["gƒàâÜÍ/÷ûøÆÑ—ñø·ýé¿¿ØÆ5Ió*`~~-É¿îMýþÀþ1©‚ŽÊL¿ˆÅ¿ïMýþÀþ1¤2ÞbðñoôMýþÀþ1¤t`¯€‹‚tí/÷ûøÆ¦ ÚëÀ?ˆÅ¿ïMýþÀþ1¨‚7#!ðñoûÒÿ°?Œi•щøø·ýé¿ØÆ5b­£ô©CP›3ð ñnJîLu$ÿëì÷F©´Îò˜ÿO‹{ß÷&þþà?ÔÁGs/â ñiãÚïîñL­«âàâ×ôÇõwøÆRíx€_‹aÿ4Çõ{øÆ¤¬žÿo‹oÞ˜þ¯`ÐH€o‹sÿ4Çõ{øÆ‚Cøƒ|[~ôÇõ{øÆ‚KÇø$ø©€Â—Ú¥¶ ò€Î`•í(“}2ª:“¸{’ø-ø§y n7jVP“}sx!ÿí*Åd| |X™:¾Ô(…gû{ücM£pÝßkP*í𛔃Àõ?Ýmˆ·>>-YZ»S²æöú÷GëZŽÿˆÅ*™;ûX¤¾°¤æðVùÿ¶5D’ |ü_´ÚZ_jÉoÙB•Á_hþèTmH#à‡â­æÔÔÎÑ‚…&ÂÙÌ ±ýP©Ú$ŒŸðñV»V§Ÿdß9‚$të‘Ö¥ =ðñDꊲ´TT'P„fpkR½BÙ ž¬ ‚gø•|UcÛò°=™Ö~žAÌîoŸéIÈÙ?5N„¢°÷À‡ÅÃë[®ö¥o<µnS‹ÏàI?g#Q$è#üBþ-zSú»ücP$Ãø„|ZþôÿßÜã&Cà'â×÷¦?«ØÆ4à+âÓ÷¦?«¸Æ4zŸ€Ÿ‹K‹öžÀÚäçp:|hAk‘ðEñU‹‡õíJŠä6K.¬Þ8HÕ¶ÁÈÝ =&¦H*Ä#âÚ÷=¦'û»ücS%‘‰øø¶½ÇiêöñD‰<ßß½1ý^Àþ1¨ÄâÛ÷¥?«ØÆ5iyüA¾-¿zSú½€ücI À/űÿš_ïöñC`óø‚ü[~ô§õ{øÆ ñø¶ýéOêöñ²û3ðKñ?Å;½ÚŽQŸí¸`x×2Áå³s¾ºÂ;äD‡açÜòÚž·±´µ)*>šô@k^ó`2ü¯³ýÖâÜ~'ÖîKó¸¬$1¶¼ùs1ï°Ã~cªCiÞâÀº”:’??ÃàâÛÇ´ßßÜã™2nG¿Äâ×÷¦?«¸Æ5r3¿½1ý]Àþ1¡etf>¾-?zsú»ücPËyˆSø…üYþôçõwøÆ¡©'Í@>>,ÿzsú»ücQ´Ÿ9 'à;âÈÍ9ý]Àþ1¨ÚOœ…À‡ÅïNWp?Œj62ËOÀ‡Å…ôíAý]Àþ1ªyv-ï_ÀoÅ’¯nÓŸÕÜã•¢–ÏVG/àâØ¨‘ÚoïöñfF½¬›3ðñzÃn6ŽÔ‡m½?^à-¥íþØúê-Y&¹]zÀ¯Å»­2˽¤!(>Õ³Øtÿlj› Þñ=G øø²ZÐ¥v¢éHéõæ©ñÿÖ>W–Yê*~~,“åö¡E]ö÷ÓõF°{³}K{ÅIÎ=ðUñ[É)•Ú…¶ÓÁ* úó¢T4è2>³ZÜÎÞò%´£ä&YUðqñ>A·kœ¹n°Œ+F½§*ôó‘~ ¾(Љ=­Y¿_íÖñ…eÿ-Éêr=þ%ßö·îXçêÖ ñ…mʽÎF ø*øŸWüÖ9úµ‚üaR»v_PóÜüüN¯j—óæ°_Œ*냙zóP+àâ]d(ö­Ä©=õÖÿ®>ç›ÔCʉ|üO!!?¹s†ÂÃûuƒüaXßmÈýÍBéø6øŸH°ícŸ«X?Æÿ-Éêj!ó¿¿~"»]ñÛÎwÎûwõÁýmõ®SëlD¯+Þ±b³÷¨³]u[u öPm{›MÿÒûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÓûÑ@@kþYÈù~~-ŒGÃå eåµ4©™‰žC‹;Ùo)!7ôƒ„ŸÐÐ Aç­1˜™ƒäÌýY¸øj‰l˜!颿å9‘÷t°^}HoÌòŠÆÛ#qÔ ~[—œ_-×2HÙ^ë EZ˜ <ÓS b;Ž6O¶Ú+MÒ6›ƒÜ׎±™ú…Ù2F@KD˜2Õ¹N´ÛͲìIJc¶µ¡Ô…8 Š€:Píw2¸¼,ˆÓ^™™™“‹ül)Óc'êÙ¾ä¿xy1‘åÿL[F¤¸Qµja5ôPñ¾æñiØŒÎS-Å V%ìË_YCÈcš‘¦ÊüöVôMÏ24ܶîФèJ’€òœPÌ5ÇÁ–þUHJŸ`Ì“…)À‰`°ÊŠFà—V•Rmí&àUðÀfã¹™K‰õÆJ ìœdûÃq™{2¶CaÄ5$¥EO]V¿Gr’ƒæ,¹¯È徤‹*J¦©ÉL´ãeµÇ¡8¶¤4Ô·LwmMªèK…VI6°½æ#›ñÌîQÌ>2L§f%‡d²ã°&±C ¸†ÖìYO0†$ )ÄûM-@‚ÐÞ€2<ߎb²ìa&I•ïÏ¿1[&ÈŒÓòÔ”0Ô‰l0¶ZÊ“d¸´›)'¢ DFçðbÀ•+=æ¥á™Êã¡CÅÁ™>CŒãä¸ÏšcÄnC¶JRŸ1{vEöîH %WθÒdĊĹ9&Ág$Øè3'3î’C¥—–ôV]m sÉ^Ò¥ ÛO ZwÄ)‚K™\Ö6!e+ˆJwvÛ$âlA:Øhlk\׎=›WDÇÎGÌu––aÊLGŸan°ÄÂÐŒë¨JTTÛn)cjîŸaV?…sCÍqSòqq/ãýÚT˜Ñ˜˜ÔØÞo’ó6¢©QúA«Ë ØIA;“@Væüõ–ù‰—ÄðSÄ`½"\¶sR¦è„©L0¬\_1$íJîê"öÔ ”>sÆæGË?ïR"”2‘æÁ™ ô—‰K%¶$²Û®‡T [-¥AjöQ¹ZPþIÌaäæ±eç˜ç¥Èòc¿ ô;ûÛu‰-¶ëJӢРˆ#B( v¹IÌá0¹ðÊÇe'äacòXUÈÞbûú¬¼‡|´ù­­¥%i;S{”ªJ€zW?â¦Îƒ+"ëKÇ4ó²erÌKF >”K –[WûⲤY[€Ú«ýî]ÇcÈËDw&+ôùFRÚw$¤¢",”ÅÕ,í¾¦€oÊySI'å#àqläóGû Å'û{a$©.¯ïwE” ×G»Ï±x˜XǹK20 ñ„É˜æØ“Ö†Àó~/‰2Ê¥ Ãj{ÓSåVÖ¥K™õúsÄ<|ÙO°ãl¾]e†ã>KŽ¥RŠÑv ØùNáñÜB3þöŒ¨D‘6T_ª§6© E·ša­ÖÜÂ奩 TBu ËÜ0fAÅ9+’ÌÈs#l)mFÆ)„¼¿tz(VÑç\îRIKiq*% Aø-²Æ'/.Bü·my)ǥ [E RP£±JÜ5l¿ÉÛì“qp"c÷ŒKÄœÜw篵4˜n}WK“ Íù­û“*Ž•t]Wa+Ðàh9.LÏä^S–àÖ‰m±‰“‘ÇÛqJe•¸”ºÒ¼·B“e¥[T Á± -(%HBUOÏ@e@@+šòõqpä5Š^a×ÜqÉQÐç—äAŠÚž—)GbÉ !6 ÚZ’›¦û€¦g†Çýi[„\a¤:Ûn<¥¹)Ô2ÊP†’µ¨­Ç:š¾qÇÄ+6™ÄTÉT3 Xù¨È)‹¦²æßohjû=»mÖ€K÷@â+2¼ÊYÇATÇÞeæ‹MMYm‚¶ÖÚV ZJ"éP)P@XâäàÍ“’‡ðôŒC¨c"€•Ó®4‡Ò‚¢IòÜJ´&À‹Ðø|ëO†æF<™iÇ"T8dÇÎb<‡'¾˜ñŒW^aÛŽ- 8ÑR,Bж›Ðäù¿ćýêT—\‘•Ňd×Õ0Æ÷Ï)¶"²ë‹³Ù)I^çC@%+žñh˜ˆYÅÎ}ø98¸ÍÄ….\­¬›>W;.HG’¯eÝí-^Êö«Jǹ÷eü‹*›!ÄbZd§³cИAe©|ÆÙS–žBí¾ûMý4÷¹w#-Üš¬ÐcåqKiÜ’’ˆˆ²RwT°¶úšËNXm§•µƒ¢Êkû{¶¥@Fà9¯äÏû¾L—\TFçGTˆ2â"DWBJ^Œä–ZCèö“rÙPMÆë\PyâAJ9ô\9ÿ\ðˆ2d:äÜt¶à8ã1S!!2ŠÒÁóì……(]I>Õ/œñ¹‘òÏûÔˆ‡å ¤y°fC}%âRÉm‰,¶ë¡Õ–ËiPZ½”nV”¨Ü¯7;‘Â÷·ácÑ!Rc*¦f!q¯æ6¨n´™ ^š$·r EÀ®q®âFÏAãóæEoÞg//%©¦du°Ô1ÍR}îd­´™"î e -%Ey+¹™éÒ°‰š¹X¹x”O‰Ådaº#䦢8q¦d°ÃŽîG™°¶ ‡Br»¥ÅcDÆÌKy™mä²kÄ{¼|6Er£Êm•>¤È‡îâC~ÀÝÔRAMÔ¸f3PðPÄé¬Ï}‚´¶3"õÔ ± —MNÛ@W²Åâ8ˆçJÈH~$Øc Ûð Mž–â+è¿#Ý{Èlëe;´+ô*°®òœ;¶xûê˜ÆBF‘]vÆáº²ÙwËnr™–½‰'b\*Ðé¡ +ìw+&"Tù+mܦ>IÃ&BlV#ä7†vBb#ÊiEµûo¥»[Ú  '\å¸VópI3¥d!6W7ÝqÓdÇd†¼ÿ-ÉL°¶él…Ô°²›$îMÀLjòÌg4ÂÇÏbcä#C“m­ä¡? ÝR•û)} M”=¶ÊMÀQ± Íð3#dæCNVdLNÒô–0ù7[}*Q@T%"1H¾èþ`·µôH4gû‰ÅcÇ5Rg<‰ÍIyˆ±±y Ò˜N¶ÌŸ6#1ÖûE•º”¬8„”“¯!'˜`cHÄÅÉžöi¦Ÿ‚œt)sÀaâÓÏ*#.¥†ÖO²·JRl«eV¬®}Å!KÉC•‘q•bcJ—6Y‰+Ý6BNéInXkÈuÆE÷¶ÚÔ´ØÝ>ɰø¬´\ÌO}†ÜÆ™óÞÙ°äÁvè6'Ê–ÓNm> ÛcàM%@ÿÔûÑ@@Aæ°ß[¹„sÞ}ßêl›Ylßæym¸/é'müËß^(\—úÁ”}cäýoŸÄç/äîòþ«\ù?Lnó=ÊÛ´Û»¡Û¨î=Û70<²F{ëÅOÅûÜùØÜKëÉ©qŸÈ-ŸR“TœâFÈIVÓªŠ·)@NJá>òîuϬö}uÉ1|‡o“+êÖà£Èþ¸7yžå}Ú[wÑ;uœ^ ÆÍÃOÆç#¡ìnO7.ZdÂ[Éz&r¿<Â$´[qK„¬u%³{'˜á2&]ÎEˆabò¸ëÊγŒ‰¥×‚ƒ«2ØsrˆQÝss~´©â½¼ä9žßâ òŒÃ_ sâ ³‹v#Øääb2ÛÆ`z[¥÷[ò,"áWN£h>7ŽÏÏ› 7ò,ø—’Ä?Ç%ùâ3q®ÄÄJmAòP¢•°³}ÞÐ;©áûXp¼{ÆbgÏÕ±ÁKy¥F¸TÜ<˜Ïºó_~ûÚeÀ)PJŽðI* z'Lo©‚ò^jq9üÎqIòvù£.©Ä±0íòý÷ék»oA}¥ðH¹¥rèHrcù,ÀIÃB—+ä0o'{ñC)[“—²bËq‰S‘ÛB°Þ‘@aÊ!fËÃa¥¾ü<¿!Äf²˜×xþAm¶b.2ž[yÄ­¸M 7+ËZV²«¤©)H£Â3˜ù äxß%‰&™yw^VC¹±œ–”™jl´Ü¸« ihHJö#uѨÚ¯álñ‰Š’ÆArÛ8`ØRåÖ…][B–‘}äиÎÓ5 ?”30r¸ îdÞ„¼š”Âò¥ÂøH^MpvÙ÷6ÂJ¶TU¹JKÛsÎ2üœâ²q*[™çÕ å\IßNÙðÇX OÒ½¼( Ÿ#Ã~PbÅ{ϺyîÇsÏÙæ[È}·­·rzì·]( ×%â¼´ì“ønGcŠä¤cÌÇËeí®DpI`2îÙ q£èš((dp6ÝÂw ÎGÝÙçM¸ÓNy%~ä•â£ã±plßÕ7¾ß ÄL×kÞŸ‰‰Æò7±láò‡'Æ­ïˆ1¬ºÓñ”ì°¤-£ç­M„<ÙF‰%m”ÿá#‹Jv_¿¦RäbacŸm‘bìY3e:ÿ™*T·•æ®iÑn(‹}5_@»Â2.s¶9s9xXØm¹¾l |91¥dŒ¨èFBBgû¼ Ù;\ŠT€P¤êH€(€(€(€¦c¸‡ÕøîúÃÍü“–©^o•·Þ7F“m·Ÿì×¹éo€)9®ÒÉžÔ1Ü¡ÌnBÜãêûbËN1œžg­¥§“ÇV{ iÞä>ÎG5-å$&CŠO•! cb7iƒÃ¥1Áò¼JnY©33 eS+,ÌU2Ðs(ëï-HާÝ!(/Ø$ºIéP9.Üåy?29$Žæw Ö9˜LL9XÖc£$ÌvÓuòTêŽõ"CjÛ`‚Ú†òž5Û§pR`O•˜LéÑáå£Ny)œ¿ys&¸D:\Èä'¾ h„”غ o¦ÛX_™ÙÇs–9"“…Ç`óœ96™œÆ;~ÕñùH(aÕ…ÒúzXkxi\+Þbæ#}g³ënKä;ü›ù~âü'¼‹y‚ûýÎÛ´¶ëí6Ô 7‚È`_ζîN<Ü^G!#!Œˆ«fDuËuÇßKÏ—ÜKÃzý­·´ ÇZ  Ë3”‰ï<†<®1‹ËIÍbð逦æ&D’úü·¦ûʶ›\…©!,%Z )j²·gãø4àðã¹øŸ>cÊ{g—q.K² m¹_GÌÛ{ëkéÒ€¤¿ÛüæCˆÈáùNSØÆ˜… *ÀÎzip ¼«¼í»nvZ÷WJÜ. ˜‰ž(òNqÌ^g'›ƒˆç0?”L¯5 šf) BW-jŽ ¬/ã@7ÊvÉÙ¼/†qˆœØ9ˆ‰™lKa.ªÞ¤¹!IP ÅíŒ6•Ç=æj‹„ü\ôÛî7’S‹[͸µË“)ôùnºâÆ÷\Q+7Ulâ¼yÎ7‡÷²'+9Ç\zfUÆö)å«Ùl­ÕôJôµ  5ö?µ¹Hxüì3È EL÷±²°˜Ün:TlN>N2_¾!ÖñÏd¤¡!ÇŸ1,-”¨ ‘¸î äø2…+ŽÈ™ÇÎä.fæ^n]¼<«â7õ ¨_|ˆ'©Í§ËJw oXõ$€¾c´³21pîÄå*ƒ„¼šòsÐ21£ÊVYôJ“fq¹H <´ªBÒp µY` ®…AÄCä¸×™XÞF¶‚à„))i†ñ‘q¥›­Ç°SuÔoíXÞÛˆ¸®Û˜q—ä瓉RÜÏ>¨á*âNøªvΆ:ÀR~•íá@AµÚ9qòyÙqyd†"d>´{ æPÈÇJÊy¥nµýµ÷1°¼°Ÿ.#kÚGß7Ýj„¾ÌñR¸ËÑs°²9¹|©¹ŽåŽ*c°áÇÇåÁIË™7_svĤ¸¹"ëX½ÎŠØßÏãQŒ›‚äð¢òEYy“q‹•QÊÈL·Ê"·2;muËûú¬›¥[Ï´Lvɦ±9ÜK•†ó ÚÛPíq* ¤ N-ÄãüzfVA3çd\}ÙÙ4™Ëóu°£õŒìƒä¥ HÕò4Ð'¥?€°æ/NUáħñÇW1[Î&R!ƒ%´áÜs¸oj÷[ÂʱÅñ™þYäÙ<Ìâ¦_L,‰ÀOÀùŠÄLvsˆ9'Ü|ƒ½)ónw{ ”*€¶d¸4÷¥ä²x¬äxYI\‰ŽCÉp—*;JkÖ1L¸Órc©À¤!K8‹4 {@Nr¼g6Æ(á3ã79w8܇£HBÑåHj,¸N-PVÒîÂ@Ü• Lr¾1›ãÜy®+‚Ë=?%›ã‘ðXo#6<¥G.¶ÒÑ23ÁŒyY £!n% %V**cHàùɹœêùR]Â5‘g&œñä¼ën3 Èii‡Œá–Ïš¥‘B”~’•¡3‹Úÿvãù ×›ýÿ†ã8—½{µ¶}\™i÷ži¾ÿzúÓoÒ7Ð 8>E|ê?-g/  ¥î›LiY#*:™æ<Ù;\ŠT€P¤êH¼KÎã¸xþC%+1±¯1q˜iHKh{sïùŽ w-;ðB|@®Ë{‹«™Çi¨ˆ„ÏÈÃ*–Ø„´“\‘BÞ.¡ JË ÷VÑ[@ `8ÜdÈY,–qŒ„öÏ¢Z£BTV\s;2<µ)\—Ԁב´µ^÷±LG Íñç0?Rò(iŒÄg˜›Žqó)¬fð—#-¹ŒûºÖ—VðêG³dè­àT_ìË?ÊQùJ¥âóÌfSŠÿÖo.ù”¼—KjÊû‰÷‡ˆ…›îܵ¼’©Jo}  ü”TÿÕûÑ@@@@W9†iî9Åyv:\ŒN=ùL%ûù[ÛA).Xƒ°Ub4ñ "‘â8ü§ Ïs<Ï* ÈÇ¿ÓAMêTq$g.lRãÊ:›ûT<Ž{Å&lL÷‰8Ó˜Ÿp‰&¹1^k-=ô)R •¶¦œUÖŸ%BÖÚ¥\„–+œòYLt§…,¬œ¬$Ù‘r‹”¶gÆaé^ËK‡{ i­Ü•î6-Xn  QÝ.Jî!¦¸\"»ÇÙå-43.UŒS{Þ8ð‘!€–ʶ(—SkP ÑØü®6ÈÅJÇÈ’Ì‹“.ä¢É‘Ém Xÿv i C*Ú¯<’,BlM€Ë1‘žç,‰ˆk2îÄ»™Èû³Lºô»:K_~ië6€¥ùi $¢Ëá@Wx¿6•çÆÃ¿8rØòy/Ô¸¾Zóì)Í5!B+Hed'ï_{JE—Öâ€oœï,>>Ëo%0ˆ‘ó¹„b¢-¼<ÃͲÖ÷uõHl7ú+¨Ü€7Þl$®EŠÃB^-MNziäåc.ÈGnC ŒòÖ§šä¯ÍNßl„¨"ä îÎr<ü:r8(ؘܗŒöØó—-jcïj$¡Qc†–“!Ú§µÔ[P'¢È®mœˆ§ÜTVp˜§ZŒTKiqÉ9­iMì ‚ ñ°ôP\÷3Ìñ®m–•1ǧpœt,{ñ±ã¡Ç£Iždy[(Gš°·K EΫB†Ð•Ü8ÿ*æPñ™Äçåá&òOÊdc±øü¬ôâ#7ïp£ËDï³BŸ[JuHEÛ*p¢|( ìW;Ëò)PÙÀqØŽ²î›šäì‚ã-´äU- ´Òˆøp¥qH%JFŠ¿…¨ ¾;ËÓÉ‚ÜH¦Ýĵ‘Ê-n{pßyÕ4ˆŠFßiaM<n6”Xk@(OsCˆËóWr“ÃÜusßÅqù–Òq³Ú„Óì¶µ%{rTá .\‡EϘ”¤ ·¹¾v.*$ˆ86sêÅàbf¹\‡¦ˆNŸmk´FÓÔ<é ¸­«S(Èߩڲû=–yÆV. ,®=Â"¼ü‰Šœãr丌c4%¸Þ褩/„•)Û‚/´Ð LåYìløHÊá—ï_QgrßQá$ý`™#¸A–Ò…å¼àBR‚”ƒp|ˤ¤ ¾ÉÕË1.ä8”¾Ä•F‘s –”¥E©è°ÜeäîöÚ[AHÒúè¸PPPPPPPPPPP®û•É‘Ç0ÚO&Ä&g§µ‡Èr.0Û1E”óÎdýè¨2ÒÂÊnJ¶¾ìqŽœŽÖ&K‡WÎȪÑJ}µäX1 µ¼T–‚¶¡{T÷mJ€“{œrL{ýΙÁããü3²`½sÞù ·©©mÆ—ËajöÞɲv+éÐò¹/kÜ1ÑøÆ&O%œ‰2ýÄåÞD$BŽ¦Ñ¼Ë8âáuJy 1·é]Íà%#És™qŒ~C•ÈñueYjJ$ÅD5ÊcÅm(Jf[ƒt¨„ŸÒŸXãy”Î%Ã0¼‹“òóœÈr·Qär1¸|lg‡ÝVùq ´[JÐÙÒ]%[B@¹4 <Öo C¹œt÷!Ç—ãKK¦ã!åçÞ‹(°ó{â(óG˜‹\[JVg{ñ1çòñ›ÅdÂEÌ-˜Ë¶¬±‘…mÕ¼™8àÉ,4罎—~Ð7hßÄ=—‘ ;šƒ1KU£Â”䯼»û ó\î#¨Ùaé4PPPPPPPPPPPPPY²$#šqØ©}ÄÅ—uèÁD6µ¶þÆ&nUP1ËåqÎM e™rd†á—›Ç³m:Øy`)aä"û‚oap'aso|VVy_\òÆþuü¿ªU9>wõ±»Ì÷?£¦ÝÝMµ™‚ç“ñœw„&IÇfL¼^5üÚ¤e”3ILÙ†‰„c¹ç7減­O#ÄjF \¹—!Ëàr|9¬\ÜÚ2“ä±;ÜÒûÍ¢Φ˚ôvÒ´8 µµé@Vás®B㼘½Œ‡ˆœÞz+ǹFN.4ýþ/yH‘FI.¸âÔ¥!©DômjwºS\ŒÎCÆÚ“œ>'5–T‰å‡šc*ô†Xm1KªmQÉ;–€Aë}(ÿ—\‰>V5þ-®LîyXÂW¯êµåPð– ù»Ki Ç*ý@¹ wr§­£?5Æ›ÇâžÂÎËÑw½¾¥cËR˜q•±(>c¶iAÅuygJy÷;ŠLØ™î1q§1>á&Mrb¼ÖZz1èR¤*+mM8«­>J…­µJ¹ Ë<Û4ôW!;ò½…á~¨?ÍDQ8¸gaÍžîo¤b­þÎÛ{tþÜLÉÏâÈ“˜^ì‘ÊeÛ”ú䥲ÞJJM¼âRÐØHJIB}=”ô /T@@@@@ÿÖûÑ@@@@&ó,ÈeØòCì>…6û$) B…”•$ÜA±€§ÀíÿÆ¢[ÙÈ»lG =†—•ÈÌLjΪe¸2d¹´íöRØÚŸe6PÁà^w£7d´È~ ‡_ÈdgO|«ø“ !ùoºèm§Fô¶²å^Ï´«2Ž=‡mä>ˆvu2©_˜æ“eqÖí·[VÖ¡·èë{_Z‹\33¼cxݰYÃ~O¶Çœñ¶;hO‘¸¯wAô¯»ôÔ*à¼mYæ¹!-96d ¡9 ©‡ï!ƒÏ0RøŒ\òŽÝŽ޻ÐsÜ[ É=Íy6¤¢N<¬ÂÈ@™+- èÄ&L'Xx!v‘¿jŠRH%"ÀC·ÛŽ$Æ á‰6<?ë4¸ÖS ܤL)Ø·Û–™B°IYKƒyRÔ«©j$ •Û¾,qØÜkläbµ‰T•A™-’4{ãžt¹ÌÉD—ë–ZÒ·R‚IJl€âDæSŸkëù`¾ÉÏj4…¶Øe.IˆÛéaõùiJwº…(„¦çÙM€uŽã8LOÔßWÂ÷¨1§ˆûã‹òaŸ*í{j;¿¬#ÚUÕ§]MÀUœO•ŸÈg=ãw¿ãáÁ÷]–ÙîŽÉs~ûë»Þ-kin¦úéœl(óæågdì‹l51ýÊ;Ñ”6“´móÐk}h— ã™Ox2#JaéSþ³vdÓ È½Ý1JÐüWšq²‚”¨$Ž Ð0¼_Ǽ³ˆ„¨Å¬|LR§žy^éNª;dºµ’R_YÜ}£h› ljq”ñÔçÞ[l·/ffå$¦:Ü[i8|°Ÿ2Ä€°O˜¥‘Öä³x§Èã³Ø™¸ðþ?“8·sqËŽ9Å¡ • ím6("Ä\Xë@Fdû}Å2ʈ©d1¾Tyób¶ü6¯²4´G}´ÊhnW°øZ}¥ií*àK?Æpr¢òHOÁß—o…¯1ÁïdVá+P QvZJ}‚ž—úW4³ðÌ“íË’ÓÉ–ÌXæ%Çüg[4²§Ò‡q J”Xl…ƒ¹6öHÖ€KƱÉ"€ãëBPôWå¨G…OÉ™)÷–Þ>A•{ꥬ¡ÒTT¥+¢‰P à?¼GŽûl¿å¬Ý>jo’€ÁŽÆ£gSÈ™59ä¿5¦ŽJr¡·"JÛÏ" ¤¨ZÒâ®RÐ7Q=I47{iÃV5^á-„b[ˆÔhñòSã°´@sÎŒ$2Ô„7#Ê^©ó’¿±@[¤ãaL—Ž!Ÿ2V%ÇÇ»¹CË[­)•›ºF ýš )Âxî]É/K)™R¥¢s³ Î™@}ÄP¤?æœ@,…)P A 0Áx´XKdzŒPˆæ:%ÆÕ"BÔ¨pë‘›+S…D¡O,î¾å_Ú'JM|s äæòk‡y­d>µmÿ1Í%ˆgæmÝ·ýŽ¢‹[oÝ[v´qĸèŒÜ%bÛv#PæÀLgT·cd•ÊiIZˆPqHÝ{t #àð/;Ñ›‹2Zd?C¯ä23§¾U|I†ü·Ýt6Ó£z[ Ùr¯gÚUÀwá¼{&ÜÄIˆûk=9G¥Ä™*$”ÌK ç3";­ºÉ,§Ë>Z’ J¸R®– Žã¸Ö18–ju:âûïJt­÷ó‹[Òã‹R–²¢T¢nh j          ÿ×ûÑ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ÿÙyoutube-embed-plus/dist/blocks.build.js000064400000025613151435171370014165 0ustar00!function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};t.m=e,t.c=n,t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=3)}([function(e,t){function n(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}e.exports=n},function(e,t,n){var o=n(9),r="object"==typeof self&&self&&self.Object===Object&&self,i=o||r||Function("return this")();e.exports=i},function(e,t,n){var o=n(1),r=o.Symbol;e.exports=r},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});n(4)},function(e,t,n){"use strict";function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==typeof t&&"function"!==typeof t?e:t}function i(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var l=n(5),a=(n.n(l),n(6)),c=(n.n(a),n(7)),s=n.n(c),u=function(){function e(e,t){for(var n=0;n0){var t="";t=e.data.split("|")[1],n.props.setAttributes({shortcode:t.toString()}),n.hideModal(),n.gbPreviewSetup("onMessage")}}catch(e){}},n.gbPreviewSetup=s()(function(e){setTimeout(function(){window._EPYTA_.gbPreviewSetup()},1500)},50),n.props=e,n}return i(t,e),u(t,[{key:"componentDidMount",value:function(){window.addEventListener("message",this.onMessage),this.gbPreviewSetup("componentDidMount")}},{key:"componentDidUpdate",value:function(){this.gbPreviewSetup("componentDidUpdate")}},{key:"componentWillUnmount",value:function(){window.removeEventListener("message",this.onMessage)}},{key:"render",value:function(){if(this.props.attributes.shortcode){return wp.element.createElement(h,{block:"epyt/youtube",attributes:this.props.attributes})}return wp.element.createElement("div",{className:"components-placeholder is-large editor-media-placeholder wp-block-image epytblock"},wp.element.createElement("div",{className:"components-placeholder__label"},wp.element.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 292.89 282.69",width:"20",height:"20",className:"dashicon"},wp.element.createElement("title",null,"YouTube Wizard Icon"),wp.element.createElement("g",{id:"Layer_2","data-name":"Layer 2"},wp.element.createElement("g",{id:"\u0421\u043b\u043e\u0439_1","data-name":"\u0421\u043b\u043e\u0439 1"},wp.element.createElement("g",{id:"g5360"},wp.element.createElement("g",{id:"g4167"},wp.element.createElement("path",{id:"path4156",className:"epytcls-1",d:"M139.27,87.65s-87.11,0-109,5.68A36,36,0,0,0,5.68,118.12C0,140,0,185.26,0,185.26s0,45.44,5.68,67A35.47,35.47,0,0,0,30.3,276.84c22,5.85,109,5.85,109,5.85s87.28,0,109.14-5.68a34.64,34.64,0,0,0,24.44-24.62c5.86-21.69,5.86-67,5.86-67s.17-45.45-5.86-67.31a34.41,34.41,0,0,0-24.44-24.45C226.55,87.65,139.27,87.65,139.27,87.65Zm-27.72,55.77L184,185.26l-72.48,41.65V143.42Z"}))),wp.element.createElement("path",{className:"epytcls-2",d:"M143.39,153.45c10.52-19.27,14.91-39.2,19.18-58.61q.68-3,1.33-6l.12-.54-.25-.48c-13.87-26.66-41.06-52.54-57.1-66.42,21,11.33,60,31.21,84,36.13l.63.13.53-.37c4.14-2.92,8.28-5.7,12.28-8.4,13.41-9,26.27-17.67,38.31-30.64-10.26,20.67-14.18,40.47-18.14,64.42l-.09.58.32.48c18.19,27.91,40.93,50.88,54.81,63.7C261.68,137.5,230,121.76,197,115.29l-.57-.12-3.83,2.35C176,127.67,159,138.08,143.39,153.45Z"}),wp.element.createElement("path",{className:"epytcls-3",d:"M237.47,25.4c-7.73,18.08-11.19,36-14.67,57l-.19,1.15.64,1c15,23,33.15,42.76,46.87,56.19-18.4-9.59-45.13-21.49-72.87-26.93l-1.15-.22-1,.61-3.33,2c-14.47,8.86-29.26,17.93-43.24,30.34,7.94-17,11.77-34.43,15.51-51.43q.66-3,1.33-6l.24-1.06-.51-1c-11.66-22.4-32.12-43.86-48-58.48C139,40,170,54.82,190.37,59l1.27.26,1.06-.74c4.12-2.91,8.25-5.69,12.25-8.38,11.27-7.59,22.16-14.91,32.52-24.74M254.86,0l-.74,1.11L254.86,0Zm-.74,1.11C235.26,28.88,213.71,40,191,56.06c-33.55-6.88-97.91-43.92-97.91-43.92s49,37.13,69.38,76.37c-6,26.61-11,54.9-31.35,80.94,19.83-25.28,42.66-38.61,65.58-52.69,50.06,9.8,96.22,40.55,96.22,40.55s-38.84-31-67.13-74.4c4.89-29.58,9.81-54,28.36-81.8Z"}),wp.element.createElement("polyline",{className:"epytcls-4",points:"102.6 133.11 102.6 133.11 192.98 185.28 102.6 237.22 102.6 133.11"})))),"YouTube Wizard"),wp.element.createElement("div",{className:this.props.isSelected?"":"epytblock__faded--off"},wp.element.createElement("div",{className:"components-placeholder__instructions"},"Click the button below to easily embed a video, playlist, channel, gallery, or live stream."),wp.element.createElement("div",{className:"components-placeholder__fieldset"},wp.element.createElement("div",null,wp.element.createElement(v,{isPrimary:!0,onClick:this.showModal},"Open Wizard"),this.state.show?wp.element.createElement(y,{title:"YouTube Wizard",className:"epytblock epytblock__modal",onRequestClose:this.hideModal,shouldCloseOnClickOutside:!1},wp.element.createElement("iframe",{title:"YouTube Wizard",src:window._EPYTA_.wizhref+"&clientId="+this.props.clientId})):null))))}}]),t}(f),save:function(e){return wp.element.createElement(d,null,e.attributes.shortcode)}})},function(e,t){},function(e,t){},function(e,t,n){function o(e,t,n){function o(t){var n=b,o=h;return b=h=void 0,O=t,E=e.apply(o,n)}function u(e){return O=e,_=setTimeout(f,t),j?o(e):E}function p(e){var n=e-x,o=e-O,r=t-n;return M?s(r,g-o):r}function m(e){var n=e-x,o=e-O;return void 0===x||n>=t||n<0||M&&o>=g}function f(){var e=i();if(m(e))return d(e);_=setTimeout(f,p(e))}function d(e){return _=void 0,T&&b?o(e):(b=h=void 0,E)}function w(){void 0!==_&&clearTimeout(_),O=0,b=x=h=_=void 0}function v(){return void 0===_?E:d(i())}function y(){var e=i(),n=m(e);if(b=arguments,h=this,x=e,n){if(void 0===_)return u(x);if(M)return clearTimeout(_),_=setTimeout(f,t),o(x)}return void 0===_&&(_=setTimeout(f,t)),E}var b,h,g,E,_,x,O=0,j=!1,M=!1,T=!0;if("function"!=typeof e)throw new TypeError(a);return t=l(t)||0,r(n)&&(j=!!n.leading,M="maxWait"in n,g=M?c(l(n.maxWait)||0,t):g,T="trailing"in n?!!n.trailing:T),y.cancel=w,y.flush=v,y}var r=n(0),i=n(8),l=n(11),a="Expected a function",c=Math.max,s=Math.min;e.exports=o},function(e,t,n){var o=n(1),r=function(){return o.Date.now()};e.exports=r},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(t,n(10))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"===typeof window&&(n=window)}e.exports=n},function(e,t,n){function o(e){if("number"==typeof e)return e;if(i(e))return l;if(r(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=r(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=s.test(e);return n||u.test(e)?p(e.slice(2),n?2:8):c.test(e)?l:+e}var r=n(0),i=n(12),l=NaN,a=/^\s+|\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,u=/^0o[0-7]+$/i,p=parseInt;e.exports=o},function(e,t,n){function o(e){return"symbol"==typeof e||i(e)&&r(e)==l}var r=n(13),i=n(16),l="[object Symbol]";e.exports=o},function(e,t,n){function o(e){return null==e?void 0===e?c:a:s&&s in Object(e)?i(e):l(e)}var r=n(2),i=n(14),l=n(15),a="[object Null]",c="[object Undefined]",s=r?r.toStringTag:void 0;e.exports=o},function(e,t,n){function o(e){var t=l.call(e,c),n=e[c];try{e[c]=void 0;var o=!0}catch(e){}var r=a.call(e);return o&&(t?e[c]=n:delete e[c]),r}var r=n(2),i=Object.prototype,l=i.hasOwnProperty,a=i.toString,c=r?r.toStringTag:void 0;e.exports=o},function(e,t){function n(e){return r.call(e)}var o=Object.prototype,r=o.toString;e.exports=n},function(e,t){function n(e){return null!=e&&"object"==typeof e}e.exports=n}]);youtube-embed-plus/dist/blocks.style.build.css000064400000000000151435171370015457 0ustar00youtube-embed-plus/dist/blocks.editor.build.css000064400000001623151435171370015621 0ustar00.components-modal__frame.epytblock__modal{height:calc(100vh - 50px);left:50%!important;max-height:calc(100vh - 50px);max-width:90%;position:absolute;top:25px;transform:translateX(-50%)!important;width:950px}.components-modal__frame.epytblock__modal .components-modal__header{margin:0}.components-modal__frame.epytblock__modal .components-modal__content{padding:0}.components-modal__frame.epytblock__modal .components-modal__content>div:not([class]){display:block;height:100%;width:100%}.components-modal__frame.epytblock__modal iframe{display:block;height:calc(100% - 60px);width:100%}.epytblock .components-placeholder__fieldset{max-width:100%}.wp-block[data-type="epyt/youtube"]>div:after{bottom:0;content:"";cursor:pointer;left:0;opacity:0;position:absolute;right:0;top:0}.wp-block[data-type="epyt/youtube"].is-selected>div:after,.wp-block[data-type="epyt/youtube"]>div.components-placeholder:after{display:none}youtube-embed-plus/screenshot-2.jpg000064400000322677151435171370013341 0ustar00ÿØÿá".ExifMM*bj(1r2އi¤Ð ü€' ü€'Adobe Photoshop CS5 Windows2013:11:21 22:31:51   &(. øHHÿØÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀT "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?Áé™=8Zãu”9à~–¸l2ôŽïÍvÏúÚ¯“‘ƒö‡}žÖ§Os|=ßDíöÿ%{%®Œºém ØHÜ}0AfïvßgÒöÿÅ¿ûõsšâ?g2Ñ¹Ðæúl€ 7ÚïS~æ{·þ-Óä´ätS@Ü[|\×Ð'ÚïÎüÇà_ðŠNÈú¾Ö¶÷½ÅÆ^KZZØöŸÍ}/Íý/ýmzÅvu ‹ºmgèêÂÀ8ý$oÝùÿGýlS¡ùVYX»¼v88ØNÇ–=öµ¿IépŸµ\C±û ä7[Ñ…o4e¹ö ×íê>–ØÛìÝùÊV_Ћluy.kˆ¥\¡ÞÿE»Ýê?ýŸ¹ßúÙ½*¿Ñ³üÆÿäSÓUG$[#c¿5£»|Kã&þ€Yý%̳o ;„†žö~ý›?sÓÿÁ6äâÈÝk"Fí®lÇçlÜvîýÕî·ßÒñìdYE6: XòÆ’ ÚØk¿yɺpy­ÛšâÇØ‚ÖzÏ.öûXÚœ×z¿Í¥a&2cÝñWåtSs"ÚÍCÔ/-sšßûJÍŽÝeY?÷!ìuØÿú2½ù8³½ ™éÚws ÷;ôžöîæ½{¶`UI½Á†¦ÅÍný#~à+s½žôoOebË+kˆo½»H'³šàÏí¤‡Æ*Ëú¶:=‚ç9ÝYÎp¥Í°z` †·¿Þ+ôö—±ÍÙeÛÕ´ãwµ‘:ÃÚ 'w·r÷‡;­{ÝéÔÝöoµ±»{¿“µE–a=²XÚõ€,nÙÓÔön¤ö~âJ|QÙ]æÙ²× "§¹í/–ot4ý ¾¯±ßúM"îŽÚÚq²Ýe›¡Í³c@l}0à~–ïÍ^ÚÌž•c Œ}%‚%þÝ¢ZË[îú>êí­è…ظP,!®ú:ôZïå$§ÁþÓþš¿ó‡÷¥öœoôÕÿœ?½{³¬ÁmÞ†ÀlðmeÑô>‘cK[üíç©`84ÔàCˆ#i¿N#÷?9%>öœoôÕÿœ?½/´ã¦¯üáýëÝYwO{7ÃØÝúFúgnžý¶†;g¹n¼Es^¶}hÞÿÝö¤§Á~Óþš¿ó‡÷¥öœoôÕÿœ?½{ÆîŸãOÑõ?7è¤þ¦¿M Ù]1¬kÎÒǸ9¬.k!–½ÎkNÖ1Îúi)ÿÐô7:¦=•:Çï°ÃZ{ñù[›ÓÎéÉٱŇ{‹uiØí»¾—½}Ÿí‚ß´Æßåíú[üŸÎØÕ³ òZÖÓq®e 1ÛeÎ߸k³uµY¿þ»ÕúR©v=õ‹(´ØÃ¦æ¸óû¿ÖÕÓ¼ÿó“RÚsŽ+qkižÏ[þ¶«u®¦{IÃp#k _–àCÛî·ß‡ÍoýÚ.ÿ…¥TÈÄÈéî èØ•8=ÏvK¬qÞã¾²×:û ì¾ç6̯çßÿ]ÿj€³`PêzŸðYrú`#<¼rÉŽ'?ïdù?ð®7HôšH{]köÚ,/n¯µ¾¶ýÝþ•½2»oõ½WµÁâÆ´€ð+lû™û´3þŸü§”Ü®¶úß=5•?ѱõ—Z=PèPêÚwþ‘៟üÚNÉëf ötö6ÏUì5=â a­ôîÞ×{?I»úÿÈOáÈ5¸¼¾×W¥ããîôžæË\Ðïnæ›6zköÿÀÖí¿Íÿà~˜êè˜uZcÍkZÖ,³ÛS+­î²šße¬nÿüÑÌng^}Ÿ²™[IpõŸp-kk­Îc?Hæý•ßhwÐR=iô¼ ×kq+¹Žs†×åuý;`{žÆiéý£üü2\>b¸¼¾×Q&€Z]cÞXivÞõ3Çè~åh-èÍ%Í{öVÖŠé, ¼6m;½Bƽ®ÛïÆz•Ùej›r:ǯöwáL¼×öÖ¹»@Ú?Z8åßAÎÝú?ýýûkÊúÂÑC,éíµÀ3íîemq}{ì´XÿCì×þ‰ÿÏàˆðõµqy}®Ûún=™]l<<84ÛÛUo‡}/ûM^͉QÓé©ï³yu–0Vç íkcc[û«du×cãÛö*ë¹õïÈÆ/i,{]·Ð8µ¿¬×fÿSoêßg·éú•¨S›õ„éoJlK!âÖ·Ú÷Ù¼z[Ÿ·Ð¥´ûýOømŸàá*âþVìþÉÄ h¯ôf±Xahh£õ6¸´45Û½gïM_Iƪ§Õ[‹Zö4²Ö¹Æ×»oï¹fÙ‘ÖK²ÙV+eßeµÏõÐчú9kvÝ>¥›ÿâ¾Õר°Uv y ö´Öí¬ÜãEMkYîµû}\‹¯³Ñ¡žž:\>jâòû]qÒ±Ã6‡»w¬r½²Èüßs§_MÅo¥¿ô¾°7xiÕ{n{‹CZß§_³jÆÇÊëÆÆ3#`eÁÃYeîÚÚØÿÑíº¼V†ýGù–gQ ÐËKË‹3kGó^ þ_ÓM‘¤”mtA–Æ#ûÒÿ¤ÿÿÑé®úÇÑl¾»¿YicƒËv4‡––{]g·nßÌCý±õYïuž†Asœââwîßþþëö'ÖPÇV0,ôÜæ¸ËX^6îÝ]vúÞÊîßúogæ1[]yÁƒ#¢ ’Æ5ÖÌ4GæÙô¬w¾ÏýWé N½>»®œ1ÔjBv.C„ÇÛ—îz¾oï:xßX~®c<Û^@sÚ+&7 ­%ûFëç+ó¿£Ìm¾yŸüú±[‡×¶¸YÑÏ{ZÇ>ͤ–°V×~“÷©õ=®P;¯ Íý‹59î°TvìÍe[v‹[íg¥¿þ2ÄN»• ¶î¡õ¢Û²hn ŽÅÄiœ› ëœ?rŠÞÛjfÆÿ„{ÿœþ§é/ý^ê ö€£¶Œ›˜íÙ#u¶¹¡ŸO!ϲÇ;e{ý?æ—=‘Ò:åÛvts¶gÒÚ7I‘¾lüÄ~õs«ÙÕqþÕf%58\û\ZèÈsk¯cï±ûë^¢o»ßϧ÷YNið b£©psô¿[/òŸá¾‚«ú˜v=Þæ´é0t;?꽪ÂÌ}8>ß[Í-},в·ºÇ=ÏèYm;Ù[¾š,M²ìÁaua‡@âáMÜÏ’`üÖ¾²]£@p“ª'£5¦pž}+7ú–¸7Óõ¶íý×z{Ûÿ“Rié"¿´W„XïU¬pmxs?J×{œk]ôvoFÏtPìÝßÓö—o¯ky;„ K5×÷Úæ%e>¦î±õµ í’G ì-þË•7¿¥¸Úó‚ly9ߢl¼?o§¿q×çÄÎÉèíhs±Œ=Ö<ƒIкͶÝk GêYW©êÛýt¬÷UÍ×?§³v÷ÖÝ­ÞépÓùç_¢–ì …ûëØ9váI攪7'§9•XÜ[ËêXïLŸkKv×î÷úvnÝOø$ÆÞ”ßUÃ5†^I¨’×VÇØÇ·Ù¾×ìÙþôiYUÍÐìÒàêË[ÉÜ ~?ÉNá†Ñ¹ÅL’ÉY‡'£6²­|:¶Ðá÷Ô×:¶í÷\Ö"½ý,¹¸¶`¸‡<ÔÀjgé†û½íÜÆWîý*VUC³q¯ÀsƒZúˉ- ÈÍçów±0»¦Ÿ£mFDèöðcÏùlTÙÒÏ¿ì–3Ò´MAcI´ôý6·þ14ô¯Hméĵ•—†z-Æú…¾×G¹ÎÆý>Ÿé*JÏŠ¨vn‹ºvÒýõìn…Ò#Fú¼ÿÅ{ÔÏØÁ –KD¸Hík½ŽwúÖ Ê>®‚ÂÇUìo°  ,üÝÿ¥oÚ}_úâ>SsäÕ‹EÕËv¹çk†‡síÐú?õÅ·7udàP=ŽÞÿø?¢ÚÿIìÿ bJFÖ}]ÝŽÖš¥¢£Œw ?õoIó¶ÏÓ¢RÞŒr)#Öc ¬ÕÿAÃü$ý6í?œžsƒ55.hx€á½Í®§ƒpg¿þ'38XÿOµï8î& ’ÖëÙ½®µïÛÿü·¥5­gÕfÑP±ôŠ©¤:“êôg{6íïfúÑÃ: PÒú‡ØÞO¹â+sžÃ×kIèìßü„=Ùn.%d9­ª’àIgªÖ;k6¹³VÏÑÿ7ÿéÔm™Þ°c°ñÍ/%ö<:d€_°°{ÝcœüÄ”Žºz´°Ö –ŸÑ—M…ޝÚÇ;éz[þŠE¿W]]{NÇ̗ĹÍwwóž›[üµ'ž£S+uX4——½­p8¬®¯kw=Ì.÷oÿ‚ÿ„NkÎm{q1ÜHýÐA/÷m³aݲ–±ßÍý4”ªúÁ¶¯Iìÿ6Cqv¹¿KÚÖú(˜øýÍÈÇ u†–½¤»ô’úÝ_.÷5Þ£šÌÏ´Cñ©û1%¾ØÞ —»]¾›µÿég¨µ­?b ÃcÃ_þ9Îmuû>—çz¿¾Š“7ªô×´½¹5–ºw"7noï{J“º–Z×:öð 0]ºvmoÒví®@¹™, SƒEŒahg¸4íÚ^v·Óöí½¬cíÄ­¢öZã^-6Ú´­yqq;½p­•VÔÿÿÔïßö?·7Ôþk}9³'lG»Õþ¿èözJµÿ°d}£o/Ù¿ÔÛô¿IéþfÏS÷=ŸÎl_:$úÿ‚¶{~øOÐÿö1#ù©Ü#éý)öÿÒFÂý‰öŸÔv}£c£nÿ¡ú?Séû?Яœ’N;Ÿê°n?›Üm»ôê•Ò‡ü[¿+Ì (Ù_ª’_*¤’Ÿ¦²¿kú×}›o§°zS·éAž;~ß§ú?MWoüâÝîÛ·m“>žÏÐmþG©ûßùí|Ú’J~’³þqi·oòölãYôýOÎÝþ“üü"vÎ/ToÙé÷úÃçþ—¥±|Ø’J~‰êjý³DDß_¯êñ¾[öOÓ÷ú~¯ïþ¯öåЯ•RIOÕI/•RIOÕI/•RIOÕI/•RIOÿÙÿí)¤Photoshop 3.08BIM%8BIM:± printOutputPstSboolInteenumInteClrmprintSixteenBitbool printerNameTEXTHP Officejet Pro L7500 Series8BIM;²printOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHH8BIM&?€8BIM 8BIM8BIMó 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMw! 9 WordPress Test Site  WordPressnullboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?ð8BIM8BIM ! Tà€ øÿØÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿí Adobe_CMÿîAdobed€ÿÛ„            ÿÀT "ÿÝ ÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?Áé™=8Zãu”9à~–¸l2ôŽïÍvÏúÚ¯“‘ƒö‡}žÖ§Os|=ßDíöÿ%{%®Œºém ØHÜ}0AfïvßgÒöÿÅ¿ûõsšâ?g2Ñ¹Ðæúl€ 7ÚïS~æ{·þ-Óä´ätS@Ü[|\×Ð'ÚïÎüÇà_ðŠNÈú¾Ö¶÷½ÅÆ^KZZØöŸÍ}/Íý/ýmzÅvu ‹ºmgèêÂÀ8ý$oÝùÿGýlS¡ùVYX»¼v88ØNÇ–=öµ¿IépŸµ\C±û ä7[Ñ…o4e¹ö ×íê>–ØÛìÝùÊV_Ћluy.kˆ¥\¡ÞÿE»Ýê?ýŸ¹ßúÙ½*¿Ñ³üÆÿäSÓUG$[#c¿5£»|Kã&þ€Yý%̳o ;„†žö~ý›?sÓÿÁ6äâÈÝk"Fí®lÇçlÜvîýÕî·ßÒñìdYE6: XòÆ’ ÚØk¿yɺpy­ÛšâÇØ‚ÖzÏ.öûXÚœ×z¿Í¥a&2cÝñWåtSs"ÚÍCÔ/-sšßûJÍŽÝeY?÷!ìuØÿú2½ù8³½ ™éÚws ÷;ôžöîæ½{¶`UI½Á†¦ÅÍný#~à+s½žôoOebË+kˆo½»H'³šàÏí¤‡Æ*Ëú¶:=‚ç9ÝYÎp¥Í°z` †·¿Þ+ôö—±ÍÙeÛÕ´ãwµ‘:ÃÚ 'w·r÷‡;­{ÝéÔÝöoµ±»{¿“µE–a=²XÚõ€,nÙÓÔön¤ö~âJ|QÙ]æÙ²× "§¹í/–ot4ý ¾¯±ßúM"îŽÚÚq²Ýe›¡Í³c@l}0à~–ïÍ^ÚÌž•c Œ}%‚%þÝ¢ZË[îú>êí­è…ظP,!®ú:ôZïå$§ÁþÓþš¿ó‡÷¥öœoôÕÿœ?½{³¬ÁmÞ†ÀlðmeÑô>‘cK[üíç©`84ÔàCˆ#i¿N#÷?9%>öœoôÕÿœ?½/´ã¦¯üáýëÝYwO{7ÃØÝúFúgnžý¶†;g¹n¼Es^¶}hÞÿÝö¤§Á~Óþš¿ó‡÷¥öœoôÕÿœ?½{ÆîŸãOÑõ?7è¤þ¦¿M Ù]1¬kÎÒǸ9¬.k!–½ÎkNÖ1Îúi)ÿÐô7:¦=•:Çï°ÃZ{ñù[›ÓÎéÉٱŇ{‹uiØí»¾—½}Ÿí‚ß´Æßåíú[üŸÎØÕ³ òZÖÓq®e 1ÛeÎ߸k³uµY¿þ»ÕúR©v=õ‹(´ØÃ¦æ¸óû¿ÖÕÓ¼ÿó“RÚsŽ+qkižÏ[þ¶«u®¦{IÃp#k _–àCÛî·ß‡ÍoýÚ.ÿ…¥TÈÄÈéî èØ•8=ÏvK¬qÞã¾²×:û ì¾ç6̯çßÿ]ÿj€³`PêzŸðYrú`#<¼rÉŽ'?ïdù?ð®7HôšH{]köÚ,/n¯µ¾¶ýÝþ•½2»oõ½WµÁâÆ´€ð+lû™û´3þŸü§”Ü®¶úß=5•?ѱõ—Z=PèPêÚwþ‘៟üÚNÉëf ötö6ÏUì5=â a­ôîÞ×{?I»úÿÈOáÈ5¸¼¾×W¥ããîôžæË\Ðïnæ›6zköÿÀÖí¿Íÿà~˜êè˜uZcÍkZÖ,³ÛS+­î²šße¬nÿüÑÌng^}Ÿ²™[IpõŸp-kk­Îc?Hæý•ßhwÐR=iô¼ ×kq+¹Žs†×åuý;`{žÆiéý£üü2\>b¸¼¾×Q&€Z]cÞXivÞõ3Çè~åh-èÍ%Í{öVÖŠé, ¼6m;½Bƽ®ÛïÆz•Ùej›r:ǯöwáL¼×öÖ¹»@Ú?Z8åßAÎÝú?ýýûkÊúÂÑC,éíµÀ3íîemq}{ì´XÿCì×þ‰ÿÏàˆðõµqy}®Ûún=™]l<<84ÛÛUo‡}/ûM^͉QÓé©ï³yu–0Vç íkcc[û«du×cãÛö*ë¹õïÈÆ/i,{]·Ð8µ¿¬×fÿSoêßg·éú•¨S›õ„éoJlK!âÖ·Ú÷Ù¼z[Ÿ·Ð¥´ûýOømŸàá*âþVìþÉÄ h¯ôf±Xahh£õ6¸´45Û½gïM_Iƪ§Õ[‹Zö4²Ö¹Æ×»oï¹fÙ‘ÖK²ÙV+eßeµÏõÐчú9kvÝ>¥›ÿâ¾Õר°Uv y ö´Öí¬ÜãEMkYîµû}\‹¯³Ñ¡žž:\>jâòû]qÒ±Ã6‡»w¬r½²Èüßs§_MÅo¥¿ô¾°7xiÕ{n{‹CZß§_³jÆÇÊëÆÆ3#`eÁÃYeîÚÚØÿÑíº¼V†ýGù–gQ ÐËKË‹3kGó^ þ_ÓM‘¤”mtA–Æ#ûÒÿ¤ÿÿÑé®úÇÑl¾»¿YicƒËv4‡––{]g·nßÌCý±õYïuž†Asœââwîßþþëö'ÖPÇV0,ôÜæ¸ËX^6îÝ]vúÞÊîßúogæ1[]yÁƒ#¢ ’Æ5ÖÌ4GæÙô¬w¾ÏýWé N½>»®œ1ÔjBv.C„ÇÛ—îz¾oï:xßX~®c<Û^@sÚ+&7 ­%ûFëç+ó¿£Ìm¾yŸüú±[‡×¶¸YÑÏ{ZÇ>ͤ–°V×~“÷©õ=®P;¯ Íý‹59î°TvìÍe[v‹[íg¥¿þ2ÄN»• ¶î¡õ¢Û²hn ŽÅÄiœ› ëœ?rŠÞÛjfÆÿ„{ÿœþ§é/ý^ê ö€£¶Œ›˜íÙ#u¶¹¡ŸO!ϲÇ;e{ý?æ—=‘Ò:åÛvts¶gÒÚ7I‘¾lüÄ~õs«ÙÕqþÕf%58\û\ZèÈsk¯cï±ûë^¢o»ßϧ÷YNið b£©psô¿[/òŸá¾‚«ú˜v=Þæ´é0t;?꽪ÂÌ}8>ß[Í-},в·ºÇ=ÏèYm;Ù[¾š,M²ìÁaua‡@âáMÜÏ’`üÖ¾²]£@p“ª'£5¦pž}+7ú–¸7Óõ¶íý×z{Ûÿ“Rié"¿´W„XïU¬pmxs?J×{œk]ôvoFÏtPìÝßÓö—o¯ky;„ K5×÷Úæ%e>¦î±õµ í’G ì-þË•7¿¥¸Úó‚ly9ߢl¼?o§¿q×çÄÎÉèíhs±Œ=Ö<ƒIкͶÝk GêYW©êÛýt¬÷UÍ×?§³v÷ÖÝ­ÞépÓùç_¢–ì …ûëØ9váI攪7'§9•XÜ[ËêXïLŸkKv×î÷úvnÝOø$ÆÞ”ßUÃ5†^I¨’×VÇØÇ·Ù¾×ìÙþôiYUÍÐìÒàêË[ÉÜ ~?ÉNá†Ñ¹ÅL’ÉY‡'£6²­|:¶Ðá÷Ô×:¶í÷\Ö"½ý,¹¸¶`¸‡<ÔÀjgé†û½íÜÆWîý*VUC³q¯ÀsƒZúˉ- ÈÍçów±0»¦Ÿ£mFDèöðcÏùlTÙÒÏ¿ì–3Ò´MAcI´ôý6·þ14ô¯Hméĵ•—†z-Æú…¾×G¹ÎÆý>Ÿé*JÏŠ¨vn‹ºvÒýõìn…Ò#Fú¼ÿÅ{ÔÏØÁ –KD¸Hík½ŽwúÖ Ê>®‚ÂÇUìo°  ,üÝÿ¥oÚ}_úâ>SsäÕ‹EÕËv¹çk†‡síÐú?õÅ·7udàP=ŽÞÿø?¢ÚÿIìÿ bJFÖ}]ÝŽÖš¥¢£Œw ?õoIó¶ÏÓ¢RÞŒr)#Öc ¬ÕÿAÃü$ý6í?œžsƒ55.hx€á½Í®§ƒpg¿þ'38XÿOµï8î& ’ÖëÙ½®µïÛÿü·¥5­gÕfÑP±ôŠ©¤:“êôg{6íïfúÑÃ: PÒú‡ØÞO¹â+sžÃ×kIèìßü„=Ùn.%d9­ª’àIgªÖ;k6¹³VÏÑÿ7ÿéÔm™Þ°c°ñÍ/%ö<:d€_°°{ÝcœüÄ”Žºz´°Ö –ŸÑ—M…ޝÚÇ;éz[þŠE¿W]]{NÇ̗ĹÍwwóž›[üµ'ž£S+uX4——½­p8¬®¯kw=Ì.÷oÿ‚ÿ„NkÎm{q1ÜHýÐA/÷m³aݲ–±ßÍý4”ªúÁ¶¯Iìÿ6Cqv¹¿KÚÖú(˜øýÍÈÇ u†–½¤»ô’úÝ_.÷5Þ£šÌÏ´Cñ©û1%¾ØÞ —»]¾›µÿég¨µ­?b ÃcÃ_þ9Îmuû>—çz¿¾Š“7ªô×´½¹5–ºw"7noï{J“º–Z×:öð 0]ºvmoÒví®@¹™, SƒEŒahg¸4íÚ^v·Óöí½¬cíÄ­¢öZã^-6Ú´­yqq;½p­•VÔÿÿÔïßö?·7Ôþk}9³'lG»Õþ¿èözJµÿ°d}£o/Ù¿ÔÛô¿IéþfÏS÷=ŸÎl_:$úÿ‚¶{~øOÐÿö1#ù©Ü#éý)öÿÒFÂý‰öŸÔv}£c£nÿ¡ú?Séû?Яœ’N;Ÿê°n?›Üm»ôê•Ò‡ü[¿+Ì (Ù_ª’_*¤’Ÿ¦²¿kú×}›o§°zS·éAž;~ß§ú?MWoüâÝîÛ·m“>žÏÐmþG©ûßùí|Ú’J~’³þqi·oòölãYôýOÎÝþ“üü"vÎ/ToÙé÷úÃçþ—¥±|Ø’J~‰êjý³DDß_¯êñ¾[öOÓ÷ú~¯ïþ¯öåЯ•RIOÕI/•RIOÕI/•RIOÕI/•RIOÿÙ8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIMÿá#http://ns.adobe.com/xap/1.0/ ÿâ XICC_PROFILE HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptðbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiømeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ o¢8õXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view¤þ_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ¤©®²·¼ÁÆËÐÕÛàåëðöû %+28>ELRY`gnu|ƒ‹’š¡©±¹ÁÉÑÙáéòú &/8AKT]gqz„Ž˜¢¬¶ÁËÕàëõ !-8COZfr~Š–¢®ºÇÓàìù -;HUcq~Œš¨¶ÄÓáðþ +:IXgw†–¦µÅÕåö'7HYj{Œ¯ÀÑãõ+=Oat†™¬¿Òåø 2FZn‚–ª¾Òçû  % : O d y ¤ º Ï å û  ' = T j ˜ ® Å Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ã Þ ø.Id›¶Òî %A^z–³Ïì &Ca~›¹×õ1OmŒªÉè&Ed„£Ãã#Ccƒ¤Åå'Ij‹­Îð4Vx›½à&Il²ÖúAe‰®Ò÷@eНÕú Ek‘·Ý*QwžÅì;cвÚ*R{£ÌõGp™Ãì@j”¾é>i”¿ê  A l ˜ Ä ð!!H!u!¡!Î!û"'"U"‚"¯"Ý# #8#f#”#Â#ð$$M$|$«$Ú% %8%h%—%Ç%÷&'&W&‡&·&è''I'z'«'Ü( (?(q(¢(Ô))8)k))Ð**5*h*›*Ï++6+i++Ñ,,9,n,¢,×- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/þ050l0¤0Û11J1‚1º1ò2*2c2›2Ô3 3F33¸3ñ4+4e4ž4Ø55M5‡5Â5ý676r6®6é7$7`7œ7×88P8Œ8È99B99¼9ù:6:t:²:ï;-;k;ª;è<' >`> >à?!?a?¢?â@#@d@¦@çA)AjA¬AîB0BrBµB÷C:C}CÀDDGDŠDÎEEUEšEÞF"FgF«FðG5G{GÀHHKH‘H×IIcI©IðJ7J}JÄK KSKšKâL*LrLºMMJM“MÜN%NnN·OOIO“OÝP'PqP»QQPQ›QæR1R|RÇSS_SªSöTBTTÛU(UuUÂVV\V©V÷WDW’WàX/X}XËYYiY¸ZZVZ¦Zõ[E[•[å\5\†\Ö]']x]É^^l^½__a_³``W`ª`üaOa¢aõbIbœbðcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišiñjHjŸj÷kOk§kÿlWl¯mm`m¹nnknÄooxoÑp+p†pàq:q•qðrKr¦ss]s¸ttptÌu(u…uáv>v›vøwVw³xxnxÌy*y‰yçzFz¥{{c{Â|!||á}A}¡~~b~Â#„å€G€¨ kÍ‚0‚’‚ôƒWƒº„„€„ã…G…«††r†×‡;‡ŸˆˆiˆÎ‰3‰™‰þŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘¨’’z’ã“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ ¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿 æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿÿîAdobed@ÿÛ„      ÿÀÿÝAÿÄã   !"S1A’ÒÓ•Q‘Ñ2#3TÕVBR4”aqÁr£$t´Ô6Wb²C³%5vw ð¡±sƒ„µ¶78áDu&·‚ÂÃEÅ!1AQ"a2qB‘Rr#ð¡±b‚3Á’¢CÑá²cs³4ñ´Sƒ“$Ät5£ÃD„µÿÚ ?𾔬¸&ÚM‰[]æOœè±+i¹8á®Â)ÿã¥+ÐwMÈb,¦*l2v„ˆ²‡:5MgX¯I iRX–ä¤EE0a݉=-)U|Ó‰ì1ÙŽBb$ÚûV¢¹;ÙËa÷¤Ee]z ¨ËÛŠ)(6à§Š&ý*VœÒ•Å?¤ÄþÛÿèÏiJå¥)¥)º}Ý)M)M)_›§ÝM)_ºRšRšRšR¿7OºšR¿t¥4¥4¥~nŸwJW”¦”®-ÿG…þiþd4¥~ª¢&ëà‰¥+cCâ>LŸR7q0Ëk¾ëf½ xÃmЂ9š]Å#l{¥è®è›®É㮇À¹²áÄvtƒ¤ï‘–Hã§êÒ«8ÁÛwOùn„Fà lÄ/-DûkžKÄtº'™·S¥ÜLVM ê™a ~.6鼬zVúÇãÜra¡“,3ZHÙeks²)á"c?=^a;î?5¤Žò2'ù7ÜôÐU@ {‚t•ÈËØÚpêᨸƒŽW…m'É£l%À¹|uûº¨§øûʟ⪘°§2ìnò{$› ƒœò')¡:ìf›\6vï¾j ÚŠor«~Fq£ÛV]„],m7‚ÍwgÂK?q•.=M dÝÅ´ lyΚw‘ñLws´fCw‰ëD·®»‘]%§I²mÙ•›0bà ˜*®Ê¨£ºn¸\FFMÀ A‚»¯‰R ǵˆ 'F’™ÐD7 ÁØ:‘ZÓZUk‹ÑášFÿ™ )[ŠñúŒ£;¥£½’ä:©a4¤ÍiäŽl«ÞxWÀT ·_ )R|ŽÍ¦É“#JÌ.n§Ó<–@â»{mª ô¶N’¢¨†Û/A|?”«G9dXT8æÚ7o;Ï–`/°1ç«èÜ!d¥€¢ ªŠЇ «Ô©ã¾”©>É2Zh Ïóìâ|oŠZ­žknÒ=xdÚ#tæ†çD³q°!mA Ü?»«»­ å(VP¼¿8‘+s* ÇÓw*†•bÛzj§yÛ;.¥ØÛ¨ÐNb™µ¬n~CpÄlk‰cD¹­¨Á#î#’N°W6BeÂQ|¢“­«ôô´ €uz:åËŒžÛÓÈnvƨ§î”Í·áê Å´-Äž­låB«—c¶¶2ŒJôªl©¶“å=oY×þæŽÿÏ1¥+–”¯ ^æè^¤Ì•®ÊåC=¿4‹·{êþÐvz~>žïs}¾=·ø´¥{NT|´:ù>Ñù¾þÝ®×Jõõõxtí¾ûøm¥+â.L• ’äIª- ZLúS}¼Ÿ|ü¾Ûøþom)PKùØŸçqçÃJW-)W®=¯ãë;¹Qù*þv9B0\r,êöÉÇJZ:ÒjRô¨)®ý â‰ãñ*•ìÞNƸEìG‰C2Ín*(˜¦QÁ§EeÃvl?/ ÇÐ`¼¢]´ivQoÄ—Ñø…Jùì;ô¦ÿÞ:R½øÔhùO*qqFhÈxî>$RlW®],¸q ]]·E(’]^¯uàmuÕ–sÜdæs+{mk[ø¼‡Ä'®vXìp$jUõ!×nU×_þ)­:Çb‡E[>úõº«LžªÂê%Ì‹êˆ1"n¾c\­§HG•Ž’u¢D4Dè-ø²‡’lDhܹ 1UÊm0¤Ì¶±+ÓÎF^åØù[6E<- Ån×FêÖ%zxÍN±îùÙ²OÕYZ¨ßI¦“„‹¦Á+µ2’»ë¤t²›”u±”zQ: HvMnqØö³WkÏü  F]õ05ÕI#A"¸@ÈøË(PZ'üÞ«”í °ÀNšÉåûÖª˜»·f‰×Ÿ¤fkíÔ? „r0¸HɸB ¢‘"®ÂŸÚ×6fE, $r<½Õ¾eåF ç>:sý&¢µ­gM)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)_ÿÑð§p?žŸJTÞ=~¸ý«"ËS˜èv=kĨԨ²&d0j>(†Ùªnž"»x¢iJô–!šU¿œcùÙØÂÈ›¤¬Zä­²³‡Mfâ¶„ŽrÏq˜’ –ÜQGsÓØ DtÒ•G,𣠦kfÁ˜s­–Ö“¯y&³˜#*ÿ¬&†Ì¸ÉÂq¶YêCsÒp‘”­o÷ œqåqÃU'"܈—ÅUU|UWJW1Y16$]•õ_êÏiJýîóÓïéJ²bù–A…Ø?kŒ[Lù1‚ô†Å³RbB"88$ž;"¢íº*"¢¢¦ú†#!Ù„géÊ€C+qS#Û·¿}Ž•ù1¾…ZañlûXåÔ–¥ÙWvÚ^ã̪(p\”StD]“t]“G…á$iŸnœô÷Ô( ÌÃv`2?]M»ÊY£Ô¬Ð9vÚ×°ÄXˆâDˆ2Ü Äv4wf#)!Öš$EÍÅÙ<<ZêzŸÁ§›(€ÍÁŒqi¨#˜eñµõ`à7#–ÕÝ_ËYÍeõ¼kÖŽnM4,®’L(R™vcn+ÍÉï°ãMºª m€ÿ%SY¨µB”Èð1àÁƒÕœÞ÷¶ö…ð*"¿30Ùu’em«7öÉ=²²›p£Ùa¯òÛÚÊwv›ôûcèþ*mè¢xéhéýÑÙ%¿i5¡ÊÄ0Ÿ5¤ÿØ¿béã¹Ö£ÈìãÑÌÆÙœKa1‹ pÐ^¹1ÆÚ>âZt‹¤›!l»ø§Á«ÞÝ0bÒHð&$þ¡Y¡°± |@7öÕ¾O/g’œŠù_·\i±¬N|Hp¢I“.*0üÉØmÉFK²¾G⪿ ®«ñäXðËù¾^¡¡ÓbFÄÕJ‚–Dãa;é5ܸÁÎYÍ]dÆìàÃZ„–à«­‰ |ø#Rû°£Æn;ÝàDî6]I²/† >Õ¶7É1ngmàîh]‰™3pyãxÙ§yá<‰MW2,¶ã*‘EÔ¨î}]a×E‰4ÑØ'¶cDi–AŒ‰zA7UU_-ê-©&7$ìÀØiQq´/&œ} hÚ#]dxÌÏŒÌñª¸¿ö}‘·»jµ-f¨ýCñlàÕ}G`6Õñªêëk£ùáDìxq™iãM…]ÙQ>ܦӧ"=Ì!½’4þÁG눂y›L‰;èu¦±˜å Ê3xãLÜ´žÉ¬¨](pÍÖ›–®+웤ʛ¬¹Ý4&œRmQU:vÐêdñK"š@a³Di2G«;³’IÔµúi×2H¤êb'Bd9mÆPä#·•›­ecÖÁ‡4‘Û#'Y‹ ¶Y£%"QRUÝw]VÞ¢ÇRcRg@ vl›ó5Žûxû||!Uîà=>þ­Q_˜¤xH¤ˆ¾R7‡þÄ4¥Û$TREOJVÚ­æìÂ0¬¡c9k• ÓÚä5I:l@ÅŸï6¾Ä¤„ºRµõþKu•[K½ÈíÒÖj¢½$‘6DDSÁQ4¥Yªù?(© ‡‹Çvž] ʇÊŽ¢Å÷öî8‡6#ÇÔHˆ›©|‰ð"&¥ÐO xf>Ýj[1ÄÉñ @ýU“#–²Ùu°j&Úú¸ç±™íË— L“8$mîD¥èªxøü:Í0ƒ>P³&èQ«Í ã3Æf¬¦Ý¶’c„“'Mµ­qÜç§ßÕê+ñ³âõ&ÉÍ×ÿlÆ”¯Þà=>þ”­Å¹òñ¦uSšµ ,Ê¡‰ÂýÕh^rD7˜i$EôÇ‹û áã¶”®¬£•y 4~ÍÌ1³•ÕÒvE(M|kÅ |¸ˆHЈø"'Oö÷_)TN°þr}ý)_b®ÃD$Uóq¼?öÁ¥+÷¸ÏO¿¥+ñL6ëDßãM¿¿¥*ÕçYVWYŒSd7«eY†DX8ÔEŸ-A–ú:Ùe³sÑ`w—Ãáñ]Ôª·p?žŸJUâ&fUÙL Ò ùEÉ«#3›m0,GŽ1[lšíöÍ¡A^¡]þÝ|ubä—'㛼nßý¾QU* "±ˆ_$ï¿î1µr…ɹ}}PÓĶ`"´Ü¦aÉ(PÜ›©Ý^e¸³M’“ë.¡iÁEê/Iw¦Aê-­´>*¦B±²ŽM"4ÛJØåbåÉÔ±oâ;° Ú5×zÊ®å¼ö¤)®ÉN(ã•ÒêiPYŽªÄ9Ê„ûhªÒ©)*"¡ä;'J¦É¦Aê_v·¨Câ«°ðöOXã@–Û¥¬\~&ÜøÌìtð­wÜç§ßÔÕ©Üç§ßÒ”îóÓïéJwùé÷ô¥;üôûúRÀþz}ý)Nà=>þ”§p?žŸJS¸ÏO¿¥)Üç§ßÒ”îóÓïéJwùé÷ô¥;üôûúRÀþz}ý)Nà=>þ”§p?žŸJS¸ÏO¿¥)Üç§ßÒ”îóÓïéJwùé÷ô¥;üôûúR¿ÿÒõ?ðØàïÚü÷úýgê½)Oá±ÁßµùïõúÏÕzRŸÃcƒ¿kóßëõŸªô¥?†Ç~×ç¿×ë?UéJ Žý¯Ï¯Ö~«Ò•Í¿ü78=£G-Ï P\BŸY·å›Uÿªþá.ÚR¸ Žý¯Ï¯Ö~«Ò”þû_žÿ_¬ýW¥)ü68;ö¿=þ¿Yú¯JSølpwí~{ý~³õ^”§ðØàïÚü÷úýgê½)Oá±ÁßµùïõúÏÕzRŸÃcƒ¿kóßëõŸªô¥?†Ç~×ç¿×ë?UéJ Žý¯Ï¯Ö~«Ò”þû_žÿ_¬ýW¥)ü68;ö¿=þ¿Yú¯JTu‡þ|'®¶òÜì—oåN¬_ý‰¥*Éÿá™Á74Ñ,ef<€Ûï“ÈbÕ…ZvÞ6Ód*¢_€~ÏáqÀ_¶œ‡ö…Wê)OáqÀ_¶œ‡ö…Wê)OáqÀ_¶œ‡ö…Wê)OáqÀ_¶œ‡ö…Wê)OáqÀ_¶œ‡ö…Wê)]ŽáyÀn(o™röÛm¡D°ªøÿýOòxéJëþûiÈhU~©Ò”þûiÈhU~©Ò”þûiÈhU~©Ò”þûiÈhU~©Ò”þûiÈhU~©Ò”þûiÈhU~©Ò•Øø^phöÙ—!/y¾Ñ*ØUx'X‡ýðî ¥+¯ø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JWc_ø^pN²òf\„DÀè‰XUlª„›ÿÑ?é¥+¯ø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JSø\pí§!ý¡Uú§JWïð¸à/Û>CûB«õN”¯ÿÓûa¥+_Üß[ÛOÃ^¥Â%Kœ€™nKQLOË4Ó¯Gm×¶1W:hHz‹¸ã-¸¥aã9½ÕžJæ/{A¢c1%HG™šN›É ¡¶OŒcŽÙ¹(Á²"ëCiÖÜp EJÈälÞv*ÚV/l2œ‚? 4™…–ÝšŽtºãÁQtЇŠ#j¾:éìûqÜd(LŒÓä#mq÷ÝÑí±^IJ(»ÁГ¡¬\{‘JM¾[ŽfU±1 ¼>,{9î„ÿ5Zíl¡5 MÌyˆdˆÙ‹ˆmJ§Â¨¾ÉÛ/¦¹1±e-i‘6 @‚°g0÷oë9T+ Ü¥$‚d… «&,q3¼}Dì‚eE6†¬º,îØ±Œä8åèú/>.+`¾’x§ÂšÉûl¨ÁY-° Éös­ñw˜2©du`»A޼ª—ó6)CqÇÌ%LÌ_;[D\Õ-µ¤=û»Nu¸½¿ÎÅ÷WÃ[áì2d9‚©¶ ›ŒDo¶¼f¹³ýO n¥YŠÜZ!Y‰´¶ߪ»r^Ç(r ¸æV½æñl¦&hV,·3Uì‹¢}ÅBmÁuK¥ ¸(ŸÙø4ÃÙ>OTCc mZö¶#qÏŒÓ?Ôqã8JË•˜\…Œå§b:`ê#~x™—âUÔÑr; ¢¢=9XWÒ&°Ô'‘Ôݾ܃4lº‘7M‹Çâ×?¡¿§i»”û7®¿™Åéú·‹>ô‹wößOm,s Jžªí¾QQWGd­uÌÉÌ1ôt;öŸpĬS¨zUwOÐ`ÈÎq…%„étßMôãPÝÎ%Çê—P†:¤[®Úí¯ Ç›á°ë¬ls*:úûvVMLé61šfS"‚ªãˆ. !"ªŠªx¦¥{l¬åÂ$A‘;HñáP{¼!C—[Z`ȃL0'U<ó–±ì1Èñ¥W^ä­êëeãX4ÜÈÌÙ¾Û#)ÆQq{‚I¸¢éé&ú۴쟸a¡ gª4•£”ôÆÿ²°ï~£¶ÄÍ!˜!dI Ê“ÄÇTÌxVÖ×wÓJSJSJSJT%׿?¸¿ßÒ•yÁÙjïð夻¥*Ý¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥+ÿÔûU%Ÿ3D~ëŒwÛ6ûì—KÔŠ@^;oº/ÝÒ•æË,~TìÆÔâ”)%©N·$â¨rÛ·!Љ*)¸‘zÉ:úUÃqÕ3%U*ÑCmËÜ7"kÉ ×±÷²E~?Z¼àµº;qIçMÃV‰%þSuRqi —¶*T0Ñdpxõ#ùØÎgWwc]謼±"#ªê¶³ŽÒ—¤ˆˆ¦›ï®ß§eLy˜¹€qºÎ»°m'õWõ\/—.!ñ´i¨LŠçrÀ1&µ~Y…r>S#’sh›5–¶õ´´xæ'nUrå?Ï91×Êux¸jj,÷Ñz‰v߯¶Í‡·ñ—‘êb²-é±m=-?D@Ðkƒ¼í»Žé²æ\aXaô‘^Óy,]®õƒbÌËjà.õTâl¾iòÔ©ØNBü ­ÌfU yy45¼îÔ¸è¼úJ7'02º]È»=*€$tŽéÞãÆ0깕Sh4ÐÚXGKOTÉêó|ŸO˘ç¹®LJ:œfV,uRÁ õ _ËÐHPÌÍŠq×!ŽMÄ×Y+ ¾ËgØj¦$ˆ±,XíÁ9ŒÖ¨ÇrK¦ŠFqļU—}õ“w8U2*Nk¥ÅK%‚]Ô)ˆ1ƵÇÙ÷ ÈÎ$|Ã>¡Yc^Ζ{µ$I2‘¤3ÆüƒŒXñ5¼œˆp»LÊU•dy•ÝÖšµy„Lw¤ƒjF‡Ô‰Ö?ÊQ]OÍbdÈ¥µ|8’H>e=@èt ×M®Ú§/e›ÖW !{œÙ"G‘•¬:É‹G‹­ÂSã,ãÄ·¯c];ŠZd3­°8R¢£°Fôž6+’f+‡¯¤·sùEÐKá¨ÉÝbfÈ—MØ‘u)Î…¡öÐ|"A«Ï0Q–ݳ¾_NG•îUÍ—%× 1æ‚ N6ä|z‹Ž"9Ž=i_ü†uý&=6¾%­iZ½æ"C‹e(Øq¦…Z}bH]×b0DÜýÆ‘n×ÓDV`mfM :‰$lT2°éêYªžÓ¸P¬¥³dvQmè® ¡ …VUÕ…ß–ÛšìãN'Î1ùœ õåd02ï¯ßó±ä boy3G:ÜGÓm…I?–ƒ­{žû·pÊ™]#U"áÈ@÷r&²í¾Ÿ}Ë3åv꺕­2un¢?zzˆùqÇè¾8Æ·7•"f¬f2°µêüwpzHÉI j=®…^’UÙ>ӹľƒ3Ûéã(D&]Ză¼Ý8{îÓ3å/õZGHI¸ÏHC-ƒÀȯbëᢦ”¦”¦”¦”¨K¯Ìq¿¥*ó‚ÿ²ÕßáÊÿIwJU»JSJSJSJUNFqŒCÌ«p v'+¹¯~Ξ½èÒj\xÄ"ÿ—”M¤wo©ÚÁëQéñÔ ¾ë~Ÿv>ÉÒF“¡3Gè NÌ`{`˜ðЯ*ÉrZ,;·Êrk&ª((b¹2ÖÉi7%é"%_QH—dUTMfîIâ@÷“{ɯdkWÓìrN€jk*žÖ%í\ ˆ$aY°"¤È²!?Ûq7äiM´ók·òLSãMjèPÁßôýá±Ö±G.]¿OÕÈìF£J’ÕjôÒ•®2.TÅñk•–µùcÁ9kqŽÒ 9¸Ì["9ì+ét¸½+ºÊŠš¡È &™6öðñÚ¯éÔ£_|7ûjç^?Ë™üq¼²Ò@L¥EÀa¹8W¼/’ nù×*Æ8¶»î®ˆž*Hž:ØciŒNºiǘ۟ Æõ‰Ë]·Ú·©WªýžSCMuãÖS¼µÆ\ì–qè}§OÌ6CéÖ@-Š—¦£¿À›¯†‹ÔÅFáK*¤ý®£ž¾Ò·¤/¼‚@ûý•`Ò”Ò”Ò•IÌsÚ|1j¡É:ë È\qœk¨cÌXOq‘Bs¶$M´Óm¡qçÜm–÷ãƒÔ›À%šÕ@“¶‹ I&ßœ¶Ê´©ˆ[‰1ï ’`íÀaA"˜|× žÖ–³>Àòž2‘È4—÷ÁY&±é¦` DrU5FqÕ?ÉùŽØžÊ‚JI¶¬€;\v{Bax å›j®J!r:Fçîð’7Žm¯ÄF•ºu5Ó&Lxqß—-öâÄŠÙ=*SÄ€Ûm‚)™’¢Š&ê«à‰ª»ª)f0¤€«*– $Ôcù=Œry7ÕÑñ¢ŽÜ±È]”ÐAXï «o$•$o Ð“¤º¶]ÓmhêQ­a !`ïq09“ ΕE!Å˨‚gÀ 'ؤò®¹ù-%eÆ?A:ofÛ))#C¶á÷Ö=÷ý0éoÇÓTßàM×U]X¨Ü)oáTŸï:Žzò€¡¸{HfáF<´ñ;¥M4¥4¥4¥4¥Vo2¨v˜Õ#‘¥X[eRÎ5tbÙ4È+’%¼®h °;u–껈‰©:žÁ½¥‚ˆïbª"L´ùC2Ÿ¥.<ÂûKNžå Æx)ãÐYçŽ=–äà®o-¹nºlªéSj°¼¢Â*J„ñÇØI‰Vë&­ºÙ ¨¦éðê¨×¢¸Ù€#„ƒ±Ö¥…¬Tî¦å[Êk2Ø/XÕE·‰‡Ö9·uOeHú˜ˆ’¨Ç´Ò ‰61]ÑtTM çãúG¿ÛUb¬z­M4¥AäÙ%.\åYÏ«¨qènÏ·ÛqîÌvMÃí²&ál)¾Â*«ñ&ªî'‰ÞÄ(ûIdBæ"~Á'õV¼pœqºŒñÆÜ&Ü0Q!_TT§ñEÕÈ Áª+5¶|ælàB²Œ=†ä0ܸïD|AÁBvðAý´XqV*’¬=ÄË•Tò]Âq¬’F#8¯gäPáG±›[IÞ]«1e­°ã§WP2hˆD‹è¯†¨uÑð˜>Ø a¥…±?‘ì'í®º®bÀî%ÙVÇ“qæ²¹ËbÇm1ûªËI0ÙBî;¾t&$ÍAQéTŒÛŠ„¢;u¢Ü ˜ƒ‘"@Ø7: j U±:] r$j@;LkƵÿÕûNoDp ·dÛ4Q0"EEðTT_…JU-þ=ã N8ôœ뤦ë®ÖB2"%ÝUT›UUUøô¥fÖaø ,™M‹cõ3M‚T(1XpSt_lSÅ>O™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”§™úC-?”¨[©1ûŸoàþz~)WìQqZÕEÝäª*|å.éJ·éJò·¾&miƒqΪžõk¶×ëdÌŽdӂɶóä(b¨¨„¬ ®Ëâ‹·Àºò~´î½¿A‚Hú7ú]ôÜ÷Ö-Ì¡Âcf‰¢ìtÒé÷Mxóª«ËøNÇ“®y„°{Jû™#´²X2R;L˜¶ +ßî/q7Ö¿ð^§ú¹ÈÙ °$jdWêXúÃö[^Ãd3ãdV!­K Ÿ,iñ@ýêØ>ä\u”fÙv5.âUpÑýb ¾ñº ºÄ¦™B5^ž¡}wÛáÙ7ø5×ôÊ221$Dׇþ®ý¶íû,ñãTRÓARu௎úWµ¹{Žßäe‘¥œ”™Î--»Î=É6ñ…k·ÜÛñ™xUYxe §ùS¼‘ÕŽ \K·æz„yDóå-aí˜ ó9XJ¯ýXwŒv‰ë5²¦]f<…ȹn‹åOàxÇ òŠ®49V³­'Ç)# ’².+,°ÃЬ™“h%׆][)=7P8• ]›À]b¨C11µÊle@%n$ðЍF¦ÂI2- [&á/.ΰK<·Èrj<2ß*ãìåøÑcØ)Vª¨¶ Æi¨Ž8ÉI`›q¦[Q6úLùûÌÌ;NáÖñ,‚6!ƒZa§©Y:÷SrÊ7íñÜá\y)C‘":]d®Ìa®†¯°²K§¸F&^äÞ¬‰Ü»ƒ±í¶›Í*Ô®öÐ{œôºzz~-¶ð×Oõÿj;ŸKK=KxųÌÄq®o¡Ÿ™¿©­ö]Ân‰Ûû*G´yÄøýÕ£þjÎã‰6ÆOH‡qùÇO¤Dzˆ•vDO‰5ÔX—÷(¢ú€{O¡ål£·v2ZÂ}¦&¨þëý»pßý•ÿ6šíï˜?ÀµÉØÿ,þ7ÿªÏ™%Ö]Æ´C7ë y¯Y©}¶ÚêHöXm:ém±OñÛuñ×=pác»bÄÇÅŸ³{yrÒºÉüÌ£‚åÈ£ð®FUàçμ»''ÏrÙêW1fD›˜ÜßæQ âs‘ã´ÜyÌ,ƒZG–ôA:ÉÇu-S´òb$Åý˜f#yo–v"t–m–­×ZÁl6Îc^6wET~ÌŠQüD)ÔpÝ÷óó~"³Ä-­sÛ.DÃ2KØæHÍüJ¸òë]³sË› êˆ5à¡æ y·›=ЀàöÄnÌ1ç iâT¼2©b5 ÀÏ(+ˆäɇ¤…$q&î!–Gš Pßæœ{,Ê3(Ö¾ñTœ)Oˆ]LÇêècXcÛÎz RfÎúñ‰ÈÛJð˜0ÛL‚ôЏF}b!Ž~!’í_P8*‚T]ij@nTËVÙL‡h I;’ÊNVëNä°;hpo'~ð«òʹ6ee\}Q#1ÇÝeÊûxîGjTY€Œ:ð6á6ïCÀ$¢Žôì;ôEø—-¶É`F°N¶Î¶U–I 5¤±I ”ãà°:L0ލpe``("o,â|™5Ä9k‹aTåø•M¥=Îq$ ýey±!R]Ø (®mE}"M¼pÆÍ‹#´\¹Tˆ*IVfáÈh A]r—¬ÁF,àȆŒéÓÈ™:hu¶Q͵64­a>ó¼–q.@qþ¸¼'Bߊ©,V˜¿¨x “7Ûl: G©z«[a ùRó¤äT/ÓS04`v×7.¨Ä¬© ut0µ®‰’ºI2#]¬9‡1ÒÌä|—›Í´œ)Mƒ5'Ø»:‘«›iÓ£ù”n:]„–ŠÃN6¦^\Ç ¤M´l‘Ìp›Ã9;1P¢7X—o %UDj¬Ä]ú,UC3±,ª«ãÓs=,°5º«-òç˜ÿ3ñµ0ÅÌÇ ú—’qg)$ÈY)™Mœ 0m‰PÅöœeEÂe–º›6ȲÝW—ê@¿a›!é† 5µÁBTýàP`¬eBµ£§±!;Ì( ß.F.ä",%H‚A¹–ãSÌqkÆýÊ >|“‘Èi1YË Æ)µaÖ!ˆ@U ±>ÃKé¡w•ÒO {Swè'nãždæHsÂåÝ`Ÿ2°Ò¼ï¦™íXÄ~SŸ³Èö6ÍÇN’¦Mz:eŽO‰æ\+ˆ_a‘ÃÈÞ¾L†ÂÒ=pʘ1`˜âkF=¶í6 ¨žŸWŽüÊ×çe&oâ0¨oî»Û]¤ Ÿ.aÇ"¯ðœyZ?¼ŠgÒ¨ÜeûÝå~:“Xò¥–f䛈”«M[Lø¾1gHŽÄ›Ÿ_!óIÒÜugÐüc#.¡Ãã·Å“Bí‹AòËcVÖ!¥É,ÐT ‚ª‹o~–*3äMÑ2:‚7 9ÓˆŽ¡2¥˜›‚¯íO-fùÆ1ÃôTþCÏ96=£™è6±S„Ò5”¨Qž#GqòŽ.©€õõ8Ž (À.l‹a#¤™Þ· R¨4‰%à±*´,‘q#OS ­ˆN€”/.Àòã›Tަ@¬ìÂg)qÆIÅñ³¹Ù®1šf1*2 ¨uMØÅ%ÞÈtlv¶_É  h›:B}# ÝÂão)\<Ê¡6Ÿ|:‘V p"Ö`Wd]ÁAh")aî%37«-¶«V§×;ä g1çsà+ ZÌ bøÁ… %±¯q¡&-FA oœï¹Öˆ‘‰´lEÓ­z—< Ù±†re·{Hb[£ËkÌÃ\DuÊÃKXt­wÞÝ^QkJÄH*I&B¯£8þNk'…ûÂ…YéQl‚£å¥„y5k@.½Û,ˆ;ÛSU.•ø5»•h`- ]íhêYâ˜<¢u¬PMÀk‡ÂA#B+^RÝûÅçrqM0<6–¦¹…OÜ»•*lÃMÓLbFEÙ“ýS¶þVfâÙ{±ã>Ó¾ÁWî<øW’3ûÝ‚~¡ˆÿxó­eÁY®IO‰dUõÜE–åqγnòªN8ÜWT¯ç  …Ô7ÑEW¥zšOðÝ6]FOkÛé’Ÿ²™„w]Æ¿æØ+eåÙþc:Wa8ÕCøcÈçfäǯBé4uu@žfb3T¨Ž¼dë"Â+Ä®!8$€M,ª_šÀÝ*—±Ä…T4,Í«C´2´f³ñ$¸EbH,Iƒ%B©Ð$‘Ô7¬[əߨcW9Õ‡#áW×UÔkø•qçÖ¹fÿ”‰6õ0«Ú&üÃ̓ͼѯJõƒÒBvÄnʸˆ÷AâT¼`«*"1`ak”Œä_ƒVÒ@$q ³wVF† `à6|™žå|ŽÔüÁü{Ás‰uµ#_ L°j80ï”yÙ1ߊçJ¨6’ •U Ž®¸S+êIÈ# —"1®Êª [kË‹'>™_ìâ.Ähñ¸—$Ý7¨…3b÷•ÿíû™~?ÿh[xîǬs˜³þ¦/û‹]]¯˜þÿ«G#f#WV ÀyáˆÅaÑ™ˆtª ¤›äh»/öS}wæfiÒXïÃ^1;xMyÝ Œ ôÙãUÁ¶ä¼»˜9+­ËÄpìj ±¸‡öL½5‡L£C)lHa;„ßS¦ûOl(€Ú—XòöýJîÇË”¨ýáéâh?º¥˜é ÅÇXTµº2µ¬Š›c? ¿"Ÿ{ jTXÝ$µÂ’ç3ãùVK—ö÷¦ášœ:â^=YJÌüi«› µ*|ÿ®ãÌÛ'„Á†ÚeµéEpŒÐÄB1SË>y •A OÍ·)S-Vȧúqå ,wbÊH€ÝiÐ’àù@ƒϼàC¬⹚a×9%ni…ɾn8cOµ62OjæOjR6=¨¨}ÖAáB ØbiÓfœ£~Y{Ãq éêÖN÷‹=9& €Åí7V‘ÖQ†¢Mä B¯yxQ(·(iÙ/šh0i¸½g¼å2Ÿm£(Ä%ÎÆ ofÅöâŒÚ¤¥b¨qÝq ÆÝG™ëÙD…[b‡Ì¸‚èæÝ• Û1¡V0­Ò$0 ­žSn&ÈLFÊ@ ¾òC’Zž“q`WØÖ2$į*2±—;®Å¯@'ÜR‹ÀTÕ7_×.vuÆÅ´Ï<5ã·ƪÌêwμG•rŽ…Ýä¹_½ -o.cµÎ[ÛðãNãV7`Ðy’¢‰í‰?ÉÐÒoqWòˆ¿ÈÕòåLjÎ#ë(k¶±ű© ‘×t4Î49Z2Jíy•*LÍÆ °X¿P–ÊÆÓ˜gÙ_(b¦3r¸Æ1•qÙd¶Ó‚ qµ4!ø7EOUÖyq.U´×³ô®wEî׺Á,ˆ;DkÁïÿᓎlÏ1]„qU&™v½‡USe]ÑàO¾æ¸ÒñŸÓýõúrÿ¬ÝàÔöé<î#û+Ôî¾êøŸ»Ã·ö5wö9MæBË1¤ÚOia¢SVÙi½ÑÍQIUU|îk§·í£zø¿êÏënïúŠÅ̪ˆ„£™âIð¯Q몾2´Ÿ b9&÷.A_ä'ä;‹Ú5î²ï~¦ã‹/~HÏ£©@½Ø“oM1töØù”<ûò;ð°?ï©ÍÕÜ;ˆÇÃTý„X¨ó.<äl¿6Æ1‰þ/Èé܃­“ -¥}¤Ë%°–/Êó²Û@â,€pP„\B.Šá%±Óqu#h¬9tܬ'RTš™Eì®-¤Ô,¤uAh4‹N°.‰MBM¾±%ØÑSt-¿³¶¯õÓó'¸ôõ¾ûxMÓÿmaô`{tÀ2i`Iðˆ¿² x¼Âøc1<šÕ¹?A¼ëOv_h60î2fÙl¿’§öuÑÝdWpWî¨÷…þ±Yv¸Ù†ûÌ}ʼn¨Õc”8ã“ÆÌqÛù µÖ6‹Šg­ØÖ³FäIÒÞ™ìä…‹&Ò=Ûtˆöê;£Äª_p.C*ªHàC vàƒ[+C?v¾ÎÛÜÊòj˫ĢOµI ¶Ô"–ÛM¬‡wqÓ^¡C%Õ[UÖЪnmdðÔèn•XŒ±B­I¹É@ßA«6ú±à $™&£Wò}qSÈ8+æÔ?V6]ÆeäÀYBãvU^h†šh ÐÁÒiAëóëx®Ã‰—Æ*ëü³0™Jìhu宅“‰žÆÍÙ»dJÈ8Œ¶…é©Ò‚C…2²Œ‡ Ä|FÒ(à$X™Q°c´¦cŠYD´9j¤KxnÛAYã™oçyC‰â2óü;;‹Yõ½5d¸1í«ìêâ$!g&gc¿¦„ÿ,Ž ƒº ‰/EÆf%ÕÆŒí‘HàÏ«Z\¬?yXyM`0…\vŸ* d*¥™X}EXt"¥Ù¯å,Ö“’ÞȘo ‰“SH§Á0g܉-ø*­HmgØÊŠŽ‡zA8?’iç[l}"2-¹{Ü'i“!ÁްLI&nb4E¹»;\Á;œo"<ØÝ$î`!u“©hÐ.¸±Ãù*÷S—ÆÉ…MÆsªœb¶š==”ÊÇ|ŠÖ£žZD9’šÞV‰°'•²Eñ!ñף߿{•κY2ø­\ŠþÉ"±k“±Åé#ac¥Ž·pêVPc~ =“[enS•æ|-—9‡Øcq1·¯—"®´‘\Ra¤˜9‘™)§ÓÛnÓ†¨‹é øíŠ€¹Ù§C‰—øŽL,÷QŒí¦òEP‚p¢F«‘Iö yT‘üN£Ÿjs…1»¬Gh1ü†Õöðž²9Q;»Ò’,$¾Úõ´F ÔÛ‚¾ á¾ËãªcÓ;®,J|1ª°÷0#—-+R?3)àÙr0ü-‘™O¼yó­;q¦Šb¼S”ÖÑ377ãgò6m°×¥Çh¬j/&:ó¬G–Šl„„VØu®³UEmÃo©Hk€œ#’ XœqR‹ŽXpkH"@e$«HYœ‚ñ”L[&TŒ¶HЇL“1!‚Ü"c’ï³|/à—,q¼}ŽÅä8•— J´³—äg ÝT¹Ì5†„HÞS3ð퀂ß¶ýÚg£,_–eÉÿfâL@;‚~YÀÓ\D U:G‰=Dé.¹¬º\·›)å8#q ¼ï‡Í³;,VÂãn20Üpœj „ ™u¢C$éP䈑Ä$Ö`N5 ³‘g]!µ6°â¦Ók DA"Ci£Šž†5‘¢Ü¥Áe7Àh&ÇÀø·`®QÛF‰PSn¬í«±Jù.K…G|’yŠØï¸ ©‹"¾’ˆõ© 'FË®—0˜ÒëÊ-¥ŒõA1¾°¥ºŠ¨&•ˆÔwQj¹ 4éPt ³b• ½a×°X÷¼6IÞœ—‡WÊ®yE:Vf9%ö%5Ôˆž’³=‚DUUTBÛÀu—mä͈uÈD½[(†fIÆv8•…£n5Ö'LPÔ”÷F•I §§tøwðמØoLêL_èÚw׬Iþé¼L鱎ôÊqåÁ ôÎBGâô`ök¸œ,~ãš)qx4¾7[ºª uqy»ôÅßVZ@nsÀrÒÔ7ÜÙeùMÀ\P^òtw.Ýä±ü¶y»â LÝdy¹ k7ŠêÕ̓í”'WEøKåºtS÷ÊßYCŠŸ÷~Ãïð ðü /hÛ˜ÔõRlÔÔæ¾à8ªÓŽåÄöC]·ÙW}i“ ÈlcÆû¥qª²ÏH"F†$iDV ±™É‘§i ‘˜á ƒ65Γ¾‰Îyþc"o»ÄñÚÊËëKÝ•U›’í!«ƒÐ2]ÈQ]—l»~œYTîÙCÃéªÏÚçWÏÕ“*0>Òò?Un*kÿ×ûa¥+tØÕ°¦XÍu‡‡$K}QU¦…LËaEUÙWÁ4¥aÖ[µd²(²kl!(¤ê‰ ÉeEVÈÀH‘DÑ7T_ߨIJáy‘cøÄ1±Éok±êótY ÖršˆÊ¸Hª Ž<@=J‚ª‰¾þ¾Ó\(r|k)ŒôÌc!¬ÈâGs³"U\¶f6l…ÐFÉš!l¨»*ï¶­—LQz•ž`ÛTÁÝbÏ'«FðAý•9¬«ziJiJiJiJiJiJiJiJiJiJiJ„ºüÇ÷ûúR¯8/û-]þ¯ô—t¥[´¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥Q³ž=¢Ï£U¥“³*î1éXbÙM[©Ʋ_J‚½ÒBQ6ÜiÁô\ VØpêa†“àbå3 «@G"!€"×J2*Û±C.à}ăKÅaäõùŽQ˜ä<DËŒã2®mš¾øHr,Z˜5ìw^è'\4éRBº¤:ˆ´fÙ nð5PLZÄ€ Qå€RzA˜á;yƶ΂Iu­­¨©¦”¨[|vžñúYVqéXìᲦ”Û®²ãD ¥!6L DÂUQ!T]´^–¸o{Žàó;0VJ¤C –Ó´ƒïAð<4ܧ¥ˆ3ZTÓJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJWÿÐûa¥+AæÙ•ky6I†eÔ@z¥™Tðã![Hȳžq¥q·ÍvÛq¿R2èU*oªÊoWβ„ —«ÎM],xÊ2<ðe©Ó\p‰ôT%lÛÒ1l4¥V½â`WñY×0Ì©áÉ 4‡I†\u îqÐmâUðRFÉQ¯zÊ·cÂBª’Á­%åªt€òƒ¨ág\‘Hÿ$áÔ™”L‚Æ„1É4YE©T×ÉR¶5Gà„Óçµ8ým/ãl]~Ž´ÁÛáÌq;!Pr2•Y7*‰ -*M¯†€¬{Žç¸À¹Q2oD:»Zª¬ÌR PqÜQµUƒ•dÙ.qĆþozË”ö9ŒKb·…]Z>j¡‚4FóQO¥·;&óD›†äßhÔ‹Wô“ì8Ù`±O.†PJ†´ë \JôÖ6\Ùû|lù½ÆDi Le€6Ê9T0™$ †­•Á¹Îcwu:‹9½•kpýk¦õ/UöŽKÌ,ŠÛ:—Ue݇fßo¸;~9xë?¨vØWlKX)›ƒÉ@ÐÊÚs7)ˆ1Ñô¾÷;ç³3IefÚØˆ\…g¯TAQf@^DÍzk^-} 4¥4¥4¥4¥4¥4¥4¥4¥B]~cû‹ýý)Wœý–®ÿWúKºR­ÚRšRšRšR¼•Ížù|CÞv¨l}·Í"©6¸­3‚HË£à£2^ÄÓ*lCé8ž¯^Ô¨{nÎVo~CûNÃöøWêßÑŸè÷Öÿ¨íÊSåûs¯©G°ös>Ý·­Õé¡K|¿oØ÷>¯p$fBC0:Ä(·a7E§]MzëÚªÿS#ä‡Ï×Òü£óøßÍ/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|ÒøÓÚªÿS#ä‡ÏÓ嘧Í/=ª¯õ2>H|ý>QùŠ|Òø×ÿÑû\hJ$€H&¨½©º"üJ©ºo÷ô¥P aÄ9ЬRžé»w†EÛ“+ Óšð’›ýÉ&%ÒBŠ)·Hl(ˆ‰¥*öÚ:‰ùS/º¢ŸyH´¥aÏ©«µHii[É+å76JdìIgumöºÑz פ“Å>%Õ‘Ù ©ƒiÈî=‡Qñ«ˆ`Ðë® Èû£Æ²¤G.;ñe°Ü˜²[&¤ÆtPÛq³N’EBEEÙQ~V® Uv.…B¥™ÂÄ)"c¶®O¡f¾3pŸ5éÜŽ-£f«Ð>*?}ÍlýÆW`Ìİؒd{ çÅÚaÄ¥U· ˆ2úiì¯Ïa°Ÿ%Q]ì}'Õøûë&†Õñ»0ŸRëWc7Ûéhú—«¨Iîr–/{\D&HäO/ “ÁéŒv-€ÈXκÆÓ©×ÄÖU&'‹c'9ÜsªÇܳ!;'+a±¤©(“ªÈ š¢‘l¥¿Â¿wUÉŸ&@˜6“ÎU|}¾,lΪ6ä {OÎõ?¬«jiJiJiJiJiJiJiJiJ„ºüÇ÷ûúR¯8/û-]þ¯ô—t¥[´¥4¥yË™ý鸋„š~6Cx—9@&ÍaÔêgõ*nôê`²á"íø¢_¼¨}o¶ì„;K}Ñ©÷ò÷×èÑßé‡Ö¿©Ø7o‹ÓÃÿÅÉ+øt—?„ÌŠùÿ/’}í}òd¿QÇUqÇÉx™“fË®DŠ­"¨Ë´éGdª|Ü`D_å7ñë囼úÖ ¸E˜ùì=í¹ö/Ù_½bþœþ‹ÿMÐeú†AÝw HR´þæ·⯔ÏÝ~»¸¯Ü»8ÒCS²aNBÊ¡8»ÌžÒ {.Šü,BU!^•ø Õ5ßÒDƒ_Yôé.×µò~cﯔ{ý³î¯Ç¿®×­}p¾Ðü§nt„?šÃ÷²hDò@ºhKo^¢™}AUaOI>æ¾¶Öù] ~¢D†™‘5cÃ’$7{`¨¤€‹Òž+¯­]M£p&<9û+ðÖ ÎÒ>'myžë÷Ú ¯=˜úî´© ë%ǼË^{É÷;^gËuw;]~_ONþ¦5¶'ÂvžS ©±ÛÆ9T¾¦¢šRšRšRšR¢ªï¨ïÉ).`Ü-<×kmÒ †¤yY¬mÝŒÿl‹¶èu'PÄ›¦é ÕC ŽÇá§¿J–R¦Ò À1àuØxs©]*)¥)¥)¥)¥)¥*·$Çng\UÔ_WZÙãÏ {úèr™}ø.š*‹r[lˆš"DUD4E]B0u¹uD¥|ÃÚ8ŽhÀ©´è`ð;aàk²žþ‹!bLª ¨‘¡Êv¹òZ’ÛRX^—X2h‰Æ×À…|SãMÜ¡†ªÂAàG0xŠ©Ü#ˆ<*–ÔÒ£n.©ñÚÉwY´:*x‡:ÚÁöâÆdUPPœyÒÝQ7UøuGȨ%ˆm|v«"3˜Q'ÃÃST(\ßÂös"WVòöaa=àkúç^yçI¶ÛlR""TDDMÕud!Ì.§Â¡”¨$ˆ¶~¦¢¢ªï¨ïÉ).`Ü-<×kmÒ †¤yY¬mÝŒÿl‹¶èu'PÄ›¦é ÕC ŽÇá§¿J–R¦Ò À1àuØxs©]***îö“¬•w‘ÜÁ ¦…г-ì¤5+=ÃFøóÄ =DH)ºøª¢j ÌÀñ<½µdFs ;éá©ûµ×g‘côƒXw7µõw-šúb›)¨é.\û1ã«„=ÇÙz@w%ø“Sñ[ñk§7ÓÃ*ªõ)qª$ðŽsʹÒßQäRϺ}ZN¸ÊXWIjS ë&­ºÆH‡¨ I7ÝÁu C(a¨a ð#˜ÃÃKêj)¥)¥)¥**îú«•w’\ÁÇé` ¬Û{) DŠÊ£cÜyâ¢$Ý|UQ5Vu_1¬ˆÎaA'ÃÃSö ¯ã<•Ç9¤·àaÙþ7–NŠÏ˜• šÖ÷›k©¸aÓ!¥DÝSm×R ‚Ãa¹åúAû*­Ò@:Sô·Ôy$³Çn _V“®2–ÒZ”ºɫn‡q’!êEM÷Eð]†PÃPÂAàG0xŠ0*ÅN„#ˆ<#RÚšT짬°Z‹,Ž®¾Ô`;jU’f2Ô„vzZ´f‡ÙmͺSã]fr ºHéÚùFÒyVÆØ¨Àñmàs>ZϬ´¬»¯‡oMcުš~¾ÎÁ";ín.4ëj@b©ð*.Ë­H#Òu@AÛô gj*kLÈp…¢™-˜ƒ!àŽÁ<ආó«ÒÛb¤©¹ø"'Š®³É™1ÅìÆ˜“Ès:m[`í²ç$cRÄLaF¤˜àçaUÉö Cñ%æ´1eEp™“Û( ãn¨˜“ˆ¢B©²¢ø¢ëÊê?¥£në Á"#­z¸¿¦~­™§i™•€ ŒnAPA ­h¨HŠŠŠŠ›¢§À©¯f¼VR¦„Wî•ÿÒûaÐ׬“òÚú)N†½dŸ–×ÐéJt5ë$ü¶¾‡JS¡¯Y'åµô:R zÉ?-¯¡Ò”èkÖIùm}”§C^²OËkèt¥:õ’~[_C¥)Ð׬“òÚú)N†½dŸ–×ÐéJt5ë$ü¶¾‡JS¡¯Y'åµô:R zÉ?-¯¡Ò”èkÖIùm}”§C^²OËkèt¥:õ’~[_C¥)Ð׬“òÚú)P—@×a)#àþ{_E¥*ó‚옵vÛªuÊÙWmÿ¤»ð숟ù´¥Q9sÞŠøN ÈÎrV™²p:àã¶“i'ÁU:# ¢ˆ®ßŽâ€oáÕ¾¼îÿ꽿d'+kÈjÇÝý¦}—ôŸôÖ?©ò[Øá%ù§û_‰ýÕ¹¿v¾sÝ{ÅûÎ{ÔÚJĸ™„b ê³7 Žâ´ø·²øÌ¶$㪥Ûcg>$'>?’ÉõnÿêŒqöªQ9ÿµ¸{¾Úþ…ìÿÓßé?è<+Ýýw2÷âB+?òðjÏ®—dèâBVøáŸü?°£røßïû+Ῥׯ¨ý@ßéKò˜"iëí8ý‰,8=}‰%|Xð`Ef(‹QaÇm¦›Ø@QQÁ_Rª@~ —3ærù³1’I’O2N¤Ö¯±ÿ¬'ÿœ;ÿuìcò`¯'˜ûkÂ^ôÛþú½Öÿw?Qûgæò¯©}¤ó?VuyýÏ1äÿ-·o«§§ù[oá¾²Ãê|Ûzqü£3;]Â8×WGÈä¾cÕÅ·>¸ý{øV´g*åÌÞ#s>YŠÚåx¯Ù[V×až} ½%:Ð:³ÿ*†® õ(ø ì©ã¾³\çmÝ8ó߈~ì@<àH-ï­XvÉðm¼Þ]@á'eM[°Î@çJë®,«•é³jÏxÊÙç]Už$7±§Ò½g0ô[ëóm2DšÈøtUU]i‘2#¿jçô™— ˆ €oðÛ’z uD‹@ ñ«£bͰ«‘U“]C1¨Ö$L0 ÷’Ï{¸¿´¨±|}êîhˆì8ìõd(ÕЃŠè‚v¤QP^øø~"k,ýÜ&Lëä| âó½5ÎÀN¾FµCNªÜD×@ìåÆë\¦ïúG"âCþ+ùÀ3Æ·áŸ)N÷]‘>ß.~£”¥á®ÛMɆÂ?A²RÕa‘e±0m{Bˆ¢¾šzI«ýyOoƒ%¦5|Åõ ð CC(26¬¾”럸S×shà‰ô÷ÞÐTÞh†Þ¼Éå|Ëýٸ”Xª¾æh“mcr5Èu>Cg8Ï0Š^D><»Cw”ûÔÌǤK—©ŒiÍ‚n´â*ô)©+d²l&;כּPï³Ä¦.IÒvw3í@'}+ÒïU/î20’¶&ư£ö5Ù[ 3Ïy:Z¿y|Jß*r'?+ÉcÒC‡-c]1ß”ŒÖ2½—œŒÐ´¦¦~ ׸†ªÎíÛ#‰f(Ä ŠÈ]¦L¦‡qV' ¨LFLlʤÚ+µ1íä'sUÚ¯yCÅxg—lïoòŸ“1ê¼N_…3‹Z@båæâ3!aC–ûZêR&ÑT¬Up Ú3æ/‰ëlƒ.e¸^:—•Ím2² ³Çˆ ĸéôË:5¦Vö‚Eúh Á™ŒŽ<æox¨ùz6_7——·ÈñnAËðV17aÚÂdº"#,;*#á·K¡×骡¢Š‚j2åeír6Ì¥mÕ ýAT’d(üGÙËŽÕ¤}Ò¹O’ó»YÆyÂÖåÜubUÚd4±›„IñÜ7•YÇ¡hMµUR$=Õ~°“¶\‡{Ù»òat4Óœ“ÒŒyìS"ÙðÜÁêC`m¶µï/eX&kŒrÝDÅo¹¢|.1Í}¢t;-¾Ѱòˆ‚ˆj¿Jl©¾¸S¶/œöÓ³‚^7–+âérî5×Ìo^µ`ØNb%ûpYy$ Nû9Vs™Ó`Γ"ãà_vþ¿‰Æã–7bÒgó`1bl·PÀHtZŠÿK/I˜ãŠF¥÷ISÅwNœ™¹îN56*%ѼҨ³¸P%¸ÇTèCr¨°¹%ÙœxKjYvA¨:®×OsÇ+Öã•Ö9d Ù+Ε|q’f°!Fm‹º§[WWpj;¥º žž…M…SÇweœwÛ’-r+ qèNö¹‚¿xÌQ®\ ÷@™)…r)ÚÛÈÐð6ê5ᨓ½p’g%òo¼Ÿfe.Á±;:H¸ìØPߊÛr!w¤´êv¿-ùqÝQÕ%M“m¶Õ{P½Çi{€ÇÖȾìl-ðéç½e›pIQé©þð3ötV³âŽ/ã6½å}ã£7ÇxÀFÄS •ŠGˆHÝcî׺óŽÂÖÌ8(jM¢*’"¯Ž£ ôû7Ⱥ8ÉÄ«yjtÛZß¾ÔvëÁ±´øþaóÓMxUWç®Kµã/vkÉÙsr2Bäçqü¹ï)Ne[rf6Lö„úDE6ÄKàô½/°°nã·Iø29ñeQ¯¹¸ 'B*ŸRÆ0·u`2ªø)áïñÖµÄL—•p¯y®MÁùšŠ‡ùvòe×Í«fIÝ”‰1VßœãØâ@,‹ $EÕ¹ü<}¾vÃÛvîÝhM–.ýNdŽ%Å÷[°@­® ö÷xF~èã-èãk·ÛºbxÌiVŽY÷ƒçY<£—Pñœ< 5aG¢Ç0†2˜örfà Ýó’ËЀÔѤì—GQ'¤‰¥ùƒ» `¹ÇGå˜&ñÔKn@ˆ[#RXòc\On›Ð13Ô/ûªzH^»Ü‘^âòË\@•Ùe+ô/çøº3}E-£eøOÏ‹³­Nz`M.È^(©ã㮯ªö£"äÇŒÏÝ>#T'††&°ì;†Äêî5QÀðos ^KáÛ‹.ZÌ8“¿hžÝ®–ar#/(¸)•2óÔpþé‹1_’*ŸX®ûêS7Ì»÷£cˆ*ð>¦P>›tÚø¹Yð|¶1Úï9 mþV=qzõ?ÁËSGÀ9/“ï1®ãL'¨ãK®IÉ3g'f±¨+I¶£’é„v+j_lóö˜“35 œ+p-Í£Ž–6„ñö¬;9yl~F¬³+ºÍÝÎö}üÉ1"vÜšá£îƆ9tt«}$‰é"îºæú3wác£·Q´‚Uà˜2:ˆ˜ÔkTöGÖÇÙL7rÄp6²Êê8…;ûê©oÉžðµ XâŽdÏKãØ–6WØ S‘!Y'Œ†¥A7!±†™A VÐw$D-¿'×›1Å”¶C«Œ‰–Ø –i`ée[Ç.ÓäÇÒc“ :ÃyÈP5ž{Îõ³[³Î³z»Ç¹qÇ0«Þ?Lš&iѸ2" ±ÛœÃqäºdÑL]‹¸J®²›7¹"o§l–}C¸ ¨\`g£!@<®UÈX|: Ï;ì°FŒr2“ûè ±’qÛ²ê˽z—,uÉ|§Å´î*ùÞØÚTÜNC»L—öÛî’ÿw_5ß—ëݶ31Lƒ•Ä®9<áY£•Õ÷?Óȸ¾…õ,ãÎF,`ñ ìKzÑöVŸÄqŠòã7›À®)Ç8·jd¼ŠÒ,‘ñW£ èA-ÁW}|gÐ~‰ÝwLr|¿føNg¸äBÙ­õí`¬ïdé´×Ý}oë}—eÙöI—¸ïqd=¦"£ªbòèX Ó¼pйäy>s>÷½Ê â•|a‡N¦L6¤’œu’Jñ¸¨L¶¨=¡â©ãðëÒú¯Ö~©“'{ÜvùÓ>Ëü¢Î[Vóy0È2yRÓÕ¨‘qùÿ¤ýéX{>ÉûÎÝûœó²Ü—Ò곤.Žÿ Ç¢m9 8umE£Tõ1xö>mgFq‘æ · Çc„ˆàwE¾®¥éO¯k›ëQÏÞ3âO>ßpØì í=MˆL.%IÔ©ѽz=Ÿô—Ò°vùqçÆrä=éíS r¶‡ È-ak¢Þ£¡6é_ÿÓû;um†šÚòr¦„üéˆÒ!µ²túQUW¤WdßJV»‘È×tÎM,£ršRR,W’ꟸ.©ŸK’\¸m¤Ò6â ¾;O_X¢•x¡¾KÁ³«™M2¢Xß_5c›€nFbX*Gä4BMHE_‡eÙSJU_”9:‰ñøÙý}•”IsÚ®f-SM=!]x1^‡]e6ÙµßbßûéìûfJ@0L Dóç\½ïv½®#•  jIb@Ó‰¬9œ»ŒDä cŽ|­„›Œ²O¯°e¶Vm›RxÉáq‚1ªt¶IðxëDì26< ôÌw‘lÆœ/Åa“ꘑ±,ê€DF¦ÛµãkDO”ÖÓ×z5QÈ3:¼nó S³3i¯Áªq€i·#°R ^R1TTN”%ßâøõ¶, ”9 –>À@ÓÇZøîRÓÔás`HŸ“þÊÆ¯½¥¨fßêkJó¯µõeÌ+0;=F×Ql'ÑÖ ¿ˆª/ǨˋÓ1 è†wѱñ«bËê]¡Äj"`ÄŽjwˆ©íeZÓJSJSJSJSJSJSJSJV¨ånNÁ¸Î,³L†5;n¢ù8„ªä©›ú,Ç'ÇÁUdøÕ5ÇÞwø;E»+ûO°o_Gý7ý%õOê,þa…²¹Ùñ9…_¶OkÂÒ=ë¹ç™•¾2÷lÃfU4&êKÉ@AÙý§pÐÜ}Í¢ÀBÛ¨‰KtN—|5òþ¿Ý÷íévh@çÇíÙMkú3é_éô÷ô–ßR÷+‘†É¨Ç<‚ÌÌG 2­mþ"ÿÃæ­™¡˜óöDöy’ËqeLÇ£Èya«Åã¼É†£"Q| »tþ ®ÃרJ¨>§t×±á:{Îçõ{ëçÿ«?×ÌÍŒöAÄ;l*-@¾?åãÇ/1E‡o£4´tØÝ\:Lz¦5xvàÕ@d#Çd7ß`i´ÝwðM}nÚ¡]ฮE’b9uÍ_œÈpC˜æ+aß}¿*SÚFd¯m··:ÀQ?(%·Å²êè,rãr-÷oRäã8Ï”Äx¬Úyé'ûk­Þ?ÄÍä'©ìºEcoÚ8ëÄVOy‚ŒQÕÅaQ\ñRíõ|[í᪌jÖ4É­ÐøOH]öĵ¹Dü-‰ü…rÖA˜±æeŠÍ±eÄt#Ó~†ÔAw-ÇÒ-ëãi˯s¡:øiO »evfbueO{¹ïã[bD’á?[&8=Kø„ž2b @©÷Wmµ9ñ®tdÈ$0 øƒ½S %JhV#Â6­>ë\ 8)ñ²ñû.á…f·!Tôû\jq6O1)É%!® m‘·U7Ý1·¿„ïm[OÀñ6Çaâx= lv‚ ©37RõmÔã®8Dã¦[&ædD¿ëbÄ€8À~šžd’u&± '‰2|Oé äAUGx;‹_›wêó$äSÎÎMò4ø'xHþÇæ¿5ÿTÆ?NÝ=0Bø]$ûfNó[äÎù/¸Íè¼Qbº£_ï»án0ÉÏ¾ÄØµ>Of ÂHzAŒÁ¬mZ†B=ݘ6E}e‘v-ú‘Y¶d°./üF3¾ Dm6&§æTÏ•JÂMÄxë®»p¨ŒCÝß…°Lo%ÄqŒ<1ÞO AÈœSAéÜzc¯;Ò*"†ˆ$ªBˆJ«©Ë…2áôXtrÛ^r5¸pi•EUr²äê{¸ˆÚÄ>!¡‘Xxo»O`¹UN%±U5¯v§%%—:Cò!<G$:ó@hKº4cºì¿¢¤¶5lG$ÉÏ ;éÔ˜ÜÑ2²å\ õ®Ç–³¶ß«^5f½á¾5ɸòÞc#?«bzú"•,¦àtùt ðÈÜQ7în©ºª*éÜã^åƒdA‘킼< \.ØfÃLûÍß·Zͼâ¼&ÀYâûìx-phÐâÀb•÷äƒ0: žêHBØût¼WSÝ îZìš™»–¼ôæ CLpy4Ðqðýœ´ˆXC÷qáNV½‹’ç¸kËØl„vìFLÈfm6»€¼‘d^Aø¸…²x|¢öØ×)ÊQ‰äcbWÊO#P2뽃ô‰ äw÷ÐÉ“[–8uÐâ××Åf ,„xP£€¶Ó-6( Û`(‚""ˆˆˆ›"k¥˜±$™&°U hWèpœ[µÊ®è©Ú®µÍ¦…ŽQ1²2)r[hY$2$€~DMÕKn¢%\±ã\xý5ÑnfÞ}XûêîK½çV€³û«6tÖ·¶÷má;Ì2[`¬ÍÄ묤[À¯9“‘ÖfKpÜ}Æå „=Â5Rs¥~ ¶DÛ”Ån51 W}î'r8ë:€xÔw9dy×!–ñ<ã`}‘¤ó3ÛÝÏ…!ayFÀa·†eÖÒâ‰^”M¬Îy“'•Èä"Ø öH:~-·]i› fEGÊðƒ3¡ñ#•¤¯”‘ULÎŒ\J…>*6žgŒn꛵© 7¸‡Å¯°¼WÊz“#­|ž›çDƒ£¡÷e¸ó¦(*½"¥°îª(Š««dƹ1zL:9xï:kvÐÞa‚*ŽÉ“Ô«ŸörŽcc&w5ËŒ¸+‰¸qlŽ0ØØä‹t°›Þ“2K€;*7ߘëîˆnˆ½H;øí¾® bè&}þ<ã‡)1¹ª¿[^u1ï÷ñçvÙÉÜ!Å|ÈÕ[|‘ˆ1’-1VIWäÄ}¤q60GáºËŠઠJ;¢.Û¢kíñ»ÞF±ïqÂv“šÕ3º- é3úo='aR-ñ/1/›î. A·ÞŒÍxÍi‘ÒÃ& ¹Üñî xî_Œªºé,NC“â+oðò` •’ôâ8‡”Äse’ ï2I:êN³S™®Œò&3g‡f5Ÿ\c—ÒX×wžÜì:·ùXî4àìãb¾‰'Á²øj‘Ô­ÅHaàFÆ´Å•±S÷0 þ£V@DØE6DþÂj[ªgbª6 ì=×xÚ»©³ã¸³ëñYÒìhã¿.qößœúI’ŽHRy·N¥iÕ&þ.¼5ή$²‘m_ `Þ‚Ošw<Ínùò=ò˜noÅÈûºå‡*­ÈÞïï°LK†°Š *0…}âñÙ³f¿.#LÌY¯1_šu d˜)FĉÃk…cÜ`vòà*G6©P¦xyz‰cᦣ”Œy­Ñò‚9%z´å( 4Öêºã,#"¿,¢â“ÍÞ•¼agy™-ÿÑSWªD~Ûn‹~šÿ/§­>"MUûloê\?˜¶¶ú¨3ñj+ ÆOM®_ˆŸ8+[džê~ïùt,^¿ ã¸ó£áµ¡Qΰaæ µâÛ>Ä–Ý|Cǧ¼F£¹m·Qoc… ÞF°÷D @Ì „Êȶƒ¤“ïc'õ’cnUnºàî*¿·À¯l0øãgÆ(ÐàC~L¯ i°j#­6`Øì x¦Ûo œçÿ0‹IðêËâo¶©?•é|Lx˜“;΀Îó®õcÉ1™—ØfG\ã-ØâÓ^Wõ! ÍeX”¢$½{tî›*ŽË¶û§ß}1ò÷½¿wŒ€q\¬ÅÆ£cª¸FluôEúÊv·uÚæãî ÝŒêGNá¸Á‘´Tí= MX·Qʵ„‹Kî8çr\¥EyÏÊmÕÒž ²'ĉ®þϱÃÙ§§…mRKD“«Ìu'rIý•å÷ÿTî{ÿO×k½$×@!ʺ1ÌÉæj¹‘qž –ÚE¹ÈqÖ,¬¡ ‹RHÝ¡êt[1Q>á¡&Þ¼Ÿ¨J}/êÀî{Œ ùjg[v¹A üº‘¡ÓJõ~“ýaõo¤àl¦r˜Ûq u;•, Søcžõ6˜µ\•úV·õ¡V%2½Ô}¿"†®#ž®ÖÝKüÝþ-öðרŸOÀÃw!1”)2uU2L~©®õÎôvß-êLäõx]êD_|_?Åã½ÿÔû›Ö˺ÂòúzöÑÙöÔ–á4ª‚„óñœm´U_܉ŠØE¿á„—ƒ^GÍé²[Ù“½Y%}Ç›šŒÈ‘b¬‹RÅΤí¸h½§R"³fR¹,`1 "ÈÐÂH 2¦A»Av‡[t¿ À¨t'7Ì\Íi‚“’ÓtT+(àÛN80q»¶ðN.ÇòŒÛê&ìr¹WRÒ†UÔ¨/çÎ"%I ¬uHlÉzLGÀ7E®½CdVË‘‘…Ã0½An0.[þ6Ü‘›Qvš_6'‹Y Fî2–6—µz¬oLyÃI´•tV ÅL­z/ÝÚ¾þ£ˆ±ŠŒš…}Å[“⽠ͥiöšnkèÀ"/‚‚5Ò€£èôíÓèí®?¬dLÁt ‚ªds´OŒÎó¯:îú7ÇÛ•pËðBÜHÛ¦#îôð]nÝyuìÓJSJSJSJWSﱇ¤Éx#Ǝ쉒nDD»"""nªº‚@v«ãÆÙ*‚X˜jI;9Ö°^mâ–𦹠üÞ¶6!!ר‹lëŠ=çc8M¸Û,íÝp÷T%O¶×ÿºvÞ¬\Y®¾Ï ëê‡ô/ÖÏÔOÓWµsܤ PÀY¼ªºêÅ‚ƒ¤Íxw8÷ÐÎyápow >l‰òÔ¼†Dd“4Á<Ö"zM2 ð«©"'ãk廯ê\ÝËú]’›ôNßçÿ©»•ºúa­@~ëdÑœð³k³5pÃ}Êò Ù¾ÛûÁår¯.§/zV8Ä£}â_@—?©WÃàègÁ?’æÚ¿gý.ù[Õï±<'ö·û>Úçþ¤ÿ]»nÃÈÿMöë‹è2 £Ç(ÿMy¥}:â«»Žó+eÈÛ³>ÁÈrà+eëjó©¥)¥)¥*Ö™‹4CêìÈØ]DÝ>á&·ÅœãöV9p‡öÕiqYû®ÏÇTø•HÓÿí]tüÚò5Íò­ÌWç²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð§²¶º?Ê?™§Í§#O•o {+aë£ü£ùš|Úr4ùVð¯ÿÕûa¥*³”ã-dñ!0¶Ré¥ÖKIµ¶°{*ûv`”FCO4HM<`¨`¾ ºlHŠŠUv›Œ©híë-!Mš1ê•…IÔÚÅëÒ­¹*DúšDkew£ù]~–”­‘¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥+ä÷¾W¼ñÞIµáìb7<¾i0â*NtvS„Áû4Ù&Îþ™"†Ý½ýIõÏPžÛ écÏÀxsç¶Ûÿ^¢éXíÖ¾ ¿šÂpã#ù`í‘§ãaª…Ho1yÛÝφ£òŸ Uã™Ä|޳6$>ÄÈQ\FNH š0ä—›`\]ËmÕPA6REOèßMÞp™n ®Ã)á?î¯ÒÔ¿ëgþžúVNç°8_¸•3 ‚™3•$tÌKƒö×ã¬'ªÇ!ãð½åÃwŸ!ðC}óRqÒÿ„d«¯Óû^Ïj–bP£ôÜî}õü-õïê_¨ýw9Ïßæl¯ÂOJø*ˆU ©«¯Ìq¿®šðêó‚ÿ²ÕßáÊÿIwJU»JSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJSJWÿÖµ~ñ³ïÛŒƒí9_I¥)ûÆÏ¿n2´å}&”§ï>ý¸È>Ó•ôšRŸ¼lûöã ûNWÒiJ~ñ³ïÛŒƒí9_I¥)ûÆÏ¿n2´å}&”§ï>ý¸È>Ó•ôšRŸ¼lûöã ûNWÒiJ~ñ³ïÛŒƒí9_I¥)ûÆÏ¿n2´å}&”§ï>ý¸È>Ó•ôšRŸ¼lûöã ûNWÒiJ~ñ³ïÛŒƒí9_I¥+ñy=TT\ÞýQ|ÊWÒiJ€­ºµ¦y¹örêd2ÛOÃxØ1üamEQãDÖ8ûlX̪€|éwYﻵ+Ÿ>LŠLÎÌ $ëVÞ6}ûq}§+é5µy´ýãgß·Úr¾“JWKœ‡9àæk|âmðŒ¥ÿÒæ”¯ è<¼¹Dî;ȬŠEý196…ù.½.¤¦ó}d‹ÔL8[ø–ê)ÒÚ®”¯liJiJiJiJÖsÖVþìËV­¢Ù3O&qÑ\ CvmÖb•ÊÃJäuÄy´Y‘‚zdƒ©Ä=P ñº'I°°kf.¶Æ˜Ÿ+ªäqŽn;Dñ‹¢Ù¦åßï Ùúе4¥4¥4¥EO»¬«™K_:Ob^E(áS³ÐeÞ}¸îÊ0ÜEPviƒ-ÉQ<6ßuDYQq nop!IûY~ßm‚xL}µ+¨¥4¥EÁº¬²s[ Ozn?!¨¶ìôö]y†ä€õ –í:¸ª§Žßé ÔHÚH÷ˆŸÚ*XZ@;‘w¸’³ö«}žÊü·»¬¡ŒÄËi>R<©±+Øs Üê“>@EŽ6$©Öë‚;ªl›îª‰ºêT\ÁFæcÜ ð©?ï¨:x •ÔRšRšRšRªÏæ¸Ì¬»Ö}T]CǬ"òöì¬<·–cÁµêëóŒúC¸§W¤I±m* [Ñãe×}–6ûÆ›‰7LÏ öª¥]Í\}g5eÃSß°UlÌ~êd™ÕÈúÊÒL ¾à$gvÞ%.‚éßeÕŒäàýt6iÔÔèAÐm®Õ.¥ZÓ¼¦ ´‘!u©D/˜[šÞ» ¨«¾¨‘æê®¢3:²WA·Ý Æ¡Á¡$]‰SãMk“cb¡ UX0‘_•5·±S)&Dj\¸&ò #ðd9@lh*½´Cºx.Û¢ªlº¬hƼ“¡#ˆ®W•UÔű–‘Ÿ¼’äJ¦úL•ךŒô³éÛfc¸[–Éá·Â¨‹Fp¡‰ÙT±ü €OÚÃí© OÚ¼í]”ÖõÙE]õD7Uu™Õ’º ¾ìyŽ4}˜õ "ìHŠŸk\˜Ûm0jªÁ„Š’Õ*kDÆc= ‡ò9î“,L:è fꫦØ´= ¨„∩l(½D(¡© ýƒí×m÷;´Ö,ªË)×5°¤÷¦ãò‹nÏAeטnHQ nÓ [Šªxíðîš D¤x‰ý¢¥…¤¹{‰+?j·Ùì©M*)¥)¥)¥)¥)¥*6æâ·¨³½¸’ªi¢»6ÊZ‰6î8} „E°¢®ÂŠ«ñ&€I‰ k÷“R×·U•Ò©aM”ŒJÈe*vzH•çÂ;ÒÈ¥f˜2ܶO ·ÝQ@$7Ÿp OÚÃíªƒÓw ?^Õ)¨©¦”¨»»ªÜržÒþæO“©¦ŠìÛ)}çm†EMÃèlHËaE]…~âh5!x± =¬Bï$T?§*“EEDTøÅ4ªƒ"EF\ÝVcð~²·“å!yˆÑ{Ýçåf>Üf¥±"ôtG}¶M÷]“uÓˆIí5hО b‚Äû€5T¥äü/ Èäâµ–Ú9Jœ‘Ya ³„çjP@°‘¸“ “ÝH²õm²íϨ·S®„®aN¥ ¬8Ì:M]‚´q¦¢áº’4 ôwKéÐÑaŸ“QV]Ñc“ìB5ÖJ’VŽ ©?å{bAQ‘]ý%Mþ-õ*nb£p$û&7ÚO¹ˆ¬DÇiÓÃa;\ʳ, âCÍq› Žn%Ï»×ù9_Ùxz<«pÝ{ò„Ú6½#a| ǯÃ~’é”–á·ûÝâÆãÝȉ7IñÿdþÊ´ê)M)Qv×U´Qãʵ“åX—6tw: ú¤ÏÜXÍìJnº#ºø&ûª¢nº X(ÜÌ,¤ÿ¾¦4'—þ•ÿ׊Œ­½!†\w²¸ om¿B¢)má¾ß©‘Â)c°[ö½»w9“y‚k°±<nxíœL>ªÂöuD%°3Œ«¨Â·Ô Ššõ'Hî¿s_9‹ë=Îr}<`Æ»ë_²ýGý4ú_Ò‘½îÙµ¡ º'÷­'J«Í‹]ÉÍ&A±Ü£JDCEUm@WÃoƒWí>¶ù3 y$ÇÙ\ÿ^ÿK°öNÉÞvÙÎ@‹~À†^0Ë᯹q^ EÉ6wÜ››:¼­k$KÁãE(©|Øí“‹X¾ÃŽ/X¦à­8ڦ˺¯‚k貂13&¬ºÆ÷,‹ ho‰c‰ºþ4¬=EVÑXÅßtðð·žÇ`7‘3™qªš /œÇ’äS ®qw«šTjÒ?Ømׂ(³ÛiwuÉ2TUTzTVáܳէŽÈ&Ñb’ îdƒ¨«ã‰Khîtcájo>H$ˆ2) Ç\ŽdÛ¸TÆ¥ªë„óuÆÓ5&c=©-Ë&%2¨©ãÇW}Çn¡$MJÝ:Zm3¤1ÙHÞO²:Û2ú8ݛ̌ ƒL’vÐ è*Ånlˆ•ÃÁãr[ üPzužk\¹ÇœÕŒzSÁç}u*±n˜„2ëN:Ö +žylÂaVŒ~”üéJ@ß`߸H 7^‘éz`˜Óª$ë°“£}ÖF6!LhÚÖO!¯†àA=$…»£ÈqyÉW”RH ³VZ’1&^aðCiædEqøï¶b¾ˆ;î;õ "AHâ4<Áâ:ƒÿ¨ÐƒY+6:Ì¡úAzäLWŒxåÌ5–G–μÎqzì+Òî† äô/È5Êäh@¨Ÿ–êTðêßÒÕ»¤ôûŒ¸qïŒ ×Þ@·ß{Ej«8W+h°ÓO, ÌêgôÚ¢$q(D—IüWžÉÁ§1ˆ XÓ¿*xHE&]n#3Î@4B*Dó­ƒM *¼mô®Óé5̑Գp‘ÓÉò =D…Yc\cÔÆ2!ØóÛn$õ q¶ œ'0.CfÆŠ•ì&À®r‘ëÆ Cz ‹v†M’±:™0•QUuUôFGÓ{¶–¡q³Ìp±2K@‚<§f=+-¥V`ÁÓX÷ƒiÄ ù§†¢c®±¼§JõÉñ÷©Ù…“Rÿ˜…>,¦DÕ²&&ÖȗňEÕ ðëêèyqÓõê°ˆÐóbx‘È‘ïíB£ˆÔLy>î”§y>î”® ÷‚éJ²aù…¶“Òe”n£v”R‚Ld%$< §:I[t@Ñ7TßJWÜœ1«ä >ƒ1§Ý ßEÅ’ÝI—EU·Ù%TMÕ§DUeTÝ<4¥[t¥4¥4¥yz}y2ç?ÂÚãÛFê2üæ¶þ7"¹2¡*Y¯ˆÕShg•ª ¶>OnµSÜфDžXÛé31æÑó(X2«\V¾älÝJ¶r5õVÑávÂÄÏ݆a0“#‡qÕý&˾—ƒ¥Æ^É‹-äO3 ÅÊšµ²5ˆÃÎJwÉGòÆÛìmÚÖÙ#·éÆ”zj¥`ueX»45#!ûÏëuV´î:›{÷€-ÇkKŸMØÆ-é^Æèž-Ñ%ç4e˜½¼9x¥D˜y¶M4”të²—"œHÐä° ‹¨ XˆïÕÝp…;€EŠbcÛ¹C}UÆÛÙG\¹ÆNkÁŸü…SKfe9P0ë ®“n"ë3“òÕ gnÂLÀ×øÇæ¸þ;"MWž=aRÞy êüÆUuÛ„Û[†\nR°nIi¶ü×}òð|Z@×YÌ«—ÔE#ä¦ 8•±¾3Æßó1‚ªÄÂJË0–»\öä»$GªIVMº†¨æ·« "èÜU”|€<5ÈñY®C/,°¢ÅåJmT’Îd©XyøS[3iÀC蔄«ùAOI0Ë}”B!º«;"ëoQN’W…ê×R¸qäxˆ\vVÙ£2,Ëj*'-r#ä{WP/̤âS2}R`´­oÌ—‹EÞ,Æxî,?hãÀ¸Ç^¿I&#çšoe¤™ÃD5y×\US܇bße³ o™:-APT ÄØñ©Ÿ4t.³;·®+ÓëÖÒIu»\Å~û¼5Šó7-p^oiƒ±ƒãvRjj8 ‡QìïEL¹“Õú=‚íã14áô¹:ËcaŒhuÕ×"ei.ƒ6Fk„ù¦ÅÅ`Rªçù¬m[zcr¶¯¤Ì²±¦¨±aú§)pçRSBæ½ xa+7Fу‡KŽ9c¶$ãfë9`Ãú¹&EÕêm¦W¢=àUêÝuž|d®UÆbÑb<½oˆq•>µ× Gp¶ùݹ!q‚d'¨9úZêgÌÇÒ n€`kXšg»gd{cs.â› £~Udx·îÚ½Š$kkQqIéì7;ò·Ø•%Y8’Ibi H“«Ô[ µ Tî€"Õü¤TNo³[W]FÆ}k‰¸€À¶Áä‹N²çf0Æ1Þm.]ŠÅq—g”¾ð¹íž*޼lªMr‹@0¦«Öpݦu‡#<ýÄ”8Ì’’Ït»G¸0ÔvUÖ}› xÒWù‹>§—H—kXÜî$äküÛw]nÛÿË*Ð%…ÒKÕlÆ – o[Õ¾3›=—dXô|BCô96sæ-gƒ2×F‰T‹"+ì„æHëHAŽm*):>š ¶`=;´ô½_âõKmŽG( u°ˆžÑÜlmÖõQÊÒ³áh‘,m j­Õñg#TÚãW­î²|}ŒË&°•Ʀå,xµŸZL°Zëxòb<‡Á–ä)9ù.*÷»‚ˆãÑräIÀ‹›Ð°éÚG¨»` k*Ìë³8%ÈÒ]L CÆH!‚åÐ!XêŠÙü-?+ˆãvQÆY#Ç«àH¶´“E"§â²Û1þ¬µœ÷ŠŠ’+týÅðסÝ:çÈùš`ïOˆÓ޼tc™ACfã]FÛøÁÖtÓ˜Ò|ãgÂ6Ô;PÇǵ‚3s¨õÌ=Kˆv÷VmÈ¥Ê<ØvŘ£Úï¶žyºZaQuÆ¡½$D68ljQâ}Çpɧï±L°²Èx&+ªå‹¿Zz—:À>¨ Gš$§^2¯ ÅæHPkМƒÉ½™Ã6qF3‰Øe÷zÆiz=U.7Ÿœã[ r‰— UsÁ@ˆSiî€|™›¶üYU| !yõ*²rꆅ$Ž~ÝYp*d78Éý⦠ö‰»XÐê€t¾ïÙgÈ Çqb¤KŒC g;ª¦:o5u>¢\ƒ·`þ³0dHqƒAS–$Ëè‚ÓŽvý ß»el¬¸†RÁ@²Ý ¦é;OWMËù•¢ygAŒ€·½ ,®°WÕE®;ÏLhwq‚Áâ< æ½, £žª-]¦ó•±¤z-5ŽÅ‰[@“º-FC%߸D«¶}Ë;"ZG¨‚CjÐÊÅñ’[Sg@ˆ ¶úkr(f˶UGbW¡Žª`¥B¸…Ðê'RÍqv†b«­ò2å<¿­²µª‘/m¬%e‘™š 0ÄVègÔEa·ÛuÒßêüš‘>D¨›Ñùa¦ÙB.e0K]›FÄÀ›Y½ ~ƒké¹Ç¸V©íe»¬ˆþXµX šIÕvÊ»º«æXªMï _\P[Ǭâ{L/™™Æ¶>$§L2D§ ·BÌ!!j¶;54Ådþ\ ¼(%j·›¢øÐK*eµÑÒW©n°N)5pDE¦Ô÷¡ò'èòÞku†=3£Ã™{3pÖåaòHUxÓ8–weeRüœ5ÊËY,›qÖB 6¯Åq¶Q+b“nô#ô°âì®}PIég×ãŠØå¿1ïeË,ág×õa^å\F¢m+*£Ów,QôèÝŽIô½Æ^A;;›cµ‡¤VNÇóÊ»(ç–á¯âpèpodäË(¥Ï©vo›yŸ%&Gù9 ­«Jâ6jн@+ᮼ¹—)É–90uth‘p$ͬËëb B½\cŽÒú…;꜉­d¼qÉQ2<†ë¬mõçȵâT)LƒN¿”î‚ûfàôùc'½‘PÑuEEâLd­¤‘pô‰ø—¹®_fÂ-óGk±¸N™¢FŽG參jþóc\¢ã wpn:)ü›Ã9ƒ¹—Ž%‡L´®ã–páÅrˆ«C³ ÖۉܷíÞ9ÌÅlL>­mžöä]tzÎß0ÑÊE ¹6ô™-GWK3¤Ø©ÔŠ\µØdV=½ÖÖ1“¿­¯2,5¥XÉêqβïølšL½è¼{]+ Ë©9&Déy~ÑËp›µ)×\DyPEa\-˜ü]ÚñMs¤"ãB²pX¾"—o¥Öú‚vn{WY{šf ä÷q²8m„….QF¬ÝEI“[‹8Á‚ó÷>»ŽX1ÂîAæê‰š¤{aê‰QštŸFDaÈ&†+†©Ð„ÒJjs«¶\¬¯Öز(É®ŒÅH3õa´õu@$ŽnÜ*àUeé ŒSMm;}Ù;ì €kÜÇ×8l¹²&`iÇÍû=SS‘‡™†úäð‰ò›z¾EçûôpÊ$ôJwþY±è öwV¼ ³0)Žå3´¯P(¶©*=)øª ´­Æ÷ß’õn+iæ"×kH„õ!gª4ÐðFv–¼­/êŒì“"«Ê˜““œ¬JuÚY÷’µ†¤@„Õãý°q½‚ÂCmÇ Ù³p@q쇦˜Õ¶Ó¹dÈŒù§A›r5íù°öÚ[&BºwÙïêÄ¡]-¡*¶Ëk/%mD3¹‡»Íƒ1sdÁ0H0%ÚY_E¤(¯Æ†ƒMi‰“£GXaû…îb‰»Ê²wUsSÛ…Ç鈶ƒºLª4ฃD«Ú`jÁÚI[ŸW¦QÚ †f·ž±6‚0²žÈ®ñùq«xÞÏÀ˱•ôˈ˕!¶ë 3“ÆÚN¢Tvb‹ªÉš* ùÆJ«k@%Ú€Õ…ü«ŠX§€‹r댛}k(¤ ƒ ×ó ³ÜgÌd6>¬‚ãéZTtµd?Ã9S#Š57Ž¥æ6ñ™ÅËì,éÞ—‹Çª¸I–1x¿£­‚DA¯ŒM¸ƒÙ=›È÷ÄÑšæ"ëÔ³‰kÔcD¶æüÇŒ‹“$ä ®OT””ÖF" N<Ѝc¡ÛÔ Ú:¥ñãè-hK$ }[)í¶[n²¥|V`b HF’$6]mc‘A·ÜRuãØ\qÖÀÐE7 Ôùð‹o$u‰ãéÚ„(Ôôßs+;¼‹VùÌ¿t,Ç åoÅe nI°ƒ“(­1˜ñ·2dù6]—ÒdøÖ6]ÚæpÚk*isç ¦ ÏÆ¹ŒÄt›%ÇzÓË8½’suElcå’.k® @$Pb¸ÈƒŒ¾¤ 6KHÑëL€eü²m[m æ‚ö³d¶Ê2§MÅI¬<Ì*s Äræyrç7¶Çܧ©¹bÍÐGdEuÆœ› hŇœñG HTÜ} ÷ØK©-lj±Ìê ë¬e¿z7 6Kˆ0$r6€G¸ÈÒµ„,6Ï2o˜1ü*æ–;ƒEUÅó!Xe»œ…”z|C}ŸèîV¸nÅo«´Ûê‰ s`U\Ý–ñ‘¤díñäUvF\˜×Lu`i6¹5¶F»¸ 0S%Ë@>–b‡˜™,¤¾wRÞ²é¥ÆN‹Ê1b©Éq>‘Œcµù¯ÖÕüA_*’4¸1ÇŸ©~CL³9*ÚîKq&ڕ⺻¼DÞ¯.ªA7\챆8ÙCq+v7chb§(P ©#;T©mª’>û«5Ä&ÇU ö“éÁi9y¿r׺OÁ£eþE‹SFR ¶š`fÁ‘çCÌ+¢ ­®þŸ¤ž;í­16d™°?å2}Ä^êíìû‹¸l¤hr3sé9nÿ‡Þ=µÿЧõ‹Ÿ“3íú$â¦ý(¾ »'ŠíªdKÔ¯1ÛôÞïå;¬Y÷ôÝ[û¤쮎5æ>^á;ëlV¢+ö·µ…Uçžš1ǼÛÝæ€ «pDNâ(øþ.¼Û³ÍÛP "5¯èÿ®}oúcú$î;¨}²Pƒ"c^øÕwÚnBÍò™6k&TÉsÌž´µœIÝp¾–ÁM•6DADø> ´ÁØelÃ&MÁŸ²¸¿¨ÿ«~…Ùý/eØ:›¢ªIý“ï$’dÖ×À2høžqˆdóAB ¸‡>hEéW‰–t[B ERTDRD_uõ]¦UÄ÷6¢ÖöR£õšþkÍÔBµµêy‡c<æ +–iŠrÄKˆIŽ œ&ç¸N°ð²o N®È`®¢*|á²ñcB;c†`èA‰)‘:¯N¦xžbº»‡\Âæ¢ÛhT+FðE½;Žb­Ìóþ.0=Žr5¢c q³¸3Y2B`¬J[¢$Sнf£hÒ8ŠˆÇ›UAÿ”ßZå å"VãŽÝnŠè ¢É!µ`Þ^X¢ªGV´½ÚÛ¦H›tmE¢ ætÐMW(åœB~g–ôìÜ=KÆ”µÖŽM‰R~«’®¸ã,·%àN°øœM—Ãåk£pw“9t܉R<9ïú¸T¶½šà&X$Ä«vÔ‘¨:kjk?/ã‘ó>k±˜Å”|{–+®kâLf32&Á[UÈïR’Ãn ïé‚>;üG®LKojpåH;Ž’t7ü6ÖFë÷I˜ ZDÁ‚ ѵ•:A“ʶïëŒÕ‡iMœ ©Üâöð±P†W˜ªR0³I´’Ý­WGþµîœæõˆé9OPÎþ[·º­e‹¡1Ô§«ttϨËæ+ouºyõ¬}â1ˆµñpÀ¬‘?<ö2Mý< rŠgJšË:‰2_ŒôusdX®HÙE|MU6ZeTÈrVãŽÍŸLSh¢ãqêáôÎ5T8ΦÛç[tÈD€zˆ‹G˜*`V†äÉŒ™üz,)ÖuxÍDzÊçfÖSÓ bÚu1+飴Ôh j¨ËFëä#ðº[ìÀŒà‚MÆÑå“HHUØr­ Pp$òÑ05:À$“©à8Þyœ-r Œ&‡È2::ZL>?‘Óù£‹\¨í“r²Ãä6b¨;š"ªx(ë^ñÆ~ç.O…Ú@<³jŒL1âE:–2+s¶ f2Ÿùl¥ý^^DÌlŸÊ߬V9ãI1p\šj?3)¨ß«\Ü‹nºöO¼OŠÄÊfͦw(JyÒB]ŒÃ‘¢¶\ä…ùgKGg*86Åk`O8Ùµà*dÊõ¼êÓ‹Ó¨,’mXZ$ô‚Í”¨ý~T­Ýaž$ÄÀN燙¢>Í%z"æYâç,ádd¹%^%ÅÃñkš*Ê»'­^ wf6ûŽe¡¼À£KÔä_3°¶ ª8â·|¤bF'oT¨c Yé®Im »ôî <UUP^TKL– d,Û#IÖ׉è/ [‹¹ÞNűüº¾%7ÕLIò«.FÑ “ñi‘ŒmÇo¸Û¢†eßFiPAÈâjbÞ¹qYÇp#oÚ‚T€DRÁ·‘Y£Ü0Fšˆ]¨`XJ‚Œ¢ Ú¶©Í²ü¬œäü™ŽC·Âª8ÊѺjš<|r%ÈضE&õ–jìl9”¤ò„ÇC"¦®õ(rz£5ÏÈbÚW:˜ RÞ›5ìlã«Ò˜ýL¾”Y#ÎÅã\`˜`.UÙõ,’ [s…ËöSrèÕ¬â‘ÝÂÞ»c<´l‰&}m"¬-D‚°â",N‡¾êÈG{‹ùŽ„ë×AK\+ô—9q“ˆ¸pÑ¢ŸÊÊD(Ôq¦Pø¯RÐ…÷êÛhY_ÍÆÆm…c­ÊV£r~LÍñž@Í*š ­»£‹Y‰ÆÃá‘EuÛŒ‚ÊTYEä첤;¸bn¨H­´fá WlŠD ŽFU×KSÌó¦„(bº‰´•kl̸ቅ¶O;‹„Eîb¢M¶Ìeä<‘–;Â|‰˜TÓC£Îñ(·Q¬ro™…¨ÜhÝfZÄUy½ƒºÒœaRôEÀêé¨`þ‹cêèºôÿ™édS¾ÌdotXÈÈû¨5ÝEû»«-ÜŒ1&§–sj¼¾ê¿/Ç *™*RÌ[%qêÙŒG¹6XŠ•í,¨ýÀt{Î8Û½F?‘èODù1ãÂr10+¿§‘Æ£eüµÓV’¤H&˜ñ¾B DÆ9·¨B1ÔoemL‚H¶§8{™í9FTæ¬8ö߆°š³¤²•ñ–Œé" o½mMTÊHØ„º"¹%½º•TDRØá*¦íH{gË0æ ›®E‰M˹zÁœÕX°âT\†i†ÚÐ[9¾Ê¶²ò6-.8ÜLšEÉ^GBx¼²‹$fŒ–c1 DGq_4DêG{jƒÕÌT‘WS*ö À&Uò µU™ƒJ‚Òƒ¦ÁpÖVò„ñº´E¸ÚâÅa„jŸ™P8·¼E–Õ¹»ŽØc+\^67a>Ö®½z*Bèå½*Ίæ#¢"×*“=;´]Ôé¦Â5Y›iPŽ1˜Ô×>8§˜ÉšÁœ&Ž@›l‰7]w·A#H,¶®Œ]¬£ï9e"f-»Šî¬†Æ¶–VÔ×vOWý`ë„xîURN†ó­‹JgæeE ”zL½%{6Í„— ¯Ù2jZÑbŒ©sMÑqôä*³¹'pD²5•ÆíŽVbÎq½ªT`Jì^^¾Îªî8®³’Åm]þHmæži¦f PdÏq˜íÈ«²hÑÀŽ}_›?D@o¸®µOQQÙòM˜ñ¶B·ZTAiÕÁ”ñž›_{/ÆU|ìUWÂéÖyèªÂ ÓjªDçœÚvçKãx±ì¯#cVx]kW½ÖåWäö_§>°ʾšͶ†Ë³o8»í»âuÊݹU $Ú:20!¢X‡"ùAÝi+ÈŒƒ*™ÆÁ™Lu0BŸ Úá‘ ËnHk"jç›eƒO?‡âÀ­§ŽöOnü\â/Ö.›lTó%›pÞ:å'ÐeLH…5è£ ío«ié\9Öå(Û¨ø ‹ N°ÑH$uQ “:óË߯µM¼&YSÇÑ,ó<)'äÎãx­ž<’eX9ræDNÆ•¶¥×¢:Á8èFbR /äúÉ5ÕݨL¥CzŒ¶êB¨S “ÒðÀeÕ­7Ѝ…¹L4$«*l`Al˜Â›® ™U"Õ§å‹üS‘r-†eQiEžôœZ[SëÖS›WSÊ9q²J´êl‚ã±Zô·ôvMÖ¬šã ¯¨UcIŸÓÖ õ,J•&Ò`gî.Kg]m€·NÒt0Ð 0`.‰4»þgÈé$ÆL†ž+/¿›+­fÒ4˜ 56â) ”æ! “`Ž)‹hfÞÄxâp÷F¬”`e¿.`S2‘j–7Z1—krº´Ú囄Úq´‹ŠýLrÂ}áäd ù&X³0²µÅ2Ijõ5×êÚ²ƒ$›¸©§•Ú®Œ}ÜŽÞÎtwÐõ|…QU‰Ñ“#"K.“þR¾I1Ùlš¤v™HƒºäoHb õ B–R¦ëä¨|á•5} ÀqËGàZÒW[S`Е—dšIƒ‘Í{¢ ò\'Ú¯ŽDÓ>›gè‡wb¦ÆEpíI‘£¶ ¦Ù‘ò¼¸ *„=6”‡‚I&Ž¥¹‚°¸¨ëU* µwãí–gÓ8ïê Œz JÍæã¹Ü&nß|šf5L©dßfUDYñßlÛU6%ňêH)».wu|H™C‰šD`ØÂÁ«Hq=@­Æå¹@4w*¬#¨ÐÈЖAƒÓÓ‘”‚­½²|ƒÈ\ŸGšåUT0«]¦­ (Áf HzEÝë°¥6ð9ŦßhH Ätɱ&ÁLÉ>ÜÜ}GQ®„.S¨Ä­­  bÚŽ6™aG……‰ã7ʉ:騋Í=å­p¼:-ü¼,ÛøŽd>ÔãQ-&ÌòÌcRŠ,·â yr^l•…çâÆŽB’`È­Œ+ä@CY-©slG—FWN·ÛЪˌ9 ¦—ÈIƒr‡]bâmt¸"9^­À¶ž•å—ö¼º7,AfŸ¾n&üY$ó˪aKÙöŠ# Ôò9âã‹Ôd €©s÷E±veΙËâ:ÕO·¦"#@dÜ@Ï ®\«oªt=BNžþ~êóÜOẏÄ)®o(~¾má­ü®æiUU2ëôÕÕ°™ ™èqôõí¥‹ñÙSßü¨EPîΨ½Åš*Üú“¯NL‹ 0¬UqÌ\¬AEPìYªIY8Å­ áuÕ•µ°¡­÷œéœb,òU݆)[sŽÒål×QYŒë‡­ibØ;"ÍÚš+'c¶Î¾ïmÖŒ„Ým°>Sr®0ÀcM«Ó”ãQ-XíbÚ¥‹Üm©<²I[€:˜–MÀl,½‰+ 0ÛܨÄ(É«áÎrÚ«*ч£»&ÀÛi¦^3’Nî8‚>M·ÜuvuÂ+÷ éäºÉÓB Zm›Ê Ðİ@\0ÂI3$lƒo™­]Å­#Іé­*×;ePñ½­['‰7{:UnI›.:£&¿0§£}¬ B–(L¾ú"9—Òl\éÛ r2¥Q‡ñbÎähNÏxü<"©•F‘ ¤ó䌻ð¾ºDÌÇnæ«me2* bLÜPcíÒ½š^;eådÅ é®Bаa¤W†R´­#1Òvû§¸'62‚ÆäÜú„)Ž N\ktX’ ,›d!Aƒ,¨ÙÚ1­ÚβÇÓÉjóQqPÀ×NuŸÚæ¼ÔþO%†q¼jÝŠŒ:ž¶d6Ô%›î UFxu$T—ÁTî=–Fôû#”ÉcyáÒ²B˜âWâVØ4Á±ue:¢ù@âZ»í¨WMÄê4/¼? Õà÷Ùæ)â¡›:Æk,¤OœãUðÇ¡Y¿"áê\nAGWzÕ䊬¡™‰ ƒ}}}Êúl«ÙÍ« ”ãAshíBÚ¥ŽBÆÚÌjZÙ *è±$Ý#R¢ôôEÌ=œŒÁqö;ÈÀŽõM³u²mU‹²˜ƒkƒòFdR~3íÆGÈ›>’"BÓ&;s.1¨b0Aê—ÓÍÜ¢r]$ s=7y‰ƒÓzÈ:l¡˜H `)Uc¦¼»æ›Hö´GŽ-£™GÖ°± ÷l™Àã[WÖ±2KéC̶]÷mOòI¿iÓ0èà 9T[¸Ftµ—6Y› ѬªJÎtÊF;‰˜V´Æ÷t$Aˆ·+ØuÙKõhµKsÞ2Ç Cƒ;•–f.re±¬¯fâtxõ§ ¶šz‚†ÑÇIwAe_a1'\lý#©ˆ’†c]Lá@èÆÀƒ‘D,³•YY†€’¡Dôÿ/1&/¶ì€ÈF=[hØÑy¢ÚfDÃ,à/·‡½jÎò#ÈÎÀÊ#‰éÛ‹‰òdÖ0¶^:\ØìFØÛc?˜Í&À¡y¾ Î™1¦3æÌ˜ÌF£ÒÉ‘üß¾°ÇN„èê2ßÿÒûù¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥*ïú:ÿkJV& ˆ”,"&È’f¢'þöö”«6”¦”¦”¦”¨˜uUÝÉ…{#˜“îILً֢͑dH?’`aDO öÝUVTNŸˆ–?icöÆÕ3Õw?VÕF¤á®9Çc½®…àeÙ5Ò[I63å¬t¨’ëãE)2(ñc5žÕS?QH¬J8ð"T9QieTãë”ÄfAȘ>Ú75à1ßg¶q dÚù¨X¶·Lò7Z±Sé§L[Ò4ªF‘úç¨&àÞ`ýMÖ ýMÕÔg¯‡é©òN?™^bâ’E€€ Q ó†D¢·˜M\›Œ˜.G–ÙŒ¦ŸpÍ%"ùÈ÷wb-ìLí¦ ˆéˆ_N"Õ³ ªÂ²BTUûï¬ÜCÓ7€pZJ¿ZÃjÕŽa8þ&Ì6)FÁ°†2‘N]¥„ç$ÃmÇž˜äɧ·hP]}MÀÀD‰K˜#ØjNœ¤±,F¬Ææ“­>&IÜÈw€4 °téXƒÉ8›Ë.½·ƒbÝ„¦šbÕ+.m*£Ù2ÎèÛVqkåÇbp ’‡Lq:Cn…T\†5é!ŒuR` *zI Æ%•UZB¨,LkhÑ€ÔÀa ’W^–,V râ쌰3ViI«Öˆh\±¯!„±¬G¼’IÉØIÏyüŸ_G£­UÙK2Ó3¯˜ËDùn"Z"I$êÆhDª®Á@ )•7 uPdå‘qŽ•ϳ³¼®•"mÅtJÉαc>"+P%Øn¶¤4-HŽù+Imö×ñMP %®ß[¢Ùq+ÒÀ@uѤUï:xçóÌr™´ÉX$Ö\~>Ä£a³°ªÏÙ{H²âZD9Rœ‘$gõ¬·_šn”§xœ#7‰ÕtTÔú¼u.o‰øb#H¶-ˆˆ‚'N:ïQŠ5ÃS0ã—¢Ätm¤ðØ<`c¼Ä“«4ms¦‰1q0YˆÕšL.rçs>Áq–°,bèèY›V)ô\‚×1“¥»²ybß3dô‰ÖÃ0ò ÎÍ“ U–mBSêqȢѺ@.õí´/N5A"ÑY38€´†ó,0¸(0¦9 »¹w,Ú‚N„¦Du)é~’VX‚SÊH¨¼‹€iËOMLnÞÖî=åžOy/#ºœR£Ãò(ûS˜¿­°iò`E¢p&zMu¶bbk¨7t€@ :FQ2<¥I2²²³uv´Bi’YBïÁZñ3$Á›uE P-JÒpVTá&Ä—g+ªUæ›2{«Í^`lká>ÌIm¶ñ›µ!·µ"èDÝwа( `tX£uiê(UüÈ*­2«°.¥\Ì—c5Ènq2ZÆ:f`WFºZv½U´ºiÖLœ~S“*\S1Fžv;Ñ ”DOv_1Ø‘SÇ}·DTξ*Tø© ‘ö¨û=µyÒΣs@Ø\@º˜°«nAŠQåFíúî9b6´ïF—&µ$ZuÈ¢ºÒ¸ÛÆÙõ6h»®³( Ï*|U·¨ ›ŒG°ý„µ7„ƒ\“Äø º”¤zŒÒ¼*ki#£S&2óéÝ'ëû|^iØî—q·›1tKbëÜQSLŒr9rMÌn$hg^Q‚„¦AŠ)´6‡»$_í›FûF‘]|[@ïåkJ®Õ×äõö¥XÌvE¬“vÄ “)ùœ‰N/VêN¼¤¨ˆ["mS©NLŸ+1lAc$¶å˜¹–&X¦Å„Éd“1S¯H€£‚€¢añ²ÒH “K.ÊÙ2fO•amg6t‰à[®½>L§%$G¦ú^Ø öúzk\t-Ú4#¬d™Ýz«]æÐkP9Á˜Ð€VôÚzBu7DYÔÝ:™¯Üp&0þ;g‰ÑB£Ì. Zr:Þ9cζn°-̰°'|†+#ß.∎è=Ηʲ… `zþé?ÌXë–’.bDÒC2”ºLØnˆ7ä#OGH‚ªª/9'àytÉò,|,åJŒÜGŒŸ­4ÄÈÍ¢n¢‹v¢*&è¥Õ¿P‚F€Á"LÈ$”2Ôqc ‚+" Ìé@€" èFÅLAЃJÁ®â ±+Iˆ÷2fTÜ5{Þ~As>Åf2у»>\×d¼Ê4é‡aÇ •B-Ûñ]]\©@І·E×}ãÒº´‘bA,T¨3?„Ü#îë>Xó4ùšf-8÷¹¿,šÆ½÷íÍšæ11¨æ5~°‚G·…‚6d*š·Õ²¨*¨*Š×z¯2}åN2G)C7ÒuU‹?Pð‘î0}ú¶±­dÜÆy{E½¤˜ìgÒÜ&ljqk%5|ê?bÌ¡‡-”}§œ.Û½@*›€Ž¨ªAáþYOâVf*Þe$ÚE\¹-w`NV? *(uòä / W*l7 ™Oª%‡ò‚Œw@äÙo²áÅŒÛ0a禉Ylɱ>”SRTEÕ²þjmT–'øÌ·°&€’@šËŒvÛ¥ (ö.ÓÌŽfL@˜¨p8Ôf˜¦²©ò­ q~¢úæ±ç#Œh°ü»ïBšË2¬ÂdU§Tz”z”•lì]‹6³2ªÒÌýKån§x¸Ê!XŠ·³B6#Fy[̳m"J©:ªÆ}— qÝ£ódm•l™ÒãNó÷võ.G‘WÃ*ù‘Ö'TaFœHýè ÷úSh$I3,w2o!˜ÅKö™[úÀ»Z€ A¥³r`­Þk “n•;aÇXž!‘K8ä%ŒpÛ‡a6ƆðHeöì#>Ô±y5uë"ÝH•H·9¹ƒlWhéiH`°•´tÛÓ¥nóÕ$›¤Ý2×u\zƒCMÂj¯…¸ÚŠÈð1÷Aº‰’, ÖäÊ—dÅÃî“H32rlfÞ^µ_TüR$[#”‹t€ð:ì •ÀyV ¨ γ¿3¢¬“¹$*ÉÝŒ±–$™kÞ3²LŽ¿+¹©vMÍrF ›1ˆ²RÅ""N„ËÁg–x‰Ö<ÃnvTÛé%ßTÆN6¹wýSÈ.P½".亅; ðÑ¢á#[Z!—b$Õ– Us×ËÙw$—ç®­ÂïHòìÅëØ‰P$Àòxo¶êªµtÓ>X"?,Þ:–'ߥ!®ã§êÚµ©p?$-®Ú¬EÈOF~³ »¯~3 cEø“šv:”PVˆ{ȉÝëTEÖŽìæIÖXòóÌ n¥€k<¡º€ ­Fœ†Ã‡)ƒøº™nóZJMºUùœKc<(+‘q§ 9Xõq¸é«‘žQLjÕÓ'•LÈÔÈ•IIIwÕ3”Ch"4é€4Ûڶض±˜O¤A]Áz¤Ì’fn$êfgW¬x£µ¬§¨™FKªJZbdÈïÈFx<¼†^›u·!²`øš:Bhª»ÝØ»3 I;]Ô« ®•UP¨p9õLñ7L™É“pºnÖ¡¤pWH«­§Z{ñjݰu‰.íâÌwëg’Eƒr¦±1¹Z”ê!¼Óî8H„bª‰ª˜mÀ""ØÜ+'‘”I2*:Ii0DH3&éU°0i¸0]$xï­KñèäžÕ<#d‚(ÒL¯ªÑÁ‹äFJUw|ŠHH©åÑþÇwµù>¾GCÔ6·‚ ë£`&bã«D\I&KH´ -ÓE2£H§Um ªˆÈÃxËÀö7Ä\}†â6VvövþZ+K¸F†–R¤¤VSÃòLt€ú>ˆíkÚ&dÉ'Vb&.cÔÑ&.& 1Ýšs±d"4U$*Ž•Øy@ÑTl¢+ø®[—”²ê® A¡¨ÊÊ™ªvô”Ô©„§8#Ëkzd¯‘Œ†_WI £ZàÈ©•$©A¨‹ k 6°Å°ŠŠ*Y±ï0¿q‘Zᕌƒ7"ú`«+-¿—ÒA ,LƒhÿÓûù¥*¯–Wãv8Ä(òEœªÃ긖 ¬Xòɲq†ä8&*ú‚ƒj"H§°®ÝI¾¸q¤¸RÞÐ7%µŽHڲϘaPͱ`³ÊíŸÖ¦“ÔˤI,rn”äÖ÷q\tm$U@¼½• i®G2m\Œãl@fÙ ut‘ © ôt’ØvîÅUEÌÊ(´´ñ7€a0d 7r‹ycj£ZXD¬ðiC1Ô¤ M¦Mõ?¬<åÌŸTD ö½é 7åb_D‡ú‰;m—hö2Ù¤¼|Y'aÆßâÓ§Û¨Ó}G:Ø:ž#Q>î~Ï×–œ¡:·)gk‹ò»YÓ•2²d7¨4¨Üe·¤6OÜ2b(RÙ5ßÀ|nœ=²äRÇ"¬Dƒt‹¦&ýÓ´×~õ±° œ7”©Hm¹Ôé<@¤VÁnþÑŠM\ÁwÏJ~  z\nç~;{õ¸×eΰOè-ÓÑ]r<ª–ƒ¢Ýü:u{5í¨ç]—Ž&5cröøUsäŒ?«š›]D•'ʱ.ÂÌÇ9ðHõ43e×’TOUñøµÑÜö¯Ûêã§ï|>:øq¬qwXò±E"å&VE LoqàENÐeÖWù¸¾EY’CŠùE•.ª[3mðA"h̓4D$U]öTÖy0¾8½H‘"DHçWÇŸBB0%L Áäy×Ñ9z,©áá$Ll¯œÇS3wê²çBqVí5`äÔ”ˆÚÆÙ7B.‘Ü“dínU7­Î·ÖbÛù[6ëæðßJæÉÞØî=6*ial @˜ºø©·A,tÖ+¼ÎÃ0­ïr¥Ähf·m˜Ôå­’äYr|ºZ,Òi£hÕzc)¨¦â àšœ}¨pj@¤tõÅ¢B•ÈhHËÞ²3‰Øc™"Øé` `p '` «÷#G§±›__ŠßeŸSGnVI6™¨¦ÍsNЏß5*9¼â¶Šçj0ºêJ¨'[hyc –v³Ó©ã°&D±…ñéh×'rC*ãFÈX]  eŠŽ¢ Ki$DÞkl`ÜW@¶«”ÜÚÛHíK¯˜Òî°ð!¶à¯Ü!TTÕrâlNQ„0Gˆ­0æLȹʰ`Ön³­i¥)¥)¥)¥*ïú:ÿkJV.#ÿQ3þs7ý-í)V])M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)M)_ÿÔûù¥+_r¶?;)ãŒÎ†ª*̸ŸTúQ².‹“ÛäCmÒ FÌ!>¤é$EÝ6Õñ2ã'`ë?†áwødÄHãUu Œ§Š°ûAïo ê»’ÐÙÐÏÀî1ÜA쪯¨°¤öF°Xq„–ÔabCK=øìª61‰’NâK‹Ò„H»3zç2³r1˜Ü’  ˜iÀ:¢é´q¢6X`qHw”¬‚Ä –x²È-Õ0¢²ãŽ@ Ä¯1zÜ\ò©y?WbA2¾d6bA°® â@ñNÃÊÉ$±‰¶Í}LA_q¿ÉÉ•&±Æ[èêë^¡Žâ›xªn›ð£€¹‡Þ)6ú“ÿûk¥q0\<“> ~ÞU«ê1\Ö.AˆÓ»‰I œ[;ȲYYKå…nÕ±ÇV%%LJh‚mËºŠøêÍiÀMÝ^‡§n³p°oå‚‘¯žUÈr2…0r®K¤E±¨Þë1ª€@$6ÁªôA.Gy†{€¹­ T”ÝÀ:À5B™Â׋‹N´a«Yy,l²âîN+ ›õõsÖ²_2!$µ‚ÚHŽà˜î=Í»âB® íÛ÷£¢¤ B"“h,Œ Õˆ›±°‘®ÓlYyû¿§Þ³)!™‹(¹‚8#¨1fAÒÝ3ÄÊÜ­²?ýç‰\eÒé0)™3ÛÌ[Á6¦VÇú¶zAb‘¬‘ù-*4>]³G#y‚ñq:=îrœI—¢\-¥€$¬®Å¤@&AfтȷY-oYÈøòŒƒ0uY¨e+¤jBÁX‹Y¡ƒiMÿÇ]ÄpÜ_~HL‘EY™MCn:Óh.òEK~”ø“SÝæ\¹YÖ`'xØOŒoãZö¸Ý1€ñq’ѵÌK4xI1áV½sWE4¥4¥4¥4¥B]ÿG_íiJÅÄê&Îfÿ¥½¥*Ë¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥+ÿÕûù¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥*ïú:ÿkJV& ¨´,*.è²fª/þöö”«6”¦”¦”¦”¯%r72#Ër:eNÑq’Áfê5F?{:²k–?”µó“¡A~%|'|; ¡©¡t§Ž«Ûõ8såf°N€.¡²b=[U™P³êZm˜tZš¸ u´(½W2_ÒÂÓêá}md,y?"Äï³ÃiÆn+-2iT˜«rÍç»—qú™u[Ts¤#ÈqduŽêd*+¹.òÎ$AØ4°?0ØÍüHU`únw-:Ë*šÖÂ"Ã*6î·Zû\е|QM½’Ä:„UäEZÕD¹P³ 9sWA= Œ¨~2 °Ô—0¶%Í­ÁߦòëÔ`Ý®#Õ tXŸ4cœõÉMØá2åãõU¸Ä¦«C6“8d Å‘2KìšÊ™Cq5ʱ aM£8Rã)lÛ’ÛôŒ4ÃfL£^‡´$j :# +5ÙTC. è«~b¨ÉÙ“Ÿ2-´€…ÅÇÊ«zfJ¶FF,¤Å­œuËœ‘–gç ãb³¸yœkTĆʒC‘̻̗,ˆ™Tq¯«#« [åNÚ/£65Èk:ml2 ÈYD€ N@NæqåµuPöm¤Ý&Ýì%T)¹ZðÖ©-1gÈ™Ô ìºI?3‰ãù®?‡Á®r¢žòÜ9MÜ’äÏ: ˆØ:Ú0»—A)øûe¿Ó»üÓn­í›Ž5å[Ü,¶Q[ð¨cïßܳîuŽ_ÍÙŒ;8ØÔ1¸žôœ¯§¦Ž¢œ•*«¤‰%ö&XW²ó¡’"¦P̺ÆÑÍg€3¨kc#Œî‘¨ó&5ÌÁ†€§L蘓í7cÆu€tVÈIÓES$AjásΜÓ[EVùbu±®jž±LÕ¶ F¼}¶¡= yúz’|Ø ©?Òë‘ÖÌÙÛ¨ØÛdPÉŽC“ÀޤvE`\]0›e ÜY ô™›$Wbqüe m6Â5Á íõQ€¬ª}e ·y½üŽó)½‰ÉÙÇÉïq¸ÜO28–˜1a誥4¥ÞS€Ô:…:ÃFÁÒby€Íp˜=í4ñrÊ´`έ²eº£^¡®„Æ€ƒB+^Jæœú¢³!¸ƧÖ>lþIÚš“¡?…ËH(¶RŽc¾l$’nâƒL“$¢¼«×ª¡9Y'!TfdNQi7§Úвã Ì*¿¦duÚýO”úD¨2YñÇpf9.g…qÁYI—SuJ—º¬áUÊoK²šâ2Ôœffˆè‡åf2Ñšu8ôfÕIº¸%ÕR}šÚ¥Ü*„cºGŒ½q0*]È ïµÄ*‚`–ê`:V[`ãDÁç>Y¼Ã"Z×FÆ©²zŒæÏ*fÒ¹çÛ}Ü6ѺôˆË0n^n1HU3Ir…¢OG¼>:Øú` ºœvábäe¾ûI|’¼uçZâÂ_' L9{¬ PÆmºÒ·)c©8Ȳ¶ÔnOÈäç_»Á¯¯KÉpìá9ÒêŠaò"ç=ÆÑÅTtd²ä-úº{Š(ô¯F«&à9ðòǧfûú¸¦èºÌöÅ¢9›$ãW_ó2²4’O¨¤é%Q¤y}LA†²Ð|™’YÖ?Ï­F¾•^åOÕϤm¹FÒÆ’û—Mùˆè„³3i±ë•TE7ÝNÜ]dë=Ê/ð·£Óì2Úle¼kw…†:/¦æxtÉ'øAžŠÕYMÚrnHlÄäÖ¼lvšƒ:o)z6\Ùé’ì)Õ?[ô*Hy´ê­!uç›l]GLH]˜“Ž4“›º¯U|’I†°Zž[Y}H*¦k˜N6mÆ ±,Þ[‚¹ú·åƒp"V½-Çï-pkgB×®éo²¨Õ¶VBìæÙ&.§³¸Ò<ɸÛB(غ€ô‰‚¤åá<ñâ'ÆQK{κ뮦jA+ÎÁŽƒM9 ãì­¤›ìJŠ»xªx&ÿÚñÕj¢c]ë÷JšiJiJiJiJiJiJiJiJiJiJiJiJiJiJiJiJÿÖûsæÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºRžmßX÷õ™?K¥)æÝõY“ôºR¡.å:±ÕÞTT]ÑdÉ_ÿË¥*á‚íìµvɲuÊÙ7Uÿó.ükºýý)Ví)M)M)M)XŒÀ‡¢Ç„ÄxÒyÙÛlA·dãÆBˆˆªá™*þ2ªªø®ªÊma""8G/eX1 t림tÐ}€=•Ö#Š1¨,ã,ÂbTYÌCL A*4ÜWÄ:QÆ–ŲDÜQ5£;3$’ 3ÆZn3û×5ÜîiÜÖC…°l!bÑ„ FÕÕc…a¶ôöØõ¶%KgA} ¦^QËèsd‚ñ=&;“n™8(jFŠªH‹ð¦³±`,h»RIÓ–¤Ÿi'j®ÊÅ‚t'‰n¿Âþ6ªùñv.±Q«`qìsœí¬l¦,•lOuj\†‚/u\`É\Û =kÖbd £¢±q2@ OÃtÜWŃ2´È†0$ÖMŒ°h:f#P–اK­°zBͽ54¸ YXçe…Ñp vC2Zè«jvÕ®„›Ûïôô/NÝ{tø|ª~]Öévñ¤í¿=†ü‡*»õÅÚÛ´ðßn[Ÿ´ó©Ùu’ä$¹uÑeJÏB.²âF ¯0„H«Ðâ¶ CðJnž ª²†VR$6„p1;óÜý§Hb ê ÌUrqõ]$\f³Ç«±¸G!ÈxüZÈŒÁdåH&ãHØ« é‰ª¤„H»¡.´¼È3¨ÛÃPÚ ø€;ЍP&úŸ¯»OeHVâ5ÕÎIO‹ÔUdYoÚèp˜blþÊlßšØ t'€õ’íñj«Ò¥W@LÇ ×_n§_ÎŒ.!ޤÓOfƒOÊ»bbøÔ¯v;Y Ú’–uN1–Ê1O>äµeD[WÍzœéÛ­|KuÐiÁBÿˆ_Â-XtŽB¤ë3Å®þ-z¿Sk¿Qæk…Î'‹dR!ËÈ1ª«ÙUÌÊ_&œa™Í£R›hPÁ\Dð1ð-ÓR¦ÓpÐ鯰†cÑïRLˆá3ï‚'Ûa#cÞàøVQʯ%Ä)2*Ë—™“o]g_[žŽ ºûO6bá6-Š *¢ "| ª$ldx Ÿli<¨þf=“¬m:ÖÎ6ã» ,zæ~ŽN·ÄZeŒRÖETGdÖ5wd!æ¡:²èÄDã]'–§Oάà:ÚÚ‰˜;Nšþ¡ö Ë›c–Pí«ìh+gÀ¿q½ƒ&+.³5ÁÁKf*.’ @;š*ì"Ÿi÷tÈð!¯r!º§ïk½O?Ä4ŽZUM®â6m­/ÙâÌA«Û°–ÝÕÐQÀsxK£=n#âdŽ!*õ¢¯Vûêq“ˆBt6Ób}„9 ’IesæS ñi§ +c" ¢¢""lˆŸ&¢ªÕû¥M4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥4¥ÿ×ûa¥+\òVAuMWU‹&]þOduã ¶ÝÚN¾ã­ƒ¾†è-(¡  Hg¸¢¢©Z³Ž²‹'ršª–§Îœrøù49¥Le“e™%#¶S|•b>Ó Ì2êÈéF‘[BU+mçÙǰãˆÕZ{W“Wc›wû>¦ÿ͹×ÑÓø¾ÿ95ÑÚ`õò˜„fþà˜÷ó®N÷ºùlWÄõ*òó°Y÷LøÔ†_’ÈÆ#ѽ[·»ƒRè˱Z71΂u²‘àñ‚x‹!鸾ãªöø†W´˜ÑŽ€Ÿ(‡>'a¹­;¬Ç"à¡!F¬s Þ|NƒS\Ó;ÁÊѺ1̨ÖéÙNBj,cy¢”Ò¢8À³ÜëWtÜvÝ>4Ñ{l¬·$DÌ·]}švÐÔ?w…Æu LA"gM#ŸRéâ9Š­a|¡S”•ÓVS—_•XâõPäMlœ°v½”Ø•H„·VÅ Qá]k“´eÇÆ·ãžQ$pôÞ±Ãß+äÊ éåôÁ'ÌmV¶¦í]ªãI–bÙ1ÎkÉj²+BɺٌK(äJH"ê2d ª¢[!mð/ÜÖ90dÆ2Ä‚'Ùκ1÷²3"°,»€A+í6;Ôþ²­©¥)¥)¥)¥)¥)¥)¥)¥*ëóÜ_ïéJ¼à¿ìµwør¿Ò]Ò•nÒ”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò•ÿÐûØËªÅ¬&C”µäŽDfUª ‹"SLʘˆH£¼f Ýô‘SÑñM´¥y¦†õmàÓÔR³Û9—2ÕY!dÕP¨-Œ8²B7Á°EW,úp„["ô6R½1Šà¸¦Ëìc4íÖ¤»î«Ž¾é¢ ºù¸çJ õlŠª»x®”ª74ãÙì ür‘ë÷ñœÒ¦ò¾;ÑYybBW Õme½µ/DE4ÝW]¿Mʘ³’æÆë:îÀ´šó¾«…òöö ¸†Cl®¬w l9ÔW @Ëy¯X5­ô9Å ¬ØÖ’jÖGû’‰>Hª6Ÿ©!¯òEu¯hqöù®.(ã@Û•ºÏûâ²ï}^ë¶tÙZR$®°êÇÊͰcÂk_ÈâÜÔªr†Ù ŸaÌÑòØ$’"¡KR#Ÿšëîøl"[ªütvýÞ5=´VßBCˆñ™]´û+›¹ìrºwaW\Œ®£P¾”û"×Þ<7×âœ÷Îî34Iuû%É!;C&\0n%U¿eÆm#º*FÙµÛyUÎÚú-î›-_ºÄýšöäÁôT¬Þ…¿,óRbjO(ÇÙfÇß7tÆr@éòdTVÊ'fR€L”Rê7[x7Ìq ©ÁeE"ƒ‹E¾¶»•$$¼âµι¶ßz@^‚JA$RôEVú‡w63Õs–@eÐ ^µ=7Î’³ ¨ú_c—·Ïå·«%_S°ßLžœmÈñáé­xµô4Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò• uùî/÷ô¥^p_öZ»ü9_é.éJ·iJiJiJiJiJiJiJàá‹@nôƒb¤eð숛¯ÁªdqK6ÀI÷Tª–08Ö¿«åléŒ EeúKo“|Âa;F”%3Ê2oÈêi ŽØ6]]ä ‹`üuA]Ž6 iÛð›`ÿˆi¾út´Vz ü!­ŸÞ’#íS®Üf«u½Ýe f&[Iò‘åM‰^ÃçT™ò,pÙ±%N·\ÝSdßuTM×UQs™p,¤ÿ¾¤è à*WQJiJiJiJ‰²¼ª¨~¦-Œ´Œýä—"U7Òd®¼Ôg¥˜§H®Û3ÂܶO ¾DZ³… NÊ¥á~ÖmHR~Ð=çj즷®È**ïª$yº«¨ŒÎ¬•Ðm÷cÈq£èpDǨIbDTøÓZäÆØØ£hAƒUV $W»ªÜržÒþæO“©¦ŠìÛ)}çm†EMÃèlHËaE]…~âjƒR‹£ÚÄ(òEX ý9Uk%äŒC bºŸ)¤n±Ùðà×N±“µÌ“‡Z ;î¼O<Ù BD›zHˆ¨º‰Ú5–+üJ¡ÏئéÛÆŠ'_ ¹i·Ù½bcÜ«„eªÉó˜™.ÙÊ0ª´ª²ªœÜöà­’²ü;Ñßgx©ÝpHvéUÝ7Ðc$5•-¸ÙX!÷† FúÌFµBÑ3#mÁÌÌhEÂD† z™1˜-¶ëÀù‹3R;È$7ÜÅTY$RE#Té܉PQU(5 sþÀOö{Ì©­Âk+JSJSJUZƒ5Ær‰¶uôV~ze6ÿY3Ùy®ÞÒåÁ_IÖÁ òð_EWñwüRY”61úÕ\…ÔûãpEF´ïþÍ*Ó¨¥4¥Ad9%F-\õµãïD­ŒÓïËšÜie¨Ì9!ÓuXmÎØ 4[)lŠ[îd"²¢æ 70´ {Ia§´ì þŸ§Û§QQ>ñMET+÷JšiJiJ€°Ééªí«è¥¼úÛZ²r`ÂL’&Z‘3Žª°Ù 9)®¢%DU5؈eÄÂ'ÂCöØÞðåAž?Ùÿ­Oê)QwwU¸å=¥ýÌŸ'SMÙ¶Rú ÎÛ Š›‡ÐØ‘–Š» *ýÄÐjBñb{X…ÞH©NU&ŠŠˆ©ð/ŠiUDŠÄ9ŠæD”yZ'ZgvvA!ËÆ»«»~U¼È×¹%_š1q·l‘-áMžuÇRJ…†]ÊN-…í ,Xb¶‚Œ ”_×{(,C˜Ê!˜^ÃÎTäø®œH§ó,W\%˜Üdøe¤Œ&Þ•jëk!Q5IÄR¿Ÿl‚²•çn Í´ŽÔ†@?_¼‡‘zd6Û€‹¦TÏzè.R'@¸‚ ô?. ²×OLF YQœŽ|ø§§% 8Ÿ‰œ±ŒýE€/*庲cd-ùh­‡ï5Æ™y'—âò©5 JJ QO‡KްHR¡ÜJ«’ÇS`Hêì”Ñl©Ôˆ;sb ™ïXºåwÄ¿˜Å¤:½½hlPÝeƵ$$íÖE0À‡´¬Â0½Êä-É‹œ±ì-N©ìÖ>We—³>פodþ©q†é#9^¢ŸŒÂж¨]Å-Äg¸ “"‚®eYŽ£»!Ó@!íi¶h uU1ˆj̸¦&±äBëSÒ·¬ÍÚY”ûºXŽ!ĵppiò#ÔãªN;7‡›ã”¹ik9Ìž,¶4äÑKŽE%½“¶Ž—NýÉ»¹Èq˜ùfm ÔìÝJT¼²4ãReK0.bAÅÖ'¨–X ]c¤CŒ…êP ª‚¡³¼M©p„™XªgS°[+òŽ ©qʉQVzÈ›å;•— šqUÁ­Å2îã&LÌ€ ñeU [Ê"IPʬ›.†6ɪöêS£™´ã$uÖ˜&`DÝ$.Æ:¡N‹wÝû"¬ãùî,T‰qˆa,çuTÇMæ®§ÔKvìÖc& ‰0h*rÄ™}ZqÎߤwl­•€×ÊX(âV[¡´Ñý'iêé¹2´O,è2÷¡E•Ö ú¨£UÇyéÖÅ8Âòfúy÷ÐnXÇ(²éÄá ¶‰¸ì8Þ9=l@Sô•¸ à‡R¯Yªª$eÊÃÒo1ÆU´$–³%ánxÖØAåD€‹(¡Û>Ñdi•V<†’¡Y‚®š™}Ë<ÜÖ³X˼K¹ ¼Ž÷ÙËŽ3s3‡#ò©$[Äj‚áÉÓl´íH„…V„ÉÂ%êkÄDˆêÿ3#Èà­‡ÓPdnÌºÛ +t͵FkH+¶0»îŤÄFŠ" ‰3+]Ö#ÉX]ô{ixÖGËÖ9Ó—RrÈò±è³mªäÐL®Š‰éUX8*m°èˆ€¹ý 7'é…Â,Jº´|N[ ›Ì2%œ×Ó¶- í¶e tiÑ"x-) ×©› '†Kn•ŠÛùÌ ‹:Àª1>’åëÚòqÛpØ—˜VÑŸ}\“L¶E¦ˆÑYuÅÛñw?GT˨Až—Ôº¾'P&$˜,€`ê$kQ‰ô2#ÚÙ‡ ‚40t­KîÓÇWZf#e‡½ŠÑYGƒÙ[(ãXH˜ÒxŒñ™kp¢‘*JzIf*ïw¥;}Ç£n€]*·Mfä‘ zj&³¥ºD+6NÕ} Ænצ¹ ‘×F?š Ò­ÔU³>›7c³†H—2Ë8»¸äš61‰V·PhåI;í;2keo4ۀ̒Ú“j.¶€\ª¡F%Ž•Ä e·.gŒ#ã¹zµQü¹®—k½C:–¾©ÅDm&Q¡ž¦ºªÙ r[ö¼Vä\>ÞÎN Þ)& rV/-è#õdÛC›2PGy‚f¶4ñc¶â"´ë¯¶-€övùmîGÞmb$†OH!kæ¹9B×Ú ŸPc]”òÿíÊÒ2%–déÒEÓT²öWC¢ ËR—˜¾OÇ–2ógƒY™ûBÃS¿38•‡k0jгͦMDŒŠ‰ÇZĭ<{eÛ²âÊp3œˆê>à¶áƒ¤€Dºœ…=T6N4Ð. ãÅæßÒ>›É×¢D´NxUÆ7ê ‘ä’—3_º2K¤%ò6­73§äÒWÚqÄ&«bcYÑat·`¾8ôëiÑdQÆaÓb;ì6ÐqÍ[Œ»ƒNôt©²bB×]•F+[CehÿðÕ±ã“ç¶uÖº0¶3”P13‹”mE{”HeÈêÙ ëq!˜]¶Í÷‚ã̃‘°JjHxó9<¨íZ9cY âôÎãö1£øI0mIe¼ÐŠï°’¡*ˆŠ’KX;‚öÜ‚4ç±Mã«ü‡“#ÝFÁÓ!yÖqÁÃy¤Ãm17jìÞ•j{>ðKkÎ0` äÚs¿·jGCH…¬û~‡ÊޥбZ áç­¹½+ë^ ÀÆÙú’&ác¨X9mË'}J¼ž” %ª/%ãŽJ‰‘ä7X•co®>E¯¡Jduü§p¼Û7§Ë8èõ슆ˆª*.IŒ•´’.‘?â75Ëà¬ØE¾hív7 ¾F h‘£‘ûéjÚ¿¼Ø×(¸ÂÝÜŽ„Œ‹Þ º:·‹k# ­ÀañþA%c”¸‡KpûÖŽFqÓC`Š1 º©ÓÞè^¿Å×bfŒ‡"€¤åbc†&DB¿†-¾Ê ÄQÍÇÓyŸ‹41G?¼Ü­ð1$&­œ¿ƒå9NU†YQUùèU-46wØk¶£ÑN_E×—òž?_ÅÛñ”QxʘËûËÿ¥Ü'üYì jH´DþÕÿa­*÷»þE[€J¡Çq_¨þ»Ä° ÏªéV•%]ØÕKåÃ.%Hƒ&K¬¸ˆG, © :çFä]Û«æ`5Ä2–U|JË 6‚Òs±\qE2 è2p[Âqúk+­¶Œˆ€JãzmÐìÊ.2È {ºgX }E¤K;êÛ¶1¬bêU+# ÆI¸ñ•1èÑ+!‰¥ÛŒ†¤«Ü%UÚ2µÞÐÖ²«‘’ýYµ6¤,Ûé¥ÊªÍ—h7v‚$ ÷@0£§©mL±kÞÖfU×öôR¸þ¤òºRÞŽi÷KÆçBilå̈5¶Œ¶Ý{²°qôi²_I”ÿA«½cRç50Ì2,@œXœ,ª½ÃØ`/å©#ykQX¿•U$ýü¸ÙšT±¾lgåÕžÉé w†OÆ.þêqÞ=¬Š A´¡råe«{Mmc˳•!.“Wvu×UT•U We¯t£!„T6¯¢ø±¬LJ,ûÏSÛ3c‰ë&ãu³‡b9uI«ÌøK3ƒ/…&Rñ+´–x}U ) 1™5‚ó«<Õø³áÛV¸ãª÷+¤Éið%I1L‰À.Ñ•~qò ŒÉÜc*¢Õ#Ѝtô[ ™W³&Y’0”P DlÌKC2°‹L«ŒŠS8#Qùh­$ßçaoʳV› “’d5™S2rG¤b1«/É]JØàô8-ÝH@Ù»Ûn:†Í› !¿7b}%ÆÊq];—LˆÏ*ô·#^ß›m¥²d+¯rç¸sbà…Éim Qjô1KÉ[Q©8ß aù/-^1‹VÑIͲfìRΛz|q­†*ãæÂu–Ò–IlçQíéîVV·c ˜á«±K=À*ežæÔ…Q>À«õVÛÕ*ÔÒ”Ò”Ò”Ò”Ò”Ò•ÿÒûmæd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥)æd~çË_Ã¥*êLŽÇçÜøùkøt¥\ðeUÅëÕUUUÉJª¿ùKºR­ºRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšR¿ÿÓûa¥+Ìææ[kŽ.D‡™K,ë‘u ¸KžtO8±c³Wèô£ÆÞåÞ$å䪥[áãU”¹&>=[W7ÚO,“aÕF¯q[*;ƒu¤qˆû€¦¿ ¢ôŠø.”§;e¶Ø…."³&öF=Æ_WS{}Ó {òQß0]SšyéABê!ðÛîo®ï¦a\Ùʰ¸Xä ueÝ ïÃy¿WÎØ;bêÖ›NšuV:ÈØöªöÉCyÉM±ÎåÜ#‡_"£!«…\×'ÉïV²uLÇ%G`=Ä·×ùCDMÓ|ݰô² NÎV ûæòmé$ÃDŽUËÛ÷¤g`¹lkŽâÀ!äôL ‰Q A5?_ïÍ¥În_Ip?wÝ„¾¯S…5Ò)h©c»[.\w ÃEmÜM6>Ÿ‡Y?Ó2ƒˆ/WªawÿS¬ìF¢k£Õ𷪣Ò4•05Ÿ!a ˆ+æ˜ÓQYóž7^¹{9 ö3; ‡]¥læbºó«fá5 ˆÞNTuÇIºQI‰6.˜Ow³Ó`÷½‚'p.>` û$H‰“õ\iwª­ŽÔõ Ñå›G”¶¤éôßJçaÎ8Í5^M2þšæ†Ó“_Ó˜ÜO8«jH0·Z”äEW©:–B ô—_O†äú{älkŒ†õ PDù—V@"»j¶jêØñcÈù•±új†‰*ÆÕ+ie2Ý;ô‘ÕhÖ¶>1~¹-Kv…GkŽ:¯<ÃÕQÒ4¶‡ µU7„ºz€ÀÈHU\¹±zdÁÈñöÁ˜ ííóœªIVB 0×NPH ð*H5`ÖU½4¥4¥4¥4¥4¥4¥4¥B]~cû‹ýý)Wœý–®ÿWúKºR­ÚRšRšRšRšRšR +ò¬^Úæã«É*ì² wµíYŒ=2y:šóQÀÕÆºÓÄzÅ7ø´¥M>ïe‡žéêíNûoÒ›í¾²Ï—ÒÆÏh'ìVE¹€ækAcê¹0kŠŒ¨ݵalAÁ¦1\‘¿R2‹#º@(‹^Š©®Ê= Õ“Ǒԑ²Ç“L[ìr‚ÛN=º¤PFa¸`âT.ÿ"W_æ xÔÙs–6™Xë’­ ¥ )­Î…> <¥ý‚@cÉñZQ—g c©§:ÏT å-Ò¤¸$èT¦3”ܦ èš"|© ‹€FѨmB°ѢDÚLJÏ™faÞbÀ~™‡,,“ëÆ[“JR[xÑÞtØbE„„ˆ­Aiãl»NJ&ÄE RK5±Múz˜XüÍ@8¿˜•J†` "„¾euÔk¢˜-¤ôqõ<–Ë´RYŸ&aØE žtÈÞe—eB¬°²±XTGeÍ(ä$HáÕé<úƒiã¹x.ÔBìéìYo(¸ƒl‘0Ñå1­¦$ €ÕŒojަ‰h0YFì'=s¼Q$œ?­¤¸Ñ(‹/yò€–hÊ6¢¨±UëEèþOWW†ŽÁæÐCv2Cý…[Ûpª¯P$j§ûä*ý¥‡Û®•Lkž8ÖEEeäY×skn”Š©è¸Õóç"84˧4j¼œXb/·Õ+§°„]*çV髲”hm9Îu#­Žˆ ¥È¹Au•C"t& @Ô“®€ , ª‚A€@$ ™Ë¹*«ŸÇм”»–ùÉȳë£É—¡/ÌÍØ¬>ÚÜÈE‰Î®†ËYecŒäRdÆïO!PT“å=\x‹`’JC peIP#_>ÄFãľ«8‡>àyN"¹KN«vUEÅ9VÙ¸ðýrŠ1,0;!uà6Z8€â8b¢—£®Œø½2bH¼ ÐÉ+ôù€´Ý1ËM šªÉ$³MÅÞ[†Ì³r’ €XMžÇ’éÛ㬓é~Ö.=_6cµ3“U-„Ù8q¤Ç˜ÀHŒâ웋¬¡"*NÊ›ÒÃv1¤;*‚#­‚Nšt™nJ˜`aŒ‡‘ÄLÈ è'cÌAb¤0A0Y§(Úc³/ªi1ˆ·Võƒ‹ ks¬Ž¾4‡²{7ë@]y¸rÍ‘aYëRÜRßn”Ûu„Vx ¹v_îcI÷ƒúêAÜv²ï×lpûUaã¼±{.ýŒK)Ä«é²@ʳ ›ƒµ‚ÒÞ³!©Á„á©£dÙ²ÚŠ¯R)J•±…È%IÑX™ª2,¼È Ãf „\¦# l~`5 D}Ö,ºè †ÆÚ ÒÓ:ÀÙ¹NG¬fÖsÑcÅrÂ_˜ë¬´zSQºÚeõÝÏG¨PUvC6ÇsË("ãÏ‚«9ðÙu’4’$›$ÞöøÔFÉ8Žvõ„lv\â—XÛ$ò«±©x£JW‰Lµe1¼ÃªÑ <Òd¢H$».¯c[tF°gB  §©N»0y­ÂcyØU¿ –‰i0 ˜MNŸÞ‰¯²¸ÅfI%Û)¶Ö$;Qk½ËZ¾ÿœ€6OÄ}öÒ3…Ûïu§X¢‰ ­1°ÈÁѸ%ì‚@ø£mf Ó# lTî!aÎÊcbxNò#qQ®ûÉq9Td6Õ¶ÖváAS6éˆÑém­¡@>܇éè­·bЊ±IÆÁLÌ@µŽ|ÞžÉj«FÆÈXUOÞ`q5®QÇí8ʇ”,ŸKOu]oÕï@œsEÙ}™‡å†Tƒ7M¤m•W·lIwíï0ü¾cx0 ?é5`u@ ñiŽ^×/Ìc€‰ÔÛ±ð Ú[2*w=ñ}m=]ì»› lÍŒ†„(®]“šy ÉÙÑ„OÃÅ%¶ÑµüuMUq38A¹²9~o“«Ê.Ž'ÀÁ­Àb¤ÁÓ„‰ÓEX¹‰å uêY]jó•æt]t{;×fS_Ð"VWͶ›%Òs¢<*æ$ÉuDŒº^"ØQWX³…0|O° Éä‚L nD”\·o=£Ÿ»Û°ª¤þkãZÖ±Ùß¾ôLž¾µ|èu¶3#±_ ÈT›äD†[MÉ®’½K8°ùŽ'Nº¯k"V c*ÆD¨SbÅVªXÖ+[ì6Ä…ˆêt<,™«j£Ô‰Ô;æ¦ä¼D)ØÉ¼JZ¾f»ah=]m+R„0S¹1à&;) ˆ”ëšÖs·]ÅéwqŽdÿªâÑ¿Ž^³r䥎챨rÏT6YpÀ»$‚]*».®³“;p‚ Ý÷bõ&è…`ç ÝY«'”Lé£lDî A ƒ¨E@ÂçÜX pß´ýkÍO~ºº¦²%¥Ýœ§˜m:!@®3.¶ª]yµ2CëA@r M_š†<€)ÌŸÝõT´AŸ0[%ˆ ÔéÏžÓÔ´(‘6J¾\Æm¯¢ÕC2“]sUCi‹ÛFnD‚ž7Þtšÿ'm…6¶á÷ Ç6Bôú:|t8˜3!Ñ•ÙHßÈ¨å‰Ø° ìZÕ³ªš3…™Ìfëm´õ\ –*‹ˆË9ŒnMÌV˜‹!q¼}ì#“*K¬5 /åB'ZG-âó0êz ¯H¶k±H1‹Ú8\«íg` pÐjdˆ'ò¹tÑ”€§ï]ö ½òɧXÌ­­–r/„­p_¿=_´G,Zº«w‘–z;Òj¶4“i†ÕÁCyÁÅHP‰SU¸]ÄnNŠ¿‰Jñó c²´PM—Dø IÒaTu7¸°ÜЏGĶ•öäÅ’Ø»KD†Ûš! ª.è©ðêì¥IVFâ¡X0cZ§$åºÌg±Ž?‘_"tÌžTHÍ?=„£Š’ãØ¼.ÉF ¸Ã`¥¤U_øÇ ·6ê–€cáÑé’ Ò eöÍh¶OËKÎÚ¢FÛÆšžtÖ§oy? ÆòXÅÅ„¸ösN+]ö«l$@Œäç{1›bÄw!Ä'ÜØ[‚šª ¢õ&õÅù¬UwÛÂ@¸¨'BÖëhꂺu 8±dòžfß¼@Ô.‡¨‹z[^–ж7θ=Êä,YËs›Œ}"ÑfG˜|Ž=`p%ÉfÅØÍE{·³dè4á“]h'÷T½X†Q$BŒÎE¹UG™õ•A–æÒ¯é·«é¬ÀåÌIÙI@1¬°•Õ›å<#&H)Yc-©VnS3WeYaY9¹ÍÃ+fD9ñ˜}…( ¯ º† **½C½Šž–÷+oxbo¬ÄVAÃO}Ós¸i ‰j°ï:áqìU—Ü”íTÊÚ{ ru|)ö3,ŠßëFÚ­‰ÙH5^Nt*ª‘ô ª­.è»ÄxZö;"þ`RÍ  ™`*ù„ƒÂAüJÅ ñ4©€²H€@&¦ê¹.Ÿáü„lF-úœšŽì‡\m´·Ë€ë' òÉÑ»b$»ubªclƒÒ`M <Ä!Ètð´ÎÚLI…(’àkk2ûmb“á;ñ¼k"O,`qk¶+w䯕U]s ˜uÓåÊ“ØÍ¸K$xî>óe³M8›n ‰¦Pq¹F@Ú@ÔÌÂv Ä‚‚IMNƒ¤¨;øº÷™€Y:Uq®uÃåÞQUÖE»´ƒsCyxv1i.v2оÓa½ “Á%œdÐ^Zí«Ž¶+*²*4ð+’íCm¥» ;éÒÑW6…™’Åb ˆµ€AIÀÈ1ÿÔûa¥+Ä•<ŒUê)…ŒÍ¸˜Î)²£~ØÎ6àr‘!¹S-§:J ŽÊ„Š‹Ô$›x©[Ë•”æb—2p†°ÊJëi@ĉ”®†âX×¶ØEj¶™Jî"¸j]?ÉE%Ò•kϰn­>«öS&®È÷ìwûþAM{œo£¯«ñ¼vþj룴Ïèd/(Ëýñîå\ïkó8¬˜êVçä`Ñïˆð¯ÞLÁÇ‘°ÛLH­ gœg[›ØM¡Å}·Ä^Žj"ëd­¢*§Rxo¨í3ú“,M†`ñÐØtä`Õ»ÞÛæ»|˜n+zÄÇì†T•Òf´¦MÃrëñÞYº¸¶™’MÌ+ª•*ñ*fãH†õ“*è®Í>à¶²NõAt–ä"=ø»ðAd,ÍÞ5ðæz€ÐF…™“é}9[!¹[ –¢Û ²G§Ôuä$ËxBŠõ_\òÕ¯,½˜Èš¹uJ{É42ifÖ›²SµUdN:M4DçY¨¸ªh$‰ø»¶tìÓÇ.Fh¸<‚¡:ŠÆâBì@wåNÙþ î3(ØU °â Þ^i’¤'U“]+fÃá3‰A”ÖÆ°Æ*§ä®ÃR ¬>²5HLj¨^^DU÷d‹¥Ô¦®IÝSµÛÙz¹_ê2…$õ9$Ï"-¶8@žd×v¥ziŠÎ¶ÊcUÚ ×]³m+  zªïÆ|Çãoб1©‹2Îm£þZ:ÆÑÌuO³*ºÿaMC¸_ïã¶°ï;³Ü™éPº™cY I$ïÑôîÀvŠàG[– TLU–µ`m;ÌFÕ±uÇ^…4¥4¥4¥4¥4¥4¥4¥B]~cû‹ýý)Wœý–®ÿWúKºR­ÚRšRšRšRšRšR¼ûÇþíiÆœµÈœÏ§µü•æ>»jT´vrHL—åZFć¾ûbeÖgÓ¶Íôã¥+~¾×y‡™êéîVÛíÔ›o¶²Ï‹ÕÆÉ1p#íVFµäkBbÜÞ3&†@e’%}FÕKM¶1ûB‹[K.¡Ãa;ÄŒ¬‚’—lC·¥¿RoÝ7¬2GIrðFê2u%e=Z‹ksbH ²ÐÌC=fÇ ‚!RÖQa¯Ÿµ÷gfï ¥È/mql²Â,8·W™6æáÈõR8®×Í’ú„92â7 ɇ›3u¶Y%TV<–e9‚X9·¤úTuŒd „È È ¹æÆ¦€2€e€ÆÄ•X'V@Ì™»OQ\-¦ãÌü1#•žÇ¤Å¹¨§•BŽùIöïË Óu—F]MuE…|VQ›­˜øE¶°TŒ—I"W¥ÀêÔC2®®²ê ¹n‹`f¨NYw•#¥•‰mfÒ Ã©—ŸLÿ½ŒÇ¾g&r–Ej¹bý‹tKB}ë–ÛdÉ·³ÝW©Ý{Š;Û/æ+©2FRXé&J³H¶¤‚zêˆl@£î bu,qº¸>ß^¡ƒ_˽Û+²jn9‚oâ¶Ö888ÁKËñ8Ù$W£vãŠÉ‹D¦|¬‘(û÷ ˆ…ÆÝôTtÎÃ.|™bH˜‹Ä"Æ ¨ó´ÜŒ ´ÇL%q…•$‰›z·  ‰fV@aq­¯?=ž;fŽÚ50`6ø6õx¼ÜˆWI­r85ØM°JÜÀ€TQ´£à”î';dfÿ1NçÎCL’NŒ¢fK  ¸F±„ ±°òž@ªÈl; N´»÷u{‹AÇ'ÜWÙýWc4p‚Ú™»çdcRÛÓ <ÿKìÈîô8ÇXªý‰ô˜ß¸W;f%îêK¡å&܆ӥ¬Aˆ«©Œa À40zÊ0þëc5 :N“6ì{‡«)ø· ãG ¢±Œ¢=‹Vobt‘1è,‹jÒ”*ö{±éÙ^qã%OLÉ<2³–“)KuCõ‚Ñhm”GNåžçjöàcrÌ“$DÉ’£VæÛVÕX9|'?,¬»c“r*|ÊÇ"—Ž%ÃLPùJ‡«qÉË9¸e]*tõ"|œt]3x‡b›DŠe%zdg ëÔøý1ha7êÔ[D ‹¾ƒ†“$že¶1 @óÀk‚,±U‹Šr,{¥¤ÊÊ1\rV6sa@v| Pìc C³­#i×$«Í'PöWvÓ©®Ø7TÈâ$Ì+'ð3+¿˜2ž¯‰H\ ¶Ž‰ DÚLquÒí¸¥ªG5ºu"¶eÞy•bTYE obYÕÙØ^UV”XÎmƒSPY…&\Åo­@ôÞq}%BOCQ‘U˜ ÃÕñ¶2u»ÜN“;Ôc, †ƒ>ѤÈã;$;ˆÚ¨Ü5Â’8¢vC)ok…tÛÞ=ŽUH¡©šDšu‹e:ržAáÃf(î¤Ù/ONƒ'åÚyó6¨ê6 k™T–$‚ì4X‚µ'%óÀÎ×91Õ¨Uf@ h:ž…ƒ¯÷qb-V3Q++Y‘¨9 Ï$mZY-ß%šÚJ«}¤²üîëÕÑøƒÕèñ¯n¾–,m¨Ç…ðž €‹¸ÄNÚûk[È|κ™ ýÛZYHpM\p=2wÑQƒ›AUyÈ©Œ@®À‰ ÆâÈ׬F„4oN ¹›ˆKŸW%­€2j¶¦·<Ì&;ÏqÒÄ–0¢ñ쵑(ÆhEöþ¬•Z- ±Ùm”‘×è7Ò=""‹á¦L…ò>C»«/æey’I>HÔÉ™'žxñ„ĸÆËo!åðîµ.$›0âªÅ‹5Ìޱñg Ê É³õد4ídEŠ2–ŽC’ÚÊ!FÇu'ÂèŽÜ…gxƒj¨æYU’ñÂЙ2«ÖæFI«÷'ÔÓïdwŸº®×²n:™—¶‘b8•¸©‡Á™&[W‘Vr.A(e.cÇ£V²²#3Ú» eM”rd±1¡i¯.Ò ’ƒèéx¦>˜)ˆ"ãÄ¢GHôý7*Ë=Rø±†7 BÅÄÖÇ ¼€:/,DL«§Kn ®WØ1JmX°‹…ʤ±ΦUޕĨXf'®|®]kmùv¤ÉyM<Ù8N:û¿HhºéL–Îäaè 63Ò @ŒCybI%í ‹Ê1ï1=:Ƥ-Ǩñ2ÇkT…›™²¨8;ê<Æ[íGšòv’l¾¯ò]^aÜÞßsÌÝ?^í¿Okàôý c6b³÷,ÿŸÿ¡1ûÿ»®¹zÌøÏë'ûkàaƲW,®ÉÀ2,^ŽŸK«‡yUpYMŠïåÔ‘¹~d PI;n²Û‹ÜD&Öp¿¦àÞoDE÷£c¸z]ÐEåª{‚r–?¼Î¿º]ËžS(ţĪŋ3ãùù ¶fÄwMšÞJÃÓ³²DmĬzL(ò‚6Ñtg˜ª x(†ÄD1…­0v\‰”x•)røHD·HÑÉ3b´³yH€Ê}Œ:O(Rx’ë¤VµÊ<:ŽæÕÜ6Æâ™‹Ñ\›g!„5ód¬”h²æŠ³1lG¿Ü&ÍTÔãª(yzky;^1MÚ¡ …󶌮<“6›…£UøL¬É]T [eAVP- ©'kŮȩ‚®©ÚǨ"Lj+¬¤$Œäj†+M±ì¼ ««0Q[dF‹¶Œ§Ow]2zŽ]·2N§rdo'm ™>k¾ž?»­ñãÖTw™ÅNÐcðmqF¦U}_J~C e_&{£)Ç‘þ—M—#¯P‰µÚTDÓ36`KÁvk˜Á‰´©·[ ®N²U·,¤­Zøalª‹íÀr† †žž¤&-nºÎª÷·ªÇ*ñôÍãY1ɱ{Öí¥FX—ðÌ2vô§Æb"Æè)®‚6ëB÷ ¬Í&H^©ë½YÚâÀ þcñ@IrT–çôVÛ`EÓl Ú C" ÷|ÂÈ`ÿÕûaÐÿ¨ÿÇÒiJt?ê?ƱôšRúñ¬}&”§Cþ£ükI¥)Ðÿ¨ÿÇÒiJt?ê?ƱôšRúñ¬}&”§Cþ£ükI¥)Ðÿ¨ÿÇÒiJt?ê?ƱôšRúñ¬}&”§Cþ£ükI¥)Ðÿ¨ÿÇÒiJt?ê?ƱôšRúñ¬}&”§Cþ£ükI¥)Ðÿ¨ÿÇÒiJ„ºû ù‹Ö±ôšR¯8.þËWn›/\­Ót_ÿ2ïÆ›§ÞÒ•nÒ”Ò”Ò”Ò”Ò”Ò•_•bö×7í^IWec½¯h(¢Ìaé{ÉÔךŽ®5Öž#Ö)¿Å¥*i÷{,<÷OWhúwÛ~”ßmõ–|¾–6x›A?`š²-Ì3Z çUÈØáƒ\T`Èå@ží« b 0AŠäú‘”YÒ@ÜZôUMvQè^¬˜Æ<ޤˆE–<šbß`+”ÚqíÕ"€Ê3 äwøñºÿ0kƦ˜°É°äÊÇ\•hpm(aMnt)õå/ì{ÎOŠÐÊŒ»8`ëM9Ш.|z _)n•%Á'B¥1œ¦å0W@<ÑàEI\’6Cj†&ÒbV|Ë3óËôÌ9adŸ^2ܘòR’أƎó¦Ã,$$Ej OeÚrQ4")øèªY­ˆ:oÓÔÀšÇæjÅüÀ̪T3hÙ%ó+®£]Ám'£©ä¶X5 š’Ìù3À (dó¦Fó,»(Êe…Ŋ¢;.i@!"G¯IçÔOËÁv¢Ï`ßO`¸ÂËyEÄd‰†)m1 Lì¬c{Tu4H›A‚Ê7a9ëâ‰$áýl… -ƉDYx“Ï”³FP‘µEЍçZ/Gòzº¼4v·6‚û±’ì*ÞØÓ…Uz#P-?ß!Wí,>Ýtªc\ñƲ*+/"λ›[t¤UOEƯŸ9Á¦]9 ÓUäâÃ}¾©]=„"éW:·M]”£CiÎt ©lt@`•.EÊ ¬¨š¡0b¤tIfT  V“”ÐD—Âzͤ{/7Æœ#faµ¥¨¶ø"·º°࢒)’Žý+´!ÊC(,G ¥Tϰ²é¾æ €C%ãU$ ù¦=Æ7ÚH, ÒK›8Ñ&ÒÁ׎ýYò2Ø®°zc*[b9.cqŠ<@•!¢n9ÈpõOȩ鈤[­À0än_PvºÂÏ8‘* /* èX`ã6¾›Ú§vò&`M[+³\fÚ\5ö^bU¡Ú„»/YRÉHsÓsDí*_u'Ž kÅCÿ D}ÃMèÂÑ'ƒ[üPZ>Åo =•L»æfáY3¦úU"ª'¦ÐÓ¿CCÙIc§«÷Œ9n—”ÝÎBž¦â¬0ŒúÎÖºlqÀ4ÃIøêH­¢‘Š ‘ uˆè†îÝ3ðpÆ8‹Y—mõ´iO20sngÄwHöu(möø½âJ2“Gǽå1Õ¶wY<)ø¥`][WQUß?5è® 3,çÅ:† vŒÅyTØkt_z›Æ¥—ùœàù.m³k % ¯Ui“+²!H]5,ðIU 7yt´’xªÈ›í—3qÝTûÊé—;ØãÑbÜÈb¦ÎLV¥NX‰*Kb)°o½ç˜VÙW qD-ª5r62JÝpv#ÓiNßyn¨ ô´üDì÷Œ.‡^“ð9ë‹lâN™ ös­@Š2œl©m›yÝä¤"ƒ†.H’Ü’ŒÈ›íº¢Ó‹Š‚²55;k> ,¤FêUXÜ%@V’-h­ÂëN†}"ÂLìAeÐÁ!”¨!–{)¹ŸȲ¼K¢‹k5œ¶ªæÅ‹Wj¬â„Wif5 ø²ÂD6ü»¨é8&/“d =N†ú.2Kº¨Þr]v‚N§N–ƒ5¡IX¬A‘dÀ ‚­°2 3®ò–Æ^X3¶ÏB.ysO!5`¤¯*³|’Ø£ %ydïy~÷{·éôtøëÂÖ~ >ÅÑŠýëIƒlÁTÅÙ Þ?Y´÷Aa´I€5"{qþJÃrlVfqUe q8L”§/gÀ›\Ñ…’²XY¬0¯2­š*:Ò*î(]BH—ʧêÙ»LÛŽ©'Ê"ZAY &\ö ÇØ9ÉØGůOÅE·ç¬aŠx÷T¬H‘,§ÕÜ…ì;Jë^ƒJýÖò¡Ë®Y¢&Ó@©´uUÁñV鈳ªða ï?š˜cÛsãQ¬p¬èNºGA2'q¡$H#u"¦äs—D²¼ª—‘»F9Æ]œ§+¬µNˆ¶KrÆHÒV’èÆ­Ÿ h'èë%7Dk;só.0cxfu v}JÈV"ÅX2`i'VC 8”€Ü±Pr&1”RÞÞÒ›±±§^uUM” ^f;r•µ¯™™JFË `ˆÒõ¡ ‡Véª÷.paõH‘iaü$‚9ƒ*DG*¶4/“ÓÈð™Ø†ò²þò’²™µv'ï!‰d1¶,ë¬ñßj©1ÛJׯ³t[‘È“¨ÒËÈ€Äüqm§ä+`ú˜öþ.®¶íÈÈØÁ’¬Ã”…EÉ3°bþYëé:L‰~Ð`Ï=& ífo*ƒ,cZÙõ“ˆ^ds1jé³Ö¾Ò<õm„h]Š]Z…büváË6Iu"t–ÜøúÖáÊyv¸©MGXõ&½k6sc;Ÿ²bmƒD›I»FÓ¥¢o%ù?i?è^ç³ù6#ý'n÷ÖÿV•~iz{_Xþ'WGã'W£lK§ÿ3Ô÷z~§Û>—ºî1¬¿MߺûcýµN®æ ÅÛz‡-°JX8fE”\b´·12'¤Ú¬šµ°uúÇjc´ ê×ý¹n!!lB„£‰Én+ÛÌqz€ G”d†o‡¦z¢.„Ý–nÈnkuUe N‡©•4Ï[®åze·Á†ä>Öâ8¾Uäþ¯ö–¦§îw{>m€{·Ü鮞½·éMþâk«¹Ãèåls6’'ÙX£\&¨Ls†6q¨ìlÜjâUŠ× @¯¶› ƒvÒED?98`6ÄU‘&14=òWA³q ³Ä‡-¶ñPy Ê@'~†lÄ| Ê‘ >Óâ`p]܉TX€A«6oÉX³ü®t¸­ÉiùA­ŸfMFŠ‚²%È øò ˆìõq÷PZ Ó¨ÓtÔc&Aw$ c -å,‘0cÊ`TÛ0O€Õ‚¨êcà ðEGÈåì 6Q#rÊqÞÅuØÏ 5oDóMA[2ˆ3šŠQJBÄNð°Ž«¤" ªd>TVc¡ò«XÄ ÚBR›câ"9uE¤•I0¡Ktƒv•b§Íq|‚E\j[†¬Ýº¥k!­XâfV>B,ÉSAéuKÐBT"غQz m[+ºñr-t{fÆÚv×q9^:wêº4#ÉmÀò+zÈ0uÛC-ò>å•%@ÞYds-«éâ/;"Llz›Dʶ^'²‡B–é¾að y<Hyh·Í£iÐÑ£¦Þ ï`X{ЉmWYe˜wù“‘ŒG+ynû^Õ{ôÒ˜ª²~0·lò1^s$µ™„’^†VQ·Ü-ÐwÙu¢ãfr‘Ô'}5 yY:\Rža¤DÃt‰ÜIÛ_)‚ÚOHûþH¦ÐMOÖgØÁQ7[p2žÈß°‹S|]7jLÛž.6M¡3åÜm[>ê !ìŒB‹šâ8 È8t`ëÿQtók¶ Ÿ–a´†³ø¡š=…Qˆo)A7,ôfY³køÒJ®‘>5ìÉ‘äPu÷Ùu“,ˆÚŒÃN» É"t `J¥áºú+FÈ9? þë"Çøæv¯1tÆZܰ]tóxÕcå˜y?b<ƒ“Wû4•-D'ÁÎ’žÿb¾Rëà¸Ù>J"ŠMv”ˆQ·]>œ˜[EÄÞs: D….D鲩=AzJ†€r uì<ªwãn‚Hö`°P ¢rG*`ì[A¢ 9Sí¬-Ÿ¥º¶Ây$˜¦ÃrʼnÔjÕcš¢Ë;èÙ**/I*.Ê‹¥+º»*¦³š•­È6DÙ<Õm¤ •’h¶g2Á˜Šªn¢Š‰ºoðéJ±iJiJiJiJiJiJiJiJiJiJiJiJiJiJ„ºüÇ÷ûúR¯8/û-]þ¯ô—t¥[´¥4¥4¥4¥4¥4¥y÷ýÚ8Ó9k‘9ŸOkù+Ì}vÔ©hì6<ä™/Ê´‰}öÄˬϧm›èÇJVý}®ó3ÕÓÝ­·Û©6ßmeŸ«’bàGÚ"¬kÈքŸ!¼fM €Ë$Júª–›lcö…¶–]C†Âw‰Y%/؇oK~¤ßºoXdŽ’åàÔdêxÚí‘ÁÓÏ5ck@: ù‡V$ó ¸ñ¤p #x­oAî‘,\ŠS}AEË"ã12†!ãkëeÇlݰr]›XÌvd¹âêƒïºjJ^ŸüX¸<-—zBFÇùqä Jº|JÊzµÖæÄe¡˜†(zÌ AB¥¬¢Ã_?kîÎÍÞAK^ÚâÙe„Xp+n¯2l6ÍÑê¤:q]¯›%õreÄnA“6f(ël²J¨¬y,Êr°soIõ¨:ëÉA! sÍŒ>?L eˉ*°N¬˜3vž¢¸[MÇ™øbG+=I‹sQO*…ò“ì)ß—:¦ë.Œº›:ë‹ ù¬¢)7![1ð6‹m`©.’$D¯KÔ ¨† e]]d,ÔrÝÀ:ÌP ²ï*GK+!ÚÍ¥:†/S/‹p™ÿ{|ÎLå,ŠÕrÅûè–„ûÖ!-¶É“ogº<¯R;º÷v¶_ÌWRd Œ¤±ÒL•f6‘l'IõÕØGÝ@ÄêXãup|$( ¾½B5¿—{¶WdÔÜsßÅm¬p,pq‚——âq²H¯FíÇ“$‰LùY"Q÷î8 »è¨é†\ù2Ä ‘1ˆ,EŒAQçi¹iŽ˜ Jã 5*I6õnA .̬ €ÂãW.VÃm-p\w Ä+¦œ[¦hòjï«b¥Ã!B°q§J8öÅ6‰¨­l@T¹c¸îdʼn'ÊêQÖd½ÎŽÊ­­ ͦµÆ= %TLF—,66 Z¶¦EFe*- æ±®x]Ù6чÉǰÉUô™0µË&C±±©.I€&¬–Æ/Ws¶÷q—ú·Ú=Íl\»–ÉÔ=_Z6üØX3÷AÇ­j¤C@¯¤«ŽÕóg&Lãk‡‡Põ2Csi`Ö]ØŸ^c¹´|ŽfjÍ¥9äÅŽãÍÖgÛLžÁ›)n_œtV\iA¥Øbê-Ék„”HmMŠ€íÒ‘o>«@¼Ì1…]«lÍyÓ@XÛÖŠã9õ—!ÿ/+dAÈ»–±ø”dfm’ ³¸ý0ú`êØF<Ô)B@àÍŒÛÄ4Mm¾9ãû Ñvþ=ÅNk“ËÉë¡" ³RC.ÈYOÜ¡E¦”|wêßà ]Ô¥ðuݲê LÁÒ8ìâs>A³Û#ÅqÌò!ˆÐΧ…&Û„n^ŠÓ4Ë4Ò%5”Ö_I“SçQꜪÉld7<Û=‰L* 4ñ«­þ2œsÝhØÕñœ.'&4q±a‰Jo†àïv„ê ‚ºê¹,È3(¢1e&HA*ÂEÀ”Cºž˜\jÓû©e¸W#Ý+QìòÚ,„(ýjÈR `ŒU^êu«‰[ùÏž¿Å^ŸK§Ö%ÑÛR§!>>¯©öG«ã6ð9“LekUGðÀþÊ¥dÜ2î­˜Ps!¾Ã—dMͬv\m]ä1¯‰>+3┈ÄÛ滢¯VûeŠô… `‰ÒÆøäŽs’õûŽŠz«rÒI’$“ à ŒòÁ#R¤€Tà Î1àÙœe#*ü’©ÊúÊ‚mD*/«ã|’Å«6Ø‚Ó3H" GY@Qq ¿G`_KZŒ½%Lž„Y'YÆZÖ'Œ«ÂT0´tVL²g@K äÀ¡”’Hö7ÔÜŽ&³4™sísAˆL½L¨ñ„­Þj\ hÖ'ý#æz<¯lQÞÏ–îw?åû“×#áŽÆøF@‡îú·Ü[^£ù¹@òˆa¹PkR@$¨‹ì¿÷Ž2¥Hû§òñ©ÜB4Õ„° mñqŒ šE\èø°c°²è‚ã²ëQ0KeöÜBD>xKâG}-uwy=|§$ \4¥0ÁаÒåo+ %I\ cÐÏ 3ªÈ`L© €@0v­[î®0h2J@É(iƒ#¸—rP±¬dië"93<|Ûg½Ò;Ÿ˜UWˆº…WÒëKbËé”ãaÓÙêãÍq•4V•% ËNä|m/©&I$8’Ä’A"…Hæø§ò<§%ÄåÇ™q„ ìÂ7oe±_7òyá8ÙB¸šì¶€ÉÓo¼ÄúAÄ}ÂSo.ØÉ•üØÕGîc|N¼À!p*³K\X2ªCœŠM‹ú‡x¸ãȯ© Ë>RÖÚWÌ §éñDªµÍ¬ŠrÈÆdyJÂ7бъøðzzº‹¯«±×¾É¶ûl»n¸åÅêal_x¶¿ˆú¢¥Z÷YÚÇá¾µª¨øB¿fžÏ/a)šœF£ÏE«8­«X•‹³Y>ÉͽO¶à¶^žÈH¦žÐ=™3^÷Ƨ/¨}¶¢9 IÀ1¬I¬ ŠdAà2\ó+vº £á:pwÚl<›—Ãcìy‹95’abpaäDv¯Î …ÿq×dƒ]Âûm0j=(ñº¨ªXvÿ“ˆ Ò&š)Uˆ,7gèY7&æ)qRŽàz¹oýâÚên ƒi>U%˜ÄHÑU‚­`±â»™¹u…ƒy|v0‹»ú̪ç*µ;´©¢Â1gæÅ¶ãA`²ˆfª†‚ð¡¢°7§lëeöðP0k·º=G+ëlÈRŸóN’7´Îœ‰‡~‘  nžîØÆ?]šcMSRçÍ]]Ϳ˛¥gÌ[V_ËzD˜Ô ´iõqH´Ù;fãG‰Ç}%ÑN!¼a@ 9Às¸a*z­tÑÞòYµkƒ);¬iÂ…–4†øE\ø¿ä &¦³Éó,{'  ª‹WHÝ^=.¢`¤@ɽsbÛ»€x 4ߥãº'£®¬¹½VgaÔÆtÛŒé©Þ#]Ó÷=¤°®¿’Û³ä2IÙGç׫¯ÎöwðÛ§¯eêèLñµ‰~ã)öÙ?túsátp“£›‹Ÿ¾Ž¾ÏP>ë½þ‹Ï<ÿ5Å^Y ]ujTZÕÉ®»¥+Ö~ÀZ- °S¢²Äè>mºB.‡GRªæ «—ôx©BN‡‚¼,a„V‰–Û| ‘ð°1!„jDtL¢’K&M³Æâã…9«E»óNGÊÙÊÖ3qP;„ÅÒùQRdêPøoÑ·òõ¦\»0Y·ÔÓI>£;F°4¾5ÐÄé:sáÅn/H×Ï/M‘¦5Þ͸O× „ðy˜­Uõ¥­dÊIÙœ‡jñÛ"=&ž™¹9_VN@uèÊ,«Î˜£fHço¬ú:–@ñ& A´ ‰‰ ¨»ë+1£p.¬ãÍBoÊù":âK;[WÊÎã_!E…¶Ñ”ð@d6Yå”\±úg²ó‚õA5 éßm»'#š< ¾y /Åé^¢ôº•5‚bP‘+t‘Á±›å´æÎnýñ¡°N¬æðãBípÈÊÍÌG Û¤ªpºD?#{¼.w•Ð]Ç¿¨¯©Ç=ž:ZË"´—VíŠNU§–sÙnMlA‰¸êf ¹° §F¬™ýfÕ¯,NÌC(R…¾æî£Hv,n©È㇢º-…#uØ…`¿|«5ÝÔôÛ®¬V w.å<Ì`½Š¿s*D\²àbÎf:ÛK:ÄX®–ˆ¬XJe·•’x]^…"V‰Å¦ÇWi2G·3„&©³’ª§À¥IN¼¹·w¬µ®z@wuÒñÈRÛVæ¶Ìy VR{g±´Ï“î´FH‚Dà*ªí¥+‡5:ô—8ÏfÞ7—åÑ«r¤VÆD^Ãï 7I6ݹ6 cü´ô?•®ÿ¦(9˜Jcw_ıød°ñ¼¿¬±º¨02eÆø›„ð¸…CÌ9]ØWnZÖ1ÁØn[—ᘼZé|°$W %aÌxÛŠË¥ cµâcÝ6ÀH„}%]“hÂÙ{ÜØð;MÍž¢7'_4@0³V̿Ӱå ÆÚyfL\D̪]ÌÙæ’jìbÐÛå8SSë¬ãF•¾D{‡Æ9´ôb”ó›D'±#Þ’*Bl¨½]·c‡¹É†Ë‚¾CŒÉè¥Áâ$Aƒ:™ÃÞ}G¸ìñfõ-gL>¨ ¾b…H-&nYaâdü¿ÉØÃ¼¶./9ž&J©’:+¦¶V1íDLXì 6Ñ wW¸…áù1ÛÆ{^ÏeÂMßšå7Zbï/»þ*¿qÞwXß2‚Ÿ—Ô¤?G˜Ièóéø5ÝšóN}E#—&TÅÇÊ£‹ž P….4£“9«qè+íÊl RÜO¶Iñ(|z¯gØãÊ0]3•ò&„@°èv3â'Þ6ªw_Ţ7¦ X“& ™¸1eл¡á†ºW# æÜ» g” ÞÁª½¸ÂÃú–]tYqc¸æ@DØ ñÕùŽ’0Cº¨+‰è Š®úaìq÷ „¯¨ì¦`è‚é¤NšÇ3Wî~©“´[ äHó9Æ’LëкOO ãqÌùíÉwRh‘7JÇñ̆mÅ}‹sÞ^h¡Xš>.G]÷Qx‘P…vM•ÉØbÉ›£•ar¹ óÚ èAÞEPýO:bÌÌ&ÌeÕ¬|k B¯© ‰ÝJß S5îRåI©¦å|tmªëî1fqùuùT'Ø%‰rù2ë /KyEÀÙ6tI7Mö-”oôþÏ\ݹ‚Ce(À «x:§5Ÿ ˆ™Ëê½ÿqƒp$0zª@2½EJêL˜4:Û¯IÉÙíG&ÀÄ2Æ*)¨¤ØÄª®²~ªÑ€ºrD"q]®žÛ’¢6瘼³Þ’‡t‹Xáí0æÂ]$´9¶å”D\RÀ®ì»鮎ã¿ÏÛ÷ %¡ E¸«FF{¤+ÁXæá, ô~¼š÷i¥)¥)¥)¥*ëóÜ_ïéJ¼à¿ìµwør¿Ò]Ò•nÒ”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò”Ò•‘®ÐZÿ×üRÒ•¤å[Üå7RpÜÑnd"Êòãv-0š!v€WÑzaŠ¢ƒ_"¡»èô‹ŠU}¬“Ù~P‹Æ­_ÈÌk­`˔̈́ž‚™Y.4®Å}æÀàq I¥ ²ô © :¯PÁþƒÿPßüTÒ••¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥+ÿÐûa¥+PÛáy Îkcg>=dÜ2Ö®º–6äÇE%¿^ü×9Mù2é—·mKbQN­Ñ4¥_èñlkGÆê±ï3²Ê ÈŒÅTþwh«o‹tÒ•Ûc´¹M[ô×ðƺB‰$¤ ÔÛ­8Ú‰¶à!! øŠ¢êøò67¦2éö±+<Ø“267¬ Óíp@"[‰Åø4X9 yÒ•›YcHÆG&Ö\»9rÚFÁ§%Íy÷úÐ=w!DUUÖ¯Ýä{u‹Lˆ@;Ì(|w¬qvX±’@$‘i¸—éû½eºu2»:VîƒVšê…ê7fÀÈŠõã³,'J™$¡tyarkòJƒ= ÐΑñÙ7¨™‚„•€̘ 3©#_p¬GÒûIñ%]mif$¯¸’À±¹¬ûn2Â/=°[JO5íóPÙËÊd‡› Ó=G·Ðž¯§}gºÉŒ S›]´c©>>ý+¡ûLNÎÌ5u±·ÕuÓüM¨×]ö®\]‚[µ–³cEæÎ|’å#楚ú»d‹âŠ·ÑÒŸ›éßù[êq÷yqÙiM‹.ƒFo1ñŸ«6ú~¾Wùˆµ:¢‚ßH uøÖLþ9­ʤXе5ÌÚ,XY?yÇLd³ c"ŸKdßZ¨“h$‹±oÔˆ©Eî2(P¦,bÂ81‰3¿gÚkFíq3e•°Î ¦¦Ò6âj4¸“r›!¡“Lüø9YÇs#~m„ùsf,EŽ.Î~AÉQk¡:¹Ò>;'¤[ëóÙC£‚BJÀw6x’5÷ Ä}7GH$8µ¥™‰]­¸’Àj`"IšÍ¸ãL"ýÜ•ûzD–î_$ „ÖDï±”ã t:=µl—t&úK…uL}Ö\vÚbÖ¸x4Dý‚#j×/g‡,Þ³(qŸÀg§üG]ükà÷q²(ôò Ú+íÌäXØHmÉm0±Â[Ì= ÚzB6ªçœøú·ñÕþ{5¥dg€ §H1¨X²ÿöÜÃI»1›fÒÒzÊÏIi#HØFÉ×%wSJSJSJSJT%׿?¸¿ßÒ•yÁÙjïð夻¥*Ý¥)¥)¥)¥+ótÒ”Ý4¥7M)]2]íGê*îÛfI¶È¾«áº*æÖÎOO·%'ìÃû²¯n`9šó>Î9FBX«^Űõ»°© #—v?X´¬m»öÉÈlU²Â²hhɺ¡úCø;»œeÀ2À6cÙ-$ùd)`z¹uª($è Ýà®BûÍs ^‘n·–•’ù¡lj¡N§¨”¢Ë¸È^Œ9q–D[ ‹P„õA ÑÞlœeÑäÜ E›#GËq)ÖšÛWŒ-ŸË¡‡.º—×E*вE­…×k¢•qxêÆQ ié:„Sh}âæå•Ù(šÅoñû¬rªx¶.}e»›c£v5×TðfÆ$B/òRiÐ/òyjhDÝ2‚0Þ¬ Œ›u,¦7aÈù‘¡\cm*J›©q£D¨'Š‘ÔÈÙC) …'«›³pÀ±)yms43¡awc}CV eWgc-’¿"0_ÙÅêm´p\iÕ$$žèãÛ%Â2÷(ÖÒÊøá´“8šG›²°&¨ŒÐ«©{‚µVEiù‹i™"nU#]‹ÃÜÑiÊ2§5aǶøŒ5„Õ%”¨7Œ°ôgI[}ëjj¦RFÄ%ÑÉ-íÔ¨ò¢"”%TÝ£)lùfÁSuȱ)¹b/X3€º«Aö¼J‹ƒ°Í0ÛZ U÷–H¹"QßááNîOgu ¥ÉïG»›½Õh k¬àW‰µ%E{r ¿2:l¨ã­ª‡V=½Ùñ‚±{2(YÙ²PK’  bP®­c=ºí˜¦ë0€ZʬÌÉ®£Cz‚Rìkq¶vG1æñÙùqV¼‚—«JtÍd.FÅLõÓRR̪Áõm•h…a¡ Ÿlk›æ[Ó_M\·(q’9L¨Êtmkua(†àK‚‘ÇG.‚x]ôuÍÑTé~óöñ«+LxÅçoòhÕ¸•$y–Ê«h²¥ öRRYÉŽëI À0f4€êVÿ+ÒDAÑ—Lr¬àïãôúϬ‚  ÝMÓ~HÒ.a…F®K\»ì£`Û²‘Ò¦à½ñ¹£7°¹Ÿ:^6þ9‹,$âUHqØVìL¹»‘_(_‰cP. N#jžšƒ°iÇIZ«ްÏj«ÛŒÖ¼”èB³C’ HyR\.‘¡»0{:d S¥•Im×Lª¿x¬‰ö«m.øÚ-.;&.7kad«)øõ¹Q cxwnCDµÖ -ô›nºJ­ 8ô úšlªc_åcõ´¼½'^—Ð\½BÐÌ@Aq6Ç ßÓ}ùy—ï¬ÈF…8tÞòÙ-Î7|Ï äQ"İÇÛZܤX~,·Á¤óŽ;Œ¶ò:ظŽW³=:z‰ @zµ½pZtQ£F—éaSv4¶9"æ²1°Èðº©RTÌ5ÖÁ!ƒ,;1 𤪇½b¼¶YŽ7Æùô ÃO’Û;CoYW=‹xFä‚q¨Ò#Ìm¦Ü^d¡ÖÙ1 `Ó"È©½êcÁ‘YÏP,¬°Ž²·I°©àiê~[6Å ÎóU-!‚²0õ°eU–!ëdÞƒøì%²išëWÑ¿<Ì7ŠS,>MX²óŒ°N–ý$Mªx¨Áª´N›~žÚÔîci1ìáú·Ç3½|ݹ÷“—îñÇ)Ź}‹t¹…3lW³%Æd÷æƒÈ‰õ“lÕÖ]ñ#uÞëEtvÕj+`ð p…­‹Lbù¨æ<ƒ²a*Åklc 4Ðå/šŒØ´È ).ëÔá'Qª—J"•ô¼“ÈBÿ7oþ*iJËÝ4¥7M)MÓJStÒ”Ý4¥7M)MÓJStÒ”Ý4¥7M)MÓJStÒ”Ý4¥7M)MÓJStÒ”Ý4¥7M)MÓJStÒ”Ý4¥7M)_ÿÑûa¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥)¥*ëóÜ_ïéJ¼à¿ìµwør¿Ò]Ò•nÒ”Ò”Ò”Ò•Á~Ò•ù¥)¥+wô)Ÿú‡?⮹;ÿü|Ÿ…¿a­p1}£öׇ8{þ¡ãûyÿüy^Ïwüõö÷÷3W8þV_f/û¸ê!Ïþšsßýøÿb»^7wÿ‰þŽ_ý¾JôqåËþá©K?ö{…ìVÿÇéµé}_ÿ;¾öŸû]õxKÿÂìÿé7ÿZ÷ÿe°û¸áoþg©ú–ù¿Oý£×ªûúÏýÜ5¼}Þÿ¤ð÷ýÃã¿óÁ©î¿ó»ßnÛÜÖÏ›ýNëþ<5ªsoþÞâÿúO+ÿĶ×?iüþÓÿÓvßñöU¯güãÿërÿùU²£õ ÿ¼Ö¿þ3 S?þ._ú]ÇýÜuž?/oÿOýÌÕGÄúƒîÙÿèX_ÿ)æ:õÿ#¹üY¿üZ¯ÿãbÿÞ¬,Oý•þçó®¼ßÿã°Ó?ÿÎÇ[dÿÈÍÿS/þåªj·ý•Çÿì· ñ™ôþ©çÏÿW¹ÿÚÖ8v_Ãÿ÷*£IýÝsþÅñ§ÿ­ÿæ3û¿ìwõŸÔÿ‘ÿÍÉÿºí+ЋÿYGÿ¾Ãÿáǯ/ýŸâîüÊÓ>Ý×ÿëþÞÖ·öQÿW³þp?ñ]55CÒ”Ò•µ+¿êø?æíÄM)YšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšRšR¿ÿÙwp-fastest-cache/templates/update_success.php000064400000004145151435171370015436 0ustar00
WP Fastest Cache Premium has been updated. Please push finish button
wp-fastest-cache/templates/timeout.php000064400000057225151435171370014121 0ustar00 wp-fastest-cache/templates/toolbar_settings.php000064400000007310151435171370016003 0ustar00

" />

get_names(); foreach ($wpfc_role_names as $key => $value){ if($key == "administrator"){ continue; } $wpfc_toolbar_element_id = "wpfc_toolbar_".$key; ?>
wp-fastest-cache/templates/buttons.html000064400000004760151435171370014302 0ustar00
wp-fastest-cache/templates/updatepost.php000064400000011623151435171370014613 0ustar00

options->wpFastestCacheUpdatePost_type)){ if($this->options->wpFastestCacheUpdatePost_type == "post"){ $wpFastestCacheUpdatePost_type_post = 'checked="checked"'; }else if($this->options->wpFastestCacheUpdatePost_type == "all"){ $wpFastestCacheUpdatePost_type_all = 'checked="checked"'; } }else{ $wpFastestCacheUpdatePost_type_post = 'checked="checked"'; } ?>



wp-fastest-cache/templates/update_now.php000064400000043534151435171370014576 0ustar00
  • First, you need to click on the Premium tab
  • Click Update button
wp-fastest-cache/templates/nginx_gzip.php000064400000005732151435171370014603 0ustar00

How to Enable Gzip?

Nginx is used in the server so you need to enable the Gzip manually. Please take a look at the following tutorial.

wp-fastest-cache/templates/lazy_load.php000064400000007640151435171370014405 0ustar00
options->wpFastestCacheLazyLoad_type)){ if($this->options->wpFastestCacheLazyLoad_type == "exceptcontent"){ $wpFastestCacheLazyLoad_type_exceptcontent = 'checked="checked"'; }else if($this->options->wpFastestCacheLazyLoad_type == "all"){ $wpFastestCacheLazyLoad_type_all = 'checked="checked"'; } }else{ $wpFastestCacheLazyLoad_type_exceptcontent = 'checked="checked"'; } ?>

Choose Images

Please choose which images are loaded via Lazy Load.

wp-fastest-cache/templates/preload.php000064400000054706151435171370014062 0ustar00

"/>
wp-fastest-cache/templates/update_success.html000064400000004145151435171370015613 0ustar00
WP Fastest Cache Premium has been updated. Please push finish button
wp-fastest-cache/templates/download.html000064400000004540151435171370014407 0ustar00

Manually Activation

If you have already paid, you can download the premium version via following button. You need to activate the premium plugin manually. Please don't forget read the following article.

Note: Please read How to Activate the Premium Version Manually

wp-fastest-cache/templates/cache_path.php000064400000015402151435171370014501 0ustar00
Cache Path Customization
"cache", "optimizedpath" => "wpfc-minified" ); } ?>

Cache Folder

Hi!, You can specify a custom location for the cache path via this part. Please choose a folder and continue...

Note: Please read How to Integrate StackPath into WP Fastest Cache

wp-fastest-cache/templates/disable_wp_cron.php000064400000005144151435171370015556 0ustar00

Disabled Cron

The Cron has been disabled entirely by setting DISABLE_WP_CRON to true.

wp-fastest-cache/templates/exclude.php000064400000053610151435171370014056 0ustar00 wp-fastest-cache/templates/cdn/other.php000064400000112553151435171370014314 0ustar00
CDN Settings

Let's Get Started

Hi! If you don't have a MaxCDN account, you can create one. If you already have, please continue...

Note: Please read How to Integrate MaxCDN into WP Fastest Cache

wp-fastest-cache/templates/cdn/exclude_sources.php000064400000003735151435171370016370 0ustar00

Exclude Sources

If you want some of the sources NOT to be served via CDN, you can specify the sources. If a source url contains any keyword below, it is NOT served via CDN.

wp-fastest-cache/templates/cdn/file_types.php000064400000002101151435171370015321 0ustar00
$value) { ?>
wp-fastest-cache/templates/cdn/cloudflare.php000064400000115450151435171370015312 0ustar00
Cloudflare Settings

Let's Get Started

Hi! If you don't have a MaxCDN account, you can create one. If you already have, please continue...

Note: Please read How to Integrate MaxCDN into WP Fastest Cache

wp-fastest-cache/templates/cdn/specify_sources.php000064400000006515151435171370016400 0ustar00

Specify Sources

If you want some of the sources instead of all the sources to be served via CDN, you can specify the sources. If a source url contains any keyword below, it is served via CDN.

wp-fastest-cache/templates/cdn/maxcdn.php000064400000010145151435171370014437 0ustar00
BunnyCDN Settings

Let's Get Started

Hi! If you don't have a BunnyCDN account, you can create one. If you already have, please continue...

"/>
wp-fastest-cache/templates/permission_error.html000064400000004347151435171370016206 0ustar00
The cache has NOT been deleted because of permissions problem please Read More
wp-fastest-cache/templates/cloudflare_warning.html000064400000005665151435171370016456 0ustar00

You are using Cloudflare so you need to enable Cloudflare Integration via CDN tab. Please take a look at the following tutorial.

wp-fastest-cache/templates/newpost.php000064400000011672151435171370014126 0ustar00

options->wpFastestCacheNewPost_type)){ if($this->options->wpFastestCacheNewPost_type == "all"){ $wpFastestCacheNewPost_type_all = 'checked="checked"'; }else if($this->options->wpFastestCacheNewPost_type == "homepage"){ $wpFastestCacheNewPost_type_homepage = 'checked="checked"'; }else{ $wpFastestCacheNewPost_type_all = 'checked="checked"'; } }else{ $wpFastestCacheNewPost_type_all = 'checked="checked"'; } ?>




wp-fastest-cache/templates/clearing_specific_pages.php000064400000020600151435171370017226 0ustar00
Clearing Specific Pages Settings

Enter a Url

Please enter a url which you want cleared from cache whenever a post is created or updated.

Note: Please read this article to learn about this feature.

wp-fastest-cache/templates/sample_img_list.html000064400000014462151435171370015754 0ustar00

Show Images

Succeed

30.45

%

  • All
    7196
  • Pending
    5002
  • Errors
    3
  • Optimized Images
    2191
  • Total Reduction
    78400.897
  • Credit: 9910

    More
wp-fastest-cache/templates/update_error.html000064400000004507151435171370015276 0ustar00

Manually Update

You need to download the file and update the plugin manually.

Note: Please read How to Update the Premium Version Manually

wp-fastest-cache/templates/varnish.php000064400000044516151435171370014104 0ustar00
Varnish Cache Settings

Varnish Server

Specify the IP address of your varnish instance. If you do not know the ip address, you can ask your hosting provider on what to set here.

Note: Please read this article to learn about this feature.

wp-fastest-cache/templates/htaccess.html000064400000004236151435171370014377 0ustar00

.htaccess is not writeable

1. Copy the rules from the textarea below

2. Remove everything from .htaccess

3. Paste the rules

wp-fastest-cache/readme.txt000064400000070364151435171370011721 0ustar00=== WP Fastest Cache === Contributors: emrevona Donate link: https://profiles.wordpress.org/emrevona/ Tags: cache, Optimize, performance, PageSpeed, core web vitals Requires at least: 5.3 Tested up to: 6.9 Stable tag: 1.4.6 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html The simplest and fastest WP Cache system == Description ==

Official Website

You can find more information on our website (wpfastestcache.com) Welcome to the page of the WP Fastest Cache plugin, a WordPress cache plugin developed to speed up WordPress sites.

In today's world where every second counts, optimizing your website's performance is very important. Meet WP Fastest Cache, your caching plugin that you can use to speed up WordPress websites.

Optimize the performance of your website with WP Fastest Cache. Improve Google PageSpeed, Core Web Vitals, GTmetrix and Pingdom score with our wp cache plugin.

In addition, page speed is a ranking factor in Google's search algorithm. Therefore, using cache plugins helps improve your SEO ranking. Our WordPress optimization plugin not only accelerates your site but also boosts SEO rankings.

Features

1. Mod_Rewrite which is the fastest method is used in this plugin 2. All cache files are deleted when a post or page is published 3. Admin can delete all cached files from the options page 4. Admin can delete minified css and js files from the options page 5. Block cache for specific page or post with Short Code 6. Cache Timeout - All cached files are deleted at the determinated time 7. Cache Timeout for specific pages 8. Enable/Disable cache option for mobile devices 9. Enable/Disable cache option for logged-in users 10. SSL support 11. CDN support - Effortlessly enhance website speed and performance with seamless CDN integration, supporting Bunny CDN, Cloudflare, and various other leading CDN providers. CDN integration modifies the URLs of static resources, enabling these assets to be served from your CDN service provider 12. Cloudflare support - Cloudflare integration triggers the clearing of the cache on Cloudflare through API when a cache purge is initiated. As a result, WP Fastest Cache and Cloudflare operate seamlessly in tandem 13. Preload Cache - Create the cache of all the site automatically 14. Exclude pages and user-agents 15. WP-CLI cache clearing 16. Proxy Cache - Varnish Cache Integration to clear proxy cached content automatically when the cache created by WP Fastest Cache is cleared

Performance Optimization

WP Fastest Cache is not only a wp cache plugin but also a speed optimization wordpress cache plugin. There are many features such as Minify Html, Minify Css, Enable Gzip Compression, Leverage Browser Caching, Add Expires Headers, Combine CSS, Combine JS, Disable Emoji. 1. Page Caching - Page caching feature generates and store static HTML files from your dynamic WordPress blog to reduce initial server response time, and improving page load time. Page cache and caching play a critical role in improving website speed and overall web performance. By storing frequently accessed data, effective caching reduces server workload and significantly improves cache performance, allowing pages to be delivered faster to users. This optimization directly lowers load time and enhances page speed, resulting in a smoother user experience and better SEO. 2. Minify Html - Using an HTML minifier is an effective way to reduce HTML size and optimize HTML by removing unnecessary spaces, comments, and line breaks. A smaller HTML file helps reduce page size, which directly improves page speed and leads to a faster website experience for users. By focusing on web performance optimization, optimized HTML allows browsers to load and render pages more efficiently, helping to improve website speed, lower bandwidth usage, and deliver better overall performance across all devices 3. Minify Css - CSS minify techniques play a crucial role in modern web development by reducing unnecessary characters through a reliable css minifier. With effective css compression, developers can compress CSS files and apply proper css minification to optimize CSS for production environments. This approach helps reduce CSS file size, which directly contributes to improve website speed and overall css performance optimization. As part of a broader page speed optimization strategy, these practices significantly enhance website performance optimization and lead to better website loading performance, especially on mobile and low-bandwidth connections 4. Enable Gzip Compression - Reduce the size of files sent from your server to increase the speed to which they are transferred to the browser 5. Leverage browser caching - Browser cache plays a critical role in how efficiently a web browser cache stores static resources like images, stylesheets, and scripts, directly impacting page load speed. By allowing returning visitors to load files from their local browser cache instead of downloading them again, websites can significantly reduce server requests and improve website speed. Properly configured browser caching not only creates a faster and smoother user experience but also helps lower bandwidth usage and enhance overall site performance 6. Combine CSS - Reduce number of HTTP round-trips by combining multiple CSS resources into one 7. Combine JS - Combining JavaScript files is a core technique in javascript optimization and js optimization, especially when the goal is to reduce requests and improve page load speed. By combine js assets or combine javascript files into a single bundle, developers can streamline how scripts are delivered to the browser. Whether you call it js combine or javascript combine, the idea is the same: fewer HTTP requests mean faster performance. Similarly, approaches that merge js or merge javascript—also known as js merge or javascript merge—help eliminate overhead caused by loading multiple separate files. When done correctly, combining and merging scripts leads to cleaner delivery, better caching, and noticeably faster websites 8. Disable Emoji - You can remove the emoji inline css and wp-emoji-release.min.js

Premium Performance Optimization

The free version is enough to speed up your site but in the premium version there are extra features such as Mobile Cache, Widget Cache, Minify HTML Plus, Minify CSS Plus, Minify JS, Combine JS Plus, Defer Javascript, Optimize Images, Convert WebP, Database Cleanup, Google Fonts Async, Lazy Load and Delay JS for super fast load times. 1. Mobile Cache 2. Widget Cache 3. Minify HTML Plus 4. Minify CSS Plus 5. Minify Javascript - Minify JS is a core step in web performance optimization because js minify techniques remove unnecessary characters, comments, and whitespace, making files smaller and faster to load. Through proper javascript minification, developers can compress JavaScript assets and significantly reduce transfer size, which directly supports effective js optimization and overall javascript optimization strategies. When combined with caching and code splitting, minified scripts help improve website speed, lower bandwidth usage, and enhance user experience. As a result, page speed optimization becomes easier to achieve, leading to faster render times and better search engine rankings. 6. Combine JS Plus 7. Defer Javascript - Eliminate render-blocking JavaScript resources. Consider delivering critical JS inline and deferring all non-critical JS 8. Optimize Images - Optimized images load faster and consume less cellular data. Looking for an easy image compressor? Our tool lets you compress images instantly, including Compress JPEG and Compress PNG options. Enjoy fast image compression to reduce image size without losing quality. Perfect for quick image optimization with a smart image optimizer designed for all your needs. 9. Convert WebP - Serve images in next-gen formats. Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption. A fast and reliable WebP converter helps you convert to WebP in seconds. Whether you need a WebP convert tool, a JPG to WEBP Converter, PNG to WEBP Converter, or a simple image to WebP option, you can easily optimize your images. Quickly handle JPG to WEBP, PNG to WEBP, jpg convert to webp, and png convert to webp tasks to reduce file size and improve web performance. 10. Database Cleanup - To keep your system running smoothly, it’s important to clean database structures regularly and ensure you clean DB records that are no longer needed. A database cleaner is essential for effective database cleaning and long-term database optimization. By removing unused entries and organizing data efficiently, you can significantly improve database performance and speed up database operations. Modern db cleaner tools automate the entire db cleaning process, helping developers maintain fast, reliable, and scalable systems. The Database Cleanup feature clears out all of the garbage datas such as post revisions, trashed posts & pages, comments from trash & spam, trackbacks and pingbacks, transient options, orphaned post meta, comment meta, user meta, term meta, and term relationship etc. 11. Google Fonts Async 12. Lazy Load - Lazy loading technique improve page speed and overall website loading time by loading content only when it is needed. Using lazy load images, lazy loading images, lazy load videos, and lazy load iframe helps reduce initial load size, enhances web performance, and delivers a smoother user experience. When implemented correctly, these methods make it easier to optimize website performance, lower bandwidth usage, and ensure faster, more efficient page delivery for both users and search engines. 12. Delay JS - The Delay JavaScript feature helps reduce the 'Reduce unused JavaScript' warning in the Google PageSpeed Insights tool

Information

It is very inconvenient to use multiple caching plugins at the same time. That's why you need to disable plugins such as LiteSpeed Cache, WP-Optimize, W3 Total Cache, WP Super Cache, SiteGround Optimizer, Breeze while using WP Fastest Cache. WP Fastest Cache is compatible with most popular plugins such as Contact Form 7, Yoast SEO, Elementor Website Builder, Classic Editor, Akismet Spam Protection, WooCommerce, Contact Form by WPForms, Really Simple SSL, All-in-One WP Migration, Yoast Duplicate Post, Wordfence Security – Firewall & Malware Scan, WordPress Importer, UpdraftPlus WordPress Backup Plugin, MonsterInsights, All in One SEO, WP Mail SMTP by WPForms.

Supported Languages

Although there are over 7000 languages spoken in the world today, we feel very lucky to support 30 languages for now. However, localizing or adapting a plugin to another language or culture is time consuming and a demanding task. That's where the amazing Translation Contributors team of WordPress comes into play. These selfless people spent their precious time without expecting anything in return so that other people can use the add-ons more easily. We sincerely thank all of them. Chinese Simplified (China), Chinese Traditional (Taiwan), Czech, Dutch (Belgium), Dutch (Netherlands), English (South Africa), English (UK), Finnish, French (France), Galician, German (Germany), Hungarian, Indonesian, Italian, Japanese, Korean (Korea), Persian, Russian, Slovak (Slovakia), Slovenian, Spanish (Argentina), Spanish (Chile), Spanish (Colombia), Spanish (Ecuador), Spanish (Mexico), Spanish (Spain), Spanish (Venezuela), Swedish, Turkish, Ukrainian == Installation == 1. Upload `wp-fastest-cache` to the `/wp-content/plugins/` directory 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Permission of .htacces must 644 4. Enable this plugin on option page == Screenshots == 1. Performance Comparison 2. Other Performance Comparison 3. Without Cache 4. With Cache 5. Main Settings Page 6. Preload 7. New Post 8. Update Cache 9. Delete Cache 10. All cached files are deleted at the determinated time 11. Block caching for post and pages (TinyMCE) 12. Clean cached files via admin toolbar easily 13. Exclude Page 14. CDN 15. Enter CDN Information 16. File Types 17. Specify Sources 18. Database Cleanup == Changelog == = 1.4.6 = * [Improvement] Elementor element cache and CSS Print Method detection logic [Details] = 1.4.5 = * Sanitized the cache file path by trimming whitespace * [Improvement] Elementor element cache and CSS Print Method detection logic [Details] = 1.4.4 = * Updated caching behavior to serve URLs with Google Ads Click & Conversion Parameters query strings (e.g., /?gbraid) from the cache, improving performance = 1.4.3 = * Tested and confirmed full compatibility with WordPress 6.9 to ensure smooth and reliable plugin performance = 1.4.2 = * [Improvement] Updated the function modifying for url() paths in CSS * [Improvement] Enhanced the <pre> tag replacement logic for more accurate matching and reliable content updates = 1.4.1 = * Added display of orphaned post meta, comment meta, user meta, term meta, and term relationship counts * Added nonce verification and capability checks to the wpfc_db_fix AJAX action to prevent unauthorized database cleanup requests * Added a validation to ensure Elementor’s CSS Print Method is set to “Internal Embedding,†displaying an error with a help link if misconfigured [Details] = 1.4.0 = * Fixed: support both old (elementor_experiment-e_element_cache) and new (elementor_element_cache_ttl) Elementor cache options for compatibility = 1.3.9 = * [Improvement] Replaced manual <script> output in print_my_inline_script() with wp_print_inline_script_tag() for better compatibility and cleaner code * Fixed: RewriteCond syntax to correctly detect HTTPS connections = 1.3.8 = * Added a condition to exclude <script type="module"> tags from js combining * Fixed: Issue where the cache was not being cleared when a page was deleted * Fixed: PHP fatal error caused by an undefined function current_datetime() in cache.php on line 1130 * Added support for fetching and processing multiple pages of Cloudflare zones to ensure all potential matches are considered = 1.3.7 = * [Improvement] Serve cached content via .htaccess rules instead of PHP when URLs include the fbclid query string * [FEATURE] Added support for Spanish (Chile) and Ukrainian languages * to update translation files * to fix PHP Fatal error: Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, array given in cdn.php:383 * [Improvement] Added specific handling for BunnyCDN 403 errors = 1.3.6 = * Prevented unnecessary cache deletion for pending comments marked as spam or moved to trash * Updated caching behavior to serve URLs with Google Merchant Center query strings (e.g., /?srsltid) from the cache, improving performance = 1.3.5 = * Updated cache creation time display to follow WordPress date and time format settings * Removed the 'Static CSS File Generation' warning when using the Divi theme. = 1.3.4 = * to fix PHP Fatal error: Class "VarnishWPFC" not found in preload.php * to fix Undefined property: stdClass::$total in preload.php on line 753 = 1.3.3 = * [Improvement] Toolbar style adjusted to align with WordPress standard for better consistency and user experience * to change the cache path for the Polylang-Pro plugin * [Improvement] Modified the toolbar menu of WP Fastest Cache plugin to improve usability and navigation * [FEATURE] Added a filter that allows users to easily remove the WP Fastest Cache menu from the admin toolbar [Details] = 1.3.2 = * [Improvement] Added a new action to handle the addition of keyword items in the Preload Wizard * Corrected typos in the Cloudflare CDN integration wizard and in the DB tab * [FEATURE] Added a filter to define the token for preload functionality [Details] = 1.3.1 = * [FEATURE] Added a filter that allows users to easily remove the cache creation comment from the footer [Details] * [Improvement] Added a warning notification to alert users if the "Element Caching" option in the Elementor plugin is not inactive [Details] * Refactored `remove_url_parameters()` for improved efficiency * Fix issue: Logic to determine the $number variable based on the WPFC_PRELOAD_NUMBER constant for preload when a sitemap is used = 1.3.0 = * Prevent caching of 403 Forbidden error pages * Fix issue: Exclude JS files with the "data-no-minify" attribute from the combining process * Fixed PHP Notice: Undefined index: HTTP_HOST in wpFastestCache.php on line 489 = 1.2.9 = * Refactored 'Clear Cache via URL' feature * Added feature to clear post cache triggered via URL [Details] = 1.2.8 = * refactoring for CSS minification feature * refactoring for Cloudflare Integration * to update translation files = 1.2.7 = * to fix the issue of backslashes being removed in the <pre> tag after minifying HTML = 1.2.6 = * refactoring for getABSPATH() * to prevent clearing cache after deleting coupon which was created by YITH WooCommerce Coupon Email System Premium * to check the REDIRECT_QUERY_STRING for the gtranslate plugin = 1.2.5 = * to fix the creation of cache for URLs that end with .xml * to use the native WordPress function current_time() instead of the date() function * refactoring the purge_cache() function of Varnish Cache = 1.2.4 = * refactoring for getABSPATH() * to fix PHP Deprecated: Creation of dynamic property CssUtilities::$url is deprecated in css-utilities.php on line 348 * to fix PHP Deprecated: Creation of dynamic property CssUtilities::$url_for_fix is deprecated in css-utilities.php on line 412 * to remove duplicate extensions in the <FilesMatch> directive for the browser caching feature = 1.2.3 = * Farewell, StackPath, and a warm welcome to BunnyCDN * to update translation files * to exclude script element from minification when data-no-minify attribute is set * [FEATURE] to add Slovenian language * refactroning of specificDeleteCache() = 1.2.2 = * Security Enhancements * to update translation files = 1.2.1 = * refactroning of the condition that was added for Divi theme * [FEATURE] Add a hook system for creating a post cache by id [Details] * to fix the issue of obtaining the latest version of the sitemap after a restart * to check if the intl extension is available for Cloudflare integration * to fix Warning: Undefined property: stdClass::$zone_id in cdn.php on line 227 = 1.2.0 = * to make the Preload feature to be compatible with Sitemap Index * to hide the premium tab for the premium users * to show warning if the Static CSS File Generation option of Divi theme is enabled * to update translation files * to fix PHP Warning: Undefined array key "sitemaps" in preload.php on line 62 * to change the cache path for the Polylang-Pro plugin * to check if the buffer has only one line (no line breaks) * refactoring of checkHtml() * to check that Cookie Notice & Compliance for GDPR / CCPA is active or not = 1.1.9 = * to add gear button for the preload feature * to remove image urls for sitemap preload * to fix PHP Deprecated: Required parameter in preload.php on line 576 * [FEATURE] Moving the menu item under the settings menu [Details] * to fix Warning: Undefined array key "action" in wpFastestCache.php on line 378 and 395 = 1.1.8 = * [FEATURE] to add Sitemap option for the preload feature [Details] * to update translation files * to fix PHP Warning: Attempt to read property "term_taxonomy_id" on bool in wpFastestCache.php on line 1638 = 1.1.7 = * to change the cache path for the Polylang plugin * [FEATURE] to add Korean (Korea) language * to update translation files * refactoring of is_amp() * to replace empty char which exist in the admin cookie with %20 for RewriteCond = 1.1.6 = * to update translation files * to fix problem that the first js source is not able to be excluded * refactoring of set_cache_file_path() * refactoring of Buffer Callback Filter [Details] = 1.1.5 = * to replace wp_remote_get() with wp_safe_remote_get() in the check_url() function * to update translation files * to fix PHP Warning: Undefined array key "roles" in wpFastestCache.php on line 962 * to remove multiple slashes from url * to fix PHP Warning: Attempt to read property “wpFastestCacheLanguage†on array in admin.php on line 23 = 1.1.4 = * to check trailing slash for query string cache * refactoring process of clearing homepage cache by cache timeout = 1.1.3 = * to change translation system [Details] * refactoring of delete_author_page_cache() * to add Czech, Dutch (Belgium), Galician, Hungarian, Indonesian, Japanese, Persian, Spanish (Colombia), Spanish (Ecuador), Spanish (Ecuador), Spanish (Venezuela), Spanish (Argentina), Spanish (Mexico) translations * to enable the toolbar settings wizard for the Multisite installation [Details] * to fix low level vulnerability = 1.1.2 = * to clear cache of next/prev posts after updating or publishing a post * to fix E_WARNING: file_get_contents(): No such file or directory in admin.php on line 377 * [FEATURE] Added ability to disable hook system [Details] * to fix PHP Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in preload.php on line 546 * to fix Notice: Constant WPFC_CACHE_QUERYSTRING already defined = 1.1.1 = * [FEATURE] Varnish Cache Integration [Details] * to fix E_WARNING: unlink(): No such file or directory in wpFastestCache.php on line 1530 = 1.1.0 = * to show cache if the url contains a parameter of Yandex Click Identifier * [FEATURE] Excluding Yandex Click Identifier [Details] * [FEATURE] Adding "Regular Expression" option for the Exclude Pages feature [Details] = 1.0.9 = * to improve the style of exclude feature wizard * to fix hiding the toolbar when logged in * to fix PHP Notice: Undefined offset: -1 in js-utilities.php on line 67 * to fix PHP Fatal error: Uncaught Error: Non-static method cannot be called statically in clearing-specific-pages.php on line 58 = 1.0.8 = * to stop showing the "DONOTCACHEPAGE is defined as TRUE" comment in the footer for the ajax requests * [FEATURE] Clearing Specific Pages [Details] * to fix the site url on the exclude page * to fix PHP Notice: Function WP_User_Query::query was called incorrectly. User queries should not be run before the plugins_loaded hook = 1.0.7 = * [FEATURE] Clearing Specific Pages (BETA) [Details] * to add last-modified header when cache is served via php = 1.0.6 = * to serve sources via cdn for excluded pages if cdn is enabled * to fix PHP Notice: Undefined offset: -1 in js-utilities.php on line 48 = 1.0.5 = * to fix E_NOTICE: Undefined variable: path in wpFastestCache.php on line 2142 * to add excluding feature for Buffer Callback Filter [Details] = 1.0.4 = * to add avif extensions for cdn * to add WPFC_SERVE_ONLY_VIA_CACHE [Details] = 1.0.3 = * Photon will no longer be supported [Details] * to exclude category url for preload if any error occurs = 1.0.2 = * to add WP-CLI command for clearing cache of a post [Details] * to fix Warning scandir() at wpFastestCache.php:302 * to fix Warning file_put_contents(/cache/wpfc-minified/index.html) at cache.php:1090 * to fix Warning unlink(wp-cache-config.php) admin.php:885 = 1.0.1 = * to clear only cache of post/page even if the "update post" option is disabled = 1.0.0 = * to define the save_settings() function of single preload feature as static function EARLIER VERSIONS For the changelog of earlier versions, please refer to [the changelog on wpfastestcache.com] == Frequently Asked Questions == = How do I know my blog is being cached? = You need to refresh a page twice. If a page is cached, at the bottom of the page there is a text like "<!-- WP Fastest Cache file was created in 0.330816984177 seconds, on 08-01-14 9:01:35 -->". = Does it work with Nginx? = Yes, it works with Nginx properly. Since Nginx doesn’t use an .htaccess file, you need to enable the Gzip compression and Browser Caching features manually. You can follow these tutorials: How to Enable Leverage Browser Caching on Nginx and How to Enable Gzip on Nginx = Does it work with IIS (Windows Server) ? = Yes, it works with IIS properly. = Is this plugin compatible with Multisite? = Yes, it is compatible with Multisite. = Is this plugin compatible with Subdirectory Installation? = Yes, it is compatible with Subdirectory Installation. = Is this plugin compatible with Http Secure (https) ? = Yes, it is compatible with Http Secure (https). = Is this plugin compatible with Adsense? = Yes, it is compatible with Adsense 100%. = Is this plugin compatible with CloudFlare? = Yes, it is but you need to read the details. Click = Is this plugin compatible with qTranslate? = Yes, it is compatible with qTranslate 100%. = Is this plugin compatible with WP Hide & Security Enhancer? = Yes, it is compatible with WP Hide & Security Enhancer. = Is this plugin compatible with WP-PostViews? = Yes, it is compatible with WP-PostViews. The current post views appear on the admin panel. The visitors cannot see the current post views. The developer of WP-PostViews needs to fix this issue. = Is this plugin compatible with WooCommerce Themes? = Yes, it is compatible with WooCommerce Themes 100%. == Upgrade notice == ....wp-fastest-cache/index.html000064400000000022151435171370011700 0ustar00Silence is golden.wp-fastest-cache/css/index.html000064400000000022151435171370012470 0ustar00Silence is golden.wp-fastest-cache/css/flaticon.css000064400000004537151435171370013023 0ustar00@font-face { font-family: "Flaticon"; src: url("fonts/statics/flaticon.eot"); src: url("fonts/statics/flaticon.eot#iefix") format("embedded-opentype"), url("fonts/statics/flaticon.woff") format("woff"), url("fonts/statics/flaticon.ttf") format("truetype"), url("fonts/statics/flaticon.svg") format("svg"); font-weight: normal !important; font-style: normal !important; } [class^="flaticon-"]:before, [class*=" flaticon-"]:before, [class^="flaticon-"]:after, [class*=" flaticon-"]:after { font-family: Flaticon; font-size: 40px !important; font-style: normal !important; color: #ff8900 !important; }.flaticon-css4:before { content: "\e000"; } .flaticon-desktop1:before { content: "\e001"; } .flaticon-js:before { content: "\e002"; } .flaticon-smart:before { content: "\e003"; } @font-face { font-family: "Flaticon"; src: url("fonts/db/flaticon.eot"); src: url("fonts/db/Flaticon.eot?#iefix") format("embedded-opentype"), url("fonts/db/Flaticon.woff") format("woff"), url("fonts/db/Flaticon.ttf") format("truetype"), url("fonts/db/Flaticon.svg#Flaticon") format("svg"); font-weight: normal; font-style: normal; } @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: "Flaticon"; src: url("fonts/db/Flaticon.svg#Flaticon") format("svg"); } } [class^="flaticon-"]:before, [class*=" flaticon-"]:before, [class^="flaticon-"]:after, [class*=" flaticon-"]:after { font-family: Flaticon; line-height: 44px !important; font-style: normal !important; } .flaticon-check:before { content: "\f100"; color:#5cab40 !important; font-size: 25px !important;} .flaticon-counterclockwise:before { content: "\f101"; font-weight: bold; font-size: 35px !important;} .flaticon-draft:before { content: "\f102"; font-size: 35px !important;} .flaticon-file:before { content: "\f103"; font-weight: bold; font-size: 35px !important;} .flaticon-interface:before { content: "\f104"; font-weight: bold; font-size: 35px !important;} .flaticon-pingback:before { content: "\f105"; font-weight: bold; font-size: 35px !important;} .flaticon-recycling:before { content: "\f106"; font-weight: bold; font-size: 35px !important;} .flaticon-start-settings:before { content: "\f107"; color:#3498db !important; font-size: 30px !important;} .flaticon-technology:before { content: "\f108"; font-weight: bold; font-size: 35px !important;}wp-fastest-cache/css/style.css000064400000046262151435171370012365 0ustar00/* Set the size and font of the tab widget */ .tabGroup { background: none repeat scroll 0 0 #F3F1EB; border: 1px solid #DEDBD1; padding: 10px; width: 750px; height: auto; float: left; box-sizing: unset; } .tabGroup div.questionCon{ width: 100%; float: left; padding-top: 5px; line-height: 18px; } .tabGroup select, .tabGroup label, .tabGroup div { font-size: 12px; box-sizing: unset; } .tabGroup > label{ font-weight: normal !important; margin-bottom: 0 !important; } div.inputCon label{ font-weight: normal !important; margin-bottom: 0 !important; } div.questionCon.qsubmit{ text-align: center; } .tabGroup div.questionCon.disabled{ color: #888; } .tabGroup div.question{ padding-right: 5px; float: left; text-align: right; width: 130px; font-weight: normal !important; background: none !important; } .tabGroup div.inputCon{ float:left; } /* Configure the radio buttons to hide off screen */ .tabGroup > input[type="radio"] { position: absolute; left:-100px; top:-100px; } /* Configure labels to look like tabs */ .tabGroup > input[type="radio"] + label { /* inline-block such that the label can be given dimensions */ display: inline-block; /* A nice curved border around the tab */ border: 1px solid #DEDBD1; border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; /* the bottom border is handled by the tab content div */ border-bottom: 0; /* Padding around tab text */ padding: 5px 10px; /* Set the background color to default gray (non-selected tab) */ background-color:#ddd; color: black; box-shadow: none !important; } /* Focused tabs need to be highlighted as such */ .tabGroup > input[type="radio"]:focus + label { border:1px dashed #DEDBD1; } /* Checked tabs must be white with the bottom border removed */ .tabGroup > input[type="radio"]:checked + label { background-color:white; font-weight: bold; border-bottom: 1px solid white; margin-bottom: -1px; } /* The tab content must fill the widgets size and have a nice border */ .tabGroup > div { display: none; border: 1px solid #DEDBD1; background-color: white; padding: 10px 0px; height: auto; overflow: auto; margin-top: -1px; border-radius: 0 5px 5px 5px; -moz-border-radius: 0 5px 5px 5px; -webkit-border-radius: 0 5px 5px 5px; } /* This matchs tabs displaying to thier associated radio inputs */ #wpfc-options:checked ~ .tab1, #wpfc-deleteCache:checked ~ .tab2, #wpfc-cacheTimeout:checked ~ .tab3, #wpfc-imageOptimisation:checked ~ .tab4, #wpfc-premium:checked ~ .tab5, #wpfc-exclude:checked ~ .tab6 , #wpfc-cdn:checked ~.tab7, #wpfc-db:checked ~.tab8{ display: block; } /* for lef panel */ #toplevel_page_wpfastestcacheoptions img{ margin-top: -7px !important; width: 30px !important; /* padding: 0 !important; margin-left: 5px !important;*/ } #toplevel_page_wpfastestcacheoptions div.wp-menu-name{ margin-left: 0 !important; } .question:after { content: ":"; padding-left: 5px; } .inputCon input[type="checkbox"]{ margin-right: 5px; } .get-info { float: left; padding-left: 10px; cursor: pointer; } #rule-help-tip { width: 500px; background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #CCCCCC; border-radius: 8px 8px 8px 8px; box-shadow: 4px 4px 10px #CCCCCC; display: block; padding: 10px 10px 0; position: absolute; } #rule-help-tip h4 { color: #6397CB; margin-top: 0; font-size: 14px; letter-spacing: -1px; } h1.summary-rec { border-bottom: 0 none; color: #777777; font-size: 14px; font-weight: normal; letter-spacing: normal; margin: 0 0 0.5em; } .close-window { background: url("../images/close-wiz-sprite.png") no-repeat scroll 0 -19px rgba(0, 0, 0, 0); height: 19px; width: 22px; float: right; } .omni_admin_sidebar { float: right; font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif; font-size: 12px; margin-right: 30px; width: 400px; } .omni_admin_sidebar_section { background-color: #F6F6F6; float: right; width: 195px; padding: 0; border: none; margin-bottom: 15px; } .wpfc-sticky-notification main { overflow-x: hidden } .wpfc-sticky-notification { font-family: "Open Sans", -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen-sans, ubuntu, cantarell, "Helvetica Neue", sans-serif } .wpfc-sticky-notification, .wpfc-sticky-notification a { color: #0A1551 } .wpfc-sticky-notification { font-size: 16px; line-height: 1.4; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale } .wpfc-sticky-notification img { max-width: 100%; vertical-align: bottom } .wpfc-sticky-notification a { text-decoration: none } .wpfc-sticky-notification main { width: 100%; position: relative; transition: all .3s } .wpfc-sticky-notification h5 { margin: 1rem 0 } .wpfc-sticky-notification h5 { font-size: 22px } .wpfc-sticky-notification .sticky-common-banner { transition: all .2s; background-color: #0A1551; box-shadow: 0 3px 10pc rgba(0, 0, 0, .1); border-radius: 0; z-index: 7020; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; align-items: center; overflow: hidden; width: 100% } .wpfc-sticky-notification .sticky-common-banner { background-color:#fff; left: initial; right: 8px; bottom: 16px; } .wpfc-sticky-notification .section-widget-footer.fixed+.sticky-common-banner { bottom: 88px } .wpfc-sticky-notification .sticky-common-banner .header { background-color: #0A1551; display: flex; flex-direction: column; align-items: center; width: 100%; padding: 16px 0 0 } .wpfc-sticky-notification .sticky-common-banner .header-logo { height: 42px; margin: 0 0 8px; } .wpfc-sticky-notification .sticky-common-banner .title { margin: 0 8px 16px; color: #fff; text-align: center; font-weight: 400; font-size: 14px; line-height: 16px } .wpfc-sticky-notification .sticky-common-banner .header-logo { display:block } .wpfc-sticky-notification .sticky-common-banner .visual { margin: 0; width: 100%; height: auto; display: none } .wpfc-sticky-notification .sticky-common-banner .main-cta { transition: all .2s; background-color: #78BB07; font-weight: 500; font-size: 14px; line-height: 16px; text-align: center; color: #FFF; border: none; box-sizing: border-box; padding: 16px 8px; margin: 16px; width: calc(100% - 48px); max-width: 240px } .wpfc-sticky-notification .sticky-common-banner .main-cta:hover { background: #88d408; border-color: #88d408; } .wpfc-sticky-notification .sticky-common-banner .visual { display:block } .wpfc-sticky-notification .sticky-common-banner .main-cta { padding: 16px; margin: 24px; width: calc(100% - 32px); max-width: initial } #wpfc-beta{ padding-right: 5px; font-weight: bold; color: red; } #deleteCron{ float:right; margin-right:5px; padding: 3px; } #deleteCron:hover{ background-color:#FAEBD7; } form.delete-line{ height: 100px; width: 100%; float: left; } form.delete-line .left{ width: 20%; float: left; } form.delete-line .right{ width: 80%; float: left; } form.delete-line .left .submit{ padding-top: 0; float: left; padding-left: 20px; } form.delete-line .left .submit input{ height: 65px; width: 130px; white-space: pre-line !important; } td div.revert:before{ font-family: "dashicons"; content: "\f531"; } td div.revert{ width:16px; height:16px; vertical-align: middle; margin: auto; position:relative; cursor:pointer; -moz-border-radius: 3px 3px; -webkit-border-radius: 3px 3px; border-radius: 3px 3px; border:1px solid #aaa; background:#ddd; padding:3px; background-color: white; } td div.revert:hover{ border-color:#000; background-color: white; } td div.revert:active{ background-color: #F5F5F5; } #revert-loader{ display: none; background: rgba(255, 255, 255, .7) url(../images/loader.gif) no-repeat center; position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9998; } .wpfc-loading-statics{ background-repeat: no-repeat; background-image: url(../images/loader-statics.gif); background-position: 0 0; } div.wpfc-loading-statics{ height: 16px; } p.wpfc-loading-statics{ background-position: 44px 6px; height: 27px; } #wpfc-optimized-statics-reduction:not(.wpfc-loading-statics):after{ content: " KB"; } #wpfc-statics-right ul li{ height:35px; padding:0; margin-bottom:15px; width:150px; } #wpfc-statics-right ul:last-child{ padding-left: 10px; } #wpfc-statics-right ul:last-child li{ width: 220px; height: auto; } span.deleteicon { position: relative; } span.deleteicon input { padding-right: 16px; } span.deleteicon span { position: absolute; display: block; top: 0px; right: 5px; width: 16px; height: 16px; background: url("../images/search_reset.jpg") no-repeat scroll; cursor: pointer; } span.deleteicon span.cleared { background: none; } #wpfc-image-list-filter:-moz-focusring, #wpfc-image-per-page:-moz-focusring { color: transparent; text-shadow: 0 0 0 #000; } #buy-image-credit{ border: 1px solid; color: white; border-radius: 26px; background-color: rgb(61, 207, 60); cursor: pointer; padding: 5px 15px; margin-left: 5px; } .wpfc-exclude-rule-line{ float: left; width: 100%; height: 40px; } .wpfc-exclude-rule-line-left{ width: 100px; float: left; } .wpfc-exclude-rule-line-middle{ /*width: 400px;*/ float: left; } .wpfc-exclude-rule-line-add, .wpfc-exclude-rule-line-delete{ float: left; padding-top: 7px; cursor: pointer; width: 20px; } .wpfc-exclude-rule-line-delete{ display: none; } #integrationDiv { display: block; font-family: "Lucida Grande","Lucida Sans","Lucida Sans Unicode",Verdana,Tahoma,sans-serif; font-size: 13px; height: auto; line-height: 18px; max-height: 395px; overflow-x: hidden; overflow-y: auto; padding: 0; } .wpfc-csp-item, .wpfc-timeout-item, .wpfc-exclude-item, .int-item{ background: url(data:image/gif;base64,R0lGODlhAQAkANUAAAAAAP/////+//38/fb19vX09fDv8Pr6+/n5+vb29/Hx8u/v8Pv8/Pn6+vLz8vv7+vj49/T08/Pz8vLy8f/+/v38/Pn4+PHw8P7+/v39/fv7+/j4+Pf39/b29vPz8/Hx8fDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACEALAAAAAABACQAAAYiwICAgsFkMpUBQ/M4IBqWDYST6BAKhYjHIZkoPp8LaGEIAgA7) repeat-x scroll center bottom transparent !important; border: 1px solid #CCCCCC !important; } .wpfc-csp-item:hover, .wpfc-timeout-item:hover, .wpfc-exclude-item:hover, .int-item:hover{ border:1px solid #ccc; background:#f5f5f5 none repeat scroll 0 0 !important; } .int-item, .wpfc-timeout-item, .wpfc-exclude-item, .wpfc-csp-item { border-radius: 6px; cursor: pointer; margin-bottom: 7px; overflow: hidden; padding: 12px; float: left; width: 328.5px; } .int-item{ padding: 12px 8px 12px 12px !important; } .int-item-left{ margin-right: 7px; } .int-item:hover { background: none repeat scroll 0 0 rgba(135, 135, 135, 0.1); } .int-item h2 { font-size: 14px; margin: 0 0 3px; } .int-item p { color: #666; font-size: 11px; margin: 0; position: relative; padding-top: 3px; } .int-item img { float: left; margin-right: 12px; height: 45px; width: 45px; } .int-item .meta.isConnected{ background-image: url("../images/success.svg"); background-repeat: no-repeat; background-size: 24px; background-position: right; height: 24px; width: 100%; max-width: 100%; position: relative; top: -10px; } .int-item .meta.isConnected.pause{ background-image: url("../images/pause.svg"); } .int-item .meta.success{ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAADb0lEQVQ4Ea2VS0iUURTH7+v7dAwnLMhWjURRm4IeOtEmS4VQ6GFNUYFG+UCooDYlBAktCqIXRVEUvaggqVQoNzallGiboKIWvSha5MLSMZ2Z7746Z9JptLEHdQbmu9+95/+7595z7v0oSWOFDUTkFqwKTPQ7Qa7oIkN4kFIzw1r2mhHdrYXt6o/I7p7HTe8fNBA1FkHHdmxoXpHrnzhhCyV2D+PUT+xYD3gHldYmYik5MNAXvXB9ZUtPqlcqlFa1rZgjfFlHBeXLrDbEpgMOqykoKWdEWR1W0aGd54pbnsFQQpGEbutcOcdY3yXhOPNU7KcVpQYyqi0yBVFSPmE0WnlycTOCCcO/iraiyVq5J/4WiNuAAaAO9chBHi9sKBRT8qbucFyxVXsa+/7YDCGSc8q1hFQKkUeJ+yU770UXCxQEApzZPVb9YgPTTGOs7pADg8VK6lbmMIJ6anl9oKAywLL8Q0EmqN+mTfMYGiYHNsxa0zlg1KbzZS0dWulTylNR3EgOnAQPZggSWEfSQMgEeCRTODyC/ZBto02n9syGq0tvfaxuK893MsRexxE+a2ClwEEes8RZlArEtpbqHQaOZZMweHKYSEr5SA9GKs6WNH6oC4cWOBnuKeGKoFY/okIeA+pMFFL4WQNxKHLwq+eVgeMRjBb7OUQoY/FL8Z6va8+Wtr6pvR9aDrPcgOQsVPHRyUUeM5S8QqilFjNIldFPr5Tcfhnvj++HU3NG+DiRnursj3i7L667+6nmQflSSukx7rLpWo4GIgd5jBLZhS+4XAuHG4I6VNu+rvTi6qY+1RfdFx2M74qrWDUexar20DLGxEnhOrMMlFE6Qx6texjaSIm4OpIsyikxnuqF81d5uqTxDgmFOGls1FXhNaWCu4eFw2ablD0cBcbKIGoTG4pkdRtlI7h3aFZDvTl8MnHFlZpwqAz7ajrWz3eFOO644wNRr4GDPJ4zM2cgZ1q2FS4rSpRFggwJYsQH1Vy8IJ9FBaX13BFz8eSMZ1iGkOWGt4+utSbCwzM7wZ1008nMXJJ6meDszMWqgASMt2SYBS8VGYu1D3qf11wuvtcLu0AINrjwtuNtgw4jhqcMCv23QNShHjmoTUCxAdfWcy86tNmTMoxLSRY+DqYxHEc/9Ecd6kfcvmdn5A2e//vmT6L/9Rv1DasAwJ2jW2dLAAAAAElFTkSuQmCC') no-repeat scroll 0 0; height: 21px; width: 21px; position: relative; top: -8px; left: 312px; } .int-item .meta.warning{ background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAYAAACpF6WWAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAlpJREFUOBGtlb9vE1EMx+333p3aQg8BAhYoUtOOHahEErEASf+ADjCDkGBjYGPsxsjABgNiAgmGDpVYmkIWlDCEASYKrfixAAKhS9JWee+esSNdiAJpSYKnnJ+/n/Pz2Q7CX+zZOTAZdeakUZM5giSPSuUQcIaA3pH3VQRdcb5efe9ffDj/HFwvAnsdG8XcsQl98AoDbiqFEcEfIewh8J5iDcmtRlK/P12qfunmdCtwo1ic2xeEtw1iISEWdkf2/Fb8rBHBEa01bevGdKn0ml0kYR3op4WFuXFjHiDqU5Z2w4nstwWogCh5te3cpROrqwIGeSF8LmYPBwrvDAoUrSQgOtELR3xqCcAYfehaYMKzg2Qo4tREJ3qD0VX5yPixUMgEQVjTSkWe6zisKa5v4n1sbWveGBXkuOCRTxLm/Xste1/uuZKSGDHPgPI5cWAUAR49wgXRHD9IxvytfQL09Rv4RoP1nqGEeRwbg+DiBQgXFwGDcGAo2Ra0lpfBPnwE0GzmuSVpFib3g56fb9+Itrd6b7b3szFtvV1ZAdxqzBoiXId6I5vUaqCnpgDHJ4bKVPTM4Z7FdQNIFdrZydrHT8CVyyPVlDk8TlQx4FVV8Qj4OAaKf+591b4RChSDPPOM87aKFMZaa+7T9oD1le12kPap8PSBzc366cwMGa2KozS/kSydXXqblJ7KmDqX/LhrXassy2EYE53oHcX3ZL+2KcdLL79bT9dl2wwKTreU6IUjSXVS47X1hgf3siO/FvAcdw76pC7nEifxohN9GtrZp6njf2/+lAuj/kf9ArVlQDDNYNOoAAAAAElFTkSuQmCC') no-repeat scroll 0 0; height: 21px; width: 21px; position: relative; top: -8px; left: 312px; } .int-item .app { float: left; /*padding-right: 10px;*/ width: 75%; } .int-item .app .more-info { cursor: auto; float: none; height: auto; margin-left: 10px; width: auto; } .int-item .meta { font-size: 11px; font-weight: bold; max-width: 100px; text-align: right; } .int-item .meta .developer { color: #333333; display: block; } #wpfc-premium-container{ overflow: hidden; } .wpfc-premium-step{ width: 246px; float: left; margin-left: 3px; } .wpfc-premium-step div{ float: left !important; } .wpfc-premium-step-header{ width: 100%; background-color: rgb(58, 158, 235); padding-top: 12px; padding-bottom: 11px; text-align: center; } .wpfc-premium-step-header label{ font-size: 17pt !important; color: white !important; font-weight: normal !important; margin-bottom: 0 !important; } .wpfc-premium-step-content{ font-size: 16px !important; line-height: 20px !important; padding-top: 25px !important; padding-left: 25px !important; height: 100px; } .wpfc-premium-step-footer p{ font-size: 15px !important; } .wpfc-premium-step-footer ul li{ background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAUCAYAAACXtf2DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNDgwMTE3NDA3MjA2ODExOEMxNEJENkJCQTMxQTY0OSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNDA0MUQ4RTAxMjUxMUUzQUNBOEExQjA5MUZCRkI2OCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNDA0MUQ4RDAxMjUxMUUzQUNBOEExQjA5MUZCRkI2OCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzNDYwOTkyMEYyMDY4MTE4NzFGQ0NDRDhCOTMyRDhEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA0ODAxMTc0MDcyMDY4MTE4QzE0QkQ2QkJBMzFBNjQ5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+U7CKjQAAAX1JREFUeNpiZFj/gYES8D+AH85m3PBREEj1AbEHEO8E4kIWBioBoOEaQGoBEJtDheKB+AcLlQx3AVKrgVgATSqCiQqGRwOpTVgMB4HjlFqQAcRLgJgTi9wXIC6hxIIqIJ6OR74AmACukmtBJRC34pGfDTR8LohBjgVlQNyGR/44EGfCODALhIHYFYj5CBheDMSdeOTvA3EI0PV/kS0wAOKTQLwLShvj0AxyVQ8ew0GRGg40/BmyIMiCSUCsDOWDMstmIFZH0xwHxNMI+C4KaPhpdEGQBWpoYpJAvAWIZaD8UCBeSMDwOKDhm7FJgCyYh0VcBYg3AHENEK8gYHgR0PDFODMisLADZZJj0LggFYDS+kR8CkA++A7ECVCaFJAPxBMJKYIl04tAnEiC4enQxMFArAUgsBKImwmo/woqIYF4FrEuQc/JdUC8DIfat0DsA3UIA7kWwCqKPWhiR4HYBIgPkJoKsFnwB4jDgHg5EL8A4jlA7A3ED8gpFQECDADtslAckBdkiwAAAABJRU5ErkJggg==") no-repeat scroll 0 2px transparent; padding: 3px 30px; font-size: 15px; } .wpfc-premium-step-footer{ padding-left: 25px; } .wpfc-premium-step-image{ width: 100%; height: 180px; text-align: center; } .wpfc-form-spinner, .wpfc-form-spinner-input-td, .wpfc-form-spinner-number, .wpfc-form-spinner-up, .wpfc-form-spinner-down{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;} .exclude_section_clear { background: none; border-bottom: 1px solid #e6e6e6; clear: both; float: left; marig-left: 1px; margin-bottom: 0px; margin-top: 16px; overflow: auto; position: relative; width: 97%; } .error-wpfc{ border-color: #D8000C !important; color: #D8000C !important; background: #FFBABA url("") no-repeat 10px !important; } .success-wpfc, .error-wpfc{ background-position: 10px center !important; padding-bottom: 5px !important; padding-top: 5px !important; } .success-wpfc{ border-color: #4F8A10 !important; color: #4F8A10 !important; background: #DFF2BF url("") no-repeat 10px !important; } .success-wpfc p, .error-wpfc p{ padding: 2px 2px 2px 0px !important; } /* input[type=checkbox]:checked:before { color: #e14d43;} */wp-fastest-cache/css/toolbar.css000064400000013735151435171370012666 0ustar00#revert-loader-toolbar{ display: none; background: rgba(255, 255, 255, .7) url('data:image/gif;base64,R0lGODlhSwBLANUAAP////7+/v39/fz8/Pr6+vn5+ff39/b29vX19fT09PPz8/Ly8vHx8fDw8O/v7+7u7u3t7ezs7Ovr6+rq6unp6ejo6Ofn5+bm5uTk5OPj4+Li4uDg4N3d3dra2tjY2NfX19TU1NHR0c/Pz87Ozs3NzcfHx8XFxcTExMHBwbu7u7q6urW1tbS0tLGxsa+vr6ioqKenp6Kiop6enp2dnZycnJSUlJOTk4qKioCAgHd3d21tbWNjYwAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAAACwAAAAAQwBLAAAG/0CAcEgsGo/FAogVo8VYoAJySq1aj50mbcuNda7g8LXELZdL4rRaCDK7t6C13KrQvssxxXx/JN/daHyCQi9/bi+Dg4ZviVQFCpADSBaLbhZICB6aEnIUICOgoBx6SZVmUkUeNjusrDkqYgcfobSgG0Z2lTFGMq2+rDgaVwchtca3RCimWyhFvb+/OsJVs8bGl0OUy9hCLdDfOFUW1uSoQimmKUQS3+0tVJ/kxhNEBS6LLuYAKe3fOVMF5Fn7Ug/dnRT6ANzo943TEQUCjYU4YsEglxTciOhgCM0DEogRawG0QDIhEY4dP4akFWdPDpS+PB4ZsDIUBz41YLY6MIVDzf8REPiY0LmjBhWQIVvyeQlT5pQNK0nx8QBTxhWoAoMmGsrQKhgLxYyB4NkIgAam0d6JGTChw6cPGxqULSJCBo4dOW6kIDu3r9+/fPgCTjQgQ7wRITZIHSwHQthjkhirwSrvQ2TJYCCsvIn5yoDHEeV2rjLhJ8HRUzr8HHEZtZHVIxa7JgJb9mwhtW8bUf2ztW4ApWue/i3kc03RxIdoDsk5ORHK5Cw7N+KY3Abf04tjOJzYdnYjgr+LH/97AAW3I+Ai72vAgYQLFCIkEJDmAuhQY+cSoHChv/8LFSwQBnTWaDXIAf8l2J8DV0U1SAEKRsjgUTUptQd/ESpoEhE+1WTloBwIZqjgA1PQ9FNzcjwgYoT0PbSahWtguOJ/GwKAVE1TCFDAji0eMaOGKv00kREFqPjfAxtW8CONSARkWhECGBnhAz0KEcGS/mE3xGEh0TOEAO+tKEGVCWAJHxXj1KSPlCuSOMQAZnpHRDURZQQhlvoosKRDVBATETJDOGDmhIHOWAEBw9B5jBFKYlmBEYJmKAGiYUzA5QijGCGAmf1VKUSRCVKQgByPRNIkpxfUGMCOBWg5F6rZyfgjBdkxYCYD2Q3QqKGu3lbmj6OKZ+uKuJJ3wK7/VRCeeAEkEIGSFcgXwCBBAAAh+QQFCgAAACwIAAAAQwBDAAAG/0CAcEgsGouUTmgU6lCO0Kh0SgVAlqOsNgSper/VjHY8zoDPaOGEzM5O0nBqAdsehwrx/BFTb2P0gEMgfWwggYGEbYd6ColsClEXkpCLUI5kRxcpNJycL4aVRXSOIUYonaicLhGhQxuXWRtFp6mpMaytjbCUQiO1vy6tQhyXHEQKv8kjwgAfiR9FIMm/L8wAxHXGRSvTv7y52Foc30Mx3bUW1kMK7FLn6OpfL++o6fFVm/Sc914d+jQp+HmZR8+ewCkW6KE42O/cQoZeIBC0tQwimA0oXNB4sQKUxY8gQ7bSIBKMhxk6dqjMAQNBySgIZKicOVPHiZdGEOCgyVOlDLqcRGr0HHoT6IihQ3W4xHkD6dCALxE4HXoDp4epQ61i7al1K02cB7zOrMpU7A6oL0WI1XEAKAChW024BXBg59Sfc+nKTCo37xAPMlKufNHW7xGShhPfSxCBwgUJDgwoBrCggqTLkp4YdoC5s6TCbjl79owHaIHRozXjfIB6NOiSrUc/wHk6dmfVImvbxkx7N+YKQH1fxvXSsfAEQBUIvzBXgm9yLy3HdmDYOWrqiRMYv/yg9GQABcInDgIAIfkEBQoAAAAsAAAIAEsAOwAABv9AgHBILBqPyKQSoGgWltCodDpUcEZYLIhC7Xqlm6wY+zl8z2hheDwOmdNwqYVN/8TvygJ9b8H7ixN7dCB/hQAdgnRPhnghiWwKjHiPkJJ3IJRikZZwV5lYnHEQnyMcoXGYmZunaAqZG6yij7CxcQepbX21eA0bHyMgHRO7xMXGx2cRUQwUF84VDovIQhcoMTTYLyVIBxXO398O0wAo2ObmMR1FDuDtzhLILufz2ChDB+75D8Yp9P7qALzlc2eA2AZ//mIASDAwn7JdKxD6AxGhYT5iEv2tsJhP2ikLGf1xdOcxFMiQ80a2K8npJEpzFVU6w/gS2wqGMh/WiliTkMCqkQV3HXypEAC+kfuK9UMJEAA7i/COyctoj0i3geKmlUvYtAizb9BYGrNgzZy2caLQql3LVsqIGTh25LihAkHbKBpy7NjLd4eOFneVnOhLeK+MwEc8FF58GDERvYsLe3AsxETkxTUoA6hxebFdx5A7953sWLRkyjpMj6Z8QzVfnYFTuJarOcJswJpbqMaheYgM0To09PZ9GYfw4UM8cO6bIwXyIwc8SIe9JAgAIfkEBQoAAAAsCAAIAEMAQwAABv9AgHAoLBiJyKRyyWw6AQnKZTp9FJ7YrHYooXqnjq14TKx8z2GyGts9nxXr+FLhrsvvRGn9nMDj924RfnIFgGcVg3GFhl+Ja4uMUxSOa5FUD5RqD5YXB5lkkIaTn2QOkVekpYaeqWoKZmejrXEJEVISDgazu7y9vr9arMBjChshI8ggGcNaG8jPzyEQzE4f0NfIG9RLHNje09tEDd7eIeFEHeTeE+dC6t4d7Qrv3vL02Pb30O0A+s/x7dL5Y9dunD5z/AB0uwcuobV32hIOcVauoUQhxY4lw3CxibCOIEOq2YDCBY0XLECIBBDhBY2XMGnEIAGyQ8ybL1FcvICzp864hC574rzAz6ZQnCn4pTjak19QpjEttELgoSoCJlBxSv3kwcaOr19teFASI2vUTAhqgF37tcZVIivMwoTjCAEOtnhxvBUCQu7JTGrx4q1BRIHfEZQ8CF48dsgIsy4yyVgsWAYSFFBjWBykgzJeHUkwC3Wx2Q8Cz4L3DrGwNOYLlVxR422sxIJtuqlks+WXQ/fXHE5973jBL0Jn2ToEKdWdVOIL1MQ7mjjOVocJkQdS3Ois40aKj46CAAAh+QQFCgAAACwIAAAAOwBLAAAG/0CAcEgsGouJSOVSiSSO0Kh0WjwsL9hs5UDteqGMrFjM+Jq9ibEa+zy7ode1uPKuE8Nyddlep+TVFHx1f2uCbgWEagWGZ4ljjGdxiXSQXw6OWA6VX4iYi5teD44PoGYShBKlZ6JypKpnBaxZD5+vbwW4trq7vL2+v8DBwsPExcbHyMnKy8zNzs/Q0dLT1NXW19jZ2tvcxAgqNzk7ODMjtg0bHyMgHYFRLTo78vM7ORqgByAj+/wjIRdHZNAbKO9EJQj9Eu7bUEQgQYIeGClQSJGhEA8PH+ZgpI+iQgVCamR8aEIQQo8KOQBAMPJhDUEcUFIEgLHlwI18Osrsp6CmTcV6UrJI2fnR588dOo5cSEGjadMUAI2EIMozwtF5N4wwdcqVRgojHajyWyTu6lciLrqqdVFkgth1Qlpc3RGByFa1Xc8KKfDWwhAcR1sQuYC3cFQhFqh+IKIhXksZRVAUxouiyIadIbgwBpwRcpEYk9XGMHLZ4wfNWsvOqxHRSGi8RxTE7AdiApUIHnKjLmLhtVq/UBQIr8XId1dhL4w3fSGshHIaJYQpAO07BkhhIIyDKOY8dHRjHah3jdFBGYgVoGOs2M4oCAAh+QQFCgAAACwAAAgAQwBDAAAG/0CAcEgsGo/IpBJQaC6f0Oiy8LhYrZSEdMtNOq5gq6RL7n7D4Up5/VSg32O23PiuK+Z4QKL+puTnEXxvf3IVgmgFhGuHiIplFIxgiY5dVZFWlGQHlxcPmWSQkZOfWwWRDqSah6ipj28Vd61rBg4SFxQRWrK7vJ8avWwIMDk7xTozHsBbJzrFzs4yCMpPMs/WxTjS00gn194120cIzd7XI+FFKeXeN+hEN+ve2u7x3snuAPXX9/T6z/zo4PkrdgAfAHUD2xk8QE6fCINCTPgDB1FItXg4ClaM2NCaDI0bhRx4QcyYDIAhi/xKybJlLxAsXtBwgWKDSwAkYtDYyZPGi8AILFH0HLqzQ0ihRIleqHghadIXFVM4TWrU4NSkKQxauEoUKr6tXIcqUUC2FdiwO2McUcBhhFu3HGJRUoCW5wojbd/qHcHhk8y6IIp82Ev4Q6YRdWnIBZCX8N6+lFygPTdEgePLi/9A0HkVRZENlx3bpARBslPPRUKEJhyCFIi/PFNYOLLacSsFFnInsVx7b+ZtvfdCBBHcbWCDGIqPwACxgOreIUbhmxB8Qsjkq5mnhPB8bwgINyd0UB2ig3U8QQAAIfkEBQoAAAAsAAAIAEsAOwAABv9AgHBILEo8SERxyWw6n9CoKrerVm2eqHbLfWpw1nBV1i2boRqdeE0+u9/g9br1rndb8rzEzodS82spfYNLEoByN4SKQh6HazqLio2OYpGEk5RVOZaDB5lWNZyDNZ87JqJ9mI6bqH0ymVmtro6nsoMtams5GraKByk3VDgyIr3Gx8jJURHKiiUvNNExKBfNRQUOFRfbFAxNHTHR4uIo1kIO2+npFQdFKOPw0S7WEur22w5DHfH8gskP9wK2AxCOX7wNyAwEDFgBAAiD/FYgi7AwYIIVEPkhqxgwQkZ+FowV4BjwY7yQvUaStGcSHkpbKlemw9gy2kaZ2yI8rCnxGEWvnAkI1kR4TKHMhgD2mfSHDODKgQDeZZzXrB7HfETAGSxnDh1DqEWeiZv20hw2bdy8RYFgrq3bt8codAAx4sOGBnC7XAgxoq/fESDA5m2y4a/hvmwHEz7MWIHiJQoYMwbxuAgHyYwTVwaAmTGHzQAidzZMebPo0X9Bn0Y9IgToAqz9dgDtMPaICbQt2C5AG8AH1mU3H+DbmWhvAAd+SzZ+XMgEun85OG6+pICC65uDAAAh+QQJCgAAACwAAAAASwBLAAAG/0CAcEgsGo9FhOqm2+luKgRySq1ar8JTc8ft6k7YsHgMgHXPZxh5zSam0HBuqk0XS7bxs05S71dfeXEvfoRHOYFwOYWLQ4hxjGEKF5NTHo5wHpBVIC80np4pF0YHl2gHmkgRLp+snihGeJc6qEcRMa24r0QypVwytEaruLgjRJa9mcBDI8PNCkQ1pTXKRJ3NuCBEBziOOKfUAArXwytFB9F5Nd/gFuO4MUce6F01yeBC7e6tUwce/uv38OljNSggmYGf5hgckwIhjQ4Lx+TTVzCiGBQDLVgkg3EcxI1kRtzC9QICyDYgVnRygWLDyZcwY9IBKHNMBhAjcobY8KzmFc4IIXIKFerSJ5UNQ5Pm/GAUCQSlUDk0NRIUqtIGU4dMsAr1Y9YOXKFmFRIWas+pZZWebZo26VqjYNvmHAtgq1yvWaumxUr3aVqpdIUgDcs08BCgVosaJoIBp06ei/lFnky5shgDDiRcoBAhgWUAFCaJnlRhweQDo1NPcrC4gOrXrAOHfq26AF3UtFU/oPsg92u6s32Ptp1VeO2xFYwPHxtBuWi6CZxvDiz9bVNJxvkYdiC8wmTutLVPLtB7NAXPnwEUWJ++vfv38OPLn78xCAA7') no-repeat center; position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9998; } #wp-admin-bar-wpfc-toolbar-parent * { cursor: pointer !important; } /*@supports not (-ms-high-contrast: none) { #wp-admin-bar-wpfc-toolbar-parent > .ab-empty-item::before{ content: url("../images/icon.svg"); } }*/wp-fastest-cache/css/buycredit.css000064400000230420151435171370013206 0ustar00 .fakeHeader{/*padding-bottom:5px*/}.fakeHeader h1, .fakeHeader .title-h1{display:none}header .subContent{width:960px;margin:0 auto;padding-top:32px;padding-bottom:18px}#container{width:960px;margin:0 auto;padding-bottom:70px;position:relative}.mainContent{float:left;width:570px;padding:25px 30px 30px 30px;background-color:#fff;margin-bottom:70px}.rtl .mainContent{float:right}.sideContent{width:240px;padding:10px 30px 15px 30px;float:right;background-color:#fff;margin-bottom:70px;z-index:9;position:relative;top:auto;left:auto;margin-left:0;border:1px solid white}.rtl .sideContent{float:left;margin-right:0}#frameContent{width:100%}@media only screen and (min-width: 768px) and (max-width: 959px){body{min-width:768px;height:auto;background-image: -ms-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image: -moz-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image: -o-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #FFFFFF), color-stop(1, #F3F8FA));background-image: -webkit-linear-gradient(top, #FFF 0%, #F3F8FA 100%);background-image:linear-gradient(top, #FFF 0%, #F3F8FA 100%)}header .subContent{width:720px}#container{width:720px}.mainContent{width:390px}.sideContent{width:180px}}@media only screen and (max-width: 767px){html,body{background:#fff;height:auto}body{min-width:0}header{display:none}.fakeHeader{display:block;width:auto;height:100%;margin-bottom:10px;padding-top:0}.rtl .fakeHeader{float:right}.fakeHeader h1, .fakeHeader .title-h1{display:block}.fakeHeader h1, .fakeHeader h2, .fakeHeader h3, .fakeHeader h4, .fakeHeader h5, .fakeHeader h6, .fakeHeader .title-h1, .fakeHeader .title-h2, .fakeHeader .title-h3, .fakeHeader .title-h4, .fakeHeader .title-h5, .fakeHeader .title-h6{margin-bottom:0}header .subContent{width:auto}#container{width:320px;padding-bottom:30px}.mainContent{width:280px;padding:19px 20px 20px 20px;margin-top:1px;margin-bottom:20px}.rtl .mainContent{float:none}.sideContent{float:none;width:100%;padding:0;padding-bottom:20px;margin:0}.rtl .sideContent{float:none}}.fixme{_position:absolute;top:0;_top:expression(eval(document.body.scrollTop))}footer{z-index:10}#orderDetails{position:relative;opacity:0;filter:alpha(opacity=0)}#orderDetails table{width:100%}#orderDetails table tfoot tr.totalRow{background-color:#fff}#orderDetails table.highlight tfoot tr.totalRow{background-color:#8cdbf8}#orderDetails table th, #orderDetails table td{height:18px;padding-top:15px;padding-bottom:15px;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:#e7f1f5;border-collapse:separate;color:#333534;font-size:16px;line-height:20px;font-weight:400;vertical-align:top}#orderDetails table th{padding-right:10px;text-align:left}.rtl #orderDetails table th{padding-left:10px;padding-right:0;text-align:right}#orderDetails table td{text-align:right}.rtl #orderDetails table td{text-align:left}#orderDetails table thead tr th{padding-top:14px;padding-right:0;padding-bottom:5px;line-height:24px;border-bottom:none}.rtl #orderDetails table thead tr th{padding-left:0}#orderDetails table thead tr.totalRow .yourOrder{font-size:24px;font-weight:400}* html #orderDetails table thead tr th .yourOrder{float:left}*:first-child+html #orderDetails table thead tr th .yourOrder{float:left}#orderDetails table thead tr th .orderNumber{display:block;clear:left;padding-top:4px;padding-bottom:4px;font-size:16px;line-height:16px;font-weight:400}#orderDetails table thead tr th .changeOrder{float:right;padding:10px 0 0 0;font-size:16px;line-height:16px;font-weight:400}.rtl #orderDetails table thead tr th .changeOrder{float:left}#orderDetails table thead tr th .changeOrder a{font-weight:400}#orderDetails table thead tr th span.totalPrice{display:none;opacity:0;filter:alpha(opacity=0)}#orderDetails .toggleOrder{display:none}.vatRowHidden{display:none}#orderDetails table tfoot tr th, #orderDetails table tfoot tr td{border-bottom:none;font-weight:600}#orderDetails table tr.totalRow th .title-h3 .icon{display:none}#orderDetails table tr.discountRow th, #orderDetails table tr.discountRow td, #orderDetails table tr.extraProductRow th, #orderDetails table tr.extraProductRow td{color:#EC008C}#orderDetails table tfoot tr.vatMessageRow{display:none}#orderDetails .sideMessage{display:none;position:absolute;top:auto;right:0;left:0;width:180px;margin:14px 0 0 -1px;padding:13px 30px;background-color:#D9F3FD;font-size:14px;line-height:18px;font-weight:400;text-align:left;z-index:100;border:1px solid white}.rtl #orderDetails .sideMessage{text-align:right}#orderDetails .sideMessage .arrow{position:absolute;top: -11px;left:0;width:18px;height:12px;z-index: -190;background:url("../images/icons/icons-sprite.png") no-repeat;background-position: -90px 0}.sideMessage .arrow::before, .contextNotification .arrow::before{content:"";display:block;width:14px;height:14px;background-color:#d9f3fd;border-color:#d9f3fd;border-style:solid;border-left-width:1px;border-top-width:1px;border-right-width:0px;border-bottom-width:0px;top:22px;position:relative;-webkit-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);-moz-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);-ms-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);-o-transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);transform:translate(2px, -16px) rotate(45deg) skew(10deg, 10deg);border-right-width:0px;border-bottom-width:0px;z-index: -100}.vatTooltip{width:18px;height:18px;display:inline-block;margin:1px 8px 3px 8px;vertical-align:middle;overflow:hidden;border:1px solid white;border-radius:15px;cursor:pointer}.vatTooltip:hover{border-width:2px;margin:0px 7px 2px 7px}button.vatTooltip{background-color:transparent;padding:0;width:20px;height:20px}button.vatTooltip:hover{width:22px;height:22px}button.vatTooltip::-moz-focus-inner{border:0;padding:0}.vatTooltip:before{content:url("../images/icons/icons-sprite.png")}.vatTooltip{*background:url("../images/icons/icons-sprite.png") no-repeat}.rtl .vatTooltip{margin:0 7px 2px 7px}.vatTooltip:hover:before{left: -18px;position:relative}.vatTooltip:hover{*background-position: -18px 0}.vatTooltip:active:before,.vatTooltip.visible:before{left: -36px}.vatTooltip:active,.vatTooltip.visible{*background-position: -36px 0}@media only screen and (min-width: 768px) and (max-width: 959px){#orderDetails table th, #orderDetails table td{font-size:14px}#orderDetails table thead tr th{padding-bottom:9px}#orderDetails table thead tr th .changeOrder{clear:left;float:left;padding:3px 0 0 0}.rtl #orderDetails table thead tr th .changeOrder{clear:right;float:right}#orderDetails table tfoot tr.changeOrder{display:none}#orderDetails .sideMessage{width:120px}}@media only screen and (max-width: 767px){#orderDetails{}#orderDetails table{border-bottom:1px solid #c5d9e1;border-collapse:separate;background-color:#e7f1f5}#orderDetails table thead tr.totalRow{background-color:#e7f1f5}#orderDetails.css3 table thead tr.totalRow{-webkit-transition:background-color 0.5s ease-in-out;-moz-transition:background-color 0.5s ease-in-out;-ms-transition:background-color 0.5s ease-in-out;-o-transition:background-color 0.5s ease-in-out;transition:background-color 0.5s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.highlight thead tr.totalRow{background-color:#8cdbf8}#orderDetails.css3 table.highlight thead tr.totalRow{-webkit-transition:background-color 0.2s ease-in-out;-moz-transition:background-color 0.2s ease-in-out;-ms-transition:background-color 0.2s ease-in-out;-o-transition:background-color 0.2s ease-in-out;transition:background-color 0.2s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.open.highlight thead tr.totalRow{background-color:#e7f1f5}#orderDetails table tfoot tr.totalRow, #orderDetails table.highlight tfoot tr.totalRow{background-color:#e7f1f5}#orderDetails table.highlight tfoot tr.totalRow{background-color:#8cdbf8}#orderDetails table tr th, #orderDetails table tr td{height:24px;padding-top:6px;padding-bottom:6px;font-size:18px;line-height:24px;border:none}#orderDetails table th{padding-right:5px;padding-left:20px}.rtl #orderDetails table th{padding-left:5px;padding-right:20px}#orderDetails table thead th{padding-right:20px}.rtl #orderDetails table thead th{padding-left:20px}#orderDetails table td{padding-right:20px}.rtl #orderDetails table td{padding-left:20px}#orderDetails table thead tr th, #orderDetails table thead tr td{padding-top:10px;padding-right:20px;padding-bottom:9px;font-size:18px;font-weight:600;line-height:24px}.rtl #orderDetails table thead tr th, .rtl #orderDetails table thead tr td{padding-left:20px}#orderDetails table thead tr.totalRow .yourOrder{font-size:18px;font-weight:600}#orderDetails table thead tr.totalRow th .yourOrder .icon:before{content:url("../images/icons/icons-sprite.png");left: -91px;top: -129px;position:relative}#orderDetails table thead tr.totalRow th .yourOrder .icon{overflow:hidden;display:inline-block;width:14px;height:7px;margin:10px 0 0 6px;vertical-align:top;*background:url("../images/icons/icons-sprite.png") no-repeat -92px -129px}.rtl #orderDetails table thead tr.totalRow th .yourOrder .icon{margin:10px 6px 0 0}#orderDetails table.open tr.totalRow th .yourOrder .icon:before{content:url("../images/icons/icons-sprite.png");left: -210px;top: -129px;position:relative}#orderDetails table.open tr.totalRow th .yourOrder .icon{background-position: -211px -129px}#orderDetails table thead tr th .orderNumber{float:right}.rtl #orderDetails table thead tr th .orderNumber{float:left}#orderDetails table thead tr th .changeOrder{display:none}#orderDetails table thead tr th span.totalPrice{display:inline-block;float:right}.rtl #orderDetails table thead tr th span.totalPrice{float:left}#orderDetails table thead tr th span.totalPrice{opacity:1}#orderDetails.css3 table thead tr th span.totalPrice{filter:alpha(opacity=100);-webkit-transition:opacity 0.4s ease-in-out;-moz-transition:opacity 0.4s ease-in-out;-ms-transition:opacity 0.4s ease-in-out;-o-transition:opacity 0.4s ease-in-out;transition:opacity 0.4s ease-in-out;-webkit-transition-delay:0.2s;-moz-transition-delay:0.2s;-ms-transition-delay:0.2s;-o-transition-delay:0.2s;transition-delay:0.2s}#orderDetails table.open thead tr th span.totalPrice{opacity:0;filter:alpha(opacity=0)}#orderDetails.css3 table.open thead tr th span.totalPrice{-webkit-transition:opacity 0.4s ease-in-out;-moz-transition:opacity 0.4s ease-in-out;-ms-transition:opacity 0.4s ease-in-out;-o-transition:opacity 0.4s ease-in-out;transition:opacity 0.4s ease-in-out;-webkit-transition-delay:0.1s;-moz-transition-delay:0.1s;-ms-transition-delay:0.1s;-o-transition-delay:0.1s;transition-delay:0.1s}#orderDetails table tbody, #orderDetails table tfoot{opacity:0;filter:alpha(opacity=0)}#orderDetails.css3 table tbody, #orderDetails.css3 table tfoot{-webkit-transition:opacity 0.3s ease-in-out;-moz-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table tbody tr th, #orderDetails table tbody tr td, #orderDetails table tfoot tr th, #orderDetails table tfoot tr td{height:0px;line-height:0px;padding-top:0px;padding-bottom:0px;overflow:hidden}#orderDetails.css3 table tbody tr th, #orderDetails.css3 table tbody tr td, #orderDetails.css3 table tfoot tr th, #orderDetails.css3 table tfoot tr td{-webkit-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-moz-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-ms-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-o-transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;transition:height 0.3s, line-height 0.3s, padding-top 0.3s, padding-bottom 0.3s ease-in-out;-webkit-transition-delay:0.2s;-moz-transition-delay:0.2s;-ms-transition-delay:0.2s;-o-transition-delay:0.2s;transition-delay:0.2s;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table tbody.android2 tr th, #orderDetails table tbody.android2 tr td, #orderDetails table tfoot.android2 tr th, #orderDetails table tfoot.android2 tr td{display:none}#orderDetails table.open tbody, #orderDetails table.open tfoot{opacity:1;filter:alpha(opacity=100)}#orderDetails.css3 table.open tbody, #orderDetails.css3 table.open tfoot{-webkit-transition:opacity 0.2s ease-in-out;-moz-transition:opacity 0.2s ease-in-out;-ms-transition:opacity 0.2s ease-in-out;-o-transition:opacity 0.2s ease-in-out;transition:opacity 0.2s ease-in-out;-webkit-transition-delay:0.3s;-moz-transition-delay:0.3s;-ms-transition-delay:0.3s;-o-transition-delay:0.3s;transition-delay:0.3s;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.open tbody tr th, #orderDetails table.open tbody tr td, #orderDetails table.open tfoot tr th, #orderDetails table.open tfoot tr td{height:24px;line-height:24px;padding-top:6px}#orderDetails.css3 table.open tbody tr th, #orderDetails.css3 table.open tbody tr td, #orderDetails.css3 table.open tfoot tr th, #orderDetails.css3 table.open tfoot tr td{-webkit-transition:height 0.3s, line-height 0.3s ease-in-out;-moz-transition:height 0.3s, line-height 0.3s ease-in-out;-ms-transition:height 0.3s, line-height 0.3s ease-in-out;-o-transition:height 0.3s, line-height 0.3s ease-in-out;transition:height 0.3s, line-height 0.3s ease-in-out;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}#orderDetails table.open tbody.android2 tr th, #orderDetails table.open tbody.android2 tr td, #orderDetails table.open tfoot.android2 tr th, #orderDetails table.open tfoot.android2 tr td{display:table-cell}#orderDetails table.open tbody tr th, #orderDetails table.open tbody tr td{padding-bottom:6px}#orderDetails table.open tfoot tr th, #orderDetails table.open tfoot tr td{padding-bottom:10px}#orderDetails table tfoot tr.vatMessageRow{display:table-row}#orderDetails table tfoot tr.vatMessageRow td{padding-left:20px;font-size:12px;font-weight:normal;text-align:left}.rtl #orderDetails table tfoot tr.vatMessageRow td{text-align:right}#orderDetails table.open tfoot tr.vatMessageRow td{line-height:18px}#orderDetails table tfoot tr.changeOrder td{padding:0 20px;font-size:14px;text-align:left}#orderDetails table.open tfoot tr.orderDetails td{line-height:14px}.toggleOrder{display:block !important;position:absolute;background:transparent;border:0;top:0;left:0;width:100%;height:45px;outline-width:0;outline:none;z-index:998}button.toggleOrder::-moz-focus-inner{border:0;padding:0}button.toggleOrder:focus{border:2px solid #c5d9e1}#orderDetails .sideMessage{position:relative;width:auto;height:100%;margin: -15px 20px 25px}#orderDetails .sideMessage .arrow{position:absolute;z-index:999}#orderDetails .currencySelector{display:none}.vatTooltip{display:none}}body{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}footer p{margin:0}p.dummyContent{font-size:14px;line-height:35px;color:#8BACDA}strong,b{font-weight:bold}small{font-size:0.79em}iframe{width:100%;overflow-y:hidden}.floatl{float:left}.floatr{float:right}.hidden{display:none}.noTablet{display:block}.noMobile{display:block}.mobile .noMobile{display:none !important}.noDesktop{display:none}.pageView{display:none}#loader{height:280px;background-repeat:no-repeat;background-position:50% 50%}#overlayBg{display:none;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#e7f1f5;opacity:0.9;filter:alpha(opacity=90);z-index:997}.overlayHiddenContent{display:none !important}.overlayMessage{display:none;position:absolute;top:200px;left:50%;width:296px;padding:28px 34px;margin:0 0 0 -180px;background-color:#fff;z-index:998;border:1px solid white}p.notification{position:relative;margin-bottom:35px;padding:14px 22px 16px 60px;overflow:hidden;border:1px solid white}.rtl p.notification{padding:14px 60px 16px 22px}.notification.alert{background-color:#fcdcde}.notification.warning{background-color:#ffeed9}.notification.success{background-color:#ecf5d9}.notification.info{background-color:#d9f3fd}.notification strong, .notification b{display:block}.notification .icon{display:block;height:25px;width:27px;position:absolute;left:16px;overflow:hidden}.notification .icon{*background:url("../images/backgrounds/misc-elements-sprite.png") no-repeat}.notification .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");position:relative;left: -34px}.rtl .notification .icon{right:16px}.notification.alert .icon:before{top: -191px}.notification.warning .icon:before{top: -220px}.notification.info .icon:before{top: -248px}.notification.success .icon:before{left:0px;top: -248px}.notification.alert .icon{*background-position: -34px -191px}.notification.warning .icon{*background-position: -34px -220px}.notification.info .icon{*background-position: -34px -248px}.notification.success .icon{*background-position: -64px -248px}.messageContainer p{position:relative;margin-bottom:19px;padding-left:60px;padding-top:4px;font-weight:200;font-size:24px;line-height:30px;min-height:37px}.rtl .messageContainer p{padding-left:0;padding-right:60px}.messageContainer p strong{font-weight:600}.messageContainer .last{margin-bottom:43px}.messageContainer .icon{display:block;position:absolute;left:0;top:0;width:41px;height:41px;overflow:hidden}.messageContainer .icon{*background:url("../images/backgrounds/misc-elements-sprite.png") no-repeat}.messageContainer .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");position:relative;left: -19px}.rtl .messageContainer .icon{left:auto;right:0}* html .messageContainer .icon{margin-left: -60px}.messageContainer .successful .icon:before{top: -444px}.messageContainer .email .icon:before{top: -485px}.messageContainer .pending .icon:before{top: -526px}.messageContainer .error .icon:before{top: -567px}.messageContainer .successful .icon{*background-position: -19px -444px}.messageContainer .email .icon{*background-position: -19px -485px}.messageContainer .pending .icon{*background-position: -19px -526px}.messageContainer .error .icon{*background-position: -19px -567px}.messageContainer .button{float:right}.pagination{height:100%;overflow:hidden}.pagination .next{float:left;text-align:left;margin-right:30px}.rtl .pagination .next{float:left;text-align:left}.pagination .prev{float:left;text-align:left}.rtl .pagination .prev{float:right;text-align:right}.confirmationChild .extraMargin{margin-bottom:27px}.confirmationParent .messageContainer{margin-bottom:41px}.confirmationParent iframe{width:100%}.confirmationParent .pagination{padding-top:26px}.confirmationChild body{background-color:#e7f1f5;padding:30px;padding-top:22px;color:#333534}.confirmationChild p.highlight{font-size:16px;font-weight:600;margin-bottom:23px}.confirmationChild table{line-height:24px;margin-bottom:22px}.confirmationChild table tr td{font-weight:600}.confirmationChild table tr td:first-child{width:240px;font-weight:400}.currencySelectMobile{display:none}.currencySelect .fieldRow.inline select{padding-right:0px;margin-bottom:20px}.currencySelect select, .currencySelect .fieldRow.inline select{width:240px}.currencySelect .inline{width:202px}@media only screen and (max-width: 959px){.messageContainer .icon{width:35px;height:35px}.messageContainer .icon:before{left: -25px}.messageContainer .successful .icon:before{top: -608px}.messageContainer .email .icon:before{top: -643px}.messageContainer .pending .icon:before{top: -678px}.messageContainer .error .icon:before{top: -713px}.messageContainer .successful .icon{*background-position: -25px -608px}.messageContainer .email .icon{*background-position: -25px -643px}.messageContainer .pending .icon{*background-position: -25px -678px}.messageContainer .error .icon{*background-position: -25px -713px}}@media only screen and (min-width: 768px) and (max-width: 959px){.noDesktop{display:block}.noMobile{display:block}.noTablet{display:none}.messageContainer p{padding-left:48px;font-size:18px;line-height:24px}.rtl .messageContainer p{padding-left:0px;padding-right:48px}.currencySelect .customSelectElement, .currencySelect .styledSelect{width:180px}.currencySelect select, .currencySelect .fieldRow.inline select{width:180px}.currencySelect .inline{width:142px}}@media only screen and (max-width: 767px){.noDesktop{display:block}.noTablet{display:block}.noMobile{display:none}header{display:none}#loader{height:200px;width:280px;background-size:60px}.overlayMessage{left:20px;right:20px;width:auto;padding:20px 12px;margin:0}.currencySelect{display:none}.currencySelectMobile{display:block}.currencySelectMobile select, .currencySelectMobile .fieldRow.inline select{width:75px}.currencySelectMobile .fieldRow{float:right;margin-bottom:20px}.rtl .currencySelectMobile .fieldRow{float:left;margin-bottom:20px}.currencySelectMobile .styledSelect{width:75px !important;margin-right:4px}.rtl .currencySelectMobile .styledSelect{margin-left:4px}.rtl .currencySelectMobile span.styledSelect.inline{padding-left:0}p.notification{padding:13px 22px 13px 45px}.notification .icon{left:11px}.messageContainer p{min-height:31px;margin-bottom:13px;padding-left:47px;font-size:14px;font-weight:400;line-height:16px}.rtl .messageContainer p{padding-left:0;padding-right:47px}.messageContainer{margin-bottom:20px;clear:both}.messageContainer p strong, .messageContainer p b{font-weight:400}.messageContainer .last{margin-bottom:21px}.messageContainer a.button{float:none}.pagination{padding:0;display:table;width:100%}.pagination .next, .rtl .pagination .next{display:table-header-group;text-align:auto;float:none !important;width:100%}.pagination .prev, .rtl .pagination .prev{display:table-row-group;text-align:auto;width:100%;margin-top:13px;margin-bottom:18px}.pagination .prev:first-child{margin-top:13px;margin-bottom:18px}.confirmationParent .messageContainer{margin-bottom:28px}.confirmationParent .messageContainer p{font-weight:400}.confirmationParent iframe{width:100%}.confirmationParent .orderDetails table{width:100%;color:#333534;margin-bottom:21px}.confirmationParent .orderDetails thead{font-size:18px}.confirmationParent .orderDetails .total{font-weight:600}.confirmationParent .orderDetails td, .confirmationParent .orderDetails th{border-top:1px solid #e7f1f5;padding:11px 0}.confirmationParent .orderDetails thead td, .confirmationParent .orderDetails thead th{border-top:none}.confirmationParent .orderDetails th{text-align:left}.confirmationParent .orderDetails td{text-align:right}.confirmationParent .orderDetails .discountRow{color:#EC008C}.confirmationParent .pagination{padding-top:26px}.confirmationParent .sideContent{display:none}.mobile.confirmationChild body{background-color:#e7f1f5;padding:12px;padding-top:22px;padding-bottom:24px;color:#333534}.mobile.confirmationChild p.highlight{font-size:14px}.mobile.confirmationChild .extraMargin{margin-bottom:0}.mobile.confirmationChild table{line-height:24px;margin-bottom:22px}.mobile.confirmationChild table tr td{font-weight:600;display:block}.confirmationChild table tr td:first-child{width:240px;font-weight:400}}.fieldRow.correctInput .icon, .fieldRow.error .icon{overflow:hidden}.fieldRow.correctInput .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");left: -33px;top: -2px;position:relative;float:left}.fieldRow.error .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");left: -33px;top: -61px;position:relative}.fieldRow.error .inlineError .icon{position:absolute;display:block;left: -1px;top: -2px;float:left}.fieldRow.error .inlineError .icon:before{content:url("../images/backgrounds/misc-elements-sprite.png");left: -33px;top: -61px;position:relative}.radioList label .icon{overflow:hidden}.radioList label .icon:before{left:16px;top: -68px;content:url("../images//label-bg.png");position:relative}.fieldRow.radioList.correctInput label .icon:before{left:16px;top: -68px;content:url("../images//label-bg.png");position:relative}.fieldRow.radioList.correctInput label.checked .icon:before{left:16px;top:0;content:url("../images//label-bg.png");position:relative}.radioList label.checked .icon:before{left:16px;top:0;content:url("../images//label-bg.png");position:relative}.checkbox label .icon{overflow:hidden}.checkbox label .icon:before{top: -265px;content:url("../images//label-bg.png");position:relative}.checkbox.hover .icon:before, .checkbox.focus .icon:before{top: -300px;content:url("../images//label-bg.png")}.checkbox label.checked .icon:before{top: -265px;left: -30px;content:url("../images//label-bg.png")}.checkbox.hover label.checked .icon:before, .checkbox.focus label.checked .icon:before{top: -300px;left: -30px;content:url("../images//label-bg.png")}.checkbox.error label .icon:before{top: -395px;left:0;content:url("../images//label-bg.png")}.checkbox.error.hover label .icon:before, .checkbox.error.focus label .icon:before{top: -427px;left:0;content:url("../images//label-bg.png")}.dropdownArrow{position:absolute;display:block;width:100%;text-align:right}.dropdownArrow:before{content:url("../images/backgrounds/misc-elements-sprite.png");right:4px;top: -61px;position:relative;width:100%}span.hasLogo .dropdownArrow:before, span.hasFlag .dropdownArrow:before{content:url("../images/backgrounds/misc-elements-sprite.png")}.currencySelect .styledSelect.inline .dropdownArrow:before{content:url("../images/backgrounds/misc-elements-sprite.png")}.currencySelectMobile .styledSelect.inline .dropdownArrow:before{top: -61px;content:url("../images/backgrounds/misc-elements-sprite.png")} @media only screen and (max-width: 767px){.radioList label .icon:before{left:16px;top: -202px}.radioList label.checked .icon:before{left:16px;top: -142px;position:relative}}button{font-family:inherit}.fieldRow label{padding-bottom:8px}.shortInputsWrapper{padding-bottom:20px;overflow:hidden}.shortInputsWrapper label{margin-bottom:0}.fieldRow{position:relative;padding:0 0 20px 0;clear:both;z-index:5}.fieldRow.genericMessageContainer{position:absolute;display:none;z-index:11}.fieldRow.genericMessageContainer.error .arrow{display:block;left:9px;top:0}.fieldRow.genericMessageContainer.error .message.error{display:block;left:29px;top:0}.fieldRow.genericMessageContainer.tip .arrow{display:block;left:10px;top:0}.fieldRow.genericMessageContainer.tip .message.tip{display:block;left:29px;top:0}.shortInputsWrapper.error .fieldRow{padding:0}.fieldRow.select{min-height:61px}.fieldRow.active{z-index:10}.fieldRow:last-child{}.fieldRow label{display:block;float:none}.fieldRow input{position:relative;width:253px;height:33px;line-height:33px;padding:1px 10px;border:1px solid #00AFF0;margin:1px;font-size:14px;background:transparent;outline:none}.fieldRow input:focus, .fieldRow input:hover{border:2px solid #00AFF0;margin:0}.error input:focus, .error input:hover{margin:0;border:2px solid #E81123}.correctInput input:focus, .correctInput input:hover, .shortInput.correctInput input:focus, .shortInput.correctInput input:hover{margin:0;border:2px solid #00AFF0}.sideContent .fieldRow:last-child{}.shortInput input{width:70px}.error input, .correctInput input{width:228px;padding:1px 35px 1px 10px}.rtl .error input, .rtl .correctInput input{width:228px;padding:1px 10px 1px 35px}.shortInput.error input, .shortInput.correctInput input{width:46px}.fieldRow .icon{position:absolute;width:30px;height:30px;top:32px;*background-image:url("../images/backgrounds/misc-elements-sprite.png")}.fieldRow .icon{left:242px}.rtl .fieldRow .icon{right:242px}.fieldRow.shortInput .icon{left:61px}.fieldRow.shortInput .icon{right:61px}.fieldRow.error .icon, .fieldRow.correctInput .icon{display:inline}form .correctInput .icon{background-position: -33px -2px}form .shortInput.correctInput .icon{background-position: -32px -2px}form .error .icon{background-position: -34px -62px}form .error input{border:1px solid #E81123}form .disabled input{cursor:not-allowed;color:#BDD1DC;border:1px solid #e4eef2 !important;margin:0}.fieldRow .message, .shortInputsWrapper .message{display:none;position:absolute;min-width:270px;padding:7px 19px 10px;line-height:18px;zoom:1;z-index:2;overflow:hidden}.fieldRow .message{left:300px;top:26px}.rtl .fieldRow .message{right:300px}.fieldRow .message strong, .shortInputsWrapper .message strong{font-weight:600}.fieldRow .message strong, .fieldRow .message span, .shortInputsWrapper .message strong{display:block;padding-bottom:6px}.fieldRow .message span:last-child{padding-bottom:0}.fieldRow.shortInput .message{left:120px}.fieldRow.select.shortInput .message{left:140px}.rtl .fieldRow.shortInput .message{right:120px}.rtl .fieldRow.select.shortInput .message{right:140px}.fieldRow.inlineSelect{float:left;margin-right:29px}.mobile .fieldRow.inlineSelect{padding-bottom:0}.shortInputsWrapper .fieldRow{padding-bottom:0}.shortInputsWrapper.shortInputerror{padding-bottom:20px}.mobile .shortInputsWrapper.shortInputerror{padding-bottom:0}.fieldRow.noClear{clear:none}.fieldRow.noRightMargin{margin-right:0}.fieldRow .arrow{position:absolute;width:30px;height:30px;top:25px;background-image:url("../images/backgrounds/misc-elements-sprite.png");background-position:0 0;display:none}.fieldRow .arrow::before{content:"";display:block;width:14px;height:14px;background-color:#d9f3fD;border-color:#d9f3fd;border-style:solid;border-left-width:1px;border-top-width:1px;border-right-width:0px;border-bottom-width:0px;left:25px;top:13px;position:relative;-webkit-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);-moz-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);-ms-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);-o-transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);transform:translate(-12px, 0px) rotate(-45deg) skew(10deg, 10deg);z-index:3}.rtl .fieldRow.shortInput.error .arrow{right:96px}.rtl .fieldRow.shortInput.tip .arrow{right:97px}.fieldRow.select.shortInput.error .arrow{background-position: -32px -85px;left:120px}.rtl .fieldRow.select.shortInput.error .arrow{background-position: -2px -85px}.fieldRow.shortInput.tip .arrow{background-position: -32px -115px}.fieldRow.error .message.error{display:none;background-color:#F6D8DC;min-width:230px;padding:10px 20px 11px 20px}.fieldRow.error .arrow::before{background-color:#F6D8DC;border-color:#F6D8DC}.select.error .message.error{padding:9px 20px 10px 20px}.fieldRow.combinedError{display:none}.fieldRow.active.combinedError{display:block}.fieldRow.error .arrow{display:none;background-position: -32px -85px;left:280px}.fieldRow.short.error .arrow, .fieldRow.shortInput.error .arrow{left:100px}.fieldRow.dualInput.error .arrow{left:280px}.rtl .fieldRow.short.error .arrow{right:99px}.rtl .fieldRow.dualInput.error .arrow{right:280px}.rtl .fieldRow.select.short.error .arrow{right:116px}.rtl .fieldRow.select.dualInput.error .arrow{right:277px}.rtl .fieldRow.error .arrow{display:none;background-position: -2px -85px;right:277px}.fieldRow.error.active .message.error, .fieldRow.error.active .arrow{display:block}.fieldRow.tip .message.tip{background-color:#D9F3FD;min-width:230px;padding:9px 20px 10px 20px;display:none}.fieldRow.tip .arrow{background-position: -32px -115px;left:280px;display:none}.rtl .fieldRow.tip .arrow{background-position: -2px -115px;right:277px;display:none}.fieldRow.tip.active .arrow{display:block}.fieldRow.tip.active .message.tip{display:block}.radioList{font-weight:600;font-size:36px !important;padding-bottom:0px}.radioList li.radioLink{height:23px;padding-top:6px;line-height:23px}.radioList .radioLink a{padding:0;font-size:16px;line-height:23px;font-weight:400;vertical-align:top}.radioList label{position:relative;display:block;min-height:71px;line-height:71px;padding:0 10px 0 60px;border-bottom:solid 1px #e7f1f5;cursor:pointer;cursor:hand;background-color:#fff;font-weight:400;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.rtl .radioList label{padding:0 60px 0 10px}.radioList ul{padding-left:2px;padding-right:2px;padding-top:1px;padding-bottom:1px}.radioList ul.focus{padding:0px}.radioList ul.focus li label{border-color:#e4eef2;border-style:solid}.radioList ul.focus li label{border-width:0px 2px 1px 2px}.radioList ul.focus li.first label{border-width:2px 2px 1px 2px;border-bottom-color:#E7F1F5}.radioList ul.focus li.last label{border-width:0px 2px 2px 2px;border-bottom-color:#E7F1F5}.radioList ul.focus li.one label{border-width:2px 2px 2px 2px;border-bottom-color:#E7F1F5}.radioList ul.focus li.radioLink a{border:none;padding-left:2px}.rtl .radioList ul.focus li.radioLink a{padding-right:2px}.radioList ul.focus li.radioLink{padding-top:5px;padding-bottom:1px}.radioList label.hover{background-color:#e4eef2}.radioList label.disabled:hover{background-color:white}.radioList label.disabled .logo{border-color:#e4eef2}.radioList label.disabled .logo{cursor:not-allowed;filter:alpha(opacity=40);opacity:0.4}.radioList label.disabled span.discount{cursor:not-allowed;filter:alpha(opacity=40);opacity:0.4}.radioList label.disabled .text, .radioList label.disabled .description{color:#BDD1DC}*html .radioList label{height:10px}.radioList label.disabled .radioUnavailable{float:right;margin-top: -30px;font-size:12px;line-height:19px;color:#E82E46;padding-bottom:5px}.paymentMethods label{padding-left:166px}.rtl .paymentMethods label{padding-right:166px}.radioList label input{position:absolute;border:none;top:50%;left: -2000px;margin-top: -15px}.rtl .radioList label input{right: -2000px;display:none;display:block\0/}*:first-child+html.rtl .radioList label input{display:none !important}.radioList label .icon{position:absolute;top:50%;left:0;width:60px;height:70px;margin: -36px 0 0 0;*background:url("../images//label-bg.png") no-repeat 16px -68px}.rtl .radioList label .icon{right:0}.radioList label.special .discount{padding-right:140px;background-image:url("../images/backgrounds/radio-special.png");background-repeat:no-repeat;background-position:140px 50%}.rtl .radioList label.special .discount{padding-right:140px;background-position: -130px 50%}.radioList label.special span.discount{position:absolute;display:table-cell;top:0;right:0;width:130px;height:100%;color:#fff}.rtl .radioList label.special span.discount{left:0;right:auto}.radioList label.special span.discount span{position:absolute;top:50%;*top:35px;right:0;display:block;width:95px;height:36px;margin: -18px 0 0 0;padding:0 10px 0 0;font-size:36px;line-height:36px;font-weight:400;text-align:right}.rtl .radioList label.special span.discount span{right:auto;left:0;padding:0 0 0 10px;text-align:left}.radioList label.checked{background-color:#00aff0;color:#fff}.radioList label.checked .icon{*background-position:16px 0}.radioList label.disabled{cursor:not-allowed}.radioList label.disabled .icon{cursor:not-allowed;background-position: -28px -68px}.radioList ul li:first-child label{border-top:solid 1px #e7f1f5}.paymentMethods .logo{position:absolute;display:block;top:50%;left:60px;width:83px;max-width:83px;max-height:47px;height:47px;line-height:47px;margin: -24px 0 0 0;border:1px solid #00aff0;background-color:#fff;overflow:hidden;background-position:50% 50%;background-repeat:no-repeat}.rtl .paymentMethods .logo{right:61px}.paymentMethods label.hover .logo{margin: -25px 0 0 -1px;border-width:2px}.rtl .paymentMethods label.hover .logo{margin: -25px -1px 0 0}.paymentMethods label.disabled:hover .logo{margin: -24px 0 0 0;border-width:1px}.paymentMethods .logo img{display:inline-block;width:100%;vertical-align:text-bottom;-ms-interpolation-mode:bicubic}.withDescription span.text, .withDescription span.description{display:block;line-height:20px;font-size:16px;font-weight:600;color:#666;overflow:hidden;text-overflow:ellipsis}.withDescription span.text{padding-top:12px;color:#333534}.withDescription span.description{padding-bottom:12px}.withDescription .checked span.text, .withDescription .checked span.description{color:#fff}#termsOfService{display:none}.checkbox{position:relative}.checkbox input, .error .checkbox input{position:absolute;top:0;left: -2000px;vertical-align:top}.rtl .checkbox input, .rtl .error .checkbox input{right: -2000px;display:none;display:block\0/}*:first-child+html.rtl .checkbox input{display:none !important}.checkbox label{width:auto;font-size:16px;padding-left:35px;overflow:hidden}.rtl .checkbox label{padding-right:35px}.checkbox label.disabled{cursor:not-allowed;color:#BDD1DC}.checkbox label .icon{position:absolute;top:0;left:0;float:left;width:25px;height:25px;margin:0 0 0 0;*background:url("../images//label-bg.png") no-repeat 0 -265px}.rtl .checkbox label .icon{right:0;float:right}.checkbox label.checked .icon{*background-position: -30px -265px}.checkbox.error label .icon{*background-position:0 -395px}.checkbox.error.hover label .icon, .checkbox.error.focus label .icon{*background-position:0 -427px}.checkbox label.disabled .icon{*background-position:0 -265px}.checkbox.hover label .icon, .checkbox.focus label .icon{*background-position: -0 -300px}.checkbox.hover label.checked .icon, .checkbox.focus label.checked .icon{*background-position: -30px -300px}.checkbox label.disabled .icon, .checkbox.hover label.disabled .icon{*background-position: -60px -265px}.checkbox.checked label.disabled .icon{*background-position: -90px -265px}.checkbox label strong{display:block;padding:2px 0 5px;font-weight:600;font-size:16px}.checkbox label .text{font-weight:400;font-size:16px;line-height:20px}.checkbox .inlineError{display:none}.checkbox.error .inlineError{padding-left:35px;color:#e81123;display:block;padding-top:3px;position:relative}.rtl .checkbox.error .inlineError{padding-left:0px;padding-right:35px}select.customSelectElement{position:relative;float:left;z-index:10;width:269px;height:35px;line-height:35px;margin:1px;z-index:10;opacity:0;-moz-opacity:0;filter:alpha(opacity=0);-khtml-appearance:none}.rtl select.customSelectElement{float:right}*html .error select{color:#f00}select.short{width:119px}.fieldRow.inline select{width:auto}select[disabled=disabled]{cursor:not-allowed}span.styledSelect{position:absolute;top:auto;float:left;left:0;width:242px;padding-right:25px;height:33px;line-height:33px;text-indent:11px;*background:#fff url("../images/backgrounds/misc-elements-sprite.png") no-repeat right -273px;cursor:default;z-index:1;border:solid 1px #00aff0;font-size:16px;font-weight:400;overflow:hidden;margin:1px;white-space:nowrap;text-overflow:ellipsis}.rtl span.styledSelect{float:right;right:0;background-position: -31px -273px}span.styledSelect.short{width:92px}.short .customSelectElement{width:92px}span.styledSelect.inline{display:inline-block;font-size:16px;padding-right:35px;border:2px solid #fff;color:#00aff0}.rtl span.styledSelect.inline{padding-right:0;padding-left:35px}.fieldRow.inline.hover span.styledSelect{text-decoration:underline;border:1px solid #fff;margin:2px}.fieldRow.inline.active span.styledSelect{margin:1px;border:solid 2px #00aff0}span.hasLogo,span.hasFlag{text-indent:60px}.hasLogo .logo, .hasFlag .flag{display:block;position:absolute;top:4px;height:23px;border:1px solid #A2C5D3}.hasFlag .flag:before{content:url("../images/flags/country-flags-37x23.png");left: -60px}.hasFlag .flag{*background-image:url("../images/flags/country-flags-37x23.png");left:9px;width:37px;overflow:hidden}.hasLogo .logo{background-size:100% 100%;background-repeat:no-repeat;left:7px;width:41px}.rtl .hasLogo .logo{right:12px}.fieldRow .styledSelect.active, .fieldRow .styledSelect.hover{margin:0;border:solid 2px #00aff0}.fieldRow .styledSelect.inline.active, .fieldRow .styledSelect.inline.hover{margin:1px}.fieldRow.error .styledSelect.active, .fieldRow.error .styledSelect.hover{margin:0;border:solid 2px #e81123}.error span.styledSelect{border:1px solid #e81123;background-position:right -371px;margin:1px}.rtl .error span.styledSelect{background-position: -8px -401px}.disabled span.styledSelect{border:1px solid #e4eef2;background-position:right -340px;color:#BDD1DC}.rtl .disabled span.styledSelect{background-position: -31px -340px}.short.disabled span.styledSelect{border:1px solid #e4eef2;color:#BDD1DC}.dualInput.short span.styledSelect, .dualInput.short select{width:130px;top:0}.dualInput .second, .dualInput .first{position:absolute}.dualInput .second{left:143px}.rtl .dualInput select{float:none}.rtl .dualInput .second{right:138px}@media only screen and (min-width: 768px){.fieldRow .message{border:1px solid #d9f3fD}.fieldRow.error .message{border:1px solid #F6D8DC}}@media only screen and (max-width: 767px){.fieldRow.inline.hover span.styledSelect{text-decoration:underline;border:1px solid #fff;margin:1px}.radioList li.radioLink{height:24px;padding-top:19px;line-height:24px}.radioList ul.focus li.radioLink{padding-top:18px}.radioList{padding-bottom:18px;font-size:24px;color:#333534}.radioList label{min-height:57px;line-height:57px;padding-left:61px}.rtl .radioList label{padding-right:61px}.radioList label .icon{width:52px;height:56px;margin-top: -28px;*background-position:16px -202px}.radioList label.checked .icon{*background-position:16px -142px}.radioList label.disabled .icon{background-position: -27px -202px}.radioList label.special{padding-right:80px}.rtl .radioList label.special{padding-left:80px;padding-right:61px}.radioList label.special span.discount{width:80px;background-image:url("../images/backgrounds/radio-special-mobile.png")}.rtl .radioList label.special span.discount{background-position: -80px 50%}.radioList label.special span.discount span{width:65px;height:24px;margin: -12px 0 0 0;padding:0 5px 0 0;font-size:22px;line-height:24px;font-weight:600}.rtl .radioList label.special span.discount span{padding:0 0 0 5px}.paymentMethods label{min-height:61px;padding-left:117px}.rtl .paymentMethods label{padding-right:117px}.paymentMethods label .logo{left:52px;width:54px;height:37px;line-height:37px;margin-top: -19px}.rtl .paymentMethods label .logo{right:52px;left:auto}.paymentMethods label.hover .logo, .rtl .paymentMethods label.hover .logo{margin-top: -20px}.paymentMethods label.disabled.hover .logo, .rtl .paymentMethods label.disabled.hover .logo{margin-top: -19px}.paymentMethods label .logo img{display:inline-block;vertical-align:text-bottom}.withDescription span.text, .withDescription span.description{font-size:14px}.fieldRow .tip, .tip .arrow, .error .arrow{display:none !important}.fieldRow .message, .shortInputsWrapper .message{width:auto;position:relative;left:0;top:10px;clear:both;margin-top:1px;margin-bottom:10px;padding:0;background:none !important;color:#e81123}.rtl .fieldRow .message, .rtl .shortInputsWrapper .message{right:0}.fieldRow .message strong{padding-bottom:0}.fieldRow.shortInput .message, .fieldRow.shortInput.error .arrow{left:0}.rtl .fieldRow.shortInput .message, .rtl .fieldRow.shortInput.error .arrow{right:0}.fieldRow.error .message.error{padding-left:0;padding-top:0;width:auto;display:block;padding:0;width:100%;visibility:visible;opacity:1}.fieldRow.select span.error.message{display:none}.fieldRow.select.error span.error.message{display:block}.fieldRow.shortInput.error .arrow{background-position: -177px -147px}.fieldRow.shortInput.tip .arrow{background-position: -177px -166px}.fieldRow.select.shortInput .message{left:auto}.checkbox{}form .checkbox input{position:absolute;left: -2000px;margin:0;padding:0}.rtl form .checkbox input{right: -2000px}.checkbox label{font-size:18px;line-height:21px}.checkbox label .icon{background-position:0px -336px}.checkbox label.checked .icon{background-position: -30px -336px}.checkbox.error label .icon{background-position:0 -460px}.checkbox.error.hover label .icon, .checkbox.error.focus label .icon{background-position:0px -488px}.checkbox label.disabled .icon{background-position:0 -265px}.checkbox.hover label .icon, .checkbox.focus label .icon{background-position: -0px -367px}.checkbox.hover label.checked .icon, .checkbox.focus label.checked .icon{background-position: -30px -367px}.checkbox label.disabled .icon, .checkbox.hover label.disabled .icon{background-position: -60px -336px}.checkbox.checked label.disabled .icon{background-position: -90px -336px}.checkbox label strong{padding:2px 0 5px 0;font-size:14px;line-height:16px}.checkbox label .text{font-size:14px;line-height:16px}.fieldRow .customSelectElement, .fieldRow .styledSelect{width:242px;padding-right:0;margin:1px}.fieldRow.error .styledSelect{margin:1px}.fieldRow.short .customSelectElement, .fieldRow.short .styledSelect,{-webkit-box-sizing:inherit;-moz-box-sizing:inherit;-ms-box-sizing:inherit;box-sizing:inherit;height:33px;width:100%}.fieldRow.inline .customSelectElement, .fieldRow.inline .styledSelect{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;-ms-box-sizing:content-box;box-sizing:content-box;height:33px;margin:0px;padding-right:0px;width:100%}.fieldRow.inline.active span.styledSelect{margin:0px}.fieldRow.short.active .styledSelect,{margin:0px}.fieldRow.short.error .styledSelect:active{margin:1px}.mobile .genericMessageContainer{display:none}.shortInputsWrapper{padding-bottom:20px}.shortInputerror{padding-bottom:0}.fieldRow .combinedError{margin-top:35px}}.rtl .radioList label .icon:before{top: -68px;left:77px}.rtl .radioList label.checked .icon:before{top:0px;left:77px}.rtl h2.yourOrder{float:right}.rtl .dropdownArrow{text-align:left}.rtl .dropdownArrow:before{right:auto;left: -32px}.rtl .checkbox .icon:before{direction:rtl;top: -265px}.rtl .checkbox label .icon:before{right:auto;left:95px}.rtl .checkbox label.checked .icon:before{right:auto;left:65px}.rtl .checkbox.hover .icon:before, .checkbox.focus .icon:before{top: -300px}.rtl .messageContainer .icon:before{left:0}.rtl button.tooltip:before{left:282px}.rtl button.tooltip:hover:before, .rtl button.tooltip:focus:before{left:264px}.rtl button.tooltip:active:before{left:246px}.rtl .tooltip-message .arrow::before{transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-o-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-ms-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-moz-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg);-webkit-transform:translate(20px, -16px) rotate(45deg) skew(10deg, 10deg)}.rtl .messageContainer p{padding-left:0;padding-right:60px}.rtl .errorIcon{left:auto;right:0}.rtl .vatTooltip:before{position:relative;left:282px;top:0px}.rtl .vatTooltip:hover, .rtl .vatTooltip:focus{margin: -1px 6px 1px 6px}.rtl .vatTooltip:hover:before, .rtl .vatTooltip:focus:before{left:264px;top:0}@media only screen and (max-width: 959px){.rtl .messageContainer .icon:before{left:0}}@media only screen and (max-width: 767px){.rtl .radioList label .icon{margin: -36px 0 0 0}.rtl #orderDetails table.open tr.totalRow th .yourOrder .icon:before{left:auto;right: -75px}.rtl #orderDetails table thead tr.totalRow th .yourOrder .icon:before{left:auto;right: -165px}}.logo,.GLOBAL-COLLECT-OFFLINE{background-image:url("../images/methods/GLOBAL-COLLECT-OFFLINE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-OFFLINE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-OFFLINE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.AMEX-SKYPE{background-image:url("../images/methods/AMEX-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/AMEX-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/AMEX-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-BPH-MONEYBOOKERS{background-image:url("../images/methods/BANK-BPH-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-BPH-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-BPH-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-FORTIS-MONEYBOOKERS{background-image:url("../images/methods/BANK-FORTIS-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-FORTIS-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-FORTIS-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-ING-MONEYBOOKERS{background-image:url("../images/methods/BANK-ING-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ING-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ING-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-INVEST-MONEYBOOKERS{background-image:url("../images/methods/BANK-INVEST-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-INVEST-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-INVEST-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-KREDYT-MONEYBOOKERS{background-image:url("../images/methods/BANK-KREDYT-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-KREDYT-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-KREDYT-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-LUKAS-MONEYBOOKERS{background-image:url("../images/methods/BANK-LUKAS-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-LUKAS-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-LUKAS-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-MILLENIUM-MONEYBOOKERS{background-image:url("../images/methods/BANK-MILLENIUM-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-MILLENIUM-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-MILLENIUM-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-NORDEA-MONEYBOOKERS{background-image:url("../images/methods/BANK-NORDEA-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-NORDEA-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-NORDEA-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-OCHRONY-MONEYBOOKERS{background-image:url("../images/methods/BANK-OCHRONY-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-OCHRONY-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-OCHRONY-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-PEKAO-MONEYBOOKERS{background-image:url("../images/methods/BANK-PEKAO-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PEKAO-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PEKAO-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-PKO-BP-MONEYBOOKERS{background-image:url("../images/methods/BANK-PKO-BP-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PKO-BP-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-PKO-BP-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BANK-ZACHODNI-WBK-MONEYBOOKERS{background-image:url("../images/methods/BANK-ZACHODNI-WBK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ZACHODNI-WBK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BANK-ZACHODNI-WBK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.BGZ-INTEGRUM-MONEYBOOKERS{background-image:url("../images/methods/BGZ-INTEGRUM-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BGZ-INTEGRUM-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/BGZ-INTEGRUM-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CARTEBLEUE-SKYPE{background-image:url("../images/methods/CARTEBLEUE-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CARTEBLEUE-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CARTEBLEUE-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CASHU{background-image:url("../images/methods/CASHU.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CASHU.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CASHU.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CB-SKYPE{background-image:url("../images/methods/CB-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CB-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CB-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.CITYBANK-MONEYBOOKERS{background-image:url("../images/methods/CITYBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CITYBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/CITYBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.DEUTCHEBANK-MONEYBOOKERS{background-image:url("../images/methods/DEUTCHEBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DEUTCHEBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DEUTCHEBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.DINERS-SKYPE{background-image:url("../images/methods/DINERS-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DINERS-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/DINERS-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.EBETALNING-SSL{background-image:url("../images/methods/EBETALNING-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/EBETALNING-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/EBETALNING-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.ECMC-SKYPE{background-image:url("../images/methods/ECMC-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ECMC-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ECMC-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.ELV-MONEYBOOKERS{background-image:url("../images/methods/ELV-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ELV-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ELV-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.ENETS-SSL{background-image:url("../images/methods/ENETS-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ENETS-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/ENETS-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-EPS-AT{background-image:url("../images/methods/GLOBAL-COLLECT-EPS-AT.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-EPS-AT.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-EPS-AT.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-GIRO{background-image:url("../images/methods/GLOBAL-COLLECT-GIRO.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-GIRO.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-GIRO.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-BOLETO{background-image:url("../images/methods/GLOBAL-COLLECT-BOLETO.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-BOLETO.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-BOLETO.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-IDEAL{background-image:url("../images/methods/GLOBAL-COLLECT-IDEAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-IDEAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-IDEAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-ING-BE{background-image:url("../images/methods/GLOBAL-COLLECT-ING-BE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-ING-BE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-ING-BE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-PAYSAFE{background-image:url("../images/methods/GLOBAL-COLLECT-PAYSAFE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-PAYSAFE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-PAYSAFE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-SOFORT{background-image:url("../images/methods/GLOBAL-COLLECT-SOFORT.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-SOFORT.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-SOFORT.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.GLOBAL-COLLECT-WEBMONEY{background-image:url("../images/methods/GLOBAL-COLLECT-WEBMONEY.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-WEBMONEY.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/GLOBAL-COLLECT-WEBMONEY.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.HANSABANK-SSL{background-image:url("../images/methods/HANSABANK-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/HANSABANK-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/HANSABANK-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.INTELIGO-MONEYBOOKERS{background-image:url("../images/methods/INTELIGO-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/INTELIGO-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/INTELIGO-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.JCB-SKYPE{background-image:url("../images/methods/JCB-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/JCB-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/JCB-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MACH-PAYBYMOBILE,.MACH-PAYBYMOBILE-US{background-image:url("../images/methods/MCB.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MCB.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MCB.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MAESTRO-MONEYBOOKERS{background-image:url("../images/methods/MAESTRO-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MAESTRO-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MAESTRO-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MBANK-MONEYBOOKERS{background-image:url("../images/methods/MBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MONEYBOOKERS{background-image:url("../images/methods/MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.MULTIBANK-MONEYBOOKERS{background-image:url("../images/methods/MULTIBANK-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MULTIBANK-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/MULTIBANK-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYBYCASH{background-image:url("../images/methods/PAYBYCASH.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYBYCASH.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYBYCASH.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYPAL{background-image:url("../images/methods/PAYPAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYPALBA{background-image:url("../images/methods/PAYPAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.PAYPALPAP{background-image:url("../images/methods/PAYPAL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/PAYPAL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.POLI-MONEYBOOKERS{background-image:url("../images/methods/POLI-MONEYBOOKERS.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/POLI-MONEYBOOKERS.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/POLI-MONEYBOOKERS.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.QIWI-SSL{background-image:url("../images/methods/QIWI-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/QIWI-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/QIWI-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.SMODE{background-image:url("../images/methods/SMODE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/SMODE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/SMODE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.UHISBANK-SSL{background-image:url("../images/methods/UHISBANK-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UHISBANK-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UHISBANK-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.UKASH{background-image:url("../images/methods/UKASH.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UKASH.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/UKASH.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.VISA-SKYPE{background-image:url("../images/methods/VISA-SKYPE.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SKYPE.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SKYPE.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.VISA-SSL{background-image:url("../images/methods/VISA-SSL.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SSL.png',sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/VISA-SSL.png',sizingMethod='scale')";-ms-interpolation-mode:bicubic}.YANDEX-MONEY{background-image:url("../images/methods/YANDEX-MONEY.png");background-size:contain;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/YANDEX-MONEY.png', sizingMethod='scale');-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/i/payment-flow/images/methods/YANDEX-MONEY.png', sizingMethod='scale')";-ms-interpolation-mode:bicubic}.contextNotification{text-align:left;background:#E7F1F5;padding:20px}.contextNotification .arrow{margin-top: -27px;width:18px;height:12px;display:inline-block;position:absolute;background:url("../common/images/icons-sprite.png") no-repeat -128px 0;right:40px;z-index:10}.sideContent tr.alertRow{position:absolute;margin-top: -15px;z-index:11}.sideContent tr.alertRow .contextNotification .arrow{right:15px;margin-top: -32px;background:url("../common/images/icons-sprite.png") no-repeat -90px 0}.sideContent .contextNotification{background:#D9F3FD}.sideContent .contextNotification p{font-size:14px}.contextNotification.tablet,.contextNotification.mobile{display:none}.contextNotification.desktop{display:block}.contextNotification.desktop.hidden{display:none}@media only screen and (min-width: 768px) and (max-width: 959px){.contextNotification.desktop,.contextNotification.mobile{display:none}.contextNotification.tablet{display:block}.contextNotification.tablet.hidden{display:none}}@media only screen and (max-width: 767px){.contextNotification.desktop,.contextNotification.tablet{display:none}.contextNotification.mobile{margin: -25px 0 20px 0;display:block}.contextNotification.mobile.hidden{display:none}}@-moz-keyframes spin{from{top:0;left:0}to{top: -5040px;left:0}}@-webkit-keyframes spin{from{top:0;left:0}to{top: -5040px;left:0}}@-o-keyframes spin{from{top:0;left:0}to{top: -5040px;left:0}}@-ms-keyframes spin{from{top:0;left:0}to{top: -5040px;left:0}}@keyframes spin{from{top:0;left:0}to{top: -5040px;left:0}}@-moz-keyframes spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@-webkit-keyframes spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@-o-keyframes spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@-ms-keyframes spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}@keyframes spinMobile{from{top:0;left:0}to{top: -4032px;left:0}}.spinner{height:280px !important;margin:auto;overflow:hidden;position:relative;width:280px !important}.spinnerText{position:relative;text-align:center;top:210px}.spinner.white .spinnerText{color:#FFF}.spinner.blue .spinnerText{color:#333534;outline:none}.spinner.pngSequence{overflow:visible}.spinnerPosition{position:absolute;margin:60px 80px;width:120px;height:120px}.spinnerMask{overflow:hidden}.spinnerMask.spin .spinnerSprite:before{-moz-animation:spin 1.6s steps(42) infinite;-webkit-animation:spin 1.6s steps(42) infinite;-o-animation:spin 1.6s steps(42) infinite;-ms-animation:spin 1.6s steps(42) infinite;animation:spin 1.6s steps(42) infinite;width:120px;height:120px}.spinnerSprite{position:relative;vertical-align:top;width:120px;height:120px}.white .spinnerSprite{*background:url("../images/spinner/spinner-large-white.png") no-repeat}.white .spinnerSprite:before{display:inline-block;content:url("../images/spinner/spinner-large-white.png");position:relative}.blue .spinnerSprite{*background:url("../images/spinner/spinner-large-blue.png") no-repeat}.blue .spinnerSprite:before{display:inline-block;content:url("../images/spinner/spinner-large-blue.png");position:relative}@media only screen and (max-width: 767px){.spinner{-moz-box-sizing:border-box;box-sizing:border-box;height:240px !important;width:240px !important}.spinnerAnimation{height:440px;left: -130px;top: -130px;-webkit-transform:scale(0.4);-moz-transform:scale(0.4);-o-transform:scale(0.4);transform:scale(0.4)}.spinnerPosition{margin:50px 70px;width:96px;height:96px}.spinnerMask.spin .spinnerSprite:before{-moz-animation:spinMobile 1.6s steps(42) infinite;-webkit-animation:spinMobile 1.6s steps(42) infinite;-o-animation:spinMobile 1.6s steps(42) infinite;-ms-animation:spinMobile 1.6s steps(42) infinite;animation:spinMobile 1.6s steps(42) infinite;width:96px;height:96px}.spinnerSprite{width:96px;height:96px}.white .spinnerSprite{*background:url("../images/spinner/spinner-small-white.png") no-repeat}.white .spinnerSprite:before{content:url("../images/spinner/spinner-small-white.png")}.blue .spinnerSprite{*background:url("../images/spinner/spinner-small-blue.png") no-repeat}.blue .spinnerSprite:before{content:url("../images/spinner/spinner-small-blue.png")}.spinnerText{top:180px}}#Overlay-bg{display:none;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#e7f1f5;opacity:0.9;filter:alpha(opacity=90);z-index:997}.Overlay-hidden-content{display:none !important}.Overlay-message{display:none;position:absolute;top:200px;left:50%;width:296px;padding:28px 34px;margin:0 0 0 -180px;background-color:#fff;z-index:998;border:2px solid white}@media only screen and (max-width: 767px){.Overlay-message{left:20px;right:20px;width:auto;padding:20px 12px;margin:0}}.invisible, body.errorPage .sideContent{opacity:0;height:0;padding:0}h3.title-h3{margin-bottom:25px}.mainContent{padding-top:18px}.checkbox label strong{font-weight:400}@media only screen and (max-width: 767px){#container,.mainContent{width:100%}header#skypeCredit{display:none}.mainContent{padding:0}.pageView{margin:1px 20px 20px 20px}#loader{width:100%;margin:0 auto}.currencySelectMobile .fieldRow.select{min-height:41px;margin-bottom:0px}.wpfc-btn.primaryCta.disabled{margin-left:0}.wpfc-btn,.wpfc-btn.small,.wpfc-btn.disabled{display:block !important;max-width:100% !important}h2.yourOrder{float:left;margin-bottom:0px !important}h3.title-h3{margin-top:20px}.fakeHeader h3, .fakeHeader .title-h3{margin-bottom:5px}}button.tooltip{background:transparent;padding:0;width:20px;height:20px;vertical-align:middle;border:solid 1px #FFF;border-radius:15px;cursor:pointer;overflow:hidden;margin:0px 5px}button.tooltip:before{position:relative;content:url("../images/icons/icons-sprite.png");left:0}button.tooltip:hover:before,button.tooltip:focus:before{left: -18px}button.tooltip:active:before{left: -36px}button.tooltip::-moz-focus-inner{border:0;padding:0}#label-checkbox-autoRecharge strong{display:block;position:relative}.tooltip-message{display:none;position:relative;top:auto;right:0;left:0;margin:8px 0 0 0;padding:0;background-color:#D9F3FD;font-size:14px;line-height:18px;font-weight:400;text-align:left;z-index:100}.tooltip-message>span{display:block;padding:13px 30px}.tooltip-message.visible{display:block}.tooltip-message .arrow{display:block;position:absolute;top: -12px;width:18px;height:12px;z-index: -190;background:url("../images/icons/icons-sprite.png") no-repeat;background-position: -90px 0}.tooltip-message .arrow::before{content:"";display:block;width:14px;height:14px;background-color:#D9F3FD;border-color:#D9F3FD;border-style:solid;border-left-width:1px;border-top-width:1px;border-right-width:0px;border-bottom-width:0px;top:22px;right:20px;position:relative;-webkit-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);-moz-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);-ms-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);-o-transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);transform:translate(-23px, -16px) rotate(45deg) skew(10deg, 10deg);border-right-width:0px;border-bottom-width:0px;z-index: -100} #wpfc-shop-modal{ position: absolute; display: block; background: url("../images/loader.gif") no-repeat scroll center center #ffffff; color: #333534; } .wpfc-btn.primaryCta { background-color: #7fba00; border-color: #7fba00; } .wpfc-btn { color: white; font-weight: 400; font-size: 20px; display: inline-block; height: 100%; cursor: pointer; overflow: visible; text-decoration: none; line-height: 24px; letter-spacing: -0.01em; -webkit-border-radius: 50px; -webkit-font-smoothing: subpixel-antialiased; -webkit-tap-highlight-color: rgba(0,0,0,0); -moz-border-radius: 50px; border-radius: 50px; border: 0; position: relative; border-width: 2px; border-style: solid; padding: 8px 0 11px 0; background-color: #FFF; cursor: hand; word-wrap: break-word; word-break: break-word; -ms-word-break: break-word; text-align: center; margin: 2px; } .wpfc-btn > span{ padding-left: 25px; padding-right: 25px; } .wpfc-btn.primaryNegativeCta { background-color: #FFF; color: #333534; border-color: #c0dce6 } .wpfc-btn.primaryDisableCta { background-color: #e4eef2; color: #333534; border-color: #c0dce6 } wp-fastest-cache/css/fonts/statics/flaticon.woff000064400000003264151435171370015773 0ustar00wOFF´ ˜FFTM˜jíUfGDEFx 4OS/2œFV/£KÑcmapøDJÀ#¾gasppÿÿglyfLPãËÃ{head0.6ƒ&±hhea`$ÙÜhmtxäƒPloca<ÜJmaxp| PºnameT敵Y‘post<3Gò8)xÚc`d``â#rç\âùm¾2p31€À…Ÿ¥ôÿëL Œ+\°4=Ð KxÚc`d``\ùÿ:ƒIFTÀPf¹xÚc`d```gØÄ ÀÄŒ 10Ÿv xÚc`db`œÀÀÊÀÁèØÆÀÀॿ2H2´0001°r2À‚ÉæšÂàð€á3ãÿôW2h…Arû çxÚcb€&Ö`áf…ÚxÚÝŠÁ À0Ãä^É}ô™Aºÿ Ù$ñ¥¥"0F xw!’Ǧé'Õ_ü‽gÐÈ¿ãë ¿ÈeÖ b{f˲è"ô(xÚ}“;ÝDÇçÌÓ3Ïx®Ç×»Y^{½ëK²\|ýˆV M¨ø‘R„†4))¨Û@Z ®èòRƒD )Wâ3Ѐäå8w—GƒeÙ3ÿ3sÎÿ&мyõüß@^'ù<&OÉsBNÛw¶íЇ®9ƒMÝ‹ ¬,Ë嬬۱’õ[ÐwÃØVª©W²ŒÕj=.·mß­›t”—e”ÿmŒ©›Øqó]èëUß.öË^JeÄ%uÙV*Û—`ô Êm[F5•û,/%x.lö¦?@Â…Hq?$Š)˃"S\éÔ}à57iæªà­áÚØ¼Z ¹á©õùa‘g©ÐÆ…Ãø>»Å˜šeÉ÷Qçè!G¬Tù¡É-Œ6oêé‹>WbúQ¨§,gPñpà³£…Ì¥ND²H=ðÀ%“…ÍAi®‡ø‰AK©‹Ì¿Â#fõؼÌÏçCxsÀ£Èô 9‰ÈŒgF󜳻eÞ¼(!W—”ÀŽ“SBàm qy¢B‡æA;Ì–6ýµ»ì8Ãåt/+Šlg¤ÒZíæ‡4»YšîÁw°Ã÷eVtV;·íŠ ÞÈŠéæ’Dü‹¡×È»ä!ù+×{jú¿9QÖ{Îa¬šÿ!eOX¿¬–ã0vçp¯R©æÝÍÆÃ5‡l9Û¯äºAuØT˜ Ñæé>çPµ¦ØÈ õ Q‘ó¼ZÂó:”éçkI…tåí<å6ËÃQ Î “úâVùûŒ°™uÔ T(‰š¹ÊX"­’QCÊ*Œ³4áÞYÆ´âŒzJ™”£©>9­§/OÖ{V¾ZœÃ# ™&RÇ,€Xp£”.]øX¨&å\ˆ@Oêú„2`¸€5Òõ§Hp`žjj8€äL`Õ #¸ayÈ ‡È©<_‘GÜòy,ý(g’N¥<„ª3¸ç9ò7æ‘Sy>#xâ;òXú/Z*zÖtlaÓV}³îDï8jöÁàõtõ¾­Ë`ìCör82,¥òB÷Ë‹j´P®h­¼†Wµê¶ý²óµËlQf‹ìo¸ÐÌscs[Ù®,¹ÒxÏN_—Q&,ÂÊù]£>¦(¯•Ÿéw=xxÚc`b@Œ è€,ÊÄÈÄÈÌÈÂÈÊ’\\l‘’Zœ]’_`È”UÌZœ›XT\|ßÿÿxÚc`d``àb `b`d`f`’,`¦;xÚc```d‚“ù† úÂÆÏR0H9wp-fastest-cache/css/fonts/statics/flaticon.eot000064400000005100151435171370015610 0ustar00@ ˜  LPDÎÄflaticonRegularVersion 1.0flaticon €PFFTMjíUf |GDEF4 \ OS/2/£KÑXVcmapÀ#¾ÈJgaspÿÿ TglyfãËÃ{$Pheadƒ&±Ü6hheaÙÜ$hmtxƒP°locaÜJmaxpPº8 nameµY‘t•postò8) GÄÎD_<õ бóбóÿש©ÿ×.·@LfGLfõ„ PfEd@ààÀÿÀ.©)((ƒD(àÿÿàÿÿ è"ô((ÿãÓŸ4Pl‘¶%2132654&+0#52132+0#'27#.54672&#""'73254'&54672&#""'73254'&54636&"7;5#"547654'654'&54;5#"#24&5435"54654+32+32/†  †þú††Ä  M    6    G f   7 &#þ‹#…þÉ‘            *     ÿà !%!";#";264&+&532654&!!àþ@           þ@À  þà 4   4  þà(ÿãÓŸ:a›#0#552132654&#"'732=7&'73254'&54672&#"+0#57674=+#"'&02132'&'&060327656'&'&'&54676200&'&#"¶†þú† þÏ )    õ†  †        y%#þŒ$' 7 Á=e     k& $##$ 'þû      ƒÿ×}©#";2654&3#"&4627#3eÊ  Ê ’FF)  ^ØØ© þ^  ¢ %þq  *A –+%· Øö   J3 ¥ À äflaticonflaticonRegularRegularFontForge 2.0 : flaticon : 13-12-2014FontForge 2.0 : flaticon : 13-12-2014flaticonflaticonVersion 1.0Version 1.0flaticonflaticoncss4desktop1jssmartÿÿɉo1бóбówp-fastest-cache/css/fonts/statics/flaticon.svg000064400000037076151435171370015641 0ustar00 wp-fastest-cache/css/fonts/statics/flaticon.ttf000064400000004630151435171370015625 0ustar00 €PFFTMjíUf |GDEF4 \ OS/2/£KÑXVcmapÀ#¾ÈJgaspÿÿ TglyfãËÃ{$Pheadƒ&±Ü6hheaÙÜ$hmtxƒP°locaÜJmaxpPº8 nameµY‘t•postò8) GÄÎD_<õ бóбóÿש©ÿ×.·@LfGLfõ„ PfEd@ààÀÿÀ.©)((ƒD(àÿÿàÿÿ è"ô((ÿãÓŸ4Pl‘¶%2132654&+0#52132+0#'27#.54672&#""'73254'&54672&#""'73254'&54636&"7;5#"547654'654'&54;5#"#24&5435"54654+32+32/†  †þú††Ä  M    6    G f   7 &#þ‹#…þÉ‘            *     ÿà !%!";#";264&+&532654&!!àþ@           þ@À  þà 4   4  þà(ÿãÓŸ:a›#0#552132654&#"'732=7&'73254'&54672&#"+0#57674=+#"'&02132'&'&060327656'&'&'&54676200&'&#"¶†þú† þÏ )    õ†  †        y%#þŒ$' 7 Á=e     k& $##$ 'þû      ƒÿ×}©#";2654&3#"&4627#3eÊ  Ê ’FF)  ^ØØ© þ^  ¢ %þq  *A –+%· Øö   J3 ¥ À äflaticonflaticonRegularRegularFontForge 2.0 : flaticon : 13-12-2014FontForge 2.0 : flaticon : 13-12-2014flaticonflaticonVersion 1.0Version 1.0flaticonflaticoncss4desktop1jssmartÿÿɉo1бóбówp-fastest-cache/css/fonts/db/Flaticon.svg000064400000033713151435171370014506 0ustar00 Created by FontForge 20120731 at Wed Dec 28 12:36:45 2016 By Apache Created by Apache with FontForge 2.0 (http://fontforge.sf.net) wp-fastest-cache/css/fonts/db/Flaticon.woff000064400000005260151435171370014644 0ustar00wOFF ° FFTM ”uPKjOS/2œJ`PZ^HcmapJJáüÿcvt TDgasp Œÿÿglyftr´Krhead0.6 1éhhea`$ðÆhmtxè$WQlocaX ø ^maxp| \ÎnameèUvõ2é½post @J„¾Æ˜¾xÚc`d``â9Ïjüâùm¾2p31€À•Î_ýÿã —ƒ, 1\ ƒxÚc`d``<ðÿƒIFTÀ P•ºxÚc`d``àe˜ Ä ÀÄŒ 1=þ+xÚc`a|Àø…•ч1ÁJedha``b`cf€FHsMa8À ð‘ƒñÀÿ zŒ@j”(00kî FxÚcØÍ È«€ø˜ÃÀΠÅ–BV«xÚc```f€`FpòÁ| ͤ˜>rüÿä+|døÿÿÿc~¨z `dc€s™€*`„X1œÍNîD****XŠhòVšZxÚuUolGŸ·{;³³»w{{w»ë³³½{ÞõÙÎ}{lìó]ëÔI“˜¸P›Æ¤àã*J‹l ‘D4jd>!ÔöC›ŠR¥U¥ä $GJA¨BTU U¢äŠ*!µ_(|Q .¼Ý;$à4÷föÍ›÷æýû ˆAù,‘0RÜRš½Åbä“ò•þ0{KpIöÄ-…ì[ŒÂ?foAÈŒÀðÃ5¾}is–Ûo 6‘ûû}Ô¨“,!©²•¡ŽWI•kÏ¡™a›Qß)AݾñÁ {7··onC¡øšóµ£Ã~´Ñ¾»î¼;þº |­xu ¨ûCÔýé!9B Ôì:~Ý BÝ®CYÀü`ìÀ´™Cïì<~ºá×Ο_˜?/,nlÌ ;ǽ…¾GàÕŸí” ƒëßYÿÒüÖÖê3OlïûÚˆv>Åû«xÿ~â“1R%Ó¤IæÉUr¼@^A© ô©6å`~Ýõ¨mÕšP«3jÙV¹ ¾×›Õq{ %`¶„Þ#›ÙuŸ¹ŽW5BÕT–-3²u"ªo ÌŽ± ƒG céŒÔªa0í‰ÃkX& gT Da/3%$+o¯Ü‘ ëLeqÅ%Ę,jœIæŠ9“[ÉÑ4«0°+z¥ýÞòW©*xªíQN'm;YâTÍæ³ Q^LZŽ&ç8}’òYÓäÏà ( åËе¥¼£°ë¹ ,dâ ‹¿^¼"Æžä ->%%´*Šq™÷,ö<è,: h‰¦å’QúÝbAäì³#fò”k'¡7i‰” b*›M "§¢•<å­q-Ce™f4þ©¬ÁEAÑîU4ÆZ ÅÁ¤ÅÜÝÅÜ™¤¬uBò†ñs‡BéÂÀúfÆšqªn5(‚kºÕ°:æÆ*sãoWÝnÐMƒ>T®5 [mÕE±Â0³~݆ßÙTûž‘Í÷Da3¶©+#‰üd¶‡N{Æ`‘äAWï‘ïë™5²w]WÀQõž¾²«åÆŒm¢_ë§ÅñÒUW ]‡ÝTV8&H?ý$­èíË¡²üdo–lÝØ¬<::¥¾™5zuµ½¢êº*h¨«÷»ZÓŽP¡ª0&Òa?fI@f°ŠOEƒ•D14½NUjD%×)´(Z ¡R>s0ìTð;ãÚå îW‚ƒ6[«6¸(ÒXòszkuµËKÓ¿™^ZšÖ¿² µ“í×eù²,ódù£ˆÂþjëRã¬x‚ÇÏáGkµý—Ká¡KSKÇÕ‡¹#ËŽxæ QÆxÈ0ˆv臎Ý?D ¤E–Ècd\ ×°/Ÿ=ôêÐÛÁ4w¡»-l¿ãe§µœ­±²e›ÿ¡Àr:â^wöôüŸóbXÌGDÀ¶·ác5‘P’§ŒRl&Iý¸bô'XØÇ¨"jÇ(—Ù.åÿT‚®¼J‹$#šçïg(Sñg?¤ü[ú ûŒaÿµ3Á~B}?¬)³‡ÓŘ5‘_ˆ–%Ð2±õ\Θ͹|ÿÔ¹•o^ ò ™Z=yB¡òøüæ¾1†¿é© ÃÏYR.'Yßh*hßÛúÑÜÌp³™ÉäŸ>®211.Såúæ0œ1xÜ,Ÿ¯½øã³­+LŽ¥Î=Š <~ãâhibbbtív‹QgˆÊËWÏ^¼ø„7V¹õt:&rˆ¥÷Z­ÆÔa1&ꦴĪ%¨†ˆŽÛÝW©ˆ­T¯!¤„HAup}/ŒJÖBÜÀ·"°-¡ÄÚ-³kpíWv:=í‹”Õ’‰T ‘”ñ$}Ùe4i *é8þyÞJRæþ›O+ƒk·âyö?| óó>“ÉXϧúSTÔe]¥ÿãè³–¼PI;¦ïß÷à6æÛ$øNFï9"UªRÇz±±»:háùÖîööî6|½þçúÆ Ú>ávà·ïøAàCÍÿÛÌÑ£3=…µpÎŽŒübd²P˜lod#Æ¿’‹lÒxÚ}OJÃ@Æ¿é?*ˆô³ê"ÓI¥v!”B‚Ûn%m'M mb:¥TÄ“x½x·žÀwðK: Ý4Cæýæ›7ß{3.ðÃwƒgÇm|:®¡…oÇu\ŠkÇ ´Åƒã&:âÅq‹ú3E㌫§êTɼ;®á_Žë¸Åã}î7!Å£ãõWŒQÀ ‚å<‡Ä{Î#äÔfH¨Jìr?!…Ȱ&—±À¢Ú   »Ì°9†èqÄ.7þÏUØp¥¨êWÀ¸0‘5s9ÝËQÍ#w©Md˜­m˜ #¥e7±6öz1Õ¸TÕ&Vkcy>IJj=e«e1„ËȦ³ŒtWÝ'Å+.Ì<Ý®p²ýau½c¿ƒ`>£Ç_“ú´:êq(ÿ*ƒç^ ýþÉ',_ðERWJWÖªŠeC˜˜b“ÒQk_i­å)·_MYk{xÚc`bƒÿ$°^ fd`b`fdbdfdadedcdgä`ädäb/ÍËt340€Ò†PÚJCi(m ¥Í ´9”¶Î€ËÿÿxÚc```d‚3¶‹Îƒè+!¾0Ixwp-fastest-cache/css/fonts/db/Flaticon.ttf000064400000007434151435171370014505 0ustar00 €PFFTMuPKjOS/2PZ^HX`cmapáüÿÜJcvt D(gaspÿÿøglyfKrH´head 1éÜ6hheaðÆ$hmtxWQ¸$loca ø ^,maxp\Î8 nameõ2é½ üvpost¾Æ˜¾t„œæ|N_<õ Ô‰TMÔ‰TMÿÀÀÀÿÀ. @.àôLfGLfõ„PfEdÀ ñÀÿÀ.À@ »ªÈ*9D( ñÿÿ ñÿÿÿãD****XŠhòVšZ™U.±/<²í2±Ü<²í2±/<²í2²ü<²í233'3#ˆwffUþ«3ÿÀÀ2"&4264&"%'"/7–Ô––Ô–±žqqžq).  `-IÀ–Ô––ÔþÖqžqqžÅ,¢  `.Jÿà 2#"'73264&#"3'3>3'!]‚‚]L=',6FaaFCaMddC‚G&FQŸ‚º‚/) bŠb^CppZgpGR ÿÀùÀ '+59?C}‡”œ+"&46;2'7#&"6?672?'&?7'7>/&?7'#"&546;546;45462323254&++"&=#"33654&"0+"&46;246;#" š šdV¶Vž bb  V;V444þÇUe & &O L/  $  ."  l  S   _š š ¼ ‡i   MËMyl m. ,MB"M"///ÓM) N(K#  K&`  ù [ ã  @ "*ÿÀÖÀVb$#!"&546;2';>5#53.##57#"/7>325#"&=#"3!26=#"'73537''7'7Õ3þÞÞff ($19& .);#B,<Ö  " 2# + 0   —}# ªD¸í þx9&$1."<**8 ¦ þV   # Œ 3   ÿÀÀ3;CK2#"/&+"&=46354&+";2=42>%"4;2#2+"432+"43f@ZT= A\@ZZ@UP9Ì9PP9cF 6Jþ¢xn ææ æÀZ@w=YH AZ@w@Zþïw9PP9w8PG I ""O¥3E ÿÀÀ!)@PX`i€‡Ž2+"&=463"264&#"264&*264'4&+"+";262+"&=463"264&"264'"264&'4&+"+";26'7'7'7ç  Î  @  · D  D ª ý  Ð  D $ ¼ D  D ¨ ƒHOõHOÀ Ð  Ð   ¾§   $ Î  Î  ¦   HM¥HM ÿʶ &15ALP7/7''737'?/##/?3'7+5537'!3#'7'?'?/5#x%?>$8\V{}3$Fì 5JH ,CW>v++++98i%›E83þÞp­>;%??$%G , ‡f%O== 2a6•®Y@y\| –k*/000*`µ@"!Uy Ykkg ==2@|* ±@@ÿÀÀ CK5/57'#/#2#"'.5476'#'&''7&/5767'76?37264&"€€Ã9'6  š#   $##   #ª4&&4&Ààm&: 0  $##   $##  P&4&&49ÿÊǵ '12"&545"'26="'26&"26426="'«ªqqªqt7î7d”d7î7d”dd”dd”dø”d7î7µ3'þÊ'33'6'ö;--;))€;--;((Á(1))1þp(;--;®>~Ïæ%9qœ¿ | ½  Ø Jí _  z ­Created by Apache with FontForge 2.0 (http://fontforge.sf.net)Created by Apache with FontForge 2.0 (http://fontforge.sf.net)FlaticonFlaticonMediumMediumFontForge 2.0 : Flaticon : 28-12-2016FontForge 2.0 : Flaticon : 28-12-2016FlaticonFlaticonVersion 001.000 Version 001.000 FlaticonFlaticonÿÀ   uniF100uniF101uniF102uniF103uniF104uniF105uniF106uniF107uniF108ÿÿÌ=¢ÏÔ‰TMÔ‰TMwp-fastest-cache/css/fonts/db/Flaticon.eot000064400000007714151435171370014500 0ustar00ÌôLPN|æœFlaticon Medium Version 001.000 Flaticon €PFFTMuPKjOS/2PZ^HX`cmapáüÿÜJcvt D(gaspÿÿøglyfKrH´head 1éÜ6hheaðÆ$hmtxWQ¸$loca ø ^,maxp\Î8 nameõ2é½ üvpost¾Æ˜¾t„œæ|N_<õ Ô‰TMÔ‰TMÿÀÀÀÿÀ. @.àôLfGLfõ„PfEdÀ ñÀÿÀ.À@ »ªÈ*9D( ñÿÿ ñÿÿÿãD****XŠhòVšZ™U.±/<²í2±Ü<²í2±/<²í2²ü<²í233'3#ˆwffUþ«3ÿÀÀ2"&4264&"%'"/7–Ô––Ô–±žqqžq).  `-IÀ–Ô––ÔþÖqžqqžÅ,¢  `.Jÿà 2#"'73264&#"3'3>3'!]‚‚]L=',6FaaFCaMddC‚G&FQŸ‚º‚/) bŠb^CppZgpGR ÿÀùÀ '+59?C}‡”œ+"&46;2'7#&"6?672?'&?7'7>/&?7'#"&546;546;45462323254&++"&=#"33654&"0+"&46;246;#" š šdV¶Vž bb  V;V444þÇUe & &O L/  $  ."  l  S   _š š ¼ ‡i   MËMyl m. ,MB"M"///ÓM) N(K#  K&`  ù [ ã  @ "*ÿÀÖÀVb$#!"&546;2';>5#53.##57#"/7>325#"&=#"3!26=#"'73537''7'7Õ3þÞÞff ($19& .);#B,<Ö  " 2# + 0   —}# ªD¸í þx9&$1."<**8 ¦ þV   # Œ 3   ÿÀÀ3;CK2#"/&+"&=46354&+";2=42>%"4;2#2+"432+"43f@ZT= A\@ZZ@UP9Ì9PP9cF 6Jþ¢xn ææ æÀZ@w=YH AZ@w@Zþïw9PP9w8PG I ""O¥3E ÿÀÀ!)@PX`i€‡Ž2+"&=463"264&#"264&*264'4&+"+";262+"&=463"264&"264'"264&'4&+"+";26'7'7'7ç  Î  @  · D  D ª ý  Ð  D $ ¼ D  D ¨ ƒHOõHOÀ Ð  Ð   ¾§   $ Î  Î  ¦   HM¥HM ÿʶ &15ALP7/7''737'?/##/?3'7+5537'!3#'7'?'?/5#x%?>$8\V{}3$Fì 5JH ,CW>v++++98i%›E83þÞp­>;%??$%G , ‡f%O== 2a6•®Y@y\| –k*/000*`µ@"!Uy Ykkg ==2@|* ±@@ÿÀÀ CK5/57'#/#2#"'.5476'#'&''7&/5767'76?37264&"€€Ã9'6  š#   $##   #ª4&&4&Ààm&: 0  $##   $##  P&4&&49ÿÊǵ '12"&545"'26="'26&"26426="'«ªqqªqt7î7d”d7î7d”dd”dd”dø”d7î7µ3'þÊ'33'6'ö;--;))€;--;((Á(1))1þp(;--;®>~Ïæ%9qœ¿ | ½  Ø Jí _  z ­Created by Apache with FontForge 2.0 (http://fontforge.sf.net)Created by Apache with FontForge 2.0 (http://fontforge.sf.net)FlaticonFlaticonMediumMediumFontForge 2.0 : Flaticon : 28-12-2016FontForge 2.0 : Flaticon : 28-12-2016FlaticonFlaticonVersion 001.000 Version 001.000 FlaticonFlaticonÿÀ   uniF100uniF101uniF102uniF103uniF104uniF105uniF106uniF107uniF108ÿÿÌ=¢ÏÔ‰TMÔ‰TMwp-fastest-cache/css/dialog.css000064400000027234151435171370012462 0ustar00button:focus {outline:0;} .window-content-wrapper{ background-image:-webkit-gradient(linear, left top, left bottom, color-stop(50%, rgb(238,238,238)), color-stop(100%, rgb(219,219,219))); background:-webkit-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%); background:-moz-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%); background:-o-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%); background:-ms-linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%); background:linear-gradient(center bottom, rgb(219,219,219) 50%, rgb(238,238,238) 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#eeeeee', endColorstr='#dbdbdb',GradientType=0 ); text-shadow:0 0 5px #fff; border-bottom:1px solid #ABABAB; border-top:1px solid #EEE6E6; } .wiz-inp-cont { background: none repeat scroll 0 0 rgba(100, 100, 100, 0.1); border-radius: 6px; display: block; margin-top: 24px; padding: 12px; position: relative; } .wiz-cont { font-family: "Lucida Grande","Lucida Sans","Lucida Sans Unicode",Verdana,Tahoma,sans-serif; font-size: 13px; line-height: 18px; min-height: 80px; padding: 22px 28px; } .wiz-cont h1 { font-size: 21px; margin: 0 0 12px; } .wiz-cont p { color: #666; margin: 0; } .wiz-input-cont { background: none repeat scroll 0 0 rgba(100, 100, 100, 0.1); border-radius: 6px; margin-top: 24px; padding: 12px; position: relative; } .wiz-input-cont label { font-weight: bold; margin-right: 12px; } .api-key { border: 1px solid #999; border-radius: 3px; box-shadow: 0 1px 2px #eee inset, 0 1px 0 #ddd; font-size: 13px; padding: 4px 6px 3px; width: 355px; } .window-buttons-wrapper button { margin: 0 4px; } .wpfc-add-new-csp-button, .wpfc-add-new-timeout-button, .wpfc-add-new-exclude-button, .window-buttons-wrapper button[action="next"], .window-buttons-wrapper button[action="back"], .window-buttons-wrapper button[action="close"] { background-color: gray !important; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAABaCAIAAAAU4rCTAAACGUlEQVQ4EQXBQbIkRxEFQH+V0V974Bjo/neaBTJhs6Ir4+GeX79+AQDmr7/+UxChmBawGsq0qxGqoabVVolUa7ZNW8IWpnsraAGzWwogMdsl2khTm9lb2dCqSKddVZRUze6CUIXZriJJW2T2lgLA7F4AQs3uAgBm9xIAmN1SoIrZ3ZY0oqRz74XQUMy9t1ASVfN9X5pGoDr3+5UAwLz3AgDmfS8gtGTufQEAc+9VAmjN3lsIJXTuXgIA8zwHAJDfv38DAObvv/9LRWgTnqRJVJtEdXYrTVOtaqZtahWKTtuCtonW7C6AFmZ3SdKWUNNuxQqFzr2l0UWipr0lJbFbZu8WJFqYuwsAmL1LIUqYuxfChorZvQSoYvZuCQ2VmHtX2iY0jczdCwCYe5eSKCqze0u0TRDz/X5Dk7RNtPP9vtIUoZV53y9QQpnv90XSVqQ67/s/AgDzvhdKAPO+L4FUkbn3AgBm96oKEtX8+e8/AQDzj3/9M0BJMed5QgkV6cxMCS2EOeeEhkrSdj6fIUpUMTMfACDz+flJS0rSMj8zElBSnc/PH9FCQnV+fj6gGkHn8/mAEmDOOQCAOedAIFXmnAMAmHNOKJBo55wDAJhzDkqgZJ5zoJCgc55HklbSNsmccwAAc55HtIRGzHMORKpgnnOiLY8UmfNE0yeBqnmeU6IqCSZPHtp4aBLz5EECgkyeJ4CCzHkeAMD/AViclsCJwxhXAAAAAElFTkSuQmCC') !important; background-repeat: repeat-x !important; border: 1px solid #777 !important; color: #000 !important; text-shadow: 0 1px 0 #eee !important; } .window-buttons-wrapper button[action="finish"]{ background-repeat:repeat-x !important; background-color:green !important; background-image:url("../images/button-back-green.png") !important; color:#FFF;text-shadow:0 1px 0 rgba(0,0,0,0.4) !important; border:1px solid green !important; font-weight: bold; } .icon-right { margin: -4px -2px 0 3px; position: relative; right: -3px; top: 1px; } .big-button { -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; background: none repeat scroll 0 0 rgba(0, 0, 0, 0); border-color: -moz-use-text-color transparent; border-image: none; border-style: none solid; border-width: medium 1px; font-size: 11px; margin: 0; outline: medium none !important; overflow: visible; padding: 3px 6px; text-shadow: 0 1px 0 #e5e5e5, 0 0 5px rgba(255, 255, 255, 0.6); width: auto; } .window-buttons:hover,.wpfc-dialog-buttons:hover{ border-color:#999; background-position:0 -30px; } .wpfc-dialog-buttons { background: url("/images/button-back.png") repeat-x scroll 0 0 rgba(0, 0, 0, 0); border: 1px solid #aaa; padding: 4px 10px; display: none; } .window-buttons:active,.wpfc-dialog-buttons:active{ border-color:#666; background-position:0 -60px; } .close-wiz { background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAmCAYAAAAm56DSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODNEQTU1N0QyNTZBMTFFMDg0MjhBMzkwREEyOUQ5ODQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODNEQTU1N0UyNTZBMTFFMDg0MjhBMzkwREEyOUQ5ODQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4M0RBNTU3QjI1NkExMUUwODQyOEEzOTBEQTI5RDk4NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4M0RBNTU3QzI1NkExMUUwODQyOEEzOTBEQTI5RDk4NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg4s3CYAAAMbSURBVHjanJbLb0xxFMfvvVOjDaP1aM0U9aqohhARG41IbBoRKwsJCyspO7Eg8QewsGAhsbAikYiVjQVWXinxqCBdmFapR0v1kWI6HZ3re5LvT47jN5OZnuTTzvzu/X3vuef1mzDw2zKwA2wCa9V6H3gF7oMvshDH8d+LoRGpBYfAVvABDIHv6vpikAYt4Am4BrFpn9gicAKM0IM4KG2ybx3Fz0FwVIslwWmQBeNB5dYA1oAz4qETOwxmqhRytpCxuxLhfyOoN0Ii/Bb0q7WY32W9qNbHJERhGDYm8GEn+GFiNAB6wTeQA03gJWMpMZ3rPKJNyD01+NPMTdpWgjf8PEiBnLq+2twvnqblNac8cZBMdarvWmgvH2atUEpMYrMdLPUU8xbw3rNnKsECTJgLEr9brsqVTYJ3LFxrOfEs77kgT/5kYhioGA569uQjptZao4nRSRPDjGfPmBRtCnSAGpOAAlgA5IE97FeJ7y+GQcfttzS/64ANoNX0Xgs3DxuPkp4EZNEBvU4swewtmUU7SQ12QyyOVPs854Vq7Ct4FnOohZ7R0kpqyogU2FrZWE3HsMTNSbZZEwdmijWWZ+t9BNN20pZ6ugjtBtuYHGfS/E/BbV+tWc/qwDGwi/EbpUfOUpzIUod3wCV4lveJSSbPMhlDFYztZv4/BcERLSbz6QK9+FlFNueR4+KhK42uWQgFvF864kjAVpGqXm+EJPX3pBjNAOzm+oxalyndjrGdkcrfQ1e1PQZ31WklvXoTPOQIkkStUPeLd3VSGu2eYC9Xn3soMKHWVnnmX5u85hxPLKRP95sDw9kBsNmzpzYy7+9MSmMfx3RgPOpkT1orJljlSc9pc5n9p22c46fNIzYZlTjFpWVeq+961r1gHP+btBGDa63exOi8iaFv7g2EPJmPmlfN8EBp4MZ+eveZdZU2cZMJctEdKN2eBKRZ1O73RpbjKO1JgEzaiVCNooOeY78SkzBdhVgxUqfLjRLxK2fi7XUR8s2ziMdeh6dc/vkpAB6BB06o3NiW3tvInpzP3xzD7ME+lkbOju0/AgwAGgf5ial8jHIAAAAASUVORK5CYII=') no-repeat scroll 0 0 transparent; height: 19px; width: 22px; cursor: pointer; } .mm-input-label{ font-weight: bold; vertical-align: middle; margin-right: 12px; color: black; } .wiz-inp-readonly-textarea{ -moz-appearance: textfield; -moz-border-bottom-colors: none; -moz-border-left-colors: none; -moz-border-right-colors: none; -moz-border-top-colors: none; border-color: #aaaaaa #b0b0b0 #cbcbcb; border-image: none; border-radius: 3px; border-style: solid; border-width: 1px; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2) inset, 0 1px 0 rgba(255, 255, 255, 0.5); font-family: "Lucida Grande",monospace; font-size: inherit !important; line-height: 14px; padding: 4px 6px 3px; resize: none; white-space: pre; background-color: white !important; } .wiz-bg-img { bottom: -40px; clip: rect(0pt, 150px, 118px, 0pt); height: 150px; position: absolute; right: 40px; width: 150px; z-index: -1; opacity: 0.25; } .buttons-blood, .buttons-orange, .buttons-start{ background-repeat: repeat-x; border: 1px solid #333 !important; color: #fff; text-shadow: 0 1px 0 #000 !important; float: left; font-weight: bold; } .buttons-blood { background-image:url("../images/button-back-blood.png") !important; } .buttons-orange { background-image:url("../images/button-back-fire.png") !important; } .buttons-start { background-image:url("../images/button-back-green.png") !important; } .wpfc-green-button { font-weight: bold; padding:6px 18px; color:#fff; font-size:13px; border:1px solid #309E1F; text-shadow:0 -1px #309E1F; cursor:pointer; -moz-border-radius: 3px 3px; -webkit-border-radius: 3px 3px; border-radius: 3px 3px; -moz-box-shadow: 0 1px #71EF61 inset, 0 1px #dadada; -webkit-box-shadow: 0 1px #71EF61 inset, 0 1px #dadada; box-shadow: 0 1px #71EF61 inset, 0 1px #dadada; background: #39cc28; background: -moz-linear-gradient(top, #39cc28 0%, #38bf26 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#39cc28), color-stop(100%,#38bf26)); background: -webkit-linear-gradient(top, #39cc28 0%,#38bf26 100%); background: -o-linear-gradient(top, #39cc28 0%,#38bf26 100%); background: -ms-linear-gradient(top, #39cc28 0%,#38bf26 100%); background: linear-gradient(top, #39cc28 0%,#38bf26 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#39cc28', endColorstr='#38bf26',GradientType=0 ); } .wpfc-green-button:hover { background: #40db2b; background: -moz-linear-gradient(top, #40db2b 0%, #3ecc28 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#40db2b), color-stop(100%,#3ecc28)); background: -webkit-linear-gradient(top, #40db2b 0%,#3ecc28 100%); background: -o-linear-gradient(top, #40db2b 0%,#3ecc28 100%); background: -ms-linear-gradient(top, #40db2b 0%,#3ecc28 100%); background: linear-gradient(top, #40db2b 0%,#3ecc28 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#40db2b', endColorstr='#3ecc28',GradientType=0 ); } .wpfc-green-button:active { -moz-box-shadow: 0 1px #71EF61 inset; -webkit-box-shadow: 0 1px #71EF61 inset; box-shadow: 0 1px #71EF61 inset; background: #38bf26; background: -moz-linear-gradient(top, #38bf26 0%, #39cc28 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#38bf26), color-stop(100%,#39cc28)); background: -webkit-linear-gradient(top, #38bf26 0%,#39cc28 100%); background: -o-linear-gradient(top, #38bf26 0%,#39cc28 100%); background: -ms-linear-gradient(top, #38bf26 0%,#39cc28 100%); background: linear-gradient(top, #38bf26 0%,#39cc28 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#38bf26', endColorstr='#39cc28',GradientType=0 ); } .wiz-error-msg, .wiz-error-msg a{ color: red; font-weight: bold; text-align: center; padding-left: 22px; display: block; } #cdn-url-loading{ background: url("../images/loading-circle.gif") no-repeat; width: 20px; height: 18px; margin-top: 5px; float: right; display: none; } .wpfc-checkbox-list { margin-top: 24px; padding:15px; background:rgba(150,150,150,0.2); -moz-border-radius:5px 5px; -webkit-border-radius:5px 5px; border-radius:5px 5px; background:rgba(150,150,150,0.2); background: -ms-linear-gradient(top, rgba(150,150,150,0.2) 0%,rgba(150,150,150,0.2) 100%); /* IE10+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#33969696', endColorstr='#33969696',GradientType=0 ); /* IE6-9 */ } .wpfc-checkbox-list label{ width:110px; display:inline-block; margin-top:3px; color:#333333; } .wpfc-checkbox-list label input { margin-right:5px; vertical-align:bottom; } .wpfc-bottom-note{ margin-top: 20px !important } .wpfc-bottom-note a{ font-weight: bold; } wp-fastest-cache/wpFastestCache.php000064400000261142151435171370013334 0ustar00modifyHtaccess($post); } } function wpfastestcache_deactivate(){ $wpfc = new WpFastestCache(); $path = ABSPATH; if($wpfc->is_subdirectory_install()){ $path = $wpfc->getABSPATH(); } if(is_file($path.".htaccess") && is_writable($path.".htaccess")){ $htaccess = file_get_contents($path.".htaccess"); $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); $htaccess = preg_replace("/#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache/s", "", $htaccess); $htaccess = preg_replace("/#\s?BEGIN\s?LBCWpFastestCache.*?#\s?END\s?LBCWpFastestCache/s", "", $htaccess); $htaccess = preg_replace("/#\s?BEGIN\s?WEBPWpFastestCache.*?#\s?END\s?WEBPWpFastestCache/s", "", $htaccess); @file_put_contents($path.".htaccess", $htaccess); } $wpfc->deleteCache(); } register_activation_hook( __FILE__, "wpfastestcache_activate"); register_deactivation_hook( __FILE__, "wpfastestcache_deactivate"); class WpFastestCache{ private $systemMessage = ""; private $options = array(); public $noscript = ""; public $content_url = ""; public $deleted_before = false; public function __construct(){ $this->set_content_url(); $optimize_image_ajax_requests = array("wpfc_revert_image_ajax_request", "wpfc_statics_ajax_request", "wpfc_optimize_image_ajax_request", "wpfc_update_image_list_ajax_request" ); add_action('wp_ajax_wpfc_delete_cache', array($this, "deleteCacheToolbar")); add_action('wp_ajax_wpfc_delete_cache_and_minified', array($this, "deleteCssAndJsCacheToolbar")); add_action('wp_ajax_wpfc_delete_current_page_cache', array($this, "delete_current_page_cache")); add_action('wp_ajax_wpfc_clear_cache_of_allsites', array($this, "wpfc_clear_cache_of_allsites_callback")); add_action('wp_ajax_wpfc_toolbar_save_settings', array($this, "wpfc_toolbar_save_settings_callback")); add_action('wp_ajax_wpfc_toolbar_get_settings', array($this, "wpfc_toolbar_get_settings_callback")); //add_action('wp_ajax_wpfc_cache_path_save_settings', array($this, "wpfc_cache_path_save_settings_callback")); add_action( 'wp_ajax_wpfc_save_timeout_pages', array($this, 'wpfc_save_timeout_pages_callback')); add_action( 'wp_ajax_wpfc_save_exclude_pages', array($this, 'wpfc_save_exclude_pages_callback')); add_action( 'wp_ajax_wpfc_cdn_options', array($this, 'wpfc_cdn_options_ajax_request_callback')); add_action( 'wp_ajax_wpfc_remove_cdn_integration', array($this, 'wpfc_remove_cdn_integration_ajax_request_callback')); add_action( 'wp_ajax_wpfc_pause_cdn_integration', array($this, 'wpfc_pause_cdn_integration_ajax_request_callback')); add_action( 'wp_ajax_wpfc_start_cdn_integration', array($this, 'wpfc_start_cdn_integration_ajax_request_callback')); add_action( 'wp_ajax_wpfc_save_cdn_integration', array($this, 'wpfc_save_cdn_integration_ajax_request_callback')); add_action( 'wp_ajax_wpfc_cdn_template', array($this, 'wpfc_cdn_template_ajax_request_callback')); add_action( 'wp_ajax_wpfc_check_url', array($this, 'wpfc_check_url_ajax_request_callback')); add_action( 'wp_ajax_wpfc_cache_statics_get', array($this, 'wpfc_cache_statics_get_callback')); add_action( 'wp_ajax_wpfc_db_statics', array($this, 'wpfc_db_statics_callback')); add_action( 'wp_ajax_wpfc_db_fix', array($this, 'wpfc_db_fix_callback')); add_action( 'rate_post', array($this, 'wp_postratings_clear_fastest_cache'), 10, 2); add_action( 'user_register', array($this, 'modify_htaccess_for_new_user'), 10, 1); add_action( 'profile_update', array($this, 'modify_htaccess_for_new_user'), 10, 1); add_action( 'edit_terms', array($this, 'delete_cache_of_term'), 10, 1); add_action( 'wp_ajax_wpfc_save_csp', array($this, 'wpfc_save_csp_callback')); add_action( 'wp_ajax_wpfc_remove_csp', array($this, 'wpfc_remove_csp_callback')); add_action( 'wp_ajax_wpfc_get_list_csp', array($this, 'wpfc_get_list_csp_callback')); add_action( 'wp_ajax_wpfc_save_varnish', array($this, 'wpfc_save_varnish_callback')); add_action( 'wp_ajax_wpfc_remove_varnish', array($this, 'wpfc_remove_varnish_callback')); add_action( 'wp_ajax_wpfc_pause_varnish', array($this, 'wpfc_pause_varnish_callback')); add_action( 'wp_ajax_wpfc_start_varnish', array($this, 'wpfc_start_varnish_callback')); add_action( 'wp_ajax_wpfc_purgecache_varnish', array($this, 'wpfc_purgecache_varnish_callback')); if(defined("WPFC_CLEAR_CACHE_AFTER_SWITCH_THEME") && WPFC_CLEAR_CACHE_AFTER_SWITCH_THEME){ add_action('after_switch_theme', array($this, 'clear_cache_after_switch_theme')); } if(defined("WPFC_CLEAR_CACHE_AFTER_ACTIVATE_DEACTIVATE_PLUGIN") && WPFC_CLEAR_CACHE_AFTER_ACTIVATE_DEACTIVATE_PLUGIN){ add_action('activate_plugin', array($this, 'clear_cache_after_activate_plugin')); add_action('deactivate_plugin', array($this, 'clear_cache_after_deactivate_plugin')); } add_action('upgrader_process_complete', array($this, 'clear_cache_after_update_plugin'), 10, 2); add_action('upgrader_process_complete', array($this, 'clear_cache_after_update_theme'), 10, 2); if(defined("WPFC_DISABLE_CLEARING_CACHE_AFTER_WOOCOMMERCE_CHECKOUT_ORDER_PROCESSED") && WPFC_DISABLE_CLEARING_CACHE_AFTER_WOOCOMMERCE_CHECKOUT_ORDER_PROCESSED){ }else if(defined("WPFC_DISABLE_CLEARING_CACHE_AFTER_WOOCOMMERCE_ORDER_STATUS_CHANGED") && WPFC_DISABLE_CLEARING_CACHE_AFTER_WOOCOMMERCE_ORDER_STATUS_CHANGED){ }else{ // to clear cache after new Woocommerce orders add_action('woocommerce_order_status_changed', array($this, 'clear_cache_after_woocommerce_order_status_changed'), 1, 1); } // kk Star Ratings: to clear the cache of the post after voting add_action('kksr_rate', array($this, 'clear_cache_on_kksr_rate')); // Elementor: to clear cache after Maintenance Mode activation/deactivation add_action('elementor/maintenance_mode/mode_changed', array($this, 'deleteCache')); // clearing cache hooks add_action("wpfc_clear_all_cache", array($this, 'deleteCache'), 10, 1); add_action("wpfc_clear_all_site_cache", array($this, 'wpfc_clear_cache_of_allsites_callback')); add_action("wpfc_clear_post_cache_by_id", array($this, 'singleDeleteCache'), 10, 2); // create cache by id hook add_action("wpfc_create_post_cache_by_id", array($this, 'create_post_cache_by_id'), 10, 1); // to enable Auto Cache Panel for the classic editor add_action( 'admin_init', array($this, 'enable_auto_cache_settings_panel')); // to add settings link add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array($this, 'action_links')); // to clear cache after ajax request by other plugins if(isset($_POST["action"])){ // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ if(isset($_POST["post_id"])){ $this->singleDeleteCache(false, $_POST["post_id"]); } } // Yet Another Stars Rating if($_POST["action"] == "yasr_send_visitor_rating"){ if(isset($_POST["post_id"])){ // to need call like that because get_permalink() does not work if we call singleDeleteCache() directly add_action('init', array($this, "singleDeleteCache")); } } } // to clear /tmpWpfc folder if(is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ $this->rm_folder_recursively($this->getWpContentDir("/cache/tmpWpfc")); } if($this->isPluginActive('wp-polls/wp-polls.php')){ //for WP-Polls require_once "inc/wp-polls.php"; $wp_polls = new WpPollsForWpFc(); $wp_polls->hook(); } if(isset($_GET) && isset($_GET["action"]) && in_array($_GET["action"], $optimize_image_ajax_requests)){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("image.php"); $img = new WpFastestCacheImageOptimisation(); $img->hook(); } }else if(isset($_GET) && isset($_GET["action"]) && $_GET["action"] == "wpfastestcache"){ if(isset($_GET) && isset($_GET["type"]) && $_GET["type"] == "preload"){ // /?action=wpfastestcache&type=preload add_action('init', array($this, "create_preload_cache"), 11); } if(isset($_GET) && isset($_GET["type"]) && preg_match("/^clearcache(andminified|allsites)*$/i", $_GET["type"])){ // /?action=wpfastestcache&type=clearcache&token=123 // /?action=wpfastestcache&type=clearcacheandminified&token=123 add_action('wp_loaded', array($this, "handle_custom_delete_cache_request")); } }else{ $this->setCustomInterval(); $this->options = $this->getOptions(); add_action('transition_post_status', array($this, 'on_all_status_transitions'), 10, 3 ); // when the regular price is updated, the "transition_post_status" action cannot catch it add_action('woocommerce_update_product', array($this, 'clear_cache_after_woocommerce_update_product'), 10, 1); $this->commentHooks(); $this->checkCronTime(); if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("mobile-cache.php"); if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/statics.php")){ include_once $this->get_premium_path("statics.php"); } if(!defined('DOING_AJAX')){ include_once $this->get_premium_path("powerful-html.php"); } } if(is_admin()){ add_action('wp_loaded', array($this, "load_column")); if(defined('DOING_AJAX') && DOING_AJAX){ //do nothing }else{ // to avoid loading menu and optionPage() twice if(!class_exists("WpFastestCacheAdmin")){ //for wp-panel if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("image.php"); } if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); } add_action('plugins_loaded', array($this, 'wpfc_load_plugin_textdomain')); add_action('wp_loaded', array($this, "load_admin_toolbar")); $this->admin(); } } }else{ if(preg_match("/\/([^\/]+)\/([^\/]+(\.css|\.js))(\?.+)?$/", $this->current_url(), $path)){ // for security if(preg_match("/\.{2,}/", $this->current_url())){ die("May be Directory Traversal Attack"); } if(is_dir($this->getWpContentDir("/cache/wpfc-minified/").$path[1])){ if($sources = @scandir($this->getWpContentDir("/cache/wpfc-minified/").$path[1], 1)){ if(isset($sources[0])){ // $exist_url = str_replace($path[2], $sources[0], $this->current_url()); // header('Location: ' . $exist_url, true, 301); // exit; if(preg_match("/\.css/", $this->current_url())){ header('Content-type: text/css'); }else if(preg_match("/\.js/", $this->current_url())){ header('Content-type: text/js'); } echo file_get_contents($this->getWpContentDir("/cache/wpfc-minified/").$path[1]."/".$sources[0]); exit; } } } if(preg_match("/".basename($this->getWpContentDir("/cache/wpfc-minified/"))."/i", $this->current_url())){ //for non-exists minified files if(preg_match("/\.css/", $this->current_url())){ header('Content-type: text/css'); die("/* File not found */"); }else if(preg_match("/\.js/", $this->current_url())){ header('Content-type: text/js'); die("//File not found"); } } }else{ // to show if the user is logged-in add_action('wp_loaded', array($this, "load_admin_toolbar")); //for cache $this->cache(); } } } } public function handle_custom_delete_cache_request(){ $action = false; $wpfc_token = false; if(defined("WPFC_CLEAR_CACHE_URL_TOKEN") && WPFC_CLEAR_CACHE_URL_TOKEN){ $wpfc_token = WPFC_CLEAR_CACHE_URL_TOKEN; }else{ $wpfc_token = apply_filters( 'wpfc_clear_cache_url_token', false ); } if(isset($_GET["token"]) && $_GET["token"]){ if($wpfc_token){ if($wpfc_token == $_GET["token"]){ $action = true; }else{ die("Wrong token"); } }else{ die("WPFC_CLEAR_CACHE_URL_TOKEN must be defined"); } }else{ die("Security token must be set."); } if($action){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("mobile-cache.php"); } if($_GET["type"] == "clearcache"){ if(isset($_GET["post_id"])){ $this->singleDeleteCache(false, $_GET["post_id"]); }else{ $this->deleteCache(); } } if($_GET["type"] == "clearcacheandminified"){ $this->deleteCache(true); } if($_GET["type"] == "clearcacheallsites"){ $this->wpfc_clear_cache_of_allsites_callback(); } die("Done"); } exit; } public function enable_auto_cache_settings_panel(){ if($this->isPluginActive('classic-editor/classic-editor.php') || $this->isPluginActive('disable-gutenberg/disable-gutenberg.php') || has_filter("use_block_editor_for_post", "__return_false")){ add_action("add_meta_boxes", array($this, "add_meta_box"), 10, 2); add_action('admin_notices', array($this, 'single_preload_inline_js')); add_action('wp_ajax_wpfc_preload_single_save_settings', array($this, "wpfc_preload_single_save_settings_callback")); add_action('wp_ajax_wpfc_preload_single', array($this, "wpfc_preload_single_callback")); } } public function clear_cache_after_activate_plugin(){ $this->deleteCache(true); } public function clear_cache_after_deactivate_plugin(){ $this->deleteCache(true); } public function clear_cache_after_switch_theme(){ $this->deleteCache(true); } public function clear_cache_after_update_plugin($upgrader_object, $options){ if(isset($options['action']) && isset($options['type'])){ if($options['action'] == 'update'){ if($options['type'] == 'plugin' && (isset($options['plugins']) || isset($options['plugin']))){ $options_json = json_encode($options); if(preg_match("/elementor\\\\\/elementor\.php/i", $options_json)){ $this->deleteCache(true); } if(defined("WPFC_CLEAR_CACHE_AFTER_PLUGIN_UPDATE") && WPFC_CLEAR_CACHE_AFTER_PLUGIN_UPDATE){ $this->deleteCache(true); } } } } } public function clear_cache_after_update_theme($upgrader_object, $options){ if(isset($options['action']) && isset($options['type'])){ if($options['action'] == 'update'){ if($options['type'] == 'theme' && isset($options['themes'])){ if(defined("WPFC_CLEAR_CACHE_AFTER_THEME_UPDATE") && WPFC_CLEAR_CACHE_AFTER_THEME_UPDATE){ $this->deleteCache(true); } } } } } public function action_links($actions){ $actions['powered_settings'] = sprintf(__( 'Settings', 'wp-fastest-cache'), esc_url( admin_url( 'admin.php?page=wpfastestcacheoptions'))); return array_reverse($actions); } public function wpfc_preload_single_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } include_once('inc/single-preload.php'); SinglePreloadWPFC::create_cache(); } public function create_post_cache_by_id($id){ include_once('inc/single-preload.php'); SinglePreloadWPFC::init($id); $res = SinglePreloadWPFC::create_cache_for_all_urls(); return $res; } public function single_preload_inline_js(){ include_once('inc/single-preload.php'); SinglePreloadWPFC::init(); SinglePreloadWPFC::put_inline_js(); } public function add_meta_box(){ include_once('inc/single-preload.php'); SinglePreloadWPFC::add_meta_box(); } public function wpfc_preload_single_save_settings_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } include_once('inc/single-preload.php'); SinglePreloadWPFC::save_settings(); } public function notify($message = array()){ if(isset($message[0]) && $message[0]){ if(function_exists("add_settings_error")){ add_settings_error('wpfc-notice', esc_attr( 'settings_updated' ), $message[0], $message[1]); } } } public function set_content_url(){ $content_url = content_url(); // Hide My WP if($this->isPluginActive('hide_my_wp/hide-my-wp.php')){ $hide_my_wp = get_option("hide_my_wp"); if(isset($hide_my_wp["new_content_path"]) && $hide_my_wp["new_content_path"]){ $hide_my_wp["new_content_path"] = trim($hide_my_wp["new_content_path"], "/"); $content_url = str_replace(basename(WPFC_WP_CONTENT_DIR), $hide_my_wp["new_content_path"], $content_url); } } // to change content url if a different url is used for other langs if($this->isPluginActive('polylang/polylang.php') || $this->isPluginActive('polylang-pro/polylang.php')){ $url = parse_url($content_url); if(isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']){ if($url["host"] != $_SERVER['HTTP_HOST']){ $protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $content_url = $protocol.$_SERVER['HTTP_HOST'].$url['path']; } } } if (!defined('WPFC_WP_CONTENT_URL')) { define("WPFC_WP_CONTENT_URL", $content_url); } $this->content_url = $content_url; } public function clear_cache_on_kksr_rate($id){ $this->singleDeleteCache(false, $id); } public function clear_cache_after_woocommerce_order_status_changed($order_id = false){ if(function_exists("wc_get_order")){ if($order_id){ $order = wc_get_order($order_id); if($order){ foreach($order->get_items() as $item_key => $item_values ){ if(method_exists($item_values, 'get_product_id')){ $this->singleDeleteCache(false, $item_values->get_product_id()); } } } } } } public function wpfc_db_fix_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } if(current_user_can('manage_options')){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("db.php"); if(class_exists("WpFastestCacheDatabaseCleanup")){ WpFastestCacheDatabaseCleanup::clean($_GET["type"]); }else{ die(json_encode(array("success" => false, "showupdatewarning" => true, "message" => "Only available in Premium version"))); } }else{ die(json_encode(array("success" => false, "message" => "Only available in Premium version"))); } }else{ wp_die("Must be admin"); } } public function wpfc_db_statics_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } global $wpdb; $statics = array("all_warnings" => 0, "post_revisions" => 0, "trashed_contents" => 0, "trashed_spam_comments" => 0, "trackback_pingback" => 0, "transient_options" => 0, "orphaned_post_meta" => 0, "orphaned_comment_meta" => 0, "orphaned_user_meta" => 0, "orphaned_term_meta" => 0, "orphaned_term_relationships" => 0 ); $statics["post_revisions"] = $wpdb->get_var("SELECT COUNT(*) FROM `$wpdb->posts` WHERE post_type = 'revision';"); $statics["all_warnings"] = $statics["all_warnings"] + $statics["post_revisions"]; $statics["trashed_contents"] = $wpdb->get_var("SELECT COUNT(*) FROM `$wpdb->posts` WHERE post_status = 'trash';"); $statics["all_warnings"] = $statics["all_warnings"] + $statics["trashed_contents"]; $statics["trashed_spam_comments"] = $wpdb->get_var("SELECT COUNT(*) FROM `$wpdb->comments` WHERE comment_approved = 'spam' OR comment_approved = 'trash' ;"); $statics["all_warnings"] = $statics["all_warnings"] + $statics["trashed_spam_comments"]; $statics["trackback_pingback"] = $wpdb->get_var("SELECT COUNT(*) FROM `$wpdb->comments` WHERE comment_type = 'trackback' OR comment_type = 'pingback' ;"); $statics["all_warnings"] = $statics["all_warnings"] + $statics["trackback_pingback"]; $element = "SELECT COUNT(*) FROM `$wpdb->options` WHERE option_name LIKE '%\_transient\_%' ;"; $statics["transient_options"] = $wpdb->get_var( $element ) > 100 ? $wpdb->get_var( $element ) : 0; $statics["all_warnings"] = $statics["all_warnings"] + $statics["transient_options"]; $statics["orphaned_post_meta"] = $wpdb->get_var("SELECT COUNT(pm.meta_id) FROM {$wpdb->postmeta} pm LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id WHERE p.ID IS NULL"); $statics["all_warnings"] += $statics["orphaned_post_meta"]; $statics["orphaned_comment_meta"] = $wpdb->get_var("SELECT COUNT(cm.meta_id) FROM {$wpdb->commentmeta} cm LEFT JOIN {$wpdb->comments} c ON c.comment_ID = cm.comment_id WHERE c.comment_ID IS NULL"); $statics["all_warnings"] += $statics["orphaned_comment_meta"]; $statics["orphaned_user_meta"] = $wpdb->get_var("SELECT COUNT(um.umeta_id) FROM {$wpdb->usermeta} um LEFT JOIN {$wpdb->users} u ON u.ID = um.user_id WHERE u.ID IS NULL"); $statics["all_warnings"] += $statics["orphaned_user_meta"]; $statics["orphaned_term_meta"] = $wpdb->get_var("SELECT COUNT(tm.meta_id) FROM {$wpdb->termmeta} tm LEFT JOIN {$wpdb->terms} t ON t.term_id = tm.term_id WHERE t.term_id IS NULL"); $statics["all_warnings"] += $statics["orphaned_term_meta"]; $statics["orphaned_term_relationships"] = $wpdb->get_var("SELECT COUNT(tr.object_id) FROM {$wpdb->term_relationships} tr LEFT JOIN {$wpdb->posts} p ON p.ID = tr.object_id WHERE p.ID IS NULL"); $statics["all_warnings"] += $statics["orphaned_term_relationships"]; die(json_encode($statics)); } public function is_trailing_slash(){ // no need to check if Custom Permalinks plugin is active (https://tr.wordpress.org/plugins/custom-permalinks/) if($this->isPluginActive("custom-permalinks/custom-permalinks.php")){ return false; } if($permalink_structure = get_option('permalink_structure')){ if(preg_match("/\/$/", $permalink_structure)){ return true; } } return false; } public function wpfc_cache_statics_get_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/statics.php")){ include_once $this->get_premium_path("statics.php"); $cache_statics = new WpFastestCacheStatics(); $res = $cache_statics->get(); echo json_encode($res); exit; } } } public function wpfc_check_url_ajax_request_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'cdn-nonce')){ die( 'Security check' ); } include_once('inc/cdn.php'); CdnWPFC::check_url(); } public function wpfc_cdn_template_ajax_request_callback(){ include_once('inc/cdn.php'); CdnWPFC::cdn_template(); } public function wpfc_save_cdn_integration_ajax_request_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'cdn-nonce')){ die( 'Security check' ); } include_once('inc/cdn.php'); CdnWPFC::save_cdn_integration(); } public function wpfc_start_cdn_integration_ajax_request_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'cdn-nonce')){ die( 'Security check' ); } include_once('inc/cdn.php'); CdnWPFC::start_cdn_integration(); } public function wpfc_pause_cdn_integration_ajax_request_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'cdn-nonce')){ die( 'Security check' ); } include_once('inc/cdn.php'); CdnWPFC::pause_cdn_integration(); } public function wpfc_remove_cdn_integration_ajax_request_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'cdn-nonce')){ die( 'Security check' ); } include_once('inc/cdn.php'); CdnWPFC::remove_cdn_integration(); } public function wpfc_cdn_options_ajax_request_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'cdn-nonce')){ die( 'Security check' ); } include_once('inc/cdn.php'); CdnWPFC::cdn_options(); } public function wpfc_save_exclude_pages_callback(){ if(!wp_verify_nonce($_POST["security"], 'wpfc-save-exclude-ajax-nonce')){ die( 'Security check' ); } if(current_user_can('manage_options')){ if(isset($_POST["rules"])){ foreach ($_POST["rules"] as $key => &$value) { $value["prefix"] = strip_tags($value["prefix"]); $value["content"] = strip_tags($value["content"]); $value["prefix"] = preg_replace("/\'|\"/", "", $value["prefix"]); if($value["prefix"] == "regex"){ $value["content"] = stripslashes($value["content"]); $value["content"] = esc_attr($value["content"]); }else{ $value["content"] = preg_replace("/\'|\"/", "", $value["content"]); $value["content"] = preg_replace("/(\#|\s|\(|\)|\*)/", "", $value["content"]); } if($value["prefix"] == "homepage"){ $this->deleteHomePageCache(false); } } $data = json_encode($_POST["rules"]); if(get_option("WpFastestCacheExclude")){ update_option("WpFastestCacheExclude", $data); }else{ add_option("WpFastestCacheExclude", $data, null, "yes"); } }else{ delete_option("WpFastestCacheExclude"); } $this->modify_htaccess_for_exclude(); echo json_encode(array("success" => true)); exit; }else{ wp_die("Must be admin"); } } public function modify_htaccess_for_exclude(){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } $htaccess = @file_get_contents($path.".htaccess"); if(preg_match("/\#\s?Start\sWPFC\sExclude/", $htaccess)){ $exclude_rules = $this->excludeRules(); $htaccess = preg_replace("/\#\s?Start\sWPFC\sExclude[^\#]*\#\s?End\sWPFC\sExclude\s+/", $exclude_rules, $htaccess); } @file_put_contents($path.".htaccess", $htaccess); } public function wpfc_purgecache_varnish_callback(){ if(!wp_verify_nonce($_REQUEST["security"], 'wpfc-varnish-ajax-nonce')){ die( 'Security check' ); } if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); $res_arr = VarnishWPFC::purge_cache($varnish_datas["server"]); wp_send_json($res_arr); } } public function wpfc_save_varnish_callback(){ include_once('inc/varnish.php'); VarnishWPFC::save(); } public function wpfc_remove_varnish_callback(){ include_once('inc/varnish.php'); VarnishWPFC::remove(); } public function wpfc_start_varnish_callback(){ include_once('inc/varnish.php'); VarnishWPFC::start(); } public function wpfc_pause_varnish_callback(){ include_once('inc/varnish.php'); VarnishWPFC::pause(); } public function wpfc_status_varnish(){ include_once('inc/varnish.php'); VarnishWPFC::status(); } public function wpfc_get_list_csp_callback(){ include_once('inc/clearing-specific-pages.php'); ClearingSpecificPagesWPFC::get_list(); } public function wpfc_save_csp_callback(){ include_once('inc/clearing-specific-pages.php'); ClearingSpecificPagesWPFC::save(); } public function wpfc_remove_csp_callback(){ include_once('inc/clearing-specific-pages.php'); ClearingSpecificPagesWPFC::remove(); } public function wpfc_save_timeout_pages_callback(){ if(!wp_verify_nonce($_POST["security"], 'wpfc-save-timeout-ajax-nonce')){ die( 'Security check' ); } if(current_user_can('manage_options')){ $this->setCustomInterval(); $crons = _get_cron_array(); foreach ($crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ foreach ( (array) $events as $event_key => $event ) { if($id[1]){ wp_clear_scheduled_hook("wp_fastest_cache".$id[1], $event["args"]); }else{ wp_clear_scheduled_hook("wp_fastest_cache", $event["args"]); } } } } } } if(isset($_POST["rules"]) && count($_POST["rules"]) > 0){ $i = 0; foreach ($_POST["rules"] as $key => $value) { if(preg_match("/^(daily|onceaday)$/i", $value["schedule"]) && isset($value["hour"]) && isset($value["minute"]) && strlen($value["hour"]) > 0 && strlen($value["minute"]) > 0){ $args = array("prefix" => $value["prefix"], "content" => $value["content"], "hour" => $value["hour"], "minute" => $value["minute"]); $timestamp = mktime($value["hour"],$value["minute"],0,date("m"),date("d"),date("Y")); $timestamp = $timestamp > time() ? $timestamp : $timestamp + 60*60*24; }else{ $args = array("prefix" => $value["prefix"], "content" => $value["content"]); $timestamp = time(); } wp_schedule_event($timestamp, $value["schedule"], "wp_fastest_cache_".$i, array(json_encode($args))); $i = $i + 1; } } echo json_encode(array("success" => true)); exit; }else{ wp_die("Must be admin"); } } public function wp_postratings_clear_fastest_cache($rate_userid, $post_id){ // to remove cache if vote is from homepage or category page or tag if(isset($_SERVER["HTTP_REFERER"]) && $_SERVER["HTTP_REFERER"]){ $url = parse_url($_SERVER["HTTP_REFERER"]); $url["path"] = isset($url["path"]) ? $url["path"] : "/index.html"; if(isset($url["path"])){ if($url["path"] == "/"){ $this->rm_folder_recursively($this->getWpContentDir("/cache/all/index.html")); }else{ // to prevent changing path with ../ or with another method if($url["path"] == realpath(".".$url["path"])){ $this->rm_folder_recursively($this->getWpContentDir("/cache/all").$url["path"]); } } } } if($post_id){ $this->singleDeleteCache(false, $post_id); } } private function admin(){ if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){ include_once('inc/admin.php'); $wpfc = new WpFastestCacheAdmin(); $wpfc->addMenuPage(); }else{ add_action('admin_menu', array($this, 'register_my_custom_menu_page')); } } public function load_column(){ if(!defined('WPFC_HIDE_CLEAR_CACHE_BUTTON') || (defined('WPFC_HIDE_CLEAR_CACHE_BUTTON') && !WPFC_HIDE_CLEAR_CACHE_BUTTON)){ include_once plugin_dir_path(__FILE__)."inc/column.php"; $column = new WpFastestCacheColumn(); $column->add(); } } public function load_admin_toolbar(){ $display = true; if(apply_filters('wpfc_hide_toolbar', false )){ $display = ""; } if(defined('WPFC_HIDE_TOOLBAR') && WPFC_HIDE_TOOLBAR){ $display = ""; } if($display){ $user = wp_get_current_user(); $allowed_roles = array('administrator'); $wpfc_role_status = get_option("WpFastestCacheToolbarSettings"); if(is_array($wpfc_role_status) && !empty($wpfc_role_status)){ foreach ($wpfc_role_status as $key => $value){ $key = str_replace("wpfc_toolbar_", "", $key); array_push($allowed_roles, strtolower($key)); } } if(array_intersect($allowed_roles, $user->roles)){ include_once plugin_dir_path(__FILE__)."inc/admin-toolbar.php"; if(preg_match("/\/cache\/all/", $this->getWpContentDir("/cache/all"))){ $is_multi = false; }else{ $is_multi = true; } $toolbar = new WpFastestCacheAdminToolbar($is_multi); $toolbar->add(); } } } public function tmp_saveOption(){ if(!empty($_POST)){ if(isset($_POST["wpFastestCachePage"])){ include_once('inc/admin.php'); $wpfc = new WpFastestCacheAdmin(); $wpfc->optionsPageRequest(); } } } public function register_mysettings(){ register_setting('wpfc-group', 'wpfc-group', array($this, 'tmp_saveOption')); } public function register_my_custom_menu_page(){ if(function_exists('add_menu_page')){ if(defined("WPFC_MOVE_MENU_ITEM_UNDER_SETTINGS") && WPFC_MOVE_MENU_ITEM_UNDER_SETTINGS){ add_options_page("WP Fastest Cache Settings", "WP Fastest Cache", 'manage_options', 'wpfastestcacheoptions', array($this, 'optionsPage')); }else{ add_menu_page("WP Fastest Cache Settings", "WP Fastest Cache", 'manage_options', "wpfastestcacheoptions", array($this, 'optionsPage'), plugins_url("wp-fastest-cache/images/icon.svg")); } add_action('admin_init', array($this, 'register_mysettings')); wp_enqueue_style("wp-fastest-cache", plugins_url("wp-fastest-cache/css/style.css"), array(), time(), "all"); } if(isset($_GET["page"]) && $_GET["page"] == "wpfastestcacheoptions"){ wp_enqueue_style("wp-fastest-cache-buycredit", plugins_url("wp-fastest-cache/css/buycredit.css"), array(), time(), "all"); wp_enqueue_style("wp-fastest-cache-flaticon", plugins_url("wp-fastest-cache/css/flaticon.css"), array(), time(), "all"); wp_enqueue_style("wp-fastest-cache-dialog", plugins_url("wp-fastest-cache/css/dialog.css"), array(), time(), "all"); } } public function deleteCacheToolbar(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } $this->deleteCache(); } public function deleteCssAndJsCacheToolbar(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } $this->deleteCache(true); } public function wpfc_toolbar_get_settings_callback(){ if(current_user_can('manage_options')){ $result = array("success" => true, "roles" => false); $wpfc_role_status = get_option("WpFastestCacheToolbarSettings"); if(is_array($wpfc_role_status) && !empty($wpfc_role_status)){ $result["roles"] = $wpfc_role_status; } die(json_encode($result)); }else{ wp_die("Must be admin"); } } public function wpfc_cache_path_save_settings_callback(){ if(current_user_can('manage_options')){ foreach($_POST as $key => &$value){ $value = esc_html(esc_sql($value)); } $path_arr = array( "cachepath" => sanitize_text_field($_POST["cachepath"]), "optimizedpath" => sanitize_text_field($_POST["optimizedpath"]) ); if(get_option("WpFastestCachePathSettings") === false){ add_option("WpFastestCachePathSettings", $path_arr, 1, "no"); }else{ update_option("WpFastestCachePathSettings", $path_arr); } die(json_encode(array("success" => true))); }else{ wp_die("Must be admin"); } } public function wpfc_toolbar_save_settings_callback(){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } if(current_user_can('manage_options')){ if(isset($_GET["roles"]) && is_array($_GET["roles"]) && !empty($_GET["roles"])){ $roles_arr = array(); foreach($_GET["roles"] as $key => $value){ $value = esc_html(esc_sql($value)); $key = esc_html(esc_sql($key)); $roles_arr[$key] = $value; } if(get_option("WpFastestCacheToolbarSettings") === false){ add_option("WpFastestCacheToolbarSettings", $roles_arr, 1, "no"); }else{ update_option("WpFastestCacheToolbarSettings", $roles_arr); } }else{ delete_option("WpFastestCacheToolbarSettings"); } die(json_encode(array("Saved","success"))); }else{ wp_die("Must be admin"); } } public function wpfc_clear_cache_of_allsites_callback(){ if(defined('DOING_AJAX') && DOING_AJAX){ if(!wp_verify_nonce($_REQUEST["nonce"], 'wpfc')){ die( 'Security check' ); } } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $path = $this->getWpContentDir("/cache/*"); $files = glob($this->getWpContentDir("/cache/*")); if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ //tmpWpfc has been created } } foreach ((array)$files as $file){ @rename($file, $this->getWpContentDir("/cache/tmpWpfc/").basename($file)."-".time()); } if (is_admin() && defined('DOING_AJAX') && DOING_AJAX){ die(json_encode(array("The cache of page has been cleared","success"))); } } public function delete_current_page_cache(){ if(!wp_verify_nonce($_GET["nonce"], "wpfc")){ die(json_encode(array("Security Error!", "error", "alert"))); } if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); if(isset($_GET["path"])){ if($_GET["path"]){ if($_GET["path"] == "/"){ $_GET["path"] = $_GET["path"]."index.html"; } }else{ $_GET["path"] = "/index.html"; } $_GET["path"] = urldecode(esc_url_raw($_GET["path"])); // for security if(preg_match("/\.{2,}/", $_GET["path"])){ die("May be Directory Traversal Attack"); } $paths = array(); array_push($paths, $this->getWpContentDir("/cache/all").$_GET["path"]); if(class_exists("WpFcMobileCache")){ $wpfc_mobile = new WpFcMobileCache(); array_push($paths, $this->getWpContentDir("/cache/wpfc-mobile-cache").$_GET["path"]); } foreach ($paths as $key => $value){ if(file_exists($value)){ if(preg_match("/\/(all|wpfc-mobile-cache)\/index\.html$/i", $value)){ @unlink($value); }else{ $this->rm_folder_recursively($value); } } } $this->delete_multiple_domain_mapping_cache(); die(json_encode(array("The cache of page has been cleared","success"))); }else{ die(json_encode(array("Path has NOT been defined", "error", "alert"))); } exit; } private function cache(){ if(isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST']){ include_once('inc/cache.php'); $wpfc = new WpFastestCacheCreateCache(); $wpfc->createCache(); } } protected function slug(){ return "wp_fastest_cache"; } public function getWpContentDir($path = false){ /* Sample Paths; /cache/ /cache/all/ /cache/all /cache/all/page /cache/all/index.html /cache/wpfc-minified /cache/wpfc-widget-cache /cache/wpfc-mobile-cache/ /cache/wpfc-mobile-cache/page /cache/wpfc-mobile-cache/index.html /cache/tmpWpfc /cache/tmpWpfc/ /cache/tmpWpfc/mobile_ /cache/tmpWpfc/m /cache/tmpWpfc/w /cache/testWpFc/ /cache/all/testWpFc/ /cache/wpfc-widget-cache/ /cache/wpfc-widget-cache /cache/wpfc-widget-cache/".$args["widget_id"].".html */ if($path){ if(preg_match("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", $path)){ //WPML language switch //https://wpml.org/forums/topic/wpml-language-switch-wp-fastest-cache-issue/ $language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type'); if(($language_negotiation_type == 2) && $this->isPluginActive('sitepress-multilingual-cms/sitepress.php')){ $my_home_url = apply_filters('wpml_home_url', get_option('home')); $my_home_url = preg_replace("/https?\:\/\//i", "", $my_home_url); $my_home_url = trim($my_home_url, "/"); $path = preg_replace("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", "/cache/".$my_home_url."/$1", $path); }else if(($language_negotiation_type == 1) && $this->isPluginActive('sitepress-multilingual-cms/sitepress.php')){ $my_current_lang = apply_filters('wpml_current_language', NULL); if($my_current_lang){ $path = preg_replace("/\/cache\/wpfc-widget-cache\/(.+)/", "/cache/wpfc-widget-cache/".$my_current_lang."-"."$1", $path); } } if($this->isPluginActive('multiple-domain-mapping-on-single-site/multidomainmapping.php')){ $path = preg_replace("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", "/cache/".$_SERVER['HTTP_HOST']."/$1", $path); } if($this->isPluginActive('polylang/polylang.php') || $this->isPluginActive('polylang-pro/polylang.php')){ $polylang_settings = get_option("polylang"); if(isset($polylang_settings["force_lang"])){ if($polylang_settings["force_lang"] == 2 || $polylang_settings["force_lang"] == 3){ // The language is set from the subdomain name in pretty permalinks // The language is set from different domains $path = preg_replace("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", "/cache/".$_SERVER['HTTP_HOST']."/$1", $path); } } } if($this->isPluginActive('multiple-domain/multiple-domain.php')){ $path = preg_replace("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", "/cache/".$_SERVER['HTTP_HOST']."/$1", $path); } if(is_multisite()){ $path = preg_replace("/\/cache\/(all|wpfc-minified|wpfc-widget-cache|wpfc-mobile-cache)/", "/cache/".$_SERVER['HTTP_HOST']."/$1", $path); } } return WPFC_WP_CONTENT_DIR.$path; }else{ return WPFC_WP_CONTENT_DIR; } } protected function getOptions(){ return $GLOBALS["wp_fastest_cache_options"]; } protected function getSystemMessage(){ return $this->systemMessage; } protected function get_excluded_useragent(){ return "facebookexternalhit|WP_FASTEST_CACHE_CSS_VALIDATOR|Twitterbot|LinkedInBot|WhatsApp|Mediatoolkitbot"; } // protected function detectNewPost(){ // if(isset($this->options->wpFastestCacheNewPost) && isset($this->options->wpFastestCacheStatus)){ // add_filter ('save_post', array($this, 'deleteCache')); // } // } public function deleteWidgetCache(){ $widget_cache_path = $this->getWpContentDir("/cache/wpfc-widget-cache"); if(is_dir($widget_cache_path)){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ //tmpWpfc has been created } } if(@rename($widget_cache_path, $this->getWpContentDir("/cache/tmpWpfc/w").time())){ //DONE } } } public function clear_cache_after_woocommerce_update_product($product_id){ if(!$this->deleted_before){ $this->singleDeleteCache(false, $product_id); } } public function on_all_status_transitions($new_status, $old_status, $post){ $this->deleted_before = true; if(!wp_is_post_revision($post->ID)){ if(isset($post->post_type)){ if($post->post_type == "nf_sub"){ return 0; } } if($new_status == "publish" && $old_status != "publish"){ $this->specificDeleteCache(); if(isset($this->options->wpFastestCacheNewPost) && isset($this->options->wpFastestCacheStatus)){ if(isset($this->options->wpFastestCacheNewPost_type) && $this->options->wpFastestCacheNewPost_type){ if($this->options->wpFastestCacheNewPost_type == "all"){ $this->deleteCache(); }else if($this->options->wpFastestCacheNewPost_type == "homepage"){ $this->deleteHomePageCache(); //to clear category cache and tag cache $this->singleDeleteCache(false, $post->ID); //to clear widget cache $this->deleteWidgetCache(); } }else{ $this->deleteCache(); } } } if(isset($this->options->wpFastestCacheStatus) && $new_status == "publish" && $old_status == "publish"){ // if(isset($this->options->wpFastestCacheUpdatePost) && isset($this->options->wpFastestCacheStatus)){ // if($this->options->wpFastestCacheUpdatePost_type == "post"){ // $this->singleDeleteCache(false, $post->ID); // }else if($this->options->wpFastestCacheUpdatePost_type == "all"){ // $this->deleteCache(); // } // } $this->specificDeleteCache(); if(isset($this->options->wpFastestCacheUpdatePost)){ if($this->options->wpFastestCacheUpdatePost_type == "post"){ $this->singleDeleteCache(false, $post->ID); }else if($this->options->wpFastestCacheUpdatePost_type == "all"){ $this->deleteCache(); } }else{ // to clear only cache of content even though the "update post" option is disabled $this->singleDeleteCache(false, $post->ID, false); } } if($new_status == "trash" && $old_status == "publish"){ if($post->post_type == "shop_coupon"){ // YITH WooCommerce Coupon Email System Premium return; } $this->singleDeleteCache(false, $post->ID); }else if(($new_status == "draft" || $new_status == "pending" || $new_status == "private") && $old_status == "publish"){ $this->deleteCache(); } } } protected function commentHooks(){ //it works when the status of a comment changes add_action('wp_set_comment_status', array($this, 'detect_comment_status_change'), 10, 2); //it works when a comment is saved in the database add_action('comment_post', array($this, 'detectNewComment'), 10, 2); // it work when a commens is updated add_action('edit_comment', array($this, 'detectEditComment'), 10, 2); } public function detect_comment_status_change($comment_id, $new_status) { $comment = get_comment($comment_id); if (!$comment) { return; // Exit if the comment doesn't exist } // Check if the comment was pending and is now marked as spam if($comment->comment_status == 'open' && $new_status === 'spam'){ return; } // Check if the comment was pending and is now marked as trash if($comment->comment_status == 'open' && $new_status === 'trash'){ return; } $this->singleDeleteCache($comment_id); } public function detectEditComment($comment_id, $comment_data){ if($comment_data["comment_approved"] == 1){ $this->singleDeleteCache($comment_id); } } public function detectNewComment($comment_id, $comment_approved){ // if(current_user_can( 'manage_options') || !get_option('comment_moderation')){ if($comment_approved === 1){ $this->singleDeleteCache($comment_id); } } public function specificDeleteCache(){ $urls = get_option("WpFastestCacheCSP"); $files = array(); if(!empty($urls)){ foreach ($urls as $key => $value) { if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $value->url, $out)){ if(preg_match("/\.{2,}/", $out[1])){ // to prevent Directory Traversal Attack continue; } if(preg_match("/\/\(\.\*\)/", $out[1])){ $out[1] = str_replace("(.*)", "", $out[1]); $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; }else{ $out[1] = $out[1]."index.html"; $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ @mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true); } if(is_dir($path)){ rename($path, $this->getWpContentDir("/cache/tmpWpfc/").time()); }else if(is_file($path)){ @unlink($path); } if(is_dir($mobile_path)){ rename($mobile_path, $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); }else if(is_file($mobile_path)){ @unlink($mobile_path); } } } } } public function singleDeleteCache($comment_id = false, $post_id = false, $to_clear_parents = true){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $to_clear_feed = true; // not to clear cache of homepage/cats/tags after ajax request by other plugins if(isset($_POST) && isset($_POST["action"])){ // kk Star Rating if($_POST["action"] == "kksr_ajax"){ $to_clear_parents = false; } // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ $to_clear_parents = false; } // Yet Another Stars Rating if($_POST["action"] == "yasr_send_visitor_rating"){ $to_clear_parents = false; $post_id = sanitize_text_field($_POST["post_id"]); } // All In One Schema.org Rich Snippets if(preg_match("/bsf_(update|submit)_rating/i", $_POST["action"])){ $to_clear_feed = false; } } if($comment_id){ $comment_id = intval($comment_id); $comment = get_comment($comment_id); if($comment && $comment->comment_post_ID){ $post_id = $comment->comment_post_ID; } } if($post_id){ $post_id = intval($post_id); $permalink = get_permalink($post_id); $permalink = urldecode(get_permalink($post_id)); //for trash contents if(preg_match("/\/\?(p|page_id)\=\d+/i", $permalink)){ $post = get_post($post_id); $clone_post = clone $post; $clone_post->post_status = 'publish'; $permalink = get_permalink($clone_post); $permalink = rtrim($permalink, "/"); $permalink = preg_replace("/__trashed$/", "", $permalink); //for /%postname%/%post_id% : sample-url__trashed/57595 $permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $permalink); } if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } $files = array(); if(is_dir($path)){ array_push($files, $path); } if(is_dir($mobile_path)){ array_push($files, $mobile_path); } if(defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){ $files_with_query_string = glob($path."\?*"); $mobile_files_with_query_string = glob($mobile_path."\?*"); if(is_array($files_with_query_string) && (count($files_with_query_string) > 0)){ $files = array_merge($files, $files_with_query_string); } if(is_array($mobile_files_with_query_string) && (count($mobile_files_with_query_string) > 0)){ $files = array_merge($files, $mobile_files_with_query_string); } } if($to_clear_feed){ // to clear cache of /feed if(preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link(), $feed_out)){ array_push($files, $this->getWpContentDir("/cache/all/").$feed_out[1]); } // to clear cache of /comments/feed/ if(preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link("comments_"), $comment_feed_out)){ array_push($files, $this->getWpContentDir("/cache/all/").$comment_feed_out[1]); } } foreach((array)$files as $file){ $this->rm_folder_recursively($file); } } if($to_clear_parents){ // to clear cache of homepage $this->deleteHomePageCache(); // to clear cache of author page $this->delete_author_page_cache($post_id); // to clear sitemap cache $this->delete_sitemap_cache(); // to clear cache of next post and cache of prev post $this->delete_next_prev_cache($post_id); // to clear cache of cats and tags which contains the post (only first page) global $wpdb; $terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".$post_id, ARRAY_A); foreach ($terms as $term_key => $term_val){ $this->delete_cache_of_term($term_val["term_taxonomy_id"]); } } $this->delete_multiple_domain_mapping_cache(); } } public function delete_next_prev_cache($post_id){ global $wpdb; $post = get_post($post_id); $next_post_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE ID = (SELECT min(ID) FROM `".$wpdb->prefix."posts` where ID > ".$post_id." AND `post_type` = '".$post->post_type."' AND `post_status` = 'publish')"; $prev_post_query = "SELECT * FROM `".$wpdb->prefix."posts` WHERE ID = (SELECT max(ID) FROM `".$wpdb->prefix."posts` where ID < ".$post_id." AND `post_type` = '".$post->post_type."' AND `post_status` = 'publish')"; $res = $wpdb->get_results($next_post_query." UNION ".$prev_post_query); if(isset($res[0])){ foreach ($res as $key => $value) { $permalink = urldecode(get_permalink($value->ID)); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; if(is_dir($path)){ $this->rm_folder_recursively($path); } if(is_dir($mobile_path)){ $this->rm_folder_recursively($mobile_path); } } } } } public function delete_sitemap_cache(){ //to clear sitemap.xml and sitemap-(.+).xml $files = array_merge(glob($this->getWpContentDir("/cache/all/")."sitemap*.xml"), glob($this->getWpContentDir("/cache/wpfc-mobile-cache/")."sitemap*.xml")); foreach((array)$files as $file){ $this->rm_folder_recursively($file); } } public function delete_multiple_domain_mapping_cache($minified = false){ //https://wordpress.org/plugins/multiple-domain-mapping-on-single-site/ if($this->isPluginActive("multiple-domain-mapping-on-single-site/multidomainmapping.php")){ $multiple_arr = get_option('falke_mdm_mappings'); if(isset($multiple_arr) && isset($multiple_arr["mappings"]) && isset($multiple_arr["mappings"][0])){ foreach($multiple_arr["mappings"] as $mapping_key => $mapping_value){ if($minified){ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all\/)/", "/cache/".$mapping_value["domain"]."/", $this->getWpContentDir("/cache/all/")); if(is_dir($mapping_domain_path)){ if(@rename($mapping_domain_path, $this->getWpContentDir("/cache/tmpWpfc/").$mapping_value["domain"]."_".time())){ } } }else{ $mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all)/", "/cache/".$mapping_value["domain"]."/all", $this->getWpContentDir("/cache/all/index.html")); @unlink($mapping_domain_path); } } } } } public function delete_author_page_cache($post_id){ $author_id = get_post_field ('post_author', $post_id); $permalink = get_author_posts_url($author_id); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $path = $this->getWpContentDir("/cache/all/").$out[1]; $mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; $this->move_folder_to_tmpWpfc($path); $this->move_folder_to_tmpWpfc($mobile_path); } } public function move_folder_to_tmpWpfc($path = false){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ @mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true); } if(!$path){ return false; } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ return false; } if(is_dir($path)){ preg_match("/\/([^\/]+)\/?$/", $path, $type); if(isset($type[1])){ if(preg_match("/\/cache\/wpfc-mobile-cache\//", $path)){ $type[1] = "m_".$type[1]; } $move_to = $this->getWpContentDir("/cache/tmpWpfc/").$type[1]."_".time(); rename($path, $move_to); } } } public function delete_cache_of_term($term_taxonomy_id){ $term = get_term_by("term_taxonomy_id", $term_taxonomy_id); if(!$term || is_wp_error($term)){ return false; } //if(preg_match("/cat|tag|store|listing/", $term->taxonomy)){} $url = get_term_link($term->term_id, $term->taxonomy); if(preg_match("/^http/", $url)){ $path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url); $path = trim($path, "/"); $path = urldecode($path); // to remove the cache of tag/cat if(file_exists($this->getWpContentDir("/cache/all/").$path."/index.html")){ @unlink($this->getWpContentDir("/cache/all/").$path."/index.html"); } if(file_exists($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/index.html")){ @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/index.html"); } // to remove the cache of the pages $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/page"); // to remove the cache of the feeds $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$path."/feed"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$path."/feed"); } if($term->parent > 0){ $parent = get_term_by("id", $term->parent, $term->taxonomy); if(isset($parent->term_taxonomy_id)){ $this->delete_cache_of_term($parent->term_taxonomy_id); } } } public function unlink($path){ if(file_exists($path)){ unlink($path); } } public function deleteHomePageCache($log = true){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url()); $home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url()); if($site_url_path){ $site_url_path = trim($site_url_path, "/"); if($site_url_path){ $this->unlink($this->getWpContentDir("/cache/all/").$site_url_path."/index.html"); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$site_url_path."/index.html"); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$site_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$site_url_path."/page"); } } if($home_url_path){ $home_url_path = trim($home_url_path, "/"); if($home_url_path){ $this->unlink($this->getWpContentDir("/cache/all/").$home_url_path."/index.html"); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$home_url_path."/index.html"); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$home_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$home_url_path."/page"); } } if(function_exists("wc_get_page_id")){ if($shop_id = wc_get_page_id('shop')){ $store_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", get_permalink($shop_id)); if($store_url_path){ $store_url_path = trim($store_url_path, "/"); if($store_url_path){ if(file_exists($this->getWpContentDir("/cache/all/").$store_url_path."/index.html")){ @unlink($this->getWpContentDir("/cache/all/").$store_url_path."/index.html"); } if(file_exists($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/index.html")){ @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/index.html"); } //to clear pagination of store homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/").$store_url_path."/page"); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/").$store_url_path."/page"); } } } } $this->unlink($this->getWpContentDir("/cache/all/index.html")); $this->unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/index.html")); //to clear pagination of homepage cache $this->rm_folder_recursively($this->getWpContentDir("/cache/all/page")); $this->rm_folder_recursively($this->getWpContentDir("/cache/wpfc-mobile-cache/page")); // options-reading.php - static posts page if($page_for_posts_id = get_option('page_for_posts')){ $page_for_posts_permalink = urldecode(get_permalink($page_for_posts_id)); $page_for_posts_permalink = rtrim($page_for_posts_permalink, "/"); $page_for_posts_permalink = preg_replace("/__trashed$/", "", $page_for_posts_permalink); //for /%postname%/%post_id% : sample-url__trashed/57595 $page_for_posts_permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $page_for_posts_permalink); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $page_for_posts_permalink, $out)){ $page_for_posts_path = $this->getWpContentDir("/cache/all/").$out[1]; $page_for_posts_mobile_path = $this->getWpContentDir("/cache/wpfc-mobile-cache/").$out[1]; $this->rm_folder_recursively($page_for_posts_path); $this->rm_folder_recursively($page_for_posts_mobile_path); } } if($log){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } } } public function deleteCache($minified = false){ if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('inc/varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('inc/cdn.php'); CdnWPFC::cloudflare_clear_cache(); $this->set_preload(); $created_tmpWpfc = false; $cache_deleted = false; $minifed_deleted = false; $cache_path = $this->getWpContentDir("/cache/all"); $minified_cache_path = $this->getWpContentDir("/cache/wpfc-minified"); if(class_exists("WpFcMobileCache")){ if(is_dir($this->getWpContentDir("/cache/wpfc-mobile-cache"))){ if(is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ rename($this->getWpContentDir("/cache/wpfc-mobile-cache"), $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); }else if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ rename($this->getWpContentDir("/cache/wpfc-mobile-cache"), $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); } } } if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){ $created_tmpWpfc = true; }else{ $created_tmpWpfc = false; //$this->systemMessage = array("Permission of /wp-content/cache must be 755", "error"); } }else{ $created_tmpWpfc = true; } //to clear widget cache path $this->deleteWidgetCache(); $this->delete_multiple_domain_mapping_cache($minified); if(is_dir($cache_path)){ if(@rename($cache_path, $this->getWpContentDir("/cache/tmpWpfc/").time())){ delete_option("WpFastestCacheHTML"); delete_option("WpFastestCacheHTMLSIZE"); delete_option("WpFastestCacheMOBILE"); delete_option("WpFastestCacheMOBILESIZE"); $cache_deleted = true; } }else{ $cache_deleted = true; } if($minified){ if(is_dir($minified_cache_path)){ if(@rename($minified_cache_path, $this->getWpContentDir("/cache/tmpWpfc/m").time())){ delete_option("WpFastestCacheCSS"); delete_option("WpFastestCacheCSSSIZE"); delete_option("WpFastestCacheJS"); delete_option("WpFastestCacheJSSIZE"); $minifed_deleted = true; } }else{ $minifed_deleted = true; } }else{ $minifed_deleted = true; } if($created_tmpWpfc && $cache_deleted && $minifed_deleted){ do_action('wpfc_delete_cache'); $this->notify(array("All cache files have been deleted", "updated")); if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action(); } }else{ $this->notify(array("Permissions Problem: Read More", "error")); } // for ajax request if(isset($_GET["action"]) && in_array($_GET["action"], array("wpfc_delete_cache", "wpfc_delete_cache_and_minified"))){ die(json_encode($this->systemMessage)); } } public function checkCronTime(){ $crons = _get_cron_array(); foreach ((array)$crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ foreach ( (array) $events as $event_key => $event ) { add_action("wp_fastest_cache".$id[1], array($this, 'setSchedule')); } } } } } add_action($this->slug()."_Preload", array($this, 'create_preload_cache'), 11); } public function set_preload(){ include_once('inc/preload.php'); PreloadWPFC::set_preload($this->slug()); } public function create_preload_cache(){ $this->options = $this->getOptions(); include_once('inc/preload.php'); PreloadWPFC::create_preload_cache($this->options); } public function wpfc_remote_get($url, $user_agent, $return_content = false){ //$response = wp_remote_get($url, array('timeout' => 10, 'sslverify' => false, 'headers' => array("cache-control" => array("no-store, no-cache, must-revalidate", "post-check=0, pre-check=0"),'user-agent' => $user_agent))); $response = wp_remote_get($url, array('user-agent' => $user_agent, 'timeout' => 10, 'sslverify' => false, 'headers' => array("cache-control" => "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"))); if (!$response || is_wp_error($response)){ echo $response->get_error_message()." - "; return false; }else{ if(wp_remote_retrieve_response_code($response) != 200){ return false; } if($return_content){ if(wp_remote_retrieve_response_code($response) == 200){ $data = wp_remote_retrieve_body($response); return $data; } } } return true; } public function setSchedule($args = ""){ if($args){ $rule = json_decode($args); if($rule->prefix == "all"){ $this->deleteCache(); }else if($rule->prefix == "homepage"){ $this->deleteHomePageCache(); if(isset($this->options->wpFastestCachePreload_homepage) && $this->options->wpFastestCachePreload_homepage){ $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload Bot - After Cache Timeout"); $this->wpfc_remote_get(get_option("home"), "WP Fastest Cache Preload iPhone Mobile Bot - After Cache Timeout"); } }else if($rule->prefix == "startwith"){ if(!is_dir($this->getWpContentDir("/cache/tmpWpfc"))){ if(@mkdir($this->getWpContentDir("/cache/tmpWpfc"), 0755, true)){} } $rule->content = trim($rule->content, "/"); $files = glob($this->getWpContentDir("/cache/all/").$rule->content."*"); foreach ((array)$files as $file) { $mobile_file = str_replace("/cache/all/", "/cache/wpfc-mobile-cache/", $file); @rename($file, $this->getWpContentDir("/cache/tmpWpfc/").time()); @rename($mobile_file, $this->getWpContentDir("/cache/tmpWpfc/mobile_").time()); } }else if($rule->prefix == "exact"){ $rule->content = trim($rule->content, "/"); @unlink($this->getWpContentDir("/cache/all/").$rule->content."/index.html"); @unlink($this->getWpContentDir("/cache/wpfc-mobile-cache/").$rule->content."/index.html"); } if($rule->prefix != "all"){ if($this->isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ include_once $this->get_premium_path("logs.php"); $log = new WpFastestCacheLogs("delete"); $log->action($rule); } } }else{ //for old cron job $this->deleteCache(); } } public function modify_htaccess_for_new_user($user_id){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } $htaccess = @file_get_contents($path.".htaccess"); if(preg_match("/\#\s?Start_WPFC_Exclude_Admin_Cookie/", $htaccess)){ $rules = $this->excludeAdminCookie(); $htaccess = preg_replace("/\#\s?Start_WPFC_Exclude_Admin_Cookie[^\#]*\#\s?End_WPFC_Exclude_Admin_Cookie\s+/", $rules, $htaccess); } @file_put_contents($path.".htaccess", $htaccess); } public function excludeAdminCookie(){ $usernames = array(); $users_groups = array_chunk(get_users(array("role" => "administrator", "fields" => array("user_login"))), 5); foreach ($users_groups as $group_key => $group) { $tmp_user = ""; $tmp_rule = ""; foreach ($group as $key => $value) { $tmp_user = sanitize_user(wp_unslash($value->user_login), true); /* to replace spaces with %20 1. Empty space character causes 500 internal server error 2. "\s" is not detected by htaccess so we added "%20" */ $tmp_user = preg_replace("/\s/", "%20", $tmp_user); array_push($usernames, $tmp_user); } } $rule = "# Start_WPFC_Exclude_Admin_Cookie\n"; $rule = $rule."RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=".implode("|", $usernames); $rule = $rule."\n# End_WPFC_Exclude_Admin_Cookie\n"; return $rule; } public function excludeRules(){ $htaccess_page_rules = ""; $htaccess_page_useragent = ""; $htaccess_page_cookie = ""; if($rules_json = get_option("WpFastestCacheExclude")){ if($rules_json != "null"){ $rules_std = json_decode($rules_json); foreach ($rules_std as $key => $value) { $value->type = isset($value->type) ? $value->type : "page"; // escape the chars $value->content = str_replace("?", "\?", $value->content); if($value->type == "page"){ if($value->prefix == "startwith"){ $value->content = ltrim($value->content, "/"); $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !^/".$value->content." [NC]\n"; } if($value->prefix == "contain"){ $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !".$value->content." [NC]\n"; } if($value->prefix == "exact"){ $value->content = trim($value->content, "/"); $htaccess_page_rules = $htaccess_page_rules."RewriteCond %{REQUEST_URI} !\/".$value->content." [NC]\n"; } }else if($value->type == "useragent"){ $htaccess_page_useragent = $htaccess_page_useragent."RewriteCond %{HTTP_USER_AGENT} !".$value->content." [NC]\n"; }else if($value->type == "cookie"){ $htaccess_page_cookie = $htaccess_page_cookie."RewriteCond %{HTTP:Cookie} !".$value->content." [NC]\n"; } } } } return "# Start WPFC Exclude\n".$htaccess_page_rules.$htaccess_page_useragent.$htaccess_page_cookie."# End WPFC Exclude\n"; } public function getABSPATH(){ if(function_exists("get_home_path")){ return get_home_path(); }else{ $path = ABSPATH; $siteUrl = site_url(); $homeUrl = home_url(); $diff = str_replace($homeUrl, "", $siteUrl); $diff = trim($diff,"/"); $pos = strrpos($path, $diff); if($pos !== false){ $path = substr_replace($path, "", $pos, strlen($diff)); $path = trim($path,"/"); $path = "/".$path."/"; } return $path; } } public function rm_folder_recursively($dir, $i = 1) { if(is_dir($dir)){ $files = @scandir($dir); foreach((array)$files as $file) { if($i > 50 && !preg_match("/wp-fastest-cache-premium/i", $dir)){ return true; }else{ $i++; } if ('.' === $file || '..' === $file) continue; if (is_dir("$dir/$file")){ $this->rm_folder_recursively("$dir/$file", $i); }else{ if(file_exists("$dir/$file")){ @unlink("$dir/$file"); } } } } if(is_dir($dir)){ $files_tmp = @scandir($dir); if(!isset($files_tmp[2])){ @rmdir($dir); } } return true; } public function is_subdirectory_install(){ if(strlen(site_url()) > strlen(home_url())){ return true; } return false; } protected function getMobileUserAgents(){ return implode("|", $this->get_mobile_browsers())."|".implode("|", $this->get_operating_systems()); } public function get_premium_path($name){ return WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/".$name; } public function cron_add_minute( $schedules ) { $schedules['everyminute'] = array( 'interval' => 60*1, 'display' => __( 'Once Every 1 Minute' ), 'wpfc' => true ); $schedules['everyfiveminute'] = array( 'interval' => 60*5, 'display' => __( 'Once Every 5 Minutes' ), 'wpfc' => true ); $schedules['everyfifteenminute'] = array( 'interval' => 60*15, 'display' => __( 'Once Every 15 Minutes' ), 'wpfc' => true ); $schedules['twiceanhour'] = array( 'interval' => 60*30, 'display' => __( 'Twice an Hour' ), 'wpfc' => true ); $schedules['onceanhour'] = array( 'interval' => 60*60, 'display' => __( 'Once an Hour' ), 'wpfc' => true ); $schedules['everytwohours'] = array( 'interval' => 60*60*2, 'display' => __( 'Once Every 2 Hours' ), 'wpfc' => true ); $schedules['everythreehours'] = array( 'interval' => 60*60*3, 'display' => __( 'Once Every 3 Hours' ), 'wpfc' => true ); $schedules['everyfourhours'] = array( 'interval' => 60*60*4, 'display' => __( 'Once Every 4 Hours' ), 'wpfc' => true ); $schedules['everyfivehours'] = array( 'interval' => 60*60*5, 'display' => __( 'Once Every 5 Hours' ), 'wpfc' => true ); $schedules['everysixhours'] = array( 'interval' => 60*60*6, 'display' => __( 'Once Every 6 Hours' ), 'wpfc' => true ); $schedules['everysevenhours'] = array( 'interval' => 60*60*7, 'display' => __( 'Once Every 7 Hours' ), 'wpfc' => true ); $schedules['everyeighthours'] = array( 'interval' => 60*60*8, 'display' => __( 'Once Every 8 Hours' ), 'wpfc' => true ); $schedules['everyninehours'] = array( 'interval' => 60*60*9, 'display' => __( 'Once Every 9 Hours' ), 'wpfc' => true ); $schedules['everytenhours'] = array( 'interval' => 60*60*10, 'display' => __( 'Once Every 10 Hours' ), 'wpfc' => true ); $schedules['onceaday'] = array( 'interval' => 60*60*24, 'display' => __( 'Once a Day' ), 'wpfc' => true ); $schedules['everythreedays'] = array( 'interval' => 60*60*24*3, 'display' => __( 'Once Every 3 Days' ), 'wpfc' => true ); $schedules['everysevendays'] = array( 'interval' => 60*60*24*7, 'display' => __( 'Once Every 7 Days' ), 'wpfc' => true ); $schedules['everytendays'] = array( 'interval' => 60*60*24*10, 'display' => __( 'Once Every 10 Days' ), 'wpfc' => true ); $schedules['everyfifteendays'] = array( 'interval' => 60*60*24*15, 'display' => __( 'Once Every 15 Days' ), 'wpfc' => true ); $schedules['montly'] = array( 'interval' => 60*60*24*30, 'display' => __( 'Once a Month' ), 'wpfc' => true ); $schedules['yearly'] = array( 'interval' => 60*60*24*30*12, 'display' => __( 'Once a Year' ), 'wpfc' => true ); return $schedules; } public function setCustomInterval(){ add_filter( 'cron_schedules', array($this, 'cron_add_minute')); } public function isPluginActive( $plugin ) { return in_array( $plugin, (array) get_option( 'active_plugins', array() ) ) || $this->isPluginActiveForNetwork( $plugin ); } public function isPluginActiveForNetwork( $plugin ) { if ( !is_multisite() ) return false; $plugins = get_site_option( 'active_sitewide_plugins'); if ( isset($plugins[$plugin]) ) return true; return false; } public function current_url(){ global $wp; $current_url = home_url($_SERVER['REQUEST_URI']); return $current_url; // if(defined('WP_CLI')){ // $_SERVER["SERVER_NAME"] = isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : ""; // $_SERVER["SERVER_PORT"] = isset($_SERVER["SERVER_PORT"]) ? $_SERVER["SERVER_PORT"] : 80; // } // $pageURL = 'http'; // if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on'){ // $pageURL .= 's'; // } // $pageURL .= '://'; // if($_SERVER['SERVER_PORT'] != '80'){ // $pageURL .= $_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].$_SERVER['REQUEST_URI']; // }else{ // $pageURL .= $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; // } // return $pageURL; } public function wpfc_load_plugin_textdomain(){ load_plugin_textdomain('wp-fastest-cache', FALSE, basename( dirname( __FILE__ ) ) . '/languages/' ); } public function cdn_replace_urls($matches){ if(count($this->cdn) > 0){ foreach ($this->cdn as $key => $cdn) { if($cdn->id == "cloudflare"){ continue; } if(isset($cdn->status) && $cdn->status == "pause"){ continue; } if(preg_match("/manifest\.json\.php/i", $matches[0])){ return $matches[0]; } //https://site.com?brizy_media=AttachmentName.jpg&brizy_crop=CropSizes&brizy_post=TheCurrentPost if(preg_match("/brizy_media\=/i", $matches[0])){ return $matches[0]; } //https://cdn.shortpixel.ai/client/q_glossy,ret_img,w_736/http://wpfc.com/stories.png if(preg_match("/cdn\.shortpixel\.ai\/client/i", $matches[0])){ return $matches[0]; } if(preg_match("/^\/\/random/", $cdn->cdnurl) || preg_match("/\/\/i\d\.wp\.com/", $cdn->cdnurl)){ // Photon will no longer be supported continue; } $cdnurl = $cdn->cdnurl; $cdn->file_types = str_replace(",", "|", $cdn->file_types); if(preg_match("/\.(".$cdn->file_types.")(\"|\'|\?|\)|\s|\"\;)/i", $matches[0])){ //nothing }else{ if(preg_match("/js/", $cdn->file_types)){ if(!preg_match("/\/revslider\/public\/assets\/js/", $matches[0])){ continue; } }else{ continue; } } if($cdn->keywords){ $cdn->keywords = str_replace(",", "|", $cdn->keywords); if(!preg_match("/".preg_quote($cdn->keywords, "/")."/i", $matches[0])){ continue; } } if(isset($cdn->excludekeywords) && $cdn->excludekeywords){ $cdn->excludekeywords = str_replace(",", "|", $cdn->excludekeywords); if(preg_match("/".preg_quote($cdn->excludekeywords, "/")."/i", $matches[0])){ continue; } } if(preg_match("/(data-product_variations|data-siteorigin-parallax)\=[\"\'][^\"\']+[\"\']/i", $matches[0])){ $cdnurl = preg_replace("/(https?\:)?(\/\/)(www\.)?/", "", $cdnurl); // if(preg_match("/i\d\.wp\.com/i", $cdnurl)){ // $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", "$1$2$3".$cdnurl, $matches[0]); // }else{ // $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", "$1$2$3$4".$cdnurl, $matches[0]); // } $matches[0] = preg_replace("/(quot\;|\s)(https?\:)?(\\\\\/\\\\\/|\/\/)(www\.)?".$cdn->originurl."/i", '${1}${2}${3}'.$cdnurl, $matches[0]); }else if(preg_match("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?".preg_quote("\/\/", "/")."(www\.)?/i", "", $matches[0]); $matches[0] = preg_replace("/".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); }else if(isset($matches[2]) && preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[2])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); }else if(isset($matches[2]) && preg_match("/^(\/?)(wp-includes|wp-content)/", $matches[2])){ $matches[0] = preg_replace("/(\/?)(wp-includes|wp-content)/i", $cdnurl."/"."$2", $matches[0]); }else if(preg_match("/[\"\']https?\:\\\\\/\\\\\/[^\"\']+[\"\']/i", $matches[0])){ if(preg_match("/^(logo|url|image)$/i", $matches[1])){ //If the url is called with "//", it causes an error on https://search.google.com/structured-data/testing-tool/u/0/ // // // }else{ // $matches[0] = preg_replace("/\\\\\//", "/", $matches[0]); if(preg_match("/".preg_quote($cdn->originurl, "/")."/", $matches[0])){ $matches[0] = preg_replace("/(http(s?)\:)?\/\/(www\.)?".preg_quote($cdn->originurl, "/")."/i", $cdnurl, $matches[0]); $matches[0] = preg_replace("/\//", "\/", $matches[0]); } } } } } return $matches[0]; } public function read_file($url){ if(!preg_match("/\.php/", $url)){ $url = preg_replace("/\?.*/", "", $url); if(preg_match("/wp-content/", $url)){ $path = preg_replace("/.+\/wp-content\/(.+)/", WPFC_WP_CONTENT_DIR."/"."$1", $url); }else if(preg_match("/wp-includes/", $url)){ $path = preg_replace("/.+\/wp-includes\/(.+)/", ABSPATH."wp-includes/"."$1", $url); } if(isset($path)){ if(@file_exists($path)){ $filesize = filesize($path); if($filesize > 0){ $myfile = fopen($path, "r") or die("Unable to open file!"); $data = fread($myfile, $filesize); fclose($myfile); return $data; }else{ return false; } } } } return false; } public function get_operating_systems(){ $operating_systems = array( 'Android', 'blackberry|\bBB10\b|rim\stablet\sos', 'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino', 'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b', 'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;', 'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;', '\biPhone.*Mobile|\biPod|\biPad', 'Apple-iPhone7C2', 'MeeGo', 'Maemo', 'J2ME\/|\bMIDP\b|\bCLDC\b', // '|Java/' produces bug #135 'webOS|hpwOS', '\bBada\b', 'BREW' ); return $operating_systems; } public function get_mobile_browsers(){ $mobile_browsers = array( '\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?', '\bDolfin\b', 'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+', 'Skyfire', 'Mobile\sSafari\/[.0-9]*\sEdge', 'IEMobile|MSIEMobile', // |Trident/[.0-9]+ 'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS', 'bolt', 'teashark', 'Blazer', 'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari', 'Tizen', 'UC.*Browser|UCWEB', 'baiduboxapp', 'baidubrowser', 'DiigoBrowser', 'Puffin', '\bMercury\b', 'Obigo', 'NF-Browser', 'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger', 'Android.*PaleMoon|Mobile.*PaleMoon' ); return $mobile_browsers; } } // Load WP CLI command(s) on demand. if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once "inc/cli.php"; } function wpfc_clear_all_site_cache(){ if(defined('WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE') && WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE){ return array("success" => false, "message" => "Clearing Cache Hook system has been disabled"); } do_action("wpfc_clear_all_cache"); } function wpfc_clear_all_cache($minified = false){ if(defined('WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE') && WPFC_DISABLE_HOOK_CLEAR_ALL_CACHE){ return array("success" => false, "message" => "Clearing Cache Hook system has been disabled"); } do_action("wpfc_clear_all_cache", $minified); } function wpfc_exclude_current_page(){ do_action("wpfc_exclude_current_page"); } function wpfc_clear_post_cache_by_id($post_id = false){ if($post_id){ do_action("wpfc_clear_post_cache_by_id", false, $post_id); } } function wpfc_create_post_cache_by_id($post_id = false){ if($post_id){ do_action("wpfc_create_post_cache_by_id", $post_id); } } $GLOBALS["wp_fastest_cache"] = new WpFastestCache(); ?>wp-fastest-cache/languages/wp-fastest-cache-es_EC.po000064400000037644151435171370016347 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Ecuador) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2021-01-02 11:47:06+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es_EC\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar la caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Vaciar la caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite de la caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Añadir una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elige uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se eliminarán todos los archivos de la caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puedes borrar todos los archivos de la caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas de la caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar la caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué quieres que ocurra después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar la caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar la caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar la caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda la caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué quieres que ocurra después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puedes reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puedes reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puedes reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos de la caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos de la caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear la caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio de la caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión de la caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente la caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://es-ec.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez por hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces por hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada 1 minuto"wp-fastest-cache/languages/wp-fastest-cache-ja.po000064400000042151151435171370015750 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Japanese # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-13 14:12:14+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: GlotPress/4.0.1\n" "Language: ja_JP\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "管ç†ãƒ„ールãƒãƒ¼ã® WP Fastest Cache メニューã¯ã€ä»¥ä¸‹ã®é¸æŠžã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼æ¨©é™ã‚°ãƒ«ãƒ¼ãƒ—ã«è¡¨ç¤ºã•れã¾ã™ã€‚" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "ユーザー権é™ã‚°ãƒ«ãƒ¼ãƒ—" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "å°‘ãªãã¨ã‚‚1ã¤ã®ã‚µã‚¤ãƒˆãƒžãƒƒãƒ—を追加ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€é«˜åº¦ãªè¨­å®šã‚’カスタマイズã§ãã¾ã™ã€‚" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "高度ãªè¨­å®š" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "先読ã¿ã«ä½¿ç”¨ã™ã‚‹ã‚µã‚¤ãƒˆãƒžãƒƒãƒ—を指定ã§ãã¾ã™ã€‚" #: templates/preload.php:150 msgid "Sitemaps" msgstr "サイトマップ" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "先読ã¿ã«ä½¿ç”¨ã™ã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を指定ã§ãã€ã•らã«ä¸¦ã¹æ›¿ãˆã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚" #: templates/preload.php:86 msgid "Content Types" msgstr "コンテンツタイプ" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€å…ˆèª­ã¿æ©Ÿèƒ½ã«ä½¿ç”¨ã™ã‚‹æ–¹å¼ã‚’指定ã§ãã¾ã™ã€‚" #: templates/preload.php:72 msgid "Choose a Method" msgstr "æ–¹å¼ã‚’é¸æŠž" #: templates/preload.php:56 msgid "Preload Settings" msgstr "先読ã¿è¨­å®š" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "一部㮠JS ソースã¯ã€ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã‚„マウスã®ç§»å‹•ãŒè¡Œã‚れるã¾ã§èª­ã¿è¾¼ã¾ã‚Œãªããªã‚Šã¾ã™" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Delay JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache ã®è¨­å®š" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "特定ã®ãƒšãƒ¼ã‚¸ã‚’削除" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "ä¿å­˜" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "キャンセル" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "ツールãƒãƒ¼è¨­å®š" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "ã™ã¹ã¦ã®ã‚µã‚¤ãƒˆã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: wpFastestCache.php:439 msgid "Settings" msgstr "設定" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "キャッシュを削除" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "レンダリングブロックã™ã‚‹ JS ソースを除外ã™ã‚‹" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "設定をä¿å­˜ã—ã¾ã—ãŸ" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "カート㫠Woocommerce アイテムã‚り" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "Google Analytics パラメーターã‚り" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "アーカイブ" #: templates/timeout.php:189 msgid "Server Time" msgstr "サーãƒãƒ¼æ™‚刻" #: templates/timeout.php:169 msgid "delete the files" msgstr "ã“ã®ãƒ•ァイルを削除ã™ã‚‹" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "å«ã‚€" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "次ã¨åŒç­‰" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "次ã§å§‹ã¾ã‚‹" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "ホームページ" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "ã™ã¹ã¦" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "ページウィザードを除外ã™ã‚‹" #: templates/timeout.php:124 msgid "Then" msgstr "次をé©ç”¨" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "REQUEST_URI ãŒ" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "キャッシュ タイムアウト ウィザード" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "é…延読ã¿è¾¼ã¿ã®è¨­å®š" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip を有効" #: templates/update_now.php:9 msgid "Please Update" msgstr "アップデートã—ã¦ãã ã•ã„" #: templates/update_success.php:9 msgid "Success" msgstr "æˆåŠŸ" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "警告" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "æ–°è¦ãƒ«ãƒ¼ãƒ«ã‚’追加" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "キャッシュã¨ç¸®å°ã—㟠CSS / JS をクリアã™ã‚‹" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "プレミアム版ã§ã®ã¿åˆ©ç”¨å¯èƒ½" #: templates/timeout.php:141 msgid "Choose One" msgstr "1ã¤é¸ã¶" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ァイルãŒåŒæ§˜ã«å‰Šé™¤ã•れã¾ã™" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "ã‚‚ã— CSS ファイルを編集ã—ãŸå ´åˆã€ç¸®å°ã—㟠CSS ファイルを削除ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "対象ã®ãƒ•ォルダ" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ ファイルを削除ã§ãã¾ã™" #: inc/admin.php:1090 msgid "Exclude" msgstr "除外ã™ã‚‹" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "ç”»åƒã®æœ€é©åŒ–" #: inc/admin.php:1082 msgid "Settings" msgstr "設定" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "データベース クリーンアップ" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN 設定" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "JS を除外" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "CSS を除外" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "クッキーを除外" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "User-Agents を除外" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "固定ページを除外" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "イメージツールを最é©åŒ–" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "タイムアウト ルール" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "キャッシュ 統計" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "投稿/固定ページã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "æŠ•ç¨¿ã‚„å›ºå®šãƒšãƒ¼ã‚¸ã®æ›´æ–°å¾Œã«ã©ã®ã‚ˆã†ã«ã—ã¾ã™ã‹ï¼Ÿ" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "ページé€ã‚Šã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "投稿タグã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "投稿カテゴリーã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "ホームページã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "æ–°ã—ã„æŠ•ç¨¿ã‚’å…¬é–‹å¾Œã«ã©ã®ã‚ˆã†ã«ã—ã¾ã™ã‹ï¼Ÿ" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "完了後ã«å…ˆèª­ã¿ã‚’å†ã‚¹ã‚¿ãƒ¼ãƒˆ" #: templates/preload.php:210 msgid "pages per minute" msgstr "1分ã‚ãŸã‚Šãƒšãƒ¼ã‚¸æ•°" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "カスタムタクソノミー" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "カスタム投稿タイプ" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "添付ファイル" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "ã‚¿ã‚°" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "固定ページ" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "カテゴリー" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "投稿" #: templates/preload.php:102 msgid "Homepage" msgstr "ホームページ" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "JS ファイルを統åˆã—㦠HTTP リクエストを減らã™" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "ブラウザã®ãƒ“ューãƒã‚¤ãƒ³ãƒˆã«å…¥ã£ãŸæ™‚ã€ç”»åƒã‚„ iframe を読ã¿è¾¼ã‚€" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Google フォントをéžåŒæœŸã§èª­ã¿è¾¼ã‚€" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google フォント" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "レンダリングブロック JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "絵文字ã®ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ CSS ã‚„ wp-emoji-release.min.js を削除ã§ãã¾ã™" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "絵文字を無効ã«ã™ã‚‹" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "リピート訪å•者ã®ãƒšãƒ¼ã‚¸èª­ã¿è¾¼ã¿æ™‚間を減らã™" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "ブラウザ キャッシュ" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "サーãƒãƒ¼ã‹ã‚‰é€ä¿¡ã•れるファイルã®ã‚µã‚¤ã‚ºã‚’減らã™" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "JS ã‚’ã•らã«çµ±åˆ" #: inc/admin.php:1316 msgid "Combine Js" msgstr "JS ã‚’çµ±åˆ" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "JS ファイルã®ã‚µã‚¤ã‚ºã‚’減らã™" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "JS を縮å°" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "CSSファイルを統åˆã—ã¦HTTPリクエストを減らã™" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS ã‚’çµ±åˆ" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "ã•らã«å¼·åŠ›ãª CSS ã®ç¸®å°" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS ã‚’ç¸®å° Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "CSS ファイルã®ã‚µã‚¤ã‚ºã‚’減らã™" #: inc/admin.php:1270 msgid "Minify Css" msgstr "CSS を縮å°" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "ã•らã«å¼·åŠ›ãª HTML ã®ç¸®å°" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML ã‚’ç¸®å° Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "HTMLã®ã‚µã‚¤ã‚ºã‚’減らã™" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML を縮å°" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "投稿や固定ページを更新ã—ãŸæ™‚ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ァイルを削除" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "投稿更新" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "投稿や固定ページを公開ã—ãŸæ™‚ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ァイルを削除" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "æ–°è¦æŠ•ç¨¿" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "モãƒã‚¤ãƒ«ç”¨ãƒ†ãƒ¼ãƒžã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’作æˆ" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "モãƒã‚¤ãƒ«ç”¨ãƒ†ãƒ¼ãƒž" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "デスクトップ用ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’モãƒã‚¤ãƒ«ãƒ‡ãƒã‚¤ã‚¹ã«è¡¨ç¤ºã—ãªã„" #: inc/admin.php:1195 msgid "Mobile" msgstr "モãƒã‚¤ãƒ«" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "ログインユーザーã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’表示ã—ãªã„" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "ログインユーザー" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "自動的ã«ã‚µã‚¤ãƒˆã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’作æˆã™ã‚‹" #: inc/admin.php:1157 msgid "Preload" msgstr "先読ã¿" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "SQL クエリー数を減らã™" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "ウィジェット キャッシュ" #: inc/admin.php:1119 msgid "Enable" msgstr "有効化" #: inc/admin.php:1118 msgid "Cache System" msgstr "システム キャッシュ" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "15日毎ã«1度" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "7日毎ã«1度" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "3日毎ã«1度" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "10時間毎ã«1度" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "9時間毎ã«1度" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "8時間毎ã«1度" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "7時間毎ã«1度" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "5時間毎ã«1度" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "4時間毎ã«1度" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "3時間毎ã«1度" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "2時間毎ã«1度" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "10æ—¥ã«1度" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "最もシンプルã§é€Ÿã„ WP キャッシュシステム" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://ja.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "1年毎ã«1度" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "1ヶ月ã«1度" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "1日毎ã«1度" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "6時間毎ã«1度" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "1時間毎ã«1度" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "1時間ã«2度" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "15分毎ã«1度" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "5分毎ã«1度" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "1分毎ã«1度"wp-fastest-cache/languages/wp-fastest-cache-en_GB.po000064400000037266151435171370016343 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in English (UK) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-06-13 12:11:20+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: en_GB\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "At least one sitemap must be added" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "You can customise the advanced settings through this section." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Advanced settings" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "You can specify sitemaps to be used for preloading." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Sitemaps" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "You can specify the contents to be used for preloading and you can sort them as well." #: templates/preload.php:86 msgid "Content Types" msgstr "Content types" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "You can specify the method you want the preload feature to use through this section." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Choose a method" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Preload settings" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Some JS sources will not be loaded until scrolling or moving the mouse" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Delay JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache options" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "has Yandex Click ID parameters" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Clearing specific pages" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Save" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancel" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Toolbar Settings" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Clear Cache of All Sites" #: wpFastestCache.php:439 msgid "Settings" msgstr "Settings" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Clear cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminate render-blocking JavaScript resources" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Options have been saved" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "has WooCommerce Items in basket" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "has Google Analytics Parameters" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archives" #: templates/timeout.php:189 msgid "Server Time" msgstr "Server Time" #: templates/timeout.php:169 msgid "delete the files" msgstr "delete the files" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contains" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Is Equal To" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Starts With" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Homepage" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "All" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Exclude Page Wizard" #: templates/timeout.php:124 msgid "Then" msgstr "Then" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "If REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Cache Timeout Wizard" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Lazy Load Settings" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Enable Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Please update" #: templates/update_success.php:9 msgid "Success" msgstr "Success" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Warning" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Add New Rule" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Only available in Premium version" #: templates/timeout.php:141 msgid "Choose One" msgstr "Choose one" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "All cache files will be removed as well" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "If you modify any CSS file, you have to delete minified CSS files" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Target folder" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "You can delete all cache files" #: inc/admin.php:1090 msgid "Exclude" msgstr "Exclude" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Image Optimisation" #: inc/admin.php:1082 msgid "Settings" msgstr "Settings" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Database cleanup" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN settings" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Exclude JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Exclude CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Exclude cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Exclude User-Agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Exclude Pages" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Optimise Image Tool" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Timeout Rules" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Cache Statistics" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Clear Cache of Post / Page" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "What do you want to happen after an update of post or page?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Clear Cache of Pagination" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Clear Cache of Post Tags" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Clear Cache of Post Categories" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Clear homepage cache" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Clear All Cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "What do you want to happen after publishing the new post?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Restart After Completed" #: templates/preload.php:210 msgid "pages per minute" msgstr "pages per minute" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Custom Taxonomies" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Custom Post Types" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Attachments" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tags" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Pages" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categories" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Posts" #: templates/preload.php:102 msgid "Homepage" msgstr "Homepage" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reduce HTTP requests through combined js files" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Load images and iframes when they enter the browsers viewport" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Load Google Fonts asynchronously" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Render Blocking Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "You can remove the emoji inline CSS and wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Disable Emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reduce page load times for repeat visitors" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Browser Caching" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reduce the size of files sent from your server" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combine Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "You can decrease the size of js files" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minify Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reduce http requests through combined CSS files" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combine CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "More powerful minify CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "You can decrease the size of CSS files" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minify CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "More powerful minify HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "You can decrease the size of the page" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minify HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Clear cache files when a post or page is updated" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Update Post" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Clear cache files when a post or page is published" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "New Post" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Create cache for mobile theme" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobile Theme" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Don't show the cached version for desktop to mobile devices" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobile" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Don't show the cached version for logged-in users" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Logged-in Users" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Create the cache of all the site automatically" #: inc/admin.php:1157 msgid "Preload" msgstr "Preload" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reduce the number of SQL queries" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget Cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Enable" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cache System" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Once Every 15 Days" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Once Every 7 Days" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Once Every 3 Days" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Once Every 10 Hours" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Once Every 9 Hours" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Once Every 8 Hours" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Once Every 7 Hours" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Once Every 5 Hours" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Once Every 4 Hours" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Once Every 3 Hours" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Once Every 2 Hours" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Once Every 10 Days" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "The simplest and fastest WP Cache system" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Once a Year" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Once a Month" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Once a Day" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Once Every 6 Hours" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Once an Hour" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Twice an Hour" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Once Every 15 Minutes" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Once Every 5 Minutes" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Once Every 1 Minute"wp-fastest-cache/languages/wp-fastest-cache-tr_TR.po000064400000040565151435171370016417 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Turkish # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-06-16 07:39:05+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: tr\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "En az bir site haritası eklenmelidir" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "GeliÅŸmiÅŸ ayarları bu bölümden özelleÅŸtirebilirsiniz." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "GeliÅŸmiÅŸ Ayarlar" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Ön yükleme için kullanılacak olan site haritalarını belirleyebilirsiniz." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Site haritaları" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Ön yükleme için kullanılacak içerikleri belirleyebilir ve bunları sıralayabilirsiniz." #: templates/preload.php:86 msgid "Content Types" msgstr "İçerik Türleri" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Ön yükleme özelliÄŸinin kullanmasını istediÄŸiniz yöntemi bu bölüm üzerinden belirtebilirsiniz." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Bir Yöntem Seçin" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Ön Yükleme Ayarları" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Bazı js kaynakları fareyi kaydırana veya hareket ettirene kadar yüklenmeyecektir" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "JS'leri Geciktir" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache Seçenekleri" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "parametre olarak Yandex Click ID var" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Belirli Sayfaları Temizle" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Kaydet" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "İptal Et" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Araç ÇubuÄŸu Ayarları" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Tüm Sitelerin ÖnbelleÄŸini Temizle" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ayarlar" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "ÖnbelleÄŸi Temizle" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "OluÅŸturmayı engelleyen JavaScript kaynaklarını kaldır" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Ayarlar Kaydedildi" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "sepette WooCommerce ögeleri var" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "parametre olarak Google Analytics parametreleri varsa" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "ArÅŸivler" #: templates/timeout.php:189 msgid "Server Time" msgstr "Sunucu Zamanı" #: templates/timeout.php:169 msgid "delete the files" msgstr "dosyaları sil" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "İçeren" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "EÅŸit ise" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "İle BaÅŸlayan" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Ana Sayfa" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Tümü" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Sayfa Hariç Tutma Sihirbazı" #: templates/timeout.php:124 msgid "Then" msgstr "Öyleyse" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "EÄŸer REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Önbellek Zaman Aşımı Sihirbazı" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Lazy Load Ayarları" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip Aktivasyonu" #: templates/update_now.php:9 msgid "Please Update" msgstr "Lütfen Güncelleyin" #: templates/update_success.php:9 msgid "Success" msgstr "BaÅŸarılı" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Uyarı" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Yeni Kural Ekle" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Sadece Premium versiyonda mevcut" #: templates/timeout.php:141 msgid "Choose One" msgstr "Birini Seç" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Tüm önbellek dosyaları da silinecek" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "EÄŸer bir css dosyası deÄŸiÅŸtirdiyseniz, küçültülmüş olan css/js dosyalarını da temizlemelisiniz" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Hedef klasör" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Tüm önbelleÄŸi temizleyebilirsiniz" #: inc/admin.php:1090 msgid "Exclude" msgstr "Hariç" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Resim Optimizasyonu" #: inc/admin.php:1082 msgid "Settings" msgstr "Ayarlar" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Veritabanı Temizleme" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN Ayarları" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Hariç Tutulan JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Hariç Tutulan CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Hariç Tutulan Çerezler" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Hariç Tutulan User-Agent" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Hariç Tutulan Sayfalar" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Resim Optimizasyon Aracı" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Zaman Aşımı Kuralları" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Önbellek İstatistikleri" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Yazı ya da sayfanın önbelleÄŸini temizle" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Yazı veya sayfa güncellendikten sonra ne olmasını istiyorsun?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Sayfalandırma ÖnbelleÄŸini Temizle" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Gönderi Etiketlerinin ÖnbelleÄŸini Temizle" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Gönderi Kategorilerinin ÖnbelleÄŸini Temizle" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Ana Sayfanın ÖnbelleÄŸini Temizle" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Tüm ÖnbelleÄŸi Temizle" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Yeni yazı yayımlandıktan sonra ne olmasını istiyorsun?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Tamam" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Tamamlandıktan Sonra Yeniden BaÅŸlat" #: templates/preload.php:210 msgid "pages per minute" msgstr "dakika başına sayfa" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Özel Sınıflandırmalar" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Özel Yazı Türleri" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Ekler" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiketler" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Sayfalar" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategoriler" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Yazılar" #: templates/preload.php:102 msgid "Homepage" msgstr "Ana Sayfa" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "JS dosyalarını birleÅŸtirerek HTTP isteklerini azaltın" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Resimleri ve iframleri tarayıcının görünen alanına gelince yükle" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Google Fontlarını eÅŸ zamansız (asenkron) olarak yükle" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "OluÅŸturma Engelleyici Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Emoji inline CSS ve wp-emoji-release.min.js kaynağını kaldırabilirsiniz" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Emojileri Kapat" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Tekrar gelen ziyaretçiler için sayfa yükleme sürelerini azaltın" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Tarayıcı ÖnbelleÄŸi" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Sunucudan gönderilen dosyaların boyutunu küçült" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Js BirleÅŸtir Ekstra" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Js BirleÅŸtir" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "JS dosyalarının boyununu küçültebilirsiniz" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "JS Küçült" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "CSS dosyalarını birleÅŸtirerek HTTP isteklerini azaltın" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS BirleÅŸtirme" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Daha güçlü CSS küçültme" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS Küçült Ekstra" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "CSS dosyalarının boyununu küçültebilirsiniz" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Css Küçült" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Daha güçlü HTML küçültme" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML Küçült Ekstra" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Sayfanın boyutunu küçültebilirsiniz" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML Küçült" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Bir yazı ya da sayfa düzenlendiÄŸinde önbelleÄŸi temizle" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Yazı Güncelleme" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Yeni bir yazı veya sayfa yayımlandığında önbelleÄŸi temizle" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Yeni yazı" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Mobil tema için önbellek oluÅŸtur" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobil Tema" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Masaüstünden mobil cihazlara önbelleÄŸe alınmış sürümü gösterme" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "GiriÅŸ yapan kullanıcılara önbelleÄŸi gösterme" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "GiriÅŸ Yapan Kullanıcılar" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Tüm sitenin önbelleÄŸini otomatik oluÅŸtur" #: inc/admin.php:1157 msgid "Preload" msgstr "Önyükleme" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "SQL sorgu sayısını azalt" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "BileÅŸen ÖnbelleÄŸi" #: inc/admin.php:1119 msgid "Enable" msgstr "Etkin" #: inc/admin.php:1118 msgid "Cache System" msgstr "Önbellek" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "15 Günde Bir Kez" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "7 Günde Bir Kez" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "3 Günde Bir Kez" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "10 Saatte Bir Kez" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "9 Saatte Bir Kez" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "8 Saatte Bir Kez" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "7 Saatte Bir Kez" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "5 Saatte Bir Kez" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "4 Saatte Bir Kez" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "3 Saatte Bir Kez" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "2 Saatte Bir Kez" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "10 Günde Bir Kez" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "En basit ve en hızlı WP Cache sistemi" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Yılda Bir kez" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Ayda Bir Kez" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Günde Bir Kez" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "6 Saatte Bir Kez" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Saatte Bir Kez" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Saatte 2 Kez" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "15 Dakikada Bir Kez" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "5 Dakikada Bir Kez" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "1 Dakikada Bir Kez"wp-fastest-cache/languages/index.html000064400000000000151435171370013642 0ustar00wp-fastest-cache/languages/wp-fastest-cache-fa_IR.po000064400000042055151435171370016341 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Persian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2022-09-10 05:23:27+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: GlotPress/4.0.1\n" "Language: fa\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "ذخيره" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "لغو" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "تنظیمات نوار ابزار" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "حذ٠کش از تمامی سایت‌ها" #: wpFastestCache.php:439 msgid "Settings" msgstr "تنظیمات" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "پاکسازی Ú©Ø´" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "برطر٠کردن مشکل Eliminate render-blocking JavaScript resources" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "تنظیمات ذخیره شدند" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "دارای محصول در سبد خرید" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "دارای پارامتر های Ú¯ÙˆÚ¯Ù„ آنالیتیک" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "بایگانی ها" #: templates/timeout.php:189 msgid "Server Time" msgstr "زمان سرور" #: templates/timeout.php:169 msgid "delete the files" msgstr "Ø­Ø°Ù ÙØ§ÛŒÙ„‌ها" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "شامل" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "برابر با" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "شروع Ù…ÛŒ شود با" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "ØµÙØ­Ù‡ اصلی" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "همه" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "عدم ÙØ¹Ø§Ù„ سازی در برگه های" #: templates/timeout.php:124 msgid "Then" msgstr "سپس" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "اگر لینک درخواستی برابر" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "تایم بندی Ú©Ø´" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "تنظیمات Lazy Load" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "ÙØ¹Ø§Ù„ کردن Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Ù„Ø·ÙØ§ بروزرسانی کنید" #: templates/update_success.php:9 msgid "Success" msgstr "موÙقیت آمیز" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "هشدار" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Ø§ÙØ²ÙˆØ¯Ù† قانون جدید" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Ùقط در نسخه پریمیوم در دسترس است." #: templates/timeout.php:141 msgid "Choose One" msgstr "یکی را انتخاب Ú©Ù†" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "تمامی ÙØ§ÛŒÙ„ های Ú©Ø´ حذ٠خواهد شد" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "در صورت تغییر در ÙØ§ÛŒÙ„ های سی اس اس، باید Ú©Ø´ Ùˆ ÙØ§ÛŒÙ„‌های ÙØ´Ø±Ø¯Ù‡ را حذ٠کنید" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "پوشه هدÙ" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "حذ٠تمامی ÙØ§ÛŒÙ„‌های Ú©Ø´" #: inc/admin.php:1090 msgid "Exclude" msgstr "عدم تاثیر بر" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "بهینه‌سازی تصاویر" #: inc/admin.php:1082 msgid "Settings" msgstr "تنظیمات" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "پاکسازی پایگاه‌داده" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "تنظیمات CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "عدم اعمال بر ÙØ§ÛŒÙ„ های جاوااسکریپت" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "عدم اعمال بر ÙØ§ÛŒÙ„‌های سی اس اس" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "عدم اعمال بر Ú©ÙˆÚ©ÛŒ های" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "عدم اعمال بر User-Agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "عدم اعمال در برگه های" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "بهینه سازی تصاویر" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "تایم بندی ÙØ§ÛŒÙ„ های Ú©Ø´" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "آمار Ú©Ø´" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "حذ٠کش پست ها Ùˆ برگه ها" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "بعد از بروزرسانی برگه ها Ùˆ پست ها Ú†Ù‡ عملی مایل هستید انجام شود؟" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "حذ٠کش Pagination" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "حذ٠کش تگ های پست ها" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "حذ٠کش دسته بندی پست ها" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "حذ٠تمام Ú©Ø´" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "بعد از انتشار پست جدید Ú†Ù‡ عملی میخواهید انجام شود؟" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "تایید" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "ریستارت بعد از تکمیل" #: templates/preload.php:210 msgid "pages per minute" msgstr "برگه در دقیقه" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "تکسونومی های Ø³ÙØ§Ø±Ø´ÛŒ" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "پست تایپ های Ø³ÙØ§Ø±Ø´ÛŒ" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "پیوست‌ها" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "برچسب‌ها" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "برگه‌ها" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "دسته‌بندی‌ها" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "نوشته‌ها" #: templates/preload.php:102 msgid "Homepage" msgstr "ØµÙØ­Ù‡ نخست" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "با ÙØ¹Ø§Ù„ کردن این قسمت تعداد درخواست های HTTP کاهش Ù…ÛŒ یابد" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "لود تصاویر Ùˆ Ø¢ÛŒ ÙØ±ÛŒÙ… ها با قرار Ú¯Ø±ÙØªÙ† در حالت دید کاربر" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "لود Ùونت های Ú¯ÙˆÚ¯Ù„ بصورت asynchronously" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Ùونت‌های Ú¯ÙˆÚ¯Ù„" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "ÙØ¹Ø§Ù„ کردن Render Blocking Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "حذ٠سی اس اس های مرتبط Ùˆ wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ کردن اموجی ها" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "کاهش زمان لود برای کاربران تکراری" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Ú©Ø´ مرورگر" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "کاهش حجم ÙØ§ÛŒÙ„ های ارسالی از سمت سرور" #: inc/admin.php:1342 msgid "Gzip" msgstr "GZip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "ترکیب کردن قوی تر ÙØ§ÛŒÙ„ های JS" #: inc/admin.php:1316 msgid "Combine Js" msgstr "ترکیب کردن ÙØ§ÛŒÙ„ های JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی Ùˆ کاهش حجم ÙØ§ÛŒÙ„ های جاوا اسکریپت" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "با ÙØ¹Ø§Ù„ کردن این قسمت تعداد درخواست های HTTP کاهش Ù…ÛŒ یابد" #: inc/admin.php:1291 msgid "Combine Css" msgstr "ترکیب ÙØ§ÛŒÙ„ های CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی بیشتر Ùˆ قوی تر ÙØ§ÛŒÙ„ های CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی قویتر CSS" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی Ùˆ کاهش حجم ÙØ§ÛŒÙ„ های CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "باعث کاهش بیشتر حجم Ùˆ ÙØ´Ø±Ø¯Ù‡ سازی بیشتر Ù…ÛŒ شود" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی قویتر HTML" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "باعث کاهش حجم برگه ها میشود" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "ÙØ´Ø±Ø¯Ù‡ سازی HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "حذ٠کش در صورت بروز رسانی برگه Ùˆ پست" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "بروزرسانی پست" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "حذ٠کش در صورت انتشار پست Ùˆ برگه" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "پست جدید" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "ایجاد Ú©Ø´ برای موبایل" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "تم موبایل" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "عدم نمایش Ú©Ø´ دسکتاپ برای موبایل" #: inc/admin.php:1195 msgid "Mobile" msgstr "موبایل" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "عدم نمایش حالت Ú©Ø´ شده برای کاربران وارد شده" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "کاربران وارد شده" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "ایجاد اتوماتیک Ú©Ø´ تمامی قسمت های سایت" #: inc/admin.php:1157 msgid "Preload" msgstr "پیش‌بارگذاری" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "کاهش تعداد کوئری های دیتابیس" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Ú©Ø´ ابزارک ها" #: inc/admin.php:1119 msgid "Enable" msgstr "ÙØ¹Ø§Ù„ کردن" #: inc/admin.php:1118 msgid "Cache System" msgstr "ÙØ¹Ø§Ù„ کردن Ú©Ø´" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "یکبار هر 15 روز" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "یکبار هر 7 روز" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "یکبار هر 3 روز" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "یکبار هر 10 ساعت" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "یکبار هر 9 ساعت" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "یکبار هر 8 ساعت" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "یکبار هر 7 ساعت" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "یکبار هر 5 ساعت" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "یکبار هر 4 ساعت" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "یکبار هر 3 ساعت" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "یکبار هر 2 ساعت" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "یکبار هر 10 روز" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "ساده ترین Ùˆ سریعترین پلاگین Ú©Ø´ وردپرس" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "سریعترین Ú©Ø´ وردپرس" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "یکبار در سال" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "یکبار در ماه" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "یکبار در روز" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "هر 6 ساعت یکبار" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "هرساعت یکبار" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "هرساعت دوبار" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "یکبار در 15 دقیقه" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "یکبار در هر 5 دقیقه" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "یکبار در هر دقیقه"wp-fastest-cache/languages/wp-fastest-cache-ko_KR.po000064400000041061151435171370016362 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Korean # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-26 05:50:44+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: GlotPress/4.0.1\n" "Language: ko_KR\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "ê´€ë¦¬ìž ë„구 모ìŒì˜ WP 가장 빠른 ìºì‹œ 메뉴는 아래ì—서 ì„ íƒí•œ ì‚¬ìš©ìž ì—­í• ì— í‘œì‹œë©ë‹ˆë‹¤." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "ì‚¬ìš©ìž ì—­í• " #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "사ì´íŠ¸ë§µì„ í•˜ë‚˜ ì´ìƒ 추가해야 합니다." #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "ì´ ì„¹ì…˜ì„ í†µí•´ 고급 ì„¤ì •ì„ ì‚¬ìš©ìž ì •ì˜í•  수 있습니다." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "고급 설정" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "사전 ë¡œë”©ì— ì‚¬ìš©í•  사ì´íŠ¸ë§µì„ ì§€ì •í•  수 있습니다." #: templates/preload.php:150 msgid "Sitemaps" msgstr "사ì´íŠ¸ë§µ" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "사전 ë¡œë”©ì— ì‚¬ìš©í•  콘í…츠를 지정할 수 있으며 정렬할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤." #: templates/preload.php:86 msgid "Content Types" msgstr "콘í…츠 유형" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "ì´ ì„¹ì…˜ì„ í†µí•´ 프리로드 ê¸°ëŠ¥ì— ì‚¬ìš©í•  ë°©ë²•ì„ ì§€ì •í•  수 있습니다." #: templates/preload.php:72 msgid "Choose a Method" msgstr "방법 ì„ íƒ" #: templates/preload.php:56 msgid "Preload Settings" msgstr "사전 로드 설정" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "ì¼ë¶€ ìžë°”스í¬ë¦½íЏ 소스는 마우스를 스í¬ë¡¤í•˜ê±°ë‚˜ 움ì§ì¼ 때까지 로드ë˜ì§€ 않습니다." #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "ìžë°”스í¬ë¦½íЏ 지연" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache 옵션" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "yandex í´ë¦­ ID 매개변수 있ìŒ" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "특정 페ì´ì§€ 지우기" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "저장" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "취소" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "ë„구 ëª¨ìŒ ì„¤ì •" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "모든 사ì´íŠ¸ì˜ ìºì‹œ 지우기" #: wpFastestCache.php:439 msgid "Settings" msgstr "설정" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "ìºì‹œ 지우기" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "ë Œë”ë§ ì°¨ë‹¨ JavaScript 리소스 제거" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "ì˜µì…˜ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "ìž¥ë°”êµ¬ë‹ˆì— ìš°ì»¤ë¨¸ìŠ¤ í•­ëª©ì´ ìžˆìŠµë‹ˆë‹¤" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "구글 ì• ë„리틱스 매개변수가 있ìŒ" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "ì•„ì¹´ì´ë¸Œ" #: templates/timeout.php:189 msgid "Server Time" msgstr "서버 시간" #: templates/timeout.php:169 msgid "delete the files" msgstr "파ì¼ì„ ì‚­ì œ" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "다ìŒì„ í¬í•¨í•¨" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "다ìŒê³¼ ë™ì¼í•¨" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "다ìŒìœ¼ë¡œ 시작" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "홈페ì´ì§€" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "모ë‘" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "페ì´ì§€ 제외 마법사" #: templates/timeout.php:124 msgid "Then" msgstr "ê·¸ 다ìŒì—" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "REQUEST_URIì¸ ê²½ìš°" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "ìºì‹œ 시간 초과 마법사" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "지연 로드 설정" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip 활성화" #: templates/update_now.php:9 msgid "Please Update" msgstr "ì—…ë°ì´íЏ 해주세요" #: templates/update_success.php:9 msgid "Success" msgstr "성공" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "경고" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "새 규칙 추가" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "ìºì‹œ 지우기 ë° ì¶•ì†Œëœ CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Premium 버전ì—서만 사용 가능" #: templates/timeout.php:141 msgid "Choose One" msgstr "ì„ íƒ" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "모든 ìºì‹œ 파ì¼ë„ 제거ë©ë‹ˆë‹¤." #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "CSS 파ì¼ì„ 수정하면 ì¶•ì†Œëœ CSS 파ì¼ì„ 삭제해야 합니다." #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "ëŒ€ìƒ í´ë”" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "모든 ìºì‹œ 파ì¼ì„ 삭제할 수 있습니다." #: inc/admin.php:1090 msgid "Exclude" msgstr "제외" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "ì´ë¯¸ì§€ 최ì í™”" #: inc/admin.php:1082 msgid "Settings" msgstr "설정" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "ë°ì´í„°ë² ì´ìФ 정리" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN 설정" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "JS 제외" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "CSS 제외" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "쿠키 제외" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "ì‚¬ìš©ìž ì—ì´ì „트 제외" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "페ì´ì§€ 제외" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "ì´ë¯¸ì§€ 최ì í™” ë„구" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "시간 초과 규칙" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "ìºì‹œ 통계" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "게시물/페ì´ì§€ì˜ ìºì‹œ 지우기" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "게시물ì´ë‚˜ 페ì´ì§€ë¥¼ ì—…ë°ì´íŠ¸í•œ 후 어떻게 하시겠습니까?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "페ì´ì§€ 매김 ìºì‹œ 지우기" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "게시물 태그 ìºì‹œ 지우기" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "게시물 카테고리 ìºì‹œ 지우기" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "홈 페ì´ì§€ ìºì‹œ 지우기" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "모든 ìºì‹œ 지우기" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "새 ê²Œì‹œë¬¼ì„ ê²Œì‹œí•œ 후 어떻게 ë˜ê¸°ë¥¼ ì›í•˜ì‹­ë‹ˆê¹Œ?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "확ì¸" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "완료 후 다시 시작" #: templates/preload.php:210 msgid "pages per minute" msgstr "페ì´ì§€ (분당)" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "ì‚¬ìš©ìž ì •ì˜ íƒì†Œë…¸ë¯¸" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "ì‚¬ìš©ìž ì •ì˜ ê²Œì‹œë¬¼ 유형" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "첨부파ì¼" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "태그" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "페ì´ì§€" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "카테고리" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "게시물" #: templates/preload.php:102 msgid "Homepage" msgstr "홈페ì´ì§€" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "ê²°í•©ëœ JS 파ì¼ì„ 통해 HTTP 요청 ê°ì†Œ" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "브ë¼ìš°ì € ë·°í¬íŠ¸ì— ë“¤ì–´ê°ˆ 때 ì´ë¯¸ì§€ ë° iframe 로드" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "구글 í°íŠ¸ë¥¼ 비ë™ê¸°ì‹ìœ¼ë¡œ 로드" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "구글 í°íЏ" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "ë Œë”ë§ ì°¨ë‹¨ JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "ì´ëª¨í‹°ì½˜ ì¸ë¼ì¸ css ë° wp-emoji-release.min.js를 제거할 수 있습니다." #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "ì´ëª¨í‹°ì½˜ 비활성화" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "반복 방문ìžì˜ 페ì´ì§€ 로드 시간 단축" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "브ë¼ìš°ì € ìºì‹±" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "서버ì—서 보낸 íŒŒì¼ í¬ê¸° 줄ì´ê¸°" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Js ê²°í•© 플러스" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Js ê²°í•©" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "JS 파ì¼ì˜ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다." #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "JS 축소" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "ê²°í•©ëœ CSS 파ì¼ì„ 통해 HTTP 요청 ê°ì†Œ" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS ê²°í•©" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "ë” ê°•ë ¥í•œ CSS 축소" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS 축소 플러스" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "CSS 파ì¼ì˜ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다." #: inc/admin.php:1270 msgid "Minify Css" msgstr "CSS 축소" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "ë” ê°•ë ¥í•œ HTML 축소" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML 축소 플러스" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "페ì´ì§€ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다." #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML 축소" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "게시물ì´ë‚˜ 페ì´ì§€ê°€ ì—…ë°ì´íŠ¸ë  ë•Œ ìºì‹œ íŒŒì¼ ì§€ìš°ê¸°" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "게시물 ì—…ë°ì´íЏ" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "게시물 ë˜ëŠ” 페ì´ì§€ê°€ ê²Œì‹œë  ë•Œ ìºì‹œ íŒŒì¼ ì§€ìš°ê¸°" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "새 게시물" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "ëª¨ë°”ì¼ í…Œë§ˆìš© ìºì‹œ 만들기" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "ëª¨ë°”ì¼ í…Œë§ˆ" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "ë°ìФí¬í†±ìš© ìºì‹œ ë²„ì „ì„ ëª¨ë°”ì¼ ê¸°ê¸°ì— í‘œì‹œí•˜ì§€ 않ìŒ" #: inc/admin.php:1195 msgid "Mobile" msgstr "모바ì¼" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "로그ì¸í•œ 사용ìžì—게 ìºì‹œëœ ë²„ì „ì„ í‘œì‹œí•˜ì§€ 않ìŒ" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "로그ì¸í•œ 사용ìž" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "모든 사ì´íŠ¸ì˜ ìºì‹œë¥¼ ìžë™ìœ¼ë¡œ ìƒì„±" #: inc/admin.php:1157 msgid "Preload" msgstr "사전 로드" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "SQL 쿼리 수 줄ì´ê¸°" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "위젯 ìºì‹œ" #: inc/admin.php:1119 msgid "Enable" msgstr "활성화" #: inc/admin.php:1118 msgid "Cache System" msgstr "시스템 ìºì‹œ" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "15ì¼ì— 한 번" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "7ì¼ì— 한 번" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "3ì¼ì— 한 번" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "10ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "9ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "8ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "7ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "5ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "4ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "3ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "2ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "10ì¼ì— 한 번" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "가장 간단하고 빠른 WP ìºì‹œ 시스템" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "ì¼ë…„ì— í•œë²ˆ" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "í•œë‹¬ì— í•œë²ˆ" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "í•˜ë£¨ì— í•œ 번" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "6ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "한 ì‹œê°„ì— í•œ 번" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "한 ì‹œê°„ì— ë‘ ë²ˆ" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "15ë¶„ì— í•œ 번" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "5ë¶„ì— í•œ 번" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "1ë¶„ì— í•œ 번"wp-fastest-cache/languages/wp-fastest-cache-es_AR.mo000064400000021150151435171370016340 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ- >_x8•Î×àõ '2Z c oz $žÃ'ã+ )7FaH¨ ñ þ *#1N €¡¼ÙLï:<:w ²¼ ÄÑ Ùå õ 1L^cu‡S–ê 0,T]² ÆÔäó +J jx€”ªÀÖî-BWnƒ˜­Â×çö&)?i‰’§ °<º<÷H4#};¡Ý ø!3 ;H Q[)n˜¡#³×ë  > I] § -¸ ,æ '!+;!Rg!º!%Î!-ô!1""T"SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2020-08-21 00:34:21+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es_AR Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAgregar una nueva reglaTodoTambién se van a eliminar todos los archivos del cachéArchivosAdjuntosCaché del navegadorAjustes de la CDNEstadísticas del cachéSistema de cachéAsistente del tiempo límite del cachéCancelarCategoríasElegí unoVaciar toda el cachéBorrar cachéVaciar el caché de todos los sitiosVaciar el caché de paginaciónVaciar el caché de entradas / páginasVaciar el caché de categorías de entradasVaciar el caché de etiquetas de entradasVaciar los archivos del caché cuando se publica una entrada o páginaVaciar los archivos del caché cuando se actualiza una entrada o páginaCombinar CSSCombinar JSCombine Js PlusContieneCrear el caché para el tema para móvilesCrear automáticamente el caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosDesactivar los emojisNo mostrar la versión de escritorio del caché en los dispositivos móvilesNo mostrar la versión del caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificás cualquier archivo CSS, tenés que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez a la horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesComienza conCorrectoEtiquetasCarpeta de destinoEl sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces a la horaActualizar la entradaWP Fastest CacheAdvertencia¿Qué querés que pase después de publicar la nueva entrada?¿Qué querés que pase después de actualizar una entrada o una página?Widget de cachéPodés reducir el tamaño de los archivos CSSPodés reducir el tamaño de los archivos JSPodés reducir el tamaño de la páginaPodés borrar todos los archivos del cachéPodés eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritohttp://es.wordpress.org/plugins/wp-fastest-cache/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-es_EC.mo000064400000021176151435171370016335 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ- >_x7•ÍÖßô!)3] f r|’$£È'è+)<HfJ¯ ú #*,1W ‰ªÅâNø<G:„ ¿É ÑÞ æò  ->Ykp‚”R£ö 08Ti¾ Òàðÿ $7V v„Œ¢¸Îäü&;Pe|‘¦»Ðåõ&%)Lv–Ÿ´ ½<Ç<HA#Š;®ê &.@ HU ^h){¥®#Àä÷  @* Kk · -È ,ö '#!-K!Ry!Ì!%à!-"54"j"SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2021-01-02 11:47:06+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es_EC Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAñadir una nueva reglaTodoTambién se eliminarán todos los archivos de la cachéArchivosAdjuntosCaché del navegadorAjustes de la CDNEstadísticas de la cachéSistema de cachéAsistente del tiempo límite de la cachéCancelarCategoríasElige unoVaciar toda la cachéVaciar la cachéVaciar la caché de todos los sitiosVaciar la caché de paginaciónVaciar la caché de entradas / páginasVaciar la caché de categorías de entradasVaciar la caché de etiquetas de entradasVaciar los archivos de la caché cuando se publica una entrada o páginaVaciar los archivos de la caché cuando se actualiza una entrada o páginaCombinar CSSCombinar JSCombine Js PlusContieneCrear la caché para el tema para móvilesCrear automáticamente la caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosDesactivar los emojisNo mostrar la versión de escritorio de la caché en los dispositivos móvilesNo mostrar la versión de la caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada 1 minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez por horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesComienza conCorrectoEtiquetasCarpeta de destinoEl sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces por horaActualizar la entradaWP Fastest CacheAdvertencia¿Qué quieres que ocurra después de publicar la nueva entrada?¿Qué quieres que ocurra después de actualizar una entrada o una página?Widget de cachéPuedes reducir el tamaño de los archivos CSSPuedes reducir el tamaño de los archivos JSPuedes reducir el tamaño de la páginaPuedes borrar todos los archivos de la cachéPuedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritohttps://es-ec.wordpress.org/plugins/wp-fastest-cache/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-es_ES.mo000064400000025132151435171370016351 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\m‹¤¼Î7Ó )>G\n‰)›Å Î Úäó #$>(cŒ'¬+Ô)H*Js¾ Û èô * 1K }ž¹ ÖáN÷<F:ƒ ¾È ÐÝ åñ  ,=Xjo“R¢õ 07Th½ Ñßïþ   # 6 U u ƒ ‹ ¡ · Í ã û !%!:!O!d!{!!¥!º!Ï!ä!ô!""&$")K"u"•"ž"³" ¼"Æ"<Ú"<#HT###;Á#ý# $9$A$S$[$Uk$ Á$Î$ ×$á$Žô$)ƒ%­%¶%#È%ì%ÿ%&)&:& W&@c&K¤&ð&E'-G',u''¢'-Ê'Rø'KK(_—(i÷(a)%u)-›))É)2ó)&*F*SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-10 17:18:30+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAñadir una nueva reglaAjustes avanzadosTodoTambién se eliminarán todos los archivos de la cachéArchivosDebe añadirse al menos un mapa del sitioAdjuntosCaché del navegadorAjustes de la CDNEstadísticas de la cachéSistema de cachéAsistente del tiempo límite de la cachéCancelarCategoríasElige unoElegir métodoVaciar toda la cachéVaciar la cachéBorrar la caché y minimizar CSS/JSVaciar la caché de todos los sitiosVaciar la caché de la página de inicioVaciar la caché de paginaciónVaciar la caché de entradas / páginasVaciar la caché de categorías de entradasVaciar la caché de etiquetas de entradasVaciar los archivos de la caché cuando se publica una entrada o páginaVaciar los archivos de la caché cuando se actualiza una entrada o páginaVaciar páginas específicasCombinar CSSCombinar JSCombine Js PlusContieneTipos de contenidoCrear la caché para el tema para móvilesCrear automáticamente la caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosAplazar JsDesactivar los emojisNo mostrar la versión de escritorio de la caché en los dispositivos móvilesNo mostrar la versión de la caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada 1 minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez por horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarAjustes de precargaReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesMapas del sitioAlgunos orígenes de js no se cargarán hasta que se haga scroll o se mueva el ratónComienza conCorrectoEtiquetasCarpeta de destinoEl menú WP Fastest Cache de la barra de herramientas del administrador será visible para los roles de usuario seleccionados a continuación.El sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces por horaActualizar la entradaPerfiles de usuarioWP Fastest CacheOpciones de WP Fastest CacheAdvertencia¿Qué quieres que ocurra después de publicar la nueva entrada?¿Qué quieres que ocurra después de actualizar una entrada o una página?Widget de cachéPuedes personalizar los ajustes avanzados a través de esta sección.Puedes reducir el tamaño de los archivos CSSPuedes reducir el tamaño de los archivos JSPuedes reducir el tamaño de la páginaPuedes borrar todos los archivos de la cachéPuedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»Puedes especificar los mapas del sitio que se utilizarán para la precarga.Puedes especificar el contenido que se utilizará para la precarga y también puedes ordenarlo.Puedes especificar el método que quieres que utilice la función de precarga a través de esta sección.borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritotiene parámetros de ID de clic de Yandexhttps://es.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-es_CL.po000064400000041247151435171370016350 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Chile) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2025-02-14 17:49:47+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es_CL\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Debe agregarse al menos un mapa del sitio" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Puedes personalizar los ajustes avanzados a través de esta sección." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Ajustes avanzados" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Puedes especificar los mapas del sitio que se utilizarán para la precarga." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Mapas del sitio" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Puedes especificar el contenido que se utilizará para la precarga y también puedes ordenarlo." #: templates/preload.php:86 msgid "Content Types" msgstr "Tipos de contenido" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Puedes especificar el método que quieres que utilice la función de precarga a través de esta sección." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Elegir método" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Ajustes de precarga" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Algunos orígenes de js no se cargarán hasta que se haga desplazamiento o se mueva el ratón" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Aplazar Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Opciones de WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "tiene parámetros de ID de clic de Yandex" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Vaciar páginas específicas" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar la caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Vaciar la caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite de la caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Agregar una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Borrar la caché y minimizar CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elige uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se eliminarán todos los archivos de la caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puedes borrar todos los archivos de la caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas de la caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar la caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué quieres que ocurra después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar la caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar la caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar la caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Vaciar la caché de la página de inicio" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda la caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué quieres que ocurra después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puedes eliminar los emojis CSS integrados y el archivo “wp-emoji-release.min.jsâ€" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puedes reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puedes reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puedes reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos de la caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos de la caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear la caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio de la caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión de la caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente la caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://cl.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez por hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces por hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada 1 minuto"wp-fastest-cache/languages/wp-fastest-cache-es_CO.mo000064400000021176151435171370016347 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ- >_x7•ÍÖßô!)3] f r|’$£È'è+)<HfJ¯ ú #*,1W ‰ªÅâNø<G:„ ¿É ÑÞ æò  ->Ykp‚”R£ö 08Ti¾ Òàðÿ $7V v„Œ¢¸Îäü&;Pe|‘¦»Ðåõ&%)Lv–Ÿ´ ½<Ç<HA#Š;®ê &.@ HU ^h){¥®#Àä÷  @* Kk · -È ,ö '#!-K!Ry!Ì!%à!-"54"j"SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2021-10-07 04:49:27+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es_CO Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAñadir una nueva reglaTodoTambién se eliminarán todos los archivos de la cachéArchivosAdjuntosCaché del navegadorAjustes de la CDNEstadísticas de la cachéSistema de cachéAsistente del tiempo límite de la cachéCancelarCategoríasElige unoVaciar toda la cachéVaciar la cachéVaciar la caché de todos los sitiosVaciar la caché de paginaciónVaciar la caché de entradas / páginasVaciar la caché de categorías de entradasVaciar la caché de etiquetas de entradasVaciar los archivos de la caché cuando se publica una entrada o páginaVaciar los archivos de la caché cuando se actualiza una entrada o páginaCombinar CSSCombinar JSCombine Js PlusContieneCrear la caché para el tema para móvilesCrear automáticamente la caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosDesactivar los emojisNo mostrar la versión de escritorio de la caché en los dispositivos móvilesNo mostrar la versión de la caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada 1 minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez por horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesComienza conCorrectoEtiquetasCarpeta de destinoEl sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces por horaActualizar la entradaWP Fastest CacheAdvertencia¿Qué quieres que ocurra después de publicar la nueva entrada?¿Qué quieres que ocurra después de actualizar una entrada o una página?Widget de cachéPuedes reducir el tamaño de los archivos CSSPuedes reducir el tamaño de los archivos JSPuedes reducir el tamaño de la páginaPuedes borrar todos los archivos de la cachéPuedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritohttps://es-co.wordpress.org/plugins/wp-fastest-cache/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-nl_BE.mo000064400000024263151435171370016336 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\ mެÃÝ)ã 0HQar …“ ¨ ² ¿ËÜ î"û=W!r%”ºGØE f ‘ž° ¶Ã.á(@ T`Bt:·.ò ! +7 HSb uƒœ° ÍÚßèñJL drŽM¬ú  *6 GQ Xe{ ’ £¶ËÞó  0 B T f }  £ µ Ç Ù é û  !$!A!^!u! ~! ˆ! ’!Ÿ!:¹!9ô!?.""n"I‘"Û"&ï"# # *#7#X@# ™#¤#«#°#w¸#,0$]$a$q$‡$˜$ª$»$Ì$ ä$Cñ$I5% %=Œ%/Ê%-ú%*(&&S&Az&I¼&`'Ug'!½'!ß'-( /(.P((Ÿ(SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-11 13:40:40+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: nl_BE Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) InstellingenNieuwe regel toevoegenGeavanceerde instellingenAllesAlle cachebestanden worden ook verwijderdArchievenEr moet minstens één sitemap worden toegevoegdBijlagenBrowser cachingCDN instellingenCache statistiekenCache systeemCache timeout wizardAnnulerenCategorieënKies er eenKies een methodeAlle cache wissenCache wissenCache en minified CSS/JS leegmakenCache van alle websites wissenCache van homepage wissenCache van paginatie wissenCache van bericht / pagina wissenCache van bericht categorieën wissenCache van bericht tags wissenCache bestanden wissen wanneer een bericht of pagina wordt gepubliceerdCache bestanden wissen wanneer een bericht of pagina wordt bijgewerktSpecifieke pagina's wissenCSS samenvoegenCombineer JsCombineer Js PlusBevatInhoud typesCache maken voor mobiel themaDe cache van de hele website automatisch makenAangepaste berichttypesAangepaste taxonomieënDatabase opschoningVertraag JsEmojis uitschakelenDe versie in de cache voor desktop niet tonen op mobiele apparatenDe versie in de cache voor ingelogde gebruikers niet tonenElimineer render blokkering javascript bronnenEmre VonaInschakelenGzip inschakelenUitsluitenCSS uitsluitenCookies uitsluitenJS uitsluitenUitsluiten pagina wizardPagina's uitsluitenUitsluiten gebruikers-agentsGoogle FontsGzipHomepageHomepageAls REQUEST_URIAls je een css bestand wijzigt, moet je minified css bestanden verwijderenAfbeeldingoptimalisatieIs gelijk aanInstellingen voor lazy loadGoogle Fonts asynchroon ladenAfbeeldingen en iframes laden wanneer ze de viewport van de browsers betredenIngelogde gebruikersMinify CSSMinify CSS PlusMinify HTMLMinify HTML PlusMinify JsMobielMobiel themaKrachtiger minify CSSKrachtiger minify htmlNieuw berichtOKEenmaal per minuutEenmaal per 10 dagenEenmaal per 10 uurEenmaal per 15 dagenEenmaal per 15 minutenEenmaal per 2 uurEenmaal per 3 dagenEenmaal per 3 uurEenmaal per 4 uurEenmaal per 5 uurEen keer per 5 minutenEenmaal per 6 uurEenmaal per 7 dagenEenmaal per 7 uurEenmaal per 8 uurEenmaal per 9 uurEenmaal per dagEenmaal per maandEenmaal per jaarEenmaal per uurAlleen beschikbaar in Premium versieOptimaliseer afbeelding toolOpties zijn opgeslagenPagina'sBijwerkenBerichtenVooraf ladenVooraf laden instellingenHTTP aanvragen verminderen via gecombineerde css bestandenHTTP aanvragen verminderen via gecombineerde js-bestandenLaadtijden van pagina's voor terugkerende bezoekers verminderenHet aantal SQL query's verminderenDe grootte van bestanden die vanaf je server worden verzonden, verkleinenRender blokkeren JsOpnieuw starten nadat deze is voltooidOpslaanServer tijdInstellingenSitemapsSommige js-bronnen worden pas geladen wanneer er wordt gescrold of de muis wordt bewogenBegint metGeluktTagsDoelmapHet menu WP Fastest Cache op de beheerder werkbalk zal hieronder zichtbaar zijn voor de geselecteerde gebruikersrollen.Het eenvoudigste en snelste WP cache systeemDanTime-out regelsWerkbalk instellingenTweemaal per uurBericht bijwerkenGebruikersrollenWP Fastest CacheWP Fastest Cache optiesWaarschuwingWat wil je dat er gebeurt na het publiceren van het nieuwe bericht?Wat wil je dat er gebeurt na het bijwerken van een bericht of een pagina?Widget cacheIn deze sectie kan je de geavanceerde instellingen aanpassen.Je kunt de grootte van css-bestanden verkleinenJe kan de grootte van js bestanden verkleinenJe kan de grootte van de pagina verkleinenJe kan alle cachebestanden verwijderenJe kan de emoji inline css en wp-emoji-release.min.js verwijderenJe kan sitemaps opgeven die moeten worden gebruikt voor het vooraf laden.Je kan de inhoud opgeven die moet worden gebruikt voor het voor laden en je kan ze ook sorteren.In deze sectie kan je de methode opgeven die je wil dat de voorlaad functie gebruikt.verwijder geselecteerde bestandenheeft Google Analytics parametersheeft Woocommerce artikelen in winkelwagentjeheeft Yandex Click ID parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pagina's per minuutwp-fastest-cache/languages/wp-fastest-cache-fa_IR.mo000064400000023421151435171370016332 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ->W w˜6ŸÖêü !/F]d²+Æò( )2#\9€@ºû&2At%}D£#è$ &1'X9€NºK  U_qˆ7Ÿ&×=þ-<&j"‘´ÏÔæ+ø$"¦ÉÙ9òb,®"Æé#& =JA\Qžð  +Ea{™´Íè!@[tªÅÜó ;" ^ " ¢ $² × é c!cg!=Ë!4 "A>"$€"%¥" Ë"Ö"è"÷"#'#9#DI#Ž#&•#"¼#ß#÷#"$ 4$[?$q›$ %:$%N_%1®%(à%B &L&:c&*ž&.É&ø&SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2022-09-10 05:23:27+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: GlotPress/4.0.1 Language: fa Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) ØªÙ†Ø¸ÛŒÙ…Ø§ØªØ§ÙØ²ÙˆØ¯Ù† قانون جدیدهمهتمامی ÙØ§ÛŒÙ„ های Ú©Ø´ حذ٠خواهد شدبایگانی هاپیوست‌هاکش مرورگرتنظیمات CDNآمار Ú©Ø´ÙØ¹Ø§Ù„ کردن کشتایم بندی کشلغودسته‌بندی‌هایکی را انتخاب کنحذ٠تمام کشپاکسازی کشحذ٠کش از تمامی سایت‌هاحذ٠کش Paginationحذ٠کش پست ها Ùˆ برگه هاحذ٠کش دسته بندی پست هاحذ٠کش تگ های پست هاحذ٠کش در صورت انتشار پست Ùˆ برگهحذ٠کش در صورت بروز رسانی برگه Ùˆ پستترکیب ÙØ§ÛŒÙ„ های CSSترکیب کردن ÙØ§ÛŒÙ„ های JSترکیب کردن قوی تر ÙØ§ÛŒÙ„ های JSشاملایجاد Ú©Ø´ برای موبایلایجاد اتوماتیک Ú©Ø´ تمامی قسمت های سایتپست تایپ های Ø³ÙØ§Ø±Ø´ÛŒØªÚ©Ø³ÙˆÙ†ÙˆÙ…ÛŒ های Ø³ÙØ§Ø±Ø´ÛŒÙ¾Ø§Ú©Ø³Ø§Ø²ÛŒ Ù¾Ø§ÛŒÚ¯Ø§Ù‡â€ŒØ¯Ø§Ø¯Ù‡ØºÛŒØ±ÙØ¹Ø§Ù„ کردن اموجی هاعدم نمایش Ú©Ø´ دسکتاپ برای موبایلعدم نمایش حالت Ú©Ø´ شده برای کاربران وارد شدهبرطر٠کردن مشکل Eliminate render-blocking JavaScript resourcesEmre VonaÙØ¹Ø§Ù„ Ú©Ø±Ø¯Ù†ÙØ¹Ø§Ù„ کردن Gzipعدم تاثیر برعدم اعمال بر ÙØ§ÛŒÙ„‌های سی اس اسعدم اعمال بر Ú©ÙˆÚ©ÛŒ هایعدم اعمال بر ÙØ§ÛŒÙ„ های جاوااسکریپتعدم ÙØ¹Ø§Ù„ سازی در برگه هایعدم اعمال در برگه هایعدم اعمال بر User-AgentsÙونت‌های Ú¯ÙˆÚ¯Ù„GZipØµÙØ­Ù‡ Ø§ØµÙ„ÛŒØµÙØ­Ù‡ نخستاگر لینک درخواستی برابردر صورت تغییر در ÙØ§ÛŒÙ„ های سی اس اس، باید Ú©Ø´ Ùˆ ÙØ§ÛŒÙ„‌های ÙØ´Ø±Ø¯Ù‡ را حذ٠کنیدبهینه‌سازی تصاویربرابر باتنظیمات Lazy Loadلود Ùونت های Ú¯ÙˆÚ¯Ù„ بصورت asynchronouslyلود تصاویر Ùˆ Ø¢ÛŒ ÙØ±ÛŒÙ… ها با قرار Ú¯Ø±ÙØªÙ† در حالت دید کاربرکاربران وارد Ø´Ø¯Ù‡ÙØ´Ø±Ø¯Ù‡ سازی CSSÙØ´Ø±Ø¯Ù‡ سازی قویتر CSSÙØ´Ø±Ø¯Ù‡ سازی HTMLÙØ´Ø±Ø¯Ù‡ سازی قویتر HTMLÙØ´Ø±Ø¯Ù‡ سازی JSموبایلتم Ù…ÙˆØ¨Ø§ÛŒÙ„ÙØ´Ø±Ø¯Ù‡ سازی بیشتر Ùˆ قوی تر ÙØ§ÛŒÙ„ های CSSباعث کاهش بیشتر حجم Ùˆ ÙØ´Ø±Ø¯Ù‡ سازی بیشتر Ù…ÛŒ شودپست جدیدتاییدیکبار در هر دقیقهیکبار هر 10 روزیکبار هر 10 ساعتیکبار هر 15 روزیکبار در 15 دقیقهیکبار هر 2 ساعتیکبار هر 3 روزیکبار هر 3 ساعتیکبار هر 4 ساعتیکبار هر 5 ساعتیکبار در هر 5 دقیقههر 6 ساعت یکباریکبار هر 7 روزیکبار هر 7 ساعتیکبار هر 8 ساعتیکبار هر 9 ساعتیکبار در روزیکبار در ماهیکبار در سالهرساعت یکبارÙقط در نسخه پریمیوم در دسترس است.بهینه سازی تصاویرتنظیمات ذخیره Ø´Ø¯Ù†Ø¯Ø¨Ø±Ú¯Ù‡â€ŒÙ‡Ø§Ù„Ø·ÙØ§ بروزرسانی کنیدنوشته‌هاپیش‌بارگذاریبا ÙØ¹Ø§Ù„ کردن این قسمت تعداد درخواست های HTTP کاهش Ù…ÛŒ یابدبا ÙØ¹Ø§Ù„ کردن این قسمت تعداد درخواست های HTTP کاهش Ù…ÛŒ یابدکاهش زمان لود برای کاربران تکراریکاهش تعداد کوئری های دیتابیسکاهش حجم ÙØ§ÛŒÙ„ های ارسالی از سمت Ø³Ø±ÙˆØ±ÙØ¹Ø§Ù„ کردن Render Blocking Jsریستارت بعد از تکمیلذخيرهزمان سرورتنظیماتشروع Ù…ÛŒ شود باموÙقیت آمیزبرچسب‌هاپوشه Ù‡Ø¯ÙØ³Ø§Ø¯Ù‡ ترین Ùˆ سریعترین پلاگین Ú©Ø´ وردپرسسپستایم بندی ÙØ§ÛŒÙ„ های کشتنظیمات نوار ابزارهرساعت دوباربروزرسانی پستسریعترین Ú©Ø´ وردپرسهشداربعد از انتشار پست جدید Ú†Ù‡ عملی میخواهید انجام شود؟بعد از بروزرسانی برگه ها Ùˆ پست ها Ú†Ù‡ عملی مایل هستید انجام شود؟کش ابزارک Ù‡Ø§ÙØ´Ø±Ø¯Ù‡ سازی Ùˆ کاهش حجم ÙØ§ÛŒÙ„ های CSSÙØ´Ø±Ø¯Ù‡ سازی Ùˆ کاهش حجم ÙØ§ÛŒÙ„ های جاوا اسکریپتباعث کاهش حجم برگه ها میشودحذ٠تمامی ÙØ§ÛŒÙ„‌های کشحذ٠سی اس اس های مرتبط Ùˆ wp-emoji-release.min.jsØ­Ø°Ù ÙØ§ÛŒÙ„‌هادارای پارامتر های Ú¯ÙˆÚ¯Ù„ آنالیتیکدارای محصول در سبد خریدhttp://wordpress.org/plugins/wp-fastest-cache/برگه در دقیقهwp-fastest-cache/languages/wp-fastest-cache-sk_SK.po000064400000040742151435171370016374 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Slovak # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2025-01-10 12:15:27+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n >= 2 && n <= 4) ? 1 : 2);\n" "X-Generator: GlotPress/4.0.1\n" "Language: sk\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Musí byÅ¥ pridaná aspoň jedna mapa stránky (sitemap)" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "V tejto Äasti môžete prispôsobiÅ¥ rozšírené nastavenia." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Rozšírené nastavenia" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Môžete zadaÅ¥ mapy stránok (sitemaps), ktoré sa majú použiÅ¥ na prednaÄítanie." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Mapy stránok (Sitemap)" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Môžete urÄiÅ¥ obsah, ktorý sa má použiÅ¥ na prednaÄítanie, a môžete ho aj zoradiÅ¥." #: templates/preload.php:86 msgid "Content Types" msgstr "Typy obsahu" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Prostredníctvom tejto Äasti môžete urÄiÅ¥ metódu, ktorú má funkcia prednaÄítania používaÅ¥." #: templates/preload.php:72 msgid "Choose a Method" msgstr "VybraÅ¥ metódu" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Nastavenia prednaÄítania" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Niektoré zdroje js sa naÄítajú až pri posúvaní alebo pohybe myÅ¡ou" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Oneskorenie Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Možnosti WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "má Yandex Click ID parametre" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "ÄŒistenie konkrétnych stránok" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "UložiÅ¥" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "ZruÅ¡iÅ¥" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Nastavenia panela nástrojov" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "VymazaÅ¥ cache vÅ¡etkých stránok" #: wpFastestCache.php:439 msgid "Settings" msgstr "Nastavenia" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "VyÄistiÅ¥ Cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "OdstrániÅ¥ JavaScript zdroje blokujúce vykreslenie" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Nastavenia boli uložené" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "má Woocommerce položky v košíku" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "má Google Analytics Parameters" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archívy" #: templates/timeout.php:189 msgid "Server Time" msgstr "Serverový Äas" #: templates/timeout.php:169 msgid "delete the files" msgstr "VymazaÅ¥ súbory" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Obsahuje" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "sa rovná" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "ZaÄína s" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Domovská stránka" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "VÅ¡etko" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "VylúÄiÅ¥ sprievodcu stránkami" #: templates/timeout.php:124 msgid "Then" msgstr "Následne" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Ak REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Sprievodca Cache Timeout" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Lazy load nastavenia" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "PovoliÅ¥ Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Prosím aktualizujte" #: templates/update_success.php:9 msgid "Success" msgstr "Úspech" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Varovanie" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "PridaÅ¥ nové pravidlo" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "VymazaÅ¥ Cache a minifikované CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "K dispozícii iba vo verzii Premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "ZvoliÅ¥ jeden" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "VÅ¡etky cache súbory boli vymazané" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Ak upravíte akýkoľvek súbor css, musíte odstrániÅ¥ zmenÅ¡ené súbory css" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Cieľový prieÄinok" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Môžete odstrániÅ¥ vÅ¡etky súbory cache" #: inc/admin.php:1090 msgid "Exclude" msgstr "VylúÄiÅ¥" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimalizácia obrázkov" #: inc/admin.php:1082 msgid "Settings" msgstr "Nastavenia" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "VyÄistenie databázy" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Nastavenia CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "VylúÄiÅ¥ JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "VylúÄiÅ¥ CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "VylúÄiÅ¥ Cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "VylúÄiÅ¥ User-Agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "VylúÄiÅ¥ stránky" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "OptimalizovaÅ¥ nástroje obrázkov" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Timeout pravidla" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Å tatistika Cache" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "VymazaÅ¥ cache Älánku/stránky" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "ÄŒo chcete, aby sa stalo po aktualizácii Älánku alebo stránky?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "VyÄistiÅ¥ cache stránkovania." #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "VymazaÅ¥ cache znaÄiek Älánku" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "VymazaÅ¥ cache pre kategórie Älánkov" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "VymazaÅ¥ cache domovskej stránky" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "VymazaÅ¥ vÅ¡etko cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "ÄŒo chcete, aby sa stalo po publikovaní nového Älánku?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "ReÅ¡tartovaÅ¥ po dokonÄení" #: templates/preload.php:210 msgid "pages per minute" msgstr "stránok za minútu" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Vlastné taxonómie" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Vlastné typy obsahu" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Prílohy" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "ZnaÄky" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Stránky" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategórie" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "ÄŒlánky" #: templates/preload.php:102 msgid "Homepage" msgstr "Domovská stránka" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "RedukovaÅ¥ HTTP žiadosti pomocou kombinácie js súborov" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "NaÄítaÅ¥ obrázky a iframe až pri vyrezávaní prehliadaÄa" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "NaÄítanie písma Google asynchrónne" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "RenderovaÅ¥ blokovanie Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Môžete odstrániÅ¥ vložené súbory emoji css a wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Vypnúť Emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Znížte Äas naÄítania stránky pre návÅ¡tevníkov, ktorý už boli na stránke." #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Cache prehliadaÄa" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Znížuje veľkosÅ¥ súborov odoslaných zo servera" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "KombinovaÅ¥ Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "KombinovaÅ¥ Js " #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Môžete zmenÅ¡iÅ¥ veľkosÅ¥ js súborov" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "MinifikovaÅ¥ js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Zredukovanie HTTP žiadosti prostredníctvom kombinovaných súborov CSS" #: inc/admin.php:1291 msgid "Combine Css" msgstr "KombinovaÅ¥ Css" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "VýkonnejÅ¡ie minifikovaÅ¥ css" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "MinifikovaÅ¥ Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Môžete zmenÅ¡iÅ¥ veľkosÅ¥ súborov css" #: inc/admin.php:1270 msgid "Minify Css" msgstr "MinifikovaÅ¥ Css" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "VýkonnejÅ¡ia minifikácia html" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "MinimalizovaÅ¥ HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Môžete znížiÅ¥ veľkosÅ¥ stránky" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "MinifikovaÅ¥ HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "AktualizovaÅ¥ cache súbory, keÄ upravíte Älánok alebo stránku" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "AktualizovaÅ¥ Älánok" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "AktualizovaÅ¥ cache súbory, keÄ publikujete Älánok alebo stránku " #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nový Älánok" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "VytvoriÅ¥ cache pre mobilnú verziu témy" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobilná téma" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "NezobrazovaÅ¥ cache verziu pre PC na mobilných zariadeniach" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "NezobrazovaÅ¥ verziu v cache pre prihlásených používateľov" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Prihlásení používatelia" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Vytvorte cache pre vÅ¡etky stránky automaticky" #: inc/admin.php:1157 msgid "Preload" msgstr "PrednaÄítanie" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "ZnížiÅ¥ poÄet dopytov SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget Cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Zapnúť" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cache systému" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Raz za 15 dní " #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Raz za 7 dní " #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Raz za 3 dni" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Každých 10 hodín " #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Každých 9 hodín" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr " Každých 8 hodín " #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Každých 7 hodín" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Každých 5 hodín " #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Každé 4 hodiny" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Každé 3 hodiny" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Každé 2 hodiny" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Raz za 10 dní" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Najjednoduchší a najrýchlejší WP Cache systém" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Raz roÄne" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Jedenkrát mesaÄne" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Jedenkrát denne" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Jedenkrát každých 6 hodín" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Jedenkrát za hodinu" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dvakrát za hodinu" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Jedenkrát každých 15 minút" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Jedenkrát každých 5 minút" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Jedenkrát za 1 minútu"wp-fastest-cache/languages/wp-fastest-cache-cs_CZ.po000064400000040263151435171370016361 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Czech # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2025-02-25 22:35:47+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n >= 2 && n <= 4) ? 1 : 2);\n" "X-Generator: GlotPress/4.0.1\n" "Language: cs_CZ\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "PokroÄilá nastavení" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Můžete urÄit mapy webu, které se mají použít pro pÅ™edběžné naÄítání." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Mapy webu" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "Typy obsahu" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "Vyberte metodu" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "ZpoždÄ›ní Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Nastavení WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Vymazat konkrétní stránky" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Uložit" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Storno" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Nastavení panelu nástrojů" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vymazat cache paměť vÅ¡ech webů." #: wpFastestCache.php:439 msgid "Settings" msgstr "Nastavení" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Vymazat cache paměť" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Odstranit zdroje JavaScriptu blokující vykreslení" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Nastavení byla uložena." #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "má položky Woocommerce v košíku" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "obsahuje parametry Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivy" #: templates/timeout.php:189 msgid "Server Time" msgstr "ÄŒas serveru" #: templates/timeout.php:169 msgid "delete the files" msgstr "odstranit soubory" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Obsahuje" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Je rovný" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "ZaÄíná na" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Úvodní stránka" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "VÅ¡e" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "VylouÄit průvodce stránkou" #: templates/timeout.php:124 msgid "Then" msgstr "Pak" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Pokud REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Průvodce vyprÅ¡ením Äasového limitu cache pamÄ›ti" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Nastavení pomalého naÄítání (\"lazy load\")" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Povolit Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Prosím aktualizujte" #: templates/update_success.php:9 msgid "Success" msgstr "Hotovo" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Varování" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "PÅ™idat nové pravidlo" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Smazat cache paměť a minifikovat CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Dostupné pouze v Premium verzi" #: templates/timeout.php:141 msgid "Choose One" msgstr "Vyber jeden" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "VÅ¡echny soubory cache pamÄ›ti budou také odstranÄ›ny" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Pokud upravíte jakýkoli CSS soubor, musíte odstranit minifikované CSS soubory" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Cílová složka" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Můžete smazat vÅ¡echny soubory cache pamÄ›ti" #: inc/admin.php:1090 msgid "Exclude" msgstr "VylouÄit" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimalizace obrázku" #: inc/admin.php:1082 msgid "Settings" msgstr "Nastavení" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "VyÄiÅ¡tÄ›ní databáze" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN nastavení " #: inc/admin.php:2046 msgid "Exclude JS" msgstr "VylouÄit JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "VylouÄit CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "VylouÄit cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "VylouÄit uživatelské agenty" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "VylouÄit stránky" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Nástroj pro optimalizaci obrázků" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Pravidla Äasového limitu" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Statistiky cache pamÄ›ti" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vymazat cache paměť příspÄ›vku / stránky" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Co se má stát po aktualizaci příspÄ›vku nebo stránky?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vymazat cache paměť stránkování" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vymazat cache paměť tagů příspÄ›vků" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vymazat cache paměť kategorie příspÄ›vků" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Vymazat cache paměť domovské stránky" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vymazat vÅ¡echny cache pamÄ›ti" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Co se má stát po zveÅ™ejnÄ›ní nového příspÄ›vku?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Po dokonÄení restartujte poÄítaÄ" #: templates/preload.php:210 msgid "pages per minute" msgstr "stránek za minutu" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Vlastní taxonomie" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Vlastní typy příspÄ›vku" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Přílohy" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tagy" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Stránky" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategorie" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "PříspÄ›vky" #: templates/preload.php:102 msgid "Homepage" msgstr "Domovská stránka" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Snížit požadavky HTTP prostÅ™ednictvím kombinovaných JS souborů" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "NaÄíst obrázky a prvky iframe pÅ™i vstupu do výřezu prohlížeÄe" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "NaÄíst Google fonty asynchronnÄ›" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonty" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "JS blokující vykreslování" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Můžete odstranit inline CSS pro emodži a wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Zakázat Emodži" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Snižte dobu naÄítání stránky pro opakované návÅ¡tÄ›vníky" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Cache paměť prohlížeÄe" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "ZmenÅ¡it velikost souborů odeslaných ze serveru" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Kombinovat JS Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Kombinovat JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Můžete zmenÅ¡it velikost JS souborů" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minifikace JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Snížit požadavky HTTP prostÅ™ednictvím kombinovaných CSS souborů " #: inc/admin.php:1291 msgid "Combine Css" msgstr "Kombinovat CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "VýkonnÄ›jší minifikace CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minifikace CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Můžete zmenÅ¡it velikost souborů CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minifikace CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "VýkonnÄ›jší minifikace HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minifikace HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Můžete zmenÅ¡it velikost stránky" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minifikace HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vymazat soubory cache pamÄ›ti pÅ™i aktualizaci příspÄ›vku nebo stránky" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Aktualizace příspÄ›vku" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vymazat soubory cache pamÄ›ti pÅ™i publikování příspÄ›vku nebo stránky" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nový příspÄ›vek" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "VytvoÅ™it cache paměť pro mobilní Å¡ablonu" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobilní Å¡ablona" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Nezobrazovat verzi cache pamÄ›ti na stolních poÄítaÄích nebo na mobilních zařízeních" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobilní" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Nezobrazovat verzi cache pamÄ›ti pÅ™ihlášeným uživatelům" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "PÅ™ihlášení uživatelé" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "VytvoÅ™it cache paměť vÅ¡ech webů automaticky" #: inc/admin.php:1157 msgid "Preload" msgstr "PÅ™edběžnÄ› naÄíst" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Snížit poÄet dotazů SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Cache paměť widgetu" #: inc/admin.php:1119 msgid "Enable" msgstr "Povolit" #: inc/admin.php:1118 msgid "Cache System" msgstr "Systém cache pamÄ›ti" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Jednou za 15 dní" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Jednou za 7 dní" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Jednou za 3 dny" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Jednou za 10 hodin" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Jednou za 9 hodin" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Jednou za 8 hodin" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Jednou za 7 hodin" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Jednou za 5 hodin" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Jednou za 4 hodiny" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Jednou za 3 hodiny" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Jednou za 2 hodiny" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Jednou za 10 dní" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Nejjednodušší a nejrychlejší WP Cache systém" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://cs.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Jednou za rok" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Jednou za mÄ›síc" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Jednou za den" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Jednou za 6 hodin" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Jednou za hodinu" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dvakrát za hodinu" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Jednou za 15 minut" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Jednou za 5 minut" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Jednou za minutu"wp-fastest-cache/languages/wp-fastest-cache-ru_RU.mo000064400000031425151435171370016411 0ustar00Þ•”¼\ \ ] w „ – 'š  "Ë î ú  ( 5 J Q \ g w ‡ “ ¬ Æ á  2 0L } • ¡ ¬ ¼ Å Ó .ñ  2 D U ^ ;m 1© .Û   ' / ; K V j x Œ ™ ž ¨ ± AÀ  ! 4=U“ £® ¾Ê Ûå ìù,58L_s†œ¯ÁÔçú"4GZ m x … ‘!žÀÔì ò/.O*~ ©.Êù $ )5>FG Žš¢ §(µÞ ãñ  -F9N9ˆ Â=Ï& %4!Z|?›3ÛUTeºËë .(Ww„ˆ# *1)\†? ÍRÚ->V+m%™E¿ !9 Vw->½5ü32/fe–eü6b™²ÊçøOSh8¼5õ$+Pdz~~ù[x ÔÞï  $/ T 0j #› <¿ ü !!5!U!“j!-þ! ,"87"=p"®"=<#z#•#µ# Ñ#ò# $$?;$3{$¯$Ç$Ì$æ$þ$%8%S%k%~%–%®%È%â%ü%&.&H&b&w&Œ&&5®&Bä&%''M'&^' …'/’'4Â'd÷'c\(tÀ(>5)gt)8Ü):*P*c**”*“ª*>+ V+a+j+8„+ ½+>È+8,@,Y,w,#ˆ,¬,pÉ,}:-¸-pÐ-BA.A„.BÆ.4 /m>/¦¬/ÖS0Î*1ù1.23B2-v21¤2Ö2ö2SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2023-09-11 06:04:10+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2); X-Generator: GlotPress/4.0.1 Language: ru Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) ÐаÑтройкиДобавить новое правилоРаÑширенные наÑтройкиВÑеВÑе файлы кÑша также будут удаленыÐрхивыÐеобходимо добавить Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одну карту ÑайтаВложениÑКÑш браузераÐаÑтройки CDNСтатиÑтика кешированиÑСиÑтема кÑшированиÑМаÑтер тайм-аута (Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ) кÑшаОтменаРубрикиВыбрать одинВыберите метод.ОчиÑтить веÑÑŒ кÑшОчиÑтить кÑшОчиÑтить кеш вÑех ÑайтовОчиÑтить кеш разбивки на ÑтраницыОчиÑтить кÑш запиÑи/ÑтраницыОчиÑтить кÑш рубрики запиÑиОчиÑтить кеш тегов запиÑиОчиÑтить файлы кеша при публикации запиÑи или ÑтраницыОчиÑтить файлы кÑша при обновлении запиÑи или ÑтраницыОчиÑтка определённых ÑтраницОбъединить CSSОбъединить JSОбъединить JS PlusСодержитТипы ÑодержимогоСоздание кÑша Ð´Ð»Ñ Ñ‚ÐµÐ¼Ñ‹ мобильных уÑтройÑтвÐвтоматичеÑкое Ñоздание кÑша Ð´Ð»Ñ Ð²Ñего ÑайтаПользовательÑкие типы запиÑейПользовательÑкие такÑономииОчиÑтка базы данныхЗадержка JsОтключить EmojisÐе показывать кешированную верÑию Ð´Ð»Ñ ÐŸÐš на мобильных уÑтройÑтвахÐе показывать кешированную верÑию Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… пользователейУÑтранение реÑурÑов JavaScript, блокирующих рендерингEmre VonaВключитьВключить GZIPИÑключитьИÑключить CSSИÑключить файлы cookieИÑключить JSМаÑтер иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑтраницИÑключить ÑтраницыИÑключить агентов-пользователейШрифты GoogleGzipÐ“Ð»Ð°Ð²Ð½Ð°Ñ ÑÑ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°Ð“Ð»Ð°Ð²Ð½Ð°Ñ ÑтраницаЕÑли REQUEST_URIПри изменении какого-либо CSS-файла, необходимо удалить минифицированные CSS-Ñ„Ð°Ð¹Ð»Ñ‹ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸ÑРавноÐаÑтройки отложенной загрузкиÐÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° шрифтов GoogleЗагружать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ iframe, когда они попадают в облаÑть проÑмотра браузераЗарегиÑтрированные Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ð¸ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ CSSÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ CSS PlusÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ HTMLÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ HTML PlusÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ JSÐœÐ¾Ð±Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ÐœÐ¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ñ‚ÐµÐ¼Ð°Ð‘Ð¾Ð»ÐµÐµ Ð¼Ð¾Ñ‰Ð½Ð°Ñ Ð¼Ð¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ CSS-файловБолее Ð¼Ð¾Ñ‰Ð½Ð°Ñ Ð¼Ð¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ HTMLÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑьОККаждую минутуРаз в 10 ÑутокКаждые 10 чаÑовОдин раз в 15 днейКаждые 15 минутКаждые 2 чаÑаРаз в 3 днÑКаждые 3 чаÑаКаждые 4 чаÑаКаждые 5 чаÑовКаждые 5 минутКаждые 6 чаÑовКаждые 7 днейКаждые 7 чаÑовКаждые 8 чаÑовКаждые 9 чаÑовРаз в ÑуткиРаз в меÑÑцРаз в годРаз в чаÑДоÑтупно только в верÑии PremiumИнÑтрумент оптимизации изображенийПараметры ÑохраненыСтраницыПожалуйÑта, обновитеЗапиÑÐ¸ÐŸÑ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°ÐаÑтройки анимации загрузкиСокращение запроÑов HTTP Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ CSS-файловСокращение запроÑов HTTP Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ JS-файловСокращение времени загрузки Ñтраниц Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ñ… поÑетителейСокращение количеÑтва SQL-запроÑовСокращение размер файлов, отправлÑемых Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ ÑервераJS-файлы, блокирующие рендерингПерезагрузить поÑле завершениÑСохранитьСерверное времÑÐаÑтройкиКарты ÑайтаÐекоторые иÑходные файлы js не будут загружены до прокрутки или Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¼Ñ‹ÑˆÐ¸ÐачинаетÑÑ ÑУÑÐ¿ÐµÑ…Ð¢ÐµÐ³Ð¸Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°ÐŸÑ€Ð¾Ñтой и быÑтрый кÑш Ð´Ð»Ñ WordPressТогдаПравила тайм-аута (Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ)ÐаÑтройки панели инÑтрументовРаз в полчаÑаОбновить запиÑÑŒWP Fastest CacheПараметры WP Fastest CacheПредупреждениеЧто вы хотите, чтобы произошло поÑле публикации новой запиÑи?Что вы хотите, чтобы произошло поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи или Ñтраницы?КÑш виджетовВы можете наÑтроить раÑширенные наÑтройки через Ñтот раздел.Ð’Ñ‹ можете уменьшить размер CSS-файловВы можете уменьшить размер JS-файловВы можете уменьшить размер ÑтраницыМожно удалить вÑе файлы кÑшаВы можете удалить вÑтроенные CSS Ñмайлики (emoji) и wp-emoji-release.min.jsÐ’Ñ‹ можете указать карты Ñайта, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ загрузки.Ð’Ñ‹ можете указать Ñодержимое, которое будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ загрузки, а также отÑортировать его.Ð’Ñ‹ можете указать метод, который вы хотите иÑпользовать Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ предварительной загрузки через Ñтот раздел.удалить файлыимеет параметры Google AnalyticsеÑть товары Woocommerce в корзинеимеет параметры Yandex Click IDhttp://ru.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/Ñтраниц в минутуwp-fastest-cache/languages/wp-fastest-cache-id_ID.po000064400000036656151435171370016343 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Indonesian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2021-01-26 07:03:23+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: id\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Simpan" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Batalkan" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Pengaturan toolbar" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Hapus Cache dari Semua Situs" #: wpFastestCache.php:439 msgid "Settings" msgstr "Pengaturan" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Hapus Cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Hilangkan sumber daya JavaScript yang memblokir perenderan" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Pilihan telah disimpan" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "memiliki Item Woocommerce di Keranjang" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "memiliki Parameter Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Arsip" #: templates/timeout.php:189 msgid "Server Time" msgstr "Waktu server" #: templates/timeout.php:169 msgid "delete the files" msgstr "hapus berkas" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Mengandung" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Adalah sama dengan" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Dimulai Dengan" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Halaman Beranda" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Semua" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Kecualikan Panduan Halaman" #: templates/timeout.php:124 msgid "Then" msgstr "Kemudian" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Jika REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Panduan Batas waktu Cache" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Pengaturan Lazy Load" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Aktifkan Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Mohon perbarui" #: templates/update_success.php:9 msgid "Success" msgstr "Sukses" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Peringatan" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Tambahkan Aturan Baru" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Hanya tersedia dalam versi Premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Pilih satu" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Semua berkas cache juga akan dihapus" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Jika Anda memodifikasi berkas css apa pun, Anda harus menghapus berkas css yang diperkecil" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Folder target" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Anda dapat menghapus semua berkas cache" #: inc/admin.php:1090 msgid "Exclude" msgstr "Kecualikan" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimasi Gambar" #: inc/admin.php:1082 msgid "Settings" msgstr "Pengaturan" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Pembersihan Basis data" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Pengaturan CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Kecualikan JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Kecualikan CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Kecualikan kuki" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Kecualikan Agen-Pengguna" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Kecualikan Halaman" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Alat Optimasi Gambar" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Aturan Batas waktu" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Statistik Cache" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Hapus Cache Artikel / Halaman" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Apa yang Anda inginkan terjadi setelah memperbarui artikel atau halaman?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Hapus Cache Paginasi" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Hapus Cache dari Tag Artikel" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Hapus Cache dari Kategori Artikel" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Hapus Semua Cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Apa yang Anda inginkan terjadi setelah memublikasikan artikel baru?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "baik" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Mulai Ulang Setelah Selesai" #: templates/preload.php:210 msgid "pages per minute" msgstr "halaman per menit" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taksonomi khusus" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipe Artikel Khusus" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Lampiran" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tag" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Laman" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategori" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Artikel" #: templates/preload.php:102 msgid "Homepage" msgstr "Beranda" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Kurangi permintaan HTTP dengan menggabungkan berkas JS" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Muat gambar dan iframe saat mereka memasuki area pandang browser" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Muat Google Fonts secara asinkron" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Render Blocking Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Anda dapat menghapus emoji inline css dan wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Nonaktifkan Emoji" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Kurangi waktu pemuatan halaman untuk pengunjung berulang" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caching Browser" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Kurangi ukuran berkas yang dikirim dari server Anda" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Gabungkan Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Gabungkan Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Anda dapat memperkecil ukuran berkas js" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Perkecil Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Kurangi permintaan HTTP dengan menggabungkan berkas CSS" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Gabungkan CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Memperkecil CSS dengan lebih kuat" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Perkecil CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Anda dapat memperkecil ukuran berkas css" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Perkecil CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Memperkecil HTML dengan lebih kuat" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Perkecil HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Anda dapat memperkecil ukuran halaman" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Perkecil HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Hapus berkas cache saat artikel atau halaman diperbarui" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Perbarui Artikel" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Hapus berkas cache ketika artikel atau halaman dipublikasikan" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Artikel Baru" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Buat cache untuk tema ponsel" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema Ponsel" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Jangan tampilkan versi cache untuk desktop ke perangkat ponsel" #: inc/admin.php:1195 msgid "Mobile" msgstr "Ponsel" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Jangan tampilkan versi cache untuk pengguna yang login" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Pengguna yang login" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Buat cache dari semua situs secara otomatis" #: inc/admin.php:1157 msgid "Preload" msgstr "Pramuat" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Kurangi jumlah query SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Cache Widget" #: inc/admin.php:1119 msgid "Enable" msgstr "Aktifkan" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistem Cache" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Setiap 15 Hari Sekali" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Setiap 7 Hari Sekali" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Setiap 3 Hari Sekali" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Setiap 10 Jam Sekali" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Setiap 9 Jam Sekali" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Setiap 8 Jam Sekali" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Setiap 7 Jam Sekali" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Setiap 5 Jam Sekali" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Setiap 4 Jam Sekali" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Setiap 3 Jam Sekali" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Setiap 2 Jam Sekali" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Setiap 10 Hari Sekali" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Sistem WP Cache paling sederhana dan tercepat" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://id.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Sekali Setahun" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Sekali Sebulan" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Sekali Sehari" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Setiap 6 Jam Sekali" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Sekali Sejam" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dua Kali Sejam" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Setiap 15 Menit Sekali" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Setiap 5 Menit Sekali" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Setiap 1 Menit Sekali"wp-fastest-cache/languages/wp-fastest-cache-es_MX.po000064400000037640151435171370016400 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Mexico) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2020-07-16 15:22:30+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es_MX\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar la caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Borrar caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite de la caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Añadir una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elige uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se eliminarán todos los archivos de la caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puedes borrar todos los archivos de la caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas de la caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar la caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué quieres que ocurra después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar la caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar la caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar la caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda la caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué quieres que ocurra después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puedes reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puedes reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puedes reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos de la caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos de la caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear la caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio de la caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión de la caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente la caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://es-mx.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez a la hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces a la hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada minuto"wp-fastest-cache/languages/wp-fastest-cache-uk.po000064400000047170151435171370016003 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Ukrainian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-29 17:45:13+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);\n" "X-Generator: GlotPress/4.0.1\n" "Language: uk_UA\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "Меню WP Fastest Cache на панелі інÑтрументів адмініÑтратора буде видимим Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¸Ñ… нижче ролей кориÑтувачів." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Ролі кориÑтувачів" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Ðеобхідно додати принаймні одну карту Ñайту" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Ви можете налаштувати розширені параметри в цьому розділі." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Розширені налаштуваннÑ" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Ви можете вказати мапи, Ñкі будуть викориÑтовуватиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ завантаженнÑ." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Карти Ñайту" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Ви можете вказати вміÑÑ‚, Ñкий буде викориÑтовуватиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ завантаженнÑ, а також ви можете його Ñортувати." #: templates/preload.php:86 msgid "Content Types" msgstr "Типи вміÑту" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Ви можете вказати метод, Ñкий ви хочете викориÑтовувати Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— попереднього Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· цей розділ." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Оберіть метод" #: templates/preload.php:56 msgid "Preload Settings" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ завантаженнÑ" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "ДеÑкі js джерела не будуть завантажені до тих пір, поки не буде прокручено або переміщено мишею" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Затримка Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Параметри ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "має параметри Yandex Click ID" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¸Ñ… Ñторінок" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Зберегти" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "СкаÑувати" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ð½ÐµÐ»Ñ– інÑтрументів" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "ОчиÑтити кеш-пам’Ñть уÑÑ–Ñ… Ñайтів" #: wpFastestCache.php:439 msgid "Settings" msgstr "ÐалаштуваннÑ" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "ОчиÑтити кеш" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "УÑÑƒÐ½ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒÑŽÑ‡Ð¸Ñ… Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JavaScript реÑурÑів" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Параметри були збережені" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "має товари Woocommerce у кошику" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "має параметри Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Ðрхіви" #: templates/timeout.php:189 msgid "Server Time" msgstr "Ð§Ð°Ñ Ñервера" #: templates/timeout.php:169 msgid "delete the files" msgstr "видалити файли" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "МіÑтить" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Дорівнює" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "ПочинаєтьÑÑ Ð·" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Головна Ñторінка" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Ð’Ñе" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "МайÑтер Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñторінки" #: templates/timeout.php:124 msgid "Then" msgstr "Тоді" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Якщо REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "МайÑтер тайм-ауту (Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ) кешу" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Lazy Load" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Увімкніть Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Будь лаÑка, оновіть" #: templates/update_success.php:9 msgid "Success" msgstr "УÑпіх" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Внимание!" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Додати нове правило" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ та Ð¼Ñ–Ð½Ñ–Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "ДоÑтупно лише у верÑÑ–Ñ— Premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Виберіть один" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Ð’ÑÑ– файли кешу також будуть видалені" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Якщо ви змінюєте будь-Ñкий файл CSS, вам потрібно видалити мініфіковані файли CSS" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Цільова папка" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Ви можете видалити вÑÑ– файли кешу" #: inc/admin.php:1090 msgid "Exclude" msgstr "Вилучити" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒ" #: inc/admin.php:1082 msgid "Settings" msgstr "ÐалаштуваннÑ" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¸ даних" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Виключити JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Виключити CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Виключити файли cookie" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Виключити User-Agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Вилучені Ñторінки" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "ІнÑтрумент оптимізації зображеннÑ" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Правила перерви" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "СтатиÑтика кешу" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "ОчиÑтити кеш запиÑу / Ñторінки" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Що ви хочете, щоб ÑталоÑÑ Ð¿Ñ–ÑÐ»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу або Ñторінки?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "ОчиÑтити кеш розбивки на Ñторінки" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "ОчиÑтити кеш позначок запиÑів" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "ОчиÑтити кеш категорій запиÑів" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "ОчиÑтити кеш домашньої Ñторінки" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "ОчиÑтити веÑÑŒ кеш" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Що ви хочете, щоб ÑталоÑÑ Ð¿Ñ–ÑÐ»Ñ Ð¾Ð¿ÑƒÐ±Ð»Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ запиÑу?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "ПерезапуÑтити піÑÐ»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ" #: templates/preload.php:210 msgid "pages per minute" msgstr "Ñторінок на хвилину" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "КориÑтувальницька такÑономіÑ" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "КориÑтувацькі типи запиÑів" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "ВкладеннÑ" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Позначки" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Сторінки" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Категорії" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "ЗапиÑи" #: templates/preload.php:102 msgid "Homepage" msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Зменшити кількіÑть HTTP-запитів шлÑхом об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ js-файлів." #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Завантажуйте Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° фрейми, коли вони потраплÑють в облаÑть переглÑду браузера" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "ÐÑинхронне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñ–Ð² Google" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Шрифти Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Ви можете видалити emoji inline css та wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Вимкнути Emoji" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Зменшити Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñторінок Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¸Ñ… відвідувачів" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Кеш браузера" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Зменште розмір файлів, Ñкі надÑилаютьÑÑ Ð· вашого Ñервера." #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Об'єднати Js ПлюÑ" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Об'єднати Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Ви можете зменшити розмір js файлів" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Мініфікувати Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Зменшити кількіÑть HTTP-запитів шлÑхом об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² CSS." #: inc/admin.php:1291 msgid "Combine Css" msgstr "Об'єднати CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Більш потужне Ð·Ð¶Ð¸Ð¼Ð°Ð½Ð½Ñ CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Мініфікувати Css ПлюÑ" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Ви можете зменшити розмір файлів CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Мініфікувати Css" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Більш потужний зменшувач html" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñƒ HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Ви можете зменшити розмір Ñторінки" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Мініфікувати HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Очищайте файли кешу під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ— або Ñторінки" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Оновити запиÑ" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "ОчиÑтити файли кешу під Ñ‡Ð°Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ— запиÑу або Ñторінки" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Ðовий запиÑ" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Створити кеш Ð´Ð»Ñ Ð¼Ð¾Ð±Ñ–Ð»ÑŒÐ½Ð¾Ñ— теми" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Мобільна тема" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Ðе показувати кешовану верÑÑ–ÑŽ Ð´Ð»Ñ Ð½Ð°Ñтільних комп'ютерів на мобільних приÑтроÑÑ…" #: inc/admin.php:1195 msgid "Mobile" msgstr "Мобільний" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Ðе показувати кешовану верÑÑ–ÑŽ Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів, Ñкі ввійшли в ÑиÑтему" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "ЗареєÑтровані кориÑтувачі" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Створити кеш вÑього Ñайту автоматично" #: inc/admin.php:1157 msgid "Preload" msgstr "Попереднє завантаженнÑ" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Зменшіть кількіÑть SQL-запитів" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Кеш віджетів" #: inc/admin.php:1119 msgid "Enable" msgstr "Увімкнути" #: inc/admin.php:1118 msgid "Cache System" msgstr "СиÑтема кешу" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Раз на 15 днів" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Раз на 7 днів" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Раз на 3 дні" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Раз в кожні 10 годин" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Раз в кожні 9 годин" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Раз в кожні 8 годин" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Раз в кожні 7 годин" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Раз в кожні 5 годин" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Раз в кожні 4 години" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Раз в кожні 3 години" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Раз в кожні 2 години" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Раз в кожні 10 днів" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "ÐайпроÑтіша Ñ– найшвидка ÑиÑтема WP Cache" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Раз в рік" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Раз в міÑÑць" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Раз в день" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Раз в кожні 6 годин" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Раз годину" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Двічі в годину" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Раз в кожні 15 хвилин" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Раз в кожні 5 хвилин" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Раз в кожну хвилину"wp-fastest-cache/languages/wp-fastest-cache-es_VE.po000064400000037637151435171370016374 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Venezuela) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2020-07-16 10:39:36+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es_VE\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar la caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Borrar caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite de la caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Añadir una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elige uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se eliminarán todos los archivos de la caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puedes borrar todos los archivos de la caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas de la caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar la caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué quieres que ocurra después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar la caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar la caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar la caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda la caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué quieres que ocurra después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puedes reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puedes reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puedes reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos de la caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos de la caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear la caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio de la caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión de la caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente la caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://es.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez a la hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces a la hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada minuto"wp-fastest-cache/languages/wp-fastest-cache-zh_TW.mo000064400000023371151435171370016411 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\m‰ ¡ ®»0Âó ú" 2= P]pw ~ ‹˜ «"¸Ûô :S-l-šÈ Û æð $09j}­6Ç0þ&/ V` gs z … “ °½Ùóøÿd~Ž•2¨>Û 0; LX j t—µ Ôáèø .BUex‹ž±ÄÔçú  ' 4 'D l ‚ • œ ¦ ­ º /Í .ý 6,!c!-~!¬!9¿!ù!"""@" `"m"t"{"W‹"8ã"# ##0#@# P#]#m#~#–#%#%Ã#é#Eù#&?$%f$'Œ$$´$BÙ$8%cU%]¹% &$&.C&r&1&Â&â&SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-09 17:26:31+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: GlotPress/4.0.1 Language: zh_TW Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) 設定新增è¦å‰‡é€²éšŽè¨­å®šå…¨éƒ¨é€™é …æ“ä½œæœƒåŒæ™‚åˆªé™¤å…¨éƒ¨å¿«å–æª”案。彙整必須新增至少一個 Sitemap附件ç€è¦½å™¨å¿«å–CDN 設定快å–統計資料快å–系統快å–逾時精éˆå–消分類é¸å–一項é¸å–æ–¹æ³•æ¸…é™¤å…¨éƒ¨å¿«å–æ¸…é™¤å¿«å–æ¸…除快å–åŠå·²å£“縮的 CSS/JSæ¸…é™¤å…¨éƒ¨ç¶²ç«™å¿«å–æ¸…除首é å¿«å–æ¸…é™¤å…§å®¹é æ¬¡å¿«å–清除文章/é é¢å¿«å–æ¸…é™¤æ–‡ç« åˆ†é¡žå¿«å–æ¸…除文章標籤快å–發佈文章或é é¢å¾Œä¾¿æ¸…é™¤å¿«å–æª”案更新文章或é é¢å¾Œä¾¿æ¸…é™¤å¿«å–æª”案清除指定é é¢CSS åˆä½µJS åˆä½µJS 進階åˆä½µåŒ…å«å…§å®¹é¡žåž‹ç‚ºè¡Œå‹•版佈景主題建立快å–為這個網站的全部項目自動建立快å–自訂內容類型自訂分類法清ç†è³‡æ–™åº«å»¶é²è¼‰å…¥ JSåœç”¨ Emoji 表情符號在行動è£ç½®ä¸Šä¸é¡¯ç¤ºå·²å¿«å–的桌é¢ç‰ˆå…§å®¹ä¸åœ¨ä½¿ç”¨è€…登入後顯示已快å–çš„å…§å®¹æ¸…é™¤ç¦æ­¢è½‰è­¯çš„ JavaScrpt 資æºEmre Vona啟用啟用 Gzip排除排除 CSS排除 Cookie排除 JS排除é é¢ç²¾éˆæŽ’除é é¢æŽ’除使用者代ç†ç¨‹å¼Google Fonts ç¶²é å­—åž‹Gzip首é é¦–é å¦‚æžœ REQUEST_URI如果å°ä»»ä½• CSS 檔案進行修改,修改完畢後必須刪除之å‰å·²å£“縮的 CSS 檔案。圖片最佳化等於延é²è¼‰å…¥è¨­å®šä»¥éžåŒæ­¥æ–¹å¼è¼‰å…¥ Google Fonts ç¶²é å­—åž‹ç•¶åœ–ç‰‡åŠ iFrame 進入ç€è¦½å™¨æª¢è¦–å€å…§æ‰é€²è¡Œè¼‰å…¥å·²ç™»å…¥çš„使用者CSS 壓縮CSS 進階壓縮HTML 壓縮HTML 進階壓縮JS 壓縮行動è£ç½®è¡Œå‹•版佈景主題更多 CSS 進階壓縮功能更多 HTML 進階壓縮功能新增內容確定æ¯åˆ†é˜ä¸€æ¬¡æ¯ 10 æ—¥ä¸€æ¬¡æ¯ 10 å°æ™‚ä¸€æ¬¡æ¯ 15 æ—¥ä¸€æ¬¡æ¯ 15 分é˜ä¸€æ¬¡æ¯ 2 å°æ™‚ä¸€æ¬¡æ¯ 3 æ—¥ä¸€æ¬¡æ¯ 3 å°æ™‚ä¸€æ¬¡æ¯ 4 å°æ™‚ä¸€æ¬¡æ¯ 5 å°æ™‚ä¸€æ¬¡æ¯ 5 分é˜ä¸€æ¬¡æ¯ 6 å°æ™‚ä¸€æ¬¡æ¯ 7 æ—¥ä¸€æ¬¡æ¯ 7 å°æ™‚ä¸€æ¬¡æ¯ 8 å°æ™‚ä¸€æ¬¡æ¯ 9 å°æ™‚ä¸€æ¬¡æ¯æ—¥ä¸€æ¬¡æ¯æœˆä¸€æ¬¡æ¯å¹´ä¸€æ¬¡æ¯å°æ™‚一次這項功能僅於 Premium 版中æä¾›åœ–片最佳化工具設定已儲存。é é¢è«‹æ›´æ–°æ–‡ç« é å…ˆè¼‰å…¥é å…ˆè¼‰å…¥è¨­å®šåˆä½µ CSS 檔案å¯ä»¥æ¸›å°‘ HTTP è¦æ±‚次數åˆä½µ JS 檔案å¯ä»¥æ¸›å°‘ HTTP è¦æ±‚次數這項功能å¯é™ä½Žå›žè¨ªè¨ªå®¢çš„é é¢è¼‰å…¥æ™‚間減少 SQL 查詢的次數減少從網站伺æœå™¨å‚³é€çš„æª”案大å°ç¦æ­¢è½‰è­¯çš„ JSå¿«å–å»ºç«‹å®Œç•¢å¾Œè‡ªå‹•é‡æ–°å•Ÿå‹•é å…ˆè¼‰å…¥ç¨‹åºå„²å­˜ä¼ºæœå™¨æ™‚間設定Sitemap讓æŸäº› JS 程å¼ç¢¼åœ¨ç•«é¢æ²å‹•或移動游標後æ‰è¼‰å…¥é–‹é ­å«æœ‰æˆåŠŸæ¨™ç±¤ç›®æ¨™è³‡æ–™å¤¾åœ¨ä¸‹æ–¹é¸å–的使用者角色能看到 WP Fastest Cache 在工具列上的é¸å–®ã€‚æœ€æ˜“æ–¼ä½¿ç”¨ã€æœ€å¿«é€Ÿçš„ WordPress å¿«å–外掛。然後逾時è¦å‰‡å·¥å…·åˆ—設定æ¯å°æ™‚兩次更新內容使用者角色WP Fastest CacheWP Fastest Cache 設定警告發佈內容後的快å–è™•ç†æ–¹å¼:更新內容後的快å–è™•ç†æ–¹å¼:å°å·¥å…·å¿«å–在這個å°è©±æ–¹å¡Šä¸­ï¼Œç¶²ç«™ç®¡ç†å“¡å¯ä»¥è‡ªè¨‚é€²éšŽè¨­å®šã€‚é€™é …åŠŸèƒ½å¯æ¸›å°‘ CSS 檔案大å°é€™é …åŠŸèƒ½å¯æ¸›å°‘ JS 檔案大å°é€™é …åŠŸèƒ½å¯æ¸›å°‘é é¢æª”案大å°é€™é …æ“作會刪除全部快å–。這項功能å¯ç§»é™¤ Emoji 內嵌 CSS åŠ wp-emoji-release.min.js網站管ç†å“¡å¯ä»¥æŒ‡å®šè¦é å…ˆè¼‰å…¥çš„ Sitemap。網站管ç†å“¡å¯ä»¥æŒ‡å®šè¦é å…ˆè¼‰å…¥çš„å…§å®¹ï¼ŒåŒæ™‚也å¯ä»¥å°é€™äº›å…§å®¹é€²è¡ŒæŽ’åºã€‚在這個å°è©±æ–¹å¡Šä¸­ï¼Œç¶²ç«™ç®¡ç†å“¡å¯ä»¥æŒ‡å®šè¦ä½¿ç”¨çš„é å…ˆè¼‰å…¥åŠŸèƒ½æ–¹æ³•ã€‚åˆªé™¤æª”æ¡ˆåŒ…å« Google Analytics åƒæ•¸åŒ…å«è³¼ç‰©è»Šä¸­çš„ Woocommerce 商å“è³‡æ–™åŒ…å« Yandex Click ID åƒæ•¸http://tw.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/é è™•ç†é æ•¸/分é˜wp-fastest-cache/languages/wp-fastest-cache-it_IT.po000064400000037165151435171370016377 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Italian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2023-02-04 10:32:25+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: it\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Salva" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Annulla" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Impostazioni barra degli strumenti" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Svuota cache di tutti i siti" #: wpFastestCache.php:439 msgid "Settings" msgstr "Impostazioni" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Svuota cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Elimina le risorse JavaScript che bloccano il rendering" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Le opzioni sono state salvate" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "ha articoli Woocommerce nel carrello" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "ha parametri di Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivi" #: templates/timeout.php:189 msgid "Server Time" msgstr "Ora del server" #: templates/timeout.php:169 msgid "delete the files" msgstr "elimina i file" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "è uguale a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Inizia con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Homepage" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Tutti" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Procedura guidata di esclusione pagina" #: templates/timeout.php:124 msgid "Then" msgstr "Allora" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Se REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Procedura guidata timeout cache" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Impostazioni lazy load" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Abilita Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Aggiorna" #: templates/update_success.php:9 msgid "Success" msgstr "Completato" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Attenzione" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Aggiungi nuova regola" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Disponibile solo nella versione Premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Scegli uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Verranno rimossi anche tutti i file di cache" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Se modifichi un file CSS, devi eliminare i file dei CSS minificati" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Cartella di destinazione" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puoi eliminare tutti i file della cache" #: inc/admin.php:1090 msgid "Exclude" msgstr "Escludi" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Ottimizzazione immagini" #: inc/admin.php:1082 msgid "Settings" msgstr "Impostazioni" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Pulizia del database" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Impostazioni CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Escludi JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Escludi CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Escludi i cookie" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Escludi gli user agent" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Escludi pagine" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Strumento di ottimizzazione immagini" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Regole di timeout" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Statistiche della cache" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Cancella la cache di articoli/pagine" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Cosa vuoi che accada dopo l'aggiornamento di un articolo o di una pagina?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Cancella cache della paginazione" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Cancella cache dei tag" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Cancella cache delle categorie" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Cancella tutta la cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Cosa vuoi che accada dopo aver pubblicato il nuovo articolo?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Riavvia al completamento" #: templates/preload.php:210 msgid "pages per minute" msgstr "pagine al minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Tassonomie personalizzate" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipi di contenuto personalizzati" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Allegati" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tag" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Pagine" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorie" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Articoli" #: templates/preload.php:102 msgid "Homepage" msgstr "Homepage" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Riduci le richieste HTTP attraverso file Js combinati" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Carica immagini e iframe quando vengono visualizzati nel browser" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Carica Google Fonts in modo asincrono" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Js che bloccano il rendering" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puoi rimuovere gli inline CSS degli emoji e wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Disabilita emoji" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Riduce i tempi di caricamento della pagina per visitatori abituali" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Memorizzazione nella cache del browser" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Riduce la dimensione dei file inviati dal tuo server" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combina Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combina Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puoi ridurre la dimensione dei file Js" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minifica JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Riduce le richieste HTTP attraverso file CSS combinati" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combina CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Minificazione CSS più potente" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minifica CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puoi ridurre la dimensione dei file CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minifica CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Minificazione HTML più potente" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minifica HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puoi ridurre la dimensione della pagina" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minifica HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Svuota la cache quando un articolo o una pagina vengono aggiornati" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Aggiorna articolo" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Svuota la cache quando un articolo o una pagina vengono pubblicati" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nuovo articolo" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crea la cache per il tema mobile" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema mobile" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Non mostrare la versione cache per desktop su dispositivi mobili" #: inc/admin.php:1195 msgid "Mobile" msgstr "Dispositivi mobili" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Non mostrare la versione in cache agli utenti connessi" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Utenti connessi" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crea la cache di tutto il sito automaticamente" #: inc/admin.php:1157 msgid "Preload" msgstr "Precaricamento" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Riduci il numero di query SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Cache dei widget" #: inc/admin.php:1119 msgid "Enable" msgstr "Attiva" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema di cache" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Ogni 15 giorni" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Ogni 7 giorni" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una volta ogni 3 giorni" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una volta ogni 10 ore" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una volta ogni 9 ore" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una volta ogni 8 ore" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una volta ogni 7 ore" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una volta ogni 5 ore" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una volta ogni 4 ore" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una volta ogni 3 ore" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una volta ogni 2 ore" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una volta ogni 10 giorni" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Il più semplice e veloce sistema Cache WP" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una volta all'anno" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una volta al mese" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una volta al giorno" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una volta ogni 6 ore" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una volta all'ora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Due volte all'ora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una volta ogni 15 minuti" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una volta ogni 5 minuti" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una volta al minuto"wp-fastest-cache/languages/wp-fastest-cache-nl_BE.po000064400000040624151435171370016340 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Dutch (Belgium) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-11 13:40:40+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: nl_BE\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "Het menu WP Fastest Cache op de beheerder werkbalk zal hieronder zichtbaar zijn voor de geselecteerde gebruikersrollen." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Gebruikersrollen" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Er moet minstens één sitemap worden toegevoegd" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "In deze sectie kan je de geavanceerde instellingen aanpassen." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Geavanceerde instellingen" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Je kan sitemaps opgeven die moeten worden gebruikt voor het vooraf laden." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Sitemaps" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Je kan de inhoud opgeven die moet worden gebruikt voor het voor laden en je kan ze ook sorteren." #: templates/preload.php:86 msgid "Content Types" msgstr "Inhoud types" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "In deze sectie kan je de methode opgeven die je wil dat de voorlaad functie gebruikt." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Kies een methode" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Vooraf laden instellingen" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Sommige js-bronnen worden pas geladen wanneer er wordt gescrold of de muis wordt bewogen" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Vertraag Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache opties" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "heeft Yandex Click ID parameters" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Specifieke pagina's wissen" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Opslaan" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Annuleren" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Werkbalk instellingen" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Cache van alle websites wissen" #: wpFastestCache.php:439 msgid "Settings" msgstr "Instellingen" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Cache wissen" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Elimineer render blokkering javascript bronnen" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Opties zijn opgeslagen" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "heeft Woocommerce artikelen in winkelwagentje" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "heeft Google Analytics parameters" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archieven" #: templates/timeout.php:189 msgid "Server Time" msgstr "Server tijd" #: templates/timeout.php:169 msgid "delete the files" msgstr "verwijder geselecteerde bestanden" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Bevat" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Is gelijk aan" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Begint met" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Homepage" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Alles" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Uitsluiten pagina wizard" #: templates/timeout.php:124 msgid "Then" msgstr "Dan" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Als REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Cache timeout wizard" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Instellingen voor lazy load" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip inschakelen" #: templates/update_now.php:9 msgid "Please Update" msgstr "Bijwerken" #: templates/update_success.php:9 msgid "Success" msgstr "Gelukt" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Waarschuwing" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Nieuwe regel toevoegen" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Cache en minified CSS/JS leegmaken" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Alleen beschikbaar in Premium versie" #: templates/timeout.php:141 msgid "Choose One" msgstr "Kies er een" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Alle cachebestanden worden ook verwijderd" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Als je een css bestand wijzigt, moet je minified css bestanden verwijderen" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Doelmap" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Je kan alle cachebestanden verwijderen" #: inc/admin.php:1090 msgid "Exclude" msgstr "Uitsluiten" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Afbeeldingoptimalisatie" #: inc/admin.php:1082 msgid "Settings" msgstr "Instellingen" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Database opschoning" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN instellingen" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "JS uitsluiten" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "CSS uitsluiten" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Cookies uitsluiten" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Uitsluiten gebruikers-agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Pagina's uitsluiten" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Optimaliseer afbeelding tool" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Time-out regels" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Cache statistieken" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Cache van bericht / pagina wissen" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Wat wil je dat er gebeurt na het bijwerken van een bericht of een pagina?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Cache van paginatie wissen" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Cache van bericht tags wissen" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Cache van bericht categorieën wissen" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Cache van homepage wissen" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Alle cache wissen" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Wat wil je dat er gebeurt na het publiceren van het nieuwe bericht?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Opnieuw starten nadat deze is voltooid" #: templates/preload.php:210 msgid "pages per minute" msgstr "pagina's per minuut" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Aangepaste taxonomieën" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Aangepaste berichttypes" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Bijlagen" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tags" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Pagina's" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorieën" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Berichten" #: templates/preload.php:102 msgid "Homepage" msgstr "Homepage" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "HTTP aanvragen verminderen via gecombineerde js-bestanden" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Afbeeldingen en iframes laden wanneer ze de viewport van de browsers betreden" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Google Fonts asynchroon laden" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Render blokkeren Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Je kan de emoji inline css en wp-emoji-release.min.js verwijderen" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Emojis uitschakelen" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Laadtijden van pagina's voor terugkerende bezoekers verminderen" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Browser caching" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "De grootte van bestanden die vanaf je server worden verzonden, verkleinen" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combineer Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combineer Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Je kan de grootte van js bestanden verkleinen" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minify Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "HTTP aanvragen verminderen via gecombineerde css bestanden" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS samenvoegen" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Krachtiger minify CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Je kunt de grootte van css-bestanden verkleinen" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minify CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Krachtiger minify html" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Je kan de grootte van de pagina verkleinen" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minify HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Cache bestanden wissen wanneer een bericht of pagina wordt bijgewerkt" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Bericht bijwerken" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Cache bestanden wissen wanneer een bericht of pagina wordt gepubliceerd" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nieuw bericht" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Cache maken voor mobiel thema" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobiel thema" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "De versie in de cache voor desktop niet tonen op mobiele apparaten" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobiel" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "De versie in de cache voor ingelogde gebruikers niet tonen" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Ingelogde gebruikers" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "De cache van de hele website automatisch maken" #: inc/admin.php:1157 msgid "Preload" msgstr "Vooraf laden" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Het aantal SQL query's verminderen" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Inschakelen" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cache systeem" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Eenmaal per 15 dagen" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Eenmaal per 7 dagen" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Eenmaal per 3 dagen" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Eenmaal per 10 uur" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Eenmaal per 9 uur" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Eenmaal per 8 uur" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Eenmaal per 7 uur" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Eenmaal per 5 uur" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Eenmaal per 4 uur" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Eenmaal per 3 uur" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Eenmaal per 2 uur" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Eenmaal per 10 dagen" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Het eenvoudigste en snelste WP cache systeem" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Eenmaal per jaar" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Eenmaal per maand" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Eenmaal per dag" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Eenmaal per 6 uur" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Eenmaal per uur" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Tweemaal per uur" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Eenmaal per 15 minuten" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Een keer per 5 minuten" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Eenmaal per minuut"wp-fastest-cache/languages/wp-fastest-cache-ru_RU.po000064400000046327151435171370016423 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Russian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2023-09-11 06:04:10+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2);\n" "X-Generator: GlotPress/4.0.1\n" "Language: ru\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Ðеобходимо добавить Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одну карту Ñайта" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Ð’Ñ‹ можете наÑтроить раÑширенные наÑтройки через Ñтот раздел." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "РаÑширенные наÑтройки" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Ð’Ñ‹ можете указать карты Ñайта, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ загрузки." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Карты Ñайта" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Ð’Ñ‹ можете указать Ñодержимое, которое будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ загрузки, а также отÑортировать его." #: templates/preload.php:86 msgid "Content Types" msgstr "Типы Ñодержимого" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Ð’Ñ‹ можете указать метод, который вы хотите иÑпользовать Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ предварительной загрузки через Ñтот раздел." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Выберите метод." #: templates/preload.php:56 msgid "Preload Settings" msgstr "ÐаÑтройки анимации загрузки" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Ðекоторые иÑходные файлы js не будут загружены до прокрутки или Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¼Ñ‹ÑˆÐ¸" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Задержка Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Параметры WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "имеет параметры Yandex Click ID" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "ОчиÑтка определённых Ñтраниц" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Сохранить" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Отмена" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "ÐаÑтройки панели инÑтрументов" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "ОчиÑтить кеш вÑех Ñайтов" #: wpFastestCache.php:439 msgid "Settings" msgstr "ÐаÑтройки" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "ОчиÑтить кÑш" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "УÑтранение реÑурÑов JavaScript, блокирующих рендеринг" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Параметры Ñохранены" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "еÑть товары Woocommerce в корзине" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "имеет параметры Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Ðрхивы" #: templates/timeout.php:189 msgid "Server Time" msgstr "Серверное времÑ" #: templates/timeout.php:169 msgid "delete the files" msgstr "удалить файлы" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Содержит" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Равно" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "ÐачинаетÑÑ Ñ" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Ð’Ñе" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "МаÑтер иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñтраниц" #: templates/timeout.php:124 msgid "Then" msgstr "Тогда" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "ЕÑли REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "МаÑтер тайм-аута (Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ) кÑша" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "ÐаÑтройки отложенной загрузки" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Включить GZIP" #: templates/update_now.php:9 msgid "Please Update" msgstr "ПожалуйÑта, обновите" #: templates/update_success.php:9 msgid "Success" msgstr "УÑпех" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Предупреждение" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Добавить новое правило" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "ДоÑтупно только в верÑии Premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Выбрать один" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Ð’Ñе файлы кÑша также будут удалены" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "При изменении какого-либо CSS-файла, необходимо удалить минифицированные CSS-файлы" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Можно удалить вÑе файлы кÑша" #: inc/admin.php:1090 msgid "Exclude" msgstr "ИÑключить" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "ÐžÐ¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ" #: inc/admin.php:1082 msgid "Settings" msgstr "ÐаÑтройки" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "ОчиÑтка базы данных" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "ÐаÑтройки CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "ИÑключить JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "ИÑключить CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "ИÑключить файлы cookie" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "ИÑключить агентов-пользователей" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "ИÑключить Ñтраницы" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "ИнÑтрумент оптимизации изображений" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Правила тайм-аута (Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ)" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "СтатиÑтика кешированиÑ" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "ОчиÑтить кÑш запиÑи/Ñтраницы" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Что вы хотите, чтобы произошло поÑле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи или Ñтраницы?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "ОчиÑтить кеш разбивки на Ñтраницы" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "ОчиÑтить кеш тегов запиÑи" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "ОчиÑтить кÑш рубрики запиÑи" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "ОчиÑтить веÑÑŒ кÑш" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Что вы хотите, чтобы произошло поÑле публикации новой запиÑи?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "ОК" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Перезагрузить поÑле завершениÑ" #: templates/preload.php:210 msgid "pages per minute" msgstr "Ñтраниц в минуту" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "ПользовательÑкие такÑономии" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "ПользовательÑкие типы запиÑей" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "ВложениÑ" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Теги" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Страницы" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Рубрики" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "ЗапиÑи" #: templates/preload.php:102 msgid "Homepage" msgstr "Ð“Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Сокращение запроÑов HTTP Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ JS-файлов" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Загружать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ iframe, когда они попадают в облаÑть проÑмотра браузера" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "ÐÑÐ¸Ð½Ñ…Ñ€Ð¾Ð½Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° шрифтов Google" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Шрифты Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "JS-файлы, блокирующие рендеринг" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Ð’Ñ‹ можете удалить вÑтроенные CSS Ñмайлики (emoji) и wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Отключить Emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Сокращение времени загрузки Ñтраниц Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ñ… поÑетителей" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "КÑш браузера" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Сокращение размер файлов, отправлÑемых Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ Ñервера" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Объединить JS Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Объединить JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Ð’Ñ‹ можете уменьшить размер JS-файлов" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Сокращение запроÑов HTTP Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ CSS-файлов" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Объединить CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Более Ð¼Ð¾Ñ‰Ð½Ð°Ñ Ð¼Ð¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ CSS-файлов" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Ð’Ñ‹ можете уменьшить размер CSS-файлов" #: inc/admin.php:1270 msgid "Minify Css" msgstr "ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Более Ð¼Ð¾Ñ‰Ð½Ð°Ñ Ð¼Ð¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Ð’Ñ‹ можете уменьшить размер Ñтраницы" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "ÐœÐ¸Ð½Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "ОчиÑтить файлы кÑша при обновлении запиÑи или Ñтраницы" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Обновить запиÑÑŒ" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "ОчиÑтить файлы кеша при публикации запиÑи или Ñтраницы" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "ÐÐ¾Ð²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Создание кÑша Ð´Ð»Ñ Ñ‚ÐµÐ¼Ñ‹ мобильных уÑтройÑтв" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "ÐœÐ¾Ð±Ð¸Ð»ÑŒÐ½Ð°Ñ Ñ‚ÐµÐ¼Ð°" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Ðе показывать кешированную верÑию Ð´Ð»Ñ ÐŸÐš на мобильных уÑтройÑтвах" #: inc/admin.php:1195 msgid "Mobile" msgstr "Мобильный" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Ðе показывать кешированную верÑию Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… пользователей" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "ЗарегиÑтрированные пользователи" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "ÐвтоматичеÑкое Ñоздание кÑша Ð´Ð»Ñ Ð²Ñего Ñайта" #: inc/admin.php:1157 msgid "Preload" msgstr "ÐŸÑ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Сокращение количеÑтва SQL-запроÑов" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "КÑш виджетов" #: inc/admin.php:1119 msgid "Enable" msgstr "Включить" #: inc/admin.php:1118 msgid "Cache System" msgstr "СиÑтема кÑшированиÑ" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Один раз в 15 дней" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Каждые 7 дней" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Раз в 3 днÑ" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Каждые 10 чаÑов" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Каждые 9 чаÑов" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Каждые 8 чаÑов" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Каждые 7 чаÑов" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Каждые 5 чаÑов" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Каждые 4 чаÑа" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Каждые 3 чаÑа" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Каждые 2 чаÑа" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Раз в 10 Ñуток" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "ПроÑтой и быÑтрый кÑш Ð´Ð»Ñ WordPress" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://ru.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Раз в год" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Раз в меÑÑц" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Раз в Ñутки" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Каждые 6 чаÑов" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Раз в чаÑ" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Раз в полчаÑа" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Каждые 15 минут" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Каждые 5 минут" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Каждую минуту"wp-fastest-cache/languages/wp-fastest-cache-es_MX.mo000064400000021173151435171370016367 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ- >_x7•ÍÖßô!)3] f r| ’$ Å'å+ )9HcJ¬ ÷  *)1T †§ÂßNõ<D: ¼Æ ÎÛ ãï ÿ *;Vhm‘R ó 05Tf» ÏÝíü !4S s‰³Éß÷ !6K`wŒ¡¶Ëàðÿ&!)Hr’›° ¹<Ã<H=#†;ªæ "*< DQ Zd)w¡ª#¼àô  @' Kh ´ -Å ,ó ' !-H!Rv!É!%Ý!-"51"g"SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2020-07-16 15:22:30+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es_MX Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAñadir una nueva reglaTodoTambién se eliminarán todos los archivos de la cachéArchivosAdjuntosCaché del navegadorAjustes de la CDNEstadísticas de la cachéSistema de cachéAsistente del tiempo límite de la cachéCancelarCategoríasElige unoVaciar toda la cachéBorrar cachéVaciar la caché de todos los sitiosVaciar la caché de paginaciónVaciar la caché de entradas / páginasVaciar la caché de categorías de entradasVaciar la caché de etiquetas de entradasVaciar los archivos de la caché cuando se publica una entrada o páginaVaciar los archivos de la caché cuando se actualiza una entrada o páginaCombinar CSSCombinar JSCombine Js PlusContieneCrear la caché para el tema para móvilesCrear automáticamente la caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosDesactivar los emojisNo mostrar la versión de escritorio de la caché en los dispositivos móvilesNo mostrar la versión de la caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez a la horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesComienza conCorrectoEtiquetasCarpeta de destinoEl sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces a la horaActualizar la entradaWP Fastest CacheAdvertencia¿Qué quieres que ocurra después de publicar la nueva entrada?¿Qué quieres que ocurra después de actualizar una entrada o una página?Widget de cachéPuedes reducir el tamaño de los archivos CSSPuedes reducir el tamaño de los archivos JSPuedes reducir el tamaño de la páginaPuedes borrar todos los archivos de la cachéPuedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritohttps://es-mx.wordpress.org/plugins/wp-fastest-cache/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-fr_FR.mo000064400000025455151435171370016361 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\mŠ¥ÁÔ7Ù+FV gu‹!¿ ÇÓäù& F%gª-Ê-øP&Qw!Éëý$-.>0m$žÃ ÞÿM(Iv>À ÿ  $4HWw‰©º¿ÐâPñB Z&g8Ž[Ç# = O f y ‘ ¢ © *¹ *ä !$!'!:!L!a!s!‰!!®!Â!Ö!ê!ÿ!"$"8"L"`"r"„"”"-¦"Ô"#ñ"## 3#@#Q#<o#;¬#Gè#,0$<]$š$°$ Î$Ú$ ë$ õ${% %Œ% ”%  %”®%FC&Š& & ±&Ò&æ&ú& '' :'XH'^¡'(B("U(+x(¤(Á(:Þ(L)\f)|Ã)@*"W*)z*(¤*.Í*ü*+SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2025-02-07 13:38:45+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: GlotPress/4.0.1 Language: fr Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) RéglagesAjouter une nouvelle règleRéglages avancésTousTous les fichiers de cache seront également supprimésArchivesAu moins un plan de site doit être ajoutéFichiers jointsCache navigateurRéglages CDNStatistiques de cacheSystème de cacheAssistant d’expiration du cacheAnnulerCatégoriesChoisissez-en unChoisir une méthodeNettoyer tout le cacheVider le cacheVider le cache et les CSS/JS minifiésVider le cache de tous les sitesVider le cache de la page d’accueilVider le cache de paginationVider le cache d’article/pageVider le cache des catégories de publicationVider le cache des étiquettes de publicationVide les fichiers de cache lors de la publication d’un article ou d’une pageVide les fichiers de cache lors de la mise à jour d’un article ou d’une pageVider le cache de certaines pagesCombiner le CSS Combiner le JS Combiner le JS Plus ContientTypes de contenuCrée un cache pour le thème mobile (Premium)Crée automatiquement le cache pour tout le siteTypes de publications personnalisésTaxonomies personnaliséesNettoyage de la base de donnéesTemporisation JSDésactiver les émojisN’affiche pas la version mise en cache pour les ordinateurs sur les mobilesN’affiche pas la version mise en cache pour les utilisateurs connectésÉlimine les ressources JavaScript bloquant le rendu (Premium)Emre VonaActifActiver GzipExclureExclure les CSSExclure les cookiesExclure les JSAssistant d’exclusion de pageExclure les pagesExclure les agents utilisateursPolices Google GzipPage d’accueilPage d’accueil si REQUEST_URISi vous modifiez un fichier CSS, vous devez supprimer les fichiers CSS minifiésOptimisation d’imagesEst égal àRéglages pour le chargement différéCharge les polices Google de façon asynchrone (Premium)Charge les images et les iframes quand ils entrent dans la fenêtre du navigateur (Premium)Utilisateurs connectés Minifier le CSS Minifier le CSS Plus Minifier le HTML Minifier le HTML Plus Minifier le JS MobileThème mobile Minification CSS plus puissante (Premium)Minification HTML plus puissante (Premium)Nouvelle publicationOKToutes les minutesTous les 10 joursToutes les 10 heuresTous les 15 joursToutes les 15 minutesToutes les 2 heuresTous les 3 joursToutes les 3 heuresToutes les 4 heuresToutes les 5 heuresToutes les 5 minutesToutes les 6 heuresTous les 7 joursToutes les 7 heuresToutes les 8 heuresToutes les 9 heuresUne fois par jourUne fois par moisUne fois par anToutes les heuresDisponible uniquement avec la version PremiumOutil optimisation d’imageLes options ont été enregistréesPagesVeuillez mettre à jourPublicationsPréchargement Réglages des préchargementsRéduit les requêtes HTTP grâce aux fichiers CSS combinésRéduit les requêtes HTTP grâce aux fichiers JS combinésRéduit les temps de chargement des pages pour les visiteurs réguliersRéduit le nombre de requêtes SQL (Premium)Réduit la taille des fichiers envoyés depuis votre serveurBlocage de rendu JS Redémarrer une fois terminéEnregistrerHeure du serveurRéglagesPlans de siteCertaines sources JS ne seront pas chargées tant que le défilement ou le déplacement de la souris n’aura pas eu lieu.Commence parSuccèsÉtiquettesDossier cibleLe menu WP Fastest Cache de la barre d’outils de l’administrateur sera visible pour les utilisateurs et utilisatrices sélectionnés ci-dessous.Le plus simple et le plus rapide des systèmes de cache pour WordPressAlorsRègles de délai d’expirationRéglages de la barre d’outilsDeux fois par heureMàj de publicationRôles des comptesWP Fastest CacheOptions de WP Fastest CacheAvertissementQue voulez-vous qu’il se passe après la mise en ligne d’une nouvelle publication ?Que voulez-vous qu’il se passe après la mise à jour d’une publication ou d’une page ?Cache de widget Cette section vous permet de personnaliser les réglages avancés.Diminue la taille des fichiers CSSDiminue la taille des fichiers JS (Premium)Diminue la taille de la pageVide tous les fichiers cacheRetire les émojis CSS en ligne et wp-emoji-release.min.jsVous pouvez spécifier les plans de site à utiliser pour le préchargement.Vous pouvez spécifier le contenu à utiliser pour le préchargement et également le trier.Vous pouvez spécifier la méthode que vous souhaitez utiliser pour la fonctionnalité de préchargement dans cette section.supprimer les fichiersa des paramètres Google Analyticsa des articles WooCommerce dans le panierpossède des paramètres Yandex Click IDhttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages par minutewp-fastest-cache/languages/wp-fastest-cache-es_AR.po000064400000037620151435171370016354 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Argentina) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2020-08-21 00:34:21+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es_AR\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar el caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Borrar caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite del caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Agregar una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elegí uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se van a eliminar todos los archivos del caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificás cualquier archivo CSS, tenés que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Podés borrar todos los archivos del caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas del caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar el caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué querés que pase después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar el caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar el caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar el caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda el caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué querés que pase después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Podés eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Podés reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Podés reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Podés reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos del caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos del caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear el caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio del caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión del caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente el caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://es.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez a la hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces a la hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada minuto"wp-fastest-cache/languages/wp-fastest-cache-cs_CZ.mo000064400000022522151435171370016354 0ustar00Þ•”  ' 4 F 'J r { ‡ — ¤ µ  × Þ é ô    @ Y r Œ § Æ 2ß 0 C [ g r ‚ ‹ ™ .· æ ø   $ ;3 1o .¡ Ð Ú á í õ    0 > R _ d n w A† È Û ç ú =Y it „ ¡« ²¿Øòûþ%9Lbu‡š­ÀÕèú   3 > K W!d†š² ¸ÆÌ/Ô.*3 ^.®ÁÙ Þêó ü (#L Q_ p ~Š›´9¼9ö 0&=%d!Ь?Ë3 ?Pp.޽ÝEî4Pg~6ƒº ÂÌèø5'] d nz‰¨)¾#è( $5-Z-ˆ)¶KàI,v“ ¢°Ã Ì-Ø07Re}Œ]=û49 nx €  —¥ ·Äâõ !&8KQ]¯ Å/Ï"ÿF"i„“§· ÌÚãõ2EHYk~£¶ÆÙìþ"3EW iw ‰—¨#Èì  $ 1 GH E AÖ !14!f!%„!ª! ²! ¿! Ê! Ô!á!è!í!2þ!1"5"P"m"€"™"ª" Æ"6Ñ":#C#'Y#&##¨#.Ì#Cû#S?$“$#¥$#É$1í$%?%SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2025-02-25 22:35:47+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n >= 2 && n <= 4) ? 1 : 2); X-Generator: GlotPress/4.0.1 Language: cs_CZ Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) NastaveníPÅ™idat nové pravidloPokroÄilá nastaveníVÅ¡eVÅ¡echny soubory cache pamÄ›ti budou také odstranÄ›nyArchivyPřílohyCache paměť prohlížeÄeCDN nastavení Statistiky cache pamÄ›tiSystém cache pamÄ›tiPrůvodce vyprÅ¡ením Äasového limitu cache pamÄ›tiStornoKategorieVyber jedenVyberte metoduVymazat vÅ¡echny cache pamÄ›tiVymazat cache paměťSmazat cache paměť a minifikovat CSS/JSVymazat cache paměť vÅ¡ech webů.Vymazat cache paměť domovské stránkyVymazat cache paměť stránkováníVymazat cache paměť příspÄ›vku / stránkyVymazat cache paměť kategorie příspÄ›vkůVymazat cache paměť tagů příspÄ›vkůVymazat soubory cache pamÄ›ti pÅ™i publikování příspÄ›vku nebo stránkyVymazat soubory cache pamÄ›ti pÅ™i aktualizaci příspÄ›vku nebo stránkyVymazat konkrétní stránkyKombinovat CSSKombinovat JSKombinovat JS PlusObsahujeTypy obsahuVytvoÅ™it cache paměť pro mobilní Å¡ablonuVytvoÅ™it cache paměť vÅ¡ech webů automatickyVlastní typy příspÄ›vkuVlastní taxonomieVyÄiÅ¡tÄ›ní databázeZpoždÄ›ní JsZakázat EmodžiNezobrazovat verzi cache pamÄ›ti na stolních poÄítaÄích nebo na mobilních zařízeníchNezobrazovat verzi cache pamÄ›ti pÅ™ihlášeným uživatelůmOdstranit zdroje JavaScriptu blokující vykresleníEmre VonaPovolitPovolit GzipVylouÄitVylouÄit CSSVylouÄit cookiesVylouÄit JSVylouÄit průvodce stránkouVylouÄit stránkyVylouÄit uživatelské agentyGoogle FontyGzipÚvodní stránkaDomovská stránkaPokud REQUEST_URIPokud upravíte jakýkoli CSS soubor, musíte odstranit minifikované CSS souboryOptimalizace obrázkuJe rovnýNastavení pomalého naÄítání ("lazy load")NaÄíst Google fonty asynchronnÄ›NaÄíst obrázky a prvky iframe pÅ™i vstupu do výřezu prohlížeÄePÅ™ihlášení uživateléMinifikace CSSMinifikace CSS PlusMinifikace HTMLMinifikace HTML PlusMinifikace JSMobilníMobilní Å¡ablonaVýkonnÄ›jší minifikace CSSVýkonnÄ›jší minifikace HTMLNový příspÄ›vekOKJednou za minutuJednou za 10 dníJednou za 10 hodinJednou za 15 dníJednou za 15 minutJednou za 2 hodinyJednou za 3 dnyJednou za 3 hodinyJednou za 4 hodinyJednou za 5 hodinJednou za 5 minutJednou za 6 hodinJednou za 7 dníJednou za 7 hodinJednou za 8 hodinJednou za 9 hodinJednou za denJednou za mÄ›sícJednou za rokJednou za hodinuDostupné pouze v Premium verziNástroj pro optimalizaci obrázkůNastavení byla uložena.StránkyProsím aktualizujtePříspÄ›vkyPÅ™edběžnÄ› naÄístSnížit požadavky HTTP prostÅ™ednictvím kombinovaných CSS souborů Snížit požadavky HTTP prostÅ™ednictvím kombinovaných JS souborůSnižte dobu naÄítání stránky pro opakované návÅ¡tÄ›vníkySnížit poÄet dotazů SQLZmenÅ¡it velikost souborů odeslaných ze serveruJS blokující vykreslováníPo dokonÄení restartujte poÄítaÄUložitÄŒas serveruNastaveníMapy webuZaÄíná naHotovoTagyCílová složkaNejjednodušší a nejrychlejší WP Cache systémPakPravidla Äasového limituNastavení panelu nástrojůDvakrát za hodinuAktualizace příspÄ›vkuWP Fastest CacheNastavení WP Fastest CacheVarováníCo se má stát po zveÅ™ejnÄ›ní nového příspÄ›vku?Co se má stát po aktualizaci příspÄ›vku nebo stránky?Cache paměť widgetuMůžete zmenÅ¡it velikost souborů CSSMůžete zmenÅ¡it velikost JS souborůMůžete zmenÅ¡it velikost stránkyMůžete smazat vÅ¡echny soubory cache pamÄ›tiMůžete odstranit inline CSS pro emodži a wp-emoji-release.min.jsMůžete urÄit mapy webu, které se mají použít pro pÅ™edběžné naÄítání.odstranit souboryobsahuje parametry Google Analyticsmá položky Woocommerce v košíkuhttp://cs.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/stránek za minutuwp-fastest-cache/languages/wp-fastest-cache-zh_TW.po000064400000037733151435171370016423 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Chinese (Taiwan) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-09 17:26:31+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: GlotPress/4.0.1\n" "Language: zh_TW\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "在下方é¸å–的使用者角色能看到 WP Fastest Cache 在工具列上的é¸å–®ã€‚" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "使用者角色" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "必須新增至少一個 Sitemap" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "在這個å°è©±æ–¹å¡Šä¸­ï¼Œç¶²ç«™ç®¡ç†å“¡å¯ä»¥è‡ªè¨‚進階設定。" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "進階設定" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "網站管ç†å“¡å¯ä»¥æŒ‡å®šè¦é å…ˆè¼‰å…¥çš„ Sitemap。" #: templates/preload.php:150 msgid "Sitemaps" msgstr "Sitemap" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "網站管ç†å“¡å¯ä»¥æŒ‡å®šè¦é å…ˆè¼‰å…¥çš„å…§å®¹ï¼ŒåŒæ™‚也å¯ä»¥å°é€™äº›å…§å®¹é€²è¡ŒæŽ’åºã€‚" #: templates/preload.php:86 msgid "Content Types" msgstr "內容類型" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "在這個å°è©±æ–¹å¡Šä¸­ï¼Œç¶²ç«™ç®¡ç†å“¡å¯ä»¥æŒ‡å®šè¦ä½¿ç”¨çš„é å…ˆè¼‰å…¥åŠŸèƒ½æ–¹æ³•ã€‚" #: templates/preload.php:72 msgid "Choose a Method" msgstr "é¸å–方法" #: templates/preload.php:56 msgid "Preload Settings" msgstr "é å…ˆè¼‰å…¥è¨­å®š" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "讓æŸäº› JS 程å¼ç¢¼åœ¨ç•«é¢æ²å‹•或移動游標後æ‰è¼‰å…¥" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "å»¶é²è¼‰å…¥ JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache 設定" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "åŒ…å« Yandex Click ID åƒæ•¸" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "清除指定é é¢" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "儲存" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "å–æ¶ˆ" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "工具列設定" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "清除全部網站快å–" #: wpFastestCache.php:439 msgid "Settings" msgstr "設定" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "清除快å–" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "æ¸…é™¤ç¦æ­¢è½‰è­¯çš„ JavaScrpt 資æº" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "設定已儲存。" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "包å«è³¼ç‰©è»Šä¸­çš„ Woocommerce 商å“資料" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "åŒ…å« Google Analytics åƒæ•¸" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "彙整" #: templates/timeout.php:189 msgid "Server Time" msgstr "伺æœå™¨æ™‚é–“" #: templates/timeout.php:169 msgid "delete the files" msgstr "刪除檔案" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "包å«" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "等於" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "開頭嫿œ‰" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "首é " #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "全部" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "排除é é¢ç²¾éˆ" #: templates/timeout.php:124 msgid "Then" msgstr "然後" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "如果 REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "å¿«å–逾時精éˆ" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "å»¶é²è¼‰å…¥è¨­å®š" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "啟用 Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "è«‹æ›´æ–°" #: templates/update_success.php:9 msgid "Success" msgstr "æˆåŠŸ" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "警告" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "新增è¦å‰‡" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "清除快å–åŠå·²å£“縮的 CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "這項功能僅於 Premium 版中æä¾›" #: templates/timeout.php:141 msgid "Choose One" msgstr "é¸å–一項" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "這項æ“ä½œæœƒåŒæ™‚åˆªé™¤å…¨éƒ¨å¿«å–æª”案。" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "如果å°ä»»ä½• CSS 檔案進行修改,修改完畢後必須刪除之å‰å·²å£“縮的 CSS 檔案。" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "目標資料夾" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "這項æ“作會刪除全部快å–。" #: inc/admin.php:1090 msgid "Exclude" msgstr "排除" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "圖片最佳化" #: inc/admin.php:1082 msgid "Settings" msgstr "設定" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "清ç†è³‡æ–™åº«" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN 設定" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "排除 JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "排除 CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "排除 Cookie" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "排除使用者代ç†ç¨‹å¼" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "排除é é¢" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "圖片最佳化工具" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "逾時è¦å‰‡" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "å¿«å–統計資料" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "清除文章/é é¢å¿«å–" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "更新內容後的快å–è™•ç†æ–¹å¼:" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "æ¸…é™¤å…§å®¹é æ¬¡å¿«å–" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "清除文章標籤快å–" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "清除文章分類快å–" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "清除首é å¿«å–" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "清除全部快å–" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "發佈內容後的快å–è™•ç†æ–¹å¼:" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "確定" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "å¿«å–å»ºç«‹å®Œç•¢å¾Œè‡ªå‹•é‡æ–°å•Ÿå‹•é å…ˆè¼‰å…¥ç¨‹åº" #: templates/preload.php:210 msgid "pages per minute" msgstr "é è™•ç†é æ•¸/分é˜" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "自訂分類法" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "自訂內容類型" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "附件" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "標籤" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "é é¢" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "分類" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "文章" #: templates/preload.php:102 msgid "Homepage" msgstr "首é " #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "åˆä½µ JS 檔案å¯ä»¥æ¸›å°‘ HTTP è¦æ±‚次數" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "ç•¶åœ–ç‰‡åŠ iFrame 進入ç€è¦½å™¨æª¢è¦–å€å…§æ‰é€²è¡Œè¼‰å…¥" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "以éžåŒæ­¥æ–¹å¼è¼‰å…¥ Google Fonts ç¶²é å­—åž‹" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts ç¶²é å­—åž‹" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "ç¦æ­¢è½‰è­¯çš„ JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "這項功能å¯ç§»é™¤ Emoji 內嵌 CSS åŠ wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "åœç”¨ Emoji 表情符號" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "這項功能å¯é™ä½Žå›žè¨ªè¨ªå®¢çš„é é¢è¼‰å…¥æ™‚é–“" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "ç€è¦½å™¨å¿«å–" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "減少從網站伺æœå™¨å‚³é€çš„æª”案大å°" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "JS 進階åˆä½µ" #: inc/admin.php:1316 msgid "Combine Js" msgstr "JS åˆä½µ" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "é€™é …åŠŸèƒ½å¯æ¸›å°‘ JS 檔案大å°" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "JS 壓縮" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "åˆä½µ CSS 檔案å¯ä»¥æ¸›å°‘ HTTP è¦æ±‚次數" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS åˆä½µ" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "更多 CSS 進階壓縮功能" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS 進階壓縮" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "é€™é …åŠŸèƒ½å¯æ¸›å°‘ CSS 檔案大å°" #: inc/admin.php:1270 msgid "Minify Css" msgstr "CSS 壓縮" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "更多 HTML 進階壓縮功能" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML 進階壓縮" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "é€™é …åŠŸèƒ½å¯æ¸›å°‘é é¢æª”案大å°" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML 壓縮" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "更新文章或é é¢å¾Œä¾¿æ¸…é™¤å¿«å–æª”案" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "更新內容" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "發佈文章或é é¢å¾Œä¾¿æ¸…é™¤å¿«å–æª”案" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "新增內容" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "為行動版佈景主題建立快å–" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "行動版佈景主題" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "在行動è£ç½®ä¸Šä¸é¡¯ç¤ºå·²å¿«å–的桌é¢ç‰ˆå…§å®¹" #: inc/admin.php:1195 msgid "Mobile" msgstr "行動è£ç½®" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "ä¸åœ¨ä½¿ç”¨è€…登入後顯示已快å–的內容" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "已登入的使用者" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "為這個網站的全部項目自動建立快å–" #: inc/admin.php:1157 msgid "Preload" msgstr "é å…ˆè¼‰å…¥" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "減少 SQL 查詢的次數" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "å°å·¥å…·å¿«å–" #: inc/admin.php:1119 msgid "Enable" msgstr "啟用" #: inc/admin.php:1118 msgid "Cache System" msgstr "å¿«å–系統" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "æ¯ 15 日一次" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "æ¯ 7 日一次" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "æ¯ 3 日一次" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "æ¯ 10 å°æ™‚一次" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "æ¯ 9 å°æ™‚一次" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "æ¯ 8 å°æ™‚一次" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "æ¯ 7 å°æ™‚一次" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "æ¯ 5 å°æ™‚一次" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "æ¯ 4 å°æ™‚一次" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "æ¯ 3 å°æ™‚一次" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "æ¯ 2 å°æ™‚一次" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "æ¯ 10 日一次" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "æœ€æ˜“æ–¼ä½¿ç”¨ã€æœ€å¿«é€Ÿçš„ WordPress å¿«å–外掛。" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://tw.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "æ¯å¹´ä¸€æ¬¡" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "æ¯æœˆä¸€æ¬¡" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "æ¯æ—¥ä¸€æ¬¡" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "æ¯ 6 å°æ™‚一次" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "æ¯å°æ™‚一次" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "æ¯å°æ™‚兩次" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "æ¯ 15 分é˜ä¸€æ¬¡" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "æ¯ 5 分é˜ä¸€æ¬¡" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "æ¯åˆ†é˜ä¸€æ¬¡"wp-fastest-cache/languages/wp-fastest-cache-uk.mo000064400000032635151435171370016000 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\‡m)õ$+DpCw »QÈ-Eb€G˜àó  :[<s=°;î>*7i9¡7Ûlr€6ó*@Us‚:˜FÓ27M$…ª¾”Õ€j Xë D!N!a!y!Š!$¡!Æ!4Ü!!"3"R"f"k"‹"«"À")P#z#"‹#C®#Ÿò#1’$Ä$%á$%'%%M%i%|%.–%3Å%ù%&#& 6&"W&z&$’&#·&Û&#ð&#'!8'#Z'!~' '!·'!Ù'!û'(0(G(X(1l(@ž(.ß()#) C)+P)J|)jÇ)i2*tœ*6+iH+0²+:ã+,/,E,^,¬t,!- ;-F-W-¿q-D1.v..>.Ü.÷.!/3/6D/{/n/qü/n0l†0@ó0?41@t1=µ1Pó1›D2Øà2ι3ˆ4*¤4/Ï4)ÿ4.)5X5$x5SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-29 17:45:13+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : 2); X-Generator: GlotPress/4.0.1 Language: uk_UA Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) ÐалаштуваннÑДодати нове правилоРозширені налаштуваннÑÐ’ÑеВÑÑ– файли кешу також будуть видаленіÐрхівиÐеобхідно додати принаймні одну карту ÑайтуВкладеннÑКеш браузераÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ CDNСтатиÑтика кешуСиÑтема кешуМайÑтер тайм-ауту (Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ) кешуСкаÑуватиКатегоріїВиберіть одинОберіть методОчиÑтити веÑÑŒ кешОчиÑтити ÐºÐµÑˆÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ та Ð¼Ñ–Ð½Ñ–Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ CSS/JSОчиÑтити кеш-пам’Ñть уÑÑ–Ñ… ÑайтівОчиÑтити кеш домашньої ÑторінкиОчиÑтити кеш розбивки на ÑторінкиОчиÑтити кеш запиÑу / ÑторінкиОчиÑтити кеш категорій запиÑівОчиÑтити кеш позначок запиÑівОчиÑтити файли кешу під Ñ‡Ð°Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ— запиÑу або ÑторінкиОчищайте файли кешу під Ñ‡Ð°Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ†Ñ–Ñ— або ÑÑ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¸Ñ… ÑторінокОб'єднати CSSОб'єднати JsОб'єднати Js ПлюÑМіÑтитьТипи вміÑтуСтворити кеш Ð´Ð»Ñ Ð¼Ð¾Ð±Ñ–Ð»ÑŒÐ½Ð¾Ñ— темиСтворити кеш вÑього Ñайту автоматичноКориÑтувацькі типи запиÑівКориÑтувальницька такÑономіÑÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð±Ð°Ð·Ð¸ данихЗатримка JsВимкнути EmojiÐе показувати кешовану верÑÑ–ÑŽ Ð´Ð»Ñ Ð½Ð°Ñтільних комп'ютерів на мобільних приÑтроÑÑ…Ðе показувати кешовану верÑÑ–ÑŽ Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів, Ñкі ввійшли в ÑиÑтемуУÑÑƒÐ½ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒÑŽÑ‡Ð¸Ñ… Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JavaScript реÑурÑівEmre VonaУвімкнутиУвімкніть GzipВилучитиВиключити CSSВиключити файли cookieВиключити JSМайÑтер Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑторінкиВилучені ÑторінкиВиключити User-AgentsШрифти GoogleGzipГоловна ÑÑ‚Ð¾Ñ€Ñ–Ð½ÐºÐ°Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ ÑторінкаЯкщо REQUEST_URIЯкщо ви змінюєте будь-Ñкий файл CSS, вам потрібно видалити мініфіковані файли CSSÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½ÑŒÐ”Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ”ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Lazy LoadÐÑинхронне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ñ–Ð² GoogleЗавантажуйте Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ð° фрейми, коли вони потраплÑють в облаÑть переглÑду браузераЗареєÑтровані кориÑтувачіМініфікувати CssМініфікувати Css ПлюÑМініфікувати HTMLÐ¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð´Ñƒ HTML PlusМініфікувати JsМобільнийМобільна темаБільш потужне Ð·Ð¶Ð¸Ð¼Ð°Ð½Ð½Ñ CSSБільш потужний зменшувач htmlÐовий запиÑOKРаз в кожну хвилинуРаз в кожні 10 днівРаз в кожні 10 годинРаз на 15 днівРаз в кожні 15 хвилинРаз в кожні 2 годиниРаз на 3 дніРаз в кожні 3 годиниРаз в кожні 4 годиниРаз в кожні 5 годинРаз в кожні 5 хвилинРаз в кожні 6 годинРаз на 7 днівРаз в кожні 7 годинРаз в кожні 8 годинРаз в кожні 9 годинРаз в деньРаз в міÑÑцьРаз в рікРаз годинуДоÑтупно лише у верÑÑ–Ñ— PremiumІнÑтрумент оптимізації зображеннÑПараметри були збереженіСторінкиБудь лаÑка, оновітьЗапиÑиПопереднє завантаженнÑÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ завантаженнÑЗменшити кількіÑть HTTP-запитів шлÑхом об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² CSS.Зменшити кількіÑть HTTP-запитів шлÑхом об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ js-файлів.Зменшити Ñ‡Ð°Ñ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñторінок Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¸Ñ… відвідувачівЗменшіть кількіÑть SQL-запитівЗменште розмір файлів, Ñкі надÑилаютьÑÑ Ð· вашого Ñервера.Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ JsПерезапуÑтити піÑÐ»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½ÑÐ—Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸Ð§Ð°Ñ ÑервераÐалаштуваннÑКарти ÑайтуДеÑкі js джерела не будуть завантажені до тих пір, поки не буде прокручено або переміщено мишеюПочинаєтьÑÑ Ð·Ð£ÑпіхПозначкиЦільова папкаМеню WP Fastest Cache на панелі інÑтрументів адмініÑтратора буде видимим Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð½Ð¸Ñ… нижче ролей кориÑтувачів.ÐайпроÑтіша Ñ– найшвидка ÑиÑтема WP CacheТодіПравила перервиÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ð½ÐµÐ»Ñ– інÑтрументівДвічі в годинуОновити запиÑРолі кориÑтувачівWP Fastest CacheПараметри ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ WP Fastest CacheВнимание!Що ви хочете, щоб ÑталоÑÑ Ð¿Ñ–ÑÐ»Ñ Ð¾Ð¿ÑƒÐ±Ð»Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ запиÑу?Що ви хочете, щоб ÑталоÑÑ Ð¿Ñ–ÑÐ»Ñ Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñу або Ñторінки?Кеш віджетівВи можете налаштувати розширені параметри в цьому розділі.Ви можете зменшити розмір файлів CSSВи можете зменшити розмір js файлівВи можете зменшити розмір ÑторінкиВи можете видалити вÑÑ– файли кешуВи можете видалити emoji inline css та wp-emoji-release.min.jsВи можете вказати мапи, Ñкі будуть викориÑтовуватиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ завантаженнÑ.Ви можете вказати вміÑÑ‚, Ñкий буде викориÑтовуватиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ завантаженнÑ, а також ви можете його Ñортувати.Ви можете вказати метод, Ñкий ви хочете викориÑтовувати Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— попереднього Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· цей розділ.видалити файлимає параметри Google Analyticsмає товари Woocommerce у кошикумає параметри Yandex Click IDhttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/Ñторінок на хвилинуwp-fastest-cache/languages/wp-fastest-cache-de_DE.mo000064400000024577151435171370016327 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\m‹ªÁÚ.à0HQas …#’ ¶ À Ë×ë # 1M%g$¬(ÑCú@>™©¸ Ë Ö,ã8Ic{ žR²I=O  —¢ ²ÀÒèù* DQV_hMzÈ Ø%ã U&|‘ ´Ä Ù çô * I W Z l € — «  Ø ë !!-!C!Y!l!‚!˜!®! ·!Á!Ñ!%ã! "&"B"I" ]"g"p"6†"5½"<ó"%0#NV#¥#¸# Ð# Ú# å#ó#Oü# L$X$ _$m$p}$9î$(%-%H%f%y%%Ÿ%°%Ê%DÒ%K& c&Ep&0¶&/ç&*'%B'Jh'J³'Gþ'\F(£(¸(%×(ý(1)M)m)SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-18 09:17:03+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: de Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) EinstellungenNeue Regel hinzufügenErweiterte EinstellungenAllesAuch alle Cache-Dateien werden dabei gelöschtArchiveMindestens eine Sitemap muss hinzugefügt werdenAnhängeBrowser-CachingCDN-EinstellungenCache-StatistikenCache-SystemCache-ZeitüberschreitungsassistentAbbrechenKategorienWähle einsWähle eine MethodeAlle Caches löschenCache leerenCache und minimiertes CSS/JS leerenCache aller Websites leerenCache der Homepage leerenCache von Seitennummerierungen leerenCache von Beitrag/Seite leerenCache von Beitrags-Kategorien leerenCache von Beitrags-Schlagwörtern leerenCache leeren, wenn ein Beitrag oder eine Seite veröffentlicht wirdCache leeren, wenn ein Beitrag oder eine Seite aktualisiert wirdBestimmte Seiten löschenCSS kombinierenJS kombinierenJS minimieren PlusBeinhaltetInhaltstypenCache für Theme für Mobilgeräte erstellenDen Cache für die gesamte Website automatisch erstellenIndividuelle InhaltstypenIndividuelle TaxonomienDatenbank aufräumenJS verzögernEmojis deaktivierenDie zwischengespeicherte Version für den Desktop nicht auf Mobilgeräten anzeigenDie zwischengespeicherte Version nicht für angemeldete Benutzer anzeigenBeseitigt JavaScript-Ressourcen, die das Rendering blockierenEmre VonaAktivierenGzip aktivierenAusschließenCSS ausschließenCookies ausschließenJS ausschließenSeiten-Ausschluss-AssistentSeiten ausschließenUser Agents ausschließenGoogle FontsGzipHomepageHomepageFalls REQUEST_URIFalls du eine CSS-Datei veränderst, musst du minimierte CSS-Dateien löschenBildoptimierungIst gleichEinstellungen für Verzögertes LadenGoogle Fonts asynchron ladenBilder und iFrames laden, wenn diese in den Darstellungsbereich des Browsers gelangenAngemeldete BenutzerCSS minimierenCSS minimieren PlusHTML minimierenHTML minimieren PlusJS minimierenMobilgeräteTheme für MobilgeräteStärkeres Minimieren von CSSStärkeres Minimieren von HTMLNeuer BeitragOKEinmal pro MinuteEinmal alle 10 TageEinmal alle 10 StundenEinmal alle 15 TageEinmal alle 15 MinutenEinmal alle 2 StundenEinmal alle 3 TageEinmal alle 3 StundenEinmal alle 4 StundenEinmal alle 5 StundenEinmal alle 5 MinutenEinmal alle 6 StundenEinmal alle 7 TageEinmal alle 7 StundenEinmal alle 8 StundenEinmal alle 9 StundenTäglichMonatlichEinmal pro JahrEinmal pro StundeNur verfügbar in der Premium-VersionWerkzeug zur BildoptimierungOptionen wurden gespeichertSeitenBitte aktualisierenBeiträgeVorladenPreload-EinstellungenHTTP-Anfragen durch kombinierte CSS-Dateien reduzierenHTTP-Anfragen durch kombinierte JS-Dateien reduzierenDie Seitenladezeiten für wiederkehrende Besucher reduzierenDie Anzahl an SQL-Anfragen reduzierenDie Größe der Dateien, die von deinem Server ausgeliefert werden, reduzierenRender-Blocking-JSNeustart nach AbschlussSpeichernServerzeitEinstellungenSitemapsEinige JS-Quellen werden erst geladen, wenn gescrollt oder die Maus bewegt wirdBeginnt mitErfolgSchlagwörterZielverzeichnisDas WP-Fastest-Cache-Menü in der Admin-Werkzeugleiste ist für die unten ausgewählten Benutzerrollen sichtbar.Das einfachste und schnellste Cache-System für WordPressDannZeitüberschreitungsregelnWerkzeugleisten-EinstellungenZweimal pro StundeAktualisierter BeitragBenutzerrollenWP Fastest CacheWP-Fastest-Cache-OptionenWarnungWas soll geschehen, nachdem ein neuer Beitrag veröffentlicht wurde?Was soll geschehen, nachdem ein Beitrag oder eine Seite aktualisiert wurde?Widget-CacheIn diesem Abschnitt kannst du die erweiterten Einstellungen anpassen.Du kannst die Größe von CSS-Dateien verringernDu kannst die Größe von JS-Dateien reduzierenDu kannst die Größe der Seite verringernDu kannst alle Cache-Dateien löschenDu kannst das Inline-CSS für Emojis und wp-emoji-release.min.js entfernenDu kannst festlegen, welche Sitemaps für das Preloading verwendet werden.Du kannst die Inhalte für das Preloading festlegen und auch sortieren.In diesem Abschnitt kannst du festlegen, welche Methode die Preload-Funktion verwenden soll.die Dateien löschenhat Google-Analytics-Parameterhat Woocommerce-Elemente im Warenkorbhat Yandex-Click-ID-Parameterhttp://de.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/Seiten pro Minutewp-fastest-cache/languages/wp-fastest-cache-sl_SI.mo000064400000023507151435171370016370 0ustar00Þ•”¼\ \ ] w „ – 'š  "Ë î ú  ( 5 J Q \ g w ‡ “ ¬ Æ á  2 0L } • ¡ ¬ ¼ Å Ó .ñ  2 D U ^ ;m 1© .Û   ' / ; K V j x Œ ™ ž ¨ ± AÀ  ! 4=U“ £® ¾Ê Ûå ìù,58L_s†œ¯ÁÔçú"4GZ m x … ‘!žÀÔì ò/.O*~ ©.Êù $ )5>FG Žš¢ §(µÞ ãñ  -F9N9ˆ Â=Ï& %4!Z|?›3ÛUTeºËë .(Wwnˆ÷&:1>pw— ¹Èá+ù% - 8EUt$Š+¯)Û+#1GUIç "5 =%K*qœµÉ æô?<Q0Ž ¿É Òà èõ 1@ \j o }‹S›ï   -IN˜ ¯½Ðß ó 4 TbiyŠ™©¼ËÚéø  ( 7 F U d r ‚ ‘ ž ¿ Û ó ú ! !&!L?!:Œ!/Ç!÷!4"L"e"‚"‰" ™"¤"S½" ##0# 7#>C#‚#ˆ#Ÿ#¹#È#Û#ì# $,$5@$v$5Ž$%Ä$%ê$ %,1%P^%R¯%&Y&u&‡&"¦&É&.ç&'6'SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2023-12-18 14:05:59+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n % 100 == 1) ? 0 : ((n % 100 == 2) ? 1 : ((n % 100 == 3 || n % 100 == 4) ? 2 : 3)); X-Generator: GlotPress/4.0.1 Language: sl_SI Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) NastavitveDodaj novo praviloNapredne NastavitveVseOdstranjene bodo tudi vse datoteke predpomnilnikaArhiviVsaj en sitemap mora biti dodanPriponkePredpomnilnik brskalnikaCDN nastavitveStatistka predpomnilnikaSistemski predpomnilnikÄŒParovnik za Äasovni potek predpomnilnikaPrekiniKategorijeIzberite enoIzberite metodoPoÄisti celoten predpomnilnikPoÄisti medpomnilnikPoÄisti predpomnilnik za vse straniPoÄisti predpomnilnik Å¡tevilÄenja straniPoÄisti predpomnilnik prispevka / straniPoÄisti predpomnilnik kategorij prispevkovPoÄisti predpomnilnik oznak straniIzbriÅ¡i datoteke predpomnilnika, ko sta prispevek ali stran objavljenaIzbriÅ¡i datoteke predpomnilnika, ko sta prispevek ali stran posodobljenaÄŒiÅ¡Äenje doloÄenih straniKombiniraj CssKombiniraj JsKombiniraj Js PlusVsebujeVrste vsebineUstvari predpomnilnik za mobilno temoSamodejno ustvari prepomnilnik vseh straniVrste prispevkov po meriTaksonomije po meriOÄiÅ¡Äenje podatkovne bazeZakasnitev JSOnemogoÄi Äustvene simboleNe prikaži prepomnjene namizne razliÄice na mobilnih napravahNe prikaži prepomnjene razliÄice za prijavljene uporabnikeOdpravi Java-Script vire, ki ovirajo izrisovanjeEmre VonaOmogoÄiOmogoÄi GzipIzloÄiIzloÄii CSSIzloÄi piÅ¡kotkeIzloÄi JSÄŒarovnik za izloÄanje straniIzloÄi straniIzloÄi uporabniÅ¡ke agenteGoogle pisaveGzipDomaÄa stranDomaÄa stranÄŒe REQUEST_URIOb spremembi katerekoli css datoteke je potrebno izbrisati pomanjÅ¡ane css datotekeOptimizacija slikJe enak kotNastavitve za lenobno nalaganjeAsinhrono nalaganje Google pisavNaloži slike in iframe okvireje, ko se pojavijo v vidnem delu brskalnikaPrijavljeni uporabnikiZmanjÅ¡aj CssZmanjÅ¡aj Css PlusZmanjÅ¡aj HTMLZmanjÅ¡aj HTML PlusZmanjÅ¡aj JsMobilnoMobilna temaBolj zmogljiva css pomanjÅ¡avaBolj zmogljiva pomanjÅ¡ava htmlNov prispevekV reduNa vsako minutoEnkrat na 10 dniNa vsakh 10 urNa vsake 15 dniNa vsakih 15 minutNa vsaki 2 uriNa vsake 3 dniNa vsake 3 ureNa vsake 4 ureNa vsakih 5 urNa vsakih 5 minutNa vsakih 6 urNa vsake 7 dniNa vsakih 7 urNa vsakih 8 urNa vsakih 9 urEnkrat na danEnkrat na mesecEnkrat na letoNa vsako uroNa voljo le v premium razliÄiciOrodje za optimizacijo slikNastavitve so shranjeneStraniProsimo, posodobitePrispevkiPrednalaganjeNastavitve prednalaganjaLahko zmanjÅ¡ate Å¡tevilo HTTP zahtevkov s pomoÄjo kombiniranih css datotekZmanjÅ¡aj HTTP zahtevke s pomoÄjo kombiniranih js datotekZmanjÅ¡aj Äas nalaganja za ponovne obiskovalceZmanjÅ¡aj Å¡tevilo SQL poizvedbZmanjÅ¡aj velikost datotek, ki jih poÅ¡lje strežnikJs, ki ovira izrisovanjeKo konÄasÅ¡ ponovno zaženiShraniÄŒas strežnikaNastavitveZemljevidi spletnih mestNekateri viri JS se ne bodo naložili, dokler se ne pomaknete ali premaknete miÅ¡keSe zaÄne s/zJe bilo uspeÅ¡noOznakeCiljna mapaNajenostavnejÅ¡i in najhitrejÅ¡i predpomnilniÅ¡ki sistem za WPPotemPravila za potek ÄasaNastavitve orodne vrsticeDvakrat na uroPosodobi prispevekWP Fastest CacheMožnosti za WP Fastet CacheOpozoriloKaj naj se zgodi po objavi novega prispevka?Kaj naj se zgodi po posodobitvi prispevka ali strani?Predpomnilnik gradnikovV tem razdelku lahko prilagodite napredne nastavitve.Lahko zmanjÅ¡ate velikost css datotekLahko zmanjÅ¡ate velilkost js datotekLahko zmanjÅ¡ate velikost straniLahko izbriÅ¡ete vse datoteke predpomnilnikaLahko izbriÅ¡ete medvrstiÄni css Äustvenih simbolov in wp-emoji-release.min.jsDoloÄite lahko zemljevide spletnih mest, ki se bodo uporabljali za prednalaganje.Zemljevidi spletnih mestV tem razdelku lahko doloÄite metodo, ki jo želite uporabiti za funkcijo prednalaganja.izbriÅ¡i datotekeima Google Analytics parametreima Woocommerce artikle na seznamuima Yandex Click ID parametrehttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/strani na minutowp-fastest-cache/languages/wp-fastest-cache-fi.po000064400000037015151435171370015757 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Finnish # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2020-03-19 21:29:25+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: fi\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "" #: wpFastestCache.php:439 msgid "Settings" msgstr "Asetukset" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Tyhjennä välimuisti" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Poista näyttämisen blokkaavat JS resurssit" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Asetukset on tallennettu" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "Woocommerce kohteita on ostoskorissa" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "on Google Analytics -parametrejä" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Arkistot" #: templates/timeout.php:189 msgid "Server Time" msgstr "Palvelimen aika" #: templates/timeout.php:169 msgid "delete the files" msgstr "poistaa tiedostot" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Sisältää" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Yhtäsuuri kuin" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Alkaa" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Kotisivu" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Kaikki" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Rajaa pois sivu -velho" #: templates/timeout.php:124 msgid "Then" msgstr "Sitten" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Jos REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Välimuisti aikaraja -velho" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Vaiheittainen lataus asetukset" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Ota Gzip käyttöön" #: templates/update_now.php:9 msgid "Please Update" msgstr "Päivitä, ole hyvä" #: templates/update_success.php:9 msgid "Success" msgstr "Onnistui" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Varoitus" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Lisää uusi sääntö" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Vain Maksullisessa versiossa" #: templates/timeout.php:141 msgid "Choose One" msgstr "Valitse yksi" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Myös kaikki välimuistin tiedostot poistetaan" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Jos muutat mitä tahansa css-tiedostoa, on poistettava pienennetty css-tiedosto" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Kohde hakemisto" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Voit poistaa kaikki välimuistin tiedostot" #: inc/admin.php:1090 msgid "Exclude" msgstr "Rajaa pois" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Kuvien optimointi" #: inc/admin.php:1082 msgid "Settings" msgstr "Asetukset" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Tietokannan siivous" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN-Asetukset" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Rajaa pois JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Rajaa pois CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Rajaa pois evästeet" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Rajaa pois käyttäjäagentit" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Rajaa pois sivut" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Työkalu kuvien optimointiin" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Aikasäännöt" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Välimuistin tilastot" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Tyhjennä sivun/artikkelin välimuisti" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Mitä haluat tapahtuvaksi artikkelin tai sivun päivityksen jälkeen?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Tyhjennä sivutuksen välimuisti" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Tyhjennä artikkelin avainsanojen välimuisti" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Tyhjennä artikkelin kategorioiden välimuisti" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Tyhjennä koko välimuisti" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Mitä haluat tapahtuvaksi kun uusi artikkeli on julkaistu?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Käynnistä uudelleen kun valmista" #: templates/preload.php:210 msgid "pages per minute" msgstr "sivua minuutissa" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Mukautettu luokittelu" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Mukautetut artikkelityypit" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Liitteet" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Avainsanat" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Sivut" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Osastot" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Artikkelit" #: templates/preload.php:102 msgid "Homepage" msgstr "Etusivu" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Vähennä HTTP-kutsuja yhdistämällä js-tiedostoja" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Lataa kuvat ja iframes kun ne saapuvat selaimen näyttöön" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Lataa Google fontit asynkronisesti" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google fontit" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Näytä blokkaava Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Voit poistaa hymiön rivin sisäisen css ja wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Poista hymiöt käytöstä" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Vähennä sivun latausaikoja toistuville vierailijoille" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Selaimen välimuisti" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Pienennä palvelimelta lähetettyjen tiedostojen kokoa" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Yhdistä Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Yhdistä Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Voit pienentää js-tiedostojen kokoa" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Pienennä Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Vähennä HTTP-kutsuja yhdistämällä css-tiedostoja" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Yhdistä Css" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Tehokkaampi css pienennys" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Pienennä Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Voit pienentää css-tiedostojen kokoa" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Pienennä Css" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Tehokkaampi HTML-pienennys" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Pienennä HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Voit pienentää sivun kokoa" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Pienennä HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Tyhjennä välimuistin tiedostot kun sivu tai artikkeli päivitetty" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Päivitä artikkeli" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Tyhjennä välimuistin tiedostot kun sivu tai artikkeli julkaistu" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Uusi artikkeli" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Tee välimuisti mobiili teemalle" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobiili teema" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Älä näytä mobiili laitteille pöytäkoneille välimuistitettua versiota" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobiili" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Älä näytä välimuistitettua versiota kirjautuneille käyttäjille" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Kirjautuneet käyttäjät" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Luo välimuisti automaattisesti koko sivustolle" #: inc/admin.php:1157 msgid "Preload" msgstr "Esilataa" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Vähennä SQL-kutsujen määrää" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Vimpain välimuisti" #: inc/admin.php:1119 msgid "Enable" msgstr "Ota käyttöön" #: inc/admin.php:1118 msgid "Cache System" msgstr "Välimuistijärjestelmä" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "15 päivän välein" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "7 päivän välein" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "3 päivän välein" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "10 tunnin välein" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "9 tunnin välein" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "8 tunnin välein" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "7 tunnin välein" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "5 tunnin välein" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "4 tunnin välein" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "3 tunnin välein" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "2 tunnin välein" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "10 päivän välein" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Yksinkertaisin ja nopein WP-välimuistijärjestelmä" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Kerran vuodessa" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Kerran kuukaudessa" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Kerran päivässä" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "6 tunnin välein" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Kerran tunnissa" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Kahdesti tunnissa" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "15 minuutin välein" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "5 minuutin välein" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "1 minuutin välein"wp-fastest-cache/languages/wp-fastest-cache-sv_SE.mo000064400000023617151435171370016400 0ustar00Þ•—ÔŒ Œ  § ´ Æ 'Ê ò "û  * : G X e z Œ — § · à ã ü  / J i 2‚ 0µ æ þ  % . < .Z ‰ › ­ ¾ Ç ;Ö 1 .D s } „  ˜ ¤ ´ ¿ Ó á õ  A)k ~Š =¾ü  '3 DN Ub{•ž¡µÈÜï*=Pcx‹°Ã Ö á î ú!)=U [iow/ˆ.¸*ç .3bu ’ž§F° ÷  (G LZ k y …¡º9Â9ü 6=C&%¨!Îð?3OUƒTÙ.?_}.œËë ü=Qk+pœ+¢ÎÖèû / 6AJY i!u!—¹Ôð#"2;U;‘Í ä òÿ --HvŽ£ ³ÀIÒ93V Š”  « µÃ Õâ ,9 > HRGa© ¸)ÅïJ W lzœ °½ ÃÍé )?Wm…²Éà÷ % : Q h  ‘ ¥ · %É ï !! #!-!5!D!7`!6˜!3Ï!"7""V"!y"›" ¡"«"½"IÍ" ### ,#6#7?#w#}#!Œ#®#Ä#Ö#æ# ÷#$= $I^$ ¨$@µ$%ö$$%!A%c%;ƒ%G¿%\&Yd&¾&Î&"î&'.0'_''SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-09 10:10:54+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: sv_SE Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) InställningarLägg till ny regelAvancerade inställningarAllaAlla cache-filer kommer ocksÃ¥ att tas bortArkivMinst en webbplatskarta mÃ¥ste läggas tillBilagorWebbläsarcachingCDN-inställningarCachestatistikCachesystemGuide för cache-timeoutAvbrytKategorierVälj enVälj en metodRensa all cacheRensa cacheRensa cache och minifierad CSS/JSRensa cache för alla webbplatserRensa cache för startsidaRensa cache för pagineringRensa cache för inlägg/sidaRensa cache för inläggskategorierRensa cache för inläggsetiketterRensa cache-filer när ett inlägg eller en sida publicerasRensa cache-filer när ett inlägg eller en sida uppdaterasRensar specifika sidorKombinera CSSKombinera JsKombinera Js PlusInnehÃ¥llerInnehÃ¥llstyperSkapa cache för mobiltemaSkapa cache för hela webbplatsen automatisktAnpassade inläggstyperAnpassade taxonomierDatabasrensningFördröj JSInaktivera emojisVisa inte den cachade versionen för stationär dator till mobila enheterVisa inte den cachade versionen för inloggade användareEliminera renderingsblockerande JavaScript-resurserEmre VonaAktiveraAktivera GzipExkluderaExkludera CSSExkludera cookiesExkludera JSGuide för exkludering av sidaExkludera sidorExkludera användaragenterGoogle FontsGzipStartsidaStartsidaOm REQUEST_URIOm du modifierar nÃ¥gon CSS-fil mÃ¥ste du ta bort minifierade CSS-filerBildoptimeringÄr lika medInställningar för uppskjuten inläsningLadda Google Fonts asynkrontLadda bilder och iframes när de kommer in i webbläsarens visningsomrÃ¥deInloggade användareMinifiera CSSMinifiera CSS PlusMinifiera HTMLMinifiera HTML PlusMinifiera JsMobilMobiltemaKraftfullare minifierad CSSKraftfullare minifierad htmlNytt inläggOKEn gÃ¥ng per minutEn gÃ¥ng var 10:e dagEn gÃ¥ng var 10:e timmeEn gÃ¥ng var 15:e dagEn gÃ¥ng var 15:e minutEn gÃ¥ng varannan timmeEn gÃ¥ng var 3:e dagEn gÃ¥ng var 3:e timmeEn gÃ¥ng var 4:e timmeEn gÃ¥ng var 5:e timmeEn gÃ¥ng var 5:e minutEn gÃ¥ng var 6:e timmeEn gÃ¥ng var 7:e dagEn gÃ¥ng var 7:e timmeEn gÃ¥ng var 8:e timmeEn gÃ¥ng var 9:e timmeEn gÃ¥ng om dagenEn gÃ¥ng i mÃ¥nadenEn gÃ¥ng om Ã¥retEn gÃ¥ng i timmenEndast tillgängligt i premiumversionBildoptimeringsverktygAlternativ har sparatsSidorUppdateraInläggFörhandsladdaFörladdningsinställningarMinska HTTP-förfrÃ¥gningar genom kombinerade CSS-filerMinska HTTP-förfrÃ¥gningar genom kombinerade js-filerMinska sidans laddningstid för upprepade besökareMinska antalet SQL-frÃ¥gorMinska storleken pÃ¥ filer som skickas frÃ¥n din serverJavascript som blockerar renderingStarta om efter att ha slutförtsSparaServertidInställningarWebbplatskartorVissa js-källor laddas inte förrän du rullar sidan eller flyttar musenStartar medLyckadesEtiketterMÃ¥lmappDet enklaste och snabbaste cachesystemet för WordPressSedanTimeout-reglerInställningar för verktygsfältTvÃ¥ gÃ¥nger i timmenUppdatera inläggAnvändarrollerWP Fastest CacheAlternativ för WP Fastest CacheVarningVad vill du hända efter att du publicerat det nya inlägget?Vad vill du ska hända efter att ha uppdaterat ett inlägg eller en sida?Widget-cacheDu kan anpassa de avancerade inställningarna via denna sektion.Du kan minska storleken pÃ¥ CSS-filerDu kan minska storleken pÃ¥ js-filerDu kan minska storleken pÃ¥ sidanDu kan ta bort alla cache-filerDu kan ta bort emoji inline CSS och wp-emoji-release.min.jsDu kan specificera webbplatskartor som ska användas för förladdning.Du kan välja för vilket innehÃ¥ll förladdning ska användas, och även ange dess ordning.I denna sektion kan du välja vilken metod du vill använda för förladdningsfunktionen.ta bort filernahar Google Analytics-parametrarhar Woocommerce-varor i varukorgenhar Yandex Click ID-parametrarhttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/sidor per minutwp-fastest-cache/languages/wp-fastest-cache-zh_CN.po000064400000037037151435171370016366 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Chinese (China) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-10 10:19:38+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: GlotPress/4.0.1\n" "Language: zh_CN\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "请至少添加一个站点地图" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "ä½ å¯ä»¥åœ¨è¿™é‡ŒæŸ¥çœ‹æ›´å¤šè®¾ç½®ã€‚" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "高级设置" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "ä½ å¯ä»¥æŒ‡å®šç”¨äºŽé¢„加载的站点地图。" #: templates/preload.php:150 msgid "Sitemaps" msgstr "站点地图" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "ä½ å¯ä»¥æŒ‡å®šé¢„加载的内容,也å¯ä»¥å¯¹å®ƒä»¬è¿›è¡ŒæŽ’åºã€‚" #: templates/preload.php:86 msgid "Content Types" msgstr "内容类型" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "ä½ å¯ä»¥åœ¨è¿™é‡ŒæŒ‡å®šé¢„加载功能的实现方å¼ã€‚" #: templates/preload.php:72 msgid "Choose a Method" msgstr "é€‰æ‹©ä¸€ç§æ–¹å¼" #: templates/preload.php:56 msgid "Preload Settings" msgstr "预加载设置" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "åªæœ‰ç”¨æˆ·æ»šåЍ页颿ˆ–移动鼠标时æ‰ä¼šåŠ è½½éƒ¨åˆ† js 文件" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "延迟加载 JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache 选项" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "具有 Yandex çš„ Click ID 傿•°" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "清除特定页é¢çš„缓存" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "ä¿å­˜" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "å–æ¶ˆ" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "工具æ è®¾ç½®" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "清除所有站点的缓存" #: wpFastestCache.php:439 msgid "Settings" msgstr "设置" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "清除缓存" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "消除阻止渲染的 JavaScript 资æº" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "选项已ä¿å­˜" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "购物车中有 Woocommerce 项目" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "具有 Google Analytics(分æžï¼‰å‚æ•°" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "存档" #: templates/timeout.php:189 msgid "Server Time" msgstr "æœåŠ¡å™¨æ—¶é—´" #: templates/timeout.php:169 msgid "delete the files" msgstr "删除文件" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "包å«" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "等于" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "开始于" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "主页" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "所有" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "排除页é¢å‘导" #: templates/timeout.php:124 msgid "Then" msgstr "ç„¶åŽ" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "如果 REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "缓存超时å‘导" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "延迟加载设置" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "å¯ç”¨ Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "请更新" #: templates/update_success.php:9 msgid "Success" msgstr "æˆåŠŸ" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "警告" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "添加新规则" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "删除缓存和已压缩的 CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "仅在 Premium 版中å¯ç”¨" #: templates/timeout.php:141 msgid "Choose One" msgstr "选一个" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "所有缓存文件也将被删除" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "如果您修改了 CSS 文件,则必须删除已压缩的 CSS 文件" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "目标文件夹" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "您å¯ä»¥åˆ é™¤æ‰€æœ‰ç¼“存文件" #: inc/admin.php:1090 msgid "Exclude" msgstr "排除选项" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "图åƒä¼˜åŒ–" #: inc/admin.php:1082 msgid "Settings" msgstr "设置" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "æ•°æ®åº“清ç†" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN 设置" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "排除的 JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "排除的 CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "排除的 Cookie" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "排除的 User-Agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "排除的页é¢" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "图åƒä¼˜åŒ–工具" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "缓存超时规则" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "缓存统计" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "清除文章/页é¢çš„缓存" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "更新文章或页é¢åŽæ‚¨æƒ³åšä»€ä¹ˆï¼Ÿ" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "清除分页缓存" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "清除文章标签缓存" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "清除文章类别缓存" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "清除所有缓存" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "å‘å¸ƒæ–°æ–‡ç« åŽæ‚¨æƒ³åšä»€ä¹ˆï¼Ÿ" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "好" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "缓存生æˆå®Œæ¯•åŽé‡æ–°å¯åŠ¨é¢„åŠ è½½ç¨‹åº" #: templates/preload.php:210 msgid "pages per minute" msgstr "æ¯åˆ†é’Ÿå‡ ä¸ªé¡µé¢" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "自定义分类" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "自定义文章类型" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "附件" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "标签" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "页é¢" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "分类" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "文章" #: templates/preload.php:102 msgid "Homepage" msgstr "主页" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "通过åˆå¹¶ js 文件å‡å°‘ HTTP 请求" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "当图åƒå’Œ iframe 进入视线时æ‰åŽ»åŠ è½½å®ƒä»¬" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "异步加载谷歌字体" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "谷歌字体" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "阻塞渲染的 Js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "您å¯ä»¥åˆ é™¤ Emoji çš„å†…è” CSS å’Œ wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "ç¦ç”¨ Emoji" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "å‡å°‘网站è€ç”¨æˆ·çš„页é¢åŠ è½½æ—¶é—´" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "æµè§ˆå™¨ç¼“å­˜" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "å‡å°‘从æœåС噍å‘é€çš„æ–‡ä»¶å¤§å°" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Js 增强åˆå¹¶" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Js åˆå¹¶" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "您å¯ä»¥å‡å° JS 文件的大å°" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Js 压缩" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "通过åˆå¹¶ CSS 文件å‡å°‘ HTTP 请求" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS åˆå¹¶" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "CSS 增强压缩" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS 增强åˆå¹¶" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "您å¯ä»¥å‡å° CSS 文件的大å°" #: inc/admin.php:1270 msgid "Minify Css" msgstr "CSS 压缩" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "更强大的 HTML 压缩算法" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML 增强压缩" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "您å¯ä»¥ç¼©å°é¡µé¢å¤§å°" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML 压缩" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "æ›´æ–°æ–‡ç« æˆ–é¡µé¢æ—¶æ¸…除缓存文件" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "更新文章" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "å‘å¸ƒæ–‡ç« æˆ–é¡µé¢æ—¶æ¸…除缓存文件" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "新文章å‘布时" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "为移动端主题创建缓存" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "移动端主题" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "ä¸ç»™ç§»åŠ¨ç«¯ç”¨æˆ·æ˜¾ç¤ºç”µè„‘ç«¯çš„ç¼“å­˜é¡µé¢" #: inc/admin.php:1195 msgid "Mobile" msgstr "移动设备" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "䏿˜¾ç¤ºç™»å½•用户的缓存版本" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "已登录用户" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "自动创建所有站点的缓存" #: inc/admin.php:1157 msgid "Preload" msgstr "预加载" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "å‡å°‘ SQL 查询的数é‡" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "å°ç»„件缓存" #: inc/admin.php:1119 msgid "Enable" msgstr "å¯ç”¨" #: inc/admin.php:1118 msgid "Cache System" msgstr "缓存系统" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "æ¯ 15 天一次" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "æ¯ 7 天一次" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "æ¯ 3 天一次" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "æ¯ 10 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "æ¯ 9 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "æ¯ 8 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "æ¯ 7 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "æ¯ 5 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "æ¯ 4 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "æ¯ 3 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "æ¯ 2 ä¸ªå°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "æ¯ 10 天一次" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "简æ´ä¸”高效的缓存系统" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "æ¯å¹´ä¸€æ¬¡" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "æ¯æœˆä¸€æ¬¡" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "æ¯å¤©ä¸€æ¬¡" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "æ¯ 6 å°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "æ¯å°æ—¶ä¸€æ¬¡" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "æ¯å°æ—¶ä¸¤æ¬¡" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "æ¯ 15 分钟一次" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "æ¯ 5 分钟一次" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "æ¯åˆ†é’Ÿä¸€æ¬¡"wp-fastest-cache/languages/wp-fastest-cache-en_ZA.mo000064400000017511151435171370016351 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ- >_ y†'в »Ç ×ä õ  )4 DPiƒž½2Ö0  : FQaj.ˆ·ÉÛì;û17.i ˜¢ ©µ ½É Ùä ø ' ,6?AN £¯ Â=ã! 1< LX is z‡ ºÃÆÚí*=Obuˆ°ÂÕè û   !,Nbz €Ž”/œ.Ì*û &.Gv‰¡ ¦² »ÇÏ Ô(â   0 >J[9c9 ×&ä% !1S?r²Ãã48SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2021-02-02 07:22:35+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: en_ZA Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CSSCombine JSCombine JS PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any CSS file, you have to delete minified CSS filesImage OptimisationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CSSMinify CSS PlusMinify HTMLMinify HTML PlusMinify JSMobileMobile ThemeMore powerful minify CSSMore powerful minify HTMLNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimise Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined CSS filesReduce HTTP requests through combined JS filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JSRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesTool bar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of CSS filesYou can decrease the size of JS filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline CSS and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas WooCommerce Items in Baskethttp://en-za.wordpress.org/plugins/wp-fastest-cache/pages per minutewp-fastest-cache/languages/wp-fastest-cache-es_CO.po000064400000037645151435171370016362 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Colombia) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2021-10-07 04:49:27+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es_CO\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar la caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Vaciar la caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite de la caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Añadir una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elige uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se eliminarán todos los archivos de la caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puedes borrar todos los archivos de la caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas de la caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar la caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué quieres que ocurra después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar la caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar la caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar la caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda la caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué quieres que ocurra después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puedes reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puedes reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puedes reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos de la caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos de la caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear la caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio de la caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión de la caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente la caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://es-co.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez por hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces por hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada 1 minuto"wp-fastest-cache/languages/wp-fastest-cache-sv_SE.po000064400000040332151435171370016374 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Swedish # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-09 10:10:54+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: sv_SE\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Användarroller" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Minst en webbplatskarta mÃ¥ste läggas till" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Du kan anpassa de avancerade inställningarna via denna sektion." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Avancerade inställningar" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Du kan specificera webbplatskartor som ska användas för förladdning." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Webbplatskartor" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Du kan välja för vilket innehÃ¥ll förladdning ska användas, och även ange dess ordning." #: templates/preload.php:86 msgid "Content Types" msgstr "InnehÃ¥llstyper" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "I denna sektion kan du välja vilken metod du vill använda för förladdningsfunktionen." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Välj en metod" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Förladdningsinställningar" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Vissa js-källor laddas inte förrän du rullar sidan eller flyttar musen" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Fördröj JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Alternativ för WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "har Yandex Click ID-parametrar" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Rensar specifika sidor" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Spara" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Avbryt" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Inställningar för verktygsfält" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Rensa cache för alla webbplatser" #: wpFastestCache.php:439 msgid "Settings" msgstr "Inställningar" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Rensa cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminera renderingsblockerande JavaScript-resurser" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Alternativ har sparats" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "har Woocommerce-varor i varukorgen" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "har Google Analytics-parametrar" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Arkiv" #: templates/timeout.php:189 msgid "Server Time" msgstr "Servertid" #: templates/timeout.php:169 msgid "delete the files" msgstr "ta bort filerna" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "InnehÃ¥ller" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Är lika med" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Startar med" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Startsida" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Alla" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Guide för exkludering av sida" #: templates/timeout.php:124 msgid "Then" msgstr "Sedan" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Om REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Guide för cache-timeout" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Inställningar för uppskjuten inläsning" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Aktivera Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Uppdatera" #: templates/update_success.php:9 msgid "Success" msgstr "Lyckades" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Varning" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Lägg till ny regel" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Rensa cache och minifierad CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Endast tillgängligt i premiumversion" #: templates/timeout.php:141 msgid "Choose One" msgstr "Välj en" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Alla cache-filer kommer ocksÃ¥ att tas bort" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Om du modifierar nÃ¥gon CSS-fil mÃ¥ste du ta bort minifierade CSS-filer" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "MÃ¥lmapp" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Du kan ta bort alla cache-filer" #: inc/admin.php:1090 msgid "Exclude" msgstr "Exkludera" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Bildoptimering" #: inc/admin.php:1082 msgid "Settings" msgstr "Inställningar" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Databasrensning" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN-inställningar" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Exkludera JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Exkludera CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Exkludera cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Exkludera användaragenter" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Exkludera sidor" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Bildoptimeringsverktyg" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Timeout-regler" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Cachestatistik" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Rensa cache för inlägg/sida" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Vad vill du ska hända efter att ha uppdaterat ett inlägg eller en sida?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Rensa cache för paginering" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Rensa cache för inläggsetiketter" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Rensa cache för inläggskategorier" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Rensa cache för startsida" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Rensa all cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Vad vill du hända efter att du publicerat det nya inlägget?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Starta om efter att ha slutförts" #: templates/preload.php:210 msgid "pages per minute" msgstr "sidor per minut" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Anpassade taxonomier" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Anpassade inläggstyper" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Bilagor" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiketter" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Sidor" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategorier" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Inlägg" #: templates/preload.php:102 msgid "Homepage" msgstr "Startsida" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Minska HTTP-förfrÃ¥gningar genom kombinerade js-filer" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Ladda bilder och iframes när de kommer in i webbläsarens visningsomrÃ¥de" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Ladda Google Fonts asynkront" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Javascript som blockerar rendering" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Du kan ta bort emoji inline CSS och wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Inaktivera emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Minska sidans laddningstid för upprepade besökare" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Webbläsarcaching" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Minska storleken pÃ¥ filer som skickas frÃ¥n din server" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Kombinera Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Kombinera Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Du kan minska storleken pÃ¥ js-filer" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minifiera Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Minska HTTP-förfrÃ¥gningar genom kombinerade CSS-filer" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Kombinera CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Kraftfullare minifierad CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minifiera CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Du kan minska storleken pÃ¥ CSS-filer" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minifiera CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Kraftfullare minifierad html" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minifiera HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Du kan minska storleken pÃ¥ sidan" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minifiera HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Rensa cache-filer när ett inlägg eller en sida uppdateras" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Uppdatera inlägg" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Rensa cache-filer när ett inlägg eller en sida publiceras" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nytt inlägg" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Skapa cache för mobiltema" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobiltema" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Visa inte den cachade versionen för stationär dator till mobila enheter" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Visa inte den cachade versionen för inloggade användare" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Inloggade användare" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Skapa cache för hela webbplatsen automatiskt" #: inc/admin.php:1157 msgid "Preload" msgstr "Förhandsladda" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Minska antalet SQL-frÃ¥gor" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget-cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Aktivera" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cachesystem" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "En gÃ¥ng var 15:e dag" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "En gÃ¥ng var 7:e dag" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "En gÃ¥ng var 3:e dag" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "En gÃ¥ng var 10:e timme" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "En gÃ¥ng var 9:e timme" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "En gÃ¥ng var 8:e timme" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "En gÃ¥ng var 7:e timme" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "En gÃ¥ng var 5:e timme" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "En gÃ¥ng var 4:e timme" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "En gÃ¥ng var 3:e timme" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "En gÃ¥ng varannan timme" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "En gÃ¥ng var 10:e dag" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Det enklaste och snabbaste cachesystemet för WordPress" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "En gÃ¥ng om Ã¥ret" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "En gÃ¥ng i mÃ¥naden" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "En gÃ¥ng om dagen" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "En gÃ¥ng var 6:e timme" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "En gÃ¥ng i timmen" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "TvÃ¥ gÃ¥nger i timmen" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "En gÃ¥ng var 15:e minut" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "En gÃ¥ng var 5:e minut" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "En gÃ¥ng per minut"wp-fastest-cache/languages/wp-fastest-cache-gl_ES.mo000064400000024253151435171370016347 0ustar00Þ•–Ì| | } — ¤ ¶ 'º â "ë   * 7 H U j q | ‡ — § ³ Ó ì   : Y 2r 0¥ Ö î ú    , .J y ‹  ® · ;Æ 1 .4 c m t € ˆ ” ¤ ¯ à Ñ å ò ÷  A[ nz =®ì ü # 4> ERk…Ž‘¥¸Ìßõ-@Sh{ ³ Æ Ñ Þ ê!÷-E KY_g/x.¨*× .#Re} ‚Ž—F  çóû (7 <J [ iu†Ÿ9§9á =(&f%!³Õ?ô34UhT¾$Db.°Ð á3E1J|+…±ºÎÝõ$, 5AJ[r$„"©&Ì ó(,=*jG•IÝ' F S_ow(ˆ.±àÿ 3>HS9œ8Ö  !. 7D U a‚”°ÁÆØêMùG _j.†Iµÿ !1@ Q^ex ˜ ¹ÆÎåü * C Y o … › ± É ß õ  !!!7!H!X!h!#y!%!Ã!Þ!ç!ü! "";#";_"B›""Þ"9#;#V#v#}#Ž# –#M¤# ò#ý# $$*#$N$U$m$$¡$¶$Ç$ ä$9ð$I*%t%A…%(Ç%'ð%"&(;&Rd&D·&^ü&f['Â'#Õ'&ù'' (.H(w(—(SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-11-25 07:53:04+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: gl_ES Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AxustesEngadir unha nova regraAxustes avanzadosTodoTamén se eliminarán todos os arquivos da cachéArquivosHai que engadir polo menos un mapa do sitioAdxuntosCaché do navegadorAxustes da CDNEstatísticas da cachéSistema de cachéAsistente do tempo límite da cachéCancelarCategoríasElixe unElixe un métodoBaleirar toda a cachéBaleirar a cachéBaleirar a caché e minimizar CSS/JSVaciar a caché de todos os sitiosBaleirar a caché da páxina de inicioBaleirar a caché de paxinaciónBaleirar a caché de entradas / páxinasBaleirar a caché de categorías de entradasBaleirar a caché de etiquetas de entradasBaleirar os arquivos da caché cando se publica unha entrada ou páxinaBaleirar os arquivos da caché cando se actualiza unha entrada ou páxinaBaleirar páxinas específicasCombinar CSSCombinar JSCombine Js PlusConténTipos de contidoCrear a caché para o tema para móbilesCrear automaticamente a caché de todo o sitioTipos de contido personalizadoTaxonomías personalizadasLimpeza da base de datosAprazar JsDesactivar os emojisNon mostrar a versión de escritorio da caché nos dispositivos móbilesNon mostrar a versión da caché para usuarios conectadosEliminar os recursos JavaScript que bloquean os procesosEmre VonaActivarActivar GzipExcluírExcluír CSSExcluír cookiesExcluír JSAsistente para excluír páxinasExcluír páxinasExcluír axentes de usuarioFontes de GoogleGzipPáxina de inicioPáxina de inicioSe REQUEST_URISe modificas calquera arquivo CSS, tes que borrar os arquivos CSS minimizadosOptimización de imaxesé igual aAsistente de carga diferidaCargar as fontes de Google de forma asíncronaCargar as imaxes e iframes cando entren na visualización dos navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóbilTema para móbilesMinimización CSS máis potenteMinimización HTML máis potenteNova entradaAceptarUnha vez cada 1 minutoUnha vez cada 10 díasUnha vez cada 10 horasUnha vez cada 15 díasUnha vez cada 15 minutosUnha vez cada 2 horasUnha vez cada 3 díasUnha vez cada 3 horasUnha vez cada 4 horasUnha vez cada 5 horasUnha vez cada 5 minutosUnha vez cada 6 horasUnha vez cada 7 díasUnha vez cada 7 horasUnha vez cada 8 horasUnha vez cada 9 horasUnha vez ao díaUnha vez ao mesUnha vez ao anoUnha vez á horaSó dispoñible na versión premiumFerramenta de optimización de imaxesAs opcións foron gardadasPáxinasPor favor, actualizaEntradasPrecargarAxustes de precargaReducir as solicitudes HTTP mediante arquivos JS combinadosReducir as solicitudes HTTP mediante arquivos JS combinadosReducir o tempo de carga da páxina para os visitantes repetitivosReducir o número de consultas SQLReducir o tamaño dos arquivos enviados polo teu servidorBloqueo do procesado de JSReiniciar despois de completadoGardarHora do servidorAxustesMapa do sitioAlgunhas orixes de js non cargarán ata que se faga scroll ou se mova el ratoComeza conCorrectoEtiquetasCarpeta de destinoO sistema WP Caché máis simple e rápidoEntónRegras de tempo límiteAxustes da barra de ferramentasDúas veces á horaActualizar a entradaWP Fastest CacheOpcións de WP Fastest CacheAdvertenciaQue queres que ocorra despois de publicar a nova entrada?Que queres que ocorra despois de actualizar unha entrada ou unha páxina?Widget de cachéPodes personalizar os axustes avanzados a través desta sección.Podes reducir o tamaño dos arquivos CSSPodes reducir o tamaño dos arquivos JSPodes reducir o tamaño da páxinaPodes borrar todos os arquivos da cachéPodes eliminar os emojis integrados en CSS e o arquivo «wp-emoji-release.min.js»Podes especificar mapas do sitio que se usarán para a carga previa.Podes especificar os contidos que se empregarán para a carga previa e tamén podes ordenalos.Podes especificar o método que queres que use a característica de precarga a través desta sección.borrar os arquivosten parámetros de Google Analyticsten artigos de WooCommerce no carriñoten parámetros de ID de clic de Yandexhttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/páxinas por minutowp-fastest-cache/languages/wp-fastest-cache-tr_TR.mo000064400000023735151435171370016414 0ustar00Þ••Äl l m ‡ ” ¦ 'ª Ò "Û þ   ' 8 E Z a l w ‡ — £ ¼ Õ ï  ) 2B 0u ¦ ¾ Ê Õ å î ü . I [ m ~ ‡ ;– 1Ò . 3 = D P X d t  “ ¡ µ Â Ç Ñ Ú Aé + >J ]=~¼ Ì× çó  ";U^auˆœ¯ÅØêý#8K]pƒ – ¡ ® º!Çéý )/7/H.x*§ Ò.ó"5M R^gFp ·ÃË Ð(Þ  + 9EVo9w9± ë=ø&6%]!ƒ¥?Ä3U8TŽãô2.Q€ ±Îç÷ & 8%Bhn …“ ­#· Û å ñý)$=#b$†+«.×,A3;u±Ì Ýë #,?l›±ÂIÒ2:O Š”š«²ÅÞð& @M R \fjxã ÷:GP˜ ´Â׿ ü  8 Wbh{Ÿ±ÅÖçø  - > O ` q ‚ ‘ ž ­ ¼ Ý ÷  !!(! 1!=!:T!9!DÉ!"4*"_"%y"Ÿ"¦"µ"½"TÎ"## 2# ># H#'V#~#‡#¡# º#Ç#Ù#ê#$;$AK$$;¢$0Þ$/%'?%$g%KŒ%NØ%\'&h„&í&5ü& 2'$S'.x'§'Ç'SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-06-16 07:39:05+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: GlotPress/4.0.1 Language: tr Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AyarlarYeni Kural EkleGeliÅŸmiÅŸ AyarlarTümüTüm önbellek dosyaları da silinecekArÅŸivlerEn az bir site haritası eklenmelidirEklerTarayıcı ÖnbelleÄŸiCDN AyarlarıÖnbellek İstatistikleriÖnbellekÖnbellek Zaman Aşımı Sihirbazıİptal EtKategorilerBirini SeçBir Yöntem SeçinTüm ÖnbelleÄŸi TemizleÖnbelleÄŸi TemizleTüm Sitelerin ÖnbelleÄŸini TemizleAna Sayfanın ÖnbelleÄŸini TemizleSayfalandırma ÖnbelleÄŸini TemizleYazı ya da sayfanın önbelleÄŸini temizleGönderi Kategorilerinin ÖnbelleÄŸini TemizleGönderi Etiketlerinin ÖnbelleÄŸini TemizleYeni bir yazı veya sayfa yayımlandığında önbelleÄŸi temizleBir yazı ya da sayfa düzenlendiÄŸinde önbelleÄŸi temizleBelirli Sayfaları TemizleCSS BirleÅŸtirmeJs BirleÅŸtirJs BirleÅŸtir Ekstraİçerenİçerik TürleriMobil tema için önbellek oluÅŸturTüm sitenin önbelleÄŸini otomatik oluÅŸturÖzel Yazı TürleriÖzel SınıflandırmalarVeritabanı TemizlemeJS'leri GeciktirEmojileri KapatMasaüstünden mobil cihazlara önbelleÄŸe alınmış sürümü göstermeGiriÅŸ yapan kullanıcılara önbelleÄŸi göstermeOluÅŸturmayı engelleyen JavaScript kaynaklarını kaldırEmre VonaEtkinGzip AktivasyonuHariçHariç Tutulan CSSHariç Tutulan ÇerezlerHariç Tutulan JSSayfa Hariç Tutma SihirbazıHariç Tutulan SayfalarHariç Tutulan User-AgentGoogle FontsGzipAna SayfaAna SayfaEÄŸer REQUEST_URIEÄŸer bir css dosyası deÄŸiÅŸtirdiyseniz, küçültülmüş olan css/js dosyalarını da temizlemelisinizResim OptimizasyonuEÅŸit iseLazy Load AyarlarıGoogle Fontlarını eÅŸ zamansız (asenkron) olarak yükleResimleri ve iframleri tarayıcının görünen alanına gelince yükleGiriÅŸ Yapan KullanıcılarCss KüçültCSS Küçült EkstraHTML KüçültHTML Küçült EkstraJS KüçültMobilMobil TemaDaha güçlü CSS küçültmeDaha güçlü HTML küçültmeYeni yazıTamam1 Dakikada Bir Kez10 Günde Bir Kez10 Saatte Bir Kez15 Günde Bir Kez15 Dakikada Bir Kez2 Saatte Bir Kez3 Günde Bir Kez3 Saatte Bir Kez4 Saatte Bir Kez5 Saatte Bir Kez5 Dakikada Bir Kez6 Saatte Bir Kez7 Günde Bir Kez7 Saatte Bir Kez8 Saatte Bir Kez9 Saatte Bir KezGünde Bir KezAyda Bir KezYılda Bir kezSaatte Bir KezSadece Premium versiyonda mevcutResim Optimizasyon AracıAyarlar KaydedildiSayfalarLütfen GüncelleyinYazılarÖnyüklemeÖn Yükleme AyarlarıCSS dosyalarını birleÅŸtirerek HTTP isteklerini azaltınJS dosyalarını birleÅŸtirerek HTTP isteklerini azaltınTekrar gelen ziyaretçiler için sayfa yükleme sürelerini azaltınSQL sorgu sayısını azaltSunucudan gönderilen dosyaların boyutunu küçültOluÅŸturma Engelleyici JsTamamlandıktan Sonra Yeniden BaÅŸlatKaydetSunucu ZamanıAyarlarSite haritalarıBazı js kaynakları fareyi kaydırana veya hareket ettirene kadar yüklenmeyecektirİle BaÅŸlayanBaÅŸarılıEtiketlerHedef klasörEn basit ve en hızlı WP Cache sistemiÖyleyseZaman Aşımı KurallarıAraç ÇubuÄŸu AyarlarıSaatte 2 KezYazı GüncellemeWP Fastest CacheWP Fastest Cache SeçenekleriUyarıYeni yazı yayımlandıktan sonra ne olmasını istiyorsun?Yazı veya sayfa güncellendikten sonra ne olmasını istiyorsun?BileÅŸen ÖnbelleÄŸiGeliÅŸmiÅŸ ayarları bu bölümden özelleÅŸtirebilirsiniz.CSS dosyalarının boyununu küçültebilirsinizJS dosyalarının boyununu küçültebilirsinizSayfanın boyutunu küçültebilirsinizTüm önbelleÄŸi temizleyebilirsinizEmoji inline CSS ve wp-emoji-release.min.js kaynağını kaldırabilirsinizÖn yükleme için kullanılacak olan site haritalarını belirleyebilirsiniz.Ön yükleme için kullanılacak içerikleri belirleyebilir ve bunları sıralayabilirsiniz.Ön yükleme özelliÄŸinin kullanmasını istediÄŸiniz yöntemi bu bölüm üzerinden belirtebilirsiniz.dosyaları silparametre olarak Google Analytics parametreleri varsasepette WooCommerce ögeleri varparametre olarak Yandex Click ID varhttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/dakika başına sayfawp-fastest-cache/languages/wp-fastest-cache-id_ID.mo000064400000020217151435171370016322 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ->[w$“¸¾Ç׿ ö& /: LXuŠ!¨Ê=ç7% ] kx Š•+²Þò>,6k:¢ Ýç ð þ  (6Qd }ŠŸ§Z¸#6!K@m® ÂÏ áï  !!"C fsxޤ¹Ïæú#7KauŠž² ÆÔã ò"ÿ"7NTck7s6«8â34h{— ž «¶ÅÌ Ð-Þ (;J[ lCwH» (':%b'ˆA° ò#ÿ&# 2J } SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2021-01-26 07:03:23+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n > 1; X-Generator: GlotPress/4.0.1 Language: id Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) PengaturanTambahkan Aturan BaruSemuaSemua berkas cache juga akan dihapusArsipLampiranCaching BrowserPengaturan CDNStatistik CacheSistem CachePanduan Batas waktu CacheBatalkanKategoriPilih satuHapus Semua CacheHapus CacheHapus Cache dari Semua SitusHapus Cache PaginasiHapus Cache Artikel / HalamanHapus Cache dari Kategori ArtikelHapus Cache dari Tag ArtikelHapus berkas cache ketika artikel atau halaman dipublikasikanHapus berkas cache saat artikel atau halaman diperbaruiGabungkan CSSGabungkan JsGabungkan Js PlusMengandungBuat cache untuk tema ponselBuat cache dari semua situs secara otomatisTipe Artikel KhususTaksonomi khususPembersihan Basis dataNonaktifkan EmojiJangan tampilkan versi cache untuk desktop ke perangkat ponselJangan tampilkan versi cache untuk pengguna yang loginHilangkan sumber daya JavaScript yang memblokir perenderanEmre VonaAktifkanAktifkan GzipKecualikanKecualikan CSSKecualikan kukiKecualikan JSKecualikan Panduan HalamanKecualikan HalamanKecualikan Agen-PenggunaGoogle FontsGzipHalaman BerandaBerandaJika REQUEST_URIJika Anda memodifikasi berkas css apa pun, Anda harus menghapus berkas css yang diperkecilOptimasi GambarAdalah sama denganPengaturan Lazy LoadMuat Google Fonts secara asinkronMuat gambar dan iframe saat mereka memasuki area pandang browserPengguna yang loginPerkecil CSSPerkecil CSS PlusPerkecil HTMLPerkecil HTML PlusPerkecil JsPonselTema PonselMemperkecil CSS dengan lebih kuatMemperkecil HTML dengan lebih kuatArtikel BarubaikSetiap 1 Menit SekaliSetiap 10 Hari SekaliSetiap 10 Jam SekaliSetiap 15 Hari SekaliSetiap 15 Menit SekaliSetiap 2 Jam SekaliSetiap 3 Hari SekaliSetiap 3 Jam SekaliSetiap 4 Jam SekaliSetiap 5 Jam SekaliSetiap 5 Menit SekaliSetiap 6 Jam SekaliSetiap 7 Hari SekaliSetiap 7 Jam SekaliSetiap 8 Jam SekaliSetiap 9 Jam SekaliSekali SehariSekali SebulanSekali SetahunSekali SejamHanya tersedia dalam versi PremiumAlat Optimasi GambarPilihan telah disimpanLamanMohon perbaruiArtikelPramuatKurangi permintaan HTTP dengan menggabungkan berkas CSSKurangi permintaan HTTP dengan menggabungkan berkas JSKurangi waktu pemuatan halaman untuk pengunjung berulangKurangi jumlah query SQLKurangi ukuran berkas yang dikirim dari server AndaRender Blocking JsMulai Ulang Setelah SelesaiSimpanWaktu serverPengaturanDimulai DenganSuksesTagFolder targetSistem WP Cache paling sederhana dan tercepatKemudianAturan Batas waktuPengaturan toolbarDua Kali SejamPerbarui ArtikelWP Fastest CachePeringatanApa yang Anda inginkan terjadi setelah memublikasikan artikel baru?Apa yang Anda inginkan terjadi setelah memperbarui artikel atau halaman?Cache WidgetAnda dapat memperkecil ukuran berkas cssAnda dapat memperkecil ukuran berkas jsAnda dapat memperkecil ukuran halamanAnda dapat menghapus semua berkas cacheAnda dapat menghapus emoji inline css dan wp-emoji-release.min.jshapus berkasmemiliki Parameter Google Analyticsmemiliki Item Woocommerce di Keranjanghttps://id.wordpress.org/plugins/wp-fastest-cache/halaman per menitwp-fastest-cache/languages/wp-fastest-cache-hu_HU.po000064400000037632151435171370016376 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Hungarian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2021-06-26 15:12:34+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: hu\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Mentés" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Mégse" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Eszköztár beállításai" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Az összes webhely gyorsítótárának törlése" #: wpFastestCache.php:439 msgid "Settings" msgstr "Beállítások" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Gyorsítótár törlése" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "A megjelenítést blokkoló JavaScript-erÅ‘források kiküszöbölése" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Beállítások elmenve" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "Woocommerce tételei vannak a kosárban" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "Google Analytics paraméterei vannak" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archívum" #: templates/timeout.php:189 msgid "Server Time" msgstr "Kiszolgáló ideje" #: templates/timeout.php:169 msgid "delete the files" msgstr "fájlok törlése" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Tartalmazza ezt" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "EgyenlÅ‘ ezzel" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Ezzel kezdÅ‘dik" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "KezdÅ‘lap" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Összes" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Az Oldal varázsló kizárása" #: templates/timeout.php:124 msgid "Then" msgstr "Majd" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Ha REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Gyorsítótár idÅ‘túllépési varázslója" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Lazy Load (lusta betöltés) beállítások" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip engedélyezése" #: templates/update_now.php:9 msgid "Please Update" msgstr "Kérjük, frissítsen" #: templates/update_success.php:9 msgid "Success" msgstr "Siker" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Figyelmeztetés" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Új szabály hozzáadása" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Csak Premium verzióban érhetÅ‘ el" #: templates/timeout.php:141 msgid "Choose One" msgstr "Válasszon egyet" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Az összes gyorsítótárfájl is eltávolításra kerül" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Ha egy CSS fájlt módosít, törölnie kell a zsugorított CSS fájlokat" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Célmappa" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Törölheti az összes gyorsítótárfájlt" #: inc/admin.php:1090 msgid "Exclude" msgstr "Kizárás" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Képoptimalizálás" #: inc/admin.php:1082 msgid "Settings" msgstr "Beállítások" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Adatbázis-tisztítás" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN-beállítások" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "JS kizárása" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "CSS kizárása" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Sütik kizárása" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Felhasználói ügynökök kizárása" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Oldalak kizárása" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Képoptimalizáló eszközt" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "IdÅ‘túllépés szabályai" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Gyorsítótár-statisztika" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Bejegyzés / oldal gyorsítótárának törlése" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Mi történjék egy bejegyzés vagy oldal frissítése után?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Az oldalszámozás gyorsítótárának törlése" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "A bejegyzéscímkék gyorsítótárának törlése" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "A bejegyzéskategóriák gyorsítótárának törlése" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "A teljes gyorsítótár törlése" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Mi történjék az új bejegyzés közzététele után?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Újraindítás a befejezés után" #: templates/preload.php:210 msgid "pages per minute" msgstr "oldal / perc" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Egyéni taxonómiák" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Egyéni bejegyzéstípusok" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Csatolmányok" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Címkék" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Oldalak" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategóriák" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Bejegyzések" #: templates/preload.php:102 msgid "Homepage" msgstr "KezdÅ‘oldal" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "HTTP kérések csökkentése kombinált JavaScript fájlokkal" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Képek és iframe-ek betöltése, amikor belépnek a böngészÅ‘ nézetablakába" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Google betűtípusok aszinkron betöltése" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google betűtípusok" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Megjelenítést blokkolós JavaScript" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Eltávolíthatja az emoji inline CSS-t és a wp-emoji-release.min.js fájlt" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Emojik letiltása" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Az oldal betöltési idejének csökkentése az ismételt látogatóknak" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "BöngészÅ‘-gyorsítótárazás" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Csökkentse a szerverrÅ‘l küldött fájlok méretét" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Js kombinálása +" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Js kombinálása" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Csökkentheti a JavaScript fájlok méretét" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Js zsugorítása" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "HTTP kérések csökkentése kombinált CSS fájlokkal" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS kombinálása" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "ErÅ‘teljesebb CSS-zsugorítás" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS-zsugorítás +" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Csökkentheti a CSS-fájlok méretét" #: inc/admin.php:1270 msgid "Minify Css" msgstr "CSS-zsugorítás" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "ErÅ‘teljesebb HTML-zsugorítás" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML-zsugorítás +" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Csökkentheti az oldalak méretét" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML-zsugorítás" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Gyorsítótárfájlok törlése egy bejegyzés vagy oldal frissítésekor" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Bejegyzés frissítése" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Gyorsítótárfájlok törlése egy bejegyzés vagy oldal közzétételekor" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Új bejegyzés" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Gyorsítótár készítése mobil témához" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobil téma" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Ne mutassa meg a gyorsítótárazott asztali verziót mobil eszközöknek" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Ne mutassa a gyorsítótárazott verziót a bejelentkezett felhasználóknak" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Bejelentkezett felhasználók" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "A teljes webhely gyorsítótárának automatikus létrehozása" #: inc/admin.php:1157 msgid "Preload" msgstr "ElÅ‘töltés" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "SQL-lekérdezések számának csökkentése" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget gyorsítótár" #: inc/admin.php:1119 msgid "Enable" msgstr "Engedélyezés" #: inc/admin.php:1118 msgid "Cache System" msgstr "Gyorsítótárazó-rendszer" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "15 naponta" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "7 naponta" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "3 naponta" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "10 óránként" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "9 óránként" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "8 óránként" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "7 óránként" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "5 óránként" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "4 óránként" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "3 óránként" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "2 óránknét" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "10 naponta" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "A legegyszerűbb és leggyorsabb WordPress Cache gyorsítótárazó rendszer" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Évente" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Havonta" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Naponta" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "6 óránként" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Óránként" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Óránként kétszer" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "15 percenként" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "5 percenként" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Percenként"wp-fastest-cache/languages/wp-fastest-cache-de_DE.po000064400000041127151435171370016320 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in German # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-18 09:17:03+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: de\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "Das WP-Fastest-Cache-Menü in der Admin-Werkzeugleiste ist für die unten ausgewählten Benutzerrollen sichtbar." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Benutzerrollen" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Mindestens eine Sitemap muss hinzugefügt werden" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "In diesem Abschnitt kannst du die erweiterten Einstellungen anpassen." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Erweiterte Einstellungen" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Du kannst festlegen, welche Sitemaps für das Preloading verwendet werden." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Sitemaps" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Du kannst die Inhalte für das Preloading festlegen und auch sortieren." #: templates/preload.php:86 msgid "Content Types" msgstr "Inhaltstypen" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "In diesem Abschnitt kannst du festlegen, welche Methode die Preload-Funktion verwenden soll." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Wähle eine Methode" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Preload-Einstellungen" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Einige JS-Quellen werden erst geladen, wenn gescrollt oder die Maus bewegt wird" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "JS verzögern" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP-Fastest-Cache-Optionen" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "hat Yandex-Click-ID-Parameter" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Bestimmte Seiten löschen" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Speichern" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Abbrechen" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Werkzeugleisten-Einstellungen" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Cache aller Websites leeren" #: wpFastestCache.php:439 msgid "Settings" msgstr "Einstellungen" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Cache leeren" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Beseitigt JavaScript-Ressourcen, die das Rendering blockieren" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Optionen wurden gespeichert" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "hat Woocommerce-Elemente im Warenkorb" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "hat Google-Analytics-Parameter" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archive" #: templates/timeout.php:189 msgid "Server Time" msgstr "Serverzeit" #: templates/timeout.php:169 msgid "delete the files" msgstr "die Dateien löschen" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Beinhaltet" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Ist gleich" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Beginnt mit" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Homepage" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Alles" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Seiten-Ausschluss-Assistent" #: templates/timeout.php:124 msgid "Then" msgstr "Dann" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Falls REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Cache-Zeitüberschreitungsassistent" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Einstellungen für Verzögertes Laden" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip aktivieren" #: templates/update_now.php:9 msgid "Please Update" msgstr "Bitte aktualisieren" #: templates/update_success.php:9 msgid "Success" msgstr "Erfolg" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Warnung" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Neue Regel hinzufügen" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Cache und minimiertes CSS/JS leeren" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Nur verfügbar in der Premium-Version" #: templates/timeout.php:141 msgid "Choose One" msgstr "Wähle eins" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Auch alle Cache-Dateien werden dabei gelöscht" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Falls du eine CSS-Datei veränderst, musst du minimierte CSS-Dateien löschen" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Zielverzeichnis" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Du kannst alle Cache-Dateien löschen" #: inc/admin.php:1090 msgid "Exclude" msgstr "Ausschließen" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Bildoptimierung" #: inc/admin.php:1082 msgid "Settings" msgstr "Einstellungen" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Datenbank aufräumen" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN-Einstellungen" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "JS ausschließen" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "CSS ausschließen" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Cookies ausschließen" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "User Agents ausschließen" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Seiten ausschließen" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Werkzeug zur Bildoptimierung" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Zeitüberschreitungsregeln" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Cache-Statistiken" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Cache von Beitrag/Seite leeren" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Was soll geschehen, nachdem ein Beitrag oder eine Seite aktualisiert wurde?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Cache von Seitennummerierungen leeren" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Cache von Beitrags-Schlagwörtern leeren" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Cache von Beitrags-Kategorien leeren" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Cache der Homepage leeren" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Alle Caches löschen" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Was soll geschehen, nachdem ein neuer Beitrag veröffentlicht wurde?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Neustart nach Abschluss" #: templates/preload.php:210 msgid "pages per minute" msgstr "Seiten pro Minute" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Individuelle Taxonomien" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Individuelle Inhaltstypen" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Anhänge" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Schlagwörter" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Seiten" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategorien" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Beiträge" #: templates/preload.php:102 msgid "Homepage" msgstr "Homepage" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "HTTP-Anfragen durch kombinierte JS-Dateien reduzieren" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Bilder und iFrames laden, wenn diese in den Darstellungsbereich des Browsers gelangen" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Google Fonts asynchron laden" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Render-Blocking-JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Du kannst das Inline-CSS für Emojis und wp-emoji-release.min.js entfernen" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Emojis deaktivieren" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Die Seitenladezeiten für wiederkehrende Besucher reduzieren" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Browser-Caching" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Die Größe der Dateien, die von deinem Server ausgeliefert werden, reduzieren" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "JS minimieren Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "JS kombinieren" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Du kannst die Größe von JS-Dateien reduzieren" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "JS minimieren" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "HTTP-Anfragen durch kombinierte CSS-Dateien reduzieren" #: inc/admin.php:1291 msgid "Combine Css" msgstr "CSS kombinieren" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Stärkeres Minimieren von CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "CSS minimieren Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Du kannst die Größe von CSS-Dateien verringern" #: inc/admin.php:1270 msgid "Minify Css" msgstr "CSS minimieren" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Stärkeres Minimieren von HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "HTML minimieren Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Du kannst die Größe der Seite verringern" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "HTML minimieren" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Cache leeren, wenn ein Beitrag oder eine Seite aktualisiert wird" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Aktualisierter Beitrag" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Cache leeren, wenn ein Beitrag oder eine Seite veröffentlicht wird" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Neuer Beitrag" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Cache für Theme für Mobilgeräte erstellen" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Theme für Mobilgeräte" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Die zwischengespeicherte Version für den Desktop nicht auf Mobilgeräten anzeigen" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobilgeräte" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Die zwischengespeicherte Version nicht für angemeldete Benutzer anzeigen" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Angemeldete Benutzer" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Den Cache für die gesamte Website automatisch erstellen" #: inc/admin.php:1157 msgid "Preload" msgstr "Vorladen" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Die Anzahl an SQL-Anfragen reduzieren" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget-Cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Aktivieren" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cache-System" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Einmal alle 15 Tage" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Einmal alle 7 Tage" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Einmal alle 3 Tage" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Einmal alle 10 Stunden" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Einmal alle 9 Stunden" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Einmal alle 8 Stunden" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Einmal alle 7 Stunden" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Einmal alle 5 Stunden" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Einmal alle 4 Stunden" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Einmal alle 3 Stunden" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Einmal alle 2 Stunden" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Einmal alle 10 Tage" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Das einfachste und schnellste Cache-System für WordPress" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://de.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Einmal pro Jahr" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Monatlich" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Täglich" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Einmal alle 6 Stunden" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Einmal pro Stunde" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Zweimal pro Stunde" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Einmal alle 15 Minuten" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Einmal alle 5 Minuten" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Einmal pro Minute"wp-fastest-cache/languages/wp-fastest-cache-ko_KR.mo000064400000024531151435171370016362 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\m‰¡ ³Á(È ñ5þ 4A U `nž ¥² ¹Çß%ð$;!Z'|'¤!ÌCîH2{ – ¡«¿Ó$ä1 !;]{•¯HÉD,W „ Ž˜§ ® ¹ ÇÑìý ) . ;HJ^©½Ñ*æCU lw Œ˜ ® ¸ÂÓì    + < P a r … • ¨ » Î Þ ñ !!'!:!L!]!n!%„!ª!Å! å!ï! " "!"16"0h"2™"Ì"+å"#%#># E#S# Z#rg#Ú#î#õ# ü#x $.ƒ$ ²$À$Õ$ê$%%(%9%Q%CX%Nœ% ë%Kù%0E&/v&,¦&3Ó&U'F]'^¤'[(_(-p(3ž($Ò(.÷(&)F)SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-26 05:50:44+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: GlotPress/4.0.1 Language: ko_KR Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) 설정새 규칙 추가고급 설정모ë‘모든 ìºì‹œ 파ì¼ë„ 제거ë©ë‹ˆë‹¤.ì•„ì¹´ì´ë¸Œì‚¬ì´íŠ¸ë§µì„ í•˜ë‚˜ ì´ìƒ 추가해야 합니다.첨부파ì¼ë¸Œë¼ìš°ì € ìºì‹±CDN 설정ìºì‹œ 통계시스템 ìºì‹œìºì‹œ 시간 초과 마법사취소카테고리선íƒë°©ë²• ì„ íƒëª¨ë“  ìºì‹œ 지우기ìºì‹œ 지우기ìºì‹œ 지우기 ë° ì¶•ì†Œëœ CSS/JS모든 사ì´íŠ¸ì˜ ìºì‹œ 지우기홈 페ì´ì§€ ìºì‹œ 지우기페ì´ì§€ 매김 ìºì‹œ 지우기게시물/페ì´ì§€ì˜ ìºì‹œ 지우기게시물 카테고리 ìºì‹œ 지우기게시물 태그 ìºì‹œ 지우기게시물 ë˜ëŠ” 페ì´ì§€ê°€ ê²Œì‹œë  ë•Œ ìºì‹œ íŒŒì¼ ì§€ìš°ê¸°ê²Œì‹œë¬¼ì´ë‚˜ 페ì´ì§€ê°€ ì—…ë°ì´íŠ¸ë  ë•Œ ìºì‹œ íŒŒì¼ ì§€ìš°ê¸°íŠ¹ì • 페ì´ì§€ 지우기CSS ê²°í•©Js ê²°í•©Js ê²°í•© 플러스다ìŒì„ í¬í•¨í•¨ì½˜í…츠 ìœ í˜•ëª¨ë°”ì¼ í…Œë§ˆìš© ìºì‹œ 만들기모든 사ì´íŠ¸ì˜ ìºì‹œë¥¼ ìžë™ìœ¼ë¡œ ìƒì„±ì‚¬ìš©ìž ì •ì˜ ê²Œì‹œë¬¼ ìœ í˜•ì‚¬ìš©ìž ì •ì˜ íƒì†Œë…¸ë¯¸ë°ì´í„°ë² ì´ìФ 정리ìžë°”스í¬ë¦½íЏ 지연ì´ëª¨í‹°ì½˜ 비활성화ë°ìФí¬í†±ìš© ìºì‹œ ë²„ì „ì„ ëª¨ë°”ì¼ ê¸°ê¸°ì— í‘œì‹œí•˜ì§€ 않ìŒë¡œê·¸ì¸í•œ 사용ìžì—게 ìºì‹œëœ ë²„ì „ì„ í‘œì‹œí•˜ì§€ 않ìŒë Œë”ë§ ì°¨ë‹¨ JavaScript 리소스 제거Emre Vona활성화Gzip 활성화제외CSS 제외쿠키 제외JS 제외페ì´ì§€ 제외 마법사페ì´ì§€ ì œì™¸ì‚¬ìš©ìž ì—ì´ì „트 제외구글 í°íЏGzip홈페ì´ì§€í™ˆíŽ˜ì´ì§€REQUEST_URIì¸ ê²½ìš°CSS 파ì¼ì„ 수정하면 ì¶•ì†Œëœ CSS 파ì¼ì„ 삭제해야 합니다.ì´ë¯¸ì§€ 최ì í™”다ìŒê³¼ ë™ì¼í•¨ì§€ì—° 로드 설정구글 í°íŠ¸ë¥¼ 비ë™ê¸°ì‹ìœ¼ë¡œ 로드브ë¼ìš°ì € ë·°í¬íŠ¸ì— ë“¤ì–´ê°ˆ 때 ì´ë¯¸ì§€ ë° iframe 로드로그ì¸í•œ 사용ìžCSS 축소CSS 축소 플러스HTML 축소HTML 축소 플러스JS 축소모바ì¼ëª¨ë°”ì¼ í…Œë§ˆë” ê°•ë ¥í•œ CSS ì¶•ì†Œë” ê°•ë ¥í•œ HTML 축소새 게시물확ì¸1ë¶„ì— í•œ 번10ì¼ì— 한 번10ì‹œê°„ì— í•œ 번15ì¼ì— 한 번15ë¶„ì— í•œ 번2ì‹œê°„ì— í•œ 번3ì¼ì— 한 번3ì‹œê°„ì— í•œ 번4ì‹œê°„ì— í•œ 번5ì‹œê°„ì— í•œ 번5ë¶„ì— í•œ 번6ì‹œê°„ì— í•œ 번7ì¼ì— 한 번7ì‹œê°„ì— í•œ 번8ì‹œê°„ì— í•œ 번9ì‹œê°„ì— í•œ ë²ˆí•˜ë£¨ì— í•œ ë²ˆí•œë‹¬ì— í•œë²ˆì¼ë…„ì— í•œë²ˆí•œ ì‹œê°„ì— í•œ 번Premium 버전ì—서만 사용 가능ì´ë¯¸ì§€ 최ì í™” ë„êµ¬ì˜µì…˜ì´ ì €ìž¥ë˜ì—ˆìŠµë‹ˆë‹¤íŽ˜ì´ì§€ì—…ë°ì´íЏ 해주세요게시물사전 로드사전 로드 ì„¤ì •ê²°í•©ëœ CSS 파ì¼ì„ 통해 HTTP 요청 ê°ì†Œê²°í•©ëœ JS 파ì¼ì„ 통해 HTTP 요청 ê°ì†Œë°˜ë³µ 방문ìžì˜ 페ì´ì§€ 로드 시간 단축SQL 쿼리 수 줄ì´ê¸°ì„œë²„ì—서 보낸 íŒŒì¼ í¬ê¸° 줄ì´ê¸°ë Œë”ë§ ì°¨ë‹¨ JS완료 후 다시 시작저장서버 시간설정사ì´íŠ¸ë§µì¼ë¶€ ìžë°”스í¬ë¦½íЏ 소스는 마우스를 스í¬ë¡¤í•˜ê±°ë‚˜ 움ì§ì¼ 때까지 로드ë˜ì§€ 않습니다.다ìŒìœ¼ë¡œ ì‹œìž‘ì„±ê³µíƒœê·¸ëŒ€ìƒ í´ë”ê´€ë¦¬ìž ë„구 모ìŒì˜ WP 가장 빠른 ìºì‹œ 메뉴는 아래ì—서 ì„ íƒí•œ ì‚¬ìš©ìž ì—­í• ì— í‘œì‹œë©ë‹ˆë‹¤.가장 간단하고 빠른 WP ìºì‹œ 시스템그 다ìŒì—시간 초과 규칙ë„구 ëª¨ìŒ ì„¤ì •í•œ ì‹œê°„ì— ë‘ ë²ˆê²Œì‹œë¬¼ ì—…ë°ì´íŠ¸ì‚¬ìš©ìž ì—­í• WP Fastest CacheWP Fastest Cache 옵션경고새 ê²Œì‹œë¬¼ì„ ê²Œì‹œí•œ 후 어떻게 ë˜ê¸°ë¥¼ ì›í•˜ì‹­ë‹ˆê¹Œ?게시물ì´ë‚˜ 페ì´ì§€ë¥¼ ì—…ë°ì´íŠ¸í•œ 후 어떻게 하시겠습니까?위젯 ìºì‹œì´ ì„¹ì…˜ì„ í†µí•´ 고급 ì„¤ì •ì„ ì‚¬ìš©ìž ì •ì˜í•  수 있습니다.CSS 파ì¼ì˜ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다.JS 파ì¼ì˜ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다.페ì´ì§€ í¬ê¸°ë¥¼ ì¤„ì¼ ìˆ˜ 있습니다.모든 ìºì‹œ 파ì¼ì„ 삭제할 수 있습니다.ì´ëª¨í‹°ì½˜ ì¸ë¼ì¸ css ë° wp-emoji-release.min.js를 제거할 수 있습니다.사전 ë¡œë”©ì— ì‚¬ìš©í•  사ì´íŠ¸ë§µì„ ì§€ì •í•  수 있습니다.사전 ë¡œë”©ì— ì‚¬ìš©í•  콘í…츠를 지정할 수 있으며 정렬할 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.ì´ ì„¹ì…˜ì„ í†µí•´ 프리로드 ê¸°ëŠ¥ì— ì‚¬ìš©í•  ë°©ë²•ì„ ì§€ì •í•  수 있습니다.파ì¼ì„ 삭제구글 ì• ë„리틱스 매개변수가 있ìŒìž¥ë°”êµ¬ë‹ˆì— ìš°ì»¤ë¨¸ìŠ¤ í•­ëª©ì´ ìžˆìŠµë‹ˆë‹¤yandex í´ë¦­ ID 매개변수 있ìŒhttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/페ì´ì§€ (분당)wp-fastest-cache/languages/wp-fastest-cache-nl_NL.po000064400000040650151435171370016362 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Dutch # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-29 11:23:38+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: nl\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "Het menu WP Fastest Cache op de beheer toolbar zal hieronder zichtbaar zijn voor de geselecteerde gebruikersrollen." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Gebruikersrollen" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Er moet minstens één sitemap worden toegevoegd" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "In deze sectie kun je de geavanceerde instellingen aanpassen." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Geavanceerde instellingen" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Je kunt sitemaps opgeven die moeten worden gebruikt voor het vooraf laden." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Sitemaps" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Je kunt de inhoud opgeven die moet worden gebruikt voor het voor laden en je kunt ze ook sorteren." #: templates/preload.php:86 msgid "Content Types" msgstr "Inhoud typen" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "In deze sectie kun je de methode opgeven die je wil dat de voorlaad functie gebruikt." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Kies een methode" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Vooraf laden instellingen" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Sommige js bronnen zullen niet geladen worden, totdat er gescrold wordt of de muis bewogen" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Vertraag JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "WP Fastest Cache opties" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "heeft Yandex Click ID parameters" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Specifieke pagina's wissen" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Opslaan" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Annuleren" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Toolbar instellingen" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Cache van alle sites wissen" #: wpFastestCache.php:439 msgid "Settings" msgstr "Instellingen" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Cache wissen" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Elimineer render blokkering JavaScript gegevensbronnen" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Opties zijn opgeslagen" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "heeft WooCommerce items in winkelwagen" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "heeft Google Analytics parameters" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archieven" #: templates/timeout.php:189 msgid "Server Time" msgstr "Server tijd" #: templates/timeout.php:169 msgid "delete the files" msgstr "verwijder de bestanden" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Bevat" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Is gelijk aan" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Begint met" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Homepage" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Alles" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Uitsluiten pagina wizard" #: templates/timeout.php:124 msgid "Then" msgstr "Dan" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Als REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Cache timeout wizard" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Instellingen voor lazy-load" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Gzip inschakelen" #: templates/update_now.php:9 msgid "Please Update" msgstr "Updaten" #: templates/update_success.php:9 msgid "Success" msgstr "Gelukt" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Waarschuwing" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Nieuwe regel toevoegen" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Cache en verkleinde CSS/JS wissen" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Alleen beschikbaar in Premium versie" #: templates/timeout.php:141 msgid "Choose One" msgstr "Kies er een" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Alle cachebestanden worden ook verwijderd" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Als je een CSS bestand wijzigt, moet je verkleinde CSS bestanden verwijderen" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Doelmap" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Je kunt alle cachebestanden verwijderen" #: inc/admin.php:1090 msgid "Exclude" msgstr "Uitsluiten" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Afbeeldingsoptimalisatie" #: inc/admin.php:1082 msgid "Settings" msgstr "Instellingen" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Database opschoning" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN instellingen" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "JS uitsluiten" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "CSS uitsluiten" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Cookies uitsluiten" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Uitsluiten gebruikers-agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Pagina's uitsluiten" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Gereedschap voor optimaliseren afbeeldingen" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Time-out regels" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Cache statistieken" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Cache van bericht / pagina wissen" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Wat wil je dat er gebeurt na het updaten van een bericht of een pagina?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Cache van paginatie wissen" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Cache van bericht tags wissen" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Cache van bericht categorieën wissen" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Cache van homepage wissen" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Alle cache wissen" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Wat wil je dat er gebeurt na het publiceren van het nieuwe bericht?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Opnieuw starten nadat deze is afgerond" #: templates/preload.php:210 msgid "pages per minute" msgstr "pagina's per minuut" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Aangepaste taxonomieën" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Aangepaste berichttypen" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Bijlagen" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tags" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Pagina's" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorieën" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Berichten" #: templates/preload.php:102 msgid "Homepage" msgstr "Homepage" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "HTTP aanvragen verminderen via gecombineerde js bestanden" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Afbeeldingen en iframes laden wanneer ze de weergaveport van de browsers betreden" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Google Fonts asynchroon laden" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Weergave blokkerende js" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Je kunt de emoji inline css en wp-emoji-release.min.js verwijderen" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Emoji's uitschakelen" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Laadtijden van pagina's voor terugkerende bezoekers verminderen" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Browser Caching" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "De grootte van bestanden die vanaf je server worden verzonden, verkleinen" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combineer JS Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combineer JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Je kunt de grootte van je js bestanden verkleinen" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minify Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "HTTP aanvragen verminderen via gecombineerde css bestanden" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combineer CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Krachtiger verkleinen van css" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Je kunt de grootte van css bestanden verkleinen" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Verklein css" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Krachtiger verkleinen van HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Je kunt de grootte van de pagina verkleinen" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minify HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Cache bestanden wissen wanneer een bericht of pagina wordt geüpdatet" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Update bericht" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Cache bestanden wissen wanneer een bericht of pagina wordt gepubliceerd" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nieuw bericht" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Cache maken voor mobiel thema" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobiel thema" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "De versie in de cache voor desktop niet weergeven op mobiele apparaten" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobiel" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "De versie in de cache voor ingelogde gebruikers niet weergeven" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Ingelogde gebruikers" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "De cache van de hele site automatisch maken" #: inc/admin.php:1157 msgid "Preload" msgstr "Vooraf laden" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Het aantal SQL-query's verminderen" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Inschakelen" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cache systeem" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Eenmaal per 15 dagen" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Eenmaal per 7 dagen" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Eenmaal per 3 dagen" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Eenmaal per 10 uur" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Eenmaal per 9 uur" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Eenmaal per 8 uur" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Eenmaal per 7 uur" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Eenmaal per 5 uur" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Eenmaal per 4 uur" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Eenmaal per 3 uur" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Eenmaal per 2 uur" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Eenmaal per 10 dagen" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Het eenvoudigste en snelste WP cache systeem" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Eenmaal per jaar" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Eenmaal per maand" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Eenmaal per dag" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Eenmaal per 6 uur" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Eenmaal per uur" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Tweemaal per uur" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Eenmaal per 15 minuten" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Eenmaal per 5 minuten" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Eenmaal per minuut"wp-fastest-cache/languages/wp-fastest-cache-zh_CN.mo000064400000022206151435171370016353 0ustar00Þ••Äl l m ‡ ” ¦ 'ª Ò "Û þ   ' 8 E Z a l w ‡ — £ à Ü ö  0 2I 0| ­ Å Ñ Ü ì õ  .! P b t … Ž ; 1Ù . : D K W _ k { † š ¨ ¼ É Î Ø á Að 2 EQ d=…à ÓÞ îú  )B\eh|£¶Ìßñ*?RdwŠ  ¨ µ Á!Îð "06>/O.*® Ù.ú)<T YenFw ¾ÊÒ ×(å ! 2 @L]v9~9¸ ò=ÿ&=%d!Ь?Ë3 U?T•êû9.X‡§¸Ôì ü !2!9[b r } Š—ª± ¸ÂÕ è"õ4Gd}*–*Áì  - 4A!`‚˜¨¸ È3Õ$ '. V` g s €Ž Ÿ¬¿Ï åò÷þF _ls†5ŸÕ åð    )6FWv‰®ÅÖê&<Rexˆž´ Ê × äñ0@ GQ Xb)r(œ*Åð' 3 0F w ~ Ž • F¢ é ó ú !!0!7!J!Z! j!w!ˆ! !$§!*Ì!÷!'"#/""S"v"!’"?´"0ô"E%#9k# ¥#)²#"Ü#!ÿ#.!$P$p$SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-10 10:19:38+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: GlotPress/4.0.1 Language: zh_CN Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) 设置添加新规则高级设置所有所有缓存文件也将被删除存档请至少添加一个站点地图附件æµè§ˆå™¨ç¼“å­˜CDN 设置缓存统计缓存系统缓存超时å‘坼喿¶ˆåˆ†ç±»é€‰ä¸€ä¸ªé€‰æ‹©ä¸€ç§æ–¹å¼æ¸…除所有缓存清除缓存删除缓存和已压缩的 CSS/JS清除所有站点的缓存清除分页缓存清除文章/页é¢çš„缓存清除文章类别缓存清除文章标签缓存å‘å¸ƒæ–‡ç« æˆ–é¡µé¢æ—¶æ¸…é™¤ç¼“å­˜æ–‡ä»¶æ›´æ–°æ–‡ç« æˆ–é¡µé¢æ—¶æ¸…除缓存文件清除特定页é¢çš„缓存CSS åˆå¹¶Js åˆå¹¶Js 增强åˆå¹¶åŒ…å«å†…容类型为移动端主题创建缓存自动创建所有站点的缓存自定义文章类型自定义分类数æ®åº“清ç†å»¶è¿ŸåŠ è½½ JSç¦ç”¨ Emojiä¸ç»™ç§»åŠ¨ç«¯ç”¨æˆ·æ˜¾ç¤ºç”µè„‘ç«¯çš„ç¼“å­˜é¡µé¢ä¸æ˜¾ç¤ºç™»å½•用户的缓存版本消除阻止渲染的 JavaScript 资æºEmre Vonaå¯ç”¨å¯ç”¨ Gzip排除选项排除的 CSS排除的 Cookie排除的 JS排除页é¢å‘å¯¼æŽ’é™¤çš„é¡µé¢æŽ’é™¤çš„ User-Agents谷歌字体Gzip主页主页如果 REQUEST_URI如果您修改了 CSS 文件,则必须删除已压缩的 CSS 文件图åƒä¼˜åŒ–等于延迟加载设置异步加载谷歌字体当图åƒå’Œ iframe 进入视线时æ‰åŽ»åŠ è½½å®ƒä»¬å·²ç™»å½•ç”¨æˆ·CSS 压缩CSS 增强åˆå¹¶HTML 压缩HTML 增强压缩Js 压缩移动设备移动端主题CSS 增强压缩更强大的 HTML 压缩算法新文章å‘布时好æ¯åˆ†é’Ÿä¸€æ¬¡æ¯ 10 å¤©ä¸€æ¬¡æ¯ 10 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 15 å¤©ä¸€æ¬¡æ¯ 15 åˆ†é’Ÿä¸€æ¬¡æ¯ 2 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 3 å¤©ä¸€æ¬¡æ¯ 3 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 4 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 5 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 5 åˆ†é’Ÿä¸€æ¬¡æ¯ 6 å°æ—¶ä¸€æ¬¡æ¯ 7 å¤©ä¸€æ¬¡æ¯ 7 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 8 ä¸ªå°æ—¶ä¸€æ¬¡æ¯ 9 ä¸ªå°æ—¶ä¸€æ¬¡æ¯å¤©ä¸€æ¬¡æ¯æœˆä¸€æ¬¡æ¯å¹´ä¸€æ¬¡æ¯å°æ—¶ä¸€æ¬¡ä»…在 Premium 版中å¯ç”¨å›¾åƒä¼˜åŒ–工具选项已ä¿å­˜é¡µé¢è¯·æ›´æ–°æ–‡ç« é¢„加载预加载设置通过åˆå¹¶ CSS 文件å‡å°‘ HTTP 请求通过åˆå¹¶ js 文件å‡å°‘ HTTP 请求å‡å°‘网站è€ç”¨æˆ·çš„页é¢åŠ è½½æ—¶é—´å‡å°‘ SQL 查询的数é‡å‡å°‘从æœåС噍å‘é€çš„æ–‡ä»¶å¤§å°é˜»å¡žæ¸²æŸ“çš„ Js缓存生æˆå®Œæ¯•åŽé‡æ–°å¯åŠ¨é¢„åŠ è½½ç¨‹åºä¿å­˜æœåŠ¡å™¨æ—¶é—´è®¾ç½®ç«™ç‚¹åœ°å›¾åªæœ‰ç”¨æˆ·æ»šåЍ页颿ˆ–移动鼠标时æ‰ä¼šåŠ è½½éƒ¨åˆ† js 文件开始于æˆåŠŸæ ‡ç­¾ç›®æ ‡æ–‡ä»¶å¤¹ç®€æ´ä¸”高效的缓存系统然åŽç¼“存超时规则工具æ è®¾ç½®æ¯å°æ—¶ä¸¤æ¬¡æ›´æ–°æ–‡ç« WP Fastest CacheWP Fastest Cache 选项警告å‘å¸ƒæ–°æ–‡ç« åŽæ‚¨æƒ³åšä»€ä¹ˆï¼Ÿæ›´æ–°æ–‡ç« æˆ–页é¢åŽæ‚¨æƒ³åšä»€ä¹ˆï¼Ÿå°ç»„件缓存你å¯ä»¥åœ¨è¿™é‡ŒæŸ¥çœ‹æ›´å¤šè®¾ç½®ã€‚您å¯ä»¥å‡å° CSS æ–‡ä»¶çš„å¤§å°æ‚¨å¯ä»¥å‡å° JS æ–‡ä»¶çš„å¤§å°æ‚¨å¯ä»¥ç¼©å°é¡µé¢å¤§å°æ‚¨å¯ä»¥åˆ é™¤æ‰€æœ‰ç¼“存文件您å¯ä»¥åˆ é™¤ Emoji çš„å†…è” CSS å’Œ wp-emoji-release.min.jsä½ å¯ä»¥æŒ‡å®šç”¨äºŽé¢„加载的站点地图。你å¯ä»¥æŒ‡å®šé¢„加载的内容,也å¯ä»¥å¯¹å®ƒä»¬è¿›è¡ŒæŽ’åºã€‚ä½ å¯ä»¥åœ¨è¿™é‡ŒæŒ‡å®šé¢„加载功能的实现方å¼ã€‚删除文件具有 Google Analytics(分æžï¼‰å‚数购物车中有 Woocommerce 项目具有 Yandex çš„ Click ID 傿•°http://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/æ¯åˆ†é’Ÿå‡ ä¸ªé¡µé¢wp-fastest-cache/languages/wp-fastest-cache-pt_BR.mo000064400000025005151435171370016360 0ustar00Þ•’¬Å< P Q ^ 'b Š “ Ÿ ¯ ³ À Ñ Þ ó þ   " : T o Ž 2§ 0Ú  "2;.Yˆš¬ ½ Êëú; 1Hzƒ •Ÿ ¦² ºÆ Öá õ  #0 5?HAW™Q¬ þ   ,=M‹ ›¦ ¶Â ÓÝ äñ  $1:=Qdx‹¡´ÆÙìÿ'9L_ r } Š –!£ÅÙñ ÷RX^ f/p. *Ï ú.!Jl —£ ¬¸À ÅVÓ(*S X ft {‡˜9 9Ú &!%H!nB¯?ò72j{›"¹.Ü ž»Ð3Õ ,4Kb#s —¢ ³¾Òò"-P@mA® ð ý "",Er© Ã+ÑýD#6hŸ¨ ÁË Òà èô /@ \izŸ\® L" o z  %” .º Ké 5! G!U!h!w! ‹!˜! !°!Î!í! ü!" "" 0";"R" d"n" „" Ž" ˜"¢" ³"½" Ó" Ý" ç"ñ"## "#%,#$R#w##™#c­#$$)$>2$=q$U¯$"%6(%0_%%®%Í%â% ò%þ%& &g!&@‰&Ê&Ñ&ë& ü&''&'?,'>l'«'.»'-ê'((-A(Uo(?Å(?)E)#Y)!})"Ÿ).Â)ñ) s,#Uj„fCaOF;G~y}ukH 9‰7w/4…’ƒ]V'q`xRgˆŒ[n>E‡+AmBhbŠ: e%JloQSIp2{Dr=tX)zT<$c_‘‹0 ZK" 3P&8-?LN‚.€M@Ž!5|*6W^viY1(d\†Add New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingBuyCDN SettingsCache StatisticsCache SystemCache Timeout WizardCategoriesCheckoutChoose OneClear All CacheClear Cache of HomepageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelete CacheDelete Cache and Minified CSS/JSDisable EmojisDiscover FeaturesDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersDownloadDownload & UpdateEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGet It Now!Google FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIn the premium version there are some new features which speed up the sites more.Is Equal ToJustLazy LoadLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew FeaturesNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePlease don't delete the free version. Premium version works with the free version.PostsPreloadPurchasedReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRemove render-blocking JavaScriptRender Blocking JsRestart After CompletedServer TimeSettingsStarts WithSuccessTagsTarget folderThe download button will be available after paid. You can buy the premium version now.The simplest and fastest WP Cache systemThenTimeout RulesTwice an HourUpdateUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can download and update the premium when you want if you paid.You can remove the emoji inline css and wp-emoji-release.min.jsYou need to pay before downloading the premium version.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://tr.linkedin.com/in/emrevonahttp://wordpress.org/plugins/wp-fastest-cache/pages per minuteProject-Id-Version: WP Fastest Cache 0.8.9.7 Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fastest-cache POT-Creation-Date: 2019-09-09 20:43:14+00:00 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PO-Revision-Date: 2019-09-19 17:03-0300 Language-Team: X-Generator: Poedit 2.2.3 Last-Translator: Plural-Forms: nplurals=2; plural=(n > 1); Language: pt_BR Adicionar nova regraTudoTodos os arquivos de cache serão removidos tambémArquivosAnexosCache do navegadorComprarConfigurações de CDNEstatísticas de cacheSistema de cacheAssistente de tempo limite do cacheCategoriasFinalizar compraEscolha umLimpar todo o cacheLimpar cache da página inicialLimpar cache de paginaçãoLimpar cache de post / páginaLimpar cache de categorias do postLimpar cache de tags do postLimpar arquivos de cache quando um post ou página for publicadaLimpar arquivos de cache quando um post ou página for atualizadaCombinar CssCombinar JSCombinar Js PlusContémCriar cache para o tema do celularCriar o cache de todo o site automaticamenteTipos personalizados de postTaxonomias personalizadasLimpeza do banco de dadosExcluir cacheExcluir cache e arquivos minificados CSS/JSDesativar EmojisDescubra os recursosNão mostrar a versão em cache para desktop em dispositivos móveisNão mostrar a versão em cache para usuários logadosDownloadDownload & atualizaçãoEmre VonaAtivarAtivar o gzipExcluirExcluir CSSExcluir cookiesExcluir JSAssistente para excluir páginaExcluir páginasExcluir agentes de usuárioObter agora!Fontes do GoogleGzipPágina inicialPágina inicialSe REQUEST_URISe você modificar qualquer arquivo css, você precisará apagar os arquivos css minificadosOtimização de imagemNa versão premium existem alguns recursos novos que aceleram mais os sites.É igual aApenasCarregamento lentoConfigurações de carregamento lentoCarregar fontes do Google de forma assíncronaCarregar imagens e iframes quando eles entrarem na viewport dos navegadoresUsuários logadosMinificar CssMinificar Css PlusMinificar HTMLMinificar HTML PlusMinificar JsCelularTema do celularMais poderoso minificador cssMais poderoso minificador HTMLNovos recursosNovo postOkA cada 1 minutoUma vez a cada 10 diasA cada 10hUma vez a cada 15 diasA cada 15 minutosA cada 2hUma vez a cada 3 diasA cada 3hA cada 4hA cada 5hA cada 5 minutosA cada 6hUma vez a cada 7 diasA cada 7hA cada 8hA cada 9hUma vez por diaUma vez por mêsUma vez por anoA cada 1hDisponível apenas na versão premiumFerramenta de otimização de imagemAs opções foram salvasPáginasPor favor, atualizePor favor, não exclua a versão gratuita. A versão premium funciona junto com a versão gratuita.PostsPré-carregamentoCompradoReduza solicitações HTTP por meio de arquivos css combinadosReduza solicitações HTTP por meio de arquivos js combinadosReduza os tempos de carregamento de página para os visitantes que retornaram ao siteReduzir o número de consultas SQLReduza o tamanho dos arquivos enviados do seu servidorRemover javaScript de bloqueio de renderizaçãoBloqueio de renderização JsReiniciar depois de concluídoHorário do servidorConfiguraçõesComeça comSucessoTagsDiretório de destinoO botão de download estará disponível após o pagamento. Você pode comprar a versão premium agora.O sistema mais simples e rápido sistema de cache para WordPressEntãoRegras de limite de tempoA cada meia horaAtualizarAtualizar postWP Fastest CacheAvisoO que você quer que aconteça depois de publicar um novo post?O que deseja que aconteça após atualizar um post ou página?Cache de widgetVocê pode diminuir o tamanho dos arquivos cssVocê pode diminuir o tamanho dos arquivos jsVocê pode diminuir o tamanho da páginaVocê pode excluir todos os arquivos de cacheVocê pode fazer download e atualizar para premium quando quiser, se você já pagou.Você pode remover o emoji inline css e wp-emoji-release.min.jsVocê precisa pagar antes de fazer download da versão premium.excluir os arquivostem parâmetros do Google Analyticstem itens WooCommerce no carrinhohttp://tr.linkedin.com/in/emrevonahttp://wordpress.org/plugins/wp-fastest-cache/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-gl_ES.po000064400000041023151435171370016344 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Galician # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-11-25 07:53:04+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: gl_ES\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Hai que engadir polo menos un mapa do sitio" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Podes personalizar os axustes avanzados a través desta sección." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Axustes avanzados" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Podes especificar mapas do sitio que se usarán para a carga previa." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Mapa do sitio" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Podes especificar os contidos que se empregarán para a carga previa e tamén podes ordenalos." #: templates/preload.php:86 msgid "Content Types" msgstr "Tipos de contido" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Podes especificar o método que queres que use a característica de precarga a través desta sección." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Elixe un método" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Axustes de precarga" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Algunhas orixes de js non cargarán ata que se faga scroll ou se mova el rato" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Aprazar Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Opcións de WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "ten parámetros de ID de clic de Yandex" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Baleirar páxinas específicas" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Gardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Axustes da barra de ferramentas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar a caché de todos os sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Axustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Baleirar a caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar os recursos JavaScript que bloquean os procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "As opcións foron gardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "ten artigos de WooCommerce no carriño" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "ten parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Arquivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora do servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar os arquivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contén" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "é igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comeza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Páxina de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluír páxinas" #: templates/timeout.php:124 msgid "Then" msgstr "Entón" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Se REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente do tempo límite da caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Engadir unha nova regra" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Baleirar a caché e minimizar CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Só dispoñible na versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elixe un" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Tamén se eliminarán todos os arquivos da caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Se modificas calquera arquivo CSS, tes que borrar os arquivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Podes borrar todos os arquivos da caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluír" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imaxes" #: inc/admin.php:1082 msgid "Settings" msgstr "Axustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpeza da base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Axustes da CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluír JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluír CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluír cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluír axentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluír páxinas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Ferramenta de optimización de imaxes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Regras de tempo límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estatísticas da caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Baleirar a caché de entradas / páxinas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Que queres que ocorra despois de actualizar unha entrada ou unha páxina?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Baleirar a caché de paxinación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Baleirar a caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Baleirar a caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Baleirar a caché da páxina de inicio" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Baleirar toda a caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Que queres que ocorra despois de publicar a nova entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar despois de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páxinas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adxuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páxinas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Páxina de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir as solicitudes HTTP mediante arquivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar as imaxes e iframes cando entren na visualización dos navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar as fontes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fontes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo do procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Podes eliminar os emojis integrados en CSS e o arquivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar os emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir o tempo de carga da páxina para os visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché do navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir o tamaño dos arquivos enviados polo teu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Podes reducir o tamaño dos arquivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir as solicitudes HTTP mediante arquivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Minimización CSS máis potente" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Podes reducir o tamaño dos arquivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Minimización HTML máis potente" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Podes reducir o tamaño da páxina" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Baleirar os arquivos da caché cando se actualiza unha entrada ou páxina" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar a entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Baleirar os arquivos da caché cando se publica unha entrada ou páxina" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nova entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear a caché para o tema para móbiles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móbiles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Non mostrar a versión de escritorio da caché nos dispositivos móbiles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móbil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Non mostrar a versión da caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automaticamente a caché de todo o sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir o número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Unha vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Unha vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Unha vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Unha vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Unha vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Unha vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Unha vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Unha vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Unha vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Unha vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Unha vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Unha vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "O sistema WP Caché máis simple e rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Unha vez ao ano" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Unha vez ao mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Unha vez ao día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Unha vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Unha vez á hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dúas veces á hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Unha vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Unha vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Unha vez cada 1 minuto"wp-fastest-cache/languages/wp-fastest-cache-sk_SK.mo000064400000024174151435171370016372 0ustar00Þ•–Ì| | } — ¤ ¶ 'º â "ë   * 7 H U j q | ‡ — § ³ Ó ì   : Y 2r 0¥ Ö î ú    , .J y ‹  ® · ;Æ 1 .4 c m t € ˆ ” ¤ ¯ à Ñ å ò ÷  A[ nz =®ì ü # 4> ERk…Ž‘¥¸Ìßõ-@Sh{ ³ Æ Ñ Þ ê!÷-E KY_g/x.¨*× .#Re} ‚Ž—F  çóû (7 <J [ iu†Ÿ9§9á =(&f%!³Õ?ô34UhT¾$Db.°ÐBá$@Wo$wœ8¥Þçú *C L WeuŒ%"Ã!æ ('I qF’CÙ=M]q z)†/°àõ .<>?{4» ðú  + > Lm ˜¥ª½ÐOß/ HR&g>ŽÍéú";KQ`Ÿ®±ÉØíý - : K \ p Ž ¬ » Î ã ö ! !&!#;!"_!‚!œ!¥!º!Ã!Ó!Hî!97"Tq"Æ"3ã"#1#N#W# g#r#IŠ# Ô#ß#ç#ï#3$ 8$B$S$p$ƒ$š$«$ Æ$:Ð$B % N%>[%)š%(Ä%%í%*&J>&V‰&]à&g>'¦'·'#×'û'.(H(h(SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2025-01-10 12:15:27+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n == 1) ? 0 : ((n >= 2 && n <= 4) ? 1 : 2); X-Generator: GlotPress/4.0.1 Language: sk Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) NastaveniaPridaÅ¥ nové pravidloRozšírené nastaveniaVÅ¡etkoVÅ¡etky cache súbory boli vymazanéArchívyMusí byÅ¥ pridaná aspoň jedna mapa stránky (sitemap)PrílohyCache prehliadaÄaNastavenia CDNÅ tatistika CacheCache systémuSprievodca Cache TimeoutZruÅ¡iÅ¥KategórieZvoliÅ¥ jedenVybraÅ¥ metóduVymazaÅ¥ vÅ¡etko cacheVyÄistiÅ¥ CacheVymazaÅ¥ Cache a minifikované CSS/JSVymazaÅ¥ cache vÅ¡etkých stránokVymazaÅ¥ cache domovskej stránkyVyÄistiÅ¥ cache stránkovania.VymazaÅ¥ cache Älánku/stránkyVymazaÅ¥ cache pre kategórie ÄlánkovVymazaÅ¥ cache znaÄiek ÄlánkuAktualizovaÅ¥ cache súbory, keÄ publikujete Älánok alebo stránku AktualizovaÅ¥ cache súbory, keÄ upravíte Älánok alebo stránkuÄŒistenie konkrétnych stránokKombinovaÅ¥ CssKombinovaÅ¥ Js KombinovaÅ¥ Js PlusObsahujeTypy obsahuVytvoriÅ¥ cache pre mobilnú verziu témyVytvorte cache pre vÅ¡etky stránky automatickyVlastné typy obsahuVlastné taxonómieVyÄistenie databázyOneskorenie JsVypnúť EmojisNezobrazovaÅ¥ cache verziu pre PC na mobilných zariadeniachNezobrazovaÅ¥ verziu v cache pre prihlásených používateľovOdstrániÅ¥ JavaScript zdroje blokujúce vykreslenieEmre VonaZapnúťPovoliÅ¥ GzipVylúÄiÅ¥VylúÄiÅ¥ CSSVylúÄiÅ¥ CookiesVylúÄiÅ¥ JSVylúÄiÅ¥ sprievodcu stránkamiVylúÄiÅ¥ stránkyVylúÄiÅ¥ User-AgentsGoogle FontsGzipDomovská stránkaDomovská stránkaAk REQUEST_URIAk upravíte akýkoľvek súbor css, musíte odstrániÅ¥ zmenÅ¡ené súbory cssOptimalizácia obrázkovsa rovnáLazy load nastaveniaNaÄítanie písma Google asynchrónneNaÄítaÅ¥ obrázky a iframe až pri vyrezávaní prehliadaÄaPrihlásení používateliaMinifikovaÅ¥ CssMinifikovaÅ¥ Css PlusMinifikovaÅ¥ HTMLMinimalizovaÅ¥ HTML PlusMinifikovaÅ¥ jsMobilMobilná témaVýkonnejÅ¡ie minifikovaÅ¥ cssVýkonnejÅ¡ia minifikácia htmlNový ÄlánokOKJedenkrát za 1 minútuRaz za 10 dníKaždých 10 hodín Raz za 15 dní Jedenkrát každých 15 minútKaždé 2 hodinyRaz za 3 dniKaždé 3 hodinyKaždé 4 hodinyKaždých 5 hodín Jedenkrát každých 5 minútJedenkrát každých 6 hodínRaz za 7 dní Každých 7 hodín Každých 8 hodín Každých 9 hodínJedenkrát denneJedenkrát mesaÄneRaz roÄneJedenkrát za hodinuK dispozícii iba vo verzii PremiumOptimalizovaÅ¥ nástroje obrázkovNastavenia boli uloženéStránkyProsím aktualizujteÄŒlánkyPrednaÄítanieNastavenia prednaÄítaniaZredukovanie HTTP žiadosti prostredníctvom kombinovaných súborov CSSRedukovaÅ¥ HTTP žiadosti pomocou kombinácie js súborovZnížte Äas naÄítania stránky pre návÅ¡tevníkov, ktorý už boli na stránke.ZnížiÅ¥ poÄet dopytov SQLZnížuje veľkosÅ¥ súborov odoslaných zo serveraRenderovaÅ¥ blokovanie JsReÅ¡tartovaÅ¥ po dokonÄeníUložiÅ¥Serverový ÄasNastaveniaMapy stránok (Sitemap)Niektoré zdroje js sa naÄítajú až pri posúvaní alebo pohybe myÅ¡ouZaÄína sÚspechZnaÄkyCieľový prieÄinokNajjednoduchší a najrýchlejší WP Cache systémNásledneTimeout pravidlaNastavenia panela nástrojovDvakrát za hodinuAktualizovaÅ¥ ÄlánokWP Fastest CacheMožnosti WP Fastest CacheVarovanieÄŒo chcete, aby sa stalo po publikovaní nového Älánku?ÄŒo chcete, aby sa stalo po aktualizácii Älánku alebo stránky?Widget CacheV tejto Äasti môžete prispôsobiÅ¥ rozšírené nastavenia.Môžete zmenÅ¡iÅ¥ veľkosÅ¥ súborov cssMôžete zmenÅ¡iÅ¥ veľkosÅ¥ js súborovMôžete znížiÅ¥ veľkosÅ¥ stránkyMôžete odstrániÅ¥ vÅ¡etky súbory cacheMôžete odstrániÅ¥ vložené súbory emoji css a wp-emoji-release.min.jsMôžete zadaÅ¥ mapy stránok (sitemaps), ktoré sa majú použiÅ¥ na prednaÄítanie.Môžete urÄiÅ¥ obsah, ktorý sa má použiÅ¥ na prednaÄítanie, a môžete ho aj zoradiÅ¥.Prostredníctvom tejto Äasti môžete urÄiÅ¥ metódu, ktorú má funkcia prednaÄítania používaÅ¥.VymazaÅ¥ súborymá Google Analytics Parametersmá Woocommerce položky v košíkumá Yandex Click ID parametrehttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/stránok za minútuwp-fastest-cache/languages/wp-fastest-cache-fi.mo000064400000020167151435171370015754 0ustar00Þ•€ 7D'Hp y… •¢ ³À Õ àë û ! < [ 2t 0§ Ø ä ï ÿ  .& U g y Š ;™ 1Õ . 6 @ G S [ g w ‚ – ¤ ¸ Å Ê Ô Ý Aì . A M ` = ¿ Ï Ú ê ö    % > X a d x ‹ Ÿ ² È Û í &;N`s† ™ ¤ ± ½!Êì ,2/:.j*™ Ä.å' ?K T`h m({¤ © · ÅÑâ9ê9$ ^&k%’!¸Ú?ù9Jj.ˆ·Èæ.NW` uƒ™²Î Öãþ &5.\-‹A¹Cû ? LX i u/–Æá÷ K&Er,¸ åïÿ . CQhy —¥ª³»OË-="\;» Õãö & .<Vq€ƒ–ª¼Ðäõ*;N_rƒ”¥¸ËÛë%>D Yd5m4£7Ø!62i"~¡ ±»Á ÊÕ4å!0BVg:pE«ñ&%,R*oCšÞ!ð$ .7 f SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCategoriesChoose OneClear All CacheClear CacheClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2020-03-19 21:29:25+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: fi Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AsetuksetLisää uusi sääntöKaikkiMyös kaikki välimuistin tiedostot poistetaanArkistotLiitteetSelaimen välimuistiCDN-AsetuksetVälimuistin tilastotVälimuistijärjestelmäVälimuisti aikaraja -velhoOsastotValitse yksiTyhjennä koko välimuistiTyhjennä välimuistiTyhjennä sivutuksen välimuistiTyhjennä sivun/artikkelin välimuistiTyhjennä artikkelin kategorioiden välimuistiTyhjennä artikkelin avainsanojen välimuistiTyhjennä välimuistin tiedostot kun sivu tai artikkeli julkaistuTyhjennä välimuistin tiedostot kun sivu tai artikkeli päivitettyYhdistä CssYhdistä JsYhdistä Js PlusSisältääTee välimuisti mobiili teemalleLuo välimuisti automaattisesti koko sivustolleMukautetut artikkelityypitMukautettu luokitteluTietokannan siivousPoista hymiöt käytöstäÄlä näytä mobiili laitteille pöytäkoneille välimuistitettua versiotaÄlä näytä välimuistitettua versiota kirjautuneille käyttäjillePoista näyttämisen blokkaavat JS resurssitEmre VonaOta käyttöönOta Gzip käyttöönRajaa poisRajaa pois CSSRajaa pois evästeetRajaa pois JSRajaa pois sivu -velhoRajaa pois sivutRajaa pois käyttäjäagentitGoogle fontitGzipKotisivuEtusivuJos REQUEST_URIJos muutat mitä tahansa css-tiedostoa, on poistettava pienennetty css-tiedostoKuvien optimointiYhtäsuuri kuinVaiheittainen lataus asetuksetLataa Google fontit asynkronisestiLataa kuvat ja iframes kun ne saapuvat selaimen näyttöönKirjautuneet käyttäjätPienennä CssPienennä Css PlusPienennä HTMLPienennä HTML PlusPienennä JsMobiiliMobiili teemaTehokkaampi css pienennysTehokkaampi HTML-pienennysUusi artikkeliOK1 minuutin välein10 päivän välein10 tunnin välein15 päivän välein15 minuutin välein2 tunnin välein3 päivän välein3 tunnin välein4 tunnin välein5 tunnin välein5 minuutin välein6 tunnin välein7 päivän välein7 tunnin välein8 tunnin välein9 tunnin väleinKerran päivässäKerran kuukaudessaKerran vuodessaKerran tunnissaVain Maksullisessa versiossaTyökalu kuvien optimointiinAsetukset on tallennettuSivutPäivitä, ole hyväArtikkelitEsilataaVähennä HTTP-kutsuja yhdistämällä css-tiedostojaVähennä HTTP-kutsuja yhdistämällä js-tiedostojaVähennä sivun latausaikoja toistuville vierailijoilleVähennä SQL-kutsujen määrääPienennä palvelimelta lähetettyjen tiedostojen kokoaNäytä blokkaava JsKäynnistä uudelleen kun valmistaPalvelimen aikaAsetuksetAlkaaOnnistuiAvainsanatKohde hakemistoYksinkertaisin ja nopein WP-välimuistijärjestelmäSittenAikasäännötKahdesti tunnissaPäivitä artikkeliWP Fastest CacheVaroitusMitä haluat tapahtuvaksi kun uusi artikkeli on julkaistu?Mitä haluat tapahtuvaksi artikkelin tai sivun päivityksen jälkeen?Vimpain välimuistiVoit pienentää css-tiedostojen kokoaVoit pienentää js-tiedostojen kokoaVoit pienentää sivun kokoaVoit poistaa kaikki välimuistin tiedostotVoit poistaa hymiön rivin sisäisen css ja wp-emoji-release.min.jspoistaa tiedostoton Google Analytics -parametrejäWoocommerce kohteita on ostoskorissahttp://wordpress.org/plugins/wp-fastest-cache/sivua minuutissawp-fastest-cache/languages/wp-fastest-cache-nl_NL.mo000064400000024321151435171370016354 0ustar00Þ•˜Üœ œ  · Ä Ö 'Ú  " . : J W h u Š ‘ œ § · Ç Ó ó  % ? Z y 2’ 0Å ö   % 5 > L .j ™ « ½ Î × ;æ 1" .T ƒ  ”   ¨ ´ Ä Ï ã ñ  !*A9{ Žš ­=Î  ' 7C T^ er‹¥®±ÅØìÿ(:M`sˆ›­ÀÓ æ ñ þ !9Me ky‡/˜.È*÷ ".Cr… ¢®·FÀ  `.(¸ ½Ë Ü ê ö+939m §=´&ò%!?a?€3ÀUôTJŸ°Ðî. <\m‹©ÀÚ)à 0EN^o ‚ ¥ ¯ ¼ÈÙ ë!ø6P!k%³GÑE_ z ˆ•§ ­º+Ø4 HTFi>°6ï & 0< MXg zˆ¡µ ÒßäíöLS lz–Q´ ( 8D U_ fs‘ °¾ÁÔéü ( : N ` r „ š ¬ À Ò ä ö !!)!$9!+^!Š!¡!ª! ²! ¼!É!:ã!9"?X""˜"I»"#&#D# L# X#e#Zn# É#Ô#Û#à#sè#,\$‰$$$²$Ã$Ò$ã$ô$ %C%G]% ¥%=²%/ð%1 &+R&'~&B¦&Jé&b4'U—'í'!(&&( M(.n((½(SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-29 11:23:38+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: nl Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) InstellingenNieuwe regel toevoegenGeavanceerde instellingenAllesAlle cachebestanden worden ook verwijderdArchievenEr moet minstens één sitemap worden toegevoegdBijlagenBrowser CachingCDN instellingenCache statistiekenCache systeemCache timeout wizardAnnulerenCategorieënKies er eenKies een methodeAlle cache wissenCache wissenCache en verkleinde CSS/JS wissenCache van alle sites wissenCache van homepage wissenCache van paginatie wissenCache van bericht / pagina wissenCache van bericht categorieën wissenCache van bericht tags wissenCache bestanden wissen wanneer een bericht of pagina wordt gepubliceerdCache bestanden wissen wanneer een bericht of pagina wordt geüpdatetSpecifieke pagina's wissenCombineer CSSCombineer JSCombineer JS PlusBevatInhoud typenCache maken voor mobiel themaDe cache van de hele site automatisch makenAangepaste berichttypenAangepaste taxonomieënDatabase opschoningVertraag JSEmoji's uitschakelenDe versie in de cache voor desktop niet weergeven op mobiele apparatenDe versie in de cache voor ingelogde gebruikers niet weergevenElimineer render blokkering JavaScript gegevensbronnenEmre VonaInschakelenGzip inschakelenUitsluitenCSS uitsluitenCookies uitsluitenJS uitsluitenUitsluiten pagina wizardPagina's uitsluitenUitsluiten gebruikers-agentsGoogle FontsGzipHomepageHomepageAls REQUEST_URIAls je een CSS bestand wijzigt, moet je verkleinde CSS bestanden verwijderenAfbeeldingsoptimalisatieIs gelijk aanInstellingen voor lazy-loadGoogle Fonts asynchroon ladenAfbeeldingen en iframes laden wanneer ze de weergaveport van de browsers betredenIngelogde gebruikersVerklein cssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobielMobiel themaKrachtiger verkleinen van cssKrachtiger verkleinen van HTMLNieuw berichtOKEenmaal per minuutEenmaal per 10 dagenEenmaal per 10 uurEenmaal per 15 dagenEenmaal per 15 minutenEenmaal per 2 uurEenmaal per 3 dagenEenmaal per 3 uurEenmaal per 4 uurEenmaal per 5 uurEenmaal per 5 minutenEenmaal per 6 uurEenmaal per 7 dagenEenmaal per 7 uurEenmaal per 8 uurEenmaal per 9 uurEenmaal per dagEenmaal per maandEenmaal per jaarEenmaal per uurAlleen beschikbaar in Premium versieGereedschap voor optimaliseren afbeeldingenOpties zijn opgeslagenPagina'sUpdatenBerichtenVooraf ladenVooraf laden instellingenHTTP aanvragen verminderen via gecombineerde css bestandenHTTP aanvragen verminderen via gecombineerde js bestandenLaadtijden van pagina's voor terugkerende bezoekers verminderenHet aantal SQL-query's verminderenDe grootte van bestanden die vanaf je server worden verzonden, verkleinenWeergave blokkerende jsOpnieuw starten nadat deze is afgerondOpslaanServer tijdInstellingenSitemapsSommige js bronnen zullen niet geladen worden, totdat er gescrold wordt of de muis bewogenBegint metGeluktTagsDoelmapHet menu WP Fastest Cache op de beheer toolbar zal hieronder zichtbaar zijn voor de geselecteerde gebruikersrollen.Het eenvoudigste en snelste WP cache systeemDanTime-out regelsToolbar instellingenTweemaal per uurUpdate berichtGebruikersrollenWP Fastest CacheWP Fastest Cache optiesWaarschuwingWat wil je dat er gebeurt na het publiceren van het nieuwe bericht?Wat wil je dat er gebeurt na het updaten van een bericht of een pagina?Widget cacheIn deze sectie kun je de geavanceerde instellingen aanpassen.Je kunt de grootte van css bestanden verkleinenJe kunt de grootte van je js bestanden verkleinenJe kunt de grootte van de pagina verkleinenJe kunt alle cachebestanden verwijderenJe kunt de emoji inline css en wp-emoji-release.min.js verwijderenJe kunt sitemaps opgeven die moeten worden gebruikt voor het vooraf laden.Je kunt de inhoud opgeven die moet worden gebruikt voor het voor laden en je kunt ze ook sorteren.In deze sectie kun je de methode opgeven die je wil dat de voorlaad functie gebruikt.verwijder de bestandenheeft Google Analytics parametersheeft WooCommerce items in winkelwagenheeft Yandex Click ID parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pagina's per minuutwp-fastest-cache/languages/wp-fastest-cache-en_GB.mo000064400000022431151435171370016324 0ustar00Þ••Äl l m ‡ ” ¦ 'ª Ò "Û þ   ' 8 E Z a l w ‡ — £ ¼ Õ ï  ) 2B 0u ¦ ¾ Ê Õ å î ü . I [ m ~ ‡ ;– 1Ò . 3 = D P X d t  “ ¡ µ Â Ç Ñ Ú Aé + >J ]=~¼ Ì× çó  ";U^auˆœ¯ÅØêý#8K]pƒ – ¡ ® º!Çéý )/7/H.x*§ Ò.ó"5M R^gFp ·ÃË Ð(Þ  + 9EVo9w9± ë=ø&6%]!ƒ¥?Ä3U8TŽãô2.Q€  ±Ò ìù '7"@ co Œ ª¿ Æ ÑÜì ü!6PkŠ2£0Ö  +6F O].{ª¼Îßè;÷13.e ”ž ¥± ¹Å Õà ô #(1:AI‹ žª ½=Þ ,7 GS dn u‚›µ¾ÁÕèü%8J]pƒ˜«½Ðã ö   !'I]u {‰—/¨.Ø* 2 .S ‚ • ­ ² ¾ Ç FÐ !#!+! 0!(>!g! l!z! ‹! ™!¥!¶!Ï!9×!;" M"=Z"&˜"%¿"%å" #?*#3j#Už#Tô#I$Z$z$š$.¹$è$%SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-06-13 12:11:20+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: en_GB Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) SettingsAdd New RuleAdvanced settingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN settingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose oneChoose a methodClear All CacheClear cacheClear Cache of All SitesClear homepage cacheClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing specific pagesCombine CSSCombine JsCombine Js PlusContainsContent typesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase cleanupDelay JSDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude cookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHomepageHomepageIf REQUEST_URIIf you modify any CSS file, you have to delete minified CSS filesImage OptimisationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CSSMinify CSS PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify CSSMore powerful minify HTMLNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimise Image ToolOptions have been savedPagesPlease updatePostsPreloadPreload settingsReduce http requests through combined CSS filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome JS sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache optionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after an update of post or page?Widget CacheYou can customise the advanced settings through this section.You can decrease the size of CSS filesYou can decrease the size of js filesYou can decrease the size of the pageYou can delete all cache filesYou can remove the emoji inline CSS and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas WooCommerce Items in baskethas Yandex Click ID parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutewp-fastest-cache/languages/wp-fastest-cache-it_IT.mo000064400000020612151435171370016361 0ustar00Þ•…Dllm ‡”'˜À ÉÕ åò   % , 7 B R ^ w ‘ ¬ Ë 2ä 0 H T _ o x .– Å × é ú ; 1E .w ¦ ° · Ã Ë × ç ò   ( 5 : D M A\ ž ± ½ Ð =ñ / ? J Z f w  ˆ • ® È Ñ Ô è û "8K]pƒ–«¾Ðãö   ! -!:\pˆ Žœ¢/ª.Ú*  4.U„—¯ ´À ÉÕÝ â(ð , = KWh9p9ª ä&ñ%!>`?¿Ðð.=]nŒªÀ,Æóû&+<Te…  —¢ ºÇ ä$*IB`B£ æ òý  .7 f‡¡¶@Ç67? w ˆ• © º&Åìû $-6BEˆ  ¬%Ã@é* :G Yg z† ™¥Ääóö #9HavŽ£¸Íå ú2G[m€'’$ºßý 6%5\B’Õ4ó(E^d s € ‹–š*³Þå"÷,> O<ZI—á'ò& 'A 'i C‘ Õ ä $!.*!Y!y!SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2023-02-04 10:32:25+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: it Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) ImpostazioniAggiungi nuova regolaTuttiVerranno rimossi anche tutti i file di cacheArchiviAllegatiMemorizzazione nella cache del browserImpostazioni CDNStatistiche della cacheSistema di cacheProcedura guidata timeout cacheAnnullaCategorieScegli unoCancella tutta la cacheSvuota cacheSvuota cache di tutti i sitiCancella cache della paginazioneCancella la cache di articoli/pagineCancella cache delle categorieCancella cache dei tagSvuota la cache quando un articolo o una pagina vengono pubblicatiSvuota la cache quando un articolo o una pagina vengono aggiornatiCombina CSSCombina JsCombina Js PlusContieneCrea la cache per il tema mobileCrea la cache di tutto il sito automaticamenteTipi di contenuto personalizzatiTassonomie personalizzatePulizia del databaseDisabilita emojiNon mostrare la versione cache per desktop su dispositivi mobiliNon mostrare la versione in cache agli utenti connessiElimina le risorse JavaScript che bloccano il renderingEmre VonaAttivaAbilita GzipEscludiEscludi CSSEscludi i cookieEscludi JSProcedura guidata di esclusione paginaEscludi pagineEscludi gli user agentGoogle FontsGzipHomepageHomepageSe REQUEST_URISe modifichi un file CSS, devi eliminare i file dei CSS minificatiOttimizzazione immaginiè uguale aImpostazioni lazy loadCarica Google Fonts in modo asincronoCarica immagini e iframe quando vengono visualizzati nel browserUtenti connessiMinifica CSSMinifica CSS PlusMinifica HTMLMinifica HTML PlusMinifica JSDispositivi mobiliTema mobileMinificazione CSS più potenteMinificazione HTML più potenteNuovo articoloOKUna volta al minutoUna volta ogni 10 giorniUna volta ogni 10 oreOgni 15 giorniUna volta ogni 15 minutiUna volta ogni 2 oreUna volta ogni 3 giorniUna volta ogni 3 oreUna volta ogni 4 oreUna volta ogni 5 oreUna volta ogni 5 minutiUna volta ogni 6 oreOgni 7 giorniUna volta ogni 7 oreUna volta ogni 8 oreUna volta ogni 9 oreUna volta al giornoUna volta al meseUna volta all'annoUna volta all'oraDisponibile solo nella versione PremiumStrumento di ottimizzazione immaginiLe opzioni sono state salvatePagineAggiornaArticoliPrecaricamentoRiduce le richieste HTTP attraverso file CSS combinatiRiduci le richieste HTTP attraverso file Js combinatiRiduce i tempi di caricamento della pagina per visitatori abitualiRiduci il numero di query SQLRiduce la dimensione dei file inviati dal tuo serverJs che bloccano il renderingRiavvia al completamentoSalvaOra del serverImpostazioniInizia conCompletatoTagCartella di destinazioneIl più semplice e veloce sistema Cache WPAlloraRegole di timeoutImpostazioni barra degli strumentiDue volte all'oraAggiorna articoloWP Fastest CacheAttenzioneCosa vuoi che accada dopo aver pubblicato il nuovo articolo?Cosa vuoi che accada dopo l'aggiornamento di un articolo o di una pagina?Cache dei widgetPuoi ridurre la dimensione dei file CSSPuoi ridurre la dimensione dei file JsPuoi ridurre la dimensione della paginaPuoi eliminare tutti i file della cachePuoi rimuovere gli inline CSS degli emoji e wp-emoji-release.min.jselimina i fileha parametri di Google Analyticsha articoli Woocommerce nel carrellohttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pagine al minutowp-fastest-cache/languages/wp-fastest-cache-hu_HU.mo000064400000021174151435171370016365 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ->\|–9ž Ø âð#>,Z‡ Ž›!¬Î0ç00I6z2±KäI0zŒ°+À>ì+F[rI„LÎF bl{ š© »Éè%û!6 ; EQI`ª¾+Í*ùP$u“¤·ÉÝî ô?N Q ]h w‚ ‘ Ÿ © · Å Ó á ï ù  #+3 ;#Gk‡ž¦ ¼ É6Ö= HK+”5À%ö!>FYhx~ ‡L‘Þãþ . F W 7g =Ÿ Ý %ó ,!"F!+i!K•!á!$ó!'".@" o"SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2021-06-26 15:12:34+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: hu Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) BeállításokÚj szabály hozzáadásaÖsszesAz összes gyorsítótárfájl is eltávolításra kerülArchívumCsatolmányokBöngészÅ‘-gyorsítótárazásCDN-beállításokGyorsítótár-statisztikaGyorsítótárazó-rendszerGyorsítótár idÅ‘túllépési varázslójaMégseKategóriákVálasszon egyetA teljes gyorsítótár törléseGyorsítótár törléseAz összes webhely gyorsítótárának törléseAz oldalszámozás gyorsítótárának törléseBejegyzés / oldal gyorsítótárának törléseA bejegyzéskategóriák gyorsítótárának törléseA bejegyzéscímkék gyorsítótárának törléseGyorsítótárfájlok törlése egy bejegyzés vagy oldal közzétételekorGyorsítótárfájlok törlése egy bejegyzés vagy oldal frissítésekorCSS kombinálásaJs kombinálásaJs kombinálása +Tartalmazza eztGyorsítótár készítése mobil témáhozA teljes webhely gyorsítótárának automatikus létrehozásaEgyéni bejegyzéstípusokEgyéni taxonómiákAdatbázis-tisztításEmojik letiltásaNe mutassa meg a gyorsítótárazott asztali verziót mobil eszközöknekNe mutassa a gyorsítótárazott verziót a bejelentkezett felhasználóknakA megjelenítést blokkoló JavaScript-erÅ‘források kiküszöböléseEmre VonaEngedélyezésGzip engedélyezéseKizárásCSS kizárásaSütik kizárásaJS kizárásaAz Oldal varázsló kizárásaOldalak kizárásaFelhasználói ügynökök kizárásaGoogle betűtípusokGzipKezdÅ‘lapKezdÅ‘oldalHa REQUEST_URIHa egy CSS fájlt módosít, törölnie kell a zsugorított CSS fájlokatKépoptimalizálásEgyenlÅ‘ ezzelLazy Load (lusta betöltés) beállításokGoogle betűtípusok aszinkron betöltéseKépek és iframe-ek betöltése, amikor belépnek a böngészÅ‘ nézetablakábaBejelentkezett felhasználókCSS-zsugorításCSS-zsugorítás +HTML-zsugorításHTML-zsugorítás +Js zsugorításaMobilMobil témaErÅ‘teljesebb CSS-zsugorításErÅ‘teljesebb HTML-zsugorításÚj bejegyzésOKPercenként10 naponta10 óránként15 naponta15 percenként2 óránknét3 naponta3 óránként4 óránként5 óránként5 percenként6 óránként7 naponta7 óránként8 óránként9 óránkéntNapontaHavontaÉventeÓránkéntCsak Premium verzióban érhetÅ‘ elKépoptimalizáló eszköztBeállítások elmenveOldalakKérjük, frissítsenBejegyzésekElÅ‘töltésHTTP kérések csökkentése kombinált CSS fájlokkalHTTP kérések csökkentése kombinált JavaScript fájlokkalAz oldal betöltési idejének csökkentése az ismételt látogatóknakSQL-lekérdezések számának csökkentéseCsökkentse a szerverrÅ‘l küldött fájlok méretétMegjelenítést blokkolós JavaScriptÚjraindítás a befejezés utánMentésKiszolgáló idejeBeállításokEzzel kezdÅ‘dikSikerCímkékCélmappaA legegyszerűbb és leggyorsabb WordPress Cache gyorsítótárazó rendszerMajdIdÅ‘túllépés szabályaiEszköztár beállításaiÓránként kétszerBejegyzés frissítéseWP Fastest CacheFigyelmeztetésMi történjék az új bejegyzés közzététele után?Mi történjék egy bejegyzés vagy oldal frissítése után?Widget gyorsítótárCsökkentheti a CSS-fájlok méretétCsökkentheti a JavaScript fájlok méretétCsökkentheti az oldalak méretétTörölheti az összes gyorsítótárfájltEltávolíthatja az emoji inline CSS-t és a wp-emoji-release.min.js fájltfájlok törléseGoogle Analytics paraméterei vannakWoocommerce tételei vannak a kosárbanhttp://wordpress.org/plugins/wp-fastest-cache/oldal / percwp-fastest-cache/languages/wp-fastest-cache-ja.mo000064400000025537151435171370015756 0ustar00Þ•—ÔŒ Œ  § ´ Æ 'Ê ò "û  * : G X e z Œ — § · à ã ü  / J i 2‚ 0µ æ þ  % . < .Z ‰ › ­ ¾ Ç ;Ö 1 .D s } „  ˜ ¤ ´ ¿ Ó á õ  A)k ~Š =¾ü  '3 DN Ub{•ž¡µÈÜï*=Pcx‹°Ã Ö á î ú!)=U [iow/ˆ.¸*ç .3bu ’ž§F° ÷  `(¨ ­» Ì Ú æñ9#9] —=¤&â% !/Q?p3°UäT: À.Þ ->Zr‹ ›E¥ëLûH[ xƒš2·êú $%J:c0ž-Ï*ý1(0Z'‹Q³QW s ޤ«3Ä?ø8T(sœ¥TÁ<@S ” ž¨ · ÄÒ è'õ6L`ex‹s› " / .K Vz Ñ ê ø  !! .! ;!H! a!!‚! ¤!±!´! Ã!Ð!ã!ó!""$"6"H"Z"i"{"Š"œ"®"À"Ï"Þ"í"'ÿ"!'#I#e#$u#š# ¡#«#=»#?ù#?9$y$E™$!ß$'%)%0%C%J%v]%Ô%ä%ë%ò%Š&:“& Î&Û&ø&' '*'I'Z'u'<|'E¹'"ÿ'Q"((t('(Å(=â(Q )Br)iµ)Z*!z*)œ*+Æ*2ò*%+E+SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below.The simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostUser RolesWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2024-12-13 14:12:14+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; X-Generator: GlotPress/4.0.1 Language: ja_JP Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) 設定新è¦ãƒ«ãƒ¼ãƒ«ã‚’追加高度ãªè¨­å®šã™ã¹ã¦ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ァイルãŒåŒæ§˜ã«å‰Šé™¤ã•れã¾ã™ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–å°‘ãªãã¨ã‚‚1ã¤ã®ã‚µã‚¤ãƒˆãƒžãƒƒãƒ—を追加ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™æ·»ä»˜ãƒ•ァイルブラウザ キャッシュCDN 設定キャッシュ 統計システム キャッシュキャッシュ タイムアウト ウィザードキャンセルカテゴリー1ã¤é¸ã¶æ–¹å¼ã‚’é¸æŠžã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除キャッシュを削除キャッシュã¨ç¸®å°ã—㟠CSS / JS をクリアã™ã‚‹ã™ã¹ã¦ã®ã‚µã‚¤ãƒˆã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除ホームページã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除ページé€ã‚Šã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除投稿/固定ページã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除投稿カテゴリーã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除投稿タグã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’削除投稿や固定ページを公開ã—ãŸæ™‚ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ァイルを削除投稿や固定ページを更新ã—ãŸæ™‚ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ•ァイルを削除特定ã®ãƒšãƒ¼ã‚¸ã‚’削除CSS ã‚’çµ±åˆJS ã‚’çµ±åˆJS ã‚’ã•らã«çµ±åˆå«ã‚€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„タイプモãƒã‚¤ãƒ«ç”¨ãƒ†ãƒ¼ãƒžã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’作æˆè‡ªå‹•çš„ã«ã‚µã‚¤ãƒˆã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’作æˆã™ã‚‹ã‚«ã‚¹ã‚¿ãƒ æŠ•稿タイプカスタムタクソノミーデータベース クリーンアップDelay JS絵文字を無効ã«ã™ã‚‹ãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—用ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’モãƒã‚¤ãƒ«ãƒ‡ãƒã‚¤ã‚¹ã«è¡¨ç¤ºã—ãªã„ログインユーザーã«ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’表示ã—ãªã„レンダリングブロックã™ã‚‹ JS ソースを除外ã™ã‚‹Emre Vona有効化Gzip を有効除外ã™ã‚‹CSS を除外クッキーを除外JS を除外ページウィザードを除外ã™ã‚‹å›ºå®šãƒšãƒ¼ã‚¸ã‚’除外User-Agents を除外Google フォントGzipホームページホームページREQUEST_URI ãŒã‚‚ã— CSS ファイルを編集ã—ãŸå ´åˆã€ç¸®å°ã—㟠CSS ファイルを削除ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“ç”»åƒã®æœ€é©åŒ–次ã¨åŒç­‰é…延読ã¿è¾¼ã¿ã®è¨­å®šGoogle フォントをéžåŒæœŸã§èª­ã¿è¾¼ã‚€ãƒ–ラウザã®ãƒ“ューãƒã‚¤ãƒ³ãƒˆã«å…¥ã£ãŸæ™‚ã€ç”»åƒã‚„ iframe を読ã¿è¾¼ã‚€ãƒ­ã‚°ã‚¤ãƒ³ãƒ¦ãƒ¼ã‚¶ãƒ¼CSS を縮å°CSS ã‚’ç¸®å° PlusHTML を縮å°HTML ã‚’ç¸®å° PlusJS を縮å°ãƒ¢ãƒã‚¤ãƒ«ãƒ¢ãƒã‚¤ãƒ«ç”¨ãƒ†ãƒ¼ãƒžã•らã«å¼·åŠ›ãª CSS ã®ç¸®å°ã•らã«å¼·åŠ›ãª HTML ã®ç¸®å°æ–°è¦æŠ•稿OK1分毎ã«1度10æ—¥ã«1度10時間毎ã«1度15日毎ã«1度15分毎ã«1度2時間毎ã«1度3日毎ã«1度3時間毎ã«1度4時間毎ã«1度5時間毎ã«1度5分毎ã«1度6時間毎ã«1度7日毎ã«1度7時間毎ã«1度8時間毎ã«1度9時間毎ã«1度1日毎ã«1度1ヶ月ã«1度1年毎ã«1度1時間毎ã«1度プレミアム版ã§ã®ã¿åˆ©ç”¨å¯èƒ½ã‚¤ãƒ¡ãƒ¼ã‚¸ãƒ„ールを最é©åŒ–設定をä¿å­˜ã—ã¾ã—ãŸå›ºå®šãƒšãƒ¼ã‚¸ã‚¢ãƒƒãƒ—デートã—ã¦ãã ã•ã„æŠ•ç¨¿å…ˆèª­ã¿å…ˆèª­ã¿è¨­å®šCSSファイルを統åˆã—ã¦HTTPリクエストを減らã™JS ファイルを統åˆã—㦠HTTP リクエストを減らã™ãƒªãƒ”ート訪å•者ã®ãƒšãƒ¼ã‚¸èª­ã¿è¾¼ã¿æ™‚間を減らã™SQL クエリー数を減らã™ã‚µãƒ¼ãƒãƒ¼ã‹ã‚‰é€ä¿¡ã•れるファイルã®ã‚µã‚¤ã‚ºã‚’減らã™ãƒ¬ãƒ³ãƒ€ãƒªãƒ³ã‚°ãƒ–ロック JS完了後ã«å…ˆèª­ã¿ã‚’å†ã‚¹ã‚¿ãƒ¼ãƒˆä¿å­˜ã‚µãƒ¼ãƒãƒ¼æ™‚刻設定サイトマップ一部㮠JS ソースã¯ã€ã‚¹ã‚¯ãƒ­ãƒ¼ãƒ«ã‚„マウスã®ç§»å‹•ãŒè¡Œã‚れるã¾ã§èª­ã¿è¾¼ã¾ã‚Œãªããªã‚Šã¾ã™æ¬¡ã§å§‹ã¾ã‚‹æˆåŠŸã‚¿ã‚°å¯¾è±¡ã®ãƒ•ォルダ管ç†ãƒ„ールãƒãƒ¼ã® WP Fastest Cache メニューã¯ã€ä»¥ä¸‹ã®é¸æŠžã•れãŸãƒ¦ãƒ¼ã‚¶ãƒ¼æ¨©é™ã‚°ãƒ«ãƒ¼ãƒ—ã«è¡¨ç¤ºã•れã¾ã™ã€‚最もシンプルã§é€Ÿã„ WP キャッシュシステム次をé©ç”¨ã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆ ルールツールãƒãƒ¼è¨­å®š1時間ã«2度投稿更新ユーザー権é™ã‚°ãƒ«ãƒ¼ãƒ—WP Fastest CacheWP Fastest Cache ã®è¨­å®šè­¦å‘Šæ–°ã—ã„æŠ•ç¨¿ã‚’å…¬é–‹å¾Œã«ã©ã®ã‚ˆã†ã«ã—ã¾ã™ã‹ï¼ŸæŠ•ç¨¿ã‚„å›ºå®šãƒšãƒ¼ã‚¸ã®æ›´æ–°å¾Œã«ã©ã®ã‚ˆã†ã«ã—ã¾ã™ã‹ï¼Ÿã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆ キャッシュã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€é«˜åº¦ãªè¨­å®šã‚’カスタマイズã§ãã¾ã™ã€‚CSS ファイルã®ã‚µã‚¤ã‚ºã‚’減らã™JS ファイルã®ã‚µã‚¤ã‚ºã‚’減らã™HTMLã®ã‚µã‚¤ã‚ºã‚’減らã™ã™ã¹ã¦ã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ ファイルを削除ã§ãã¾ã™çµµæ–‡å­—ã®ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ CSS ã‚„ wp-emoji-release.min.js を削除ã§ãã¾ã™å…ˆèª­ã¿ã«ä½¿ç”¨ã™ã‚‹ã‚µã‚¤ãƒˆãƒžãƒƒãƒ—を指定ã§ãã¾ã™ã€‚先読ã¿ã«ä½¿ç”¨ã™ã‚‹ã‚³ãƒ³ãƒ†ãƒ³ãƒ„を指定ã§ãã€ã•らã«ä¸¦ã¹æ›¿ãˆã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ã“ã®ã‚»ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€å…ˆèª­ã¿æ©Ÿèƒ½ã«ä½¿ç”¨ã™ã‚‹æ–¹å¼ã‚’指定ã§ãã¾ã™ã€‚ã“ã®ãƒ•ァイルを削除ã™ã‚‹Google Analytics パラメーターã‚りカート㫠Woocommerce アイテムã‚りhttps://ja.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/1分ã‚ãŸã‚Šãƒšãƒ¼ã‚¸æ•°wp-fastest-cache/languages/wp-fastest-cache-en_ZA.po000064400000036164151435171370016361 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in English (South Africa) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2021-02-02 07:22:35+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: en_ZA\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "" #: templates/preload.php:186 msgid "Advanced Settings" msgstr "" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "" #: templates/preload.php:150 msgid "Sitemaps" msgstr "" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "" #: templates/preload.php:86 msgid "Content Types" msgstr "" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "" #: templates/preload.php:72 msgid "Choose a Method" msgstr "" #: templates/preload.php:56 msgid "Preload Settings" msgstr "" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Save" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancel" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Tool bar Settings" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Clear Cache of All Sites" #: wpFastestCache.php:439 msgid "Settings" msgstr "Settings" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Clear Cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminate render-blocking JavaScript resources" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Options have been saved" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "has WooCommerce Items in Basket" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "has Google Analytics Parameters" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archives" #: templates/timeout.php:189 msgid "Server Time" msgstr "Server Time" #: templates/timeout.php:169 msgid "delete the files" msgstr "delete the files" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contains" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Is Equal To" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Starts With" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Home Page" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "All" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Exclude Page Wizard" #: templates/timeout.php:124 msgid "Then" msgstr "Then" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "If REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Cache Timeout Wizard" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Lazy Load Settings" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Enable Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Please Update" #: templates/update_success.php:9 msgid "Success" msgstr "Success" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Warning" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Add New Rule" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Only available in Premium version" #: templates/timeout.php:141 msgid "Choose One" msgstr "Choose One" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "All cache files will be removed as well" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "If you modify any CSS file, you have to delete minified CSS files" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Target folder" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "You can delete all cache files" #: inc/admin.php:1090 msgid "Exclude" msgstr "Exclude" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Image Optimisation" #: inc/admin.php:1082 msgid "Settings" msgstr "Settings" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Database Cleanup" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN Settings" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Exclude JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Exclude CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Exclude Cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Exclude User-Agents" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Exclude Pages" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Optimise Image Tool" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Timeout Rules" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Cache Statistics" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Clear Cache of Post / Page" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "What do you want to happen after update a post or a page?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Clear Cache of Pagination" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Clear Cache of Post Tags" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Clear Cache of Post Categories" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Clear All Cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "What do you want to happen after publishing the new post?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Restart After Completed" #: templates/preload.php:210 msgid "pages per minute" msgstr "pages per minute" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Custom Taxonomies" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Custom Post Types" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Attachments" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Tags" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Pages" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categories" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Posts" #: templates/preload.php:102 msgid "Homepage" msgstr "Homepage" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reduce HTTP requests through combined JS files" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Load images and iframes when they enter the browsers viewport" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Load Google Fonts asynchronously" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google Fonts" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Render Blocking JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "You can remove the emoji inline CSS and wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Disable Emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reduce page load times for repeat visitors" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Browser Caching" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reduce the size of files sent from your server" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine JS Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combine JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "You can decrease the size of JS files" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minify JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reduce HTTP requests through combined CSS files" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combine CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "More powerful minify CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify CSS Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "You can decrease the size of CSS files" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minify CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "More powerful minify HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "You can decrease the size of page" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minify HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Clear cache files when a post or page is updated" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Update Post" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Clear cache files when a post or page is published" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "New Post" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Create cache for mobile theme" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobile Theme" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Don't show the cached version for desktop to mobile devices" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobile" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Don't show the cached version for logged-in users" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Logged-in Users" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Create the cache of all the site automatically" #: inc/admin.php:1157 msgid "Preload" msgstr "Preload" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reduce the number of SQL queries" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget Cache" #: inc/admin.php:1119 msgid "Enable" msgstr "Enable" #: inc/admin.php:1118 msgid "Cache System" msgstr "Cache System" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Once Every 15 Days" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Once Every 7 Days" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Once Every 3 Days" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Once Every 10 Hours" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Once Every 9 Hours" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Once Every 8 Hours" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Once Every 7 Hours" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Once Every 5 Hours" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Once Every 4 Hours" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Once Every 3 Hours" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Once Every 2 Hours" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Once Every 10 Days" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "The simplest and fastest WP Cache system" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://en-za.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Once a Year" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Once a Month" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Once a Day" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Once Every 6 Hours" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Once an Hour" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Twice an Hour" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Once Every 15 Minutes" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Once Every 5 Minutes" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Once Every 1 Minute"wp-fastest-cache/languages/wp-fastest-cache-fr_FR.po000064400000042025151435171370016354 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in French (France) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2025-02-07 13:38:45+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: fr\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "Le menu WP Fastest Cache de la barre d’outils de l’administrateur sera visible pour les utilisateurs et utilisatrices sélectionnés ci-dessous." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Rôles des comptes" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Au moins un plan de site doit être ajouté" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Cette section vous permet de personnaliser les réglages avancés." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Réglages avancés" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Vous pouvez spécifier les plans de site à utiliser pour le préchargement." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Plans de site" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Vous pouvez spécifier le contenu à utiliser pour le préchargement et également le trier." #: templates/preload.php:86 msgid "Content Types" msgstr "Types de contenu" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Vous pouvez spécifier la méthode que vous souhaitez utiliser pour la fonctionnalité de préchargement dans cette section." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Choisir une méthode" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Réglages des préchargements" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "" "Certaines sources JS ne seront pas chargées tant que le défilement \n" "ou le déplacement de la souris n’aura pas eu lieu." #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Temporisation JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Options de WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "possède des paramètres Yandex Click ID" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Vider le cache de certaines pages" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Enregistrer" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Annuler" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Réglages de la barre d’outils" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vider le cache de tous les sites" #: wpFastestCache.php:439 msgid "Settings" msgstr "Réglages" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Vider le cache" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Élimine les ressources JavaScript bloquant le rendu (Premium)" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Les options ont été enregistrées" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "a des articles WooCommerce dans le panier" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "a des paramètres Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archives" #: templates/timeout.php:189 msgid "Server Time" msgstr "Heure du serveur" #: templates/timeout.php:169 msgid "delete the files" msgstr "supprimer les fichiers" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contient" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Est égal à" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Commence par" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Page d’accueil" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Tous" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Assistant d’exclusion de page" #: templates/timeout.php:124 msgid "Then" msgstr "Alors" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Assistant d’expiration du cache" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Réglages pour le chargement différé" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activer Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Veuillez mettre à jour" #: templates/update_success.php:9 msgid "Success" msgstr "Succès" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Avertissement" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Ajouter une nouvelle règle" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Vider le cache et les CSS/JS minifiés" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Disponible uniquement avec la version Premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Choisissez-en un" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Tous les fichiers de cache seront également supprimés" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si vous modifiez un fichier CSS, vous devez supprimer les fichiers CSS minifiés" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Dossier cible" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Vide tous les fichiers cache" #: inc/admin.php:1090 msgid "Exclude" msgstr "Exclure" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimisation d’images" #: inc/admin.php:1082 msgid "Settings" msgstr "Réglages" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Nettoyage de la base de données" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Réglages CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Exclure les JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Exclure les CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Exclure les cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Exclure les agents utilisateurs" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Exclure les pages" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Outil optimisation d’image" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Règles de délai d’expiration" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Statistiques de cache" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vider le cache d’article/page" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Que voulez-vous qu’il se passe après la mise à jour d’une publication ou d’une page ?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vider le cache de pagination" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vider le cache des étiquettes de publication" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vider le cache des catégories de publication" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Vider le cache de la page d’accueil" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Nettoyer tout le cache" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Que voulez-vous qu’il se passe après la mise en ligne d’une nouvelle publication ?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "OK" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Redémarrer une fois terminé" #: templates/preload.php:210 msgid "pages per minute" msgstr "pages par minute" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomies personnalisées" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Types de publications personnalisés" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Fichiers joints" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Étiquettes" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Pages" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Catégories" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Publications" #: templates/preload.php:102 msgid "Homepage" msgstr "Page d’accueil " #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Réduit les requêtes HTTP grâce aux fichiers JS combinés" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Charge les images et les iframes quand ils entrent dans la fenêtre du navigateur (Premium)" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Charge les polices Google de façon asynchrone (Premium)" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Polices Google " #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Blocage de rendu JS " #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Retire les émojis CSS en ligne et wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Désactiver les émojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Réduit les temps de chargement des pages pour les visiteurs réguliers" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Cache navigateur" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Réduit la taille des fichiers envoyés depuis votre serveur" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combiner le JS Plus " #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combiner le JS " #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Diminue la taille des fichiers JS (Premium)" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minifier le JS " #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Réduit les requêtes HTTP grâce aux fichiers CSS combinés" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combiner le CSS " #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Minification CSS plus puissante (Premium)" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minifier le CSS Plus " #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Diminue la taille des fichiers CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minifier le CSS " #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Minification HTML plus puissante (Premium)" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minifier le HTML Plus " #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Diminue la taille de la page" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minifier le HTML " #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vide les fichiers de cache lors de la mise à jour d’un article ou d’une page" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Màj de publication" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vide les fichiers de cache lors de la publication d’un article ou d’une page" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nouvelle publication" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crée un cache pour le thème mobile (Premium)" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Thème mobile " #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "N’affiche pas la version mise en cache pour les ordinateurs sur les mobiles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobile" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "N’affiche pas la version mise en cache pour les utilisateurs connectés" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Utilisateurs connectés " #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crée automatiquement le cache pour tout le site" #: inc/admin.php:1157 msgid "Preload" msgstr "Préchargement " #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Réduit le nombre de requêtes SQL (Premium)" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Cache de widget " #: inc/admin.php:1119 msgid "Enable" msgstr "Actif" #: inc/admin.php:1118 msgid "Cache System" msgstr "Système de cache" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Tous les 15 jours" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Tous les 7 jours" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Tous les 3 jours" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Toutes les 10 heures" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Toutes les 9 heures" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Toutes les 8 heures" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Toutes les 7 heures" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Toutes les 5 heures" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Toutes les 4 heures" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Toutes les 3 heures" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Toutes les 2 heures" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Tous les 10 jours" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "Le plus simple et le plus rapide des systèmes de cache pour WordPress" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Une fois par an" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Une fois par mois" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Une fois par jour" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Toutes les 6 heures" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Toutes les heures" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Deux fois par heure" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Toutes les 15 minutes" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Toutes les 5 minutes" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Toutes les minutes"wp-fastest-cache/languages/wp-fastest-cache-es_CL.mo000064400000024470151435171370016344 0ustar00Þ•–Ì| | } — ¤ ¶ 'º â "ë   * 7 H U j q | ‡ — § ³ Ó ì   : Y 2r 0¥ Ö î ú    , .J y ‹  ® · ;Æ 1 .4 c m t € ˆ ” ¤ ¯ à Ñ å ò ÷  A[ nz =®ì ü # 4> ERk…Ž‘¥¸Ìßõ-@Sh{ ³ Æ Ñ Þ ê!÷-E KY_g/x.¨*× .#Re} ‚Ž—F  çóû (7 <J [ iu†Ÿ9§9á =(&f%!³Õ?ô34UhT¾$Db.°Ð á3E7J‚)‹µ¾Óå)< E Q[j€#‘$µ(Ú'#+K)wH¡Jê5 R _k{„*—1 ô0 MXNn<½:ú 5? GT \h xƒ£´Ïáæø Rl ‡’0®Tß4 HVfu †“š­Ì ìú  . D Z r ‡ œ ± Æ Û ò !!1!F![!k!z!Š!&›!)Â!ì! ""*" 3"="<Q"<Ž"HË"##;8#t# #°#¸#Ê#Ò#]â# @$M$ V$`$)s$$¦$#¸$Ü$ï$%% 3%@?%K€%Ì%EÝ%-#&,Q&'~&-¦&TÔ&K)'_u'iÕ'?(%S(-y()§(2Ñ()$)SettingsAdd New RuleAdvanced SettingsAllAll cache files will be removed as wellArchivesAt least one sitemap must be addedAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneChoose a MethodClear All CacheClear CacheClear Cache and Minified CSS/JSClear Cache of All SitesClear Cache of Home pageClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedClearing Specific PagesCombine CssCombine JsCombine Js PlusContainsContent TypesCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDelay JsDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadPreload SettingsReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsSitemapsSome js sources will not be loaded until scrolling or moving the mouseStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWP Fastest Cache OptionsWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can customize the advanced settings through this section.You can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsYou can specify sitemaps to be used for preloading.You can specify the contents to be used for preloading and you can sort them as well.You can specify the method you want the preload feature to use through this section.delete the fileshas Google Analytics Parametershas Woocommerce Items in Carthas Yandex Click ID Parametershttp://wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/pages per minutePO-Revision-Date: 2025-02-14 17:49:47+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es_CL Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAgregar una nueva reglaAjustes avanzadosTodoTambién se eliminarán todos los archivos de la cachéArchivosDebe agregarse al menos un mapa del sitioAdjuntosCaché del navegadorAjustes de la CDNEstadísticas de la cachéSistema de cachéAsistente del tiempo límite de la cachéCancelarCategoríasElige unoElegir métodoVaciar toda la cachéVaciar la cachéBorrar la caché y minimizar CSS/JSVaciar la caché de todos los sitiosVaciar la caché de la página de inicioVaciar la caché de paginaciónVaciar la caché de entradas / páginasVaciar la caché de categorías de entradasVaciar la caché de etiquetas de entradasVaciar los archivos de la caché cuando se publica una entrada o páginaVaciar los archivos de la caché cuando se actualiza una entrada o páginaVaciar páginas específicasCombinar CSSCombinar JSCombine Js PlusContieneTipos de contenidoCrear la caché para el tema para móvilesCrear automáticamente la caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosAplazar JsDesactivar los emojisNo mostrar la versión de escritorio de la caché en los dispositivos móvilesNo mostrar la versión de la caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada 1 minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez por horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarAjustes de precargaReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesMapas del sitioAlgunos orígenes de js no se cargarán hasta que se haga desplazamiento o se mueva el ratónComienza conCorrectoEtiquetasCarpeta de destinoEl sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces por horaActualizar la entradaWP Fastest CacheOpciones de WP Fastest CacheAdvertencia¿Qué quieres que ocurra después de publicar la nueva entrada?¿Qué quieres que ocurra después de actualizar una entrada o una página?Widget de cachéPuedes personalizar los ajustes avanzados a través de esta sección.Puedes reducir el tamaño de los archivos CSSPuedes reducir el tamaño de los archivos JSPuedes reducir el tamaño de la páginaPuedes borrar todos los archivos de la cachéPuedes eliminar los emojis CSS integrados y el archivo “wp-emoji-release.min.jsâ€Puedes especificar los mapas del sitio que se utilizarán para la precarga.Puedes especificar el contenido que se utilizará para la precarga y también puedes ordenarlo.Puedes especificar el método que quieres que utilice la función de precarga a través de esta sección.borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritotiene parámetros de ID de clic de Yandexhttps://cl.wordpress.org/plugins/wp-fastest-cache/https://www.wpfastestcache.com/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-sl_SI.po000064400000040413151435171370016366 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Slovenian # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2023-12-18 14:05:59+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n % 100 == 1) ? 0 : ((n % 100 == 2) ? 1 : ((n % 100 == 3 || n % 100 == 4) ? 2 : 3));\n" "X-Generator: GlotPress/4.0.1\n" "Language: sl_SI\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "" #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Vsaj en sitemap mora biti dodan" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "V tem razdelku lahko prilagodite napredne nastavitve." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Napredne Nastavitve" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "DoloÄite lahko zemljevide spletnih mest, ki se bodo uporabljali za prednalaganje." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Zemljevidi spletnih mest" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Zemljevidi spletnih mest" #: templates/preload.php:86 msgid "Content Types" msgstr "Vrste vsebine" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "V tem razdelku lahko doloÄite metodo, ki jo želite uporabiti za funkcijo prednalaganja." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Izberite metodo" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Nastavitve prednalaganja" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Nekateri viri JS se ne bodo naložili, dokler se ne pomaknete ali premaknete miÅ¡ke" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Zakasnitev JS" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Možnosti za WP Fastet Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "ima Yandex Click ID parametre" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "ÄŒiÅ¡Äenje doloÄenih strani" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Shrani" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Prekini" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Nastavitve orodne vrstice" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "PoÄisti predpomnilnik za vse strani" #: wpFastestCache.php:439 msgid "Settings" msgstr "Nastavitve" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "PoÄisti medpomnilnik" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Odpravi Java-Script vire, ki ovirajo izrisovanje" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Nastavitve so shranjene" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "ima Woocommerce artikle na seznamu" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "ima Google Analytics parametre" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Arhivi" #: templates/timeout.php:189 msgid "Server Time" msgstr "ÄŒas strežnika" #: templates/timeout.php:169 msgid "delete the files" msgstr "izbriÅ¡i datoteke" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Vsebuje" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Je enak kot" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Se zaÄne s/z" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "DomaÄa stran" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Vse" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "ÄŒarovnik za izloÄanje strani" #: templates/timeout.php:124 msgid "Then" msgstr "Potem" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "ÄŒe REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "ÄŒParovnik za Äasovni potek predpomnilnika" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Nastavitve za lenobno nalaganje" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "OmogoÄi Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Prosimo, posodobite" #: templates/update_success.php:9 msgid "Success" msgstr "Je bilo uspeÅ¡no" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Opozorilo" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Dodaj novo pravilo" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Na voljo le v premium razliÄici" #: templates/timeout.php:141 msgid "Choose One" msgstr "Izberite eno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "Odstranjene bodo tudi vse datoteke predpomnilnika" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Ob spremembi katerekoli css datoteke je potrebno izbrisati pomanjÅ¡ane css datoteke" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Ciljna mapa" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Lahko izbriÅ¡ete vse datoteke predpomnilnika" #: inc/admin.php:1090 msgid "Exclude" msgstr "IzloÄi" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimizacija slik" #: inc/admin.php:1082 msgid "Settings" msgstr "Nastavitve" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "OÄiÅ¡Äenje podatkovne baze" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "CDN nastavitve" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "IzloÄi JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "IzloÄii CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "IzloÄi piÅ¡kotke" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "IzloÄi uporabniÅ¡ke agente" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "IzloÄi strani" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Orodje za optimizacijo slik" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Pravila za potek Äasa" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Statistka predpomnilnika" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "PoÄisti predpomnilnik prispevka / strani" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "Kaj naj se zgodi po posodobitvi prispevka ali strani?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "PoÄisti predpomnilnik Å¡tevilÄenja strani" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "PoÄisti predpomnilnik oznak strani" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "PoÄisti predpomnilnik kategorij prispevkov" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "PoÄisti celoten predpomnilnik" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "Kaj naj se zgodi po objavi novega prispevka?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "V redu" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Ko konÄasÅ¡ ponovno zaženi" #: templates/preload.php:210 msgid "pages per minute" msgstr "strani na minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taksonomije po meri" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Vrste prispevkov po meri" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Priponke" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Oznake" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Strani" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Kategorije" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Prispevki" #: templates/preload.php:102 msgid "Homepage" msgstr "DomaÄa stran" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "ZmanjÅ¡aj HTTP zahtevke s pomoÄjo kombiniranih js datotek" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Naloži slike in iframe okvireje, ko se pojavijo v vidnem delu brskalnika" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Asinhrono nalaganje Google pisav" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Google pisave" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Js, ki ovira izrisovanje" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Lahko izbriÅ¡ete medvrstiÄni css Äustvenih simbolov in wp-emoji-release.min.js" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "OnemogoÄi Äustvene simbole" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "ZmanjÅ¡aj Äas nalaganja za ponovne obiskovalce" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Predpomnilnik brskalnika" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "ZmanjÅ¡aj velikost datotek, ki jih poÅ¡lje strežnik" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Kombiniraj Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Kombiniraj Js" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Lahko zmanjÅ¡ate velilkost js datotek" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "ZmanjÅ¡aj Js" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Lahko zmanjÅ¡ate Å¡tevilo HTTP zahtevkov s pomoÄjo kombiniranih css datotek" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Kombiniraj Css" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Bolj zmogljiva css pomanjÅ¡ava" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "ZmanjÅ¡aj Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Lahko zmanjÅ¡ate velikost css datotek" #: inc/admin.php:1270 msgid "Minify Css" msgstr "ZmanjÅ¡aj Css" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Bolj zmogljiva pomanjÅ¡ava html" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "ZmanjÅ¡aj HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Lahko zmanjÅ¡ate velikost strani" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "ZmanjÅ¡aj HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "IzbriÅ¡i datoteke predpomnilnika, ko sta prispevek ali stran posodobljena" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Posodobi prispevek" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "IzbriÅ¡i datoteke predpomnilnika, ko sta prispevek ali stran objavljena" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nov prispevek" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Ustvari predpomnilnik za mobilno temo" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Mobilna tema" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Ne prikaži prepomnjene namizne razliÄice na mobilnih napravah" #: inc/admin.php:1195 msgid "Mobile" msgstr "Mobilno" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "Ne prikaži prepomnjene razliÄice za prijavljene uporabnike" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Prijavljeni uporabniki" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Samodejno ustvari prepomnilnik vseh strani" #: inc/admin.php:1157 msgid "Preload" msgstr "Prednalaganje" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "ZmanjÅ¡aj Å¡tevilo SQL poizvedb" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Predpomnilnik gradnikov" #: inc/admin.php:1119 msgid "Enable" msgstr "OmogoÄi" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistemski predpomnilnik" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Na vsake 15 dni" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Na vsake 7 dni" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Na vsake 3 dni" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Na vsakh 10 ur" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Na vsakih 9 ur" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Na vsakih 8 ur" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Na vsakih 7 ur" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Na vsakih 5 ur" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Na vsake 4 ure" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Na vsake 3 ure" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Na vsaki 2 uri" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Enkrat na 10 dni" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "NajenostavnejÅ¡i in najhitrejÅ¡i predpomnilniÅ¡ki sistem za WP" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Enkrat na leto" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Enkrat na mesec" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Enkrat na dan" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Na vsakih 6 ur" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Na vsako uro" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dvakrat na uro" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Na vsakih 15 minut" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Na vsakih 5 minut" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Na vsako minuto"wp-fastest-cache/languages/wp-fastest-cache-pt_BR.po000064400000036624151435171370016374 0ustar00# Copyright (C) 2019 WP Fastest Cache # This file is distributed under the same license as the WP Fastest Cache package. msgid "" msgstr "" "Project-Id-Version: WP Fastest Cache 0.8.9.7\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fastest-" "cache\n" "POT-Creation-Date: 2019-09-09 20:43:14+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2019-09-19 17:03-0300\n" "Language-Team: \n" "X-Generator: Poedit 2.2.3\n" "Last-Translator: \n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "Language: pt_BR\n" #: inc/admin.php:429 inc/admin.php:432 msgid "Options have been saved" msgstr "As opções foram salvas" #: inc/admin.php:987 msgid "Settings" msgstr "Configurações" #: inc/admin.php:988 inc/admin.php:1458 inc/admin.php:1463 msgid "Delete Cache" msgstr "Excluir cache" #: inc/admin.php:990 msgid "Image Optimization" msgstr "Otimização de imagem" #: inc/admin.php:992 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1020 msgid "Cache System" msgstr "Sistema de cache" #: inc/admin.php:1021 msgid "Enable" msgstr "Ativar" #: inc/admin.php:1046 inc/admin.php:1052 inc/admin.php:1059 inc/admin.php:1066 msgid "Widget Cache" msgstr "Cache de widget" #: inc/admin.php:1047 inc/admin.php:1053 inc/admin.php:1060 inc/admin.php:1067 msgid "Reduce the number of SQL queries" msgstr "Reduzir o número de consultas SQL" #: inc/admin.php:1075 templates/preload.php:20 msgid "Preload" msgstr "Pré-carregamento" #: inc/admin.php:1076 msgid "Create the cache of all the site automatically" msgstr "Criar o cache de todo o site automaticamente" #: inc/admin.php:1085 msgid "Logged-in Users" msgstr "Usuários logados" #: inc/admin.php:1086 msgid "Don't show the cached version for logged-in users" msgstr "Não mostrar a versão em cache para usuários logados" #: inc/admin.php:1090 msgid "Mobile" msgstr "Celular" #: inc/admin.php:1091 msgid "Don't show the cached version for desktop to mobile devices" msgstr "Não mostrar a versão em cache para desktop em dispositivos móveis" #: inc/admin.php:1096 inc/admin.php:1122 msgid "Mobile Theme" msgstr "Tema do celular" #: inc/admin.php:1097 inc/admin.php:1123 msgid "Create cache for mobile theme" msgstr "Criar cache para o tema do celular" #: inc/admin.php:1129 templates/newpost.php:18 msgid "New Post" msgstr "Novo post" #: inc/admin.php:1130 msgid "Clear cache files when a post or page is published" msgstr "Limpar arquivos de cache quando um post ou página for publicada" #: inc/admin.php:1136 templates/updatepost.php:18 msgid "Update Post" msgstr "Atualizar post" #: inc/admin.php:1137 msgid "Clear cache files when a post or page is updated" msgstr "Limpar arquivos de cache quando um post ou página for atualizada" #: inc/admin.php:1145 msgid "Minify HTML" msgstr "Minificar HTML" #: inc/admin.php:1146 msgid "You can decrease the size of page" msgstr "Você pode diminuir o tamanho da página" #: inc/admin.php:1152 inc/admin.php:1157 msgid "Minify HTML Plus" msgstr "Minificar HTML Plus" #: inc/admin.php:1153 inc/admin.php:1158 msgid "More powerful minify html" msgstr "Mais poderoso minificador HTML" #: inc/admin.php:1165 msgid "Minify Css" msgstr "Minificar Css" #: inc/admin.php:1166 msgid "You can decrease the size of css files" msgstr "Você pode diminuir o tamanho dos arquivos css" #: inc/admin.php:1174 inc/admin.php:1179 msgid "Minify Css Plus" msgstr "Minificar Css Plus" #: inc/admin.php:1175 inc/admin.php:1180 msgid "More powerful minify css" msgstr "Mais poderoso minificador css" #: inc/admin.php:1186 msgid "Combine Css" msgstr "Combinar Css" #: inc/admin.php:1187 msgid "Reduce HTTP requests through combined css files" msgstr "Reduza solicitações HTTP por meio de arquivos css combinados" #: inc/admin.php:1194 inc/admin.php:1199 inc/admin.php:1205 msgid "Minify Js" msgstr "Minificar Js" #: inc/admin.php:1195 inc/admin.php:1200 inc/admin.php:1206 msgid "You can decrease the size of js files" msgstr "Você pode diminuir o tamanho dos arquivos js" #: inc/admin.php:1211 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1212 inc/admin.php:1220 inc/admin.php:1226 inc/admin.php:1232 msgid "Reduce HTTP requests through combined js files" msgstr "Reduza solicitações HTTP por meio de arquivos js combinados" #: inc/admin.php:1218 inc/admin.php:1225 inc/admin.php:1231 msgid "Combine Js Plus" msgstr "Combinar Js Plus" #: inc/admin.php:1237 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1238 msgid "Reduce the size of files sent from your server" msgstr "Reduza o tamanho dos arquivos enviados do seu servidor" #: inc/admin.php:1249 msgid "Browser Caching" msgstr "Cache do navegador" #: inc/admin.php:1250 msgid "Reduce page load times for repeat visitors" msgstr "" "Reduza os tempos de carregamento de página para os visitantes que " "retornaram ao site" #: inc/admin.php:1255 msgid "Disable Emojis" msgstr "Desativar Emojis" #: inc/admin.php:1256 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Você pode remover o emoji inline css e wp-emoji-release.min.js" #: inc/admin.php:1264 inc/admin.php:1270 inc/admin.php:1277 msgid "Render Blocking Js" msgstr "Bloqueio de renderização Js" #: inc/admin.php:1265 inc/admin.php:1271 inc/admin.php:1278 msgid "Remove render-blocking JavaScript" msgstr "Remover javaScript de bloqueio de renderização" #: inc/admin.php:1290 inc/admin.php:1296 inc/admin.php:1303 msgid "Google Fonts" msgstr "Fontes do Google" #: inc/admin.php:1291 inc/admin.php:1297 inc/admin.php:1304 msgid "Load Google Fonts asynchronously" msgstr "Carregar fontes do Google de forma assíncrona" #: inc/admin.php:1314 inc/admin.php:1333 inc/admin.php:1340 msgid "Lazy Load" msgstr "Carregamento lento" #: inc/admin.php:1320 inc/admin.php:1334 inc/admin.php:1341 msgid "Load images and iframes when they enter the browsers viewport" msgstr "" "Carregar imagens e iframes quando eles entrarem na viewport dos navegadores" #: inc/admin.php:1411 inc/admin.php:2039 inc/admin.php:2260 msgid "Only available in Premium version" msgstr "Disponível apenas na versão premium" #: inc/admin.php:1418 msgid "Cache Statistics" msgstr "Estatísticas de cache" #: inc/admin.php:1467 msgid "You can delete all cache files" msgstr "Você pode excluir todos os arquivos de cache" #: inc/admin.php:1468 inc/admin.php:1482 inc/admin.php:1483 msgid "Target folder" msgstr "Diretório de destino" #: inc/admin.php:1476 msgid "Delete Cache and Minified CSS/JS" msgstr "Excluir cache e arquivos minificados CSS/JS" #: inc/admin.php:1480 msgid "If you modify any css file, you have to delete minified css files" msgstr "" "Se você modificar qualquer arquivo css, você precisará apagar os arquivos " "css minificados" #: inc/admin.php:1481 msgid "All cache files will be removed as well" msgstr "Todos os arquivos de cache serão removidos também" #: inc/admin.php:1497 msgid "Timeout Rules" msgstr "Regras de limite de tempo" #: inc/admin.php:1504 templates/timeout.php:95 msgid "All" msgstr "Tudo" #: inc/admin.php:1505 inc/admin.php:1773 templates/exclude.php:93 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página inicial" #: inc/admin.php:1506 inc/admin.php:1780 templates/exclude.php:102 #: templates/timeout.php:97 msgid "Starts With" msgstr "Começa com" #: inc/admin.php:1507 inc/admin.php:1781 templates/exclude.php:103 #: templates/timeout.php:99 msgid "Contains" msgstr "Contém" #: inc/admin.php:1508 inc/admin.php:1782 templates/exclude.php:104 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "É igual a" #: inc/admin.php:1540 inc/admin.php:1805 inc/admin.php:1822 inc/admin.php:1841 #: inc/admin.php:1859 inc/admin.php:1879 msgid "Add New Rule" msgstr "Adicionar nova regra" #: inc/admin.php:1614 msgid "Optimize Image Tool" msgstr "Ferramenta de otimização de imagem" #: inc/admin.php:1638 msgid "Discover Features" msgstr "Descubra os recursos" #: inc/admin.php:1641 msgid "" "In the premium version there are some new features which speed up the sites " "more." msgstr "" "Na versão premium existem alguns recursos novos que aceleram mais os sites." #: inc/admin.php:1647 msgid "New Features" msgstr "Novos recursos" #: inc/admin.php:1661 msgid "Checkout" msgstr "Finalizar compra" #: inc/admin.php:1664 msgid "You need to pay before downloading the premium version." msgstr "Você precisa pagar antes de fazer download da versão premium." #: inc/admin.php:1678 msgid "Just" msgstr "Apenas" #: inc/admin.php:1679 msgid "" "The download button will be available after paid. You can buy the premium " "version now." msgstr "" "O botão de download estará disponível após o pagamento. Você pode comprar a " "versão premium agora." #: inc/admin.php:1684 msgid "Purchased" msgstr "Comprado" #: inc/admin.php:1699 msgid "Buy" msgstr "Comprar" #: inc/admin.php:1712 msgid "Download & Update" msgstr "Download & atualização" #: inc/admin.php:1715 msgid "You can download and update the premium when you want if you paid." msgstr "" "Você pode fazer download e atualizar para premium quando quiser, se você já " "pagou." #: inc/admin.php:1721 msgid "Get It Now!" msgstr "Obter agora!" #: inc/admin.php:1722 msgid "" "Please don't delete the free version. Premium version works with the free " "version." msgstr "" "Por favor, não exclua a versão gratuita. A versão premium funciona junto " "com a versão gratuita." #: inc/admin.php:1728 msgid "Update" msgstr "Atualizar" #: inc/admin.php:1733 msgid "Download" msgstr "Download" #: inc/admin.php:1774 templates/exclude.php:94 templates/preload.php:41 msgid "Categories" msgstr "Categorias" #: inc/admin.php:1775 templates/exclude.php:95 templates/preload.php:49 msgid "Tags" msgstr "Tags" #: inc/admin.php:1776 templates/exclude.php:99 msgid "Archives" msgstr "Arquivos" #: inc/admin.php:1777 templates/exclude.php:96 templates/preload.php:37 msgid "Posts" msgstr "Posts" #: inc/admin.php:1778 templates/exclude.php:97 templates/preload.php:45 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1779 templates/exclude.php:101 templates/preload.php:53 msgid "Attachments" msgstr "Anexos" #: inc/admin.php:1783 templates/exclude.php:105 msgid "has Google Analytics Parameters" msgstr "tem parâmetros do Google Analytics" #: inc/admin.php:1784 templates/exclude.php:106 msgid "has Woocommerce Items in Cart" msgstr "tem itens WooCommerce no carrinho" #: inc/admin.php:1801 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1818 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuário" #: inc/admin.php:1837 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1855 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:1875 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:1912 msgid "CDN Settings" msgstr "Configurações de CDN" #: inc/admin.php:2024 msgid "Database Cleanup" msgstr "Limpeza do banco de dados" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Aviso" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Assistente para excluir página" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Se REQUEST_URI" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Configurações de carregamento lento" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "O que você quer que aconteça depois de publicar um novo post?" #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Limpar todo o cache" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Homepage" msgstr "Limpar cache da página inicial" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Limpar cache de categorias do post" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Limpar cache de tags do post" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Limpar cache de paginação" #: templates/newpost.php:68 templates/preload.php:102 #: templates/updatepost.php:64 msgid "OK" msgstr "Ok" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Ativar o gzip" #: templates/preload.php:33 msgid "Homepage" msgstr "Página inicial" #: templates/preload.php:58 msgid "Custom Post Types" msgstr "Tipos personalizados de post" #: templates/preload.php:63 msgid "Custom Taxonomies" msgstr "Taxonomias personalizadas" #: templates/preload.php:87 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:92 msgid "Restart After Completed" msgstr "Reiniciar depois de concluído" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Assistente de tempo limite do cache" #: templates/timeout.php:124 msgid "Then" msgstr "Então" #: templates/timeout.php:137 msgid "Choose One" msgstr "Escolha um" #: templates/timeout.php:165 msgid "delete the files" msgstr "excluir os arquivos" #: templates/timeout.php:185 msgid "Server Time" msgstr "Horário do servidor" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, atualize" #: templates/update_success.php:9 msgid "Success" msgstr "Sucesso" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "O que deseja que aconteça após atualizar um post ou página?" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Limpar cache de post / página" #: wpFastestCache.php:1462 msgid "Once Every 1 Minute" msgstr "A cada 1 minuto" #: wpFastestCache.php:1468 msgid "Once Every 5 Minutes" msgstr "A cada 5 minutos" #: wpFastestCache.php:1474 msgid "Once Every 15 Minutes" msgstr "A cada 15 minutos" #: wpFastestCache.php:1480 msgid "Twice an Hour" msgstr "A cada meia hora" #: wpFastestCache.php:1486 msgid "Once an Hour" msgstr "A cada 1h" #: wpFastestCache.php:1492 msgid "Once Every 2 Hours" msgstr "A cada 2h" #: wpFastestCache.php:1498 msgid "Once Every 3 Hours" msgstr "A cada 3h" #: wpFastestCache.php:1504 msgid "Once Every 4 Hours" msgstr "A cada 4h" #: wpFastestCache.php:1510 msgid "Once Every 5 Hours" msgstr "A cada 5h" #: wpFastestCache.php:1516 msgid "Once Every 6 Hours" msgstr "A cada 6h" #: wpFastestCache.php:1522 msgid "Once Every 7 Hours" msgstr "A cada 7h" #: wpFastestCache.php:1528 msgid "Once Every 8 Hours" msgstr "A cada 8h" #: wpFastestCache.php:1534 msgid "Once Every 9 Hours" msgstr "A cada 9h" #: wpFastestCache.php:1540 msgid "Once Every 10 Hours" msgstr "A cada 10h" #: wpFastestCache.php:1546 msgid "Once a Day" msgstr "Uma vez por dia" #: wpFastestCache.php:1552 msgid "Once Every 3 Days" msgstr "Uma vez a cada 3 dias" #: wpFastestCache.php:1558 msgid "Once Every 7 Days" msgstr "Uma vez a cada 7 dias" #: wpFastestCache.php:1564 msgid "Once Every 10 Days" msgstr "Uma vez a cada 10 dias" #: wpFastestCache.php:1570 msgid "Once Every 15 Days" msgstr "Uma vez a cada 15 dias" #: wpFastestCache.php:1576 msgid "Once a Month" msgstr "Uma vez por mês" #: wpFastestCache.php:1582 msgid "Once a Year" msgstr "Uma vez por ano" #. Plugin Name of the plugin/theme msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #. Plugin URI of the plugin/theme msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "http://wordpress.org/plugins/wp-fastest-cache/" #. Description of the plugin/theme msgid "The simplest and fastest WP Cache system" msgstr "O sistema mais simples e rápido sistema de cache para WordPress" #. Author of the plugin/theme msgid "Emre Vona" msgstr "Emre Vona" #. Author URI of the plugin/theme msgid "http://tr.linkedin.com/in/emrevona" msgstr "http://tr.linkedin.com/in/emrevona" wp-fastest-cache/languages/wp-fastest-cache.pot000064400000027314151435171370015550 0ustar00# Copyright (C) 2019 WP Fastest Cache # This file is distributed under the same license as the WP Fastest Cache package. msgid "" msgstr "" "Project-Id-Version: WP Fastest Cache 0.8.9.8\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/wp-fastest-cache\n" "POT-Creation-Date: 2019-10-05 12:57:35+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" #: inc/admin-toolbar.php:69 inc/admin.php:988 inc/admin.php:1458 #: inc/admin.php:1463 msgid "Delete Cache" msgstr "" #: inc/admin-toolbar.php:74 templates/newpost.php:51 #: templates/updatepost.php:49 msgid "Clear All Cache" msgstr "" #: inc/admin-toolbar.php:81 inc/admin.php:1476 msgid "Delete Cache and Minified CSS/JS" msgstr "" #: inc/admin.php:429 inc/admin.php:432 msgid "Options have been saved" msgstr "" #: inc/admin.php:987 msgid "Settings" msgstr "" #: inc/admin.php:990 msgid "Image Optimization" msgstr "" #: inc/admin.php:992 msgid "Exclude" msgstr "" #: inc/admin.php:1020 msgid "Cache System" msgstr "" #: inc/admin.php:1021 msgid "Enable" msgstr "" #: inc/admin.php:1046 inc/admin.php:1052 inc/admin.php:1059 inc/admin.php:1066 msgid "Widget Cache" msgstr "" #: inc/admin.php:1047 inc/admin.php:1053 inc/admin.php:1060 inc/admin.php:1067 msgid "Reduce the number of SQL queries" msgstr "" #: inc/admin.php:1075 templates/preload.php:20 msgid "Preload" msgstr "" #: inc/admin.php:1076 msgid "Create the cache of all the site automatically" msgstr "" #: inc/admin.php:1085 msgid "Logged-in Users" msgstr "" #: inc/admin.php:1086 msgid "Don't show the cached version for logged-in users" msgstr "" #: inc/admin.php:1090 msgid "Mobile" msgstr "" #: inc/admin.php:1091 msgid "Don't show the cached version for desktop to mobile devices" msgstr "" #: inc/admin.php:1096 inc/admin.php:1122 msgid "Mobile Theme" msgstr "" #: inc/admin.php:1097 inc/admin.php:1123 msgid "Create cache for mobile theme" msgstr "" #: inc/admin.php:1129 templates/newpost.php:18 msgid "New Post" msgstr "" #: inc/admin.php:1130 msgid "Clear cache files when a post or page is published" msgstr "" #: inc/admin.php:1136 templates/updatepost.php:18 msgid "Update Post" msgstr "" #: inc/admin.php:1137 msgid "Clear cache files when a post or page is updated" msgstr "" #: inc/admin.php:1145 msgid "Minify HTML" msgstr "" #: inc/admin.php:1146 msgid "You can decrease the size of page" msgstr "" #: inc/admin.php:1152 inc/admin.php:1157 msgid "Minify HTML Plus" msgstr "" #: inc/admin.php:1153 inc/admin.php:1158 msgid "More powerful minify html" msgstr "" #: inc/admin.php:1165 msgid "Minify Css" msgstr "" #: inc/admin.php:1166 msgid "You can decrease the size of css files" msgstr "" #: inc/admin.php:1174 inc/admin.php:1179 msgid "Minify Css Plus" msgstr "" #: inc/admin.php:1175 inc/admin.php:1180 msgid "More powerful minify css" msgstr "" #: inc/admin.php:1186 msgid "Combine Css" msgstr "" #: inc/admin.php:1187 msgid "Reduce HTTP requests through combined css files" msgstr "" #: inc/admin.php:1194 inc/admin.php:1199 inc/admin.php:1205 msgid "Minify Js" msgstr "" #: inc/admin.php:1195 inc/admin.php:1200 inc/admin.php:1206 msgid "You can decrease the size of js files" msgstr "" #: inc/admin.php:1211 msgid "Combine Js" msgstr "" #: inc/admin.php:1212 inc/admin.php:1220 inc/admin.php:1226 inc/admin.php:1232 msgid "Reduce HTTP requests through combined js files" msgstr "" #: inc/admin.php:1218 inc/admin.php:1225 inc/admin.php:1231 msgid "Combine Js Plus" msgstr "" #: inc/admin.php:1237 msgid "Gzip" msgstr "" #: inc/admin.php:1238 msgid "Reduce the size of files sent from your server" msgstr "" #: inc/admin.php:1249 msgid "Browser Caching" msgstr "" #: inc/admin.php:1250 msgid "Reduce page load times for repeat visitors" msgstr "" #: inc/admin.php:1255 msgid "Disable Emojis" msgstr "" #: inc/admin.php:1256 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "" #: inc/admin.php:1264 inc/admin.php:1270 inc/admin.php:1277 msgid "Render Blocking Js" msgstr "" #: inc/admin.php:1265 inc/admin.php:1271 inc/admin.php:1278 msgid "Eliminate render-blocking JavaScript resources" msgstr "" #: inc/admin.php:1290 inc/admin.php:1296 inc/admin.php:1303 msgid "Google Fonts" msgstr "" #: inc/admin.php:1291 inc/admin.php:1297 inc/admin.php:1304 msgid "Load Google Fonts asynchronously" msgstr "" #: inc/admin.php:1314 inc/admin.php:1333 inc/admin.php:1340 msgid "Lazy Load" msgstr "" #: inc/admin.php:1320 inc/admin.php:1334 inc/admin.php:1341 msgid "Load images and iframes when they enter the browsers viewport" msgstr "" #: inc/admin.php:1411 inc/admin.php:2039 inc/admin.php:2260 msgid "Only available in Premium version" msgstr "" #: inc/admin.php:1418 msgid "Cache Statistics" msgstr "" #: inc/admin.php:1467 msgid "You can delete all cache files" msgstr "" #: inc/admin.php:1468 inc/admin.php:1482 inc/admin.php:1483 msgid "Target folder" msgstr "" #: inc/admin.php:1480 msgid "If you modify any css file, you have to delete minified css files" msgstr "" #: inc/admin.php:1481 msgid "All cache files will be removed as well" msgstr "" #: inc/admin.php:1497 msgid "Timeout Rules" msgstr "" #: inc/admin.php:1504 templates/timeout.php:95 msgid "All" msgstr "" #: inc/admin.php:1505 inc/admin.php:1773 templates/exclude.php:93 #: templates/timeout.php:96 msgid "Home Page" msgstr "" #: inc/admin.php:1506 inc/admin.php:1780 templates/exclude.php:102 #: templates/timeout.php:97 msgid "Starts With" msgstr "" #: inc/admin.php:1507 inc/admin.php:1781 templates/exclude.php:103 #: templates/timeout.php:99 msgid "Contains" msgstr "" #: inc/admin.php:1508 inc/admin.php:1782 templates/exclude.php:104 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "" #: inc/admin.php:1540 inc/admin.php:1805 inc/admin.php:1822 inc/admin.php:1841 #: inc/admin.php:1859 inc/admin.php:1879 msgid "Add New Rule" msgstr "" #: inc/admin.php:1614 msgid "Optimize Image Tool" msgstr "" #: inc/admin.php:1638 msgid "Discover Features" msgstr "" #: inc/admin.php:1641 msgid "In the premium version there are some new features which speed up the sites more." msgstr "" #: inc/admin.php:1647 msgid "New Features" msgstr "" #: inc/admin.php:1661 msgid "Checkout" msgstr "" #: inc/admin.php:1664 msgid "You need to pay before downloading the premium version." msgstr "" #: inc/admin.php:1678 msgid "Just" msgstr "" #: inc/admin.php:1679 msgid "The download button will be available after paid. You can buy the premium version now." msgstr "" #: inc/admin.php:1684 msgid "Purchased" msgstr "" #: inc/admin.php:1699 msgid "Buy" msgstr "" #: inc/admin.php:1712 msgid "Download & Update" msgstr "" #: inc/admin.php:1715 msgid "You can download and update the premium when you want if you paid." msgstr "" #: inc/admin.php:1721 msgid "Get It Now!" msgstr "" #: inc/admin.php:1722 msgid "Please don't delete the free version. Premium version works with the free version." msgstr "" #: inc/admin.php:1728 msgid "Update" msgstr "" #: inc/admin.php:1733 msgid "Download" msgstr "" #: inc/admin.php:1774 templates/exclude.php:94 templates/preload.php:41 msgid "Categories" msgstr "" #: inc/admin.php:1775 templates/exclude.php:95 templates/preload.php:49 msgid "Tags" msgstr "" #: inc/admin.php:1776 templates/exclude.php:99 msgid "Archives" msgstr "" #: inc/admin.php:1777 templates/exclude.php:96 templates/preload.php:37 msgid "Posts" msgstr "" #: inc/admin.php:1778 templates/exclude.php:97 templates/preload.php:45 msgid "Pages" msgstr "" #: inc/admin.php:1779 templates/exclude.php:101 templates/preload.php:53 msgid "Attachments" msgstr "" #: inc/admin.php:1783 templates/exclude.php:105 msgid "has Google Analytics Parameters" msgstr "" #: inc/admin.php:1784 templates/exclude.php:106 msgid "has Woocommerce Items in Cart" msgstr "" #: inc/admin.php:1801 msgid "Exclude Pages" msgstr "" #: inc/admin.php:1818 msgid "Exclude User-Agents" msgstr "" #: inc/admin.php:1837 msgid "Exclude Cookies" msgstr "" #: inc/admin.php:1855 msgid "Exclude CSS" msgstr "" #: inc/admin.php:1875 msgid "Exclude JS" msgstr "" #: inc/admin.php:1912 msgid "CDN Settings" msgstr "" #: inc/admin.php:2024 msgid "Database Cleanup" msgstr "" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Homepage" msgstr "" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "" #: templates/newpost.php:68 templates/preload.php:102 #: templates/updatepost.php:64 msgid "OK" msgstr "" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "" #: templates/preload.php:33 msgid "Homepage" msgstr "" #: templates/preload.php:58 msgid "Custom Post Types" msgstr "" #: templates/preload.php:63 msgid "Custom Taxonomies" msgstr "" #: templates/preload.php:87 msgid "pages per minute" msgstr "" #: templates/preload.php:92 msgid "Restart After Completed" msgstr "" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "" #: templates/timeout.php:124 msgid "Then" msgstr "" #: templates/timeout.php:137 msgid "Choose One" msgstr "" #: templates/timeout.php:165 msgid "delete the files" msgstr "" #: templates/timeout.php:185 msgid "Server Time" msgstr "" #: templates/update_now.php:9 msgid "Please Update" msgstr "" #: templates/update_success.php:9 msgid "Success" msgstr "" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "" #: wpFastestCache.php:1470 msgid "Once Every 1 Minute" msgstr "" #: wpFastestCache.php:1476 msgid "Once Every 5 Minutes" msgstr "" #: wpFastestCache.php:1482 msgid "Once Every 15 Minutes" msgstr "" #: wpFastestCache.php:1488 msgid "Twice an Hour" msgstr "" #: wpFastestCache.php:1494 msgid "Once an Hour" msgstr "" #: wpFastestCache.php:1500 msgid "Once Every 2 Hours" msgstr "" #: wpFastestCache.php:1506 msgid "Once Every 3 Hours" msgstr "" #: wpFastestCache.php:1512 msgid "Once Every 4 Hours" msgstr "" #: wpFastestCache.php:1518 msgid "Once Every 5 Hours" msgstr "" #: wpFastestCache.php:1524 msgid "Once Every 6 Hours" msgstr "" #: wpFastestCache.php:1530 msgid "Once Every 7 Hours" msgstr "" #: wpFastestCache.php:1536 msgid "Once Every 8 Hours" msgstr "" #: wpFastestCache.php:1542 msgid "Once Every 9 Hours" msgstr "" #: wpFastestCache.php:1548 msgid "Once Every 10 Hours" msgstr "" #: wpFastestCache.php:1554 msgid "Once a Day" msgstr "" #: wpFastestCache.php:1560 msgid "Once Every 3 Days" msgstr "" #: wpFastestCache.php:1566 msgid "Once Every 7 Days" msgstr "" #: wpFastestCache.php:1572 msgid "Once Every 10 Days" msgstr "" #: wpFastestCache.php:1578 msgid "Once Every 15 Days" msgstr "" #: wpFastestCache.php:1584 msgid "Once a Month" msgstr "" #: wpFastestCache.php:1590 msgid "Once a Year" msgstr "" #. Plugin Name of the plugin/theme msgid "WP Fastest Cache" msgstr "" #. Plugin URI of the plugin/theme msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "" #. Description of the plugin/theme msgid "The simplest and fastest WP Cache system" msgstr "" #. Author of the plugin/theme msgid "Emre Vona" msgstr "" #. Author URI of the plugin/theme msgid "http://tr.linkedin.com/in/emrevona" msgstr "" wp-fastest-cache/languages/wp-fastest-cache-es_VE.mo000064400000021167151435171370016360 0ustar00Þ•„<\\] w„'ˆ° ¹Å Õâ ó   ' 2 B N g  œ » 2Ô 0 8 D O _ h .† µ Ç Ù ê ;ù 15 .g –   § ³ » Ç × â ö   % * 4 = AL Ž ¡ ­ À =á  / : J V g q x … ž ¸ Á Ä Ø ë ÿ (;M`s†›®ÀÓæ ù   !*L`x ~Œ’/š.Ê*ù $.Et‡Ÿ ¤° ¹ÅÍ Ò(à   - ;GX9`9š Ô&á%!.P?o¯Àà.þ- >_x7•ÍÖßô!)3] f r| ’$ Å'å+ )9HcJ¬ ÷  *)1T †§ÂßNõ<D: ¼Æ ÎÛ ãï ÿ *;Vhm‘R ó 05Tf» ÏÝíü !4S s‰³Éß÷ !6K`wŒ¡¶Ëàðÿ&!)Hr’›° ¹<Ã<H=#†;ªæ "*< DQ Zd)w¡ª#¼àô  @' Kh ´ -Å ,ó ' !-H!Rv!É!%Ý!-"11"c"SettingsAdd New RuleAllAll cache files will be removed as wellArchivesAttachmentsBrowser CachingCDN SettingsCache StatisticsCache SystemCache Timeout WizardCancelCategoriesChoose OneClear All CacheClear CacheClear Cache of All SitesClear Cache of PaginationClear Cache of Post / PageClear Cache of Post CategoriesClear Cache of Post TagsClear cache files when a post or page is publishedClear cache files when a post or page is updatedCombine CssCombine JsCombine Js PlusContainsCreate cache for mobile themeCreate the cache of all the site automaticallyCustom Post TypesCustom TaxonomiesDatabase CleanupDisable EmojisDon't show the cached version for desktop to mobile devicesDon't show the cached version for logged-in usersEliminate render-blocking JavaScript resourcesEmre VonaEnableEnable GzipExcludeExclude CSSExclude CookiesExclude JSExclude Page WizardExclude PagesExclude User-AgentsGoogle FontsGzipHome PageHomepageIf REQUEST_URIIf you modify any css file, you have to delete minified css filesImage OptimizationIs Equal ToLazy Load SettingsLoad Google Fonts asynchronouslyLoad images and iframes when they enter the browsers viewportLogged-in UsersMinify CssMinify Css PlusMinify HTMLMinify HTML PlusMinify JsMobileMobile ThemeMore powerful minify cssMore powerful minify htmlNew PostOKOnce Every 1 MinuteOnce Every 10 DaysOnce Every 10 HoursOnce Every 15 DaysOnce Every 15 MinutesOnce Every 2 HoursOnce Every 3 DaysOnce Every 3 HoursOnce Every 4 HoursOnce Every 5 HoursOnce Every 5 MinutesOnce Every 6 HoursOnce Every 7 DaysOnce Every 7 HoursOnce Every 8 HoursOnce Every 9 HoursOnce a DayOnce a MonthOnce a YearOnce an HourOnly available in Premium versionOptimize Image ToolOptions have been savedPagesPlease UpdatePostsPreloadReduce HTTP requests through combined css filesReduce HTTP requests through combined js filesReduce page load times for repeat visitorsReduce the number of SQL queriesReduce the size of files sent from your serverRender Blocking JsRestart After CompletedSaveServer TimeSettingsStarts WithSuccessTagsTarget folderThe simplest and fastest WP Cache systemThenTimeout RulesToolbar SettingsTwice an HourUpdate PostWP Fastest CacheWarningWhat do you want to happen after publishing the new post?What do you want to happen after update a post or a page?Widget CacheYou can decrease the size of css filesYou can decrease the size of js filesYou can decrease the size of pageYou can delete all cache filesYou can remove the emoji inline css and wp-emoji-release.min.jsdelete the fileshas Google Analytics Parametershas Woocommerce Items in Carthttp://wordpress.org/plugins/wp-fastest-cache/pages per minutePO-Revision-Date: 2020-07-16 10:39:36+0000 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=n != 1; X-Generator: GlotPress/4.0.1 Language: es_VE Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk) AjustesAñadir una nueva reglaTodoTambién se eliminarán todos los archivos de la cachéArchivosAdjuntosCaché del navegadorAjustes de la CDNEstadísticas de la cachéSistema de cachéAsistente del tiempo límite de la cachéCancelarCategoríasElige unoVaciar toda la cachéBorrar cachéVaciar la caché de todos los sitiosVaciar la caché de paginaciónVaciar la caché de entradas / páginasVaciar la caché de categorías de entradasVaciar la caché de etiquetas de entradasVaciar los archivos de la caché cuando se publica una entrada o páginaVaciar los archivos de la caché cuando se actualiza una entrada o páginaCombinar CSSCombinar JSCombine Js PlusContieneCrear la caché para el tema para móvilesCrear automáticamente la caché de todo el sitioTipos de contenido personalizadoTaxonomías personalizadasLimpieza de la base de datosDesactivar los emojisNo mostrar la versión de escritorio de la caché en los dispositivos móvilesNo mostrar la versión de la caché para usuarios conectadosEliminar los recursos JavaScript que bloquean los procesosEmre VonaActivarActivar GzipExcluirExcluir CSSExcluir cookiesExcluir JSAsistente para excluir páginasExcluir páginasExcluir agentes de usuarioFuentes de GoogleGzipPágina de inicioPágina de inicioSi REQUEST_URISi modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizadosOptimización de imágenesEs igual aAsistente de carga diferidaCargar las fuentes de Google de forma asíncronaCargar las imágenes e iframes cuando entren en la visualización de los navegadoresUsuarios conectadosMinimizar CSSMinify Css PlusMinimizar HTMLMinify HTML PlusMinimizar JSMóvilTema para móvilesMás potente minimización CSSMás potente minimización HTMLNueva entradaAceptarUna vez cada minutoUna vez cada 10 díasUna vez cada 10 horasUna vez cada 15 díasUna vez cada 15 minutosUna vez cada 2 horasUna vez cada 3 díasUna vez cada 3 horasUna vez cada 4 horasUna vez cada 5 horasUna vez cada 5 minutosUna vez cada 6 horasUna vez cada 7 díasUna vez cada 7 horasUna vez cada 8 horasUna vez cada 9 horasUna vez al díaUna vez al mesUna vez al añoUna vez a la horaSolo disponible en la versión premiumHerramienta de optimización de imágenesLas opciones han sido guardadasPáginasPor favor, actualizaEntradasPrecargarReducir las solicitudes HTTP mediante archivos JS combinadosReducir las solicitudes HTTP mediante archivos JS combinadosReducir el tiempo de carga de la página para los visitantes repetitivosReducir el número de consultas SQLReducir el tamaño de los archivos enviados por tu servidorBloqueo de procesado de JSReiniciar después de completadoGuardarHora del servidorAjustesComienza conCorrectoEtiquetasCarpeta de destinoEl sistema WP Cache más simple y rápidoEntoncesReglas de límiteAjustes de la barra de herramientasDos veces a la horaActualizar la entradaWP Fastest CacheAdvertencia¿Qué quieres que ocurra después de publicar la nueva entrada?¿Qué quieres que ocurra después de actualizar una entrada o una página?Widget de cachéPuedes reducir el tamaño de los archivos CSSPuedes reducir el tamaño de los archivos JSPuedes reducir el tamaño de la páginaPuedes borrar todos los archivos de la cachéPuedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»borrar los archivostiene parámetros de Google Analyticstiene artículos de WooCommerce en el carritohttp://es.wordpress.org/plugins/wp-fastest-cache/páginas por minutowp-fastest-cache/languages/wp-fastest-cache-es_ES.po000064400000041473151435171370016362 0ustar00# Translation of Plugins - WP Fastest Cache - Development (trunk) in Spanish (Spain) # This file is distributed under the same license as the Plugins - WP Fastest Cache - Development (trunk) package. msgid "" msgstr "" "PO-Revision-Date: 2024-12-10 17:18:30+0000\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: GlotPress/4.0.1\n" "Language: es\n" "Project-Id-Version: Plugins - WP Fastest Cache - Development (trunk)\n" #: templates/toolbar_settings.php:34 msgid "The WP Fastest Cache menu on the admin toolbar will be visible to the selected user roles below." msgstr "El menú WP Fastest Cache de la barra de herramientas del administrador será visible para los roles de usuario seleccionados a continuación." #: templates/toolbar_settings.php:33 msgid "User Roles" msgstr "Perfiles de usuario" #: templates/preload.php:374 templates/preload.php:457 #: templates/preload.php:474 msgid "At least one sitemap must be added" msgstr "Debe añadirse al menos un mapa del sitio" #: templates/preload.php:187 msgid "You can customize the advanced settings through this section." msgstr "Puedes personalizar los ajustes avanzados a través de esta sección." #: templates/preload.php:186 msgid "Advanced Settings" msgstr "Ajustes avanzados" #: templates/preload.php:151 msgid "You can specify sitemaps to be used for preloading." msgstr "Puedes especificar los mapas del sitio que se utilizarán para la precarga." #: templates/preload.php:150 msgid "Sitemaps" msgstr "Mapas del sitio" #: templates/preload.php:87 msgid "You can specify the contents to be used for preloading and you can sort them as well." msgstr "Puedes especificar el contenido que se utilizará para la precarga y también puedes ordenarlo." #: templates/preload.php:86 msgid "Content Types" msgstr "Tipos de contenido" #: templates/preload.php:73 msgid "You can specify the method you want the preload feature to use through this section." msgstr "Puedes especificar el método que quieres que utilice la función de precarga a través de esta sección." #: templates/preload.php:72 msgid "Choose a Method" msgstr "Elegir método" #: templates/preload.php:56 msgid "Preload Settings" msgstr "Ajustes de precarga" #: inc/admin.php:1458 inc/admin.php:1465 msgid "Some js sources will not be loaded until scrolling or moving the mouse" msgstr "Algunos orígenes de js no se cargarán hasta que se haga scroll o se mueva el ratón" #: inc/admin.php:1457 inc/admin.php:1464 msgid "Delay Js" msgstr "Aplazar Js" #: inc/admin.php:1074 msgid "WP Fastest Cache Options" msgstr "Opciones de WP Fastest Cache" #: inc/admin.php:1954 templates/exclude.php:114 msgid "has Yandex Click ID Parameters" msgstr "tiene parámetros de ID de clic de Yandex" #. Author URI of the plugin #: wpFastestCache.php msgid "https://www.wpfastestcache.com/" msgstr "https://www.wpfastestcache.com/" #: inc/admin.php:1749 msgid "Clearing Specific Pages" msgstr "Vaciar páginas específicas" #: templates/toolbar_settings.php:71 msgid "Save" msgstr "Guardar" #: templates/toolbar_settings.php:68 msgid "Cancel" msgstr "Cancelar" #: inc/admin-toolbar.php:124 templates/toolbar_settings.php:20 msgid "Toolbar Settings" msgstr "Ajustes de la barra de herramientas" #: inc/admin-toolbar.php:78 inc/admin-toolbar.php:114 msgid "Clear Cache of All Sites" msgstr "Vaciar la caché de todos los sitios" #: wpFastestCache.php:439 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:1083 inc/admin.php:1594 inc/column.php:15 msgid "Clear Cache" msgstr "Vaciar la caché" #: inc/admin.php:1370 inc/admin.php:1376 inc/admin.php:1383 msgid "Eliminate render-blocking JavaScript resources" msgstr "Eliminar los recursos JavaScript que bloquean los procesos" #: inc/admin.php:470 inc/admin.php:473 msgid "Options have been saved" msgstr "Las opciones han sido guardadas" #: inc/admin.php:1955 templates/exclude.php:115 msgid "has Woocommerce Items in Cart" msgstr "tiene artículos de WooCommerce en el carrito" #: inc/admin.php:1953 templates/exclude.php:113 msgid "has Google Analytics Parameters" msgstr "tiene parámetros de Google Analytics" #: inc/admin.php:1943 templates/exclude.php:100 msgid "Archives" msgstr "Archivos" #: templates/timeout.php:189 msgid "Server Time" msgstr "Hora del servidor" #: templates/timeout.php:169 msgid "delete the files" msgstr "borrar los archivos" #: inc/admin.php:1646 inc/admin.php:1948 templates/exclude.php:106 #: templates/timeout.php:99 msgid "Contains" msgstr "Contiene" #: inc/admin.php:1647 inc/admin.php:1949 templates/exclude.php:107 #: templates/timeout.php:98 msgid "Is Equal To" msgstr "Es igual a" #: inc/admin.php:1645 inc/admin.php:1947 templates/exclude.php:105 #: templates/timeout.php:97 msgid "Starts With" msgstr "Comienza con" #: inc/admin.php:1644 inc/admin.php:1940 templates/exclude.php:95 #: templates/timeout.php:96 msgid "Home Page" msgstr "Página de inicio" #: inc/admin.php:1643 templates/timeout.php:95 msgid "All" msgstr "Todo" #: templates/exclude.php:66 msgid "Exclude Page Wizard" msgstr "Asistente para excluir páginas" #: templates/timeout.php:124 msgid "Then" msgstr "Entonces" #: templates/exclude.php:89 templates/timeout.php:91 msgid "If REQUEST_URI" msgstr "Si REQUEST_URI" #: templates/timeout.php:68 msgid "Cache Timeout Wizard" msgstr "Asistente del tiempo límite de la caché" #: templates/lazy_load.php:9 msgid "Lazy Load Settings" msgstr "Asistente de carga diferida" #: templates/nginx_gzip.php:9 msgid "Enable Gzip" msgstr "Activar Gzip" #: templates/update_now.php:9 msgid "Please Update" msgstr "Por favor, actualiza" #: templates/update_success.php:9 msgid "Success" msgstr "Correcto" #: templates/disable_wp_cron.php:20 msgid "Warning" msgstr "Advertencia" #: inc/admin.php:1681 inc/admin.php:1753 inc/admin.php:1976 inc/admin.php:1993 #: inc/admin.php:2012 inc/admin.php:2030 inc/admin.php:2050 msgid "Add New Rule" msgstr "Añadir una nueva regla" #: inc/admin-toolbar.php:105 inc/admin.php:1615 msgid "Clear Cache and Minified CSS/JS" msgstr "Borrar la caché y minimizar CSS/JS" #: inc/admin.php:1547 inc/admin.php:2219 inc/admin.php:2419 msgid "Only available in Premium version" msgstr "Solo disponible en la versión premium" #: templates/timeout.php:141 msgid "Choose One" msgstr "Elige uno" #: inc/admin.php:1620 msgid "All cache files will be removed as well" msgstr "También se eliminarán todos los archivos de la caché" #: inc/admin.php:1619 msgid "If you modify any css file, you have to delete minified css files" msgstr "Si modificas cualquier archivo CSS, tienes que borrar los archivos CSS minimizados" #: inc/admin.php:1607 inc/admin.php:1621 inc/admin.php:1622 msgid "Target folder" msgstr "Carpeta de destino" #: inc/admin.php:1606 msgid "You can delete all cache files" msgstr "Puedes borrar todos los archivos de la caché" #: inc/admin.php:1090 msgid "Exclude" msgstr "Excluir" #: inc/admin.php:1084 msgid "Image Optimization" msgstr "Optimización de imágenes" #: inc/admin.php:1082 msgid "Settings" msgstr "Ajustes" #: inc/admin.php:2192 msgid "Database Cleanup" msgstr "Limpieza de la base de datos" #: inc/admin.php:2083 msgid "CDN Settings" msgstr "Ajustes de la CDN" #: inc/admin.php:2046 msgid "Exclude JS" msgstr "Excluir JS" #: inc/admin.php:2026 msgid "Exclude CSS" msgstr "Excluir CSS" #: inc/admin.php:2008 msgid "Exclude Cookies" msgstr "Excluir cookies" #: inc/admin.php:1989 msgid "Exclude User-Agents" msgstr "Excluir agentes de usuario" #: inc/admin.php:1972 msgid "Exclude Pages" msgstr "Excluir páginas" #: inc/admin.php:1806 msgid "Optimize Image Tool" msgstr "Herramienta de optimización de imágenes" #: inc/admin.php:1636 msgid "Timeout Rules" msgstr "Reglas de límite" #: inc/admin.php:1554 msgid "Cache Statistics" msgstr "Estadísticas de la caché" #: templates/updatepost.php:53 msgid "Clear Cache of Post / Page" msgstr "Vaciar la caché de entradas / páginas" #: templates/updatepost.php:29 msgid "What do you want to happen after update a post or a page?" msgstr "¿Qué quieres que ocurra después de actualizar una entrada o una página?" #: templates/newpost.php:58 msgid "Clear Cache of Pagination" msgstr "Vaciar la caché de paginación" #: templates/newpost.php:57 templates/updatepost.php:55 msgid "Clear Cache of Post Tags" msgstr "Vaciar la caché de etiquetas de entradas" #: templates/newpost.php:56 templates/updatepost.php:54 msgid "Clear Cache of Post Categories" msgstr "Vaciar la caché de categorías de entradas" #: templates/newpost.php:55 templates/updatepost.php:56 msgid "Clear Cache of Home page" msgstr "Vaciar la caché de la página de inicio" #: inc/admin-toolbar.php:61 inc/admin-toolbar.php:97 inc/admin.php:1602 #: templates/newpost.php:51 templates/updatepost.php:49 msgid "Clear All Cache" msgstr "Vaciar toda la caché" #: templates/newpost.php:29 msgid "What do you want to happen after publishing the new post?" msgstr "¿Qué quieres que ocurra después de publicar la nueva entrada?" #: templates/newpost.php:68 templates/updatepost.php:64 msgid "OK" msgstr "Aceptar" #: templates/preload.php:215 msgid "Restart After Completed" msgstr "Reiniciar después de completado" #: templates/preload.php:210 msgid "pages per minute" msgstr "páginas por minuto" #: templates/preload.php:132 msgid "Custom Taxonomies" msgstr "Taxonomías personalizadas" #: templates/preload.php:127 msgid "Custom Post Types" msgstr "Tipos de contenido personalizado" #: inc/admin.php:1946 templates/exclude.php:101 templates/preload.php:122 msgid "Attachments" msgstr "Adjuntos" #: inc/admin.php:1942 templates/exclude.php:97 templates/preload.php:118 msgid "Tags" msgstr "Etiquetas" #: inc/admin.php:1945 templates/exclude.php:99 templates/preload.php:114 msgid "Pages" msgstr "Páginas" #: inc/admin.php:1941 templates/exclude.php:96 templates/preload.php:110 msgid "Categories" msgstr "Categorías" #: inc/admin.php:1944 templates/exclude.php:98 templates/preload.php:106 msgid "Posts" msgstr "Entradas" #: templates/preload.php:102 msgid "Homepage" msgstr "Página de inicio" #: inc/admin.php:1317 inc/admin.php:1325 inc/admin.php:1331 inc/admin.php:1337 msgid "Reduce HTTP requests through combined js files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1425 inc/admin.php:1447 msgid "Load images and iframes when they enter the browsers viewport" msgstr "Cargar las imágenes e iframes cuando entren en la visualización de los navegadores" #: inc/admin.php:1396 inc/admin.php:1402 inc/admin.php:1409 msgid "Load Google Fonts asynchronously" msgstr "Cargar las fuentes de Google de forma asíncrona" #: inc/admin.php:1395 inc/admin.php:1401 inc/admin.php:1408 msgid "Google Fonts" msgstr "Fuentes de Google" #: inc/admin.php:1369 inc/admin.php:1375 inc/admin.php:1382 msgid "Render Blocking Js" msgstr "Bloqueo de procesado de JS" #: inc/admin.php:1361 msgid "You can remove the emoji inline css and wp-emoji-release.min.js" msgstr "Puedes eliminar los emojis CSS integrados y el archivo «wp-emoji-release.min.js»" #: inc/admin.php:1360 msgid "Disable Emojis" msgstr "Desactivar los emojis" #: inc/admin.php:1355 msgid "Reduce page load times for repeat visitors" msgstr "Reducir el tiempo de carga de la página para los visitantes repetitivos" #: inc/admin.php:1354 msgid "Browser Caching" msgstr "Caché del navegador" #: inc/admin.php:1343 msgid "Reduce the size of files sent from your server" msgstr "Reducir el tamaño de los archivos enviados por tu servidor" #: inc/admin.php:1342 msgid "Gzip" msgstr "Gzip" #: inc/admin.php:1323 inc/admin.php:1330 inc/admin.php:1336 msgid "Combine Js Plus" msgstr "Combine Js Plus" #: inc/admin.php:1316 msgid "Combine Js" msgstr "Combinar JS" #: inc/admin.php:1300 inc/admin.php:1305 inc/admin.php:1311 msgid "You can decrease the size of js files" msgstr "Puedes reducir el tamaño de los archivos JS" #: inc/admin.php:1299 inc/admin.php:1304 inc/admin.php:1310 msgid "Minify Js" msgstr "Minimizar JS" #: inc/admin.php:1292 msgid "Reduce HTTP requests through combined css files" msgstr "Reducir las solicitudes HTTP mediante archivos JS combinados" #: inc/admin.php:1291 msgid "Combine Css" msgstr "Combinar CSS" #: inc/admin.php:1280 inc/admin.php:1285 msgid "More powerful minify css" msgstr "Más potente minimización CSS" #: inc/admin.php:1279 inc/admin.php:1284 msgid "Minify Css Plus" msgstr "Minify Css Plus" #: inc/admin.php:1271 msgid "You can decrease the size of css files" msgstr "Puedes reducir el tamaño de los archivos CSS" #: inc/admin.php:1270 msgid "Minify Css" msgstr "Minimizar CSS" #: inc/admin.php:1258 inc/admin.php:1263 msgid "More powerful minify html" msgstr "Más potente minimización HTML" #: inc/admin.php:1257 inc/admin.php:1262 msgid "Minify HTML Plus" msgstr "Minify HTML Plus" #: inc/admin.php:1251 msgid "You can decrease the size of page" msgstr "Puedes reducir el tamaño de la página" #: inc/admin.php:1250 msgid "Minify HTML" msgstr "Minimizar HTML" #: inc/admin.php:1242 msgid "Clear cache files when a post or page is updated" msgstr "Vaciar los archivos de la caché cuando se actualiza una entrada o página" #: inc/admin.php:1241 templates/updatepost.php:18 msgid "Update Post" msgstr "Actualizar la entrada" #: inc/admin.php:1235 msgid "Clear cache files when a post or page is published" msgstr "Vaciar los archivos de la caché cuando se publica una entrada o página" #: inc/admin.php:1234 templates/newpost.php:18 msgid "New Post" msgstr "Nueva entrada" #: inc/admin.php:1202 inc/admin.php:1228 msgid "Create cache for mobile theme" msgstr "Crear la caché para el tema para móviles" #: inc/admin.php:1201 inc/admin.php:1227 msgid "Mobile Theme" msgstr "Tema para móviles" #: inc/admin.php:1196 msgid "Don't show the cached version for desktop to mobile devices" msgstr "No mostrar la versión de escritorio de la caché en los dispositivos móviles" #: inc/admin.php:1195 msgid "Mobile" msgstr "Móvil" #: inc/admin.php:1191 msgid "Don't show the cached version for logged-in users" msgstr "No mostrar la versión de la caché para usuarios conectados" #: inc/admin.php:1190 msgid "Logged-in Users" msgstr "Usuarios conectados" #: inc/admin.php:1158 msgid "Create the cache of all the site automatically" msgstr "Crear automáticamente la caché de todo el sitio" #: inc/admin.php:1157 msgid "Preload" msgstr "Precargar" #: inc/admin.php:1129 inc/admin.php:1135 inc/admin.php:1142 inc/admin.php:1149 msgid "Reduce the number of SQL queries" msgstr "Reducir el número de consultas SQL" #: inc/admin.php:1128 inc/admin.php:1134 inc/admin.php:1141 inc/admin.php:1148 msgid "Widget Cache" msgstr "Widget de caché" #: inc/admin.php:1119 msgid "Enable" msgstr "Activar" #: inc/admin.php:1118 msgid "Cache System" msgstr "Sistema de caché" #: wpFastestCache.php:2321 msgid "Once Every 15 Days" msgstr "Una vez cada 15 días" #: wpFastestCache.php:2309 msgid "Once Every 7 Days" msgstr "Una vez cada 7 días" #: wpFastestCache.php:2303 msgid "Once Every 3 Days" msgstr "Una vez cada 3 días" #: wpFastestCache.php:2291 msgid "Once Every 10 Hours" msgstr "Una vez cada 10 horas" #: wpFastestCache.php:2285 msgid "Once Every 9 Hours" msgstr "Una vez cada 9 horas" #: wpFastestCache.php:2279 msgid "Once Every 8 Hours" msgstr "Una vez cada 8 horas" #: wpFastestCache.php:2273 msgid "Once Every 7 Hours" msgstr "Una vez cada 7 horas" #: wpFastestCache.php:2261 msgid "Once Every 5 Hours" msgstr "Una vez cada 5 horas" #: wpFastestCache.php:2255 msgid "Once Every 4 Hours" msgstr "Una vez cada 4 horas" #: wpFastestCache.php:2249 msgid "Once Every 3 Hours" msgstr "Una vez cada 3 horas" #: wpFastestCache.php:2243 msgid "Once Every 2 Hours" msgstr "Una vez cada 2 horas" #: wpFastestCache.php:2315 msgid "Once Every 10 Days" msgstr "Una vez cada 10 días" #. Author of the plugin #: wpFastestCache.php msgid "Emre Vona" msgstr "Emre Vona" #. Description of the plugin #: wpFastestCache.php msgid "The simplest and fastest WP Cache system" msgstr "El sistema WP Cache más simple y rápido" #. Plugin URI of the plugin #: wpFastestCache.php msgid "http://wordpress.org/plugins/wp-fastest-cache/" msgstr "https://es.wordpress.org/plugins/wp-fastest-cache/" #. Plugin Name of the plugin #: wpFastestCache.php msgid "WP Fastest Cache" msgstr "WP Fastest Cache" #: wpFastestCache.php:2333 msgid "Once a Year" msgstr "Una vez al año" #: wpFastestCache.php:2327 msgid "Once a Month" msgstr "Una vez al mes" #: wpFastestCache.php:2297 msgid "Once a Day" msgstr "Una vez al día" #: wpFastestCache.php:2267 msgid "Once Every 6 Hours" msgstr "Una vez cada 6 horas" #: wpFastestCache.php:2237 msgid "Once an Hour" msgstr "Una vez por hora" #: wpFastestCache.php:2231 msgid "Twice an Hour" msgstr "Dos veces por hora" #: wpFastestCache.php:2225 msgid "Once Every 15 Minutes" msgstr "Una vez cada 15 minutos" #: wpFastestCache.php:2219 msgid "Once Every 5 Minutes" msgstr "Una vez cada 5 minutos" #: wpFastestCache.php:2213 msgid "Once Every 1 Minute" msgstr "Una vez cada 1 minuto"wp-fastest-cache/js/index.html000064400000000022151435171370012314 0ustar00Silence is golden.wp-fastest-cache/js/db.js000064400000007250151435171370011254 0ustar00var WpfcDB = { init: function(){ var self = this; jQuery("#wpfc-db").change(function(e){ jQuery("#revert-loader-toolbar").show(); self.update(); }); if(jQuery(".tab8").is(":visible")){ jQuery("#revert-loader-toolbar").show(); self.update(); } jQuery(function(){ self.update(); }); self.click_event_for_warnings(); self.click_event_for_auto_cleanup(); }, click_event_for_auto_cleanup: function(){ jQuery("#wpfc-auto-cleanup-option").change(function(){ let status = jQuery(this).val(); let nonce = jQuery("#wpfc-auto-cleanup-nonce").val(); jQuery("#revert-loader-toolbar").show(); jQuery.ajax({ type: 'POST', url: ajaxurl, dataType : "json", data : {"action": "wpfc_db_set_auto_cleanup", "status" : status, "nonce" : nonce}, cache: false, success: function(data){ if(typeof data.status != "undefined"){ jQuery("#wpfc-auto-cleanup-option").val(data.status); }else{ jQuery("#wpfc-auto-cleanup-option").val("off"); } jQuery("#revert-loader-toolbar").hide(); console.log(data); } }); }); }, click_event_for_warnings: function(){ var self = this; jQuery("div.tab8 div[wpfc-db-name]").click(function(e){ jQuery("#revert-loader-toolbar").show(); jQuery.ajax({ type: 'GET', url: ajaxurl, dataType : "json", data : {"action": "wpfc_db_fix", "type": jQuery(this).attr("wpfc-db-name"), "nonce" : wpfc_nonce}, cache: false, success: function(data){ if(data.success){ self.update(); }else{ jQuery("#revert-loader-toolbar").hide(); if(data.showupdatewarning){ Wpfc_New_Dialog.dialog("wpfc-modal-updatenow", {close: function(){ Wpfc_New_Dialog.clone.find("div.window-content input").each(function(){ if(jQuery(this).attr("checked")){ var id = jQuery(this).attr("action-id"); jQuery("div.tab1 div[template-id='wpfc-modal-updatenow'] div.window-content input#" + id).attr("checked", true); } }); Wpfc_New_Dialog.clone.remove(); }}); }else{ if(typeof data.message != "undefined" && data.message){ alert(data.message); }else{ alert("DB Error"); } } } } }); }); }, update: function(){ var self = this; jQuery.ajax({ type: 'GET', url: ajaxurl, dataType : "json", data : {"action": "wpfc_db_statics", "nonce" : wpfc_nonce}, cache: false, success: function(data){ jQuery.each(data, function(key, value){ jQuery(".tab8 div[wpfc-db-name='" + key + "'] span.db-number").css({'color': (value > 0) ? "red" : "#6BC359"}); jQuery(".tab8 div[wpfc-db-name='" + key + "'] span.db-number").text("(" + value + ")"); jQuery(".tab8 div[wpfc-db-name='" + key + "'] div.meta").attr('class', (value > 0) ? "meta warning" : "meta success"); }); if(data.all_warnings > 0){ jQuery("label[for='wpfc-db']").text("DB (" + data.all_warnings + ")"); }else{ jQuery("label[for='wpfc-db']").text("DB"); } jQuery("#revert-loader-toolbar").hide(); } }); } }; // if(window.attachEvent) { // window.attachEvent('onload', WpfcDB_init); // } else { // if(window.onload) { // var curronload = window.onload; // var newonload = function(evt) { // curronload(evt); // WpfcDB_init(evt); // }; // window.onload = newonload; // } else { // window.onload = WpfcDB_init; // } // } if(window.attachEvent){ window.attachEvent('onload', WpfcDB_init); }else if(window.addEventListener){ window.addEventListener('load', WpfcDB_init, false); } function WpfcDB_init(){WpfcDB.init();}wp-fastest-cache/js/button.js000064400000004221151435171370012175 0ustar00(function() { tinymce.create('tinymce.plugins.Wpfc', { wpfcNotHTML : '', url: '', init : function(ed, url) { var self = this; self.setUrl(url); self.setWpfcNotHTML(); ed.addButton('wpfc', { title : 'Block caching for this page', cmd : 'wpfc', image : self.url + "/icon.png" }); ed.addCommand('wpfc', function() { ed.execCommand('mceInsertContent', 0, self.wpfcNotHTML); }); self._handleWpfcNOT(ed, url); }, setUrl: function(url){ this.url = url.replace("../js","../images"); }, setWpfcNotHTML: function(){ this.wpfcNotHTML = ''; }, _handleWpfcNOT : function(ed, url) { var self = this; ed.onPostRender.add(function() { if (ed.theme.onResolveName) { ed.theme.onResolveName.add(function(th, o) { if (o.node.nodeName == 'IMG') { if ( ed.dom.hasClass(o.node, 'mce-wp-wpfcnot') ){ o.name = 'wpfcnot'; } } }); } }); ed.onBeforeSetContent.add(function(ed, o) { if ( o.content ) { o.content = o.content.replace(/<\!--\s*\[wpfcNOT\]\s*-->/, self.wpfcNotHTML); } }); ed.onPostProcess.add(function(ed, o) { if (o.get){ o.content = o.content.replace(/]+>/g, function(im) { if (im.indexOf('class="mce-wp-wpfcnot') !== -1) { im = ''; } return im; }); } }); } }); tinymce.PluginManager.add( 'wpfc', tinymce.plugins.Wpfc ); })();wp-fastest-cache/js/dialog.js000064400000002135151435171370012123 0ustar00var Wpfc_Dialog = { id : "", buttons: [], dialog: function(id, buttons){ var self = this; self.id = id; self.buttons = buttons; jQuery("#" + id).show(); jQuery("#" + id).draggable({ stop: function(){ jQuery(this).height("auto"); } }); jQuery("#" + id).position({my: "center", at: "center", of: window}); jQuery(".close-wiz").click(function(e){ jQuery(e.target).closest("div[id^='wpfc-modal-']").remove(); }); self.show_buttons(); }, remove: function(clone_modal_id){ if(typeof clone_modal_id != "undefined"){ jQuery("#" + clone_modal_id).remove(); }else{ var self = this; jQuery("#" + self.id).remove(); } }, show_buttons: function(){ var self = this; if(typeof self.buttons != "undefined"){ jQuery.each(self.buttons, function( index, value ) { jQuery("#" + self.id + " button[action='" + index + "']").show(); jQuery("#" + self.id + " button[action='" + index + "']").click(function(e){ if(index == "close"){ jQuery(e.target).closest("div[id^='wpfc-modal-']").remove(); }else{ value(); } }); }); } } };wp-fastest-cache/js/schedule.js000064400000003612151435171370012461 0ustar00var WpfcSchedule = { id: "#wpfc-server-time", serverTime : "", //milliseconds dropdowns: "#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute, #wpFastestCacheTimeOut", init: function(){ if(jQuery("form[id='wpfc-schedule-panel']").length){ this.setServerTime(); this.clock(); this.setDropdownEvent(); this.setDeleteCronEvent(); jQuery("#wpfc-schedule-panel input[type='submit']").bind("click", this, this.submitButtonEvent); } }, setDeleteCronEvent: function(){ jQuery("#deleteCron").click(function(){ jQuery("#wpFastestCacheTimeOut").val(""); jQuery("form#wpfc-schedule-panel").submit(); }); }, setDropdownEvent: function(){ jQuery(this.dropdowns).change(function(e){ var e = jQuery(e.currentTarget); if(e.attr("value")){ e.css("background-color", ""); } /* if(e.attr("id") == "wpFastestCacheTimeOut"){ if(e.val() == "hourly"){ jQuery("#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute").prop('disabled', true); }else{ jQuery("#wpFastestCacheTimeOutHour, #wpFastestCacheTimeOutMinute").prop('disabled', false); } }*/ }); }, setServerTime: function(){ this.serverTime = new Date(jQuery(this.id).text()).getTime(); }, clock: function(){ var self = this; var newDate; setInterval(function(){ newDate = new Date(self.serverTime); jQuery(self.id).text(newDate.getFullYear() + "-" + (newDate.getMonth() + 1) + "-" + newDate.getDate() + " " + newDate.getHours() + ":" + newDate.getMinutes() + ":" + newDate.getSeconds()); self.serverTime = self.serverTime + 1000; }, 1000); }, submitButtonEvent: function(self){ var error_count = 0; jQuery(self.data.dropdowns).each(function(i, e){ if(jQuery(e).attr("value")){ jQuery(e).css("background-color", ""); }else{ error_count++; jQuery(e).css("background-color", "red"); } }); return error_count > 0 ? false : true; } }; WpfcSchedule.init();wp-fastest-cache/js/dialog_new.js000064400000015473151435171370013005 0ustar00var Wpfc_New_Dialog = { template_id: "", id : "", buttons: [], clone: "", current_page_number: 1, total_page_number: 0, interval : {}, enable_button: function(button_type){ clearInterval(this.interval[this.id]); let self = this; let modal = jQuery("#" + self.id); let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']"); button.attr("disabled", false); button.text(button.text().replace(/\.+$/, "")); }, disable_button: function(button_type){ let self = this; let modal = jQuery("#" + self.id); let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']"); let text = button.text(); let dot = 0; button.attr("disabled", true); button.text(text + "."); self.interval[self.id] = setInterval(function(){ if(jQuery("#" + self.id).length === 0){ clearInterval(self.interval); } text = button.text(); dot = text.match(/\./g); console.log(self.interval); if(dot){ if(dot.length < 3){ button.text(text + "."); }else{ button.text(text.replace(/\.+$/, "")); } }else{ button.text(text + "."); } }, 300); }, dialog: function(id, buttons, callback){ var self = this; self.clone = jQuery("div[template-id='" + id + "']").clone(); self.total_page_number = self.clone.find("div[wpfc-page]").length; self.total_page_number = self.total_page_number > 0 ? self.total_page_number : self.clone.find("div[wpfc-cdn-page]").length; self.template_id = id; self.id = id + "-" + new Date().getTime(); self.buttons = buttons; self.clone.attr("id", self.id); self.clone.removeAttr("template-id"); jQuery("body").append(self.clone); self.clone.show(); self.clone.draggable({ stop: function(){ jQuery(this).height("auto"); } }); self.clone.position({my: "center", at: "center", of: window}); self.clone.find(".close-wiz").click(function(){ self.remove(this); }); self.update_ids_for_label(); self.show_buttons(); if(typeof callback != "undefined"){ if(typeof callback == "function"){ callback(self); } } self.click_event_add_new_keyword_button(); self.add_new_keyword_keypress(); }, remove: function(button){ jQuery(button).closest("div[id^='wpfc-modal-']").remove(); }, show_buttons: function(){ var self = this; if(typeof self.buttons != "undefined"){ jQuery.each(self.buttons, function( index, value ) { self.clone.find("button[action='" + index + "']").click(function(){ if(value == "default"){ if(index == "next"){ self.default_next_action(); } if(index == "back"){ self.default_back_action(); } if(index == "close"){ self.default_close_action(); } }else{ value(this); } }); }); } }, default_next_action: function(){ this.current_page_number = this.current_page_number + 1; this.show_page(this.current_page_number); this.show_button("back"); if(this.total_page_number == this.current_page_number){ this.hide_button("next"); this.show_button("finish"); } }, default_back_action: function(){ this.current_page_number = this.current_page_number - 1; this.show_page(this.current_page_number); this.show_button("next"); this.hide_button("finish"); if(this.current_page_number == 1){ this.hide_button("back"); } }, default_close_action: function(){ Wpfc_New_Dialog.clone.remove(); }, show_button: function(index){ this.clone.find("button[action='" + index + "']").show(); }, hide_button: function(index){ this.clone.find("button[action='" + index + "']").hide(); }, show_page: function(number){ this.clone.find("div[wpfc-page], div[wpfc-cdn-page]").hide(); this.clone.find("div[wpfc-page='" + number + "'], div[wpfc-cdn-page='" + number + "']").show(); this.current_page_number = number; }, update_ids_for_label: function(){ var self = this; var input; var id = ""; self.clone.find("div.window-content div.wiz-input-cont").each(function(){ input = jQuery(this).find("label.mc-input-label input"); if(input.length){ id = input.attr("id") + self.id; jQuery(this).find("label.mc-input-label input").attr("id", id); jQuery(this).find("label").last().attr("for", id); } }); }, set_values_from_tmp_to_real: function(){ var self = this; Wpfc_New_Dialog.clone.find("div.window-content input, div.window-content select").each(function(){ if(jQuery(this).prop("tagName") == "SELECT"){ jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content select[name='" + jQuery(this).attr("name") + "']").val(jQuery(this).val()); }else if(jQuery(this).prop("tagName") == "INPUT"){ if(jQuery(this).attr("type") == "checkbox"){ if(jQuery(this).is(':checked')){ jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", true); }else{ jQuery("div.tab1 div[template-id='" + self.template_id + "'] div.window-content input[name='" + jQuery(this).attr("name") + "']").attr("checked", false); } }else{ //toDo } } }); }, add_new_keyword_keypress: function() { const $clone = Wpfc_New_Dialog.clone; const $input = $clone.find(".wpfc-textbox-con .fixed-search input"); const $textboxCon = $clone.find(".wpfc-textbox-con"); const insertKeywordItem = function(){ let keyword = $input.val().replace(/[\s,]/g, ""); $textboxCon.hide(); $input.val(""); if (keyword.length > 0) { const $newKeywordItem = jQuery('
  • ' + keyword + '
  • ').click(function() { jQuery(this).remove(); }); $newKeywordItem.insertBefore($clone.find(".wpfc-add-new-keyword").closest(".keyword-item")); } }; $input.keydown(function(e) { if (e.keyCode === 8) { let keyword = $input.val().replace(/[\s,]/g, ""); if (keyword.length === 0) { $textboxCon.hide(); } } else if (e.keyCode === 13) { insertKeywordItem(); } }); $input.bind("blur", function() { insertKeywordItem(); }); }, click_event_add_new_keyword_button: function(){ Wpfc_New_Dialog.clone.find(".wpfc-add-new-keyword").click(function(){ Wpfc_New_Dialog.clone.find(".wpfc-textbox-con").show(); Wpfc_New_Dialog.clone.find(".wpfc-textbox-con .fixed-search input").focus(); }); }, insert_keywords: function(id, keywords){ if(keywords){ jQuery.each(keywords.split(","), function( index, value ) { jQuery('
  • ' + value + '
  • ').insertBefore(jQuery("div[id^='" + id + "']").find(".wpfc-add-new-keyword").closest(".keyword-item")).click(function(){ jQuery(this).remove(); }); }); } }, };wp-fastest-cache/js/toolbar.js000064400000006672151435171370012340 0ustar00var WPFC_TOOLBAR = { ajax_url: false, init: function(){ var self = this; if(typeof ajaxurl != "undefined" || typeof wpfc_ajaxurl != "undefined"){ self.ajax_url = (typeof ajaxurl != "undefined") ? ajaxurl : wpfc_ajaxurl; }else{ alert("AjaxURL has NOT been defined"); } jQuery("body").append('
    '); jQuery("#wp-admin-bar-wpfc-toolbar-parent-default li").click(function(e){ var id = (typeof e.target.id != "undefined" && e.target.id) ? e.target.id : jQuery(e.target).parent("li").attr("id"); var action = ""; if(id == "wp-admin-bar-wpfc-toolbar-parent-settings"){ if(jQuery("div[id^='wpfc-modal-toolbarsettings-']").length === 0){ self.open_settings(); } }else{ if(id == "wp-admin-bar-wpfc-toolbar-parent-delete-cache"){ action = "wpfc_delete_cache"; }else if(id == "wp-admin-bar-wpfc-toolbar-parent-delete-cache-and-minified"){ action = "wpfc_delete_cache_and_minified"; }else if(id == "wp-admin-bar-wpfc-toolbar-parent-clear-cache-of-this-page"){ action = "wpfc_delete_current_page_cache"; }else if(id == "wp-admin-bar-wpfc-toolbar-parent-clear-cache-of-allsites"){ action = "wpfc_clear_cache_of_allsites"; } WPFC_TOOLBAR.send({"action": action, "path" : window.location.pathname}); } }); }, open_settings: function(){ var self = this; jQuery("#revert-loader-toolbar").show(); jQuery.ajax({ type: 'GET', url: self.ajax_url, data : {"action": "wpfc_toolbar_get_settings", "path" : window.location.pathname}, dataType : "json", cache: false, success: function(data){ if(data.success){ var data_json = {"action": "wpfc_toolbar_save_settings", "path" : window.location.pathname, "roles" : {}}; Wpfc_New_Dialog.dialog("wpfc-modal-toolbarsettings", { close: function(){ Wpfc_New_Dialog.clone.remove(); }, finish: function(){ jQuery("#" + Wpfc_New_Dialog.id).find("input[type='checkbox']:checked").each(function(i, e){ data_json.roles[jQuery(e).attr("name")] = 1; }); WPFC_TOOLBAR.send(data_json); Wpfc_New_Dialog.clone.remove(); }}, function(dialog){ jQuery("#" + Wpfc_New_Dialog.id).find("input[type='checkbox']").each(function(i, e){ if(typeof data.roles[jQuery(e).attr("name")] != "undefined"){ jQuery(e).attr('checked', true); } }); Wpfc_New_Dialog.show_button("close"); Wpfc_New_Dialog.show_button("finish"); setTimeout(function(){ jQuery("#revert-loader-toolbar").hide(); }, 500); }); }else{ alert("Toolbar Settings Error!") } } }); }, send: function(data_json){ var self = this; if(typeof wpfc_nonce != "undefined" && wpfc_nonce){ data_json.nonce = wpfc_nonce; } jQuery("#revert-loader-toolbar").show(); jQuery.ajax({ type: 'GET', url: self.ajax_url, data : data_json, dataType : "json", cache: false, success: function(data){ if(data[1] == "error"){ if(typeof data[2] != "undefined" && data[2] == "alert"){ alert(data[0]); }else{ Wpfc_New_Dialog.dialog("wpfc-modal-permission", {close: "default"}); Wpfc_New_Dialog.show_button("close"); } } if(typeof WpFcCacheStatics != "undefined"){ WpFcCacheStatics.update(); }else{ jQuery("#revert-loader-toolbar").hide(); } } }); } }; window.addEventListener('load', function(){ jQuery(document).ready(function(){ WPFC_TOOLBAR.init(); }); }); wp-fastest-cache/js/language.js000064400000003207151435171370012450 0ustar00window.wpfc = {}; window.wpfc.translate = function(word){ return (typeof window.wpfc.dictionary != "undefined" && typeof window.wpfc.dictionary[word] != "undefined" && window.wpfc.dictionary[word]) ? window.wpfc.dictionary[word] : word; }; jQuery.fn.extend({ wpfclang: function(){ var dictionary = window.wpfc.dictionary || {}; var el = jQuery(this); var text = el.attr("type") == "submit" ? el.val().trim() : el.text().trim(); var converted = typeof dictionary[text] == "undefined" ? text : dictionary[text]; if(typeof converted != "undefined" && converted){ if(el.attr("type") == "submit"){ el.val(converted); }else{ el.html(converted); } } } }); var Wpfclang = { language : "", init: function(language){ this.language = language; this.translate(); }, translate: function(){ if(typeof window.wpfc != "undefined" && typeof window.wpfc.dictionary != "undefined"){ var self = this; jQuery('#wpfc-read-tutorial span, #wpfc-plugin-setup-warning h3, #just-h1, #get-now-h1, #new-features-h1, div.wpfc-premium-step-footer ul li a, div.wpfc-premium-step-footer p, div.wpfc-premium-step-content, #wpbody-content label, div.question, .questionCon input[type="submit"], #message p, .wrap h2, #nextVerAct, select option, th, #rule-help-tip h4, #rule-help-tip label, .omni_admin_sidebar h3, #message p, #wpfc-image-static-panel span, #wpfc-statics-right div, #wpfc-image-static-panel p, #container-show-hide-image-list span, #wpfc-image-list th').each(function(){ if(jQuery(this).children().length === 0){ jQuery(this).wpfclang(); } }); } } };wp-fastest-cache/js/cdn/index.html000064400000000022151435171370013060 0ustar00Silence is golden.wp-fastest-cache/js/cdn/cdn.js000064400000030051151435171370012172 0ustar00var WpfcCDN = { values: {"name" : "", "cdnurl" : "", "originurl" : "", "file_types" : "", "keywords" : "", "excludekeywords" : ""}, id : "", nonce: "", template_url : "", content : "", interval : false, init: function(obj){ this.set_params(obj); this.open_wizard(); }, check_conditions: function(action, current_page_number){ var self = this; if(action == "next"){ if(current_page_number == 2){ self.check_url_exist(); }else{ return true; } } }, set_params: function(obj){ this.id = obj.id; this.nonce = obj.nonce; this.template_url = obj.template_main_url + "/" + this.id + ".php"; if(obj.values){ this.values = obj.values; } }, open_wizard: function(){ var self = this; if(jQuery("#wpfc-modal-" + self.id).length == 0){ self.load_template(function(){ self.fill_integration_fields(); self.set_buttons_action(); self.click_event_add_new_keyword_button(); self.add_new_keyword_keypress(); if(self.id == "other" || self.id == "cloudflare"){ self.show_page("next"); self.hide_button("back"); } }); } }, insert_keywords: function(modal, classname, keywords){ var self = this; if(keywords){ jQuery.each(keywords.split(","), function( index, value ) { jQuery('
  • ' + value + '
  • ').insertBefore(modal.find(".wpfc-add-new-keyword").closest("." + classname)).click(function(){ jQuery(this).remove(); }); }); } }, fill_integration_fields: function(){ var self = this; var modal; jQuery(self.values).each(function(i, e){ modal = jQuery("#wpfc-wizard-" + e.id); modal.find("input#cdn-url").val(e.cdnurl); modal.find("select#cdn-url").val(e.cdnurl); modal.find("#origin-url").val(e.originurl); self.insert_keywords(modal, "keyword-item", e.keywords); self.insert_keywords(modal, "keyword-item-exclude", e.excludekeywords); if(e.file_types){ modal.find(".wpfc-checkbox-list input[type='checkbox']").attr("checked", false); jQuery.each(e.file_types.split(","), function( index, value ) { modal.find("#file-type-" + value).attr("checked", true); }); } }); }, add_new_keyword_keypress: function(){ jQuery(".wpfc-textbox-con .fixed-search input").keypress(function(e){ if(e.keyCode == 13){ var keyword = jQuery(e.target).val(); var keyword_type_class = jQuery(e.target).closest("li[class*='keyword-item']").attr("class"); jQuery(".wpfc-textbox-con").hide(); jQuery(e.target).val(""); jQuery('
  • ' + keyword + '
  • ').insertBefore(jQuery(e.target).closest("." + keyword_type_class)).click(function(){ jQuery(this).remove(); }); } }); }, click_event_add_new_keyword_button: function(){ jQuery(".wpfc-add-new-keyword").click(function(){ jQuery(this).next(".wpfc-textbox-con").show(); jQuery(this).next(".wpfc-textbox-con").find(".fixed-search input").focus(); }); }, set_buttons_action: function(){ var self = this; var action = ""; var current_page, next_page, current_page_number; var modal = jQuery("#wpfc-modal-" + self.id); self.buttons(); modal.find("button.wpfc-dialog-buttons").click(function(e){ action = modal.find(e.currentTarget).attr("action"); current_page_number = modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page"); if(action == "next"){ if(self.check_conditions("next", current_page_number)){ self.show_page("next"); } }else if(action == "back"){ self.show_page("back"); }else if(action == "finish"){ self.save_integration(); }else if(action == "close"){ Wpfc_Dialog.remove(); }else if(action == "remove"){ self.remove_integration(); }else if(action == "pause"){ self.pause_integration(); }else if(action == "start"){ self.start_integration(); } }); }, start_integration: function(){ var self = this; var modal = jQuery("#wpfc-modal-" + self.id); self.disable_button("start"); jQuery.ajax({ type: 'POST', dataType: "json", url: ajaxurl, data : {"action": "wpfc_start_cdn_integration", "id" : self.id, "nonce" : self.nonce}, success: function(res){ self.show_button("pause"); self.enable_button("pause"); self.hide_button("start"); jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("pause"); }, error: function(e) { self.enable_button("start"); alert("unknown error"); } }); }, pause_integration: function(){ var self = this; var modal = jQuery("#wpfc-modal-" + self.id); self.disable_button("pause"); jQuery.ajax({ type: 'POST', dataType: "json", url: ajaxurl, data : {"action": "wpfc_pause_cdn_integration", "id" : self.id, "nonce" : self.nonce}, success: function(res){ self.show_button("start"); self.enable_button("start"); self.hide_button("pause"); jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("pause"); }, error: function(e) { self.enable_button("pause"); alert("unknown error"); } }); }, remove_integration: function(){ var self = this; var modal = jQuery("#wpfc-modal-" + self.id); self.disable_button("remove"); jQuery.ajax({ type: 'POST', dataType: "json", url: ajaxurl, data : {"action": "wpfc_remove_cdn_integration", "id" : self.id, "nonce" : self.nonce}, success: function(res){ self.values = jQuery.grep(self.values, function (e, i) { if(e.id == self.id){ return false; } return true; }); self.enable_button("remove"); jQuery("div.tab7 div[wpfc-cdn-name='" + self.id + "']").find("div.meta").removeClass("isConnected"); Wpfc_Dialog.remove(); console.log(res); }, error: function(e) { self.enable_button("remove"); alert("unknown error"); } }); }, save_integration: function(){ var self = this; var modal = jQuery("#wpfc-modal-" + self.id); self.buttons(); self.values = {}; self.values.id = self.id; self.disable_button("finish"); if(modal.find("input#cdn-url").length == 1){ self.values.cdnurl = modal.find("input#cdn-url").val(); }else if(modal.find("select#cdn-url").length == 1){ self.values.cdnurl = modal.find("select#cdn-url").val(); } self.values.originurl = modal.find("input#origin-url").val(); self.values.file_types = modal.find(".wpfc-checkbox-list input[type='checkbox']:checked").map(function(){return this.value;}).get().join(","); self.values.keywords = modal.find(".keyword-item-list li.keyword-item a.keyword-label").map(function(){return this.text;}).get().join(","); self.values.excludekeywords = modal.find(".keyword-item-list li.keyword-item-exclude a.keyword-label").map(function(){return this.text;}).get().join(","); jQuery.ajax({ type: 'POST', dataType: "json", url: ajaxurl, data : {"action": "wpfc_save_cdn_integration", "nonce" : self.nonce, "values" : self.values, "file_types" : self.values.file_types, "keywords" : self.values.keywords, "excludekeywords" : self.values.excludekeywords}, success: function(res){ jQuery("div[wpfc-cdn-name='" + self.id + "']").find("div.meta").addClass("isConnected"); self.enable_button("finish"); self.show_page("next"); console.log(res); }, error: function(e) { self.enable_button("finish"); alert("unknown error"); } }); }, enable_button: function(button_type){ clearInterval(this.interval); let self = this; let modal = jQuery("#wpfc-modal-" + self.id); let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']"); button.attr("disabled", false); button.text(button.text().replace(/\.+$/, "")); }, disable_button: function(button_type){ let self = this; let modal = jQuery("#wpfc-modal-" + self.id); let button = modal.find(".wpfc-dialog-buttons[action='" + button_type + "']"); let text = button.text(); let dot = 0; button.attr("disabled", true); button.text(text + "."); self.interval = setInterval(function(){ text = button.text(); dot = text.match(/\./g); console.log(dot); console.log(button); if(dot){ if(dot.length < 3){ button.text(text + "."); }else{ button.text(text.replace(/\.+$/, "")); } }else{ button.text(text + "."); } }, 300); }, check_url_exist: function(){ var self = this; var modal = jQuery("#wpfc-modal-" + self.id); var cdn_url = modal.find("#cdn-url").val(); var origin_url = modal.find("#origin-url").val(); if(!cdn_url || !origin_url){ if(!cdn_url){ modal.find("#cdn-url").css("background-color", "red"); }else{ modal.find("#cdn-url").css("background-color", "white"); } if(!origin_url){ modal.find("#origin-url").css("background-color", "red"); }else{ modal.find("#origin-url").css("background-color", "white"); } return; }else{ modal.find("#cdn-url").css("background-color", "white"); modal.find("#origin-url").css("background-color", "white"); } modal.find("#cdn-url-loading").show(); modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html(""); jQuery.ajax({ type: 'GET', dataType: "json", url: ajaxurl, data : {"action": "wpfc_check_url", "url" : cdn_url, "origin_url" : origin_url, "type" : WpfcCDN.id, "nonce" : self.nonce}, success: function(res){ modal.find("#cdn-url-loading").hide(); if(res.success){ self.show_page("next"); modal.find("#cdn-url").css("background-color", "white"); modal.find("#origin-url").css("background-color", "white"); }else{ if(WpfcCDN.id == "cloudflare"){ modal.find("label.wiz-error-msg").html(res.error_message); }else{ modal.find(".wpfc-cdn-pages-container div.wiz-cont:visible #cdn-url").nextAll("label").html(res.error_message); } } }, error: function(e) { modal.find("#cdn-url-loading").hide(); alert("unknown error"); } }); }, show_page: function(type){ var current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible"); current_page.hide(); if(type == "next"){ current_page.next().show(); }else if(type == "back"){ current_page.prev().show(); } this.buttons(); }, buttons: function(){ var self = this; var current_page, next_pages; current_page = jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible"); next_pages = current_page.nextAll(".wiz-cont"); jQuery(".wpfc-dialog-buttons[action]").hide(); jQuery(self.values).each(function(i, e){ if(e.id == self.id){ self.show_button("remove"); if(typeof e.status != "undefined" && e.status == "pause"){ self.show_button("start"); }else{ self.show_button("pause"); } } }); if(next_pages.length){ if(next_pages.length > 1){ self.show_button("next"); }else if(next_pages.length == 1){ self.show_button("finish"); } if(jQuery("#wpfc-modal-" + this.id).find(".wpfc-cdn-pages-container div.wiz-cont:visible").attr("wpfc-cdn-page") > 1){ if(current_page.attr("wpfc-cdn-page") == 2){ if(self.id == "maxcdn"){ self.show_button("back"); } }else{ self.show_button("back"); } } }else{ self.show_button("close"); } }, show_button: function(type){ jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").show(); }, hide_button: function(type){ jQuery("#wpfc-modal-" + this.id + " .wpfc-dialog-buttons[action='" + type + "']").hide(); }, load_template: function(callbak){ var self = this; jQuery.ajax({ type: 'POST', dataType: "json", url: ajaxurl, data : {"action": "wpfc_cdn_template", "id": self.id}, success: function(res){ jQuery("body").append(res.content); Wpfc_Dialog.dialog("wpfc-modal-" + self.id); callbak(); jQuery("#revert-loader-toolbar").hide(); }, error: function(e) { alert("CDN Template Error"); } }); } };wp-fastest-cache/js/column.js000064400000002603151435171370012161 0ustar00if(window.attachEvent) { window.attachEvent('onload', wpfc_column_button_action); } else { if(window.onload) { var curronload_1 = window.onload; var newonload_1 = function(evt) { curronload_1(evt); wpfc_column_button_action(evt); }; window.onload = newonload_1; } else { window.onload = wpfc_column_button_action; } } function wpfc_column_button_action(){ jQuery(document).ready(function(){ jQuery("a[id^='wpfc-clear-cache-link']").click(function(e){ var post_id = jQuery(e.target).attr("data-id"); var nonce = jQuery(e.target).attr("data-nonce"); jQuery("#wpfc-clear-cache-link-" + post_id).css('cursor', 'wait'); jQuery.ajax({ type: 'GET', url: ajaxurl, data : {"action": "wpfc_clear_cache_column", "id" : post_id, "nonce" : nonce}, dataType : "json", cache: false, success: function(data){ jQuery("#wpfc-clear-cache-link-" + post_id).css('cursor', 'pointer'); if(typeof data.success != "undefined" && data.success == true){ // }else{ alert("Clear Cache Error"); } } }); return false; }); }); }wp-fastest-cache/uninstall.php000064400000003716151435171370012442 0ustar00 $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache/", $hook)){ $args = array(); foreach ( (array) $events as $event_key => $event ) { if(isset($event["args"]) && isset($event["args"][0])){ $args = array(json_encode(json_decode($event["args"][0]))); } } wp_clear_scheduled_hook($hook, $args); } } } ?>wp-fastest-cache/inc/admin.php000064400000434470151435171370012277 0ustar00options = $this->getOptions(); $this->setCronJobSettings(); $this->addButtonOnEditor(); add_action('admin_enqueue_scripts', array($this, 'addJavaScript')); add_filter('plugin_locale', array($this, 'my_plugin_locale_filter'), 10, 2); } public function my_plugin_locale_filter($locale, $domain){ if($domain === 'wp-fastest-cache'){ if(!isset($this->options->wpFastestCacheLanguage)){ return "en_US"; } $locale = $this->options->wpFastestCacheLanguage; if(file_exists(WPFC_MAIN_PATH."languages/wp-fastest-cache-".$locale.".mo")){ return $locale; }else{ return "en_US"; } } return $locale; } public function create_auto_cache_timeout($recurrance, $interval){ $exist_cronjob = false; $wpfc_timeout_number = 0; $crons = _get_cron_array(); foreach ((array)$crons as $cron_key => $cron_value) { foreach ( (array) $cron_value as $hook => $events ) { if(preg_match("/^wp\_fastest\_cache(.*)/", $hook, $id)){ if(!$id[1] || preg_match("/^\_(\d+)$/", $id[1])){ $wpfc_timeout_number++; foreach ( (array) $events as $event_key => $event ) { $schedules = wp_get_schedules(); if(isset($event["args"]) && isset($event["args"][0])){ if($event["args"][0] == '{"prefix":"all","content":"all"}'){ if($schedules[$event["schedule"]]["interval"] <= $interval){ $exist_cronjob = true; } } } } } } } } if(!$exist_cronjob){ $args = array("prefix" => "all", "content" => "all"); wp_schedule_event(time(), $recurrance, "wp_fastest_cache_".$wpfc_timeout_number, array(json_encode($args))); } } public function get_premium_version(){ $wpfc_premium_version = ""; if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/wpFastestCachePremium.php")){ if($data = @file_get_contents(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/wpFastestCachePremium.php")){ preg_match("/Version:\s*(.+)/", $data, $out); if(isset($out[1]) && $out[1]){ $wpfc_premium_version = trim($out[1]); } } } return $wpfc_premium_version; } public function addButtonOnEditor(){ add_action('admin_print_footer_scripts', array($this, 'addButtonOnQuicktagsEditor')); add_action('init', array($this, 'myplugin_buttonhooks')); } public function checkShortCode($content){ preg_match("/\[wpfcNOT\]/", $content, $wpfcNOT); if(count($wpfcNOT) > 0){ if(is_single() || is_page()){ $this->blockCache = true; } $content = str_replace("[wpfcNOT]", "", $content); } return $content; } public function myplugin_buttonhooks() { // Only add hooks when the current user has permissions AND is in Rich Text editor mode if (current_user_can( 'manage_options' )) { add_filter("mce_external_plugins", array($this, "myplugin_register_tinymce_javascript")); add_filter('mce_buttons', array($this, 'myplugin_register_buttons')); } } // Load the TinyMCE plugin : editor_plugin.js (wp2.5) public function myplugin_register_tinymce_javascript($plugin_array) { $plugin_array['wpfc'] = plugins_url('../js/button.js?v='.time(),__file__); return $plugin_array; } public function myplugin_register_buttons($buttons) { array_push($buttons, 'wpfc'); return $buttons; } public function addButtonOnQuicktagsEditor(){ if (wp_script_is('quicktags') && current_user_can( 'manage_options' )){ ?> notify(array("The plugin does not work with Multisite.\n Please click here to learn how to enable it.", "error")); // return 0; // } // } if(current_user_can('manage_options')){ if($_POST["wpFastestCachePage"] == "options"){ $this->exclude_urls(); $this->saveOption(); }else if($_POST["wpFastestCachePage"] == "deleteCache"){ $this->deleteCache(); }else if($_POST["wpFastestCachePage"] == "deleteCssAndJsCache"){ $this->deleteCache(true); }else if($_POST["wpFastestCachePage"] == "cacheTimeout"){ $this->addCacheTimeout(); } }else{ die("Forbidden"); } } } } public function exclude_urls(){ // to exclude wishlist url of YITH WooCommerce Wishlist if($this->isPluginActive('yith-woocommerce-wishlist/init.php')){ $wishlist_page_id = get_option("yith_wcwl_wishlist_page_id"); $permalink = urldecode(get_permalink($wishlist_page_id)); if(preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out)){ $url = trim($out[1], "/"); } } if(isset($url) && $url){ $rules_std = array(); $rules_json = get_option("WpFastestCacheExclude"); $new_rule = new stdClass; $new_rule->prefix = "exact"; $new_rule->content = $url; $new_rule->type = "page"; if($rules_json === false){ array_push($rules_std, $new_rule); add_option("WpFastestCacheExclude", json_encode($rules_std), null, "yes"); }else{ $rules_std = json_decode($rules_json); if(!is_array($rules_std)){ $rules_std = array(); } if(!in_array($new_rule, $rules_std)){ array_push($rules_std, $new_rule); update_option("WpFastestCacheExclude", json_encode($rules_std)); } } } } public function addCacheTimeout(){ if(isset($_POST["wpFastestCacheTimeOut"])){ if($_POST["wpFastestCacheTimeOut"]){ if(isset($_POST["wpFastestCacheTimeOutHour"]) && is_numeric($_POST["wpFastestCacheTimeOutHour"])){ if(isset($_POST["wpFastestCacheTimeOutMinute"]) && is_numeric($_POST["wpFastestCacheTimeOutMinute"])){ $selected = mktime($_POST["wpFastestCacheTimeOutHour"], $_POST["wpFastestCacheTimeOutMinute"], 0, date("n"), date("j"), date("Y")); if($selected > time()){ $timestamp = $selected; }else{ if(time() - $selected < 60){ $timestamp = $selected + 60; }else{ // if selected time is less than now, 24hours is added $timestamp = $selected + 24*60*60; } } wp_clear_scheduled_hook($this->slug()); wp_schedule_event($timestamp, $_POST["wpFastestCacheTimeOut"], $this->slug()); }else{ echo "Minute was not set"; exit; } }else{ echo "Hour was not set"; exit; } }else{ wp_clear_scheduled_hook($this->slug()); } } } public function setCronJobSettings(){ if(wp_next_scheduled($this->slug())){ $this->cronJobSettings["period"] = wp_get_schedule($this->slug()); $this->cronJobSettings["time"] = wp_next_scheduled($this->slug()); } } public function addMenuPage(){ add_action('admin_menu', array($this, 'register_my_custom_menu_page')); } public function addJavaScript(){ wp_enqueue_script("jquery-ui-draggable"); wp_enqueue_script("jquery-ui-position"); wp_enqueue_script("jquery-ui-sortable"); wp_enqueue_script("wpfc-dialog", plugins_url("wp-fastest-cache/js/dialog.js"), array(), time(), false); wp_enqueue_script("wpfc-dialog-new", plugins_url("wp-fastest-cache/js/dialog_new.js"), array(), time(), false); wp_enqueue_script("wpfc-cdn", plugins_url("wp-fastest-cache/js/cdn/cdn.js"), array(), time(), false); wp_enqueue_script("wpfc-schedule", plugins_url("wp-fastest-cache/js/schedule.js"), array(), time(), true); wp_enqueue_script("wpfc-db", plugins_url("wp-fastest-cache/js/db.js"), array(), time(), true); if(class_exists("WpFastestCacheImageOptimisation")){ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/js/statics.js")){ wp_enqueue_script("wpfc-statics", plugins_url("wp-fastest-cache-premium/pro/js/statics.js"), array(), time(), false); } if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/js/premium.js")){ wp_enqueue_script("wpfc-premium", plugins_url("wp-fastest-cache-premium/pro/js/premium.js"), array(), time(), true); } } } public function saveOption(){ unset($_POST["wpFastestCachePage"]); unset($_POST["option_page"]); unset($_POST["action"]); unset($_POST["_wpnonce"]); unset($_POST["_wp_http_referer"]); $data = json_encode($_POST); //for optionsPage() $_POST is array and json_decode() converts to stdObj $this->options = json_decode($data); $this->systemMessage = $this->modifyHtaccess($_POST); if(isset($this->systemMessage[1]) && $this->systemMessage[1] != "error"){ if($message = $this->checkCachePathWriteable()){ if(is_array($message)){ $this->systemMessage = $message; }else{ if(isset($this->options->wpFastestCachePreload)){ $this->set_preload(); }else{ delete_option("WpFastestCachePreLoad"); wp_clear_scheduled_hook("wp_fastest_cache_Preload"); } if(get_option("WpFastestCache")){ update_option("WpFastestCache", $data); }else{ add_option("WpFastestCache", $data, null, "yes"); } } } } $this->notify($this->systemMessage); } public function checkCachePathWriteable(){ $message = array(); if(!is_dir($this->getWpContentDir("/cache/"))){ if (@mkdir($this->getWpContentDir("/cache/"), 0755, true)){ // }else{ array_push($message, "- ".$this->getWpContentDir("/cache/")." is needed to be created"); } }else{ if (@mkdir($this->getWpContentDir("/cache/testWpFc/"), 0755, true)){ rmdir($this->getWpContentDir("/cache/testWpFc/")); }else{ array_push($message, "- ".$this->getWpContentDir("/cache/")." permission has to be 755"); } } if(!is_dir($this->getWpContentDir("/cache/all/"))){ if (@mkdir($this->getWpContentDir("/cache/all/"), 0755, true)){ // }else{ array_push($message, "- ".$this->getWpContentDir("/cache/all/")." is needed to be created"); } }else{ if (@mkdir($this->getWpContentDir("/cache/all/testWpFc/"), 0755, true)){ rmdir($this->getWpContentDir("/cache/all/testWpFc/")); }else{ array_push($message, "- ".$this->getWpContentDir("/cache/all/")." permission has to be 755"); } } if(count($message) > 0){ return array(implode("
    ", $message), "error"); }else{ return true; } } public function modifyHtaccess($post){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"])){ // return array("The plugin does not work with Microsoft IIS. Only with Apache", "error"); // } // if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){ // return array("The plugin does not work with Nginx. Only with Apache", "error"); // } if(!file_exists($path.".htaccess")){ if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && (preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"]) || preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"]))){ // }else{ return array(" Read More", "error"); } } if($this->isPluginActive('wp-postviews/wp-postviews.php')){ $wp_postviews_options = get_option("views_options"); $wp_postviews_options["use_ajax"] = true; update_option("views_options", $wp_postviews_options); if(!WP_CACHE){ if($wp_config = @file_get_contents(ABSPATH."wp-config.php")){ $wp_config = str_replace("\$table_prefix", "define('WP_CACHE', true);\n\$table_prefix", $wp_config); if(!@file_put_contents(ABSPATH."wp-config.php", $wp_config)){ return array("define('WP_CACHE', true); is needed to be added into wp-config.php", "error"); } }else{ return array("define('WP_CACHE', true); is needed to be added into wp-config.php", "error"); } } } // if(get_option('template') == "Divi"){ // // Divi Theme - Static CSS File Generation // if($et_divi = get_option("et_divi")){ // if(isset($et_divi["et_pb_static_css_file"]) && $et_divi["et_pb_static_css_file"] == "on"){ // return array("You have to disable the Static CSS File Generation option of Divi Theme", "error"); // } // } // } if ($this->isPluginActive('elementor/elementor.php')) { // Elementor Plugin - Element Caching $new_option = get_option('elementor_element_cache_ttl'); $old_option = get_option('elementor_experiment-e_element_cache'); $is_elementor_cache_inactive = false; if ($new_option !== false) { // New versions: element cache is active unless explicitly disabled/inactive $is_elementor_cache_inactive = in_array($new_option, ['disable', 'inactive'], true); }elseif ($old_option !== false) { // Old versions: element cache is active unless inactive $is_elementor_cache_inactive = ($old_option === 'inactive'); } if (!$is_elementor_cache_inactive) { return array( "You have to set the Element Caching option of the Elementor plugin to Inactive", "error" ); } $elementor_css_print_method_option = get_option("elementor_css_print_method"); if($elementor_css_print_method_option && $elementor_css_print_method_option != "internal"){ return array( "You have to set the CSS Print Method option of the Elementor plugin to Internal Embedding", "error" ); } } if(file_exists($path.".htaccess")){ $htaccess = @file_get_contents($path.".htaccess"); }else{ $htaccess = ""; } // if(defined('DONOTCACHEPAGE')){ // return array("DONOTCACHEPAGE ", "error"); // }else if(!preg_match("/^https/i", get_option("home")) && is_ssl()){ return array("Mismatch detected: Site is using HTTPS but the 'Home' URL is set to HTTP. Please update your WordPress 'Home' URL to use HTTPS", "error"); }else if(!get_option('permalink_structure')){ return array("You have to set permalinks", "error"); }else if($res = $this->checkSuperCache($path, $htaccess)){ return $res; }else if($this->isPluginActive('cookie-notice/cookie-notice.php')){ return array("Cookie Notice & Compliance for GDPR / CCPA needs to be deactivated", "error"); }else if($this->isPluginActive('fast-velocity-minify/fvm.php')){ return array("Fast Velocity Minify needs to be deactivated", "error"); }else if($this->isPluginActive('far-future-expiration/far-future-expiration.php')){ return array("Far Future Expiration Plugin needs to be deactivated", "error"); }else if($this->isPluginActive('sg-cachepress/sg-cachepress.php')){ return array("SG Optimizer needs to be deactived", "error"); }else if($this->isPluginActive('adrotate/adrotate.php') || $this->isPluginActive('adrotate-pro/adrotate.php')){ return $this->warningIncompatible("AdRotate"); }else if($this->isPluginActive('mobilepress/mobilepress.php')){ return $this->warningIncompatible("MobilePress", array("name" => "WPtouch Mobile", "url" => "https://wordpress.org/plugins/wptouch/")); }else if($this->isPluginActive('speed-booster-pack/speed-booster-pack.php')){ return array("Speed Booster Pack needs to be deactivated
    ", "error"); }else if($this->isPluginActive('cdn-enabler/cdn-enabler.php')){ return array("CDN Enabler needs to be deactivated
    This plugin has aldready CDN feature", "error"); }else if($this->isPluginActive('wp-performance-score-booster/wp-performance-score-booster.php')){ return array("WP Performance Score Booster needs to be deactivated
    This plugin has aldready Gzip, Leverage Browser Caching features", "error"); }else if($this->isPluginActive('bwp-minify/bwp-minify.php')){ return array("Better WordPress Minify needs to be deactivated
    This plugin has aldready Minify feature", "error"); }else if($this->isPluginActive('check-and-enable-gzip-compression/richards-toolbox.php')){ return array("Check and Enable GZIP compression needs to be deactivated
    This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('gzippy/gzippy.php')){ return array("GZippy needs to be deactivated
    This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('gzip-ninja-speed-compression/gzip-ninja-speed.php')){ return array("GZip Ninja Speed Compression needs to be deactivated
    This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('wordpress-gzip-compression/ezgz.php')){ return array("WordPress Gzip Compression needs to be deactivated
    This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('filosofo-gzip-compression/filosofo-gzip-compression.php')){ return array("GZIP Output needs to be deactivated
    This plugin has aldready Gzip feature", "error"); }else if($this->isPluginActive('head-cleaner/head-cleaner.php')){ return array("Head Cleaner needs to be deactivated", "error"); }else if($this->isPluginActive('far-future-expiry-header/far-future-expiration.php')){ return array("Far Future Expiration Plugin needs to be deactivated", "error"); }else if(is_writable($path.".htaccess")){ $htaccess = $this->insertWebp($htaccess); $htaccess = $this->insertLBCRule($htaccess, $post); $htaccess = $this->insertGzipRule($htaccess, $post); $htaccess = $this->insertRewriteRule($htaccess, $post); $htaccess = $this->to_move_gtranslate_rules($htaccess); file_put_contents($path.".htaccess", $htaccess); }else{ return array(__("Options have been saved", 'wp-fastest-cache'), "updated"); //return array(".htaccess is not writable", "error"); } return array(__("Options have been saved", 'wp-fastest-cache'), "updated"); } public function to_move_gtranslate_rules($htaccess){ preg_match("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", $htaccess, $gtranslate); if(isset($gtranslate[0])){ $htaccess = preg_replace("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", "", $htaccess); $htaccess = $gtranslate[0]."\n".$htaccess; } return $htaccess; } public function warningIncompatible($incompatible, $alternative = false){ if($alternative){ return array($incompatible."
    ".$alternative["name"]."", "error"); }else{ return array($incompatible." ", "error"); } } public function insertWebp($htaccess){ if(class_exists("WpFastestCachePowerfulHtml")){ if(defined("WPFC_DISABLE_WEBP") && WPFC_DISABLE_WEBP){ $webp = false; }else{ $webp = true; $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ $std_obj = json_decode($cdn_values); foreach($std_obj as $key => $value){ if($value->id == "cloudflare"){ include_once('cdn.php'); CdnWPFC::cloudflare_clear_cache(); $res = CdnWPFC::cloudflare_get_zone_id($value->cdnurl, $value->originurl); if($res["success"] && ($res["plan"] == "free")){ $webp = false; } break; } } } } }else{ $webp = false; } if($webp){ $basename = "$1.webp"; /* This part for sub-directory installation WordPress Address (URL): site_url() Site Address (URL): home_url() */ if(preg_match("/https?\:\/\/[^\/]+\/(.+)/", site_url(), $siteurl_base_name)){ if(preg_match("/https?\:\/\/[^\/]+\/(.+)/", home_url(), $homeurl_base_name)){ /* site_url() return http://example.com/sub-directory home_url() returns http://example.com/sub-directory */ $homeurl_base_name[1] = trim($homeurl_base_name[1], "/"); $siteurl_base_name[1] = trim($siteurl_base_name[1], "/"); if($homeurl_base_name[1] == $siteurl_base_name[1]){ if(preg_match("/".preg_quote($homeurl_base_name[1], "/")."$/", trim(ABSPATH, "/"))){ $basename = $homeurl_base_name[1]."/".$basename; } }else{ if(!preg_match("/\//", $homeurl_base_name[1]) && !preg_match("/\//", $siteurl_base_name[1])){ /* site_url() return http://example.com/wordpress home_url() returns http://example.com/blog */ $basename = $homeurl_base_name[1]."/".$basename; $tmp_ABSPATH = str_replace(" ", "\ ", ABSPATH); if(preg_match("/\/$/", $tmp_ABSPATH)){ $tmp_ABSPATH = rtrim($tmp_ABSPATH, "/"); $tmp_ABSPATH = dirname($tmp_ABSPATH)."/".$homeurl_base_name[1]."/"; } } } }else{ /* site_url() return http://example.com/sub-directory home_url() returns http://example.com/ */ $siteurl_base_name[1] = trim($siteurl_base_name[1], "/"); $basename = $siteurl_base_name[1]."/".$basename; } } if(ABSPATH == "//"){ $RewriteCond = "RewriteCond %{DOCUMENT_ROOT}/".$basename." -f"."\n"; }else{ // to escape spaces if(!isset($tmp_ABSPATH)){ $tmp_ABSPATH = str_replace(" ", "\ ", ABSPATH); } $RewriteCond = "RewriteCond %{DOCUMENT_ROOT}/".$basename." -f [or]"."\n"; $RewriteCond = $RewriteCond."RewriteCond ".$tmp_ABSPATH."$1.webp -f"."\n"; } $data = "# BEGIN WEBPWpFastestCache"."\n". ""."\n". "RewriteEngine On"."\n". "RewriteCond %{HTTP_ACCEPT} image/webp"."\n". "RewriteCond %{REQUEST_URI} \.(jpe?g|png)"."\n". $RewriteCond. "RewriteRule ^(.*) \"/".$basename."\" [L]"."\n". ""."\n". ""."\n". "Header append Vary Accept env=REDIRECT_accept"."\n". ""."\n". "AddType image/webp .webp"."\n". "# END WEBPWpFastestCache"."\n"; if(!preg_match("/BEGIN\s*WEBPWpFastestCache/", $htaccess)){ $htaccess = $data.$htaccess; } return $htaccess; }else{ $htaccess = preg_replace("/#\s?BEGIN\s?WEBPWpFastestCache.*?#\s?END\s?WEBPWpFastestCache/s", "", $htaccess); return $htaccess; } } public function insertLBCRule($htaccess, $post){ if(isset($post["wpFastestCacheLBC"]) && $post["wpFastestCacheLBC"] == "on"){ $data = "# BEGIN LBCWpFastestCache"."\n". ''."\n". ''."\n". 'AddType application/font-woff2 .woff2'."\n". 'AddType application/x-font-opentype .otf'."\n". 'ExpiresActive On'."\n". 'ExpiresDefault A0'."\n". 'ExpiresByType video/webm A10368000'."\n". 'ExpiresByType video/ogg A10368000'."\n". 'ExpiresByType video/mp4 A10368000'."\n". 'ExpiresByType image/avif A10368000'."\n". 'ExpiresByType image/webp A10368000'."\n". 'ExpiresByType image/gif A10368000'."\n". 'ExpiresByType image/png A10368000'."\n". 'ExpiresByType image/jpg A10368000'."\n". 'ExpiresByType image/jpeg A10368000'."\n". 'ExpiresByType image/ico A10368000'."\n". 'ExpiresByType image/svg+xml A10368000'."\n". 'ExpiresByType text/css A10368000'."\n". 'ExpiresByType text/javascript A10368000'."\n". 'ExpiresByType application/javascript A10368000'."\n". 'ExpiresByType application/x-javascript A10368000'."\n". 'ExpiresByType application/font-woff2 A10368000'."\n". 'ExpiresByType application/x-font-opentype A10368000'."\n". 'ExpiresByType application/x-font-truetype A10368000'."\n". ''."\n". ''."\n". 'Header set Expires "max-age=A10368000, public"'."\n". 'Header unset ETag'."\n". 'Header set Connection keep-alive'."\n". 'FileETag None'."\n". ''."\n". ''."\n". "# END LBCWpFastestCache"."\n"; if(!preg_match("/BEGIN\s*LBCWpFastestCache/", $htaccess)){ return $data.$htaccess; }else{ return $htaccess; } }else{ //delete levere browser caching $htaccess = preg_replace("/#\s?BEGIN\s?LBCWpFastestCache.*?#\s?END\s?LBCWpFastestCache/s", "", $htaccess); return $htaccess; } } public function insertGzipRule($htaccess, $post){ if(isset($post["wpFastestCacheGzip"]) && $post["wpFastestCacheGzip"] == "on"){ $data = "# BEGIN GzipWpFastestCache"."\n". ""."\n". "AddType x-font/woff .woff"."\n". "AddType x-font/ttf .ttf"."\n". "AddOutputFilterByType DEFLATE image/svg+xml"."\n". "AddOutputFilterByType DEFLATE text/plain"."\n". "AddOutputFilterByType DEFLATE text/html"."\n". "AddOutputFilterByType DEFLATE text/xml"."\n". "AddOutputFilterByType DEFLATE text/css"."\n". "AddOutputFilterByType DEFLATE text/javascript"."\n". "AddOutputFilterByType DEFLATE application/xml"."\n". "AddOutputFilterByType DEFLATE application/xhtml+xml"."\n". "AddOutputFilterByType DEFLATE application/rss+xml"."\n". "AddOutputFilterByType DEFLATE application/javascript"."\n". "AddOutputFilterByType DEFLATE application/x-javascript"."\n". "AddOutputFilterByType DEFLATE application/x-font-ttf"."\n". "AddOutputFilterByType DEFLATE x-font/ttf"."\n". "AddOutputFilterByType DEFLATE application/vnd.ms-fontobject"."\n". "AddOutputFilterByType DEFLATE font/opentype font/ttf font/eot font/otf"."\n". ""."\n"; if(defined("WPFC_GZIP_FOR_COMBINED_FILES") && WPFC_GZIP_FOR_COMBINED_FILES){ $data = $data."\n".''."\n". "# to zip the combined css and js files"."\n\n". "RewriteEngine On"."\n". "RewriteCond %{HTTP:Accept-encoding} gzip"."\n". "RewriteCond %{REQUEST_FILENAME}\.gz -s"."\n". "RewriteRule ^(.*)\.(css|js) $1\.$2\.gz [QSA]"."\n\n". "# to revent double gzip and give the correct mime-type"."\n\n". "RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=FORCE_GZIP]"."\n". "RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=FORCE_GZIP]"."\n". "Header set Content-Encoding gzip env=FORCE_GZIP"."\n". ""."\n"; } $data = $data."# END GzipWpFastestCache"."\n"; $htaccess = preg_replace("/\s*\#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache\s*/s", "", $htaccess); return $data.$htaccess; }else{ //delete gzip rules $htaccess = preg_replace("/\s*\#\s?BEGIN\s?GzipWpFastestCache.*?#\s?END\s?GzipWpFastestCache\s*/s", "", $htaccess); return $htaccess; } } public function insertRewriteRule($htaccess, $post){ if(isset($post["wpFastestCacheStatus"]) && $post["wpFastestCacheStatus"] == "on"){ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); $htaccess = $this->getHtaccess().$htaccess; }else{ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); $this->deleteCache(); } if(defined("WPFC_SERVE_ONLY_VIA_CACHE") && WPFC_SERVE_ONLY_VIA_CACHE){ $htaccess = preg_replace("/#\s?BEGIN\s?WpFastestCache.*?#\s?END\s?WpFastestCache/s", "", $htaccess); } return $htaccess; } public function prefixRedirect(){ $forceTo = ""; if(defined("WPFC_DISABLE_REDIRECTION") && WPFC_DISABLE_REDIRECTION){ return $forceTo; } if(preg_match("/^https:\/\//", home_url())){ if(preg_match("/^https:\/\/www\./", home_url())){ $forceTo = "\nRewriteCond %{HTTPS} on"."\n". "RewriteCond %{HTTP_HOST} ^www.".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n"; }else{ $forceTo = "\nRewriteCond %{HTTPS} on"."\n". "RewriteCond %{HTTP_HOST} ^".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n"; } }else{ if(preg_match("/^http:\/\/www\./", home_url())){ $forceTo = "\nRewriteCond %{HTTP_HOST} ^".str_replace("www.", "", $_SERVER["HTTP_HOST"])."\n". "RewriteRule ^(.*)$ ".preg_quote(home_url(), "/")."\/$1 [R=301,L]"."\n"; }else{ $forceTo = "\nRewriteCond %{HTTP_HOST} ^www.".str_replace("www.", "", $_SERVER["HTTP_HOST"])." [NC]"."\n". "RewriteRule ^(.*)$ ".preg_quote(home_url(), "/")."\/$1 [R=301,L]"."\n"; } } return $forceTo; } public function getHtaccess(){ $mobile = ""; $loggedInUser = ""; $ifIsNotSecure = ""; $trailing_slash_rule = ""; $consent_cookie = ""; $cache_path = '/cache/all/'; if($this->isPluginActive('sitepress-multilingual-cms/sitepress.php')){ $language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type'); if($language_negotiation_type == 2){ $cache_path = '/cache/%{HTTP_HOST}/all/'; } } if($this->isPluginActive('polylang/polylang.php') || $this->isPluginActive('polylang-pro/polylang.php')){ $polylang_settings = get_option("polylang"); if(isset($polylang_settings["force_lang"])){ if($polylang_settings["force_lang"] == 2 || $polylang_settings["force_lang"] == 3){ // The language is set from the subdomain name in pretty permalinks // The language is set from different domains $cache_path = '/cache/%{HTTP_HOST}/all/'; } } } if(isset($_POST["wpFastestCacheMobile"]) && $_POST["wpFastestCacheMobile"] == "on"){ $mobile = "RewriteCond %{HTTP_USER_AGENT} !^.*".$this->getMobileUserAgents().".*$ [NC]"."\n"; if(isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'])){ $mobile = $mobile."RewriteCond %{HTTP_CLOUDFRONT_IS_MOBILE_VIEWER} false [NC]"."\n"; $mobile = $mobile."RewriteCond %{HTTP_CLOUDFRONT_IS_TABLET_VIEWER} false [NC]"."\n"; } } if(isset($_POST["wpFastestCacheLoggedInUser"]) && $_POST["wpFastestCacheLoggedInUser"] == "on"){ $loggedInUser = "RewriteCond %{HTTP:Cookie} !wordpress_logged_in"."\n"; } if(!preg_match("/^https/i", get_option("home"))){ $ifIsNotSecure = "RewriteCond %{HTTPS} !=on"; } if($this->is_trailing_slash()){ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} \/$"."\n"; }else{ $trailing_slash_rule = "RewriteCond %{REQUEST_URI} ![^\/]+\/$"."\n"; } $query_string = "RewriteCond %{QUERY_STRING} !.+ [OR]"."\n". "RewriteCond %{QUERY_STRING} fbclid="."\n"; $data = "# BEGIN WpFastestCache"."\n". "# Modified Time: ".date("d-m-y G:i:s", current_time('timestamp'))."\n". ""."\n". "RewriteEngine On"."\n". "RewriteBase /"."\n". $this->ruleForWpContent()."\n". $this->prefixRedirect(). $this->excludeRules()."\n". $this->excludeAdminCookie()."\n". $this->http_condition_rule()."\n". "RewriteCond %{HTTP_USER_AGENT} !(".$this->get_excluded_useragent().")"."\n". "RewriteCond %{HTTP_USER_AGENT} !(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)"."\n". "RewriteCond %{REQUEST_METHOD} !POST"."\n". $ifIsNotSecure."\n". "RewriteCond %{REQUEST_URI} !(\/){2,}"."\n". "RewriteCond %{THE_REQUEST} !(\/){2,}"."\n". $trailing_slash_rule. $query_string. $loggedInUser. $consent_cookie. "RewriteCond %{HTTP:Cookie} !comment_author_"."\n". //"RewriteCond %{HTTP:Cookie} !woocommerce_items_in_cart"."\n". 'RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]'."\n".$mobile; if(ABSPATH == "//"){ $data = $data."RewriteCond %{DOCUMENT_ROOT}/".WPFC_WP_CONTENT_BASENAME.$cache_path."$1/index.html -f"."\n"; }else{ //WARNING: If you change the following lines, you need to update webp as well $data = $data."RewriteCond %{DOCUMENT_ROOT}/".WPFC_WP_CONTENT_BASENAME.$cache_path."$1/index.html -f [or]"."\n"; // to escape spaces $tmp_WPFC_WP_CONTENT_DIR = str_replace(" ", "\ ", WPFC_WP_CONTENT_DIR); $data = $data."RewriteCond ".$tmp_WPFC_WP_CONTENT_DIR.$cache_path.$this->getRewriteBase(true)."$1/index.html -f"."\n"; } $data = $data.'RewriteRule ^(.*) "/'.$this->getRewriteBase().WPFC_WP_CONTENT_BASENAME.$cache_path.$this->getRewriteBase(true).'$1/index.html" [L]'."\n"; //RewriteRule !/ "/wp-content/cache/all/index.html" [L] if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme){ $wpfc_mobile = new WpFcMobileCache(); if($this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php')){ $wpfc_mobile->set_wptouch(true); }else{ $wpfc_mobile->set_wptouch(false); } $data = $data."\n\n\n".$wpfc_mobile->update_htaccess($data); } $data = $data.""."\n". ""."\n". "AddDefaultCharset UTF-8"."\n". ""."\n". "FileETag None"."\n". "Header unset ETag"."\n". "Header set Cache-Control \"max-age=0, no-cache, no-store, must-revalidate\""."\n". "Header set Pragma \"no-cache\""."\n". "Header set Expires \"Mon, 29 Oct 1923 20:30:00 GMT\""."\n". ""."\n". ""."\n". "# END WpFastestCache"."\n"; if(is_multisite()){ return ""; }else{ return preg_replace("/\n+/","\n", $data); } } public function http_condition_rule(){ $http_host = preg_replace("/(http(s?)\:)?\/\/(www\d*\.)?/i", "", trim(home_url(), "/")); if(preg_match("/\//", $http_host)){ $http_host = strstr($http_host, '/', true); } if(preg_match("/www\./", home_url())){ $http_host = "www.".$http_host; } return "RewriteCond %{HTTP_HOST} ^".$http_host; } public function ruleForWpContent(){ return ""; $newContentPath = str_replace(home_url(), "", content_url()); if(!preg_match("/wp-content/", $newContentPath)){ $newContentPath = trim($newContentPath, "/"); return "RewriteRule ^".$newContentPath."/cache/(.*) ".WPFC_WP_CONTENT_DIR."/cache/$1 [L]"."\n"; } return ""; } public function getRewriteBase($sub = ""){ if($sub && $this->is_subdirectory_install()){ $trimedProtocol = preg_replace("/http:\/\/|https:\/\//", "", trim(home_url(), "/")); $path = strstr($trimedProtocol, '/'); if($path){ return trim($path, "/")."/"; }else{ return ""; } } $url = rtrim(site_url(), "/"); preg_match("/https?:\/\/[^\/]+(.*)/", $url, $out); if(isset($out[1]) && $out[1]){ $out[1] = trim($out[1], "/"); if(preg_match("/\/".preg_quote($out[1], "/")."\//", WPFC_WP_CONTENT_DIR)){ return $out[1]."/"; }else{ return ""; } }else{ return ""; } } public function checkSuperCache($path, $htaccess){ if($this->isPluginActive('wp-super-cache/wp-cache.php')){ return array("WP Super Cache needs to be deactive", "error"); }else{ if(file_exists($path."wp-content/wp-cache-config.php")){ @unlink($path."wp-content/wp-cache-config.php"); } $message = ""; if(is_file($path."wp-content/wp-cache-config.php")){ $message .= "
    - be sure that you removed /wp-content/wp-cache-config.php"; } if(preg_match("/supercache/", $htaccess)){ $message .= "
    - be sure that you removed the rules of super cache from the .htaccess"; } return $message ? array("WP Super Cache cannot remove its own remnants so please follow the steps below".$message, "error") : ""; } return ""; } public function check_htaccess(){ $path = ABSPATH; if($this->is_subdirectory_install()){ $path = $this->getABSPATH(); } if(!is_writable($path.".htaccess") && count($_POST) > 0){ include_once(WPFC_MAIN_PATH."templates/htaccess.html"); $htaccess = @file_get_contents($path.".htaccess"); if(isset($this->options->wpFastestCacheLBC)){ $htaccess = $this->insertLBCRule($htaccess, array("wpFastestCacheLBC" => "on")); } if(isset($this->options->wpFastestCacheGzip)){ $htaccess = $this->insertGzipRule($htaccess, array("wpFastestCacheGzip" => "on")); } if(isset($this->options->wpFastestCacheStatus)){ $htaccess = $this->insertRewriteRule($htaccess, array("wpFastestCacheStatus" => "on")); } $htaccess = preg_replace("/\n+/","\n", $htaccess); echo ""; echo ""; ?> options->wpFastestCacheCombineCss) ? 'checked="checked"' : ""; $wpFastestCacheGoogleFonts = isset($this->options->wpFastestCacheGoogleFonts) ? 'checked="checked"' : ""; $wpFastestCacheGzip = isset($this->options->wpFastestCacheGzip) ? 'checked="checked"' : ""; $wpFastestCacheCombineJs = isset($this->options->wpFastestCacheCombineJs) ? 'checked="checked"' : ""; $wpFastestCacheCombineJsPowerFul = isset($this->options->wpFastestCacheCombineJsPowerFul) ? 'checked="checked"' : ""; $wpFastestCacheDisableEmojis = isset($this->options->wpFastestCacheDisableEmojis) ? 'checked="checked"' : ""; $wpFastestCacheRenderBlocking = isset($this->options->wpFastestCacheRenderBlocking) ? 'checked="checked"' : ""; $wpFastestCacheRenderBlockingCss = isset($this->options->wpFastestCacheRenderBlockingCss) ? 'checked="checked"' : ""; $wpFastestCacheDelayJS = isset($this->options->wpFastestCacheDelayJS) ? 'checked="checked"' : ""; $wpFastestCacheLanguage = isset($this->options->wpFastestCacheLanguage) ? $this->options->wpFastestCacheLanguage : "eng"; $wpFastestCacheLazyLoad = isset($this->options->wpFastestCacheLazyLoad) ? 'checked="checked"' : ""; $wpFastestCacheLazyLoad_keywords = isset($this->options->wpFastestCacheLazyLoad_keywords) ? $this->options->wpFastestCacheLazyLoad_keywords : ""; $wpFastestCacheLazyLoad_placeholder = isset($this->options->wpFastestCacheLazyLoad_placeholder) ? $this->options->wpFastestCacheLazyLoad_placeholder : "default"; $wpFastestCacheLazyLoad_exclude_full_size_img = isset($this->options->wpFastestCacheLazyLoad_exclude_full_size_img) ? 'checked="checked"' : ""; $wpFastestCacheLBC = isset($this->options->wpFastestCacheLBC) ? 'checked="checked"' : ""; $wpFastestCacheLoggedInUser = isset($this->options->wpFastestCacheLoggedInUser) ? 'checked="checked"' : ""; $wpFastestCacheMinifyCss = isset($this->options->wpFastestCacheMinifyCss) ? 'checked="checked"' : ""; $wpFastestCacheMinifyCssPowerFul = isset($this->options->wpFastestCacheMinifyCssPowerFul) ? 'checked="checked"' : ""; $wpFastestCacheMinifyHtml = isset($this->options->wpFastestCacheMinifyHtml) ? 'checked="checked"' : ""; $wpFastestCacheMinifyHtmlPowerFul = isset($this->options->wpFastestCacheMinifyHtmlPowerFul) ? 'checked="checked"' : ""; $wpFastestCacheMinifyJs = isset($this->options->wpFastestCacheMinifyJs) ? 'checked="checked"' : ""; $wpFastestCacheMobile = isset($this->options->wpFastestCacheMobile) ? 'checked="checked"' : ""; $wpFastestCacheMobileTheme = isset($this->options->wpFastestCacheMobileTheme) ? 'checked="checked"' : ""; $wpFastestCacheMobileTheme_themename = isset($this->options->wpFastestCacheMobileTheme_themename) ? $this->options->wpFastestCacheMobileTheme_themename : ""; $wpFastestCacheNewPost = isset($this->options->wpFastestCacheNewPost) ? 'checked="checked"' : ""; $wpFastestCacheRemoveComments = isset($this->options->wpFastestCacheRemoveComments) ? 'checked="checked"' : ""; $wpFastestCachePreload = isset($this->options->wpFastestCachePreload) ? 'checked="checked"' : ""; $wpFastestCachePreload_homepage = isset($this->options->wpFastestCachePreload_homepage) ? 'checked="checked"' : ""; $wpFastestCachePreload_post = isset($this->options->wpFastestCachePreload_post) ? 'checked="checked"' : ""; $wpFastestCachePreload_category = isset($this->options->wpFastestCachePreload_category) ? 'checked="checked"' : ""; $wpFastestCachePreload_customposttypes = isset($this->options->wpFastestCachePreload_customposttypes) ? 'checked="checked"' : ""; $wpFastestCachePreload_customTaxonomies = isset($this->options->wpFastestCachePreload_customTaxonomies) ? 'checked="checked"' : ""; $wpFastestCachePreload_page = isset($this->options->wpFastestCachePreload_page) ? 'checked="checked"' : ""; $wpFastestCachePreload_tag = isset($this->options->wpFastestCachePreload_tag) ? 'checked="checked"' : ""; $wpFastestCachePreload_attachment = isset($this->options->wpFastestCachePreload_attachment) ? 'checked="checked"' : ""; $wpFastestCachePreload_number = isset($this->options->wpFastestCachePreload_number) ? esc_attr($this->options->wpFastestCachePreload_number) : 4; $wpFastestCachePreload_restart = isset($this->options->wpFastestCachePreload_restart) ? 'checked="checked"' : ""; $wpFastestCachePreload_order = isset($this->options->wpFastestCachePreload_order) ? esc_attr($this->options->wpFastestCachePreload_order) : ""; $wpFastestCachePreload_sitemap = isset($this->options->wpFastestCachePreload_sitemap) ? esc_attr($this->options->wpFastestCachePreload_sitemap) : ""; $wpFastestCacheStatus = isset($this->options->wpFastestCacheStatus) ? 'checked="checked"' : ""; $wpFastestCacheTimeOut = isset($this->cronJobSettings["period"]) ? $this->cronJobSettings["period"] : ""; $wpFastestCacheUpdatePost = isset($this->options->wpFastestCacheUpdatePost) ? 'checked="checked"' : ""; $wpFastestCacheWidgetCache = isset($this->options->wpFastestCacheWidgetCache) ? 'checked="checked"' : ""; ?>

    "wpfc-options","title" => __("Settings", "wp-fastest-cache" ))); array_push($tabs, array("id"=>"wpfc-deleteCache","title" => __("Clear Cache", "wp-fastest-cache" ))); array_push($tabs, array("id"=>"wpfc-imageOptimisation","title" => __("Image Optimization", "wp-fastest-cache" ))); if(!class_exists("WpFastestCachePowerfulHtml")){ array_push($tabs, array("id"=>"wpfc-premium","title"=>"Premium")); } array_push($tabs, array("id"=>"wpfc-exclude","title"=>__("Exclude", "wp-fastest-cache" ))); array_push($tabs, array("id"=>"wpfc-cdn","title"=>"CDN")); array_push($tabs, array("id"=>"wpfc-db","title"=>"DB")); foreach ($tabs as $key => $value){ $checked = ""; //tab of "delete css and js" has been removed so there is need to check it if(isset($_POST["wpFastestCachePage"]) && $_POST["wpFastestCachePage"] && $_POST["wpFastestCachePage"] == "deleteCssAndJsCache"){ $_POST["wpFastestCachePage"] = "deleteCache"; } if(!isset($_POST["wpFastestCachePage"]) && $value["id"] == "wpfc-options"){ $checked = ' checked="checked" '; }else if((isset($_POST["wpFastestCachePage"])) && ("wpfc-".$_POST["wpFastestCachePage"] == $value["id"])){ $checked = ' checked="checked" '; } echo ''."\n"; echo ''."\n"; } ?>
    id="wpFastestCacheStatus" name="wpFastestCacheStatus">
    id="wpFastestCacheWidgetCache" name="wpFastestCacheWidgetCache">
    id="wpFastestCacheWidgetCache">
    id="wpFastestCacheWidgetCache">
    id="wpFastestCacheWidgetCache">
    id="wpFastestCachePreload" name="wpFastestCachePreload">
    " >" />
    " >
    id="wpFastestCacheLoggedInUser" name="wpFastestCacheLoggedInUser">
    id="wpFastestCacheMobile" name="wpFastestCacheMobile">
    id="wpFastestCacheMobileTheme" name="wpFastestCacheMobileTheme">
    id="wpFastestCacheNewPost" name="wpFastestCacheNewPost">
    id="wpFastestCacheUpdatePost" name="wpFastestCacheUpdatePost">
    id="wpFastestCacheMinifyHtml" name="wpFastestCacheMinifyHtml">
    id="wpFastestCacheMinifyHtmlPowerFul" name="wpFastestCacheMinifyHtmlPowerFul">
    id="wpFastestCacheMinifyCss" name="wpFastestCacheMinifyCss">
    id="wpFastestCacheMinifyCssPowerFul" name="wpFastestCacheMinifyCssPowerFul">
    id="wpFastestCacheCombineCss" name="wpFastestCacheCombineCss">
    id="wpFastestCacheMinifyJs" name="wpFastestCacheMinifyJs">
    id="wpFastestCacheCombineJs" name="wpFastestCacheCombineJs"> (header)
    id="wpFastestCacheCombineJsPowerFul" name="wpFastestCacheCombineJsPowerFul"> (footer)
    (footer)
    (footer)
    id="wpFastestCacheGzip" name="wpFastestCacheGzip">
    id="wpFastestCacheLBC" name="wpFastestCacheLBC">
    id="wpFastestCacheDisableEmojis" name="wpFastestCacheDisableEmojis">
    id="wpFastestCacheRenderBlocking" name="wpFastestCacheRenderBlocking">
    id="wpFastestCacheGoogleFonts" name="wpFastestCacheGoogleFonts">
    Lazy Load
    id="wpFastestCacheLazyLoad_exclude_full_size_img" name="wpFastestCacheLazyLoad_exclude_full_size_img"> id="wpFastestCacheLazyLoad" name="wpFastestCacheLazyLoad">
    " >" />
    " >
    Lazy Load
    id="wpFastestCacheDelayJS" name="wpFastestCacheDelayJS">
    Language
    statics(); }else{ ?>
    Show Logs

    12.3Kb / 1 Items

    12.4Kb / 1 Items

    278.2Kb / 9 Items

    338.4Kb / 16 Items

    " class="button-primary">

    getWpContentDir("/cache/all"); ?>
    " class="button-primary">


    getWpContentDir("/cache/all"); ?>
    getWpContentDir("/cache/wpfc-minified"); ?>
    printLogs(); } ?>

    Reverse Proxy Cache

    ">
    Varnish Cache

    Varnish Cache is a web application accelerator also known as a caching HTTP reverse proxy.

    statics(); ?> imageList(); ?>
    • Bronze
      $ 49 .99 /lifetime
      1 License Number of Licenses
      5,000 Image Credits per License
      ∞ Support and Updates
      " width="40" height="40" /> One-Time Fee
      " width="40" height="40" /> 1 year license transfer right
      " width="40" height="40" /> 30 Day Money Back Guarantee
    • Silver
      $ 125 .00 /lifetime
      3 Licenses Number of Licenses
      5,000 Image Credits per License
      ∞ Support and Updates
      " width="40" height="40" /> One-Time Fee
      " width="40" height="40" /> 1 year license transfer right
      " width="40" height="40" /> 30 Day Money Back Guarantee
    • Gold
      $ 175 .00 /lifetime
      5 Licenses Number of Licenses
      5,000 Image Credits per License
      ∞ Support and Updates
      " width="40" height="40" /> One-Time Fee
      " width="40" height="40" /> 1 year license transfer right
      " width="40" height="40" /> 30 Day Money Back Guarantee
    • Platinum
      $ 300 .00 /lifetime
      10 Licenses Number of Licenses
      5,000 Image Credits per License
      ∞ Support and Updates
      " width="40" height="40" /> One-Time Fee
      " width="40" height="40" /> 1 year license transfer right
      " width="40" height="40" /> 30 Day Money Back Guarantee

    " />
    CDN by Bunny

    Speed up content with next-generation CDN

    " />
    Other CDN Providers

    You can use any cdn provider.

    " />
    CDN by Cloudflare

    CDN, DNS, DDoS protection and security

    isPluginActive("wp-fastest-cache-premium/wpFastestCachePremium.php")){ ?>
    "all_warnings", "class" => "int-item-left", "icon" => "flaticon-technology", "title" => "ALL", "desc" => "Clean all of them" ], [ "name" => "post_revisions", "class" => "int-item-right", "icon" => "flaticon-draft", "title" => "Post Revisions", "desc" => "Clean all post revisions" ], [ "name" => "trashed_contents", "class" => "int-item-left", "icon" => "flaticon-recycling", "title" => "Trashed Contents", "desc" => "Clean all trashed posts & pages" ], [ "name" => "trashed_spam_comments", "class" => "int-item-right", "icon" => "flaticon-interface", "title" => "Trashed & Spam Comments", "desc" => "Clean all comments from trash & spam" ], [ "name" => "trackback_pingback", "class" => "int-item-left", "icon" => "flaticon-pingback", "title" => "Trackbacks and Pingbacks", "desc" => "Clean all trackbacks and pingbacks" ], [ "name" => "transient_options", "class" => "int-item-right", "icon" => "flaticon-file", "title" => "Transient Options", "desc" => "Clean all transient options" ], [ "name" => "orphaned_post_meta", "class" => "int-item-left", "icon" => "flaticon-xxx", "title" => "Orphaned Post Meta", "desc" => "Clean all orphaned post meta" ], [ "name" => "orphaned_comment_meta", "class" => "int-item-right", "icon" => "flaticon-xxx", "title" => "Orphaned Comment Meta", "desc" => "Clean all orphaned comment meta" ], [ "name" => "orphaned_user_meta", "class" => "int-item-left", "icon" => "flaticon-user", "title" => "Orphaned User Meta", "desc" => "Clean all orphaned user meta" ], [ "name" => "orphaned_term_meta", "class" => "int-item-right", "icon" => "flaticon-tag", "title" => "Orphaned Term Meta", "desc" => "Clean all orphaned term meta" ], [ "name" => "orphaned_term_relationships", "class" => "int-item-left", "icon" => "flaticon-connection", "title" => "Orphaned Term Relationships", "desc" => "Clean all orphaned term relationships" ] ]; foreach ($items as $item) { echo '
    '.$item['title'].' (0)

    '.$item['desc'].'

    '; } ?>
    options->wpFastestCacheStatus)){ if(isset($_SERVER["HTTP_CDN_LOOP"]) && $_SERVER["HTTP_CDN_LOOP"] && $_SERVER["HTTP_CDN_LOOP"] == "cloudflare"){ $cloudflare_integration_exist = false; $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ $std_obj = json_decode($cdn_values); foreach($std_obj as $key => $value){ if($value->id == "cloudflare"){ $cloudflare_integration_exist = true; break; } } } if(!$cloudflare_integration_exist){ include_once(WPFC_MAIN_PATH."templates/cloudflare_warning.html"); } } } ?>
    " data-pin-no-hover="true" style="margin-top: 3px; margin-bottom: 11px;"/>
    Our support is here 24/7 for you.
    Send Us an Email Create Topic
    " data-pin-no-hover="true" style="margin-top: 3px; margin-bottom: 11px;"/>
    Please support us by giving a review.
    Add Your Review
    " alt="İngilizce Kelime Öğren!" data-pin-no-hover="true">
    " data-pin-no-hover="true" />
    Make today the day you say goodbye to slowness.
    " alt="Make today the day you say goodbye to slowness." data-pin-no-hover="true"> Sign Up Now!
    check_htaccess(); } } } } ?>wp-fastest-cache/inc/index.html000064400000000022151435171370012451 0ustar00Silence is golden.wp-fastest-cache/inc/js-utilities.php000064400000022561151435171370013626 0ustar00html = preg_replace("/\s+/", " ", ((string) $html)); $this->minify = $minify; $this->wpfc = $wpfc; $this->html = $html; $this->setJsLinksExcept(); $this->setJsLinks(); } public function check_exclude($js_url = false){ if($js_url){ foreach((array)$this->wpfc->exclude_rules as $key => $value){ if(isset($value->prefix) && $value->prefix && $value->type == "js"){ if($value->prefix == "contain"){ $preg_match_rule = preg_quote($value->content, "/"); } if(preg_match("/".$preg_match_rule."/i", $js_url)){ return true; } } } } } public function combine_js(){ if(count($this->jsLinks) > 0){ $prev_content = ""; foreach($this->jsLinks as $key => $value){ $script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1)); if(!preg_match("/]+json[^>]+>.+/", $script_tag) && !preg_match("/]+text\/template[^>]+>.+/", $script_tag)){ if($href = $this->checkInternal($script_tag)){ if(strpos($this->jsLinksExcept, $href) === false){ if($key == 0 && $this->check_exclude($href)){ continue; } if($key > 0 && $this->check_exclude($href)){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; continue; } if(preg_match("/data-no-minify/i", $script_tag) || preg_match("/type\s*=\s*[\"\']\s*module\s*[\"\']/i", $script_tag)){ if($key > 0 && $prev_content){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; continue; }else{ continue; } } $minifiedJs = $this->minify($href); if($minifiedJs){ if(!is_dir($minifiedJs["cachFilePath"])){ $this->wpfc->createFolder($minifiedJs["cachFilePath"], $minifiedJs["jsContent"], "js"); } if($jsFiles = @scandir($minifiedJs["cachFilePath"], 1)){ $jsFiles[0] = preg_replace("/\.gz$/", "", $jsFiles[0]); if($jsContent = $this->file_get_contents_curl($minifiedJs["url"]."/".$jsFiles[0]."?v=".time())){ if($key > 0 && preg_match("/^[\"\']use strict[\"\']/i", $jsContent)){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; }else{ $prev_content = $jsContent."\n".$prev_content; $script_tag = ""; if(($key + 1) == count($this->jsLinks)){ $this->mergeJs($prev_content, $value, true); $prev_content = ""; }else{ $this->html = substr_replace($this->html, $script_tag, $value["start"], ($value["end"] - $value["start"] + 1)); } } } } }else{ if($key > 0 && $prev_content){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; } } }else{ if($key > 0 && $prev_content){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; } } }else{ if($key > 0 && $prev_content){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; } } }else{ if($key > 0 && $prev_content){ $this->mergeJs($prev_content, $this->jsLinks[$key - 1]); $prev_content = ""; } } } } return $this->html; } public function setJsLinks(){ $data = $this->html; $script_list = array(); $script_start_index = false; for($i = 0; $i < strlen( $data ); $i++) { if(isset($data[$i-6])){ if(substr($data, $i-6, 7) == ""){ array_push($script_list, array("start" => $script_start_index, "end" => $i)); $script_start_index = false; } } } } if(count($script_list) > 0){ $this->jsLinks = array_reverse($script_list); } // to update jsLinksExcept foreach($this->jsLinks as $key => $value){ $script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1)); if(preg_match("/wp-spamshield\/js\/jscripts\.php/i", $script_tag)){ $this->jsLinksExcept = $this->jsLinksExcept.$script_tag; } //amazonjs/components/js/jquery-tmpl/jquery.tmpl.min.js?ver=1.0.0pre if(preg_match("/jquery-tmpl\/jquery\.tmpl\.min\.js/i", $script_tag)){ $this->jsLinksExcept = $this->jsLinksExcept.$script_tag; } } } public function setJsLinksExcept(){ $comment_tags = $this->find_tags(""); $document_write = $this->find_tags("document.write(", ")"); foreach ($comment_tags as $key => $value) { if(preg_match("/ if(preg_match("/[\?\=].*".preg_quote($httpHost, "/")."/i", $src[1])){ return false; } return $src[1]; } } } return false; } public function mergeJs($js_content, $value, $last = false){ $name = md5($js_content); $name = base_convert(crc32($name), 20, 36); $cachFilePath = $this->wpfc->getWpContentDir("/cache/wpfc-minified")."/".$name; $jsLink = $this->convert_path_to_link($cachFilePath); if(!is_dir($cachFilePath)){ $this->wpfc->createFolder($cachFilePath, $js_content, "js"); } if(is_dir($cachFilePath)){ if($jsFiles = @scandir($cachFilePath, 1)){ $newLink = ""; $script_tag = substr($this->html, $value["start"], ($value["end"] - $value["start"] + 1)); if($last){ $script_tag = $newLink."\n\n"; }else{ $script_tag = $newLink."\n".$script_tag; } $this->html = substr_replace($this->html, $script_tag, $value["start"], ($value["end"] - $value["start"] + 1)); } } } public function convert_path_to_link($path){ preg_match("/\/cache\/.+/", $path, $out); $prefixLink = str_replace(array("http:", "https:"), "", WPFC_WP_CONTENT_URL); return $prefixLink.$out[0]; } public function file_get_contents_curl($url) { if($data = $this->wpfc->read_file($url)){ return $data; } if(!preg_match("/\.php$/", $url)){ $url = $url."?v=".time(); } if(preg_match("/^\/[^\/]/", $url)){ $url = home_url().$url; } $url = preg_replace("/^\/\//", "http://", $url); $response = wp_remote_get($url, array('timeout' => 10 ) ); if ( !$response || is_wp_error( $response ) ) { return false; }else{ if(wp_remote_retrieve_response_code($response) == 200){ $data = wp_remote_retrieve_body( $response ); if(preg_match("/<\/\s*html\s*>\s*$/i", $data)){ return false; }else{ return $data; } } } } public function find_tags($start_string, $end_string){ $data = $this->html; $list = array(); $start_index = false; $end_index = false; for($i = 0; $i < strlen( $data ); $i++) { if(substr($data, $i, strlen($start_string)) == $start_string){ $start_index = $i; } if($start_index && $i > $start_index){ if(substr($data, $i, strlen($end_string)) == $end_string){ $end_index = $i + strlen($end_string)-1; $text = substr($data, $start_index, ($end_index-$start_index + 1)); array_push($list, array("start" => $start_index, "end" => $end_index, "text" => $text)); $start_index = false; $end_index = false; } } } return $list; } } ?>wp-fastest-cache/inc/cache.php000064400000135022151435171370012241 0ustar00preload_user_agent = true; }else{ $this->preload_user_agent = false; } $this->options = $this->getOptions(); $this->set_cdn(); $this->set_cache_file_path(); $this->set_exclude_rules(); if(isset($this->options->wpFastestCacheDisableEmojis) && $this->options->wpFastestCacheDisableEmojis){ add_action('init', array($this, 'disable_emojis')); } } public function disable_emojis(){ remove_action('wp_head', 'print_emoji_detection_script', 7); remove_action('admin_print_scripts', 'print_emoji_detection_script'); remove_filter('the_content_feed', 'wp_staticize_emoji'); remove_filter('comment_text_rss', 'wp_staticize_emoji'); remove_action('wp_print_styles', 'print_emoji_styles'); remove_action('admin_print_styles', 'print_emoji_styles'); remove_filter('wp_mail', 'wp_staticize_emoji_for_email'); // remove the DNS prefetch add_filter('emoji_svg_url', '__return_false'); } public function detect_current_page_type(){ if(preg_match("/\?/", $_SERVER["REQUEST_URI"])){ return true; } if(preg_match("/^\/wp-json/", $_SERVER["REQUEST_URI"])){ return true; } if(is_front_page()){ echo ""; }else if(is_category()){ echo ""; }else if(is_tag()){ echo ""; }else if(is_singular('post')){ echo ""; }else if(is_page()){ echo ""; }else if(is_attachment()){ echo ""; }else if(is_archive()){ echo ""; } } public function set_exclude_rules(){ if($json_data = get_option("WpFastestCacheExclude")){ $this->exclude_rules = json_decode($json_data); } } public function set_cache_file_path(){ $type = "all"; if($this->isMobile() && isset($this->options->wpFastestCacheMobile)){ if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme)){ $type = "wpfc-mobile-cache"; } } if($this->isPluginActive('gtranslate/gtranslate.php')){ if(isset($_SERVER["HTTP_X_GT_LANG"])){ $this->cacheFilePath = $this->getWpContentDir("/cache/".$type."/").$_SERVER["HTTP_X_GT_LANG"].$_SERVER["REQUEST_URI"]; }else if(isset($_SERVER["REDIRECT_URL"]) && $_SERVER["REDIRECT_URL"] != "/index.php"){ $redirect_url = $_SERVER["REDIRECT_URL"]; if(isset($_SERVER["REDIRECT_QUERY_STRING"]) && defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){ $redirect_url .= "?".$_SERVER["REDIRECT_QUERY_STRING"]; } $this->cacheFilePath = $this->getWpContentDir("/cache/" . $type . "/") . $redirect_url; }else if(isset($_SERVER["REQUEST_URI"])){ $this->cacheFilePath = $this->getWpContentDir("/cache/".$type."/").$_SERVER["REQUEST_URI"]; } }else{ $this->cacheFilePath = $this->getWpContentDir("/cache/".$type."/").$_SERVER["REQUEST_URI"]; // for /?s= $this->cacheFilePath = preg_replace("/(\/\?s\=)/", "$1/", $this->cacheFilePath); } $this->cacheFilePath = $this->cacheFilePath ? rtrim($this->cacheFilePath, "/")."/" : ""; /* /public_html/wp-content/cache/all/sample-page */ $this->cacheFilePath = preg_replace("/\/cache\/(all|wpfc-mobile-cache)\/\//", "/cache/$1/", $this->cacheFilePath); /* /public_html/wp-content/cache/all/DOMAIN.COM/sample-page */ $this->cacheFilePath = preg_replace("/\/cache\/([^\/]+)\/(all|wpfc-mobile-cache)\/\//", "/cache/$1/$2/", $this->cacheFilePath); if(strlen($_SERVER["REQUEST_URI"]) > 1){ // for the sub-pages if(!preg_match("/\.(html|xml)/i", $_SERVER["REQUEST_URI"])){ if($this->is_trailing_slash()){ if(!preg_match("/\/$/", $_SERVER["REQUEST_URI"])){ if(isset($_SERVER["QUERY_STRING"]) && $_SERVER["QUERY_STRING"] && defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){ }else if(preg_match("/y(ad|s)?clid\=/i", $this->cacheFilePath)){ // yclid // yadclid // ysclid }else if(preg_match("/gclid\=/i", $this->cacheFilePath)){ }else if(preg_match("/fbclid\=/i", $this->cacheFilePath)){ }else if(preg_match("/utm_(source|medium|campaign|content|term)/i", $this->cacheFilePath)){ }else if(preg_match("/srsltid\=/i", $this->cacheFilePath)){ }else{ $this->cacheFilePath = false; } } }else{ //toDo } } } $this->remove_url_paramters(); $this->cacheFilePath = trim($this->cacheFilePath); // to decode path if it is not utf-8 if($this->cacheFilePath){ $this->cacheFilePath = urldecode($this->cacheFilePath); } // for security if(preg_match("/\.{2,}/", $this->cacheFilePath)){ $this->cacheFilePath = false; } if(preg_match("/\/{2,}/", $this->cacheFilePath)){ $this->cacheFilePath = false; } if($this->cacheFilePath == "/"){ $this->cacheFilePath = false; } if($this->isMobile()){ if(isset($this->options->wpFastestCacheMobile)){ if(!class_exists("WpFcMobileCache")){ $this->cacheFilePath = false; }else{ if(!isset($this->options->wpFastestCacheMobileTheme)){ $this->cacheFilePath = false; } } } } } public function remove_url_paramters(){ if(isset($_SERVER["QUERY_STRING"]) && $_SERVER["QUERY_STRING"]){ $query_params = explode("&", $_SERVER["QUERY_STRING"]); $action = true; foreach ($query_params as $key => $query_param) { // Google Ads Click & Conversion Parameters if(preg_match("/^(gclid|gbraid|wbraid|gclsrc)\=/i", $query_param)){ continue; } // Google Analytics / GA4 Parameters if(preg_match("/^(_ga|_gid|_gl|_gac)\=/i", $query_param)){ continue; } // Google UTM Campaign Parameters if(preg_match("/^utm_(source|medium|campaign|content|term)/i", $query_param)){ continue; } // Google Merchant Center if(preg_match("/^srsltid\=/i", $query_param)){ continue; } //to remove query strings for cache if Yandex parameters are set if(preg_match("/^y(ad|s)?clid\=/i", $query_param)){ // yclid // yadclid // ysclid continue; } //to remove query strings for cache if facebook parameters are set if(preg_match("/^fbclid\=/i", $query_param)){ continue; } $action = false; } if($action){ if(strlen($_SERVER["REQUEST_URI"]) > 1){ // for the sub-pages $this->cacheFilePath = preg_replace("/\/*\?.+/", "", $this->cacheFilePath); $this->cacheFilePath = $this->cacheFilePath."/"; if(!defined('WPFC_CACHE_QUERYSTRING')){ define('WPFC_CACHE_QUERYSTRING', true); } } } } } public function set_cdn(){ $cdn_values = get_option("WpFastestCacheCDN"); if($cdn_values){ $std_obj = json_decode($cdn_values); $arr = array(); if(is_array($std_obj)){ $arr = $std_obj; }else{ array_push($arr, $std_obj); } foreach ($arr as $key => &$std) { $std->originurl = trim($std->originurl); $std->originurl = trim($std->originurl, "/"); $std->originurl = preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->originurl); $std->cdnurl = trim($std->cdnurl); $std->cdnurl = trim($std->cdnurl, "/"); if(!preg_match("/https\:\/\//", $std->cdnurl)){ $std->cdnurl = "//".preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->cdnurl); } } $this->cdn = $arr; } } public function checkShortCode($content){ if(preg_match("/\[wpfcNOT\]/", $content)){ if(!is_home() || !is_archive()){ $this->blockCache = true; } $content = str_replace("[wpfcNOT]", "", $content); } return $content; } public function createCache(){ if(isset($this->options->wpFastestCacheStatus)){ // to exclude static pdf files if(preg_match("/\.pdf$/i", $_SERVER["REQUEST_URI"])){ return 0; } // to check logged-in user if(isset($this->options->wpFastestCacheLoggedInUser) && $this->options->wpFastestCacheLoggedInUser == "on"){ foreach ((array)$_COOKIE as $cookie_key => $cookie_value){ if(preg_match("/wordpress_logged_in/i", $cookie_key)){ ob_start(array($this, "cdn_rewrite")); return 0; } } } // to exclude admin users if($this->is_user_admin()){ return 0; } // to check comment author foreach ((array)$_COOKIE as $cookie_key => $cookie_value){ if(preg_match("/comment_author_/i", $cookie_key)){ ob_start(array($this, "cdn_rewrite")); return 0; } } if(isset($_COOKIE) && isset($_COOKIE['safirmobilswitcher'])){ ob_start(array($this, "cdn_rewrite")); return 0; } if(isset($_COOKIE) && isset($_COOKIE["wptouch-pro-view"])){ if($this->is_wptouch_smartphone()){ if($_COOKIE["wptouch-pro-view"] == "desktop"){ ob_start(array($this, "cdn_rewrite")); return 0; } } } if(preg_match("/\?/", $_SERVER["REQUEST_URI"]) && !preg_match("/\/\?fdx\_switcher\=true/", $_SERVER["REQUEST_URI"])){ // for WP Mobile Edition if(preg_match("/\?amp(\=1)?/i", $_SERVER["REQUEST_URI"])){ // }else if(defined('WPFC_CACHE_QUERYSTRING') && WPFC_CACHE_QUERYSTRING){ // }else if(isset($_GET["wc-api"]) && $_GET["wc-api"]){ // }else{ ob_start(array($this, "cdn_rewrite")); return 0; } } if(preg_match("/(".$this->get_excluded_useragent().")/", $_SERVER['HTTP_USER_AGENT'])){ return 0; } if(isset($_SERVER['REQUEST_URI']) && preg_match("/(\/){2}$/", $_SERVER['REQUEST_URI'])){ return 0; } // to check permalink if it does not end with slash if(isset($_SERVER['REQUEST_URI']) && preg_match("/[^\/]+\/$/", $_SERVER['REQUEST_URI'])){ if(!preg_match("/\/$/", get_option('permalink_structure'))){ return 0; } } if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == "POST"){ return 0; } if(preg_match("/^https/i", get_option("home")) && !is_ssl()){ //Must be secure connection return 0; } if(!preg_match("/^https/i", get_option("home")) && is_ssl()){ //must be normal connection if(!$this->isPluginActive('really-simple-ssl/rlrsssl-really-simple-ssl.php')){ if(!$this->isPluginActive('really-simple-ssl-pro/really-simple-ssl-pro.php')){ if(!$this->isPluginActive('really-simple-ssl-on-specific-pages/really-simple-ssl-on-specific-pages.php')){ if(!$this->isPluginActive('ssl-insecure-content-fixer/ssl-insecure-content-fixer.php')){ if(!$this->isPluginActive('https-redirection/https-redirection.php')){ if(!$this->isPluginActive('better-wp-security/better-wp-security.php')){ return 0; } } } } } } } if(isset($_SERVER["DOCUMENT_ROOT"]) && preg_match("/bitnami/", $_SERVER["DOCUMENT_ROOT"])){ // to disable cache for the IP based urls on the bitnami servers // /opt/bitnami/apps/wordpress/htdocs if(preg_match("/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/", get_option("home"))){ return 0; } } if(preg_match("/www\./i", get_option("home")) && !preg_match("/www\./i", $_SERVER['HTTP_HOST'])){ return 0; } if(!preg_match("/www\./i", get_option("home")) && preg_match("/www\./i", $_SERVER['HTTP_HOST'])){ return 0; } if($this->exclude_page()){ ob_start(array($this, "cdn_rewrite")); //echo ""."\n"; return 0; } // http://mobiledetect.net/ does not contain the following user-agents if(preg_match("/Nokia309|Casper_VIA/i", $_SERVER['HTTP_USER_AGENT'])){ return 0; } if(preg_match("/Empty\sUser\sAgent/i", $_SERVER['HTTP_USER_AGENT'])){ // not to show the cache for command line return 0; } //to show cache version via php if htaccess rewrite rule does not work if(!$this->preload_user_agent && $this->cacheFilePath && (@file_exists($this->cacheFilePath."index.html") || @file_exists($this->cacheFilePath."index.json") || @file_exists($this->cacheFilePath."index.xml"))){ $via_php = ""; if(@file_exists($this->cacheFilePath."index.json")){ $file_extension = "json"; header('Content-type: application/json'); }else if(@file_exists($this->cacheFilePath."index.xml")){ $file_extension = "xml"; header('Content-type: text/xml'); }else{ $file_extension = "html"; $via_php = ""; } if($content = @file_get_contents($this->cacheFilePath."index.".$file_extension)){ if($file_extension == "html"){ header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($this->cacheFilePath."index.".$file_extension)).' GMT', true, 200); } if(defined('WPFC_REMOVE_VIA_FOOTER_COMMENT') && WPFC_REMOVE_VIA_FOOTER_COMMENT){ $via_php = ""; } $content = $content.$via_php; die($content); } }else{ if($this->isMobile()){ if(class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobileTheme)){ if(isset($this->options->wpFastestCacheMobileTheme_themename) && $this->options->wpFastestCacheMobileTheme_themename){ $create_cache = true; }else if($this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php')){ //to check that user-agent exists in wp-touch's list or not if($this->is_wptouch_smartphone()){ $create_cache = true; }else{ $create_cache = false; } }else{ if((preg_match('/iPhone/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT'])) || (preg_match('/Android/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT']))){ $create_cache = true; }else{ $create_cache = false; } } }else if(!isset($this->options->wpFastestCacheMobile) && !isset($this->options->wpFastestCacheMobileTheme)){ $create_cache = true; }else{ $create_cache = false; } }else{ $create_cache = true; } if($create_cache){ $this->startTime = microtime(true); add_action('wp', array($this, "detect_current_page_type")); add_action('get_footer', array($this, "detect_current_page_type")); add_action('get_footer', array($this, "wp_print_scripts_action")); // to exclude current page hook add_action("wpfc_exclude_current_page", array($this, 'exclude_current_page'), 10, 0); ob_start(array($this, "callback")); } } } } public function is_user_admin(){ global $wpdb; foreach ((array)$_COOKIE as $cookie_key => $cookie_value){ if(preg_match("/wordpress_logged_in/i", $cookie_key)){ $username = preg_replace("/^([^\|]+)\|.+/", "$1", $cookie_value); break; } } if(isset($username) && $username){ $username = esc_sql($username); $res = $wpdb->get_var("SELECT `$wpdb->users`.`ID`, `$wpdb->users`.`user_login`, `$wpdb->usermeta`.`meta_key`, `$wpdb->usermeta`.`meta_value` FROM `$wpdb->users` INNER JOIN `$wpdb->usermeta` ON `$wpdb->users`.`user_login` = \"$username\" AND `$wpdb->usermeta`.`meta_key` LIKE \"%_user_level\" AND `$wpdb->usermeta`.`meta_value` = \"10\" AND `$wpdb->users`.`ID` = `$wpdb->usermeta`.user_id ;" ); return $res; } return false; } public function exclude_current_page($some = true){ $via = debug_backtrace(); if(isset($via) && is_array($via)){ foreach ($via as $key => $value){ if($value["function"] == "wpfc_exclude_current_page"){ if(defined('WPFC_DEBUG') && (WPFC_DEBUG === true)){ if(preg_match("/wp-content\/themes/", $value["file"])){ $this->exclude_current_page_text = ""; }else if(preg_match("/wp-content\/plugins/", $value["file"])){ $this->exclude_current_page_text = ""; } }else{ $this->exclude_current_page_text = ""; } break; } } } } public function wp_print_scripts_action(){ echo ""; } public function ignored($buffer){ $list = array( "\/wp\-comments\-post\.php", "\/wp\-login\.php", "\/robots\.txt", "\/wp\-cron\.php", "\/wp\-content", "\/wp\-admin", "\/wp\-includes", "\/index\.php", "\/xmlrpc\.php", "\/wp\-api\/", "leaflet\-geojson\.php", "\/clientarea\.php" ); if($this->isPluginActive('woocommerce/woocommerce.php')){ if($this->current_page_type != "homepage"){ global $post; if(isset($post->ID) && $post->ID){ if(function_exists("wc_get_page_id")){ $woocommerce_ids = array(); //wc_get_page_id('product') //wc_get_page_id('product-category') array_push($woocommerce_ids, wc_get_page_id('cart'), wc_get_page_id('checkout'), wc_get_page_id('receipt'), wc_get_page_id('confirmation'), wc_get_page_id('myaccount')); if (in_array($post->ID, $woocommerce_ids)) { return true; } } } //"\/product" //"\/product-category" array_push($list, "\/cart\/?$", "\/checkout", "\/receipt", "\/confirmation", "\/wc-api\/"); } } if($this->isPluginActive('wp-easycart/wpeasycart.php')){ array_push($list, "\/cart"); } if($this->isPluginActive('easy-digital-downloads/easy-digital-downloads.php')){ array_push($list, "\/cart", "\/checkout"); } if(preg_match("/".implode("|", $list)."/i", $_SERVER["REQUEST_URI"])){ return true; } return false; } public function exclude_page($buffer = false){ $preg_match_rule = ""; //$request_url = urldecode(trim($_SERVER["REQUEST_URI"], "/")); $request_url = urldecode($_SERVER["REQUEST_URI"]); if($this->exclude_rules){ foreach((array)$this->exclude_rules as $key => $value){ $value->type = isset($value->type) ? $value->type : "page"; if($value->prefix == "yandexclickid"){ if(preg_match("/y(ad|s)?clid\=/i", $request_url)){ // yclid // yadclid // ysclid return true; } }else if($value->prefix == "googleanalytics"){ if(preg_match("/utm_(source|medium|campaign|content|term)/i", $request_url)){ return true; } }else if(isset($value->prefix) && $value->prefix && ($value->type == "page")){ $value->content = trim($value->content); //$value->content = trim($value->content, "/"); if($buffer && preg_match("/^(homepage|category|tag|post|page|archive|attachment)$/", $value->prefix)){ if(preg_match('/<\!--WPFC_PAGE_TYPE_'.$value->prefix.'-->/i', $buffer)){ return true; } }else if($value->prefix == "exact"){ $request_url = trim($request_url, "/"); $value->content = trim($value->content, "/"); if(strtolower($value->content) == strtolower($request_url)){ return true; } }else if($value->prefix == "regex"){ if(preg_match("/".$value->content."/i", $request_url)){ return true; } }else{ if($value->prefix == "startwith"){ $request_url = ltrim($request_url, "/"); $value->content = ltrim($value->content, "/"); $preg_match_rule = "^".preg_quote($value->content, "/"); }else if($value->prefix == "contain"){ $preg_match_rule = preg_quote($value->content, "/"); } if($preg_match_rule){ if(preg_match("/".$preg_match_rule."/i", $request_url)){ return true; } } } }else if($value->type == "useragent"){ if(preg_match("/".preg_quote($value->content, "/")."/i", $_SERVER['HTTP_USER_AGENT'])){ return true; } }else if($value->type == "cookie"){ if(isset($_SERVER['HTTP_COOKIE'])){ if(preg_match("/".preg_quote($value->content, "/")."/i", $_SERVER['HTTP_COOKIE'])){ return true; } } } } } return false; } public function is_json(){ return $this->current_page_content_type == "json" ? true : false; // if(isset($_SERVER["HTTP_ACCEPT"]) && preg_match("/json/i", $_SERVER["HTTP_ACCEPT"])){ // return true; // } // if(preg_match("/^\/wp-json/", $_SERVER["REQUEST_URI"])){ // return true; // } // if(preg_match("/^\s*\{\s*[\"\']/i", $buffer)){ // return true; // } // if(preg_match("/^\s*\[\s*\{\s*[\"\']/i", $buffer)){ // return true; // } // return false; } public function is_xml(){ return $this->current_page_content_type == "xml" ? true : false; // if(preg_match("/^\s*\<\?xml/i", $buffer)){ // return true; // } // return false; } public function is_html(){ return $this->current_page_content_type == "html" ? true : false; } public function set_current_page_type($buffer){ preg_match('/<\!--WPFC_PAGE_TYPE_([a-z]+)-->/i', $buffer, $out); $this->current_page_type = isset($out[1]) ? $out[1] : false; } public function set_current_page_content_type($buffer){ $content_type = false; if(function_exists("headers_list")){ $headers = headers_list(); foreach($headers as $header){ if(preg_match("/Content-Type\:/i", $header)){ $content_type = preg_replace("/Content-Type\:\s(.+)/i", "$1", $header); } } } if(preg_match("/xml/i", $content_type)){ $this->current_page_content_type = "xml"; }else if(preg_match("/json/i", $content_type)){ $this->current_page_content_type = "json"; }else{ $this->current_page_content_type = "html"; } } public function last_error($buffer = false){ if(function_exists("http_response_code") && (http_response_code() === 404)){ return true; } if(is_404()){ return true; } //to exclude "There has been a critical error on this website" page if(preg_match("/\s*/i", $buffer)){ return true; } } public function callback($buffer){ $this->set_current_page_type($buffer); $this->set_current_page_content_type($buffer); $buffer = $this->checkShortCode($buffer); // for Wordfence: not to cache 503 pages if(defined('DONOTCACHEPAGE') && $this->isPluginActive('wordfence/wordfence.php')){ if(function_exists("http_response_code") && http_response_code() == 503){ return $buffer.""; } } // Prevent caching of 403 Forbidden error pages. // This is particularly important for compatibility with the following security plugins: // 1. iThemes Security // 2. Defender Security if(defined('DONOTCACHEPAGE')){ if(function_exists("http_response_code") && http_response_code() == 403){ return $buffer.""; } } // for Divi Theme if(defined('DONOTCACHEPAGE') && (get_template() == "Divi")){ if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ // /?wc-ajax=dgwt_wcas_ajax_search&s=keyword&l=en return $buffer; } return $buffer.""; } if($this->exclude_page($buffer)){ $buffer = preg_replace('/<\!--WPFC_PAGE_TYPE_[a-z]+-->/i', '', $buffer); $buffer = $this->cdn_rewrite($buffer); return $buffer; } $buffer = preg_replace('/<\!--WPFC_PAGE_TYPE_[a-z]+-->/i', '', $buffer); if($this->is_html()){ $tmp_buffer = (string) apply_filters('wpfc_buffer_callback_filter', $buffer, "html", $this->cacheFilePath); if(!$tmp_buffer){ return $buffer; }else{ $buffer = $tmp_buffer; } } if($this->exclude_current_page_text){ return $buffer.$this->exclude_current_page_text; }else if($this->is_json() && (!defined('WPFC_CACHE_JSON') || (defined('WPFC_CACHE_JSON') && WPFC_CACHE_JSON !== true))){ return $buffer; }else if(preg_match("/Mediapartners-Google|Google\sWireless\sTranscoder/i", $_SERVER['HTTP_USER_AGENT'])){ return $buffer; }else if (is_user_logged_in() || $this->isCommenter()){ return $buffer; }else if($this->isPasswordProtected($buffer)){ return $buffer.""; }else if($this->isWpLogin($buffer)){ return $buffer.""; }else if($this->hasContactForm7WithCaptcha($buffer)){ return $buffer.""; }else if($this->last_error($buffer)){ return $buffer; }else if($this->ignored($buffer)){ return $buffer; }else if($this->blockCache === true){ return $buffer.""; }else if(isset($_GET["preview"])){ return $buffer.""; }else if($this->checkHtml($buffer)){ if(preg_match("/^.*$/s", $buffer)){ // Check if the buffer has only one line (no line breaks) return $buffer; }else{ return $buffer.""; } }else if((function_exists("http_response_code")) && (http_response_code() == 301 || http_response_code() == 302)){ return $buffer; }else if(!$this->cacheFilePath){ return $buffer.""; }else{ $content = $buffer; if(isset($this->options->wpFastestCacheDelayJS) && method_exists("WpFastestCachePowerfulHtml", "render_blocking")){ if(file_exists(WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/delay-js.php")){ if(!$this->is_amp($content)){ include_once WPFC_WP_PLUGIN_DIR."/wp-fastest-cache-premium/pro/library/delay-js.php"; $delay = new WpFastestCacheDelayJS($content); $content = $delay->action(); } } } if(isset($this->options->wpFastestCacheRenderBlocking) && method_exists("WpFastestCachePowerfulHtml", "render_blocking")){ if(class_exists("WpFastestCachePowerfulHtml")){ if(!$this->is_amp($content)){ $powerful_html = new WpFastestCachePowerfulHtml(); if(isset($this->options->wpFastestCacheRenderBlockingCss)){ $content = $powerful_html->render_blocking($content, true); }else{ $content = $powerful_html->render_blocking($content); } } } } if(isset($this->options->wpFastestCacheCombineCss)){ require_once "css-utilities.php"; $css = new CssUtilities($this, $content); $content = $css->combineCss(); unset($css); }else if(isset($this->options->wpFastestCacheMinifyCss)){ require_once "css-utilities.php"; $css = new CssUtilities($this, $content); $content = $css->minifyCss(); unset($css); } if(isset($this->options->wpFastestCacheCombineJs) || isset($this->options->wpFastestCacheMinifyJs) || isset($this->options->wpFastestCacheCombineJsPowerFul)){ require_once "js-utilities.php"; } if(isset($this->options->wpFastestCacheCombineJs)){ $head_new = $this->get_header($content); if($head_new){ if(isset($this->options->wpFastestCacheMinifyJs) && $this->options->wpFastestCacheMinifyJs){ $js = new JsUtilities($this, $head_new, true); }else{ $js = new JsUtilities($this, $head_new); } $tmp_head = $js->combine_js(); $content = str_replace($head_new, $tmp_head, $content); unset($r); unset($js); unset($tmp_head); unset($head_new); } } if(class_exists("WpFastestCachePowerfulHtml")){ if(!isset($powerful_html)){ $powerful_html = new WpFastestCachePowerfulHtml(); } $powerful_html->set_html($content); if(isset($this->options->wpFastestCacheCombineJsPowerFul) && method_exists("WpFastestCachePowerfulHtml", "combine_js_in_footer")){ if(isset($this->options->wpFastestCacheMinifyJs) && $this->options->wpFastestCacheMinifyJs){ $content = $powerful_html->combine_js_in_footer($this, true); }else{ $content = $powerful_html->combine_js_in_footer($this); } } if(isset($this->options->wpFastestCacheRemoveComments)){ $content = $powerful_html->remove_head_comments(); } if(isset($this->options->wpFastestCacheMinifyHtmlPowerFul)){ $content = $powerful_html->minify_html(); } if(isset($this->options->wpFastestCacheMinifyJs) && method_exists("WpFastestCachePowerfulHtml", "minify_js_in_body")){ $content = $powerful_html->minify_js_in_body($this, $this->exclude_rules); } } if($this->err){ return $buffer.""; }else{ $content = $this->cacheDate($content); $content = $this->minify($content); $content = str_replace("", "", $content); if(isset($this->options->wpFastestCacheLazyLoad) && class_exists("WpFastestCachePowerfulHtml")){ $execute_lazy_load = true; // to disable Lazy Load if the page is amp if($this->is_amp($content)){ $execute_lazy_load = false; } // to disable for Ajax Load More on the pages if($this->isPluginActive('ajax-load-more/ajax-load-more.php') && preg_match("/\/page\/\d+\//", $_SERVER["REQUEST_URI"])){ $execute_lazy_load = false; } if($execute_lazy_load){ if(!class_exists("WpFastestCacheLazyLoad")){ include_once $this->get_premium_path("lazy-load.php"); } $content = $powerful_html->lazy_load($content); if(method_exists("WpFastestCacheLazyLoad",'get_js_source_new')){ $lazy_load_js = WpFastestCacheLazyLoad::get_js_source_new(); }else if(method_exists("WpFastestCacheLazyLoad",'get_js_source')){ $lazy_load_js = WpFastestCacheLazyLoad::get_js_source(); } $content = preg_replace("/\s*<\/head\s*>/i", $lazy_load_js."", $content, 1); } } $content = $this->cdn_rewrite($content); $content = $this->fix_pre_tag($content, $buffer); if(preg_match("/]+href\s*\=\s*[\'\"][^\"\']+\.\.[\"\'][^\>]+>/", $content)){ /* to check that resources have been successfully optimized */ return $buffer.""; } if($this->cacheFilePath){ if($this->is_html()){ $tmp_content = (string) apply_filters('wpfc_buffer_callback_filter', $content, "cache", $this->cacheFilePath); if(!$tmp_content){ return $content; }else{ $content = $tmp_content; } $this->createFolder($this->cacheFilePath, $content); do_action('wpfc_is_cacheable_action'); }else if($this->is_xml()){ if(preg_match("/<\/link>/", $buffer)){ if(preg_match("/\/feed$/", $_SERVER["REQUEST_URI"])){ return $buffer.time(); } } $this->createFolder($this->cacheFilePath, $buffer, "xml"); do_action('wpfc_is_cacheable_action'); return $buffer; }else if($this->is_json()){ $this->createFolder($this->cacheFilePath, $buffer, "json"); do_action('wpfc_is_cacheable_action'); return $buffer; } } return $content.""; } } } public function find_tags($data, $start_string, $end_string){ $list = array(); $start_index = false; $end_index = false; for($i = 0; $i < strlen( $data ); $i++) { if(substr($data, $i, strlen($start_string)) == $start_string){ $start_index = $i; } if($start_index && $i > $start_index){ if(substr($data, $i, strlen($end_string)) == $end_string){ $end_index = $i + strlen($end_string)-1; $text = substr($data, $start_index, ($end_index-$start_index + 1)); array_push($list, array("start" => $start_index, "end" => $end_index, "text" => $text)); $start_index = false; $end_index = false; } } } return $list; } public function fix_pre_tag($content, $buffer){ // Check if buffer contains any
     tag
    		    if(!preg_match("/]*>/i", $buffer)){
    		        return $content;
    		    }
    
    		    // Extract 
     blocks from buffer
    		    $pre_buffer = $this->find_tags($buffer, "");
    
    		    // Extract 
     blocks from content
    		    $pre_content = $this->find_tags($content, "");
    
    		    // If either side has no 
     blocks, do nothing
    		    if(empty($pre_buffer) || empty($pre_content)){
    		        return $content;
    		    }
    
    		    // Reverse the order to avoid index shifting during replacement
    		    $pre_content = array_reverse($pre_content, true);
    
    		    foreach ($pre_content as $key => $value){
    		        if(isset($pre_buffer[$key])){
    
    		            // New 
     block that will replace the old one
    		            $replace_text = $pre_buffer[$key]["text"];
    
    		            // Replace the original 
     block in the content with the buffer's block
    		            $content = substr_replace(
    		                $content,
    		                $replace_text,
    		                $value["start"],
    		                ($value["end"] - $value["start"] + 1)
    		            );
    		        }
    		    }
    
    		    return $content;
    		}
    
    
    
    		public function cdn_rewrite($content){
    			if($this->cdn){
    				$content = preg_replace_callback("/(srcset|src|href|data-vc-parallax-image|data-bg|data-bg-webp|data-fullurl|data-mobileurl|data-img-url|data-cvpsrc|data-cvpset|data-thumb|data-bg-url|data-large_image|data-lazyload|data-lazy|data-source-url|data-srcsmall|data-srclarge|data-srcfull|data-slide-img|data-lazy-original)\s{0,2}\=\s{0,2}[\'\"]([^\'\"]+)[\'\"]/i", array($this, 'cdn_replace_urls'), $content);
    
    				//url()
    				$content = preg_replace_callback("/(url)\(([^\)\>]+)\)/i", array($this, 'cdn_replace_urls'), $content);
    
    				//{"concatemoji":"http:\/\/your_url.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7"}
    				$content = preg_replace_callback("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", array($this, 'cdn_replace_urls'), $content);
    				
    				//
    				$content = preg_replace_callback("/[\"\']([^\'\"]+)[\"\']\s*\:\s*[\"\']https?\:\\\\\/\\\\\/[^\"\']+[\"\']/i", array($this, 'cdn_replace_urls'), $content);
    
    				// 
    				$content = preg_replace_callback("/(jsFileLocation)\s*\:[\"\']([^\"\']+)[\"\']/i", array($this, 'cdn_replace_urls'), $content);
    
    				// 
    //
    $content = preg_replace_callback("/(data-product_variations|data-siteorigin-parallax)\=[\"\'][^\"\']+[\"\']/i", array($this, 'cdn_replace_urls'), $content); // $content = preg_replace_callback("/]+(data)\s{0,2}\=[\'\"]([^\'\"]+)[\'\"][^\>]+>/i", array($this, 'cdn_replace_urls'), $content); } return $content; } public function get_header($content){ $head_first_index = strpos($content, ""); return substr($content, $head_first_index, ($head_last_index-$head_first_index + 1)); } public function minify($content){ $content = preg_replace("/<\/html>\s+/", "", $content); $content = str_replace("\r", "", $content); return isset($this->options->wpFastestCacheMinifyHtml) ? preg_replace("/^\s+/m", "", ((string) $content)) : $content; } public function checkHtml($buffer){ if(!$this->is_html()){ return false; } if(preg_match('/<\s*html[^\>]*>/si', $buffer) && preg_match('/<\s*body[^\>]*>/si', $buffer) && preg_match('/<\/body\s*>/si', $buffer)){ return false; } // if(strlen($buffer) > 10){ // return false; // } return true; } public function cacheDate($buffer){ $prefix = ($this->isMobile() && class_exists("WpFcMobileCache") && isset($this->options->wpFastestCacheMobile) && isset($this->options->wpFastestCacheMobileTheme)) ? "Mobile: " : ""; $comment = ""; if(apply_filters( 'wpfc_remove_footer_comment', false )){ $comment = ""; } if(defined('WPFC_REMOVE_FOOTER_COMMENT') && WPFC_REMOVE_FOOTER_COMMENT){ $comment = ""; } return $buffer.$comment; } public function creationTime(){ $time = microtime(true) - $this->startTime; $time = number_format($time, 3); return $time; } public function isCommenter(){ $commenter = wp_get_current_commenter(); return isset($commenter["comment_author_email"]) && $commenter["comment_author_email"] ? true : false; } public function isPasswordProtected($buffer){ if(preg_match("/action\=[\'\"].+postpass.*[\'\"]/", $buffer)){ return true; } foreach($_COOKIE as $key => $value){ if(preg_match("/wp\-postpass\_/", $key)){ return true; } } return false; } public function create_name($list){ $arr = is_array($list) ? $list : array(array("href" => $list)); $name = ""; foreach ($arr as $tag_key => $tag_value){ $tmp = preg_replace("/(\.css|\.js)\?.*/", "$1", $tag_value["href"]); //to remove version number $name = $name.$tmp; } return base_convert(crc32($name), 20, 36); } public function createFolder($cachFilePath, $buffer, $extension = "html", $prefix = false){ $create = false; $file_name = "index."; $update_db_statistic = true; if($buffer && strlen($buffer) > 100 && preg_match("/html|xml|json/i", $extension)){ if(!preg_match("/^\<\!\-\-\sMobile\:\sWP\sFastest\sCache/i", $buffer)){ if(!preg_match("/^\<\!\-\-\sWP\sFastest\sCache/i", $buffer)){ $create = true; } } if($this->preload_user_agent){ if(file_exists($cachFilePath."/"."index.".$extension)){ $update_db_statistic = false; @unlink($cachFilePath."/"."index.".$extension); } } } if(($extension == "svg" || $extension == "woff" || $extension == "css" || $extension == "js") && $buffer && strlen($buffer) > 5){ $create = true; $file_name = base_convert(substr(time(), -6), 20, 36)."."; $buffer = trim($buffer); if($extension == "js"){ if(substr($buffer, -1) != ";"){ $buffer .= ";"; } } } if (is_user_logged_in() || $this->isCommenter()){ $create = false; } if($create){ if(!is_dir($cachFilePath)){ if(is_writable($this->getWpContentDir()) || ((is_dir($this->getWpContentDir("/cache"))) && (is_writable($this->getWpContentDir("/cache"))))){ if (@mkdir($cachFilePath, 0755, true)){ if($extension == "html"){ if(!file_exists($this->getWpContentDir("/cache/index.html"))){ @file_put_contents($this->getWpContentDir("/cache/index.html"), ""); } }else{ if(!file_exists($this->getWpContentDir("/cache/wpfc-minified/index.html"))){ if(!is_dir($this->getWpContentDir("/cache/wpfc-minified/"))){ @mkdir($this->getWpContentDir("/cache/wpfc-minified/"), 0755, true); } if(is_dir($this->getWpContentDir("/cache/wpfc-minified/"))){ @file_put_contents($this->getWpContentDir("/cache/wpfc-minified/index.html"), ""); } } } } } } if(is_dir($cachFilePath)){ if(!file_exists($cachFilePath."/".$file_name.$extension)){ if($extension != "html"){ $buffer = (string) apply_filters('wpfc_buffer_callback_filter', $buffer, $extension, $cachFilePath); } file_put_contents($cachFilePath."/".$file_name.$extension, $buffer); if(class_exists("WpFastestCacheStatics")){ if($update_db_statistic && !preg_match("/After\sCache\sTimeout/i", $_SERVER['HTTP_USER_AGENT'])){ if(preg_match("/wpfc\-mobile\-cache/", $cachFilePath)){ $extension = "mobile"; } $cache_statics = new WpFastestCacheStatics($extension, strlen($buffer)); $cache_statics->update_db(); } } } } }elseif($extension == "html"){ $this->err = "Buffer is empty so the cache cannot be created"; } } public function is_amp($content){ global $redux_builder_amp; $action = false; $request_uri = trim($_SERVER["REQUEST_URI"], "/"); if(preg_match("/^amp/", $request_uri)){ $action = true; } if(preg_match("/amp$/", $request_uri)){ $action = true; } if(preg_match("/\/amp\//", $request_uri)){ $action = true; } if(preg_match("/\?amp\=1$/", $request_uri)){ $action = true; } if(preg_match("/web-stories\//", $request_uri)){ // https://wordpress.org/plugins/web-stories/ $action = true; } if(isset($redux_builder_amp) && isset($redux_builder_amp['ampforwp-amp-takeover']) && ($redux_builder_amp['ampforwp-amp-takeover'] == true)){ $action = true; } if($action){ if(preg_match("/]+amp[^\>]*>/i", $content)){ return true; } if(preg_match("/]+\âš¡[^\>]*>/i", $content)){ return true; } } return false; } public function isMobile(){ foreach ($this->get_mobile_browsers() as $value) { if(preg_match("/".$value."/i", $_SERVER['HTTP_USER_AGENT'])){ return true; } } foreach ($this->get_operating_systems() as $key => $value) { if(preg_match("/".$value."/i", $_SERVER['HTTP_USER_AGENT'])){ return true; } } if(isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER']) && "true" === $_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER']){ $is_mobile = true; } if(isset($_SERVER['HTTP_CLOUDFRONT_IS_TABLET_VIEWER']) && "true" === $_SERVER['HTTP_CLOUDFRONT_IS_TABLET_VIEWER']){ $is_mobile = true; } } public function isWpLogin($buffer){ // if(preg_match("/]+loginform[^\>]+>((?:(?!<\/form).)+)user_login((?:(?!<\/form).)+)user_pass((?:(?!<\/form).)+)<\/form>/si", $buffer)){ // return true; // } if($GLOBALS["pagenow"] == "wp-login.php"){ return true; } return false; } public function hasContactForm7WithCaptcha($buffer){ if(is_single() || is_page()){ if(preg_match("/]+_wpcf7_captcha[^\>]+>/i", $buffer)){ return true; } } return false; } public function is_wptouch_smartphone(){ // https://plugins.svn.wordpress.org/wptouch/tags/4.0.4/core/mobile-user-agents.php // wptouch: ipad is accepted as a desktop so no need to create cache if user agent is ipad // https://wordpress.org/support/topic/plugin-wptouch-wptouch-wont-display-mobile-version-on-ipad?replies=12 if(preg_match("/ipad/i", $_SERVER['HTTP_USER_AGENT'])){ return false; } $wptouch_smartphone_list = array(); $wptouch_smartphone_list[] = array( 'iPhone' ); // iPhone $wptouch_smartphone_list[] = array( 'Android', 'Mobile' ); // Android devices $wptouch_smartphone_list[] = array( 'BB', 'Mobile Safari' ); // BB10 devices $wptouch_smartphone_list[] = array( 'BlackBerry', 'Mobile Safari' ); // BB 6, 7 devices $wptouch_smartphone_list[] = array( 'Firefox', 'Mobile' ); // Firefox OS devices $wptouch_smartphone_list[] = array( 'IEMobile/11', 'Touch' ); // Windows IE 11 touch devices $wptouch_smartphone_list[] = array( 'IEMobile/10', 'Touch' ); // Windows IE 10 touch devices $wptouch_smartphone_list[] = array( 'IEMobile/9.0' ); // Windows Phone OS 9 $wptouch_smartphone_list[] = array( 'IEMobile/8.0' ); // Windows Phone OS 8 $wptouch_smartphone_list[] = array( 'IEMobile/7.0' ); // Windows Phone OS 7 $wptouch_smartphone_list[] = array( 'OPiOS', 'Mobile' ); // Opera Mini iOS $wptouch_smartphone_list[] = array( 'Coast', 'Mobile' ); // Opera Coast iOS foreach ($wptouch_smartphone_list as $key => $value) { if(isset($value[0]) && isset($value[1])){ if(preg_match("/".preg_quote($value[0], "/")."/i", $_SERVER['HTTP_USER_AGENT'])){ if(preg_match("/".preg_quote($value[1], "/")."/i", $_SERVER['HTTP_USER_AGENT'])){ return true; } } }else if(isset($value[0])){ if(preg_match("/".preg_quote($value[0], "/")."/i", $_SERVER['HTTP_USER_AGENT'])){ return true; } } } return false; } } ?>wp-fastest-cache/inc/preload.php000064400000064454151435171370012636 0ustar00 $s_value) { $s_value = esc_url($s_value); array_push($sitemap_arr, array("url" => $s_value, "pointer" => 0)); } $preload_arr["sitemaps"] = $sitemap_arr; }else{ foreach ($_POST as $key => $value) { $key = esc_attr($key); $value = esc_attr($value); preg_match("/wpFastestCachePreload_(.+)/", $key, $type); if(!empty($type)){ if($type[1] == "restart" || $type[1] == "sitemap"){ //to need to remove "restart" value }else if($type[1] == "number"){ $preload_arr[$type[1]] = $value; }else{ $preload_arr[$type[1]] = 0; } } } } } if($data = get_option("WpFastestCachePreLoad")){ $preload_std = json_decode($data); if(empty($preload_arr)){ // clear cache process if(isset($preload_std->sitemaps) && !empty($preload_std->sitemaps)){ foreach ($preload_std->sitemaps as $s_key => $s_value) { $s_value->pointer = 0; } }else{ foreach ($preload_std as $key => &$value) { if($key != "number"){ $value = 0; } } } }else{ // save settings process if(isset($preload_arr["sitemaps"])){ if(isset($preload_std->sitemaps) && !empty($preload_std->sitemaps)){ for ($i=0; $i < count($preload_arr["sitemaps"]) ; $i++) { for ($j=0; $j < count($preload_std->sitemaps); $j++) { if($preload_arr["sitemaps"][$i]["url"] == $preload_std->sitemaps[$j]->url){ if(isset($preload_std->sitemaps[$j]->pointer)){ $preload_arr["sitemaps"][$i]["pointer"] = $preload_std->sitemaps[$j]->pointer; } if(isset($preload_std->sitemaps[$j]->total)){ $preload_arr["sitemaps"][$i]["total"] = $preload_std->sitemaps[$j]->total; } } } } $preload_std = $preload_arr; }else{ foreach ($preload_arr as $key => &$value) { if(!empty($preload_std->$key)){ if($key != "number"){ $value = $preload_std->$key; } } } $preload_std = $preload_arr; } }else{ foreach ($preload_arr as $key => &$value) { if(!empty($preload_std->$key)){ if($key != "number"){ $value = $preload_std->$key; } } } $preload_std = $preload_arr; } } update_option("WpFastestCachePreLoad", json_encode($preload_std)); if(!wp_next_scheduled($slug."_Preload")){ wp_schedule_event(time() + 5, 'everyfiveminute', $slug."_Preload"); } }else{ if(!empty($preload_arr)){ add_option("WpFastestCachePreLoad", json_encode($preload_arr), null, "yes"); if(!wp_next_scheduled($slug."_Preload")){ wp_schedule_event(time() + 5, 'everyfiveminute', $slug."_Preload"); } }else{ //toDO } } } public static function statistic($pre_load = false){ $total = new stdClass(); if(isset($pre_load->homepage)){ $total->homepage = 1; } if(isset($pre_load->customposttypes)){ global $wpdb; $post_types = get_post_types(array('public' => true), "names", "and"); $where_query = ""; foreach ($post_types as $post_type_key => $post_type_value) { if(!in_array($post_type_key, array("post", "page", "attachment"))){ $where_query = $where_query.$wpdb->prefix."posts.post_type = '".$post_type_value."' OR "; } } if($where_query){ $where_query = preg_replace("/(\s*OR\s*)$/", "", $where_query); $recent_custom_posts = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS COUNT(".$wpdb->prefix."posts.ID) as total FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$where_query.") AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID", ARRAY_A); $total->customposttypes = $recent_custom_posts[0]["total"]; } } if(isset($pre_load->post)){ $count_posts = wp_count_posts("post", array('post_status' => 'publish', 'suppress_filters' => true)); $total->post = $count_posts->publish; } if(isset($pre_load->attachment)){ $total_attachments = wp_count_attachments(); $total->attachment = array_sum((array)$total_attachments) - $total_attachments->trash; } if(isset($pre_load->page)){ $count_pages = wp_count_posts("page", array('post_status' => 'publish', 'suppress_filters' => true)); $total->page = $count_pages->publish; } if(isset($pre_load->category)){ $total->category = wp_count_terms("category", array('hide_empty' => false)); } if(isset($pre_load->tag)){ $total->tag = wp_count_terms("post_tag", array('hide_empty' => false)); } if(isset($pre_load->customTaxonomies)){ $taxo = get_taxonomies(array('public' => true, '_builtin' => false), "names", "and"); if(count($taxo) > 0){ $total->customTaxonomies = wp_count_terms($taxo, array('hide_empty' => false)); } } foreach ($total as $key => $value) { $pre_load->$key = $pre_load->$key == -1 ? $value : $pre_load->$key; echo esc_html($key).": ".esc_html($pre_load->$key)."/".esc_html($value)."
    "; } } public static function create_preload_cache_default($pre_load, $options){ if(defined("WPFC_PRELOAD_NUMBER") && WPFC_PRELOAD_NUMBER){ $number = WPFC_PRELOAD_NUMBER; }else{ $number = $pre_load->number; } //START:ORDER if(isset($pre_load->order) && $pre_load->order){ $order_arr = explode(",", $pre_load->order); }else{ if(isset($options->wpFastestCachePreload_order) && $options->wpFastestCachePreload_order){ $order_arr = explode(",", $options->wpFastestCachePreload_order); } } if(isset($order_arr) && is_array($order_arr)){ foreach ($order_arr as $o_key => $o_value){ if($o_value == "order" || $o_value == "number"){ unset($order_arr[$o_key]); } if(!isset($pre_load->$o_value)){ unset($order_arr[$o_key]); } } $order_arr = array_values($order_arr); } $current_order = isset($order_arr[0]) ? $order_arr[0] : "go"; //START:END $urls_limit = isset($options->wpFastestCachePreload_number) ? $options->wpFastestCachePreload_number : 4; // must be even $urls = array(); if(isset($options->wpFastestCacheMobileTheme) && $options->wpFastestCacheMobileTheme){ $mobile_theme = true; $number = round($number/2); }else{ $mobile_theme = false; } // HOME if(isset($current_order) && ($current_order == "homepage" || $current_order == "go")){ if(isset($pre_load->homepage) && $pre_load->homepage > -1){ if($mobile_theme){ array_push($urls, array("url" => get_option("home"), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_option("home"), "user-agent" => "desktop")); $number--; $pre_load->homepage = -1; } } // CUSTOM POSTS if(isset($current_order) && ($current_order == "customposttypes" || $current_order == "go")){ if($number > 0 && isset($pre_load->customposttypes) && $pre_load->customposttypes > -1){ global $wpdb; $post_types = get_post_types(array('public' => true), "names", "and"); $where_query = ""; foreach ($post_types as $post_type_key => $post_type_value) { if(!in_array($post_type_key, array("post", "page", "attachment"))){ $where_query = $where_query.$wpdb->prefix."posts.post_type = '".$post_type_value."' OR "; } } if($where_query){ $where_query = preg_replace("/(\s*OR\s*)$/", "", $where_query); $recent_custom_posts = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$where_query.") AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->customposttypes.", ".$number, ARRAY_A); if(count($recent_custom_posts) > 0){ foreach ($recent_custom_posts as $key => $post) { if($mobile_theme){ array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "desktop")); $number--; $pre_load->customposttypes = $pre_load->customposttypes + 1; } }else{ $pre_load->customposttypes = -1; } } } } // POST if(isset($current_order) && ($current_order == "post" || $current_order == "go")){ if($number > 0 && isset($pre_load->post) && $pre_load->post > -1){ // $recent_posts = wp_get_recent_posts(array( // 'numberposts' => $number, // 'offset' => $pre_load->post, // 'orderby' => 'ID', // 'order' => 'DESC', // 'post_type' => 'post', // 'post_status' => 'publish', // 'suppress_filters' => true // ), ARRAY_A); global $wpdb; $recent_posts = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$wpdb->prefix."posts.post_type = 'post') AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->post.", ".$number, ARRAY_A); if(count($recent_posts) > 0){ foreach ($recent_posts as $key => $post) { if($mobile_theme){ array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => self::wpml_get_permalink($post["ID"], get_permalink($post["ID"])), "user-agent" => "desktop")); $number--; $pre_load->post = $pre_load->post + 1; } }else{ $pre_load->post = -1; } } } // ATTACHMENT if(isset($current_order) && ($current_order == "attachment" || $current_order == "go")){ if($number > 0 && isset($pre_load->attachment) && $pre_load->attachment > -1){ global $wpdb; $recent_attachments = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$wpdb->prefix."posts.post_type = 'attachment') ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->attachment.", ".$number, ARRAY_A); if(count($recent_attachments) > 0){ foreach ($recent_attachments as $key => $attachment) { if($mobile_theme){ array_push($urls, array("url" => get_permalink($attachment["ID"]), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_permalink($attachment["ID"]), "user-agent" => "desktop")); $number--; $pre_load->attachment = $pre_load->attachment + 1; } }else{ $pre_load->attachment = -1; } } } // PAGE if(isset($current_order) && ($current_order == "page" || $current_order == "go")){ if($number > 0 && isset($pre_load->page) && $pre_load->page > -1){ global $wpdb; $pages = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS ".$wpdb->prefix."posts.ID FROM ".$wpdb->prefix."posts WHERE 1=1 AND (".$wpdb->prefix."posts.post_type = 'page') AND ((".$wpdb->prefix."posts.post_status = 'publish')) ORDER BY ".$wpdb->prefix."posts.ID DESC LIMIT ".$pre_load->page.", ".$number, ARRAY_A); if(count($pages) > 0){ foreach ($pages as $key => $page) { if($mobile_theme){ array_push($urls, array("url" => get_page_link($page["ID"]), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_page_link($page["ID"]), "user-agent" => "desktop")); $number--; $pre_load->page = $pre_load->page + 1; } }else{ $pre_load->page = -1; } } } // CATEGORY if(isset($current_order) && ($current_order == "category" || $current_order == "go")){ if($number > 0 && isset($pre_load->category) && $pre_load->category > -1){ $categories = get_terms(array( 'taxonomy' => array('category'), 'orderby' => 'id', 'order' => 'ASC', 'hide_empty' => false, 'number' => $number, 'fields' => 'all', 'pad_counts' => false, 'offset' => $pre_load->category )); if(count($categories) > 0){ foreach ($categories as $key => $category) { $term_link = get_term_link($category->slug, $category->taxonomy); if(isset($term_link->errors)){ continue; } if($mobile_theme){ array_push($urls, array("url" => $term_link, "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => $term_link, "user-agent" => "desktop")); $number--; $pre_load->category = $pre_load->category + 1; } }else{ $pre_load->category = -1; } } } // TAG if(isset($current_order) && ($current_order == "tag" || $current_order == "go")){ if($number > 0 && isset($pre_load->tag) && $pre_load->tag > -1){ $tags = get_terms(array( 'taxonomy' => array('post_tag'), 'orderby' => 'id', 'order' => 'ASC', 'hide_empty' => false, 'number' => $number, 'fields' => 'all', 'pad_counts' => false, 'offset' => $pre_load->tag )); if(count($tags) > 0){ foreach ($tags as $key => $tag) { if($mobile_theme){ array_push($urls, array("url" => get_term_link($tag->slug, $tag->taxonomy), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_term_link($tag->slug, $tag->taxonomy), "user-agent" => "desktop")); $number--; $pre_load->tag = $pre_load->tag + 1; } }else{ $pre_load->tag = -1; } } } // Custom Taxonomies if(isset($current_order) && ($current_order == "customTaxonomies" || $current_order == "go")){ if($number > 0 && isset($pre_load->customTaxonomies) && $pre_load->customTaxonomies > -1){ $taxo = get_taxonomies(array('public' => true, '_builtin' => false), "names", "and"); if(count($taxo) > 0){ $custom_taxos = get_terms(array( 'taxonomy' => array_values($taxo), 'orderby' => 'id', 'order' => 'ASC', 'hide_empty' => false, 'number' => $number, 'fields' => 'all', 'pad_counts' => false, 'offset' => $pre_load->customTaxonomies )); if(count($custom_taxos) > 0){ foreach ($custom_taxos as $key => $custom_tax) { if($mobile_theme){ array_push($urls, array("url" => get_term_link($custom_tax->slug, $custom_tax->taxonomy), "user-agent" => "mobile")); $number--; } array_push($urls, array("url" => get_term_link($custom_tax->slug, $custom_tax->taxonomy), "user-agent" => "desktop")); $number--; $pre_load->customTaxonomies = $pre_load->customTaxonomies + 1; } }else{ $pre_load->customTaxonomies = -1; } }else{ $pre_load->customTaxonomies = -1; } } } if(isset($pre_load->$current_order) && $pre_load->$current_order == -1){ array_shift($order_arr); if(isset($order_arr[0])){ $pre_load->order = implode(",", $order_arr); update_option("WpFastestCachePreLoad", json_encode($pre_load)); self::create_preload_cache($options); }else{ unset($pre_load->order); } } if(count($urls) > 0){ foreach ($urls as $key => $arr) { $user_agent = ""; if($arr["user-agent"] == "desktop"){ $user_agent = "WP Fastest Cache Preload Bot"; }else if($arr["user-agent"] == "mobile"){ $user_agent = "WP Fastest Cache Preload iPhone Mobile Bot"; } if(self::is_excluded($arr["url"])){ $status = "Excluded"; }else{ if($GLOBALS["wp_fastest_cache"]->wpfc_remote_get($arr["url"], $user_agent)){ $status = "OK"; }else{ $status = "ERROR"; } } echo $status." ".esc_html($arr["url"])." (".esc_html($arr["user-agent"]).")
    "; } echo "
    "; echo count($urls)." page have been cached"; update_option("WpFastestCachePreLoad", json_encode($pre_load)); echo "

    "; self::statistic($pre_load); }else{ if(isset($options->wpFastestCachePreload_restart)){ foreach ($pre_load as $pre_load_key => &$pre_load_value) { //if($pre_load_key != "number" && $pre_load_key != "order"){ if($pre_load_key != "number"){ $pre_load_value = 0; } } update_option("WpFastestCachePreLoad", json_encode($pre_load)); echo "Preload Restarted"; if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('cdn.php'); CdnWPFC::cloudflare_clear_cache(); }else{ echo "Completed"; wp_clear_scheduled_hook("wp_fastest_cache_Preload"); } } } public static function prepare_sitemap($url, $sitemap_cache_path){ if(!empty($url)){ $content = $GLOBALS["wp_fastest_cache"]->wpfc_remote_get($url, "xxxx", true); $content = strtolower($content); $content = preg_replace("/<\?\s*xml[^\>]*>/i", "", $content); // to remove comments $content = preg_replace("/\<\!\-\-((?:(?!-->).)+)\-\-\>/", "", $content); $content = preg_replace("/<((?:(?!url|loc).)+)>((?:(?!http).)+)<((?:(?!url|loc).)+)>/i", "", $content); // to remove tag $content = preg_replace("/<\s*image\s*:\s*image\s*>((?:(?!\<\s*\/\s*image\s*:\s*image\s*>).)+)<\s*\/\s*image\s*\:\s*image\s*>/s", "", $content); if(preg_match("/<\s*sitemapindex[^\>]+>/", $content)){ $content = preg_replace("/<\/?sitemapindex[^\>]*>/i", "", $content); $content = preg_replace("/\s/i", "", $content); $content = preg_replace("/<\/sitemap>/i", "\n", $content); }else{ $content = preg_replace("/<\/?urlset[^\>]*>/i", "", $content); $content = preg_replace("/\s/i", "", $content); $content = preg_replace("/<\/url>/i", "\n", $content); } if(!is_dir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/"))){ @mkdir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/"), 0755, true); } if(!is_dir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap"))){ @mkdir($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap"), 0755, true); } file_put_contents($sitemap_cache_path, $content); return $content; } return false; } public static function extract_sitemap_index($content, $sitemaps){ if($content){ preg_match_all("/([^\>\<]+)<\/loc><\/sitemap>/", $content, $out); if(isset($out[1]) && isset($out[1][0])){ foreach ($out[1] as $key => $value) { $sm_obj = (object) array("url" => $value, "pointer" => 0, "total" => 0); if(!in_array($value, array_column($sitemaps, 'url'))){ array_push($sitemaps, $sm_obj); } } } } return $sitemaps; } public static function create_preload_cache_sitemap($pre_load, $options){ if(!isset($pre_load->sitemaps[0])){ die("No sitemap detected!"); } if(defined("WPFC_PRELOAD_NUMBER") && WPFC_PRELOAD_NUMBER){ $number = WPFC_PRELOAD_NUMBER; }else{ $number = $options->wpFastestCachePreload_number; } $urls = array(); if(isset($options->wpFastestCacheMobileTheme) && $options->wpFastestCacheMobileTheme){ $mobile_theme = true; $number = round($number/2); }else{ $mobile_theme = false; } foreach ($pre_load->sitemaps as $s_key => &$s_value) { $sitemap_cache_path = $GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap/".base64_encode($s_value->url).".xml"); if(!file_exists($sitemap_cache_path) || !isset($s_value->total)){ $content = self::prepare_sitemap($s_value->url, $sitemap_cache_path); $s_value->total = substr_count($content, ''); if($s_value->total == 0){ $pre_load->sitemaps = self::extract_sitemap_index($content, $pre_load->sitemaps); unset($pre_load->sitemaps[$s_key]); $pre_load->sitemaps = array_values($pre_load->sitemaps); update_option("WpFastestCachePreLoad", json_encode($pre_load)); die($s_value->url." was extracted"); } } $s_value->pointer = $s_value->pointer > 0 ? $s_value->pointer : 1; if($s_value->pointer < $s_value->total){ $file = fopen($sitemap_cache_path, "r"); for ($i = 1; $i < $s_value->pointer; $i++) { fgets($file); } for ($j=0; $j < $number; $j++) { $specific_line = fgets($file); $specific_line = strip_tags($specific_line); $specific_line = trim($specific_line); if($specific_line){ if($mobile_theme){ array_push($urls, array("url" => $specific_line, "user-agent" => "mobile")); } array_push($urls, array("url" => $specific_line, "user-agent" => "desktop")); } } fclose($file); $s_value->pointer = $s_value->pointer + $number; $s_value->pointer = $s_value->pointer > $s_value->total ? $s_value->total : $s_value->pointer; break; } } if(count($urls) > 0){ foreach ($urls as $key => $arr) { $user_agent = ""; if($arr["user-agent"] == "desktop"){ $user_agent = "WP Fastest Cache Preload Bot"; }else if($arr["user-agent"] == "mobile"){ $user_agent = "WP Fastest Cache Preload iPhone Mobile Bot"; } if(self::is_excluded($arr["url"])){ $status = "Excluded"; }else{ if($GLOBALS["wp_fastest_cache"]->wpfc_remote_get($arr["url"], $user_agent)){ $status = "OK"; }else{ $status = "ERROR"; } } echo $status." ".esc_html($arr["url"])." (".esc_html($arr["user-agent"]).")
    "; } echo "\n\n

    "; foreach ($pre_load->sitemaps as $sres_key => $sres_value) { if(isset($sres_value->total)){ $cached_page_number = $sres_value->pointer; if($sres_value->pointer == $sres_value->total){ $cached_page_number = $sres_value->pointer; }else{ $cached_page_number--; $cached_page_number = max($cached_page_number, 0); } echo esc_html($sres_value->url).": ".esc_html($cached_page_number)."/".esc_html($sres_value->total)."
    \n"; }else{ echo esc_html($sres_value->url).": -
    \n"; } } update_option("WpFastestCachePreLoad", json_encode($pre_load)); }else{ if(isset($options->wpFastestCachePreload_restart)){ foreach ($pre_load->sitemaps as $r_key => &$r_value) { $r_value->pointer = 0; } update_option("WpFastestCachePreLoad", json_encode($pre_load)); echo "Preload Restarted"; // clearing the sitemap cache in order to get the latest sitemap updates $GLOBALS["wp_fastest_cache"]->rm_folder_recursively($GLOBALS["wp_fastest_cache"]->getWpContentDir("/cache/all/preload-sitemap")); if($varnish_datas = get_option("WpFastestCacheVarnish")){ include_once('varnish.php'); VarnishWPFC::purge_cache($varnish_datas); } include_once('cdn.php'); CdnWPFC::cloudflare_clear_cache(); }else{ echo "Completed"; wp_clear_scheduled_hook("wp_fastest_cache_Preload"); } } } public static function create_preload_cache($options){ if(!isset($options->wpFastestCacheStatus)){ die("Cache System must be enabled"); } if($data = get_option("WpFastestCachePreLoad")){ $pre_load = json_decode($data); if(isset($pre_load->sitemaps)){ self::create_preload_cache_sitemap($pre_load, $options); }else{ self::create_preload_cache_default($pre_load, $options); } } if(isset($_GET) && isset($_GET["type"]) && $_GET["type"] == "preload"){ die(); } } public static function is_excluded($url){ if(!is_string($url)){ return false; } $request_url = parse_url($url, PHP_URL_PATH); if($request_url){ $request_url = urldecode(trim($request_url, "/")); } if(!$request_url){ return false; } if(self::$exclude_rules === false){ if($json_data = get_option("WpFastestCacheExclude")){ self::$exclude_rules = json_decode($json_data); }else{ self::$exclude_rules = array(); } } foreach((array)self::$exclude_rules as $key => $value){ if($value->prefix == "exact"){ if(strtolower($value->content) == strtolower($request_url)){ return true; } }else{ if($value->prefix == "startwith"){ $preg_match_rule = "^".preg_quote($value->content, "/"); }else if($value->prefix == "contain"){ $preg_match_rule = preg_quote($value->content, "/"); } if(isset($preg_match_rule)){ if(preg_match("/".$preg_match_rule."/i", $request_url)){ return true; } } } } return false; } } ?>wp-fastest-cache/inc/css-utilities.php000064400000055711151435171370014005 0ustar00wpfc = $wpfc; $this->html = $html; $this->set_except_tags(); $this->set_tags(); $this->tags_reorder(); } public function check_exclude($css_url = false){ if($css_url){ // to exclude the css source of elementor which is /elementor/css/post-[number].css to avoid increasing the size of minified sources if(preg_match("/\/elementor\/css\/post-\d+\.css/i", $css_url)){ return true; } foreach((array)$this->wpfc->exclude_rules as $key => $value){ if(isset($value->prefix) && $value->prefix && $value->type == "css"){ if($value->prefix == "contain"){ $preg_match_rule = preg_quote($value->content, "/"); } if(preg_match("/".$preg_match_rule."/i", $css_url)){ return true; } } } } } public function combineCss(){ $all = array(); $group = array(); foreach ($this->tags as $key => $value) { if(preg_match("/except){ if(strpos($this->except, $value["text"]) !== false){ array_push($all, $group); $group = array(); continue; } } if(!$this->checkInternal($value["text"])){ array_push($all, $group); $group = array(); continue; } if($this->check_exclude($value["text"])){ array_push($all, $group); $group = array(); continue; } if(count($group) > 0){ if($group[0]["media"] == $value["media"]){ array_push($group, $value); }else{ array_push($all, $group); $group = array(); array_push($group, $value); } }else{ array_push($group, $value); } if($value === end($this->tags)){ array_push($all, $group); } } if(preg_match("/"; return $link; } public function tags_reorder(){ $sorter = array(); $ret = array(); foreach ($this->tags as $ii => $va) { $sorter[$ii] = $va['start']; } asort($sorter); foreach ($sorter as $ii => $va) { $ret[$ii] = $this->tags[$ii]; } $this->tags = $ret; } public function set_except_tags(){ $comment_tags = $this->find_tags(""); foreach ($comment_tags as $key => $value) { $this->except = $value["text"].$this->except; } // to execute if html contains
    '; // Insert code if (!defined('ABSPATH') || strlen(ABSPATH) < 8) { $scan_path = dirname(dirname(__FILE__)); $scan_path = str_replace(DIRSEP.'wp-content'.DIRSEP.'plugins'.DIRSEP.'wp-website-antivirus-protection', DIRSEP, $scan_path); //echo TEST; } else $scan_path = ABSPATH; $filename = $scan_path.DIRSEP.'wp-config.php'; $handle = fopen($filename, "r"); if ($handle === false) return false; $contents = fread($handle, filesize($filename)); if ($contents === false) return false; fclose($handle); $pos_code = stripos($contents, '6DBB86C229DE'); if ($action === false) { // Remove block $contents = str_replace($integration_code, "", $contents); } else { // Insert block if ( $pos_code !== false/* && $pos_code == 0*/) { // Skip double code injection return true; } else { // Insert $contents = $integration_code.$contents; } } $handle = fopen($filename, 'w'); if ($handle === false) { // 2nd try , change file permssion to 666 $status = chmod($filename, 0666); if ($status === false) return false; $handle = fopen($filename, 'w'); if ($handle === false) return false; } $status = fwrite($handle, $contents); if ($status === false) return false; fclose($handle); return true; } public static function MembershipFile($membership, $scans, $show_protectedby) { $filename = dirname(dirname(__FILE__)).DIRSEP.'tmp'.DIRSEP.'membership.log'; if ( ($membership == 'pro' || ($membership == 'trial' && $scans > 10)) && ($show_protectedby == 0) ) { if (file_exists($filename)) unlink($filename); } else { $fp = fopen($filename, 'w'); fwrite($fp, $membership.":".$scans); fclose($fp); } } public static function RecoveryMode($access_key) { $params = FUNC_WAP2_general::Get_SQL_Params(array('access_key')); if ($params['access_key'] == $access_key) { if (!defined('ABSPATH') || strlen(ABSPATH) < 8) { $site_path = dirname(__FILE__); $site_path = str_replace(DIRSEP.'wp-content'.DIRSEP.'plugins'.DIRSEP.'wp-website-antivirus-protection'.DIRSEP, DIRSEP, $site_path); } else $site_path = ABSPATH; if (!file_exists($site_path.DIRSEP.'webanalyze')) { if ( !mkdir($site_path.DIRSEP.'webanalyze') ) die( "Can't create folder ".$site_path.DIRSEP.'webanalyze' ); } // Create antivirus.php $link = 'https://www.siteguarding.com/_get_file.php?file=antivirus&time='.time(); $file = $site_path.DIRSEP.'webanalyze'.DIRSEP.'antivirus.php'; $file_content = self::DownloadRemoteFile($link, $file); // Create antivirus_config.php $file_content = ''."\n"; $file = $site_path.DIRSEP.'webanalyze'.DIRSEP.'antivirus_config.php'; self::CreateFile($file, $file_content); die("OK"); } exit; } public static function Print_HelpBlock() { ?>

    Got hacked or blacklisted? We can help.

    Over 450.000 clients use our services daily. Based on extensive experience focused in Information Security we can assure you the best service and the best prices in the Globe. Before your business is a victim by intruders and think of your Business reputation damage. Consider to outsource your overall website security to professionals. Even if you have been a victim, we can take care of all the needed processes to bring back everything in place such as Google's reputation loss recovery, email delay processes, etc. Our Research & Development experts scan daily thousands of attacks and update all firewalls and customers on the fly.

    Upgrade to PREMIUM Clean Website

    SiteGuarding - Professional Web Security Services!
    SiteGuarding - Protect your website from unathorized access, malware and other threat
    Login Services Security Tips Contacts
    {MESSAGE_CONTENT}
    URGENT SUPPORT
    Not sure in the report details? Need urgent help and support. Please contact us https://www.siteguarding.com/en/contacts
    How can we help?
    If you have any questions please dont hesitate to contact us. Our support team will be happy to answer your questions 24 hours a day, 7 days a week. You can contact us at support@siteguarding.com.

    Thanks again for choosing SiteGuarding as your security partner!

    SiteGuarding Team
    We will help you to protect your website from unauthorized access, malware and other threats.
    Website Daily Scanning Malware & Backdoor Removal Security Analyze & Update Website Development
    Add support@siteguarding.com to the trusted senders list.
    '; $body_message = str_replace("{MESSAGE_CONTENT}", $result, $body_message); // To send HTML mail, the Content-type header must be set $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; // Additional headers $headers .= 'From: '. $to . "\r\n"; // Mail it mail($to, $subject, $body_message, $headers); } public static function Wait_CSS_Loader() { ?>
    "Anonymous Proxy", 'A2' => "Satellite Provider", 'O1' => "Other Country", 'AD' => "Andorra", 'AE' => "United Arab Emirates", 'AF' => "Afghanistan", 'AG' => "Antigua and Barbuda", 'AI' => "Anguilla", 'AL' => "Albania", 'AM' => "Armenia", 'AO' => "Angola", 'AP' => "Asia/Pacific Region", 'AQ' => "Antarctica", 'AR' => "Argentina", 'AS' => "American Samoa", 'AT' => "Austria", 'AU' => "Australia", 'AW' => "Aruba", 'AX' => "Aland Islands", 'AZ' => "Azerbaijan", 'BA' => "Bosnia and Herzegovina", 'BB' => "Barbados", 'BD' => "Bangladesh", 'BE' => "Belgium", 'BF' => "Burkina Faso", 'BG' => "Bulgaria", 'BH' => "Bahrain", 'BI' => "Burundi", 'BJ' => "Benin", 'BL' => "Saint Bartelemey", 'BM' => "Bermuda", 'BN' => "Brunei Darussalam", 'BO' => "Bolivia", 'BQ' => "Bonaire, Saint Eustatius and Saba", 'BR' => "Brazil", 'BS' => "Bahamas", 'BT' => "Bhutan", 'BV' => "Bouvet Island", 'BW' => "Botswana", 'BY' => "Belarus", 'BZ' => "Belize", 'CA' => "Canada", 'CC' => "Cocos (Keeling) Islands", 'CD' => "Congo, The Democratic Republic of the", 'CF' => "Central African Republic", 'CG' => "Congo", 'CH' => "Switzerland", 'CI' => "Cote d'Ivoire", 'CK' => "Cook Islands", 'CL' => "Chile", 'CM' => "Cameroon", 'CN' => "China", 'CO' => "Colombia", 'CR' => "Costa Rica", 'CU' => "Cuba", 'CV' => "Cape Verde", 'CW' => "Curacao", 'CX' => "Christmas Island", 'CY' => "Cyprus", 'CZ' => "Czech Republic", 'DE' => "Germany", 'DJ' => "Djibouti", 'DK' => "Denmark", 'DM' => "Dominica", 'DO' => "Dominican Republic", 'DZ' => "Algeria", 'EC' => "Ecuador", 'EE' => "Estonia", 'EG' => "Egypt", 'EH' => "Western Sahara", 'ER' => "Eritrea", 'ES' => "Spain", 'ET' => "Ethiopia", 'EU' => "Europe", 'FI' => "Finland", 'FJ' => "Fiji", 'FK' => "Falkland Islands (Malvinas)", 'FM' => "Micronesia, Federated States of", 'FO' => "Faroe Islands", 'FR' => "France", 'GA' => "Gabon", 'GB' => "United Kingdom", 'GD' => "Grenada", 'GE' => "Georgia", 'GF' => "French Guiana", 'GG' => "Guernsey", 'GH' => "Ghana", 'GI' => "Gibraltar", 'GL' => "Greenland", 'GM' => "Gambia", 'GN' => "Guinea", 'GP' => "Guadeloupe", 'GQ' => "Equatorial Guinea", 'GR' => "Greece", 'GS' => "South Georgia and the South Sandwich Islands", 'GT' => "Guatemala", 'GU' => "Guam", 'GW' => "Guinea-Bissau", 'GY' => "Guyana", 'HK' => "Hong Kong", 'HM' => "Heard Island and McDonald Islands", 'HN' => "Honduras", 'HR' => "Croatia", 'HT' => "Haiti", 'HU' => "Hungary", 'ID' => "Indonesia", 'IE' => "Ireland", 'IL' => "Israel", 'IM' => "Isle of Man", 'IN' => "India", 'IO' => "British Indian Ocean Territory", 'IQ' => "Iraq", 'IR' => "Iran, Islamic Republic of", 'IS' => "Iceland", 'IT' => "Italy", 'JE' => "Jersey", 'JM' => "Jamaica", 'JO' => "Jordan", 'JP' => "Japan", 'KE' => "Kenya", 'KG' => "Kyrgyzstan", 'KH' => "Cambodia", 'KI' => "Kiribati", 'KM' => "Comoros", 'KN' => "Saint Kitts and Nevis", 'KP' => "Korea, Democratic People's Republic of", 'KR' => "Korea, Republic of", 'KW' => "Kuwait", 'KY' => "Cayman Islands", 'KZ' => "Kazakhstan", 'LA' => "Lao People's Democratic Republic", 'LB' => "Lebanon", 'LC' => "Saint Lucia", 'LI' => "Liechtenstein", 'LK' => "Sri Lanka", 'LR' => "Liberia", 'LS' => "Lesotho", 'LT' => "Lithuania", 'LU' => "Luxembourg", 'LV' => "Latvia", 'LY' => "Libyan Arab Jamahiriya", 'MA' => "Morocco", 'MC' => "Monaco", 'MD' => "Moldova, Republic of", 'ME' => "Montenegro", 'MF' => "Saint Martin", 'MG' => "Madagascar", 'MH' => "Marshall Islands", 'MK' => "Macedonia", 'ML' => "Mali", 'MM' => "Myanmar", 'MN' => "Mongolia", 'MO' => "Macao", 'MP' => "Northern Mariana Islands", 'MQ' => "Martinique", 'MR' => "Mauritania", 'MS' => "Montserrat", 'MT' => "Malta", 'MU' => "Mauritius", 'MV' => "Maldives", 'MW' => "Malawi", 'MX' => "Mexico", 'MY' => "Malaysia", 'MZ' => "Mozambique", 'NA' => "Namibia", 'NC' => "New Caledonia", 'NE' => "Niger", 'NF' => "Norfolk Island", 'NG' => "Nigeria", 'NI' => "Nicaragua", 'NL' => "Netherlands", 'NO' => "Norway", 'NP' => "Nepal", 'NR' => "Nauru", 'NU' => "Niue", 'NZ' => "New Zealand", 'OM' => "Oman", 'PA' => "Panama", 'PE' => "Peru", 'PF' => "French Polynesia", 'PG' => "Papua New Guinea", 'PH' => "Philippines", 'PK' => "Pakistan", 'PL' => "Poland", 'PM' => "Saint Pierre and Miquelon", 'PN' => "Pitcairn", 'PR' => "Puerto Rico", 'PS' => "Palestinian Territory", 'PT' => "Portugal", 'PW' => "Palau", 'PY' => "Paraguay", 'QA' => "Qatar", 'RE' => "Reunion", 'RO' => "Romania", 'RS' => "Serbia", 'RU' => "Russian Federation", 'RW' => "Rwanda", 'SA' => "Saudi Arabia", 'SB' => "Solomon Islands", 'SC' => "Seychelles", 'SD' => "Sudan", 'SE' => "Sweden", 'SG' => "Singapore", 'SH' => "Saint Helena", 'SI' => "Slovenia", 'SJ' => "Svalbard and Jan Mayen", 'SK' => "Slovakia", 'SL' => "Sierra Leone", 'SM' => "San Marino", 'SN' => "Senegal", 'SO' => "Somalia", 'SR' => "Suriname", 'ST' => "Sao Tome and Principe", 'SV' => "El Salvador", 'SX' => "Sint Maarten", 'SY' => "Syrian Arab Republic", 'SZ' => "Swaziland", 'TC' => "Turks and Caicos Islands", 'TD' => "Chad", 'TF' => "French Southern Territories", 'TG' => "Togo", 'TH' => "Thailand", 'TJ' => "Tajikistan", 'TK' => "Tokelau", 'TL' => "Timor-Leste", 'TM' => "Turkmenistan", 'TN' => "Tunisia", 'TO' => "Tonga", 'TR' => "Turkey", 'TT' => "Trinidad and Tobago", 'TV' => "Tuvalu", 'TW' => "Taiwan", 'TZ' => "Tanzania, United Republic of", 'UA' => "Ukraine", 'UG' => "Uganda", 'UM' => "United States Minor Outlying Islands", 'US' => "United States", 'UY' => "Uruguay", 'UZ' => "Uzbekistan", 'VA' => "Holy See (Vatican City State)", 'VC' => "Saint Vincent and the Grenadines", 'VE' => "Venezuela", 'VG' => "Virgin Islands, British", 'VI' => "Virgin Islands, U.S.", 'VN' => "Vietnam", 'VU' => "Vanuatu", 'WF' => "Wallis and Futuna", 'WS' => "Samoa", 'YE' => "Yemen", 'YT' => "Mayotte", 'ZA' => "South Africa", 'ZM' => "Zambia", 'ZW' => "Zimbabwe" ); private $GEOIP_COUNTRY_CODES = array( "","AP","EU","AD","AE","AF","AG","AI","AL","AM","CW", "AO","AQ","AR","AS","AT","AU","AW","AZ","BA","BB", "BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO", "BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD", "CF","CG","CH","CI","CK","CL","CM","CN","CO","CR", "CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO", "DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ", "FK","FM","FO","FR","SX","GA","GB","GD","GE","GF", "GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT", "GU","GW","GY","HK","HM","HN","HR","HT","HU","ID", "IE","IL","IN","IO","IQ","IR","IS","IT","JM","JO", "JP","KE","KG","KH","KI","KM","KN","KP","KR","KW", "KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT", "LU","LV","LY","MA","MC","MD","MG","MH","MK","ML", "MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV", "MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI", "NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF", "PG","PH","PK","PL","PM","PN","PR","PS","PT","PW", "PY","QA","RE","RO","RU","RW","SA","SB","SC","SD", "SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO", "SR","ST","SV","SY","SZ","TC","TD","TF","TG","TH", "TJ","TK","TM","TN","TO","TL","TR","TT","TV","TW", "TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE", "VG","VI","VN","VU","WF","WS","YE","YT","RS","ZA", "ZM","ME","ZW","A1","A2","O1","AX","GG","IM","JE", "BL","MF", "BQ"); private function coutrySeek($ipnum) { $offset = 0; for ($depth = 31; $depth >= 0; --$depth) { fseek($this->filehandle, 2 * $this->record_length * $offset, SEEK_SET) == 0 or die("fseek failed"); $buf = fread($this->filehandle, 2 * $this->record_length); $x = array(0,0); for ($i = 0; $i < 2; ++$i) { for ($j = 0; $j < $this->record_length; ++$j) { $x[$i] += ord($buf[$this->record_length * $i + $j]) << ($j * 8); } } if ($ipnum & (1 << $depth)) { if ($x[1] >= $this->databaseSegments) { return $x[1]; } $offset = $x[1]; } else { if ($x[0] >= $this->databaseSegments) { return $x[0]; } $offset = $x[0]; } } trigger_error("db corrupted", E_USER_ERROR); return false; } public function __construct() { $this->filehandle = fopen((dirname(__FILE__) . "/geo.dat"),"rb") or die( "Can not open DB file\n" ); $this->databaseType = 106; $this->record_length = 3; if ($this->flags) { $offset = @shmop_size ($this->shmid) - 3; for ($i = 0; $i < 20; $i++) { $delim = @shmop_read ($this->shmid, $offset, 3); $offset += 3; if ($delim == (chr(255).chr(255).chr(255))) { $this->databaseType = ord(@shmop_read ($this->shmid, $offset, 1)); $offset++; if ($this->databaseType == 112){ $this->databaseSegments = 16700000; } else if ($this->databaseType == 3){ $this->databaseSegments = 16000000; } else if (($this->databaseType == 111)|| ($this->databaseType == 2) || ($this->databaseType == 110) || ($this->databaseType == 23) || ($this->databaseType == 11) || ($this->databaseType == 24) || ($this->databaseType == 4) || ($this->databaseType == 22) || ($this->databaseType == 28) || ($this->databaseType == 29) || ($this->databaseType == 13) || ($this->databaseType == 14) || ($this->databaseType == 31) || ($this->databaseType == 30) || ($this->databaseType == 32) || ($this->databaseType == 33) || ($this->databaseType == 9) || ($this->databaseType == 21)){ $this->databaseSegments = 0; $buf = @shmop_read ($this->shmid, $offset, 3); for ($j = 0;$j < 3;$j++){ $this->databaseSegments += (ord($buf[$j]) << ($j * 8)); } if (($this->databaseType == 110) || ($this->databaseType == 23) || ($this->databaseType == 11) || ($this->databaseType == 24) || ($this->databaseType == 4) || ($this->databaseType == 22)) { $this->record_length = 4; } } break; } else { $offset -= 4; } } if (($this->databaseType == 106)|| ($this->databaseType == 12)|| ($this->databaseType == 8)|| ($this->databaseType == 10)){ $this->databaseSegments = 16776960; } } else { $filepos = ftell($this->filehandle); fseek($this->filehandle, -3, SEEK_END); for ($i = 0; $i < 20; $i++) { $delim = fread($this->filehandle,3); if ($delim == (chr(255).chr(255).chr(255))){ $this->databaseType = ord(fread($this->filehandle,1)); if ($this->databaseType == 112){ $this->databaseSegments = 16700000; } else if ($this->databaseType == 3){ $this->databaseSegments = 16000000; } else if (($this->databaseType == 111) || ($this->databaseType == 2) || ($this->databaseType == 31) || ($this->databaseType == 30) || ($this->databaseType == 110) || ($this->databaseType == 11) || ($this->databaseType == 4) || ($this->databaseType == 23) || ($this->databaseType == 24) || ($this->databaseType == 22) || ($this->databaseType == 13) || ($this->databaseType == 14) || ($this->databaseType == 31) || ($this->databaseType == 30) || ($this->databaseType == 32) || ($this->databaseType == 33) || ($this->databaseType == 28) || ($this->databaseType == 29) || ($this->databaseType == 9) || ($this->databaseType == 21)){ $this->databaseSegments = 0; $buf = fread($this->filehandle,3); for ($j = 0;$j < 3;$j++){ $this->databaseSegments += (ord($buf[$j]) << ($j * 8)); } if ( ( $this->databaseType == 110 ) || ( $this->databaseType == 11 ) || ( $this->databaseType == 4 ) || ( $this->databaseType == 23 ) || ( $this->databaseType == 24 ) || ( $this->databaseType == 22 )) { $this->record_length = 4; } } break; } else { fseek($this->filehandle, -4, SEEK_CUR); } } if (($this->databaseType == 106)|| ($this->databaseType == 12)|| ($this->databaseType == 8)|| ($this->databaseType == 10)){ $this->databaseSegments = 16776960; } fseek($this->filehandle,$filepos,SEEK_SET); } } public function getCountryCodeByAddr($addr) { $country_id = $this->getCoutryIdByAddr($addr); if ($country_id !== false) { return $this->GEOIP_COUNTRY_CODES[$country_id]; } return false; } public function getCoutryIdByAddr($addr) { $ipnum = ip2long($addr); return $this->coutrySeek($ipnum) - 16776960; } public function getCoutryByIP($ip, $return_country_name = false){ if ($return_country_name === false) return $this->getCountryCodeByAddr($ip); if(isset($this->map[$this->getCountryCodeByAddr($ip)])){ return $this->map[$this->getCountryCodeByAddr($ip)]; } else { return ''; } } public function getNameByCountryCode($code){ if(isset($this->map[$code])){ return $this->map[$code]; } else { return ''; } } } class FUNC_SG_CheckForUpdates { private $needs_core_update = false; private $core_update_version = 0; private $plugin_updates = array(); private $all_plugins = array(); private $plugin_slugs = array(); private $theme_updates = array(); /** * @return bool */ public function needsAnyUpdates() { return $this->needsCoreUpdate() || count($this->getPluginUpdates()) > 0 || count($this->getThemeUpdates()) > 0; } /** * Check for any core, plugin or theme updates. * * @return $this */ public function checkAllUpdates() { return $this->checkCoreUpdates() ->checkPluginUpdates() ->checkThemeUpdates(); } /** * Check if there is an update to the WordPress core. * * @return $this */ public function checkCoreUpdates() { $this->needs_core_update = false; if (!function_exists('wp_version_check')) { require_once(ABSPATH . WPINC . '/update.php'); } if (!function_exists('get_preferred_from_update_core')) { require_once(ABSPATH . 'wp-admin/includes/update.php'); } include( ABSPATH . WPINC . '/version.php' ); //defines $wp_version wp_version_check(); $update_core = get_preferred_from_update_core(); if (isset($update_core->response) && $update_core->response == 'upgrade') { $this->needs_core_update = true; $this->core_update_version = $update_core->current; } return $this; } /** * Check if any plugins need an update. * * @return $this */ public function checkPluginUpdates() { $this->plugin_updates = array(); if (!function_exists('wp_update_plugins')) { require_once(ABSPATH . WPINC . '/update.php'); } if (!function_exists('plugins_api')) { require_once(ABSPATH . '/wp-admin/includes/plugin-install.php'); } wp_update_plugins(); $update_plugins = get_site_transient('update_plugins'); //Get the full plugin list if (!function_exists('get_plugins')) { require_once(ABSPATH . '/wp-admin/includes/plugin.php'); } $installedPlugins = get_plugins(); if ($update_plugins && !empty($update_plugins->response)) { foreach ($update_plugins->response as $plugin => $vals) { if (!function_exists('get_plugin_data')) { require_once ABSPATH . '/wp-admin/includes/plugin.php'; } $pluginFile = WP_PLUGIN_DIR . DIRSEP . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled unset($installedPlugins[$plugin]); continue; } $valsArray = (array) $vals; $slug = (isset($valsArray['slug']) ? $valsArray['slug'] : null); if ($slug === null) { //Plugin may have been removed from the repo or was never in it so guess if (preg_match('/^([^\/]+)\//', $pluginFile, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $pluginFile, $matches)) { $slug = $matches[1]; } } $data = get_plugin_data($pluginFile); $data['pluginFile'] = $pluginFile; $data['newVersion'] = (isset($valsArray['new_version']) ? $valsArray['new_version'] : 'Unknown'); $data['slug'] = $slug; $data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null); //Check the vulnerability database $data['vulnerable'] = false; if ($slug !== null) { $this->plugin_slugs[] = $slug; $this->all_plugins[$slug] = $data; } $this->plugin_updates[] = $data; unset($installedPlugins[$plugin]); } } //We have to grab the slugs from the update response because no built-in function exists to return the true slug from the local files if ($update_plugins && !empty($update_plugins->no_update)) { foreach ($update_plugins->no_update as $plugin => $vals) { if (!function_exists('get_plugin_data')) { require_once ABSPATH . '/wp-admin/includes/plugin.php'; } $pluginFile = WP_PLUGIN_DIR . DIRSEP . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the update status was pulled unset($installedPlugins[$plugin]); continue; } $valsArray = (array) $vals; $data = get_plugin_data($pluginFile); $data['pluginFile'] = $pluginFile; $data['slug'] = (isset($valsArray['slug']) ? $valsArray['slug'] : null); $data['wpURL'] = (isset($valsArray['url']) ? rtrim($valsArray['url'], '/') : null); //Check the vulnerability database $data['vulnerable'] = false; if (isset($valsArray['slug'])) { $this->plugin_slugs[] = $valsArray['slug']; $this->all_plugins[$valsArray['slug']] = $data; } unset($installedPlugins[$plugin]); } } //Get the remaining plugins (not in the wordpress.org repo for whatever reason) foreach ($installedPlugins as $plugin => $data) { $pluginFile = WP_PLUGIN_DIR . DIRSEP . $plugin; if (!file_exists($pluginFile)) { //Plugin has been removed since the list was generated continue; } $data = get_plugin_data($pluginFile); $slug = null; if (preg_match('/^([^\/]+)\//', $plugin, $matches)) { $slug = $matches[1]; } else if (preg_match('/^([^\/.]+)\.php$/', $plugin, $matches)) { $slug = $matches[1]; } if ($slug !== null) { $this->plugin_slugs[] = $slug; $this->all_plugins[$slug] = $data; } } return $this; } /** * Check if any themes need an update. * * @return $this */ public function checkThemeUpdates() { $this->theme_updates = array(); if (!function_exists('wp_update_themes')) { require_once(ABSPATH . WPINC . '/update.php'); } //$update_themes = get_site_transient('update_themes'); wp_update_themes(); $update_themes = get_site_transient('update_themes'); if ($update_themes && (!empty($update_themes->response))) { if (!function_exists('wp_get_themes')) { require_once ABSPATH . '/wp-includes/theme.php'; } $themes = wp_get_themes(); foreach ($update_themes->response as $theme => $vals) { foreach ($themes as $name => $themeData) { if (strtolower($name) == $theme) { $this->theme_updates[] = array( 'newVersion' => (isset($vals['new_version']) ? $vals['new_version'] : 'Unknown'), 'package' => (isset($vals['package']) ? $vals['package'] : null), 'URL' => (isset($vals['url']) ? $vals['url'] : null), 'Name' => $themeData['Name'], 'name' => $themeData['Name'], 'version' => $themeData['Version'], 'vulnerable' => '' ); } } } } return $this; } /** * @return boolean */ public function needsCoreUpdate() { return $this->needs_core_update; } /** * @return int */ public function getCoreUpdateVersion() { return $this->core_update_version; } /** * @return array */ public function getPluginUpdates() { return $this->plugin_updates; } /** * @return array */ public function getThemeUpdates() { return $this->theme_updates; } } ?>wp-website-antivirus-protection/wp-website-antivirus-protection/classes/firewall.php000064400000050104151435171370025316 0ustar00scan_path = SITEGUARDING_SCAN_PATH; $fw_client->dirsep = $DIRSEP; $fw_client->log_file_max_size = SITEGUARDING_LOG_FILE_MAX_SIZE; // Load and parse the rules if (!$fw_client->LoadRules()) die('Rules are not loaded'); // Log the request // *moved to the end* $fw_client->LogRequest(); // Checking if the file is empty if (SITEGUARDING_BLOCK_EMPTY_FILES === true && file_exists($_SERVER['SCRIPT_FILENAME']) && filesize($_SERVER['SCRIPT_FILENAME']) == 0) { $fw_client->Block_This_Session('Access to empty file '.$_SERVER["SCRIPT_FILENAME"]); // the process will die exit; } if (isset($_SERVER["HTTP_X_REAL_IP"])) $_SERVER["REMOTE_ADDR"] = $_SERVER["HTTP_X_REAL_IP"]; // Checking this request based on the rules if ($fw_client->CheckIP_in_Allowed($_SERVER["REMOTE_ADDR"])) {$fw_client->LogRequest(); return;} if ($fw_client->CheckIP_in_Blocked($_SERVER["REMOTE_ADDR"])) { $fw_client->Block_This_Session('Not allowed IP '.$_SERVER["REMOTE_ADDR"]); // the process will die exit; } // Global RULES if (strpos( $_SERVER['SCRIPT_FILENAME'], SITEGUARDING_SCAN_PATH) != 0) { $SCRIPT_FILENAME = substr($_SERVER['SCRIPT_FILENAME'], strpos( $_SERVER['SCRIPT_FILENAME'], SITEGUARDING_SCAN_PATH)); } else $SCRIPT_FILENAME = $_SERVER['SCRIPT_FILENAME']; $tmp_session_rule = $fw_client->Session_Apply_Rules($SCRIPT_FILENAME); if ($tmp_session_rule != '') $fw_client->this_session_rule = $tmp_session_rule; if ($fw_client->this_session_rule == 'block') { $fw_client->Block_This_Session('Rules for the file'); // the process will die exit; } // Check Requests $tmp_session_rule = $fw_client->Session_Check_Requests($_REQUEST); if ($tmp_session_rule != '') $fw_client->this_session_rule = $tmp_session_rule; if ($fw_client->this_session_rule == 'block') { $fw_client->Block_This_Session('Request rule => '.$fw_client->this_session_reason_to_block, true); // the process will die exit; } // Check BLOCK_URLS $tmp_session_rule = $fw_client->Check_URLs($_SERVER['REQUEST_URI']); if ($tmp_session_rule != '') $fw_client->this_session_rule = $tmp_session_rule; if ($fw_client->this_session_rule == 'block') { $fw_client->Block_This_Session('Not allowed URL'); // the process will die exit; } // Log the request (the request passed all the rules) $fw_client->LogRequest(); /** * Class Firewall */ class SiteGuarding_Firewall_Client { var $rules = array(); var $scan_path = ''; var $save_empty_requests = false; var $single_log_file = false; var $dirsep = '/'; var $email_for_alerts = ''; var $this_session_rule = false; var $this_session_reason_to_block = ''; var $float_file_folder = false; var $log_file_max_size = 5; // in Mb public function LoadRules() { $rules = array( 'ALLOW_ALL_IP' => array(), 'BLOCK_ALL_IP' => array(), 'ALERT_IP' => array(), 'BLOCK_RULES_IP' => array(), 'RULES' => array( 'ALLOW' => array(), 'BLOCK' => array() ), 'BLOCK_RULES' => array( 'ALLOW' => array(), 'BLOCK' => array() ), 'BLOCK_URLS' => array(), 'ALLOW_REQUESTS' => array(), 'BLOCK_REQUESTS' => array(), 'EXCLUDE_REMOTE_ALERT_FILES' => array() ); $this->rules = $rules; $rows = file(dirname(__FILE__).$this->dirsep.'rules.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); if (count($rows) == 0) return true; $section = ''; foreach ($rows as $row) { $row = trim($row); if ($row == '::ALLOW_ALL_IP::') {$section = 'ALLOW_ALL_IP'; continue;} if ($row == '::BLOCK_ALL_IP::') {$section = 'BLOCK_ALL_IP'; continue;} if ($row == '::ALERT_IP::') {$section = 'ALERT_IP'; continue;} if ($row == '::BLOCK_RULES_IP::') {$section = 'BLOCK_RULES_IP'; continue;} if ($row == '::RULES::') {$section = 'RULES'; continue;} if ($row == '::BLOCK_RULES::') {$section = 'BLOCK_RULES'; continue;} if ($row == '::BLOCK_URLS::') {$section = 'BLOCK_URLS'; continue;} if ($row == '::ALLOW_REQUESTS::') {$section = 'ALLOW_REQUESTS'; continue;} if ($row == '::BLOCK_REQUESTS::') {$section = 'BLOCK_REQUESTS'; continue;} if ($row == '::EXCLUDE_REMOTE_ALERT_FILES::') {$section = 'EXCLUDE_REMOTE_ALERT_FILES'; continue;} if (strlen($row) == 0) continue; if ($row[0] == '#' || $section == '') continue; switch ($section) { case 'BLOCK_URLS': $rules['BLOCK_URLS'][] = trim($row); break; case 'BLOCK_REQUESTS': $tmp = explode("|", $row); $rule_field = trim($tmp[0]); $rule_value = trim($tmp[1]); $rules['BLOCK_REQUESTS'][$rule_field][] = $rule_value; break; case 'ALLOW_REQUESTS': $tmp = explode("|", $row); $rule_field = trim($tmp[0]); $rule_value = trim($tmp[1]); $rules['ALLOW_REQUESTS'][$rule_field][] = $rule_value; break; case 'ALLOW_ALL_IP': case 'BLOCK_ALL_IP': case 'ALERT_IP': case 'BLOCK_RULES_IP': $rules[$section][] = str_replace(array(".*.*.*", ".*.*", ".*"), ".", trim($row)); break; case 'RULES': case 'BLOCK_RULES': $tmp = explode("|", $row); $rule_kind = strtolower(trim($tmp[0])); $rule_type = strtolower(trim($tmp[1])); $rule_object = str_replace($this->dirsep.$this->dirsep, $this->dirsep, $this->scan_path.trim($tmp[2])); switch ($rule_kind) { case 'allow': $rules[$section]['ALLOW'][] = array('type' => $rule_type, 'object' => $rule_object); break; case 'block': $rules[$section]['BLOCK'][] = array('type' => $rule_type, 'object' => $rule_object); break; } break; case 'EXCLUDE_REMOTE_ALERT_FILES': $rules['EXCLUDE_REMOTE_ALERT_FILES'][] = trim($row); break; default: continue; break; } } $this->rules = $rules; return true; } public function Session_Apply_Rules($file) { $result_final = ''; if (count($this->rules['RULES']['BLOCK'])) { foreach ($this->rules['RULES']['BLOCK'] as $rule_info) { $type = $rule_info['type']; $pattern = $rule_info['object']; if ($this->float_file_folder === true) $pattern = dirname($file).$this->dirsep.$pattern; switch ($type) { case 'any': $pattern .= '*'; default: case 'file': $result = fnmatch($pattern, $file); break; case 'folder': $pattern .= '*'; $result = fnmatch($pattern, $file, FNM_PATHNAME); break; } if ($result === true) $result_final = 'block'; } } if (count($this->rules['RULES']['ALLOW'])) { foreach ($this->rules['RULES']['ALLOW'] as $rule_info) { $type = $rule_info['type']; $pattern = $rule_info['object']; if ($this->float_file_folder === true) $pattern = dirname($file).$this->dirsep.$pattern; switch ($type) { case 'any': $pattern .= '*'; default: case 'file': $result = fnmatch($pattern, $file); break; case 'folder': $pattern .= '*'; $result = fnmatch($pattern, $file, FNM_PATHNAME); break; } if ($result === true) $result_final = 'allow'; } } return $result_final; } public function Session_Check_Requests($requests) { $result_final = 'allow'; if (count($requests) == 0) return $result_final; $requests_flat = self::FlatRequestArray($requests); //foreach ($requests_flat as $req_field => $req_value) foreach ($requests_flat as $requests_flat_array) { $req_field = $requests_flat_array['f']; $req_value = $requests_flat_array['v']; if (isset($this->rules['BLOCK_REQUESTS'][$req_field])) { foreach ($this->rules['BLOCK_REQUESTS'][$req_field] as $rule_values) { if ($rule_values == '*') { $result_final = 'block'; $this->this_session_reason_to_block = $req_field.":*"; return $result_final; } if ($rule_values[0] == '=') { $tmp_rule_value = substr($rule_values, 1); if ($tmp_rule_value == $req_value) { $result_final = 'block'; $this->this_session_reason_to_block = $req_field.":".$rule_values; return $result_final; } } else { if (stripos($req_value, $rule_values) !== false) { $result_final = 'block'; $this->this_session_reason_to_block = $req_field.":".$rule_values; return $result_final; } if (stripos(base64_decode($req_value), $rule_values) !== false) { $result_final = 'block'; $this->this_session_reason_to_block = $req_field.":".$rule_values; return $result_final; } } } } if (isset($this->rules['BLOCK_REQUESTS']['*'])) { foreach ($this->rules['BLOCK_REQUESTS']['*'] as $rule_values) { if ($rule_values == '*') { $result_final = 'block'; $this->this_session_reason_to_block = "*:*"; return $result_final; } if ($rule_values[0] == '=') { $tmp_rule_value = substr($rule_values, 1); if ($tmp_rule_value == $req_value) { $result_final = 'block'; $this->this_session_reason_to_block = $req_field.":".$rule_values; return $result_final; } } else { if (stripos($req_value, $rule_values) !== false) { $result_final = 'block'; $this->this_session_reason_to_block = "*:".$rule_values; return $result_final; } if (stripos(base64_decode($req_value), $rule_values) !== false) { $result_final = 'block'; $this->this_session_reason_to_block = "*:".$rule_values; return $result_final; } } } } } return $result_final; } public function FlatRequestArray($requests) { $a = array(); foreach ($requests as $f => $v) { if (is_array($v)) { $a[] = array('f' => $f, 'v' => ''); foreach ($v as $f2 => $v2) { if (is_array($v2)) { $a[] = array('f' => $f2, 'v' => ''); foreach ($v2 as $f3 =>$v3) { if (is_array($v3)) $v3 = json_encode($v3); $a[] = array('f' => $f3, 'v' => $v3); } } else $a[] = array('f' => $f2, 'v' => $v2); } } else { $a[] = array('f' => $f, 'v' => $v); } } return $a; } public function Check_URLs($REQUEST_URI) { $result_final = 'allow'; if (count($this->rules['BLOCK_URLS']) == 0) return $result_final; foreach ($this->rules['BLOCK_URLS'] as $rule_url) { $rule_url_clean = str_replace("*", "", $rule_url); if ($rule_url[0] == '*') { if ($rule_url[strlen($rule_url)-1] == '*') // e.g. *xxx* { if (stripos($REQUEST_URI, $rule_url_clean) !== false) { $result_final = 'block'; $this->this_session_reason_to_block = $rule_url; return $result_final; } } else { $tmp_pos = stripos($REQUEST_URI, $rule_url_clean); if ($tmp_pos !== false && $tmp_pos + strlen($rule_url_clean) == strlen($REQUEST_URI)) // e.g. *xxx { $result_final = 'block'; $this->this_session_reason_to_block = $rule_url; return $result_final; } } } else { if ($rule_url[strlen($rule_url)-1] == '*') // e.g. /xxx* { $tmp_pos = stripos($REQUEST_URI, $rule_url_clean); if ( $tmp_pos !== false && $tmp_pos == 0) { $result_final = 'block'; $this->this_session_reason_to_block = $rule_url; return $result_final; } } else { if ($rule_url == $REQUEST_URI) // e.g. /xxx/ { $result_final = 'block'; $this->this_session_reason_to_block = $rule_url; return $result_final; } } } } return $result_final; } public function Block_This_Session($reason = '', $save_request = false) { $siteguarding_log_line = date("Y-m-d H:i:s")."|". $_SERVER["REMOTE_ADDR"]."|". "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"."|". $_SERVER['SCRIPT_FILENAME']."|". $reason."\n"; $this->SaveLogs($siteguarding_log_line); die('Access is not allowed. Please contact website webmaster or SiteGuarding.com support. Blocked IP address is '.$_SERVER["REMOTE_ADDR"]); } public function CheckIP_in_Allowed($ip) { if (count($this->rules['ALLOW_ALL_IP']) == 0) return false; foreach ($this->rules['ALLOW_ALL_IP'] as $rule_ip) { if (strpos($ip, $rule_ip) === 0) { // match return true; } } } public function CheckIP_in_Blocked($ip) { if (count($this->rules['BLOCK_ALL_IP']) == 0) return false; foreach ($this->rules['BLOCK_ALL_IP'] as $rule_ip) { if (strpos($ip, $rule_ip) === 0) { // match return true; } } } public function SaveLogs($txt) { $a = $txt."\n"; $log_file = dirname(__FILE__).$this->dirsep.'logs'.$this->dirsep.'_blocked.log'; if (!file_exists($log_file)) { $log_file_new = true; $log_filesize = 0; } else { $log_file_new = false; $log_filesize = filesize($log_file); } if ($log_file_new && $log_filesize > $this->log_file_max_size * 1024 * 1024) { // Trunc log file $log_file_tmp = $log_file.".tmp"; $fp1 = fopen($log_file, "rb"); $fp2 = fopen($log_file_tmp, "wb"); $pos = $log_filesize * 0.7; // 30% fseek($fp1, $pos); while (!feof($fp1)) { $buffer = fread($fp1, 4096 * 32); fwrite($fp2, $buffer); } fclose($fp1); fwrite($fp2, $a); fclose($fp2); rename($log_file_tmp, $log_file); } else { $fp = fopen($log_file, 'a'); fwrite($fp, $a); fclose($fp); } } public function LogRequest($short = false) { $_REQUEST_tmp = $_REQUEST; if (!$this->save_empty_requests && count($_REQUEST_tmp) == 0) return; $log_file = basename($_SERVER['SCRIPT_FILENAME'])."_".md5($_SERVER['SCRIPT_FILENAME']).".log.php"; $log_file = dirname(__FILE__).$this->dirsep.'logs'.$this->dirsep.$log_file; if (!file_exists($log_file)) { $log_file_new = true; $log_filesize = 0; } else { $log_file_new = false; $log_filesize = filesize($log_file); } if (file_exists($log_file) && filesize($log_file) > $this->log_file_max_size * 1024 * 1024) { // Trunc log file $log_file_tmp = $log_file.".tmp"; $fp1 = fopen($log_file, "rb"); $fp2 = fopen($log_file_tmp, "wb"); fwrite($fp2, ''."\n".$_SERVER['SCRIPT_FILENAME']."\n\n"); $pos = $log_filesize * 0.7; // 30% fseek($fp1, $pos); while (!feof($fp1)) { $buffer = fread($fp1, 4096 * 32); fwrite($fp2, $buffer); } fclose($fp1); fclose($fp2); rename($log_file_tmp, $log_file); } $fp = fopen($log_file, "a"); $siteguarding_log_line = date("Y-m-d H:i:s")."|". $_SERVER["REMOTE_ADDR"]."|". "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"."|". $_SERVER['SCRIPT_FILENAME']."\n"; if ($log_file_new) fwrite($fp, ''."\n".$_SERVER['SCRIPT_FILENAME']."\n\n"); fwrite($fp, $siteguarding_log_line); fclose($fp); } } ?>wp-website-antivirus-protection/wp-website-antivirus-protection/classes/page_antivirus.php000064400000005344151435171370026537 0ustar00